diff --git a/404.html b/404.html index bff358f38c2..06afd3cfdce 100644 --- a/404.html +++ b/404.html @@ -8,14 +8,14 @@ - +
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.
- + \ No newline at end of file diff --git a/ChangeLog/20190830.html b/ChangeLog/20190830.html index cdf227225a2..ebf3042a535 100644 --- a/ChangeLog/20190830.html +++ b/ChangeLog/20190830.html @@ -8,17 +8,17 @@ - + - - - + + +
Skip to content

QMK Breaking Change - 2019 Aug 30

Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.

This document marks the inaugural Breaking Change merge. A list of changes follows.

Core code formatting with clang-format

  • All core files (drivers/, quantum/, tests/, and tmk_core/) have been formatted with clang-format
  • A travis process to reformat PRs on merge has been instituted
  • You can use the new CLI command qmk cformat to format before submitting your PR if you wish.

LUFA USB descriptor cleanup

  • Some code cleanups related to the USB HID descriptors on AVR keyboards, to make them easier to read and understand
  • More information: see https://github.com/qmk/qmk_firmware/pull/4871
  • No behaviour changes anticipated and no keymaps modified

Migrating ACTION_LAYER_MOMENTARY() entries in fn_actions to MO() keycodes

  • fn_actions is deprecated, and its functionality has been superseded by direct keycodes and process_record_user()
  • The end result of removing this obsolete feature should result in a decent reduction in firmware size and code complexity
  • All keymaps affected are recommended to switch away from fn_actions in favour of the custom keycode and macro features

Update Atreus to current code conventions

  • Duplicate include guards have bypassed the expected header processing behavior
  • All keymaps affected are recommended to remove duplication of <keyboard>/config.h to <keyboard>/keymaps/<user>/config.h and only provide overrides at the keymap level

Backport changes to keymap language files from ZSA fork

  • Fixes an issue in the keymap_br_abnt2.h file that includes the wrong source (keymap_common.h instead of keymap.h)
  • Updates the keymap_swedish.h file to be specific to swedish, and not just "nordic" in general.
  • Any keymaps using this will need to remove NO_* and replace it with SE_*.

Update repo to use LUFA as a git submodule

  • /lib/LUFA removed from the repo
  • LUFA set as a submodule, pointing to qmk/lufa
  • This should allow more flexibility with LUFA, and allow us to keep the sub-module up to date, a lot more easily. It was ~2 years out of date with no easy path to fix that. This prevents that from being an issue in the future

Migrating ACTION_BACKLIGHT_*() entries in fn_actions to BL_ keycodes

  • fn_actions is deprecated, and its functionality has been superseded by direct keycodes and process_record_user()
  • All keymaps using these actions have had the relevant KC_FN* keys replaced with the equivalent BL_* keys
  • If you currently use KC_FN* you will need to replace fn_actions with the custom keycode and macro features

Remove KC_DELT alias in favor of KC_DEL

  • KC_DELT was a redundant, undocumented alias for KC_DELETE
  • It has been removed and all its uses replaced with the more common KC_DEL alias
  • Around 90 keymaps (mostly for ErgoDox boards) have been modified as a result
- + \ No newline at end of file diff --git a/ChangeLog/20200229.html b/ChangeLog/20200229.html index f4abb64e18f..f35bce61620 100644 --- a/ChangeLog/20200229.html +++ b/ChangeLog/20200229.html @@ -8,17 +8,17 @@ - + - - - + + +
Skip to content

QMK Breaking Change - 2020 Feb 29 Changelog

Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.

Update ChibiOS/ChibiOS-Contrib/uGFX submodules

  • General Notes
    • A make git-submodule may be required after pulling the latest QMK firmware code to update affected submodules to the upgraded revisions
    • Enabling link-time-optimization (LINK_TIME_OPTIMIZATION_ENABLE = yes) should work on a lot more boards
  • Upgrade to ChibiOS ver19.1.3
    • This will allow QMK to update to upstream ChibiOS a lot easier -- the old version was ~2 years out of date. Automated update scripts have been made available to simplify future upgrades.
    • Includes improved MCU support and bugfixes
    • ChibiOS revision is now included in Command output
    • Timers should now be more accurate
  • Upgrade to newer ChibiOS-Contrib
    • Also includes improved MCU support and bugfixes
    • ChibiOS-Contrib revision is now included in Command output
  • Upgrade to newer uGFX
    • Required in order to support updated ChibiOS

Fix ChibiOS timer overflow for 16-bit SysTick devices

  • On 16-bit SysTick devices, the timer subsystem in QMK was incorrectly dealing with overflow.
    • When running at a 100000 SysTick frequency (possible on 16-bit devices, but uncommon), this overflow would occur after 0.65 seconds.
  • Timers are now correctly handling this overflow case and timing should now be correct on ChibiOS/ARM.

Update LUFA submodule

  • Updates the LUFA submodule to include updates from upstream (abcminiuser/lufa)
  • Includes some cleanup for QMK DFU generation

Encoder flip

  • Flips the encoder direction so that clockwise == true is for actually turning the knob clockwise
  • Adds ENCODER_DIRECTION_FLIP define, so that reversing the expected dirction is simple for users.
  • Cleans up documentation page for encoders

Adding support for BACKLIGHT_ON_STATE for hardware PWM backlight

  • Previously, the define only affected software PWM, and hardware PWM always assumed an N-channel MOSFET.
  • The hardware PWM backlight setup has been updated to respect this option.
  • The default "on" state has been changed to 1 - this impacts all keyboards using software PWM backlight that do not define it explicitly. If your keyboard's backlight is acting strange, it may have a P-channel MOSFET, and will need to have #define BACKLIGHT_ON_STATE 0 added to the keyboard-level config.h. Please see the PR for more detailed information.

Migrating ACTION_LAYER_TAP_KEY() entries in fn_actions to LT() keycodes

  • fn_actions is deprecated, and its functionality has been superseded by direct keycodes and process_record_user()
  • The end result of removing this obsolete feature should result in a decent reduction in firmware size and code complexity
  • All keymaps affected are recommended to switch away from fn_actions in favour of the custom keycode and macro features

Moving backlight keycode handling to process_keycode/

  • This refactors the backlight keycode logic to be clearer and more modular.
  • All backlight-related keycodes are now actioned in a single file.
  • The ACTION_BACKLIGHT_* macros have also been deleted. If you are still using these in a fn_actions[] block, please switch to using the backlight keycodes or functions directly.

Refactor Planck keymaps to use Layout Macros

  • Refactor Planck keymaps to use layout macros instead of raw matrix assignments
  • Makes keymaps revision-agnostic
  • Should reduce noise and errors in Travis CI logs

GON NerD codebase refactor

  • Splits the codebase for GON NerD 60 and NerdD TKL PCBs into two separate directories.
  • If your keymap is for a NerD 60 PCB, your make command is now make gon/nerd60:<keymap>.
  • If your keymap is for a NerD TKL PCB, your make command is now make gon/nerdtkl:<keymap>.
- + \ No newline at end of file diff --git a/ChangeLog/20200530.html b/ChangeLog/20200530.html index e7473c7d7c5..f1cf0cc39b1 100644 --- a/ChangeLog/20200530.html +++ b/ChangeLog/20200530.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -35,7 +35,7 @@ return OLED_ROTATION_180; // flips the display 180 degrees if offhand return rotation; }

Split HHKB to ANSI and JP layouts and Add VIA support for each

#8582

Migrating existing HHKB keymaps

Keyboard Moves

Keyboards by Keyboardio, Spaceman, and hsgw move to vendor folders, while PCBs designed by blindassassin111 are renamed.

Old NameNew Name
2_milkspaceman/2_milk
at101_blackheartat101_bh
ergoinudm9records/ergoinu
model01keyboardio/model01
omnikey_blackheartomnikey_bh
pancakespaceman/pancake
plaiddm9records/plaid
tartandm9records/tartan
z150_blackheartz150_bh

If you own one of these PCBs, please use the new names to compile your firmware moving forward.

Keycode Migration PRs

#8954, #8957, #8958, #8959, #8968, #8977, and #8979

Authored by fauxpark, these pull requests remove references to deprecated TMK macros that have been superseded by native QMK keycodes.

Old fn_actions actionNew QMK keycode
ACTION_DEFAULT_LAYER_SET(layer)DF(layer)
ACTION_LAYER_MODS(layer, mod)LM(layer, mod)
ACTION_LAYER_ONESHOT(mod)OSL(mod)
ACTION_LAYER_TOGGLE(layer)TG(layer)
ACTION_MODS_ONESHOT(mod)OSM(mod)
ACTION_MODS_TAP_KEY(mod, kc)MT(mod, kc)
ACTION_MODS_KEY(mod, kc)
e.g. ACTION_MODS_KEY(MOD_LCTL, KC_0)
MOD(kc)
e.g. LCTL(KC_0)
- + \ No newline at end of file diff --git a/ChangeLog/20200829.html b/ChangeLog/20200829.html index 86bbbbe7eb6..82ac276cfa8 100644 --- a/ChangeLog/20200829.html +++ b/ChangeLog/20200829.html @@ -8,18 +8,18 @@ - + - - - + + +
Skip to content

QMK Breaking Change - 2020 Aug 29 Changelog

Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.

Changes Requiring User Action

Relocated Keyboards

The Key Company project consolidation (#9547)

relocating boards by flehrad to flehrad/ folder (#9635)

Keyboards released by The Key Company and keyboards designed by flehrad have moved to vendor folders. If you own any of the keyboards listed below, please use the new names to compile your firmware moving forward.

Old NameNew Name
candybar/leftytkc/candybar/lefty
candybar/rightytkc/candybar/righty
m0llytkc/m0lly
tkc1800tkc/tkc1800
bigswitchflehrad/bigswitch
handwired/downbubbleflehrad/downbubble
handwired/numbreroflehrad/numbrero
snagpadflehrad/snagpad
handwired/tradestationflehrad/tradestation

Updated Keyboard Codebases

Keebio RGB wiring update (#7754)

This pull request changes the configuration for Keebio split boards to use the same RGB strip wiring for each half, which provides the following improvements:

  • Easier wiring due to one fewer wire needed (the wire between left DOut to extra data pin) and the fact that wiring is the same for both halves.
  • RGB LEDs can be controlled by each half now instead of just master half.
  • Extra data line is freed up to allow for I2C usage instead of serial.

If you have customized the value of RGBLED_SPLIT for your keymap, you will need to undefine it using #undef RGBLED_SPLIT before defining it to your customized value.

This change affects:

  • BFO-9000
  • Fourier
  • Iris rev2
  • Levinson, revs. 1 and 2
  • Nyquist, revs. 1 and 2
  • Quefrency rev1
  • Viterbi, revs. 1 and 2

Changes to Core Functionality

  • Bigger Combo index (#9318)

Allows the Combo feature to support more than 256 combos.

Any fork that uses process_combo_event needs to update the function's first argument to uint16_t:

  • Old function: void process_combo_event(uint8_t combo_index, bool pressed)
  • New function: void process_combo_event(uint16_t combo_index, bool pressed)

Core Changes

Fixes

  • Mousekeys: scrolling acceleration is no longer coupled to mouse movement acceleration (#9174)
  • Keymap Extras: correctly assign Question Mark in Czech layout (#9987)

Additions and Enhancements

  • allow for WS2812 PWM to work on DMAMUX-capable devices (#9471)
    • Newer STM32 MCUs have a DMAMUX peripheral, which allows mapping of DMAs to different DMA streams, rather than hard-defining the target streams in silicon.
    • Affects STM32L4+ devices, as well as the soon-to-be-supported-by-QMK STM32G4/H7 families.
    • Tested on F303/Proton C (ChibiOS v19, non-DMAMUX), G474 (ChibiOS v20, with DMAMUX).
  • dual-bank STM32 bootloader support (#8778 and #9738)
    • Adds support for STM32 dual-bank flash bootloaders, by toggling a GPIO during early init in order to charge an RC circuit attached to BOOT0.
    • The main rationale behind this is that dual-bank STM32 devices unconditionally execute user-mode code, regardless of whether or not the user-mode code jumps to the bootloader. If either flash bank is valid (and BOOT0 is low), then the built-in bootloader will skip any sort of DFU.
    • This PR allows for the initialisation sequencing to charge the RC circuit based on the example circuit posted on Discord, effectively pulling BOOT0 high before issuing the system reset. As the RC circuit takes a while to discharge, the system reset executes the ROM bootloader which subsequently sees BOOT0 high, and starts executing the DFU routines.
    • Tested with STM32L082 (with current QMK+current ChibiOS), and STM32G474 (against ChibiOS 20.x).
  • update Space Cadet and Tap Dance features to use Custom Tapping Term when appropriate (#6259)
    • For the Tap Dance feature, this completely removes the need for the ACTION_TAP_DANCE_FN_ADVANCED_TIME dance.
  • HID Joystick Interface (#4226 and #9949)
    • This implements a joystick feature, including a joystick_task function called from TMK, specific keycodes for joystick buttons and a USB HID interface.
    • Tested on V-USB backend and Proton C; compiles but untested on LUFA.
    • In order to test, you have to add JOYSTICK_ENABLE = yes to your rules.mk and
      c
      #define JOYSTICK_BUTTON_COUNT 8
       #define JOYSTICK_AXES_COUNT 2
      in your config.h.
  • Christmas RGB Underglow animation now fades between green and red (#7648)
    • RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL has been greatly decreased; please check your animation if you have customized this value.
  • layer state now initializes on startup (#8318)
    • This should produce more consistent behavior between the two functions and layer masks.
  • added support for HSV->RGB conversion without using CIE curve (#9856)
  • added NOEEPROM functions for RGB Matrix (#9487)
    • Added eeprom_helpers for toggle, mode, sethsv, speed, similar to rgblight versions.
    • Added set_speed function.
    • Added helper functions, similar to those in rgblight, in order to add NOEEPROM versions of toggle, step, hue, sat, val, and speed.
    • Minor: spelling correction for EEPROM in a debug message.
  • flashing firmware using st-flash utility from STLink Tools is now supported (#9964)
  • add ability to dump all makefile variables for the specified target (#8256)
    • Adds a new subtarget to builds, dump_vars, which allows for printing out all the variables that make knows about, after all substitutions occur.
    • Example: make handwired/onekey/proton_c:default:dump_vars
  • add ability to change the Auto Shift timeout in real time (#8441)
  • added a timer implementation for backlight on ChibiOS (#8291)
  • added a third endpoint to V-USB keyboards (#9020)
  • added a method to read the OLED display buffer from user space (#8777)
  • K-Type refactor (#9864)
    • The K-Type has been refactored to use QMK's native matrix scanning routine, and now has partial support for the RGB Matrix feature.
  • Joysticks can now be used without defining analog pins (#10169)

Clean-ups and Optimizations

  • iWRAP protocol removed (#9284)
  • work begun for consolidation of ChibiOS platform files (#8327 and #9315)
    • Start of the consolidation work to move the ChibiOS board definitions as well as the default set of configuration files for existing board definitions used by keyboards.
      • Uses /platforms/chibios as previously discussed on discord.
      • Consolidates the Proton C configs into the generic F303 definitions.
      • Allows for defining a default set of chconf.h, halconf.h, and mcuconf.h files within the platform definition, which is able to be overridden by the keyboard directly, though include path ordering.
      • Adds template chconf.h, halconf.h, mcuconf.h, and board.h that can be dropped into a keyboard directory, in order to override rather than replace the entire contents of the respective files.
      • Removed Proton C QMK board definitions, falling back to ChibiOS board definitions with QMK overrides.
  • Various tidy-ups for USB descriptor code (#9005)
    • Renamed keyboard_led_stats in lufa.c and ChibiOS usb_main.c to keyboard_led_state, as well as vusb_keyboard_leds, for consistency
    • Formatted CDC and MIDI descriptors better
    • Removed ENDPOINT_CONFIG macro, it seems pointless and removes the need for endpoint address defines in the middle of the endpoint numbering enum
    • Fixed (possibly?) V-USB GET_REPORT request handling. Not sure about this one, but the existing code appears to always return an empty report - now send_keyboard sets this variable to the current report, matching what the LUFA code does.
  • converted CONSUMER2BLUEFRUIT() and CONSUMER2RN42() macros to static inline functions (#9055)
  • Additional cleanups for V-USB code (#9310)
    • Removing the UART stuff entirely, now that we have Console support. Also fixing up various other things; switching some debug() calls to dprintf(), moved raw_hid_report out of the way so that we can implement the shared endpoint stuff.
  • removed inclusion of adafruit_ble.h from ssd1306.c (#9355)
  • outputselect.c is no longer compiled if Bluetooth is disabled (#9356)
  • analogRead() deprecated in favor of analogReadPin() (#9023)
  • forcibly disable NKRO on V-USB controllers (#9054)
  • removed warning if running backlight on STM32F072 (#10040)
  • removed unused CORTEX_VTOR_INIT rules.mk option (#10053)
  • improved handling for enabling Link Time Optimization (#9832)
  • streamline rules for supporting Kiibohd bootloader (#10129)
  • Define STM32_DMA_REQUIRED when using DMA-based WS2812 driver on STM32 (#10127)
  • fix DMA stream ID calculation in ws2812_pwm (#10008)
  • remove support for Adafruit EZ Key Bluetooth controller (#10103)

QMK Infrastructure and Internals

  • Attempt to fix CI for non-master branches. (#9308)
    • Actually fetch the branch we're attempting to compare against.
  • Run qmk cformat on develop branch (#9501)
  • minor refactor of Bluetooth API (#9905)
- + \ No newline at end of file diff --git a/ChangeLog/20201128.html b/ChangeLog/20201128.html index 29e64e9d5b0..0698a5815d7 100644 --- a/ChangeLog/20201128.html +++ b/ChangeLog/20201128.html @@ -8,17 +8,17 @@ - + - - - + + +
Skip to content

QMK Breaking Change - 2020 Nov 28 Changelog

Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.

Changes Requiring User Action

Relocated Keyboards

Reduce Helix keyboard build variation (#8669)

The build commands for the Helix keyboard are:

make <helix_build_name>:<keymap_name>

For <helix_build_name>, specify the one in the rightmost column of the table below, such as helix, helix/pico.

before Oct 17 2019Oct 17 2019Mar 10 2020Nov 28 2020
helix/rev1helix/rev1helix/rev1helix/rev1
helix/picohelix/picohelix/picohelix/pico
helix/pico/backhelix/pico/backhelix/pico/back
helix/pico/underhelix/pico/underhelix/pico/under
helix/pico/sc--
helix/pico/sc/backhelix/pico/sc
helix/pico/sc/under--
helix/rev2 (=helix)helix/rev2 (=helix)helix/rev2 (=helix)--
helix/rev2/backhelix/rev2/back--
helix/rev2/back/oledhelix/rev2/back/oled( --> helix/rev2/back)
helix/rev2/oledhelix/rev2/oledhelix/rev2 (=helix)
helix/rev2/oled/backhelix/rev2/oled/backhelix/rev2/back
helix/rev2/oled/underhelix/rev2/oled/underhelix/rev2/under
helix/rev2/sc--
helix/rev2/sc/back--
helix/rev2/sc/oled--
helix/rev2/sc/oledbackhelix/rev2/sc
helix/rev2/sc/oledunder--
helix/rev2/sc/under--
helix/rev2/underhelix/rev2/under--
helix/rev2/under/oledhelix/rev2/under/oled( --> helix/rev2/under)

Update the Speedo firmware for v3.0 (#10657)

The Speedo keyboard has moved to cozykeys/speedo/v2 as the designer prepares to release the Speedo v3.0.

Previous NameNew Name
speedocozykeys/speedo/v2
--cozykeys/speedo/v3 new

Maartenwut/Maarten name change to evyd13/Evy (#10274)

Maartenwut has rebranded as @evyd13, and all released Maartenwut boards have moved.

Previous NameNew Name
maartenwut/atom47/rev2evyd13/atom47/rev2
maartenwut/atom47/rev3evyd13/atom47/rev3
maartenwut/eon40evyd13/eon40
maartenwut/eon65evyd13/eon65
maartenwut/eon75evyd13/eon75
maartenwut/eon87evyd13/eon87
maartenwut/eon95evyd13/eon95
maartenwut/gh80_1800evyd13/gh80_1800
maartenwut/gh80_3700evyd13/gh80_3700
maartenwut/minitomicevyd13/minitomic
maartenwut/mx5160evyd13/mx5160
maartenwut/nt660evyd13/nt660
maartenwut/omrontklevyd13/omrontkl
maartenwut/plain60evyd13/plain60
maartenwut/pockettypeevyd13/pockettype
maartenwut/quackfireevyd13/quackfire
maartenwut/solheim68evyd13/solheim68
maartenwut/ta65evyd13/ta65
maartenwut/wasdatevyd13/wasdat
maartenwut/wasdat_codeevyd13/wasdat_code
maartenwut/wonderlandevyd13/wonderland

Xelus Valor and Dawn60 Refactors (#10512, #10584)

The Valor and Dawn60 keyboards by Xelus22 both now require their revisions to be specified when compiling.

Previous NameNew Name
xelus/dawn60xelus/dawn60/rev1
xelus/valorxelus/valor/rev1

Updated Keyboard Codebases

AEboards EXT65 Refactor (#10820)

The EXT65 codebase has been reworked so keymaps can be used with either revision.

Core Changes

Fixes

  • Reconnect the USB if users wake up a computer from the keyboard to restore the USB state (#10088)
  • Fix cursor position bug in oled_write_raw functions (#10800)

Additions and Enhancements

  • Allow MATRIX_ROWS to be greater than 32 (#10183)
  • Add support for soft serial to ATmega32U2 (#10204)
  • Allow direct control of MIDI velocity value (#9940)
  • Joystick 16-bit support (#10439)
  • Allow encoder resolutions to be set per encoder (#10259)
  • Share button state from mousekey to pointing_device (#10179)
  • Add advanced/efficient RGB Matrix Indicators (#8564)
  • OLED display update interval support (#10388)
  • Per-Key Retro Tapping (#10622)
  • Allow backlight duty cycle limit (#10260)
  • Add step sequencer feature (#9703)
  • Added add_oneshot_mods & del_oneshot_mods (#10549)
  • Add AT90USB support for serial.c (#10706)
  • Auto shift: support repeats and early registration (#9826)

Clean-ups and Optimizations

  • Haptic and solenoid cleanup (#9700)
  • XD75 cleanup (#10524)
  • Minor change to behavior allowing display updates to continue between task ticks (#10750)
  • Change some GPIO manipulations in matrix.c to be atomic (#10491)
  • combine repeated lines of code for ATmega32U2, ATmega16U2, ATmega328 and ATmega328P (#10837)
  • Remove references to HD44780 (#10735)

QMK Infrastructure and Internals

  • Add ability to build a subset of all keyboards based on platform. (#10420)
  • Initialise EEPROM drivers at startup, instead of upon first execution (#10438)
  • Make bootloader_jump weak for ChibiOS (#10417)
  • Support for STM32 GPIOF,G,H,I,J,K (#10206)
  • Add milc as a dependency and remove the installed milc (#10563)
  • ChibiOS upgrade: early init conversions (#10214)
  • ChibiOS upgrade: configuration file migrator (#9952)
  • Add definition based on currently-selected serial driver. (#10716)
  • Allow for modification of output RGB values when using rgblight/rgb_matrix. (#10638)
  • Allow keyboards/keymaps to execute code at each main loop iteration (#10530)
  • qmk cformat (#10767)
  • Add a Make variable to easily enable DEBUG_MATRIX_SCAN_RATE on the command line (#10824)
  • update Chibios OS USB for the OTG driver (#8893)
  • Fixup version.h writing when using SKIP_VERSION=yes (#10972, #10974)
  • Rename ledmatrix.h to match .c file (#7949)
  • Split RGB_MATRIX_ENABLE into _ENABLE and _DRIVER (#10231)
  • Split LED_MATRIX_ENABLE into _ENABLE and _DRIVER (#10840)
- + \ No newline at end of file diff --git a/ChangeLog/20210227.html b/ChangeLog/20210227.html index efa40770f36..b7337a57a59 100644 --- a/ChangeLog/20210227.html +++ b/ChangeLog/20210227.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -52,7 +52,7 @@ Size: 13 x 4 Processor: atmega32u4 Bootloader: caterina

Detailed Change List

Changes Requiring User Action

Fixes

Additions and Enhancements

Clean-ups and Optimizations

QMK Infrastructure and Internals

ChibiOS Update and Config Migration

- + \ No newline at end of file diff --git a/ChangeLog/20210529.html b/ChangeLog/20210529.html index 258c93916c9..8dc8b51fa1a 100644 --- a/ChangeLog/20210529.html +++ b/ChangeLog/20210529.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -57,7 +57,7 @@ // If you return true, this will allow the keyboard level code to run, as well. //Returning false will override the keyboard level code. Depending on how the keyboard level function is set up. }

Core Changes

Fixes

Additions and Enhancements

Clean-ups and Optimizations

QMK Infrastructure and Internals

- + \ No newline at end of file diff --git a/ChangeLog/20210828.html b/ChangeLog/20210828.html index 6fcacebe39f..62e9d6d8807 100644 --- a/ChangeLog/20210828.html +++ b/ChangeLog/20210828.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -106,7 +106,7 @@ usb.pid: 0x2330 usb.vid: 0xC1ED width: 10

New configuration keys

We've added dozens of new keys to info.json so that you can configure more than ever without writing a single line of code. A quick overview of the new items you can configure:

Codebase restructure and cleanup

QMK was originally based on TMK, and has grown in size considerably since its first inception. To keep moving things forward, restructure of some of the core areas of the code is needed to support new concepts and new hardware, and progress is happening along those lines:


Full changelist

Core:

CLI:

Submodule updates:

Keyboards:

Keyboard fixes:

Others:

Bugs:

- + \ No newline at end of file diff --git a/ChangeLog/20211127.html b/ChangeLog/20211127.html index 9925ea536b1..d12519fa694 100644 --- a/ChangeLog/20211127.html +++ b/ChangeLog/20211127.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -56,7 +56,7 @@ // default keyboard drawing code return false; }

Bootmagic Full Removal (#15002)

As noted during previous breaking changes cycles, QMK decided to deprecate the full Bootmagic feature and leave Bootmagic Lite as the only remaining option.

This removal is now complete!

This pull request changes the behavior of BOOTMAGIC_ENABLE such that specifying lite or full results in an error, allowing only yes or no, with yes mirroring historical lite functionality.

All use of the lite keyword within the repository has been migrated to yes -- any new submissions using lite will now fail to build and should be updated accordingly.

Bootmagic Full Deprecation Schedule: Complete!

This is the historical timeline for the behavior of BOOTMAGIC_ENABLE:

Remove QWIIC_DRIVERS (#14174)

Due to minimal QWIIC adoption and other options for similar functionality, the QWIIC drivers were removed from QMK. Existing OLED usages have been migrated across to the normal QMK OLED driver instead.

Notable core changes

New MCU Support

QMK firmware picked up support for a handful of new MCU families, potentially making it a bit easier to source components.

QMK firmware is now no longer limited to AVR and ARM - it also picked up support for our first RISC-V chip, the GD32VF103.

EEPROM Changes

There were a few EEPROM-related changes that landed during this breaking changes cycle, most prominently the long-awaited ability for the Drop boards to gain persistent storage. Any users of the Drop CTRL or Drop ALT should update QMK Toolbox as well -- coupled with a QMK firmware update settings should now be saved.

Compilation Database

A clang-compatible compilation database generator has been added as an option in order to help development environments such as Visual Studio Code.

Running qmk generate-compilation-database -kb <yourkb> -km <yourkeymap> from within the QMK firmware directory will generate a compile_commands.json file -- using a compatible IDE will likely see this and correctly start detecting the correct locations for source files as well as type and function information that are relevant to your build.

Do note that switching keyboards will require re-generation of this file.

Codebase restructure and cleanup

QMK continues on its restructuring journey, in order to make it easier to integrate newer features and add support for new hardware. This quarter's batch of changes include:


Full changelist

Core:

CLI:

Submodule updates:

Keyboards:

Keyboard fixes:

Others:

Bugs:

- + \ No newline at end of file diff --git a/ChangeLog/20220226.html b/ChangeLog/20220226.html index 34b3a371668..2f6e2afa2e7 100644 --- a/ChangeLog/20220226.html +++ b/ChangeLog/20220226.html @@ -8,17 +8,17 @@ - + - - - + + +
Skip to content

QMK Breaking Changes - 2022 February 26 Changelog

Notable Features

Default USB Polling rate now 1kHz (#15352)

The default USB Polling rate has been aligned across supported platforms to now be 1ms/1kHz.

Something something Lets go gamers!

Split support for pointing devices (#15304)

Pointing devices can now be shared across a split keyboard with support for a single pointing device or a pointing device on each side.

See the Pointing Device documentation for further configuration options.

Changes Requiring User Action

Legacy macro and action_function system removed (#16025)

The long time deprecated MACRO() and action_get_macro methods have been removed. Where possible, existing usages have been migrated over to core Macros.

Create a build error if no bootloader is specified (#16181)

Bootloader configuration is no longer assumed. Keyboards must now set either:

  • BOOTLOADER within rules.mk
  • bootloader within info.json

Rename AdafruitBLE to BluefruitLE (#16127)

In preparation of future bluetooth work, the AdafruitBLE integration has been renamed to allow potential for any other Adafruit BLE products.

Updated Keyboard Codebases

The following keyboards have had their source moved within QMK:

Old Keyboard NameNew Keyboard Name
6ballmaple_computing/6ball
7skbsalicylic_acid3/7skb
7splussalicylic_acid3/7splus
acr60mechkeys/acr60
adalyntominabox1/adalyn
ajisai74salicylic_acid3/ajisai74
aleth4225keys/aleth42
alicia_cookibnuda/alicia_cook
allison_numpadprototypist/allison_numpad
allisonprototypist/allison
alu84mechkeys/alu84
angel17kakunpc/angel17
angel64/alphakakunpc/angel64/alpha
angel64/rev1kakunpc/angel64/rev1
arch_36obosob/arch_36
bakeneko60kkatano/bakeneko60
bakeneko65/rev2kkatano/bakeneko65/rev2
bakeneko65/rev3kkatano/bakeneko65/rev3
bakeneko80kkatano/bakeneko80
barleycornyiancardesigns/barleycorn
bat43/rev1dailycraft/bat43/rev1
bat43/rev2dailycraft/bat43/rev2
bigseries/1keywoodkeys/bigseries/1key
bigseries/2keywoodkeys/bigseries/2key
bigseries/3keywoodkeys/bigseries/3key
bigseries/4keywoodkeys/bigseries/4key
bkfdrhigsby/bkf
business_card/alphakakunpc/business_card/alpha
business_card/betakakunpc/business_card/beta
butterstickgboards/butterstick
c39maple_computing/c39
cassette4225keys/cassette42
chidorikagizaraya/chidori
chiliydkb/chili
chimera_ergoglenpickle/chimera_ergo
chimera_lsglenpickle/chimera_ls
chimera_orthoglenpickle/chimera_ortho
chimera_ortho_plusglenpickle/chimera_ortho_plus
choco60recompile_keys/choco60
choc_tarokakunpc/choc_taro
christmas_treemaple_computing/christmas_tree
claw44/rev1dailycraft/claw44/rev1
cocoa40recompile_keys/cocoa40
comet46satt/comet46
cu24capsunlocked/cu24
cu75capsunlocked/cu75
cu80capsunlocked/cu80/v1
delilahrainkeebs/delilah
diverge3unikeyboard/diverge3
divergetm2unikeyboard/divergetm2
dozen0yynmt/dozen0
dubba175drhigsby/dubba175
eggmanqpockets/eggman
ergo42biacco42/ergo42
ergoarrowssalicylic_acid3/ergoarrows
ergodash/miniomkbd/ergodash/mini
ergodash/rev1omkbd/ergodash/rev1
ergodox_infinityinput_club/ergodox_infinity
ergotacogboards/ergotaco
espectromechkeys/espectro
felixunikeyboard/felix
four_bangerbpiphany/four_banger
freyrhnahkb/freyr
geminate60weirdo/geminate60
georgigboards/georgi
gergogboards/gergo
getta25salicylic_acid3/getta25
ginghamyiancardesigns/gingham
gurindamibnuda/gurindam
halberdkagizaraya/halberd
hecomi/alphatakashiski/hecomi/alpha
hid_liberbpiphany/hid_liber
id67/default_rgbidobao/id67/default_rgb
id67/rgbidobao/id67/rgb
id80idobao/id80/v1
id87idobao/id87/v1
idoboidobao/id75/v1
infinity60input_club/infinity60
ivy/rev1maple_computing/ivy/rev1
jisplit89salicylic_acid3/jisplit89
jnaomaple_computing/jnao
just60ydkb/just60
kagamidgetyynmt/kagamidget
kelowna/rgb64weirdo/kelowna/rgb64
kprepublic/bm65hsrgb_isokprepublic/bm65hsrgb_iso/rev1
kprepublic/bm68hsrgbkprepublic/bm68hsrgb/rev1
k_typeinput_club/k_type
latin17rgblatincompass/latin17rgb
latin47blelatincompass/latin47ble
latin60rgblatincompass/latin60rgb
latin64blelatincompass/latin64ble
latin6rgblatincompass/latin6rgb
latinpadblelatincompass/latinpadble
latinpadlatincompass/latinpad
launchpad/rev1maple_computing/launchpad/rev1
lck75lyso1/lck75
le_chiffretominabox1/le_chiffre
lefishelyso1/lefishe
lets_split_eh/ehmaple_computing/lets_split_eh/eh
ls_60weirdo/ls_60
m3n3vanmatthewdias/m3n3van
mechmini/v1mechkeys/mechmini/v1
mechmini/v2mechkeys/mechmini/v2
meirawoodkeys/meira
meishi2biacco42/meishi2
meishibiacco42/meishi
minidox/rev1maple_computing/minidox/rev1
minimmatthewdias/minim
miorecompile_keys/mio
model_vmatthewdias/model_v
montexidobao/montex/v1
nafudasalicylic_acid3/nafuda
naiping/np64weirdo/naiping/np64
naiping/nphhkbweirdo/naiping/nphhkb
naiping/npminilaweirdo/naiping/npminila
naked48salicylic_acid3/naked48
naked60salicylic_acid3/naked60
naked64salicylic_acid3/naked64
namecard2x4takashiski/namecard2x4
nebula12spaceholdings/nebula12
nebula68bspaceholdings/nebula68b
nebula68spaceholdings/nebula68
niu_minikbdfans/niu_mini
nk1novelkeys/nk1
nk65novelkeys/nk65
nk87novelkeys/nk87
nknl7ensalicylic_acid3/nknl7en
nknl7jpsalicylic_acid3/nknl7jp
nomu30recompile_keys/nomu30
novelpadnovelkeys/novelpad
ogurecdrhigsby/ogurec
otaku_split/rev0takashiski/otaku_split/rev0
otaku_split/rev1takashiski/otaku_split/rev1
owl8dailycraft/owl8
packratdrhigsby/packrat
pistachio_mprate/pistachio_mp
pistachio_prorate/pistachio_pro
pistachiorate/pistachio
plexus75checkerboards/plexus75
pursuit40checkerboards/pursuit40
qaztominabox1/qaz
quarkcheckerboards/quark
rabbit_capture_plankakunpc/rabbit_capture_plan
rainkeebrainkeebs/rainkeeb
reviung33reviung/reviung33
reviung34reviung/reviung34
reviung39reviung/reviung39
reviung41reviung/reviung41
reviung53reviung/reviung53
reviung5reviung/reviung5
reviung61reviung/reviung61
runner3680/3x6omkbd/runner3680/3x6
runner3680/3x7omkbd/runner3680/3x7
runner3680/3x8omkbd/runner3680/3x8
runner3680/4x6omkbd/runner3680/4x6
runner3680/4x7omkbd/runner3680/4x7
runner3680/4x8omkbd/runner3680/4x8
runner3680/5x6_5x8omkbd/runner3680/5x6_5x8
runner3680/5x6omkbd/runner3680/5x6
runner3680/5x7omkbd/runner3680/5x7
runner3680/5x8omkbd/runner3680/5x8
scarletbandanawoodkeys/scarletbandana
scythekagizaraya/scythe
seigaihayiancardesigns/seigaiha
setta21salicylic_acid3/setta21
space_space/rev1qpockets/space_space/rev1
space_space/rev2qpockets/space_space/rev2
spiderisland/winry25tcwinry/winry25tc
splitreus62nacly/splitreus62
squiggle/rev1ibnuda/squiggle/rev1
standasideedi/standaside
steal_this_keyboardobosob/steal_this_keyboard
stellahnahkb/stella
suihankey/alphakakunpc/suihankey/alpha
suihankey/rev1kakunpc/suihankey/rev1
suihankey/splitkakunpc/suihankey/split
thedogkeyboardkakunpc/thedogkeyboard
the_rulermaple_computing/the_ruler
tiger910weirdo/tiger910
treadstone32marksard/treadstone32
treadstone48/rev1marksard/treadstone48/rev1
treadstone48/rev2marksard/treadstone48/rev2
txuumatthewdias/txuu
ua62nacly/ua62
underscore33/rev1tominabox1/underscore33/rev1
underscore33/rev2tominabox1/underscore33/rev2
vn66hnahkb/vn66
wallabykkatano/wallaby
wantenqpockets/wanten
whitefoxinput_club/whitefox
wings42/rev1dailycraft/wings42/rev1
wings42/rev1_extkeysdailycraft/wings42/rev1_extkeys
wings42/rev2dailycraft/wings42/rev2
yasuirainkeebs/yasui
yd60mqymdk/yd60mq
yd68ydkb/yd68
ymd75ymdk/ymd75
ymd96ymdk/ymd96
ymdk_np21ymdk/np21
yureikkatano/yurei
zinc25keys/zinc
zinc/rev125keys/zinc/rev1
zinc/reva25keys/zinc/reva

Notable core changes

New MCU Support

Building on previous cycles, QMK firmware picked up support for a couple extra MCU variants:

  • STM32L432
  • STM32L442

New Drivers

QMK now has core-supplied support for the following device peripherals:

LED

  • IS31FL3742A
  • IS31FL3743A
  • IS31FL3745
  • IS31FL3746A

GPIO

  • SN74x138
  • mcp23018

Full changelist

Core:

  • Initial pass at data driven new-keyboard subcommand (#12795)
  • Don't send keyboard reports that propagate no changes to the host (#14065)
  • Custom matrix lite support for split keyboards (#14674)
  • Add sym_defer_pr debouncer type (#14948)
  • Add RGB matrix & LED Matrix support for IS31FL3742A, IS31FL3743A, IS31FL3745, IS31FL3746A (#14989)
  • New combo configuration options (#15083)
  • IS31FL3733 driver for LED Matrix (#15088)
  • Add open-drain GPIO support. (#15282)
  • Make (un)register code functions weak (#15285)
  • Split support for pointing devices. (#15304)
  • Added cancel_key_lock function (#15321)
  • Remove matrix_is_modified() and debounce_is_active() (#15349)
  • Change default USB Polling rate to 1kHz (#15352)
  • Implement MAGIC_TOGGLE_CONTROL_CAPSLOCK (#15368)
  • Tidy up existing i2c_master implementations (#15376)
  • Generalize Unicode defines (#15409)
  • Added external spi flash driver. (#15419)
  • Remove Deprecated USB Polling comment from vusb.c (#15420)
  • Expand rotational range for PMW3360 Optical Sensor (#15431)
  • ChibiOS SVN mirror script update (#15435)
  • Refactor bootloader_jump() implementations (#15450)
  • added missing audio_off_user() callback (#15457)
  • Migrate serial_uart usages to UART driver (#15479)
  • Migrate RN42 to UART driver and refactor (#15492)
  • pwm3360 driver cleanup and diff reduction to adns9800 (#15559)
  • Advanced deferred_exec for core-side code. (#15579)
  • Adjust tap_code16 to account for TAP_HOLD_CAPS_DELAY (#15635)
  • Slight tidy up of keyboard task loop (#15725)
  • Unify the key up/down behaviour of RGB keycodes (#15730)
  • Add PMW3389 optical sensor Support (Updated) (#15740)
  • ChibiOS: add support for HID Programmable Buttons (#15787)
  • ChibiOS: shorten USB disconnect state on boot to 50ms (#15805)
  • Add init function to clear previous matrix effect (#15815)
  • Optimize initialization of PMW3360 Sensor (#15821)
  • Add Pixel Flow RGB matrix effect (#15829)
  • PMW3389 Revert Firmware load during Initilization (#15859)
  • Combo TAP_CODE_DELAY and clear_weak_mods (#15866)
  • Relocate matrix_scan_quantum tasks (#15882)
  • Adjust mouse key defaults (#15883)
  • RGB Matrix: Reload from EEPROM (#15923)
  • Enable a default task throttle for split pointing. (#15925)
  • Move mcp23018 driver to core (#15944)
  • Relocate matrix_init_quantum content (#15953)
  • Align location of some host led logic (#15954)
  • Rename some Quantum keycodes (#15968)
  • Migrate more makefile utilities to builddefs sub-directory (#16002)
  • Various Makefile optimisations (#16015)
  • Add support for STM32L432, STM32L442. (#16016)
  • EEPROM refactor: remove eeprom_teensy.c by default, use transient instead (#16020)
  • Deprecate Split Transaction status field (#16023)
  • Rip out old macro and action_function system (#16025)
  • Add a script that simplifies running commands under docker. (#16028)
  • Add support for Q-series on the ckled2001 LED driver (#16051)
  • Remove unused suspend_idle (#16063)
  • Initial migration of suspend callbacks (#16067)
  • Add layout change callbacks to VIA (#16087)
  • Rename AdafruitBLE to BluefruitLE (#16127)
  • Update outputselect to use platform connected state API (#16185)
  • Remove default pointing device driver. (#16190)
  • Add SN74x138 demultiplexer driver (#16217)
  • Standardise error output. (#16220)
  • Followup to #16220, more test error output. (#16221)
  • Misc size regression script improvements. (#16268)
  • Align existing pca9555 driver to better match mcp23018 API (#16277)
  • Size checks print out target firmware file instead (#16290)

CLI:

  • develop changelog generator: use the PR title instead (#15537)
  • develop changelog generator: skip code formatting in listing (#16215)

Keyboards:

  • Durgod: Increase scan rate by using wait_us timer (#14091)
  • Add another GMMK Pro ANSI Keymap with custom RGB. (#14243)
  • Parse USB device version BCD (#14580)
  • Add vitoni keymap for GMMK Pro (ISO) (#15006)
  • Move bm65hsrgb_iso and bm68hsrgb to rev1/ to prepare for updates to the boards (#15132)
  • Convert ergoinu to SPLIT_KEYBOARD (#15305)
  • Convert not_so_minidox to SPLIT_KEYBOARD (#15306)
  • Added new handwired keyboard Wakizashi 40 (#15336)
  • Convert ai03/orbit to SPLIT_KEYBOARD (#15340)
  • Remove manual enable of LTO within user keymaps (#15378)
  • Move to organization folder (#15481)
  • Convert some more boards to Matrix Lite (#15489)
  • Organize Reviung boards into a directory (#15636)
  • move winry25tc to winry/ (#15637)
  • Rename ymdk_np21 to np21 + move to ymdk vendor folder (#15641)
  • move ymd96 to ymdk vendor folder (#15643)
  • move ymd75 to ymdk vendor folder (#15645)
  • move yd60mq to ymdk vendor folder (#15647)
  • rename idobo to idobao/id75, move to vendor folder (#15661)
  • move ID67 to IDOBAO vendor folder (#15662)
  • move ID80 to IDOBAO vendor folder (#15665)
  • move ID87 to IDOBAO vendor folder (#15667)
  • move montex to IDOBAO vendor folder (#15668)
  • move @yangdigi 's keyboards to a YDKB folder (#15681)
  • move @kkatano 's keyboards to kkatano user folder (#15684)
  • Sol 3 Keyboard from RGBKB (#15687)
  • move cu24, cu75, cu80/v1 into capsunlocked folder (#15758)
  • move mechkeys keyboards into the mechkeys/ vendor folder (#15760)
  • move @lyso1 's boards into lyso1/ (#15767)
  • move prototypist boards into vendor folder (#15780)
  • move @yiancar 's boards into yiancardesigns/ (#15781)
  • move novelkeys keyboards to vendor folder (#15783)
  • move @weirdo-f 's keyboards into weirdo/ (#15785)
  • move @marksard 's boards to marksard/ (#15786)
  • move input club keyboards into vendor folder (#15788)
  • move @monksoffunk 's boards into 25keys/ (#15789)
  • move @Salicylic-acid3 's keyboards to salicylic-acid3/ (#15791)
  • move @rainkeebs 's keyboards to rainkeebs/ (#15797)
  • move standaside into edi/ (#15798)
  • move @obosob 's boards into obosob/ (#15799)
  • move @nacly 's boards to nacly/ (#15801)
  • move @kakunpc 's keebs into kakunpc/ (#15814)
  • move @qpocket 's keyboards to qpocket/ (#15827)
  • BDN9 keymap (#15924)
  • move @matthewdias 's keebs into matthewdias/ (#15991)
  • move id80 and id75 to v1 to accommodate for id75 v2 and id80 v3 (#15992)
  • Remove action_function() from LFKeyboards boards (#15993)
  • move @latincompass (aka @18438880 , @haierwangwei2005)'s boards to /latincompass (#16039)
  • move g heavy industry boards into /gboards (#16040)
  • move @drhigsby 's boards into /drhigsby (#16041)
  • More keyboard rules.mk cleanups (#16044)
  • move @That-Canadian 's boards into /maple_computing (#16050)
  • move @takai 's keyboards into /recompile_keys (#16053)
  • move @satt99 's comet46 to satt/ (#16059)
  • move @ka2hiro 's boards into /kagizaraya (#16070)
  • move @GlenPickle 's chimera* boards into a folder (#16072)
  • move @yynmt 's boards into /yynmt (#16075)
  • move @Biacco42 's keebs into /biacco42 (#16080)
  • move unikeyboard boards to /unikeyboard (#16081)
  • move four_banger to bpiphany (#16082)
  • move @takashiski 's keebs into /takashiski (#16089)
  • move hid_liber to /bpiphany (#16091)
  • move spaceholdings boards into /spaceholdings (#16096)
  • move @7-rate 's keebs to /rate (#16099)
  • move @npspears 's boards into /checkerboards (#16100)
  • move @vuhopkep 's keebs into /hnahkb (#16102)
  • move @ibnuda 's keebs into /ibnuda (#16108)
  • move @tominabox1 's keebs into /tominabox1 (#16109)
  • move niu_mini to /kbdfans (#16112)
  • move woodkeys.click keyboards to /woodkeys (#16113)
  • move @omkbd 's boards to /omkbd (#16116)
  • Overhaul Tractyl Manuform (#16134)
  • Reduce firmware size for dztech/dz60rgb_wkl/v2_1:via (#16254)

Keyboard fixes:

  • Fix build failure for UT47 (#15483)
  • Update grs_70ec to use newer custom matrix (#15609)
  • fix compiler issue with Tractyl Manuform 4x6 (#15646)
  • Fix CI. (#15828)
  • Yet another bad DEFAULT_FOLDER fix. (#15904)
  • Fix build failures for mschwingen/modelm (#15987)
  • rocketboard_16: Fix mismatched LUT sizes (#15997)
  • Fix erroneous SRC for Clueboard 66 hotswap (#16007)
  • Fix handwired/ms_sculpt_mobile default keymap (#16032)
  • Re-org Hillside folders as new model prep. Fix default keymap. (#16128)
  • Fix up default folder locations. Again. (#16135)
  • Sol3 rgb fix (#16157)
  • Add missing BOOTLOADER for a handful of boards (#16225)
  • Remove half implemented micronucleus bootloader support (#16252)
  • Fixup bootloaders. (#16256)
  • Fix idobao/id80/v3 compilation errors (#16280)
  • Remove parent-relative paths from keyboards. (#16282)
  • Bodge for helix build failures (#16376)

Others:

  • Add a clarification to an error message (#15207)
  • Clang-format tweaks (#15906)
  • Add example implementations for compatible MCUs list (#15935)
  • Add version.h to gitignore (#16222)
  • Update keyboard mapping for all moved boards this cycle (#16312)
  • Align docs to new-keyboard behaviour (#16357)
  • Align new-keyboard with recent schema updates (#16378)

Bugs:

  • Fixes potential wpm sampling overflow, along with code comment fixes (#15277)
  • Add missing define for unicode common (#15416)
  • Fix for SPI write timing in PMW3360 driver (#15519)
  • Documentation Typo fix (#15538)
  • fix a typo (#15557)
  • Fix avr serial compile (#15589)
  • More AVR GPIO compilation fixes. (#15592)
  • Fix bug and code regression for Split Common (#15603)
  • Include missing string.h include in split (#15606)
  • Fixes for bootloader refactor build failures (#15638)
  • Update pmw3360 driver after reading the datasheet top to bottom. Fix some outdated refs. (#15682)
  • Fix split pointing for analog joystick (#15691)
  • Fix broken bootloader builds in develop. (#15880)
  • Fix optical sensor firmware upload (#15919)
  • Pass in the keyrecord_t of the dual-role/tapping key when calling per-key tap hold functions (#15938)
  • fixed typo in orange HSV colors decalartion (#15976)
  • Fix hack for chibiOS reset name (#15984)
  • Fix right side ws2812 leds having two indices (#15985)
  • Workaround in Makefile for recursive rule matching (#15988)
  • Fix BACKLIGHT_CAPS_LOCK warning (#15999)
  • Fix compilation issues for led indicators (#16001)
  • ChibiOS timer fixes (#16017)
  • Fix bootloader_jump for certain CTRL boards (#16026)
  • Fix up issue with PROGMEM and hand_swap_config (#16027)
  • Don't make EEPROM size assumptions with dynamic keymaps. (#16054)
  • fix missed .noci in reviung move (#16107)
  • Fix issues with Python Tests (#16162)
  • Fixup multibuild filegen (#16166)
  • Remove old .gitignore entry. Add more macOS junk exclusions. (#16167)
  • Fixup builds so that teensy EEPROM knows which MCU it's targeting. (#16168)
  • Create a build error if no bootloader is specified. (#16181)
  • Ensure version.h is recreated each build. (#16188)
  • Add custom to list of valid bootloader types in info.json (#16228)
  • Fix layer_state restoration at end of dynamic macro feature #16208 (#16230)
  • Minor additions #12795 (#16276)
  • Various fixes for matrix _RIGHT handling (#16292)
  • Fix slashes in build_full_test.mk (#16300)
  • ps2/avr: use the correct file name (#16316)
  • Fix compilation of ChibiOS UART driver (#16348)
  • Various fixes for new-keyboard (#16358)
  • Allow NO_PIN within data driven configuration (#16359)
- + \ No newline at end of file diff --git a/ChangeLog/20220528.html b/ChangeLog/20220528.html index 340ab572ea2..1e4604595b7 100644 --- a/ChangeLog/20220528.html +++ b/ChangeLog/20220528.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -20,7 +20,7 @@
Skip to content

QMK Breaking Changes - 2022 May 28 Changelog

Notable Features

Caps Word (#16588)

This is a new feature that allows for capslock-like functionality that turns itself off at the end of the word.

For instance, if you wish to type "QMK" without holding shift the entire time, you can either tap both left and right shift, or double-tap shift, to turn on Caps Word -- then type qmk (lowercase) without holding shift. Once you hit any key other than a--z, 0--9, -, _, delete, or backspace, this will go back to normal typing!

There are other activation mechanisms as well as configurable options like timeout and the like -- see the Caps Word documentation for more information.

Quantum Painter (#10174)

QMK has had support for small OLED displays for some time now, but hasn't really gained too much ability to draw to panels other than the SSD1306 or SH1106 panels.

Quantum Painter is a new drawing subsystem available to suitable ARM and RISC-V boards that is capable of drawing to large panel RGB LCDs and RGB OLEDs. It also allows for a lot more flexibility with a larger set of drawing APIs -- lines, rectangles, circles, ellipses, text, images, and even animations.

The QMK CLI has new commands added to be able to generate images and fonts for Quantum Painter to digest -- it's even capable of converting animated gifs for display on screen.

See the Quantum Painter documentation for more information on how to set up the displays as well as how to convert images and fonts.

WARNING

Quantum Painter is not supported on AVR due to complexity and size constraints. Boards based on AVR such as ProMicro or Elite-C builds will not be able to leverage Quantum Painter.

Encoder Mapping (#13286)

One of the long-standing complaints with Encoders is that there has been no easy way to configure them in user keymaps. #13286 added support for Encoder Mapping, which allows users to define encoder functionality in a similar way to their normal keymap.

WARNING

This is not yet supported by QMK Configurator. It is also unlikely to ever be supported by VIA.

Changes Requiring User Action

RESET => QK_BOOT (#17037)

QMK is always in the process of picking up support for new hardware platforms. One of the side-effects for future integrations has shown that QMK's usage of RESET as a keycode is causing naming collisions. As a result, #17037 changed usages of RESET to the new keycode QK_BOOT in the majority of default-like keymaps. At this stage the old keycode is still usable but will likely be removed in the next breaking changes cycle. Users with keymaps containing RESET should also move to QK_BOOT.

Sendstring keycode overhaul (#16941)

Some keycodes used with SEND_STRING and its relatives have been deprecated and may have their old keycode usages removed at a later date. The list of deprecated keycodes should be consulted to determine if you're using one of the older names (the first identifier after #define) -- you should swap to the newer variant (the second identifier on the same line).

Pillow Installation (#17133)

The merge of Quantum Painter added some new dependencies in the QMK CLI, most notably Pillow, which requires some installation in order for the CLI to function. If you've got an existing installation, you'll need to run some commands in order to get things working:

On Windows, if using QMK MSYS or msys2, you'll need to run the following command:

sh
pacman --needed --noconfirm --disable-download-timeout -S mingw-w64-x86_64-python-pillow
 python3 -m pip install --upgrade qmk

On macOS:

sh
brew update
 brew upgrade qmk/qmk/qmk

On Linux or WSL:

sh
python3 -m pip install --user --upgrade qmk

Updated Keyboard Codebases

The following keyboards have had their source moved within QMK:

Old Keyboard NameNew Keyboard Name
absinthekeyhive/absinthe
amj40amjkeyboard/amj40
amj60amjkeyboard/amj60
amj96amjkeyboard/amj96
amjpadamjkeyboard/amjpad
at101_bhviktus/at101_bh
ergosauruskeyhive/ergosaurus
gmmk/pro/ansigmmk/pro/rev1/ansi
gmmk/pro/isogmmk/pro/rev1/iso
honeycombkeyhive/honeycomb
lattice60keyhive/lattice60
melody96ymdk/melody96
mt40mt/mt40
mt64rgbmt/mt64rgb
mt84mt/mt84
mt980mt/mt980
navi10keyhive/navi10
omnikey_bhviktus/omnikey_bh
opuskeyhive/opus
smallicekeyhive/smallice
southpolekeyhive/southpole
unokeyhive/uno
ut472keyhive/ut472
wheatfield/blocked65mt/blocked65
wheatfield/split75mt/split75
z150_bhviktus/z150_bh

Full changelist

Core:

  • Quantum Painter (#10174)
  • Add support for encoder mapping. (#13286)
  • Add support for multiple switchs/solenoids to Haptic Feedback engine (#15657)
  • Add compile/make macro to core (#15959)
  • Add Reboot keycode to core (#15990)
  • Add support for multiple sensors to pmw3360 (#15996)
  • Asymmetric encoders, encoder tests. (#16068)
  • Add hacky via support for RGB Matrix (#16086)
  • Allow usage of AVRs minimal printf library (#16266)
  • Squeeze AVR some more with -mrelax and -mcall-prologues (#16269)
  • Heatmap incorrect matrix effect workaround (#16315)
  • Add SN74x154 driver and convert AL1 custom matrix (#16331)
  • Add customizable snake and knight animation increments (#16337)
  • Chibios USB protocol: allow overriding RAW Capacity (#16339)
  • HD44780 driver rework (#16370)
  • Update wb32-dfu (#16438)
  • Remove send_unicode_hex_string() (#16518)
  • Add :flash target for UF2 bootloaders (#16525)
  • Move has_mouse_report_changed function to report.c (#16543)
  • Move Doxygen docs to subdirectory (#16561)
  • Add Caps Word feature to core (#16588)
  • Add non blackpill F4x1 config files (#16600)
  • Force platform pin defs to be included (#16611)
  • Refactor CTPC logic to allow future converters (#16621)
  • Use a mutex guard for split shared memory (#16647)
  • Rename TICK to TICK_EVENT (#16649)
  • Add GET_TAPPING_TERM macro to reduce duplicate code (#16681)
  • add the ability to change the pwm frequency for the IS31FL3737B (#16718)
  • Joystick feature updates (#16732)
  • Add emulated eeprom support for STM32F303xE (#16737)
  • Refactor writePin to work with statements (#16738)
  • Add mechanism to limit available converters (#16783)
  • Implement XAP 'secure' core requirements (#16843)
  • rgblight: Add functions to stop blinking one or all but one layer (#16859)
  • Expose API for hardware unique ID (#16869)
  • Added support for Wb32fq95 (#16871)
  • Provide better config defaults for bluepill boards (#16909)
  • Joystick: Simplify report descriptor and clean up error messages (#16926)
  • Rename keymap_extras headers for consistency (#16939)
  • Sendstring keycode overhaul (#16941)
  • Move disable_jtag to platforms (#16960)
  • Remove ARM pgm_read_word workaround in rgblight (#16961)
  • Warn about LTO with arm_atsam, not ChibiOS. (#17106)

CLI:

  • Rework generate-api CLI command to use .build directory (#16441)
  • Change data driven "str" type to represent a quoted string literal (#16516)
  • Bump the 'jsonschema' version (#16635)
  • Add frameworking for development board presets (#16637)
  • Extend 'qmk info' to handle keymap level overrides (#16702)
  • Data driven g_led_config (#16728)
  • Allow new-keyboard to use development_board presets (#16785)
  • Also format *.hpp files. (#16997)

Submodule updates:

  • ChibiOS 21.11.1 update. (#16251)
  • Update ChibiOS-Contrib (#16915)

Keyboards:

  • chore: Add personal GMMK Pro keymap (#15320)
  • move melody96 to ymdk vendor folder (#15680)
  • move amj keyboards into amjkeyboard vendor folder (#15733)
  • move z150_bh at101_bh omnikey_bh to viktus/ (#16004)
  • MS Sculpt Mobile refactor (#16038)
  • move keyhive exclusive boards into /keyhive (#16084)
  • move 麦田 boards into /mt (#16095)
  • Convert Wasdat Code custom matrix to SN74x138 driver (#16257)
  • Move GMMK Pro to allow for multiple revisions (#16423)
  • Updated pin mapping and readme. (#16505)
  • Map data driven DESCRIPTION as string literal (#16523)
  • remove unecessary layers (#16559)
  • Helix/rev2 move to split common (#16723)
  • Remove some layout exceptions (#16957)
  • Refactor legacy quantum keycodes in default-ish keymaps (#17037)
  • Refactor legacy quantum keycodes in default-ish keymaps (#17150)

Keyboard fixes:

  • gboards/gergoplex: move COMBO_ENABLE to keymap level (#16667)
  • usb-usb converter: community layout support (#16773)
  • Fix build of keyhive/uno. (#16891)
  • Fix uno (#16892)
  • converter/usb_usb: remove surplus commas (#17024)
  • Various fixes for g_led_config lint warnings (#17104)

Others:

  • Add warning for CTPC/CONVERT_TO_PROTON_C. (#16782)
  • Add bluepill/blackpill development board presets (#16806)
  • Recommend pillow as part of manual MSYS install (#17133)

Bugs:

  • Fix one-shot locked modifiers (#16114)
  • Fix missing definition for non-encoder case. (#16593)
  • Fixup builds. (#16596)
  • Missed some erroneous prints. (#16597)
  • Workaround for pin_def errors on KINETIS based builds (#16614)
  • Fix flipped logic bug with One Shot OS_ON / OS_OFF keys (#16617)
  • Redo workaround for pin_def errors on KINETIS (#16620)
  • Fix oneshot toggle logic (#16630)
  • Mousekeys fix (#16640)
  • Ignore transport defaults if SPLIT_KEYBOARD is unset (#16706)
  • Fixes #16705 : digital rain follows val (#16716)
  • Fix AVR backlight breathing: low brightness limit & exceeding breathing table max index (#16770)
  • Fixed usb read loops not reading until timeout (#16827)
  • [QP] Check BPP capabilities before loading the palette (#16863)
  • Fix #16859. (#16865)
  • Preinstall python dependencies before executing qmk. (#16874)
  • Fixup AVR builds. (#16875)
  • Fix kinetic mouse mode (#16951)
  • Enhancement and fixes of "Secure" feature (#16958)
  • Check for ongoing transfers on the OUT endpoint (#16974)
  • MSYS2 install: add some Python dependencies through Pacman (#17025)
  • Revert "Fix kinetic mouse mode (#16951)" (#17095)
  • Workaround for recent -Werror=array-bounds AVR issues (#17136)
  • Bug fix: Continue Caps Word when AltGr (right Alt) is held. (#17156)
- + \ No newline at end of file diff --git a/ChangeLog/20220827.html b/ChangeLog/20220827.html index b59ee5adba0..aa12dbd216b 100644 --- a/ChangeLog/20220827.html +++ b/ChangeLog/20220827.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -31,7 +31,7 @@ }, // ... layouts, etc. ... }

Deprecation Schedule

Notable core changes

Board converters (#17514, #17603, #17711, #17827, #17593, #17652, #17595)

Historically QMK had a CONVERT_TO_PROTON_C directive for rules.mk to allow people to replace an AVR-based Pro Micro with a QMK Proton C. Global parts shortages have prompted people to create their own pin-compatible boards -- QMK has made this conversion generic and now allows for drop-in replacements for a lot more boards. see the Converters Feature documentation for the full list of supported replacement boards -- in this breaking changes cycle we've gone from 1 to 7.

Add cli command to import keyboard|keymap|kbfirmware (#16668)

To help with importing keyboards and keymaps from other sources, @zvecr added #16668 which adds a new set of commands to the CLI to automatically import keyboards (qmk import-keyboard -h), keymaps (qmk import-keymap -h), and kbfirmware definitions (qmk import-kbfirmware -h) into QMK.

The now-EOL kbfirmware allowed people who aren't set up with QMK the ability to create keyboard firmwares without requiring a full installation of QMK. Unfortunately, it targets a 7-year-old version of QMK -- adding frustration for users who want the newest features, as well as for QMK maintainers who have to spend time explaining why QMK can't just accept a drive-by code drop from kbfirmware. With any luck, this new command helps both camps!

Generic wear-leveling for EEPROM emulation (#16996, #17376, #18102)

QMK has had the ability to write to internal MCU flash in order to emulate EEPROM for some time now, but it was only limited to a small number of MCUs. The base HAL used by QMK for a large number of ARM devices provides a "proper" embedded MCU flash driver, so @tzarc decoupled the wear-leveling algorithm from the old flash writing code, improved it, wrote some tests, and enabled its use for a much larger number of other devices... including RP2040's XIP flash, and external SPI NOR Flash.

See the EEPROM Driver documentation for more information.

Pointing Device Improvements (#16371, #17111, #17176, #17482, #17776, #17613)

Ever since Pointing Device Driver support and Split Pointing Device support were added by @drashna and @daskygit, there has been increased interest in the development of the pointing device subsystem and its associated code.

Both the PMW33xx and the Cirque Pinnacle implementations have seen a lot of improvement to their code, as has the mouse code in general. Features like circular/edge scrolling for the Cirque, and Kinetic movement for any sensor with "lift detection" (#17482). Additionally, for those that make fast motions with their pointing devices, support for much larger mouse movement reports has been added (#16371).

Other related changes:


Full changelist

Core:

CLI:

Submodule updates:

Keyboards:

Keyboard fixes:

Others:

Bugs:

- + \ No newline at end of file diff --git a/ChangeLog/20221126.html b/ChangeLog/20221126.html index 95fc5ce1109..b4b559a987c 100644 --- a/ChangeLog/20221126.html +++ b/ChangeLog/20221126.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -41,7 +41,7 @@ // keyboard LED code return true; }

The equivalent transformations should be done for LED Matrix boards.

Unicode mode refactoring

Unicode modes were renamed in order to prevent collision with equivalent keycodes. The available values for UNICODE_SELECTED_MODES changed -- see Feature: Unicode for the new list of values and how to configure them.

Notable core changes

This breaking changes cycle, a lot of the core changes are related to cleanup and refactoring -- commonly called "tech debt".

Keycodes refactoring

We aren't going to list each and every change -- they're far too numerous -- instead, we'll just list the related PRs in order to convey just how wide-reaching these changes were:

Board Converters

There was additional work in the space of board converters -- historically QMK allowed for "converting" a Pro Micro build to a QMK Proton-C build. The last few versions of QMK have added support for replacement boards much like the Proton-C, and this quarter was no exception:

See Feature: Converters for the full list of board conversions available.

Pointing and Digitizer device updates

Both pointing devices and digitizer got a host of updates this cycle. Inertia, automatic mouse layers, fixes for preventing sleep... you even get more buttons with digitizers!

Full changelist

Core:

CLI:

Submodule updates:

Keyboards:

Keyboard fixes:

Others:

Bugs:

- + \ No newline at end of file diff --git a/ChangeLog/20230226.html b/ChangeLog/20230226.html index 6da6690d63c..e1871829e41 100644 --- a/ChangeLog/20230226.html +++ b/ChangeLog/20230226.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -68,7 +68,7 @@ tap_code16(LGUI(KC_S)); } }

For more information please see the Leader Key documentation.

Updated Keyboard Codebases

The following keyboards have had their source moved within QMK:

Old Keyboard NameNew Keyboard Name
ramonimbao/aelithrmi_kb/aelith
ramonimbao/herringbone/prormi_kb/herringbone/pro
ramonimbao/herringbone/v1rmi_kb/herringbone/v1
ramonimbao/mona/v1_1rmi_kb/mona/v1_1
ramonimbao/mona/v1rmi_kb/mona/v1
ramonimbao/mona/v32armi_kb/mona/v32a
ramonimbao/squishy65rmi_kb/squishy65
ramonimbao/squishytklrmi_kb/squishytkl
ramonimbao/tkl_ffrmi_kb/tkl_ff
ramonimbao/tkl_ff/v1rmi_kb/tkl_ff/v1
ramonimbao/tkl_ff/v2rmi_kb/tkl_ff/v2
ramonimbao/wete/v1rmi_kb/wete/v1
ramonimbao/wete/v2rmi_kb/wete/v2
the_unistenothe_uni
xelus/xs60xelus/xs60/soldered

Notable core changes

As per last breaking changes cycle, there has been a lot of emphasis on behind-the-scenes changes, mainly around consolidation of core subsystems and constant values, as well as addressing tech debt. Whilst not outwardly visible, this cleanup and refactoring should start paying dividends as it simplifies future development and maintenance.

A handful of examples:

Full changelist

Core:

CLI:

Submodule updates:

Keyboards:

Keyboard fixes:

Others:

Bugs:

- + \ No newline at end of file diff --git a/ChangeLog/20230528.html b/ChangeLog/20230528.html index 5dd4c16b041..fc8e0fc3592 100644 --- a/ChangeLog/20230528.html +++ b/ChangeLog/20230528.html @@ -8,17 +8,17 @@ - + - - - + + +
Skip to content

QMK Breaking Changes - 2023 May 28 Changelog

Notable Changes

As per last breaking changes cycle, there has been a lot of emphasis on behind-the-scenes changes, mainly around migration of configurables into info.json files, cleanup of info.json files, additional layout definitions for keyboards, adding support for general community layouts to keyboards, as well as addressing technical debt.

Of note for keyboard designers:

  • Layout and matrix definitions in info.json are now mandatory for merge into QMK.
    • Layout macros in <yourkeyboard>.h are no longer accepted into QMK Firmware.
    • Existing keyboards have been meticulously converted by the QMK collaborators
    • Layouts missing from keyboard definitions have been added in the process
    • Keys within layouts should not specify "w":1 or "h":1 if the key size is 1 -- w/h should only be present for sizes other than 1
  • config_common.h has been removed and should not be present anywhere in your keyboard code.
  • RGB_DI_PIN will now cause an error during build:
    • For WS2812-like LEDs, this should be moved to info.json: "ws2812": { "pin": "xxx" }
    • For APA102 LEDs, this should be moved to info.json: "apa102": { "data_pin": "xxx" }
  • Other mandatory data-driven changes should be automatically flagged during build
  • Keymaps with encoder_map should now have the following change made:
    • encoder_map[][NUM_ENCODERS][2] => encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS]
    • Users assumed the 2 referred to the number of encoders, rather than the number of directions (which is always 2)

Repeat last key (#19700)

A new pair of keys has been added to QMK -- namely QK_REPEAT_KEY and QK_ALT_REPEAT_KEY (shortened: QK_REP/QK_AREP). These allow you to repeat the last key pressed, or in the case of the alternate key, press the "opposite" of the last key. For example, if you press KC_LEFT, pressing QK_REPEAT_KEY afterwards repeats KC_LEFT, but pressing QK_ALT_REPEAT_KEY instead sends KC_RIGHT.

The full list of default alternate keys is available on the Repeat Key documentation.

To enable these keys, in your keymap's rules.mk, add:

make
REPEAT_KEY_ENABLE = yes

...and add them to your keymap.

User callback for pre process record (#20584)

Two new boolean callback functions, pre_process_record_kb and pre_process_record_user, have been added. They are called at the beginning of process_record, right before process_combo.

Similar to existing *_kb and *_user callback functions, returning false will halt further processing of key events. The pre_process_record_user function will allow user space opportunity to handle or capture an input before it undergoes quantum processing. For example, while action tapping is still resolving the tap or hold output of a mod-tap key, pre_process_record_user can capture the next key record of an input event that follows. That key record can be used to influence the decision of the mod-tap key that is currently undergoing quantum processing.

Consolidate modelm (#14996

Several build targets for the IBM Model M were cluttered in different folders. The maintainers of several Model M replacement controller projects agreed to consolidate them under one common folder.

The list of all moved keyboard locations is listed below.

Changes Requiring User Action

IGNORE_MOD_TAP_INTERRUPT behaviour changes (#20211)

Following up from the last breaking changes cycle, IGNORE_MOD_TAP_INTERRUPT has been removed and if present in keymap code, will now fail to build. The previous functionality for IGNORE_MOD_TAP_INTERRUPT is now default, and should you wish to revert to the old behaviour, you can use HOLD_ON_OTHER_KEY_PRESS instead.

For more information, you are invited to read the section on HOLD_ON_OTHER_KEY_PRESS in the page on Tap-Hold configuration options.

Updated Keyboard Codebases

Old Keyboard NameNew Keyboard Name
ashpil/modelm_usbcibm/model_m/ashpil_usbc
binepad/bn009r2binepad/bn009/r2
converter/modelm101ibm/model_m/teensypp
converter/modelm101_teensy2ibm/model_m/teensy2
converter/modelm_sskibm/model_m_ssk/teensypp_ssk
durgod/dgk6x/hadesdurgod/dgk6x/hades_ansi
handwired/ibm122mibm/model_m_122/ibm122m
jacky_studio/piggy60/hotswapjacky_studio/piggy60/rev1/hotswap
jacky_studio/piggy60/solderjacky_studio/piggy60/rev1/solder
kamigakushijaykeeb/kamigakushi
massdrop/thekeydrop/thekey/v1
massdrop/thekey_v2drop/thekey/v2
mschwingen/modelmibm/model_m/mschwingen
tronguylabs/m122_3270ibm/model_m_122/m122_3270
tronguylabs/m122_3270/blackpillibm/model_m_122/m122_3270/blackpill
tronguylabs/m122_3270/bluepillibm/model_m_122/m122_3270/bluepill
tronguylabs/m122_3270/teensyibm/model_m_122/m122_3270/teensy
yugo_m/model_m_101ibm/model_m/yugo_m

Notable core changes

Encoder functionality fallback (#20320)

For keyboards who have not yet been migrated to encoder map, a default set of encoder functionality is now enabled, gracefully degrading functionality depending on which flags are enabled by the keyboard:

  • If EXTRAKEY_ENABLE is enabled by the keyboard, the encoder will be mapped to KC_VOLU/KC_VOLD
  • If MOUSEKEY_ENABLE is enabled by the keyboard, the encoder will be mapped to KC_MS_WH_UP/KC_MS_WH_DOWN
  • Otherwise, KC_PGDN/KC_PGUP will be used

Additionally, this ensures that builds on QMK Configurator produce some sort of usable encoder mapping.

OLED Driver Improvements (#20331)

The "classic" OLED driver picked up support for additional sizes of OLED displays, support for the SH1107 controller, and SPI-based OLED support.

Other configurable items are available and can be found on the OLED Driver page.

Full changelist

Core:

  • Refactor keyevent_t for 1ms timing resolution (#15847)
  • PS/2 PIO Driver for RP2040 (#17893)
  • Relocate various modifier defines (#18638)
  • Added PMW3320 driver (#19543)
  • Keymap introspection for combos. (#19670)
  • Add direction to dynamic_macro_record_start_user (#19689)
  • Add Repeat Key ("repeat last key") as a core feature. (#19700)
  • [Cleanup] Quantum Painter (#19825)
  • Improve robustness of AW20216 driver (#19849)
  • Make "detected_host_os()" available on the SLAVE side of the split keyboard (#19854)
  • Add RP2040 Community Edition alias for splitkb.com's Liatris controller (#19966)
  • Remove some use of keymap.h (#19980)
  • Merge upstream changes to uf2conv (#19993)
  • Remove keymap.h (#20004)
  • Remove some use of keymap.h (#20006)
  • Quantum Painter QoL enhancements -- auto-poweroff, auto-flush, buffer sizing (#20013)
  • Make Pointing Device Auto Layer more configurable (#20061)
  • Add last activity functions for pointing device (#20079)
  • Caps Word "Invert on shift" option: pressing Shift inverts the shift state. (#20092)
  • Remove bootloader logic from mcu_selection.mk (#20150)
  • Update qmk_cli container references (#20154)
  • Clean up APA102 config and add DD mapping (#20159)
  • Sync activity timestamps between sides. (#20192)
  • Update Doxygen comments for some headers (#20194)
  • Make IGNORE_MOD_TAP_INTERRUPT the default behaviour for mod-taps (#20211)
  • Add some helpers to tidy up XAP (#20235)
  • Tidy up duplication of MIN/MAX fallback implementations (#20236)
  • Optionally keep intermediate file listings in order to do comparisons between builds. (#20237)
  • Add basic profiler. (#20238)
  • WS2812 driver improvements (#20262)
  • typing_heatmap: Add macro to configure increase steps (#20300)
  • Migrate rgblight.pin and RGB_DI_PIN to ws2812.pin (#20303)
  • Delete config_common.h (#20312)
  • Allow EEPROM_DRIVER from info.json (#20313)
  • rp2040: *_PAL_MODE overridable for this platform too (#20314)
  • Add core/fallback encoder behaviour (#20320)
  • OLED Driver improvements (#20331)
  • [Chore] Remove stray mod tap interrupt defines and per key functions (#20347)
  • Add swap hands toggle functions (#20381)
  • Prevent Tri-Layer keys from stopping caps word (#20398)
  • quantum/action_util.c: Use uint8_t for oneshot_layer_data (#20423)
  • Encoder map direction define. (#20454)
  • Realign and size check EECONFIG structures (#20541)
  • Clean up ISSI drivers, Add IS31FL3736 support (#20572)
  • Add a user callback for pre process record (#20584)
  • Disable debug on QP's internal task (#20623)
  • Add required string header file (#20638)
  • Add Develop is31fl3736 multi drivers (#20642)
  • Support PS/2 mouse 9-bit output with MOUSE_EXTENDED_REPORT (#20734)
  • BIOI G60/Morgan65: use custom Bluetooth driver (#20897)
  • Move pre_process_record_kb() before process_combo() (#20969)
  • Implement UF2 device type id extension tag (#21029)

CLI:

  • Add force support to 'qmk git-submodule' (#19705)
  • JSON encoder: improve sorting of layout dict keys (#19974)
  • Increase verbosity of make command (#20172)
  • Append user variables to the end of make command (#20177)
  • Strip API specific output from qmk info (#20234)
  • qmk find: usability improvements (#20440)
  • qmk format-json: Expose full key path and respect sort_keys (#20836)
  • Update json2c to use dump_lines (#21013)

Submodule updates:

  • Update ChibiOS to latest stable 21.11.x (#20470)

Keyboards:

  • Allow a larger int for the idle timeout for urbanvanilla keymap (#19738)
  • Change aidansmithdotdev/fine40 to use Encoder Map (#19912)
  • Custom keycodes in JSON (#19925)
  • Remove "w":1 and "h":1 from info.json (#19961)
  • Move matrix config to info.json, part 1 (#19985)
  • Move matrix config to info.json, part 2 (#19987)
  • Move matrix config to info.json, part 3 (#19991)
  • Move matrix config to info.json, part 4 (#20001)
  • Move matrix config to info.json, part 5 (#20003)
  • Move matrix config to info.json, part 6 (#20019)
  • Move matrix config to info.json, part 7 (#20020)
  • Move matrix config to info.json, part 8 (#20030)
  • Remove empty rules.mk from keymaps (#20056)
  • Adjust offset for some layouts (#20075)
  • Remove useless "ifdef KEYBOARD_*" (#20078)
  • Remove pointless USE_I2C blocks in keyboard headers (#20084)
  • Add support for ISO version of Durgod Hades (#20110)
  • Consolidate Binepad BN009 R1 and R2 into common folder (#20113)
  • Remove more empty headers (#20155)
  • Remove trailing zeroes in info.json layouts (#20156)
  • Clean up usage of QMK_KEYBOARD_H (#20167)
  • Move Keychron Q0 and Q0 Plus data-driven configuration; keychron keymap rules.mk cleanup (#20168)
  • Move ortho & numpad layouts to data driven (#20183)
  • Remove RGB_DI_PIN ifdefs (#20218)
  • Add the KJ-Modify RS40 PCB keyboard (#20243)
  • Move WS2812_DRIVER to data driven (#20248)
  • [jacky_studio/piggy60] move AVR PCB under rev1 (#20253)
  • Move 75% and 96% layouts to data driven (#20289)
  • Move split layouts to data driven (#20290)
  • Move 66% and 68% layouts to data driven (#20293)
  • add jacky_studio/piggy60/rev2 (#20297)
  • Move 65% layouts to data driven (#20308)
  • Move TKL F13 and FRL layouts to data driven (#20310)
  • Remove some use of keymap.h (#20316)
  • Move fullsize layouts to data driven (#20317)
  • Add 36-key layout for Beekeeb Piantor (#20328)
  • Add sriwedari70 and move kamigakushi to new folder (#20334)
  • Move TKL layouts to data driven (#20337)
  • Move Alice and Ergodox layouts to data driven (#20340)
  • Move small macropad-ish layouts to data driven (#20341)
  • Move default layouts to data driven (#20349)
  • Move RGB_MATRIX_DRIVER to data driven (#20350)
  • Move split space/backspace layouts to data driven (#20356)
  • Move single LAYOUTs to data driven (#20365)
  • Add encoder map for Iris Rev. 5 VIA (#20412)
  • Move remaining LAYOUTs to data driven (#20422)
  • Move single LAYOUT_alls to data driven (#20430)
  • 4pplet/yakiimo Layout Macro Conversion and Additions (#20436)
  • Move single 60_ansi, 60_hhkb and 60_iso layouts to data driven (#20438)
  • Update brauner preonic layout (#20439)
  • AEBoards Satellite Rev1 Layout Macro Conversion (#20442)
  • Acheron Austin Layout Macro Conversion and Additions (#20443)
  • Move remaining LAYOUT_alls to data driven (#20463)
  • Update lotus58 RGB config (#20468)
  • Cleanup ekow/akira (#20474)
  • Move 60% layouts to data driven (#20477)
  • Move DZ60 and MJ6XY layouts to data driven (#20478)
  • AEBoards Constellation Layout Macro Updates (#20487)
  • AI03 Equinox Layout Macro Additions (#20488)
  • AI03 Vega Layout Macro Additions (#20489)
  • AKB OGR Layout Macro Additions (#20490)
  • AKB Vero Layout Macro Additions (#20491)
  • Alf DC60 Layout Macro Additions (#20494)
  • Alf X2 Layout Macro Additions (#20495)
  • Koolertron AMAG23 Touch-Up (#20496)
  • BIOI G60 Layout Macro Additions (#20498)
  • BIOI Morgan65 Layout Macro Additions (#20499)
  • BIOI S65 Layout Macro Additions (#20500)
  • Boston Layout Macro Additions (#20504)
  • Potato65S Layout Macro Additions (#20508)
  • Move miscellaneous layouts to data driven (#20516)
  • Cable Car Designs Cypher rev6 Layout Additions and Touch-Up (#20518)
  • Caffeinated Studios Serpent65 Layout Macro Additions (#20519)
  • CannonKeys Adelie Layout Macro Additions (#20546)
  • CannonKeys Aella Layout Macro Additions (#20547)
  • CannonKeys Balance Layout Macro Additions and Touch-Up (#20548)
  • CannonKeys Brutal v2 1800 Layout Macro Additions (#20549)
  • CannonKeys Brutal v2 65 Layout Macro Additions (#20552)
  • CannonKeys Cloudline Layout Macro Additions (#20553)
  • CannonKeys Crin Layout Macro Additions (#20554)
  • CannonKeys DevastatingTKL Layout Macro Additions (#20555)
  • CannonKeys Ellipse Layout Macro Additions (#20558)
  • CannonKeys Ellipse Hotswap Layout Macro Addition & Touch-Up (#20560)
  • CannonKeys Gentoo Layout Macro Additions (#20561)
  • CannonKeys Gentoo Hotswap Touch-Up (#20562)
  • CannonKeys HoodrowG Layout Macro Additions (#20563)
  • CannonKeys Moment Layout Macro Additions (#20564)
  • CannonKeys Moment Hotswap Touch-Up (#20565)
  • CannonKeys Nearfield Layout Macro Addition (#20566)
  • CannonKeys Obliterated75 Layout Macro Additions (#20567)
  • CannonKeys Onyx Layout Macro Additions (#20568)
  • CannonKeys Rekt1800 Layout Macro Additions (#20569)
  • CannonKeys Serenity Layout Macro Additions (#20570)
  • CannonKeys Vector Layout Macro Additions (#20571)
  • Carbo65 Community Layout support (#20580)
  • cest73 TKM Layout Macro Additions (#20583)
  • Charue Charon Layout Macro Additions (#20585)
  • Charue Sunsetter R2 Layout Macro Additions (#20586)
  • Remove FLIP_HALF layouts and move to data driven (#20588)
  • update ymdk/id75/rules.mk for develop (#20592)
  • CherryB Studio CB1800 Layout Macro Additions (#20593)
  • CherryB Studio CB65 Layout Macro Additions (#20594)
  • CherryB Studio CB87RGB Layout Macro Additions (#20595)
  • CheckerBoards G_IDB60 Layout Macro Edits (#20596)
  • CherryB Studio CB87v2 Layout Macro Additions (#20597)
  • CX60 Community Layout Support (#20598)
  • Demiurge Layout Macro Touch-Up (#20599)
  • Ducky One 2 SF 1967ST Layout Macro Additions (#20600)
  • Move FORCE_NKRO to data driven (#20604)
  • dyz Synthesis60 Layout Macro Addition (#20610)
  • DZTech Bocc Layout Macro Additions (#20611)
  • E88 Layout Macro Additions (#20612)
  • Emery65 Layout Macro Additions (#20613)
  • EvyD13 MX5160 Layout Macro Additions (#20614)
  • FJLabs AD65 Layout Macro Additions (#20619)
  • FJLabs Avalon Layout Additions and Touch-Up (#20620)
  • FJLabs Midway60 Layout Macro Additions (#20621)
  • FJLabs Polaris Layout Additions and Touch-Up (#20622)
  • FJLabs Sinanju WK Layout Additions and Touch-Up (#20628)
  • LFK87 refactor (#20635)
  • Fox Lab Time80 Layout Macro Additions (#20636)
  • FJLabs Solanis Layout Macro Additions (#20639)
  • GrayStudio Aero 75 Refactor and Touch-Up (#20640)
  • Move USB_MAX_POWER_CONSUMPTION to data driven (#20648)
  • info.json whitespace cleanups (#20651)
  • Hand88 Layout Macro Additions (#20657)
  • Cyberstar Handwired Layout Macro Additions (#20658)
  • split_65 Handwired Layout Macro Addition and Touch-Up (#20659)
  • Bebol Handwired Layout Macro Additions (#20660)
  • Glacier Handwired Layout Macro Addition and Touch-Up (#20661)
  • Koalafications Handwired Layout Macro Additions (#20662)
  • The Galleon Handwired Layout Macro Additions (#20663)
  • More info.json whitespace cleanups (#20665)
  • Remove use of layout macros for LFKeyboards LED config (#20666)
  • Helix rev2: remove 4 rows option (#20667)
  • Wakizashi40 Handwired Touch-Up (#20671)
  • yttyx: convert readme to utf-8 encoding (#20672)
  • Alicia Cook Layout Macro Additions (#20675)
  • Primus75 Layout Macro Additions (#20676)
  • Volcano660 Layout Macro Additions (#20677)
  • Iris Keyboards Iris60 Layout Macro Additions (#20678)
  • Irene Layout Macro Additions (#20679)
  • Iron180 Layout Macro Additions (#20680)
  • kinesis/alvicstep: remove kicad project files (#20681)
  • Remove more junk files and scripts (#20682)
  • JKeys Design Gentleman65 Layout Macro Addition and Touch-Up (#20684)
  • JKeys Design Gentleman65 Suited Edition Layout Macro Addition (#20685)
  • add additional layouts to dactyl_manuform variants (#20688)
  • TheDogKeyboard Layout Macro Addition (#20689)
  • KBDfans Bella Soldered Layout Macro Additions (#20691)
  • KBDfans Bounce75 Hotswap Touch-Up (#20692)
  • KBDfans KBD66 Layout Additions and Refactor (#20693)
  • KBDfans Odin RGB Touch-Up (#20694)
  • KBDfans Odin Soldered Layout Additions and Touch-Up (#20695)
  • keebzdotnet FMe Layout Additions (#20696)
  • Kegen G-Boy Layout Additions (#20697)
  • Escape Unicode characters in info.json (#20698)
  • Kiko's Lab Ellora65 Layout Additions (#20699)
  • Even more info.json whitespace cleanups (#20703)
  • kkatano Bakeneko 65 V3 Layout Additions (#20706)
  • kopibeng MNK65 Layout Additions (#20708)
  • kopibeng Typ65+ Layout Additions (#20710)
  • kopibeng XT60 Layout Additions (#20711)
  • kopibeng XT60_SINGA Layout Additions (#20712)
  • kopibeng XT8x Layout Additions (#20713)
  • Lefty Touch-Up (#20714)
  • Loki65 Layout Additions (#20715)
  • Lucid Alexa Solder Layout Additions (#20716)
  • Lucid Phantom Soldered Layout Additions (#20717)
  • Leftover30 Layout Addition (#20718)
  • Matrix Cain RE Touch-Up (#20719)
  • Matrix Lab 8XV1.2 OG Layout Updates (#20720)
  • Mechlovin Studio Hex6C Layout Additions (#20722)
  • Mechlovin.Studio Rogue87 Rev.1 Layout Additions (#20724)
  • Mechlovin.Studio Rouge87 Rev.1 Layout Additions (#20725)
  • Mechlovin.Studio infinity87 Rev.1 Layout Additions (#20726)
  • Mechlovin.Studio Infinity87 RGB Rev1 Layout Additions (#20727)
  • Mechlovin9 Layout Addition (#20728)
  • 1upkeyboards/pi50 WS2812_DI_PIN patch for develop (#20731)
  • Mechlovin.Studio Infinity87 Rev.2 Layout Additions (#20735)
  • Mechlovin.Studio Olly JF Layout Additions (#20736)
  • Mechlovin Studio Serratus Layout Additions (#20737)
  • MechWild Mercutio Layout Addition (#20738)
  • MisterKnife Knife66 ISO Layout Addition (#20739)
  • MNK1800s Layout Addition (#20740)
  • MNK75 Layout Additions (#20741)
  • Mode SixtyFive S Layout Additions (#20742)
  • Mode SeventyFive H Layout Addition (#20743)
  • Monstargear XO87 Soldered Layout Additions (#20744)
  • MTBKeys MTB60 Solder Layout Additions (#20745)
  • Nix Keyboards Day Off 60 Touch-Up and Layout Additions (#20746)
  • Kastenwagen 1840 Layout Addition (#20747)
  • Kastenwagen 48 Layout Addition (#20748)
  • NovelKeys NK87 Touch-Up (#20749)
  • NovelKeys NK87B Touch-Up (#20750)
  • Noxary 378 Layout Addition (#20751)
  • Noxary Valhalla Layout Addition (#20752)
  • Nightly Boards/DeskDaily Daily60 Layout Additions (#20753)
  • Odelia Touch-Up (#20754)
  • One Key Co Dango40 Touch-Up and Layout Addition (#20755)
  • P3D Glitch Layout Addition (#20763)
  • Pearl Boards Pandora Layout Additions (#20764)
  • Pearl Boards Pearl Layout Addition (#20765)
  • support boards with APM32 instead of the STM32 (#20770)
  • Pearl Boards Zeus Layout Additions (#20773)
  • Peej Rosaline Staggered Layout Additions (#20774)
  • plywrks Lune Layout Touch-Up (#20775)
  • Project Keyboard Signature65 Layout Additions (#20776)
  • protoTypist Allison Layout Additions (#20777)
  • Prototypist J-01 Rev1 Layout Additions (#20778)
  • Protozoa Cassini Layout Additions (#20779)
  • Protozoa P.01 Layout Additions (#20781)
  • QwertleKeys Calice Layout Addition (#20782)
  • Ramlord WITF Layout Touch-Up and Addition (#20783)
  • Rart45: rename LAYOUT_all to LAYOUT (#20784)
  • Rart60 Layout Additions (#20785)
  • Rart67 Layout Additions (#20786)
  • Rart67M: rename LAYOUT_all to LAYOUT (#20787)
  • RART75 Layout Additions (#20788)
  • RART75 Hotswap Layout Additions (#20789)
  • RART75M: rename LAYOUT_all to LAYOUT (#20790)
  • RART80 Hotswap Layout Additions (#20791)
  • Rartand Layout Additions (#20799)
  • Rartlice: rename LAYOUT_all to LAYOUT (#20800)
  • Ratio65 Hotswap: rename LAYOUT_all to LAYOUT_65_ansi_blocker (#20801)
  • Ratio65 Solder Layout Additions (#20802)
  • Specifying the default board file is redundant (#20807)
  • RGBKB Pan Layout Additions (#20809)
  • saevus cor Layout Additions (#20810)
  • Clean up trailing commas from info.json (#20812)
  • Enable LTO on salicylic acid 7skb to reduce size (#20813)
  • Reduce compiled size for mt64rgb's via keymap (#20814)
  • Reduce compiled size for prototypist oceanographer's via keymap (#20816)
  • Sauce Mild Layout Additions (#20818)
  • VCL x SawnsProjects VCL65 Layout Additions (#20819)
  • senselessclay had60 Layout Additions (#20820)
  • Space Holdings Nebula12B (#20821)
  • SmithRune Iron180 Layout Additions (#20822)
  • Stello65 Beta Layout Additions and Clean-Up (#20824)
  • Studio Kestra Nue Layout Additions (#20825)
  • Switchplate Peripherals 910 Layout Additions (#20827)
  • TKC California Layout Addition and Touch-Up (#20829)
  • TKC M0lly Layout Additions (#20830)
  • TKC TKL A/B87 Layout Additions (#20831)
  • Viendi 8L Layout Additions (#20832)
  • Viktus Smolka Layout Additions (#20833)
  • Viktus SP111 Layout Additions (#20834)
  • Viktus SP_Mini Layout Additions (#20835)
  • W1-AT Layout Additions (#20842)
  • Weirdo Geminate60 Layout Additions (#20843)
  • Cypher rev5 Layout Additions (#20844)
  • Prophet Layout Additions (#20845)
  • Tidy up encoder_map directions (#20847)
  • Rama Works Koyu Community Layout Support (#20848)
  • Rama Works M65-B Community Layout Support (#20850)
  • Rama Works M65-BX Community Layout Support (#20851)
  • Rama Works U80-A Community Layout Support (#20853)
  • Wilba Tech WT60-B Community Layout Support (#20854)
  • Wilba Tech WT60-BX Layout Additions and Touch-Up (#20855)
  • Wilba Tech WT60-C Community Layout Support (#20858)
  • Wilba Tech WT60-D Layout Addition and Touch-Up (#20859)
  • Wilba Tech WT60-G Community Layout Support (#20860)
  • Wilba Tech WT60-G2 Community Layout Support (#20861)
  • Wilba Tech WT60-H2: rename LAYOUT_all to LAYOUT_60_ansi_tsangan_split_rshift (#20864)
  • Wilba Tech WT60-XT Layout Additions and Touch-Up (#20865)
  • Wilba Tech WT65-A Community Layout Support and Touch-Up (#20866)
  • Wilba Tech WT65-B Layout Addition and Touch-Up (#20867)
  • Wilba Tech WT65-F Community Layout Support and Touch-Up (#20869)
  • Wilba Tech WT65-FX Community Layout Support (#20870)
  • Wilba Tech WT65-G Layout Additions and Touch-Up (#20871)
  • Wilba Tech WT65-G2 Layout Additions and Touch-Up (#20872)
  • Wilba Tech WT65-XT: rename LAYOUT_all to LAYOUT_65_xt_ansi_blocker_tsangan (#20873)
  • Wilba Tech WT65-XTX Layout Additions and Touch-Up (#20874)
  • Wilba Tech WT69-A Layout Addition and Touch-Up (#20875)
  • Wilba Tech WT70-JB Layout Addition and Touch-Up (#20876)
  • Wilba Tech WT75-A Layout Additions and Touch-Up (#20877)
  • Wilba Tech WT75-B Layout Additions and Touch-Up (#20878)
  • Wilba Tech WT75-C Layout Additions and Touch-Up (#20879)
  • Wilba Tech WT80-G Layout Additions and Touch-Up (#20880)
  • WinKeys Mini Winni: rename LAYOUT_all to LAYOUT_ortho_2x4 (#20881)
  • Scarlet Bandana Layout Additions (#20882)
  • Winkeyless B87 Community Layout Support (#20884)
  • Xelus AkiS Layout Additions (#20885)
  • Xelus Dharma Layout Additions (#20886)
  • Xelus Kangaroo Layout Additions (#20887)
  • Xelus La+ Layout Addition (#20888)
  • Xelus Pachi Mini 32U4 Community Layout Support (#20889)
  • Xelus Pachi rev1 Community Layout Support (#20891)
  • Xelus Trinity XT TKL Layout Additions (#20892)
  • Xelus Valor FRL TKL Layout Additions (#20893)
  • YDKB Chili Community Layout Support (#20895)
  • YDKB Grape Layout Additions (#20899)
  • YMDK Wings Layout Addition (#20900)
  • YMDK Wings Hotswap: rename LAYOUT_all to LAYOUT (#20901)
  • YMDK YM68 Community Layout Support (#20906)
  • Yugo-M Controller Layout Additions (#20907)
  • Zicodia TKLFRLNRLMLAO Layout Addition (#20908)
  • ZTBoards After Layout Addition (#20912)
  • ZTBoards Noon Layout Addition (#20913)
  • SawnsProjects Amber80 Solder Community Layout Support (#20917)
  • Pearl Boards Atlas Layout Additions (#20918)
  • Xiudi XD004: rename LAYOUT_all to LAYOUT_ortho_1x4 (#20919)
  • Wilba Tech WT80-BC Community Layout Support (#20920)
  • 4pplet Eagle Viper REP Rev B Community Layout Support (#20921)
  • FR4Boards unix60 Layout Additions (#20926)
  • MC-76K: rename LAYOUT_all to LAYOUT (#20927)
  • Mechlovin Studio Jay60 Community Layout Support (#20928)
  • MisterKnife Knife66 Layout Additions (#20929)
  • MisterKnife Knife66 ISO Layout Additions II (#20930)
  • 4pplet Waffling80 Community Layout Support and Touch-Up (#20932)
  • Acheron Elongate Delta: rename LAYOUT_all to LAYOUT (#20956)
  • ADPenrose Akemipad Layout Addition (#20957)
  • ADPenrose Shisaku: rename LAYOUT_all to LAYOUT (#20958)
  • AEBoards Aegis Layout Additions (#20960)
  • rart/rart80:via: restore rules.mk after #20334 (#21002)
  • Remove HHKB RN42 code (#21007)
  • Move thekey to Drop vendor folder (#21032)

Keyboard fixes:

  • userspace/community layout fixes (#19998)
  • Fix layout macro keys with no matrix position (#20033)
  • Restore matrix pins for ep/40 (#20083)
  • kbdfans/tiger80: remove duplicate keys in info.json (#20148)
  • Fixup z70ultra — replace mis-removed file (#20157)
  • Fixup CI build for F103C6 onekey. (#20188)
  • Fix layouts containing keys with multiple matrix positions (#20191)
  • Fix some more missing #pragma onces (#20241)
  • Fixup CI build for nack. (#20292)
  • Fixup Pointing device functions (#20311)
  • Fix a handful of CLI errors (#20321)
  • Fix API errors (#20326)
  • Set up DEFAULT_FOLDER for primekb/meridian (#20367)
  • Fix up via keymap builds. (#20383)
  • Fix up via keymap builds. (#20397)
  • Fix some missing QMK_KEYBOARD_H includes in user keymaps (#20417)
  • Update ymdk/id75 config (#20432)
  • Fix info.json LTO and format encoder definitions (#20456)
  • Fixup dymium65 RGB Pin on develop (#20473)
  • Fixup missing include in mxss via keymap (#20475)
  • Fix nk plus ws2812 config (#20524)
  • cannonkeys/ellipse_hs: correct layout macro references (#20577)
  • Remove use of layout macros for music_map (#20634)
  • Vertex/angle65 WS2812 pin fix (#20653)
  • Fix ws2812 pin for phantagom boards (#20670)
  • Fixup 1upkeyboards/pi50 (#20733)
  • Fix test_json2c_no_json() (#20756)
  • Fix mxss rgblight.c compilation issues (#20804)
  • Fixup paladin64 (#20805)
  • Fixup dogtag (#20808)
  • Fixup zwag75 (#20923)
  • Fixup latinpadble (#20924)
  • Add missing layout data for a handful of boards (#20931)
  • Fixup evo70 (#20949)
  • Fixup Crkbd default keymap (#20962)
  • Fix key display on Corne OLED (#21044)

Others:

  • Add layer-cycle example (#19069)
  • Remove remnants of Vagrant. (#20000)
  • Develop cleanup IS31FL3736 docs (#20633)
  • Organise config/rules <-> info mappings (#20723)
  • Add a change log for PR20584 (#20998)

Bugs:

  • Strip whitespace from CONVERT_TO variables (#19948)
  • Check all rows have the correct number of columns when parsing g_led_config (#19954)
  • Fix OSMs getting stuck (#20034)
  • Fix rgblight layers when animations aren't enabled (#20097)
  • Fixed split keyboard issue where custom LED indicators could activate incorrect LEDs (#20203) (#20204)
  • Reduce _validate complexity (#20274)
  • qmk info: account for ISO enter when calculating layout X offset (#20325)
  • Disable specific warnings to mitigate compilation problems with KEEP_INTERMEDIATES=yes. (#20339)
  • Fix compilation issue with Swap Hands and Encoder Map (#20348)
  • Fix preprocessor condition for SPLIT_HAPTIC_ENABLE (#20411)
  • Fix compilation issues with PS/2 driver on F4x1 controllers (#20433)
  • Fix capital letters not getting sent with sendstring_swiss_fr.h (#20515)
  • Duplicate board files for blok converter (#20629)
  • Fix Mod-Tap combo regression (#20669)
  • Revert use of legacy wear leveling driver now ChibiOS is fixed (#20806)
  • Fix compilation error introduced by #20669 (#20849)
  • Fix English word list retrieval in qmk generate-autocorrect-data (#20915)
  • Improve keymap folder resolution (#20981)
  • Fix issue with Repeat Key-Combo test (#21005)
  • qmk info - Remove printing of "Keyboard Folder" (#21033)
- + \ No newline at end of file diff --git a/ChangeLog/20230827.html b/ChangeLog/20230827.html index 23b45eabced..3a64899ad33 100644 --- a/ChangeLog/20230827.html +++ b/ChangeLog/20230827.html @@ -8,17 +8,17 @@ - + - - - + + +
Skip to content

QMK Breaking Changes - 2023 Aug 27 Changelog

Notable Changes

As per last few breaking changes cycles, there have been a lot of behind-the-scenes changes, mainly around migration of configurables into info.json files, cleanup of info.json files, additional layout definitions for keyboards, adding support for general community layouts to keyboards, as well as addressing technical debt.

One thing to note for this release -- qmk/qmk_firmware is no longer accepting PRs for keymaps other than for manufacturer-supported keymaps. User keymap workflow has been documented here for several years. This change is to progressively reduce the maintenance burden on the project, and to allow us to focus on the core features of QMK.

Existing user keymaps and userspace areas will likely be relocated/removed in the future -- non-building keymaps and userspace will be first targets, likely during the new breaking changes cycle. We will provide more information on Discord regarding this initiative as it becomes available.

RGB Matrix optimizations (#21134, #21135)

Most RGB Matrix implementations now check whether or not RGB LED data has changed and skip transmission if it hasn't. This was measured to improve scan frequency in cases of static or infrequently-changing colors.

Audio optimizations (#21496, #21498)

Some audio code relating to "notes" used double datatypes, which are implemented in software floating-point for most ARM microcontrollers. This has been changed to use float datatypes instead, which are implemented in hardware floating-point on most ARM microcontrollers. This change increases performance as well as reduces the firmware size by significant number of bytes.

AVR sees minimal (if any) benefit -- double was interpreted as float on AVR anyway.

Changes Requiring User Action

Updated Keyboard Codebases

Old Keyboard NameNew Keyboard Name
capsunlocked/cu80/v2_ansi/basecapsunlocked/cu80/v2/ansi
capsunlocked/cu80/v2_iso/basecapsunlocked/cu80/v2/iso
handwired/dactyl_manuform/3x5_3handwired/dactyl_minidox
handwired/dactyl_manuform/6x6_kinesishandwired/dactyl_kinesis
handwired/jscotto/scotto36handwired/scottokeebs/scotto36
handwired/jscotto/scotto40handwired/scottokeebs/scotto40
handwired/jscotto/scotto9handwired/scottokeebs/scotto9
handwired/jscotto/scottocmdhandwired/scottokeebs/scottocmd
handwired/jscotto/scottostarterhandwired/scottokeebs/scottostarter
hfdkb/keyboard_sw/k83inland/kb83
idb_60idb/idb_60
kamigakushijaykeeb/kamigakushi
kbdfans/kbd67mkiirgbkbdfans/kbd67/mkiirgb
modelhibm/model_m/modelh
vintacoarse/vinta

Remove encoder in-matrix workaround code (#20389)

Some keyboards "hacked" encoder support into spare slots in the key matrix in order to interoperate with VIA. This workaround is no longer necessary, and the code has been removed. If you have a keyboard that uses this workaround, you will need to update your keymap to use the new Encoder Map API instead.

Unicodemap keycodes rename (#21092)

The Unicodemap keycodes have been renamed:

OldNew
X(i)UM(i)
XP(i,j)UP(i,j)

Remove old OLED API code (#21651)

Old OLED code using ssd1306.c ssd1306.h, and SSD1306OLED and other similar files have been consolidated to use the standard OLED driver. External user keymaps will need to be updated to use the standard OLED driver accordingly.

Driver naming consolidation (#21551, #21558, #21580, #21594, #21624, #21710)

In most circumstances this won't affect users -- only keyboard designers with currently-unmerged boards. The only users affected are people who have modified existing keyboards in order to add/modify haptics, lighting, or bluetooth -- and only if the base keyboard did not configure them already. Driver naming has been modified to be lowercase.

RGBLight (RGBLIGHT_DRIVER / rgblight.driver):

OldNew
WS2812ws2812
APA102apa102

LED Matrix (LED_MATRIX_DRIVER / led_matrix.driver):

OldNew
IS31FL3731is31fl3731
IS31FL3742Ais31fl3742a
IS31FL3743Ais31fl3743a
IS31FL3745is31fl3745
IS31FL3746Ais31fl3746a
CKLED2001ckled2001

RGB Matrix (RGB_MATRIX_DRIVER / rgb_matrix.driver):

OldNew
AW20216aw20216
IS31FL3731is31fl3731
IS31FL3733is31fl3733
IS31FL3736is31fl3736
IS31FL3737is31fl3737
IS31FL3741is31fl3741
IS31FL3742Ais31fl3742a
IS31FL3743Ais31fl3743a
IS31FL3745is31fl3745
IS31FL3746Ais31fl3746a
CKLED2001ckled2001
WS2812ws2812

OLED (OLED_DRIVER):

OldNew
SSD1306ssd1306

Haptic (HAPTIC_DRIVER):

OldNew
DRV2605Ldrv2605l
SOLENOIDsolenoid

Bluetooth (BLUETOOTH_DRIVER / bluetooth.driver):

OldNew
BluefruitLEbluefruit_le
RN42rn42

Full changelist

Core:

  • On-each-release tap dance function (#20255)
  • Send a dummy keycode to neutralize flashing modifiers in retro tap and key overrides (#20992)
  • Adds a way to separate tab from AUTO_SHIFT_SPECIAL. (#20996)
  • [Enhancement] More info on apply_autocorrect (#21056)
  • Remove quantum/keymap.h (#21086)
  • Unicodemap keycodes rename (#21092)
  • Merge upstream uf2conv.py changes (#21107)
  • Add a dynamic_macro_stop_recording(void) function. (#21108)
  • platforms: chibios: wait: only define the frequency (#21115)
  • [Enhancement] Decouple autocorrect logic (#21116)
  • Optimisation - Add RGB LED colour set check in drivers (#21134)
  • RGB matrix ws2812 update (#21135)
  • Pixel rain: Refactor the rain light decision operator (#21139)
  • Use unsigned integer for kinetic speed (#21151)
  • Reset matrix_need_update properly in eager debouncing algorithms (#21154)
  • Refactor kinetic mouse key feature (#21164)
  • RGB Matrix limit basic indicators to the last render (#21169)
  • dynamic keymap: Rely on introspection to handle OOB access. (#21247)
  • add VIA support for LED Matrix (#21281)
  • Refactor times inverse of sqrt 2 calculation (#21293)
  • Move protocol makefiles into their respective folders (#21332)
  • Remove use of __flash within LED drivers (#21343)
  • STM32H723 support (#21352)
  • Remove CORTEX_ENABLE_WFI_IDLE from keyboards. (#21353)
  • Get rid of USB_LED_KANA and USB_LED_COMPOSE (#21366)
  • Minor board clean-up after #19780 (#21391)
  • Get rid of USB_LED_SCROLL_LOCK (#21405)
  • Get rid of USB_LED_NUM_LOCK (#21424)
  • Simplify audio_duration_to_ms() and audio_ms_to_duration(), reduce firmware size by a few bytes. (#21427)
  • Allow key override to respect weak mods caused by caps word (#21434)
  • Get rid of USB_LED_CAPS_LOCK (#21436)
  • tmk_core: remove direct quantum.h includes (#21465)
  • bootmagic mods covering the case when swapped mods are pressed at the same time (#21320) (#21472)
  • drivers: remove direct quantum.h includes (#21473)
  • debounce: remove direct quantum.h includes (#21480)
  • keymap_extras: remove direct quantum.h includes (#21485)
  • process_keycode: remove direct quantum.h includes (#21486)
  • Add MOUSEKEY_WHEEL_DELTA documentation (#21493)
  • Reduce needless precision in audio note frequency calculation (#21496)
  • Remove needless precision in additive DAC sample generation (#21498)
  • quantum: remove direct quantum.h includes (#21507)
  • process_combo: restore wait.h header (#21514)
  • Eliminate TMK_COMMON_* in makefiles (#21517)
  • backlight: split AVR PWM and timer drivers (#21540)
  • haptic: naming cleanups (#21551)
  • rgblight: driver selection cleanups (#21558)
  • LED Matrix: driver naming cleanups (#21580)
  • Unify MIDI note calculation with the audio feature (from #21496) (#21588)
  • Allow the user to select a single tone for the additive DAC (#21591)
  • RGB Matrix: driver naming cleanups (#21594)
  • Raw HID: documentation improvements (#21596)
  • Unicode: move keycode aliases to a separate header (#21613)
  • Bluetooth: driver naming cleanups (#21624)
  • Remove old OLED API code (#21651)
  • haptic: further naming cleanups (#21682)
  • Simplfy RGB/LED matrix effect logic (#21703)
  • OLED: driver naming cleanups (#21710)

CLI:

  • Add *_MATRIX_LED_COUNT generation/validation (#19515)
  • Revert "Add *_MATRIX_LED_COUNT generation/validation" (#21109)
  • Add *_MATRIX_LED_COUNT generation (#21110)
  • feat, docs: WB32 flashing (#21217)
  • Improve error messages when layout key matrix row/col is OOB (#21640)

Submodule updates:

  • Update ChibiOS-Contrib (#21553)

Keyboards:

  • Add support for Rastersoft MiniTKL (#20230)
  • Remove encoder in-matrix workaround code (#20389)
  • Revamp dactyl_manuform readme.md (#20395)
  • added hackpad keyboard (#20402)
  • Add handwired/dactyl_cc keyboard (#20517)
  • Add Mino Plus Hotswap (#20534)
  • Move kb83 keyboard. (#20761)
  • Rename dactyl_manuform variant 3x5_3 (#21015)
  • Update k34 layout to split_3x5_2 (#21046)
  • giabalanai keymaps: transpose added (#21054)
  • Move RGBLIGHT_SLEEP to data driven (#21072)
  • update layouts of dactyl_manuform/4x5_5 (#21094)
  • Move RGBLIGHT_LED_MAP to data driven (#21095)
  • Move RGBLED_SPLIT to data driven (#21113)
  • Update dactyl_promicro readme (#21144)
  • Delete jscotto directory (#21157)
  • correct and modernise dactyl_manuform/6x7 variant (#21176)
  • Move RGBLIGHT_SPLIT to data driven (#21190)
  • Minor amendment to bcat userspace to prevent build failure (#21205)
  • FJLabs Swordfish Layout Macro Refactor (#21234)
  • Add skyloong/Dt40 keyboard (#21237)
  • dactyl_manuform/6x7 correction (#21240)
  • Amend ryanbaekr boards by pin definitions (#21248)
  • EC Pro X JIS Layout Touch-Up (#21260)
  • Eason Aeroboard Refactor (#21271)
  • Move RGBLED_NUM to data driven (#21278)
  • Remove default TAPPING_TERM from keyboard config.h (#21284)
  • Move RGBLIGHT_HUE/SAT/VAL_STEP to data driven (#21292)
  • Move TAPPING_TERM to data driven (#21296)
  • Modernize, correct, and uniform dactyl_manuform variant 5x6_68 (#21299)
  • rename and modernise dactyl_manuform/6x6_kinesis (#21302)
  • ProtoTypist PT-60 Refactor (#21322)
  • ProtoTypist PT-80 Refactor (#21325)
  • add jels60v2 support (#21337)
  • Move RGB_MATRIX_HUE/SAT/VAL/SPD_STEP to data driven (#21354)
  • Move TAPPING_TOGGLE to data driven (#21360)
  • Move TAP_CODE_DELAY to data driven (#21363)
  • gmmk/pro: Turn off RGB when suspended (#21370)
  • Move miscellaneous defines to data driven (#21382)
  • kyria: remove LAYOUT_stack (#21384)
  • Reduce keebio/bamfk1:via firmware size (#21432)
  • Refactor capsunlocked/cu80/v2 (#21454)
  • Mechlovin Zed65 rev1 Develop Touch-Up (#21476)
  • Add PW88 keyboard (#21482)
  • Prepare ymdk/ymd75 for rev4 (#21484)
  • Move DEBOUNCE_TYPE to data driven (#21489)
  • aleblazer/zodiark:via: Disable two RGB effects (#21495)
  • Spruce up dactyl_lightcycle and dactyl_maximus layouts (#21519)
  • Amend layout and matrix positions for dactyl_cc (#21523)
  • moved model h controller under ibm/model_m (#21526)
  • tominabox1/le_chiffre refactor pt 1 (#21567)
  • Update ERA65 PCB (#21592)
  • Update usb.* for dactyl_cc (#21612)
  • Kintwin controller for kinesis keyboard, split layout (#21614)
  • Add STM32f3 Discovery onekey (#21625)
  • Automata02 Alisaie Develop Touch-Up (#21630)
  • Move RGBLight animations to data driven (#21635)
  • Refactoring entirely Caticorn PCB (#21644)
  • AMJKeyboard AMJ84 Develop Touch-Up (#21645)
  • Remove layout aliases from keyboard_aliases.hjson (#21658)
  • kikoslab/kl90: Remove invalid config option (#21708)
  • Remove more legacy config.h options (#21709)
  • add willoucom/keypad (#21714)
  • Tidy up encoder in matrix references (#21718)
  • Add city42 (#21727)
  • feat: add squigglybob splitkb kyria rev2 keymap (#21751)
  • Align SENSE75 with recent Drop additions (#21757)

Keyboard fixes:

  • fix scheikled keymap for dactyl_manuform/4x6 (#21206)
  • Fixup dekunukem/duckypad (#21298)
  • Fixup nightly_boards/n40_o (#21307)
  • Fix rate/pistachio_pro:via (#21339)
  • Fix encoder map declarations (#21435)
  • jones/v1: fix layout offset and disable audio on via keymap (#21468)
  • Fix backlight support for some boards (#21554)
  • kinesis: remove stacked split layouts (#21569)
  • Fix layout offsets for a handful of boards (#21636)
  • doio/kb38: fix layout (#21704)
  • Fix drop/shift/v2 compilation (#21800)
  • Fix keyboards with old RGB driver names (#21815)
  • Fix keyboards with old RGB driver names (#21817)

Others:

  • Rework info.json reference (#21324)
  • Enable auto-merge of develop to riot (#21389)

Bugs:

  • Fix non-functional S3 wakeup / resume from suspense (#19780)
  • [Bugfix] Check NULL pointers on QP (#20481)
  • Fix PS2_MOUSE_INVERT_BUTTONS (#20646)
  • Fix backlight sync on suspend_power_down for split keyboards (#21079)
  • Consolidate KEYBOARD_OUTPUT+KEYMAP_OUTPUT=>INTERMEDIATE_OUTPUT (#21272)
  • Chibios USB: Take into account if host wants remote wakeup or not (#21287)
  • Fix anchor IDs for some API references (#21345)
  • Pixel fractal: Set minimum middle column value (#21365)
  • Fix ili9xxx inversion opcode entry (#21422)
  • Relocate backlight drivers (#21444)
  • Fixup STM32-DFU (#21447)
  • keycode aliases: work around ChibiOS ch.h include guard (#21497)
  • Fix compilation error when Split Watchdog enabled (#21543)
  • Revert " Fix compilation error when Split Watchdog enabled" (#21572)
  • quantum.h: clean up process_keycode includes (#21579)
  • Fix stuck note with square wave in additive DAC (#21589)
  • [Fix] USB HID tests compliance (#21626)
  • Fix Dynamic Macro Compilation for avr-gcc 5.4.0 + Linux (#21653)
  • Unicode, Unicodemap and UCIS refactor (#21659)
  • Audio: Don't play the first note of zero-note melodies (#21661)
  • Fix mouse-key spamming empty reports (#21663)
  • Restore usb suspend wakeup delay (#21676)
  • Fix compilation error for APA on ChibiOS (#21773)
  • fix: restore rgb matrix indicators to jellybean_raindrops animation (#21792)
  • Remove led_matrix.hue_steps and led_matrix.sat_steps from schema (#21827)
  • Revert changes to ChibiOS Suspend Code (#21830)
  • Add "apm32-dfu" in keyboard.jsonschema (#21842)
- + \ No newline at end of file diff --git a/ChangeLog/20231126.html b/ChangeLog/20231126.html index 7581e4c21cc..3605eb3c085 100644 --- a/ChangeLog/20231126.html +++ b/ChangeLog/20231126.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -24,7 +24,7 @@ case BASIC_KEYCODE_RANGE: case MODIFIER_KEYCODE_RANGE: /* do stuff with basic and modifier keycodes */

Quantum Painter OLED support (#19997)

Quantum Painter has picked up support for SH1106 displays -- commonly seen as 128x64 OLEDs. Support for both I2C and SPI displays is available.

If you're already using OLED through OLED_DRIVER_ENABLE = yes or equivalent in info.json and wish to use Quantum Painter instead, you'll need to disable the old OLED system, instead enabling Quantum Painter as well as enabling the appropriate SH1106 driver. See the Quantum Painter driver documentation for more details. The old OLED driver is still available, and keymaps do not require migrating to Quantum Painter if you don't want to do so.

RGB/LED lighting driver naming and cleanup (#21890, #21891, #21892, #21903, #21904, #21905, #21918, #21929, #21938, #22004, #22008, #22009, #22071, #22090, #22099, #22126, #22133, #22163, #22200, #22308, #22309, #22311, #22325, #22365, #22379, #22380, #22381, #22383, #22436)

As you can probably tell by the list of PRs just above, there has been a lot of cleanup and consolidation this cycle when it comes to RGB/LED lighting drivers. The number of changes is too large to list here, but the general theme has been focusing on consistency of naming, both of drivers themselves and their respective implementation and configuration. Most changes only affect keyboard designers -- if you find that your in-development keyboard is no longer building due to naming of defines changing, your best bet is to refer to another board already in the repository which has had the changes applied.

Peripheral subsystem enabling (#22253, #22448, #22106)

When enabling peripherals such as I2C, SPI, or Analog/ADC, some required manual inclusion of source files in order to provide driver support, and in some cases, when multiple drivers were using the same underlying peripheral, files were being added to the build multiple times.

Most systems requiring other peripherals now mark their respective dependencies as "required", allowing the build system to check whether peripherals are necessary before including them in the build rather than having each location enable them manually.

For a concrete example, users or keyboard designers who previously added SRC += analog.c in order to allow for analog readings via an ADC now should specify ANALOG_DRIVER_REQUIRED = yes instead. The full list of added options is as follows:

New optionOld Equivalent
ANALOG_DRIVER_REQUIRED = yesSRC += analog.c
APA102_DRIVER_REQUIRED = yesSRC += apa102.c
I2C_DRIVER_REQUIRED = yesSRC += i2c_master.c or QUANTUM_LIB_SRC += i2c_master.c
SPI_DRIVER_REQUIRED = yesSRC += spi_master.c or QUANTUM_LIB_SRC += spi_master.c
UART_DRIVER_REQUIRED = yesSRC += uart.c
WS2812_DRIVER_REQUIRED = yesSRC += ws2812.c

NKRO on V-USB boards (#22398)

NKRO is now available for ATmega32A and 328P-based keyboards (including PS2AVRGB/Bootmapper boards), thanks to some internal refactoring and cleanup. To enable it, the process is the same as always - add NKRO_ENABLE = yes to your rules.mk, then assign and press the NK_TOGG keycode to switch modes.

Full changelist

Core:

CLI:

Keyboards:

Keyboard fixes:

Others:

Bugs:

- + \ No newline at end of file diff --git a/ChangeLog/20240225.html b/ChangeLog/20240225.html index fd7e5237c35..044e00f729b 100644 --- a/ChangeLog/20240225.html +++ b/ChangeLog/20240225.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -23,7 +23,7 @@ DIP_SWITCH_OFF_ON(EC_NORM, EC_SWAP) }; #endif

Quantum Painter updates (#18521, #20645, #22358)

Quantum Painter picked up support for the following:

Quantum Painter now supports the majority of common OLED panels supported by the basic OLED driver, so if you're using an ARM-based board you may find Quantum Painter a much more feature-rich API in comparison.

Full changelist

Core:

CLI:

Submodule updates:

Keyboards:

Keyboard fixes:

Bugs:

- + \ No newline at end of file diff --git a/ChangeLog/20240526.html b/ChangeLog/20240526.html index b4cfa0dfa4b..71c45b42359 100644 --- a/ChangeLog/20240526.html +++ b/ChangeLog/20240526.html @@ -8,17 +8,17 @@ - + - - - + + +
Skip to content

QMK Breaking Changes - 2024 May 26 Changelog

Notable Features

May 2024 brings about another heavy maintenance release of QMK. Of the 209 PRs created this breaking changes cycle against the develop branch, 174 behind-the-scenes PRs (83%!) were aimed at converting, consolidating, and cleaning up keyboards and their configuration data. Not the most glamorous work, but it means QMK is in a much more manageable spot than what it was 3 months prior. The work steadily continues!

Changes Requiring User Action

Updated Keyboard Codebases

One note with updated keyboard names -- historical keyboard names are still considered valid when using External Userspace for builds. If you're already using External Userspace, you do not need to move your keymap inside your repository.

Old Keyboard NameNew Keyboard Name
adkb96adkb96/rev1
canary/canary60rgbcanary/canary60rgb/v1
handwired/meck_tklhandwired/meck_tkl/blackpill_f401
handwired/qc60handwired/qc60/proto
handwired/stef9998/split_5x7handwired/stef9998/split_5x7/rev1
juncojunco/rev1
keaboardkeaboard/rev1
kprepublic/jj40kprepublic/jj40/rev1
kprepublic/jj50kprepublic/jj50/rev1
melgeek/mj65melgeek/mj65/rev3
melgeek/mojo68melgeek/mojo68/rev1
melgeek/mojo75melgeek/mojo75/rev1
melgeek/tegicmelgeek/tegic/rev1
melgeek/z70ultramelgeek/z70ultra/rev1
miiiw/blackio83miiiw/blackio83/rev_0100
murcielagomurcielago/rev1
polillapolilla/rev1
qwertyydoxqwertyydox/rev1
spaceholdings/nebula68bspaceholdings/nebula68b/solder
splittysplitty/rev1
xiudi/xd004xiudi/xd004/v1

Remove deprecated quantum keycodes (#23407)

A bunch of legacy keycodes have been removed -- check the affected keycodes if you run into compilation problems, as it'll show you what the problematic keycodes should be replaced with.

The latest of these were officially deprecated within QMK in the August 2023 breaking changes -- the new keycodes are the way forward.

P3D Spacey Layout Updates (#23329)

This PR removed the LAYOUT macro that was configured for the Spacey. If you have a keymap for this keyboard, you will need to update your keymap using the following steps:

  1. Change your layout macro to LAYOUT_all.
  2. Remove the two KC_NO keycodes following the Space and Delete keys on the bottom row.
  3. Move the keycode for the encoder pushbutton (customarily Mute) to the end of the top row, after the customary Backspace key.
  4. Move the keycode for the Right Arrow to the end of the Shift row, after the Down Arrow key.

MechKeys ACR60 Layout Updates (#23309)

This PR removed and changed some of the layouts that were configured for the ACR60. If you use one of the following layouts, you will need to update your keymap:

LAYOUT_hhkb

  1. Change your layout macro to LAYOUT_60_hhkb.
  2. Remove any keycodes for the key between Left Shift and QWERTY Z.

LAYOUT_true_hhkb

  1. Change your layout macro to LAYOUT_60_true_hhkb.
  2. Remove any keycodes for the key between Left Shift and QWERTY Z.

LAYOUT_directional

  1. Change your layout macro to LAYOUT_60_ansi_arrow_split_bs.
  2. Remove any keycodes for the key between Left Shift and QWERTY Z.
  3. Remove any keycodes for the keys immediately before and after the 1.25u key of Split Spacebar.

If you need split spacebars, you may implement LAYOUT_60_ansi_arrow_split_space_split_bs and change your layout to it, removing the keycode between Left Shift and QWERTY Z.

LAYOUT_mitchsplit

  1. Use LAYOUT_60_ansi_split_space_split_rshift.

Notable core changes

Introduction of keyboard.json (22891)

One longer term goal of QMK is increased maintainability. As part of the continued push towards Data Driven Configuration, the build system has been updated to simplify the existing codebase, and power future workflows.

The keyboard.json configuration file allows the support of a single data file for keyboard level config.

Additionally,

  • info.json now represents potential fragments of config that can be shared across keyboard revisions.
  • rules.mk is now optional - Completely blank files are no longer required.
  • Currently supported keyboards have been migrated to reflect this change.

Backwards compatibility of the old system has been maintained, but will be removed in a future breaking changes cycle.

Refactor ChibiOS USB endpoints to be fully async (#21656)

For most users, this change will mean suspend and resume on ARM-based boards works correctly. Others will notice that their keyboard now works correctly in BIOS/UEFI.

Essentially, changes were made in the internals of how QMK interacts with USB for ARM-based devices. Before this change, whenever a packet was attempted to be sent from the keyboard to the host machine, QMK would wait for the transmission to complete. After this change, those packets are queued and sent when opportune; this results in much better "correctness" as far as the USB protocol is concerned, and means far less likelihood of failure scenarios such as "stuck keys" or "random lockups" and the like.

Compliance checks were run against QMK firmwares for the most popular ARM microcontrollers, as well as suspend/resume tests. As far as we can tell, a whole host of hard-to-reproduce issues are mitigated by this change.

Deprecation Notices

In line with the notice period, deprecation notices for larger items are listed here.

Migration of VIA keymaps to VIA team control

The QMK team has been in discussion with the VIA maintainers and all VIA-related keymaps in the qmk_firmware repository will transition to a qmk_userspace-style repository under the VIA team's control at the end of the next breaking changes period. This allows the VIA team to support many more custom keyboard configurations, as well as reduces the turnaround time for any changes to the VIA protocol they wish to make.

At the end of the breaking changes cycle ending 2024-08-25, VIA-enabled keymaps will no longer be accepted into the QMK repository. At the time of migration, any open PRs against qmk_firmware which include new VIA-related keymaps will be subsequently be asked to remove those keymaps and instead raise a PR against the userspace repository containing all VIA keymaps.

Full changelist

Core:

  • Refactor vusb to protocol use pre/post task (#14944)
  • Refactor ChibiOS USB endpoints to be fully async (#21656)
  • Infer eeconfig identifiers (#22135)
  • [Audio] Add support for audio shutdown pin (#22731)
  • Enable 'keyboard.json' as a build target (#22891)
  • Remove unuseful layer_on() call (#23055)
  • Add init function to RGBLight driver struct (#23076)
  • Add utility functions for Pointing Device Auto Mouse feature (#23144)
  • Remove midi_ep_task from ChibiOS (#23162)
  • LED drivers: add support for IS31FL3236 (#23264)
  • Un-extern RGBLight led[] array (#23322)
  • Update I2C API usage in keyboard code (#23360)
  • Update GPIO expander API naming (#23375)
  • Remove deprecated quantum keycodes (#23407)
  • Add MacOS Czech ISO and ANSI keymaps #23346 (#23412)
  • Rename process_{led,rgb}_matrix() (#23422)
  • Separate keycode handling for LED Matrix and Backlight (#23426)
  • Add new set of keycodes for LED Matrix (#23432)
  • Oneshot locked mods split transaction (#23434)
  • Bodge consolidation. (#23448)
  • LED Matrix: replace backlight keycodes with newly added ones (#23455)
  • Add new set of keycodes for RGB Matrix (#23463)
  • Refactoring successive press() release() calls into tap_key() calls (#23573)
  • Rename RGBW define to WS2812_RGBW (#23585)
  • Normalise RGBLight (underglow) keycodes (#23656)
  • split_util: rename usbIsActive to usb_bus_detected (#23657)
  • Insert delay between shifted chars in send_string_with_delay for AVR (#23673)
  • Remove useless LED/RGB_MATRIX_ENABLE ifdefs (#23726)

CLI:

  • Some metadata on QGF/QFF files (#20101)
  • qmk new-keyboard - detach community layout when selecting "none of the above" (#20405)
  • Initial qmk test-c functionality (#23038)
  • Reject duplicate matrix locations in LAYOUT macros (#23273)
  • Align 'qmk lint' argument handling (#23297)
  • Produce warning if keyboard is not configured via keyboard.json (#23321)

Submodule updates:

  • Update ChibiOS submodules. (#23405)

Keyboards:

  • Move SPLIT_KEYBOARD to data driven (#21410)
  • Change to development_board (#21695)
  • Add solid_reactive effects for MIIIW BlackIO83 (#22251)
  • Migrate content where only parent info.json exists (#22895)
  • Remove redundant disabling of features (#22926)
  • Update ScottoAlp handwired keyboard to 12 column layout (#22962)
  • Overhaul ploopyco devices (#22967)
  • Add rp2040_ce option to lotus58 (#23185)
  • Migrate features from rules.mk to data driven - 0-9 (#23202)
  • Change default RGB effect for momokai keypads to solid white (#23217)
  • Migrate annepro2 away from custom matrix (#23221)
  • Update BAMFK-1 (#23236)
  • Migrate features from rules.mk to data driven - ABCD (#23247)
  • Migrate features from rules.mk to data driven - EFGH (#23248)
  • Remove 60_ansi_arrow_split_bs_7u_spc Community Layout (#23259)
  • Migrate features from rules.mk to data driven - IJK (#23276)
  • Migrate features from rules.mk to data driven - LMN (#23277)
  • Migrate features from rules.mk to data driven - OPQR (#23285)
  • Migrate features from rules.mk to data driven - ST (#23286)
  • Migrate features from rules.mk to data driven - UVWXYZ (#23287)
  • Swift65 Hotswap Layout Name Standardization (#23288)
  • Swift65 Solder Layout Name Standardization (#23289)
  • Migrate build target markers to keyboard.json (#23293)
  • KPRepublic JJ50 rev1 Refactor (#23294)
  • KPRepublic JJ40 rev1 Refactor (#23299)
  • Migrate features and LTO from rules.mk to data driven (#23302)
  • Add RGB lighting for the PetruziaMini (#23305)
  • Migrate features and LTO from rules.mk to data driven (#23307)
  • MechKeys ACR60 Layout Updates (#23309)
  • Remove RGBLight led[] references (#23311)
  • Reduce firmware size of helix/rev3 (#23324)
  • P3D Spacey Layout Updates (#23329)
  • Data-Driven Keyboard Conversions: 0-9 (#23357)
  • Update GPIO API usage in keyboard code (#23361)
  • Remove "w": 1 from keyboards/ (#23367)
  • Remove quantum.h includes from keyboard custom matrix.cs (#23371)
  • refactor: mechwild/bbs (#23373)
  • Remove 'NO_USB_STARTUP_CHECK = no' from keyboards (#23376)
  • Remove completely redundant DEFAULT_FOLDER from keyboards (#23377)
  • Miscellaneous keyboard.json migrations (#23378)
  • Data-Driven Keyboard Conversions: A (#23379)
  • refactor: flehrad/bigswitch (#23384)
  • add second encoder to matrix info of arrowmechanics/wings (#23390)
  • Change the VID and PID of the file kb38 info.json (#23393)
  • Remove quantum.h includes from keyboard code (#23394)
  • [ UPDATE 15PAD & 6PAD ] (#23397)
  • Remove more unnecessary quantum.h includes (#23402)
  • KB name change to Part.1-75-HS (#23403)
  • Tidy up keyboards/zvecr (#23418)
  • "features.split" is not a valid key (#23419)
  • Migrate build target markers to keyboard.json - YZ (#23421)
  • refactor: mechwild/waka60 (#23423)
  • Convert some AVR GPIO operations to macros (#23424)
  • Data-Driven Keyboard Conversions: B (#23425)
  • Tidy up default layer handling in keymaps (#23436)
  • Added Chapter1 (#23452)
  • Data-driven Keyboard Conversions: C (#23453)
  • Migrate build target markers to keyboard.json - X (#23460)
  • Data-Driven Keyboard Conversions: D (#23461)
  • Miscellaneous keyboard.json migrations (#23486)
  • Migrate build target markers to keyboard.json - 0AB (#23488)
  • Migrate build target markers to keyboard.json - W (#23511)
  • Data-Driven Keyboard Conversions: E (#23512)
  • Migrate build target markers to keyboard.json - TUV (#23514)
  • Migrate build target markers to keyboard.json - DE (#23515)
  • Data-Driven Keyboard Conversions: F (#23516)
  • Data-Driven Keyboard Conversions: G (#23522)
  • Data-Driven Keyboard Conversions: H, Part 1 (#23524)
  • Data-Driven Keyboard Conversions: H, Part 2 (#23525)
  • Migrate build target markers to keyboard.json - C (#23529)
  • Data-Driven Keyboard Conversions: H, Part 3 (#23530)
  • Migrate build target markers to keyboard.json - S (#23532)
  • Data-Driven Keyboard Conversions: I (#23533)
  • Migrate build target markers to keyboard.json - FG (#23534)
  • Migrate build target markers to keyboard.json - HI (#23540)
  • Remove *_SUPPORTED = yes (#23541)
  • Migrate build target markers to keyboard.json - R (#23542)
  • Data-Driven Keyboard Conversions: J (#23547)
  • Data-Driven Keyboard Conversions: K, Part 1 (#23556)
  • Tidy use of raw hid within keyboards (#23557)
  • Data-Driven Keyboard Conversions: K, Part 2 (#23562)
  • Migrate build target markers to keyboard.json - OQ (#23564)
  • Migrate build target markers to keyboard.json - P (#23565)
  • Data-Driven Keyboard Conversions: K, Part 3 (#23566)
  • Data-Driven Keyboard Conversions: K, Part 4 (#23567)
  • Data-Driven Keyboard Conversions: K, Part 5 (#23569)
  • Data-Driven Keyboard Conversions: L (#23576)
  • Migrate build target markers to keyboard.json - JK (#23588)
  • Migrate build target markers to keyboard.json - N (#23589)
  • Data-Driven Keyboard Conversions: M, Part 1 (#23590)
  • Add haptic driver to keyboard.json schema (#23591)
  • Migrate build target markers to keyboard.json - Keychron (#23593)
  • Remove RGBLIGHT_SPLIT in rules.mk (#23599)
  • Data-Driven Keyboard Conversions: M, Part 2 (#23601)
  • Align NO_SUSPEND_POWER_DOWN keyboard config (#23606)
  • Migrate build target markers to keyboard.json - L (#23607)
  • Migrate build target markers to keyboard.json - Misc (#23609)
  • Migrate build target markers to keyboard.json - Misc (#23612)
  • Data-Driven Keyboard Conversions: M, Part 3 (#23614)
  • Add audio driver to keyboard.json schema (#23616)
  • Data-Driven Keyboard Conversions: BastardKB (#23622)
  • Data-Driven Keyboard Conversions: Mechlovin (#23624)
  • Migrate build target markers to keyboard.json - BM (#23627)
  • gh80_3000 - Enable indicator LED functionality (#23633)
  • Iris keymap update (#23635)
  • Migrate build target markers to keyboard.json - Misc (#23653)
  • Add via support for craftwalk (#23658)
  • Align RGBKB keyboards to current standards (#23663)
  • Remove 'split.transport.protocol=serial_usart' (#23668)
  • Remove redundant keymap templates (#23685)
  • Change all RGB mode keycodes to short aliases (#23691)
  • Adjust keycode alignment around QK_BOOT (#23697)
  • Remove RGB keycodes from boards with no RGB config (#23709)
  • Miscellaneous Data-Driven Keyboard Conversions (#23712)
  • Delete trivial keymap readmes (#23714)
  • Migrate LOCKING_*_ENABLE to Data-Driven: 0-9 (#23716)
  • Add media key support to Riot Pad (#23719)
  • Migrate LOCKING_*_ENABLE to Data-Driven: A-C, Part 1 (#23745)
  • Migrate LOCKING_*_ENABLE to Data-Driven: A-C, Part 2 (#23746)
  • Migrate LOCKING_*_ENABLE to Data-Driven: A-C, Part 3 (#23747)
  • Migrate LOCKING_*_ENABLE to Data-Driven: D, Part 1 (#23749)
  • Migrate LOCKING_*_ENABLE to Data-Driven: D, Part 2 (#23750)
  • Migrate LOCKING_*_ENABLE to Data-Driven: E (#23751)
  • Move VIA config to keymap level (#23754)
  • Migrate LOCKING_*_ENABLE to Data-Driven: F (#23757)
  • Migrate LOCKING_*_ENABLE to Data-Driven: G (#23758)
  • Migrate LOCKING_*_ENABLE to Data-Driven: H, Part 1 (#23759)
  • Remove includes of config.h (#23760)
  • Migrate LOCKING_*_ENABLE to Data-Driven: H, Part 2 (#23762)
  • Migrate LOCKING_*_ENABLE to Data-Driven: H, Part 3 (#23763)
  • Migrate LOCKING_*_ENABLE to Data-Driven: H, Part 4 (#23764)
  • Migrate LOCKING_*_ENABLE to Data-Driven: I-J (#23767)
  • Migrate LOCKING_*_ENABLE to Data-Driven: K, Part 1 (#23768)
  • Migrate LOCKING_*_ENABLE to Data-Driven: K, Part 2 (#23769)
  • Migrate LOCKING_*_ENABLE to Data-Driven: K, Part 3 (#23770)
  • Migrate LOCKING_*_ENABLE to Data-Driven: L (#23771)
  • Migrate LOCKING_*_ENABLE to Data-Driven: M, Part 1 (#23772)
  • Migrate LOCKING_*_ENABLE to Data-Driven: M, Part 2 (#23773)
  • Migrate LOCKING_*_ENABLE to Data-Driven: N (#23774)
  • Migrate LOCKING_*_ENABLE to Data-Driven: O (#23778)
  • Migrate LOCKING_*_ENABLE to Data-Driven: P, Part 1 (#23779)
  • Migrate LOCKING_*_ENABLE to Data-Driven: P, Part 2 (#23780)
  • Migrate LOCKING_*_ENABLE to Data-Driven: Q-R (#23781)
  • Migrate LOCKING_*_ENABLE to Data-Driven: S, Part 1 (#23783)
  • Migrate LOCKING_*_ENABLE to Data-Driven: S, Part 2 (#23784)
  • Migrate LOCKING_*_ENABLE to Data-Driven: T (#23785)
  • Migrate LOCKING_*_ENABLE to Data-Driven: U-V (#23786)
  • Remove some useless code from keymaps (#23787)
  • Migrate LOCKING_*_ENABLE to Data-Driven: W, Part 1 (#23788)
  • Migrate LOCKING_*_ENABLE to Data-Driven: W, Part 2 (#23789)
  • Migrate LOCKING_*_ENABLE to Data-Driven: X-Z (#23790)
  • Update GPIO macros in keymaps (#23792)
  • noroadsleft's 0.25.0 Changelogs and Touch-Ups (#23793)

Keyboard fixes:

  • Fix mapping of GUI/ALT for Win/Mac layers (#22662)
  • Adding standard keymap for wave keyboard to fix #22695 (#22741)
  • Fixup qk100 (firmware size) (#23169)
  • Fixup mechlovin/octagon (#23179)
  • Fix up scanning for Djinn, post-asyncUSB. (#23188)
  • Fixup annepro2 (#23206)
  • Fixed keychron q1v1 led config for iso layout (#23222)
  • Fixes for idobao vendor keymaps (#23246)
  • Fixup work_board (#23266)
  • Linworks FAve 87H Keymap Refactor/Bugfix (#23292)
  • Align encoder layout validation with encoder.h logic (#23330)
  • 0xcb/splaytoraid: remove CONVERT_TO at keyboard level (#23395)
  • 40percentclub/gherkin: remove CONVERT_TO at keyboard level (#23396)
  • Fix spaceholdings/nebula68b (#23399)
  • Fix failing keyboards on develop (#23406)
  • Corrections to split keyboard migrations (#23462)
  • Fix iris via keymap (#23652)
  • xiudi/xd75 - Fix backlight compilation issues (#23655)

Bugs:

  • WS2812 PWM: prefix for DMA defines (#23111)
  • Fix rgblight init (#23335)
  • Fix WAIT_FOR_USB handling (#23598)
  • Fix PS/2 Trackpoint mouse clicks (#22265) (#23694)
- + \ No newline at end of file diff --git a/ChangeLog/20240825.html b/ChangeLog/20240825.html index bed6c3fefcb..0891d8dec01 100644 --- a/ChangeLog/20240825.html +++ b/ChangeLog/20240825.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -25,7 +25,7 @@ &my_override_1, &my_override_2, };

ADNS9800 and PMW33xx firmware upload now opt-in (#24001)

Due to ambiguity with licensing compatibility, QMK has made the firmware ROM uploads for the ADNS9800 and PMW33xx lines of pointing device sensors temporarily opt-in with the view to removing them. Historically they were included by default, but as of this PR this is now no longer the case.

Please get in touch with the QMK team if your sensor no longer functions without the firmware upload -- so far we've tested each device type and they still seem to function without a new firmware, but this has not been a 100% exhaustive validation.

To re-enable firmware upload for your own builds, add the following to your keymap's config.h:

SensorDefine
ADNS9800#define ADNS9800_UPLOAD_SROM
PMW33xx#define PMW33XX_UPLOAD_SROM

Note

If no issues arise during this current breaking changes cycle, these sensor firmware ROMs will be removed from QMK entirely.

Deprecation Notices

In line with the notice period, deprecation notices for larger items are listed here.

Migration of VIA keymaps to VIA team control

Last breaking changes cycle, the QMK team informed that via keymaps are moving to the control of the VIA team. As of this merge, any via-enabled keymaps should now be PR'ed to the VIA QMK Userspace repository.

Any existing or newly-opened PRs against qmk_firmware will now be asked to remove any via-enabled keymaps from their submissions.

ADNS9800 and PMW33xx sensor firmware ROM removal

As mentioned above, there's license compatibility issues between QMK and the firmware blobs historically uploaded for the ADNS9800 and PMW33xx sensors. This notice is to inform users that these firmware blobs will almost certainly be removed from QMK in the next breaking changes merge.

As previously noted this does not seem to have any detrimental effect to any of those devices, as they seem to include firmware on-chip without requiring one to be uploaded. Please get in touch with the QMK team on Discord if your sensor is no longer functional.

Full changelist

Core:

CLI:

Keyboards:

Keyboard fixes:

Others:

Bugs:

- + \ No newline at end of file diff --git a/__capabilities.html b/__capabilities.html index 90b3e300cac..c877d49b394 100644 --- a/__capabilities.html +++ b/__capabilities.html @@ -8,12 +8,12 @@ - + - - + + - + @@ -41,7 +41,7 @@ The letters lined up #define RGBLIGHT_LED_COUNT 12 #define RGBLIGHT_HUE_STEP 8 #define RGBLIGHT_SAT_STEP 8

Indented code as part of a list:

Sub/Superscript

This is subscripted, apparently.

This is superscripted, apparently.

I2C

T0H, T0L

Tabs

Tabs are based on section headers, with ** enclosing the tab title.

** Tab one **

Content one

** Nested one **

Nested content one

** Nested two **

Nested content two

** Tab two **

Content two

** Tab three **

Content three

a content 2

Details sections

Expandable:

Some summary text that shows up before expanding

!> Embedded notification!

This is some inner content.

Embed

example embed

Lorem ipsum dolor sit amet.

- + \ No newline at end of file diff --git a/__capabilities_inc.html b/__capabilities_inc.html index 24a9f8b447d..03b5d49ac86 100644 --- a/__capabilities_inc.html +++ b/__capabilities_inc.html @@ -8,17 +8,17 @@ - + - - - + + +
Skip to content

Lorem ipsum dolor sit amet.

- + \ No newline at end of file diff --git a/api_development_environment.html b/api_development_environment.html index 2b8cda771ab..0ee0fc84a11 100644 --- a/api_development_environment.html +++ b/api_development_environment.html @@ -8,17 +8,17 @@ - + - - - + + +
Skip to content

Development Environment Setup

To setup a development stack head over to the qmk_web_stack.

- + \ No newline at end of file diff --git a/api_development_overview.html b/api_development_overview.html index 10de928aa74..0742f163da7 100644 --- a/api_development_overview.html +++ b/api_development_overview.html @@ -8,17 +8,17 @@ - + - - - + + +
Skip to content

QMK Compiler Development Guide

This page attempts to introduce developers to the QMK Compiler. It does not go into nitty gritty details- for that you should read code. What this will give you is a framework to hang your understanding on as you read the code.

Overview

The QMK Compile API consists of a few movings parts:

Architecture Diagram

API Clients interact exclusively with the API service. This is where they submit jobs, check status, and download results. The API service inserts compile jobs into Redis Queue and checks both RQ and S3 for the results of those jobs.

Workers fetch new compile jobs from RQ, compile them, and then upload the source and the binary to an S3 compatible storage engine.

Workers

QMK Compiler Workers are responsible for doing the actual building. When a worker pulls a job from RQ it does several things to complete that job:

  • Make a fresh qmk_firmware checkout
  • Use the supplied layers and keyboard metadata to build a keymap.c
  • Build the firmware
  • Zip a copy of the source
  • Upload the firmware, source zip, and a metadata file to S3.
  • Report the status of the job to RQ

API Service

The API service is a relatively simple Flask application. There are a few main views you should understand.

@app.route('/v1/compile', methods=['POST'])

This is the main entrypoint for the API. A client's interaction starts here. The client POST's a JSON document describing their keyboard, and the API does some (very) basic validation of that JSON before submitting the compile job.

@app.route('/v1/compile/<string:job_id>', methods=['GET'])

This is the most frequently called endpoint. It pulls the job details from redis, if they're still available, or the cached job details on S3 if they're not.

@app.route('/v1/compile/<string:job_id>/download', methods=['GET'])

This method allows users to download the compiled firmware file.

@app.route('/v1/compile/<string:job_id>/source', methods=['GET'])

This method allows users to download the source for their firmware.

- + \ No newline at end of file diff --git a/api_docs.html b/api_docs.html index 291a9ac575c..78ddbc6733c 100644 --- a/api_docs.html +++ b/api_docs.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -53,7 +53,7 @@ "0x2000/0x1FFF": { "define": "QK_MOD_TAP" <snip> - + \ No newline at end of file diff --git a/api_overview.html b/api_overview.html index 741396c239d..479e211ca1b 100644 --- a/api_overview.html +++ b/api_overview.html @@ -8,17 +8,17 @@ - + - - - + + +
Skip to content

QMK API

The QMK API provides an asynchronous API that Web and GUI tools can use to compile arbitrary keymaps for any keyboard supported by QMK. The stock keymap template supports all QMK keycodes that do not require supporting C code. Keyboard maintainers can supply their own custom templates to enable more functionality.

App Developers

If you are an app developer interested in using this API in your application you should head over to Using The API.

Keyboard Maintainers

If you would like to enhance your keyboard's support in the QMK Compiler API head over to the Keyboard Support section.

Backend Developers

If you are interested in working on the API itself you should start by setting up a Development Environment, then check out Hacking On The API.

- + \ No newline at end of file diff --git a/arm_debugging.html b/arm_debugging.html index 47d577bb607..ec8c7759c82 100644 --- a/arm_debugging.html +++ b/arm_debugging.html @@ -8,17 +8,17 @@ - + - - - + + +
Skip to content

ARM Debugging using Eclipse

This page describes how to setup debugging for ARM MCUs using an SWD adapter and open-source/free tools. In this guide we will install GNU MCU Eclipse IDE for C/C++ Developers and OpenOCD together with all the necessary dependencies.

This guide is catered towards advance users and assumes you can compile an ARM compatible keyboard on your machine using the MAKE flow.

Installing the software

The main objective here is to get the MCU Eclipse IDE correctly installed on our machine. The necessary instructions are derived from this install guide.

The xPack Manager

This tool is a software package manager and it is used to help us get the necessary dependencies.

XPM runs using Node.js so grab that from here. After installation, open a terminal and type npm -v. A reply with the version number means that the installation was successful.

XPM installation instructions can be found here and are OS specific. Entering xpm --version to your terminal should return the software version.

The ARM Toolchain

Using XPM it is very easy to install the ARM toolchain. Enter the command xpm install --global @xpack-dev-tools/arm-none-eabi-gcc.

Windows build tools

If you are using windows you need to install this!

xpm install --global @gnu-mcu-eclipse/windows-build-tools

Programmer/Debugger Drivers

Now it's time to install your programmer's drivers. This tutorial was made using an ST-Link v2 which you can get from almost anywhere. If you have an ST-Link the drivers can be found here otherwise consult the manufacturer of your tool.

OpenOCD

This dependency allows SWD access from GDB and it is essential for debugging. Run xpm install --global @xpack-dev-tools/openocd.

Java

Java is needed by Eclipse so please download it from here.

GNU MCU Eclipse IDE

Now its finally time to install the IDE. Use the Release page here to get the latest version.

Configuring Eclipse

Open up the Eclipse IDE we just downloaded. To import our QMK directory select File -> Import -> C/C++ -> Existing Code as Makefile Project. Select Next and use Browse to select your QMK folder. In the tool-chain list select ARM Cross GCC and select Finish.

Now you can see the QMK folder on the left hand side. Right click it and select Properties. On the left hand side, expand MCU and select ARM Toolchains Paths. Press xPack and OK. Repeat for OpenOCD Path and if you are on Windows for Build Tools Path. Select Apply and Close.

Now its time to install the necessary MCU packages. Go to Packs perspective by selecting Window -> Perspective -> Open Perspective -> Other... -> Packs. Now select the yellow refresh symbol next to the Packs tab. This will take a long time as it is requesting the MCU definitions from various places. If some of the links fail you can probably select Ignore.

When this finishes you must find the MCU which we will be building/debugging for. In this example I will be using the STM32F3 series MCUs. On the left, select STMicroelectronics -> STM32F3 Series. On the middle window we can see the pack. Right click and select Install. Once that is done we can go back to the default perspective, Window -> Perspective -> Open Perspective -> Other... -> C/C++.

We need to let eclipse know the device we intent to build QMK on. Right click on the QMK folder -> Properties -> C/C++ Build -> Settings. Select the Devices tab and under Devices select the appropriate variant of your MCU. For my example it is STM32F303CC

While we are here let's setup the build command as well. Select C/C++ Build and then the Behavior tab. On the Build command, replace all with your necessary make command. For example for a rev6 Planck with the default keymap this would be planck/rev6:default. Select Apply and Close.

Building

If you have setup everything correctly pressing the hammer button should build the firmware for you and a .bin file should appear.

Debugging

Connecting the Debugger

ARM MCUs use the Single Wire Debug (SWD) protocol which comprises of the clock (SWCLK) signal and the data (SWDIO) signal. Connecting this two wires and ground should be enough to allow full manipulation of the MCU. Here we assume that the keyboard will be powered though USB. The RESET signal is not necessary as we can manually assert it using the reset button. For a more advance setup, the SWO signal can be used which pipes printf and scanf asynchronously to the host but for our setup we will ignore it.

NOTE: Make sure the SWCLK and SWDIO pins are not used in the matrix of your keyboard. If they are you can temporarily switch them for some other pins.

Configuring the Debugger

Right click on your QMK folder, select Debug As -> Debug Configurations... . Here double click on GDB OpenOCD Debugging. Select the Debugger tab and enter the configuration necessary for your MCU. This might take some fiddling and Googling to find out. The default script for the STM32F3 is called stm32f3discovery.cfg. To let OpenOCD know, in the Config options enter -f board/stm32f3discovery.cfg.

NOTE: In my case this configuration script requires editing to disable the reset assertion. The locations of the scripts can be found in the actual executable field usually under the path openocd/version/.content/scripts/board. Here I edited reset_config srst_only to reset_config none.

Select Apply and Close.

Running the Debugger.

Reset your keyboard.

Press the bug icon and if all goes well you should soon find yourself in the Debug perspective. Here the program counter will pause at the beginning of the main function and wait for you to press Play. Most of the features of all debuggers work on Arm MCUs but for exact details Google is your friend!

Happy debugging!

- + \ No newline at end of file diff --git a/assets/ChangeLog_20190830.md.Drtq3lMy.js b/assets/ChangeLog_20190830.md.Bivr4BOW.js similarity index 99% rename from assets/ChangeLog_20190830.md.Drtq3lMy.js rename to assets/ChangeLog_20190830.md.Bivr4BOW.js index f15eebce5da..9d9e2e80109 100644 --- a/assets/ChangeLog_20190830.md.Drtq3lMy.js +++ b/assets/ChangeLog_20190830.md.Bivr4BOW.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Change - 2019 Aug 30","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20190830.md","filePath":"ChangeLog/20190830.md"}'); const _sfc_main = { name: "ChangeLog/20190830.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Breaking Change - 2019 Aug 30

Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.

This document marks the inaugural Breaking Change merge. A list of changes follows.

Core code formatting with clang-format

LUFA USB descriptor cleanup

Migrating ACTION_LAYER_MOMENTARY() entries in fn_actions to MO() keycodes

Update Atreus to current code conventions

Backport changes to keymap language files from ZSA fork

Update repo to use LUFA as a git submodule

Migrating ACTION_BACKLIGHT_*() entries in fn_actions to BL_ keycodes

Remove KC_DELT alias in favor of KC_DEL

', 19); diff --git a/assets/ChangeLog_20190830.md.Drtq3lMy.lean.js b/assets/ChangeLog_20190830.md.Bivr4BOW.lean.js similarity index 91% rename from assets/ChangeLog_20190830.md.Drtq3lMy.lean.js rename to assets/ChangeLog_20190830.md.Bivr4BOW.lean.js index a7c2cf52dcf..0b81ec8ef55 100644 --- a/assets/ChangeLog_20190830.md.Drtq3lMy.lean.js +++ b/assets/ChangeLog_20190830.md.Bivr4BOW.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Change - 2019 Aug 30","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20190830.md","filePath":"ChangeLog/20190830.md"}'); const _sfc_main = { name: "ChangeLog/20190830.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 19); diff --git a/assets/ChangeLog_20200229.md.DNsowwM1.js b/assets/ChangeLog_20200229.md.BlwjdGdl.js similarity index 99% rename from assets/ChangeLog_20200229.md.DNsowwM1.js rename to assets/ChangeLog_20200229.md.BlwjdGdl.js index 9ed311ea16e..6aac03222b5 100644 --- a/assets/ChangeLog_20200229.md.DNsowwM1.js +++ b/assets/ChangeLog_20200229.md.BlwjdGdl.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Change - 2020 Feb 29 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20200229.md","filePath":"ChangeLog/20200229.md"}'); const _sfc_main = { name: "ChangeLog/20200229.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Breaking Change - 2020 Feb 29 Changelog

Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.

Update ChibiOS/ChibiOS-Contrib/uGFX submodules

Fix ChibiOS timer overflow for 16-bit SysTick devices

Update LUFA submodule

Encoder flip

Adding support for BACKLIGHT_ON_STATE for hardware PWM backlight

Migrating ACTION_LAYER_TAP_KEY() entries in fn_actions to LT() keycodes

Moving backlight keycode handling to process_keycode/

Refactor Planck keymaps to use Layout Macros

GON NerD codebase refactor

', 20); diff --git a/assets/ChangeLog_20200229.md.DNsowwM1.lean.js b/assets/ChangeLog_20200229.md.BlwjdGdl.lean.js similarity index 91% rename from assets/ChangeLog_20200229.md.DNsowwM1.lean.js rename to assets/ChangeLog_20200229.md.BlwjdGdl.lean.js index b2e46fd0895..6541981c6f3 100644 --- a/assets/ChangeLog_20200229.md.DNsowwM1.lean.js +++ b/assets/ChangeLog_20200229.md.BlwjdGdl.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Change - 2020 Feb 29 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20200229.md","filePath":"ChangeLog/20200229.md"}'); const _sfc_main = { name: "ChangeLog/20200229.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 20); diff --git a/assets/ChangeLog_20200530.md.Dk-vRpTQ.js b/assets/ChangeLog_20200530.md.JEJG56LT.js similarity index 99% rename from assets/ChangeLog_20200530.md.Dk-vRpTQ.js rename to assets/ChangeLog_20200530.md.JEJG56LT.js index 0fa740983a6..4de48835582 100644 --- a/assets/ChangeLog_20200530.md.Dk-vRpTQ.js +++ b/assets/ChangeLog_20200530.md.JEJG56LT.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Change - 2020 May 30 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20200530.md","filePath":"ChangeLog/20200530.md"}'); const _sfc_main = { name: "ChangeLog/20200530.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Breaking Change - 2020 May 30 Changelog

Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.

The list of changes follows.

Core Changes

Converting V-USB usbdrv to a submodule

#8321 and qmk_compiler#62.

These PRs move the V-USB driver code out of the qmk_firmware repository and into a submodule pointed at https://github.com/obdev/v-usb. This will make it easier to update the codebase if needed, while applying any potential QMK-specific modifications by forking it to the QMK GitHub organization.

Unify Tap Hold functions and documentation

#8348

Updates all of the per key tap-hold functions to pass the keyrecord_t structure, and include documentation changes.

Any remaining versions or code outside of the main repo will need to be converted:

Old functionNew Function
uint16_t get_tapping_term(uint16_t keycode)uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record)
bool get_ignore_mod_tap_interrupt(uint16_t keycode)bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record)

Python Required In The Build Process

#9000

This is the last release of QMK that will work without having Python 3.6 (or later) installed. If your environment is not fully setup you will get a warning instructing you to set it up.

After the next breaking change you will not be able to build if bin/qmk hello does not work.

Upgrade from tinyprintf to mpaland/printf

#8269

Fixed RGB_DISABLE_AFTER_TIMEOUT to be seconds based & small internals cleanup

#6480

The RGB_DISABLE_AFTER_TIMEOUT definition is now deprecated, and has been superseded by RGB_DISABLE_TIMEOUT. To use the new definition, rename RGB_DISABLE_AFTER_TIMEOUT to RGB_DISABLE_TIMEOUT in your config.h file, and multiply the value set by 1200.

Before: #define RGB_DISABLE_AFTER_TIMEOUT 100
After: #define RGB_DISABLE_TIMEOUT 120000

Switch to qmk forks for everything

#9019

Fork all QMK submodules to protect against upstream repositories disappearing.

code cleanup regarding deprecated macro PLAY_NOTE_ARRAY by replacing it with PLAY_SONG

#8484

Removes the deprecated PLAY_NOTE_ARRAY macro. References to it are replaced with PLAY_SONG, which references the same function.

fixing wrong configuration of AUDIO feature

#8903 and #8974

audio_avr.c does not default to any pin; there has to be a #define XX_AUDIO in config.h at some level for Audio to actually work. Otherwise, the Audio code ends up cluttering the firmware, possibly breaking builds because the maximum allowed firmware size is exceeded.

These changes fix this by disabling Audio on keyboards that have the feature misconfigured, and therefore non-functional.

Also, add a compile-time error to alert the user to a missing pin-configuration (on AVR boards) when AUDIO_ENABLE = yes is set.

Keyboard Refactors

Migrating Lily58 to use split_common

#6260

Modifies the default firmware for Lily58 to use the split_common library, instead of including and depending on its own set of libraries for the following functionality:

This allows current lily58 firmware to advance with updates to the split_common library, which is shared with many other split keyboards.

To migrate existing Lily58 firmware:

Changes to config.h:

Changes to keymap.c:

c
#ifdef SSD1306OLED	\n  iota_gfx_init(!has_usb());   // turns on the display	\n#endif
c
oled_rotation_t oled_init_user(oled_rotation_t rotation) {\n  if (!is_keyboard_master())\n    return OLED_ROTATION_180;  // flips the display 180 degrees if offhand\n  return rotation;\n}

Refactor zinc to use split_common

#7114 and #9171

Refactor of TKC1800 to use common OLED code

#8472

Modifies the default firmware for TKC1800 to use the in-built I2C and OLED drivers, instead of including and depending on its own set of libraries for the following functionality:

This allows current TKC1800 firmware to advance with updates to those drivers, which are shared with other keyboards.

To migrate existing TKC1800 firmware:

Changes to config.h:

Changes to tkc1800.c:

c
void keyboard_pre_init_kb(void) {\n  setPinInputHigh(D0);\n  setPinInputHigh(D1);\n\n  keyboard_pre_init_user();\n}

Changes to keymap.c:

c
#ifdef SSD1306OLED	\n  iota_gfx_init(!has_usb());   // turns on the display	\n#endif
c
oled_rotation_t oled_init_user(oled_rotation_t rotation) {\n  if (!is_keyboard_master())\n    return OLED_ROTATION_180;  // flips the display 180 degrees if offhand\n  return rotation;\n}

Split HHKB to ANSI and JP layouts and Add VIA support for each

#8582

Migrating existing HHKB keymaps

Keyboard Moves

Keyboards by Keyboardio, Spaceman, and hsgw move to vendor folders, while PCBs designed by blindassassin111 are renamed.

Old NameNew Name
2_milkspaceman/2_milk
at101_blackheartat101_bh
ergoinudm9records/ergoinu
model01keyboardio/model01
omnikey_blackheartomnikey_bh
pancakespaceman/pancake
plaiddm9records/plaid
tartandm9records/tartan
z150_blackheartz150_bh

If you own one of these PCBs, please use the new names to compile your firmware moving forward.

Keycode Migration PRs

#8954, #8957, #8958, #8959, #8968, #8977, and #8979

Authored by fauxpark, these pull requests remove references to deprecated TMK macros that have been superseded by native QMK keycodes.

Old fn_actions actionNew QMK keycode
ACTION_DEFAULT_LAYER_SET(layer)DF(layer)
ACTION_LAYER_MODS(layer, mod)LM(layer, mod)
ACTION_LAYER_ONESHOT(mod)OSL(mod)
ACTION_LAYER_TOGGLE(layer)TG(layer)
ACTION_MODS_ONESHOT(mod)OSM(mod)
ACTION_MODS_TAP_KEY(mod, kc)MT(mod, kc)
ACTION_MODS_KEY(mod, kc)
e.g. ACTION_MODS_KEY(MOD_LCTL, KC_0)
MOD(kc)
e.g. LCTL(KC_0)
', 84); diff --git a/assets/ChangeLog_20200530.md.Dk-vRpTQ.lean.js b/assets/ChangeLog_20200530.md.JEJG56LT.lean.js similarity index 91% rename from assets/ChangeLog_20200530.md.Dk-vRpTQ.lean.js rename to assets/ChangeLog_20200530.md.JEJG56LT.lean.js index fb7f0d59271..4c5f11e6d6d 100644 --- a/assets/ChangeLog_20200530.md.Dk-vRpTQ.lean.js +++ b/assets/ChangeLog_20200530.md.JEJG56LT.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Change - 2020 May 30 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20200530.md","filePath":"ChangeLog/20200530.md"}'); const _sfc_main = { name: "ChangeLog/20200530.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 84); diff --git a/assets/ChangeLog_20200829.md.CoqrOffn.js b/assets/ChangeLog_20200829.md.Dkrt3arz.js similarity index 99% rename from assets/ChangeLog_20200829.md.CoqrOffn.js rename to assets/ChangeLog_20200829.md.Dkrt3arz.js index 1910930baf0..a3fc10de378 100644 --- a/assets/ChangeLog_20200829.md.CoqrOffn.js +++ b/assets/ChangeLog_20200829.md.Dkrt3arz.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Change - 2020 Aug 29 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20200829.md","filePath":"ChangeLog/20200829.md"}'); const _sfc_main = { name: "ChangeLog/20200829.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Breaking Change - 2020 Aug 29 Changelog

Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.

Changes Requiring User Action

Relocated Keyboards

The Key Company project consolidation (#9547)

relocating boards by flehrad to flehrad/ folder (#9635)

Keyboards released by The Key Company and keyboards designed by flehrad have moved to vendor folders. If you own any of the keyboards listed below, please use the new names to compile your firmware moving forward.

Old NameNew Name
candybar/leftytkc/candybar/lefty
candybar/rightytkc/candybar/righty
m0llytkc/m0lly
tkc1800tkc/tkc1800
bigswitchflehrad/bigswitch
handwired/downbubbleflehrad/downbubble
handwired/numbreroflehrad/numbrero
snagpadflehrad/snagpad
handwired/tradestationflehrad/tradestation

Updated Keyboard Codebases

Keebio RGB wiring update (#7754)

This pull request changes the configuration for Keebio split boards to use the same RGB strip wiring for each half, which provides the following improvements:

If you have customized the value of RGBLED_SPLIT for your keymap, you will need to undefine it using #undef RGBLED_SPLIT before defining it to your customized value.

This change affects:

Changes to Core Functionality

Allows the Combo feature to support more than 256 combos.

Any fork that uses process_combo_event needs to update the function's first argument to uint16_t:

Core Changes

Fixes

Additions and Enhancements

Clean-ups and Optimizations

QMK Infrastructure and Internals

', 29); diff --git a/assets/ChangeLog_20200829.md.CoqrOffn.lean.js b/assets/ChangeLog_20200829.md.Dkrt3arz.lean.js similarity index 91% rename from assets/ChangeLog_20200829.md.CoqrOffn.lean.js rename to assets/ChangeLog_20200829.md.Dkrt3arz.lean.js index 8f76bd9e7d8..88bd565f02d 100644 --- a/assets/ChangeLog_20200829.md.CoqrOffn.lean.js +++ b/assets/ChangeLog_20200829.md.Dkrt3arz.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Change - 2020 Aug 29 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20200829.md","filePath":"ChangeLog/20200829.md"}'); const _sfc_main = { name: "ChangeLog/20200829.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 29); diff --git a/assets/ChangeLog_20201128.md.7XXL02Bn.js b/assets/ChangeLog_20201128.md.Bv3MtRZN.js similarity index 99% rename from assets/ChangeLog_20201128.md.7XXL02Bn.js rename to assets/ChangeLog_20201128.md.Bv3MtRZN.js index 3d75724f681..cc72a27f682 100644 --- a/assets/ChangeLog_20201128.md.7XXL02Bn.js +++ b/assets/ChangeLog_20201128.md.Bv3MtRZN.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Change - 2020 Nov 28 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20201128.md","filePath":"ChangeLog/20201128.md"}'); const _sfc_main = { name: "ChangeLog/20201128.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Breaking Change - 2020 Nov 28 Changelog

Four times a year QMK runs a process for merging Breaking Changes. A Breaking Change is any change which modifies how QMK behaves in a way that is incompatible or potentially dangerous. We limit these changes to 4 times per year so that users can have confidence that updating their QMK tree will not break their keymaps.

Changes Requiring User Action

Relocated Keyboards

Reduce Helix keyboard build variation (#8669)

The build commands for the Helix keyboard are:

make <helix_build_name>:<keymap_name>

For <helix_build_name>, specify the one in the rightmost column of the table below, such as helix, helix/pico.

before Oct 17 2019Oct 17 2019Mar 10 2020Nov 28 2020
helix/rev1helix/rev1helix/rev1helix/rev1
helix/picohelix/picohelix/picohelix/pico
helix/pico/backhelix/pico/backhelix/pico/back
helix/pico/underhelix/pico/underhelix/pico/under
helix/pico/sc--
helix/pico/sc/backhelix/pico/sc
helix/pico/sc/under--
helix/rev2 (=helix)helix/rev2 (=helix)helix/rev2 (=helix)--
helix/rev2/backhelix/rev2/back--
helix/rev2/back/oledhelix/rev2/back/oled( --> helix/rev2/back)
helix/rev2/oledhelix/rev2/oledhelix/rev2 (=helix)
helix/rev2/oled/backhelix/rev2/oled/backhelix/rev2/back
helix/rev2/oled/underhelix/rev2/oled/underhelix/rev2/under
helix/rev2/sc--
helix/rev2/sc/back--
helix/rev2/sc/oled--
helix/rev2/sc/oledbackhelix/rev2/sc
helix/rev2/sc/oledunder--
helix/rev2/sc/under--
helix/rev2/underhelix/rev2/under--
helix/rev2/under/oledhelix/rev2/under/oled( --> helix/rev2/under)

Update the Speedo firmware for v3.0 (#10657)

The Speedo keyboard has moved to cozykeys/speedo/v2 as the designer prepares to release the Speedo v3.0.

Previous NameNew Name
speedocozykeys/speedo/v2
--cozykeys/speedo/v3 new

Maartenwut/Maarten name change to evyd13/Evy (#10274)

Maartenwut has rebranded as @evyd13, and all released Maartenwut boards have moved.

Previous NameNew Name
maartenwut/atom47/rev2evyd13/atom47/rev2
maartenwut/atom47/rev3evyd13/atom47/rev3
maartenwut/eon40evyd13/eon40
maartenwut/eon65evyd13/eon65
maartenwut/eon75evyd13/eon75
maartenwut/eon87evyd13/eon87
maartenwut/eon95evyd13/eon95
maartenwut/gh80_1800evyd13/gh80_1800
maartenwut/gh80_3700evyd13/gh80_3700
maartenwut/minitomicevyd13/minitomic
maartenwut/mx5160evyd13/mx5160
maartenwut/nt660evyd13/nt660
maartenwut/omrontklevyd13/omrontkl
maartenwut/plain60evyd13/plain60
maartenwut/pockettypeevyd13/pockettype
maartenwut/quackfireevyd13/quackfire
maartenwut/solheim68evyd13/solheim68
maartenwut/ta65evyd13/ta65
maartenwut/wasdatevyd13/wasdat
maartenwut/wasdat_codeevyd13/wasdat_code
maartenwut/wonderlandevyd13/wonderland

Xelus Valor and Dawn60 Refactors (#10512, #10584)

The Valor and Dawn60 keyboards by Xelus22 both now require their revisions to be specified when compiling.

Previous NameNew Name
xelus/dawn60xelus/dawn60/rev1
xelus/valorxelus/valor/rev1

Updated Keyboard Codebases

AEboards EXT65 Refactor (#10820)

The EXT65 codebase has been reworked so keymaps can be used with either revision.

Core Changes

Fixes

Additions and Enhancements

Clean-ups and Optimizations

QMK Infrastructure and Internals

', 30); diff --git a/assets/ChangeLog_20201128.md.7XXL02Bn.lean.js b/assets/ChangeLog_20201128.md.Bv3MtRZN.lean.js similarity index 91% rename from assets/ChangeLog_20201128.md.7XXL02Bn.lean.js rename to assets/ChangeLog_20201128.md.Bv3MtRZN.lean.js index bbd6a0aab3d..98e439e70ef 100644 --- a/assets/ChangeLog_20201128.md.7XXL02Bn.lean.js +++ b/assets/ChangeLog_20201128.md.Bv3MtRZN.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Change - 2020 Nov 28 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20201128.md","filePath":"ChangeLog/20201128.md"}'); const _sfc_main = { name: "ChangeLog/20201128.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 30); diff --git a/assets/ChangeLog_20210227.md.BWOtCaeS.js b/assets/ChangeLog_20210227.md.BZCS3QyX.js similarity index 99% rename from assets/ChangeLog_20210227.md.BWOtCaeS.js rename to assets/ChangeLog_20210227.md.BZCS3QyX.js index 3e260f78499..99b070838de 100644 --- a/assets/ChangeLog_20210227.md.BWOtCaeS.js +++ b/assets/ChangeLog_20210227.md.BZCS3QyX.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2021 February 27 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20210227.md","filePath":"ChangeLog/20210227.md"}'); const _sfc_main = { name: "ChangeLog/20210227.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Breaking Changes - 2021 February 27 Changelog

Changes Requiring User Action

The following keyboards have had their source moved within QMK:

Old Keyboard NameNew Keyboard Name
bear_65jacky_studio/bear_65
s7_elephant/rev1jacky_studio/s7_elephant/rev1
s7_elephant/rev2jacky_studio/s7_elephant/rev2
aplx6aplyard/aplx6/rev1
southpaw75fr4/southpaw75

The Aplyard Aplx6 rev2 and the FR4Boards Unix60 have also been added as part of these changes.

Additionally, the handwired/bluepill/bluepill70 keyboard has been removed.

Core Changes

ChibiOS Update and Config Migration

QMK's ChibiOS and ChibiOS-Contrib submodules have been updated to version 20.3.2.

Along with this, QMK now provides default configuration files for all commonly-supported ARM microcontrollers running on ChibiOS. As such, keyboards are now only required to define settings which differ from the defaults, thereby reducing the size of pull requests for keyboards running atop ChibiOS.

QMK Infrastructure and Internals

Python is now required to build QMK. The minimum Python version has been increased to 3.7.

The power of info.json has been massively expanded. Most keyboard parameters can now be expressed in info.json instead of config.h/rules.mk. This should make maintaining keyboards easier, and will enable tooling that can allow non-technical users to add and maintain QMK keyboards without writing any code.

To ease migration a new command has been provided, qmk generate-info-json -kb <keyboard>. You can use this command to generate a complete info.json file for a keyboard and then remove the duplicate information from config.h and rules.mk.

Detailed example showing how to generate a new info.json and identify duplicate keys:

user@hostname:~/qmk_firmware/keyboards/lets_split:0$ qmk generate-info-json > new-info.json\nuser@hostname:~/qmk_firmware/keyboards/lets_split:0$ mv new-info.json info.json\nuser@hostname:~/qmk_firmware/keyboards/lets_split:0$ qmk info\n⚠ lets_split/rev2: DEBOUNCE in config.h is overwriting debounce in info.json\n⚠ lets_split/rev2: DEVICE_VER in config.h is overwriting usb.device_ver in info.json\n⚠ lets_split/rev2: DIODE_DIRECTION in config.h is overwriting diode_direction in info.json\n⚠ lets_split/rev2: MANUFACTURER in config.h is overwriting manufacturer in info.json\n⚠ lets_split/rev2: RGB_DI_PIN in config.h is overwriting rgblight.pin in info.json\n⚠ lets_split/rev2: RGBLED_NUM in config.h is overwriting rgblight.led_count in info.json\n⚠ lets_split/rev2: PRODUCT_ID in config.h is overwriting usb.pid in info.json\n⚠ lets_split/rev2: VENDOR_ID in config.h is overwriting usb.vid in info.json\n⚠ lets_split/rev2: Matrix pins are specified in both info.json and config.h, the config.h values win.\n⚠ lets_split/rev2: LAYOUTS in rules.mk is overwriting community_layouts in info.json\n⚠ lets_split/rev2: Feature bootmagic is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature mousekey is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature extrakey is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature console is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature command is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature nkro is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature backlight is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature midi is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature audio is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature unicode is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature bluetooth is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature rgblight is specified in both info.json and rules.mk, the rules.mk value wins.\n⚠ lets_split/rev2: Feature sleep_led is specified in both info.json and rules.mk, the rules.mk value wins.\nKeyboard Name: Let's Split\nManufacturer: Wootpatoot\nWebsite:\nMaintainer: QMK Community\nKeyboard Folder: lets_split/rev2\nLayouts: LAYOUT, LAYOUT_ortho_4x12\nSize: 13 x 4\nProcessor: atmega32u4\nBootloader: caterina

Detailed Change List

Changes Requiring User Action

Fixes

Additions and Enhancements

Clean-ups and Optimizations

QMK Infrastructure and Internals

ChibiOS Update and Config Migration

', 29); diff --git a/assets/ChangeLog_20210227.md.BWOtCaeS.lean.js b/assets/ChangeLog_20210227.md.BZCS3QyX.lean.js similarity index 91% rename from assets/ChangeLog_20210227.md.BWOtCaeS.lean.js rename to assets/ChangeLog_20210227.md.BZCS3QyX.lean.js index 3a5967ba6db..c0a8d47c660 100644 --- a/assets/ChangeLog_20210227.md.BWOtCaeS.lean.js +++ b/assets/ChangeLog_20210227.md.BZCS3QyX.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2021 February 27 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20210227.md","filePath":"ChangeLog/20210227.md"}'); const _sfc_main = { name: "ChangeLog/20210227.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 29); diff --git a/assets/ChangeLog_20210529.md.CR1YNfZX.js b/assets/ChangeLog_20210529.md.BuRukn9m.js similarity index 99% rename from assets/ChangeLog_20210529.md.CR1YNfZX.js rename to assets/ChangeLog_20210529.md.BuRukn9m.js index 52dd8271a8e..ebbc5146302 100644 --- a/assets/ChangeLog_20210529.md.CR1YNfZX.js +++ b/assets/ChangeLog_20210529.md.BuRukn9m.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2021 May 29 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20210529.md","filePath":"ChangeLog/20210529.md"}'); const _sfc_main = { name: "ChangeLog/20210529.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Breaking Changes - 2021 May 29 Changelog

Notable Changes

RGB Matrix support for split common (#11055)

Split boards can now use RGB Matrix without defining a custom matrix.

Teensy 3.6 support (#12258)

Added support for MK66F18 (Teensy 3.6) microcontroller.

New command: qmk console (#12828)

A new qmk console command has been added for attaching to your keyboard's console. It operates similiarly to QMK Toolbox by allowing you to connect to one or more keyboard consoles to display debugging messages.

Improved command: qmk config

We've updated the qmk config command to show only the configuration items you have actually set. You can now display (almost) all of the available configuration options, along with their default values, using qmk config -a.

LED Matrix Improvements (#12509, #12580, #12588, #12633, #12651, #12685)

LED Matrix has been improved with effects, CIE1931 curves, and a task system.

Changes Requiring User Action

Updated Keyboard Codebases

The following keyboards have had their source moved within QMK:

Old Keyboard NameNew Keyboard Name
crkbd/rev1/commoncrkbd/rev1
function96function96/v1
nckiibs/flatbread60delikeeb/flatbread60
nckiibs/vaguettelitedelikeeb/vaguettelite
nckiibs/vanana/rev1delikeeb/vanana/rev1
nckiibs/vanana/rev2delikeeb/vanana/rev2
nckiibs/vaneeladelikeeb/vaneela
nckiibs/vaneelaexdelikeeb/vaneelaex
nckiibs/waaffle/rev3/elite_cdelikeeb/waaffle/rev3/elite_c
nckiibs/waaffle/rev3/pro_microdelikeeb/waaffle/rev3/pro_micro

The Function96 V2 has also been added as part of these changes.

The codebase for the Durgod K320 has been reworked in anticipation of additional Durgod keyboards gaining QMK support.

Additionally, the crkbd/rev1/legacy keyboard has been removed.

Bootmagic Deprecation and Refactor (#12172)

QMK has decided to deprecate the full Bootmagic feature and leave Bootmagic Lite as the only remaining option.

This pull request changes the behavior of BOOTMAGIC_ENABLE such that specifying BOOTMAGIC_ENABLE = yes enables Bootmagic Lite instead of full Bootmagic.

If attempts to use Bootmagic functionality result in unexpected behavior, check your rules.mk file and change the BOOTMAGIC_ENABLE setting to specify either lite or full.

Tentative Deprecation Schedule

This is the current planned roadmap for the behavior of BOOTMAGIC_ENABLE:

Removal of LAYOUT_kc (#12160)

We've removed support for LAYOUT_kc macros, if your keymap uses one you will need to update it use a regular LAYOUT macro.

Encoder callbacks are now boolean (#12805, #12985)

To allow for keyboards to override (or not) keymap level code the encoder_update_kb function has been changed from void to bool. You will need to update your function definition to reflect this and ensure that you return a true or false value.

Example code before change:

c
void encoder_update_kb(uint8_t index, bool clockwise) {\n    encoder_update_user(index, clockwise);\n}\n\nvoid encoder_update_user(uint8_t index, bool clockwise) {\n    if (index == 0) { /* First encoder */\n        if (clockwise) {\n            tap_code(KC_PGDN);\n        } else {\n            tap_code(KC_PGUP);\n        }\n    } else if (index == 1) { /* Second encoder */\n        if (clockwise) {\n            tap_code(KC_DOWN);\n        } else {\n            tap_code(KC_UP);\n        }\n    }\n}

Example code after change:

c
bool encoder_update_kb(uint8_t index, bool clockwise) {\n    return encoder_update_user(index, clockwise);\n}\n\nbool encoder_update_user(uint8_t index, bool clockwise) {\n    if (index == 0) { /* First encoder */\n        if (clockwise) {\n            tap_code(KC_PGDN);\n        } else {\n            tap_code(KC_PGUP);\n        }\n    } else if (index == 1) { /* Second encoder */\n        if (clockwise) {\n            tap_code(KC_DOWN);\n        } else {\n            tap_code(KC_UP);\n        }\n    }\n    return true; \n    // If you return true, this will allow the keyboard level code to run, as well. \n    //Returning false will override the keyboard level code. Depending on how the keyboard level function is set up.\n}

Core Changes

Fixes

Additions and Enhancements

Clean-ups and Optimizations

QMK Infrastructure and Internals

', 44); diff --git a/assets/ChangeLog_20210529.md.CR1YNfZX.lean.js b/assets/ChangeLog_20210529.md.BuRukn9m.lean.js similarity index 91% rename from assets/ChangeLog_20210529.md.CR1YNfZX.lean.js rename to assets/ChangeLog_20210529.md.BuRukn9m.lean.js index b431120c78f..ba8d43a453c 100644 --- a/assets/ChangeLog_20210529.md.CR1YNfZX.lean.js +++ b/assets/ChangeLog_20210529.md.BuRukn9m.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2021 May 29 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20210529.md","filePath":"ChangeLog/20210529.md"}'); const _sfc_main = { name: "ChangeLog/20210529.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 44); diff --git a/assets/ChangeLog_20210828.md.DNbHIuuM.js b/assets/ChangeLog_20210828.md.BZyVeEhg.js similarity index 99% rename from assets/ChangeLog_20210828.md.DNbHIuuM.js rename to assets/ChangeLog_20210828.md.BZyVeEhg.js index 69d060288f1..3302abcf3a3 100644 --- a/assets/ChangeLog_20210828.md.DNbHIuuM.js +++ b/assets/ChangeLog_20210828.md.BZyVeEhg.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2021 August 28 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20210828.md","filePath":"ChangeLog/20210828.md"}'); const _sfc_main = { name: "ChangeLog/20210828.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Breaking Changes - 2021 August 28 Changelog

Notable Features

Combo processing improvements (#8591)

Combo processing has been reordered with respect to keypress handling, allowing for much better compatibility with mod taps.

It is also now possible to define combos that have keys overlapping with other combos, triggering only one. For example, a combo of A, B can coexist with a longer combo of A, B, C -- previous functionality would trigger both combos if all three keys were pressed.

Key Overrides (#11422)

QMK now has a new feature: key overrides. This feature allows for overriding the output of key combinations involving modifiers. As an example, pressing Shift+2 normally results in an @ on US-ANSI keyboard layouts -- the new key overrides allow for adding similar functionality, but for any modifier + key press.

To illustrate, it's now possible to use the key overrides feature to translate Shift + Backspace into Delete -- an often-requested example of where this functionality comes in handy.

There's far more to describe that what lives in this changelog, so head over to the key overrides documentation for more examples and info.

Digitizer support (#12851)

QMK gained the ability to pretend to be a digitizer device -- much like a tablet device. A mouse uses delta-coordinates -- move up, move right -- but a digitizer works with absolute coordinates -- top left, bottom right.

Changes Requiring User Action

Updated Keyboard Codebases

The following keyboards have had their source moved within QMK:

Old Keyboard NameNew Keyboard Name
aeboards/constellationaeboards/constellation/rev1, aeboards/constellation/rev2
bakeneko65bakeneko65/rev2, bakeneko65/rev3
bm16akprepublic/bm16a
bm16skprepublic/bm16s
bm40hsrgbkprepublic/bm40hsrgb
bm43akprepublic/bm43a
bm60pokerkprepublic/bm60poker
bm60rgbkprepublic/bm60rgb
bm60rgb_isokprepublic/bm60rgb_iso
bm68rgbkprepublic/bm68rgb
clawsome/gamebuddyclawsome/gamebuddy/v1_0, clawsome/gamebuddy/v1_m
cospadkprepublic/cospad
custommk/genesiscustommk/genesis/rev1, custommk/genesis/rev2
daisyktec/daisy
durgod/k320durgod/k3x0/k320
dztech/volcano660ilumkb/volcano660
ergodonektec/ergodone
gmmk/progmmk/pro/ansi, gmmk/pro/iso
handwired/p1800flteam0110/p1800fl
jj40kprepublic/jj40
jj4x4kprepublic/jj4x4
jj50kprepublic/jj50
kyriasplitkb/kyria
lazydesigners/the60lazydesigners/the60/rev1, lazydesigners/the60/rev2
matrix/m12ogmatrix/m12og/rev1, matrix/m12og/rev2
mechlovin/hannah65/mechlovin9mechlovin/mechlovin9/rev1, mechlovin/mechlovin9/rev2
peiorisboards/ixoracoarse/ixora
ramonimbao/monaramonimbao/mona/v1, ramonimbao/mona/v1_1
staryuktec/staryu
tokyo60tokyokeyboard/tokyo60
vintacoarse/vinta
xd002xiudi/xd002
xd004xiudi/xd004
xd60xiudi/xd60
xd68xiudi/xd68
xd75xiudi/xd75
xd84xiudi/xd84
xd84proxiudi/xd84pro
xd87xiudi/xd87
xd96xiudi/xd96

Bootmagic Full Removal (#13846)

As noted during last breaking changes cycle, QMK has decided to deprecate the full Bootmagic feature and leave Bootmagic Lite as the only remaining option.

This pull request changes the behavior of BOOTMAGIC_ENABLE such that specifying full results in an error, allowing only no, yes, or lite.

Currently lite is the equivalent of yes in rules.mk. Next cycle the use of the lite keyword will be prevented in favour of yes -- any new submissions should now be using yes or no to minimise disruption.

Bootmagic Full Deprecation Schedule

This is the current roadmap for the behavior of BOOTMAGIC_ENABLE:

DIP switch callbacks are now boolean (#13399)

To match the encoder change last breaking changes cycle, DIP switch callbacks now return bool, too.

Example code before change:

c
void dip_switch_update_kb(uint8_t index, bool active) {\n    dip_switch_update_user(index, active);\n}\n\nvoid dip_switch_update_user(uint8_t index, bool active) {\n    switch (index) {\n        case 0:\n            if(active) { audio_on(); } else { audio_off(); }\n            break;\n    }\n}\n\nvoid dip_switch_update_mask_kb(uint32_t state) { \n    dip_switch_update_mask_user(state);\n}\n\nvoid dip_switch_update_mask_user(uint32_t state) {\n    if (state & (1UL<<0) && state & (1UL<<1)) {\n        layer_on(_ADJUST); // C on esc\n    } else {\n        layer_off(_ADJUST);\n    }\n}

Example code after change:

c
bool dip_switch_update_kb(uint8_t index, bool active) {\n    if !(dip_switch_update_user(index, active)) { return false; }\n    return true;\n}\n\nbool dip_switch_update_user(uint8_t index, bool active) {\n    switch (index) {\n        case 0:\n            if(active) { audio_on(); } else { audio_off(); }\n            break;\n    }\n    return true; // Returning true allows keyboard code to execute, false will tell the keyboard code "I've already handled it".\n}\n\nbool dip_switch_update_mask_kb(uint32_t state) {\n    if (!dip_switch_update_mask_user(state)) { return false; }\n    return true;\n}\n\nbool dip_switch_update_mask_user(uint32_t state) {\n    if (state & (1UL<<0) && state & (1UL<<1)) {\n        layer_on(_ADJUST); // C on esc\n    } else {\n        layer_off(_ADJUST);\n    }\n    return true; // Returning true allows keyboard code to execute, false will tell the keyboard code "I've already handled it".\n}

Notable core changes

Split transport improvements

Split keyboards gained a significant amount of improvements during this breaking changes cycle, specifically:

WARNING

If you're updating your split keyboard, you will need to flash both sides of the split with the your firmware.

Teensy 4.x support (#13056, #13076, #13077)

Updated ChibiOS and ChibiOS-Contrib, which brought in support for Teensy 4.x dev boards, running NXP i.MX1062.

Data Driven Improvements (#13366)

QMK's pursuit of data-driven keyboards has progressed, allowing substantially more configurable options to be specified in info.json.

Tags

Tags will let you categorize your keyboard, and will be used in the future to allow browsing and sorting through keyboards in QMK. Tags are free-form text identifiers that identify attributes about your keyboard. To add tags you simply add a tags key to your info.json:

"tags": ["tkl", "backlight", "encoder"]\n

Dot Notation

With this release we are moving towards using JSON dot notation in more places. For example, when using qmk info -f text:

$ qmk info -f text -kb clueboard/card\n  bootloader: atmel-dfu\n  debounce: 20\n  diode_direction: ROW2COL\n  features.audio: True\n  features.backlight: True\n  features.bluetooth: False\n  features.bootmagic: False\n  features.command: True\n  features.console: True\n  features.extrakey: True\n  features.lto: True\n  features.midi: False\n  features.mousekey: True\n  features.nkro: False\n  features.rgblight: True\n  features.unicode: False\n  height: 8\n  keyboard_folder: clueboard/card\n  keyboard_name: Cluecard\n  layout_aliases.LAYOUT: LAYOUT_all\n  layouts: LAYOUT_all\n  maintainer: skullydazed\n  manufacturer: Clueboard\n  matrix_pins.cols: F1, F6, F7\n  matrix_pins.rows: B4, F0, F4, F5\n  platform: unknown\n  processor: atmega32u4\n  processor_type: avr\n  protocol: LUFA\n  rgblight.brightness_steps: 17\n  rgblight.hue_steps: 10\n  rgblight.led_count: 4\n  rgblight.pin: E6\n  rgblight.saturation_steps: 17\n  split.transport.protocol: serial\n  usb.device_ver: 0x0001\n  usb.pid: 0x2330\n  usb.vid: 0xC1ED\n  width: 10

New configuration keys

We've added dozens of new keys to info.json so that you can configure more than ever without writing a single line of code. A quick overview of the new items you can configure:

Codebase restructure and cleanup

QMK was originally based on TMK, and has grown in size considerably since its first inception. To keep moving things forward, restructure of some of the core areas of the code is needed to support new concepts and new hardware, and progress is happening along those lines:


Full changelist

Core:

CLI:

Submodule updates:

Keyboards:

Keyboard fixes:

Others:

Bugs:

', 65); diff --git a/assets/ChangeLog_20210828.md.DNbHIuuM.lean.js b/assets/ChangeLog_20210828.md.BZyVeEhg.lean.js similarity index 91% rename from assets/ChangeLog_20210828.md.DNbHIuuM.lean.js rename to assets/ChangeLog_20210828.md.BZyVeEhg.lean.js index 4aab8dbb396..c16fa5acb2f 100644 --- a/assets/ChangeLog_20210828.md.DNbHIuuM.lean.js +++ b/assets/ChangeLog_20210828.md.BZyVeEhg.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2021 August 28 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20210828.md","filePath":"ChangeLog/20210828.md"}'); const _sfc_main = { name: "ChangeLog/20210828.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 65); diff --git a/assets/ChangeLog_20211127.md.ClUawWkq.js b/assets/ChangeLog_20211127.md.Dnz3u-H6.js similarity index 99% rename from assets/ChangeLog_20211127.md.ClUawWkq.js rename to assets/ChangeLog_20211127.md.Dnz3u-H6.js index d6bef9363f2..6106766f5ec 100644 --- a/assets/ChangeLog_20211127.md.ClUawWkq.js +++ b/assets/ChangeLog_20211127.md.Dnz3u-H6.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2021 November 27 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20211127.md","filePath":"ChangeLog/20211127.md"}'); const _sfc_main = { name: "ChangeLog/20211127.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Breaking Changes - 2021 November 27 Changelog

2000 keyboards!

QMK had it's 2000th keyboard submitted during this breaking changes cycle.... and it only just made the cut-off!

shell
% qmk list-keyboards | wc -l\n2003

From the whole QMK team, a major thankyou to the community for embracing QMK as your preferred keyboard firmware!

Notable Features

Expanded Pointing Device support (#14343)

Pointing device support has been reworked and reimplemented to allow for easier integration of new peripherals.

Usages of POINTING_DEVICE_ENABLE = yes in rules.mk files now need to be accompanied by a corresponding POINTING_DEVICE_DRIVER = ??? line, specifying which driver to use during the build. Existing keyboards have already been migrated across to the new usage pattern, so most likely no change is required by users.

QMK now has core-supplied support for the following pointing device peripherals:

rules.mk lineSupported device
POINTING_DEVICE_DRIVER = analog_joystickAnalog joysticks, such as PSP joysticks
POINTING_DEVICE_DRIVER = adns5050ADNS 5050 sensor
POINTING_DEVICE_DRIVER = adns9800ADNS 9800 laser sensor
POINTING_DEVICE_DRIVER = cirque_pinnacle_i2cCirque touchpad, I2C mode
POINTING_DEVICE_DRIVER = cirque_pinnacle_spiCirque Touchpad, SPI mode
POINTING_DEVICE_DRIVER = pimoroni_trackballPimoroni Trackball
POINTING_DEVICE_DRIVER = pmw3360PMW 3360

See the new documentation for the Pointing Device feature for more information on specific configuration for each driver.

Dynamic Tapping Term (#11036)

For people who are starting out with tapping keys, or for people who think tapping keys don't "feel right", it's sometimes quite difficult to determine what duration of tapping term to use to make things seem natural.

If you're in this stage of discovery, you can now add DYNAMIC_TAPPING_TERM_ENABLE = yes to your rules.mk, which enables the use of the following keycodes in your keymap:

KeyDescription
DT_PRNT"Dynamic Tapping Term Print": Types the current tapping term, in milliseconds
DT_UP"Dynamic Tapping Term Up": Increases the current tapping term by 5ms
DT_DOWN"Dynamic Tapping Term Down": Decreases the current tapping term by 5ms

Coupled with the use of qmk console or QMK Toolbox to show console output from your keyboard, you can tweak the tapping term dynamically in order to narrow down what "feels right" to you. Once you're happy, drop in the resulting number into your keymap's config.h and you're good to go!

Macros in JSON keymaps (#14374)

You can now define up to 32 macros in your keymap.json file, as used by QMK Configurator, and qmk compile. You can define these macros in a list under the macros keyword, like this:

json
{\n    "keyboard": "handwired/my_macropad",\n    "keymap": "my_keymap",\n    "macros": [\n        [ // first listed is QK_MACRO_0...\n            {"action":"down", "keycodes": ["LSFT"]},\n            "hello world1",\n            {"action": "up","keycodes": ["LSFT"]}\n        ],\n        [ // ...then QK_MACRO_1...\n            {"action":"tap", "keycodes": ["LCTL", "LALT", "DEL"]}\n        ],\n        [ // ...then QK_MACRO_2...\n            "ding!",\n            {"action":"beep"}\n        ],\n        [ // ...and QK_MACRO_3.\n            {"action":"tap", "keycodes": ["F1"]},\n            {"action":"delay", "duration": "1000"},\n            {"action":"tap", "keycodes": ["PGDN"]}\n        ]\n    ],\n    "layout": "LAYOUT_all",\n    "layers": [\n        ["QK_MACRO_0", "QK_MACRO_1", "QK_MACRO_2", "QK_MACRO_3"]\n    ]\n}

In due course, QMK Configurator will pick up support for defining these in its UI, but for now the json is the only way to define macros.

Changes Requiring User Action

Updated Keyboard Codebases

The following keyboards have had their source moved within QMK:

Old Keyboard NameNew Keyboard Name
aozora/hotswapaozora
gskt00kapcave/gskt00
handwired/dtisaac01dtisaac/dtisaac01
kprepublic/bm60pokerkprepublic/bm60hsrgb_poker/rev1
kprepublic/bm60rgbkprepublic/bm60hsrgb/rev1
kprepublic/bm60rgb_isokprepublic/bm60hsrgb_iso/rev1
kprepublic/bm65isokprepublic/bm65hsrgb_iso
kprepublic/bm68rgbkprepublic/bm68hsrgb
paladin64kapcave/paladin64
portal_66portal_66/soldered
signum/3_0/elitecsignum/3_0
tgr/janetgr/jane/v2

Squeezing space out of AVR (#15243)

The AVR platform has been problematic for some time, in the sense that it is severely resource-constrained -- this makes life difficult for anyone attempting to add new functionality such as display panels to their keymap code. The illustrious Drashna has contributed some newer documentation on how to attempt to free up some space on AVR-based keyboards that are in short supply.

Of course, there are much fewer constraints with ARM chips... 😉

Require explicit enabling of RGB Matrix modes (#15018)

Related to the previous section -- RGB Matrix modes have now been made to be opt-in, rather than opt-out. As these animations are now opt-in, you may find that your keyboard no longer has all the RGB modes you're expecting -- you may need to configure and recompile your firmware and enable your animations of choice... with any luck they'll still fit in the space available.

Most keyboards keep their original functionality, but over time the QMK maintainers have found that removal of animations ends up being the quickest way to free up space... and some keyboards have had animations such as reactive effects disabled by default in order to still fit within the flash space available.

The full list of configurables to turn specific animations back on can be found at on the RGB Matrix documentation page.

OLED task refactoring (#14864)

OLED display code was traditionally difficult to override in keymaps as they did not follow the standard pattern of bool *_kb() deferring to bool *_user() functions, allowing signalling to the higher level that processing had already been done.

This changes the standard OLED drawing function model to allow for a base implementation to be provided by a keyboard, but also still allow for keymap-level overrides without needing to modify the keyboard's code.

The old keymap code went something like this:

c
void oled_task_user(void) {\n    // keymap drawing code\n}

...but the new keymap code looks like this:

c
bool oled_task_user(void) {\n    // keymap drawing code\n    return false;\n}

Keyboard designers should now structure their keyboard-level drawing routines like the following, in order to allow for keymap overrides:

c
bool oled_task_kb(void) {\n    // Defer to the keymap if they want to override\n    if(!oled_task_user()) { return false; }\n\n    // default keyboard drawing code\n    return false;\n}

Bootmagic Full Removal (#15002)

As noted during previous breaking changes cycles, QMK decided to deprecate the full Bootmagic feature and leave Bootmagic Lite as the only remaining option.

This removal is now complete!

This pull request changes the behavior of BOOTMAGIC_ENABLE such that specifying lite or full results in an error, allowing only yes or no, with yes mirroring historical lite functionality.

All use of the lite keyword within the repository has been migrated to yes -- any new submissions using lite will now fail to build and should be updated accordingly.

Bootmagic Full Deprecation Schedule: Complete!

This is the historical timeline for the behavior of BOOTMAGIC_ENABLE:

Remove QWIIC_DRIVERS (#14174)

Due to minimal QWIIC adoption and other options for similar functionality, the QWIIC drivers were removed from QMK. Existing OLED usages have been migrated across to the normal QMK OLED driver instead.

Notable core changes

New MCU Support

QMK firmware picked up support for a handful of new MCU families, potentially making it a bit easier to source components.

QMK firmware is now no longer limited to AVR and ARM - it also picked up support for our first RISC-V chip, the GD32VF103.

EEPROM Changes

There were a few EEPROM-related changes that landed during this breaking changes cycle, most prominently the long-awaited ability for the Drop boards to gain persistent storage. Any users of the Drop CTRL or Drop ALT should update QMK Toolbox as well -- coupled with a QMK firmware update settings should now be saved.

Compilation Database

A clang-compatible compilation database generator has been added as an option in order to help development environments such as Visual Studio Code.

Running qmk generate-compilation-database -kb <yourkb> -km <yourkeymap> from within the QMK firmware directory will generate a compile_commands.json file -- using a compatible IDE will likely see this and correctly start detecting the correct locations for source files as well as type and function information that are relevant to your build.

Do note that switching keyboards will require re-generation of this file.

Codebase restructure and cleanup

QMK continues on its restructuring journey, in order to make it easier to integrate newer features and add support for new hardware. This quarter's batch of changes include:


Full changelist

Core:

CLI:

Submodule updates:

Keyboards:

Keyboard fixes:

Others:

Bugs:

', 83); diff --git a/assets/ChangeLog_20211127.md.ClUawWkq.lean.js b/assets/ChangeLog_20211127.md.Dnz3u-H6.lean.js similarity index 91% rename from assets/ChangeLog_20211127.md.ClUawWkq.lean.js rename to assets/ChangeLog_20211127.md.Dnz3u-H6.lean.js index c13dc481f8e..8d957024975 100644 --- a/assets/ChangeLog_20211127.md.ClUawWkq.lean.js +++ b/assets/ChangeLog_20211127.md.Dnz3u-H6.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2021 November 27 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20211127.md","filePath":"ChangeLog/20211127.md"}'); const _sfc_main = { name: "ChangeLog/20211127.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 83); diff --git a/assets/ChangeLog_20220226.md.BWO5r_ec.js b/assets/ChangeLog_20220226.md.DnHKntZW.js similarity index 99% rename from assets/ChangeLog_20220226.md.BWO5r_ec.js rename to assets/ChangeLog_20220226.md.DnHKntZW.js index 825d96e470b..3d83b990c75 100644 --- a/assets/ChangeLog_20220226.md.BWO5r_ec.js +++ b/assets/ChangeLog_20220226.md.DnHKntZW.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2022 February 26 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20220226.md","filePath":"ChangeLog/20220226.md"}'); const _sfc_main = { name: "ChangeLog/20220226.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Breaking Changes - 2022 February 26 Changelog

Notable Features

Default USB Polling rate now 1kHz (#15352)

The default USB Polling rate has been aligned across supported platforms to now be 1ms/1kHz.

Something something Lets go gamers!

Split support for pointing devices (#15304)

Pointing devices can now be shared across a split keyboard with support for a single pointing device or a pointing device on each side.

See the Pointing Device documentation for further configuration options.

Changes Requiring User Action

Legacy macro and action_function system removed (#16025)

The long time deprecated MACRO() and action_get_macro methods have been removed. Where possible, existing usages have been migrated over to core Macros.

Create a build error if no bootloader is specified (#16181)

Bootloader configuration is no longer assumed. Keyboards must now set either:

Rename AdafruitBLE to BluefruitLE (#16127)

In preparation of future bluetooth work, the AdafruitBLE integration has been renamed to allow potential for any other Adafruit BLE products.

Updated Keyboard Codebases

The following keyboards have had their source moved within QMK:

Old Keyboard NameNew Keyboard Name
6ballmaple_computing/6ball
7skbsalicylic_acid3/7skb
7splussalicylic_acid3/7splus
acr60mechkeys/acr60
adalyntominabox1/adalyn
ajisai74salicylic_acid3/ajisai74
aleth4225keys/aleth42
alicia_cookibnuda/alicia_cook
allison_numpadprototypist/allison_numpad
allisonprototypist/allison
alu84mechkeys/alu84
angel17kakunpc/angel17
angel64/alphakakunpc/angel64/alpha
angel64/rev1kakunpc/angel64/rev1
arch_36obosob/arch_36
bakeneko60kkatano/bakeneko60
bakeneko65/rev2kkatano/bakeneko65/rev2
bakeneko65/rev3kkatano/bakeneko65/rev3
bakeneko80kkatano/bakeneko80
barleycornyiancardesigns/barleycorn
bat43/rev1dailycraft/bat43/rev1
bat43/rev2dailycraft/bat43/rev2
bigseries/1keywoodkeys/bigseries/1key
bigseries/2keywoodkeys/bigseries/2key
bigseries/3keywoodkeys/bigseries/3key
bigseries/4keywoodkeys/bigseries/4key
bkfdrhigsby/bkf
business_card/alphakakunpc/business_card/alpha
business_card/betakakunpc/business_card/beta
butterstickgboards/butterstick
c39maple_computing/c39
cassette4225keys/cassette42
chidorikagizaraya/chidori
chiliydkb/chili
chimera_ergoglenpickle/chimera_ergo
chimera_lsglenpickle/chimera_ls
chimera_orthoglenpickle/chimera_ortho
chimera_ortho_plusglenpickle/chimera_ortho_plus
choco60recompile_keys/choco60
choc_tarokakunpc/choc_taro
christmas_treemaple_computing/christmas_tree
claw44/rev1dailycraft/claw44/rev1
cocoa40recompile_keys/cocoa40
comet46satt/comet46
cu24capsunlocked/cu24
cu75capsunlocked/cu75
cu80capsunlocked/cu80/v1
delilahrainkeebs/delilah
diverge3unikeyboard/diverge3
divergetm2unikeyboard/divergetm2
dozen0yynmt/dozen0
dubba175drhigsby/dubba175
eggmanqpockets/eggman
ergo42biacco42/ergo42
ergoarrowssalicylic_acid3/ergoarrows
ergodash/miniomkbd/ergodash/mini
ergodash/rev1omkbd/ergodash/rev1
ergodox_infinityinput_club/ergodox_infinity
ergotacogboards/ergotaco
espectromechkeys/espectro
felixunikeyboard/felix
four_bangerbpiphany/four_banger
freyrhnahkb/freyr
geminate60weirdo/geminate60
georgigboards/georgi
gergogboards/gergo
getta25salicylic_acid3/getta25
ginghamyiancardesigns/gingham
gurindamibnuda/gurindam
halberdkagizaraya/halberd
hecomi/alphatakashiski/hecomi/alpha
hid_liberbpiphany/hid_liber
id67/default_rgbidobao/id67/default_rgb
id67/rgbidobao/id67/rgb
id80idobao/id80/v1
id87idobao/id87/v1
idoboidobao/id75/v1
infinity60input_club/infinity60
ivy/rev1maple_computing/ivy/rev1
jisplit89salicylic_acid3/jisplit89
jnaomaple_computing/jnao
just60ydkb/just60
kagamidgetyynmt/kagamidget
kelowna/rgb64weirdo/kelowna/rgb64
kprepublic/bm65hsrgb_isokprepublic/bm65hsrgb_iso/rev1
kprepublic/bm68hsrgbkprepublic/bm68hsrgb/rev1
k_typeinput_club/k_type
latin17rgblatincompass/latin17rgb
latin47blelatincompass/latin47ble
latin60rgblatincompass/latin60rgb
latin64blelatincompass/latin64ble
latin6rgblatincompass/latin6rgb
latinpadblelatincompass/latinpadble
latinpadlatincompass/latinpad
launchpad/rev1maple_computing/launchpad/rev1
lck75lyso1/lck75
le_chiffretominabox1/le_chiffre
lefishelyso1/lefishe
lets_split_eh/ehmaple_computing/lets_split_eh/eh
ls_60weirdo/ls_60
m3n3vanmatthewdias/m3n3van
mechmini/v1mechkeys/mechmini/v1
mechmini/v2mechkeys/mechmini/v2
meirawoodkeys/meira
meishi2biacco42/meishi2
meishibiacco42/meishi
minidox/rev1maple_computing/minidox/rev1
minimmatthewdias/minim
miorecompile_keys/mio
model_vmatthewdias/model_v
montexidobao/montex/v1
nafudasalicylic_acid3/nafuda
naiping/np64weirdo/naiping/np64
naiping/nphhkbweirdo/naiping/nphhkb
naiping/npminilaweirdo/naiping/npminila
naked48salicylic_acid3/naked48
naked60salicylic_acid3/naked60
naked64salicylic_acid3/naked64
namecard2x4takashiski/namecard2x4
nebula12spaceholdings/nebula12
nebula68bspaceholdings/nebula68b
nebula68spaceholdings/nebula68
niu_minikbdfans/niu_mini
nk1novelkeys/nk1
nk65novelkeys/nk65
nk87novelkeys/nk87
nknl7ensalicylic_acid3/nknl7en
nknl7jpsalicylic_acid3/nknl7jp
nomu30recompile_keys/nomu30
novelpadnovelkeys/novelpad
ogurecdrhigsby/ogurec
otaku_split/rev0takashiski/otaku_split/rev0
otaku_split/rev1takashiski/otaku_split/rev1
owl8dailycraft/owl8
packratdrhigsby/packrat
pistachio_mprate/pistachio_mp
pistachio_prorate/pistachio_pro
pistachiorate/pistachio
plexus75checkerboards/plexus75
pursuit40checkerboards/pursuit40
qaztominabox1/qaz
quarkcheckerboards/quark
rabbit_capture_plankakunpc/rabbit_capture_plan
rainkeebrainkeebs/rainkeeb
reviung33reviung/reviung33
reviung34reviung/reviung34
reviung39reviung/reviung39
reviung41reviung/reviung41
reviung53reviung/reviung53
reviung5reviung/reviung5
reviung61reviung/reviung61
runner3680/3x6omkbd/runner3680/3x6
runner3680/3x7omkbd/runner3680/3x7
runner3680/3x8omkbd/runner3680/3x8
runner3680/4x6omkbd/runner3680/4x6
runner3680/4x7omkbd/runner3680/4x7
runner3680/4x8omkbd/runner3680/4x8
runner3680/5x6_5x8omkbd/runner3680/5x6_5x8
runner3680/5x6omkbd/runner3680/5x6
runner3680/5x7omkbd/runner3680/5x7
runner3680/5x8omkbd/runner3680/5x8
scarletbandanawoodkeys/scarletbandana
scythekagizaraya/scythe
seigaihayiancardesigns/seigaiha
setta21salicylic_acid3/setta21
space_space/rev1qpockets/space_space/rev1
space_space/rev2qpockets/space_space/rev2
spiderisland/winry25tcwinry/winry25tc
splitreus62nacly/splitreus62
squiggle/rev1ibnuda/squiggle/rev1
standasideedi/standaside
steal_this_keyboardobosob/steal_this_keyboard
stellahnahkb/stella
suihankey/alphakakunpc/suihankey/alpha
suihankey/rev1kakunpc/suihankey/rev1
suihankey/splitkakunpc/suihankey/split
thedogkeyboardkakunpc/thedogkeyboard
the_rulermaple_computing/the_ruler
tiger910weirdo/tiger910
treadstone32marksard/treadstone32
treadstone48/rev1marksard/treadstone48/rev1
treadstone48/rev2marksard/treadstone48/rev2
txuumatthewdias/txuu
ua62nacly/ua62
underscore33/rev1tominabox1/underscore33/rev1
underscore33/rev2tominabox1/underscore33/rev2
vn66hnahkb/vn66
wallabykkatano/wallaby
wantenqpockets/wanten
whitefoxinput_club/whitefox
wings42/rev1dailycraft/wings42/rev1
wings42/rev1_extkeysdailycraft/wings42/rev1_extkeys
wings42/rev2dailycraft/wings42/rev2
yasuirainkeebs/yasui
yd60mqymdk/yd60mq
yd68ydkb/yd68
ymd75ymdk/ymd75
ymd96ymdk/ymd96
ymdk_np21ymdk/np21
yureikkatano/yurei
zinc25keys/zinc
zinc/rev125keys/zinc/rev1
zinc/reva25keys/zinc/reva

Notable core changes

New MCU Support

Building on previous cycles, QMK firmware picked up support for a couple extra MCU variants:

New Drivers

QMK now has core-supplied support for the following device peripherals:

LED

GPIO


Full changelist

Core:

CLI:

Keyboards:

Keyboard fixes:

Others:

Bugs:

', 43); diff --git a/assets/ChangeLog_20220226.md.BWO5r_ec.lean.js b/assets/ChangeLog_20220226.md.DnHKntZW.lean.js similarity index 91% rename from assets/ChangeLog_20220226.md.BWO5r_ec.lean.js rename to assets/ChangeLog_20220226.md.DnHKntZW.lean.js index 100d07dbf2c..3abca9f9937 100644 --- a/assets/ChangeLog_20220226.md.BWO5r_ec.lean.js +++ b/assets/ChangeLog_20220226.md.DnHKntZW.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2022 February 26 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20220226.md","filePath":"ChangeLog/20220226.md"}'); const _sfc_main = { name: "ChangeLog/20220226.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 43); diff --git a/assets/ChangeLog_20220528.md.BX3CCY1Z.js b/assets/ChangeLog_20220528.md.l98aHfdl.js similarity index 99% rename from assets/ChangeLog_20220528.md.BX3CCY1Z.js rename to assets/ChangeLog_20220528.md.l98aHfdl.js index 5aae96bef4a..f0f2f9c0471 100644 --- a/assets/ChangeLog_20220528.md.BX3CCY1Z.js +++ b/assets/ChangeLog_20220528.md.l98aHfdl.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2022 May 28 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20220528.md","filePath":"ChangeLog/20220528.md"}'); const _sfc_main = { name: "ChangeLog/20220528.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Breaking Changes - 2022 May 28 Changelog

Notable Features

Caps Word (#16588)

This is a new feature that allows for capslock-like functionality that turns itself off at the end of the word.

For instance, if you wish to type "QMK" without holding shift the entire time, you can either tap both left and right shift, or double-tap shift, to turn on Caps Word -- then type qmk (lowercase) without holding shift. Once you hit any key other than a--z, 0--9, -, _, delete, or backspace, this will go back to normal typing!

There are other activation mechanisms as well as configurable options like timeout and the like -- see the Caps Word documentation for more information.

Quantum Painter (#10174)

QMK has had support for small OLED displays for some time now, but hasn't really gained too much ability to draw to panels other than the SSD1306 or SH1106 panels.

Quantum Painter is a new drawing subsystem available to suitable ARM and RISC-V boards that is capable of drawing to large panel RGB LCDs and RGB OLEDs. It also allows for a lot more flexibility with a larger set of drawing APIs -- lines, rectangles, circles, ellipses, text, images, and even animations.

The QMK CLI has new commands added to be able to generate images and fonts for Quantum Painter to digest -- it's even capable of converting animated gifs for display on screen.

See the Quantum Painter documentation for more information on how to set up the displays as well as how to convert images and fonts.

WARNING

Quantum Painter is not supported on AVR due to complexity and size constraints. Boards based on AVR such as ProMicro or Elite-C builds will not be able to leverage Quantum Painter.

Encoder Mapping (#13286)

One of the long-standing complaints with Encoders is that there has been no easy way to configure them in user keymaps. #13286 added support for Encoder Mapping, which allows users to define encoder functionality in a similar way to their normal keymap.

WARNING

This is not yet supported by QMK Configurator. It is also unlikely to ever be supported by VIA.

Changes Requiring User Action

RESET => QK_BOOT (#17037)

QMK is always in the process of picking up support for new hardware platforms. One of the side-effects for future integrations has shown that QMK's usage of RESET as a keycode is causing naming collisions. As a result, #17037 changed usages of RESET to the new keycode QK_BOOT in the majority of default-like keymaps. At this stage the old keycode is still usable but will likely be removed in the next breaking changes cycle. Users with keymaps containing RESET should also move to QK_BOOT.

Sendstring keycode overhaul (#16941)

Some keycodes used with SEND_STRING and its relatives have been deprecated and may have their old keycode usages removed at a later date. The list of deprecated keycodes should be consulted to determine if you're using one of the older names (the first identifier after #define) -- you should swap to the newer variant (the second identifier on the same line).

Pillow Installation (#17133)

The merge of Quantum Painter added some new dependencies in the QMK CLI, most notably Pillow, which requires some installation in order for the CLI to function. If you've got an existing installation, you'll need to run some commands in order to get things working:

On Windows, if using QMK MSYS or msys2, you'll need to run the following command:

sh
pacman --needed --noconfirm --disable-download-timeout -S mingw-w64-x86_64-python-pillow\npython3 -m pip install --upgrade qmk

On macOS:

sh
brew update\nbrew upgrade qmk/qmk/qmk

On Linux or WSL:

sh
python3 -m pip install --user --upgrade qmk

Updated Keyboard Codebases

The following keyboards have had their source moved within QMK:

Old Keyboard NameNew Keyboard Name
absinthekeyhive/absinthe
amj40amjkeyboard/amj40
amj60amjkeyboard/amj60
amj96amjkeyboard/amj96
amjpadamjkeyboard/amjpad
at101_bhviktus/at101_bh
ergosauruskeyhive/ergosaurus
gmmk/pro/ansigmmk/pro/rev1/ansi
gmmk/pro/isogmmk/pro/rev1/iso
honeycombkeyhive/honeycomb
lattice60keyhive/lattice60
melody96ymdk/melody96
mt40mt/mt40
mt64rgbmt/mt64rgb
mt84mt/mt84
mt980mt/mt980
navi10keyhive/navi10
omnikey_bhviktus/omnikey_bh
opuskeyhive/opus
smallicekeyhive/smallice
southpolekeyhive/southpole
unokeyhive/uno
ut472keyhive/ut472
wheatfield/blocked65mt/blocked65
wheatfield/split75mt/split75
z150_bhviktus/z150_bh

Full changelist

Core:

CLI:

Submodule updates:

Keyboards:

Keyboard fixes:

Others:

Bugs:

', 47); diff --git a/assets/ChangeLog_20220528.md.BX3CCY1Z.lean.js b/assets/ChangeLog_20220528.md.l98aHfdl.lean.js similarity index 91% rename from assets/ChangeLog_20220528.md.BX3CCY1Z.lean.js rename to assets/ChangeLog_20220528.md.l98aHfdl.lean.js index ab1716a7cd1..be3e9f33ab0 100644 --- a/assets/ChangeLog_20220528.md.BX3CCY1Z.lean.js +++ b/assets/ChangeLog_20220528.md.l98aHfdl.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2022 May 28 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20220528.md","filePath":"ChangeLog/20220528.md"}'); const _sfc_main = { name: "ChangeLog/20220528.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 47); diff --git a/assets/ChangeLog_20220827.md.DjPthqDk.js b/assets/ChangeLog_20220827.md.CV9uGcQ3.js similarity index 99% rename from assets/ChangeLog_20220827.md.DjPthqDk.js rename to assets/ChangeLog_20220827.md.CV9uGcQ3.js index 40c1ce77f60..cf5c9dc5bb0 100644 --- a/assets/ChangeLog_20220827.md.DjPthqDk.js +++ b/assets/ChangeLog_20220827.md.CV9uGcQ3.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2022 August 27 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20220827.md","filePath":"ChangeLog/20220827.md"}'); const _sfc_main = { name: "ChangeLog/20220827.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Breaking Changes - 2022 August 27 Changelog

Notable Features

Add Raspberry Pi RP2040 support (#14877, #17514, #17516, #17519, #17612, #17512, #17557, #17817, #17839, #18100)

QMK finally picked up support for RP2040-based boards, such as the Raspberry Pi Pico, the Sparkfun Pro Micro RP2040, and the Adafruit KB2040. One of QMK's newest collaborators, @KarlK90, effectively did /micdrop with RP2040, with a massive set of changes to both QMK and the repository QMK uses for the base platform support, ChibiOS[-Contrib]. There has been a flurry of development this breaking changes cycle related to RP2040 from a large number of contributors -- so much so that almost all standard QMK hardware subsystems are supported.

Check the RP2040 platform development page for all supported peripherals and other hardware implementation details.

Allow qmk flash to use prebuilt firmware binaries (#16584)

A long-requested capability of the QMK CLI has been the ability to flash binaries directly, without needing to build a firmware. QMK provides prebuilt develop-based default firmwares on our CI page -- normally people would need QMK Toolbox to flash them. This new functionality written by @Erovia allows qmk flash to be provided the prebuilt file instead, simplifying the workflow for people who haven't got Toolbox available.

Changes Requiring User Action

Default layers dropped from 32 to 16 (#15286)

QMK allows for controlling the maximum number of layers it supports through LAYER_STATE_(8|16|32)BIT. Each definition allows for the same number of maximum layers -- LAYER_STATE_8BIT => 8 layers. There is also a corresponding firmware size decrease that goes along with smaller numbers -- given the vast majority of users don't use more than 16 layers the default has been swapped to 16. AVR users who were not previously specifying their max layer count may see some space freed up as a result.

RESET => QK_BOOT (#17940)

Following the last breaking changes cycle, QMK has been migrating usages of RESET to QK_BOOT due to naming collisions with our upstream board support packages. #17940 converts user keymaps across to use the new keycode name. RESET should also move to QK_BOOT.

Updated Keyboard Codebases

The following keyboards have had their source moved within QMK:

Old Keyboard NameNew Keyboard Name
gentleman65jkeys_design/gentleman65
handwired/hillside/0_1handwired/hillside/48
idobao/id80/v1/ansiidobao/id80/v2/ansi
idobao/id80/v1/isoidobao/id80/v2/iso

Data-driven USB IDs Refactoring (#18152)

QMK has decided to deprecate the specification of USB IDs inside config.h in favour of info.json, eventually leaving data-driven as the only method to specify USB information.

A significant number of keyboards have already been changed on master in a like-for-like fashion, and #18152 performs the same transformations for keyboards already on develop.

Previously in config.h:

c
#define VENDOR_ID    0x1234\n#define PRODUCT_ID   0x5678\n#define DEVICE_VER   0x0001\n#define MANUFACTURER Me\n#define PRODUCT      MyKeyboard

Replaced by info.json:

json
{\n    "keyboard_name": "MyKeyboard",\n    "manufacturer": "Me",\n    "usb": {\n        "vid": "0x1234",\n        "pid": "0x5678",\n        "device_version": "0.0.1"\n    },\n    // ... layouts, etc. ...\n}

Deprecation Schedule

Notable core changes

Board converters (#17514, #17603, #17711, #17827, #17593, #17652, #17595)

Historically QMK had a CONVERT_TO_PROTON_C directive for rules.mk to allow people to replace an AVR-based Pro Micro with a QMK Proton C. Global parts shortages have prompted people to create their own pin-compatible boards -- QMK has made this conversion generic and now allows for drop-in replacements for a lot more boards. see the Converters Feature documentation for the full list of supported replacement boards -- in this breaking changes cycle we've gone from 1 to 7.

Add cli command to import keyboard|keymap|kbfirmware (#16668)

To help with importing keyboards and keymaps from other sources, @zvecr added #16668 which adds a new set of commands to the CLI to automatically import keyboards (qmk import-keyboard -h), keymaps (qmk import-keymap -h), and kbfirmware definitions (qmk import-kbfirmware -h) into QMK.

The now-EOL kbfirmware allowed people who aren't set up with QMK the ability to create keyboard firmwares without requiring a full installation of QMK. Unfortunately, it targets a 7-year-old version of QMK -- adding frustration for users who want the newest features, as well as for QMK maintainers who have to spend time explaining why QMK can't just accept a drive-by code drop from kbfirmware. With any luck, this new command helps both camps!

Generic wear-leveling for EEPROM emulation (#16996, #17376, #18102)

QMK has had the ability to write to internal MCU flash in order to emulate EEPROM for some time now, but it was only limited to a small number of MCUs. The base HAL used by QMK for a large number of ARM devices provides a "proper" embedded MCU flash driver, so @tzarc decoupled the wear-leveling algorithm from the old flash writing code, improved it, wrote some tests, and enabled its use for a much larger number of other devices... including RP2040's XIP flash, and external SPI NOR Flash.

See the EEPROM Driver documentation for more information.

Pointing Device Improvements (#16371, #17111, #17176, #17482, #17776, #17613)

Ever since Pointing Device Driver support and Split Pointing Device support were added by @drashna and @daskygit, there has been increased interest in the development of the pointing device subsystem and its associated code.

Both the PMW33xx and the Cirque Pinnacle implementations have seen a lot of improvement to their code, as has the mouse code in general. Features like circular/edge scrolling for the Cirque, and Kinetic movement for any sensor with "lift detection" (#17482). Additionally, for those that make fast motions with their pointing devices, support for much larger mouse movement reports has been added (#16371).

Other related changes:


Full changelist

Core:

CLI:

Submodule updates:

Keyboards:

Keyboard fixes:

Others:

Bugs:

', 54); diff --git a/assets/ChangeLog_20220827.md.DjPthqDk.lean.js b/assets/ChangeLog_20220827.md.CV9uGcQ3.lean.js similarity index 91% rename from assets/ChangeLog_20220827.md.DjPthqDk.lean.js rename to assets/ChangeLog_20220827.md.CV9uGcQ3.lean.js index e831cdc99d9..efcf6934c55 100644 --- a/assets/ChangeLog_20220827.md.DjPthqDk.lean.js +++ b/assets/ChangeLog_20220827.md.CV9uGcQ3.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2022 August 27 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20220827.md","filePath":"ChangeLog/20220827.md"}'); const _sfc_main = { name: "ChangeLog/20220827.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 54); diff --git a/assets/ChangeLog_20221126.md.DpbrnXeC.js b/assets/ChangeLog_20221126.md.CSlb6-9w.js similarity index 99% rename from assets/ChangeLog_20221126.md.DpbrnXeC.js rename to assets/ChangeLog_20221126.md.CSlb6-9w.js index c08ef0fdfe3..8c49428618a 100644 --- a/assets/ChangeLog_20221126.md.DpbrnXeC.js +++ b/assets/ChangeLog_20221126.md.CSlb6-9w.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2022 November 26 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20221126.md","filePath":"ChangeLog/20221126.md"}'); const _sfc_main = { name: "ChangeLog/20221126.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Breaking Changes - 2022 November 26 Changelog

Notable Features

Autocorrect (#15699)

@getreuer in their infinite wisdom decided that autocorrect was a feature needed by QMK. As is customary, @drashna adapted it to core and got it into a state that everyone else can use it. See Feature: Autocorrect for more ifnormation (grin).

Changes Requiring User Action

Updated Keyboard Codebases

The following keyboards have had their source moved within QMK:

Old Keyboard NameNew Keyboard Name
converter/numeric_keypad_IIeconverter/numeric_keypad_iie
durgod/k3x0/k310durgod/k310
durgod/k3x0/k320durgod/k320
emptystring/NQGemptystring/nqg
handwired/hillside/46hillside/46
handwired/hillside/48hillside/48
handwired/hillside/52hillside/52
maple_computing/christmas_tree/V2017maple_computing/christmas_tree/v2017

Keycodes refactoring

QMK's keycodes got a very significant overhaul this breaking changes cycle, with the bulk of the work done by @zvecr and @fauxpark -- renaming, reordering, removing has been their focus in this area. In an attempt to standardise interoperation with host applications, keycode values now have strong versioning so that any connected application has confidence that the keys it thinks exist on the board actually match up with what's compiled in. These strongly-versioned keycode definitions are now published online and will not change, so tools that remap keycodes have a reference to work with. In future versions of QMK, any new or changed keycodes will result in a new version specification. See API docs for more information on the published versions if you're writing a tool to manage keycodes.

In most cases user keymaps in the repository have already been updated to reflect the new naming scheme. In some cases user keymaps outside the repository may strike a missing keycode with the old name -- it's highly likely that the name had already been deprecated for some time, and should have been updated previously.

See below for the full list of changesets.

WARNING

Keycode aliases have been put in place in most cases to cater for "old names" being mapped to "new names" -- the documentation already reflects all the new naming of keys.

Configuration Item Refactoring

A number of configuration items have been renamed for consistency.

RGB Matrix configuration:

Old ConfigNew Config
DRIVER_LED_COUNTRGB_MATRIX_LED_COUNT
RGB_DISABLE_TIMEOUTRGB_MATRIX_TIMEOUT
RGB_MATRIX_STARTUP_HUERGB_MATRIX_DEFAULT_HUE
RGB_MATRIX_STARTUP_MODERGB_MATRIX_DEFAULT_MODE
RGB_MATRIX_STARTUP_SATRGB_MATRIX_DEFAULT_SAT
RGB_MATRIX_STARTUP_SPDRGB_MATRIX_DEFAULT_SPD
RGB_MATRIX_STARTUP_VALRGB_MATRIX_DEFAULT_VAL

LED Matrix configuration:

Old ConfigNew Config
DRIVER_LED_COUNTLED_MATRIX_LED_COUNT
LED_DISABLE_TIMEOUTLED_MATRIX_TIMEOUT
LED_MATRIX_STARTUP_MODELED_MATRIX_DEFAULT_MODE
LED_MATRIX_STARTUP_SPDLED_MATRIX_DEFAULT_SPD
LED_MATRIX_STARTUP_VALLED_MATRIX_DEFAULT_VAL

Joystick configuration:

Old ConfigNew Config
JOYSTICK_AXES_COUNTJOYSTICK_AXIS_COUNT
JOYSTICK_AXES_RESOLUTIONJOYSTICK_AXIS_RESOLUTION

Data-driven USB IDs Refactoring (#18152)

QMK has decided to deprecate the specification of USB IDs inside config.h in favour of info.json, leaving data-driven as the only method to specify USB information. As per the deprecation schedule put forward last breaking changes cycle, USB information must be specified in info.json instead.

Previously in config.h:

c
#define VENDOR_ID    0x1234\n#define PRODUCT_ID   0x5678\n#define DEVICE_VER   0x0001\n#define MANUFACTURER Me\n#define PRODUCT      MyKeyboard

Replaced by info.json:

json
{\n    "keyboard_name": "MyKeyboard",\n    "manufacturer": "Me",\n    "usb": {\n        "vid": "0x1234",\n        "pid": "0x5678",\n        "device_version": "0.0.1"\n    }\n}

LED Indicator callback refactoring (#14864)

RGB Matrix and LED Matrix Indicator display code was traditionally difficult to override in keymaps as they did not follow the standard pattern of bool *_kb() deferring to bool *_user() functions, allowing signalling to the higher level that processing had already been done.

This changes the standard callback model to allow for a base implementation to be provided by a keyboard, but also still allow for keymap-level overrides without needing to modify the keyboard's code.

The old RGB Matrix keymap code went something like this:

c
void rgb_matrix_indicators_user(void) {\n    // keymap LED code\n}

...but the new RGB Matrix keymap code looks like this:

c
bool rgb_matrix_indicators_user(void) {\n    // keymap LED code\n    return false;\n}

Keyboard designers should now structure their keyboard-level routines like the following, in order to allow for keymap overrides:

c
bool rgb_matrix_indicators_kb(void) {\n    // Defer to the keymap if they want to override\n    if (!rgb_matrix_indicators_user()) { return false; }\n\n    // keyboard LED code\n    return true;\n}

The equivalent transformations should be done for LED Matrix boards.

Unicode mode refactoring

Unicode modes were renamed in order to prevent collision with equivalent keycodes. The available values for UNICODE_SELECTED_MODES changed -- see Feature: Unicode for the new list of values and how to configure them.

Notable core changes

This breaking changes cycle, a lot of the core changes are related to cleanup and refactoring -- commonly called "tech debt".

Keycodes refactoring

We aren't going to list each and every change -- they're far too numerous -- instead, we'll just list the related PRs in order to convey just how wide-reaching these changes were:

Board Converters

There was additional work in the space of board converters -- historically QMK allowed for "converting" a Pro Micro build to a QMK Proton-C build. The last few versions of QMK have added support for replacement boards much like the Proton-C, and this quarter was no exception:

See Feature: Converters for the full list of board conversions available.

Pointing and Digitizer device updates

Both pointing devices and digitizer got a host of updates this cycle. Inertia, automatic mouse layers, fixes for preventing sleep... you even get more buttons with digitizers!

Full changelist

Core:

CLI:

Submodule updates:

Keyboards:

Keyboard fixes:

Others:

Bugs:

', 66); diff --git a/assets/ChangeLog_20221126.md.DpbrnXeC.lean.js b/assets/ChangeLog_20221126.md.CSlb6-9w.lean.js similarity index 91% rename from assets/ChangeLog_20221126.md.DpbrnXeC.lean.js rename to assets/ChangeLog_20221126.md.CSlb6-9w.lean.js index cbcf8f4af83..3ed7e2c5c45 100644 --- a/assets/ChangeLog_20221126.md.DpbrnXeC.lean.js +++ b/assets/ChangeLog_20221126.md.CSlb6-9w.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2022 November 26 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20221126.md","filePath":"ChangeLog/20221126.md"}'); const _sfc_main = { name: "ChangeLog/20221126.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 66); diff --git a/assets/ChangeLog_20230226.md.Cg0AYxIn.js b/assets/ChangeLog_20230226.md.BhryCt4E.js similarity index 99% rename from assets/ChangeLog_20230226.md.Cg0AYxIn.js rename to assets/ChangeLog_20230226.md.BhryCt4E.js index 0921b002853..0dec6d32b9b 100644 --- a/assets/ChangeLog_20230226.md.Cg0AYxIn.js +++ b/assets/ChangeLog_20230226.md.BhryCt4E.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2023 February 26 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20230226.md","filePath":"ChangeLog/20230226.md"}'); const _sfc_main = { name: "ChangeLog/20230226.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Breaking Changes - 2023 February 26 Changelog

Changes Requiring User Action

IGNORE_MOD_TAP_INTERRUPT behaviour changes (#15741)

IGNORE_MOD_TAP_INTERRUPT_PER_KEY has been removed and IGNORE_MOD_TAP_INTERRUPT deprecated as a stepping stone towards making IGNORE_MOD_TAP_INTERRUPT the new default behavior for mod-taps in the future.

In place of the now removed IGNORE_MOD_TAP_INTERRUPT_PER_KEY, one must use the pre-existing HOLD_ON_OTHER_KEY_PRESS option.

In most cases, updating get_ignore_mod_tap_interrupt to get_hold_on_other_key_press is simply a matter of renaming the function and swapping every true by false and vice versa. The one subtlety you may need to look out for is that the get_ignore_mod_tap_interrupt was only ever called with mod-taps passed in as the keycode argument, while the keycode argument of get_hold_on_other_key_press can be any dual-role key. This includes not only mod-taps, but also layer-taps, one shot keys, TT(layer) and more. This has an impact on the effect of the default case in a typical per-key configuration making use of a switch(keycode) statement.

To illustrate, let's take the example of a configuration where we'd want all mod-taps to activate the modifier if another key is pressed while held with the exception of LCTL_T(KC_A), which should ignore keys pressed while it is held and activate the modifier only if it has been held for longer than the tapping term. In addition, we would like to keep the default "ignore-interrupt" behavior of layer taps.

An old way to do this would be via the following code:

c
bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) {\n    switch(keycode) {\n        case LCTL_T(KC_A):\n            return true;\n        default:\n            return false;\n    }\n}

The correct way to update this code without accidentally changing how the layer-taps work would be the following:

c
bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) {\n    switch(keycode) {\n        // Capture all mod-tap keycodes.\n        case QK_MOD_TAP ... QK_MOD_TAP_MAX:\n            if (keycode == LCTL_T(KC_A)) {\n                // Disable HOLD_ON_OTHER_KEY_PRESS for LCTL_T(KC_A)\n                // aka enable IGNORE_MOD_TAP_INTERRUPT for LCTL_T(KC_A).\n                return false;\n            } else {\n                // Enable HOLD_ON_OTHER_KEY_PRESS for every other mod-tap keycode.\n                return true;\n            }\n        default:\n            return false;\n    }\n}

For more information, you are invited to read the sections on IGNORE_MOD_TAP_INTERRUPT and HOLD_ON_OTHER_KEY_PRESS in the page on Tap-Hold configuration options.

TAPPING_FORCE_HOLD => QUICK_TAP_TERM (#17007)

TAPPING_FORCE_HOLD feature is now replaced by QUICK_TAP_TERM. Instead of turning off auto-repeat completely, user will have the option to configure a QUICK_TAP_TERM in milliseconds. When the user holds a tap-hold key after tapping it within QUICK_TAP_TERM, QMK will send the tap keycode to the host, enabling auto-repeat.

Its value is set to TAPPING_TERM by default and it can be reduced to match typing habits to avoid false triggers. To disable auto-repeat completely, set QUICK_TAP_TERM to zero.

TAPPING_FORCE_HOLD_PER_KEY is also deprecated and replaced by QUICK_TAP_TERM_PER_KEY. The old granular control function for tapping force hold is:

c
bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) {\n    switch (keycode) {\n        case LT(1, KC_BSPC):\n            return true;\n        default:\n            return false;\n    }\n}

That function can be replaced with:

c
uint16_t get_quick_tap_term(uint16_t keycode, keyrecord_t *record) {\n    switch (keycode) {\n        case SFT_T(KC_SPC):\n            return 0;\n        default:\n            return QUICK_TAP_TERM;\n    }\n}

For more details, please read the updated documentation section on Quick Tap Term.

Leader Key Rework {#leader-key-rework (#19632)}

The Leader Key feature API has been significantly improved, along with some bugfixes and added tests.

Instead of defining your leader sequences in matrix_scan_user(), they are now handled in the leader_end_user() callback, and the LEADER_EXTERNS()/LEADER_DICTIONARY() macros are no longer needed:

c
void leader_end_user(void) {\n    if (leader_sequence_one_key(KC_F)) {\n        // Leader, f => Types the below string\n        SEND_STRING("QMK is awesome.");\n    } else if (leader_sequence_two_keys(KC_D, KC_D)) {\n        // Leader, d, d => Ctrl+A, Ctrl+C\n        SEND_STRING(SS_LCTL("a") SS_LCTL("c"));\n    } else if (leader_sequence_three_keys(KC_D, KC_D, KC_S)) {\n        // Leader, d, d, s => Types the below string\n        SEND_STRING("https://start.duckduckgo.com\\n");\n    } else if (leader_sequence_two_keys(KC_A, KC_S)) {\n        // Leader, a, s => GUI+S\n        tap_code16(LGUI(KC_S));\n    }\n}

For more information please see the Leader Key documentation.

Updated Keyboard Codebases

The following keyboards have had their source moved within QMK:

Old Keyboard NameNew Keyboard Name
ramonimbao/aelithrmi_kb/aelith
ramonimbao/herringbone/prormi_kb/herringbone/pro
ramonimbao/herringbone/v1rmi_kb/herringbone/v1
ramonimbao/mona/v1_1rmi_kb/mona/v1_1
ramonimbao/mona/v1rmi_kb/mona/v1
ramonimbao/mona/v32armi_kb/mona/v32a
ramonimbao/squishy65rmi_kb/squishy65
ramonimbao/squishytklrmi_kb/squishytkl
ramonimbao/tkl_ffrmi_kb/tkl_ff
ramonimbao/tkl_ff/v1rmi_kb/tkl_ff/v1
ramonimbao/tkl_ff/v2rmi_kb/tkl_ff/v2
ramonimbao/wete/v1rmi_kb/wete/v1
ramonimbao/wete/v2rmi_kb/wete/v2
the_unistenothe_uni
xelus/xs60xelus/xs60/soldered

Notable core changes

As per last breaking changes cycle, there has been a lot of emphasis on behind-the-scenes changes, mainly around consolidation of core subsystems and constant values, as well as addressing tech debt. Whilst not outwardly visible, this cleanup and refactoring should start paying dividends as it simplifies future development and maintenance.

A handful of examples:

Full changelist

Core:

CLI:

Submodule updates:

Keyboards:

Keyboard fixes:

Others:

Bugs:

', 47); diff --git a/assets/ChangeLog_20230226.md.Cg0AYxIn.lean.js b/assets/ChangeLog_20230226.md.BhryCt4E.lean.js similarity index 91% rename from assets/ChangeLog_20230226.md.Cg0AYxIn.lean.js rename to assets/ChangeLog_20230226.md.BhryCt4E.lean.js index fe677fb94ca..1ed1a498aa8 100644 --- a/assets/ChangeLog_20230226.md.Cg0AYxIn.lean.js +++ b/assets/ChangeLog_20230226.md.BhryCt4E.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2023 February 26 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20230226.md","filePath":"ChangeLog/20230226.md"}'); const _sfc_main = { name: "ChangeLog/20230226.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 47); diff --git a/assets/ChangeLog_20230528.md.nX9R48zP.js b/assets/ChangeLog_20230528.md.BJIkUgVm.js similarity index 99% rename from assets/ChangeLog_20230528.md.nX9R48zP.js rename to assets/ChangeLog_20230528.md.BJIkUgVm.js index aba1da5f983..6e6b97384e9 100644 --- a/assets/ChangeLog_20230528.md.nX9R48zP.js +++ b/assets/ChangeLog_20230528.md.BJIkUgVm.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2023 May 28 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20230528.md","filePath":"ChangeLog/20230528.md"}'); const _sfc_main = { name: "ChangeLog/20230528.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Breaking Changes - 2023 May 28 Changelog

Notable Changes

As per last breaking changes cycle, there has been a lot of emphasis on behind-the-scenes changes, mainly around migration of configurables into info.json files, cleanup of info.json files, additional layout definitions for keyboards, adding support for general community layouts to keyboards, as well as addressing technical debt.

Of note for keyboard designers:

Repeat last key (#19700)

A new pair of keys has been added to QMK -- namely QK_REPEAT_KEY and QK_ALT_REPEAT_KEY (shortened: QK_REP/QK_AREP). These allow you to repeat the last key pressed, or in the case of the alternate key, press the "opposite" of the last key. For example, if you press KC_LEFT, pressing QK_REPEAT_KEY afterwards repeats KC_LEFT, but pressing QK_ALT_REPEAT_KEY instead sends KC_RIGHT.

The full list of default alternate keys is available on the Repeat Key documentation.

To enable these keys, in your keymap's rules.mk, add:

make
REPEAT_KEY_ENABLE = yes

...and add them to your keymap.

User callback for pre process record (#20584)

Two new boolean callback functions, pre_process_record_kb and pre_process_record_user, have been added. They are called at the beginning of process_record, right before process_combo.

Similar to existing *_kb and *_user callback functions, returning false will halt further processing of key events. The pre_process_record_user function will allow user space opportunity to handle or capture an input before it undergoes quantum processing. For example, while action tapping is still resolving the tap or hold output of a mod-tap key, pre_process_record_user can capture the next key record of an input event that follows. That key record can be used to influence the decision of the mod-tap key that is currently undergoing quantum processing.

Consolidate modelm (#14996

Several build targets for the IBM Model M were cluttered in different folders. The maintainers of several Model M replacement controller projects agreed to consolidate them under one common folder.

The list of all moved keyboard locations is listed below.

Changes Requiring User Action

IGNORE_MOD_TAP_INTERRUPT behaviour changes (#20211)

Following up from the last breaking changes cycle, IGNORE_MOD_TAP_INTERRUPT has been removed and if present in keymap code, will now fail to build. The previous functionality for IGNORE_MOD_TAP_INTERRUPT is now default, and should you wish to revert to the old behaviour, you can use HOLD_ON_OTHER_KEY_PRESS instead.

For more information, you are invited to read the section on HOLD_ON_OTHER_KEY_PRESS in the page on Tap-Hold configuration options.

Updated Keyboard Codebases

Old Keyboard NameNew Keyboard Name
ashpil/modelm_usbcibm/model_m/ashpil_usbc
binepad/bn009r2binepad/bn009/r2
converter/modelm101ibm/model_m/teensypp
converter/modelm101_teensy2ibm/model_m/teensy2
converter/modelm_sskibm/model_m_ssk/teensypp_ssk
durgod/dgk6x/hadesdurgod/dgk6x/hades_ansi
handwired/ibm122mibm/model_m_122/ibm122m
jacky_studio/piggy60/hotswapjacky_studio/piggy60/rev1/hotswap
jacky_studio/piggy60/solderjacky_studio/piggy60/rev1/solder
kamigakushijaykeeb/kamigakushi
massdrop/thekeydrop/thekey/v1
massdrop/thekey_v2drop/thekey/v2
mschwingen/modelmibm/model_m/mschwingen
tronguylabs/m122_3270ibm/model_m_122/m122_3270
tronguylabs/m122_3270/blackpillibm/model_m_122/m122_3270/blackpill
tronguylabs/m122_3270/bluepillibm/model_m_122/m122_3270/bluepill
tronguylabs/m122_3270/teensyibm/model_m_122/m122_3270/teensy
yugo_m/model_m_101ibm/model_m/yugo_m

Notable core changes

Encoder functionality fallback (#20320)

For keyboards who have not yet been migrated to encoder map, a default set of encoder functionality is now enabled, gracefully degrading functionality depending on which flags are enabled by the keyboard:

Additionally, this ensures that builds on QMK Configurator produce some sort of usable encoder mapping.

OLED Driver Improvements (#20331)

The "classic" OLED driver picked up support for additional sizes of OLED displays, support for the SH1107 controller, and SPI-based OLED support.

Other configurable items are available and can be found on the OLED Driver page.

Full changelist

Core:

CLI:

Submodule updates:

Keyboards:

Keyboard fixes:

Others:

Bugs:

', 46); diff --git a/assets/ChangeLog_20230528.md.nX9R48zP.lean.js b/assets/ChangeLog_20230528.md.BJIkUgVm.lean.js similarity index 91% rename from assets/ChangeLog_20230528.md.nX9R48zP.lean.js rename to assets/ChangeLog_20230528.md.BJIkUgVm.lean.js index ec36e4d95c2..458342b9598 100644 --- a/assets/ChangeLog_20230528.md.nX9R48zP.lean.js +++ b/assets/ChangeLog_20230528.md.BJIkUgVm.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2023 May 28 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20230528.md","filePath":"ChangeLog/20230528.md"}'); const _sfc_main = { name: "ChangeLog/20230528.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 46); diff --git a/assets/ChangeLog_20230827.md.NSPhmB6l.js b/assets/ChangeLog_20230827.md.hs0Cz5za.js similarity index 99% rename from assets/ChangeLog_20230827.md.NSPhmB6l.js rename to assets/ChangeLog_20230827.md.hs0Cz5za.js index 6d882ae24ee..62aed95b7a6 100644 --- a/assets/ChangeLog_20230827.md.NSPhmB6l.js +++ b/assets/ChangeLog_20230827.md.hs0Cz5za.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2023 Aug 27 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20230827.md","filePath":"ChangeLog/20230827.md"}'); const _sfc_main = { name: "ChangeLog/20230827.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Breaking Changes - 2023 Aug 27 Changelog

Notable Changes

As per last few breaking changes cycles, there have been a lot of behind-the-scenes changes, mainly around migration of configurables into info.json files, cleanup of info.json files, additional layout definitions for keyboards, adding support for general community layouts to keyboards, as well as addressing technical debt.

One thing to note for this release -- qmk/qmk_firmware is no longer accepting PRs for keymaps other than for manufacturer-supported keymaps. User keymap workflow has been documented here for several years. This change is to progressively reduce the maintenance burden on the project, and to allow us to focus on the core features of QMK.

Existing user keymaps and userspace areas will likely be relocated/removed in the future -- non-building keymaps and userspace will be first targets, likely during the new breaking changes cycle. We will provide more information on Discord regarding this initiative as it becomes available.

RGB Matrix optimizations (#21134, #21135)

Most RGB Matrix implementations now check whether or not RGB LED data has changed and skip transmission if it hasn't. This was measured to improve scan frequency in cases of static or infrequently-changing colors.

Audio optimizations (#21496, #21498)

Some audio code relating to "notes" used double datatypes, which are implemented in software floating-point for most ARM microcontrollers. This has been changed to use float datatypes instead, which are implemented in hardware floating-point on most ARM microcontrollers. This change increases performance as well as reduces the firmware size by significant number of bytes.

AVR sees minimal (if any) benefit -- double was interpreted as float on AVR anyway.

Changes Requiring User Action

Updated Keyboard Codebases

Old Keyboard NameNew Keyboard Name
capsunlocked/cu80/v2_ansi/basecapsunlocked/cu80/v2/ansi
capsunlocked/cu80/v2_iso/basecapsunlocked/cu80/v2/iso
handwired/dactyl_manuform/3x5_3handwired/dactyl_minidox
handwired/dactyl_manuform/6x6_kinesishandwired/dactyl_kinesis
handwired/jscotto/scotto36handwired/scottokeebs/scotto36
handwired/jscotto/scotto40handwired/scottokeebs/scotto40
handwired/jscotto/scotto9handwired/scottokeebs/scotto9
handwired/jscotto/scottocmdhandwired/scottokeebs/scottocmd
handwired/jscotto/scottostarterhandwired/scottokeebs/scottostarter
hfdkb/keyboard_sw/k83inland/kb83
idb_60idb/idb_60
kamigakushijaykeeb/kamigakushi
kbdfans/kbd67mkiirgbkbdfans/kbd67/mkiirgb
modelhibm/model_m/modelh
vintacoarse/vinta

Remove encoder in-matrix workaround code (#20389)

Some keyboards "hacked" encoder support into spare slots in the key matrix in order to interoperate with VIA. This workaround is no longer necessary, and the code has been removed. If you have a keyboard that uses this workaround, you will need to update your keymap to use the new Encoder Map API instead.

Unicodemap keycodes rename (#21092)

The Unicodemap keycodes have been renamed:

OldNew
X(i)UM(i)
XP(i,j)UP(i,j)

Remove old OLED API code (#21651)

Old OLED code using ssd1306.c ssd1306.h, and SSD1306OLED and other similar files have been consolidated to use the standard OLED driver. External user keymaps will need to be updated to use the standard OLED driver accordingly.

Driver naming consolidation (#21551, #21558, #21580, #21594, #21624, #21710)

In most circumstances this won't affect users -- only keyboard designers with currently-unmerged boards. The only users affected are people who have modified existing keyboards in order to add/modify haptics, lighting, or bluetooth -- and only if the base keyboard did not configure them already. Driver naming has been modified to be lowercase.

RGBLight (RGBLIGHT_DRIVER / rgblight.driver):

OldNew
WS2812ws2812
APA102apa102

LED Matrix (LED_MATRIX_DRIVER / led_matrix.driver):

OldNew
IS31FL3731is31fl3731
IS31FL3742Ais31fl3742a
IS31FL3743Ais31fl3743a
IS31FL3745is31fl3745
IS31FL3746Ais31fl3746a
CKLED2001ckled2001

RGB Matrix (RGB_MATRIX_DRIVER / rgb_matrix.driver):

OldNew
AW20216aw20216
IS31FL3731is31fl3731
IS31FL3733is31fl3733
IS31FL3736is31fl3736
IS31FL3737is31fl3737
IS31FL3741is31fl3741
IS31FL3742Ais31fl3742a
IS31FL3743Ais31fl3743a
IS31FL3745is31fl3745
IS31FL3746Ais31fl3746a
CKLED2001ckled2001
WS2812ws2812

OLED (OLED_DRIVER):

OldNew
SSD1306ssd1306

Haptic (HAPTIC_DRIVER):

OldNew
DRV2605Ldrv2605l
SOLENOIDsolenoid

Bluetooth (BLUETOOTH_DRIVER / bluetooth.driver):

OldNew
BluefruitLEbluefruit_le
RN42rn42

Full changelist

Core:

CLI:

Submodule updates:

Keyboards:

Keyboard fixes:

Others:

Bugs:

', 49); diff --git a/assets/ChangeLog_20230827.md.NSPhmB6l.lean.js b/assets/ChangeLog_20230827.md.hs0Cz5za.lean.js similarity index 91% rename from assets/ChangeLog_20230827.md.NSPhmB6l.lean.js rename to assets/ChangeLog_20230827.md.hs0Cz5za.lean.js index 532a9ab1ea9..d6071d7c11b 100644 --- a/assets/ChangeLog_20230827.md.NSPhmB6l.lean.js +++ b/assets/ChangeLog_20230827.md.hs0Cz5za.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2023 Aug 27 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20230827.md","filePath":"ChangeLog/20230827.md"}'); const _sfc_main = { name: "ChangeLog/20230827.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 49); diff --git a/assets/ChangeLog_20231126.md.D2Ok5QAf.js b/assets/ChangeLog_20231126.md.CTAqtmrE.js similarity index 99% rename from assets/ChangeLog_20231126.md.D2Ok5QAf.js rename to assets/ChangeLog_20231126.md.CTAqtmrE.js index 73e1775e834..11cf5eba53d 100644 --- a/assets/ChangeLog_20231126.md.D2Ok5QAf.js +++ b/assets/ChangeLog_20231126.md.CTAqtmrE.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2023 November 26 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20231126.md","filePath":"ChangeLog/20231126.md"}'); const _sfc_main = { name: "ChangeLog/20231126.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Breaking Changes - 2023 November 26 Changelog

Notable Features

As per last few breaking changes cycles, there have been a lot of behind-the-scenes changes, mainly around consolidation of config into info.json files, cleanup of info.json files, cleaning up driver naming, as well as addressing technical debt.

As a followup to last cycle's notable changes, as qmk/qmk_firmware is no longer accepting PRs for keymaps we're pleased to announce that storing and building keymaps externally from the normal QMK Firmware repository is now possible. This is done through the new External Userspace feature, more details below!

Changes Requiring User Action

Updated Keyboard Codebases

Old Keyboard NameNew Keyboard Name
adm42adm42/rev4
dp3000dp3000/rev1
handwired/dactyl_manuform/dmote/62keyhandwired/dmote
keychron/q0/rev_0130keychron/q0/base
keychron/q0/rev_0131keychron/q0/plus
keychron/q1/ansikeychron/q1v1/ansi
keychron/q1/ansi_encoderkeychron/q1v1/ansi_encoder
keychron/q1/isokeychron/q1v1/iso
keychron/q1/iso_encoderkeychron/q1v1/iso_encoder
keychron/q4/ansi_v1keychron/q4/ansi
kprepublic/bm40hsrgbkprepublic/bm40hsrgb/rev1
matchstickworks/southpadmatchstickworks/southpad/rev2
soda/mangomagic_force/mf17
soda/pocketmagic_force/mf34
studiokestra/line_tklstudiokestra/line_friends_tkl
ymdk/melody96ymdk/melody96/soldered

Notable core changes

External Userspace (#22222)

As mentioned above, the new External Userspace feature allows for keymaps to be stored and built externally from the main QMK Firmware repository. This allows for keymaps to be stored separately -- usually in their own repository -- and for users to be able to maintain and build their keymaps without needing to fork the main QMK Firmware repository.

See the External Userspace documentation for more details.

A significant portion of user keymaps have already been removed from qmk/qmk_firmware and more will follow in coming weeks. You can still recover your keymap from the tag user-keymaps-still-present if required -- a perfect time to migrate to the new External Userspace!

WARNING

This feature is still in beta, and we're looking for feedback on it. Please try it out and let us know what you think -- a new #help-userspace channel has been set up on Discord.

Improve and Cleanup Shutdown callbacks (#21060)

Shutdown callbacks at the keyboard level were never present, preventing safe shutdown sequencing for peripherals such as OLEDs, RGB LEDs, and other devices. This PR adds a new shutdown_kb function, as well as amending shutdown_user, allowing for safe shutdown of peripherals at both keyboard and keymap level.

See the Keyboard Shutdown/Reboot Code documentation for more details.

OLED Force Flush (#20953)

Along with the new shutdown_kb function, a new API oled_render_dirty(bool) function has been added. This allows OLED contents to be written deterministically when supplied with true -- that is, the OLED will be updated immediately, rather than waiting for the next OLED update cycle. This allows for OLEDs to show things such as "BOOTLOADER MODE" and the like if resetting to bootloader from QMK.

Switch statement helpers for keycode ranges (#20059)

Predefined ranges usable within switch statements have been added for groups of similar keycodes, where people who wish to handle entire blocks at once can do so. This allows keymaps to be immune to changes in keycode values, and also allows for more efficient code generation.

The ranges are as follows:

NameMapping
INTERNAL_KEYCODE_RANGEKC_NO ... KC_TRANSPARENT
BASIC_KEYCODE_RANGEKC_A ... KC_EXSEL
SYSTEM_KEYCODE_RANGEKC_SYSTEM_POWER ... KC_SYSTEM_WAKE
CONSUMER_KEYCODE_RANGEKC_AUDIO_MUTE ... KC_LAUNCHPAD
MOUSE_KEYCODE_RANGEKC_MS_UP ... KC_MS_ACCEL2
MODIFIER_KEYCODE_RANGEKC_LEFT_CTRL ... KC_RIGHT_GUI
SWAP_HANDS_KEYCODE_RANGEQK_SWAP_HANDS_TOGGLE ... QK_SWAP_HANDS_ONE_SHOT
MAGIC_KEYCODE_RANGEQK_MAGIC_SWAP_CONTROL_CAPS_LOCK ... QK_MAGIC_TOGGLE_ESCAPE_CAPS_LOCK
MIDI_KEYCODE_RANGEQK_MIDI_ON ... QK_MIDI_PITCH_BEND_UP
SEQUENCER_KEYCODE_RANGEQK_SEQUENCER_ON ... QK_SEQUENCER_STEPS_CLEAR
JOYSTICK_KEYCODE_RANGEQK_JOYSTICK_BUTTON_0 ... QK_JOYSTICK_BUTTON_31
PROGRAMMABLE_BUTTON_KEYCODE_RANGEQK_PROGRAMMABLE_BUTTON_1 ... QK_PROGRAMMABLE_BUTTON_32
AUDIO_KEYCODE_RANGEQK_AUDIO_ON ... QK_AUDIO_VOICE_PREVIOUS
STENO_KEYCODE_RANGEQK_STENO_BOLT ... QK_STENO_COMB_MAX
MACRO_KEYCODE_RANGEQK_MACRO_0 ... QK_MACRO_31
BACKLIGHT_KEYCODE_RANGEQK_BACKLIGHT_ON ... QK_BACKLIGHT_TOGGLE_BREATHING
RGB_KEYCODE_RANGERGB_TOG ... RGB_MODE_TWINKLE
QUANTUM_KEYCODE_RANGEQK_BOOTLOADER ... QK_ALT_REPEAT_KEY
KB_KEYCODE_RANGEQK_KB_0 ... QK_KB_31
USER_KEYCODE_RANGEQK_USER_0 ... QK_USER_31

Usage:

c
    switch (keycode) {\n        case KC_A ... KC_EXSEL:\n        case KC_LEFT_CTRL ... KC_RIGHT_GUI:\n        /* do stuff with basic and modifier keycodes */

Becomes:

c
    switch (keycode) {\n        case BASIC_KEYCODE_RANGE:\n        case MODIFIER_KEYCODE_RANGE:\n        /* do stuff with basic and modifier keycodes */

Quantum Painter OLED support (#19997)

Quantum Painter has picked up support for SH1106 displays -- commonly seen as 128x64 OLEDs. Support for both I2C and SPI displays is available.

If you're already using OLED through OLED_DRIVER_ENABLE = yes or equivalent in info.json and wish to use Quantum Painter instead, you'll need to disable the old OLED system, instead enabling Quantum Painter as well as enabling the appropriate SH1106 driver. See the Quantum Painter driver documentation for more details. The old OLED driver is still available, and keymaps do not require migrating to Quantum Painter if you don't want to do so.

RGB/LED lighting driver naming and cleanup (#21890, #21891, #21892, #21903, #21904, #21905, #21918, #21929, #21938, #22004, #22008, #22009, #22071, #22090, #22099, #22126, #22133, #22163, #22200, #22308, #22309, #22311, #22325, #22365, #22379, #22380, #22381, #22383, #22436)

As you can probably tell by the list of PRs just above, there has been a lot of cleanup and consolidation this cycle when it comes to RGB/LED lighting drivers. The number of changes is too large to list here, but the general theme has been focusing on consistency of naming, both of drivers themselves and their respective implementation and configuration. Most changes only affect keyboard designers -- if you find that your in-development keyboard is no longer building due to naming of defines changing, your best bet is to refer to another board already in the repository which has had the changes applied.

Peripheral subsystem enabling (#22253, #22448, #22106)

When enabling peripherals such as I2C, SPI, or Analog/ADC, some required manual inclusion of source files in order to provide driver support, and in some cases, when multiple drivers were using the same underlying peripheral, files were being added to the build multiple times.

Most systems requiring other peripherals now mark their respective dependencies as "required", allowing the build system to check whether peripherals are necessary before including them in the build rather than having each location enable them manually.

For a concrete example, users or keyboard designers who previously added SRC += analog.c in order to allow for analog readings via an ADC now should specify ANALOG_DRIVER_REQUIRED = yes instead. The full list of added options is as follows:

New optionOld Equivalent
ANALOG_DRIVER_REQUIRED = yesSRC += analog.c
APA102_DRIVER_REQUIRED = yesSRC += apa102.c
I2C_DRIVER_REQUIRED = yesSRC += i2c_master.c or QUANTUM_LIB_SRC += i2c_master.c
SPI_DRIVER_REQUIRED = yesSRC += spi_master.c or QUANTUM_LIB_SRC += spi_master.c
UART_DRIVER_REQUIRED = yesSRC += uart.c
WS2812_DRIVER_REQUIRED = yesSRC += ws2812.c

NKRO on V-USB boards (#22398)

NKRO is now available for ATmega32A and 328P-based keyboards (including PS2AVRGB/Bootmapper boards), thanks to some internal refactoring and cleanup. To enable it, the process is the same as always - add NKRO_ENABLE = yes to your rules.mk, then assign and press the NK_TOGG keycode to switch modes.

Full changelist

Core:

CLI:

Keyboards:

Keyboard fixes:

Others:

Bugs:

', 51); diff --git a/assets/ChangeLog_20231126.md.D2Ok5QAf.lean.js b/assets/ChangeLog_20231126.md.CTAqtmrE.lean.js similarity index 91% rename from assets/ChangeLog_20231126.md.D2Ok5QAf.lean.js rename to assets/ChangeLog_20231126.md.CTAqtmrE.lean.js index a0fb5882e27..f6142343485 100644 --- a/assets/ChangeLog_20231126.md.D2Ok5QAf.lean.js +++ b/assets/ChangeLog_20231126.md.CTAqtmrE.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2023 November 26 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20231126.md","filePath":"ChangeLog/20231126.md"}'); const _sfc_main = { name: "ChangeLog/20231126.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 51); diff --git a/assets/ChangeLog_20240225.md.B4-WrXj6.js b/assets/ChangeLog_20240225.md.DI6ZhnH_.js similarity index 99% rename from assets/ChangeLog_20240225.md.B4-WrXj6.js rename to assets/ChangeLog_20240225.md.DI6ZhnH_.js index d595d6009b7..a579acedd9a 100644 --- a/assets/ChangeLog_20240225.md.B4-WrXj6.js +++ b/assets/ChangeLog_20240225.md.DI6ZhnH_.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2024 February 25 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20240225.md","filePath":"ChangeLog/20240225.md"}'); const _sfc_main = { name: "ChangeLog/20240225.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Breaking Changes - 2024 February 25 Changelog

Notable Features

0.24.0 is mainly a maintenance release of QMK Firmware -- as per last few breaking changes cycles, there have been a lot of behind-the-scenes changes, mainly:

Changes Requiring User Action

Windows Driver Changes (QMK Toolbox 0.3.0 Release)

Flashing keyboards that target atmel-dfu or qmk-dfu on Windows using qmk flash or QMK Toolbox have traditionally used libusb for access to the DFU USB device. Since QMK Toolbox 0.3.0, this has changed to WinUSB.

If you update QMK Toolbox or update QMK MSYS, you may find that flashing Atmel DFU keyboards no longer functions as intended. If you strike such issues when flashing new firmware, you will need to replace the libusb driver with WinUSB using Zadig. You can follow the Recovering from Installation to Wrong Device instructions to replace the driver associated with the Atmel DFU bootloader, skipping the section about removal as Zadig will safely replace the driver instead. Please ensure your keyboard is in bootloader mode and has libusb as the existing driver before attempting to use Zadig to replace the driver. If instead you see HidUsb you're not in bootloader mode and should not continue with driver replacement.

Updated Keyboard Codebases

One note with updated keyboard names -- historical keyboard names are still considered valid when using External Userspace for builds. If you're already using External Userspace, you do not need to move your keymap inside your repository.

Old Keyboard NameNew Keyboard Name
enter67kezewa/enter67
enter80kezewa/enter80
epoch80kbdfans/epoch80
eu_isolationp3d/eu_isolation
flygone60/rev3shandoncodes/flygone60/rev3
hub16joshajohnson/hub16
hub20joshajohnson/hub20
jm60kbdfans/jm60
kira75kira/kira75
kira80kira/kira80
kmackbdmania/kmac
kmac_padkbdmania/kmac_pad
kudox/columnerkumaokobo/kudox/columner
kudox/rev1kumaokobo/kudox/rev1
kudox/rev2kumaokobo/kudox/rev2
kudox/rev3kumaokobo/kudox/rev3
kudox_full/rev1kumaokobo/kudox_full/rev1
kudox_gamekumaokobo/kudox_game
kudox_game/rev1kumaokobo/kudox_game/rev1
kudox_game/rev2kumaokobo/kudox_game/rev2
laser_ninja/pumpkin_padlaser_ninja/pumpkinpad
late9/rev1rookiebwoy/late9/rev1
leftysmoll/lefty
lefty/rev1smoll/lefty/rev1
lefty/rev2smoll/lefty/rev2
lpadlaneware/lpad
lw67laneware/lw67
lw75laneware/lw75
macro1laneware/macro1
macro3handwired/macro3
miniaxekagizaraya/miniaxe
mino/hotswapshandoncodes/mino/hotswap
mino_plus/hotswapshandoncodes/mino_plus/hotswap
mino_plus/solderedshandoncodes/mino_plus/soldered
mnk1800smonokei/mnk1800s
mnk50monokei/mnk50
mnk75monokei/mnk75
moonlanderzsa/moonlander
neopad/rev1rookiebwoy/neopad/rev1
pico/65keyskumaokobo/pico/65keys
pico/70keyskumaokobo/pico/70keys
pw88smoll/pw88
q4zp3d/q4z
raindroplaneware/raindrop
redox_wredox/wireless
riot_padshandoncodes/riot_pad
spaceyp3d/spacey
synapsep3d/synapse
tw40p3d/tw40
w1_atgeonworks/w1_at
z12zigotica/z12
z34zigotica/z34

Notable core changes

Renaming Arduino-style GPIO pin functions (#23085, #23093)

QMK has long used Arduino-style GPIO naming conventions. This has been confusing for users, as over time they've had new variations added, as well as users mistakenly thinking that QMK supports the rest of the Arduino ecosystem.

The decision was made to rename the GPIO manipulation functions with ones matching QMK Firmware's code styling.

OldNew
setPinInput(pin)gpio_set_pin_input(pin)
setPinInputHigh(pin)gpio_set_pin_input_high(pin)
setPinInputLow(pin)gpio_set_pin_input_low(pin)
setPinOutput(pin)gpio_set_pin_output(pin)
setPinOutputPushPull(pin)gpio_set_pin_output_push_pull(pin)
setPinOutputOpenDrain(pin)gpio_set_pin_output_open_drain(pin)
writePinHigh(pin)gpio_write_pin_high(pin)
writePinLow(pin)gpio_write_pin_low(pin)
writePin(pin, level)gpio_write_pin(pin, level)
readPin(pin)gpio_read_pin(pin)
togglePin(pin)gpio_toggle_pin(pin)

I2C driver API Changes (#22905)

Much like the GPIO refactoring, I2C APIs were also updated to conform to QMK naming standards. This is largely irrelevant to people using subsystem abstractions such as touchpads or RGB lighting, and only affects people manually communicating with other peripherals.

Old APINew API
i2c_readReg()i2c_read_register()
i2c_readReg16()i2c_read_register16()
i2c_writeReg()i2c_write_register()
i2c_writeReg16()i2c_write_register16()

Renaming Bootmagic Lite => Bootmagic (#22970, #22979)

Bootmagic "Lite" had no real meaning once the historical Bootmagic "Full" was deprecated and removed. Any references to Bootmagic Lite should now just refer to Bootmagic. We hope we got the majority of the code and the documentation, so if you find any more, let us know!

Threshold for automatic mouse layer activation (#21398)

In some cases, accidental automatic activation of the mouse layer made it difficult to continue typing, such as when brushing across a trackball. AUTO_MOUSE_THRESHOLD is now a configurable option in config.h which allows for specifying what the movement threshold is before automatically activating the mouse layer.

DIP Switch Mapping (#22543)

Much like Encoder Mapping, DIP Switch Mapping allows for specifying a table of actions to execute when a DIP switch state changes. See the DIP Switch Documentation for more information.

c
#if defined(DIP_SWITCH_MAP_ENABLE)\nconst uint16_t PROGMEM dip_switch_map[NUM_DIP_SWITCHES][NUM_DIP_STATES] = {\n    DIP_SWITCH_OFF_ON(DF(0), DF(1)),\n    DIP_SWITCH_OFF_ON(EC_NORM, EC_SWAP)\n};\n#endif

Quantum Painter updates (#18521, #20645, #22358)

Quantum Painter picked up support for the following:

Quantum Painter now supports the majority of common OLED panels supported by the basic OLED driver, so if you're using an ARM-based board you may find Quantum Painter a much more feature-rich API in comparison.

Full changelist

Core:

CLI:

Submodule updates:

Keyboards:

Keyboard fixes:

Bugs:

', 43); diff --git a/assets/ChangeLog_20240225.md.B4-WrXj6.lean.js b/assets/ChangeLog_20240225.md.DI6ZhnH_.lean.js similarity index 91% rename from assets/ChangeLog_20240225.md.B4-WrXj6.lean.js rename to assets/ChangeLog_20240225.md.DI6ZhnH_.lean.js index c4e638f914b..0d002fc2a85 100644 --- a/assets/ChangeLog_20240225.md.B4-WrXj6.lean.js +++ b/assets/ChangeLog_20240225.md.DI6ZhnH_.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2024 February 25 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20240225.md","filePath":"ChangeLog/20240225.md"}'); const _sfc_main = { name: "ChangeLog/20240225.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 43); diff --git a/assets/ChangeLog_20240526.md.DAmAEDG5.js b/assets/ChangeLog_20240526.md.CmS3Cuz0.js similarity index 99% rename from assets/ChangeLog_20240526.md.DAmAEDG5.js rename to assets/ChangeLog_20240526.md.CmS3Cuz0.js index 28085e652c3..6c2c09fc0f9 100644 --- a/assets/ChangeLog_20240526.md.DAmAEDG5.js +++ b/assets/ChangeLog_20240526.md.CmS3Cuz0.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2024 May 26 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20240526.md","filePath":"ChangeLog/20240526.md"}'); const _sfc_main = { name: "ChangeLog/20240526.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Breaking Changes - 2024 May 26 Changelog

Notable Features

May 2024 brings about another heavy maintenance release of QMK. Of the 209 PRs created this breaking changes cycle against the develop branch, 174 behind-the-scenes PRs (83%!) were aimed at converting, consolidating, and cleaning up keyboards and their configuration data. Not the most glamorous work, but it means QMK is in a much more manageable spot than what it was 3 months prior. The work steadily continues!

Changes Requiring User Action

Updated Keyboard Codebases

One note with updated keyboard names -- historical keyboard names are still considered valid when using External Userspace for builds. If you're already using External Userspace, you do not need to move your keymap inside your repository.

Old Keyboard NameNew Keyboard Name
adkb96adkb96/rev1
canary/canary60rgbcanary/canary60rgb/v1
handwired/meck_tklhandwired/meck_tkl/blackpill_f401
handwired/qc60handwired/qc60/proto
handwired/stef9998/split_5x7handwired/stef9998/split_5x7/rev1
juncojunco/rev1
keaboardkeaboard/rev1
kprepublic/jj40kprepublic/jj40/rev1
kprepublic/jj50kprepublic/jj50/rev1
melgeek/mj65melgeek/mj65/rev3
melgeek/mojo68melgeek/mojo68/rev1
melgeek/mojo75melgeek/mojo75/rev1
melgeek/tegicmelgeek/tegic/rev1
melgeek/z70ultramelgeek/z70ultra/rev1
miiiw/blackio83miiiw/blackio83/rev_0100
murcielagomurcielago/rev1
polillapolilla/rev1
qwertyydoxqwertyydox/rev1
spaceholdings/nebula68bspaceholdings/nebula68b/solder
splittysplitty/rev1
xiudi/xd004xiudi/xd004/v1

Remove deprecated quantum keycodes (#23407)

A bunch of legacy keycodes have been removed -- check the affected keycodes if you run into compilation problems, as it'll show you what the problematic keycodes should be replaced with.

The latest of these were officially deprecated within QMK in the August 2023 breaking changes -- the new keycodes are the way forward.

P3D Spacey Layout Updates (#23329)

This PR removed the LAYOUT macro that was configured for the Spacey. If you have a keymap for this keyboard, you will need to update your keymap using the following steps:

  1. Change your layout macro to LAYOUT_all.
  2. Remove the two KC_NO keycodes following the Space and Delete keys on the bottom row.
  3. Move the keycode for the encoder pushbutton (customarily Mute) to the end of the top row, after the customary Backspace key.
  4. Move the keycode for the Right Arrow to the end of the Shift row, after the Down Arrow key.

MechKeys ACR60 Layout Updates (#23309)

This PR removed and changed some of the layouts that were configured for the ACR60. If you use one of the following layouts, you will need to update your keymap:

LAYOUT_hhkb

  1. Change your layout macro to LAYOUT_60_hhkb.
  2. Remove any keycodes for the key between Left Shift and QWERTY Z.

LAYOUT_true_hhkb

  1. Change your layout macro to LAYOUT_60_true_hhkb.
  2. Remove any keycodes for the key between Left Shift and QWERTY Z.

LAYOUT_directional

  1. Change your layout macro to LAYOUT_60_ansi_arrow_split_bs.
  2. Remove any keycodes for the key between Left Shift and QWERTY Z.
  3. Remove any keycodes for the keys immediately before and after the 1.25u key of Split Spacebar.

If you need split spacebars, you may implement LAYOUT_60_ansi_arrow_split_space_split_bs and change your layout to it, removing the keycode between Left Shift and QWERTY Z.

LAYOUT_mitchsplit

  1. Use LAYOUT_60_ansi_split_space_split_rshift.

Notable core changes

Introduction of keyboard.json (22891)

One longer term goal of QMK is increased maintainability. As part of the continued push towards Data Driven Configuration, the build system has been updated to simplify the existing codebase, and power future workflows.

The keyboard.json configuration file allows the support of a single data file for keyboard level config.

Additionally,

Backwards compatibility of the old system has been maintained, but will be removed in a future breaking changes cycle.

Refactor ChibiOS USB endpoints to be fully async (#21656)

For most users, this change will mean suspend and resume on ARM-based boards works correctly. Others will notice that their keyboard now works correctly in BIOS/UEFI.

Essentially, changes were made in the internals of how QMK interacts with USB for ARM-based devices. Before this change, whenever a packet was attempted to be sent from the keyboard to the host machine, QMK would wait for the transmission to complete. After this change, those packets are queued and sent when opportune; this results in much better "correctness" as far as the USB protocol is concerned, and means far less likelihood of failure scenarios such as "stuck keys" or "random lockups" and the like.

Compliance checks were run against QMK firmwares for the most popular ARM microcontrollers, as well as suspend/resume tests. As far as we can tell, a whole host of hard-to-reproduce issues are mitigated by this change.

Deprecation Notices

In line with the notice period, deprecation notices for larger items are listed here.

Migration of VIA keymaps to VIA team control

The QMK team has been in discussion with the VIA maintainers and all VIA-related keymaps in the qmk_firmware repository will transition to a qmk_userspace-style repository under the VIA team's control at the end of the next breaking changes period. This allows the VIA team to support many more custom keyboard configurations, as well as reduces the turnaround time for any changes to the VIA protocol they wish to make.

At the end of the breaking changes cycle ending 2024-08-25, VIA-enabled keymaps will no longer be accepted into the QMK repository. At the time of migration, any open PRs against qmk_firmware which include new VIA-related keymaps will be subsequently be asked to remove those keymaps and instead raise a PR against the userspace repository containing all VIA keymaps.

Full changelist

Core:

CLI:

Submodule updates:

Keyboards:

Keyboard fixes:

Bugs:

', 54); diff --git a/assets/ChangeLog_20240526.md.DAmAEDG5.lean.js b/assets/ChangeLog_20240526.md.CmS3Cuz0.lean.js similarity index 91% rename from assets/ChangeLog_20240526.md.DAmAEDG5.lean.js rename to assets/ChangeLog_20240526.md.CmS3Cuz0.lean.js index a0fb283bc4d..5d201a883f2 100644 --- a/assets/ChangeLog_20240526.md.DAmAEDG5.lean.js +++ b/assets/ChangeLog_20240526.md.CmS3Cuz0.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2024 May 26 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20240526.md","filePath":"ChangeLog/20240526.md"}'); const _sfc_main = { name: "ChangeLog/20240526.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 54); diff --git a/assets/ChangeLog_20240825.md.BZM0WSFG.js b/assets/ChangeLog_20240825.md.B1yD6-2m.js similarity index 99% rename from assets/ChangeLog_20240825.md.BZM0WSFG.js rename to assets/ChangeLog_20240825.md.B1yD6-2m.js index 03dc52fd433..b7c5d31d67c 100644 --- a/assets/ChangeLog_20240825.md.BZM0WSFG.js +++ b/assets/ChangeLog_20240825.md.B1yD6-2m.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2024 August 25 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20240825.md","filePath":"ChangeLog/20240825.md"}'); const _sfc_main = { name: "ChangeLog/20240825.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Breaking Changes - 2024 August 25 Changelog

Notable Features

August 2024 brings another maintenance release of QMK. Almost all PRs this cycle were to do with cleanup or re-organization of existing features and code.

One key item is that there are no longer any via-enabled keymaps in the QMK repository -- these have all transitioned to an External Userspace repository under the VIA team's control. Going forward, all PRs to qmk_firmware must not contain via keymaps; these should instead be redirected to the VIA QMK Userspace repository.

Changes Requiring User Action

Updated Keyboard Codebases

One note with updated keyboard names -- historical keyboard names are still considered valid when using External Userspace for builds. If you're already using External Userspace, you do not need to move your keymap inside your repository.

Old Keyboard NameNew Keyboard Name
dnworks/9973dnworks/tkl87
maple_computing/lets_split_eh/ehmaple_computing/lets_split_eh
planck/ez/basezsa/planck_ez/base

SparkFun Pro Micro RP2040 converter renamed (#24192)

The converter for the SparkFun Pro Micro RP2040 has been renamed.

OldNew
promicro_rp2040sparkfun_rp2040

This change was made to avoid confusion between the clones named ProMicro RP2040 and the SparkFun Pro Micro RP2040. The clones should be using the rp2040_ce option.

Key Override keymap.c signature change (#24120)

Changes were made to key overrides in order to hook them into the keymap introspection system.

If you're using key overrides, your keymap.c will need a change to the signature of your list of key overrides, as well as removing the NULL terminator.

For example, you'll need to change existing code from (note the highlighted lines):

c
const key_override_t **key_overrides = (const key_override_t *[]){\n    &my_override_1,\n    &my_override_2,\n    NULL\n};

to:

c
const key_override_t *key_overrides[] = {\n    &my_override_1,\n    &my_override_2,\n};

ADNS9800 and PMW33xx firmware upload now opt-in (#24001)

Due to ambiguity with licensing compatibility, QMK has made the firmware ROM uploads for the ADNS9800 and PMW33xx lines of pointing device sensors temporarily opt-in with the view to removing them. Historically they were included by default, but as of this PR this is now no longer the case.

Please get in touch with the QMK team if your sensor no longer functions without the firmware upload -- so far we've tested each device type and they still seem to function without a new firmware, but this has not been a 100% exhaustive validation.

To re-enable firmware upload for your own builds, add the following to your keymap's config.h:

SensorDefine
ADNS9800#define ADNS9800_UPLOAD_SROM
PMW33xx#define PMW33XX_UPLOAD_SROM

Note

If no issues arise during this current breaking changes cycle, these sensor firmware ROMs will be removed from QMK entirely.

Deprecation Notices

In line with the notice period, deprecation notices for larger items are listed here.

Migration of VIA keymaps to VIA team control

Last breaking changes cycle, the QMK team informed that via keymaps are moving to the control of the VIA team. As of this merge, any via-enabled keymaps should now be PR'ed to the VIA QMK Userspace repository.

Any existing or newly-opened PRs against qmk_firmware will now be asked to remove any via-enabled keymaps from their submissions.

ADNS9800 and PMW33xx sensor firmware ROM removal

As mentioned above, there's license compatibility issues between QMK and the firmware blobs historically uploaded for the ADNS9800 and PMW33xx sensors. This notice is to inform users that these firmware blobs will almost certainly be removed from QMK in the next breaking changes merge.

As previously noted this does not seem to have any detrimental effect to any of those devices, as they seem to include firmware on-chip without requiring one to be uploaded. Please get in touch with the QMK team on Discord if your sensor is no longer functional.

Full changelist

Core:

CLI:

Keyboards:

Keyboard fixes:

Others:

Bugs:

', 46); diff --git a/assets/ChangeLog_20240825.md.BZM0WSFG.lean.js b/assets/ChangeLog_20240825.md.B1yD6-2m.lean.js similarity index 91% rename from assets/ChangeLog_20240825.md.BZM0WSFG.lean.js rename to assets/ChangeLog_20240825.md.B1yD6-2m.lean.js index 8a2d65c8473..8d20b943cbf 100644 --- a/assets/ChangeLog_20240825.md.BZM0WSFG.lean.js +++ b/assets/ChangeLog_20240825.md.B1yD6-2m.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2024 August 25 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20240825.md","filePath":"ChangeLog/20240825.md"}'); const _sfc_main = { name: "ChangeLog/20240825.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 46); diff --git a/assets/api_development_environment.md.EhJClb9f.lean.js b/assets/api_development_environment.md.BdPW5Xxm.js similarity index 98% rename from assets/api_development_environment.md.EhJClb9f.lean.js rename to assets/api_development_environment.md.BdPW5Xxm.js index 94f7c0cc595..b9b5ccaab57 100644 --- a/assets/api_development_environment.md.EhJClb9f.lean.js +++ b/assets/api_development_environment.md.BdPW5Xxm.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Development Environment Setup","description":"","frontmatter":{},"headers":[],"relativePath":"api_development_environment.md","filePath":"api_development_environment.md"}'); const _sfc_main = { name: "api_development_environment.md" }; const _hoisted_1 = /* @__PURE__ */ createBaseVNode("h1", { diff --git a/assets/api_development_environment.md.EhJClb9f.js b/assets/api_development_environment.md.BdPW5Xxm.lean.js similarity index 98% rename from assets/api_development_environment.md.EhJClb9f.js rename to assets/api_development_environment.md.BdPW5Xxm.lean.js index 94f7c0cc595..b9b5ccaab57 100644 --- a/assets/api_development_environment.md.EhJClb9f.js +++ b/assets/api_development_environment.md.BdPW5Xxm.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Development Environment Setup","description":"","frontmatter":{},"headers":[],"relativePath":"api_development_environment.md","filePath":"api_development_environment.md"}'); const _sfc_main = { name: "api_development_environment.md" }; const _hoisted_1 = /* @__PURE__ */ createBaseVNode("h1", { diff --git a/assets/api_development_overview.md.Dcey4ntL.js b/assets/api_development_overview.md.BZJTSE_s.js similarity index 98% rename from assets/api_development_overview.md.Dcey4ntL.js rename to assets/api_development_overview.md.BZJTSE_s.js index 610e791c791..d3ab23e1848 100644 --- a/assets/api_development_overview.md.Dcey4ntL.js +++ b/assets/api_development_overview.md.BZJTSE_s.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Compiler Development Guide","description":"","frontmatter":{},"headers":[],"relativePath":"api_development_overview.md","filePath":"api_development_overview.md"}'); const _sfc_main = { name: "api_development_overview.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Compiler Development Guide

This page attempts to introduce developers to the QMK Compiler. It does not go into nitty gritty details- for that you should read code. What this will give you is a framework to hang your understanding on as you read the code.

Overview

The QMK Compile API consists of a few movings parts:

Architecture Diagram

API Clients interact exclusively with the API service. This is where they submit jobs, check status, and download results. The API service inserts compile jobs into Redis Queue and checks both RQ and S3 for the results of those jobs.

Workers fetch new compile jobs from RQ, compile them, and then upload the source and the binary to an S3 compatible storage engine.

Workers

QMK Compiler Workers are responsible for doing the actual building. When a worker pulls a job from RQ it does several things to complete that job:

API Service

The API service is a relatively simple Flask application. There are a few main views you should understand.

@app.route('/v1/compile', methods=['POST'])

This is the main entrypoint for the API. A client's interaction starts here. The client POST's a JSON document describing their keyboard, and the API does some (very) basic validation of that JSON before submitting the compile job.

@app.route('/v1/compile/<string:job_id>', methods=['GET'])

This is the most frequently called endpoint. It pulls the job details from redis, if they're still available, or the cached job details on S3 if they're not.

@app.route('/v1/compile/<string:job_id>/download', methods=['GET'])

This method allows users to download the compiled firmware file.

@app.route('/v1/compile/<string:job_id>/source', methods=['GET'])

This method allows users to download the source for their firmware.

', 20); diff --git a/assets/api_development_overview.md.Dcey4ntL.lean.js b/assets/api_development_overview.md.BZJTSE_s.lean.js similarity index 92% rename from assets/api_development_overview.md.Dcey4ntL.lean.js rename to assets/api_development_overview.md.BZJTSE_s.lean.js index f6c6a39039f..2ef992d9d31 100644 --- a/assets/api_development_overview.md.Dcey4ntL.lean.js +++ b/assets/api_development_overview.md.BZJTSE_s.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Compiler Development Guide","description":"","frontmatter":{},"headers":[],"relativePath":"api_development_overview.md","filePath":"api_development_overview.md"}'); const _sfc_main = { name: "api_development_overview.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 20); diff --git a/assets/api_docs.md.CRoD6CbL.js b/assets/api_docs.md.DUul50UI.js similarity index 99% rename from assets/api_docs.md.CRoD6CbL.js rename to assets/api_docs.md.DUul50UI.js index d023b9aea24..5e5dd535278 100644 --- a/assets/api_docs.md.CRoD6CbL.js +++ b/assets/api_docs.md.DUul50UI.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK API","description":"","frontmatter":{},"headers":[],"relativePath":"api_docs.md","filePath":"api_docs.md"}'); const _sfc_main = { name: "api_docs.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK API

This page describes using the QMK API. If you are an application developer you can use this API to compile firmware for any QMK Keyboard.

Overview

This service is an asynchronous API for compiling custom keymaps. You POST some JSON to the API, periodically check the status, and when your firmware has finished compiling you can download the resulting firmware and (if desired) source code for that firmware.

Example JSON Payload:

json
{\n  "keyboard": "clueboard/66/rev2",\n  "keymap": "my_awesome_keymap",\n  "layout": "LAYOUT_all",\n  "layers": [\n    ["KC_GRV","KC_1","KC_2","KC_3","KC_4","KC_5","KC_6","KC_7","KC_8","KC_9","KC_0","KC_MINS","KC_EQL","KC_GRV","KC_BSPC","KC_PGUP","KC_TAB","KC_Q","KC_W","KC_E","KC_R","KC_T","KC_Y","KC_U","KC_I","KC_O","KC_P","KC_LBRC","KC_RBRC","KC_BSLS","KC_PGDN","KC_CAPS","KC_A","KC_S","KC_D","KC_F","KC_G","KC_H","KC_J","KC_K","KC_L","KC_SCLN","KC_QUOT","KC_NUHS","KC_ENT","KC_LSFT","KC_NUBS","KC_Z","KC_X","KC_C","KC_V","KC_B","KC_N","KC_M","KC_COMM","KC_DOT","KC_SLSH","KC_INT1","KC_RSFT","KC_UP","KC_LCTL","KC_LGUI","KC_LALT","KC_INT5","KC_SPC","KC_SPC","KC_INT4","KC_RALT","KC_RCTL","MO(1)","KC_LEFT","KC_DOWN","KC_RIGHT"],\n    ["KC_ESC","KC_F1","KC_F2","KC_F3","KC_F4","KC_F5","KC_F6","KC_F7","KC_F8","KC_F9","KC_F10","KC_F11","KC_F12","KC_TRNS","KC_DEL","BL_STEP","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","_______","KC_TRNS","KC_PSCR","KC_SCRL","KC_PAUS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(2)","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_PGUP","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(1)","KC_LEFT","KC_PGDN","KC_RGHT"],\n    ["KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","QK_BOOT","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(2)","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(1)","KC_TRNS","KC_TRNS","KC_TRNS"]\n  ]\n}

As you can see the payload describes all aspects of a keyboard necessary to create and generate a firmware. Each layer is a single list of QMK keycodes the same length as the keyboard's LAYOUT macro. If a keyboard supports multiple LAYOUT macros you can specify which macro to use.

Submitting a Compile Job

To compile your keymap into a firmware simply POST your JSON to the /v1/compile endpoint. In the following example we've placed the JSON payload into a file named json_data.

$ curl -H "Content-Type: application/json" -X POST -d "$(< json_data)" https://api.qmk.fm/v1/compile\n{\n  "enqueued": true,\n  "job_id": "ea1514b3-bdfc-4a7b-9b5c-08752684f7f6"\n}

Checking The Status

After submitting your keymap you can check the status using a simple HTTP GET call:

$ curl https://api.qmk.fm/v1/compile/ea1514b3-bdfc-4a7b-9b5c-08752684f7f6\n{\n  "created_at": "Sat, 19 Aug 2017 21:39:12 GMT",\n  "enqueued_at": "Sat, 19 Aug 2017 21:39:12 GMT",\n  "id": "f5f9b992-73b4-479b-8236-df1deb37c163",\n  "status": "running",\n  "result": null\n}

This shows us that the job has made it through the queue and is currently running. There are 5 possible statuses:

Examining Finished Results

Once your compile job has finished you'll check the result key. The value of this key is a hash containing several key bits of information:

Constants

If you're writing a tool that leverages constants used within QMK, the API is used to publish "locked-in" versions of those constants in order to ensure that any third-party tooling has a canonical set of information to work with.

The list of available constants can be retrieved by accessing one of the following endpoints:

$ curl https://keyboards.qmk.fm/v1/constants_metadata.json # For `master`\n{"last_updated": "2022-11-26 00:00:00 GMT", "constants": {"keycodes": ["0.0.1"]}}\n\n$ curl https://keyboards.develop.qmk.fm/v1/constants_metadata.json # For `develop`\n{"last_updated": "2022-11-26 12:00:00 GMT", "constants": {"keycodes": ["0.0.1", "0.0.2"]}}

WARNING

Versions exported by the master endpoint are locked-in. Any extra versions that exist on the develop endpoint which don't exist in master are subject to change.

TIP

Only keycodes are currently published, but over time all other "externally visible" IDs are expected to appear on these endpoints.

To retrieve the constants associated with a subsystem, the endpoint format is as follows:

# https://keyboards.qmk.fm/v1/constants/{subsystem}_{version}.json

Which, for the metadata endpoint above results in a request of:

$ curl https://keyboards.qmk.fm/v1/constants/keycodes_0.0.1.json\n{\n    "ranges": {\n        "0x0000/0x00FF": {\n            "define": "QK_BASIC"\n        },\n        "0x0100/0x1EFF": {\n            "define": "QK_MODS"\n        },\n        "0x2000/0x1FFF": {\n            "define": "QK_MOD_TAP"\n<snip>
', 28); diff --git a/assets/api_docs.md.CRoD6CbL.lean.js b/assets/api_docs.md.DUul50UI.lean.js similarity index 90% rename from assets/api_docs.md.CRoD6CbL.lean.js rename to assets/api_docs.md.DUul50UI.lean.js index b5132682237..1fe1d9b7481 100644 --- a/assets/api_docs.md.CRoD6CbL.lean.js +++ b/assets/api_docs.md.DUul50UI.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK API","description":"","frontmatter":{},"headers":[],"relativePath":"api_docs.md","filePath":"api_docs.md"}'); const _sfc_main = { name: "api_docs.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 28); diff --git a/assets/api_overview.md.0FPaUsMb.js b/assets/api_overview.md.BzzvVapY.js similarity index 97% rename from assets/api_overview.md.0FPaUsMb.js rename to assets/api_overview.md.BzzvVapY.js index 300033c83d8..5407556a29e 100644 --- a/assets/api_overview.md.0FPaUsMb.js +++ b/assets/api_overview.md.BzzvVapY.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK API","description":"","frontmatter":{},"headers":[],"relativePath":"api_overview.md","filePath":"api_overview.md"}'); const _sfc_main = { name: "api_overview.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK API

The QMK API provides an asynchronous API that Web and GUI tools can use to compile arbitrary keymaps for any keyboard supported by QMK. The stock keymap template supports all QMK keycodes that do not require supporting C code. Keyboard maintainers can supply their own custom templates to enable more functionality.

App Developers

If you are an app developer interested in using this API in your application you should head over to Using The API.

Keyboard Maintainers

If you would like to enhance your keyboard's support in the QMK Compiler API head over to the Keyboard Support section.

Backend Developers

If you are interested in working on the API itself you should start by setting up a Development Environment, then check out Hacking On The API.

', 8); diff --git a/assets/api_overview.md.0FPaUsMb.lean.js b/assets/api_overview.md.BzzvVapY.lean.js similarity index 91% rename from assets/api_overview.md.0FPaUsMb.lean.js rename to assets/api_overview.md.BzzvVapY.lean.js index aa6c108c0fe..1473d6d5305 100644 --- a/assets/api_overview.md.0FPaUsMb.lean.js +++ b/assets/api_overview.md.BzzvVapY.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK API","description":"","frontmatter":{},"headers":[],"relativePath":"api_overview.md","filePath":"api_overview.md"}'); const _sfc_main = { name: "api_overview.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 8); diff --git a/assets/app.DP5m9TW_.js b/assets/app.G8yPgZjW.js similarity index 88% rename from assets/app.DP5m9TW_.js rename to assets/app.G8yPgZjW.js index 0fb0b489209..888c90f86b7 100644 --- a/assets/app.DP5m9TW_.js +++ b/assets/app.G8yPgZjW.js @@ -1,5 +1,5 @@ -import { V as inBrowser, a9 as useUpdateHead, aa as RouterSymbol, ab as initData, ac as dataSymbol, ad as Content, ae as ClientOnly, af as siteDataRef, ag as createSSRApp, ah as createRouter, ai as pathToFile, Y as __vitePreload, d as defineComponent, u as useData, k as onMounted, y as watchEffect, aj as usePrefetch, ak as useCopyCode, al as useCodeGroups, am as h } from "./chunks/framework.DyMmIvSC.js"; -import { R as RawTheme } from "./chunks/theme.DAZguuVX.js"; +import { R as RawTheme } from "./chunks/theme.BXuOQ_O6.js"; +import { V as inBrowser, a9 as useUpdateHead, aa as RouterSymbol, ab as initData, ac as dataSymbol, ad as Content, ae as ClientOnly, af as siteDataRef, ag as createSSRApp, ah as createRouter, ai as pathToFile, d as defineComponent, u as useData, k as onMounted, y as watchEffect, aj as usePrefetch, ak as useCopyCode, al as useCodeGroups, am as h } from "./chunks/framework.Clpp4x2N.js"; function resolveThemeExtends(theme) { if (theme.extends) { const base = resolveThemeExtends(theme.extends); @@ -86,10 +86,10 @@ function newRouter() { if (false) ; else { - pageModule = __vitePreload(() => import( + pageModule = import( /*@vite-ignore*/ pageFilePath - ), true ? [] : void 0); + ); } } if (inBrowser) { diff --git a/assets/arm_debugging.md.BH-H2Ukz.js b/assets/arm_debugging.md.DVeULkLA.js similarity index 99% rename from assets/arm_debugging.md.BH-H2Ukz.js rename to assets/arm_debugging.md.DVeULkLA.js index 2e425575d92..9dcf9d1982a 100644 --- a/assets/arm_debugging.md.BH-H2Ukz.js +++ b/assets/arm_debugging.md.DVeULkLA.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"ARM Debugging using Eclipse","description":"","frontmatter":{},"headers":[],"relativePath":"arm_debugging.md","filePath":"arm_debugging.md"}'); const _sfc_main = { name: "arm_debugging.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

ARM Debugging using Eclipse

This page describes how to setup debugging for ARM MCUs using an SWD adapter and open-source/free tools. In this guide we will install GNU MCU Eclipse IDE for C/C++ Developers and OpenOCD together with all the necessary dependencies.

This guide is catered towards advance users and assumes you can compile an ARM compatible keyboard on your machine using the MAKE flow.

Installing the software

The main objective here is to get the MCU Eclipse IDE correctly installed on our machine. The necessary instructions are derived from this install guide.

The xPack Manager

This tool is a software package manager and it is used to help us get the necessary dependencies.

XPM runs using Node.js so grab that from here. After installation, open a terminal and type npm -v. A reply with the version number means that the installation was successful.

XPM installation instructions can be found here and are OS specific. Entering xpm --version to your terminal should return the software version.

The ARM Toolchain

Using XPM it is very easy to install the ARM toolchain. Enter the command xpm install --global @xpack-dev-tools/arm-none-eabi-gcc.

Windows build tools

If you are using windows you need to install this!

xpm install --global @gnu-mcu-eclipse/windows-build-tools

Programmer/Debugger Drivers

Now it's time to install your programmer's drivers. This tutorial was made using an ST-Link v2 which you can get from almost anywhere. If you have an ST-Link the drivers can be found here otherwise consult the manufacturer of your tool.

OpenOCD

This dependency allows SWD access from GDB and it is essential for debugging. Run xpm install --global @xpack-dev-tools/openocd.

Java

Java is needed by Eclipse so please download it from here.

GNU MCU Eclipse IDE

Now its finally time to install the IDE. Use the Release page here to get the latest version.

Configuring Eclipse

Open up the Eclipse IDE we just downloaded. To import our QMK directory select File -> Import -> C/C++ -> Existing Code as Makefile Project. Select Next and use Browse to select your QMK folder. In the tool-chain list select ARM Cross GCC and select Finish.

Now you can see the QMK folder on the left hand side. Right click it and select Properties. On the left hand side, expand MCU and select ARM Toolchains Paths. Press xPack and OK. Repeat for OpenOCD Path and if you are on Windows for Build Tools Path. Select Apply and Close.

Now its time to install the necessary MCU packages. Go to Packs perspective by selecting Window -> Perspective -> Open Perspective -> Other... -> Packs. Now select the yellow refresh symbol next to the Packs tab. This will take a long time as it is requesting the MCU definitions from various places. If some of the links fail you can probably select Ignore.

When this finishes you must find the MCU which we will be building/debugging for. In this example I will be using the STM32F3 series MCUs. On the left, select STMicroelectronics -> STM32F3 Series. On the middle window we can see the pack. Right click and select Install. Once that is done we can go back to the default perspective, Window -> Perspective -> Open Perspective -> Other... -> C/C++.

We need to let eclipse know the device we intent to build QMK on. Right click on the QMK folder -> Properties -> C/C++ Build -> Settings. Select the Devices tab and under Devices select the appropriate variant of your MCU. For my example it is STM32F303CC

While we are here let's setup the build command as well. Select C/C++ Build and then the Behavior tab. On the Build command, replace all with your necessary make command. For example for a rev6 Planck with the default keymap this would be planck/rev6:default. Select Apply and Close.

Building

If you have setup everything correctly pressing the hammer button should build the firmware for you and a .bin file should appear.

Debugging

Connecting the Debugger

ARM MCUs use the Single Wire Debug (SWD) protocol which comprises of the clock (SWCLK) signal and the data (SWDIO) signal. Connecting this two wires and ground should be enough to allow full manipulation of the MCU. Here we assume that the keyboard will be powered though USB. The RESET signal is not necessary as we can manually assert it using the reset button. For a more advance setup, the SWO signal can be used which pipes printf and scanf asynchronously to the host but for our setup we will ignore it.

NOTE: Make sure the SWCLK and SWDIO pins are not used in the matrix of your keyboard. If they are you can temporarily switch them for some other pins.

Configuring the Debugger

Right click on your QMK folder, select Debug As -> Debug Configurations... . Here double click on GDB OpenOCD Debugging. Select the Debugger tab and enter the configuration necessary for your MCU. This might take some fiddling and Googling to find out. The default script for the STM32F3 is called stm32f3discovery.cfg. To let OpenOCD know, in the Config options enter -f board/stm32f3discovery.cfg.

NOTE: In my case this configuration script requires editing to disable the reset assertion. The locations of the scripts can be found in the actual executable field usually under the path openocd/version/.content/scripts/board. Here I edited reset_config srst_only to reset_config none.

Select Apply and Close.

Running the Debugger.

Reset your keyboard.

Press the bug icon and if all goes well you should soon find yourself in the Debug perspective. Here the program counter will pause at the beginning of the main function and wait for you to press Play. Most of the features of all debuggers work on Arm MCUs but for exact details Google is your friend!

Happy debugging!

', 43); diff --git a/assets/arm_debugging.md.BH-H2Ukz.lean.js b/assets/arm_debugging.md.DVeULkLA.lean.js similarity index 91% rename from assets/arm_debugging.md.BH-H2Ukz.lean.js rename to assets/arm_debugging.md.DVeULkLA.lean.js index cb3e424126a..589fd253083 100644 --- a/assets/arm_debugging.md.BH-H2Ukz.lean.js +++ b/assets/arm_debugging.md.DVeULkLA.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"ARM Debugging using Eclipse","description":"","frontmatter":{},"headers":[],"relativePath":"arm_debugging.md","filePath":"arm_debugging.md"}'); const _sfc_main = { name: "arm_debugging.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 43); diff --git a/assets/breaking_changes.md.y7zfo29K.js b/assets/breaking_changes.md.DWuHNvRs.js similarity index 99% rename from assets/breaking_changes.md.y7zfo29K.js rename to assets/breaking_changes.md.DWuHNvRs.js index 60dfb98f372..696a58fc5bc 100644 --- a/assets/breaking_changes.md.y7zfo29K.js +++ b/assets/breaking_changes.md.DWuHNvRs.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Breaking Changes","description":"","frontmatter":{},"headers":[],"relativePath":"breaking_changes.md","filePath":"breaking_changes.md"}'); const _sfc_main = { name: "breaking_changes.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Breaking Changes

This document describes QMK's Breaking Change process. A Breaking Change is any change which modifies how QMK behaves in a way that in incompatible or potentially dangerous. We limit these changes so that users can have confidence that updating their QMK tree will not break their keymaps.

This also includes any keyboard moves within the repository.

The breaking change period is when we will merge PRs that change QMK in dangerous or unexpected ways. There is a built-in period of testing so we are confident that any problems caused are rare or unable to be predicted.

Practically, this means QMK merges the develop branch into the master branch on a 3-month cadence.

What has been included in past Breaking Changes?

When is the next Breaking Change?

The next Breaking Change is scheduled for November 24, 2024.

Important Dates

What changes will be included?

To see a list of breaking changes merge candidates you can look at the core label. This label is applied whenever a PR is raised or changed, but only if the PR includes changes to core areas of QMK Firmware. A PR with that label applied is not guaranteed to be merged in the current cycle. New changes might be added between now and when develop is closed, and it is generally the responsibility of the submitter to handle conflicts. There is also another label used by QMK Collaborators -- breaking_change_YYYYqN -- which signifies to maintainers that it is a strong candidate for inclusion, and should be prioritized for review.

If you want your breaking change to be included in this round you need to create a PR and have it accepted by QMK Collaborators before develop closes. After develop closes, new submissions will be deferred to the next breaking changes cycle.

The simpler your PR is, the easier it is for maintainers to review, thus a higher likelihood of a faster merge. Large PRs tend to require a lot of attention, refactoring, and back-and-forth with subsequent reviews -- with other PRs getting merged in the meantime larger unmerged PRs are far more likely to be susceptible to conflicts.

Criteria for acceptance:

Strongly suggested:

Checklists

This section documents various processes we use when running the Breaking Changes process.

4 Weeks Before Merge

2 Weeks Before Merge

1 Week Before Merge

2 Days Before Merge

Day Of Merge

Post-merge operations

Updating the develop branch

This happens immediately after the previous develop branch is merged to master.

Set up Discord events for the next cycle

', 37); diff --git a/assets/breaking_changes.md.y7zfo29K.lean.js b/assets/breaking_changes.md.DWuHNvRs.lean.js similarity index 91% rename from assets/breaking_changes.md.y7zfo29K.lean.js rename to assets/breaking_changes.md.DWuHNvRs.lean.js index 0fe831dd81f..0e42f0a6b53 100644 --- a/assets/breaking_changes.md.y7zfo29K.lean.js +++ b/assets/breaking_changes.md.DWuHNvRs.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Breaking Changes","description":"","frontmatter":{},"headers":[],"relativePath":"breaking_changes.md","filePath":"breaking_changes.md"}'); const _sfc_main = { name: "breaking_changes.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 37); diff --git a/assets/breaking_changes_history.md.CJNU0o77.js b/assets/breaking_changes_history.md.Bkin0Zmd.js similarity index 97% rename from assets/breaking_changes_history.md.CJNU0o77.js rename to assets/breaking_changes_history.md.Bkin0Zmd.js index 0c2c661bc33..dd58c8bc297 100644 --- a/assets/breaking_changes_history.md.CJNU0o77.js +++ b/assets/breaking_changes_history.md.Bkin0Zmd.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Past Breaking Changes","description":"","frontmatter":{},"headers":[],"relativePath":"breaking_changes_history.md","filePath":"breaking_changes_history.md"}'); const _sfc_main = { name: "breaking_changes_history.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Past Breaking Changes

This page links to all previous changelogs from the QMK Breaking Changes process.

', 3); diff --git a/assets/breaking_changes_history.md.CJNU0o77.lean.js b/assets/breaking_changes_history.md.Bkin0Zmd.lean.js similarity index 91% rename from assets/breaking_changes_history.md.CJNU0o77.lean.js rename to assets/breaking_changes_history.md.Bkin0Zmd.lean.js index c982fa1a483..d22d97e969f 100644 --- a/assets/breaking_changes_history.md.CJNU0o77.lean.js +++ b/assets/breaking_changes_history.md.Bkin0Zmd.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Past Breaking Changes","description":"","frontmatter":{},"headers":[],"relativePath":"breaking_changes_history.md","filePath":"breaking_changes_history.md"}'); const _sfc_main = { name: "breaking_changes_history.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 3); diff --git a/assets/breaking_changes_instructions.md.C99NYDjO.js b/assets/breaking_changes_instructions.md.C9StPyYH.js similarity index 98% rename from assets/breaking_changes_instructions.md.C99NYDjO.js rename to assets/breaking_changes_instructions.md.C9StPyYH.js index 38bcaea69c5..dc96b97ec84 100644 --- a/assets/breaking_changes_instructions.md.C99NYDjO.js +++ b/assets/breaking_changes_instructions.md.C9StPyYH.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Breaking Changes: My Pull Request Was Flagged","description":"","frontmatter":{},"headers":[],"relativePath":"breaking_changes_instructions.md","filePath":"breaking_changes_instructions.md"}'); const _sfc_main = { name: "breaking_changes_instructions.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Breaking Changes: My Pull Request Was Flagged

A QMK member may have replied to your pull request stating that your submission is a breaking change. In their judgment, the changes you have proposed have greater implications for either QMK, or its users.

Some things that may cause a pull request to be flagged are:

What Do I Do?

If it is determined that your submission is a breaking change, there are a few things you can do to smooth the process:

Consider Splitting Up Your PR

If you are contributing core code, and the only reason it needs to go through breaking changes is that you are updating keymaps to match your change, consider whether you can submit your feature in a way that the old keymaps continue to work. Then submit a separate PR that goes through the breaking changes process to remove the old code.

Document Your Changes

Understanding the purpose for your submission, and possible implications or actions it will require can make the review process more straightforward. A changelog may suffice for this purpose, but more extensive changes may require a level of detail that is ill-suited for a changelog.

Commenting on your pull request and being responsive to questions, comments, and change requests is much appreciated.

Ask for Help

Having your submission flagged may have caught you off guard. If you find yourself intimidated or overwhelmed, let us know. Comment on your pull request, or reach out to the QMK team on Discord.

', 13); diff --git a/assets/breaking_changes_instructions.md.C99NYDjO.lean.js b/assets/breaking_changes_instructions.md.C9StPyYH.lean.js similarity index 92% rename from assets/breaking_changes_instructions.md.C99NYDjO.lean.js rename to assets/breaking_changes_instructions.md.C9StPyYH.lean.js index adea651e0ff..d6f7cd833b1 100644 --- a/assets/breaking_changes_instructions.md.C99NYDjO.lean.js +++ b/assets/breaking_changes_instructions.md.C9StPyYH.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Breaking Changes: My Pull Request Was Flagged","description":"","frontmatter":{},"headers":[],"relativePath":"breaking_changes_instructions.md","filePath":"breaking_changes_instructions.md"}'); const _sfc_main = { name: "breaking_changes_instructions.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 13); diff --git a/assets/capabilities.md.DgKwcj5n.js b/assets/capabilities.md.BPL75VHK.js similarity index 99% rename from assets/capabilities.md.DgKwcj5n.js rename to assets/capabilities.md.BPL75VHK.js index 5fd0b2151a0..39b43865497 100644 --- a/assets/capabilities.md.DgKwcj5n.js +++ b/assets/capabilities.md.BPL75VHK.js @@ -1,5 +1,5 @@ import { _ as _imports_0$1 } from "./chunks/color-wheel.DIUCmfNZ.js"; -import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, o as openBlock, l as createBaseVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, o as openBlock, l as createBaseVNode } from "./chunks/framework.Clpp4x2N.js"; const _imports_0 = "/assets/badge-community-light.DoYC_YjC.svg"; const _imports_1 = "/assets/badge-community-dark.PWO_temo.svg"; const __pageData = JSON.parse('{"title":"Documentation Capabilities","description":"","frontmatter":{},"headers":[],"relativePath":"__capabilities.md","filePath":"__capabilities.md"}'); diff --git a/assets/capabilities.md.DgKwcj5n.lean.js b/assets/capabilities.md.BPL75VHK.lean.js similarity index 99% rename from assets/capabilities.md.DgKwcj5n.lean.js rename to assets/capabilities.md.BPL75VHK.lean.js index ea093fd042b..3e6c63179b9 100644 --- a/assets/capabilities.md.DgKwcj5n.lean.js +++ b/assets/capabilities.md.BPL75VHK.lean.js @@ -1,5 +1,5 @@ import { _ as _imports_0$1 } from "./chunks/color-wheel.DIUCmfNZ.js"; -import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, o as openBlock, l as createBaseVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, o as openBlock, l as createBaseVNode } from "./chunks/framework.Clpp4x2N.js"; const _imports_0 = "/assets/badge-community-light.DoYC_YjC.svg"; const _imports_1 = "/assets/badge-community-dark.PWO_temo.svg"; const __pageData = JSON.parse('{"title":"Documentation Capabilities","description":"","frontmatter":{},"headers":[],"relativePath":"__capabilities.md","filePath":"__capabilities.md"}'); diff --git a/assets/capabilities_inc.md.Ca9zpMce.js b/assets/capabilities_inc.md.IeyuI9Wf.js similarity index 91% rename from assets/capabilities_inc.md.Ca9zpMce.js rename to assets/capabilities_inc.md.IeyuI9Wf.js index f25fc07b7d1..d4403bce8f9 100644 --- a/assets/capabilities_inc.md.Ca9zpMce.js +++ b/assets/capabilities_inc.md.IeyuI9Wf.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, l as createBaseVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, l as createBaseVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"__capabilities_inc.md","filePath":"__capabilities_inc.md"}'); const _sfc_main = { name: "__capabilities_inc.md" }; const _hoisted_1 = /* @__PURE__ */ createBaseVNode("p", null, "Lorem ipsum dolor sit amet.", -1); diff --git a/assets/capabilities_inc.md.Ca9zpMce.lean.js b/assets/capabilities_inc.md.IeyuI9Wf.lean.js similarity index 91% rename from assets/capabilities_inc.md.Ca9zpMce.lean.js rename to assets/capabilities_inc.md.IeyuI9Wf.lean.js index f25fc07b7d1..d4403bce8f9 100644 --- a/assets/capabilities_inc.md.Ca9zpMce.lean.js +++ b/assets/capabilities_inc.md.IeyuI9Wf.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, l as createBaseVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, l as createBaseVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"__capabilities_inc.md","filePath":"__capabilities_inc.md"}'); const _sfc_main = { name: "__capabilities_inc.md" }; const _hoisted_1 = /* @__PURE__ */ createBaseVNode("p", null, "Lorem ipsum dolor sit amet.", -1); diff --git a/assets/chibios_upgrade_instructions.md.B5dMtL5R.js b/assets/chibios_upgrade_instructions.md.DIU6p99M.js similarity index 98% rename from assets/chibios_upgrade_instructions.md.B5dMtL5R.js rename to assets/chibios_upgrade_instructions.md.DIU6p99M.js index 93c77172733..164be73ec4c 100644 --- a/assets/chibios_upgrade_instructions.md.B5dMtL5R.js +++ b/assets/chibios_upgrade_instructions.md.DIU6p99M.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"ChibiOS Upgrade Procedure","description":"","frontmatter":{},"headers":[],"relativePath":"chibios_upgrade_instructions.md","filePath":"chibios_upgrade_instructions.md"}'); const _sfc_main = { name: "chibios_upgrade_instructions.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

ChibiOS Upgrade Procedure

ChibiOS and ChibiOS-Contrib need to be updated in tandem -- the latter has a branch tied to the ChibiOS version in use and should not be mixed with different versions.

Getting ChibiOS

Getting ChibiOS-Contrib

Updating submodules

When merging a PR containing an upgrade of ChibiOS/ChibiOS-Contrib:

Note that when merging develop to master, the first workflow should still be followed.

', 11); diff --git a/assets/chibios_upgrade_instructions.md.B5dMtL5R.lean.js b/assets/chibios_upgrade_instructions.md.DIU6p99M.lean.js similarity index 92% rename from assets/chibios_upgrade_instructions.md.B5dMtL5R.lean.js rename to assets/chibios_upgrade_instructions.md.DIU6p99M.lean.js index dacb14ffb51..a56c49a7c16 100644 --- a/assets/chibios_upgrade_instructions.md.B5dMtL5R.lean.js +++ b/assets/chibios_upgrade_instructions.md.DIU6p99M.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"ChibiOS Upgrade Procedure","description":"","frontmatter":{},"headers":[],"relativePath":"chibios_upgrade_instructions.md","filePath":"chibios_upgrade_instructions.md"}'); const _sfc_main = { name: "chibios_upgrade_instructions.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 11); diff --git a/assets/chunks/@localSearchIndexroot.IZbmEDha.js b/assets/chunks/@localSearchIndexroot.CQZaIZyy.js similarity index 86% rename from assets/chunks/@localSearchIndexroot.IZbmEDha.js rename to assets/chunks/@localSearchIndexroot.CQZaIZyy.js index b3e915b755b..496c5464c0b 100644 --- a/assets/chunks/@localSearchIndexroot.IZbmEDha.js +++ b/assets/chunks/@localSearchIndexroot.CQZaIZyy.js @@ -1,4 +1,4 @@ -const _localSearchIndexroot = `{"documentCount":2758,"nextId":2758,"documentIds":{"0":"/ChangeLog/20190830#qmk-breaking-change-2019-aug-30","1":"/ChangeLog/20190830#core-code-formatting-with-clang-format","2":"/ChangeLog/20190830#lufa-usb-descriptor-cleanup","3":"/ChangeLog/20190830#migrating-action-layer-momentary-entries-in-fn-actions-to-mo-keycodes","4":"/ChangeLog/20190830#update-atreus-to-current-code-conventions","5":"/ChangeLog/20190830#backport-changes-to-keymap-language-files-from-zsa-fork","6":"/ChangeLog/20190830#update-repo-to-use-lufa-as-a-git-submodule","7":"/ChangeLog/20190830#migrating-action-backlight-entries-in-fn-actions-to-bl-keycodes","8":"/ChangeLog/20190830#remove-kc-delt-alias-in-favor-of-kc-del","9":"/ChangeLog/20200229#qmk-breaking-change-2020-feb-29-changelog","10":"/ChangeLog/20200229#update-chibios-chibios-contrib-ugfx-submodules","11":"/ChangeLog/20200229#fix-chibios-timer-overflow-for-16-bit-systick-devices","12":"/ChangeLog/20200229#update-lufa-submodule","13":"/ChangeLog/20200229#encoder-flip","14":"/ChangeLog/20200229#adding-support-for-backlight-on-state-for-hardware-pwm-backlight","15":"/ChangeLog/20200229#migrating-action-layer-tap-key-entries-in-fn-actions-to-lt-keycodes","16":"/ChangeLog/20200229#moving-backlight-keycode-handling-to-process-keycode","17":"/ChangeLog/20200229#refactor-planck-keymaps-to-use-layout-macros","18":"/ChangeLog/20200229#gon-nerd-codebase-refactor","19":"/ChangeLog/20200530#qmk-breaking-change-2020-may-30-changelog","20":"/ChangeLog/20200530#core-changes","21":"/ChangeLog/20200530#converting-v-usb-usbdrv-to-a-submodule","22":"/ChangeLog/20200530#unify-tap-hold-functions-and-documentation","23":"/ChangeLog/20200530#python-required-in-the-build-process","24":"/ChangeLog/20200530#upgrade-from-tinyprintf-to-mpaland-printf","25":"/ChangeLog/20200530#fixed-rgb-disable-after-timeout-to-be-seconds-based-small-internals-cleanup","26":"/ChangeLog/20200530#switch-to-qmk-forks-for-everything","27":"/ChangeLog/20200530#code-cleanup-regarding-deprecated-macro-play-note-array-by-replacing-it-with-play-song","28":"/ChangeLog/20200530#fixing-wrong-configuration-of-audio-feature","29":"/ChangeLog/20200530#keyboard-refactors","30":"/ChangeLog/20200530#migrating-lily58-to-use-split-common","31":"/ChangeLog/20200530#to-migrate-existing-lily58-firmware","32":"/ChangeLog/20200530#refactor-zinc-to-use-split-common","33":"/ChangeLog/20200530#refactor-of-tkc1800-to-use-common-oled-code","34":"/ChangeLog/20200530#to-migrate-existing-tkc1800-firmware","35":"/ChangeLog/20200530#split-hhkb-to-ansi-and-jp-layouts-and-add-via-support-for-each","36":"/ChangeLog/20200530#migrating-existing-hhkb-keymaps","37":"/ChangeLog/20200530#keyboard-moves","38":"/ChangeLog/20200530#keycode-migration-prs","39":"/ChangeLog/20200829#qmk-breaking-change-2020-aug-29-changelog","40":"/ChangeLog/20200829#changes-requiring-user-action","41":"/ChangeLog/20200829#relocated-keyboards","42":"/ChangeLog/20200829#the-key-company-project-consolidation-9547","43":"/ChangeLog/20200829#relocating-boards-by-flehrad-to-flehrad-folder-9635","44":"/ChangeLog/20200829#keyboard-updates","45":"/ChangeLog/20200829#keebio-rgb-wiring-update-7754","46":"/ChangeLog/20200829#core-updates","47":"/ChangeLog/20200829#core-changes","48":"/ChangeLog/20200829#core-fixes","49":"/ChangeLog/20200829#core-additions","50":"/ChangeLog/20200829#core-optimizations","51":"/ChangeLog/20200829#qmk-internals","52":"/ChangeLog/20201128#qmk-breaking-change-2020-nov-28-changelog","53":"/ChangeLog/20201128#changes-requiring-user-action","54":"/ChangeLog/20201128#relocated-keyboards","55":"/ChangeLog/20201128#reduce-helix-keyboard-build-variation-8669","56":"/ChangeLog/20201128#update-the-speedo-firmware-for-v3-0-10657","57":"/ChangeLog/20201128#maartenwut-maarten-name-change-to-evyd13-evy-10274","58":"/ChangeLog/20201128#xelus-valor-and-dawn60-refactors-10512-10584","59":"/ChangeLog/20201128#keyboard-updates","60":"/ChangeLog/20201128#aeboards-ext65-refactor-10820","61":"/ChangeLog/20201128#core-changes","62":"/ChangeLog/20201128#core-fixes","63":"/ChangeLog/20201128#core-additions","64":"/ChangeLog/20201128#core-optimizations","65":"/ChangeLog/20201128#qmk-internals","66":"/ChangeLog/20210227#qmk-breaking-changes-2021-february-27-changelog","67":"/ChangeLog/20210227#changes-requiring-user-action","68":"/ChangeLog/20210227#core-changes","69":"/ChangeLog/20210227#chibios-update-and-config-migration","70":"/ChangeLog/20210227#qmk-infrastructure-and-internals","71":"/ChangeLog/20210227#detailed-change-list","72":"/ChangeLog/20210227#changes-requiring-user-action-1","73":"/ChangeLog/20210227#fixes","74":"/ChangeLog/20210227#additions-and-enhancements","75":"/ChangeLog/20210227#clean-ups-and-optimizations","76":"/ChangeLog/20210227#qmk-infrastructure-and-internals-1","77":"/ChangeLog/20210227#chibios-update-and-config-migration-1","78":"/ChangeLog/20210529#qmk-breaking-changes-2021-may-29-changelog","79":"/ChangeLog/20210529#notable-changes","80":"/ChangeLog/20210529#rgb-matrix-split-common","81":"/ChangeLog/20210529#teensy-3-6-support","82":"/ChangeLog/20210529#new-command-qmk-console","83":"/ChangeLog/20210529#improve-command-qmk-config","84":"/ChangeLog/20210529#led-matrix-improvements","85":"/ChangeLog/20210529#changes-requiring-user-action","86":"/ChangeLog/20210529#updated-keyboard-codebases","87":"/ChangeLog/20210529#bootmagic-deprecation-and-refactor","88":"/ChangeLog/20210529#tentative-deprecation-schedule","89":"/ChangeLog/20210529#removal-of-layout-kc","90":"/ChangeLog/20210529#encoder-callback-boolean","91":"/ChangeLog/20210529#core-changes","92":"/ChangeLog/20210529#core-fixes","93":"/ChangeLog/20210529#core-additions","94":"/ChangeLog/20210529#core-optimizations","95":"/ChangeLog/20210529#qmk-internals","96":"/ChangeLog/20210828#qmk-breaking-changes-2021-august-28-changelog","97":"/ChangeLog/20210828#notable-features","98":"/ChangeLog/20210828#combo-processing-improvements","99":"/ChangeLog/20210828#key-overrides","100":"/ChangeLog/20210828#digitizer-support-12851","101":"/ChangeLog/20210828#changes-requiring-user-action","102":"/ChangeLog/20210828#updated-keyboard-codebases","103":"/ChangeLog/20210828#bootmagic-full-removal","104":"/ChangeLog/20210828#bootmagic-full-deprecation-schedule","105":"/ChangeLog/20210828#dip-switch-boolean","106":"/ChangeLog/20210828#notable-core","107":"/ChangeLog/20210828#split-transport-improvements","108":"/ChangeLog/20210828#teensy-4-x-support","109":"/ChangeLog/20210828#data-driven-improvements-13366","110":"/ChangeLog/20210828#tags","111":"/ChangeLog/20210828#dot-notation","112":"/ChangeLog/20210828#new-configuration-keys","113":"/ChangeLog/20210828#codebase-restructure","114":"/ChangeLog/20210828#full-changelist","115":"/ChangeLog/20211127#qmk-breaking-changes-2021-november-27-changelog","116":"/ChangeLog/20211127#qmk-2000th-keyboard","117":"/ChangeLog/20211127#notable-features","118":"/ChangeLog/20211127#expanded-pointing-device","119":"/ChangeLog/20211127#dynamic-tapping-term","120":"/ChangeLog/20211127#macros-in-keymap-json","121":"/ChangeLog/20211127#changes-requiring-user-action","122":"/ChangeLog/20211127#updated-keyboard-codebases","123":"/ChangeLog/20211127#squeezing-space-from-avr","124":"/ChangeLog/20211127#explicit-rgb-modes","125":"/ChangeLog/20211127#oled-task-refactor","126":"/ChangeLog/20211127#bootmagic-full-removal","127":"/ChangeLog/20211127#bootmagic-full-deprecation-schedule-complete","128":"/ChangeLog/20211127#remove-qwiic","129":"/ChangeLog/20211127#notable-core","130":"/ChangeLog/20211127#new-mcu-support","131":"/ChangeLog/20211127#eeprom-changes","132":"/ChangeLog/20211127#compile-commands","133":"/ChangeLog/20211127#codebase-restructure","134":"/ChangeLog/20211127#full-changelist","135":"/ChangeLog/20220226#qmk-breaking-changes-2022-february-26-changelog","136":"/ChangeLog/20220226#notable-features","137":"/ChangeLog/20220226#default-usb-polling-rate-now-1khz-15352","138":"/ChangeLog/20220226#split-support-for-pointing-devices-15304","139":"/ChangeLog/20220226#changes-requiring-user-action","140":"/ChangeLog/20220226#legacy-macro-and-action-function-system-removed-16025","141":"/ChangeLog/20220226#create-a-build-error-if-no-bootloader-is-specified-16181","142":"/ChangeLog/20220226#rename-adafruitble-to-bluefruitle-16127","143":"/ChangeLog/20220226#updated-keyboard-codebases","144":"/ChangeLog/20220226#notable-core","145":"/ChangeLog/20220226#new-mcu-support","146":"/ChangeLog/20220226#new-drivers","147":"/ChangeLog/20220226#led","148":"/ChangeLog/20220226#gpio","149":"/ChangeLog/20220226#full-changelist","150":"/ChangeLog/20220528#qmk-breaking-changes-2022-may-28-changelog","151":"/ChangeLog/20220528#notable-features","152":"/ChangeLog/20220528#caps-word","153":"/ChangeLog/20220528#quantum-painter","154":"/ChangeLog/20220528#encoder-mapping","155":"/ChangeLog/20220528#changes-requiring-user-action","156":"/ChangeLog/20220528#reset-2-qk_boot","157":"/ChangeLog/20220528#sendstring-keycodes","158":"/ChangeLog/20220528#pillow-install","159":"/ChangeLog/20220528#updated-keyboard-codebases","160":"/ChangeLog/20220528#full-changelist","161":"/ChangeLog/20220827#qmk-breaking-changes-2022-august-27-changelog","162":"/ChangeLog/20220827#notable-features","163":"/ChangeLog/20220827#rp2040-support","164":"/ChangeLog/20220827#cli-flash-binaries","165":"/ChangeLog/20220827#changes-requiring-user-action","166":"/ChangeLog/20220827#default-layers-dropped-from-32-to-16-15286","167":"/ChangeLog/20220827#reset-2-qk_boot","168":"/ChangeLog/20220827#updated-keyboard-codebases","169":"/ChangeLog/20220827#usb-ids-Refactoring","170":"/ChangeLog/20220827#deprecation-schedule","171":"/ChangeLog/20220827#notable-core","172":"/ChangeLog/20220827#board-converters","173":"/ChangeLog/20220827#cli-import","174":"/ChangeLog/20220827#wear-leveling","175":"/ChangeLog/20220827#pointing-device-improvements","176":"/ChangeLog/20220827#full-changelist","177":"/ChangeLog/20221126#qmk-breaking-changes-2022-november-26-changelog","178":"/ChangeLog/20221126#notable-features","179":"/ChangeLog/20221126#autocorrect","180":"/ChangeLog/20221126#changes-requiring-user-action","181":"/ChangeLog/20221126#updated-keyboard-codebases","182":"/ChangeLog/20221126#keycodes-overhaul-user-action","183":"/ChangeLog/20221126#config-refactoring","184":"/ChangeLog/20221126#usb-ids-Refactoring","185":"/ChangeLog/20221126#led-callback-refactor","186":"/ChangeLog/20221126#unicode-mode-renaming","187":"/ChangeLog/20221126#notable-core","188":"/ChangeLog/20221126#keycodes-overhaul-core-changes","189":"/ChangeLog/20221126#board-converters","190":"/ChangeLog/20221126#pointing-and-digitizer","191":"/ChangeLog/20221126#full-changelist","192":"/ChangeLog/20230226#qmk-breaking-changes-2023-february-26-changelog","193":"/ChangeLog/20230226#changes-requiring-user-action","194":"/ChangeLog/20230226#i-m-t-i","195":"/ChangeLog/20230226#quick-tap-term","196":"/ChangeLog/20230226#leader-key-rework-leader-key-rework-19632","197":"/ChangeLog/20230226#updated-keyboard-codebases","198":"/ChangeLog/20230226#notable-core","199":"/ChangeLog/20230226#full-changelist","200":"/ChangeLog/20230528#qmk-breaking-changes-2023-may-28-changelog","201":"/ChangeLog/20230528#notable-changes","202":"/ChangeLog/20230528#repeat-last-key","203":"/ChangeLog/20230528#user-callback-for-pre-process-record","204":"/ChangeLog/20230528#consolidate-modelm","205":"/ChangeLog/20230528#changes-requiring-user-action","206":"/ChangeLog/20230528#i-m-t-i","207":"/ChangeLog/20230528#updated-keyboard-codebases","208":"/ChangeLog/20230528#notable-core","209":"/ChangeLog/20230528#encoder-functionality-fallback","210":"/ChangeLog/20230528#oled-driver-improvements","211":"/ChangeLog/20230528#full-changelist","212":"/ChangeLog/20230827#qmk-breaking-changes-2023-aug-27-changelog","213":"/ChangeLog/20230827#notable-changes","214":"/ChangeLog/20230827#rgb-matrix-optimizations","215":"/ChangeLog/20230827#audio-optimizations-21496-21498","216":"/ChangeLog/20230827#changes-requiring-user-action","217":"/ChangeLog/20230827#updated-keyboard-codebases","218":"/ChangeLog/20230827#remove-encoder-in-matrix-workaround-code","219":"/ChangeLog/20230827#unicodemap-keycodes-rename","220":"/ChangeLog/20230827#remove-old-oled-api-code","221":"/ChangeLog/20230827#driver-naming-consolidation","222":"/ChangeLog/20230827#full-changelist","223":"/ChangeLog/20231126#qmk-breaking-changes-2023-november-26-changelog","224":"/ChangeLog/20231126#notable-features","225":"/ChangeLog/20231126#changes-requiring-user-action","226":"/ChangeLog/20231126#updated-keyboard-codebases","227":"/ChangeLog/20231126#notable-core","228":"/ChangeLog/20231126#external-userspace-22222","229":"/ChangeLog/20231126#improve-and-cleanup-shutdown-callbacks","230":"/ChangeLog/20231126#oled-force-flush","231":"/ChangeLog/20231126#switch-statement-helpers-for-keycode-ranges","232":"/ChangeLog/20231126#quantum-painter-oled-support","233":"/ChangeLog/20231126#rgb-led-lighting-driver-naming-and-cleanup-21890-21891-21892-21903-21904-21905-21918-21929-21938-22004-22008-22009-22071-22090-22099-22126-22133-22163-22200-22308-22309-22311-22325-22365-22379-22380-22381-22383-22436","234":"/ChangeLog/20231126#peripheral-subsystem-enabling","235":"/ChangeLog/20231126#vusb-nkro","236":"/ChangeLog/20231126#full-changelist","237":"/ChangeLog/20240225#qmk-breaking-changes-2024-february-25-changelog","238":"/ChangeLog/20240225#notable-features","239":"/ChangeLog/20240225#changes-requiring-user-action","240":"/ChangeLog/20240225#windows-driver-changes-qmk-toolbox-0-3-0-release","241":"/ChangeLog/20240225#updated-keyboard-codebases","242":"/ChangeLog/20240225#notable-core","243":"/ChangeLog/20240225#gpio-rename","244":"/ChangeLog/20240225#i2c-driver-api-changes-22905","245":"/ChangeLog/20240225#bootmagic-rename","246":"/ChangeLog/20240225#auto-mouse-layer","247":"/ChangeLog/20240225#dip-switch-map","248":"/ChangeLog/20240225#qp-updates","249":"/ChangeLog/20240225#full-changelist","250":"/ChangeLog/20240526#qmk-breaking-changes-2024-may-26-changelog","251":"/ChangeLog/20240526#notable-features","252":"/ChangeLog/20240526#changes-requiring-user-action","253":"/ChangeLog/20240526#updated-keyboard-codebases","254":"/ChangeLog/20240526#remove-deprecated-quantum-keycodes-23407","255":"/ChangeLog/20240526#spacey-layout-updates","256":"/ChangeLog/20240526#acr60-layout-updates","257":"/ChangeLog/20240526#acr60-layout-hhkb","258":"/ChangeLog/20240526#acr60-layout-true-hhkb","259":"/ChangeLog/20240526#acr60-layout-directional","260":"/ChangeLog/20240526#acr60-layout-mitchsplit","261":"/ChangeLog/20240526#notable-core","262":"/ChangeLog/20240526#keyboard-json","263":"/ChangeLog/20240526#refactor-chibios-usb-endpoints-to-be-fully-async-21656","264":"/ChangeLog/20240526#deprecation-notices","265":"/ChangeLog/20240526#migration-of-via-keymaps-to-via-team-control","266":"/ChangeLog/20240526#full-changelist","267":"/ChangeLog/20240825#qmk-breaking-changes-2024-august-25-changelog","268":"/ChangeLog/20240825#notable-features","269":"/ChangeLog/20240825#changes-requiring-user-action","270":"/ChangeLog/20240825#updated-keyboard-codebases","271":"/ChangeLog/20240825#sparkfun-pro-micro-rp2040-converter-renamed-24192","272":"/ChangeLog/20240825#key-override-keymap-c-signature-change-24120","273":"/ChangeLog/20240825#adns9800-and-pmw33xx-firmware-upload-now-opt-in-24001","274":"/ChangeLog/20240825#deprecation-notices","275":"/ChangeLog/20240825#migration-of-via-keymaps-to-via-team-control","276":"/ChangeLog/20240825#adns9800-and-pmw33xx-sensor-firmware-rom-removal","277":"/ChangeLog/20240825#full-changelist","278":"/__capabilities#documentation-capabilities","279":"/__capabilities#overall-capabilities","280":"/__capabilities#dividing-lines","281":"/__capabilities#images","282":"/__capabilities#lists","283":"/__capabilities#emoji","284":"/__capabilities#direct","285":"/__capabilities#as-colon-name-colon","286":"/__capabilities#xml-entities","287":"/__capabilities#styling","288":"/__capabilities#css-ish","289":"/__capabilities#tables","290":"/__capabilities#indented-sections","291":"/__capabilities#keyboard-keys","292":"/__capabilities#code-blocks","293":"/__capabilities#sub-superscript","294":"/__capabilities#tabs","295":"/__capabilities#tab-one","296":"/__capabilities#nested-one","297":"/__capabilities#nested-two","298":"/__capabilities#tab-two","299":"/__capabilities#tab-three","300":"/__capabilities#details-sections","301":"/__capabilities#embed","302":"/api_development_environment#development-environment-setup","303":"/api_development_overview#qmk-compiler-development-guide","304":"/api_development_overview#overview","305":"/api_development_overview#workers","306":"/api_development_overview#api-service","307":"/api_development_overview#app-route-v1-compile-methods-post","308":"/api_development_overview#app-route-v1-compile-string-job-id-methods-get","309":"/api_development_overview#app-route-v1-compile-string-job-id-download-methods-get","310":"/api_development_overview#app-route-v1-compile-string-job-id-source-methods-get","311":"/api_docs#qmk-api","312":"/api_docs#overview","313":"/api_docs#example-json-payload","314":"/api_docs#submitting-a-compile-job","315":"/api_docs#checking-the-status","316":"/api_docs#examining-finished-results","317":"/api_docs#qmk-constants","318":"/api_overview#qmk-api","319":"/api_overview#app-developers","320":"/api_overview#keyboard-maintainers","321":"/api_overview#backend-developers","322":"/arm_debugging#arm-debugging-using-eclipse","323":"/arm_debugging#installing-the-software","324":"/arm_debugging#the-xpack-manager","325":"/arm_debugging#the-arm-toolchain","326":"/arm_debugging#windows-build-tools","327":"/arm_debugging#programmer-debugger-drivers","328":"/arm_debugging#openocd","329":"/arm_debugging#java","330":"/arm_debugging#gnu-mcu-eclipse-ide","331":"/arm_debugging#configuring-eclipse","332":"/arm_debugging#building","333":"/arm_debugging#debugging","334":"/arm_debugging#connecting-the-debugger","335":"/arm_debugging#configuring-the-debugger","336":"/arm_debugging#running-the-debugger","337":"/breaking_changes#breaking-changes","338":"/breaking_changes#what-has-been-included-in-past-breaking-changes","339":"/breaking_changes#when-is-the-next-breaking-change","340":"/breaking_changes#important-dates","341":"/breaking_changes#what-changes-will-be-included","342":"/breaking_changes#checklists","343":"/breaking_changes#_4-weeks-before-merge","344":"/breaking_changes#_2-weeks-before-merge","345":"/breaking_changes#_1-week-before-merge","346":"/breaking_changes#_2-days-before-merge","347":"/breaking_changes#day-of-merge","348":"/breaking_changes#post-merge-operations","349":"/breaking_changes#updating-the-develop-branch","350":"/breaking_changes#set-up-discord-events-for-the-next-cycle","351":"/breaking_changes_history#past-breaking-changes","352":"/breaking_changes_instructions#breaking-changes-my-pull-request-was-flagged","353":"/breaking_changes_instructions#what-do-i-do","354":"/breaking_changes_instructions#consider-splitting-up-your-pr","355":"/breaking_changes_instructions#document-your-changes","356":"/breaking_changes_instructions#ask-for-help","357":"/chibios_upgrade_instructions#chibios-upgrade-procedure","358":"/chibios_upgrade_instructions#getting-chibios","359":"/chibios_upgrade_instructions#getting-chibios-contrib","360":"/chibios_upgrade_instructions#updating-submodules","361":"/chibios_upgrade_instructions#when-merging-a-pr-containing-an-upgrade-of-chibios-chibios-contrib","362":"/cli#qmk-cli","363":"/cli#overview","364":"/cli#requirements","365":"/cli#install-using-homebrew","366":"/cli#install-using-easy_install-or-pip","367":"/cli#packaging-for-other-operating-systems","368":"/cli_commands#qmk-cli-commands","369":"/cli_commands#user-commands","370":"/cli_commands#qmk-compile","371":"/cli_commands#qmk-flash","372":"/cli_commands#qmk-config","373":"/cli_commands#qmk-cd","374":"/cli_commands#qmk-find","375":"/cli_commands#qmk-console","376":"/cli_commands#qmk-doctor","377":"/cli_commands#qmk-format-json","378":"/cli_commands#qmk-info","379":"/cli_commands#qmk-json2c","380":"/cli_commands#qmk-c2json","381":"/cli_commands#qmk-lint","382":"/cli_commands#qmk-list-keyboards","383":"/cli_commands#qmk-list-keymaps","384":"/cli_commands#qmk-migrate","385":"/cli_commands#qmk-new-keyboard","386":"/cli_commands#qmk-new-keymap","387":"/cli_commands#qmk-clean","388":"/cli_commands#qmk-via2json","389":"/cli_commands#qmk-import-keyboard","390":"/cli_commands#qmk-import-keymap","391":"/cli_commands#qmk-import-kbfirmware","392":"/cli_commands#external-userspace-commands","393":"/cli_commands#qmk-userspace-add","394":"/cli_commands#qmk-userspace-remove","395":"/cli_commands#qmk-userspace-list","396":"/cli_commands#qmk-userspace-compile","397":"/cli_commands#qmk-userspace-doctor","398":"/cli_commands#developer-commands","399":"/cli_commands#qmk-format-text","400":"/cli_commands#qmk-format-c","401":"/cli_commands#qmk-generate-compilation-database","402":"/cli_commands#qmk-docs","403":"/cli_commands#qmk-generate-docs","404":"/cli_commands#qmk-generate-rgb-breathe-table","405":"/cli_commands#qmk-kle2json","406":"/cli_commands#qmk-format-python","407":"/cli_commands#qmk-pytest","408":"/cli_commands#qmk-painter-convert-graphics","409":"/cli_commands#qmk-painter-make-font-image","410":"/cli_commands#qmk-painter-convert-font-image","411":"/cli_commands#qmk-test-c","412":"/cli_configuration#qmk-cli-configuration","413":"/cli_configuration#introduction","414":"/cli_configuration#simple-example","415":"/cli_configuration#setting-user-defaults","416":"/cli_configuration#cli-documentation-qmk-config","417":"/cli_configuration#setting-configuration-values","418":"/cli_configuration#reading-configuration-values","419":"/cli_configuration#entire-configuration-example","420":"/cli_configuration#whole-section-example","421":"/cli_configuration#single-key-example","422":"/cli_configuration#multiple-keys-example","423":"/cli_configuration#deleting-configuration-values","424":"/cli_configuration#multiple-operations","425":"/cli_configuration#user-configuration-options","426":"/cli_configuration#all-configuration-options","427":"/cli_development#qmk-cli-development","428":"/cli_development#overview","429":"/cli_development#developer-mode","430":"/cli_development#subcommands","431":"/cli_development#user-interaction","432":"/cli_development#printing-text","433":"/cli_development#logging-cli-log","434":"/cli_development#printing-cli-echo","435":"/cli_development#colorizing-text","436":"/cli_development#arguments-and-configuration","437":"/cli_development#reading-configuration-values","438":"/cli_development#setting-configuration-values","439":"/cli_development#deleting-configuration-values","440":"/cli_development#writing-the-configuration-file","441":"/cli_development#excluding-arguments-from-configuration","442":"/cli_development#testing-and-linting-and-formatting-oh-my","443":"/cli_development#testing-and-linting","444":"/cli_development#formatting","445":"/cli_development#formatting-details","446":"/cli_development#testing-details","447":"/cli_development#linting-details","448":"/cli_tab_complete#tab-completion-for-qmk","449":"/cli_tab_complete#setup","450":"/cli_tab_complete#for-your-user-only","451":"/cli_tab_complete#system-wide-symlink","452":"/cli_tab_complete#system-wide-copy","453":"/coding_conventions_c#coding-conventions-c","454":"/coding_conventions_c#auto-formatting-with-clang-format","455":"/coding_conventions_python#coding-conventions-python","456":"/coding_conventions_python#yapf","457":"/coding_conventions_python#imports","458":"/coding_conventions_python#import-examples","459":"/coding_conventions_python#statements","460":"/coding_conventions_python#naming","461":"/coding_conventions_python#names-to-avoid","462":"/coding_conventions_python#docstrings","463":"/coding_conventions_python#simple-docstring-example","464":"/coding_conventions_python#complex-docstring-example","465":"/coding_conventions_python#function-arguments-docstring-example","466":"/coding_conventions_python#exceptions","467":"/coding_conventions_python#tuples","468":"/coding_conventions_python#lists-and-dictionaries","469":"/coding_conventions_python#parentheses","470":"/coding_conventions_python#format-strings","471":"/coding_conventions_python#comprehensions-generator-expressions","472":"/coding_conventions_python#lambdas","473":"/coding_conventions_python#conditional-expressions","474":"/coding_conventions_python#default-argument-values","475":"/coding_conventions_python#properties","476":"/coding_conventions_python#true-false-evaluations","477":"/coding_conventions_python#decorators","478":"/coding_conventions_python#threading-and-multiprocessing","479":"/coding_conventions_python#power-features","480":"/coding_conventions_python#type-annotated-code","481":"/coding_conventions_python#function-length","482":"/coding_conventions_python#fixmes","483":"/coding_conventions_python#testing","484":"/coding_conventions_python#integration-tests","485":"/coding_conventions_python#unit-tests","486":"/compatible_microcontrollers#compatible-microcontrollers","487":"/compatible_microcontrollers#atmel-avr","488":"/compatible_microcontrollers#arm","489":"/compatible_microcontrollers#stmicroelectronics-stm32","490":"/compatible_microcontrollers#westberrytech-wb32","491":"/compatible_microcontrollers#nxp-kinetis","492":"/compatible_microcontrollers#raspberry-pi","493":"/compatible_microcontrollers#atmel-atsam","494":"/compatible_microcontrollers#risc-v","495":"/compatible_microcontrollers#gigadevice","496":"/config_options#configuring-qmk","497":"/config_options#qmk-default","498":"/config_options#keyboard","499":"/config_options#folders","500":"/config_options#keymap","501":"/config_options#the-config-h-file","502":"/config_options#hardware-options","503":"/config_options#features-that-can-be-disabled","504":"/config_options#features-that-can-be-enabled","505":"/config_options#behaviors-that-can-be-configured","506":"/config_options#rgb-light-configuration","507":"/config_options#mouse-key-options","508":"/config_options#split-keyboard-options","509":"/config_options#setting-handedness","510":"/config_options#defines-for-handedness","511":"/config_options#other-options","512":"/config_options#the-rules-mk-file","513":"/config_options#build-options","514":"/config_options#avr-mcu-options","515":"/config_options#feature-options","516":"/config_options#usb-endpoint-limitations","517":"/configurator_architecture#qmk-configurator-architecture","518":"/configurator_architecture#overview","519":"/configurator_architecture#detailed-description","520":"/configurator_architecture#configurator-frontend","521":"/configurator_architecture#keyboard-metadata","522":"/configurator_architecture#qmk-api","523":"/configurator_architecture#compile-job-queued","524":"/configurator_architecture#compile-job-running","525":"/configurator_architecture#compile-job-finished","526":"/configurator_architecture#redis-rq","527":"/configurator_architecture#qmk-compiler","528":"/configurator_default_keymaps#adding-default-keymaps","529":"/configurator_default_keymaps#technical-information","530":"/configurator_default_keymaps#example","531":"/configurator_default_keymaps#caveats","532":"/configurator_default_keymaps#layer-references","533":"/configurator_default_keymaps#custom-code","534":"/configurator_default_keymaps#custom-keycodes","535":"/configurator_default_keymaps#additional-reading","536":"/configurator_step_by_step#qmk-configurator-step-by-step","537":"/configurator_step_by_step#step-1-select-your-keyboard","538":"/configurator_step_by_step#step-2-select-your-keyboard-layout","539":"/configurator_step_by_step#step-3-name-your-keymap","540":"/configurator_step_by_step#step-4-define-your-keymap","541":"/configurator_step_by_step#step-5-save-your-keymap-for-future-changes","542":"/configurator_step_by_step#step-6-compile-your-firmware-file","543":"/configurator_step_by_step#next-steps-flashing-your-keyboard","544":"/configurator_troubleshooting#configurator-troubleshooting","545":"/configurator_troubleshooting#my-json-file-is-not-working","546":"/configurator_troubleshooting#there-are-extra-spaces-in-my-layout-what-do-i-do","547":"/configurator_troubleshooting#what-is-the-keycode-for","548":"/configurator_troubleshooting#it-won-t-compile","549":"/configurator_troubleshooting#problems-and-bugs","550":"/contributing#how-to-contribute","551":"/contributing#i-don-t-want-to-read-this-whole-thing-i-just-have-a-question","552":"/contributing#project-overview","553":"/contributing#where-can-i-go-for-help","554":"/contributing#how-do-i-make-a-contribution","555":"/contributing#coding-conventions","556":"/contributing#general-guidelines","557":"/contributing#documentation","558":"/contributing#previewing-the-documentation","559":"/contributing#keyboards","560":"/contributing#quantum-tmk-core","561":"/contributing#refactoring","562":"/contributing#what-does-the-code-of-conduct-mean-for-me","563":"/custom_matrix#custom-matrix","564":"/custom_matrix#prerequisites","565":"/custom_matrix#lite","566":"/custom_matrix#full-replacement","567":"/custom_quantum_functions#how-to-customize-your-keyboard-s-behavior","568":"/custom_quantum_functions#a-word-on-core-vs-keyboards-vs-keymap","569":"/custom_quantum_functions#custom-keycodes","570":"/custom_quantum_functions#defining-a-new-keycode","571":"/custom_quantum_functions#programming-the-behavior-of-any-keycode","572":"/custom_quantum_functions#example-process-record-user-implementation","573":"/custom_quantum_functions#process-record-function-documentation","574":"/custom_quantum_functions#keyboard-initialization-code","575":"/custom_quantum_functions#keyboard-pre-initialization-code","576":"/custom_quantum_functions#example-keyboard-pre-init-user-implementation","577":"/custom_quantum_functions#keyboard-pre-init-function-documentation","578":"/custom_quantum_functions#matrix-initialization-code","579":"/custom_quantum_functions#matrix-init-function-documentation","580":"/custom_quantum_functions#low-level-matrix-overrides","581":"/custom_quantum_functions#keyboard-post-initialization-code","582":"/custom_quantum_functions#example-keyboard-post-init-user-implementation","583":"/custom_quantum_functions#keyboard-post-init-function-documentation","584":"/custom_quantum_functions#matrix-scanning-code","585":"/custom_quantum_functions#example-matrix-scan-implementation","586":"/custom_quantum_functions#matrix-scan-function-documentation","587":"/custom_quantum_functions#keyboard-housekeeping","588":"/custom_quantum_functions#example-void-housekeeping-task-user-void-implementation","589":"/custom_quantum_functions#keyboard-idling-wake-code","590":"/custom_quantum_functions#example-suspend-power-down-user-and-suspend-wakeup-init-user-implementation","591":"/custom_quantum_functions#keyboard-suspend-wake-function-documentation","592":"/custom_quantum_functions#keyboard-shutdown-reboot-code","593":"/custom_quantum_functions#example-shutdown-kb-implementation","594":"/custom_quantum_functions#example-shutdown-user-implementation","595":"/custom_quantum_functions#keyboard-shutdown-reboot-function-documentation","596":"/custom_quantum_functions#deferred-execution","597":"/custom_quantum_functions#deferred-executor-callbacks","598":"/custom_quantum_functions#deferred-executor-registration","599":"/custom_quantum_functions#extending-a-deferred-execution","600":"/custom_quantum_functions#cancelling-a-deferred-execution","601":"/custom_quantum_functions#deferred-callback-limits","602":"/custom_quantum_functions#advanced-topics","603":"/custom_quantum_functions#layer-change-code","604":"/custom_quantum_functions#persistent-configuration-eeprom","605":"/data_driven_config#data-driven-configuration","606":"/data_driven_config#history","607":"/data_driven_config#overview","608":"/data_driven_config#adding-an-option-to-info-json","609":"/data_driven_config#add-it-to-the-schema","610":"/data_driven_config#add-a-mapping","611":"/data_driven_config#info-key","612":"/data_driven_config#value-types","613":"/data_driven_config#add-code-to-extract-it","614":"/data_driven_config#add-code-to-generate-it","615":"/documentation_best_practices#documentation-best-practices","616":"/documentation_best_practices#page-opening","617":"/documentation_best_practices#headings","618":"/documentation_best_practices#styled-hint-blocks","619":"/documentation_best_practices#important","620":"/documentation_best_practices#general-tips","621":"/documentation_best_practices#documenting-features","622":"/documentation_templates#documentation-templates","623":"/documentation_templates#keyboard-readmemd-template","624":"/documentation_templates#keyboard-readme-md-template","625":"/driver_installation_zadig#bootloader-driver-installation-with-zadig","626":"/driver_installation_zadig#installation","627":"/driver_installation_zadig#recovering-from-installation-to-wrong-device","628":"/driver_installation_zadig#uninstallation","629":"/driver_installation_zadig#list-of-known-bootloaders","630":"/drivers/adc#adc-driver","631":"/drivers/adc#usage","632":"/drivers/adc#channels","633":"/drivers/adc#avr","634":"/drivers/adc#arm","635":"/drivers/adc#stm32","636":"/drivers/adc#rp2040","637":"/drivers/adc#functions","638":"/drivers/adc#avr-1","639":"/drivers/adc#arm-1","640":"/drivers/adc#configuration","641":"/drivers/adc#arm-2","642":"/drivers/apa102#apa102-driver","643":"/drivers/apa102#usage","644":"/drivers/apa102#basic-configuration","645":"/drivers/apa102#api","646":"/drivers/apa102#api-apa102-init","647":"/drivers/apa102#api-apa102-set-color","648":"/drivers/apa102#api-apa102-set-color-arguments","649":"/drivers/apa102#api-apa102-set-color-all","650":"/drivers/apa102#api-apa102-set-color-all-arguments","651":"/drivers/apa102#api-apa102-flush","652":"/drivers/apa102#api-apa102-set-brightness","653":"/drivers/apa102#api-apa102-set-brightness-arguments","654":"/drivers/audio#audio-driver","655":"/drivers/audio#avr","656":"/drivers/audio#arm","657":"/drivers/audio#dac-basic","658":"/drivers/audio#dac-additive","659":"/drivers/audio#dac-config","660":"/drivers/audio#buffer-size","661":"/drivers/audio#pwm-hardware","662":"/drivers/audio#pwm-software","663":"/drivers/audio#testing-notes","664":"/drivers/aw20216s#aw20216s-driver","665":"/drivers/aw20216s#usage","666":"/drivers/aw20216s#basic-configuration","667":"/drivers/aw20216s#global-current-control","668":"/drivers/aw20216s#arm-configuration","669":"/drivers/aw20216s#led-mapping","670":"/drivers/aw20216s#api","671":"/drivers/aw20216s#api-aw20216s-led-t","672":"/drivers/aw20216s#api-aw20216s-led-t-members","673":"/drivers/aw20216s#api-aw20216s-init","674":"/drivers/aw20216s#api-aw20216s-init-arguments","675":"/drivers/aw20216s#api-aw20216s-set-color","676":"/drivers/aw20216s#api-aw20216s-set-color-arguments","677":"/drivers/aw20216s#api-aw20216s-set-color-all","678":"/drivers/aw20216s#api-aw20216s-set-color-all-arguments","679":"/drivers/aw20216s#api-aw20216s-update-pwm-buffers","680":"/drivers/aw20216s#api-aw20216s-update-pwm-buffers-arguments","681":"/drivers/eeprom#eeprom-driver-configuration","682":"/drivers/eeprom#vendor-eeprom-driver-configuration","683":"/drivers/eeprom#stm32l0l1-eeprom-driver-configuration","684":"/drivers/eeprom#i2c-eeprom-driver-configuration","685":"/drivers/eeprom#spi-eeprom-driver-configuration","686":"/drivers/eeprom#transient-eeprom-driver-configuration","687":"/drivers/eeprom#wear_leveling-eeprom-driver-configuration","688":"/drivers/eeprom#wear_leveling-configuration","689":"/drivers/eeprom#wear_leveling-efl-driver-configuration","690":"/drivers/eeprom#wear_leveling-flash_spi-driver-configuration","691":"/drivers/eeprom#wear_leveling-rp2040-driver-configuration","692":"/drivers/eeprom#wear_leveling-legacy-driver-configuration","693":"/drivers/flash#flash-driver-configuration","694":"/drivers/flash#spi-flash-driver-configuration","695":"/drivers/gpio#gpio-control","696":"/drivers/gpio#macros","697":"/drivers/gpio#advanced-settings","698":"/drivers/gpio#atomic-operation","699":"/drivers/i2c#i2c-master-driver","700":"/drivers/i2c#usage","701":"/drivers/i2c#note-on-i2c-addresses","702":"/drivers/i2c#avr-configuration","703":"/drivers/i2c#arm-configuration","704":"/drivers/i2c#arm-configuration-i2cv1","705":"/drivers/i2c#arm-configuration-i2cv2","706":"/drivers/i2c#api","707":"/drivers/i2c#api-i2c-init","708":"/drivers/i2c#api-i2c-transmit","709":"/drivers/i2c#api-i2c-transmit-arguments","710":"/drivers/i2c#api-i2c-transmit-return","711":"/drivers/i2c#api-i2c-receive","712":"/drivers/i2c#api-i2c-receive-arguments","713":"/drivers/i2c#api-i2c-receive-return","714":"/drivers/i2c#api-i2c-write-register","715":"/drivers/i2c#api-i2c-write-register-arguments","716":"/drivers/i2c#api-i2c-write-register-return","717":"/drivers/i2c#api-i2c-write-register16","718":"/drivers/i2c#api-i2c-write-register16-arguments","719":"/drivers/i2c#api-i2c-write-register16-return","720":"/drivers/i2c#api-i2c-read-register","721":"/drivers/i2c#api-i2c-read-register-arguments","722":"/drivers/i2c#api-i2c-read-register-return","723":"/drivers/i2c#api-i2c-read-register16","724":"/drivers/i2c#api-i2c-read-register16-arguments","725":"/drivers/i2c#api-i2c-read-register16-return","726":"/drivers/i2c#api-i2c-ping-address","727":"/drivers/i2c#arguments","728":"/drivers/i2c#return-value","729":"/drivers/is31fl3218#is31fl3218-driver","730":"/drivers/is31fl3218#usage","731":"/drivers/is31fl3218#basic-configuration","732":"/drivers/is31fl3218#i2c-addressing","733":"/drivers/is31fl3218#arm-configuration","734":"/drivers/is31fl3218#led-mapping","735":"/drivers/is31fl3218#api","736":"/drivers/is31fl3218#api-is31fl3218-led-t","737":"/drivers/is31fl3218#api-is31fl3218-led-t-members","738":"/drivers/is31fl3218#api-is31fl3218-init","739":"/drivers/is31fl3218#api-is31fl3218-write-register","740":"/drivers/is31fl3218#api-is31fl3218-write-register-arguments","741":"/drivers/is31fl3218#api-is31fl3218-set-color","742":"/drivers/is31fl3218#api-is31fl3218-set-color-arguments","743":"/drivers/is31fl3218#api-is31fl3218-set-color-all","744":"/drivers/is31fl3218#api-is31fl3218-set-color-all-arguments","745":"/drivers/is31fl3218#api-is31fl3218-set-value","746":"/drivers/is31fl3218#api-is31fl3218-set-value-arguments","747":"/drivers/is31fl3218#api-is31fl3218-set-value-all","748":"/drivers/is31fl3218#api-is31fl3218-set-value-all-arguments","749":"/drivers/is31fl3218#api-is31fl3218-set-led-control-register-rgb","750":"/drivers/is31fl3218#api-is31fl3218-set-led-control-register-rgb-arguments","751":"/drivers/is31fl3218#api-is31fl3218-set-led-control-register-mono","752":"/drivers/is31fl3218#api-is31fl3218-set-led-control-register-mono-arguments","753":"/drivers/is31fl3218#api-is31fl3218-update-pwm-buffers","754":"/drivers/is31fl3218#api-is31fl3218-update-led-control-registers","755":"/drivers/is31fl3236#is31fl3236-driver","756":"/drivers/is31fl3236#usage","757":"/drivers/is31fl3236#basic-configuration","758":"/drivers/is31fl3236#i2c-addressing","759":"/drivers/is31fl3236#arm-configuration","760":"/drivers/is31fl3236#led-mapping","761":"/drivers/is31fl3236#api","762":"/drivers/is31fl3236#api-is31fl3236-led-t","763":"/drivers/is31fl3236#api-is31fl3236-led-t-members","764":"/drivers/is31fl3236#api-is31fl3236-init","765":"/drivers/is31fl3236#api-is31fl3236-init-arguments","766":"/drivers/is31fl3236#api-is31fl3236-write-register","767":"/drivers/is31fl3236#api-is31fl3236-write-register-arguments","768":"/drivers/is31fl3236#api-is31fl3236-set-color","769":"/drivers/is31fl3236#api-is31fl3236-set-color-arguments","770":"/drivers/is31fl3236#api-is31fl3236-set-color-all","771":"/drivers/is31fl3236#api-is31fl3236-set-color-all-arguments","772":"/drivers/is31fl3236#api-is31fl3236-set-value","773":"/drivers/is31fl3236#api-is31fl3236-set-value-arguments","774":"/drivers/is31fl3236#api-is31fl3236-set-value-all","775":"/drivers/is31fl3236#api-is31fl3236-set-value-all-arguments","776":"/drivers/is31fl3236#api-is31fl3236-set-led-control-register-rgb","777":"/drivers/is31fl3236#api-is31fl3236-set-led-control-register-rgb-arguments","778":"/drivers/is31fl3236#api-is31fl3236-set-led-control-register-mono","779":"/drivers/is31fl3236#api-is31fl3236-set-led-control-register-mono-arguments","780":"/drivers/is31fl3236#api-is31fl3236-update-pwm-buffers","781":"/drivers/is31fl3236#api-is31fl3236-update-pwm-buffers-arguments","782":"/drivers/is31fl3236#api-is31fl3236-update-led-control-registers","783":"/drivers/is31fl3236#api-is31fl3236-update-led-control-registers-arguments","784":"/drivers/is31fl3729#is31fl3729-driver","785":"/drivers/is31fl3729#usage","786":"/drivers/is31fl3729#basic-configuration","787":"/drivers/is31fl3729#i2c-addressing","788":"/drivers/is31fl3729#pwm-frequency","789":"/drivers/is31fl3729#de-ghosting","790":"/drivers/is31fl3729#global-current-control","791":"/drivers/is31fl3729#arm-configuration","792":"/drivers/is31fl3729#led-mapping","793":"/drivers/is31fl3729#api","794":"/drivers/is31fl3729#api-is31fl3729-led-t","795":"/drivers/is31fl3729#api-is31fl3729-led-t-members","796":"/drivers/is31fl3729#api-is31fl3729-init","797":"/drivers/is31fl3729#api-is31fl3729-init-arguments","798":"/drivers/is31fl3729#api-is31fl3729-write-register","799":"/drivers/is31fl3729#api-is31fl3729-write-register-arguments","800":"/drivers/is31fl3729#api-is31fl3729-set-color","801":"/drivers/is31fl3729#api-is31fl3729-set-color-arguments","802":"/drivers/is31fl3729#api-is31fl3729-set-color-all","803":"/drivers/is31fl3729#api-is31fl3729-set-color-all-arguments","804":"/drivers/is31fl3729#api-is31fl3729-set-value","805":"/drivers/is31fl3729#api-is31fl3729-set-value-arguments","806":"/drivers/is31fl3729#api-is31fl3729-set-value-all","807":"/drivers/is31fl3729#api-is31fl3729-set-value-all-arguments","808":"/drivers/is31fl3729#api-is31fl3729-set-scaling-register-rgb","809":"/drivers/is31fl3729#api-is31fl3729-set-scaling-register-rgb-arguments","810":"/drivers/is31fl3729#api-is31fl3729-set-scaling-register-mono","811":"/drivers/is31fl3729#api-is31fl3729-set-scaling-register-mono-arguments","812":"/drivers/is31fl3729#api-is31fl3729-update-pwm-buffers","813":"/drivers/is31fl3729#api-is31fl3729-update-pwm-buffers-arguments","814":"/drivers/is31fl3729#api-is31fl3729-update-scaling-registers","815":"/drivers/is31fl3729#api-is31fl3729-update-scaling-registers-arguments","816":"/drivers/is31fl3731#is31fl3731-driver","817":"/drivers/is31fl3731#usage","818":"/drivers/is31fl3731#basic-configuration","819":"/drivers/is31fl3731#i2c-addressing","820":"/drivers/is31fl3731#de-ghosting","821":"/drivers/is31fl3731#arm-configuration","822":"/drivers/is31fl3731#led-mapping","823":"/drivers/is31fl3731#api","824":"/drivers/is31fl3731#api-is31fl3731-led-t","825":"/drivers/is31fl3731#api-is31fl3731-led-t-members","826":"/drivers/is31fl3731#api-is31fl3731-init","827":"/drivers/is31fl3731#api-is31fl3731-init-arguments","828":"/drivers/is31fl3731#api-is31fl3731-write-register","829":"/drivers/is31fl3731#api-is31fl3731-write-register-arguments","830":"/drivers/is31fl3731#api-is31fl3731-select-page","831":"/drivers/is31fl3731#api-is31fl3731-select-page-arguments","832":"/drivers/is31fl3731#api-is31fl3731-set-color","833":"/drivers/is31fl3731#api-is31fl3731-set-color-arguments","834":"/drivers/is31fl3731#api-is31fl3731-set-color-all","835":"/drivers/is31fl3731#api-is31fl3731-set-color-all-arguments","836":"/drivers/is31fl3731#api-is31fl3731-set-value","837":"/drivers/is31fl3731#api-is31fl3731-set-value-arguments","838":"/drivers/is31fl3731#api-is31fl3731-set-value-all","839":"/drivers/is31fl3731#api-is31fl3731-set-value-all-arguments","840":"/drivers/is31fl3731#api-is31fl3731-set-led-control-register-rgb","841":"/drivers/is31fl3731#api-is31fl3731-set-led-control-register-rgb-arguments","842":"/drivers/is31fl3731#api-is31fl3731-set-led-control-register-mono","843":"/drivers/is31fl3731#api-is31fl3731-set-led-control-register-mono-arguments","844":"/drivers/is31fl3731#api-is31fl3731-update-pwm-buffers","845":"/drivers/is31fl3731#api-is31fl3731-update-pwm-buffers-arguments","846":"/drivers/is31fl3731#api-is31fl3731-update-led-control-registers","847":"/drivers/is31fl3731#api-is31fl3731-update-led-control-registers-arguments","848":"/drivers/is31fl3733#is31fl3733-driver","849":"/drivers/is31fl3733#usage","850":"/drivers/is31fl3733#basic-configuration","851":"/drivers/is31fl3733#i2c-addressing","852":"/drivers/is31fl3733#multi-driver-synchronization","853":"/drivers/is31fl3733#pwm-frequency","854":"/drivers/is31fl3733#de-ghosting","855":"/drivers/is31fl3733#global-current-control","856":"/drivers/is31fl3733#arm-configuration","857":"/drivers/is31fl3733#led-mapping","858":"/drivers/is31fl3733#api","859":"/drivers/is31fl3733#api-is31fl3733-led-t","860":"/drivers/is31fl3733#api-is31fl3733-led-t-members","861":"/drivers/is31fl3733#api-is31fl3733-init","862":"/drivers/is31fl3733#api-is31fl3733-init-arguments","863":"/drivers/is31fl3733#api-is31fl3733-write-register","864":"/drivers/is31fl3733#api-is31fl3733-write-register-arguments","865":"/drivers/is31fl3733#api-is31fl3733-select-page","866":"/drivers/is31fl3733#api-is31fl3733-select-page-arguments","867":"/drivers/is31fl3733#api-is31fl3733-set-color","868":"/drivers/is31fl3733#api-is31fl3733-set-color-arguments","869":"/drivers/is31fl3733#api-is31fl3733-set-color-all","870":"/drivers/is31fl3733#api-is31fl3733-set-color-all-arguments","871":"/drivers/is31fl3733#api-is31fl3733-set-value","872":"/drivers/is31fl3733#api-is31fl3733-set-value-arguments","873":"/drivers/is31fl3733#api-is31fl3733-set-value-all","874":"/drivers/is31fl3733#api-is31fl3733-set-value-all-arguments","875":"/drivers/is31fl3733#api-is31fl3733-set-led-control-register-rgb","876":"/drivers/is31fl3733#api-is31fl3733-set-led-control-register-rgb-arguments","877":"/drivers/is31fl3733#api-is31fl3733-set-led-control-register-mono","878":"/drivers/is31fl3733#api-is31fl3733-set-led-control-register-mono-arguments","879":"/drivers/is31fl3733#api-is31fl3733-update-pwm-buffers","880":"/drivers/is31fl3733#api-is31fl3733-update-pwm-buffers-arguments","881":"/drivers/is31fl3733#api-is31fl3733-update-led-control-registers","882":"/drivers/is31fl3733#api-is31fl3733-update-led-control-registers-arguments","883":"/drivers/is31fl3736#is31fl3736-driver","884":"/drivers/is31fl3736#usage","885":"/drivers/is31fl3736#basic-configuration","886":"/drivers/is31fl3736#i2c-addressing","887":"/drivers/is31fl3736#pwm-frequency","888":"/drivers/is31fl3736#de-ghosting","889":"/drivers/is31fl3736#global-current-control","890":"/drivers/is31fl3736#arm-configuration","891":"/drivers/is31fl3736#led-mapping","892":"/drivers/is31fl3736#api","893":"/drivers/is31fl3736#api-is31fl3736-led-t","894":"/drivers/is31fl3736#api-is31fl3736-led-t-members","895":"/drivers/is31fl3736#api-is31fl3736-init","896":"/drivers/is31fl3736#api-is31fl3736-init-arguments","897":"/drivers/is31fl3736#api-is31fl3736-write-register","898":"/drivers/is31fl3736#api-is31fl3736-write-register-arguments","899":"/drivers/is31fl3736#api-is31fl3736-select-page","900":"/drivers/is31fl3736#api-is31fl3736-select-page-arguments","901":"/drivers/is31fl3736#api-is31fl3736-set-color","902":"/drivers/is31fl3736#api-is31fl3736-set-color-arguments","903":"/drivers/is31fl3736#api-is31fl3736-set-color-all","904":"/drivers/is31fl3736#api-is31fl3736-set-color-all-arguments","905":"/drivers/is31fl3736#api-is31fl3736-set-value","906":"/drivers/is31fl3736#api-is31fl3736-set-value-arguments","907":"/drivers/is31fl3736#api-is31fl3736-set-value-all","908":"/drivers/is31fl3736#api-is31fl3736-set-value-all-arguments","909":"/drivers/is31fl3736#api-is31fl3736-set-led-control-register-rgb","910":"/drivers/is31fl3736#api-is31fl3736-set-led-control-register-rgb-arguments","911":"/drivers/is31fl3736#api-is31fl3736-set-led-control-register-mono","912":"/drivers/is31fl3736#api-is31fl3736-set-led-control-register-mono-arguments","913":"/drivers/is31fl3736#api-is31fl3736-update-pwm-buffers","914":"/drivers/is31fl3736#api-is31fl3736-update-pwm-buffers-arguments","915":"/drivers/is31fl3736#api-is31fl3736-update-led-control-registers","916":"/drivers/is31fl3736#api-is31fl3736-update-led-control-registers-arguments","917":"/drivers/is31fl3737#is31fl3737-driver","918":"/drivers/is31fl3737#usage","919":"/drivers/is31fl3737#basic-configuration","920":"/drivers/is31fl3737#i2c-addressing","921":"/drivers/is31fl3737#pwm-frequency","922":"/drivers/is31fl3737#de-ghosting","923":"/drivers/is31fl3737#global-current-control","924":"/drivers/is31fl3737#arm-configuration","925":"/drivers/is31fl3737#led-mapping","926":"/drivers/is31fl3737#api","927":"/drivers/is31fl3737#api-is31fl3737-led-t","928":"/drivers/is31fl3737#api-is31fl3737-led-t-members","929":"/drivers/is31fl3737#api-is31fl3737-init","930":"/drivers/is31fl3737#api-is31fl3737-init-arguments","931":"/drivers/is31fl3737#api-is31fl3737-write-register","932":"/drivers/is31fl3737#api-is31fl3737-write-register-arguments","933":"/drivers/is31fl3737#api-is31fl3737-select-page","934":"/drivers/is31fl3737#api-is31fl3737-select-page-arguments","935":"/drivers/is31fl3737#api-is31fl3737-set-color","936":"/drivers/is31fl3737#api-is31fl3737-set-color-arguments","937":"/drivers/is31fl3737#api-is31fl3737-set-color-all","938":"/drivers/is31fl3737#api-is31fl3737-set-color-all-arguments","939":"/drivers/is31fl3737#api-is31fl3737-set-value","940":"/drivers/is31fl3737#api-is31fl3737-set-value-arguments","941":"/drivers/is31fl3737#api-is31fl3737-set-value-all","942":"/drivers/is31fl3737#api-is31fl3737-set-value-all-arguments","943":"/drivers/is31fl3737#api-is31fl3737-set-led-control-register-rgb","944":"/drivers/is31fl3737#api-is31fl3737-set-led-control-register-rgb-arguments","945":"/drivers/is31fl3737#api-is31fl3737-set-led-control-register-mono","946":"/drivers/is31fl3737#api-is31fl3737-set-led-control-register-mono-arguments","947":"/drivers/is31fl3737#api-is31fl3737-update-pwm-buffers","948":"/drivers/is31fl3737#api-is31fl3737-update-pwm-buffers-arguments","949":"/drivers/is31fl3737#api-is31fl3737-update-led-control-registers","950":"/drivers/is31fl3737#api-is31fl3737-update-led-control-registers-arguments","951":"/drivers/is31fl3741#is31fl3741-driver","952":"/drivers/is31fl3741#usage","953":"/drivers/is31fl3741#basic-configuration","954":"/drivers/is31fl3741#i2c-addressing","955":"/drivers/is31fl3741#pwm-frequency","956":"/drivers/is31fl3741#de-ghosting","957":"/drivers/is31fl3741#global-current-control","958":"/drivers/is31fl3741#arm-configuration","959":"/drivers/is31fl3741#led-mapping","960":"/drivers/is31fl3741#api","961":"/drivers/is31fl3741#api-is31fl3741-led-t","962":"/drivers/is31fl3741#api-is31fl3741-led-t-members","963":"/drivers/is31fl3741#api-is31fl3741-init","964":"/drivers/is31fl3741#api-is31fl3741-init-arguments","965":"/drivers/is31fl3741#api-is31fl3741-write-register","966":"/drivers/is31fl3741#api-is31fl3741-write-register-arguments","967":"/drivers/is31fl3741#api-is31fl3741-select-page","968":"/drivers/is31fl3741#api-is31fl3741-select-page-arguments","969":"/drivers/is31fl3741#api-is31fl3741-set-color","970":"/drivers/is31fl3741#api-is31fl3741-set-color-arguments","971":"/drivers/is31fl3741#api-is31fl3741-set-color-all","972":"/drivers/is31fl3741#api-is31fl3741-set-color-all-arguments","973":"/drivers/is31fl3741#api-is31fl3741-set-value","974":"/drivers/is31fl3741#api-is31fl3741-set-value-arguments","975":"/drivers/is31fl3741#api-is31fl3741-set-value-all","976":"/drivers/is31fl3741#api-is31fl3741-set-value-all-arguments","977":"/drivers/is31fl3741#api-is31fl3741-set-led-control-register-rgb","978":"/drivers/is31fl3741#api-is31fl3741-set-led-control-register-rgb-arguments","979":"/drivers/is31fl3741#api-is31fl3741-set-led-control-register-mono","980":"/drivers/is31fl3741#api-is31fl3741-set-led-control-register-mono-arguments","981":"/drivers/is31fl3741#api-is31fl3741-update-pwm-buffers","982":"/drivers/is31fl3741#api-is31fl3741-update-pwm-buffers-arguments","983":"/drivers/is31fl3741#api-is31fl3741-update-led-control-registers","984":"/drivers/is31fl3741#api-is31fl3741-update-led-control-registers-arguments","985":"/drivers/is31fl3742a#is31fl3742a-driver","986":"/drivers/is31fl3742a#usage","987":"/drivers/is31fl3742a#basic-configuration","988":"/drivers/is31fl3742a#i2c-addressing","989":"/drivers/is31fl3742a#pwm-frequency","990":"/drivers/is31fl3742a#de-ghosting","991":"/drivers/is31fl3742a#global-current-control","992":"/drivers/is31fl3742a#arm-configuration","993":"/drivers/is31fl3742a#led-mapping","994":"/drivers/is31fl3742a#api","995":"/drivers/is31fl3742a#api-is31fl3742a-led-t","996":"/drivers/is31fl3742a#api-is31fl3742a-led-t-members","997":"/drivers/is31fl3742a#api-is31fl3742a-init","998":"/drivers/is31fl3742a#api-is31fl3742a-init-arguments","999":"/drivers/is31fl3742a#api-is31fl3742a-write-register","1000":"/drivers/is31fl3742a#api-is31fl3742a-write-register-arguments","1001":"/drivers/is31fl3742a#api-is31fl3742a-select-page","1002":"/drivers/is31fl3742a#api-is31fl3742a-select-page-arguments","1003":"/drivers/is31fl3742a#api-is31fl3742a-set-color","1004":"/drivers/is31fl3742a#api-is31fl3742a-set-color-arguments","1005":"/drivers/is31fl3742a#api-is31fl3742a-set-color-all","1006":"/drivers/is31fl3742a#api-is31fl3742a-set-color-all-arguments","1007":"/drivers/is31fl3742a#api-is31fl3742a-set-value","1008":"/drivers/is31fl3742a#api-is31fl3742a-set-value-arguments","1009":"/drivers/is31fl3742a#api-is31fl3742a-set-value-all","1010":"/drivers/is31fl3742a#api-is31fl3742a-set-value-all-arguments","1011":"/drivers/is31fl3742a#api-is31fl3742a-set-scaling-register-rgb","1012":"/drivers/is31fl3742a#api-is31fl3742a-set-scaling-register-rgb-arguments","1013":"/drivers/is31fl3742a#api-is31fl3742a-set-scaling-register-mono","1014":"/drivers/is31fl3742a#api-is31fl3742a-set-scaling-register-mono-arguments","1015":"/drivers/is31fl3742a#api-is31fl3742a-update-pwm-buffers","1016":"/drivers/is31fl3742a#api-is31fl3742a-update-pwm-buffers-arguments","1017":"/drivers/is31fl3742a#api-is31fl3742a-update-scaling-registers","1018":"/drivers/is31fl3742a#api-is31fl3742a-update-scaling-registers-arguments","1019":"/drivers/is31fl3743a#is31fl3743a-driver","1020":"/drivers/is31fl3743a#usage","1021":"/drivers/is31fl3743a#basic-configuration","1022":"/drivers/is31fl3743a#i2c-addressing","1023":"/drivers/is31fl3743a#multi-driver-synchronization","1024":"/drivers/is31fl3743a#de-ghosting","1025":"/drivers/is31fl3743a#global-current-control","1026":"/drivers/is31fl3743a#arm-configuration","1027":"/drivers/is31fl3743a#led-mapping","1028":"/drivers/is31fl3743a#api","1029":"/drivers/is31fl3743a#api-is31fl3743a-led-t","1030":"/drivers/is31fl3743a#api-is31fl3743a-led-t-members","1031":"/drivers/is31fl3743a#api-is31fl3743a-init","1032":"/drivers/is31fl3743a#api-is31fl3743a-init-arguments","1033":"/drivers/is31fl3743a#api-is31fl3743a-write-register","1034":"/drivers/is31fl3743a#api-is31fl3743a-write-register-arguments","1035":"/drivers/is31fl3743a#api-is31fl3743a-select-page","1036":"/drivers/is31fl3743a#api-is31fl3743a-select-page-arguments","1037":"/drivers/is31fl3743a#api-is31fl3743a-set-color","1038":"/drivers/is31fl3743a#api-is31fl3743a-set-color-arguments","1039":"/drivers/is31fl3743a#api-is31fl3743a-set-color-all","1040":"/drivers/is31fl3743a#api-is31fl3743a-set-color-all-arguments","1041":"/drivers/is31fl3743a#api-is31fl3743a-set-value","1042":"/drivers/is31fl3743a#api-is31fl3743a-set-value-arguments","1043":"/drivers/is31fl3743a#api-is31fl3743a-set-value-all","1044":"/drivers/is31fl3743a#api-is31fl3743a-set-value-all-arguments","1045":"/drivers/is31fl3743a#api-is31fl3743a-set-scaling-register-rgb","1046":"/drivers/is31fl3743a#api-is31fl3743a-set-scaling-register-rgb-arguments","1047":"/drivers/is31fl3743a#api-is31fl3743a-set-scaling-register-mono","1048":"/drivers/is31fl3743a#api-is31fl3743a-set-scaling-register-mono-arguments","1049":"/drivers/is31fl3743a#api-is31fl3743a-update-pwm-buffers","1050":"/drivers/is31fl3743a#api-is31fl3743a-update-pwm-buffers-arguments","1051":"/drivers/is31fl3743a#api-is31fl3743a-update-scaling-registers","1052":"/drivers/is31fl3743a#api-is31fl3743a-update-scaling-registers-arguments","1053":"/drivers/is31fl3745#is31fl3745-driver","1054":"/drivers/is31fl3745#usage","1055":"/drivers/is31fl3745#basic-configuration","1056":"/drivers/is31fl3745#i2c-addressing","1057":"/drivers/is31fl3745#multi-driver-synchronization","1058":"/drivers/is31fl3745#de-ghosting","1059":"/drivers/is31fl3745#global-current-control","1060":"/drivers/is31fl3745#arm-configuration","1061":"/drivers/is31fl3745#led-mapping","1062":"/drivers/is31fl3745#api","1063":"/drivers/is31fl3745#api-is31fl3745-led-t","1064":"/drivers/is31fl3745#api-is31fl3745-led-t-members","1065":"/drivers/is31fl3745#api-is31fl3745-init","1066":"/drivers/is31fl3745#api-is31fl3745-init-arguments","1067":"/drivers/is31fl3745#api-is31fl3745-write-register","1068":"/drivers/is31fl3745#api-is31fl3745-write-register-arguments","1069":"/drivers/is31fl3745#api-is31fl3745-select-page","1070":"/drivers/is31fl3745#api-is31fl3745-select-page-arguments","1071":"/drivers/is31fl3745#api-is31fl3745-set-color","1072":"/drivers/is31fl3745#api-is31fl3745-set-color-arguments","1073":"/drivers/is31fl3745#api-is31fl3745-set-color-all","1074":"/drivers/is31fl3745#api-is31fl3745-set-color-all-arguments","1075":"/drivers/is31fl3745#api-is31fl3745-set-value","1076":"/drivers/is31fl3745#api-is31fl3745-set-value-arguments","1077":"/drivers/is31fl3745#api-is31fl3745-set-value-all","1078":"/drivers/is31fl3745#api-is31fl3745-set-value-all-arguments","1079":"/drivers/is31fl3745#api-is31fl3745-set-scaling-register-rgb","1080":"/drivers/is31fl3745#api-is31fl3745-set-scaling-register-rgb-arguments","1081":"/drivers/is31fl3745#api-is31fl3745-set-scaling-register-mono","1082":"/drivers/is31fl3745#api-is31fl3745-set-scaling-register-mono-arguments","1083":"/drivers/is31fl3745#api-is31fl3745-update-pwm-buffers","1084":"/drivers/is31fl3745#api-is31fl3745-update-pwm-buffers-arguments","1085":"/drivers/is31fl3745#api-is31fl3745-update-scaling-registers","1086":"/drivers/is31fl3745#api-is31fl3745-update-scaling-registers-arguments","1087":"/drivers/is31fl3746a#is31fl3746a-driver","1088":"/drivers/is31fl3746a#usage","1089":"/drivers/is31fl3746a#basic-configuration","1090":"/drivers/is31fl3746a#i2c-addressing","1091":"/drivers/is31fl3746a#pwm-frequency","1092":"/drivers/is31fl3746a#de-ghosting","1093":"/drivers/is31fl3746a#global-current-control","1094":"/drivers/is31fl3746a#arm-configuration","1095":"/drivers/is31fl3746a#led-mapping","1096":"/drivers/is31fl3746a#api","1097":"/drivers/is31fl3746a#api-is31fl3746a-led-t","1098":"/drivers/is31fl3746a#api-is31fl3746a-led-t-members","1099":"/drivers/is31fl3746a#api-is31fl3746a-init","1100":"/drivers/is31fl3746a#api-is31fl3746a-init-arguments","1101":"/drivers/is31fl3746a#api-is31fl3746a-write-register","1102":"/drivers/is31fl3746a#api-is31fl3746a-write-register-arguments","1103":"/drivers/is31fl3746a#api-is31fl3746a-select-page","1104":"/drivers/is31fl3746a#api-is31fl3746a-select-page-arguments","1105":"/drivers/is31fl3746a#api-is31fl3746a-set-color","1106":"/drivers/is31fl3746a#api-is31fl3746a-set-color-arguments","1107":"/drivers/is31fl3746a#api-is31fl3746a-set-color-all","1108":"/drivers/is31fl3746a#api-is31fl3746a-set-color-all-arguments","1109":"/drivers/is31fl3746a#api-is31fl3746a-set-value","1110":"/drivers/is31fl3746a#api-is31fl3746a-set-value-arguments","1111":"/drivers/is31fl3746a#api-is31fl3746a-set-value-all","1112":"/drivers/is31fl3746a#api-is31fl3746a-set-value-all-arguments","1113":"/drivers/is31fl3746a#api-is31fl3746a-set-scaling-register-rgb","1114":"/drivers/is31fl3746a#api-is31fl3746a-set-scaling-register-rgb-arguments","1115":"/drivers/is31fl3746a#api-is31fl3746a-set-scaling-register-mono","1116":"/drivers/is31fl3746a#api-is31fl3746a-set-scaling-register-mono-arguments","1117":"/drivers/is31fl3746a#api-is31fl3746a-update-pwm-buffers","1118":"/drivers/is31fl3746a#api-is31fl3746a-update-pwm-buffers-arguments","1119":"/drivers/is31fl3746a#api-is31fl3746a-update-scaling-registers","1120":"/drivers/is31fl3746a#api-is31fl3746a-update-scaling-registers-arguments","1121":"/drivers/serial#serial-driver","1122":"/drivers/serial#bitbang","1123":"/drivers/serial#pin-configuration","1124":"/drivers/serial#setup","1125":"/drivers/serial#usart-half-duplex","1126":"/drivers/serial#pin-configuration-1","1127":"/drivers/serial#setup-1","1128":"/drivers/serial#usart-full-duplex","1129":"/drivers/serial#pin-configuration-2","1130":"/drivers/serial#setup-2","1131":"/drivers/serial#choosing-a-driver-subsystem","1132":"/drivers/serial#the-serial-driver","1133":"/drivers/serial#the-sio-driver","1134":"/drivers/serial#the-pio-driver","1135":"/drivers/serial#advanced-configuration","1136":"/drivers/serial#baudrate","1137":"/drivers/serial#timeout","1138":"/drivers/serial#troubleshooting","1139":"/drivers/serial#alternate-functions-for-selected-stm32-mcus","1140":"/drivers/serial#stm32f303-proton-c-datasheet","1141":"/drivers/serial#stm32f072-datasheet","1142":"/drivers/serial#stm32f103-medium-density-c8-cb-datasheet","1143":"/drivers/snled27351#snled27351-driver","1144":"/drivers/snled27351#usage","1145":"/drivers/snled27351#basic-configuration","1146":"/drivers/snled27351#i2c-addressing","1147":"/drivers/snled27351#arm-configuration","1148":"/drivers/snled27351#led-mapping","1149":"/drivers/snled27351#api","1150":"/drivers/snled27351#api-snled27351-led-t","1151":"/drivers/snled27351#api-snled27351-led-t-members","1152":"/drivers/snled27351#api-snled27351-init","1153":"/drivers/snled27351#api-snled27351-init-arguments","1154":"/drivers/snled27351#api-snled27351-write-register","1155":"/drivers/snled27351#api-snled27351-write-register-arguments","1156":"/drivers/snled27351#api-snled27351-select-page","1157":"/drivers/snled27351#api-snled27351-select-page-arguments","1158":"/drivers/snled27351#api-snled27351-set-color","1159":"/drivers/snled27351#api-snled27351-set-color-arguments","1160":"/drivers/snled27351#api-snled27351-set-color-all","1161":"/drivers/snled27351#api-snled27351-set-color-all-arguments","1162":"/drivers/snled27351#api-snled27351-set-value","1163":"/drivers/snled27351#api-snled27351-set-value-arguments","1164":"/drivers/snled27351#api-snled27351-set-value-all","1165":"/drivers/snled27351#api-snled27351-set-value-all-arguments","1166":"/drivers/snled27351#api-snled27351-set-led-control-register-rgb","1167":"/drivers/snled27351#api-snled27351-set-led-control-register-rgb-arguments","1168":"/drivers/snled27351#api-snled27351-set-led-control-register-mono","1169":"/drivers/snled27351#api-snled27351-set-led-control-register-mono-arguments","1170":"/drivers/snled27351#api-snled27351-update-pwm-buffers","1171":"/drivers/snled27351#api-snled27351-update-pwm-buffers-arguments","1172":"/drivers/snled27351#api-snled27351-update-led-control-registers","1173":"/drivers/snled27351#api-snled27351-update-led-control-registers-arguments","1174":"/drivers/spi#spi-master-driver","1175":"/drivers/spi#usage","1176":"/drivers/spi#avr-configuration","1177":"/drivers/spi#arm-configuration","1178":"/drivers/spi#api","1179":"/drivers/spi#api-spi-init","1180":"/drivers/spi#api-spi-start","1181":"/drivers/spi#api-spi-start-arguments","1182":"/drivers/spi#api-spi-start-return","1183":"/drivers/spi#api-spi-write","1184":"/drivers/spi#api-spi-write-arguments","1185":"/drivers/spi#api-spi-write-return","1186":"/drivers/spi#api-spi-read","1187":"/drivers/spi#api-spi-read-return","1188":"/drivers/spi#api-spi-transmit","1189":"/drivers/spi#api-spi-transmit-arguments","1190":"/drivers/spi#api-spi-transmit-return","1191":"/drivers/spi#api-spi-receive","1192":"/drivers/spi#api-spi-receive-arguments","1193":"/drivers/spi#api-spi-receive-return","1194":"/drivers/spi#api-spi-stop","1195":"/drivers/uart#uart-driver","1196":"/drivers/uart#usage","1197":"/drivers/uart#avr-configuration","1198":"/drivers/uart#arm-configuration","1199":"/drivers/uart#api","1200":"/drivers/uart#api-uart-init","1201":"/drivers/uart#api-uart-init-arguments","1202":"/drivers/uart#api-uart-write","1203":"/drivers/uart#api-uart-write-arguments","1204":"/drivers/uart#api-uart-read","1205":"/drivers/uart#api-uart-read-return","1206":"/drivers/uart#api-uart-transmit","1207":"/drivers/uart#api-uart-transmit-arguments","1208":"/drivers/uart#api-uart-receive","1209":"/drivers/uart#api-uart-receive-arguments","1210":"/drivers/uart#api-uart-available","1211":"/drivers/uart#api-uart-available-return","1212":"/drivers/ws2812#ws2812-driver","1213":"/drivers/ws2812#usage","1214":"/drivers/ws2812#basic-configuration","1215":"/drivers/ws2812#timing-adjustment","1216":"/drivers/ws2812#byte-order","1217":"/drivers/ws2812#rgbw-support","1218":"/drivers/ws2812#driver-configuration","1219":"/drivers/ws2812#bitbang-driver","1220":"/drivers/ws2812#i2c-driver","1221":"/drivers/ws2812#pio-driver","1222":"/drivers/ws2812#pwm-driver","1223":"/drivers/ws2812#spi-driver","1224":"/drivers/ws2812#arm-configuration","1225":"/drivers/ws2812#push-pull-open-drain","1226":"/drivers/ws2812#arm-spi-driver","1227":"/drivers/ws2812#arm-spi-baudrate","1228":"/drivers/ws2812#arm-spi-circular-buffer","1229":"/drivers/ws2812#arm-pio-driver","1230":"/drivers/ws2812#arm-pwm-driver","1231":"/drivers/ws2812#api","1232":"/drivers/ws2812#api-ws2812-setleds","1233":"/drivers/ws2812#api-ws2812-setleds-arguments","1234":"/easy_maker#easy-maker-build-one-off-projects-in-configurator","1235":"/easy_maker#quickstart","1236":"/easy_maker#direct-pin","1237":"/faq_build#frequently-asked-build-questions","1238":"/faq_build#can-t-program-on-linux","1239":"/faq_build#linux-udev-rules","1240":"/faq_build#serial-device-is-not-detected-in-bootloader-mode-on-linux","1241":"/faq_build#unknown-device-for-dfu-bootloader","1242":"/faq_build#usb-vid-and-pid","1243":"/faq_build#i-just-flashed-my-keyboard-and-it-does-nothing-keypresses-don-t-register-it-s-also-arm-rev6-planck-clueboard-60-hs60v2-etc-feb-2019","1244":"/faq_debug#debugging-faq","1245":"/faq_debug#debugging","1246":"/faq_debug#debugging-tools","1247":"/faq_debug#debugging-with-qmk-toolbox","1248":"/faq_debug#debugging-with-qmk-cli","1249":"/faq_debug#debugging-with-hid-listen","1250":"/faq_debug#debug-api","1251":"/faq_debug#debug-examples","1252":"/faq_debug#which-matrix-position-is-this-keypress","1253":"/faq_debug#how-long-did-it-take-to-scan-for-a-keypress","1254":"/faq_debug#hid-listen-can-t-recognize-device","1255":"/faq_debug#can-t-get-message-on-console","1256":"/faq_general#frequently-asked-questions","1257":"/faq_general#what-is-qmk","1258":"/faq_general#i-don-t-know-where-to-start","1259":"/faq_general#how-can-i-flash-the-firmware-i-built","1260":"/faq_general#what-if-i-have-an-issue-that-isn-t-covered-here","1261":"/faq_general#what-if-i-found-a-bug","1262":"/faq_general#but-git-and-github-are-intimidating","1263":"/faq_general#i-have-a-keyboard-that-i-want-to-add-support-for","1264":"/faq_general#what-if-i-want-to-brand-it-with-qmk","1265":"/faq_general#what-differences-are-there-between-qmk-and-tmk","1266":"/faq_keymap#keymap-faq","1267":"/faq_keymap#what-keycodes-can-i-use","1268":"/faq_keymap#what-are-the-default-keycodes","1269":"/faq_keymap#how-can-i-make-custom-names-for-complex-keycodes","1270":"/faq_keymap#my-keymap-doesn-t-update-when-i-flash-it","1271":"/faq_keymap#some-of-my-keys-are-swapped-or-not-working","1272":"/faq_keymap#the-menu-key-isn-t-working","1273":"/faq_keymap#power-keys-aren-t-working","1274":"/faq_keymap#one-shot-modifier","1275":"/faq_keymap#modifier-layer-stuck","1276":"/faq_keymap#mechanical-lock-switch-support","1277":"/faq_keymap#input-special-characters-other-than-ascii-like-cedille-c","1278":"/faq_keymap#fn-key-on-macos","1279":"/faq_keymap#keys-supported-in-mac-osx","1280":"/faq_keymap#jis-keys-in-mac-osx","1281":"/faq_keymap#rn-42-bluetooth-doesn-t-work-with-karabiner","1282":"/faq_keymap#esc-and-on-a-single-key","1283":"/faq_keymap#eject-on-mac-osx","1284":"/faq_keymap#what-are-real-and-weak-modifiers","1285":"/faq_misc#miscellaneous-faq","1286":"/faq_misc#testing","1287":"/faq_misc#safety-considerations","1288":"/faq_misc#nkro-doesn-t-work","1289":"/faq_misc#trackpoint-needs-reset-circuit-ps-2-mouse-support","1290":"/faq_misc#can-t-read-column-of-matrix-beyond-16","1291":"/faq_misc#special-extra-key-doesn-t-work-system-audio-control-keys","1292":"/faq_misc#wake-from-sleep-doesn-t-work","1293":"/faq_misc#using-arduino","1294":"/faq_misc#enabling-jtag","1295":"/faq_misc#usb-3-compatibility","1296":"/faq_misc#mac-compatibility","1297":"/faq_misc#os-x-10-11-and-hub","1298":"/faq_misc#problem-in-bios-uefi-setup-resume-sleep-wake-power-cycles","1299":"/feature_advanced_keycodes#modifier-keys","1300":"/feature_advanced_keycodes#checking-modifier-state","1301":"/feature_advanced_keycodes#examples","1302":"/feature_advanced_keycodes#alt-escape-for-alt-tab","1303":"/feature_advanced_keycodes#shift-backspace-for-delete","1304":"/feature_advanced_keycodes#advanced-topics","1305":"/feature_advanced_keycodes#switching-and-toggling-layers","1306":"/feature_advanced_keycodes#mod-tap","1307":"/feature_advanced_keycodes#one-shot-keys","1308":"/feature_advanced_keycodes#tap-hold-configuration-options","1309":"/feature_advanced_keycodes#key-overrides","1310":"/feature_converters#converters","1311":"/feature_converters#supported-converters","1312":"/feature_converters#overview","1313":"/feature_converters#conditional-configuration","1314":"/feature_converters#pin-compatibility","1315":"/feature_converters#pro-micro","1316":"/feature_converters#proton_c","1317":"/feature_converters#kb2040","1318":"/feature_converters#sparkfun_pm2040","1319":"/feature_converters#stemcell","1320":"/feature_converters#bonsai_c4","1321":"/feature_converters#rp2040_ce","1322":"/feature_converters#elite-c","1323":"/feature_converters#stemcell-stemcell-elite","1324":"/feature_converters#rp2040_ce_elite","1325":"/feature_debounce_type#contact-bounce-contact-chatter","1326":"/feature_debounce_type#types-of-debounce-algorithms","1327":"/feature_debounce_type#supported-debounce-algorithms","1328":"/feature_debounce_type#debounce-time","1329":"/feature_debounce_type#debounce-method","1330":"/feature_debounce_type#implementing-your-own-debouncing-code","1331":"/feature_eeprom#persistent-configuration-eeprom","1332":"/feature_eeprom#example-implementation","1333":"/feature_eeprom#eeconfig-function-documentation","1334":"/feature_layers#layers","1335":"/feature_layers#switching-and-toggling-layers","1336":"/feature_layers#caveats","1337":"/feature_layers#working-with-layers","1338":"/feature_layers#beginners","1339":"/feature_layers#intermediate-users","1340":"/feature_layers#advanced-users","1341":"/feature_layers#functions","1342":"/feature_layers#layer-change-code","1343":"/feature_layers#example-layer-state-set-implementation","1344":"/feature_layers#example-keycode-to-cycle-through-layers","1345":"/feature_layers#layer-state-set-function-documentation","1346":"/feature_layouts#layouts-using-a-keymap-with-multiple-keyboards","1347":"/feature_layouts#supporting-a-layout","1348":"/feature_layouts#building-a-keymap","1349":"/feature_layouts#conflicting-layouts","1350":"/feature_layouts#tips-for-making-layouts-keyboard-agnostic","1351":"/feature_layouts#includes","1352":"/feature_layouts#keymaps","1353":"/feature_macros#macros","1354":"/feature_macros#using-macros-in-json-keymaps","1355":"/feature_macros#selecting-your-host-keyboard-layout","1356":"/feature_macros#macro-basics","1357":"/feature_macros#object-format","1358":"/feature_macros#using-macros-in-c-keymaps","1359":"/feature_macros#send-string-process-record-user","1360":"/feature_macros#advanced-macros","1361":"/feature_macros#tap-down-and-up","1362":"/feature_macros#alternative-keymaps","1363":"/feature_macros#strings-in-memory","1364":"/feature_macros#advanced-macro-functions","1365":"/feature_macros#record-event-pressed","1366":"/feature_macros#register-code-kc","1367":"/feature_macros#unregister-code-kc","1368":"/feature_macros#tap-code-kc","1369":"/feature_macros#tap-code-delay-kc-delay","1370":"/feature_macros#register-code16-kc-unregister-code16-kc-tap-code16-kc-and-tap-code16-delay-kc-delay","1371":"/feature_macros#clear-keyboard","1372":"/feature_macros#clear-mods","1373":"/feature_macros#clear-keyboard-but-mods","1374":"/feature_macros#advanced-example","1375":"/feature_macros#super-alt↯tab","1376":"/feature_userspace#userspace-sharing-code-between-keymaps","1377":"/feature_userspace#rules-mk","1378":"/feature_userspace#override-default-userspace","1379":"/feature_userspace#configuration-options-config-h","1380":"/feature_userspace#readme-readme-md","1381":"/feature_userspace#build-all-keyboards-that-support-a-specific-keymap","1382":"/feature_userspace#examples","1383":"/feature_userspace#customized-functions","1384":"/feature_userspace#custom-features","1385":"/feature_userspace#consolidated-macros","1386":"/features/audio#audio","1387":"/features/audio#avr-based-boards","1388":"/features/audio#wiring","1389":"/features/audio#arm-based-boards","1390":"/features/audio#dac-basic","1391":"/features/audio#wiring-1","1392":"/features/audio#proton-c-example","1393":"/features/audio#dac-additive","1394":"/features/audio#pwm-software","1395":"/features/audio#wiring-2","1396":"/features/audio#pwm-hardware","1397":"/features/audio#tone-multiplexing","1398":"/features/audio#songs","1399":"/features/audio#audio-config","1400":"/features/audio#tempo","1401":"/features/audio#arm-audio-volume","1402":"/features/audio#voices","1403":"/features/audio#music-mode","1404":"/features/audio#music-mask","1405":"/features/audio#music-map","1406":"/features/audio#audio-click","1407":"/features/audio#midi-functionality","1408":"/features/audio#audio-keycodes","1409":"/features/auto_shift#auto-shift-why-do-we-need-a-shift-key","1410":"/features/auto_shift#why-auto-shift","1411":"/features/auto_shift#how-does-it-work","1412":"/features/auto_shift#are-there-limitations-to-auto-shift","1413":"/features/auto_shift#how-do-i-enable-auto-shift","1414":"/features/auto_shift#modifiers","1415":"/features/auto_shift#configuring-auto-shift","1416":"/features/auto_shift#auto-shift-timeout-value-in-ms","1417":"/features/auto_shift#no-auto-shift-special-simple-define","1418":"/features/auto_shift#no-auto-shift-tab-simple-define","1419":"/features/auto_shift#no-auto-shift-symbols-simple-define","1420":"/features/auto_shift#no-auto-shift-numeric-simple-define","1421":"/features/auto_shift#no-auto-shift-alpha-simple-define","1422":"/features/auto_shift#auto-shift-enter-simple-define","1423":"/features/auto_shift#auto-shift-per-key","1424":"/features/auto_shift#auto-shift-repeat-simple-define","1425":"/features/auto_shift#auto-shift-no-auto-repeat-simple-define","1426":"/features/auto_shift#auto-shift-alpha-predefined-key-group","1427":"/features/auto_shift#auto-shift-numeric-predefined-key-group","1428":"/features/auto_shift#auto-shift-symbols-predefined-key-group","1429":"/features/auto_shift#auto-shift-special-predefined-key-group","1430":"/features/auto_shift#custom-shifted-values","1431":"/features/auto_shift#retro-shift","1432":"/features/auto_shift#retro-shift-and-tap-hold-configurations","1433":"/features/auto_shift#using-auto-shift-setup","1434":"/features/auto_shift#setup","1435":"/features/auto_shift#use","1436":"/features/auto_shift#an-example-run","1437":"/features/autocorrect#autocorrect","1438":"/features/autocorrect#how-does-it-work","1439":"/features/autocorrect#how-do-i-enable-autocorrection","1440":"/features/autocorrect#customizing-autocorrect-library","1441":"/features/autocorrect#avoiding-false-triggers","1442":"/features/autocorrect#overriding-autocorrect","1443":"/features/autocorrect#keycodes","1444":"/features/autocorrect#user-callback-functions","1445":"/features/autocorrect#process-autocorrect","1446":"/features/autocorrect#process-autocorrect-example","1447":"/features/autocorrect#apply-autocorrect","1448":"/features/autocorrect#apply-autocorrect-example","1449":"/features/autocorrect#autocorrect-status","1450":"/features/autocorrect#appendix","1451":"/features/autocorrect#encoding","1452":"/features/autocorrect#decoding","1453":"/features/autocorrect#credits","1454":"/features/backlight#backlighting","1455":"/features/backlight#usage","1456":"/features/backlight#keycodes","1457":"/features/backlight#basic-configuration","1458":"/features/backlight#on-state","1459":"/features/backlight#multiple-backlight-pins","1460":"/features/backlight#driver-configuration","1461":"/features/backlight#pwm-driver","1462":"/features/backlight#timer-driver","1463":"/features/backlight#software-driver","1464":"/features/backlight#custom-driver","1465":"/features/backlight#avr-configuration","1466":"/features/backlight#avr-pwm-driver","1467":"/features/backlight#avr-timer-driver","1468":"/features/backlight#arm-configuration","1469":"/features/backlight#arm-pwm-driver","1470":"/features/backlight#arm-timer-driver","1471":"/features/backlight#example-schematic","1472":"/features/backlight#api","1473":"/features/backlight#api-backlight-toggle","1474":"/features/backlight#api-backlight-enable","1475":"/features/backlight#api-backlight-disable","1476":"/features/backlight#api-backlight-step","1477":"/features/backlight#api-backlight-increase","1478":"/features/backlight#api-backlight-decrease","1479":"/features/backlight#api-backlight-level","1480":"/features/backlight#api-backlight-level-arguments","1481":"/features/backlight#api-get-backlight-level","1482":"/features/backlight#api-get-backlight-level-return","1483":"/features/backlight#api-is-backlight-enabled","1484":"/features/backlight#api-is-backlight-enabled-return","1485":"/features/backlight#api-backlight-toggle-breathing","1486":"/features/backlight#api-backlight-enable-breathing","1487":"/features/backlight#api-backlight-disable-breathing","1488":"/features/backlight#api-is-backlight-breathing","1489":"/features/backlight#api-is-backlight-breathing-return","1490":"/features/bluetooth#bluetooth","1491":"/features/bluetooth#bluetooth-known-supported-hardware","1492":"/features/bluetooth#adafruit-ble-spi-friend","1493":"/features/bluetooth#bluetooth-rules-mk-options","1494":"/features/bluetooth#bluetooth-keycodes","1495":"/features/bootmagic#bootmagic","1496":"/features/bootmagic#split-keyboards","1497":"/features/bootmagic#advanced-bootmagic","1498":"/features/bootmagic#addenda","1499":"/features/caps_word#caps-word","1500":"/features/caps_word#how-do-i-enable-caps-word","1501":"/features/caps_word#troubleshooting-command","1502":"/features/caps_word#customizing-caps-word","1503":"/features/caps_word#invert-on-shift","1504":"/features/caps_word#idle-timeout","1505":"/features/caps_word#functions","1506":"/features/caps_word#configure-which-keys-are-word-breaking","1507":"/features/caps_word#representing-caps-word-state","1508":"/features/combo#combos","1509":"/features/combo#advanced-keycodes-support","1510":"/features/combo#overlapping-combos","1511":"/features/combo#examples","1512":"/features/combo#keycodes","1513":"/features/combo#advanced-configuration","1514":"/features/combo#combo-term","1515":"/features/combo#buffer-and-state-sizes","1516":"/features/combo#modifier-combos","1517":"/features/combo#strict-key-press-order","1518":"/features/combo#per-combo-timing-holding-tapping-and-key-press-order","1519":"/features/combo#generic-hook-to-dis-allow-a-combo-activation","1520":"/features/combo#combo-timer","1521":"/features/combo#define-combo-strict-timer","1522":"/features/combo#define-combo-no-timer","1523":"/features/combo#customizable-key-releases","1524":"/features/combo#layer-independent-combos","1525":"/features/combo#combo-reference-layers-by-layer","1526":"/features/combo#user-callbacks","1527":"/features/combo#dictionary-management","1528":"/features/command#command","1529":"/features/command#usage","1530":"/features/command#configuration","1531":"/features/digitizer#digitizer","1532":"/features/digitizer#usage","1533":"/features/digitizer#positioning","1534":"/features/digitizer#examples","1535":"/features/digitizer#api","1536":"/features/digitizer#api-digitizer-t","1537":"/features/digitizer#api-digitizer-t-members","1538":"/features/digitizer#api-digitizer-flush","1539":"/features/digitizer#api-digitizer-in-range-on","1540":"/features/digitizer#api-digitizer-in-range-off","1541":"/features/digitizer#api-digitizer-tip-switch-on","1542":"/features/digitizer#api-digitizer-tip-switch-off","1543":"/features/digitizer#api-digitizer-barrel-switch-on","1544":"/features/digitizer#api-digitizer-barrel-switch-off","1545":"/features/digitizer#api-digitizer-set-position","1546":"/features/digitizer#api-digitizer-set-position-arguments","1547":"/features/dip_switch#dip-switches","1548":"/features/dip_switch#dip-switch-map","1549":"/features/dip_switch#callbacks","1550":"/features/dip_switch#hardware","1551":"/features/dip_switch#connects-each-switch-in-the-dip-switch-to-the-gpio-pin-of-the-mcu","1552":"/features/dip_switch#connect-each-switch-in-the-dip-switch-to-an-unused-intersections-in-the-key-matrix","1553":"/features/dynamic_macros#dynamic-macros-record-and-replay-macros-in-runtime","1554":"/features/dynamic_macros#customization","1555":"/features/dynamic_macros#dynamic-macro-user-call","1556":"/features/dynamic_macros#user-hooks","1557":"/features/encoders#encoders","1558":"/features/encoders#split-keyboards","1559":"/features/encoders#encoder-map","1560":"/features/encoders#callbacks","1561":"/features/encoders#hardware","1562":"/features/encoders#multiple-encoders","1563":"/features/grave_esc#grave-escape","1564":"/features/grave_esc#usage","1565":"/features/grave_esc#what-your-os-sees","1566":"/features/grave_esc#keycodes","1567":"/features/grave_esc#caveats","1568":"/features/grave_esc#configuration","1569":"/features/haptic_feedback#haptic-feedback","1570":"/features/haptic_feedback#haptic-feedback-rules-mk-options","1571":"/features/haptic_feedback#known-supported-hardware","1572":"/features/haptic_feedback#haptic-keycodes","1573":"/features/haptic_feedback#solenoids","1574":"/features/haptic_feedback#drv2605l","1575":"/features/haptic_feedback#feedback-motor-setup","1576":"/features/haptic_feedback#erm","1577":"/features/haptic_feedback#lra","1578":"/features/haptic_feedback#drv2605l-waveform-library","1579":"/features/haptic_feedback#optional-drv2605l-defines","1580":"/features/haptic_feedback#drv2605l-continuous-haptic-mode","1581":"/features/haptic_feedback#haptic-key-exclusion","1582":"/features/haptic_feedback#no-haptic-mod","1583":"/features/haptic_feedback#no-haptic-alpha","1584":"/features/haptic_feedback#no-haptic-punctuation","1585":"/features/haptic_feedback#no-haptic-lockkeys","1586":"/features/haptic_feedback#no-haptic-nav","1587":"/features/haptic_feedback#no-haptic-numeric","1588":"/features/hd44780#hd44780-lcd-driver","1589":"/features/hd44780#supported-hardware","1590":"/features/hd44780#usage","1591":"/features/hd44780#basic-configuration","1592":"/features/hd44780#examples","1593":"/features/hd44780#example-hello-world","1594":"/features/hd44780#example-custom-character","1595":"/features/hd44780#api","1596":"/features/hd44780#api-hd44780-init","1597":"/features/hd44780#api-hd44780-init-arguments","1598":"/features/hd44780#api-hd44780-clear","1599":"/features/hd44780#api-hd44780-home","1600":"/features/hd44780#api-hd44780-on","1601":"/features/hd44780#api-hd44780-on-arguments","1602":"/features/hd44780#api-hd44780-off","1603":"/features/hd44780#api-hd44780-set-cursor","1604":"/features/hd44780#api-hd44780-set-cursor-arguments","1605":"/features/hd44780#api-hd44780-putc","1606":"/features/hd44780#api-hd44780-putc-arguments","1607":"/features/hd44780#api-hd44780-puts","1608":"/features/hd44780#api-hd44780-puts-arguments","1609":"/features/hd44780#api-hd44780-puts-p","1610":"/features/hd44780#api-hd44780-puts-p-arguments","1611":"/features/hd44780#api-hd44780-define-char","1612":"/features/hd44780#api-hd44780-define-char-arguments","1613":"/features/hd44780#api-hd44780-define-char-p","1614":"/features/hd44780#api-hd44780-define-char-p-arguments","1615":"/features/hd44780#api-hd44780-busy","1616":"/features/hd44780#api-hd44780-busy-arguments","1617":"/features/hd44780#api-hd44780-write","1618":"/features/hd44780#api-hd44780-write-arguments","1619":"/features/hd44780#api-hd44780-read","1620":"/features/hd44780#api-hd44780-read-arguments","1621":"/features/hd44780#api-hd44780-read-return","1622":"/features/hd44780#api-hd44780-command","1623":"/features/hd44780#api-hd44780-command-arguments","1624":"/features/hd44780#api-hd44780-data","1625":"/features/hd44780#api-hd44780-data-arguments","1626":"/features/hd44780#api-hd44780-set-cgram-address","1627":"/features/hd44780#api-hd44780-set-cgram-address-arguments","1628":"/features/hd44780#api-hd44780-set-ddram-address","1629":"/features/hd44780#api-hd44780-set-ddram-address-arguments","1630":"/features/joystick#joystick","1631":"/features/joystick#usage","1632":"/features/joystick#configuration","1633":"/features/joystick#axes","1634":"/features/joystick#virtual-axes","1635":"/features/joystick#keycodes","1636":"/features/joystick#api","1637":"/features/joystick#api-joystick-t","1638":"/features/joystick#api-joystick-t-members","1639":"/features/joystick#api-joystick-config-t","1640":"/features/joystick#api-joystick-config-t-members","1641":"/features/joystick#api-joystick-flush","1642":"/features/joystick#api-register-joystick-button","1643":"/features/joystick#api-register-joystick-button-arguments","1644":"/features/joystick#api-unregister-joystick-button","1645":"/features/joystick#api-unregister-joystick-button-arguments","1646":"/features/joystick#api-joystick-read-axis","1647":"/features/joystick#api-joystick-read-axis-arguments","1648":"/features/joystick#api-joystick-read-axis-return","1649":"/features/joystick#api-joystick-set-axis","1650":"/features/joystick#api-joystick-set-axis-arguments","1651":"/features/key_lock#key-lock","1652":"/features/key_lock#usage","1653":"/features/key_lock#keycodes","1654":"/features/key_lock#caveats","1655":"/features/key_overrides#key-overrides","1656":"/features/key_overrides#a-few-more-examples-to-get-started-you-could-use-key-overrides-to","1657":"/features/key_overrides#setup","1658":"/features/key_overrides#creating-key-overrides","1659":"/features/key_overrides#ko-make-basic-modifiers-key-replacement","1660":"/features/key_overrides#ko-make-with-layers-modifiers-key-replacement-layers","1661":"/features/key_overrides#ko-make-with-layers-and-negmods-modifiers-key-replacement-layers-negative-mods","1662":"/features/key_overrides#ko-make-with-layers-negmods-and-options-modifiers-key-replacement-layers-negative-mods-options","1663":"/features/key_overrides#simple-example","1664":"/features/key_overrides#intermediate-difficulty-examples","1665":"/features/key_overrides#media-controls-amp-screen-brightness","1666":"/features/key_overrides#flexible-macos-friendly-grave-escape","1667":"/features/key_overrides#advanced-examples","1668":"/features/key_overrides#modifiers-as-layer-keys","1669":"/features/key_overrides#keycodes","1670":"/features/key_overrides#reference-for-key_override_t","1671":"/features/key_overrides#reference-for-ko_option_t","1672":"/features/key_overrides#for-advanced-users-inner-workings","1673":"/features/key_overrides#activation","1674":"/features/key_overrides#deactivation","1675":"/features/key_overrides#key-repeat-delay","1676":"/features/key_overrides#difference-to-combos","1677":"/features/key_overrides#neutralize-flashing-modifiers","1678":"/features/leader_key#the-leader-key","1679":"/features/leader_key#usage","1680":"/features/leader_key#callbacks","1681":"/features/leader_key#basic-configuration","1682":"/features/leader_key#timeout","1683":"/features/leader_key#per-key-timeout","1684":"/features/leader_key#disabling-initial-timeout","1685":"/features/leader_key#strict-key-processing","1686":"/features/leader_key#example","1687":"/features/leader_key#keycodes","1688":"/features/leader_key#api","1689":"/features/leader_key#api-leader-start-user","1690":"/features/leader_key#api-leader-end-user","1691":"/features/leader_key#api-leader-start","1692":"/features/leader_key#api-leader-end","1693":"/features/leader_key#api-leader-sequence-active","1694":"/features/leader_key#api-leader-sequence-add","1695":"/features/leader_key#api-leader-sequence-add-arguments","1696":"/features/leader_key#api-leader-sequence-add-return","1697":"/features/leader_key#api-leader-sequence-timed-out","1698":"/features/leader_key#api-leader-reset-timer","1699":"/features/leader_key#api-leader-sequence-one-key","1700":"/features/leader_key#api-leader-sequence-one-key-arguments","1701":"/features/leader_key#api-leader-sequence-one-key-return","1702":"/features/leader_key#api-leader-sequence-two-keys","1703":"/features/leader_key#api-leader-sequence-two-keys-arguments","1704":"/features/leader_key#api-leader-sequence-two-keys-return","1705":"/features/leader_key#api-leader-sequence-three-keys","1706":"/features/leader_key#api-leader-sequence-three-keys-arguments","1707":"/features/leader_key#api-leader-sequence-three-keys-return","1708":"/features/leader_key#api-leader-sequence-four-keys","1709":"/features/leader_key#api-leader-sequence-four-keys-arguments","1710":"/features/leader_key#api-leader-sequence-four-keys-return","1711":"/features/leader_key#api-leader-sequence-five-keys","1712":"/features/leader_key#api-leader-sequence-five-keys-arguments","1713":"/features/leader_key#api-leader-sequence-five-keys-return","1714":"/features/led_indicators#led-indicators","1715":"/features/led_indicators#configuration-options","1716":"/features/led_indicators#led-update-function","1717":"/features/led_indicators#example-of-keyboard-led-update-implementation","1718":"/features/led_indicators#example-of-user-led-update-implementation","1719":"/features/led_indicators#host-keyboard-led-state","1720":"/features/led_indicators#led-update-ports","1721":"/features/led_indicators#setting-physical-led-state","1722":"/features/led_indicators#ergodox-boards","1723":"/features/led_matrix#led-matrix-lighting","1724":"/features/led_matrix#driver-configuration","1725":"/features/led_matrix#common-configuration","1726":"/features/led_matrix#flags","1727":"/features/led_matrix#keycodes","1728":"/features/led_matrix#led-matrix-effects","1729":"/features/led_matrix#custom-led-matrix-effects","1730":"/features/led_matrix#additional-configh-options","1731":"/features/led_matrix#eeprom-storage","1732":"/features/led_matrix#callbacks","1733":"/features/led_matrix#indicators","1734":"/features/led_matrix#api","1735":"/features/led_matrix#api-led-matrix-toggle","1736":"/features/led_matrix#api-led-matrix-toggle-noeeprom","1737":"/features/led_matrix#api-led-matrix-enable","1738":"/features/led_matrix#api-led-matrix-enable-noeeprom","1739":"/features/led_matrix#api-led-matrix-disable","1740":"/features/led_matrix#api-led-matrix-disable-noeeprom","1741":"/features/led_matrix#api-led-matrix-is-enabled","1742":"/features/led_matrix#api-led-matrix-is-enabled-return","1743":"/features/led_matrix#led-matrix-set-value","1744":"/features/led_matrix#api-led-matrix-set-value-arguments","1745":"/features/led_matrix#api-led-matrix-set-value-all","1746":"/features/led_matrix#api-led-matrix-set-value-all-arguments","1747":"/features/led_matrix#api-led-matrix-mode","1748":"/features/led_matrix#api-led-matrix-mode-arguments","1749":"/features/led_matrix#api-led-matrix-mode-noeeprom","1750":"/features/led_matrix#api-led-matrix-mode-noeeprom-arguments","1751":"/features/led_matrix#api-led-matrix-step","1752":"/features/led_matrix#api-led-matrix-step-noeeprom","1753":"/features/led_matrix#api-led-matrix-step-reverse","1754":"/features/led_matrix#api-led-matrix-step-reverse-noeeprom","1755":"/features/led_matrix#api-led-matrix-get-mode","1756":"/features/led_matrix#api-led-matrix-get-mode-return","1757":"/features/led_matrix#api-led-matrix-increase-val","1758":"/features/led_matrix#api-led-matrix-increase-val-noeeprom","1759":"/features/led_matrix#api-led-matrix-decrease-val","1760":"/features/led_matrix#api-led-matrix-decrease-val-noeeprom","1761":"/features/led_matrix#api-led-matrix-get-val","1762":"/features/led_matrix#api-led-matrix-get-val-return","1763":"/features/led_matrix#api-led-matrix-increase-speed","1764":"/features/led_matrix#api-led-matrix-increase-speed-noeeprom","1765":"/features/led_matrix#api-led-matrix-decrease-speed","1766":"/features/led_matrix#api-led-matrix-decrease-speed-noeeprom","1767":"/features/led_matrix#api-led-matrix-set-speed","1768":"/features/led_matrix#api-led-matrix-set-speed-arguments","1769":"/features/led_matrix#api-led-matrix-set-speed-noeeprom","1770":"/features/led_matrix#api-led-matrix-set-speed-noeeprom-arguments","1771":"/features/led_matrix#api-led-matrix-get-speed","1772":"/features/led_matrix#api-led-matrix-get-speed-return","1773":"/features/led_matrix#api-led-matrix-reload-from-eeprom","1774":"/features/led_matrix#api-led-matrix-get-suspend-state","1775":"/features/led_matrix#api-led-matrix-get-suspend-state-return","1776":"/features/led_matrix#api-led-matrix-indicators-kb","1777":"/features/led_matrix#api-led-matrix-indicators-kb-return","1778":"/features/led_matrix#api-led-matrix-indicators-user","1779":"/features/led_matrix#api-led-matrix-indicators-user-return","1780":"/features/led_matrix#api-led-matrix-indicators-advanced-kb","1781":"/features/led_matrix#api-led-matrix-indicators-advanced-kb-arguments","1782":"/features/led_matrix#api-led-matrix-indicators-advanced-kb-return","1783":"/features/led_matrix#api-led-matrix-indicators-advanced-user","1784":"/features/led_matrix#api-led-matrix-indicators-advanced-user-arguments","1785":"/features/led_matrix#api-led-matrix-indicators-advanced-user-return","1786":"/features/midi#midi","1787":"/features/midi#usage","1788":"/features/midi#caveats","1789":"/features/midi#basic-midi","1790":"/features/midi#advanced-midi","1791":"/features/midi#sending-control-change-cc-messages","1792":"/features/midi#example-code-for-using-generic-on-off-switches-as-per-midi-specification","1793":"/features/midi#keycodes","1794":"/features/midi#configuration","1795":"/features/midi#references","1796":"/features/midi#midi-specification","1797":"/features/midi#qmk-c-files","1798":"/features/mouse_keys#mouse-keys","1799":"/features/mouse_keys#adding-mouse-keys-to-your-keyboard","1800":"/features/mouse_keys#enabling-mouse-keys","1801":"/features/mouse_keys#mapping-mouse-actions","1802":"/features/mouse_keys#configuring-mouse-keys","1803":"/features/mouse_keys#accelerated-mode","1804":"/features/mouse_keys#kinetic-mode","1805":"/features/mouse_keys#constant-mode","1806":"/features/mouse_keys#combined-mode","1807":"/features/mouse_keys#inertia-mode","1808":"/features/mouse_keys#overlapping-mouse-key-control","1809":"/features/mouse_keys#use-with-ps-2-mouse-and-pointing-device","1810":"/features/oled_driver#oled-driver","1811":"/features/oled_driver#supported-hardware","1812":"/features/oled_driver#usage","1813":"/features/oled_driver#oled-type","1814":"/features/oled_driver#logo-example","1815":"/features/oled_driver#buffer-read-example","1816":"/features/oled_driver#other-examples","1817":"/features/oled_driver#basic-configuration","1818":"/features/oled_driver#i2c-configuration","1819":"/features/oled_driver#spi-configuration","1820":"/features/oled_driver#_128x64-custom-sized-oled-displays","1821":"/features/oled_driver#_90-degree-rotation-technical-mumbo-jumbo","1822":"/features/oled_driver#oled-api","1823":"/features/oled_driver#ssd1306-h-driver-conversion-guide","1824":"/features/os_detection#os-detection","1825":"/features/os_detection#usage","1826":"/features/os_detection#callbacks","1827":"/features/os_detection#os-detection-stability","1828":"/features/os_detection#kvm-and-usb-switches","1829":"/features/os_detection#configuration-options","1830":"/features/os_detection#debug","1831":"/features/os_detection#credits","1832":"/features/pointing_device#pointing-device","1833":"/features/pointing_device#sensor-drivers","1834":"/features/pointing_device#adns-5050-sensor","1835":"/features/pointing_device#adns-9800-sensor","1836":"/features/pointing_device#analog-joystick","1837":"/features/pointing_device#azoteq-iqs5xx-trackpad","1838":"/features/pointing_device#device-settings","1839":"/features/pointing_device#gesture-settings","1840":"/features/pointing_device#rotation-settings","1841":"/features/pointing_device#cirque-trackpad","1842":"/features/pointing_device#common-settings","1843":"/features/pointing_device#absolute-mode-settings","1844":"/features/pointing_device#absolute-mode-gestures","1845":"/features/pointing_device#relative-mode-gestures","1846":"/features/pointing_device#paw-3204-sensor","1847":"/features/pointing_device#pimoroni-trackball","1848":"/features/pointing_device#pmw3320-sensor","1849":"/features/pointing_device#pmw-3360-and-pmw-3389-sensor","1850":"/features/pointing_device#custom-driver","1851":"/features/pointing_device#common-configuration","1852":"/features/pointing_device#split-keyboard-configuration","1853":"/features/pointing_device#callbacks-and-functions","1854":"/features/pointing_device#split-keyboard-callbacks-and-functions","1855":"/features/pointing_device#manipulating-mouse-reports","1856":"/features/pointing_device#examples","1857":"/features/pointing_device#custom-mouse-keycode","1858":"/features/pointing_device#drag-scroll-or-mouse-scroll","1859":"/features/pointing_device#advanced-drag-scroll","1860":"/features/pointing_device#split-examples","1861":"/features/pointing_device#single-pointing-device","1862":"/features/pointing_device#combined-pointing-devices","1863":"/features/pointing_device#troubleshooting","1864":"/features/pointing_device#pointing-device-auto-mouse","1865":"/features/pointing_device#behaviour-of-layer-keys-that-activate-the-target-layer","1866":"/features/pointing_device#how-to-enable","1867":"/features/pointing_device#how-to-customize","1868":"/features/pointing_device#config-h-options","1869":"/features/pointing_device#adding-mouse-keys","1870":"/features/pointing_device#callbacks-for-setting-up-additional-key-codes-as-mouse-keys","1871":"/features/pointing_device#to-use-the-callback-function-to-add-mouse-keys","1872":"/features/pointing_device#advanced-control","1873":"/features/pointing_device#functions-to-control-auto-mouse-enable-and-target-layer","1874":"/features/pointing_device#functions-for-handling-custom-key-events","1875":"/features/pointing_device#advanced-control-examples","1876":"/features/pointing_device#disable-auto-mouse-on-certain-layers","1877":"/features/pointing_device#set-different-target-layer-when-a-particular-layer-is-active","1878":"/features/pointing_device#use-custom-keys-to-control-auto-mouse","1879":"/features/pointing_device#customize-target-layer-activation","1880":"/features/pointing_device#auto-mouse-for-custom-pointing-device-task","1881":"/features/programmable_button#programmable-button","1882":"/features/programmable_button#usage","1883":"/features/programmable_button#keycodes","1884":"/features/programmable_button#api","1885":"/features/programmable_button#api-programmable-button-clear","1886":"/features/programmable_button#api-programmable-button-add","1887":"/features/programmable_button#api-programmable-button-add-arguments","1888":"/features/programmable_button#api-programmable-button-remove","1889":"/features/programmable_button#api-programmable-button-remove-arguments","1890":"/features/programmable_button#api-programmable-button-register","1891":"/features/programmable_button#api-programmable-button-register-arguments","1892":"/features/programmable_button#api-programmable-button-unregister","1893":"/features/programmable_button#api-programmable-button-unregister-arguments","1894":"/features/programmable_button#api-programmable-button-is-on","1895":"/features/programmable_button#api-programmable-button-is-on-arguments","1896":"/features/programmable_button#api-programmable-button-is-on-return","1897":"/features/programmable_button#api-programmable-button-flush","1898":"/features/programmable_button#api-programmable-button-get-report","1899":"/features/programmable_button#api-programmable-button-get-report-return","1900":"/features/programmable_button#api-programmable-button-set-report","1901":"/features/programmable_button#api-programmable-button-set-report-arguments","1902":"/features/ps2_mouse#ps2-mouse-support","1903":"/features/ps2_mouse#the-circuitry-between-trackpoint-and-controller","1904":"/features/ps2_mouse#busywait-version","1905":"/features/ps2_mouse#interrupt-version-avr","1906":"/features/ps2_mouse#interrupt-version-chibios","1907":"/features/ps2_mouse#usart-version","1908":"/features/ps2_mouse#rp2040-pio-version","1909":"/features/ps2_mouse#additional-settings","1910":"/features/ps2_mouse#ps2-mouse-features","1911":"/features/ps2_mouse#fine-control","1912":"/features/ps2_mouse#scroll-button","1913":"/features/ps2_mouse#invert-buttons","1914":"/features/ps2_mouse#invert-mouse-and-scroll-axes","1915":"/features/ps2_mouse#rotate-mouse-axes","1916":"/features/ps2_mouse#debug-settings","1917":"/features/ps2_mouse#movement-hook","1918":"/features/rawhid#raw-hid","1919":"/features/rawhid#usage","1920":"/features/rawhid#basic-configuration","1921":"/features/rawhid#sending-data-to-the-keyboard","1922":"/features/rawhid#receiving-data-from-the-keyboard","1923":"/features/rawhid#simple-example","1924":"/features/rawhid#api","1925":"/features/rawhid#api-raw-hid-receive","1926":"/features/rawhid#api-raw-hid-receive-arguments","1927":"/features/rawhid#api-raw-hid-send","1928":"/features/rawhid#api-raw-hid-send-arguments","1929":"/features/repeat_key#repeat-key","1930":"/features/repeat_key#how-do-i-enable-repeat-key","1931":"/features/repeat_key#keycodes","1932":"/features/repeat_key#alternate-repeating","1933":"/features/repeat_key#defining-alternate-keys","1934":"/features/repeat_key#eliminating-sfbs","1935":"/features/repeat_key#typing-shortcuts","1936":"/features/repeat_key#ignoring-certain-keys-and-mods","1937":"/features/repeat_key#ignoring-a-key","1938":"/features/repeat_key#filtering-remembered-mods","1939":"/features/repeat_key#further-conditions","1940":"/features/repeat_key#handle-how-a-key-is-repeated","1941":"/features/repeat_key#handle-how-a-key-is-alternate-repeated","1942":"/features/repeat_key#functions","1943":"/features/repeat_key#additional-alternate-keys","1944":"/features/rgb_matrix#rgb-matrix-lighting","1945":"/features/rgb_matrix#driver-configuration","1946":"/features/rgb_matrix#common-configuration","1947":"/features/rgb_matrix#flags","1948":"/features/rgb_matrix#keycodes","1949":"/features/rgb_matrix#rgb-matrix-effects","1950":"/features/rgb_matrix#rgb-matrix-effect-typing-heatmap","1951":"/features/rgb_matrix#rgb-matrix-effect-solid-reactive","1952":"/features/rgb_matrix#custom-rgb-matrix-effects","1953":"/features/rgb_matrix#colors","1954":"/features/rgb_matrix#additional-configh-options","1955":"/features/rgb_matrix#eeprom-storage","1956":"/features/rgb_matrix#callbacks","1957":"/features/rgb_matrix#indicators","1958":"/features/rgb_matrix#indicator-examples","1959":"/features/rgb_matrix#indicator-examples-2","1960":"/features/rgb_matrix#indicators-without-rgb-matrix-effect","1961":"/features/rgb_matrix#api","1962":"/features/rgb_matrix#api-rgb-matrix-toggle","1963":"/features/rgb_matrix#api-rgb-matrix-toggle-noeeprom","1964":"/features/rgb_matrix#api-rgb-matrix-enable","1965":"/features/rgb_matrix#api-rgb-matrix-enable-noeeprom","1966":"/features/rgb_matrix#api-rgb-matrix-disable","1967":"/features/rgb_matrix#api-rgb-matrix-disable-noeeprom","1968":"/features/rgb_matrix#api-rgb-matrix-is-enabled","1969":"/features/rgb_matrix#api-rgb-matrix-is-enabled-return","1970":"/features/rgb_matrix#api-rgb-matrix-set-color","1971":"/features/rgb_matrix#api-rgb-matrix-set-color-arguments","1972":"/features/rgb_matrix#api-rgb-matrix-set-color-all","1973":"/features/rgb_matrix#api-rgb-matrix-set-color-all-arguments","1974":"/features/rgb_matrix#api-rgb-matrix-mode","1975":"/features/rgb_matrix#api-rgb-matrix-mode-arguments","1976":"/features/rgb_matrix#api-rgb-matrix-mode-noeeprom","1977":"/features/rgb_matrix#api-rgb-matrix-mode-noeeprom-arguments","1978":"/features/rgb_matrix#api-rgb-matrix-step","1979":"/features/rgb_matrix#api-rgb-matrix-step-noeeprom","1980":"/features/rgb_matrix#api-rgb-matrix-step-reverse","1981":"/features/rgb_matrix#api-rgb-matrix-step-reverse-noeeprom","1982":"/features/rgb_matrix#api-rgb-matrix-get-mode","1983":"/features/rgb_matrix#api-rgb-matrix-get-mode-return","1984":"/features/rgb_matrix#api-rgb-matrix-increase-hue","1985":"/features/rgb_matrix#api-rgb-matrix-increase-hue-noeeprom","1986":"/features/rgb_matrix#api-rgb-matrix-decrease-hue","1987":"/features/rgb_matrix#api-rgb-matrix-decrease-hue-noeeprom","1988":"/features/rgb_matrix#api-rgb-matrix-get-hue","1989":"/features/rgb_matrix#api-rgb-matrix-get-hue-return","1990":"/features/rgb_matrix#api-rgb-matrix-increase-sat","1991":"/features/rgb_matrix#api-rgb-matrix-increase-sat-noeeprom","1992":"/features/rgb_matrix#api-rgb-matrix-decrease-sat","1993":"/features/rgb_matrix#api-rgb-matrix-decrease-sat-noeeprom","1994":"/features/rgb_matrix#api-rgb-matrix-get-sat","1995":"/features/rgb_matrix#api-rgb-matrix-get-sat-return","1996":"/features/rgb_matrix#api-rgb-matrix-increase-val","1997":"/features/rgb_matrix#api-rgb-matrix-increase-val-noeeprom","1998":"/features/rgb_matrix#api-rgb-matrix-decrease-val","1999":"/features/rgb_matrix#api-rgb-matrix-decrease-val-noeeprom","2000":"/features/rgb_matrix#api-rgb-matrix-get-val","2001":"/features/rgb_matrix#api-rgb-matrix-get-val-return","2002":"/features/rgb_matrix#api-rgb-matrix-increase-speed","2003":"/features/rgb_matrix#api-rgb-matrix-increase-speed-noeeprom","2004":"/features/rgb_matrix#api-rgb-matrix-decrease-speed","2005":"/features/rgb_matrix#api-rgb-matrix-decrease-speed-noeeprom","2006":"/features/rgb_matrix#api-rgb-matrix-set-speed","2007":"/features/rgb_matrix#api-rgb-matrix-set-speed-arguments","2008":"/features/rgb_matrix#api-rgb-matrix-set-speed-noeeprom","2009":"/features/rgb_matrix#api-rgb-matrix-set-speed-noeeprom-arguments","2010":"/features/rgb_matrix#api-rgb-matrix-get-speed","2011":"/features/rgb_matrix#api-rgb-matrix-get-speed-return","2012":"/features/rgb_matrix#api-rgb-matrix-sethsv","2013":"/features/rgb_matrix#api-rgb-matrix-sethsv-arguments","2014":"/features/rgb_matrix#api-rgb-matrix-sethsv-noeeprom","2015":"/features/rgb_matrix#api-rgb-matrix-sethsv-noeeprom-arguments","2016":"/features/rgb_matrix#api-rgb-matrix-get-hsv","2017":"/features/rgb_matrix#api-rgb-matrix-get-hsv-return","2018":"/features/rgb_matrix#api-rgb-matrix-reload-from-eeprom","2019":"/features/rgb_matrix#api-rgb-matrix-get-suspend-state","2020":"/features/rgb_matrix#api-rgb-matrix-get-suspend-state-return","2021":"/features/rgb_matrix#api-rgb-matrix-indicators-kb","2022":"/features/rgb_matrix#api-rgb-matrix-indicators-kb-return","2023":"/features/rgb_matrix#api-rgb-matrix-indicators-user","2024":"/features/rgb_matrix#api-rgb-matrix-indicators-user-return","2025":"/features/rgb_matrix#api-rgb-matrix-indicators-advanced-kb","2026":"/features/rgb_matrix#api-rgb-matrix-indicators-advanced-kb-arguments","2027":"/features/rgb_matrix#api-rgb-matrix-indicators-advanced-kb-return","2028":"/features/rgb_matrix#api-rgb-matrix-indicators-advanced-user","2029":"/features/rgb_matrix#api-rgb-matrix-indicators-advanced-user-arguments","2030":"/features/rgb_matrix#api-rgb-matrix-indicators-advanced-user-return","2031":"/features/rgblight#rgb-lighting","2032":"/features/rgblight#usage","2033":"/features/rgblight#color-selection","2034":"/features/rgblight#keycodes","2035":"/features/rgblight#configuration","2036":"/features/rgblight#effects-and-animations","2037":"/features/rgblight#effect-and-animation-toggles","2038":"/features/rgblight#effect-and-animation-settings","2039":"/features/rgblight#example-usage-to-reduce-memory-footprint","2040":"/features/rgblight#animation-speed","2041":"/features/rgblight#lighting-layers","2042":"/features/rgblight#defining-lighting-layers","2043":"/features/rgblight#enabling-lighting-layers","2044":"/features/rgblight#lighting-layer-blink","2045":"/features/rgblight#overriding-rgb-lighting-on-off-status","2046":"/features/rgblight#retain-brightness","2047":"/features/rgblight#functions","2048":"/features/rgblight#low-level-functions","2049":"/features/rgblight#effects-and-animations-functions","2050":"/features/rgblight#effect-range-setting","2051":"/features/rgblight#direct-operation","2052":"/features/rgblight#effect-mode-change","2053":"/features/rgblight#effects-mode-disable-enable","2054":"/features/rgblight#hue-sat-val-change","2055":"/features/rgblight#speed-functions","2056":"/features/rgblight#layer-functions","2057":"/features/rgblight#query","2058":"/features/rgblight#colors","2059":"/features/rgblight#changing-the-order-of-the-leds","2060":"/features/rgblight#clipping-range","2061":"/features/rgblight#hardware-modification","2062":"/features/rgblight#velocikey","2063":"/features/rgblight#usage-1","2064":"/features/rgblight#configuration-1","2065":"/features/secure#secure","2066":"/features/secure#unlock-sequence","2067":"/features/secure#automatic-locking","2068":"/features/secure#usage","2069":"/features/secure#keycodes","2070":"/features/secure#configuration","2071":"/features/secure#functions","2072":"/features/send_string#send-string","2073":"/features/send_string#usage","2074":"/features/send_string#basic-configuration","2075":"/features/send_string#keycodes","2076":"/features/send_string#language-support","2077":"/features/send_string#examples","2078":"/features/send_string#example-hello-world","2079":"/features/send_string#example-keycode-injection","2080":"/features/send_string#api","2081":"/features/send_string#api-send-string","2082":"/features/send_string#api-send-string-arguments","2083":"/features/send_string#api-send-string-with-delay","2084":"/features/send_string#api-send-string-with-delay-arguments","2085":"/features/send_string#api-send-string-p","2086":"/features/send_string#api-send-string-p-arguments","2087":"/features/send_string#api-send-string-with-delay-p","2088":"/features/send_string#api-send-string-with-delay-p-arguments","2089":"/features/send_string#api-send-char","2090":"/features/send_string#api-send-char-arguments","2091":"/features/send_string#api-send-dword","2092":"/features/send_string#api-send-dword-arguments","2093":"/features/send_string#api-send-word","2094":"/features/send_string#api-send-word-arguments","2095":"/features/send_string#api-send-bytes","2096":"/features/send_string#api-send-byte-arguments","2097":"/features/send_string#api-send-nibble","2098":"/features/send_string#api-send-nibble-arguments","2099":"/features/send_string#api-tap-random-base64","2100":"/features/send_string#api-send-string-macro","2101":"/features/send_string#api-send-string-delay-macro","2102":"/features/sequencer#sequencer","2103":"/features/sequencer#enable-the-step-sequencer","2104":"/features/sequencer#tracks","2105":"/features/sequencer#resolutions","2106":"/features/sequencer#keycodes","2107":"/features/sequencer#functions","2108":"/features/space_cadet#space-cadet-the-future-built-in","2109":"/features/space_cadet#usage","2110":"/features/space_cadet#keycodes","2111":"/features/space_cadet#caveats","2112":"/features/space_cadet#configuration","2113":"/features/space_cadet#obsolete-configuration","2114":"/features/split_keyboard#split-keyboard","2115":"/features/split_keyboard#compatibility-overview","2116":"/features/split_keyboard#hardware-configuration","2117":"/features/split_keyboard#required-hardware","2118":"/features/split_keyboard#considerations","2119":"/features/split_keyboard#serial-wiring","2120":"/features/split_keyboard#i2c-wiring","2121":"/features/split_keyboard#firmware-configuration","2122":"/features/split_keyboard#layout-macro","2123":"/features/split_keyboard#setting-handedness","2124":"/features/split_keyboard#handedness-by-pin","2125":"/features/split_keyboard#handedness-by-matrix-pin","2126":"/features/split_keyboard#handedness-by-eeprom","2127":"/features/split_keyboard#handedness-by-define","2128":"/features/split_keyboard#communication-options","2129":"/features/split_keyboard#data-sync-options","2130":"/features/split_keyboard#custom-data-sync","2131":"/features/split_keyboard#hardware-configuration-options","2132":"/features/split_keyboard#hardware-considerations-and-mods","2133":"/features/split_keyboard#teensy-boards","2134":"/features/split_keyboard#additional-resources","2135":"/features/st7565#st7565-lcd-driver","2136":"/features/st7565#supported-hardware","2137":"/features/st7565#usage","2138":"/features/st7565#logo-example","2139":"/features/st7565#buffer-read-example","2140":"/features/st7565#other-examples","2141":"/features/st7565#basic-configuration","2142":"/features/st7565#custom-sized-displays","2143":"/features/st7565#api","2144":"/features/stenography#stenography-in-qmk","2145":"/features/stenography#plover-with-qwerty-keyboard","2146":"/features/stenography#plover-with-steno-protocol","2147":"/features/stenography#tx-bolt","2148":"/features/stenography#geminipr","2149":"/features/stenography#switching-protocols-on-the-fly","2150":"/features/stenography#configuring-qmk-for-steno","2151":"/features/stenography#learning-stenography","2152":"/features/stenography#interfacing-with-the-code","2153":"/features/stenography#keycode-reference","2154":"/features/swap_hands#swap-hands-action","2155":"/features/swap_hands#configuration","2156":"/features/swap_hands#swap-keycodes","2157":"/features/swap_hands#encoder-mapping","2158":"/features/swap_hands#functions","2159":"/features/tap_dance#tap-dance-a-single-key-can-do-3-5-or-100-different-things","2160":"/features/tap_dance#introduction","2161":"/features/tap_dance#how-to-use","2162":"/features/tap_dance#implementation","2163":"/features/tap_dance#examples","2164":"/features/tap_dance#simple-example","2165":"/features/tap_dance#complex-examples","2166":"/features/tap_dance#example-1","2167":"/features/tap_dance#example-2","2168":"/features/tap_dance#example-3","2169":"/features/tap_dance#example-4","2170":"/features/tap_dance#example-5","2171":"/features/tap_dance#example-6","2172":"/features/tri_layer#tri-layers","2173":"/features/tri_layer#keycodes","2174":"/features/tri_layer#configuration","2175":"/features/tri_layer#functions","2176":"/features/unicode#unicode","2177":"/features/unicode#caveats","2178":"/features/unicode#usage","2179":"/features/unicode#basic-configuration","2180":"/features/unicode#audio-feedback","2181":"/features/unicode#input-subsystems","2182":"/features/unicode#unicodemap-pairs","2183":"/features/unicode#input-modes","2184":"/features/unicode#keycodes","2185":"/features/unicode#api","2186":"/features/unicode#api-get-unicode-input-mode","2187":"/features/unicode#api-get-unicode-input-mode-return-value","2188":"/features/unicode#api-set-unicode-input-mode","2189":"/features/unicode#api-set-unicode-input-mode-arguments","2190":"/features/unicode#api-unicode-input-mode-step","2191":"/features/unicode#api-unicode-input-mode-step-reverse","2192":"/features/unicode#api-unicode-input-mode-set-user","2193":"/features/unicode#api-unicode-input-mode-set-user-arguments","2194":"/features/unicode#api-unicode-input-mode-set-kb","2195":"/features/unicode#api-unicode-input-mode-set-kb-arguments","2196":"/features/unicode#api-unicode-input-start","2197":"/features/unicode#api-unicode-input-finish","2198":"/features/unicode#api-unicode-input-cancel","2199":"/features/unicode#api-register-unicode","2200":"/features/unicode#api-register-unicode-arguments","2201":"/features/unicode#api-send-unicode-string","2202":"/features/unicode#api-send-unicode-string-arguments","2203":"/features/unicode#api-unicodemap-index","2204":"/features/unicode#api-unicodemap-index-arguments","2205":"/features/unicode#api-unicodemap-index-return-value","2206":"/features/unicode#api-unicodemap-get-code-point","2207":"/features/unicode#unicodemap-get-code-point-arguments","2208":"/features/unicode#unicodemap-get-code-point-return-value","2209":"/features/unicode#api-register-unicodemap","2210":"/features/unicode#api-register-unicodemap-arguments","2211":"/features/unicode#api-ucis-start","2212":"/features/unicode#api-ucis-active","2213":"/features/unicode#api-ucis-active-return-value","2214":"/features/unicode#api-ucis-count","2215":"/features/unicode#api-ucis-count-return-value","2216":"/features/unicode#api-ucis-add","2217":"/features/unicode#api-ucis-add-arguments","2218":"/features/unicode#api-ucis-add-return-value","2219":"/features/unicode#api-ucis-remove-last","2220":"/features/unicode#api-ucis-remove-last-return-value","2221":"/features/unicode#api-ucis-finish","2222":"/features/unicode#api-ucis-cancel","2223":"/features/unicode#api-register-ucis","2224":"/features/unicode#api-register-ucis-arguments","2225":"/features/wpm#word-per-minute-wpm-calculation","2226":"/features/wpm#configuration","2227":"/features/wpm#public-functions","2228":"/features/wpm#callbacks","2229":"/flashing#flashing-instructions-and-bootloader-information","2230":"/flashing#atmel-dfu","2231":"/flashing#qmk-dfu","2232":"/flashing#make-targets","2233":"/flashing#caterina","2234":"/flashing#make-targets-1","2235":"/flashing#halfkay","2236":"/flashing#usbasploader","2237":"/flashing#bootloadhid","2238":"/flashing#qmk-hid","2239":"/flashing#make-targets-2","2240":"/flashing#stm32-apm32-dfu","2241":"/flashing#make-targets-3","2242":"/flashing#stm32duino","2243":"/flashing#kiibohd-dfu","2244":"/flashing#wb32-dfu","2245":"/flashing#tinyuf2","2246":"/flashing#make-targets-4","2247":"/flashing#uf2boot","2248":"/flashing#make-targets-5","2249":"/flashing#raspberry-pi-rp2040-uf2","2250":"/getting_started_docker#docker-quick-start","2251":"/getting_started_docker#requirements","2252":"/getting_started_docker#usage","2253":"/getting_started_docker#faq","2254":"/getting_started_docker#why-can-t-i-flash-on-windows-macos","2255":"/getting_started_github#how-to-use-github-with-qmk","2256":"/getting_started_introduction#introduction","2257":"/getting_started_introduction#basic-qmk-structure","2258":"/getting_started_introduction#userspace-structure","2259":"/getting_started_introduction#keyboard-project-structure","2260":"/getting_started_introduction#keymap-structure","2261":"/getting_started_introduction#the-config-h-file","2262":"/getting_started_make_guide#more-detailed-make-instructions","2263":"/getting_started_make_guide#rules-mk-options","2264":"/getting_started_make_guide#customizing-makefile-options-on-a-per-keymap-basis","2265":"/hand_wire#hand-wiring-guide","2266":"/hand_wire#parts-list","2267":"/hand_wire#starting-the-build","2268":"/hand_wire#planning-the-matrix","2269":"/hand_wire#common-microcontroller-boards","2270":"/hand_wire#wiring-the-matrix","2271":"/hand_wire#a-note-on-split-keyboards","2272":"/hand_wire#soldering","2273":"/hand_wire#soldering-the-diodes","2274":"/hand_wire#soldering-the-columns","2275":"/hand_wire#wiring-up-the-controller","2276":"/hand_wire#specific-instructions-for-the-teensy-2-0","2277":"/hand_wire#getting-some-basic-firmware-set-up","2278":"/hand_wire#flashing-the-firmware","2279":"/hand_wire#testing-your-firmware","2280":"/hand_wire#finishing-up","2281":"/hand_wire#links-to-other-guides","2282":"/hand_wire#legacy-content","2283":"/hand_wire#preamble-how-a-keyboard-matrix-works-and-why-we-need-diodes","2284":"/hardware_drivers#qmk-hardware-drivers","2285":"/hardware_drivers#available-drivers","2286":"/hardware_drivers#promicro-avr-only","2287":"/hardware_drivers#ssd1306-oled-driver","2288":"/hardware_drivers#ws2812","2289":"/hardware_drivers#is31fl3731","2290":"/hardware_drivers#is31fl3733","2291":"/hardware_drivers#_24xx-series-external-i2c-eeprom","2292":"/hardware_keyboard_guidelines#qmk-keyboard-guidelines","2293":"/hardware_keyboard_guidelines#use-qmk-lint","2294":"/hardware_keyboard_guidelines#naming-your-keyboard-project","2295":"/hardware_keyboard_guidelines#sub-folders","2296":"/hardware_keyboard_guidelines#keyboard-folder-structure","2297":"/hardware_keyboard_guidelines#readme-md","2298":"/hardware_keyboard_guidelines#info-json","2299":"/hardware_keyboard_guidelines#config-h","2300":"/hardware_keyboard_guidelines#rules-mk","2301":"/hardware_keyboard_guidelines#keyboard-name-c","2302":"/hardware_keyboard_guidelines#keyboard-name-h","2303":"/hardware_keyboard_guidelines#image-hardware-files","2304":"/hardware_keyboard_guidelines#keyboard-defaults","2305":"/hardware_keyboard_guidelines#magic-keycodes-and-command","2306":"/hardware_keyboard_guidelines#custom-keyboard-programming","2307":"/hardware_keyboard_guidelines#non-production-handwired-projects","2308":"/hardware_keyboard_guidelines#warnings-as-errors","2309":"/hardware_keyboard_guidelines#copyright-blurb","2310":"/hardware_keyboard_guidelines#license","2311":"/how_a_matrix_works#how-a-keyboard-matrix-works","2312":"/#quantum-mechanical-keyboard-firmware","2313":"/#what-is-qmk-firmware","2314":"/#get-started","2315":"/#make-it-yours","2316":"/#need-help","2317":"/#give-back","2318":"/how_keyboards_work#how-keys-are-registered-and-interpreted-by-computers","2319":"/how_keyboards_work#schematic-view","2320":"/how_keyboards_work#_1-you-press-a-key","2321":"/how_keyboards_work#_2-what-the-firmware-sends","2322":"/how_keyboards_work#_3-what-the-event-input-kernel-does","2323":"/how_keyboards_work#_4-what-the-operating-system-does","2324":"/how_keyboards_work#back-to-the-firmware","2325":"/how_keyboards_work#list-of-characters-you-can-send","2326":"/how_keyboards_work#how-to-maybe-enter-unicode-characters","2327":"/isp_flashing_guide#isp-flashing-guide","2328":"/isp_flashing_guide#hardware","2329":"/isp_flashing_guide#pro-micro-as-isp","2330":"/isp_flashing_guide#wiring","2331":"/isp_flashing_guide#arduino-uno-micro-as-isp","2332":"/isp_flashing_guide#wiring-1","2333":"/isp_flashing_guide#teensy-2-0-as-isp","2334":"/isp_flashing_guide#wiring-2","2335":"/isp_flashing_guide#sparkfun-pocketavr-usbtinyisp","2336":"/isp_flashing_guide#wiring-3","2337":"/isp_flashing_guide#usbasp","2338":"/isp_flashing_guide#wiring-4","2339":"/isp_flashing_guide#bus-pirate","2340":"/isp_flashing_guide#wiring-5","2341":"/isp_flashing_guide#software","2342":"/isp_flashing_guide#bootloader-firmware","2343":"/isp_flashing_guide#atmel-dfu","2344":"/isp_flashing_guide#caterina","2345":"/isp_flashing_guide#bootloadhid-ps2avrgb","2346":"/isp_flashing_guide#usbasploader","2347":"/isp_flashing_guide#flashing-the-bootloader","2348":"/isp_flashing_guide#setting-the-fuses","2349":"/isp_flashing_guide#creating-a-production-firmware","2350":"/isp_flashing_guide#flashing-stm32duino-bootloader","2351":"/isp_flashing_guide#software-1","2352":"/isp_flashing_guide#wiring-6","2353":"/isp_flashing_guide#flashing","2354":"/keycodes#keycodes-overview","2355":"/keycodes#basic-keycodes","2356":"/keycodes#quantum-keycodes","2357":"/keycodes#audio-keys","2358":"/keycodes#auto-shift","2359":"/keycodes#autocorrect","2360":"/keycodes#backlighting","2361":"/keycodes#bluetooth","2362":"/keycodes#caps-word","2363":"/keycodes#dynamic-macros","2364":"/keycodes#grave-escape","2365":"/keycodes#joystick","2366":"/keycodes#key-lock","2367":"/keycodes#layer-switching","2368":"/keycodes#leader-key","2369":"/keycodes#led-matrix","2370":"/keycodes#magic-keycodes","2371":"/keycodes#midi","2372":"/keycodes#mouse-keys","2373":"/keycodes#modifiers","2374":"/keycodes#mod-tap-keys","2375":"/keycodes#tapping-term-keys","2376":"/keycodes#rgb-lighting","2377":"/keycodes#rgb-matrix-lighting","2378":"/keycodes#us-ansi-shifted-symbols","2379":"/keycodes#one-shot-keys","2380":"/keycodes#programmable-button","2381":"/keycodes#repeat-key","2382":"/keycodes#space-cadet","2383":"/keycodes#swap-hands","2384":"/keycodes#unicode-support","2385":"/keycodes_basic#basic-keycodes","2386":"/keycodes_basic#letters-and-numbers","2387":"/keycodes_basic#f-keys","2388":"/keycodes_basic#punctuation","2389":"/keycodes_basic#lock-keys","2390":"/keycodes_basic#modifiers","2391":"/keycodes_basic#international","2392":"/keycodes_basic#commands","2393":"/keycodes_basic#media-keys","2394":"/keycodes_basic#number-pad","2395":"/keycodes_basic#special-keys","2396":"/keycodes_magic#magic-keycodes","2397":"/keycodes_us_ansi_shifted#us-ansi-shifted-symbols","2398":"/keycodes_us_ansi_shifted#caveats","2399":"/keycodes_us_ansi_shifted#keycodes","2400":"/keymap#keymap-overview","2401":"/keymap#keymap-and-layers","2402":"/keymap#keymap-layer-status","2403":"/keymap#layer-precedence-and-transparency","2404":"/keymap#anatomy-of-a-keymap-c","2405":"/keymap#definitions","2406":"/keymap#layers-and-keymaps","2407":"/keymap#base-layer","2408":"/keymap#function-overlay-layer","2409":"/keymap#nitty-gritty-details","2410":"/mod_tap#mod-tap","2411":"/mod_tap#caveats","2412":"/mod_tap#intercepting-mod-taps","2413":"/mod_tap#changing-tap-function","2414":"/mod_tap#changing-hold-function","2415":"/mod_tap#changing-both-tap-and-hold","2416":"/mod_tap#other-resources","2417":"/newbs#the-qmk-tutorial","2418":"/newbs#overview","2419":"/newbs#additional-resources","2420":"/newbs_building_firmware#building-your-first-firmware","2421":"/newbs_building_firmware#configure-your-build-environment-defaults-optional","2422":"/newbs_building_firmware#create-a-new-keymap","2423":"/newbs_building_firmware#open-keymap-c-in-your-favorite-text-editor","2424":"/newbs_building_firmware#customize-the-layout-to-your-liking","2425":"/newbs_building_firmware#build-your-firmware","2426":"/newbs_building_firmware#flash-your-firmware","2427":"/newbs_building_firmware_configurator#qmk-configurator","2428":"/newbs_building_firmware_workflow#building-qmk-with-github-userspace","2429":"/newbs_building_firmware_workflow#prerequisites","2430":"/newbs_building_firmware_workflow#environment-setup","2431":"/newbs_building_firmware_workflow#_1-install-git","2432":"/newbs_building_firmware_workflow#_2-github-authentication","2433":"/newbs_building_firmware_workflow#_3-create-a-repository","2434":"/newbs_building_firmware_workflow#initial-code-commit","2435":"/newbs_building_firmware_workflow#create-template-files","2436":"/newbs_building_firmware_workflow#add-a-json-keymap","2437":"/newbs_building_firmware_workflow#add-a-github-action-workflow","2438":"/newbs_building_firmware_workflow#commit-files-to-github","2439":"/newbs_building_firmware_workflow#review-workflow-output","2440":"/newbs_building_firmware_workflow#customising-your-keymap","2441":"/newbs_external_userspace#external-qmk-userspace","2442":"/newbs_external_userspace#setting-up-qmk-locally","2443":"/newbs_external_userspace#external-userspace-repository-setup-forked-on-github","2444":"/newbs_external_userspace#external-userspace-setup-locally-stored-only","2445":"/newbs_external_userspace#adding-a-keymap","2446":"/newbs_external_userspace#adding-the-keymap-to-external-userspace-build-targets","2447":"/newbs_external_userspace#compiling-external-userspace-build-targets","2448":"/newbs_external_userspace#using-github-actions","2449":"/newbs_flashing#flashing-your-keyboard","2450":"/newbs_flashing#put-your-keyboard-into-dfu-bootloader-mode","2451":"/newbs_flashing#flashing-your-keyboard-with-qmk-toolbox","2452":"/newbs_flashing#load-the-file-into-qmk-toolbox","2453":"/newbs_flashing#flash-your-keyboard","2454":"/newbs_flashing#flash-your-keyboard-from-the-command-line","2455":"/newbs_flashing#test-it-out","2456":"/newbs_getting_started#setting-up-your-qmk-environment","2457":"/newbs_getting_started#_1-prerequisites","2458":"/newbs_getting_started#set-up-your-environment","2459":"/newbs_getting_started#prerequisites","2460":"/newbs_getting_started#prerequisites-1","2461":"/newbs_getting_started#installation","2462":"/newbs_getting_started#prerequisites-2","2463":"/newbs_getting_started#installation-1","2464":"/newbs_getting_started#prerequisites-3","2465":"/newbs_getting_started#installation-2","2466":"/newbs_getting_started#community-packages","2467":"/newbs_getting_started#installation-3","2468":"/newbs_getting_started#set-up-qmk","2469":"/newbs_getting_started#_4-test-your-build-environment","2470":"/newbs_getting_started#creating-your-keymap","2471":"/newbs_git_best_practices#best-git-practices-for-working-with-qmk","2472":"/newbs_git_best_practices#or-how-i-learned-to-stop-worrying-and-love-git","2473":"/newbs_git_resynchronize_a_branch#resynchronizing-an-out-of-sync-git-branch","2474":"/newbs_git_resynchronize_a_branch#backing-up-the-changes-on-your-own-master-branch-optional","2475":"/newbs_git_resynchronize_a_branch#resynchronizing-your-branch","2476":"/newbs_git_resolving_merge_conflicts#resolving-merge-conflicts","2477":"/newbs_git_resolving_merge_conflicts#rebasing-your-changes","2478":"/newbs_git_using_your_master_branch#your-fork-s-master-update-often-commit-never","2479":"/newbs_git_using_your_master_branch#updating-your-master-branch","2480":"/newbs_git_using_your_master_branch#making-changes","2481":"/newbs_git_using_your_master_branch#publishing-your-changes","2482":"/newbs_learn_more_resources#learning-resources","2483":"/newbs_learn_more_resources#qmk-resources","2484":"/newbs_learn_more_resources#command-line-resources","2485":"/newbs_learn_more_resources#text-editor-resources","2486":"/newbs_learn_more_resources#git-resources","2487":"/newbs_testing_debugging#testing-and-debugging","2488":"/newbs_testing_debugging#testing","2489":"/newbs_testing_debugging#debugging","2490":"/one_shot_keys#one-shot-keys","2491":"/one_shot_keys#callbacks","2492":"/other_eclipse#setting-up-eclipse-for-qmk-development","2493":"/other_eclipse#prerequisites","2494":"/other_eclipse#build-environment","2495":"/other_eclipse#java","2496":"/other_eclipse#install-eclipse-and-its-plugins","2497":"/other_eclipse#download-and-install-eclipse-cdt","2498":"/other_eclipse#first-launch","2499":"/other_eclipse#install-the-necessary-plugins","2500":"/other_eclipse#configure-eclipse-for-qmk","2501":"/other_eclipse#importing-the-project","2502":"/other_eclipse#build-your-keyboard","2503":"/other_vscode#setting-up-visual-studio-code-for-qmk-development","2504":"/other_vscode#set-up-vs-code","2505":"/other_vscode#windows","2506":"/other_vscode#prerequisites","2507":"/other_vscode#installing-vs-code","2508":"/other_vscode#msys2-setup","2509":"/other_vscode#every-other-operating-system","2510":"/other_vscode#extensions","2511":"/other_vscode#configure-vs-code-for-qmk","2512":"/other_vscode#configuring-vs-code","2513":"/other_vscode#debugging-arm-mcus-with-visual-studio-code","2514":"/platformdev_blackpill_f4x1#weact-blackpill-stm32f4x1","2515":"/platformdev_blackpill_f4x1#pin-usage-limitations","2516":"/platformdev_blackpill_f4x1#unusable-pins","2517":"/platformdev_blackpill_f4x1#pins-to-be-avoided","2518":"/platformdev_blackpill_f4x1#shared-usage","2519":"/platformdev_blackpill_f4x1#limited-usage","2520":"/platformdev_blackpill_f4x1#additional-information","2521":"/platformdev_blackpill_f4x1#bootloader-issues","2522":"/platformdev_blackpill_f4x1#tiny-uf2-support","2523":"/platformdev_chibios_earlyinit#chibios-early-init","2524":"/platformdev_chibios_earlyinit#early-hardware-init-pre","2525":"/platformdev_chibios_earlyinit#early-hardware-init-post","2526":"/platformdev_chibios_earlyinit#board-init","2527":"/platformdev_proton_c#proton-c","2528":"/platformdev_proton_c#features","2529":"/platformdev_proton_c#warnings","2530":"/platformdev_proton_c#manual-conversion","2531":"/platformdev_rp2040#raspberry-pi-rp2040","2532":"/platformdev_rp2040#gpio","2533":"/platformdev_rp2040#pin-nomenclature","2534":"/platformdev_rp2040#alternate-functions","2535":"/platformdev_rp2040#selecting-hardware-peripherals-and-drivers","2536":"/platformdev_rp2040#i2c-driver","2537":"/platformdev_rp2040#spi-driver","2538":"/platformdev_rp2040#uart-driver","2539":"/platformdev_rp2040#double-tap","2540":"/platformdev_rp2040#pre-defined-rp2040-boards","2541":"/platformdev_rp2040#generic-pro-micro-rp2040","2542":"/platformdev_rp2040#generic-rp2040-board","2543":"/platformdev_rp2040#split-keyboard-support","2544":"/platformdev_rp2040#rp2040-second-stage-bootloader-selection","2545":"/platformdev_rp2040#rp2040_ce","2546":"/platformdev_selecting_arm_mcu#choose-arm-mcu","2547":"/platformdev_selecting_arm_mcu#selecting-already-supported-mcu","2548":"/platformdev_selecting_arm_mcu#stm32-families","2549":"/platformdev_selecting_arm_mcu#non-stm32-families","2550":"/platformdev_selecting_arm_mcu#add-new-stm32-mcu","2551":"/platformdev_selecting_arm_mcu#add-new-stm32-family","2552":"/platformdev_selecting_arm_mcu#add-new-mcu-family","2553":"/porting_your_keyboard_to_qmk#adding-your-keyboard-to-qmk","2554":"/porting_your_keyboard_to_qmk#readme-md","2555":"/porting_your_keyboard_to_qmk#info-json","2556":"/porting_your_keyboard_to_qmk#hardware-configuration","2557":"/porting_your_keyboard_to_qmk#matrix-configuration","2558":"/porting_your_keyboard_to_qmk#direct-pin-matrix","2559":"/porting_your_keyboard_to_qmk#layout-macros","2560":"/porting_your_keyboard_to_qmk#additional-configuration","2561":"/porting_your_keyboard_to_qmk#configuration-options","2562":"/porting_your_keyboard_to_qmk#build-options","2563":"/pr_checklist#pr-checklists","2564":"/pr_checklist#requirements-for-all-prs","2565":"/pr_checklist#keymap-prs","2566":"/pr_checklist#keyboard-prs","2567":"/pr_checklist#core-pr","2568":"/pr_checklist#notes","2569":"/pr_checklist#review-process","2570":"/pr_checklist#example-gplv2-header","2571":"/quantum_keycodes#quantum-keycodes","2572":"/quantum_keycodes#qmk-keycodes","2573":"/quantum_painter#quantum-painter","2574":"/quantum_painter#quantum-painter-config","2575":"/quantum_painter#quantum-painter-cli","2576":"/quantum_painter#quantum-painter-drivers","2577":"/quantum_painter#quantum-painter-api","2578":"/quantum_painter_lvgl#lvgl","2579":"/quantum_painter_lvgl#lvgl-enabling","2580":"/quantum_painter_lvgl#lvgl-api","2581":"/quantum_painter_lvgl#lvgl-api-init","2582":"/quantum_painter_lvgl#lvgl-api-detach","2583":"/quantum_painter_lvgl#lvgl-configuring","2584":"/quantum_painter_lvgl#changing-the-lvgl-task-frequency","2585":"/quantum_painter_qff#qmk-font-format","2586":"/quantum_painter_qff#qff-block-header","2587":"/quantum_painter_qff#qff-font-descriptor","2588":"/quantum_painter_qff#qff-ascii-table","2589":"/quantum_painter_qff#qff-unicode-table","2590":"/quantum_painter_qff#qff-palette-descriptor","2591":"/quantum_painter_qff#qff-data-descriptor","2592":"/quantum_painter_qgf#qmk-graphics-format","2593":"/quantum_painter_qgf#qgf-block-header","2594":"/quantum_painter_qgf#qgf-graphics-descriptor","2595":"/quantum_painter_qgf#qgf-frame-offset-descriptor","2596":"/quantum_painter_qgf#qgf-frame-descriptor","2597":"/quantum_painter_qgf#qgf-frame-palette-descriptor","2598":"/quantum_painter_qgf#qgf-frame-delta-descriptor","2599":"/quantum_painter_qgf#qgf-frame-data-descriptor","2600":"/quantum_painter_rle#qmk-qp-rle-schema","2601":"/ref_functions#list-of-useful-core-functions-to-make-your-keyboard-better","2602":"/ref_functions#olkb-tri-layers","2603":"/ref_functions#update-tri-layer-x-y-z","2604":"/ref_functions#example","2605":"/ref_functions#update-tri-layer-state-state-x-y-z","2606":"/ref_functions#example-1","2607":"/ref_functions#setting-the-persistent-default-layer","2608":"/ref_functions#resetting-the-keyboard","2609":"/ref_functions#reset-to-bootloader","2610":"/ref_functions#wiping-the-eeprom-persistent-storage","2611":"/ref_functions#tap-random-key","2612":"/ref_functions#software-timers","2613":"/reference_configurator_support#supporting-your-keyboard-in-qmk-configurator","2614":"/reference_configurator_support#how-the-configurator-understands-keyboards","2615":"/reference_configurator_support#building-the-json-file","2616":"/reference_configurator_support#how-the-configurator-programs-keys","2617":"/reference_configurator_support#issues-and-hazards","2618":"/reference_configurator_support#workarounds","2619":"/reference_configurator_support#non-rectangular-keys","2620":"/reference_configurator_support#vertically-offset-keys","2621":"/reference_glossary#glossary-of-qmk-terms","2622":"/reference_glossary#arm","2623":"/reference_glossary#avr","2624":"/reference_glossary#azerty","2625":"/reference_glossary#backlight","2626":"/reference_glossary#bluetooth","2627":"/reference_glossary#bootloader","2628":"/reference_glossary#bootmagic","2629":"/reference_glossary#c","2630":"/reference_glossary#colemak","2631":"/reference_glossary#compile","2632":"/reference_glossary#dvorak","2633":"/reference_glossary#dynamic-macro","2634":"/reference_glossary#eclipse","2635":"/reference_glossary#firmware","2636":"/reference_glossary#git","2637":"/reference_glossary#github","2638":"/reference_glossary#isp","2639":"/reference_glossary#hid-listen","2640":"/reference_glossary#keycode","2641":"/reference_glossary#key-down","2642":"/reference_glossary#key-up","2643":"/reference_glossary#keymap","2644":"/reference_glossary#layer","2645":"/reference_glossary#leader-key","2646":"/reference_glossary#led","2647":"/reference_glossary#make","2648":"/reference_glossary#matrix","2649":"/reference_glossary#macro","2650":"/reference_glossary#mcu","2651":"/reference_glossary#modifier","2652":"/reference_glossary#mousekeys","2653":"/reference_glossary#n-key-rollover-nkro","2654":"/reference_glossary#oneshot-modifier","2655":"/reference_glossary#promicro","2656":"/reference_glossary#pull-request","2657":"/reference_glossary#qwerty","2658":"/reference_glossary#qwertz","2659":"/reference_glossary#rollover","2660":"/reference_glossary#scancode","2661":"/reference_glossary#space-cadet-shift","2662":"/reference_glossary#tap","2663":"/reference_glossary#tap-dance","2664":"/reference_glossary#teensy","2665":"/reference_glossary#underlight","2666":"/reference_glossary#unicode","2667":"/reference_glossary#unit-testing","2668":"/reference_glossary#usb","2669":"/reference_glossary#usb-host-or-simply-host","2670":"/reference_glossary#couldn-t-find-the-term-you-re-looking-for","2671":"/reference_info_json#info-json-reference","2672":"/reference_info_json#general-metadata","2673":"/reference_info_json#hardware-configuration","2674":"/reference_info_json#firmware-configuration","2675":"/reference_info_json#apa102","2676":"/reference_info_json#audio","2677":"/reference_info_json#backlight","2678":"/reference_info_json#bluetooth","2679":"/reference_info_json#bootmagic","2680":"/reference_info_json#caps-word","2681":"/reference_info_json#combo","2682":"/reference_info_json#dip-switch","2683":"/reference_info_json#eeprom","2684":"/reference_info_json#encoder","2685":"/reference_info_json#indicators","2686":"/reference_info_json#layouts","2687":"/reference_info_json#leader-key","2688":"/reference_info_json#led-matrix","2689":"/reference_info_json#matrix","2690":"/reference_info_json#mouse-keys","2691":"/reference_info_json#one-shot","2692":"/reference_info_json#ps2","2693":"/reference_info_json#qmk-lufa-bootloader","2694":"/reference_info_json#rgblight","2695":"/reference_info_json#rgb-matrix","2696":"/reference_info_json#secure","2697":"/reference_info_json#split-keyboard","2698":"/reference_info_json#stenography","2699":"/reference_info_json#usb","2700":"/reference_info_json#ws2812","2701":"/reference_keymap_extras#language-specific-keycodes","2702":"/reference_keymap_extras#sendstring-support","2703":"/reference_keymap_extras#header-files","2704":"/squeezing_avr#squeezing-the-most-out-of-avr","2705":"/squeezing_avr#rules-mk-settings","2706":"/squeezing_avr#config-h-settings","2707":"/squeezing_avr#audio-settings","2708":"/squeezing_avr#layers","2709":"/squeezing_avr#magic-functions","2710":"/squeezing_avr#oled-tweaks","2711":"/squeezing_avr#rgb-settings","2712":"/squeezing_avr#final-thoughts","2713":"/support#getting-help","2714":"/support#realtime-chat","2715":"/support#olkb-subreddit","2716":"/support#github-issues","2717":"/support_deprecation_policy#feature-support-policies","2718":"/support_deprecation_policy#system-constraints","2719":"/support_deprecation_policy#deprecation-removal-policy","2720":"/support_deprecation_policy#how-much-advance-notice-will-be-given","2721":"/support_deprecation_policy#how-will-deprecation-be-communicated","2722":"/syllabus#qmk-syllabus","2723":"/syllabus#beginning-topics","2724":"/syllabus#intermediate-topics","2725":"/syllabus#advanced-topics","2726":"/tap_hold#tap-hold-configuration-options","2727":"/tap_hold#tapping-term","2728":"/tap_hold#dynamic-tapping-term","2729":"/tap_hold#tap-or-hold-decision-modes","2730":"/tap_hold#comparison","2731":"/tap_hold#distinct-taps","2732":"/tap_hold#nested-tap","2733":"/tap_hold#rolling-keys","2734":"/tap_hold#default-mode","2735":"/tap_hold#permissive-hold","2736":"/tap_hold#hold-on-other-key-press","2737":"/tap_hold#quick-tap-term","2738":"/tap_hold#retro-tapping","2739":"/tap_hold#retro-shift","2740":"/tap_hold#why-do-we-include-the-key-record-for-the-per-key-functions","2741":"/tap_hold#why-are-there-no-kb-or-user-functions","2742":"/understanding_qmk#understanding-qmk-s-code","2743":"/understanding_qmk#startup","2744":"/understanding_qmk#the-main-loop","2745":"/understanding_qmk#matrix-scanning","2746":"/understanding_qmk#matrix-to-physical-layout-map","2747":"/understanding_qmk#keycode-assignment","2748":"/understanding_qmk#state-change-detection","2749":"/understanding_qmk#process-record","2750":"/unit_testing#unit-testing","2751":"/unit_testing#google-test-and-google-mock","2752":"/unit_testing#use-of-c","2753":"/unit_testing#adding-tests-for-new-or-existing-features","2754":"/unit_testing#running-the-tests","2755":"/unit_testing#debugging-the-tests","2756":"/unit_testing#full-integration-tests","2757":"/unit_testing#tracing-variables"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[6,1,56],"1":[6,6,41],"2":[4,6,36],"3":[11,6,49],"4":[6,6,33],"5":[9,6,41],"6":[9,6,47],"7":[10,6,44],"8":[8,6,34],"9":[7,1,47],"10":[5,7,90],"11":[9,7,46],"12":[3,7,19],"13":[2,7,30],"14":[9,7,69],"15":[12,7,49],"16":[7,7,44],"17":[7,7,25],"18":[4,7,30],"19":[7,1,51],"20":[2,7,1],"21":[7,9,50],"22":[6,9,46],"23":[6,9,47],"24":[6,9,43],"25":[13,9,69],"26":[6,9,12],"27":[13,9,20],"28":[6,9,77],"29":[2,7,1],"30":[6,9,44],"31":[6,15,121],"32":[6,9,45],"33":[8,9,42],"34":[6,17,100],"35":[12,9,22],"36":[4,21,57],"37":[2,7,60],"38":[3,7,58],"39":[7,1,47],"40":[4,7,1],"41":[2,11,1],"42":[6,13,1],"43":[7,13,48],"44":[3,11,1],"45":[5,14,91],"46":[4,11,35],"47":[2,7,1],"48":[1,9,22],"49":[3,9,349],"50":[4,9,260],"51":[4,7,31],"52":[7,1,47],"53":[4,7,1],"54":[2,11,1],"55":[6,13,47],"56":[8,13,21],"57":[8,13,39],"58":[6,13,25],"59":[3,11,1],"60":[4,14,15],"61":[2,7,1],"62":[1,9,26],"63":[3,9,83],"64":[4,9,45],"65":[4,7,121],"66":[7,1,1],"67":[4,7,48],"68":[2,7,1],"69":[5,8,51],"70":[4,8,171],"71":[3,7,1],"72":[4,10,35],"73":[1,10,113],"74":[3,10,149],"75":[4,10,117],"76":[4,10,90],"77":[5,10,68],"78":[7,1,1],"79":[2,7,1],"80":[7,8,13],"81":[5,8,9],"82":[5,8,31],"83":[4,8,33],"84":[4,8,14],"85":[4,7,1],"86":[3,10,86],"87":[5,10,50],"88":[3,15,39],"89":[5,10,24],"90":[6,10,75],"91":[2,7,1],"92":[1,8,112],"93":[3,8,234],"94":[4,8,145],"95":[4,8,35],"96":[7,1,1],"97":[2,7,1],"98":[4,9,54],"99":[3,9,74],"100":[3,9,29],"101":[4,7,1],"102":[3,10,85],"103":[4,10,63],"104":[4,14,41],"105":[7,10,65],"106":[3,7,1],"107":[3,10,84],"108":[5,10,19],"109":[4,10,21],"110":[1,14,42],"111":[2,14,107],"112":[3,14,117],"113":[4,10,105],"114":[2,7,1145],"115":[7,1,1],"116":[3,7,42],"117":[2,7,1],"118":[5,9,106],"119":[4,9,104],"120":[5,9,78],"121":[4,7,1],"122":[3,10,44],"123":[6,10,62],"124":[8,10,95],"125":[4,10,86],"126":[4,10,69],"127":[6,14,40],"128":[4,10,28],"129":[3,7,1],"130":[3,10,50],"131":[2,10,78],"132":[2,10,87],"133":[4,10,179],"134":[2,7,847],"135":[7,1,1],"136":[2,7,1],"137":[7,9,22],"138":[6,9,28],"139":[4,7,1],"140":[8,10,23],"141":[10,10,19],"142":[5,10,22],"143":[3,10,291],"144":[3,7,1],"145":[3,10,18],"146":[2,10,12],"147":[1,12,5],"148":[1,12,3],"149":[2,7,866],"150":[7,1,1],"151":[2,7,1],"152":[3,9,80],"153":[3,9,111],"154":[3,9,54],"155":[4,7,1],"156":[6,10,65],"157":[4,10,50],"158":[3,10,73],"159":[3,10,51],"160":[2,7,516],"161":[7,1,1],"162":[2,7,1],"163":[6,9,73],"164":[9,9,57],"165":[4,7,1],"166":[8,10,71],"167":[6,10,38],"168":[3,10,29],"169":[6,10,75],"170":[2,16,27],"171":[3,7,1],"172":[3,10,67],"173":[7,10,87],"174":[7,10,75],"175":[4,10,100],"176":[2,7,977],"177":[7,1,1],"178":[2,7,1],"179":[2,9,38],"180":[4,7,1],"181":[3,10,38],"182":[2,10,137],"183":[3,10,34],"184":[6,10,66],"185":[5,10,93],"186":[3,10,31],"187":[3,7,21],"188":[2,10,171],"189":[2,10,67],"190":[5,10,79],"191":[2,7,1144],"192":[7,1,1],"193":[4,7,1],"194":[7,10,182],"195":[9,10,106],"196":[7,10,89],"197":[3,10,37],"198":[3,7,105],"199":[2,7,907],"200":[7,1,1],"201":[2,7,147],"202":[4,8,71],"203":[7,8,74],"204":[3,8,37],"205":[4,7,1],"206":[7,10,60],"207":[3,10,49],"208":[3,7,1],"209":[4,10,60],"210":[4,10,31],"211":[2,7,1441],"212":[7,1,1],"213":[2,7,110],"214":[4,8,35],"215":[3,8,54],"216":[4,7,1],"217":[3,10,46],"218":[7,10,49],"219":[4,10,15],"220":[6,10,29],"221":[4,10,105],"222":[2,7,740],"223":[7,1,1],"224":[2,7,75],"225":[4,7,1],"226":[3,10,47],"227":[3,7,1],"228":[3,10,94],"229":[6,10,45],"230":[4,10,55],"231":[7,10,127],"232":[5,10,68],"233":[8,10,78],"234":[4,10,112],"235":[6,10,44],"236":[2,7,816],"237":[7,1,1],"238":[2,7,45],"239":[4,7,1],"240":[4,10,94],"241":[3,10,110],"242":[3,7,1],"243":[7,10,76],"244":[5,10,50],"245":[6,10,40],"246":[7,10,44],"247":[4,10,50],"248":[4,10,50],"249":[2,7,827],"250":[7,1,1],"251":[2,7,62],"252":[4,7,1],"253":[3,10,75],"254":[5,10,45],"255":[5,10,59],"256":[5,10,31],"257":[2,15,21],"258":[3,15,22],"259":[2,15,44],"260":[2,15,8],"261":[3,7,1],"262":[5,10,85],"263":[9,10,104],"264":[2,7,15],"265":[7,9,81],"266":[2,7,686],"267":[7,1,1],"268":[2,7,64],"269":[4,7,1],"270":[3,10,47],"271":[7,10,34],"272":[7,10,52],"273":[9,10,104],"274":[2,7,15],"275":[7,9,45],"276":[7,9,73],"277":[2,7,446],"278":[2,1,37],"279":[2,2,47],"280":[2,4,1],"281":[1,4,1],"282":[1,4,93],"283":[1,4,1],"284":[2,5,15],"285":[4,5,14],"286":[2,4,19],"287":[1,2,1],"288":[2,3,9],"289":[1,3,6],"290":[2,3,28],"291":[2,3,60],"292":[2,3,89],"293":[2,3,9],"294":[1,3,12],"295":[3,4,3],"296":[3,7,4],"297":[3,7,4],"298":[3,4,3],"299":[3,4,8],"300":[2,2,18],"301":[1,2,8],"302":[3,1,12],"303":[4,1,36],"304":[1,1,53],"305":[1,1,50],"306":[2,1,18],"307":[7,2,34],"308":[12,2,24],"309":[13,2,11],"310":[13,2,12],"311":[2,1,23],"312":[1,2,35],"313":[4,3,143],"314":[4,2,48],"315":[3,2,98],"316":[3,2,46],"317":[1,2,130],"318":[2,1,45],"319":[2,2,20],"320":[2,2,21],"321":[2,2,25],"322":[4,1,56],"323":[3,4,25],"324":[3,7,55],"325":[3,7,23],"326":[3,7,17],"327":[3,7,37],"328":[1,7,22],"329":[1,7,12],"330":[4,7,16],"331":[2,4,168],"332":[1,4,20],"333":[1,4,1],"334":[3,4,86],"335":[3,4,85],"336":[4,4,51],"337":[2,1,82],"338":[9,2,10],"339":[7,2,11],"340":[2,8,53],"341":[6,2,187],"342":[1,2,14],"343":[4,3,39],"344":[4,3,46],"345":[4,3,54],"346":[4,3,35],"347":[3,3,67],"348":[3,2,1],"349":[4,5,139],"350":[8,5,95],"351":[3,1,50],"352":[7,1,159],"353":[4,7,22],"354":[5,11,42],"355":[3,11,50],"356":[3,11,31],"357":[3,1,24],"358":[2,3,67],"359":[3,3,35],"360":[2,3,63],"361":[11,3,33],"362":[2,1,1],"363":[1,2,34],"364":[1,3,33],"365":[7,3,33],"366":[3,3,51],"367":[5,3,59],"368":[3,1,1],"369":[2,1,1],"370":[2,2,127],"371":[2,2,112],"372":[2,2,23],"373":[2,2,39],"374":[2,2,131],"375":[2,2,67],"376":[2,2,38],"377":[3,2,35],"378":[2,2,63],"379":[2,2,15],"380":[2,2,51],"381":[2,2,42],"382":[3,2,14],"383":[3,2,31],"384":[2,2,31],"385":[3,2,52],"386":[3,2,32],"387":[2,2,29],"388":[2,2,58],"389":[3,2,51],"390":[3,2,51],"391":[3,2,61],"392":[3,1,1],"393":[3,3,63],"394":[3,3,64],"395":[3,3,44],"396":[3,3,77],"397":[3,3,30],"398":[2,1,1],"399":[3,2,37],"400":[3,2,54],"401":[4,2,103],"402":[2,2,47],"403":[3,2,57],"404":[5,2,45],"405":[2,2,60],"406":[3,2,11],"407":[2,2,33],"408":[4,2,26],"409":[5,2,27],"410":[5,2,22],"411":[3,2,75],"412":[3,1,8],"413":[1,1,33],"414":[2,1,58],"415":[3,1,56],"416":[5,1,38],"417":[3,5,43],"418":[3,5,25],"419":[3,7,3],"420":[3,7,4],"421":[3,7,5],"422":[3,7,7],"423":[3,5,31],"424":[2,5,46],"425":[3,1,20],"426":[3,1,23],"427":[3,1,14],"428":[1,1,45],"429":[3,1,42],"430":[1,1,142],"431":[2,1,34],"432":[2,2,81],"433":[4,4,88],"434":[4,4,37],"435":[2,4,115],"436":[3,1,71],"437":[3,3,51],"438":[3,3,20],"439":[3,3,19],"440":[4,3,33],"441":[4,3,58],"442":[7,1,21],"443":[3,7,3],"444":[1,7,4],"445":[2,7,26],"446":[2,7,72],"447":[2,7,28],"448":[4,1,34],"449":[1,4,10],"450":[4,5,43],"451":[3,5,29],"452":[3,5,40],"453":[4,1,221],"454":[5,1,104],"455":[4,1,104],"456":[1,1,16],"457":[1,1,84],"458":[2,1,22],"459":[1,1,21],"460":[1,1,55],"461":[3,1,33],"462":[1,1,79],"463":[3,1,19],"464":[3,1,24],"465":[4,1,61],"466":[1,1,61],"467":[1,1,43],"468":[3,1,47],"469":[1,1,32],"470":[2,1,72],"471":[4,1,32],"472":[1,1,24],"473":[2,1,46],"474":[3,1,63],"475":[1,1,21],"476":[3,1,24],"477":[1,1,15],"478":[3,1,20],"479":[2,1,102],"480":[3,1,25],"481":[2,1,104],"482":[1,1,46],"483":[1,1,60],"484":[2,1,45],"485":[2,1,66],"486":[2,1,37],"487":[2,2,42],"488":[1,2,22],"489":[3,3,28],"490":[3,3,3],"491":[3,3,13],"492":[2,3,14],"493":[2,2,35],"494":[2,2,1],"495":[1,4,32],"496":[2,1,108],"497":[2,2,25],"498":[1,2,35],"499":[1,2,41],"500":[1,2,34],"501":[4,1,37],"502":[2,4,283],"503":[5,4,39],"504":[5,4,70],"505":[5,4,249],"506":[3,4,126],"507":[3,4,14],"508":[3,4,37],"509":[2,7,90],"510":[3,9,97],"511":[2,7,209],"512":[4,1,33],"513":[2,4,89],"514":[3,4,30],"515":[2,4,209],"516":[3,4,103],"517":[3,1,27],"518":[1,1,1],"519":[2,1,60],"520":[2,2,44],"521":[2,2,55],"522":[2,2,72],"523":[3,4,27],"524":[3,4,16],"525":[3,4,20],"526":[2,2,31],"527":[2,2,44],"528":[6,1,14],"529":[2,6,127],"530":[1,6,205],"531":[1,6,1],"532":[7,7,45],"533":[8,7,56],"534":[5,7,88],"535":[2,6,27],"536":[4,1,13],"537":[5,4,87],"538":[6,4,44],"539":[5,4,29],"540":[5,4,80],"541":[8,4,65],"542":[6,4,18],"543":[5,4,6],"544":[2,1,1],"545":[6,2,36],"546":[11,2,33],"547":[6,2,7],"548":[4,2,19],"549":[3,2,16],"550":[3,1,62],"551":[14,3,83],"552":[2,1,48],"553":[7,1,13],"554":[7,1,166],"555":[2,1,31],"556":[2,1,171],"557":[1,2,106],"558":[3,3,33],"559":[1,2,109],"560":[3,2,215],"561":[1,2,43],"562":[10,1,47],"563":[2,1,44],"564":[1,2,39],"565":[2,2,55],"566":[2,2,86],"567":[7,1,66],"568":[7,7,56],"569":[2,1,27],"570":[4,2,65],"571":[6,2,71],"572":[5,8,70],"573":[4,8,54],"574":[3,1,87],"575":[4,3,48],"576":[6,5,31],"577":[5,5,10],"578":[3,3,41],"579":[4,4,9],"580":[6,4,89],"581":[4,3,29],"582":[6,5,46],"583":[5,5,10],"584":[3,1,57],"585":[4,3,40],"586":[4,3,68],"587":[2,1,82],"588":[6,2,139],"589":[4,1,51],"590":[9,4,19],"591":[5,4,13],"592":[4,1,111],"593":[4,4,36],"594":[4,4,38],"595":[5,4,11],"596":[2,1,33],"597":[3,2,126],"598":[3,2,104],"599":[4,2,39],"600":[4,2,39],"601":[3,2,44],"602":[2,1,43],"603":[3,2,4],"604":[4,2,4],"605":[3,1,24],"606":[1,3,147],"607":[1,3,72],"608":[6,3,16],"609":[5,9,95],"610":[3,9,72],"611":[2,12,49],"612":[2,12,52],"613":[5,9,83],"614":[5,9,74],"615":[3,1,32],"616":[2,1,72],"617":[1,1,35],"618":[3,1,14],"619":[1,3,8],"620":[2,3,9],"621":[2,1,88],"622":[2,1,17],"623":[4,2,91],"624":[4,2,129],"625":[5,1,81],"626":[1,5,175],"627":[6,5,114],"628":[1,5,127],"629":[4,5,161],"630":[2,1,82],"631":[1,2,27],"632":[1,2,1],"633":[1,3,81],"634":[1,3,1],"635":[1,4,203],"636":[1,4,55],"637":[1,2,1],"638":[1,3,57],"639":[1,3,74],"640":[1,2,1],"641":[1,2,130],"642":[2,1,23],"643":[1,2,53],"644":[2,2,36],"645":[1,2,1],"646":[4,3,11],"647":[12,3,22],"648":[1,15,17],"649":[11,3,7],"650":[1,14,10],"651":[4,3,8],"652":[7,3,5],"653":[1,10,11],"654":[2,1,61],"655":[1,2,53],"656":[1,2,104],"657":[2,3,90],"658":[2,3,56],"659":[2,3,148],"660":[4,5,124],"661":[2,3,142],"662":[2,3,58],"663":[2,3,59],"664":[2,1,27],"665":[1,2,47],"666":[2,2,50],"667":[3,4,29],"668":[3,2,18],"669":[2,2,67],"670":[1,2,1],"671":[4,3,11],"672":[1,7,26],"673":[7,3,11],"674":[1,10,15],"675":[12,3,23],"676":[1,15,20],"677":[11,3,7],"678":[1,14,10],"679":[11,3,8],"680":[1,14,15],"681":[3,1,101],"682":[3,3,1],"683":[4,4,61],"684":[3,3,179],"685":[3,3,128],"686":[3,3,37],"687":[4,3,37],"688":[3,1,100],"689":[6,3,175],"690":[6,3,119],"691":[5,3,83],"692":[7,3,72],"693":[3,1,36],"694":[4,3,93],"695":[2,1,22],"696":[1,2,58],"697":[2,2,44],"698":[2,2,69],"699":[3,1,19],"700":[1,3,51],"701":[2,3,94],"702":[2,3,64],"703":[3,3,131],"704":[1,6,27],"705":[1,6,28],"706":[1,3,1],"707":[4,4,70],"708":[11,4,9],"709":[1,15,35],"710":[2,15,16],"711":[11,4,9],"712":[1,15,36],"713":[2,15,16],"714":[13,4,14],"715":[1,17,38],"716":[2,17,16],"717":[13,4,15],"718":[1,17,38],"719":[2,17,16],"720":[13,4,14],"721":[1,17,35],"722":[2,17,16],"723":[13,4,15],"724":[1,17,35],"725":[2,17,16],"726":[9,4,62],"727":[1,13,32],"728":[2,13,16],"729":[2,1,18],"730":[1,2,54],"731":[2,2,37],"732":[2,4,14],"733":[3,2,18],"734":[2,2,71],"735":[1,2,1],"736":[4,3,11],"737":[1,7,25],"738":[4,3,11],"739":[9,3,7],"740":[1,12,11],"741":[12,3,26],"742":[1,15,20],"743":[11,3,10],"744":[1,14,10],"745":[9,3,26],"746":[1,12,18],"747":[8,3,11],"748":[1,11,8],"749":[14,3,26],"750":[1,17,21],"751":[12,3,26],"752":[1,15,18],"753":[6,3,8],"754":[7,3,9],"755":[2,1,25],"756":[1,2,54],"757":[2,2,44],"758":[2,4,48],"759":[3,2,18],"760":[2,2,74],"761":[1,2,1],"762":[4,3,11],"763":[1,7,31],"764":[7,3,11],"765":[1,10,6],"766":[10,3,7],"767":[1,13,13],"768":[12,3,26],"769":[1,15,20],"770":[11,3,10],"771":[1,14,10],"772":[9,3,26],"773":[1,12,18],"774":[8,3,11],"775":[1,11,8],"776":[14,3,26],"777":[1,17,21],"778":[12,3,26],"779":[1,15,18],"780":[9,3,8],"781":[1,12,6],"782":[10,3,9],"783":[1,13,6],"784":[2,1,28],"785":[1,2,54],"786":[2,2,69],"787":[2,4,48],"788":[2,4,42],"789":[2,4,68],"790":[3,4,36],"791":[3,2,18],"792":[2,2,88],"793":[1,2,1],"794":[4,3,11],"795":[1,7,31],"796":[7,3,11],"797":[1,10,6],"798":[10,3,7],"799":[1,13,13],"800":[12,3,26],"801":[1,15,20],"802":[11,3,10],"803":[1,14,10],"804":[9,3,26],"805":[1,12,18],"806":[8,3,11],"807":[1,11,8],"808":[12,3,25],"809":[1,15,20],"810":[10,3,25],"811":[1,13,16],"812":[9,3,8],"813":[1,12,6],"814":[9,3,9],"815":[1,12,6],"816":[2,1,28],"817":[1,2,54],"818":[2,2,49],"819":[2,4,48],"820":[2,4,30],"821":[3,2,18],"822":[2,2,92],"823":[1,2,1],"824":[4,3,11],"825":[1,7,31],"826":[7,3,11],"827":[1,10,6],"828":[10,3,7],"829":[1,13,13],"830":[8,3,9],"831":[1,11,10],"832":[12,3,26],"833":[1,15,20],"834":[11,3,10],"835":[1,14,10],"836":[9,3,26],"837":[1,12,18],"838":[8,3,11],"839":[1,11,8],"840":[14,3,26],"841":[1,17,21],"842":[12,3,26],"843":[1,15,18],"844":[9,3,8],"845":[1,12,6],"846":[10,3,9],"847":[1,13,6],"848":[2,1,27],"849":[1,2,54],"850":[2,2,76],"851":[2,4,62],"852":[3,4,46],"853":[2,4,42],"854":[2,4,70],"855":[3,4,36],"856":[3,2,18],"857":[2,2,88],"858":[1,2,1],"859":[4,3,11],"860":[1,7,31],"861":[7,3,11],"862":[1,10,6],"863":[10,3,7],"864":[1,13,13],"865":[8,3,9],"866":[1,11,10],"867":[12,3,26],"868":[1,15,20],"869":[11,3,10],"870":[1,14,10],"871":[9,3,26],"872":[1,12,18],"873":[8,3,11],"874":[1,11,8],"875":[14,3,26],"876":[1,17,21],"877":[12,3,26],"878":[1,15,18],"879":[9,3,8],"880":[1,12,6],"881":[10,3,9],"882":[1,13,6],"883":[2,1,27],"884":[1,2,54],"885":[2,2,71],"886":[2,4,62],"887":[2,4,42],"888":[2,4,70],"889":[3,4,36],"890":[3,2,18],"891":[2,2,88],"892":[1,2,1],"893":[4,3,11],"894":[1,7,31],"895":[7,3,11],"896":[1,10,6],"897":[10,3,7],"898":[1,13,13],"899":[8,3,9],"900":[1,11,10],"901":[12,3,26],"902":[1,15,20],"903":[11,3,10],"904":[1,14,10],"905":[9,3,26],"906":[1,12,18],"907":[8,3,11],"908":[1,11,8],"909":[14,3,26],"910":[1,17,21],"911":[12,3,26],"912":[1,15,18],"913":[9,3,8],"914":[1,12,6],"915":[10,3,9],"916":[1,13,6],"917":[2,1,27],"918":[1,2,54],"919":[2,2,71],"920":[2,4,48],"921":[2,4,42],"922":[2,4,70],"923":[3,4,36],"924":[3,2,18],"925":[2,2,88],"926":[1,2,1],"927":[4,3,11],"928":[1,7,31],"929":[7,3,11],"930":[1,10,6],"931":[10,3,7],"932":[1,13,13],"933":[8,3,9],"934":[1,11,10],"935":[12,3,26],"936":[1,15,20],"937":[11,3,10],"938":[1,14,10],"939":[9,3,26],"940":[1,12,18],"941":[8,3,11],"942":[1,11,8],"943":[14,3,26],"944":[1,17,21],"945":[12,3,26],"946":[1,15,18],"947":[9,3,8],"948":[1,12,6],"949":[10,3,9],"950":[1,13,6],"951":[2,1,27],"952":[1,2,54],"953":[2,2,75],"954":[2,4,48],"955":[2,4,40],"956":[2,4,70],"957":[3,4,36],"958":[3,2,18],"959":[2,2,88],"960":[1,2,1],"961":[4,3,11],"962":[1,7,31],"963":[7,3,11],"964":[1,10,6],"965":[10,3,7],"966":[1,13,13],"967":[8,3,9],"968":[1,11,10],"969":[12,3,26],"970":[1,15,20],"971":[11,3,10],"972":[1,14,10],"973":[9,3,26],"974":[1,12,18],"975":[8,3,11],"976":[1,11,8],"977":[14,3,26],"978":[1,17,21],"979":[12,3,26],"980":[1,15,18],"981":[9,3,8],"982":[1,12,6],"983":[10,3,9],"984":[1,13,6],"985":[2,1,27],"986":[1,2,54],"987":[2,2,74],"988":[2,4,48],"989":[2,4,37],"990":[2,4,70],"991":[3,4,36],"992":[3,2,18],"993":[2,2,88],"994":[1,2,1],"995":[4,3,11],"996":[1,7,31],"997":[7,3,11],"998":[1,10,6],"999":[10,3,7],"1000":[1,13,13],"1001":[8,3,9],"1002":[1,11,10],"1003":[12,3,26],"1004":[1,15,20],"1005":[11,3,10],"1006":[1,14,10],"1007":[9,3,26],"1008":[1,12,18],"1009":[8,3,11],"1010":[1,11,8],"1011":[12,3,25],"1012":[1,15,20],"1013":[10,3,26],"1014":[1,13,16],"1015":[9,3,8],"1016":[1,12,6],"1017":[9,3,9],"1018":[1,12,6],"1019":[2,1,27],"1020":[1,2,54],"1021":[2,2,73],"1022":[2,4,62],"1023":[3,4,46],"1024":[2,4,72],"1025":[3,4,36],"1026":[3,2,18],"1027":[2,2,88],"1028":[1,2,1],"1029":[4,3,11],"1030":[1,7,31],"1031":[7,3,11],"1032":[1,10,6],"1033":[10,3,7],"1034":[1,13,13],"1035":[8,3,9],"1036":[1,11,10],"1037":[12,3,26],"1038":[1,15,20],"1039":[11,3,10],"1040":[1,14,10],"1041":[9,3,26],"1042":[1,12,18],"1043":[8,3,11],"1044":[1,11,8],"1045":[12,3,25],"1046":[1,15,20],"1047":[10,3,26],"1048":[1,13,16],"1049":[9,3,8],"1050":[1,12,6],"1051":[9,3,9],"1052":[1,12,6],"1053":[2,1,27],"1054":[1,2,54],"1055":[2,2,73],"1056":[2,4,62],"1057":[3,4,46],"1058":[2,4,72],"1059":[3,4,36],"1060":[3,2,18],"1061":[2,2,88],"1062":[1,2,1],"1063":[4,3,11],"1064":[1,7,31],"1065":[7,3,11],"1066":[1,10,6],"1067":[10,3,7],"1068":[1,13,13],"1069":[8,3,9],"1070":[1,11,10],"1071":[12,3,26],"1072":[1,15,20],"1073":[11,3,10],"1074":[1,14,10],"1075":[9,3,26],"1076":[1,12,18],"1077":[8,3,11],"1078":[1,11,8],"1079":[12,3,25],"1080":[1,15,20],"1081":[10,3,26],"1082":[1,13,16],"1083":[9,3,8],"1084":[1,12,6],"1085":[9,3,9],"1086":[1,12,6],"1087":[2,1,27],"1088":[1,2,54],"1089":[2,2,75],"1090":[2,4,62],"1091":[2,4,44],"1092":[2,4,72],"1093":[3,4,36],"1094":[3,2,18],"1095":[2,2,88],"1096":[1,2,1],"1097":[4,3,11],"1098":[1,7,31],"1099":[7,3,11],"1100":[1,10,12],"1101":[10,3,7],"1102":[1,13,13],"1103":[8,3,9],"1104":[1,11,10],"1105":[12,3,26],"1106":[1,15,20],"1107":[11,3,10],"1108":[1,14,10],"1109":[9,3,26],"1110":[1,12,18],"1111":[8,3,11],"1112":[1,11,8],"1113":[12,3,25],"1114":[1,15,20],"1115":[10,3,26],"1116":[1,13,16],"1117":[9,3,8],"1118":[1,12,6],"1119":[9,3,9],"1120":[1,12,6],"1121":[3,1,79],"1122":[1,3,56],"1123":[2,4,44],"1124":[1,4,58],"1125":[3,3,59],"1126":[2,6,90],"1127":[1,6,111],"1128":[3,3,62],"1129":[2,6,121],"1130":[1,6,124],"1131":[4,3,1],"1132":[3,7,95],"1133":[3,7,107],"1134":[3,7,95],"1135":[2,3,17],"1136":[1,5,70],"1137":[1,5,47],"1138":[1,3,48],"1139":[6,3,6],"1140":[3,9,35],"1141":[1,9,34],"1142":[6,9,82],"1143":[2,1,39],"1144":[1,2,53],"1145":[2,2,44],"1146":[2,4,48],"1147":[3,2,18],"1148":[2,2,86],"1149":[1,2,1],"1150":[4,3,11],"1151":[1,7,31],"1152":[7,3,11],"1153":[1,10,6],"1154":[10,3,7],"1155":[1,13,13],"1156":[8,3,9],"1157":[1,11,10],"1158":[12,3,26],"1159":[1,15,20],"1160":[11,3,10],"1161":[1,14,10],"1162":[9,3,26],"1163":[1,12,18],"1164":[8,3,11],"1165":[1,11,8],"1166":[14,3,26],"1167":[1,17,21],"1168":[12,3,26],"1169":[1,15,18],"1170":[9,3,8],"1171":[1,12,6],"1172":[10,3,9],"1173":[1,13,6],"1174":[3,1,19],"1175":[1,3,51],"1176":[2,3,69],"1177":[3,3,131],"1178":[1,3,1],"1179":[4,4,18],"1180":[12,4,5],"1181":[1,16,83],"1182":[2,16,16],"1183":[7,4,9],"1184":[1,11,8],"1185":[2,11,11],"1186":[6,4,9],"1187":[2,10,14],"1188":[10,4,9],"1189":[1,14,21],"1190":[2,14,16],"1191":[9,4,9],"1192":[1,13,21],"1193":[2,13,16],"1194":[4,4,21],"1195":[2,1,40],"1196":[1,2,46],"1197":[2,2,41],"1198":[3,2,89],"1199":[1,2,1],"1200":[7,3,18],"1201":[1,10,31],"1202":[7,3,5],"1203":[1,10,8],"1204":[6,3,5],"1205":[2,9,19],"1206":[10,3,4],"1207":[1,13,21],"1208":[9,3,4],"1209":[1,12,21],"1210":[5,3,19],"1211":[2,8,10],"1212":[2,1,68],"1213":[1,2,53],"1214":[2,2,72],"1215":[2,4,63],"1216":[2,4,78],"1217":[2,4,80],"1218":[2,2,34],"1219":[2,3,49],"1220":[2,3,43],"1221":[2,3,56],"1222":[2,3,22],"1223":[2,3,49],"1224":[3,2,34],"1225":[5,5,82],"1226":[2,5,77],"1227":[3,6,57],"1228":[2,6,27],"1229":[2,5,23],"1230":[2,5,108],"1231":[1,2,1],"1232":[12,3,9],"1233":[1,15,17],"1234":[8,1,74],"1235":[1,8,48],"1236":[2,1,89],"1237":[4,1,25],"1238":[5,4,77],"1239":[3,9,78],"1240":[10,9,35],"1241":[5,4,70],"1242":[4,4,88],"1243":[25,8,78],"1244":[2,1,13],"1245":[1,2,60],"1246":[2,2,9],"1247":[4,3,16],"1248":[4,3,21],"1249":[4,3,26],"1250":[5,2,52],"1251":[2,2,18],"1252":[7,4,96],"1253":[11,4,46],"1254":[6,2,100],"1255":[6,2,50],"1256":[3,1,1],"1257":[4,3,25],"1258":[8,3,41],"1259":[8,3,25],"1260":[12,3,40],"1261":[7,3,22],"1262":[7,3,30],"1263":[10,3,16],"1264":[10,13,47],"1265":[9,3,132],"1266":[2,1,19],"1267":[6,2,24],"1268":[6,2,36],"1269":[10,2,40],"1270":[9,2,99],"1271":[9,2,58],"1272":[6,2,46],"1273":[5,2,67],"1274":[3,2,29],"1275":[3,2,57],"1276":[4,2,58],"1277":[10,2,5],"1278":[4,2,78],"1279":[6,2,46],"1280":[5,2,41],"1281":[8,2,43],"1282":[7,2,6],"1283":[4,2,52],"1284":[8,2,58],"1285":[2,1,1],"1286":[7,2,36],"1287":[2,2,173],"1288":[4,2,46],"1289":[9,2,33],"1290":[8,2,70],"1291":[11,2,19],"1292":[6,2,31],"1293":[3,2,47],"1294":[2,2,58],"1295":[3,2,17],"1296":[2,2,1],"1297":[6,4,10],"1298":[11,2,58],"1299":[2,1,86],"1300":[3,1,226],"1301":[1,3,20],"1302":[5,4,98],"1303":[5,4,176],"1304":[2,1,43],"1305":[1,2,2],"1306":[2,2,3],"1307":[3,2,4],"1308":[4,2,5],"1309":[2,2,3],"1310":[1,1,27],"1311":[2,1,31],"1312":[1,1,91],"1313":[2,2,36],"1314":[2,2,57],"1315":[2,1,95],"1316":[2,3,86],"1317":[2,3,56],"1318":[10,3,8],"1319":[1,3,72],"1320":[2,3,58],"1321":[8,3,27],"1322":[2,1,52],"1323":[3,3,15],"1324":[3,3,17],"1325":[4,1,148],"1326":[4,4,199],"1327":[3,4,9],"1328":[2,7,30],"1329":[2,7,136],"1330":[5,7,61],"1331":[4,1,113],"1332":[2,4,273],"1333":[4,4,35],"1334":[1,1,49],"1335":[4,1,204],"1336":[1,4,150],"1337":[3,1,38],"1338":[1,3,109],"1339":[2,3,48],"1340":[2,3,130],"1341":[1,1,144],"1342":[3,1,20],"1343":[5,4,43],"1344":[6,4,130],"1345":[5,4,21],"1346":[7,1,105],"1347":[3,7,54],"1348":[3,7,20],"1349":[2,8,37],"1350":[6,7,1],"1351":[1,12,64],"1352":[1,12,47],"1353":[1,1,73],"1354":[5,1,58],"1355":[5,5,119],"1356":[2,5,24],"1357":[2,7,79],"1358":[5,1,1],"1359":[6,5,194],"1360":[2,11,91],"1361":[4,11,129],"1362":[2,11,32],"1363":[3,11,58],"1364":[3,5,73],"1365":[4,8,30],"1366":[6,8,26],"1367":[6,8,29],"1368":[6,8,77],"1369":[7,8,21],"1370":[10,8,38],"1371":[3,8,10],"1372":[3,8,8],"1373":[5,8,11],"1374":[3,5,1],"1375":[2,8,98],"1376":[5,1,98],"1377":[2,5,115],"1378":[3,7,77],"1379":[5,5,60],"1380":[4,5,114],"1381":[8,5,36],"1382":[1,5,12],"1383":[2,6,130],"1384":[2,6,124],"1385":[2,6,252],"1386":[1,1,50],"1387":[3,1,59],"1388":[1,4,25],"1389":[3,1,11],"1390":[3,4,76],"1391":[2,7,49],"1392":[4,8,33],"1393":[3,4,98],"1394":[3,4,59],"1395":[1,7,38],"1396":[3,4,75],"1397":[2,1,88],"1398":[1,1,180],"1399":[2,1,129],"1400":[1,1,58],"1401":[3,1,67],"1402":[1,1,51],"1403":[2,1,165],"1404":[2,3,86],"1405":[2,3,166],"1406":[2,1,175],"1407":[2,1,3],"1408":[2,1,52],"1409":[9,1,20],"1410":[4,9,41],"1411":[5,9,101],"1412":[7,9,92],"1413":[7,9,35],"1414":[1,9,54],"1415":[3,9,48],"1416":[7,9,173],"1417":[7,9,17],"1418":[7,9,15],"1419":[7,9,14],"1420":[7,9,10],"1421":[7,9,12],"1422":[6,9,6],"1423":[4,9,79],"1424":[6,9,3],"1425":[7,9,10],"1426":[7,9,9],"1427":[7,9,25],"1428":[7,9,16],"1429":[7,9,14],"1430":[3,9,139],"1431":[2,9,139],"1432":[6,9,47],"1433":[4,9,18],"1434":[1,10,48],"1435":[1,10,94],"1436":[3,11,75],"1437":[1,1,32],"1438":[5,1,92],"1439":[5,1,60],"1440":[3,1,160],"1441":[3,4,121],"1442":[2,1,74],"1443":[1,2,20],"1444":[3,1,1],"1445":[2,4,112],"1446":[3,5,159],"1447":[2,4,73],"1448":[3,5,111],"1449":[2,4,24],"1450":[5,1,50],"1451":[1,6,213],"1452":[1,6,84],"1453":[1,1,22],"1454":[1,1,76],"1455":[1,1,32],"1456":[1,1,34],"1457":[2,1,100],"1458":[4,3,62],"1459":[3,3,91],"1460":[2,1,24],"1461":[2,3,19],"1462":[2,3,31],"1463":[2,3,37],"1464":[2,3,69],"1465":[2,1,1],"1466":[2,3,51],"1467":[2,3,51],"1468":[3,1,1],"1469":[2,4,96],"1470":[2,4,49],"1471":[2,1,84],"1472":[1,1,1],"1473":[4,2,7],"1474":[4,2,5],"1475":[4,2,5],"1476":[4,2,5],"1477":[4,2,5],"1478":[4,2,5],"1479":[6,2,5],"1480":[1,8,11],"1481":[7,2,6],"1482":[2,9,10],"1483":[6,2,6],"1484":[2,8,7],"1485":[5,2,7],"1486":[5,2,5],"1487":[5,2,5],"1488":[6,2,7],"1489":[2,8,7],"1490":[1,1,1],"1491":[4,1,94],"1492":[4,4,89],"1493":[4,1,34],"1494":[2,1,37],"1495":[1,1,110],"1496":[2,1,119],"1497":[2,1,81],"1498":[1,1,48],"1499":[2,1,174],"1500":[6,2,137],"1501":[2,6,80],"1502":[3,2,1],"1503":[3,3,85],"1504":[2,3,51],"1505":[1,3,20],"1506":[8,3,78],"1507":[4,3,45],"1508":[1,1,104],"1509":[3,1,56],"1510":[2,1,47],"1511":[1,1,148],"1512":[1,1,49],"1513":[2,1,12],"1514":[2,3,42],"1515":[4,3,108],"1516":[2,3,48],"1517":[4,3,24],"1518":[9,3,191],"1519":[8,3,69],"1520":[2,3,38],"1521":[5,5,47],"1522":[5,5,34],"1523":[3,3,92],"1524":[3,3,61],"1525":[6,6,85],"1526":[2,1,40],"1527":[2,1,157],"1528":[1,1,60],"1529":[1,1,37],"1530":[1,1,149],"1531":[1,1,42],"1532":[1,1,12],"1533":[1,1,53],"1534":[1,1,63],"1535":[1,1,1],"1536":[3,2,6],"1537":[1,5,36],"1538":[4,2,13],"1539":[6,2,10],"1540":[6,2,10],"1541":[6,2,8],"1542":[6,2,8],"1543":[6,2,8],"1544":[6,2,8],"1545":[8,2,13],"1546":[1,10,16],"1547":[2,1,63],"1548":[3,2,66],"1549":[1,2,76],"1550":[1,2,1],"1551":[11,3,28],"1552":[13,3,15],"1553":[7,1,156],"1554":[1,7,114],"1555":[4,8,67],"1556":[2,8,69],"1557":[1,1,104],"1558":[2,1,84],"1559":[2,1,128],"1560":[1,1,112],"1561":[1,1,19],"1562":[2,1,96],"1563":[2,1,35],"1564":[1,2,34],"1565":[4,2,36],"1566":[1,2,17],"1567":[1,3,38],"1568":[1,2,48],"1569":[2,1,1],"1570":[5,2,77],"1571":[3,2,17],"1572":[2,2,72],"1573":[1,3,197],"1574":[1,3,23],"1575":[3,4,22],"1576":[1,6,71],"1577":[1,6,107],"1578":[3,4,205],"1579":[3,3,44],"1580":[4,3,15],"1581":[3,2,34],"1582":[3,4,73],"1583":[3,4,21],"1584":[3,4,38],"1585":[3,4,23],"1586":[3,4,32],"1587":[3,4,25],"1588":[3,1,1],"1589":[2,3,52],"1590":[1,3,12],"1591":[2,3,58],"1592":[1,3,1],"1593":[2,4,25],"1594":[3,4,90],"1595":[1,3,1],"1596":[7,4,17],"1597":[1,11,10],"1598":[4,4,10],"1599":[4,4,13],"1600":[7,4,15],"1601":[1,11,10],"1602":[4,4,5],"1603":[9,4,9],"1604":[1,13,20],"1605":[6,4,31],"1606":[1,10,7],"1607":[7,4,9],"1608":[1,11,8],"1609":[8,4,22],"1610":[1,12,13],"1611":[9,4,5],"1612":[1,13,34],"1613":[11,4,20],"1614":[1,15,36],"1615":[5,4,12],"1616":[2,9,7],"1617":[9,4,7],"1618":[1,13,18],"1619":[7,4,7],"1620":[1,11,13],"1621":[2,11,20],"1622":[6,4,24],"1623":[1,10,7],"1624":[6,4,18],"1625":[1,10,9],"1626":[8,4,13],"1627":[1,12,11],"1628":[8,4,17],"1629":[1,12,11],"1630":[1,1,60],"1631":[1,1,48],"1632":[1,1,73],"1633":[1,2,103],"1634":[2,3,62],"1635":[1,1,41],"1636":[1,1,1],"1637":[3,2,6],"1638":[1,5,44],"1639":[4,2,5],"1640":[1,6,24],"1641":[4,2,14],"1642":[7,2,10],"1643":[1,9,13],"1644":[7,2,10],"1645":[1,9,13],"1646":[7,2,10],"1647":[1,9,7],"1648":[2,9,14],"1649":[9,2,7],"1650":[1,11,11],"1651":[2,1,58],"1652":[1,2,27],"1653":[1,2,14],"1654":[1,2,66],"1655":[2,1,99],"1656":[13,2,30],"1657":[1,2,46],"1658":[3,2,34],"1659":[7,3,40],"1660":[8,3,14],"1661":[12,3,20],"1662":[13,3,37],"1663":[2,2,42],"1664":[3,2,1],"1665":[5,5,109],"1666":[5,5,80],"1667":[2,2,1],"1668":[4,4,107],"1669":[1,2,18],"1670":[5,2,192],"1671":[5,2,76],"1672":[5,2,36],"1673":[1,11,92],"1674":[1,11,87],"1675":[3,11,135],"1676":[3,2,95],"1677":[7,2,165],"1678":[8,1,33],"1679":[1,8,18],"1680":[1,8,72],"1681":[2,8,1],"1682":[1,10,39],"1683":[3,10,94],"1684":[3,10,101],"1685":[3,10,62],"1686":[1,8,82],"1687":[1,8,11],"1688":[1,8,1],"1689":[5,9,9],"1690":[5,9,9],"1691":[4,9,9],"1692":[4,9,5],"1693":[6,9,7],"1694":[8,9,18],"1695":[1,17,7],"1696":[2,17,11],"1697":[7,9,22],"1698":[6,9,6],"1699":[9,9,8],"1700":[1,18,8],"1701":[2,18,7],"1702":[10,9,8],"1703":[1,19,11],"1704":[2,19,7],"1705":[11,9,8],"1706":[1,20,13],"1707":[2,20,7],"1708":[12,9,8],"1709":[1,21,15],"1710":[2,21,7],"1711":[13,9,8],"1712":[1,22,17],"1713":[2,22,7],"1714":[2,1,80],"1715":[2,2,63],"1716":[3,2,63],"1717":[6,4,67],"1718":[6,4,54],"1719":[4,2,37],"1720":[4,2,32],"1721":[4,2,14],"1722":[2,5,53],"1723":[3,1,35],"1724":[2,3,66],"1725":[2,3,173],"1726":[1,3,44],"1727":[1,3,42],"1728":[3,3,132],"1729":[4,3,157],"1730":[4,3,109],"1731":[2,3,25],"1732":[1,3,1],"1733":[1,4,85],"1734":[1,3,1],"1735":[5,4,7],"1736":[6,4,14],"1737":[5,4,5],"1738":[6,4,12],"1739":[5,4,5],"1740":[6,4,12],"1741":[7,4,9],"1742":[2,11,7],"1743":[10,4,32],"1744":[1,14,16],"1745":[10,4,31],"1746":[1,14,9],"1747":[7,4,6],"1748":[1,11,8],"1749":[8,4,13],"1750":[1,12,8],"1751":[5,4,7],"1752":[6,4,13],"1753":[6,4,7],"1754":[7,4,13],"1755":[8,4,6],"1756":[2,12,8],"1757":[5,4,6],"1758":[7,4,13],"1759":[6,4,6],"1760":[7,4,13],"1761":[8,4,7],"1762":[2,12,9],"1763":[6,4,5],"1764":[7,4,12],"1765":[6,4,5],"1766":[7,4,12],"1767":[8,4,5],"1768":[1,12,11],"1769":[9,4,12],"1770":[1,13,11],"1771":[8,4,6],"1772":[2,12,9],"1773":[7,4,11],"1774":[8,4,9],"1775":[2,12,11],"1776":[7,4,18],"1777":[2,11,3],"1778":[7,4,18],"1779":[2,11,9],"1780":[11,4,18],"1781":[1,4,16],"1782":[2,5,3],"1783":[11,4,18],"1784":[1,4,16],"1785":[2,5,9],"1786":[1,1,1],"1787":[1,1,58],"1788":[1,2,17],"1789":[2,2,15],"1790":[2,2,15],"1791":[5,3,80],"1792":[13,3,66],"1793":[1,2,282],"1794":[1,2,50],"1795":[1,2,1],"1796":[2,3,7],"1797":[3,3,10],"1798":[2,1,31],"1799":[6,2,18],"1800":[3,7,19],"1801":[3,7,65],"1802":[3,2,97],"1803":[2,4,139],"1804":[2,4,154],"1805":[2,4,131],"1806":[2,4,78],"1807":[2,4,173],"1808":[4,4,66],"1809":[8,2,22],"1810":[2,1,1],"1811":[2,2,45],"1812":[1,2,27],"1813":[2,2,97],"1814":[2,2,135],"1815":[3,2,127],"1816":[2,2,112],"1817":[2,2,158],"1818":[2,4,14],"1819":[2,4,40],"1820":[6,2,151],"1821":[6,7,203],"1822":[2,2,280],"1823":[5,2,29],"1824":[2,1,54],"1825":[1,2,80],"1826":[1,2,56],"1827":[3,2,52],"1828":[4,2,38],"1829":[2,2,31],"1830":[1,2,107],"1831":[1,2,8],"1832":[2,1,72],"1833":[2,2,38],"1834":[3,4,60],"1835":[3,4,80],"1836":[2,4,210],"1837":[3,4,36],"1838":[2,7,82],"1839":[2,7,88],"1840":[2,7,18],"1841":[2,4,45],"1842":[2,6,194],"1843":[3,6,36],"1844":[3,6,68],"1845":[3,6,73],"1846":[3,4,62],"1847":[2,4,79],"1848":[2,4,68],"1849":[5,4,210],"1850":[2,4,75],"1851":[2,2,166],"1852":[3,2,93],"1853":[3,2,85],"1854":[5,2,84],"1855":[3,1,133],"1856":[1,3,1],"1857":[3,4,73],"1858":[4,4,71],"1859":[3,4,147],"1860":[2,3,22],"1861":[3,5,64],"1862":[3,5,55],"1863":[1,1,51],"1864":[3,1,131],"1865":[9,3,70],"1866":[4,3,70],"1867":[4,3,24],"1868":[4,7,73],"1869":[3,7,26],"1870":[11,9,20],"1871":[10,18,52],"1872":[2,3,19],"1873":[10,5,118],"1874":[7,5,69],"1875":[3,5,1],"1876":[7,6,93],"1877":[10,6,69],"1878":[8,5,89],"1879":[4,3,104],"1880":[7,3,64],"1881":[2,1,81],"1882":[1,2,13],"1883":[1,2,42],"1884":[1,2,1],"1885":[5,3,6],"1886":[8,3,7],"1887":[1,11,13],"1888":[8,3,7],"1889":[1,11,13],"1890":[8,3,10],"1891":[1,11,13],"1892":[8,3,10],"1893":[1,11,13],"1894":[9,3,7],"1895":[1,12,13],"1896":[2,12,7],"1897":[5,3,8],"1898":[8,3,6],"1899":[2,11,7],"1900":[8,3,6],"1901":[1,11,10],"1902":[4,1,67],"1903":[6,4,26],"1904":[2,4,46],"1905":[5,6,61],"1906":[5,6,53],"1907":[2,6,104],"1908":[3,6,82],"1909":[2,4,1],"1910":[4,6,88],"1911":[2,6,38],"1912":[2,6,104],"1913":[3,6,20],"1914":[5,6,23],"1915":[3,6,47],"1916":[2,6,20],"1917":[2,6,37],"1918":[2,1,67],"1919":[1,2,12],"1920":[2,2,39],"1921":[5,2,186],"1922":[5,2,48],"1923":[2,2,134],"1924":[1,2,1],"1925":[9,3,14],"1926":[1,12,17],"1927":[9,3,5],"1928":[1,12,19],"1929":[2,1,73],"1930":[6,2,33],"1931":[1,2,18],"1932":[2,2,176],"1933":[3,2,108],"1934":[2,5,86],"1935":[2,5,87],"1936":[5,2,56],"1937":[3,7,62],"1938":[3,7,74],"1939":[2,7,70],"1940":[6,2,102],"1941":[7,2,90],"1942":[1,2,34],"1943":[4,2,116],"1944":[3,1,36],"1945":[2,3,71],"1946":[2,3,174],"1947":[1,3,47],"1948":[1,3,172],"1949":[3,3,237],"1950":[5,4,119],"1951":[5,4,50],"1952":[4,3,160],"1953":[1,3,48],"1954":[4,3,152],"1955":[2,3,25],"1956":[1,3,1],"1957":[1,4,97],"1958":[2,4,100],"1959":[1,6,128],"1960":[5,6,49],"1961":[1,3,1],"1962":[5,4,7],"1963":[6,4,14],"1964":[5,4,5],"1965":[6,4,12],"1966":[5,4,5],"1967":[6,4,12],"1968":[7,4,9],"1969":[2,11,7],"1970":[12,4,32],"1971":[1,16,21],"1972":[12,4,31],"1973":[1,16,13],"1974":[7,4,6],"1975":[1,11,8],"1976":[8,4,13],"1977":[1,12,8],"1978":[5,4,7],"1979":[6,4,13],"1980":[6,4,7],"1981":[7,4,13],"1982":[8,4,6],"1983":[2,12,8],"1984":[6,4,6],"1985":[7,4,13],"1986":[6,4,6],"1987":[7,4,13],"1988":[8,4,7],"1989":[2,12,9],"1990":[6,4,6],"1991":[7,4,13],"1992":[6,4,6],"1993":[7,4,13],"1994":[8,4,7],"1995":[2,12,9],"1996":[6,4,7],"1997":[7,4,14],"1998":[6,4,7],"1999":[7,4,14],"2000":[8,4,8],"2001":[2,12,9],"2002":[6,4,5],"2003":[7,4,12],"2004":[6,4,5],"2005":[7,4,12],"2006":[8,4,5],"2007":[1,12,11],"2008":[9,4,12],"2009":[1,13,11],"2010":[8,4,6],"2011":[2,12,9],"2012":[10,4,10],"2013":[1,4,16],"2014":[11,4,17],"2015":[1,15,16],"2016":[7,4,11],"2017":[2,11,8],"2018":[7,4,11],"2019":[8,4,9],"2020":[2,12,11],"2021":[7,4,18],"2022":[2,11,3],"2023":[7,4,18],"2024":[2,11,9],"2025":[12,4,18],"2026":[1,4,16],"2027":[2,5,3],"2028":[12,4,18],"2029":[1,4,16],"2030":[2,5,9],"2031":[2,1,104],"2032":[1,2,109],"2033":[2,3,37],"2034":[1,2,165],"2035":[1,2,93],"2036":[3,2,99],"2037":[4,5,73],"2038":[4,5,106],"2039":[6,5,31],"2040":[2,5,91],"2041":[2,2,72],"2042":[3,3,167],"2043":[5,3,42],"2044":[3,3,162],"2045":[6,3,37],"2046":[2,3,34],"2047":[1,2,36],"2048":[3,3,19],"2049":[4,3,1],"2050":[3,6,12],"2051":[2,6,75],"2052":[3,6,35],"2053":[4,6,25],"2054":[4,6,43],"2055":[2,6,24],"2056":[2,6,23],"2057":[1,6,17],"2058":[1,2,56],"2059":[5,2,50],"2060":[2,2,65],"2061":[2,2,52],"2062":[1,2,27],"2063":[1,3,90],"2064":[1,3,37],"2065":[1,1,34],"2066":[2,1,34],"2067":[2,1,32],"2068":[1,1,12],"2069":[1,1,34],"2070":[1,1,35],"2071":[1,1,37],"2072":[2,1,52],"2073":[1,2,32],"2074":[2,2,42],"2075":[1,2,89],"2076":[2,3,31],"2077":[1,2,1],"2078":[2,3,42],"2079":[2,3,34],"2080":[1,2,1],"2081":[6,3,16],"2082":[1,9,8],"2083":[11,3,13],"2084":[1,14,22],"2085":[7,3,23],"2086":[1,10,8],"2087":[12,3,26],"2088":[1,15,22],"2089":[6,3,6],"2090":[1,9,8],"2091":[7,3,22],"2092":[1,10,14],"2093":[7,3,22],"2094":[1,10,12],"2095":[7,3,21],"2096":[1,10,11],"2097":[7,3,16],"2098":[1,10,11],"2099":[5,3,15],"2100":[4,3,18],"2101":[6,3,18],"2102":[1,1,45],"2103":[4,1,33],"2104":[1,1,25],"2105":[1,1,47],"2106":[1,1,54],"2107":[1,1,58],"2108":[6,1,43],"2109":[1,6,32],"2110":[1,6,33],"2111":[1,6,43],"2112":[1,6,125],"2113":[2,6,104],"2114":[2,1,115],"2115":[2,2,21],"2116":[2,2,19],"2117":[2,4,49],"2118":[1,5,107],"2119":[2,4,42],"2120":[2,4,70],"2121":[2,2,31],"2122":[2,4,54],"2123":[2,4,29],"2124":[3,6,58],"2125":[4,6,128],"2126":[3,6,169],"2127":[3,6,46],"2128":[2,4,179],"2129":[3,4,145],"2130":[5,4,193],"2131":[3,4,208],"2132":[4,2,54],"2133":[2,6,87],"2134":[2,2,51],"2135":[3,1,1],"2136":[2,3,35],"2137":[1,3,89],"2138":[2,3,100],"2139":[3,3,125],"2140":[2,3,77],"2141":[2,3,101],"2142":[3,3,60],"2143":[1,3,191],"2144":[3,1,79],"2145":[4,3,105],"2146":[4,3,108],"2147":[2,7,123],"2148":[1,7,131],"2149":[5,7,118],"2150":[4,3,169],"2151":[2,3,12],"2152":[4,3,196],"2153":[2,3,153],"2154":[3,1,60],"2155":[1,3,70],"2156":[2,3,63],"2157":[2,3,72],"2158":[1,5,22],"2159":[13,1,1],"2160":[1,13,67],"2161":[5,13,240],"2162":[2,13,198],"2163":[1,13,1],"2164":[10,14,62],"2165":[2,14,33],"2166":[9,15,27],"2167":[12,15,75],"2168":[6,15,105],"2169":[7,15,335],"2170":[11,15,167],"2171":[12,15,233],"2172":[2,1,89],"2173":[1,2,25],"2174":[1,2,47],"2175":[1,2,38],"2176":[1,1,17],"2177":[1,1,55],"2178":[1,1,47],"2179":[2,1,67],"2180":[2,3,45],"2181":[2,1,148],"2182":[5,5,197],"2183":[2,1,246],"2184":[1,1,64],"2185":[1,1,1],"2186":[8,2,7],"2187":[2,10,7],"2188":[8,2,6],"2189":[1,10,8],"2190":[6,2,8],"2191":[7,2,8],"2192":[9,2,11],"2193":[1,11,7],"2194":[9,2,11],"2195":[1,11,7],"2196":[5,2,48],"2197":[5,2,40],"2198":[5,2,40],"2199":[8,2,18],"2200":[1,10,11],"2201":[8,2,7],"2202":[1,10,8],"2203":[7,2,16],"2204":[1,9,12],"2205":[2,9,8],"2206":[9,2,12],"2207":[1,11,10],"2208":[2,11,6],"2209":[7,2,12],"2210":[1,9,10],"2211":[4,2,5],"2212":[5,2,6],"2213":[2,7,6],"2214":[6,2,10],"2215":[2,8,7],"2216":[7,2,9],"2217":[1,9,17],"2218":[2,9,7],"2219":[6,2,9],"2220":[2,8,8],"2221":[4,2,11],"2222":[4,2,5],"2223":[4,2,10],"2224":[1,6,10],"2225":[5,1,49],"2226":[1,5,137],"2227":[2,5,20],"2228":[1,5,115],"2229":[5,1,89],"2230":[2,5,129],"2231":[2,7,108],"2232":[2,7,37],"2233":[1,5,120],"2234":[2,6,57],"2235":[1,5,132],"2236":[1,5,101],"2237":[1,5,110],"2238":[2,6,183],"2239":[2,6,18],"2240":[3,5,135],"2241":[2,8,55],"2242":[1,5,115],"2243":[2,5,101],"2244":[2,5,98],"2245":[1,5,107],"2246":[2,6,21],"2247":[1,5,104],"2248":[2,6,21],"2249":[4,5,116],"2250":[3,1,52],"2251":[1,3,14],"2252":[1,3,129],"2253":[1,3,1],"2254":[8,4,47],"2255":[6,1,232],"2256":[1,1,34],"2257":[3,1,32],"2258":[2,4,28],"2259":[3,4,95],"2260":[2,4,54],"2261":[4,1,70],"2262":[4,1,263],"2263":[3,4,338],"2264":[8,4,45],"2265":[3,1,1],"2266":[2,3,64],"2267":[3,3,72],"2268":[3,3,129],"2269":[3,6,69],"2270":[3,3,142],"2271":[5,5,36],"2272":[1,5,183],"2273":[3,6,184],"2274":[3,6,150],"2275":[4,3,75],"2276":[7,6,127],"2277":[6,3,132],"2278":[3,3,46],"2279":[3,3,180],"2280":[2,3,98],"2281":[4,3,37],"2282":[2,1,40],"2283":[12,2,6],"2284":[3,1,51],"2285":[2,1,1],"2286":[4,2,41],"2287":[3,2,15],"2288":[1,2,18],"2289":[1,2,35],"2290":[1,2,30],"2291":[5,2,24],"2292":[3,1,43],"2293":[3,3,47],"2294":[4,3,55],"2295":[2,3,85],"2296":[3,3,35],"2297":[2,5,39],"2298":[2,5,32],"2299":[2,5,139],"2300":[2,5,129],"2301":[6,5,59],"2302":[6,5,107],"2303":[3,3,80],"2304":[2,3,40],"2305":[4,4,125],"2306":[3,3,64],"2307":[4,3,45],"2308":[3,3,34],"2309":[2,3,82],"2310":[1,3,37],"2311":[5,1,267],"2312":[4,1,1],"2313":[5,4,45],"2314":[2,4,22],"2315":[3,4,27],"2316":[3,4,15],"2317":[2,4,54],"2318":[8,1,30],"2319":[2,8,41],"2320":[5,8,47],"2321":[5,8,57],"2322":[7,8,35],"2323":[6,8,48],"2324":[4,8,44],"2325":[6,8,77],"2326":[6,8,54],"2327":[3,1,92],"2328":[1,3,76],"2329":[4,4,33],"2330":[1,7,34],"2331":[5,4,37],"2332":[1,8,40],"2333":[5,4,32],"2334":[1,8,29],"2335":[3,4,62],"2336":[1,7,10],"2337":[1,4,10],"2338":[1,5,10],"2339":[2,4,34],"2340":[1,6,13],"2341":[1,3,49],"2342":[2,3,48],"2343":[2,5,53],"2344":[1,5,111],"2345":[3,5,32],"2346":[1,5,80],"2347":[3,3,195],"2348":[3,5,142],"2349":[5,3,79],"2350":[3,3,63],"2351":[1,5,73],"2352":[1,5,32],"2353":[1,5,212],"2354":[2,1,37],"2355":[2,2,507],"2356":[2,2,56],"2357":[2,2,54],"2358":[2,2,39],"2359":[1,2,22],"2360":[1,2,37],"2361":[1,2,19],"2362":[2,2,15],"2363":[2,2,35],"2364":[2,2,20],"2365":[1,2,44],"2366":[2,2,17],"2367":[2,2,82],"2368":[2,2,12],"2369":[2,2,44],"2370":[2,2,97],"2371":[1,2,284],"2372":[2,2,55],"2373":[1,2,54],"2374":[3,2,66],"2375":[3,2,31],"2376":[2,2,97],"2377":[3,2,54],"2378":[4,2,63],"2379":[3,2,33],"2380":[3,2,45],"2381":[2,2,21],"2382":[2,2,37],"2383":[2,2,43],"2384":[2,2,67],"2385":[2,1,31],"2386":[3,2,70],"2387":[2,2,28],"2388":[1,2,58],"2389":[2,2,26],"2390":[1,2,37],"2391":[1,2,50],"2392":[1,2,118],"2393":[2,2,146],"2394":[2,2,62],"2395":[2,2,34],"2396":[2,1,120],"2397":[4,1,41],"2398":[1,4,68],"2399":[1,4,57],"2400":[2,1,35],"2401":[3,2,99],"2402":[3,4,104],"2403":[4,4,79],"2404":[5,2,53],"2405":[1,7,121],"2406":[3,7,100],"2407":[2,10,154],"2408":[3,10,101],"2409":[3,1,44],"2410":[2,1,134],"2411":[1,2,162],"2412":[3,2,1],"2413":[3,4,77],"2414":[3,4,75],"2415":[5,4,49],"2416":[2,2,14],"2417":[3,1,113],"2418":[1,3,81],"2419":[2,3,26],"2420":[4,1,44],"2421":[7,4,83],"2422":[4,4,72],"2423":[8,4,92],"2424":[6,4,85],"2425":[3,4,91],"2426":[3,4,13],"2427":[2,1,95],"2428":[5,1,72],"2429":[1,5,61],"2430":[2,5,29],"2431":[3,7,89],"2432":[3,7,29],"2433":[4,7,29],"2434":[3,5,1],"2435":[3,8,59],"2436":[4,8,64],"2437":[5,8,111],"2438":[4,8,77],"2439":[3,8,64],"2440":[3,5,84],"2441":[3,1,126],"2442":[4,3,56],"2443":[8,3,59],"2444":[7,3,39],"2445":[3,3,99],"2446":[8,3,69],"2447":[5,3,39],"2448":[3,3,59],"2449":[3,1,16],"2450":[7,3,173],"2451":[6,3,47],"2452":[6,6,86],"2453":[3,6,69],"2454":[7,3,124],"2455":[4,3,80],"2456":[5,1,31],"2457":[2,5,79],"2458":[5,5,48],"2459":[1,8,35],"2460":[1,8,58],"2461":[1,8,34],"2462":[1,8,44],"2463":[1,8,52],"2464":[1,8,60],"2465":[1,8,13],"2466":[2,8,63],"2467":[1,8,33],"2468":[4,5,132],"2469":[5,5,92],"2470":[3,1,19],"2471":[7,1,1],"2472":[12,7,79],"2473":[7,1,70],"2474":[11,7,42],"2475":[3,7,128],"2476":[3,1,66],"2477":[3,3,227],"2478":[8,1,67],"2479":[4,8,124],"2480":[2,8,153],"2481":[3,8,25],"2482":[2,1,20],"2483":[2,2,25],"2484":[3,2,14],"2485":[3,2,22],"2486":[2,2,13],"2487":[3,1,1],"2488":[1,3,3],"2489":[1,3,3],"2490":[3,1,195],"2491":[1,3,139],"2492":[6,1,90],"2493":[1,1,1],"2494":[2,1,24],"2495":[1,1,34],"2496":[5,1,37],"2497":[5,5,82],"2498":[2,5,77],"2499":[4,5,19],"2500":[4,1,1],"2501":[3,4,80],"2502":[3,4,82],"2503":[8,1,79],"2504":[4,1,33],"2505":[1,4,1],"2506":[1,5,104],"2507":[3,5,28],"2508":[2,6,141],"2509":[4,4,37],"2510":[1,4,86],"2511":[5,1,18],"2512":[3,5,80],"2513":[7,1,291],"2514":[4,1,56],"2515":[3,4,39],"2516":[2,6,47],"2517":[4,6,56],"2518":[2,6,65],"2519":[2,6,66],"2520":[2,4,1],"2521":[2,5,40],"2522":[3,5,37],"2523":[4,1,96],"2524":[5,4,162],"2525":[5,4,93],"2526":[3,4,67],"2527":[2,1,16],"2528":[1,2,43],"2529":[1,2,65],"2530":[2,2,165],"2531":[3,1,33],"2532":[1,3,12],"2533":[2,4,73],"2534":[2,4,57],"2535":[5,3,39],"2536":[2,8,23],"2537":[2,8,23],"2538":[2,8,15],"2539":[6,3,89],"2540":[4,3,25],"2541":[4,6,110],"2542":[3,6,54],"2543":[3,3,78],"2544":[5,3,79],"2545":[3,3,57],"2546":[4,1,115],"2547":[5,4,1],"2548":[2,7,121],"2549":[3,7,66],"2550":[11,4,84],"2551":[7,4,34],"2552":[7,4,53],"2553":[5,1,148],"2554":[2,5,38],"2555":[2,5,43],"2556":[2,7,98],"2557":[2,7,65],"2558":[3,9,67],"2559":[2,7,63],"2560":[2,5,40],"2561":[2,7,16],"2562":[2,7,17],"2563":[2,1,44],"2564":[4,2,253],"2565":[2,2,101],"2566":[2,2,597],"2567":[2,2,194],"2568":[1,2,108],"2569":[2,2,102],"2570":[3,2,93],"2571":[2,1,91],"2572":[2,2,65],"2573":[2,1,154],"2574":[3,2,166],"2575":[4,2,240],"2576":[4,2,334],"2577":[4,2,517],"2578":[4,1,76],"2579":[2,4,31],"2580":[4,4,1],"2581":[4,5,71],"2582":[4,5,19],"2583":[4,4,13],"2584":[5,4,90],"2585":[3,1,98],"2586":[2,3,18],"2587":[3,3,130],"2588":[3,3,67],"2589":[3,3,58],"2590":[3,3,37],"2591":[3,3,27],"2592":[3,1,108],"2593":[2,3,68],"2594":[3,3,86],"2595":[3,3,70],"2596":[3,3,146],"2597":[3,3,72],"2598":[3,3,51],"2599":[3,3,42],"2600":[6,1,57],"2601":[10,1,39],"2602":[4,10,16],"2603":[7,13,51],"2604":[1,20,26],"2605":[8,13,76],"2606":[1,21,36],"2607":[5,10,78],"2608":[3,10,38],"2609":[3,10,14],"2610":[6,10,53],"2611":[3,10,60],"2612":[2,10,37],"2613":[6,1,13],"2614":[5,6,188],"2615":[4,6,190],"2616":[5,6,82],"2617":[3,6,50],"2618":[1,9,1],"2619":[3,10,40],"2620":[3,10,43],"2621":[4,1,1],"2622":[1,4,21],"2623":[1,4,18],"2624":[1,4,14],"2625":[1,4,27],"2626":[1,4,13],"2627":[1,4,23],"2628":[1,4,22],"2629":[1,4,16],"2630":[1,4,10],"2631":[1,4,14],"2632":[1,4,20],"2633":[2,4,23],"2634":[1,4,13],"2635":[1,4,7],"2636":[1,4,8],"2637":[1,4,23],"2638":[1,4,17],"2639":[2,4,22],"2640":[1,4,21],"2641":[2,4,15],"2642":[2,4,10],"2643":[1,4,19],"2644":[1,4,17],"2645":[2,4,29],"2646":[1,4,14],"2647":[1,4,21],"2648":[1,4,28],"2649":[1,4,21],"2650":[1,4,9],"2651":[1,4,21],"2652":[1,4,16],"2653":[5,4,17],"2654":[2,4,34],"2655":[1,4,28],"2656":[2,4,18],"2657":[1,4,21],"2658":[1,4,14],"2659":[1,4,18],"2660":[1,4,30],"2661":[3,4,28],"2662":[1,4,24],"2663":[2,4,23],"2664":[1,4,34],"2665":[1,4,25],"2666":[1,4,34],"2667":[2,4,24],"2668":[1,4,12],"2669":[5,4,13],"2670":[10,1,23],"2671":[3,1,102],"2672":[2,3,80],"2673":[2,3,42],"2674":[2,3,91],"2675":[1,3,33],"2676":[1,3,60],"2677":[1,3,77],"2678":[1,3,18],"2679":[1,3,28],"2680":[2,3,48],"2681":[1,3,19],"2682":[2,3,30],"2683":[1,3,49],"2684":[1,3,34],"2685":[1,3,34],"2686":[1,3,161],"2687":[2,3,41],"2688":[2,3,150],"2689":[1,3,90],"2690":[2,3,19],"2691":[2,3,26],"2692":[2,3,35],"2693":[3,3,36],"2694":[1,3,106],"2695":[2,3,163],"2696":[1,3,46],"2697":[2,3,127],"2698":[1,3,23],"2699":[1,3,98],"2700":[1,3,47],"2701":[3,1,111],"2702":[2,3,122],"2703":[2,3,158],"2704":[6,1,52],"2705":[3,6,174],"2706":[3,6,75],"2707":[2,6,51],"2708":[1,6,54],"2709":[2,6,62],"2710":[2,6,62],"2711":[2,6,131],"2712":[2,1,71],"2713":[2,1,23],"2714":[2,2,34],"2715":[2,2,11],"2716":[2,2,21],"2717":[3,1,1],"2718":[2,3,77],"2719":[4,3,129],"2720":[8,7,80],"2721":[6,7,39],"2722":[2,1,26],"2723":[2,1,70],"2724":[2,1,67],"2725":[2,1,71],"2726":[4,1,37],"2727":[2,4,105],"2728":[3,6,284],"2729":[5,4,101],"2730":[1,7,57],"2731":[4,8,31],"2732":[4,8,30],"2733":[4,8,28],"2734":[2,7,66],"2735":[2,7,184],"2736":[5,7,136],"2737":[3,4,142],"2738":[2,4,216],"2739":[2,6,42],"2740":[11,4,81],"2741":[9,4,32],"2742":[4,1,45],"2743":[1,4,108],"2744":[3,4,76],"2745":[2,7,98],"2746":[5,9,134],"2747":[2,9,74],"2748":[3,9,85],"2749":[2,9,146],"2750":[2,1,95],"2751":[4,2,39],"2752":[3,2,78],"2753":[7,2,145],"2754":[3,2,58],"2755":[3,2,45],"2756":[3,2,53],"2757":[2,1,181]},"averageFieldLength":[3.6276287164612038,4.963741841914431,52.99564902102971],"storedFields":{"0":{"title":"QMK Breaking Change - 2019 Aug 30","titles":[]},"1":{"title":"Core code formatting with clang-format","titles":["QMK Breaking Change - 2019 Aug 30"]},"2":{"title":"LUFA USB descriptor cleanup","titles":["QMK Breaking Change - 2019 Aug 30"]},"3":{"title":"Migrating ACTION_LAYER_MOMENTARY() entries in fn_actions to MO() keycodes","titles":["QMK Breaking Change - 2019 Aug 30"]},"4":{"title":"Update Atreus to current code conventions","titles":["QMK Breaking Change - 2019 Aug 30"]},"5":{"title":"Backport changes to keymap language files from ZSA fork","titles":["QMK Breaking Change - 2019 Aug 30"]},"6":{"title":"Update repo to use LUFA as a git submodule","titles":["QMK Breaking Change - 2019 Aug 30"]},"7":{"title":"Migrating ACTION_BACKLIGHT_*() entries in fn_actions to BL_ keycodes","titles":["QMK Breaking Change - 2019 Aug 30"]},"8":{"title":"Remove KC_DELT alias in favor of KC_DEL","titles":["QMK Breaking Change - 2019 Aug 30"]},"9":{"title":"QMK Breaking Change - 2020 Feb 29 Changelog","titles":[]},"10":{"title":"Update ChibiOS/ChibiOS-Contrib/uGFX submodules","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"11":{"title":"Fix ChibiOS timer overflow for 16-bit SysTick devices","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"12":{"title":"Update LUFA submodule","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"13":{"title":"Encoder flip","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"14":{"title":"Adding support for BACKLIGHT_ON_STATE for hardware PWM backlight","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"15":{"title":"Migrating ACTION_LAYER_TAP_KEY() entries in fn_actions to LT() keycodes","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"16":{"title":"Moving backlight keycode handling to process_keycode/","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"17":{"title":"Refactor Planck keymaps to use Layout Macros","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"18":{"title":"GON NerD codebase refactor","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"19":{"title":"QMK Breaking Change - 2020 May 30 Changelog","titles":[]},"20":{"title":"Core Changes","titles":["QMK Breaking Change - 2020 May 30 Changelog"]},"21":{"title":"Converting V-USB usbdrv to a submodule","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"22":{"title":"Unify Tap Hold functions and documentation","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"23":{"title":"Python Required In The Build Process","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"24":{"title":"Upgrade from tinyprintf to mpaland/printf","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"25":{"title":"Fixed RGB_DISABLE_AFTER_TIMEOUT to be seconds based & small internals cleanup","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"26":{"title":"Switch to qmk forks for everything","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"27":{"title":"code cleanup regarding deprecated macro PLAY_NOTE_ARRAY by replacing it with PLAY_SONG","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"28":{"title":"fixing wrong configuration of AUDIO feature","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"29":{"title":"Keyboard Refactors","titles":["QMK Breaking Change - 2020 May 30 Changelog"]},"30":{"title":"Migrating Lily58 to use split_common","titles":["QMK Breaking Change - 2020 May 30 Changelog","Keyboard Refactors"]},"31":{"title":"To migrate existing Lily58 firmware:","titles":["QMK Breaking Change - 2020 May 30 Changelog","Keyboard Refactors","Migrating Lily58 to use split_common"]},"32":{"title":"Refactor zinc to use split_common","titles":["QMK Breaking Change - 2020 May 30 Changelog","Keyboard Refactors"]},"33":{"title":"Refactor of TKC1800 to use common OLED code","titles":["QMK Breaking Change - 2020 May 30 Changelog","Keyboard Refactors"]},"34":{"title":"To migrate existing TKC1800 firmware:","titles":["QMK Breaking Change - 2020 May 30 Changelog","Keyboard Refactors","Refactor of TKC1800 to use common OLED code"]},"35":{"title":"Split HHKB to ANSI and JP layouts and Add VIA support for each","titles":["QMK Breaking Change - 2020 May 30 Changelog","Keyboard Refactors"]},"36":{"title":"Migrating existing HHKB keymaps","titles":["QMK Breaking Change - 2020 May 30 Changelog","Keyboard Refactors","Split HHKB to ANSI and JP layouts and Add VIA support for each"]},"37":{"title":"Keyboard Moves","titles":["QMK Breaking Change - 2020 May 30 Changelog"]},"38":{"title":"Keycode Migration PRs","titles":["QMK Breaking Change - 2020 May 30 Changelog"]},"39":{"title":"QMK Breaking Change - 2020 Aug 29 Changelog","titles":[]},"40":{"title":"Changes Requiring User Action","titles":["QMK Breaking Change - 2020 Aug 29 Changelog"]},"41":{"title":"Relocated Keyboards","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Changes Requiring User Action"]},"42":{"title":"The Key Company project consolidation (","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Changes Requiring User Action","Relocated Keyboards"]},"43":{"title":"relocating boards by flehrad to flehrad/ folder (","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Changes Requiring User Action","Relocated Keyboards"]},"44":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Changes Requiring User Action"]},"45":{"title":"Keebio RGB wiring update (","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Changes Requiring User Action","Updated Keyboard Codebases"]},"46":{"title":"Changes to Core Functionality","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Changes Requiring User Action"]},"47":{"title":"Core Changes","titles":["QMK Breaking Change - 2020 Aug 29 Changelog"]},"48":{"title":"Fixes","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Core Changes"]},"49":{"title":"Additions and Enhancements","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Core Changes"]},"50":{"title":"Clean-ups and Optimizations","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Core Changes"]},"51":{"title":"QMK Infrastructure and Internals","titles":["QMK Breaking Change - 2020 Aug 29 Changelog"]},"52":{"title":"QMK Breaking Change - 2020 Nov 28 Changelog","titles":[]},"53":{"title":"Changes Requiring User Action","titles":["QMK Breaking Change - 2020 Nov 28 Changelog"]},"54":{"title":"Relocated Keyboards","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Changes Requiring User Action"]},"55":{"title":"Reduce Helix keyboard build variation (","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Changes Requiring User Action","Relocated Keyboards"]},"56":{"title":"Update the Speedo firmware for v3.0 (","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Changes Requiring User Action","Relocated Keyboards"]},"57":{"title":"Maartenwut/Maarten name change to evyd13/Evy (","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Changes Requiring User Action","Relocated Keyboards"]},"58":{"title":"Xelus Valor and Dawn60 Refactors (","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Changes Requiring User Action","Relocated Keyboards"]},"59":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Changes Requiring User Action"]},"60":{"title":"AEboards EXT65 Refactor (","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Changes Requiring User Action","Updated Keyboard Codebases"]},"61":{"title":"Core Changes","titles":["QMK Breaking Change - 2020 Nov 28 Changelog"]},"62":{"title":"Fixes","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Core Changes"]},"63":{"title":"Additions and Enhancements","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Core Changes"]},"64":{"title":"Clean-ups and Optimizations","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Core Changes"]},"65":{"title":"QMK Infrastructure and Internals","titles":["QMK Breaking Change - 2020 Nov 28 Changelog"]},"66":{"title":"QMK Breaking Changes - 2021 February 27 Changelog","titles":[]},"67":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2021 February 27 Changelog"]},"68":{"title":"Core Changes","titles":["QMK Breaking Changes - 2021 February 27 Changelog"]},"69":{"title":"ChibiOS Update and Config Migration","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Core Changes"]},"70":{"title":"QMK Infrastructure and Internals","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Core Changes"]},"71":{"title":"Detailed Change List","titles":["QMK Breaking Changes - 2021 February 27 Changelog"]},"72":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Detailed Change List"]},"73":{"title":"Fixes","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Detailed Change List"]},"74":{"title":"Additions and Enhancements","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Detailed Change List"]},"75":{"title":"Clean-ups and Optimizations","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Detailed Change List"]},"76":{"title":"QMK Infrastructure and Internals","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Detailed Change List"]},"77":{"title":"ChibiOS Update and Config Migration","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Detailed Change List"]},"78":{"title":"QMK Breaking Changes - 2021 May 29 Changelog","titles":[]},"79":{"title":"Notable Changes","titles":["QMK Breaking Changes - 2021 May 29 Changelog"]},"80":{"title":"RGB Matrix support for split common (","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Notable Changes"]},"81":{"title":"Teensy 3.6 support (","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Notable Changes"]},"82":{"title":"New command: qmk console (","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Notable Changes"]},"83":{"title":"Improved command: qmk config","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Notable Changes"]},"84":{"title":"LED Matrix Improvements (","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Notable Changes"]},"85":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2021 May 29 Changelog"]},"86":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Changes Requiring User Action"]},"87":{"title":"Bootmagic Deprecation and Refactor (","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Changes Requiring User Action"]},"88":{"title":"Tentative Deprecation Schedule","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Changes Requiring User Action","Bootmagic Deprecation and Refactor ("]},"89":{"title":"Removal of LAYOUT_kc (","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Changes Requiring User Action"]},"90":{"title":"Encoder callbacks are now boolean (","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Changes Requiring User Action"]},"91":{"title":"Core Changes","titles":["QMK Breaking Changes - 2021 May 29 Changelog"]},"92":{"title":"Fixes","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Core Changes"]},"93":{"title":"Additions and Enhancements","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Core Changes"]},"94":{"title":"Clean-ups and Optimizations","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Core Changes"]},"95":{"title":"QMK Infrastructure and Internals","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Core Changes"]},"96":{"title":"QMK Breaking Changes - 2021 August 28 Changelog","titles":[]},"97":{"title":"Notable Features","titles":["QMK Breaking Changes - 2021 August 28 Changelog"]},"98":{"title":"Combo processing improvements (","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable Features"]},"99":{"title":"Key Overrides (","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable Features"]},"100":{"title":"Digitizer support (","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable Features"]},"101":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2021 August 28 Changelog"]},"102":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Changes Requiring User Action"]},"103":{"title":"Bootmagic Full Removal (","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Changes Requiring User Action"]},"104":{"title":"Bootmagic Full Deprecation Schedule","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Changes Requiring User Action","Bootmagic Full Removal ("]},"105":{"title":"DIP switch callbacks are now boolean (","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Changes Requiring User Action"]},"106":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2021 August 28 Changelog"]},"107":{"title":"Split transport improvements","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable core changes"]},"108":{"title":"Teensy 4.x support (","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable core changes"]},"109":{"title":"Data Driven Improvements (","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable core changes"]},"110":{"title":"Tags","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable core changes","Data Driven Improvements ("]},"111":{"title":"Dot Notation","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable core changes","Data Driven Improvements ("]},"112":{"title":"New configuration keys","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable core changes","Data Driven Improvements ("]},"113":{"title":"Codebase restructure and cleanup","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable core changes"]},"114":{"title":"Full changelist","titles":["QMK Breaking Changes - 2021 August 28 Changelog"]},"115":{"title":"QMK Breaking Changes - 2021 November 27 Changelog","titles":[]},"116":{"title":"2000 keyboards!","titles":["QMK Breaking Changes - 2021 November 27 Changelog"]},"117":{"title":"Notable Features","titles":["QMK Breaking Changes - 2021 November 27 Changelog"]},"118":{"title":"Expanded Pointing Device support (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Notable Features"]},"119":{"title":"Dynamic Tapping Term (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Notable Features"]},"120":{"title":"Macros in JSON keymaps (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Notable Features"]},"121":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2021 November 27 Changelog"]},"122":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Changes Requiring User Action"]},"123":{"title":"Squeezing space out of AVR (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Changes Requiring User Action"]},"124":{"title":"Require explicit enabling of RGB Matrix modes (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Changes Requiring User Action"]},"125":{"title":"OLED task refactoring (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Changes Requiring User Action"]},"126":{"title":"Bootmagic Full Removal (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Changes Requiring User Action"]},"127":{"title":"Bootmagic Full Deprecation Schedule: Complete!","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Changes Requiring User Action","Bootmagic Full Removal ("]},"128":{"title":"Remove QWIIC_DRIVERS (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Changes Requiring User Action"]},"129":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2021 November 27 Changelog"]},"130":{"title":"New MCU Support","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Notable core changes"]},"131":{"title":"EEPROM Changes","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Notable core changes"]},"132":{"title":"Compilation Database","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Notable core changes"]},"133":{"title":"Codebase restructure and cleanup","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Notable core changes"]},"134":{"title":"Full changelist","titles":["QMK Breaking Changes - 2021 November 27 Changelog"]},"135":{"title":"QMK Breaking Changes - 2022 February 26 Changelog","titles":[]},"136":{"title":"Notable Features","titles":["QMK Breaking Changes - 2022 February 26 Changelog"]},"137":{"title":"Default USB Polling rate now 1kHz (","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Notable Features"]},"138":{"title":"Split support for pointing devices (","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Notable Features"]},"139":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2022 February 26 Changelog"]},"140":{"title":"Legacy macro and action_function system removed (","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Changes Requiring User Action"]},"141":{"title":"Create a build error if no bootloader is specified (","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Changes Requiring User Action"]},"142":{"title":"Rename AdafruitBLE to BluefruitLE (","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Changes Requiring User Action"]},"143":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Changes Requiring User Action"]},"144":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2022 February 26 Changelog"]},"145":{"title":"New MCU Support","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Notable core changes"]},"146":{"title":"New Drivers","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Notable core changes"]},"147":{"title":"LED","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Notable core changes","New Drivers"]},"148":{"title":"GPIO","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Notable core changes","New Drivers"]},"149":{"title":"Full changelist","titles":["QMK Breaking Changes - 2022 February 26 Changelog"]},"150":{"title":"QMK Breaking Changes - 2022 May 28 Changelog","titles":[]},"151":{"title":"Notable Features","titles":["QMK Breaking Changes - 2022 May 28 Changelog"]},"152":{"title":"Caps Word (","titles":["QMK Breaking Changes - 2022 May 28 Changelog","Notable Features"]},"153":{"title":"Quantum Painter (","titles":["QMK Breaking Changes - 2022 May 28 Changelog","Notable Features"]},"154":{"title":"Encoder Mapping (","titles":["QMK Breaking Changes - 2022 May 28 Changelog","Notable Features"]},"155":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2022 May 28 Changelog"]},"156":{"title":"RESET => QK_BOOT (","titles":["QMK Breaking Changes - 2022 May 28 Changelog","Changes Requiring User Action"]},"157":{"title":"Sendstring keycode overhaul (","titles":["QMK Breaking Changes - 2022 May 28 Changelog","Changes Requiring User Action"]},"158":{"title":"Pillow Installation (","titles":["QMK Breaking Changes - 2022 May 28 Changelog","Changes Requiring User Action"]},"159":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2022 May 28 Changelog","Changes Requiring User Action"]},"160":{"title":"Full changelist","titles":["QMK Breaking Changes - 2022 May 28 Changelog"]},"161":{"title":"QMK Breaking Changes - 2022 August 27 Changelog","titles":[]},"162":{"title":"Notable Features","titles":["QMK Breaking Changes - 2022 August 27 Changelog"]},"163":{"title":"Add Raspberry Pi RP2040 support (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Notable Features"]},"164":{"title":"Allow qmk flash to use prebuilt firmware binaries (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Notable Features"]},"165":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2022 August 27 Changelog"]},"166":{"title":"Default layers dropped from 32 to 16 (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Changes Requiring User Action"]},"167":{"title":"RESET => QK_BOOT (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Changes Requiring User Action"]},"168":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Changes Requiring User Action"]},"169":{"title":"Data-driven USB IDs Refactoring (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Changes Requiring User Action"]},"170":{"title":"Deprecation Schedule","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Changes Requiring User Action","Data-driven USB IDs Refactoring ("]},"171":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2022 August 27 Changelog"]},"172":{"title":"Board converters (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Notable core changes"]},"173":{"title":"Add cli command to import keyboard|keymap|kbfirmware (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Notable core changes"]},"174":{"title":"Generic wear-leveling for EEPROM emulation (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Notable core changes"]},"175":{"title":"Pointing Device Improvements (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Notable core changes"]},"176":{"title":"Full changelist","titles":["QMK Breaking Changes - 2022 August 27 Changelog"]},"177":{"title":"QMK Breaking Changes - 2022 November 26 Changelog","titles":[]},"178":{"title":"Notable Features","titles":["QMK Breaking Changes - 2022 November 26 Changelog"]},"179":{"title":"Autocorrect (","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Notable Features"]},"180":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2022 November 26 Changelog"]},"181":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Changes Requiring User Action"]},"182":{"title":"Keycodes refactoring","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Changes Requiring User Action"]},"183":{"title":"Configuration Item Refactoring","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Changes Requiring User Action"]},"184":{"title":"Data-driven USB IDs Refactoring (","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Changes Requiring User Action"]},"185":{"title":"LED Indicator callback refactoring (","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Changes Requiring User Action"]},"186":{"title":"Unicode mode refactoring","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Changes Requiring User Action"]},"187":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2022 November 26 Changelog"]},"188":{"title":"Keycodes refactoring","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Notable core changes"]},"189":{"title":"Board Converters","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Notable core changes"]},"190":{"title":"Pointing and Digitizer device updates","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Notable core changes"]},"191":{"title":"Full changelist","titles":["QMK Breaking Changes - 2022 November 26 Changelog"]},"192":{"title":"QMK Breaking Changes - 2023 February 26 Changelog","titles":[]},"193":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2023 February 26 Changelog"]},"194":{"title":"IGNORE_MOD_TAP_INTERRUPT behaviour changes (","titles":["QMK Breaking Changes - 2023 February 26 Changelog","Changes Requiring User Action"]},"195":{"title":"TAPPING_FORCE_HOLD => QUICK_TAP_TERM (","titles":["QMK Breaking Changes - 2023 February 26 Changelog","Changes Requiring User Action"]},"196":{"title":"Leader Key Rework {#leader-key-rework (","titles":["QMK Breaking Changes - 2023 February 26 Changelog","Changes Requiring User Action"]},"197":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2023 February 26 Changelog","Changes Requiring User Action"]},"198":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2023 February 26 Changelog"]},"199":{"title":"Full changelist","titles":["QMK Breaking Changes - 2023 February 26 Changelog"]},"200":{"title":"QMK Breaking Changes - 2023 May 28 Changelog","titles":[]},"201":{"title":"Notable Changes","titles":["QMK Breaking Changes - 2023 May 28 Changelog"]},"202":{"title":"Repeat last key (","titles":["QMK Breaking Changes - 2023 May 28 Changelog","Notable Changes"]},"203":{"title":"User callback for pre process record (","titles":["QMK Breaking Changes - 2023 May 28 Changelog","Notable Changes"]},"204":{"title":"Consolidate modelm (","titles":["QMK Breaking Changes - 2023 May 28 Changelog","Notable Changes"]},"205":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2023 May 28 Changelog"]},"206":{"title":"IGNORE_MOD_TAP_INTERRUPT behaviour changes (","titles":["QMK Breaking Changes - 2023 May 28 Changelog","Changes Requiring User Action"]},"207":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2023 May 28 Changelog","Changes Requiring User Action"]},"208":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2023 May 28 Changelog"]},"209":{"title":"Encoder functionality fallback (","titles":["QMK Breaking Changes - 2023 May 28 Changelog","Notable core changes"]},"210":{"title":"OLED Driver Improvements (","titles":["QMK Breaking Changes - 2023 May 28 Changelog","Notable core changes"]},"211":{"title":"Full changelist","titles":["QMK Breaking Changes - 2023 May 28 Changelog"]},"212":{"title":"QMK Breaking Changes - 2023 Aug 27 Changelog","titles":[]},"213":{"title":"Notable Changes","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog"]},"214":{"title":"RGB Matrix optimizations (","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog","Notable Changes"]},"215":{"title":"Audio optimizations (","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog","Notable Changes"]},"216":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog"]},"217":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog","Changes Requiring User Action"]},"218":{"title":"Remove encoder in-matrix workaround code (","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog","Changes Requiring User Action"]},"219":{"title":"Unicodemap keycodes rename (","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog","Changes Requiring User Action"]},"220":{"title":"Remove old OLED API code (","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog","Changes Requiring User Action"]},"221":{"title":"Driver naming consolidation (","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog","Changes Requiring User Action"]},"222":{"title":"Full changelist","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog"]},"223":{"title":"QMK Breaking Changes - 2023 November 26 Changelog","titles":[]},"224":{"title":"Notable Features","titles":["QMK Breaking Changes - 2023 November 26 Changelog"]},"225":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2023 November 26 Changelog"]},"226":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Changes Requiring User Action"]},"227":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2023 November 26 Changelog"]},"228":{"title":"External Userspace (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"229":{"title":"Improve and Cleanup Shutdown callbacks (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"230":{"title":"OLED Force Flush (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"231":{"title":"Switch statement helpers for keycode ranges (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"232":{"title":"Quantum Painter OLED support (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"233":{"title":"RGB/LED lighting driver naming and cleanup (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"234":{"title":"Peripheral subsystem enabling (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"235":{"title":"NKRO on V-USB boards (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"236":{"title":"Full changelist","titles":["QMK Breaking Changes - 2023 November 26 Changelog"]},"237":{"title":"QMK Breaking Changes - 2024 February 25 Changelog","titles":[]},"238":{"title":"Notable Features","titles":["QMK Breaking Changes - 2024 February 25 Changelog"]},"239":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2024 February 25 Changelog"]},"240":{"title":"Windows Driver Changes (","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Changes Requiring User Action"]},"241":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Changes Requiring User Action"]},"242":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2024 February 25 Changelog"]},"243":{"title":"Renaming Arduino-style GPIO pin functions (","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Notable core changes"]},"244":{"title":"I2C driver API Changes (","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Notable core changes"]},"245":{"title":"Renaming Bootmagic Lite => Bootmagic (","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Notable core changes"]},"246":{"title":"Threshold for automatic mouse layer activation (","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Notable core changes"]},"247":{"title":"DIP Switch Mapping (","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Notable core changes"]},"248":{"title":"Quantum Painter updates (","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Notable core changes"]},"249":{"title":"Full changelist","titles":["QMK Breaking Changes - 2024 February 25 Changelog"]},"250":{"title":"QMK Breaking Changes - 2024 May 26 Changelog","titles":[]},"251":{"title":"Notable Features","titles":["QMK Breaking Changes - 2024 May 26 Changelog"]},"252":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2024 May 26 Changelog"]},"253":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action"]},"254":{"title":"Remove deprecated quantum keycodes (","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action"]},"255":{"title":"P3D Spacey Layout Updates (","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action"]},"256":{"title":"MechKeys ACR60 Layout Updates (","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action"]},"257":{"title":"LAYOUT_hhkb","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action","MechKeys ACR60 Layout Updates ("]},"258":{"title":"LAYOUT_true_hhkb","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action","MechKeys ACR60 Layout Updates ("]},"259":{"title":"LAYOUT_directional","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action","MechKeys ACR60 Layout Updates ("]},"260":{"title":"LAYOUT_mitchsplit","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action","MechKeys ACR60 Layout Updates ("]},"261":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2024 May 26 Changelog"]},"262":{"title":"Introduction of keyboard.json (","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Notable core changes"]},"263":{"title":"Refactor ChibiOS USB endpoints to be fully async (","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Notable core changes"]},"264":{"title":"Deprecation Notices","titles":["QMK Breaking Changes - 2024 May 26 Changelog"]},"265":{"title":"Migration of VIA keymaps to VIA team control","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Deprecation Notices"]},"266":{"title":"Full changelist","titles":["QMK Breaking Changes - 2024 May 26 Changelog"]},"267":{"title":"QMK Breaking Changes - 2024 August 25 Changelog","titles":[]},"268":{"title":"Notable Features","titles":["QMK Breaking Changes - 2024 August 25 Changelog"]},"269":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2024 August 25 Changelog"]},"270":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2024 August 25 Changelog","Changes Requiring User Action"]},"271":{"title":"SparkFun Pro Micro RP2040 converter renamed (","titles":["QMK Breaking Changes - 2024 August 25 Changelog","Changes Requiring User Action"]},"272":{"title":"Key Override keymap.c signature change (","titles":["QMK Breaking Changes - 2024 August 25 Changelog","Changes Requiring User Action"]},"273":{"title":"ADNS9800 and PMW33xx firmware upload now opt-in (","titles":["QMK Breaking Changes - 2024 August 25 Changelog","Changes Requiring User Action"]},"274":{"title":"Deprecation Notices","titles":["QMK Breaking Changes - 2024 August 25 Changelog"]},"275":{"title":"Migration of VIA keymaps to VIA team control","titles":["QMK Breaking Changes - 2024 August 25 Changelog","Deprecation Notices"]},"276":{"title":"ADNS9800 and PMW33xx sensor firmware ROM removal","titles":["QMK Breaking Changes - 2024 August 25 Changelog","Deprecation Notices"]},"277":{"title":"Full changelist","titles":["QMK Breaking Changes - 2024 August 25 Changelog"]},"278":{"title":"Documentation Capabilities","titles":[]},"279":{"title":"Overall capabilities","titles":["Documentation Capabilities"]},"280":{"title":"Dividing lines","titles":["Documentation Capabilities","Overall capabilities"]},"281":{"title":"Images","titles":["Documentation Capabilities","Overall capabilities"]},"282":{"title":"Lists","titles":["Documentation Capabilities","Overall capabilities"]},"283":{"title":"Emoji","titles":["Documentation Capabilities","Overall capabilities"]},"284":{"title":"Direct:","titles":["Documentation Capabilities","Overall capabilities","Emoji"]},"285":{"title":"As colon-name-colon:","titles":["Documentation Capabilities","Overall capabilities","Emoji"]},"286":{"title":"XML Entities","titles":["Documentation Capabilities","Overall capabilities"]},"287":{"title":"Styling","titles":["Documentation Capabilities"]},"288":{"title":"CSS-ish","titles":["Documentation Capabilities","Styling"]},"289":{"title":"Tables","titles":["Documentation Capabilities","Styling"]},"290":{"title":"Indented sections","titles":["Documentation Capabilities","Styling"]},"291":{"title":"Keyboard keys","titles":["Documentation Capabilities","Styling"]},"292":{"title":"Code Blocks","titles":["Documentation Capabilities","Styling"]},"293":{"title":"Sub/Superscript","titles":["Documentation Capabilities","Styling"]},"294":{"title":"Tabs","titles":["Documentation Capabilities","Styling"]},"295":{"title":"** Tab one **","titles":["Documentation Capabilities","Styling","Tabs"]},"296":{"title":"** Nested one **","titles":["Documentation Capabilities","Styling","Tabs","** Tab one **"]},"297":{"title":"** Nested two **","titles":["Documentation Capabilities","Styling","Tabs","** Tab one **"]},"298":{"title":"** Tab two **","titles":["Documentation Capabilities","Styling","Tabs"]},"299":{"title":"** Tab three **","titles":["Documentation Capabilities","Styling","Tabs"]},"300":{"title":"Details sections","titles":["Documentation Capabilities"]},"301":{"title":"Embed","titles":["Documentation Capabilities"]},"302":{"title":"Development Environment Setup","titles":[]},"303":{"title":"QMK Compiler Development Guide","titles":[]},"304":{"title":"Overview","titles":[]},"305":{"title":"Workers","titles":[]},"306":{"title":"API Service","titles":[]},"307":{"title":"@app.route('/v1/compile', methods=['POST'])","titles":["API Service"]},"308":{"title":"@app.route('/v1/compile/<string:job_id>', methods=['GET'])","titles":["API Service"]},"309":{"title":"@app.route('/v1/compile/<string:job_id>/download', methods=['GET'])","titles":["API Service"]},"310":{"title":"@app.route('/v1/compile/<string:job_id>/source', methods=['GET'])","titles":["API Service"]},"311":{"title":"QMK API","titles":[]},"312":{"title":"Overview","titles":["QMK API"]},"313":{"title":"Example JSON Payload:","titles":["QMK API","Overview"]},"314":{"title":"Submitting a Compile Job","titles":["QMK API"]},"315":{"title":"Checking The Status","titles":["QMK API"]},"316":{"title":"Examining Finished Results","titles":["QMK API"]},"317":{"title":"Constants","titles":["QMK API"]},"318":{"title":"QMK API","titles":[]},"319":{"title":"App Developers","titles":["QMK API"]},"320":{"title":"Keyboard Maintainers","titles":["QMK API"]},"321":{"title":"Backend Developers","titles":["QMK API"]},"322":{"title":"ARM Debugging using Eclipse","titles":[]},"323":{"title":"Installing the software","titles":["ARM Debugging using Eclipse"]},"324":{"title":"The xPack Manager","titles":["ARM Debugging using Eclipse","Installing the software"]},"325":{"title":"The ARM Toolchain","titles":["ARM Debugging using Eclipse","Installing the software"]},"326":{"title":"Windows build tools","titles":["ARM Debugging using Eclipse","Installing the software"]},"327":{"title":"Programmer/Debugger Drivers","titles":["ARM Debugging using Eclipse","Installing the software"]},"328":{"title":"OpenOCD","titles":["ARM Debugging using Eclipse","Installing the software"]},"329":{"title":"Java","titles":["ARM Debugging using Eclipse","Installing the software"]},"330":{"title":"GNU MCU Eclipse IDE","titles":["ARM Debugging using Eclipse","Installing the software"]},"331":{"title":"Configuring Eclipse","titles":["ARM Debugging using Eclipse"]},"332":{"title":"Building","titles":["ARM Debugging using Eclipse"]},"333":{"title":"Debugging","titles":["ARM Debugging using Eclipse"]},"334":{"title":"Connecting the Debugger","titles":["ARM Debugging using Eclipse","Debugging"]},"335":{"title":"Configuring the Debugger","titles":["ARM Debugging using Eclipse","Debugging"]},"336":{"title":"Running the Debugger.","titles":["ARM Debugging using Eclipse","Debugging"]},"337":{"title":"Breaking Changes","titles":[]},"338":{"title":"What has been included in past Breaking Changes?","titles":["Breaking Changes"]},"339":{"title":"When is the next Breaking Change?","titles":["Breaking Changes"]},"340":{"title":"Important Dates","titles":["Breaking Changes","When is the next Breaking Change?"]},"341":{"title":"What changes will be included?","titles":["Breaking Changes"]},"342":{"title":"Checklists","titles":["Breaking Changes"]},"343":{"title":"4 Weeks Before Merge","titles":["Breaking Changes","Checklists"]},"344":{"title":"2 Weeks Before Merge","titles":["Breaking Changes","Checklists"]},"345":{"title":"1 Week Before Merge","titles":["Breaking Changes","Checklists"]},"346":{"title":"2 Days Before Merge","titles":["Breaking Changes","Checklists"]},"347":{"title":"Day Of Merge","titles":["Breaking Changes","Checklists"]},"348":{"title":"Post-merge operations","titles":["Breaking Changes"]},"349":{"title":"Updating the develop branch","titles":["Breaking Changes","Post-merge operations"]},"350":{"title":"Set up Discord events for the next cycle","titles":["Breaking Changes","Post-merge operations"]},"351":{"title":"Past Breaking Changes","titles":[]},"352":{"title":"Breaking Changes: My Pull Request Was Flagged","titles":[]},"353":{"title":"What Do I Do?","titles":["Breaking Changes: My Pull Request Was Flagged"]},"354":{"title":"Consider Splitting Up Your PR","titles":["Breaking Changes: My Pull Request Was Flagged","What Do I Do?"]},"355":{"title":"Document Your Changes","titles":["Breaking Changes: My Pull Request Was Flagged","What Do I Do?"]},"356":{"title":"Ask for Help","titles":["Breaking Changes: My Pull Request Was Flagged","What Do I Do?"]},"357":{"title":"ChibiOS Upgrade Procedure","titles":[]},"358":{"title":"Getting ChibiOS","titles":["ChibiOS Upgrade Procedure"]},"359":{"title":"Getting ChibiOS-Contrib","titles":["ChibiOS Upgrade Procedure"]},"360":{"title":"Updating submodules","titles":["ChibiOS Upgrade Procedure"]},"361":{"title":"When merging a PR containing an upgrade of ChibiOS/ChibiOS-Contrib:","titles":["ChibiOS Upgrade Procedure"]},"362":{"title":"QMK CLI","titles":[]},"363":{"title":"Overview","titles":["QMK CLI"]},"364":{"title":"Requirements","titles":["QMK CLI","Overview"]},"365":{"title":"Install Using Homebrew (macOS, some Linux)","titles":["QMK CLI","Overview"]},"366":{"title":"Install Using pip","titles":["QMK CLI","Overview"]},"367":{"title":"Packaging For Other Operating Systems","titles":["QMK CLI","Overview"]},"368":{"title":"QMK CLI Commands","titles":[]},"369":{"title":"User Commands","titles":[]},"370":{"title":"qmk compile","titles":["User Commands"]},"371":{"title":"qmk flash","titles":["User Commands"]},"372":{"title":"qmk config","titles":["User Commands"]},"373":{"title":"qmk cd","titles":["User Commands"]},"374":{"title":"qmk find","titles":["User Commands"]},"375":{"title":"qmk console","titles":["User Commands"]},"376":{"title":"qmk doctor","titles":["User Commands"]},"377":{"title":"qmk format-json","titles":["User Commands"]},"378":{"title":"qmk info","titles":["User Commands"]},"379":{"title":"qmk json2c","titles":["User Commands"]},"380":{"title":"qmk c2json","titles":["User Commands"]},"381":{"title":"qmk lint","titles":["User Commands"]},"382":{"title":"qmk list-keyboards","titles":["User Commands"]},"383":{"title":"qmk list-keymaps","titles":["User Commands"]},"384":{"title":"qmk migrate","titles":["User Commands"]},"385":{"title":"qmk new-keyboard","titles":["User Commands"]},"386":{"title":"qmk new-keymap","titles":["User Commands"]},"387":{"title":"qmk clean","titles":["User Commands"]},"388":{"title":"qmk via2json","titles":["User Commands"]},"389":{"title":"qmk import-keyboard","titles":["User Commands"]},"390":{"title":"qmk import-keymap","titles":["User Commands"]},"391":{"title":"qmk import-kbfirmware","titles":["User Commands"]},"392":{"title":"External Userspace Commands","titles":[]},"393":{"title":"qmk userspace-add","titles":["External Userspace Commands"]},"394":{"title":"qmk userspace-remove","titles":["External Userspace Commands"]},"395":{"title":"qmk userspace-list","titles":["External Userspace Commands"]},"396":{"title":"qmk userspace-compile","titles":["External Userspace Commands"]},"397":{"title":"qmk userspace-doctor","titles":["External Userspace Commands"]},"398":{"title":"Developer Commands","titles":[]},"399":{"title":"qmk format-text","titles":["Developer Commands"]},"400":{"title":"qmk format-c","titles":["Developer Commands"]},"401":{"title":"qmk generate-compilation-database","titles":["Developer Commands"]},"402":{"title":"qmk docs","titles":["Developer Commands"]},"403":{"title":"qmk generate-docs","titles":["Developer Commands"]},"404":{"title":"qmk generate-rgb-breathe-table","titles":["Developer Commands"]},"405":{"title":"qmk kle2json","titles":["Developer Commands"]},"406":{"title":"qmk format-python","titles":["Developer Commands"]},"407":{"title":"qmk pytest","titles":["Developer Commands"]},"408":{"title":"qmk painter-convert-graphics","titles":["Developer Commands"]},"409":{"title":"qmk painter-make-font-image","titles":["Developer Commands"]},"410":{"title":"qmk painter-convert-font-image","titles":["Developer Commands"]},"411":{"title":"qmk test-c","titles":["Developer Commands"]},"412":{"title":"QMK CLI Configuration","titles":[]},"413":{"title":"Introduction","titles":[]},"414":{"title":"Simple Example","titles":["Introduction"]},"415":{"title":"Setting User Defaults","titles":["Introduction"]},"416":{"title":"CLI Documentation (qmk config)","titles":[]},"417":{"title":"Setting Configuration Values","titles":["CLI Documentation (qmk config)"]},"418":{"title":"Reading Configuration Values","titles":["CLI Documentation (qmk config)"]},"419":{"title":"Entire Configuration Example","titles":["CLI Documentation (qmk config)","Reading Configuration Values"]},"420":{"title":"Whole Section Example","titles":["CLI Documentation (qmk config)","Reading Configuration Values"]},"421":{"title":"Single Key Example","titles":["CLI Documentation (qmk config)","Reading Configuration Values"]},"422":{"title":"Multiple Keys Example","titles":["CLI Documentation (qmk config)","Reading Configuration Values"]},"423":{"title":"Deleting Configuration Values","titles":["CLI Documentation (qmk config)"]},"424":{"title":"Multiple Operations","titles":["CLI Documentation (qmk config)"]},"425":{"title":"User Configuration Options","titles":[]},"426":{"title":"All Configuration Options","titles":[]},"427":{"title":"QMK CLI Development","titles":[]},"428":{"title":"Overview","titles":[]},"429":{"title":"Developer mode:","titles":["Overview"]},"430":{"title":"Subcommands","titles":[]},"431":{"title":"User Interaction","titles":[]},"432":{"title":"Printing Text","titles":["User Interaction"]},"433":{"title":"Logging (cli.log)","titles":["User Interaction","Printing Text"]},"434":{"title":"Printing (cli.echo)","titles":["User Interaction","Printing Text"]},"435":{"title":"Colorizing Text","titles":["User Interaction","Printing Text"]},"436":{"title":"Arguments and Configuration","titles":[]},"437":{"title":"Reading Configuration Values","titles":["Arguments and Configuration"]},"438":{"title":"Setting Configuration Values","titles":["Arguments and Configuration"]},"439":{"title":"Deleting Configuration Values","titles":["Arguments and Configuration"]},"440":{"title":"Writing The Configuration File","titles":["Arguments and Configuration"]},"441":{"title":"Excluding Arguments From Configuration","titles":["Arguments and Configuration"]},"442":{"title":"Testing, and Linting, and Formatting (oh my!)","titles":[]},"443":{"title":"Testing and Linting","titles":["Testing, and Linting, and Formatting (oh my!)"]},"444":{"title":"Formatting","titles":["Testing, and Linting, and Formatting (oh my!)"]},"445":{"title":"Formatting Details","titles":["Testing, and Linting, and Formatting (oh my!)"]},"446":{"title":"Testing Details","titles":["Testing, and Linting, and Formatting (oh my!)"]},"447":{"title":"Linting Details","titles":["Testing, and Linting, and Formatting (oh my!)"]},"448":{"title":"Tab Completion for QMK","titles":[]},"449":{"title":"Setup","titles":["Tab Completion for QMK"]},"450":{"title":"For Your User Only","titles":["Tab Completion for QMK","Setup"]},"451":{"title":"System Wide Symlink","titles":["Tab Completion for QMK","Setup"]},"452":{"title":"System Wide Copy","titles":["Tab Completion for QMK","Setup"]},"453":{"title":"Coding Conventions (C)","titles":[]},"454":{"title":"Auto-formatting with clang-format","titles":[]},"455":{"title":"Coding Conventions (Python)","titles":[]},"456":{"title":"YAPF","titles":[]},"457":{"title":"Imports","titles":[]},"458":{"title":"Import Examples","titles":["Imports"]},"459":{"title":"Statements","titles":[]},"460":{"title":"Naming","titles":[]},"461":{"title":"Names to Avoid","titles":["Naming"]},"462":{"title":"Docstrings","titles":[]},"463":{"title":"Simple docstring example","titles":["Docstrings"]},"464":{"title":"Complex docstring example","titles":["Docstrings"]},"465":{"title":"Function arguments docstring example","titles":["Docstrings"]},"466":{"title":"Exceptions","titles":[]},"467":{"title":"Tuples","titles":[]},"468":{"title":"Lists and Dictionaries","titles":[]},"469":{"title":"Parentheses","titles":[]},"470":{"title":"Format Strings","titles":[]},"471":{"title":"Comprehensions & Generator Expressions","titles":[]},"472":{"title":"Lambdas","titles":[]},"473":{"title":"Conditional Expressions","titles":[]},"474":{"title":"Default Argument Values","titles":[]},"475":{"title":"Properties","titles":[]},"476":{"title":"True/False Evaluations","titles":[]},"477":{"title":"Decorators","titles":[]},"478":{"title":"Threading and Multiprocessing","titles":[]},"479":{"title":"Power Features","titles":[]},"480":{"title":"Type Annotated Code","titles":[]},"481":{"title":"Function length","titles":[]},"482":{"title":"FIXMEs","titles":[]},"483":{"title":"Testing","titles":[]},"484":{"title":"Integration Tests","titles":["Testing"]},"485":{"title":"Unit Tests","titles":["Testing"]},"486":{"title":"Compatible Microcontrollers","titles":[]},"487":{"title":"Atmel AVR","titles":["Compatible Microcontrollers"]},"488":{"title":"ARM","titles":["Compatible Microcontrollers"]},"489":{"title":"STMicroelectronics (STM32)","titles":["Compatible Microcontrollers","ARM"]},"490":{"title":"WestBerryTech (WB32)","titles":["Compatible Microcontrollers","ARM"]},"491":{"title":"NXP (Kinetis)","titles":["Compatible Microcontrollers","ARM"]},"492":{"title":"Raspberry Pi","titles":["Compatible Microcontrollers","ARM"]},"493":{"title":"Atmel ATSAM","titles":["Compatible Microcontrollers"]},"494":{"title":"RISC-V","titles":["Compatible Microcontrollers"]},"495":{"title":"GigaDevice","titles":["Compatible Microcontrollers","RISC-V"]},"496":{"title":"Configuring QMK","titles":[]},"497":{"title":"QMK Default","titles":["Configuring QMK"]},"498":{"title":"Keyboard","titles":["Configuring QMK"]},"499":{"title":"Folders","titles":["Configuring QMK"]},"500":{"title":"Keymap","titles":["Configuring QMK"]},"501":{"title":"The config.h File","titles":[]},"502":{"title":"Hardware Options","titles":["The config.h File"]},"503":{"title":"Features That Can Be Disabled","titles":["The config.h File"]},"504":{"title":"Features That Can Be Enabled","titles":["The config.h File"]},"505":{"title":"Behaviors That Can Be Configured","titles":["The config.h File"]},"506":{"title":"RGB Light Configuration","titles":["The config.h File"]},"507":{"title":"Mouse Key Options","titles":["The config.h File"]},"508":{"title":"Split Keyboard Options","titles":["The config.h File"]},"509":{"title":"Setting Handedness","titles":["The config.h File","Split Keyboard Options"]},"510":{"title":"Defines for handedness","titles":["The config.h File","Split Keyboard Options","Setting Handedness"]},"511":{"title":"Other Options","titles":["The config.h File","Split Keyboard Options"]},"512":{"title":"The rules.mk File","titles":[]},"513":{"title":"Build Options","titles":["The rules.mk File"]},"514":{"title":"AVR MCU Options","titles":["The rules.mk File"]},"515":{"title":"Feature Options","titles":["The rules.mk File"]},"516":{"title":"USB Endpoint Limitations","titles":["The rules.mk File"]},"517":{"title":"QMK Configurator Architecture","titles":[]},"518":{"title":"Overview","titles":[]},"519":{"title":"Detailed Description","titles":[]},"520":{"title":"Configurator Frontend","titles":["Detailed Description"]},"521":{"title":"Keyboard Metadata","titles":["Detailed Description"]},"522":{"title":"QMK API","titles":["Detailed Description"]},"523":{"title":"Compile Job Queued","titles":["Detailed Description","QMK API"]},"524":{"title":"Compile Job Running","titles":["Detailed Description","QMK API"]},"525":{"title":"Compile Job Finished","titles":["Detailed Description","QMK API"]},"526":{"title":"Redis/RQ","titles":["Detailed Description"]},"527":{"title":"QMK Compiler","titles":["Detailed Description"]},"528":{"title":"Adding Default Keymaps to QMK Configurator","titles":[]},"529":{"title":"Technical Information","titles":["Adding Default Keymaps to QMK Configurator"]},"530":{"title":"Example","titles":["Adding Default Keymaps to QMK Configurator"]},"531":{"title":"Caveats","titles":["Adding Default Keymaps to QMK Configurator"]},"532":{"title":"Layers can only be referenced by number","titles":["Adding Default Keymaps to QMK Configurator","Caveats"]},"533":{"title":"No support for custom code of any kind","titles":["Adding Default Keymaps to QMK Configurator","Caveats"]},"534":{"title":"Limited Support for Custom keycodes","titles":["Adding Default Keymaps to QMK Configurator","Caveats"]},"535":{"title":"Additional Reading","titles":["Adding Default Keymaps to QMK Configurator"]},"536":{"title":"QMK Configurator: Step by Step","titles":[]},"537":{"title":"Step 1: Select Your Keyboard","titles":["QMK Configurator: Step by Step"]},"538":{"title":"Step 2: Select Your Keyboard Layout","titles":["QMK Configurator: Step by Step"]},"539":{"title":"Step 3: Name Your Keymap","titles":["QMK Configurator: Step by Step"]},"540":{"title":"Step 4: Define Your Keymap","titles":["QMK Configurator: Step by Step"]},"541":{"title":"Step 5: Save Your Keymap for Future Changes","titles":["QMK Configurator: Step by Step"]},"542":{"title":"Step 6: Compile Your Firmware File","titles":["QMK Configurator: Step by Step"]},"543":{"title":"Next steps: Flashing Your Keyboard","titles":["QMK Configurator: Step by Step"]},"544":{"title":"Configurator Troubleshooting","titles":[]},"545":{"title":"My .json file is not working","titles":["Configurator Troubleshooting"]},"546":{"title":"There are extra spaces in my layout? What do I do?","titles":["Configurator Troubleshooting"]},"547":{"title":"What is the keycode for...","titles":["Configurator Troubleshooting"]},"548":{"title":"It won't compile","titles":["Configurator Troubleshooting"]},"549":{"title":"Problems and Bugs","titles":["Configurator Troubleshooting"]},"550":{"title":"How to Contribute","titles":[]},"551":{"title":"I Don't Want to Read This Whole Thing! I Just Have a Question!","titles":["How to Contribute"]},"552":{"title":"Project Overview","titles":[]},"553":{"title":"Where Can I Go for Help?","titles":[]},"554":{"title":"How Do I Make a Contribution?","titles":[]},"555":{"title":"Coding Conventions","titles":[]},"556":{"title":"General Guidelines","titles":[]},"557":{"title":"Documentation","titles":["General Guidelines"]},"558":{"title":"Previewing the Documentation","titles":["General Guidelines","Documentation"]},"559":{"title":"Keyboards","titles":["General Guidelines"]},"560":{"title":"Quantum/TMK Core","titles":["General Guidelines"]},"561":{"title":"Refactoring","titles":["General Guidelines"]},"562":{"title":"What Does the Code of Conduct Mean for Me?","titles":[]},"563":{"title":"Custom Matrix","titles":[]},"564":{"title":"Prerequisites","titles":["Custom Matrix"]},"565":{"title":"'lite'","titles":["Custom Matrix"]},"566":{"title":"Full Replacement","titles":["Custom Matrix"]},"567":{"title":"How to Customize Your Keyboard's Behavior","titles":[]},"568":{"title":"A Word on Core vs Keyboards vs Keymap","titles":["How to Customize Your Keyboard's Behavior"]},"569":{"title":"Custom Keycodes","titles":[]},"570":{"title":"Defining a New Keycode","titles":["Custom Keycodes"]},"571":{"title":"Programming the Behavior of Any Keycode","titles":["Custom Keycodes"]},"572":{"title":"Example process_record_user() Implementation","titles":["Custom Keycodes","Programming the Behavior of Any Keycode"]},"573":{"title":"process_record_* Function Documentation","titles":["Custom Keycodes","Programming the Behavior of Any Keycode"]},"574":{"title":"Keyboard Initialization Code","titles":[]},"575":{"title":"Keyboard Pre Initialization code","titles":["Keyboard Initialization Code"]},"576":{"title":"Example keyboard_pre_init_user() Implementation","titles":["Keyboard Initialization Code","Keyboard Pre Initialization code"]},"577":{"title":"keyboard_pre_init_* Function Documentation","titles":["Keyboard Initialization Code","Keyboard Pre Initialization code"]},"578":{"title":"Matrix Initialization Code","titles":["Keyboard Initialization Code"]},"579":{"title":"matrix_init_* Function Documentation","titles":["Keyboard Initialization Code","Matrix Initialization Code"]},"580":{"title":"Low-level Matrix Overrides Function Documentation","titles":["Keyboard Initialization Code","Matrix Initialization Code"]},"581":{"title":"Keyboard Post Initialization code","titles":["Keyboard Initialization Code"]},"582":{"title":"Example keyboard_post_init_user() Implementation","titles":["Keyboard Initialization Code","Keyboard Post Initialization code"]},"583":{"title":"keyboard_post_init_* Function Documentation","titles":["Keyboard Initialization Code","Keyboard Post Initialization code"]},"584":{"title":"Matrix Scanning Code","titles":[]},"585":{"title":"Example matrix_scan_* Implementation","titles":["Matrix Scanning Code"]},"586":{"title":"matrix_scan_* Function Documentation","titles":["Matrix Scanning Code"]},"587":{"title":"Keyboard housekeeping","titles":[]},"588":{"title":"Example void housekeeping_task_user(void) implementation","titles":["Keyboard housekeeping"]},"589":{"title":"Keyboard Idling/Wake Code","titles":[]},"590":{"title":"Example suspend_power_down_user() and suspend_wakeup_init_user() Implementation","titles":["Keyboard Idling/Wake Code"]},"591":{"title":"Keyboard suspend/wake Function Documentation","titles":["Keyboard Idling/Wake Code"]},"592":{"title":"Keyboard Shutdown/Reboot Code","titles":[]},"593":{"title":"Example shutdown_kb() Implementation","titles":["Keyboard Shutdown/Reboot Code"]},"594":{"title":"Example shutdown_user() Implementation","titles":["Keyboard Shutdown/Reboot Code"]},"595":{"title":"Keyboard shutdown/reboot Function Documentation","titles":["Keyboard Shutdown/Reboot Code"]},"596":{"title":"Deferred Execution","titles":[]},"597":{"title":"Deferred executor callbacks","titles":["Deferred Execution"]},"598":{"title":"Deferred executor registration","titles":["Deferred Execution"]},"599":{"title":"Extending a deferred execution","titles":["Deferred Execution"]},"600":{"title":"Cancelling a deferred execution","titles":["Deferred Execution"]},"601":{"title":"Deferred callback limits","titles":["Deferred Execution"]},"602":{"title":"Advanced topics","titles":[]},"603":{"title":"Layer Change Code","titles":["Advanced topics"]},"604":{"title":"Persistent Configuration (EEPROM)","titles":["Advanced topics"]},"605":{"title":"Data Driven Configuration","titles":[]},"606":{"title":"History","titles":["Data Driven Configuration"]},"607":{"title":"Overview","titles":["Data Driven Configuration"]},"608":{"title":"Adding an option to info.json","titles":["Data Driven Configuration"]},"609":{"title":"Add it to the schema","titles":["Data Driven Configuration","Adding an option to info.json"]},"610":{"title":"Add a mapping","titles":["Data Driven Configuration","Adding an option to info.json"]},"611":{"title":"Info Key","titles":["Data Driven Configuration","Adding an option to info.json","Add a mapping"]},"612":{"title":"Value Types","titles":["Data Driven Configuration","Adding an option to info.json","Add a mapping"]},"613":{"title":"Add code to extract it","titles":["Data Driven Configuration","Adding an option to info.json"]},"614":{"title":"Add code to generate it","titles":["Data Driven Configuration","Adding an option to info.json"]},"615":{"title":"Documentation Best Practices","titles":[]},"616":{"title":"Page Opening","titles":[]},"617":{"title":"Headings","titles":[]},"618":{"title":"Styled Hint Blocks","titles":[]},"619":{"title":"Important","titles":["Styled Hint Blocks"]},"620":{"title":"General Tips","titles":["Styled Hint Blocks"]},"621":{"title":"Documenting Features","titles":[]},"622":{"title":"Documentation Templates","titles":[]},"623":{"title":"Keymap readme.md Template","titles":["Documentation Templates"]},"624":{"title":"Keyboard readme.md Template","titles":["Documentation Templates"]},"625":{"title":"Bootloader Driver Installation with Zadig","titles":[]},"626":{"title":"Installation","titles":["Bootloader Driver Installation with Zadig"]},"627":{"title":"Recovering from Installation to Wrong Device","titles":["Bootloader Driver Installation with Zadig"]},"628":{"title":"Uninstallation","titles":["Bootloader Driver Installation with Zadig"]},"629":{"title":"List of Known Bootloaders","titles":["Bootloader Driver Installation with Zadig"]},"630":{"title":"ADC Driver","titles":[]},"631":{"title":"Usage","titles":["ADC Driver"]},"632":{"title":"Channels","titles":["ADC Driver"]},"633":{"title":"AVR","titles":["ADC Driver","Channels"]},"634":{"title":"ARM","titles":["ADC Driver","Channels"]},"635":{"title":"STM32","titles":["ADC Driver","Channels","ARM"]},"636":{"title":"RP2040","titles":["ADC Driver","Channels","ARM"]},"637":{"title":"Functions","titles":["ADC Driver"]},"638":{"title":"AVR","titles":["ADC Driver","Functions"]},"639":{"title":"ARM","titles":["ADC Driver","Functions"]},"640":{"title":"Configuration","titles":["ADC Driver"]},"641":{"title":"ARM","titles":["ADC Driver"]},"642":{"title":"APA102 Driver","titles":[]},"643":{"title":"Usage","titles":["APA102 Driver"]},"644":{"title":"Basic Configuration","titles":["APA102 Driver"]},"645":{"title":"API","titles":["APA102 Driver"]},"646":{"title":"void apa102_init(void)","titles":["APA102 Driver","API"]},"647":{"title":"void apa102_set_color(uint16_t index, uint8_t red, uint8_t green, uint8_t blue)","titles":["APA102 Driver","API"]},"648":{"title":"Arguments","titles":["APA102 Driver","API","void apa102_set_color(uint16_t index, uint8_t red, uint8_t green, uint8_t blue)"]},"649":{"title":"void apa102_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["APA102 Driver","API"]},"650":{"title":"Arguments","titles":["APA102 Driver","API","void apa102_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"651":{"title":"void apa102_flush(void)","titles":["APA102 Driver","API"]},"652":{"title":"void apa102_set_brightness(uint8_t brightness)","titles":["APA102 Driver","API"]},"653":{"title":"Arguments","titles":["APA102 Driver","API","void apa102_set_brightness(uint8_t brightness)"]},"654":{"title":"Audio Driver","titles":[]},"655":{"title":"AVR","titles":["Audio Driver"]},"656":{"title":"ARM","titles":["Audio Driver"]},"657":{"title":"DAC basic","titles":["Audio Driver","ARM"]},"658":{"title":"DAC additive","titles":["Audio Driver","ARM"]},"659":{"title":"DAC Config","titles":["Audio Driver","ARM"]},"660":{"title":"Notes on buffer size","titles":["Audio Driver","ARM","DAC Config"]},"661":{"title":"PWM hardware","titles":["Audio Driver","ARM"]},"662":{"title":"PWM software","titles":["Audio Driver","ARM"]},"663":{"title":"Testing Notes","titles":["Audio Driver","ARM"]},"664":{"title":"AW20216S Driver","titles":[]},"665":{"title":"Usage","titles":["AW20216S Driver"]},"666":{"title":"Basic Configuration","titles":["AW20216S Driver"]},"667":{"title":"Global Current Control","titles":["AW20216S Driver","Basic Configuration"]},"668":{"title":"ARM/ChibiOS Configuration","titles":["AW20216S Driver"]},"669":{"title":"LED Mapping","titles":["AW20216S Driver"]},"670":{"title":"API","titles":["AW20216S Driver"]},"671":{"title":"struct aw20216s_led_t","titles":["AW20216S Driver","API"]},"672":{"title":"Members","titles":["AW20216S Driver","API","struct aw20216s_led_t"]},"673":{"title":"void aw20216s_init(pin_t cs_pin)","titles":["AW20216S Driver","API"]},"674":{"title":"Arguments","titles":["AW20216S Driver","API","void aw20216s_init(pin_t cs_pin)"]},"675":{"title":"void aw20216s_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["AW20216S Driver","API"]},"676":{"title":"Arguments","titles":["AW20216S Driver","API","void aw20216s_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"677":{"title":"void aw20216s_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["AW20216S Driver","API"]},"678":{"title":"Arguments","titles":["AW20216S Driver","API","void aw20216s_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"679":{"title":"void aw20216s_update_pwm_buffers(pin_t cs_pin, uint8_t index)","titles":["AW20216S Driver","API"]},"680":{"title":"Arguments","titles":["AW20216S Driver","API","void aw20216s_update_pwm_buffers(pin_t cs_pin, uint8_t index)"]},"681":{"title":"EEPROM Driver Configuration","titles":[]},"682":{"title":"Vendor Driver Configuration","titles":["EEPROM Driver Configuration"]},"683":{"title":"STM32 L0/L1 Configuration","titles":["EEPROM Driver Configuration","Vendor Driver Configuration"]},"684":{"title":"I2C Driver Configuration","titles":["EEPROM Driver Configuration"]},"685":{"title":"SPI Driver Configuration","titles":["EEPROM Driver Configuration"]},"686":{"title":"Transient Driver configuration","titles":["EEPROM Driver Configuration"]},"687":{"title":"Wear-leveling Driver Configuration","titles":["EEPROM Driver Configuration"]},"688":{"title":"Wear-leveling Configuration","titles":[]},"689":{"title":"Wear-leveling Embedded Flash Driver Configuration","titles":["Wear-leveling Configuration"]},"690":{"title":"Wear-leveling SPI Flash Driver Configuration","titles":["Wear-leveling Configuration"]},"691":{"title":"Wear-leveling RP2040 Driver Configuration","titles":["Wear-leveling Configuration"]},"692":{"title":"Wear-leveling Legacy EEPROM Emulation Driver Configuration","titles":["Wear-leveling Configuration"]},"693":{"title":"FLASH Driver Configuration","titles":[]},"694":{"title":"SPI FLASH Driver Configuration","titles":["FLASH Driver Configuration"]},"695":{"title":"GPIO Control","titles":[]},"696":{"title":"Macros","titles":["GPIO Control"]},"697":{"title":"Advanced Settings","titles":["GPIO Control"]},"698":{"title":"Atomic Operation","titles":["GPIO Control"]},"699":{"title":"I2C Master Driver","titles":[]},"700":{"title":"Usage","titles":["I2C Master Driver"]},"701":{"title":"I2C Addressing","titles":["I2C Master Driver"]},"702":{"title":"AVR Configuration","titles":["I2C Master Driver"]},"703":{"title":"ChibiOS/ARM Configuration","titles":["I2C Master Driver"]},"704":{"title":"I2Cv1","titles":["I2C Master Driver","ChibiOS/ARM Configuration"]},"705":{"title":"I2Cv2","titles":["I2C Master Driver","ChibiOS/ARM Configuration"]},"706":{"title":"API","titles":["I2C Master Driver"]},"707":{"title":"void i2c_init(void)","titles":["I2C Master Driver","API"]},"708":{"title":"i2c_status_t i2c_transmit(uint8_t address, uint8_t *data, uint16_t length, uint16_t timeout)","titles":["I2C Master Driver","API"]},"709":{"title":"Arguments","titles":["I2C Master Driver","API","i2c_status_t i2c_transmit(uint8_t address, uint8_t *data, uint16_t length, uint16_t timeout)"]},"710":{"title":"Return Value","titles":["I2C Master Driver","API","i2c_status_t i2c_transmit(uint8_t address, uint8_t *data, uint16_t length, uint16_t timeout)"]},"711":{"title":"i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout)","titles":["I2C Master Driver","API"]},"712":{"title":"Arguments","titles":["I2C Master Driver","API","i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout)"]},"713":{"title":"Return Value","titles":["I2C Master Driver","API","i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout)"]},"714":{"title":"i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)","titles":["I2C Master Driver","API"]},"715":{"title":"Arguments","titles":["I2C Master Driver","API","i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"716":{"title":"Return Value","titles":["I2C Master Driver","API","i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"717":{"title":"i2c_status_t i2c_write_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)","titles":["I2C Master Driver","API"]},"718":{"title":"Arguments","titles":["I2C Master Driver","API","i2c_status_t i2c_write_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"719":{"title":"Return Value","titles":["I2C Master Driver","API","i2c_status_t i2c_write_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"720":{"title":"i2c_status_t i2c_read_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)","titles":["I2C Master Driver","API"]},"721":{"title":"Arguments","titles":["I2C Master Driver","API","i2c_status_t i2c_read_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"722":{"title":"Return Value","titles":["I2C Master Driver","API","i2c_status_t i2c_read_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"723":{"title":"i2c_status_t i2c_read_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)","titles":["I2C Master Driver","API"]},"724":{"title":"Arguments","titles":["I2C Master Driver","API","i2c_status_t i2c_read_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"725":{"title":"Return Value","titles":["I2C Master Driver","API","i2c_status_t i2c_read_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"726":{"title":"i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout)","titles":["I2C Master Driver","API"]},"727":{"title":"Arguments","titles":["I2C Master Driver","API","i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout)"]},"728":{"title":"Return Value","titles":["I2C Master Driver","API","i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout)"]},"729":{"title":"IS31FL3218 Driver","titles":[]},"730":{"title":"Usage","titles":["IS31FL3218 Driver"]},"731":{"title":"Basic Configuration","titles":["IS31FL3218 Driver"]},"732":{"title":"I²C Addressing","titles":["IS31FL3218 Driver","Basic Configuration"]},"733":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3218 Driver"]},"734":{"title":"LED Mapping","titles":["IS31FL3218 Driver"]},"735":{"title":"API","titles":["IS31FL3218 Driver"]},"736":{"title":"struct is31fl3218_led_t","titles":["IS31FL3218 Driver","API"]},"737":{"title":"Members","titles":["IS31FL3218 Driver","API","struct is31fl3218_led_t"]},"738":{"title":"void is31fl3218_init(void)","titles":["IS31FL3218 Driver","API"]},"739":{"title":"void is31fl3218_write_register(uint8_t reg, uint8_t data)","titles":["IS31FL3218 Driver","API"]},"740":{"title":"Arguments","titles":["IS31FL3218 Driver","API","void is31fl3218_write_register(uint8_t reg, uint8_t data)"]},"741":{"title":"void is31fl3218_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3218 Driver","API"]},"742":{"title":"Arguments","titles":["IS31FL3218 Driver","API","void is31fl3218_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"743":{"title":"void is31fl3218_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3218 Driver","API"]},"744":{"title":"Arguments","titles":["IS31FL3218 Driver","API","void is31fl3218_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"745":{"title":"void is31fl3218_set_value(int index, uint8_t value)","titles":["IS31FL3218 Driver","API"]},"746":{"title":"Arguments","titles":["IS31FL3218 Driver","API","void is31fl3218_set_value(int index, uint8_t value)"]},"747":{"title":"void is31fl3218_set_value_all(uint8_t value)","titles":["IS31FL3218 Driver","API"]},"748":{"title":"Arguments","titles":["IS31FL3218 Driver","API","void is31fl3218_set_value_all(uint8_t value)"]},"749":{"title":"void is31fl3218_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["IS31FL3218 Driver","API"]},"750":{"title":"Arguments","titles":["IS31FL3218 Driver","API","void is31fl3218_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"751":{"title":"void is31fl3218_set_led_control_register(uint8_t index, bool value)","titles":["IS31FL3218 Driver","API"]},"752":{"title":"Arguments","titles":["IS31FL3218 Driver","API","void is31fl3218_set_led_control_register(uint8_t index, bool value)"]},"753":{"title":"void is31fl3218_update_pwm_buffers(void)","titles":["IS31FL3218 Driver","API"]},"754":{"title":"void is31fl3218_update_led_control_registers(void)","titles":["IS31FL3218 Driver","API"]},"755":{"title":"IS31FL3236 Driver","titles":[]},"756":{"title":"Usage","titles":["IS31FL3236 Driver"]},"757":{"title":"Basic Configuration","titles":["IS31FL3236 Driver"]},"758":{"title":"I²C Addressing","titles":["IS31FL3236 Driver","Basic Configuration"]},"759":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3236 Driver"]},"760":{"title":"LED Mapping","titles":["IS31FL3236 Driver"]},"761":{"title":"API","titles":["IS31FL3236 Driver"]},"762":{"title":"struct is31fl3236_led_t","titles":["IS31FL3236 Driver","API"]},"763":{"title":"Members","titles":["IS31FL3236 Driver","API","struct is31fl3236_led_t"]},"764":{"title":"void is31fl3236_init(uint8_t index)","titles":["IS31FL3236 Driver","API"]},"765":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_init(uint8_t index)"]},"766":{"title":"void is31fl3236_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3236 Driver","API"]},"767":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"768":{"title":"void is31fl3236_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3236 Driver","API"]},"769":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"770":{"title":"void is31fl3236_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3236 Driver","API"]},"771":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"772":{"title":"void is31fl3236_set_value(int index, uint8_t value)","titles":["IS31FL3236 Driver","API"]},"773":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_set_value(int index, uint8_t value)"]},"774":{"title":"void is31fl3236_set_value_all(uint8_t value)","titles":["IS31FL3236 Driver","API"]},"775":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_set_value_all(uint8_t value)"]},"776":{"title":"void is31fl3236_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["IS31FL3236 Driver","API"]},"777":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"778":{"title":"void is31fl3236_set_led_control_register(uint8_t index, bool value)","titles":["IS31FL3236 Driver","API"]},"779":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_set_led_control_register(uint8_t index, bool value)"]},"780":{"title":"void is31fl3236_update_pwm_buffers(uint8_t index)","titles":["IS31FL3236 Driver","API"]},"781":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_update_pwm_buffers(uint8_t index)"]},"782":{"title":"void is31fl3236_update_led_control_registers(uint8_t index)","titles":["IS31FL3236 Driver","API"]},"783":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_update_led_control_registers(uint8_t index)"]},"784":{"title":"IS31FL3729 Driver","titles":[]},"785":{"title":"Usage","titles":["IS31FL3729 Driver"]},"786":{"title":"Basic Configuration","titles":["IS31FL3729 Driver"]},"787":{"title":"I²C Addressing","titles":["IS31FL3729 Driver","Basic Configuration"]},"788":{"title":"PWM Frequency","titles":["IS31FL3729 Driver","Basic Configuration"]},"789":{"title":"De-Ghosting","titles":["IS31FL3729 Driver","Basic Configuration"]},"790":{"title":"Global Current Control","titles":["IS31FL3729 Driver","Basic Configuration"]},"791":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3729 Driver"]},"792":{"title":"LED Mapping","titles":["IS31FL3729 Driver"]},"793":{"title":"API","titles":["IS31FL3729 Driver"]},"794":{"title":"struct is31fl3729_led_t","titles":["IS31FL3729 Driver","API"]},"795":{"title":"Members","titles":["IS31FL3729 Driver","API","struct is31fl3729_led_t"]},"796":{"title":"void is31fl3729_init(uint8_t index)","titles":["IS31FL3729 Driver","API"]},"797":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_init(uint8_t index)"]},"798":{"title":"void is31fl3729_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3729 Driver","API"]},"799":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"800":{"title":"void is31fl3729_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3729 Driver","API"]},"801":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"802":{"title":"void is31fl3729_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3729 Driver","API"]},"803":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"804":{"title":"void is31fl3729_set_value(int index, uint8_t value)","titles":["IS31FL3729 Driver","API"]},"805":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_set_value(int index, uint8_t value)"]},"806":{"title":"void is31fl3729_set_value_all(uint8_t value)","titles":["IS31FL3729 Driver","API"]},"807":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_set_value_all(uint8_t value)"]},"808":{"title":"void is31fl3729_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3729 Driver","API"]},"809":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)"]},"810":{"title":"void is31fl3729_set_scaling_register(uint8_t index, uint8_t value)","titles":["IS31FL3729 Driver","API"]},"811":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_set_scaling_register(uint8_t index, uint8_t value)"]},"812":{"title":"void is31fl3729_update_pwm_buffers(uint8_t index)","titles":["IS31FL3729 Driver","API"]},"813":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_update_pwm_buffers(uint8_t index)"]},"814":{"title":"void is31fl3729_update_scaling_registers(uint8_t index)","titles":["IS31FL3729 Driver","API"]},"815":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_update_scaling_registers(uint8_t index)"]},"816":{"title":"IS31FL3731 Driver","titles":[]},"817":{"title":"Usage","titles":["IS31FL3731 Driver"]},"818":{"title":"Basic Configuration","titles":["IS31FL3731 Driver"]},"819":{"title":"I²C Addressing","titles":["IS31FL3731 Driver","Basic Configuration"]},"820":{"title":"De-Ghosting","titles":["IS31FL3731 Driver","Basic Configuration"]},"821":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3731 Driver"]},"822":{"title":"LED Mapping","titles":["IS31FL3731 Driver"]},"823":{"title":"API","titles":["IS31FL3731 Driver"]},"824":{"title":"struct is31fl3731_led_t","titles":["IS31FL3731 Driver","API"]},"825":{"title":"Members","titles":["IS31FL3731 Driver","API","struct is31fl3731_led_t"]},"826":{"title":"void is31fl3731_init(uint8_t index)","titles":["IS31FL3731 Driver","API"]},"827":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_init(uint8_t index)"]},"828":{"title":"void is31fl3731_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3731 Driver","API"]},"829":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"830":{"title":"void is31fl3731_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3731 Driver","API"]},"831":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_select_page(uint8_t index, uint8_t page)"]},"832":{"title":"void is31fl3731_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3731 Driver","API"]},"833":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"834":{"title":"void is31fl3731_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3731 Driver","API"]},"835":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"836":{"title":"void is31fl3731_set_value(int index, uint8_t value)","titles":["IS31FL3731 Driver","API"]},"837":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_set_value(int index, uint8_t value)"]},"838":{"title":"void is31fl3731_set_value_all(uint8_t value)","titles":["IS31FL3731 Driver","API"]},"839":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_set_value_all(uint8_t value)"]},"840":{"title":"void is31fl3731_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["IS31FL3731 Driver","API"]},"841":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"842":{"title":"void is31fl3731_set_led_control_register(uint8_t index, bool value)","titles":["IS31FL3731 Driver","API"]},"843":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_set_led_control_register(uint8_t index, bool value)"]},"844":{"title":"void is31fl3731_update_pwm_buffers(uint8_t index)","titles":["IS31FL3731 Driver","API"]},"845":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_update_pwm_buffers(uint8_t index)"]},"846":{"title":"void is31fl3731_update_led_control_registers(uint8_t index)","titles":["IS31FL3731 Driver","API"]},"847":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_update_led_control_registers(uint8_t index)"]},"848":{"title":"IS31FL3733 Driver","titles":[]},"849":{"title":"Usage","titles":["IS31FL3733 Driver"]},"850":{"title":"Basic Configuration","titles":["IS31FL3733 Driver"]},"851":{"title":"I²C Addressing","titles":["IS31FL3733 Driver","Basic Configuration"]},"852":{"title":"Multi-Driver Synchronization","titles":["IS31FL3733 Driver","Basic Configuration"]},"853":{"title":"PWM Frequency","titles":["IS31FL3733 Driver","Basic Configuration"]},"854":{"title":"De-Ghosting","titles":["IS31FL3733 Driver","Basic Configuration"]},"855":{"title":"Global Current Control","titles":["IS31FL3733 Driver","Basic Configuration"]},"856":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3733 Driver"]},"857":{"title":"LED Mapping","titles":["IS31FL3733 Driver"]},"858":{"title":"API","titles":["IS31FL3733 Driver"]},"859":{"title":"struct is31fl3733_led_t","titles":["IS31FL3733 Driver","API"]},"860":{"title":"Members","titles":["IS31FL3733 Driver","API","struct is31fl3733_led_t"]},"861":{"title":"void is31fl3733_init(uint8_t index)","titles":["IS31FL3733 Driver","API"]},"862":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_init(uint8_t index)"]},"863":{"title":"void is31fl3733_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3733 Driver","API"]},"864":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"865":{"title":"void is31fl3733_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3733 Driver","API"]},"866":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_select_page(uint8_t index, uint8_t page)"]},"867":{"title":"void is31fl3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3733 Driver","API"]},"868":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"869":{"title":"void is31fl3733_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3733 Driver","API"]},"870":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"871":{"title":"void is31fl3733_set_value(int index, uint8_t value)","titles":["IS31FL3733 Driver","API"]},"872":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_set_value(int index, uint8_t value)"]},"873":{"title":"void is31fl3733_set_value_all(uint8_t value)","titles":["IS31FL3733 Driver","API"]},"874":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_set_value_all(uint8_t value)"]},"875":{"title":"void is31fl3733_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["IS31FL3733 Driver","API"]},"876":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"877":{"title":"void is31fl3733_set_led_control_register(uint8_t index, bool value)","titles":["IS31FL3733 Driver","API"]},"878":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_set_led_control_register(uint8_t index, bool value)"]},"879":{"title":"void is31fl3733_update_pwm_buffers(uint8_t index)","titles":["IS31FL3733 Driver","API"]},"880":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_update_pwm_buffers(uint8_t index)"]},"881":{"title":"void is31fl3733_update_led_control_registers(uint8_t index)","titles":["IS31FL3733 Driver","API"]},"882":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_update_led_control_registers(uint8_t index)"]},"883":{"title":"IS31FL3736 Driver","titles":[]},"884":{"title":"Usage","titles":["IS31FL3736 Driver"]},"885":{"title":"Basic Configuration","titles":["IS31FL3736 Driver"]},"886":{"title":"I²C Addressing","titles":["IS31FL3736 Driver","Basic Configuration"]},"887":{"title":"PWM Frequency","titles":["IS31FL3736 Driver","Basic Configuration"]},"888":{"title":"De-Ghosting","titles":["IS31FL3736 Driver","Basic Configuration"]},"889":{"title":"Global Current Control","titles":["IS31FL3736 Driver","Basic Configuration"]},"890":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3736 Driver"]},"891":{"title":"LED Mapping","titles":["IS31FL3736 Driver"]},"892":{"title":"API","titles":["IS31FL3736 Driver"]},"893":{"title":"struct is31fl3736_led_t","titles":["IS31FL3736 Driver","API"]},"894":{"title":"Members","titles":["IS31FL3736 Driver","API","struct is31fl3736_led_t"]},"895":{"title":"void is31fl3736_init(uint8_t index)","titles":["IS31FL3736 Driver","API"]},"896":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_init(uint8_t index)"]},"897":{"title":"void is31fl3736_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3736 Driver","API"]},"898":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"899":{"title":"void is31fl3736_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3736 Driver","API"]},"900":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_select_page(uint8_t index, uint8_t page)"]},"901":{"title":"void is31fl3736_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3736 Driver","API"]},"902":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"903":{"title":"void is31fl3736_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3736 Driver","API"]},"904":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"905":{"title":"void is31fl3736_set_value(int index, uint8_t value)","titles":["IS31FL3736 Driver","API"]},"906":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_set_value(int index, uint8_t value)"]},"907":{"title":"void is31fl3736_set_value_all(uint8_t value)","titles":["IS31FL3736 Driver","API"]},"908":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_set_value_all(uint8_t value)"]},"909":{"title":"void is31fl3736_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["IS31FL3736 Driver","API"]},"910":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"911":{"title":"void is31fl3736_set_led_control_register(uint8_t index, bool value)","titles":["IS31FL3736 Driver","API"]},"912":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_set_led_control_register(uint8_t index, bool value)"]},"913":{"title":"void is31fl3736_update_pwm_buffers(uint8_t index)","titles":["IS31FL3736 Driver","API"]},"914":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_update_pwm_buffers(uint8_t index)"]},"915":{"title":"void is31fl3736_update_led_control_registers(uint8_t index)","titles":["IS31FL3736 Driver","API"]},"916":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_update_led_control_registers(uint8_t index)"]},"917":{"title":"IS31FL3737 Driver","titles":[]},"918":{"title":"Usage","titles":["IS31FL3737 Driver"]},"919":{"title":"Basic Configuration","titles":["IS31FL3737 Driver"]},"920":{"title":"I²C Addressing","titles":["IS31FL3737 Driver","Basic Configuration"]},"921":{"title":"PWM Frequency","titles":["IS31FL3737 Driver","Basic Configuration"]},"922":{"title":"De-Ghosting","titles":["IS31FL3737 Driver","Basic Configuration"]},"923":{"title":"Global Current Control","titles":["IS31FL3737 Driver","Basic Configuration"]},"924":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3737 Driver"]},"925":{"title":"LED Mapping","titles":["IS31FL3737 Driver"]},"926":{"title":"API","titles":["IS31FL3737 Driver"]},"927":{"title":"struct is31fl3737_led_t","titles":["IS31FL3737 Driver","API"]},"928":{"title":"Members","titles":["IS31FL3737 Driver","API","struct is31fl3737_led_t"]},"929":{"title":"void is31fl3737_init(uint8_t index)","titles":["IS31FL3737 Driver","API"]},"930":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_init(uint8_t index)"]},"931":{"title":"void is31fl3737_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3737 Driver","API"]},"932":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"933":{"title":"void is31fl3737_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3737 Driver","API"]},"934":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_select_page(uint8_t index, uint8_t page)"]},"935":{"title":"void is31fl3737_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3737 Driver","API"]},"936":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"937":{"title":"void is31fl3737_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3737 Driver","API"]},"938":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"939":{"title":"void is31fl3737_set_value(int index, uint8_t value)","titles":["IS31FL3737 Driver","API"]},"940":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_set_value(int index, uint8_t value)"]},"941":{"title":"void is31fl3737_set_value_all(uint8_t value)","titles":["IS31FL3737 Driver","API"]},"942":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_set_value_all(uint8_t value)"]},"943":{"title":"void is31fl3737_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["IS31FL3737 Driver","API"]},"944":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"945":{"title":"void is31fl3737_set_led_control_register(uint8_t index, bool value)","titles":["IS31FL3737 Driver","API"]},"946":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_set_led_control_register(uint8_t index, bool value)"]},"947":{"title":"void is31fl3737_update_pwm_buffers(uint8_t index)","titles":["IS31FL3737 Driver","API"]},"948":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_update_pwm_buffers(uint8_t index)"]},"949":{"title":"void is31fl3737_update_led_control_registers(uint8_t index)","titles":["IS31FL3737 Driver","API"]},"950":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_update_led_control_registers(uint8_t index)"]},"951":{"title":"IS31FL3741 Driver","titles":[]},"952":{"title":"Usage","titles":["IS31FL3741 Driver"]},"953":{"title":"Basic Configuration","titles":["IS31FL3741 Driver"]},"954":{"title":"I²C Addressing","titles":["IS31FL3741 Driver","Basic Configuration"]},"955":{"title":"PWM Frequency","titles":["IS31FL3741 Driver","Basic Configuration"]},"956":{"title":"De-Ghosting","titles":["IS31FL3741 Driver","Basic Configuration"]},"957":{"title":"Global Current Control","titles":["IS31FL3741 Driver","Basic Configuration"]},"958":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3741 Driver"]},"959":{"title":"LED Mapping","titles":["IS31FL3741 Driver"]},"960":{"title":"API","titles":["IS31FL3741 Driver"]},"961":{"title":"struct is31fl3741_led_t","titles":["IS31FL3741 Driver","API"]},"962":{"title":"Members","titles":["IS31FL3741 Driver","API","struct is31fl3741_led_t"]},"963":{"title":"void is31fl3741_init(uint8_t index)","titles":["IS31FL3741 Driver","API"]},"964":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_init(uint8_t index)"]},"965":{"title":"void is31fl3741_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3741 Driver","API"]},"966":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"967":{"title":"void is31fl3741_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3741 Driver","API"]},"968":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_select_page(uint8_t index, uint8_t page)"]},"969":{"title":"void is31fl3741_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3741 Driver","API"]},"970":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"971":{"title":"void is31fl3741_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3741 Driver","API"]},"972":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"973":{"title":"void is31fl3741_set_value(int index, uint8_t value)","titles":["IS31FL3741 Driver","API"]},"974":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_set_value(int index, uint8_t value)"]},"975":{"title":"void is31fl3741_set_value_all(uint8_t value)","titles":["IS31FL3741 Driver","API"]},"976":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_set_value_all(uint8_t value)"]},"977":{"title":"void is31fl3741_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["IS31FL3741 Driver","API"]},"978":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"979":{"title":"void is31fl3741_set_led_control_register(uint8_t index, bool value)","titles":["IS31FL3741 Driver","API"]},"980":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_set_led_control_register(uint8_t index, bool value)"]},"981":{"title":"void is31fl3741_update_pwm_buffers(uint8_t index)","titles":["IS31FL3741 Driver","API"]},"982":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_update_pwm_buffers(uint8_t index)"]},"983":{"title":"void is31fl3741_update_led_control_registers(uint8_t index)","titles":["IS31FL3741 Driver","API"]},"984":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_update_led_control_registers(uint8_t index)"]},"985":{"title":"IS31FL3742A Driver","titles":[]},"986":{"title":"Usage","titles":["IS31FL3742A Driver"]},"987":{"title":"Basic Configuration","titles":["IS31FL3742A Driver"]},"988":{"title":"I²C Addressing","titles":["IS31FL3742A Driver","Basic Configuration"]},"989":{"title":"PWM Frequency","titles":["IS31FL3742A Driver","Basic Configuration"]},"990":{"title":"De-Ghosting","titles":["IS31FL3742A Driver","Basic Configuration"]},"991":{"title":"Global Current Control","titles":["IS31FL3742A Driver","Basic Configuration"]},"992":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3742A Driver"]},"993":{"title":"LED Mapping","titles":["IS31FL3742A Driver"]},"994":{"title":"API","titles":["IS31FL3742A Driver"]},"995":{"title":"struct is31fl3742a_led_t","titles":["IS31FL3742A Driver","API"]},"996":{"title":"Members","titles":["IS31FL3742A Driver","API","struct is31fl3742a_led_t"]},"997":{"title":"void is31fl3742a_init(uint8_t index)","titles":["IS31FL3742A Driver","API"]},"998":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_init(uint8_t index)"]},"999":{"title":"void is31fl3742a_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3742A Driver","API"]},"1000":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"1001":{"title":"void is31fl3742a_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3742A Driver","API"]},"1002":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_select_page(uint8_t index, uint8_t page)"]},"1003":{"title":"void is31fl3742a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3742A Driver","API"]},"1004":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"1005":{"title":"void is31fl3742a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3742A Driver","API"]},"1006":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"1007":{"title":"void is31fl3742a_set_value(int index, uint8_t value)","titles":["IS31FL3742A Driver","API"]},"1008":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_set_value(int index, uint8_t value)"]},"1009":{"title":"void is31fl3742a_set_value_all(uint8_t value)","titles":["IS31FL3742A Driver","API"]},"1010":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_set_value_all(uint8_t value)"]},"1011":{"title":"void is31fl3742a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3742A Driver","API"]},"1012":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)"]},"1013":{"title":"void is31fl3742a_set_scaling_register(uint8_t index, uint8_t value)","titles":["IS31FL3742A Driver","API"]},"1014":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_set_scaling_register(uint8_t index, uint8_t value)"]},"1015":{"title":"void is31fl3742a_update_pwm_buffers(uint8_t index)","titles":["IS31FL3742A Driver","API"]},"1016":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_update_pwm_buffers(uint8_t index)"]},"1017":{"title":"void is31fl3742a_update_scaling_registers(uint8_t index)","titles":["IS31FL3742A Driver","API"]},"1018":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_update_scaling_registers(uint8_t index)"]},"1019":{"title":"IS31FL3743A Driver","titles":[]},"1020":{"title":"Usage","titles":["IS31FL3743A Driver"]},"1021":{"title":"Basic Configuration","titles":["IS31FL3743A Driver"]},"1022":{"title":"I²C Addressing","titles":["IS31FL3743A Driver","Basic Configuration"]},"1023":{"title":"Multi-Driver Synchronization","titles":["IS31FL3743A Driver","Basic Configuration"]},"1024":{"title":"De-Ghosting","titles":["IS31FL3743A Driver","Basic Configuration"]},"1025":{"title":"Global Current Control","titles":["IS31FL3743A Driver","Basic Configuration"]},"1026":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3743A Driver"]},"1027":{"title":"LED Mapping","titles":["IS31FL3743A Driver"]},"1028":{"title":"API","titles":["IS31FL3743A Driver"]},"1029":{"title":"struct is31fl3743a_led_t","titles":["IS31FL3743A Driver","API"]},"1030":{"title":"Members","titles":["IS31FL3743A Driver","API","struct is31fl3743a_led_t"]},"1031":{"title":"void is31fl3743a_init(uint8_t index)","titles":["IS31FL3743A Driver","API"]},"1032":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_init(uint8_t index)"]},"1033":{"title":"void is31fl3743a_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3743A Driver","API"]},"1034":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"1035":{"title":"void is31fl3743a_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3743A Driver","API"]},"1036":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_select_page(uint8_t index, uint8_t page)"]},"1037":{"title":"void is31fl3743a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3743A Driver","API"]},"1038":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"1039":{"title":"void is31fl3743a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3743A Driver","API"]},"1040":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"1041":{"title":"void is31fl3743a_set_value(int index, uint8_t value)","titles":["IS31FL3743A Driver","API"]},"1042":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_set_value(int index, uint8_t value)"]},"1043":{"title":"void is31fl3743a_set_value_all(uint8_t value)","titles":["IS31FL3743A Driver","API"]},"1044":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_set_value_all(uint8_t value)"]},"1045":{"title":"void is31fl3743a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3743A Driver","API"]},"1046":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)"]},"1047":{"title":"void is31fl3743a_set_scaling_register(uint8_t index, uint8_t value)","titles":["IS31FL3743A Driver","API"]},"1048":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_set_scaling_register(uint8_t index, uint8_t value)"]},"1049":{"title":"void is31fl3743a_update_pwm_buffers(uint8_t index)","titles":["IS31FL3743A Driver","API"]},"1050":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_update_pwm_buffers(uint8_t index)"]},"1051":{"title":"void is31fl3743a_update_scaling_registers(uint8_t index)","titles":["IS31FL3743A Driver","API"]},"1052":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_update_scaling_registers(uint8_t index)"]},"1053":{"title":"IS31FL3745 Driver","titles":[]},"1054":{"title":"Usage","titles":["IS31FL3745 Driver"]},"1055":{"title":"Basic Configuration","titles":["IS31FL3745 Driver"]},"1056":{"title":"I²C Addressing","titles":["IS31FL3745 Driver","Basic Configuration"]},"1057":{"title":"Multi-Driver Synchronization","titles":["IS31FL3745 Driver","Basic Configuration"]},"1058":{"title":"De-Ghosting","titles":["IS31FL3745 Driver","Basic Configuration"]},"1059":{"title":"Global Current Control","titles":["IS31FL3745 Driver","Basic Configuration"]},"1060":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3745 Driver"]},"1061":{"title":"LED Mapping","titles":["IS31FL3745 Driver"]},"1062":{"title":"API","titles":["IS31FL3745 Driver"]},"1063":{"title":"struct is31fl3745_led_t","titles":["IS31FL3745 Driver","API"]},"1064":{"title":"Members","titles":["IS31FL3745 Driver","API","struct is31fl3745_led_t"]},"1065":{"title":"void is31fl3745_init(uint8_t index)","titles":["IS31FL3745 Driver","API"]},"1066":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_init(uint8_t index)"]},"1067":{"title":"void is31fl3745_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3745 Driver","API"]},"1068":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"1069":{"title":"void is31fl3745_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3745 Driver","API"]},"1070":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_select_page(uint8_t index, uint8_t page)"]},"1071":{"title":"void is31fl3745_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3745 Driver","API"]},"1072":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"1073":{"title":"void is31fl3745_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3745 Driver","API"]},"1074":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"1075":{"title":"void is31fl3745_set_value(int index, uint8_t value)","titles":["IS31FL3745 Driver","API"]},"1076":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_set_value(int index, uint8_t value)"]},"1077":{"title":"void is31fl3745_set_value_all(uint8_t value)","titles":["IS31FL3745 Driver","API"]},"1078":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_set_value_all(uint8_t value)"]},"1079":{"title":"void is31fl3745_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3745 Driver","API"]},"1080":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)"]},"1081":{"title":"void is31fl3745_set_scaling_register(uint8_t index, uint8_t value)","titles":["IS31FL3745 Driver","API"]},"1082":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_set_scaling_register(uint8_t index, uint8_t value)"]},"1083":{"title":"void is31fl3745_update_pwm_buffers(uint8_t index)","titles":["IS31FL3745 Driver","API"]},"1084":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_update_pwm_buffers(uint8_t index)"]},"1085":{"title":"void is31fl3745_update_scaling_registers(uint8_t index)","titles":["IS31FL3745 Driver","API"]},"1086":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_update_scaling_registers(uint8_t index)"]},"1087":{"title":"IS31FL3746A Driver","titles":[]},"1088":{"title":"Usage","titles":["IS31FL3746A Driver"]},"1089":{"title":"Basic Configuration","titles":["IS31FL3746A Driver"]},"1090":{"title":"I²C Addressing","titles":["IS31FL3746A Driver","Basic Configuration"]},"1091":{"title":"PWM Frequency","titles":["IS31FL3746A Driver","Basic Configuration"]},"1092":{"title":"De-Ghosting","titles":["IS31FL3746A Driver","Basic Configuration"]},"1093":{"title":"Global Current Control","titles":["IS31FL3746A Driver","Basic Configuration"]},"1094":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3746A Driver"]},"1095":{"title":"LED Mapping","titles":["IS31FL3746A Driver"]},"1096":{"title":"API","titles":["IS31FL3746A Driver"]},"1097":{"title":"struct is31fl3746a_led_t","titles":["IS31FL3746A Driver","API"]},"1098":{"title":"Members","titles":["IS31FL3746A Driver","API","struct is31fl3746a_led_t"]},"1099":{"title":"void is31fl3746a_init(uint8_t index)","titles":["IS31FL3746A Driver","API"]},"1100":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_init(uint8_t index)"]},"1101":{"title":"void is31fl3746a_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3746A Driver","API"]},"1102":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"1103":{"title":"void is31fl3746a_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3746A Driver","API"]},"1104":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_select_page(uint8_t index, uint8_t page)"]},"1105":{"title":"void is31fl3746a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3746A Driver","API"]},"1106":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"1107":{"title":"void is31fl3746a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3746A Driver","API"]},"1108":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"1109":{"title":"void is31fl3746a_set_value(int index, uint8_t value)","titles":["IS31FL3746A Driver","API"]},"1110":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_set_value(int index, uint8_t value)"]},"1111":{"title":"void is31fl3746a_set_value_all(uint8_t value)","titles":["IS31FL3746A Driver","API"]},"1112":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_set_value_all(uint8_t value)"]},"1113":{"title":"void is31fl3746a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3746A Driver","API"]},"1114":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)"]},"1115":{"title":"void is31fl3746a_set_scaling_register(uint8_t index, uint8_t value)","titles":["IS31FL3746A Driver","API"]},"1116":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_set_scaling_register(uint8_t index, uint8_t value)"]},"1117":{"title":"void is31fl3746a_update_pwm_buffers(uint8_t index)","titles":["IS31FL3746A Driver","API"]},"1118":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_update_pwm_buffers(uint8_t index)"]},"1119":{"title":"void is31fl3746a_update_scaling_registers(uint8_t index)","titles":["IS31FL3746A Driver","API"]},"1120":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_update_scaling_registers(uint8_t index)"]},"1121":{"title":"'serial' Driver","titles":[]},"1122":{"title":"Bitbang","titles":["'serial' Driver"]},"1123":{"title":"Pin configuration","titles":["'serial' Driver","Bitbang"]},"1124":{"title":"Setup","titles":["'serial' Driver","Bitbang"]},"1125":{"title":"USART Half-duplex","titles":["'serial' Driver"]},"1126":{"title":"Pin configuration","titles":["'serial' Driver","USART Half-duplex"]},"1127":{"title":"Setup","titles":["'serial' Driver","USART Half-duplex"]},"1128":{"title":"USART Full-duplex","titles":["'serial' Driver"]},"1129":{"title":"Pin configuration","titles":["'serial' Driver","USART Full-duplex"]},"1130":{"title":"Setup","titles":["'serial' Driver","USART Full-duplex"]},"1131":{"title":"Choosing a driver subsystem","titles":["'serial' Driver"]},"1132":{"title":"The SERIAL driver","titles":["'serial' Driver","Choosing a driver subsystem"]},"1133":{"title":"The SIO driver","titles":["'serial' Driver","Choosing a driver subsystem"]},"1134":{"title":"The PIO driver","titles":["'serial' Driver","Choosing a driver subsystem"]},"1135":{"title":"Advanced Configuration","titles":["'serial' Driver"]},"1136":{"title":"Baudrate","titles":["'serial' Driver","Advanced Configuration"]},"1137":{"title":"Timeout","titles":["'serial' Driver","Advanced Configuration"]},"1138":{"title":"Troubleshooting","titles":["'serial' Driver"]},"1139":{"title":"Alternate Functions for selected STM32 MCUs","titles":["'serial' Driver"]},"1140":{"title":"STM32F303 / Proton-C","titles":["'serial' Driver","Alternate Functions for selected STM32 MCUs"]},"1141":{"title":"STM32F072","titles":["'serial' Driver","Alternate Functions for selected STM32 MCUs"]},"1142":{"title":"STM32F103 Medium Density (C8-CB)","titles":["'serial' Driver","Alternate Functions for selected STM32 MCUs"]},"1143":{"title":"SNLED27351 Driver","titles":[]},"1144":{"title":"Usage","titles":["SNLED27351 Driver"]},"1145":{"title":"Basic Configuration","titles":["SNLED27351 Driver"]},"1146":{"title":"I²C Addressing","titles":["SNLED27351 Driver","Basic Configuration"]},"1147":{"title":"ARM/ChibiOS Configuration","titles":["SNLED27351 Driver"]},"1148":{"title":"LED Mapping","titles":["SNLED27351 Driver"]},"1149":{"title":"API","titles":["SNLED27351 Driver"]},"1150":{"title":"struct snled27351_led_t","titles":["SNLED27351 Driver","API"]},"1151":{"title":"Members","titles":["SNLED27351 Driver","API","struct snled27351_led_t"]},"1152":{"title":"void snled27351_init(uint8_t index)","titles":["SNLED27351 Driver","API"]},"1153":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_init(uint8_t index)"]},"1154":{"title":"void snled27351_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["SNLED27351 Driver","API"]},"1155":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"1156":{"title":"void snled27351_select_page(uint8_t index, uint8_t page)","titles":["SNLED27351 Driver","API"]},"1157":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_select_page(uint8_t index, uint8_t page)"]},"1158":{"title":"void snled27351_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["SNLED27351 Driver","API"]},"1159":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"1160":{"title":"void snled27351_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["SNLED27351 Driver","API"]},"1161":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"1162":{"title":"void snled27351_set_value(int index, uint8_t value)","titles":["SNLED27351 Driver","API"]},"1163":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_set_value(int index, uint8_t value)"]},"1164":{"title":"void snled27351_set_value_all(uint8_t value)","titles":["SNLED27351 Driver","API"]},"1165":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_set_value_all(uint8_t value)"]},"1166":{"title":"void snled27351_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["SNLED27351 Driver","API"]},"1167":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"1168":{"title":"void snled27351_set_led_control_register(uint8_t index, bool value)","titles":["SNLED27351 Driver","API"]},"1169":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_set_led_control_register(uint8_t index, bool value)"]},"1170":{"title":"void snled27351_update_pwm_buffers(uint8_t index)","titles":["SNLED27351 Driver","API"]},"1171":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_update_pwm_buffers(uint8_t index)"]},"1172":{"title":"void snled27351_update_led_control_registers(uint8_t index)","titles":["SNLED27351 Driver","API"]},"1173":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_update_led_control_registers(uint8_t index)"]},"1174":{"title":"SPI Master Driver","titles":[]},"1175":{"title":"Usage","titles":["SPI Master Driver"]},"1176":{"title":"AVR Configuration","titles":["SPI Master Driver"]},"1177":{"title":"ChibiOS/ARM Configuration","titles":["SPI Master Driver"]},"1178":{"title":"API","titles":["SPI Master Driver"]},"1179":{"title":"void spi_init(void)","titles":["SPI Master Driver","API"]},"1180":{"title":"bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor)","titles":["SPI Master Driver","API"]},"1181":{"title":"Arguments","titles":["SPI Master Driver","API","bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor)"]},"1182":{"title":"Return Value","titles":["SPI Master Driver","API","bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor)"]},"1183":{"title":"spi_status_t spi_write(uint8_t data)","titles":["SPI Master Driver","API"]},"1184":{"title":"Arguments","titles":["SPI Master Driver","API","spi_status_t spi_write(uint8_t data)"]},"1185":{"title":"Return Value","titles":["SPI Master Driver","API","spi_status_t spi_write(uint8_t data)"]},"1186":{"title":"spi_status_t spi_read(void)","titles":["SPI Master Driver","API"]},"1187":{"title":"Return Value","titles":["SPI Master Driver","API","spi_status_t spi_read(void)"]},"1188":{"title":"spi_status_t spi_transmit(const uint8_t *data, uint16_t length)","titles":["SPI Master Driver","API"]},"1189":{"title":"Arguments","titles":["SPI Master Driver","API","spi_status_t spi_transmit(const uint8_t *data, uint16_t length)"]},"1190":{"title":"Return Value","titles":["SPI Master Driver","API","spi_status_t spi_transmit(const uint8_t *data, uint16_t length)"]},"1191":{"title":"spi_status_t spi_receive(uint8_t *data, uint16_t length)","titles":["SPI Master Driver","API"]},"1192":{"title":"Arguments","titles":["SPI Master Driver","API","spi_status_t spi_receive(uint8_t *data, uint16_t length)"]},"1193":{"title":"Return Value","titles":["SPI Master Driver","API","spi_status_t spi_receive(uint8_t *data, uint16_t length)"]},"1194":{"title":"void spi_stop(void)","titles":["SPI Master Driver","API"]},"1195":{"title":"UART Driver","titles":[]},"1196":{"title":"Usage","titles":["UART Driver"]},"1197":{"title":"AVR Configuration","titles":["UART Driver"]},"1198":{"title":"ChibiOS/ARM Configuration","titles":["UART Driver"]},"1199":{"title":"API","titles":["UART Driver"]},"1200":{"title":"void uart_init(uint32_t baud)","titles":["UART Driver","API"]},"1201":{"title":"Arguments","titles":["UART Driver","API","void uart_init(uint32_t baud)"]},"1202":{"title":"void uart_write(uint8_t data)","titles":["UART Driver","API"]},"1203":{"title":"Arguments","titles":["UART Driver","API","void uart_write(uint8_t data)"]},"1204":{"title":"uint8_t uart_read(void)","titles":["UART Driver","API"]},"1205":{"title":"Return Value","titles":["UART Driver","API","uint8_t uart_read(void)"]},"1206":{"title":"void uart_transmit(const uint8_t *data, uint16_t length)","titles":["UART Driver","API"]},"1207":{"title":"Arguments","titles":["UART Driver","API","void uart_transmit(const uint8_t *data, uint16_t length)"]},"1208":{"title":"void uart_receive(char *data, uint16_t length)","titles":["UART Driver","API"]},"1209":{"title":"Arguments","titles":["UART Driver","API","void uart_receive(char *data, uint16_t length)"]},"1210":{"title":"bool uart_available(void)","titles":["UART Driver","API"]},"1211":{"title":"Return Value","titles":["UART Driver","API","bool uart_available(void)"]},"1212":{"title":"WS2812 Driver","titles":[]},"1213":{"title":"Usage","titles":["WS2812 Driver"]},"1214":{"title":"Basic Configuration","titles":["WS2812 Driver"]},"1215":{"title":"Timing Adjustment","titles":["WS2812 Driver","Basic Configuration"]},"1216":{"title":"Byte Order","titles":["WS2812 Driver","Basic Configuration"]},"1217":{"title":"RGBW Support","titles":["WS2812 Driver","Basic Configuration"]},"1218":{"title":"Driver Configuration","titles":["WS2812 Driver"]},"1219":{"title":"Bitbang Driver","titles":["WS2812 Driver","Driver Configuration"]},"1220":{"title":"I2C Driver","titles":["WS2812 Driver","Driver Configuration"]},"1221":{"title":"PIO Driver","titles":["WS2812 Driver","Driver Configuration"]},"1222":{"title":"PWM Driver","titles":["WS2812 Driver","Driver Configuration"]},"1223":{"title":"SPI Driver","titles":["WS2812 Driver","Driver Configuration"]},"1224":{"title":"ChibiOS/ARM Configuration","titles":["WS2812 Driver"]},"1225":{"title":"Push-Pull and Open Drain","titles":["WS2812 Driver","ChibiOS/ARM Configuration"]},"1226":{"title":"SPI Driver","titles":["WS2812 Driver","ChibiOS/ARM Configuration"]},"1227":{"title":"Setting the Baudrate","titles":["WS2812 Driver","ChibiOS/ARM Configuration","SPI Driver"]},"1228":{"title":"Circular Buffer","titles":["WS2812 Driver","ChibiOS/ARM Configuration","SPI Driver"]},"1229":{"title":"PIO Driver","titles":["WS2812 Driver","ChibiOS/ARM Configuration"]},"1230":{"title":"PWM Driver","titles":["WS2812 Driver","ChibiOS/ARM Configuration"]},"1231":{"title":"API","titles":["WS2812 Driver"]},"1232":{"title":"void ws2812_setleds(rgb_led_t *ledarray, uint16_t number_of_leds)","titles":["WS2812 Driver","API"]},"1233":{"title":"Arguments","titles":["WS2812 Driver","API","void ws2812_setleds(rgb_led_t *ledarray, uint16_t number_of_leds)"]},"1234":{"title":"Easy Maker - Build One-Off Projects In Configurator","titles":[]},"1235":{"title":"Quickstart","titles":["Easy Maker - Build One-Off Projects In Configurator"]},"1236":{"title":"Direct Pin","titles":[]},"1237":{"title":"Frequently Asked Build Questions","titles":[]},"1238":{"title":"Can't Program on Linux","titles":["Frequently Asked Build Questions"]},"1239":{"title":"Linux udev Rules","titles":["Frequently Asked Build Questions","Can't Program on Linux"]},"1240":{"title":"Serial device is not detected in bootloader mode on Linux","titles":["Frequently Asked Build Questions","Can't Program on Linux"]},"1241":{"title":"Unknown Device for DFU Bootloader","titles":["Frequently Asked Build Questions"]},"1242":{"title":"USB VID and PID","titles":["Frequently Asked Build Questions"]},"1243":{"title":"I just flashed my keyboard and it does nothing/keypresses don't register - it's also ARM (rev6 planck, clueboard 60, hs60v2, etc...) (Feb 2019)","titles":["Frequently Asked Build Questions","USB VID and PID"]},"1244":{"title":"Debugging FAQ","titles":[]},"1245":{"title":"Debugging","titles":["Debugging FAQ"]},"1246":{"title":"Debugging Tools","titles":["Debugging FAQ"]},"1247":{"title":"Debugging With QMK Toolbox","titles":["Debugging FAQ","Debugging Tools"]},"1248":{"title":"Debugging with QMK CLI","titles":["Debugging FAQ","Debugging Tools"]},"1249":{"title":"Debugging With hid_listen","titles":["Debugging FAQ","Debugging Tools"]},"1250":{"title":"Sending Your Own Debug Messages","titles":["Debugging FAQ"]},"1251":{"title":"Debug Examples","titles":["Debugging FAQ"]},"1252":{"title":"Which matrix position is this keypress?","titles":["Debugging FAQ","Debug Examples"]},"1253":{"title":"How long did it take to scan for a keypress?","titles":["Debugging FAQ","Debug Examples"]},"1254":{"title":"hid_listen Can't Recognize Device","titles":["Debugging FAQ"]},"1255":{"title":"Can't Get Message on Console","titles":["Debugging FAQ"]},"1256":{"title":"Frequently Asked Questions","titles":[]},"1257":{"title":"What is QMK?","titles":["Frequently Asked Questions"]},"1258":{"title":"I don't know where to start!","titles":["Frequently Asked Questions"]},"1259":{"title":"How can I flash the firmware I built?","titles":["Frequently Asked Questions"]},"1260":{"title":"What if I have an issue that isn't covered here?","titles":["Frequently Asked Questions"]},"1261":{"title":"What if I found a bug?","titles":["Frequently Asked Questions"]},"1262":{"title":"But git and GitHub are intimidating!","titles":["Frequently Asked Questions"]},"1263":{"title":"I have a Keyboard that I want to add support for","titles":["Frequently Asked Questions"]},"1264":{"title":"What if I want to brand it with QMK?","titles":["Frequently Asked Questions","I have a Keyboard that I want to add support for"]},"1265":{"title":"What Differences Are There Between QMK and TMK?","titles":["Frequently Asked Questions"]},"1266":{"title":"Keymap FAQ","titles":[]},"1267":{"title":"What Keycodes Can I Use?","titles":["Keymap FAQ"]},"1268":{"title":"What Are the Default Keycodes?","titles":["Keymap FAQ"]},"1269":{"title":"How Can I Make Custom Names For Complex Keycodes?","titles":["Keymap FAQ"]},"1270":{"title":"My Keymap Doesn't Update When I Flash It","titles":["Keymap FAQ"]},"1271":{"title":"Some Of My Keys Are Swapped Or Not Working","titles":["Keymap FAQ"]},"1272":{"title":"The Menu Key Isn't Working","titles":["Keymap FAQ"]},"1273":{"title":"Power Keys Aren't Working","titles":["Keymap FAQ"]},"1274":{"title":"One Shot Modifier","titles":["Keymap FAQ"]},"1275":{"title":"Modifier/Layer Stuck","titles":["Keymap FAQ"]},"1276":{"title":"Mechanical Lock Switch Support","titles":["Keymap FAQ"]},"1277":{"title":"Input Special Characters Other Than ASCII like Cédille 'Ç'","titles":["Keymap FAQ"]},"1278":{"title":"Fn Key on macOS","titles":["Keymap FAQ"]},"1279":{"title":"Keys Supported in Mac OSX?","titles":["Keymap FAQ"]},"1280":{"title":"JIS Keys in Mac OSX","titles":["Keymap FAQ"]},"1281":{"title":"RN-42 Bluetooth Doesn't Work with Karabiner","titles":["Keymap FAQ"]},"1282":{"title":"Esc and ` on a Single Key","titles":["Keymap FAQ"]},"1283":{"title":"Eject on Mac OSX","titles":["Keymap FAQ"]},"1284":{"title":"What are "Real" and "Weak" modifiers?","titles":["Keymap FAQ"]},"1285":{"title":"Miscellaneous FAQ","titles":[]},"1286":{"title":"How do I test my keyboard?","titles":["Miscellaneous FAQ"]},"1287":{"title":"Safety Considerations","titles":["Miscellaneous FAQ"]},"1288":{"title":"NKRO Doesn't work","titles":["Miscellaneous FAQ"]},"1289":{"title":"TrackPoint Needs Reset Circuit (PS/2 Mouse Support)","titles":["Miscellaneous FAQ"]},"1290":{"title":"Can't Read Column of Matrix Beyond 16","titles":["Miscellaneous FAQ"]},"1291":{"title":"Special Extra Key Doesn't Work (System, Audio Control Keys)","titles":["Miscellaneous FAQ"]},"1292":{"title":"Wake from Sleep Doesn't Work","titles":["Miscellaneous FAQ"]},"1293":{"title":"Using Arduino?","titles":["Miscellaneous FAQ"]},"1294":{"title":"Enabling JTAG","titles":["Miscellaneous FAQ"]},"1295":{"title":"USB 3 Compatibility","titles":["Miscellaneous FAQ"]},"1296":{"title":"Mac Compatibility","titles":["Miscellaneous FAQ"]},"1297":{"title":"OS X 10.11 and Hub","titles":["Miscellaneous FAQ","Mac Compatibility"]},"1298":{"title":"Problem in BIOS (UEFI) Setup/Resume (Sleep & Wake)/Power Cycles","titles":["Miscellaneous FAQ"]},"1299":{"title":"Modifier Keys","titles":[]},"1300":{"title":"Checking Modifier State","titles":[]},"1301":{"title":"Examples","titles":["Checking Modifier State"]},"1302":{"title":"Alt + Escape for Alt + Tab","titles":["Checking Modifier State","Examples"]},"1303":{"title":"Shift + Backspace for Delete","titles":["Checking Modifier State","Examples"]},"1304":{"title":"Advanced topics","titles":[]},"1305":{"title":"Layers","titles":["Advanced topics"]},"1306":{"title":"Mod-Tap","titles":["Advanced topics"]},"1307":{"title":"One Shot Keys","titles":["Advanced topics"]},"1308":{"title":"Tap-Hold Configuration Options","titles":["Advanced topics"]},"1309":{"title":"Key Overrides","titles":["Advanced topics"]},"1310":{"title":"Converters","titles":[]},"1311":{"title":"Supported Converters","titles":["Converters"]},"1312":{"title":"Overview","titles":["Converters"]},"1313":{"title":"Conditional Configuration","titles":["Converters","Overview"]},"1314":{"title":"Pin Compatibility","titles":["Converters","Overview"]},"1315":{"title":"Pro Micro","titles":["Converters"]},"1316":{"title":"Proton C","titles":["Converters","Pro Micro"]},"1317":{"title":"Adafruit KB2040","titles":["Converters","Pro Micro"]},"1318":{"title":"SparkFun Pro Micro - RP2040, Blok, Bit-C PRO and Michi","titles":["Converters","Pro Micro"]},"1319":{"title":"STeMCell","titles":["Converters","Pro Micro"]},"1320":{"title":"Bonsai C4","titles":["Converters","Pro Micro"]},"1321":{"title":"RP2040 Community Edition - Elite-Pi, Helios, and Liatris","titles":["Converters","Pro Micro"]},"1322":{"title":"Elite-C","titles":["Converters"]},"1323":{"title":"STeMCell {#stemcell}_elite","titles":["Converters","Elite-C"]},"1324":{"title":"RP2040 Community Edition","titles":["Converters","Elite-C"]},"1325":{"title":"Contact bounce / contact chatter","titles":[]},"1326":{"title":"Types of debounce algorithms","titles":["Contact bounce / contact chatter"]},"1327":{"title":"Supported Debounce Algorithms","titles":["Contact bounce / contact chatter"]},"1328":{"title":"Debounce Time","titles":["Contact bounce / contact chatter","Supported Debounce Algorithms"]},"1329":{"title":"Debounce Method","titles":["Contact bounce / contact chatter","Supported Debounce Algorithms"]},"1330":{"title":"Implementing your own debouncing code","titles":["Contact bounce / contact chatter","Supported Debounce Algorithms"]},"1331":{"title":"Persistent Configuration (EEPROM)","titles":[]},"1332":{"title":"Example Implementation","titles":["Persistent Configuration (EEPROM)"]},"1333":{"title":"'EECONFIG' Function Documentation","titles":["Persistent Configuration (EEPROM)"]},"1334":{"title":"Layers","titles":[]},"1335":{"title":"Switching and Toggling Layers","titles":["Layers"]},"1336":{"title":"Caveats","titles":["Layers","Switching and Toggling Layers"]},"1337":{"title":"Working with Layers","titles":["Layers"]},"1338":{"title":"Beginners","titles":["Layers","Working with Layers"]},"1339":{"title":"Intermediate Users","titles":["Layers","Working with Layers"]},"1340":{"title":"Advanced Users","titles":["Layers","Working with Layers"]},"1341":{"title":"Functions","titles":["Layers"]},"1342":{"title":"Layer Change Code","titles":["Layers"]},"1343":{"title":"Example layer_state_set_* Implementation","titles":["Layers","Layer Change Code"]},"1344":{"title":"Example: Keycode to cycle through layers","titles":["Layers","Layer Change Code"]},"1345":{"title":"layer_state_set_* Function Documentation","titles":["Layers","Layer Change Code"]},"1346":{"title":"Layouts: Using a Keymap with Multiple Keyboards","titles":[]},"1347":{"title":"Supporting a Layout","titles":["Layouts: Using a Keymap with Multiple Keyboards"]},"1348":{"title":"Building a Keymap","titles":["Layouts: Using a Keymap with Multiple Keyboards"]},"1349":{"title":"Conflicting layouts","titles":["Layouts: Using a Keymap with Multiple Keyboards","Building a Keymap"]},"1350":{"title":"Tips for Making Layouts Keyboard-Agnostic","titles":["Layouts: Using a Keymap with Multiple Keyboards"]},"1351":{"title":"Includes","titles":["Layouts: Using a Keymap with Multiple Keyboards","Tips for Making Layouts Keyboard-Agnostic"]},"1352":{"title":"Keymaps","titles":["Layouts: Using a Keymap with Multiple Keyboards","Tips for Making Layouts Keyboard-Agnostic"]},"1353":{"title":"Macros","titles":[]},"1354":{"title":"Using Macros In JSON Keymaps","titles":["Macros"]},"1355":{"title":"Selecting Your Host Keyboard Layout","titles":["Macros","Using Macros In JSON Keymaps"]},"1356":{"title":"Macro Basics","titles":["Macros","Using Macros In JSON Keymaps"]},"1357":{"title":"Object Format","titles":["Macros","Using Macros In JSON Keymaps","Macro Basics"]},"1358":{"title":"Using Macros in C Keymaps","titles":["Macros"]},"1359":{"title":"SEND_STRING() & process_record_user","titles":["Macros","Using Macros in C Keymaps"]},"1360":{"title":"Advanced Macros","titles":["Macros","Using Macros in C Keymaps","SEND_STRING() & process_record_user"]},"1361":{"title":"TAP, DOWN and UP","titles":["Macros","Using Macros in C Keymaps","SEND_STRING() & process_record_user"]},"1362":{"title":"Alternative Keymaps","titles":["Macros","Using Macros in C Keymaps","SEND_STRING() & process_record_user"]},"1363":{"title":"Strings in Memory","titles":["Macros","Using Macros in C Keymaps","SEND_STRING() & process_record_user"]},"1364":{"title":"Advanced Macro Functions","titles":["Macros","Using Macros in C Keymaps"]},"1365":{"title":"record->event.pressed","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1366":{"title":"register_code(<kc>);","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1367":{"title":"unregister_code(<kc>);","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1368":{"title":"tap_code(<kc>);","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1369":{"title":"tap_code_delay(<kc>, <delay>);","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1370":{"title":"register_code16(<kc>);, unregister_code16(<kc>);, tap_code16(<kc>); and tap_code16_delay(<kc>, <delay>);","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1371":{"title":"clear_keyboard();","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1372":{"title":"clear_mods();","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1373":{"title":"clear_keyboard_but_mods();","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1374":{"title":"Advanced Example:","titles":["Macros","Using Macros in C Keymaps"]},"1375":{"title":"Super ALT↯TAB","titles":["Macros","Using Macros in C Keymaps","Advanced Example:"]},"1376":{"title":"Userspace: Sharing Code Between Keymaps","titles":[]},"1377":{"title":"Rules.mk","titles":["Userspace: Sharing Code Between Keymaps"]},"1378":{"title":"Override default userspace","titles":["Userspace: Sharing Code Between Keymaps","Rules.mk"]},"1379":{"title":"Configuration Options (config.h)","titles":["Userspace: Sharing Code Between Keymaps"]},"1380":{"title":"Readme (readme.md)","titles":["Userspace: Sharing Code Between Keymaps"]},"1381":{"title":"Build All Keyboards That Support a Specific Keymap","titles":["Userspace: Sharing Code Between Keymaps"]},"1382":{"title":"Examples","titles":["Userspace: Sharing Code Between Keymaps"]},"1383":{"title":"Customized Functions","titles":["Userspace: Sharing Code Between Keymaps","Examples"]},"1384":{"title":"Custom Features","titles":["Userspace: Sharing Code Between Keymaps","Examples"]},"1385":{"title":"Consolidated Macros","titles":["Userspace: Sharing Code Between Keymaps","Examples"]},"1386":{"title":"Audio","titles":[]},"1387":{"title":"AVR based boards","titles":["Audio"]},"1388":{"title":"Wiring","titles":["Audio","AVR based boards"]},"1389":{"title":"ARM based boards","titles":["Audio"]},"1390":{"title":"DAC (basic)","titles":["Audio","ARM based boards"]},"1391":{"title":"Wiring:","titles":["Audio","ARM based boards","DAC (basic)"]},"1392":{"title":"Proton-C Example:","titles":["Audio","ARM based boards","DAC (basic)","Wiring:"]},"1393":{"title":"DAC (additive)","titles":["Audio","ARM based boards"]},"1394":{"title":"PWM (software)","titles":["Audio","ARM based boards"]},"1395":{"title":"Wiring","titles":["Audio","ARM based boards","PWM (software)"]},"1396":{"title":"PWM (hardware)","titles":["Audio","ARM based boards"]},"1397":{"title":"Tone Multiplexing","titles":["Audio"]},"1398":{"title":"Songs","titles":["Audio"]},"1399":{"title":"Audio Config","titles":["Audio"]},"1400":{"title":"Tempo","titles":["Audio"]},"1401":{"title":"ARM Audio Volume","titles":["Audio"]},"1402":{"title":"Voices","titles":["Audio"]},"1403":{"title":"Music Mode","titles":["Audio"]},"1404":{"title":"Music Mask","titles":["Audio","Music Mode"]},"1405":{"title":"Music Map","titles":["Audio","Music Mode"]},"1406":{"title":"Audio Click","titles":["Audio"]},"1407":{"title":"MIDI Functionality","titles":["Audio"]},"1408":{"title":"Audio Keycodes","titles":["Audio"]},"1409":{"title":"Auto Shift: Why Do We Need a Shift Key?","titles":[]},"1410":{"title":"Why Auto Shift?","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1411":{"title":"How Does It Work?","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1412":{"title":"Are There Limitations to Auto Shift?","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1413":{"title":"How Do I Enable Auto Shift?","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1414":{"title":"Modifiers","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1415":{"title":"Configuring Auto Shift","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1416":{"title":"AUTO_SHIFT_TIMEOUT (Value in ms)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1417":{"title":"NO_AUTO_SHIFT_SPECIAL (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1418":{"title":"NO_AUTO_SHIFT_TAB (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1419":{"title":"NO_AUTO_SHIFT_SYMBOLS (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1420":{"title":"NO_AUTO_SHIFT_NUMERIC (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1421":{"title":"NO_AUTO_SHIFT_ALPHA (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1422":{"title":"AUTO_SHIFT_ENTER (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1423":{"title":"Auto Shift Per Key","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1424":{"title":"AUTO_SHIFT_REPEAT (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1425":{"title":"AUTO_SHIFT_NO_AUTO_REPEAT (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1426":{"title":"AUTO_SHIFT_ALPHA (predefined key group)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1427":{"title":"AUTO_SHIFT_NUMERIC (predefined key group)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1428":{"title":"AUTO_SHIFT_SYMBOLS (predefined key group)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1429":{"title":"AUTO_SHIFT_SPECIAL (predefined key group)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1430":{"title":"Custom Shifted Values","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1431":{"title":"Retro Shift","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1432":{"title":"Retro Shift and Tap Hold Configurations","titles":["Auto Shift: Why Do We Need a Shift Key?","Retro Shift"]},"1433":{"title":"Using Auto Shift Setup","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1434":{"title":"Setup","titles":["Auto Shift: Why Do We Need a Shift Key?","Using Auto Shift Setup"]},"1435":{"title":"Use","titles":["Auto Shift: Why Do We Need a Shift Key?","Using Auto Shift Setup"]},"1436":{"title":"An Example Run","titles":["Auto Shift: Why Do We Need a Shift Key?","Using Auto Shift Setup","Use"]},"1437":{"title":"Autocorrect","titles":[]},"1438":{"title":"How does it work?","titles":["Autocorrect"]},"1439":{"title":"How do I enable Autocorrection","titles":["Autocorrect"]},"1440":{"title":"Customizing autocorrect library","titles":["Autocorrect"]},"1441":{"title":"Avoiding false triggers","titles":["Autocorrect","Customizing autocorrect library"]},"1442":{"title":"Overriding Autocorrect","titles":["Autocorrect"]},"1443":{"title":"Keycodes","titles":["Autocorrect","Overriding Autocorrect"]},"1444":{"title":"User Callback Functions","titles":["Autocorrect"]},"1445":{"title":"Process Autocorrect","titles":["Autocorrect","User Callback Functions"]},"1446":{"title":"Process Autocorrect Example","titles":["Autocorrect","User Callback Functions","Process Autocorrect"]},"1447":{"title":"Apply Autocorrect","titles":["Autocorrect","User Callback Functions"]},"1448":{"title":"Apply Autocorrect Example","titles":["Autocorrect","User Callback Functions","Apply Autocorrect"]},"1449":{"title":"Autocorrect Status","titles":["Autocorrect","User Callback Functions"]},"1450":{"title":"Appendix: Trie binary data format","titles":["Autocorrect"]},"1451":{"title":"Encoding","titles":["Autocorrect","Appendix: Trie binary data format"]},"1452":{"title":"Decoding","titles":["Autocorrect","Appendix: Trie binary data format"]},"1453":{"title":"Credits","titles":["Autocorrect"]},"1454":{"title":"Backlighting","titles":[]},"1455":{"title":"Usage","titles":["Backlighting"]},"1456":{"title":"Keycodes","titles":["Backlighting"]},"1457":{"title":"Basic Configuration","titles":["Backlighting"]},"1458":{"title":""On" State","titles":["Backlighting","Basic Configuration"]},"1459":{"title":"Multiple Backlight Pins","titles":["Backlighting","Basic Configuration"]},"1460":{"title":"Driver Configuration","titles":["Backlighting"]},"1461":{"title":"PWM Driver","titles":["Backlighting","Driver Configuration"]},"1462":{"title":"Timer Driver","titles":["Backlighting","Driver Configuration"]},"1463":{"title":"Software Driver","titles":["Backlighting","Driver Configuration"]},"1464":{"title":"Custom Driver","titles":["Backlighting","Driver Configuration"]},"1465":{"title":"AVR Configuration","titles":["Backlighting"]},"1466":{"title":"PWM Driver","titles":["Backlighting","AVR Configuration"]},"1467":{"title":"Timer Driver","titles":["Backlighting","AVR Configuration"]},"1468":{"title":"ChibiOS/ARM Configuration","titles":["Backlighting"]},"1469":{"title":"PWM Driver","titles":["Backlighting","ChibiOS/ARM Configuration"]},"1470":{"title":"Timer Driver","titles":["Backlighting","ChibiOS/ARM Configuration"]},"1471":{"title":"Example Schematic","titles":["Backlighting"]},"1472":{"title":"API","titles":["Backlighting"]},"1473":{"title":"void backlight_toggle(void)","titles":["Backlighting","API"]},"1474":{"title":"void backlight_enable(void)","titles":["Backlighting","API"]},"1475":{"title":"void backlight_disable(void)","titles":["Backlighting","API"]},"1476":{"title":"void backlight_step(void)","titles":["Backlighting","API"]},"1477":{"title":"void backlight_increase(void)","titles":["Backlighting","API"]},"1478":{"title":"void backlight_decrease(void)","titles":["Backlighting","API"]},"1479":{"title":"void backlight_level(uint8_t level)","titles":["Backlighting","API"]},"1480":{"title":"Arguments","titles":["Backlighting","API","void backlight_level(uint8_t level)"]},"1481":{"title":"uint8_t get_backlight_level(void)","titles":["Backlighting","API"]},"1482":{"title":"Return Value","titles":["Backlighting","API","uint8_t get_backlight_level(void)"]},"1483":{"title":"bool is_backlight_enabled(void)","titles":["Backlighting","API"]},"1484":{"title":"Return Value","titles":["Backlighting","API","bool is_backlight_enabled(void)"]},"1485":{"title":"void backlight_toggle_breathing(void)","titles":["Backlighting","API"]},"1486":{"title":"void backlight_enable_breathing(void)","titles":["Backlighting","API"]},"1487":{"title":"void backlight_disable_breathing(void)","titles":["Backlighting","API"]},"1488":{"title":"bool is_backlight_breathing(void)","titles":["Backlighting","API"]},"1489":{"title":"Return Value","titles":["Backlighting","API","bool is_backlight_breathing(void)"]},"1490":{"title":"Bluetooth","titles":[]},"1491":{"title":"Bluetooth Known Supported Hardware","titles":["Bluetooth"]},"1492":{"title":"Adafruit BLE SPI Friend","titles":["Bluetooth","Bluetooth Known Supported Hardware"]},"1493":{"title":"Bluetooth Rules.mk Options","titles":["Bluetooth"]},"1494":{"title":"Bluetooth Keycodes","titles":["Bluetooth"]},"1495":{"title":"Bootmagic","titles":[]},"1496":{"title":"Split Keyboards","titles":["Bootmagic"]},"1497":{"title":"Advanced Bootmagic","titles":["Bootmagic"]},"1498":{"title":"Addenda","titles":["Bootmagic"]},"1499":{"title":"Caps Word","titles":[]},"1500":{"title":"How do I enable Caps Word","titles":["Caps Word"]},"1501":{"title":"Troubleshooting: Command","titles":["Caps Word","How do I enable Caps Word"]},"1502":{"title":"Customizing Caps Word","titles":["Caps Word"]},"1503":{"title":"Invert on shift","titles":["Caps Word","Customizing Caps Word"]},"1504":{"title":"Idle timeout","titles":["Caps Word","Customizing Caps Word"]},"1505":{"title":"Functions","titles":["Caps Word","Customizing Caps Word"]},"1506":{"title":"Configure which keys are "word breaking"","titles":["Caps Word","Customizing Caps Word"]},"1507":{"title":"Representing Caps Word state","titles":["Caps Word","Customizing Caps Word"]},"1508":{"title":"Combos","titles":[]},"1509":{"title":"Advanced Keycodes Support","titles":["Combos"]},"1510":{"title":"Overlapping Combos","titles":["Combos"]},"1511":{"title":"Examples","titles":["Combos"]},"1512":{"title":"Keycodes","titles":["Combos"]},"1513":{"title":"Advanced Configuration","titles":["Combos"]},"1514":{"title":"Combo Term","titles":["Combos","Advanced Configuration"]},"1515":{"title":"Buffer and state sizes","titles":["Combos","Advanced Configuration"]},"1516":{"title":"Modifier Combos","titles":["Combos","Advanced Configuration"]},"1517":{"title":"Strict key press order","titles":["Combos","Advanced Configuration"]},"1518":{"title":"Per Combo Timing, Holding, Tapping and Key Press Order","titles":["Combos","Advanced Configuration"]},"1519":{"title":"Generic hook to (dis)allow a combo activation","titles":["Combos","Advanced Configuration"]},"1520":{"title":"Combo timer","titles":["Combos","Advanced Configuration"]},"1521":{"title":"#define COMBO_STRICT_TIMER","titles":["Combos","Advanced Configuration","Combo timer"]},"1522":{"title":"#define COMBO_NO_TIMER","titles":["Combos","Advanced Configuration","Combo timer"]},"1523":{"title":"Customizable key releases","titles":["Combos","Advanced Configuration"]},"1524":{"title":"Layer independent combos","titles":["Combos","Advanced Configuration"]},"1525":{"title":"Combo reference layers by layer.","titles":["Combos","Advanced Configuration","Layer independent combos"]},"1526":{"title":"User callbacks","titles":["Combos"]},"1527":{"title":"Dictionary Management","titles":["Combos"]},"1528":{"title":"Command","titles":[]},"1529":{"title":"Usage","titles":["Command"]},"1530":{"title":"Configuration","titles":["Command"]},"1531":{"title":"Digitizer","titles":[]},"1532":{"title":"Usage","titles":["Digitizer"]},"1533":{"title":"Positioning","titles":["Digitizer"]},"1534":{"title":"Examples","titles":["Digitizer"]},"1535":{"title":"API","titles":["Digitizer"]},"1536":{"title":"struct digitizer_t","titles":["Digitizer","API"]},"1537":{"title":"Members","titles":["Digitizer","API","struct digitizer_t"]},"1538":{"title":"void digitizer_flush(void)","titles":["Digitizer","API"]},"1539":{"title":"void digitizer_in_range_on(void)","titles":["Digitizer","API"]},"1540":{"title":"void digitizer_in_range_off(void)","titles":["Digitizer","API"]},"1541":{"title":"void digitizer_tip_switch_on(void)","titles":["Digitizer","API"]},"1542":{"title":"void digitizer_tip_switch_off(void)","titles":["Digitizer","API"]},"1543":{"title":"void digitizer_barrel_switch_on(void)","titles":["Digitizer","API"]},"1544":{"title":"void digitizer_barrel_switch_off(void)","titles":["Digitizer","API"]},"1545":{"title":"void digitizer_set_position(float x, float y)","titles":["Digitizer","API"]},"1546":{"title":"Arguments","titles":["Digitizer","API","void digitizer_set_position(float x, float y)"]},"1547":{"title":"DIP Switches","titles":[]},"1548":{"title":"DIP Switch map","titles":["DIP Switches"]},"1549":{"title":"Callbacks","titles":["DIP Switches"]},"1550":{"title":"Hardware","titles":["DIP Switches"]},"1551":{"title":"Connects each switch in the dip switch to the GPIO pin of the MCU","titles":["DIP Switches","Hardware"]},"1552":{"title":"Connect each switch in the DIP switch to an unused intersections in the key matrix.","titles":["DIP Switches","Hardware"]},"1553":{"title":"Dynamic Macros: Record and Replay Macros in Runtime","titles":[]},"1554":{"title":"Customization","titles":["Dynamic Macros: Record and Replay Macros in Runtime"]},"1555":{"title":"DYNAMIC_MACRO_USER_CALL","titles":["Dynamic Macros: Record and Replay Macros in Runtime","Customization"]},"1556":{"title":"User Hooks","titles":["Dynamic Macros: Record and Replay Macros in Runtime","Customization"]},"1557":{"title":"Encoders","titles":[]},"1558":{"title":"Split Keyboards","titles":["Encoders"]},"1559":{"title":"Encoder map","titles":["Encoders"]},"1560":{"title":"Callbacks","titles":["Encoders"]},"1561":{"title":"Hardware","titles":["Encoders"]},"1562":{"title":"Multiple Encoders","titles":["Encoders"]},"1563":{"title":"Grave Escape","titles":[]},"1564":{"title":"Usage","titles":["Grave Escape"]},"1565":{"title":"What Your OS Sees","titles":["Grave Escape"]},"1566":{"title":"Keycodes","titles":["Grave Escape"]},"1567":{"title":"Caveats","titles":["Grave Escape","Keycodes"]},"1568":{"title":"Configuration","titles":["Grave Escape"]},"1569":{"title":"Haptic Feedback","titles":[]},"1570":{"title":"Haptic feedback rules.mk options","titles":["Haptic Feedback"]},"1571":{"title":"Known Supported Hardware","titles":["Haptic Feedback"]},"1572":{"title":"Haptic Keycodes","titles":["Haptic Feedback"]},"1573":{"title":"Solenoids","titles":["Haptic Feedback","Haptic Keycodes"]},"1574":{"title":"DRV2605L","titles":["Haptic Feedback","Haptic Keycodes"]},"1575":{"title":"Feedback motor setup","titles":["Haptic Feedback","Haptic Keycodes","DRV2605L"]},"1576":{"title":"ERM","titles":["Haptic Feedback","Haptic Keycodes","DRV2605L","Feedback motor setup"]},"1577":{"title":"LRA","titles":["Haptic Feedback","Haptic Keycodes","DRV2605L","Feedback motor setup"]},"1578":{"title":"DRV2605L waveform library","titles":["Haptic Feedback","Haptic Keycodes","DRV2605L"]},"1579":{"title":"Optional DRV2605L defines","titles":["Haptic Feedback","Haptic Keycodes"]},"1580":{"title":"DRV2605L Continuous Haptic Mode","titles":["Haptic Feedback","Haptic Keycodes"]},"1581":{"title":"Haptic Key Exclusion","titles":["Haptic Feedback"]},"1582":{"title":"NO_HAPTIC_MOD","titles":["Haptic Feedback","Haptic Key Exclusion"]},"1583":{"title":"NO_HAPTIC_ALPHA","titles":["Haptic Feedback","Haptic Key Exclusion"]},"1584":{"title":"NO_HAPTIC_PUNCTUATION","titles":["Haptic Feedback","Haptic Key Exclusion"]},"1585":{"title":"NO_HAPTIC_LOCKKEYS","titles":["Haptic Feedback","Haptic Key Exclusion"]},"1586":{"title":"NO_HAPTIC_NAV","titles":["Haptic Feedback","Haptic Key Exclusion"]},"1587":{"title":"NO_HAPTIC_NUMERIC","titles":["Haptic Feedback","Haptic Key Exclusion"]},"1588":{"title":"HD44780 LCD Driver","titles":[]},"1589":{"title":"Supported Hardware","titles":["HD44780 LCD Driver"]},"1590":{"title":"Usage","titles":["HD44780 LCD Driver"]},"1591":{"title":"Basic Configuration","titles":["HD44780 LCD Driver"]},"1592":{"title":"Examples","titles":["HD44780 LCD Driver"]},"1593":{"title":"Hello World","titles":["HD44780 LCD Driver","Examples"]},"1594":{"title":"Custom Character Definition","titles":["HD44780 LCD Driver","Examples"]},"1595":{"title":"API","titles":["HD44780 LCD Driver"]},"1596":{"title":"void hd44780_init(bool cursor, bool blink)","titles":["HD44780 LCD Driver","API"]},"1597":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_init(bool cursor, bool blink)"]},"1598":{"title":"void hd44780_clear(void)","titles":["HD44780 LCD Driver","API"]},"1599":{"title":"void hd44780_home(void)","titles":["HD44780 LCD Driver","API"]},"1600":{"title":"void hd44780_on(bool cursor, bool blink)","titles":["HD44780 LCD Driver","API"]},"1601":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_on(bool cursor, bool blink)"]},"1602":{"title":"void hd44780_off(void)","titles":["HD44780 LCD Driver","API"]},"1603":{"title":"void hd44780_set_cursor(uint8_t col, uint8_t line)","titles":["HD44780 LCD Driver","API"]},"1604":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_set_cursor(uint8_t col, uint8_t line)"]},"1605":{"title":"void hd44780_putc(char c)","titles":["HD44780 LCD Driver","API"]},"1606":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_putc(char c)"]},"1607":{"title":"void hd44780_puts(const char *s)","titles":["HD44780 LCD Driver","API"]},"1608":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_puts(const char *s)"]},"1609":{"title":"void hd44780_puts_P(const char *s)","titles":["HD44780 LCD Driver","API"]},"1610":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_puts_P(const char *s)"]},"1611":{"title":"void hd44780_define_char(uint8_t index, uint8_t *data)","titles":["HD44780 LCD Driver","API"]},"1612":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_define_char(uint8_t index, uint8_t *data)"]},"1613":{"title":"void hd44780_define_char_P(uint8_t index, const uint8_t *data)","titles":["HD44780 LCD Driver","API"]},"1614":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_define_char_P(uint8_t index, const uint8_t *data)"]},"1615":{"title":"bool hd44780_busy(void)","titles":["HD44780 LCD Driver","API"]},"1616":{"title":"Return Value","titles":["HD44780 LCD Driver","API","bool hd44780_busy(void)"]},"1617":{"title":"void hd44780_write(uint8_t data, bool isData)","titles":["HD44780 LCD Driver","API"]},"1618":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_write(uint8_t data, bool isData)"]},"1619":{"title":"uint8_t hd44780_read(bool isData)","titles":["HD44780 LCD Driver","API"]},"1620":{"title":"Arguments","titles":["HD44780 LCD Driver","API","uint8_t hd44780_read(bool isData)"]},"1621":{"title":"Return Value","titles":["HD44780 LCD Driver","API","uint8_t hd44780_read(bool isData)"]},"1622":{"title":"void hd44780_command(uint8_t command)","titles":["HD44780 LCD Driver","API"]},"1623":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_command(uint8_t command)"]},"1624":{"title":"void hd44780_data(uint8_t data)","titles":["HD44780 LCD Driver","API"]},"1625":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_data(uint8_t data)"]},"1626":{"title":"void hd44780_set_cgram_address(uint8_t address)","titles":["HD44780 LCD Driver","API"]},"1627":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_set_cgram_address(uint8_t address)"]},"1628":{"title":"void hd44780_set_ddram_address(uint8_t address)","titles":["HD44780 LCD Driver","API"]},"1629":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_set_ddram_address(uint8_t address)"]},"1630":{"title":"Joystick","titles":[]},"1631":{"title":"Usage","titles":["Joystick"]},"1632":{"title":"Configuration","titles":["Joystick"]},"1633":{"title":"Axes","titles":["Joystick","Configuration"]},"1634":{"title":"Virtual Axes","titles":["Joystick","Configuration","Axes"]},"1635":{"title":"Keycodes","titles":["Joystick"]},"1636":{"title":"API","titles":["Joystick"]},"1637":{"title":"struct joystick_t","titles":["Joystick","API"]},"1638":{"title":"Members","titles":["Joystick","API","struct joystick_t"]},"1639":{"title":"struct joystick_config_t","titles":["Joystick","API"]},"1640":{"title":"Members","titles":["Joystick","API","struct joystick_config_t"]},"1641":{"title":"void joystick_flush(void)","titles":["Joystick","API"]},"1642":{"title":"void register_joystick_button(uint8_t button)","titles":["Joystick","API"]},"1643":{"title":"Arguments","titles":["Joystick","API","void register_joystick_button(uint8_t button)"]},"1644":{"title":"void unregister_joystick_button(uint8_t button)","titles":["Joystick","API"]},"1645":{"title":"Arguments","titles":["Joystick","API","void unregister_joystick_button(uint8_t button)"]},"1646":{"title":"int16_t joystick_read_axis(uint8_t axis)","titles":["Joystick","API"]},"1647":{"title":"Arguments","titles":["Joystick","API","int16_t joystick_read_axis(uint8_t axis)"]},"1648":{"title":"Return Value","titles":["Joystick","API","int16_t joystick_read_axis(uint8_t axis)"]},"1649":{"title":"void joystick_set_axis(uint8_t axis, int16_t value)","titles":["Joystick","API"]},"1650":{"title":"Arguments","titles":["Joystick","API","void joystick_set_axis(uint8_t axis, int16_t value)"]},"1651":{"title":"Key Lock","titles":[]},"1652":{"title":"Usage","titles":["Key Lock"]},"1653":{"title":"Keycodes","titles":["Key Lock"]},"1654":{"title":"Caveats","titles":["Key Lock"]},"1655":{"title":"Key Overrides","titles":[]},"1656":{"title":"A few more examples to get started: You could use key overrides to...","titles":["Key Overrides"]},"1657":{"title":"Setup","titles":["Key Overrides"]},"1658":{"title":"Creating Key Overrides","titles":["Key Overrides"]},"1659":{"title":"ko_make_basic(modifiers, key, replacement)","titles":["Key Overrides","Creating Key Overrides"]},"1660":{"title":"ko_make_with_layers(modifiers, key, replacement, layers)","titles":["Key Overrides","Creating Key Overrides"]},"1661":{"title":"ko_make_with_layers_and_negmods(modifiers, key, replacement, layers, negative_mods)","titles":["Key Overrides","Creating Key Overrides"]},"1662":{"title":"ko_make_with_layers_negmods_and_options(modifiers, key, replacement, layers, negative_mods, options)","titles":["Key Overrides","Creating Key Overrides"]},"1663":{"title":"Simple Example","titles":["Key Overrides"]},"1664":{"title":"Intermediate Difficulty Examples","titles":["Key Overrides"]},"1665":{"title":"Media Controls & Screen Brightness","titles":["Key Overrides","Intermediate Difficulty Examples"]},"1666":{"title":"Flexible macOS-friendly Grave Escape","titles":["Key Overrides","Intermediate Difficulty Examples"]},"1667":{"title":"Advanced Examples","titles":["Key Overrides"]},"1668":{"title":"Modifiers as Layer Keys","titles":["Key Overrides","Advanced Examples"]},"1669":{"title":"Keycodes","titles":["Key Overrides"]},"1670":{"title":"Reference for key_override_t","titles":["Key Overrides"]},"1671":{"title":"Reference for ko_option_t","titles":["Key Overrides"]},"1672":{"title":"For Advanced Users: Inner Workings","titles":["Key Overrides"]},"1673":{"title":"Activation","titles":["Key Overrides","For Advanced Users: Inner Workings","Modifiers as Layer Keys"]},"1674":{"title":"Deactivation","titles":["Key Overrides","For Advanced Users: Inner Workings","Modifiers as Layer Keys"]},"1675":{"title":"Key Repeat Delay","titles":["Key Overrides","For Advanced Users: Inner Workings","Modifiers as Layer Keys"]},"1676":{"title":"Difference to Combos","titles":["Key Overrides"]},"1677":{"title":"Solution to the problem of flashing modifiers","titles":["Key Overrides"]},"1678":{"title":"The Leader Key: A New Kind of Modifier","titles":[]},"1679":{"title":"Usage","titles":["The Leader Key: A New Kind of Modifier"]},"1680":{"title":"Callbacks","titles":["The Leader Key: A New Kind of Modifier"]},"1681":{"title":"Basic Configuration","titles":["The Leader Key: A New Kind of Modifier"]},"1682":{"title":"Timeout","titles":["The Leader Key: A New Kind of Modifier","Basic Configuration"]},"1683":{"title":"Per-Key Timeout","titles":["The Leader Key: A New Kind of Modifier","Basic Configuration"]},"1684":{"title":"Disabling Initial Timeout","titles":["The Leader Key: A New Kind of Modifier","Basic Configuration"]},"1685":{"title":"Strict Key Processing","titles":["The Leader Key: A New Kind of Modifier","Basic Configuration"]},"1686":{"title":"Example","titles":["The Leader Key: A New Kind of Modifier"]},"1687":{"title":"Keycodes","titles":["The Leader Key: A New Kind of Modifier"]},"1688":{"title":"API","titles":["The Leader Key: A New Kind of Modifier"]},"1689":{"title":"void leader_start_user(void)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1690":{"title":"void leader_end_user(void)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1691":{"title":"void leader_start(void)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1692":{"title":"void leader_end(void)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1693":{"title":"bool leader_sequence_active(void)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1694":{"title":"bool leader_sequence_add(uint16_t keycode)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1695":{"title":"Arguments","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_add(uint16_t keycode)"]},"1696":{"title":"Return Value","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_add(uint16_t keycode)"]},"1697":{"title":"bool leader_sequence_timed_out(void)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1698":{"title":"bool leader_reset_timer(void)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1699":{"title":"bool leader_sequence_one_key(uint16_t kc)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1700":{"title":"Arguments","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_one_key(uint16_t kc)"]},"1701":{"title":"Return Value","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_one_key(uint16_t kc)"]},"1702":{"title":"bool leader_sequence_two_keys(uint16_t kc1, uint16_t kc2)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1703":{"title":"Arguments","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_two_keys(uint16_t kc1, uint16_t kc2)"]},"1704":{"title":"Return Value","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_two_keys(uint16_t kc1, uint16_t kc2)"]},"1705":{"title":"bool leader_sequence_three_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1706":{"title":"Arguments","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_three_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3)"]},"1707":{"title":"Return Value","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_three_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3)"]},"1708":{"title":"bool leader_sequence_four_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3, uint16_t kc4)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1709":{"title":"Arguments","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_four_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3, uint16_t kc4)"]},"1710":{"title":"Return Value","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_four_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3, uint16_t kc4)"]},"1711":{"title":"bool leader_sequence_five_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3, uint16_t kc4, uint16_t kc5)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1712":{"title":"Arguments","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_five_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3, uint16_t kc4, uint16_t kc5)"]},"1713":{"title":"Return Value","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_five_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3, uint16_t kc4, uint16_t kc5)"]},"1714":{"title":"LED Indicators","titles":[]},"1715":{"title":"Configuration Options","titles":["LED Indicators"]},"1716":{"title":"LED update function","titles":["LED Indicators"]},"1717":{"title":"Example of keyboard LED update implementation","titles":["LED Indicators","LED update function"]},"1718":{"title":"Example of user LED update implementation","titles":["LED Indicators","LED update function"]},"1719":{"title":"Host keyboard LED state","titles":["LED Indicators"]},"1720":{"title":"led_update_ports()","titles":["LED Indicators"]},"1721":{"title":"Setting Physical LED State","titles":["LED Indicators"]},"1722":{"title":"Ergodox Boards","titles":["LED Indicators","Setting Physical LED State"]},"1723":{"title":"LED Matrix Lighting","titles":[]},"1724":{"title":"Driver Configuration","titles":["LED Matrix Lighting"]},"1725":{"title":"Common Configuration","titles":["LED Matrix Lighting"]},"1726":{"title":"Flags","titles":["LED Matrix Lighting"]},"1727":{"title":"Keycodes","titles":["LED Matrix Lighting"]},"1728":{"title":"LED Matrix Effects","titles":["LED Matrix Lighting"]},"1729":{"title":"Custom LED Matrix Effects","titles":["LED Matrix Lighting"]},"1730":{"title":"Additional config.h Options","titles":["LED Matrix Lighting"]},"1731":{"title":"EEPROM storage","titles":["LED Matrix Lighting"]},"1732":{"title":"Callbacks","titles":["LED Matrix Lighting"]},"1733":{"title":"Indicators","titles":["LED Matrix Lighting","Callbacks"]},"1734":{"title":"API","titles":["LED Matrix Lighting"]},"1735":{"title":"void led_matrix_toggle(void)","titles":["LED Matrix Lighting","API"]},"1736":{"title":"void led_matrix_toggle_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1737":{"title":"void led_matrix_enable(void)","titles":["LED Matrix Lighting","API"]},"1738":{"title":"void led_matrix_enable_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1739":{"title":"void led_matrix_disable(void)","titles":["LED Matrix Lighting","API"]},"1740":{"title":"void led_matrix_disable_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1741":{"title":"bool led_matrix_is_enabled(void)","titles":["LED Matrix Lighting","API"]},"1742":{"title":"Return Value","titles":["LED Matrix Lighting","API","bool led_matrix_is_enabled(void)"]},"1743":{"title":"void led_matrix_set_value(uint8_t index, uint8_t v)","titles":["LED Matrix Lighting","API"]},"1744":{"title":"Arguments","titles":["LED Matrix Lighting","API","void led_matrix_set_value(uint8_t index, uint8_t v)"]},"1745":{"title":"void led_matrix_set_value_all(uint8_t v)","titles":["LED Matrix Lighting","API"]},"1746":{"title":"Arguments","titles":["LED Matrix Lighting","API","void led_matrix_set_value_all(uint8_t v)"]},"1747":{"title":"void led_matrix_mode(uint8_t mode)","titles":["LED Matrix Lighting","API"]},"1748":{"title":"Arguments","titles":["LED Matrix Lighting","API","void led_matrix_mode(uint8_t mode)"]},"1749":{"title":"void led_matrix_mode_noeeprom(uint8_t mode)","titles":["LED Matrix Lighting","API"]},"1750":{"title":"Arguments","titles":["LED Matrix Lighting","API","void led_matrix_mode_noeeprom(uint8_t mode)"]},"1751":{"title":"void led_matrix_step(void)","titles":["LED Matrix Lighting","API"]},"1752":{"title":"void led_matrix_step_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1753":{"title":"void led_matrix_step_reverse(void)","titles":["LED Matrix Lighting","API"]},"1754":{"title":"void led_matrix_step_reverse_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1755":{"title":"uint8_t led_matrix_get_mode(void)","titles":["LED Matrix Lighting","API"]},"1756":{"title":"Return Value","titles":["LED Matrix Lighting","API","uint8_t led_matrix_get_mode(void)"]},"1757":{"title":"void val_matrix_increase_val(void)","titles":["LED Matrix Lighting","API"]},"1758":{"title":"void led_matrix_increase_val_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1759":{"title":"void led_matrix_decrease_val(void)","titles":["LED Matrix Lighting","API"]},"1760":{"title":"void led_matrix_decrease_val_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1761":{"title":"uint8_t led_matrix_get_val(void)","titles":["LED Matrix Lighting","API"]},"1762":{"title":"Return Value","titles":["LED Matrix Lighting","API","uint8_t led_matrix_get_val(void)"]},"1763":{"title":"void led_matrix_increase_speed(void)","titles":["LED Matrix Lighting","API"]},"1764":{"title":"void led_matrix_increase_speed_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1765":{"title":"void led_matrix_decrease_speed(void)","titles":["LED Matrix Lighting","API"]},"1766":{"title":"void led_matrix_decrease_speed_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1767":{"title":"void led_matrix_set_speed(uint8_t speed)","titles":["LED Matrix Lighting","API"]},"1768":{"title":"Arguments","titles":["LED Matrix Lighting","API","void led_matrix_set_speed(uint8_t speed)"]},"1769":{"title":"void led_matrix_set_speed_noeeprom(uint8_t speed)","titles":["LED Matrix Lighting","API"]},"1770":{"title":"Arguments","titles":["LED Matrix Lighting","API","void led_matrix_set_speed_noeeprom(uint8_t speed)"]},"1771":{"title":"uint8_t led_matrix_get_speed(void)","titles":["LED Matrix Lighting","API"]},"1772":{"title":"Return Value","titles":["LED Matrix Lighting","API","uint8_t led_matrix_get_speed(void)"]},"1773":{"title":"void led_matrix_reload_from_eeprom(void)","titles":["LED Matrix Lighting","API"]},"1774":{"title":"bool led_matrix_get_suspend_state(void)","titles":["LED Matrix Lighting","API"]},"1775":{"title":"Return Value","titles":["LED Matrix Lighting","API","bool led_matrix_get_suspend_state(void)"]},"1776":{"title":"bool led_matrix_indicators_kb(void)","titles":["LED Matrix Lighting","API"]},"1777":{"title":"Return Value","titles":["LED Matrix Lighting","API","bool led_matrix_indicators_kb(void)"]},"1778":{"title":"bool led_matrix_indicators_user(void)","titles":["LED Matrix Lighting","API"]},"1779":{"title":"Return Value","titles":["LED Matrix Lighting","API","bool led_matrix_indicators_user(void)"]},"1780":{"title":"bool led_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max)","titles":["LED Matrix Lighting","API"]},"1781":{"title":"Arguments","titles":["LED Matrix Lighting","API"]},"1782":{"title":"Return Value","titles":["LED Matrix Lighting","API","Arguments"]},"1783":{"title":"bool led_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max)","titles":["LED Matrix Lighting","API"]},"1784":{"title":"Arguments","titles":["LED Matrix Lighting","API"]},"1785":{"title":"Return Value","titles":["LED Matrix Lighting","API","Arguments"]},"1786":{"title":"MIDI","titles":[]},"1787":{"title":"Usage","titles":["MIDI"]},"1788":{"title":"Caveats","titles":["MIDI","Usage"]},"1789":{"title":"Basic MIDI","titles":["MIDI","Usage"]},"1790":{"title":"Advanced MIDI","titles":["MIDI","Usage"]},"1791":{"title":"Sending Control Change (CC) Messages","titles":["MIDI","Usage","Advanced MIDI"]},"1792":{"title":"Example code for using Generic On Off Switches as per MIDI Specification.","titles":["MIDI","Usage","Advanced MIDI"]},"1793":{"title":"Keycodes","titles":["MIDI","Usage"]},"1794":{"title":"Configuration","titles":["MIDI","Usage"]},"1795":{"title":"References","titles":["MIDI","Usage"]},"1796":{"title":"MIDI Specification","titles":["MIDI","Usage","References"]},"1797":{"title":"QMK C Files","titles":["MIDI","Usage","References"]},"1798":{"title":"Mouse keys","titles":[]},"1799":{"title":"Adding mouse keys to your keyboard","titles":["Mouse keys"]},"1800":{"title":"Enabling mouse keys","titles":["Mouse keys","Adding mouse keys to your keyboard"]},"1801":{"title":"Mapping mouse actions","titles":["Mouse keys","Adding mouse keys to your keyboard"]},"1802":{"title":"Configuring mouse keys","titles":["Mouse keys"]},"1803":{"title":"Accelerated mode","titles":["Mouse keys","Configuring mouse keys"]},"1804":{"title":"Kinetic Mode","titles":["Mouse keys","Configuring mouse keys"]},"1805":{"title":"Constant mode","titles":["Mouse keys","Configuring mouse keys"]},"1806":{"title":"Combined mode","titles":["Mouse keys","Configuring mouse keys"]},"1807":{"title":"Inertia mode","titles":["Mouse keys","Configuring mouse keys"]},"1808":{"title":"Overlapping mouse key control","titles":["Mouse keys","Configuring mouse keys"]},"1809":{"title":"Use with PS/2 Mouse and Pointing Device","titles":["Mouse keys"]},"1810":{"title":"OLED Driver","titles":[]},"1811":{"title":"Supported Hardware","titles":["OLED Driver"]},"1812":{"title":"Usage","titles":["OLED Driver"]},"1813":{"title":"OLED type","titles":["OLED Driver"]},"1814":{"title":"Logo Example","titles":["OLED Driver"]},"1815":{"title":"Buffer Read Example","titles":["OLED Driver"]},"1816":{"title":"Other Examples","titles":["OLED Driver"]},"1817":{"title":"Basic Configuration","titles":["OLED Driver"]},"1818":{"title":"I2C Configuration","titles":["OLED Driver","Basic Configuration"]},"1819":{"title":"SPI Configuration","titles":["OLED Driver","Basic Configuration"]},"1820":{"title":"128x64 & Custom sized OLED Displays","titles":["OLED Driver"]},"1821":{"title":"90 Degree Rotation - Technical Mumbo Jumbo","titles":["OLED Driver","128x64 & Custom sized OLED Displays"]},"1822":{"title":"OLED API","titles":["OLED Driver"]},"1823":{"title":"SSD1306.h Driver Conversion Guide","titles":["OLED Driver"]},"1824":{"title":"OS Detection","titles":[]},"1825":{"title":"Usage","titles":["OS Detection"]},"1826":{"title":"Callbacks","titles":["OS Detection"]},"1827":{"title":"OS detection stability","titles":["OS Detection"]},"1828":{"title":"KVM and USB switches","titles":["OS Detection"]},"1829":{"title":"Configuration Options","titles":["OS Detection"]},"1830":{"title":"Debug","titles":["OS Detection"]},"1831":{"title":"Credits","titles":["OS Detection"]},"1832":{"title":"Pointing Device","titles":[]},"1833":{"title":"Sensor Drivers","titles":["Pointing Device"]},"1834":{"title":"ADNS 5050 Sensor","titles":["Pointing Device","Sensor Drivers"]},"1835":{"title":"ADNS 9800 Sensor","titles":["Pointing Device","Sensor Drivers"]},"1836":{"title":"Analog Joystick","titles":["Pointing Device","Sensor Drivers"]},"1837":{"title":"Azoteq IQS5XX Trackpad","titles":["Pointing Device","Sensor Drivers"]},"1838":{"title":"Device settings","titles":["Pointing Device","Sensor Drivers","Azoteq IQS5XX Trackpad"]},"1839":{"title":"Gesture settings","titles":["Pointing Device","Sensor Drivers","Azoteq IQS5XX Trackpad"]},"1840":{"title":"Rotation settings","titles":["Pointing Device","Sensor Drivers","Azoteq IQS5XX Trackpad"]},"1841":{"title":"Cirque Trackpad","titles":["Pointing Device","Sensor Drivers"]},"1842":{"title":"Common settings","titles":["Pointing Device","Sensor Drivers","Cirque Trackpad"]},"1843":{"title":"Absolute mode settings","titles":["Pointing Device","Sensor Drivers","Cirque Trackpad"]},"1844":{"title":"Absolute mode gestures","titles":["Pointing Device","Sensor Drivers","Cirque Trackpad"]},"1845":{"title":"Relative mode gestures","titles":["Pointing Device","Sensor Drivers","Cirque Trackpad"]},"1846":{"title":"PAW 3204 Sensor","titles":["Pointing Device","Sensor Drivers"]},"1847":{"title":"Pimoroni Trackball","titles":["Pointing Device","Sensor Drivers"]},"1848":{"title":"PMW3320 Sensor","titles":["Pointing Device","Sensor Drivers"]},"1849":{"title":"PMW 3360 and PMW 3389 Sensor","titles":["Pointing Device","Sensor Drivers"]},"1850":{"title":"Custom Driver","titles":["Pointing Device","Sensor Drivers"]},"1851":{"title":"Common Configuration","titles":["Pointing Device"]},"1852":{"title":"Split Keyboard Configuration","titles":["Pointing Device"]},"1853":{"title":"Callbacks and Functions","titles":["Pointing Device"]},"1854":{"title":"Split Keyboard Callbacks and Functions","titles":["Pointing Device"]},"1855":{"title":"Manipulating Mouse Reports","titles":[]},"1856":{"title":"Examples","titles":["Manipulating Mouse Reports"]},"1857":{"title":"Custom Mouse Keycode","titles":["Manipulating Mouse Reports","Examples"]},"1858":{"title":"Drag Scroll or Mouse Scroll","titles":["Manipulating Mouse Reports","Examples"]},"1859":{"title":"Advanced Drag Scroll","titles":["Manipulating Mouse Reports","Examples"]},"1860":{"title":"Split Examples","titles":["Manipulating Mouse Reports"]},"1861":{"title":"Single Pointing Device","titles":["Manipulating Mouse Reports","Split Examples"]},"1862":{"title":"Combined Pointing Devices","titles":["Manipulating Mouse Reports","Split Examples"]},"1863":{"title":"Troubleshooting","titles":[]},"1864":{"title":"Automatic Mouse Layer","titles":[]},"1865":{"title":"Behaviour of Layer keys that activate the target layer","titles":["Automatic Mouse Layer"]},"1866":{"title":"How to enable:","titles":["Automatic Mouse Layer"]},"1867":{"title":"How to Customize:","titles":["Automatic Mouse Layer"]},"1868":{"title":"config.h Options:","titles":["Automatic Mouse Layer","How to Customize:"]},"1869":{"title":"Adding mouse keys","titles":["Automatic Mouse Layer","How to Customize:"]},"1870":{"title":"Callbacks for setting up additional key codes as mouse keys:","titles":["Automatic Mouse Layer","How to Customize:","Adding mouse keys"]},"1871":{"title":"To use the callback function to add mouse keys:","titles":["Automatic Mouse Layer","How to Customize:","Adding mouse keys","Callbacks for setting up additional key codes as mouse keys:"]},"1872":{"title":"Advanced control","titles":["Automatic Mouse Layer"]},"1873":{"title":"Functions to control auto mouse enable and target layer:","titles":["Automatic Mouse Layer","Advanced control"]},"1874":{"title":"Functions for handling custom key events:","titles":["Automatic Mouse Layer","Advanced control"]},"1875":{"title":"Advanced control examples","titles":["Automatic Mouse Layer","Advanced control"]},"1876":{"title":"Disable auto mouse on certain layers:","titles":["Automatic Mouse Layer","Advanced control","Advanced control examples"]},"1877":{"title":"Set different target layer when a particular layer is active:","titles":["Automatic Mouse Layer","Advanced control","Advanced control examples"]},"1878":{"title":"Use custom keys to control auto mouse:","titles":["Automatic Mouse Layer","Advanced control"]},"1879":{"title":"Customize Target Layer Activation","titles":["Automatic Mouse Layer"]},"1880":{"title":"Auto Mouse for Custom Pointing Device Task","titles":["Automatic Mouse Layer"]},"1881":{"title":"Programmable Button","titles":[]},"1882":{"title":"Usage","titles":["Programmable Button"]},"1883":{"title":"Keycodes","titles":["Programmable Button"]},"1884":{"title":"API","titles":["Programmable Button"]},"1885":{"title":"void programmable_button_clear(void)","titles":["Programmable Button","API"]},"1886":{"title":"void programmable_button_add(uint8_t index)","titles":["Programmable Button","API"]},"1887":{"title":"Arguments","titles":["Programmable Button","API","void programmable_button_add(uint8_t index)"]},"1888":{"title":"void programmable_button_remove(uint8_t index)","titles":["Programmable Button","API"]},"1889":{"title":"Arguments","titles":["Programmable Button","API","void programmable_button_remove(uint8_t index)"]},"1890":{"title":"void programmable_button_register(uint8_t index)","titles":["Programmable Button","API"]},"1891":{"title":"Arguments","titles":["Programmable Button","API","void programmable_button_register(uint8_t index)"]},"1892":{"title":"void programmable_button_unregister(uint8_t index)","titles":["Programmable Button","API"]},"1893":{"title":"Arguments","titles":["Programmable Button","API","void programmable_button_unregister(uint8_t index)"]},"1894":{"title":"bool programmable_button_is_on(uint8_t index)","titles":["Programmable Button","API"]},"1895":{"title":"Arguments","titles":["Programmable Button","API","bool programmable_button_is_on(uint8_t index)"]},"1896":{"title":"Return Value","titles":["Programmable Button","API","bool programmable_button_is_on(uint8_t index)"]},"1897":{"title":"void programmable_button_flush(void)","titles":["Programmable Button","API"]},"1898":{"title":"uint32_t programmable_button_get_report(void)","titles":["Programmable Button","API"]},"1899":{"title":"Return Value","titles":["Programmable Button","API","uint32_t programmable_button_get_report(void)"]},"1900":{"title":"void programmable_button_set_report(uint32_t report)","titles":["Programmable Button","API"]},"1901":{"title":"Arguments","titles":["Programmable Button","API","void programmable_button_set_report(uint32_t report)"]},"1902":{"title":"PS/2 Mouse Support","titles":[]},"1903":{"title":"The Circuitry between Trackpoint and Controller","titles":["PS/2 Mouse Support"]},"1904":{"title":"Busywait Version","titles":["PS/2 Mouse Support"]},"1905":{"title":"Interrupt Version (AVR/ATMega32u4)","titles":["PS/2 Mouse Support","Busywait Version"]},"1906":{"title":"Interrupt Version (ARM chibios)","titles":["PS/2 Mouse Support","Busywait Version"]},"1907":{"title":"USART Version","titles":["PS/2 Mouse Support","Busywait Version"]},"1908":{"title":"RP2040 PIO Version","titles":["PS/2 Mouse Support","Busywait Version"]},"1909":{"title":"Additional Settings","titles":["PS/2 Mouse Support"]},"1910":{"title":"PS/2 Mouse Features","titles":["PS/2 Mouse Support","Additional Settings"]},"1911":{"title":"Fine Control","titles":["PS/2 Mouse Support","Additional Settings"]},"1912":{"title":"Scroll Button","titles":["PS/2 Mouse Support","Additional Settings"]},"1913":{"title":"Invert Mouse buttons","titles":["PS/2 Mouse Support","Additional Settings"]},"1914":{"title":"Invert Mouse and Scroll Axes","titles":["PS/2 Mouse Support","Additional Settings"]},"1915":{"title":"Rotate Mouse Axes","titles":["PS/2 Mouse Support","Additional Settings"]},"1916":{"title":"Debug Settings","titles":["PS/2 Mouse Support","Additional Settings"]},"1917":{"title":"Movement Hook","titles":["PS/2 Mouse Support","Additional Settings"]},"1918":{"title":"Raw HID","titles":[]},"1919":{"title":"Usage","titles":["Raw HID"]},"1920":{"title":"Basic Configuration","titles":["Raw HID"]},"1921":{"title":"Sending Data to the Keyboard","titles":["Raw HID"]},"1922":{"title":"Receiving Data from the Keyboard","titles":["Raw HID"]},"1923":{"title":"Simple Example","titles":["Raw HID"]},"1924":{"title":"API","titles":["Raw HID"]},"1925":{"title":"void raw_hid_receive(uint8_t *data, uint8_t length)","titles":["Raw HID","API"]},"1926":{"title":"Arguments","titles":["Raw HID","API","void raw_hid_receive(uint8_t *data, uint8_t length)"]},"1927":{"title":"void raw_hid_send(uint8_t *data, uint8_t length)","titles":["Raw HID","API"]},"1928":{"title":"Arguments","titles":["Raw HID","API","void raw_hid_send(uint8_t *data, uint8_t length)"]},"1929":{"title":"Repeat Key","titles":[]},"1930":{"title":"How do I enable Repeat Key","titles":["Repeat Key"]},"1931":{"title":"Keycodes","titles":["Repeat Key"]},"1932":{"title":"Alternate Repeating","titles":["Repeat Key"]},"1933":{"title":"Defining alternate keys","titles":["Repeat Key"]},"1934":{"title":"Eliminating SFBs","titles":["Repeat Key","Defining alternate keys"]},"1935":{"title":"Typing shortcuts","titles":["Repeat Key","Defining alternate keys"]},"1936":{"title":"Ignoring certain keys and mods","titles":["Repeat Key"]},"1937":{"title":"Ignoring a key","titles":["Repeat Key","Ignoring certain keys and mods"]},"1938":{"title":"Filtering remembered mods","titles":["Repeat Key","Ignoring certain keys and mods"]},"1939":{"title":"Further conditions","titles":["Repeat Key","Ignoring certain keys and mods"]},"1940":{"title":"Handle how a key is repeated","titles":["Repeat Key"]},"1941":{"title":"Handle how a key is alternate repeated","titles":["Repeat Key"]},"1942":{"title":"Functions","titles":["Repeat Key"]},"1943":{"title":"Additional "Alternate" keys","titles":["Repeat Key"]},"1944":{"title":"RGB Matrix Lighting","titles":[]},"1945":{"title":"Driver Configuration","titles":["RGB Matrix Lighting"]},"1946":{"title":"Common Configuration","titles":["RGB Matrix Lighting"]},"1947":{"title":"Flags","titles":["RGB Matrix Lighting"]},"1948":{"title":"Keycodes","titles":["RGB Matrix Lighting"]},"1949":{"title":"RGB Matrix Effects","titles":["RGB Matrix Lighting"]},"1950":{"title":"RGB Matrix Effect Typing Heatmap","titles":["RGB Matrix Lighting","RGB Matrix Effects"]},"1951":{"title":"RGB Matrix Effect Solid Reactive","titles":["RGB Matrix Lighting","RGB Matrix Effects"]},"1952":{"title":"Custom RGB Matrix Effects","titles":["RGB Matrix Lighting"]},"1953":{"title":"Colors","titles":["RGB Matrix Lighting"]},"1954":{"title":"Additional config.h Options","titles":["RGB Matrix Lighting"]},"1955":{"title":"EEPROM storage","titles":["RGB Matrix Lighting"]},"1956":{"title":"Callbacks","titles":["RGB Matrix Lighting"]},"1957":{"title":"Indicators","titles":["RGB Matrix Lighting","Callbacks"]},"1958":{"title":"Indicator Examples","titles":["RGB Matrix Lighting","Callbacks"]},"1959":{"title":"Examples","titles":["RGB Matrix Lighting","Callbacks","Indicator Examples"]},"1960":{"title":"Indicators without RGB Matrix Effect","titles":["RGB Matrix Lighting","Callbacks","Indicator Examples"]},"1961":{"title":"API","titles":["RGB Matrix Lighting"]},"1962":{"title":"void rgb_matrix_toggle(void)","titles":["RGB Matrix Lighting","API"]},"1963":{"title":"void rgb_matrix_toggle_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"1964":{"title":"void rgb_matrix_enable(void)","titles":["RGB Matrix Lighting","API"]},"1965":{"title":"void rgb_matrix_enable_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"1966":{"title":"void rgb_matrix_disable(void)","titles":["RGB Matrix Lighting","API"]},"1967":{"title":"void rgb_matrix_disable_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"1968":{"title":"bool rgb_matrix_is_enabled(void)","titles":["RGB Matrix Lighting","API"]},"1969":{"title":"Return Value","titles":["RGB Matrix Lighting","API","bool rgb_matrix_is_enabled(void)"]},"1970":{"title":"void rgb_matrix_set_color(uint8_t index, uint8_t r, uint8_t g, uint8_t b)","titles":["RGB Matrix Lighting","API"]},"1971":{"title":"Arguments","titles":["RGB Matrix Lighting","API","void rgb_matrix_set_color(uint8_t index, uint8_t r, uint8_t g, uint8_t b)"]},"1972":{"title":"void rgb_matrix_set_color_all(uint8_t r, uint8_t g, uint8_t b)","titles":["RGB Matrix Lighting","API"]},"1973":{"title":"Arguments","titles":["RGB Matrix Lighting","API","void rgb_matrix_set_color_all(uint8_t r, uint8_t g, uint8_t b)"]},"1974":{"title":"void rgb_matrix_mode(uint8_t mode)","titles":["RGB Matrix Lighting","API"]},"1975":{"title":"Arguments","titles":["RGB Matrix Lighting","API","void rgb_matrix_mode(uint8_t mode)"]},"1976":{"title":"void rgb_matrix_mode_noeeprom(uint8_t mode)","titles":["RGB Matrix Lighting","API"]},"1977":{"title":"Arguments","titles":["RGB Matrix Lighting","API","void rgb_matrix_mode_noeeprom(uint8_t mode)"]},"1978":{"title":"void rgb_matrix_step(void)","titles":["RGB Matrix Lighting","API"]},"1979":{"title":"void rgb_matrix_step_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"1980":{"title":"void rgb_matrix_step_reverse(void)","titles":["RGB Matrix Lighting","API"]},"1981":{"title":"void rgb_matrix_step_reverse_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"1982":{"title":"uint8_t rgb_matrix_get_mode(void)","titles":["RGB Matrix Lighting","API"]},"1983":{"title":"Return Value","titles":["RGB Matrix Lighting","API","uint8_t rgb_matrix_get_mode(void)"]},"1984":{"title":"void rgb_matrix_increase_hue(void)","titles":["RGB Matrix Lighting","API"]},"1985":{"title":"void rgb_matrix_increase_hue_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"1986":{"title":"void rgb_matrix_decrease_hue(void)","titles":["RGB Matrix Lighting","API"]},"1987":{"title":"void rgb_matrix_decrease_hue_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"1988":{"title":"uint8_t rgb_matrix_get_hue(void)","titles":["RGB Matrix Lighting","API"]},"1989":{"title":"Return Value","titles":["RGB Matrix Lighting","API","uint8_t rgb_matrix_get_hue(void)"]},"1990":{"title":"void rgb_matrix_increase_sat(void)","titles":["RGB Matrix Lighting","API"]},"1991":{"title":"void rgb_matrix_increase_sat_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"1992":{"title":"void rgb_matrix_decrease_sat(void)","titles":["RGB Matrix Lighting","API"]},"1993":{"title":"void rgb_matrix_decrease_sat_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"1994":{"title":"uint8_t rgb_matrix_get_sat(void)","titles":["RGB Matrix Lighting","API"]},"1995":{"title":"Return Value","titles":["RGB Matrix Lighting","API","uint8_t rgb_matrix_get_sat(void)"]},"1996":{"title":"void rgb_matrix_increase_val(void)","titles":["RGB Matrix Lighting","API"]},"1997":{"title":"void rgb_matrix_increase_val_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"1998":{"title":"void rgb_matrix_decrease_val(void)","titles":["RGB Matrix Lighting","API"]},"1999":{"title":"void rgb_matrix_decrease_val_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"2000":{"title":"uint8_t rgb_matrix_get_val(void)","titles":["RGB Matrix Lighting","API"]},"2001":{"title":"Return Value","titles":["RGB Matrix Lighting","API","uint8_t rgb_matrix_get_val(void)"]},"2002":{"title":"void rgb_matrix_increase_speed(void)","titles":["RGB Matrix Lighting","API"]},"2003":{"title":"void rgb_matrix_increase_speed_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"2004":{"title":"void rgb_matrix_decrease_speed(void)","titles":["RGB Matrix Lighting","API"]},"2005":{"title":"void rgb_matrix_decrease_speed_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"2006":{"title":"void rgb_matrix_set_speed(uint8_t speed)","titles":["RGB Matrix Lighting","API"]},"2007":{"title":"Arguments","titles":["RGB Matrix Lighting","API","void rgb_matrix_set_speed(uint8_t speed)"]},"2008":{"title":"void rgb_matrix_set_speed_noeeprom(uint8_t speed)","titles":["RGB Matrix Lighting","API"]},"2009":{"title":"Arguments","titles":["RGB Matrix Lighting","API","void rgb_matrix_set_speed_noeeprom(uint8_t speed)"]},"2010":{"title":"uint8_t rgb_matrix_get_speed(void)","titles":["RGB Matrix Lighting","API"]},"2011":{"title":"Return Value","titles":["RGB Matrix Lighting","API","uint8_t rgb_matrix_get_speed(void)"]},"2012":{"title":"void rgb_matrix_sethsv(uint8_t h, uint8_t s, uint8_t v)","titles":["RGB Matrix Lighting","API"]},"2013":{"title":"Arguments","titles":["RGB Matrix Lighting","API"]},"2014":{"title":"void rgb_matrix_sethsv_noeeprom(uint8_t h, uint8_t s, uint8_t v)","titles":["RGB Matrix Lighting","API"]},"2015":{"title":"Arguments","titles":["RGB Matrix Lighting","API","void rgb_matrix_sethsv_noeeprom(uint8_t h, uint8_t s, uint8_t v)"]},"2016":{"title":"HSV rgb_matrix_get_hsv(void)","titles":["RGB Matrix Lighting","API"]},"2017":{"title":"Return Value","titles":["RGB Matrix Lighting","API","HSV rgb_matrix_get_hsv(void)"]},"2018":{"title":"void rgb_matrix_reload_from_eeprom(void)","titles":["RGB Matrix Lighting","API"]},"2019":{"title":"bool rgb_matrix_get_suspend_state(void)","titles":["RGB Matrix Lighting","API"]},"2020":{"title":"Return Value","titles":["RGB Matrix Lighting","API","bool rgb_matrix_get_suspend_state(void)"]},"2021":{"title":"bool rgb_matrix_indicators_kb(void)","titles":["RGB Matrix Lighting","API"]},"2022":{"title":"Return Value","titles":["RGB Matrix Lighting","API","bool rgb_matrix_indicators_kb(void)"]},"2023":{"title":"bool rgb_matrix_indicators_user(void)","titles":["RGB Matrix Lighting","API"]},"2024":{"title":"Return Value","titles":["RGB Matrix Lighting","API","bool rgb_matrix_indicators_user(void)"]},"2025":{"title":"bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max)","titles":["RGB Matrix Lighting","API"]},"2026":{"title":"Arguments","titles":["RGB Matrix Lighting","API"]},"2027":{"title":"Return Value","titles":["RGB Matrix Lighting","API","Arguments"]},"2028":{"title":"bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max)","titles":["RGB Matrix Lighting","API"]},"2029":{"title":"Arguments","titles":["RGB Matrix Lighting","API"]},"2030":{"title":"Return Value","titles":["RGB Matrix Lighting","API","Arguments"]},"2031":{"title":"RGB Lighting","titles":[]},"2032":{"title":"Usage","titles":["RGB Lighting"]},"2033":{"title":"Color Selection","titles":["RGB Lighting","Usage"]},"2034":{"title":"Keycodes","titles":["RGB Lighting"]},"2035":{"title":"Configuration","titles":["RGB Lighting"]},"2036":{"title":"Effects and Animations","titles":["RGB Lighting"]},"2037":{"title":"Effect and Animation Toggles","titles":["RGB Lighting","Effects and Animations"]},"2038":{"title":"Effect and Animation Settings","titles":["RGB Lighting","Effects and Animations"]},"2039":{"title":"Example Usage to Reduce Memory Footprint","titles":["RGB Lighting","Effects and Animations"]},"2040":{"title":"Animation Speed","titles":["RGB Lighting","Effects and Animations"]},"2041":{"title":"Lighting Layers","titles":["RGB Lighting"]},"2042":{"title":"Defining Lighting Layers","titles":["RGB Lighting","Lighting Layers"]},"2043":{"title":"Enabling and disabling lighting layers","titles":["RGB Lighting","Lighting Layers"]},"2044":{"title":"Lighting layer blink","titles":["RGB Lighting","Lighting Layers"]},"2045":{"title":"Overriding RGB Lighting on/off status","titles":["RGB Lighting","Lighting Layers"]},"2046":{"title":"Retain brightness","titles":["RGB Lighting","Lighting Layers"]},"2047":{"title":"Functions","titles":["RGB Lighting"]},"2048":{"title":"Low level Functions","titles":["RGB Lighting","Functions"]},"2049":{"title":"Effects and Animations Functions","titles":["RGB Lighting","Functions"]},"2050":{"title":"effect range setting","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2051":{"title":"direct operation","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2052":{"title":"effect mode change","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2053":{"title":"effects mode disable/enable","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2054":{"title":"hue, sat, val change","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2055":{"title":"Speed functions","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2056":{"title":"layer functions","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2057":{"title":"query","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2058":{"title":"Colors","titles":["RGB Lighting"]},"2059":{"title":"Changing the order of the LEDs","titles":["RGB Lighting"]},"2060":{"title":"Clipping Range","titles":["RGB Lighting"]},"2061":{"title":"Hardware Modification","titles":["RGB Lighting"]},"2062":{"title":"Velocikey","titles":["RGB Lighting"]},"2063":{"title":"Usage","titles":["RGB Lighting","Velocikey"]},"2064":{"title":"Configuration","titles":["RGB Lighting","Velocikey"]},"2065":{"title":"Secure","titles":[]},"2066":{"title":"Unlock sequence","titles":["Secure"]},"2067":{"title":"Automatic Locking","titles":["Secure"]},"2068":{"title":"Usage","titles":["Secure"]},"2069":{"title":"Keycodes","titles":["Secure"]},"2070":{"title":"Configuration","titles":["Secure"]},"2071":{"title":"Functions","titles":["Secure"]},"2072":{"title":"Send String","titles":[]},"2073":{"title":"Usage","titles":["Send String"]},"2074":{"title":"Basic Configuration","titles":["Send String"]},"2075":{"title":"Keycodes","titles":["Send String"]},"2076":{"title":"Language Support","titles":["Send String","Keycodes"]},"2077":{"title":"Examples","titles":["Send String"]},"2078":{"title":"Hello World","titles":["Send String","Examples"]},"2079":{"title":"Keycode Injection","titles":["Send String","Examples"]},"2080":{"title":"API","titles":["Send String"]},"2081":{"title":"void send_string(const char *string)","titles":["Send String","API"]},"2082":{"title":"Arguments","titles":["Send String","API","void send_string(const char *string)"]},"2083":{"title":"void send_string_with_delay(const char *string, uint8_t interval)","titles":["Send String","API"]},"2084":{"title":"Arguments","titles":["Send String","API","void send_string_with_delay(const char *string, uint8_t interval)"]},"2085":{"title":"void send_string_P(const char *string)","titles":["Send String","API"]},"2086":{"title":"Arguments","titles":["Send String","API","void send_string_P(const char *string)"]},"2087":{"title":"void send_string_with_delay_P(const char *string, uint8_t interval)","titles":["Send String","API"]},"2088":{"title":"Arguments","titles":["Send String","API","void send_string_with_delay_P(const char *string, uint8_t interval)"]},"2089":{"title":"void send_char(char ascii_code)","titles":["Send String","API"]},"2090":{"title":"Arguments","titles":["Send String","API","void send_char(char ascii_code)"]},"2091":{"title":"void send_dword(uint32_t number)","titles":["Send String","API"]},"2092":{"title":"Arguments","titles":["Send String","API","void send_dword(uint32_t number)"]},"2093":{"title":"void send_word(uint16_t number)","titles":["Send String","API"]},"2094":{"title":"Arguments","titles":["Send String","API","void send_word(uint16_t number)"]},"2095":{"title":"void send_byte(uint8_t number)","titles":["Send String","API"]},"2096":{"title":"Arguments","titles":["Send String","API","void send_byte(uint8_t number)"]},"2097":{"title":"void send_nibble(uint8_t number)","titles":["Send String","API"]},"2098":{"title":"Arguments","titles":["Send String","API","void send_nibble(uint8_t number)"]},"2099":{"title":"void tap_random_base64(void)","titles":["Send String","API"]},"2100":{"title":"SEND_STRING(string)","titles":["Send String","API"]},"2101":{"title":"SEND_STRING_DELAY(string, interval)","titles":["Send String","API"]},"2102":{"title":"Sequencer","titles":[]},"2103":{"title":"Enable the step sequencer","titles":["Sequencer"]},"2104":{"title":"Tracks","titles":["Sequencer"]},"2105":{"title":"Resolutions","titles":["Sequencer"]},"2106":{"title":"Keycodes","titles":["Sequencer"]},"2107":{"title":"Functions","titles":["Sequencer"]},"2108":{"title":"Space Cadet: The Future, Built In","titles":[]},"2109":{"title":"Usage","titles":["Space Cadet: The Future, Built In"]},"2110":{"title":"Keycodes","titles":["Space Cadet: The Future, Built In"]},"2111":{"title":"Caveats","titles":["Space Cadet: The Future, Built In"]},"2112":{"title":"Configuration","titles":["Space Cadet: The Future, Built In"]},"2113":{"title":"Obsolete Configuration","titles":["Space Cadet: The Future, Built In"]},"2114":{"title":"Split Keyboard","titles":[]},"2115":{"title":"Compatibility Overview","titles":["Split Keyboard"]},"2116":{"title":"Hardware Configuration","titles":["Split Keyboard"]},"2117":{"title":"Required Hardware","titles":["Split Keyboard","Hardware Configuration"]},"2118":{"title":"Considerations","titles":["Split Keyboard","Hardware Configuration","Required Hardware"]},"2119":{"title":"Serial Wiring","titles":["Split Keyboard","Hardware Configuration"]},"2120":{"title":"I2C Wiring","titles":["Split Keyboard","Hardware Configuration"]},"2121":{"title":"Firmware Configuration","titles":["Split Keyboard"]},"2122":{"title":"Layout Macro","titles":["Split Keyboard","Firmware Configuration"]},"2123":{"title":"Setting Handedness","titles":["Split Keyboard","Firmware Configuration"]},"2124":{"title":"Handedness by Pin","titles":["Split Keyboard","Firmware Configuration","Setting Handedness"]},"2125":{"title":"Handedness by Matrix Pin","titles":["Split Keyboard","Firmware Configuration","Setting Handedness"]},"2126":{"title":"Handedness by EEPROM","titles":["Split Keyboard","Firmware Configuration","Setting Handedness"]},"2127":{"title":"Handedness by #define","titles":["Split Keyboard","Firmware Configuration","Setting Handedness"]},"2128":{"title":"Communication Options","titles":["Split Keyboard","Firmware Configuration"]},"2129":{"title":"Data Sync Options","titles":["Split Keyboard","Firmware Configuration"]},"2130":{"title":"Custom data sync between sides","titles":["Split Keyboard","Firmware Configuration"]},"2131":{"title":"Hardware Configuration Options","titles":["Split Keyboard","Firmware Configuration"]},"2132":{"title":"Hardware Considerations and Mods","titles":["Split Keyboard"]},"2133":{"title":"Teensy boards","titles":["Split Keyboard","Hardware Considerations and Mods"]},"2134":{"title":"Additional Resources","titles":["Split Keyboard"]},"2135":{"title":"ST7565 LCD Driver","titles":[]},"2136":{"title":"Supported Hardware","titles":["ST7565 LCD Driver"]},"2137":{"title":"Usage","titles":["ST7565 LCD Driver"]},"2138":{"title":"Logo Example","titles":["ST7565 LCD Driver"]},"2139":{"title":"Buffer Read Example","titles":["ST7565 LCD Driver"]},"2140":{"title":"Other Examples","titles":["ST7565 LCD Driver"]},"2141":{"title":"Basic Configuration","titles":["ST7565 LCD Driver"]},"2142":{"title":"Custom sized displays","titles":["ST7565 LCD Driver"]},"2143":{"title":"API","titles":["ST7565 LCD Driver"]},"2144":{"title":"Stenography in QMK","titles":[]},"2145":{"title":"Plover with QWERTY Keyboard","titles":["Stenography in QMK"]},"2146":{"title":"Plover with Steno Protocol","titles":["Stenography in QMK"]},"2147":{"title":"TX Bolt","titles":["Stenography in QMK","Plover with Steno Protocol"]},"2148":{"title":"GeminiPR","titles":["Stenography in QMK","Plover with Steno Protocol"]},"2149":{"title":"Switching protocols on the fly","titles":["Stenography in QMK","Plover with Steno Protocol"]},"2150":{"title":"Configuring QMK for Steno","titles":["Stenography in QMK"]},"2151":{"title":"Learning Stenography","titles":["Stenography in QMK"]},"2152":{"title":"Interfacing with the code","titles":["Stenography in QMK"]},"2153":{"title":"Keycode Reference","titles":["Stenography in QMK"]},"2154":{"title":"Swap-Hands Action","titles":[]},"2155":{"title":"Configuration","titles":["Swap-Hands Action"]},"2156":{"title":"Swap Keycodes","titles":["Swap-Hands Action"]},"2157":{"title":"Encoder Mapping","titles":["Swap-Hands Action"]},"2158":{"title":"Functions","titles":["Swap-Hands Action","Encoder Mapping"]},"2159":{"title":"Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","titles":[]},"2160":{"title":"Introduction","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things"]},"2161":{"title":"How to Use Tap Dance","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things"]},"2162":{"title":"Implementation Details","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things"]},"2163":{"title":"Examples","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things"]},"2164":{"title":"Simple Example: Send ESC on Single Tap, CAPS_LOCK on Double Tap","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples"]},"2165":{"title":"Complex Examples","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples"]},"2166":{"title":"Example 1: Send "Safety Dance!" After 100 Taps","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples","Complex Examples"]},"2167":{"title":"Example 2: Turn LED Lights On Then Off, One at a Time","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples","Complex Examples"]},"2168":{"title":"Example 3: Send : on Tap, ; on Hold","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples","Complex Examples"]},"2169":{"title":"Example 4: 'Quad Function Tap-Dance'","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples","Complex Examples"]},"2170":{"title":"Example 5: Using tap dance for advanced mod-tap and layer-tap keys","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples","Complex Examples"]},"2171":{"title":"Example 6: Using tap dance for momentary-layer-switch and layer-toggle keys","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples","Complex Examples"]},"2172":{"title":"Tri Layers","titles":[]},"2173":{"title":"Keycodes","titles":["Tri Layers"]},"2174":{"title":"Configuration","titles":["Tri Layers"]},"2175":{"title":"Functions","titles":["Tri Layers"]},"2176":{"title":"Unicode","titles":[]},"2177":{"title":"Caveats","titles":["Unicode"]},"2178":{"title":"Usage","titles":["Unicode"]},"2179":{"title":"Basic Configuration","titles":["Unicode"]},"2180":{"title":"Audio Feedback","titles":["Unicode","Basic Configuration"]},"2181":{"title":"Input Subsystems","titles":["Unicode"]},"2182":{"title":"Lower and Upper Case Pairs","titles":["Unicode","Input Subsystems","Audio Feedback"]},"2183":{"title":"Input Modes","titles":["Unicode"]},"2184":{"title":"Keycodes","titles":["Unicode"]},"2185":{"title":"API","titles":["Unicode"]},"2186":{"title":"uint8_t get_unicode_input_mode(void)","titles":["Unicode","API"]},"2187":{"title":"Return Value","titles":["Unicode","API","uint8_t get_unicode_input_mode(void)"]},"2188":{"title":"void set_unicode_input_mode(uint8_t mode)","titles":["Unicode","API"]},"2189":{"title":"Arguments","titles":["Unicode","API","void set_unicode_input_mode(uint8_t mode)"]},"2190":{"title":"void unicode_input_mode_step(void)","titles":["Unicode","API"]},"2191":{"title":"void unicode_input_mode_step_reverse(void)","titles":["Unicode","API"]},"2192":{"title":"void unicode_input_mode_set_user(uint8_t input_mode)","titles":["Unicode","API"]},"2193":{"title":"Arguments","titles":["Unicode","API","void unicode_input_mode_set_user(uint8_t input_mode)"]},"2194":{"title":"void unicode_input_mode_set_kb(uint8_t input_mode)","titles":["Unicode","API"]},"2195":{"title":"Arguments","titles":["Unicode","API","void unicode_input_mode_set_kb(uint8_t input_mode)"]},"2196":{"title":"void unicode_input_start(void)","titles":["Unicode","API"]},"2197":{"title":"void unicode_input_finish(void)","titles":["Unicode","API"]},"2198":{"title":"void unicode_input_cancel(void)","titles":["Unicode","API"]},"2199":{"title":"void register_unicode(uint32_t code_point)","titles":["Unicode","API"]},"2200":{"title":"Arguments","titles":["Unicode","API","void register_unicode(uint32_t code_point)"]},"2201":{"title":"void send_unicode_string(const char *str)","titles":["Unicode","API"]},"2202":{"title":"Arguments","titles":["Unicode","API","void send_unicode_string(const char *str)"]},"2203":{"title":"uint8_t unicodemap_index(uint16_t keycode)","titles":["Unicode","API"]},"2204":{"title":"Arguments","titles":["Unicode","API","uint8_t unicodemap_index(uint16_t keycode)"]},"2205":{"title":"Return Value","titles":["Unicode","API","uint8_t unicodemap_index(uint16_t keycode)"]},"2206":{"title":"uint32_t unicodemap_get_code_point(uint8_t index)","titles":["Unicode","API"]},"2207":{"title":"Arguments","titles":["Unicode","API","uint32_t unicodemap_get_code_point(uint8_t index)"]},"2208":{"title":"Return Value","titles":["Unicode","API","uint32_t unicodemap_get_code_point(uint8_t index)"]},"2209":{"title":"void register_unicodemap(uint8_t index)","titles":["Unicode","API"]},"2210":{"title":"Arguments","titles":["Unicode","API","void register_unicodemap(uint8_t index)"]},"2211":{"title":"void ucis_start(void)","titles":["Unicode","API"]},"2212":{"title":"bool ucis_active(void)","titles":["Unicode","API"]},"2213":{"title":"Return Value","titles":["Unicode","API","bool ucis_active(void)"]},"2214":{"title":"uint8_t ucis_count(void)","titles":["Unicode","API"]},"2215":{"title":"Return Value","titles":["Unicode","API","uint8_t ucis_count(void)"]},"2216":{"title":"bool ucis_add(uint16_t keycode)","titles":["Unicode","API"]},"2217":{"title":"Arguments","titles":["Unicode","API","bool ucis_add(uint16_t keycode)"]},"2218":{"title":"Return Value","titles":["Unicode","API","bool ucis_add(uint16_t keycode)"]},"2219":{"title":"bool ucis_remove_last(void)","titles":["Unicode","API"]},"2220":{"title":"Return Value","titles":["Unicode","API","bool ucis_remove_last(void)"]},"2221":{"title":"void ucis_finish(void)","titles":["Unicode","API"]},"2222":{"title":"void ucis_cancel(void)","titles":["Unicode","API"]},"2223":{"title":"void register_ucis(void)","titles":["Unicode","API"]},"2224":{"title":"Arguments","titles":["Unicode","API","void register_ucis(void)"]},"2225":{"title":"Word Per Minute (WPM) Calculation","titles":[]},"2226":{"title":"Configuration","titles":["Word Per Minute (WPM) Calculation"]},"2227":{"title":"Public Functions","titles":["Word Per Minute (WPM) Calculation"]},"2228":{"title":"Callbacks","titles":["Word Per Minute (WPM) Calculation"]},"2229":{"title":"Flashing Instructions and Bootloader Information","titles":[]},"2230":{"title":"Atmel DFU","titles":["Flashing Instructions and Bootloader Information"]},"2231":{"title":"QMK DFU","titles":["Flashing Instructions and Bootloader Information","Atmel DFU"]},"2232":{"title":"make Targets","titles":["Flashing Instructions and Bootloader Information","Atmel DFU"]},"2233":{"title":"Caterina","titles":["Flashing Instructions and Bootloader Information"]},"2234":{"title":"make Targets","titles":["Flashing Instructions and Bootloader Information","Caterina"]},"2235":{"title":"HalfKay","titles":["Flashing Instructions and Bootloader Information"]},"2236":{"title":"USBasploader","titles":["Flashing Instructions and Bootloader Information"]},"2237":{"title":"BootloadHID","titles":["Flashing Instructions and Bootloader Information"]},"2238":{"title":"QMK HID","titles":["Flashing Instructions and Bootloader Information","BootloadHID"]},"2239":{"title":"make Targets","titles":["Flashing Instructions and Bootloader Information","BootloadHID"]},"2240":{"title":"STM32/APM32 DFU","titles":["Flashing Instructions and Bootloader Information"]},"2241":{"title":"make Targets","titles":["Flashing Instructions and Bootloader Information","STM32/APM32 DFU"]},"2242":{"title":"STM32duino","titles":["Flashing Instructions and Bootloader Information"]},"2243":{"title":"Kiibohd DFU","titles":["Flashing Instructions and Bootloader Information"]},"2244":{"title":"WB32 DFU","titles":["Flashing Instructions and Bootloader Information"]},"2245":{"title":"tinyuf2","titles":["Flashing Instructions and Bootloader Information"]},"2246":{"title":"make Targets","titles":["Flashing Instructions and Bootloader Information","tinyuf2"]},"2247":{"title":"uf2boot","titles":["Flashing Instructions and Bootloader Information"]},"2248":{"title":"make Targets","titles":["Flashing Instructions and Bootloader Information","uf2boot"]},"2249":{"title":"Raspberry Pi RP2040 UF2","titles":["Flashing Instructions and Bootloader Information"]},"2250":{"title":"Docker Quick Start","titles":[]},"2251":{"title":"Requirements","titles":["Docker Quick Start"]},"2252":{"title":"Usage","titles":["Docker Quick Start"]},"2253":{"title":"FAQ","titles":["Docker Quick Start"]},"2254":{"title":"Why can't I flash on Windows/macOS","titles":["Docker Quick Start","FAQ"]},"2255":{"title":"How to Use GitHub with QMK","titles":[]},"2256":{"title":"Introduction","titles":[]},"2257":{"title":"Basic QMK Structure","titles":["Introduction"]},"2258":{"title":"Userspace Structure","titles":["Introduction","Basic QMK Structure"]},"2259":{"title":"Keyboard Project Structure","titles":["Introduction","Basic QMK Structure"]},"2260":{"title":"Keymap Structure","titles":["Introduction","Basic QMK Structure"]},"2261":{"title":"The config.h File","titles":[]},"2262":{"title":"More Detailed make Instructions","titles":[]},"2263":{"title":"rules.mk Options","titles":["More Detailed make Instructions"]},"2264":{"title":"Customizing Makefile Options on a Per-Keymap Basis","titles":["More Detailed make Instructions"]},"2265":{"title":"Hand-Wiring Guide","titles":[]},"2266":{"title":"Parts list","titles":["Hand-Wiring Guide"]},"2267":{"title":"Starting the build","titles":["Hand-Wiring Guide"]},"2268":{"title":"Planning the matrix","titles":["Hand-Wiring Guide"]},"2269":{"title":"Common Microcontroller Boards","titles":["Hand-Wiring Guide","Planning the matrix"]},"2270":{"title":"Wiring the matrix","titles":["Hand-Wiring Guide"]},"2271":{"title":"A note on split keyboards","titles":["Hand-Wiring Guide","Wiring the matrix"]},"2272":{"title":"Soldering","titles":["Hand-Wiring Guide","Wiring the matrix"]},"2273":{"title":"Soldering the Diodes","titles":["Hand-Wiring Guide","Wiring the matrix","Soldering"]},"2274":{"title":"Soldering the Columns","titles":["Hand-Wiring Guide","Wiring the matrix","Soldering"]},"2275":{"title":"Wiring up the controller","titles":["Hand-Wiring Guide"]},"2276":{"title":"Specific instructions for the Teensy 2.0","titles":["Hand-Wiring Guide","Wiring up the controller"]},"2277":{"title":"Getting Some Basic Firmware Set Up","titles":["Hand-Wiring Guide"]},"2278":{"title":"Flashing the Firmware","titles":["Hand-Wiring Guide"]},"2279":{"title":"Testing Your Firmware","titles":["Hand-Wiring Guide"]},"2280":{"title":"Finishing up","titles":["Hand-Wiring Guide"]},"2281":{"title":"Links to Other Guides","titles":["Hand-Wiring Guide"]},"2282":{"title":"Legacy Content","titles":[]},"2283":{"title":"Preamble: How a Keyboard Matrix Works (and why we need diodes)","titles":["Legacy Content"]},"2284":{"title":"QMK Hardware Drivers","titles":[]},"2285":{"title":"Available Drivers","titles":[]},"2286":{"title":"ProMicro (AVR Only)","titles":["Available Drivers"]},"2287":{"title":"SSD1306 OLED Driver","titles":["Available Drivers"]},"2288":{"title":"WS2812","titles":["Available Drivers"]},"2289":{"title":"IS31FL3731","titles":["Available Drivers"]},"2290":{"title":"IS31FL3733","titles":["Available Drivers"]},"2291":{"title":"24xx series external I2C EEPROM","titles":["Available Drivers"]},"2292":{"title":"QMK Keyboard Guidelines","titles":[]},"2293":{"title":"Use QMK Lint","titles":["QMK Keyboard Guidelines"]},"2294":{"title":"Naming Your Keyboard/Project","titles":["QMK Keyboard Guidelines"]},"2295":{"title":"Sub-folders","titles":["QMK Keyboard Guidelines"]},"2296":{"title":"Keyboard Folder Structure","titles":["QMK Keyboard Guidelines"]},"2297":{"title":"readme.md","titles":["QMK Keyboard Guidelines","Keyboard Folder Structure"]},"2298":{"title":"info.json","titles":["QMK Keyboard Guidelines","Keyboard Folder Structure"]},"2299":{"title":"config.h","titles":["QMK Keyboard Guidelines","Keyboard Folder Structure"]},"2300":{"title":"rules.mk","titles":["QMK Keyboard Guidelines","Keyboard Folder Structure"]},"2301":{"title":"<keyboard_name.c>","titles":["QMK Keyboard Guidelines","Keyboard Folder Structure"]},"2302":{"title":"<keyboard_name.h>","titles":["QMK Keyboard Guidelines","Keyboard Folder Structure"]},"2303":{"title":"Image/Hardware Files","titles":["QMK Keyboard Guidelines"]},"2304":{"title":"Keyboard Defaults","titles":["QMK Keyboard Guidelines"]},"2305":{"title":"Magic Keycodes and Command","titles":["QMK Keyboard Guidelines","Keyboard Defaults"]},"2306":{"title":"Custom Keyboard Programming","titles":["QMK Keyboard Guidelines"]},"2307":{"title":"Non-Production/Handwired Projects","titles":["QMK Keyboard Guidelines"]},"2308":{"title":"Warnings as Errors","titles":["QMK Keyboard Guidelines"]},"2309":{"title":"Copyright Blurb","titles":["QMK Keyboard Guidelines"]},"2310":{"title":"License","titles":["QMK Keyboard Guidelines"]},"2311":{"title":"How a Keyboard Matrix Works","titles":[]},"2312":{"title":"Quantum Mechanical Keyboard Firmware","titles":[]},"2313":{"title":"What is QMK Firmware?","titles":["Quantum Mechanical Keyboard Firmware"]},"2314":{"title":"Get Started","titles":["Quantum Mechanical Keyboard Firmware"]},"2315":{"title":"Make It Yours","titles":["Quantum Mechanical Keyboard Firmware"]},"2316":{"title":"Need help?","titles":["Quantum Mechanical Keyboard Firmware"]},"2317":{"title":"Give Back","titles":["Quantum Mechanical Keyboard Firmware"]},"2318":{"title":"How Keys Are Registered, and Interpreted by Computers","titles":[]},"2319":{"title":"Schematic View","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2320":{"title":"1. You Press a Key","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2321":{"title":"2. What the Firmware Sends","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2322":{"title":"3. What the Event Input/Kernel Does","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2323":{"title":"4. What the Operating System Does","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2324":{"title":"Back to the Firmware","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2325":{"title":"List of Characters You Can Send","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2326":{"title":"How to (Maybe) Enter Unicode Characters","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2327":{"title":"ISP Flashing Guide","titles":[]},"2328":{"title":"Hardware","titles":["ISP Flashing Guide"]},"2329":{"title":"Pro Micro as ISP","titles":["ISP Flashing Guide","Hardware"]},"2330":{"title":"Wiring","titles":["ISP Flashing Guide","Hardware","Pro Micro as ISP"]},"2331":{"title":"Arduino Uno / Micro as ISP","titles":["ISP Flashing Guide","Hardware"]},"2332":{"title":"Wiring","titles":["ISP Flashing Guide","Hardware","Arduino Uno / Micro as ISP"]},"2333":{"title":"Teensy 2.0 as ISP","titles":["ISP Flashing Guide","Hardware"]},"2334":{"title":"Wiring","titles":["ISP Flashing Guide","Hardware","Teensy 2.0 as ISP"]},"2335":{"title":"SparkFun PocketAVR / USBtinyISP","titles":["ISP Flashing Guide","Hardware"]},"2336":{"title":"Wiring","titles":["ISP Flashing Guide","Hardware","SparkFun PocketAVR / USBtinyISP"]},"2337":{"title":"USBasp","titles":["ISP Flashing Guide","Hardware"]},"2338":{"title":"Wiring","titles":["ISP Flashing Guide","Hardware","USBasp"]},"2339":{"title":"Bus Pirate","titles":["ISP Flashing Guide","Hardware"]},"2340":{"title":"Wiring","titles":["ISP Flashing Guide","Hardware","Bus Pirate"]},"2341":{"title":"Software","titles":["ISP Flashing Guide"]},"2342":{"title":"Bootloader Firmware","titles":["ISP Flashing Guide"]},"2343":{"title":"Atmel DFU","titles":["ISP Flashing Guide","Bootloader Firmware"]},"2344":{"title":"Caterina","titles":["ISP Flashing Guide","Bootloader Firmware"]},"2345":{"title":"BootloadHID (PS2AVRGB)","titles":["ISP Flashing Guide","Bootloader Firmware"]},"2346":{"title":"USBaspLoader","titles":["ISP Flashing Guide","Bootloader Firmware"]},"2347":{"title":"Flashing the Bootloader","titles":["ISP Flashing Guide"]},"2348":{"title":"Setting the Fuses","titles":["ISP Flashing Guide","Flashing the Bootloader"]},"2349":{"title":"Creating a "Production" Firmware","titles":["ISP Flashing Guide"]},"2350":{"title":"Flashing STM32Duino Bootloader","titles":["ISP Flashing Guide"]},"2351":{"title":"Software","titles":["ISP Flashing Guide","Flashing STM32Duino Bootloader"]},"2352":{"title":"Wiring","titles":["ISP Flashing Guide","Flashing STM32Duino Bootloader"]},"2353":{"title":"Flashing","titles":["ISP Flashing Guide","Flashing STM32Duino Bootloader"]},"2354":{"title":"Keycodes Overview","titles":[]},"2355":{"title":"Basic Keycodes","titles":["Keycodes Overview"]},"2356":{"title":"Quantum Keycodes","titles":["Keycodes Overview"]},"2357":{"title":"Audio Keys","titles":["Keycodes Overview"]},"2358":{"title":"Auto Shift","titles":["Keycodes Overview"]},"2359":{"title":"Autocorrect","titles":["Keycodes Overview"]},"2360":{"title":"Backlighting","titles":["Keycodes Overview"]},"2361":{"title":"Bluetooth","titles":["Keycodes Overview"]},"2362":{"title":"Caps Word","titles":["Keycodes Overview"]},"2363":{"title":"Dynamic Macros","titles":["Keycodes Overview"]},"2364":{"title":"Grave Escape","titles":["Keycodes Overview"]},"2365":{"title":"Joystick","titles":["Keycodes Overview"]},"2366":{"title":"Key Lock","titles":["Keycodes Overview"]},"2367":{"title":"Layer Switching","titles":["Keycodes Overview"]},"2368":{"title":"Leader Key","titles":["Keycodes Overview"]},"2369":{"title":"LED Matrix","titles":["Keycodes Overview"]},"2370":{"title":"Magic Keycodes","titles":["Keycodes Overview"]},"2371":{"title":"MIDI","titles":["Keycodes Overview"]},"2372":{"title":"Mouse Keys","titles":["Keycodes Overview"]},"2373":{"title":"Modifiers","titles":["Keycodes Overview"]},"2374":{"title":"Mod-Tap Keys","titles":["Keycodes Overview"]},"2375":{"title":"Tapping Term Keys","titles":["Keycodes Overview"]},"2376":{"title":"RGB Lighting","titles":["Keycodes Overview"]},"2377":{"title":"RGB Matrix Lighting","titles":["Keycodes Overview"]},"2378":{"title":"US ANSI Shifted Symbols","titles":["Keycodes Overview"]},"2379":{"title":"One Shot Keys","titles":["Keycodes Overview"]},"2380":{"title":"Programmable Button Support","titles":["Keycodes Overview"]},"2381":{"title":"Repeat Key","titles":["Keycodes Overview"]},"2382":{"title":"Space Cadet","titles":["Keycodes Overview"]},"2383":{"title":"Swap Hands","titles":["Keycodes Overview"]},"2384":{"title":"Unicode Support","titles":["Keycodes Overview"]},"2385":{"title":"Basic Keycodes","titles":[]},"2386":{"title":"Letters and Numbers","titles":["Basic Keycodes"]},"2387":{"title":"F Keys","titles":["Basic Keycodes"]},"2388":{"title":"Punctuation","titles":["Basic Keycodes"]},"2389":{"title":"Lock Keys","titles":["Basic Keycodes"]},"2390":{"title":"Modifiers","titles":["Basic Keycodes"]},"2391":{"title":"International","titles":["Basic Keycodes"]},"2392":{"title":"Commands","titles":["Basic Keycodes"]},"2393":{"title":"Media Keys","titles":["Basic Keycodes"]},"2394":{"title":"Number Pad","titles":["Basic Keycodes"]},"2395":{"title":"Special Keys","titles":["Basic Keycodes"]},"2396":{"title":"Magic Keycodes","titles":[]},"2397":{"title":"US ANSI Shifted Symbols","titles":[]},"2398":{"title":"Caveats","titles":["US ANSI Shifted Symbols"]},"2399":{"title":"Keycodes","titles":["US ANSI Shifted Symbols"]},"2400":{"title":"Keymap Overview","titles":[]},"2401":{"title":"Keymap and Layers","titles":["Keymap Overview"]},"2402":{"title":"Keymap Layer Status","titles":["Keymap Overview","Keymap and Layers"]},"2403":{"title":"Layer Precedence and Transparency","titles":["Keymap Overview","Keymap and Layers"]},"2404":{"title":"Anatomy of a keymap.c","titles":["Keymap Overview"]},"2405":{"title":"Definitions","titles":["Keymap Overview","Anatomy of a keymap.c"]},"2406":{"title":"Layers and Keymaps","titles":["Keymap Overview","Anatomy of a keymap.c"]},"2407":{"title":"Base Layer","titles":["Keymap Overview","Anatomy of a keymap.c","Layers and Keymaps"]},"2408":{"title":"Function Overlay Layer","titles":["Keymap Overview","Anatomy of a keymap.c","Layers and Keymaps"]},"2409":{"title":"Nitty Gritty Details","titles":[]},"2410":{"title":"Mod-Tap","titles":[]},"2411":{"title":"Caveats","titles":["Mod-Tap"]},"2412":{"title":"Intercepting Mod-Taps","titles":["Mod-Tap"]},"2413":{"title":"Changing tap function","titles":["Mod-Tap","Intercepting Mod-Taps"]},"2414":{"title":"Changing hold function","titles":["Mod-Tap","Intercepting Mod-Taps"]},"2415":{"title":"Changing both tap and hold","titles":["Mod-Tap","Intercepting Mod-Taps"]},"2416":{"title":"Other Resources","titles":["Mod-Tap"]},"2417":{"title":"The QMK Tutorial","titles":[]},"2418":{"title":"Overview","titles":["The QMK Tutorial"]},"2419":{"title":"Additional Resources","titles":["The QMK Tutorial"]},"2420":{"title":"Building Your First Firmware","titles":[]},"2421":{"title":"Configure Your Build Environment Defaults (Optional)","titles":["Building Your First Firmware"]},"2422":{"title":"Create a New Keymap","titles":["Building Your First Firmware"]},"2423":{"title":"Open keymap.c In Your Favorite Text Editor","titles":["Building Your First Firmware"]},"2424":{"title":"Customize The Layout To Your Liking","titles":["Building Your First Firmware"]},"2425":{"title":"Build Your Firmware","titles":["Building Your First Firmware"]},"2426":{"title":"Flash Your Firmware","titles":["Building Your First Firmware"]},"2427":{"title":"QMK Configurator","titles":[]},"2428":{"title":"Building QMK with GitHub Userspace","titles":[]},"2429":{"title":"Prerequisites","titles":["Building QMK with GitHub Userspace"]},"2430":{"title":"Environment Setup","titles":["Building QMK with GitHub Userspace"]},"2431":{"title":"1. Install Git","titles":["Building QMK with GitHub Userspace","Environment Setup"]},"2432":{"title":"2. GitHub authentication","titles":["Building QMK with GitHub Userspace","Environment Setup"]},"2433":{"title":"3. Create a repository","titles":["Building QMK with GitHub Userspace","Environment Setup"]},"2434":{"title":"Initial Code Commit","titles":["Building QMK with GitHub Userspace"]},"2435":{"title":"Create template files","titles":["Building QMK with GitHub Userspace","Initial Code Commit"]},"2436":{"title":"Add a JSON keymap","titles":["Building QMK with GitHub Userspace","Initial Code Commit"]},"2437":{"title":"Add a GitHub Action workflow","titles":["Building QMK with GitHub Userspace","Initial Code Commit"]},"2438":{"title":"Commit files to GitHub","titles":["Building QMK with GitHub Userspace","Initial Code Commit"]},"2439":{"title":"Review workflow output","titles":["Building QMK with GitHub Userspace","Initial Code Commit"]},"2440":{"title":"Customising your keymap","titles":["Building QMK with GitHub Userspace"]},"2441":{"title":"External QMK Userspace","titles":[]},"2442":{"title":"Setting up QMK Locally","titles":["External QMK Userspace"]},"2443":{"title":"External Userspace Repository Setup (forked on GitHub)","titles":["External QMK Userspace"]},"2444":{"title":"External Userspace Setup (locally stored only)","titles":["External QMK Userspace"]},"2445":{"title":"Adding a Keymap","titles":["External QMK Userspace"]},"2446":{"title":"Adding the keymap to External Userspace build targets","titles":["External QMK Userspace"]},"2447":{"title":"Compiling External Userspace build targets","titles":["External QMK Userspace"]},"2448":{"title":"Using GitHub Actions","titles":["External QMK Userspace"]},"2449":{"title":"Flashing Your Keyboard","titles":[]},"2450":{"title":"Put Your Keyboard into DFU (Bootloader) Mode","titles":["Flashing Your Keyboard"]},"2451":{"title":"Flashing Your Keyboard with QMK Toolbox","titles":["Flashing Your Keyboard"]},"2452":{"title":"Load the File into QMK Toolbox","titles":["Flashing Your Keyboard","Flashing Your Keyboard with QMK Toolbox"]},"2453":{"title":"Flash Your Keyboard","titles":["Flashing Your Keyboard","Flashing Your Keyboard with QMK Toolbox"]},"2454":{"title":"Flash your Keyboard from the Command Line","titles":["Flashing Your Keyboard"]},"2455":{"title":"Test It Out!","titles":["Flashing Your Keyboard"]},"2456":{"title":"Setting Up Your QMK Environment","titles":[]},"2457":{"title":"1. Prerequisites","titles":["Setting Up Your QMK Environment"]},"2458":{"title":"2. Prepare Your Build Environment","titles":["Setting Up Your QMK Environment"]},"2459":{"title":"Prerequisites","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2460":{"title":"Prerequisites","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2461":{"title":"Installation","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2462":{"title":"Prerequisites","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2463":{"title":"Installation","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2464":{"title":"Prerequisites","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2465":{"title":"Installation","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2466":{"title":"Community Packages","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2467":{"title":"Installation","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2468":{"title":"3. Run QMK Setup","titles":["Setting Up Your QMK Environment"]},"2469":{"title":"4. Test Your Build Environment","titles":["Setting Up Your QMK Environment"]},"2470":{"title":"Creating Your Keymap","titles":[]},"2471":{"title":"Best Git Practices for Working with QMK","titles":[]},"2472":{"title":"Or, "How I Learned to Stop Worrying and Love Git."","titles":["Best Git Practices for Working with QMK"]},"2473":{"title":"Resynchronizing an Out-of-Sync Git Branch","titles":[]},"2474":{"title":"Backing Up the Changes on Your Own Master Branch (Optional)","titles":["Resynchronizing an Out-of-Sync Git Branch"]},"2475":{"title":"Resynchronizing Your Branch","titles":["Resynchronizing an Out-of-Sync Git Branch"]},"2476":{"title":"Resolving Merge Conflicts","titles":[]},"2477":{"title":"Rebasing Your Changes","titles":["Resolving Merge Conflicts"]},"2478":{"title":"Your Fork's Master: Update Often, Commit Never","titles":[]},"2479":{"title":"Updating your master branch","titles":["Your Fork's Master: Update Often, Commit Never"]},"2480":{"title":"Making Changes","titles":["Your Fork's Master: Update Often, Commit Never"]},"2481":{"title":"Publishing Your Changes","titles":["Your Fork's Master: Update Often, Commit Never"]},"2482":{"title":"Learning Resources","titles":[]},"2483":{"title":"QMK resources","titles":["Learning Resources"]},"2484":{"title":"Command Line resources","titles":["Learning Resources"]},"2485":{"title":"Text Editor resources","titles":["Learning Resources"]},"2486":{"title":"Git resources","titles":["Learning Resources"]},"2487":{"title":"Testing and Debugging","titles":[]},"2488":{"title":"Testing","titles":["Testing and Debugging"]},"2489":{"title":"Debugging","titles":["Testing and Debugging"]},"2490":{"title":"One Shot Keys","titles":[]},"2491":{"title":"Callbacks","titles":["One Shot Keys"]},"2492":{"title":"Setting up Eclipse for QMK Development","titles":[]},"2493":{"title":"Prerequisites","titles":[]},"2494":{"title":"Build Environment","titles":["Prerequisites"]},"2495":{"title":"Java","titles":["Prerequisites"]},"2496":{"title":"Install Eclipse and Its Plugins","titles":[]},"2497":{"title":"Download and Install Eclipse CDT","titles":["Install Eclipse and Its Plugins"]},"2498":{"title":"First Launch","titles":["Install Eclipse and Its Plugins"]},"2499":{"title":"Install the Necessary Plugins","titles":["Install Eclipse and Its Plugins"]},"2500":{"title":"Configure Eclipse for QMK","titles":[]},"2501":{"title":"Importing the Project","titles":["Configure Eclipse for QMK"]},"2502":{"title":"Build Your Keyboard","titles":["Configure Eclipse for QMK"]},"2503":{"title":"Setting up Visual Studio Code for QMK Development","titles":[]},"2504":{"title":"Set up VS Code","titles":[]},"2505":{"title":"Windows","titles":["Set up VS Code"]},"2506":{"title":"Prerequisites","titles":["Set up VS Code","Windows"]},"2507":{"title":"Installing VS Code","titles":["Set up VS Code","Windows"]},"2508":{"title":"MSYS2 Setup","titles":["Set up VS Code","Windows","Installing VS Code"]},"2509":{"title":"Every other Operating System","titles":["Set up VS Code"]},"2510":{"title":"Extensions","titles":["Set up VS Code"]},"2511":{"title":"Configure VS Code for QMK","titles":[]},"2512":{"title":"Configuring VS Code","titles":["Configure VS Code for QMK"]},"2513":{"title":"Debugging ARM MCUs with Visual Studio Code","titles":[]},"2514":{"title":"WeAct Blackpill (STM32F4x1)","titles":[]},"2515":{"title":"Pin Usage Limitations","titles":["WeAct Blackpill (STM32F4x1)"]},"2516":{"title":"Unusable pins","titles":["WeAct Blackpill (STM32F4x1)","Pin Usage Limitations"]},"2517":{"title":"Pins to be avoided","titles":["WeAct Blackpill (STM32F4x1)","Pin Usage Limitations"]},"2518":{"title":"Shared Usage","titles":["WeAct Blackpill (STM32F4x1)","Pin Usage Limitations"]},"2519":{"title":"Limited Usage","titles":["WeAct Blackpill (STM32F4x1)","Pin Usage Limitations"]},"2520":{"title":"Additional Information","titles":["WeAct Blackpill (STM32F4x1)"]},"2521":{"title":"Bootloader issues","titles":["WeAct Blackpill (STM32F4x1)","Additional Information"]},"2522":{"title":"Tiny UF2 Support","titles":["WeAct Blackpill (STM32F4x1)","Additional Information"]},"2523":{"title":"Arm/ChibiOS Early Initialization","titles":[]},"2524":{"title":"early_hardware_init_pre()","titles":["Arm/ChibiOS Early Initialization"]},"2525":{"title":"early_hardware_init_post()","titles":["Arm/ChibiOS Early Initialization"]},"2526":{"title":"board_init()","titles":["Arm/ChibiOS Early Initialization"]},"2527":{"title":"Proton C","titles":[]},"2528":{"title":"Features","titles":["Proton C"]},"2529":{"title":"Warnings","titles":["Proton C"]},"2530":{"title":"Manual Conversion","titles":["Proton C"]},"2531":{"title":"Raspberry Pi RP2040","titles":[]},"2532":{"title":"GPIO","titles":["Raspberry Pi RP2040"]},"2533":{"title":"Pin nomenclature","titles":["Raspberry Pi RP2040","GPIO"]},"2534":{"title":"Alternate functions","titles":["Raspberry Pi RP2040","GPIO"]},"2535":{"title":"Selecting hardware peripherals and drivers","titles":["Raspberry Pi RP2040"]},"2536":{"title":"I2C Driver","titles":["Raspberry Pi RP2040","Selecting hardware peripherals and drivers"]},"2537":{"title":"SPI Driver","titles":["Raspberry Pi RP2040","Selecting hardware peripherals and drivers"]},"2538":{"title":"UART Driver","titles":["Raspberry Pi RP2040","Selecting hardware peripherals and drivers"]},"2539":{"title":"Double-tap reset boot-loader entry","titles":["Raspberry Pi RP2040"]},"2540":{"title":"Pre-defined RP2040 boards","titles":["Raspberry Pi RP2040"]},"2541":{"title":"Generic Pro Micro RP2040","titles":["Raspberry Pi RP2040","Pre-defined RP2040 boards"]},"2542":{"title":"Generic RP2040 board","titles":["Raspberry Pi RP2040","Pre-defined RP2040 boards"]},"2543":{"title":"Split keyboard support","titles":["Raspberry Pi RP2040"]},"2544":{"title":"RP2040 second stage bootloader selection","titles":["Raspberry Pi RP2040"]},"2545":{"title":"RP2040 Community Edition","titles":["Raspberry Pi RP2040"]},"2546":{"title":"Choosing an Arm MCU","titles":[]},"2547":{"title":"Selecting an already-supported MCU","titles":["Choosing an Arm MCU"]},"2548":{"title":"STM32 families","titles":["Choosing an Arm MCU","Selecting an already-supported MCU"]},"2549":{"title":"Non-STM32 families","titles":["Choosing an Arm MCU","Selecting an already-supported MCU"]},"2550":{"title":"Adding support for a new STM32 MCU (for an existing family)","titles":["Choosing an Arm MCU"]},"2551":{"title":"Adding support for a new STM32 Family","titles":["Choosing an Arm MCU"]},"2552":{"title":"Adding support for a new MCU Family","titles":["Choosing an Arm MCU"]},"2553":{"title":"Adding Your Keyboard to QMK","titles":[]},"2554":{"title":"readme.md","titles":["Adding Your Keyboard to QMK"]},"2555":{"title":"info.json","titles":["Adding Your Keyboard to QMK"]},"2556":{"title":"Hardware Configuration","titles":["Adding Your Keyboard to QMK","info.json"]},"2557":{"title":"Matrix Configuration","titles":["Adding Your Keyboard to QMK","info.json"]},"2558":{"title":"Direct Pin Matrix","titles":["Adding Your Keyboard to QMK","info.json","Matrix Configuration"]},"2559":{"title":"Layout macros","titles":["Adding Your Keyboard to QMK","info.json"]},"2560":{"title":"Additional Configuration","titles":["Adding Your Keyboard to QMK"]},"2561":{"title":"Configuration Options","titles":["Adding Your Keyboard to QMK","Additional Configuration"]},"2562":{"title":"Build Options","titles":["Adding Your Keyboard to QMK","Additional Configuration"]},"2563":{"title":"PR checklists","titles":[]},"2564":{"title":"Requirements for all PRs","titles":["PR checklists"]},"2565":{"title":"Keymap PRs","titles":["PR checklists"]},"2566":{"title":"Keyboard PRs","titles":["PR checklists"]},"2567":{"title":"Core PRs","titles":["PR checklists"]},"2568":{"title":"Notes","titles":["PR checklists"]},"2569":{"title":"Review Process","titles":["PR checklists"]},"2570":{"title":"Example GPLv2 Header","titles":["PR checklists"]},"2571":{"title":"Quantum Keycodes","titles":[]},"2572":{"title":"QMK Keycodes","titles":["Quantum Keycodes"]},"2573":{"title":"Quantum Painter","titles":[]},"2574":{"title":"Quantum Painter Configuration","titles":["Quantum Painter"]},"2575":{"title":"Quantum Painter CLI Commands","titles":["Quantum Painter"]},"2576":{"title":"Quantum Painter Display Drivers","titles":["Quantum Painter"]},"2577":{"title":"Quantum Painter Drawing API","titles":["Quantum Painter"]},"2578":{"title":"Quantum Painter LVGL Integration","titles":[]},"2579":{"title":"Enabling LVGL","titles":["Quantum Painter LVGL Integration"]},"2580":{"title":"Quantum Painter LVGL API","titles":["Quantum Painter LVGL Integration"]},"2581":{"title":"Quantum Painter LVGL Attach","titles":["Quantum Painter LVGL Integration","Quantum Painter LVGL API"]},"2582":{"title":"Quantum Painter LVGL Detach","titles":["Quantum Painter LVGL Integration","Quantum Painter LVGL API"]},"2583":{"title":"Enabling/Disabling LVGL features","titles":["Quantum Painter LVGL Integration"]},"2584":{"title":"Changing the LVGL task frequency","titles":["Quantum Painter LVGL Integration"]},"2585":{"title":"QMK Font Format","titles":[]},"2586":{"title":"Block Header","titles":["QMK Font Format"]},"2587":{"title":"Font descriptor block","titles":["QMK Font Format"]},"2588":{"title":"ASCII glyph table","titles":["QMK Font Format"]},"2589":{"title":"Unicode glyph table","titles":["QMK Font Format"]},"2590":{"title":"Font palette block","titles":["QMK Font Format"]},"2591":{"title":"Font data block","titles":["QMK Font Format"]},"2592":{"title":"QMK Graphics Format","titles":[]},"2593":{"title":"Block Header","titles":["QMK Graphics Format"]},"2594":{"title":"Graphics descriptor block","titles":["QMK Graphics Format"]},"2595":{"title":"Frame offset block","titles":["QMK Graphics Format"]},"2596":{"title":"Frame descriptor block","titles":["QMK Graphics Format"]},"2597":{"title":"Frame palette block","titles":["QMK Graphics Format"]},"2598":{"title":"Frame delta block","titles":["QMK Graphics Format"]},"2599":{"title":"Frame data block","titles":["QMK Graphics Format"]},"2600":{"title":"QMK QGF/QFF RLE data schema","titles":[]},"2601":{"title":"List of Useful Core Functions To Make Your Keyboard Better","titles":[]},"2602":{"title":"(OLKB) Tri Layers","titles":["List of Useful Core Functions To Make Your Keyboard Better"]},"2603":{"title":"update_tri_layer(x, y, z)","titles":["List of Useful Core Functions To Make Your Keyboard Better","(OLKB) Tri Layers"]},"2604":{"title":"Example","titles":["List of Useful Core Functions To Make Your Keyboard Better","(OLKB) Tri Layers","update_tri_layer(x, y, z)"]},"2605":{"title":"update_tri_layer_state(state, x, y, z)","titles":["List of Useful Core Functions To Make Your Keyboard Better","(OLKB) Tri Layers"]},"2606":{"title":"Example","titles":["List of Useful Core Functions To Make Your Keyboard Better","(OLKB) Tri Layers","update_tri_layer_state(state, x, y, z)"]},"2607":{"title":"Setting the Persistent Default Layer","titles":["List of Useful Core Functions To Make Your Keyboard Better"]},"2608":{"title":"Resetting the keyboard","titles":["List of Useful Core Functions To Make Your Keyboard Better"]},"2609":{"title":"Reset to bootloader","titles":["List of Useful Core Functions To Make Your Keyboard Better"]},"2610":{"title":"Wiping the EEPROM (Persistent Storage)","titles":["List of Useful Core Functions To Make Your Keyboard Better"]},"2611":{"title":"Tap random key","titles":["List of Useful Core Functions To Make Your Keyboard Better"]},"2612":{"title":"Software Timers","titles":["List of Useful Core Functions To Make Your Keyboard Better"]},"2613":{"title":"Supporting Your Keyboard in QMK Configurator","titles":[]},"2614":{"title":"How the Configurator Understands Keyboards","titles":["Supporting Your Keyboard in QMK Configurator"]},"2615":{"title":"Building the JSON file","titles":["Supporting Your Keyboard in QMK Configurator"]},"2616":{"title":"How the Configurator Programs Keys","titles":["Supporting Your Keyboard in QMK Configurator"]},"2617":{"title":"Issues and Hazards","titles":["Supporting Your Keyboard in QMK Configurator"]},"2618":{"title":"Workarounds","titles":["Supporting Your Keyboard in QMK Configurator","Issues and Hazards"]},"2619":{"title":"Non-rectangular keys","titles":["Supporting Your Keyboard in QMK Configurator","Issues and Hazards","Workarounds"]},"2620":{"title":"Vertically-offset keys","titles":["Supporting Your Keyboard in QMK Configurator","Issues and Hazards","Workarounds"]},"2621":{"title":"Glossary of QMK Terms","titles":[]},"2622":{"title":"ARM","titles":["Glossary of QMK Terms"]},"2623":{"title":"AVR","titles":["Glossary of QMK Terms"]},"2624":{"title":"AZERTY","titles":["Glossary of QMK Terms"]},"2625":{"title":"Backlight","titles":["Glossary of QMK Terms"]},"2626":{"title":"Bluetooth","titles":["Glossary of QMK Terms"]},"2627":{"title":"Bootloader","titles":["Glossary of QMK Terms"]},"2628":{"title":"Bootmagic","titles":["Glossary of QMK Terms"]},"2629":{"title":"C","titles":["Glossary of QMK Terms"]},"2630":{"title":"Colemak","titles":["Glossary of QMK Terms"]},"2631":{"title":"Compile","titles":["Glossary of QMK Terms"]},"2632":{"title":"Dvorak","titles":["Glossary of QMK Terms"]},"2633":{"title":"Dynamic Macro","titles":["Glossary of QMK Terms"]},"2634":{"title":"Eclipse","titles":["Glossary of QMK Terms"]},"2635":{"title":"Firmware","titles":["Glossary of QMK Terms"]},"2636":{"title":"git","titles":["Glossary of QMK Terms"]},"2637":{"title":"GitHub","titles":["Glossary of QMK Terms"]},"2638":{"title":"ISP","titles":["Glossary of QMK Terms"]},"2639":{"title":"hid_listen","titles":["Glossary of QMK Terms"]},"2640":{"title":"Keycode","titles":["Glossary of QMK Terms"]},"2641":{"title":"Key Down","titles":["Glossary of QMK Terms"]},"2642":{"title":"Key Up","titles":["Glossary of QMK Terms"]},"2643":{"title":"Keymap","titles":["Glossary of QMK Terms"]},"2644":{"title":"Layer","titles":["Glossary of QMK Terms"]},"2645":{"title":"Leader Key","titles":["Glossary of QMK Terms"]},"2646":{"title":"LED","titles":["Glossary of QMK Terms"]},"2647":{"title":"Make","titles":["Glossary of QMK Terms"]},"2648":{"title":"Matrix","titles":["Glossary of QMK Terms"]},"2649":{"title":"Macro","titles":["Glossary of QMK Terms"]},"2650":{"title":"MCU","titles":["Glossary of QMK Terms"]},"2651":{"title":"Modifier","titles":["Glossary of QMK Terms"]},"2652":{"title":"Mousekeys","titles":["Glossary of QMK Terms"]},"2653":{"title":"N-Key Rollover (NKRO)","titles":["Glossary of QMK Terms"]},"2654":{"title":"Oneshot Modifier","titles":["Glossary of QMK Terms"]},"2655":{"title":"ProMicro","titles":["Glossary of QMK Terms"]},"2656":{"title":"Pull Request","titles":["Glossary of QMK Terms"]},"2657":{"title":"QWERTY","titles":["Glossary of QMK Terms"]},"2658":{"title":"QWERTZ","titles":["Glossary of QMK Terms"]},"2659":{"title":"Rollover","titles":["Glossary of QMK Terms"]},"2660":{"title":"Scancode","titles":["Glossary of QMK Terms"]},"2661":{"title":"Space Cadet Shift","titles":["Glossary of QMK Terms"]},"2662":{"title":"Tap","titles":["Glossary of QMK Terms"]},"2663":{"title":"Tap Dance","titles":["Glossary of QMK Terms"]},"2664":{"title":"Teensy","titles":["Glossary of QMK Terms"]},"2665":{"title":"Underlight","titles":["Glossary of QMK Terms"]},"2666":{"title":"Unicode","titles":["Glossary of QMK Terms"]},"2667":{"title":"Unit Testing","titles":["Glossary of QMK Terms"]},"2668":{"title":"USB","titles":["Glossary of QMK Terms"]},"2669":{"title":"USB Host (or simply Host)","titles":["Glossary of QMK Terms"]},"2670":{"title":"Couldn't Find the Term You're Looking For?","titles":[]},"2671":{"title":"info.json Reference","titles":[]},"2672":{"title":"General Metadata","titles":["info.json Reference"]},"2673":{"title":"Hardware Configuration","titles":["info.json Reference"]},"2674":{"title":"Firmware Configuration","titles":["info.json Reference"]},"2675":{"title":"APA102","titles":["info.json Reference"]},"2676":{"title":"Audio","titles":["info.json Reference"]},"2677":{"title":"Backlight","titles":["info.json Reference"]},"2678":{"title":"Bluetooth","titles":["info.json Reference"]},"2679":{"title":"Bootmagic","titles":["info.json Reference"]},"2680":{"title":"Caps Word","titles":["info.json Reference"]},"2681":{"title":"Combo","titles":["info.json Reference"]},"2682":{"title":"DIP Switches","titles":["info.json Reference"]},"2683":{"title":"EEPROM","titles":["info.json Reference"]},"2684":{"title":"Encoder","titles":["info.json Reference"]},"2685":{"title":"Indicators","titles":["info.json Reference"]},"2686":{"title":"Layouts","titles":["info.json Reference"]},"2687":{"title":"Leader Key","titles":["info.json Reference"]},"2688":{"title":"LED Matrix","titles":["info.json Reference"]},"2689":{"title":"Matrix","titles":["info.json Reference"]},"2690":{"title":"Mouse Keys","titles":["info.json Reference"]},"2691":{"title":"One Shot","titles":["info.json Reference"]},"2692":{"title":"PS/2","titles":["info.json Reference"]},"2693":{"title":"QMK LUFA Bootloader","titles":["info.json Reference"]},"2694":{"title":"RGBLight","titles":["info.json Reference"]},"2695":{"title":"RGB Matrix","titles":["info.json Reference"]},"2696":{"title":"Secure","titles":["info.json Reference"]},"2697":{"title":"Split Keyboard","titles":["info.json Reference"]},"2698":{"title":"Stenography","titles":["info.json Reference"]},"2699":{"title":"USB","titles":["info.json Reference"]},"2700":{"title":"WS2812","titles":["info.json Reference"]},"2701":{"title":"Language-specific Keycodes","titles":[]},"2702":{"title":"Sendstring Support","titles":["Language-specific Keycodes"]},"2703":{"title":"Header Files","titles":["Language-specific Keycodes"]},"2704":{"title":"Squeezing the most out of AVR","titles":[]},"2705":{"title":"rules.mk Settings","titles":["Squeezing the most out of AVR"]},"2706":{"title":"config.h Settings","titles":["Squeezing the most out of AVR"]},"2707":{"title":"Audio Settings","titles":["Squeezing the most out of AVR"]},"2708":{"title":"Layers","titles":["Squeezing the most out of AVR"]},"2709":{"title":"Magic Functions","titles":["Squeezing the most out of AVR"]},"2710":{"title":"OLED tweaks","titles":["Squeezing the most out of AVR"]},"2711":{"title":"RGB Settings","titles":["Squeezing the most out of AVR"]},"2712":{"title":"Final Thoughts","titles":[]},"2713":{"title":"Getting Help","titles":[]},"2714":{"title":"Realtime Chat","titles":["Getting Help"]},"2715":{"title":"OLKB Subreddit","titles":["Getting Help"]},"2716":{"title":"GitHub Issues","titles":["Getting Help"]},"2717":{"title":"Feature support policies","titles":[]},"2718":{"title":"System Constraints","titles":["Feature support policies"]},"2719":{"title":"Deprecation & Removal Policy","titles":["Feature support policies"]},"2720":{"title":"How much advance notice will be given?","titles":["Feature support policies","Deprecation & Removal Policy"]},"2721":{"title":"How will deprecation be communicated?","titles":["Feature support policies","Deprecation & Removal Policy"]},"2722":{"title":"QMK Syllabus","titles":[]},"2723":{"title":"Beginning Topics","titles":[]},"2724":{"title":"Intermediate Topics","titles":[]},"2725":{"title":"Advanced Topics","titles":[]},"2726":{"title":"Tap-Hold Configuration Options","titles":[]},"2727":{"title":"Tapping Term","titles":["Tap-Hold Configuration Options"]},"2728":{"title":"Dynamic Tapping Term","titles":["Tap-Hold Configuration Options","Tapping Term"]},"2729":{"title":"Tap-Or-Hold Decision Modes","titles":["Tap-Hold Configuration Options"]},"2730":{"title":"Comparison","titles":["Tap-Hold Configuration Options","Tap-Or-Hold Decision Modes"]},"2731":{"title":"Distinct taps (AABB)","titles":["Tap-Hold Configuration Options","Tap-Or-Hold Decision Modes","Comparison"]},"2732":{"title":"Nested tap (ABBA)","titles":["Tap-Hold Configuration Options","Tap-Or-Hold Decision Modes","Comparison"]},"2733":{"title":"Rolling keys (ABAB)","titles":["Tap-Hold Configuration Options","Tap-Or-Hold Decision Modes","Comparison"]},"2734":{"title":"Default Mode","titles":["Tap-Hold Configuration Options","Tap-Or-Hold Decision Modes"]},"2735":{"title":"Permissive Hold","titles":["Tap-Hold Configuration Options","Tap-Or-Hold Decision Modes"]},"2736":{"title":"Hold On Other Key Press","titles":["Tap-Hold Configuration Options","Tap-Or-Hold Decision Modes"]},"2737":{"title":"Quick Tap Term","titles":["Tap-Hold Configuration Options"]},"2738":{"title":"Retro Tapping","titles":["Tap-Hold Configuration Options"]},"2739":{"title":"Retro Shift","titles":["Tap-Hold Configuration Options","Retro Tapping"]},"2740":{"title":"Why do we include the key record for the per key functions?","titles":["Tap-Hold Configuration Options"]},"2741":{"title":"Why are there no *_kb or *_user functions?!","titles":["Tap-Hold Configuration Options"]},"2742":{"title":"Understanding QMK's Code","titles":[]},"2743":{"title":"Startup","titles":["Understanding QMK's Code"]},"2744":{"title":"The Main Loop","titles":["Understanding QMK's Code"]},"2745":{"title":"Matrix Scanning","titles":["Understanding QMK's Code","The Main Loop"]},"2746":{"title":"Matrix to Physical Layout Map","titles":["Understanding QMK's Code","The Main Loop","Matrix Scanning"]},"2747":{"title":"Keycode Assignment","titles":["Understanding QMK's Code","The Main Loop","Matrix Scanning"]},"2748":{"title":"State Change Detection","titles":["Understanding QMK's Code","The Main Loop","Matrix Scanning"]},"2749":{"title":"Process Record","titles":["Understanding QMK's Code","The Main Loop","Matrix Scanning"]},"2750":{"title":"Unit Testing","titles":[]},"2751":{"title":"Google Test and Google Mock","titles":["Unit Testing"]},"2752":{"title":"Use of C++","titles":["Unit Testing"]},"2753":{"title":"Adding Tests for New or Existing Features","titles":["Unit Testing"]},"2754":{"title":"Running the Tests","titles":["Unit Testing"]},"2755":{"title":"Debugging the Tests","titles":["Unit Testing"]},"2756":{"title":"Full Integration Tests","titles":["Unit Testing"]},"2757":{"title":"Tracing Variables","titles":[]}},"dirtCount":0,"index":[["ąžerty",{"2":{"2703":1}}],["ąƚɂɻɣɉʣ",{"2":{"2575":2}}],["µs",{"2":{"2689":1}}],["↓",{"2":{"2615":3}}],["└──",{"2":{"2438":3}}],["└row1",{"2":{"2311":3}}],["├──",{"2":{"2438":4}}],["¥",{"2":{"2391":1}}],["✔6",{"2":{"2355":1}}],["✔5",{"2":{"2355":4}}],["✔4",{"2":{"2355":2}}],["✔3",{"2":{"2355":4}}],["✔2",{"2":{"2355":3}}],["✔",{"2":{"2355":447}}],["✔️",{"2":{"285":1,"663":12,"1121":4,"1140":1,"1141":1,"2115":2,"2531":10,"2543":6}}],["€",{"2":{"2325":1}}],["┌─┘3",{"2":{"2311":2}}],["┌─┤1",{"2":{"2311":2}}],["┌─┤0",{"2":{"2311":2}}],["─────┴────────┘",{"2":{"2311":8}}],["│",{"2":{"2311":25,"2438":2}}],["│└row0",{"2":{"2311":3}}],["ಠ",{"2":{"2182":2}}],["🇺🇦",{"2":{"2182":1}}],["🎉👍",{"2":{"284":1,"550":1}}],["🤣",{"2":{"2182":1}}],["≤",{"2":{"2182":4}}],["æ",{"2":{"2182":2}}],["å",{"2":{"2182":2,"2701":1}}],["ツ",{"2":{"2181":1}}],["ћ",{"2":{"2181":1}}],["□",{"2":{"1594":25}}],["■",{"2":{"1594":15}}],["ñ",{"2":{"1499":1}}],["⇒",{"2":{"1451":3,"1452":3}}],["\\t22",{"2":{"2553":1}}],["\\t24",{"2":{"1405":1}}],["\\t51",{"2":{"2553":1}}],["\\t50",{"2":{"2553":1}}],["\\t1",{"2":{"2553":2}}],["\\t12",{"2":{"1405":1}}],["\\tmod",{"2":{"1665":1}}],["\\t~0",{"2":{"1665":1}}],["\\tkc",{"2":{"1665":2}}],["\\tko",{"2":{"1665":2}}],["\\t\\t",{"2":{"1954":1}}],["\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tkc",{"2":{"1665":4}}],["\\t\\tmod",{"2":{"1665":1}}],["\\t\\treturn",{"2":{"1555":1}}],["\\tif",{"2":{"1555":1}}],["\\t",{"2":{"1405":1,"1555":1,"1663":1,"1665":6,"1666":2,"1954":1}}],["\\t36",{"2":{"1405":1}}],["✅",{"2":{"1336":1,"2115":1}}],["^ge^s^s^w^c",{"2":{"2154":1}}],["^3+0",{"2":{"1836":1}}],["^=",{"2":{"1332":1}}],["^",{"2":{"1325":1,"1878":1,"2311":1,"2355":1,"2378":1,"2386":1,"2399":1}}],["ひらがな",{"2":{"1280":1}}],["変換",{"2":{"1280":1}}],["無変換",{"2":{"1280":1}}],["ç",{"0":{"1277":1}}],["²",{"2":{"635":1}}],["¹",{"2":{"635":1,"2501":1}}],["être",{"2":{"559":1}}],["¯",{"2":{"433":2}}],["☐",{"2":{"433":1}}],["¬",{"2":{"433":2}}],["☒",{"2":{"405":1,"433":1,"2293":2}}],["ψ",{"2":{"370":4,"388":1,"389":5,"390":5,"391":5,"393":2,"394":2,"395":3,"396":1,"397":4,"401":4,"405":1,"414":1,"415":1,"417":1,"423":1,"424":1,"433":1,"2277":5,"2293":1,"2422":1,"2553":5,"2672":2}}],["\`action",{"2":{"2170":1}}],["\`all\`",{"2":{"395":1}}],["\`layer",{"2":{"2170":2}}],["\`lalt\`",{"2":{"2170":1}}],["\`length\`",{"2":{"1921":1}}],["\`led",{"2":{"1729":1}}],["\`tapping",{"2":{"2169":1}}],["\`esc\`",{"2":{"2169":1}}],["\`finished\`",{"2":{"2170":2}}],["\`ff\`",{"2":{"2169":2}}],["\`f\`",{"2":{"2169":1}}],["\`buffer\`",{"2":{"2169":1}}],["\`reset\`",{"2":{"2170":2}}],["\`rgb",{"2":{"1952":1}}],["\`raw",{"2":{"1921":1}}],["\`data\`",{"2":{"1921":1}}],["\`develop\`",{"2":{"317":1}}],["\`",{"2":{"1519":1,"1666":3,"2170":7,"2401":3,"2402":3,"2597":12}}],["\`some",{"2":{"1519":1}}],["\`start\`",{"2":{"465":1}}],["\`kc",{"2":{"1344":1}}],["\`qk",{"2":{"624":1,"1344":1}}],["\`qmk",{"2":{"365":2,"366":2,"397":1}}],["\`offset\`",{"2":{"465":1}}],["\`cd\`",{"2":{"389":1,"390":1,"391":1,"2277":1,"2553":1}}],["\`master\`",{"2":{"317":1,"2568":3}}],["❌",{"2":{"285":1,"663":6,"1336":3}}],["⭕",{"2":{"285":1,"663":4}}],["😃",{"2":{"2255":1,"2670":1}}],["💩",{"2":{"2182":1}}],["🐍",{"2":{"2181":1}}],["👍🎉",{"2":{"284":1,"550":1}}],["😉",{"2":{"123":1}}],["→",{"2":{"176":3,"626":1,"627":2,"628":1,"2183":2}}],["麦田",{"2":{"160":1}}],["|0",{"2":{"2614":1}}],["|ent|",{"2":{"2614":1}}],["|3",{"2":{"2614":1}}],["|2",{"2":{"2614":1}}],["|1",{"2":{"2614":1}}],["|6",{"2":{"2614":1}}],["|5",{"2":{"2614":1}}],["|4",{"2":{"2614":1}}],["|9",{"2":{"2614":1}}],["|8",{"2":{"2614":1}}],["|7",{"2":{"2614":1}}],["|nlk|",{"2":{"2614":1}}],["|ing",{"2":{"1912":1}}],["|mod",{"2":{"1677":1,"2405":5,"2738":1}}],["|=",{"2":{"1446":2,"1857":1,"1905":2}}],["||",{"2":{"1344":1,"1446":1,"1518":1,"1939":1,"2169":2,"2170":1,"2228":9,"2548":1}}],["|kc",{"2":{"621":3}}],["|long",{"2":{"621":1}}],["|",{"2":{"116":1,"621":4,"669":1,"707":4,"760":2,"792":2,"822":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1123":20,"1126":32,"1129":32,"1148":2,"1239":1,"1300":2,"1325":18,"1335":1,"1346":26,"1349":13,"1385":2,"1451":19,"1594":9,"1668":3,"1821":1,"1822":1,"1903":4,"1905":1,"1907":8,"1938":1,"2228":1,"2255":2,"2311":28,"2319":6,"2347":6,"2355":2,"2378":1,"2388":2,"2391":1,"2399":1,"2401":8,"2402":14,"2410":1,"2437":1,"2614":24,"2615":11,"2734":72,"2735":48,"2736":24,"2738":22}}],["5+",{"2":{"1903":2}}],["5=64",{"2":{"1822":1}}],["59",{"2":{"1578":1}}],["58s",{"2":{"2347":1}}],["587968d6cbc2b0e1c7147540872f2a67e59ca18b",{"2":{"2255":1}}],["58",{"2":{"1578":1,"1836":1}}],["54",{"2":{"1578":1}}],["536",{"2":{"2575":1}}],["535",{"2":{"2094":1}}],["53",{"2":{"1578":1,"1836":1}}],["56",{"2":{"1440":1,"1578":1,"1836":1,"2453":1}}],["5625",{"2":{"529":1}}],["575",{"2":{"1633":3}}],["57",{"2":{"1578":1,"2255":1}}],["577ch",{"2":{"1287":1}}],["577c",{"2":{"1287":1}}],["57600",{"2":{"1136":1,"1201":1}}],["5kb",{"2":{"2710":1}}],["5kro",{"2":{"1278":1}}],["5kω",{"2":{"1126":1}}],["5u",{"2":{"1252":1}}],["55",{"2":{"788":1,"1578":1}}],["55k",{"2":{"788":1}}],["51",{"2":{"1578":1,"1793":1,"1836":1,"2371":1,"2553":1,"2611":1}}],["512",{"2":{"694":1,"1820":1,"2142":1}}],["5173",{"2":{"402":1,"558":1}}],["5v",{"2":{"629":2,"630":1,"1571":1,"1631":1,"2114":1,"2133":3,"2329":1,"2332":2,"2344":2,"2519":1,"2528":1,"2529":2,"2530":3,"2532":1}}],["52583",{"2":{"1289":1}}],["525",{"2":{"684":1}}],["52",{"2":{"181":2,"1578":1,"2611":1}}],["5291",{"2":{"114":1}}],["5",{"0":{"541":1,"2159":1,"2170":1},"1":{"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1},"2":{"176":1,"188":1,"191":1,"199":3,"211":2,"222":2,"249":1,"266":1,"313":1,"315":1,"350":2,"491":1,"496":1,"499":1,"502":3,"511":1,"530":2,"598":1,"633":1,"635":4,"684":1,"789":2,"854":2,"888":2,"922":2,"956":2,"990":2,"1024":2,"1058":2,"1091":1,"1092":2,"1136":1,"1177":3,"1226":2,"1328":1,"1335":1,"1336":1,"1357":1,"1370":1,"1383":1,"1405":1,"1440":1,"1499":1,"1504":1,"1530":2,"1534":2,"1576":2,"1577":1,"1578":1,"1594":1,"1612":1,"1614":1,"1635":3,"1677":1,"1714":1,"1716":1,"1725":1,"1730":1,"1793":31,"1798":1,"1801":2,"1804":1,"1821":2,"1836":1,"1839":1,"1842":1,"1847":1,"1881":1,"1883":3,"1934":1,"1943":1,"1946":1,"1954":1,"1959":3,"2036":3,"2040":1,"2060":1,"2105":1,"2128":1,"2130":3,"2148":1,"2153":1,"2155":4,"2156":1,"2174":2,"2226":2,"2232":1,"2234":1,"2239":1,"2255":3,"2339":1,"2355":9,"2365":3,"2371":31,"2372":2,"2380":3,"2386":2,"2391":2,"2394":2,"2407":1,"2490":1,"2497":1,"2575":2,"2576":2,"2593":2,"2596":3,"2615":2,"2674":1,"2680":1,"2688":1,"2689":2,"2695":1,"2696":1,"2697":1,"2710":1,"2738":1,"2745":1}}],["5000",{"2":{"1504":1,"1804":1,"2070":1,"2490":1,"2680":1,"2696":1}}],["500",{"2":{"502":2,"505":1,"597":2,"788":2,"1357":1,"1431":1,"1834":1,"1846":1,"1848":1,"2044":4,"2128":1,"2130":1,"2699":2}}],["500ms",{"2":{"176":1,"1675":1,"2130":1}}],["50",{"2":{"401":1,"703":1,"1221":1,"1416":1,"1518":1,"1578":26,"1817":1,"1839":2,"1849":2,"1950":1,"2040":3,"2167":4,"2681":2,"2728":6}}],["50ms",{"2":{"149":1,"1514":1,"2728":1}}],["5050",{"0":{"1834":1},"2":{"118":1,"1834":2}}],["5x7",{"2":{"143":2,"253":2}}],["5x8",{"2":{"143":4,"1589":2}}],["5x6",{"2":{"143":4,"222":1}}],["5x13",{"2":{"114":1,"249":1}}],["5ms",{"2":{"119":2,"1821":1,"2375":2,"2728":3}}],["$5",{"2":{"2655":1}}],["$path",{"2":{"2468":1}}],["$home",{"2":{"2443":1,"2444":1,"2468":4}}],["$qmk",{"2":{"360":3}}],["$",{"2":{"111":1,"176":1,"292":1,"314":2,"315":1,"317":3,"370":9,"388":1,"389":1,"391":1,"393":1,"394":1,"395":1,"396":1,"401":2,"405":2,"414":1,"415":1,"417":1,"423":1,"424":1,"514":1,"530":1,"665":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1238":4,"1377":2,"1384":2,"1385":2,"2229":1,"2277":1,"2293":2,"2300":9,"2355":1,"2378":1,"2386":1,"2399":1,"2437":5,"2443":1,"2444":1,"2475":2,"2477":2,"2479":1,"2513":2,"2553":1,"2565":1,"2575":5}}],["+size",{"2":{"2566":1}}],["++col",{"2":{"1958":1}}],["++row",{"2":{"1958":1}}],["++i",{"2":{"1448":1,"2577":2}}],["+6",{"2":{"1793":1,"2371":1}}],["+4",{"2":{"1793":1,"2371":1}}],["+3",{"2":{"1793":1,"2371":1,"2518":1}}],["+2",{"2":{"1793":1,"2371":1}}],["+1",{"2":{"1793":1,"2371":1}}],["+127",{"2":{"1632":1}}],["+7",{"2":{"1403":1}}],["+5v",{"2":{"2340":1}}],["+5",{"2":{"1403":1,"1793":1,"2371":1}}],["+=",{"2":{"234":9,"513":4,"514":1,"564":1,"665":2,"730":3,"756":3,"785":3,"817":3,"849":3,"884":3,"918":3,"952":3,"986":3,"1020":3,"1054":3,"1088":3,"1144":3,"1254":2,"1330":1,"1377":3,"1384":1,"1385":1,"1518":1,"1527":1,"1859":2,"2300":2,"2435":1,"2573":14,"2576":11,"2577":2,"2728":1}}],["+cleanup",{"2":{"199":1}}],["+",{"0":{"1302":2,"1303":1},"2":{"99":2,"134":2,"149":1,"176":3,"199":2,"222":1,"236":1,"292":2,"349":1,"582":1,"656":9,"1123":8,"1126":8,"1127":1,"1129":8,"1130":1,"1234":4,"1325":18,"1344":1,"1346":15,"1347":1,"1349":8,"1416":1,"1445":1,"1446":3,"1451":42,"1500":1,"1501":4,"1638":1,"1655":4,"1656":4,"1663":1,"1665":11,"1666":4,"1668":2,"1673":1,"1675":1,"1676":1,"1684":1,"1730":1,"1849":3,"1855":4,"1903":4,"1923":2,"1929":6,"1932":16,"1933":9,"1949":2,"1954":1,"2039":2,"2099":1,"2130":1,"2170":1,"2196":1,"2255":2,"2311":8,"2319":20,"2355":2,"2378":1,"2388":1,"2394":1,"2399":1,"2402":2,"2512":8,"2573":20,"2587":1,"2588":1,"2594":1,"2596":1,"2611":1,"2614":10,"2615":2,"2727":1,"2728":1,"2734":36,"2735":24,"2736":12,"2738":8}}],["≈10ms",{"2":{"94":1}}],["⚠",{"2":{"70":23,"391":1,"433":1,"2277":1}}],[">line",{"2":{"2577":1}}],[">width",{"2":{"2577":2}}],[">>>>>>>",{"2":{"2477":1}}],[">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>",{"2":{"2453":2}}],[">>>",{"2":{"2453":3}}],[">0",{"2":{"2402":1}}],[">1",{"2":{"2402":2}}],[">|",{"2":{"2319":4}}],[">height",{"2":{"2577":2}}],[">held",{"2":{"2168":5}}],[">hold",{"2":{"2168":2}}],[">interrupted",{"2":{"2168":1,"2169":3,"2170":1}}],[">init",{"2":{"1729":1,"1952":1}}],[">pressed",{"2":{"2168":1,"2169":3,"2170":1,"2171":1}}],[">user",{"2":{"2168":1}}],[">state",{"2":{"2168":2}}],[">s2m",{"2":{"2130":1}}],[">count",{"2":{"2166":1,"2167":2,"2168":1,"2169":3,"2170":2,"2171":2}}],[">m2s",{"2":{"2130":1}}],[">keys",{"2":{"1518":2}}],[">keycode",{"2":{"1518":5}}],[">=",{"2":{"1446":2,"1518":1,"1958":1,"2166":1,"2167":1,"2228":10,"2600":1}}],[">tap",{"2":{"1252":2,"1446":2,"2168":3,"2413":1,"2414":3,"2415":1}}],[">event",{"2":{"534":6,"572":2,"588":1,"1252":4,"1302":1,"1303":1,"1332":4,"1344":1,"1359":4,"1360":2,"1365":1,"1375":1,"1384":2,"1385":1,"1634":5,"1792":1,"1830":2,"1857":1,"1858":1,"1859":1,"1878":1,"1940":2,"1941":3,"1943":2,"2078":1,"2168":1,"2413":1,"2414":3,"2415":2,"2604":2,"2728":4}}],[">",{"2":{"70":1,"371":1,"414":2,"415":2,"417":1,"423":1,"424":2,"588":1,"1253":6,"1325":1,"1344":2,"1375":1,"1380":1,"1440":10,"1849":1,"1940":1,"1941":1,"1958":2,"1959":1,"2130":1,"2228":2,"2255":1,"2402":3,"2435":2,"2570":1,"2577":6}}],["~1",{"2":{"2710":1}}],["~175ms",{"2":{"2171":1}}],["~400",{"2":{"2705":1}}],["~5",{"2":{"2517":1}}],["~$6",{"2":{"2514":1,"2712":1}}],["~$",{"2":{"2255":4}}],["~mouse",{"2":{"1857":1}}],["~mod",{"2":{"1446":1,"1938":1}}],["~0x05",{"2":{"2599":1}}],["~0x04",{"2":{"2598":1}}],["~0x03",{"2":{"2597":1}}],["~0x02",{"2":{"2589":1,"2596":1}}],["~0x01",{"2":{"2588":1,"2595":1}}],["~0x00",{"2":{"2587":1,"2594":1}}],["~0",{"2":{"1665":4}}],["~",{"2":{"70":3,"365":1,"366":1,"367":1,"370":4,"389":1,"390":1,"391":1,"401":1,"450":2,"451":1,"530":1,"1563":1,"1565":1,"1666":1,"1668":2,"1905":1,"1907":3,"1938":1,"2277":1,"2355":2,"2378":1,"2388":2,"2399":1,"2435":5,"2436":1,"2437":1,"2438":1,"2475":2}}],["~22k",{"2":{"2517":1}}],["~2",{"2":{"6":1,"10":1}}],["7da94ac5",{"2":{"2255":1}}],["7kohm",{"2":{"2120":1}}],["7kω",{"2":{"2117":1}}],["7k",{"2":{"1903":3}}],["7k25",{"2":{"1091":1}}],["7=256",{"2":{"1822":1}}],["79",{"2":{"1578":1,"1836":1}}],["7949",{"2":{"65":1}}],["78",{"2":{"1578":1}}],["777",{"2":{"2575":1}}],["77",{"2":{"1578":1}}],["73",{"2":{"1578":1,"1836":1}}],["73b4",{"2":{"315":1}}],["7172",{"2":{"2353":1}}],["71",{"2":{"1440":1,"1578":1}}],["7114",{"2":{"32":1}}],["74",{"2":{"1440":1,"1578":1}}],["72mhz",{"2":{"2528":1}}],["72",{"2":{"664":1,"1087":1,"1578":1,"1724":1,"1945":1}}],["7capi8w",{"2":{"623":1}}],["7u",{"2":{"266":1,"705":1}}],["7000h",{"2":{"1287":2}}],["70",{"2":{"462":1,"556":1,"1254":1,"1578":1,"1836":1,"2453":1}}],["70keys",{"2":{"241":2}}],["70ec",{"2":{"114":1,"149":1}}],["76",{"2":{"453":1,"455":1,"1440":1,"1578":1,"1793":1,"1836":1,"2371":1}}],["76k",{"2":{"211":1}}],["7648",{"2":{"49":1}}],["750",{"2":{"2233":1,"2344":1}}],["750ms",{"2":{"1578":1}}],["75000",{"2":{"1136":1}}],["75kbps",{"2":{"511":1,"2128":1}}],["75",{"2":{"211":2,"266":1,"385":1,"1440":1,"1578":1}}],["7521",{"2":{"134":1}}],["7splus",{"2":{"143":2}}],["7skb",{"2":{"143":2,"211":1}}],["7",{"2":{"70":1,"76":1,"149":1,"172":1,"173":1,"211":1,"236":1,"313":1,"351":1,"364":1,"366":1,"455":1,"507":1,"530":2,"556":1,"633":1,"635":4,"657":1,"701":3,"707":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"727":1,"732":1,"758":1,"787":1,"819":1,"851":1,"853":1,"886":1,"887":1,"920":1,"921":1,"954":1,"988":1,"1022":1,"1056":1,"1090":1,"1091":1,"1127":2,"1130":2,"1146":1,"1198":4,"1279":2,"1405":1,"1440":1,"1530":2,"1576":1,"1577":1,"1578":1,"1594":1,"1612":1,"1614":1,"1635":3,"1793":5,"1801":2,"1821":2,"1822":3,"1836":1,"1839":1,"1855":1,"1883":3,"2038":1,"2060":1,"2148":1,"2153":1,"2155":5,"2233":1,"2235":1,"2254":1,"2353":1,"2355":8,"2365":3,"2371":5,"2372":2,"2380":3,"2386":2,"2391":4,"2394":2,"2407":1,"2477":1,"2577":3,"2596":1,"2615":2}}],["x1",{"2":{"2577":1}}],["x1b",{"2":{"2075":1}}],["x=0",{"2":{"2577":1}}],["xbps",{"2":{"2431":1,"2464":1}}],["xl",{"2":{"2353":1}}],["x7f",{"2":{"2075":1}}],["x0",{"2":{"2577":1}}],["x0a",{"2":{"2075":1}}],["x09",{"2":{"2075":1}}],["x08",{"2":{"1594":1,"2075":1}}],["xmas",{"2":{"2034":1,"2376":1}}],["xml",{"0":{"286":1}}],["x+",{"2":{"1839":1}}],["x^2",{"2":{"1836":1}}],["xor",{"2":{"1341":2}}],["xorg",{"2":{"1283":1}}],["xo87",{"2":{"211":1}}],["xfer",{"2":{"1280":1}}],["xzy",{"2":{"249":1}}],["xprintf",{"2":{"2263":3}}],["xpm",{"2":{"324":3,"325":2,"326":1,"328":1}}],["xpack",{"0":{"324":1},"2":{"325":1,"328":1,"331":1}}],["xp",{"2":{"219":1}}],["xtap",{"2":{"2169":5}}],["xtx",{"2":{"211":1}}],["xt",{"2":{"211":4}}],["xt8x",{"2":{"211":1}}],["xt60",{"2":{"211":2}}],["x2",{"2":{"211":1,"2728":4}}],["x26",{"2":{"105":8,"272":4,"450":2,"588":2,"1303":1,"1385":2,"1430":5,"1446":6,"1497":1,"1518":3,"1549":6,"1663":1,"1665":6,"1666":2,"1792":2,"1815":1,"1849":2,"1857":1,"1858":2,"1905":1,"1907":5,"1933":2,"1938":2,"1939":1,"1949":11,"1958":7,"2042":3,"2130":2,"2139":1,"2157":2,"2168":8,"2228":25,"2413":2,"2414":6,"2415":2,"2491":8,"2757":1}}],["xs60",{"2":{"197":2,"199":1}}],["xy",{"2":{"176":1}}],["xicolinguada",{"2":{"2270":1}}],["xip",{"2":{"174":1,"191":1}}],["xiudi",{"2":{"102":9,"114":1,"211":1,"253":2,"266":1}}],["xap",{"2":{"160":1,"199":1,"211":1}}],["x86",{"2":{"158":1,"2351":2,"2461":1}}],["xealousbrown",{"2":{"114":1}}],["xelus22",{"2":{"58":1}}],["xelus",{"0":{"58":1},"2":{"58":4,"197":2,"211":8,"277":1}}],["xd96",{"2":{"102":2}}],["xd87",{"2":{"102":2}}],["xd84pro",{"2":{"102":2}}],["xd84",{"2":{"102":2}}],["xd68",{"2":{"102":2}}],["xd60",{"2":{"93":1,"102":2}}],["xd004",{"2":{"102":2,"211":1,"253":2}}],["xd002",{"2":{"102":2,"114":1}}],["xd75",{"2":{"64":1,"102":2,"266":1}}],["x3c",{"2":{"55":2,"105":8,"292":2,"314":1,"317":1,"370":11,"371":13,"375":4,"377":1,"393":2,"394":2,"405":1,"416":3,"438":6,"439":4,"446":2,"465":2,"564":1,"657":2,"658":2,"661":2,"701":2,"1132":1,"1133":1,"1329":1,"1344":1,"1346":3,"1348":2,"1349":6,"1380":5,"1385":1,"1446":1,"1448":1,"1497":2,"1518":1,"1549":8,"1668":2,"1677":2,"1729":2,"1815":1,"1816":1,"1849":1,"1866":3,"1871":1,"1905":8,"1907":32,"1912":2,"1941":1,"1952":2,"1958":5,"1959":1,"2131":2,"2139":1,"2228":10,"2229":2,"2230":4,"2233":3,"2235":2,"2236":2,"2237":1,"2240":1,"2242":1,"2243":1,"2244":1,"2252":2,"2309":4,"2347":4,"2353":1,"2402":1,"2403":2,"2421":1,"2422":3,"2425":2,"2445":2,"2446":3,"2452":2,"2454":2,"2469":1,"2475":3,"2477":14,"2479":2,"2570":1,"2577":6,"2588":6,"2612":1,"2738":2}}],["x",{"0":{"108":1,"1297":1,"1545":1,"2603":1,"2605":1},"1":{"1546":1,"2604":1,"2606":1},"2":{"49":1,"70":1,"108":1,"113":2,"114":5,"211":3,"219":1,"222":1,"249":2,"266":2,"313":1,"314":1,"359":5,"473":1,"530":2,"1295":1,"1325":1,"1341":4,"1361":5,"1363":1,"1511":2,"1518":1,"1530":1,"1533":2,"1537":2,"1545":1,"1546":2,"1594":24,"1632":1,"1633":1,"1634":2,"1655":1,"1725":6,"1730":2,"1802":1,"1803":1,"1821":2,"1822":2,"1836":5,"1838":3,"1839":2,"1842":2,"1843":4,"1849":4,"1851":5,"1852":5,"1855":3,"1858":2,"1859":3,"1861":2,"1862":2,"1879":1,"1911":1,"1914":2,"1946":6,"1954":2,"2034":1,"2052":2,"2075":4,"2079":1,"2133":1,"2143":2,"2165":1,"2169":18,"2170":1,"2184":1,"2227":2,"2262":1,"2266":3,"2300":2,"2311":21,"2355":3,"2376":1,"2384":1,"2386":3,"2407":1,"2414":4,"2533":1,"2559":16,"2576":3,"2577":13,"2603":3,"2605":3,"2614":1,"2615":19,"2686":3,"2688":2,"2695":2,"2734":2,"2757":1}}],["xxxx",{"2":{"2036":1,"2566":4}}],["xxxxxxx",{"2":{"2355":1,"2395":1,"2405":2,"2614":1}}],["xxxxx",{"2":{"1559":1}}],["xxx",{"2":{"201":2,"703":4,"1336":1,"1670":1,"1671":1,"1677":2,"2614":5,"2738":2}}],["xx",{"2":{"28":1}}],["jdk",{"2":{"2495":1}}],["jre",{"2":{"2495":1}}],["jx",{"2":{"2262":1}}],["jekyll",{"2":{"2303":1}}],["jerky",{"2":{"1804":1,"1904":1}}],["jels60v2",{"2":{"222":1}}],["jellybean",{"2":{"114":1,"199":1,"222":1,"1949":3,"2711":1}}],["j8",{"2":{"1385":1}}],["jkl",{"2":{"1527":1}}],["jk",{"2":{"266":1,"1511":4,"1527":1}}],["jkeys",{"2":{"168":1,"211":2}}],["jm60",{"2":{"241":2}}],["jig",{"2":{"2151":1}}],["jian",{"2":{"236":1}}],["jis",{"0":{"1280":1},"2":{"222":1,"1268":2,"1280":1,"1355":1,"2391":9}}],["jisplit89",{"2":{"143":2}}],["jb",{"2":{"211":1}}],["jf",{"2":{"211":1,"249":1}}],["jsmith",{"2":{"2553":1}}],["jsjson",{"2":{"1836":1}}],["js",{"2":{"324":1,"1635":32,"1640":1,"1836":1,"1921":1,"2365":32}}],["jscotto",{"2":{"199":1,"217":5,"222":1}}],["json\`",{"2":{"397":1}}],["json>",{"2":{"370":1,"371":1,"2446":1}}],["json2c",{"0":{"379":1},"2":{"211":2,"379":1}}],["jsons",{"2":{"114":1}}],["jsonschema",{"2":{"76":1,"114":1,"160":1,"191":2,"222":1,"282":1,"607":1,"609":2,"2671":1}}],["json",{"0":{"120":1,"262":1,"313":1,"377":1,"545":1,"608":1,"1354":1,"2298":1,"2436":1,"2555":1,"2615":1,"2671":1},"1":{"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"1355":1,"1356":1,"1357":1,"2556":1,"2557":1,"2558":1,"2559":1,"2672":1,"2673":1,"2674":1,"2675":1,"2676":1,"2677":1,"2678":1,"2679":1,"2680":1,"2681":1,"2682":1,"2683":1,"2684":1,"2685":1,"2686":1,"2687":1,"2688":1,"2689":1,"2690":1,"2691":1,"2692":1,"2693":1,"2694":1,"2695":1,"2696":1,"2697":1,"2698":1,"2699":1,"2700":1},"2":{"70":32,"73":1,"75":1,"76":6,"109":1,"110":1,"111":1,"112":1,"114":5,"120":3,"132":2,"134":3,"141":1,"149":1,"169":3,"176":2,"184":4,"189":1,"191":8,"198":1,"199":5,"201":5,"211":22,"213":2,"222":1,"224":2,"232":1,"236":10,"238":1,"249":27,"262":2,"266":30,"277":3,"292":1,"307":2,"312":1,"313":1,"314":5,"317":4,"370":1,"374":4,"377":6,"378":2,"380":1,"384":2,"388":4,"389":3,"390":3,"391":2,"393":2,"394":2,"401":2,"405":4,"441":2,"496":3,"519":1,"521":1,"522":3,"525":1,"526":1,"527":2,"529":3,"530":2,"533":1,"541":5,"545":2,"605":1,"606":3,"607":1,"608":1,"609":1,"610":4,"611":3,"613":1,"614":1,"621":1,"1218":1,"1346":1,"1354":2,"1355":2,"1908":3,"1921":1,"2244":1,"2259":1,"2277":3,"2296":1,"2436":2,"2437":5,"2438":1,"2439":1,"2440":4,"2441":1,"2446":2,"2508":2,"2512":2,"2513":2,"2555":1,"2556":2,"2557":2,"2558":1,"2559":1,"2560":1,"2566":9,"2614":1,"2615":10,"2616":3,"2617":2,"2620":2,"2671":4,"2674":1,"2686":2,"2688":1,"2689":1,"2694":1,"2695":1,"2725":1}}],["jtagen",{"2":{"1294":1}}],["jtag",{"0":{"1294":1},"2":{"160":1,"1294":4,"2343":4,"2348":1,"2638":1}}],["jnao",{"2":{"143":2}}],["jolly",{"2":{"2353":1}}],["jonasfasler",{"2":{"2270":1}}],["jones",{"2":{"222":1}}],["john",{"2":{"1436":3,"1511":2,"2553":1}}],["joint",{"2":{"2272":3,"2273":1}}],["joints",{"2":{"2270":2,"2273":1,"2279":3}}],["join",{"2":{"485":1,"609":1,"613":1,"2272":1,"2349":1}}],["job",{"0":{"308":1,"309":1,"310":1,"314":1,"523":1,"524":1,"525":1},"2":{"305":3,"307":1,"308":2,"314":1,"315":1,"316":2,"521":2,"522":5,"523":1,"524":1,"525":1,"529":1,"1450":1,"2439":1}}],["jobs>",{"2":{"370":2,"371":2}}],["jobs",{"2":{"304":4,"370":3,"396":1,"411":1,"520":1,"526":1,"2437":1}}],["joshajohnson",{"2":{"241":2}}],["jopr",{"2":{"191":1}}],["journey",{"2":{"133":1}}],["joysticks",{"2":{"49":1,"118":2,"277":1,"1836":1}}],["joystick",{"0":{"1630":1,"1637":1,"1639":1,"1641":1,"1642":1,"1644":1,"1646":1,"1649":1,"1836":1,"2365":1},"1":{"1631":1,"1632":1,"1633":1,"1634":1,"1635":1,"1636":1,"1637":1,"1638":2,"1639":1,"1640":2,"1641":1,"1642":1,"1643":2,"1644":1,"1645":2,"1646":1,"1647":2,"1648":2,"1649":1,"1650":2},"2":{"49":7,"63":1,"114":1,"118":1,"149":1,"160":2,"183":5,"188":1,"191":4,"199":1,"231":3,"236":1,"249":3,"1630":2,"1631":2,"1632":3,"1633":7,"1634":8,"1635":32,"1637":1,"1638":2,"1641":1,"1836":21,"2365":33,"2749":1}}],["james",{"2":{"2750":1}}],["japan",{"2":{"1268":1}}],["japanese",{"2":{"176":1,"1280":1,"2703":3}}],["jacks",{"2":{"2116":1,"2118":1}}],["jackhumbert",{"2":{"624":1,"1440":1}}],["jack",{"2":{"624":1,"1265":3,"1376":3,"1381":1}}],["jacky",{"2":{"67":3,"72":1,"207":4,"211":2}}],["jan",{"2":{"463":1,"464":1,"465":2}}],["jane",{"2":{"122":2,"134":1}}],["java",{"0":{"329":1,"2495":1},"2":{"329":1,"1921":1,"2492":1,"2495":3}}],["jay60",{"2":{"211":1}}],["jaykeeb",{"2":{"207":1,"217":1}}],["ja",{"2":{"199":1}}],["jj50",{"2":{"102":2,"253":2,"266":1}}],["jj4x4",{"2":{"102":2}}],["jj40",{"2":{"102":2,"253":2,"266":1}}],["j",{"2":{"65":1,"211":1,"219":2,"249":2,"266":2,"313":1,"360":1,"370":4,"371":2,"396":2,"411":2,"530":2,"1511":1,"1527":2,"1932":1,"2169":1,"2182":4,"2184":2,"2355":3,"2384":2,"2386":3,"2407":1}}],["judged",{"2":{"2125":2}}],["judgment",{"2":{"352":1}}],["jumbo",{"0":{"1821":1}}],["jumpers",{"2":{"2353":1}}],["jumper",{"2":{"2240":2,"2242":2,"2328":1}}],["jumping",{"2":{"592":1,"1495":1}}],["jump",{"2":{"65":1,"74":1,"149":2,"176":1,"191":1,"557":1,"592":1,"593":3,"594":2,"595":2,"1403":1,"1495":1,"1497":2,"1530":2,"1816":2,"1932":1,"2508":2,"2524":2}}],["jumps",{"2":{"49":1}}],["jun",{"2":{"1265":1,"2257":1}}],["junco",{"2":{"253":2}}],["junk",{"2":{"149":1,"211":1}}],["justifiable",{"2":{"2564":1}}],["justification",{"2":{"2564":3}}],["just60",{"2":{"143":2}}],["just",{"0":{"551":1,"1243":1},"2":{"5":1,"45":1,"116":1,"173":1,"188":2,"233":1,"245":1,"331":1,"396":1,"486":1,"541":1,"546":1,"702":1,"1132":1,"1133":1,"1176":2,"1197":1,"1238":1,"1260":1,"1276":1,"1294":1,"1332":1,"1335":2,"1338":1,"1340":1,"1352":1,"1353":1,"1359":2,"1363":1,"1383":1,"1385":1,"1386":1,"1390":1,"1398":1,"1405":1,"1430":1,"1437":1,"1441":1,"1447":1,"1450":1,"1492":1,"1495":1,"1511":1,"1515":1,"1518":1,"1522":1,"1524":1,"1555":1,"1573":1,"1668":1,"1675":2,"1676":1,"1684":2,"1791":1,"1821":1,"1850":1,"1851":1,"1960":1,"2043":1,"2113":1,"2118":2,"2127":1,"2160":1,"2161":2,"2169":1,"2172":1,"2177":1,"2262":1,"2268":1,"2274":2,"2279":1,"2349":1,"2405":1,"2433":1,"2441":1,"2451":1,"2454":1,"2506":1,"2508":1,"2553":1,"2568":1,"2576":1,"2605":1,"2615":1,"2728":1,"2729":1,"2752":1,"2753":1,"2757":1}}],["jpg",{"2":{"624":1,"2566":1}}],["jps",{"2":{"36":1}}],["jp",{"0":{"35":1},"1":{"36":1},"2":{"35":1,"36":4}}],["9a",{"2":{"2091":1,"2093":1,"2095":1,"2097":1}}],["95",{"2":{"1578":1,"2425":1,"2588":2}}],["9501",{"2":{"51":1}}],["9b5c",{"2":{"314":1,"315":1}}],["91",{"2":{"1578":1}}],["910",{"2":{"211":1}}],["9126",{"2":{"199":1}}],["9174",{"2":{"48":1}}],["9171",{"2":{"32":1}}],["9",{"2":{"114":1,"152":1,"211":1,"249":1,"266":3,"313":1,"351":1,"360":2,"530":2,"633":1,"635":4,"792":1,"857":1,"891":1,"925":1,"1061":1,"1320":1,"1346":1,"1347":1,"1405":1,"1427":1,"1440":1,"1499":1,"1530":3,"1578":1,"1587":1,"1635":3,"1793":3,"1836":1,"1883":3,"2036":1,"2042":3,"2044":2,"2099":1,"2112":4,"2113":3,"2144":1,"2148":1,"2153":1,"2155":4,"2255":4,"2355":8,"2365":3,"2371":3,"2380":3,"2386":2,"2391":4,"2394":2,"2407":1,"2611":1,"2615":2,"2699":2}}],["967",{"2":{"2092":1}}],["9600",{"2":{"1201":1,"2150":1}}],["9603",{"2":{"74":1}}],["96",{"0":{"1282":1},"2":{"211":1,"286":1,"291":1,"883":1,"1563":1,"1565":1,"1566":1,"1567":1,"1578":1,"1724":1,"1836":1,"2355":1,"2364":1,"2370":2,"2388":1,"2396":2,"2508":1}}],["9657",{"2":{"114":1}}],["92",{"2":{"1578":1,"1836":1}}],["9207",{"2":{"629":1,"2344":1}}],["9203",{"2":{"629":1,"2344":1}}],["9205",{"2":{"114":1,"629":1,"2344":1}}],["9284",{"2":{"50":1}}],["97",{"2":{"1255":1,"1578":1}}],["9700",{"2":{"64":1}}],["9703",{"2":{"63":1}}],["9738",{"2":{"49":1}}],["93",{"2":{"1578":1}}],["9335",{"2":{"92":1}}],["9308",{"2":{"51":1}}],["9356",{"2":{"50":1}}],["9355",{"2":{"50":1}}],["9310",{"2":{"50":1}}],["9315",{"2":{"50":1}}],["9318",{"2":{"46":1}}],["98",{"2":{"1578":1}}],["9800",{"0":{"1835":1},"2":{"118":1,"1835":2}}],["9824",{"2":{"114":1}}],["9826",{"2":{"63":1}}],["9842",{"2":{"93":1}}],["9832",{"2":{"50":1}}],["9864",{"2":{"49":1}}],["9856",{"2":{"49":1}}],["94",{"2":{"1578":1}}],["9404",{"2":{"114":1}}],["9485",{"2":{"73":1}}],["9487",{"2":{"49":1}}],["9471",{"2":{"49":1}}],["99",{"2":{"360":1,"1578":1,"2144":1,"2699":1,"2745":1}}],["9973",{"2":{"270":1,"277":1}}],["9952",{"2":{"65":1}}],["9940",{"2":{"63":1}}],["9949",{"2":{"49":1}}],["9905",{"2":{"51":1}}],["9964",{"2":{"49":1}}],["9987",{"2":{"48":1}}],["90°",{"2":{"1329":1}}],["906",{"2":{"1091":2}}],["9054",{"2":{"50":1}}],["9055",{"2":{"50":1}}],["9023",{"2":{"50":1}}],["9020",{"2":{"49":1}}],["9001",{"2":{"1518":1}}],["900",{"2":{"955":2,"989":2,"1214":1,"1633":2}}],["900k",{"2":{"588":1}}],["9005",{"2":{"50":1}}],["900000",{"2":{"588":1}}],["9000",{"2":{"23":1,"45":1}}],["9019",{"2":{"26":1}}],["90",{"0":{"1821":1},"2":{"8":1,"1406":1,"1578":1,"1820":2,"1821":3,"1822":2,"1840":2,"1851":2,"1852":2,"1915":2,"2255":1,"2577":1}}],["zr",{"2":{"2153":3}}],["zdst",{"2":{"2147":1}}],["zle12864b",{"2":{"2136":1}}],["zone",{"2":{"2480":1}}],["zolentech",{"2":{"2136":1}}],["zoom",{"2":{"1839":9}}],["zodiark",{"2":{"222":1}}],["zxcvm",{"2":{"1355":1,"2703":3}}],["z0",{"2":{"1346":1,"1347":1}}],["zshrc",{"2":{"450":1}}],["zsh",{"2":{"448":1,"450":1}}],["zsa",{"0":{"5":1},"2":{"74":1,"241":1,"249":1,"270":1,"277":3}}],["zk3mod",{"2":{"249":1}}],["z34",{"2":{"241":2}}],["z12",{"2":{"241":2}}],["z150",{"2":{"37":2,"159":2,"160":1}}],["zadig",{"0":{"625":1},"1":{"626":1,"627":1,"628":1,"629":1},"2":{"240":3,"625":1,"626":2,"627":3,"628":1,"629":2,"1241":2}}],["zwag75",{"2":{"211":1}}],["z70ultra",{"2":{"211":1,"253":2}}],["ztboards",{"2":{"211":2}}],["zip",{"2":{"305":2}}],["zigotica",{"2":{"241":2,"249":1}}],["zicodia",{"2":{"211":1}}],["zinc",{"0":{"32":1},"2":{"32":1,"143":6}}],["zenkaku",{"2":{"2391":1}}],["zeal60",{"2":{"1497":1}}],["zed65",{"2":{"222":1,"249":1}}],["zeus",{"2":{"211":1}}],["zeroes",{"2":{"211":1,"1855":1}}],["zero",{"2":{"195":1,"222":1,"236":1,"370":1,"660":2,"685":1,"1211":1,"1290":1,"1420":1,"1451":2,"1452":1,"1857":1,"1879":1,"2155":1,"2226":1,"2491":1,"2524":1,"2585":1,"2587":2,"2592":1,"2594":1,"2705":1}}],["zcar",{"2":{"176":1}}],["zvecr",{"2":{"173":1,"182":1,"266":1}}],["z",{"0":{"2603":1,"2605":1},"1":{"2604":1,"2606":1},"2":{"152":1,"191":1,"249":1,"257":1,"258":1,"259":2,"266":1,"277":1,"313":1,"530":2,"696":1,"1341":4,"1421":1,"1426":1,"1440":1,"1451":1,"1499":1,"1506":1,"1508":1,"1527":1,"1530":1,"1571":1,"1583":1,"1632":1,"1655":1,"1676":1,"1842":1,"1929":7,"1933":5,"1938":1,"2099":2,"2148":1,"2153":1,"2169":1,"2217":1,"2323":2,"2355":3,"2386":3,"2407":1,"2603":3,"2605":5,"2611":2}}],["zygomorph",{"2":{"93":1}}],["8bpp",{"2":{"2596":2}}],["8bit",{"2":{"166":1,"1386":1,"2708":1}}],["8px",{"2":{"2577":2}}],["8mhz",{"2":{"2344":2}}],["8t",{"2":{"2105":1}}],["86",{"2":{"1578":1}}],["8x",{"2":{"1576":1,"1577":1}}],["8xv1",{"2":{"211":1}}],["81",{"2":{"1091":1,"1578":1,"1792":1}}],["8192",{"2":{"684":1,"685":1,"691":1}}],["8k4",{"2":{"850":1,"853":2,"885":1,"887":2,"919":1,"921":2}}],["8k",{"2":{"789":2,"854":2,"888":2,"922":2,"956":2,"987":2,"990":4,"1024":2,"1058":2,"1092":2}}],["87",{"2":{"1578":1}}],["87h",{"2":{"266":1}}],["8777",{"2":{"49":1}}],["8778",{"2":{"49":1}}],["80x160",{"2":{"2573":1,"2576":1}}],["80k",{"2":{"788":1}}],["8000",{"2":{"1861":1,"1862":1}}],["800",{"2":{"599":1,"1835":1,"1846":1,"1849":2}}],["800ms",{"2":{"599":1}}],["80",{"2":{"222":1,"505":2,"788":1,"1368":1,"1578":16,"1792":3,"1803":1,"2576":3,"2577":2,"2674":2}}],["8l",{"2":{"211":1}}],["8|16|32",{"2":{"166":1}}],["88",{"2":{"1578":1}}],["88200u",{"2":{"659":1}}],["8893",{"2":{"65":1}}],["8830",{"2":{"37":1}}],["8200",{"2":{"1835":1}}],["82",{"2":{"1578":1,"1792":1,"1836":1}}],["8237",{"2":{"530":1}}],["8236",{"2":{"315":1}}],["8291",{"2":{"49":1}}],["8256",{"2":{"49":1}}],["8269",{"2":{"24":1}}],["8",{"2":{"49":1,"74":1,"111":1,"114":1,"166":1,"199":1,"211":2,"292":2,"313":1,"351":1,"506":1,"530":2,"601":1,"633":1,"635":4,"641":2,"657":1,"659":2,"690":1,"694":1,"714":1,"720":1,"789":2,"822":1,"853":1,"854":2,"887":1,"888":2,"921":1,"922":2,"955":1,"956":2,"959":1,"989":1,"990":2,"993":1,"1024":2,"1027":1,"1058":2,"1092":2,"1095":1,"1126":1,"1181":1,"1227":1,"1230":1,"1329":1,"1332":1,"1336":1,"1405":1,"1440":2,"1445":2,"1451":1,"1515":3,"1530":2,"1577":1,"1578":1,"1594":3,"1612":1,"1614":1,"1632":2,"1633":1,"1635":3,"1638":1,"1677":1,"1793":3,"1794":1,"1798":1,"1801":2,"1802":2,"1803":2,"1804":3,"1807":1,"1815":2,"1817":1,"1820":2,"1821":3,"1822":2,"1836":1,"1839":1,"1855":2,"1859":2,"1883":3,"1907":1,"2035":1,"2039":2,"2042":2,"2060":1,"2091":1,"2095":1,"2104":1,"2105":1,"2139":2,"2141":1,"2142":2,"2148":1,"2150":1,"2153":1,"2155":4,"2184":1,"2196":1,"2254":1,"2343":1,"2352":1,"2353":3,"2355":8,"2365":3,"2371":3,"2372":2,"2380":3,"2384":1,"2386":2,"2391":4,"2394":2,"2401":2,"2406":1,"2407":1,"2411":1,"2495":1,"2574":1,"2575":3,"2577":3,"2585":1,"2592":1,"2598":2,"2615":2,"2623":1,"2688":1,"2694":2,"2695":1,"2708":1,"2738":1}}],["85",{"2":{"1440":1,"1578":1,"1836":1,"2040":1}}],["8591",{"2":{"114":2,"1511":1}}],["8532",{"2":{"94":1}}],["8537",{"2":{"37":1}}],["8564",{"2":{"63":1}}],["8582",{"2":{"35":1}}],["84",{"2":{"1578":1}}],["8422",{"2":{"133":1,"134":1}}],["8403",{"2":{"93":1}}],["8441",{"2":{"49":1}}],["8499",{"2":{"37":1}}],["8412",{"2":{"37":1}}],["8472",{"2":{"33":1}}],["8484",{"2":{"27":1}}],["89",{"2":{"1578":1,"1793":1,"1836":1,"2371":1}}],["8979",{"2":{"38":1}}],["8977",{"2":{"38":1}}],["8974",{"2":{"28":1}}],["8968",{"2":{"38":1}}],["8959",{"2":{"38":1}}],["8958",{"2":{"38":1}}],["8957",{"2":{"38":1}}],["8954",{"2":{"38":1}}],["8903",{"2":{"28":1}}],["83",{"2":{"251":1,"1578":1,"1792":1}}],["8327",{"2":{"50":1}}],["8321",{"2":{"21":1}}],["8318",{"2":{"49":1}}],["8348",{"2":{"22":1}}],["vqge7ok",{"2":{"2566":2}}],["vbat",{"2":{"2516":1}}],["vbus",{"2":{"1320":2,"1321":1,"2131":1,"2132":4,"2133":2,"2517":1}}],["v60",{"2":{"2294":1}}],["v=vkrppahlisy",{"2":{"2040":1}}],["vlc",{"2":{"2355":1}}],["vl",{"2":{"2353":1}}],["vl9",{"2":{"1793":1,"2371":1}}],["vl8",{"2":{"1793":1,"2371":1}}],["vl7",{"2":{"1793":1,"2371":1}}],["vl6",{"2":{"1793":1,"2371":1}}],["vl5",{"2":{"1793":1,"2371":1}}],["vl4",{"2":{"1793":1,"2371":1}}],["vl3",{"2":{"1793":1,"2371":1}}],["vl2",{"2":{"1793":1,"2371":1}}],["vl10",{"2":{"1793":1,"2371":1}}],["vl1",{"2":{"1793":1,"2371":1}}],["vl0",{"2":{"1793":1,"2371":1}}],["vlk",{"2":{"188":1,"191":1}}],["vddio",{"2":{"1146":1}}],["vdd",{"2":{"1123":1,"1126":1,"1129":1}}],["vcs",{"2":{"2431":2,"2464":2}}],["vcc",{"2":{"630":1,"734":1,"758":1,"760":1,"787":1,"819":1,"851":8,"886":8,"920":1,"954":1,"988":1,"1022":8,"1056":8,"1090":8,"1225":2,"1573":1,"1717":1,"2061":1,"2118":1,"2119":1,"2120":1,"2240":1,"2242":1,"2276":1,"2330":2,"2332":2,"2334":2,"2336":2,"2338":2,"2340":1,"2529":1,"2530":2}}],["vcl65",{"2":{"211":1}}],["vcl",{"2":{"211":1}}],["vk",{"2":{"188":1,"191":1,"2063":1}}],["vuhopkep",{"2":{"149":1}}],["vusb",{"2":{"50":1,"134":1,"149":1,"249":1,"266":1,"505":1,"1242":1,"2743":1}}],["vn66",{"2":{"143":2}}],["vpath",{"2":{"114":2,"191":1,"665":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1527":1}}],["vss",{"2":{"1236":1}}],["vscode",{"2":{"199":1,"454":1,"2430":1,"2508":1,"2513":3}}],["vs",{"0":{"568":2,"2504":1,"2507":1,"2511":1,"2512":1},"1":{"2505":1,"2506":1,"2507":1,"2508":2,"2509":1,"2510":1,"2512":1},"2":{"114":1,"199":1,"457":1,"1326":5,"2114":1,"2485":1,"2503":3,"2506":1,"2507":1,"2509":1,"2510":4,"2512":4,"2513":5,"2550":1,"2723":1}}],["vowel",{"2":{"2153":4}}],["vol",{"2":{"1665":4,"2355":2,"2393":2}}],["vold",{"2":{"209":1,"530":2,"1559":1,"1560":1,"1665":1,"1932":1,"2355":1,"2393":1}}],["volu",{"2":{"209":1,"530":2,"1559":1,"1560":1,"1665":1,"1932":1,"2355":1,"2393":1}}],["volume",{"0":{"1401":1},"2":{"191":1,"630":1,"659":1,"1401":2,"1560":2,"1656":1,"1665":3,"1932":1,"2355":7,"2392":4,"2393":2,"2705":1}}],["voltages",{"2":{"630":1}}],["voltage",{"2":{"199":1,"638":1,"684":1,"1225":2,"1325":1,"1576":1,"1577":1,"1589":1,"1630":2,"2131":1,"2132":1,"2348":1}}],["volatile",{"2":{"114":1,"2149":1}}],["volcano660",{"2":{"102":2,"114":1,"211":1}}],["voilà",{"2":{"1409":1}}],["voice",{"2":{"231":1,"1402":3,"1408":2,"1577":1,"2357":2}}],["voices",{"0":{"1402":1},"2":{"112":1,"502":2,"1402":4,"1408":2,"2357":2,"2676":2}}],["void",{"0":{"588":2,"646":2,"647":1,"649":1,"651":2,"652":1,"673":1,"675":1,"677":1,"679":1,"707":2,"738":2,"739":1,"741":1,"743":1,"745":1,"747":1,"749":1,"751":1,"753":2,"754":2,"764":1,"766":1,"768":1,"770":1,"772":1,"774":1,"776":1,"778":1,"780":1,"782":1,"796":1,"798":1,"800":1,"802":1,"804":1,"806":1,"808":1,"810":1,"812":1,"814":1,"826":1,"828":1,"830":1,"832":1,"834":1,"836":1,"838":1,"840":1,"842":1,"844":1,"846":1,"861":1,"863":1,"865":1,"867":1,"869":1,"871":1,"873":1,"875":1,"877":1,"879":1,"881":1,"895":1,"897":1,"899":1,"901":1,"903":1,"905":1,"907":1,"909":1,"911":1,"913":1,"915":1,"929":1,"931":1,"933":1,"935":1,"937":1,"939":1,"941":1,"943":1,"945":1,"947":1,"949":1,"963":1,"965":1,"967":1,"969":1,"971":1,"973":1,"975":1,"977":1,"979":1,"981":1,"983":1,"997":1,"999":1,"1001":1,"1003":1,"1005":1,"1007":1,"1009":1,"1011":1,"1013":1,"1015":1,"1017":1,"1031":1,"1033":1,"1035":1,"1037":1,"1039":1,"1041":1,"1043":1,"1045":1,"1047":1,"1049":1,"1051":1,"1065":1,"1067":1,"1069":1,"1071":1,"1073":1,"1075":1,"1077":1,"1079":1,"1081":1,"1083":1,"1085":1,"1099":1,"1101":1,"1103":1,"1105":1,"1107":1,"1109":1,"1111":1,"1113":1,"1115":1,"1117":1,"1119":1,"1152":1,"1154":1,"1156":1,"1158":1,"1160":1,"1162":1,"1164":1,"1166":1,"1168":1,"1170":1,"1172":1,"1179":2,"1186":1,"1194":2,"1200":1,"1202":1,"1204":1,"1206":1,"1208":1,"1210":1,"1232":1,"1473":2,"1474":2,"1475":2,"1476":2,"1477":2,"1478":2,"1479":1,"1481":1,"1483":1,"1485":2,"1486":2,"1487":2,"1488":1,"1538":2,"1539":2,"1540":2,"1541":2,"1542":2,"1543":2,"1544":2,"1545":1,"1596":1,"1598":2,"1599":2,"1600":1,"1602":2,"1603":1,"1605":1,"1607":1,"1609":1,"1611":1,"1613":1,"1615":1,"1617":1,"1622":1,"1624":1,"1626":1,"1628":1,"1641":2,"1642":1,"1644":1,"1649":1,"1689":2,"1690":2,"1691":2,"1692":2,"1693":1,"1697":1,"1698":1,"1735":2,"1736":2,"1737":2,"1738":2,"1739":2,"1740":2,"1741":1,"1743":1,"1745":1,"1747":1,"1749":1,"1751":2,"1752":2,"1753":2,"1754":2,"1755":1,"1757":2,"1758":2,"1759":2,"1760":2,"1761":1,"1763":2,"1764":2,"1765":2,"1766":2,"1767":1,"1769":1,"1771":1,"1773":2,"1774":1,"1776":1,"1778":1,"1885":2,"1886":1,"1888":1,"1890":1,"1892":1,"1897":2,"1898":1,"1900":1,"1925":1,"1927":1,"1962":2,"1963":2,"1964":2,"1965":2,"1966":2,"1967":2,"1968":1,"1970":1,"1972":1,"1974":1,"1976":1,"1978":2,"1979":2,"1980":2,"1981":2,"1982":1,"1984":2,"1985":2,"1986":2,"1987":2,"1988":1,"1990":2,"1991":2,"1992":2,"1993":2,"1994":1,"1996":2,"1997":2,"1998":2,"1999":2,"2000":1,"2002":2,"2003":2,"2004":2,"2005":2,"2006":1,"2008":1,"2010":1,"2012":1,"2014":1,"2016":1,"2018":2,"2019":1,"2021":1,"2023":1,"2081":1,"2083":1,"2085":1,"2087":1,"2089":1,"2091":1,"2093":1,"2095":1,"2097":1,"2099":2,"2186":1,"2188":1,"2190":2,"2191":2,"2192":1,"2194":1,"2196":2,"2197":2,"2198":2,"2199":1,"2201":1,"2209":1,"2211":2,"2212":1,"2214":1,"2219":1,"2221":2,"2222":2,"2223":2},"1":{"648":1,"650":1,"653":1,"674":1,"676":1,"678":1,"680":1,"740":1,"742":1,"744":1,"746":1,"748":1,"750":1,"752":1,"765":1,"767":1,"769":1,"771":1,"773":1,"775":1,"777":1,"779":1,"781":1,"783":1,"797":1,"799":1,"801":1,"803":1,"805":1,"807":1,"809":1,"811":1,"813":1,"815":1,"827":1,"829":1,"831":1,"833":1,"835":1,"837":1,"839":1,"841":1,"843":1,"845":1,"847":1,"862":1,"864":1,"866":1,"868":1,"870":1,"872":1,"874":1,"876":1,"878":1,"880":1,"882":1,"896":1,"898":1,"900":1,"902":1,"904":1,"906":1,"908":1,"910":1,"912":1,"914":1,"916":1,"930":1,"932":1,"934":1,"936":1,"938":1,"940":1,"942":1,"944":1,"946":1,"948":1,"950":1,"964":1,"966":1,"968":1,"970":1,"972":1,"974":1,"976":1,"978":1,"980":1,"982":1,"984":1,"998":1,"1000":1,"1002":1,"1004":1,"1006":1,"1008":1,"1010":1,"1012":1,"1014":1,"1016":1,"1018":1,"1032":1,"1034":1,"1036":1,"1038":1,"1040":1,"1042":1,"1044":1,"1046":1,"1048":1,"1050":1,"1052":1,"1066":1,"1068":1,"1070":1,"1072":1,"1074":1,"1076":1,"1078":1,"1080":1,"1082":1,"1084":1,"1086":1,"1100":1,"1102":1,"1104":1,"1106":1,"1108":1,"1110":1,"1112":1,"1114":1,"1116":1,"1118":1,"1120":1,"1153":1,"1155":1,"1157":1,"1159":1,"1161":1,"1163":1,"1165":1,"1167":1,"1169":1,"1171":1,"1173":1,"1187":1,"1201":1,"1203":1,"1205":1,"1207":1,"1209":1,"1211":1,"1233":1,"1480":1,"1482":1,"1484":1,"1489":1,"1546":1,"1597":1,"1601":1,"1604":1,"1606":1,"1608":1,"1610":1,"1612":1,"1614":1,"1616":1,"1618":1,"1623":1,"1625":1,"1627":1,"1629":1,"1643":1,"1645":1,"1650":1,"1742":1,"1744":1,"1746":1,"1748":1,"1750":1,"1756":1,"1762":1,"1768":1,"1770":1,"1772":1,"1775":1,"1777":1,"1779":1,"1887":1,"1889":1,"1891":1,"1893":1,"1899":1,"1901":1,"1926":1,"1928":1,"1969":1,"1971":1,"1973":1,"1975":1,"1977":1,"1983":1,"1989":1,"1995":1,"2001":1,"2007":1,"2009":1,"2011":1,"2015":1,"2017":1,"2020":1,"2022":1,"2024":1,"2082":1,"2084":1,"2086":1,"2088":1,"2090":1,"2092":1,"2094":1,"2096":1,"2098":1,"2187":1,"2189":1,"2193":1,"2195":1,"2200":1,"2202":1,"2210":1,"2213":1,"2215":1,"2220":1,"2224":2},"2":{"31":1,"34":1,"46":2,"90":2,"105":3,"125":3,"185":3,"196":1,"222":1,"249":3,"292":1,"453":1,"565":1,"566":13,"576":1,"577":4,"579":4,"580":5,"582":1,"583":4,"586":4,"587":4,"588":14,"590":3,"591":8,"597":1,"698":1,"707":1,"1245":1,"1332":2,"1333":8,"1360":1,"1375":2,"1393":1,"1400":2,"1430":2,"1464":4,"1497":1,"1511":1,"1593":1,"1594":2,"1668":2,"1670":2,"1680":3,"1686":4,"1729":1,"1733":1,"1813":1,"1814":3,"1815":2,"1816":1,"1822":35,"1825":1,"1849":2,"1850":3,"1853":5,"1862":1,"1866":2,"1873":16,"1874":5,"1880":1,"1910":13,"1943":2,"1952":1,"1957":1,"1960":1,"2042":2,"2044":3,"2107":31,"2130":10,"2137":2,"2138":2,"2139":2,"2140":2,"2143":33,"2166":1,"2167":6,"2168":5,"2169":8,"2170":8,"2171":8,"2227":1,"2301":4,"2431":1,"2464":1,"2491":2,"2524":1,"2525":1,"2526":1,"2576":4,"2577":22,"2581":2,"2582":1,"2749":12,"2757":1}}],["v1",{"0":{"307":1,"308":1,"309":1,"310":1},"2":{"86":1,"102":4,"114":1,"143":7,"149":2,"168":2,"197":10,"199":1,"207":1,"222":1,"226":1,"236":2,"253":2,"277":2,"314":2,"315":1,"317":4,"629":1,"1319":3,"2513":1,"2587":7,"2588":7,"2589":3,"2593":5,"2594":7,"2595":3,"2596":7,"2597":3,"2598":6,"2599":3}}],["v19",{"2":{"49":1}}],["v2j37s7",{"2":{"2353":1}}],["v2",{"2":{"56":2,"86":2,"114":1,"122":1,"143":2,"149":2,"168":2,"191":1,"197":4,"199":2,"207":2,"211":2,"217":4,"222":2,"236":2,"249":3,"277":1,"327":1,"1319":2,"2350":1}}],["v2017",{"2":{"181":2}}],["v20",{"2":{"49":1}}],["v32a",{"2":{"197":2}}],["v3x",{"2":{"191":1}}],["v3",{"0":{"56":1},"2":{"56":2,"114":1,"149":2,"191":1,"211":1,"277":1,"2437":3}}],["vtor",{"2":{"50":1}}],["vai",{"2":{"530":2,"1948":1,"2377":1}}],["vad",{"2":{"530":2,"1948":1,"2377":1}}],["vault35",{"2":{"249":1}}],["vast",{"2":{"166":1,"1655":1}}],["vagrant",{"2":{"113":1,"114":2,"211":1}}],["vaguettelite",{"2":{"86":2}}],["vanilla",{"2":{"2565":1}}],["vaneelaex",{"2":{"86":2}}],["vaneela",{"2":{"86":2}}],["vanana",{"2":{"86":4}}],["varying",{"2":{"1949":3}}],["vary",{"2":{"1325":1,"2351":1,"2727":1}}],["var",{"2":{"460":3,"1250":2}}],["var>=",{"2":{"370":1,"371":2}}],["varaible",{"2":{"176":1}}],["variety",{"2":{"1836":1,"2544":1}}],["varies",{"2":{"1574":1,"1835":1,"1842":1,"1849":2,"1851":1,"2745":1}}],["variants",{"2":{"145":1,"211":1,"1215":1,"1216":1,"1217":1,"2182":1,"2233":1,"2344":2,"2659":1}}],["variant",{"2":{"114":1,"157":1,"222":3,"331":1,"1825":2,"1826":1,"1906":1,"2233":1,"2491":1,"2576":1}}],["variations",{"2":{"236":1,"243":1,"1217":1}}],["variation",{"0":{"55":1},"2":{"176":1}}],["variable",{"2":{"50":1,"65":1,"133":1,"134":3,"236":1,"367":1,"396":1,"411":1,"430":1,"437":1,"460":1,"473":1,"500":1,"610":2,"1303":6,"1326":1,"1347":2,"1377":1,"1434":2,"1452":1,"1557":1,"1859":1,"1873":1,"1874":1,"1921":2,"2042":1,"2147":1,"2162":1,"2252":1,"2262":1,"2263":2,"2279":1,"2358":2,"2468":1,"2513":2,"2525":1,"2589":1,"2590":1,"2591":1,"2595":1,"2597":1,"2599":1,"2728":1,"2757":11}}],["variables",{"0":{"2757":1},"2":{"49":2,"211":2,"496":1,"501":1,"611":1,"1303":1,"1332":1,"1341":1,"1351":1,"1415":1,"1859":1,"2164":1,"2263":2,"2524":1,"2525":1,"2530":1,"2757":5}}],["various",{"2":{"50":2,"114":1,"149":3,"160":1,"191":2,"211":1,"277":2,"331":1,"342":1,"470":1,"496":2,"565":1,"1244":1,"1246":1,"1325":1,"1326":1,"1335":1,"1410":1,"1415":1,"1578":1,"1671":1,"2038":1,"2067":1,"2225":1,"2628":1,"2647":1,"2661":1,"2666":1,"2749":1}}],["vars",{"2":{"49":2,"2262":1}}],["valu",{"2":{"1559":1,"2034":1,"2376":1}}],["valued",{"2":{"1332":1}}],["valueerror",{"2":{"465":2}}],["value>",{"2":{"370":1,"371":2,"416":1,"438":2}}],["values",{"0":{"417":1,"418":1,"423":1,"437":1,"438":1,"439":1,"474":1,"1430":1},"1":{"419":1,"420":1,"421":1,"422":1},"2":{"65":1,"70":1,"83":1,"182":1,"186":2,"198":2,"199":1,"231":1,"236":1,"249":1,"374":1,"417":1,"418":1,"432":2,"438":1,"439":1,"474":2,"502":1,"606":1,"609":1,"612":1,"613":1,"614":1,"630":1,"651":1,"659":1,"669":1,"679":1,"684":1,"685":1,"686":1,"703":1,"753":1,"754":1,"780":1,"782":1,"788":1,"789":4,"792":1,"812":1,"814":1,"822":1,"844":1,"846":1,"853":1,"854":4,"857":1,"879":1,"881":1,"887":1,"888":4,"891":1,"913":1,"915":1,"921":1,"922":4,"925":1,"947":1,"949":1,"955":1,"956":4,"959":1,"981":1,"983":1,"989":1,"990":4,"993":1,"1015":1,"1017":1,"1024":4,"1027":1,"1049":1,"1051":1,"1058":4,"1061":1,"1083":1,"1085":1,"1091":1,"1092":4,"1095":1,"1117":1,"1119":1,"1126":1,"1127":1,"1130":1,"1148":1,"1170":1,"1172":1,"1201":1,"1218":1,"1245":1,"1326":1,"1331":1,"1332":4,"1401":1,"1406":2,"1430":2,"1469":1,"1471":1,"1496":1,"1633":4,"1638":1,"1657":1,"1677":2,"1725":2,"1791":2,"1794":2,"1807":2,"1817":1,"1820":2,"1821":1,"1822":1,"1825":1,"1838":1,"1842":2,"1843":1,"1846":1,"1849":2,"1855":1,"1859":7,"1946":2,"1949":1,"2038":2,"2064":1,"2128":1,"2143":1,"2152":1,"2155":2,"2172":1,"2174":1,"2226":3,"2263":1,"2311":1,"2342":1,"2348":1,"2524":1,"2535":1,"2536":1,"2537":1,"2538":1,"2541":1,"2553":1,"2556":2,"2566":3,"2574":1,"2577":1,"2585":1,"2587":1,"2588":1,"2592":1,"2596":2,"2612":1,"2620":1,"2738":2}}],["value",{"0":{"612":1,"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"745":2,"747":2,"751":1,"772":2,"774":2,"778":1,"804":2,"806":2,"810":1,"836":2,"838":2,"842":1,"871":2,"873":2,"877":1,"905":2,"907":2,"911":1,"939":2,"941":2,"945":1,"973":2,"975":2,"979":1,"1007":2,"1009":2,"1013":1,"1041":2,"1043":2,"1047":1,"1075":2,"1077":2,"1081":1,"1109":2,"1111":2,"1115":1,"1162":2,"1164":2,"1168":1,"1182":1,"1185":1,"1187":1,"1190":1,"1193":1,"1205":1,"1211":1,"1416":1,"1482":1,"1484":1,"1489":1,"1616":1,"1621":1,"1648":1,"1649":1,"1696":1,"1701":1,"1704":1,"1707":1,"1710":1,"1713":1,"1742":1,"1743":1,"1745":1,"1756":1,"1762":1,"1772":1,"1775":1,"1777":1,"1779":1,"1782":1,"1785":1,"1896":1,"1899":1,"1969":1,"1983":1,"1989":1,"1995":1,"2001":1,"2011":1,"2017":1,"2020":1,"2022":1,"2024":1,"2027":1,"2030":1,"2187":1,"2205":1,"2208":1,"2213":1,"2215":1,"2218":1,"2220":1},"1":{"746":2,"748":2,"752":1,"773":2,"775":2,"779":1,"805":2,"807":2,"811":1,"837":2,"839":2,"843":1,"872":2,"874":2,"878":1,"906":2,"908":2,"912":1,"940":2,"942":2,"946":1,"974":2,"976":2,"980":1,"1008":2,"1010":2,"1014":1,"1042":2,"1044":2,"1048":1,"1076":2,"1078":2,"1082":1,"1110":2,"1112":2,"1116":1,"1163":2,"1165":2,"1169":1,"1650":1,"1744":1,"1746":1},"2":{"25":1,"45":2,"49":1,"63":1,"70":13,"90":1,"176":1,"191":1,"195":1,"222":1,"236":1,"316":1,"350":5,"374":7,"413":1,"415":2,"418":1,"423":1,"425":1,"426":1,"430":3,"437":1,"453":1,"502":1,"505":2,"506":3,"510":1,"529":3,"530":1,"588":1,"597":1,"598":4,"601":2,"608":1,"609":1,"610":5,"612":2,"613":1,"628":1,"638":4,"639":4,"641":1,"648":3,"650":3,"659":7,"660":2,"666":2,"676":3,"678":3,"683":2,"684":2,"685":1,"686":1,"689":1,"690":1,"694":1,"739":1,"740":1,"742":3,"744":3,"746":2,"748":2,"752":1,"758":1,"766":1,"767":1,"769":3,"771":3,"773":2,"775":2,"779":1,"786":3,"787":1,"790":1,"798":1,"799":1,"801":3,"803":3,"805":2,"807":2,"809":3,"811":2,"819":1,"828":1,"829":1,"833":3,"835":3,"837":2,"839":2,"843":1,"850":3,"851":1,"852":1,"855":1,"863":1,"864":1,"868":3,"870":3,"872":2,"874":2,"878":1,"885":3,"886":1,"889":1,"897":1,"898":1,"902":3,"904":3,"906":2,"908":2,"912":1,"919":3,"920":1,"923":1,"931":1,"932":1,"936":3,"938":3,"940":2,"942":2,"946":1,"953":4,"954":1,"957":1,"965":1,"966":1,"970":3,"972":3,"974":2,"976":2,"980":1,"987":4,"988":1,"991":1,"999":1,"1000":1,"1004":3,"1006":3,"1008":2,"1010":2,"1012":3,"1014":2,"1021":4,"1022":1,"1023":1,"1025":1,"1033":1,"1034":1,"1038":3,"1040":3,"1042":2,"1044":2,"1046":3,"1048":2,"1055":4,"1056":1,"1057":1,"1059":1,"1067":1,"1068":1,"1072":3,"1074":3,"1076":2,"1078":2,"1080":3,"1082":2,"1089":4,"1090":1,"1093":1,"1101":1,"1102":1,"1106":3,"1108":3,"1110":2,"1112":2,"1114":3,"1116":2,"1137":1,"1146":1,"1154":1,"1155":1,"1159":3,"1161":3,"1163":2,"1165":2,"1169":1,"1198":1,"1221":1,"1325":1,"1332":4,"1333":2,"1365":1,"1393":1,"1406":1,"1411":1,"1416":6,"1430":5,"1431":5,"1434":1,"1435":3,"1436":1,"1464":1,"1533":3,"1546":2,"1554":1,"1559":1,"1573":1,"1630":1,"1633":3,"1640":4,"1646":1,"1649":1,"1650":3,"1657":1,"1658":1,"1670":1,"1671":1,"1675":1,"1677":1,"1682":1,"1725":1,"1726":1,"1728":8,"1729":2,"1730":1,"1733":5,"1744":1,"1746":1,"1762":1,"1794":1,"1803":1,"1804":1,"1807":3,"1816":1,"1820":1,"1822":2,"1836":1,"1843":4,"1851":1,"1862":2,"1873":1,"1874":1,"1933":1,"1946":1,"1947":1,"1948":4,"1949":23,"1950":1,"1954":3,"1971":3,"1973":3,"1989":1,"1995":1,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2001":1,"2012":1,"2013":1,"2014":1,"2015":1,"2016":1,"2033":2,"2034":6,"2035":1,"2051":9,"2054":10,"2055":2,"2056":1,"2091":1,"2092":1,"2093":1,"2094":1,"2095":1,"2096":1,"2098":1,"2107":3,"2125":1,"2128":1,"2129":1,"2130":1,"2140":1,"2143":1,"2149":1,"2156":1,"2169":2,"2170":1,"2172":1,"2208":1,"2226":4,"2227":1,"2229":1,"2299":1,"2300":1,"2306":1,"2311":3,"2358":1,"2376":6,"2377":4,"2524":1,"2541":1,"2566":1,"2577":3,"2587":1,"2594":1,"2597":1,"2606":1,"2671":1,"2677":1,"2688":1,"2694":3,"2695":3,"2697":1,"2719":1,"2728":9,"2737":2,"2738":1,"2739":1}}],["vald",{"2":{"1559":1,"2034":1,"2376":1}}],["valhalla",{"2":{"211":1}}],["valor",{"0":{"58":1},"2":{"58":3,"114":1,"211":1}}],["val",{"0":{"1757":2,"1758":1,"1759":1,"1760":1,"1761":1,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2054":1},"1":{"1762":1,"2001":1},"2":{"49":1,"160":1,"183":4,"191":1,"222":2,"506":1,"1333":3,"1457":1,"1634":8,"1728":3,"1730":1,"1949":9,"1954":1,"1959":2,"2035":4,"2046":2,"2054":4,"2057":2,"2299":4,"2577":11,"2688":2,"2694":1,"2695":2,"2711":3}}],["validating",{"2":{"2453":1}}],["validation",{"2":{"114":1,"199":2,"222":2,"236":1,"266":1,"273":1,"307":1,"1314":1}}],["validated",{"2":{"663":1,"2401":1}}],["validate",{"2":{"76":1,"199":2,"211":1,"349":1}}],["valid",{"2":{"49":1,"149":1,"199":2,"241":1,"253":1,"266":1,"270":1,"374":1,"397":1,"598":1,"689":1,"788":1,"789":2,"853":1,"854":2,"887":1,"888":2,"921":1,"922":2,"955":1,"956":2,"989":1,"990":2,"1024":2,"1058":2,"1091":1,"1092":2,"1218":1,"1243":1,"1312":1,"1445":1,"1460":1,"1622":1,"1839":1,"2038":2,"2149":1,"2294":1,"2322":1,"2354":1,"2402":1,"2403":1,"2564":4,"2566":4,"2575":2,"2596":1}}],["virster",{"2":{"2150":1}}],["virtually",{"2":{"2550":1}}],["virtual",{"0":{"1634":1},"2":{"1284":1,"1533":1,"1630":1,"1633":3,"1634":3,"1640":1,"2146":2,"2150":1,"2233":1,"2573":1}}],["virtualenv",{"2":{"367":1}}],["virtser",{"2":{"516":1}}],["vibrate",{"2":{"1577":1,"1579":1}}],["vibrator",{"2":{"1577":1}}],["vibrations",{"2":{"1576":1}}],["vibration",{"2":{"1576":1}}],["vim",{"2":{"1499":1,"1678":1,"1932":2}}],["violin",{"2":{"1398":2,"1399":3,"1403":1}}],["victim",{"2":{"562":1}}],["vice",{"2":{"194":1,"1335":1,"1553":1,"1933":2}}],["viewport",{"2":{"2576":2,"2577":7}}],["viewpoint",{"2":{"2418":1}}],["viewing",{"2":{"2513":1}}],["viewed",{"2":{"2367":1}}],["views",{"2":{"306":1,"2122":1}}],["view",{"0":{"2319":1},"2":{"273":1,"291":1,"520":1,"521":1,"627":1,"628":1,"2319":1,"2408":1,"2421":1,"2469":1,"2498":1,"2508":1,"2513":2,"2639":1}}],["viendi",{"2":{"211":1}}],["viper",{"2":{"211":1}}],["viktus",{"2":{"134":1,"159":3,"160":1,"211":3}}],["visit",{"2":{"371":1,"2262":1,"2436":1,"2439":1,"2513":1}}],["visible",{"2":{"198":1,"317":1,"1219":1,"1591":2}}],["vision",{"2":{"114":1,"561":1}}],["visualize",{"2":{"2407":1}}],["visualizer",{"2":{"133":1,"134":1}}],["visual",{"0":{"2503":1,"2513":1},"2":{"132":1,"2503":1,"2506":1,"2513":1,"2616":2}}],["vitoni",{"2":{"149":1}}],["vitamins",{"2":{"114":1}}],["viterbi",{"2":{"45":1}}],["vintage",{"2":{"1276":1}}],["vinta",{"2":{"102":2,"217":2}}],["videos",{"2":{"2750":2}}],["video",{"2":{"2036":1,"2041":1,"2281":1,"2427":1,"2750":1,"2753":1}}],["videogames",{"2":{"1339":1}}],["vid>",{"2":{"375":1}}],["vid",{"0":{"1242":1},"1":{"1243":1},"2":{"70":1,"111":1,"169":1,"184":1,"249":2,"266":1,"375":1,"502":1,"628":1,"629":1,"1242":1,"1278":1,"2299":1,"2556":3,"2566":1,"2699":1}}],["vial",{"2":{"2566":2}}],["via2json",{"0":{"388":1},"2":{"388":2}}],["via",{"0":{"35":1,"265":2,"275":2},"1":{"36":1},"2":{"35":1,"92":1,"114":7,"134":6,"149":2,"154":1,"160":1,"176":6,"191":2,"194":1,"199":5,"211":7,"218":1,"222":5,"234":1,"249":3,"265":8,"266":4,"268":4,"275":5,"277":8,"388":3,"606":1,"621":1,"661":1,"683":1,"684":1,"685":1,"694":1,"701":1,"1124":1,"1127":1,"1130":1,"1270":3,"1317":2,"1326":1,"1331":1,"1359":1,"1492":2,"1496":1,"1916":1,"2064":1,"2152":1,"2235":1,"2238":1,"2240":2,"2241":2,"2242":2,"2245":1,"2247":1,"2249":1,"2263":1,"2277":1,"2311":1,"2549":1,"2565":3,"2566":7,"2749":1}}],["vect",{"2":{"1905":2,"1907":2}}],["vector",{"2":{"191":1,"211":1}}],["velu",{"2":{"1793":1,"2371":1}}],["veld",{"2":{"1793":1,"2371":1}}],["velocikey",{"0":{"2062":1},"1":{"2063":1,"2064":1},"2":{"236":1,"2062":1,"2063":5,"2064":2,"2749":1}}],["velocity",{"2":{"63":1,"1787":1,"1793":26,"1794":1,"1802":1,"2371":26}}],["vega",{"2":{"211":1}}],["ventilation",{"2":{"2266":1}}],["venus",{"2":{"114":1}}],["venv",{"2":{"114":1}}],["vendors",{"2":{"2566":4}}],["vendor",{"0":{"682":1},"1":{"683":1},"2":{"37":1,"43":1,"70":1,"86":1,"149":13,"160":2,"169":1,"184":1,"191":1,"199":1,"211":1,"236":1,"266":1,"277":1,"502":1,"629":1,"681":1,"1127":2,"1130":2,"1218":1,"1221":1,"1242":1,"1254":1,"1317":2,"1908":1,"1921":2,"1923":2,"2259":1,"2344":1,"2565":3,"2566":4,"2683":2,"2692":1,"2697":1,"2699":1,"2700":2}}],["ve",{"2":{"83":1,"89":1,"105":2,"112":1,"158":1,"172":1,"243":1,"273":1,"314":1,"462":1,"550":1,"606":1,"684":1,"703":1,"1177":1,"1198":1,"1332":1,"1337":1,"1344":1,"1359":1,"1361":4,"1385":1,"1386":1,"1912":1,"2255":1,"2275":1,"2279":1,"2292":2,"2419":1,"2447":1,"2449":1,"2450":1,"2458":1,"2472":1,"2474":1,"2480":1,"2510":1,"2513":1,"2568":1,"2577":2,"2601":1,"2616":1,"2706":1,"2712":1}}],["vertically",{"0":{"2620":1},"2":{"1857":1,"2273":1,"2617":1,"2620":2}}],["vertical",{"2":{"1807":1,"1836":1,"1844":1,"1845":1,"1855":1,"2577":1,"2620":1,"2686":1,"2688":1,"2695":1}}],["vertex",{"2":{"211":1}}],["verbose=true",{"2":{"2262":1}}],["verbose",{"2":{"540":1,"2262":5,"2575":2}}],["verbosity",{"2":{"211":1}}],["verification",{"2":{"2335":1,"2353":1}}],["verified",{"2":{"484":1,"1811":2,"2347":1,"2353":1,"2567":1}}],["verifying",{"2":{"2347":2}}],["verify",{"2":{"199":1,"628":1,"2479":1,"2502":1,"2566":1,"2757":2}}],["ver20",{"2":{"358":5}}],["vero",{"2":{"211":1}}],["versed",{"2":{"552":1}}],["versatile",{"2":{"2578":1}}],["versa",{"2":{"194":1,"1335":1,"1553":1,"1933":2}}],["versioned",{"2":{"182":1}}],["versioning",{"2":{"182":1,"2636":1}}],["version=yes",{"2":{"65":1}}],["versions",{"2":{"22":1,"35":1,"49":2,"182":2,"189":1,"191":1,"317":3,"357":1,"537":1,"1239":1,"1300":1,"1319":1,"1332":1,"1383":1,"1555":1,"1558":1,"1654":1,"2036":1,"2182":1,"2183":1,"2254":1,"2262":1,"2328":1,"2342":1}}],["version",{"0":{"1904":1,"1905":1,"1906":1,"1907":1,"1908":1},"1":{"1905":1,"1906":1,"1907":1,"1908":1},"2":{"10":1,"36":2,"65":1,"69":1,"70":1,"114":2,"134":1,"149":3,"160":1,"169":1,"173":1,"176":1,"182":1,"184":1,"191":1,"199":2,"211":1,"236":1,"317":1,"324":3,"330":1,"335":1,"340":1,"347":3,"351":20,"357":1,"358":1,"360":2,"502":1,"529":1,"537":1,"1143":1,"1380":2,"1383":4,"1385":1,"1411":1,"1412":1,"1431":1,"1498":1,"1529":1,"1530":2,"1904":1,"1907":1,"2244":1,"2277":2,"2306":2,"2310":1,"2353":1,"2404":1,"2477":1,"2497":1,"2513":1,"2524":1,"2525":1,"2526":1,"2556":1,"2566":1,"2570":2,"2587":1,"2594":1,"2699":2,"2739":1}}],["very",{"2":{"182":1,"307":1,"325":1,"483":1,"557":1,"569":1,"574":1,"575":1,"581":1,"621":1,"659":2,"1223":1,"1242":1,"1245":1,"1331":1,"1375":1,"1405":1,"1416":1,"1576":1,"1577":1,"1676":1,"1684":2,"1806":1,"1816":1,"1825":1,"1850":1,"1858":1,"2118":1,"2134":1,"2140":1,"2250":1,"2270":2,"2273":2,"2304":1,"2319":1,"2398":1,"2418":1,"2431":1,"2450":1,"2464":1,"2497":1,"2523":1,"2655":1,"2664":1,"2714":1,"2742":1,"2753":1}}],["ver",{"2":{"70":2,"111":1,"169":1,"184":1,"191":1,"502":1}}],["ver19",{"2":{"10":1}}],["v",{"0":{"21":1,"235":1,"494":1,"1743":1,"1745":1,"2012":1,"2014":1},"1":{"495":1,"1744":1,"1746":1,"2015":1},"2":{"21":2,"49":2,"50":3,"130":2,"134":2,"143":2,"153":1,"176":1,"236":4,"249":1,"266":1,"292":1,"313":1,"324":1,"433":1,"487":1,"530":2,"734":1,"737":1,"760":1,"763":1,"792":1,"795":1,"822":1,"825":1,"857":1,"860":1,"891":1,"894":1,"925":1,"928":1,"959":1,"962":1,"993":1,"996":1,"1027":1,"1030":1,"1061":1,"1064":1,"1095":1,"1098":1,"1148":1,"1151":1,"1530":1,"1576":1,"1577":3,"1733":1,"1744":1,"1746":1,"1788":1,"1824":1,"1855":2,"1857":2,"1858":1,"1859":9,"1861":1,"1862":1,"1879":1,"1911":1,"1912":1,"1914":1,"1959":2,"2013":1,"2015":1,"2051":8,"2054":4,"2146":1,"2169":1,"2183":1,"2235":1,"2236":1,"2254":2,"2262":3,"2346":1,"2355":3,"2386":3,"2401":1,"2407":1,"2414":4,"2415":2,"2475":3,"2479":2,"2556":1,"2575":2,"2597":1,"2694":1,"2695":1}}],["6=128",{"2":{"1822":1}}],["69",{"2":{"1578":1}}],["61",{"2":{"1578":1,"2611":1}}],["67",{"2":{"1274":1,"1578":1}}],["6739",{"2":{"74":1}}],["63",{"2":{"1091":1,"1578":1,"1792":1,"1843":1,"2040":1,"2611":2}}],["6pad",{"2":{"266":1}}],["6kro",{"2":{"236":1,"515":1,"1278":1,"1288":2,"2659":1}}],["6x",{"2":{"1576":1,"1577":1}}],["6x13",{"2":{"249":1}}],["6x7",{"2":{"222":2}}],["6x6",{"2":{"217":1,"222":1}}],["68",{"2":{"211":1,"222":1,"1578":1,"1836":1}}],["6ball",{"2":{"143":2}}],["66",{"2":{"122":2,"149":1,"211":1,"313":1,"370":4,"375":2,"395":1,"396":1,"414":3,"415":2,"424":1,"425":1,"426":2,"1019":1,"1578":1,"1945":1,"2293":2,"2294":1,"2295":5,"2404":1,"2421":3,"2422":1,"2469":7,"2671":2,"2672":1}}],["64x48",{"2":{"1820":2}}],["64x32",{"2":{"1820":2}}],["64x128",{"2":{"1811":2,"1820":3}}],["64kb",{"2":{"690":2}}],["64kb+",{"2":{"486":1}}],["64u",{"2":{"659":2}}],["64",{"2":{"158":1,"685":1,"686":1,"694":1,"790":1,"848":1,"1143":1,"1227":1,"1440":1,"1451":1,"1578":1,"1634":1,"1725":5,"1792":1,"1793":1,"1821":1,"1945":2,"1946":5,"2040":1,"2255":1,"2290":1,"2294":1,"2335":1,"2351":2,"2353":1,"2371":1,"2460":2,"2461":1,"2688":1,"2695":1}}],["6490",{"2":{"114":1}}],["6480",{"2":{"25":1}}],["6",{"0":{"81":1,"542":1,"2171":1},"2":{"23":1,"81":1,"93":1,"114":1,"131":1,"134":1,"176":1,"188":1,"191":1,"211":1,"313":1,"491":1,"502":1,"506":2,"511":2,"515":2,"530":2,"633":1,"635":4,"639":2,"641":1,"657":1,"658":1,"707":1,"729":1,"955":1,"989":1,"1405":1,"1406":1,"1440":1,"1457":1,"1515":2,"1530":2,"1547":3,"1576":1,"1577":1,"1578":1,"1594":1,"1630":1,"1632":1,"1635":3,"1793":7,"1801":2,"1817":1,"1821":2,"1839":1,"1883":3,"1921":1,"1945":1,"2036":1,"2042":3,"2044":2,"2058":1,"2060":1,"2130":1,"2131":2,"2141":1,"2148":2,"2153":1,"2155":4,"2263":1,"2352":1,"2355":9,"2365":3,"2371":7,"2372":2,"2380":3,"2386":2,"2391":3,"2394":2,"2407":1,"2575":1,"2588":1,"2589":1,"2596":2,"2615":2,"2624":1,"2657":1,"2658":1,"2677":2,"2682":3}}],["62key",{"2":{"226":1}}],["6259",{"2":{"49":1}}],["6260",{"2":{"30":1}}],["62",{"2":{"21":1,"1578":1,"1836":1,"2611":1}}],["600ºf",{"2":{"2272":1}}],["600",{"2":{"1846":1}}],["60000ms",{"2":{"1817":1,"2141":1}}],["60000",{"2":{"1817":1,"2070":1,"2141":1,"2696":1}}],["6000",{"2":{"606":1}}],["60hz",{"2":{"1803":1}}],["60fps",{"2":{"1730":1,"1807":1,"1954":1}}],["60f",{"2":{"1406":1}}],["606",{"2":{"1279":2}}],["6068",{"2":{"131":1,"134":1}}],["60",{"0":{"1243":1},"2":{"18":2,"143":2,"211":6,"217":2,"222":1,"236":1,"257":1,"258":1,"259":2,"260":1,"266":1,"370":1,"385":1,"507":1,"985":1,"1290":1,"1346":3,"1347":3,"1563":1,"1578":17,"1803":1,"1807":3,"1836":1,"1945":1,"2040":1,"2295":1,"2302":1,"2322":1,"2553":1,"2619":1,"2686":6}}],["650",{"2":{"1868":1}}],["65536",{"2":{"690":1,"2353":1}}],["65keys",{"2":{"241":2}}],["6580",{"2":{"93":1}}],["65",{"2":{"11":1,"67":2,"176":1,"211":6,"236":1,"1406":1,"1578":1,"1836":1,"2094":1,"2270":1,"2575":1}}],["03d",{"2":{"2705":1,"2710":1}}],["03h",{"2":{"2544":2}}],["03",{"2":{"2353":17}}],["03eb",{"2":{"629":7,"2343":4,"2450":1,"2453":2}}],["064",{"2":{"1836":2}}],["0=2",{"2":{"1822":1}}],["0ms",{"2":{"1817":1}}],["0f",{"2":{"1403":2,"1406":5}}],["05f",{"2":{"1406":1}}],["05",{"2":{"853":1,"887":1,"921":1,"1491":1}}],["05dc",{"2":{"629":1,"2346":2}}],["05df",{"2":{"629":1,"2345":1}}],["0k5",{"2":{"789":2,"854":2,"888":2,"922":2,"956":2,"990":2,"1024":2,"1058":2,"1092":2}}],["0u",{"2":{"705":2}}],["0b11",{"2":{"2311":3}}],["0b10100000",{"2":{"684":2}}],["0b00",{"2":{"2311":1}}],["0b01",{"2":{"2311":3}}],["0b01010000",{"2":{"684":1}}],["0b",{"2":{"2311":1}}],["0v",{"2":{"630":1,"638":1,"639":1}}],["04",{"2":{"2492":1,"2503":1}}],["04x",{"2":{"1252":1}}],["0483",{"2":{"629":1,"2240":1}}],["0478",{"2":{"629":1}}],["005",{"2":{"2710":1}}],["00s",{"2":{"2347":1}}],["00100000",{"2":{"2148":2}}],["00101000",{"2":{"2147":1,"2148":1}}],["00hwpkts",{"2":{"2147":1}}],["0001",{"2":{"2477":1}}],["00010000",{"2":{"2147":1}}],["00000101",{"2":{"2148":1}}],["00000001ff",{"2":{"2349":1}}],["00000001",{"2":{"2148":1}}],["00000000",{"2":{"2091":1,"2148":7}}],["00000010",{"2":{"2148":1}}],["00001100",{"2":{"2148":1}}],["0000",{"2":{"2093":1,"2450":1,"2453":2}}],["0003",{"2":{"629":1,"2242":1}}],["000e",{"2":{"629":1,"2344":1}}],["000d",{"2":{"629":1,"2344":1}}],["000c",{"2":{"629":1,"2344":1}}],["003",{"2":{"629":1}}],["0037",{"2":{"629":2,"2344":1}}],["0036",{"2":{"629":2,"2344":1}}],["00am",{"2":{"350":9}}],["00",{"2":{"317":5,"463":2,"464":2,"465":4,"1451":1,"1452":1,"2095":1}}],["0ab",{"2":{"266":1}}],["08t12",{"2":{"2353":17}}],["08752684f7f6",{"2":{"314":1,"315":1}}],["08",{"2":{"265":1}}],["02",{"2":{"249":1}}],["01101010",{"2":{"2148":1}}],["01110000",{"2":{"2147":1}}],["01ue",{"2":{"2147":1}}],["0189",{"2":{"629":1}}],["0106",{"2":{"629":1}}],["0101",{"2":{"629":1,"2344":1}}],["01000010",{"2":{"1300":1,"2147":2}}],["0100",{"2":{"253":1}}],["0131",{"2":{"226":1}}],["0130",{"2":{"226":1}}],["01",{"2":{"211":2,"1451":2,"1452":1}}],["0+atmel3",{"2":{"114":1}}],["07",{"2":{"114":2}}],["0xxx",{"2":{"2348":3}}],["0xe7",{"2":{"2321":1}}],["0xe8",{"2":{"1838":1}}],["0x464751",{"2":{"2594":1}}],["0x464651",{"2":{"2587":1}}],["0x4335",{"2":{"1923":1}}],["0x41",{"2":{"1923":2}}],["0x400",{"2":{"2353":1}}],["0x40b",{"2":{"2181":1}}],["0x40",{"2":{"786":1,"790":1}}],["0xd7",{"2":{"2346":1}}],["0xd8",{"2":{"2344":8}}],["0xdb",{"2":{"2343":1}}],["0xd9",{"2":{"2343":3}}],["0xd4",{"2":{"1814":1,"2138":1}}],["0xd3",{"2":{"1814":1,"2138":1}}],["0xd2",{"2":{"1814":1,"2138":1}}],["0xd1",{"2":{"1814":1,"2138":1}}],["0xd0",{"2":{"1814":1,"2138":1,"2344":1,"2345":1,"2346":1}}],["0xb4",{"2":{"1814":1,"2138":1}}],["0xb3",{"2":{"1814":1,"2138":1}}],["0xb2",{"2":{"1814":1,"2138":1,"2545":1}}],["0xb1",{"2":{"1814":1,"2138":1}}],["0xb0",{"2":{"1220":1,"1814":1,"2138":1,"2700":1}}],["0xaf",{"2":{"1814":1,"2138":1}}],["0xae",{"2":{"1814":1,"2138":1}}],["0xad",{"2":{"1814":1,"2138":1}}],["0xac",{"2":{"1814":1,"2138":1}}],["0xab",{"2":{"1814":1,"2138":1}}],["0xaa",{"2":{"1814":1,"2138":1}}],["0xa9",{"2":{"1814":1,"2138":1}}],["0xa8",{"2":{"1814":1,"2138":1}}],["0xa7",{"2":{"1814":1,"2138":1}}],["0xa6",{"2":{"1814":1,"2138":1}}],["0xa5",{"2":{"1814":1,"2138":1,"2385":1,"2395":1}}],["0xa4f9",{"2":{"1921":1}}],["0xa4",{"2":{"1814":1,"2138":1}}],["0xa3",{"2":{"1814":1,"2138":1}}],["0xa2",{"2":{"1814":1,"2138":1}}],["0xa1",{"2":{"1814":1,"2138":1}}],["0xa0",{"2":{"1814":1,"2138":1}}],["0x9b",{"2":{"2343":1}}],["0x99",{"2":{"2343":3}}],["0x94",{"2":{"1814":1,"2138":1}}],["0x93",{"2":{"1814":1,"2138":1}}],["0x92",{"2":{"1814":1,"2138":1}}],["0x91",{"2":{"1814":1,"2138":1}}],["0x90",{"2":{"1814":1,"2138":1}}],["0x8f",{"2":{"1814":1,"2138":1}}],["0x8e",{"2":{"1814":1,"2138":1}}],["0x8d",{"2":{"1814":1,"2138":1}}],["0x8c",{"2":{"1814":1,"2138":1}}],["0x8b",{"2":{"1814":1,"2138":1}}],["0x8a",{"2":{"1814":1,"2138":1}}],["0x89",{"2":{"1814":1,"2138":1}}],["0x88",{"2":{"1814":1,"2138":1}}],["0x87",{"2":{"1814":1,"2138":1}}],["0x86",{"2":{"1814":1,"2138":1}}],["0x85",{"2":{"1814":1,"2138":1}}],["0x84",{"2":{"1814":1,"2138":1}}],["0x83",{"2":{"1814":1,"2138":1}}],["0x82",{"2":{"1814":1,"2138":1}}],["0x81",{"2":{"1814":1,"2138":1}}],["0x8000000",{"2":{"2240":1,"2244":1,"2353":1}}],["0x80",{"2":{"1814":1,"1817":1,"2138":1}}],["0x",{"2":{"1252":1}}],["0xf8",{"2":{"2344":1}}],["0xfb",{"2":{"2344":6}}],["0xfe",{"2":{"2344":2}}],["0xfeed",{"2":{"1242":1,"2556":2}}],["0xf3",{"2":{"2343":4}}],["0xffff",{"2":{"2571":2,"2640":1}}],["0xff60",{"2":{"1920":2,"1923":1}}],["0xff",{"2":{"850":1,"855":1,"885":1,"889":1,"919":1,"923":1,"953":1,"957":1,"987":1,"991":1,"1021":1,"1025":1,"1055":1,"1059":1,"1089":1,"1093":1,"1336":1,"1343":6,"1403":1,"1404":2,"1430":5,"1446":3,"1726":1,"1729":1,"1910":1,"1947":1,"1952":4,"2228":4,"2344":9,"2411":1,"2640":1}}],["0x6fff",{"2":{"2453":1}}],["0x6f",{"2":{"1090":1}}],["0x6e",{"2":{"1090":1}}],["0x6d",{"2":{"1090":1}}],["0x6c",{"2":{"1090":1}}],["0x6b",{"2":{"1090":1}}],["0x6a",{"2":{"1090":1}}],["0x69",{"2":{"1090":1}}],["0x68",{"2":{"1090":1}}],["0x67",{"2":{"1090":1}}],["0x66",{"2":{"1090":1}}],["0x65",{"2":{"1090":1}}],["0x64",{"2":{"1090":1}}],["0x63",{"2":{"1090":1}}],["0x62",{"2":{"1090":1}}],["0x61",{"2":{"1090":1,"1920":2,"1923":1}}],["0x60000002",{"2":{"2402":1}}],["0x60",{"2":{"1090":1}}],["0x7e",{"2":{"2575":3,"2587":1,"2588":1}}],["0x7000",{"2":{"2453":2}}],["0x7fff",{"2":{"2184":1,"2263":1,"2384":1}}],["0x7f",{"2":{"1629":1}}],["0x7a",{"2":{"1343":1}}],["0x77",{"2":{"819":1,"1146":1}}],["0x76",{"2":{"819":1,"1146":1}}],["0x75",{"2":{"819":1,"1146":1}}],["0x74",{"2":{"819":1,"1146":1}}],["0x3",{"2":{"1557":1}}],["0x33",{"2":{"954":1,"988":1}}],["0x32",{"2":{"954":1,"988":1}}],["0x31",{"2":{"954":1,"987":1,"988":1,"1055":1}}],["0x30c4",{"2":{"2181":1}}],["0x30",{"2":{"954":1,"988":1}}],["0x37",{"2":{"787":1}}],["0x36",{"2":{"787":1}}],["0x35",{"2":{"787":1}}],["0x34",{"2":{"787":1}}],["0x3f80",{"2":{"2453":2}}],["0x3f7f",{"2":{"2453":1}}],["0x3f",{"2":{"758":1,"1627":1}}],["0x3e",{"2":{"758":1}}],["0x3d",{"2":{"758":1}}],["0x3c",{"2":{"758":1,"1818":1}}],["0x5f",{"2":{"851":1,"886":1,"920":1}}],["0x5e",{"2":{"851":1,"886":1,"2343":4}}],["0x5d",{"2":{"851":1,"886":1}}],["0x5c",{"2":{"851":1,"886":1}}],["0x5b",{"2":{"851":1,"886":1}}],["0x5a",{"2":{"851":1,"886":1,"920":1}}],["0x59",{"2":{"851":1,"886":1}}],["0x58",{"2":{"851":1,"886":1}}],["0x57",{"2":{"851":1,"886":1}}],["0x56f0",{"2":{"1446":1}}],["0x56",{"2":{"851":1,"886":1}}],["0x5678",{"2":{"169":2,"184":2,"502":1}}],["0x55",{"2":{"851":1,"886":1,"920":1}}],["0x53",{"2":{"851":1,"886":1}}],["0x52",{"2":{"851":1,"886":1}}],["0x51",{"2":{"851":1,"886":1}}],["0x50",{"2":{"851":1,"886":1,"920":1}}],["0x54",{"2":{"732":1,"851":1,"886":1}}],["0x2f",{"2":{"1022":1,"1056":1}}],["0x2e2e",{"2":{"2181":1}}],["0x2e",{"2":{"1022":1,"1056":1}}],["0x2d",{"2":{"1022":1,"1056":1}}],["0x2c",{"2":{"1022":1,"1056":1}}],["0x2b",{"2":{"1022":1,"1056":1}}],["0x2a",{"2":{"1022":1,"1056":1,"1842":1}}],["0x29",{"2":{"1022":1,"1056":1}}],["0x28",{"2":{"1022":1,"1056":1}}],["0x27",{"2":{"1022":1,"1056":1}}],["0x26",{"2":{"1022":1,"1056":1}}],["0x25",{"2":{"1022":1,"1056":1}}],["0x24",{"2":{"1022":1,"1056":1}}],["0x23b0",{"2":{"2699":1}}],["0x23",{"2":{"1022":1,"1056":1}}],["0x2330",{"2":{"111":1}}],["0x22",{"2":{"1022":1,"1056":1}}],["0x21",{"2":{"1022":1,"1056":1}}],["0x203d",{"2":{"2181":1}}],["0x20",{"2":{"1022":1,"1056":1,"2575":3,"2587":1,"2588":1}}],["0x2000",{"2":{"317":1}}],["0x100",{"2":{"2640":1}}],["0x10ffff",{"2":{"2263":2}}],["0x1e9587",{"2":{"2347":1}}],["0x1eff",{"2":{"317":1}}],["0x1d",{"2":{"2323":1}}],["0x1c04",{"2":{"2353":1}}],["0x1c",{"2":{"2323":1}}],["0x1f",{"2":{"2346":1}}],["0x1f1e6",{"2":{"2182":1}}],["0x1f1fa",{"2":{"2182":1}}],["0x1f923",{"2":{"2182":1}}],["0x1f4a9",{"2":{"2182":1}}],["0x1f40d",{"2":{"2181":1}}],["0x1fff",{"2":{"317":1}}],["0x15",{"2":{"1594":3}}],["0x18",{"2":{"701":2}}],["0x1234",{"2":{"169":2,"184":2,"502":1}}],["0x03",{"2":{"2590":2,"2596":1,"2597":2}}],["0x03a8",{"2":{"1921":1}}],["0x07",{"2":{"2385":1,"2596":1}}],["0x06",{"2":{"2323":1,"2596":1}}],["0x05",{"2":{"2323":1,"2596":1,"2599":2}}],["0x0ca0",{"2":{"2182":2}}],["0x0f",{"2":{"1910":1,"2345":1}}],["0x09",{"2":{"1881":1}}],["0x0b",{"2":{"1881":1}}],["0x02",{"2":{"1849":1,"1947":1,"2589":2,"2596":3}}],["0x0a",{"2":{"1847":1}}],["0x08001c00",{"2":{"2353":1}}],["0x08001800",{"2":{"2353":1}}],["0x08001400",{"2":{"2353":1}}],["0x08001000",{"2":{"2353":1}}],["0x08000c00",{"2":{"2353":1}}],["0x08000800",{"2":{"2353":1}}],["0x08000400",{"2":{"2353":1}}],["0x08000000",{"2":{"2353":2}}],["0x08",{"2":{"1594":1,"1726":1,"1947":1}}],["0x0410",{"2":{"2353":2}}],["0x04",{"2":{"1594":3,"1726":1,"1947":1,"2323":1,"2324":1,"2346":1,"2591":2,"2596":1,"2598":2}}],["0x0e",{"2":{"1594":1}}],["0x01",{"2":{"1021":1,"1089":1,"1726":1,"1947":1,"1959":2,"2587":1,"2588":2,"2594":1,"2595":2,"2596":2}}],["0x0100",{"2":{"317":1,"502":1}}],["0x0",{"2":{"660":1,"2453":2}}],["0x005f",{"2":{"2182":1}}],["0x00c6",{"2":{"2182":1}}],["0x00e6",{"2":{"2182":1}}],["0x00",{"2":{"1343":8,"1594":1,"1627":1,"1629":1,"1726":1,"1814":1,"1923":1,"1947":1,"1952":1,"2138":1,"2321":1,"2587":2,"2594":2,"2596":2,"2640":1}}],["0x00ff",{"2":{"317":1,"2571":2}}],["0x0008e534",{"2":{"2353":1}}],["0x0002",{"2":{"1923":1}}],["0x00000002",{"2":{"2402":1}}],["0x00000001",{"2":{"2402":1}}],["0x0000",{"2":{"317":1,"2353":1,"2556":1,"2571":2}}],["0x0001",{"2":{"111":1,"169":1,"184":1}}],["0xcf",{"2":{"1814":1,"2138":1}}],["0xce",{"2":{"1814":1,"2138":1}}],["0xcd",{"2":{"1814":1,"2138":1}}],["0xcc",{"2":{"1814":1,"2138":1}}],["0xca",{"2":{"1814":1,"2138":1}}],["0xc9",{"2":{"1814":1,"2138":1}}],["0xc8",{"2":{"1814":1,"2138":1}}],["0xc7",{"2":{"1814":1,"2138":1}}],["0xc6",{"2":{"1814":1,"2138":1}}],["0xc5",{"2":{"1814":1,"2138":1}}],["0xc4",{"2":{"1814":1,"2138":1}}],["0xc3",{"2":{"1814":1,"2138":1}}],["0xc2",{"2":{"1814":1,"2138":1}}],["0xc1",{"2":{"1814":1,"2138":1}}],["0xc1ed",{"2":{"111":1,"2699":1}}],["0xc0",{"2":{"1814":1,"2138":1,"2346":1}}],["0xcb",{"2":{"114":1,"266":1,"1315":1,"1322":1,"1814":1,"2138":1,"2545":1,"2712":1}}],["0$",{"2":{"70":3}}],["0",{"0":{"56":1,"2276":1,"2333":1},"1":{"2334":1},"2":{"11":1,"14":1,"38":2,"56":1,"90":2,"102":1,"105":4,"114":5,"120":2,"122":2,"152":1,"168":1,"169":2,"176":1,"184":2,"191":2,"195":1,"199":2,"222":1,"231":4,"236":1,"238":2,"240":2,"247":1,"249":2,"266":5,"277":2,"292":1,"313":1,"317":8,"351":40,"370":1,"396":1,"411":1,"465":2,"487":2,"502":1,"505":1,"507":2,"511":1,"530":3,"534":1,"597":3,"598":1,"624":3,"629":1,"630":1,"633":1,"635":4,"636":2,"639":2,"644":1,"653":1,"659":1,"660":1,"666":1,"667":1,"669":2,"672":1,"689":1,"690":1,"726":2,"731":1,"757":2,"760":3,"763":1,"786":2,"789":4,"790":1,"792":3,"795":1,"818":2,"822":3,"825":1,"850":5,"854":6,"855":1,"857":3,"860":1,"885":4,"888":6,"889":1,"891":3,"894":1,"919":4,"922":6,"923":1,"925":3,"928":1,"953":2,"956":4,"957":1,"959":3,"962":1,"987":2,"990":4,"991":1,"993":3,"996":1,"1021":3,"1024":4,"1025":1,"1027":3,"1030":1,"1055":3,"1058":4,"1059":1,"1061":3,"1064":1,"1089":2,"1092":4,"1093":1,"1095":3,"1098":1,"1136":1,"1145":2,"1148":3,"1151":1,"1181":1,"1214":1,"1215":1,"1217":3,"1224":1,"1234":1,"1252":23,"1287":2,"1295":1,"1319":8,"1325":4,"1328":1,"1332":1,"1335":2,"1336":2,"1338":2,"1344":1,"1354":1,"1355":1,"1359":2,"1368":1,"1375":1,"1399":1,"1405":1,"1406":1,"1427":2,"1440":23,"1446":4,"1448":1,"1451":4,"1452":1,"1457":1,"1458":1,"1480":1,"1482":1,"1495":3,"1499":1,"1504":1,"1506":1,"1518":2,"1524":2,"1530":3,"1533":3,"1534":2,"1546":2,"1547":1,"1548":1,"1549":3,"1556":1,"1559":1,"1560":2,"1562":1,"1570":1,"1573":1,"1576":3,"1577":3,"1587":2,"1594":1,"1604":2,"1612":1,"1614":1,"1632":2,"1633":2,"1634":6,"1635":3,"1643":1,"1645":1,"1648":1,"1670":1,"1715":1,"1717":2,"1718":1,"1725":5,"1728":1,"1730":1,"1744":1,"1762":1,"1768":1,"1770":1,"1772":1,"1792":2,"1793":29,"1794":2,"1801":2,"1803":1,"1805":4,"1815":5,"1816":2,"1817":9,"1820":2,"1821":5,"1822":5,"1836":6,"1839":1,"1849":3,"1850":1,"1855":2,"1858":2,"1859":6,"1861":2,"1862":2,"1868":2,"1887":1,"1889":1,"1891":1,"1893":1,"1895":1,"1905":4,"1907":10,"1912":3,"1923":5,"1938":1,"1940":2,"1941":2,"1946":5,"1949":1,"1954":2,"1958":3,"1959":4,"1971":1,"1989":1,"1995":1,"2001":1,"2007":1,"2009":1,"2011":1,"2013":3,"2015":3,"2035":2,"2036":8,"2038":2,"2043":1,"2044":4,"2051":15,"2054":2,"2055":2,"2058":1,"2059":1,"2060":1,"2070":4,"2081":1,"2085":1,"2091":1,"2092":1,"2093":1,"2094":1,"2095":1,"2096":1,"2097":2,"2098":1,"2099":1,"2100":2,"2112":4,"2113":1,"2128":3,"2130":2,"2133":2,"2139":5,"2141":5,"2143":2,"2147":1,"2148":6,"2152":1,"2155":16,"2157":1,"2168":2,"2182":2,"2217":1,"2227":2,"2228":3,"2235":1,"2240":1,"2243":1,"2255":3,"2269":2,"2311":10,"2333":2,"2347":1,"2353":3,"2355":4,"2365":3,"2371":29,"2372":2,"2386":2,"2394":2,"2401":4,"2402":9,"2406":1,"2407":4,"2414":5,"2415":2,"2453":2,"2513":2,"2524":2,"2556":2,"2559":18,"2570":1,"2574":1,"2575":2,"2576":1,"2577":27,"2581":1,"2593":1,"2596":6,"2597":6,"2600":2,"2611":3,"2614":1,"2615":13,"2674":1,"2675":1,"2677":1,"2679":2,"2682":1,"2686":4,"2688":5,"2689":1,"2694":4,"2695":6,"2696":5,"2697":1,"2699":3,"2710":2,"2731":2,"2732":3,"2733":2,"2737":2,"2745":21,"2747":1,"2748":39}}],["3akeyboard",{"2":{"2566":1}}],["3aclosed+label",{"2":{"2566":1}}],["3apr+is",{"2":{"2566":1}}],["3d",{"2":{"2280":1}}],["3+0",{"2":{"1836":1}}],["3=5",{"2":{"1822":1}}],["3|128",{"2":{"1451":1}}],["34",{"2":{"1405":1,"1578":1,"1836":1}}],["333c30605e739ce9bedee5999fdaf81b",{"2":{"2353":1}}],["33s",{"2":{"2347":1}}],["3389",{"0":{"1849":1},"2":{"1849":3}}],["33",{"2":{"1405":1,"1578":1,"1836":1,"2577":6}}],["3360",{"0":{"1849":1},"2":{"118":1,"1849":3}}],["3b",{"2":{"1293":1}}],["35",{"2":{"1405":1,"1440":1,"1578":1,"1836":1,"2299":1,"2477":1}}],["3500",{"2":{"1848":1}}],["350",{"2":{"1214":1,"1682":1}}],["351",{"2":{"951":1,"1724":1}}],["384",{"2":{"2181":1}}],["38400",{"2":{"1136":1,"1201":1}}],["38",{"2":{"1405":1,"1578":1,"1725":1,"1793":1,"1836":1,"1946":1,"2371":1}}],["38u",{"2":{"705":1}}],["3k63",{"2":{"1091":1}}],["3k6",{"2":{"955":1,"989":1}}],["3key",{"2":{"143":2}}],["3v3",{"2":{"2344":2}}],["3v",{"2":{"629":2,"630":2,"1589":1,"1631":1,"2114":1,"2352":1,"2518":1,"2519":1,"2528":1,"2529":2,"2530":3}}],["3rd",{"2":{"457":1,"556":1,"2302":1}}],["39000",{"2":{"1136":1}}],["39x9",{"2":{"951":1}}],["39kbps",{"2":{"511":1,"2128":1}}],["39",{"2":{"315":2,"1405":1,"1578":1}}],["319",{"2":{"2577":3}}],["316",{"2":{"1253":4}}],["313",{"2":{"1253":1}}],["315ºc",{"2":{"2272":1}}],["315",{"2":{"1253":1}}],["314b",{"2":{"629":1}}],["31",{"2":{"231":4,"502":1,"644":2,"653":1,"1275":1,"1405":1,"1457":1,"1578":1,"1635":3,"1643":1,"1645":1,"1836":1,"1883":3,"1887":1,"1889":1,"1891":1,"1893":1,"1895":1,"2040":1,"2353":13,"2365":3,"2380":3,"2401":2,"2402":5,"2675":2,"2677":1}}],["3x",{"2":{"1576":1,"1577":1,"1842":1}}],["3x5+3",{"2":{"249":1}}],["3x5",{"2":{"217":1,"222":2,"249":1,"1496":1}}],["3x8",{"2":{"143":2}}],["3x7",{"2":{"143":2}}],["3x6",{"2":{"143":2}}],["360",{"2":{"1805":1,"2577":1,"2597":1}}],["36",{"2":{"143":2,"211":1,"755":1,"1578":1,"1724":1,"1836":1,"2269":1}}],["37",{"2":{"1405":1,"1578":1,"1725":1,"1836":1,"1946":1}}],["3731",{"2":{"236":1}}],["3733",{"2":{"134":1}}],["3741",{"2":{"236":1}}],["378",{"2":{"211":1}}],["378edd9",{"2":{"73":1}}],["3700",{"2":{"57":2}}],["320x480",{"2":{"2573":2}}],["3204",{"0":{"1846":1},"2":{"1846":2}}],["3286",{"2":{"2335":1}}],["328p",{"2":{"235":1}}],["32k",{"2":{"786":1,"788":2,"854":2,"888":2,"922":2,"953":2,"956":4,"990":2}}],["32kb",{"2":{"688":2}}],["32kb+",{"2":{"486":1}}],["32u2",{"2":{"702":1,"1176":1,"1197":1,"1466":1,"1467":1}}],["32u4rc",{"2":{"2230":1}}],["32u4",{"2":{"211":1,"487":1,"629":4,"633":1,"702":1,"1197":1,"1466":1,"1467":1,"1492":2,"2344":4}}],["32bit",{"2":{"588":1}}],["32730",{"2":{"2347":4}}],["32767",{"2":{"505":2,"1851":2}}],["3270",{"2":{"114":1,"207":8}}],["32",{"0":{"166":1},"2":{"63":1,"120":1,"231":1,"277":1,"506":1,"684":1,"685":1,"788":1,"854":2,"883":1,"888":2,"922":2,"956":2,"990":2,"1227":1,"1332":1,"1333":1,"1336":1,"1354":1,"1405":1,"1515":1,"1578":1,"1630":1,"1632":1,"1725":2,"1804":1,"1805":2,"1807":3,"1820":2,"1836":1,"1883":3,"1921":1,"1922":1,"1923":1,"1926":2,"1928":2,"1945":1,"1946":2,"1950":1,"2042":2,"2091":1,"2103":1,"2105":1,"2130":1,"2141":1,"2142":2,"2289":1,"2380":3,"2401":2,"2402":1,"2411":1,"2424":1,"2528":1,"2622":1,"2688":1,"2694":1,"2695":1}}],["3",{"0":{"81":1,"539":1,"1295":1,"2159":1,"2168":1,"2322":1,"2433":1,"2468":1},"1":{"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1},"2":{"10":1,"23":1,"69":1,"70":1,"76":1,"81":1,"93":1,"114":2,"120":2,"122":2,"131":1,"134":3,"149":1,"176":3,"188":1,"191":1,"199":1,"211":1,"217":1,"222":1,"236":1,"240":1,"251":1,"266":6,"292":1,"313":1,"337":1,"350":1,"358":5,"359":5,"364":1,"366":1,"455":1,"491":3,"502":1,"511":1,"522":1,"530":2,"534":6,"540":1,"582":1,"606":1,"624":1,"629":1,"630":2,"633":1,"635":22,"636":1,"656":2,"672":1,"694":1,"757":2,"763":1,"786":2,"795":1,"818":2,"822":1,"825":1,"850":4,"860":1,"885":2,"894":1,"919":2,"928":1,"953":2,"955":1,"962":1,"987":2,"989":1,"996":1,"1021":4,"1030":1,"1055":4,"1064":1,"1089":2,"1091":1,"1098":1,"1127":1,"1130":1,"1136":1,"1145":2,"1151":1,"1181":1,"1268":1,"1295":1,"1354":1,"1383":1,"1387":1,"1405":1,"1451":2,"1457":1,"1466":4,"1467":2,"1469":1,"1504":1,"1527":1,"1530":2,"1549":1,"1559":1,"1562":1,"1576":4,"1577":3,"1578":1,"1589":1,"1594":1,"1631":1,"1632":1,"1635":3,"1685":2,"1722":2,"1725":1,"1728":1,"1793":31,"1801":2,"1805":3,"1819":1,"1821":3,"1822":1,"1835":1,"1839":1,"1842":1,"1883":3,"1907":2,"1911":2,"1946":1,"1949":2,"2036":4,"2038":1,"2042":1,"2043":1,"2044":2,"2058":1,"2059":1,"2060":3,"2112":1,"2114":1,"2117":1,"2119":1,"2120":1,"2128":1,"2148":2,"2150":1,"2153":1,"2155":16,"2167":4,"2169":1,"2174":1,"2261":1,"2295":1,"2299":4,"2300":4,"2310":1,"2311":3,"2352":3,"2355":9,"2365":3,"2371":31,"2372":2,"2380":3,"2386":2,"2391":2,"2394":2,"2407":1,"2411":1,"2418":1,"2420":2,"2472":1,"2477":1,"2497":1,"2513":1,"2519":1,"2528":1,"2529":2,"2530":3,"2534":1,"2559":16,"2576":22,"2596":2,"2597":1,"2615":9,"2645":1,"2677":1,"2694":1,"2696":1,"2720":1,"2734":1,"2740":1,"2746":1}}],["30fps",{"2":{"2577":6}}],["30x6",{"2":{"985":1}}],["300",{"2":{"505":2,"1682":1,"1683":1,"1807":1,"1839":2,"1912":1,"2144":1,"2687":2}}],["30000",{"2":{"2574":1}}],["3000",{"2":{"266":1,"511":1,"1504":1,"1804":1,"2131":1}}],["30",{"0":{"0":1,"19":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1},"2":{"114":1,"176":1,"351":2,"502":1,"1405":1,"1578":8,"1635":3,"1803":1,"1815":1,"1836":1,"1883":3,"1949":2,"1959":1,"2040":2,"2139":1,"2353":4,"2365":3,"2380":3,"2401":1,"2402":4,"2689":2}}],["1bpp",{"2":{"2576":1,"2596":2}}],["1b4f",{"2":{"629":3,"2344":3}}],["1ca027",{"2":{"1841":1}}],["1c11",{"2":{"629":1,"2243":1}}],["1=3",{"2":{"1822":1}}],["1>",{"2":{"1677":1,"2738":1}}],["1x",{"2":{"1576":1,"1577":1,"1842":1,"2117":1,"2528":1}}],["1x4",{"2":{"211":1}}],["1st",{"2":{"1344":1}}],["1️⃣",{"2":{"656":12}}],["1p5",{"2":{"641":1}}],["1eaf",{"2":{"629":1,"2242":1}}],["1ffb",{"2":{"629":1,"2344":1}}],["1u",{"2":{"2686":2}}],["1up60rgb",{"2":{"529":1}}],["1upkeyboards",{"2":{"191":2,"211":2,"236":1,"529":1}}],["1ul",{"2":{"105":4,"1290":2,"1549":4}}],["19",{"2":{"315":2,"351":1,"1405":1,"1440":1,"1578":1,"1635":3,"1836":2,"1883":3,"2365":3,"2380":3}}],["199",{"2":{"2731":1,"2732":1}}],["19939",{"2":{"236":1}}],["19954",{"2":{"211":1}}],["19997",{"2":{"236":1}}],["19998",{"2":{"211":1}}],["19991",{"2":{"211":1}}],["19993",{"2":{"211":1}}],["19987",{"2":{"211":1}}],["19985",{"2":{"211":1}}],["19980",{"2":{"211":1}}],["19961",{"2":{"211":1}}],["19966",{"2":{"211":1}}],["19925",{"2":{"211":1}}],["19923",{"2":{"199":1}}],["19974",{"2":{"211":1}}],["19948",{"2":{"211":1}}],["19941",{"2":{"199":1}}],["19940",{"2":{"199":1}}],["19912",{"2":{"211":1}}],["19916",{"2":{"199":1}}],["19919",{"2":{"199":1}}],["19918",{"2":{"199":1}}],["19910",{"2":{"199":1}}],["19902",{"2":{"199":1}}],["19901",{"2":{"199":1}}],["19909",{"2":{"199":1}}],["19907",{"2":{"199":1}}],["198",{"2":{"1019":1,"1724":1}}],["19849",{"2":{"211":1}}],["19845",{"2":{"199":1}}],["19842",{"2":{"199":1}}],["19893",{"2":{"199":1}}],["19898",{"2":{"199":1}}],["19891",{"2":{"199":1}}],["19890",{"2":{"199":1}}],["19869",{"2":{"199":1}}],["19867",{"2":{"199":1}}],["19866",{"2":{"199":1}}],["19864",{"2":{"199":1}}],["19863",{"2":{"199":1}}],["19860",{"2":{"199":1}}],["19854",{"2":{"211":1}}],["19857",{"2":{"199":1}}],["19856",{"2":{"199":1}}],["19859",{"2":{"199":1}}],["19851",{"2":{"199":1}}],["19825",{"2":{"211":1}}],["19828",{"2":{"199":1}}],["19821",{"2":{"199":1}}],["19826",{"2":{"199":1}}],["19829",{"2":{"199":1}}],["19808",{"2":{"199":1}}],["19800",{"2":{"199":1}}],["19806",{"2":{"199":1}}],["19889",{"2":{"199":1}}],["19888",{"2":{"199":1}}],["19887",{"2":{"199":1}}],["19885",{"2":{"199":1}}],["19884",{"2":{"199":1}}],["19874",{"2":{"199":1}}],["19879",{"2":{"199":1}}],["19872",{"2":{"199":1}}],["19877",{"2":{"199":1}}],["19875",{"2":{"199":1}}],["19833",{"2":{"199":1}}],["19831",{"2":{"199":1}}],["19830",{"2":{"199":1}}],["19815",{"2":{"199":1}}],["19817",{"2":{"199":1}}],["19813",{"2":{"199":1}}],["19780",{"2":{"222":2}}],["19784",{"2":{"199":1}}],["19738",{"2":{"211":1}}],["19793",{"2":{"199":1}}],["19795",{"2":{"199":1}}],["19778",{"2":{"199":1}}],["19777",{"2":{"199":1}}],["19774",{"2":{"199":1}}],["19767",{"2":{"199":1}}],["19768",{"2":{"199":1}}],["19761",{"2":{"199":1}}],["19749",{"2":{"236":1}}],["19748",{"2":{"199":1}}],["19742",{"2":{"199":1}}],["19752",{"2":{"199":1}}],["19750",{"2":{"199":1}}],["19756",{"2":{"199":1}}],["19755",{"2":{"199":1}}],["19753",{"2":{"199":1}}],["19723",{"2":{"199":1}}],["19721",{"2":{"199":1}}],["19726",{"2":{"199":1}}],["19722",{"2":{"199":1}}],["19720",{"2":{"199":1}}],["19718",{"2":{"199":1}}],["19715",{"2":{"199":1}}],["19714",{"2":{"199":1}}],["19713",{"2":{"199":1}}],["19712",{"2":{"199":1}}],["1970",{"2":{"463":1,"464":1,"465":2}}],["19705",{"2":{"211":1}}],["19700",{"2":{"211":1}}],["19703",{"2":{"199":1}}],["19704",{"2":{"199":1}}],["19701",{"2":{"199":1}}],["19689",{"2":{"211":1}}],["19683",{"2":{"199":1}}],["1967st",{"2":{"211":1}}],["19670",{"2":{"211":1}}],["19675",{"2":{"199":1}}],["19658",{"2":{"199":1}}],["19652",{"2":{"199":1}}],["19656",{"2":{"199":1}}],["19647",{"2":{"199":1}}],["19644",{"2":{"199":1}}],["19649",{"2":{"199":1}}],["19640",{"2":{"199":1}}],["19646",{"2":{"199":1}}],["19699",{"2":{"199":1}}],["19630",{"2":{"199":1}}],["19633",{"2":{"199":1}}],["19632",{"2":{"199":1}}],["19629",{"2":{"199":1}}],["19620",{"2":{"199":1}}],["19602",{"2":{"199":1}}],["19607",{"2":{"199":1}}],["19606",{"2":{"199":1}}],["19603",{"2":{"199":2}}],["19515",{"2":{"222":1}}],["19511",{"2":{"199":1}}],["19537",{"2":{"199":1}}],["19530",{"2":{"199":1}}],["19588",{"2":{"199":1}}],["19581",{"2":{"199":1}}],["19570",{"2":{"199":1}}],["19529",{"2":{"199":1}}],["19599",{"2":{"199":1}}],["19597",{"2":{"199":1}}],["19594",{"2":{"199":1}}],["19562",{"2":{"199":1}}],["19565",{"2":{"199":1}}],["19564",{"2":{"199":1}}],["19563",{"2":{"199":1}}],["19543",{"2":{"211":1}}],["19549",{"2":{"199":1}}],["19548",{"2":{"199":1}}],["19541",{"2":{"199":1}}],["19542",{"2":{"199":1}}],["19545",{"2":{"199":1}}],["19544",{"2":{"199":1}}],["19447",{"2":{"199":1}}],["19468",{"2":{"199":1}}],["19464",{"2":{"199":1}}],["19462",{"2":{"199":1}}],["19463",{"2":{"199":1}}],["19496",{"2":{"199":1}}],["19488",{"2":{"199":1}}],["19487",{"2":{"199":1}}],["19485",{"2":{"199":1}}],["19480",{"2":{"199":1}}],["19474",{"2":{"199":1}}],["19479",{"2":{"199":1}}],["19475",{"2":{"199":1}}],["19453",{"2":{"199":1}}],["19452",{"2":{"199":1}}],["19412",{"2":{"199":1}}],["19411",{"2":{"199":1}}],["19418",{"2":{"199":1}}],["19416",{"2":{"199":1}}],["19415",{"2":{"199":1}}],["19400",{"2":{"199":1}}],["19313",{"2":{"199":1}}],["19341",{"2":{"199":1}}],["19348",{"2":{"199":1}}],["19332",{"2":{"199":1}}],["1930",{"2":{"2632":1}}],["19304",{"2":{"199":1}}],["19302",{"2":{"199":1}}],["19301",{"2":{"199":1}}],["19306",{"2":{"199":1}}],["19303",{"2":{"199":1}}],["19350",{"2":{"199":1}}],["19326",{"2":{"199":1}}],["19325",{"2":{"199":1}}],["19399",{"2":{"199":1}}],["19397",{"2":{"199":1}}],["19394",{"2":{"199":1}}],["19382",{"2":{"199":1}}],["19370",{"2":{"199":1}}],["19366",{"2":{"199":1}}],["192",{"2":{"848":1,"1143":1,"1724":2,"2290":1}}],["19280",{"2":{"249":1}}],["19269",{"2":{"199":1}}],["19267",{"2":{"199":1}}],["19262",{"2":{"199":1}}],["1920",{"2":{"1807":1}}],["19200",{"2":{"1136":1,"1201":1}}],["19201",{"2":{"199":1}}],["19203",{"2":{"199":1}}],["19248",{"2":{"199":1}}],["19243",{"2":{"199":1}}],["19275",{"2":{"199":1}}],["19271",{"2":{"199":1}}],["19277",{"2":{"199":1}}],["19273",{"2":{"199":1}}],["19229",{"2":{"199":1}}],["19226",{"2":{"199":1}}],["19225",{"2":{"199":1}}],["19224",{"2":{"199":1}}],["19216",{"2":{"199":1}}],["19214",{"2":{"199":1}}],["1919",{"2":{"1843":1}}],["19194",{"2":{"199":1}}],["191",{"2":{"1815":1,"2139":1}}],["19172",{"2":{"199":1}}],["19153",{"2":{"199":1}}],["19159",{"2":{"191":1}}],["19160",{"2":{"199":1}}],["19167",{"2":{"199":1}}],["19163",{"2":{"199":1}}],["19135",{"2":{"199":1}}],["19137",{"2":{"191":1}}],["19110",{"2":{"199":1}}],["19119",{"2":{"191":1}}],["19140",{"2":{"191":1}}],["19146",{"2":{"191":1}}],["19144",{"2":{"191":1}}],["19143",{"2":{"188":1,"191":1}}],["19107",{"2":{"191":1}}],["19121",{"2":{"191":1}}],["19120",{"2":{"191":1}}],["19124",{"2":{"191":1}}],["19122",{"2":{"191":1}}],["19049",{"2":{"199":1}}],["19096",{"2":{"191":1}}],["19094",{"2":{"191":1}}],["19053",{"2":{"199":1}}],["19059",{"2":{"191":1}}],["19058",{"2":{"191":1}}],["19056",{"2":{"191":1}}],["19052",{"2":{"191":1}}],["19089",{"2":{"191":1}}],["19086",{"2":{"191":1}}],["19080",{"2":{"191":1}}],["19077",{"2":{"199":1}}],["19075",{"2":{"199":1}}],["19072",{"2":{"191":1}}],["19079",{"2":{"191":1}}],["19031",{"2":{"199":1}}],["19038",{"2":{"191":1}}],["19034",{"2":{"190":1,"191":1}}],["19024",{"2":{"199":1}}],["19028",{"2":{"191":1}}],["19029",{"2":{"191":1}}],["19020",{"2":{"191":1}}],["19015",{"2":{"191":1}}],["19018",{"2":{"191":1}}],["19069",{"2":{"211":1}}],["19066",{"2":{"191":1}}],["19060",{"2":{"191":1}}],["19065",{"2":{"191":1}}],["19063",{"2":{"191":1}}],["19068",{"2":{"191":1}}],["19005",{"2":{"236":1}}],["19006",{"2":{"191":1}}],["19007",{"2":{"191":1}}],["19004",{"2":{"188":1,"191":1}}],["1k81",{"2":{"1091":1}}],["1k8",{"2":{"955":1,"989":1}}],["1k05",{"2":{"853":1,"887":1,"921":1}}],["1k",{"2":{"788":1,"789":4,"854":2,"888":2,"922":2,"956":2,"990":2,"1024":4,"1058":4,"1092":4,"2161":1,"2517":1}}],["1kb",{"2":{"683":1}}],["1key",{"2":{"143":2}}],["1khz",{"0":{"137":1},"2":{"137":1,"149":1}}],["1ms",{"2":{"137":1,"176":1,"211":1}}],["15ms",{"2":{"1821":1}}],["15min",{"2":{"588":1}}],["15x9",{"2":{"784":1}}],["15pad",{"2":{"266":1}}],["15",{"2":{"176":1,"351":1,"502":1,"635":4,"820":1,"857":1,"925":1,"1290":1,"1335":2,"1336":2,"1405":1,"1440":2,"1578":1,"1604":1,"1635":3,"1793":2,"1817":1,"1836":2,"1883":3,"2042":1,"2098":1,"2330":1,"2332":1,"2365":3,"2371":2,"2380":3,"2596":1}}],["15699",{"2":{"191":1}}],["15691",{"2":{"149":1}}],["15674",{"2":{"176":1}}],["15657",{"2":{"160":1}}],["15606",{"2":{"149":1}}],["15603",{"2":{"149":1}}],["15609",{"2":{"149":1}}],["15680",{"2":{"160":1}}],["15682",{"2":{"149":1}}],["15687",{"2":{"149":1}}],["15684",{"2":{"149":1}}],["15681",{"2":{"149":1}}],["15668",{"2":{"149":1}}],["15667",{"2":{"149":1}}],["15665",{"2":{"149":1}}],["15662",{"2":{"149":1}}],["15661",{"2":{"149":1}}],["15646",{"2":{"149":1}}],["15647",{"2":{"149":1}}],["15645",{"2":{"149":1}}],["15643",{"2":{"149":1}}],["15641",{"2":{"149":1}}],["15638",{"2":{"149":1}}],["15637",{"2":{"149":1}}],["15636",{"2":{"149":1}}],["15635",{"2":{"149":1}}],["15988",{"2":{"149":1}}],["15985",{"2":{"149":1}}],["15984",{"2":{"149":1}}],["15987",{"2":{"149":1}}],["15976",{"2":{"149":1}}],["15938",{"2":{"149":1}}],["15935",{"2":{"149":1}}],["15919",{"2":{"149":1}}],["15907",{"2":{"176":1}}],["15906",{"2":{"149":1}}],["15904",{"2":{"149":1}}],["15996",{"2":{"160":1}}],["15990",{"2":{"160":1}}],["15999",{"2":{"149":1}}],["15997",{"2":{"149":1}}],["15993",{"2":{"149":1}}],["15992",{"2":{"149":1}}],["15991",{"2":{"149":1}}],["15968",{"2":{"149":1}}],["15959",{"2":{"160":1}}],["15954",{"2":{"149":1}}],["15953",{"2":{"149":1}}],["15944",{"2":{"149":1}}],["15924",{"2":{"149":1}}],["15925",{"2":{"149":1}}],["15923",{"2":{"149":1}}],["15843",{"2":{"1252":1}}],["15847",{"2":{"211":1}}],["15814",{"2":{"149":1}}],["15815",{"2":{"149":1}}],["15801",{"2":{"149":1}}],["15805",{"2":{"149":1}}],["15889",{"2":{"236":1}}],["15880",{"2":{"149":1}}],["15883",{"2":{"149":1}}],["15882",{"2":{"149":1}}],["15866",{"2":{"149":1}}],["15859",{"2":{"149":1}}],["15828",{"2":{"149":1}}],["15827",{"2":{"149":1}}],["15829",{"2":{"149":1}}],["15821",{"2":{"149":1}}],["15703",{"2":{"1252":1}}],["15741",{"2":{"199":1}}],["15740",{"2":{"149":1}}],["15733",{"2":{"160":1}}],["15730",{"2":{"149":1}}],["15799",{"2":{"149":1}}],["15798",{"2":{"149":1}}],["15797",{"2":{"149":1}}],["15791",{"2":{"149":1}}],["15789",{"2":{"149":1}}],["15788",{"2":{"149":1}}],["15786",{"2":{"149":1}}],["15785",{"2":{"149":1}}],["15783",{"2":{"149":1}}],["15781",{"2":{"149":1}}],["15780",{"2":{"149":1}}],["15787",{"2":{"149":1}}],["15767",{"2":{"149":1}}],["15760",{"2":{"149":1}}],["15758",{"2":{"149":1}}],["15725",{"2":{"149":1}}],["15510",{"2":{"1252":1}}],["15519",{"2":{"149":1}}],["15505",{"2":{"1252":1}}],["15592",{"2":{"149":1}}],["15589",{"2":{"149":1}}],["15557",{"2":{"149":1}}],["15559",{"2":{"149":1}}],["15538",{"2":{"149":1}}],["15537",{"2":{"149":1}}],["15579",{"2":{"149":1}}],["15416",{"2":{"149":1}}],["15419",{"2":{"149":1}}],["15483",{"2":{"149":1}}],["15489",{"2":{"149":1}}],["15481",{"2":{"149":1}}],["15492",{"2":{"149":1}}],["15479",{"2":{"149":1}}],["15457",{"2":{"149":1}}],["15450",{"2":{"149":1}}],["15435",{"2":{"149":1}}],["15431",{"2":{"149":1}}],["15420",{"2":{"149":1}}],["15409",{"2":{"149":1}}],["15320",{"2":{"160":1}}],["15321",{"2":{"149":1}}],["15378",{"2":{"149":1}}],["15376",{"2":{"149":1}}],["15340",{"2":{"149":1}}],["15349",{"2":{"149":1}}],["15336",{"2":{"149":1}}],["15368",{"2":{"149":1}}],["15352",{"2":{"149":1}}],["15316",{"2":{"134":1}}],["15313",{"2":{"134":1}}],["15312",{"2":{"134":1}}],["15306",{"2":{"149":1}}],["15305",{"2":{"149":1}}],["15304",{"2":{"149":1}}],["15307",{"2":{"134":1}}],["15302",{"2":{"134":1}}],["15301",{"2":{"134":1}}],["15309",{"2":{"134":1}}],["15303",{"2":{"134":1}}],["15277",{"2":{"149":1}}],["15207",{"2":{"149":1}}],["15205",{"2":{"134":1}}],["15286",{"2":{"176":1}}],["15285",{"2":{"149":1}}],["15282",{"2":{"149":1}}],["15292",{"2":{"176":1}}],["15298",{"2":{"134":1}}],["15299",{"2":{"134":1}}],["15239",{"2":{"134":1}}],["15221",{"2":{"134":1}}],["15223",{"2":{"134":1}}],["15240",{"2":{"134":1}}],["15243",{"2":{"134":1}}],["15244",{"2":{"134":1}}],["15268",{"2":{"134":1}}],["15263",{"2":{"134":1}}],["15262",{"2":{"134":1}}],["15261",{"2":{"134":1}}],["15260",{"2":{"134":1}}],["15269",{"2":{"134":1}}],["15132",{"2":{"149":1}}],["15130",{"2":{"134":1}}],["15167",{"2":{"134":1}}],["15162",{"2":{"133":1,"134":1}}],["15115",{"2":{"134":1}}],["15116",{"2":{"134":1}}],["15109",{"2":{"134":1}}],["15185",{"2":{"134":1}}],["15184",{"2":{"134":1}}],["15171",{"2":{"134":1}}],["15170",{"2":{"134":1}}],["15174",{"2":{"134":1}}],["15199",{"2":{"134":1}}],["15196",{"2":{"134":1}}],["15195",{"2":{"134":1}}],["150",{"2":{"288":1,"666":2,"667":1,"1242":1,"1415":1,"1416":1,"1516":1,"1518":1,"1807":1,"1839":2}}],["15088",{"2":{"149":1}}],["15083",{"2":{"149":1}}],["15029",{"2":{"134":2}}],["15020",{"2":{"134":1}}],["15021",{"2":{"134":1}}],["15073",{"2":{"134":1}}],["15068",{"2":{"134":1}}],["15055",{"2":{"134":1}}],["15019",{"2":{"134":1}}],["15014",{"2":{"134":1}}],["15017",{"2":{"134":1}}],["15012",{"2":{"134":1}}],["15011",{"2":{"134":1}}],["15010",{"2":{"134":1}}],["15018",{"2":{"134":1}}],["15047",{"2":{"134":1}}],["15040",{"2":{"134":2}}],["15031",{"2":{"134":1}}],["15034",{"2":{"134":1}}],["15037",{"2":{"133":1,"134":1}}],["1500",{"2":{"598":2,"1406":1}}],["15006",{"2":{"149":1}}],["15004",{"2":{"134":1}}],["15003",{"2":{"134":1}}],["15002",{"2":{"134":1}}],["18x4",{"2":{"1087":1}}],["18x8",{"2":{"1053":1}}],["18x11",{"2":{"1019":1}}],["18x12",{"2":{"664":1}}],["18499",{"2":{"199":1}}],["18455",{"2":{"191":1}}],["18450",{"2":{"191":1}}],["18459",{"2":{"191":1}}],["18449",{"2":{"191":1}}],["18441",{"2":{"191":1}}],["18477",{"2":{"191":1}}],["18475",{"2":{"191":1}}],["18472",{"2":{"191":1}}],["1840",{"2":{"211":1}}],["18408",{"2":{"191":1}}],["18403",{"2":{"191":1}}],["18402",{"2":{"191":1}}],["18404",{"2":{"190":1,"191":1}}],["18463",{"2":{"199":1}}],["18467",{"2":{"191":1}}],["18464",{"2":{"191":1}}],["18431",{"2":{"191":1}}],["18432",{"2":{"191":1}}],["18439",{"2":{"191":1}}],["18437",{"2":{"191":1}}],["18438880",{"2":{"149":1}}],["18428",{"2":{"191":1}}],["18426",{"2":{"191":1}}],["18423",{"2":{"191":1}}],["18424",{"2":{"191":1}}],["18421",{"2":{"191":1}}],["18414",{"2":{"191":1}}],["18419",{"2":{"191":1}}],["18418",{"2":{"191":1}}],["18417",{"2":{"191":1}}],["18415",{"2":{"191":1}}],["18521",{"2":{"249":1}}],["18527",{"2":{"191":1}}],["18581",{"2":{"191":1}}],["18588",{"2":{"188":1,"191":1}}],["18574",{"2":{"191":1}}],["18577",{"2":{"191":1}}],["18557",{"2":{"191":1}}],["18553",{"2":{"191":1}}],["18566",{"2":{"191":1}}],["18560",{"2":{"191":1}}],["18565",{"2":{"190":1,"191":1}}],["18545",{"2":{"191":1}}],["18544",{"2":{"191":1}}],["18593",{"2":{"191":1}}],["18594",{"2":{"191":1}}],["18599",{"2":{"191":1}}],["18592",{"2":{"191":1}}],["18513",{"2":{"190":1,"191":1}}],["183874",{"2":{"2255":1}}],["183883",{"2":{"2255":3}}],["18371",{"2":{"199":1}}],["18370",{"2":{"191":1}}],["18351",{"2":{"191":1}}],["18352",{"2":{"191":1}}],["18332",{"2":{"277":1}}],["18338",{"2":{"191":1}}],["18333",{"2":{"191":1}}],["18345",{"2":{"191":1}}],["18394",{"2":{"191":1}}],["18399",{"2":{"191":1}}],["18396",{"2":{"191":1}}],["18366",{"2":{"191":1}}],["18363",{"2":{"190":1,"191":1}}],["18323",{"2":{"191":1}}],["18310",{"2":{"191":1}}],["18309",{"2":{"189":1,"191":1}}],["187",{"2":{"1725":1,"1946":1}}],["18734",{"2":{"191":1}}],["18730",{"2":{"191":1}}],["18725",{"2":{"191":1}}],["18729",{"2":{"191":2}}],["18728",{"2":{"191":1}}],["18727",{"2":{"191":1}}],["18726",{"2":{"191":2}}],["18720",{"2":{"191":1}}],["18721",{"2":{"191":1}}],["18701",{"2":{"191":1}}],["18700",{"2":{"191":1}}],["18709",{"2":{"191":1}}],["18766",{"2":{"191":1}}],["18767",{"2":{"191":1}}],["18769",{"2":{"188":1,"191":1}}],["18751",{"2":{"191":1}}],["18753",{"2":{"191":2}}],["18750",{"2":{"191":1}}],["18716",{"2":{"191":1}}],["18715",{"2":{"191":1}}],["18714",{"2":{"191":1}}],["18717",{"2":{"191":1}}],["18710",{"2":{"188":1,"191":1}}],["18775",{"2":{"191":1}}],["18774",{"2":{"190":1,"191":1}}],["18776",{"2":{"189":1,"191":1}}],["18745",{"2":{"199":1}}],["18749",{"2":{"188":1,"191":1}}],["18740",{"2":{"188":1,"191":1}}],["18789",{"2":{"191":1}}],["18781",{"2":{"191":1}}],["18787",{"2":{"188":1,"191":1}}],["18782",{"2":{"188":1,"191":1}}],["18791",{"2":{"191":1}}],["18796",{"2":{"188":1,"191":1}}],["18792",{"2":{"188":1,"191":1}}],["18249",{"2":{"191":1}}],["18244",{"2":{"191":1}}],["18205",{"2":{"191":1}}],["18299",{"2":{"191":1}}],["18298",{"2":{"191":1}}],["18297",{"2":{"191":1}}],["18292",{"2":{"191":1}}],["18290",{"2":{"188":1,"191":1}}],["18268",{"2":{"191":1}}],["18262",{"2":{"191":1}}],["18260",{"2":{"191":1}}],["18259",{"2":{"191":1}}],["18215",{"2":{"191":2}}],["18212",{"2":{"191":1}}],["18289",{"2":{"191":1}}],["18279",{"2":{"191":1}}],["18274",{"2":{"191":1}}],["18271",{"2":{"188":1,"191":1}}],["18234",{"2":{"191":1}}],["18235",{"2":{"191":1}}],["18230",{"2":{"191":1}}],["18236",{"2":{"189":1,"191":1}}],["18224",{"2":{"191":1}}],["18228",{"2":{"191":1}}],["18222",{"2":{"191":1}}],["18654",{"2":{"191":1}}],["18650",{"2":{"191":1}}],["18651",{"2":{"191":1}}],["18659",{"2":{"190":1,"191":1}}],["18617",{"2":{"191":1}}],["18613",{"2":{"191":1}}],["18618",{"2":{"191":1}}],["18615",{"2":{"191":1}}],["18692",{"2":{"191":1}}],["18693",{"2":{"191":1}}],["18690",{"2":{"191":1}}],["18687",{"2":{"191":1}}],["18689",{"2":{"191":1}}],["18683",{"2":{"188":1,"191":1}}],["18649",{"2":{"191":1}}],["18640",{"2":{"191":1}}],["18641",{"2":{"191":1}}],["18643",{"2":{"188":1,"191":1}}],["18629",{"2":{"191":1}}],["18609",{"2":{"191":1}}],["18608",{"2":{"191":1}}],["18606",{"2":{"191":1}}],["18601",{"2":{"188":1,"191":1}}],["18638",{"2":{"211":1}}],["18635",{"2":{"191":1}}],["18631",{"2":{"191":1}}],["18637",{"2":{"189":1,"191":1}}],["18634",{"2":{"188":1,"191":1}}],["18668",{"2":{"191":1}}],["18667",{"2":{"191":1}}],["18662",{"2":{"191":1}}],["18669",{"2":{"188":1,"191":1}}],["18660",{"2":{"188":1,"191":1}}],["189kbps",{"2":{"511":1,"2128":1}}],["18915",{"2":{"199":1}}],["18910",{"2":{"191":1}}],["18921f",{"2":{"1406":1}}],["18921",{"2":{"191":1}}],["18924",{"2":{"191":1}}],["18984",{"2":{"191":1}}],["18982",{"2":{"191":1}}],["1897",{"2":{"685":1}}],["18977",{"2":{"191":1}}],["18979",{"2":{"191":1}}],["18978",{"2":{"191":1}}],["18974",{"2":{"191":1}}],["18973",{"2":{"191":1}}],["18972",{"2":{"188":1,"191":1}}],["18933",{"2":{"191":1}}],["18939",{"2":{"188":1,"191":1}}],["189000",{"2":{"1136":1}}],["18908",{"2":{"191":1}}],["18901",{"2":{"189":1,"191":1}}],["18992",{"2":{"191":1}}],["18999",{"2":{"191":1}}],["18997",{"2":{"191":1}}],["18991",{"2":{"191":1}}],["18998",{"2":{"191":1}}],["18996",{"2":{"191":1}}],["1895",{"2":{"684":1}}],["18954",{"2":{"191":1}}],["18956",{"2":{"191":1}}],["18959",{"2":{"191":1}}],["18952",{"2":{"191":1}}],["18951",{"2":{"191":1}}],["18958",{"2":{"188":1,"191":1}}],["18943",{"2":{"199":1}}],["18944",{"2":{"191":1}}],["18942",{"2":{"191":1}}],["18940",{"2":{"191":1,"199":1}}],["18949",{"2":{"191":1}}],["18948",{"2":{"191":1}}],["18947",{"2":{"191":1}}],["18946",{"2":{"191":1}}],["18965",{"2":{"191":1}}],["18969",{"2":{"191":1}}],["18961",{"2":{"188":1,"191":1}}],["18964",{"2":{"188":1,"191":1}}],["18963",{"2":{"188":1,"191":1}}],["18962",{"2":{"188":1,"191":1}}],["188",{"2":{"1725":1,"1946":1}}],["18822",{"2":{"191":1}}],["18852",{"2":{"199":1}}],["18855",{"2":{"191":1}}],["18859",{"2":{"191":1}}],["18858",{"2":{"191":1}}],["18887",{"2":{"191":1}}],["18884",{"2":{"191":1}}],["18886",{"2":{"191":1}}],["18882",{"2":{"188":1,"191":1}}],["18876",{"2":{"191":1}}],["18878",{"2":{"191":1}}],["18874",{"2":{"191":1}}],["18877",{"2":{"188":1,"191":1}}],["18860",{"2":{"191":1}}],["18866",{"2":{"191":1}}],["18867",{"2":{"191":1}}],["18864",{"2":{"188":1,"191":1}}],["18811",{"2":{"191":1}}],["18804",{"2":{"191":1}}],["18806",{"2":{"191":1}}],["18803",{"2":{"191":1}}],["18800",{"2":{"188":1,"191":2}}],["18807",{"2":{"188":1,"191":1}}],["18838",{"2":{"191":1}}],["18837",{"2":{"191":1}}],["18832",{"2":{"188":1,"191":1}}],["18834",{"2":{"188":1,"191":1}}],["18890",{"2":{"199":1}}],["18898",{"2":{"188":1,"191":1}}],["18893",{"2":{"188":1,"191":1}}],["18892",{"2":{"188":1,"191":1}}],["18840",{"2":{"191":1}}],["18847",{"2":{"188":1,"191":1}}],["18844",{"2":{"188":1,"191":1}}],["18843",{"2":{"188":1,"191":1}}],["18196",{"2":{"191":1}}],["18194",{"2":{"191":1}}],["18195",{"2":{"191":1}}],["18183",{"2":{"191":1}}],["18178",{"2":{"191":1}}],["18175",{"2":{"176":1}}],["18116",{"2":{"176":1}}],["18117",{"2":{"176":1}}],["18108",{"2":{"191":1}}],["18101",{"2":{"191":1}}],["18102",{"2":{"176":1}}],["18100",{"2":{"176":1}}],["18168",{"2":{"176":1}}],["18131",{"2":{"176":1}}],["18152",{"2":{"169":1,"176":1}}],["18",{"2":{"114":1,"351":1,"729":1,"789":1,"956":1,"1405":1,"1440":1,"1578":1,"1635":3,"1724":1,"1836":2,"1883":3,"2365":3,"2380":3,"2503":1,"2588":1,"2594":3}}],["18098",{"2":{"191":1}}],["18099",{"2":{"176":1}}],["18066",{"2":{"199":1}}],["18060",{"2":{"190":1,"191":1}}],["18067",{"2":{"176":1}}],["18063",{"2":{"176":1}}],["18028",{"2":{"176":1}}],["18025",{"2":{"176":1}}],["18020",{"2":{"176":1}}],["18029",{"2":{"176":1}}],["18036",{"2":{"191":1}}],["18039",{"2":{"176":1}}],["18038",{"2":{"176":1}}],["18032",{"2":{"176":1}}],["18037",{"2":{"176":1}}],["18058",{"2":{"191":1}}],["18050",{"2":{"176":1}}],["18056",{"2":{"176":1}}],["18057",{"2":{"176":1}}],["18018",{"2":{"176":1}}],["18016",{"2":{"176":1}}],["18011",{"2":{"176":1}}],["18044",{"2":{"191":1}}],["18043",{"2":{"176":1}}],["18045",{"2":{"176":1}}],["18042",{"2":{"176":1}}],["18006",{"2":{"191":1}}],["18008",{"2":{"176":1}}],["18007",{"2":{"176":1}}],["18000",{"2":{"176":1}}],["1800",{"2":{"57":2,"211":1,"1835":1,"2617":1,"2620":1}}],["180",{"2":{"31":2,"34":2,"582":1,"985":1,"1724":1,"1816":2,"1821":3,"1822":2,"1840":2,"1851":2,"1852":2,"1915":2,"2140":2,"2143":1,"2577":1}}],["14k5",{"2":{"1091":1}}],["14",{"2":{"351":1,"635":4,"1091":1,"1405":1,"1578":1,"1635":3,"1793":2,"1836":1,"1881":1,"1883":3,"2042":1,"2118":1,"2330":1,"2332":1,"2365":3,"2371":2,"2380":3}}],["14674",{"2":{"149":1}}],["14678",{"2":{"134":1}}],["14655",{"2":{"134":1}}],["14659",{"2":{"133":1,"134":1}}],["14639",{"2":{"134":1}}],["14662",{"2":{"134":1}}],["14699",{"2":{"134":1}}],["14600",{"2":{"134":1}}],["149",{"2":{"1725":1,"1946":1}}],["14944",{"2":{"266":1}}],["14948",{"2":{"149":1}}],["14947",{"2":{"134":1}}],["14934",{"2":{"134":1}}],["14906",{"2":{"134":1}}],["14989",{"2":{"149":1}}],["14982",{"2":{"134":1}}],["14983",{"2":{"134":1}}],["14980",{"2":{"134":1}}],["14967",{"2":{"134":1}}],["14969",{"2":{"133":1,"134":1}}],["14928",{"2":{"134":1}}],["14919",{"2":{"134":1}}],["14917",{"2":{"133":1,"134":1}}],["14975",{"2":{"134":1}}],["14973",{"2":{"134":1}}],["14976",{"2":{"133":1,"134":1}}],["14972",{"2":{"133":1,"134":1}}],["14814",{"2":{"199":1}}],["14877",{"2":{"176":1}}],["14879",{"2":{"134":1}}],["14872",{"2":{"134":1}}],["14864",{"2":{"134":1}}],["14848",{"2":{"134":1}}],["14835",{"2":{"134":1}}],["14839",{"2":{"133":1,"134":1}}],["14898",{"2":{"134":1}}],["14899",{"2":{"133":1,"134":1}}],["14895",{"2":{"133":1,"134":1}}],["14894",{"2":{"133":1,"134":1}}],["14888",{"2":{"133":1,"134":1}}],["14859",{"2":{"134":1}}],["14854",{"2":{"134":1}}],["14858",{"2":{"133":1,"134":1}}],["14855",{"2":{"133":1,"134":1}}],["1471",{"2":{"1843":1}}],["14713",{"2":{"134":1}}],["14764",{"2":{"684":2}}],["14760",{"2":{"133":1,"134":1}}],["14785",{"2":{"134":1}}],["14780",{"2":{"134":1}}],["14751",{"2":{"134":1}}],["14752",{"2":{"131":1,"134":1}}],["14730",{"2":{"134":1}}],["14775",{"2":{"134":1}}],["14747",{"2":{"134":1}}],["14749",{"2":{"134":1}}],["14740",{"2":{"134":1}}],["14745",{"2":{"133":1,"134":1}}],["14743",{"2":{"133":1,"134":1}}],["14720",{"2":{"134":1}}],["14729",{"2":{"134":1}}],["14727",{"2":{"133":1,"134":1}}],["14726",{"2":{"133":1,"134":1}}],["14723",{"2":{"133":1,"134":1}}],["14243",{"2":{"149":1}}],["14248",{"2":{"134":2}}],["14261",{"2":{"134":1}}],["14252",{"2":{"134":1}}],["14235",{"2":{"134":1}}],["14231",{"2":{"133":1,"134":1}}],["14289",{"2":{"134":1}}],["14200",{"2":{"176":1}}],["14208",{"2":{"134":1}}],["14206",{"2":{"134":1}}],["14201",{"2":{"134":1}}],["14207",{"2":{"133":1,"134":1}}],["14215",{"2":{"134":1}}],["14213",{"2":{"134":1}}],["14216",{"2":{"133":1,"134":1}}],["14210",{"2":{"133":1,"134":1}}],["144",{"2":{"816":1,"917":1,"1053":1,"1724":3,"2289":1}}],["14464",{"2":{"134":1}}],["14462",{"2":{"132":1,"134":1}}],["14452",{"2":{"191":1}}],["14455",{"2":{"134":1}}],["14454",{"2":{"134":1}}],["14456",{"2":{"133":1,"134":1}}],["14442",{"2":{"134":1}}],["14420",{"2":{"176":1}}],["14421",{"2":{"134":1}}],["14422",{"2":{"130":1,"134":1}}],["14497",{"2":{"134":1}}],["14490",{"2":{"134":1}}],["14496",{"2":{"134":1}}],["14415",{"2":{"134":1}}],["14413",{"2":{"134":1}}],["14419",{"2":{"134":1}}],["14408",{"2":{"134":1}}],["14404",{"2":{"133":1,"134":1}}],["14474",{"2":{"134":1}}],["14470",{"2":{"134":1}}],["14434",{"2":{"134":1}}],["14439",{"2":{"134":2}}],["14433",{"2":{"134":1}}],["14430",{"2":{"134":1}}],["14325",{"2":{"134":1}}],["14327",{"2":{"134":1}}],["14399",{"2":{"134":1}}],["14372",{"2":{"134":1}}],["14374",{"2":{"134":1}}],["14370",{"2":{"132":1,"134":1}}],["14343",{"2":{"134":1}}],["14348",{"2":{"133":1,"134":1}}],["14389",{"2":{"134":1}}],["14380",{"2":{"133":1,"134":1}}],["14388",{"2":{"130":1,"134":1}}],["14308",{"2":{"133":1,"134":1}}],["14580",{"2":{"149":1}}],["14584",{"2":{"130":1,"134":1}}],["14590",{"2":{"134":1}}],["14591",{"2":{"131":1,"134":1}}],["14546",{"2":{"134":1}}],["14508",{"2":{"134":1}}],["14530",{"2":{"133":1,"134":1}}],["14194",{"2":{"134":1}}],["14195",{"2":{"131":1,"134":1}}],["14181",{"2":{"134":1}}],["14155",{"2":{"134":1}}],["14150",{"2":{"114":1}}],["14174",{"2":{"134":1}}],["14171",{"2":{"114":1}}],["14172",{"2":{"114":1}}],["14118",{"2":{"114":1}}],["14146",{"2":{"114":1}}],["14142",{"2":{"114":1}}],["14140",{"2":{"114":1}}],["14144",{"2":{"114":2}}],["14123",{"2":{"114":1}}],["14120",{"2":{"114":1}}],["14106",{"2":{"114":1}}],["14108",{"2":{"114":1}}],["14105",{"2":{"114":1}}],["14136",{"2":{"114":1}}],["14133",{"2":{"114":1}}],["14134",{"2":{"113":1,"114":1}}],["14132",{"2":{"113":1,"114":1}}],["140",{"2":{"2733":1}}],["14091",{"2":{"149":1}}],["14095",{"2":{"114":1}}],["14090",{"2":{"114":1}}],["14097",{"2":{"114":1}}],["14052",{"2":{"114":1}}],["14051",{"2":{"114":1}}],["14017",{"2":{"114":1}}],["14065",{"2":{"149":1}}],["14061",{"2":{"114":1}}],["14063",{"2":{"114":1}}],["14048",{"2":{"114":1}}],["14045",{"2":{"114":1}}],["14033",{"2":{"134":1}}],["14039",{"2":{"114":1}}],["14038",{"2":{"114":1}}],["14005",{"2":{"114":1}}],["14007",{"2":{"114":1}}],["14089",{"2":{"114":1}}],["14084",{"2":{"114":1}}],["14080",{"2":{"114":1}}],["14083",{"2":{"114":2}}],["14079",{"2":{"114":1}}],["14025",{"2":{"113":1,"114":1}}],["12bit",{"2":{"1401":1}}],["12x12",{"2":{"917":1}}],["12x16",{"2":{"848":1}}],["12x8",{"2":{"883":1}}],["12x4",{"2":{"624":1}}],["12",{"2":{"199":1,"266":1,"292":1,"315":2,"317":1,"350":9,"351":1,"506":3,"633":1,"635":4,"641":1,"659":1,"755":1,"792":1,"959":1,"993":1,"1027":1,"1061":1,"1239":1,"1406":1,"1440":2,"1573":1,"1578":1,"1632":1,"1635":3,"1793":3,"1836":1,"1883":3,"1945":1,"2039":1,"2042":4,"2332":1,"2365":3,"2371":3,"2380":3,"2553":1,"2575":1}}],["12674",{"2":{"114":1}}],["12670",{"2":{"114":1,"134":1}}],["12671",{"2":{"94":1}}],["12632",{"2":{"114":1}}],["12637",{"2":{"114":1}}],["12633",{"2":{"93":1}}],["12692",{"2":{"134":1}}],["12691",{"2":{"134":1}}],["12699",{"2":{"114":1}}],["12697",{"2":{"94":1}}],["12689",{"2":{"114":1}}],["12685",{"2":{"93":1}}],["12669",{"2":{"114":1}}],["12641",{"2":{"114":1}}],["12602",{"2":{"94":1}}],["12600",{"2":{"93":1}}],["12625",{"2":{"94":1}}],["12626",{"2":{"94":1}}],["12651",{"2":{"93":1}}],["12617",{"2":{"114":1}}],["12619",{"2":{"93":1}}],["12613",{"2":{"86":1}}],["1252",{"2":{"2183":1}}],["125",{"2":{"1804":1,"1834":2}}],["1250",{"2":{"1214":1,"2727":1,"2728":1}}],["12508",{"2":{"130":1,"134":1}}],["12509",{"2":{"93":1}}],["12538",{"2":{"114":1}}],["12567",{"2":{"114":1}}],["12560",{"2":{"93":1}}],["12561",{"2":{"92":1}}],["12588",{"2":{"93":1}}],["12580",{"2":{"93":1}}],["121",{"2":{"1578":1}}],["12159",{"2":{"114":1}}],["12116",{"2":{"114":1}}],["12160",{"2":{"94":1}}],["12161",{"2":{"94":1}}],["12187",{"2":{"94":1}}],["12197",{"2":{"94":1}}],["12108",{"2":{"134":1}}],["12109",{"2":{"94":1}}],["12107",{"2":{"93":1}}],["12172",{"2":{"93":1}}],["12425",{"2":{"114":1}}],["12495",{"2":{"94":1}}],["12403",{"2":{"93":1}}],["12444",{"2":{"93":1}}],["12417",{"2":{"93":1}}],["12419",{"2":{"93":1}}],["12435",{"2":{"93":1}}],["12482",{"2":{"92":1}}],["123",{"2":{"1359":1,"1578":1}}],["12315",{"2":{"114":1}}],["12314",{"2":{"114":1}}],["12317",{"2":{"93":1}}],["12386",{"2":{"114":1}}],["12327",{"2":{"94":1}}],["12342",{"2":{"93":1}}],["12361",{"2":{"93":1}}],["122",{"2":{"207":5,"1578":1}}],["12240",{"2":{"114":1}}],["12249",{"2":{"94":1}}],["12238",{"2":{"114":1}}],["12237",{"2":{"93":1}}],["12211",{"2":{"114":1}}],["12216",{"2":{"93":1}}],["12284",{"2":{"94":1}}],["12286",{"2":{"94":1}}],["12258",{"2":{"93":1}}],["12226",{"2":{"86":1}}],["129",{"2":{"1440":2}}],["129u",{"2":{"705":1}}],["12950",{"2":{"134":1}}],["12951",{"2":{"114":1}}],["12947",{"2":{"131":1,"134":2}}],["12946",{"2":{"114":1}}],["12949",{"2":{"114":1}}],["12945",{"2":{"92":1}}],["12914",{"2":{"114":1}}],["12915",{"2":{"95":1}}],["12987",{"2":{"93":1}}],["12985",{"2":{"93":1}}],["12936",{"2":{"93":1}}],["12933",{"2":{"92":1}}],["12977",{"2":{"92":1}}],["12976",{"2":{"92":1}}],["128x128",{"2":{"1811":1,"1820":3,"2573":2}}],["128x32",{"2":{"1811":2,"1820":1,"1821":1,"1822":1,"2136":1,"2142":1,"2573":1}}],["128x64",{"0":{"1820":1},"1":{"1821":1},"2":{"232":1,"1811":3,"1817":1,"1820":2,"2136":1,"2573":3}}],["128u",{"2":{"659":1}}],["128",{"2":{"633":1,"702":1,"1176":1,"1197":1,"1227":1,"1451":1,"1466":1,"1467":1,"1553":1,"1554":2,"1817":1,"1820":1,"1822":1,"1855":4,"2142":1,"2182":1,"2600":5,"2688":1,"2695":1}}],["12870",{"2":{"114":1}}],["12878",{"2":{"92":1}}],["12819",{"2":{"114":1}}],["12893",{"2":{"114":1}}],["12895",{"2":{"92":1}}],["12859",{"2":{"114":1}}],["12851",{"2":{"114":1}}],["12856",{"2":{"95":1}}],["12845",{"2":{"114":1}}],["12846",{"2":{"94":1}}],["12831",{"2":{"114":1}}],["12833",{"2":{"95":1}}],["12832",{"2":{"95":1}}],["12805",{"2":{"93":1}}],["12861",{"2":{"114":1}}],["12864",{"2":{"94":1}}],["12868",{"2":{"93":1}}],["12866",{"2":{"92":1}}],["12828",{"2":{"93":1}}],["12888",{"2":{"92":1}}],["12881",{"2":{"86":1}}],["127",{"2":{"176":1,"505":2,"1632":1,"1633":2,"1634":1,"1730":1,"1792":2,"1793":1,"1794":1,"1815":1,"1843":1,"1849":5,"1851":2,"1855":8,"1857":5,"1954":1,"2038":1,"2040":2,"2139":1,"2182":2,"2371":1}}],["12795",{"2":{"149":2}}],["12797",{"2":{"114":1}}],["12789",{"2":{"114":1}}],["12767",{"2":{"114":1}}],["12755",{"2":{"114":1}}],["12754",{"2":{"114":1}}],["12750",{"2":{"92":1}}],["12770",{"2":{"94":1}}],["12721",{"2":{"93":1}}],["12723",{"2":{"92":1}}],["120",{"2":{"1400":1,"1578":1,"1805":1,"2040":1,"2732":2,"2737":1}}],["12097",{"2":{"114":1}}],["12091",{"2":{"93":1}}],["12023",{"2":{"114":1}}],["12022",{"2":{"73":1}}],["12069",{"2":{"114":1}}],["12067",{"2":{"94":1}}],["12063",{"2":{"93":1}}],["12054",{"2":{"94":1}}],["12086",{"2":{"93":1}}],["12018",{"2":{"93":1}}],["12039",{"2":{"73":1}}],["12001",{"2":{"77":1}}],["12000",{"2":{"76":1,"1849":1}}],["120000",{"2":{"25":1}}],["1200",{"2":{"25":1,"1201":1,"1846":1}}],["11",{"0":{"1297":1},"2":{"160":1,"176":2,"191":1,"211":1,"249":1,"317":2,"350":1,"351":1,"633":1,"635":4,"822":1,"1133":1,"1405":1,"1440":1,"1578":1,"1635":3,"1793":2,"1883":3,"2042":2,"2118":1,"2130":1,"2147":1,"2155":4,"2332":1,"2347":1,"2365":3,"2371":2,"2380":3,"2533":1,"2575":1,"2596":1}}],["112",{"2":{"1440":1,"1578":1,"1725":3,"1946":3,"2688":1,"2695":1}}],["11261",{"2":{"77":1}}],["11237",{"2":{"75":1}}],["118",{"2":{"1578":1}}],["11842",{"2":{"114":1}}],["11846",{"2":{"77":1}}],["11896",{"2":{"114":1}}],["11890",{"2":{"94":1}}],["11893",{"2":{"76":1}}],["11864",{"2":{"92":1}}],["11863",{"2":{"75":1}}],["11820",{"2":{"75":1}}],["11829",{"2":{"75":1}}],["11823",{"2":{"75":1}}],["11824",{"2":{"74":1}}],["11804",{"2":{"75":1}}],["11805",{"2":{"75":1}}],["119972",{"2":{"2255":2}}],["119",{"2":{"1578":1}}],["11988",{"2":{"93":1}}],["11981",{"2":{"72":1}}],["11978",{"2":{"86":1}}],["11927",{"2":{"77":1}}],["11928",{"2":{"76":1}}],["11930",{"2":{"107":1,"114":1}}],["11935",{"2":{"93":1}}],["11936",{"2":{"76":1}}],["11938",{"2":{"74":1}}],["11907",{"2":{"76":1}}],["11905",{"2":{"76":1}}],["11966",{"2":{"75":1}}],["11943",{"2":{"75":1}}],["11940",{"2":{"75":1}}],["11913",{"2":{"74":1}}],["11912",{"2":{"74":1}}],["11000010",{"2":{"2147":1}}],["11001000",{"2":{"2147":1}}],["110",{"2":{"1578":1,"2147":1,"2732":2,"2733":2}}],["11025u",{"2":{"659":1}}],["11036",{"2":{"134":1}}],["11083",{"2":{"93":1}}],["11059",{"2":{"134":2}}],["11055",{"2":{"93":1}}],["11057",{"2":{"74":1}}],["11046",{"2":{"74":1}}],["117",{"2":{"951":1,"1440":1,"1578":1,"1945":1,"2036":1}}],["11727",{"2":{"93":1}}],["11728",{"2":{"73":1}}],["11793",{"2":{"77":1}}],["11750",{"2":{"75":1}}],["11751",{"2":{"75":1}}],["11768",{"2":{"74":1}}],["116",{"2":{"1440":5,"1578":1}}],["11621",{"2":{"77":1}}],["11620",{"2":{"77":1}}],["11615",{"2":{"77":1}}],["11617",{"2":{"77":1}}],["11646",{"2":{"77":1}}],["11630",{"2":{"77":1}}],["11637",{"2":{"75":1}}],["11607",{"2":{"77":1}}],["11600",{"2":{"73":1}}],["11689",{"2":{"77":1}}],["11688",{"2":{"76":1}}],["11687",{"2":{"74":1}}],["11672",{"2":{"75":1}}],["113",{"2":{"1578":1}}],["11350",{"2":{"74":1}}],["11307",{"2":{"74":1}}],["111",{"2":{"1578":1}}],["11151",{"2":{"114":1}}],["11154",{"2":{"74":1}}],["11123",{"2":{"77":1}}],["11111",{"2":{"77":1}}],["11108",{"2":{"76":1}}],["11101",{"2":{"76":1}}],["11165",{"2":{"75":1}}],["11168",{"2":{"75":1}}],["11162",{"2":{"73":1}}],["11195",{"2":{"72":1}}],["115",{"2":{"1436":2,"1578":1}}],["115200",{"2":{"1136":1,"1201":1,"2150":1}}],["11528",{"2":{"199":1}}],["11529",{"2":{"77":1}}],["11536",{"2":{"93":1}}],["11588",{"2":{"77":1}}],["11584",{"2":{"73":1}}],["11504",{"2":{"77":1}}],["11502",{"2":{"76":1}}],["11548",{"2":{"76":1}}],["11544",{"2":{"76":1}}],["11542",{"2":{"76":1}}],["11576",{"2":{"75":1}}],["11570",{"2":{"74":1}}],["11553",{"2":{"74":1}}],["11552",{"2":{"74":1}}],["11519",{"2":{"74":1}}],["11598",{"2":{"77":1}}],["11595",{"2":{"74":1}}],["11594",{"2":{"73":1}}],["114",{"2":{"1440":2,"1578":1,"1793":1,"2371":1}}],["11487",{"2":{"92":1}}],["11495",{"2":{"77":1}}],["11492",{"2":{"76":1}}],["11408",{"2":{"76":1}}],["11409",{"2":{"73":1}}],["11422",{"2":{"114":1}}],["11426",{"2":{"74":1}}],["11427",{"2":{"73":1}}],["11450",{"2":{"73":1}}],["11435",{"2":{"73":1}}],["11473",{"2":{"73":1}}],["11449",{"2":{"77":1}}],["11447",{"2":{"73":1}}],["11448",{"2":{"73":1}}],["11414",{"2":{"77":1}}],["11413",{"2":{"77":1}}],["11418",{"2":{"74":1}}],["11412",{"2":{"73":1}}],["11415",{"2":{"72":1}}],["1360",{"2":{"2425":1}}],["13606",{"2":{"114":1}}],["13697",{"2":{"114":1}}],["13696",{"2":{"114":1}}],["13695",{"2":{"114":1}}],["13692",{"2":{"114":1}}],["13691",{"2":{"114":1}}],["13690",{"2":{"114":1}}],["13698",{"2":{"114":1}}],["13668",{"2":{"114":1}}],["13667",{"2":{"114":1}}],["13665",{"2":{"114":1}}],["13664",{"2":{"114":1}}],["13658",{"2":{"114":1}}],["13653",{"2":{"114":1}}],["13633",{"2":{"114":1}}],["13688",{"2":{"114":1}}],["13687",{"2":{"114":1}}],["13686",{"2":{"114":1}}],["13685",{"2":{"114":1}}],["13684",{"2":{"114":1}}],["13681",{"2":{"114":1}}],["13689",{"2":{"114":1}}],["13680",{"2":{"114":1}}],["13648",{"2":{"114":1}}],["13647",{"2":{"114":1}}],["13646",{"2":{"114":1}}],["13645",{"2":{"114":1}}],["13649",{"2":{"114":1}}],["13641",{"2":{"114":1}}],["13629",{"2":{"114":1}}],["13677",{"2":{"114":2}}],["13672",{"2":{"114":1}}],["13671",{"2":{"114":1}}],["13676",{"2":{"114":1}}],["13673",{"2":{"113":1,"114":1}}],["135",{"2":{"784":1,"1416":1,"1724":1}}],["13546",{"2":{"114":1}}],["13542",{"2":{"114":1}}],["13525",{"2":{"114":1}}],["13523",{"2":{"107":1,"114":1}}],["13533",{"2":{"114":1}}],["13511",{"2":{"114":1}}],["13597",{"2":{"114":1}}],["13596",{"2":{"114":1}}],["13571",{"2":{"114":1}}],["13570",{"2":{"114":1}}],["13551",{"2":{"114":1}}],["13550",{"2":{"114":1}}],["13559",{"2":{"114":1}}],["13504",{"2":{"114":1}}],["13502",{"2":{"114":1}}],["13588",{"2":{"114":1}}],["13566",{"2":{"114":1}}],["134217728",{"2":{"2353":1}}],["13425",{"2":{"114":1}}],["13471",{"2":{"114":1}}],["13470",{"2":{"114":1}}],["13404",{"2":{"114":1}}],["13405",{"2":{"114":1}}],["13403",{"2":{"114":1}}],["13481",{"2":{"114":1}}],["13480",{"2":{"114":1}}],["13442",{"2":{"114":1}}],["13457",{"2":{"114":1}}],["13454",{"2":{"114":1}}],["13450",{"2":{"114":1}}],["13433",{"2":{"114":1}}],["13430",{"2":{"114":1}}],["13418",{"2":{"107":1,"114":1}}],["13310",{"2":{"114":1}}],["13312",{"2":{"113":1,"114":1}}],["13371",{"2":{"114":1}}],["1337",{"2":{"114":1}}],["13377",{"2":{"114":1}}],["13398",{"2":{"114":1}}],["13399",{"2":{"114":1}}],["13389",{"2":{"114":1}}],["13383",{"2":{"114":1}}],["13366",{"2":{"114":1}}],["13360",{"2":{"114":1}}],["13350",{"2":{"114":1}}],["13349",{"2":{"114":1}}],["13333",{"2":{"114":1}}],["13330",{"2":{"114":2}}],["13321",{"2":{"114":1}}],["13304",{"2":{"114":1}}],["13309",{"2":{"114":1}}],["13302",{"2":{"114":1}}],["132x162",{"2":{"2573":1,"2576":1}}],["132x64",{"2":{"1817":1}}],["132",{"2":{"2255":1}}],["13286",{"2":{"154":1,"160":1}}],["13243",{"2":{"114":1}}],["13247",{"2":{"114":1}}],["13209",{"2":{"114":1}}],["13201",{"2":{"114":1}}],["13271",{"2":{"114":1}}],["13228",{"2":{"114":1}}],["13297",{"2":{"114":1}}],["13298",{"2":{"114":1}}],["13296",{"2":{"114":1}}],["13293",{"2":{"114":1}}],["13253",{"2":{"114":1}}],["13251",{"2":{"114":1}}],["13257",{"2":{"114":1}}],["13252",{"2":{"114":1}}],["13236",{"2":{"114":1}}],["13239",{"2":{"114":1}}],["13238",{"2":{"114":1}}],["13237",{"2":{"114":1}}],["131",{"2":{"1440":1}}],["13146",{"2":{"114":1}}],["13147",{"2":{"114":1}}],["13189",{"2":{"114":1}}],["13165",{"2":{"114":1}}],["13172",{"2":{"114":1}}],["13154",{"2":{"114":1}}],["13152",{"2":{"114":1}}],["13151",{"2":{"114":1}}],["13150",{"2":{"114":1}}],["13955",{"2":{"134":1}}],["13954",{"2":{"114":1}}],["13944",{"2":{"134":1}}],["13993",{"2":{"114":1}}],["13992",{"2":{"114":1}}],["13988",{"2":{"114":1}}],["13980",{"2":{"114":1}}],["13985",{"2":{"114":1}}],["13979",{"2":{"114":1}}],["13973",{"2":{"113":1,"114":1}}],["13937",{"2":{"114":1}}],["13931",{"2":{"114":1}}],["13932",{"2":{"114":1}}],["13918",{"2":{"133":1,"134":1}}],["13913",{"2":{"114":1}}],["13912",{"2":{"114":1}}],["13902",{"2":{"134":1}}],["13900",{"2":{"114":1}}],["13908",{"2":{"114":1}}],["13905",{"2":{"114":1}}],["13901",{"2":{"114":1}}],["13968",{"2":{"114":1}}],["13926",{"2":{"114":1}}],["13920",{"2":{"114":1}}],["13927",{"2":{"113":1,"114":1}}],["13810",{"2":{"114":1}}],["13819",{"2":{"114":1}}],["13886",{"2":{"114":1}}],["13885",{"2":{"114":1}}],["13872",{"2":{"114":1}}],["13877",{"2":{"114":1}}],["13838",{"2":{"114":1}}],["13831",{"2":{"114":1}}],["13832",{"2":{"114":1}}],["13830",{"2":{"114":1}}],["13826",{"2":{"114":1}}],["13821",{"2":{"114":1}}],["13823",{"2":{"114":1}}],["13850",{"2":{"114":1}}],["13890",{"2":{"133":1,"134":1}}],["13898",{"2":{"114":1}}],["13896",{"2":{"114":1}}],["13894",{"2":{"113":1,"114":1}}],["13801",{"2":{"114":1}}],["13804",{"2":{"114":1}}],["13800",{"2":{"114":1}}],["13842",{"2":{"134":1}}],["13846",{"2":{"114":1}}],["13843",{"2":{"113":1,"114":1}}],["137000",{"2":{"1136":1}}],["13706",{"2":{"114":1}}],["137kbps",{"2":{"511":1,"2128":1}}],["13789",{"2":{"134":1}}],["13724",{"2":{"114":1}}],["13722",{"2":{"114":1}}],["13720",{"2":{"114":1}}],["13728",{"2":{"114":1}}],["13799",{"2":{"114":1}}],["1375",{"2":{"1834":1}}],["13758",{"2":{"114":1}}],["13755",{"2":{"114":1}}],["13731",{"2":{"114":1}}],["13716",{"2":{"114":1}}],["13717",{"2":{"114":1}}],["13715",{"2":{"114":1}}],["13718",{"2":{"114":1}}],["13713",{"2":{"114":1}}],["13712",{"2":{"114":1}}],["13777",{"2":{"113":1,"114":1}}],["13740",{"2":{"114":1}}],["13747",{"2":{"114":1}}],["13749",{"2":{"113":1,"114":1}}],["13748",{"2":{"113":1,"114":1}}],["130",{"2":{"1440":2,"1959":1,"2727":1,"2728":1,"2733":1}}],["13056",{"2":{"114":1}}],["13098",{"2":{"114":1}}],["13089",{"2":{"114":1}}],["13081",{"2":{"107":1,"114":1}}],["13078",{"2":{"114":1}}],["13077",{"2":{"114":1}}],["13076",{"2":{"114":1}}],["13074",{"2":{"114":1}}],["13070",{"2":{"114":1}}],["13069",{"2":{"114":1}}],["13065",{"2":{"114":1}}],["13064",{"2":{"114":1}}],["13062",{"2":{"114":1}}],["13045",{"2":{"114":1}}],["13044",{"2":{"114":1}}],["13025",{"2":{"114":1}}],["13023",{"2":{"94":1}}],["13024",{"2":{"93":1}}],["13014",{"2":{"93":1}}],["13",{"2":{"70":1,"351":1,"633":1,"635":4,"1095":1,"1134":1,"1148":1,"1405":1,"1491":1,"1578":1,"1635":3,"1793":2,"1836":1,"1883":3,"2042":2,"2332":1,"2365":3,"2371":2,"2380":3,"2598":2}}],["17915",{"2":{"199":1}}],["17911",{"2":{"176":1}}],["17962",{"2":{"190":1,"191":1}}],["17999",{"2":{"176":1}}],["17996",{"2":{"176":1}}],["17989",{"2":{"176":1}}],["17935",{"2":{"191":1}}],["17936",{"2":{"176":1}}],["17931",{"2":{"176":1}}],["17905",{"2":{"176":1}}],["17904",{"2":{"176":2}}],["17923",{"2":{"176":1}}],["17940",{"2":{"167":1,"176":1}}],["17893",{"2":{"211":1}}],["17892",{"2":{"191":1}}],["17880",{"2":{"191":1}}],["17839",{"2":{"176":1}}],["17832",{"2":{"176":1}}],["17817",{"2":{"176":1}}],["17808",{"2":{"176":1}}],["17800",{"2":{"176":1}}],["17803",{"2":{"176":1}}],["17850",{"2":{"176":1}}],["17856",{"2":{"176":1}}],["17855",{"2":{"176":1}}],["17854",{"2":{"176":1}}],["17853",{"2":{"176":1}}],["17862",{"2":{"176":1}}],["17867",{"2":{"176":1}}],["17868",{"2":{"176":1}}],["17863",{"2":{"176":1}}],["17861",{"2":{"176":1}}],["17866",{"2":{"176":1}}],["17864",{"2":{"176":1}}],["17842",{"2":{"176":1}}],["17848",{"2":{"176":1}}],["17840",{"2":{"176":1}}],["17820",{"2":{"199":1}}],["17827",{"2":{"176":1}}],["17823",{"2":{"176":1}}],["17723",{"2":{"191":1}}],["17798",{"2":{"176":1}}],["17795",{"2":{"176":1}}],["17790",{"2":{"176":1}}],["17791",{"2":{"176":1}}],["17716",{"2":{"176":1}}],["17711",{"2":{"176":1}}],["17777",{"2":{"176":1}}],["17776",{"2":{"175":1,"176":1}}],["17732",{"2":{"176":1}}],["17735",{"2":{"176":1}}],["17734",{"2":{"176":1}}],["17786",{"2":{"176":1}}],["17755",{"2":{"176":1}}],["17760",{"2":{"176":1}}],["17748",{"2":{"176":1}}],["17745",{"2":{"176":1}}],["17740",{"2":{"176":1}}],["17706",{"2":{"191":1}}],["17702",{"2":{"176":1}}],["17707",{"2":{"176":1}}],["17708",{"2":{"176":1}}],["17703",{"2":{"176":1}}],["17693",{"2":{"176":1}}],["17695",{"2":{"176":1}}],["17663",{"2":{"191":1}}],["17661",{"2":{"176":1}}],["17669",{"2":{"176":1}}],["17678",{"2":{"176":1}}],["17675",{"2":{"176":1}}],["17679",{"2":{"176":1}}],["17638",{"2":{"176":1}}],["17632",{"2":{"176":1}}],["17639",{"2":{"176":1}}],["17684",{"2":{"176":1}}],["17658",{"2":{"176":1}}],["17656",{"2":{"176":1}}],["17652",{"2":{"176":1}}],["17655",{"2":{"176":1}}],["17654",{"2":{"176":1}}],["17651",{"2":{"176":1}}],["17650",{"2":{"176":1}}],["17645",{"2":{"176":1}}],["17647",{"2":{"176":1}}],["17643",{"2":{"176":1}}],["17615",{"2":{"176":1}}],["17611",{"2":{"176":1}}],["17612",{"2":{"176":1}}],["17613",{"2":{"175":1,"176":1}}],["17601",{"2":{"176":1}}],["17607",{"2":{"176":1}}],["17603",{"2":{"176":1}}],["17602",{"2":{"176":1}}],["175ms",{"2":{"2161":2}}],["175",{"2":{"1416":1,"2161":1}}],["17588",{"2":{"199":1}}],["17584",{"2":{"176":1}}],["17534",{"2":{"176":1}}],["17533",{"2":{"176":1}}],["17593",{"2":{"176":1}}],["17595",{"2":{"176":1}}],["17522",{"2":{"176":1}}],["17549",{"2":{"176":1}}],["17545",{"2":{"176":1}}],["17540",{"2":{"176":1}}],["17559",{"2":{"176":1}}],["17557",{"2":{"176":1}}],["17554",{"2":{"176":1}}],["17501",{"2":{"176":1}}],["17507",{"2":{"176":1}}],["17506",{"2":{"176":1}}],["17579",{"2":{"176":1}}],["17578",{"2":{"176":1}}],["17512",{"2":{"176":1}}],["17519",{"2":{"176":1}}],["17517",{"2":{"176":1}}],["17516",{"2":{"176":1}}],["17514",{"2":{"176":1}}],["174",{"2":{"251":1,"1252":2}}],["17463",{"2":{"176":1}}],["17414",{"2":{"176":1}}],["17492",{"2":{"176":1}}],["17459",{"2":{"176":2}}],["17439",{"2":{"176":1}}],["17435",{"2":{"176":1}}],["17438",{"2":{"176":2}}],["17423",{"2":{"176":2}}],["17426",{"2":{"176":1}}],["17420",{"2":{"176":1}}],["17488",{"2":{"176":1}}],["17481",{"2":{"176":1}}],["17482",{"2":{"175":2,"176":1}}],["17440",{"2":{"176":1}}],["17448",{"2":{"176":1}}],["17444",{"2":{"176":1}}],["17371",{"2":{"176":1}}],["17376",{"2":{"176":1}}],["17335",{"2":{"176":1}}],["17333",{"2":{"176":1}}],["17383",{"2":{"176":1}}],["17385",{"2":{"176":1}}],["17387",{"2":{"176":1}}],["17368",{"2":{"176":1}}],["17397",{"2":{"176":1}}],["17399",{"2":{"176":1}}],["17396",{"2":{"176":1}}],["17354",{"2":{"176":1}}],["17356",{"2":{"176":1}}],["17355",{"2":{"176":1}}],["17352",{"2":{"176":1}}],["17342",{"2":{"176":1}}],["17326",{"2":{"176":1}}],["172",{"2":{"1252":2}}],["17282",{"2":{"199":1}}],["17287",{"2":{"176":1}}],["17265",{"2":{"176":1}}],["17263",{"2":{"176":1}}],["17234",{"2":{"176":1}}],["17232",{"2":{"176":1}}],["17231",{"2":{"176":1}}],["17210",{"2":{"176":1}}],["17295",{"2":{"176":1}}],["17275",{"2":{"176":1}}],["17272",{"2":{"176":1}}],["17271",{"2":{"176":1}}],["17258",{"2":{"176":1}}],["17257",{"2":{"176":1}}],["17256",{"2":{"176":1}}],["17229",{"2":{"176":1}}],["17228",{"2":{"176":1}}],["17222",{"2":{"176":1}}],["170",{"2":{"2040":1}}],["17007",{"2":{"199":1}}],["17046",{"2":{"176":1}}],["17099",{"2":{"176":1}}],["17091",{"2":{"176":1}}],["17095",{"2":{"160":1}}],["17065",{"2":{"176":1}}],["17028",{"2":{"199":1}}],["17020",{"2":{"176":1}}],["17025",{"2":{"160":1}}],["17024",{"2":{"160":1}}],["17037",{"2":{"156":1,"160":1}}],["17189",{"2":{"191":1}}],["17184",{"2":{"176":1}}],["17129",{"2":{"191":1}}],["17174",{"2":{"176":1}}],["17178",{"2":{"176":1}}],["17176",{"2":{"175":1,"176":1}}],["17143",{"2":{"176":1}}],["17142",{"2":{"176":1}}],["17114",{"2":{"176":1}}],["17111",{"2":{"175":1,"176":1}}],["17156",{"2":{"160":1}}],["17150",{"2":{"160":1}}],["17136",{"2":{"160":1}}],["17133",{"2":{"160":1}}],["17104",{"2":{"160":1}}],["17106",{"2":{"160":1}}],["17",{"2":{"55":2,"111":2,"340":1,"351":1,"1405":1,"1440":1,"1578":1,"1635":3,"1836":1,"1883":3,"2035":2,"2299":2,"2365":3,"2380":3,"2614":2,"2694":2,"2746":1}}],["10glbprf",{"2":{"2147":1}}],["10kohm",{"2":{"2120":1}}],["10ms",{"2":{"1842":1,"2728":1}}],["10µf",{"2":{"1589":1}}],["103",{"2":{"1578":1}}],["10388",{"2":{"63":1}}],["10bits",{"2":{"641":1}}],["10bit",{"2":{"641":1}}],["109",{"2":{"1578":1}}],["10904",{"2":{"114":1}}],["10997",{"2":{"74":1}}],["10976",{"2":{"77":1}}],["10973",{"2":{"72":1}}],["10974",{"2":{"65":1}}],["10972",{"2":{"65":1}}],["106",{"2":{"1578":1}}],["10638",{"2":{"65":1}}],["10622",{"2":{"63":1}}],["108",{"2":{"1440":1,"1578":1}}],["10817",{"2":{"76":1}}],["10894",{"2":{"75":1}}],["10807",{"2":{"74":1}}],["10800",{"2":{"62":1}}],["10840",{"2":{"65":1}}],["10824",{"2":{"65":1}}],["10837",{"2":{"64":1}}],["104",{"2":{"1440":2,"1578":1}}],["10419",{"2":{"92":1}}],["10418",{"2":{"77":1}}],["10417",{"2":{"65":1}}],["10400",{"2":{"74":1}}],["10437",{"2":{"73":1}}],["10438",{"2":{"65":1}}],["10439",{"2":{"63":1}}],["10420",{"2":{"65":1}}],["10491",{"2":{"64":1}}],["107",{"2":{"1578":1}}],["10730",{"2":{"74":1}}],["10735",{"2":{"64":1}}],["10767",{"2":{"65":1}}],["10716",{"2":{"65":1}}],["10750",{"2":{"64":1}}],["10706",{"2":{"63":1}}],["105",{"2":{"1440":1,"1578":1}}],["10533",{"2":{"114":1}}],["10530",{"2":{"65":1}}],["10528",{"2":{"72":1}}],["10524",{"2":{"64":1}}],["10563",{"2":{"65":1}}],["10549",{"2":{"63":1}}],["102",{"2":{"1578":1,"1793":1,"2371":1}}],["102559237",{"2":{"1281":1}}],["10259",{"2":{"63":1}}],["1024",{"2":{"683":1,"692":6,"694":3,"1842":1,"2353":2,"2574":1}}],["1023",{"2":{"630":1,"1836":1}}],["10231",{"2":{"65":1}}],["10214",{"2":{"65":1}}],["10206",{"2":{"65":1}}],["10204",{"2":{"63":1}}],["10260",{"2":{"63":1}}],["10",{"0":{"1297":1},"2":{"55":1,"73":1,"111":2,"114":1,"340":1,"351":1,"502":1,"511":1,"551":1,"584":1,"630":1,"633":1,"635":4,"641":3,"703":1,"707":1,"1283":1,"1328":1,"1397":1,"1405":1,"1440":1,"1451":2,"1452":1,"1559":1,"1578":4,"1632":2,"1635":3,"1793":3,"1803":3,"1804":1,"1836":2,"1838":1,"1847":1,"1868":2,"1883":3,"2040":2,"2042":1,"2128":1,"2131":1,"2155":4,"2179":1,"2254":1,"2299":1,"2330":2,"2332":3,"2339":1,"2347":1,"2365":3,"2371":3,"2380":3,"2577":1,"2694":2,"2697":2,"2728":1,"2745":1}}],["10101100",{"2":{"2147":1}}],["10101000",{"2":{"2147":1}}],["10103",{"2":{"50":1}}],["101",{"2":{"207":1,"1440":2,"1578":1,"1836":1}}],["10174",{"2":{"160":1}}],["10171",{"2":{"93":1}}],["10179",{"2":{"63":1}}],["10183",{"2":{"63":1}}],["10127",{"2":{"50":1}}],["10129",{"2":{"50":1}}],["10169",{"2":{"49":1}}],["100ms",{"2":{"2612":2}}],["100ma",{"2":{"134":1}}],["100644",{"2":{"2255":1}}],["100k",{"2":{"1287":1}}],["10088",{"2":{"62":1,"114":1}}],["1000ms",{"2":{"1375":1,"1578":1}}],["1000",{"2":{"120":1,"1354":1,"1361":1,"1375":1,"1683":1,"1804":1,"1807":2,"1846":2,"1848":1,"1862":1,"1868":2,"1910":1,"2699":1}}],["10008",{"2":{"50":1}}],["10000000",{"2":{"2148":3}}],["1000000",{"2":{"1842":1}}],["100000l",{"2":{"502":2}}],["100000",{"2":{"11":1,"704":1,"1287":1}}],["10053",{"2":{"50":1}}],["10040",{"2":{"50":1}}],["100",{"0":{"2159":1,"2166":1},"1":{"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1},"2":{"25":2,"273":1,"505":2,"511":1,"660":2,"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1,"1220":1,"1379":1,"1401":1,"1573":1,"1578":1,"1804":1,"1807":1,"1836":3,"1847":1,"1849":2,"1868":2,"2040":2,"2128":1,"2166":1,"2255":7,"2299":2,"2347":3,"2453":2,"2524":1,"2577":2,"2612":1,"2700":2}}],["16bit",{"2":{"2708":1}}],["16bpp",{"2":{"2576":3}}],["16mb",{"2":{"2593":1}}],["16mhz",{"2":{"2329":1,"2344":2}}],["16ms",{"2":{"1730":1,"1954":1}}],["16t",{"2":{"2105":1}}],["16th",{"2":{"1406":1}}],["16k",{"2":{"854":2,"888":2,"922":2,"956":2,"990":2}}],["16kb",{"2":{"486":1}}],["16x2",{"2":{"1589":1,"1604":2}}],["16x",{"2":{"1576":1,"1577":1}}],["16x12",{"2":{"1143":1}}],["16x9",{"2":{"816":1}}],["16x8",{"2":{"784":1,"2577":1}}],["16c0",{"2":{"629":3,"2345":1,"2346":2}}],["16411",{"2":{"1252":1}}],["16436",{"2":{"176":1}}],["16438",{"2":{"160":1}}],["16423",{"2":{"160":1}}],["16441",{"2":{"160":1}}],["169",{"2":{"1252":2}}],["16992",{"2":{"176":1}}],["16996",{"2":{"176":1}}],["16990",{"2":{"176":1}}],["16997",{"2":{"160":1}}],["16949",{"2":{"176":1}}],["16941",{"2":{"160":1}}],["16932",{"2":{"176":1}}],["16939",{"2":{"160":1}}],["16974",{"2":{"160":1}}],["16958",{"2":{"160":1}}],["16951",{"2":{"160":2}}],["16957",{"2":{"160":1}}],["16915",{"2":{"160":1}}],["16961",{"2":{"160":1}}],["16960",{"2":{"160":1}}],["16926",{"2":{"160":1}}],["16909",{"2":{"160":1}}],["16810",{"2":{"176":1}}],["16800",{"2":{"176":1}}],["16806",{"2":{"160":1}}],["16879",{"2":{"176":1}}],["16875",{"2":{"160":1}}],["16874",{"2":{"160":1}}],["16871",{"2":{"160":1}}],["16865",{"2":{"160":1}}],["16863",{"2":{"160":1}}],["16869",{"2":{"160":1}}],["16827",{"2":{"160":1}}],["16892",{"2":{"160":1}}],["16891",{"2":{"160":1}}],["16859",{"2":{"160":2}}],["16843",{"2":{"160":1}}],["16778",{"2":{"176":1}}],["16770",{"2":{"160":1}}],["16773",{"2":{"160":1}}],["16716",{"2":{"160":1}}],["16718",{"2":{"160":1}}],["16705",{"2":{"160":1}}],["16706",{"2":{"160":1}}],["16702",{"2":{"160":1}}],["16723",{"2":{"160":1}}],["16728",{"2":{"160":1}}],["16782",{"2":{"160":1}}],["16785",{"2":{"160":1}}],["16783",{"2":{"160":1}}],["16738",{"2":{"160":1}}],["16737",{"2":{"160":1}}],["16732",{"2":{"160":1}}],["16689",{"2":{"236":1}}],["16681",{"2":{"160":1}}],["16699",{"2":{"199":1}}],["16669",{"2":{"176":1}}],["16668",{"2":{"173":1,"176":1}}],["16667",{"2":{"160":1}}],["16620",{"2":{"160":1}}],["16621",{"2":{"160":1}}],["16617",{"2":{"160":1}}],["16614",{"2":{"160":1}}],["16611",{"2":{"160":1}}],["16630",{"2":{"160":1}}],["16637",{"2":{"160":1}}],["16635",{"2":{"160":1}}],["16640",{"2":{"160":1}}],["16649",{"2":{"160":1}}],["16647",{"2":{"160":1}}],["16600",{"2":{"160":1}}],["16584",{"2":{"176":1}}],["16588",{"2":{"160":1}}],["16597",{"2":{"160":1}}],["16596",{"2":{"160":1}}],["16593",{"2":{"160":1}}],["16559",{"2":{"160":1}}],["16523",{"2":{"160":1}}],["16525",{"2":{"160":1}}],["16505",{"2":{"160":1}}],["16516",{"2":{"160":1}}],["16518",{"2":{"160":1}}],["16561",{"2":{"160":1}}],["16543",{"2":{"160":1}}],["16303",{"2":{"1252":1}}],["16300",{"2":{"149":1}}],["16384",{"2":{"692":2}}],["16384u",{"2":{"659":1}}],["16394",{"2":{"176":1}}],["16336",{"2":{"176":1}}],["16339",{"2":{"160":1}}],["16337",{"2":{"160":1}}],["16331",{"2":{"160":1}}],["16359",{"2":{"149":1}}],["16358",{"2":{"149":1}}],["16357",{"2":{"149":1}}],["16348",{"2":{"149":1}}],["16315",{"2":{"160":1}}],["16316",{"2":{"149":1}}],["16312",{"2":{"149":1}}],["16371",{"2":{"175":2,"176":1}}],["16370",{"2":{"160":1}}],["16378",{"2":{"149":1}}],["16376",{"2":{"149":1}}],["162",{"2":{"1176":1}}],["16269",{"2":{"160":1}}],["16266",{"2":{"160":1}}],["16268",{"2":{"149":1}}],["16292",{"2":{"149":1}}],["16290",{"2":{"149":1}}],["16276",{"2":{"149":1}}],["16277",{"2":{"149":1}}],["16230",{"2":{"149":1}}],["16208",{"2":{"149":1}}],["16287",{"2":{"176":1}}],["16282",{"2":{"149":1}}],["16280",{"2":{"149":1}}],["16257",{"2":{"160":1}}],["16251",{"2":{"160":1}}],["16256",{"2":{"149":1}}],["16252",{"2":{"149":1}}],["16254",{"2":{"149":1}}],["16215",{"2":{"149":1}}],["16217",{"2":{"149":1}}],["16228",{"2":{"149":1}}],["16222",{"2":{"149":1}}],["16225",{"2":{"149":1}}],["16221",{"2":{"149":1}}],["16220",{"2":{"149":2}}],["16188",{"2":{"149":1}}],["16181",{"2":{"149":1}}],["16185",{"2":{"149":1}}],["16163",{"2":{"176":1}}],["16168",{"2":{"149":1}}],["16167",{"2":{"149":1}}],["16166",{"2":{"149":1}}],["16162",{"2":{"149":1}}],["16157",{"2":{"149":1}}],["16135",{"2":{"149":1}}],["16134",{"2":{"149":1}}],["16128",{"2":{"149":1}}],["16127",{"2":{"149":1}}],["16114",{"2":{"160":1}}],["16116",{"2":{"149":1}}],["16113",{"2":{"149":1}}],["16112",{"2":{"149":1}}],["16107",{"2":{"149":1}}],["16109",{"2":{"149":1}}],["16108",{"2":{"149":1}}],["16102",{"2":{"149":1}}],["16100",{"2":{"149":1}}],["16190",{"2":{"149":1}}],["16038",{"2":{"160":1}}],["16032",{"2":{"149":1}}],["16039",{"2":{"149":1}}],["16000",{"2":{"1849":1}}],["16000000",{"2":{"514":1}}],["1600",{"2":{"1846":2,"1849":1}}],["16004",{"2":{"160":1}}],["16001",{"2":{"149":1}}],["16007",{"2":{"149":1}}],["16002",{"2":{"149":1}}],["16095",{"2":{"160":1}}],["16099",{"2":{"149":1}}],["16096",{"2":{"149":1}}],["16091",{"2":{"149":1}}],["16084",{"2":{"160":1}}],["16086",{"2":{"160":1}}],["16089",{"2":{"149":1}}],["16082",{"2":{"149":1}}],["16081",{"2":{"149":1}}],["16080",{"2":{"149":1}}],["16087",{"2":{"149":1}}],["16076",{"2":{"188":1,"191":1}}],["16075",{"2":{"149":1}}],["16072",{"2":{"149":1}}],["16070",{"2":{"149":1}}],["16054",{"2":{"149":1}}],["16059",{"2":{"149":1}}],["16053",{"2":{"149":1}}],["16050",{"2":{"149":1}}],["16051",{"2":{"149":1}}],["16044",{"2":{"149":1}}],["16041",{"2":{"149":1}}],["16040",{"2":{"149":1}}],["16068",{"2":{"160":1}}],["16067",{"2":{"149":1}}],["16063",{"2":{"149":1}}],["1602a",{"2":{"1589":1}}],["16027",{"2":{"149":1}}],["16026",{"2":{"149":1}}],["16028",{"2":{"149":1}}],["16025",{"2":{"149":1}}],["16023",{"2":{"149":1}}],["16020",{"2":{"149":1}}],["16017",{"2":{"149":1}}],["16016",{"2":{"149":1}}],["16015",{"2":{"149":1}}],["16",{"0":{"11":1,"166":1,"1290":1},"2":{"11":2,"63":1,"134":1,"149":1,"166":2,"176":1,"236":1,"351":1,"551":1,"601":2,"635":4,"669":2,"717":1,"723":1,"851":1,"854":2,"886":1,"888":2,"891":1,"922":2,"956":2,"990":2,"1022":1,"1056":1,"1090":1,"1226":1,"1227":2,"1290":5,"1332":1,"1336":1,"1405":1,"1440":1,"1445":2,"1451":2,"1452":1,"1515":1,"1578":1,"1591":1,"1594":2,"1632":2,"1635":3,"1648":1,"1725":2,"1730":2,"1793":2,"1803":1,"1804":2,"1805":4,"1807":3,"1816":1,"1820":1,"1836":1,"1883":3,"1946":2,"1950":1,"1954":2,"2093":1,"2103":1,"2105":1,"2142":1,"2181":1,"2230":1,"2330":1,"2332":1,"2353":17,"2365":3,"2371":2,"2380":3,"2401":1,"2406":1,"2411":1,"2413":1,"2492":1,"2575":3,"2576":2,"2577":1,"2596":1,"2688":4,"2695":6,"2708":1}}],["1",{"0":{"345":1,"537":1,"2166":1,"2320":1,"2431":1,"2457":1},"2":{"10":1,"14":1,"45":3,"90":2,"102":1,"105":2,"114":5,"120":2,"134":1,"149":1,"160":1,"168":1,"169":1,"172":1,"176":1,"184":1,"191":2,"195":1,"197":2,"199":2,"201":4,"211":6,"222":1,"231":1,"236":1,"247":1,"249":3,"259":1,"266":14,"272":2,"279":1,"286":1,"292":2,"313":4,"317":3,"350":2,"453":1,"463":1,"464":1,"465":2,"473":1,"499":1,"511":2,"529":1,"530":6,"534":6,"573":1,"598":1,"616":1,"633":1,"635":22,"636":1,"639":4,"641":3,"656":1,"659":1,"661":1,"666":1,"683":1,"684":2,"690":1,"701":2,"703":1,"757":2,"786":2,"788":1,"789":4,"818":2,"822":2,"850":4,"853":2,"854":2,"885":2,"887":2,"888":2,"919":2,"921":2,"922":2,"953":3,"955":1,"956":2,"987":2,"989":1,"990":2,"1021":4,"1024":4,"1055":4,"1058":4,"1089":2,"1091":1,"1092":4,"1126":1,"1136":1,"1145":2,"1181":1,"1214":1,"1215":1,"1224":1,"1230":1,"1239":1,"1252":5,"1279":2,"1290":3,"1319":1,"1325":4,"1332":10,"1336":4,"1344":1,"1354":1,"1361":1,"1384":1,"1387":1,"1396":2,"1399":2,"1405":1,"1406":5,"1427":1,"1435":2,"1457":2,"1466":16,"1467":7,"1491":1,"1495":1,"1497":1,"1506":1,"1509":1,"1510":2,"1518":1,"1530":2,"1533":3,"1546":2,"1547":1,"1548":1,"1549":3,"1553":7,"1556":3,"1559":1,"1560":2,"1562":1,"1564":1,"1570":1,"1573":2,"1576":3,"1577":5,"1578":1,"1579":1,"1587":1,"1594":2,"1604":1,"1634":2,"1635":3,"1638":2,"1655":2,"1668":1,"1670":1,"1715":2,"1717":2,"1722":2,"1725":6,"1728":1,"1729":2,"1744":1,"1793":32,"1801":4,"1803":2,"1804":1,"1805":9,"1807":4,"1817":1,"1821":3,"1822":2,"1842":1,"1849":5,"1851":1,"1855":1,"1868":1,"1877":2,"1878":1,"1883":3,"1905":3,"1907":13,"1910":4,"1911":1,"1912":2,"1923":4,"1940":1,"1946":6,"1949":1,"1952":2,"1958":1,"1971":1,"2036":7,"2038":3,"2042":1,"2043":1,"2044":6,"2051":2,"2059":1,"2060":1,"2097":1,"2105":1,"2107":1,"2115":1,"2128":2,"2143":1,"2147":1,"2148":4,"2150":1,"2152":3,"2153":2,"2155":16,"2157":1,"2167":4,"2168":1,"2169":1,"2170":1,"2171":1,"2174":1,"2179":1,"2183":1,"2217":1,"2228":1,"2249":1,"2255":13,"2269":1,"2295":1,"2299":8,"2300":8,"2311":12,"2319":1,"2353":3,"2355":9,"2363":4,"2365":3,"2367":1,"2371":32,"2372":4,"2380":3,"2386":2,"2391":2,"2394":2,"2401":2,"2402":7,"2407":1,"2411":1,"2421":1,"2472":1,"2477":8,"2491":2,"2508":1,"2524":1,"2530":1,"2533":1,"2534":1,"2556":1,"2559":16,"2566":1,"2571":1,"2574":1,"2576":10,"2585":1,"2588":4,"2592":1,"2594":1,"2596":3,"2597":2,"2600":2,"2615":10,"2619":1,"2645":1,"2660":1,"2676":1,"2677":2,"2682":1,"2685":1,"2686":3,"2688":1,"2694":2,"2695":1,"2696":2,"2697":1,"2699":3,"2727":1,"2728":1,"2734":1,"2735":1,"2736":1,"2745":1,"2748":1,"2757":1}}],["=+",{"2":{"1417":1,"1419":1,"1428":1}}],["=>",{"2":{"196":4,"1680":4,"1836":1}}],["=helix",{"2":{"55":4}}],["=======",{"2":{"2477":2}}],["==========================",{"2":{"660":1}}],["=================================================",{"2":{"660":1}}],["============================",{"2":{"660":1}}],["=====",{"2":{"660":1}}],["==",{"2":{"13":1,"90":4,"194":1,"476":2,"502":1,"660":1,"1254":2,"1300":2,"1302":1,"1501":1,"1518":1,"1530":1,"1555":1,"1560":4,"1670":1,"1815":1,"1858":1,"1865":1,"1877":2,"1923":5,"1938":1,"1959":1,"2139":1,"2168":1,"2169":3,"2170":2,"2171":3,"2228":4,"2491":1,"2577":1,"2587":1,"2588":1,"2593":1,"2594":1,"2596":1,"2598":1,"2740":1}}],["=",{"0":{"156":1,"167":1,"195":1,"245":1},"2":{"10":1,"28":1,"49":1,"87":1,"88":3,"104":3,"118":9,"119":1,"127":3,"134":1,"166":1,"176":4,"199":1,"201":1,"202":1,"232":1,"234":7,"235":1,"247":1,"266":2,"272":2,"292":2,"350":1,"416":1,"417":1,"438":2,"465":1,"470":1,"473":1,"474":1,"475":2,"508":2,"510":2,"514":5,"516":2,"530":3,"533":1,"534":2,"557":1,"565":2,"566":3,"570":1,"588":4,"596":1,"597":1,"598":1,"631":1,"643":1,"655":1,"656":14,"660":2,"661":4,"665":1,"669":1,"681":5,"688":4,"690":1,"693":1,"700":1,"730":1,"734":2,"756":1,"760":2,"785":1,"792":2,"817":1,"822":2,"849":1,"857":2,"884":1,"891":2,"918":1,"925":2,"952":1,"959":2,"986":1,"993":2,"1020":1,"1027":2,"1054":1,"1061":2,"1088":1,"1095":2,"1124":1,"1127":2,"1130":2,"1144":1,"1148":2,"1175":1,"1196":1,"1213":1,"1217":4,"1219":1,"1220":1,"1221":1,"1222":1,"1223":1,"1245":1,"1291":1,"1303":3,"1314":1,"1329":1,"1330":1,"1332":4,"1344":4,"1347":2,"1349":1,"1359":6,"1363":2,"1375":6,"1378":1,"1383":1,"1384":1,"1385":4,"1386":1,"1390":1,"1391":2,"1393":1,"1394":1,"1396":2,"1398":1,"1401":1,"1404":1,"1405":1,"1413":1,"1439":1,"1440":1,"1446":8,"1448":2,"1455":1,"1461":1,"1462":1,"1463":1,"1464":1,"1491":2,"1493":3,"1495":1,"1500":1,"1501":1,"1508":4,"1509":2,"1510":3,"1511":14,"1518":4,"1523":3,"1528":1,"1532":1,"1534":2,"1547":1,"1548":2,"1553":1,"1555":1,"1557":1,"1559":6,"1560":1,"1570":3,"1590":1,"1594":1,"1631":2,"1633":1,"1634":7,"1652":1,"1657":1,"1663":2,"1665":7,"1666":7,"1668":11,"1675":1,"1679":1,"1686":6,"1717":1,"1718":5,"1719":1,"1724":1,"1725":3,"1728":2,"1729":5,"1730":2,"1787":1,"1792":2,"1800":1,"1807":3,"1812":1,"1813":3,"1814":1,"1815":5,"1816":1,"1821":4,"1822":4,"1825":1,"1830":2,"1832":1,"1834":1,"1835":1,"1836":1,"1837":1,"1841":2,"1846":1,"1847":1,"1848":1,"1849":5,"1850":1,"1857":6,"1858":7,"1859":14,"1861":7,"1862":4,"1876":1,"1877":1,"1878":3,"1882":1,"1904":3,"1905":4,"1906":3,"1907":13,"1916":1,"1919":1,"1923":14,"1930":1,"1933":1,"1935":1,"1938":1,"1943":1,"1945":1,"1946":3,"1949":2,"1952":5,"1954":2,"1958":7,"1959":6,"2032":3,"2040":7,"2042":6,"2044":4,"2063":4,"2068":1,"2073":1,"2103":1,"2111":1,"2121":2,"2130":7,"2137":2,"2138":1,"2139":5,"2145":2,"2146":1,"2147":5,"2148":5,"2149":2,"2150":1,"2154":1,"2155":1,"2157":1,"2161":1,"2164":4,"2166":2,"2167":4,"2168":11,"2169":11,"2170":3,"2171":7,"2172":1,"2178":1,"2181":6,"2182":5,"2225":1,"2228":13,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2245":1,"2247":1,"2249":1,"2263":1,"2264":2,"2300":3,"2305":1,"2347":1,"2355":3,"2388":1,"2394":2,"2402":6,"2406":1,"2407":1,"2408":1,"2423":1,"2513":3,"2522":1,"2530":2,"2542":1,"2565":1,"2566":2,"2573":1,"2576":11,"2577":31,"2579":3,"2581":1,"2587":6,"2588":6,"2589":6,"2590":2,"2591":2,"2594":6,"2595":6,"2596":14,"2597":6,"2598":6,"2599":6,"2600":9,"2606":2,"2612":1,"2676":1,"2677":1,"2685":1,"2689":1,"2705":9,"2707":1,"2710":1,"2728":6,"2747":2}}],["2d",{"2":{"2705":1}}],["2bpp",{"2":{"2596":2}}],["2c1219002b135937334d4e00",{"2":{"2353":1}}],["2t",{"2":{"2105":1}}],["2=4",{"2":{"1822":1}}],["2ms",{"2":{"1821":1}}],["2>",{"2":{"1677":1,"2738":1}}],["2x2",{"2":{"2311":1}}],["2x1800",{"2":{"2259":1}}],["2x",{"2":{"1576":1,"1577":1,"1842":2,"2117":2}}],["2x4",{"2":{"114":1,"211":1}}],["2v",{"2":{"1571":1}}],["2u",{"2":{"1252":2,"2619":1}}],["2kro",{"2":{"2659":1}}],["2kω",{"2":{"1126":1}}],["2k1",{"2":{"853":1,"887":1,"921":1}}],["2k",{"2":{"786":2,"788":1,"789":6,"854":2,"888":2,"922":2,"956":2,"990":2,"1021":2,"1024":6,"1055":2,"1058":6,"1089":2,"1092":6,"1842":1,"2120":1}}],["2key",{"2":{"143":2}}],["2️⃣",{"2":{"656":3}}],["2a03",{"2":{"629":2}}],["2ffb",{"2":{"629":1,"2343":1}}],["2ff9",{"2":{"629":1,"2343":1}}],["2ff4",{"2":{"629":1,"2343":1,"2450":1,"2453":2}}],["2ff3",{"2":{"629":1,"2343":1}}],["2ff0",{"2":{"629":1}}],["2fef",{"2":{"629":1}}],["23x",{"2":{"2528":1}}],["239",{"2":{"1815":1,"2139":1,"2577":9}}],["239a",{"2":{"629":3,"2344":3}}],["23954",{"2":{"277":1}}],["23945",{"2":{"277":1}}],["23999",{"2":{"277":1}}],["23967",{"2":{"277":1}}],["23963",{"2":{"277":1}}],["23987",{"2":{"277":1}}],["23985",{"2":{"277":1}}],["23983",{"2":{"277":1}}],["23981",{"2":{"277":1}}],["23980",{"2":{"277":1}}],["23923",{"2":{"277":1}}],["23925",{"2":{"277":1}}],["23924",{"2":{"277":1}}],["23917",{"2":{"277":1}}],["23911",{"2":{"277":1}}],["23979",{"2":{"277":1}}],["23975",{"2":{"277":1}}],["23901",{"2":{"277":1}}],["23857",{"2":{"277":1}}],["23818",{"2":{"277":1}}],["23896",{"2":{"277":1}}],["23894",{"2":{"277":1}}],["23883",{"2":{"277":1}}],["23885",{"2":{"277":1}}],["23881",{"2":{"277":1}}],["2370",{"2":{"375":2}}],["23709",{"2":{"266":1}}],["23796",{"2":{"277":1}}],["23793",{"2":{"266":1}}],["23792",{"2":{"266":1}}],["23790",{"2":{"266":1}}],["23782",{"2":{"277":1}}],["23789",{"2":{"266":1}}],["23788",{"2":{"266":1}}],["23787",{"2":{"266":1}}],["23786",{"2":{"266":1}}],["23785",{"2":{"266":1}}],["23784",{"2":{"266":1}}],["23783",{"2":{"266":1}}],["23781",{"2":{"266":1}}],["23780",{"2":{"266":1}}],["23779",{"2":{"266":1}}],["23778",{"2":{"266":1}}],["23774",{"2":{"266":1}}],["23773",{"2":{"266":1}}],["23772",{"2":{"266":1}}],["23771",{"2":{"266":1}}],["23770",{"2":{"266":1}}],["23765",{"2":{"277":1}}],["23769",{"2":{"266":1}}],["23768",{"2":{"266":1}}],["23767",{"2":{"266":1}}],["23764",{"2":{"266":1}}],["23763",{"2":{"266":1}}],["23762",{"2":{"266":1}}],["23760",{"2":{"266":1}}],["23759",{"2":{"266":1}}],["23758",{"2":{"266":1}}],["23757",{"2":{"266":1}}],["23754",{"2":{"266":1}}],["23751",{"2":{"266":1}}],["23750",{"2":{"266":1}}],["23749",{"2":{"266":1}}],["23747",{"2":{"266":1}}],["23746",{"2":{"266":1}}],["23745",{"2":{"266":1}}],["23719",{"2":{"266":1}}],["23716",{"2":{"266":1}}],["23714",{"2":{"266":1}}],["23712",{"2":{"266":1}}],["23726",{"2":{"266":1}}],["23266",{"2":{"266":1}}],["23264",{"2":{"266":1}}],["23222",{"2":{"266":1}}],["23221",{"2":{"266":1}}],["23206",{"2":{"266":1}}],["23202",{"2":{"266":1}}],["23292",{"2":{"266":1}}],["23299",{"2":{"266":1}}],["23294",{"2":{"266":1}}],["23293",{"2":{"266":1}}],["23297",{"2":{"266":1}}],["23289",{"2":{"266":1}}],["23288",{"2":{"266":1}}],["23287",{"2":{"266":1}}],["23286",{"2":{"266":1}}],["23285",{"2":{"266":1}}],["23277",{"2":{"266":1}}],["23276",{"2":{"266":1}}],["23273",{"2":{"266":1}}],["23259",{"2":{"266":1}}],["23246",{"2":{"266":1}}],["23248",{"2":{"266":1}}],["23247",{"2":{"266":1}}],["23236",{"2":{"266":1}}],["23217",{"2":{"266":1}}],["23642",{"2":{"277":1}}],["23692",{"2":{"277":1}}],["23694",{"2":{"266":1}}],["23697",{"2":{"266":1}}],["23691",{"2":{"266":1}}],["23685",{"2":{"266":1}}],["23668",{"2":{"266":1}}],["23663",{"2":{"266":1}}],["23630",{"2":{"277":1}}],["23635",{"2":{"266":1}}],["23633",{"2":{"266":1}}],["23627",{"2":{"266":1}}],["23624",{"2":{"266":1}}],["23622",{"2":{"266":1}}],["23616",{"2":{"266":1}}],["23614",{"2":{"266":1}}],["23612",{"2":{"266":1}}],["23609",{"2":{"266":1}}],["23607",{"2":{"266":1}}],["23606",{"2":{"266":1}}],["23601",{"2":{"266":1}}],["23673",{"2":{"266":1}}],["23650",{"2":{"277":1}}],["23655",{"2":{"266":1}}],["23652",{"2":{"266":1}}],["23658",{"2":{"266":1}}],["23653",{"2":{"266":1}}],["23657",{"2":{"266":1}}],["23656",{"2":{"266":1}}],["23598",{"2":{"266":1}}],["23599",{"2":{"266":1}}],["23593",{"2":{"266":1}}],["23591",{"2":{"266":1}}],["23590",{"2":{"266":1}}],["23589",{"2":{"266":1}}],["23588",{"2":{"266":1}}],["23585",{"2":{"266":1}}],["23576",{"2":{"266":1}}],["23573",{"2":{"266":1}}],["23569",{"2":{"266":1}}],["23567",{"2":{"266":1}}],["23566",{"2":{"266":1}}],["23565",{"2":{"266":1}}],["23564",{"2":{"266":1}}],["23562",{"2":{"266":1}}],["23557",{"2":{"266":1}}],["23556",{"2":{"266":1}}],["23547",{"2":{"266":1}}],["23542",{"2":{"266":1}}],["23541",{"2":{"266":1}}],["23540",{"2":{"266":1}}],["23534",{"2":{"266":1}}],["23533",{"2":{"266":1}}],["23532",{"2":{"266":1}}],["23530",{"2":{"266":1}}],["23520",{"2":{"277":1}}],["23529",{"2":{"266":1}}],["23525",{"2":{"266":1}}],["23524",{"2":{"266":1}}],["23522",{"2":{"266":1}}],["23516",{"2":{"266":1}}],["23515",{"2":{"266":1}}],["23514",{"2":{"266":1}}],["23512",{"2":{"266":1}}],["23511",{"2":{"266":1}}],["23488",{"2":{"266":1}}],["23486",{"2":{"266":1}}],["23462",{"2":{"266":1}}],["23461",{"2":{"266":1}}],["23460",{"2":{"266":1}}],["23463",{"2":{"266":1}}],["23453",{"2":{"266":1}}],["23452",{"2":{"266":1}}],["23455",{"2":{"266":1}}],["2341",{"2":{"629":2,"2344":2}}],["23419",{"2":{"266":1}}],["23418",{"2":{"266":1}}],["23412",{"2":{"266":1}}],["23406",{"2":{"266":1}}],["23403",{"2":{"266":1}}],["23402",{"2":{"266":1}}],["23405",{"2":{"266":1}}],["23407",{"2":{"266":1}}],["23448",{"2":{"266":1}}],["23437",{"2":{"277":1}}],["23439",{"2":{"277":1}}],["23436",{"2":{"266":1}}],["23434",{"2":{"266":1}}],["23432",{"2":{"266":1}}],["23425",{"2":{"266":1}}],["23424",{"2":{"266":1}}],["23423",{"2":{"266":1}}],["23421",{"2":{"266":1}}],["23426",{"2":{"266":1}}],["23422",{"2":{"266":1}}],["23355",{"2":{"277":1}}],["23357",{"2":{"266":1}}],["23341",{"2":{"277":1}}],["23346",{"2":{"266":1}}],["23335",{"2":{"266":1}}],["23330",{"2":{"266":1}}],["23399",{"2":{"266":1}}],["23396",{"2":{"266":1}}],["23395",{"2":{"266":1}}],["23397",{"2":{"266":1}}],["23394",{"2":{"266":1}}],["23393",{"2":{"266":1}}],["23390",{"2":{"266":1}}],["23384",{"2":{"266":1}}],["23379",{"2":{"266":1}}],["23378",{"2":{"266":1}}],["23377",{"2":{"266":1}}],["23376",{"2":{"266":1}}],["23373",{"2":{"266":1}}],["23371",{"2":{"266":1}}],["23375",{"2":{"266":1}}],["23367",{"2":{"266":1}}],["23361",{"2":{"266":1}}],["23360",{"2":{"266":1}}],["23311",{"2":{"266":1}}],["23309",{"2":{"266":1}}],["23307",{"2":{"266":1}}],["23305",{"2":{"266":1}}],["23302",{"2":{"266":1}}],["23329",{"2":{"266":1}}],["23324",{"2":{"266":1}}],["23321",{"2":{"266":1}}],["23322",{"2":{"266":1}}],["23188",{"2":{"266":1}}],["23185",{"2":{"266":1}}],["23179",{"2":{"266":1}}],["2316",{"2":{"2469":1}}],["23169",{"2":{"266":1}}],["23162",{"2":{"266":1}}],["23144",{"2":{"266":1}}],["23143",{"2":{"249":1}}],["23111",{"2":{"266":1}}],["23116",{"2":{"249":1}}],["23112",{"2":{"249":1}}],["23110",{"2":{"249":1}}],["23119",{"2":{"249":1}}],["23155",{"2":{"249":1}}],["23129",{"2":{"249":1}}],["23127",{"2":{"249":1}}],["23121",{"2":{"249":1}}],["23128",{"2":{"249":1}}],["23106",{"2":{"249":1}}],["23104",{"2":{"249":1}}],["23102",{"2":{"249":1}}],["23109",{"2":{"249":1}}],["23108",{"2":{"249":1}}],["23",{"2":{"249":1,"351":1,"556":1,"854":1,"922":1,"990":1,"1024":1,"1058":1,"1092":1,"1405":1,"1440":3,"1578":1,"1635":3,"1836":22,"1883":3,"2365":3,"2380":3,"2594":1}}],["23038",{"2":{"266":1}}],["23037",{"2":{"249":1}}],["230400",{"2":{"1136":1}}],["23048",{"2":{"249":1}}],["23047",{"2":{"249":1}}],["23049",{"2":{"249":1}}],["23097",{"2":{"277":1}}],["23091",{"2":{"277":1}}],["23096",{"2":{"249":1}}],["23095",{"2":{"249":1}}],["23094",{"2":{"249":1}}],["23092",{"2":{"249":1}}],["23093",{"2":{"249":1}}],["23084",{"2":{"249":1}}],["23083",{"2":{"249":1}}],["23081",{"2":{"249":1}}],["23085",{"2":{"249":1}}],["23076",{"2":{"266":1}}],["23077",{"2":{"249":1}}],["23074",{"2":{"249":1}}],["23073",{"2":{"249":1}}],["23063",{"2":{"249":1}}],["23067",{"2":{"249":1}}],["23029",{"2":{"249":1}}],["23000",{"2":{"249":1}}],["23002",{"2":{"249":1}}],["23055",{"2":{"266":1}}],["23059",{"2":{"249":1}}],["23056",{"2":{"249":1}}],["23058",{"2":{"249":1}}],["23052",{"2":{"249":1}}],["247",{"2":{"1815":1,"2139":1}}],["248",{"2":{"1275":1,"2263":1}}],["24lc256",{"2":{"684":2}}],["24lc128",{"2":{"684":3}}],["24lc64",{"2":{"684":3}}],["24lc32a",{"2":{"176":1,"684":3}}],["24xx",{"0":{"2291":1},"2":{"681":1,"684":1}}],["24316",{"2":{"277":1}}],["24322",{"2":{"277":1}}],["24253",{"2":{"277":1}}],["24238",{"2":{"277":1}}],["24237",{"2":{"277":1}}],["24236",{"2":{"277":1}}],["24233",{"2":{"277":1}}],["24232",{"2":{"277":1}}],["24231",{"2":{"277":1}}],["24234",{"2":{"277":1}}],["24215",{"2":{"277":1}}],["24240",{"2":{"277":1}}],["24201",{"2":{"277":1}}],["24200",{"2":{"277":1}}],["24203",{"2":{"277":1}}],["24202",{"2":{"277":1}}],["24116",{"2":{"277":1}}],["24191",{"2":{"277":1}}],["24192",{"2":{"277":1}}],["24185",{"2":{"277":1}}],["24180",{"2":{"277":1}}],["24163",{"2":{"277":1}}],["24155",{"2":{"277":1}}],["24146",{"2":{"277":1}}],["24143",{"2":{"277":1}}],["24142",{"2":{"277":1}}],["24136",{"2":{"277":1}}],["24133",{"2":{"277":1}}],["24127",{"2":{"277":1}}],["24122",{"2":{"277":1}}],["24120",{"2":{"277":1}}],["240px",{"2":{"2577":1}}],["240",{"2":{"2576":3}}],["240x80",{"2":{"2576":2}}],["240x320",{"2":{"2573":2,"2576":1,"2577":4}}],["240x240",{"2":{"2573":2,"2576":1,"2577":1}}],["24092",{"2":{"277":1}}],["24094",{"2":{"277":1}}],["24086",{"2":{"277":1}}],["24087",{"2":{"277":1}}],["24068",{"2":{"277":1}}],["24064",{"2":{"277":1}}],["24060",{"2":{"277":1}}],["24032",{"2":{"277":1}}],["24017",{"2":{"277":1}}],["24016",{"2":{"277":1}}],["24011",{"2":{"277":1}}],["24010",{"2":{"277":1}}],["24054",{"2":{"277":1}}],["24055",{"2":{"277":1}}],["24051",{"2":{"277":1}}],["24049",{"2":{"277":1}}],["24020",{"2":{"277":1}}],["2400",{"2":{"1201":1}}],["24009",{"2":{"277":1}}],["24008",{"2":{"277":1}}],["24006",{"2":{"277":1}}],["24003",{"2":{"277":1}}],["24001",{"2":{"277":1}}],["24",{"2":{"238":1,"339":1,"340":2,"351":1,"1087":1,"1440":2,"1578":1,"1635":3,"1807":1,"1820":1,"1836":6,"1883":3,"1945":1,"2147":1,"2365":3,"2380":3,"2593":1}}],["22947",{"2":{"277":1}}],["22948",{"2":{"249":1}}],["22942",{"2":{"249":1}}],["22934",{"2":{"249":1}}],["22932",{"2":{"249":1}}],["22926",{"2":{"266":1}}],["22922",{"2":{"249":1}}],["22921",{"2":{"249":1}}],["22920",{"2":{"249":1}}],["22997",{"2":{"249":1}}],["22998",{"2":{"249":1}}],["22992",{"2":{"249":1}}],["22991",{"2":{"249":1}}],["22917",{"2":{"249":1}}],["22911",{"2":{"249":1}}],["22910",{"2":{"249":1}}],["22901",{"2":{"249":1}}],["22909",{"2":{"249":1}}],["22908",{"2":{"249":1}}],["22905",{"2":{"249":1}}],["22985",{"2":{"249":1}}],["22971",{"2":{"249":1}}],["22979",{"2":{"249":1}}],["22975",{"2":{"249":1}}],["22970",{"2":{"249":1}}],["22967",{"2":{"266":1}}],["22962",{"2":{"266":1}}],["22969",{"2":{"249":1}}],["22966",{"2":{"249":1}}],["22961",{"2":{"249":1}}],["22953",{"2":{"249":1}}],["22955",{"2":{"249":1}}],["22951",{"2":{"249":1}}],["22857",{"2":{"249":1}}],["22851",{"2":{"249":1}}],["22859",{"2":{"249":1}}],["22895",{"2":{"266":1}}],["22891",{"2":{"266":1}}],["22897",{"2":{"249":1}}],["22896",{"2":{"249":1}}],["22899",{"2":{"249":1}}],["22898",{"2":{"249":1}}],["22819",{"2":{"249":1}}],["22811",{"2":{"249":1}}],["22814",{"2":{"249":1}}],["22884",{"2":{"249":1}}],["22873",{"2":{"249":1}}],["22879",{"2":{"249":1}}],["22878",{"2":{"249":1}}],["22872",{"2":{"249":1}}],["22866",{"2":{"249":1}}],["22864",{"2":{"249":1}}],["22863",{"2":{"249":1}}],["22862",{"2":{"249":1}}],["22861",{"2":{"249":1}}],["22860",{"2":{"249":1}}],["22869",{"2":{"249":1}}],["22865",{"2":{"249":1}}],["22832",{"2":{"249":1}}],["22839",{"2":{"249":1}}],["22830",{"2":{"249":1}}],["22829",{"2":{"249":1}}],["22823",{"2":{"249":1}}],["22826",{"2":{"249":1}}],["22825",{"2":{"249":1}}],["22824",{"2":{"249":1}}],["22809",{"2":{"249":1}}],["22802",{"2":{"249":1}}],["22808",{"2":{"249":1}}],["22807",{"2":{"249":1}}],["22806",{"2":{"249":1}}],["22801",{"2":{"249":1}}],["22803",{"2":{"249":1}}],["22800",{"2":{"249":1}}],["22731",{"2":{"266":1}}],["22736",{"2":{"249":1}}],["22799",{"2":{"249":1}}],["22796",{"2":{"249":1}}],["22798",{"2":{"249":1}}],["22797",{"2":{"249":1}}],["22792",{"2":{"249":1}}],["22795",{"2":{"249":1}}],["22771",{"2":{"249":1}}],["22775",{"2":{"249":1}}],["22764",{"2":{"249":1}}],["22763",{"2":{"249":1}}],["22762",{"2":{"249":1}}],["22760",{"2":{"249":1}}],["22759",{"2":{"249":1}}],["22753",{"2":{"249":1}}],["22750",{"2":{"249":1}}],["22741",{"2":{"266":1}}],["22745",{"2":{"249":1}}],["22743",{"2":{"249":1}}],["22740",{"2":{"249":1}}],["22742",{"2":{"249":1}}],["22721",{"2":{"249":1}}],["22726",{"2":{"249":1}}],["22719",{"2":{"249":1}}],["22715",{"2":{"249":1}}],["22714",{"2":{"249":1}}],["22712",{"2":{"249":1}}],["22710",{"2":{"249":1}}],["22709",{"2":{"249":1}}],["22708",{"2":{"249":1}}],["22701",{"2":{"249":1}}],["22695",{"2":{"266":1}}],["22662",{"2":{"266":1}}],["22649",{"2":{"249":1}}],["22652",{"2":{"249":1}}],["22651",{"2":{"249":1}}],["22656",{"2":{"249":1}}],["22603",{"2":{"249":1}}],["22688",{"2":{"249":1}}],["22682",{"2":{"249":1}}],["22681",{"2":{"249":1}}],["22680",{"2":{"249":1}}],["22670",{"2":{"277":1}}],["22675",{"2":{"249":1}}],["22674",{"2":{"249":1}}],["22673",{"2":{"249":1}}],["22638",{"2":{"249":1}}],["22637",{"2":{"249":1}}],["22636",{"2":{"249":1}}],["22635",{"2":{"249":1}}],["22628",{"2":{"249":1}}],["22625",{"2":{"249":1}}],["22620",{"2":{"249":1}}],["22617",{"2":{"249":1}}],["22579",{"2":{"249":1}}],["22578",{"2":{"249":1}}],["22577",{"2":{"249":1}}],["22575",{"2":{"249":1}}],["22570",{"2":{"249":1}}],["22558",{"2":{"249":1}}],["22560",{"2":{"249":1}}],["22562",{"2":{"249":1}}],["22530",{"2":{"249":1}}],["22518",{"2":{"249":1}}],["22546",{"2":{"249":1}}],["22543",{"2":{"249":1}}],["22542",{"2":{"249":1}}],["22549",{"2":{"236":1}}],["22548",{"2":{"236":1}}],["22545",{"2":{"236":1}}],["22544",{"2":{"236":1}}],["22526",{"2":{"249":1}}],["22529",{"2":{"249":1}}],["22523",{"2":{"236":1}}],["22528",{"2":{"236":1}}],["22525",{"2":{"236":1}}],["22",{"2":{"236":1,"249":1,"340":1,"351":1,"1405":1,"1578":1,"1635":3,"1836":4,"1883":3,"2365":3,"2380":3}}],["224x64",{"2":{"1950":1}}],["224",{"2":{"1725":4,"1946":4,"2688":1,"2695":1}}],["22489",{"2":{"277":1}}],["22480",{"2":{"236":1}}],["22474",{"2":{"249":1}}],["22471",{"2":{"236":1}}],["22419",{"2":{"249":1}}],["22497",{"2":{"236":1}}],["22437",{"2":{"236":1}}],["22435",{"2":{"236":1}}],["22434",{"2":{"236":1}}],["22436",{"2":{"236":1}}],["22469",{"2":{"236":1}}],["22446",{"2":{"236":1}}],["22444",{"2":{"236":1}}],["22448",{"2":{"236":1}}],["22445",{"2":{"236":1}}],["22423",{"2":{"236":1}}],["22401",{"2":{"249":1}}],["22403",{"2":{"236":1}}],["22400",{"2":{"236":1}}],["223",{"2":{"1815":1,"1817":1,"2139":1,"2141":1}}],["22396",{"2":{"1287":3}}],["22398",{"2":{"236":1}}],["22374",{"2":{"249":1}}],["22379",{"2":{"236":1}}],["22358",{"2":{"249":1}}],["22357",{"2":{"236":1}}],["22341",{"2":{"249":1}}],["22342",{"2":{"236":1}}],["22332",{"2":{"236":1}}],["22368",{"2":{"249":1}}],["22364",{"2":{"236":1}}],["22366",{"2":{"236":1}}],["22363",{"2":{"236":1}}],["22369",{"2":{"236":1}}],["22365",{"2":{"236":1}}],["22384",{"2":{"249":1}}],["22383",{"2":{"236":1}}],["22381",{"2":{"236":1}}],["22380",{"2":{"236":1}}],["22328",{"2":{"236":1}}],["22325",{"2":{"236":1}}],["22324",{"2":{"236":1}}],["22323",{"2":{"236":1}}],["22321",{"2":{"236":1}}],["22315",{"2":{"249":1}}],["22314",{"2":{"249":1}}],["22312",{"2":{"236":1}}],["22310",{"2":{"236":1}}],["22313",{"2":{"236":1}}],["22311",{"2":{"236":1}}],["22303",{"2":{"249":1}}],["22304",{"2":{"249":1}}],["22305",{"2":{"236":1}}],["22309",{"2":{"236":1}}],["22308",{"2":{"236":1}}],["22201",{"2":{"249":1}}],["22200",{"2":{"236":1}}],["22281",{"2":{"249":1}}],["22280",{"2":{"236":1}}],["22276",{"2":{"249":1}}],["22297",{"2":{"236":1}}],["22239",{"2":{"236":1}}],["22235",{"2":{"236":1}}],["22236",{"2":{"236":1}}],["22242",{"2":{"236":1}}],["22248",{"2":{"236":1}}],["22265",{"2":{"266":1}}],["22263",{"2":{"249":1}}],["22268",{"2":{"236":1}}],["22264",{"2":{"236":1}}],["22267",{"2":{"236":1}}],["22221",{"2":{"236":1}}],["22222",{"2":{"236":1}}],["22251",{"2":{"266":1}}],["22256",{"2":{"236":1}}],["22253",{"2":{"236":1}}],["22212",{"2":{"236":1}}],["22135",{"2":{"266":1}}],["22133",{"2":{"236":1}}],["22114",{"2":{"249":1}}],["22117",{"2":{"236":1}}],["22185",{"2":{"249":1}}],["22188",{"2":{"236":1}}],["22108",{"2":{"236":1}}],["22106",{"2":{"236":1}}],["22105",{"2":{"236":1}}],["22152",{"2":{"236":1}}],["22151",{"2":{"236":1}}],["22149",{"2":{"236":1}}],["22148",{"2":{"236":1}}],["22145",{"2":{"236":1}}],["22144",{"2":{"236":1}}],["22193",{"2":{"236":1}}],["22170",{"2":{"236":1}}],["22163",{"2":{"236":1}}],["22125",{"2":{"236":1}}],["22122",{"2":{"236":1}}],["22121",{"2":{"236":1}}],["22129",{"2":{"236":1}}],["22126",{"2":{"236":1}}],["22123",{"2":{"236":1}}],["220",{"2":{"2731":1,"2732":1}}],["22050u",{"2":{"659":1}}],["22021",{"2":{"236":1}}],["22025",{"2":{"236":1}}],["22082",{"2":{"249":1}}],["22089",{"2":{"236":1}}],["22088",{"2":{"236":1}}],["22087",{"2":{"236":1}}],["22085",{"2":{"236":1}}],["22084",{"2":{"236":1}}],["22068",{"2":{"236":1}}],["22041",{"2":{"236":1}}],["22049",{"2":{"236":1}}],["22034",{"2":{"236":1}}],["22013",{"2":{"236":1}}],["22011",{"2":{"236":1}}],["22010",{"2":{"236":1}}],["22017",{"2":{"236":1}}],["22091",{"2":{"249":1}}],["22099",{"2":{"236":1}}],["22090",{"2":{"236":1}}],["22072",{"2":{"236":1}}],["22073",{"2":{"236":1}}],["22074",{"2":{"236":1}}],["22071",{"2":{"236":1}}],["22009",{"2":{"236":1}}],["22008",{"2":{"236":1}}],["22007",{"2":{"236":1}}],["22006",{"2":{"236":1}}],["22004",{"2":{"236":1}}],["21944",{"2":{"249":1}}],["21948",{"2":{"236":1}}],["21926",{"2":{"236":1}}],["21929",{"2":{"236":1}}],["21939",{"2":{"236":2}}],["21938",{"2":{"236":1}}],["21996",{"2":{"236":1}}],["21995",{"2":{"236":1}}],["21994",{"2":{"236":1}}],["21993",{"2":{"236":1}}],["21991",{"2":{"236":1}}],["21981",{"2":{"236":1}}],["21986",{"2":{"236":1}}],["21975",{"2":{"236":1}}],["21979",{"2":{"236":1}}],["21978",{"2":{"236":1}}],["21977",{"2":{"236":1}}],["21966",{"2":{"236":1}}],["21964",{"2":{"236":1}}],["21960",{"2":{"236":1}}],["21918",{"2":{"236":1}}],["21909",{"2":{"236":1}}],["21906",{"2":{"236":1}}],["21908",{"2":{"236":1}}],["21905",{"2":{"236":1}}],["21904",{"2":{"236":1}}],["21903",{"2":{"236":1}}],["21883",{"2":{"249":1}}],["21825",{"2":{"236":1}}],["21827",{"2":{"222":1}}],["21897",{"2":{"236":1}}],["21898",{"2":{"236":1}}],["21892",{"2":{"236":1}}],["21891",{"2":{"236":1}}],["21890",{"2":{"236":1}}],["21879",{"2":{"236":1}}],["21874",{"2":{"236":1}}],["21878",{"2":{"236":1}}],["21875",{"2":{"236":1}}],["21866",{"2":{"236":1}}],["21865",{"2":{"236":1}}],["21861",{"2":{"236":1}}],["21859",{"2":{"236":1}}],["21804",{"2":{"236":1}}],["21800",{"2":{"222":1}}],["21842",{"2":{"222":1}}],["21830",{"2":{"222":1}}],["21817",{"2":{"222":1}}],["21815",{"2":{"222":1}}],["21775",{"2":{"249":1}}],["21770",{"2":{"249":1}}],["21777",{"2":{"249":1}}],["21773",{"2":{"222":1}}],["21721",{"2":{"249":1}}],["21727",{"2":{"222":1}}],["21767",{"2":{"236":1}}],["21744",{"2":{"236":1}}],["21740",{"2":{"236":1}}],["21792",{"2":{"222":1}}],["21757",{"2":{"222":1}}],["21751",{"2":{"222":1}}],["21717",{"2":{"236":1}}],["21711",{"2":{"236":1}}],["21718",{"2":{"222":1}}],["21714",{"2":{"222":1}}],["21710",{"2":{"222":1}}],["21704",{"2":{"222":1}}],["21709",{"2":{"222":1}}],["21708",{"2":{"222":1}}],["21703",{"2":{"222":1}}],["216",{"2":{"664":1,"2575":1}}],["21695",{"2":{"266":1}}],["21671",{"2":{"236":1}}],["21676",{"2":{"222":1}}],["21687",{"2":{"249":1}}],["21684",{"2":{"236":1}}],["21688",{"2":{"236":1}}],["21682",{"2":{"222":1}}],["21667",{"2":{"236":1}}],["21662",{"2":{"236":1}}],["21664",{"2":{"236":1}}],["21663",{"2":{"222":1}}],["21661",{"2":{"222":1}}],["21656",{"2":{"266":1}}],["21654",{"2":{"236":1}}],["21659",{"2":{"222":1}}],["21653",{"2":{"222":1}}],["21658",{"2":{"222":1}}],["21651",{"2":{"222":1}}],["21642",{"2":{"236":1}}],["21645",{"2":{"222":1}}],["21644",{"2":{"222":1}}],["21640",{"2":{"222":1}}],["21636",{"2":{"222":1}}],["21635",{"2":{"222":1}}],["21630",{"2":{"222":1}}],["21623",{"2":{"249":1}}],["21626",{"2":{"222":1}}],["21625",{"2":{"222":1}}],["21624",{"2":{"222":1}}],["21611",{"2":{"236":1}}],["21614",{"2":{"222":1}}],["21612",{"2":{"222":1}}],["21613",{"2":{"222":1}}],["21576",{"2":{"236":1}}],["21574",{"2":{"236":1}}],["21579",{"2":{"222":1}}],["21572",{"2":{"222":1}}],["21548",{"2":{"249":1}}],["21543",{"2":{"222":1}}],["21540",{"2":{"222":1}}],["21569",{"2":{"222":1}}],["21567",{"2":{"222":1}}],["21526",{"2":{"222":1}}],["21523",{"2":{"222":1}}],["21592",{"2":{"222":1}}],["21596",{"2":{"222":1}}],["21594",{"2":{"222":1}}],["21591",{"2":{"222":1}}],["21583",{"2":{"236":1}}],["21589",{"2":{"222":1}}],["21588",{"2":{"222":1}}],["21580",{"2":{"222":1}}],["21554",{"2":{"222":1}}],["21553",{"2":{"222":1}}],["21558",{"2":{"222":1}}],["21551",{"2":{"222":1}}],["21519",{"2":{"222":1}}],["21517",{"2":{"222":1}}],["21514",{"2":{"222":1}}],["21507",{"2":{"222":1}}],["21410",{"2":{"266":1}}],["21456",{"2":{"249":1}}],["21450",{"2":{"236":1}}],["21454",{"2":{"222":1}}],["21402",{"2":{"236":1}}],["21405",{"2":{"222":1}}],["21448",{"2":{"249":1}}],["21447",{"2":{"222":1}}],["21444",{"2":{"222":1}}],["21467",{"2":{"236":1}}],["21468",{"2":{"222":1}}],["21465",{"2":{"222":1}}],["21494",{"2":{"236":1}}],["21497",{"2":{"222":1}}],["21495",{"2":{"222":1}}],["21498",{"2":{"222":1}}],["21496",{"2":{"222":2}}],["21493",{"2":{"222":1}}],["21489",{"2":{"222":1}}],["21484",{"2":{"222":1}}],["21482",{"2":{"222":1}}],["21486",{"2":{"222":1}}],["21485",{"2":{"222":1}}],["21480",{"2":{"222":1}}],["21476",{"2":{"222":1}}],["21473",{"2":{"222":1}}],["21472",{"2":{"222":1}}],["21435",{"2":{"222":1}}],["21432",{"2":{"222":1}}],["21436",{"2":{"222":1}}],["21434",{"2":{"222":1}}],["21422",{"2":{"222":1}}],["21427",{"2":{"222":1}}],["21424",{"2":{"222":1}}],["213",{"2":{"1281":1}}],["21398",{"2":{"249":1}}],["21391",{"2":{"222":1}}],["21345",{"2":{"222":1}}],["21343",{"2":{"222":1}}],["21307",{"2":{"222":1}}],["21302",{"2":{"222":1}}],["21380",{"2":{"236":1}}],["21389",{"2":{"222":1}}],["21384",{"2":{"222":1}}],["21382",{"2":{"222":1}}],["21370",{"2":{"222":1}}],["21364",{"2":{"236":1}}],["21365",{"2":{"222":1}}],["21363",{"2":{"222":1}}],["21360",{"2":{"222":1}}],["21366",{"2":{"222":1}}],["21339",{"2":{"222":1}}],["21337",{"2":{"222":1}}],["21332",{"2":{"222":1}}],["21324",{"2":{"222":1}}],["21325",{"2":{"222":1}}],["21322",{"2":{"222":1}}],["21320",{"2":{"222":1}}],["21354",{"2":{"222":1}}],["21353",{"2":{"222":1}}],["21352",{"2":{"222":1}}],["21206",{"2":{"222":1}}],["21205",{"2":{"222":1}}],["21298",{"2":{"222":1}}],["21299",{"2":{"222":1}}],["21296",{"2":{"222":1}}],["21292",{"2":{"222":1}}],["21293",{"2":{"222":1}}],["21287",{"2":{"222":1}}],["21284",{"2":{"222":1}}],["21281",{"2":{"222":1}}],["21273",{"2":{"249":1}}],["21272",{"2":{"222":1}}],["21278",{"2":{"222":1}}],["21271",{"2":{"222":1}}],["21260",{"2":{"222":1}}],["21248",{"2":{"222":1}}],["21240",{"2":{"222":1}}],["21247",{"2":{"222":1}}],["21237",{"2":{"222":1}}],["21234",{"2":{"222":1}}],["21217",{"2":{"222":1}}],["21124",{"2":{"249":1}}],["21174",{"2":{"236":1}}],["21171",{"2":{"236":1}}],["21176",{"2":{"222":1}}],["21190",{"2":{"222":1}}],["21144",{"2":{"222":1}}],["21169",{"2":{"222":1}}],["21164",{"2":{"222":1}}],["21157",{"2":{"222":1}}],["21154",{"2":{"222":1}}],["21151",{"2":{"222":1}}],["21139",{"2":{"222":1}}],["21135",{"2":{"222":1}}],["21134",{"2":{"222":1}}],["21113",{"2":{"222":1}}],["21110",{"2":{"222":1}}],["21116",{"2":{"222":1}}],["21115",{"2":{"222":1}}],["21109",{"2":{"222":1}}],["21108",{"2":{"222":1}}],["21107",{"2":{"222":1}}],["210",{"2":{"2731":2,"2732":2,"2733":1}}],["21060",{"2":{"236":1}}],["21079",{"2":{"222":1}}],["21072",{"2":{"222":1}}],["21096",{"2":{"249":1}}],["21095",{"2":{"222":1}}],["21094",{"2":{"222":1}}],["21092",{"2":{"222":1}}],["21054",{"2":{"222":1}}],["21056",{"2":{"222":1}}],["21046",{"2":{"222":1}}],["21044",{"2":{"211":1}}],["21015",{"2":{"222":1}}],["21013",{"2":{"211":1}}],["21086",{"2":{"222":1}}],["21033",{"2":{"211":1}}],["21032",{"2":{"211":1}}],["21005",{"2":{"211":1}}],["21007",{"2":{"211":1}}],["21002",{"2":{"211":1}}],["21029",{"2":{"211":1}}],["21",{"2":{"160":1,"176":2,"191":1,"211":1,"249":1,"315":2,"351":1,"1133":1,"1405":1,"1578":1,"1635":3,"1836":3,"1883":3,"2365":3,"2380":3}}],["25mhz",{"2":{"2521":1}}],["254",{"2":{"1815":1,"2139":1}}],["253",{"2":{"1815":1,"2139":1}}],["251",{"2":{"1815":1,"2139":1}}],["25k",{"2":{"1441":1}}],["25keys",{"2":{"143":5,"149":1}}],["250",{"2":{"788":2,"1283":1,"1683":1,"1848":1,"1868":1}}],["25xx",{"2":{"681":1,"685":1}}],["255",{"2":{"582":2,"667":1,"790":1,"855":2,"889":2,"923":2,"957":2,"991":2,"1025":2,"1059":2,"1093":2,"1217":4,"1446":3,"1457":2,"1725":1,"1730":1,"1762":1,"1768":1,"1770":1,"1772":1,"1807":1,"1817":2,"1946":1,"1954":3,"1959":9,"1989":1,"1995":1,"2001":1,"2007":1,"2009":1,"2011":1,"2013":3,"2015":3,"2035":2,"2038":3,"2040":1,"2051":9,"2054":2,"2055":2,"2096":1,"2107":1,"2141":1,"2227":2,"2577":20,"2596":1,"2597":3,"2677":2,"2688":2,"2694":3,"2695":3}}],["25u×2uh",{"2":{"2686":1}}],["25u",{"2":{"259":1,"2619":1}}],["25",{"0":{"237":1,"267":1},"1":{"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1},"2":{"265":1,"266":1,"338":2,"340":1,"351":3,"506":1,"888":1,"1091":1,"1405":1,"1440":1,"1578":1,"1635":3,"1793":1,"1836":3,"1839":2,"1868":1,"1883":3,"1950":1,"2040":1,"2226":1,"2269":3,"2365":3,"2371":1,"2380":3,"2587":1,"2611":1,"2686":2}}],["256kb",{"2":{"2528":1}}],["256u",{"2":{"659":2}}],["256",{"2":{"46":1,"694":1,"1227":1,"2574":2,"2575":4,"2577":1,"2578":1,"2596":1}}],["26356",{"2":{"2469":1}}],["266",{"2":{"1298":1}}],["26000",{"2":{"1136":1}}],["26k7",{"2":{"853":1,"887":1,"921":1}}],["26kbps",{"2":{"511":1,"2128":1}}],["26",{"0":{"135":1,"177":1,"192":1,"223":1,"250":1},"1":{"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1},"2":{"170":1,"317":2,"338":1,"351":6,"853":1,"887":1,"921":1,"1405":1,"1440":1,"1578":1,"1635":3,"1836":3,"1883":3,"2365":3,"2380":3,"2611":1}}],["27312",{"2":{"2425":1}}],["275ms",{"2":{"2171":1}}],["275",{"2":{"2171":1}}],["270",{"2":{"1821":1,"1822":1,"1840":2,"1851":2,"1852":2,"1915":2,"2577":1}}],["27749e1",{"2":{"73":1}}],["27",{"0":{"66":1,"115":1,"161":1,"212":1},"1":{"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1},"2":{"88":1,"104":1,"127":1,"170":1,"340":2,"351":4,"1405":1,"1578":1,"1635":3,"1836":1,"1883":3,"2365":3,"2380":3}}],["282",{"2":{"1836":2}}],["285",{"2":{"1633":2,"2588":2}}],["28672",{"2":{"1287":2,"2425":1,"2469":1}}],["280",{"2":{"1214":1}}],["28e9",{"2":{"629":1}}],["28",{"0":{"52":1,"96":1,"150":1,"200":1},"1":{"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1},"2":{"55":1,"88":1,"104":1,"127":1,"351":4,"1405":1,"1578":1,"1635":3,"1836":2,"1883":3,"2365":3,"2380":3}}],["2",{"0":{"344":1,"346":1,"538":1,"1289":1,"1809":1,"1902":1,"1910":1,"2167":1,"2276":1,"2321":1,"2333":1,"2432":1,"2458":1,"2692":1},"1":{"1903":1,"1904":1,"1905":1,"1906":1,"1907":1,"1908":1,"1909":1,"1910":1,"1911":1,"1912":1,"1913":1,"1914":1,"1915":1,"1916":1,"1917":1,"2334":1,"2459":1,"2460":1,"2461":1,"2462":1,"2463":1,"2464":1,"2465":1,"2466":1,"2467":1},"2":{"37":2,"45":3,"49":1,"69":1,"114":7,"120":2,"133":2,"134":3,"175":1,"176":4,"188":1,"191":5,"201":3,"211":7,"222":2,"236":4,"249":2,"266":12,"272":2,"279":1,"292":1,"299":4,"313":3,"317":1,"345":1,"346":1,"350":5,"375":1,"448":1,"459":1,"473":1,"487":2,"491":1,"505":2,"511":1,"522":1,"530":2,"532":1,"534":6,"540":1,"570":1,"624":1,"629":1,"633":1,"635":21,"636":1,"639":2,"641":2,"656":2,"659":2,"660":1,"666":1,"684":1,"685":1,"689":1,"690":1,"691":2,"757":2,"786":2,"788":1,"789":4,"818":2,"822":1,"850":4,"853":2,"854":2,"885":2,"887":2,"888":2,"919":2,"921":2,"922":2,"953":2,"956":2,"987":2,"990":2,"1021":4,"1024":4,"1055":4,"1058":4,"1089":2,"1092":4,"1127":1,"1130":1,"1134":1,"1136":1,"1145":2,"1181":2,"1227":1,"1230":3,"1234":2,"1252":2,"1279":1,"1295":1,"1319":1,"1335":1,"1354":1,"1380":1,"1383":1,"1384":1,"1398":1,"1405":1,"1416":1,"1448":1,"1451":1,"1469":1,"1491":1,"1496":1,"1497":1,"1530":2,"1547":1,"1549":1,"1553":5,"1556":1,"1557":1,"1558":1,"1559":1,"1562":1,"1571":1,"1575":1,"1576":2,"1577":6,"1578":1,"1591":1,"1594":2,"1635":3,"1686":3,"1718":2,"1722":2,"1725":1,"1729":1,"1788":1,"1793":32,"1801":4,"1805":4,"1807":1,"1809":1,"1819":1,"1821":3,"1822":1,"1836":2,"1842":1,"1849":1,"1854":1,"1877":5,"1883":3,"1902":2,"1910":3,"1912":3,"1939":3,"1940":1,"1946":1,"1952":1,"1958":1,"1959":1,"2036":6,"2038":2,"2042":4,"2043":1,"2044":1,"2051":2,"2059":1,"2060":1,"2095":1,"2105":2,"2120":2,"2128":1,"2133":2,"2148":2,"2152":1,"2153":3,"2155":19,"2167":5,"2169":1,"2170":2,"2171":1,"2174":1,"2235":1,"2242":1,"2262":1,"2269":3,"2289":2,"2295":1,"2299":6,"2300":6,"2305":1,"2333":2,"2352":1,"2355":9,"2363":4,"2365":3,"2371":32,"2372":4,"2380":3,"2386":2,"2391":2,"2394":2,"2401":2,"2402":4,"2404":1,"2407":1,"2430":1,"2436":1,"2472":1,"2491":1,"2513":1,"2530":2,"2559":16,"2566":1,"2570":2,"2575":2,"2585":1,"2592":1,"2596":2,"2615":16,"2640":1,"2645":1,"2682":1,"2686":1,"2688":3,"2689":1,"2692":6,"2694":1,"2695":3,"2697":1,"2728":2,"2734":7,"2735":9,"2736":5,"2738":3}}],["290",{"2":{"2588":2}}],["295",{"2":{"2092":1}}],["294",{"2":{"2092":1}}],["29k",{"2":{"953":1,"955":2,"987":1,"989":2,"1089":1,"1091":2}}],["29",{"0":{"9":1,"39":1,"78":1},"1":{"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1},"2":{"88":1,"104":1,"127":1,"351":3,"955":1,"989":1,"1091":1,"1405":1,"1578":1,"1635":3,"1836":2,"1883":3,"2365":3,"2380":3,"2401":1,"2402":4}}],["20x4",{"2":{"1589":1}}],["20kbps",{"2":{"511":1,"2128":1}}],["209",{"2":{"251":1}}],["20996",{"2":{"222":1}}],["20992",{"2":{"222":1}}],["20998",{"2":{"211":1}}],["20981",{"2":{"211":1}}],["20949",{"2":{"211":1}}],["20962",{"2":{"211":1}}],["20960",{"2":{"211":1}}],["20969",{"2":{"211":1}}],["20953",{"2":{"236":1}}],["20958",{"2":{"211":1}}],["20957",{"2":{"211":1}}],["20956",{"2":{"211":1}}],["20931",{"2":{"211":1}}],["20932",{"2":{"211":1}}],["20930",{"2":{"211":1}}],["20924",{"2":{"211":1}}],["20923",{"2":{"211":1}}],["20929",{"2":{"211":1}}],["20928",{"2":{"211":1}}],["20927",{"2":{"211":1}}],["20926",{"2":{"211":1}}],["20921",{"2":{"211":1}}],["20920",{"2":{"211":1}}],["20915",{"2":{"211":1}}],["20919",{"2":{"211":1}}],["20918",{"2":{"211":1}}],["20917",{"2":{"211":1}}],["20913",{"2":{"211":1}}],["20912",{"2":{"211":1}}],["20908",{"2":{"211":1}}],["20907",{"2":{"211":1}}],["20906",{"2":{"211":1}}],["20901",{"2":{"211":1}}],["20900",{"2":{"211":1}}],["20799",{"2":{"211":1}}],["20791",{"2":{"211":1}}],["20790",{"2":{"211":1}}],["20789",{"2":{"211":1}}],["20788",{"2":{"211":1}}],["20787",{"2":{"211":1}}],["20786",{"2":{"211":1}}],["20785",{"2":{"211":1}}],["20784",{"2":{"211":1}}],["20783",{"2":{"211":1}}],["20782",{"2":{"211":1}}],["20781",{"2":{"211":1}}],["20779",{"2":{"211":1}}],["20778",{"2":{"211":1}}],["20777",{"2":{"211":1}}],["20776",{"2":{"211":1}}],["20775",{"2":{"211":1}}],["20774",{"2":{"211":1}}],["20773",{"2":{"211":1}}],["20770",{"2":{"211":1}}],["20761",{"2":{"222":1}}],["20765",{"2":{"211":1}}],["20764",{"2":{"211":1}}],["20763",{"2":{"211":1}}],["20756",{"2":{"211":1}}],["20755",{"2":{"211":1}}],["20754",{"2":{"211":1}}],["20753",{"2":{"211":1}}],["20752",{"2":{"211":1}}],["20751",{"2":{"211":1}}],["20750",{"2":{"211":1}}],["20749",{"2":{"211":1}}],["20748",{"2":{"211":1}}],["20747",{"2":{"211":1}}],["20746",{"2":{"211":1}}],["20745",{"2":{"211":1}}],["20744",{"2":{"211":1}}],["20743",{"2":{"211":1}}],["20742",{"2":{"211":1}}],["20741",{"2":{"211":1}}],["20740",{"2":{"211":1}}],["20732",{"2":{"236":1}}],["20733",{"2":{"211":1}}],["20739",{"2":{"211":1}}],["20738",{"2":{"211":1}}],["20737",{"2":{"211":1}}],["20736",{"2":{"211":1}}],["20735",{"2":{"211":1}}],["20731",{"2":{"211":1}}],["20734",{"2":{"211":1}}],["20723",{"2":{"211":1}}],["20728",{"2":{"211":1}}],["20727",{"2":{"211":1}}],["20726",{"2":{"211":1}}],["20725",{"2":{"211":1}}],["20724",{"2":{"211":1}}],["20722",{"2":{"211":1}}],["20720",{"2":{"211":1}}],["20719",{"2":{"211":1}}],["20718",{"2":{"211":1}}],["20717",{"2":{"211":1}}],["20716",{"2":{"211":1}}],["20715",{"2":{"211":1}}],["20714",{"2":{"211":1}}],["20713",{"2":{"211":1}}],["20712",{"2":{"211":1}}],["20711",{"2":{"211":1}}],["20710",{"2":{"211":1}}],["20708",{"2":{"211":1}}],["20706",{"2":{"211":1}}],["20703",{"2":{"211":1}}],["20899",{"2":{"211":1}}],["20895",{"2":{"211":1}}],["20893",{"2":{"211":1}}],["20892",{"2":{"211":1}}],["20891",{"2":{"211":1}}],["20897",{"2":{"211":1}}],["20889",{"2":{"211":1}}],["20888",{"2":{"211":1}}],["20887",{"2":{"211":1}}],["20886",{"2":{"211":1}}],["20885",{"2":{"211":1}}],["20884",{"2":{"211":1}}],["20882",{"2":{"211":1}}],["20881",{"2":{"211":1}}],["20880",{"2":{"211":1}}],["20879",{"2":{"211":1}}],["20878",{"2":{"211":1}}],["20877",{"2":{"211":1}}],["20876",{"2":{"211":1}}],["20875",{"2":{"211":1}}],["20874",{"2":{"211":1}}],["20873",{"2":{"211":1}}],["20872",{"2":{"211":1}}],["20871",{"2":{"211":1}}],["20870",{"2":{"211":1}}],["20863",{"2":{"236":1}}],["20869",{"2":{"211":1}}],["20867",{"2":{"211":1}}],["20866",{"2":{"211":1}}],["20865",{"2":{"211":1}}],["20864",{"2":{"211":1}}],["20861",{"2":{"211":1}}],["20860",{"2":{"211":1}}],["20857",{"2":{"236":1}}],["20859",{"2":{"211":1}}],["20858",{"2":{"211":1}}],["20855",{"2":{"211":1}}],["20854",{"2":{"211":1}}],["20853",{"2":{"211":1}}],["20851",{"2":{"211":1}}],["20850",{"2":{"211":1}}],["20849",{"2":{"211":1}}],["20848",{"2":{"211":1}}],["20847",{"2":{"211":1}}],["20845",{"2":{"211":1}}],["20844",{"2":{"211":1}}],["20843",{"2":{"211":1}}],["20842",{"2":{"211":1}}],["20835",{"2":{"211":1}}],["20834",{"2":{"211":1}}],["20833",{"2":{"211":1}}],["20832",{"2":{"211":1}}],["20831",{"2":{"211":1}}],["20830",{"2":{"211":1}}],["20836",{"2":{"211":1}}],["20829",{"2":{"211":1}}],["20827",{"2":{"211":1}}],["20825",{"2":{"211":1}}],["20824",{"2":{"211":1}}],["20822",{"2":{"211":1}}],["20821",{"2":{"211":1}}],["20820",{"2":{"211":1}}],["20819",{"2":{"211":1}}],["20818",{"2":{"211":1}}],["20816",{"2":{"211":1}}],["20814",{"2":{"211":1}}],["20813",{"2":{"211":1}}],["20812",{"2":{"211":1}}],["20810",{"2":{"211":1}}],["20806",{"2":{"211":1}}],["20808",{"2":{"211":1}}],["20805",{"2":{"211":1}}],["20804",{"2":{"211":1}}],["20809",{"2":{"211":1}}],["20807",{"2":{"211":1}}],["20802",{"2":{"211":1}}],["20801",{"2":{"211":1}}],["20800",{"2":{"211":1}}],["20699",{"2":{"211":1}}],["20698",{"2":{"211":1}}],["20697",{"2":{"211":1}}],["20696",{"2":{"211":1}}],["20695",{"2":{"211":1}}],["20694",{"2":{"211":1}}],["20693",{"2":{"211":1}}],["20692",{"2":{"211":1}}],["20691",{"2":{"211":1}}],["20689",{"2":{"211":1}}],["20688",{"2":{"211":1}}],["20685",{"2":{"211":1}}],["20684",{"2":{"211":1}}],["20682",{"2":{"211":1}}],["20681",{"2":{"211":1}}],["20680",{"2":{"211":1}}],["2067",{"2":{"629":1}}],["20670",{"2":{"211":1}}],["20679",{"2":{"211":1}}],["20678",{"2":{"211":1}}],["20677",{"2":{"211":1}}],["20676",{"2":{"211":1}}],["20675",{"2":{"211":1}}],["20672",{"2":{"211":1}}],["20671",{"2":{"211":1}}],["20669",{"2":{"211":2}}],["20667",{"2":{"211":1}}],["20666",{"2":{"211":1}}],["20665",{"2":{"211":1}}],["20663",{"2":{"211":1}}],["20662",{"2":{"211":1}}],["20661",{"2":{"211":1}}],["20660",{"2":{"211":1}}],["20653",{"2":{"211":1}}],["20659",{"2":{"211":1}}],["20658",{"2":{"211":1}}],["20657",{"2":{"211":1}}],["20651",{"2":{"211":1}}],["20645",{"2":{"249":1}}],["20646",{"2":{"222":1}}],["20648",{"2":{"211":1}}],["20640",{"2":{"211":1}}],["20642",{"2":{"211":1}}],["20633",{"2":{"211":1}}],["20634",{"2":{"211":1}}],["20639",{"2":{"211":1}}],["20636",{"2":{"211":1}}],["20635",{"2":{"211":1}}],["20638",{"2":{"211":1}}],["20629",{"2":{"211":1}}],["20628",{"2":{"211":1}}],["20622",{"2":{"211":1}}],["20621",{"2":{"211":1}}],["20620",{"2":{"211":1}}],["20623",{"2":{"211":1}}],["20619",{"2":{"211":1}}],["20614",{"2":{"211":1}}],["20613",{"2":{"211":1}}],["20612",{"2":{"211":1}}],["20611",{"2":{"211":1}}],["20610",{"2":{"211":1}}],["20604",{"2":{"211":1}}],["20600",{"2":{"211":1}}],["205",{"2":{"1577":1,"2731":1,"2732":1,"2733":1}}],["20534",{"2":{"222":1}}],["20524",{"2":{"211":1}}],["20599",{"2":{"211":1}}],["20598",{"2":{"211":1}}],["20597",{"2":{"211":1}}],["20596",{"2":{"211":1}}],["20595",{"2":{"211":1}}],["20594",{"2":{"211":1}}],["20593",{"2":{"211":1}}],["20592",{"2":{"211":1}}],["20588",{"2":{"211":1}}],["20586",{"2":{"211":1}}],["20585",{"2":{"211":1}}],["20583",{"2":{"211":1}}],["20580",{"2":{"211":1}}],["20584",{"2":{"211":1}}],["20577",{"2":{"211":1}}],["20571",{"2":{"211":1}}],["20570",{"2":{"211":1}}],["20572",{"2":{"211":1}}],["20569",{"2":{"211":1}}],["20568",{"2":{"211":1}}],["20567",{"2":{"211":1}}],["20566",{"2":{"211":1}}],["20565",{"2":{"211":1}}],["20564",{"2":{"211":1}}],["20563",{"2":{"211":1}}],["20562",{"2":{"211":1}}],["20561",{"2":{"211":1}}],["20560",{"2":{"211":1}}],["20558",{"2":{"211":1}}],["20555",{"2":{"211":1}}],["20554",{"2":{"211":1}}],["20553",{"2":{"211":1}}],["20552",{"2":{"211":1}}],["20549",{"2":{"211":1}}],["20548",{"2":{"211":1}}],["20547",{"2":{"211":1}}],["20546",{"2":{"211":1}}],["20541",{"2":{"211":1}}],["20517",{"2":{"222":1}}],["20515",{"2":{"211":1}}],["20519",{"2":{"211":1}}],["20518",{"2":{"211":1}}],["20516",{"2":{"211":1}}],["20508",{"2":{"211":1}}],["20504",{"2":{"211":1}}],["20500",{"2":{"211":1}}],["20405",{"2":{"266":1}}],["20402",{"2":{"222":1}}],["20456",{"2":{"211":1}}],["20454",{"2":{"211":1}}],["20410",{"2":{"236":1}}],["20411",{"2":{"211":1}}],["20417",{"2":{"211":1}}],["20412",{"2":{"211":1}}],["20499",{"2":{"211":1}}],["20498",{"2":{"211":1}}],["20496",{"2":{"211":1}}],["20495",{"2":{"211":1}}],["20494",{"2":{"211":1}}],["20491",{"2":{"211":1}}],["20490",{"2":{"211":1}}],["20480",{"2":{"2353":1}}],["2048",{"2":{"689":1,"692":3}}],["20481",{"2":{"222":1}}],["20489",{"2":{"211":1}}],["20488",{"2":{"211":1}}],["20487",{"2":{"211":1}}],["20475",{"2":{"211":1}}],["20473",{"2":{"211":1}}],["20478",{"2":{"211":1}}],["20477",{"2":{"211":1}}],["20474",{"2":{"211":1}}],["20470",{"2":{"211":1}}],["20468",{"2":{"211":1}}],["20463",{"2":{"211":1}}],["20443",{"2":{"211":1}}],["20442",{"2":{"211":1}}],["20440",{"2":{"211":1}}],["20433",{"2":{"211":1}}],["20432",{"2":{"211":1}}],["20439",{"2":{"211":1}}],["20438",{"2":{"211":1}}],["20436",{"2":{"211":1}}],["20430",{"2":{"211":1}}],["20427",{"2":{"236":1}}],["20422",{"2":{"211":1}}],["20423",{"2":{"211":1}}],["20395",{"2":{"222":1}}],["20397",{"2":{"211":1}}],["20398",{"2":{"211":1}}],["20389",{"2":{"222":1}}],["20383",{"2":{"211":1}}],["20381",{"2":{"211":1}}],["20367",{"2":{"211":1}}],["20365",{"2":{"211":1}}],["20356",{"2":{"211":1}}],["20350",{"2":{"211":1}}],["20348",{"2":{"211":1}}],["20349",{"2":{"211":1}}],["20341",{"2":{"211":1}}],["20340",{"2":{"211":1}}],["20347",{"2":{"211":1}}],["20339",{"2":{"211":1}}],["20337",{"2":{"211":1}}],["20334",{"2":{"211":2}}],["20331",{"2":{"211":1}}],["20325",{"2":{"211":1}}],["20326",{"2":{"211":1}}],["20321",{"2":{"211":1}}],["20328",{"2":{"211":1}}],["20320",{"2":{"211":1}}],["20315",{"2":{"236":1}}],["20311",{"2":{"211":1}}],["20317",{"2":{"211":1}}],["20316",{"2":{"211":1}}],["20310",{"2":{"211":1}}],["20314",{"2":{"211":1}}],["20313",{"2":{"211":1}}],["20312",{"2":{"211":1}}],["20308",{"2":{"211":1}}],["20303",{"2":{"211":1}}],["20300",{"2":{"211":1}}],["201",{"2":{"2731":1}}],["20101",{"2":{"266":1}}],["20188",{"2":{"211":1}}],["20183",{"2":{"211":1}}],["20148",{"2":{"211":1}}],["20168",{"2":{"211":1}}],["20167",{"2":{"211":1}}],["20113",{"2":{"211":1}}],["20110",{"2":{"211":1}}],["2017",{"2":{"315":2,"2277":1,"2309":3}}],["20177",{"2":{"211":1}}],["20172",{"2":{"211":1}}],["2015",{"2":{"1265":1,"2309":1}}],["20157",{"2":{"211":1}}],["20156",{"2":{"211":1}}],["20155",{"2":{"211":1}}],["20159",{"2":{"211":1}}],["20154",{"2":{"211":1}}],["20150",{"2":{"211":1}}],["20191",{"2":{"211":1}}],["20194",{"2":{"211":1}}],["20192",{"2":{"211":1}}],["2019",{"0":{"0":1,"1243":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1},"2":{"55":2,"134":1,"351":1}}],["200u",{"2":{"2539":1}}],["20043e64",{"2":{"2255":1}}],["2004a",{"2":{"1589":1}}],["200ms",{"2":{"1827":1,"2169":1,"2727":1,"2730":1,"2735":1,"2736":1}}],["200",{"2":{"502":1,"505":4,"1683":1,"1829":1,"1835":1,"1844":2,"1868":1,"1954":2,"2038":1,"2044":1,"2144":1,"2299":1,"2569":2,"2674":2,"2727":1,"2731":1,"2732":2,"2733":1}}],["20059",{"2":{"236":1}}],["20056",{"2":{"211":1}}],["20097",{"2":{"211":1}}],["20092",{"2":{"211":1}}],["20083",{"2":{"211":1}}],["20084",{"2":{"211":1}}],["20078",{"2":{"211":1}}],["20075",{"2":{"211":1}}],["20079",{"2":{"211":1}}],["20020",{"2":{"211":1}}],["20019",{"2":{"211":1}}],["20013",{"2":{"211":1}}],["20061",{"2":{"211":1}}],["20034",{"2":{"211":1}}],["20033",{"2":{"211":1}}],["20030",{"2":{"211":1}}],["2003",{"2":{"116":1}}],["2000000",{"2":{"1835":1,"1849":1}}],["20000",{"2":{"211":1,"1136":1}}],["20003",{"2":{"211":1}}],["20001",{"2":{"211":1}}],["20006",{"2":{"211":1}}],["20004",{"2":{"211":1}}],["2000th",{"2":{"116":1}}],["2000",{"0":{"116":1},"2":{"511":1,"1839":1,"1849":1,"1861":1,"2131":1,"2311":1,"2697":1}}],["20273",{"2":{"277":1}}],["20274",{"2":{"211":1}}],["20255",{"2":{"222":1}}],["20253",{"2":{"211":1}}],["20292",{"2":{"211":1}}],["20297",{"2":{"211":1}}],["20293",{"2":{"211":1}}],["20290",{"2":{"211":1}}],["20289",{"2":{"211":1}}],["2024",{"0":{"237":1,"250":1,"267":1},"1":{"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1},"2":{"249":1,"251":1,"265":1,"268":1,"338":3,"339":1,"340":8,"351":3,"2570":2}}],["20241124",{"2":{"341":1}}],["20241",{"2":{"211":1}}],["20248",{"2":{"211":1}}],["20243",{"2":{"211":1}}],["20262",{"2":{"211":1}}],["20230",{"2":{"222":1}}],["20234",{"2":{"211":1}}],["20238",{"2":{"211":1}}],["20237",{"2":{"211":1}}],["20236",{"2":{"211":1}}],["20235",{"2":{"211":1}}],["2023",{"0":{"192":1,"200":1,"212":1,"223":1},"1":{"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1},"2":{"254":1,"351":4}}],["20220",{"2":{"236":1}}],["2022",{"0":{"135":1,"150":1,"161":1,"177":1},"1":{"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1},"2":{"170":2,"317":2,"351":4,"2353":17}}],["20218",{"2":{"211":1}}],["20211",{"2":{"211":1}}],["2021",{"0":{"66":1,"78":1,"96":1,"115":1},"1":{"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1},"2":{"88":3,"104":3,"114":2,"127":3,"351":4}}],["20204",{"2":{"211":1}}],["20203",{"2":{"211":1}}],["2020",{"0":{"9":1,"19":1,"39":1,"52":1},"1":{"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1},"2":{"55":2,"351":4,"1216":2}}],["20",{"2":{"49":1,"69":1,"111":1,"134":1,"351":1,"359":5,"507":1,"635":1,"1137":2,"1230":1,"1405":1,"1578":5,"1635":3,"1803":1,"1805":1,"1821":1,"1836":3,"1842":1,"1847":1,"1883":3,"2040":3,"2269":2,"2353":1,"2365":3,"2380":3,"2577":1,"2587":3,"2688":1,"2695":1,"2737":1}}],["k42",{"2":{"2614":4,"2616":1,"2746":2}}],["k40",{"2":{"2614":4,"2616":1,"2746":2}}],["k22",{"2":{"2614":4,"2616":1,"2746":2}}],["k21",{"2":{"2614":4,"2616":1,"2746":2}}],["k20",{"2":{"2614":4,"2616":1,"2746":2}}],["k13",{"2":{"2614":4,"2616":1,"2746":2}}],["k12",{"2":{"2614":4,"2616":1,"2746":2}}],["k11",{"2":{"2614":4,"2616":1,"2746":2}}],["k10",{"2":{"2614":4,"2616":1,"2746":2}}],["k03",{"2":{"2614":4,"2616":1,"2746":2}}],["k02",{"2":{"2614":4,"2616":1,"2746":2}}],["k01",{"2":{"2614":4,"2616":1,"2746":2}}],["k00",{"2":{"2614":4,"2616":1,"2746":2}}],["kp",{"2":{"2355":19,"2394":19}}],["kprepublic",{"2":{"102":12,"114":1,"122":10,"134":2,"143":4,"199":1,"226":2,"236":1,"253":4,"266":2}}],["kxy",{"2":{"2279":1}}],["kvms",{"2":{"1829":1}}],["kvm",{"0":{"1828":1},"2":{"1828":1}}],["kω",{"2":{"789":14,"854":14,"888":14,"922":14,"956":14,"990":14,"1024":14,"1058":14,"1092":14}}],["khz",{"2":{"788":6,"853":5,"887":5,"921":5,"955":3,"989":3,"1091":5}}],["kl",{"2":{"1252":7,"2153":3}}],["kle",{"2":{"405":3,"2427":1,"2566":1,"2615":4,"2617":1,"2620":1,"2686":1}}],["kle2json",{"0":{"405":1},"2":{"405":3}}],["klein",{"2":{"249":1}}],["kl90",{"2":{"222":1,"249":1}}],["kumaokobo",{"2":{"241":10,"249":2}}],["kudox",{"2":{"241":16}}],["k83",{"2":{"217":1}}],["kj",{"2":{"211":1}}],["k552",{"2":{"199":2}}],["koyu",{"2":{"211":1}}],["kopibeng",{"2":{"211":5}}],["koalafications",{"2":{"211":1}}],["koolertron",{"2":{"211":1}}],["ko",{"0":{"1659":1,"1660":1,"1661":1,"1662":1,"1671":1},"2":{"188":1,"191":1,"1659":1,"1662":1,"1663":1,"1665":9,"1666":2,"1668":1,"1669":3,"1670":2,"1671":8,"1674":1}}],["korean",{"2":{"176":1,"2703":2}}],["krush60",{"2":{"249":1}}],["kr",{"2":{"176":4}}],["knife",{"2":{"2133":2,"2266":1}}],["knife66",{"2":{"211":3}}],["knight",{"2":{"160":1,"2034":2,"2036":2,"2037":2,"2038":6,"2040":2,"2063":1,"2376":2,"2711":1}}],["knops",{"2":{"114":1}}],["knowledge",{"2":{"567":1,"692":1,"1264":1,"2129":1,"2314":1,"2722":1,"2723":2,"2725":1}}],["know",{"0":{"1258":1},"2":{"228":1,"245":1,"331":1,"335":1,"356":1,"401":1,"437":1,"446":1,"698":2,"1252":1,"1253":1,"1261":1,"1279":1,"1341":2,"1344":1,"1533":1,"1577":1,"1671":1,"1678":1,"1921":1,"2123":1,"2134":1,"2256":1,"2417":1,"2454":1,"2468":2,"2477":1,"2480":1,"2484":1,"2722":1,"2746":1,"2748":1,"2752":1}}],["knows",{"2":{"49":1,"149":1,"661":1}}],["known",{"0":{"629":1,"1491":1,"1571":1},"1":{"1492":1},"2":{"37":1,"488":1,"554":1,"626":1,"629":1,"1126":1,"1143":1,"1216":1,"1454":1,"1498":1,"1528":1,"1881":1,"2118":1,"2477":1,"2513":1,"2566":1,"2576":2,"2654":1}}],["knobs",{"2":{"249":1}}],["knob",{"2":{"13":1}}],["kkatano",{"2":{"143":6,"149":2,"211":1}}],["kapton",{"2":{"2270":1}}],["kapcave",{"2":{"122":2,"134":1}}],["katakana",{"2":{"1280":1,"2391":2}}],["katana60",{"2":{"381":1,"2293":1}}],["karabiner",{"0":{"1281":1},"2":{"1280":1,"1281":4}}],["karn",{"2":{"249":1}}],["karlk90",{"2":{"163":1}}],["kana",{"2":{"222":1,"1714":1,"1715":2,"1717":1,"2685":2}}],["kangaroo",{"2":{"211":1}}],["kastenwagen",{"2":{"211":2}}],["kamigakushi",{"2":{"207":2,"211":1,"217":2}}],["ka2hiro",{"2":{"149":1}}],["kagamidget",{"2":{"143":2}}],["kagizaraya",{"2":{"143":3,"149":1,"241":1,"249":1}}],["kakunpc",{"2":{"143":11,"149":2}}],["kmac",{"2":{"241":4}}],["km",{"2":{"132":1,"176":1,"370":3,"371":1,"374":2,"378":2,"380":2,"381":1,"386":1,"388":1,"389":1,"390":1,"391":1,"393":3,"394":3,"401":1,"1312":1,"1440":1,"2126":3,"2229":1,"2277":1,"2356":1,"2425":1,"2445":1,"2446":1,"2454":1,"2469":2,"2512":1,"2553":1,"2572":1}}],["kyria",{"2":{"102":2,"114":3,"134":1,"222":2,"277":1}}],["k33",{"2":{"2614":4,"2616":1,"2746":2}}],["k32",{"2":{"2614":4,"2616":1,"2746":2}}],["k320",{"2":{"86":1,"102":2,"181":2,"191":1}}],["k31",{"2":{"2614":4,"2616":1,"2746":2}}],["k310",{"2":{"114":1,"181":2,"191":1}}],["k30",{"2":{"2614":4,"2616":1,"2746":2}}],["k34",{"2":{"222":1}}],["k3x0",{"2":{"102":1,"181":2}}],["ktec",{"2":{"102":3}}],["kzar",{"2":{"92":1,"93":1}}],["kib",{"2":{"2255":1,"2335":1,"2353":3}}],["kit",{"2":{"624":1}}],["kira80",{"2":{"241":2}}],["kira",{"2":{"241":2,"249":1}}],["kira75",{"2":{"241":2}}],["kikoslab",{"2":{"222":1,"249":1}}],["kiko",{"2":{"211":1}}],["kicad",{"2":{"211":1}}],["kinds",{"2":{"1451":1,"2064":1,"2327":1}}],["kind",{"0":{"533":1,"1678":1},"1":{"1679":1,"1680":1,"1681":1,"1682":1,"1683":1,"1684":1,"1685":1,"1686":1,"1687":1,"1688":1,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1695":1,"1696":1,"1697":1,"1698":1,"1699":1,"1700":1,"1701":1,"1702":1,"1703":1,"1704":1,"1705":1,"1706":1,"1707":1,"1708":1,"1709":1,"1710":1,"1711":1,"1712":1,"1713":1},"2":{"1451":1,"1452":1,"2169":1}}],["king",{"2":{"176":1}}],["kintwin",{"2":{"222":1}}],["kint41",{"2":{"114":1,"2502":1}}],["kint",{"2":{"114":1,"134":1}}],["kint2pp",{"2":{"94":1}}],["kint36",{"2":{"93":1,"94":1,"114":1,"199":1,"2502":1}}],["kinetis",{"0":{"491":1},"2":{"114":1,"160":2,"191":1,"2243":1,"2524":1,"2546":1,"2622":1}}],["kinetic",{"0":{"1804":1},"2":{"74":1,"160":2,"175":2,"176":1,"222":2,"1802":1,"1804":3,"1807":1,"1808":1,"1851":1}}],["kinesis",{"2":{"93":2,"114":1,"211":1,"217":2,"222":3,"2502":2}}],["kiibohd",{"0":{"2243":1},"2":{"50":1,"629":2,"2243":1}}],["k",{"2":{"49":2,"65":1,"114":1,"143":2,"191":1,"236":1,"249":2,"266":8,"277":1,"313":1,"530":2,"1361":2,"1511":1,"1527":2,"1530":1,"1932":1,"1935":4,"2034":1,"2148":1,"2153":1,"2169":1,"2355":3,"2376":1,"2386":3,"2407":1,"2614":1,"2705":1}}],["kb2",{"2":{"559":2}}],["kb2040",{"0":{"1317":1},"2":{"163":1,"176":2,"1311":1,"1315":4,"1318":1,"1321":1,"2541":1,"2712":1}}],["kb1",{"2":{"559":1}}],["kb16",{"2":{"176":1,"191":1,"249":1}}],["kb38",{"2":{"222":1,"266":1}}],["kb83",{"2":{"217":1,"222":1}}],["kbo5000",{"2":{"199":1}}],["kbfirmware",{"0":{"391":1},"2":{"173":4,"391":2,"541":1,"2277":2,"2427":1,"2566":2}}],["kbd",{"2":{"1530":1}}],["kbdmania",{"2":{"241":2,"249":1}}],["kbd66",{"2":{"211":1}}],["kbd67mkiirgb",{"2":{"217":1}}],["kbd67",{"2":{"114":1,"217":1,"249":1}}],["kbdfans",{"2":{"143":1,"149":1,"191":1,"211":6,"217":2,"241":2,"249":1}}],["kb",{"0":{"593":1,"1776":1,"1780":1,"2021":1,"2025":1,"2194":1,"2741":1},"1":{"1777":1,"2022":1,"2195":1},"2":{"34":1,"70":1,"90":3,"105":4,"111":1,"125":2,"132":1,"185":2,"190":1,"191":3,"197":13,"199":3,"203":2,"211":1,"229":1,"230":1,"231":3,"266":1,"277":6,"370":6,"371":1,"378":4,"380":2,"381":2,"383":1,"384":1,"385":1,"386":1,"388":2,"389":1,"390":1,"391":1,"393":3,"394":3,"401":1,"511":1,"534":3,"566":4,"568":4,"571":1,"573":1,"577":1,"579":1,"583":1,"586":1,"587":1,"591":2,"593":1,"594":1,"595":1,"1273":1,"1312":1,"1331":3,"1333":3,"1341":2,"1345":1,"1383":2,"1404":1,"1440":1,"1549":2,"1560":1,"1716":2,"1717":1,"1729":2,"1733":2,"1822":2,"1826":2,"1849":2,"1853":2,"1854":1,"1870":1,"1871":1,"1952":2,"1957":2,"2126":3,"2130":1,"2162":1,"2229":1,"2277":1,"2293":2,"2301":4,"2306":1,"2355":4,"2356":1,"2392":4,"2422":1,"2425":1,"2445":1,"2446":1,"2454":1,"2469":2,"2491":4,"2512":1,"2553":1,"2566":2,"2567":1,"2572":1,"2576":1,"2577":4,"2578":1,"2581":1,"2749":4}}],["kc5",{"0":{"1711":1},"1":{"1712":1,"1713":1},"2":{"1712":1}}],["kc4",{"0":{"1708":1,"1711":1},"1":{"1709":1,"1710":1,"1712":1,"1713":1},"2":{"1709":1,"1712":1}}],["kc3",{"0":{"1705":1,"1708":1,"1711":1},"1":{"1706":1,"1707":1,"1709":1,"1710":1,"1712":1,"1713":1},"2":{"1706":1,"1709":1,"1712":1}}],["kc2",{"0":{"1702":1,"1705":1,"1708":1,"1711":1},"1":{"1703":1,"1704":1,"1706":1,"1707":1,"1709":1,"1710":1,"1712":1,"1713":1},"2":{"1703":1,"1706":1,"1709":1,"1712":1,"2161":3}}],["kc1",{"0":{"1702":1,"1705":1,"1708":1,"1711":1},"1":{"1703":1,"1704":1,"1706":1,"1707":1,"1709":1,"1710":1,"1712":1,"1713":1},"2":{"1703":1,"1706":1,"1709":1,"1712":1,"2161":3}}],["kc60",{"2":{"236":1,"2040":1}}],["kc",{"0":{"8":2,"89":1,"1366":1,"1367":1,"1368":1,"1369":1,"1370":4,"1699":1},"1":{"1700":1,"1701":1},"2":{"7":2,"8":3,"38":6,"89":1,"90":8,"94":1,"176":2,"188":3,"191":5,"194":5,"195":2,"196":9,"199":5,"202":3,"209":6,"231":16,"255":1,"313":211,"502":3,"505":3,"530":338,"572":1,"573":1,"1252":7,"1269":2,"1272":3,"1273":5,"1275":1,"1276":6,"1283":1,"1299":57,"1300":5,"1302":9,"1303":14,"1332":1,"1335":4,"1336":4,"1340":2,"1344":2,"1357":2,"1359":1,"1360":10,"1361":4,"1366":6,"1367":1,"1368":4,"1369":1,"1370":1,"1375":8,"1385":4,"1403":3,"1404":1,"1416":1,"1417":1,"1418":1,"1423":3,"1429":1,"1430":8,"1445":2,"1446":3,"1448":1,"1451":2,"1496":6,"1499":13,"1500":3,"1503":2,"1506":10,"1508":6,"1509":3,"1510":7,"1511":19,"1518":3,"1523":5,"1527":19,"1530":1,"1555":2,"1559":4,"1560":6,"1564":3,"1565":1,"1582":1,"1587":2,"1634":6,"1654":1,"1663":2,"1665":6,"1666":4,"1668":8,"1670":3,"1677":15,"1680":9,"1683":3,"1685":3,"1686":3,"1700":1,"1871":3,"1932":40,"1933":11,"1934":11,"1935":3,"1937":1,"1938":3,"1941":1,"1942":1,"1943":10,"1958":1,"2075":6,"2112":34,"2113":9,"2156":2,"2161":6,"2164":2,"2167":2,"2168":2,"2169":12,"2170":7,"2171":2,"2179":3,"2217":4,"2228":8,"2279":1,"2324":1,"2355":329,"2367":3,"2373":55,"2374":63,"2378":41,"2383":2,"2385":2,"2386":36,"2387":24,"2388":34,"2389":13,"2390":23,"2391":36,"2392":64,"2393":63,"2394":37,"2395":3,"2397":1,"2399":41,"2403":7,"2405":10,"2407":72,"2408":22,"2410":64,"2411":2,"2413":7,"2414":7,"2415":4,"2490":2,"2571":3,"2605":1,"2614":8,"2616":1,"2701":1,"2727":2,"2728":2,"2730":3,"2731":9,"2732":14,"2733":9,"2734":19,"2735":16,"2736":9,"2737":6,"2738":19,"2746":5,"2747":17,"2748":1}}],["kent",{"2":{"2750":1}}],["kerpleplork",{"2":{"556":4}}],["kernel",{"0":{"2322":1},"2":{"199":1,"1240":1,"2355":1,"2556":1}}],["kept",{"2":{"529":1,"609":1,"660":1,"1573":1,"1864":1,"2446":1,"2546":1}}],["keaboard",{"2":{"253":2}}],["kezewa",{"2":{"241":2,"249":1}}],["kestra",{"2":{"211":1}}],["kegen",{"2":{"191":1,"211":1}}],["kelowna",{"2":{"143":2}}],["keeb",{"2":{"2575":6}}],["keebzdotnet",{"2":{"211":1}}],["keebs",{"2":{"149":8,"176":1}}],["keebio",{"0":{"45":1},"2":{"45":1,"114":3,"134":1,"191":1,"199":2,"222":1,"277":1,"1312":1,"2131":1}}],["keeps",{"2":{"1302":1,"1303":2}}],["keeping",{"2":{"481":1,"689":1,"1269":1,"1803":1,"2152":1,"2308":1,"2719":1,"2737":1}}],["keep",{"2":{"6":1,"74":2,"113":1,"124":1,"194":1,"211":2,"364":1,"453":2,"457":1,"468":1,"479":1,"502":1,"551":1,"556":1,"560":2,"587":1,"615":1,"616":2,"660":1,"1126":1,"1294":1,"1302":1,"1331":1,"1338":1,"1351":1,"1364":1,"1471":1,"1497":1,"1558":1,"1582":1,"1655":1,"1807":1,"1855":1,"2112":1,"2147":1,"2161":1,"2236":1,"2263":1,"2272":2,"2273":2,"2274":1,"2276":1,"2279":1,"2303":1,"2305":1,"2306":1,"2308":1,"2311":1,"2420":1,"2424":1,"2443":1,"2444":1,"2478":2,"2479":1,"2497":2,"2501":1,"2510":1,"2564":1,"2568":3,"2574":1,"2576":1,"2578":1,"2674":1,"2757":1}}],["keylog",{"2":{"2705":2}}],["keylight",{"2":{"1726":1,"1947":1,"1958":1}}],["key3",{"2":{"2311":6}}],["key2",{"2":{"2311":10}}],["key0",{"2":{"2311":6}}],["key1",{"2":{"2153":1,"2311":6}}],["keyreleases",{"2":{"1730":2,"1954":2}}],["keyrepeating",{"2":{"1412":1,"1425":1,"1430":1}}],["keyrepeat",{"2":{"1411":1,"1412":1,"1424":1}}],["keyrecords",{"2":{"1869":1}}],["keyrecord",{"2":{"22":3,"149":1,"194":2,"195":2,"534":2,"572":1,"573":2,"588":1,"1252":1,"1302":1,"1303":1,"1332":1,"1344":1,"1359":2,"1360":2,"1375":1,"1384":1,"1385":2,"1416":1,"1423":2,"1430":3,"1445":1,"1446":1,"1519":2,"1556":1,"1581":1,"1634":1,"1792":1,"1830":1,"1858":1,"1859":1,"1870":2,"1871":1,"1878":1,"1880":1,"1935":1,"1937":1,"1938":1,"1939":1,"1940":1,"1941":1,"1943":2,"2044":2,"2078":1,"2152":2,"2168":1,"2171":1,"2301":1,"2413":1,"2414":1,"2415":1,"2604":1,"2727":1,"2728":2,"2735":1,"2736":1,"2737":1,"2738":1,"2749":42}}],["keyup",{"2":{"1299":1,"1365":1,"1367":1,"1559":2,"2075":2,"2674":2,"2688":2,"2695":2}}],["keydown",{"2":{"1299":1,"1335":1,"1365":1,"1366":1,"1559":2,"1954":1,"2075":2,"2674":2,"2688":1,"2695":1}}],["keyed",{"2":{"610":1}}],["keyevent",{"2":{"211":1,"573":1,"1874":2,"2749":1}}],["key>",{"2":{"416":1,"438":2,"439":2}}],["key=value",{"2":{"374":1}}],["keypos",{"2":{"573":1,"1958":1,"2155":2}}],["keypads",{"2":{"266":1}}],["keypad",{"2":{"181":2,"222":1,"1273":1,"1279":1,"1634":1,"2355":20,"2385":1,"2389":1,"2393":1,"2394":19}}],["keypresses",{"0":{"1243":1},"2":{"1335":1,"1360":1,"1553":1,"1730":1,"1954":1,"2070":1,"2129":1,"2519":1,"2648":1}}],["keypress",{"0":{"1252":1,"1253":1},"2":{"98":1,"1252":1,"1299":1,"1340":1,"1406":1,"1554":1,"1556":1,"1572":1,"1954":1,"2152":1,"2379":2,"2649":1,"2687":1}}],["keyhive",{"2":{"159":10,"160":3}}],["keycap",{"2":{"2701":1}}],["keycaps",{"2":{"2145":1,"2625":1}}],["keycapsss",{"2":{"249":1}}],["keychron",{"2":{"134":1,"176":1,"191":4,"211":2,"226":14,"236":5,"249":3,"266":2}}],["keycode",{"0":{"16":2,"38":1,"157":1,"231":1,"547":1,"570":1,"571":1,"1344":1,"1694":1,"1857":1,"2079":1,"2153":1,"2203":1,"2216":1,"2640":1,"2747":1},"1":{"572":1,"573":1,"1695":1,"1696":1,"2204":1,"2205":1,"2217":1,"2218":1},"2":{"3":1,"7":1,"15":1,"16":1,"22":4,"38":1,"112":1,"133":1,"134":3,"156":3,"157":1,"160":2,"167":1,"182":4,"188":9,"191":15,"194":9,"195":5,"198":2,"199":7,"222":5,"231":25,"235":1,"236":1,"249":1,"255":2,"259":1,"266":2,"277":2,"504":2,"505":3,"534":14,"540":6,"547":2,"569":2,"570":2,"572":3,"573":3,"588":1,"624":1,"626":1,"1245":1,"1252":2,"1267":1,"1270":1,"1278":2,"1283":3,"1299":1,"1302":4,"1303":4,"1332":4,"1335":1,"1336":4,"1344":7,"1359":14,"1360":5,"1364":1,"1368":1,"1370":1,"1375":3,"1384":2,"1385":7,"1404":6,"1416":2,"1423":5,"1430":13,"1431":2,"1434":1,"1439":1,"1442":1,"1443":1,"1445":2,"1446":15,"1451":3,"1452":3,"1499":2,"1500":2,"1506":3,"1509":1,"1511":2,"1512":1,"1518":2,"1519":2,"1523":3,"1527":1,"1530":1,"1555":2,"1559":1,"1581":1,"1582":2,"1634":2,"1652":1,"1653":1,"1669":1,"1670":6,"1677":5,"1679":1,"1685":2,"1694":1,"1695":2,"1696":1,"1699":1,"1700":1,"1703":2,"1706":3,"1709":4,"1712":5,"1791":1,"1792":2,"1793":1,"1794":1,"1797":1,"1830":2,"1858":2,"1859":2,"1864":1,"1870":2,"1871":3,"1878":3,"1880":2,"1930":2,"1931":1,"1932":1,"1933":11,"1934":3,"1935":5,"1937":2,"1938":2,"1939":2,"1940":3,"1941":7,"1942":6,"1943":11,"1948":1,"1958":1,"2034":1,"2044":4,"2045":1,"2063":1,"2072":1,"2075":5,"2078":3,"2110":1,"2112":3,"2113":3,"2152":3,"2161":7,"2164":1,"2168":3,"2170":5,"2171":2,"2173":1,"2182":3,"2203":1,"2204":2,"2216":1,"2217":2,"2218":1,"2228":39,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":2,"2247":2,"2249":2,"2263":1,"2301":1,"2322":2,"2323":2,"2324":1,"2381":1,"2396":1,"2397":1,"2398":1,"2401":2,"2403":3,"2406":3,"2410":2,"2411":4,"2413":5,"2414":5,"2415":2,"2565":1,"2567":1,"2572":1,"2604":2,"2605":1,"2608":1,"2609":1,"2610":1,"2674":1,"2686":1,"2701":3,"2709":3,"2727":2,"2728":5,"2735":2,"2736":2,"2737":3,"2738":8,"2746":1,"2747":1,"2749":41}}],["keycodes",{"0":{"3":1,"7":1,"15":1,"182":1,"188":1,"219":1,"254":1,"534":1,"569":1,"1267":1,"1268":1,"1269":1,"1408":1,"1443":1,"1456":1,"1494":1,"1509":1,"1512":1,"1566":1,"1572":1,"1635":1,"1653":1,"1669":1,"1687":1,"1727":1,"1793":1,"1883":1,"1931":1,"1948":1,"2034":1,"2069":1,"2075":1,"2106":1,"2110":1,"2156":1,"2173":1,"2184":1,"2305":1,"2354":1,"2355":1,"2356":1,"2370":1,"2385":1,"2396":1,"2399":1,"2571":1,"2572":1,"2701":1},"1":{"570":1,"571":1,"572":1,"573":1,"1567":1,"1573":1,"1574":1,"1575":1,"1576":1,"1577":1,"1578":1,"1579":1,"1580":1,"2076":1,"2355":1,"2356":1,"2357":1,"2358":1,"2359":1,"2360":1,"2361":1,"2362":1,"2363":1,"2364":1,"2365":1,"2366":1,"2367":1,"2368":1,"2369":1,"2370":1,"2371":1,"2372":1,"2373":1,"2374":1,"2375":1,"2376":1,"2377":1,"2378":1,"2379":1,"2380":1,"2381":1,"2382":1,"2383":1,"2384":1,"2386":1,"2387":1,"2388":1,"2389":1,"2390":1,"2391":1,"2392":1,"2393":1,"2394":1,"2395":1,"2572":1,"2702":1,"2703":1},"2":{"3":1,"7":1,"15":1,"16":2,"38":1,"49":1,"74":1,"93":1,"94":1,"114":1,"119":1,"120":5,"149":2,"157":2,"160":2,"176":1,"182":4,"186":1,"188":25,"191":29,"194":1,"198":1,"199":8,"211":1,"219":1,"222":1,"231":3,"254":4,"255":1,"257":1,"258":1,"259":2,"266":7,"277":5,"313":1,"317":4,"318":1,"505":2,"529":1,"534":4,"557":2,"570":4,"571":1,"572":1,"621":4,"1236":1,"1265":3,"1267":3,"1268":1,"1269":1,"1271":1,"1273":1,"1276":2,"1279":2,"1300":1,"1332":2,"1336":2,"1344":3,"1354":5,"1357":10,"1359":5,"1361":2,"1370":1,"1375":2,"1379":1,"1385":4,"1398":2,"1402":1,"1403":3,"1404":3,"1406":1,"1445":4,"1446":3,"1451":1,"1498":3,"1500":1,"1506":2,"1508":1,"1509":2,"1511":1,"1512":1,"1518":1,"1524":1,"1526":1,"1528":1,"1572":1,"1573":1,"1654":1,"1655":1,"1702":1,"1705":1,"1708":1,"1711":1,"1723":1,"1787":2,"1791":2,"1792":1,"1797":1,"1801":1,"1821":2,"1830":2,"1858":1,"1859":1,"1878":1,"1881":2,"1932":4,"1933":1,"1935":1,"1943":1,"1944":1,"1948":6,"1951":1,"1954":2,"1958":1,"2032":1,"2034":4,"2035":2,"2072":1,"2075":3,"2149":3,"2150":1,"2153":2,"2161":2,"2168":1,"2170":6,"2172":1,"2178":1,"2181":2,"2182":1,"2183":2,"2203":1,"2228":1,"2263":1,"2305":1,"2315":1,"2324":1,"2325":2,"2354":1,"2355":2,"2356":1,"2370":1,"2385":2,"2393":4,"2395":1,"2396":2,"2397":2,"2398":1,"2403":2,"2407":1,"2409":1,"2411":3,"2424":2,"2490":1,"2565":1,"2566":3,"2567":1,"2571":6,"2603":1,"2614":1,"2640":2,"2643":1,"2663":1,"2687":1,"2701":1,"2702":1,"2703":2,"2705":1,"2709":3,"2723":2,"2724":1,"2740":1,"2746":2,"2747":1,"2749":1}}],["keyword",{"2":{"103":1,"120":1,"126":1,"457":1,"1354":1}}],["key",{"0":{"15":1,"42":1,"99":1,"196":2,"202":1,"272":1,"421":1,"507":1,"611":1,"1272":1,"1278":1,"1282":1,"1291":1,"1309":1,"1409":1,"1423":1,"1426":1,"1427":1,"1428":1,"1429":1,"1517":1,"1518":1,"1523":1,"1552":1,"1581":1,"1651":1,"1655":1,"1656":1,"1658":1,"1659":1,"1660":1,"1661":1,"1662":1,"1670":1,"1675":1,"1678":1,"1683":1,"1685":1,"1699":1,"1808":1,"1870":1,"1874":1,"1929":1,"1930":1,"1937":1,"1940":1,"1941":1,"2159":1,"2320":1,"2366":1,"2368":1,"2381":1,"2611":1,"2641":1,"2642":1,"2645":1,"2653":1,"2687":1,"2736":1,"2740":2},"1":{"1410":1,"1411":1,"1412":1,"1413":1,"1414":1,"1415":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"1423":1,"1424":1,"1425":1,"1426":1,"1427":1,"1428":1,"1429":1,"1430":1,"1431":1,"1432":1,"1433":1,"1434":1,"1435":1,"1436":1,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"1652":1,"1653":1,"1654":1,"1656":1,"1657":1,"1658":1,"1659":2,"1660":2,"1661":2,"1662":2,"1663":1,"1664":1,"1665":1,"1666":1,"1667":1,"1668":1,"1669":1,"1670":1,"1671":1,"1672":1,"1673":1,"1674":1,"1675":1,"1676":1,"1677":1,"1679":1,"1680":1,"1681":1,"1682":1,"1683":1,"1684":1,"1685":1,"1686":1,"1687":1,"1688":1,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1695":1,"1696":1,"1697":1,"1698":1,"1699":1,"1700":2,"1701":2,"1702":1,"1703":1,"1704":1,"1705":1,"1706":1,"1707":1,"1708":1,"1709":1,"1710":1,"1711":1,"1712":1,"1713":1,"1871":1,"1930":1,"1931":1,"1932":1,"1933":1,"1934":1,"1935":1,"1936":1,"1937":1,"1938":1,"1939":1,"1940":1,"1941":1,"1942":1,"1943":1,"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1},"2":{"22":1,"38":3,"43":1,"50":1,"63":1,"73":2,"93":2,"99":6,"110":1,"112":14,"114":7,"119":1,"134":2,"149":5,"152":1,"175":1,"176":4,"188":2,"191":7,"194":12,"195":3,"196":3,"199":7,"201":1,"202":9,"203":5,"206":2,"211":8,"218":1,"222":5,"231":1,"236":1,"249":1,"255":2,"257":1,"258":1,"259":2,"266":3,"268":1,"272":8,"277":1,"316":3,"374":11,"378":1,"413":2,"417":3,"418":1,"425":1,"426":1,"437":3,"502":1,"504":1,"505":34,"510":1,"515":9,"529":4,"530":1,"540":4,"571":8,"572":2,"573":1,"588":4,"609":1,"610":1,"612":1,"614":1,"623":2,"624":3,"626":2,"660":1,"1235":1,"1252":3,"1270":1,"1272":4,"1275":1,"1278":2,"1280":3,"1283":1,"1286":1,"1292":1,"1299":2,"1303":5,"1309":1,"1325":1,"1326":18,"1329":14,"1332":1,"1334":1,"1335":5,"1336":1,"1340":2,"1346":1,"1353":1,"1355":1,"1357":8,"1359":4,"1360":2,"1361":3,"1367":1,"1368":2,"1375":1,"1385":1,"1398":2,"1399":1,"1402":1,"1403":1,"1405":1,"1406":2,"1408":1,"1409":3,"1410":1,"1411":10,"1412":4,"1413":1,"1414":1,"1416":2,"1422":1,"1423":6,"1430":7,"1431":6,"1435":4,"1436":1,"1438":2,"1442":1,"1445":1,"1456":1,"1493":1,"1494":1,"1495":5,"1496":6,"1499":5,"1500":2,"1501":3,"1503":1,"1504":1,"1506":5,"1508":1,"1510":2,"1511":3,"1515":3,"1517":1,"1518":6,"1520":2,"1521":1,"1522":1,"1523":9,"1524":2,"1529":2,"1530":35,"1547":1,"1553":1,"1554":1,"1555":1,"1556":1,"1559":1,"1563":2,"1564":3,"1566":1,"1568":1,"1572":1,"1581":1,"1582":3,"1635":1,"1651":4,"1652":3,"1653":2,"1654":4,"1655":7,"1657":7,"1658":2,"1659":3,"1662":1,"1663":6,"1665":16,"1666":5,"1668":7,"1669":6,"1670":9,"1671":5,"1672":3,"1673":9,"1674":6,"1675":12,"1676":8,"1677":3,"1678":2,"1680":2,"1682":1,"1683":7,"1684":6,"1685":2,"1686":1,"1687":1,"1697":1,"1725":6,"1726":2,"1727":1,"1728":8,"1801":2,"1802":2,"1803":3,"1804":1,"1805":4,"1807":5,"1808":2,"1824":1,"1857":1,"1858":1,"1859":2,"1864":7,"1865":7,"1868":1,"1871":1,"1873":5,"1874":5,"1878":5,"1881":2,"1883":1,"1929":9,"1930":5,"1931":4,"1932":8,"1933":9,"1934":2,"1935":1,"1936":3,"1937":6,"1938":2,"1939":2,"1940":9,"1941":8,"1942":5,"1943":1,"1946":6,"1947":2,"1948":1,"1949":13,"1950":3,"1951":1,"1954":1,"1958":1,"1959":1,"2034":1,"2069":1,"2078":1,"2079":1,"2106":1,"2109":4,"2112":15,"2113":7,"2117":1,"2125":5,"2126":1,"2129":2,"2145":1,"2147":1,"2150":2,"2152":4,"2153":5,"2154":1,"2156":3,"2160":1,"2161":13,"2162":8,"2168":1,"2169":16,"2170":3,"2171":12,"2172":1,"2179":6,"2182":2,"2184":1,"2196":3,"2197":1,"2198":1,"2231":1,"2237":2,"2238":1,"2263":8,"2274":1,"2279":1,"2301":1,"2305":2,"2311":5,"2319":2,"2320":5,"2321":2,"2322":1,"2325":2,"2354":2,"2355":7,"2356":1,"2357":1,"2358":1,"2359":1,"2360":1,"2361":1,"2362":1,"2363":1,"2364":1,"2365":1,"2366":4,"2367":2,"2368":2,"2369":1,"2370":4,"2371":1,"2372":1,"2373":1,"2374":1,"2375":1,"2376":1,"2377":1,"2378":1,"2379":1,"2380":1,"2381":5,"2382":1,"2383":2,"2384":1,"2386":1,"2387":1,"2388":1,"2389":1,"2390":3,"2391":1,"2392":2,"2393":1,"2394":1,"2395":3,"2396":4,"2399":1,"2401":2,"2402":1,"2407":5,"2408":1,"2410":7,"2411":1,"2413":1,"2414":2,"2415":1,"2436":1,"2450":1,"2455":1,"2479":1,"2490":14,"2491":4,"2518":1,"2524":1,"2566":2,"2572":1,"2608":1,"2611":1,"2612":3,"2614":2,"2615":8,"2616":4,"2617":2,"2619":2,"2640":1,"2641":2,"2642":1,"2643":1,"2644":1,"2645":3,"2649":1,"2651":3,"2653":1,"2654":5,"2659":2,"2660":1,"2662":3,"2663":1,"2671":1,"2674":6,"2679":2,"2682":1,"2686":23,"2687":3,"2688":1,"2689":1,"2690":1,"2691":2,"2693":2,"2695":1,"2701":1,"2706":1,"2711":1,"2724":1,"2727":3,"2728":6,"2729":13,"2730":4,"2731":4,"2732":6,"2733":4,"2734":3,"2735":27,"2736":18,"2737":4,"2738":7,"2739":1,"2740":3,"2745":2,"2746":1,"2748":2,"2749":2}}],["keyswitch",{"2":{"1548":1,"1552":1,"1559":1,"2273":2,"2274":3,"2276":1,"2279":5,"2311":5,"2689":1}}],["keyswitches",{"2":{"510":1,"1454":1,"2266":1}}],["keystroke",{"2":{"1360":2}}],["keystrokes",{"2":{"1353":1,"1438":1,"1950":1,"2072":1,"2076":1,"2169":1,"2179":1,"2225":1,"2584":1}}],["keys",{"0":{"112":1,"291":1,"422":1,"1271":1,"1273":1,"1279":1,"1280":1,"1291":1,"1299":1,"1307":1,"1506":1,"1668":1,"1702":1,"1705":1,"1708":1,"1711":1,"1798":1,"1799":1,"1800":1,"1802":1,"1865":1,"1869":1,"1870":1,"1871":1,"1878":1,"1933":1,"1936":1,"1943":1,"2170":1,"2171":1,"2318":1,"2357":1,"2372":1,"2374":1,"2375":1,"2379":1,"2387":1,"2389":1,"2393":1,"2395":1,"2490":1,"2616":1,"2619":1,"2620":1,"2690":1,"2733":1},"1":{"1673":1,"1674":1,"1675":1,"1703":1,"1704":1,"1706":1,"1707":1,"1709":1,"1710":1,"1712":1,"1713":1,"1799":1,"1800":2,"1801":2,"1802":1,"1803":2,"1804":2,"1805":2,"1806":2,"1807":2,"1808":2,"1809":1,"1870":1,"1871":2,"1934":1,"1935":1,"1937":1,"1938":1,"1939":1,"2319":1,"2320":1,"2321":1,"2322":1,"2323":1,"2324":1,"2325":1,"2326":1,"2491":1},"2":{"7":2,"70":1,"74":1,"98":2,"112":2,"114":2,"119":2,"134":2,"143":4,"149":1,"160":1,"176":5,"182":2,"190":2,"191":6,"194":2,"196":3,"199":1,"201":1,"202":3,"211":6,"236":1,"255":1,"259":1,"263":1,"277":1,"374":1,"413":1,"418":1,"502":1,"505":4,"515":2,"525":1,"540":2,"546":1,"548":1,"610":1,"611":1,"614":1,"1271":2,"1273":1,"1275":2,"1278":1,"1280":2,"1284":2,"1286":1,"1300":2,"1303":1,"1307":1,"1326":1,"1329":1,"1334":1,"1335":1,"1338":1,"1347":1,"1355":1,"1357":3,"1360":2,"1361":1,"1371":1,"1373":1,"1386":1,"1403":1,"1405":1,"1412":3,"1416":6,"1417":1,"1419":1,"1420":1,"1423":2,"1426":1,"1427":1,"1428":1,"1429":1,"1430":4,"1431":1,"1432":1,"1433":1,"1434":1,"1435":2,"1445":1,"1446":3,"1454":1,"1497":1,"1499":2,"1500":2,"1503":6,"1504":1,"1506":2,"1508":5,"1510":1,"1514":1,"1515":3,"1517":1,"1518":10,"1524":1,"1527":1,"1530":1,"1553":1,"1555":1,"1582":7,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"1654":3,"1655":4,"1668":1,"1673":1,"1674":2,"1676":4,"1677":1,"1678":1,"1680":3,"1683":1,"1684":2,"1686":1,"1728":1,"1798":1,"1799":3,"1800":1,"1802":6,"1805":1,"1806":1,"1808":1,"1809":2,"1832":1,"1836":1,"1864":3,"1865":1,"1869":4,"1870":2,"1871":2,"1874":2,"1881":1,"1921":1,"1932":2,"1933":1,"1935":2,"1936":3,"1937":1,"1938":1,"1939":3,"1940":1,"1943":4,"1949":4,"1950":4,"1958":3,"2066":1,"2108":1,"2111":1,"2112":10,"2113":2,"2122":1,"2145":2,"2147":4,"2148":2,"2150":3,"2152":10,"2153":4,"2160":1,"2161":2,"2169":1,"2171":4,"2172":1,"2182":2,"2263":1,"2266":1,"2277":1,"2279":1,"2305":2,"2311":5,"2326":1,"2354":1,"2367":1,"2370":3,"2372":1,"2373":1,"2379":4,"2396":3,"2400":1,"2402":3,"2403":1,"2405":1,"2406":1,"2407":1,"2408":2,"2414":1,"2417":1,"2423":1,"2424":1,"2450":3,"2455":1,"2490":12,"2491":1,"2559":2,"2571":1,"2603":1,"2610":1,"2611":1,"2614":2,"2615":1,"2616":2,"2617":2,"2619":1,"2620":3,"2624":1,"2628":1,"2645":1,"2661":1,"2671":1,"2680":1,"2686":1,"2690":2,"2691":1,"2702":1,"2705":1,"2706":1,"2726":1,"2727":1,"2728":7,"2729":3,"2735":4,"2736":2,"2738":1,"2740":1,"2745":1,"2746":2}}],["keymapping",{"2":{"1281":1}}],["keymap=",{"2":{"2421":1}}],["keymap=skully",{"2":{"424":1}}],["keymap=none",{"2":{"423":1,"424":1}}],["keymap=default",{"2":{"370":1,"414":1,"415":1,"417":1,"424":1}}],["keymap>",{"2":{"393":1,"394":1,"2229":1,"2252":1,"2425":1,"2445":1,"2446":1,"2454":1}}],["keymap",{"0":{"5":1,"272":1,"386":1,"390":1,"500":1,"539":1,"540":1,"541":1,"568":1,"623":1,"1266":1,"1270":1,"1346":1,"1348":1,"1381":1,"2260":1,"2264":1,"2400":1,"2401":1,"2402":1,"2404":1,"2422":1,"2423":1,"2436":1,"2440":1,"2445":1,"2446":1,"2470":1,"2565":1,"2643":1},"1":{"1267":1,"1268":1,"1269":1,"1270":1,"1271":1,"1272":1,"1273":1,"1274":1,"1275":1,"1276":1,"1277":1,"1278":1,"1279":1,"1280":1,"1281":1,"1282":1,"1283":1,"1284":1,"1347":1,"1348":1,"1349":2,"1350":1,"1351":1,"1352":1,"2401":1,"2402":2,"2403":2,"2404":1,"2405":2,"2406":2,"2407":2,"2408":2},"2":{"4":1,"5":4,"18":4,"31":1,"32":1,"34":1,"36":1,"45":1,"48":1,"55":1,"75":2,"86":1,"89":1,"90":1,"92":4,"93":3,"94":1,"114":19,"119":2,"120":3,"123":1,"125":7,"133":1,"134":7,"149":5,"154":1,"160":4,"173":1,"176":19,"185":7,"189":1,"191":10,"199":14,"202":2,"206":1,"211":14,"213":1,"218":1,"222":6,"228":1,"229":1,"236":7,"241":1,"249":7,"253":1,"255":2,"256":1,"266":7,"270":1,"272":2,"273":1,"277":6,"305":1,"313":2,"314":1,"315":2,"316":2,"318":1,"331":1,"352":1,"370":16,"371":3,"374":7,"377":1,"378":4,"379":1,"380":5,"381":4,"386":6,"388":6,"390":5,"393":7,"394":7,"395":3,"401":2,"404":1,"414":4,"415":1,"417":1,"422":1,"423":1,"424":2,"425":2,"426":4,"441":2,"458":3,"496":1,"497":1,"500":1,"502":1,"522":3,"526":1,"527":2,"528":1,"529":8,"530":8,"533":2,"534":2,"537":1,"538":1,"539":1,"541":4,"548":1,"556":2,"559":1,"568":3,"570":2,"573":2,"577":1,"579":1,"583":1,"586":1,"587":1,"588":3,"591":1,"595":1,"601":1,"614":2,"623":1,"1238":1,"1245":2,"1252":1,"1266":1,"1269":1,"1270":4,"1275":1,"1276":1,"1279":1,"1312":1,"1332":4,"1333":1,"1334":1,"1336":1,"1338":1,"1344":1,"1345":2,"1346":4,"1347":1,"1348":1,"1352":1,"1354":3,"1355":3,"1359":2,"1362":2,"1375":1,"1376":3,"1377":2,"1378":1,"1379":2,"1383":9,"1384":1,"1385":11,"1397":1,"1398":1,"1400":1,"1404":1,"1405":1,"1413":1,"1415":1,"1416":1,"1434":1,"1440":2,"1445":1,"1500":1,"1507":1,"1508":1,"1509":1,"1512":1,"1527":4,"1530":1,"1548":4,"1549":2,"1553":1,"1554":1,"1559":4,"1560":2,"1564":1,"1593":1,"1633":1,"1652":1,"1657":1,"1665":1,"1679":1,"1716":1,"1729":2,"1733":1,"1778":1,"1783":1,"1791":1,"1800":1,"1801":1,"1803":1,"1804":1,"1805":1,"1806":1,"1807":1,"1813":2,"1826":1,"1830":1,"1865":1,"1866":1,"1870":1,"1876":1,"1877":1,"1878":1,"1917":2,"1921":1,"1930":1,"1933":1,"1936":1,"1952":2,"1957":1,"1958":1,"2023":1,"2028":1,"2032":1,"2042":1,"2044":1,"2078":1,"2109":2,"2126":1,"2130":1,"2137":2,"2145":1,"2150":2,"2154":2,"2157":1,"2161":2,"2164":3,"2169":5,"2170":1,"2171":2,"2172":1,"2178":1,"2181":4,"2182":5,"2183":1,"2243":1,"2245":2,"2247":2,"2249":2,"2252":5,"2255":4,"2259":2,"2260":6,"2261":2,"2262":6,"2263":5,"2264":1,"2274":1,"2279":1,"2293":1,"2299":3,"2300":2,"2302":2,"2315":1,"2349":1,"2354":1,"2356":1,"2396":1,"2401":3,"2402":4,"2404":3,"2405":2,"2409":2,"2410":1,"2411":1,"2417":1,"2421":2,"2422":6,"2423":4,"2425":2,"2428":2,"2433":1,"2435":7,"2436":4,"2437":2,"2438":6,"2439":1,"2440":3,"2441":4,"2445":7,"2446":4,"2452":2,"2454":2,"2469":1,"2470":1,"2502":1,"2512":2,"2565":2,"2566":10,"2567":5,"2571":2,"2572":1,"2577":2,"2614":2,"2616":2,"2686":2,"2701":2,"2702":2,"2703":70,"2709":2,"2711":2,"2723":1,"2727":1,"2728":2,"2735":1,"2736":1,"2737":1,"2738":1,"2746":2,"2747":1,"2748":1,"2749":1,"2756":1}}],["keymaps",{"0":{"17":1,"36":1,"120":1,"265":1,"275":1,"383":1,"528":1,"1352":1,"1354":1,"1358":1,"1362":1,"1376":1,"2406":1},"1":{"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"1355":1,"1356":1,"1357":1,"1359":1,"1360":1,"1361":1,"1362":1,"1363":1,"1364":1,"1365":1,"1366":1,"1367":1,"1368":1,"1369":1,"1370":1,"1371":1,"1372":1,"1373":1,"1374":1,"1375":1,"1377":1,"1378":1,"1379":1,"1380":1,"1381":1,"1382":1,"1383":1,"1384":1,"1385":1,"2407":1,"2408":1},"2":{"0":1,"2":1,"3":1,"4":2,"5":1,"7":1,"8":1,"9":1,"15":1,"17":2,"19":1,"32":1,"36":3,"39":1,"52":1,"60":1,"65":1,"73":1,"74":1,"75":2,"107":1,"114":3,"125":1,"134":1,"149":2,"154":1,"156":2,"160":2,"167":1,"173":2,"176":3,"182":2,"185":1,"191":8,"199":4,"201":1,"211":2,"213":4,"220":1,"222":1,"224":2,"228":5,"231":1,"232":1,"236":2,"238":1,"249":7,"265":5,"266":5,"268":2,"275":3,"277":1,"312":1,"318":1,"337":1,"352":1,"354":2,"363":1,"370":3,"371":1,"378":2,"380":1,"383":2,"388":1,"390":1,"401":1,"498":2,"519":2,"529":5,"530":2,"556":1,"559":1,"560":2,"622":1,"623":1,"641":1,"1252":1,"1253":1,"1265":3,"1266":1,"1270":1,"1346":1,"1359":3,"1378":1,"1381":1,"1385":2,"1393":2,"1792":1,"1918":1,"2145":1,"2146":1,"2164":1,"2171":1,"2252":2,"2255":1,"2259":2,"2261":1,"2262":3,"2299":2,"2300":2,"2302":2,"2305":1,"2400":1,"2401":1,"2406":4,"2417":1,"2422":1,"2423":1,"2424":1,"2440":1,"2441":7,"2443":2,"2445":2,"2446":1,"2447":1,"2448":1,"2456":1,"2565":6,"2566":5,"2567":4,"2723":1,"2724":2,"2725":1,"2747":1}}],["keyboardproject",{"2":{"2553":1}}],["keyboard=true",{"2":{"1245":1}}],["keyboard=clueboard",{"2":{"414":1,"415":1,"424":1,"2421":1}}],["keyboardname",{"2":{"669":1,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1,"2259":2}}],["keyboard>",{"2":{"393":1,"394":1,"564":1,"1348":1,"1349":2,"1871":1,"2229":1,"2252":1,"2425":1,"2445":1,"2446":1,"2454":1,"2469":1}}],["keyboard|keymap|kbfirmware",{"0":{"173":1},"2":{"176":1}}],["keyboardio",{"2":{"37":2,"176":1}}],["keyboard",{"0":{"29":1,"37":1,"44":1,"55":1,"59":1,"86":1,"102":1,"122":1,"143":1,"159":1,"168":1,"181":1,"197":1,"207":1,"217":1,"226":1,"241":1,"253":1,"262":1,"270":1,"291":1,"320":1,"385":1,"389":1,"498":1,"508":1,"521":1,"537":1,"538":1,"543":1,"567":1,"574":1,"575":1,"576":1,"577":1,"581":1,"582":1,"583":1,"587":1,"589":1,"591":1,"592":1,"595":1,"624":1,"1243":1,"1263":1,"1286":1,"1350":1,"1355":1,"1371":1,"1373":1,"1717":1,"1719":1,"1799":1,"1852":1,"1854":1,"1921":1,"1922":1,"2114":1,"2145":1,"2259":1,"2283":1,"2292":1,"2294":1,"2296":1,"2301":1,"2302":1,"2304":1,"2306":1,"2311":1,"2312":1,"2449":1,"2450":1,"2451":1,"2453":1,"2454":1,"2502":1,"2543":1,"2553":1,"2566":1,"2601":1,"2608":1,"2613":1,"2697":1},"1":{"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"45":1,"60":1,"509":1,"510":1,"511":1,"568":1,"575":1,"576":2,"577":2,"578":1,"579":1,"580":1,"581":1,"582":2,"583":2,"588":1,"590":1,"591":1,"593":1,"594":1,"595":1,"1264":1,"1351":1,"1352":1,"1800":1,"1801":1,"2115":1,"2116":1,"2117":1,"2118":1,"2119":1,"2120":1,"2121":1,"2122":1,"2123":1,"2124":1,"2125":1,"2126":1,"2127":1,"2128":1,"2129":1,"2130":1,"2131":1,"2132":1,"2133":1,"2134":1,"2293":1,"2294":1,"2295":1,"2296":1,"2297":2,"2298":2,"2299":2,"2300":2,"2301":2,"2302":2,"2303":1,"2304":1,"2305":2,"2306":1,"2307":1,"2308":1,"2309":1,"2310":1,"2313":1,"2314":1,"2315":1,"2316":1,"2317":1,"2450":1,"2451":1,"2452":2,"2453":2,"2454":1,"2455":1,"2554":1,"2555":1,"2556":1,"2557":1,"2558":1,"2559":1,"2560":1,"2561":1,"2562":1,"2602":1,"2603":1,"2604":1,"2605":1,"2606":1,"2607":1,"2608":1,"2609":1,"2610":1,"2611":1,"2612":1,"2614":1,"2615":1,"2616":1,"2617":1,"2618":1,"2619":1,"2620":1},"2":{"4":2,"14":2,"31":2,"34":3,"36":1,"50":6,"55":1,"56":1,"62":1,"67":3,"70":5,"74":1,"75":2,"76":2,"82":2,"86":6,"90":3,"92":1,"93":2,"94":3,"99":1,"102":2,"105":4,"107":1,"110":2,"111":2,"112":1,"114":7,"116":2,"119":1,"120":1,"122":2,"124":1,"125":5,"133":4,"134":10,"138":1,"143":4,"149":14,"159":2,"160":3,"168":2,"169":1,"173":2,"176":8,"181":2,"184":1,"185":5,"191":10,"197":2,"199":6,"201":3,"204":1,"207":2,"209":3,"211":10,"217":3,"218":1,"221":2,"222":11,"226":2,"229":3,"233":2,"234":1,"236":11,"238":1,"240":1,"241":4,"249":12,"253":4,"255":1,"262":3,"263":2,"265":1,"266":67,"270":4,"277":7,"291":1,"305":1,"307":1,"311":1,"313":4,"318":2,"320":2,"322":1,"334":2,"336":1,"337":1,"370":10,"371":3,"374":2,"375":2,"378":7,"380":1,"381":4,"383":3,"384":2,"385":3,"386":4,"388":1,"389":4,"391":4,"393":6,"394":6,"395":3,"401":3,"404":1,"414":4,"415":2,"421":1,"422":1,"425":2,"426":6,"437":2,"496":3,"497":1,"498":2,"502":8,"504":2,"506":2,"508":2,"511":1,"513":3,"515":7,"516":4,"519":3,"521":3,"528":1,"529":5,"530":2,"533":2,"534":6,"535":3,"537":4,"540":1,"556":2,"559":5,"563":1,"564":1,"565":1,"566":3,"567":2,"568":3,"573":1,"574":4,"576":3,"577":3,"579":1,"580":6,"581":1,"582":1,"583":3,"584":2,"586":1,"587":1,"588":1,"589":1,"590":2,"591":1,"592":3,"595":1,"601":1,"606":1,"609":3,"614":2,"623":1,"624":6,"625":2,"626":5,"627":6,"629":2,"660":1,"668":1,"681":2,"688":1,"689":1,"690":1,"691":1,"693":1,"733":1,"759":1,"791":1,"821":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1121":1,"1124":1,"1127":1,"1130":2,"1133":1,"1147":1,"1226":1,"1230":1,"1235":1,"1236":1,"1238":1,"1242":1,"1243":3,"1245":2,"1246":1,"1247":1,"1248":1,"1254":1,"1257":1,"1264":1,"1268":1,"1271":1,"1273":1,"1274":1,"1275":1,"1278":3,"1279":1,"1280":4,"1281":2,"1283":2,"1284":1,"1286":2,"1287":5,"1290":1,"1294":1,"1298":2,"1300":2,"1302":1,"1303":1,"1312":1,"1314":2,"1321":1,"1326":1,"1329":1,"1331":1,"1332":3,"1333":1,"1334":1,"1335":1,"1337":1,"1338":1,"1340":1,"1341":4,"1345":1,"1346":1,"1347":4,"1348":1,"1349":1,"1351":7,"1352":1,"1353":1,"1354":1,"1355":1,"1357":1,"1359":1,"1364":2,"1376":1,"1377":1,"1385":6,"1386":1,"1393":1,"1398":2,"1399":1,"1403":1,"1404":2,"1405":5,"1406":1,"1410":1,"1435":1,"1436":1,"1440":1,"1454":1,"1457":1,"1463":2,"1464":1,"1469":2,"1470":1,"1494":1,"1495":1,"1496":1,"1498":1,"1499":2,"1528":1,"1530":4,"1549":1,"1553":4,"1558":2,"1560":3,"1563":1,"1565":1,"1567":1,"1573":2,"1579":1,"1593":1,"1594":1,"1655":3,"1673":3,"1674":3,"1675":1,"1676":2,"1677":1,"1714":3,"1715":1,"1716":4,"1717":1,"1718":1,"1719":2,"1720":1,"1721":1,"1725":9,"1726":1,"1728":1,"1729":3,"1730":2,"1733":1,"1776":1,"1779":1,"1780":1,"1785":1,"1792":1,"1798":1,"1799":1,"1812":1,"1813":3,"1816":5,"1825":1,"1826":1,"1828":3,"1829":2,"1830":1,"1845":1,"1849":1,"1853":2,"1854":1,"1862":1,"1864":2,"1870":1,"1902":2,"1904":1,"1905":1,"1906":1,"1907":1,"1918":1,"1921":4,"1922":1,"1935":4,"1946":9,"1947":1,"1948":1,"1949":6,"1950":1,"1952":3,"1954":2,"1957":1,"1958":1,"1959":1,"1960":1,"2021":1,"2024":1,"2025":1,"2030":1,"2031":3,"2032":1,"2041":1,"2042":6,"2043":1,"2044":1,"2060":1,"2061":1,"2063":2,"2064":1,"2066":1,"2067":1,"2076":2,"2102":1,"2117":1,"2118":1,"2121":2,"2122":2,"2125":2,"2126":5,"2127":1,"2128":2,"2129":9,"2130":9,"2131":2,"2134":1,"2137":4,"2140":5,"2141":1,"2145":3,"2146":4,"2149":3,"2150":2,"2154":1,"2157":2,"2160":1,"2167":2,"2176":1,"2177":1,"2183":3,"2194":1,"2229":1,"2233":1,"2237":2,"2245":3,"2247":3,"2249":3,"2250":1,"2252":5,"2257":2,"2259":6,"2261":3,"2262":11,"2263":7,"2264":3,"2266":2,"2268":5,"2271":2,"2276":1,"2277":7,"2278":1,"2279":4,"2280":1,"2281":2,"2283":1,"2284":1,"2293":2,"2294":3,"2295":4,"2296":4,"2297":1,"2298":1,"2299":4,"2300":5,"2301":3,"2302":3,"2303":3,"2304":1,"2305":6,"2306":1,"2308":1,"2309":1,"2311":4,"2313":1,"2320":1,"2321":2,"2322":2,"2323":1,"2325":1,"2330":3,"2332":4,"2334":3,"2336":1,"2338":1,"2340":1,"2342":1,"2349":1,"2356":5,"2370":2,"2385":1,"2393":1,"2396":3,"2397":1,"2398":1,"2405":1,"2406":1,"2407":2,"2411":1,"2417":5,"2418":1,"2420":1,"2421":5,"2422":2,"2423":1,"2425":1,"2426":1,"2427":2,"2429":1,"2435":1,"2436":1,"2439":1,"2441":1,"2446":1,"2448":1,"2449":1,"2450":7,"2451":2,"2452":3,"2454":5,"2455":3,"2457":1,"2469":4,"2490":2,"2491":1,"2502":1,"2508":1,"2512":2,"2513":2,"2515":1,"2523":5,"2524":2,"2525":2,"2526":1,"2533":1,"2540":1,"2553":10,"2554":2,"2555":1,"2556":7,"2557":1,"2558":1,"2559":1,"2564":2,"2565":1,"2566":26,"2567":4,"2572":5,"2573":1,"2576":2,"2577":4,"2581":1,"2584":1,"2608":1,"2609":1,"2614":6,"2615":8,"2616":1,"2619":1,"2620":3,"2624":2,"2625":1,"2626":1,"2628":1,"2630":1,"2632":2,"2633":2,"2639":1,"2643":1,"2646":1,"2647":1,"2650":1,"2652":1,"2657":2,"2658":2,"2665":1,"2668":1,"2669":1,"2671":4,"2672":7,"2673":2,"2674":1,"2686":4,"2688":1,"2695":1,"2697":2,"2699":5,"2701":5,"2702":1,"2711":1,"2723":1,"2725":4,"2727":2,"2738":1,"2740":2,"2741":1,"2744":6,"2745":2,"2746":3,"2748":1,"2749":1,"2756":1}}],["keyboards",{"0":{"41":1,"54":1,"116":1,"382":1,"559":1,"568":1,"1346":1,"1381":1,"1496":1,"1558":1,"2271":1,"2614":1},"1":{"42":1,"43":1,"55":1,"56":1,"57":1,"58":1,"1347":1,"1348":1,"1349":1,"1350":1,"1351":1,"1352":1},"2":{"2":1,"14":1,"28":1,"30":1,"33":1,"35":2,"36":3,"37":1,"43":3,"49":1,"50":1,"58":1,"65":2,"67":1,"69":2,"70":5,"73":2,"74":3,"86":3,"90":1,"92":1,"93":2,"102":1,"107":3,"109":1,"110":1,"114":9,"116":1,"118":1,"122":1,"123":1,"124":2,"132":1,"134":5,"141":1,"143":1,"149":14,"159":1,"160":2,"168":1,"169":2,"173":2,"176":2,"181":1,"191":4,"197":1,"199":2,"201":3,"209":1,"211":3,"213":2,"218":1,"221":1,"222":5,"235":1,"236":4,"240":2,"249":17,"251":1,"262":1,"266":8,"277":3,"282":1,"317":4,"363":1,"370":4,"371":1,"373":1,"374":3,"375":2,"378":1,"380":1,"382":2,"389":1,"390":1,"391":1,"401":1,"429":1,"448":1,"493":1,"499":2,"502":2,"506":1,"508":1,"509":1,"515":1,"519":1,"521":1,"529":1,"530":1,"538":1,"552":1,"556":1,"559":4,"560":3,"564":1,"606":5,"607":1,"622":1,"626":1,"630":1,"641":1,"1121":1,"1124":1,"1127":2,"1130":2,"1132":3,"1133":2,"1135":1,"1137":1,"1138":1,"1241":1,"1242":1,"1244":1,"1257":1,"1265":3,"1272":1,"1276":1,"1278":1,"1310":1,"1316":1,"1317":1,"1329":2,"1330":2,"1346":1,"1352":1,"1377":1,"1378":1,"1384":1,"1385":1,"1393":2,"1403":1,"1405":1,"1430":1,"1436":3,"1454":1,"1455":1,"1457":1,"1459":1,"1494":1,"1495":3,"1501":1,"1527":1,"1528":1,"1547":1,"1573":1,"1714":1,"1730":1,"1816":1,"1817":1,"1824":1,"1849":2,"1863":1,"1879":1,"1954":1,"1958":1,"1959":1,"2031":1,"2032":2,"2035":1,"2042":2,"2044":1,"2061":1,"2114":4,"2118":2,"2125":1,"2131":1,"2140":1,"2146":1,"2225":1,"2229":2,"2230":2,"2232":1,"2234":1,"2241":1,"2243":1,"2244":1,"2245":1,"2247":1,"2252":1,"2255":1,"2257":1,"2258":1,"2259":2,"2261":2,"2262":4,"2263":1,"2268":1,"2277":1,"2280":1,"2284":1,"2292":1,"2293":1,"2295":3,"2296":1,"2299":13,"2300":13,"2307":3,"2311":1,"2313":1,"2318":1,"2345":1,"2355":1,"2394":1,"2400":1,"2421":3,"2422":2,"2425":1,"2427":1,"2441":1,"2445":1,"2450":1,"2454":1,"2456":1,"2469":3,"2539":1,"2541":3,"2542":2,"2543":1,"2544":1,"2545":1,"2546":1,"2553":3,"2564":1,"2566":3,"2567":1,"2575":6,"2613":1,"2614":3,"2653":1,"2671":3,"2672":1,"2673":1,"2688":1,"2695":1,"2701":1,"2711":1,"2725":3,"2742":1}}],["g5",{"2":{"1793":1,"2371":1}}],["g3",{"2":{"1793":1,"2371":1}}],["g1",{"2":{"1793":1,"2371":1}}],["g♯",{"2":{"1793":6,"2371":6}}],["gs5",{"2":{"1793":1,"2371":1}}],["gs4",{"2":{"1793":1,"2371":1}}],["gs3",{"2":{"1793":1,"2371":1}}],["gs2",{"2":{"1793":1,"2371":1}}],["gs1",{"2":{"1793":1,"2371":1}}],["gs",{"2":{"1793":1,"2371":1}}],["gskt00",{"2":{"122":2}}],["g♭",{"2":{"1793":6,"2371":6}}],["gb5",{"2":{"1793":1,"2371":1}}],["gb4",{"2":{"1793":1,"2371":1}}],["gb3",{"2":{"1793":1,"2371":1}}],["gb2",{"2":{"1793":1,"2371":1}}],["gb1",{"2":{"1793":1,"2371":1}}],["gb",{"2":{"1549":1,"1793":1,"2371":1}}],["gboy",{"2":{"191":1}}],["gboards",{"2":{"143":4,"149":1,"160":1,"191":1,"1527":2}}],["gnd",{"2":{"638":1,"639":1,"656":8,"662":1,"758":1,"787":1,"819":1,"851":8,"886":8,"920":1,"954":1,"988":1,"1022":8,"1056":8,"1090":8,"1123":1,"1126":1,"1129":1,"1146":1,"1236":1,"1573":1,"1717":1,"2061":1,"2119":1,"2120":1,"2230":1,"2233":1,"2235":1,"2236":1,"2238":1,"2240":1,"2242":1,"2276":1,"2330":2,"2332":4,"2334":2,"2336":2,"2338":2,"2340":2,"2352":2,"2450":1,"2513":1,"2530":6}}],["gnu++14",{"2":{"176":1}}],["gnu11",{"2":{"176":1}}],["gnu",{"0":{"330":1},"2":{"134":1,"236":3,"322":1,"326":1,"1380":4,"2310":1,"2570":4}}],["gp3",{"2":{"2541":1}}],["gp8",{"2":{"2533":1}}],["gpx",{"2":{"2533":1}}],["gp0",{"2":{"1908":1,"2541":2}}],["gp19",{"2":{"2541":1}}],["gp18",{"2":{"2541":1}}],["gp17",{"2":{"2539":1}}],["gp1",{"2":{"1908":1,"2541":2}}],["gpt",{"2":{"657":8,"658":4,"1470":4}}],["gptd15",{"2":{"1470":1}}],["gptd8",{"2":{"662":1}}],["gptd8tim8",{"2":{"656":1}}],["gptd6",{"2":{"658":1}}],["gptd6tim6",{"2":{"656":1}}],["gptd9",{"2":{"657":1}}],["gptd7tim7",{"2":{"656":1}}],["gp20",{"2":{"2541":1}}],["gp2",{"2":{"2541":1}}],["gp29",{"2":{"636":1}}],["gp28",{"2":{"636":1}}],["gp27",{"2":{"636":1}}],["gp26",{"2":{"636":1}}],["gpl3",{"2":{"2564":1}}],["gpl2+",{"2":{"2564":1,"2566":1}}],["gpl2",{"2":{"2564":1}}],["gplv3",{"2":{"2310":2}}],["gplv2",{"0":{"2570":1},"2":{"2310":1}}],["gpl",{"2":{"522":1,"1380":1,"2310":1,"2564":1,"2570":1}}],["gpioa",{"2":{"1320":1}}],["gpiob",{"2":{"707":2}}],["gpios",{"2":{"696":1,"2523":1,"2524":1,"2525":1}}],["gpiov3",{"2":{"661":1}}],["gpiov2",{"2":{"661":1}}],["gpiov1",{"2":{"661":1}}],["gpiof",{"2":{"65":1}}],["gpio",{"0":{"148":1,"243":1,"695":1,"1551":1,"2532":1},"1":{"696":1,"697":1,"698":1,"2533":1,"2534":1},"2":{"49":1,"64":1,"94":1,"114":3,"133":1,"134":1,"149":2,"243":13,"244":1,"249":2,"266":4,"277":1,"576":5,"580":3,"633":1,"644":2,"666":3,"674":1,"680":1,"695":1,"696":13,"697":1,"707":2,"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1122":1,"1123":1,"1124":1,"1125":1,"1126":1,"1127":2,"1129":2,"1130":1,"1134":2,"1145":1,"1177":2,"1212":1,"1214":1,"1219":1,"1225":3,"1312":1,"1467":1,"1471":2,"1547":1,"1591":4,"1717":6,"1908":2,"2141":3,"2524":2,"2525":2,"2530":1,"2532":1,"2533":3,"2534":3,"2539":1,"2543":1,"2564":1,"2675":2,"2676":3,"2677":3,"2682":1,"2684":2,"2685":6,"2689":4,"2692":2,"2693":4,"2697":3,"2700":1}}],["gd25q64cs",{"2":{"2544":2}}],["gdb",{"2":{"328":1,"335":1,"2513":3,"2755":1}}],["gd32v",{"2":{"191":1,"629":2}}],["gd32vf103",{"2":{"130":2,"134":1,"176":2,"495":1}}],["gmt",{"2":{"315":2,"317":2}}],["gmmk2",{"2":{"236":1}}],["gmmk",{"2":{"102":3,"114":11,"134":1,"149":2,"159":4,"160":2,"176":3,"191":2,"199":1,"222":1,"2244":1}}],["gc9a01",{"2":{"277":1,"2573":2,"2576":7}}],["gc9107",{"2":{"277":1}}],["gc9xxx",{"2":{"277":1}}],["gcc10",{"2":{"134":1}}],["gcc",{"2":{"73":1,"132":1,"134":2,"222":1,"325":1,"331":1,"2262":1,"2501":1}}],["gk61",{"2":{"236":3}}],["g2",{"2":{"211":2,"1793":1,"2371":1}}],["g60",{"2":{"211":2}}],["g431",{"2":{"249":1}}],["g4",{"2":{"191":1,"1793":1,"2371":1}}],["g474",{"2":{"49":1}}],["gif",{"2":{"2575":2}}],["gifs",{"2":{"153":1,"2573":1}}],["giving",{"2":{"1495":1,"2482":1}}],["gives",{"2":{"433":1,"436":1,"479":1,"1491":1,"1515":1,"1685":1,"1725":1,"1821":1,"1946":1,"2263":1,"2477":1,"2729":1}}],["give",{"0":{"2317":1},"2":{"303":1,"1138":1,"1300":1,"1525":2,"1863":1,"1921":1,"2226":1,"2275":1,"2305":1,"2479":1,"2501":1,"2535":1,"2729":1,"2750":1}}],["given",{"0":{"2720":1},"2":{"166":1,"638":2,"639":2,"739":1,"766":1,"798":1,"828":1,"863":1,"897":1,"931":1,"965":1,"999":1,"1033":1,"1067":1,"1101":1,"1154":1,"1300":1,"1397":1,"1416":1,"1518":3,"1525":1,"1527":1,"1646":1,"1649":1,"1694":1,"1699":1,"1702":1,"1705":1,"1708":1,"1711":1,"1802":2,"1827":1,"2051":9,"2054":2,"2075":3,"2152":1,"2171":1,"2203":1,"2206":1,"2209":1,"2216":1,"2223":1,"2262":1,"2277":1,"2304":1,"2321":1,"2325":1,"2326":1,"2403":1,"2409":1,"2450":1,"2550":1,"2564":1,"2566":2,"2567":1,"2577":2,"2616":1,"2728":1,"2748":1}}],["gigadevice",{"0":{"495":1},"2":{"495":1}}],["giabalanai",{"2":{"222":1}}],["ginkgo65hot",{"2":{"176":1}}],["gingham",{"2":{"143":2}}],["gitconfig",{"2":{"385":1}}],["gitignore",{"2":{"149":2,"176":1,"191":1}}],["git",{"0":{"6":1,"1262":1,"2431":1,"2471":1,"2472":1,"2473":1,"2486":1,"2636":1},"1":{"2472":1,"2474":1,"2475":1},"2":{"10":1,"24":1,"114":1,"199":1,"211":1,"249":1,"347":12,"349":16,"352":2,"358":10,"359":11,"360":9,"361":6,"400":1,"428":1,"529":1,"530":2,"554":7,"556":1,"1262":2,"2252":2,"2255":8,"2428":1,"2431":12,"2432":1,"2437":2,"2438":10,"2440":1,"2443":2,"2444":2,"2446":1,"2453":1,"2461":1,"2464":8,"2466":2,"2472":1,"2473":1,"2474":1,"2475":19,"2477":21,"2479":18,"2480":18,"2481":2,"2486":2,"2492":1,"2503":1,"2506":10,"2510":3,"2513":1,"2564":1,"2568":3,"2637":1,"2723":1}}],["github",{"0":{"1262":1,"2255":1,"2428":1,"2432":1,"2437":1,"2438":1,"2443":1,"2448":1,"2637":1,"2716":1},"1":{"2429":1,"2430":1,"2431":1,"2432":1,"2433":1,"2434":1,"2435":1,"2436":1,"2437":1,"2438":1,"2439":1,"2440":1},"2":{"2":1,"21":2,"134":1,"236":1,"282":3,"340":1,"341":2,"347":1,"350":1,"352":1,"358":1,"359":2,"425":1,"446":1,"482":1,"515":1,"520":1,"554":6,"624":1,"1242":1,"1260":1,"1261":1,"1262":2,"1274":1,"1275":2,"1281":3,"1283":1,"1298":1,"1376":1,"1380":3,"1830":1,"2183":1,"2252":1,"2255":6,"2421":2,"2422":2,"2428":3,"2429":2,"2430":2,"2431":1,"2432":1,"2433":1,"2435":2,"2436":2,"2437":4,"2438":7,"2439":2,"2440":2,"2441":2,"2442":1,"2443":2,"2444":2,"2446":1,"2448":3,"2462":1,"2468":2,"2472":1,"2473":1,"2475":11,"2479":5,"2510":2,"2511":1,"2514":1,"2553":1,"2566":1,"2672":1,"2716":1}}],["gluing",{"2":{"2267":1}}],["glue",{"2":{"430":1,"2280":1}}],["glossary",{"0":{"2621":1},"1":{"2622":1,"2623":1,"2624":1,"2625":1,"2626":1,"2627":1,"2628":1,"2629":1,"2630":1,"2631":1,"2632":1,"2633":1,"2634":1,"2635":1,"2636":1,"2637":1,"2638":1,"2639":1,"2640":1,"2641":1,"2642":1,"2643":1,"2644":1,"2645":1,"2646":1,"2647":1,"2648":1,"2649":1,"2650":1,"2651":1,"2652":1,"2653":1,"2654":1,"2655":1,"2656":1,"2657":1,"2658":1,"2659":1,"2660":1,"2661":1,"2662":1,"2663":1,"2664":1,"2665":1,"2666":1,"2667":1,"2668":1,"2669":1}}],["glorious",{"2":{"2244":2}}],["globs",{"2":{"411":1}}],["globe",{"2":{"236":1}}],["globally",{"2":{"1341":1,"1663":1,"1665":1}}],["global",{"0":{"667":1,"790":1,"855":1,"889":1,"923":1,"957":1,"991":1,"1025":1,"1059":1,"1093":1},"2":{"94":1,"134":1,"172":1,"176":2,"191":1,"325":1,"326":1,"328":1,"460":2,"515":1,"566":1,"644":1,"652":1,"666":2,"667":1,"786":2,"790":1,"850":2,"855":1,"885":2,"889":1,"919":2,"923":1,"953":2,"957":1,"987":2,"991":1,"1021":2,"1025":1,"1055":2,"1059":1,"1089":2,"1093":1,"1326":4,"1329":1,"1344":1,"1385":1,"1729":3,"1757":1,"1758":1,"1759":1,"1760":1,"1761":1,"1878":1,"1952":3,"1984":1,"1985":1,"1986":1,"1987":1,"1988":1,"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2012":1,"2014":1,"2016":1,"2170":1,"2437":1,"2675":1,"2727":1,"2728":1}}],["glcdfont",{"2":{"1814":1,"1817":1,"2141":1}}],["gliding",{"2":{"1807":1}}],["glide",{"2":{"1807":1,"1844":1,"1851":3}}],["glides",{"2":{"1807":1}}],["glitch",{"2":{"211":1,"659":1}}],["glance",{"2":{"433":1,"2480":1,"2743":1}}],["glamorous",{"2":{"251":1}}],["glacier",{"2":{"211":1}}],["glyphs",{"2":{"2575":21,"2585":2,"2587":4,"2588":1,"2589":2,"2590":2}}],["glyph",{"0":{"2588":1,"2589":1},"2":{"176":1,"2575":2,"2585":2,"2587":3,"2588":13,"2589":8,"2590":2}}],["glenpickle",{"2":{"143":4,"149":1}}],["ggkeyboards",{"2":{"114":1}}],["gu",{"2":{"2370":3,"2396":3}}],["guessed",{"2":{"1830":1}}],["guess",{"2":{"1824":1}}],["guestures",{"2":{"176":1}}],["guarantees",{"2":{"2577":1}}],["guarantee",{"2":{"570":1}}],["guaranteed",{"2":{"341":1,"698":1}}],["guarded",{"2":{"2548":1}}],["guard",{"2":{"160":1,"176":1,"199":1,"222":1,"356":1}}],["guards",{"2":{"4":1,"134":1,"453":1,"2564":1}}],["gurindam",{"2":{"143":2}}],["guiding",{"2":{"2722":1}}],["guidance",{"2":{"2418":1}}],["guided",{"2":{"2750":1}}],["guides",{"0":{"2281":1},"2":{"551":1,"1237":1,"2272":1}}],["guidelines",{"0":{"556":1,"2292":1},"1":{"557":1,"558":1,"559":1,"560":1,"561":1,"2293":1,"2294":1,"2295":1,"2296":1,"2297":1,"2298":1,"2299":1,"2300":1,"2301":1,"2302":1,"2303":1,"2304":1,"2305":1,"2306":1,"2307":1,"2308":1,"2309":1,"2310":1},"2":{"367":2,"453":1,"462":1,"550":2,"556":1,"559":1,"560":1,"615":1,"1262":1,"1337":1,"1338":1,"2259":1,"2440":1,"2553":2,"2559":1,"2725":1}}],["guide",{"0":{"303":1,"1823":1,"2265":1,"2327":1},"1":{"2266":1,"2267":1,"2268":1,"2269":1,"2270":1,"2271":1,"2272":1,"2273":1,"2274":1,"2275":1,"2276":1,"2277":1,"2278":1,"2279":1,"2280":1,"2281":1,"2328":1,"2329":1,"2330":1,"2331":1,"2332":1,"2333":1,"2334":1,"2335":1,"2336":1,"2337":1,"2338":1,"2339":1,"2340":1,"2341":1,"2342":1,"2343":1,"2344":1,"2345":1,"2346":1,"2347":1,"2348":1,"2349":1,"2350":1,"2351":1,"2352":1,"2353":1},"2":{"199":1,"322":2,"323":1,"371":1,"624":2,"1258":1,"2134":1,"2255":2,"2262":1,"2267":1,"2268":1,"2279":1,"2281":3,"2346":1,"2417":1,"2418":3,"2419":1,"2420":1,"2428":2,"2433":1,"2440":1,"2442":1,"2454":1,"2503":1,"2504":1}}],["guitar",{"2":{"1398":2,"1399":3,"1403":1}}],["gui+s",{"2":{"196":1,"1680":1}}],["gui",{"2":{"114":1,"231":2,"266":1,"292":1,"318":1,"623":1,"1271":2,"1299":8,"1300":8,"1370":1,"1564":1,"1565":1,"1566":1,"1568":2,"1582":1,"1666":3,"1668":1,"1677":8,"1932":1,"1939":3,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2240":1,"2242":1,"2243":1,"2244":1,"2355":4,"2364":1,"2370":26,"2373":9,"2374":10,"2390":4,"2396":26,"2410":13,"2417":1,"2491":4,"2492":1,"2578":1,"2705":1,"2709":1,"2738":8}}],["gr",{"2":{"2152":1,"2153":3}}],["grunt",{"2":{"1375":1}}],["grb",{"2":{"1214":1,"1216":3}}],["grv",{"2":{"313":2,"530":2,"1564":2,"1666":2,"2355":1,"2388":1,"2407":1,"2408":1,"2727":1,"2728":1}}],["growing",{"2":{"2750":1}}],["grow",{"2":{"550":1,"2704":1}}],["grown",{"2":{"113":1,"606":1,"2292":2}}],["grounded",{"2":{"2344":1}}],["ground",{"2":{"334":1,"502":1,"684":1,"1225":1,"1235":1,"1236":1,"1388":1,"1391":2,"1395":1,"1471":1,"1551":1,"1561":1,"2278":1,"2558":1}}],["groupbuys",{"2":{"2566":1}}],["group",{"0":{"1426":1,"1427":1,"1428":1,"1429":1},"2":{"249":5,"407":1,"457":1,"609":1,"1257":1,"1426":1,"1427":1,"1428":1,"1429":1,"2038":1,"2147":4,"2313":1,"2354":1,"2753":1}}],["groups",{"2":{"231":1,"1416":2,"2148":1}}],["gritty",{"0":{"2409":1},"2":{"303":1}}],["grin",{"2":{"179":1}}],["grid",{"2":{"112":1,"249":1,"510":3,"1352":1,"1547":1,"1725":1,"1946":1,"1950":1,"2125":3,"2682":1,"2697":1}}],["grayscale",{"2":{"2575":4,"2596":5}}],["graystudio",{"2":{"211":1}}],["gram",{"2":{"1943":1}}],["grammar",{"2":{"176":1}}],["graphic",{"2":{"2575":2}}],["graphical",{"2":{"2314":1,"2427":1,"2429":1,"2457":1,"2503":1,"2573":1,"2578":1}}],["graphics",{"0":{"408":1,"2592":1,"2594":1},"1":{"2593":1,"2594":1,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1},"2":{"2575":2,"2578":2,"2592":3,"2593":1,"2594":4,"2595":1}}],["grape",{"2":{"211":1}}],["grabbing",{"2":{"2273":1}}],["grab",{"2":{"324":1,"2273":1,"2477":1}}],["gracefully",{"2":{"209":1}}],["granularity",{"2":{"2105":1}}],["granular",{"2":{"195":1,"1411":1,"1416":1,"1423":1,"2727":1,"2735":1,"2736":1,"2737":1,"2738":1}}],["gradients",{"2":{"1949":2}}],["gradient",{"2":{"176":1,"199":1,"292":1,"1332":1,"1728":4,"1948":2,"1949":22,"1951":3,"2034":2,"2036":2,"2037":2,"2039":1,"2040":2,"2376":2,"2711":3}}],["grave",{"0":{"1563":1,"1666":1,"2364":1},"1":{"1564":1,"1565":1,"1566":1,"1567":1,"1568":1},"2":{"114":1,"188":1,"191":1,"199":1,"291":1,"623":1,"1282":1,"1530":1,"1563":2,"1566":1,"1568":4,"1584":1,"1666":4,"2355":1,"2364":2,"2370":2,"2388":1,"2396":2,"2405":2,"2424":1,"2508":1,"2702":1,"2705":1,"2749":1}}],["grs",{"2":{"114":1,"149":1}}],["greyscale",{"2":{"2585":1,"2592":1}}],["grep",{"2":{"2566":2}}],["greek",{"2":{"2702":1,"2703":2}}],["greeting",{"2":{"430":1,"1579":1}}],["greet",{"2":{"426":1,"430":1}}],["green",{"0":{"647":1,"649":1,"675":1,"677":1,"741":1,"743":1,"749":1,"768":1,"770":1,"776":1,"800":1,"802":1,"808":1,"832":1,"834":1,"840":1,"867":1,"869":1,"875":1,"901":1,"903":1,"909":1,"935":1,"937":1,"943":1,"969":1,"971":1,"977":1,"1003":1,"1005":1,"1011":1,"1037":1,"1039":1,"1045":1,"1071":1,"1073":1,"1079":1,"1105":1,"1107":1,"1113":1,"1158":1,"1160":1,"1166":1},"1":{"648":1,"650":1,"676":1,"678":1,"742":1,"744":1,"750":1,"769":1,"771":1,"777":1,"801":1,"803":1,"809":1,"833":1,"835":1,"841":1,"868":1,"870":1,"876":1,"902":1,"904":1,"910":1,"936":1,"938":1,"944":1,"970":1,"972":1,"978":1,"1004":1,"1006":1,"1012":1,"1038":1,"1040":1,"1046":1,"1072":1,"1074":1,"1080":1,"1106":1,"1108":1,"1114":1,"1159":1,"1161":1,"1167":1},"2":{"49":1,"282":3,"341":1,"435":1,"542":2,"593":1,"626":1,"648":2,"650":2,"669":1,"672":1,"676":2,"678":2,"734":1,"737":1,"742":2,"744":2,"750":2,"760":1,"763":1,"769":2,"771":2,"777":2,"792":1,"795":1,"801":2,"803":2,"809":2,"822":1,"825":1,"833":2,"835":2,"841":2,"857":1,"860":1,"868":2,"870":2,"876":2,"891":1,"894":1,"902":2,"904":2,"910":2,"925":1,"928":1,"936":2,"938":2,"944":2,"959":1,"962":1,"970":2,"972":2,"978":2,"993":1,"996":1,"1004":2,"1006":2,"1012":2,"1027":1,"1030":1,"1038":2,"1040":2,"1046":2,"1061":1,"1064":1,"1072":2,"1074":2,"1080":2,"1095":1,"1098":1,"1106":2,"1108":2,"1114":2,"1148":1,"1151":1,"1159":2,"1161":2,"1167":2,"1216":1,"1217":1,"1332":1,"1953":2,"1957":2,"1958":1,"1971":1,"1973":1,"2034":1,"2038":1,"2042":2,"2044":1,"2051":1,"2058":3,"2376":1,"2513":1,"2569":1}}],["greatest",{"2":{"2548":1}}],["greater",{"2":{"63":1,"352":1,"364":1,"660":1,"1336":1,"1431":2,"1872":1,"2411":1}}],["great",{"2":{"483":1,"506":1,"1258":1,"1416":1,"1495":1,"1497":1,"1683":1,"2446":1,"2485":1,"2486":1,"2510":1,"2515":1,"2546":1}}],["greatly",{"2":{"49":1,"2262":1}}],["gh",{"2":{"2438":4}}],["ghcr",{"2":{"2437":1}}],["gh62",{"2":{"391":5,"2277":5}}],["gh60",{"2":{"370":2,"401":2,"2453":1}}],["gherkin",{"2":{"266":1,"2529":1}}],["ghoul",{"2":{"199":1}}],["ghosting",{"0":{"789":1,"820":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1},"2":{"134":1,"789":1,"820":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"2311":2,"2689":1}}],["ghost",{"2":{"112":1,"199":1,"502":2,"818":1,"2689":1}}],["gh80",{"2":{"57":4,"266":1}}],["gauge",{"2":{"2719":1}}],["gather",{"2":{"1832":1,"2719":1}}],["gathering",{"2":{"401":1}}],["gateway",{"2":{"2749":1}}],["gateron",{"2":{"2266":1}}],["gate",{"2":{"1458":1,"1471":2}}],["gasc",{"2":{"1300":2}}],["gamma",{"2":{"236":1}}],["game",{"2":{"241":6,"1353":1,"1512":1,"1630":1,"2486":1}}],["gamers",{"2":{"137":1}}],["gamebuddy",{"2":{"102":3,"114":1}}],["galleon",{"2":{"211":1}}],["galaxy",{"2":{"114":1}}],["garbled",{"2":{"191":1}}],["gap",{"2":{"134":1,"2311":1}}],["gain",{"2":{"131":1,"633":1,"2711":1}}],["gained",{"2":{"100":1,"107":1,"153":1}}],["gaining",{"2":{"86":1,"2630":1}}],["gold",{"2":{"1953":2,"2058":3}}],["goldenrod",{"2":{"1953":2,"2058":2}}],["golden",{"2":{"1436":1}}],["googletest",{"2":{"2255":1}}],["google",{"0":{"2751":2},"2":{"336":1,"2751":3,"2752":1}}],["googling",{"2":{"335":1}}],["goodbye",{"2":{"1398":1,"1399":2}}],["good",{"2":{"119":1,"453":1,"458":2,"473":1,"474":1,"476":1,"551":1,"574":1,"589":1,"1238":1,"1259":1,"1340":1,"1346":1,"1380":1,"1438":1,"1852":1,"1921":1,"2161":1,"2169":2,"2255":1,"2270":1,"2272":2,"2273":1,"2274":1,"2311":1,"2315":1,"2353":1,"2417":1,"2484":1,"2514":1,"2556":1,"2727":1,"2740":1,"2750":1}}],["goal",{"2":{"262":1,"457":1,"1346":1}}],["going",{"2":{"188":1,"268":1,"567":1,"690":1,"1332":1,"2162":1,"2274":2,"2276":1,"2279":1,"2305":1,"2319":1,"2425":1,"2443":1,"2480":2,"2490":1,"2614":2,"2615":1,"2714":1,"2756":1}}],["goes",{"2":{"166":1,"336":1,"354":1,"433":1,"1290":1,"1395":2,"1453":1,"1921":1,"2035":1,"2105":1,"2347":1,"2353":1,"2564":1,"2573":1,"2688":1,"2694":1,"2695":1}}],["gotten",{"2":{"537":1}}],["got",{"2":{"158":1,"164":1,"176":1,"179":1,"182":1,"190":1,"245":1,"454":1,"1274":1,"1386":1,"2279":1}}],["go",{"0":{"553":1},"2":{"92":1,"119":1,"137":1,"152":1,"291":1,"303":1,"331":2,"349":1,"354":1,"453":1,"455":1,"499":1,"609":2,"1335":2,"1385":1,"1395":1,"1435":2,"1452":2,"1572":2,"1815":1,"1822":1,"1876":1,"2062":1,"2139":1,"2143":1,"2162":1,"2183":1,"2240":1,"2242":1,"2255":1,"2261":1,"2267":1,"2274":1,"2277":1,"2425":1,"2490":1,"2508":1,"2513":1,"2546":1,"2551":1,"2566":2,"2615":1,"2728":2}}],["gone",{"2":{"172":1}}],["gon",{"0":{"18":1},"2":{"18":3}}],["g",{"0":{"1970":1,"1972":1},"1":{"1971":1,"1973":1},"2":{"38":2,"65":1,"114":1,"149":1,"160":2,"191":2,"211":6,"236":1,"249":3,"266":2,"313":1,"349":1,"506":1,"529":1,"530":2,"626":2,"635":1,"669":2,"672":1,"676":1,"734":3,"737":1,"742":1,"746":1,"750":1,"752":1,"760":3,"763":1,"769":1,"773":1,"777":1,"779":1,"792":3,"795":1,"801":1,"805":1,"809":1,"811":1,"822":3,"825":1,"833":1,"837":1,"841":1,"843":1,"857":3,"860":1,"868":1,"872":1,"876":1,"878":1,"891":3,"894":1,"902":1,"906":1,"910":1,"912":1,"925":3,"928":1,"936":1,"940":1,"944":1,"946":1,"959":3,"962":1,"970":1,"974":1,"978":1,"980":1,"993":3,"996":1,"1004":1,"1008":1,"1012":1,"1014":1,"1027":3,"1030":1,"1038":1,"1042":1,"1046":1,"1048":1,"1061":3,"1064":1,"1072":1,"1076":1,"1080":1,"1082":1,"1095":3,"1098":1,"1106":1,"1110":1,"1114":1,"1116":1,"1125":1,"1129":1,"1148":3,"1151":1,"1159":1,"1163":1,"1167":1,"1169":1,"1217":2,"1287":1,"1299":1,"1316":1,"1317":1,"1326":2,"1329":3,"1335":1,"1359":1,"1362":1,"1378":1,"1397":1,"1451":1,"1496":1,"1507":1,"1509":1,"1527":2,"1557":1,"1656":1,"1670":3,"1676":1,"1677":1,"1714":1,"1725":1,"1729":2,"1793":19,"1813":2,"1816":1,"1821":2,"1836":1,"1851":1,"1864":1,"1879":1,"1915":1,"1946":1,"1948":1,"1950":1,"1952":2,"1957":1,"1958":2,"1959":3,"1971":1,"1973":1,"2034":2,"2042":1,"2044":3,"2045":1,"2051":10,"2063":1,"2126":5,"2129":3,"2140":1,"2148":1,"2153":1,"2161":1,"2170":1,"2259":1,"2268":1,"2270":2,"2271":1,"2280":1,"2335":2,"2355":3,"2371":19,"2373":1,"2376":1,"2386":3,"2407":1,"2440":2,"2467":1,"2501":1,"2502":2,"2513":1,"2519":1,"2524":2,"2564":1,"2565":1,"2566":3,"2567":1,"2569":1,"2577":1,"2674":1,"2705":1,"2728":8,"2738":1}}],["gfx",{"2":{"31":3,"34":2,"1823":10,"2577":2}}],["ge",{"2":{"2370":2,"2396":2}}],["gemini",{"2":{"2149":3,"2152":2}}],["geminipr",{"0":{"2148":1},"2":{"2146":1,"2148":6,"2150":1,"2153":2,"2698":1}}],["geminate60",{"2":{"143":2,"211":1}}],["german",{"2":{"1355":3,"2658":1,"2703":8}}],["gergoplex",{"2":{"160":1,"191":1}}],["gergo",{"2":{"143":2}}],["geekhack",{"2":{"1275":1,"1289":1,"1297":1,"1298":1}}],["geometric",{"2":{"2688":1,"2695":1}}],["geometry",{"2":{"2577":2}}],["geonworks",{"2":{"241":1,"249":1}}],["georgi",{"2":{"143":2}}],["gesture",{"0":{"1839":1},"2":{"1838":1,"1844":1,"1845":1,"1851":3,"1910":1}}],["gestures",{"0":{"1844":1,"1845":1},"2":{"176":1,"1839":3,"1842":2,"1844":2,"1845":1,"1851":3}}],["gesc",{"2":{"191":2,"199":2,"1564":1,"1565":2,"1566":1,"2364":1}}],["genuine",{"2":{"1283":1}}],["gen1",{"2":{"424":1}}],["gentoo",{"2":{"191":1,"211":2,"2431":1,"2464":1}}],["gentleman",{"2":{"176":1}}],["gentleman65",{"2":{"168":2,"211":2}}],["genisis",{"2":{"114":1}}],["genesis",{"2":{"102":3}}],["generic",{"0":{"174":1,"1519":1,"1792":1,"2541":1,"2542":1},"2":{"50":1,"172":1,"175":1,"176":3,"236":3,"625":1,"1346":1,"1416":3,"1792":1,"1832":2,"2114":2,"2353":1,"2393":1,"2542":2,"2544":2,"2625":1,"2665":1}}],["generating",{"2":{"606":1,"614":1,"1385":1,"1431":1,"1827":1,"2246":1,"2248":1,"2553":1,"2611":1,"2671":1}}],["generation",{"2":{"12":1,"132":1,"176":1,"191":3,"199":2,"222":4,"231":1,"249":1,"277":1,"2506":1}}],["generators",{"2":{"278":2,"471":1,"472":1}}],["generator",{"0":{"471":1},"2":{"132":1,"149":2,"1594":1,"2267":1}}],["generates",{"2":{"404":1,"613":1,"2427":1}}],["generated",{"2":{"73":1,"403":1,"521":1,"545":1,"614":1,"659":1,"1363":1,"1394":1,"1401":1,"1525":1,"2262":1,"2303":2,"2401":1,"2513":1,"2566":1,"2575":5,"2584":1}}],["generate",{"0":{"401":1,"403":1,"404":1,"614":1},"2":{"70":4,"95":1,"114":1,"132":2,"153":1,"160":1,"191":1,"199":2,"211":1,"236":2,"249":2,"277":1,"282":3,"313":1,"388":1,"401":2,"403":2,"404":1,"521":1,"607":3,"614":5,"1312":1,"1393":3,"1440":1,"1441":1,"1562":1,"1836":1,"1847":1,"1851":1,"2231":2,"2238":2,"2262":2,"2512":2,"2575":4}}],["generally",{"2":{"341":1,"435":1,"457":1,"468":1,"470":1,"473":1,"476":1,"479":1,"485":1,"486":1,"502":1,"597":1,"616":1,"617":1,"628":1,"681":1,"685":1,"703":1,"726":1,"1177":1,"1198":1,"1238":1,"1335":1,"1390":1,"1457":1,"1469":1,"1531":1,"1560":1,"1715":1,"1731":1,"1874":1,"1934":1,"1948":1,"1955":1,"2169":1,"2269":1,"2308":1,"2324":1,"2327":1,"2346":1,"2450":1,"2513":1,"2575":2,"2576":1,"2577":1,"2679":1,"2711":1,"2720":3}}],["generalise",{"2":{"191":1,"236":1}}],["generalize",{"2":{"149":1}}],["general",{"0":{"556":1,"620":1,"2672":1},"1":{"557":1,"558":1,"559":1,"560":1,"561":1},"2":{"5":1,"10":1,"175":1,"201":1,"213":1,"233":1,"403":1,"432":1,"453":1,"455":1,"550":1,"1230":1,"1380":3,"1470":1,"1655":1,"1880":1,"2169":1,"2299":1,"2310":1,"2484":1,"2486":1,"2546":2,"2550":1,"2569":1,"2570":3,"2576":1,"2577":1,"2585":1,"2592":1,"2718":1}}],["gets",{"2":{"437":1,"519":1,"586":1,"587":1,"592":1,"598":1,"599":1,"600":1,"1353":1,"1364":1,"1377":1,"1430":2,"1450":1,"1822":1,"1853":1,"1873":1,"2057":6,"2152":1,"2175":3,"2311":2,"2405":1,"2524":1,"2757":1}}],["getter",{"2":{"475":1}}],["getters",{"2":{"236":2}}],["getting",{"0":{"358":1,"359":1,"2277":1,"2713":1},"1":{"2714":1,"2715":1,"2716":1},"2":{"211":2,"341":1,"617":1,"624":2,"641":1,"1332":1,"1338":1,"2494":1,"2504":1,"2563":1,"2564":1,"2569":1,"2615":1,"2713":1}}],["getta25",{"2":{"143":2}}],["getreuer",{"2":{"179":1,"191":1,"1453":1}}],["get",{"0":{"308":1,"309":1,"310":1,"1255":1,"1481":1,"1656":1,"1755":1,"1761":1,"1771":1,"1774":1,"1898":1,"1982":1,"1988":1,"1994":1,"2000":1,"2010":1,"2016":1,"2019":1,"2186":1,"2206":1,"2314":1},"1":{"1482":1,"1756":1,"1762":1,"1772":1,"1775":1,"1899":1,"1983":1,"1989":1,"1995":1,"2001":1,"2011":1,"2017":1,"2020":1,"2187":1,"2207":1,"2208":1},"2":{"22":4,"23":1,"50":1,"75":1,"140":1,"158":1,"160":1,"190":1,"191":3,"194":6,"195":2,"199":1,"222":4,"236":2,"249":1,"273":1,"276":1,"277":1,"315":1,"323":1,"324":1,"327":1,"330":1,"375":1,"378":1,"399":1,"454":1,"471":1,"502":1,"505":2,"515":1,"529":1,"551":1,"556":1,"557":1,"560":2,"566":1,"570":1,"586":1,"627":1,"1235":1,"1254":2,"1258":1,"1278":1,"1287":1,"1300":10,"1302":1,"1303":1,"1312":1,"1332":1,"1340":2,"1341":1,"1342":1,"1343":1,"1344":1,"1355":1,"1364":1,"1383":1,"1385":2,"1397":1,"1403":1,"1404":1,"1409":2,"1411":2,"1412":2,"1416":7,"1423":5,"1430":1,"1439":1,"1446":1,"1447":1,"1481":1,"1483":1,"1488":1,"1497":1,"1499":2,"1500":1,"1501":1,"1507":1,"1518":9,"1525":1,"1530":1,"1553":1,"1581":1,"1670":1,"1677":1,"1714":1,"1719":1,"1741":1,"1755":1,"1761":1,"1771":1,"1774":1,"1791":1,"1813":1,"1815":1,"1822":1,"1824":1,"1825":1,"1850":2,"1851":1,"1853":2,"1855":1,"1857":1,"1859":1,"1861":1,"1873":6,"1874":1,"1876":1,"1877":1,"1878":1,"1894":1,"1898":1,"1903":1,"1923":2,"1932":1,"1933":3,"1934":1,"1935":1,"1939":2,"1940":4,"1941":5,"1942":4,"1943":5,"1950":2,"1958":3,"1959":2,"1968":1,"1982":1,"1988":1,"1994":1,"2000":1,"2010":1,"2016":1,"2019":1,"2038":1,"2046":1,"2056":1,"2057":5,"2107":2,"2108":2,"2114":1,"2137":1,"2139":1,"2160":1,"2161":1,"2168":1,"2171":2,"2175":3,"2186":1,"2203":1,"2204":1,"2206":1,"2214":1,"2227":1,"2228":2,"2269":1,"2273":1,"2277":1,"2279":1,"2307":1,"2311":4,"2316":1,"2317":1,"2335":1,"2347":1,"2348":1,"2353":1,"2424":2,"2429":1,"2450":1,"2457":1,"2468":1,"2477":1,"2504":1,"2512":1,"2513":1,"2552":1,"2553":2,"2564":1,"2569":2,"2574":1,"2577":8,"2701":1,"2705":4,"2710":5,"2714":1,"2727":1,"2728":8,"2735":1,"2736":1,"2737":1,"2738":2,"2745":1,"2752":1}}],["gtk",{"2":{"2183":2}}],["gtest",{"2":{"114":1}}],["gt",{"0":{"156":1,"167":1,"195":1,"245":1,"308":1,"309":1,"310":1,"1365":1,"1366":1,"1367":1,"1368":1,"1369":2,"1370":5,"2301":1,"2302":1},"2":{"4":3,"18":2,"49":1,"55":3,"70":1,"94":1,"113":2,"114":5,"132":2,"133":2,"134":2,"166":1,"176":4,"191":3,"199":3,"201":2,"211":1,"222":1,"249":5,"277":1,"282":1,"290":2,"291":6,"300":1,"331":15,"335":1,"341":1,"345":2,"347":3,"349":8,"350":1,"370":1,"371":1,"400":1,"417":2,"433":1,"436":4,"500":1,"510":2,"511":3,"529":2,"534":2,"559":3,"613":1,"614":4,"621":1,"669":1,"696":1,"703":2,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1132":1,"1133":1,"1148":1,"1177":2,"1198":2,"1238":2,"1300":3,"1312":2,"1313":1,"1325":4,"1346":1,"1347":3,"1351":4,"1352":1,"1359":1,"1366":1,"1367":1,"1368":3,"1369":1,"1376":6,"1377":5,"1379":5,"1381":1,"1383":1,"1385":5,"1404":1,"1417":1,"1419":1,"1428":1,"1440":1,"1441":1,"1496":1,"1511":2,"1549":1,"1560":1,"1677":1,"1808":1,"1859":1,"1864":1,"1865":9,"1866":1,"1874":1,"1881":1,"2126":5,"2144":1,"2150":2,"2152":1,"2169":1,"2255":1,"2259":2,"2261":4,"2262":18,"2263":2,"2279":1,"2296":2,"2299":1,"2302":1,"2303":3,"2311":1,"2347":4,"2349":2,"2353":1,"2355":1,"2378":2,"2388":1,"2399":2,"2435":1,"2441":5,"2445":2,"2468":4,"2477":7,"2479":3,"2501":2,"2502":2,"2508":4,"2511":2,"2512":2,"2513":2,"2523":1,"2524":1,"2564":1,"2566":4,"2576":1,"2577":4,"2578":1,"2614":4,"2671":1,"2686":1,"2728":2,"2738":1,"2740":1}}],["e5",{"2":{"1793":1,"2371":1}}],["e4",{"2":{"1793":1,"2371":1}}],["e3",{"2":{"1793":1,"2371":1}}],["e2",{"2":{"1793":1,"2371":1}}],["e♭",{"2":{"1793":6,"2371":6}}],["ebay",{"2":{"2350":1,"2655":1}}],["eb5",{"2":{"1793":1,"2371":1}}],["eb4",{"2":{"1793":1,"2371":1}}],["eb3",{"2":{"1793":1,"2371":1}}],["eb2",{"2":{"1793":1,"2371":1}}],["eb1",{"2":{"1793":1,"2371":1}}],["eb",{"2":{"1793":1,"2371":1}}],["eimsk",{"2":{"1905":2}}],["eicra",{"2":{"1905":1}}],["eighth",{"2":{"2074":1,"2155":1}}],["eight",{"2":{"1594":2,"1632":1,"1821":1,"2091":1,"2105":1}}],["either",{"2":{"49":1,"60":1,"87":1,"88":2,"104":2,"127":2,"141":1,"152":1,"352":1,"395":1,"405":1,"436":1,"454":1,"555":1,"560":1,"613":1,"626":1,"635":1,"643":1,"654":1,"701":1,"1127":1,"1130":1,"1213":1,"1225":1,"1239":1,"1268":1,"1303":1,"1380":1,"1387":1,"1390":1,"1393":1,"1438":1,"1451":1,"1530":1,"1553":2,"1554":1,"1604":1,"1630":1,"1822":1,"1861":1,"1864":1,"1866":1,"1932":1,"2120":1,"2132":1,"2145":1,"2150":2,"2238":1,"2272":1,"2305":1,"2310":1,"2445":1,"2506":1,"2518":1,"2525":1,"2566":1,"2570":1,"2576":1,"2577":1,"2587":1,"2603":1,"2729":1}}],["ejct",{"2":{"1283":1,"2355":1,"2393":1}}],["eject",{"0":{"1283":1},"2":{"1283":3,"2355":2,"2393":2}}],["e1",{"2":{"1793":1,"2371":1}}],["e15",{"2":{"635":1}}],["e14",{"2":{"635":1}}],["e12",{"2":{"635":1}}],["e11",{"2":{"635":1}}],["e10",{"2":{"635":1}}],["e13",{"2":{"635":1}}],["e7",{"2":{"635":1}}],["e8",{"2":{"635":2}}],["e88",{"2":{"211":1}}],["e9",{"2":{"635":1}}],["egg",{"2":{"616":1,"2165":1,"2166":3,"2167":2}}],["eggman",{"2":{"143":2}}],["eg",{"2":{"374":1,"459":1,"470":1,"505":1,"559":1,"573":1,"592":1,"638":1,"639":3,"698":1,"1181":1,"1361":1,"1370":1,"1440":1,"1499":1,"1591":1,"1685":1,"1873":1,"2091":1,"2093":1,"2095":1,"2097":1,"2114":1,"2174":1,"2231":2,"2235":1,"2238":2,"2245":1,"2247":1,"2249":1,"2545":1,"2566":1,"2672":2}}],["euro",{"2":{"2325":1}}],["europe",{"2":{"1268":1}}],["eubg",{"2":{"2147":1,"2148":1}}],["eu",{"2":{"241":2,"2153":1}}],["eyes",{"2":{"2273":1}}],["eyeohdesigns",{"2":{"236":1}}],["eyboard",{"2":{"1935":1}}],["eybord",{"2":{"1935":1}}],["eyalroz",{"2":{"176":1}}],["ec44c6c1675c25b9827aacd08c02433cccde7780",{"2":{"2255":1}}],["ec11",{"2":{"1557":1}}],["echo",{"0":{"434":1},"2":{"432":1,"434":1,"458":4,"470":1,"2435":2,"2468":1}}],["eclipse",{"0":{"322":1,"330":1,"331":1,"2492":1,"2496":1,"2497":1,"2500":1,"2634":1},"1":{"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1,"336":1,"2497":1,"2498":1,"2499":1,"2501":1,"2502":1},"2":{"322":1,"323":1,"326":1,"329":1,"331":2,"2492":3,"2495":1,"2496":2,"2497":6,"2498":3,"2499":1,"2502":1,"2634":1,"2723":1}}],["ecosystem",{"2":{"243":1}}],["eccentric",{"2":{"1576":1}}],["ecc",{"2":{"236":1}}],["ec",{"2":{"222":1,"247":2,"277":1,"1548":2,"2370":3,"2396":3}}],["ekow",{"2":{"211":1}}],["ek65",{"2":{"199":1}}],["equo",{"2":{"2431":1,"2464":1}}],["equally",{"2":{"1675":1}}],["equality",{"2":{"1300":1}}],["equal",{"2":{"417":1,"1290":1,"1584":1,"2147":1,"2152":1,"2355":3,"2388":1,"2394":2,"2587":2,"2594":2}}],["equals",{"2":{"249":1}}],["equivalency",{"2":{"476":1}}],["equivalents",{"2":{"496":1,"1212":1,"1854":1,"2530":1}}],["equivalent",{"2":{"7":1,"103":1,"185":1,"186":1,"232":1,"234":1,"684":1,"685":1,"688":1,"1525":1,"1531":1,"1589":1,"1730":1,"1948":2,"1954":1,"2034":1,"2403":1,"2491":1,"2524":1,"2525":1,"2566":4}}],["equinox",{"2":{"211":1}}],["eql",{"2":{"176":1,"313":1,"530":2,"2355":1,"2388":1,"2407":1}}],["efuse",{"2":{"2348":2}}],["ef8878fba5d3786e3f9c66436da63a560cd36ac9",{"2":{"530":2}}],["efgh",{"2":{"266":1}}],["ef",{"2":{"249":1}}],["efl",{"2":{"176":2,"191":1,"236":1,"277":1,"689":4,"692":1}}],["effort",{"2":{"606":1,"726":1,"1441":1,"2168":1,"2270":1,"2303":1}}],["efficiently",{"2":{"1438":1,"1577":1}}],["efficient",{"2":{"63":1,"231":1,"1121":2,"1122":1,"1128":1,"1821":1,"1864":1,"2145":1}}],["effect2",{"2":{"1729":6,"1952":6}}],["effective",{"2":{"659":1,"1326":1,"1677":1,"1807":1,"2728":1,"2738":1}}],["effectively",{"2":{"49":1,"163":1,"1225":1,"1633":1,"2125":1,"2326":1,"2737":1}}],["effects",{"0":{"1728":1,"1729":1,"1949":1,"1952":1,"2036":1,"2049":1,"2053":1},"1":{"1950":1,"1951":1,"2037":1,"2038":1,"2039":1,"2040":1,"2050":1,"2051":1,"2052":1,"2053":1,"2054":1,"2055":1,"2056":1,"2057":1},"2":{"84":1,"93":2,"124":1,"134":1,"156":1,"222":1,"249":1,"266":1,"277":1,"458":3,"659":1,"1402":1,"1725":1,"1728":2,"1729":6,"1730":3,"1946":1,"1948":1,"1949":3,"1951":1,"1952":6,"1954":3,"2050":1,"2062":1,"2063":2,"2566":1,"2606":1,"2688":3,"2694":2,"2695":3}}],["effect",{"0":{"1950":1,"1951":1,"1960":1,"2037":1,"2038":1,"2050":1,"2052":1},"2":{"49":1,"74":1,"93":1,"134":1,"149":2,"160":1,"176":1,"191":6,"194":1,"199":1,"222":1,"236":1,"249":2,"266":1,"276":1,"277":1,"292":2,"530":1,"1273":1,"1338":1,"1402":1,"1406":2,"1411":1,"1503":1,"1508":1,"1577":1,"1728":3,"1729":21,"1743":1,"1745":1,"1747":1,"1748":1,"1749":1,"1750":1,"1751":1,"1752":1,"1753":1,"1754":1,"1755":1,"1756":1,"1757":1,"1758":1,"1759":1,"1760":1,"1761":1,"1763":1,"1764":1,"1765":1,"1766":1,"1767":1,"1769":1,"1771":1,"1772":1,"1773":1,"1807":1,"1822":2,"1911":1,"1948":2,"1949":3,"1950":4,"1951":1,"1952":21,"1960":2,"1970":1,"1972":1,"1974":1,"1975":1,"1976":1,"1977":1,"1978":1,"1979":1,"1980":1,"1981":1,"1982":1,"1983":1,"1984":1,"1985":1,"1986":1,"1987":1,"1988":1,"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2008":1,"2010":1,"2011":1,"2012":1,"2014":1,"2016":1,"2017":1,"2018":1,"2031":1,"2034":2,"2036":1,"2037":10,"2038":11,"2039":2,"2050":1,"2051":1,"2052":1,"2053":6,"2054":14,"2062":1,"2063":1,"2171":1,"2376":2,"2377":2,"2688":1,"2694":1,"2695":1,"2711":10}}],["ede48346eee4b8d6847c19bc01420bee76a5e486",{"2":{"2255":1}}],["ed",{"2":{"275":1,"1934":2,"2524":1}}],["edges",{"2":{"1949":1}}],["edge",{"2":{"175":1,"1181":8,"1907":1,"2272":1,"2615":2,"2619":2,"2684":1}}],["editable",{"2":{"436":1}}],["editorconfig",{"2":{"2510":1}}],["editors",{"2":{"445":1,"2485":1}}],["editor",{"0":{"2423":1,"2485":1},"2":{"389":1,"390":1,"391":1,"401":2,"623":1,"1353":1,"1814":2,"2268":1,"2277":2,"2279":1,"2349":1,"2420":1,"2423":1,"2427":1,"2429":3,"2430":1,"2437":1,"2457":3,"2477":1,"2480":1,"2485":1,"2492":1,"2502":1,"2503":3,"2506":2,"2553":1,"2615":1,"2620":1,"2686":1}}],["edit",{"2":{"347":1,"349":1,"557":2,"609":1,"613":1,"1729":1,"1952":1,"2064":1,"2104":1,"2259":2,"2317":1,"2429":1,"2457":1,"2476":1,"2477":1,"2480":1,"2620":1}}],["edited",{"2":{"335":1,"352":1,"530":1,"1814":1,"2478":1}}],["editing",{"2":{"335":1,"402":1,"409":1,"557":1,"560":1,"1242":1,"1442":1,"2423":1,"2477":1,"2575":1}}],["edition",{"0":{"1321":1,"1324":1,"2545":1},"2":{"211":2,"249":3,"1321":1,"1324":1,"2545":1}}],["edits",{"2":{"211":1,"352":1}}],["edi",{"2":{"143":1,"149":1}}],["eopkg",{"2":{"2431":1,"2464":1}}],["eof",{"2":{"249":1,"2600":1}}],["eol",{"2":{"173":1}}],["eon95",{"2":{"57":2}}],["eon87",{"2":{"57":2}}],["eon75",{"2":{"57":2}}],["eon65",{"2":{"57":2}}],["eon40",{"2":{"57":2}}],["etc",{"0":{"1243":1},"2":{"169":1,"385":2,"451":1,"452":1,"473":1,"479":1,"573":1,"592":1,"669":1,"703":2,"734":2,"760":2,"792":2,"822":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1148":2,"1177":2,"1198":2,"1212":1,"1239":2,"1254":1,"1294":1,"1312":1,"1338":1,"1398":1,"1816":1,"1864":1,"1921":1,"1959":1,"2031":1,"2042":1,"2065":1,"2129":1,"2140":1,"2266":2,"2272":1,"2492":1,"2503":1,"2553":2,"2564":3,"2566":4,"2567":1,"2705":1,"2706":2}}],["eh",{"2":{"143":4,"270":3,"277":1,"2370":2,"2396":2}}],["es",{"2":{"1499":1}}],["estimating",{"2":{"2226":1}}],["estimated",{"2":{"2226":1,"2228":1}}],["estonian",{"2":{"1355":1,"2703":3}}],["established",{"2":{"515":1,"2144":1,"2270":1}}],["especially",{"2":{"560":1,"1326":1,"1340":1,"1430":1,"1459":1,"1495":1,"1499":1,"2262":1,"2274":1,"2302":1,"2550":1,"2584":1,"2716":1,"2740":1,"2750":1}}],["espectro",{"2":{"143":2}}],["esr",{"2":{"551":1}}],["essential",{"2":{"328":1,"1672":1,"2299":1}}],["essentially",{"2":{"263":1,"2108":1,"2269":1}}],["eschew",{"2":{"460":1}}],["escaping",{"2":{"191":1}}],["escaped",{"2":{"2672":2}}],["escape",{"0":{"1302":1,"1563":1,"1666":1,"2364":1},"1":{"1564":1,"1565":1,"1566":1,"1567":1,"1568":1},"2":{"114":1,"176":1,"188":1,"191":1,"211":1,"231":1,"623":1,"624":1,"626":2,"1270":1,"1282":1,"1351":1,"1359":1,"1508":1,"1563":3,"1566":2,"1568":4,"1666":2,"2075":1,"2164":1,"2169":1,"2198":2,"2234":1,"2263":1,"2355":2,"2364":3,"2370":8,"2388":2,"2396":8,"2410":2,"2424":1,"2450":1,"2686":1}}],["esc",{"0":{"1282":1,"2164":1},"2":{"105":2,"114":1,"199":1,"313":1,"530":2,"1302":3,"1359":1,"1366":1,"1495":1,"1508":2,"1509":1,"1510":1,"1511":3,"1527":2,"1530":1,"1549":3,"1564":1,"1565":1,"1568":4,"1584":1,"1656":1,"1666":10,"2075":1,"2164":4,"2165":1,"2167":2,"2169":2,"2231":3,"2238":3,"2355":1,"2370":2,"2388":1,"2396":2,"2401":1,"2410":1,"2693":2,"2705":1,"2749":1}}],["epsize",{"2":{"1921":1,"1922":1}}],["epsize\`",{"2":{"1921":1}}],["epoch80",{"2":{"241":2}}],["ep",{"2":{"114":1,"190":1,"191":1,"211":1,"266":1,"516":2}}],["e6",{"2":{"111":1,"511":1,"1124":1,"1492":1,"2231":1,"2238":1,"2530":1,"2558":1}}],["emergencies",{"2":{"2720":1}}],["emerge",{"2":{"2431":1,"2464":1}}],["emery65",{"2":{"211":1}}],["em",{"2":{"1511":3}}],["emitting",{"2":{"2646":1}}],["emitted",{"2":{"1411":2,"1881":1}}],["emit",{"2":{"1416":1,"2168":1}}],["emac",{"2":{"2184":1,"2384":1}}],["emacs",{"2":{"176":1,"1499":1,"1932":1,"2183":2,"2184":2,"2196":1,"2197":1,"2198":1,"2384":2}}],["email>",{"2":{"1380":1}}],["email",{"2":{"1380":2,"1511":5,"2309":1,"2351":1,"2477":3}}],["emoji",{"0":{"283":1},"1":{"284":1,"285":1},"2":{"279":1,"433":2,"2181":1,"2182":1,"2263":1}}],["employing",{"2":{"1325":1}}],["emphasis",{"2":{"198":1,"201":1}}],["emptystring",{"2":{"181":2,"191":1}}],["empty",{"2":{"50":1,"199":1,"211":2,"222":1,"249":1,"540":2,"556":1,"1205":1,"1694":1,"2220":1,"2349":1,"2453":2,"2498":1,"2566":2}}],["embed",{"0":{"301":1},"2":{"301":1}}],["embedded",{"0":{"689":1},"2":{"174":1,"176":1,"300":1,"552":1,"688":3,"689":2,"692":3,"2407":1,"2539":1,"2566":2,"2578":1,"2683":1}}],["embracing",{"2":{"116":1}}],["emulating",{"2":{"688":1}}],["emulation",{"0":{"174":1,"692":1},"2":{"94":1,"131":1,"134":1,"249":1,"277":1,"681":1,"1683":1,"2146":1,"2531":1}}],["emulates",{"2":{"1673":1,"1674":1,"1839":1,"2236":1,"2329":1,"2333":1,"2346":1}}],["emulate",{"2":{"174":1,"1791":1,"1798":1,"2170":1,"2331":1,"2756":1}}],["emulated",{"2":{"160":1,"176":2,"681":1,"688":1,"692":1,"1463":1,"1675":1,"2149":1,"2756":1}}],["eep",{"2":{"509":2,"510":2}}],["eeproms",{"2":{"2531":1}}],["eeprom",{"0":{"131":1,"174":1,"604":1,"681":1,"692":1,"1331":1,"1731":1,"1773":1,"1955":1,"2018":1,"2126":1,"2291":1,"2610":1,"2683":1},"1":{"682":1,"683":1,"684":1,"685":1,"686":1,"687":1,"1332":1,"1333":1},"2":{"49":2,"65":1,"73":1,"94":3,"114":7,"131":5,"134":7,"149":5,"160":1,"174":2,"176":10,"188":1,"191":5,"211":1,"236":7,"249":1,"277":3,"504":1,"509":3,"510":3,"592":1,"604":1,"681":12,"683":4,"684":36,"685":13,"686":5,"688":4,"689":1,"690":2,"691":1,"692":2,"1243":5,"1270":5,"1271":1,"1287":2,"1331":5,"1332":10,"1333":2,"1341":1,"1457":3,"1495":1,"1497":1,"1530":4,"1731":1,"1736":1,"1738":1,"1740":1,"1749":1,"1752":1,"1754":1,"1758":1,"1760":1,"1764":1,"1766":1,"1769":1,"1773":1,"1794":1,"1830":2,"1948":2,"1955":1,"1963":1,"1965":1,"1967":1,"1976":1,"1979":1,"1981":1,"1985":1,"1987":1,"1991":1,"1993":1,"1997":1,"1999":1,"2003":1,"2005":1,"2008":1,"2014":1,"2018":1,"2035":6,"2051":9,"2052":5,"2053":3,"2054":7,"2055":3,"2126":9,"2149":1,"2179":1,"2183":1,"2232":1,"2234":1,"2241":1,"2246":1,"2248":1,"2263":1,"2291":3,"2356":2,"2377":2,"2518":1,"2531":1,"2572":2,"2610":3,"2683":4}}],["ee",{"2":{"191":1,"249":2,"509":1,"510":2,"1270":1,"1332":1,"1496":1,"1852":1,"2126":2,"2356":1,"2370":4,"2396":4,"2572":1,"2610":1}}],["eeconfig",{"0":{"1333":1},"2":{"94":1,"114":1,"134":1,"176":1,"191":2,"211":1,"236":1,"249":5,"266":1,"277":1,"683":1,"1331":6,"1332":7,"1333":7,"2126":1,"2610":1}}],["elbow",{"2":{"2273":1}}],["elapses",{"2":{"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"1185":1,"1187":1,"1190":1,"1193":1}}],["elapsed32",{"2":{"588":1,"2130":1,"2577":6}}],["elapsed",{"2":{"249":1,"1326":1,"1375":1,"2044":1,"2612":1}}],["elf",{"2":{"236":1,"1287":1,"2425":1,"2469":1,"2513":2}}],["elongate",{"2":{"211":1}}],["ellora65",{"2":{"211":1}}],["ellipse",{"2":{"211":3,"236":1,"2577":3}}],["ellipses",{"2":{"153":1,"2577":3}}],["elevated",{"2":{"2274":1}}],["element++",{"2":{"1815":1,"2139":1}}],["element",{"2":{"1815":2,"2139":2}}],["elements",{"2":{"134":1,"2566":1,"2578":1}}],["electrical",{"2":{"1725":3,"1946":3,"2059":2,"2272":1,"2280":1,"2513":1,"2559":1,"2566":3}}],["electronics",{"2":{"701":1,"1471":1}}],["elephant42",{"2":{"191":2}}],["elephant",{"2":{"67":4,"72":1}}],["elsewhere",{"2":{"501":1,"557":1,"578":1,"1866":1,"2272":1,"2303":1,"2328":1,"2577":1,"2728":1,"2749":1}}],["else",{"2":{"90":6,"105":4,"179":1,"194":1,"196":3,"350":1,"352":2,"453":2,"473":1,"568":1,"572":2,"582":1,"593":1,"594":1,"626":1,"1302":2,"1303":1,"1313":1,"1332":2,"1359":3,"1365":1,"1375":1,"1383":1,"1446":3,"1499":1,"1507":1,"1549":7,"1560":6,"1668":1,"1680":3,"1686":2,"1792":1,"1816":2,"1822":1,"1857":1,"1873":1,"1933":2,"1940":1,"1941":2,"1959":2,"2130":1,"2140":1,"2150":1,"2168":1,"2169":6,"2170":2,"2171":4,"2183":1,"2228":2,"2250":1,"2299":2,"2309":1,"2415":1,"2510":2,"2600":1,"2604":2,"2612":1,"2723":1}}],["eligible",{"2":{"1936":1}}],["eliminating",{"0":{"1934":1},"2":{"789":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1}}],["eliminate",{"2":{"76":1,"222":1,"277":1,"1668":1,"1934":1,"2279":1,"2566":1}}],["elitec",{"2":{"122":1}}],["elite",{"0":{"1321":1,"1322":1,"1323":1},"1":{"1323":1,"1324":1},"2":{"86":2,"153":1,"189":2,"191":2,"199":1,"1311":7,"1314":2,"1315":4,"1322":5,"2126":1,"2232":1,"2269":1,"2545":2,"2673":1,"2712":1}}],["evaporate",{"2":{"2272":1}}],["evaluate",{"2":{"1879":1}}],["evaluates",{"2":{"1726":2,"1947":2,"2100":1,"2101":1}}],["evaluated",{"2":{"504":1}}],["evaluation",{"2":{"476":1}}],["evaluations",{"0":{"476":1}}],["evo70",{"2":{"211":1}}],["evy",{"0":{"57":1}}],["evyd13",{"0":{"57":1},"2":{"57":22,"211":1}}],["ever",{"2":{"112":1,"154":1,"175":1,"194":1,"1234":1,"1359":3,"2744":1}}],["everytime",{"2":{"2128":1}}],["everything",{"0":{"26":1},"2":{"332":1,"360":1,"582":1,"602":1,"1129":1,"1258":1,"1264":1,"1304":1,"1332":1,"1338":1,"1381":1,"1553":1,"1960":1,"2043":1,"2134":1,"2148":1,"2150":1,"2262":2,"2279":1,"2282":1,"2353":1,"2404":1,"2424":1,"2444":1,"2455":1,"2503":1,"2508":1,"2578":1,"2725":1,"2744":1}}],["everywhere",{"2":{"1873":1}}],["everyone",{"2":{"179":1,"349":1,"350":1,"551":1,"562":1,"1411":1,"1416":1,"2418":1}}],["every",{"0":{"2509":1},"2":{"92":1,"188":1,"194":2,"199":1,"399":1,"415":1,"435":1,"486":1,"497":1,"520":1,"521":1,"522":1,"556":1,"571":1,"586":1,"623":1,"654":1,"659":1,"660":1,"683":1,"1286":1,"1300":1,"1330":1,"1341":1,"1342":1,"1385":1,"1451":1,"1506":1,"1520":1,"1733":1,"1821":1,"1879":2,"1937":1,"1950":1,"1957":1,"2105":3,"2126":1,"2128":1,"2130":1,"2149":1,"2161":2,"2162":1,"2232":1,"2234":1,"2239":1,"2260":1,"2262":1,"2274":1,"2437":1,"2455":1,"2480":1,"2534":1,"2569":1,"2671":1,"2721":1,"2728":1,"2746":2}}],["even",{"2":{"93":1,"153":2,"190":1,"211":1,"459":1,"474":1,"481":1,"496":1,"505":2,"506":1,"533":1,"560":1,"575":1,"586":1,"597":2,"1278":1,"1286":1,"1303":2,"1325":1,"1326":1,"1331":1,"1332":2,"1353":1,"1366":1,"1380":1,"1430":1,"1432":1,"1499":1,"1508":1,"1518":2,"1524":1,"1562":1,"1567":1,"1662":1,"1670":1,"1674":1,"1675":1,"1805":1,"2045":1,"2108":1,"2112":1,"2118":1,"2146":1,"2161":1,"2183":1,"2226":1,"2228":1,"2263":1,"2274":1,"2280":1,"2302":1,"2305":1,"2455":1,"2546":1,"2570":1,"2577":1,"2607":1,"2729":2,"2738":1,"2741":1,"2752":2}}],["eventual",{"2":{"1346":1}}],["eventually",{"2":{"169":1,"1287":1,"2255":1,"2311":1}}],["events",{"0":{"350":1,"1874":1},"2":{"73":2,"203":1,"350":1,"571":1,"572":1,"573":1,"584":1,"1326":2,"1332":1,"1368":1,"1511":1,"1559":1,"1560":1,"1673":1,"1677":1,"1859":1,"1954":1,"2129":1,"2411":1,"2612":1,"2649":1,"2674":2,"2687":1,"2729":1,"2735":4,"2738":1,"2749":2}}],["event",{"0":{"1365":1,"2322":1},"2":{"46":3,"160":1,"176":1,"199":1,"203":1,"350":5,"521":1,"571":1,"573":1,"1275":1,"1299":2,"1357":4,"1366":1,"1367":1,"1369":1,"1448":1,"1511":2,"1527":1,"1675":1,"1828":1,"1859":1,"1874":3,"2067":1,"2071":1,"2075":3,"2152":1,"2320":1,"2641":1,"2642":1,"2662":1,"2730":1,"2731":2,"2732":3,"2733":2,"2734":1,"2740":1,"2749":1}}],["ez",{"2":{"50":1,"114":1,"270":2,"277":1,"378":1,"383":1,"2102":1,"2566":1}}],["e",{"2":{"38":2,"114":2,"266":2,"279":1,"292":1,"313":1,"349":1,"370":1,"371":2,"395":2,"396":2,"408":1,"411":2,"461":1,"506":1,"529":1,"530":2,"626":2,"703":1,"1125":1,"1129":1,"1177":1,"1198":1,"1287":1,"1312":2,"1315":13,"1316":1,"1317":1,"1319":2,"1322":5,"1326":1,"1335":1,"1338":1,"1359":2,"1362":1,"1378":1,"1397":1,"1451":2,"1496":1,"1507":1,"1509":1,"1511":2,"1518":2,"1530":1,"1553":1,"1557":1,"1591":2,"1656":1,"1670":3,"1676":1,"1677":1,"1686":2,"1714":1,"1729":2,"1793":13,"1813":2,"1816":1,"1821":2,"1836":1,"1851":1,"1864":2,"1879":1,"1902":1,"1915":1,"1932":1,"1934":4,"1948":1,"1952":2,"1959":1,"2034":1,"2042":1,"2044":3,"2045":1,"2063":1,"2075":1,"2126":5,"2129":3,"2140":1,"2148":1,"2152":1,"2153":4,"2161":1,"2170":1,"2259":1,"2268":2,"2270":2,"2271":1,"2280":1,"2335":2,"2347":1,"2355":3,"2371":13,"2386":3,"2401":1,"2407":1,"2427":1,"2440":2,"2501":2,"2502":2,"2519":1,"2524":2,"2564":2,"2565":2,"2566":4,"2567":1,"2569":1,"2575":1,"2577":1,"2705":1,"2738":1}}],["eat",{"2":{"2263":1}}],["eabi",{"2":{"325":1}}],["ea1514b3",{"2":{"314":1,"315":1}}],["eagle",{"2":{"211":1}}],["eager",{"2":{"94":1,"114":1,"199":1,"222":1,"236":1,"1326":9,"1329":4,"2674":3}}],["earliest",{"2":{"2524":1,"2525":1}}],["earlier",{"2":{"114":1,"1555":1,"1725":1,"1946":1,"2548":1,"2552":1,"2728":1,"2729":4,"2735":1,"2747":1}}],["early",{"0":{"2523":1,"2524":1,"2525":1},"1":{"2524":1,"2525":1,"2526":1},"2":{"49":1,"63":1,"65":1,"77":1,"279":2,"574":1,"575":1,"1523":1,"1825":1,"1848":1,"1864":1,"2168":1,"2277":1,"2523":2,"2524":5,"2525":4,"2566":5}}],["each",{"0":{"35":1,"1551":1,"1552":1},"1":{"36":1},"2":{"31":3,"34":1,"36":1,"45":2,"65":1,"118":1,"138":1,"149":1,"166":1,"176":2,"188":1,"222":1,"234":1,"273":1,"313":1,"340":1,"349":1,"374":2,"413":1,"414":1,"428":1,"433":1,"462":1,"484":1,"499":1,"502":1,"505":2,"506":1,"509":1,"516":1,"521":1,"556":2,"557":1,"568":1,"569":1,"580":1,"588":3,"610":1,"627":1,"641":1,"655":1,"664":1,"669":1,"697":1,"701":1,"734":1,"755":1,"760":1,"784":1,"792":1,"816":1,"822":1,"848":1,"857":1,"883":1,"891":1,"917":1,"925":1,"951":1,"959":1,"985":1,"993":1,"1019":1,"1027":1,"1053":1,"1061":1,"1087":1,"1095":1,"1143":1,"1148":1,"1181":1,"1212":1,"1217":1,"1235":1,"1236":1,"1252":1,"1265":1,"1312":1,"1326":1,"1329":1,"1331":1,"1340":1,"1346":1,"1356":1,"1357":2,"1385":1,"1406":3,"1438":2,"1441":1,"1451":2,"1452":1,"1518":1,"1523":1,"1547":2,"1554":2,"1556":1,"1557":2,"1558":1,"1562":1,"1573":1,"1612":1,"1614":1,"1638":1,"1657":1,"1672":1,"1676":1,"1683":1,"1725":1,"1730":1,"1802":1,"1804":1,"1816":1,"1820":1,"1821":2,"1822":1,"1849":1,"1851":2,"1857":1,"1902":1,"1946":1,"1950":2,"1954":1,"2031":1,"2032":1,"2038":3,"2040":7,"2043":1,"2083":1,"2087":1,"2117":1,"2125":1,"2126":1,"2130":1,"2131":1,"2134":1,"2140":1,"2142":1,"2147":1,"2161":6,"2162":2,"2167":3,"2170":6,"2177":1,"2181":1,"2182":3,"2234":1,"2255":1,"2258":1,"2259":1,"2268":1,"2271":1,"2273":2,"2274":1,"2276":1,"2279":1,"2289":1,"2290":1,"2311":1,"2321":1,"2347":1,"2354":2,"2402":1,"2405":2,"2407":1,"2424":1,"2479":1,"2499":1,"2523":1,"2544":1,"2548":2,"2558":2,"2567":1,"2574":1,"2575":1,"2576":1,"2577":3,"2585":2,"2592":2,"2593":1,"2595":2,"2597":2,"2614":2,"2615":2,"2616":1,"2686":4,"2687":1,"2688":2,"2689":1,"2694":1,"2695":2,"2730":1,"2735":1,"2740":1,"2753":3,"2757":1}}],["east",{"2":{"1915":1,"2181":1}}],["eason",{"2":{"222":1}}],["ease",{"2":{"70":1,"2181":1,"2324":1}}],["easyeda",{"2":{"93":1}}],["easy",{"0":{"1234":1},"1":{"1235":1},"2":{"6":1,"114":2,"154":1,"325":1,"380":1,"436":1,"453":2,"473":1,"479":1,"550":1,"551":1,"555":1,"557":1,"606":1,"623":1,"636":1,"695":1,"701":1,"1234":3,"1236":1,"1310":1,"1684":1,"2041":1,"2118":1,"2270":1,"2273":1,"2304":1,"2417":2,"2423":1,"2458":1,"2468":1,"2578":1}}],["easiest",{"2":{"557":1,"1235":1,"1492":1,"1725":1,"1946":1,"2161":1,"2181":1,"2274":1,"2317":1,"2615":1}}],["easier",{"2":{"2":1,"10":1,"21":1,"31":1,"45":1,"70":1,"118":1,"130":1,"133":1,"341":1,"363":1,"431":1,"432":1,"457":1,"469":1,"471":1,"481":1,"530":1,"1262":1,"1385":1,"1499":1,"1733":1,"1864":1,"1957":1,"2061":1,"2145":1,"2178":1,"2182":1,"2250":1,"2252":1,"2270":2,"2281":1,"2292":1,"2300":1,"2302":1,"2405":2,"2408":1,"2418":1,"2423":1,"2424":1,"2472":1,"2508":1,"2510":1,"2571":1,"2614":1,"2746":1,"2756":1}}],["easily",{"2":{"6":1,"65":1,"388":1,"615":1,"627":1,"1212":1,"1359":1,"1655":1,"1832":1,"1921":1,"2031":1,"2250":1,"2272":1,"2277":1,"2422":1,"2452":1,"2480":1,"2501":1,"2728":1,"2753":1}}],["exe",{"2":{"2453":3,"2508":1,"2513":1}}],["exercise",{"2":{"1518":1,"2614":1}}],["exec",{"2":{"149":1,"515":1,"596":1,"597":1,"598":1,"599":2,"600":2,"2130":2,"2263":1,"2355":1,"2392":1,"2749":1}}],["executor",{"0":{"597":1,"598":1},"2":{"515":1,"597":1,"598":1,"2263":1}}],["executors",{"2":{"134":1,"601":2}}],["executable",{"2":{"335":1,"2417":1,"2498":1,"2513":2,"2753":1,"2755":1}}],["executions",{"2":{"598":1}}],["execution",{"0":{"596":1,"599":1,"600":1},"1":{"597":1,"598":1,"599":1,"600":1,"601":1},"2":{"65":1,"249":1,"515":1,"597":3,"598":1,"599":2,"600":2,"698":1,"2263":1,"2524":1,"2574":1}}],["executing",{"2":{"49":1,"160":1,"568":1,"597":1,"598":1,"2060":1,"2513":1,"2524":2,"2525":1}}],["executed",{"2":{"424":1,"598":1,"698":2,"2169":1,"2524":3,"2525":2,"2526":1,"2574":1}}],["executes",{"2":{"49":1,"688":1,"691":1}}],["execute",{"2":{"49":1,"65":1,"77":1,"105":2,"247":1,"596":1,"1303":1,"1448":2,"2262":2,"2348":1,"2355":2,"2392":2,"2544":1}}],["exlm",{"2":{"1430":2,"2378":1,"2399":1}}],["exsl",{"2":{"1360":1,"2355":1,"2392":1}}],["exsel",{"2":{"231":2,"1360":3,"2355":2,"2392":2}}],["exhaustion",{"2":{"659":1,"660":1}}],["exhaustive",{"2":{"273":1,"663":1,"2563":1,"2564":1,"2719":1}}],["exisiting",{"2":{"2276":1}}],["existed",{"2":{"2169":1}}],["existence",{"2":{"199":1,"1364":1}}],["exists",{"2":{"191":1,"266":1,"374":2,"405":1,"610":1,"615":1,"1300":2,"1349":1,"1397":1,"1413":1,"1415":1,"1560":1,"1675":1,"1933":1,"2513":1,"2566":1,"2567":1}}],["exist",{"2":{"182":1,"191":1,"199":1,"236":1,"317":2,"496":1,"510":1,"539":1,"554":1,"1265":1,"1398":1,"2169":1,"2255":1,"2348":1,"2530":1,"2587":1,"2594":1,"2753":1}}],["existing",{"0":{"31":1,"34":1,"36":1,"2550":1,"2753":1},"2":{"50":2,"92":1,"118":1,"128":1,"140":1,"149":2,"158":1,"194":1,"201":1,"203":1,"213":1,"221":1,"240":1,"249":1,"262":1,"268":1,"272":1,"275":1,"282":3,"291":1,"331":1,"341":1,"344":1,"352":1,"386":1,"453":2,"481":1,"560":1,"569":1,"571":1,"1341":8,"1344":1,"1346":1,"1656":1,"1852":1,"2268":1,"2327":1,"2445":1,"2480":2,"2501":2,"2508":1,"2513":2,"2550":2,"2564":1,"2566":5,"2567":1,"2753":2}}],["exiting",{"2":{"2150":1,"2231":2,"2238":2}}],["exit",{"2":{"373":2,"393":1,"394":1,"395":1,"396":1,"402":1,"403":1,"411":1,"626":1,"1923":1,"2353":1,"2575":3,"2693":2}}],["exaggeration",{"2":{"2745":1}}],["exactly",{"2":{"1351":1,"1921":1,"2148":1,"2255":1,"2324":1}}],["exact",{"2":{"336":1,"538":1,"597":1,"1518":1,"1605":1,"1675":1,"2196":1,"2197":1,"2198":1,"2250":1,"2328":1,"2727":1,"2745":1}}],["examine",{"2":{"1496":1}}],["examines",{"2":{"376":1,"397":1}}],["examining",{"0":{"316":1}}],["examples",{"0":{"458":1,"1251":1,"1301":1,"1382":1,"1511":1,"1534":1,"1592":1,"1656":1,"1664":1,"1667":1,"1816":1,"1856":1,"1860":1,"1875":1,"1958":1,"1959":1,"2077":1,"2140":1,"2163":1,"2165":1},"1":{"1252":1,"1253":1,"1302":1,"1303":1,"1383":1,"1384":1,"1385":1,"1593":1,"1594":1,"1665":1,"1666":1,"1668":1,"1857":1,"1858":1,"1859":1,"1861":1,"1862":1,"1876":1,"1877":1,"1959":1,"1960":1,"2078":1,"2079":1,"2164":1,"2165":1,"2166":2,"2167":2,"2168":2,"2169":2,"2170":2,"2171":2},"2":{"99":1,"114":1,"198":1,"375":1,"376":1,"378":1,"380":1,"381":1,"405":1,"407":1,"411":1,"557":1,"609":2,"1251":1,"1301":1,"1330":1,"1346":1,"1366":1,"1518":1,"1519":1,"1655":1,"1662":1,"1677":1,"1729":1,"1860":1,"1921":1,"1952":1,"2147":1,"2148":1,"2161":1,"2162":1,"2165":3,"2171":4,"2262":1,"2270":1,"2284":1,"2294":1,"2311":1,"2486":1,"2575":3,"2577":2,"2651":1,"2738":1,"2752":1}}],["example",{"0":{"313":1,"414":1,"419":1,"420":1,"421":1,"422":1,"463":1,"464":1,"465":1,"530":1,"572":1,"576":1,"582":1,"585":1,"588":1,"590":1,"593":1,"594":1,"1332":1,"1343":1,"1344":1,"1374":1,"1392":1,"1436":1,"1446":1,"1448":1,"1471":1,"1663":1,"1686":1,"1717":1,"1718":1,"1792":1,"1814":1,"1815":1,"1923":1,"2039":1,"2138":1,"2139":1,"2164":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1,"2570":1,"2604":1,"2606":1},"1":{"1375":1},"2":{"49":2,"70":1,"90":2,"98":1,"99":2,"105":2,"111":1,"114":2,"149":1,"194":1,"202":1,"203":1,"211":1,"234":1,"272":1,"301":1,"314":1,"331":3,"358":1,"370":2,"373":1,"374":1,"388":1,"389":1,"390":1,"391":1,"393":1,"394":1,"395":1,"396":1,"397":1,"401":1,"414":2,"415":3,"417":2,"423":2,"424":1,"425":2,"426":4,"430":2,"432":1,"437":1,"441":2,"453":1,"470":1,"473":1,"513":1,"529":1,"532":1,"540":1,"554":1,"556":2,"557":1,"570":1,"572":1,"576":1,"582":1,"585":2,"588":1,"589":1,"597":1,"601":1,"611":1,"616":1,"624":2,"626":1,"661":1,"669":1,"684":1,"701":1,"703":2,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1132":1,"1133":1,"1148":1,"1177":2,"1181":1,"1198":2,"1216":1,"1238":1,"1252":1,"1253":1,"1269":1,"1293":1,"1299":1,"1300":2,"1302":2,"1303":2,"1312":1,"1313":1,"1325":2,"1331":1,"1332":4,"1335":1,"1339":1,"1343":2,"1344":1,"1351":1,"1357":8,"1359":1,"1360":1,"1361":2,"1364":1,"1365":1,"1376":1,"1377":1,"1381":1,"1382":3,"1385":1,"1388":1,"1391":1,"1393":1,"1395":1,"1405":1,"1412":1,"1416":1,"1430":1,"1431":1,"1445":1,"1447":1,"1448":1,"1451":2,"1464":1,"1469":1,"1471":1,"1497":1,"1499":1,"1503":1,"1510":1,"1511":3,"1518":1,"1519":1,"1523":2,"1524":1,"1529":1,"1534":1,"1557":1,"1558":1,"1562":2,"1582":1,"1594":1,"1633":1,"1634":1,"1654":1,"1663":1,"1665":1,"1666":1,"1668":2,"1670":1,"1684":1,"1686":1,"1717":1,"1718":1,"1719":1,"1720":1,"1724":1,"1725":1,"1729":1,"1791":1,"1802":1,"1804":1,"1807":1,"1813":1,"1814":1,"1815":1,"1817":1,"1821":1,"1854":1,"1857":1,"1859":1,"1861":1,"1862":1,"1878":1,"1902":1,"1905":1,"1906":1,"1908":2,"1917":1,"1921":1,"1923":1,"1933":2,"1939":1,"1941":1,"1945":1,"1946":1,"1952":1,"1959":1,"2041":1,"2047":1,"2051":1,"2059":1,"2067":1,"2079":2,"2113":1,"2122":1,"2126":1,"2130":1,"2137":1,"2138":1,"2139":1,"2145":1,"2146":1,"2149":1,"2152":1,"2155":2,"2157":1,"2160":1,"2161":2,"2164":1,"2167":1,"2169":5,"2170":1,"2171":2,"2181":2,"2182":1,"2183":1,"2252":2,"2259":1,"2262":4,"2277":1,"2293":2,"2295":1,"2299":2,"2300":1,"2302":1,"2303":1,"2306":1,"2309":3,"2311":2,"2323":1,"2325":1,"2331":1,"2344":1,"2347":3,"2348":1,"2349":1,"2367":1,"2393":1,"2402":1,"2404":1,"2407":1,"2411":1,"2413":1,"2414":1,"2415":1,"2421":2,"2452":1,"2469":2,"2490":1,"2491":1,"2524":1,"2546":1,"2548":1,"2549":1,"2550":1,"2559":1,"2564":1,"2566":3,"2576":1,"2577":1,"2612":1,"2617":1,"2671":1,"2672":6,"2673":2,"2674":1,"2682":1,"2686":6,"2688":4,"2689":3,"2694":3,"2695":4,"2696":1,"2697":1,"2699":3,"2701":1,"2702":1,"2728":3,"2734":3,"2735":1,"2736":1,"2737":1,"2743":1,"2746":2,"2748":1,"2750":1,"2753":1,"2755":1,"2757":1}}],["exclaim",{"2":{"2378":1,"2399":1}}],["exclamation",{"2":{"1430":1}}],["excluding",{"0":{"441":1},"2":{"502":1,"1457":1,"1937":1,"2677":1}}],["excluded",{"2":{"441":1,"2051":2}}],["exclude",{"2":{"176":2,"610":2,"1446":7}}],["exclusion",{"0":{"1581":1},"1":{"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1},"2":{"1581":2}}],["exclusions",{"2":{"114":1,"149":1}}],["exclusively",{"2":{"304":1,"2242":1}}],["exclusive",{"2":{"160":1,"1339":1}}],["exchangeable",{"2":{"654":1}}],["excess",{"2":{"617":1,"2273":1}}],["excessive",{"2":{"469":1,"659":1,"2584":1}}],["except",{"2":{"453":1,"461":2,"466":1,"502":1,"726":1,"1214":1,"1242":1,"1335":1,"1654":1,"1857":1,"2230":1,"2240":1,"2302":1,"2367":1,"2742":1}}],["exceptional",{"2":{"466":1}}],["exceptionname",{"2":{"460":1}}],["exception",{"2":{"189":1,"194":1,"461":1,"466":3,"1390":1,"1397":1,"2169":1,"2327":1,"2385":1,"2550":1,"2587":1}}],["exceptions",{"0":{"466":1},"2":{"160":1,"466":1,"625":1,"1445":1,"1864":1,"1879":1,"2303":1}}],["exceed",{"2":{"2268":1}}],["exceeds",{"2":{"176":1,"481":1}}],["exceeding",{"2":{"160":1}}],["exceeded",{"2":{"28":1,"516":1,"1425":1}}],["ext",{"2":{"2545":1}}],["extreg",{"2":{"1842":5}}],["extremely",{"2":{"479":1,"584":1,"628":1,"2463":1,"2739":1}}],["extraneous",{"2":{"2705":1}}],["extracondensedbold",{"2":{"2575":1}}],["extracts",{"2":{"613":1}}],["extracted",{"2":{"249":1,"2498":1}}],["extract",{"0":{"613":1},"2":{"236":1,"249":5,"277":1,"282":1,"607":1,"613":4,"2497":1,"2687":1}}],["extraction",{"2":{"191":1}}],["extrapolates",{"2":{"606":1}}],["extrakeys",{"2":{"191":1,"2705":1}}],["extrakey",{"2":{"70":1,"111":1,"191":1,"209":1,"515":1,"516":2,"1287":1,"1291":2,"2063":1,"2263":1,"2705":1}}],["extras",{"2":{"48":1,"114":1,"160":1,"199":2,"222":1,"277":1,"2703":1}}],["extra",{"0":{"546":1,"1291":1},"2":{"45":2,"114":1,"145":1,"176":1,"191":2,"199":1,"317":1,"563":1,"633":1,"681":1,"693":1,"1287":2,"1391":1,"1463":1,"1515":7,"2042":1,"2131":2,"2150":1,"2262":1,"2276":1,"2349":1,"2423":1,"2506":1,"2523":1,"2530":1,"2575":1,"2729":1}}],["extkeys",{"2":{"143":2}}],["extern",{"2":{"266":1,"1792":1,"2752":1}}],["externs",{"2":{"196":1}}],["externally",{"2":{"224":1,"228":1,"317":1,"2441":1}}],["external",{"0":{"228":1,"392":1,"2291":1,"2441":1,"2443":1,"2444":1,"2446":1,"2447":1},"1":{"393":1,"394":1,"395":1,"396":1,"397":1,"2442":1,"2443":1,"2444":1,"2445":1,"2446":1,"2447":1,"2448":1},"2":{"73":1,"114":1,"134":1,"149":1,"174":1,"220":1,"224":1,"228":3,"241":2,"253":2,"268":1,"270":2,"393":1,"394":1,"395":1,"396":1,"397":1,"638":1,"681":1,"684":10,"685":5,"688":1,"690":6,"691":1,"694":7,"1126":1,"1134":1,"1225":1,"1723":1,"1729":1,"1814":1,"1944":1,"1952":1,"2291":1,"2441":5,"2442":1,"2443":1,"2444":1,"2445":2,"2446":2,"2447":3,"2448":1,"2531":1,"2544":2,"2554":1,"2566":1,"2574":1,"2577":1,"2638":1}}],["extent",{"2":{"2157":1,"2577":1}}],["extensively",{"2":{"470":1}}],["extensive",{"2":{"355":1,"1267":1}}],["extensions",{"0":{"2510":1},"2":{"2510":2}}],["extension",{"2":{"199":1,"211":1,"454":1,"460":1,"505":2,"1804":1,"2510":3,"2512":2,"2546":1}}],["extensible",{"2":{"107":1,"114":1,"2492":1}}],["extending",{"0":{"599":1},"2":{"505":2,"571":1}}],["extend",{"2":{"160":1,"191":1,"599":2}}],["extended",{"2":{"74":1,"176":2,"211":1,"236":1,"435":2,"505":2,"684":1,"685":1,"686":1,"1516":1,"1851":2,"2343":1,"2344":1,"2346":1,"2348":2,"2530":1,"2703":2,"2720":1}}],["ext65",{"0":{"60":1},"2":{"60":1}}],["expires",{"2":{"2737":1}}],["expired",{"2":{"1879":1,"2729":1}}],["expansion",{"2":{"2290":1}}],["expands",{"2":{"395":1,"2728":1}}],["expanding",{"2":{"300":1,"1336":1,"2411":1}}],["expandable",{"2":{"300":1}}],["expanders",{"2":{"2284":1}}],["expander",{"2":{"266":1}}],["expanded",{"0":{"118":1},"2":{"70":1,"506":1,"1265":1,"2042":1}}],["expand",{"2":{"134":1,"149":1,"331":1,"395":1,"2728":1}}],["expression",{"2":{"469":1}}],["expressions",{"0":{"471":1,"473":1},"2":{"374":1,"473":1}}],["expressed",{"2":{"70":1}}],["explore",{"2":{"2280":1,"2315":1,"2424":1}}],["explorer",{"2":{"2245":1,"2247":1,"2249":1,"2452":2,"2501":1}}],["explanations",{"2":{"2260":1}}],["explanation",{"2":{"1334":1,"2162":1,"2172":1}}],["explained",{"2":{"1345":1,"2262":1}}],["explain",{"2":{"453":1,"455":1,"554":1,"560":1,"1675":1,"2256":1,"2742":1}}],["explains",{"2":{"412":1,"1672":1,"2297":1}}],["explaining",{"2":{"173":1,"1672":1,"2566":1,"2746":1,"2750":1}}],["explicit",{"0":{"124":1},"2":{"134":1,"198":1,"1527":1}}],["explicitly",{"2":{"14":1,"114":1,"191":1,"469":1,"684":1,"1432":1,"1495":1,"1528":1,"2037":1,"2051":1,"2150":1,"2711":1}}],["exporting",{"2":{"2575":2}}],["exports",{"2":{"370":2,"371":1}}],["exported",{"2":{"317":1}}],["export",{"2":{"134":1,"365":1,"366":1,"379":1,"391":1,"393":2,"394":2,"441":1,"519":1,"2277":2,"2566":1}}],["exposes",{"2":{"1313":1,"2304":1}}],["exposed",{"2":{"689":1,"690":1,"691":1,"2274":2,"2515":1,"2683":1}}],["expose",{"2":{"114":1,"160":1,"176":1,"211":1,"2305":1}}],["expert",{"2":{"703":2}}],["experiment",{"2":{"1836":1,"2280":1}}],["experimentation",{"2":{"556":1}}],["experimental",{"2":{"511":1,"1136":1,"1403":1,"2102":2,"2128":1}}],["experiencing",{"2":{"1260":1}}],["experience",{"2":{"496":1,"552":1,"1136":1,"1228":1,"1403":1,"1405":1,"2125":1,"2472":1}}],["expense",{"2":{"496":1,"2226":1}}],["expensive",{"2":{"114":1,"1329":1,"1733":1,"1957":1,"2269":1}}],["expects",{"2":{"1677":1,"2146":1,"2575":1,"2738":1}}],["expect",{"2":{"437":1,"1286":1,"1325":1,"1848":1,"2318":1,"2455":1,"2699":1,"2756":1}}],["expecting",{"2":{"124":1}}],["expected",{"2":{"4":1,"13":1,"317":1,"352":1,"701":1,"1447":1,"1685":1,"1725":3,"1864":1,"1946":3,"2150":1,"2686":1,"2730":1}}],["erm",{"0":{"1576":1},"2":{"1571":1,"1576":2,"1577":2}}],["err",{"2":{"496":1}}],["erroneous",{"2":{"149":1,"160":1}}],["error",{"0":{"141":1},"2":{"28":1,"92":1,"103":1,"114":4,"126":1,"149":4,"160":1,"176":3,"191":2,"199":3,"201":1,"211":1,"222":4,"236":1,"315":1,"433":1,"500":1,"516":1,"522":1,"556":1,"689":1,"710":2,"713":2,"716":2,"719":2,"722":2,"725":2,"728":2,"1190":2,"1193":2,"1338":1,"1437":1,"1847":1,"1907":1,"2279":1,"2300":1,"2353":1,"2437":1,"2454":1,"2468":1,"2477":1}}],["errors",{"0":{"2308":1},"2":{"17":1,"34":1,"73":2,"92":1,"114":2,"134":1,"149":1,"160":2,"191":2,"199":1,"211":2,"316":1,"360":1,"381":1,"481":1,"556":3,"1287":1,"1312":1,"1437":1,"1847":1,"2128":2,"2144":1,"2262":1,"2279":1,"2308":2,"2335":1,"2428":1,"2437":1,"2439":1,"2508":1,"2587":1,"2593":1,"2594":1,"2752":1}}],["eras",{"2":{"2355":1,"2392":1}}],["erasing",{"2":{"2347":1,"2353":1,"2453":1}}],["erased",{"2":{"2353":8}}],["erase",{"2":{"277":2,"683":1,"687":1,"690":1,"1238":1,"1287":1,"1815":1,"2139":1,"2230":2,"2347":1,"2355":2,"2392":2,"2453":1,"2475":1}}],["era",{"2":{"236":1,"249":1}}],["era65",{"2":{"222":1}}],["erovia",{"2":{"164":1}}],["ergosaurus",{"2":{"159":2}}],["ergotaco",{"2":{"143":2}}],["ergodash",{"2":{"143":4}}],["ergodone",{"2":{"102":2}}],["ergodox",{"0":{"1722":1},"2":{"8":1,"114":3,"134":1,"143":2,"211":1,"378":1,"1329":1,"1722":7,"2136":1,"2167":9,"2262":2}}],["ergoarrows",{"2":{"143":2}}],["ergo42",{"2":{"143":2}}],["ergo",{"2":{"143":2}}],["ergoinu",{"2":{"37":2,"149":1}}],["enamelled",{"2":{"2270":1}}],["enablehexnumpad",{"2":{"2183":1}}],["enable=true",{"2":{"1245":1,"1255":1}}],["enable=yes",{"2":{"93":1,"277":1,"375":1,"1254":1,"2063":1,"2755":1}}],["enabled",{"0":{"504":1,"1483":1,"1741":1,"1968":1},"1":{"1484":1,"1742":1,"1969":1},"2":{"112":3,"114":2,"174":1,"191":1,"209":4,"211":1,"222":2,"236":1,"249":2,"265":1,"268":1,"275":2,"277":1,"388":1,"397":1,"502":9,"505":1,"515":1,"516":1,"592":2,"636":1,"657":1,"683":1,"698":3,"1228":1,"1243":1,"1250":2,"1252":1,"1294":1,"1313":1,"1316":2,"1317":2,"1321":1,"1332":5,"1341":4,"1357":1,"1377":1,"1384":7,"1398":1,"1402":1,"1413":1,"1418":1,"1423":1,"1431":3,"1432":1,"1439":1,"1446":1,"1449":1,"1455":1,"1484":1,"1489":1,"1495":1,"1501":1,"1516":1,"1526":1,"1528":1,"1548":1,"1556":1,"1559":1,"1570":1,"1579":1,"1581":1,"1668":1,"1670":2,"1730":2,"1741":1,"1742":1,"1751":1,"1752":1,"1753":1,"1754":1,"1773":1,"1793":1,"1833":1,"1845":1,"1863":1,"1864":1,"1866":2,"1873":3,"1878":4,"1908":2,"1932":1,"1948":1,"1954":2,"1968":1,"1969":1,"1978":1,"1979":1,"1980":1,"1981":1,"2018":1,"2032":1,"2034":1,"2036":1,"2052":7,"2056":1,"2057":1,"2063":2,"2073":1,"2074":1,"2107":1,"2114":1,"2129":3,"2131":3,"2173":2,"2180":1,"2183":2,"2226":1,"2254":1,"2260":1,"2263":1,"2304":1,"2348":1,"2371":1,"2502":1,"2566":3,"2574":2,"2577":1,"2607":1,"2674":1,"2676":2,"2677":2,"2679":1,"2680":1,"2682":1,"2688":1,"2690":1,"2692":2,"2694":3,"2695":1,"2696":1,"2697":2,"2698":1,"2705":1,"2711":2,"2735":3,"2736":3,"2738":2}}],["enables",{"2":{"87":1,"114":1,"119":1,"502":7,"504":1,"505":6,"506":1,"513":1,"515":2,"582":1,"820":1,"1214":1,"1399":4,"1424":1,"1431":1,"1432":1,"1526":1,"1728":20,"1808":1,"1817":1,"1829":1,"1844":1,"1845":1,"1851":1,"1861":1,"1868":1,"1932":1,"1949":48,"2129":8,"2131":1,"2172":1,"2173":4,"2263":7,"2539":1,"2648":1,"2679":1,"2680":1,"2690":1,"2718":1,"2727":1,"2737":1}}],["enable",{"0":{"1413":1,"1439":1,"1474":1,"1486":1,"1500":1,"1737":1,"1738":1,"1866":1,"1873":1,"1930":1,"1964":1,"1965":1,"2053":1,"2103":1},"1":{"1501":1},"2":{"10":1,"28":1,"31":3,"34":3,"49":1,"65":5,"70":1,"74":1,"75":1,"87":3,"88":7,"93":2,"94":1,"103":1,"104":7,"114":6,"118":1,"119":1,"124":1,"126":1,"127":7,"131":1,"133":1,"134":12,"149":2,"160":1,"176":5,"191":3,"194":2,"199":1,"202":2,"209":2,"211":2,"222":2,"232":1,"234":1,"235":2,"236":2,"247":1,"249":1,"266":35,"273":1,"277":2,"318":1,"370":1,"429":1,"448":1,"502":2,"504":2,"505":4,"511":8,"513":1,"515":24,"516":7,"533":1,"582":1,"588":1,"596":2,"657":1,"658":1,"661":1,"666":1,"668":1,"698":1,"703":4,"733":1,"750":3,"752":1,"759":1,"777":3,"779":1,"791":1,"818":1,"820":1,"821":1,"841":3,"843":1,"856":1,"876":3,"878":1,"890":1,"910":3,"912":1,"924":1,"944":3,"946":1,"958":1,"978":3,"980":1,"992":1,"1026":1,"1060":1,"1094":1,"1130":1,"1138":2,"1147":1,"1167":3,"1169":1,"1177":3,"1198":2,"1217":1,"1226":2,"1228":1,"1230":1,"1245":2,"1252":2,"1253":1,"1255":1,"1276":3,"1280":4,"1281":1,"1287":4,"1288":1,"1291":2,"1298":3,"1300":2,"1314":1,"1319":1,"1332":3,"1377":3,"1383":1,"1384":4,"1386":1,"1390":1,"1397":2,"1398":2,"1399":2,"1402":1,"1405":1,"1406":1,"1413":1,"1414":1,"1431":1,"1433":1,"1439":3,"1446":1,"1448":4,"1449":1,"1455":1,"1457":4,"1469":1,"1470":1,"1493":2,"1495":1,"1500":1,"1501":2,"1503":1,"1508":2,"1512":1,"1526":1,"1528":1,"1530":1,"1532":1,"1547":1,"1548":2,"1549":2,"1553":2,"1557":1,"1559":2,"1560":1,"1570":7,"1590":1,"1631":1,"1652":2,"1657":2,"1668":1,"1679":1,"1683":2,"1685":1,"1686":3,"1714":1,"1718":2,"1728":22,"1730":1,"1787":2,"1789":1,"1790":1,"1799":1,"1800":2,"1804":1,"1805":3,"1807":1,"1812":2,"1813":1,"1816":1,"1825":1,"1830":2,"1832":2,"1833":1,"1839":13,"1843":1,"1844":4,"1845":5,"1847":1,"1849":1,"1851":6,"1852":1,"1854":1,"1859":1,"1860":1,"1861":1,"1863":1,"1866":3,"1868":1,"1873":6,"1876":3,"1878":1,"1882":1,"1904":2,"1905":2,"1906":2,"1907":2,"1910":4,"1912":2,"1916":1,"1919":1,"1930":1,"1949":50,"1951":1,"1954":1,"1958":1,"1959":1,"2032":2,"2035":1,"2037":11,"2041":1,"2042":2,"2043":1,"2044":3,"2053":2,"2056":1,"2063":4,"2068":1,"2073":1,"2103":1,"2104":1,"2106":1,"2107":4,"2111":1,"2121":1,"2126":1,"2129":13,"2131":4,"2137":3,"2140":1,"2145":3,"2146":2,"2147":1,"2148":1,"2149":2,"2150":1,"2154":1,"2157":2,"2161":1,"2164":1,"2172":2,"2181":4,"2182":2,"2183":3,"2225":2,"2231":1,"2238":1,"2263":17,"2264":2,"2299":5,"2300":2,"2305":4,"2370":2,"2396":2,"2513":1,"2522":1,"2565":1,"2566":8,"2572":1,"2573":2,"2574":1,"2576":11,"2579":2,"2674":3,"2682":1,"2688":1,"2692":2,"2694":4,"2695":1,"2696":1,"2697":1,"2698":1,"2700":1,"2705":8,"2706":2,"2707":1,"2709":2,"2711":46,"2727":1,"2728":5,"2735":1,"2738":1,"2757":1}}],["enabling",{"0":{"124":1,"234":1,"1294":1,"1800":1,"2043":1,"2579":1,"2583":1},"2":{"10":1,"50":1,"107":2,"134":1,"190":1,"191":1,"195":1,"232":2,"234":1,"388":1,"505":1,"512":1,"1195":1,"1276":1,"1403":1,"2131":1,"2150":1,"2448":1,"2566":1,"2576":10,"2578":1,"2705":2}}],["enjoy",{"2":{"2263":1}}],["enqueue",{"2":{"2162":1}}],["enqueued",{"2":{"314":1,"315":1}}],["energy",{"2":{"551":1,"1491":1}}],["enough",{"2":{"334":1,"486":1,"538":1,"556":1,"585":1,"588":2,"621":1,"1123":1,"1126":1,"1129":1,"1303":1,"1412":1,"1515":1,"1671":1,"1716":1,"1804":1,"1822":1,"2143":1,"2161":1,"2274":2,"2276":1,"2279":1,"2427":1,"2457":1,"2513":1,"2564":1,"2705":1}}],["encryption",{"2":{"2065":1}}],["encompasses",{"2":{"2313":1}}],["encompass",{"2":{"602":1,"606":1,"1304":1}}],["encountering",{"2":{"1666":1}}],["encountered",{"2":{"1241":1,"2074":1}}],["encounter",{"2":{"541":1,"1904":1,"2250":1,"2305":1,"2466":1}}],["encouraging",{"2":{"482":1}}],["encourages",{"2":{"1265":1}}],["encouraged",{"2":{"474":1,"496":1,"2554":1,"2564":1,"2569":1,"2718":1}}],["encourage",{"2":{"453":1,"455":1,"471":1,"537":1,"1528":1,"2566":1,"2656":1}}],["encodes",{"2":{"2148":1}}],["encode",{"2":{"1451":3}}],["encoded",{"2":{"1451":5}}],["encoder2b",{"2":{"1557":1,"1558":1,"2131":1}}],["encoder2a",{"2":{"1557":1,"1558":1,"2131":1}}],["encoder1b",{"2":{"1557":1,"1558":1,"2131":1}}],["encoder1a",{"2":{"1557":1,"1558":1,"2131":1}}],["encodermap",{"2":{"199":2}}],["encoder+encoder",{"2":{"176":1}}],["encoders",{"0":{"1557":1,"1562":1},"1":{"1558":1,"1559":1,"1560":1,"1561":1,"1562":1},"2":{"13":1,"114":3,"154":1,"160":1,"198":1,"201":3,"236":1,"277":1,"1557":3,"1558":1,"1559":3,"1560":1,"1561":1,"1562":6,"2157":3,"2566":1}}],["encoder",{"0":{"13":1,"90":1,"154":1,"209":1,"218":1,"1559":1,"2157":1,"2684":1},"1":{"2158":1},"2":{"13":2,"63":2,"74":1,"90":11,"93":1,"105":1,"110":1,"114":1,"134":1,"154":2,"160":3,"176":5,"191":5,"199":2,"201":3,"209":5,"211":8,"218":2,"222":3,"226":4,"247":1,"249":3,"255":1,"266":3,"277":2,"588":2,"630":1,"1234":2,"1557":13,"1558":13,"1559":16,"1560":9,"1562":9,"1948":1,"2034":1,"2131":3,"2157":5,"2566":4,"2584":1,"2684":5,"2686":2,"2697":2}}],["encoding",{"0":{"1451":1},"2":{"73":1,"211":1,"1215":1,"2575":2,"2585":1,"2592":1,"2666":1}}],["enclosing",{"2":{"294":1}}],["enhance",{"2":{"277":1,"320":1}}],["enhancement",{"2":{"93":1,"160":1,"222":2,"236":2,"249":1}}],["enhancements",{"0":{"49":1,"63":1,"74":1,"93":1},"2":{"211":1}}],["en",{"2":{"249":1,"666":1,"684":3,"1293":2}}],["english",{"2":{"211":1,"1355":1,"1441":4,"1934":1,"1943":1,"2148":1,"2391":1,"2657":1,"2703":5}}],["engine",{"2":{"160":1,"304":1,"1445":1}}],["env",{"2":{"93":1,"396":4,"411":4,"2508":1}}],["environments",{"2":{"132":1}}],["environment",{"0":{"302":1,"2421":1,"2430":1,"2456":1,"2458":1,"2469":1,"2494":1},"1":{"2431":1,"2432":1,"2433":1,"2457":1,"2458":1,"2459":2,"2460":2,"2461":2,"2462":2,"2463":2,"2464":2,"2465":2,"2466":2,"2467":2,"2468":1,"2469":1},"2":{"23":1,"321":1,"365":1,"366":1,"367":1,"376":4,"397":1,"401":1,"428":1,"437":1,"558":1,"624":2,"625":1,"1237":1,"2250":1,"2252":1,"2277":1,"2300":1,"2341":1,"2346":1,"2418":1,"2420":1,"2421":1,"2422":2,"2425":1,"2428":2,"2454":1,"2456":1,"2458":2,"2469":1,"2472":1,"2492":1}}],["enumerating",{"2":{"570":2,"1923":1,"2255":1}}],["enumeration",{"2":{"515":1,"2699":2}}],["enumerated",{"2":{"1359":1}}],["enumerate",{"2":{"570":1,"1923":1,"2343":1}}],["enums",{"2":{"199":1,"453":1,"557":1,"2165":2,"2169":1,"2423":1,"2565":2}}],["enum",{"2":{"50":1,"453":1,"532":1,"534":2,"557":1,"628":2,"1344":1,"1359":1,"1375":1,"1379":1,"1385":1,"1511":1,"1518":1,"1792":1,"1821":2,"1822":2,"1878":1,"2143":2,"2164":1,"2165":1,"2169":3,"2170":2,"2171":3,"2181":2,"2405":1}}],["ent",{"2":{"313":1,"530":2,"1385":1,"1423":1,"1518":1,"1871":1,"2113":1,"2161":2,"2355":1,"2388":1,"2407":1}}],["entities",{"0":{"286":1}}],["entirely",{"2":{"50":1,"222":1,"273":1,"352":1,"453":1,"1447":1,"1950":1,"2302":1,"2405":1,"2424":1,"2576":1}}],["entire",{"0":{"419":1},"2":{"50":1,"152":1,"199":1,"231":1,"249":1,"407":1,"411":1,"418":2,"1329":1,"1684":1,"1685":1,"1822":3,"2122":1,"2355":1,"2393":1,"2576":3,"2587":2,"2594":2,"2720":1}}],["entered",{"2":{"2477":2}}],["enters",{"2":{"2233":1,"2235":1}}],["entering",{"2":{"324":1,"592":1,"626":1,"2231":1,"2238":1,"2326":1,"2480":1,"2517":1,"2521":1,"2539":1}}],["enter80",{"2":{"241":2}}],["enter67",{"2":{"241":2}}],["enter",{"0":{"1422":1,"2326":1},"2":{"176":1,"211":1,"325":1,"335":2,"572":4,"624":1,"626":1,"1332":3,"1338":1,"1399":1,"1422":1,"1423":1,"1518":1,"1584":1,"1871":1,"2075":1,"2078":1,"2109":1,"2110":2,"2150":1,"2161":2,"2182":1,"2196":1,"2197":2,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":2,"2247":2,"2249":2,"2255":1,"2263":1,"2348":1,"2355":4,"2382":2,"2388":2,"2394":2,"2450":1,"2479":2,"2481":1,"2524":2,"2530":1,"2539":1,"2541":1,"2553":2,"2615":2,"2617":1,"2619":1,"2686":1}}],["entry",{"0":{"2539":1},"2":{"149":1,"176":1,"222":1,"236":1,"540":1,"627":2,"1441":1,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"2154":1,"2162":3,"2182":2,"2502":1,"2539":1,"2565":1,"2595":1,"2597":3,"2743":1}}],["entrypoint",{"2":{"94":1,"307":1,"428":2}}],["entries",{"0":{"3":1,"7":1,"15":1},"2":{"628":1,"1405":1,"1441":1,"1495":1,"1496":1,"1525":1,"2181":1,"2597":2}}],["ensures",{"2":{"209":1,"511":4,"1312":1,"2130":1,"2250":1,"2272":1,"2577":1}}],["ensure",{"2":{"31":1,"34":1,"90":1,"92":1,"149":1,"176":2,"191":3,"198":1,"240":1,"249":4,"317":1,"341":1,"366":1,"399":1,"407":1,"411":1,"483":1,"562":1,"584":1,"636":1,"684":1,"1126":1,"1255":1,"1314":1,"1381":1,"1683":1,"1864":1,"1873":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2245":1,"2247":1,"2249":1,"2268":1,"2272":1,"2273":1,"2463":1,"2507":1,"2513":1,"2546":1,"2548":2,"2566":1,"2567":1,"2577":1}}],["ended",{"2":{"2169":1}}],["endianness",{"2":{"1181":1,"1194":1}}],["endian",{"2":{"717":1,"723":1,"1451":1,"2585":1,"2592":1}}],["ending",{"2":{"265":1,"399":1,"1817":1,"2141":1}}],["endings",{"2":{"249":1,"277":1,"399":2,"2506":1}}],["endif",{"2":{"31":2,"34":2,"134":1,"247":1,"292":1,"453":1,"588":3,"1252":1,"1313":1,"1351":2,"1377":2,"1384":2,"1385":2,"1398":2,"1423":6,"1446":3,"1448":4,"1548":1,"1549":2,"1559":1,"1686":3,"1718":2,"1729":1,"1813":1,"1816":1,"1822":1,"1849":1,"1904":1,"1905":1,"1907":1,"1952":1,"2137":1,"2140":1,"2157":1,"2168":1,"2299":5,"2300":3,"2709":2}}],["endpoints",{"0":{"263":1},"2":{"176":1,"266":1,"317":2,"516":4,"1788":1,"2150":1}}],["endpoint",{"0":{"516":1},"2":{"49":1,"50":4,"112":2,"160":1,"191":1,"236":1,"249":1,"308":1,"314":1,"317":4,"514":1,"516":4,"2150":1,"2238":1,"2699":3}}],["ends",{"2":{"28":1,"124":1,"1438":2,"1680":1,"1686":1,"1690":1,"2152":1,"2162":1,"2469":1}}],["end",{"0":{"1690":1,"1692":1},"2":{"3":1,"15":1,"149":1,"152":1,"196":2,"199":1,"211":1,"255":2,"265":2,"350":5,"352":1,"435":1,"450":1,"453":2,"530":2,"534":1,"550":1,"574":1,"587":1,"588":1,"606":1,"609":1,"689":2,"1194":1,"1255":1,"1287":1,"1326":2,"1344":3,"1363":1,"1499":1,"1508":3,"1509":2,"1510":2,"1511":7,"1518":1,"1523":1,"1534":1,"1556":1,"1586":1,"1680":1,"1686":1,"1692":1,"1813":1,"1817":1,"1822":2,"1932":3,"2051":2,"2137":1,"2141":1,"2152":1,"2161":1,"2162":1,"2169":1,"2262":1,"2272":3,"2273":3,"2279":1,"2349":2,"2352":1,"2355":3,"2392":2,"2394":1,"2408":1,"2425":1,"2437":1,"2467":1,"2477":2,"2503":1,"2525":1,"2564":1,"2566":1,"2576":1,"2577":1,"2734":1,"2744":1,"2757":2}}],["lr",{"2":{"1820":2,"2153":3}}],["lra",{"0":{"1577":1},"2":{"1571":1,"1576":1,"1577":5}}],["lpt",{"2":{"2347":1}}],["lp",{"2":{"2170":3}}],["lprn",{"2":{"1654":1,"2170":5,"2378":1,"2399":1}}],["lpad",{"2":{"241":2,"2355":1,"2393":1}}],["lgr",{"2":{"2153":1}}],["lg",{"2":{"1578":10}}],["lgui",{"2":{"196":1,"313":1,"530":2,"1299":1,"1300":1,"1361":1,"1366":1,"1403":1,"1680":1,"1686":1,"2355":1,"2370":4,"2373":1,"2374":1,"2390":1,"2396":4,"2405":1,"2407":1,"2410":2}}],["l65",{"2":{"1571":1}}],["lyr",{"2":{"1332":2}}],["lyso1",{"2":{"143":2,"149":2}}],["lbrc",{"2":{"313":1,"530":2,"1932":1,"2355":1,"2388":1,"2407":1}}],["l17",{"2":{"1496":2}}],["l16",{"2":{"1496":2}}],["l15",{"2":{"1496":2}}],["l14",{"2":{"1496":2}}],["l13",{"2":{"1496":2}}],["l12",{"2":{"1496":2}}],["l11",{"2":{"1496":2}}],["l10",{"2":{"1496":2}}],["l1",{"0":{"683":1},"2":{"277":1,"683":1}}],["l09",{"2":{"1496":2}}],["l082",{"2":{"2550":1}}],["l08",{"2":{"1496":2}}],["l073rz",{"2":{"2566":1}}],["l072",{"2":{"2550":1}}],["l07",{"2":{"1496":2}}],["l06",{"2":{"1496":2}}],["l05",{"2":{"1496":2}}],["l04",{"2":{"1496":2}}],["l03",{"2":{"1496":2}}],["l02",{"2":{"1496":2}}],["l01",{"2":{"1496":2}}],["l0xx",{"2":{"663":1}}],["l0",{"0":{"683":1},"2":{"277":1}}],["lfs",{"2":{"2506":1}}],["lfuse",{"2":{"2348":2}}],["lf",{"2":{"249":1,"399":1,"2075":1}}],["lfk87",{"2":{"211":1}}],["lfkeyboards",{"2":{"149":1,"211":1}}],["lwin",{"2":{"1299":2,"1361":1,"2355":1,"2373":1,"2374":1,"2390":1,"2410":1}}],["lw75",{"2":{"241":2}}],["lw67",{"2":{"241":2}}],["lv061228b",{"2":{"1571":1}}],["lvgl",{"0":{"2578":1,"2579":1,"2580":1,"2581":1,"2582":1,"2583":1,"2584":1},"1":{"2579":1,"2580":1,"2581":2,"2582":2,"2583":1,"2584":1},"2":{"199":2,"236":1,"2574":1,"2578":5,"2579":2,"2581":9,"2582":3,"2583":1,"2584":6}}],["lv",{"2":{"176":2,"2583":1}}],["lsb",{"2":{"2596":8}}],["lsbfirst",{"0":{"1180":1},"1":{"1181":1,"1182":1},"2":{"1181":1,"1835":1,"1842":1}}],["lswp",{"2":{"2370":2,"2396":2}}],["lspo",{"2":{"2109":1,"2110":1,"2112":6,"2113":5,"2382":1}}],["lsusb",{"2":{"1921":1,"2450":1,"2556":2}}],["lshift",{"2":{"1300":1}}],["lshift+rshift+key",{"2":{"2263":1}}],["lshift+rshift+n",{"2":{"1288":1}}],["lshift+ralt",{"2":{"1300":1}}],["lsa",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["lsg",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["lscr",{"2":{"502":1,"1276":1,"2355":1,"2389":1}}],["ls",{"2":{"143":4}}],["lsft",{"2":{"120":2,"313":1,"530":2,"1299":1,"1300":2,"1336":4,"1354":2,"1357":4,"1361":1,"1366":1,"1430":1,"1446":6,"1500":3,"1503":1,"1506":2,"1509":1,"1510":2,"1511":5,"1523":1,"1527":1,"1654":1,"1677":1,"1686":1,"2112":6,"2113":2,"2179":1,"2228":1,"2355":1,"2373":1,"2374":1,"2390":1,"2397":1,"2405":1,"2407":1,"2410":3,"2413":1,"2490":1,"2730":1,"2731":5,"2732":8,"2733":5,"2738":1}}],["lds",{"2":{"236":3}}],["ldscript",{"2":{"114":1}}],["ld",{"2":{"131":1,"134":1,"277":1,"2262":2}}],["llvm",{"2":{"454":2}}],["lld",{"2":{"191":1,"641":1}}],["ll",{"2":{"124":1,"158":2,"188":1,"232":1,"254":1,"272":1,"316":1,"537":1,"552":1,"557":1,"614":2,"657":1,"658":1,"689":1,"703":2,"1177":2,"1198":2,"1239":1,"1259":1,"1263":1,"1287":1,"1312":1,"1385":2,"1436":1,"1508":1,"1657":1,"1791":1,"1812":1,"2063":1,"2126":1,"2133":2,"2137":1,"2161":2,"2169":2,"2255":4,"2259":1,"2274":3,"2276":2,"2277":1,"2311":2,"2318":1,"2328":2,"2404":2,"2405":1,"2406":3,"2422":1,"2423":3,"2429":2,"2445":1,"2449":1,"2450":1,"2452":1,"2454":1,"2457":3,"2472":1,"2475":1,"2477":1,"2508":1,"2513":2,"2554":1,"2556":1,"2564":1,"2615":1,"2743":1,"2744":1,"2746":1,"2748":1}}],["lumissil",{"2":{"729":1,"755":1,"784":1,"816":1,"848":1,"883":1,"917":1,"951":1,"985":1,"1019":1,"1053":1,"1087":1}}],["lump",{"2":{"559":1,"560":1}}],["lune",{"2":{"211":1}}],["luna",{"2":{"191":1}}],["lucid",{"2":{"211":2}}],["lucky",{"2":{"2706":1}}],["luckily",{"2":{"2229":1,"2468":1}}],["luck",{"2":{"124":1,"173":1,"2455":1}}],["lulu",{"2":{"176":1}}],["lut",{"2":{"149":1,"404":2,"2702":1,"2703":2}}],["lufa",{"0":{"2":1,"6":1,"12":1,"2693":1},"2":{"6":4,"12":2,"49":1,"50":2,"93":1,"111":1,"114":2,"176":2,"191":1,"199":1,"277":1,"487":1,"514":1,"552":1,"1824":1,"2230":2,"2231":1,"2238":2,"2255":1,"2344":1,"2564":1,"2693":1,"2743":3}}],["l400",{"2":{"1332":1}}],["l4",{"2":{"191":1}}],["l422",{"2":{"114":1}}],["l443",{"2":{"93":1}}],["lcpo",{"2":{"2109":1,"2110":1,"2112":1,"2382":1}}],["lcbr",{"2":{"1932":1,"2378":1,"2399":1}}],["lctrl",{"2":{"1300":1,"2401":1}}],["lctl",{"2":{"38":2,"120":1,"194":5,"196":2,"313":1,"530":2,"1265":1,"1299":2,"1300":2,"1335":1,"1336":1,"1354":1,"1359":1,"1361":2,"1403":1,"1445":1,"1508":1,"1523":1,"1582":1,"1680":2,"1686":2,"2079":1,"2112":2,"2169":2,"2179":1,"2228":1,"2355":1,"2370":2,"2373":1,"2374":1,"2390":1,"2396":2,"2407":1,"2410":3,"2411":1,"2413":1,"2571":1}}],["lcag",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["lca",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["lcap",{"2":{"502":1,"1276":1,"2355":1,"2389":1}}],["lcmd",{"2":{"1299":1,"1361":1,"2355":1,"2373":1,"2374":1,"2390":1,"2410":1}}],["lc",{"2":{"491":1}}],["lck75",{"2":{"143":2}}],["lcds",{"2":{"153":1}}],["lcd",{"0":{"1588":1,"2135":1},"1":{"1589":1,"1590":1,"1591":1,"1592":1,"1593":1,"1594":1,"1595":1,"1596":1,"1597":1,"1598":1,"1599":1,"1600":1,"1601":1,"1602":1,"1603":1,"1604":1,"1605":1,"1606":1,"1607":1,"1608":1,"1609":1,"1610":1,"1611":1,"1612":1,"1613":1,"1614":1,"1615":1,"1616":1,"1617":1,"1618":1,"1619":1,"1620":1,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1,"1626":1,"1627":1,"1628":1,"1629":1,"2136":1,"2137":1,"2138":1,"2139":1,"2140":1,"2141":1,"2142":1,"2143":1},"2":{"114":1,"133":1,"134":1,"277":1,"1589":1,"2136":1,"2284":1,"2573":7}}],["lmn",{"2":{"266":1}}],["lm",{"2":{"38":1,"134":1,"1335":3,"1336":6,"1582":1,"1727":9,"1865":1,"2367":2,"2369":9}}],["l",{"2":{"32":1,"116":1,"191":1,"249":1,"266":3,"313":1,"375":2,"378":1,"385":1,"388":1,"411":2,"530":2,"573":1,"1300":27,"1451":5,"1527":1,"1932":1,"1934":1,"2148":1,"2153":1,"2347":1,"2355":3,"2386":3,"2407":1,"2686":1,"2734":5,"2735":9,"2736":5}}],["lnrm",{"2":{"2370":2,"2396":2}}],["lng9",{"2":{"2355":1,"2391":1}}],["lng8",{"2":{"2355":1,"2391":1}}],["lng7",{"2":{"2355":1,"2391":1}}],["lng6",{"2":{"2355":1,"2391":1}}],["lng5",{"2":{"2355":1,"2391":1}}],["lng4",{"2":{"2355":1,"2391":1}}],["lng3",{"2":{"2355":1,"2391":1}}],["lng2",{"2":{"2355":1,"2391":1}}],["lng1",{"2":{"2355":1,"2391":1}}],["lnx",{"2":{"2179":1,"2180":1,"2196":1}}],["lnum",{"2":{"502":1,"1276":1,"2355":1,"2389":1}}],["ln",{"2":{"31":2,"451":1,"1813":2,"1822":5,"1823":4,"2137":2,"2143":3}}],["legs",{"2":{"2268":1,"2270":1}}],["leg",{"2":{"1793":1,"2268":3,"2371":1}}],["legato",{"2":{"1793":2,"2371":2}}],["legal",{"2":{"1278":1}}],["legacy",{"0":{"140":1,"692":1,"2282":1},"1":{"2283":1},"2":{"75":1,"86":2,"94":1,"114":2,"133":1,"134":2,"160":2,"176":3,"188":12,"191":18,"211":1,"222":1,"236":1,"254":1,"277":1,"384":1,"505":1,"688":2,"1314":1,"2683":2,"2704":1}}],["leonardo",{"2":{"629":2,"1293":2,"2344":1}}],["len",{"2":{"1923":2}}],["lenght",{"2":{"1440":2}}],["lengths",{"2":{"1400":1,"2270":3}}],["lengthy",{"2":{"660":1}}],["length",{"0":{"481":1,"708":1,"711":1,"714":1,"717":1,"720":1,"723":1,"1188":1,"1191":1,"1206":1,"1208":1,"1925":1,"1927":1},"1":{"709":1,"710":1,"712":1,"713":1,"715":1,"716":1,"718":1,"719":1,"721":1,"722":1,"724":1,"725":1,"1189":1,"1190":1,"1192":1,"1193":1,"1207":1,"1209":1,"1926":1,"1928":1},"2":{"249":2,"313":1,"374":3,"481":1,"502":1,"709":2,"712":2,"715":2,"718":2,"721":2,"724":2,"1189":2,"1192":2,"1207":2,"1209":2,"1211":1,"1214":4,"1215":1,"1224":2,"1233":1,"1411":1,"1431":1,"1440":4,"1457":1,"1515":2,"1573":1,"1802":1,"1822":2,"1844":2,"1921":5,"1922":1,"1923":7,"1926":3,"1928":3,"2038":2,"2143":2,"2215":1,"2276":1,"2405":1,"2585":1,"2587":2,"2588":2,"2589":2,"2590":1,"2591":1,"2592":1,"2593":4,"2594":2,"2595":2,"2596":2,"2597":2,"2598":2,"2599":2,"2600":11,"2677":1}}],["lenient",{"2":{"114":1}}],["leeloo",{"2":{"236":2}}],["lefishe",{"2":{"143":2}}],["left=4",{"2":{"2577":1}}],["leftuf2",{"2":{"2126":1}}],["leftdfu",{"2":{"2126":2}}],["leftavrdude",{"2":{"2126":1}}],["leftmost",{"2":{"1533":1}}],["lefthand",{"2":{"509":1,"510":1}}],["leftover30",{"2":{"211":1}}],["leftover",{"2":{"77":1}}],["lefty",{"2":{"43":2,"134":3,"211":1,"241":6}}],["left",{"2":{"31":1,"34":1,"45":1,"100":1,"114":3,"152":1,"176":1,"202":2,"231":2,"236":2,"249":2,"257":1,"258":1,"259":2,"277":1,"289":1,"313":2,"331":3,"502":2,"506":2,"509":5,"510":4,"511":2,"530":2,"623":1,"624":1,"626":5,"684":1,"701":1,"1123":1,"1126":1,"1129":1,"1223":1,"1270":1,"1284":9,"1290":1,"1299":13,"1300":4,"1302":3,"1336":2,"1361":3,"1405":1,"1500":5,"1501":4,"1511":1,"1518":1,"1529":2,"1559":1,"1564":1,"1584":1,"1586":1,"1670":2,"1677":15,"1725":1,"1728":9,"1730":1,"1801":5,"1816":2,"1817":1,"1819":1,"1822":5,"1839":2,"1845":1,"1849":1,"1852":5,"1854":5,"1855":2,"1861":1,"1862":10,"1912":1,"1913":1,"1932":8,"1937":2,"1946":1,"1948":2,"1949":14,"1954":2,"2060":1,"2079":2,"2108":1,"2109":6,"2110":6,"2113":2,"2122":2,"2124":2,"2125":2,"2126":3,"2127":3,"2131":2,"2140":1,"2143":3,"2153":2,"2157":1,"2167":3,"2179":1,"2196":1,"2197":1,"2198":1,"2232":1,"2234":1,"2241":1,"2246":1,"2248":1,"2262":2,"2273":3,"2274":1,"2355":12,"2370":10,"2372":5,"2373":16,"2374":13,"2378":3,"2382":6,"2388":1,"2390":8,"2392":2,"2394":1,"2396":10,"2397":1,"2399":3,"2407":2,"2410":20,"2411":2,"2424":1,"2450":2,"2477":2,"2501":1,"2530":3,"2558":1,"2566":1,"2575":1,"2577":11,"2598":3,"2615":2,"2616":1,"2661":1,"2679":1,"2680":1,"2686":2,"2688":1,"2695":1,"2711":2,"2738":15}}],["le",{"2":{"143":2,"221":1,"222":1,"236":1,"515":1,"1491":3,"1492":4,"1493":1,"2678":1}}],["lean",{"2":{"2428":1}}],["leaps",{"2":{"2292":1}}],["learned",{"0":{"2472":1}}],["learn",{"2":{"2151":1,"2152":1,"2318":1,"2419":1,"2426":1,"2440":1,"2457":1,"2486":1,"2513":1,"2578":1,"2671":1,"2723":2,"2724":2}}],["learning",{"0":{"2151":1,"2482":1},"1":{"2483":1,"2484":1,"2485":1,"2486":1},"2":{"2151":1,"2419":1}}],["leaflabs",{"2":{"2350":1}}],["leaf",{"2":{"1438":1,"1451":7,"1452":1}}],["lease",{"2":{"349":1,"361":2,"2475":2}}],["least",{"2":{"199":1,"462":1,"482":1,"584":1,"635":1,"1181":1,"1336":1,"1416":1,"1612":1,"1614":1,"1632":1,"1697":1,"1799":1,"1805":1,"1806":1,"1835":1,"1842":2,"2117":2,"2125":2,"2169":1,"2274":1,"2302":1,"2353":1,"2411":1,"2432":1,"2720":1,"2745":1,"2756":1}}],["leak",{"2":{"236":1}}],["leaving",{"2":{"169":1,"184":1,"482":1,"1287":1,"1336":1,"2272":1,"2305":1,"2411":1,"2501":1}}],["leaves",{"2":{"1341":2,"1438":1}}],["leave",{"2":{"87":1,"103":1,"126":1,"462":1,"482":1,"510":1,"540":1,"1225":1,"1335":1,"1418":1,"2240":1,"2252":2,"2262":1,"2274":1,"2309":1,"2506":1,"2556":1}}],["leading",{"2":{"461":1,"660":1,"1181":6,"2147":1}}],["leader",{"0":{"196":2,"1678":1,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1697":1,"1698":1,"1699":1,"1702":1,"1705":1,"1708":1,"1711":1,"2368":1,"2645":1,"2687":1},"1":{"1679":1,"1680":1,"1681":1,"1682":1,"1683":1,"1684":1,"1685":1,"1686":1,"1687":1,"1688":1,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1695":2,"1696":2,"1697":1,"1698":1,"1699":1,"1700":2,"1701":2,"1702":1,"1703":2,"1704":2,"1705":1,"1706":2,"1707":2,"1708":1,"1709":2,"1710":2,"1711":1,"1712":2,"1713":2},"2":{"93":1,"112":3,"176":1,"196":15,"199":2,"505":6,"515":2,"1678":2,"1680":12,"1682":2,"1683":5,"1684":9,"1685":1,"1686":15,"1687":2,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1697":2,"1698":1,"2368":2,"2645":2,"2687":3,"2749":1}}],["lead",{"2":{"73":1,"188":2,"191":2,"1388":2,"1391":1,"1395":1,"1679":1,"1686":1,"1687":1,"1804":1,"2273":1,"2368":1,"2584":1}}],["letting",{"2":{"2273":1}}],["letter",{"2":{"1438":4,"1442":1,"1445":1,"1499":1,"1506":1,"1675":4,"1938":1,"1943":1,"2169":3}}],["letters",{"0":{"2386":1},"2":{"191":1,"211":1,"292":1,"460":1,"1254":1,"1355":1,"1435":3,"1440":1,"1442":1,"1446":1,"1447":1,"1499":1,"1503":1,"1929":1,"1934":1,"1938":1,"2169":3,"2228":1,"2294":1,"2321":1,"2564":1,"2657":1,"2658":1}}],["let",{"2":{"70":1,"110":1,"194":1,"228":1,"245":1,"331":2,"335":1,"356":1,"414":2,"430":1,"448":1,"471":1,"510":1,"515":1,"572":1,"1300":1,"1302":2,"1303":1,"1332":1,"1335":2,"1344":1,"1352":1,"1383":1,"1651":1,"1675":1,"1832":1,"2114":1,"2134":1,"2162":1,"2240":1,"2242":1,"2263":1,"2264":1,"2293":1,"2421":1,"2454":1,"2458":1,"2490":1,"2726":1,"2730":1,"2748":1,"2750":1}}],["lets",{"2":{"70":27,"114":1,"137":1,"143":2,"270":2,"277":1,"372":1,"375":1,"430":1,"506":1,"1303":2,"1364":1,"1385":1,"1508":1,"2062":1,"2263":2,"2303":1,"2649":1,"2652":1,"2663":1,"2728":1}}],["leveraging",{"2":{"1943":1}}],["leveraged",{"2":{"2720":1}}],["leverages",{"2":{"317":1,"1221":1,"1222":1,"1223":1,"1437":1,"1461":1}}],["leverage",{"2":{"153":1,"630":1,"2130":1,"2542":1,"2567":1}}],["lever",{"2":{"1836":2}}],["leveling",{"0":{"174":1,"687":1,"688":1,"689":1,"690":1,"691":1,"692":1},"1":{"689":1,"690":1,"691":1,"692":1},"2":{"114":1,"174":1,"176":4,"191":1,"211":1,"236":5,"249":1,"277":1,"681":2,"687":3,"688":6,"689":8,"690":7,"691":5,"2683":3}}],["levels",{"2":{"112":1,"199":2,"453":1,"496":3,"502":2,"1456":1,"1457":3,"1476":1,"1480":1,"1482":1,"2130":1,"2295":1,"2360":1,"2677":2,"2749":1}}],["level",{"0":{"580":1,"1479":2,"1481":1,"2048":1},"1":{"1480":2,"1482":1},"2":{"4":1,"14":1,"28":1,"75":1,"90":4,"93":2,"125":3,"134":1,"160":2,"185":3,"191":2,"229":2,"243":2,"249":2,"262":1,"266":3,"277":3,"279":1,"355":1,"433":4,"453":1,"462":1,"496":1,"497":1,"498":1,"500":1,"502":2,"510":2,"511":1,"512":1,"517":1,"533":1,"534":2,"556":1,"567":1,"568":4,"576":1,"580":2,"592":2,"594":1,"609":1,"614":1,"630":1,"644":1,"653":1,"668":1,"696":6,"733":1,"759":1,"791":1,"821":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1147":1,"1225":1,"1226":1,"1230":1,"1332":1,"1347":1,"1456":2,"1457":2,"1459":1,"1464":2,"1469":1,"1470":1,"1477":1,"1478":1,"1479":1,"1480":2,"1481":1,"1482":1,"1499":1,"1530":1,"1548":1,"1557":1,"1559":1,"1560":3,"1581":1,"1716":3,"1717":1,"1722":1,"1727":2,"1729":1,"1733":1,"1776":1,"1778":1,"1779":1,"1780":1,"1783":1,"1785":1,"1817":1,"1822":3,"1826":1,"1853":2,"1870":2,"1879":1,"1952":1,"1957":1,"2021":1,"2023":1,"2024":1,"2025":1,"2028":1,"2030":1,"2035":1,"2130":2,"2141":1,"2192":1,"2194":1,"2243":1,"2245":1,"2247":1,"2249":1,"2299":2,"2300":1,"2348":1,"2355":1,"2360":2,"2369":2,"2403":1,"2523":2,"2524":1,"2526":1,"2546":1,"2564":1,"2566":2,"2567":2,"2573":1,"2577":1,"2629":1,"2671":1,"2675":1,"2677":1,"2688":1,"2694":1,"2695":1,"2719":1,"2720":1,"2741":2,"2742":1,"2746":1,"2747":1,"2749":1}}],["levinson",{"2":{"45":1}}],["ledarray",{"0":{"1232":1},"1":{"1233":1},"2":{"1233":1}}],["ledmatrix",{"2":{"65":1}}],["led",{"0":{"84":1,"147":1,"185":1,"233":1,"669":1,"671":1,"734":1,"736":1,"749":1,"751":1,"754":1,"760":1,"762":1,"776":1,"778":1,"782":1,"792":1,"794":1,"822":1,"824":1,"840":1,"842":1,"846":1,"857":1,"859":1,"875":1,"877":1,"881":1,"891":1,"893":1,"909":1,"911":1,"915":1,"925":1,"927":1,"943":1,"945":1,"949":1,"959":1,"961":1,"977":1,"979":1,"983":1,"993":1,"995":1,"1027":1,"1029":1,"1061":1,"1063":1,"1095":1,"1097":1,"1148":1,"1150":1,"1166":1,"1168":1,"1172":1,"1232":1,"1714":1,"1716":1,"1717":1,"1718":1,"1719":1,"1720":1,"1721":1,"1723":1,"1728":1,"1729":1,"1735":1,"1736":1,"1737":1,"1738":1,"1739":1,"1740":1,"1741":1,"1743":1,"1745":1,"1747":1,"1749":1,"1751":1,"1752":1,"1753":1,"1754":1,"1755":1,"1758":1,"1759":1,"1760":1,"1761":1,"1763":1,"1764":1,"1765":1,"1766":1,"1767":1,"1769":1,"1771":1,"1773":1,"1774":1,"1776":1,"1778":1,"1780":3,"1783":3,"2025":2,"2028":2,"2167":1,"2369":1,"2646":1,"2688":1},"1":{"672":1,"737":1,"750":1,"752":1,"763":1,"777":1,"779":1,"783":1,"795":1,"825":1,"841":1,"843":1,"847":1,"860":1,"876":1,"878":1,"882":1,"894":1,"910":1,"912":1,"916":1,"928":1,"944":1,"946":1,"950":1,"962":1,"978":1,"980":1,"984":1,"996":1,"1030":1,"1064":1,"1098":1,"1151":1,"1167":1,"1169":1,"1173":1,"1233":1,"1715":1,"1716":1,"1717":2,"1718":2,"1719":1,"1720":1,"1721":1,"1722":2,"1724":1,"1725":1,"1726":1,"1727":1,"1728":1,"1729":1,"1730":1,"1731":1,"1732":1,"1733":1,"1734":1,"1735":1,"1736":1,"1737":1,"1738":1,"1739":1,"1740":1,"1741":1,"1742":2,"1743":1,"1744":2,"1745":1,"1746":2,"1747":1,"1748":2,"1749":1,"1750":2,"1751":1,"1752":1,"1753":1,"1754":1,"1755":1,"1756":2,"1757":1,"1758":1,"1759":1,"1760":1,"1761":1,"1762":2,"1763":1,"1764":1,"1765":1,"1766":1,"1767":1,"1768":2,"1769":1,"1770":2,"1771":1,"1772":2,"1773":1,"1774":1,"1775":2,"1776":1,"1777":2,"1778":1,"1779":2,"1780":1,"1781":1,"1782":1,"1783":1,"1784":1,"1785":1},"2":{"32":2,"50":2,"65":1,"70":2,"84":1,"92":3,"93":10,"94":6,"111":1,"113":1,"114":13,"133":1,"134":9,"149":5,"160":2,"176":8,"183":14,"185":5,"191":27,"199":5,"211":3,"214":1,"221":3,"222":16,"233":1,"236":27,"249":33,"266":10,"277":11,"292":2,"502":1,"506":2,"511":1,"575":1,"576":2,"644":2,"646":1,"647":1,"648":1,"651":1,"664":1,"665":1,"669":4,"671":1,"672":4,"673":1,"674":1,"675":1,"676":1,"679":1,"729":1,"730":2,"734":6,"736":1,"737":4,"738":1,"741":1,"742":1,"745":1,"746":1,"749":3,"750":1,"751":3,"752":2,"753":1,"754":2,"755":1,"756":2,"760":6,"762":1,"763":5,"764":1,"768":1,"769":1,"772":1,"773":1,"776":3,"777":1,"778":3,"779":2,"780":1,"782":2,"784":1,"785":2,"792":6,"794":1,"795":5,"796":1,"800":1,"801":1,"804":1,"805":1,"808":1,"809":1,"810":1,"811":2,"812":1,"814":1,"816":1,"817":2,"822":6,"824":1,"825":5,"826":1,"830":1,"832":1,"833":1,"836":1,"837":1,"840":3,"841":1,"842":3,"843":2,"844":1,"846":2,"848":1,"849":2,"857":6,"859":1,"860":5,"861":1,"865":1,"867":1,"868":1,"871":1,"872":1,"875":3,"876":1,"877":3,"878":2,"879":1,"881":2,"883":1,"884":2,"891":6,"893":1,"894":5,"895":1,"899":1,"901":1,"902":1,"905":1,"906":1,"909":3,"910":1,"911":3,"912":2,"913":1,"915":2,"917":1,"918":2,"925":6,"927":1,"928":5,"929":1,"933":1,"935":1,"936":1,"939":1,"940":1,"943":3,"944":1,"945":3,"946":2,"947":1,"949":2,"951":1,"952":2,"959":6,"961":1,"962":5,"963":1,"967":1,"969":1,"970":1,"973":1,"974":1,"977":3,"978":1,"979":3,"980":2,"981":1,"983":2,"985":1,"986":2,"993":6,"995":1,"996":5,"997":1,"1001":1,"1003":1,"1004":1,"1007":1,"1008":1,"1011":1,"1012":1,"1013":1,"1014":2,"1015":1,"1017":1,"1019":1,"1020":2,"1027":6,"1029":1,"1030":5,"1031":1,"1035":1,"1037":1,"1038":1,"1041":1,"1042":1,"1045":1,"1046":1,"1047":1,"1048":2,"1049":1,"1051":1,"1053":1,"1054":2,"1061":6,"1063":1,"1064":5,"1065":1,"1069":1,"1071":1,"1072":1,"1075":1,"1076":1,"1079":1,"1080":1,"1081":1,"1082":2,"1083":1,"1085":1,"1087":1,"1088":2,"1095":6,"1097":1,"1098":5,"1099":1,"1100":1,"1103":1,"1105":1,"1106":1,"1109":1,"1110":1,"1113":1,"1114":1,"1115":1,"1116":2,"1117":1,"1119":1,"1143":1,"1144":2,"1148":6,"1150":1,"1151":5,"1152":1,"1156":1,"1158":1,"1159":1,"1162":1,"1163":1,"1166":3,"1167":1,"1168":3,"1169":2,"1170":1,"1172":2,"1212":2,"1214":2,"1215":1,"1216":1,"1217":3,"1232":1,"1233":3,"1234":2,"1298":1,"1316":1,"1320":1,"1457":1,"1459":3,"1507":1,"1530":2,"1556":1,"1570":3,"1714":9,"1715":12,"1716":10,"1717":12,"1718":7,"1719":6,"1720":3,"1722":9,"1723":2,"1724":4,"1725":26,"1726":10,"1727":12,"1728":64,"1729":31,"1730":21,"1733":12,"1735":1,"1736":1,"1737":1,"1738":1,"1739":1,"1740":1,"1741":1,"1742":1,"1743":1,"1744":3,"1774":1,"1775":1,"1781":4,"1784":4,"1813":7,"1849":1,"1944":3,"1945":2,"1946":25,"1947":12,"1949":1,"1950":1,"1952":10,"1954":5,"1955":1,"1957":4,"1958":17,"1959":11,"1970":1,"1971":2,"2026":4,"2029":4,"2031":2,"2032":2,"2038":4,"2039":2,"2042":4,"2043":4,"2048":1,"2051":9,"2059":6,"2060":3,"2061":2,"2063":1,"2129":3,"2137":7,"2167":10,"2231":2,"2238":2,"2263":3,"2276":1,"2288":1,"2300":2,"2301":3,"2369":13,"2491":1,"2518":2,"2528":1,"2530":5,"2539":2,"2566":3,"2674":1,"2675":2,"2685":6,"2688":12,"2693":3,"2694":3,"2695":9,"2700":1,"2724":1}}],["leds",{"0":{"1232":1,"2059":1},"1":{"1233":1},"2":{"25":1,"45":1,"50":1,"114":1,"149":1,"201":2,"211":1,"229":1,"249":2,"506":4,"586":1,"587":1,"642":2,"644":1,"647":1,"649":1,"664":2,"669":1,"675":1,"676":1,"677":1,"729":2,"734":2,"741":1,"742":1,"743":1,"745":1,"746":1,"747":1,"749":1,"750":1,"751":1,"752":1,"755":2,"760":2,"768":1,"769":1,"770":1,"772":1,"773":1,"774":1,"776":1,"777":1,"778":1,"779":1,"784":2,"786":1,"792":2,"800":1,"801":1,"802":1,"804":1,"805":1,"806":1,"808":1,"809":1,"810":1,"811":1,"816":2,"822":2,"832":1,"833":1,"834":1,"836":1,"837":1,"838":1,"840":1,"841":1,"842":1,"843":1,"848":2,"850":1,"857":2,"867":1,"868":1,"869":1,"871":1,"872":1,"873":1,"875":1,"876":1,"877":1,"878":1,"883":2,"885":1,"891":2,"901":1,"902":1,"903":1,"905":1,"906":1,"907":1,"909":1,"910":1,"911":1,"912":1,"917":2,"919":1,"925":2,"935":1,"936":1,"937":1,"939":1,"940":1,"941":1,"943":1,"944":1,"945":1,"946":1,"951":2,"953":1,"959":2,"969":1,"970":1,"971":1,"973":1,"974":1,"975":1,"977":1,"978":1,"979":1,"980":1,"985":2,"987":1,"993":2,"1003":1,"1004":1,"1005":1,"1007":1,"1008":1,"1009":1,"1011":1,"1012":1,"1013":1,"1014":1,"1019":2,"1027":2,"1037":1,"1038":1,"1039":1,"1041":1,"1042":1,"1043":1,"1045":1,"1046":1,"1047":1,"1048":1,"1053":2,"1061":2,"1071":1,"1072":1,"1073":1,"1075":1,"1076":1,"1077":1,"1079":1,"1080":1,"1081":1,"1082":1,"1087":2,"1089":1,"1095":2,"1105":1,"1106":1,"1107":1,"1109":1,"1110":1,"1111":1,"1113":1,"1114":1,"1115":1,"1116":1,"1143":2,"1148":2,"1158":1,"1159":1,"1160":1,"1162":1,"1163":1,"1164":1,"1166":1,"1167":1,"1168":1,"1169":1,"1212":4,"1214":1,"1215":1,"1216":1,"1217":2,"1220":1,"1233":1,"1294":1,"1314":2,"1378":1,"1454":3,"1457":1,"1458":1,"1459":2,"1471":2,"1554":1,"1714":2,"1716":1,"1720":1,"1721":1,"1722":3,"1724":1,"1725":2,"1728":1,"1729":2,"1730":4,"1745":1,"1776":1,"1778":1,"1780":1,"1783":1,"1945":1,"1946":2,"1949":3,"1950":1,"1952":2,"1954":4,"1972":1,"2021":1,"2023":1,"2025":1,"2028":1,"2031":6,"2032":10,"2038":5,"2041":1,"2042":6,"2048":1,"2051":7,"2053":6,"2054":14,"2059":2,"2060":3,"2061":1,"2131":2,"2160":1,"2161":1,"2167":1,"2280":1,"2289":3,"2290":2,"2301":1,"2625":1,"2665":2,"2677":2,"2685":1,"2688":5,"2694":3,"2695":5,"2700":1,"2744":2}}],["lessthan",{"2":{"2299":1}}],["less",{"2":{"24":1,"133":1,"134":1,"263":1,"455":1,"1287":1,"1326":1,"1329":1,"1403":1,"1404":1,"1411":1,"1435":1,"1516":1,"1521":2,"1821":1,"1842":1,"2147":1,"2161":2,"2262":1,"2421":1,"2534":1,"2564":1,"2612":1,"2671":1,"2729":1}}],["lone",{"2":{"1677":1,"2738":1}}],["longan",{"2":{"495":1}}],["long",{"0":{"1253":1},"2":{"131":1,"140":1,"154":1,"164":1,"243":1,"331":1,"436":1,"453":1,"455":1,"481":3,"505":4,"616":1,"621":1,"656":1,"660":1,"1215":1,"1287":1,"1290":1,"1406":1,"1410":1,"1412":1,"1414":1,"1416":1,"1440":1,"1451":1,"1464":1,"1511":1,"1515":4,"1562":1,"1573":1,"1578":17,"1651":1,"1683":1,"1864":1,"1921":1,"2038":1,"2040":6,"2063":1,"2128":1,"2134":1,"2169":1,"2171":1,"2182":1,"2276":1,"2305":1,"2476":1,"2502":1,"2546":1,"2577":1,"2614":1,"2716":1}}],["longer",{"2":{"48":1,"50":1,"98":1,"124":1,"130":1,"141":1,"194":1,"196":1,"201":1,"213":1,"218":1,"224":1,"233":1,"240":1,"262":2,"265":1,"268":1,"273":2,"276":1,"513":1,"522":1,"556":1,"559":1,"588":1,"627":1,"1219":1,"1243":1,"1376":1,"1409":1,"1412":1,"1416":1,"1432":1,"1441":1,"1670":1,"1677":1,"1807":1,"1839":1,"2161":1,"2162":1,"2169":1,"2171":1,"2272":2,"2303":1,"2462":1,"2565":1,"2566":1,"2577":2,"2705":1,"2728":1,"2729":1,"2734":2,"2738":1}}],["loud",{"2":{"1401":1,"1406":1}}],["louder",{"2":{"277":1}}],["lo",{"2":{"1361":4,"1722":1,"1934":1}}],["losh",{"2":{"2108":1}}],["loss",{"2":{"1331":1,"2175":1,"2263":1}}],["loses",{"2":{"1335":1,"2697":1}}],["lose",{"2":{"660":1,"1495":1,"2474":1}}],["lost",{"2":{"176":1,"681":1,"1553":1,"2633":1}}],["love",{"0":{"2472":1},"2":{"561":1,"1264":1,"1361":2,"2569":1}}],["lorem",{"2":{"301":1}}],["loki65",{"2":{"211":1}}],["lopt",{"2":{"176":1,"1299":1,"1361":1,"2355":1,"2373":1,"2374":1,"2390":1,"2410":1}}],["loadable",{"2":{"2575":1}}],["loads",{"2":{"1219":1,"2577":2}}],["loaded",{"2":{"626":1,"2353":1,"2501":1,"2574":3,"2577":2}}],["loader",{"0":{"2539":1},"2":{"292":3,"2235":3,"2238":1,"2353":3,"2539":1,"2541":1}}],["loading",{"2":{"160":1,"1287":1,"2480":1,"2577":2}}],["load",{"0":{"2452":1},"2":{"149":1,"450":1,"541":1,"592":1,"659":1,"1287":1,"2327":1,"2329":1,"2333":1,"2347":1,"2356":1,"2425":1,"2427":1,"2469":1,"2572":1,"2574":1,"2577":11}}],["loose",{"2":{"2279":2,"2446":1}}],["looking",{"0":{"2670":1},"2":{"228":1,"367":1,"430":2,"483":1,"602":1,"661":2,"1304":1,"1921":1,"2263":1,"2272":1,"2282":1,"2311":1,"2491":1,"2565":1}}],["look",{"2":{"194":1,"341":1,"414":1,"470":1,"559":1,"597":1,"627":1,"628":1,"1226":1,"1230":1,"1242":1,"1271":1,"1325":1,"1332":2,"1383":1,"1405":1,"1440":1,"1469":1,"1470":1,"1675":1,"2150":1,"2182":1,"2261":1,"2273":1,"2342":1,"2403":1,"2404":1,"2417":1,"2422":1,"2519":1,"2571":1,"2578":1,"2728":1,"2743":1,"2746":1,"2748":2,"2749":1,"2752":1,"2753":1}}],["lookup",{"2":{"191":1,"404":1,"1725":1,"1946":1,"2076":1,"2541":1,"2702":1}}],["looks",{"2":{"125":1,"185":1,"1410":1,"1423":1,"2255":1,"2423":1,"2425":1,"2745":1,"2747":1,"2748":1}}],["looping",{"2":{"2272":1,"2744":1}}],["loopgain",{"2":{"1576":1,"1577":1}}],["loops",{"2":{"160":1,"1873":1}}],["loop",{"0":{"2744":1},"1":{"2745":1,"2746":1,"2747":1,"2748":1,"2749":1},"2":{"65":1,"92":1,"113":1,"114":1,"149":1,"176":2,"277":1,"471":1,"588":1,"1398":2,"1464":1,"1815":2,"1817":1,"1951":1,"2139":2,"2231":1,"2234":2,"2238":1,"2272":1,"2577":1,"2743":1,"2744":2,"2748":1}}],["locate",{"2":{"2436":1,"2450":1,"2452":1}}],["locates",{"2":{"2403":1}}],["located",{"2":{"515":1,"626":1,"691":1,"1272":1,"1415":1,"1440":1,"1496":1,"1814":1,"2263":1,"2275":1,"2296":1,"2393":1,"2450":1,"2452":1,"2463":1,"2587":1,"2588":1,"2589":1,"2594":1,"2703":1}}],["locations",{"2":{"132":1,"149":1,"176":1,"204":1,"266":1,"335":1,"540":1,"669":1,"1880":1,"2070":1,"2261":1,"2614":1,"2682":1,"2696":1,"2747":2}}],["location",{"2":{"114":1,"133":1,"134":1,"149":1,"199":1,"234":1,"249":2,"365":1,"366":1,"450":1,"610":1,"684":1,"685":1,"691":1,"1405":1,"1814":1,"1880":1,"1949":1,"2275":1,"2303":1,"2422":1,"2435":1,"2441":1,"2497":1,"2501":1,"2513":2,"2576":2,"2577":3,"2598":5,"2615":2,"2746":1,"2757":1}}],["localhost",{"2":{"558":1}}],["locally",{"0":{"2442":1,"2444":1},"2":{"403":1,"556":1,"560":1,"1376":1,"2277":1,"2442":2,"2444":1,"2445":1}}],["local",{"2":{"402":1,"430":1,"455":1,"457":1,"460":1,"554":1,"555":1,"598":1,"616":1,"1820":1,"1821":1,"1880":1,"2142":1,"2252":1,"2255":2,"2278":1,"2398":1,"2411":1,"2428":1,"2431":1,"2442":1,"2443":1,"2444":1,"2452":1,"2468":2,"2475":2,"2490":1,"2566":1}}],["locale",{"2":{"249":1}}],["lockout",{"2":{"1868":1}}],["lockkeys",{"0":{"1585":1},"2":{"1585":1}}],["lockups",{"2":{"263":1}}],["locking",{"0":{"2067":1},"2":{"176":1,"188":1,"191":2,"199":2,"236":1,"266":32,"502":3,"1276":2,"2355":6,"2389":6,"2502":1,"2674":2,"2706":2}}],["locked",{"2":{"160":1,"266":1,"317":2,"340":3,"346":1,"2066":1,"2067":1,"2069":2,"2070":1,"2071":2,"2129":1,"2491":7,"2696":1}}],["lock",{"0":{"1276":1,"1651":1,"2164":1,"2366":1,"2389":1},"1":{"1652":1,"1653":1,"1654":1},"2":{"73":1,"149":2,"176":1,"188":2,"191":2,"199":2,"222":3,"231":2,"505":1,"506":1,"530":1,"1276":2,"1337":1,"1368":1,"1457":2,"1459":4,"1499":5,"1530":2,"1585":3,"1651":4,"1652":3,"1653":1,"1654":4,"1714":4,"1715":6,"1717":3,"1718":6,"1719":2,"1733":1,"1813":3,"1816":1,"1957":1,"1958":2,"1959":5,"2041":1,"2042":2,"2043":1,"2069":2,"2071":2,"2129":2,"2137":3,"2140":1,"2164":1,"2182":1,"2263":2,"2355":12,"2366":2,"2370":16,"2389":12,"2396":16,"2490":1,"2491":1,"2615":3,"2616":1,"2674":1,"2677":2,"2685":6,"2706":2,"2744":3,"2749":1}}],["lowr",{"2":{"2173":1}}],["lowest",{"2":{"496":1,"1329":1,"1338":1,"1339":1,"1406":1,"1722":1,"2172":1,"2355":1,"2395":1,"2408":1}}],["lower",{"0":{"2182":1},"2":{"198":1,"236":1,"639":1,"641":1,"659":3,"660":1,"701":2,"855":1,"889":1,"923":1,"957":1,"991":1,"1025":1,"1059":1,"1093":1,"1136":1,"1225":1,"1332":1,"1335":2,"1338":1,"1340":1,"1343":1,"1404":1,"1434":1,"1457":1,"1573":1,"1683":1,"1803":2,"1804":1,"1807":1,"1836":2,"1842":2,"1843":2,"2153":3,"2172":2,"2173":3,"2174":2,"2175":6,"2182":2,"2294":1,"2358":1,"2401":1,"2403":4,"2406":1,"2604":7,"2606":2,"2728":1}}],["lowercase",{"2":{"152":1,"221":1,"1254":1,"1351":1,"1412":1,"2182":3,"2302":1,"2347":1,"2564":2,"2728":1}}],["low",{"0":{"580":1,"2048":1},"2":{"49":1,"134":1,"160":1,"243":2,"502":2,"509":1,"510":5,"511":1,"580":2,"659":3,"684":1,"696":3,"1224":2,"1225":1,"1242":1,"1329":1,"1399":1,"1457":1,"1458":1,"1491":1,"1570":5,"1573":3,"1576":1,"1577":1,"1633":3,"1715":1,"1717":2,"1803":2,"1804":1,"1851":2,"1862":1,"2037":1,"2124":2,"2125":1,"2343":1,"2344":1,"2345":1,"2346":1,"2348":2,"2401":1,"2406":1,"2519":1,"2523":1,"2524":1,"2526":1,"2564":1,"2629":1,"2655":1,"2664":1,"2689":1,"2728":2}}],["login",{"2":{"2508":1}}],["logically",{"2":{"2060":1}}],["logical",{"2":{"134":1,"236":1,"556":1,"688":1,"689":2,"690":3,"691":2,"1216":1,"1671":2,"2059":1,"2311":2,"2676":1,"2677":1,"2683":2,"2685":1,"2689":1}}],["logic",{"2":{"16":1,"75":1,"94":2,"113":1,"114":2,"133":2,"134":5,"149":1,"160":3,"191":1,"198":1,"199":1,"211":1,"222":2,"249":2,"266":1,"277":6,"534":2,"1225":1,"1344":1,"1452":1,"1497":1,"1728":1,"1830":1,"1949":2,"2114":2,"2162":1,"2491":1,"2564":1}}],["logfile",{"2":{"2262":4}}],["logged",{"2":{"434":1}}],["logger",{"2":{"430":1,"433":1}}],["logging",{"0":{"433":1},"2":{"249":1,"430":1,"470":1,"1252":1,"1253":1}}],["log",{"0":{"433":1},"2":{"114":1,"199":2,"211":1,"349":1,"430":3,"432":2,"433":12,"434":2,"437":1,"441":1,"466":2,"470":2,"529":1,"530":2,"554":1,"2281":1,"2439":1}}],["logo",{"0":{"1814":1,"2138":1},"2":{"31":2,"1814":7,"1816":2,"2138":5,"2140":2}}],["logs",{"2":{"17":1,"2477":1,"2556":1}}],["lots",{"2":{"501":1,"2315":1}}],["lotus58",{"2":{"211":1,"266":1}}],["lot",{"2":{"6":1,"10":2,"114":1,"153":1,"172":1,"175":1,"187":1,"198":2,"201":1,"213":1,"224":1,"233":1,"238":1,"341":1,"435":1,"466":1,"552":1,"560":1,"567":1,"586":1,"606":1,"1258":1,"1332":2,"1336":1,"1437":1,"1515":1,"1527":1,"1528":1,"2114":1,"2161":1,"2272":1,"2274":1,"2280":1,"2284":1,"2317":1,"2411":1,"2417":2,"2424":1,"2425":1,"2469":1,"2555":1,"2560":1,"2566":1,"2567":1,"2601":1,"2710":1,"2711":1,"2713":1,"2725":1,"2743":1}}],["laziness",{"2":{"2564":1}}],["lazydesigners",{"2":{"102":3}}],["lapo",{"2":{"2109":1,"2110":1,"2112":1,"2382":1}}],["laptop",{"2":{"1334":1}}],["lag",{"2":{"1219":1,"1299":1,"2373":1,"2374":1,"2410":1,"2745":1}}],["lags",{"2":{"659":1}}],["lacking",{"2":{"2566":1}}],["lacks",{"2":{"2061":1}}],["lack",{"2":{"1125":1,"1385":1,"1729":1,"1952":1,"2132":1,"2133":1,"2719":1}}],["laid",{"2":{"561":1,"606":1}}],["lambdas",{"0":{"472":1},"2":{"472":1}}],["larr",{"2":{"286":1,"2295":6}}],["largely",{"2":{"244":1,"495":1,"552":1,"2243":1,"2263":2}}],["largest",{"2":{"176":1,"2705":1}}],["larger",{"2":{"153":1,"174":1,"175":1,"176":1,"211":1,"264":1,"274":1,"341":1,"661":1,"689":2,"690":2,"1396":1,"1515":2,"1817":1,"2113":1,"2268":1,"2308":1,"2576":1,"2666":1,"2746":1}}],["large",{"2":{"134":1,"153":1,"163":1,"174":1,"175":1,"176":1,"233":1,"341":1,"352":1,"515":1,"602":1,"606":1,"660":1,"1287":1,"1304":1,"1515":1,"1804":1,"1806":1,"2226":1,"2417":1,"2506":1,"2514":1,"2567":1,"2576":1,"2577":1,"2607":1,"2712":1,"2720":1}}],["la+",{"2":{"211":1}}],["labor",{"2":{"2569":1}}],["labk",{"2":{"2378":1,"2399":1}}],["labeled",{"2":{"703":1,"1177":1,"1198":1,"2450":1}}],["label",{"2":{"341":4,"2615":18,"2616":1,"2686":2}}],["labels",{"2":{"191":1,"2701":1}}],["lab",{"2":{"211":3}}],["latches",{"2":{"1215":1}}],["latter",{"2":{"357":1,"1273":1,"1521":1,"1680":1,"1837":1,"1960":1,"2495":1,"2577":3,"2735":1}}],["lattice60",{"2":{"159":2}}],["latam",{"2":{"249":1}}],["latvian",{"2":{"176":1,"1355":1,"2703":3}}],["latin",{"2":{"1355":2,"2702":1,"2703":6}}],["latinpad",{"2":{"143":2}}],["latinpadble",{"2":{"143":2,"211":1}}],["latin6rgb",{"2":{"143":2}}],["latin64ble",{"2":{"143":2}}],["latin60rgb",{"2":{"143":2}}],["latin47ble",{"2":{"143":2}}],["latincompass",{"2":{"143":7,"149":2}}],["latin17rgb",{"2":{"143":2}}],["late",{"2":{"597":1}}],["late9",{"2":{"241":2,"249":1}}],["latency",{"2":{"94":1,"199":1,"2226":2}}],["later",{"2":{"23":1,"157":1,"352":1,"366":1,"448":1,"468":1,"541":1,"556":1,"656":1,"1303":1,"1380":1,"1830":1,"2042":2,"2161":1,"2276":1,"2309":1,"2343":1,"2405":1,"2468":1,"2472":1,"2570":2}}],["latest",{"2":{"10":1,"24":1,"176":1,"191":1,"211":1,"254":1,"330":1,"2183":1,"2431":1,"2437":1,"2459":1}}],["lanes",{"2":{"2118":1}}],["laneware",{"2":{"241":5,"249":1}}],["landed",{"2":{"131":1}}],["languages",{"2":{"134":1,"1355":1,"2146":1,"2181":1,"2263":1,"2492":1,"2503":1,"2701":1}}],["language",{"0":{"5":1,"2076":1,"2701":1},"1":{"2702":1,"2703":1},"2":{"74":1,"401":1,"479":1,"1355":4,"1921":1,"2146":1,"2355":18,"2391":13,"2510":1,"2512":2,"2629":1,"2657":1,"2666":1,"2701":1,"2703":1}}],["lalt",{"2":{"120":1,"313":1,"530":2,"1269":1,"1299":2,"1300":1,"1302":2,"1335":1,"1354":1,"1357":1,"1361":1,"1375":4,"1403":1,"2112":2,"2169":2,"2170":2,"2355":1,"2367":1,"2370":2,"2373":1,"2374":1,"2390":1,"2396":2,"2405":1,"2407":1,"2410":2}}],["laser",{"2":{"118":1,"191":1,"241":2,"1835":1}}],["lastly",{"2":{"1332":1}}],["last",{"0":{"202":1,"2219":1},"1":{"2220":1},"2":{"23":1,"74":1,"103":1,"105":1,"167":1,"176":2,"184":1,"189":1,"198":1,"201":1,"202":2,"206":1,"211":2,"213":1,"222":1,"224":2,"238":1,"249":1,"275":1,"317":2,"340":1,"343":1,"344":1,"345":1,"350":4,"462":1,"529":1,"581":1,"587":1,"588":2,"689":2,"1344":1,"1360":2,"1412":1,"1430":1,"1438":2,"1442":1,"1451":1,"1582":1,"1673":1,"1781":1,"1784":1,"1868":1,"1929":3,"1931":2,"1932":2,"1933":3,"1934":1,"1936":2,"1937":2,"1938":1,"1939":1,"1940":1,"1941":1,"1942":5,"1943":6,"2026":1,"2029":1,"2044":1,"2128":2,"2130":3,"2147":1,"2149":1,"2161":1,"2162":2,"2169":1,"2183":1,"2219":1,"2277":1,"2349":1,"2381":2,"2415":1,"2422":1,"2439":1,"2481":1,"2491":1,"2508":1,"2530":1,"2574":1,"2576":1,"2577":25,"2591":1,"2747":1,"2748":1}}],["launchpad",{"2":{"143":2,"199":2,"231":1,"1791":1,"2355":2,"2393":2}}],["launch",{"0":{"2498":1},"2":{"114":2,"484":1,"2150":1,"2226":2,"2355":5,"2393":5,"2498":1,"2513":2}}],["layr",{"2":{"2171":3}}],["lays",{"2":{"278":1}}],["layout=ortho",{"2":{"1349":2}}],["layout>",{"2":{"1348":1,"1349":4}}],["layouts+users",{"2":{"191":1}}],["layouts",{"0":{"35":1,"1346":1,"1349":1,"1350":1,"2686":1},"1":{"36":1,"1347":1,"1348":1,"1349":1,"1350":1,"1351":2,"1352":2},"2":{"70":3,"73":1,"74":1,"99":1,"111":1,"114":1,"169":1,"176":1,"191":3,"199":4,"201":3,"211":23,"213":1,"222":3,"236":2,"249":3,"256":2,"370":2,"378":1,"513":2,"538":2,"1268":2,"1335":1,"1339":1,"1346":8,"1347":3,"1349":2,"1378":1,"1524":1,"1957":1,"2302":5,"2441":1,"2445":2,"2553":1,"2559":1,"2566":3,"2615":2,"2617":1,"2657":1,"2686":5,"2701":1,"2702":2,"2746":1}}],["layout",{"0":{"17":1,"89":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"538":1,"546":1,"1347":1,"1355":1,"2122":1,"2424":1,"2559":1,"2746":1},"1":{"257":1,"258":1,"259":1,"260":1},"2":{"17":1,"36":1,"48":1,"70":2,"76":1,"89":2,"94":1,"111":4,"114":2,"120":2,"149":1,"160":2,"191":4,"199":4,"201":3,"211":248,"213":1,"222":11,"236":9,"238":1,"249":4,"255":3,"256":4,"257":2,"258":2,"259":4,"260":1,"266":10,"277":2,"313":4,"370":1,"388":1,"454":1,"529":2,"530":6,"538":3,"540":4,"623":6,"624":1,"1335":1,"1338":2,"1339":1,"1346":10,"1347":6,"1349":4,"1352":6,"1354":2,"1355":4,"1362":1,"1378":2,"1405":5,"1496":2,"1499":1,"1524":1,"1563":1,"1725":2,"1792":1,"1825":1,"1934":1,"1940":1,"1943":1,"1946":2,"2076":2,"2112":2,"2122":3,"2126":1,"2145":2,"2146":1,"2150":2,"2170":1,"2182":1,"2183":1,"2259":2,"2267":1,"2268":2,"2277":2,"2302":17,"2323":2,"2324":2,"2325":6,"2326":1,"2400":1,"2402":2,"2407":4,"2408":1,"2423":1,"2427":1,"2436":2,"2440":1,"2441":1,"2445":4,"2513":1,"2541":1,"2553":2,"2559":8,"2566":15,"2614":6,"2615":11,"2616":2,"2619":1,"2620":2,"2624":1,"2630":1,"2632":1,"2643":1,"2657":1,"2658":1,"2686":18,"2688":1,"2695":1,"2701":3,"2702":3,"2703":3,"2746":5,"2747":3}}],["layering",{"2":{"2408":1}}],["layer>",{"2":{"1866":3}}],["layer9",{"2":{"1530":1}}],["layer8",{"2":{"1530":1}}],["layer7",{"2":{"1530":1,"1876":2}}],["layer6",{"2":{"1530":1}}],["layer5",{"2":{"1530":1,"1876":2}}],["layer4",{"2":{"1530":1}}],["layer3",{"2":{"1530":1,"2042":2}}],["layer2",{"2":{"1530":1,"2042":2}}],["layer1",{"2":{"1530":1,"2042":2}}],["layer0",{"2":{"1530":3}}],["layers\`",{"2":{"1344":1}}],["layers",{"0":{"166":1,"532":1,"1305":1,"1334":1,"1335":1,"1337":1,"1344":1,"1525":1,"1660":2,"1661":2,"1662":2,"1876":1,"2041":1,"2042":1,"2043":1,"2172":1,"2401":1,"2406":1,"2602":1,"2708":1},"1":{"1335":1,"1336":2,"1337":1,"1338":2,"1339":2,"1340":2,"1341":1,"1342":1,"1343":1,"1344":1,"1345":1,"2042":1,"2043":1,"2044":1,"2045":1,"2046":1,"2173":1,"2174":1,"2175":1,"2402":1,"2403":1,"2407":1,"2408":1,"2603":1,"2604":1,"2605":1,"2606":1},"2":{"112":4,"114":1,"120":1,"160":1,"166":4,"176":1,"190":1,"191":1,"198":1,"199":3,"211":1,"266":1,"305":1,"313":1,"388":1,"503":1,"506":6,"529":1,"530":2,"532":1,"548":1,"557":2,"1243":1,"1275":1,"1305":1,"1332":1,"1334":1,"1335":12,"1336":2,"1337":1,"1338":6,"1339":3,"1340":5,"1341":12,"1342":1,"1343":1,"1344":3,"1345":1,"1354":1,"1355":1,"1399":1,"1446":1,"1524":3,"1525":2,"1527":1,"1559":1,"1582":1,"1654":1,"1659":1,"1660":2,"1665":6,"1668":1,"1670":2,"1813":1,"1864":1,"1868":1,"1876":2,"1936":1,"2041":3,"2042":21,"2043":1,"2044":9,"2045":3,"2046":3,"2047":1,"2137":1,"2146":1,"2170":1,"2171":1,"2172":1,"2174":1,"2175":2,"2367":1,"2401":6,"2402":2,"2403":5,"2405":1,"2406":5,"2423":1,"2424":2,"2490":2,"2603":1,"2605":2,"2606":1,"2694":2,"2708":5,"2723":1}}],["layer",{"0":{"3":1,"15":1,"246":1,"603":1,"1275":1,"1342":1,"1343":1,"1345":1,"1524":1,"1525":1,"1668":1,"1864":1,"1865":2,"1873":1,"1877":2,"1879":1,"2044":1,"2056":1,"2170":1,"2171":2,"2367":1,"2402":1,"2403":1,"2407":1,"2408":1,"2603":1,"2605":1,"2607":1,"2644":1},"1":{"1343":1,"1344":1,"1345":1,"1525":1,"1673":1,"1674":1,"1675":1,"1865":1,"1866":1,"1867":1,"1868":1,"1869":1,"1870":1,"1871":1,"1872":1,"1873":1,"1874":1,"1875":1,"1876":1,"1877":1,"1878":1,"1879":1,"1880":1,"2604":1,"2606":1},"2":{"31":1,"38":10,"49":2,"73":1,"93":1,"105":4,"114":2,"149":1,"160":1,"166":3,"176":2,"190":1,"191":5,"194":4,"198":1,"199":7,"211":4,"236":4,"246":2,"249":1,"266":2,"313":1,"503":1,"504":3,"505":2,"506":3,"511":2,"529":2,"532":2,"557":4,"587":1,"603":1,"626":1,"695":1,"697":1,"1275":4,"1331":1,"1332":29,"1334":1,"1335":28,"1336":4,"1337":2,"1338":10,"1339":2,"1340":13,"1341":87,"1342":2,"1343":5,"1344":30,"1345":6,"1379":1,"1383":13,"1386":1,"1399":3,"1403":1,"1446":9,"1511":3,"1518":4,"1519":5,"1524":3,"1525":31,"1527":6,"1530":28,"1549":8,"1553":1,"1555":1,"1559":1,"1582":5,"1655":1,"1668":14,"1670":2,"1685":1,"1720":1,"1724":1,"1733":1,"1813":4,"1816":1,"1859":9,"1861":6,"1864":17,"1865":15,"1866":8,"1868":6,"1869":2,"1871":2,"1873":31,"1874":1,"1876":12,"1877":30,"1878":3,"1879":4,"1880":2,"1917":1,"1936":2,"1937":1,"1939":7,"1945":1,"1957":1,"1958":13,"1959":4,"2041":1,"2042":18,"2043":14,"2044":24,"2056":4,"2129":3,"2137":4,"2140":1,"2145":1,"2150":3,"2154":1,"2156":1,"2161":9,"2170":4,"2171":26,"2172":4,"2173":8,"2174":13,"2175":22,"2228":4,"2367":20,"2379":2,"2398":1,"2400":2,"2401":2,"2402":18,"2403":5,"2404":1,"2405":5,"2406":4,"2407":3,"2408":6,"2414":2,"2423":2,"2490":6,"2491":14,"2523":1,"2546":2,"2565":1,"2566":4,"2603":4,"2604":8,"2605":10,"2606":7,"2607":8,"2644":1,"2686":2,"2687":1,"2694":2,"2697":2,"2706":1,"2708":3,"2728":2,"2734":2,"2735":6,"2736":5,"2737":1,"2757":7}}],["lter",{"2":{"1451":1}}],["lto",{"2":{"111":1,"112":2,"114":3,"134":5,"149":1,"160":1,"211":2,"249":1,"266":2,"513":2,"2513":1,"2674":1}}],["lt",{"0":{"15":1,"308":1,"309":1,"310":1,"1366":1,"1367":1,"1368":1,"1369":2,"1370":5,"2301":1,"2302":1},"2":{"4":3,"18":2,"55":1,"70":1,"132":2,"133":1,"134":1,"176":4,"195":1,"199":1,"201":1,"211":1,"249":2,"282":1,"341":1,"345":2,"347":3,"349":8,"370":1,"371":1,"400":1,"417":2,"433":1,"436":4,"462":1,"500":1,"505":1,"510":2,"511":3,"529":2,"534":2,"559":3,"613":1,"614":4,"621":1,"661":1,"669":1,"690":1,"696":1,"701":2,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1132":1,"1133":1,"1148":1,"1238":2,"1239":1,"1269":1,"1290":6,"1300":3,"1312":2,"1313":1,"1335":2,"1336":1,"1346":1,"1347":3,"1351":4,"1352":1,"1366":1,"1367":1,"1368":3,"1369":1,"1376":6,"1377":5,"1379":4,"1381":1,"1383":1,"1385":5,"1404":2,"1417":1,"1419":1,"1428":1,"1496":1,"1499":1,"1509":1,"1510":2,"1511":2,"1549":1,"1560":1,"1582":1,"1670":2,"1677":1,"1685":2,"1805":5,"1864":1,"1865":11,"1866":1,"2126":3,"2170":1,"2255":1,"2259":2,"2261":4,"2262":16,"2263":2,"2279":1,"2296":2,"2299":1,"2302":1,"2303":3,"2347":4,"2349":2,"2353":1,"2355":1,"2367":1,"2378":2,"2388":1,"2399":2,"2414":4,"2415":2,"2435":1,"2441":5,"2445":2,"2468":2,"2477":7,"2479":3,"2512":2,"2513":2,"2523":1,"2524":1,"2564":1,"2566":2,"2605":1,"2614":4,"2671":1,"2686":1,"2727":1,"2728":3,"2734":4,"2735":7,"2736":4,"2738":4}}],["liking",{"0":{"2424":1},"2":{"2032":1}}],["likewise",{"2":{"511":1,"2414":1,"2709":1}}],["likelihood",{"2":{"263":1,"341":1,"689":1,"2564":2}}],["likely",{"2":{"118":1,"132":1,"156":1,"182":1,"213":2,"341":1,"656":1,"689":1,"1287":1,"1533":1,"1912":1,"2038":1,"2244":1,"2351":1,"2431":1,"2450":1,"2464":1,"2524":1,"2533":1,"2549":1,"2564":1,"2573":1,"2581":1,"2707":1}}],["like",{"0":{"1277":1},"2":{"100":1,"114":1,"120":1,"125":3,"152":3,"156":1,"169":2,"175":1,"176":1,"185":3,"189":1,"194":1,"201":1,"230":1,"244":1,"247":1,"263":1,"279":1,"320":1,"367":1,"446":1,"454":1,"482":1,"485":1,"509":2,"510":1,"515":1,"519":1,"551":1,"554":2,"556":2,"588":1,"597":1,"609":1,"628":1,"692":1,"1129":1,"1226":1,"1230":1,"1234":4,"1254":2,"1265":1,"1276":1,"1280":1,"1294":1,"1298":1,"1300":3,"1302":1,"1325":2,"1331":1,"1332":1,"1334":1,"1335":3,"1336":1,"1354":1,"1355":2,"1359":1,"1361":2,"1363":1,"1369":1,"1376":1,"1377":2,"1379":1,"1384":1,"1394":1,"1398":4,"1403":1,"1404":1,"1406":2,"1423":2,"1432":1,"1440":1,"1441":2,"1451":1,"1459":1,"1469":1,"1470":1,"1496":1,"1497":1,"1499":2,"1500":1,"1501":1,"1503":1,"1511":1,"1520":1,"1530":1,"1558":1,"1560":1,"1562":1,"1655":1,"1668":1,"1676":2,"1677":2,"1683":2,"1787":2,"1791":1,"1806":1,"1807":2,"1832":1,"1859":1,"1918":1,"1929":2,"1932":1,"1943":1,"1948":1,"1959":2,"2034":1,"2045":1,"2046":1,"2062":1,"2064":2,"2126":1,"2129":2,"2152":1,"2156":1,"2161":5,"2165":1,"2169":1,"2171":1,"2181":1,"2183":1,"2228":1,"2229":1,"2237":1,"2255":1,"2260":1,"2261":1,"2263":1,"2268":1,"2271":1,"2272":1,"2273":2,"2275":1,"2276":1,"2292":1,"2299":1,"2309":2,"2311":2,"2313":1,"2328":2,"2367":2,"2410":2,"2411":1,"2421":1,"2422":1,"2423":1,"2459":1,"2468":1,"2477":1,"2490":1,"2491":2,"2502":1,"2510":1,"2525":1,"2530":2,"2534":1,"2566":2,"2567":2,"2569":1,"2571":1,"2575":1,"2607":1,"2617":2,"2705":3,"2706":1,"2735":2,"2736":1,"2738":2,"2743":3,"2745":1,"2747":1,"2748":2,"2753":1,"2754":1}}],["lilypadusb",{"2":{"629":1,"2344":1}}],["lily58",{"0":{"30":1,"31":1},"1":{"31":1},"2":{"30":2}}],["live",{"2":{"401":1,"402":1,"2152":1,"2510":1}}],["lives",{"2":{"99":1,"2327":1}}],["licensing",{"2":{"273":1,"352":1,"2549":2}}],["licensed",{"2":{"2310":1}}],["licenses",{"2":{"1380":1,"2564":1,"2570":1}}],["license",{"0":{"2310":1},"2":{"199":1,"276":1,"282":3,"341":1,"1242":1,"1380":5,"2310":2,"2564":7,"2566":2,"2570":5}}],["liatris",{"0":{"1321":1},"2":{"211":1,"1311":2,"1315":4,"1322":4,"2545":1,"2712":1}}],["lights",{"0":{"2167":1},"2":{"589":1,"1343":1,"1378":1,"2062":1,"2063":1}}],["lightcycle",{"2":{"222":1}}],["light",{"0":{"506":1},"2":{"199":1,"222":1,"506":1,"511":1,"588":1,"1458":1,"1834":1,"1846":1,"1848":1,"1948":1,"1949":1,"1951":1,"1959":1,"2034":1,"2035":2,"2036":1,"2038":2,"2041":1,"2042":6,"2063":1,"2131":1,"2134":1,"2167":1,"2288":1,"2497":1,"2566":1,"2578":1,"2646":1,"2665":1,"2694":1,"2711":2}}],["lighting",{"0":{"233":1,"1723":1,"1944":1,"2031":1,"2041":1,"2042":1,"2043":1,"2044":1,"2045":1,"2376":1,"2377":1},"1":{"1724":1,"1725":1,"1726":1,"1727":1,"1728":1,"1729":1,"1730":1,"1731":1,"1732":1,"1733":1,"1734":1,"1735":1,"1736":1,"1737":1,"1738":1,"1739":1,"1740":1,"1741":1,"1742":1,"1743":1,"1744":1,"1745":1,"1746":1,"1747":1,"1748":1,"1749":1,"1750":1,"1751":1,"1752":1,"1753":1,"1754":1,"1755":1,"1756":1,"1757":1,"1758":1,"1759":1,"1760":1,"1761":1,"1762":1,"1763":1,"1764":1,"1765":1,"1766":1,"1767":1,"1768":1,"1769":1,"1770":1,"1771":1,"1772":1,"1773":1,"1774":1,"1775":1,"1776":1,"1777":1,"1778":1,"1779":1,"1780":1,"1781":1,"1782":1,"1783":1,"1784":1,"1785":1,"1945":1,"1946":1,"1947":1,"1948":1,"1949":1,"1950":1,"1951":1,"1952":1,"1953":1,"1954":1,"1955":1,"1956":1,"1957":1,"1958":1,"1959":1,"1960":1,"1961":1,"1962":1,"1963":1,"1964":1,"1965":1,"1966":1,"1967":1,"1968":1,"1969":1,"1970":1,"1971":1,"1972":1,"1973":1,"1974":1,"1975":1,"1976":1,"1977":1,"1978":1,"1979":1,"1980":1,"1981":1,"1982":1,"1983":1,"1984":1,"1985":1,"1986":1,"1987":1,"1988":1,"1989":1,"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"1995":1,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2001":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2007":1,"2008":1,"2009":1,"2010":1,"2011":1,"2012":1,"2013":1,"2014":1,"2015":1,"2016":1,"2017":1,"2018":1,"2019":1,"2020":1,"2021":1,"2022":1,"2023":1,"2024":1,"2025":1,"2026":1,"2027":1,"2028":1,"2029":1,"2030":1,"2032":1,"2033":1,"2034":1,"2035":1,"2036":1,"2037":1,"2038":1,"2039":1,"2040":1,"2041":1,"2042":2,"2043":2,"2044":2,"2045":2,"2046":2,"2047":1,"2048":1,"2049":1,"2050":1,"2051":1,"2052":1,"2053":1,"2054":1,"2055":1,"2056":1,"2057":1,"2058":1,"2059":1,"2060":1,"2061":1,"2062":1,"2063":1,"2064":1},"2":{"114":1,"191":1,"221":1,"233":1,"236":3,"244":1,"249":2,"266":1,"404":1,"506":4,"1316":1,"1317":1,"1377":1,"1948":1,"2031":1,"2032":1,"2034":1,"2035":3,"2036":1,"2041":2,"2042":2,"2043":2,"2044":2,"2045":4,"2046":2,"2047":1,"2056":2,"2062":1,"2376":2,"2377":2,"2577":1,"2625":1,"2694":2,"2724":2}}],["little",{"2":{"191":1,"587":1,"628":1,"1287":1,"1412":1,"1416":2,"1432":2,"1436":1,"1451":1,"2161":1,"2162":1,"2168":1,"2176":1,"2255":2,"2273":1,"2455":1,"2585":1,"2592":1}}],["lithuanian",{"2":{"176":2,"1355":2,"2703":6}}],["literal",{"2":{"160":2,"612":1,"1363":1}}],["literals",{"2":{"114":1,"191":1,"2075":1}}],["lite",{"0":{"245":1,"565":1},"2":{"87":3,"88":3,"93":1,"103":4,"104":3,"112":1,"126":5,"127":3,"134":1,"149":2,"245":2,"249":2,"565":1,"2566":2,"2689":2}}],["liftoff",{"2":{"1849":2}}],["lifted",{"2":{"1674":1,"1849":1}}],["lifting",{"2":{"1665":1,"2454":1}}],["lift",{"2":{"175":1,"1849":1,"1851":2}}],["life",{"2":{"123":1,"401":1,"551":1,"1331":1,"2038":1,"2569":1}}],["lime",{"2":{"134":1}}],["limitation",{"2":{"635":1,"1431":1,"2335":1,"2413":1,"2519":1}}],["limitations",{"0":{"516":1,"1412":1,"2515":1},"1":{"2516":1,"2517":1,"2518":1,"2519":1},"2":{"552":1,"1230":1,"2115":1,"2146":1,"2177":1,"2263":1}}],["limits",{"0":{"601":1},"2":{"176":2,"236":1,"516":1,"659":1,"1729":2,"1730":3,"1851":1,"1952":2,"1954":3,"2519":1,"2688":2,"2695":2}}],["limiting",{"2":{"114":1,"370":1,"1730":1,"1954":1,"2304":1,"2524":1,"2525":1}}],["limited",{"0":{"534":1,"2519":1},"2":{"92":1,"130":1,"174":1,"493":1,"533":1,"556":1,"560":1,"630":1,"659":1,"1245":1,"1271":1,"1331":1,"1336":2,"1441":1,"1491":1,"1554":1,"1666":1,"1934":1,"1959":1,"2102":1,"2130":1,"2181":1,"2243":1,"2320":1,"2325":3,"2326":1,"2411":1,"2479":1,"2569":1,"2704":1,"2719":1}}],["limit",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"63":1,"114":1,"160":2,"176":1,"191":1,"222":1,"236":1,"337":1,"481":1,"570":1,"598":1,"659":1,"690":1,"697":1,"1326":1,"1457":1,"1573":2,"1729":1,"1730":2,"1817":1,"1950":3,"1952":1,"1954":2,"2035":2,"2299":2,"2574":1,"2688":2,"2695":2,"2708":1}}],["linx",{"2":{"2184":1,"2384":1}}],["linworks",{"2":{"191":1,"266":1}}],["lingering",{"2":{"191":3,"199":1}}],["linux1",{"2":{"2355":1}}],["linux",{"0":{"365":1,"1238":1,"1239":1,"1240":1},"1":{"1239":1,"1240":1},"2":{"158":1,"222":1,"1238":1,"1239":1,"1249":1,"1254":2,"1283":1,"1673":1,"1825":1,"1826":1,"1881":1,"1921":1,"2179":1,"2180":1,"2183":3,"2184":2,"2196":1,"2197":1,"2198":1,"2347":1,"2351":1,"2355":1,"2384":2,"2451":1,"2457":1,"2458":1,"2484":1,"2513":2,"2556":1,"2703":2}}],["linting",{"0":{"442":1,"443":1,"447":1},"1":{"443":1,"444":1,"445":1,"446":1,"447":1}}],["lint",{"0":{"381":1,"2293":1},"2":{"134":1,"160":1,"191":1,"199":1,"236":1,"249":1,"266":1,"282":3,"341":1,"381":3,"442":1,"447":1,"2293":5}}],["linear",{"2":{"1577":2,"2596":3}}],["linebreak",{"2":{"462":1}}],["lined",{"2":{"292":1,"453":1}}],["lines",{"0":{"280":1},"2":{"64":1,"113":1,"153":1,"211":1,"272":1,"273":1,"277":1,"453":2,"455":2,"462":1,"468":1,"481":1,"556":1,"588":1,"661":1,"1363":1,"1561":2,"1591":3,"1822":5,"1903":1,"2143":4,"2146":1,"2147":1,"2148":1,"2149":1,"2342":1,"2349":1,"2423":2,"2556":1,"2577":1}}],["line",{"0":{"1603":1,"2454":1,"2484":1},"1":{"1604":1},"2":{"45":1,"65":1,"112":1,"114":2,"118":2,"157":1,"199":1,"226":2,"236":1,"249":1,"264":1,"274":1,"277":1,"282":3,"292":2,"363":1,"399":3,"400":1,"414":1,"430":1,"437":1,"453":4,"454":1,"457":1,"459":2,"462":3,"468":3,"473":1,"556":2,"563":1,"1124":1,"1126":1,"1134":1,"1225":1,"1255":1,"1314":1,"1316":1,"1320":2,"1328":1,"1329":1,"1351":1,"1378":1,"1511":3,"1518":1,"1552":2,"1591":2,"1604":2,"1605":1,"1800":1,"1822":5,"1832":1,"1903":1,"2103":1,"2143":3,"2150":1,"2172":1,"2230":1,"2233":1,"2235":2,"2236":1,"2237":1,"2240":1,"2242":1,"2243":1,"2244":1,"2255":2,"2262":1,"2268":1,"2273":1,"2311":2,"2349":2,"2423":3,"2427":1,"2437":1,"2451":2,"2457":1,"2477":2,"2479":2,"2484":1,"2492":1,"2503":1,"2506":1,"2508":1,"2530":1,"2542":1,"2553":1,"2577":7,"2587":1,"2615":1,"2622":1,"2623":1,"2636":1,"2757":2}}],["linkid=830387",{"2":{"2513":1}}],["linking",{"2":{"236":2,"279":1,"513":2,"1287":1,"2303":1,"2425":1,"2469":1}}],["link007",{"2":{"2351":1}}],["linked",{"2":{"236":1,"513":1,"2346":1,"2686":1}}],["linker",{"2":{"114":1}}],["links",{"0":{"2281":1},"2":{"199":1,"279":2,"331":1,"351":1,"602":1,"1262":1,"1304":1,"1451":1,"2275":1,"2282":1,"2297":1,"2328":1,"2354":1,"2566":1}}],["link",{"2":{"10":2,"50":1,"93":1,"94":1,"114":1,"133":1,"134":2,"277":1,"327":2,"349":1,"513":2,"557":1,"621":1,"1236":1,"1267":1,"1451":2,"1452":1,"1910":2,"2241":4,"2255":2,"2269":4,"2350":1,"2351":2,"2352":2,"2353":4,"2497":1,"2506":1,"2564":1,"2566":3,"2674":1,"2705":1}}],["libffi",{"2":{"2464":1}}],["libusbk",{"2":{"629":1}}],["libusb",{"2":{"240":3}}],["liberal",{"2":{"455":1,"471":1}}],["liberally",{"2":{"453":1,"455":1}}],["liber",{"2":{"143":2,"149":1}}],["libc",{"2":{"114":1,"681":1,"2705":1}}],["lib8tion",{"2":{"114":1}}],["libraries",{"2":{"30":1,"33":1,"1921":1,"2720":1}}],["library",{"0":{"1440":1,"1578":1},"1":{"1441":1},"2":{"30":2,"160":1,"414":1,"415":1,"417":1,"423":1,"424":1,"479":1,"513":1,"697":2,"1439":3,"1440":2,"1578":1,"1921":2,"1922":1,"1923":1,"2578":2}}],["lib",{"2":{"6":1,"75":1,"113":1,"114":1,"234":2,"282":3,"349":2,"360":1,"430":2,"446":1,"483":1,"484":1,"485":2,"513":8,"607":3,"613":1,"614":3,"2255":4,"2523":1}}],["lists",{"0":{"282":1,"468":1},"2":{"382":1,"383":1,"395":1,"474":1,"626":1}}],["listings",{"2":{"211":1,"2513":1}}],["listing",{"2":{"149":1,"371":1,"621":1,"1357":1}}],["listed",{"2":{"43":1,"120":1,"204":1,"264":1,"274":1,"364":1,"366":1,"454":1,"509":1,"574":1,"580":1,"656":1,"659":1,"701":1,"1336":1,"1340":1,"1822":1,"2123":1,"2161":1,"2342":1,"2347":1,"2348":1,"2439":1,"2544":1,"2548":1,"2573":1,"2749":1}}],["listening",{"2":{"1252":1,"1254":2,"2071":1}}],["listen",{"0":{"1249":1,"1254":1,"2639":1},"2":{"34":1,"503":1,"1249":1,"1254":4,"1255":1,"2131":1,"2263":2,"2639":1}}],["list",{"0":{"71":1,"382":1,"383":1,"395":1,"629":1,"2266":1,"2325":1,"2601":1},"1":{"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"2602":1,"2603":1,"2604":1,"2605":1,"2606":1,"2607":1,"2608":1,"2609":1,"2610":1,"2611":1,"2612":1},"2":{"0":1,"19":1,"76":1,"93":1,"114":1,"116":1,"120":1,"124":1,"134":3,"149":2,"157":1,"172":1,"182":1,"186":1,"188":2,"189":1,"191":2,"199":1,"202":1,"204":1,"211":1,"233":2,"234":1,"249":1,"272":1,"292":1,"313":1,"316":3,"317":1,"331":1,"341":1,"374":3,"375":1,"382":1,"383":1,"393":1,"394":1,"395":2,"396":1,"411":5,"457":1,"467":1,"513":3,"537":1,"612":1,"626":2,"629":1,"663":1,"1265":1,"1300":2,"1354":1,"1355":1,"1359":2,"1383":1,"1398":5,"1508":1,"1511":2,"1518":1,"1547":1,"1578":1,"1654":1,"1677":2,"1724":1,"1921":1,"1932":1,"1945":1,"1953":1,"2042":3,"2044":1,"2047":1,"2052":4,"2058":1,"2130":1,"2152":1,"2168":1,"2179":1,"2183":2,"2280":1,"2321":1,"2324":1,"2325":1,"2400":2,"2406":1,"2407":1,"2421":2,"2423":2,"2424":1,"2436":1,"2437":2,"2440":1,"2448":1,"2469":2,"2477":4,"2502":1,"2523":1,"2548":1,"2549":1,"2555":1,"2556":3,"2562":1,"2564":1,"2566":1,"2592":1,"2607":1,"2672":1,"2677":1,"2682":2,"2684":1,"2686":2,"2688":1,"2689":3,"2695":1,"2696":1,"2719":1,"2723":1,"2738":2}}],["svd",{"2":{"2513":5}}],["svdfile",{"2":{"2513":2}}],["svnroot",{"2":{"358":1}}],["svn",{"2":{"114":1,"149":1,"358":8}}],["sz",{"2":{"2183":1}}],["s2",{"2":{"2148":1,"2153":2}}],["s2m",{"2":{"2130":9}}],["s1",{"2":{"2148":1,"2153":2}}],["sg",{"2":{"1300":1}}],["sgui",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["sbin",{"2":{"1239":1}}],["s3",{"2":{"222":1,"304":2,"305":1,"308":1,"519":1,"2153":1}}],["sq",{"2":{"2105":9,"2106":12}}],["sq80",{"2":{"249":1}}],["sqrt",{"2":{"222":1}}],["squash",{"2":{"560":1}}],["square",{"2":{"222":1,"661":1,"1393":2,"1401":1}}],["squiggly",{"2":{"401":1}}],["squigglybob",{"2":{"222":1}}],["squigglies",{"2":{"401":1}}],["squiggle",{"2":{"143":2}}],["squishytkl",{"2":{"197":2}}],["squishy65",{"2":{"197":2}}],["squeeze",{"2":{"160":1,"486":1,"616":1}}],["squeezing",{"0":{"123":1,"2704":1},"1":{"2705":1,"2706":1,"2707":1,"2708":1,"2709":1,"2710":1,"2711":1},"2":{"134":1,"2718":1,"2724":1}}],["sfbs",{"0":{"1934":1}}],["sf",{"2":{"211":1}}],["sftent",{"2":{"2112":3,"2113":1}}],["sft",{"2":{"195":1,"1511":2,"2374":1,"2410":1,"2727":1,"2728":1,"2734":3,"2737":6}}],["s65",{"2":{"211":1}}],["sram",{"2":{"2353":3}}],["srand",{"2":{"1815":1,"2139":1}}],["sr",{"2":{"2153":3}}],["srst",{"2":{"335":1}}],["srom",{"2":{"273":2,"277":1}}],["sriwedari70",{"2":{"211":1}}],["src",{"2":{"75":1,"114":1,"133":1,"134":1,"149":1,"234":9,"236":1,"401":1,"513":8,"614":2,"665":1,"730":2,"756":2,"785":2,"817":2,"849":2,"884":2,"918":2,"952":2,"986":2,"1020":2,"1054":2,"1088":2,"1144":2,"1330":1,"1377":4,"2299":1,"2435":1,"2753":1}}],["sdio",{"2":{"1834":2,"1846":2,"1848":2,"1851":3}}],["sd",{"2":{"1511":4}}],["sdep",{"2":{"1492":1}}],["sd2",{"2":{"1198":1}}],["sd3",{"2":{"1132":2}}],["sd1",{"2":{"1132":1,"1198":2}}],["sdb",{"2":{"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1}}],["sdk",{"2":{"191":1,"199":1}}],["sdadel",{"2":{"705":1}}],["sda",{"2":{"176":1,"702":2,"703":4,"758":1,"787":1,"819":1,"851":8,"886":8,"920":1,"954":1,"988":1,"1022":8,"1056":8,"1090":8,"1146":1,"1574":1,"2120":1,"2541":1}}],["ssh",{"2":{"2432":1,"2438":1}}],["ssion",{"2":{"1943":1}}],["ssp",{"2":{"1123":3}}],["ssk",{"2":{"207":3}}],["ss",{"2":{"176":2,"196":2,"1176":5,"1359":1,"1361":24,"1363":1,"1680":2,"1686":4,"2075":4,"2078":1,"2079":2,"2141":1}}],["ssd1351",{"2":{"176":1,"2573":2,"2576":7}}],["ssd1306oled\\t",{"2":{"31":1,"34":1}}],["ssd1306oled",{"2":{"31":2,"34":2,"220":1}}],["ssd1306",{"0":{"1823":1,"2287":1},"2":{"30":1,"33":1,"50":1,"153":1,"176":1,"220":2,"221":2,"248":1,"249":1,"1811":5,"1813":3,"1817":1,"1820":1,"1821":3,"1822":2,"2287":1,"2573":2,"2576":2}}],["snek",{"2":{"2181":3}}],["snes",{"2":{"236":1}}],["sn",{"2":{"2034":1,"2376":1}}],["snippers",{"2":{"2266":1}}],["snippet",{"2":{"1555":1,"1908":1}}],["snip>",{"2":{"317":1}}],["snled27351",{"0":{"1143":1,"1150":1,"1152":1,"1154":1,"1156":1,"1158":1,"1160":1,"1162":1,"1164":1,"1166":1,"1168":1,"1170":1,"1172":1},"1":{"1144":1,"1145":1,"1146":1,"1147":1,"1148":1,"1149":1,"1150":1,"1151":2,"1152":1,"1153":2,"1154":1,"1155":2,"1156":1,"1157":2,"1158":1,"1159":2,"1160":1,"1161":2,"1162":1,"1163":2,"1164":1,"1165":2,"1166":1,"1167":2,"1168":1,"1169":2,"1170":1,"1171":2,"1172":1,"1173":2},"2":{"236":2,"249":1,"1143":1,"1144":4,"1145":7,"1146":6,"1148":6,"1158":1,"1159":1,"1162":1,"1163":1,"1166":1,"1167":1,"1168":1,"1169":1,"1724":1,"1945":1,"2688":1,"2695":1}}],["snowe",{"2":{"191":1}}],["snprintf",{"2":{"191":1,"2705":3,"2710":1}}],["snapshot",{"2":{"554":1}}],["snap",{"2":{"277":1}}],["snake",{"2":{"160":1,"2034":2,"2036":2,"2037":2,"2038":2,"2040":2,"2063":1,"2376":2,"2694":1,"2711":1}}],["snagpad",{"2":{"43":2}}],["sn74x154",{"2":{"160":1}}],["sn74x138",{"2":{"148":1,"149":1,"160":1}}],["skeleton",{"2":{"2443":1}}],["sketches",{"2":{"2344":1}}],["sketch",{"2":{"2331":1}}],["skewed",{"2":{"1405":1}}],["sk6805",{"2":{"1212":1,"1216":1,"2031":1}}],["sk6812rgbw",{"2":{"1217":1}}],["sk6812mini",{"2":{"1212":1,"2031":1}}],["sk6812",{"2":{"1212":1,"1216":1,"2031":1}}],["skills",{"2":{"557":1,"1683":1,"1918":1}}],["skips",{"2":{"1360":2,"1557":1,"1842":1,"1865":2,"2355":1}}],["skipped",{"2":{"277":1,"2162":1}}],["skipping",{"2":{"240":1,"597":1,"2162":1}}],["skip",{"2":{"49":1,"65":1,"114":1,"149":1,"176":1,"214":1,"571":1,"572":1,"1127":1,"1130":1,"1332":1,"1446":1,"1838":1,"1842":1,"2268":1,"2349":1,"2393":2,"2405":1,"2430":1,"2451":1,"2477":2,"2497":1,"2498":1,"2724":1}}],["skully",{"2":{"424":1}}],["skullydazed",{"2":{"111":1,"2672":1}}],["skyloong",{"2":{"222":1,"236":4}}],["slct",{"2":{"2355":1,"2392":1}}],["sl",{"2":{"2153":2}}],["slep",{"2":{"1273":1,"2355":1,"2393":1}}],["sleeping",{"2":{"1530":1,"2263":1}}],["sleep",{"0":{"1292":1,"1298":1},"2":{"70":1,"73":1,"93":1,"190":2,"191":1,"222":1,"249":2,"588":1,"1292":1,"1298":1,"1530":1,"1730":1,"1954":1,"2035":2,"2263":1,"2355":2,"2393":2,"2688":2,"2694":2,"2695":2}}],["slovenian",{"2":{"1355":1,"2703":3}}],["slovak",{"2":{"1355":1,"2703":3}}],["slows",{"2":{"1851":1}}],["slowdown",{"2":{"1821":1}}],["slower",{"2":{"1817":1,"1862":1,"2106":1,"2107":1,"2428":1}}],["slowest",{"2":{"1805":1,"1806":1,"1822":1}}],["slowly",{"2":{"1815":1,"2139":1}}],["slow",{"2":{"506":1,"1326":2,"1403":1,"1573":1,"1803":1,"1836":1,"2042":1,"2463":1,"2584":1}}],["slots",{"2":{"218":1}}],["slsh",{"2":{"313":1,"530":2,"2228":1,"2355":1,"2388":1,"2407":1}}],["slash",{"2":{"1530":1,"1584":1,"2294":1,"2355":2,"2388":1,"2394":1}}],["slashes",{"2":{"149":1}}],["slated",{"2":{"688":1}}],["slate",{"2":{"559":1,"2566":1}}],["slavepin",{"0":{"1180":1},"1":{"1181":1,"1182":1},"2":{"1177":1,"1181":1}}],["slave",{"2":{"74":1,"92":1,"93":1,"107":1,"211":1,"509":2,"511":13,"685":2,"694":2,"852":3,"1023":3,"1057":3,"1129":2,"1176":1,"1177":2,"1181":1,"1194":1,"1714":1,"1907":1,"1959":1,"2044":1,"2051":4,"2114":1,"2128":4,"2129":8,"2130":24,"2131":7,"2132":1,"2141":1,"2225":1}}],["slim",{"2":{"1950":1,"2235":1}}],["sliding",{"2":{"1807":1}}],["slicing",{"2":{"1397":1}}],["slightly",{"2":{"560":1,"641":1,"1128":1,"1143":1,"1215":1,"1406":1,"1409":1,"1520":1,"1573":1,"1859":1,"2122":1,"2226":1,"2343":1,"2348":1,"2566":1,"2735":1}}],["slight",{"2":{"149":1,"236":1,"1949":3}}],["slipped",{"2":{"95":1}}],["smith",{"2":{"2553":1}}],["smithrune",{"2":{"211":1}}],["smp",{"2":{"641":1}}],["smpr",{"2":{"641":1}}],["smart",{"2":{"551":1}}],["smallest",{"2":{"2564":1,"2567":1}}],["smaller",{"2":{"134":1,"166":1,"248":1,"249":2,"481":1,"1573":1,"1822":1,"2147":1,"2564":1,"2576":3,"2705":2,"2720":1}}],["smallice",{"2":{"159":2}}],["small",{"0":{"25":1},"2":{"153":1,"174":1,"191":2,"211":1,"277":1,"364":1,"481":1,"513":1,"1212":1,"1430":1,"1438":1,"1439":1,"1527":1,"1571":1,"1803":1,"1806":1,"2031":1,"2133":2,"2240":1,"2266":1,"2269":1,"2272":2,"2274":1,"2308":1,"2424":1,"2480":1,"2750":1}}],["smoke",{"2":{"2273":2}}],["smoothly",{"2":{"2226":1}}],["smoothed",{"2":{"2226":1}}],["smoother",{"2":{"74":1,"505":1,"1803":1,"1804":1}}],["smoothness",{"2":{"1804":1,"2226":1}}],["smooth1",{"2":{"1578":12}}],["smooth2",{"2":{"1578":12}}],["smooth",{"2":{"353":1,"1578":5,"1807":1,"2472":1}}],["smoll",{"2":{"241":4,"249":1}}],["smolka",{"2":{"211":1}}],["syllabus",{"0":{"2722":1},"2":{"2419":1}}],["syllable",{"2":{"2144":2}}],["syrq",{"2":{"2355":1,"2392":1}}],["sysreq",{"2":{"2355":1,"2392":1}}],["sys",{"2":{"1923":2}}],["sysclk",{"2":{"134":1}}],["sysex",{"2":{"114":1,"133":1,"134":1}}],["systemctl",{"2":{"1239":2}}],["systemd",{"2":{"1239":1}}],["systems",{"0":{"367":1},"2":{"134":1,"234":1,"367":1,"592":1,"1273":1,"1385":1,"1787":1,"2177":1,"2182":1,"2262":2,"2326":1,"2585":1,"2592":1,"2705":1}}],["system",{"0":{"140":1,"451":1,"452":1,"1291":1,"2323":1,"2509":1,"2718":1},"2":{"49":2,"75":1,"76":1,"84":1,"93":1,"114":1,"149":1,"176":1,"231":3,"232":1,"234":1,"249":1,"262":2,"272":1,"366":1,"403":1,"413":1,"434":1,"451":1,"457":1,"479":1,"480":1,"515":1,"589":1,"605":1,"614":1,"626":1,"661":1,"681":1,"687":1,"1221":1,"1239":1,"1273":1,"1291":1,"1723":1,"1725":1,"1731":1,"1802":1,"1803":1,"1832":1,"1853":1,"1855":1,"1858":2,"1881":1,"1921":1,"1944":1,"1946":1,"1948":2,"1955":1,"2072":1,"2113":1,"2120":1,"2146":1,"2183":2,"2225":1,"2250":1,"2255":1,"2261":1,"2263":2,"2322":1,"2323":1,"2326":1,"2355":8,"2392":2,"2393":7,"2431":1,"2441":2,"2445":1,"2450":1,"2492":1,"2497":1,"2508":1,"2531":1,"2556":1,"2573":1,"2577":1,"2629":1,"2638":1,"2701":1,"2705":1,"2718":1,"2735":1,"2736":1}}],["systick",{"0":{"11":1},"2":{"11":2}}],["symb",{"2":{"2606":1}}],["symbol",{"2":{"331":1,"1419":1,"2036":2,"2182":2,"2224":1,"2311":1,"2325":1,"2397":1}}],["symbolic",{"2":{"236":1,"1428":1}}],["symbols",{"0":{"1419":1,"1428":1,"2378":1,"2397":1},"1":{"2398":1,"2399":1},"2":{"176":2,"1423":2,"1429":1,"2181":1,"2263":1,"2354":1,"2378":1}}],["symmetric",{"2":{"1326":2,"1934":1}}],["symmetric70",{"2":{"114":1,"134":1}}],["symlink",{"0":{"451":1},"2":{"451":1,"452":1}}],["symlinks",{"2":{"403":1}}],["sym",{"2":{"94":1,"149":1,"199":1,"236":2,"1326":3,"1329":8,"2182":4,"2674":5}}],["synapse",{"2":{"241":2}}],["synth",{"2":{"1393":2}}],["synthesis",{"2":{"1393":1}}],["synthesis60",{"2":{"211":1}}],["syntaxwarning",{"2":{"249":1}}],["syntax",{"2":{"92":1,"176":1,"191":1,"374":1,"1440":1,"2262":1,"2347":1,"2417":1,"2437":1,"2479":1,"2728":2}}],["syncing",{"2":{"1958":1,"2129":4}}],["synchronous",{"2":{"1907":1}}],["synchronizes",{"2":{"2129":1}}],["synchronized",{"2":{"852":1,"1023":1,"1057":1}}],["synchronization",{"0":{"852":1,"1023":1,"1057":1},"2":{"852":1,"1023":1,"1057":1,"2035":1,"2128":1,"2131":1,"2694":1}}],["synchronizing",{"2":{"511":1}}],["synced",{"2":{"1714":1,"1959":1,"2044":1}}],["syncs",{"2":{"511":2}}],["sync",{"0":{"2129":1,"2130":1,"2473":1},"1":{"2474":1,"2475":1},"2":{"74":1,"107":1,"112":2,"114":4,"211":1,"222":1,"236":2,"249":2,"506":1,"511":3,"850":12,"852":5,"1021":12,"1023":5,"1055":12,"1057":5,"1100":2,"1385":1,"1714":1,"1852":1,"1958":1,"1959":1,"2042":1,"2044":1,"2128":3,"2129":1,"2130":16,"2472":1,"2475":1,"2697":1}}],["s7",{"2":{"67":4,"72":1}}],["schottky",{"2":{"2133":2}}],["school",{"2":{"2118":1,"2564":1}}],["scheikled",{"2":{"222":1}}],["schemes",{"2":{"635":1,"2666":2}}],["scheme",{"2":{"182":1,"2319":1,"2587":3,"2596":3}}],["schemas",{"2":{"191":1,"282":1,"607":1,"609":1,"2671":1}}],["schematics",{"2":{"1293":1}}],["schematic",{"0":{"1471":1,"2319":1},"2":{"93":1,"1236":1,"1289":1,"1293":2}}],["schema",{"0":{"609":1,"2600":1},"2":{"76":2,"149":1,"176":3,"199":1,"222":1,"249":1,"266":2,"277":1,"282":1,"607":1,"2566":1,"2671":1}}],["scheduled",{"2":{"339":1,"598":1,"601":1,"2584":1}}],["schedule",{"0":{"88":1,"104":1,"127":1,"170":1},"2":{"184":1}}],["score",{"2":{"2225":1,"2228":1}}],["scope",{"2":{"1881":1,"2102":1,"2745":1,"2746":1}}],["scottoalp",{"2":{"266":1}}],["scottostarter",{"2":{"217":2}}],["scottocmd",{"2":{"217":2}}],["scotto9",{"2":{"217":2}}],["scottokeebs",{"2":{"217":5}}],["scotto36",{"2":{"217":2}}],["scotto40",{"2":{"199":1,"217":2}}],["scmd",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["sck",{"2":{"1176":2,"1177":4,"1226":4,"2518":1,"2541":1,"2576":2}}],["scenario",{"2":{"1252":1,"1253":1,"2152":1,"2311":1,"2403":1}}],["scenarios",{"2":{"263":1,"663":1,"2311":1,"2730":1}}],["scenes",{"2":{"198":1,"201":1,"213":1,"224":1,"238":1,"251":1,"2162":1}}],["science",{"2":{"199":1}}],["sclr",{"2":{"2106":1}}],["sclk",{"2":{"1834":2,"1846":2,"1848":2,"1851":3,"2328":1,"2330":1,"2332":2,"2334":1,"2336":2,"2338":2,"2340":1}}],["scll",{"2":{"705":1}}],["sclh",{"2":{"705":1}}],["scldel",{"2":{"705":1}}],["scln",{"2":{"176":1,"313":1,"530":2,"1499":1,"2168":1,"2355":1,"2388":1,"2407":1}}],["scl",{"2":{"176":1,"502":1,"702":3,"703":4,"758":1,"787":1,"819":1,"851":8,"886":8,"920":1,"954":1,"988":1,"1022":8,"1056":8,"1090":8,"1146":1,"1574":1,"2120":1,"2541":1}}],["sculpt",{"2":{"149":1,"160":1}}],["scythe",{"2":{"143":2}}],["scylla",{"2":{"114":1}}],["scary",{"2":{"2752":1}}],["scarlet",{"2":{"211":1}}],["scarletbandana",{"2":{"143":2}}],["scattered",{"2":{"2750":1}}],["scaling",{"0":{"808":1,"810":1,"814":1,"1011":1,"1013":1,"1017":1,"1045":1,"1047":1,"1051":1,"1079":1,"1081":1,"1085":1,"1113":1,"1115":1,"1119":1},"1":{"809":1,"811":1,"815":1,"1012":1,"1014":1,"1018":1,"1046":1,"1048":1,"1052":1,"1080":1,"1082":1,"1086":1,"1114":1,"1116":1,"1120":1},"2":{"176":1,"249":2,"666":2,"808":2,"809":3,"810":2,"811":1,"814":1,"1011":2,"1012":3,"1013":2,"1014":1,"1017":1,"1045":2,"1046":3,"1047":2,"1048":1,"1051":1,"1079":2,"1080":3,"1081":2,"1082":1,"1085":1,"1113":2,"1114":3,"1115":2,"1116":1,"1119":1,"1405":1,"1842":1,"1910":3}}],["scaled",{"2":{"1633":2,"2677":1,"2688":1,"2694":1,"2695":1}}],["scale",{"2":{"176":1,"191":1,"199":1,"1403":5,"1405":1,"1847":1,"1950":1,"2567":1}}],["scancode",{"0":{"2660":1},"2":{"2321":2,"2322":1}}],["scancodes",{"2":{"1279":1,"2321":2,"2407":1,"2666":1}}],["scans",{"2":{"1326":2,"1340":1}}],["scanned",{"2":{"641":1,"1252":1,"1253":1,"2311":10}}],["scanning",{"0":{"584":1,"2745":1},"1":{"585":1,"586":1,"2746":1,"2747":1,"2748":1,"2749":1},"2":{"49":1,"134":1,"266":1,"515":1,"563":1,"565":2,"566":3,"584":1,"586":1,"659":1,"660":1,"1326":4,"1573":1,"2122":1,"2263":1,"2311":1,"2548":1,"2584":1,"2614":1,"2689":2,"2744":1,"2745":4,"2746":2,"2748":2}}],["scanf",{"2":{"334":1}}],["scan",{"0":{"585":1,"586":1,"1253":1},"2":{"31":1,"65":1,"93":2,"112":1,"113":1,"114":1,"149":2,"176":2,"196":1,"199":2,"214":1,"277":1,"565":1,"566":5,"586":3,"587":2,"588":1,"627":1,"1253":7,"1326":2,"1329":1,"1330":1,"1375":1,"1497":5,"1573":2,"1817":1,"1847":1,"2128":1,"2129":1,"2141":1,"2150":1,"2231":1,"2238":1,"2301":1,"2320":1,"2407":1,"2747":1,"2748":3}}],["sc",{"2":{"55":11,"2109":7,"2110":7,"2112":1,"2113":1,"2382":7}}],["scratch",{"2":{"2262":1,"2497":1}}],["scr",{"2":{"1813":1,"2137":1}}],["scrutiny",{"2":{"352":1}}],["scrl",{"2":{"313":1,"530":2,"1276":1,"2355":1,"2389":1,"2408":1}}],["scrollwheel",{"2":{"1910":1}}],["scrolls",{"2":{"1817":1}}],["scroll",{"0":{"1858":2,"1859":1,"1912":1,"1914":1},"2":{"175":1,"176":3,"188":1,"191":1,"199":1,"222":1,"236":2,"511":1,"1585":1,"1714":1,"1715":2,"1717":1,"1798":1,"1802":5,"1803":3,"1805":13,"1806":1,"1813":1,"1816":2,"1817":3,"1822":7,"1839":3,"1842":1,"1844":5,"1845":3,"1851":3,"1857":1,"1858":4,"1859":25,"1862":1,"1910":3,"1912":15,"1914":1,"2137":1,"2140":1,"2355":4,"2389":4,"2685":2,"2744":1}}],["scrolling",{"2":{"48":1,"175":1,"1406":1,"1728":6,"1802":2,"1803":4,"1804":1,"1805":1,"1811":4,"1816":1,"1822":17,"1839":1,"1855":2,"1857":1,"1858":5,"1859":18,"1860":1,"1861":8,"1862":1,"1910":1,"1912":2,"1948":1,"1949":9}}],["screw",{"2":{"114":1}}],["screens",{"2":{"592":1,"1822":1,"2284":1}}],["screen",{"0":{"1665":1},"2":{"34":1,"153":1,"511":1,"1406":1,"1534":1,"1586":1,"1665":1,"1807":1,"1814":1,"1815":1,"1817":3,"1821":2,"1822":12,"1823":1,"2129":2,"2138":1,"2139":1,"2141":1,"2143":11,"2355":2,"2392":2,"2425":1,"2498":1,"2501":1,"2577":11}}],["script",{"2":{"94":1,"114":2,"134":1,"149":3,"191":1,"199":1,"277":1,"335":2,"428":1,"430":2,"451":1,"452":1,"625":1,"1241":1,"2238":1,"2252":1}}],["scripts",{"2":{"10":1,"211":1,"335":2}}],["shyay",{"2":{"2466":1}}],["shsudo",{"2":{"2466":1}}],["shcd",{"2":{"2443":1,"2444":1}}],["shqmk",{"2":{"1312":1,"1440":1,"2421":2,"2422":2,"2425":2,"2445":1,"2447":1,"2454":2,"2468":4,"2469":2}}],["sheer",{"2":{"2719":1}}],["sheet",{"2":{"656":2,"661":2,"1396":1}}],["she",{"2":{"1565":1}}],["shell",{"2":{"116":1,"176":1,"249":1,"373":2,"428":1,"1935":1,"2256":1,"2508":1}}],["shade",{"2":{"2575":4}}],["shades",{"2":{"1950":1}}],["shall",{"2":{"2161":1,"2566":1}}],["shapes",{"2":{"2617":1}}],["shaped",{"2":{"2131":1}}],["shapped",{"2":{"1949":1}}],["sha",{"2":{"529":2}}],["sha1",{"2":{"349":1}}],["shandoncodes",{"2":{"241":5,"249":1}}],["sharp2",{"2":{"1578":12}}],["sharp1",{"2":{"1578":12}}],["sharp",{"2":{"1578":8,"1793":30,"2266":1,"2371":30}}],["sharing",{"0":{"1376":1},"1":{"1377":1,"1378":1,"1379":1,"1380":1,"1381":1,"1382":1,"1383":1,"1384":1,"1385":1},"2":{"107":1,"1265":1,"1562":1,"2558":1}}],["shares",{"2":{"1498":1}}],["share",{"2":{"63":1,"415":1,"1265":1,"1352":1,"1376":1,"1380":1,"1554":1,"1562":2,"1563":1,"2295":1,"2510":1}}],["shared",{"0":{"2518":1},"2":{"30":1,"33":1,"50":1,"107":1,"112":2,"114":1,"138":1,"160":1,"190":1,"191":1,"262":1,"502":1,"516":2,"633":1,"1377":1,"1385":1,"1731":1,"1809":1,"1854":2,"1948":1,"1955":1,"2516":1,"2518":4,"2530":2,"2699":3}}],["shutdown",{"0":{"229":1,"592":1,"593":1,"594":1,"595":1},"1":{"593":1,"594":1,"595":1},"2":{"229":6,"230":1,"236":2,"249":1,"266":1,"277":1,"592":3,"593":2,"594":1,"595":2,"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1,"1816":1}}],["sh1107",{"2":{"210":1,"1811":4,"1813":1,"1817":1,"1820":1,"1821":3,"1822":1}}],["sh1106",{"2":{"153":1,"232":2,"1811":2,"1813":1,"1817":2,"1821":2,"1822":1,"2573":6,"2576":15}}],["shpkg",{"2":{"2467":1}}],["shpython3",{"2":{"158":1,"2465":1}}],["shpacman",{"2":{"158":1,"2461":1}}],["shbrew",{"2":{"158":1,"2463":1}}],["sh",{"2":{"114":1,"199":1,"360":1,"450":1,"451":3,"452":1,"625":1,"1241":1,"1578":10,"2156":10,"2252":6,"2383":8,"2431":1,"2446":1,"2462":1}}],["shine",{"2":{"2625":1,"2665":1}}],["shiny",{"2":{"2272":1,"2273":1}}],["shipping",{"2":{"2310":2}}],["shipped",{"2":{"625":1,"2343":1,"2566":1}}],["ship",{"2":{"1132":1,"1133":1}}],["shisaku",{"2":{"211":1}}],["shield",{"2":{"113":1,"114":1}}],["shifting",{"2":{"1412":2,"1432":1,"1506":1}}],["shift+option",{"2":{"2355":1}}],["shift+v",{"2":{"1529":1}}],["shift+s",{"2":{"1503":1}}],["shift+a",{"2":{"1503":2}}],["shift+escape",{"2":{"626":1}}],["shift+b",{"2":{"626":1}}],["shift+right",{"2":{"626":3,"1529":2}}],["shift+2",{"2":{"99":1}}],["shifter",{"2":{"580":1}}],["shifted",{"0":{"1430":1,"2378":1,"2397":1},"1":{"2398":1,"2399":1},"2":{"176":1,"188":1,"191":2,"249":1,"266":1,"684":2,"701":1,"1409":1,"1411":3,"1412":3,"1416":3,"1423":5,"1430":12,"1431":3,"1435":1,"1446":1,"1499":2,"1506":2,"1565":1,"1654":1,"1933":2,"1938":1,"1949":1,"2378":1,"2397":1,"2413":1,"2739":1}}],["shifts",{"2":{"134":2,"1303":2,"1499":1,"1500":4,"1501":2,"1787":1,"1949":4,"2680":1}}],["shift",{"0":{"1303":1,"1409":2,"1410":1,"1412":1,"1413":1,"1415":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"1423":1,"1424":1,"1425":1,"1426":1,"1427":1,"1428":1,"1429":1,"1431":1,"1432":1,"1433":1,"1503":1,"2358":1,"2661":1,"2739":1},"1":{"1410":2,"1411":2,"1412":2,"1413":2,"1414":2,"1415":2,"1416":3,"1417":3,"1418":3,"1419":3,"1420":3,"1421":3,"1422":3,"1423":3,"1424":3,"1425":3,"1426":3,"1427":3,"1428":3,"1429":3,"1430":2,"1431":2,"1432":3,"1433":2,"1434":3,"1435":3,"1436":3},"2":{"49":1,"63":1,"99":1,"114":1,"134":4,"152":4,"176":1,"188":1,"191":1,"211":3,"222":2,"236":2,"255":1,"257":1,"258":1,"259":2,"291":1,"502":1,"546":1,"626":1,"701":1,"1274":1,"1284":9,"1290":1,"1299":9,"1300":11,"1303":7,"1336":2,"1364":2,"1370":1,"1385":4,"1409":1,"1410":2,"1411":10,"1412":5,"1413":1,"1414":4,"1415":3,"1416":7,"1417":1,"1418":2,"1419":1,"1420":1,"1421":1,"1422":1,"1423":10,"1425":1,"1429":1,"1430":7,"1431":9,"1432":3,"1433":1,"1434":12,"1435":4,"1436":1,"1442":1,"1445":2,"1446":3,"1499":2,"1500":9,"1501":4,"1503":10,"1506":3,"1511":1,"1523":1,"1529":1,"1530":1,"1564":1,"1565":1,"1566":1,"1568":2,"1582":1,"1651":2,"1654":1,"1655":2,"1656":1,"1663":2,"1665":5,"1666":2,"1673":1,"1674":2,"1675":6,"1677":1,"1817":1,"1929":3,"1932":2,"1933":5,"1938":4,"1948":10,"2034":10,"2108":4,"2109":6,"2110":6,"2111":1,"2113":4,"2141":1,"2170":1,"2182":1,"2184":1,"2203":1,"2305":1,"2355":4,"2356":2,"2358":13,"2364":1,"2373":11,"2374":10,"2376":10,"2377":10,"2382":6,"2384":1,"2390":4,"2397":1,"2398":1,"2410":16,"2411":2,"2450":2,"2490":4,"2491":4,"2512":4,"2572":2,"2651":1,"2661":3,"2680":6,"2686":1,"2731":6,"2732":3,"2737":2,"2738":1,"2739":3,"2749":1,"2754":2}}],["shore",{"2":{"2750":1}}],["shorting",{"2":{"2279":1,"2529":1}}],["shorts",{"2":{"2270":1,"2272":1}}],["shortcuts",{"0":{"1935":1},"2":{"1361":1,"1363":1,"1655":1,"1656":1,"1676":2,"1677":1,"1935":1,"1943":1,"2183":1,"2325":1,"2397":1,"2410":1,"2738":1}}],["shortcut",{"2":{"1302":1,"1303":1,"1567":2,"1813":1,"2100":1,"2101":1,"2137":1,"2144":1,"2458":1,"2657":1}}],["shortly",{"2":{"575":1,"1675":1,"2152":1}}],["shortest",{"2":{"1416":1}}],["shorted",{"2":{"510":1,"2529":1}}],["shorter",{"2":{"457":1,"1215":1,"1554":1,"1804":1,"2442":1}}],["shortened",{"2":{"202":1,"2632":1}}],["shorten",{"2":{"149":1,"1331":1}}],["shorthands",{"2":{"1953":1,"2058":1}}],["shorthand",{"2":{"199":1,"2479":1,"2614":1}}],["shortages",{"2":{"172":1}}],["short",{"2":{"114":1,"123":1,"134":1,"266":1,"462":1,"466":1,"468":1,"481":1,"540":1,"554":2,"556":1,"616":1,"623":1,"624":1,"660":2,"707":1,"1235":1,"1257":1,"1325":1,"1411":1,"1500":1,"1515":2,"1578":16,"1675":3,"1684":1,"1825":1,"1930":2,"2118":2,"2171":1,"2230":1,"2233":1,"2235":1,"2236":1,"2238":1,"2240":1,"2242":1,"2270":1,"2274":1,"2275":1,"2278":1,"2279":1,"2450":1,"2490":1,"2529":1,"2530":1,"2626":1,"2676":1}}],["shop",{"2":{"2335":1,"2712":1}}],["shooting",{"2":{"2279":1}}],["shot",{"0":{"1274":1,"1307":1,"2379":1,"2490":1,"2691":1},"1":{"2491":1},"2":{"93":1,"160":2,"188":1,"191":1,"194":1,"199":1,"231":1,"503":1,"505":1,"1274":1,"1300":11,"1307":1,"1335":1,"1446":3,"1500":2,"1503":2,"1654":2,"1864":2,"1865":1,"2156":1,"2367":1,"2379":7,"2383":1,"2490":14,"2491":7,"2691":1,"2737":1}}],["showcasing",{"2":{"2566":1}}],["showed",{"2":{"1436":1}}],["shows",{"2":{"300":1,"315":1,"416":1,"523":1,"524":1,"556":1,"1343":1,"1344":1,"1663":1,"1668":1,"2262":2,"2531":1,"2548":1}}],["shown",{"2":{"134":1,"156":1,"506":1,"635":1,"669":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1132":1,"1133":1,"1148":1,"1268":1,"1597":1,"1601":1,"1605":1,"1658":1,"2045":1,"2147":1,"2148":1,"2268":2,"2490":1,"2595":1,"2728":1,"2735":1}}],["show",{"2":{"83":1,"114":1,"119":1,"176":1,"230":1,"254":1,"375":4,"378":4,"393":1,"394":1,"395":1,"396":2,"402":1,"403":1,"411":1,"433":1,"588":1,"1236":1,"1287":1,"1593":1,"1597":1,"1601":1,"1860":1,"2041":1,"2150":1,"2262":2,"2309":1,"2311":2,"2398":1,"2411":1,"2467":1,"2477":1,"2508":1,"2548":1,"2556":1,"2575":3}}],["showing",{"2":{"70":1,"77":1,"506":1,"1236":1,"1325":1,"2041":1,"2492":1,"2503":1,"2620":1}}],["shouldn",{"2":{"501":1,"575":1,"1287":1,"1312":1,"1439":1,"1824":1,"2128":1,"2273":1,"2566":1}}],["should",{"2":{"3":1,"6":1,"10":2,"11":1,"15":1,"17":1,"49":1,"70":1,"103":1,"125":1,"126":1,"131":2,"156":1,"157":2,"167":1,"182":1,"185":2,"194":1,"198":1,"201":7,"206":1,"234":1,"236":1,"240":1,"245":1,"249":1,"254":1,"268":1,"271":1,"275":1,"278":1,"282":3,"291":1,"303":1,"306":1,"315":3,"319":1,"321":1,"324":1,"332":2,"334":1,"336":1,"341":3,"357":1,"361":1,"407":1,"411":1,"432":2,"434":2,"435":3,"441":1,"447":1,"453":1,"457":2,"460":1,"462":1,"466":2,"468":1,"472":1,"473":1,"476":1,"478":1,"482":1,"498":1,"517":1,"529":6,"530":1,"555":1,"556":3,"559":1,"560":5,"568":1,"571":1,"573":1,"574":1,"580":3,"581":1,"584":1,"585":1,"586":1,"588":1,"597":1,"598":2,"600":1,"609":1,"616":1,"617":2,"622":1,"623":1,"626":1,"627":2,"628":1,"646":1,"660":2,"673":1,"689":1,"691":1,"697":1,"701":1,"726":1,"738":1,"764":1,"796":1,"826":1,"861":1,"895":1,"929":1,"963":1,"997":1,"1031":1,"1065":1,"1099":1,"1121":1,"1128":1,"1132":1,"1133":1,"1152":1,"1177":1,"1236":1,"1237":1,"1238":1,"1242":1,"1243":2,"1258":2,"1266":1,"1271":1,"1284":1,"1292":1,"1314":1,"1326":1,"1332":1,"1339":2,"1346":1,"1348":1,"1351":1,"1359":1,"1379":1,"1380":1,"1385":2,"1393":1,"1396":1,"1404":1,"1416":1,"1423":1,"1435":1,"1440":1,"1445":1,"1446":2,"1457":1,"1469":1,"1499":1,"1501":1,"1506":3,"1518":3,"1519":3,"1548":1,"1551":3,"1553":1,"1554":1,"1559":1,"1561":2,"1596":1,"1633":1,"1670":1,"1715":1,"1723":1,"1817":1,"1850":1,"1852":1,"1873":2,"1874":1,"1877":1,"1880":1,"1922":1,"1944":1,"1948":1,"2032":1,"2034":1,"2037":1,"2065":1,"2071":1,"2118":1,"2120":1,"2128":1,"2130":2,"2149":1,"2150":1,"2152":1,"2162":1,"2169":1,"2243":1,"2262":2,"2273":4,"2276":1,"2277":1,"2279":2,"2295":1,"2296":3,"2297":1,"2299":1,"2302":6,"2305":1,"2306":1,"2309":3,"2311":3,"2330":1,"2332":1,"2334":1,"2347":2,"2349":1,"2353":2,"2409":1,"2422":1,"2425":1,"2427":1,"2441":1,"2450":1,"2457":1,"2460":1,"2464":1,"2466":1,"2469":2,"2475":1,"2479":1,"2506":2,"2508":1,"2513":5,"2517":3,"2519":3,"2526":1,"2530":1,"2550":1,"2551":1,"2553":1,"2556":2,"2557":1,"2561":1,"2564":4,"2565":3,"2566":19,"2567":8,"2570":1,"2574":1,"2576":2,"2577":6,"2592":1,"2596":2,"2598":1,"2600":1,"2605":1,"2679":1,"2686":3,"2699":2,"2705":1,"2723":2,"2725":1,"2728":1,"2752":2,"2755":1,"2757":1}}],["sabayon",{"2":{"2431":1,"2464":1}}],["sasha",{"2":{"2270":1,"2281":1}}],["sag",{"2":{"1300":1}}],["sagr",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["sa",{"2":{"1300":1,"1665":2}}],["salt",{"2":{"2237":1,"2305":1}}],["sall",{"2":{"2106":1}}],["salad",{"2":{"1287":1}}],["salicylic",{"2":{"143":13,"149":2,"211":1}}],["sake",{"2":{"1269":1}}],["sanitisation",{"2":{"1445":1}}],["sanitise",{"2":{"1445":1}}],["sane",{"2":{"659":2}}],["sango",{"2":{"249":1}}],["sacrifices",{"2":{"659":1}}],["says",{"2":{"2255":1,"2450":1,"2752":1}}],["saying",{"2":{"545":1,"2468":1}}],["say",{"2":{"537":1,"1300":1,"1651":1,"2112":1,"2113":1,"2152":1,"2264":1,"2460":1,"2611":1,"2745":1}}],["said",{"2":{"1363":1}}],["sai",{"2":{"530":2,"1948":1,"2377":1}}],["saikoutype",{"2":{"249":1}}],["sadly",{"2":{"2468":1}}],["sad",{"2":{"530":2,"1948":1,"2377":1}}],["sawnsprojects",{"2":{"211":2,"249":1}}],["sauce",{"2":{"211":1}}],["saevus",{"2":{"211":1}}],["safemode",{"2":{"2347":1}}],["safest",{"2":{"1560":1}}],["safety",{"0":{"1287":1,"2166":1},"2":{"2128":1,"2166":1}}],["safe",{"2":{"199":1,"229":2,"534":1,"557":1,"570":3,"1359":3,"1375":1,"1385":5,"1792":1,"1830":1,"1858":1,"1859":1,"1878":1,"1935":1,"1943":1,"2437":2,"2728":1}}],["safely",{"2":{"31":1,"34":1,"240":1,"587":1,"1815":1,"2139":1,"2348":1,"2468":1,"2480":1}}],["saves",{"2":{"1842":1,"1855":1,"2480":2}}],["save",{"0":{"541":1},"2":{"249":1,"440":1,"503":1,"541":1,"589":1,"1332":1,"1384":1,"1406":1,"1451":1,"1515":1,"1655":1,"2039":1,"2128":1,"2277":1,"2349":1,"2429":2,"2436":1,"2437":1,"2457":2,"2474":1,"2477":1,"2480":1,"2506":1,"2511":1,"2705":1,"2710":1}}],["saved",{"2":{"131":1,"393":1,"394":1,"1243":1,"1332":1,"1495":1}}],["saving",{"2":{"131":1,"134":1,"582":3,"606":1,"2615":1}}],["savings",{"2":{"25":1,"2705":1}}],["sata",{"2":{"2118":1}}],["satan",{"2":{"370":2,"401":2,"2453":1}}],["satu",{"2":{"1559":1,"2034":1,"2376":1}}],["saturation",{"2":{"111":1,"114":1,"506":1,"1948":4,"1949":6,"1954":1,"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"1995":1,"2012":1,"2013":1,"2014":1,"2015":1,"2016":1,"2033":2,"2034":6,"2035":2,"2054":8,"2376":6,"2377":4,"2577":2,"2597":1,"2694":3,"2695":2}}],["satd",{"2":{"1559":1,"2034":1,"2376":1}}],["satisfied",{"2":{"541":1,"2728":1,"2729":1}}],["satisfaction75",{"2":{"134":2,"199":1,"249":1}}],["satellite",{"2":{"191":1,"211":1}}],["satt99",{"2":{"149":1}}],["satt",{"2":{"143":1,"149":1,"176":1}}],["sat",{"0":{"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"2054":1},"1":{"1995":1},"2":{"49":1,"183":2,"222":3,"292":1,"315":2,"506":1,"1949":12,"1954":1,"2035":2,"2039":1,"2054":4,"2057":2,"2299":2,"2577":11,"2694":1,"2695":2,"2711":3}}],["sampling",{"2":{"149":1,"641":2,"2226":1}}],["sampled",{"2":{"1326":1}}],["samples",{"2":{"659":2,"1393":1,"1401":1,"1633":1}}],["sample",{"2":{"31":1,"176":1,"222":1,"659":6,"660":4,"1181":4,"1393":6,"1401":4,"1415":1,"1439":1,"1646":1,"1907":1,"1910":3,"2226":6,"2323":1}}],["same",{"2":{"27":1,"45":2,"73":1,"157":1,"166":1,"169":1,"222":1,"234":1,"235":1,"279":1,"313":1,"401":1,"453":2,"462":1,"496":1,"511":2,"522":1,"529":2,"540":1,"541":1,"546":1,"597":1,"600":1,"607":1,"628":1,"635":1,"662":1,"688":1,"691":1,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1129":1,"1148":1,"1215":1,"1260":2,"1275":1,"1283":1,"1284":1,"1300":1,"1312":2,"1326":1,"1338":1,"1341":1,"1352":2,"1355":1,"1376":1,"1377":1,"1378":2,"1379":1,"1383":1,"1414":1,"1446":1,"1451":3,"1459":2,"1501":1,"1511":1,"1514":1,"1517":1,"1518":3,"1524":2,"1527":2,"1551":1,"1554":1,"1562":1,"1676":1,"1683":1,"1723":1,"1725":1,"1728":4,"1802":1,"1803":1,"1807":3,"1808":1,"1821":1,"1849":3,"1865":1,"1911":1,"1915":1,"1921":1,"1934":3,"1944":1,"1946":1,"1948":1,"1949":5,"2034":1,"2044":1,"2059":1,"2111":1,"2114":1,"2131":1,"2146":1,"2155":1,"2162":2,"2169":1,"2182":1,"2231":1,"2238":1,"2243":1,"2250":1,"2252":1,"2262":1,"2269":1,"2272":1,"2273":1,"2289":1,"2295":2,"2299":1,"2303":2,"2309":1,"2344":1,"2405":1,"2440":1,"2441":1,"2445":2,"2450":1,"2460":1,"2475":1,"2476":2,"2477":1,"2478":1,"2525":1,"2548":1,"2550":3,"2552":1,"2564":1,"2566":4,"2574":1,"2575":4,"2576":2,"2590":1,"2605":1,"2615":1,"2663":1,"2686":1,"2706":1,"2735":1,"2744":1,"2753":1}}],["sprintf",{"2":{"2705":2,"2710":2}}],["springgreen",{"2":{"1953":2,"2058":2}}],["spring",{"2":{"1577":1}}],["springs",{"2":{"1577":1}}],["spread",{"2":{"1950":2,"2317":1}}],["spreads",{"2":{"1950":1}}],["spruce",{"2":{"222":1}}],["splash",{"2":{"1728":3,"1949":6,"2711":2}}],["splaytoraid",{"2":{"266":1}}],["splicing",{"2":{"1399":1}}],["splinky",{"2":{"176":1,"2545":1}}],["splitting",{"0":{"354":1}}],["splitty",{"2":{"253":2}}],["split75",{"2":{"159":2}}],["splitreus62",{"2":{"143":2}}],["splitkb",{"2":{"102":1,"114":1,"134":2,"211":1,"222":1,"277":1}}],["split",{"0":{"30":1,"32":1,"35":1,"80":1,"107":1,"138":1,"508":1,"1496":1,"1558":1,"1852":1,"1854":1,"1860":1,"2114":1,"2271":1,"2543":1,"2697":1},"1":{"31":1,"36":1,"509":1,"510":1,"511":1,"1861":1,"1862":1,"2115":1,"2116":1,"2117":1,"2118":1,"2119":1,"2120":1,"2121":1,"2122":1,"2123":1,"2124":1,"2125":1,"2126":1,"2127":1,"2128":1,"2129":1,"2130":1,"2131":1,"2132":1,"2133":1,"2134":1},"2":{"30":3,"32":2,"45":3,"65":2,"70":28,"74":3,"80":1,"92":2,"93":4,"94":1,"107":7,"111":1,"112":10,"114":13,"134":4,"138":1,"143":8,"149":10,"160":3,"175":1,"176":15,"191":7,"199":3,"211":7,"222":9,"236":5,"249":4,"253":2,"259":5,"260":2,"266":8,"270":2,"277":11,"502":1,"506":6,"508":5,"509":8,"510":7,"511":26,"515":5,"611":2,"1121":2,"1126":2,"1127":1,"1134":1,"1316":1,"1317":1,"1319":2,"1321":1,"1330":1,"1346":1,"1352":3,"1405":1,"1496":3,"1547":1,"1558":3,"1714":2,"1730":3,"1816":2,"1817":1,"1842":1,"1845":1,"1849":1,"1851":1,"1852":1,"1854":1,"1860":1,"1879":1,"1954":3,"1958":2,"1959":2,"2032":2,"2035":2,"2042":4,"2044":2,"2060":1,"2114":4,"2118":2,"2121":1,"2122":2,"2124":1,"2125":3,"2126":10,"2127":1,"2128":5,"2129":21,"2130":4,"2131":14,"2132":3,"2133":2,"2134":2,"2140":2,"2157":1,"2225":1,"2232":3,"2234":3,"2241":3,"2246":2,"2248":2,"2263":9,"2271":2,"2284":1,"2303":1,"2370":2,"2396":2,"2543":1,"2559":1,"2566":1,"2567":1,"2672":1,"2688":2,"2694":4,"2695":2,"2697":5,"2725":1}}],["splits",{"2":{"18":1,"35":1,"114":1}}],["sponge",{"2":{"2272":1}}],["spots",{"2":{"546":1}}],["spot",{"2":{"251":1,"540":2,"592":1,"2408":1}}],["spooky",{"2":{"176":1}}],["sp111",{"2":{"211":1}}],["spc",{"2":{"195":1,"266":1,"313":2,"530":2,"1499":1,"1527":2,"2161":3,"2355":1,"2388":1,"2407":2,"2727":1,"2728":1,"2737":1,"2738":4}}],["spdx",{"2":{"2570":2}}],["spdu",{"2":{"1559":1,"1727":1,"2034":1,"2369":1,"2376":1}}],["spdd",{"2":{"1559":1,"1727":1,"2034":1,"2369":1,"2376":1}}],["spd",{"2":{"183":4,"222":1,"1730":1,"1948":1,"1951":1,"1954":1,"2035":1,"2377":1}}],["spacing",{"2":{"2437":1,"2565":1}}],["space+b",{"2":{"626":1}}],["spaces",{"0":{"546":1},"2":{"292":1,"416":1,"453":2,"455":1,"519":1,"521":1,"527":2,"2131":1,"2558":1,"2565":1,"2713":1,"2746":1}}],["spacebars",{"2":{"259":1}}],["spacebar",{"2":{"259":1,"2305":1,"2355":1,"2388":1,"2450":1}}],["spacey",{"0":{"255":1},"2":{"241":2,"255":1,"266":1}}],["spaceholdings",{"2":{"143":3,"149":2,"253":2,"266":1}}],["space",{"0":{"123":1,"2108":1,"2382":1,"2661":1},"1":{"2109":1,"2110":1,"2111":1,"2112":1,"2113":1},"2":{"49":2,"123":1,"124":3,"134":1,"143":8,"166":1,"176":3,"188":1,"189":1,"191":2,"203":1,"211":2,"249":1,"255":1,"259":1,"260":1,"486":1,"530":1,"546":2,"612":1,"660":1,"1336":1,"1384":1,"1403":1,"1406":1,"1441":1,"1451":1,"1499":1,"1500":1,"1554":1,"1584":1,"1655":1,"2037":1,"2108":1,"2110":7,"2111":1,"2112":3,"2113":3,"2149":1,"2161":2,"2182":1,"2197":1,"2226":1,"2228":1,"2355":1,"2382":8,"2388":1,"2411":1,"2428":1,"2514":1,"2578":1,"2661":1,"2702":1,"2709":2,"2710":2,"2711":1,"2724":1,"2749":1}}],["spaceman",{"2":{"37":4}}],["span",{"2":{"1921":1}}],["spanish",{"2":{"176":1,"249":1,"1355":3,"1499":1,"2703":9}}],["spamming",{"2":{"222":1,"2757":1}}],["spare",{"2":{"218":1,"1386":1}}],["sparkfun",{"0":{"271":1,"1318":1,"2335":1},"1":{"2336":1},"2":{"163":1,"176":1,"271":3,"277":1,"487":1,"684":3,"1311":1,"1315":4,"1491":2,"2329":1,"2331":1,"2335":3,"2344":4,"2541":2,"2712":1}}],["sp",{"2":{"134":1,"211":1}}],["spi0",{"2":{"2537":2}}],["spiral",{"2":{"1728":4,"1949":12,"2711":3}}],["spid0",{"2":{"2537":1,"2541":1}}],["spid2",{"2":{"1177":2}}],["spid1",{"2":{"1177":1,"1226":1,"2537":1}}],["spiderisland",{"2":{"143":1}}],["spidey3",{"2":{"74":1,"176":1,"191":1}}],["spi3",{"2":{"1177":1}}],["spi2",{"2":{"1177":4}}],["spi1",{"2":{"1177":2,"1226":2,"2537":2}}],["spinning",{"2":{"1728":3,"1948":1,"1949":9}}],["spins",{"2":{"1576":1}}],["spin",{"2":{"176":1}}],["spi",{"0":{"685":1,"690":1,"694":1,"1174":1,"1179":1,"1180":1,"1183":2,"1186":2,"1188":2,"1191":2,"1194":1,"1223":1,"1226":1,"1492":1,"1819":1,"2537":1},"1":{"1175":1,"1176":1,"1177":1,"1178":1,"1179":1,"1180":1,"1181":2,"1182":2,"1183":1,"1184":3,"1185":3,"1186":1,"1187":3,"1188":1,"1189":3,"1190":3,"1191":1,"1192":3,"1193":3,"1194":1,"1227":1,"1228":1},"2":{"93":1,"114":2,"118":2,"134":1,"149":2,"174":1,"176":9,"210":1,"232":1,"234":4,"236":5,"277":2,"664":1,"665":1,"666":4,"668":1,"681":3,"685":9,"688":2,"690":2,"693":1,"694":6,"1174":1,"1175":3,"1176":3,"1177":26,"1179":1,"1180":1,"1181":4,"1182":1,"1183":1,"1185":2,"1186":1,"1187":1,"1188":1,"1190":3,"1191":1,"1193":3,"1194":2,"1218":1,"1223":4,"1226":12,"1227":2,"1228":1,"1491":3,"1492":5,"1811":1,"1813":2,"1819":4,"1835":8,"1841":2,"1842":9,"1849":4,"1948":1,"1951":1,"2136":1,"2141":2,"2276":1,"2377":1,"2518":3,"2528":1,"2531":2,"2534":1,"2537":4,"2541":6,"2544":1,"2564":1,"2573":22,"2576":63,"2683":2,"2700":2}}],["spent",{"2":{"2745":1}}],["spend",{"2":{"173":1,"1438":1,"2569":1}}],["speaks",{"2":{"2146":1}}],["speak",{"2":{"2146":2}}],["speakers",{"2":{"655":1,"656":1,"1397":1,"2301":1}}],["speaker",{"2":{"655":3,"1386":1,"1387":3,"1388":1,"1390":2,"1394":1,"1396":1,"1397":1,"1399":5,"2074":1,"2231":2,"2238":2,"2528":1,"2530":2,"2676":3,"2693":2}}],["spelled",{"2":{"1441":1}}],["spelling",{"2":{"49":1,"92":1,"1361":2,"2144":1}}],["specially",{"2":{"1941":1}}],["specialized",{"2":{"493":1,"1220":1,"2346":1}}],["special",{"0":{"1277":1,"1291":1,"1417":1,"1429":1,"2395":1},"2":{"222":1,"423":1,"432":1,"505":1,"567":1,"587":1,"625":1,"707":1,"1176":1,"1197":1,"1212":1,"1335":1,"1386":1,"1403":1,"1415":1,"1416":2,"1417":1,"1418":1,"1423":1,"1440":1,"1445":1,"1654":1,"1733":1,"1857":1,"1957":1,"2031":1,"2073":1,"2149":1,"2182":1,"2276":1,"2329":1,"2333":1,"2402":1,"2407":1,"2450":2,"2515":1,"2566":1,"2571":1,"2606":1,"2627":1,"2661":1,"2727":1,"2728":1}}],["specifed",{"2":{"1341":6}}],["specifying",{"2":{"76":1,"87":1,"103":1,"118":1,"126":1,"166":1,"170":2,"211":1,"246":1,"247":1,"279":1,"414":1,"474":1,"689":2,"1336":2,"1369":1,"2252":1,"2454":1,"2575":1}}],["specify",{"2":{"55":1,"87":1,"134":1,"169":1,"184":1,"201":1,"234":1,"313":1,"371":1,"418":1,"430":1,"474":1,"505":1,"511":2,"513":2,"611":1,"1129":1,"1136":1,"1287":1,"1332":1,"1349":1,"1440":1,"1495":2,"1525":1,"1558":1,"1573":1,"1722":1,"1820":1,"1832":1,"1838":2,"2044":1,"2059":1,"2131":3,"2160":1,"2161":1,"2262":1,"2263":1,"2264":1,"2295":1,"2347":1,"2422":1,"2425":1,"2454":1,"2479":1,"2530":1,"2539":1,"2557":2,"2575":7,"2593":1,"2757":1}}],["specifig",{"2":{"1906":1}}],["specifiers",{"2":{"2705":1}}],["specifies",{"2":{"1326":1,"1662":1,"1665":1,"1847":1,"2262":1,"2566":1,"2596":2,"2671":1}}],["specified",{"0":{"141":1},"2":{"49":1,"58":1,"70":14,"109":1,"149":1,"184":1,"371":2,"383":1,"384":1,"400":1,"506":1,"513":2,"596":1,"638":2,"639":3,"684":2,"685":1,"694":5,"1221":1,"1326":1,"1341":6,"1357":1,"1361":1,"1558":1,"1603":1,"1659":1,"1729":1,"1822":1,"1933":1,"1952":1,"2044":2,"2124":1,"2143":1,"2152":1,"2161":2,"2183":1,"2226":2,"2245":1,"2247":1,"2249":1,"2262":6,"2299":1,"2347":1,"2398":1,"2411":2,"2454":2,"2468":1,"2491":1,"2513":2,"2566":1,"2575":7,"2576":3,"2587":1,"2590":1,"2593":1,"2673":2,"2686":1}}],["specifics",{"2":{"654":1,"1227":1,"1243":1}}],["specifications",{"2":{"1838":2}}],["specification",{"0":{"1792":1,"1796":1},"2":{"169":1,"182":1,"184":1,"1272":1,"1791":1,"1921":1,"2321":1,"2571":1}}],["specifically",{"2":{"107":1,"2269":1,"2485":1,"2548":1,"2585":1,"2592":1,"2740":1}}],["specific",{"0":{"1381":1,"2276":1,"2701":1},"1":{"2702":1,"2703":1},"2":{"5":1,"21":1,"49":1,"74":2,"77":1,"94":1,"113":1,"114":2,"118":1,"124":1,"133":3,"134":3,"176":2,"191":2,"199":1,"211":2,"324":1,"370":1,"374":1,"400":1,"457":1,"508":1,"552":1,"609":1,"626":1,"636":1,"641":1,"661":1,"687":1,"697":1,"703":1,"726":1,"1134":1,"1280":1,"1300":2,"1316":1,"1317":1,"1351":1,"1377":1,"1379":1,"1385":3,"1402":1,"1576":1,"1577":2,"1579":1,"1581":1,"1651":1,"1670":1,"1729":1,"1822":2,"1824":2,"1838":1,"1850":1,"1865":1,"1908":1,"1948":1,"1952":1,"1959":1,"2034":1,"2075":1,"2114":1,"2143":1,"2162":1,"2169":1,"2230":1,"2246":1,"2248":1,"2259":2,"2262":1,"2263":1,"2280":1,"2304":1,"2326":1,"2327":1,"2450":1,"2502":1,"2513":1,"2535":1,"2564":1,"2565":3,"2566":4,"2577":2,"2581":1,"2583":1,"2601":1,"2603":1,"2612":1,"2616":2,"2671":3,"2701":1,"2703":1,"2711":1,"2728":1,"2744":1,"2749":1,"2754":1}}],["specs",{"2":{"114":1}}],["spec",{"2":{"114":1,"533":1,"1714":1,"1855":4,"2120":1,"2701":1}}],["speeds",{"2":{"511":1,"1798":1,"1802":2,"1805":3,"1806":2,"1822":1,"2040":1,"2064":1}}],["speedo",{"0":{"56":1},"2":{"56":6}}],["speed",{"0":{"1763":1,"1764":1,"1765":1,"1766":1,"1767":2,"1769":2,"1771":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":2,"2008":2,"2010":1,"2040":1,"2055":1},"1":{"1768":2,"1770":2,"1772":1,"2007":2,"2009":2,"2011":1},"2":{"49":3,"112":2,"114":1,"198":1,"222":1,"370":1,"502":1,"507":1,"511":4,"704":1,"1136":4,"1181":2,"1223":1,"1326":1,"1385":1,"1400":1,"1403":1,"1727":4,"1728":2,"1730":1,"1763":1,"1764":1,"1765":1,"1766":1,"1767":1,"1768":2,"1769":1,"1770":2,"1771":1,"1772":1,"1793":4,"1802":6,"1803":8,"1804":14,"1805":12,"1806":4,"1807":5,"1817":1,"1822":3,"1835":2,"1836":2,"1842":2,"1849":3,"1859":2,"1911":1,"1948":4,"1949":5,"1951":1,"1954":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2007":2,"2008":1,"2009":2,"2010":1,"2011":1,"2034":6,"2035":1,"2055":12,"2057":2,"2062":2,"2063":2,"2064":1,"2105":1,"2128":2,"2129":1,"2320":1,"2348":1,"2355":1,"2369":4,"2371":4,"2376":6,"2377":4,"2688":4,"2690":1,"2694":2,"2695":4,"2697":2}}],["stsw",{"2":{"2351":1}}],["stk500v1",{"2":{"2331":1}}],["stk500",{"2":{"2331":1}}],["st4",{"2":{"2153":1}}],["st3",{"2":{"2153":1}}],["st2",{"2":{"2153":1}}],["st1",{"2":{"2153":1}}],["st110r2",{"2":{"249":1}}],["stn",{"2":{"2152":5,"2153":113}}],["stmc",{"2":{"1319":2}}],["stm",{"2":{"1319":1}}],["stmicroelectronics",{"0":{"489":1},"2":{"331":1}}],["stm32cubemx",{"2":{"1227":1}}],["stm32s",{"2":{"661":1}}],["stm32h733",{"2":{"489":1}}],["stm32h723",{"2":{"222":1,"489":1}}],["stm32duino",{"0":{"2242":1,"2350":1},"1":{"2351":1,"2352":1,"2353":1},"2":{"114":1,"489":1,"629":1,"2240":1,"2242":2,"2350":1}}],["stm32f2",{"2":{"1396":1}}],["stm32f2xx",{"2":{"704":1}}],["stm32f7xx",{"2":{"705":1}}],["stm32f070",{"2":{"692":1}}],["stm32f072xb",{"2":{"681":1}}],["stm32f072",{"0":{"1141":1},"2":{"50":1,"191":1,"692":1}}],["stm32f042",{"2":{"692":1,"2240":1}}],["stm32f0",{"2":{"639":1}}],["stm32f0x2",{"2":{"489":1}}],["stm32f0xx",{"2":{"199":1,"635":1,"688":1,"692":1,"705":1}}],["stm32f1x",{"2":{"2353":2}}],["stm32f1xx",{"2":{"93":1,"635":2,"681":1,"704":1,"1390":1,"1394":1,"1396":1}}],["stm32f103c8",{"2":{"656":1,"661":2,"663":1}}],["stm32f103c6",{"2":{"176":1}}],["stm32f103x",{"2":{"635":1}}],["stm32f103",{"0":{"1142":1},"2":{"199":1,"489":1,"495":1,"1127":1,"1129":1,"1130":1,"1142":1,"2240":1,"2242":1,"2327":1,"2350":1,"2353":1}}],["stm32f3discovery",{"2":{"335":2}}],["stm32f303xc",{"2":{"2269":1,"2527":1,"2548":2}}],["stm32f303xe",{"2":{"160":1}}],["stm32f303",{"0":{"1140":1},"2":{"385":1,"489":1,"495":1,"703":1,"1129":1,"1177":1,"1198":1,"1469":1,"1573":1,"2513":2,"2530":1,"2553":1}}],["stm32f303cct6",{"2":{"663":1,"2528":1}}],["stm32f303cc",{"2":{"331":1}}],["stm32f3",{"2":{"222":1,"331":2,"335":1,"639":1}}],["stm32f3xx",{"2":{"93":1,"635":1,"681":1,"705":1}}],["stm32f4x1",{"0":{"2514":1},"1":{"2515":1,"2516":1,"2517":1,"2518":1,"2519":1,"2520":1,"2521":1,"2522":1},"2":{"688":1,"692":1}}],["stm32f4xx",{"2":{"93":1,"635":2,"704":1}}],["stm32f411",{"2":{"374":2,"489":1,"692":1}}],["stm32f407",{"2":{"489":1}}],["stm32f407x",{"2":{"114":1}}],["stm32f405vg",{"2":{"663":1}}],["stm32f405",{"2":{"489":1}}],["stm32f405rg",{"2":{"277":1}}],["stm32f401",{"2":{"489":1,"692":1}}],["stm32f446",{"2":{"93":1,"489":1}}],["stm32l1xx",{"2":{"681":1,"704":1}}],["stm32l073rz",{"2":{"2566":1}}],["stm32l072",{"2":{"2550":1}}],["stm32l0",{"2":{"683":1}}],["stm32l0xx",{"2":{"681":1,"704":1}}],["stm32l082kz",{"2":{"2566":1}}],["stm32l082",{"2":{"49":1,"2550":1}}],["stm32l443",{"2":{"489":1}}],["stm32l442",{"2":{"145":1,"149":1,"489":1}}],["stm32l422",{"2":{"489":1}}],["stm32l422xb",{"2":{"114":1}}],["stm32l412",{"2":{"489":1}}],["stm32l412xb",{"2":{"114":1}}],["stm32l4xx",{"2":{"249":1,"705":1}}],["stm32l432",{"2":{"145":1,"149":1,"236":1,"489":1}}],["stm32l433",{"2":{"93":1,"489":1}}],["stm32l4+",{"2":{"49":1}}],["stm32g431",{"2":{"77":1,"489":1}}],["stm32g4xx",{"2":{"74":1,"249":1}}],["stm32g474",{"2":{"49":1,"77":1,"489":1}}],["stm32g4",{"2":{"49":1}}],["stm32",{"0":{"489":1,"635":1,"683":1,"1139":1,"2240":1,"2548":1,"2549":1,"2550":1,"2551":1},"1":{"1140":1,"1141":1,"1142":1,"2241":1},"2":{"49":4,"50":2,"65":1,"114":1,"131":1,"133":1,"134":5,"176":3,"211":1,"222":1,"277":1,"629":2,"656":1,"657":10,"658":6,"661":2,"683":1,"697":1,"703":7,"707":4,"1127":2,"1129":1,"1130":2,"1132":4,"1133":4,"1177":3,"1198":3,"1226":3,"1227":1,"1230":6,"1316":1,"1390":2,"1396":1,"1469":3,"1470":3,"1632":1,"1821":1,"2240":3,"2241":1,"2243":1,"2327":1,"2350":1,"2353":1,"2450":1,"2524":8,"2530":1,"2546":1,"2548":8,"2549":2,"2550":2,"2673":1,"2683":1}}],["stylus",{"2":{"1531":1,"1842":1}}],["styling",{"0":{"287":1},"1":{"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1},"2":{"243":1,"279":1}}],["styled",{"0":{"618":1},"1":{"619":1,"620":1},"2":{"618":1}}],["styles",{"2":{"468":1,"555":1,"560":1,"1234":1,"2750":1}}],["style=file",{"2":{"454":1}}],["style",{"0":{"243":1},"2":{"133":1,"134":1,"176":1,"199":1,"243":1,"265":1,"279":2,"432":1,"433":6,"435":2,"436":2,"438":2,"439":2,"453":9,"455":1,"456":1,"467":1,"470":2,"555":1,"560":2,"615":1,"1845":1,"2172":1,"2344":1,"2506":2}}],["st7789",{"2":{"2573":2,"2576":8}}],["st7735",{"2":{"176":1,"236":1,"2573":2,"2576":8}}],["st7565p",{"2":{"2136":1}}],["st7565r",{"2":{"2136":1}}],["st7565",{"0":{"2135":1},"1":{"2136":1,"2137":1,"2138":1,"2139":1,"2140":1,"2141":1,"2142":1,"2143":1},"2":{"114":5,"191":1,"511":2,"2129":2,"2136":1,"2137":11,"2138":1,"2139":4,"2140":3,"2141":13,"2142":11,"2143":39,"2697":2}}],["std",{"2":{"704":1}}],["stdlayout",{"2":{"358":1}}],["stderr",{"2":{"316":1,"2755":1}}],["stdout",{"2":{"316":1}}],["stdint",{"2":{"176":1}}],["stdbool",{"2":{"73":1}}],["stilgar",{"2":{"2270":1}}],["still",{"2":{"16":1,"124":2,"125":1,"156":1,"170":1,"185":1,"191":2,"203":1,"228":3,"232":1,"241":1,"253":1,"270":1,"273":1,"278":1,"308":1,"361":1,"435":1,"454":1,"467":1,"504":1,"510":1,"684":1,"692":1,"1243":1,"1284":1,"1288":1,"1303":2,"1385":1,"1403":1,"1404":1,"1412":1,"1416":1,"1446":1,"1555":1,"1562":1,"1582":3,"1659":1,"1674":2,"1684":1,"1923":1,"2112":1,"2152":1,"2161":1,"2169":3,"2273":2,"2311":1,"2441":3,"2455":1,"2475":1,"2577":1,"2670":1,"2701":1,"2705":1,"2712":1,"2721":1,"2726":1,"2728":2,"2729":1,"2735":1}}],["sticky",{"2":{"2280":1,"2490":1,"2654":1}}],["stick",{"2":{"1346":1,"1401":1,"1836":1}}],["stickandgum",{"2":{"114":1}}],["steve",{"2":{"2108":1,"2750":1}}],["stef9998",{"2":{"253":2}}],["steadily",{"2":{"251":1}}],["steal",{"2":{"143":2}}],["stello65",{"2":{"211":1}}],["stella",{"2":{"143":2}}],["stemcell",{"0":{"1319":1,"1323":2},"2":{"176":1,"1311":2,"1315":4,"1319":3,"1322":4,"1323":1,"2712":1}}],["stenographers",{"2":{"2144":1}}],["stenography",{"0":{"2144":1,"2151":1,"2698":1},"1":{"2145":1,"2146":1,"2147":1,"2148":1,"2149":1,"2150":1,"2151":1,"2152":1,"2153":1},"2":{"2144":2,"2146":2,"2148":1,"2149":2,"2150":2,"2151":1,"2698":3,"2725":1}}],["stenotype",{"2":{"1943":1,"2150":1}}],["stenothe",{"2":{"197":1}}],["steno",{"0":{"2146":1,"2150":1},"1":{"2147":1,"2148":1,"2149":1},"2":{"114":1,"176":4,"199":1,"231":3,"236":1,"249":1,"2063":1,"2144":2,"2145":1,"2146":5,"2147":4,"2148":2,"2149":10,"2150":4,"2151":1,"2152":13,"2153":2,"2698":1,"2749":1}}],["stepping",{"2":{"194":1,"1406":2}}],["steps",{"0":{"543":1},"2":{"111":3,"191":1,"211":1,"222":2,"231":1,"255":1,"536":1,"574":1,"1124":1,"1127":1,"1130":1,"1132":1,"1133":1,"1310":1,"1330":1,"1406":1,"1803":1,"1805":8,"1812":1,"1827":1,"2035":3,"2038":2,"2040":6,"2063":1,"2103":2,"2104":1,"2105":2,"2106":4,"2107":6,"2137":1,"2421":1,"2437":1,"2438":1,"2455":1,"2475":1,"2497":1,"2688":4,"2694":6,"2695":8,"2718":1,"2753":1}}],["step",{"0":{"536":2,"537":1,"538":1,"539":1,"540":1,"541":1,"542":1,"1476":1,"1751":1,"1752":1,"1753":1,"1754":1,"1978":1,"1979":1,"1980":1,"1981":1,"2103":1,"2190":1,"2191":1},"1":{"537":2,"538":2,"539":2,"540":2,"541":2,"542":2,"543":2},"2":{"49":1,"63":1,"222":2,"292":2,"313":1,"506":6,"570":1,"606":1,"1127":2,"1130":2,"1435":2,"1456":2,"1573":3,"1729":2,"1802":2,"1803":2,"1804":2,"1808":2,"1950":1,"1952":2,"2035":3,"2038":2,"2039":2,"2052":4,"2102":1,"2104":1,"2106":4,"2107":16,"2171":1,"2255":1,"2268":1,"2281":2,"2299":6,"2341":1,"2349":1,"2360":2,"2408":1,"2422":1,"2424":1,"2427":2,"2430":1,"2436":1,"2437":1,"2439":1,"2475":1,"2481":1,"2497":2,"2548":1,"2705":1,"2749":1}}],["story",{"2":{"453":1,"455":1}}],["stores",{"2":{"688":1,"1303":1,"1326":1,"1451":1,"2748":1}}],["store",{"2":{"436":1,"519":2,"554":1,"588":2,"689":1,"690":1,"691":1,"1303":1,"1331":1,"1332":1,"1438":1,"1553":1,"1830":4,"1859":1,"2112":1,"2428":1,"2441":1,"2445":2,"2446":1,"2544":1,"2757":1}}],["stored",{"0":{"2444":1},"2":{"228":2,"431":1,"510":1,"1270":1,"1300":1,"1331":1,"1439":1,"1446":1,"1451":1,"1530":1,"1594":1,"1794":1,"1821":1,"1830":1,"2149":1,"2181":1,"2303":1,"2401":1,"2428":1,"2441":1,"2452":1,"2574":1}}],["storing",{"2":{"224":1,"1438":1,"1451":1,"2441":1}}],["storage",{"0":{"1731":1,"1955":1,"2610":1},"2":{"93":1,"131":1,"304":1,"686":1,"688":1,"689":2,"690":1,"691":3,"692":1,"2126":1,"2252":1,"2506":1,"2539":1,"2574":1,"2610":1,"2683":1}}],["stone",{"2":{"194":1}}],["stock",{"2":{"114":1,"318":1,"509":1,"510":1,"2126":1,"2565":1,"2712":1}}],["stopped",{"2":{"592":2,"1556":1,"2577":1}}],["stopping",{"2":{"211":1,"515":1,"589":1,"654":1,"1340":1,"1578":1}}],["stops",{"2":{"529":1,"1298":1,"1499":1,"1803":1,"1804":2,"1807":2,"1822":1,"2054":8,"2226":1,"2403":1,"2577":1,"2582":1}}],["stop",{"0":{"1194":1,"2472":1},"2":{"74":1,"134":1,"160":1,"176":1,"222":1,"277":1,"660":1,"1403":2,"1448":1,"1506":1,"1553":2,"1793":1,"1807":1,"1907":1,"2044":1,"2051":2,"2106":1,"2107":1,"2131":1,"2150":1,"2280":1,"2355":6,"2363":1,"2370":1,"2371":1,"2392":2,"2393":4,"2396":1,"2577":6}}],["sturdy",{"2":{"2273":1,"2274":1}}],["stumbled",{"2":{"545":1}}],["stub",{"2":{"236":1}}],["stubs",{"2":{"114":1,"2751":1}}],["stuck",{"0":{"1275":1},"2":{"211":1,"222":1,"263":1,"1275":1,"1404":1,"1873":1}}],["studiokestra",{"2":{"226":2}}],["studios",{"2":{"211":1}}],["studio",{"0":{"2503":1,"2513":1},"2":{"67":3,"132":1,"207":4,"211":16,"249":1,"2503":1,"2506":1,"2513":1}}],["stuff",{"2":{"50":2,"114":1,"231":2,"575":1,"578":1,"1376":2,"1377":2,"1511":1,"2262":1,"2405":1,"2705":1}}],["stlink",{"2":{"49":1,"2241":1,"2351":3,"2353":3}}],["st",{"2":{"49":1,"266":1,"327":2,"1403":2,"1469":1,"2241":6,"2350":1,"2351":3,"2352":2,"2353":7,"2566":1,"2622":1}}],["stapelberg",{"2":{"2502":2}}],["stay",{"2":{"2344":1}}],["staying",{"2":{"2276":1}}],["stays",{"2":{"199":1,"1332":1,"1411":1,"1573":1}}],["staging",{"2":{"2480":2}}],["staggering",{"2":{"1384":1}}],["staggered",{"2":{"211":1,"2274":1}}],["stage2",{"2":{"176":1}}],["stage",{"0":{"2544":1},"2":{"119":1,"156":1,"2513":1,"2523":1,"2526":1,"2544":1}}],["stabilisers",{"2":{"2266":1,"2267":1}}],["stability",{"0":{"1827":1},"2":{"1562":1}}],["stabilizes",{"2":{"1827":1}}],["stabilize",{"2":{"176":1,"191":1}}],["stable",{"2":{"211":1,"350":1,"1827":2}}],["stackexchange",{"2":{"1471":1}}],["stacked",{"2":{"222":1}}],["stacktrace",{"2":{"466":1}}],["stack",{"2":{"199":2,"222":1,"302":2,"487":1,"504":1,"1334":1,"1335":2,"1340":1,"1869":1,"1873":2,"1877":2,"1880":3,"2150":1,"2172":1,"2401":1,"2403":1,"2496":1}}],["stale",{"2":{"191":1}}],["stands",{"2":{"2533":1}}],["stand",{"2":{"1249":1}}],["standpoint",{"2":{"569":1,"1265":2}}],["standing",{"2":{"154":1}}],["standalone",{"2":{"643":1,"665":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1175":1,"1196":1,"1213":1}}],["standaside",{"2":{"143":2,"149":1}}],["standards",{"2":{"244":1,"266":1,"1121":1,"1265":1,"1346":1,"2566":1,"2719":1}}],["standardisation",{"2":{"238":1}}],["standardised",{"2":{"198":1,"2573":1}}],["standardise",{"2":{"149":1,"182":1}}],["standardizing",{"2":{"557":1}}],["standardization",{"2":{"236":1,"266":2}}],["standardized",{"2":{"134":1}}],["standard",{"2":{"125":2,"134":1,"163":1,"176":3,"185":2,"191":1,"199":1,"220":2,"266":1,"431":1,"454":1,"457":1,"479":1,"508":1,"515":2,"697":1,"1177":1,"1268":1,"1403":3,"1654":1,"1673":1,"1674":1,"1675":1,"1720":2,"1842":1,"1864":1,"2144":1,"2145":2,"2146":2,"2148":1,"2177":1,"2262":1,"2263":2,"2331":1,"2397":1,"2512":1,"2545":1,"2566":4,"2571":1,"2577":1,"2581":1,"2619":1,"2624":1,"2657":2,"2658":1,"2705":1}}],["star",{"2":{"629":1,"1686":2,"2233":1,"2344":1}}],["starlight",{"2":{"236":1,"277":1,"1949":9}}],["staryu",{"2":{"102":2}}],["started",{"0":{"1656":1,"2314":1},"2":{"524":1,"557":1,"574":1,"575":1,"578":1,"624":2,"1235":1,"1257":1,"1258":1,"1265":1,"1338":1,"1520":1,"1521":1,"1822":1,"2317":1,"2424":1,"2429":1,"2457":1,"2494":1,"2498":1,"2504":1,"2553":1,"2577":1,"2615":1,"2743":1}}],["start=none",{"2":{"465":1}}],["starting",{"0":{"2267":1},"2":{"119":1,"453":1,"587":1,"654":1,"1397":1,"1406":1,"1438":1,"1451":1,"1684":1,"1817":1,"2042":2,"2125":1,"2141":1,"2169":1,"2273":1,"2292":1,"2353":2,"2494":1,"2504":1,"2553":1,"2577":1,"2587":1,"2594":1,"2699":1,"2706":1}}],["start",{"0":{"1180":1,"1258":1,"1689":1,"1691":1,"2196":1,"2211":1,"2250":1},"1":{"1181":1,"1182":1,"2251":1,"2252":1,"2253":1,"2254":1},"2":{"50":1,"75":1,"132":1,"191":3,"196":1,"198":1,"211":1,"277":1,"291":1,"321":1,"350":5,"389":1,"390":1,"391":1,"430":1,"453":2,"462":1,"465":7,"485":1,"505":1,"517":1,"559":1,"609":1,"616":1,"624":1,"628":1,"1127":1,"1130":1,"1176":1,"1177":2,"1180":1,"1194":1,"1250":1,"1258":1,"1262":1,"1344":3,"1377":1,"1403":1,"1405":1,"1416":1,"1452":1,"1553":5,"1554":1,"1556":2,"1605":1,"1680":2,"1684":1,"1686":4,"1817":1,"1822":7,"1836":1,"1874":1,"1921":1,"2038":2,"2051":4,"2102":1,"2104":1,"2106":1,"2107":1,"2141":1,"2143":5,"2147":1,"2182":1,"2252":1,"2255":1,"2267":1,"2272":1,"2277":1,"2311":1,"2363":4,"2420":1,"2423":1,"2427":1,"2452":1,"2460":1,"2469":1,"2477":2,"2478":1,"2490":1,"2496":1,"2508":1,"2512":2,"2513":1,"2524":1,"2539":1,"2553":1,"2587":1,"2594":1,"2595":1,"2596":1,"2612":1,"2724":1,"2743":1,"2757":1}}],["startup",{"0":{"2743":1},"2":{"49":1,"65":1,"112":1,"114":1,"134":1,"183":8,"191":3,"266":1,"504":1,"515":2,"574":2,"575":1,"1398":3,"1399":4,"1464":1,"1579":1,"1825":1,"2131":1,"2183":1,"2498":1,"2679":1,"2699":2}}],["starts",{"2":{"49":1,"307":1,"402":1,"515":1,"1294":1,"1398":1,"1399":1,"1411":1,"1807":1,"1822":2,"1866":1,"2126":1,"2575":1,"2743":1}}],["stat",{"2":{"1851":1}}],["station",{"2":{"2133":2,"2266":1}}],["stating",{"2":{"352":1}}],["statically",{"2":{"2576":1}}],["static",{"2":{"50":1,"214":1,"292":1,"403":1,"520":1,"588":2,"1303":1,"1440":1,"1634":3,"1718":1,"1728":2,"1729":5,"1814":1,"1815":1,"1816":1,"1861":1,"1943":2,"1948":1,"1949":5,"1952":5,"2034":2,"2035":1,"2036":3,"2037":2,"2039":1,"2040":1,"2130":1,"2138":1,"2139":1,"2140":1,"2169":1,"2170":1,"2171":1,"2376":2,"2492":1,"2576":1,"2577":11,"2587":1,"2588":1,"2593":1,"2594":1,"2596":1,"2598":1,"2694":1,"2711":1}}],["statuses",{"2":{"315":1}}],["status",{"0":{"315":1,"708":1,"711":1,"714":1,"717":1,"720":1,"723":1,"726":1,"1183":1,"1186":1,"1188":1,"1191":1,"1449":1,"2045":1,"2402":1},"1":{"709":1,"710":1,"712":1,"713":1,"715":1,"716":1,"718":1,"719":1,"721":1,"722":1,"724":1,"725":1,"727":1,"728":1,"1184":1,"1185":1,"1187":1,"1189":1,"1190":1,"1192":1,"1193":1},"2":{"92":1,"149":1,"191":2,"199":2,"304":1,"305":1,"312":1,"315":2,"520":1,"521":1,"522":3,"523":2,"524":2,"525":2,"586":1,"710":3,"713":3,"716":3,"719":3,"722":3,"725":3,"728":3,"1185":2,"1187":1,"1190":3,"1193":3,"1252":1,"1303":3,"1329":2,"1332":2,"1344":1,"1384":1,"1439":1,"1442":1,"1443":1,"1526":2,"1530":2,"1570":4,"1813":2,"1816":1,"1851":1,"1874":1,"1880":1,"1959":1,"2041":1,"2057":1,"2129":6,"2137":2,"2140":1,"2147":1,"2359":1,"2370":1,"2379":1,"2396":1,"2402":1,"2490":1,"2531":1,"2539":1,"2697":2,"2704":1,"2744":2}}],["stats",{"2":{"50":1}}],["stateless",{"2":{"2686":1}}],["stated",{"2":{"2552":1}}],["state|default",{"2":{"1958":1}}],["state++",{"2":{"1729":1,"1952":1}}],["states",{"2":{"247":1,"587":1,"1284":1,"1325":1,"1548":1,"1638":1,"1855":1,"1899":1,"1901":1,"2170":2,"2171":1,"2477":1}}],["statement",{"0":{"231":1},"2":{"194":1,"236":1,"453":2,"459":1,"532":1,"1351":1,"1359":1,"1446":1,"1527":1,"2161":1,"2309":1,"2709":1}}],["statements",{"0":{"459":1},"2":{"160":1,"231":1,"457":1,"459":1,"461":1,"466":1,"469":1,"473":1,"476":1,"607":1,"2757":1}}],["state",{"0":{"14":1,"1300":1,"1343":1,"1345":1,"1458":1,"1507":1,"1515":1,"1719":1,"1721":1,"1774":1,"2019":1,"2605":2,"2748":1},"1":{"1301":1,"1302":1,"1303":1,"1722":1,"1775":1,"2020":1,"2606":2},"2":{"14":2,"31":1,"49":1,"50":1,"62":1,"63":1,"74":1,"93":1,"105":10,"112":1,"114":2,"149":3,"166":2,"176":2,"179":1,"199":2,"211":1,"247":1,"453":1,"502":3,"506":1,"511":7,"554":1,"566":2,"580":4,"597":1,"654":1,"656":7,"657":4,"658":1,"662":1,"684":1,"1134":1,"1221":1,"1278":1,"1284":7,"1300":9,"1303":9,"1325":1,"1326":1,"1329":7,"1332":10,"1338":1,"1341":37,"1343":6,"1344":7,"1345":9,"1364":1,"1383":18,"1398":1,"1399":2,"1408":1,"1409":1,"1411":2,"1412":1,"1416":3,"1431":1,"1434":1,"1452":3,"1457":3,"1458":2,"1471":1,"1483":1,"1488":1,"1503":1,"1507":1,"1515":1,"1519":1,"1525":1,"1526":2,"1534":4,"1536":1,"1537":3,"1549":7,"1573":1,"1637":1,"1638":1,"1642":1,"1644":1,"1670":1,"1714":7,"1715":2,"1716":4,"1717":7,"1718":8,"1719":5,"1720":1,"1721":1,"1726":1,"1729":3,"1730":1,"1736":1,"1738":1,"1740":1,"1741":1,"1749":1,"1752":1,"1754":1,"1758":1,"1760":1,"1764":1,"1766":1,"1769":1,"1774":1,"1775":1,"1809":1,"1813":6,"1815":1,"1816":1,"1855":1,"1859":7,"1861":6,"1873":12,"1874":2,"1876":10,"1877":12,"1886":1,"1888":1,"1890":1,"1892":1,"1894":1,"1939":2,"1943":1,"1947":1,"1952":3,"1954":1,"1958":6,"1959":6,"1963":1,"1965":1,"1967":1,"1968":1,"1976":1,"1979":1,"1981":1,"1985":1,"1987":1,"1991":1,"1993":1,"1997":1,"1999":1,"2003":1,"2005":1,"2008":1,"2014":1,"2019":1,"2020":1,"2041":1,"2043":23,"2044":3,"2053":2,"2056":2,"2066":1,"2067":1,"2069":1,"2129":9,"2137":6,"2139":1,"2140":1,"2161":1,"2162":4,"2166":4,"2167":10,"2168":7,"2169":40,"2170":29,"2171":35,"2203":1,"2301":1,"2357":1,"2358":1,"2370":1,"2396":1,"2402":8,"2477":2,"2481":1,"2490":1,"2491":3,"2519":1,"2577":2,"2605":3,"2606":17,"2674":2,"2676":4,"2677":4,"2680":1,"2685":2,"2688":1,"2689":2,"2694":1,"2695":1,"2696":1,"2697":7,"2708":2,"2745":1,"2746":1,"2748":2,"2757":4}}],["struggle",{"2":{"2655":1}}],["structs",{"2":{"236":1,"249":1,"2585":1,"2592":1}}],["struct",{"0":{"671":1,"736":1,"762":1,"794":1,"824":1,"859":1,"893":1,"927":1,"961":1,"995":1,"1029":1,"1063":1,"1097":1,"1150":1,"1536":1,"1637":1,"1639":1},"1":{"672":1,"737":1,"763":1,"795":1,"825":1,"860":1,"894":1,"928":1,"962":1,"996":1,"1030":1,"1064":1,"1098":1,"1151":1,"1537":1,"1638":1,"1640":1},"2":{"31":1,"236":1,"266":1,"1332":1,"1534":1,"1658":1,"1716":1,"1725":1,"1794":1,"1822":1,"1823":1,"1946":1,"2017":1,"2130":2,"2143":1,"2168":1,"2169":1,"2171":1,"2587":1,"2588":1,"2589":2,"2593":1,"2594":1,"2595":1,"2596":1,"2597":2,"2598":1,"2599":1}}],["structured",{"2":{"568":1,"1853":1,"1854":1}}],["structures",{"2":{"211":1,"499":1}}],["structure",{"0":{"2257":1,"2258":1,"2259":1,"2260":1,"2296":1},"1":{"2258":1,"2259":1,"2260":1,"2297":1,"2298":1,"2299":1,"2300":1,"2301":1,"2302":1},"2":{"22":1,"125":1,"185":1,"236":1,"481":1,"692":1,"704":1,"705":1,"1332":5,"1376":1,"1438":2,"1508":1,"1815":2,"1853":1,"1854":1,"1921":1,"2139":2,"2162":2,"2171":1,"2259":2,"2400":1,"2423":1,"2441":1,"2585":1,"2592":1,"2753":1}}],["stroke",{"2":{"2147":1,"2152":2}}],["strokes",{"2":{"2144":2,"2147":1,"2148":1,"2150":1}}],["stronger",{"2":{"2281":1}}],["strongly",{"2":{"182":1,"341":1,"1122":1,"1807":1,"2443":1,"2567":1}}],["strong",{"2":{"182":1,"341":2,"472":1,"478":1,"1578":10,"2065":1,"2272":1,"2279":1,"2566":1}}],["stress",{"2":{"1684":1}}],["strength",{"2":{"1572":2,"1580":1,"2519":1}}],["stretching",{"2":{"1410":1}}],["streamed",{"2":{"2577":1}}],["stream2",{"2":{"1230":1}}],["streampad",{"2":{"249":1}}],["stream",{"2":{"50":1,"114":1,"134":1,"1230":2,"1447":1,"1910":2}}],["streamline",{"2":{"50":1,"363":1}}],["streams",{"2":{"49":2}}],["strategies",{"2":{"2745":1}}],["strategy",{"2":{"2437":1}}],["stranded",{"2":{"2274":1}}],["strange",{"2":{"14":1}}],["straight",{"2":{"2252":1,"2272":1,"2277":1}}],["straightforward",{"2":{"355":1,"413":1,"436":1,"623":1,"1286":1,"2328":1,"2455":1}}],["strain",{"2":{"2144":1}}],["strapped",{"2":{"1821":1}}],["stray",{"2":{"199":1,"211":1}}],["str",{"0":{"2201":1},"1":{"2202":1},"2":{"160":1,"191":1,"612":1,"1363":4,"1447":1,"1448":4,"1578":8,"2153":4,"2202":1,"2577":3,"2705":3,"2710":5}}],["strives",{"2":{"2719":1}}],["strike",{"2":{"182":1,"240":1}}],["stringify",{"2":{"1836":1}}],["strings",{"0":{"470":1,"1363":1},"2":{"176":1,"191":1,"374":2,"416":1,"432":1,"467":1,"470":1,"611":1,"612":2,"616":1,"1255":1,"1356":2,"1361":2,"1363":1,"1447":2,"1683":1,"1923":1,"2231":1,"2238":1}}],["string",{"0":{"308":1,"309":1,"310":1,"1359":1,"2072":1,"2081":2,"2083":2,"2085":2,"2087":2,"2100":2,"2101":2,"2201":1},"1":{"1360":1,"1361":1,"1362":1,"1363":1,"2073":1,"2074":1,"2075":1,"2076":1,"2077":1,"2078":1,"2079":1,"2080":1,"2081":1,"2082":3,"2083":1,"2084":3,"2085":1,"2086":3,"2087":1,"2088":3,"2089":1,"2090":1,"2091":1,"2092":1,"2093":1,"2094":1,"2095":1,"2096":1,"2097":1,"2098":1,"2099":1,"2100":1,"2101":1,"2202":1},"2":{"94":1,"114":2,"149":1,"157":1,"160":3,"176":1,"190":1,"191":4,"196":5,"211":1,"249":1,"266":1,"423":1,"432":2,"435":1,"529":3,"534":6,"611":1,"612":1,"1250":8,"1359":9,"1361":21,"1363":7,"1384":2,"1385":3,"1399":1,"1403":2,"1447":1,"1448":5,"1451":4,"1452":1,"1511":1,"1527":2,"1607":1,"1608":1,"1609":1,"1610":1,"1680":5,"1683":1,"1686":2,"1813":1,"1822":6,"1935":2,"1940":2,"1941":3,"1943":10,"2072":1,"2073":2,"2075":5,"2076":1,"2078":1,"2079":2,"2081":3,"2082":2,"2083":1,"2084":2,"2085":3,"2086":2,"2087":3,"2088":2,"2100":4,"2101":4,"2137":1,"2143":6,"2166":1,"2201":1,"2202":1,"2231":1,"2238":1,"2575":1,"2577":2,"2672":4,"2676":1,"2702":4}}],["strictly",{"2":{"1302":1,"1534":1,"2506":1,"2513":1}}],["strict",{"0":{"1517":1,"1521":1,"1685":1},"2":{"75":1,"112":1,"191":1,"381":1,"504":1,"505":2,"1239":1,"1303":1,"1521":1,"1685":1,"1908":1,"2687":1}}],["stripping",{"2":{"2270":2,"2274":1}}],["stripped",{"2":{"2270":1}}],["strippers",{"2":{"2266":1}}],["strip",{"2":{"45":1,"199":1,"211":2,"1377":1,"1384":1,"1385":1,"2032":2,"2038":1,"2061":2,"2134":1,"2270":1,"2272":1,"2300":3}}],["s",{"0":{"567":1,"1243":1,"1607":1,"1609":1,"2012":1,"2014":1,"2478":1,"2742":1},"1":{"568":1,"1608":1,"1610":1,"2015":1,"2479":1,"2480":1,"2481":1,"2743":1,"2744":1,"2745":1,"2746":1,"2747":1,"2748":1,"2749":1},"2":{"14":1,"46":1,"49":1,"69":1,"70":1,"72":1,"82":1,"99":2,"109":1,"114":4,"116":1,"119":2,"125":1,"133":1,"134":1,"149":31,"153":1,"156":1,"158":1,"163":1,"174":1,"176":7,"182":3,"185":1,"191":2,"194":1,"196":5,"202":1,"211":6,"224":1,"243":1,"249":2,"265":1,"266":4,"268":1,"273":1,"276":1,"278":1,"282":6,"286":1,"291":1,"307":2,"313":2,"320":1,"327":2,"331":1,"337":1,"341":2,"349":1,"358":1,"384":1,"386":1,"403":3,"404":1,"414":2,"425":1,"429":1,"430":3,"432":2,"435":3,"436":1,"437":3,"441":2,"451":1,"453":3,"458":1,"470":1,"473":2,"493":1,"502":2,"509":1,"510":1,"515":2,"526":1,"529":3,"530":3,"532":1,"534":1,"537":1,"551":1,"554":2,"560":1,"563":1,"570":1,"574":2,"575":1,"578":1,"580":2,"587":1,"588":2,"592":1,"597":2,"598":1,"599":1,"600":1,"605":1,"609":1,"610":1,"614":1,"616":1,"623":1,"626":2,"627":2,"638":1,"639":1,"661":1,"666":2,"672":3,"681":1,"683":1,"685":1,"688":1,"689":3,"690":1,"691":1,"692":1,"703":3,"731":1,"732":1,"737":3,"763":3,"795":3,"825":3,"860":3,"894":3,"928":3,"962":3,"996":3,"1030":3,"1064":3,"1098":3,"1126":1,"1128":1,"1133":1,"1151":3,"1177":3,"1181":1,"1198":2,"1214":2,"1223":1,"1224":2,"1250":3,"1254":1,"1258":1,"1260":2,"1264":1,"1265":3,"1269":2,"1278":1,"1286":1,"1287":1,"1299":1,"1300":1,"1302":1,"1303":1,"1312":2,"1314":1,"1331":1,"1332":2,"1335":3,"1337":1,"1338":3,"1340":1,"1346":1,"1347":3,"1352":1,"1355":1,"1360":1,"1361":1,"1367":1,"1370":1,"1377":4,"1378":1,"1380":1,"1382":1,"1383":1,"1398":2,"1405":1,"1406":1,"1412":2,"1413":1,"1430":1,"1431":1,"1441":2,"1445":2,"1448":2,"1452":1,"1459":1,"1471":1,"1492":4,"1496":1,"1499":1,"1503":1,"1511":2,"1515":1,"1518":1,"1523":1,"1525":1,"1528":1,"1530":1,"1548":1,"1553":1,"1557":1,"1559":1,"1577":1,"1591":4,"1608":1,"1610":1,"1630":2,"1651":1,"1654":1,"1666":1,"1675":1,"1677":1,"1680":5,"1683":1,"1723":1,"1725":3,"1731":1,"1796":1,"1800":1,"1803":1,"1804":2,"1805":1,"1806":1,"1807":3,"1820":1,"1822":1,"1845":1,"1850":1,"1857":1,"1858":1,"1912":2,"1921":3,"1933":1,"1942":1,"1943":6,"1944":1,"1946":3,"1949":3,"1950":2,"1955":1,"2013":1,"2015":1,"2041":1,"2051":8,"2054":4,"2072":1,"2106":1,"2108":1,"2111":1,"2114":2,"2118":1,"2122":2,"2124":3,"2126":3,"2129":1,"2130":2,"2131":3,"2134":1,"2141":3,"2143":1,"2148":2,"2152":1,"2153":3,"2154":1,"2157":1,"2160":4,"2162":4,"2164":1,"2171":1,"2178":1,"2182":2,"2183":1,"2223":1,"2230":3,"2237":1,"2238":1,"2240":1,"2244":3,"2252":2,"2254":1,"2255":2,"2257":1,"2259":1,"2262":3,"2263":3,"2264":2,"2270":8,"2273":2,"2274":4,"2275":1,"2276":1,"2279":4,"2281":4,"2284":1,"2288":1,"2295":1,"2296":1,"2297":2,"2302":1,"2304":1,"2309":2,"2319":1,"2327":1,"2328":1,"2330":1,"2332":1,"2334":1,"2337":1,"2346":2,"2347":1,"2351":2,"2355":3,"2356":1,"2367":1,"2373":1,"2374":1,"2386":3,"2401":1,"2405":1,"2407":4,"2410":1,"2417":1,"2421":1,"2424":1,"2429":1,"2431":2,"2441":1,"2450":1,"2454":2,"2455":2,"2457":1,"2461":1,"2464":2,"2466":2,"2468":1,"2469":1,"2472":1,"2473":2,"2475":5,"2476":1,"2477":3,"2479":2,"2480":3,"2483":2,"2491":1,"2506":2,"2508":3,"2509":2,"2510":2,"2513":3,"2523":1,"2524":2,"2525":2,"2526":2,"2533":1,"2541":2,"2548":2,"2549":2,"2552":1,"2557":1,"2559":1,"2564":1,"2566":6,"2567":1,"2568":1,"2569":1,"2572":1,"2574":1,"2575":3,"2576":3,"2577":4,"2578":1,"2584":2,"2585":1,"2586":1,"2587":1,"2590":1,"2591":1,"2592":1,"2595":2,"2596":2,"2597":1,"2599":1,"2607":1,"2612":2,"2614":3,"2615":8,"2616":2,"2620":1,"2632":1,"2639":1,"2657":1,"2672":2,"2676":2,"2684":2,"2693":2,"2697":1,"2701":1,"2704":1,"2707":1,"2711":2,"2719":1,"2728":5,"2735":2,"2738":1,"2740":2,"2744":1,"2745":4,"2746":2,"2748":1,"2750":3,"2751":1,"2752":1,"2753":6,"2756":1,"2757":2}}],["sixty",{"2":{"1406":1}}],["sixtyfive",{"2":{"211":1}}],["sixth",{"2":{"1278":1}}],["six",{"2":{"1221":1,"2105":1,"2148":1}}],["sipeed",{"2":{"495":1}}],["situation",{"2":{"466":1,"1326":1,"1684":1,"1828":1}}],["situations",{"2":{"466":1,"483":1,"567":1,"1225":1,"1288":1,"1359":1,"1378":1,"2468":4,"2662":1,"2705":1}}],["site",{"2":{"403":1,"2751":1}}],["sit",{"2":{"301":1,"616":1}}],["silvery",{"2":{"2272":1}}],["silent=true",{"2":{"2262":1}}],["silent",{"2":{"236":1}}],["silicon",{"2":{"49":1,"2462":1}}],["sizing",{"2":{"211":1,"288":1}}],["size=x",{"2":{"2757":1}}],["sizey",{"2":{"2577":1}}],["sizex",{"2":{"2577":1}}],["sizeof",{"2":{"1820":1,"2130":2,"2142":1,"2587":2,"2588":2,"2593":1,"2594":2,"2595":1,"2596":2,"2597":1,"2598":1,"2705":1,"2757":1}}],["sized",{"0":{"1820":1,"2142":1},"1":{"1821":1},"2":{"2147":1}}],["sizes",{"0":{"1515":1},"2":{"134":1,"149":1,"201":1,"210":1,"689":1,"1515":3,"1811":1,"1820":1,"2130":1,"2576":1,"2593":1,"2614":1}}],["size",{"0":{"660":1},"2":{"3":1,"15":1,"28":1,"69":1,"70":1,"75":1,"113":1,"114":10,"134":4,"149":4,"153":1,"166":1,"176":2,"191":1,"199":1,"201":1,"211":4,"215":1,"222":2,"236":5,"266":2,"496":1,"503":1,"504":1,"506":1,"511":2,"513":1,"560":1,"659":3,"660":4,"683":2,"684":4,"685":4,"686":3,"688":2,"689":11,"690":9,"691":11,"694":10,"1287":4,"1440":2,"1445":1,"1446":4,"1553":1,"1554":3,"1573":3,"1589":1,"1638":1,"1728":1,"1803":2,"1804":2,"1808":2,"1811":1,"1820":6,"1821":3,"1822":7,"1932":1,"1949":2,"1950":1,"2042":1,"2128":1,"2130":6,"2136":1,"2142":6,"2143":2,"2152":2,"2161":1,"2182":1,"2226":2,"2228":1,"2229":2,"2262":2,"2263":2,"2274":1,"2299":1,"2303":1,"2348":1,"2425":2,"2469":2,"2550":1,"2557":2,"2558":2,"2566":1,"2573":1,"2574":1,"2575":7,"2576":3,"2578":1,"2587":4,"2594":4,"2683":4,"2704":2,"2705":2,"2708":1,"2709":1,"2718":2,"2757":2}}],["sion",{"2":{"1943":1}}],["siod0",{"2":{"2538":1,"2541":2}}],["siod3",{"2":{"1133":2}}],["siod1",{"2":{"1133":1,"2538":1}}],["sio",{"0":{"1133":1},"2":{"176":1,"199":1,"249":1,"1127":1,"1130":1,"1133":5,"2531":2,"2538":2,"2541":1,"2543":3}}],["sinks",{"2":{"2519":1}}],["sinusoidal",{"2":{"1576":1}}],["sine",{"2":{"1393":2,"1728":2}}],["singa",{"2":{"211":1}}],["single",{"0":{"421":1,"1282":1,"1861":1,"2159":1,"2164":1},"1":{"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1},"2":{"16":1,"94":1,"112":1,"113":1,"114":2,"138":1,"191":1,"211":3,"222":1,"236":1,"262":1,"313":1,"334":1,"407":1,"411":1,"418":1,"424":1,"459":1,"461":1,"468":2,"516":2,"519":1,"606":2,"635":1,"636":1,"647":1,"664":1,"671":1,"675":1,"726":1,"729":1,"730":1,"734":1,"736":1,"737":1,"741":1,"745":2,"747":1,"749":1,"751":2,"755":1,"756":1,"760":1,"762":1,"763":1,"768":1,"772":2,"774":1,"776":1,"778":2,"784":1,"785":1,"792":1,"794":1,"795":1,"800":1,"804":2,"806":1,"808":1,"810":2,"816":1,"817":1,"822":1,"824":1,"825":1,"832":1,"836":2,"838":1,"840":1,"842":2,"848":1,"849":1,"857":1,"859":1,"860":1,"867":1,"871":2,"873":1,"875":1,"877":2,"883":1,"884":1,"891":1,"893":1,"894":1,"901":1,"905":2,"907":1,"909":1,"911":2,"917":1,"918":1,"925":1,"927":1,"928":1,"935":1,"939":2,"941":1,"943":1,"945":2,"951":1,"952":1,"959":1,"961":1,"962":1,"969":1,"973":2,"975":1,"977":1,"979":2,"985":1,"986":1,"993":1,"995":1,"996":1,"1003":1,"1007":2,"1009":1,"1011":1,"1013":2,"1019":1,"1020":1,"1027":1,"1029":1,"1030":1,"1037":1,"1041":2,"1043":1,"1045":1,"1047":2,"1053":1,"1054":1,"1061":1,"1063":1,"1064":1,"1071":1,"1075":2,"1077":1,"1079":1,"1081":2,"1087":1,"1088":1,"1095":1,"1097":1,"1098":1,"1105":1,"1109":2,"1111":1,"1113":1,"1115":2,"1121":2,"1143":1,"1144":1,"1148":1,"1150":1,"1151":1,"1158":1,"1162":2,"1164":1,"1166":1,"1168":2,"1202":1,"1204":1,"1212":2,"1234":6,"1235":1,"1236":1,"1286":1,"1299":1,"1300":1,"1319":1,"1325":1,"1329":1,"1335":1,"1341":1,"1357":3,"1381":1,"1399":1,"1406":1,"1451":3,"1454":2,"1495":1,"1499":1,"1534":1,"1577":1,"1591":1,"1639":1,"1665":1,"1728":6,"1729":1,"1743":1,"1815":2,"1822":2,"1839":2,"1851":2,"1854":1,"1923":1,"1944":1,"1949":18,"1952":1,"1970":1,"2031":1,"2051":2,"2097":1,"2107":1,"2112":1,"2125":1,"2139":2,"2143":2,"2149":1,"2157":1,"2161":2,"2162":1,"2164":1,"2169":17,"2170":12,"2171":11,"2199":1,"2262":1,"2274":2,"2290":1,"2302":1,"2349":1,"2407":1,"2415":1,"2455":1,"2553":1,"2564":1,"2566":1,"2571":1,"2589":1,"2597":1,"2600":1,"2607":1,"2649":1,"2660":1}}],["sinanju",{"2":{"211":1}}],["sinc",{"2":{"191":1}}],["since",{"2":{"113":1,"175":1,"240":1,"463":1,"464":1,"465":1,"513":1,"641":1,"659":1,"660":2,"1332":1,"1338":1,"1383":1,"1384":1,"1397":1,"1401":1,"1427":1,"1438":1,"1471":1,"1501":1,"1533":1,"1577":1,"1674":1,"1677":1,"1845":1,"2042":1,"2102":1,"2118":1,"2122":1,"2128":2,"2162":2,"2183":1,"2226":1,"2243":1,"2274":1,"2292":1,"2311":1,"2347":1,"2398":1,"2477":2,"2506":1,"2576":1,"2605":1,"2615":1,"2734":2,"2738":1,"2752":1}}],["signed",{"2":{"1648":1,"1855":4,"1940":1,"1942":1}}],["sign",{"2":{"417":1,"554":1,"2728":2}}],["significance",{"2":{"2172":1}}],["significantly",{"2":{"196":1,"513":1,"1326":1,"1803":1,"2462":1,"2574":2}}],["significant",{"2":{"107":1,"169":1,"182":1,"215":1,"228":1,"486":1,"560":2,"688":1,"701":1,"1181":1,"1612":1,"1614":1,"1835":1,"1842":1,"2125":1,"2148":1,"2263":1,"2309":1,"2574":2,"2576":1}}],["signifies",{"2":{"341":1,"2524":1,"2596":1}}],["signum",{"2":{"122":2}}],["signature65",{"2":{"211":1}}],["signature",{"0":{"272":1},"2":{"114":1,"272":1,"597":1,"2347":1}}],["signals",{"2":{"2311":1}}],["signalling",{"2":{"125":1,"185":1}}],["signal",{"2":{"92":1,"176":1,"334":4,"1394":1,"1454":1,"1462":1,"1534":1,"1576":1,"1577":1}}],["sided",{"2":{"1854":1,"2280":1}}],["sidebar",{"2":{"621":1,"2424":1,"2513":2}}],["side",{"2":{"74":1,"138":1,"149":2,"156":1,"191":2,"211":1,"331":2,"496":1,"509":6,"511":1,"522":2,"607":1,"1236":1,"1547":1,"1551":3,"1558":2,"1577":2,"1842":1,"1844":3,"1845":2,"1849":1,"1852":2,"1854":3,"1862":5,"1879":1,"1881":1,"1921":1,"1923":1,"2051":4,"2123":1,"2124":1,"2127":3,"2129":12,"2130":6,"2131":7,"2157":1,"2246":1,"2248":1,"2272":1,"2273":1,"2276":1,"2311":1,"2352":1,"2477":1,"2566":1,"2567":1,"2577":5,"2728":1}}],["sides",{"0":{"2130":1},"2":{"31":1,"34":1,"107":2,"134":1,"211":1,"511":2,"1558":1,"1670":1,"1845":1,"1849":1,"1852":1,"2042":2,"2114":1,"2127":2,"2129":1,"2131":1,"2157":1,"2279":2,"2370":6,"2396":6}}],["sidestep",{"2":{"24":1}}],["simulation",{"2":{"1949":1}}],["simulate",{"2":{"1406":1,"1949":1}}],["simultaneously",{"2":{"659":1,"1390":1,"1499":1,"1500":1,"1562":1,"1802":1,"2152":1,"2401":1}}],["simultaneous",{"2":{"563":1,"659":4,"1387":1}}],["simutaneously",{"2":{"1399":1}}],["similiarly",{"2":{"82":1}}],["similarity",{"2":{"2566":1}}],["similary",{"2":{"1935":1}}],["similarly",{"2":{"1300":1,"1388":1,"1391":1,"1533":1,"1940":1}}],["similar",{"2":{"49":2,"99":1,"128":1,"154":1,"203":1,"220":1,"231":1,"371":1,"432":1,"529":1,"569":1,"587":1,"642":1,"1227":1,"1260":1,"1336":1,"1370":1,"1376":1,"1462":1,"1573":1,"1655":1,"1666":1,"1865":1,"1877":1,"1948":1,"2034":1,"2114":1,"2156":1,"2161":1,"2171":3,"2172":1,"2183":1,"2347":1,"2353":1,"2414":1,"2417":1,"2425":1,"2450":1,"2453":1,"2469":1,"2475":1,"2539":1,"2739":1,"2753":1,"2755":1}}],["simplfy",{"2":{"222":1}}],["simplified",{"2":{"2632":1}}],["simplifies",{"2":{"149":1,"198":1}}],["simplifying",{"2":{"164":1}}],["simplify",{"2":{"10":1,"160":1,"176":1,"191":2,"198":1,"222":1,"236":1,"262":1,"363":1,"2553":1,"2567":1}}],["simply",{"0":{"2669":1},"2":{"31":1,"110":1,"194":1,"314":1,"373":1,"428":1,"434":1,"602":1,"609":1,"614":1,"654":1,"659":1,"688":1,"1217":1,"1304":1,"1412":1,"1416":1,"1423":1,"1451":1,"1534":1,"1609":1,"1613":1,"1729":1,"1743":1,"1745":1,"1922":1,"1940":1,"1952":1,"1970":1,"1972":1,"2032":1,"2081":1,"2085":1,"2087":1,"2152":1,"2169":1,"2282":1,"2325":1,"2347":1,"2353":1,"2397":1,"2474":1,"2499":1,"2557":1,"2701":1}}],["simplest",{"2":{"2451":1,"2474":1,"2548":1}}],["simpler",{"2":{"236":1,"341":1,"2506":1,"2740":1}}],["simple",{"0":{"414":1,"463":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"1424":1,"1425":1,"1663":1,"1923":1,"2164":1},"2":{"13":1,"94":1,"114":2,"249":1,"306":1,"315":1,"481":1,"567":1,"610":1,"611":1,"1250":3,"1270":1,"1300":1,"1302":1,"1310":1,"1338":1,"1364":1,"1386":1,"1450":1,"1452":1,"1464":1,"1565":1,"1670":2,"1728":3,"1729":1,"1949":3,"1952":1,"2078":1,"2133":1,"2147":1,"2155":1,"2161":1,"2164":1,"2231":1,"2238":1,"2268":1,"2277":1,"2319":1,"2321":1,"2417":1,"2448":1,"2454":1,"2497":1,"2507":1,"2543":1,"2564":1,"2664":1,"2709":1,"2711":1,"2740":1,"2749":1}}],["sea",{"2":{"2545":1}}],["searched",{"2":{"1441":1}}],["searches",{"2":{"384":1,"1346":1,"1441":1}}],["searching",{"2":{"374":1,"1438":1,"2403":1,"2719":1}}],["search",{"2":{"114":1,"191":1,"236":2,"279":1,"374":2,"1438":1,"1452":1,"2355":2,"2393":2,"2403":1,"2566":1,"2757":1}}],["sepr",{"2":{"2355":1,"2392":1}}],["seperate",{"2":{"2280":1}}],["separator",{"2":{"2355":2,"2392":2}}],["separation",{"2":{"236":1,"2294":1}}],["separated",{"2":{"413":1,"462":1,"612":2,"2130":1,"2179":1,"2477":1,"2566":1}}],["separately",{"2":{"228":1,"358":1,"1379":1,"1518":1,"1547":1,"1802":1,"2567":2,"2608":1}}],["separate",{"2":{"18":1,"35":1,"114":1,"134":1,"222":2,"236":1,"266":1,"277":1,"354":1,"454":1,"502":1,"516":1,"556":3,"559":1,"612":1,"654":1,"655":1,"1265":1,"1346":1,"1363":1,"1459":1,"1464":1,"1821":1,"1864":1,"1877":1,"2154":1,"2181":1,"2182":1,"2307":1,"2346":1,"2508":1,"2558":1,"2564":1,"2577":1,"2602":1,"2746":1,"2753":2}}],["seq",{"2":{"1578":3,"1820":3}}],["sequential",{"2":{"191":1,"1815":1,"2070":1,"2139":1}}],["sequence",{"0":{"1693":1,"1694":1,"1697":1,"1699":1,"1702":1,"1705":1,"1708":1,"1711":1,"2066":1},"1":{"1695":1,"1696":1,"1700":1,"1701":1,"1703":1,"1704":1,"1706":1,"1707":1,"1709":1,"1710":1,"1712":1,"1713":1},"2":{"196":4,"468":3,"473":1,"505":1,"1359":1,"1437":1,"1508":1,"1578":4,"1579":4,"1678":1,"1680":6,"1682":1,"1683":2,"1684":7,"1685":2,"1686":5,"1687":1,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1697":1,"1698":1,"1699":1,"1701":1,"1702":1,"1704":1,"1705":1,"1707":1,"1708":1,"1710":1,"1711":1,"1713":1,"2069":3,"2070":3,"2071":3,"2104":1,"2179":4,"2183":2,"2196":1,"2197":1,"2198":1,"2211":1,"2214":1,"2215":1,"2216":1,"2219":1,"2220":1,"2221":1,"2222":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":2,"2247":2,"2249":2,"2368":1,"2577":1,"2616":1,"2645":1,"2687":1,"2696":3,"2734":6,"2735":7,"2736":2}}],["sequences",{"2":{"134":1,"196":1,"435":2,"1578":2,"2072":1,"2183":1,"2326":1,"2735":1}}],["sequencer",{"0":{"2102":1,"2103":1},"1":{"2103":1,"2104":1,"2105":1,"2106":1,"2107":1},"2":{"63":1,"191":1,"199":1,"231":3,"2102":1,"2103":2,"2104":1,"2105":1,"2106":12,"2107":32,"2749":1,"2753":1}}],["sequencing",{"2":{"49":1,"176":1,"229":1}}],["semi",{"2":{"2169":1}}],["semitone",{"2":{"1793":2,"2371":2}}],["semitones",{"2":{"1793":10,"2371":10}}],["semicolon",{"2":{"1499":1,"1584":1,"1729":1,"1952":1,"2160":2,"2355":1,"2388":1}}],["semantics",{"2":{"199":1,"277":1}}],["seil",{"2":{"1280":2}}],["seigaiha",{"2":{"143":2}}],["self",{"2":{"428":1,"475":6,"609":1,"1525":1,"1527":1,"1729":1,"1952":1}}],["selectable",{"2":{"1326":1}}],["selects",{"2":{"505":1,"1359":1,"2611":1,"2616":1,"2729":3,"2736":1}}],["selectively",{"2":{"2039":1}}],["selecting",{"0":{"1355":1,"2535":1,"2547":1},"1":{"2536":1,"2537":1,"2538":1,"2548":1,"2549":1},"2":{"266":1,"331":1,"681":1,"1236":1,"2150":1,"2411":1,"2502":1}}],["selection",{"0":{"2033":1,"2544":1},"2":{"75":1,"114":1,"188":1,"191":2,"199":1,"211":1,"222":1,"249":1,"630":1,"1218":1,"1460":1,"1492":1,"1525":1,"1805":2,"1932":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2245":1,"2247":1,"2249":1,"2300":1,"2534":1,"2544":1,"2546":1,"2566":1,"2611":1,"2689":1}}],["select",{"0":{"537":1,"538":1,"830":1,"865":1,"899":1,"933":1,"967":1,"1001":1,"1035":1,"1069":1,"1103":1,"1156":1},"1":{"831":1,"866":1,"900":1,"934":1,"968":1,"1002":1,"1036":1,"1070":1,"1104":1,"1157":1},"2":{"222":1,"236":1,"331":16,"335":3,"502":1,"511":1,"537":3,"538":1,"626":2,"627":1,"628":1,"666":2,"674":1,"680":1,"685":2,"694":2,"831":1,"866":1,"900":1,"934":1,"968":1,"1002":1,"1036":1,"1070":1,"1104":1,"1136":1,"1157":1,"1176":1,"1177":6,"1181":1,"1194":1,"1235":1,"1329":1,"1393":1,"1402":1,"1573":2,"1805":3,"1834":1,"1835":1,"1839":1,"1842":1,"1848":1,"1849":4,"1929":1,"1932":1,"2033":1,"2104":1,"2126":1,"2128":1,"2141":1,"2147":1,"2148":1,"2150":1,"2255":2,"2278":1,"2355":3,"2392":2,"2393":1,"2436":2,"2439":2,"2498":3,"2501":2,"2502":1,"2506":2,"2512":2,"2513":1,"2518":1,"2542":1,"2573":1,"2576":10,"2729":1,"2735":2,"2736":2}}],["selector",{"2":{"176":1,"2498":1}}],["selected",{"0":{"1139":1},"1":{"1140":1,"1141":1,"1142":1},"2":{"65":1,"186":1,"540":1,"661":1,"662":1,"688":1,"689":1,"708":1,"711":1,"1127":1,"1129":1,"1130":1,"1132":3,"1133":4,"1183":1,"1186":1,"1188":1,"1191":1,"1223":1,"1388":1,"1393":1,"1394":1,"1395":1,"1398":4,"1399":4,"1494":1,"1575":1,"1579":1,"2040":1,"2179":1,"2180":5,"2183":4,"2184":2,"2196":1,"2197":1,"2198":1,"2384":2,"2541":1,"2544":1,"2719":2,"2720":1,"2729":2}}],["segments",{"2":{"2042":5,"2044":2,"2270":1}}],["segment",{"2":{"236":3,"2042":6,"2044":3}}],["seven",{"2":{"2614":2}}],["seventyfive",{"2":{"211":1}}],["several",{"2":{"204":2,"213":1,"305":1,"316":1,"358":1,"431":1,"449":1,"481":1,"537":1,"551":1,"560":1,"574":1,"1121":1,"1127":1,"1130":1,"1135":1,"1265":1,"1270":1,"1568":1,"1676":1,"1872":1,"2123":1,"2146":1,"2165":1,"2244":1,"2295":1,"2296":1,"2327":1,"2344":1,"2419":1,"2491":1,"2496":1,"2530":1,"2686":1,"2719":1,"2753":1}}],["severely",{"2":{"123":1,"2704":1}}],["sekigon",{"2":{"114":1}}],["serbian",{"2":{"1355":1,"2703":5}}],["servicing",{"2":{"660":1}}],["services",{"2":{"516":1}}],["service",{"0":{"306":1},"1":{"307":1,"308":1,"309":1,"310":1},"2":{"304":2,"306":1,"312":1,"315":1,"623":1,"1239":2,"1848":1,"2260":1,"2554":1,"2566":1}}],["served",{"2":{"520":1,"2303":2}}],["serves",{"2":{"403":1}}],["serve",{"2":{"403":3,"2644":1}}],["servertype",{"2":{"2513":1}}],["server",{"2":{"315":1,"401":1,"402":1,"2317":1,"2510":1,"2512":2,"2545":1,"2714":1}}],["serratus",{"2":{"211":1}}],["serenity",{"2":{"211":1}}],["serpent65",{"2":{"211":1}}],["serious",{"2":{"315":1,"2569":1}}],["series",{"0":{"2291":1},"2":{"149":1,"249":1,"331":2,"495":1,"532":1,"684":1,"685":1,"1390":1,"2335":1,"2750":1}}],["serialport>",{"2":{"2233":1}}],["serialized",{"2":{"1450":1,"1451":3}}],["serial",{"0":{"1121":1,"1132":1,"1240":1,"2119":1},"1":{"1122":1,"1123":1,"1124":1,"1125":1,"1126":1,"1127":1,"1128":1,"1129":1,"1130":1,"1131":1,"1132":1,"1133":1,"1134":1,"1135":1,"1136":1,"1137":1,"1138":1,"1139":1,"1140":1,"1141":1,"1142":1},"2":{"30":1,"45":1,"63":2,"65":1,"74":1,"93":1,"94":1,"111":1,"112":2,"114":3,"133":2,"134":2,"149":2,"176":2,"191":5,"199":3,"277":11,"511":7,"625":1,"1121":2,"1122":1,"1123":2,"1124":2,"1126":2,"1127":5,"1129":6,"1130":8,"1132":7,"1133":3,"1134":3,"1136":4,"1137":1,"1138":2,"1198":2,"1240":1,"1530":1,"1834":1,"1846":1,"1848":1,"2114":4,"2115":1,"2119":1,"2128":7,"2146":4,"2149":1,"2150":3,"2225":1,"2233":1,"2329":1,"2331":1,"2333":1,"2339":1,"2344":1,"2347":2,"2353":1,"2513":1,"2531":1,"2541":7,"2543":1,"2668":1,"2697":4}}],["sergiopoverony",{"2":{"114":1}}],["sentence",{"2":{"2169":1}}],["sentences",{"2":{"621":1,"1435":1,"1651":1}}],["sent",{"2":{"211":1,"263":2,"587":1,"1181":1,"1212":1,"1215":1,"1216":1,"1217":1,"1284":1,"1299":2,"1303":1,"1340":1,"1360":2,"1367":1,"1399":1,"1414":1,"1430":1,"1537":1,"1573":1,"1638":1,"1670":1,"1677":1,"1855":3,"1857":1,"1858":1,"1912":2,"1917":1,"1923":1,"2031":1,"2072":2,"2075":1,"2109":1,"2110":1,"2112":2,"2130":1,"2152":5,"2161":1,"2199":1,"2321":1,"2382":1,"2660":1,"2737":4,"2738":1}}],["sensible",{"2":{"1940":1}}],["sensitivity",{"2":{"1842":1,"1849":1,"1911":1}}],["sensitive",{"2":{"454":1,"585":1,"1353":1,"1842":3}}],["sensing",{"2":{"1236":1}}],["sense75",{"2":{"222":1}}],["senselessclay",{"2":{"211":1}}],["sense",{"2":{"123":1,"453":1,"560":1,"1265":1,"1432":1,"1932":1,"2517":1,"2553":1,"2724":1}}],["sensors",{"2":{"160":1,"273":1,"276":1,"1833":1,"1849":5,"1850":1,"1853":2,"2566":1}}],["sensor",{"0":{"276":1,"1833":1,"1834":1,"1835":1,"1846":1,"1848":1,"1849":1},"1":{"1834":1,"1835":1,"1836":1,"1837":1,"1838":1,"1839":1,"1840":1,"1841":1,"1842":1,"1843":1,"1844":1,"1845":1,"1846":1,"1847":1,"1848":1,"1849":1,"1850":1},"2":{"114":3,"118":2,"149":4,"175":1,"176":1,"249":2,"273":3,"276":1,"636":2,"1833":2,"1834":5,"1835":5,"1836":1,"1838":2,"1841":1,"1842":7,"1843":4,"1846":4,"1847":2,"1848":5,"1849":15,"1850":2,"1851":7,"1853":3}}],["sends",{"0":{"2321":1},"2":{"202":1,"623":1,"1286":1,"1299":1,"1335":1,"1357":1,"1366":1,"1367":1,"1368":1,"1438":1,"1582":2,"1659":1,"1853":3,"1855":1,"1937":1,"2161":4,"2356":1,"2410":1,"2455":1,"2572":1,"2611":1,"2701":1,"2739":1}}],["sendstring",{"0":{"157":1,"2702":1},"2":{"114":1,"160":1,"188":1,"191":1,"211":1,"1362":1,"1399":1,"2074":1,"2702":3,"2703":53}}],["sending",{"0":{"1250":1,"1791":1,"1921":1},"2":{"176":2,"191":2,"199":1,"502":1,"567":1,"1121":1,"1369":1,"1554":1,"1622":1,"1624":1,"1663":1,"1855":1,"1864":1,"1910":1,"1912":1,"1918":1,"2152":1,"2161":1,"2263":1,"2577":1,"2699":1,"2701":1}}],["sendyyeah",{"2":{"74":1}}],["sendz",{"2":{"74":1}}],["send",{"0":{"1359":1,"1927":1,"2072":1,"2081":1,"2083":1,"2085":1,"2087":1,"2089":1,"2091":1,"2093":1,"2095":1,"2097":1,"2100":1,"2101":1,"2164":1,"2166":1,"2168":1,"2201":1,"2325":1},"1":{"1360":1,"1361":1,"1362":1,"1363":1,"1928":1,"2073":1,"2074":1,"2075":1,"2076":1,"2077":1,"2078":1,"2079":1,"2080":1,"2081":1,"2082":2,"2083":1,"2084":2,"2085":1,"2086":2,"2087":1,"2088":2,"2089":1,"2090":2,"2091":1,"2092":2,"2093":1,"2094":2,"2095":1,"2096":2,"2097":1,"2098":2,"2099":1,"2100":1,"2101":1,"2202":1},"2":{"50":1,"94":1,"114":1,"149":1,"157":1,"160":1,"176":1,"190":1,"191":4,"195":1,"196":3,"222":1,"236":1,"249":1,"266":1,"515":1,"534":6,"571":1,"572":1,"708":1,"1188":1,"1232":1,"1278":1,"1300":2,"1320":1,"1332":1,"1336":1,"1353":2,"1357":2,"1359":8,"1360":2,"1361":5,"1363":6,"1368":1,"1375":1,"1384":2,"1385":3,"1399":1,"1431":1,"1448":5,"1451":1,"1452":1,"1508":1,"1511":2,"1527":1,"1538":1,"1557":1,"1568":4,"1618":1,"1622":1,"1623":1,"1624":1,"1625":1,"1641":1,"1655":1,"1656":3,"1665":7,"1670":1,"1680":3,"1683":1,"1686":2,"1787":1,"1792":2,"1821":1,"1822":4,"1853":1,"1855":5,"1857":1,"1880":1,"1897":1,"1912":3,"1921":2,"1922":3,"1923":3,"1927":1,"1928":1,"1935":2,"1940":2,"1941":3,"1943":10,"2072":1,"2073":1,"2075":7,"2076":1,"2078":1,"2081":1,"2085":1,"2087":1,"2100":2,"2101":2,"2112":9,"2113":5,"2129":1,"2130":3,"2150":1,"2152":2,"2160":2,"2161":1,"2166":1,"2169":8,"2170":1,"2183":1,"2184":3,"2200":1,"2201":1,"2202":1,"2209":1,"2223":1,"2263":5,"2311":2,"2321":2,"2326":1,"2384":3,"2397":1,"2398":1,"2410":1,"2411":1,"2413":2,"2414":4,"2415":2,"2611":1,"2649":1,"2666":1,"2676":1,"2699":2,"2702":3,"2734":2,"2738":2}}],["security",{"2":{"1353":1}}],["secure",{"0":{"2065":1,"2696":1},"1":{"2066":1,"2067":1,"2068":1,"2069":1,"2070":1,"2071":1},"2":{"160":2,"188":2,"191":2,"2065":2,"2067":1,"2069":4,"2070":3,"2071":7,"2280":1,"2506":1,"2611":1,"2696":3,"2749":1}}],["sector",{"2":{"689":3,"691":2,"694":2}}],["sectors",{"2":{"689":3}}],["section>",{"2":{"438":2,"439":2}}],["sections",{"0":{"290":1,"300":1},"2":{"194":1,"279":1,"602":1,"1304":1,"2033":1,"2319":1,"2404":1,"2418":1,"2459":1,"2477":1,"2535":1,"2560":1,"2574":1,"2600":1}}],["section",{"0":{"420":1},"2":{"31":2,"34":1,"124":1,"195":1,"206":1,"236":1,"240":1,"294":1,"320":1,"342":1,"417":1,"418":1,"437":4,"445":1,"453":1,"608":1,"628":1,"629":1,"681":2,"687":1,"693":1,"1127":2,"1129":1,"1130":2,"1235":1,"1340":1,"1450":1,"1672":1,"2031":1,"2134":1,"2152":1,"2165":1,"2240":1,"2263":1,"2268":1,"2282":1,"2296":1,"2327":1,"2347":2,"2348":2,"2398":1,"2411":1,"2420":1,"2439":1,"2451":1,"2454":1,"2472":2,"2490":1,"2494":1,"2534":1,"2536":1,"2537":1,"2548":1,"2557":1,"2565":1,"2577":1,"2579":1,"2581":1,"2614":2,"2723":1,"2724":1,"2744":1,"2747":1}}],["secondary",{"2":{"176":1,"191":1,"656":1,"1388":1,"1390":1,"1531":1,"1842":1,"1845":1,"1949":1,"2697":11}}],["second",{"0":{"2544":1},"2":{"90":2,"157":1,"266":1,"375":1,"506":1,"556":1,"557":2,"584":1,"597":1,"666":1,"683":1,"1303":1,"1359":1,"1361":1,"1387":1,"1391":1,"1399":2,"1416":1,"1438":1,"1560":2,"1703":1,"1706":1,"1709":1,"1712":1,"1725":1,"1804":3,"1807":1,"1849":2,"1940":1,"1946":1,"1949":1,"2114":1,"2125":1,"2131":1,"2161":2,"2162":1,"2272":1,"2309":1,"2348":1,"2450":1,"2477":1,"2513":1,"2544":1,"2693":1,"2737":3,"2745":3,"2746":1}}],["seconds>",{"2":{"375":1}}],["seconds",{"0":{"25":1},"2":{"11":1,"463":1,"464":2,"465":4,"502":1,"522":1,"598":1,"1457":1,"1499":1,"1504":2,"2226":5,"2232":1,"2233":1,"2234":1,"2235":1,"2239":1,"2355":1,"2677":2,"2680":1,"2696":1,"2697":1}}],["setpixel",{"2":{"2577":4}}],["setpinoutputopendrain",{"2":{"243":1}}],["setpinoutputpushpull",{"2":{"243":1}}],["setpinoutput",{"2":{"243":1}}],["setpininputlow",{"2":{"243":1}}],["setpininput",{"2":{"243":1}}],["setpininputhigh",{"2":{"34":2,"243":1}}],["setrgb",{"2":{"1343":5,"1953":1,"2051":5,"2058":3}}],["setings",{"2":{"1332":1}}],["setleds",{"0":{"1232":1},"1":{"1233":1}}],["settling",{"2":{"1326":3}}],["settle",{"2":{"1325":1}}],["settles",{"2":{"1325":1}}],["setter",{"2":{"475":2}}],["setta21",{"2":{"143":2}}],["settable",{"2":{"114":1}}],["setting",{"0":{"415":1,"417":1,"438":1,"509":1,"1227":1,"1721":1,"1870":1,"2050":1,"2123":1,"2348":1,"2442":1,"2456":1,"2492":1,"2503":1,"2607":1},"1":{"510":1,"1722":1,"1871":1,"2124":1,"2125":1,"2126":1,"2127":1,"2457":1,"2458":1,"2459":1,"2460":1,"2461":1,"2462":1,"2463":1,"2464":1,"2465":1,"2466":1,"2467":1,"2468":1,"2469":1},"2":{"87":1,"88":3,"93":1,"104":3,"127":3,"176":2,"191":1,"321":1,"370":1,"415":2,"423":1,"435":1,"497":3,"502":1,"504":1,"505":1,"516":2,"533":1,"556":1,"578":1,"624":1,"641":1,"667":1,"701":1,"703":3,"790":1,"820":1,"855":1,"889":1,"923":1,"957":1,"991":1,"1025":1,"1059":1,"1093":1,"1129":1,"1239":1,"1292":1,"1328":1,"1338":1,"1384":1,"1400":1,"1402":1,"1406":1,"1415":1,"1416":1,"1430":1,"1451":1,"1504":1,"1507":1,"1576":1,"1577":1,"1628":1,"1652":1,"1666":1,"1717":1,"1721":1,"1729":1,"1803":5,"1804":3,"1805":1,"1834":1,"1835":2,"1836":1,"1838":3,"1839":1,"1840":1,"1842":4,"1843":1,"1844":1,"1845":1,"1846":1,"1847":1,"1848":1,"1849":2,"1851":1,"1852":1,"1853":1,"1866":3,"1876":1,"1878":1,"1952":1,"2044":1,"2060":1,"2063":1,"2103":1,"2125":1,"2126":2,"2131":2,"2148":2,"2232":1,"2234":1,"2241":1,"2243":1,"2244":1,"2245":1,"2246":1,"2247":1,"2248":1,"2249":1,"2252":1,"2259":1,"2261":6,"2262":1,"2277":1,"2305":1,"2341":1,"2346":1,"2348":1,"2513":1,"2522":1,"2610":1,"2727":3}}],["settings",{"0":{"697":1,"1838":1,"1839":1,"1840":1,"1842":1,"1843":1,"1909":1,"1916":1,"2038":1,"2705":1,"2706":1,"2707":1,"2711":1},"1":{"1910":1,"1911":1,"1912":1,"1913":1,"1914":1,"1915":1,"1916":1,"1917":1},"2":{"69":1,"74":1,"75":1,"114":1,"131":1,"134":1,"291":1,"331":1,"496":1,"498":2,"505":5,"582":1,"659":1,"697":1,"789":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1129":1,"1243":1,"1292":1,"1331":3,"1332":2,"1379":2,"1385":1,"1399":1,"1495":1,"1498":1,"1511":1,"1513":1,"1570":2,"1573":3,"1676":1,"1803":1,"1804":2,"1805":1,"1806":1,"1807":1,"1808":1,"1838":1,"1842":1,"1910":1,"2064":1,"2131":1,"2150":1,"2175":1,"2261":1,"2263":1,"2299":2,"2300":1,"2448":1,"2490":1,"2508":4,"2513":1,"2553":1,"2556":1,"2566":1,"2607":1,"2610":1,"2701":1,"2708":1,"2728":1,"2735":1,"2736":1,"2737":1}}],["sets",{"2":{"50":1,"502":5,"505":4,"511":1,"576":1,"582":3,"638":1,"641":3,"655":1,"1332":1,"1341":4,"1406":5,"1554":2,"1573":3,"1580":1,"1717":1,"1730":5,"1806":3,"1822":4,"1835":5,"1836":3,"1838":3,"1842":7,"1847":1,"1849":8,"1853":2,"1854":2,"1862":1,"1873":1,"1954":7,"1959":1,"2033":1,"2055":2,"2126":1,"2128":3,"2131":3,"2143":2,"2174":3,"2175":1,"2227":1,"2232":1,"2234":1,"2241":1,"2246":1,"2248":1,"2259":2,"2299":1,"2300":1,"2566":1}}],["sethsv",{"0":{"2012":1,"2014":1},"1":{"2015":1},"2":{"49":1,"582":1,"1332":7,"1953":1,"1960":1,"2051":7,"2054":2,"2058":3}}],["setups",{"2":{"659":1,"662":1,"1830":6,"2408":1}}],["setup",{"0":{"302":1,"449":1,"1124":1,"1127":1,"1130":1,"1298":1,"1433":1,"1434":1,"1575":1,"1657":1,"2430":1,"2443":1,"2444":1,"2468":1,"2508":1},"1":{"450":1,"451":1,"452":1,"1434":1,"1435":1,"1436":1,"1576":1,"1577":1,"2431":1,"2432":1,"2433":1},"2":{"14":1,"23":1,"93":1,"176":1,"302":1,"322":1,"331":1,"332":1,"334":2,"365":1,"366":1,"428":1,"445":1,"449":1,"456":1,"574":1,"624":1,"702":1,"1129":1,"1176":1,"1197":1,"1237":1,"1338":1,"1416":1,"1435":1,"1560":1,"1815":1,"1821":1,"1824":1,"1825":1,"1830":2,"1852":1,"2042":1,"2073":1,"2139":1,"2177":1,"2262":1,"2276":1,"2289":1,"2290":1,"2291":1,"2300":1,"2309":1,"2418":1,"2428":2,"2429":1,"2432":1,"2438":1,"2440":1,"2442":1,"2468":8,"2502":1,"2634":1,"2743":2}}],["set",{"0":{"350":1,"647":1,"649":1,"652":1,"675":1,"677":1,"741":1,"743":1,"745":1,"747":1,"749":1,"751":1,"768":1,"770":1,"772":1,"774":1,"776":1,"778":1,"800":1,"802":1,"804":1,"806":1,"808":1,"810":1,"832":1,"834":1,"836":1,"838":1,"840":1,"842":1,"867":1,"869":1,"871":1,"873":1,"875":1,"877":1,"901":1,"903":1,"905":1,"907":1,"909":1,"911":1,"935":1,"937":1,"939":1,"941":1,"943":1,"945":1,"969":1,"971":1,"973":1,"975":1,"977":1,"979":1,"1003":1,"1005":1,"1007":1,"1009":1,"1011":1,"1013":1,"1037":1,"1039":1,"1041":1,"1043":1,"1045":1,"1047":1,"1071":1,"1073":1,"1075":1,"1077":1,"1079":1,"1081":1,"1105":1,"1107":1,"1109":1,"1111":1,"1113":1,"1115":1,"1158":1,"1160":1,"1162":1,"1164":1,"1166":1,"1168":1,"1343":1,"1345":1,"1545":1,"1603":1,"1626":1,"1628":1,"1649":1,"1743":1,"1745":1,"1767":1,"1769":1,"1877":1,"1900":1,"1970":1,"1972":1,"2006":1,"2008":1,"2188":1,"2192":1,"2194":1,"2277":1,"2504":1},"1":{"648":1,"650":1,"653":1,"676":1,"678":1,"742":1,"744":1,"746":1,"748":1,"750":1,"752":1,"769":1,"771":1,"773":1,"775":1,"777":1,"779":1,"801":1,"803":1,"805":1,"807":1,"809":1,"811":1,"833":1,"835":1,"837":1,"839":1,"841":1,"843":1,"868":1,"870":1,"872":1,"874":1,"876":1,"878":1,"902":1,"904":1,"906":1,"908":1,"910":1,"912":1,"936":1,"938":1,"940":1,"942":1,"944":1,"946":1,"970":1,"972":1,"974":1,"976":1,"978":1,"980":1,"1004":1,"1006":1,"1008":1,"1010":1,"1012":1,"1014":1,"1038":1,"1040":1,"1042":1,"1044":1,"1046":1,"1048":1,"1072":1,"1074":1,"1076":1,"1078":1,"1080":1,"1082":1,"1106":1,"1108":1,"1110":1,"1112":1,"1114":1,"1116":1,"1159":1,"1161":1,"1163":1,"1165":1,"1167":1,"1169":1,"1546":1,"1604":1,"1627":1,"1629":1,"1650":1,"1744":1,"1746":1,"1768":1,"1770":1,"1901":1,"1971":1,"1973":1,"2007":1,"2009":1,"2189":1,"2193":1,"2195":1,"2505":1,"2506":1,"2507":1,"2508":1,"2509":1,"2510":1},"2":{"6":1,"23":1,"25":1,"28":1,"30":1,"33":1,"38":1,"49":1,"50":2,"63":1,"83":1,"90":1,"92":1,"93":1,"114":2,"134":1,"141":1,"153":2,"163":1,"173":2,"191":5,"195":2,"199":3,"209":1,"211":1,"222":2,"228":1,"236":4,"243":6,"266":2,"277":2,"317":1,"360":1,"365":2,"366":2,"367":1,"371":1,"385":1,"396":2,"411":2,"413":1,"414":1,"415":1,"417":1,"430":1,"433":1,"438":1,"446":1,"462":1,"496":1,"497":1,"501":1,"502":1,"505":1,"509":4,"512":1,"520":1,"529":1,"558":1,"574":1,"576":6,"578":1,"580":2,"592":1,"593":2,"594":2,"596":1,"602":1,"607":1,"610":3,"625":1,"641":3,"643":1,"647":1,"648":3,"649":1,"650":3,"652":1,"653":1,"656":1,"662":1,"665":1,"675":1,"676":3,"677":1,"678":3,"689":1,"696":16,"699":1,"703":1,"707":4,"727":1,"730":1,"739":1,"740":1,"741":1,"742":3,"743":1,"744":3,"745":1,"746":1,"747":1,"748":1,"756":1,"758":1,"766":1,"767":1,"768":1,"769":3,"770":1,"771":3,"772":1,"773":1,"774":1,"775":1,"785":1,"787":1,"798":1,"799":1,"800":1,"801":3,"802":1,"803":3,"804":1,"805":1,"806":1,"807":1,"817":1,"819":1,"828":1,"829":1,"832":1,"833":3,"834":1,"835":3,"836":1,"837":1,"838":1,"839":1,"849":1,"851":1,"852":1,"863":1,"864":1,"867":1,"868":3,"869":1,"870":3,"871":1,"872":1,"873":1,"874":1,"884":1,"886":1,"897":1,"898":1,"901":1,"902":3,"903":1,"904":3,"905":1,"906":1,"907":1,"908":1,"918":1,"920":1,"931":1,"932":1,"935":1,"936":3,"937":1,"938":3,"939":1,"940":1,"941":1,"942":1,"952":1,"954":1,"965":1,"966":1,"969":1,"970":3,"971":1,"972":3,"973":1,"974":1,"975":1,"976":1,"986":1,"988":1,"999":1,"1000":1,"1003":1,"1004":3,"1005":1,"1006":3,"1007":1,"1008":1,"1009":1,"1010":1,"1020":1,"1022":1,"1023":1,"1033":1,"1034":1,"1037":1,"1038":3,"1039":1,"1040":3,"1041":1,"1042":1,"1043":1,"1044":1,"1054":1,"1056":1,"1057":1,"1067":1,"1068":1,"1071":1,"1072":3,"1073":1,"1074":3,"1075":1,"1076":1,"1077":1,"1078":1,"1088":1,"1090":1,"1101":1,"1102":1,"1105":1,"1106":3,"1107":1,"1108":3,"1109":1,"1110":1,"1111":1,"1112":1,"1144":1,"1146":1,"1154":1,"1155":1,"1158":1,"1159":3,"1160":1,"1161":3,"1162":1,"1163":1,"1164":1,"1165":1,"1174":1,"1177":1,"1181":1,"1195":1,"1198":1,"1213":1,"1214":1,"1230":1,"1255":1,"1294":1,"1300":4,"1303":1,"1304":1,"1318":1,"1319":1,"1321":1,"1329":4,"1330":1,"1331":1,"1332":9,"1335":1,"1336":1,"1338":1,"1340":1,"1341":8,"1343":2,"1344":1,"1345":2,"1346":1,"1347":1,"1355":1,"1383":6,"1385":2,"1387":1,"1390":2,"1393":1,"1394":1,"1397":2,"1399":1,"1400":4,"1401":1,"1404":1,"1411":1,"1416":1,"1430":1,"1431":2,"1436":1,"1441":1,"1451":1,"1456":1,"1459":1,"1464":1,"1469":1,"1479":1,"1480":1,"1495":1,"1496":1,"1507":2,"1513":1,"1514":2,"1515":1,"1525":4,"1526":1,"1530":3,"1533":1,"1534":1,"1545":1,"1570":1,"1573":3,"1575":1,"1576":2,"1579":3,"1594":1,"1600":1,"1605":1,"1626":1,"1628":1,"1634":4,"1642":1,"1649":1,"1650":2,"1665":1,"1670":6,"1671":4,"1716":1,"1722":3,"1725":1,"1726":2,"1729":2,"1730":5,"1733":4,"1743":1,"1744":1,"1745":1,"1746":1,"1747":1,"1749":1,"1767":1,"1768":1,"1769":1,"1770":1,"1793":49,"1801":3,"1803":1,"1804":1,"1806":1,"1807":5,"1816":1,"1817":6,"1820":1,"1822":5,"1826":4,"1838":1,"1842":1,"1849":3,"1850":1,"1853":2,"1854":3,"1855":2,"1857":2,"1858":4,"1859":13,"1861":4,"1862":4,"1864":2,"1865":1,"1866":5,"1873":13,"1876":3,"1877":8,"1878":2,"1886":1,"1890":1,"1900":1,"1907":1,"1910":6,"1911":1,"1912":1,"1936":1,"1942":4,"1946":1,"1947":2,"1949":3,"1950":1,"1952":2,"1954":8,"1957":4,"1958":4,"1959":3,"1970":1,"1971":3,"1972":1,"1973":3,"1974":1,"1976":1,"2006":1,"2007":1,"2008":1,"2009":1,"2012":1,"2013":3,"2014":1,"2015":3,"2043":6,"2044":1,"2047":1,"2048":3,"2050":2,"2051":10,"2052":2,"2054":2,"2055":2,"2056":1,"2060":4,"2063":1,"2066":1,"2072":1,"2076":1,"2099":1,"2106":2,"2107":12,"2113":1,"2119":1,"2126":1,"2128":3,"2131":5,"2141":2,"2143":1,"2147":2,"2149":1,"2150":3,"2152":3,"2153":1,"2154":1,"2161":2,"2162":1,"2167":1,"2171":6,"2174":1,"2175":4,"2183":2,"2188":1,"2189":1,"2227":1,"2228":1,"2229":1,"2243":1,"2252":1,"2254":1,"2261":1,"2262":2,"2263":2,"2264":1,"2272":1,"2298":1,"2299":1,"2300":2,"2304":1,"2305":1,"2311":1,"2323":1,"2325":1,"2341":1,"2348":1,"2353":1,"2360":1,"2367":1,"2370":2,"2371":49,"2372":3,"2385":1,"2396":2,"2411":1,"2420":1,"2421":4,"2442":1,"2445":1,"2448":1,"2454":1,"2456":1,"2458":1,"2469":1,"2472":1,"2475":1,"2480":4,"2490":3,"2491":1,"2492":2,"2503":1,"2504":2,"2506":1,"2508":2,"2513":2,"2524":1,"2555":1,"2567":1,"2574":2,"2575":5,"2576":2,"2577":10,"2581":1,"2605":1,"2606":2,"2607":4,"2615":1,"2661":1,"2666":1,"2679":1,"2696":2,"2701":1,"2702":2,"2727":1,"2728":1,"2730":1,"2737":4,"2744":1,"2748":1,"2749":1}}],["se",{"2":{"5":1,"176":1,"2069":4}}],["seeks",{"2":{"2355":1}}],["seen",{"2":{"175":1,"232":1,"625":1,"1398":1,"1451":1,"2128":1,"2483":1}}],["seem",{"2":{"119":1,"273":1,"276":2,"1298":1,"1683":1,"2577":1}}],["seems",{"2":{"50":1,"1283":1}}],["sees",{"0":{"1565":1},"2":{"49":1,"215":1,"1670":1}}],["see",{"2":{"2":1,"14":1,"118":1,"132":1,"138":1,"152":1,"153":1,"166":1,"172":1,"174":1,"179":1,"182":2,"186":1,"189":1,"196":1,"228":1,"229":1,"232":1,"240":1,"247":1,"279":1,"313":1,"315":1,"331":2,"341":1,"349":1,"372":1,"408":1,"409":1,"410":1,"429":1,"432":2,"492":1,"496":1,"502":2,"505":4,"511":3,"515":2,"535":1,"540":1,"547":1,"610":2,"624":1,"626":2,"638":1,"639":1,"656":1,"659":3,"661":1,"681":2,"687":1,"690":1,"693":1,"701":1,"704":1,"705":1,"820":1,"1127":4,"1130":4,"1218":1,"1235":1,"1238":2,"1241":1,"1242":1,"1243":1,"1254":1,"1255":5,"1260":1,"1265":1,"1267":1,"1277":1,"1278":1,"1281":1,"1282":1,"1289":1,"1297":1,"1300":1,"1325":2,"1330":1,"1332":1,"1334":1,"1335":2,"1341":1,"1359":1,"1365":1,"1376":1,"1380":2,"1383":1,"1389":1,"1393":1,"1402":1,"1406":1,"1407":1,"1412":1,"1416":1,"1431":1,"1441":1,"1446":1,"1460":1,"1471":1,"1498":2,"1499":2,"1501":1,"1511":1,"1565":1,"1582":2,"1589":1,"1659":1,"1662":1,"1675":3,"1714":1,"1724":1,"1791":1,"1842":2,"1852":1,"1854":1,"1855":1,"1864":2,"1876":1,"1908":1,"1910":2,"1932":1,"1939":1,"1945":1,"1958":1,"1959":1,"2031":1,"2032":1,"2041":1,"2044":1,"2047":1,"2048":1,"2072":1,"2111":1,"2128":1,"2145":1,"2171":1,"2178":1,"2229":1,"2240":1,"2255":2,"2258":1,"2259":2,"2263":6,"2273":1,"2280":1,"2287":1,"2288":1,"2289":1,"2290":1,"2291":1,"2298":1,"2299":1,"2300":1,"2311":2,"2316":1,"2335":1,"2355":1,"2356":1,"2357":1,"2358":1,"2359":1,"2360":1,"2361":1,"2362":1,"2363":1,"2364":1,"2365":1,"2366":1,"2367":2,"2368":1,"2369":1,"2370":1,"2371":1,"2372":1,"2373":1,"2374":1,"2375":1,"2376":1,"2377":1,"2378":1,"2379":1,"2380":1,"2381":1,"2382":1,"2383":1,"2384":1,"2385":1,"2405":1,"2409":1,"2416":1,"2422":1,"2424":1,"2440":1,"2450":1,"2453":1,"2454":2,"2460":1,"2475":1,"2477":1,"2490":2,"2521":1,"2533":1,"2553":2,"2555":1,"2559":1,"2561":1,"2562":1,"2564":1,"2565":1,"2566":4,"2569":1,"2570":2,"2576":2,"2577":2,"2587":3,"2588":1,"2593":1,"2596":3,"2603":1,"2614":1,"2615":1,"2671":1,"2697":4,"2705":1,"2727":1,"2728":1,"2739":1,"2748":1}}],["swy",{"2":{"789":4,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1}}],["sw1",{"2":{"669":6,"792":5,"857":5,"891":5,"925":5,"959":5,"993":5,"1027":5,"1061":5,"1095":5}}],["swo",{"2":{"334":1}}],["swordfish",{"2":{"222":1}}],["swclk",{"2":{"334":2,"2352":1,"2353":1,"2513":1,"2530":1}}],["swdio",{"2":{"334":2,"2352":1,"2353":1,"2513":1,"2530":1}}],["swd",{"2":{"322":1,"328":1,"334":1,"2530":1}}],["swx",{"2":{"236":1,"786":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1024":3,"1055":1,"1058":3,"1089":1,"1092":3}}],["sw",{"2":{"217":1,"786":3,"789":15,"850":1,"854":2,"885":1,"888":2,"919":1,"922":2,"953":1,"956":2,"987":1,"990":2,"1021":2,"1024":6,"1055":2,"1058":6,"1089":2,"1092":6,"1948":1,"2034":1,"2376":1}}],["switzerland",{"2":{"2703":2}}],["switched",{"2":{"1340":1,"1399":1,"2035":1,"2491":1}}],["switches",{"0":{"1547":1,"1792":1,"1828":1,"2682":1},"1":{"1548":1,"1549":1,"1550":1,"1551":1,"1552":1},"2":{"114":1,"199":1,"236":1,"247":1,"249":1,"563":1,"1236":1,"1276":1,"1325":1,"1326":1,"1335":1,"1406":1,"1471":1,"1547":1,"1548":3,"1573":2,"1792":1,"1828":1,"1937":1,"2117":1,"2267":1,"2268":2,"2269":1,"2270":1,"2311":1,"2479":1,"2625":1,"2682":2,"2697":1}}],["switchplate",{"2":{"211":1}}],["switchs",{"2":{"160":1}}],["switching",{"0":{"1335":1,"2149":1,"2367":1},"1":{"1336":1},"2":{"50":1,"114":1,"132":1,"191":1,"516":1,"1275":2,"1295":1,"1335":1,"1337":1,"1454":1,"1494":1,"1654":1,"1816":1,"1828":1,"1829":1,"1918":1,"2140":1,"2145":2,"2161":1,"2348":1,"2367":1}}],["switch",{"0":{"26":1,"105":1,"231":1,"247":1,"1276":1,"1541":1,"1542":1,"1543":1,"1544":1,"1548":1,"1551":2,"1552":2,"2171":1},"2":{"3":1,"15":1,"16":1,"94":1,"105":15,"107":1,"114":8,"191":2,"194":3,"195":2,"231":3,"235":1,"236":5,"247":7,"249":4,"334":1,"502":3,"534":2,"563":1,"572":1,"573":1,"626":1,"1234":1,"1236":3,"1253":1,"1276":1,"1288":1,"1294":1,"1302":2,"1303":1,"1325":5,"1326":1,"1332":2,"1335":2,"1339":3,"1340":1,"1343":1,"1344":1,"1359":3,"1360":2,"1365":1,"1375":1,"1384":1,"1385":1,"1404":1,"1416":3,"1423":2,"1430":3,"1446":2,"1454":1,"1494":1,"1506":1,"1511":1,"1518":5,"1519":1,"1523":2,"1525":1,"1527":1,"1530":3,"1531":2,"1537":2,"1541":1,"1542":1,"1543":1,"1544":1,"1547":8,"1548":7,"1549":7,"1551":1,"1552":1,"1573":6,"1634":1,"1729":1,"1748":1,"1750":1,"1792":1,"1813":1,"1826":1,"1830":1,"1836":1,"1859":1,"1861":1,"1868":1,"1871":1,"1876":1,"1877":2,"1878":1,"1908":1,"1933":2,"1934":1,"1935":2,"1936":2,"1937":1,"1938":1,"1940":1,"1941":2,"1943":4,"1952":1,"1958":1,"1959":1,"1975":1,"1977":1,"2044":2,"2047":1,"2078":1,"2137":1,"2145":2,"2146":2,"2149":3,"2150":1,"2167":1,"2168":1,"2169":2,"2170":2,"2171":7,"2183":1,"2184":6,"2240":1,"2259":1,"2263":1,"2268":2,"2272":1,"2273":5,"2279":1,"2280":2,"2302":2,"2311":3,"2328":1,"2361":1,"2379":1,"2384":6,"2402":2,"2413":1,"2414":1,"2415":1,"2490":1,"2498":1,"2502":1,"2513":1,"2558":2,"2559":1,"2566":2,"2604":1,"2614":4,"2674":2,"2682":1,"2697":1,"2706":1,"2712":1,"2727":3,"2728":2,"2735":2,"2736":2,"2737":1,"2738":1,"2746":3}}],["swillkb",{"2":{"2267":1}}],["swipe",{"2":{"1839":12}}],["swin",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["swirls",{"2":{"2038":1}}],["swirling",{"2":{"2036":1,"2040":1}}],["swirl",{"2":{"292":1,"1948":2,"2034":2,"2036":1,"2037":2,"2038":2,"2039":1,"2040":1,"2062":1,"2063":1,"2376":2,"2711":1}}],["swift65",{"2":{"266":2}}],["swiftrax",{"2":{"191":2,"277":1}}],["swiss",{"2":{"211":1,"2269":1,"2703":4}}],["sweep",{"2":{"191":1,"249":1}}],["swedish",{"2":{"5":2,"1355":1,"2701":1,"2703":11}}],["swapping",{"2":{"194":1,"689":1,"1130":1,"1271":3,"2157":1,"2353":1,"2543":1,"2628":1,"2705":1}}],["swapped",{"0":{"1271":1},"2":{"166":1,"222":1,"681":1,"693":1,"1216":2,"1633":1,"2305":1}}],["swap",{"0":{"2154":1,"2156":1,"2383":1},"1":{"2155":1,"2156":1,"2157":1,"2158":1},"2":{"94":1,"114":1,"149":1,"157":1,"176":2,"191":1,"199":2,"211":2,"231":4,"247":1,"1129":2,"1130":2,"1140":1,"1141":1,"1142":1,"1319":1,"1398":4,"1399":6,"1446":4,"1548":1,"1557":1,"2154":4,"2155":3,"2156":17,"2157":3,"2158":9,"2370":31,"2383":16,"2396":31,"2709":2}}],["sudden",{"2":{"2226":1}}],["sudo",{"2":{"454":1,"1238":8,"1239":6,"1254":1,"2262":1,"2431":7,"2464":7,"2556":1}}],["sunk",{"2":{"667":1,"790":1,"855":1,"889":1,"923":1,"957":1,"991":1,"1025":1,"1059":1,"1093":1}}],["sunsetter",{"2":{"211":1}}],["suffer",{"2":{"660":1,"690":1,"1410":1}}],["sufficient",{"2":{"2149":1,"2567":1,"2745":1}}],["suffices",{"2":{"1670":1}}],["suffice",{"2":{"355":1}}],["suffix",{"2":{"568":4}}],["sugar|",{"2":{"621":1}}],["sugar||order",{"2":{"621":1}}],["sugar",{"2":{"621":1}}],["suggest",{"2":{"2293":1}}],["suggestions",{"2":{"561":1,"2409":1,"2454":1}}],["suggested",{"2":{"199":1,"341":1,"587":1,"1880":1,"2169":1}}],["summary",{"2":{"300":1,"1315":1,"1322":1}}],["sust",{"2":{"1793":1,"2371":1}}],["sustain",{"2":{"249":1,"1793":2,"2371":2}}],["susceptible",{"2":{"341":1,"1325":2,"1329":1}}],["suspense",{"2":{"222":1}}],["suspend",{"0":{"590":2,"591":1,"1774":1,"2019":1},"1":{"1775":1,"2020":1},"2":{"92":3,"93":1,"94":1,"112":1,"114":4,"133":1,"134":1,"149":2,"176":1,"222":3,"249":1,"263":2,"266":1,"277":2,"502":1,"515":1,"588":2,"589":2,"590":2,"591":4,"1774":1,"2019":1,"2125":1,"2573":1,"2577":4,"2699":2}}],["suspended",{"2":{"74":1,"114":2,"134":1,"222":1,"249":2,"590":1,"1570":1,"1577":1,"1730":1,"1775":1,"1954":1,"2020":1}}],["suspending",{"2":{"25":1,"502":1}}],["succeeds",{"2":{"2128":1}}],["succeed",{"2":{"1686":6}}],["success",{"2":{"554":1,"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"1185":1,"1190":1,"1193":1,"2453":4}}],["successfully",{"2":{"407":1,"411":1,"552":1,"1381":1,"1686":1,"1822":1,"2125":1,"2143":1,"2353":1,"2439":1,"2544":1}}],["successful",{"2":{"324":1,"1137":1,"1340":1,"2131":1}}],["successive",{"2":{"266":1}}],["succession",{"2":{"191":1}}],["such",{"2":{"55":1,"69":1,"87":1,"103":1,"118":1,"123":1,"124":1,"126":1,"132":1,"153":1,"163":1,"198":1,"229":1,"230":1,"234":1,"240":1,"244":1,"246":1,"263":1,"352":1,"363":1,"371":1,"374":1,"432":1,"457":1,"479":1,"481":1,"505":1,"529":1,"533":1,"575":1,"585":1,"586":1,"592":2,"599":1,"606":1,"625":1,"630":1,"684":1,"685":1,"694":1,"700":1,"1175":1,"1217":1,"1234":1,"1240":1,"1335":1,"1336":1,"1361":1,"1366":1,"1377":1,"1378":1,"1379":2,"1385":1,"1398":1,"1399":1,"1405":1,"1431":1,"1445":2,"1498":1,"1509":1,"1512":1,"1582":1,"1630":1,"1631":1,"1654":1,"1670":1,"1683":1,"1733":1,"1788":2,"1814":1,"1829":1,"1842":2,"1876":1,"1878":1,"1918":2,"1957":2,"2126":1,"2129":1,"2131":1,"2133":1,"2170":2,"2182":2,"2183":2,"2236":1,"2240":1,"2245":1,"2247":1,"2249":1,"2254":1,"2267":1,"2279":1,"2280":1,"2297":1,"2303":2,"2313":1,"2325":2,"2348":1,"2397":1,"2402":1,"2406":1,"2427":1,"2445":1,"2492":3,"2503":3,"2523":2,"2524":1,"2548":1,"2554":1,"2566":4,"2567":3,"2569":1,"2571":1,"2573":2,"2574":1,"2577":1,"2607":1,"2622":1,"2628":1,"2671":1,"2686":1,"2702":1,"2709":2,"2728":1,"2734":1,"2737":1,"2741":1,"2743":1,"2749":1}}],["surprised",{"2":{"2567":1}}],["surplus",{"2":{"160":1}}],["surrogate",{"2":{"2183":1,"2199":1}}],["surrounding",{"2":{"453":2,"1950":2}}],["surfaces",{"2":{"2272":3,"2576":4}}],["surface",{"2":{"191":1,"1537":1,"1835":1,"1849":1,"2273":1,"2573":2,"2576":29,"2665":1}}],["sure",{"2":{"50":1,"334":1,"360":1,"453":2,"455":1,"508":1,"537":2,"540":1,"548":1,"551":1,"556":7,"557":1,"560":2,"609":1,"613":1,"621":1,"626":1,"627":1,"1240":2,"1242":1,"1260":1,"1283":1,"1286":1,"1332":1,"1335":1,"1336":1,"1375":1,"1430":1,"1515":1,"1521":1,"2111":1,"2118":1,"2131":1,"2145":1,"2169":1,"2171":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2245":1,"2247":1,"2249":1,"2255":1,"2262":1,"2273":1,"2274":1,"2276":1,"2279":1,"2306":1,"2309":1,"2342":1,"2348":1,"2353":1,"2417":1,"2429":1,"2436":1,"2455":1,"2457":1,"2477":1,"2485":1,"2491":1,"2504":1,"2566":1,"2577":1,"2705":1,"2707":1}}],["suits",{"2":{"2479":1}}],["suite",{"2":{"407":2,"411":2}}],["suited",{"2":{"211":1,"355":1}}],["suitable",{"2":{"153":1,"1287":1,"1329":1,"2418":1,"2629":1,"2728":1,"2757":1}}],["suihankey",{"2":{"143":6}}],["supremely",{"2":{"1353":1}}],["superfluous",{"2":{"2728":1}}],["supercharged",{"2":{"1651":1}}],["superior",{"2":{"1321":1,"1326":1}}],["super",{"0":{"1375":1},"2":{"616":1,"2235":1,"2507":1}}],["superscripted",{"2":{"293":1}}],["superscript",{"0":{"293":1}}],["supersedes",{"2":{"2441":1}}],["superseded",{"2":{"3":1,"7":1,"15":1,"25":1,"38":1}}],["superseeds",{"2":{"236":1}}],["suppose",{"2":{"2473":1}}],["supposed",{"2":{"2044":1,"2744":1}}],["supposing",{"2":{"1940":1}}],["supports",{"2":{"166":1,"243":1,"248":1,"313":1,"318":1,"411":1,"454":1,"488":1,"499":1,"513":1,"538":1,"560":1,"589":1,"630":1,"635":1,"641":1,"664":1,"681":3,"684":1,"685":1,"693":1,"694":1,"729":1,"755":1,"784":1,"816":1,"848":1,"883":1,"917":1,"951":1,"985":1,"1019":1,"1053":1,"1087":1,"1125":1,"1143":1,"1319":1,"1327":1,"1335":2,"1349":1,"1553":1,"1573":1,"1575":1,"1802":1,"1822":1,"1837":1,"1841":1,"1842":1,"1849":1,"2031":1,"2114":1,"2118":1,"2144":1,"2145":1,"2149":1,"2150":1,"2181":2,"2182":1,"2183":5,"2262":1,"2302":3,"2341":1,"2441":1,"2503":1,"2548":1,"2549":1,"2574":2,"2575":4,"2724":1,"2729":1}}],["supporting",{"0":{"1347":1,"2613":1},"1":{"2614":1,"2615":1,"2616":1,"2617":1,"2618":1,"2619":1,"2620":1},"2":{"50":1,"318":1,"535":1,"1630":1,"1851":3,"2108":1,"2148":1,"2245":1,"2247":1,"2719":1}}],["supported",{"0":{"1279":1,"1311":1,"1327":1,"1491":1,"1571":1,"1589":1,"1811":1,"2136":1,"2547":1},"1":{"1328":1,"1329":1,"1330":1,"1492":1,"2548":1,"2549":1},"2":{"49":2,"69":1,"118":1,"137":1,"153":1,"154":2,"163":2,"172":1,"213":1,"248":1,"262":1,"266":1,"285":1,"318":1,"371":1,"374":1,"437":1,"455":1,"511":1,"538":1,"560":1,"600":1,"606":1,"624":1,"630":1,"635":1,"656":2,"661":1,"663":2,"681":1,"1128":1,"1132":2,"1133":2,"1134":1,"1227":1,"1230":1,"1265":1,"1273":1,"1279":1,"1315":2,"1316":2,"1317":2,"1322":2,"1336":1,"1357":1,"1359":1,"1394":1,"1457":1,"1463":1,"1466":1,"1467":1,"1491":2,"1492":2,"1493":1,"1509":1,"1547":1,"1557":1,"1589":1,"1632":1,"1724":1,"1813":1,"1820":2,"1833":1,"1841":1,"1842":1,"1844":1,"1846":1,"1849":1,"1850":1,"1851":2,"1853":2,"1854":1,"1910":1,"1911":1,"1912":1,"1945":1,"2072":2,"2075":1,"2146":1,"2161":2,"2183":1,"2245":1,"2247":1,"2252":1,"2263":3,"2350":1,"2421":1,"2441":1,"2454":2,"2469":1,"2523":1,"2543":2,"2546":2,"2548":4,"2552":1,"2565":1,"2567":1,"2573":1,"2574":2,"2578":3,"2623":1,"2686":2,"2705":1}}],["support",{"0":{"14":1,"35":1,"80":1,"81":1,"100":1,"108":1,"118":1,"130":1,"138":1,"145":1,"163":1,"232":1,"533":1,"534":1,"1217":1,"1263":1,"1276":1,"1289":1,"1381":1,"1509":1,"1902":1,"2076":1,"2380":1,"2384":1,"2522":1,"2543":1,"2550":1,"2551":1,"2552":1,"2702":1,"2717":1},"1":{"36":1,"1264":1,"1903":1,"1904":1,"1905":1,"1906":1,"1907":1,"1908":1,"1909":1,"1910":1,"1911":1,"1912":1,"1913":1,"1914":1,"1915":1,"1916":1,"1917":1,"2718":1,"2719":1,"2720":1,"2721":1},"2":{"10":3,"35":1,"46":1,"49":4,"50":2,"63":5,"65":1,"74":3,"75":1,"76":1,"81":1,"86":2,"89":1,"93":12,"107":1,"108":1,"113":1,"114":15,"118":2,"120":1,"130":5,"131":1,"133":1,"134":14,"138":1,"145":1,"146":1,"149":9,"153":1,"154":1,"156":1,"160":7,"163":2,"167":1,"175":4,"176":18,"189":2,"190":1,"191":9,"199":10,"201":1,"210":3,"211":28,"213":1,"218":1,"222":5,"232":2,"234":1,"236":14,"248":2,"249":11,"262":1,"265":1,"266":4,"277":2,"320":2,"370":1,"374":1,"391":1,"403":1,"414":1,"415":1,"417":1,"423":1,"424":1,"432":1,"433":1,"470":1,"492":1,"493":2,"495":1,"502":2,"505":1,"506":1,"515":2,"534":1,"535":1,"537":2,"606":1,"607":1,"608":1,"609":1,"642":1,"654":2,"688":1,"1121":1,"1195":1,"1212":1,"1214":1,"1240":1,"1264":1,"1265":1,"1276":1,"1278":1,"1319":1,"1321":1,"1323":1,"1324":1,"1326":1,"1330":1,"1347":1,"1352":1,"1377":2,"1383":1,"1384":1,"1399":1,"1411":1,"1454":1,"1455":2,"1491":3,"1493":1,"1494":1,"1549":1,"1562":2,"1631":1,"1728":1,"1799":1,"1811":1,"1821":2,"1851":1,"1881":1,"1921":1,"1948":2,"1949":2,"2063":1,"2064":1,"2102":2,"2113":1,"2128":1,"2129":7,"2132":1,"2145":1,"2153":1,"2154":1,"2172":1,"2183":3,"2229":1,"2238":1,"2252":1,"2259":1,"2263":2,"2277":1,"2284":2,"2286":1,"2287":1,"2288":1,"2289":1,"2290":1,"2291":1,"2304":1,"2316":1,"2335":1,"2377":2,"2384":1,"2417":1,"2418":1,"2441":1,"2477":3,"2497":1,"2506":3,"2513":1,"2522":2,"2523":1,"2531":1,"2535":1,"2546":10,"2548":1,"2549":3,"2550":1,"2553":2,"2565":1,"2566":1,"2567":2,"2573":2,"2576":11,"2613":1,"2617":1,"2674":1,"2701":2,"2704":1,"2706":2,"2714":1,"2718":1,"2719":1,"2753":1}}],["suppression",{"2":{"1677":1,"2738":1}}],["suppress",{"2":{"1670":3}}],["suppressed",{"2":{"1668":1,"1670":2,"1673":1,"1674":1,"1677":2,"1842":1}}],["supplements",{"2":{"572":1}}],["supplement",{"2":{"563":1}}],["supplying",{"2":{"598":1}}],["supply",{"2":{"123":1,"318":1,"370":1,"454":1,"457":1,"1225":1,"1471":1,"2514":1}}],["supplied",{"2":{"118":1,"146":1,"230":1,"305":1,"374":1,"393":2,"394":2,"416":1,"430":3,"1177":1,"1182":1,"1361":1,"2523":1,"2544":1,"2575":1,"2576":1,"2577":14,"2581":1}}],["sublime",{"2":{"2485":1}}],["subfolder",{"2":{"2259":1,"2294":1,"2753":1}}],["subchain",{"2":{"1451":1}}],["subcommands",{"0":{"430":1},"2":{"427":1,"429":1,"430":1,"442":1}}],["subcommand|general|default>",{"2":{"416":1}}],["subcommand",{"2":{"95":1,"114":1,"132":1,"134":1,"149":1,"380":1,"413":1,"428":3,"430":5,"432":1,"433":1,"435":1,"436":3,"441":1}}],["subreddit",{"0":{"2715":1},"2":{"551":1,"2280":1}}],["subprocess",{"2":{"484":1}}],["subjective",{"2":{"2567":1}}],["subject",{"2":{"317":1,"2485":1,"2577":1}}],["subdirectories",{"2":{"236":1,"2259":1}}],["subdirectory",{"2":{"160":1,"176":1}}],["subtracting",{"2":{"1859":1}}],["subtracted",{"2":{"465":1}}],["subtlety",{"2":{"194":1}}],["subtarget",{"2":{"49":1}}],["subs",{"2":{"1527":2}}],["subscripted",{"2":{"293":1}}],["substrings",{"2":{"1441":1}}],["substring",{"2":{"1441":1,"2753":1,"2754":1}}],["substraction",{"2":{"1326":1}}],["substituting",{"2":{"341":1}}],["substitutions",{"2":{"49":1}}],["substantially",{"2":{"109":1}}],["subsequent",{"2":{"341":1,"358":1,"1520":1,"2577":1,"2719":1}}],["subsequently",{"2":{"49":1,"265":1,"340":1,"2448":1,"2567":1,"2581":1}}],["subset",{"2":{"65":1,"681":1,"1822":1,"2326":1,"2749":1,"2753":1}}],["subsystem==",{"2":{"1254":1}}],["subsystems",{"0":{"2181":1},"1":{"2182":1},"2":{"77":2,"163":1,"198":1,"2114":1,"2178":1,"2181":1,"2543":1,"2548":2,"2720":1}}],["subsystem",{"0":{"234":1,"1131":1},"1":{"1132":1,"1133":1,"1134":1},"2":{"11":1,"107":1,"114":2,"153":1,"175":1,"244":1,"317":2,"515":1,"690":1,"1126":1,"1127":2,"1130":2,"1132":1,"1133":2,"1134":1,"1723":1,"1908":1,"1944":1}}],["sub",{"0":{"293":1,"2295":1},"2":{"6":1,"113":1,"114":1,"133":1,"134":1,"149":1,"499":1,"513":1,"1240":1,"2294":1,"2295":7,"2299":21,"2300":21,"2596":1}}],["submission",{"2":{"352":2,"353":1,"355":1,"356":1,"2566":1}}],["submissions",{"2":{"103":1,"126":1,"275":1,"341":1,"1376":1,"2565":1,"2566":1}}],["submits",{"2":{"519":1}}],["submit",{"2":{"304":1,"352":1,"354":2,"447":1,"554":1,"556":2,"559":2,"560":1,"2567":1,"2656":2}}],["submitters",{"2":{"2564":1,"2566":2}}],["submitter",{"2":{"341":1,"2564":1,"2567":1}}],["submitted",{"2":{"116":1,"522":1,"2563":1,"2564":1,"2565":1,"2566":2,"2719":1}}],["submitting",{"0":{"314":1},"2":{"1":1,"307":1,"315":1,"560":1,"622":1,"2255":2,"2566":1}}],["submodules=on",{"2":{"2475":2}}],["submodules",{"0":{"10":1,"360":1},"2":{"10":1,"26":1,"69":1,"266":1,"349":1,"360":1,"2252":2,"2255":2,"2437":1,"2475":2}}],["submodule",{"0":{"6":1,"12":1,"21":1},"2":{"6":1,"10":1,"12":1,"21":1,"24":1,"114":2,"134":1,"160":1,"176":4,"191":1,"199":4,"211":2,"222":1,"249":2,"266":1,"349":2,"2255":4}}],["soi8",{"2":{"2518":1}}],["socket",{"2":{"2117":1,"2275":1}}],["sockets",{"2":{"114":1,"2117":1}}],["sost",{"2":{"1793":1,"2371":1}}],["sostenuto",{"2":{"1793":2,"2371":2}}],["sodium62",{"2":{"249":1}}],["soda",{"2":{"176":1,"226":2,"236":2}}],["sonix",{"2":{"1143":1}}],["sony",{"2":{"133":1,"134":1}}],["songs",{"0":{"1398":1},"2":{"654":1,"1398":2,"1399":1,"1400":1,"2607":2}}],["song",{"0":{"27":1},"2":{"27":1,"134":1,"572":1,"1332":1,"1398":23,"1399":16,"1448":4,"1549":4,"1686":12,"1718":4,"2074":1,"2180":10,"2607":4}}],["sofle",{"2":{"114":1,"134":1,"249":1}}],["soft",{"2":{"63":1,"112":2,"199":3,"277":4,"453":1,"455":1,"511":2,"592":3,"593":1,"594":1,"1123":1,"1124":1,"1136":1,"1578":4,"1793":3,"2119":1,"2128":2,"2225":1,"2371":3,"2541":1,"2608":1,"2697":1}}],["software",{"0":{"323":1,"662":1,"1394":1,"1463":1,"2341":1,"2351":1,"2612":1},"1":{"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"1395":1},"2":{"14":2,"215":1,"324":2,"627":1,"656":1,"662":2,"663":1,"1325":2,"1362":1,"1380":2,"1394":2,"1459":1,"1460":1,"1463":1,"1821":1,"1881":1,"1906":1,"2065":1,"2115":1,"2131":1,"2169":1,"2177":1,"2320":1,"2323":1,"2326":2,"2417":2,"2418":1,"2456":1,"2457":1,"2492":1,"2506":2,"2570":2,"2635":1,"2636":1,"2647":1,"2676":1,"2677":2,"2720":1,"2750":1}}],["sought",{"2":{"2551":1}}],["sourcing",{"2":{"2519":1}}],["sources",{"2":{"173":1,"606":1,"2183":1,"2564":1,"2566":2}}],["source",{"0":{"310":1},"2":{"5":1,"36":1,"67":1,"86":1,"102":1,"122":1,"130":1,"132":1,"143":1,"159":1,"168":1,"181":1,"197":1,"199":1,"234":1,"304":1,"305":2,"310":1,"312":1,"316":2,"322":1,"367":1,"380":1,"450":1,"522":2,"525":1,"527":2,"554":1,"564":1,"606":2,"638":1,"684":1,"685":1,"1279":3,"1377":4,"1446":1,"1733":1,"1820":4,"1826":1,"1834":1,"1846":1,"1848":1,"1957":1,"2060":2,"2144":1,"2183":1,"2235":1,"2242":1,"2244":1,"2262":11,"2277":1,"2300":1,"2313":1,"2314":1,"2328":1,"2400":1,"2407":1,"2418":1,"2428":1,"2435":2,"2438":1,"2440":2,"2468":1,"2492":1,"2503":1,"2524":1,"2525":1,"2526":1,"2564":2,"2566":3,"2578":1,"2647":1,"2712":3,"2753":2}}],["south",{"2":{"1915":1}}],["southpad",{"2":{"226":2,"236":1}}],["southpaw75",{"2":{"67":2,"72":1}}],["southpole",{"2":{"159":2}}],["sound",{"2":{"1393":1,"1398":3,"1399":14,"1406":3,"1448":2,"1507":1,"1686":2,"1718":3,"2074":2,"2491":1,"2607":3}}],["soundmonster",{"2":{"92":1}}],["sounds",{"2":{"74":1,"1386":1,"1398":2,"1406":3,"1511":1,"1573":1,"2108":1,"2180":1,"2607":2}}],["solus",{"2":{"2431":1,"2464":1}}],["solutions",{"2":{"1259":1}}],["solution",{"0":{"1677":1},"2":{"1225":1,"1248":1,"1416":1,"1438":1,"1441":1,"1508":1,"1524":1,"1570":1,"2065":1,"2548":1}}],["solve",{"2":{"1336":1,"2411":1,"2477":1}}],["solves",{"2":{"1274":1}}],["solved",{"2":{"613":1}}],["sold",{"2":{"624":1}}],["soldering",{"0":{"2272":1,"2273":1,"2274":1},"1":{"2273":1,"2274":1},"2":{"1492":1,"2061":1,"2266":2,"2270":1,"2272":3,"2273":3,"2274":1,"2276":2}}],["solder",{"2":{"207":2,"211":4,"253":1,"266":1,"2061":1,"2133":2,"2266":1,"2270":1,"2272":12,"2273":6,"2274":3,"2276":2,"2279":4,"2328":1}}],["solderd",{"2":{"176":1}}],["soldered",{"2":{"122":1,"197":1,"199":1,"211":4,"226":1,"241":2,"1589":1,"2270":1,"2273":3,"2279":1}}],["solanis",{"2":{"211":1}}],["solidifies",{"2":{"2273":1}}],["solid",{"0":{"1951":1},"2":{"176":1,"249":1,"266":2,"1332":1,"1728":28,"1730":1,"1949":32,"1951":2,"1960":2,"2036":2,"2040":1,"2273":1,"2688":1,"2695":1,"2711":10}}],["sol3",{"2":{"149":1,"176":1}}],["sol",{"2":{"114":1,"149":1,"176":1}}],["solomon",{"2":{"2270":1,"2281":1}}],["solo",{"2":{"107":1,"114":1}}],["solenoids",{"0":{"1573":1},"2":{"160":1,"1573":2}}],["solenoid",{"2":{"64":1,"114":1,"134":1,"191":1,"221":2,"236":1,"1570":2,"1572":3,"1573":28}}],["solheim68",{"2":{"57":2}}],["sorts",{"2":{"2313":1}}],["sorting",{"2":{"110":1,"211":1}}],["sort",{"2":{"49":1,"209":1,"211":1,"290":1,"592":1,"1278":1,"2117":1,"2273":1}}],["sooner",{"2":{"468":1,"2162":1}}],["soon",{"2":{"49":1,"315":1,"336":1,"505":1,"660":1,"1234":4,"1294":1,"1335":2,"1375":1,"1864":1,"2311":1}}],["somewhat",{"2":{"1273":1,"2181":1,"2255":1,"2523":1}}],["somewhere",{"2":{"350":1,"367":1,"373":1,"1362":1,"1866":1,"1880":1,"2477":1,"2728":1}}],["somebody",{"2":{"1260":1,"2510":3,"2714":1}}],["someone",{"2":{"479":1,"481":1,"551":1,"557":1,"613":1,"2309":1,"2418":1}}],["something",{"2":{"125":1,"137":2,"185":1,"315":1,"352":1,"433":1,"434":1,"529":1,"572":2,"587":1,"597":1,"626":1,"628":1,"1249":1,"1325":1,"1332":2,"1340":1,"1363":1,"1383":1,"1384":1,"1398":1,"1402":1,"1403":1,"1412":1,"1459":1,"1497":1,"1499":1,"1507":2,"1655":1,"1680":1,"1683":1,"1791":1,"1807":1,"1877":1,"1959":1,"2064":1,"2128":1,"2161":1,"2272":1,"2273":1,"2276":2,"2327":1,"2422":1,"2468":1,"2475":1,"2477":1,"2480":1,"2491":1,"2513":1,"2569":1,"2575":1,"2612":2,"2714":1}}],["sometimes",{"2":{"119":1,"415":1,"434":1,"457":1,"481":1,"538":1,"606":1,"626":2,"627":1,"656":1,"1250":1,"1269":1,"1325":1,"1326":1,"1339":1,"1340":1,"1359":1,"1458":1,"1651":1,"1684":1,"1859":1,"2255":1,"2279":1,"2327":1,"2401":1,"2406":1,"2476":1,"2490":1,"2549":1,"2614":1,"2719":1,"2746":1,"2757":1}}],["some",{"0":{"365":1,"1271":1,"2277":1},"2":{"2":1,"12":1,"25":1,"28":1,"50":1,"64":1,"95":1,"113":3,"114":6,"123":3,"124":1,"134":1,"149":4,"153":1,"157":1,"158":3,"160":4,"166":1,"174":2,"176":1,"182":2,"191":5,"196":1,"199":2,"209":1,"211":8,"215":1,"218":1,"222":2,"234":2,"235":1,"236":7,"246":1,"256":1,"266":3,"300":2,"307":1,"312":1,"331":1,"334":1,"335":1,"350":1,"352":3,"380":1,"428":1,"436":1,"441":1,"452":1,"453":1,"454":1,"455":2,"479":1,"481":1,"498":1,"499":1,"505":1,"512":1,"516":1,"538":1,"550":1,"551":1,"556":1,"559":1,"560":2,"578":1,"609":3,"624":1,"626":2,"628":1,"635":3,"659":1,"660":1,"684":1,"698":3,"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"1129":1,"1130":1,"1190":1,"1193":1,"1215":1,"1216":1,"1217":1,"1262":1,"1269":1,"1287":2,"1288":1,"1295":1,"1298":2,"1300":1,"1303":1,"1325":2,"1337":1,"1340":1,"1351":1,"1363":1,"1364":2,"1366":1,"1378":1,"1385":1,"1386":1,"1403":2,"1415":1,"1416":1,"1435":1,"1492":1,"1495":1,"1497":1,"1498":1,"1515":2,"1519":2,"1527":1,"1528":1,"1554":1,"1556":1,"1570":1,"1573":1,"1670":1,"1676":1,"1678":1,"1721":1,"1729":3,"1788":1,"1815":2,"1825":1,"1828":1,"1829":1,"1864":1,"1873":1,"1910":1,"1918":1,"1921":1,"1936":1,"1952":3,"1954":1,"1957":1,"2031":1,"2044":2,"2060":3,"2061":1,"2104":1,"2114":1,"2123":1,"2125":1,"2126":1,"2131":2,"2139":2,"2145":1,"2150":1,"2161":1,"2169":1,"2177":1,"2182":1,"2183":1,"2226":1,"2228":1,"2230":1,"2233":1,"2236":1,"2240":1,"2244":1,"2261":1,"2262":5,"2267":1,"2270":1,"2272":1,"2273":1,"2274":1,"2275":1,"2276":2,"2292":1,"2307":1,"2326":1,"2328":2,"2344":1,"2346":1,"2347":1,"2348":1,"2353":1,"2393":1,"2401":1,"2405":2,"2407":1,"2408":1,"2410":1,"2423":1,"2428":1,"2450":1,"2456":1,"2466":1,"2472":2,"2484":1,"2507":1,"2510":1,"2513":2,"2529":1,"2550":1,"2560":1,"2565":1,"2576":4,"2577":3,"2585":1,"2592":1,"2615":1,"2662":1,"2705":2,"2706":1,"2708":1,"2711":2,"2718":2,"2723":1,"2724":3,"2726":1,"2752":1,"2753":2,"2757":1}}],["so",{"2":{"0":1,"9":1,"13":2,"19":1,"39":1,"50":1,"52":1,"60":1,"73":1,"99":1,"112":1,"114":1,"118":1,"149":2,"163":2,"174":1,"176":1,"182":2,"191":1,"199":1,"231":1,"232":1,"245":1,"248":1,"273":1,"291":1,"324":1,"329":1,"337":2,"341":1,"350":1,"430":1,"435":1,"446":1,"454":2,"467":1,"481":1,"527":1,"530":1,"551":2,"554":1,"557":1,"560":1,"588":1,"602":1,"606":1,"616":1,"617":1,"625":1,"627":1,"641":1,"660":1,"683":1,"690":1,"702":1,"1132":1,"1133":1,"1137":1,"1177":1,"1195":1,"1236":1,"1237":1,"1250":1,"1265":1,"1270":2,"1272":1,"1273":1,"1278":2,"1284":1,"1287":1,"1290":1,"1300":1,"1303":2,"1304":1,"1332":2,"1336":1,"1338":1,"1344":1,"1346":1,"1353":1,"1355":1,"1359":2,"1360":1,"1383":2,"1385":2,"1396":1,"1403":1,"1405":1,"1406":1,"1438":2,"1439":2,"1442":1,"1451":1,"1464":1,"1471":1,"1493":1,"1495":2,"1497":1,"1527":1,"1530":1,"1553":1,"1557":1,"1562":1,"1567":1,"1576":1,"1594":1,"1630":1,"1677":1,"1723":1,"1791":2,"1794":1,"1807":2,"1809":1,"1821":1,"1830":1,"1849":1,"1850":1,"1853":2,"1854":2,"1857":1,"1859":1,"1861":1,"1934":1,"1936":1,"1938":1,"1940":1,"1944":1,"2041":1,"2044":1,"2051":1,"2073":1,"2102":1,"2113":1,"2130":1,"2133":1,"2146":1,"2147":1,"2149":1,"2153":1,"2161":1,"2168":1,"2169":2,"2171":1,"2181":1,"2254":1,"2262":1,"2264":2,"2268":1,"2273":2,"2279":1,"2282":1,"2307":1,"2309":2,"2311":3,"2325":1,"2327":1,"2341":1,"2353":1,"2404":1,"2410":1,"2411":1,"2425":1,"2429":1,"2445":1,"2457":1,"2466":1,"2474":1,"2480":1,"2491":1,"2495":1,"2496":1,"2508":1,"2512":1,"2513":2,"2516":1,"2525":1,"2529":1,"2533":1,"2557":1,"2566":3,"2567":1,"2569":1,"2576":2,"2577":2,"2605":1,"2607":2,"2608":1,"2610":1,"2616":1,"2619":1,"2654":1,"2701":1,"2702":1,"2704":1,"2705":2,"2711":1,"2728":2,"2738":1,"2740":1,"2741":1,"2746":1,"2750":1,"2753":1,"2754":1,"2757":2}}],["ndel",{"2":{"2615":1}}],["ndash",{"2":{"286":1,"1933":3,"2147":1}}],["n↓",{"2":{"2615":1}}],["n→",{"2":{"2615":1}}],["n←",{"2":{"2615":1}}],["n↑",{"2":{"2615":1}}],["nhome",{"2":{"2615":1}}],["nhd",{"2":{"2136":1}}],["nrf5",{"2":{"2549":1}}],["nrf51822",{"2":{"1491":1,"1492":1}}],["nrst",{"2":{"2245":2,"2247":2,"2353":1,"2513":1,"2516":1}}],["nb",{"2":{"2153":1}}],["n9",{"2":{"2153":1}}],["n8",{"2":{"2153":1}}],["n7",{"2":{"2153":1}}],["n3",{"2":{"1793":1,"2153":1,"2371":1}}],["n4",{"2":{"1793":1,"2153":1,"2371":1}}],["n40",{"2":{"222":1}}],["n5",{"2":{"1793":1,"2153":1,"2371":1}}],["n2",{"2":{"1793":2,"2153":1,"2371":2}}],["nter",{"2":{"1943":1}}],["ntil",{"2":{"1499":1}}],["nt660",{"2":{"57":2}}],["nfer",{"2":{"1280":1}}],["ns",{"2":{"1221":1}}],["n1",{"2":{"349":1,"1793":2,"2153":1,"2371":2}}],["nucleo64",{"2":{"2566":1}}],["nucleo",{"2":{"2566":1}}],["nuanced",{"2":{"1802":1}}],["nubs",{"2":{"313":1,"530":2,"2355":1,"2388":1,"2407":1}}],["nuhs",{"2":{"313":1,"530":2,"2355":1,"2388":1,"2407":1}}],["nullbitsco",{"2":{"277":1}}],["null",{"2":{"222":1,"249":1,"272":2,"315":1,"598":3,"1451":1,"1594":1,"1668":1,"1670":2,"1923":1,"2168":1,"2169":1,"2170":1,"2171":1,"2577":4}}],["nue",{"2":{"211":1}}],["numlock",{"2":{"1234":2}}],["numerous",{"2":{"188":1,"2114":1}}],["numerically",{"2":{"1340":1}}],["numerical",{"2":{"1340":1,"2701":1}}],["numeric",{"0":{"1420":1,"1427":1,"1587":1},"2":{"181":2,"532":1,"1416":1,"1420":1,"1423":2,"1587":1,"2172":1}}],["numpad",{"2":{"134":1,"143":2,"211":1,"236":1,"2183":1,"2196":1,"2391":1,"2614":5,"2615":5,"2745":1,"2746":2}}],["num",{"2":{"70":1,"188":1,"191":2,"199":1,"201":3,"222":2,"247":2,"249":2,"370":3,"371":2,"511":1,"641":1,"1276":1,"1329":1,"1330":1,"1548":2,"1559":2,"1585":1,"1714":1,"1715":2,"1717":1,"1813":2,"1959":1,"2038":1,"2048":1,"2050":1,"2129":1,"2137":2,"2153":12,"2157":1,"2355":5,"2389":5,"2574":2,"2576":11,"2577":2,"2587":1,"2615":3,"2616":2,"2685":2,"2744":1,"2747":1,"2748":1}}],["numbered",{"2":{"282":1,"639":1,"1338":2,"1339":1}}],["numbers",{"0":{"2386":1},"2":{"166":1,"465":2,"570":1,"1353":1,"1791":1,"2036":1,"2122":1,"2228":1,"2294":1,"2321":1,"2405":1,"2477":1,"2533":3,"2571":1,"2660":1}}],["number",{"0":{"532":1,"1232":1,"2091":1,"2093":1,"2095":1,"2097":1,"2394":1},"1":{"1233":1,"2092":1,"2094":1,"2096":1,"2098":1},"2":{"95":1,"114":2,"119":1,"134":1,"163":1,"166":2,"169":1,"174":3,"183":1,"199":1,"201":2,"211":1,"215":1,"233":1,"236":1,"324":1,"363":1,"364":1,"370":2,"396":1,"411":1,"463":1,"464":2,"465":4,"502":4,"506":4,"516":1,"554":1,"560":1,"570":2,"589":1,"597":1,"598":1,"601":1,"606":1,"612":1,"641":1,"659":4,"684":1,"685":1,"687":1,"688":1,"689":3,"690":3,"691":3,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"731":1,"757":1,"786":1,"818":1,"831":1,"850":1,"866":1,"885":1,"900":1,"919":1,"934":1,"953":1,"968":1,"987":1,"1002":1,"1021":1,"1036":1,"1055":1,"1070":1,"1089":1,"1104":1,"1132":1,"1133":1,"1145":1,"1157":1,"1181":1,"1189":1,"1192":1,"1207":1,"1209":1,"1214":1,"1233":1,"1265":1,"1331":1,"1338":1,"1341":2,"1347":1,"1353":1,"1361":1,"1378":1,"1384":1,"1393":1,"1447":1,"1451":2,"1452":1,"1457":1,"1466":1,"1530":1,"1554":1,"1556":1,"1578":1,"1579":2,"1591":2,"1604":2,"1655":1,"1676":1,"1725":4,"1730":3,"1794":1,"1803":1,"1804":3,"1807":1,"1815":1,"1817":1,"1820":4,"1822":2,"1827":1,"1833":1,"1847":2,"1946":4,"1950":2,"1954":3,"2032":3,"2035":3,"2036":4,"2038":5,"2044":1,"2060":1,"2092":1,"2094":1,"2096":1,"2098":1,"2120":1,"2128":4,"2131":4,"2139":1,"2142":1,"2143":2,"2145":1,"2150":1,"2152":2,"2153":12,"2157":1,"2161":1,"2169":1,"2170":1,"2214":1,"2262":2,"2266":1,"2268":3,"2269":2,"2284":1,"2325":1,"2417":1,"2473":1,"2477":5,"2490":1,"2508":1,"2510":1,"2514":1,"2515":2,"2524":1,"2533":3,"2539":1,"2553":1,"2556":1,"2574":3,"2575":2,"2576":10,"2577":5,"2587":1,"2593":1,"2595":1,"2597":1,"2600":1,"2605":1,"2607":1,"2611":1,"2622":1,"2640":1,"2648":1,"2653":1,"2660":1,"2677":1,"2683":2,"2684":1,"2688":4,"2691":1,"2694":5,"2695":6,"2699":3,"2704":1,"2708":1,"2712":1,"2719":1,"2757":2}}],["numbering",{"2":{"50":1,"635":1}}],["numbrero",{"2":{"43":2}}],["nvram",{"2":{"191":1}}],["nvm",{"2":{"131":1,"134":1}}],["nqg",{"2":{"181":2,"191":1}}],["nc",{"2":{"2153":1}}],["ncr80",{"2":{"277":1}}],["ncc1701kb",{"2":{"249":1}}],["nced",{"2":{"176":1}}],["nckiibs",{"2":{"86":8}}],["nnbs",{"2":{"176":1}}],["nkeys",{"2":{"1530":1}}],["nk",{"2":{"211":1,"235":1,"2044":3,"2145":1,"2370":3,"2396":3}}],["nknl7jp",{"2":{"143":2}}],["nknl7en",{"2":{"143":2}}],["nk87b",{"2":{"211":1}}],["nk87",{"2":{"143":2,"211":1}}],["nk65",{"2":{"143":2}}],["nk1",{"2":{"143":2}}],["nkro",{"0":{"235":1,"1288":1,"2653":1},"2":{"50":1,"70":1,"111":1,"112":1,"191":1,"199":2,"211":1,"235":2,"236":3,"277":1,"502":1,"504":3,"515":2,"516":2,"1288":4,"1298":1,"1493":2,"1530":2,"2044":1,"2145":6,"2263":8,"2370":3,"2396":3,"2566":1,"2648":1,"2659":1,"2699":2,"2705":1}}],["nibble",{"0":{"2097":1},"1":{"2098":1}}],["nins",{"2":{"2615":1}}],["nine",{"2":{"1420":1}}],["ninja",{"2":{"191":1,"241":2}}],["nit",{"2":{"455":1}}],["nitty",{"0":{"2409":1},"2":{"303":1}}],["nickname",{"2":{"2479":1}}],["nicinabox",{"2":{"2134":1}}],["nicities",{"2":{"436":1}}],["nicer",{"2":{"2565":1}}],["nicest",{"2":{"2160":1}}],["nice",{"2":{"431":1,"433":1,"1262":1,"2031":1,"2134":1,"2508":1}}],["nightly",{"2":{"211":1,"222":1}}],["niu",{"2":{"143":2,"149":1}}],["nixpkgs",{"2":{"249":1}}],["nix",{"2":{"113":1,"114":1,"176":1,"211":1,"249":1}}],["npgdn",{"2":{"2615":1}}],["npgup",{"2":{"2615":1}}],["npkc",{"2":{"2040":1}}],["npn",{"2":{"1458":1}}],["npm",{"2":{"324":1}}],["npminila",{"2":{"143":2}}],["npspears",{"2":{"149":1}}],["np21",{"2":{"143":2,"149":2}}],["nphhkb",{"2":{"143":2}}],["np64",{"2":{"143":2}}],["n6",{"2":{"114":1,"1793":1,"2153":1,"2371":1}}],["nxp",{"0":{"491":1},"2":{"108":1,"2243":1,"2622":1}}],["nyquist",{"2":{"45":1}}],["na",{"2":{"2153":1}}],["nav",{"0":{"1586":1},"2":{"1525":5,"1527":2,"1586":1}}],["navigate",{"2":{"2278":1,"2347":1,"2452":1,"2548":1}}],["navigation",{"2":{"1932":2,"2402":1,"2492":1,"2503":1}}],["navigating",{"2":{"558":1,"2256":1}}],["navi10",{"2":{"159":2}}],["nack",{"2":{"211":1}}],["nacly",{"2":{"143":2,"149":2,"249":1}}],["nanoseconds",{"2":{"1214":3,"1224":2}}],["nano",{"2":{"191":1,"495":1}}],["naked64",{"2":{"143":2}}],["naked60",{"2":{"143":2}}],["naked48",{"2":{"143":2}}],["naiping",{"2":{"143":6}}],["nafuda",{"2":{"143":2}}],["naming",{"0":{"221":1,"233":1,"460":1,"2294":1},"1":{"461":1},"2":{"134":1,"156":1,"167":1,"182":2,"221":1,"222":6,"224":1,"233":2,"236":9,"238":1,"243":1,"244":1,"249":1,"266":1,"557":1,"570":1,"1293":1,"1326":7,"2181":1,"2452":1,"2553":1,"2564":1,"2565":1}}],["name|description|",{"2":{"621":1}}],["name|short",{"2":{"621":1}}],["named",{"2":{"271":1,"314":1,"389":1,"390":1,"391":1,"430":1,"485":1,"534":1,"1272":1,"1346":2,"1376":2,"1377":1,"1813":1,"2137":1,"2277":1,"2302":2,"2433":1,"2474":1,"2480":1,"2614":1,"2615":1,"2624":1,"2657":1,"2658":1,"2746":1,"2757":1}}],["namely",{"2":{"202":1,"1385":1,"2235":1}}],["namecard2x4",{"2":{"143":2}}],["name>",{"2":{"55":2,"370":6,"371":2,"1380":1,"1385":1,"2422":1,"2452":2}}],["name",{"0":{"57":1,"285":1,"539":1,"2301":1,"2302":1},"2":{"37":2,"43":2,"55":1,"56":2,"57":2,"58":2,"67":2,"70":1,"86":3,"102":2,"111":1,"114":2,"122":2,"134":1,"143":2,"149":2,"159":2,"167":1,"168":2,"169":1,"181":2,"182":2,"184":1,"188":1,"191":1,"197":2,"199":3,"207":2,"217":2,"226":2,"231":1,"236":1,"241":2,"253":2,"266":3,"270":2,"277":1,"279":1,"341":1,"370":1,"374":2,"385":1,"400":3,"405":1,"413":1,"425":2,"426":4,"430":12,"433":1,"436":2,"437":1,"457":1,"460":9,"461":1,"470":2,"502":1,"529":1,"532":1,"539":1,"554":3,"559":2,"609":1,"627":1,"628":3,"629":5,"1236":1,"1300":1,"1329":2,"1347":2,"1352":1,"1376":7,"1377":5,"1378":4,"1379":4,"1380":2,"1381":1,"1383":2,"1384":1,"1385":3,"1397":1,"1436":3,"1518":4,"1527":1,"1571":1,"1578":4,"1579":2,"1728":1,"1729":1,"1832":1,"1923":1,"1949":1,"1952":1,"2174":1,"2175":1,"2183":6,"2252":1,"2262":1,"2279":1,"2286":2,"2294":1,"2296":4,"2299":1,"2302":2,"2303":1,"2309":7,"2324":1,"2347":1,"2351":1,"2405":2,"2421":2,"2422":1,"2436":1,"2437":7,"2438":1,"2445":3,"2454":1,"2477":1,"2479":5,"2480":3,"2501":4,"2513":4,"2553":3,"2556":4,"2559":1,"2566":1,"2570":2,"2607":1,"2615":6,"2671":1,"2672":1,"2673":1,"2686":2,"2753":1,"2757":2}}],["names",{"0":{"461":1,"1269":1},"2":{"36":1,"37":1,"43":1,"92":1,"114":1,"157":1,"182":2,"188":3,"191":3,"222":2,"241":2,"253":2,"270":2,"277":1,"375":1,"448":1,"457":1,"460":2,"461":2,"532":1,"641":1,"1132":1,"1133":1,"1269":2,"1346":1,"1351":2,"1499":1,"2172":1,"2181":2,"2262":2,"2294":3,"2302":1,"2405":2,"2557":1,"2566":3,"2614":1,"2686":2}}],["narrow",{"2":{"119":1,"176":1,"1921":1}}],["nat",{"2":{"2750":1}}],["nature",{"2":{"606":1,"1134":1,"1873":1}}],["naturally",{"2":{"1677":1,"2149":1,"2738":1}}],["natural",{"2":{"119":1,"1405":1,"2727":1}}],["natively",{"2":{"1821":1,"2530":1}}],["native",{"2":{"38":1,"49":1,"248":1,"249":1,"487":1,"529":1,"2462":1,"2574":2,"2575":2,"2576":11,"2577":3,"2754":1}}],["n",{"0":{"2653":1},"2":{"14":1,"196":1,"236":1,"266":2,"313":1,"375":2,"376":2,"396":2,"401":1,"430":1,"462":1,"515":1,"530":2,"556":1,"758":2,"787":2,"819":2,"851":2,"852":2,"886":2,"920":2,"954":2,"988":2,"1022":2,"1023":2,"1056":2,"1057":2,"1090":2,"1132":1,"1133":1,"1142":1,"1146":2,"1197":6,"1252":1,"1255":1,"1288":1,"1326":1,"1359":2,"1448":1,"1458":1,"1471":1,"1493":1,"1530":2,"1593":1,"1605":1,"1680":1,"1686":1,"1722":3,"1726":2,"1813":4,"1820":2,"1932":1,"1934":1,"1947":2,"2075":1,"2078":1,"2106":6,"2130":2,"2137":4,"2145":1,"2150":1,"2152":4,"2180":5,"2182":1,"2346":1,"2355":9,"2370":3,"2386":3,"2396":3,"2407":1,"2575":4,"2589":3,"2595":3,"2597":4,"2599":3}}],["neo2",{"2":{"2703":2}}],["neopad",{"2":{"241":2}}],["nend",{"2":{"2615":1}}],["neat",{"2":{"2270":1,"2707":1}}],["near",{"2":{"1375":1,"1398":1,"1728":2,"1844":1,"1949":2,"2274":1,"2614":1}}],["nearest",{"2":{"1181":1,"2153":1}}],["nearly",{"2":{"496":1,"606":1,"2355":1,"2480":1,"2534":1}}],["nearfield",{"2":{"211":1}}],["neighbour",{"2":{"2272":1}}],["neighboring",{"2":{"1950":1}}],["neither",{"2":{"430":1,"435":1,"626":1,"1411":1,"2127":1,"2244":1,"2603":1,"2610":1}}],["negated",{"2":{"2587":1,"2593":1,"2594":1}}],["negatively",{"2":{"2129":1,"2719":1}}],["negative",{"0":{"1661":1,"1662":1},"2":{"584":1,"656":1,"662":1,"726":1,"1391":1,"1392":1,"1395":1,"1399":1,"1661":1,"1668":1,"1670":2,"1671":2,"1673":2,"1674":1,"1940":1}}],["neg",{"2":{"2587":2,"2588":1,"2589":1,"2593":1,"2594":2,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1}}],["negmods",{"0":{"1661":1,"1662":1},"2":{"1659":1,"1665":5}}],["nexus",{"2":{"1728":3,"1949":3,"2711":1}}],["nexecstart=",{"2":{"1239":2}}],["next",{"0":{"339":1,"350":1,"543":1},"1":{"340":1},"2":{"23":1,"103":1,"104":1,"133":1,"134":1,"156":1,"203":1,"230":1,"236":1,"265":1,"276":1,"331":2,"339":1,"341":1,"346":1,"347":2,"350":1,"453":1,"587":1,"588":1,"616":1,"657":2,"658":2,"659":3,"661":2,"1132":2,"1133":2,"1212":1,"1221":1,"1303":1,"1335":1,"1344":4,"1402":2,"1403":2,"1408":4,"1452":2,"1500":1,"1506":1,"1518":1,"1520":1,"1527":1,"1559":1,"1567":1,"1572":3,"1591":1,"1605":1,"1651":1,"1653":1,"1665":3,"1727":2,"1743":1,"1745":1,"1751":1,"1752":1,"1815":1,"1822":4,"1868":1,"1921":1,"1932":2,"1970":1,"1972":1,"1978":1,"1979":1,"2031":1,"2034":2,"2052":2,"2084":1,"2088":1,"2126":1,"2139":1,"2143":4,"2156":1,"2161":1,"2169":1,"2183":2,"2184":2,"2190":1,"2226":1,"2268":1,"2273":1,"2274":1,"2319":1,"2353":1,"2355":4,"2357":4,"2366":1,"2369":2,"2376":2,"2383":1,"2384":2,"2393":4,"2395":1,"2408":1,"2436":1,"2490":1,"2501":1,"2513":2,"2525":1,"2548":1,"2557":1,"2559":1,"2702":1}}],["networks",{"2":{"1491":1}}],["net",{"2":{"358":1,"1289":1,"1290":1}}],["necessarily",{"2":{"2533":1,"2565":1}}],["necessary",{"0":{"2499":1},"2":{"218":1,"234":1,"313":1,"322":1,"323":1,"324":1,"331":2,"334":1,"335":1,"377":1,"401":1,"515":1,"584":1,"627":1,"661":1,"707":1,"726":1,"1142":1,"1215":1,"1265":1,"1430":1,"1553":1,"1560":1,"1670":2,"1671":1,"1673":5,"1902":1,"1920":1,"2125":1,"2142":1,"2148":1,"2243":1,"2263":1,"2272":1,"2300":1,"2328":1,"2348":1,"2431":1,"2451":1,"2458":1,"2461":1,"2496":1,"2542":1,"2566":3,"2671":1,"2728":1}}],["necessitating",{"2":{"352":1}}],["never",{"0":{"2478":1},"1":{"2479":1,"2480":1,"2481":1},"2":{"229":1,"432":1,"434":1,"460":1,"554":1,"568":1,"593":1,"594":1,"1504":1,"1553":1,"1671":1,"1873":1,"2418":1,"2472":1,"2473":1,"2476":1,"2478":1,"2568":2,"2743":1}}],["neutralized",{"2":{"1677":1,"2738":1}}],["neutralizer",{"2":{"1677":4,"2738":4}}],["neutralize",{"2":{"222":1,"1677":6,"2738":6}}],["nebula68",{"2":{"143":2}}],["nebula68b",{"2":{"143":2,"253":2,"266":1}}],["nebula12b",{"2":{"211":1}}],["nebula12",{"2":{"143":2}}],["nest",{"2":{"2295":1}}],["nesting",{"2":{"1553":1,"1554":1,"2170":1}}],["nested",{"0":{"296":1,"297":1,"2732":1},"2":{"134":1,"282":4,"296":1,"297":1,"299":2,"611":1,"1554":1,"2686":1,"2735":3}}],["neson",{"2":{"114":1}}],["nerdtkl",{"2":{"18":1}}],["nerd60",{"2":{"18":1}}],["nerdd",{"2":{"18":1}}],["nerd",{"0":{"18":1},"2":{"18":3}}],["needle",{"2":{"2266":1,"2273":1}}],["needlessly",{"2":{"1877":1}}],["needless",{"2":{"222":2,"2611":1}}],["needing",{"2":{"125":1,"164":1,"185":1,"228":1,"1651":1,"2146":1,"2279":1}}],["needs",{"0":{"1289":1},"2":{"46":1,"349":1,"352":1,"354":1,"371":1,"399":1,"401":1,"580":1,"597":1,"598":1,"636":1,"657":1,"658":1,"681":1,"684":1,"689":1,"690":1,"691":1,"693":1,"1234":1,"1335":1,"1383":1,"1398":1,"1448":1,"1518":3,"1537":1,"1638":1,"1845":1,"1876":1,"1880":1,"2123":1,"2147":1,"2149":1,"2157":1,"2181":1,"2263":2,"2286":1,"2298":1,"2311":1,"2327":2,"2354":1,"2480":1,"2512":1,"2513":2,"2521":1,"2523":1,"2551":1,"2552":1,"2566":1,"2575":1,"2577":2,"2614":1,"2615":1,"2671":1,"2683":1,"2749":1}}],["needed",{"2":{"21":1,"45":1,"113":1,"134":1,"158":1,"179":1,"196":1,"329":1,"358":1,"453":1,"455":1,"506":2,"580":1,"607":1,"654":1,"1123":1,"1126":2,"1129":1,"1234":1,"1254":1,"1319":2,"1363":1,"1376":1,"1409":1,"1447":1,"1491":1,"1497":1,"1511":1,"1573":1,"1668":1,"1851":1,"1877":1,"1878":1,"1903":1,"1940":1,"1950":1,"2114":1,"2130":1,"2150":1,"2154":1,"2161":2,"2171":1,"2304":1,"2431":1,"2461":1,"2464":1,"2475":1,"2480":1,"2503":1,"2506":2,"2509":1,"2553":1,"2564":1,"2620":2,"2705":1,"2742":1,"2753":1}}],["need",{"0":{"1409":1,"2283":1,"2316":1},"1":{"1410":1,"1411":1,"1412":1,"1413":1,"1414":1,"1415":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"1423":1,"1424":1,"1425":1,"1426":1,"1427":1,"1428":1,"1429":1,"1430":1,"1431":1,"1432":1,"1433":1,"1434":1,"1435":1,"1436":1},"2":{"5":1,"7":1,"14":1,"22":1,"31":1,"45":1,"49":1,"50":1,"89":1,"90":1,"107":1,"118":1,"124":1,"158":2,"164":1,"194":1,"199":1,"218":1,"220":1,"222":1,"232":1,"240":1,"241":1,"253":1,"255":1,"256":1,"259":1,"270":1,"272":2,"282":3,"326":1,"331":1,"341":2,"349":1,"352":1,"357":1,"358":1,"364":1,"374":1,"401":1,"434":1,"437":1,"440":1,"450":2,"462":1,"466":2,"471":1,"472":1,"478":1,"482":1,"505":2,"530":1,"532":1,"553":1,"557":1,"560":1,"575":1,"578":1,"580":1,"585":1,"586":1,"606":1,"607":2,"613":1,"614":2,"626":1,"628":1,"630":1,"643":1,"660":1,"661":1,"665":1,"668":1,"687":1,"689":2,"700":1,"701":1,"703":2,"730":1,"733":1,"756":1,"759":1,"785":1,"790":1,"791":1,"817":1,"821":1,"849":1,"855":1,"856":1,"884":1,"889":1,"890":1,"918":1,"923":1,"924":1,"952":1,"957":1,"958":1,"986":1,"991":1,"992":1,"1020":1,"1025":1,"1026":1,"1054":1,"1059":1,"1060":1,"1088":1,"1093":1,"1094":1,"1136":1,"1144":1,"1147":1,"1175":1,"1176":1,"1177":2,"1196":1,"1198":2,"1213":1,"1216":1,"1226":1,"1227":1,"1230":1,"1236":1,"1238":1,"1239":1,"1241":1,"1242":1,"1254":1,"1258":2,"1264":1,"1270":1,"1276":1,"1287":1,"1288":1,"1291":1,"1302":1,"1312":1,"1332":1,"1336":1,"1339":1,"1352":2,"1355":1,"1363":1,"1377":1,"1383":1,"1385":2,"1423":1,"1435":2,"1439":3,"1440":1,"1450":1,"1451":1,"1457":1,"1459":1,"1469":2,"1470":1,"1495":1,"1496":1,"1497":2,"1500":1,"1508":2,"1509":1,"1512":1,"1518":2,"1521":1,"1527":1,"1534":1,"1548":1,"1558":1,"1559":1,"1573":1,"1651":1,"1657":2,"1668":2,"1670":2,"1671":1,"1684":1,"1715":1,"1791":3,"1812":1,"1815":1,"1821":1,"1833":2,"1849":2,"1877":1,"1902":1,"1907":1,"1910":1,"1918":1,"1921":1,"1922":1,"1934":1,"1950":1,"2032":1,"2042":2,"2047":1,"2051":1,"2061":1,"2063":2,"2064":1,"2073":1,"2117":2,"2119":1,"2120":1,"2121":1,"2126":2,"2128":2,"2130":1,"2131":1,"2133":4,"2134":1,"2137":1,"2139":1,"2145":1,"2150":1,"2152":1,"2161":1,"2168":1,"2169":4,"2170":1,"2171":2,"2181":1,"2183":2,"2238":1,"2240":1,"2242":1,"2244":1,"2255":1,"2256":1,"2261":1,"2262":3,"2263":3,"2266":1,"2272":1,"2273":2,"2277":1,"2279":2,"2297":1,"2299":2,"2326":1,"2327":2,"2328":2,"2329":1,"2333":1,"2342":1,"2351":1,"2405":1,"2411":1,"2424":1,"2425":1,"2429":2,"2432":1,"2433":1,"2442":2,"2446":1,"2454":1,"2456":1,"2457":3,"2459":1,"2460":1,"2462":1,"2464":1,"2473":1,"2475":2,"2480":2,"2490":2,"2492":1,"2495":1,"2496":1,"2497":1,"2499":1,"2503":1,"2507":1,"2508":1,"2510":1,"2513":3,"2530":1,"2553":1,"2564":3,"2565":1,"2568":1,"2573":2,"2575":1,"2577":3,"2578":1,"2614":1,"2662":1,"2671":1,"2702":1,"2704":2,"2705":2,"2711":1,"2714":1,"2718":1,"2722":1,"2728":5,"2741":2,"2749":1,"2757":2}}],["newhaven",{"2":{"2136":1}}],["newbs",{"2":{"624":2,"1258":1,"2442":1,"2482":1,"2504":1,"2568":2}}],["newline",{"2":{"1255":1,"1361":2,"1605":1}}],["newlines",{"2":{"282":1,"454":1,"2407":1}}],["newlib",{"2":{"191":1}}],["newly",{"2":{"188":1,"191":1,"266":1,"275":1,"1385":1,"2162":1,"2278":1,"2448":1,"2508":1,"2513":1,"2564":1,"2567":1}}],["newest",{"2":{"163":1,"173":1,"346":1,"349":1,"350":1}}],["newer",{"2":{"10":2,"49":1,"123":1,"133":1,"149":1,"157":1,"236":3,"1932":1,"2230":1,"2704":1}}],["news",{"2":{"133":1,"134":1}}],["new",{"0":{"82":1,"112":1,"130":1,"145":1,"146":1,"385":1,"386":1,"570":1,"1678":1,"2422":1,"2550":1,"2551":1,"2552":1,"2753":1},"1":{"147":1,"148":1,"1679":1,"1680":1,"1681":1,"1682":1,"1683":1,"1684":1,"1685":1,"1686":1,"1687":1,"1688":1,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1695":1,"1696":1,"1697":1,"1698":1,"1699":1,"1700":1,"1701":1,"1702":1,"1703":1,"1704":1,"1705":1,"1706":1,"1707":1,"1708":1,"1709":1,"1710":1,"1711":1,"1712":1,"1713":1},"2":{"1":1,"22":1,"24":1,"25":1,"36":1,"37":2,"38":1,"43":2,"46":1,"49":1,"56":2,"57":1,"58":1,"67":1,"70":4,"82":1,"86":1,"93":1,"99":2,"102":1,"103":1,"112":2,"113":2,"114":3,"118":3,"122":1,"123":1,"125":1,"126":1,"130":1,"132":1,"133":1,"134":4,"143":1,"149":7,"152":1,"153":2,"156":2,"158":1,"159":1,"160":1,"164":1,"167":1,"168":1,"173":2,"176":2,"181":1,"182":5,"183":3,"185":1,"186":1,"191":1,"194":1,"197":1,"199":3,"202":1,"203":1,"207":1,"211":1,"213":1,"217":1,"218":1,"219":1,"221":6,"224":1,"226":1,"228":3,"229":1,"230":2,"234":1,"236":3,"240":1,"241":1,"243":2,"244":1,"249":2,"253":1,"254":1,"265":1,"266":3,"270":1,"271":1,"273":1,"277":1,"291":2,"304":1,"340":2,"341":2,"343":1,"350":2,"352":1,"360":1,"373":1,"384":1,"385":2,"386":2,"389":1,"390":1,"391":3,"426":2,"427":1,"436":1,"481":1,"483":1,"515":2,"554":2,"559":1,"560":2,"564":2,"569":1,"571":1,"592":1,"607":2,"609":2,"613":2,"614":3,"621":1,"622":1,"624":1,"626":1,"627":1,"628":1,"1254":1,"1260":1,"1265":1,"1272":1,"1332":2,"1344":1,"1346":1,"1359":1,"1385":5,"1413":1,"1434":1,"1435":1,"1448":1,"1464":1,"1527":1,"1725":1,"1729":2,"1736":1,"1738":1,"1740":1,"1749":1,"1752":1,"1754":1,"1758":1,"1760":1,"1764":1,"1766":1,"1768":1,"1769":1,"1770":1,"1808":2,"1815":1,"1816":1,"1822":2,"1823":1,"1850":1,"1853":2,"1855":1,"1864":1,"1946":1,"1952":2,"1963":1,"1965":1,"1967":1,"1976":1,"1979":1,"1981":1,"1985":1,"1987":1,"1991":1,"1993":1,"1997":1,"1999":1,"2003":1,"2005":1,"2007":1,"2008":1,"2009":1,"2014":1,"2112":1,"2139":1,"2143":2,"2147":2,"2150":1,"2155":1,"2162":1,"2193":1,"2195":1,"2234":1,"2245":1,"2247":1,"2249":1,"2250":1,"2255":1,"2263":1,"2273":1,"2277":2,"2304":1,"2305":1,"2345":1,"2347":1,"2349":2,"2421":1,"2422":4,"2426":1,"2441":1,"2445":4,"2448":1,"2459":1,"2460":1,"2475":1,"2478":2,"2480":5,"2482":1,"2483":1,"2501":1,"2508":1,"2530":1,"2546":1,"2550":1,"2551":1,"2552":1,"2553":5,"2564":2,"2566":3,"2567":6,"2615":1,"2656":1,"2710":2,"2728":3,"2750":1,"2753":2}}],["nomenclature",{"0":{"2533":1}}],["nomu30",{"2":{"143":2}}],["nose",{"2":{"2266":1,"2273":1}}],["nose2",{"2":{"442":1,"446":2}}],["nos",{"2":{"1403":1,"2279":1}}],["nobody",{"2":{"454":1}}],["nodes",{"2":{"526":1,"1451":5}}],["node",{"2":{"324":1,"402":1,"403":1,"523":1,"526":1,"1438":1,"1451":23,"1452":8,"1921":2}}],["nop",{"2":{"249":1}}],["nopq",{"2":{"249":1}}],["noop",{"2":{"2355":1,"2395":1,"2405":1}}],["noodlepad",{"2":{"249":1}}],["noon",{"2":{"211":1}}],["noxary",{"2":{"211":2}}],["noevent",{"2":{"199":1}}],["noeeprom",{"0":{"1736":1,"1738":1,"1740":1,"1749":1,"1752":1,"1754":1,"1758":1,"1760":1,"1764":1,"1766":1,"1769":1,"1963":1,"1965":1,"1967":1,"1976":1,"1979":1,"1981":1,"1985":1,"1987":1,"1991":1,"1993":1,"1997":1,"1999":1,"2003":1,"2005":1,"2008":1,"2014":1},"1":{"1750":1,"1770":1,"1977":1,"2009":1,"2015":1},"2":{"49":2,"191":1,"582":3,"1332":14,"1960":2,"2052":3,"2053":3,"2054":7,"2055":3,"2058":1}}],["noconfirm",{"2":{"158":1,"2431":1,"2461":1,"2464":1}}],["noci",{"2":{"149":1,"191":1}}],["norwegian",{"2":{"1355":1,"2703":3}}],["north",{"2":{"1268":1,"1915":1}}],["noroadsleft",{"2":{"266":1}}],["norm",{"2":{"191":1,"247":1,"466":1,"1398":4,"1399":6,"1548":1,"2370":6,"2396":6}}],["norman",{"2":{"176":1,"1355":1,"2703":3}}],["normalized",{"2":{"1533":1}}],["normalise",{"2":{"188":9,"191":10,"199":1,"266":1,"277":1}}],["normal",{"2":{"128":1,"152":1,"154":1,"224":1,"278":1,"288":1,"435":1,"511":1,"571":1,"689":1,"692":2,"1243":2,"1271":1,"1300":2,"1329":1,"1332":2,"1338":1,"1359":1,"1360":2,"1411":3,"1416":1,"1431":1,"1435":1,"1448":1,"1516":1,"1548":1,"1559":2,"1673":1,"1674":1,"1675":1,"1676":1,"1915":1,"2108":1,"2118":1,"2126":1,"2128":1,"2129":1,"2130":1,"2226":1,"2262":1,"2414":3,"2441":1,"2445":1,"2475":1,"2490":1,"2513":2,"2526":1,"2543":1,"2566":1,"2573":1,"2576":1,"2577":2,"2720":1,"2740":1,"2752":1}}],["normally",{"2":{"99":1,"164":1,"436":1,"437":1,"510":1,"572":1,"623":1,"1332":1,"1344":1,"1360":1,"1427":1,"1520":1,"1670":2,"1940":1,"1941":1,"2045":1,"2059":1,"2125":1,"2170":1,"2367":1,"2497":1,"2735":1,"2736":1,"2749":1}}],["nor",{"2":{"174":1,"435":1,"578":1,"681":1,"688":1,"690":2,"693":1,"694":2,"1448":1,"2240":1,"2546":1,"2569":1}}],["nordic",{"2":{"5":1,"1492":2}}],["novices",{"2":{"2472":1}}],["novice",{"2":{"2305":1}}],["novelpad",{"2":{"143":2}}],["novelkeys",{"2":{"143":4,"149":1,"211":2}}],["november",{"0":{"115":1,"177":1,"223":1},"1":{"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1},"2":{"339":1}}],["nov",{"0":{"52":1},"1":{"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1},"2":{"55":1,"88":1,"104":1,"127":1,"170":1,"340":5,"351":4}}],["nonus",{"2":{"2355":2,"2388":2}}],["nonactuated",{"2":{"1573":2}}],["nonex",{"2":{"2300":1}}],["none",{"2":{"266":1,"325":1,"335":1,"414":2,"415":2,"417":1,"423":2,"424":2,"425":3,"426":5,"428":1,"475":1,"629":2,"684":1,"685":1,"694":1,"789":2,"850":4,"852":1,"854":2,"888":2,"922":2,"956":2,"990":2,"1021":4,"1023":1,"1024":2,"1055":4,"1057":1,"1058":2,"1092":2,"1121":1,"1177":1,"1241":1,"1435":1,"1464":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"1726":1,"1728":1,"1730":5,"1868":1,"1873":7,"1874":3,"1923":2,"1947":1,"1949":1,"1954":7,"2036":4,"2150":1,"2169":3,"2170":1,"2171":3,"2300":1,"2524":1,"2553":1,"2573":1}}],["non",{"0":{"2307":1,"2549":1,"2619":1},"2":{"28":1,"49":1,"51":1,"70":1,"94":1,"133":1,"134":2,"160":2,"176":2,"199":1,"213":1,"222":1,"249":1,"455":1,"522":1,"659":1,"692":1,"1211":1,"1332":1,"1341":2,"1352":1,"1355":1,"1430":1,"1440":1,"1441":1,"1558":1,"1573":2,"1584":2,"1670":2,"1673":1,"1674":2,"1676":2,"1864":1,"1865":1,"1868":1,"1874":1,"1879":1,"1936":2,"2122":1,"2129":1,"2148":1,"2149":1,"2169":1,"2171":1,"2183":1,"2236":1,"2279":1,"2280":1,"2305":1,"2355":3,"2388":2,"2395":1,"2403":2,"2543":1,"2549":2,"2563":1,"2564":1,"2566":1,"2600":1,"2617":1,"2712":1}}],["noise",{"2":{"17":1,"1325":4,"1326":6,"1329":2,"1917":1,"2231":1,"2238":1}}],["now",{"0":{"90":1,"105":1,"137":1,"273":1},"2":{"10":3,"11":2,"16":1,"18":2,"25":1,"45":1,"49":5,"50":2,"58":1,"69":2,"70":2,"73":1,"74":1,"76":1,"80":1,"83":1,"94":1,"98":1,"99":2,"103":1,"104":1,"105":1,"107":1,"114":1,"118":2,"119":1,"120":2,"124":2,"125":1,"126":2,"127":1,"130":1,"131":1,"134":1,"137":1,"138":1,"141":1,"146":1,"153":1,"172":1,"173":1,"174":1,"182":2,"185":1,"194":1,"195":1,"196":1,"201":3,"206":2,"209":1,"211":1,"214":1,"224":1,"234":2,"235":1,"245":1,"246":1,"248":1,"262":2,"263":1,"273":1,"275":2,"327":1,"330":1,"331":3,"341":1,"343":1,"344":1,"345":1,"346":2,"349":4,"401":1,"414":2,"453":1,"480":1,"481":1,"530":1,"606":1,"661":1,"1234":1,"1284":4,"1298":1,"1332":3,"1361":1,"1385":1,"1436":4,"1498":1,"1510":1,"1521":1,"1565":2,"1651":1,"1675":1,"1683":1,"1684":1,"2042":1,"2043":1,"2102":1,"2108":1,"2112":1,"2113":1,"2130":1,"2150":1,"2154":1,"2162":1,"2167":1,"2169":1,"2171":1,"2255":2,"2275":1,"2311":2,"2343":1,"2347":1,"2353":1,"2405":1,"2420":1,"2421":1,"2441":2,"2446":1,"2449":1,"2469":1,"2470":1,"2473":1,"2474":1,"2475":3,"2477":2,"2479":3,"2480":1,"2501":1,"2502":1,"2508":1,"2512":1,"2523":1,"2553":1,"2567":2,"2711":1,"2728":1}}],["no",{"0":{"141":1,"533":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1425":1,"1522":1,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"2741":1},"2":{"2":2,"5":1,"6":1,"48":1,"50":1,"74":1,"88":2,"92":1,"103":2,"104":2,"112":1,"114":1,"118":1,"124":1,"126":1,"127":2,"130":1,"134":1,"141":1,"149":3,"154":1,"176":1,"189":1,"191":1,"196":1,"199":2,"201":1,"211":2,"213":1,"218":1,"224":1,"231":1,"233":1,"240":1,"245":1,"249":1,"255":1,"262":1,"265":1,"266":4,"268":1,"273":3,"276":1,"286":1,"340":1,"347":1,"349":1,"350":1,"360":1,"375":1,"380":1,"396":1,"400":1,"416":2,"481":1,"503":5,"505":2,"511":1,"515":1,"516":1,"530":1,"537":1,"548":1,"554":1,"556":3,"559":1,"580":2,"616":1,"625":1,"627":1,"663":1,"685":1,"687":1,"702":1,"703":1,"852":1,"1023":1,"1057":1,"1142":1,"1176":1,"1177":3,"1197":1,"1205":1,"1242":1,"1243":1,"1283":1,"1294":1,"1302":1,"1314":1,"1326":1,"1329":7,"1331":1,"1337":1,"1344":1,"1375":1,"1376":1,"1394":1,"1403":1,"1404":1,"1409":1,"1411":3,"1413":1,"1415":2,"1416":1,"1423":5,"1430":1,"1431":1,"1435":2,"1441":4,"1446":2,"1447":1,"1493":1,"1496":6,"1501":1,"1504":1,"1511":1,"1515":1,"1522":1,"1525":1,"1527":2,"1533":1,"1553":1,"1554":2,"1556":1,"1560":1,"1562":1,"1563":2,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"1633":1,"1665":5,"1668":3,"1670":5,"1671":2,"1674":2,"1675":1,"1677":3,"1684":1,"1686":1,"1694":1,"1697":1,"1725":10,"1726":1,"1728":1,"1793":1,"1805":2,"1806":1,"1811":4,"1839":1,"1881":2,"1923":1,"1932":1,"1933":1,"1946":10,"1947":1,"1948":1,"1949":1,"1958":1,"2034":1,"2044":2,"2051":1,"2063":2,"2073":1,"2111":1,"2112":3,"2113":1,"2128":2,"2131":2,"2150":3,"2162":1,"2168":1,"2169":1,"2177":1,"2235":1,"2262":1,"2263":5,"2264":1,"2270":4,"2278":1,"2295":1,"2301":1,"2303":1,"2305":1,"2311":3,"2314":1,"2349":1,"2355":1,"2371":1,"2376":1,"2385":1,"2395":1,"2405":2,"2408":1,"2414":1,"2415":2,"2450":1,"2456":1,"2474":1,"2492":1,"2496":1,"2503":1,"2509":1,"2513":1,"2524":1,"2558":3,"2564":1,"2565":1,"2566":15,"2573":1,"2575":8,"2577":3,"2587":1,"2593":1,"2596":5,"2614":8,"2674":1,"2686":1,"2688":1,"2689":1,"2695":1,"2699":1,"2702":2,"2705":7,"2706":2,"2707":2,"2708":1,"2728":1,"2738":3,"2741":1,"2743":1,"2745":1,"2746":5}}],["noto11",{"2":{"2575":4,"2577":3}}],["notosans",{"2":{"2575":1}}],["notset",{"2":{"433":1}}],["nothing",{"0":{"1243":1},"2":{"373":1,"607":1,"685":1,"1284":3,"1344":2,"1530":1,"1675":1,"1878":1,"1933":1,"2113":1,"2262":1,"2525":1,"2526":1,"2723":1,"2728":1,"2738":2}}],["noting",{"2":{"1511":1,"2161":1}}],["notion",{"2":{"1447":1}}],["notification",{"2":{"290":1,"300":1}}],["noticeably",{"2":{"1821":1}}],["noticeable",{"2":{"513":1,"2735":1}}],["noticed",{"2":{"1563":1,"1821":1}}],["notices",{"0":{"264":1,"274":1},"1":{"265":1,"275":1,"276":1},"2":{"264":1,"274":1}}],["notice",{"0":{"2720":1},"2":{"263":1,"264":1,"274":1,"276":1,"349":1,"1360":2,"1361":1,"2720":1,"2740":1,"2746":2,"2747":1}}],["notably",{"2":{"158":1,"1265":1}}],["notable",{"0":{"79":1,"97":1,"106":1,"117":1,"129":1,"136":1,"144":1,"151":1,"162":1,"171":1,"178":1,"187":1,"198":1,"201":1,"208":1,"213":1,"224":1,"227":1,"238":1,"242":1,"251":1,"261":1,"268":1},"1":{"80":1,"81":1,"82":1,"83":1,"84":1,"98":1,"99":1,"100":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"118":1,"119":1,"120":1,"130":1,"131":1,"132":1,"133":1,"137":1,"138":1,"145":1,"146":1,"147":1,"148":1,"152":1,"153":1,"154":1,"163":1,"164":1,"172":1,"173":1,"174":1,"175":1,"179":1,"188":1,"189":1,"190":1,"202":1,"203":1,"204":1,"209":1,"210":1,"214":1,"215":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"262":1,"263":1},"2":{"224":1,"625":1,"1390":1}}],["notation",{"0":{"111":1},"2":{"111":1,"611":1,"2311":1}}],["noted",{"2":{"103":1,"126":1,"276":1,"1385":1,"1949":1,"2427":1}}],["note",{"0":{"27":1,"2271":1},"2":{"27":1,"132":1,"199":1,"201":1,"213":1,"222":5,"241":1,"253":1,"270":1,"272":1,"273":1,"334":1,"335":1,"361":1,"371":1,"373":1,"380":1,"429":1,"479":1,"506":1,"534":2,"556":1,"597":1,"628":1,"629":1,"635":2,"639":2,"657":1,"698":1,"820":1,"1121":1,"1126":1,"1129":1,"1219":1,"1238":1,"1239":1,"1287":1,"1293":1,"1335":2,"1351":1,"1353":1,"1361":1,"1376":1,"1384":1,"1390":1,"1394":1,"1400":1,"1401":1,"1406":3,"1416":1,"1427":1,"1431":1,"1435":1,"1464":1,"1467":1,"1491":1,"1503":1,"1556":1,"1632":1,"1675":1,"1676":1,"1677":1,"1725":1,"1729":1,"1787":3,"1793":72,"1794":1,"1822":2,"1825":1,"1833":1,"1849":1,"1851":1,"1866":1,"1874":1,"1877":2,"1879":1,"1904":1,"1911":1,"1946":1,"1950":1,"1952":1,"2036":1,"2041":1,"2042":3,"2044":1,"2051":1,"2074":1,"2119":1,"2120":1,"2125":1,"2146":1,"2153":1,"2155":1,"2171":2,"2172":1,"2175":1,"2183":1,"2252":2,"2262":2,"2263":1,"2270":1,"2275":2,"2276":1,"2279":1,"2330":1,"2332":1,"2334":1,"2341":1,"2343":1,"2346":1,"2347":1,"2351":1,"2371":72,"2403":2,"2405":1,"2407":1,"2408":1,"2427":1,"2437":1,"2460":1,"2463":1,"2466":1,"2467":1,"2468":1,"2492":1,"2499":1,"2512":1,"2533":1,"2549":1,"2564":1,"2565":1,"2572":1,"2574":1,"2577":1,"2702":1,"2705":1,"2723":1,"2728":2,"2729":1,"2730":1,"2738":1,"2752":2,"2753":3,"2754":1}}],["notes",{"0":{"660":1,"663":1,"2568":1},"2":{"10":1,"215":1,"347":1,"654":1,"660":1,"1314":1,"1316":1,"1317":1,"1389":1,"1398":2,"1403":1,"1404":1,"1406":1,"1589":1,"1793":2,"1811":1,"1873":1,"1876":1,"2115":1,"2136":1,"2371":2,"2530":1,"2707":1}}],["not",{"0":{"545":1,"1240":1,"1271":1},"2":{"0":1,"5":1,"9":1,"14":1,"19":1,"23":3,"25":1,"28":1,"31":1,"34":1,"39":1,"49":1,"50":1,"52":1,"73":1,"90":1,"92":2,"114":2,"125":1,"134":3,"149":1,"153":2,"154":1,"160":2,"166":1,"176":1,"182":1,"185":1,"194":1,"198":1,"199":4,"201":2,"209":1,"211":1,"214":1,"221":1,"222":1,"232":1,"236":2,"240":2,"241":1,"249":2,"251":1,"253":1,"266":2,"268":1,"270":1,"273":1,"276":1,"277":2,"282":6,"285":2,"303":1,"308":1,"318":1,"334":2,"337":1,"341":3,"352":1,"357":1,"366":1,"374":1,"380":3,"385":2,"405":1,"430":1,"433":1,"435":1,"436":1,"437":1,"440":2,"441":1,"446":2,"452":1,"453":6,"455":3,"457":1,"459":1,"460":2,"465":2,"466":1,"467":1,"469":1,"471":1,"472":1,"473":1,"474":2,"476":1,"479":1,"480":1,"481":1,"483":1,"485":1,"486":1,"487":1,"493":1,"496":1,"497":1,"502":1,"505":3,"509":1,"510":2,"513":1,"515":1,"516":1,"523":1,"529":1,"533":1,"537":2,"538":1,"540":1,"541":1,"545":2,"551":1,"552":1,"554":1,"555":1,"556":5,"559":2,"560":2,"567":1,"574":1,"580":2,"584":1,"588":2,"592":1,"594":1,"597":1,"598":2,"600":1,"609":2,"613":2,"623":1,"625":1,"626":2,"627":1,"628":1,"629":1,"633":2,"635":2,"644":2,"647":1,"654":3,"659":1,"663":3,"666":3,"675":1,"683":1,"684":1,"688":1,"689":4,"690":1,"697":1,"698":1,"702":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"726":2,"731":1,"741":1,"745":1,"749":1,"751":1,"757":5,"768":1,"772":1,"776":1,"778":1,"786":5,"800":1,"804":1,"808":1,"810":1,"818":6,"832":1,"836":1,"840":1,"842":1,"850":5,"867":1,"871":1,"875":1,"877":1,"885":5,"901":1,"905":1,"909":1,"911":1,"919":5,"935":1,"939":1,"943":1,"945":1,"953":5,"969":1,"973":1,"977":1,"979":1,"987":5,"1003":1,"1007":1,"1011":1,"1013":1,"1021":5,"1037":1,"1041":1,"1045":1,"1047":1,"1055":5,"1071":1,"1075":1,"1079":1,"1081":1,"1089":5,"1105":1,"1109":1,"1113":1,"1115":1,"1122":1,"1128":1,"1132":2,"1133":3,"1134":1,"1145":5,"1158":1,"1162":1,"1166":1,"1168":1,"1176":1,"1177":2,"1189":1,"1192":1,"1195":1,"1207":1,"1209":1,"1214":3,"1221":1,"1223":1,"1225":1,"1226":2,"1229":1,"1230":3,"1238":2,"1239":2,"1254":1,"1260":1,"1268":1,"1270":2,"1271":1,"1278":1,"1280":1,"1283":2,"1284":2,"1287":2,"1293":1,"1298":1,"1300":1,"1302":1,"1303":1,"1312":1,"1316":2,"1317":2,"1319":2,"1325":4,"1326":2,"1331":1,"1335":3,"1338":1,"1340":2,"1344":1,"1351":1,"1357":1,"1359":2,"1361":3,"1377":1,"1380":1,"1384":1,"1385":2,"1398":1,"1399":8,"1404":1,"1411":1,"1412":6,"1414":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1423":1,"1430":2,"1431":3,"1432":1,"1446":1,"1447":1,"1448":1,"1451":1,"1455":1,"1457":4,"1463":1,"1469":2,"1471":2,"1491":2,"1493":1,"1496":1,"1499":4,"1501":1,"1511":1,"1515":1,"1521":1,"1523":1,"1525":4,"1531":1,"1534":1,"1551":1,"1554":3,"1558":1,"1560":2,"1567":1,"1570":4,"1572":1,"1573":6,"1579":1,"1582":1,"1589":1,"1591":5,"1594":1,"1631":1,"1633":1,"1654":2,"1659":1,"1661":1,"1665":2,"1666":1,"1668":1,"1670":5,"1671":2,"1673":2,"1674":1,"1675":2,"1676":1,"1677":3,"1684":1,"1715":6,"1716":1,"1725":2,"1729":1,"1736":1,"1738":1,"1740":1,"1749":1,"1752":1,"1754":1,"1758":1,"1760":1,"1764":1,"1766":1,"1769":1,"1787":1,"1788":1,"1791":1,"1794":1,"1802":1,"1803":1,"1805":2,"1807":1,"1808":1,"1817":2,"1819":3,"1820":9,"1821":4,"1822":7,"1824":1,"1825":1,"1827":1,"1828":2,"1830":1,"1836":6,"1838":4,"1840":3,"1842":3,"1843":1,"1844":1,"1845":3,"1849":1,"1851":14,"1852":8,"1855":4,"1859":2,"1864":1,"1866":2,"1868":1,"1879":1,"1902":1,"1904":1,"1911":1,"1912":1,"1921":1,"1933":1,"1934":2,"1938":1,"1946":2,"1948":5,"1952":1,"1954":2,"1960":1,"1963":1,"1965":1,"1967":1,"1976":1,"1979":1,"1981":1,"1985":1,"1987":1,"1991":1,"1993":1,"1997":1,"1999":1,"2003":1,"2005":1,"2008":1,"2014":1,"2032":1,"2034":1,"2035":3,"2036":1,"2037":12,"2038":1,"2041":1,"2045":1,"2051":9,"2052":3,"2053":3,"2054":7,"2055":3,"2063":1,"2065":2,"2072":1,"2074":1,"2112":1,"2113":2,"2114":2,"2118":2,"2123":1,"2125":1,"2126":2,"2128":2,"2131":2,"2132":2,"2141":3,"2143":4,"2146":3,"2152":4,"2153":2,"2161":2,"2162":4,"2169":12,"2170":1,"2171":1,"2172":1,"2175":1,"2177":1,"2181":2,"2183":5,"2184":1,"2220":1,"2226":3,"2228":1,"2231":1,"2238":1,"2240":1,"2242":1,"2243":1,"2252":1,"2254":1,"2256":1,"2259":2,"2260":1,"2262":2,"2263":3,"2264":1,"2268":2,"2270":1,"2272":2,"2273":2,"2274":2,"2276":1,"2277":1,"2279":3,"2294":2,"2295":1,"2299":1,"2305":1,"2309":1,"2311":1,"2321":1,"2322":1,"2325":2,"2326":1,"2327":2,"2328":1,"2330":1,"2332":1,"2334":1,"2335":1,"2342":1,"2343":1,"2344":1,"2345":1,"2346":1,"2347":2,"2348":3,"2350":1,"2351":2,"2353":1,"2355":1,"2356":1,"2377":2,"2384":1,"2393":1,"2397":2,"2407":1,"2408":2,"2410":1,"2411":1,"2417":1,"2422":1,"2423":2,"2425":1,"2427":3,"2429":1,"2431":1,"2432":1,"2433":1,"2436":1,"2450":3,"2451":1,"2454":5,"2455":2,"2457":1,"2459":1,"2460":1,"2462":1,"2463":1,"2464":1,"2466":2,"2468":1,"2473":1,"2475":2,"2476":1,"2477":1,"2479":1,"2480":1,"2485":1,"2490":1,"2498":2,"2499":1,"2501":1,"2506":1,"2513":2,"2514":1,"2516":3,"2517":1,"2519":2,"2524":2,"2525":1,"2526":1,"2529":1,"2530":2,"2532":1,"2533":1,"2542":1,"2543":1,"2544":1,"2546":3,"2548":1,"2549":2,"2553":1,"2556":2,"2564":8,"2565":2,"2566":17,"2567":3,"2569":2,"2570":1,"2572":1,"2573":1,"2574":1,"2575":1,"2576":1,"2577":8,"2587":1,"2589":1,"2596":1,"2601":1,"2603":1,"2605":1,"2611":1,"2615":2,"2616":1,"2617":2,"2620":1,"2625":1,"2667":1,"2671":1,"2673":2,"2686":4,"2687":1,"2699":1,"2701":1,"2702":2,"2703":2,"2705":4,"2706":1,"2707":1,"2708":1,"2709":2,"2710":1,"2718":1,"2719":3,"2726":1,"2728":2,"2729":2,"2734":2,"2735":4,"2736":2,"2738":3,"2740":1,"2742":1,"2746":1,"2752":1,"2756":2,"2757":1}}],["y1",{"2":{"2577":1}}],["y0",{"2":{"2577":1}}],["y+",{"2":{"1839":1}}],["yyyy",{"2":{"349":2,"358":3,"359":3,"360":2,"361":2}}],["yyyyqn",{"2":{"341":1}}],["yynmt",{"2":{"143":2,"149":2}}],["yz",{"2":{"266":1}}],["y",{"0":{"1545":1,"2603":1,"2605":1},"1":{"1546":1,"2604":1,"2606":1},"2":{"249":1,"313":1,"376":2,"530":2,"1341":4,"1533":2,"1537":2,"1545":1,"1546":2,"1632":1,"1633":1,"1634":2,"1655":1,"1725":7,"1730":2,"1802":1,"1822":2,"1836":2,"1838":3,"1839":2,"1842":2,"1843":4,"1849":4,"1851":5,"1852":5,"1855":3,"1858":2,"1859":3,"1861":2,"1862":2,"1879":1,"1911":1,"1914":2,"1933":5,"1946":7,"1954":2,"2143":2,"2323":2,"2355":3,"2386":3,"2407":1,"2431":4,"2464":4,"2468":4,"2559":16,"2576":3,"2577":14,"2603":3,"2605":3,"2615":19,"2620":1,"2686":3,"2688":2,"2695":2}}],["ymlname",{"2":{"2437":1}}],["yml",{"2":{"2435":1,"2437":2,"2438":1,"2439":1,"2440":1}}],["ym68",{"2":{"211":1}}],["ymd96",{"2":{"143":2,"149":1}}],["ymd75",{"2":{"143":2,"149":1,"222":1}}],["ymdk",{"2":{"143":5,"149":5,"159":1,"160":1,"211":5,"222":1,"226":2,"236":1}}],["yttyx",{"2":{"211":1}}],["yum",{"2":{"2431":1,"2464":1}}],["yugo",{"2":{"207":2,"211":1}}],["yurei",{"2":{"143":2}}],["yosino58",{"2":{"176":1}}],["youtube",{"2":{"2040":2}}],["yourgithub",{"2":{"2570":2}}],["yours",{"0":{"2315":1},"2":{"613":1}}],["yourself",{"2":{"336":1,"356":1,"454":1,"483":1,"1293":1,"1337":1,"1527":1,"1651":1,"2061":1,"2150":1,"2346":1,"2404":1,"2417":1}}],["yourkeyboard",{"2":{"201":1}}],["yourkeymap",{"2":{"132":1}}],["yourkb",{"2":{"132":1}}],["your",{"0":{"354":1,"355":1,"450":1,"537":1,"538":1,"539":1,"540":1,"541":1,"542":1,"543":1,"567":1,"1250":1,"1330":1,"1355":1,"1565":1,"1799":1,"2279":1,"2294":1,"2420":1,"2421":1,"2423":1,"2424":1,"2425":1,"2426":1,"2440":1,"2449":1,"2450":1,"2451":1,"2453":1,"2454":1,"2456":1,"2458":1,"2469":1,"2470":1,"2474":1,"2475":1,"2477":1,"2478":1,"2479":1,"2481":1,"2502":1,"2553":1,"2601":1,"2613":1},"1":{"568":1,"1800":1,"1801":1,"2421":1,"2422":1,"2423":1,"2424":1,"2425":1,"2426":1,"2450":1,"2451":1,"2452":2,"2453":2,"2454":1,"2455":1,"2457":1,"2458":1,"2459":2,"2460":2,"2461":2,"2462":2,"2463":2,"2464":2,"2465":2,"2466":2,"2467":2,"2468":1,"2469":1,"2479":1,"2480":1,"2481":1,"2554":1,"2555":1,"2556":1,"2557":1,"2558":1,"2559":1,"2560":1,"2561":1,"2562":1,"2602":1,"2603":1,"2604":1,"2605":1,"2606":1,"2607":1,"2608":1,"2609":1,"2610":1,"2611":1,"2612":1,"2614":1,"2615":1,"2616":1,"2617":1,"2618":1,"2619":1,"2620":1},"2":{"1":1,"14":1,"18":4,"23":1,"25":1,"31":1,"34":1,"36":1,"37":1,"43":1,"45":2,"49":3,"82":1,"87":1,"89":1,"90":1,"107":2,"110":3,"116":1,"119":4,"120":1,"124":3,"132":1,"196":1,"201":1,"202":2,"218":1,"228":1,"233":2,"235":1,"240":1,"241":2,"253":2,"255":2,"256":1,"257":1,"258":1,"259":2,"270":2,"272":2,"273":3,"276":1,"282":3,"291":1,"303":1,"312":1,"314":2,"315":1,"316":1,"319":1,"320":1,"322":1,"324":1,"327":2,"331":3,"334":1,"335":2,"336":2,"341":4,"352":2,"353":1,"354":2,"355":2,"356":2,"358":1,"365":1,"366":2,"367":2,"373":1,"375":1,"376":4,"380":1,"389":1,"390":1,"391":1,"397":1,"399":1,"401":3,"404":1,"417":1,"430":2,"431":1,"432":3,"435":2,"436":1,"446":5,"447":1,"450":1,"453":2,"454":1,"456":1,"460":1,"462":1,"466":2,"478":1,"481":3,"482":1,"502":7,"504":1,"508":1,"515":2,"534":3,"535":3,"536":1,"537":3,"538":1,"540":4,"541":3,"548":1,"550":1,"551":2,"554":9,"556":3,"557":1,"558":1,"559":3,"560":11,"563":1,"564":2,"565":2,"566":2,"567":2,"568":1,"570":4,"573":1,"584":3,"587":1,"588":2,"589":1,"601":1,"607":2,"609":2,"612":1,"613":3,"614":4,"616":2,"617":1,"621":3,"623":2,"624":1,"625":1,"626":3,"627":3,"629":1,"631":2,"638":1,"639":1,"641":4,"643":2,"644":1,"660":2,"661":1,"665":1,"666":1,"667":1,"669":1,"681":1,"684":2,"685":1,"688":1,"689":2,"690":1,"691":1,"692":1,"694":1,"700":2,"701":2,"702":1,"703":3,"707":1,"726":1,"730":1,"731":1,"734":1,"756":1,"757":1,"758":1,"760":1,"785":1,"786":1,"787":1,"788":1,"789":1,"790":1,"792":1,"817":1,"818":1,"819":1,"820":1,"822":1,"849":1,"850":1,"851":1,"852":1,"853":1,"854":1,"855":1,"857":1,"884":1,"885":1,"886":1,"887":1,"888":1,"889":1,"891":1,"918":1,"919":1,"920":1,"921":1,"922":1,"923":1,"925":1,"952":1,"953":1,"954":1,"955":1,"956":1,"957":1,"959":1,"986":1,"987":1,"988":1,"989":1,"990":1,"991":1,"993":1,"1020":1,"1021":1,"1022":1,"1023":1,"1024":1,"1025":1,"1027":1,"1054":1,"1055":1,"1056":1,"1057":1,"1058":1,"1059":1,"1061":1,"1088":1,"1089":1,"1090":1,"1091":1,"1092":1,"1093":1,"1095":1,"1124":2,"1127":4,"1129":1,"1130":4,"1132":5,"1133":6,"1135":1,"1137":1,"1138":1,"1142":1,"1144":1,"1145":1,"1146":1,"1148":1,"1175":2,"1176":1,"1177":3,"1196":2,"1197":1,"1198":2,"1213":2,"1214":1,"1215":1,"1216":2,"1217":1,"1223":1,"1225":1,"1227":2,"1228":1,"1230":1,"1234":1,"1235":1,"1236":2,"1238":2,"1240":3,"1243":2,"1245":4,"1246":1,"1247":1,"1248":1,"1250":2,"1252":1,"1253":1,"1254":2,"1255":1,"1264":1,"1269":1,"1270":2,"1271":1,"1276":2,"1281":1,"1286":2,"1287":3,"1290":1,"1292":1,"1294":1,"1312":2,"1313":1,"1314":1,"1316":1,"1320":1,"1326":2,"1330":2,"1331":3,"1332":2,"1335":3,"1336":2,"1337":1,"1338":4,"1339":2,"1340":3,"1344":1,"1352":1,"1353":1,"1355":2,"1356":2,"1361":1,"1362":2,"1364":1,"1376":3,"1377":5,"1378":2,"1379":1,"1380":4,"1381":1,"1383":9,"1384":6,"1385":7,"1386":2,"1393":4,"1398":5,"1401":3,"1403":6,"1404":3,"1405":4,"1406":1,"1410":1,"1411":1,"1413":2,"1414":1,"1415":1,"1416":3,"1431":1,"1433":1,"1434":3,"1435":5,"1436":1,"1437":1,"1439":1,"1440":1,"1446":1,"1455":1,"1457":2,"1458":1,"1459":1,"1464":1,"1469":2,"1493":1,"1495":2,"1496":1,"1497":2,"1498":1,"1500":3,"1507":1,"1508":2,"1509":1,"1511":2,"1512":1,"1513":1,"1518":1,"1519":1,"1523":1,"1524":1,"1527":4,"1528":2,"1530":1,"1532":1,"1547":2,"1548":3,"1549":1,"1553":3,"1554":1,"1555":2,"1557":4,"1558":1,"1559":4,"1560":2,"1562":1,"1564":1,"1568":1,"1575":1,"1576":2,"1577":2,"1590":1,"1591":1,"1593":1,"1605":1,"1630":1,"1631":2,"1632":1,"1633":2,"1652":2,"1654":1,"1655":3,"1657":2,"1658":1,"1668":1,"1673":1,"1675":1,"1677":2,"1679":2,"1680":1,"1682":1,"1683":2,"1684":13,"1685":1,"1715":2,"1720":1,"1724":1,"1725":3,"1728":1,"1729":3,"1787":1,"1789":1,"1790":1,"1791":1,"1798":1,"1799":1,"1800":1,"1801":1,"1802":1,"1803":2,"1804":1,"1805":1,"1806":4,"1807":4,"1812":2,"1813":3,"1820":1,"1825":1,"1827":1,"1828":1,"1830":4,"1832":1,"1834":1,"1835":1,"1836":1,"1837":1,"1841":1,"1846":1,"1847":1,"1848":1,"1849":2,"1850":1,"1852":1,"1855":1,"1863":1,"1866":1,"1882":1,"1902":1,"1904":1,"1905":1,"1906":1,"1907":1,"1910":1,"1912":1,"1917":1,"1919":1,"1920":1,"1921":5,"1922":1,"1930":2,"1934":1,"1936":1,"1943":1,"1945":1,"1946":3,"1948":1,"1949":2,"1950":1,"1952":2,"2031":2,"2032":6,"2034":1,"2035":2,"2036":1,"2041":2,"2044":1,"2045":1,"2046":1,"2047":1,"2059":1,"2061":2,"2062":1,"2063":3,"2068":1,"2073":1,"2074":1,"2076":1,"2078":1,"2102":1,"2103":2,"2109":2,"2111":1,"2112":2,"2121":1,"2122":1,"2124":1,"2125":4,"2126":1,"2127":2,"2128":1,"2129":1,"2131":1,"2137":5,"2145":3,"2146":2,"2147":1,"2148":1,"2149":5,"2150":7,"2152":1,"2153":1,"2154":2,"2157":1,"2160":1,"2161":3,"2162":1,"2164":4,"2169":6,"2170":4,"2171":5,"2172":1,"2174":2,"2176":2,"2178":1,"2179":1,"2180":2,"2181":6,"2182":5,"2183":4,"2225":1,"2228":1,"2229":2,"2230":1,"2231":1,"2233":1,"2235":1,"2236":1,"2237":2,"2238":2,"2240":1,"2242":1,"2244":1,"2245":1,"2247":1,"2249":1,"2250":2,"2255":13,"2260":3,"2262":1,"2263":17,"2264":4,"2266":1,"2268":3,"2270":3,"2272":3,"2273":4,"2274":2,"2275":2,"2277":5,"2278":3,"2279":3,"2292":1,"2293":2,"2296":2,"2298":1,"2299":2,"2300":2,"2301":3,"2302":6,"2304":3,"2305":4,"2306":4,"2308":1,"2309":7,"2315":1,"2317":1,"2318":1,"2320":1,"2323":1,"2324":1,"2339":1,"2342":1,"2347":1,"2351":2,"2353":1,"2358":1,"2396":2,"2406":1,"2409":1,"2410":1,"2411":1,"2417":7,"2418":2,"2420":5,"2421":4,"2422":4,"2423":5,"2425":3,"2426":2,"2428":3,"2429":2,"2431":1,"2432":1,"2433":1,"2435":1,"2436":4,"2437":1,"2438":2,"2439":2,"2440":2,"2441":4,"2442":1,"2443":5,"2445":4,"2446":5,"2447":2,"2448":4,"2449":1,"2450":10,"2451":2,"2452":4,"2454":6,"2455":4,"2456":1,"2457":1,"2458":1,"2460":1,"2463":1,"2468":4,"2469":2,"2470":2,"2472":3,"2473":5,"2474":3,"2475":14,"2476":3,"2477":5,"2478":4,"2479":8,"2480":10,"2481":3,"2490":2,"2491":2,"2497":2,"2498":2,"2502":1,"2508":2,"2510":1,"2512":1,"2513":5,"2515":1,"2523":2,"2524":2,"2525":2,"2526":2,"2533":2,"2539":1,"2540":1,"2541":3,"2542":1,"2544":1,"2546":1,"2548":1,"2552":1,"2553":10,"2554":3,"2555":1,"2556":2,"2557":3,"2564":8,"2566":3,"2567":2,"2568":10,"2569":2,"2570":3,"2571":3,"2572":1,"2573":1,"2574":1,"2576":10,"2577":6,"2578":1,"2579":1,"2581":1,"2583":1,"2584":3,"2607":3,"2608":1,"2610":1,"2627":1,"2631":1,"2635":1,"2639":1,"2647":1,"2650":1,"2652":2,"2669":2,"2670":1,"2671":3,"2701":3,"2702":2,"2704":1,"2705":3,"2706":3,"2707":2,"2708":1,"2709":2,"2711":3,"2712":1,"2716":1,"2722":1,"2723":2,"2725":1,"2727":3,"2728":9,"2735":2,"2736":2,"2737":3,"2738":5,"2740":2,"2745":2,"2748":1,"2751":1,"2752":1,"2753":1,"2754":2,"2757":1}}],["you",{"0":{"1656":1,"2320":1,"2325":1,"2670":1},"2":{"1":2,"7":2,"16":1,"23":3,"31":5,"34":2,"37":1,"43":1,"45":2,"49":2,"70":1,"82":1,"83":2,"89":1,"90":3,"107":2,"110":2,"112":2,"119":6,"120":2,"124":3,"152":3,"157":2,"158":3,"182":1,"190":1,"194":2,"202":2,"206":3,"218":2,"228":2,"232":3,"233":2,"240":7,"241":2,"245":1,"248":2,"253":2,"254":2,"255":2,"256":2,"259":2,"270":2,"272":2,"291":1,"303":3,"306":1,"311":2,"312":2,"313":2,"315":3,"316":1,"317":1,"319":2,"320":1,"321":2,"322":1,"326":2,"327":2,"331":4,"332":2,"334":1,"336":2,"341":3,"352":1,"353":1,"354":3,"356":2,"358":1,"364":2,"365":2,"366":2,"367":2,"370":3,"371":1,"372":1,"373":1,"374":1,"375":1,"376":2,"377":1,"378":2,"381":1,"383":1,"386":1,"388":1,"393":1,"394":1,"395":2,"396":2,"397":4,"399":2,"401":5,"402":1,"403":1,"405":1,"407":2,"411":2,"415":2,"417":1,"418":2,"423":1,"424":1,"429":4,"430":1,"431":1,"432":4,"433":1,"434":3,"435":4,"436":3,"437":2,"438":1,"439":1,"440":1,"441":1,"442":1,"445":1,"446":5,"447":3,"448":3,"449":1,"450":2,"451":2,"452":2,"453":6,"454":4,"455":2,"456":1,"457":3,"461":1,"462":1,"466":5,"467":1,"468":1,"469":1,"471":1,"474":4,"476":1,"478":2,"479":1,"481":3,"483":1,"485":2,"488":1,"500":3,"502":3,"503":2,"504":2,"505":8,"506":1,"508":1,"509":1,"510":4,"511":4,"513":1,"515":2,"517":2,"520":1,"521":3,"522":1,"532":1,"537":4,"538":1,"539":2,"540":4,"541":4,"542":1,"545":2,"546":1,"551":3,"552":2,"553":2,"554":13,"555":2,"556":6,"557":4,"558":2,"559":4,"560":13,"561":1,"562":3,"566":1,"567":3,"568":1,"570":3,"571":3,"573":1,"574":6,"575":2,"578":1,"581":1,"584":1,"585":2,"586":4,"587":2,"588":1,"601":1,"607":3,"609":4,"610":1,"611":2,"612":1,"613":4,"614":4,"616":1,"618":1,"621":3,"622":1,"623":2,"624":1,"625":3,"626":7,"627":6,"628":2,"629":1,"630":1,"633":1,"641":3,"643":4,"647":1,"657":2,"658":1,"659":2,"660":2,"661":2,"662":1,"665":3,"668":1,"675":1,"684":3,"685":1,"689":1,"694":1,"698":3,"700":3,"701":1,"703":3,"730":3,"733":1,"741":1,"745":1,"749":1,"751":1,"756":3,"759":1,"768":1,"772":1,"776":1,"778":1,"785":3,"790":1,"791":1,"800":1,"804":1,"808":1,"810":1,"817":3,"821":1,"832":1,"836":1,"840":1,"842":1,"849":3,"855":1,"856":1,"867":1,"871":1,"875":1,"877":1,"884":3,"889":1,"890":1,"901":1,"905":1,"909":1,"911":1,"918":3,"923":1,"924":1,"935":1,"939":1,"943":1,"945":1,"952":3,"957":1,"958":1,"969":1,"973":1,"977":1,"979":1,"986":3,"991":1,"992":1,"1003":1,"1007":1,"1011":1,"1013":1,"1020":3,"1025":1,"1026":1,"1037":1,"1041":1,"1045":1,"1047":1,"1054":3,"1059":1,"1060":1,"1071":1,"1075":1,"1079":1,"1081":1,"1088":3,"1093":1,"1094":1,"1105":1,"1109":1,"1113":1,"1115":1,"1124":1,"1127":1,"1129":2,"1130":1,"1132":4,"1133":3,"1136":5,"1137":2,"1138":3,"1144":3,"1147":1,"1158":1,"1162":1,"1166":1,"1168":1,"1175":3,"1176":2,"1177":4,"1196":3,"1198":3,"1201":1,"1212":1,"1213":4,"1216":2,"1226":1,"1227":1,"1228":1,"1230":1,"1234":4,"1235":1,"1236":4,"1237":2,"1238":4,"1239":2,"1241":2,"1242":6,"1243":1,"1245":2,"1250":1,"1254":5,"1258":3,"1259":1,"1260":1,"1261":1,"1262":1,"1264":3,"1265":1,"1266":2,"1267":1,"1269":1,"1270":2,"1271":1,"1275":1,"1276":2,"1279":1,"1280":1,"1281":1,"1284":1,"1286":2,"1287":8,"1288":4,"1289":1,"1290":2,"1291":1,"1294":1,"1299":2,"1300":8,"1301":1,"1302":1,"1312":4,"1313":1,"1316":1,"1320":2,"1325":6,"1326":5,"1330":2,"1331":9,"1332":15,"1333":1,"1334":1,"1335":7,"1336":2,"1338":3,"1339":4,"1340":8,"1341":7,"1344":1,"1348":1,"1351":3,"1352":2,"1353":4,"1354":2,"1355":4,"1356":1,"1359":4,"1360":1,"1361":5,"1362":1,"1363":4,"1364":6,"1367":1,"1368":2,"1370":2,"1375":1,"1376":3,"1377":8,"1378":4,"1379":1,"1380":5,"1381":2,"1383":14,"1384":10,"1385":15,"1386":3,"1393":1,"1395":1,"1396":2,"1398":11,"1399":5,"1401":4,"1403":5,"1404":4,"1405":5,"1406":4,"1409":2,"1411":5,"1412":3,"1413":1,"1414":2,"1415":1,"1416":9,"1423":1,"1430":2,"1433":1,"1435":8,"1436":2,"1439":5,"1440":3,"1442":2,"1445":1,"1446":1,"1447":1,"1448":2,"1450":1,"1454":1,"1455":2,"1457":2,"1458":1,"1459":3,"1464":4,"1469":3,"1470":1,"1492":1,"1495":6,"1496":2,"1497":4,"1498":2,"1499":2,"1500":3,"1501":1,"1506":1,"1508":5,"1509":2,"1511":3,"1512":2,"1514":1,"1515":8,"1516":1,"1518":11,"1519":2,"1521":2,"1523":3,"1524":2,"1526":1,"1527":6,"1528":1,"1529":1,"1530":1,"1533":1,"1534":2,"1547":1,"1553":5,"1555":1,"1556":4,"1557":2,"1558":5,"1559":1,"1560":3,"1562":2,"1563":3,"1568":1,"1572":1,"1573":3,"1575":1,"1631":2,"1632":1,"1633":1,"1651":6,"1654":1,"1655":5,"1657":2,"1658":1,"1662":2,"1666":3,"1668":3,"1670":2,"1671":2,"1674":1,"1675":7,"1676":1,"1677":5,"1678":3,"1680":1,"1682":2,"1683":3,"1684":8,"1685":2,"1686":2,"1715":2,"1719":1,"1723":4,"1725":2,"1728":1,"1730":1,"1733":2,"1787":2,"1791":6,"1798":2,"1799":1,"1801":1,"1803":5,"1804":1,"1805":6,"1806":2,"1812":1,"1815":1,"1816":1,"1820":2,"1821":1,"1822":1,"1824":1,"1825":1,"1826":2,"1828":1,"1830":4,"1832":3,"1833":2,"1836":2,"1838":1,"1842":2,"1849":3,"1850":1,"1851":1,"1852":1,"1855":2,"1858":1,"1859":2,"1863":2,"1876":1,"1902":1,"1904":1,"1905":1,"1907":2,"1908":1,"1910":1,"1911":1,"1912":6,"1913":1,"1914":2,"1918":2,"1921":6,"1922":2,"1934":1,"1940":1,"1944":4,"1946":2,"1948":3,"1949":1,"1950":1,"1952":1,"1954":1,"1957":2,"1959":4,"1960":2,"2031":1,"2032":6,"2034":3,"2035":1,"2036":2,"2037":2,"2040":1,"2041":2,"2042":3,"2044":3,"2045":1,"2046":1,"2047":3,"2059":3,"2060":4,"2061":2,"2062":2,"2063":2,"2064":3,"2076":2,"2102":1,"2103":1,"2104":2,"2108":3,"2112":3,"2113":5,"2116":1,"2117":4,"2118":3,"2120":1,"2121":2,"2124":2,"2125":4,"2126":5,"2127":1,"2128":7,"2131":7,"2133":7,"2134":1,"2137":1,"2139":1,"2140":1,"2143":1,"2145":4,"2146":2,"2149":4,"2150":8,"2152":5,"2153":1,"2154":1,"2157":1,"2161":9,"2162":4,"2169":11,"2170":3,"2171":1,"2174":3,"2180":2,"2181":4,"2182":4,"2183":3,"2226":2,"2228":5,"2229":1,"2233":2,"2235":1,"2238":1,"2240":1,"2241":2,"2242":1,"2244":1,"2250":5,"2252":7,"2255":16,"2256":3,"2259":2,"2261":4,"2262":10,"2263":17,"2264":3,"2266":1,"2267":2,"2268":5,"2270":1,"2271":1,"2272":4,"2273":5,"2274":12,"2275":3,"2276":8,"2277":5,"2279":9,"2280":6,"2286":2,"2292":2,"2293":1,"2295":3,"2298":1,"2299":4,"2300":1,"2301":2,"2302":10,"2305":6,"2306":3,"2309":8,"2310":4,"2311":2,"2313":1,"2316":1,"2317":1,"2318":3,"2319":1,"2320":1,"2321":1,"2324":2,"2325":6,"2326":1,"2327":3,"2328":4,"2329":1,"2333":1,"2335":2,"2341":1,"2342":3,"2346":1,"2347":6,"2348":6,"2349":2,"2351":4,"2353":5,"2354":1,"2396":2,"2398":1,"2400":1,"2401":1,"2402":3,"2404":3,"2405":6,"2406":5,"2408":3,"2409":2,"2410":4,"2411":3,"2417":6,"2418":4,"2419":2,"2420":3,"2421":5,"2422":7,"2423":5,"2424":6,"2425":6,"2427":1,"2429":4,"2430":2,"2431":1,"2432":1,"2433":1,"2436":1,"2438":2,"2440":1,"2441":6,"2442":4,"2443":3,"2444":2,"2445":5,"2446":4,"2447":3,"2448":3,"2449":2,"2450":7,"2451":1,"2452":4,"2453":1,"2454":8,"2455":4,"2456":3,"2457":8,"2458":2,"2459":3,"2460":1,"2462":2,"2463":1,"2464":2,"2466":3,"2468":9,"2469":6,"2470":1,"2472":3,"2473":5,"2474":3,"2475":6,"2476":3,"2477":4,"2478":1,"2479":4,"2480":12,"2490":12,"2491":8,"2494":2,"2495":3,"2496":1,"2497":6,"2498":3,"2499":1,"2501":1,"2504":3,"2506":1,"2508":5,"2510":4,"2511":1,"2512":1,"2513":8,"2524":1,"2525":1,"2529":1,"2530":3,"2533":3,"2540":1,"2541":1,"2548":1,"2552":1,"2553":4,"2554":2,"2555":1,"2556":5,"2557":2,"2559":1,"2561":1,"2563":1,"2564":5,"2566":2,"2567":1,"2568":4,"2570":2,"2571":2,"2573":1,"2574":1,"2576":3,"2577":10,"2578":1,"2583":1,"2584":1,"2601":1,"2602":2,"2603":1,"2605":6,"2606":3,"2607":9,"2608":3,"2610":3,"2611":2,"2639":1,"2645":1,"2647":1,"2649":1,"2652":1,"2654":1,"2661":1,"2662":1,"2663":2,"2671":2,"2686":2,"2701":1,"2702":6,"2703":1,"2704":1,"2705":8,"2706":9,"2707":3,"2708":5,"2709":2,"2710":2,"2711":4,"2712":1,"2714":1,"2716":1,"2722":3,"2723":4,"2724":2,"2725":1,"2726":1,"2727":5,"2728":29,"2735":6,"2736":4,"2737":2,"2738":7,"2740":2,"2742":2,"2743":3,"2744":1,"2745":1,"2746":3,"2750":4,"2752":6,"2753":5,"2754":1,"2755":2,"2756":3,"2757":17}}],["yiancar",{"2":{"149":1}}],["yiancardesigns",{"2":{"143":3,"149":1}}],["yd68",{"2":{"143":2}}],["yd60mq",{"2":{"143":2,"149":1}}],["ydkb",{"2":{"143":3,"149":1,"211":2}}],["yapf",{"0":{"456":1},"2":{"442":1,"445":3,"456":1,"468":3}}],["yarn",{"2":{"402":1,"403":1}}],["yakiimo",{"2":{"211":1}}],["yandrstudio",{"2":{"199":1}}],["yangdigi",{"2":{"149":1}}],["yanghu",{"2":{"134":1}}],["yasui",{"2":{"143":2}}],["yaml",{"2":{"114":1}}],["yellow",{"2":{"331":1,"433":1,"435":1,"1953":2,"1958":1,"2058":2,"2450":1}}],["yet",{"2":{"149":1,"154":1,"209":1,"236":1,"496":1,"523":1,"537":1,"538":1,"574":1,"654":1,"1237":1,"1491":1,"1948":2,"2063":1,"2152":2,"2263":1,"2326":1,"2377":2,"2433":1,"2468":1,"2498":1,"2525":1,"2526":1,"2548":1,"2553":1,"2556":1,"2560":1,"2587":1,"2596":1,"2730":1,"2756":1}}],["yes",{"2":{"10":1,"28":1,"49":1,"74":1,"87":1,"88":3,"103":4,"104":3,"118":1,"119":1,"126":3,"127":3,"202":1,"232":1,"234":7,"235":1,"266":1,"292":1,"508":1,"516":1,"533":1,"566":1,"596":1,"631":1,"643":1,"665":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1175":1,"1196":1,"1213":1,"1245":1,"1291":1,"1359":1,"1377":1,"1384":2,"1385":2,"1386":1,"1412":1,"1413":1,"1439":1,"1455":1,"1493":1,"1495":1,"1500":1,"1508":1,"1528":1,"1532":1,"1547":1,"1548":1,"1553":1,"1557":1,"1559":1,"1560":1,"1570":1,"1590":1,"1631":1,"1652":1,"1657":1,"1679":1,"1729":2,"1787":1,"1800":1,"1812":1,"1825":1,"1830":1,"1832":1,"1882":1,"1904":2,"1905":2,"1906":2,"1907":2,"1919":1,"1930":1,"1952":2,"2032":2,"2044":2,"2063":2,"2068":1,"2073":1,"2103":1,"2108":1,"2121":1,"2137":1,"2145":2,"2146":1,"2147":1,"2148":1,"2149":1,"2150":1,"2154":1,"2155":1,"2161":1,"2164":1,"2172":1,"2178":1,"2181":2,"2182":1,"2225":1,"2263":1,"2264":1,"2300":2,"2573":1,"2576":10,"2579":2,"2705":2,"2728":1}}],["year>",{"2":{"1380":1}}],["years",{"2":{"6":1,"10":1,"213":1,"2309":1}}],["year",{"2":{"0":2,"9":2,"19":2,"39":2,"52":2,"173":1,"1380":1,"2309":3}}],["r=4",{"2":{"2577":1}}],["rbt",{"2":{"2356":1,"2572":1,"2608":1}}],["rbrc",{"2":{"313":1,"530":2,"1932":1,"2355":1,"2388":1,"2407":1}}],["rr",{"2":{"2153":3}}],["rle",{"0":{"2600":1},"2":{"2575":4,"2585":1,"2592":1,"2596":1,"2600":1}}],["rl",{"2":{"2153":3}}],["rj",{"2":{"2118":2}}],["rz",{"2":{"1632":1}}],["ry",{"2":{"1632":1,"2686":1}}],["ryanbaekr",{"2":{"222":1}}],["r09",{"2":{"1496":2}}],["r08",{"2":{"1496":2}}],["r07",{"2":{"1496":2}}],["r06",{"2":{"1496":2}}],["r05",{"2":{"1496":4}}],["r04",{"2":{"1496":2}}],["r03",{"2":{"1496":2}}],["r02",{"2":{"1496":2}}],["r01",{"2":{"1496":2}}],["r|64",{"2":{"1451":1}}],["rw",{"2":{"1591":2}}],["rwin",{"2":{"1361":1,"2355":1,"2373":1,"2374":1,"2390":1,"2410":1}}],["rwx",{"2":{"236":3}}],["rnrm",{"2":{"2370":2,"2396":2}}],["rn",{"0":{"1281":1},"2":{"1281":1,"1491":5}}],["rn42",{"2":{"134":1,"149":1,"191":1,"211":1,"221":2,"515":1,"1491":1,"1493":1,"2678":1}}],["rts",{"2":{"1195":1,"1197":1,"1198":4}}],["rtc",{"2":{"236":1}}],["rm",{"2":{"2477":1}}],["rmod",{"2":{"1948":1,"2377":1}}],["rms",{"2":{"1577":1}}],["rm24c512c",{"2":{"684":2}}],["rmi",{"2":{"197":13,"199":1}}],["rgui",{"2":{"530":2,"1272":1,"1299":1,"1300":1,"1361":1,"1668":5,"2355":1,"2370":4,"2373":1,"2374":1,"2390":1,"2396":4,"2405":1,"2410":2}}],["rght",{"2":{"313":1,"530":2,"1801":1,"1932":2,"2355":1,"2370":1,"2372":1,"2392":1,"2396":1,"2407":1,"2734":4,"2735":3,"2736":2}}],["rgbtest",{"2":{"2034":1,"2376":1}}],["rgb888",{"2":{"199":1,"2575":2,"2576":2}}],["rgbmatrix",{"2":{"191":1}}],["rgb565",{"2":{"191":1,"199":1,"2575":3,"2576":11,"2577":1}}],["rgb+via",{"2":{"176":1}}],["rgb64",{"2":{"143":2}}],["rgbw",{"0":{"1217":1},"2":{"112":1,"134":1,"266":2,"506":2,"1214":2,"1217":2,"2700":2}}],["rgbkb",{"2":{"93":1,"114":2,"149":1,"176":2,"191":1,"211":1,"266":1}}],["rgblight=true",{"2":{"374":1}}],["rgblight",{"0":{"2694":1},"2":{"49":3,"65":1,"70":3,"74":2,"75":1,"111":6,"112":5,"113":1,"114":6,"160":2,"176":2,"191":10,"199":2,"211":3,"221":3,"222":6,"236":5,"249":4,"266":6,"277":1,"292":6,"404":2,"506":10,"515":1,"582":4,"588":11,"609":1,"611":2,"643":1,"1213":1,"1214":1,"1332":16,"1343":5,"1377":2,"1944":2,"1948":1,"2032":2,"2035":15,"2036":14,"2037":12,"2038":12,"2039":6,"2041":1,"2042":18,"2043":4,"2044":16,"2045":1,"2046":2,"2047":1,"2048":2,"2050":1,"2051":16,"2052":7,"2053":6,"2054":14,"2055":6,"2056":2,"2057":6,"2058":3,"2059":4,"2060":6,"2131":2,"2299":9,"2300":3,"2674":1,"2694":3,"2711":11}}],["rgbleds",{"2":{"191":1}}],["rgbled",{"2":{"45":2,"70":1,"191":1,"222":2,"249":2,"506":2,"511":1,"2032":1,"2040":7,"2131":1,"2300":6}}],["rgb",{"0":{"25":1,"45":1,"80":1,"124":1,"214":1,"233":1,"404":1,"506":1,"1232":1,"1944":1,"1949":1,"1950":1,"1951":1,"1952":1,"1960":1,"1962":1,"1963":1,"1964":1,"1965":1,"1966":1,"1967":1,"1968":1,"1970":1,"1972":1,"1974":1,"1976":1,"1978":1,"1979":1,"1980":1,"1981":1,"1982":1,"1984":1,"1985":1,"1986":1,"1987":1,"1988":1,"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2008":1,"2010":1,"2012":1,"2014":1,"2016":1,"2018":1,"2019":1,"2021":1,"2023":1,"2025":1,"2028":1,"2031":1,"2045":1,"2376":1,"2377":1,"2695":1,"2711":1},"1":{"1233":1,"1945":1,"1946":1,"1947":1,"1948":1,"1949":1,"1950":2,"1951":2,"1952":1,"1953":1,"1954":1,"1955":1,"1956":1,"1957":1,"1958":1,"1959":1,"1960":1,"1961":1,"1962":1,"1963":1,"1964":1,"1965":1,"1966":1,"1967":1,"1968":1,"1969":2,"1970":1,"1971":2,"1972":1,"1973":2,"1974":1,"1975":2,"1976":1,"1977":2,"1978":1,"1979":1,"1980":1,"1981":1,"1982":1,"1983":2,"1984":1,"1985":1,"1986":1,"1987":1,"1988":1,"1989":2,"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"1995":2,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2001":2,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2007":2,"2008":1,"2009":2,"2010":1,"2011":2,"2012":1,"2013":1,"2014":1,"2015":2,"2016":1,"2017":2,"2018":1,"2019":1,"2020":2,"2021":1,"2022":2,"2023":1,"2024":2,"2025":1,"2026":1,"2027":1,"2028":1,"2029":1,"2030":1,"2032":1,"2033":1,"2034":1,"2035":1,"2036":1,"2037":1,"2038":1,"2039":1,"2040":1,"2041":1,"2042":1,"2043":1,"2044":1,"2045":1,"2046":1,"2047":1,"2048":1,"2049":1,"2050":1,"2051":1,"2052":1,"2053":1,"2054":1,"2055":1,"2056":1,"2057":1,"2058":1,"2059":1,"2060":1,"2061":1,"2062":1,"2063":1,"2064":1},"2":{"25":7,"32":3,"45":2,"49":4,"63":1,"65":3,"70":1,"73":1,"80":1,"93":5,"94":1,"112":1,"114":27,"124":3,"133":1,"134":9,"143":4,"149":6,"153":2,"160":1,"176":3,"183":14,"185":7,"191":15,"199":2,"201":1,"211":7,"214":2,"221":3,"222":11,"229":1,"231":3,"233":1,"236":13,"238":1,"244":1,"249":31,"266":8,"277":9,"374":3,"404":2,"506":5,"511":1,"530":16,"574":1,"582":2,"588":20,"589":1,"592":1,"593":5,"594":5,"642":1,"643":1,"664":1,"665":1,"671":1,"729":1,"730":2,"736":1,"737":3,"741":1,"743":1,"749":1,"755":1,"756":2,"762":1,"763":3,"768":1,"770":1,"776":1,"784":1,"785":2,"794":1,"795":3,"800":1,"802":1,"808":1,"816":1,"817":2,"824":1,"825":3,"832":1,"834":1,"840":1,"848":1,"849":2,"859":1,"860":3,"867":1,"869":1,"875":1,"883":1,"884":2,"893":1,"894":3,"901":1,"903":1,"909":1,"917":1,"918":2,"927":1,"928":3,"935":1,"937":1,"943":1,"951":1,"952":2,"961":1,"962":3,"969":1,"971":1,"977":1,"985":1,"986":2,"995":1,"996":3,"1003":1,"1005":1,"1011":1,"1019":1,"1020":2,"1029":1,"1030":3,"1037":1,"1039":1,"1045":1,"1053":1,"1054":2,"1063":1,"1064":3,"1071":1,"1073":1,"1079":1,"1087":1,"1088":2,"1097":1,"1098":3,"1105":1,"1107":1,"1113":1,"1143":1,"1144":2,"1150":1,"1151":3,"1158":1,"1160":1,"1166":1,"1212":1,"1213":1,"1214":2,"1215":1,"1216":1,"1217":3,"1232":1,"1233":1,"1316":1,"1317":1,"1331":1,"1332":25,"1343":1,"1376":2,"1377":8,"1378":1,"1454":2,"1523":1,"1560":4,"1723":2,"1731":1,"1826":8,"1847":1,"1944":1,"1945":2,"1946":1,"1948":36,"1949":149,"1950":7,"1951":4,"1952":21,"1953":22,"1954":24,"1957":8,"1958":11,"1959":15,"1960":6,"1962":1,"1963":1,"1964":1,"1965":1,"1966":1,"1967":1,"1968":1,"1969":1,"1971":1,"2019":1,"2020":1,"2031":3,"2032":3,"2033":1,"2034":24,"2035":4,"2036":2,"2037":2,"2041":3,"2042":2,"2044":2,"2045":3,"2047":1,"2051":5,"2052":10,"2058":24,"2061":1,"2063":6,"2129":1,"2131":2,"2134":2,"2280":2,"2288":1,"2289":2,"2290":2,"2376":22,"2377":15,"2566":5,"2567":2,"2573":8,"2575":2,"2577":5,"2610":1,"2672":1,"2674":1,"2675":1,"2694":2,"2695":3,"2706":1,"2711":51,"2724":2,"2749":1}}],["rq",{"0":{"526":1},"2":{"304":2,"305":2,"526":2}}],["rswp",{"2":{"2370":2,"2396":2}}],["rspc",{"2":{"2109":1,"2110":1,"2112":5,"2113":3,"2382":1}}],["rsi",{"2":{"1410":1}}],["rstp",{"2":{"1553":2,"1555":2,"2363":1}}],["rst",{"2":{"1406":1,"1408":1,"1492":1,"1572":1,"1573":1,"1579":2,"1819":3,"2141":1,"2230":1,"2233":1,"2235":1,"2236":1,"2238":1,"2276":1,"2336":1,"2338":1,"2340":1,"2357":1,"2573":10,"2576":4}}],["rsa",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["rsg",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["rs232",{"2":{"1121":1}}],["rs485",{"2":{"1121":1}}],["rs40",{"2":{"211":1}}],["rsft",{"2":{"313":1,"530":2,"1299":1,"1361":1,"1446":4,"1500":1,"1503":1,"2112":9,"2113":1,"2228":1,"2355":1,"2373":1,"2374":1,"2390":1,"2405":1,"2407":1,"2410":2}}],["rs",{"2":{"249":1,"1591":2}}],["rshift",{"2":{"211":1,"260":1,"1300":1}}],["r17",{"2":{"1496":2}}],["r16",{"2":{"1496":2}}],["r15",{"2":{"1496":2}}],["r14",{"2":{"1496":2}}],["r13",{"2":{"1496":2}}],["r12",{"2":{"1496":2}}],["r11",{"2":{"1496":2}}],["r10",{"2":{"1496":2}}],["r1",{"2":{"211":1}}],["r2",{"2":{"207":1,"211":2,"277":1}}],["rxc1",{"2":{"1907":1}}],["rxcie1",{"2":{"1907":1}}],["rxen1",{"2":{"1907":3}}],["rxled",{"2":{"1316":2,"1320":2}}],["rx",{"2":{"191":1,"1127":1,"1129":8,"1130":5,"1134":1,"1140":11,"1141":9,"1142":8,"1197":2,"1198":4,"1314":1,"1632":1,"1907":6,"2530":2,"2541":2,"2543":2,"2686":1}}],["rp",{"2":{"2536":2,"2537":2,"2538":2,"2542":1}}],["rp2",{"2":{"2450":1}}],["rp2040",{"0":{"163":1,"271":1,"636":1,"691":1,"1318":1,"1321":1,"1324":1,"1908":1,"2249":1,"2531":1,"2540":1,"2541":1,"2542":1,"2544":1,"2545":1},"1":{"2532":1,"2533":1,"2534":1,"2535":1,"2536":1,"2537":1,"2538":1,"2539":1,"2540":1,"2541":2,"2542":2,"2543":1,"2544":1,"2545":1},"2":{"163":5,"174":1,"176":11,"191":9,"199":5,"211":3,"236":3,"266":1,"271":6,"277":1,"492":3,"636":2,"663":1,"688":2,"691":3,"1126":1,"1127":2,"1130":2,"1134":2,"1221":1,"1311":2,"1315":3,"1317":1,"1322":2,"1324":1,"1908":1,"2126":1,"2249":4,"2427":1,"2451":1,"2531":1,"2532":1,"2533":3,"2534":2,"2535":1,"2536":1,"2537":1,"2538":1,"2539":5,"2540":1,"2541":3,"2542":3,"2543":1,"2544":6,"2545":1,"2683":1,"2712":1}}],["rprn",{"2":{"2378":1,"2399":1}}],["rpi",{"2":{"2249":1}}],["rpt",{"2":{"1434":1,"1435":2,"1436":1,"2358":1}}],["rpc",{"2":{"176":2,"2130":7}}],["rdesc",{"2":{"134":1}}],["rot",{"2":{"2719":1}}],["rotary",{"2":{"236":1,"630":1,"1234":1,"2684":1,"2697":1}}],["rotates",{"2":{"1821":1,"1851":3,"1852":3}}],["rotate",{"0":{"1915":1},"2":{"1821":1,"1915":4}}],["rotated",{"2":{"31":1,"34":1,"1329":1,"1821":2,"1849":1}}],["rotating",{"2":{"1562":3,"1576":1,"1822":1,"2143":1}}],["rotations",{"2":{"1853":1,"1854":1,"2584":1,"2686":1}}],["rotational",{"2":{"149":1,"1849":2}}],["rotation",{"0":{"1821":1,"1840":1},"2":{"31":5,"34":5,"199":1,"1560":2,"1816":5,"1821":10,"1822":19,"1840":6,"1851":3,"1852":4,"1915":1,"2140":5,"2143":12,"2576":1,"2577":13,"2581":1,"2617":1,"2686":3}}],["road",{"2":{"2308":1}}],["roadmap",{"2":{"88":1,"104":1}}],["roastpotatoes",{"2":{"2268":1,"2281":1}}],["rosin",{"2":{"2266":1,"2273":2}}],["rosaline",{"2":{"211":1}}],["rofl",{"2":{"2182":3}}],["roving",{"2":{"1491":1}}],["robot",{"2":{"701":1}}],["robustness",{"2":{"211":1}}],["robust",{"2":{"76":1}}],["ro",{"2":{"372":1}}],["rooms",{"2":{"2317":1}}],["room",{"2":{"1725":1,"1822":1,"1946":1,"2143":1,"2290":1}}],["root",{"2":{"279":1,"454":1,"513":1,"556":1,"1254":1,"1298":1,"1338":1,"1451":3,"1452":1,"1729":1,"1952":1,"2262":3,"2446":1,"2447":1,"2452":1,"2513":1,"2753":1}}],["rookiebwoy",{"2":{"241":2,"249":2}}],["rogue87",{"2":{"211":1}}],["ropt",{"2":{"176":1,"1299":1,"1361":1,"2355":1,"2373":1,"2374":1,"2390":1,"2410":1}}],["rocketboard",{"2":{"149":1}}],["rollover",{"0":{"2653":1,"2659":1},"2":{"515":2,"1493":1,"1530":1,"2145":1,"2370":3,"2396":3}}],["roll",{"2":{"347":1,"1686":2,"1929":1}}],["rollback",{"2":{"191":1}}],["rolling",{"0":{"2733":1},"2":{"134":1,"2225":1,"2735":3}}],["roles",{"2":{"2161":1,"2697":1}}],["role",{"2":{"114":1,"149":1,"194":1,"505":3,"2417":1,"2728":2,"2729":8,"2735":8,"2736":5,"2737":1}}],["roughly",{"2":{"1807":1}}],["rouge87",{"2":{"211":1}}],["routing",{"2":{"656":1,"2276":1}}],["routine",{"2":{"49":1,"515":2,"563":1,"565":1,"566":5,"1340":1,"1573":1,"2263":2,"2490":1}}],["routines",{"2":{"49":1,"125":1,"185":1,"508":1,"2526":1}}],["route",{"0":{"307":1,"308":1,"309":1,"310":1},"2":{"2274":1}}],["rounded",{"2":{"1181":1,"1221":1}}],["round",{"2":{"133":1,"134":1,"341":1,"537":1,"1391":1}}],["row1",{"2":{"2311":11}}],["row0",{"2":{"2311":12}}],["row2col",{"2":{"111":1,"502":1,"563":1,"580":3,"2557":2,"2689":1}}],["row",{"2":{"92":2,"114":1,"199":1,"222":1,"255":3,"502":1,"511":5,"565":1,"566":4,"573":1,"580":13,"1252":8,"1314":1,"1323":1,"1324":1,"1326":4,"1329":8,"1403":3,"1405":1,"1495":2,"1496":2,"1497":2,"1519":1,"1530":1,"1547":1,"1552":1,"1563":1,"1612":2,"1614":2,"1684":2,"1725":3,"1728":4,"1946":3,"1949":4,"1958":4,"2122":1,"2125":1,"2131":2,"2155":5,"2231":1,"2238":1,"2268":1,"2273":2,"2274":2,"2276":4,"2279":1,"2311":8,"2401":1,"2519":2,"2558":1,"2566":1,"2575":2,"2614":1,"2617":1,"2686":1,"2689":2,"2693":1,"2728":1,"2740":4,"2745":1}}],["rows",{"2":{"63":1,"111":1,"114":1,"211":2,"502":6,"530":1,"566":2,"580":1,"1329":1,"1330":2,"1359":2,"1403":1,"1405":1,"1725":2,"1792":1,"1822":2,"1946":2,"1958":1,"2122":3,"2125":1,"2131":2,"2155":1,"2164":1,"2268":3,"2270":1,"2276":1,"2311":5,"2401":1,"2406":3,"2423":1,"2557":4,"2558":2,"2566":1,"2614":1,"2648":1,"2689":3,"2747":1}}],["romanian",{"2":{"1355":1,"2703":3}}],["rominronin",{"2":{"381":1,"2293":1}}],["roms",{"2":{"273":1}}],["rom",{"0":{"276":1},"2":{"49":1,"273":1,"1605":1,"2327":1,"2350":1,"2757":1}}],["rcag",{"2":{"2374":1,"2410":1}}],["rcpc",{"2":{"2109":1,"2110":1,"2112":1,"2382":1}}],["rcbr",{"2":{"1932":1,"2378":1,"2399":1}}],["rctrl",{"2":{"1300":1}}],["rctl",{"2":{"313":1,"530":2,"1272":1,"1299":1,"1361":1,"1668":3,"2112":2,"2228":1,"2355":1,"2370":2,"2373":1,"2374":1,"2390":1,"2396":2,"2407":1,"2410":2}}],["rcs",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["rcmd",{"2":{"1299":1,"1361":1,"2355":1,"2373":1,"2374":1,"2390":1,"2410":1}}],["rc",{"2":{"49":3,"1325":1,"2524":1}}],["radius",{"2":{"2577":1}}],["rabk",{"2":{"2378":1,"2399":1}}],["rabbit",{"2":{"143":2}}],["rapc",{"2":{"2109":1,"2110":1,"2112":1,"2382":1}}],["rapidly",{"2":{"1406":1,"1454":1,"2160":1}}],["rag",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["rarely",{"2":{"2183":1}}],["rare",{"2":{"337":1,"584":1}}],["rart",{"2":{"211":1}}],["rartlice",{"2":{"211":1}}],["rartand",{"2":{"211":1}}],["rart80",{"2":{"211":2}}],["rart75m",{"2":{"211":1}}],["rart75",{"2":{"211":2}}],["rart67m",{"2":{"211":1}}],["rart67",{"2":{"211":1}}],["rart60",{"2":{"211":1}}],["rart45",{"2":{"211":1}}],["ralt|mod",{"2":{"1336":1}}],["ralt",{"2":{"313":1,"530":2,"1299":1,"1300":1,"1361":1,"1668":2,"1677":1,"1938":1,"2112":2,"2355":1,"2370":2,"2373":1,"2374":1,"2390":1,"2396":2,"2405":1,"2407":1,"2410":2,"2738":1}}],["rastersoft",{"2":{"222":1}}],["raspberry",{"0":{"163":1,"492":1,"2249":1,"2531":1},"1":{"2532":1,"2533":1,"2534":1,"2535":1,"2536":1,"2537":1,"2538":1,"2539":1,"2540":1,"2541":1,"2542":1,"2543":1,"2544":1,"2545":1},"2":{"163":1,"176":1,"1127":1,"1130":1,"1134":1,"1908":1,"2533":1,"2534":1}}],["rand",{"2":{"1815":1,"2139":1}}],["randomly",{"2":{"1949":3}}],["randomness",{"2":{"1406":3}}],["random",{"0":{"2099":1,"2611":1},"2":{"263":1,"548":1,"1325":1,"1573":2,"1815":2,"1949":5,"2139":2,"2577":1,"2611":3}}],["random8",{"2":{"199":2}}],["ran",{"2":{"581":1}}],["ranges",{"0":{"231":1},"2":{"191":1,"199":2,"231":2,"236":1,"317":1,"1446":1,"1814":1,"1836":1,"2040":1,"2042":1,"2138":1}}],["range",{"0":{"1539":1,"1540":1,"2050":1,"2060":1},"2":{"149":1,"176":2,"191":1,"199":3,"231":22,"534":1,"557":1,"570":4,"1344":2,"1359":4,"1375":1,"1385":5,"1534":3,"1537":2,"1539":1,"1540":1,"1577":1,"1633":1,"1725":3,"1792":1,"1830":1,"1834":1,"1835":1,"1836":2,"1846":1,"1848":1,"1849":2,"1858":1,"1859":1,"1868":1,"1878":1,"1935":1,"1943":1,"1946":3,"2038":2,"2048":3,"2050":2,"2051":5,"2053":6,"2054":14,"2058":1,"2060":5,"2072":1,"2075":1,"2113":1,"2385":1,"2395":1,"2571":1,"2574":1,"2577":3,"2626":1,"2701":1,"2728":1}}],["raison",{"2":{"559":1}}],["raises",{"2":{"462":1,"465":1,"1803":1}}],["raised",{"2":{"341":1,"343":1,"350":2,"1805":2,"2567":2}}],["raise",{"2":{"198":1,"265":1,"465":1,"660":1,"1332":1,"1335":1,"1343":1,"1404":1,"1434":1,"1861":2,"2358":1,"2604":7,"2606":3}}],["rainbow",{"2":{"292":1,"1948":2,"1949":9,"2034":2,"2036":4,"2037":4,"2038":2,"2039":1,"2040":4,"2062":1,"2063":2,"2376":2,"2577":3,"2694":1,"2711":5}}],["raindrop",{"2":{"241":2}}],["raindrops",{"2":{"114":1,"222":1,"1949":6,"2711":2}}],["rainkeeb",{"2":{"143":2}}],["rainkeebs",{"2":{"143":3,"149":2}}],["rain",{"2":{"134":1,"160":1,"199":1,"222":2,"1949":6,"2711":2}}],["rampdown",{"2":{"1578":24}}],["rampup",{"2":{"1578":24}}],["ramlord",{"2":{"211":1}}],["rama",{"2":{"199":1,"211":4}}],["ram",{"2":{"176":1,"191":1,"236":1,"659":1,"660":1,"681":1,"688":2,"1326":1,"1553":1,"1594":1,"1918":1,"2524":2,"2525":1,"2528":1,"2550":1,"2574":5,"2576":2,"2718":1}}],["ramonimbao",{"2":{"102":3,"197":13,"199":1}}],["ratio",{"2":{"1454":1,"1817":1}}],["ratio65",{"2":{"211":2}}],["rationale",{"2":{"49":1}}],["rated",{"2":{"1576":1,"1577":1}}],["rates",{"2":{"642":1}}],["rate",{"0":{"137":1},"2":{"65":1,"114":1,"137":1,"143":3,"149":4,"222":1,"236":1,"502":2,"641":2,"659":4,"1201":1,"1253":1,"1326":1,"1329":1,"1397":4,"1803":1,"1807":1,"1817":1,"1842":1,"1910":3,"2064":1,"2141":1,"2150":1,"2225":1,"2584":3,"2745":1}}],["rather",{"2":{"49":1,"50":1,"124":1,"201":1,"230":1,"234":1,"415":1,"453":1,"468":1,"476":1,"502":1,"505":1,"557":1,"560":1,"570":1,"571":1,"596":1,"1121":1,"1331":1,"1368":1,"1393":1,"1683":1,"1685":1,"1874":1,"2033":1,"2241":2,"2243":1,"2286":1,"2460":1,"2477":1,"2551":1,"2564":1,"2566":2,"2577":1,"2608":1,"2654":1,"2737":1}}],["raw",{"0":{"1918":1,"1925":1,"1927":1},"1":{"1919":1,"1920":1,"1921":1,"1922":1,"1923":1,"1924":1,"1925":1,"1926":2,"1927":1,"1928":2},"2":{"17":1,"50":1,"62":1,"114":1,"160":1,"191":1,"222":1,"266":1,"405":1,"516":1,"566":1,"610":1,"612":1,"1330":1,"1332":7,"1815":3,"1822":6,"1853":1,"1854":1,"1916":1,"1918":1,"1920":5,"1921":2,"1922":2,"1923":8,"1925":1,"2139":3,"2143":4,"2529":2,"2530":1,"2575":4,"2577":3,"2615":3,"2686":1}}],["ribbon",{"2":{"2276":1}}],["river",{"2":{"1949":1}}],["riverflow",{"2":{"277":1,"1949":3}}],["rick",{"2":{"1686":2}}],["richly",{"2":{"2565":1}}],["rich",{"2":{"114":1,"248":1}}],["rigid",{"2":{"2270":1}}],["rigor",{"2":{"556":1}}],["right=11",{"2":{"2577":1}}],["righthand",{"2":{"509":1,"510":1}}],["rightmost",{"2":{"55":1,"1533":1,"1612":1,"1614":1}}],["righty",{"2":{"43":2}}],["right",{"2":{"31":1,"34":1,"100":2,"114":2,"119":2,"149":2,"152":1,"160":1,"176":1,"199":2,"202":1,"203":1,"231":2,"249":1,"255":1,"289":1,"291":1,"313":1,"331":3,"335":1,"453":1,"484":1,"502":2,"506":2,"509":7,"510":5,"511":10,"537":1,"592":1,"627":1,"1123":1,"1126":1,"1129":1,"1299":12,"1300":1,"1336":5,"1396":1,"1405":1,"1416":1,"1436":3,"1439":1,"1496":6,"1500":2,"1501":4,"1547":2,"1558":10,"1559":1,"1584":1,"1586":1,"1668":2,"1670":2,"1677":4,"1684":1,"1722":4,"1725":1,"1728":9,"1730":1,"1801":4,"1817":3,"1822":4,"1839":1,"1845":3,"1849":8,"1852":11,"1854":7,"1855":2,"1861":1,"1862":3,"1871":1,"1912":1,"1913":1,"1929":1,"1932":6,"1946":1,"1948":2,"1949":15,"1954":2,"2060":1,"2108":1,"2109":7,"2110":8,"2113":1,"2122":2,"2124":1,"2125":1,"2126":7,"2127":2,"2131":10,"2141":1,"2143":2,"2153":2,"2157":1,"2162":1,"2167":12,"2179":1,"2229":1,"2232":1,"2234":1,"2241":1,"2246":1,"2248":1,"2255":1,"2270":1,"2273":2,"2274":1,"2355":12,"2370":6,"2372":4,"2373":12,"2374":11,"2378":3,"2382":8,"2388":1,"2390":8,"2392":2,"2394":1,"2396":6,"2399":3,"2410":15,"2411":6,"2436":1,"2477":2,"2498":1,"2508":1,"2530":3,"2546":1,"2558":1,"2577":6,"2598":2,"2619":2,"2661":1,"2688":1,"2695":1,"2697":3,"2711":2,"2738":4}}],["rising",{"2":{"1181":2}}],["risky",{"2":{"1287":1}}],["risk",{"2":{"352":1,"515":1,"692":1,"1287":1,"2272":1,"2720":1}}],["risc",{"0":{"494":1},"1":{"495":1},"2":{"130":2,"134":2,"153":1}}],["riot",{"2":{"222":1,"241":2,"266":1}}],["rionlion100",{"2":{"37":1}}],["rider",{"2":{"2034":1,"2376":1}}],["rid",{"2":{"222":4}}],["ringing",{"2":{"1471":1}}],["ring",{"2":{"199":1,"515":1,"1844":1}}],["rip",{"2":{"149":1}}],["ruin",{"2":{"2274":1}}],["russian",{"2":{"236":1,"2702":1,"2703":2}}],["ruled",{"2":{"2671":1}}],["rule",{"2":{"149":1,"199":1,"457":1,"607":1,"614":1}}],["ruler",{"2":{"143":2,"2272":1}}],["rules",{"0":{"512":1,"1239":1,"1377":1,"1493":1,"1570":1,"2263":1,"2300":1,"2705":1},"1":{"513":1,"514":1,"515":1,"516":1,"1378":1},"2":{"32":1,"49":1,"50":2,"70":29,"74":1,"75":1,"76":3,"87":1,"94":1,"103":1,"114":2,"118":2,"119":1,"133":2,"134":5,"141":1,"149":1,"172":1,"176":2,"191":2,"199":1,"202":1,"211":5,"235":1,"262":1,"266":11,"282":1,"286":1,"374":1,"457":1,"496":2,"499":1,"508":1,"564":1,"565":1,"566":1,"596":1,"606":3,"607":1,"608":1,"610":3,"613":2,"614":6,"631":1,"643":1,"665":1,"681":1,"688":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1124":1,"1127":2,"1130":2,"1144":1,"1175":1,"1196":1,"1213":1,"1218":1,"1238":1,"1239":2,"1245":1,"1254":2,"1291":1,"1312":1,"1314":1,"1315":1,"1322":1,"1329":1,"1330":2,"1340":1,"1346":1,"1347":2,"1376":2,"1377":7,"1378":1,"1384":2,"1385":2,"1386":1,"1390":1,"1393":1,"1394":1,"1396":1,"1413":2,"1439":1,"1455":1,"1460":1,"1491":1,"1493":2,"1495":1,"1500":1,"1501":1,"1508":1,"1527":1,"1528":1,"1532":1,"1547":1,"1548":1,"1553":1,"1557":1,"1559":1,"1570":1,"1590":1,"1631":1,"1652":1,"1657":1,"1679":1,"1724":1,"1729":2,"1787":1,"1800":1,"1812":1,"1825":1,"1830":1,"1832":1,"1834":1,"1835":1,"1836":1,"1837":1,"1841":1,"1846":1,"1847":1,"1848":1,"1849":2,"1850":1,"1882":1,"1904":1,"1905":1,"1906":1,"1907":1,"1919":1,"1930":1,"1945":1,"1952":2,"2032":2,"2063":1,"2068":1,"2073":1,"2103":1,"2111":1,"2121":1,"2137":1,"2145":1,"2146":1,"2147":1,"2148":1,"2149":1,"2150":1,"2154":1,"2161":1,"2164":1,"2172":1,"2178":1,"2181":2,"2182":1,"2225":1,"2229":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2245":2,"2247":2,"2249":2,"2259":2,"2260":1,"2262":2,"2264":4,"2295":4,"2296":1,"2300":19,"2342":1,"2417":1,"2435":1,"2438":1,"2486":1,"2513":1,"2530":1,"2541":1,"2542":1,"2562":1,"2564":1,"2566":3,"2573":2,"2576":10,"2577":2,"2579":1,"2671":1,"2705":1,"2707":1,"2725":1,"2728":2,"2749":1,"2753":3,"2755":1}}],["runoff",{"2":{"1725":1,"1946":1}}],["rundown",{"2":{"554":1}}],["runners",{"2":{"2462":1}}],["runner3680",{"2":{"143":20}}],["running",{"0":{"336":1,"524":1,"2754":1},"2":{"11":1,"50":1,"69":2,"108":1,"132":1,"149":1,"249":1,"315":3,"342":1,"522":1,"527":1,"529":3,"539":1,"558":1,"574":1,"582":1,"628":1,"1134":1,"1181":1,"1238":1,"1241":1,"1439":1,"1463":1,"1464":1,"1492":1,"1519":1,"1530":1,"1743":1,"1745":1,"1747":1,"1749":1,"1755":1,"1756":1,"1779":1,"1785":1,"1970":1,"1972":1,"1974":1,"1976":1,"1982":1,"1983":1,"2024":1,"2030":1,"2037":1,"2229":1,"2254":1,"2255":1,"2262":1,"2327":1,"2353":1,"2435":1,"2454":1,"2461":1,"2463":1,"2465":1,"2467":1,"2475":2,"2479":1,"2584":1,"2667":1}}],["run",{"0":{"1436":1,"2468":1},"2":{"51":1,"90":1,"114":1,"158":2,"176":2,"199":1,"254":1,"263":1,"328":1,"396":2,"400":3,"407":3,"411":4,"414":1,"416":1,"426":1,"428":1,"442":1,"446":1,"447":1,"454":2,"483":1,"484":1,"505":1,"515":1,"521":1,"530":1,"586":1,"590":2,"628":2,"1239":1,"1241":2,"1254":3,"1270":1,"1286":1,"1344":1,"1381":1,"1440":1,"1441":1,"1511":1,"1515":1,"1523":1,"1560":1,"1589":1,"1656":1,"1670":1,"1716":1,"1729":3,"1730":1,"1743":1,"1745":1,"1825":1,"1830":1,"1849":1,"1859":1,"1952":3,"1954":1,"1970":1,"1972":1,"2126":2,"2146":1,"2162":1,"2183":2,"2236":1,"2237":1,"2252":1,"2262":3,"2277":1,"2306":1,"2347":2,"2353":3,"2398":1,"2411":1,"2417":2,"2425":1,"2435":1,"2437":2,"2438":1,"2439":1,"2445":1,"2454":2,"2455":1,"2468":6,"2475":3,"2477":6,"2479":2,"2495":1,"2506":1,"2507":1,"2509":1,"2512":1,"2546":1,"2548":1,"2550":1,"2553":1,"2566":1,"2581":1,"2605":1,"2610":1,"2631":1,"2637":1,"2647":1,"2688":1,"2695":1,"2749":1,"2753":1,"2754":5,"2755":2,"2757":1}}],["runtime=",{"2":{"2252":1}}],["runtime",{"0":{"1553":1},"1":{"1554":1,"1555":1,"1556":1},"2":{"24":1,"660":1,"689":1,"1270":1,"1866":1,"1867":1,"2252":2,"2728":2}}],["runs",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"324":1,"407":2,"411":2,"433":1,"486":1,"575":1,"588":3,"1342":1,"1360":1,"1401":1,"1464":3,"1835":1,"1842":1,"1849":1,"1918":1,"2344":1,"2346":1,"2417":1,"2437":1,"2450":1,"2743":1,"2745":3}}],["r",{"0":{"1970":1,"1972":1},"1":{"1971":1,"1973":1},"2":{"32":1,"191":1,"266":2,"313":1,"429":1,"530":2,"669":1,"672":1,"734":1,"737":1,"760":1,"763":1,"792":1,"795":1,"822":1,"825":1,"857":1,"860":1,"891":1,"894":1,"925":1,"928":1,"959":1,"962":1,"993":1,"996":1,"1027":1,"1030":1,"1061":1,"1064":1,"1095":1,"1098":1,"1126":2,"1148":1,"1151":1,"1217":2,"1300":27,"1451":2,"1686":1,"1948":1,"1957":1,"1959":1,"1971":1,"1973":1,"2034":1,"2051":10,"2106":1,"2148":2,"2153":2,"2237":1,"2294":1,"2317":1,"2355":3,"2376":1,"2386":3,"2407":1,"2566":1,"2575":4,"2686":1,"2699":1,"2715":1}}],["req",{"2":{"2069":1}}],["requried",{"2":{"249":1}}],["requesting",{"2":{"331":1}}],["requested",{"2":{"99":1,"164":1,"527":1,"566":1,"726":1,"1822":1,"2143":1}}],["request",{"0":{"352":1,"2656":1},"1":{"353":1,"354":1,"355":1,"356":1},"2":{"45":1,"50":1,"87":1,"103":1,"126":1,"317":1,"352":3,"355":1,"356":1,"537":1,"550":2,"554":9,"558":1,"560":1,"623":1,"726":1,"1261":1,"1263":1,"1330":1,"1381":1,"1923":8,"2069":2,"2071":1,"2255":3,"2317":1,"2355":1,"2392":1,"2473":1,"2476":1,"2513":1,"2569":1,"2656":1,"2670":1,"2757":1}}],["requests",{"2":{"38":1,"69":1,"199":1,"355":1,"519":2,"549":1,"1265":1,"2478":1,"2567":1,"2568":1,"2656":1,"2719":1}}],["requirement",{"2":{"236":1,"656":1,"1581":1,"2551":1,"2564":1}}],["requirements",{"0":{"364":1,"2251":1,"2564":1},"2":{"160":1,"176":1,"364":2,"429":2,"684":1,"1215":1,"1219":1,"1908":1,"2567":1}}],["requires",{"2":{"158":1,"335":1,"364":1,"402":1,"403":2,"504":1,"625":1,"684":1,"685":1,"688":1,"690":1,"692":1,"694":1,"700":1,"1175":1,"1196":1,"1278":1,"1287":1,"1335":1,"1448":1,"1492":1,"1788":1,"1820":1,"1834":1,"1846":1,"1848":1,"1862":1,"1864":1,"1922":1,"2131":1,"2136":1,"2182":1,"2183":1,"2235":1,"2241":2,"2254":2,"2367":1,"2428":1,"2437":1,"2513":1,"2526":1,"2566":2,"2567":1,"2572":1,"2574":2,"2575":4,"2577":3,"2581":1,"2725":1}}],["require",{"0":{"124":1},"2":{"58":1,"132":1,"134":1,"232":1,"318":1,"341":1,"352":1,"355":2,"371":1,"455":1,"516":1,"529":1,"533":1,"587":1,"625":1,"626":1,"659":1,"688":1,"689":2,"692":1,"1240":1,"1431":1,"1573":1,"1670":1,"1676":1,"1714":1,"1842":1,"1850":1,"1958":1,"1959":1,"2044":1,"2129":1,"2170":1,"2177":1,"2233":1,"2271":1,"2311":1,"2344":1,"2440":1,"2550":1,"2566":1,"2567":1,"2574":1,"2576":3,"2577":1,"2708":1,"2711":1,"2716":1,"2723":1}}],["required",{"0":{"23":1,"2117":1},"1":{"2118":1},"2":{"10":2,"24":1,"50":1,"69":1,"70":1,"107":1,"118":1,"211":1,"228":1,"234":9,"262":1,"292":1,"511":1,"516":1,"552":1,"556":1,"566":1,"571":1,"597":1,"598":1,"610":1,"631":1,"643":1,"654":1,"665":1,"683":1,"700":1,"702":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1126":1,"1134":1,"1144":1,"1175":1,"1176":1,"1177":1,"1196":1,"1197":1,"1213":1,"1226":2,"1230":1,"1357":1,"1416":1,"1430":2,"1445":1,"1534":2,"1581":1,"1591":4,"1670":1,"1671":1,"1819":2,"1821":1,"1825":1,"1834":3,"1835":1,"1836":2,"1838":3,"1842":2,"1846":2,"1847":1,"1848":3,"1849":1,"1852":3,"1866":3,"1868":2,"1918":1,"2065":1,"2129":1,"2130":1,"2141":3,"2172":1,"2199":1,"2226":1,"2260":2,"2270":2,"2272":1,"2275":1,"2314":1,"2328":1,"2350":1,"2429":2,"2431":1,"2436":1,"2513":1,"2515":1,"2523":1,"2564":1,"2566":2,"2567":1,"2576":4,"2577":6,"2672":4,"2673":2,"2675":2,"2676":2,"2677":1,"2684":3,"2685":1,"2686":3,"2688":5,"2693":2,"2694":1,"2695":5,"2699":3,"2700":1,"2752":1,"2753":1}}],["requiring",{"0":{"40":1,"53":1,"67":1,"72":1,"85":1,"101":1,"121":1,"139":1,"155":1,"165":1,"180":1,"193":1,"205":1,"216":1,"225":1,"239":1,"252":1,"269":1},"1":{"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"86":1,"87":1,"88":1,"89":1,"90":1,"102":1,"103":1,"104":1,"105":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"140":1,"141":1,"142":1,"143":1,"156":1,"157":1,"158":1,"159":1,"166":1,"167":1,"168":1,"169":1,"170":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"194":1,"195":1,"196":1,"197":1,"206":1,"207":1,"217":1,"218":1,"219":1,"220":1,"221":1,"226":1,"240":1,"241":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"270":1,"271":1,"272":1,"273":1},"2":{"173":1,"234":1,"276":1,"352":2,"556":1,"689":1,"1497":1,"1499":1,"2154":1}}],["reregister",{"2":{"1665":5,"1671":1,"1674":1}}],["reinstall",{"2":{"2497":1}}],["reinstalling",{"2":{"1241":1}}],["reintroduced",{"2":{"2468":1}}],["reinitializes",{"2":{"2356":1,"2572":1}}],["reinitilization",{"2":{"1829":1}}],["reimplementing",{"2":{"388":1}}],["reimplements",{"2":{"134":1}}],["reimplemented",{"2":{"118":1}}],["reusing",{"2":{"600":1}}],["reused",{"2":{"2255":3,"2686":1}}],["reuse",{"2":{"134":1}}],["rekt1800",{"2":{"211":1}}],["reject",{"2":{"191":1,"266":1}}],["rebase",{"2":{"2477":10}}],["rebasing",{"0":{"2477":1}}],["rebuilding",{"2":{"1290":1}}],["rebooted",{"2":{"1553":1,"2633":1}}],["rebooting",{"2":{"592":1,"1816":1}}],["reboots",{"2":{"504":1,"2149":1}}],["reboot",{"0":{"592":1,"595":1},"1":{"593":1,"594":1,"595":1},"2":{"160":1,"176":1,"191":1,"229":1,"511":1,"592":1,"627":1,"2131":1,"2183":1,"2356":1,"2530":1,"2572":1,"2608":1,"2697":1}}],["rebranded",{"2":{"57":1}}],["recalculations",{"2":{"2584":1}}],["recall",{"2":{"1857":1}}],["rect",{"2":{"2577":5}}],["rectangle",{"2":{"2577":1}}],["rectangles",{"2":{"153":1,"2577":2}}],["rectangular",{"0":{"2619":1},"2":{"1405":1,"2617":1,"2619":1}}],["recreate",{"2":{"2277":2}}],["recreated",{"2":{"149":1}}],["recutting",{"2":{"2276":1}}],["recurse",{"2":{"2252":1,"2255":2,"2475":4}}],["recursive",{"2":{"149":1,"1553":1,"2437":1}}],["recv",{"2":{"2130":1}}],["rec2",{"2":{"1553":3,"2363":1}}],["rec1",{"2":{"1553":3,"2363":1}}],["receiving",{"0":{"1922":1},"2":{"1123":1,"1126":1,"1129":2,"2255":1,"2263":1,"2639":1}}],["receives",{"2":{"1716":1,"2311":2,"2614":1}}],["received",{"2":{"526":1,"703":1,"1380":1,"1921":1,"1922":1,"1923":1,"1925":1,"1926":1,"2147":1,"2570":1}}],["receive",{"0":{"711":1,"1191":1,"1208":1,"1925":1},"1":{"712":1,"713":1,"1192":1,"1193":1,"1209":1,"1926":1},"2":{"191":1,"711":1,"1191":1,"1201":1,"1204":1,"1205":1,"1208":1,"1210":1,"1211":1,"1881":1,"1921":1,"1923":1,"2162":1,"2322":1,"2353":1,"2697":1}}],["reception",{"2":{"1121":3}}],["recently",{"2":{"236":1,"1950":1}}],["recent",{"2":{"114":1,"134":2,"149":1,"160":1,"191":1,"199":1,"222":1,"1438":1,"1491":1,"2495":1}}],["recolored",{"2":{"2577":3}}],["recolor",{"2":{"2577":9}}],["recognised",{"2":{"2321":1}}],["recognises",{"2":{"1567":1}}],["recognise",{"2":{"1359":1,"2183":1}}],["recognizes",{"2":{"1283":1,"2355":1}}],["recognized",{"2":{"1273":1,"1278":1,"1280":1,"1438":1,"1514":1}}],["recognize",{"0":{"1254":1},"2":{"176":1,"481":1,"626":1,"2355":1,"2681":1}}],["reconstruct",{"2":{"2477":1}}],["reconfigured",{"2":{"1828":1}}],["reconfigure",{"2":{"1500":1}}],["reconfiguration",{"2":{"692":1}}],["reconnect",{"2":{"62":1}}],["recopy",{"2":{"452":1}}],["recovering",{"0":{"627":1},"2":{"240":1}}],["recover",{"2":{"228":1}}],["recompilation",{"2":{"2326":1}}],["recompile",{"2":{"124":1,"143":4,"149":1,"2149":1}}],["recommeded",{"2":{"2578":1}}],["recommends",{"2":{"554":1}}],["recommendations",{"2":{"2304":1,"2418":1,"2563":1,"2750":1}}],["recommendation",{"2":{"341":1}}],["recommend",{"2":{"160":1,"625":1,"684":1,"1876":1,"2231":1,"2238":1,"2304":1,"2305":2,"2468":1,"2506":1,"2568":1,"2750":1,"2753":1,"2757":1}}],["recommended",{"2":{"3":1,"4":1,"15":1,"292":2,"493":1,"564":1,"684":1,"1122":1,"1239":1,"1273":1,"1326":7,"1359":1,"1376":1,"1377":2,"1658":1,"1677":1,"1683":1,"1725":2,"1807":3,"1823":1,"1873":1,"1902":1,"1904":1,"1946":2,"2118":1,"2130":1,"2183":2,"2230":2,"2233":2,"2235":2,"2236":2,"2237":2,"2240":2,"2242":2,"2243":2,"2244":2,"2254":1,"2267":1,"2274":2,"2341":1,"2345":1,"2443":1,"2459":1,"2478":1,"2479":1,"2480":2,"2549":1,"2564":1,"2567":1,"2568":1,"2738":1}}],["recommanded",{"2":{"1577":1}}],["records",{"2":{"1874":1,"1878":1}}],["recorded",{"2":{"1553":1,"2363":1,"2477":1,"2633":1}}],["recording",{"2":{"222":1,"1403":4,"1553":6,"1554":1,"1555":1,"1556":3,"2363":2}}],["record",{"0":{"203":1,"572":1,"573":1,"1359":1,"1365":1,"1553":1,"2740":1,"2749":1},"1":{"1360":1,"1361":1,"1362":1,"1363":1,"1554":1,"1555":1,"1556":1},"2":{"3":1,"7":1,"15":1,"22":2,"176":1,"194":2,"195":2,"203":7,"211":3,"534":14,"571":2,"572":4,"573":6,"584":1,"588":3,"1252":8,"1302":3,"1303":3,"1332":8,"1335":1,"1344":3,"1359":10,"1360":9,"1365":1,"1375":3,"1384":5,"1385":9,"1416":1,"1423":3,"1430":3,"1445":1,"1446":3,"1450":1,"1511":1,"1519":2,"1553":3,"1555":3,"1556":4,"1559":1,"1581":1,"1634":7,"1791":1,"1792":3,"1830":4,"1857":1,"1858":3,"1859":4,"1869":1,"1870":4,"1871":4,"1874":2,"1878":3,"1880":2,"1935":2,"1937":1,"1938":1,"1939":1,"1940":5,"1941":5,"1943":5,"1948":1,"2034":1,"2044":5,"2078":3,"2152":3,"2162":4,"2168":4,"2171":1,"2301":2,"2306":1,"2363":3,"2413":5,"2414":8,"2415":5,"2440":1,"2566":1,"2604":4,"2727":1,"2728":8,"2735":1,"2736":1,"2737":1,"2738":1,"2740":2,"2748":1,"2749":59}}],["reordering",{"2":{"182":1,"191":1}}],["reorderable",{"2":{"176":1}}],["reordered",{"2":{"98":1}}],["reorg",{"2":{"114":1}}],["regress",{"2":{"2228":2}}],["regression",{"2":{"134":1,"149":2,"211":1,"2226":2,"2228":1}}],["regulated",{"2":{"2529":1}}],["regulator",{"2":{"1836":1,"2133":1}}],["regularly",{"2":{"586":1}}],["regular",{"2":{"89":1,"114":1,"625":1,"1142":1,"1370":1,"1503":2,"1573":1,"1676":1,"2152":1,"2182":1,"2268":1,"2410":1,"2490":1,"2730":1}}],["regex",{"2":{"1347":1}}],["regen",{"2":{"199":4}}],["regenerate",{"2":{"198":1,"199":1,"249":2}}],["region",{"2":{"2353":1,"2576":5}}],["regions",{"2":{"1268":1}}],["registry",{"2":{"2548":1,"2550":1}}],["registrations",{"2":{"601":1}}],["registration",{"0":{"598":1},"2":{"63":1}}],["registered",{"0":{"2318":1},"1":{"2319":1,"2320":1,"2321":1,"2322":1,"2323":1,"2324":1,"2325":1,"2326":1},"2":{"1303":6,"1665":1,"1670":2,"1671":1,"1673":1,"1839":8,"2130":1,"2161":1,"2735":3,"2736":2}}],["registering",{"2":{"505":1,"1303":1,"1368":1,"1370":2,"1674":1,"1821":1}}],["register16",{"0":{"717":1,"723":1},"1":{"718":1,"719":1,"724":1,"725":1},"2":{"244":2}}],["registers",{"0":{"754":1,"782":1,"814":1,"846":1,"881":1,"915":1,"949":1,"983":1,"1017":1,"1051":1,"1085":1,"1119":1,"1172":1},"1":{"783":1,"815":1,"847":1,"882":1,"916":1,"950":1,"984":1,"1018":1,"1052":1,"1086":1,"1120":1,"1173":1},"2":{"134":1,"749":2,"751":2,"776":2,"778":2,"808":2,"810":2,"840":2,"842":2,"875":2,"877":2,"909":2,"911":2,"943":2,"945":2,"977":2,"979":2,"1011":2,"1013":1,"1045":2,"1047":1,"1079":2,"1081":1,"1113":2,"1115":1,"1142":1,"1166":2,"1168":2,"1557":1,"1842":1,"2311":1,"2524":2}}],["register",{"0":{"714":1,"720":1,"739":1,"749":1,"751":1,"766":1,"776":1,"778":1,"798":1,"808":1,"810":1,"828":1,"840":1,"842":1,"863":1,"875":1,"877":1,"897":1,"909":1,"911":1,"931":1,"943":1,"945":1,"965":1,"977":1,"979":1,"999":1,"1011":1,"1013":1,"1033":1,"1045":1,"1047":1,"1067":1,"1079":1,"1081":1,"1101":1,"1113":1,"1115":1,"1154":1,"1166":1,"1168":1,"1243":1,"1366":1,"1370":1,"1642":1,"1890":1,"2199":1,"2209":1,"2223":1},"1":{"715":1,"716":1,"721":1,"722":1,"740":1,"750":1,"752":1,"767":1,"777":1,"779":1,"799":1,"809":1,"811":1,"829":1,"841":1,"843":1,"864":1,"876":1,"878":1,"898":1,"910":1,"912":1,"932":1,"944":1,"946":1,"966":1,"978":1,"980":1,"1000":1,"1012":1,"1014":1,"1034":1,"1046":1,"1048":1,"1068":1,"1080":1,"1082":1,"1102":1,"1114":1,"1116":1,"1155":1,"1167":1,"1169":1,"1643":1,"1891":1,"2200":1,"2210":1,"2224":1},"2":{"114":1,"134":1,"149":1,"190":1,"191":2,"236":3,"244":2,"249":5,"505":1,"671":1,"672":3,"714":1,"715":1,"717":1,"718":1,"720":1,"721":1,"723":1,"724":1,"726":2,"736":1,"737":4,"739":1,"740":1,"754":1,"762":1,"763":4,"766":1,"767":1,"782":1,"792":1,"794":1,"795":4,"798":1,"799":1,"814":1,"822":1,"824":1,"825":4,"828":1,"829":1,"846":1,"857":1,"859":1,"860":4,"863":1,"864":1,"881":1,"891":1,"893":1,"894":4,"897":1,"898":1,"915":1,"925":1,"927":1,"928":4,"931":1,"932":1,"949":1,"953":1,"959":1,"961":1,"962":4,"965":1,"966":1,"983":1,"987":1,"993":1,"995":1,"996":4,"999":1,"1000":1,"1013":1,"1017":1,"1021":1,"1027":1,"1029":1,"1030":4,"1033":1,"1034":1,"1047":1,"1051":1,"1055":1,"1061":1,"1063":1,"1064":4,"1067":1,"1068":1,"1081":1,"1085":1,"1089":1,"1095":1,"1097":1,"1098":4,"1101":1,"1102":1,"1115":1,"1119":1,"1148":1,"1150":1,"1151":4,"1154":1,"1155":1,"1172":1,"1300":1,"1302":2,"1303":1,"1360":2,"1367":1,"1368":1,"1370":1,"1375":3,"1430":3,"1670":2,"1677":1,"1821":1,"1851":1,"2130":1,"2162":1,"2168":2,"2169":5,"2170":3,"2279":1,"2320":2,"2513":1,"2525":1,"2684":1,"2738":1}}],["reg",{"0":{"739":1,"766":1,"798":1,"828":1,"863":1,"897":1,"931":1,"965":1,"999":1,"1033":1,"1067":1,"1101":1,"1154":1},"1":{"740":1,"767":1,"799":1,"829":1,"864":1,"898":1,"932":1,"966":1,"1000":1,"1034":1,"1068":1,"1102":1,"1155":1},"2":{"740":1,"767":1,"799":1,"829":1,"864":1,"898":1,"932":1,"966":1,"1000":1,"1034":1,"1068":1,"1102":1,"1155":1,"2183":2}}],["regaddr",{"0":{"714":1,"717":1,"720":1,"723":1},"1":{"715":1,"716":1,"718":1,"719":1,"721":1,"722":1,"724":1,"725":1},"2":{"715":1,"718":1,"721":1,"724":1}}],["regards",{"2":{"1431":1,"1676":1,"1842":1,"2169":1,"2515":1}}],["regard",{"2":{"698":1}}],["regardless",{"2":{"49":1,"504":1,"562":1,"1303":1,"1921":1,"2063":1,"2120":1,"2478":1,"2568":1}}],["regarding",{"0":{"27":1},"2":{"92":1,"176":1,"191":1,"213":1,"697":1,"1238":1}}],["retirement",{"2":{"2719":1}}],["retn",{"2":{"2355":1,"2392":1}}],["ret",{"2":{"2184":1,"2384":1}}],["retries",{"2":{"2130":1}}],["retrieves",{"2":{"2479":2}}],["retrieve",{"2":{"317":1,"2577":1}}],["retrieved",{"2":{"317":1}}],["retrieval",{"2":{"191":1,"211":1,"580":1}}],["retry",{"2":{"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1,"1287":1}}],["retro",{"0":{"1431":1,"1432":1,"2738":1,"2739":1},"1":{"1432":1,"2739":1},"2":{"63":1,"112":2,"134":2,"222":1,"236":1,"505":4,"1412":1,"1430":5,"1431":11,"1432":3,"2674":2,"2738":7,"2739":3,"2754":2}}],["retaining",{"2":{"1383":1,"2590":1}}],["retained",{"2":{"1331":1,"2126":1,"2440":1,"2607":1}}],["retain",{"0":{"2046":1},"2":{"114":1,"191":1,"199":1,"2046":2}}],["returned",{"2":{"597":1,"598":1,"599":1,"600":1,"630":1,"1500":1,"1621":1,"1719":1,"1933":1,"2046":1,"2576":10,"2745":1}}],["returncode",{"2":{"428":1,"484":1}}],["returns",{"2":{"428":1,"453":1,"462":1,"464":1,"465":2,"597":1,"638":1,"639":1,"696":1,"1449":1,"1505":1,"1525":2,"1526":1,"1560":1,"1659":1,"1718":1,"1805":1,"1822":12,"1825":1,"1836":1,"1853":5,"1854":3,"1855":1,"1873":1,"1879":1,"1940":1,"2056":1,"2143":8,"2158":1,"2171":1,"2227":1,"2306":1,"2477":2,"2577":2}}],["returning",{"2":{"90":1,"105":2,"203":1,"469":1,"592":1,"597":1,"1506":2,"1523":1,"1560":1,"1716":2,"1937":1,"2070":1,"2231":1,"2238":1,"2696":1}}],["return",{"0":{"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"1182":1,"1185":1,"1187":1,"1190":1,"1193":1,"1205":1,"1211":1,"1482":1,"1484":1,"1489":1,"1616":1,"1621":1,"1648":1,"1696":1,"1701":1,"1704":1,"1707":1,"1710":1,"1713":1,"1742":1,"1756":1,"1762":1,"1772":1,"1775":1,"1777":1,"1779":1,"1782":1,"1785":1,"1896":1,"1899":1,"1969":1,"1983":1,"1989":1,"1995":1,"2001":1,"2011":1,"2017":1,"2020":1,"2022":1,"2024":1,"2027":1,"2030":1,"2187":1,"2205":1,"2208":1,"2213":1,"2215":1,"2218":1,"2220":1},"2":{"31":2,"34":2,"50":1,"90":4,"105":7,"125":3,"134":3,"185":3,"191":2,"194":5,"195":4,"199":1,"249":3,"292":1,"324":1,"453":4,"463":2,"464":2,"465":3,"469":1,"475":1,"529":1,"534":8,"556":3,"565":1,"566":2,"571":2,"572":3,"593":2,"594":1,"597":2,"598":1,"1210":2,"1252":1,"1271":1,"1275":1,"1302":3,"1303":4,"1332":6,"1333":1,"1343":1,"1344":4,"1359":3,"1360":2,"1375":1,"1383":2,"1384":1,"1385":2,"1404":3,"1416":3,"1423":4,"1430":2,"1446":12,"1448":5,"1506":3,"1518":12,"1519":2,"1523":2,"1525":4,"1549":6,"1560":4,"1634":6,"1668":1,"1670":2,"1717":1,"1718":1,"1729":3,"1733":3,"1792":2,"1813":1,"1814":1,"1815":1,"1816":4,"1822":1,"1826":2,"1830":2,"1849":1,"1850":2,"1858":2,"1859":3,"1861":2,"1862":1,"1871":4,"1873":7,"1874":2,"1876":1,"1877":1,"1878":1,"1879":2,"1880":1,"1923":2,"1933":7,"1934":6,"1935":4,"1937":2,"1938":1,"1939":2,"1940":2,"1941":4,"1943":5,"1952":3,"1957":3,"1958":3,"1959":2,"2043":3,"2078":2,"2107":5,"2139":1,"2140":3,"2143":1,"2152":3,"2155":1,"2168":1,"2169":11,"2170":6,"2171":6,"2228":5,"2306":1,"2355":3,"2388":1,"2392":2,"2413":3,"2414":10,"2415":2,"2473":1,"2475":1,"2476":1,"2479":1,"2567":1,"2577":1,"2604":3,"2606":3,"2709":3,"2727":3,"2728":4,"2735":2,"2736":2,"2737":2,"2738":2,"2749":1}}],["rewinding",{"2":{"2477":1}}],["rewind",{"2":{"1932":1,"2355":2,"2393":2}}],["rework",{"0":{"196":2},"2":{"114":1,"134":1,"160":2,"176":1,"191":1,"199":1,"222":1,"236":1,"249":1,"277":1,"560":1,"2424":1}}],["reworked",{"2":{"60":1,"86":1,"118":1,"188":1,"191":1}}],["rewritten",{"2":{"107":1,"1270":1,"2710":1}}],["rewrite",{"2":{"31":1,"75":1,"176":2,"191":1,"1287":2}}],["re",{"0":{"2670":1},"2":{"51":1,"107":1,"119":3,"124":1,"132":1,"134":1,"149":1,"157":1,"176":2,"182":1,"188":1,"198":1,"211":1,"224":1,"228":1,"232":1,"240":1,"241":1,"248":1,"253":1,"268":1,"270":1,"272":1,"273":1,"308":2,"317":1,"344":1,"345":1,"453":1,"455":1,"505":2,"540":1,"541":1,"546":1,"551":1,"554":2,"556":1,"559":1,"574":1,"599":1,"602":1,"627":1,"1136":1,"1138":1,"1234":1,"1241":1,"1300":1,"1304":1,"1332":5,"1363":1,"1403":1,"1414":1,"1499":1,"1514":1,"1515":2,"1518":1,"1563":1,"1581":1,"1674":3,"1677":1,"1678":1,"1791":1,"1861":1,"1912":1,"1948":1,"2116":1,"2121":1,"2126":2,"2128":2,"2182":1,"2183":1,"2226":1,"2255":3,"2274":8,"2276":2,"2279":1,"2282":1,"2303":1,"2305":3,"2307":1,"2309":1,"2342":1,"2353":1,"2421":1,"2441":1,"2446":1,"2451":1,"2454":1,"2455":1,"2469":1,"2477":1,"2478":1,"2490":1,"2491":1,"2510":1,"2512":1,"2513":1,"2516":1,"2550":1,"2552":1,"2554":1,"2563":1,"2564":2,"2566":1,"2568":1,"2576":2,"2602":1,"2610":1,"2614":2,"2615":1,"2706":1,"2707":2,"2708":2,"2711":1,"2728":1,"2738":1}}],["rear",{"2":{"2615":1}}],["reasons",{"2":{"563":1,"1314":1}}],["reasonable",{"2":{"560":1,"1862":1,"2726":1}}],["reason",{"2":{"354":1,"466":1,"560":1,"1272":1,"1300":1,"1336":1,"1363":1,"1379":1,"2118":1,"2556":1,"2564":1,"2577":1,"2728":1,"2741":1,"2753":1}}],["reapply",{"2":{"2477":1}}],["reapplying",{"2":{"1303":1}}],["reap",{"2":{"350":1}}],["reacting",{"2":{"2129":1}}],["reactive",{"0":{"1951":1},"2":{"93":1,"124":1,"176":1,"199":1,"249":1,"266":1,"1728":22,"1730":2,"1949":25,"1951":3,"1954":2,"2711":8}}],["react",{"2":{"2129":1,"2688":2,"2695":2}}],["reached",{"2":{"1697":1,"1803":2,"1807":1}}],["reaches",{"2":{"1340":1,"1802":3,"2323":1,"2477":1}}],["reach",{"2":{"356":1,"557":1,"1438":1,"1684":2,"1807":1,"2144":1,"2564":1}}],["reachable",{"2":{"249":1,"1843":5}}],["reaching",{"2":{"188":1,"1410":1,"2226":1,"2744":1}}],["realtime",{"0":{"2714":1}}],["realpath",{"2":{"2443":1,"2444":1}}],["realized",{"2":{"1663":1}}],["realign",{"2":{"211":1}}],["realloc",{"2":{"236":1}}],["reallocate",{"2":{"199":2}}],["really",{"2":{"153":1,"1242":1,"1329":1,"1412":1,"1414":1,"1430":1,"1499":1,"1668":1,"1671":1,"1676":1,"2270":1,"2509":1,"2740":1}}],["real",{"0":{"1284":1},"2":{"49":1,"245":1,"1251":1,"1278":1,"1284":7,"1325":1,"1430":1,"2144":2,"2553":1}}],["reader",{"2":{"1518":1,"1815":7,"1822":1,"2139":7,"2143":1}}],["readers",{"2":{"460":1}}],["readable",{"2":{"1269":1,"2615":1,"2631":1}}],["readability",{"2":{"453":1,"468":1,"479":1,"530":1,"1269":1,"2405":1}}],["read32",{"2":{"588":1,"2130":1,"2564":1,"2577":6}}],["reads",{"2":{"502":2,"509":1,"510":1,"511":1,"580":3,"638":2,"639":3,"685":1,"720":1,"723":1,"1836":1,"1923":1,"2252":1,"2614":1}}],["readily",{"2":{"479":1,"2350":1}}],["readings",{"2":{"234":1}}],["reading",{"0":{"418":1,"437":1,"535":1},"1":{"419":1,"420":1,"421":1,"422":1},"2":{"114":1,"134":1,"149":1,"160":1,"176":1,"441":1,"502":2,"560":1,"567":1,"681":1,"726":1,"1332":1,"1633":1,"1719":1,"2286":1,"2300":1,"2311":1,"2347":4,"2348":1,"2453":1,"2689":1,"2723":1}}],["ready",{"2":{"282":3,"341":1,"1254":1,"1375":1,"1396":1,"1527":1,"1825":1,"1907":1,"2150":1,"2231":1,"2238":1,"2263":1,"2347":1,"2353":1,"2420":1,"2450":1,"2454":1,"2455":1,"2470":1,"2512":1}}],["readreg",{"2":{"244":1}}],["readreg16",{"2":{"134":1,"244":1}}],["readpin",{"2":{"243":1}}],["readport",{"2":{"114":1}}],["readonly",{"2":{"236":1}}],["readd",{"2":{"199":1}}],["readmes",{"2":{"266":1}}],["readme",{"0":{"623":1,"624":1,"1380":2,"2297":1,"2554":1},"2":{"114":3,"134":1,"160":1,"191":1,"211":1,"222":2,"347":1,"349":1,"559":2,"626":1,"1346":3,"1376":1,"2237":1,"2259":1,"2260":1,"2262":1,"2293":1,"2296":1,"2297":1,"2303":1,"2346":1,"2554":3,"2566":1}}],["read",{"0":{"551":1,"720":1,"723":1,"1186":1,"1204":1,"1290":1,"1619":1,"1646":1,"1815":1,"2139":1},"1":{"721":1,"722":1,"724":1,"725":1,"1187":1,"1205":1,"1620":1,"1621":1,"1647":1,"1648":1},"2":{"2":1,"31":3,"49":1,"114":2,"160":2,"194":1,"195":1,"199":1,"206":1,"243":1,"244":2,"249":1,"284":1,"303":2,"414":1,"418":1,"424":1,"481":1,"530":1,"550":1,"580":3,"633":1,"638":1,"639":2,"696":1,"701":1,"712":2,"721":2,"724":2,"726":1,"727":1,"1121":1,"1186":1,"1187":1,"1192":2,"1205":2,"1209":2,"1210":1,"1237":1,"1266":1,"1290":1,"1301":1,"1325":1,"1331":3,"1332":5,"1333":3,"1341":1,"1375":1,"1452":1,"1518":1,"1553":1,"1554":1,"1619":1,"1620":1,"1630":2,"1633":2,"1640":1,"1647":1,"1662":1,"1714":1,"1803":1,"1815":6,"1822":1,"1836":1,"1847":1,"1849":2,"1851":1,"1923":1,"2124":2,"2125":1,"2139":6,"2143":1,"2162":1,"2263":1,"2299":1,"2311":2,"2348":1,"2423":1,"2473":1,"2476":1,"2536":1,"2537":1,"2553":1,"2564":1,"2579":1,"2581":1,"2600":3,"2612":2,"2614":1,"2615":1,"2713":1,"2723":2,"2724":1,"2752":1}}],["reddit",{"2":{"2715":1}}],["redetect",{"2":{"1828":1}}],["redesigning",{"2":{"1290":1}}],["redefined",{"2":{"2566":1}}],["redefine",{"2":{"500":1,"1320":1,"1385":1,"2112":2}}],["redirect",{"2":{"527":1,"602":1,"1304":1,"2282":1,"2475":1}}],["redirected",{"2":{"268":1}}],["redistribution",{"2":{"2549":1,"2564":1}}],["redistributed",{"2":{"2549":1}}],["redistribute",{"2":{"1380":1,"2570":1}}],["redis",{"0":{"526":1},"2":{"304":1,"308":1}}],["redox",{"2":{"241":2,"249":3}}],["redoing",{"2":{"191":1}}],["redo",{"2":{"160":1}}],["red",{"0":{"647":1,"649":1,"675":1,"677":1,"741":1,"743":1,"749":1,"768":1,"770":1,"776":1,"800":1,"802":1,"808":1,"832":1,"834":1,"840":1,"867":1,"869":1,"875":1,"901":1,"903":1,"909":1,"935":1,"937":1,"943":1,"969":1,"971":1,"977":1,"1003":1,"1005":1,"1011":1,"1037":1,"1039":1,"1045":1,"1071":1,"1073":1,"1079":1,"1105":1,"1107":1,"1113":1,"1158":1,"1160":1,"1166":1},"1":{"648":1,"650":1,"676":1,"678":1,"742":1,"744":1,"750":1,"769":1,"771":1,"777":1,"801":1,"803":1,"809":1,"833":1,"835":1,"841":1,"868":1,"870":1,"876":1,"902":1,"904":1,"910":1,"936":1,"938":1,"944":1,"970":1,"972":1,"978":1,"1004":1,"1006":1,"1012":1,"1038":1,"1040":1,"1046":1,"1072":1,"1074":1,"1080":1,"1106":1,"1108":1,"1114":1,"1159":1,"1161":1,"1167":1},"2":{"49":1,"282":3,"341":1,"401":1,"433":2,"435":1,"593":1,"594":2,"648":2,"650":2,"669":1,"672":1,"676":2,"678":2,"734":1,"737":1,"742":2,"744":2,"750":2,"760":1,"763":1,"769":2,"771":2,"777":2,"792":1,"795":1,"801":2,"803":2,"809":2,"822":1,"825":1,"833":2,"835":2,"841":2,"857":1,"860":1,"868":2,"870":2,"876":2,"891":1,"894":1,"902":2,"904":2,"910":2,"925":1,"928":1,"936":2,"938":2,"944":2,"959":1,"962":1,"970":2,"972":2,"978":2,"993":1,"996":1,"1004":2,"1006":2,"1012":2,"1027":1,"1030":1,"1038":2,"1040":2,"1046":2,"1061":1,"1064":1,"1072":2,"1074":2,"1080":2,"1095":1,"1098":1,"1106":2,"1108":2,"1114":2,"1148":1,"1151":1,"1159":2,"1161":2,"1167":2,"1216":1,"1217":1,"1332":1,"1388":1,"1391":3,"1395":2,"1826":1,"1953":2,"1957":2,"1958":1,"1971":1,"1973":1,"2034":1,"2035":1,"2038":1,"2042":3,"2044":1,"2051":1,"2058":2,"2376":1,"2431":1,"2464":1}}],["reducing",{"2":{"69":1,"565":1,"2226":1}}],["reduces",{"2":{"215":1,"265":1,"560":1,"2226":1}}],["reduced",{"2":{"195":1,"1125":1,"1128":1}}],["reduce",{"0":{"55":1,"2039":1},"2":{"17":1,"94":1,"114":2,"134":1,"149":1,"160":1,"191":6,"199":2,"211":4,"213":1,"222":3,"236":1,"266":1,"513":1,"1437":1,"1817":2,"1932":1,"2141":1,"2262":1,"2263":2,"2478":1,"2566":1,"2704":1,"2708":1,"2709":1}}],["reduction",{"2":{"3":1,"15":1,"149":1}}],["redundant",{"2":{"8":1,"94":1,"114":1,"211":1,"249":5,"266":3,"1524":1}}],["renaming",{"0":{"243":1,"245":1},"2":{"182":1,"194":1,"2567":1}}],["renamed",{"0":{"271":1},"2":{"37":1,"50":1,"142":1,"183":1,"186":1,"219":1,"271":1}}],["rename",{"0":{"142":1,"219":1},"2":{"25":1,"65":1,"94":1,"133":1,"134":3,"149":4,"160":2,"176":4,"191":1,"199":1,"211":13,"222":3,"236":4,"243":1,"249":6,"266":3,"277":4,"1265":1}}],["renderers",{"2":{"2686":1}}],["rendered",{"2":{"1387":1,"1776":1,"1778":1,"1780":1,"1783":1,"1821":1,"1822":1,"2021":1,"2023":1,"2025":1,"2028":1,"2143":1,"2576":2,"2577":1,"2619":1,"2620":1}}],["rendering",{"2":{"1217":1,"1226":1,"1733":1,"1820":5,"1821":2,"1822":1,"1957":1,"2142":3,"2143":1,"2596":1}}],["renders",{"2":{"619":1,"620":1,"1816":2,"1821":1,"1822":1,"2140":2,"2143":1}}],["render",{"2":{"31":1,"191":2,"222":1,"230":1,"1397":1,"1814":3,"1816":8,"1817":1,"1822":5,"1823":3,"2138":2,"2140":4,"2143":2,"2348":1,"2578":1}}],["remembered",{"0":{"1938":1},"2":{"1936":1,"1937":2,"1938":5,"1939":1,"1943":1}}],["remembers",{"2":{"1929":1}}],["remembering",{"2":{"504":1}}],["remember",{"2":{"435":2,"454":1,"509":1,"1332":1,"1921":1,"1936":1,"1937":2,"1938":1,"1939":1,"1943":1,"2149":1,"2150":1,"2152":1,"2183":1,"2311":2,"2467":1,"2752":1,"2757":1}}],["remotes",{"2":{"2475":2}}],["remote",{"2":{"222":1,"236":1,"358":1,"359":1,"1910":3,"2130":1,"2255":5,"2398":3,"2411":3,"2438":2,"2475":9,"2479":9,"2490":2}}],["removal",{"0":{"89":1,"103":1,"126":1,"276":1,"2719":1},"1":{"104":1,"127":1,"2720":1,"2721":1},"2":{"114":1,"124":1,"126":1,"134":1,"240":1,"249":6,"688":1,"1865":2,"2719":2,"2720":2}}],["removes",{"2":{"27":1,"49":1,"50":1,"176":1,"394":1,"1302":1,"1332":1,"2262":1}}],["removed",{"0":{"140":1},"2":{"6":1,"8":1,"36":1,"50":6,"67":1,"86":2,"89":1,"128":1,"140":1,"156":1,"157":1,"194":2,"201":1,"206":1,"211":1,"213":1,"218":1,"228":1,"245":1,"249":1,"254":1,"255":1,"256":1,"262":1,"273":1,"276":1,"394":1,"1673":2,"1674":1,"1823":2,"1873":2,"1876":1,"2468":1,"2566":4,"2720":3}}],["remove",{"0":{"8":1,"128":1,"218":1,"220":1,"254":1,"394":1,"1888":1,"2219":1},"1":{"1889":1,"2220":1},"2":{"4":1,"5":1,"31":3,"32":1,"34":3,"36":1,"38":1,"50":1,"64":1,"65":1,"70":1,"72":1,"75":9,"76":1,"86":1,"94":4,"114":17,"133":8,"134":15,"149":10,"160":5,"176":9,"188":15,"191":42,"199":33,"211":23,"222":19,"236":17,"249":22,"255":1,"257":1,"258":1,"259":2,"265":1,"266":22,"275":1,"277":16,"347":1,"354":1,"394":2,"396":2,"411":1,"529":1,"628":1,"1284":1,"1435":1,"1684":1,"1873":3,"1876":3,"1877":2,"1950":1,"2037":1,"2150":1,"2169":1,"2219":1,"2349":1,"2423":1,"2424":1,"2453":1,"2530":1,"2546":1,"2564":2,"2566":1,"2615":1,"2708":1,"2737":1}}],["removing",{"2":{"3":1,"15":1,"50":1,"134":1,"182":1,"259":1,"272":1,"273":1,"1335":1,"1448":1,"1655":1}}],["remnants",{"2":{"211":1}}],["remainder",{"2":{"1822":2,"2143":2}}],["remainders",{"2":{"236":1}}],["remains",{"2":{"1376":1,"1504":1,"1805":1,"1868":1}}],["remain",{"2":{"480":1,"2071":1,"2490":1,"2574":2}}],["remaining",{"2":{"22":1,"87":1,"103":1,"114":2,"126":1,"191":1,"199":2,"211":2,"249":1,"1212":1,"1442":1,"1815":3,"1822":1,"2031":1,"2139":3,"2143":1,"2147":1,"2148":1,"2723":1}}],["remapped",{"2":{"1142":1,"1822":2,"2143":2}}],["remapping",{"2":{"1142":1,"1499":1}}],["remap",{"2":{"182":1,"1127":2,"1130":2,"1142":5,"1405":1,"1821":2,"2694":1}}],["reflashing",{"2":{"1492":1,"2327":1}}],["reflash",{"2":{"1270":1,"1558":1}}],["reflected",{"2":{"1270":1,"2475":1}}],["reflection",{"2":{"479":1}}],["reflects",{"2":{"182":1,"2491":1}}],["reflect",{"2":{"90":1,"114":1,"182":1,"199":1,"262":1,"1303":1,"1570":1,"1714":1,"2309":1,"2556":1,"2566":1}}],["refills",{"2":{"660":4}}],["refill",{"2":{"659":1}}],["refine",{"2":{"74":1,"1830":1}}],["ref",{"2":{"638":3,"1525":11,"1527":2}}],["refreshed",{"2":{"2067":1}}],["refreshes",{"2":{"588":1}}],["refreshing",{"2":{"1329":1}}],["refresh",{"2":{"331":1,"588":5,"642":1,"1803":1,"1807":1,"1821":1,"2355":2,"2393":2}}],["refers",{"2":{"1300":1,"2662":1}}],["referencing",{"2":{"1416":1,"1432":1}}],["referenced",{"0":{"532":1},"2":{"1729":1,"1952":1,"2403":1,"2475":1}}],["reference",{"0":{"1525":1,"1670":1,"1671":1,"2153":1,"2671":1},"1":{"2672":1,"2673":1,"2674":1,"2675":1,"2676":1,"2677":1,"2678":1,"2679":1,"2680":1,"2681":1,"2682":1,"2683":1,"2684":1,"2685":1,"2686":1,"2687":1,"2688":1,"2689":1,"2690":1,"2691":1,"2692":1,"2693":1,"2694":1,"2695":1,"2696":1,"2697":1,"2698":1,"2699":1,"2700":1},"2":{"95":1,"182":1,"191":2,"199":1,"222":1,"453":1,"540":2,"547":2,"638":1,"1227":1,"1303":1,"1332":1,"1338":1,"1346":1,"1446":1,"1525":8,"1527":4,"1658":1,"1670":1,"1791":1,"1796":1,"2298":1,"2315":1,"2354":1,"2568":1,"2616":1,"2725":1}}],["references",{"0":{"1795":1},"1":{"1796":1,"1797":1},"2":{"27":2,"38":1,"64":1,"95":1,"114":1,"133":1,"134":1,"191":4,"211":2,"222":2,"245":1,"266":1,"1823":2,"2475":1}}],["refereed",{"2":{"1129":2}}],["referring",{"2":{"546":1,"692":1}}],["referred",{"2":{"201":1,"1123":1,"1126":1,"2401":1,"2402":1,"2406":1,"2479":1}}],["refer",{"2":{"233":1,"245":1,"446":1,"543":1,"611":1,"626":1,"789":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1129":1,"1138":1,"1176":1,"1251":1,"1271":1,"1284":1,"1321":1,"1469":1,"1576":1,"1577":2,"1605":1,"1622":1,"1863":1,"1902":1,"1921":1,"2122":1,"2152":1,"2182":1,"2328":1,"2405":1,"2427":1,"2533":1,"2534":1,"2535":1,"2719":1,"2751":1}}],["refs",{"2":{"114":2,"149":1,"2477":1,"2479":2}}],["refactoring",{"0":{"125":1,"169":1,"182":1,"183":1,"184":1,"185":1,"186":1,"188":1,"561":1},"1":{"170":1},"2":{"187":1,"188":1,"191":3,"198":1,"199":1,"222":1,"235":1,"236":1,"244":1,"249":1,"266":1,"341":1,"561":1,"2492":1,"2503":1,"2567":1}}],["refactored",{"2":{"49":1}}],["refactor",{"0":{"17":1,"18":1,"32":1,"33":1,"60":1,"87":1,"263":1},"1":{"34":1,"88":1},"2":{"17":1,"32":1,"49":1,"51":1,"72":1,"75":3,"86":1,"93":1,"94":2,"114":4,"134":2,"149":4,"160":5,"176":4,"190":1,"191":6,"199":5,"211":4,"222":10,"236":3,"249":19,"266":8,"277":8,"2564":1}}],["refactors",{"0":{"29":1,"58":1},"1":{"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1},"2":{"16":1,"561":1,"2566":1}}],["reformat",{"2":{"1":1,"114":1}}],["res2",{"2":{"2148":1,"2153":1}}],["res1",{"2":{"2148":1,"2153":1}}],["resd",{"2":{"2106":1}}],["resistant",{"2":{"1325":1,"1326":4,"1329":1}}],["resistance",{"2":{"789":2,"854":2,"888":2,"922":2,"956":2,"990":2,"1024":2,"1058":2,"1092":2,"1326":1,"2120":1}}],["resistors",{"2":{"1236":1,"1471":1,"2117":1,"2120":2}}],["resistor",{"2":{"236":1,"696":2,"786":2,"789":2,"850":2,"854":2,"885":2,"888":2,"919":2,"922":2,"953":2,"956":2,"987":2,"990":2,"1021":2,"1024":2,"1055":2,"1058":2,"1089":2,"1092":2,"1126":3,"1134":1,"1225":2,"1471":2,"2517":3,"2521":1}}],["res",{"2":{"641":2,"1717":3,"2105":9}}],["reschedules",{"2":{"597":1}}],["resynchronize",{"2":{"2475":3,"2568":1}}],["resynchronizing",{"0":{"2473":1,"2475":1},"1":{"2474":1,"2475":1},"2":{"2472":1}}],["resync",{"2":{"502":1,"1276":1,"2674":1,"2706":1}}],["resembles",{"2":{"2614":1}}],["reserves",{"2":{"2546":1}}],["reserved",{"2":{"461":1,"1594":1,"1814":1,"2138":1,"2294":1,"2348":1,"2395":1,"2571":1}}],["reset6",{"2":{"2530":1}}],["resets",{"2":{"505":1,"1406":1,"1408":1,"1442":1,"1822":1,"2143":1,"2161":1,"2356":1,"2357":1,"2530":1,"2572":1,"2576":2}}],["resetting",{"0":{"2608":1},"2":{"230":1,"683":1,"1243":1,"1497":1,"1691":1,"2524":1}}],["reset",{"0":{"156":1,"167":1,"1289":1,"1698":1,"2539":1,"2609":1},"2":{"49":2,"114":2,"149":1,"156":3,"167":2,"176":2,"188":1,"191":4,"199":2,"222":1,"334":2,"335":3,"336":1,"349":1,"361":2,"433":6,"435":3,"592":6,"593":1,"594":1,"624":2,"625":1,"626":2,"1194":1,"1214":1,"1215":1,"1238":1,"1243":3,"1287":1,"1289":1,"1300":2,"1332":3,"1364":2,"1406":1,"1408":1,"1446":1,"1495":2,"1520":1,"1572":2,"1594":1,"1644":1,"1694":1,"1698":1,"1725":1,"1808":5,"1828":2,"1829":2,"1864":1,"1871":1,"1873":1,"1874":2,"1888":1,"1892":1,"1946":1,"2126":4,"2141":1,"2153":2,"2161":2,"2162":5,"2166":1,"2167":3,"2168":2,"2169":3,"2170":3,"2171":4,"2175":1,"2230":3,"2233":3,"2235":2,"2236":2,"2237":1,"2238":2,"2240":5,"2242":5,"2243":2,"2244":2,"2249":3,"2263":1,"2278":2,"2328":1,"2330":4,"2332":5,"2334":4,"2336":1,"2338":1,"2340":1,"2344":1,"2353":3,"2357":1,"2450":2,"2453":1,"2475":1,"2490":1,"2528":1,"2530":2,"2539":5,"2541":1,"2566":1,"2576":10,"2608":2,"2609":2,"2610":3,"2672":1,"2687":1}}],["responds",{"2":{"1923":1}}],["responding",{"2":{"685":1}}],["respond",{"2":{"551":1,"726":1,"1464":1,"1730":1,"1954":1}}],["response",{"2":{"703":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"726":1,"727":1,"1329":3,"1923":10,"2320":1}}],["responses",{"2":{"522":1,"2550":1}}],["responsiveness",{"2":{"1329":1,"1730":2,"1851":1,"1954":2,"2162":1,"2584":1,"2688":1,"2695":1}}],["responsive",{"2":{"355":1,"587":1,"1954":1}}],["responsibility",{"2":{"341":1}}],["responsible",{"2":{"305":1,"559":1,"562":1,"1225":1,"2162":1,"2417":1,"2523":1,"2584":1,"2744":3}}],["respected",{"2":{"2577":1}}],["respecting",{"2":{"2203":1}}],["respectively",{"2":{"589":1,"610":1,"625":1,"734":1,"760":1,"789":1,"792":1,"822":1,"854":1,"857":1,"888":1,"891":1,"922":1,"925":1,"956":1,"959":1,"990":1,"993":1,"1024":1,"1027":1,"1058":1,"1061":1,"1092":1,"1095":1,"1148":1,"1411":1,"1531":1,"1633":1,"1803":1,"2120":1,"2182":1,"2183":1,"2405":1,"2518":1,"2615":1,"2753":1}}],["respective",{"2":{"50":1,"222":1,"233":1,"234":1,"510":1,"701":1,"1127":1,"1130":1,"1227":1,"1361":1,"1724":1,"1805":3,"1945":1,"2075":1,"2183":1,"2401":1,"2466":1,"2574":1,"2577":1,"2593":1,"2601":1}}],["respect",{"2":{"14":1,"98":1,"176":1,"211":1,"222":1,"562":1,"2549":1,"2576":1,"2598":1}}],["resu",{"2":{"2106":1}}],["resume",{"0":{"1298":1},"2":{"222":1,"263":2,"1298":1}}],["results",{"0":{"316":1},"2":{"99":1,"103":1,"126":1,"236":1,"263":1,"304":2,"315":1,"317":1,"374":1,"457":1,"519":1,"1435":1,"1827":1,"2226":1,"2739":1,"2748":2}}],["resulting",{"2":{"25":1,"119":1,"312":1,"521":1,"527":1,"530":1,"1508":1,"1527":1,"1559":1,"2252":1,"2447":1}}],["result",{"2":{"3":2,"8":1,"15":2,"87":1,"156":1,"166":1,"182":1,"315":2,"316":1,"481":1,"598":1,"641":4,"685":1,"690":2,"726":2,"1289":1,"1340":1,"1379":1,"1405":1,"1406":1,"1412":1,"1431":1,"1432":1,"1518":1,"1527":1,"1573":1,"1827":1,"1845":1,"2161":1,"2169":1,"2448":1,"2576":2,"2577":2,"2581":1,"2719":1,"2738":2}}],["resort",{"2":{"1827":1,"2183":1}}],["resonance",{"2":{"1577":2}}],["resonant",{"2":{"1577":1}}],["resources",{"0":{"2134":1,"2416":1,"2419":1,"2482":1,"2483":1,"2484":1,"2485":1,"2486":1},"1":{"2483":1,"2484":1,"2485":1,"2486":1},"2":{"1326":1,"2151":1,"2398":1,"2409":1,"2411":1,"2419":2,"2457":1,"2482":1,"2490":1,"2543":1,"2546":1,"2577":2,"2582":1,"2713":1,"2750":1}}],["resource",{"2":{"123":1,"516":1,"660":1,"1554":1,"2543":1,"2585":1,"2592":1,"2704":1}}],["resolving",{"0":{"2476":1},"1":{"2477":1},"2":{"203":1,"2255":2,"2472":1,"2564":2}}],["resolved",{"2":{"2477":1}}],["resolves",{"2":{"1516":1,"1523":1}}],["resolve",{"2":{"95":1,"191":3,"236":2,"511":1,"554":1,"2477":1}}],["resolution",{"2":{"134":1,"183":2,"211":2,"641":3,"1221":1,"1557":2,"1558":2,"1632":3,"1633":1,"1807":1,"1838":8,"1910":3,"1911":1,"2105":2,"2106":5,"2107":12,"2684":1}}],["resolutions",{"0":{"2105":1},"2":{"63":1,"1557":1,"1558":4,"1838":1,"2576":1}}],["rests",{"2":{"2665":1}}],["resting",{"2":{"1633":1,"1640":1,"1648":1,"2273":1}}],["restricted",{"2":{"2534":1}}],["restriction",{"2":{"2526":1}}],["restrictions",{"2":{"2525":1,"2549":1}}],["restrictive",{"2":{"1441":1}}],["restructuring",{"2":{"133":1,"560":1}}],["restructure",{"0":{"113":1,"133":1},"2":{"113":1,"176":2,"466":1}}],["rest",{"2":{"243":1,"462":1,"689":1,"690":1,"691":1,"1633":2,"1684":3,"1948":1,"2260":1,"2269":1,"2273":1,"2277":1,"2327":1,"2393":1,"2458":1,"2480":1,"2501":1,"2683":1,"2752":2}}],["restarted",{"2":{"1822":1}}],["restart",{"2":{"199":2,"626":1,"1239":1,"1404":1,"2499":2,"2510":1,"2512":1}}],["restarting",{"2":{"191":1}}],["restoration",{"2":{"149":1}}],["restored",{"2":{"2235":1}}],["restore",{"2":{"62":1,"199":1,"211":2,"222":3,"352":1,"1243":1,"1303":1}}],["rev7",{"2":{"277":1}}],["rev6",{"0":{"1243":1},"2":{"211":1,"331":2,"370":2,"393":2,"394":2,"395":1,"396":1,"1243":1,"1405":1,"1440":1,"2252":2}}],["reva",{"2":{"143":2}}],["revamp",{"2":{"74":1,"222":1}}],["reviewing",{"2":{"554":1,"2563":1,"2569":1}}],["reviewed",{"2":{"554":1}}],["reviewer",{"2":{"554":1}}],["reviews",{"2":{"341":1,"2566":1,"2569":2}}],["review",{"0":{"2439":1,"2569":1},"2":{"341":2,"355":1,"1263":1,"2439":2,"2564":1,"2566":1,"2567":1}}],["revisit",{"2":{"480":1,"482":1}}],["revision",{"2":{"10":2,"17":1,"60":1,"86":1,"114":1,"236":3,"383":1,"568":3,"573":1,"577":1,"579":1,"583":1,"586":1,"587":1,"591":1,"595":1,"1333":1,"1345":1,"1351":1,"1716":1,"2262":2,"2295":1}}],["revisions",{"2":{"10":1,"58":1,"114":1,"160":1,"249":1,"262":1,"277":1,"349":1,"498":1,"502":1,"560":2,"688":1,"2295":2,"2523":1}}],["revised",{"2":{"236":1}}],["reviung61",{"2":{"143":2}}],["reviung5",{"2":{"143":2}}],["reviung53",{"2":{"143":2}}],["reviung41",{"2":{"143":2}}],["reviung39",{"2":{"143":2}}],["reviung34",{"2":{"143":2}}],["reviung33",{"2":{"143":2}}],["reviung",{"2":{"143":7,"149":2}}],["rev0",{"2":{"143":2}}],["rev",{"2":{"114":1,"134":3,"211":6,"226":2,"249":1,"253":1,"1921":1,"2477":4}}],["rev5",{"2":{"114":1,"211":1,"378":1,"2425":4,"2452":2}}],["rev4",{"2":{"114":1,"134":1,"222":1,"226":1,"370":2,"414":3,"415":2,"425":1,"426":2,"624":3,"1287":3,"1351":2,"2231":2,"2238":2,"2262":5,"2421":3}}],["reversed",{"2":{"2155":1}}],["reverses",{"2":{"1933":2}}],["reverse",{"0":{"1753":1,"1754":1,"1980":1,"1981":1,"2191":1},"2":{"191":1,"1302":1,"1402":1,"1408":1,"1438":1,"1727":1,"1914":1,"1932":1,"1933":2,"1934":1,"1948":3,"2034":2,"2052":2,"2059":1,"2184":1,"2357":1,"2369":1,"2376":2,"2377":3,"2384":1}}],["reversing",{"2":{"13":1,"2477":1}}],["reverted",{"2":{"176":1}}],["revert",{"2":{"114":2,"134":2,"149":1,"160":1,"176":2,"191":2,"199":5,"206":1,"211":1,"222":3,"236":1,"2066":1,"2067":1,"2069":1,"2728":1}}],["rev3",{"2":{"57":2,"86":4,"102":1,"134":1,"143":2,"191":1,"241":4,"253":1,"266":1,"375":2,"395":1,"396":1,"624":1,"1243":1,"2262":1,"2293":2,"2294":1,"2295":3,"2422":1,"2469":6}}],["rev1+rev2",{"2":{"72":1}}],["rev1",{"2":{"45":1,"55":4,"58":2,"67":3,"86":5,"102":5,"122":3,"143":34,"149":1,"159":2,"191":1,"207":2,"211":5,"222":1,"226":2,"236":2,"241":12,"249":1,"253":14,"266":2,"624":1,"1312":1,"2126":3,"2295":2}}],["revs",{"2":{"45":3}}],["rev2",{"2":{"45":1,"55":29,"57":2,"67":3,"70":24,"72":1,"86":2,"102":6,"114":3,"143":12,"160":1,"176":3,"211":2,"222":1,"226":1,"236":3,"241":6,"277":1,"313":1,"381":1,"624":1,"2293":1,"2295":2}}],["revx",{"2":{"32":1}}],["reliability",{"2":{"2183":1}}],["reliably",{"2":{"2171":1,"2183":1}}],["relies",{"2":{"2440":1}}],["relieves",{"2":{"2152":1}}],["relied",{"2":{"1824":1}}],["relying",{"2":{"1683":1,"1729":1,"1952":1}}],["rely",{"2":{"222":1,"467":1,"2441":1,"2454":1,"2584":1}}],["relay",{"2":{"1573":2}}],["relaxed",{"2":{"505":1,"1520":1,"1521":1,"2564":2}}],["relax",{"2":{"199":1}}],["relates",{"2":{"2666":1}}],["related",{"2":{"2":1,"16":1,"124":1,"131":1,"163":1,"175":1,"187":1,"188":1,"191":2,"199":1,"236":1,"265":2,"282":3,"341":1,"397":1,"578":1,"609":1,"1262":1,"1298":1,"1340":1,"1341":1,"2162":1,"2305":1,"2348":1,"2442":1,"2480":1,"2510":1,"2556":1,"2566":3,"2577":2,"2582":1,"2705":1}}],["relation",{"2":{"2686":1}}],["relating",{"2":{"215":1,"559":1}}],["relatively",{"2":{"306":1,"1441":1,"2350":1,"2478":1}}],["relatives",{"2":{"157":1}}],["relative",{"0":{"1845":1},"2":{"149":1,"176":1,"1400":1,"1451":1,"1531":1,"1842":2,"2347":1,"2421":1,"2446":1,"2469":1,"2595":1}}],["reload",{"0":{"1773":1,"2018":1},"2":{"149":1,"402":1,"1239":2,"1773":1,"2018":1,"2052":2}}],["relocalize",{"2":{"114":1}}],["relocations",{"2":{"238":1}}],["relocating",{"0":{"43":1},"2":{"236":1}}],["relocate",{"2":{"113":1,"114":2,"133":3,"134":3,"149":2,"188":1,"191":1,"199":1,"211":1,"222":1,"236":1,"277":5}}],["relocated",{"0":{"41":1,"54":1},"1":{"42":1,"43":1,"55":1,"56":1,"57":1,"58":1},"2":{"213":1}}],["releasing",{"2":{"505":1,"707":1,"1431":1,"1675":1,"1807":1,"2079":1,"2450":1,"2490":2,"2566":1,"2662":1,"2735":1,"2738":3}}],["releases",{"0":{"1523":1},"2":{"660":1,"1344":1,"1361":2,"1523":1,"2168":1,"2273":1,"2577":2,"2582":1,"2643":1}}],["released",{"2":{"43":1,"57":1,"515":1,"571":1,"1359":4,"1360":2,"1365":1,"1411":2,"1523":1,"1582":2,"1651":1,"1671":1,"1673":1,"1791":1,"1807":1,"1857":1,"1859":1,"1912":1,"2153":1,"2161":3,"2162":1,"2171":2,"2320":1,"2490":5,"2641":1,"2642":1,"2654":1,"2691":1,"2729":3,"2730":1,"2734":1,"2735":2,"2737":1,"2748":1}}],["release",{"2":{"23":1,"56":1,"111":1,"191":1,"213":1,"222":1,"238":1,"249":1,"251":1,"266":1,"268":1,"277":1,"330":1,"340":1,"504":2,"505":1,"572":2,"707":1,"1133":1,"1275":1,"1284":2,"1299":1,"1303":3,"1319":1,"1332":2,"1360":1,"1361":2,"1368":1,"1430":2,"1431":3,"1442":1,"1500":1,"1522":1,"1523":6,"1572":1,"1645":1,"1674":1,"1675":1,"1802":1,"1864":1,"1889":1,"1893":1,"2112":1,"2152":1,"2161":4,"2183":1,"2197":2,"2198":2,"2431":1,"2448":1,"2459":1,"2468":1,"2735":2,"2736":1,"2737":1}}],["relevant",{"2":{"7":1,"31":1,"132":1,"580":1,"621":1,"1806":1,"2272":1,"2523":1,"2524":4,"2564":1,"2567":1,"2574":1,"2753":1}}],["repairing",{"2":{"2273":1}}],["reparenting",{"2":{"479":1}}],["repurposing",{"2":{"1720":1}}],["repetition",{"2":{"1940":1}}],["repetitively",{"2":{"1410":1}}],["repetitive",{"2":{"1353":1}}],["repeating",{"0":{"1932":1},"2":{"1675":1,"1929":1,"1934":1,"1936":2,"1937":1,"1938":1,"1940":1,"1941":5,"1942":3,"2592":1,"2600":1}}],["repeat",{"0":{"202":1,"1424":1,"1425":1,"1675":1,"1929":1,"1930":1,"2381":1},"1":{"1930":1,"1931":1,"1932":1,"1933":1,"1934":1,"1935":1,"1936":1,"1937":1,"1938":1,"1939":1,"1940":1,"1941":1,"1942":1,"1943":1},"2":{"195":3,"202":6,"211":3,"231":1,"331":1,"505":3,"597":2,"627":1,"1411":9,"1675":6,"1807":1,"1929":7,"1930":2,"1931":3,"1932":9,"1933":3,"1934":4,"1935":4,"1937":2,"1940":8,"1941":8,"1942":2,"1943":1,"2044":3,"2381":4,"2737":5}}],["repeatedly",{"2":{"1287":1,"1335":1,"2051":1,"2156":1}}],["repeated",{"0":{"1940":1,"1941":1},"2":{"64":1,"93":1,"191":1,"597":2,"628":1,"1325":1,"1675":1,"1936":2,"1937":1,"1939":1,"1940":4,"1941":1,"1942":4,"1943":1,"2600":2,"2737":1}}],["repeats",{"2":{"63":1,"202":1}}],["replays",{"2":{"1553":1}}],["replay",{"0":{"1553":1},"1":{"1554":1,"1555":1,"1556":1},"2":{"1553":5,"2363":2,"2477":1}}],["replacing",{"0":{"27":1},"2":{"508":1,"515":2,"571":1,"2182":1,"2438":1}}],["replacement",{"0":{"566":1,"1659":1,"1660":1,"1661":1,"1662":1},"2":{"172":1,"189":1,"204":1,"240":1,"1310":1,"1447":1,"1451":1,"1659":1,"1665":1,"1668":1,"1670":5,"1673":2,"1674":1,"2065":1,"2408":1,"2524":1,"2525":1,"2526":1,"2527":1,"2545":1}}],["replacements",{"2":{"172":1,"2712":1}}],["replaced",{"2":{"7":1,"8":1,"27":1,"169":1,"184":1,"195":3,"254":1,"485":1,"627":1,"1303":1,"1383":1,"1853":1,"2279":1,"2566":1,"2720":1}}],["replace",{"2":{"5":1,"7":1,"31":4,"34":1,"50":1,"172":1,"176":1,"191":1,"199":2,"211":1,"240":4,"266":1,"331":1,"510":1,"563":1,"1254":1,"1300":1,"1335":2,"1359":1,"1380":1,"1385":2,"1447":2,"1451":1,"1497":2,"1564":1,"1655":1,"1854":1,"2109":4,"2263":2,"2437":1,"2438":1,"2728":2}}],["replicate",{"2":{"1948":1,"2034":1}}],["replicates",{"2":{"1548":1,"1559":1}}],["replied",{"2":{"352":1}}],["replugging",{"2":{"1403":1}}],["replug",{"2":{"626":1,"1270":1}}],["reply",{"2":{"324":1}}],["reproducing",{"2":{"1390":1}}],["reproduce",{"2":{"263":1}}],["reprimanded",{"2":{"562":1}}],["representing",{"0":{"1507":1},"2":{"1426":1,"1427":1,"1428":1,"1440":1,"1855":4,"2302":1,"2324":1,"2406":1,"2666":1}}],["represented",{"2":{"701":1,"2577":1,"2686":1}}],["represents",{"2":{"262":1,"538":1,"1436":1,"1452":1,"1725":5,"1855":1,"1938":1,"1946":5,"2147":1,"2152":1,"2262":1,"2311":2,"2477":1,"2615":1,"2640":1,"2660":1,"2757":1}}],["representation",{"2":{"199":1,"519":1,"1300":1,"1303":1,"2298":1,"2616":1,"2671":1,"2745":1}}],["represent",{"2":{"160":1,"436":1,"1438":1,"1507":1,"1855":1,"2311":2,"2348":1,"2477":1,"2615":1}}],["rep",{"2":{"202":1,"211":1,"1930":1,"1931":1,"2381":1}}],["reposition",{"2":{"1684":1}}],["repositories",{"2":{"26":1,"1346":2,"2466":1,"2564":1}}],["repository",{"0":{"2433":1,"2443":1},"2":{"21":1,"126":1,"163":1,"182":2,"224":1,"228":3,"233":1,"241":1,"253":1,"265":4,"268":3,"270":1,"275":1,"337":1,"347":1,"349":2,"352":1,"399":1,"517":1,"529":3,"533":1,"535":1,"554":5,"1265":1,"1376":1,"2252":1,"2346":1,"2428":2,"2429":1,"2433":1,"2437":1,"2439":1,"2440":1,"2441":3,"2443":2,"2445":4,"2446":1,"2448":2,"2463":1,"2472":1,"2473":1,"2475":5,"2479":3,"2501":1,"2513":3,"2556":1,"2564":1,"2565":1,"2566":4,"2569":1,"2719":2,"2720":2}}],["reported",{"2":{"1298":1,"1326":1,"1435":1,"1632":1,"2153":1,"2353":1,"2556":1,"2757":1}}],["reporting",{"2":{"505":1,"1326":1,"1910":2,"2653":1}}],["reports",{"0":{"1855":1},"1":{"1856":1,"1857":1,"1858":1,"1859":1,"1860":1,"1861":1,"1862":1},"2":{"149":1,"175":2,"176":2,"222":1,"505":2,"549":1,"587":1,"627":1,"1842":2,"1847":1,"1851":2,"1854":2,"1855":2,"1859":1,"1862":1,"1916":1,"1921":4,"2144":1,"2649":1,"2699":3}}],["report",{"0":{"1898":1,"1900":2},"1":{"1899":1,"1901":2},"2":{"50":4,"74":1,"114":2,"160":3,"190":1,"191":6,"199":3,"211":1,"236":3,"305":1,"376":1,"505":1,"515":1,"1278":2,"1284":2,"1300":2,"1433":1,"1434":2,"1534":1,"1538":1,"1539":1,"1540":1,"1541":1,"1542":1,"1543":1,"1544":1,"1545":1,"1641":1,"1642":1,"1644":1,"1655":1,"1673":3,"1674":3,"1719":1,"1849":15,"1850":5,"1851":4,"1852":2,"1853":18,"1854":18,"1855":16,"1857":5,"1858":11,"1859":12,"1860":1,"1861":10,"1862":13,"1879":4,"1880":4,"1885":1,"1890":1,"1892":1,"1897":1,"1898":1,"1900":1,"1901":1,"1917":2,"1921":2,"1922":1,"1923":13,"1925":1,"1927":1,"2125":1,"2317":1,"2358":2,"2466":1,"2660":1}}],["repo",{"0":{"6":1},"2":{"6":1,"22":1,"77":1,"360":1,"370":1,"389":1,"390":1,"539":1,"556":1,"1346":1,"1398":1,"2114":1,"2126":1,"2238":1,"2303":2,"2477":2,"2479":6,"2480":1,"2566":1}}],["q=is",{"2":{"2566":1}}],["ql",{"2":{"2171":14}}],["qn",{"2":{"358":3,"359":3,"360":2,"361":2}}],["qc60",{"2":{"253":2}}],["q9",{"2":{"249":1}}],["q8",{"2":{"249":1}}],["q7",{"2":{"249":1}}],["q4z",{"2":{"241":2}}],["q4",{"2":{"226":2,"236":1}}],["q0",{"2":{"211":2,"226":4,"236":1}}],["qol",{"2":{"211":1}}],["q5",{"2":{"191":1,"249":1}}],["q6",{"2":{"191":1}}],["q3",{"2":{"191":1,"236":1}}],["qff",{"0":{"2600":1},"2":{"191":1,"266":1,"409":1,"410":1,"2575":6,"2577":6,"2585":2,"2587":8,"2588":12,"2589":2,"2590":1,"2591":1,"2600":1}}],["qgfimagefile",{"2":{"249":1}}],["qgf",{"0":{"2600":1},"2":{"191":1,"266":1,"408":1,"2575":4,"2577":6,"2586":1,"2587":4,"2588":2,"2589":1,"2590":1,"2591":1,"2592":2,"2593":5,"2594":10,"2595":3,"2596":7,"2597":3,"2598":6,"2599":3,"2600":1}}],["q2m3ueu",{"2":{"624":1}}],["q2",{"2":{"176":1,"236":1}}],["qp",{"2":{"160":1,"176":1,"191":2,"199":1,"211":1,"222":1,"236":4,"249":2,"2576":29,"2577":104,"2581":6,"2582":2,"2584":1}}],["qpocket",{"2":{"149":2}}],["qpockets",{"2":{"143":4}}],["q",{"2":{"149":1,"191":1,"266":1,"277":2,"313":1,"380":1,"404":1,"530":2,"1355":1,"1511":1,"1527":1,"2169":1,"2355":3,"2386":3,"2401":1,"2407":1,"2513":1,"2703":3}}],["qaz",{"2":{"143":2}}],["qk100",{"2":{"266":1}}],["qk21",{"2":{"236":1}}],["qk",{"0":{"156":1,"167":1},"2":{"120":8,"156":2,"167":2,"176":3,"188":4,"189":1,"191":8,"194":2,"199":5,"202":6,"231":26,"266":1,"277":1,"313":1,"317":3,"504":1,"530":2,"534":1,"592":2,"626":1,"1270":1,"1287":1,"1344":1,"1354":4,"1355":1,"1398":4,"1399":1,"1402":2,"1403":4,"1406":6,"1408":15,"1434":6,"1443":3,"1446":22,"1456":7,"1494":3,"1500":1,"1512":3,"1518":8,"1553":5,"1564":1,"1565":2,"1566":2,"1572":13,"1635":32,"1651":1,"1652":1,"1653":1,"1669":3,"1679":1,"1686":1,"1687":2,"1727":9,"1793":144,"1801":19,"1883":32,"1930":4,"1931":4,"2034":11,"2044":2,"2069":4,"2106":9,"2110":7,"2149":3,"2152":2,"2156":7,"2168":1,"2171":2,"2173":2,"2184":8,"2228":16,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":2,"2247":2,"2249":2,"2356":7,"2357":15,"2358":6,"2359":3,"2360":7,"2361":3,"2362":1,"2363":5,"2364":2,"2365":32,"2366":1,"2368":1,"2369":9,"2370":35,"2371":144,"2372":19,"2375":3,"2376":11,"2379":3,"2380":32,"2381":4,"2382":7,"2383":7,"2384":8,"2396":35,"2524":1,"2565":1,"2572":8,"2608":2,"2609":2,"2728":3}}],["q11",{"2":{"249":1}}],["q1v1",{"2":{"226":4,"236":1,"266":1}}],["q1",{"2":{"114":1,"191":1,"226":4}}],["qw",{"2":{"1511":4,"1527":1}}],["qwertz",{"0":{"2658":1}}],["qwertlekeys",{"2":{"211":1}}],["qwertyydox",{"2":{"253":2}}],["qwerty",{"0":{"2145":1,"2657":1},"2":{"92":1,"176":2,"257":1,"258":1,"259":2,"572":1,"1332":1,"1335":1,"1338":1,"1339":1,"1355":2,"1362":1,"1398":1,"1524":1,"1525":3,"1527":2,"1813":2,"1934":1,"2137":2,"2145":1,"2154":1,"2323":1,"2324":1,"2325":4,"2402":1,"2406":1,"2607":2,"2703":4}}],["qwiic",{"0":{"128":1},"2":{"74":2,"128":2,"134":6}}],["quokka",{"2":{"249":1}}],["quote",{"2":{"1584":1,"2355":1,"2378":1,"2388":1,"2399":1}}],["quoted",{"2":{"160":1,"612":1}}],["quot",{"0":{"1284":4,"1458":2,"1506":2,"1943":2,"2166":2,"2349":2,"2472":2},"2":{"5":2,"14":2,"75":2,"92":2,"110":8,"114":4,"119":10,"134":4,"152":2,"160":6,"174":2,"175":2,"176":5,"182":4,"187":2,"189":2,"190":2,"191":8,"194":2,"199":6,"201":16,"202":2,"210":2,"211":14,"215":2,"218":2,"222":6,"230":2,"234":2,"236":8,"245":4,"249":10,"263":6,"266":6,"277":2,"282":6,"313":1,"317":4,"341":2,"350":4,"352":2,"374":2,"429":2,"430":2,"457":2,"462":6,"466":2,"502":6,"505":2,"523":2,"524":2,"530":2,"554":6,"557":2,"574":2,"589":2,"597":2,"598":2,"611":4,"612":2,"617":2,"638":2,"639":2,"654":2,"659":2,"681":2,"688":2,"689":2,"690":2,"691":2,"726":2,"852":4,"1023":4,"1057":4,"1127":4,"1129":2,"1130":4,"1143":2,"1212":2,"1214":4,"1215":8,"1219":2,"1224":4,"1250":8,"1254":2,"1270":2,"1272":4,"1273":2,"1284":2,"1287":2,"1325":2,"1329":4,"1331":2,"1332":4,"1338":4,"1340":2,"1346":2,"1351":2,"1357":66,"1359":2,"1361":14,"1368":2,"1384":4,"1385":4,"1391":2,"1397":2,"1399":6,"1402":2,"1416":2,"1417":1,"1419":1,"1428":1,"1447":2,"1448":2,"1457":4,"1458":2,"1463":2,"1495":2,"1499":4,"1501":2,"1503":8,"1506":6,"1508":2,"1511":2,"1522":2,"1534":2,"1539":2,"1540":2,"1559":4,"1567":2,"1573":6,"1610":2,"1685":2,"1686":6,"1715":2,"1817":2,"1830":2,"1845":4,"1855":2,"1912":2,"1923":6,"1929":4,"1932":6,"1933":2,"1934":4,"1935":14,"1936":2,"1938":4,"1941":2,"1943":2,"1950":2,"1957":2,"2031":2,"2034":2,"2038":12,"2078":2,"2114":2,"2126":2,"2131":2,"2141":2,"2154":2,"2169":2,"2171":5,"2172":14,"2173":12,"2174":8,"2175":18,"2177":4,"2182":6,"2183":2,"2231":2,"2238":2,"2255":10,"2259":2,"2268":2,"2272":2,"2278":6,"2281":8,"2317":2,"2331":2,"2339":2,"2347":2,"2349":2,"2355":2,"2376":2,"2378":1,"2388":2,"2397":2,"2398":6,"2399":1,"2406":8,"2407":5,"2411":6,"2413":3,"2424":2,"2439":6,"2452":4,"2460":4,"2467":2,"2468":2,"2474":2,"2479":4,"2480":2,"2490":8,"2513":14,"2543":2,"2545":2,"2550":2,"2559":2,"2564":6,"2565":2,"2566":15,"2567":2,"2575":2,"2576":2,"2577":4,"2581":2,"2585":2,"2592":4,"2600":2,"2606":2,"2615":6,"2617":2,"2672":16,"2673":4,"2677":2,"2683":2,"2686":18,"2688":10,"2689":18,"2692":2,"2693":4,"2694":6,"2695":12,"2696":2,"2697":6,"2698":2,"2699":10,"2700":4,"2727":2,"2730":4,"2740":2,"2744":2,"2750":4,"2751":2,"2752":2,"2753":1,"2757":2}}],["quirky",{"2":{"2576":1}}],["quit",{"2":{"1344":1}}],["quite",{"2":{"119":1,"401":1,"493":1,"1265":1,"1436":1,"1655":1,"1825":1,"2108":1,"2169":1,"2229":1,"2703":1,"2750":1,"2752":2,"2757":1}}],["quickly",{"2":{"1582":2,"1804":1,"1807":1,"2038":1,"2169":2,"2230":1,"2233":1,"2235":1,"2236":1,"2238":1,"2272":2,"2273":2,"2344":1,"2502":1,"2727":1}}],["quicker",{"2":{"1416":1,"2273":1,"2564":2}}],["quickest",{"2":{"124":1}}],["quickstart",{"0":{"1235":1}}],["quick",{"0":{"195":1,"2250":1,"2737":1},"1":{"2251":1,"2252":1,"2253":1,"2254":1},"2":{"112":1,"114":1,"195":8,"199":3,"505":4,"554":1,"1416":1,"2040":1,"2171":1,"2279":1,"2535":1,"2714":1,"2737":13}}],["quad",{"0":{"2169":1},"2":{"2169":1}}],["quadratic",{"2":{"1802":1,"1804":1,"1807":1}}],["quality",{"2":{"659":7,"1265":1,"2719":1}}],["quark",{"2":{"143":2}}],["quarter",{"2":{"133":1,"189":1}}],["quackfire",{"2":{"57":2}}],["quantum",{"0":{"153":1,"232":1,"248":1,"254":1,"560":1,"2312":1,"2356":1,"2571":1,"2573":1,"2574":1,"2575":1,"2576":1,"2577":1,"2578":1,"2580":1,"2581":1,"2582":1},"1":{"2313":1,"2314":1,"2315":1,"2316":1,"2317":1,"2572":1,"2574":1,"2575":1,"2576":1,"2577":1,"2579":1,"2580":1,"2581":2,"2582":2,"2583":1,"2584":1},"2":{"1":1,"74":1,"75":2,"94":1,"113":2,"114":7,"133":1,"134":1,"149":3,"153":5,"158":1,"160":3,"176":2,"191":2,"199":7,"203":2,"211":3,"222":9,"231":1,"232":5,"234":2,"236":1,"248":3,"249":1,"266":4,"404":1,"408":1,"409":1,"410":1,"515":1,"568":1,"1257":1,"1267":1,"1330":1,"1332":1,"1383":2,"1385":1,"1398":7,"1399":2,"1402":1,"1406":1,"1445":2,"1446":1,"1729":1,"1797":7,"1849":1,"1850":1,"1952":1,"2036":1,"2162":2,"2257":1,"2263":3,"2313":1,"2356":1,"2406":1,"2424":1,"2501":1,"2566":2,"2571":3,"2573":18,"2574":12,"2575":4,"2576":24,"2577":4,"2578":2,"2579":4,"2581":1,"2585":1,"2592":1,"2607":1,"2608":1,"2640":1,"2645":1,"2703":1,"2741":1,"2743":1,"2744":1,"2749":4,"2753":1}}],["queried",{"2":{"1438":1}}],["query",{"0":{"2057":1},"2":{"132":1,"134":1,"290":1}}],["queued",{"0":{"523":1},"2":{"263":1,"315":1,"522":1}}],["queue",{"2":{"191":1,"304":1,"315":1,"526":1,"2577":1}}],["ques",{"2":{"134":1,"191":1,"2378":1,"2399":1}}],["questioned",{"2":{"2566":1}}],["questions",{"0":{"1237":1,"1256":1},"1":{"1238":1,"1239":1,"1240":1,"1241":1,"1242":1,"1243":1,"1257":1,"1258":1,"1259":1,"1260":1,"1261":1,"1262":1,"1263":1,"1264":1,"1265":1},"2":{"355":1,"551":4,"554":1,"559":1,"1237":1,"1244":1,"1264":1,"1266":1}}],["question",{"0":{"551":1},"2":{"48":1,"191":1,"529":1,"551":2,"559":1,"1471":1,"2378":1,"2399":1,"2670":2}}],["quefrency",{"2":{"45":1,"114":1,"2131":1}}],["qmkuser",{"2":{"2475":2}}],["qmkurl",{"2":{"1359":4,"2566":1}}],["qmklayer",{"2":{"1446":2}}],["qmkbest",{"2":{"1359":9,"1446":2,"2566":1}}],["qmk+current",{"2":{"49":1}}],["qmk",{"0":{"0":1,"9":1,"19":1,"26":1,"39":1,"51":1,"52":1,"65":1,"66":1,"70":1,"76":1,"78":1,"82":1,"83":1,"95":1,"96":1,"115":1,"135":1,"150":1,"161":1,"164":1,"177":1,"192":1,"200":1,"212":1,"223":1,"237":1,"250":1,"267":1,"303":1,"311":1,"318":1,"362":1,"368":1,"370":1,"371":1,"372":1,"373":1,"374":1,"375":1,"376":1,"377":1,"378":1,"379":1,"380":1,"381":1,"382":1,"383":1,"384":1,"385":1,"386":1,"387":1,"388":1,"389":1,"390":1,"391":1,"393":1,"394":1,"395":1,"396":1,"397":1,"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1,"410":1,"411":1,"412":1,"416":1,"427":1,"448":1,"496":1,"497":1,"517":1,"522":1,"527":1,"528":1,"536":1,"1247":1,"1248":1,"1257":1,"1264":1,"1265":1,"1797":1,"2144":1,"2150":1,"2231":1,"2238":1,"2255":1,"2257":1,"2284":1,"2292":1,"2293":1,"2313":1,"2417":1,"2427":1,"2428":1,"2441":1,"2442":1,"2451":1,"2452":1,"2456":1,"2468":1,"2471":1,"2483":1,"2492":1,"2500":1,"2503":1,"2511":1,"2553":1,"2572":1,"2585":1,"2592":1,"2600":1,"2613":1,"2621":1,"2693":1,"2722":1,"2742":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"319":1,"320":1,"321":1,"363":1,"364":1,"365":1,"366":1,"367":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":1,"423":1,"424":1,"449":1,"450":1,"451":1,"452":1,"497":1,"498":1,"499":1,"500":1,"523":1,"524":1,"525":1,"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"537":1,"538":1,"539":1,"540":1,"541":1,"542":1,"543":1,"2145":1,"2146":1,"2147":1,"2148":1,"2149":1,"2150":1,"2151":1,"2152":1,"2153":1,"2258":1,"2259":1,"2260":1,"2293":1,"2294":1,"2295":1,"2296":1,"2297":1,"2298":1,"2299":1,"2300":1,"2301":1,"2302":1,"2303":1,"2304":1,"2305":1,"2306":1,"2307":1,"2308":1,"2309":1,"2310":1,"2418":1,"2419":1,"2429":1,"2430":1,"2431":1,"2432":1,"2433":1,"2434":1,"2435":1,"2436":1,"2437":1,"2438":1,"2439":1,"2440":1,"2442":1,"2443":1,"2444":1,"2445":1,"2446":1,"2447":1,"2448":1,"2452":1,"2453":1,"2457":1,"2458":1,"2459":1,"2460":1,"2461":1,"2462":1,"2463":1,"2464":1,"2465":1,"2466":1,"2467":1,"2468":1,"2469":1,"2472":1,"2501":1,"2502":1,"2512":1,"2554":1,"2555":1,"2556":1,"2557":1,"2558":1,"2559":1,"2560":1,"2561":1,"2562":1,"2586":1,"2587":1,"2588":1,"2589":1,"2590":1,"2591":1,"2593":1,"2594":1,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1,"2614":1,"2615":1,"2616":1,"2617":1,"2618":1,"2619":1,"2620":1,"2622":1,"2623":1,"2624":1,"2625":1,"2626":1,"2627":1,"2628":1,"2629":1,"2630":1,"2631":1,"2632":1,"2633":1,"2634":1,"2635":1,"2636":1,"2637":1,"2638":1,"2639":1,"2640":1,"2641":1,"2642":1,"2643":1,"2644":1,"2645":1,"2646":1,"2647":1,"2648":1,"2649":1,"2650":1,"2651":1,"2652":1,"2653":1,"2654":1,"2655":1,"2656":1,"2657":1,"2658":1,"2659":1,"2660":1,"2661":1,"2662":1,"2663":1,"2664":1,"2665":1,"2666":1,"2667":1,"2668":1,"2669":1,"2743":1,"2744":1,"2745":1,"2746":1,"2747":1,"2748":1,"2749":1},"2":{"0":3,"1":1,"2":2,"6":1,"9":3,"10":2,"11":1,"12":1,"19":3,"21":4,"23":2,"24":3,"26":1,"38":2,"39":3,"49":2,"50":2,"51":1,"52":3,"65":1,"67":1,"69":2,"70":9,"75":2,"76":1,"82":2,"83":2,"86":2,"87":1,"93":1,"94":2,"95":4,"99":1,"100":1,"102":1,"103":1,"109":1,"110":1,"111":2,"112":3,"113":1,"114":5,"116":4,"118":1,"119":2,"120":3,"122":1,"124":1,"126":1,"128":2,"130":2,"131":2,"132":2,"133":2,"134":5,"143":1,"145":1,"146":1,"152":2,"153":2,"154":1,"156":2,"158":7,"159":1,"160":2,"163":5,"164":4,"166":1,"167":1,"168":1,"169":1,"172":3,"173":9,"174":2,"176":3,"179":1,"181":1,"182":2,"184":1,"189":3,"195":1,"196":1,"197":1,"199":6,"201":3,"202":1,"209":1,"211":10,"213":3,"224":3,"228":4,"230":1,"236":6,"238":1,"240":6,"243":3,"244":1,"249":6,"251":2,"254":1,"262":1,"263":3,"265":5,"266":3,"268":4,"273":3,"275":3,"276":3,"278":1,"279":1,"282":3,"291":1,"292":3,"302":1,"303":1,"304":1,"305":2,"311":2,"313":1,"314":1,"315":1,"317":5,"318":3,"320":1,"331":5,"335":1,"337":5,"341":4,"343":2,"344":2,"345":2,"346":1,"347":3,"349":8,"350":2,"351":1,"352":9,"356":1,"358":4,"359":1,"360":3,"361":4,"363":3,"364":2,"365":8,"366":7,"367":3,"370":18,"371":6,"372":3,"373":3,"374":4,"375":7,"376":4,"377":1,"378":5,"379":2,"380":3,"381":2,"382":2,"383":1,"384":1,"385":1,"386":1,"387":2,"388":4,"389":3,"390":3,"391":4,"393":4,"394":4,"395":2,"396":2,"397":7,"399":1,"400":4,"401":7,"402":1,"403":2,"404":1,"405":4,"406":2,"407":9,"408":1,"411":5,"412":1,"413":1,"414":5,"415":3,"416":1,"417":3,"419":1,"420":1,"421":1,"422":1,"423":3,"424":3,"427":1,"428":2,"429":2,"430":8,"431":1,"433":1,"436":2,"437":1,"440":1,"441":1,"443":1,"444":1,"446":1,"447":1,"448":2,"450":3,"451":4,"452":1,"454":1,"458":5,"483":3,"484":1,"485":2,"486":3,"489":1,"492":1,"496":4,"497":1,"499":1,"511":7,"513":1,"514":1,"516":1,"517":3,"519":4,"520":3,"521":4,"522":5,"523":1,"526":3,"527":3,"528":1,"529":6,"530":4,"532":1,"533":1,"534":1,"535":3,"536":1,"537":1,"539":1,"541":3,"545":2,"549":1,"550":1,"551":3,"552":2,"554":3,"556":2,"557":3,"558":2,"559":1,"560":5,"561":2,"563":1,"567":3,"568":1,"570":1,"571":3,"572":1,"580":2,"585":1,"587":2,"588":1,"596":1,"605":2,"606":6,"607":3,"609":1,"613":2,"614":3,"615":2,"621":1,"622":1,"624":3,"625":2,"626":1,"629":4,"630":1,"636":1,"656":1,"684":1,"685":1,"688":1,"689":1,"690":2,"691":1,"694":1,"695":1,"699":1,"1138":1,"1142":1,"1174":1,"1181":1,"1195":1,"1217":1,"1234":2,"1235":1,"1236":1,"1237":1,"1241":5,"1242":1,"1247":1,"1248":1,"1251":1,"1255":1,"1257":2,"1258":1,"1264":2,"1265":7,"1270":1,"1271":1,"1273":1,"1278":2,"1286":2,"1291":1,"1302":2,"1303":1,"1315":1,"1322":1,"1325":1,"1327":1,"1332":1,"1334":1,"1336":1,"1338":1,"1340":1,"1344":1,"1346":1,"1351":1,"1353":1,"1354":1,"1357":1,"1359":6,"1376":2,"1377":1,"1383":1,"1385":2,"1441":1,"1445":1,"1454":1,"1491":1,"1492":1,"1499":1,"1515":1,"1529":2,"1530":1,"1553":1,"1559":1,"1562":1,"1594":2,"1654":1,"1680":1,"1714":1,"1729":1,"1787":1,"1792":1,"1797":1,"1814":3,"1830":1,"1832":1,"1863":1,"1881":1,"1918":1,"1952":1,"2031":2,"2033":1,"2047":1,"2072":1,"2102":1,"2114":3,"2122":1,"2125":2,"2126":6,"2130":1,"2134":1,"2138":3,"2145":1,"2146":3,"2149":1,"2153":1,"2169":1,"2183":1,"2229":4,"2230":4,"2231":7,"2233":2,"2235":2,"2236":2,"2237":2,"2238":11,"2239":1,"2240":2,"2242":2,"2243":2,"2244":4,"2245":2,"2247":2,"2249":3,"2250":1,"2252":5,"2254":1,"2255":8,"2256":1,"2257":2,"2259":3,"2260":1,"2263":1,"2266":2,"2269":1,"2271":1,"2277":7,"2278":2,"2279":1,"2280":2,"2284":1,"2292":1,"2293":3,"2295":4,"2296":1,"2298":2,"2303":3,"2304":1,"2307":1,"2310":1,"2311":1,"2313":5,"2314":1,"2315":1,"2316":1,"2317":1,"2327":1,"2341":2,"2342":1,"2346":1,"2347":1,"2348":1,"2349":5,"2353":1,"2354":1,"2356":2,"2400":1,"2401":1,"2405":1,"2406":2,"2410":1,"2411":1,"2417":4,"2419":1,"2421":5,"2422":2,"2424":2,"2425":1,"2427":6,"2428":2,"2429":1,"2431":2,"2433":2,"2435":8,"2436":2,"2437":9,"2438":6,"2439":3,"2440":2,"2441":7,"2442":3,"2443":3,"2444":4,"2445":8,"2446":4,"2447":1,"2450":2,"2451":2,"2452":4,"2453":2,"2454":2,"2455":2,"2457":1,"2458":4,"2459":1,"2461":3,"2463":5,"2465":2,"2466":3,"2467":3,"2468":8,"2469":4,"2472":4,"2473":4,"2475":19,"2477":3,"2478":1,"2479":14,"2482":1,"2483":2,"2492":1,"2494":1,"2498":1,"2501":2,"2503":1,"2504":1,"2506":1,"2508":3,"2510":2,"2511":1,"2512":2,"2513":10,"2523":4,"2524":1,"2530":1,"2533":1,"2535":1,"2539":1,"2540":1,"2546":5,"2548":3,"2549":2,"2551":2,"2552":2,"2553":9,"2563":2,"2564":4,"2565":2,"2566":18,"2567":3,"2568":2,"2569":1,"2571":1,"2572":2,"2573":1,"2575":20,"2576":1,"2577":3,"2584":2,"2585":1,"2592":1,"2596":1,"2597":1,"2601":1,"2613":1,"2614":5,"2615":3,"2619":2,"2629":1,"2637":2,"2639":1,"2656":1,"2666":1,"2667":1,"2671":5,"2672":2,"2674":1,"2683":1,"2686":3,"2693":1,"2701":1,"2704":1,"2713":1,"2715":1,"2719":8,"2720":3,"2722":2,"2723":1,"2724":1,"2725":2,"2742":1,"2743":3,"2744":1,"2746":1,"2748":1,"2749":1,"2752":1}}],["fwlink",{"2":{"2513":1}}],["fknraiden",{"2":{"2270":1}}],["fkeys",{"2":{"1530":1}}],["fps",{"2":{"1807":5}}],["f♯",{"2":{"1793":6,"2371":6}}],["fb",{"2":{"1576":3,"1577":3}}],["fdbk",{"2":{"1572":1}}],["f9²",{"2":{"635":1}}],["f9¹",{"2":{"635":1}}],["f9",{"2":{"313":1,"530":2,"2355":2,"2387":2,"2408":1}}],["f8²",{"2":{"635":1}}],["f8¹",{"2":{"635":1}}],["f8",{"2":{"313":1,"530":2,"2355":2,"2387":2,"2408":1}}],["f24",{"2":{"2355":2,"2387":2}}],["f23",{"2":{"1360":2,"2355":2,"2387":2}}],["f21",{"2":{"1360":2,"2355":2,"2387":2}}],["f22",{"2":{"1360":11,"2355":2,"2387":2}}],["f20",{"2":{"1283":1,"2355":2,"2387":2}}],["f2",{"2":{"313":1,"530":2,"633":1,"635":2,"1793":1,"2355":2,"2371":1,"2387":2,"2401":1,"2408":1}}],["fm",{"2":{"279":1,"314":1,"315":1,"317":4,"370":1,"520":1,"521":1,"522":1,"557":1,"624":2,"1235":1,"1236":1,"1359":1,"2280":1,"2303":3,"2313":1,"2553":2,"2672":1}}],["fme",{"2":{"211":1}}],["fg",{"2":{"266":1,"433":5,"435":1,"2577":9}}],["fs5",{"2":{"1793":1,"2371":1}}],["fs4",{"2":{"1793":1,"2371":1}}],["fs3",{"2":{"1793":1,"2371":1}}],["fs2",{"2":{"1793":1,"2371":1}}],["fs1",{"2":{"1793":1,"2371":1}}],["fs",{"2":{"249":1,"1793":1,"2371":1}}],["fc980c",{"2":{"236":1}}],["fc660c",{"2":{"236":1}}],["fx",{"2":{"211":1}}],["fjlabs",{"2":{"211":6,"222":1}}],["ffff",{"2":{"2093":1}}],["ffffffff",{"2":{"2091":1}}],["ff",{"2":{"197":6,"347":3,"349":3,"359":1,"360":1,"2095":1,"2347":1}}],["ffkeebs",{"2":{"134":1}}],["f3²",{"2":{"635":1}}],["f3",{"2":{"191":1,"313":1,"530":2,"633":1,"635":3,"1793":1,"2353":1,"2355":2,"2371":1,"2387":2,"2401":1,"2408":1}}],["f303",{"2":{"49":1,"50":1,"199":1,"2245":1}}],["f5²",{"2":{"635":1}}],["f5f9b992",{"2":{"315":1}}],["f5",{"2":{"111":1,"313":1,"502":2,"511":1,"530":2,"633":2,"1459":1,"1793":1,"2131":1,"2355":2,"2371":1,"2387":2,"2408":1,"2530":1,"2558":1}}],["f4²",{"2":{"635":1}}],["f4xx",{"2":{"176":1}}],["f4x1",{"2":{"160":1,"176":1,"211":1,"2514":1}}],["f466",{"2":{"176":1}}],["f401",{"2":{"253":1,"2245":1,"2514":1}}],["f401xe",{"2":{"131":1,"134":1}}],["f405",{"2":{"130":1,"134":1}}],["f4",{"2":{"111":1,"131":1,"134":1,"191":1,"313":1,"502":2,"511":1,"530":2,"633":2,"635":2,"1793":1,"2131":1,"2355":2,"2371":1,"2387":2,"2408":1,"2530":1}}],["f411",{"2":{"93":1,"2245":2,"2514":2,"2673":1,"2712":1}}],["f072",{"2":{"1226":2}}],["f0",{"2":{"111":1,"502":2,"511":1,"633":2,"635":3,"2131":1,"2353":1,"2558":1}}],["f7²",{"2":{"635":1}}],["f7¹",{"2":{"635":1}}],["f7",{"2":{"111":1,"313":1,"502":2,"511":1,"530":2,"633":2,"1290":1,"2131":1,"2355":2,"2387":2,"2408":1,"2530":1,"2558":1}}],["f6²",{"2":{"635":1}}],["f6¹",{"2":{"635":1}}],["f6",{"2":{"111":1,"313":1,"502":2,"511":1,"530":2,"633":2,"635":1,"638":1,"2131":1,"2355":2,"2387":2,"2408":1,"2530":1,"2558":1}}],["f19",{"2":{"2355":2,"2387":2}}],["f17",{"2":{"2355":2,"2387":2}}],["f16",{"2":{"2355":2,"2387":2}}],["f15",{"2":{"2355":3,"2387":2}}],["f14",{"2":{"2355":2,"2387":2}}],["f14629ed1cd7c7ec9089604d64f29a99981558e8",{"2":{"529":2}}],["f1xx",{"2":{"2353":2}}],["f18",{"2":{"1677":1,"2355":2,"2387":2,"2738":1}}],["f12",{"2":{"313":1,"530":2,"2355":2,"2387":2,"2402":1,"2408":1}}],["f11",{"2":{"313":1,"530":2,"2355":2,"2387":2,"2408":1}}],["f10²",{"2":{"635":1}}],["f10¹",{"2":{"635":1}}],["f10",{"2":{"313":1,"530":2,"635":2,"2355":2,"2387":2,"2408":1}}],["f103",{"2":{"661":1,"2247":1}}],["f103c6",{"2":{"211":1}}],["f103xb",{"2":{"114":1}}],["f13",{"2":{"211":1,"1357":1,"2355":3,"2387":2}}],["f1",{"2":{"111":1,"120":1,"191":1,"313":1,"502":2,"511":1,"530":2,"633":2,"1354":1,"1509":1,"1793":1,"2125":1,"2131":1,"2231":1,"2238":1,"2353":1,"2355":2,"2371":1,"2387":2,"2401":1,"2402":1,"2408":1,"2558":1}}],["f",{"0":{"2387":1},"2":{"111":2,"134":1,"149":1,"191":1,"196":2,"211":1,"266":2,"313":1,"335":1,"374":6,"377":1,"378":1,"384":1,"405":5,"502":1,"514":3,"530":2,"702":1,"1355":1,"1451":3,"1503":1,"1563":1,"1577":1,"1680":2,"1793":19,"1923":2,"1932":1,"2091":1,"2093":1,"2095":1,"2097":2,"2148":1,"2153":1,"2353":2,"2355":3,"2371":19,"2386":3,"2407":3,"2575":8,"2703":3}}],["fantastic",{"2":{"2726":1}}],["fan",{"2":{"2266":1}}],["fancy",{"2":{"479":1,"1377":2}}],["faith",{"2":{"2566":1}}],["fairly",{"2":{"1364":1,"1450":1,"1452":1,"2268":1,"2328":1}}],["fails",{"2":{"1686":1,"2262":1}}],["failed",{"2":{"315":1,"1136":1,"1138":1,"2128":1,"2130":1,"2293":1,"2477":3}}],["failing",{"2":{"190":1,"191":1,"266":1,"556":1,"1287":1,"2293":1}}],["failures",{"2":{"134":1,"149":3,"191":1,"198":1,"199":3,"236":1,"556":1,"660":1,"2130":1}}],["failure",{"2":{"92":1,"149":1,"222":1,"236":3,"263":1,"277":1,"598":2}}],["fail",{"2":{"88":2,"104":2,"126":1,"127":2,"170":1,"206":1,"331":1,"601":1,"626":1,"1445":1,"1686":2,"2436":1,"2437":1}}],["faqs",{"2":{"551":1}}],["faq",{"0":{"1244":1,"1266":1,"1285":1,"2253":1},"1":{"1245":1,"1246":1,"1247":1,"1248":1,"1249":1,"1250":1,"1251":1,"1252":1,"1253":1,"1254":1,"1255":1,"1267":1,"1268":1,"1269":1,"1270":1,"1271":1,"1272":1,"1273":1,"1274":1,"1275":1,"1276":1,"1277":1,"1278":1,"1279":1,"1280":1,"1281":1,"1282":1,"1283":1,"1284":1,"1286":1,"1287":1,"1288":1,"1289":1,"1290":1,"1291":1,"1292":1,"1293":1,"1294":1,"1295":1,"1296":1,"1297":1,"1298":1,"2254":1},"2":{"515":1,"1259":1,"2335":1,"2409":1,"2455":1,"2742":1}}],["famous",{"2":{"428":1,"1949":1}}],["familiarity",{"2":{"2428":1,"2742":1}}],["familiarize",{"2":{"483":1}}],["familiar",{"2":{"470":1,"552":1,"555":1,"1238":1,"2255":1,"2256":2,"2418":1,"2430":1,"2473":1,"2476":1,"2686":1,"2725":1}}],["families",{"0":{"2548":1,"2549":1},"2":{"49":1,"130":1,"688":1,"692":1,"2546":1,"2548":1}}],["family",{"0":{"2550":1,"2551":1,"2552":1},"2":{"191":1,"277":1,"689":1,"2114":1,"2548":1,"2550":4,"2551":1,"2552":1,"2566":1,"2569":1}}],["facing",{"2":{"502":1,"1915":4,"2273":2,"2311":1,"2615":1}}],["face",{"2":{"277":2,"597":1,"2268":1,"2273":2}}],["factor",{"2":{"1406":3,"2615":1,"2673":1}}],["factory",{"2":{"176":3,"1294":1,"2240":1,"2343":1}}],["fact",{"2":{"45":1,"1242":1,"1264":1,"1278":1,"1332":1,"2031":1}}],["fading",{"2":{"249":1,"1728":1,"1949":2}}],["fader",{"2":{"1791":1}}],["fade",{"2":{"93":1,"1815":3,"1817":4,"2139":3}}],["fades",{"2":{"49":1,"1728":11,"1949":16}}],["fault",{"2":{"191":1}}],["fauxclicky",{"2":{"75":1,"188":1,"191":1,"2566":1}}],["fauxpark",{"2":{"38":1,"182":1}}],["fave",{"2":{"266":1}}],["fave84",{"2":{"199":1}}],["fave84h",{"2":{"191":1}}],["favorite",{"0":{"2423":1},"2":{"2437":1}}],["favorites",{"2":{"2355":2,"2393":2}}],["favor",{"0":{"8":1},"2":{"50":1,"94":1,"446":1}}],["favour",{"2":{"3":1,"15":1,"103":1,"169":1,"184":1,"199":1}}],["fake",{"2":{"191":1,"681":1}}],["fastest",{"2":{"641":1,"1805":1,"1822":1}}],["faster",{"2":{"341":1,"479":1,"1836":1,"1929":1,"2062":2,"2106":1,"2107":1,"2226":1,"2411":1}}],["fast",{"2":{"175":1,"457":1,"582":1,"1125":1,"1128":1,"1326":1,"1521":1,"1573":1,"1684":2,"1803":1,"1804":1,"1859":1,"1932":1,"2169":2,"2355":1,"2393":2,"2398":1,"2437":1,"2539":1,"2566":1,"2584":1,"2735":1,"2736":1}}],["fashion",{"2":{"169":1,"2757":1}}],["farther",{"2":{"2423":1}}],["farsi",{"2":{"277":1,"2703":2}}],["far",{"2":{"99":1,"188":1,"263":3,"273":1,"341":1,"569":1,"1684":1,"1844":1,"2102":1,"2144":1,"2305":1,"2529":1}}],["falls",{"2":{"1554":1}}],["fall",{"2":{"430":1,"471":1,"1396":1,"1838":1,"2403":1,"2454":1}}],["fallback",{"0":{"209":1},"2":{"211":2,"1416":1}}],["falling",{"2":{"50":1,"1181":2,"1907":1,"2477":1}}],["falsely",{"2":{"1441":2,"1677":2,"2738":2}}],["false",{"0":{"476":1,"1441":1},"2":{"31":2,"90":2,"105":4,"111":5,"125":3,"185":2,"194":4,"195":2,"199":1,"203":1,"249":1,"453":2,"476":2,"534":6,"565":1,"566":1,"571":1,"572":1,"588":2,"592":2,"593":1,"594":2,"610":3,"641":1,"726":1,"1182":1,"1302":1,"1303":4,"1332":3,"1344":3,"1360":1,"1375":2,"1404":2,"1416":1,"1423":1,"1430":1,"1441":1,"1446":10,"1448":4,"1457":1,"1506":2,"1518":5,"1519":1,"1523":2,"1526":1,"1530":1,"1549":2,"1555":1,"1560":4,"1594":2,"1634":6,"1668":1,"1670":2,"1686":1,"1696":1,"1716":1,"1733":2,"1813":9,"1814":2,"1816":3,"1822":3,"1826":1,"1830":2,"1835":1,"1839":4,"1842":1,"1854":1,"1858":1,"1859":2,"1861":2,"1862":1,"1871":1,"1873":4,"1874":1,"1876":2,"1877":1,"1878":1,"1937":2,"1939":1,"1940":1,"1941":1,"1943":3,"1957":2,"1958":3,"1959":2,"2078":1,"2137":8,"2138":1,"2143":1,"2152":1,"2183":1,"2228":2,"2413":2,"2414":3,"2415":1,"2437":1,"2513":1,"2524":2,"2574":3,"2577":2,"2604":2,"2674":11,"2676":2,"2677":3,"2679":1,"2680":4,"2682":1,"2687":2,"2688":4,"2689":3,"2690":1,"2692":2,"2694":6,"2695":4,"2696":1,"2697":12,"2698":1,"2699":4,"2700":1,"2710":5,"2735":1,"2736":1,"2738":1,"2749":1}}],["flsh",{"2":{"2165":1,"2167":8}}],["fl",{"2":{"1269":1,"2405":2,"2407":3,"2408":2}}],["flick",{"2":{"1851":1}}],["flicker",{"2":{"1463":1}}],["flickering",{"2":{"1228":1}}],["flight",{"2":{"598":1,"2486":1}}],["flipping",{"2":{"1849":1}}],["flipped",{"2":{"160":1,"1557":1,"1816":1,"2044":1,"2124":1,"2140":1,"2240":1}}],["flips",{"2":{"13":1,"31":1,"34":1,"1816":1,"2140":1}}],["flip",{"0":{"13":1},"2":{"13":1,"211":1,"1557":1,"2279":1,"2728":1}}],["flypage",{"2":{"1242":1}}],["flypage=shop",{"2":{"1242":1}}],["fly",{"0":{"2149":1},"2":{"479":1,"515":1,"1271":1,"1393":1,"1401":1,"1512":1,"1553":1,"1918":1,"2149":1,"2628":1,"2728":3}}],["flygone60",{"2":{"241":2}}],["float",{"0":{"1545":2},"1":{"1546":2},"2":{"215":2,"1448":1,"1537":2,"1546":2,"1686":3,"1718":2,"1859":4}}],["floating",{"2":{"215":2,"1225":1}}],["flowing",{"2":{"1949":1}}],["flows",{"2":{"1265":1}}],["flower",{"2":{"236":1,"1949":3,"2711":1}}],["flow",{"2":{"149":1,"322":1,"466":1,"560":1,"1195":1,"1949":4,"2150":1,"2272":1,"2273":1,"2711":1}}],["flux",{"2":{"2272":2}}],["flushed",{"2":{"1776":1,"1778":1,"1780":1,"1783":1,"2021":1,"2023":1,"2025":1,"2028":1}}],["flushes",{"2":{"114":1}}],["flush",{"0":{"230":1,"651":1,"1538":1,"1641":1,"1897":1},"2":{"211":1,"236":2,"647":1,"651":1,"679":1,"753":1,"754":1,"780":1,"782":1,"812":1,"814":1,"844":1,"846":1,"879":1,"881":1,"913":1,"915":1,"947":1,"949":1,"981":1,"983":1,"1015":1,"1017":1,"1049":1,"1051":1,"1083":1,"1085":1,"1117":1,"1119":1,"1170":1,"1172":1,"1534":1,"1539":1,"1540":1,"1541":1,"1542":1,"1543":1,"1544":1,"1545":1,"1642":1,"1644":1,"1730":1,"1823":1,"1890":1,"1892":1,"1954":1,"2048":1,"2574":1,"2576":2,"2577":10,"2688":1,"2695":1}}],["flushing",{"2":{"191":1,"593":1,"594":1,"2574":1}}],["flurry",{"2":{"163":1}}],["flavours",{"2":{"2496":1}}],["flat",{"2":{"1451":1}}],["flatbread60",{"2":{"86":2}}],["flake8",{"2":{"442":1,"447":2}}],["flask",{"2":{"306":1}}],["flasher",{"2":{"2238":1,"2328":1,"2329":1,"2333":1,"2347":2,"2639":1}}],["flashers",{"2":{"371":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":1,"2247":1,"2249":1}}],["flashes",{"2":{"2126":1,"2232":2,"2234":3,"2239":1,"2241":2,"2246":1,"2248":1}}],["flashed",{"0":{"1243":1},"2":{"510":1,"519":1,"623":1,"1491":1,"2042":1,"2126":1,"2150":1,"2229":1,"2234":1,"2249":1,"2277":1,"2279":1,"2327":1,"2335":1,"2347":1,"2718":1}}],["flashable",{"2":{"316":1}}],["flashing",{"0":{"543":1,"1677":1,"2229":1,"2278":1,"2327":1,"2347":1,"2350":1,"2353":1,"2449":1,"2451":1},"1":{"2230":1,"2231":1,"2232":1,"2233":1,"2234":1,"2235":1,"2236":1,"2237":1,"2238":1,"2239":1,"2240":1,"2241":1,"2242":1,"2243":1,"2244":1,"2245":1,"2246":1,"2247":1,"2248":1,"2249":1,"2328":1,"2329":1,"2330":1,"2331":1,"2332":1,"2333":1,"2334":1,"2335":1,"2336":1,"2337":1,"2338":1,"2339":1,"2340":1,"2341":1,"2342":1,"2343":1,"2344":1,"2345":1,"2346":1,"2347":1,"2348":2,"2349":1,"2350":1,"2351":2,"2352":2,"2353":2,"2450":1,"2451":1,"2452":2,"2453":2,"2454":1,"2455":1},"2":{"49":1,"134":2,"191":1,"222":2,"240":3,"371":2,"543":1,"624":1,"629":1,"1239":1,"1241":1,"1243":1,"1259":1,"1385":1,"1491":1,"1573":1,"2126":1,"2229":2,"2230":1,"2231":1,"2233":1,"2234":1,"2235":2,"2236":1,"2237":1,"2238":3,"2240":1,"2242":1,"2243":1,"2244":2,"2245":2,"2247":2,"2249":2,"2252":1,"2262":1,"2279":1,"2328":1,"2329":1,"2331":1,"2333":1,"2339":1,"2341":2,"2342":1,"2349":1,"2356":1,"2418":1,"2425":1,"2426":1,"2450":2,"2451":1,"2454":1,"2469":1,"2491":1,"2517":1,"2522":1,"2572":1,"2655":1,"2664":1,"2672":1}}],["flash",{"0":{"164":1,"371":1,"689":1,"690":1,"693":1,"694":1,"1259":1,"1270":1,"2254":1,"2426":1,"2453":1,"2454":1},"1":{"694":1},"2":{"49":3,"107":1,"113":1,"114":5,"124":1,"134":1,"149":1,"160":1,"164":3,"174":5,"176":4,"199":2,"222":1,"236":1,"240":1,"277":1,"352":1,"371":6,"376":1,"486":1,"488":1,"509":2,"522":1,"592":1,"624":1,"625":1,"626":1,"659":1,"660":1,"681":3,"687":1,"688":6,"689":12,"690":9,"691":6,"692":5,"693":3,"694":15,"1238":2,"1243":1,"1270":2,"1287":2,"1312":2,"1385":8,"1528":1,"1556":1,"1842":1,"2037":1,"2042":1,"2126":7,"2127":2,"2167":2,"2229":3,"2230":3,"2233":3,"2234":1,"2235":2,"2236":2,"2237":1,"2238":1,"2240":1,"2241":4,"2242":1,"2243":1,"2244":2,"2245":2,"2247":2,"2249":2,"2252":3,"2255":1,"2262":3,"2263":1,"2278":1,"2327":4,"2335":1,"2347":8,"2348":1,"2349":1,"2353":18,"2356":1,"2439":1,"2448":1,"2449":1,"2450":1,"2451":3,"2453":4,"2454":8,"2513":2,"2518":1,"2528":1,"2530":1,"2544":10,"2550":1,"2566":3,"2572":1,"2574":1,"2577":2,"2578":1,"2683":4,"2693":1,"2704":1,"2718":1,"2723":1,"2728":1}}],["flagged",{"0":{"352":1},"1":{"353":1,"354":1,"355":1,"356":1},"2":{"199":1,"201":1,"282":3,"341":1,"352":1,"356":1,"1958":1,"2128":1}}],["flag",{"2":{"176":1,"191":1,"249":1,"370":1,"403":1,"405":1,"430":1,"505":3,"628":1,"689":1,"1313":1,"1518":1,"1621":1,"1622":1,"1624":1,"1670":1,"1725":2,"1726":5,"1730":1,"1865":1,"1946":2,"1947":6,"1954":1,"1958":1,"1959":1,"2044":1,"2071":1,"2126":1,"2566":1,"2587":1,"2592":1}}],["flags",{"0":{"1726":1,"1947":1},"2":{"176":1,"191":1,"209":1,"277":1,"448":1,"1319":2,"1726":8,"1730":2,"1821":1,"1822":1,"1947":8,"1954":2,"1958":1,"1959":2,"2143":1,"2416":1,"2530":1,"2587":3,"2596":5,"2688":3,"2695":3}}],["flesh",{"2":{"2723":1}}],["flexible",{"0":{"1666":1},"2":{"479":1,"1129":1,"1134":1,"2534":2,"2543":1}}],["flexibility",{"2":{"6":1,"153":1,"496":1,"630":1,"1716":1,"2113":1,"2181":1,"2728":1}}],["flehrad",{"0":{"43":2},"2":{"43":6,"266":1}}],["frr",{"2":{"2153":1}}],["friction",{"2":{"1807":2,"1851":1}}],["friendly",{"0":{"1666":1},"2":{"377":1,"430":1,"2145":1,"2314":1}}],["friend",{"0":{"1492":1},"2":{"336":1,"1491":3,"1492":4}}],["friends",{"2":{"226":1,"236":1,"2317":1}}],["frustrating",{"2":{"2169":1}}],["frustration",{"2":{"173":1}}],["fruit",{"2":{"1287":1}}],["frood",{"2":{"2545":1}}],["front",{"2":{"1384":1,"2302":1,"2503":1}}],["frontend",{"0":{"520":1},"2":{"520":1,"681":1}}],["fronzlebop",{"2":{"556":2}}],["frob",{"2":{"482":1}}],["from=",{"2":{"176":1}}],["from",{"0":{"5":1,"24":1,"166":1,"441":1,"627":1,"1292":1,"1773":1,"1922":1,"2018":1,"2454":1},"2":{"3":1,"6":2,"12":1,"15":1,"31":2,"34":1,"49":3,"50":1,"62":1,"63":1,"69":1,"70":1,"73":2,"74":1,"75":2,"76":1,"88":3,"90":1,"92":1,"94":1,"104":3,"113":2,"114":8,"116":1,"119":1,"127":3,"128":1,"132":2,"133":1,"134":10,"149":5,"163":1,"170":2,"172":1,"173":2,"174":1,"176":8,"191":9,"199":13,"201":1,"206":1,"211":8,"222":7,"224":1,"228":3,"230":1,"236":4,"240":1,"249":9,"263":1,"266":19,"272":1,"273":1,"275":1,"276":1,"277":5,"304":1,"305":1,"308":1,"323":1,"324":1,"327":1,"328":1,"329":1,"331":1,"345":1,"346":1,"347":1,"351":1,"370":2,"375":2,"379":1,"380":1,"388":2,"394":2,"401":1,"405":1,"411":1,"414":1,"430":3,"437":2,"441":2,"452":1,"453":1,"454":1,"457":3,"458":4,"466":1,"496":1,"502":3,"504":1,"511":3,"519":1,"522":1,"526":1,"529":2,"533":1,"541":1,"556":1,"558":1,"560":2,"569":1,"588":1,"597":1,"606":1,"610":2,"613":1,"616":1,"617":1,"626":1,"628":2,"638":2,"639":4,"644":1,"653":1,"660":1,"662":2,"667":1,"672":1,"688":1,"689":2,"709":1,"711":1,"712":1,"715":1,"718":1,"720":1,"721":2,"723":1,"724":2,"726":1,"727":1,"763":1,"790":1,"795":1,"825":1,"855":1,"860":1,"889":1,"894":1,"923":1,"928":1,"957":1,"962":1,"991":1,"996":1,"1025":1,"1030":1,"1059":1,"1064":1,"1093":1,"1098":1,"1151":1,"1186":1,"1187":1,"1189":1,"1191":1,"1205":1,"1207":1,"1221":1,"1222":1,"1223":1,"1227":1,"1235":1,"1236":1,"1241":1,"1247":1,"1248":1,"1250":1,"1265":3,"1270":2,"1279":1,"1281":1,"1293":1,"1294":1,"1295":1,"1300":1,"1311":1,"1332":1,"1333":1,"1335":1,"1338":3,"1340":1,"1341":1,"1377":1,"1379":1,"1394":1,"1397":1,"1400":1,"1406":1,"1410":1,"1416":1,"1438":1,"1441":1,"1446":2,"1454":1,"1459":1,"1471":1,"1480":1,"1482":1,"1500":1,"1511":1,"1516":1,"1518":1,"1523":1,"1524":4,"1525":7,"1546":2,"1553":1,"1554":1,"1577":1,"1578":1,"1604":1,"1609":1,"1612":1,"1613":1,"1614":1,"1619":1,"1627":1,"1629":1,"1630":1,"1633":2,"1640":1,"1643":1,"1645":1,"1655":1,"1673":2,"1674":1,"1675":2,"1676":1,"1684":1,"1719":2,"1720":1,"1725":1,"1728":4,"1729":1,"1743":1,"1744":1,"1745":1,"1762":1,"1768":1,"1770":1,"1772":1,"1773":1,"1791":2,"1804":2,"1805":1,"1807":1,"1815":2,"1816":1,"1817":2,"1821":1,"1831":1,"1832":1,"1836":1,"1842":1,"1847":1,"1849":4,"1851":2,"1853":1,"1855":5,"1864":1,"1868":1,"1877":1,"1887":1,"1889":1,"1891":1,"1893":1,"1895":1,"1902":1,"1910":1,"1923":1,"1925":1,"1929":1,"1933":1,"1943":1,"1946":1,"1949":4,"1950":1,"1952":1,"1970":1,"1971":1,"1972":1,"1989":1,"1995":1,"2001":1,"2007":1,"2009":1,"2011":1,"2013":3,"2015":3,"2018":1,"2035":1,"2037":1,"2038":1,"2044":2,"2052":2,"2059":1,"2061":1,"2067":1,"2092":1,"2094":1,"2096":1,"2098":1,"2099":1,"2105":1,"2112":1,"2113":1,"2117":1,"2118":1,"2128":2,"2130":2,"2131":1,"2133":2,"2139":2,"2140":1,"2141":1,"2146":1,"2150":1,"2155":1,"2162":1,"2167":2,"2171":1,"2172":1,"2176":1,"2183":2,"2219":1,"2231":1,"2238":2,"2241":1,"2244":1,"2245":1,"2247":1,"2249":1,"2252":1,"2255":1,"2261":1,"2262":2,"2263":1,"2268":5,"2272":1,"2273":3,"2274":1,"2275":1,"2276":1,"2277":2,"2279":1,"2292":1,"2295":1,"2303":1,"2309":1,"2311":5,"2318":1,"2321":1,"2335":1,"2344":1,"2347":1,"2348":2,"2351":1,"2353":2,"2403":1,"2406":1,"2408":2,"2421":1,"2422":1,"2423":1,"2427":1,"2436":1,"2437":1,"2439":1,"2451":2,"2453":2,"2460":1,"2466":2,"2468":1,"2475":1,"2477":3,"2478":1,"2479":2,"2480":1,"2483":1,"2486":1,"2496":1,"2497":1,"2502":2,"2506":1,"2508":1,"2510":1,"2511":1,"2513":1,"2517":1,"2522":1,"2529":1,"2533":1,"2540":1,"2541":1,"2544":1,"2545":1,"2558":1,"2559":1,"2564":2,"2566":5,"2568":2,"2573":2,"2576":11,"2577":5,"2605":2,"2610":1,"2614":4,"2615":4,"2617":1,"2639":1,"2652":1,"2665":1,"2675":1,"2677":2,"2686":1,"2687":1,"2688":3,"2694":2,"2695":3,"2697":2,"2699":1,"2702":1,"2705":2,"2719":2,"2721":1,"2724":1,"2727":3,"2728":2,"2742":1,"2743":1,"2746":1,"2747":2,"2748":3,"2753":2,"2756":1}}],["fr",{"2":{"211":1,"1355":2,"2153":3,"2703":4}}],["frl",{"2":{"211":2}}],["français",{"2":{"2624":1}}],["fram",{"2":{"684":1,"685":1}}],["frames",{"2":{"1807":1,"2575":1,"2592":2,"2595":1}}],["frame",{"0":{"2595":1,"2596":1,"2597":1,"2598":1,"2599":1},"2":{"1215":1,"1743":1,"1745":1,"1776":1,"1778":1,"1780":1,"1783":1,"1807":2,"1822":1,"1970":1,"1972":1,"2021":1,"2023":1,"2025":1,"2028":1,"2577":3,"2585":1,"2587":3,"2590":1,"2591":1,"2592":6,"2594":2,"2595":8,"2596":28,"2597":2,"2598":1,"2599":2}}],["frameworking",{"2":{"160":1}}],["framework",{"2":{"134":1,"303":1,"430":1,"2168":1,"2263":1,"2667":1,"2751":1}}],["framebuffer",{"2":{"93":1,"114":1,"236":1,"1949":1,"2576":3}}],["fragments",{"2":{"262":1}}],["fractal",{"2":{"134":2,"176":1,"222":1,"277":1,"1949":4,"2711":1}}],["fraanrosi",{"2":{"114":1}}],["fr4boards",{"2":{"67":1,"211":1}}],["fr4",{"2":{"67":1,"72":1}}],["freq",{"2":{"1406":5,"1577":1}}],["frequencies",{"2":{"1406":1}}],["frequency",{"0":{"788":1,"853":1,"887":1,"921":1,"955":1,"989":1,"1091":1,"2584":1},"2":{"11":1,"134":1,"160":1,"214":1,"222":2,"236":2,"511":1,"685":1,"694":1,"702":1,"786":3,"788":12,"850":3,"853":9,"885":3,"887":9,"919":3,"921":9,"953":3,"955":8,"987":3,"989":8,"1089":3,"1091":11,"1253":7,"1406":7,"1408":3,"1577":3,"1817":1,"1851":1,"2131":1,"2357":3,"2697":1,"2699":1}}],["frequent",{"2":{"1385":1}}],["frequently",{"0":{"1237":1,"1256":1},"1":{"1238":1,"1239":1,"1240":1,"1241":1,"1242":1,"1243":1,"1257":1,"1258":1,"1259":1,"1260":1,"1261":1,"1262":1,"1263":1,"1264":1,"1265":1},"2":{"308":1,"1730":1,"1954":1,"2112":1,"2169":2,"2293":1,"2564":1,"2688":1,"2695":1,"2718":1,"2728":1}}],["fresh",{"2":{"305":1,"616":1}}],["french",{"2":{"249":1,"1355":3,"2624":1,"2703":16}}],["freyr",{"2":{"143":2}}],["freeman",{"2":{"2750":1}}],["freebsd",{"2":{"2467":1}}],["freely",{"2":{"1265":1}}],["freezing",{"2":{"660":1}}],["freezes",{"2":{"659":1,"660":1}}],["freeze",{"2":{"659":1,"660":1}}],["freeform",{"2":{"606":1}}],["frees",{"2":{"516":1}}],["free",{"2":{"110":1,"123":1,"124":1,"322":1,"401":1,"483":1,"1380":2,"1398":1,"1821":1,"1953":1,"2058":1,"2183":1,"2425":1,"2469":1,"2568":1,"2569":1,"2570":2,"2672":2,"2750":1}}],["freed",{"2":{"45":1,"166":1,"188":1,"191":1}}],["female",{"2":{"2275":1}}],["fe1",{"2":{"1907":1}}],["feather",{"2":{"487":1,"629":1,"1492":2,"2344":1}}],["featuring",{"2":{"236":1}}],["featured",{"2":{"2503":1,"2565":1,"2705":1}}],["features",{"0":{"97":1,"117":1,"136":1,"151":1,"162":1,"178":1,"224":1,"238":1,"251":1,"268":1,"479":1,"503":1,"504":1,"621":1,"1384":1,"1910":1,"2528":1,"2583":1,"2753":1},"1":{"98":1,"99":1,"100":1,"118":1,"119":1,"120":1,"137":1,"138":1,"152":1,"153":1,"154":1,"163":1,"164":1,"179":1},"2":{"3":1,"7":1,"15":1,"25":1,"49":1,"94":1,"111":13,"133":4,"134":5,"173":1,"175":1,"176":2,"191":1,"213":1,"236":2,"249":2,"266":12,"268":1,"336":1,"352":1,"374":3,"430":1,"479":2,"486":2,"503":1,"512":1,"515":1,"516":3,"533":1,"552":1,"556":1,"559":1,"574":1,"578":1,"581":1,"602":1,"606":1,"621":1,"1265":2,"1271":1,"1304":1,"1316":1,"1317":1,"1331":1,"1334":1,"1377":3,"1378":1,"1384":1,"1398":1,"1454":1,"1497":1,"1518":1,"1791":1,"1842":2,"1948":1,"2034":1,"2129":1,"2149":1,"2160":1,"2230":1,"2231":1,"2238":1,"2260":2,"2280":1,"2300":6,"2304":2,"2305":1,"2315":2,"2402":1,"2424":2,"2510":1,"2534":1,"2553":1,"2560":1,"2566":4,"2567":1,"2571":1,"2583":1,"2601":1,"2637":1,"2645":1,"2656":1,"2674":2,"2705":2,"2706":1,"2718":1,"2719":1,"2720":5,"2721":1,"2724":2,"2725":2,"2727":1,"2752":1,"2754":1}}],["feature",{"0":{"28":1,"515":1,"2717":1},"1":{"2718":1,"2719":1,"2720":1,"2721":1},"2":{"3":1,"15":1,"28":1,"32":1,"46":1,"49":3,"63":1,"70":13,"74":1,"75":1,"87":1,"93":1,"99":3,"103":1,"114":3,"118":1,"126":1,"133":2,"134":5,"149":1,"152":1,"160":3,"172":1,"176":4,"179":2,"186":1,"189":1,"190":2,"191":7,"195":1,"196":1,"199":2,"211":1,"222":2,"224":1,"228":2,"236":1,"248":1,"249":2,"266":1,"352":1,"354":1,"404":1,"453":1,"455":1,"482":1,"495":1,"503":1,"504":1,"515":2,"554":3,"556":1,"559":1,"560":7,"563":1,"609":1,"613":1,"614":1,"616":2,"621":8,"643":1,"654":1,"665":1,"700":1,"730":1,"756":1,"785":1,"817":1,"820":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1121":1,"1124":1,"1144":1,"1175":1,"1196":1,"1213":1,"1245":1,"1276":3,"1277":1,"1278":1,"1282":1,"1316":1,"1317":1,"1318":1,"1319":1,"1321":1,"1328":1,"1331":1,"1376":1,"1377":1,"1378":1,"1384":2,"1386":1,"1393":1,"1397":2,"1398":2,"1402":1,"1405":1,"1406":1,"1408":2,"1416":1,"1434":1,"1437":1,"1438":1,"1443":3,"1454":1,"1459":1,"1467":1,"1495":1,"1498":2,"1501":1,"1508":2,"1512":4,"1526":4,"1528":1,"1531":2,"1556":2,"1563":1,"1630":1,"1657":1,"1666":1,"1675":1,"1723":1,"1731":1,"1798":1,"1803":1,"1808":1,"1812":1,"1820":1,"1821":2,"1824":1,"1832":1,"1851":2,"1864":1,"1866":3,"1867":1,"1868":1,"1872":1,"1876":3,"1878":2,"1912":2,"1918":2,"1944":1,"1948":2,"1954":1,"1955":1,"2034":2,"2035":1,"2041":1,"2062":1,"2063":1,"2065":1,"2072":1,"2074":1,"2102":1,"2111":1,"2121":1,"2129":8,"2136":1,"2137":1,"2142":1,"2160":2,"2161":1,"2169":1,"2177":1,"2180":1,"2225":1,"2226":1,"2258":1,"2263":2,"2280":1,"2287":1,"2305":2,"2347":1,"2357":2,"2358":1,"2359":3,"2396":1,"2402":1,"2440":1,"2441":1,"2539":1,"2543":1,"2555":1,"2564":1,"2566":4,"2601":1,"2628":1,"2645":1,"2649":1,"2652":1,"2663":1,"2676":1,"2677":1,"2678":1,"2679":2,"2680":2,"2681":1,"2682":2,"2684":1,"2685":1,"2687":1,"2688":1,"2690":2,"2692":2,"2694":1,"2695":1,"2696":2,"2697":2,"2698":2,"2706":1,"2707":2,"2709":1,"2718":1,"2719":3,"2727":1,"2728":3,"2735":1,"2736":1,"2737":1,"2738":1,"2753":2,"2754":1,"2757":2}}],["feat",{"2":{"222":2,"236":2}}],["fedora",{"2":{"191":1,"2431":1,"2464":1}}],["feker",{"2":{"176":1}}],["felix",{"2":{"143":2}}],["few",{"0":{"1656":1},"2":{"131":1,"189":1,"213":1,"222":1,"224":1,"238":1,"304":1,"306":1,"353":1,"481":1,"509":1,"556":1,"621":1,"641":1,"659":1,"688":1,"689":1,"1250":1,"1265":1,"1310":1,"1397":1,"1436":2,"1503":1,"1526":1,"1651":1,"1655":1,"1867":1,"2133":1,"2169":1,"2229":1,"2303":1,"2417":1,"2424":1,"2435":1,"2457":2,"2472":1,"2664":1,"2703":1,"2728":2,"2757":1}}],["fewer",{"2":{"24":1,"45":1,"123":1,"2144":1,"2270":1,"2648":1}}],["feed",{"2":{"2615":1}}],["feeding",{"2":{"2274":1}}],["feedback",{"0":{"1569":1,"1570":1,"1575":1,"2180":1},"1":{"1570":1,"1571":1,"1572":1,"1573":1,"1574":1,"1575":1,"1576":2,"1577":2,"1578":1,"1579":1,"1580":1,"1581":1,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"2182":1},"2":{"114":1,"160":1,"188":1,"191":1,"199":1,"228":1,"556":1,"1398":1,"1556":1,"1570":4,"1572":6,"1575":1,"1579":1,"1580":1,"1582":4,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"2129":1,"2697":1}}],["feeling",{"2":{"1518":1}}],["feels",{"2":{"119":1}}],["feel",{"2":{"119":1,"1340":1,"1398":1,"1836":1,"1953":1,"1954":1,"2058":1,"2183":1,"2424":1,"2727":1,"2728":1}}],["ferris",{"2":{"114":1,"249":1}}],["fetch",{"2":{"51":1,"304":1,"349":1,"358":1,"359":1,"360":2,"1815":2,"2139":2,"2475":4,"2477":2,"2479":5}}],["february",{"0":{"66":1,"135":1,"192":1,"237":1},"1":{"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1}}],["feb",{"0":{"9":1,"1243":1},"1":{"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1},"2":{"338":1,"351":5}}],["fumes",{"2":{"2274":1}}],["furthest",{"2":{"2268":1}}],["further",{"0":{"1939":1},"2":{"131":1,"134":1,"138":1,"191":1,"199":1,"203":1,"222":1,"352":1,"374":1,"572":1,"641":1,"702":1,"1302":1,"1326":1,"1329":3,"1332":1,"1344":1,"1560":2,"1662":1,"1855":1,"1878":1,"1939":1,"2263":2,"2271":1,"2311":1,"2413":1,"2475":1,"2491":1,"2749":1,"2757":1}}],["fuzz",{"2":{"1578":1}}],["fulfill",{"2":{"1300":1}}],["fullfilling",{"2":{"2280":1}}],["fullremap",{"2":{"1142":2}}],["fullsize",{"2":{"191":1,"211":1,"236":1,"2268":2}}],["full",{"0":{"103":1,"104":1,"114":1,"126":1,"127":1,"134":1,"149":1,"160":1,"176":1,"191":1,"199":1,"211":1,"222":1,"236":1,"249":1,"266":1,"277":1,"566":1,"1128":1,"2756":1},"1":{"104":1,"127":1,"1129":1,"1130":1},"2":{"87":3,"88":2,"93":1,"103":2,"104":2,"107":2,"114":2,"124":1,"126":2,"127":2,"131":1,"134":1,"149":1,"172":1,"173":1,"176":1,"182":1,"189":1,"202":1,"211":1,"234":1,"236":1,"241":2,"245":1,"316":1,"334":1,"372":1,"417":1,"454":1,"566":1,"606":1,"627":1,"1121":1,"1122":1,"1125":1,"1128":2,"1129":1,"1130":3,"1134":1,"1136":1,"1300":1,"1398":1,"1447":1,"1457":1,"1498":1,"1509":1,"1521":1,"1605":1,"1658":1,"1672":1,"1696":1,"1728":4,"1807":1,"1948":2,"1949":15,"2047":1,"2072":1,"2153":1,"2262":1,"2280":1,"2324":1,"2421":1,"2424":1,"2469":1,"2503":1,"2513":1,"2543":2,"2566":2,"2575":3,"2723":1,"2756":1}}],["fully",{"0":{"263":1},"2":{"23":1,"266":1,"1134":1,"1217":1,"1303":1,"1828":1,"1950":1,"2169":1,"2279":1,"2543":1,"2705":1}}],["fuses",{"0":{"2348":1},"2":{"2342":1,"2347":1,"2348":2}}],["fuse",{"2":{"1294":1,"2341":1,"2348":5}}],["funky",{"2":{"1386":1}}],["fundamentals",{"2":{"2267":1}}],["fundamentally",{"2":{"1326":1}}],["fundamental",{"2":{"567":1}}],["func",{"2":{"94":1,"474":2}}],["function96",{"2":{"86":4}}],["functionally",{"2":{"1551":1}}],["functionallity",{"2":{"1332":1}}],["functionalities",{"2":{"1522":1}}],["functionality",{"0":{"46":1,"209":1,"1407":1},"2":{"3":1,"7":1,"15":1,"24":1,"30":1,"33":1,"87":1,"93":2,"98":1,"99":2,"114":2,"123":1,"124":1,"126":1,"128":1,"133":1,"134":1,"152":1,"154":1,"164":1,"191":2,"206":1,"209":2,"266":2,"282":3,"318":1,"341":1,"350":4,"505":1,"515":1,"516":2,"530":1,"567":1,"571":1,"586":1,"596":1,"597":2,"661":1,"702":1,"1332":1,"1335":1,"1359":2,"1364":2,"1383":2,"1384":1,"1398":1,"1423":1,"1447":1,"1498":1,"1511":1,"1527":1,"1528":1,"1548":1,"1556":1,"1559":1,"1666":1,"1678":1,"1680":1,"1824":1,"1832":1,"1851":1,"1860":1,"1948":1,"2034":1,"2035":1,"2111":2,"2130":1,"2162":1,"2171":2,"2172":1,"2277":1,"2304":1,"2305":2,"2306":1,"2348":1,"2354":1,"2396":1,"2441":1,"2519":1,"2525":1,"2526":1,"2566":3,"2567":2,"2601":1,"2603":1,"2610":1,"2615":1,"2705":1,"2708":1,"2718":1,"2719":2,"2743":1,"2744":1,"2749":1}}],["functional",{"2":{"28":1,"222":1,"276":1,"343":1,"344":1,"345":1,"350":2,"627":1,"692":1,"1376":1,"2466":1}}],["function",{"0":{"140":1,"465":1,"481":1,"573":1,"577":1,"579":1,"580":1,"583":1,"586":1,"591":1,"595":1,"1333":1,"1345":1,"1716":1,"1871":1,"2169":1,"2408":1,"2413":1,"2414":1},"1":{"1717":1,"1718":1},"2":{"22":2,"27":1,"34":1,"46":3,"49":2,"74":1,"90":3,"92":1,"93":2,"114":1,"125":1,"132":1,"133":1,"134":3,"149":4,"158":1,"160":1,"170":1,"176":5,"191":1,"194":1,"195":2,"199":2,"203":1,"222":2,"229":1,"230":2,"236":1,"249":2,"266":1,"273":1,"278":1,"336":1,"374":2,"430":3,"433":1,"457":1,"460":3,"462":2,"463":1,"464":2,"465":2,"473":1,"481":5,"505":2,"568":1,"571":1,"574":2,"580":2,"586":2,"587":2,"588":1,"592":4,"597":2,"598":1,"613":2,"614":2,"636":2,"638":1,"639":3,"646":1,"647":1,"661":4,"663":1,"673":1,"675":1,"698":1,"703":2,"707":4,"726":1,"738":1,"741":1,"745":1,"749":1,"751":1,"764":1,"768":1,"772":1,"776":1,"778":1,"796":1,"800":1,"804":1,"808":1,"810":1,"826":1,"832":1,"836":1,"840":1,"842":1,"861":1,"867":1,"871":1,"875":1,"877":1,"895":1,"901":1,"905":1,"909":1,"911":1,"929":1,"935":1,"939":1,"943":1,"945":1,"963":1,"969":1,"973":1,"977":1,"979":1,"997":1,"1003":1,"1007":1,"1011":1,"1013":1,"1031":1,"1037":1,"1041":1,"1045":1,"1047":1,"1065":1,"1071":1,"1075":1,"1079":1,"1081":1,"1099":1,"1105":1,"1109":1,"1113":1,"1115":1,"1123":1,"1126":1,"1127":1,"1129":1,"1130":1,"1140":1,"1141":1,"1142":3,"1152":1,"1158":1,"1162":1,"1166":1,"1168":1,"1177":3,"1179":1,"1198":4,"1200":1,"1205":1,"1210":1,"1226":2,"1230":1,"1255":2,"1331":1,"1332":4,"1333":1,"1334":1,"1335":2,"1336":1,"1341":3,"1351":1,"1359":2,"1360":2,"1364":1,"1367":1,"1368":1,"1383":3,"1384":1,"1396":1,"1416":1,"1423":1,"1431":1,"1434":2,"1445":4,"1446":1,"1448":1,"1449":1,"1451":1,"1469":1,"1497":2,"1505":1,"1511":1,"1518":1,"1519":1,"1523":2,"1525":3,"1526":1,"1527":3,"1530":1,"1555":1,"1560":4,"1596":1,"1598":1,"1599":1,"1600":1,"1609":1,"1613":1,"1622":1,"1624":1,"1626":1,"1628":1,"1654":1,"1670":3,"1714":1,"1716":1,"1717":1,"1718":1,"1719":1,"1720":1,"1733":2,"1743":1,"1745":1,"1815":2,"1822":2,"1826":2,"1853":3,"1854":2,"1855":2,"1857":1,"1859":3,"1864":1,"1873":1,"1874":1,"1876":1,"1879":5,"1880":2,"1902":1,"1917":1,"1921":1,"1922":1,"1933":1,"1940":1,"1942":1,"1954":1,"1957":2,"1960":1,"1970":1,"1972":1,"2048":1,"2050":1,"2051":1,"2052":1,"2053":1,"2054":1,"2055":1,"2056":1,"2057":1,"2060":1,"2067":1,"2071":1,"2081":1,"2085":1,"2087":1,"2107":1,"2108":1,"2126":1,"2130":2,"2139":2,"2143":4,"2152":3,"2153":1,"2158":1,"2161":5,"2162":3,"2169":3,"2170":1,"2171":3,"2172":2,"2175":1,"2182":1,"2196":1,"2197":1,"2198":1,"2227":1,"2228":1,"2306":2,"2358":2,"2402":1,"2405":2,"2406":1,"2407":1,"2408":1,"2411":1,"2413":1,"2414":5,"2415":3,"2441":1,"2490":1,"2524":7,"2525":5,"2526":4,"2534":1,"2572":1,"2576":9,"2577":18,"2581":1,"2582":1,"2603":3,"2605":2,"2607":1,"2608":1,"2609":1,"2610":1,"2611":1,"2710":1,"2727":1,"2728":4,"2735":1,"2736":1,"2737":6,"2738":2,"2741":1,"2743":4,"2745":2,"2749":2}}],["functions",{"0":{"22":1,"243":1,"637":1,"1139":1,"1341":1,"1364":1,"1383":1,"1444":1,"1505":1,"1853":1,"1854":1,"1873":1,"1874":1,"1942":1,"2047":1,"2048":1,"2049":1,"2055":1,"2056":1,"2071":1,"2107":1,"2158":1,"2175":1,"2227":1,"2534":1,"2601":1,"2709":1,"2740":1,"2741":1},"1":{"638":1,"639":1,"1140":1,"1141":1,"1142":1,"1365":1,"1366":1,"1367":1,"1368":1,"1369":1,"1370":1,"1371":1,"1372":1,"1373":1,"1445":1,"1446":1,"1447":1,"1448":1,"1449":1,"2048":1,"2049":1,"2050":2,"2051":2,"2052":2,"2053":2,"2054":2,"2055":2,"2056":2,"2057":2,"2602":1,"2603":1,"2604":1,"2605":1,"2606":1,"2607":1,"2608":1,"2609":1,"2610":1,"2611":1,"2612":1},"2":{"16":1,"22":1,"31":1,"49":3,"50":1,"62":1,"93":2,"114":2,"125":1,"134":2,"149":2,"160":1,"176":1,"185":1,"190":1,"191":3,"199":4,"203":2,"211":4,"236":2,"240":1,"243":1,"249":2,"266":1,"273":1,"374":1,"446":1,"455":1,"470":1,"475":1,"481":4,"485":1,"533":1,"565":2,"566":1,"568":2,"571":3,"574":1,"580":2,"584":1,"587":1,"588":2,"589":2,"635":1,"656":1,"661":1,"697":1,"698":2,"699":1,"701":2,"707":1,"1127":1,"1129":2,"1130":1,"1174":1,"1179":1,"1195":1,"1200":1,"1250":1,"1300":3,"1301":1,"1332":1,"1335":1,"1340":1,"1341":9,"1344":1,"1364":2,"1370":1,"1377":2,"1383":3,"1385":2,"1397":1,"1400":1,"1411":1,"1423":1,"1430":1,"1445":1,"1449":1,"1505":1,"1518":1,"1526":1,"1549":2,"1560":1,"1596":1,"1654":1,"1671":1,"1714":1,"1716":1,"1733":1,"1806":1,"1822":1,"1825":1,"1850":2,"1854":1,"1855":1,"1867":1,"1872":1,"1873":3,"1874":1,"1876":1,"1880":1,"1910":1,"1939":1,"1948":2,"1953":2,"1954":1,"1957":1,"2034":2,"2035":1,"2047":2,"2051":1,"2058":2,"2075":1,"2143":1,"2152":1,"2158":1,"2161":2,"2162":2,"2169":1,"2170":4,"2171":3,"2263":1,"2301":1,"2306":1,"2410":1,"2440":1,"2491":1,"2534":1,"2564":1,"2566":3,"2571":1,"2576":1,"2577":5,"2601":2,"2602":1,"2605":1,"2705":5,"2709":2,"2724":1,"2740":1,"2741":2,"2744":1,"2748":1,"2749":2}}],["fudge",{"2":{"249":1}}],["future",{"0":{"541":1,"2108":1},"1":{"2109":1,"2110":1,"2111":1,"2112":1,"2113":1},"2":{"6":1,"10":1,"110":1,"142":1,"156":1,"160":1,"182":1,"194":1,"198":1,"213":1,"262":2,"278":1,"352":1,"480":1,"538":1,"541":1,"599":1,"600":1,"1195":1,"1314":1,"1326":1,"2307":1,"2566":1,"2567":1,"2568":1,"2719":1}}],["fn+f",{"2":{"1283":1}}],["fnv",{"2":{"176":1}}],["fn",{"0":{"3":1,"7":1,"15":1,"1278":1},"2":{"3":2,"7":4,"15":2,"16":1,"31":1,"38":1,"49":1,"114":2,"134":1,"532":2,"1269":2,"1278":2,"1383":1,"1655":2,"1668":6,"1813":3,"2043":1,"2137":3,"2148":1,"2153":1,"2161":14,"2162":10,"2166":1,"2167":2,"2168":1,"2169":1,"2170":2,"2171":1,"2407":1}}],["fischl",{"2":{"2337":1}}],["fish",{"2":{"448":1}}],["fiddle",{"2":{"2161":1}}],["fiddling",{"2":{"335":1}}],["fifth",{"2":{"1712":1,"2155":1,"2161":1}}],["fifo",{"2":{"191":1}}],["five",{"0":{"1711":1},"1":{"1712":1,"1713":1},"2":{"1678":1,"2148":1,"2152":1,"2161":1,"2490":1,"2584":1,"2614":1,"2696":1}}],["figuring",{"2":{"1243":1}}],["figure",{"2":{"401":1,"669":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1326":1,"1451":2,"2169":1,"2423":1,"2455":1}}],["fiuxup",{"2":{"249":1}}],["filthier",{"2":{"1441":1}}],["filterpaper",{"2":{"1453":1}}],["filter=ez",{"2":{"1235":1,"1236":1}}],["filtered",{"2":{"374":1}}],["filtering",{"0":{"1938":1},"2":{"374":1,"505":1,"1239":1,"1917":1,"1921":1,"1923":1,"2226":2,"2753":1}}],["filters",{"2":{"236":1,"374":1}}],["filter",{"2":{"199":1,"374":6,"384":1,"1239":1,"1325":1,"1440":2,"2300":1}}],["fills",{"2":{"2150":1,"2417":1}}],["filled",{"2":{"1949":1,"2577":9}}],["fill",{"2":{"370":1,"371":1,"378":1,"381":1,"383":1,"386":1,"546":1,"1405":1,"1923":1,"2150":1,"2558":1,"2577":3}}],["filen",{"2":{"400":1}}],["filenames",{"2":{"400":1,"460":1,"2564":1}}],["filename",{"2":{"379":1,"380":2,"388":1,"389":1,"390":1,"391":1,"441":2,"460":1,"1287":1,"2347":1,"2353":1,"2452":1}}],["filename>",{"2":{"292":1,"405":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2240":1,"2242":1,"2243":1,"2244":1,"2347":1}}],["file2",{"2":{"400":1,"2480":1}}],["file1",{"2":{"400":1,"2480":1}}],["file>",{"2":{"377":1}}],["fileformat",{"2":{"199":1}}],["filegen",{"2":{"149":1}}],["file",{"0":{"440":1,"501":1,"512":1,"542":1,"545":1,"2261":1,"2452":1,"2615":1},"1":{"502":1,"503":1,"504":1,"505":1,"506":1,"507":1,"508":1,"509":1,"510":1,"511":1,"513":1,"514":1,"515":1,"516":1},"2":{"5":2,"16":1,"25":1,"65":2,"70":1,"73":1,"87":1,"114":2,"120":1,"132":2,"149":2,"164":1,"176":3,"189":1,"191":2,"211":4,"236":2,"249":1,"262":2,"266":1,"286":1,"291":2,"305":1,"309":1,"314":1,"315":1,"331":1,"332":1,"341":1,"347":1,"350":1,"374":1,"377":1,"393":2,"394":2,"399":1,"401":1,"404":2,"405":3,"408":1,"409":1,"410":1,"430":1,"437":1,"441":3,"450":1,"452":2,"453":4,"454":2,"496":1,"501":2,"512":1,"529":2,"530":1,"533":1,"534":1,"541":4,"545":2,"549":1,"554":1,"559":2,"560":3,"564":4,"565":1,"566":1,"601":1,"607":1,"613":1,"621":1,"626":1,"688":1,"1124":2,"1127":3,"1130":3,"1133":1,"1135":1,"1137":1,"1138":1,"1142":1,"1239":1,"1250":1,"1254":1,"1287":5,"1332":1,"1351":2,"1352":1,"1354":1,"1377":2,"1379":4,"1383":1,"1385":3,"1398":3,"1405":2,"1415":2,"1440":6,"1495":1,"1496":2,"1508":1,"1513":1,"1527":2,"1553":1,"1554":1,"1657":1,"1675":1,"1725":1,"1729":2,"1733":1,"1803":1,"1804":1,"1805":1,"1806":1,"1807":1,"1813":1,"1814":2,"1817":1,"1825":1,"1826":1,"1863":1,"1946":1,"1952":2,"1957":1,"2041":1,"2044":1,"2124":2,"2125":1,"2126":2,"2127":2,"2128":1,"2129":1,"2137":1,"2141":1,"2153":1,"2161":1,"2164":1,"2169":2,"2229":1,"2230":1,"2231":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":2,"2240":1,"2242":1,"2243":1,"2244":1,"2245":2,"2247":2,"2249":2,"2252":2,"2255":1,"2259":7,"2261":1,"2262":13,"2263":9,"2264":3,"2277":1,"2278":2,"2279":1,"2295":4,"2297":1,"2298":1,"2299":6,"2300":4,"2301":2,"2302":1,"2309":3,"2318":1,"2342":1,"2347":3,"2349":5,"2353":2,"2400":1,"2404":2,"2405":1,"2406":2,"2407":1,"2409":1,"2420":1,"2422":1,"2423":3,"2425":2,"2436":2,"2437":7,"2439":2,"2440":3,"2446":1,"2449":1,"2452":5,"2469":2,"2477":13,"2478":1,"2480":1,"2491":1,"2501":1,"2506":1,"2508":3,"2511":2,"2513":7,"2539":1,"2541":2,"2542":1,"2544":1,"2548":1,"2550":1,"2555":2,"2557":1,"2564":1,"2566":4,"2575":10,"2577":2,"2583":1,"2585":1,"2587":6,"2591":1,"2592":2,"2594":6,"2595":3,"2607":1,"2614":4,"2615":2,"2616":3,"2617":1,"2620":3,"2671":2,"2752":1,"2753":6,"2757":1}}],["files>",{"2":{"2477":1}}],["filesystem",{"2":{"2463":1}}],["files",{"0":{"5":1,"1797":1,"2303":1,"2435":1,"2438":1,"2703":1},"2":{"1":1,"32":1,"50":4,"69":1,"73":2,"75":1,"86":1,"92":1,"113":1,"114":5,"118":1,"132":1,"133":1,"134":3,"160":2,"176":2,"191":3,"199":7,"201":2,"211":3,"213":2,"220":1,"224":2,"234":2,"236":4,"238":1,"249":3,"262":1,"266":1,"277":1,"282":3,"341":1,"371":1,"374":1,"380":1,"387":1,"396":2,"399":1,"400":5,"401":2,"411":1,"448":1,"453":1,"454":1,"485":2,"496":3,"499":1,"501":1,"509":1,"513":4,"515":1,"520":1,"521":1,"522":2,"530":1,"545":1,"554":2,"606":2,"609":2,"610":1,"613":1,"614":2,"1132":1,"1133":1,"1287":1,"1377":3,"1379":1,"1383":1,"1384":1,"1385":3,"1445":1,"1553":1,"1729":1,"1952":1,"2126":3,"2260":2,"2261":1,"2262":4,"2263":2,"2296":1,"2299":1,"2300":1,"2303":5,"2309":1,"2342":1,"2344":1,"2346":1,"2349":1,"2405":1,"2425":1,"2427":2,"2428":1,"2429":2,"2430":1,"2433":1,"2435":1,"2436":1,"2437":1,"2438":1,"2439":1,"2440":2,"2445":1,"2447":1,"2448":1,"2457":2,"2475":1,"2476":1,"2477":2,"2480":4,"2501":1,"2508":1,"2509":1,"2524":1,"2525":1,"2526":1,"2533":1,"2548":1,"2553":1,"2564":5,"2565":1,"2566":7,"2573":2,"2615":1,"2647":1,"2671":5,"2753":4}}],["finnish",{"2":{"1355":1,"2703":3}}],["finger",{"2":{"1329":1,"1839":3,"1845":1,"1934":3,"2152":1,"2153":1}}],["fingers",{"2":{"1329":1,"1410":1,"1839":1}}],["fingerprintusbhost",{"2":{"1831":1}}],["fingerprint",{"2":{"199":1}}],["finite",{"2":{"516":1}}],["finishing",{"0":{"2280":1},"2":{"505":1}}],["finishes",{"2":{"331":1,"2161":2,"2162":1,"2743":1}}],["finished",{"0":{"316":1,"525":1},"2":{"312":1,"315":1,"316":1,"522":1,"647":1,"675":1,"741":1,"745":1,"749":1,"751":1,"768":1,"772":1,"776":1,"778":1,"800":1,"804":1,"808":1,"810":1,"832":1,"836":1,"840":1,"842":1,"867":1,"871":1,"875":1,"877":1,"901":1,"905":1,"909":1,"911":1,"935":1,"939":1,"943":1,"945":1,"969":1,"973":1,"977":1,"979":1,"1003":1,"1007":1,"1011":1,"1013":1,"1037":1,"1041":1,"1045":1,"1047":1,"1071":1,"1075":1,"1079":1,"1081":1,"1105":1,"1109":1,"1113":1,"1115":1,"1158":1,"1162":1,"1166":1,"1168":1,"1729":2,"1921":1,"1952":2,"2161":2,"2162":5,"2167":2,"2168":3,"2169":3,"2170":3,"2171":4,"2353":1}}],["finish",{"0":{"2197":1,"2221":1},"2":{"331":1,"1553":2,"1555":1,"1683":1,"2363":1,"2501":1}}],["finalize",{"2":{"2255":1}}],["final",{"0":{"2712":1},"2":{"496":1,"499":1,"522":1,"614":1,"1284":4,"1451":1,"2161":1,"2273":1,"2674":1,"2705":1,"2749":1}}],["finally",{"2":{"163":1,"330":1,"626":1,"1325":1,"1359":1,"1923":1,"2112":1,"2162":1,"2171":1,"2181":1,"2351":1,"2530":1,"2557":1}}],["finer",{"2":{"2105":1,"2355":1}}],["fine40",{"2":{"211":1}}],["fine",{"0":{"1911":1},"2":{"176":1,"1260":1,"1405":1,"1430":1,"1676":1,"1912":1,"1940":1,"1941":1,"2118":1,"2150":1,"2425":1,"2469":1,"2498":1,"2506":1,"2566":2,"2569":1,"2737":1,"2740":1}}],["finder",{"2":{"2245":1,"2247":1,"2249":1,"2452":2}}],["finds",{"2":{"1254":1,"1255":1}}],["finding",{"2":{"557":1}}],["find",{"0":{"374":1,"2670":1},"2":{"31":4,"34":1,"124":1,"211":1,"233":1,"236":2,"240":1,"245":1,"248":1,"249":1,"331":1,"335":1,"336":1,"352":3,"356":1,"374":4,"401":1,"430":1,"446":1,"454":1,"481":3,"552":1,"554":1,"557":1,"602":1,"616":1,"627":1,"628":1,"684":1,"1129":1,"1132":1,"1133":1,"1216":1,"1259":1,"1260":1,"1262":1,"1304":1,"1364":1,"1416":2,"1441":1,"1573":1,"1651":1,"1677":1,"1921":1,"2061":1,"2118":1,"2126":1,"2171":1,"2252":1,"2259":2,"2262":1,"2273":1,"2275":1,"2282":1,"2305":1,"2348":1,"2355":2,"2392":2,"2404":1,"2405":2,"2406":1,"2418":1,"2419":1,"2423":3,"2427":1,"2477":2,"2534":1,"2556":1,"2686":1,"2727":1,"2728":2,"2738":1,"2743":1,"2744":1,"2748":1,"2750":1,"2755":1}}],["fields",{"2":{"191":1,"1534":1,"2502":1,"2585":1,"2592":1}}],["field",{"2":{"149":1,"335":1,"350":5,"628":1,"1674":1,"2162":1,"2436":1,"2615":2,"2705":1}}],["fitler",{"2":{"1440":2,"1451":2}}],["fits",{"2":{"1405":1,"2181":1}}],["fitness",{"2":{"1380":1,"2570":1}}],["fit",{"2":{"124":2,"134":1,"352":1,"1336":1,"1554":1,"1822":2,"2143":2,"2553":1,"2704":2}}],["fitting",{"2":{"114":1}}],["firefox",{"2":{"2427":1}}],["fired",{"2":{"2263":1}}],["fire",{"2":{"1518":3,"1573":2,"2162":1}}],["firstly",{"2":{"2109":1,"2353":1}}],["first",{"0":{"2420":1,"2498":1},"1":{"2421":1,"2422":1,"2423":1,"2424":1,"2425":1,"2426":1},"2":{"46":1,"65":1,"90":2,"113":1,"114":1,"120":1,"130":1,"157":1,"213":1,"222":1,"284":1,"358":2,"361":1,"366":1,"430":1,"453":1,"462":1,"465":1,"496":1,"501":1,"505":1,"506":1,"550":1,"556":1,"557":2,"559":1,"560":2,"570":1,"588":1,"597":1,"598":1,"606":1,"627":1,"644":2,"646":1,"656":1,"666":1,"669":1,"673":1,"689":2,"690":1,"734":1,"738":1,"760":1,"764":1,"792":1,"796":1,"822":1,"826":1,"857":1,"861":1,"891":1,"895":1,"925":1,"929":1,"959":1,"963":1,"993":1,"997":1,"1027":1,"1031":1,"1061":1,"1065":1,"1095":1,"1099":1,"1148":1,"1152":1,"1181":1,"1214":1,"1259":1,"1266":1,"1270":1,"1288":1,"1303":2,"1340":1,"1359":2,"1385":1,"1423":1,"1451":3,"1452":1,"1511":1,"1518":1,"1520":1,"1521":1,"1522":1,"1527":1,"1553":1,"1560":2,"1594":2,"1612":1,"1614":1,"1652":1,"1675":2,"1703":1,"1706":1,"1709":1,"1712":1,"1725":1,"1781":1,"1784":1,"1787":1,"1807":1,"1812":1,"1820":1,"1835":1,"1842":1,"1849":1,"1921":1,"1923":2,"1940":1,"1946":1,"1949":1,"2026":1,"2029":1,"2063":1,"2122":1,"2125":1,"2126":1,"2131":1,"2137":1,"2147":1,"2161":4,"2162":3,"2171":1,"2182":2,"2261":1,"2270":1,"2273":1,"2281":1,"2305":1,"2309":2,"2329":1,"2333":1,"2418":1,"2441":1,"2450":1,"2470":1,"2473":1,"2476":1,"2477":3,"2480":1,"2490":1,"2508":1,"2513":1,"2515":1,"2557":1,"2565":2,"2566":1,"2575":2,"2577":1,"2596":8,"2603":1,"2614":1,"2616":1,"2624":1,"2657":1,"2658":1,"2675":2,"2686":1,"2700":1,"2705":1,"2722":1,"2728":1,"2735":1,"2737":1,"2743":1,"2747":1}}],["firmware\`",{"2":{"365":2,"366":2}}],["firmwares",{"2":{"164":1,"173":1,"263":1,"371":1,"2427":1}}],["firmware",{"0":{"31":1,"34":1,"56":1,"164":1,"273":1,"276":1,"542":1,"1259":1,"2121":1,"2277":1,"2278":1,"2279":1,"2312":1,"2313":1,"2321":1,"2324":1,"2342":1,"2349":1,"2420":1,"2425":1,"2426":1,"2635":1,"2674":1},"1":{"2122":1,"2123":1,"2124":1,"2125":1,"2126":1,"2127":1,"2128":1,"2129":1,"2130":1,"2131":1,"2313":1,"2314":1,"2315":1,"2316":1,"2317":1,"2343":1,"2344":1,"2345":1,"2346":1,"2421":1,"2422":1,"2423":1,"2424":1,"2425":1,"2426":1},"2":{"2":1,"3":1,"10":1,"15":1,"21":1,"24":1,"28":2,"30":2,"33":2,"36":1,"37":1,"43":1,"49":1,"70":3,"73":1,"107":1,"112":1,"114":3,"116":1,"124":1,"130":2,"131":1,"132":1,"145":1,"149":4,"164":1,"166":1,"201":1,"213":1,"215":1,"222":2,"224":2,"228":3,"236":1,"238":1,"240":1,"243":1,"249":4,"265":2,"266":2,"268":1,"273":5,"275":1,"276":3,"278":1,"291":1,"292":1,"305":3,"309":1,"310":1,"311":1,"312":3,"313":1,"314":1,"316":5,"332":1,"341":2,"343":2,"344":2,"345":2,"346":1,"347":2,"349":2,"352":2,"360":4,"363":1,"365":1,"366":1,"367":2,"370":6,"371":2,"373":1,"375":1,"382":1,"387":1,"388":2,"391":1,"393":2,"394":2,"397":1,"401":2,"406":1,"430":1,"450":2,"451":1,"458":3,"506":1,"513":3,"515":2,"519":1,"521":2,"527":1,"529":3,"530":2,"533":2,"534":1,"535":1,"536":1,"539":1,"542":1,"543":1,"554":2,"556":1,"557":1,"558":1,"574":2,"592":4,"660":1,"689":1,"1234":1,"1236":1,"1239":1,"1241":1,"1243":1,"1257":1,"1270":1,"1287":2,"1288":1,"1312":1,"1319":1,"1334":1,"1376":1,"1385":2,"1413":1,"1434":1,"1435":1,"1437":1,"1491":2,"1492":2,"1497":1,"1594":1,"1728":1,"1816":1,"1825":2,"1866":1,"1932":1,"1948":1,"1949":2,"2034":1,"2037":1,"2042":1,"2114":2,"2123":1,"2124":1,"2125":2,"2126":2,"2128":1,"2134":1,"2149":2,"2160":1,"2161":1,"2177":1,"2226":1,"2232":2,"2234":3,"2239":1,"2241":4,"2246":2,"2248":2,"2249":1,"2250":1,"2252":3,"2255":4,"2259":1,"2262":2,"2263":1,"2268":2,"2276":2,"2277":7,"2279":1,"2280":1,"2295":2,"2296":1,"2304":1,"2311":5,"2313":1,"2318":1,"2319":1,"2320":1,"2321":3,"2324":1,"2326":1,"2327":1,"2329":1,"2333":1,"2341":1,"2345":1,"2349":6,"2351":1,"2402":1,"2403":2,"2417":1,"2418":3,"2420":2,"2421":1,"2422":1,"2423":1,"2425":3,"2426":2,"2427":1,"2428":1,"2429":1,"2437":4,"2439":3,"2441":7,"2442":1,"2445":1,"2446":1,"2447":2,"2448":1,"2449":1,"2450":2,"2451":1,"2452":6,"2453":1,"2454":2,"2455":1,"2456":1,"2468":1,"2469":5,"2470":1,"2472":1,"2475":10,"2479":6,"2483":1,"2494":1,"2498":1,"2501":1,"2503":1,"2504":1,"2506":1,"2508":1,"2510":1,"2511":1,"2512":1,"2513":6,"2514":1,"2522":1,"2523":1,"2524":1,"2525":1,"2544":1,"2566":5,"2569":1,"2573":1,"2575":6,"2576":11,"2577":2,"2578":1,"2579":1,"2614":2,"2627":1,"2647":1,"2671":3,"2672":1,"2674":1,"2704":1,"2705":2,"2708":2,"2709":1,"2710":1,"2712":1,"2718":1,"2719":4,"2721":1,"2728":1,"2735":1,"2736":1,"2742":1,"2745":2,"2749":1,"2756":1}}],["fixme",{"2":{"482":1}}],["fixmes",{"0":{"482":1},"2":{"482":2}}],["fixups",{"2":{"114":1}}],["fixup",{"2":{"65":1,"92":2,"114":6,"134":3,"149":3,"160":2,"176":9,"191":23,"199":9,"211":13,"222":3,"236":1,"249":7,"266":4,"277":4}}],["fixing",{"0":{"28":1},"2":{"50":1,"114":1,"199":1,"236":1,"557":1,"2568":2}}],["fixed",{"0":{"25":1},"2":{"25":1,"50":1,"73":1,"86":1,"114":1,"149":1,"160":1,"191":1,"199":1,"211":2,"236":1,"266":1,"434":1,"570":1,"1295":1,"2324":1,"2468":1,"2490":1}}],["fixes",{"0":{"48":1,"62":1,"73":1,"92":1},"2":{"5":1,"73":2,"92":1,"114":3,"134":3,"149":8,"160":4,"176":7,"190":2,"191":7,"199":3,"211":2,"222":1,"236":2,"249":1,"266":2,"277":3,"343":1,"2517":1}}],["fix",{"0":{"11":1},"2":{"6":1,"28":1,"32":1,"50":1,"51":1,"62":1,"73":6,"74":1,"75":1,"77":1,"92":8,"94":2,"95":2,"114":68,"133":1,"134":42,"149":32,"160":12,"175":1,"176":40,"190":2,"191":47,"199":25,"211":25,"222":23,"236":17,"249":19,"266":10,"277":5,"352":1,"376":3,"554":2,"560":2,"1241":1,"1261":2,"1270":1,"1403":1,"1501":1,"2299":1,"2325":1,"2398":2,"2411":2,"2454":1,"2468":2,"2472":1,"2490":1,"2564":1}}],["footprint",{"0":{"2039":1},"2":{"2518":1,"2528":1}}],["footnotes",{"2":{"279":1}}],["foo=none",{"2":{"474":1}}],["foo=",{"2":{"474":1}}],["foo",{"2":{"453":6,"457":1,"459":1,"474":2,"475":1,"476":2,"570":2,"572":2,"1332":1}}],["font",{"0":{"409":1,"410":1,"2585":1,"2587":1,"2590":1,"2591":1},"1":{"2586":1,"2587":1,"2588":1,"2589":1,"2590":1,"2591":1},"2":{"409":1,"410":1,"1814":5,"1817":8,"2138":1,"2141":8,"2575":18,"2577":34,"2585":6,"2586":1,"2587":6,"2588":2,"2589":3,"2590":4,"2591":1}}],["fonts",{"2":{"153":2,"248":1,"249":1,"1817":3,"2141":3,"2573":2,"2574":5,"2575":1,"2577":5}}],["fox",{"2":{"211":1}}],["focused",{"2":{"481":1,"2418":1}}],["focuses",{"2":{"278":1}}],["focusing",{"2":{"233":1}}],["focus",{"2":{"182":1,"213":1,"430":1,"1567":1,"1677":1,"2502":1,"2738":1}}],["foundational",{"2":{"2725":1}}],["foundation",{"2":{"1380":1,"2570":1}}],["found",{"0":{"1261":1},"2":{"124":2,"210":1,"316":1,"324":1,"327":1,"335":1,"376":1,"401":1,"430":1,"446":1,"483":1,"484":1,"529":1,"552":1,"684":1,"685":1,"686":1,"696":1,"1272":1,"1340":1,"1398":1,"1438":1,"1445":1,"1452":1,"1491":1,"1630":1,"1816":1,"1921":1,"1923":1,"2140":1,"2144":1,"2145":1,"2146":1,"2242":1,"2257":3,"2260":2,"2263":1,"2271":1,"2280":1,"2324":1,"2353":1,"2393":1,"2421":1,"2441":1,"2443":1,"2468":1,"2469":1,"2522":1,"2533":1,"2549":1,"2575":1,"2577":1,"2655":1,"2723":1,"2743":1,"2757":1}}],["fourth",{"2":{"1406":1,"1709":1,"1712":1,"2152":1,"2161":1,"2167":2}}],["fourier",{"2":{"45":1}}],["four",{"0":{"1708":1},"1":{"1709":1,"1710":1},"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"143":2,"149":1,"453":1,"455":1,"529":1,"664":1,"755":1,"758":1,"784":1,"787":1,"816":1,"819":1,"848":1,"883":1,"917":1,"920":1,"951":1,"954":1,"985":1,"988":1,"1019":1,"1053":1,"1087":1,"1143":1,"1146":1,"1300":1,"1559":1,"1591":1,"2093":1,"2105":1,"2152":2,"2348":1,"2352":1,"2614":1,"2699":2}}],["folks",{"2":{"343":1,"344":1,"345":1,"346":1,"349":1}}],["foldkb",{"2":{"134":1}}],["folder2",{"2":{"1351":1}}],["folder1",{"2":{"1351":1}}],["folder>",{"2":{"1346":3}}],["folder",{"0":{"43":1,"2296":1},"1":{"2297":1,"2298":1,"2299":1,"2300":1,"2301":1,"2302":1},"2":{"70":1,"72":2,"111":1,"113":3,"114":5,"133":1,"134":1,"149":20,"160":2,"176":2,"199":2,"204":1,"211":6,"236":1,"249":10,"266":1,"277":2,"286":1,"291":2,"331":3,"335":1,"370":1,"373":1,"387":1,"497":1,"499":2,"513":4,"558":1,"559":2,"565":1,"566":1,"1346":2,"1347":3,"1351":2,"1376":2,"1379":1,"1385":1,"1398":1,"1413":1,"1415":1,"1440":4,"1729":1,"1952":1,"2257":3,"2258":1,"2259":1,"2260":1,"2262":3,"2294":1,"2295":5,"2296":2,"2299":14,"2300":16,"2303":1,"2307":3,"2425":1,"2435":2,"2436":2,"2438":1,"2440":1,"2452":1,"2468":1,"2469":1,"2497":1,"2498":3,"2508":3,"2511":2,"2566":1,"2615":1,"2753":5,"2755":1}}],["folders",{"0":{"499":1,"2295":1},"2":{"35":1,"37":1,"43":1,"114":1,"149":1,"204":1,"222":1,"496":1,"498":1,"499":3,"1346":1,"2262":3,"2295":3,"2299":1,"2753":1}}],["followed",{"2":{"361":1,"616":1,"1326":1,"1329":3,"1357":1,"1361":2,"1451":2,"1675":3,"2494":1,"2564":2,"2575":1,"2587":1,"2594":1,"2596":2,"2645":1,"2734":1}}],["followup",{"2":{"149":1,"224":1,"2567":1}}],["follow",{"2":{"114":1,"125":1,"185":1,"228":1,"240":1,"367":2,"453":3,"559":1,"560":2,"606":1,"607":1,"609":2,"623":1,"1124":1,"1127":1,"1130":1,"1132":1,"1133":1,"1265":1,"1338":1,"1452":1,"1499":1,"2183":1,"2297":1,"2304":1,"2319":1,"2417":1,"2418":1,"2433":1,"2462":1,"2467":1,"2468":1,"2497":1,"2554":1,"2566":1,"2600":1,"2753":1}}],["following",{"2":{"30":1,"31":2,"33":1,"34":3,"45":1,"67":1,"86":1,"102":1,"118":1,"119":1,"122":1,"125":1,"143":1,"146":1,"158":1,"159":1,"167":1,"168":1,"181":1,"185":1,"194":2,"197":1,"201":1,"206":1,"248":1,"255":2,"256":1,"273":1,"314":1,"317":1,"371":2,"374":1,"416":1,"450":1,"453":1,"462":1,"487":1,"514":1,"516":1,"534":1,"556":1,"565":1,"566":2,"588":2,"598":1,"602":1,"610":1,"615":1,"631":1,"643":1,"644":1,"661":1,"663":1,"666":1,"667":1,"669":1,"696":1,"698":1,"700":1,"702":1,"703":1,"731":1,"734":1,"757":1,"758":1,"760":1,"786":1,"787":1,"788":1,"789":1,"790":1,"792":1,"818":1,"819":1,"820":1,"822":1,"850":1,"851":1,"853":1,"854":1,"855":1,"857":1,"885":1,"886":1,"887":1,"888":1,"889":1,"891":1,"919":1,"920":1,"921":1,"922":1,"923":1,"925":1,"953":1,"954":1,"955":1,"956":1,"957":1,"959":1,"987":1,"988":1,"989":1,"990":1,"991":1,"993":1,"1021":1,"1022":1,"1024":1,"1025":1,"1027":1,"1055":1,"1056":1,"1058":1,"1059":1,"1061":1,"1089":1,"1090":1,"1091":1,"1092":1,"1093":1,"1095":1,"1134":1,"1145":1,"1146":1,"1148":1,"1175":1,"1177":1,"1196":1,"1213":1,"1214":1,"1216":1,"1217":1,"1220":1,"1224":1,"1225":1,"1226":1,"1227":1,"1228":1,"1229":1,"1230":1,"1239":2,"1245":1,"1252":1,"1253":1,"1254":1,"1280":1,"1294":1,"1301":1,"1304":1,"1311":1,"1314":1,"1316":1,"1317":1,"1319":1,"1328":1,"1329":1,"1330":1,"1341":1,"1376":1,"1378":1,"1385":1,"1387":1,"1393":1,"1397":1,"1403":1,"1416":2,"1430":1,"1431":1,"1438":1,"1448":1,"1452":2,"1455":1,"1457":1,"1458":1,"1466":1,"1467":2,"1469":1,"1470":1,"1492":1,"1493":1,"1500":1,"1512":1,"1515":2,"1518":1,"1525":1,"1527":1,"1532":1,"1553":1,"1555":1,"1559":1,"1562":1,"1570":2,"1575":1,"1579":1,"1582":1,"1584":1,"1585":1,"1586":1,"1587":1,"1590":1,"1591":1,"1593":1,"1631":1,"1633":1,"1634":1,"1665":1,"1677":1,"1679":1,"1682":1,"1683":1,"1684":1,"1685":1,"1716":1,"1724":1,"1725":1,"1787":1,"1789":1,"1790":1,"1800":1,"1801":1,"1802":1,"1803":1,"1804":1,"1805":1,"1808":1,"1812":1,"1814":1,"1825":1,"1832":1,"1836":1,"1850":2,"1852":1,"1855":1,"1860":1,"1861":1,"1862":1,"1871":1,"1876":1,"1880":2,"1882":1,"1905":1,"1908":1,"1910":1,"1911":1,"1912":1,"1917":1,"1919":1,"1920":1,"1921":1,"1923":1,"1932":1,"1933":1,"1934":1,"1935":1,"1937":1,"1939":1,"1941":1,"1943":1,"1945":1,"1946":1,"1950":1,"1951":1,"2031":1,"2032":2,"2038":1,"2039":1,"2060":1,"2063":1,"2068":1,"2073":1,"2074":1,"2075":1,"2078":1,"2103":1,"2109":1,"2121":1,"2122":1,"2124":1,"2125":2,"2126":2,"2127":2,"2129":1,"2137":1,"2138":1,"2146":1,"2147":1,"2148":1,"2149":1,"2157":1,"2169":1,"2170":1,"2171":2,"2178":1,"2179":1,"2180":1,"2181":2,"2182":1,"2183":1,"2230":1,"2231":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":2,"2240":1,"2242":1,"2243":1,"2244":1,"2245":2,"2247":2,"2249":2,"2252":1,"2259":1,"2260":1,"2262":2,"2268":1,"2282":1,"2300":2,"2301":1,"2302":1,"2311":3,"2328":1,"2346":1,"2347":1,"2348":1,"2351":1,"2353":3,"2405":1,"2409":1,"2413":1,"2414":1,"2429":1,"2431":2,"2432":1,"2435":1,"2437":1,"2438":2,"2440":1,"2450":1,"2453":1,"2459":1,"2464":1,"2468":4,"2477":1,"2479":2,"2513":3,"2523":2,"2531":1,"2539":1,"2542":1,"2548":3,"2560":1,"2566":1,"2573":1,"2575":2,"2576":31,"2577":2,"2579":1,"2593":1,"2596":1,"2709":2,"2727":4,"2735":2,"2736":2,"2737":3,"2738":4,"2742":1}}],["follows",{"2":{"0":1,"19":1,"31":1,"160":1,"203":1,"231":1,"234":1,"317":1,"455":1,"513":1,"534":1,"1300":1,"1805":1,"1912":1,"1915":1,"2299":2,"2300":1,"2303":1,"2323":1,"2430":1,"2452":1,"2535":1,"2585":1,"2590":1,"2592":1,"2595":1,"2596":2,"2600":1,"2615":1}}],["forum",{"2":{"2715":1}}],["forums",{"2":{"2317":1}}],["forgot",{"2":{"2728":1}}],["forget",{"2":{"1938":3}}],["forgiveness",{"2":{"466":1}}],["forever",{"2":{"2744":1}}],["forever60",{"2":{"389":5}}],["foremost",{"2":{"2705":1}}],["foreground",{"2":{"435":4}}],["foreach",{"2":{"349":1}}],["forth",{"2":{"341":1,"2146":1,"2231":1,"2238":1}}],["forcing",{"2":{"1828":1,"2128":1}}],["forcibly",{"2":{"50":1,"2131":1}}],["forceon",{"2":{"698":4}}],["forced",{"2":{"511":1,"1300":1,"2128":1,"2263":1}}],["forces",{"2":{"504":1,"515":1,"698":1,"1316":1,"1317":1,"2069":1}}],["forcefully",{"2":{"236":1}}],["force",{"0":{"195":1,"230":1},"2":{"112":3,"160":1,"195":4,"199":2,"211":2,"226":2,"236":3,"249":1,"277":1,"349":1,"361":2,"405":2,"504":2,"593":1,"594":1,"1134":1,"1238":1,"1243":1,"1332":1,"1349":3,"1828":1,"1873":2,"1908":1,"2071":1,"2145":1,"2230":2,"2263":1,"2279":1,"2453":1,"2475":2,"2566":1,"2610":1,"2699":3}}],["forming",{"2":{"2689":1}}],["formulas",{"2":{"1836":1}}],["formula",{"2":{"1725":1,"1946":1,"2461":1}}],["formed",{"2":{"1438":1}}],["former",{"2":{"1238":1,"1273":1}}],["formerly",{"2":{"37":1,"1498":2,"1528":1}}],["forms",{"2":{"453":1,"1393":1,"1410":1}}],["formalise",{"2":{"191":1}}],["formats",{"2":{"374":1,"377":1,"399":1,"400":1,"406":1,"2452":1,"2575":1}}],["formatters",{"2":{"114":1}}],["formatted",{"2":{"1":1,"50":1,"76":1,"482":1,"612":1,"1250":2,"2615":1}}],["formatting",{"0":{"1":1,"442":1,"444":1,"445":1,"454":1},"1":{"443":1,"444":1,"445":1,"446":1,"447":1},"2":{"73":1,"149":1,"176":1,"249":2,"432":1,"462":1,"2492":1,"2503":1}}],["format",{"0":{"1":1,"377":1,"399":1,"400":1,"406":1,"454":1,"470":1,"1357":1,"1450":1,"2585":1,"2592":1},"1":{"1451":1,"1452":1,"2586":1,"2587":1,"2588":1,"2589":1,"2590":1,"2591":1,"2593":1,"2594":1,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1},"2":{"1":2,"93":1,"112":1,"114":2,"134":5,"149":1,"160":1,"191":1,"199":1,"211":2,"248":1,"249":1,"277":1,"317":1,"341":2,"374":1,"377":4,"378":1,"384":1,"399":1,"400":7,"406":1,"408":2,"409":2,"410":1,"432":2,"442":2,"444":1,"445":2,"454":9,"462":1,"467":1,"468":2,"470":1,"496":1,"513":2,"529":1,"533":1,"610":1,"1278":1,"1300":1,"1348":1,"1451":3,"1452":1,"2091":1,"2093":1,"2095":1,"2097":1,"2147":1,"2148":1,"2152":1,"2252":1,"2303":2,"2309":1,"2349":1,"2353":1,"2428":1,"2440":1,"2452":1,"2469":1,"2566":1,"2575":21,"2576":12,"2577":2,"2585":5,"2587":4,"2592":6,"2593":1,"2594":1,"2595":1,"2596":6,"2597":2,"2599":1,"2615":1,"2674":2,"2686":1,"2699":1}}],["form",{"2":{"110":1,"393":1,"394":1,"416":1,"417":1,"453":1,"1243":1,"2125":1,"2152":1,"2169":1,"2615":1,"2632":1,"2672":2,"2673":1}}],["forward",{"2":{"36":1,"37":1,"43":1,"113":1,"134":1,"184":1,"254":1,"268":1,"1332":1,"1725":1,"1822":1,"1932":4,"1946":1,"1948":2,"2034":1,"2143":1,"2294":1,"2355":4,"2376":1,"2377":2,"2392":1,"2393":4,"2568":1,"2755":1}}],["forked",{"0":{"2443":1},"2":{"2406":1,"2472":1,"2720":1}}],["forks",{"0":{"26":1},"2":{"349":1,"1265":1,"2719":1}}],["forking",{"2":{"21":1,"2255":1}}],["fork",{"0":{"5":1,"2478":1},"1":{"2479":1,"2480":1,"2481":1},"2":{"26":1,"46":1,"176":1,"228":1,"349":1,"554":1,"556":1,"1257":1,"1265":3,"2230":1,"2231":1,"2238":1,"2255":7,"2257":1,"2428":1,"2441":1,"2443":2,"2446":1,"2468":1,"2472":1,"2473":1,"2475":7,"2476":1,"2479":3,"2480":2,"2481":2,"2548":1,"2549":2,"2568":3}}],["for",{"0":{"11":1,"14":2,"26":1,"35":1,"56":1,"80":1,"138":1,"174":1,"203":1,"231":1,"246":1,"350":1,"356":1,"367":1,"448":1,"450":1,"510":1,"533":1,"534":1,"541":1,"547":1,"553":1,"562":1,"1139":1,"1241":1,"1253":1,"1263":1,"1269":1,"1302":1,"1303":1,"1350":1,"1670":1,"1671":1,"1672":1,"1792":1,"1870":1,"1874":1,"1880":1,"2150":1,"2170":1,"2171":1,"2276":1,"2471":1,"2492":1,"2500":1,"2503":1,"2511":1,"2550":2,"2551":1,"2552":1,"2564":1,"2670":1,"2740":1,"2753":1},"1":{"36":1,"449":1,"450":1,"451":1,"452":1,"1140":1,"1141":1,"1142":1,"1264":1,"1351":1,"1352":1,"1673":1,"1674":1,"1675":1,"1871":1,"2472":1,"2501":1,"2502":1,"2512":1},"2":{"0":1,"8":2,"9":1,"12":1,"13":3,"14":1,"18":3,"19":1,"28":1,"30":3,"31":3,"33":3,"34":1,"35":1,"36":9,"39":1,"45":5,"49":14,"50":10,"51":1,"52":1,"55":2,"63":2,"64":1,"65":4,"69":2,"70":1,"74":7,"75":3,"76":1,"81":1,"82":1,"86":2,"88":1,"89":1,"90":1,"92":4,"93":21,"94":3,"98":2,"99":4,"104":1,"107":2,"108":1,"111":1,"112":1,"114":58,"116":1,"118":5,"119":2,"120":2,"123":2,"125":3,"127":1,"128":1,"130":3,"131":1,"132":1,"133":1,"134":38,"138":2,"142":1,"145":1,"146":1,"149":33,"152":3,"153":6,"154":1,"156":2,"158":1,"160":21,"163":3,"164":1,"166":2,"169":2,"172":4,"173":2,"174":4,"175":5,"176":45,"179":1,"182":4,"183":1,"185":4,"186":2,"188":7,"189":3,"190":3,"191":52,"194":7,"195":2,"196":1,"199":28,"201":7,"202":1,"203":1,"204":1,"206":2,"209":1,"210":2,"211":32,"213":6,"215":1,"222":15,"224":1,"228":5,"229":3,"230":2,"231":2,"232":3,"234":2,"235":1,"236":26,"240":1,"241":1,"243":1,"246":1,"247":2,"248":2,"249":27,"253":1,"255":4,"256":1,"257":1,"258":1,"259":2,"262":1,"263":4,"264":1,"265":1,"266":18,"270":1,"271":1,"272":1,"273":2,"274":1,"276":1,"277":8,"279":2,"282":6,"284":1,"303":1,"304":1,"305":1,"307":1,"310":1,"311":1,"312":2,"315":1,"316":4,"317":3,"318":1,"322":2,"328":1,"331":6,"332":1,"334":3,"335":2,"336":2,"339":1,"340":3,"341":7,"343":4,"344":4,"345":2,"346":2,"347":3,"349":3,"350":10,"352":2,"355":3,"365":1,"366":1,"367":4,"370":4,"371":5,"372":1,"373":1,"374":7,"376":1,"378":3,"383":1,"384":1,"385":1,"393":2,"394":2,"395":1,"400":4,"401":1,"402":1,"403":1,"404":1,"408":1,"409":2,"410":1,"413":2,"415":2,"418":2,"427":1,"430":2,"431":2,"432":3,"433":1,"436":1,"437":3,"441":1,"446":2,"448":1,"453":3,"454":3,"455":2,"457":1,"461":1,"466":3,"470":3,"471":1,"472":1,"473":1,"474":1,"479":1,"480":1,"481":1,"483":1,"485":2,"486":2,"492":1,"493":1,"495":2,"496":4,"498":1,"499":1,"500":1,"502":10,"504":1,"505":21,"506":4,"509":4,"510":1,"511":11,"512":1,"513":1,"515":8,"519":1,"521":1,"522":2,"523":1,"525":1,"528":1,"529":2,"530":3,"532":1,"533":1,"534":1,"535":2,"536":1,"537":1,"540":2,"541":2,"546":2,"550":4,"551":1,"554":6,"556":5,"557":3,"559":5,"560":4,"561":1,"562":2,"564":2,"565":1,"566":3,"567":1,"568":1,"569":1,"571":2,"572":1,"574":5,"575":3,"578":1,"580":2,"586":1,"588":3,"589":1,"592":6,"593":2,"594":2,"597":3,"598":1,"601":1,"602":1,"606":1,"607":1,"608":1,"609":2,"610":3,"611":2,"613":1,"614":4,"615":1,"621":2,"623":1,"624":3,"625":1,"626":5,"627":5,"628":2,"629":1,"630":4,"635":2,"636":1,"638":3,"639":7,"641":5,"642":1,"655":1,"656":4,"657":4,"658":1,"660":1,"661":7,"662":3,"671":1,"672":3,"681":4,"683":1,"684":5,"685":2,"686":1,"687":2,"688":4,"689":3,"690":4,"691":1,"692":2,"697":2,"701":2,"703":9,"704":1,"705":1,"707":3,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"726":3,"727":1,"730":2,"734":2,"736":1,"737":4,"749":1,"751":1,"756":2,"760":2,"762":1,"763":4,"776":1,"778":1,"785":2,"789":4,"792":2,"794":1,"795":4,"808":1,"809":3,"810":1,"811":1,"817":2,"820":1,"822":2,"824":1,"825":4,"830":1,"840":1,"842":1,"849":2,"850":4,"853":1,"854":4,"857":2,"859":1,"860":4,"865":1,"875":1,"877":1,"884":2,"887":1,"888":4,"891":2,"893":1,"894":4,"899":1,"909":1,"911":1,"918":2,"921":1,"922":4,"925":2,"927":1,"928":4,"933":1,"943":1,"945":1,"952":2,"955":1,"956":4,"959":2,"961":1,"962":4,"967":1,"977":1,"979":1,"986":2,"990":4,"993":2,"995":1,"996":4,"1001":1,"1011":1,"1012":3,"1013":1,"1014":1,"1020":2,"1021":4,"1024":4,"1027":2,"1029":1,"1030":4,"1035":1,"1045":1,"1046":3,"1047":1,"1048":1,"1054":2,"1055":4,"1058":4,"1061":2,"1063":1,"1064":4,"1069":1,"1079":1,"1080":3,"1081":1,"1082":1,"1088":2,"1092":4,"1095":2,"1097":1,"1098":4,"1103":1,"1113":1,"1114":3,"1115":1,"1116":1,"1121":3,"1122":1,"1123":3,"1126":5,"1127":5,"1129":6,"1130":6,"1132":3,"1133":2,"1134":1,"1136":1,"1138":1,"1139":1,"1142":2,"1144":2,"1148":2,"1150":1,"1151":4,"1156":1,"1166":1,"1168":1,"1177":9,"1181":1,"1198":11,"1212":1,"1215":1,"1216":1,"1217":1,"1218":1,"1219":1,"1220":1,"1221":1,"1225":5,"1226":4,"1227":2,"1230":5,"1234":1,"1235":1,"1238":1,"1240":1,"1241":2,"1242":2,"1243":1,"1247":1,"1249":1,"1251":1,"1252":2,"1253":1,"1254":3,"1257":2,"1263":1,"1265":2,"1267":1,"1269":3,"1270":2,"1272":1,"1274":1,"1275":1,"1276":1,"1278":2,"1281":1,"1283":1,"1287":2,"1293":2,"1294":1,"1299":3,"1300":9,"1302":1,"1303":1,"1304":1,"1310":1,"1312":2,"1313":1,"1314":2,"1316":1,"1317":1,"1319":1,"1321":2,"1323":1,"1324":1,"1325":4,"1326":6,"1329":5,"1330":1,"1331":4,"1332":7,"1334":3,"1335":4,"1336":4,"1339":3,"1340":2,"1341":10,"1342":1,"1343":1,"1346":2,"1347":1,"1349":1,"1351":2,"1352":3,"1353":1,"1357":4,"1359":4,"1360":1,"1361":3,"1363":1,"1364":3,"1368":2,"1369":1,"1375":1,"1376":1,"1377":3,"1378":2,"1379":4,"1380":2,"1381":2,"1382":2,"1383":2,"1384":5,"1385":6,"1387":2,"1388":3,"1389":1,"1390":1,"1391":3,"1392":1,"1393":1,"1395":1,"1398":1,"1399":5,"1401":2,"1402":1,"1403":2,"1404":1,"1405":4,"1406":5,"1410":2,"1411":3,"1412":4,"1414":3,"1416":5,"1418":1,"1423":1,"1430":5,"1431":4,"1432":1,"1438":1,"1439":1,"1440":1,"1441":2,"1442":2,"1445":4,"1446":5,"1447":2,"1448":2,"1450":1,"1451":6,"1452":3,"1453":2,"1454":1,"1455":1,"1457":4,"1459":1,"1460":1,"1464":1,"1466":1,"1469":4,"1470":1,"1471":1,"1491":3,"1494":1,"1495":2,"1496":2,"1497":1,"1498":1,"1499":5,"1500":1,"1503":2,"1504":2,"1508":2,"1511":1,"1512":2,"1514":3,"1515":2,"1516":1,"1518":6,"1519":1,"1523":1,"1524":5,"1525":4,"1527":2,"1529":1,"1530":1,"1533":2,"1534":1,"1547":1,"1548":1,"1549":1,"1553":1,"1554":2,"1555":1,"1556":1,"1557":2,"1558":4,"1559":1,"1562":2,"1570":3,"1573":8,"1576":4,"1577":6,"1578":1,"1582":1,"1589":1,"1594":1,"1605":1,"1622":2,"1624":1,"1632":1,"1633":2,"1638":1,"1651":3,"1654":1,"1655":1,"1661":1,"1662":3,"1666":1,"1670":5,"1675":4,"1676":1,"1677":2,"1683":1,"1684":2,"1685":1,"1699":1,"1702":1,"1705":1,"1708":1,"1711":1,"1714":1,"1715":2,"1717":2,"1719":2,"1720":1,"1721":1,"1722":2,"1724":2,"1725":5,"1726":2,"1728":1,"1729":4,"1730":1,"1731":1,"1733":1,"1791":2,"1792":1,"1794":1,"1802":2,"1803":2,"1804":4,"1805":1,"1806":2,"1807":2,"1808":1,"1809":1,"1813":3,"1814":1,"1815":3,"1816":1,"1817":6,"1819":5,"1820":14,"1821":7,"1822":8,"1824":2,"1827":1,"1829":1,"1832":3,"1834":1,"1835":4,"1836":8,"1838":5,"1839":2,"1840":3,"1842":7,"1846":1,"1847":3,"1848":1,"1849":4,"1851":7,"1852":3,"1853":4,"1855":1,"1860":1,"1862":2,"1863":1,"1864":2,"1866":1,"1867":1,"1869":1,"1870":2,"1872":2,"1873":7,"1879":1,"1880":2,"1902":3,"1905":4,"1906":3,"1907":2,"1908":3,"1911":1,"1912":1,"1915":4,"1918":1,"1920":1,"1921":5,"1923":2,"1929":2,"1932":2,"1933":2,"1934":6,"1935":1,"1936":1,"1937":1,"1939":2,"1940":3,"1942":1,"1943":1,"1945":2,"1946":5,"1947":3,"1948":3,"1949":1,"1950":1,"1952":4,"1954":1,"1955":1,"1957":1,"1958":5,"1959":2,"2031":1,"2032":6,"2034":2,"2035":1,"2036":2,"2038":7,"2040":7,"2041":2,"2042":1,"2044":3,"2047":2,"2054":12,"2063":2,"2067":1,"2070":1,"2071":1,"2072":1,"2073":1,"2075":5,"2085":1,"2087":1,"2100":1,"2101":1,"2102":1,"2111":1,"2112":2,"2114":3,"2117":1,"2118":6,"2120":1,"2122":1,"2126":1,"2128":5,"2129":5,"2130":5,"2131":6,"2132":1,"2134":1,"2138":1,"2139":3,"2141":4,"2142":4,"2143":5,"2144":1,"2145":1,"2147":1,"2148":2,"2149":3,"2150":5,"2152":1,"2153":1,"2154":2,"2155":1,"2156":1,"2161":7,"2162":3,"2164":3,"2165":1,"2168":1,"2169":14,"2170":6,"2171":7,"2172":2,"2174":4,"2178":1,"2179":1,"2181":4,"2182":3,"2183":6,"2203":2,"2206":1,"2209":1,"2223":1,"2225":2,"2226":3,"2228":2,"2229":3,"2230":2,"2231":2,"2232":1,"2233":2,"2234":2,"2235":1,"2236":1,"2237":3,"2238":5,"2240":2,"2241":1,"2242":2,"2243":2,"2244":4,"2245":5,"2247":5,"2249":5,"2250":2,"2252":5,"2254":1,"2255":1,"2258":4,"2259":7,"2261":1,"2262":14,"2263":8,"2264":1,"2268":2,"2269":2,"2270":1,"2272":3,"2273":2,"2274":1,"2275":1,"2277":2,"2278":1,"2279":2,"2280":2,"2282":1,"2284":2,"2286":1,"2287":2,"2288":2,"2289":2,"2290":3,"2291":2,"2292":1,"2293":1,"2294":1,"2295":2,"2298":1,"2299":4,"2300":4,"2301":1,"2302":4,"2303":1,"2304":2,"2305":1,"2306":3,"2307":1,"2310":2,"2311":2,"2321":1,"2323":1,"2324":1,"2325":1,"2327":1,"2328":2,"2335":2,"2339":1,"2341":1,"2342":1,"2344":3,"2345":3,"2346":1,"2347":6,"2348":3,"2349":2,"2350":1,"2353":1,"2355":2,"2356":1,"2367":1,"2370":2,"2379":2,"2385":1,"2393":1,"2395":1,"2396":2,"2397":1,"2401":1,"2402":2,"2404":1,"2405":5,"2406":2,"2408":1,"2409":3,"2410":1,"2411":4,"2413":1,"2414":3,"2416":1,"2417":4,"2418":3,"2420":1,"2421":1,"2424":1,"2425":2,"2427":4,"2428":2,"2429":2,"2431":1,"2432":1,"2435":1,"2436":1,"2437":1,"2439":1,"2441":1,"2442":1,"2445":1,"2446":2,"2450":2,"2451":2,"2452":2,"2454":2,"2455":1,"2456":1,"2457":1,"2459":1,"2460":1,"2462":1,"2463":1,"2467":1,"2468":1,"2469":4,"2470":1,"2475":2,"2478":1,"2479":2,"2480":1,"2485":1,"2486":1,"2490":4,"2491":5,"2492":6,"2497":4,"2501":1,"2502":1,"2503":3,"2506":9,"2508":2,"2509":1,"2510":2,"2512":1,"2513":11,"2514":3,"2515":1,"2516":2,"2517":2,"2518":1,"2519":2,"2522":2,"2523":2,"2524":6,"2525":1,"2526":2,"2527":1,"2528":1,"2530":2,"2531":1,"2533":4,"2534":1,"2535":1,"2539":2,"2541":1,"2542":1,"2543":1,"2545":1,"2546":3,"2548":3,"2549":2,"2550":4,"2551":1,"2552":2,"2553":7,"2555":2,"2556":1,"2560":1,"2561":3,"2562":3,"2564":6,"2565":4,"2566":20,"2567":5,"2568":4,"2569":3,"2570":2,"2571":2,"2572":1,"2573":3,"2574":2,"2575":3,"2576":26,"2577":19,"2578":1,"2584":2,"2585":3,"2586":1,"2587":3,"2588":1,"2589":1,"2592":3,"2593":3,"2594":1,"2595":1,"2596":2,"2597":3,"2600":2,"2607":2,"2612":1,"2614":5,"2615":3,"2616":1,"2617":1,"2619":1,"2620":1,"2624":1,"2625":1,"2626":1,"2628":1,"2629":1,"2639":1,"2640":2,"2646":1,"2648":1,"2656":1,"2657":2,"2658":1,"2659":1,"2664":1,"2665":1,"2666":1,"2667":1,"2668":1,"2671":2,"2672":3,"2674":2,"2676":1,"2683":1,"2686":4,"2688":2,"2689":1,"2693":1,"2695":2,"2696":1,"2697":3,"2699":3,"2701":4,"2702":2,"2704":1,"2705":2,"2707":1,"2708":2,"2710":1,"2711":2,"2713":1,"2718":1,"2719":3,"2720":2,"2725":1,"2726":1,"2727":6,"2728":6,"2729":3,"2735":5,"2736":4,"2737":2,"2738":4,"2739":1,"2740":3,"2743":5,"2744":3,"2745":4,"2746":2,"2751":2,"2753":9,"2754":2,"2755":1,"2756":2,"2757":3}}],["oxidisation",{"2":{"2272":1}}],["oar",{"2":{"2147":1}}],["oops",{"2":{"1287":1}}],["oob",{"2":{"176":1,"222":2}}],["oemxx",{"2":{"628":2}}],["oj",{"2":{"616":1}}],["oven",{"2":{"523":1}}],["overcrowded",{"2":{"2307":1}}],["overhead",{"2":{"2129":1}}],["overheat",{"2":{"1573":1}}],["overhauls",{"2":{"352":1}}],["overhaul",{"0":{"157":1},"2":{"75":1,"94":1,"133":1,"134":1,"149":1,"160":1,"175":1,"176":2,"182":1,"266":1}}],["overlay",{"0":{"2408":1},"2":{"1842":4,"2042":1,"2402":2,"2406":1,"2408":1,"2443":1,"2444":1,"2445":1}}],["overlap",{"2":{"1510":1,"1528":1,"1808":4,"2042":1,"2567":1}}],["overlapping",{"0":{"1510":1,"1808":1},"2":{"98":1,"114":1,"236":1,"277":1,"1385":1,"1515":1,"1808":3,"2576":1}}],["overlook",{"2":{"473":1}}],["overwritable",{"2":{"1879":1}}],["overwritten",{"2":{"1814":1,"2235":1,"2350":1,"2522":1,"2524":1,"2541":1}}],["overwrites",{"2":{"2126":1}}],["overwrite",{"2":{"405":3,"1300":2,"1445":1,"1743":1,"1745":1,"1970":1,"1972":1,"2327":1,"2583":1,"2709":1}}],["overwriting",{"2":{"70":9,"1879":1,"1880":1}}],["overwhelmed",{"2":{"356":1}}],["overall",{"0":{"279":1},"1":{"280":1,"281":1,"282":1,"283":1,"284":1,"285":1,"286":1},"2":{"374":1,"484":1,"505":1,"657":1,"2033":1,"2573":1,"2718":1}}],["overnumpad",{"2":{"134":1}}],["overrride",{"2":{"703":1}}],["overrun",{"2":{"114":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"1189":1,"1192":1,"1207":1,"1209":1}}],["overridable",{"2":{"211":1,"1822":2,"2143":4}}],["overriding",{"0":{"1442":1,"2045":1},"1":{"1443":1},"2":{"99":1,"160":1,"191":1,"199":1,"277":1,"657":1,"689":2,"1445":1,"2042":1,"2405":1,"2671":1,"2749":1}}],["override",{"0":{"272":1,"1378":1,"1670":1},"2":{"50":1,"74":1,"90":2,"112":1,"114":1,"125":2,"134":1,"185":2,"188":1,"191":2,"199":1,"222":1,"272":7,"277":1,"377":1,"404":1,"500":1,"505":1,"506":1,"515":2,"567":1,"571":1,"580":4,"641":1,"683":1,"684":2,"685":2,"686":1,"689":1,"690":1,"691":1,"694":2,"702":1,"704":1,"705":1,"1132":1,"1133":1,"1177":1,"1198":1,"1398":1,"1416":1,"1446":1,"1560":2,"1568":4,"1655":2,"1657":5,"1658":2,"1659":2,"1660":1,"1661":1,"1662":1,"1663":4,"1665":19,"1666":7,"1668":3,"1669":3,"1670":17,"1671":4,"1672":2,"1673":4,"1674":2,"1675":2,"1676":1,"1716":1,"1822":1,"1933":1,"2045":1,"2076":1,"2103":1,"2143":1,"2261":2,"2475":1,"2523":1,"2524":2,"2525":1,"2567":1,"2576":2,"2673":1,"2702":1,"2737":1,"2749":1}}],["overridescontains",{"2":{"1657":1}}],["overrides",{"0":{"99":1,"580":1,"1309":1,"1655":1,"1656":1,"1658":1},"1":{"1656":1,"1657":1,"1658":1,"1659":2,"1660":2,"1661":2,"1662":2,"1663":1,"1664":1,"1665":1,"1666":1,"1667":1,"1668":1,"1669":1,"1670":1,"1671":1,"1672":1,"1673":1,"1674":1,"1675":1,"1676":1,"1677":1},"2":{"4":1,"50":1,"99":4,"114":2,"125":2,"160":1,"176":1,"185":2,"199":1,"222":1,"272":5,"502":2,"505":1,"511":1,"1303":1,"1309":1,"1655":2,"1657":2,"1658":1,"1663":2,"1665":4,"1666":2,"1668":1,"1669":3,"1670":1,"1672":1,"1673":2,"1675":2,"1676":4,"1677":2,"1855":1,"1873":1,"2042":3,"2261":1,"2523":1,"2558":1,"2724":1}}],["overridden",{"2":{"50":1,"498":1,"689":1,"707":1,"726":1,"1376":1,"1851":1,"1855":2,"2196":1,"2197":1,"2198":1}}],["overview",{"0":{"304":1,"312":1,"363":1,"428":1,"518":1,"552":1,"607":1,"1312":1,"2115":1,"2354":1,"2400":1,"2418":1},"1":{"313":1,"364":1,"365":1,"366":1,"367":1,"429":1,"1313":1,"1314":1,"2355":1,"2356":1,"2357":1,"2358":1,"2359":1,"2360":1,"2361":1,"2362":1,"2363":1,"2364":1,"2365":1,"2366":1,"2367":1,"2368":1,"2369":1,"2370":1,"2371":1,"2372":1,"2373":1,"2374":1,"2375":1,"2376":1,"2377":1,"2378":1,"2379":1,"2380":1,"2381":1,"2382":1,"2383":1,"2384":1,"2401":1,"2402":1,"2403":1,"2404":1,"2405":1,"2406":1,"2407":1,"2408":1},"2":{"112":1,"492":1,"550":1,"1266":1,"1334":1,"1345":1,"2172":1,"2259":1,"2409":1,"2535":1,"2555":1,"2725":1}}],["over",{"2":{"99":1,"114":2,"124":1,"140":1,"191":1,"243":1,"302":1,"317":1,"319":1,"320":1,"381":1,"434":1,"479":1,"501":1,"502":1,"516":1,"540":1,"566":1,"684":1,"685":1,"694":1,"1125":2,"1128":2,"1212":1,"1216":1,"1294":1,"1326":1,"1329":1,"1336":1,"1360":2,"1492":1,"1530":1,"1574":1,"1811":1,"1813":1,"1815":2,"1821":1,"1912":1,"1918":1,"1951":1,"2031":1,"2032":1,"2114":1,"2136":1,"2137":1,"2139":2,"2146":2,"2147":1,"2162":1,"2252":1,"2263":2,"2264":1,"2272":1,"2273":1,"2279":1,"2293":1,"2318":1,"2321":1,"2327":1,"2349":1,"2441":1,"2490":2,"2492":1,"2497":1,"2503":1,"2546":1,"2560":1,"2627":1,"2660":1,"2724":1,"2735":1,"2744":1}}],["overflows",{"2":{"114":1}}],["overflow",{"0":{"11":1},"2":{"11":3,"114":1,"149":1,"236":1}}],["ohm",{"2":{"786":2,"789":18,"850":2,"854":18,"885":2,"888":18,"919":2,"922":18,"953":2,"956":18,"987":2,"990":18,"1021":2,"1024":18,"1055":2,"1058":18,"1089":2,"1092":18}}],["oh",{"0":{"442":1},"1":{"443":1,"444":1,"445":1,"446":1,"447":1}}],["okay",{"2":{"1260":1,"1804":1,"2566":1}}],["ok",{"2":{"331":1,"396":2,"458":1,"472":1,"473":1,"479":1,"482":1,"554":1,"698":1,"1287":2,"1363":2,"1553":1,"2347":1,"2425":4,"2469":4,"2752":1}}],["oq",{"2":{"266":1}}],["o",{"2":{"222":1,"266":1,"277":2,"313":1,"379":1,"380":1,"388":2,"404":1,"433":2,"441":1,"513":2,"530":2,"563":1,"1221":1,"1932":1,"1934":1,"2148":1,"2153":4,"2268":1,"2269":2,"2275":2,"2284":1,"2355":3,"2386":3,"2407":1,"2528":1,"2575":8}}],["odd",{"2":{"1907":1,"2311":1}}],["odelia",{"2":{"211":1}}],["odin",{"2":{"191":1,"211":2}}],["og60",{"2":{"236":1}}],["og",{"2":{"211":1}}],["ogr",{"2":{"211":1}}],["ogurec",{"2":{"143":2}}],["owl8",{"2":{"143":2}}],["owners",{"2":{"2719":1}}],["owned",{"2":{"191":1}}],["owns",{"2":{"2581":1}}],["own",{"0":{"1250":1,"1330":1,"2474":1},"2":{"30":1,"33":1,"37":1,"43":1,"107":1,"113":1,"114":2,"134":1,"172":1,"228":1,"273":1,"318":1,"352":1,"453":1,"499":1,"556":1,"559":1,"563":1,"570":1,"602":1,"641":1,"692":1,"1278":1,"1304":1,"1330":2,"1376":1,"1384":1,"1393":2,"1398":2,"1457":1,"1469":1,"1511":1,"1560":1,"1715":1,"1851":1,"1855":1,"1921":2,"1941":2,"2108":2,"2162":1,"2177":1,"2181":1,"2183":1,"2228":1,"2229":1,"2230":1,"2243":1,"2263":2,"2282":1,"2311":1,"2324":1,"2346":1,"2397":1,"2409":1,"2422":1,"2427":1,"2428":1,"2441":1,"2446":1,"2470":1,"2473":1,"2475":1,"2491":1,"2524":1,"2525":1,"2526":1,"2564":3,"2566":2,"2568":1,"2571":1,"2574":1,"2585":1,"2592":2,"2615":1,"2627":1,"2701":1,"2728":1,"2739":1}}],["o3",{"2":{"114":1}}],["opinions",{"2":{"2750":1}}],["opmode",{"2":{"704":2}}],["opqr",{"2":{"266":1}}],["opcode",{"2":{"222":1}}],["opposed",{"2":{"630":1,"1303":1}}],["opposite",{"2":{"202":1,"1197":1,"1915":1,"2339":1}}],["opportune",{"2":{"263":1}}],["opportunity",{"2":{"203":1}}],["opus",{"2":{"159":2}}],["oper",{"2":{"2355":2,"2392":2}}],["operate",{"2":{"432":1,"1126":2,"1238":1,"1577":1,"2347":1}}],["operates",{"2":{"82":1,"428":1,"641":1,"1219":1,"1804":1,"2122":1,"2584":1,"2702":1}}],["operational",{"2":{"684":1}}],["operation",{"0":{"698":1,"2051":1},"2":{"630":1,"641":1,"1125":1,"1128":1,"1130":1,"1134":1,"1271":1,"1842":1,"2477":1,"2515":1,"2543":2,"2577":1}}],["operations",{"0":{"348":1,"424":1},"1":{"349":1,"350":1},"2":{"266":1,"424":1,"432":1,"698":1,"1821":1,"2432":1,"2573":1,"2576":11,"2577":4,"2581":1}}],["operating",{"0":{"367":1,"2323":1,"2509":1},"2":{"176":1,"367":1,"403":1,"1273":1,"1802":1,"1881":1,"2146":1,"2177":1,"2250":1,"2262":2,"2322":1,"2323":1,"2326":1,"2431":1,"2556":1,"2701":1}}],["operators",{"2":{"1300":2}}],["operator",{"2":{"222":1,"432":1,"470":1,"701":1,"1300":1}}],["opening",{"0":{"616":1},"2":{"453":2,"462":1,"554":1,"558":1,"560":1,"1353":1,"1921":1,"2079":1,"2108":1,"2452":1,"2490":1,"2564":1}}],["opensource",{"2":{"551":1,"1279":2}}],["opens",{"2":{"373":1,"453":2,"2148":1,"2460":1,"2615":1}}],["openocd",{"0":{"328":1},"2":{"322":1,"328":1,"331":1,"335":3,"2351":3,"2353":1}}],["opendeck",{"2":{"277":1}}],["opendrain",{"2":{"134":1,"707":2}}],["opened",{"2":{"275":1,"291":1,"1923":1,"2508":1,"2569":1}}],["open",{"0":{"1225":1,"2423":1},"2":{"149":1,"243":1,"265":1,"322":1,"324":1,"331":3,"352":1,"389":1,"390":1,"391":1,"401":1,"447":1,"485":1,"553":1,"554":1,"559":1,"560":2,"561":1,"585":1,"609":1,"613":1,"624":1,"627":1,"628":2,"696":2,"1126":1,"1225":2,"1260":2,"1261":2,"1263":1,"1264":1,"1300":1,"1830":1,"1921":1,"2109":3,"2110":3,"2113":1,"2144":2,"2263":1,"2277":1,"2279":1,"2286":1,"2311":1,"2313":1,"2317":1,"2347":1,"2349":1,"2355":3,"2382":3,"2393":3,"2398":2,"2404":1,"2411":2,"2420":1,"2423":1,"2437":1,"2452":3,"2454":1,"2460":2,"2468":4,"2476":1,"2477":1,"2479":1,"2480":1,"2492":1,"2498":1,"2502":1,"2503":1,"2508":1,"2511":2,"2512":2,"2553":1,"2566":1,"2578":1,"2670":2,"2712":3,"2716":1,"2728":1}}],["opt",{"0":{"273":1},"2":{"124":3,"199":1,"273":1,"277":1,"514":1,"641":2,"1384":2,"1385":1,"2245":1,"2247":1,"2300":2,"2374":1,"2410":1,"2513":1}}],["optimal",{"2":{"1430":1,"1576":1,"1577":1}}],["optimisation",{"2":{"222":1,"236":1}}],["optimisations",{"2":{"149":1,"2513":2}}],["optimise",{"2":{"191":1}}],["optimized",{"2":{"191":1}}],["optimize",{"2":{"114":1,"134":1,"149":1,"236":1}}],["optimizations",{"0":{"50":1,"64":1,"75":1,"94":1,"214":1,"215":1}}],["optimization",{"2":{"10":2,"50":1,"513":1,"2674":1,"2705":1}}],["optical",{"2":{"114":1,"149":3,"176":1,"199":1,"1835":1,"1849":1}}],["option+right",{"2":{"2183":1}}],["option+left",{"2":{"2183":1}}],["option=com",{"2":{"1242":1}}],["optional",{"0":{"1579":1,"2421":1,"2474":1},"2":{"262":1,"282":1,"349":1,"365":1,"366":1,"370":1,"371":1,"453":2,"454":1,"510":1,"607":1,"610":4,"1376":5,"1464":3,"1518":1,"1676":1,"1730":1,"1835":4,"1836":9,"1838":4,"1839":17,"1840":3,"1842":10,"1843":5,"1844":3,"1845":2,"1847":4,"1849":7,"1851":14,"1852":5,"1868":5,"1954":1,"2032":1,"2231":1,"2238":1,"2266":1,"2457":1,"2466":1,"2501":1,"2506":1,"2510":4,"2513":2,"2539":1,"2575":1,"2585":4,"2592":3,"2723":1}}],["optionally",{"2":{"211":1,"365":1,"366":1,"1134":1,"1380":1,"1387":1,"1390":1,"1392":1,"1558":1,"1908":1,"1930":1,"1932":1,"2066":1,"2150":1,"2161":1,"2181":1,"2230":1,"2240":1,"2513":1,"2570":1}}],["options",{"0":{"425":1,"426":1,"502":1,"507":1,"508":1,"511":1,"513":1,"514":1,"515":1,"1308":1,"1379":1,"1493":1,"1570":1,"1662":2,"1715":1,"1730":1,"1829":1,"1868":1,"1954":1,"2128":1,"2129":1,"2131":1,"2263":1,"2264":1,"2561":1,"2562":1,"2726":1},"1":{"509":1,"510":1,"511":1,"2727":1,"2728":1,"2729":1,"2730":1,"2731":1,"2732":1,"2733":1,"2734":1,"2735":1,"2736":1,"2737":1,"2738":1,"2739":1,"2740":1,"2741":1},"2":{"83":1,"109":1,"114":2,"128":1,"134":1,"138":1,"149":1,"152":1,"194":1,"198":1,"206":1,"222":1,"234":1,"236":2,"249":1,"335":1,"374":1,"393":1,"394":1,"395":1,"396":1,"401":1,"402":1,"403":1,"411":1,"448":1,"498":1,"500":1,"503":1,"504":1,"508":1,"514":1,"515":1,"607":1,"609":2,"626":1,"641":2,"689":1,"690":1,"691":1,"1127":1,"1130":1,"1135":1,"1240":1,"1280":1,"1287":2,"1298":2,"1308":1,"1349":2,"1379":1,"1492":1,"1496":1,"1499":1,"1515":1,"1518":1,"1520":1,"1554":1,"1556":1,"1568":1,"1570":1,"1658":1,"1662":3,"1665":5,"1668":1,"1670":2,"1671":3,"1672":1,"1714":2,"1715":1,"1716":1,"1802":1,"1807":1,"1817":1,"1820":1,"1832":2,"1852":3,"1867":1,"1950":1,"1958":1,"1959":1,"2032":1,"2038":1,"2044":1,"2112":1,"2126":1,"2127":1,"2128":1,"2129":1,"2148":1,"2161":1,"2259":2,"2260":2,"2262":4,"2264":2,"2274":1,"2299":2,"2300":1,"2304":1,"2398":1,"2411":1,"2416":1,"2468":1,"2506":3,"2524":1,"2539":1,"2555":3,"2561":2,"2562":2,"2566":3,"2574":1,"2575":2,"2647":1,"2704":1,"2706":1,"2708":1,"2725":1,"2726":2,"2749":1,"2753":1}}],["option",{"0":{"608":1,"1671":1},"1":{"609":1,"610":1,"611":1,"612":1,"613":1,"614":1},"2":{"14":1,"32":1,"50":1,"74":1,"75":1,"87":1,"103":1,"114":3,"126":1,"132":1,"134":2,"176":1,"191":1,"194":1,"195":1,"211":2,"222":1,"234":1,"236":1,"246":1,"249":2,"266":1,"271":1,"454":1,"505":1,"609":2,"614":1,"1219":1,"1230":1,"1281":1,"1288":1,"1330":1,"1380":1,"1385":1,"1393":1,"1405":1,"1406":1,"1499":1,"1503":2,"1560":1,"1580":1,"1662":1,"1665":5,"1668":1,"1670":1,"1671":6,"1673":1,"1674":2,"1814":1,"1850":1,"1852":4,"1948":1,"2034":1,"2118":1,"2126":2,"2127":3,"2129":1,"2131":5,"2133":1,"2149":1,"2161":5,"2183":1,"2262":4,"2274":1,"2300":8,"2347":1,"2355":2,"2390":2,"2421":1,"2469":1,"2506":4,"2548":1,"2560":1,"2570":1,"2574":1,"2577":2,"2610":1,"2705":1,"2735":5,"2736":3}}],["ould",{"2":{"1943":1}}],["ou",{"2":{"1494":3,"2361":3}}],["ouput",{"2":{"1440":3}}],["our",{"2":{"76":1,"114":2,"130":1,"164":1,"167":1,"323":1,"331":1,"334":1,"352":1,"430":1,"432":1,"433":1,"445":1,"446":2,"447":1,"453":1,"455":3,"457":1,"462":1,"470":2,"479":1,"483":2,"485":1,"530":1,"533":1,"555":2,"557":2,"560":1,"562":3,"572":1,"576":1,"606":1,"624":1,"641":1,"1258":1,"1260":1,"1344":1,"1359":2,"1452":1,"2170":1,"2171":3,"2274":1,"2292":1,"2311":2,"2317":2,"2405":4,"2408":2,"2417":1,"2477":1,"2479":1,"2569":1,"2614":6,"2615":4,"2620":1,"2667":1,"2713":2,"2714":1,"2746":4,"2747":2,"2748":3}}],["outlines",{"2":{"2546":1}}],["outlined",{"2":{"2129":1,"2548":1}}],["outs",{"2":{"2541":1}}],["outside",{"2":{"22":1,"182":1,"434":1,"460":1,"1129":1,"1303":1,"1344":1,"1719":1,"1845":1,"1855":1,"2126":1,"2441":1,"2738":1,"2746":1}}],["outright",{"2":{"2502":1,"2516":1,"2708":1}}],["outbound",{"2":{"2130":1}}],["outer",{"2":{"1684":1,"1844":1,"2033":1,"2400":1,"2686":1}}],["out3",{"2":{"734":2,"760":2}}],["out2",{"2":{"734":2,"760":2}}],["out1",{"2":{"734":3,"760":3}}],["outwardly",{"2":{"198":1}}],["outdated",{"2":{"149":1,"352":1,"606":1,"2719":1}}],["outputted",{"2":{"2566":1}}],["outputting",{"2":{"432":1,"434":1,"554":1}}],["output=",{"2":{"222":1}}],["output+keymap",{"2":{"222":1}}],["outputs",{"2":{"93":1,"580":1,"1230":1,"1387":1,"1494":1,"2262":1,"2273":1,"2710":2}}],["outputselect",{"2":{"50":1,"149":1}}],["output",{"0":{"2439":1},"2":{"10":2,"65":1,"75":1,"92":1,"99":1,"114":5,"119":1,"149":2,"176":1,"188":1,"191":4,"199":3,"203":1,"211":2,"222":1,"236":1,"243":3,"249":1,"316":1,"349":1,"379":1,"380":1,"388":1,"404":1,"432":1,"433":1,"435":2,"441":2,"484":1,"502":1,"506":2,"576":6,"580":1,"586":1,"628":1,"661":3,"669":1,"672":3,"684":1,"696":11,"734":1,"737":4,"760":1,"763":4,"792":1,"795":4,"822":1,"825":4,"857":1,"860":4,"891":1,"894":4,"925":1,"928":4,"959":1,"962":4,"993":1,"996":4,"1027":1,"1030":4,"1061":1,"1064":4,"1095":1,"1098":4,"1138":1,"1148":1,"1151":4,"1225":1,"1230":3,"1245":3,"1252":1,"1253":1,"1255":1,"1385":3,"1390":1,"1394":1,"1404":1,"1440":2,"1461":1,"1462":1,"1466":1,"1494":3,"1527":1,"1529":1,"1562":1,"1564":2,"1565":2,"1567":1,"1630":1,"1631":1,"1817":1,"1822":1,"1835":1,"1863":1,"1915":2,"2059":1,"2060":1,"2125":1,"2141":1,"2143":1,"2150":1,"2181":2,"2229":1,"2231":1,"2238":1,"2262":5,"2263":1,"2273":1,"2347":1,"2353":1,"2361":3,"2422":1,"2425":2,"2439":1,"2453":1,"2469":1,"2477":1,"2519":1,"2528":1,"2574":3,"2575":23,"2615":1,"2674":1,"2693":1,"2728":1,"2730":1,"2734":1,"2756":1}}],["out",{"0":{"123":1,"1697":1,"2455":1,"2473":1,"2704":1},"1":{"2474":1,"2475":1,"2705":1,"2706":1,"2707":1,"2708":1,"2709":1,"2710":1,"2711":1},"2":{"6":1,"10":1,"21":1,"49":1,"50":1,"93":1,"113":1,"114":3,"119":1,"124":1,"133":2,"134":5,"149":2,"160":1,"176":1,"191":4,"194":1,"199":4,"228":1,"236":1,"249":1,"278":1,"321":1,"335":1,"356":1,"358":1,"367":1,"373":1,"401":1,"405":1,"434":1,"440":2,"462":1,"468":1,"482":1,"505":4,"510":1,"527":1,"529":1,"557":1,"561":2,"588":2,"606":2,"617":1,"654":1,"659":1,"681":1,"684":1,"693":1,"1138":1,"1243":1,"1287":2,"1326":1,"1341":3,"1356":1,"1359":2,"1363":2,"1385":1,"1387":1,"1397":1,"1504":1,"1527":1,"1684":1,"1728":13,"1729":1,"1817":4,"1822":3,"1839":1,"1848":1,"1855":1,"1863":1,"1881":1,"1949":20,"1952":1,"1954":1,"2036":1,"2048":1,"2061":1,"2078":1,"2079":1,"2081":1,"2082":1,"2083":1,"2084":1,"2085":1,"2086":1,"2087":1,"2088":1,"2089":1,"2091":1,"2093":1,"2095":1,"2097":1,"2118":1,"2130":3,"2131":1,"2132":1,"2133":1,"2134":1,"2143":3,"2169":1,"2172":1,"2255":4,"2262":3,"2274":1,"2279":1,"2303":1,"2311":1,"2316":1,"2317":1,"2328":1,"2355":2,"2392":2,"2417":1,"2423":1,"2428":1,"2455":2,"2472":1,"2475":1,"2480":3,"2510":1,"2534":1,"2541":1,"2549":1,"2564":2,"2566":3,"2574":1,"2575":2,"2576":1,"2711":2,"2712":2,"2723":1,"2744":1,"2745":1,"2753":3,"2757":1}}],["otype",{"2":{"707":2}}],["otaku",{"2":{"143":4}}],["otg2",{"2":{"2548":1}}],["otg1",{"2":{"176":1,"2548":1}}],["otg",{"2":{"65":1,"191":1}}],["others",{"2":{"114":1,"134":1,"149":1,"160":1,"176":1,"191":1,"199":1,"211":1,"222":1,"236":1,"263":1,"277":1,"474":1,"559":1,"852":1,"1023":1,"1057":1,"1128":1,"1226":2,"1298":1,"1339":1,"1380":1,"1384":1,"1393":1,"1403":1,"1416":1,"1466":1,"2031":1,"2260":1,"2276":1,"2476":1,"2544":1}}],["other",{"0":{"367":1,"511":1,"1277":1,"1816":1,"2140":1,"2281":1,"2416":1,"2509":1,"2736":1},"2":{"30":1,"33":1,"50":1,"98":1,"114":2,"128":1,"134":2,"142":1,"152":2,"153":1,"163":1,"173":1,"174":1,"175":1,"176":2,"191":2,"194":8,"199":1,"201":2,"206":2,"210":1,"213":1,"220":1,"229":1,"234":1,"244":1,"278":2,"317":1,"331":2,"334":1,"341":1,"367":1,"430":1,"446":1,"448":1,"453":1,"470":1,"481":1,"485":1,"498":1,"501":1,"503":1,"505":5,"541":1,"545":1,"548":1,"560":1,"572":1,"586":1,"597":1,"598":1,"606":1,"609":2,"615":1,"628":1,"656":1,"663":1,"681":1,"701":1,"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"1132":1,"1133":1,"1142":1,"1177":1,"1190":1,"1193":1,"1223":1,"1227":1,"1236":2,"1240":1,"1242":2,"1255":1,"1265":2,"1271":1,"1300":6,"1303":1,"1330":1,"1332":2,"1335":2,"1338":2,"1340":2,"1341":3,"1343":1,"1344":1,"1353":1,"1355":1,"1359":5,"1361":1,"1383":2,"1385":1,"1387":1,"1390":1,"1391":1,"1398":1,"1401":1,"1412":2,"1418":1,"1441":1,"1442":1,"1445":1,"1446":2,"1459":2,"1463":1,"1499":3,"1524":1,"1525":2,"1551":1,"1554":1,"1563":1,"1596":1,"1666":1,"1668":1,"1671":1,"1673":1,"1674":1,"1676":1,"1686":1,"1791":1,"1803":1,"1820":1,"1832":2,"1876":1,"1878":2,"1932":1,"1935":1,"1936":1,"1937":1,"1939":1,"1940":1,"1941":1,"1943":1,"2042":2,"2044":1,"2061":1,"2063":1,"2105":1,"2112":2,"2113":1,"2114":1,"2128":1,"2145":1,"2169":1,"2170":1,"2171":1,"2182":1,"2183":1,"2226":1,"2262":1,"2263":2,"2264":1,"2268":1,"2273":1,"2279":1,"2284":1,"2292":1,"2299":1,"2301":1,"2302":1,"2311":2,"2341":1,"2348":1,"2350":1,"2367":1,"2396":1,"2402":3,"2403":1,"2405":1,"2410":1,"2427":1,"2475":1,"2490":1,"2492":2,"2503":1,"2510":1,"2516":1,"2518":1,"2529":1,"2539":1,"2541":1,"2550":1,"2564":3,"2566":2,"2567":5,"2571":1,"2576":10,"2577":1,"2603":1,"2605":1,"2637":1,"2645":1,"2657":1,"2672":1,"2674":2,"2702":1,"2712":1,"2718":1,"2719":2,"2720":1,"2729":6,"2731":2,"2732":3,"2733":2,"2735":3,"2736":7,"2739":1,"2741":1,"2743":4,"2754":1}}],["otherwise",{"2":{"28":1,"31":1,"209":1,"327":1,"349":1,"473":1,"567":1,"568":1,"593":1,"594":1,"597":1,"614":1,"627":1,"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"1190":1,"1193":1,"1341":1,"1471":1,"1525":1,"1553":1,"1621":1,"1670":1,"1743":1,"1745":1,"1933":1,"1949":1,"1970":1,"1972":1,"2045":1,"2131":1,"2152":1,"2161":2,"2182":1,"2237":1,"2240":1,"2242":1,"2263":1,"2353":1,"2450":3,"2596":1,"2603":1,"2737":1}}],["omit",{"2":{"628":1,"689":2,"1530":1,"2347":1}}],["omitted",{"2":{"468":1,"502":2,"511":1,"585":1,"2252":1}}],["omkbd",{"2":{"143":12,"149":2}}],["omrontkl",{"2":{"57":2}}],["omnikey",{"2":{"37":2,"159":2,"160":1}}],["oc7",{"2":{"1793":1,"2371":1}}],["oc6",{"2":{"1793":1,"2371":1}}],["oc5",{"2":{"1793":1,"2371":1}}],["oc4",{"2":{"1793":1,"2371":1}}],["oc3",{"2":{"1793":1,"2371":1}}],["oc2",{"2":{"1793":1,"1794":1,"2371":1}}],["oc1",{"2":{"1793":1,"2371":1}}],["oc0",{"2":{"1793":1,"2371":1}}],["ocn1",{"2":{"1793":1,"2371":1}}],["ocn2",{"2":{"1793":1,"2371":1}}],["ocean",{"2":{"519":1,"527":1}}],["oceanographer",{"2":{"211":1}}],["occupied",{"2":{"1359":1}}],["occupy",{"2":{"1177":1}}],["occupying",{"2":{"701":1}}],["occurrence",{"2":{"2728":1}}],["occurred",{"2":{"315":1,"588":2,"1326":1,"1329":4}}],["occured",{"2":{"588":1}}],["occurs",{"2":{"94":1,"598":1,"689":1,"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"789":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1190":1,"1193":1,"1330":1,"2128":2,"2131":1,"2584":1}}],["occur",{"2":{"11":1,"49":1,"556":1,"580":2,"1572":1,"1855":1,"1857":1,"2129":1,"2130":1,"2441":1,"2539":1,"2577":1}}],["occasionally",{"2":{"1276":1,"1442":1}}],["occasional",{"2":{"597":1}}],["occasion",{"2":{"352":1,"1416":1}}],["ocd",{"2":{"191":1}}],["octet",{"2":{"2600":8}}],["octets",{"2":{"2593":1,"2599":1,"2600":3}}],["octd",{"2":{"1787":1,"1793":1,"2371":1}}],["octu",{"2":{"1787":1,"1793":1,"2371":1}}],["octave",{"2":{"1403":1,"1787":1,"1793":96,"1794":1,"2371":96}}],["octaves",{"2":{"1403":1}}],["octagon",{"2":{"249":1,"266":1}}],["oct",{"2":{"55":2,"340":2}}],["oscillator",{"2":{"1817":1}}],["oses",{"2":{"1673":1,"1674":1,"1675":1}}],["osdn",{"2":{"358":1}}],["osx",{"0":{"1279":1,"1280":1,"1283":1},"2":{"188":2,"191":2,"1279":2,"1280":2,"1281":1,"1283":1,"1355":5}}],["os",{"0":{"1297":1,"1565":1,"1824":1,"1827":1},"1":{"1825":1,"1826":1,"1827":1,"1828":1,"1829":1,"1830":1,"1831":1},"2":{"65":1,"160":2,"199":1,"211":1,"249":3,"324":1,"358":1,"367":2,"1254":1,"1362":1,"1430":1,"1499":2,"1533":1,"1565":1,"1670":1,"1675":1,"1824":4,"1825":10,"1826":14,"1827":1,"1828":1,"1829":3,"1830":4,"2076":1,"2156":1,"2176":1,"2183":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":2,"2245":2,"2247":2,"2249":2,"2263":1,"2311":1,"2319":1,"2326":4,"2379":3,"2383":1,"2393":1,"2429":1,"2457":1,"2490":3,"2523":1,"2666":1,"2697":2,"2701":1}}],["osms",{"2":{"211":1}}],["osm",{"2":{"38":1,"236":1,"1385":3,"1500":1,"1654":1,"2379":1,"2410":1,"2490":5,"2491":1}}],["osl",{"2":{"38":1,"199":1,"236":1,"1335":1,"1865":1,"2367":1,"2379":1,"2490":2,"2491":1}}],["olkb",{"0":{"2602":1,"2715":1},"1":{"2603":1,"2604":1,"2605":1,"2606":1},"2":{"551":1,"624":3,"2172":1,"2230":2,"2280":1,"2317":1,"2715":1}}],["olly",{"2":{"211":1,"249":2}}],["oledunder",{"2":{"55":1}}],["oledback",{"2":{"55":1}}],["oleds",{"2":{"31":1,"34":1,"114":1,"153":1,"229":1,"230":1,"232":1,"248":1,"2576":1,"2706":1}}],["oled",{"0":{"33":1,"125":1,"210":1,"220":1,"230":1,"232":1,"1810":1,"1813":1,"1820":1,"1822":1,"2287":1,"2710":1},"1":{"34":1,"1811":1,"1812":1,"1813":1,"1814":1,"1815":1,"1816":1,"1817":1,"1818":1,"1819":1,"1820":1,"1821":2,"1822":1,"1823":1},"2":{"30":1,"31":11,"33":2,"34":8,"49":1,"55":11,"62":1,"63":1,"92":2,"93":2,"114":4,"125":6,"128":2,"134":7,"153":1,"176":4,"191":3,"210":4,"211":2,"220":3,"221":2,"222":2,"230":4,"232":4,"236":3,"248":2,"249":2,"511":2,"700":1,"1175":1,"1448":2,"1811":2,"1812":1,"1813":15,"1814":5,"1815":6,"1816":15,"1817":28,"1818":2,"1819":10,"1820":29,"1821":12,"1822":77,"1823":17,"2129":6,"2280":1,"2284":1,"2287":2,"2566":1,"2573":5,"2576":1,"2697":2,"2710":5}}],["oldest",{"2":{"515":1}}],["older",{"2":{"157":1,"338":1,"1239":1,"1254":1,"1932":1,"2036":1,"2230":1,"2404":1,"2405":1,"2523":1}}],["old",{"0":{"220":1},"2":{"10":1,"22":1,"37":1,"38":1,"43":1,"46":1,"67":1,"86":1,"102":1,"122":1,"125":1,"134":1,"143":1,"149":2,"156":1,"157":1,"159":1,"168":1,"173":1,"174":1,"181":1,"182":2,"183":3,"185":1,"191":1,"194":1,"195":1,"197":1,"206":1,"207":1,"217":1,"219":1,"220":1,"221":6,"222":3,"226":1,"232":2,"234":1,"236":1,"241":1,"243":1,"244":1,"253":1,"262":1,"270":1,"271":1,"354":2,"453":1,"602":1,"1276":1,"1304":1,"1527":1,"1823":1,"1853":2,"1855":1,"2036":1,"2113":1,"2118":1,"2162":1,"2282":1,"2474":2,"2564":1,"2710":1}}],["obtain",{"2":{"1902":1}}],["obtaining",{"2":{"363":1}}],["objs",{"2":{"2262":1,"2299":1}}],["obj",{"2":{"614":2}}],["objects",{"2":{"374":1,"457":1,"474":2,"1356":2,"1357":1,"2255":8,"2615":1,"2684":1}}],["objective",{"2":{"323":1,"2236":1}}],["object",{"0":{"1357":1},"2":{"73":1,"236":1,"374":1,"396":1,"411":1,"430":2,"433":2,"474":1,"475":1,"479":1,"609":1,"611":1,"1357":1,"1921":1,"2262":2,"2577":2,"2615":7,"2616":2,"2750":1}}],["observe",{"2":{"557":1,"1435":1}}],["obsolete",{"0":{"2113":1},"2":{"3":1,"15":1}}],["obviously",{"2":{"1416":1,"1454":1,"2701":1}}],["obvious",{"2":{"249":3,"453":2,"455":2,"467":1,"560":1,"2305":1,"2311":1}}],["obliterated75",{"2":{"211":1}}],["obfuscate",{"2":{"199":1}}],["obosob",{"2":{"143":2,"149":2}}],["obdev",{"2":{"21":1,"1242":1}}],["onboard",{"2":{"592":1,"681":1,"683":1,"1221":1,"1222":1,"1223":1,"2032":2,"2061":1,"2518":1,"2530":1}}],["onto",{"2":{"459":1,"1258":1,"1287":1,"1445":1,"2270":1,"2274":1,"2277":1,"2329":1,"2333":1,"2342":1,"2349":1,"2718":1,"2728":1}}],["onyx",{"2":{"211":1}}],["online",{"2":{"182":1,"2417":1,"2427":1,"2714":1}}],["only=true",{"2":{"441":3}}],["only",{"0":{"450":1,"532":1,"2286":1,"2444":1},"2":{"4":1,"14":1,"69":1,"83":1,"87":1,"98":1,"103":2,"107":1,"114":1,"116":1,"120":1,"126":2,"134":1,"169":1,"174":1,"184":1,"191":2,"194":3,"201":1,"221":3,"222":1,"233":1,"236":2,"244":1,"266":1,"317":1,"335":1,"340":2,"341":1,"343":1,"344":2,"345":2,"347":2,"349":2,"350":2,"352":1,"354":1,"358":2,"359":1,"360":1,"375":3,"376":1,"400":2,"441":1,"454":1,"479":1,"496":1,"499":1,"505":1,"510":1,"511":2,"516":1,"580":1,"606":1,"617":1,"623":1,"630":1,"635":1,"636":1,"641":2,"655":1,"658":1,"659":1,"660":1,"661":1,"686":1,"692":1,"707":1,"734":1,"737":4,"741":1,"743":1,"745":1,"747":1,"749":1,"751":1,"760":1,"763":4,"768":1,"770":1,"772":1,"774":1,"776":1,"778":1,"792":1,"795":4,"800":1,"802":1,"804":1,"806":1,"808":1,"810":1,"822":1,"825":4,"832":1,"834":1,"836":1,"838":1,"840":1,"842":1,"850":1,"853":1,"857":1,"860":4,"867":1,"869":1,"871":1,"873":1,"875":1,"877":1,"885":1,"887":1,"891":1,"894":4,"901":1,"903":1,"905":1,"907":1,"909":1,"911":1,"919":1,"921":1,"925":1,"928":4,"935":1,"937":1,"939":1,"941":1,"943":1,"945":1,"953":1,"955":1,"959":1,"962":4,"969":1,"971":1,"973":1,"975":1,"977":1,"979":1,"993":1,"996":4,"1003":1,"1005":1,"1007":1,"1009":1,"1011":1,"1013":1,"1027":1,"1030":4,"1037":1,"1039":1,"1041":1,"1043":1,"1045":1,"1047":1,"1061":1,"1064":4,"1071":1,"1073":1,"1075":1,"1077":1,"1079":1,"1081":1,"1095":1,"1098":4,"1105":1,"1107":1,"1109":1,"1111":1,"1113":1,"1115":1,"1123":1,"1126":2,"1127":1,"1130":2,"1133":2,"1134":1,"1148":1,"1151":4,"1158":1,"1160":1,"1162":1,"1164":1,"1166":1,"1168":1,"1179":1,"1200":1,"1219":1,"1220":1,"1221":1,"1222":1,"1223":1,"1224":3,"1225":1,"1226":1,"1227":1,"1229":1,"1230":3,"1236":1,"1239":1,"1250":2,"1254":1,"1265":1,"1273":1,"1278":1,"1300":1,"1302":2,"1312":1,"1316":1,"1319":1,"1320":2,"1326":2,"1329":1,"1331":2,"1332":3,"1335":3,"1336":1,"1338":1,"1357":1,"1360":1,"1376":1,"1384":1,"1390":1,"1394":1,"1396":1,"1397":1,"1401":1,"1416":1,"1431":2,"1440":1,"1441":1,"1445":1,"1454":1,"1459":1,"1466":1,"1467":1,"1469":1,"1470":1,"1471":1,"1491":1,"1492":1,"1494":3,"1495":1,"1503":1,"1510":1,"1517":1,"1518":6,"1521":1,"1524":1,"1525":1,"1548":1,"1558":1,"1559":1,"1562":2,"1596":1,"1654":1,"1670":2,"1671":1,"1673":1,"1677":1,"1685":1,"1725":1,"1731":1,"1743":1,"1745":1,"1787":1,"1802":1,"1805":1,"1808":1,"1821":3,"1833":1,"1844":1,"1851":1,"1852":5,"1853":1,"1854":1,"1855":2,"1857":1,"1859":1,"1862":1,"1866":2,"1879":1,"1908":1,"1938":1,"1946":1,"1948":1,"1955":1,"1958":1,"1970":1,"1972":1,"2036":1,"2042":1,"2072":1,"2075":1,"2102":1,"2106":1,"2107":1,"2128":2,"2129":2,"2130":1,"2133":1,"2149":1,"2150":1,"2152":1,"2161":3,"2182":1,"2183":1,"2226":1,"2228":1,"2233":1,"2235":1,"2245":1,"2247":1,"2249":1,"2260":1,"2268":1,"2270":1,"2276":1,"2294":1,"2301":1,"2302":2,"2306":1,"2309":1,"2311":3,"2321":2,"2325":1,"2344":1,"2354":1,"2361":2,"2411":1,"2417":1,"2421":1,"2441":1,"2451":1,"2456":1,"2458":1,"2475":1,"2480":1,"2492":1,"2506":1,"2512":1,"2519":2,"2523":1,"2529":1,"2530":2,"2535":1,"2541":1,"2543":2,"2549":1,"2550":1,"2556":1,"2564":1,"2566":3,"2567":1,"2569":1,"2574":1,"2575":2,"2576":2,"2585":2,"2590":2,"2596":1,"2603":1,"2615":1,"2616":1,"2649":1,"2673":1,"2677":1,"2697":1,"2700":3,"2702":2,"2719":1,"2729":1,"2738":1,"2741":1,"2748":1,"2749":1,"2753":1,"2754":1}}],["onkey",{"2":{"176":1}}],["ongoing",{"2":{"160":1,"606":1,"2566":1,"2719":1}}],["onces",{"2":{"199":1,"211":1}}],["once",{"2":{"114":1,"119":1,"134":1,"152":1,"231":1,"245":1,"316":1,"331":1,"358":1,"403":2,"430":1,"453":1,"472":1,"515":1,"598":1,"600":1,"688":1,"701":1,"707":1,"1179":1,"1200":1,"1236":1,"1239":1,"1254":1,"1313":1,"1335":1,"1340":1,"1385":3,"1411":1,"1415":1,"1416":1,"1435":1,"1499":1,"1508":1,"1596":1,"1670":1,"1678":1,"1682":1,"1684":1,"1729":1,"1804":1,"1821":2,"1855":1,"1857":1,"1912":1,"1921":2,"1952":1,"2044":1,"2046":1,"2067":1,"2133":1,"2145":1,"2150":1,"2160":1,"2161":4,"2164":1,"2183":1,"2226":1,"2233":1,"2235":2,"2255":2,"2261":2,"2263":1,"2272":1,"2277":1,"2280":1,"2311":1,"2323":1,"2403":1,"2446":1,"2447":2,"2448":1,"2452":1,"2456":1,"2460":1,"2490":1,"2498":1,"2499":1,"2510":1,"2512":1,"2513":1,"2564":1,"2577":2,"2587":1,"2594":1,"2614":2,"2615":1,"2653":1,"2662":1,"2728":1,"2746":1,"2757":1}}],["ones",{"2":{"243":1,"266":1,"371":1,"1276":1,"1398":1,"1402":1,"1521":1,"1527":1,"1656":1,"1849":1,"1948":1,"1953":2,"2058":2,"2072":1,"2075":1,"2278":1,"2279":1,"2307":1,"2325":1,"2508":1,"2571":1,"2577":1,"2701":1,"2757":1}}],["oneshots",{"2":{"2706":1}}],["oneshot",{"0":{"2654":1},"2":{"38":2,"63":2,"112":2,"134":1,"160":1,"188":1,"191":2,"211":1,"266":1,"503":1,"505":4,"511":1,"1300":8,"1385":2,"2129":2,"2228":1,"2490":11,"2491":19,"2691":1,"2706":1}}],["onehand",{"2":{"114":1}}],["onekey",{"2":{"49":1,"191":3,"211":1,"222":1,"2245":1,"2247":1,"2249":1,"2513":2,"2567":1}}],["one",{"0":{"295":1,"296":1,"1234":1,"1274":1,"1307":1,"1699":1,"2167":1,"2379":1,"2490":1,"2691":1},"1":{"296":1,"297":1,"1235":1,"1700":1,"1701":1,"2491":1},"2":{"37":1,"45":1,"50":1,"55":1,"75":1,"82":1,"89":1,"93":2,"98":1,"107":1,"114":1,"154":1,"156":1,"157":1,"160":4,"163":1,"176":1,"188":1,"191":1,"194":3,"196":1,"199":2,"204":1,"211":2,"213":1,"231":1,"241":1,"253":1,"256":1,"262":1,"268":1,"270":1,"276":1,"282":1,"291":1,"295":1,"296":1,"317":1,"341":1,"347":1,"352":1,"370":1,"374":2,"418":1,"453":2,"457":1,"459":1,"462":1,"467":2,"468":1,"493":1,"501":1,"502":7,"503":1,"505":1,"508":1,"509":1,"513":1,"515":3,"516":1,"529":1,"530":2,"537":1,"540":2,"556":1,"557":1,"560":1,"580":1,"612":1,"626":1,"628":2,"638":1,"641":1,"655":3,"656":1,"657":1,"658":1,"659":1,"661":1,"662":1,"701":1,"734":1,"758":1,"760":1,"787":1,"792":1,"819":1,"822":1,"851":1,"852":1,"857":1,"886":1,"891":1,"920":1,"925":1,"954":1,"959":1,"988":1,"993":1,"1022":1,"1023":1,"1027":1,"1056":1,"1057":1,"1061":1,"1090":1,"1095":1,"1121":3,"1123":2,"1126":2,"1137":1,"1146":1,"1148":1,"1176":1,"1216":1,"1221":2,"1234":1,"1236":1,"1238":1,"1274":1,"1276":1,"1278":1,"1287":1,"1290":1,"1300":12,"1303":2,"1307":1,"1316":1,"1320":3,"1326":4,"1329":3,"1334":1,"1335":3,"1336":1,"1338":1,"1339":2,"1346":1,"1353":1,"1357":3,"1359":1,"1360":2,"1376":1,"1377":2,"1378":2,"1387":5,"1390":1,"1391":2,"1392":1,"1393":1,"1394":1,"1395":1,"1396":1,"1397":4,"1399":2,"1413":1,"1414":1,"1415":1,"1416":3,"1431":2,"1432":1,"1438":1,"1446":3,"1451":2,"1452":2,"1457":1,"1459":1,"1471":1,"1500":3,"1503":3,"1515":2,"1523":2,"1524":3,"1551":1,"1553":1,"1558":1,"1562":1,"1573":1,"1632":1,"1633":1,"1654":2,"1670":1,"1671":1,"1674":2,"1676":1,"1680":1,"1684":1,"1686":3,"1697":1,"1716":1,"1731":1,"1803":1,"1820":2,"1821":1,"1822":1,"1825":1,"1832":1,"1833":2,"1838":3,"1848":1,"1852":3,"1854":1,"1864":2,"1865":1,"1876":1,"1907":1,"1955":1,"2067":1,"2108":1,"2109":1,"2114":1,"2118":2,"2125":2,"2127":1,"2128":2,"2130":1,"2131":1,"2147":1,"2152":3,"2153":2,"2154":1,"2156":1,"2160":3,"2162":4,"2167":1,"2169":3,"2171":1,"2181":1,"2182":1,"2231":1,"2238":1,"2245":1,"2247":1,"2249":1,"2252":2,"2262":2,"2263":1,"2267":1,"2268":3,"2270":1,"2273":2,"2274":1,"2277":1,"2278":1,"2302":1,"2311":6,"2325":1,"2327":2,"2328":1,"2335":1,"2342":1,"2348":1,"2351":1,"2367":1,"2379":9,"2383":1,"2406":2,"2408":1,"2411":1,"2417":1,"2424":1,"2431":1,"2432":1,"2433":1,"2442":1,"2452":2,"2464":1,"2474":1,"2475":1,"2477":1,"2490":15,"2491":7,"2508":1,"2530":1,"2544":1,"2548":1,"2550":1,"2553":1,"2566":2,"2574":3,"2577":2,"2595":1,"2597":1,"2603":1,"2614":1,"2615":1,"2661":1,"2673":1,"2674":2,"2676":1,"2677":2,"2678":1,"2683":2,"2688":2,"2689":1,"2691":1,"2692":1,"2694":2,"2695":2,"2697":2,"2698":1,"2700":1,"2701":1,"2702":1,"2710":1,"2711":1,"2720":1,"2737":1,"2740":1,"2749":1,"2752":1,"2753":1}}],["on",{"0":{"14":1,"235":1,"568":1,"660":1,"1238":1,"1240":1,"1255":1,"1278":1,"1282":1,"1283":1,"1458":1,"1503":1,"1539":1,"1541":1,"1543":1,"1600":1,"1792":1,"1876":1,"1894":1,"2045":1,"2149":1,"2164":2,"2167":1,"2168":2,"2254":1,"2264":1,"2271":1,"2443":1,"2474":1,"2736":1},"1":{"1239":1,"1240":1,"1601":1,"1895":1,"1896":1},"2":{"1":1,"2":1,"10":1,"11":3,"14":2,"24":1,"25":2,"28":2,"30":1,"31":1,"33":1,"34":2,"49":8,"50":4,"51":1,"65":3,"69":1,"73":4,"74":1,"77":1,"90":1,"92":2,"93":3,"99":1,"105":6,"107":1,"113":2,"114":23,"118":1,"123":2,"124":2,"131":1,"133":1,"134":15,"138":1,"145":1,"149":2,"152":1,"153":4,"157":1,"158":3,"160":4,"164":1,"169":2,"176":8,"182":2,"190":1,"191":15,"194":10,"195":1,"198":1,"199":7,"201":1,"202":1,"206":4,"209":2,"210":1,"211":7,"213":3,"215":2,"222":7,"228":2,"231":4,"233":1,"236":11,"240":1,"247":2,"249":4,"255":1,"263":1,"266":3,"276":2,"277":4,"278":1,"279":1,"294":1,"303":1,"308":1,"317":2,"321":2,"322":1,"323":1,"331":8,"335":2,"336":1,"337":1,"341":1,"343":1,"344":1,"345":1,"349":2,"350":1,"352":2,"355":1,"356":2,"374":1,"385":1,"386":1,"389":1,"390":1,"391":2,"399":1,"400":2,"408":1,"409":1,"410":1,"430":1,"436":1,"446":1,"453":1,"454":4,"467":1,"468":1,"479":1,"481":1,"485":1,"486":1,"496":1,"502":9,"503":1,"504":3,"505":10,"506":5,"511":8,"515":1,"519":1,"520":1,"521":1,"530":1,"535":1,"540":5,"541":1,"551":3,"553":1,"554":2,"555":1,"556":4,"557":1,"560":8,"562":1,"567":1,"574":1,"578":1,"580":6,"584":1,"585":1,"589":1,"590":1,"597":1,"602":1,"605":1,"606":1,"607":1,"609":1,"613":1,"616":1,"623":1,"624":2,"625":2,"626":3,"627":1,"630":3,"633":1,"635":3,"638":1,"639":2,"641":1,"656":2,"660":3,"661":3,"668":1,"669":5,"681":4,"684":1,"687":1,"688":1,"689":5,"690":1,"691":2,"693":1,"694":1,"696":2,"701":2,"702":1,"703":1,"714":1,"717":1,"720":1,"723":1,"726":1,"733":1,"734":1,"758":1,"759":1,"760":2,"787":1,"789":2,"791":1,"792":3,"819":1,"820":1,"821":1,"822":3,"851":1,"854":2,"856":1,"857":3,"886":1,"888":2,"890":1,"891":3,"920":1,"922":2,"924":1,"925":3,"954":1,"956":2,"958":1,"959":3,"988":1,"990":2,"992":1,"993":3,"1022":1,"1024":2,"1026":1,"1027":3,"1056":1,"1058":2,"1060":1,"1061":3,"1090":1,"1092":2,"1094":1,"1095":3,"1122":1,"1124":2,"1125":1,"1127":1,"1128":1,"1129":2,"1130":2,"1132":3,"1133":4,"1134":2,"1146":1,"1147":1,"1148":3,"1176":1,"1181":4,"1197":1,"1201":1,"1212":1,"1217":1,"1218":1,"1219":1,"1223":3,"1226":1,"1227":1,"1230":2,"1234":1,"1236":1,"1239":1,"1241":1,"1243":2,"1245":1,"1254":1,"1255":1,"1261":1,"1262":1,"1270":2,"1271":1,"1272":1,"1273":2,"1275":2,"1278":1,"1280":4,"1281":1,"1283":3,"1287":2,"1299":1,"1300":3,"1301":1,"1302":1,"1303":1,"1304":1,"1316":4,"1317":3,"1319":1,"1320":1,"1326":3,"1329":10,"1332":3,"1334":1,"1335":5,"1339":1,"1340":3,"1341":24,"1343":1,"1344":6,"1361":2,"1365":2,"1377":2,"1378":2,"1383":1,"1384":2,"1385":6,"1387":4,"1389":1,"1390":1,"1393":1,"1396":3,"1398":5,"1399":6,"1401":1,"1403":4,"1406":4,"1408":10,"1410":1,"1412":2,"1416":2,"1430":1,"1431":3,"1432":1,"1434":3,"1435":1,"1436":1,"1438":3,"1441":1,"1442":1,"1443":3,"1446":1,"1447":1,"1449":2,"1454":2,"1456":3,"1457":4,"1458":4,"1459":2,"1460":1,"1462":1,"1464":2,"1469":3,"1470":1,"1473":1,"1474":1,"1485":1,"1486":1,"1494":1,"1495":2,"1496":2,"1499":1,"1500":5,"1501":2,"1503":4,"1505":4,"1506":1,"1507":1,"1512":5,"1518":1,"1519":5,"1520":2,"1521":1,"1522":1,"1523":3,"1524":1,"1528":1,"1534":2,"1548":2,"1549":10,"1551":1,"1553":1,"1554":1,"1556":1,"1557":1,"1558":1,"1560":3,"1562":2,"1565":1,"1567":1,"1568":2,"1572":8,"1573":5,"1574":1,"1575":1,"1577":1,"1582":1,"1589":1,"1591":2,"1598":1,"1599":1,"1600":2,"1603":1,"1604":2,"1605":1,"1609":1,"1613":1,"1630":2,"1634":1,"1655":1,"1660":1,"1665":1,"1666":3,"1668":4,"1669":3,"1670":1,"1671":1,"1677":1,"1680":1,"1683":1,"1684":1,"1714":1,"1715":2,"1716":1,"1717":3,"1718":4,"1722":4,"1724":2,"1725":3,"1726":1,"1727":4,"1728":2,"1729":1,"1730":2,"1733":1,"1735":1,"1736":1,"1737":1,"1738":1,"1743":1,"1745":1,"1787":1,"1788":1,"1792":4,"1793":3,"1794":1,"1799":1,"1803":1,"1804":2,"1807":3,"1808":1,"1815":1,"1816":1,"1817":1,"1821":5,"1822":17,"1823":2,"1824":3,"1826":1,"1828":1,"1829":1,"1830":2,"1838":1,"1842":2,"1843":4,"1844":1,"1845":2,"1847":1,"1849":3,"1852":3,"1854":1,"1855":2,"1858":1,"1859":2,"1861":2,"1862":4,"1864":3,"1873":1,"1874":2,"1876":1,"1877":1,"1878":3,"1879":1,"1881":2,"1902":1,"1905":1,"1906":1,"1907":3,"1908":1,"1910":1,"1911":1,"1918":2,"1921":8,"1923":3,"1929":1,"1930":1,"1934":1,"1935":1,"1937":1,"1938":1,"1939":4,"1940":2,"1945":2,"1946":3,"1947":1,"1948":1,"1949":6,"1950":1,"1951":1,"1952":1,"1954":5,"1957":1,"1958":3,"1959":2,"1962":1,"1963":1,"1964":1,"1965":1,"1970":1,"1972":1,"2031":3,"2032":2,"2034":1,"2035":1,"2037":1,"2038":1,"2040":1,"2041":1,"2042":2,"2044":4,"2051":4,"2053":6,"2056":3,"2057":1,"2061":1,"2063":3,"2085":1,"2087":1,"2100":1,"2101":1,"2102":1,"2106":2,"2107":5,"2108":2,"2111":1,"2112":1,"2113":1,"2118":1,"2120":1,"2122":1,"2124":1,"2125":1,"2126":1,"2128":1,"2129":9,"2130":2,"2131":7,"2132":2,"2133":1,"2139":1,"2143":18,"2145":2,"2146":1,"2149":1,"2150":2,"2154":1,"2156":7,"2157":1,"2158":4,"2160":1,"2161":14,"2162":12,"2167":7,"2168":1,"2169":3,"2170":1,"2171":7,"2175":1,"2177":1,"2178":1,"2180":1,"2182":3,"2183":3,"2184":1,"2196":1,"2197":1,"2198":1,"2225":1,"2226":1,"2229":1,"2230":3,"2233":1,"2235":2,"2236":2,"2237":1,"2238":1,"2240":2,"2242":1,"2243":1,"2244":1,"2245":3,"2247":3,"2249":4,"2254":2,"2255":5,"2259":1,"2262":1,"2263":3,"2266":1,"2267":1,"2268":4,"2270":2,"2272":6,"2273":6,"2274":3,"2275":2,"2276":5,"2277":2,"2279":4,"2282":1,"2284":1,"2286":1,"2289":1,"2290":1,"2291":2,"2293":1,"2299":1,"2302":1,"2303":1,"2305":2,"2306":1,"2309":1,"2311":1,"2317":1,"2319":2,"2322":1,"2326":1,"2330":4,"2332":4,"2334":4,"2335":1,"2344":1,"2346":2,"2347":2,"2348":2,"2350":2,"2352":3,"2353":1,"2355":2,"2357":10,"2358":3,"2359":3,"2360":3,"2367":7,"2369":4,"2370":11,"2371":3,"2376":1,"2377":1,"2379":3,"2383":6,"2384":1,"2385":1,"2393":2,"2394":1,"2396":11,"2397":1,"2398":3,"2402":2,"2403":4,"2406":2,"2407":1,"2408":1,"2411":3,"2413":2,"2415":2,"2417":1,"2418":2,"2419":1,"2426":1,"2427":1,"2430":1,"2431":1,"2437":3,"2439":1,"2440":1,"2441":1,"2442":1,"2443":1,"2445":1,"2448":1,"2450":5,"2452":1,"2454":4,"2455":1,"2460":1,"2462":1,"2466":1,"2468":2,"2470":1,"2475":3,"2477":4,"2479":2,"2480":3,"2484":1,"2490":5,"2491":3,"2492":2,"2496":1,"2497":2,"2501":2,"2502":1,"2503":1,"2508":2,"2512":1,"2513":2,"2517":2,"2518":4,"2519":1,"2522":1,"2524":1,"2525":1,"2529":3,"2530":4,"2531":1,"2533":3,"2535":1,"2539":1,"2544":1,"2545":1,"2546":3,"2548":2,"2552":1,"2553":1,"2556":1,"2557":1,"2560":1,"2563":1,"2564":4,"2565":1,"2566":6,"2567":2,"2568":1,"2571":1,"2573":1,"2574":5,"2575":3,"2576":5,"2577":18,"2584":1,"2585":1,"2587":1,"2592":2,"2597":1,"2601":1,"2602":1,"2603":4,"2604":2,"2605":1,"2607":1,"2611":1,"2614":1,"2615":3,"2616":1,"2617":1,"2624":1,"2625":1,"2628":1,"2633":1,"2643":1,"2646":1,"2655":1,"2657":1,"2658":1,"2663":1,"2665":1,"2672":1,"2673":2,"2674":2,"2675":2,"2676":4,"2677":4,"2680":3,"2684":1,"2685":3,"2687":1,"2688":3,"2692":2,"2694":2,"2695":3,"2697":2,"2700":1,"2701":3,"2702":1,"2711":1,"2714":1,"2715":1,"2716":1,"2718":1,"2720":3,"2728":4,"2729":1,"2731":2,"2732":3,"2733":2,"2734":2,"2735":5,"2736":9,"2737":2,"2738":1,"2740":2,"2743":1,"2744":1,"2745":1,"2746":1,"2749":1,"2750":1,"2751":1,"2754":1}}],["often",{"0":{"2478":1},"1":{"2479":1,"2480":1,"2481":1},"2":{"99":1,"502":1,"586":1,"587":1,"625":1,"660":1,"1212":1,"1241":1,"1266":1,"1269":1,"1274":1,"1325":3,"1326":1,"1331":1,"1410":1,"1499":2,"1562":1,"1570":1,"1864":1,"2031":1,"2061":1,"2144":1,"2169":1,"2320":1,"2472":1,"2473":1,"2476":1,"2568":1,"2648":1,"2655":2,"2657":1,"2664":1}}],["offending",{"2":{"2566":1}}],["offer",{"2":{"2032":1,"2269":1}}],["offered",{"2":{"1670":1,"1672":1}}],["offers",{"2":{"1303":1,"1397":1,"1463":1,"2514":1}}],["official",{"2":{"1278":1,"1319":1,"2328":1,"2466":1,"2514":1,"2523":1,"2533":1,"2534":1,"2578":1,"2715":1}}],["officially",{"2":{"254":1,"1264":1,"1265":1,"2441":1}}],["offloaded",{"2":{"1125":1,"1128":1}}],["offload",{"2":{"703":1,"1221":1,"1222":1,"1223":1}}],["offset=0",{"2":{"465":1}}],["offsets",{"2":{"222":1,"249":1,"1451":1,"1821":1,"2576":6,"2577":4,"2595":4}}],["offset",{"0":{"2595":1,"2620":1},"2":{"199":1,"211":2,"222":1,"465":4,"689":1,"690":1,"1451":2,"1805":12,"1817":1,"1820":1,"1949":1,"2038":1,"2141":1,"2576":2,"2577":8,"2587":1,"2588":3,"2592":1,"2594":2,"2595":2,"2617":1,"2620":4}}],["offs",{"2":{"114":1}}],["offhand",{"2":{"31":1,"34":1,"1816":1,"2140":1}}],["off",{"0":{"1234":1,"1540":1,"1542":1,"1544":1,"1602":1,"1792":1,"2045":1,"2167":1},"1":{"1235":1},"2":{"25":1,"92":1,"105":4,"114":2,"116":1,"134":1,"149":1,"152":1,"160":1,"195":1,"211":1,"222":1,"236":1,"247":2,"284":1,"347":1,"356":1,"454":1,"502":1,"504":1,"506":3,"511":2,"550":1,"560":1,"588":1,"592":1,"593":2,"594":2,"610":1,"659":1,"660":2,"786":2,"789":14,"1021":2,"1024":14,"1055":2,"1058":14,"1089":2,"1092":14,"1234":1,"1300":1,"1332":1,"1335":1,"1339":1,"1340":1,"1341":7,"1344":2,"1346":1,"1377":1,"1398":6,"1399":5,"1403":3,"1406":2,"1408":8,"1434":3,"1442":1,"1443":3,"1449":1,"1454":1,"1456":4,"1457":1,"1459":1,"1462":1,"1473":1,"1475":1,"1485":1,"1487":1,"1503":1,"1504":1,"1505":2,"1507":1,"1512":4,"1534":1,"1548":2,"1549":7,"1570":1,"1572":6,"1573":1,"1576":2,"1602":1,"1668":1,"1669":3,"1717":1,"1718":4,"1722":4,"1727":4,"1730":2,"1735":1,"1736":1,"1739":1,"1740":1,"1787":1,"1792":4,"1793":4,"1815":1,"1817":1,"1822":8,"1823":2,"1836":1,"1849":1,"1873":7,"1874":1,"1877":4,"1878":4,"1905":1,"1907":1,"1948":1,"1949":3,"1953":2,"1954":2,"1960":3,"1962":1,"1963":1,"1966":1,"1967":1,"2034":1,"2035":1,"2044":3,"2045":2,"2053":4,"2057":1,"2058":2,"2063":1,"2106":2,"2107":3,"2129":4,"2139":2,"2141":1,"2143":10,"2156":6,"2158":2,"2162":1,"2167":8,"2170":1,"2171":5,"2262":2,"2263":3,"2270":1,"2272":1,"2274":1,"2357":8,"2358":3,"2359":3,"2360":4,"2367":2,"2369":4,"2370":5,"2371":4,"2376":1,"2377":1,"2379":3,"2383":5,"2396":5,"2402":2,"2490":2,"2491":5,"2560":1,"2563":1,"2566":2,"2574":1,"2577":2,"2603":1,"2604":2,"2605":1,"2677":1,"2688":1,"2694":1,"2695":1,"2697":2,"2744":1}}],["of",{"0":{"8":1,"28":1,"33":1,"89":1,"123":1,"124":1,"262":1,"265":1,"275":1,"347":1,"361":1,"533":1,"562":1,"571":1,"629":1,"1232":1,"1271":1,"1290":1,"1326":1,"1551":1,"1677":1,"1678":1,"1717":1,"1718":1,"1865":1,"2059":1,"2325":1,"2404":1,"2473":1,"2601":1,"2621":1,"2704":1,"2752":1},"1":{"34":1,"572":1,"573":1,"1233":1,"1679":1,"1680":1,"1681":1,"1682":1,"1683":1,"1684":1,"1685":1,"1686":1,"1687":1,"1688":1,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1695":1,"1696":1,"1697":1,"1698":1,"1699":1,"1700":1,"1701":1,"1702":1,"1703":1,"1704":1,"1705":1,"1706":1,"1707":1,"1708":1,"1709":1,"1710":1,"1711":1,"1712":1,"1713":1,"2405":1,"2406":1,"2407":1,"2408":1,"2474":1,"2475":1,"2602":1,"2603":1,"2604":1,"2605":1,"2606":1,"2607":1,"2608":1,"2609":1,"2610":1,"2611":1,"2612":1,"2622":1,"2623":1,"2624":1,"2625":1,"2626":1,"2627":1,"2628":1,"2629":1,"2630":1,"2631":1,"2632":1,"2633":1,"2634":1,"2635":1,"2636":1,"2637":1,"2638":1,"2639":1,"2640":1,"2641":1,"2642":1,"2643":1,"2644":1,"2645":1,"2646":1,"2647":1,"2648":1,"2649":1,"2650":1,"2651":1,"2652":1,"2653":1,"2654":1,"2655":1,"2656":1,"2657":1,"2658":1,"2659":1,"2660":1,"2661":1,"2662":1,"2663":1,"2664":1,"2665":1,"2666":1,"2667":1,"2668":1,"2669":1,"2705":1,"2706":1,"2707":1,"2708":1,"2709":1,"2710":1,"2711":1},"2":{"0":1,"3":2,"4":1,"5":1,"6":1,"10":1,"15":2,"17":1,"19":1,"21":1,"22":2,"23":1,"25":2,"30":2,"31":3,"32":1,"33":2,"34":1,"37":1,"43":1,"45":3,"49":4,"50":9,"51":1,"55":1,"63":1,"64":1,"65":3,"67":1,"69":1,"70":2,"74":4,"76":3,"83":1,"86":2,"87":2,"88":2,"93":3,"94":3,"95":2,"98":2,"99":2,"103":4,"104":2,"107":3,"109":1,"112":3,"113":4,"114":15,"118":2,"119":4,"123":1,"124":3,"125":1,"126":2,"127":2,"130":2,"131":3,"132":1,"133":2,"134":21,"142":1,"149":11,"152":1,"153":3,"154":1,"156":5,"157":2,"158":1,"160":4,"163":4,"164":1,"166":3,"167":1,"169":3,"172":1,"173":3,"174":3,"175":2,"176":16,"182":4,"183":1,"184":2,"185":1,"186":1,"187":1,"189":3,"190":1,"191":15,"194":8,"195":1,"196":1,"198":4,"199":16,"201":6,"202":4,"203":5,"204":2,"209":2,"210":1,"211":20,"213":4,"214":1,"215":1,"222":10,"224":3,"228":1,"229":1,"231":1,"233":6,"234":2,"236":12,"238":5,"243":1,"245":1,"246":1,"247":1,"248":1,"249":6,"251":2,"254":2,"255":2,"256":2,"259":1,"262":5,"263":3,"265":3,"266":10,"268":2,"272":2,"273":2,"275":2,"276":1,"277":4,"288":1,"290":1,"292":1,"304":2,"305":2,"307":1,"313":2,"316":5,"317":5,"327":1,"331":2,"334":3,"335":1,"336":3,"337":1,"341":5,"345":1,"346":3,"349":2,"350":7,"352":1,"355":1,"363":1,"364":1,"370":2,"371":1,"372":1,"374":3,"375":1,"376":1,"377":1,"393":1,"394":1,"395":1,"396":1,"411":1,"413":1,"430":3,"432":2,"434":2,"435":4,"436":2,"445":1,"446":1,"448":1,"450":1,"451":1,"453":13,"454":2,"455":4,"457":1,"462":1,"463":1,"464":2,"465":5,"466":2,"469":1,"470":2,"471":1,"475":1,"479":2,"481":2,"482":1,"483":2,"484":1,"485":1,"486":1,"488":1,"493":1,"496":5,"500":1,"501":2,"502":18,"504":2,"505":7,"506":9,"509":2,"510":1,"511":6,"513":1,"515":2,"516":1,"517":1,"519":2,"520":2,"521":1,"522":1,"527":1,"529":4,"530":2,"532":1,"533":1,"534":2,"535":1,"540":1,"541":1,"546":1,"548":1,"550":1,"552":1,"554":8,"555":1,"556":3,"557":2,"560":9,"561":1,"562":4,"563":1,"564":1,"567":1,"568":1,"569":1,"570":2,"571":2,"572":1,"574":1,"578":2,"580":8,"584":1,"587":1,"588":2,"589":2,"592":2,"596":1,"597":4,"598":3,"601":3,"602":2,"606":10,"607":1,"612":5,"614":2,"616":2,"617":2,"623":1,"624":1,"625":1,"626":3,"627":3,"628":5,"629":1,"630":2,"631":1,"635":4,"638":1,"639":2,"641":6,"644":3,"647":1,"649":1,"655":1,"657":1,"659":8,"660":1,"661":2,"662":1,"664":1,"672":1,"674":1,"675":1,"677":1,"680":2,"681":3,"683":2,"684":5,"685":4,"686":1,"687":1,"688":5,"689":12,"690":7,"691":7,"692":3,"693":1,"694":4,"696":3,"697":2,"698":4,"699":1,"701":4,"702":1,"703":2,"707":1,"709":3,"712":3,"715":3,"718":3,"721":3,"724":3,"727":1,"731":1,"739":1,"741":1,"743":1,"745":1,"747":1,"755":1,"757":5,"758":1,"763":1,"766":1,"768":1,"770":1,"772":1,"774":1,"784":1,"786":6,"787":1,"789":1,"795":1,"798":1,"800":1,"802":1,"804":1,"806":1,"816":1,"818":5,"819":1,"825":1,"828":1,"832":1,"834":1,"836":1,"838":1,"848":1,"850":6,"851":1,"854":1,"860":1,"863":1,"867":1,"869":1,"871":1,"873":1,"883":1,"885":6,"886":1,"888":1,"894":1,"897":1,"901":1,"903":1,"905":1,"907":1,"917":1,"919":6,"920":1,"922":1,"928":1,"931":1,"935":1,"937":1,"939":1,"941":1,"951":1,"953":7,"954":1,"956":1,"962":1,"965":1,"969":1,"971":1,"973":1,"975":1,"985":1,"987":7,"988":1,"990":1,"996":1,"999":1,"1003":1,"1005":1,"1007":1,"1009":1,"1019":1,"1021":6,"1022":1,"1024":1,"1030":1,"1033":1,"1037":1,"1039":1,"1041":1,"1043":1,"1053":1,"1055":6,"1056":1,"1058":1,"1064":1,"1067":1,"1071":1,"1073":1,"1075":1,"1077":1,"1087":1,"1089":7,"1090":1,"1092":1,"1098":1,"1100":1,"1101":1,"1105":1,"1107":1,"1109":1,"1111":1,"1121":2,"1122":2,"1124":1,"1125":2,"1126":2,"1127":1,"1129":6,"1130":1,"1132":3,"1133":2,"1134":5,"1138":1,"1142":1,"1143":2,"1145":5,"1146":1,"1151":1,"1154":1,"1158":1,"1160":1,"1162":1,"1164":1,"1174":1,"1176":1,"1179":1,"1181":3,"1189":2,"1192":2,"1195":1,"1197":1,"1200":1,"1207":2,"1209":2,"1212":2,"1214":7,"1215":2,"1216":2,"1217":1,"1220":1,"1224":2,"1227":1,"1229":1,"1230":1,"1233":2,"1234":1,"1236":1,"1238":2,"1239":1,"1240":1,"1242":1,"1245":1,"1250":1,"1251":1,"1252":1,"1254":1,"1255":1,"1257":2,"1258":2,"1259":2,"1265":5,"1267":1,"1270":1,"1271":2,"1274":1,"1275":1,"1278":5,"1281":1,"1284":3,"1287":4,"1289":2,"1290":3,"1292":1,"1294":1,"1298":1,"1300":8,"1302":1,"1303":13,"1304":2,"1319":1,"1320":1,"1323":1,"1324":1,"1326":12,"1329":11,"1330":1,"1331":4,"1332":6,"1333":1,"1334":3,"1335":4,"1336":6,"1338":2,"1340":4,"1341":4,"1344":4,"1345":1,"1346":5,"1347":2,"1351":1,"1352":1,"1353":2,"1355":1,"1356":1,"1359":2,"1361":2,"1363":1,"1364":2,"1365":1,"1368":1,"1370":1,"1375":2,"1377":1,"1378":1,"1380":4,"1383":4,"1384":3,"1385":7,"1387":3,"1390":2,"1393":2,"1397":1,"1398":5,"1399":1,"1400":1,"1401":1,"1404":1,"1405":2,"1406":5,"1408":2,"1410":1,"1411":2,"1412":1,"1415":1,"1416":4,"1423":1,"1426":1,"1427":1,"1428":1,"1429":1,"1430":2,"1431":3,"1432":1,"1434":1,"1435":3,"1437":1,"1438":2,"1441":3,"1442":1,"1443":1,"1445":2,"1446":3,"1447":4,"1448":2,"1451":12,"1452":2,"1454":4,"1457":4,"1458":1,"1459":5,"1461":1,"1462":1,"1464":1,"1466":1,"1467":1,"1471":3,"1495":2,"1497":2,"1498":1,"1499":1,"1508":2,"1511":2,"1515":5,"1518":3,"1519":1,"1520":1,"1525":1,"1526":2,"1527":4,"1528":2,"1534":3,"1536":1,"1537":4,"1545":1,"1546":2,"1547":2,"1551":1,"1553":4,"1554":3,"1555":3,"1556":2,"1558":2,"1559":2,"1560":1,"1561":1,"1562":1,"1564":2,"1570":2,"1573":5,"1578":2,"1582":1,"1583":2,"1584":2,"1585":2,"1586":2,"1587":2,"1591":4,"1596":1,"1605":2,"1607":1,"1609":2,"1612":4,"1613":1,"1614":4,"1624":1,"1625":1,"1632":2,"1633":4,"1637":1,"1638":1,"1642":1,"1643":1,"1644":1,"1645":1,"1646":1,"1649":1,"1650":1,"1651":2,"1654":2,"1655":3,"1657":1,"1658":1,"1663":1,"1668":2,"1670":4,"1671":4,"1672":2,"1673":4,"1674":3,"1675":3,"1676":5,"1677":5,"1678":1,"1680":1,"1682":1,"1683":3,"1684":8,"1685":2,"1714":1,"1715":1,"1716":2,"1719":1,"1720":1,"1721":1,"1722":2,"1724":2,"1725":14,"1728":5,"1729":2,"1730":5,"1741":1,"1743":1,"1745":1,"1756":1,"1774":1,"1781":2,"1784":2,"1791":3,"1802":3,"1803":4,"1804":9,"1805":1,"1806":2,"1807":3,"1808":2,"1811":1,"1813":1,"1814":1,"1815":2,"1817":5,"1818":1,"1819":3,"1820":10,"1821":2,"1822":16,"1825":2,"1827":3,"1832":1,"1833":1,"1834":4,"1835":1,"1836":2,"1838":3,"1842":8,"1844":2,"1845":4,"1846":3,"1847":2,"1848":5,"1849":7,"1851":3,"1854":2,"1855":1,"1857":1,"1858":1,"1859":5,"1864":1,"1866":2,"1868":2,"1871":1,"1873":5,"1874":1,"1876":1,"1877":1,"1878":1,"1879":3,"1881":2,"1886":1,"1887":1,"1888":1,"1889":1,"1890":1,"1891":1,"1892":1,"1893":1,"1894":1,"1895":1,"1899":1,"1901":1,"1902":2,"1907":2,"1908":3,"1910":1,"1911":1,"1912":1,"1915":2,"1920":2,"1921":6,"1923":2,"1926":1,"1928":1,"1929":1,"1931":1,"1932":1,"1933":3,"1934":2,"1937":1,"1940":1,"1941":1,"1942":1,"1945":2,"1946":14,"1948":2,"1949":10,"1950":9,"1952":2,"1954":7,"1957":1,"1968":1,"1970":1,"1972":1,"1983":1,"2019":1,"2026":2,"2029":2,"2031":3,"2032":6,"2033":2,"2035":3,"2036":1,"2038":6,"2040":7,"2041":2,"2042":5,"2043":2,"2044":3,"2047":1,"2051":2,"2052":4,"2056":1,"2059":3,"2060":2,"2061":1,"2062":2,"2063":1,"2064":1,"2066":1,"2067":1,"2070":2,"2072":3,"2074":1,"2075":2,"2081":1,"2083":1,"2084":1,"2085":1,"2087":1,"2088":1,"2105":1,"2109":1,"2112":1,"2113":2,"2114":1,"2117":1,"2118":1,"2119":1,"2120":2,"2122":2,"2123":1,"2125":2,"2126":1,"2127":1,"2128":10,"2129":28,"2130":2,"2131":7,"2132":1,"2133":2,"2134":1,"2136":1,"2137":1,"2138":1,"2139":2,"2141":2,"2142":4,"2143":11,"2144":4,"2145":2,"2146":2,"2147":16,"2148":6,"2149":3,"2150":5,"2152":17,"2153":1,"2155":1,"2157":2,"2160":3,"2161":6,"2162":6,"2164":1,"2168":1,"2169":8,"2170":3,"2171":6,"2172":1,"2175":1,"2177":3,"2178":1,"2179":2,"2181":5,"2182":6,"2183":4,"2200":1,"2204":1,"2214":1,"2226":6,"2228":2,"2229":4,"2230":2,"2231":1,"2233":2,"2235":1,"2236":1,"2237":1,"2238":2,"2240":2,"2242":2,"2243":1,"2244":4,"2245":2,"2247":2,"2249":2,"2252":1,"2254":1,"2255":2,"2257":1,"2259":1,"2260":5,"2262":12,"2263":2,"2266":1,"2268":4,"2269":4,"2270":6,"2271":1,"2272":13,"2273":5,"2274":5,"2275":2,"2276":3,"2277":4,"2279":7,"2280":2,"2282":1,"2284":2,"2291":1,"2294":1,"2295":1,"2298":1,"2300":5,"2301":1,"2303":1,"2304":1,"2306":2,"2309":1,"2310":1,"2311":7,"2313":3,"2315":3,"2317":1,"2318":1,"2319":2,"2320":2,"2321":2,"2323":2,"2325":4,"2326":4,"2327":4,"2328":1,"2335":2,"2339":1,"2341":1,"2342":2,"2346":1,"2347":4,"2348":5,"2349":5,"2350":1,"2352":1,"2353":3,"2354":1,"2355":1,"2357":2,"2358":1,"2359":1,"2370":3,"2381":1,"2385":2,"2393":2,"2395":1,"2396":4,"2397":1,"2400":4,"2401":4,"2402":4,"2403":2,"2404":2,"2405":3,"2406":5,"2407":2,"2408":2,"2411":4,"2413":2,"2414":3,"2417":6,"2418":2,"2420":1,"2421":1,"2422":2,"2423":4,"2424":4,"2425":3,"2428":2,"2431":4,"2432":1,"2437":2,"2441":4,"2442":1,"2444":1,"2445":1,"2446":1,"2447":2,"2448":2,"2450":3,"2452":1,"2455":1,"2457":1,"2458":1,"2463":1,"2464":1,"2466":1,"2467":1,"2468":4,"2469":3,"2472":2,"2473":2,"2474":2,"2475":1,"2476":1,"2477":13,"2478":3,"2480":3,"2481":1,"2483":1,"2490":4,"2491":3,"2492":1,"2494":1,"2497":2,"2498":1,"2501":1,"2502":2,"2503":1,"2504":1,"2506":1,"2508":1,"2510":2,"2513":8,"2514":2,"2515":2,"2518":1,"2519":2,"2521":1,"2523":7,"2524":8,"2525":4,"2526":2,"2529":1,"2530":2,"2532":1,"2533":3,"2534":1,"2539":3,"2541":2,"2543":1,"2544":2,"2545":1,"2546":5,"2548":3,"2549":3,"2550":4,"2552":1,"2553":5,"2554":1,"2555":2,"2556":2,"2557":4,"2558":5,"2559":3,"2560":2,"2563":1,"2564":10,"2565":1,"2566":11,"2567":6,"2568":1,"2569":2,"2570":4,"2571":1,"2574":9,"2575":12,"2576":19,"2577":29,"2578":1,"2584":4,"2585":5,"2587":7,"2588":1,"2589":1,"2590":1,"2591":1,"2592":6,"2593":5,"2594":6,"2595":4,"2596":6,"2597":2,"2598":2,"2599":1,"2600":4,"2601":2,"2605":1,"2607":1,"2608":1,"2610":2,"2611":1,"2614":4,"2615":4,"2616":1,"2617":1,"2619":1,"2622":2,"2623":1,"2625":1,"2627":1,"2631":1,"2632":1,"2637":1,"2638":1,"2643":1,"2645":1,"2648":2,"2651":1,"2653":2,"2655":1,"2660":1,"2661":2,"2665":2,"2666":2,"2671":2,"2672":3,"2673":2,"2674":4,"2675":1,"2676":1,"2677":4,"2678":1,"2679":1,"2680":2,"2681":1,"2682":2,"2683":7,"2684":2,"2686":18,"2687":1,"2688":14,"2689":6,"2691":2,"2692":1,"2694":8,"2695":16,"2696":1,"2697":5,"2698":1,"2699":1,"2700":2,"2701":5,"2702":2,"2704":2,"2705":2,"2706":1,"2708":2,"2709":1,"2710":2,"2711":2,"2712":3,"2713":3,"2714":1,"2718":1,"2719":6,"2720":3,"2723":2,"2724":4,"2725":1,"2726":1,"2727":4,"2728":7,"2729":2,"2730":2,"2734":2,"2735":4,"2736":3,"2737":3,"2738":6,"2739":1,"2740":3,"2741":1,"2742":1,"2743":4,"2744":2,"2745":6,"2746":6,"2747":3,"2748":3,"2749":5,"2750":3,"2752":4,"2753":4,"2754":1,"2757":7}}],["ordinarily",{"2":{"1431":1}}],["ordering",{"2":{"50":1,"1908":1,"2566":1}}],["order",{"0":{"1216":1,"1517":1,"1518":1,"2059":1},"2":{"10":1,"49":3,"50":1,"119":1,"124":1,"125":1,"132":1,"133":1,"134":1,"158":2,"174":1,"176":2,"185":1,"186":1,"188":1,"191":2,"211":1,"218":1,"221":1,"234":2,"272":1,"277":1,"278":1,"317":1,"399":1,"424":1,"509":1,"513":1,"516":2,"574":1,"621":1,"625":1,"669":1,"684":1,"685":1,"689":2,"694":1,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1132":1,"1133":1,"1148":1,"1214":3,"1216":7,"1243":1,"1287":1,"1302":1,"1326":1,"1332":1,"1340":1,"1352":2,"1427":1,"1451":1,"1517":2,"1518":7,"1676":1,"1821":1,"1908":1,"1918":1,"1950":1,"2042":1,"2059":5,"2112":1,"2122":1,"2123":1,"2149":1,"2157":1,"2162":1,"2169":1,"2171":1,"2261":1,"2274":1,"2299":1,"2300":1,"2327":1,"2344":1,"2450":2,"2472":1,"2513":2,"2523":1,"2524":2,"2546":1,"2552":1,"2566":1,"2567":1,"2575":1,"2691":1,"2718":1,"2728":1,"2729":1,"2735":1,"2757":1}}],["ored",{"2":{"1284":1}}],["orient",{"2":{"2126":1}}],["orientation",{"2":{"1915":5,"2577":1}}],["oriented",{"2":{"575":1,"1816":1,"2140":1,"2750":1}}],["oring",{"2":{"1451":2,"2410":1}}],["originating",{"2":{"1844":1,"1845":1}}],["original",{"2":{"124":1,"597":1,"1303":1,"1655":1,"1831":1,"2257":1,"2309":1,"2623":1,"2738":1}}],["originally",{"2":{"113":1,"1265":1,"1453":1,"2236":1,"2345":1,"2564":1}}],["origin",{"2":{"349":1,"359":2,"360":1,"361":2,"400":2,"554":1,"2438":3,"2475":6,"2479":4,"2480":1}}],["orange",{"2":{"149":1,"626":1,"1826":1,"1953":2,"2058":3}}],["organise",{"2":{"211":1}}],["organize",{"2":{"114":1,"149":1,"2295":1}}],["organization",{"2":{"21":1,"149":1,"268":1,"286":1,"2255":1,"2295":3}}],["org",{"2":{"149":1,"551":1,"1275":1,"1280":1,"1289":1,"1297":1,"1298":1,"1380":1,"1796":1,"2570":1}}],["orbit",{"2":{"149":1}}],["orthocode",{"2":{"277":1}}],["orthograph",{"2":{"249":1}}],["ortho60",{"2":{"199":1}}],["ortholinear",{"2":{"114":1,"624":1,"1403":1,"2268":1}}],["ortho",{"2":{"70":1,"143":4,"211":3,"249":1,"1349":4,"1352":1,"1405":1,"2270":1,"2294":1,"2559":2,"2566":1,"2672":1}}],["or",{"0":{"1271":1,"1858":1,"2159":1,"2472":1,"2669":1,"2729":1,"2741":1,"2753":1},"1":{"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1,"2730":1,"2731":1,"2732":1,"2733":1,"2734":1,"2735":1,"2736":1},"2":{"0":1,"9":1,"16":1,"19":1,"22":1,"23":1,"32":1,"39":1,"49":1,"52":1,"82":1,"87":1,"88":2,"90":2,"103":2,"104":2,"119":2,"126":2,"127":2,"131":1,"134":1,"138":1,"152":2,"153":2,"158":2,"160":1,"182":1,"191":1,"201":1,"202":1,"203":2,"214":2,"221":1,"222":1,"232":1,"234":4,"240":3,"244":1,"263":1,"268":1,"275":1,"291":1,"308":1,"337":3,"341":1,"352":5,"355":1,"356":2,"364":1,"366":1,"370":7,"371":3,"374":1,"376":1,"377":1,"378":3,"380":1,"381":3,"386":2,"387":1,"388":1,"389":1,"390":1,"391":1,"393":1,"394":1,"395":1,"400":1,"402":1,"403":1,"404":1,"405":3,"418":1,"428":1,"429":1,"433":1,"434":1,"436":1,"437":1,"448":2,"450":1,"453":3,"454":2,"457":1,"460":1,"461":1,"465":2,"469":1,"479":2,"481":1,"482":1,"485":1,"486":2,"497":1,"498":2,"502":6,"505":3,"506":2,"510":1,"511":1,"515":2,"522":1,"532":1,"533":1,"537":1,"538":1,"541":3,"551":2,"553":1,"554":3,"555":1,"557":4,"560":7,"561":1,"562":1,"563":1,"568":1,"569":1,"571":3,"580":4,"585":1,"586":2,"588":2,"589":2,"592":3,"597":1,"598":2,"601":1,"606":1,"607":1,"609":1,"610":1,"613":3,"623":2,"624":1,"626":5,"629":1,"630":2,"635":2,"638":1,"641":3,"643":1,"654":1,"655":4,"659":4,"660":6,"661":1,"663":1,"664":1,"681":1,"683":1,"693":1,"698":2,"700":1,"701":1,"729":1,"730":1,"750":3,"752":1,"755":1,"756":1,"777":3,"779":1,"784":1,"785":1,"816":1,"817":1,"841":3,"843":1,"848":1,"849":1,"876":3,"878":1,"883":1,"884":1,"910":3,"912":1,"917":1,"918":1,"944":3,"946":1,"951":1,"952":1,"978":3,"980":1,"985":1,"986":1,"1019":1,"1020":1,"1053":1,"1054":1,"1087":1,"1088":1,"1123":1,"1124":1,"1125":1,"1126":1,"1127":1,"1129":3,"1130":1,"1134":1,"1136":1,"1143":1,"1144":1,"1167":3,"1169":1,"1175":1,"1182":2,"1185":1,"1187":1,"1196":1,"1213":1,"1214":1,"1216":1,"1218":2,"1219":1,"1223":1,"1225":2,"1234":1,"1236":1,"1238":2,"1239":1,"1241":3,"1245":1,"1252":1,"1264":1,"1265":1,"1268":1,"1273":1,"1274":1,"1275":2,"1284":1,"1298":2,"1299":1,"1300":2,"1303":3,"1315":1,"1325":1,"1326":1,"1329":1,"1332":3,"1334":1,"1335":4,"1336":1,"1338":1,"1339":1,"1340":2,"1341":4,"1342":1,"1343":1,"1352":1,"1353":1,"1355":2,"1357":2,"1359":3,"1361":5,"1365":1,"1370":1,"1377":1,"1378":2,"1379":2,"1380":3,"1383":2,"1384":1,"1385":2,"1386":1,"1390":3,"1391":1,"1393":3,"1394":1,"1395":1,"1396":1,"1398":1,"1399":2,"1401":1,"1403":1,"1405":2,"1406":1,"1411":2,"1412":1,"1414":1,"1416":1,"1430":3,"1435":1,"1437":1,"1438":3,"1440":3,"1441":1,"1442":1,"1445":2,"1447":1,"1450":1,"1451":1,"1454":2,"1455":1,"1456":1,"1457":1,"1458":3,"1459":1,"1460":1,"1471":1,"1473":1,"1485":1,"1493":1,"1496":1,"1497":1,"1499":5,"1500":5,"1501":1,"1503":2,"1507":2,"1508":1,"1511":1,"1514":1,"1515":1,"1518":6,"1519":2,"1523":1,"1525":1,"1526":2,"1527":1,"1528":1,"1530":1,"1537":1,"1547":1,"1549":2,"1553":5,"1554":1,"1560":1,"1562":1,"1563":1,"1564":1,"1565":1,"1566":1,"1570":1,"1572":1,"1577":1,"1578":1,"1579":2,"1580":1,"1589":1,"1600":1,"1604":1,"1618":1,"1620":1,"1630":1,"1632":1,"1633":1,"1640":2,"1648":1,"1654":1,"1655":1,"1656":1,"1665":1,"1670":2,"1671":1,"1674":1,"1677":5,"1683":1,"1686":1,"1717":1,"1718":1,"1722":3,"1725":4,"1727":1,"1729":2,"1733":2,"1735":1,"1736":1,"1743":1,"1745":1,"1791":2,"1802":2,"1803":2,"1805":2,"1807":2,"1811":3,"1813":1,"1815":1,"1816":2,"1817":1,"1821":1,"1822":10,"1824":1,"1826":1,"1832":1,"1841":2,"1842":1,"1849":4,"1852":2,"1859":1,"1861":1,"1864":2,"1865":2,"1866":1,"1868":1,"1873":4,"1879":1,"1881":1,"1902":2,"1904":2,"1905":1,"1910":2,"1915":1,"1916":1,"1918":1,"1921":3,"1932":2,"1933":1,"1936":1,"1938":1,"1939":1,"1940":1,"1942":1,"1946":4,"1948":2,"1952":2,"1957":2,"1962":1,"1963":1,"1970":1,"1972":1,"2034":2,"2037":1,"2041":1,"2044":2,"2056":1,"2064":1,"2104":1,"2106":1,"2107":4,"2111":1,"2112":2,"2113":2,"2114":3,"2118":2,"2125":1,"2126":2,"2129":1,"2130":3,"2131":2,"2132":2,"2133":1,"2137":1,"2139":1,"2140":2,"2143":5,"2145":1,"2146":1,"2147":1,"2150":4,"2152":5,"2153":1,"2156":2,"2161":3,"2162":2,"2169":4,"2170":2,"2171":1,"2175":1,"2181":1,"2182":2,"2183":1,"2184":1,"2217":1,"2226":2,"2228":2,"2230":3,"2233":2,"2235":1,"2236":1,"2238":1,"2240":2,"2242":2,"2243":1,"2245":3,"2247":3,"2249":3,"2251":1,"2252":3,"2255":1,"2256":1,"2262":3,"2263":2,"2266":1,"2268":2,"2271":1,"2272":4,"2273":1,"2274":1,"2276":2,"2277":2,"2278":1,"2279":4,"2280":2,"2289":1,"2290":1,"2294":1,"2295":1,"2299":1,"2300":2,"2301":1,"2310":1,"2311":2,"2321":1,"2325":1,"2327":1,"2328":1,"2331":1,"2347":3,"2353":1,"2356":1,"2360":1,"2364":1,"2367":1,"2369":1,"2376":1,"2377":1,"2383":1,"2384":1,"2398":1,"2402":1,"2403":1,"2405":3,"2406":3,"2410":1,"2411":2,"2422":1,"2423":2,"2424":2,"2425":2,"2427":3,"2441":1,"2445":1,"2446":1,"2450":7,"2451":1,"2452":5,"2454":3,"2455":1,"2458":1,"2466":1,"2478":2,"2480":2,"2490":3,"2491":1,"2495":2,"2498":1,"2501":1,"2502":1,"2508":1,"2510":1,"2513":1,"2515":1,"2518":1,"2524":3,"2530":1,"2531":2,"2534":1,"2542":1,"2546":3,"2548":1,"2550":1,"2553":1,"2557":1,"2560":2,"2563":1,"2564":3,"2565":1,"2566":18,"2567":3,"2568":1,"2569":2,"2570":5,"2572":1,"2573":1,"2574":1,"2575":1,"2576":5,"2577":12,"2584":1,"2587":1,"2589":1,"2590":1,"2592":1,"2596":2,"2601":1,"2603":1,"2605":1,"2606":1,"2607":1,"2608":2,"2609":2,"2610":3,"2611":1,"2612":1,"2614":1,"2617":1,"2625":1,"2628":1,"2633":1,"2639":1,"2645":2,"2654":1,"2661":2,"2669":1,"2672":2,"2674":1,"2686":1,"2688":1,"2694":1,"2695":1,"2702":1,"2705":2,"2708":2,"2709":2,"2710":2,"2711":1,"2716":1,"2719":4,"2720":3,"2723":1,"2728":1,"2729":4,"2730":1,"2735":2,"2736":1,"2738":5,"2741":2,"2748":1,"2749":1,"2755":1}}],["dx",{"2":{"2705":1}}],["dg",{"2":{"2467":1}}],["dgk6x",{"2":{"199":1,"207":2}}],["dqt",{"2":{"2378":1,"2399":1}}],["dquote",{"2":{"462":2}}],["dquo",{"2":{"176":2,"2378":1,"2399":1,"2413":6}}],["dlr",{"2":{"2378":1,"2399":1}}],["d♯",{"2":{"1793":6,"2371":6}}],["ds5",{"2":{"1793":1,"2371":1}}],["ds4",{"2":{"1793":1,"2371":1}}],["ds3",{"2":{"1793":1,"2371":1}}],["ds2",{"2":{"1793":1,"2371":1}}],["ds1",{"2":{"1793":1,"2371":1}}],["ds",{"2":{"1793":1,"2371":1}}],["d♭",{"2":{"1793":6,"2371":6}}],["dwl",{"2":{"1573":1}}],["dwld",{"2":{"1572":1}}],["dwlu",{"2":{"1572":1}}],["dwell",{"2":{"1572":4,"1573":13,"2129":1}}],["dword",{"0":{"2091":1},"1":{"2092":1},"2":{"1331":1,"1333":1}}],["db5",{"2":{"1793":1,"2371":1}}],["db4",{"2":{"1793":1,"2371":1}}],["db3",{"2":{"1793":1,"2371":1}}],["db2",{"2":{"1793":1,"2371":1}}],["db1",{"2":{"1793":1,"2371":1}}],["dbl",{"2":{"1578":2}}],["dblsharp",{"2":{"1578":6}}],["dblclick",{"2":{"1578":14}}],["dbaas",{"2":{"1503":1}}],["db",{"2":{"1245":1,"1793":1,"2044":1,"2356":1,"2371":1,"2572":1}}],["db60",{"2":{"191":1}}],["d9",{"2":{"635":1}}],["d8",{"2":{"635":1,"2347":1}}],["d3",{"2":{"511":1,"1124":1,"1197":3,"1319":1,"1793":1,"2119":1,"2371":1,"2530":1,"2557":1,"2558":1}}],["d2",{"2":{"511":1,"1124":1,"1197":3,"1319":1,"1793":1,"1904":1,"1905":2,"1907":1,"2119":1,"2371":1,"2530":1,"2557":1,"2558":1}}],["d7",{"2":{"502":1,"506":1,"633":1,"1197":1,"1591":1,"2530":1}}],["d6",{"2":{"502":1,"633":1,"1197":1,"2276":1}}],["d4",{"2":{"502":1,"633":1,"1466":1,"1492":1,"1591":1,"1793":1,"2371":1,"2530":1,"2557":1}}],["d5",{"2":{"502":1,"1197":1,"1316":1,"1320":1,"1466":1,"1793":1,"1905":2,"1907":1,"2231":1,"2238":1,"2371":1,"2530":2,"2558":1}}],["dnworks",{"2":{"270":2,"277":2}}],["dpi",{"2":{"1853":2,"1854":1}}],["dprint",{"2":{"1250":1,"2130":1,"2263":2}}],["dprintf",{"2":{"50":1,"1250":1,"2130":1}}],["dp3000",{"2":{"226":2,"236":1}}],["dharma",{"2":{"211":1}}],["dyn",{"2":{"1555":1}}],["dynamically",{"2":{"119":1,"2584":1,"2671":1,"2728":1}}],["dynamic",{"0":{"119":1,"1553":1,"1555":1,"2363":1,"2633":1,"2728":1},"1":{"1554":1,"1555":1,"1556":1},"2":{"119":4,"134":1,"149":2,"176":3,"188":2,"191":4,"199":1,"211":1,"222":3,"236":2,"249":1,"277":2,"479":1,"515":1,"1553":11,"1554":6,"1555":4,"1556":6,"2363":6,"2375":6,"2633":1,"2724":1,"2727":2,"2728":10,"2749":2}}],["dymium65",{"2":{"211":1}}],["dyz",{"2":{"211":1}}],["dclk",{"2":{"2352":1}}],["dc",{"2":{"1819":2,"2576":10}}],["dc60",{"2":{"211":1}}],["dc01",{"2":{"114":2}}],["d",{"2":{"194":1,"196":8,"199":1,"211":1,"249":1,"266":3,"292":1,"313":1,"314":1,"375":3,"432":1,"437":1,"451":1,"452":1,"513":2,"530":2,"551":1,"556":2,"557":1,"559":1,"561":1,"574":1,"1239":2,"1254":1,"1380":1,"1383":1,"1384":2,"1385":1,"1436":1,"1503":2,"1508":2,"1511":1,"1530":1,"1680":8,"1686":1,"1793":19,"1815":1,"1932":1,"1934":2,"2130":1,"2139":1,"2148":1,"2153":1,"2174":1,"2183":1,"2240":2,"2242":2,"2243":2,"2244":1,"2270":1,"2307":1,"2347":1,"2355":3,"2371":19,"2386":3,"2401":1,"2407":1,"2453":1,"2459":1,"2491":1,"2573":10,"2575":2,"2576":4,"2577":4,"2705":1}}],["dvp",{"2":{"1355":1}}],["dv",{"2":{"176":2,"1499":1}}],["dvorak",{"0":{"2632":1},"2":{"92":1,"176":1,"1335":1,"1338":1,"1339":1,"1355":5,"1499":1,"1525":3,"1527":2,"2043":1,"2406":1,"2607":2,"2632":2,"2703":14}}],["ddr",{"2":{"1907":3}}],["ddram",{"0":{"1628":1},"1":{"1629":1},"2":{"1621":2,"1628":1,"1629":1}}],["ddrb",{"2":{"1312":1}}],["dd",{"2":{"176":2,"188":1,"191":10,"199":7,"211":1,"236":2,"277":6,"349":2}}],["djinn",{"2":{"176":1,"266":1}}],["dt40",{"2":{"222":1}}],["dtisaac",{"2":{"122":1}}],["dtisaac01",{"2":{"122":2}}],["dt",{"2":{"119":3,"2375":3,"2728":22}}],["dzr",{"2":{"2153":1}}],["dz60",{"2":{"211":1,"370":2}}],["dz60rgb",{"2":{"114":1,"149":1}}],["dztech",{"2":{"102":1,"149":1,"199":1,"211":1}}],["dribin",{"2":{"2311":1}}],["driving",{"2":{"655":1,"1225":1}}],["drives",{"2":{"176":1,"1390":1}}],["drive",{"2":{"173":1,"502":1,"662":1,"1134":1,"1391":1,"1395":1,"1396":1,"1458":1,"1573":2,"1576":1,"1577":1}}],["driven",{"0":{"109":1,"169":1,"184":1,"605":1},"1":{"110":1,"111":1,"112":1,"170":1,"606":1,"607":1,"608":1,"609":1,"610":1,"611":1,"612":1,"613":1,"614":1},"2":{"76":1,"109":1,"114":1,"149":2,"160":3,"169":1,"176":4,"184":1,"191":2,"199":13,"201":1,"211":26,"222":13,"236":6,"262":1,"266":68,"277":3,"389":1,"390":1,"496":2,"605":1,"661":1,"1225":1,"1316":1,"1317":1,"1387":2,"1458":2,"1471":1,"1723":1,"1821":1,"1832":1,"1835":1,"1836":1,"1849":1,"1944":1,"2299":1,"2519":1,"2555":1,"2560":1,"2566":2,"2671":1,"2750":1}}],["driver",{"0":{"210":1,"221":1,"233":1,"240":1,"244":1,"625":1,"630":1,"642":1,"654":1,"664":1,"681":1,"682":1,"684":1,"685":1,"686":1,"687":1,"689":1,"690":1,"691":1,"692":1,"693":1,"694":1,"699":1,"729":1,"755":1,"784":1,"816":1,"848":1,"852":1,"883":1,"917":1,"951":1,"985":1,"1019":1,"1023":1,"1053":1,"1057":1,"1087":1,"1121":1,"1131":1,"1132":1,"1133":1,"1134":1,"1143":1,"1174":1,"1195":1,"1212":1,"1218":1,"1219":1,"1220":1,"1221":1,"1222":1,"1223":1,"1226":1,"1229":1,"1230":1,"1460":1,"1461":1,"1462":1,"1463":1,"1464":1,"1466":1,"1467":1,"1469":1,"1470":1,"1588":1,"1724":1,"1810":1,"1823":1,"1850":1,"1945":1,"2135":1,"2287":1,"2536":1,"2537":1,"2538":1},"1":{"626":1,"627":1,"628":1,"629":1,"631":1,"632":1,"633":1,"634":1,"635":1,"636":1,"637":1,"638":1,"639":1,"640":1,"641":1,"643":1,"644":1,"645":1,"646":1,"647":1,"648":1,"649":1,"650":1,"651":1,"652":1,"653":1,"655":1,"656":1,"657":1,"658":1,"659":1,"660":1,"661":1,"662":1,"663":1,"665":1,"666":1,"667":1,"668":1,"669":1,"670":1,"671":1,"672":1,"673":1,"674":1,"675":1,"676":1,"677":1,"678":1,"679":1,"680":1,"682":1,"683":2,"684":1,"685":1,"686":1,"687":1,"694":1,"700":1,"701":1,"702":1,"703":1,"704":1,"705":1,"706":1,"707":1,"708":1,"709":1,"710":1,"711":1,"712":1,"713":1,"714":1,"715":1,"716":1,"717":1,"718":1,"719":1,"720":1,"721":1,"722":1,"723":1,"724":1,"725":1,"726":1,"727":1,"728":1,"730":1,"731":1,"732":1,"733":1,"734":1,"735":1,"736":1,"737":1,"738":1,"739":1,"740":1,"741":1,"742":1,"743":1,"744":1,"745":1,"746":1,"747":1,"748":1,"749":1,"750":1,"751":1,"752":1,"753":1,"754":1,"756":1,"757":1,"758":1,"759":1,"760":1,"761":1,"762":1,"763":1,"764":1,"765":1,"766":1,"767":1,"768":1,"769":1,"770":1,"771":1,"772":1,"773":1,"774":1,"775":1,"776":1,"777":1,"778":1,"779":1,"780":1,"781":1,"782":1,"783":1,"785":1,"786":1,"787":1,"788":1,"789":1,"790":1,"791":1,"792":1,"793":1,"794":1,"795":1,"796":1,"797":1,"798":1,"799":1,"800":1,"801":1,"802":1,"803":1,"804":1,"805":1,"806":1,"807":1,"808":1,"809":1,"810":1,"811":1,"812":1,"813":1,"814":1,"815":1,"817":1,"818":1,"819":1,"820":1,"821":1,"822":1,"823":1,"824":1,"825":1,"826":1,"827":1,"828":1,"829":1,"830":1,"831":1,"832":1,"833":1,"834":1,"835":1,"836":1,"837":1,"838":1,"839":1,"840":1,"841":1,"842":1,"843":1,"844":1,"845":1,"846":1,"847":1,"849":1,"850":1,"851":1,"852":1,"853":1,"854":1,"855":1,"856":1,"857":1,"858":1,"859":1,"860":1,"861":1,"862":1,"863":1,"864":1,"865":1,"866":1,"867":1,"868":1,"869":1,"870":1,"871":1,"872":1,"873":1,"874":1,"875":1,"876":1,"877":1,"878":1,"879":1,"880":1,"881":1,"882":1,"884":1,"885":1,"886":1,"887":1,"888":1,"889":1,"890":1,"891":1,"892":1,"893":1,"894":1,"895":1,"896":1,"897":1,"898":1,"899":1,"900":1,"901":1,"902":1,"903":1,"904":1,"905":1,"906":1,"907":1,"908":1,"909":1,"910":1,"911":1,"912":1,"913":1,"914":1,"915":1,"916":1,"918":1,"919":1,"920":1,"921":1,"922":1,"923":1,"924":1,"925":1,"926":1,"927":1,"928":1,"929":1,"930":1,"931":1,"932":1,"933":1,"934":1,"935":1,"936":1,"937":1,"938":1,"939":1,"940":1,"941":1,"942":1,"943":1,"944":1,"945":1,"946":1,"947":1,"948":1,"949":1,"950":1,"952":1,"953":1,"954":1,"955":1,"956":1,"957":1,"958":1,"959":1,"960":1,"961":1,"962":1,"963":1,"964":1,"965":1,"966":1,"967":1,"968":1,"969":1,"970":1,"971":1,"972":1,"973":1,"974":1,"975":1,"976":1,"977":1,"978":1,"979":1,"980":1,"981":1,"982":1,"983":1,"984":1,"986":1,"987":1,"988":1,"989":1,"990":1,"991":1,"992":1,"993":1,"994":1,"995":1,"996":1,"997":1,"998":1,"999":1,"1000":1,"1001":1,"1002":1,"1003":1,"1004":1,"1005":1,"1006":1,"1007":1,"1008":1,"1009":1,"1010":1,"1011":1,"1012":1,"1013":1,"1014":1,"1015":1,"1016":1,"1017":1,"1018":1,"1020":1,"1021":1,"1022":1,"1023":1,"1024":1,"1025":1,"1026":1,"1027":1,"1028":1,"1029":1,"1030":1,"1031":1,"1032":1,"1033":1,"1034":1,"1035":1,"1036":1,"1037":1,"1038":1,"1039":1,"1040":1,"1041":1,"1042":1,"1043":1,"1044":1,"1045":1,"1046":1,"1047":1,"1048":1,"1049":1,"1050":1,"1051":1,"1052":1,"1054":1,"1055":1,"1056":1,"1057":1,"1058":1,"1059":1,"1060":1,"1061":1,"1062":1,"1063":1,"1064":1,"1065":1,"1066":1,"1067":1,"1068":1,"1069":1,"1070":1,"1071":1,"1072":1,"1073":1,"1074":1,"1075":1,"1076":1,"1077":1,"1078":1,"1079":1,"1080":1,"1081":1,"1082":1,"1083":1,"1084":1,"1085":1,"1086":1,"1088":1,"1089":1,"1090":1,"1091":1,"1092":1,"1093":1,"1094":1,"1095":1,"1096":1,"1097":1,"1098":1,"1099":1,"1100":1,"1101":1,"1102":1,"1103":1,"1104":1,"1105":1,"1106":1,"1107":1,"1108":1,"1109":1,"1110":1,"1111":1,"1112":1,"1113":1,"1114":1,"1115":1,"1116":1,"1117":1,"1118":1,"1119":1,"1120":1,"1122":1,"1123":1,"1124":1,"1125":1,"1126":1,"1127":1,"1128":1,"1129":1,"1130":1,"1131":1,"1132":2,"1133":2,"1134":2,"1135":1,"1136":1,"1137":1,"1138":1,"1139":1,"1140":1,"1141":1,"1142":1,"1144":1,"1145":1,"1146":1,"1147":1,"1148":1,"1149":1,"1150":1,"1151":1,"1152":1,"1153":1,"1154":1,"1155":1,"1156":1,"1157":1,"1158":1,"1159":1,"1160":1,"1161":1,"1162":1,"1163":1,"1164":1,"1165":1,"1166":1,"1167":1,"1168":1,"1169":1,"1170":1,"1171":1,"1172":1,"1173":1,"1175":1,"1176":1,"1177":1,"1178":1,"1179":1,"1180":1,"1181":1,"1182":1,"1183":1,"1184":1,"1185":1,"1186":1,"1187":1,"1188":1,"1189":1,"1190":1,"1191":1,"1192":1,"1193":1,"1194":1,"1196":1,"1197":1,"1198":1,"1199":1,"1200":1,"1201":1,"1202":1,"1203":1,"1204":1,"1205":1,"1206":1,"1207":1,"1208":1,"1209":1,"1210":1,"1211":1,"1213":1,"1214":1,"1215":1,"1216":1,"1217":1,"1218":1,"1219":2,"1220":2,"1221":2,"1222":2,"1223":2,"1224":1,"1225":1,"1226":1,"1227":2,"1228":2,"1229":1,"1230":1,"1231":1,"1232":1,"1233":1,"1461":1,"1462":1,"1463":1,"1464":1,"1589":1,"1590":1,"1591":1,"1592":1,"1593":1,"1594":1,"1595":1,"1596":1,"1597":1,"1598":1,"1599":1,"1600":1,"1601":1,"1602":1,"1603":1,"1604":1,"1605":1,"1606":1,"1607":1,"1608":1,"1609":1,"1610":1,"1611":1,"1612":1,"1613":1,"1614":1,"1615":1,"1616":1,"1617":1,"1618":1,"1619":1,"1620":1,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1,"1626":1,"1627":1,"1628":1,"1629":1,"1811":1,"1812":1,"1813":1,"1814":1,"1815":1,"1816":1,"1817":1,"1818":1,"1819":1,"1820":1,"1821":1,"1822":1,"1823":1,"2136":1,"2137":1,"2138":1,"2139":1,"2140":1,"2141":1,"2142":1,"2143":1},"2":{"21":1,"31":5,"34":5,"50":1,"65":4,"75":1,"93":3,"94":2,"107":1,"112":1,"114":12,"118":10,"128":1,"133":2,"134":8,"149":13,"160":3,"174":2,"175":1,"176":13,"183":2,"191":18,"199":4,"210":2,"211":11,"220":2,"221":11,"222":7,"224":1,"232":4,"234":8,"236":25,"240":6,"248":1,"249":11,"266":3,"277":3,"625":1,"626":7,"627":6,"628":4,"629":3,"630":1,"631":2,"635":2,"642":1,"643":4,"646":1,"654":3,"655":2,"656":2,"657":3,"660":3,"661":2,"662":2,"664":1,"665":5,"666":2,"669":3,"672":2,"673":1,"674":1,"679":1,"680":2,"681":13,"684":2,"685":2,"686":1,"687":3,"688":10,"689":3,"690":2,"691":1,"692":4,"693":4,"694":2,"700":4,"701":1,"702":2,"703":3,"707":1,"729":1,"730":5,"731":1,"734":2,"737":4,"738":1,"741":1,"743":1,"745":1,"747":1,"749":1,"751":1,"753":1,"754":1,"755":1,"756":5,"757":4,"758":1,"760":5,"763":6,"764":1,"765":1,"767":1,"768":1,"770":1,"772":1,"774":1,"776":1,"778":1,"780":1,"781":1,"782":1,"783":1,"784":1,"785":5,"786":4,"787":1,"792":5,"795":6,"796":1,"797":1,"799":1,"800":1,"802":1,"804":1,"806":1,"808":1,"810":1,"812":1,"813":1,"814":1,"815":1,"816":1,"817":5,"818":4,"819":1,"822":5,"825":6,"826":1,"827":1,"829":1,"830":1,"831":1,"832":1,"834":1,"836":1,"838":1,"840":1,"842":1,"844":1,"845":1,"846":1,"847":1,"848":1,"849":5,"850":8,"851":1,"852":4,"857":5,"860":6,"861":1,"862":1,"864":1,"865":1,"866":1,"867":1,"869":1,"871":1,"873":1,"875":1,"877":1,"879":1,"880":1,"881":1,"882":1,"883":1,"884":5,"885":4,"886":1,"891":5,"894":6,"895":1,"896":1,"898":1,"899":1,"900":1,"901":1,"903":1,"905":1,"907":1,"909":1,"911":1,"913":1,"914":1,"915":1,"916":1,"917":1,"918":5,"919":4,"920":1,"925":5,"928":6,"929":1,"930":1,"932":1,"933":1,"934":1,"935":1,"937":1,"939":1,"941":1,"943":1,"945":1,"947":1,"948":1,"949":1,"950":1,"951":1,"952":5,"953":4,"954":1,"959":5,"962":6,"963":1,"964":1,"966":1,"967":1,"968":1,"969":1,"971":1,"973":1,"975":1,"977":1,"979":1,"981":1,"982":1,"983":1,"984":1,"985":1,"986":5,"987":4,"988":1,"993":5,"996":6,"997":1,"998":1,"1000":1,"1001":1,"1002":1,"1003":1,"1005":1,"1007":1,"1009":1,"1011":1,"1013":1,"1015":1,"1016":1,"1017":1,"1018":1,"1019":1,"1020":5,"1021":8,"1022":1,"1023":4,"1027":5,"1030":6,"1031":1,"1032":1,"1034":1,"1035":1,"1036":1,"1037":1,"1039":1,"1041":1,"1043":1,"1045":1,"1047":1,"1049":1,"1050":1,"1051":1,"1052":1,"1053":1,"1054":5,"1055":8,"1056":1,"1057":4,"1061":5,"1064":6,"1065":1,"1066":1,"1068":1,"1069":1,"1070":1,"1071":1,"1073":1,"1075":1,"1077":1,"1079":1,"1081":1,"1083":1,"1084":1,"1085":1,"1086":1,"1087":1,"1088":5,"1089":4,"1090":1,"1095":5,"1098":6,"1099":1,"1100":2,"1102":1,"1103":1,"1104":1,"1105":1,"1107":1,"1109":1,"1111":1,"1113":1,"1115":1,"1117":1,"1118":1,"1119":1,"1120":1,"1121":2,"1122":4,"1123":2,"1124":3,"1126":2,"1127":6,"1128":2,"1129":3,"1130":6,"1132":4,"1133":4,"1134":1,"1137":1,"1143":1,"1144":5,"1145":4,"1146":1,"1148":5,"1151":6,"1152":1,"1153":1,"1155":1,"1156":1,"1157":1,"1158":1,"1160":1,"1162":1,"1164":1,"1166":1,"1168":1,"1170":1,"1171":1,"1172":1,"1173":1,"1175":4,"1177":1,"1179":1,"1195":1,"1196":4,"1198":1,"1200":1,"1212":1,"1213":4,"1214":1,"1218":3,"1219":3,"1220":3,"1221":3,"1222":2,"1223":2,"1226":3,"1229":1,"1230":3,"1241":2,"1317":2,"1389":1,"1390":3,"1393":1,"1394":1,"1396":2,"1460":1,"1461":2,"1462":3,"1463":1,"1464":2,"1466":2,"1467":2,"1469":3,"1470":2,"1491":2,"1493":1,"1570":2,"1575":1,"1631":3,"1724":5,"1811":1,"1813":2,"1832":1,"1833":2,"1834":1,"1835":1,"1836":1,"1837":1,"1838":1,"1841":2,"1846":1,"1847":1,"1848":1,"1849":2,"1850":6,"1851":1,"1881":1,"1904":2,"1905":2,"1906":1,"1907":2,"1908":1,"1945":5,"1959":1,"2032":3,"2115":1,"2136":1,"2235":1,"2237":1,"2263":1,"2287":1,"2289":2,"2290":3,"2291":2,"2355":1,"2531":11,"2535":1,"2536":2,"2537":2,"2538":1,"2541":10,"2543":7,"2567":1,"2573":2,"2576":1,"2577":2,"2675":1,"2676":2,"2677":2,"2678":2,"2683":4,"2688":2,"2692":2,"2694":2,"2695":2,"2697":2,"2700":5}}],["drivers",{"0":{"128":1,"146":1,"327":1,"1833":1,"2284":1,"2285":1,"2535":1,"2576":1},"1":{"147":1,"148":1,"1834":1,"1835":1,"1836":1,"1837":1,"1838":1,"1839":1,"1840":1,"1841":1,"1842":1,"1843":1,"1844":1,"1845":1,"1846":1,"1847":1,"1848":1,"1849":1,"1850":1,"2286":1,"2287":1,"2288":1,"2289":1,"2290":1,"2291":1,"2536":1,"2537":1,"2538":1},"2":{"1":1,"33":2,"65":1,"74":2,"93":1,"113":2,"114":4,"128":1,"133":2,"134":11,"175":1,"176":3,"199":1,"211":2,"222":5,"233":2,"234":1,"236":8,"249":21,"266":1,"277":2,"327":2,"625":2,"628":3,"629":1,"664":1,"666":1,"684":1,"685":1,"686":1,"688":1,"699":1,"755":1,"757":1,"784":1,"786":1,"816":1,"818":1,"848":1,"850":1,"852":1,"883":1,"885":1,"917":1,"919":1,"951":1,"953":1,"985":1,"987":1,"1019":1,"1021":1,"1023":1,"1053":1,"1055":1,"1057":1,"1087":1,"1089":1,"1121":1,"1122":2,"1143":1,"1145":1,"1174":1,"1195":1,"1218":1,"1224":2,"1241":1,"1397":1,"1459":1,"1460":2,"1464":1,"1570":1,"1723":1,"1724":1,"1725":1,"1814":1,"1821":1,"1849":2,"1850":2,"1863":1,"1944":1,"1945":1,"1946":1,"2114":1,"2284":1,"2289":1,"2535":1,"2540":1,"2541":1,"2542":2,"2566":1,"2573":14,"2574":1,"2576":11,"2578":1,"2579":3,"2677":1,"2700":1}}],["drgblight",{"2":{"2300":2}}],["dr",{"2":{"2153":3,"2632":1}}],["drum",{"2":{"2102":1}}],["drv",{"2":{"1578":1}}],["drv2605l",{"0":{"1574":1,"1578":1,"1579":1,"1580":1},"1":{"1575":1,"1576":1,"1577":1,"1578":1},"2":{"221":2,"1570":1,"1572":4,"1574":1,"1576":5,"1577":8,"1578":1,"1579":2}}],["drone",{"2":{"616":1,"621":1}}],["drops",{"2":{"2226":1}}],["dropdown",{"2":{"626":1,"1235":1,"1236":1,"2183":1,"2513":2}}],["drop",{"2":{"73":1,"114":1,"119":1,"131":3,"134":1,"172":1,"173":1,"207":2,"211":1,"222":2,"236":1,"537":1,"540":1,"1310":1,"2398":1,"2411":1,"2436":1,"2490":1,"2527":1,"2545":1}}],["dropped",{"0":{"166":1},"2":{"50":1}}],["dry",{"2":{"396":1}}],["drhigsby",{"2":{"143":4,"149":2}}],["drastically",{"2":{"1331":1}}],["drashna",{"2":{"93":1,"114":5,"123":1,"134":1,"175":1,"179":1,"191":1,"1382":1,"1383":1,"1957":1}}],["drags",{"2":{"1809":1}}],["drag",{"0":{"1858":1,"1859":1},"2":{"236":1,"540":1,"1858":3,"1859":10,"1903":1,"2452":1}}],["drawtext",{"2":{"2577":7}}],["drawimage",{"2":{"2577":7}}],["drawing",{"0":{"2577":1},"2":{"125":5,"153":3,"1822":1,"2143":1,"2573":1,"2576":13,"2577":8,"2581":1}}],["draws",{"2":{"2576":1,"2577":1}}],["drawbacks",{"2":{"1265":1}}],["drawn",{"2":{"587":1,"618":1,"2576":2,"2577":3,"2598":1}}],["draw",{"2":{"153":1,"618":1,"2576":3,"2577":34,"2581":2,"2598":4,"2699":1}}],["drain",{"0":{"1225":1},"2":{"149":1,"243":1,"696":2,"1126":1,"1225":2}}],["draculad",{"2":{"114":1}}],["dm",{"2":{"1553":12,"1555":2,"2363":5}}],["dmote",{"2":{"226":2,"236":1}}],["dmq",{"2":{"176":1}}],["dmacros",{"2":{"1384":1}}],["dma1",{"2":{"1230":1}}],["dma",{"2":{"49":1,"50":3,"266":1,"703":4,"1221":2,"1222":1,"1223":1,"1230":4,"2528":1}}],["dmas",{"2":{"49":1}}],["dmamux",{"2":{"49":4,"1230":3}}],["dm9records",{"2":{"37":3}}],["dutch",{"2":{"2703":1}}],["duty",{"2":{"63":1,"704":2,"1454":1,"1457":1,"1459":1}}],["duophony",{"2":{"502":3}}],["duckypad",{"2":{"222":1}}],["ducky",{"2":{"211":1}}],["duckduckgo",{"2":{"196":1,"1680":1}}],["dumbpad",{"2":{"191":1}}],["dummy",{"2":{"191":1,"222":1,"636":1,"1677":4,"2738":4}}],["dumps",{"2":{"2262":3}}],["dump",{"2":{"49":3,"176":1,"211":1,"277":1,"566":1,"2262":5}}],["dubba175",{"2":{"143":2}}],["duplex",{"0":{"1125":1,"1128":1},"1":{"1126":1,"1127":1,"1129":1,"1130":1},"2":{"93":1,"107":3,"114":2,"176":1,"191":1,"277":1,"1121":2,"1122":2,"1125":4,"1126":1,"1127":1,"1128":4,"1129":1,"1130":3,"1134":3,"1136":2,"2543":4}}],["duplicating",{"2":{"2523":1}}],["duplication",{"2":{"4":1,"211":1,"236":3,"606":1,"2523":1,"2566":1}}],["duplicates",{"2":{"236":1}}],["duplicated",{"2":{"75":1,"236":1,"1594":1}}],["duplicate",{"2":{"4":1,"70":2,"75":1,"76":1,"160":1,"176":1,"191":2,"199":3,"211":2,"266":1,"277":1,"610":1,"2279":1,"2474":2,"2595":1,"2671":1}}],["duration",{"2":{"119":1,"120":1,"222":2,"599":1,"1354":1,"1357":2,"1406":3,"1504":1,"1675":1,"1951":1,"2044":2}}],["durgod",{"2":{"86":4,"102":2,"114":2,"149":1,"181":4,"191":1,"199":1,"207":2,"211":1}}],["during",{"2":{"49":1,"103":1,"107":1,"116":1,"118":1,"126":1,"131":1,"149":1,"170":1,"176":1,"191":1,"201":2,"213":1,"236":1,"249":1,"273":1,"396":1,"504":1,"571":1,"575":1,"587":1,"592":1,"658":1,"659":1,"662":1,"684":1,"1292":1,"1399":1,"1435":1,"1459":1,"1554":1,"1573":2,"1579":1,"1815":1,"1824":1,"1825":1,"1864":1,"1866":2,"1867":1,"2042":1,"2130":1,"2139":1,"2279":1,"2524":2,"2566":1,"2576":2,"2584":1,"2595":1,"2596":1,"2679":1,"2721":1,"2749":1}}],["dualbank",{"2":{"176":1}}],["dual",{"2":{"49":3,"114":2,"149":1,"176":1,"194":1,"505":3,"515":1,"1728":4,"1949":15,"2161":1,"2263":1,"2524":8,"2711":2,"2728":2,"2729":8,"2735":8,"2736":5,"2737":1,"2738":1}}],["due",{"2":{"45":1,"114":1,"120":1,"128":1,"134":2,"153":1,"167":1,"199":1,"233":1,"236":1,"273":1,"1128":1,"1217":1,"1219":1,"1221":1,"1230":1,"1241":1,"1243":1,"1270":1,"1289":1,"1403":1,"1416":1,"1437":1,"1447":1,"1725":1,"1873":1,"1946":1,"2031":1,"2146":1,"2182":1,"2183":1,"2343":1,"2349":1,"2401":1,"2406":1,"2468":1,"2514":1,"2521":1,"2549":1,"2564":1,"2566":1,"2573":1,"2664":1,"2718":1,"2719":1,"2746":1}}],["dfsr",{"2":{"2353":1}}],["dflash",{"2":{"1385":1}}],["df11",{"2":{"629":1,"2240":1}}],["df1deb37c163",{"2":{"315":1}}],["df",{"2":{"38":1,"247":2,"1335":1,"1548":2,"1865":1,"2367":1,"2385":1,"2395":1}}],["dfu",{"0":{"1241":1,"2230":1,"2231":1,"2240":1,"2243":1,"2244":1,"2343":1,"2450":1},"1":{"2231":1,"2232":1,"2241":1},"2":{"12":1,"49":2,"111":1,"114":1,"160":1,"199":1,"222":2,"240":5,"509":6,"514":4,"629":17,"1238":3,"1287":4,"1573":1,"2126":6,"2230":11,"2231":1,"2232":5,"2239":1,"2240":6,"2241":6,"2242":4,"2243":3,"2244":4,"2262":4,"2348":1,"2350":2,"2353":1,"2450":1,"2453":5,"2517":1}}],["d14",{"2":{"635":2}}],["d13",{"2":{"635":2}}],["d12",{"2":{"635":2}}],["d11",{"2":{"635":2}}],["d10",{"2":{"635":2}}],["d1",{"2":{"34":1,"511":1,"702":2,"1124":1,"1197":2,"1319":1,"1793":1,"1904":1,"2119":1,"2128":1,"2371":1,"2530":1,"2557":1}}],["d0",{"2":{"34":1,"502":1,"511":2,"702":2,"1124":1,"1197":2,"1293":1,"1319":1,"2119":1,"2125":1,"2128":2,"2530":1}}],["dio",{"2":{"2352":1}}],["dioded",{"2":{"2311":1}}],["diodes",{"0":{"2273":1,"2283":1},"2":{"2117":1,"2266":1,"2270":1,"2272":1,"2273":3,"2274":2,"2557":1,"2648":1,"2689":2}}],["diode",{"2":{"70":2,"111":1,"199":1,"502":2,"1552":1,"2125":2,"2133":3,"2268":4,"2272":1,"2273":12,"2276":2,"2279":2,"2311":4,"2557":1,"2558":1,"2566":1,"2646":1,"2689":1}}],["diameter",{"2":{"1842":3}}],["diagram",{"2":{"1573":1,"2533":1}}],["diagnose",{"2":{"1252":1}}],["dialog",{"2":{"1273":1}}],["die",{"2":{"1217":1}}],["dinterrupt",{"2":{"514":1}}],["ding",{"2":{"120":1,"1354":1}}],["diy",{"2":{"502":2,"2712":3}}],["dimensional",{"2":{"2155":1,"2689":1}}],["dimensions",{"2":{"1838":1}}],["dims",{"2":{"2038":1}}],["dimming",{"2":{"1454":1}}],["dimmer",{"2":{"435":1}}],["dim",{"2":{"435":1}}],["dictated",{"2":{"1400":1}}],["dictionaries",{"0":{"468":1},"2":{"1356":1,"1527":1,"2686":2,"2688":1,"2695":1}}],["dictionary",{"0":{"1527":1},"2":{"196":1,"436":1,"438":1,"439":1,"1440":3,"1441":1,"2144":1,"2674":1,"2686":4,"2688":2,"2694":1,"2695":2}}],["dict",{"2":{"211":1,"611":1,"1442":1}}],["dilemma",{"2":{"176":2,"249":1}}],["dig",{"2":{"1396":1,"2315":1,"2724":1}}],["digest",{"2":{"153":1}}],["digit",{"2":{"1640":3,"2091":1,"2093":1,"2095":1,"2097":1,"2348":1,"2699":2}}],["digital",{"2":{"160":1,"519":1,"527":1,"630":1,"1325":2,"1631":1,"1949":3,"2275":2,"2711":1}}],["digits",{"2":{"134":1,"341":1,"1441":1,"2311":1}}],["digitizers",{"2":{"190":1,"1531":1}}],["digitizer",{"0":{"100":1,"190":1,"1531":1,"1536":1,"1538":1,"1539":1,"1540":1,"1541":1,"1542":1,"1543":1,"1544":1,"1545":1},"1":{"1532":1,"1533":1,"1534":1,"1535":1,"1536":1,"1537":2,"1538":1,"1539":1,"1540":1,"1541":1,"1542":1,"1543":1,"1544":1,"1545":1,"1546":2},"2":{"100":2,"114":1,"190":3,"191":2,"1534":7,"1536":1,"1537":3,"1538":1,"1545":1}}],["dive",{"2":{"2280":1}}],["diverged",{"2":{"1265":1}}],["divergetm2",{"2":{"143":2}}],["diverge3",{"2":{"143":2}}],["dividing",{"0":{"280":1},"2":{"1181":1}}],["divided",{"2":{"1820":1,"2142":1}}],["divide",{"2":{"685":1,"694":1,"1817":1}}],["dividends",{"2":{"198":1}}],["divider",{"2":{"191":1,"1630":1}}],["divine",{"2":{"236":1}}],["division",{"2":{"114":1}}],["divisors",{"2":{"1227":1,"1859":1}}],["divisor",{"0":{"1180":1},"1":{"1181":1,"1182":1},"2":{"114":1,"236":1,"666":2,"685":2,"694":2,"1181":3,"1194":1,"1226":2,"1227":1,"1819":1,"1835":2,"1836":1,"1842":2,"1849":2,"1859":6,"1912":2,"2141":2,"2576":10}}],["diffused",{"2":{"2031":1}}],["diff",{"2":{"149":1,"292":1,"400":1,"556":1,"2039":1,"2620":1}}],["difficulty",{"0":{"1664":1},"1":{"1665":1,"1666":1}}],["difficulties",{"2":{"1514":1}}],["difficult",{"2":{"119":1,"123":1,"125":1,"185":1,"246":1,"481":1,"1684":1,"1803":1,"2269":1,"2270":2,"2273":1,"2274":1,"2568":1}}],["differs",{"2":{"2559":1,"2614":1}}],["difference",{"0":{"1676":1},"2":{"1300":1,"2550":1,"2569":1}}],["differences",{"0":{"1265":1},"2":{"2460":1}}],["differentiating",{"2":{"2148":1}}],["differentiates",{"2":{"592":1}}],["differentiate",{"2":{"468":1}}],["differently",{"2":{"1403":1,"1432":1,"1804":1,"1816":1,"1824":1,"2122":1,"2131":1,"2140":1,"2160":1,"2182":1,"2393":1,"2402":1,"2739":1}}],["different",{"0":{"1877":1,"2159":1},"1":{"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1},"2":{"49":1,"191":1,"204":1,"357":1,"371":1,"481":1,"499":1,"509":1,"511":2,"556":2,"560":3,"567":1,"592":1,"626":2,"635":1,"641":2,"689":1,"695":1,"1215":1,"1216":1,"1234":1,"1250":1,"1293":1,"1319":1,"1326":1,"1334":1,"1339":2,"1346":2,"1355":1,"1363":1,"1378":5,"1385":1,"1398":1,"1402":1,"1403":1,"1406":1,"1411":1,"1416":1,"1451":1,"1454":1,"1496":1,"1498":1,"1508":1,"1524":1,"1558":1,"1575":1,"1577":1,"1655":3,"1673":1,"1676":1,"1798":1,"1802":1,"1805":1,"1811":1,"1816":1,"1824":1,"1836":2,"1849":2,"2038":1,"2040":1,"2042":1,"2059":1,"2076":1,"2112":1,"2114":1,"2131":5,"2140":1,"2147":1,"2148":1,"2229":2,"2259":1,"2275":1,"2280":2,"2284":1,"2327":1,"2342":1,"2408":1,"2427":2,"2450":2,"2501":1,"2503":1,"2508":1,"2564":2,"2566":2,"2576":2,"2585":1,"2591":1,"2592":2,"2702":1,"2711":1,"2729":1,"2735":1,"2743":1,"2745":1,"2750":2,"2753":2}}],["differ",{"2":{"69":1,"656":1,"1842":1,"2162":1,"2342":1,"2477":1}}],["dip",{"0":{"105":1,"247":1,"1547":1,"1548":1,"1551":1,"1552":1,"2682":1},"1":{"1548":1,"1549":1,"1550":1,"1551":1,"1552":1},"2":{"105":13,"114":6,"191":1,"236":3,"247":9,"249":3,"633":1,"1547":7,"1548":10,"1549":6,"1551":1,"1552":1,"2682":3,"2697":2}}],["di",{"2":{"70":1,"201":1,"211":3,"506":2,"644":2,"1214":2,"1223":1,"1225":2,"2032":2,"2675":1,"2700":1}}],["didn",{"2":{"1359":1,"2167":1,"2512":1}}],["did",{"0":{"1253":1},"2":{"31":1,"125":1,"163":1,"185":1,"221":1,"545":1,"1412":2,"1450":1,"1686":4,"2279":1,"2422":1,"2425":1,"2454":1}}],["disk",{"2":{"2245":1,"2247":1,"2249":1}}],["dis",{"0":{"1519":1}}],["distclean",{"2":{"2262":1}}],["distinguish",{"2":{"2169":1,"2662":1}}],["distinction",{"2":{"2408":1}}],["distinct",{"0":{"2731":1},"2":{"1121":1,"1129":1,"1454":1,"1562":1,"1943":1}}],["distance",{"2":{"1839":9,"1849":2,"1950":1,"2276":1}}],["distances",{"2":{"1410":1,"1804":1,"1806":1}}],["distribution",{"2":{"2351":1}}],["distributed",{"2":{"1380":1,"2566":1,"2570":1}}],["distribute",{"2":{"526":1}}],["distros",{"2":{"1254":2,"2183":1,"2466":1}}],["distro",{"2":{"199":1}}],["disputes",{"2":{"2719":1}}],["disposal",{"2":{"2036":1}}],["displacements",{"2":{"1531":1}}],["displaying",{"2":{"2129":2}}],["displayed",{"2":{"424":1,"431":1,"1216":1,"1217":1,"2584":1,"2615":1}}],["displays",{"0":{"1820":1,"2142":1},"1":{"1821":1},"2":{"153":2,"210":1,"232":2,"236":1,"248":2,"249":1,"378":1,"587":1,"629":1,"1604":2,"1733":1,"1816":1,"1817":1,"1820":7,"1821":1,"1957":1,"2140":1,"2152":1,"2262":2,"2287":1,"2566":2,"2573":1,"2574":1,"2576":23}}],["display\\t",{"2":{"31":1,"34":1}}],["display",{"0":{"2576":1},"2":{"30":1,"31":2,"33":1,"34":1,"49":1,"63":1,"64":1,"82":1,"83":1,"92":1,"114":1,"123":1,"125":1,"153":1,"185":1,"211":1,"236":1,"378":1,"418":1,"586":1,"1247":1,"1248":1,"1249":1,"1448":1,"1533":1,"1591":8,"1596":1,"1598":1,"1600":1,"1602":1,"1603":1,"1605":2,"1607":1,"1609":1,"1615":1,"1616":1,"1617":1,"1618":1,"1619":1,"1622":2,"1624":2,"1628":1,"1803":1,"1815":3,"1816":1,"1817":3,"1818":2,"1819":5,"1820":23,"1821":2,"1822":13,"2129":2,"2136":1,"2139":4,"2140":4,"2141":5,"2142":8,"2143":14,"2150":2,"2280":1,"2298":1,"2355":1,"2439":2,"2556":1,"2567":1,"2573":1,"2574":5,"2576":13,"2577":46,"2578":1,"2579":2,"2581":15,"2584":1,"2614":1,"2619":1,"2671":1,"2686":1}}],["dispatched",{"2":{"2744":1}}],["dispatches",{"2":{"2744":1}}],["dispatchconsumerevent",{"2":{"1279":1}}],["dispatch",{"2":{"521":1,"2437":1,"2748":1}}],["disregarding",{"2":{"2720":1}}],["disregarded",{"2":{"282":3,"341":1}}],["disrupting",{"2":{"2041":1}}],["disruption",{"2":{"103":1}}],["discretion",{"2":{"2567":1,"2720":1}}],["disclosure",{"2":{"2566":1}}],["disc",{"2":{"1571":1}}],["discusses",{"2":{"1325":1}}],["discussed",{"2":{"50":1,"560":1,"1346":1}}],["discuss",{"2":{"496":1,"2564":1}}],["discussion",{"2":{"265":1,"2716":1}}],["discarded",{"2":{"176":1,"681":1,"2575":1}}],["discovered",{"2":{"2292":1}}],["discovery",{"2":{"119":1,"191":1,"222":1}}],["discouraged",{"2":{"282":1,"607":1,"2564":1}}],["disconnection",{"2":{"2128":1}}],["disconnect",{"2":{"149":1,"191":2,"1255":1,"2118":1}}],["disconnected",{"2":{"107":1,"134":1,"176":1,"2128":2,"2453":1}}],["discord",{"0":{"350":1},"2":{"49":1,"50":1,"213":1,"228":1,"276":1,"343":1,"344":1,"345":1,"349":1,"350":1,"356":1,"485":1,"551":1,"553":1,"560":1,"585":1,"609":1,"613":1,"1264":1,"2280":1,"2317":1,"2450":1,"2455":1,"2545":1,"2563":1,"2564":2,"2567":1,"2714":1}}],["discharge",{"2":{"49":1}}],["disappearance",{"2":{"2720":1}}],["disappearing",{"2":{"26":1}}],["disadvantages",{"2":{"2326":1}}],["disallows",{"2":{"2325":1}}],["disallow",{"2":{"1519":1}}],["disabling",{"0":{"1684":1,"2043":1,"2583":1},"2":{"28":1,"134":1,"266":1,"486":1,"512":1,"1271":2,"1300":2,"1873":1,"1876":1,"2628":1,"2705":3,"2711":1,"2737":1}}],["disables",{"2":{"114":1,"505":1,"515":1,"1332":1,"1425":1,"1499":2,"1522":1,"1526":1,"1554":1,"1873":1,"1874":1,"1954":1,"2035":1,"2575":4,"2705":3}}],["disabled",{"0":{"503":1},"2":{"50":1,"124":1,"134":2,"236":1,"249":1,"502":1,"560":2,"636":1,"698":2,"1294":1,"1316":1,"1332":1,"1398":1,"1406":1,"1411":2,"1414":1,"1439":1,"1446":3,"1495":1,"1516":1,"1522":1,"1528":1,"1570":2,"1573":1,"1847":1,"1866":2,"1873":1,"1876":1,"1932":1,"2045":1,"2073":1,"2111":1,"2161":1,"2183":1,"2305":1,"2343":4,"2574":1,"2699":1,"2743":1}}],["disable",{"0":{"25":1,"1475":1,"1487":1,"1739":1,"1740":1,"1876":1,"1966":1,"1967":1,"2053":1},"2":{"25":7,"50":1,"77":2,"114":6,"134":4,"158":1,"160":1,"176":1,"183":2,"191":2,"194":1,"195":1,"211":2,"222":2,"232":1,"236":3,"249":2,"335":1,"375":1,"435":1,"503":6,"505":1,"515":1,"592":1,"703":1,"750":3,"752":1,"777":3,"779":1,"841":3,"843":1,"876":3,"878":1,"910":3,"912":1,"944":3,"946":1,"978":3,"980":1,"1167":3,"1169":1,"1177":1,"1294":1,"1298":1,"1300":2,"1328":1,"1332":2,"1384":1,"1403":2,"1446":1,"1449":1,"1500":1,"1501":1,"1512":2,"1519":2,"1526":1,"1553":1,"1576":1,"1577":1,"1668":1,"1684":1,"1803":1,"1817":2,"1859":3,"1861":1,"1873":3,"1876":2,"1878":2,"1910":1,"1912":2,"1948":2,"1954":1,"1960":2,"2034":2,"2035":1,"2037":1,"2039":2,"2042":1,"2043":1,"2053":2,"2056":1,"2070":2,"2104":1,"2106":1,"2107":4,"2113":2,"2128":2,"2141":1,"2150":1,"2183":1,"2263":4,"2347":1,"2370":2,"2396":2,"2437":1,"2461":1,"2506":1,"2513":2,"2516":1,"2575":2,"2674":1,"2688":1,"2694":1,"2695":1,"2696":2,"2699":1,"2705":2,"2706":2,"2707":1,"2711":2,"2728":1}}],["dir=",{"2":{"2443":1,"2444":1,"2445":1}}],["dirty",{"2":{"114":1,"191":2,"199":1,"230":1,"1534":1,"1537":1,"1538":1,"1638":1,"1641":1,"1816":1,"1817":1,"1820":3,"1822":5,"2142":3,"2143":2,"2474":1,"2576":5}}],["dir",{"2":{"114":1}}],["dire",{"2":{"93":1}}],["directives",{"2":{"453":2,"496":1}}],["directive",{"2":{"172":1}}],["directional",{"0":{"259":1},"2":{"236":1,"256":1}}],["directions",{"2":{"201":2,"211":1,"1557":1,"1559":1,"1798":1,"1807":1,"1921":1}}],["direction",{"2":{"13":2,"70":2,"111":1,"191":1,"199":1,"211":2,"502":1,"560":1,"1556":5,"1557":2,"1808":1,"1817":1,"1915":1,"1932":2,"1948":2,"2034":2,"2268":1,"2272":1,"2376":2,"2377":2,"2557":2,"2558":1,"2566":1,"2689":1}}],["directpins",{"2":{"114":1}}],["directors",{"2":{"347":1}}],["directory",{"2":{"36":2,"50":1,"114":1,"132":1,"133":1,"134":3,"149":2,"160":1,"222":1,"236":1,"331":1,"370":9,"371":2,"373":1,"378":2,"381":2,"383":2,"386":2,"387":1,"389":1,"390":1,"391":1,"401":1,"404":1,"405":1,"446":1,"454":1,"529":1,"557":1,"564":1,"1241":1,"1729":2,"1935":1,"1952":2,"2252":1,"2258":1,"2259":1,"2264":1,"2277":1,"2347":1,"2353":1,"2421":1,"2437":2,"2441":1,"2445":3,"2446":1,"2447":1,"2452":1,"2463":1,"2469":1,"2498":3,"2501":2,"2513":2,"2523":1,"2548":1,"2553":2,"2575":6}}],["directories",{"2":{"18":1,"113":1,"114":3,"2564":1,"2566":1}}],["directly",{"2":{"16":1,"50":1,"132":1,"134":1,"164":1,"236":1,"282":3,"341":1,"432":1,"452":1,"506":2,"522":1,"609":1,"633":1,"661":1,"689":1,"1129":1,"1136":1,"1219":1,"1341":2,"1396":1,"1462":1,"1471":1,"1491":1,"1492":1,"1534":1,"1551":1,"1561":1,"1662":1,"1670":1,"1729":1,"1791":2,"1832":1,"1849":1,"1859":1,"1908":1,"1952":1,"2036":1,"2069":1,"2131":2,"2134":1,"2181":1,"2238":1,"2259":2,"2269":1,"2270":1,"2311":1,"2318":1,"2324":1,"2328":1,"2341":1,"2430":1,"2458":1,"2477":1,"2497":1,"2526":1,"2529":1,"2551":1,"2566":2,"2588":1,"2589":1,"2596":1,"2600":1}}],["direct",{"0":{"284":1,"1236":1,"2051":1,"2558":1},"2":{"3":1,"7":1,"15":1,"63":1,"199":2,"222":6,"279":1,"413":1,"502":1,"511":5,"580":3,"1234":9,"1235":3,"1236":3,"1948":1,"2131":2,"2497":1,"2558":3,"2566":2,"2689":2,"2745":1}}],["dirction",{"2":{"13":1}}],["dollars",{"2":{"2664":1}}],["dollar",{"2":{"2378":1,"2399":1}}],["dolor",{"2":{"301":1}}],["dor1",{"2":{"1907":1}}],["doe",{"2":{"1436":3,"1511":2}}],["doesnt",{"2":{"191":1,"515":1}}],["doesn",{"0":{"1270":1,"1281":1,"1288":1,"1291":1,"1292":1},"2":{"114":1,"352":1,"401":1,"515":1,"540":1,"560":1,"621":1,"1241":1,"1271":1,"1286":1,"1288":2,"1303":1,"1340":1,"1383":1,"1385":1,"1406":1,"1438":1,"1442":1,"1515":1,"1518":1,"1820":1,"1852":1,"2064":1,"2145":1,"2262":1,"2263":1,"2274":1,"2279":1,"2286":1,"2307":1,"2454":1,"2455":1,"2513":1,"2542":1,"2746":2,"2748":1,"2753":1}}],["does",{"0":{"562":1,"1243":1,"1411":1,"1438":1,"2322":1,"2323":1},"2":{"23":1,"28":1,"50":1,"134":1,"236":1,"276":1,"285":1,"303":1,"305":1,"307":1,"401":1,"433":1,"436":1,"437":1,"446":1,"462":1,"502":1,"510":1,"527":1,"540":1,"550":1,"556":3,"567":1,"572":1,"584":1,"592":1,"597":1,"625":1,"647":1,"654":1,"663":1,"675":1,"689":1,"697":1,"702":1,"741":1,"745":1,"749":1,"751":1,"768":1,"772":1,"776":1,"778":1,"800":1,"804":1,"808":1,"810":1,"832":1,"836":1,"840":1,"842":1,"867":1,"871":1,"875":1,"877":1,"901":1,"905":1,"909":1,"911":1,"935":1,"939":1,"943":1,"945":1,"969":1,"973":1,"977":1,"979":1,"1003":1,"1007":1,"1011":1,"1013":1,"1037":1,"1041":1,"1045":1,"1047":1,"1071":1,"1075":1,"1079":1,"1081":1,"1105":1,"1109":1,"1113":1,"1115":1,"1132":1,"1133":1,"1158":1,"1162":1,"1166":1,"1168":1,"1195":1,"1284":1,"1287":1,"1326":1,"1340":1,"1341":1,"1357":1,"1361":1,"1397":2,"1410":1,"1412":1,"1423":1,"1431":1,"1491":1,"1499":2,"1527":1,"1558":1,"1631":1,"1654":1,"1676":1,"1822":2,"1828":1,"1921":1,"1938":1,"1948":2,"2065":1,"2123":1,"2153":1,"2169":1,"2171":1,"2181":1,"2256":1,"2272":1,"2273":1,"2305":1,"2321":1,"2325":1,"2326":2,"2348":1,"2351":1,"2355":1,"2356":1,"2377":2,"2408":1,"2429":2,"2454":1,"2457":2,"2501":1,"2530":1,"2544":1,"2546":2,"2549":1,"2556":1,"2564":2,"2566":2,"2572":1,"2589":1,"2615":1,"2617":1,"2699":1,"2719":1,"2729":1,"2742":1,"2746":1}}],["doing",{"2":{"305":1,"435":1,"628":1,"1250":1,"1278":1,"1341":2,"1344":1,"1398":1,"1515":1,"2262":1,"2272":1,"2516":1,"2745":1,"2756":1}}],["doio",{"2":{"176":1,"191":1,"222":1,"249":1}}],["domain",{"2":{"279":1}}],["dogtag",{"2":{"211":1,"277":1,"390":2}}],["doxygen",{"2":{"160":1,"211":1,"2548":1}}],["doubt",{"2":{"656":1,"2418":1}}],["doubled",{"2":{"635":1,"1929":1,"2169":1}}],["double",{"0":{"2164":1,"2539":1},"2":{"152":1,"215":2,"335":1,"461":1,"548":1,"627":1,"628":1,"1336":1,"1500":4,"1929":1,"2122":2,"2161":3,"2164":1,"2167":1,"2169":22,"2170":4,"2171":5,"2245":2,"2247":2,"2249":3,"2275":1,"2280":1,"2348":1,"2378":1,"2399":1,"2411":1,"2498":1,"2539":7,"2541":1,"2680":1,"2705":1}}],["dout",{"2":{"45":1}}],["dozen0",{"2":{"143":2}}],["dozens",{"2":{"112":1}}],["dosa40rgb",{"2":{"134":1}}],["doc",{"2":{"199":1,"1275":1}}],["docker",{"0":{"2250":1},"1":{"2251":1,"2252":1,"2253":1,"2254":1},"2":{"114":1,"149":1,"2250":1,"2251":2,"2252":9,"2254":2}}],["docstring",{"0":{"463":1,"464":1,"465":1},"2":{"462":2}}],["docstrings",{"0":{"462":1},"1":{"463":1,"464":1,"465":1},"2":{"455":1,"462":2}}],["docs",{"0":{"402":1,"403":1},"2":{"114":3,"149":1,"160":1,"176":4,"182":1,"191":4,"199":2,"211":1,"222":1,"236":3,"279":1,"341":1,"350":1,"402":2,"403":3,"557":3,"558":1,"560":1,"607":1,"621":3,"626":1,"1243":1,"1321":1,"2258":1,"2280":1,"2409":1,"2482":1,"2553":2,"2566":1}}],["doctor",{"0":{"376":1,"397":1},"2":{"114":3,"176":1,"199":3,"376":4,"397":1,"2454":1}}],["documenting",{"0":{"621":1},"2":{"2354":1}}],["documented",{"2":{"213":1,"1450":1,"2237":1,"2286":1,"2306":1,"2442":1,"2571":1,"2660":1}}],["documents",{"2":{"32":1,"114":1,"342":1,"622":1,"1310":1,"2354":1,"2401":1,"2723":2,"2724":2,"2742":1}}],["documentation",{"0":{"22":1,"278":1,"416":1,"557":1,"558":1,"573":1,"577":1,"579":1,"580":1,"583":1,"586":1,"591":1,"595":1,"615":1,"622":1,"1333":1,"1345":1},"1":{"279":1,"280":1,"281":1,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":1,"423":1,"424":1,"558":1,"623":1,"624":1},"2":{"13":1,"22":1,"93":1,"99":1,"118":1,"123":1,"124":1,"134":1,"138":1,"149":1,"152":1,"153":1,"172":1,"174":1,"182":1,"195":1,"196":1,"202":1,"222":2,"228":1,"229":1,"232":1,"245":1,"247":1,"277":1,"278":1,"372":1,"403":1,"408":1,"409":1,"410":1,"446":1,"557":5,"611":1,"615":1,"616":1,"621":2,"641":1,"690":1,"1267":1,"1301":1,"1655":1,"1724":1,"1881":1,"1921":1,"1945":1,"2115":1,"2129":1,"2229":1,"2271":1,"2275":1,"2311":1,"2313":1,"2315":1,"2317":1,"2513":1,"2566":1,"2578":1,"2633":1,"2645":1,"2649":1,"2652":1,"2661":1,"2663":1,"2666":1,"2667":1,"2751":1,"2752":1}}],["document",{"0":{"355":1},"2":{"0":1,"76":1,"93":1,"176":1,"199":1,"307":1,"337":1,"341":1,"349":1,"367":1,"412":1,"427":1,"462":1,"482":1,"560":2,"615":1,"1341":1,"1380":1,"2152":1,"2441":1,"2473":2,"2476":2,"2492":1,"2503":1,"2514":1,"2563":1,"2564":2,"2615":2,"2721":1,"2742":1,"2745":1,"2746":1}}],["dots",{"2":{"485":1,"1589":2}}],["dotty",{"2":{"374":1,"611":1}}],["dotted",{"2":{"282":1}}],["dot",{"0":{"111":1},"2":{"111":1,"313":1,"530":2,"611":1,"1423":1,"1430":5,"1584":1,"1935":1,"2355":2,"2388":1,"2394":1,"2407":1}}],["downstream",{"2":{"2566":1}}],["downside",{"2":{"2543":1}}],["downward",{"2":{"1855":2}}],["downloadable",{"2":{"2303":1}}],["downloads",{"2":{"389":1,"390":1,"391":1,"522":2,"525":1,"2277":1,"2479":1}}],["downloaded",{"2":{"331":1,"2351":1,"2353":1,"2437":1,"2513":2}}],["download",{"0":{"309":1,"2497":1},"2":{"158":1,"304":1,"309":1,"310":1,"312":1,"329":1,"527":2,"541":1,"542":1,"1241":2,"2255":1,"2277":1,"2436":1,"2439":1,"2448":1,"2461":1,"2497":1,"2507":1,"2509":1,"2512":1}}],["down",{"0":{"590":1,"1361":1,"2641":1},"2":{"90":2,"119":3,"120":1,"149":1,"209":1,"222":1,"236":1,"255":1,"266":1,"313":1,"530":4,"537":1,"571":1,"589":1,"590":1,"591":2,"623":1,"624":1,"626":1,"684":1,"696":1,"1273":1,"1284":1,"1312":1,"1326":6,"1329":1,"1335":1,"1338":1,"1340":1,"1354":1,"1357":6,"1360":1,"1361":3,"1367":1,"1403":2,"1406":4,"1408":2,"1411":2,"1412":1,"1416":1,"1434":3,"1435":3,"1436":1,"1446":2,"1456":2,"1495":1,"1518":2,"1529":1,"1560":1,"1564":1,"1565":1,"1572":2,"1577":1,"1586":2,"1651":2,"1653":1,"1656":2,"1659":2,"1665":6,"1668":3,"1670":3,"1671":6,"1673":9,"1674":6,"1675":4,"1676":1,"1727":2,"1728":7,"1793":8,"1801":5,"1803":1,"1821":1,"1822":1,"1836":1,"1851":1,"1859":1,"1874":2,"1878":1,"1921":1,"1932":10,"1949":7,"1954":1,"2034":4,"2071":1,"2075":1,"2106":2,"2125":1,"2143":1,"2152":4,"2169":1,"2171":1,"2182":1,"2231":1,"2238":1,"2263":1,"2279":1,"2303":1,"2308":1,"2311":2,"2355":14,"2357":2,"2358":3,"2360":2,"2366":1,"2369":2,"2371":8,"2372":5,"2375":2,"2376":4,"2389":1,"2392":6,"2393":5,"2394":2,"2398":1,"2403":1,"2407":2,"2410":1,"2411":1,"2414":1,"2423":1,"2436":1,"2450":4,"2490":4,"2517":1,"2577":5,"2584":1,"2641":1,"2651":1,"2654":1,"2659":1,"2662":1,"2705":1,"2711":2,"2728":14,"2729":5,"2731":4,"2732":6,"2733":4,"2735":8,"2736":2,"2737":3,"2757":2}}],["downbubble",{"2":{"43":2}}],["dongles",{"2":{"2353":1}}],["dongle",{"2":{"2241":2,"2350":1}}],["donating",{"2":{"551":1}}],["done",{"2":{"104":1,"114":1,"125":1,"127":2,"182":1,"185":2,"224":1,"331":1,"347":1,"358":1,"482":1,"542":1,"546":1,"597":1,"614":1,"627":1,"681":1,"695":1,"701":1,"1129":1,"1177":1,"1237":1,"1300":1,"1303":1,"1332":1,"1344":1,"1385":1,"1415":2,"1450":1,"1451":1,"1804":1,"1821":1,"1827":1,"1855":1,"1877":1,"2133":1,"2147":1,"2230":2,"2235":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2255":8,"2272":1,"2275":1,"2277":1,"2279":1,"2280":1,"2309":2,"2324":1,"2347":1,"2420":1,"2446":1,"2456":1,"2469":1,"2478":1,"2479":1,"2512":1,"2513":1,"2566":1,"2568":2,"2569":1,"2576":20,"2577":1,"2706":1,"2712":1,"2746":1,"2753":1}}],["don",{"0":{"551":1,"1243":1,"1258":1},"2":{"31":1,"34":1,"119":1,"149":2,"166":1,"191":1,"198":1,"199":1,"222":1,"232":1,"277":2,"317":1,"396":1,"430":1,"453":1,"454":1,"455":1,"457":1,"479":1,"551":1,"560":1,"1137":1,"1177":1,"1236":1,"1242":1,"1262":1,"1265":1,"1276":2,"1287":1,"1325":1,"1331":1,"1367":1,"1383":2,"1385":1,"1403":1,"1404":1,"1430":1,"1438":1,"1450":1,"1495":1,"1515":1,"1560":1,"1655":1,"1864":1,"1948":1,"2133":1,"2149":1,"2172":1,"2254":1,"2272":1,"2311":1,"2405":2,"2417":1,"2424":1,"2444":1,"2453":1,"2454":1,"2468":1,"2497":1,"2508":1,"2533":1,"2553":1,"2556":1,"2606":1,"2614":1,"2706":3,"2711":1,"2724":1,"2728":2,"2752":1,"2757":2}}],["do",{"0":{"353":2,"546":2,"554":1,"1286":1,"1409":1,"1413":1,"1439":1,"1500":1,"1930":1,"2159":1,"2740":1},"1":{"354":2,"355":2,"356":2,"1410":1,"1411":1,"1412":1,"1413":1,"1414":1,"1415":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"1423":1,"1424":1,"1425":1,"1426":1,"1427":1,"1428":1,"1429":1,"1430":1,"1431":1,"1432":1,"1433":1,"1434":1,"1435":1,"1436":1,"1501":1,"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1},"2":{"14":1,"92":2,"132":1,"176":1,"194":1,"199":2,"211":1,"231":3,"232":2,"241":1,"253":1,"268":1,"270":1,"318":1,"353":1,"367":1,"381":1,"401":2,"435":1,"440":2,"446":2,"453":4,"454":1,"455":3,"457":1,"459":1,"460":2,"467":1,"469":2,"471":1,"474":1,"481":1,"485":2,"487":1,"516":1,"538":1,"551":2,"556":1,"559":2,"560":4,"562":1,"567":1,"572":2,"574":1,"587":2,"597":1,"623":1,"625":1,"626":1,"635":1,"658":1,"688":1,"701":2,"726":1,"852":1,"1023":1,"1057":1,"1137":1,"1195":1,"1243":2,"1270":2,"1287":1,"1300":1,"1302":3,"1325":1,"1331":1,"1332":2,"1338":1,"1340":1,"1353":2,"1357":1,"1359":1,"1360":1,"1375":1,"1383":1,"1384":2,"1385":2,"1390":1,"1393":1,"1396":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1442":1,"1493":1,"1495":1,"1497":1,"1498":1,"1499":1,"1507":2,"1511":1,"1515":1,"1523":1,"1527":1,"1553":1,"1560":1,"1665":1,"1668":1,"1677":1,"1680":1,"1683":1,"1716":1,"1725":1,"1729":1,"1787":1,"1807":1,"1816":1,"1821":1,"1830":1,"1852":1,"1864":1,"1878":1,"1905":3,"1907":4,"1933":1,"1946":1,"1952":1,"2041":2,"2059":1,"2109":1,"2123":1,"2124":1,"2125":1,"2126":1,"2132":1,"2140":1,"2153":1,"2160":2,"2161":1,"2162":1,"2169":1,"2171":1,"2231":1,"2238":1,"2242":1,"2259":2,"2263":2,"2270":1,"2286":1,"2305":2,"2306":1,"2311":1,"2322":1,"2325":1,"2327":2,"2330":1,"2332":1,"2334":1,"2335":1,"2347":1,"2348":1,"2351":1,"2397":1,"2417":1,"2421":1,"2422":1,"2423":1,"2425":1,"2427":2,"2433":1,"2437":1,"2445":1,"2450":1,"2454":1,"2462":1,"2469":1,"2474":1,"2475":2,"2478":1,"2479":1,"2481":1,"2491":1,"2495":1,"2498":2,"2499":1,"2507":1,"2512":1,"2513":1,"2524":1,"2525":1,"2526":1,"2542":1,"2549":1,"2556":1,"2557":1,"2565":1,"2566":4,"2568":1,"2577":2,"2584":1,"2603":1,"2607":1,"2608":2,"2610":1,"2612":2,"2667":1,"2671":1,"2687":1,"2701":1,"2702":2,"2704":1,"2705":1,"2706":1,"2728":3,"2735":2,"2736":2,"2738":1,"2740":1,"2744":2,"2753":1,"2756":1,"2757":1}}],["dave",{"2":{"2311":1}}],["dazzle",{"2":{"1929":1}}],["damage",{"2":{"1573":1,"2272":1,"2529":1}}],["damnit",{"2":{"290":1}}],["daemon",{"2":{"1239":1}}],["daunting",{"2":{"496":1}}],["dashes",{"2":{"460":1,"461":1}}],["dashed",{"2":{"282":1}}],["daskygit",{"2":{"175":1}}],["dac2",{"2":{"657":1}}],["dac1",{"2":{"657":5,"658":4}}],["dacs",{"2":{"657":1,"658":1}}],["dac",{"0":{"657":1,"658":1,"659":1,"1390":1,"1393":1},"1":{"660":1,"1391":1,"1392":1},"2":{"222":3,"236":2,"249":1,"656":2,"657":6,"658":7,"659":13,"660":6,"663":2,"1390":7,"1391":1,"1393":9,"1394":2,"1397":1,"1401":4,"2528":1,"2676":2}}],["dactyl",{"2":{"114":3,"191":1,"211":1,"217":4,"222":14,"226":1,"236":2,"277":1,"380":2,"2270":2,"2271":1}}],["days",{"0":{"346":1},"2":{"345":1,"346":2,"350":1}}],["day",{"0":{"347":1},"2":{"211":1,"340":1,"343":1,"344":1,"345":2,"350":4,"479":1}}],["daily",{"2":{"2506":1}}],["daily60",{"2":{"211":1}}],["dailycraft",{"2":{"143":7}}],["daisy",{"2":{"102":2}}],["dawn60",{"0":{"58":1},"2":{"58":3}}],["danielggordon",{"2":{"2169":1}}],["danish",{"2":{"1355":1,"2703":3}}],["danger",{"2":{"290":1,"2459":1}}],["dangerous",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"290":1,"337":2}}],["dango40",{"2":{"211":1}}],["dances",{"2":{"191":1,"2167":1,"2168":1,"2169":2,"2171":2}}],["dance",{"0":{"2159":1,"2161":1,"2166":1,"2169":1,"2170":1,"2171":1,"2663":1},"1":{"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1},"2":{"49":4,"176":3,"191":1,"199":1,"222":1,"249":1,"277":1,"503":1,"533":2,"1336":1,"1340":1,"1500":1,"1509":1,"1683":1,"2160":2,"2161":26,"2162":25,"2164":7,"2165":1,"2166":8,"2167":15,"2168":24,"2169":27,"2170":15,"2171":31,"2411":1,"2490":1,"2566":1,"2663":1,"2724":1,"2749":2}}],["datastructure",{"2":{"2404":1,"2745":2}}],["datasheets",{"2":{"701":1,"1129":1}}],["datasheet",{"2":{"149":1,"635":1,"638":1,"639":1,"664":1,"669":1,"684":3,"685":1,"689":1,"694":5,"697":1,"703":1,"729":1,"755":1,"784":1,"789":1,"792":1,"816":1,"822":1,"848":1,"854":1,"857":1,"883":1,"888":1,"891":1,"917":1,"922":1,"925":1,"951":1,"956":1,"959":1,"985":1,"990":1,"993":1,"1019":1,"1024":1,"1027":1,"1053":1,"1058":1,"1061":1,"1087":1,"1092":1,"1095":1,"1127":1,"1130":1,"1143":1,"1148":1,"1177":1,"1198":1,"1469":1,"1576":1,"1577":2,"1578":1,"1605":1,"1622":1,"2328":1,"2533":1,"2534":1}}],["datatypes",{"2":{"215":2,"2577":1}}],["datablock",{"2":{"191":1}}],["database",{"0":{"132":1,"401":1},"2":{"132":3,"134":1,"249":1,"401":4,"2512":2}}],["data",{"0":{"109":1,"169":1,"184":1,"605":1,"708":1,"711":1,"714":1,"717":1,"720":1,"723":1,"739":1,"766":1,"798":1,"828":1,"863":1,"897":1,"931":1,"965":1,"999":1,"1033":1,"1067":1,"1101":1,"1154":1,"1183":1,"1188":1,"1191":1,"1202":1,"1206":1,"1208":1,"1450":1,"1611":1,"1613":1,"1617":1,"1624":2,"1921":1,"1922":1,"1925":1,"1927":1,"2129":1,"2130":1,"2591":1,"2599":1,"2600":1},"1":{"110":1,"111":1,"112":1,"170":1,"606":1,"607":1,"608":1,"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"709":1,"710":1,"712":1,"713":1,"715":1,"716":1,"718":1,"719":1,"721":1,"722":1,"724":1,"725":1,"740":1,"767":1,"799":1,"829":1,"864":1,"898":1,"932":1,"966":1,"1000":1,"1034":1,"1068":1,"1102":1,"1155":1,"1184":1,"1185":1,"1189":1,"1190":1,"1192":1,"1193":1,"1203":1,"1207":1,"1209":1,"1451":1,"1452":1,"1612":1,"1614":1,"1618":1,"1625":2,"1926":1,"1928":1},"2":{"45":2,"76":2,"107":4,"109":1,"114":3,"149":2,"160":3,"169":1,"176":6,"184":1,"191":3,"199":13,"201":2,"211":29,"214":1,"222":13,"236":7,"249":2,"251":1,"262":2,"266":68,"277":3,"282":2,"314":2,"334":1,"374":2,"389":1,"390":1,"405":1,"434":1,"496":2,"511":3,"519":1,"566":1,"605":1,"607":2,"609":1,"610":2,"612":2,"642":1,"656":2,"661":2,"683":1,"703":1,"709":3,"712":2,"715":3,"718":3,"721":1,"724":1,"740":1,"767":1,"799":1,"829":1,"864":1,"898":1,"932":1,"966":1,"1000":1,"1034":1,"1068":1,"1102":1,"1123":1,"1126":1,"1129":3,"1155":1,"1184":1,"1189":3,"1192":2,"1203":1,"1205":1,"1207":3,"1209":2,"1210":2,"1212":1,"1214":1,"1215":1,"1217":1,"1225":1,"1232":1,"1287":1,"1331":1,"1333":1,"1396":1,"1438":2,"1440":3,"1441":1,"1448":1,"1450":2,"1451":4,"1492":1,"1573":1,"1591":1,"1594":1,"1612":2,"1614":2,"1618":2,"1624":2,"1625":2,"1714":1,"1821":3,"1822":22,"1825":1,"1830":2,"1834":1,"1842":2,"1846":1,"1848":1,"1849":1,"1851":3,"1852":4,"1853":7,"1854":3,"1903":2,"1904":1,"1905":3,"1906":2,"1907":6,"1908":2,"1910":2,"1921":3,"1922":2,"1923":8,"1926":2,"1928":2,"1958":2,"1959":1,"2031":1,"2032":3,"2044":1,"2061":1,"2128":3,"2130":17,"2131":1,"2141":1,"2143":11,"2150":1,"2166":1,"2167":3,"2168":6,"2169":4,"2170":4,"2171":4,"2226":1,"2276":1,"2299":1,"2311":4,"2347":3,"2400":1,"2401":1,"2479":1,"2555":1,"2560":1,"2566":3,"2574":1,"2575":2,"2576":2,"2577":5,"2585":3,"2589":1,"2591":2,"2592":3,"2593":1,"2596":1,"2599":6,"2615":7,"2671":2,"2675":2,"2686":2,"2692":2}}],["dates",{"0":{"340":1},"2":{"350":1}}],["date",{"2":{"6":2,"10":1,"157":1,"347":1,"349":1,"350":10,"556":1,"2134":1,"2466":1,"2478":1,"2497":1,"2546":1,"2549":1,"2564":1}}],["deutsche",{"2":{"2658":1}}],["derivatives",{"2":{"2468":1}}],["derive",{"2":{"685":1,"694":1,"1227":1}}],["derived",{"2":{"323":1,"2344":1,"2702":1}}],["dereferencing",{"2":{"1815":1,"2139":1}}],["deghost",{"2":{"818":1,"820":1}}],["degradation",{"2":{"2574":1}}],["degrade",{"2":{"1817":1}}],["degrading",{"2":{"209":1}}],["degree",{"0":{"1821":1},"2":{"1554":1,"1556":1,"1820":2,"1821":3,"1840":3}}],["degrees",{"2":{"31":1,"34":1,"1816":1,"1849":1,"1851":3,"1852":3,"1915":1,"2140":1,"2577":1,"2597":1,"2686":1}}],["denote",{"2":{"2403":1,"2596":2}}],["denoted",{"2":{"1822":1,"2143":1,"2585":1,"2592":1}}],["denotes",{"2":{"689":1,"690":1,"691":1,"758":1,"787":1,"819":1,"851":1,"852":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1023":1,"1056":1,"1057":1,"1090":1,"1146":1,"1215":1,"2595":1,"2596":1,"2683":1}}],["density",{"0":{"1142":1},"2":{"114":1,"2353":2}}],["deeper",{"2":{"1335":1,"2162":1}}],["deeply",{"2":{"611":1}}],["deep",{"2":{"496":1,"499":2,"2295":1}}],["dedicate",{"2":{"1935":1}}],["dedicates",{"2":{"1234":3}}],["dedicated",{"2":{"492":1,"681":1,"1122":1,"1264":1,"1457":1,"1499":1,"1555":1,"1563":1,"1658":1,"1668":2,"1729":1,"1952":1}}],["dedupe",{"2":{"236":1}}],["dekunukem",{"2":{"222":1}}],["demand",{"2":{"2475":2}}],["demo",{"2":{"2040":1,"2131":1}}],["demonstrate",{"2":{"2742":1}}],["demonstrates",{"2":{"2033":1}}],["demonstration",{"2":{"1923":1,"2036":1}}],["demiurge",{"2":{"211":1}}],["demultiplexer",{"2":{"149":1}}],["dead",{"2":{"2490":1,"2654":1,"2702":1}}],["deadline",{"2":{"350":1,"511":1}}],["deadlock",{"2":{"191":2,"199":1}}],["deadlocks",{"2":{"176":1}}],["deaf",{"2":{"2144":1}}],["deactivating",{"2":{"1877":1,"2680":1}}],["deactivation",{"0":{"1674":1},"2":{"1668":1,"1865":2,"1873":1,"1874":1}}],["deactivates",{"2":{"1340":1,"1506":1,"1507":1,"1668":1,"1674":1,"2680":1}}],["deactivate",{"2":{"1337":1,"1506":1,"1671":1,"1864":2,"2106":1,"2107":4,"2146":1}}],["deactivated",{"2":{"1335":1,"1398":1,"1399":2,"1670":2,"1671":1,"1674":1,"1864":1}}],["deassert",{"2":{"1194":1,"1540":1,"1542":1,"1544":1}}],["deals",{"2":{"1270":1,"2557":1}}],["deal",{"2":{"1259":1,"2315":1}}],["dealt",{"2":{"587":1}}],["dealing",{"2":{"11":1,"2267":1}}],["de",{"0":{"789":1,"820":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1},"2":{"134":1,"199":4,"266":1,"820":1,"1335":2,"1934":1,"2355":1,"2703":2}}],["detrimental",{"2":{"276":1}}],["detach",{"0":{"2582":1},"2":{"266":1,"2582":2}}],["detailing",{"2":{"2472":1}}],["detail",{"2":{"176":2,"355":1,"556":1,"1281":1,"1672":1,"2162":1,"2262":1,"2354":1,"2750":1}}],["details",{"0":{"300":1,"445":1,"446":1,"447":1,"2162":1,"2409":1},"2":{"163":1,"195":1,"224":1,"228":1,"229":1,"232":1,"290":2,"303":1,"308":2,"336":1,"371":1,"436":1,"446":1,"470":1,"496":1,"505":3,"626":1,"628":1,"701":1,"1235":1,"1242":1,"1244":1,"1326":1,"1335":1,"1340":1,"1341":1,"1380":1,"1389":1,"1402":1,"1406":1,"1416":1,"1450":1,"1500":1,"1553":1,"1589":1,"1662":1,"1714":1,"1939":1,"1958":1,"1959":1,"2041":1,"2044":1,"2165":1,"2178":1,"2262":1,"2263":2,"2300":1,"2319":1,"2367":1,"2385":1,"2409":1,"2439":1,"2454":1,"2561":1,"2570":1,"2727":1}}],["detailed",{"0":{"71":1,"519":1,"2262":1},"1":{"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"520":1,"521":1,"522":1,"523":1,"524":1,"525":1,"526":1,"527":1,"2263":1,"2264":1},"2":{"14":1,"70":1,"492":1,"1241":1,"1278":1,"1334":1,"1806":1,"2115":1,"2134":1,"2172":1,"2299":1,"2473":1,"2476":1,"2562":1}}],["detent",{"2":{"1557":1,"1562":2}}],["determining",{"2":{"1340":1,"2147":1,"2697":1}}],["deterministically",{"2":{"230":1}}],["determines",{"2":{"370":1,"1181":1,"2126":1,"2697":1,"2727":1}}],["determined",{"2":{"353":1,"430":1,"509":2,"510":2,"689":1,"2402":1}}],["determine",{"2":{"114":1,"119":1,"157":1,"484":1,"509":1,"510":1,"597":1,"685":1,"689":1,"703":1,"1177":1,"1198":1,"1210":1,"1405":1,"1423":1,"1469":1,"2123":1,"2124":1,"2125":2,"2170":2,"2171":1,"2548":2,"2567":1,"2697":1,"2748":1}}],["detects",{"2":{"2311":1}}],["detected",{"0":{"1240":1},"2":{"211":1,"266":1,"505":1,"689":1,"1300":1,"1825":2,"1826":8,"1828":1,"1830":1,"2128":1,"2147":1,"2252":1,"2454":1,"2513":1,"2697":2}}],["detecting",{"2":{"132":1,"511":2,"2131":2,"2132":1,"2234":1,"2417":2,"2509":1,"2584":1,"2587":1,"2593":1,"2594":1,"2744":1,"2745":1}}],["detection",{"0":{"1824":1,"1827":1,"2748":1},"1":{"1825":1,"1826":1,"1827":1,"1828":1,"1829":1,"1830":1,"1831":1},"2":{"114":1,"175":1,"199":4,"249":3,"689":1,"1320":1,"1321":1,"1445":1,"1825":1,"1827":1,"1829":3,"1830":3,"1852":1,"2131":1,"2132":3,"2133":2,"2745":1}}],["detect",{"2":{"112":1,"199":1,"377":1,"511":6,"626":1,"1302":1,"1303":1,"1320":1,"1448":1,"1825":1,"2131":5,"2132":3,"2133":2,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":2,"2247":2,"2249":2,"2311":1,"2513":1,"2566":1,"2648":1,"2697":2,"2757":1}}],["debt",{"2":{"187":1,"198":1,"201":1,"213":1,"224":1,"238":1}}],["debian",{"2":{"114":3,"2431":1,"2464":1,"2468":3}}],["debouncing",{"0":{"1330":1},"2":{"94":1,"222":1,"515":1,"566":2,"1325":3,"1326":12,"1329":6,"1330":2,"1827":2,"1847":1,"2263":1}}],["debouncer",{"2":{"149":1}}],["debounce",{"0":{"1326":1,"1327":1,"1328":1,"1329":1},"1":{"1328":1,"1329":1,"1330":1},"2":{"70":2,"111":1,"112":1,"114":3,"134":1,"149":1,"176":1,"199":3,"222":2,"236":1,"502":1,"515":1,"566":4,"1325":3,"1326":6,"1327":1,"1328":3,"1329":10,"1330":4,"1497":1,"1829":2,"1844":1,"1845":1,"1847":1,"1868":1,"1873":4,"1879":1,"2263":1,"2566":3,"2674":2,"2689":2,"2725":1}}],["debugged",{"2":{"2614":1}}],["debuggers",{"2":{"336":1}}],["debugger",{"0":{"327":1,"334":1,"335":1,"336":1},"2":{"335":1,"1341":2,"2513":2,"2755":1,"2757":1}}],["debugging",{"0":{"322":1,"333":1,"1244":1,"1245":1,"1246":1,"1247":1,"1248":1,"1249":1,"2487":1,"2489":1,"2513":1,"2755":1},"1":{"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":2,"335":2,"336":2,"1245":1,"1246":1,"1247":2,"1248":2,"1249":2,"1250":1,"1251":1,"1252":1,"1253":1,"1254":1,"1255":1,"2488":1,"2489":1},"2":{"82":1,"114":1,"322":1,"328":1,"331":1,"335":1,"336":1,"375":1,"502":1,"503":2,"1138":1,"1251":2,"1255":1,"1294":1,"1530":4,"1863":1,"2263":1,"2492":1,"2503":1,"2508":1,"2513":4,"2530":1,"2574":2,"2616":1,"2639":1,"2716":1}}],["debug=1",{"2":{"249":1,"2755":2}}],["debug",{"0":{"1250":1,"1251":1,"1830":1,"1916":1},"1":{"1252":1,"1253":1},"2":{"24":1,"34":1,"49":1,"50":1,"65":1,"114":2,"176":1,"188":1,"191":2,"199":1,"211":1,"249":2,"277":1,"334":1,"335":2,"336":1,"433":2,"481":1,"503":1,"515":2,"1138":2,"1245":8,"1246":1,"1247":1,"1248":1,"1249":1,"1250":3,"1253":1,"1254":1,"1255":3,"1341":2,"1530":4,"1830":1,"1863":2,"1916":5,"2044":4,"2262":1,"2263":4,"2356":2,"2424":1,"2429":1,"2457":1,"2513":9,"2572":2,"2574":3,"2755":1}}],["devuan",{"2":{"2431":1,"2464":1}}],["devaddr",{"0":{"714":1,"717":1,"720":1,"723":1},"1":{"715":1,"716":1,"718":1,"719":1,"721":1,"722":1,"724":1,"725":1},"2":{"715":1,"718":1,"721":1,"724":1}}],["devastatingtkl",{"2":{"211":1}}],["devised",{"2":{"2325":1}}],["deviation",{"2":{"1839":1}}],["deviate",{"2":{"367":1,"2541":1}}],["device",{"0":{"118":1,"175":1,"190":1,"627":1,"1240":1,"1241":1,"1254":1,"1809":1,"1832":1,"1838":1,"1861":1,"1880":1},"1":{"1833":1,"1834":1,"1835":1,"1836":1,"1837":1,"1838":1,"1839":1,"1840":1,"1841":1,"1842":1,"1843":1,"1844":1,"1845":1,"1846":1,"1847":1,"1848":1,"1849":1,"1850":1,"1851":1,"1852":1,"1853":1,"1854":1},"2":{"63":1,"70":2,"100":2,"111":1,"114":1,"118":13,"134":3,"138":3,"146":1,"149":2,"169":2,"175":4,"176":7,"184":2,"190":3,"191":7,"211":4,"240":2,"249":1,"266":1,"273":2,"331":1,"502":3,"505":1,"625":3,"626":3,"627":4,"628":6,"629":5,"635":1,"683":1,"697":1,"701":1,"708":1,"709":2,"711":1,"712":2,"714":1,"715":2,"717":1,"718":2,"720":1,"721":2,"723":1,"724":2,"727":2,"1125":1,"1128":1,"1181":1,"1183":1,"1186":1,"1187":1,"1188":1,"1191":1,"1197":1,"1201":1,"1238":1,"1239":1,"1240":2,"1252":1,"1254":5,"1255":1,"1292":2,"1315":1,"1322":1,"1325":2,"1531":2,"1570":2,"1630":2,"1791":1,"1792":3,"1797":1,"1809":1,"1813":1,"1827":1,"1829":1,"1832":3,"1833":1,"1834":4,"1835":2,"1836":1,"1837":1,"1838":1,"1841":2,"1842":2,"1844":2,"1845":1,"1846":3,"1847":1,"1848":4,"1849":10,"1850":6,"1851":23,"1852":15,"1853":11,"1854":9,"1855":9,"1857":3,"1858":2,"1859":1,"1861":5,"1862":6,"1863":2,"1864":3,"1866":2,"1868":1,"1879":2,"1880":10,"1881":1,"1902":1,"1915":6,"1921":5,"1923":7,"2071":5,"2129":2,"2177":1,"2229":1,"2230":2,"2232":1,"2233":2,"2234":2,"2235":3,"2236":1,"2237":3,"2238":2,"2239":1,"2240":2,"2241":1,"2242":2,"2243":2,"2244":2,"2245":2,"2247":2,"2249":2,"2299":5,"2344":1,"2346":1,"2347":4,"2350":1,"2407":1,"2450":3,"2453":3,"2513":3,"2556":2,"2566":1,"2576":56,"2577":52,"2581":3,"2646":1,"2655":1,"2669":1,"2692":2,"2699":2}}],["devices",{"0":{"11":1,"138":1,"1862":1},"2":{"11":2,"49":3,"138":1,"149":1,"174":2,"175":1,"190":1,"191":1,"229":1,"263":1,"266":1,"276":1,"331":2,"375":1,"556":2,"626":2,"627":1,"628":3,"629":1,"630":1,"635":4,"689":1,"692":1,"702":1,"726":1,"1176":2,"1216":1,"1219":1,"1224":1,"1227":1,"1240":1,"1255":1,"1326":1,"1390":1,"1401":1,"1491":1,"1609":1,"1613":1,"1824":1,"1829":1,"1830":1,"1854":1,"1902":1,"1921":2,"2085":1,"2087":1,"2100":1,"2101":1,"2129":1,"2240":1,"2284":1,"2313":3,"2328":1,"2350":1,"2451":1,"2513":1,"2518":1,"2523":1,"2546":3,"2548":2,"2549":1,"2556":1,"2566":1,"2573":1,"2576":14,"2725":1}}],["dev",{"2":{"108":1,"325":1,"328":1,"401":1,"429":1,"2347":2,"2430":1,"2431":2,"2464":4,"2480":5,"2481":1,"2513":1}}],["developing",{"2":{"2308":1,"2313":1,"2478":1,"2492":1,"2503":1,"2568":1}}],["developed",{"2":{"2235":1,"2632":1,"2719":1}}],["developer=true",{"2":{"429":1}}],["developer",{"0":{"398":1,"429":1},"1":{"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1,"410":1,"411":1},"2":{"311":1,"319":1,"429":1,"537":1}}],["developers",{"0":{"319":1,"321":1},"2":{"303":1,"322":1,"427":1,"605":1,"2262":1,"2497":2,"2634":1}}],["developments",{"2":{"2478":1}}],["development",{"0":{"302":1,"303":1,"427":1,"2492":1,"2503":1},"2":{"132":1,"160":3,"163":2,"175":1,"176":1,"198":1,"233":1,"266":1,"302":1,"321":1,"495":1,"558":1,"625":1,"1129":1,"2236":1,"2440":1,"2478":2,"2480":1,"2492":2,"2495":1,"2496":1,"2552":1,"2568":1,"2655":1,"2664":1,"2673":5,"2704":1,"2718":1,"2719":1,"2725":3,"2750":1}}],["develop",{"0":{"349":1},"2":{"51":1,"73":1,"76":1,"92":1,"93":1,"94":1,"114":5,"134":4,"149":3,"164":1,"169":1,"176":7,"191":6,"199":1,"211":5,"222":4,"236":2,"251":1,"266":1,"317":2,"337":1,"340":6,"341":3,"343":1,"344":1,"345":1,"346":1,"347":5,"349":7,"350":12,"358":3,"359":3,"360":3,"361":6,"1262":1,"2162":1,"2273":1,"2566":4,"2567":1,"2720":2,"2721":1}}],["declined",{"2":{"2719":1}}],["declares",{"2":{"1825":1}}],["declare",{"2":{"1314":2,"1729":2,"1952":2,"2170":1,"2171":1}}],["declared",{"2":{"1312":1,"1359":1,"1729":1,"1952":1,"2165":1}}],["declarations",{"2":{"222":1,"2164":1}}],["declaration",{"2":{"191":1,"500":1}}],["decryption",{"2":{"2065":1}}],["decreasing",{"2":{"506":3,"1326":1,"1950":1}}],["decrease",{"0":{"1478":1,"1759":1,"1760":1,"1765":1,"1766":1,"1986":1,"1987":1,"1992":1,"1993":1,"1998":1,"1999":1,"2004":1,"2005":1},"2":{"166":1,"1400":1,"1433":1,"1435":1,"1456":1,"1457":1,"1478":1,"1560":2,"1572":2,"1580":1,"1727":2,"1759":1,"1760":1,"1765":1,"1766":1,"1793":4,"1948":8,"1950":3,"1986":1,"1987":1,"1992":1,"1993":1,"1998":1,"1999":1,"2004":1,"2005":1,"2034":8,"2054":12,"2055":2,"2106":1,"2107":3,"2228":1,"2360":1,"2369":2,"2371":4,"2376":8,"2377":8,"2584":1,"2728":1}}],["decreases",{"2":{"119":1,"1406":1,"1408":1,"2055":2,"2357":1,"2375":1,"2728":2}}],["decreased",{"2":{"49":1,"1950":1,"2226":1}}],["decays",{"2":{"2226":1}}],["decay",{"2":{"2064":1}}],["decalartion",{"2":{"149":1}}],["deceptively",{"2":{"2749":1}}],["decelerated",{"2":{"1804":4}}],["decelerates",{"2":{"1802":1}}],["decent",{"2":{"3":1,"15":1}}],["dec",{"2":{"1287":1}}],["decodable",{"2":{"1452":1}}],["decoding",{"0":{"1452":1}}],["decode",{"2":{"1450":1}}],["decoder",{"2":{"563":1,"2600":1}}],["decorators",{"0":{"477":1}}],["decorator",{"2":{"430":2}}],["decorated",{"2":{"428":1}}],["decoupled",{"2":{"174":1}}],["decouple",{"2":{"73":1,"94":1,"191":1,"222":1,"249":1,"277":1}}],["decimal",{"2":{"1287":1}}],["decides",{"2":{"2729":1}}],["decide",{"2":{"1127":1,"1130":1,"1435":2,"1518":3}}],["decided",{"2":{"87":1,"103":1,"126":1,"169":1,"179":1,"184":1,"1265":1}}],["deciding",{"2":{"453":1}}],["decisions",{"2":{"453":1,"455":1}}],["decision",{"0":{"2729":1},"1":{"2730":1,"2731":1,"2732":1,"2733":1,"2734":1,"2735":1,"2736":1},"2":{"203":1,"222":1,"243":1,"1326":1,"2152":1,"2729":3,"2730":2,"2735":1}}],["despite",{"2":{"2576":2,"2664":1}}],["descr",{"2":{"2353":1}}],["describing",{"2":{"307":1,"341":1,"453":1,"455":1,"465":1,"621":1,"2070":1,"2672":4,"2688":1,"2695":1}}],["described",{"2":{"462":1,"562":1,"568":1,"598":1,"613":1,"629":1,"1364":1,"1451":1,"1941":1,"2108":1,"2268":1,"2296":1,"2574":1,"2748":1}}],["describes",{"2":{"311":1,"313":1,"322":1,"337":1,"517":1,"536":1,"605":1,"608":1,"621":1,"1466":1,"1467":1,"1639":1,"2160":1,"2513":1,"2523":1,"2553":1,"2593":1,"2597":1,"2598":1,"2599":1,"2686":1}}],["describe",{"2":{"99":1,"556":1,"2229":1,"2267":1,"2554":1,"2735":2}}],["descriptive",{"2":{"460":1,"554":1,"2480":1,"2513":1}}],["descriptions",{"2":{"684":1,"685":1,"686":1,"2513":1}}],["description",{"0":{"519":1},"1":{"520":1,"521":1,"522":1,"523":1,"524":1,"525":1,"526":1,"527":1},"2":{"119":1,"160":1,"341":1,"350":5,"425":1,"426":1,"435":1,"462":2,"540":1,"554":2,"556":1,"616":1,"623":1,"638":1,"639":1,"641":1,"644":1,"659":1,"666":1,"681":1,"683":1,"684":1,"685":1,"686":1,"688":1,"689":1,"690":1,"691":1,"693":1,"694":1,"696":1,"702":1,"703":2,"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1,"1177":1,"1198":1,"1214":1,"1220":1,"1224":1,"1226":1,"1229":1,"1230":1,"1299":1,"1329":1,"1341":3,"1398":1,"1399":1,"1402":1,"1403":1,"1406":2,"1408":1,"1434":1,"1443":1,"1449":1,"1456":1,"1457":1,"1467":1,"1469":1,"1470":1,"1494":1,"1505":1,"1512":1,"1518":1,"1526":1,"1530":1,"1553":1,"1554":1,"1566":1,"1568":1,"1570":1,"1571":1,"1572":1,"1573":1,"1591":1,"1635":1,"1653":1,"1669":1,"1670":1,"1671":1,"1687":1,"1715":1,"1726":1,"1727":1,"1728":2,"1793":1,"1801":1,"1803":1,"1804":1,"1805":1,"1807":1,"1808":1,"1817":1,"1818":1,"1819":1,"1820":2,"1834":1,"1835":1,"1836":1,"1838":3,"1839":1,"1840":1,"1842":3,"1843":1,"1844":1,"1845":1,"1846":1,"1847":1,"1848":1,"1849":1,"1851":1,"1852":1,"1853":1,"1854":1,"1868":1,"1870":1,"1873":1,"1874":1,"1879":1,"1880":1,"1883":1,"1920":1,"1931":1,"1932":4,"1942":1,"1947":1,"1948":1,"1949":3,"2032":1,"2034":1,"2035":1,"2036":1,"2037":1,"2038":1,"2048":1,"2050":1,"2051":1,"2052":1,"2053":1,"2054":1,"2055":1,"2056":1,"2057":1,"2069":1,"2070":1,"2071":1,"2074":1,"2075":1,"2105":1,"2106":1,"2107":1,"2110":1,"2112":1,"2113":1,"2141":1,"2142":1,"2156":1,"2158":1,"2173":1,"2174":1,"2175":1,"2179":1,"2180":1,"2184":1,"2226":1,"2227":1,"2260":1,"2299":1,"2302":1,"2355":1,"2356":1,"2357":1,"2358":1,"2359":1,"2360":1,"2361":1,"2362":1,"2363":1,"2364":1,"2365":1,"2366":1,"2367":1,"2368":1,"2369":1,"2370":1,"2371":1,"2372":1,"2373":1,"2374":1,"2375":1,"2376":1,"2377":1,"2378":1,"2379":1,"2380":1,"2381":1,"2382":1,"2383":1,"2384":1,"2386":1,"2387":1,"2388":1,"2389":1,"2390":1,"2391":1,"2392":1,"2393":1,"2394":1,"2395":1,"2396":1,"2399":1,"2410":2,"2524":1,"2562":1,"2566":1,"2572":1,"2728":1}}],["descriptors",{"2":{"2":1,"50":1}}],["descriptor",{"0":{"2":1,"2587":1,"2594":1,"2596":1},"2":{"50":1,"114":1,"134":1,"160":1,"1827":1,"2585":1,"2586":1,"2587":5,"2588":1,"2589":1,"2592":2,"2593":1,"2594":4,"2595":2,"2596":3,"2597":1}}],["descendant",{"2":{"2350":1}}],["desktop",{"2":{"1533":1,"2393":1,"2398":3,"2411":3,"2490":2}}],["deskthority",{"2":{"1290":1,"1902":1,"2311":1}}],["deskdaily",{"2":{"211":1}}],["destination",{"2":{"1275":1,"2367":1}}],["destroyed",{"2":{"454":1,"598":1}}],["desirable",{"2":{"1378":1}}],["desire",{"2":{"540":1}}],["desired",{"2":{"312":1,"352":1,"697":1,"1181":1,"1245":1,"1300":1,"1412":1,"1415":1,"1808":1,"2150":1,"2181":1,"2252":1,"2480":1,"2615":1,"2702":1,"2718":1}}],["designing",{"2":{"1457":1,"1469":1,"1715":1,"2267":1}}],["designate",{"2":{"2614":1}}],["designated",{"2":{"852":1,"1023":1,"1057":1,"1431":1,"2231":1,"2238":1,"2693":2}}],["designates",{"2":{"430":1,"2614":1}}],["designs",{"2":{"211":1,"2345":1,"2534":1}}],["design",{"2":{"114":1,"168":1,"211":2,"493":1,"1125":1,"1128":1,"1452":1,"2719":1}}],["designers",{"2":{"125":1,"185":1,"201":1,"221":1,"233":1,"234":1,"1725":1,"1946":1,"2523":1,"2545":1}}],["designer",{"2":{"56":1,"502":2,"511":1,"580":2,"2564":1}}],["designed",{"2":{"37":1,"43":1,"1265":1,"1310":1,"2269":1,"2300":1,"2345":1,"2427":2,"2545":1}}],["depicting",{"2":{"623":1}}],["depths",{"2":{"2576":1}}],["depth",{"2":{"561":1,"641":2}}],["depressed",{"2":{"1411":2}}],["deprecating",{"2":{"94":1}}],["deprecations",{"2":{"352":1,"2721":1}}],["deprecation",{"0":{"87":1,"88":1,"104":1,"127":1,"170":1,"264":1,"274":1,"2719":1,"2721":1},"1":{"88":1,"265":1,"275":1,"276":1,"2720":1,"2721":1},"2":{"184":1,"264":1,"274":1,"688":1,"2719":4,"2720":2}}],["deprecate",{"2":{"87":1,"94":1,"103":1,"126":1,"149":1,"169":1,"176":1,"184":1,"188":7,"191":7,"2546":1}}],["deprecated",{"0":{"27":1,"254":1},"2":{"3":1,"7":1,"15":1,"25":1,"27":1,"38":1,"50":1,"75":2,"114":2,"133":1,"134":1,"140":1,"149":1,"157":2,"176":1,"182":1,"188":1,"191":3,"194":1,"195":1,"199":2,"245":1,"249":1,"254":1,"266":1,"277":1,"502":6,"1498":1,"1714":1,"2034":10,"2037":2,"2376":10,"2396":1,"2705":1,"2721":1}}],["depracted",{"2":{"199":1}}],["depend",{"2":{"703":1,"1201":1,"1326":1,"1377":1,"1605":1,"2355":1}}],["dependent",{"2":{"663":1,"1223":1,"1316":1,"1317":1,"1469":1,"1554":1,"1851":1,"2322":1,"2720":1}}],["dependencies",{"2":{"73":1,"158":1,"160":2,"234":1,"322":1,"324":1,"2431":1,"2458":1,"2461":1,"2466":1}}],["dependency",{"2":{"24":1,"65":1,"328":1}}],["depends",{"2":{"656":1,"1326":1,"1717":1,"1804":1,"1842":1,"2183":1,"2196":1,"2197":1,"2198":1,"2262":1,"2544":1,"2740":1}}],["dependant",{"2":{"578":1}}],["depending",{"2":{"25":1,"30":1,"33":1,"90":1,"209":1,"574":1,"597":1,"668":1,"681":1,"693":1,"733":1,"758":1,"759":1,"787":1,"791":1,"819":1,"821":1,"851":1,"856":1,"886":1,"890":1,"920":1,"924":1,"954":1,"958":1,"988":1,"992":1,"1022":1,"1026":1,"1056":1,"1060":1,"1090":1,"1094":1,"1146":1,"1147":1,"1223":1,"1226":1,"1230":1,"1234":1,"1469":1,"1470":1,"1523":1,"1562":2,"1572":1,"1574":1,"1716":1,"1822":1,"1949":1,"2118":1,"2169":1,"2267":1,"2274":1,"2299":1,"2344":1,"2393":1,"2496":1,"2518":1,"2585":1,"2587":1,"2592":2,"2597":1,"2602":1,"2701":1,"2718":1,"2749":1}}],["def1",{"2":{"1254":2}}],["def",{"2":{"160":2,"430":1,"441":1,"463":1,"464":1,"465":1,"474":2,"475":3,"1527":1,"1923":2}}],["defs",{"2":{"114":1,"134":1,"160":1,"236":1,"514":1,"1384":2,"1385":1,"2300":2,"2566":1,"2753":1}}],["deferred",{"0":{"596":1,"597":1,"598":1,"599":1,"600":1,"601":1},"1":{"597":1,"598":1,"599":1,"600":1,"601":1},"2":{"134":1,"149":1,"341":1,"350":1,"515":3,"596":1,"597":4,"598":4,"599":2,"600":2,"601":3,"1675":1,"2263":3,"2577":4}}],["deferring",{"2":{"125":1,"185":1,"580":2}}],["defer",{"2":{"114":2,"125":1,"149":1,"185":1,"236":1,"597":1,"598":1,"599":1,"600":1,"1326":9,"1329":6,"1933":1,"2674":4}}],["definable",{"2":{"1430":1}}],["defining",{"0":{"570":1,"1933":1,"2042":1},"1":{"1934":1,"1935":1},"2":{"45":1,"49":2,"50":1,"80":1,"120":1,"196":1,"199":1,"467":1,"568":1,"657":1,"659":1,"662":1,"1136":1,"1137":1,"1335":1,"1336":1,"1404":1,"1406":1,"1501":1,"1515":1,"1517":1,"1519":1,"1522":1,"1523":1,"1524":1,"1553":1,"1554":2,"1557":1,"1594":1,"1626":1,"1633":1,"1670":1,"1728":1,"1851":1,"1933":1,"1948":1,"1949":1,"2034":1,"2059":2,"2125":2,"2156":1,"2183":1,"2302":1,"2354":1,"2490":1,"2541":1,"2728":1}}],["definitions",{"0":{"2405":1},"2":{"50":5,"76":1,"77":1,"93":1,"173":1,"176":1,"182":1,"199":1,"201":3,"211":1,"213":1,"222":1,"331":1,"1385":1,"1557":1,"1558":1,"1932":2,"1933":2,"2164":2,"2274":1,"2401":1,"2404":1,"2405":2,"2406":1,"2442":1,"2523":4,"2566":6,"2577":1,"2686":1}}],["definition",{"0":{"1594":1},"2":{"25":2,"36":2,"50":1,"65":1,"90":1,"160":1,"166":1,"191":1,"199":1,"468":1,"511":1,"701":1,"703":2,"1509":1,"1525":1,"1581":1,"1633":1,"2042":1,"2043":1,"2125":1,"2161":1,"2164":1,"2354":1,"2405":1,"2406":2,"2408":1,"2523":1,"2524":1,"2525":1,"2526":1,"2541":1,"2566":1,"2585":1,"2592":1,"2670":1,"2746":4}}],["define\\tsplit",{"2":{"2124":1}}],["defined",{"0":{"2540":1},"1":{"2541":1,"2542":1},"2":{"75":1,"199":4,"247":1,"382":1,"453":5,"505":3,"506":3,"510":2,"538":1,"568":1,"573":1,"598":1,"644":2,"666":3,"684":2,"685":1,"689":1,"707":1,"726":1,"731":1,"757":5,"786":5,"818":6,"850":5,"885":5,"919":5,"953":5,"987":5,"1021":5,"1055":5,"1089":5,"1135":1,"1145":5,"1214":3,"1216":1,"1226":2,"1229":1,"1230":2,"1267":1,"1312":1,"1314":1,"1332":1,"1338":1,"1346":1,"1347":2,"1363":1,"1368":1,"1384":1,"1399":8,"1400":1,"1411":2,"1427":1,"1431":1,"1445":1,"1457":3,"1469":1,"1471":1,"1496":1,"1497":1,"1511":1,"1517":1,"1518":3,"1529":1,"1548":2,"1553":1,"1554":3,"1557":3,"1559":2,"1570":6,"1573":6,"1579":1,"1591":6,"1594":1,"1632":1,"1638":1,"1654":1,"1694":1,"1697":1,"1714":1,"1715":5,"1729":1,"1802":1,"1805":2,"1806":2,"1817":3,"1819":1,"1820":9,"1822":2,"1829":1,"1836":6,"1838":4,"1840":3,"1842":3,"1843":1,"1844":1,"1845":2,"1851":14,"1852":8,"1855":4,"1857":1,"1864":1,"1868":1,"1932":3,"1941":1,"1950":1,"1952":1,"1953":1,"1954":1,"2035":6,"2036":1,"2037":12,"2038":2,"2058":1,"2074":1,"2112":3,"2113":2,"2127":1,"2132":1,"2133":1,"2141":3,"2157":3,"2161":2,"2165":1,"2171":1,"2181":1,"2196":1,"2197":1,"2198":1,"2226":6,"2228":1,"2249":1,"2259":1,"2301":1,"2321":1,"2326":1,"2400":1,"2403":1,"2407":3,"2445":1,"2513":1,"2545":1,"2548":2,"2566":1,"2571":1,"2573":1,"2577":1,"2585":2,"2592":2,"2607":1,"2614":1,"2701":1,"2727":1,"2753":1}}],["defines",{"0":{"510":1,"1579":1},"2":{"50":1,"93":1,"114":4,"133":1,"134":3,"149":1,"175":1,"176":2,"191":11,"199":5,"211":2,"222":1,"233":1,"236":9,"249":3,"266":1,"277":1,"502":4,"510":1,"513":1,"532":1,"572":1,"630":1,"702":1,"758":1,"787":1,"819":1,"851":1,"852":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1023":1,"1056":1,"1057":1,"1090":1,"1142":1,"1146":1,"1215":1,"1220":1,"1224":1,"1226":1,"1229":1,"1230":1,"1392":1,"1393":1,"1397":1,"1402":1,"1411":1,"1467":1,"1469":1,"1470":1,"1492":1,"1557":2,"1594":1,"1622":1,"1657":1,"1660":1,"1661":1,"1663":1,"1665":1,"1728":1,"1820":7,"1821":1,"1838":1,"1851":1,"1853":1,"1854":1,"1911":1,"1912":1,"1935":1,"1941":1,"1943":1,"1949":2,"2035":1,"2037":1,"2105":2,"2112":1,"2113":4,"2142":1,"2174":1,"2226":2,"2231":1,"2238":1,"2405":2,"2423":1,"2512":1,"2513":1,"2540":1,"2544":1,"2548":1,"2550":1,"2558":1,"2559":2,"2565":1,"2566":2,"2711":1,"2743":1,"2753":1}}],["define",{"0":{"540":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"1424":1,"1425":1,"1521":1,"1522":1,"1611":1,"1613":1,"2127":1},"1":{"1612":1,"1614":1},"2":{"13":1,"14":3,"25":2,"28":1,"31":1,"34":1,"49":2,"50":1,"69":1,"75":1,"94":1,"98":1,"107":1,"114":1,"120":3,"134":2,"149":1,"154":1,"157":1,"169":5,"176":2,"184":5,"191":4,"211":1,"222":1,"236":2,"249":2,"266":1,"273":3,"292":3,"317":3,"430":1,"453":1,"496":1,"502":43,"503":6,"504":4,"505":28,"506":13,"507":5,"510":6,"511":25,"571":1,"588":2,"601":2,"607":1,"641":1,"644":1,"657":8,"658":5,"659":2,"661":7,"662":1,"666":1,"667":1,"683":1,"684":15,"685":7,"686":1,"689":6,"690":5,"691":5,"694":7,"701":1,"703":2,"731":1,"757":1,"758":1,"786":1,"787":1,"788":2,"789":4,"790":1,"818":1,"819":1,"820":1,"850":1,"851":1,"852":1,"853":2,"854":4,"855":1,"885":1,"886":1,"887":2,"888":4,"889":1,"919":1,"920":1,"921":2,"922":4,"923":1,"953":1,"954":1,"955":2,"956":4,"957":1,"987":1,"988":1,"989":2,"990":4,"991":1,"1021":1,"1022":1,"1023":1,"1024":4,"1025":1,"1055":1,"1056":1,"1057":1,"1058":4,"1059":1,"1089":1,"1090":1,"1091":2,"1092":4,"1093":1,"1124":2,"1127":3,"1130":6,"1132":3,"1133":3,"1134":2,"1136":1,"1137":1,"1138":1,"1145":1,"1146":1,"1177":7,"1198":10,"1214":1,"1216":1,"1217":1,"1220":1,"1224":1,"1225":1,"1226":3,"1227":1,"1228":1,"1229":1,"1230":3,"1253":1,"1269":5,"1276":2,"1291":1,"1294":1,"1316":1,"1320":1,"1328":1,"1332":1,"1335":1,"1344":3,"1347":1,"1353":1,"1354":2,"1359":2,"1364":1,"1377":1,"1379":1,"1385":1,"1387":9,"1390":4,"1391":1,"1392":3,"1393":6,"1394":1,"1395":3,"1396":4,"1397":2,"1398":2,"1401":1,"1402":2,"1403":2,"1404":1,"1405":1,"1406":1,"1414":2,"1415":2,"1416":1,"1423":1,"1431":2,"1433":1,"1440":3,"1457":1,"1458":1,"1459":2,"1467":1,"1469":3,"1470":3,"1492":3,"1495":2,"1496":3,"1497":1,"1500":2,"1501":1,"1503":1,"1504":1,"1506":1,"1507":2,"1508":1,"1511":2,"1514":1,"1515":8,"1516":2,"1524":1,"1525":1,"1527":1,"1530":2,"1547":4,"1554":2,"1555":1,"1557":10,"1558":10,"1559":1,"1562":4,"1568":2,"1576":5,"1577":8,"1579":3,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"1591":1,"1594":1,"1611":1,"1612":1,"1613":2,"1614":1,"1632":4,"1657":1,"1675":1,"1677":5,"1682":1,"1683":2,"1684":1,"1685":1,"1714":1,"1715":2,"1722":1,"1725":1,"1726":1,"1728":21,"1729":1,"1730":12,"1789":1,"1790":1,"1792":2,"1803":1,"1804":1,"1805":6,"1806":2,"1807":1,"1808":1,"1815":1,"1817":2,"1818":1,"1819":1,"1820":4,"1822":5,"1829":2,"1830":2,"1836":1,"1849":2,"1851":1,"1859":2,"1863":1,"1866":2,"1868":1,"1904":2,"1905":6,"1906":3,"1907":10,"1908":2,"1910":5,"1911":3,"1912":9,"1913":1,"1914":4,"1915":3,"1916":2,"1917":1,"1920":1,"1932":1,"1933":2,"1936":1,"1941":2,"1943":1,"1946":1,"1947":1,"1949":49,"1950":6,"1951":2,"1952":1,"1954":16,"1958":1,"1959":1,"2032":3,"2035":1,"2037":1,"2038":1,"2039":3,"2041":1,"2042":5,"2044":2,"2045":1,"2046":1,"2059":2,"2060":2,"2070":1,"2074":1,"2100":1,"2101":1,"2103":1,"2112":2,"2113":4,"2124":1,"2125":2,"2126":1,"2127":2,"2128":7,"2129":10,"2130":5,"2131":12,"2139":1,"2141":1,"2142":1,"2143":1,"2145":1,"2152":1,"2153":1,"2154":1,"2161":4,"2164":1,"2168":1,"2169":1,"2170":4,"2171":1,"2174":1,"2179":1,"2180":1,"2182":1,"2183":3,"2226":1,"2231":4,"2238":4,"2261":2,"2263":6,"2299":12,"2302":5,"2306":1,"2400":1,"2401":1,"2405":2,"2490":4,"2491":1,"2524":5,"2539":3,"2541":1,"2544":5,"2548":4,"2557":1,"2559":1,"2566":3,"2571":2,"2572":1,"2576":11,"2584":1,"2588":4,"2607":2,"2614":3,"2706":2,"2707":1,"2708":3,"2727":2,"2728":2,"2735":2,"2736":2,"2737":2,"2738":7,"2746":2,"2753":1,"2756":1}}],["default=",{"2":{"430":1}}],["defaults",{"0":{"415":1,"2304":1,"2421":1},"1":{"2305":1},"2":{"69":1,"77":1,"114":1,"134":2,"149":1,"160":2,"176":2,"199":1,"236":4,"249":1,"498":1,"505":4,"506":1,"566":1,"659":1,"703":1,"1177":1,"1198":1,"1316":1,"1317":1,"1393":1,"1469":1,"1820":1,"1834":1,"1835":1,"1842":1,"1846":1,"1848":1,"1849":2,"2127":1,"2299":1,"2421":1,"2425":1,"2575":2,"2726":1,"2727":1}}],["default",{"0":{"137":1,"166":1,"474":1,"497":1,"528":1,"1268":1,"1378":1,"2607":1,"2734":1},"1":{"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1},"2":{"14":1,"28":1,"30":1,"31":1,"33":1,"38":1,"49":1,"50":2,"69":1,"74":1,"77":1,"83":1,"93":2,"114":8,"124":1,"125":1,"134":2,"137":1,"143":2,"149":8,"156":1,"160":2,"164":1,"166":1,"176":10,"183":8,"191":8,"194":5,"195":3,"199":2,"202":1,"206":1,"209":1,"211":5,"222":1,"236":7,"249":4,"266":3,"273":1,"277":2,"331":3,"335":1,"370":2,"371":1,"374":2,"378":1,"380":2,"385":1,"386":1,"389":1,"391":1,"393":2,"394":2,"400":1,"402":1,"403":1,"404":1,"405":1,"414":2,"415":1,"417":3,"423":3,"424":3,"425":2,"426":3,"430":1,"433":2,"435":3,"474":1,"496":1,"497":1,"502":5,"504":1,"509":2,"511":4,"513":2,"516":1,"528":1,"529":7,"530":5,"559":1,"560":2,"563":1,"565":1,"572":1,"580":2,"601":1,"607":1,"610":4,"612":1,"623":2,"624":2,"626":2,"636":1,"641":4,"644":3,"655":1,"657":1,"659":1,"660":1,"666":1,"681":1,"683":2,"684":2,"685":2,"686":2,"689":2,"690":1,"691":1,"692":1,"694":2,"702":1,"703":2,"704":1,"705":1,"731":1,"757":1,"786":1,"788":1,"789":2,"790":1,"818":1,"850":1,"853":1,"854":2,"855":1,"885":1,"887":1,"888":2,"889":1,"919":1,"921":1,"922":2,"923":1,"953":1,"955":1,"956":2,"957":1,"987":1,"989":1,"990":2,"991":1,"1021":1,"1024":4,"1025":1,"1055":1,"1058":4,"1059":1,"1089":1,"1091":1,"1092":3,"1093":1,"1122":1,"1127":1,"1130":1,"1132":2,"1133":2,"1134":2,"1136":2,"1137":2,"1142":2,"1145":1,"1177":1,"1198":1,"1214":1,"1216":1,"1218":1,"1219":1,"1220":1,"1224":1,"1225":1,"1226":1,"1229":1,"1230":1,"1243":1,"1245":1,"1265":1,"1281":1,"1283":1,"1288":1,"1294":1,"1312":1,"1316":1,"1319":1,"1320":1,"1321":1,"1328":1,"1329":1,"1331":1,"1332":13,"1335":7,"1338":1,"1341":16,"1343":2,"1344":1,"1346":5,"1362":1,"1368":2,"1377":1,"1378":1,"1385":1,"1397":1,"1398":1,"1399":4,"1400":2,"1402":1,"1403":1,"1404":2,"1405":1,"1406":7,"1408":1,"1414":1,"1416":3,"1423":3,"1430":4,"1439":2,"1441":1,"1445":1,"1455":1,"1457":5,"1460":1,"1461":1,"1467":1,"1469":2,"1470":1,"1495":2,"1496":1,"1499":2,"1501":1,"1503":1,"1504":1,"1506":2,"1514":1,"1515":2,"1516":2,"1518":5,"1525":10,"1527":1,"1528":1,"1529":1,"1530":15,"1554":2,"1557":3,"1559":1,"1560":2,"1562":1,"1567":1,"1570":1,"1572":1,"1573":4,"1579":1,"1591":1,"1631":1,"1632":1,"1633":1,"1671":2,"1673":1,"1674":1,"1675":1,"1677":2,"1682":1,"1685":1,"1715":1,"1722":1,"1725":3,"1730":10,"1794":1,"1802":3,"1803":2,"1804":1,"1805":3,"1807":2,"1808":1,"1813":4,"1814":2,"1817":2,"1818":1,"1819":3,"1820":4,"1822":3,"1827":1,"1833":1,"1834":1,"1835":1,"1836":2,"1838":2,"1839":1,"1840":1,"1842":5,"1843":1,"1844":1,"1845":1,"1846":1,"1847":1,"1848":1,"1849":2,"1851":5,"1852":1,"1855":1,"1859":4,"1861":1,"1864":1,"1866":4,"1868":3,"1869":1,"1871":1,"1876":1,"1877":7,"1879":2,"1908":1,"1910":3,"1912":2,"1920":2,"1932":3,"1933":3,"1936":1,"1940":1,"1946":3,"1948":1,"1950":1,"1954":14,"1958":1,"2032":2,"2034":1,"2035":12,"2037":1,"2038":1,"2042":1,"2043":1,"2070":1,"2073":1,"2074":2,"2076":1,"2103":1,"2111":1,"2112":2,"2113":1,"2123":1,"2124":1,"2126":2,"2128":2,"2130":1,"2131":1,"2137":2,"2138":1,"2141":2,"2142":2,"2143":1,"2145":1,"2149":2,"2150":1,"2156":1,"2161":1,"2169":3,"2170":2,"2171":2,"2174":5,"2175":1,"2179":1,"2180":1,"2182":1,"2183":1,"2226":2,"2228":2,"2230":1,"2231":2,"2238":2,"2245":1,"2247":1,"2249":1,"2252":3,"2259":2,"2260":1,"2262":4,"2263":7,"2277":1,"2295":2,"2300":1,"2302":5,"2304":1,"2305":3,"2311":1,"2342":1,"2343":1,"2344":2,"2355":1,"2357":1,"2367":2,"2375":2,"2402":7,"2404":1,"2405":1,"2421":3,"2422":1,"2425":4,"2428":1,"2429":1,"2444":1,"2452":2,"2453":1,"2457":1,"2463":1,"2469":7,"2480":1,"2498":1,"2501":1,"2502":2,"2506":3,"2513":2,"2524":2,"2525":1,"2526":1,"2539":1,"2540":1,"2541":2,"2544":2,"2553":3,"2556":1,"2565":3,"2566":10,"2567":4,"2574":2,"2575":2,"2576":10,"2584":1,"2607":6,"2610":1,"2615":1,"2673":1,"2674":14,"2675":2,"2676":8,"2677":14,"2679":2,"2680":5,"2681":1,"2682":1,"2683":1,"2684":1,"2685":1,"2686":3,"2687":3,"2688":19,"2689":6,"2690":1,"2692":3,"2694":24,"2695":25,"2696":3,"2697":16,"2698":2,"2699":8,"2700":4,"2701":1,"2702":1,"2705":1,"2707":1,"2711":1,"2727":1,"2728":4,"2729":4,"2731":2,"2732":3,"2733":2,"2735":3,"2736":3,"2737":5,"2738":3,"2757":1}}],["delkey",{"2":{"1303":5}}],["delegation",{"2":{"2132":1}}],["delegating",{"2":{"511":1}}],["delegates",{"2":{"2131":1}}],["delegated",{"2":{"2131":1}}],["delegate",{"2":{"2131":1}}],["deleting",{"0":{"423":1,"439":1},"2":{"460":1}}],["deleted",{"2":{"16":1,"387":1,"2240":1}}],["delete",{"0":{"1303":1},"2":{"8":1,"31":1,"34":1,"99":1,"152":1,"211":1,"222":1,"255":1,"266":1,"347":1,"423":1,"439":1,"627":1,"628":3,"1303":4,"1499":1,"1586":1,"1656":1,"1663":3,"1823":2,"1932":1,"2075":1,"2226":1,"2355":4,"2388":1,"2392":2,"2394":1,"2757":2}}],["delimited",{"2":{"2575":1}}],["delimiter",{"2":{"2575":1}}],["delivered",{"2":{"616":1,"621":1}}],["deliberately",{"2":{"440":1,"585":1}}],["delilah",{"2":{"143":2}}],["delikeeb",{"2":{"86":8}}],["delayed",{"2":{"1361":1,"1406":1,"2729":1}}],["delays",{"2":{"515":1,"597":1,"1361":1,"1802":1,"2263":1,"2524":1,"2525":1,"2526":1}}],["delay",{"0":{"1369":2,"1370":2,"1675":1,"2083":1,"2087":1,"2101":1},"1":{"2084":1,"2088":1},"2":{"74":3,"112":6,"114":4,"120":1,"149":2,"176":5,"191":1,"222":2,"236":1,"249":2,"266":2,"502":4,"505":5,"507":2,"597":2,"598":1,"599":1,"660":1,"1354":1,"1357":3,"1361":4,"1368":2,"1369":1,"1399":2,"1406":1,"1554":1,"1559":3,"1675":6,"1676":1,"1803":5,"1804":2,"1807":4,"1822":1,"1868":2,"1874":1,"1879":1,"1910":1,"1950":3,"2075":1,"2081":1,"2083":1,"2085":1,"2087":2,"2100":2,"2101":2,"2179":1,"2411":1,"2524":3,"2564":3,"2596":2,"2674":5,"2689":1,"2690":2,"2699":1,"2729":2}}],["del",{"0":{"8":1},"2":{"8":1,"63":1,"120":1,"313":1,"439":2,"530":2,"1299":2,"1300":3,"1303":9,"1354":1,"1357":1,"1506":1,"1663":1,"1932":1,"2075":1,"2228":2,"2355":1,"2392":1,"2408":1}}],["deltas",{"2":{"1842":1,"2255":2,"2575":1}}],["delta",{"0":{"2598":1},"2":{"100":1,"211":1,"222":1,"1803":2,"1804":1,"1807":2,"1808":4,"1849":2,"2255":5,"2575":1,"2587":1,"2592":2,"2596":8,"2598":9}}],["delt",{"0":{"8":1},"2":{"8":1,"188":1,"191":1}}],["u8",{"2":{"2710":2}}],["u80",{"2":{"211":1}}],["u03a8",{"2":{"2672":2}}],["u32",{"2":{"2595":1}}],["udr1",{"2":{"1907":1}}],["udevadm",{"2":{"1239":2}}],["udev",{"0":{"1239":1},"2":{"199":2,"1238":2,"1239":1,"1254":1,"2262":1}}],["ubrr1l",{"2":{"1907":1}}],["ubrr1h",{"2":{"1907":1}}],["ubuntu",{"2":{"454":1,"2431":1,"2437":1,"2464":1,"2468":3,"2492":1,"2503":1}}],["ug",{"2":{"1559":10,"2034":11,"2045":1,"2376":11}}],["ugfx",{"0":{"10":1},"2":{"10":1,"114":1,"134":1}}],["ultra",{"2":{"1340":1}}],["ultimately",{"2":{"2571":1}}],["ultimate",{"2":{"457":1}}],["ukrainian",{"2":{"2703":2}}],["ukr",{"2":{"2182":1}}],["uk",{"2":{"701":1,"1355":1,"1499":1,"2325":1,"2703":3}}],["uz",{"2":{"450":1}}],["uzu42",{"2":{"176":2}}],["urls",{"2":{"316":3}}],["url",{"2":{"316":3,"527":1,"609":1,"2475":1,"2479":1,"2566":1,"2615":1,"2672":2}}],["urbanvanilla",{"2":{"211":1}}],["u",{"2":{"266":1,"313":1,"385":2,"530":2,"1252":3,"1932":1,"1934":1,"2148":1,"2152":1,"2153":4,"2179":1,"2196":1,"2233":1,"2236":1,"2270":3,"2347":1,"2348":3,"2355":3,"2386":3,"2407":1,"2438":1,"2480":2,"2575":4}}],["uvwxyz",{"2":{"266":1}}],["uefi",{"0":{"1298":1},"2":{"263":1}}],["umsel10",{"2":{"1907":1}}],["um",{"2":{"219":1,"2181":3,"2184":1,"2263":1,"2384":1}}],["um70",{"2":{"114":1}}],["u16",{"2":{"191":1}}],["u+ffff",{"2":{"2183":2}}],["u+10ffff",{"2":{"2181":1}}],["u+",{"2":{"2181":1}}],["u+7fff",{"2":{"2181":1}}],["u+exxx",{"2":{"191":1}}],["u+axxx",{"2":{"191":1}}],["utc",{"2":{"463":1,"464":1,"465":2}}],["utf",{"2":{"211":1}}],["ut472",{"2":{"159":2}}],["ut47",{"2":{"149":1}}],["utilised",{"2":{"2719":2}}],["utilise",{"2":{"2566":1}}],["utilises",{"2":{"2546":1}}],["utilising",{"2":{"1125":1,"2546":1}}],["utilisation",{"2":{"516":1}}],["utilize",{"2":{"496":1,"2686":1}}],["utilized",{"2":{"496":1,"1134":1}}],["utilities",{"2":{"133":1,"134":1,"149":1}}],["utility",{"2":{"49":1,"199":1,"266":1,"625":1,"1385":1,"2241":2,"2244":1}}],["utils",{"2":{"249":1}}],["util",{"2":{"114":1,"211":1,"236":2,"266":1,"360":1,"450":1,"451":1,"452":1,"509":2,"1241":1,"1816":1,"2126":2,"2140":1,"2240":3,"2241":6,"2242":3,"2243":3,"2252":6,"2262":2,"2350":1,"2353":1,"2564":1}}],["uaccess",{"2":{"1254":3}}],["ua62",{"2":{"143":2}}],["uart1",{"2":{"2538":2}}],["uart0",{"2":{"2538":2}}],["uart",{"0":{"1195":1,"1200":1,"1202":1,"1204":1,"1206":1,"1208":1,"1210":1,"2538":1},"1":{"1196":1,"1197":1,"1198":1,"1199":1,"1200":1,"1201":2,"1202":1,"1203":2,"1204":1,"1205":2,"1206":1,"1207":2,"1208":1,"1209":2,"1210":1,"1211":2},"2":{"50":1,"73":1,"75":1,"133":2,"134":2,"149":4,"191":1,"199":1,"234":2,"236":2,"249":1,"1121":1,"1195":1,"1196":3,"1197":1,"1198":12,"1200":1,"1210":1,"1319":2,"1491":2,"1492":1,"2276":1,"2531":1,"2534":1,"2538":1,"2541":4,"2543":2}}],["ucpol1",{"2":{"1907":1}}],["ucsr1b",{"2":{"1907":3}}],["ucsr1a",{"2":{"1907":3}}],["ucsr1c",{"2":{"1907":2}}],["ucsz10",{"2":{"1907":1}}],["ucis",{"0":{"2211":1,"2212":1,"2214":1,"2216":1,"2219":1,"2221":1,"2222":1,"2223":1},"1":{"2213":1,"2215":1,"2217":1,"2218":1,"2220":1,"2224":1},"2":{"199":1,"222":1,"2182":12,"2212":1,"2213":1,"2223":1,"2224":1,"2263":1,"2749":1}}],["uc",{"2":{"134":1,"188":1,"191":1,"2181":3,"2183":2,"2184":9,"2263":1,"2384":9}}],["ui",{"2":{"120":1,"191":1,"521":1}}],["uint24",{"2":{"2587":1,"2588":1,"2589":2,"2593":1,"2594":1}}],["uintptr",{"2":{"1668":2}}],["uint",{"2":{"134":1}}],["uint32",{"0":{"1200":1,"1898":1,"1900":1,"2091":1,"2199":1,"2206":1},"1":{"1201":1,"1899":1,"1901":1,"2092":1,"2200":1,"2207":1,"2208":1},"2":{"105":4,"114":1,"176":1,"588":1,"597":1,"962":5,"1201":1,"1332":1,"1333":4,"1549":2,"1901":1,"2092":1,"2130":1,"2181":1,"2182":1,"2200":1,"2577":7,"2587":2,"2594":2,"2595":2}}],["uint8",{"0":{"647":3,"649":3,"652":1,"675":3,"677":3,"679":1,"708":2,"711":2,"714":3,"717":2,"720":3,"723":2,"726":1,"739":2,"741":3,"743":3,"745":1,"747":1,"749":1,"751":1,"764":1,"766":3,"768":3,"770":3,"772":1,"774":1,"776":1,"778":1,"780":1,"782":1,"796":1,"798":3,"800":3,"802":3,"804":1,"806":1,"808":4,"810":2,"812":1,"814":1,"826":1,"828":3,"830":2,"832":3,"834":3,"836":1,"838":1,"840":1,"842":1,"844":1,"846":1,"861":1,"863":3,"865":2,"867":3,"869":3,"871":1,"873":1,"875":1,"877":1,"879":1,"881":1,"895":1,"897":3,"899":2,"901":3,"903":3,"905":1,"907":1,"909":1,"911":1,"913":1,"915":1,"929":1,"931":3,"933":2,"935":3,"937":3,"939":1,"941":1,"943":1,"945":1,"947":1,"949":1,"963":1,"965":3,"967":2,"969":3,"971":3,"973":1,"975":1,"977":1,"979":1,"981":1,"983":1,"997":1,"999":3,"1001":2,"1003":3,"1005":3,"1007":1,"1009":1,"1011":4,"1013":2,"1015":1,"1017":1,"1031":1,"1033":3,"1035":2,"1037":3,"1039":3,"1041":1,"1043":1,"1045":4,"1047":2,"1049":1,"1051":1,"1065":1,"1067":3,"1069":2,"1071":3,"1073":3,"1075":1,"1077":1,"1079":4,"1081":2,"1083":1,"1085":1,"1099":1,"1101":3,"1103":2,"1105":3,"1107":3,"1109":1,"1111":1,"1113":4,"1115":2,"1117":1,"1119":1,"1152":1,"1154":3,"1156":2,"1158":3,"1160":3,"1162":1,"1164":1,"1166":1,"1168":1,"1170":1,"1172":1,"1180":1,"1183":1,"1188":1,"1191":1,"1202":1,"1204":1,"1206":1,"1479":1,"1481":1,"1603":2,"1611":2,"1613":2,"1617":1,"1619":1,"1622":1,"1624":1,"1626":1,"1628":1,"1642":1,"1644":1,"1646":1,"1649":1,"1743":2,"1745":1,"1747":1,"1749":1,"1755":1,"1761":1,"1767":1,"1769":1,"1771":1,"1780":2,"1783":2,"1886":1,"1888":1,"1890":1,"1892":1,"1894":1,"1925":2,"1927":2,"1970":4,"1972":3,"1974":1,"1976":1,"1982":1,"1988":1,"1994":1,"2000":1,"2006":1,"2008":1,"2010":1,"2012":3,"2014":3,"2025":2,"2028":2,"2083":1,"2087":1,"2095":1,"2097":1,"2186":1,"2188":1,"2192":1,"2194":1,"2203":1,"2206":1,"2209":1,"2214":1},"1":{"648":3,"650":3,"653":1,"676":3,"678":3,"680":1,"709":2,"710":2,"712":2,"713":2,"715":3,"716":3,"718":2,"719":2,"721":3,"722":3,"724":2,"725":2,"727":1,"728":1,"740":2,"742":3,"744":3,"746":1,"748":1,"750":1,"752":1,"765":1,"767":3,"769":3,"771":3,"773":1,"775":1,"777":1,"779":1,"781":1,"783":1,"797":1,"799":3,"801":3,"803":3,"805":1,"807":1,"809":4,"811":2,"813":1,"815":1,"827":1,"829":3,"831":2,"833":3,"835":3,"837":1,"839":1,"841":1,"843":1,"845":1,"847":1,"862":1,"864":3,"866":2,"868":3,"870":3,"872":1,"874":1,"876":1,"878":1,"880":1,"882":1,"896":1,"898":3,"900":2,"902":3,"904":3,"906":1,"908":1,"910":1,"912":1,"914":1,"916":1,"930":1,"932":3,"934":2,"936":3,"938":3,"940":1,"942":1,"944":1,"946":1,"948":1,"950":1,"964":1,"966":3,"968":2,"970":3,"972":3,"974":1,"976":1,"978":1,"980":1,"982":1,"984":1,"998":1,"1000":3,"1002":2,"1004":3,"1006":3,"1008":1,"1010":1,"1012":4,"1014":2,"1016":1,"1018":1,"1032":1,"1034":3,"1036":2,"1038":3,"1040":3,"1042":1,"1044":1,"1046":4,"1048":2,"1050":1,"1052":1,"1066":1,"1068":3,"1070":2,"1072":3,"1074":3,"1076":1,"1078":1,"1080":4,"1082":2,"1084":1,"1086":1,"1100":1,"1102":3,"1104":2,"1106":3,"1108":3,"1110":1,"1112":1,"1114":4,"1116":2,"1118":1,"1120":1,"1153":1,"1155":3,"1157":2,"1159":3,"1161":3,"1163":1,"1165":1,"1167":1,"1169":1,"1171":1,"1173":1,"1181":1,"1182":1,"1184":1,"1185":1,"1189":1,"1190":1,"1192":1,"1193":1,"1203":1,"1205":1,"1207":1,"1480":1,"1482":1,"1604":2,"1612":2,"1614":2,"1618":1,"1620":1,"1621":1,"1623":1,"1625":1,"1627":1,"1629":1,"1643":1,"1645":1,"1647":1,"1648":1,"1650":1,"1744":2,"1746":1,"1748":1,"1750":1,"1756":1,"1762":1,"1768":1,"1770":1,"1772":1,"1887":1,"1889":1,"1891":1,"1893":1,"1895":1,"1896":1,"1926":2,"1928":2,"1971":4,"1973":3,"1975":1,"1977":1,"1983":1,"1989":1,"1995":1,"2001":1,"2007":1,"2009":1,"2011":1,"2015":3,"2084":1,"2088":1,"2096":1,"2098":1,"2187":1,"2189":1,"2193":1,"2195":1,"2204":1,"2205":1,"2207":1,"2208":1,"2210":1,"2215":1},"2":{"46":1,"90":4,"105":4,"211":1,"566":2,"573":2,"580":3,"588":1,"648":3,"650":3,"653":1,"672":4,"676":3,"678":3,"680":1,"709":2,"712":2,"715":3,"718":2,"721":2,"724":1,"727":1,"737":4,"740":2,"742":3,"744":3,"746":1,"748":1,"750":1,"752":1,"763":5,"765":1,"767":3,"769":3,"771":3,"773":1,"775":1,"777":1,"779":1,"781":1,"783":1,"795":5,"797":1,"799":3,"801":3,"803":3,"805":1,"807":1,"809":4,"811":2,"813":1,"815":1,"825":5,"827":1,"829":3,"831":2,"833":3,"835":3,"837":1,"839":1,"841":1,"843":1,"845":1,"847":1,"860":5,"862":1,"864":3,"866":2,"868":3,"870":3,"872":1,"874":1,"876":1,"878":1,"880":1,"882":1,"894":5,"896":1,"898":3,"900":2,"902":3,"904":3,"906":1,"908":1,"910":1,"912":1,"914":1,"916":1,"928":5,"930":1,"932":3,"934":2,"936":3,"938":3,"940":1,"942":1,"944":1,"946":1,"948":1,"950":1,"964":1,"966":3,"968":2,"970":3,"972":3,"974":1,"976":1,"978":1,"980":1,"982":1,"984":1,"996":5,"998":1,"1000":3,"1002":2,"1004":3,"1006":3,"1008":1,"1010":1,"1012":4,"1014":2,"1016":1,"1018":1,"1030":5,"1032":1,"1034":3,"1036":2,"1038":3,"1040":3,"1042":1,"1044":1,"1046":4,"1048":2,"1050":1,"1052":1,"1064":5,"1066":1,"1068":3,"1070":2,"1072":3,"1074":3,"1076":1,"1078":1,"1080":4,"1082":2,"1084":1,"1086":1,"1098":5,"1100":2,"1102":3,"1104":2,"1106":3,"1108":3,"1110":1,"1112":1,"1114":4,"1116":2,"1118":1,"1120":1,"1151":5,"1153":1,"1155":3,"1157":2,"1159":3,"1161":3,"1163":1,"1165":1,"1167":1,"1169":1,"1171":1,"1173":1,"1181":1,"1184":1,"1189":1,"1192":1,"1203":1,"1207":1,"1209":1,"1303":1,"1332":1,"1344":2,"1360":1,"1385":2,"1400":3,"1405":2,"1440":1,"1445":2,"1446":2,"1447":1,"1448":3,"1464":1,"1480":1,"1518":1,"1523":2,"1525":2,"1549":2,"1560":2,"1594":1,"1604":1,"1612":2,"1614":2,"1618":1,"1623":1,"1625":1,"1627":1,"1629":1,"1638":1,"1643":1,"1645":1,"1647":1,"1650":1,"1668":3,"1670":3,"1714":2,"1718":1,"1722":5,"1729":3,"1733":2,"1744":2,"1746":1,"1748":1,"1750":1,"1768":1,"1770":1,"1781":2,"1784":2,"1815":2,"1821":1,"1822":15,"1853":1,"1855":1,"1868":1,"1873":3,"1887":1,"1889":1,"1891":1,"1893":1,"1895":1,"1921":2,"1923":3,"1926":2,"1928":2,"1933":2,"1934":1,"1935":1,"1937":1,"1938":1,"1939":1,"1941":1,"1943":3,"1952":3,"1957":2,"1958":12,"1959":5,"1971":4,"1973":3,"1975":1,"1977":1,"2007":1,"2009":1,"2013":3,"2015":3,"2026":2,"2029":2,"2035":1,"2040":7,"2084":1,"2088":1,"2096":1,"2098":1,"2107":11,"2130":6,"2139":2,"2143":6,"2152":2,"2157":1,"2189":1,"2193":1,"2195":1,"2207":1,"2210":1,"2224":1,"2228":2,"2406":1,"2491":6,"2576":3,"2577":34,"2587":6,"2593":2,"2594":1,"2596":4,"2597":7,"2599":1,"2709":2}}],["uint16",{"0":{"647":1,"708":2,"711":2,"714":2,"717":3,"720":2,"723":3,"726":1,"1180":1,"1188":1,"1191":1,"1206":1,"1208":1,"1232":1,"1694":1,"1699":1,"1702":2,"1705":3,"1708":4,"1711":5,"2093":1,"2203":1,"2216":1},"1":{"648":1,"709":2,"710":2,"712":2,"713":2,"715":2,"716":2,"718":3,"719":3,"721":2,"722":2,"724":3,"725":3,"727":1,"728":1,"1181":1,"1182":1,"1189":1,"1190":1,"1192":1,"1193":1,"1207":1,"1209":1,"1233":1,"1695":1,"1696":1,"1700":1,"1701":1,"1703":2,"1704":2,"1706":3,"1707":3,"1709":4,"1710":4,"1712":5,"1713":5,"2094":1,"2204":1,"2205":1,"2217":1,"2218":1},"2":{"22":6,"46":2,"194":2,"195":2,"247":1,"530":1,"534":2,"572":1,"573":3,"588":1,"648":1,"709":2,"712":2,"715":2,"718":3,"721":2,"724":3,"727":1,"1181":1,"1189":1,"1192":1,"1207":1,"1209":1,"1233":1,"1252":1,"1302":1,"1303":1,"1332":2,"1344":1,"1359":4,"1360":2,"1375":2,"1384":1,"1385":2,"1393":1,"1404":1,"1416":1,"1423":2,"1430":3,"1445":1,"1446":1,"1506":2,"1508":2,"1509":2,"1510":2,"1511":7,"1518":10,"1519":4,"1523":5,"1548":1,"1559":1,"1581":1,"1634":3,"1640":3,"1670":2,"1695":1,"1700":1,"1703":2,"1706":3,"1709":4,"1712":5,"1792":2,"1815":1,"1820":1,"1822":7,"1830":1,"1850":2,"1853":1,"1854":1,"1858":1,"1859":1,"1870":2,"1871":1,"1873":3,"1878":1,"1880":1,"1933":2,"1934":1,"1935":3,"1937":1,"1938":1,"1939":1,"1940":1,"1941":2,"1943":4,"2044":2,"2078":1,"2094":1,"2139":1,"2142":1,"2143":4,"2152":2,"2164":1,"2168":4,"2171":2,"2204":1,"2217":1,"2228":4,"2301":1,"2401":1,"2406":1,"2413":1,"2414":1,"2415":1,"2423":1,"2576":38,"2577":39,"2587":1,"2594":3,"2596":1,"2598":4,"2604":1,"2612":1,"2709":2,"2727":1,"2728":2,"2735":1,"2736":1,"2737":1,"2738":1,"2747":1,"2749":38}}],["uf2boot",{"0":{"2247":1},"1":{"2248":1},"2":{"236":1,"2247":5}}],["uf2conv",{"2":{"211":1,"222":1}}],["uf2",{"0":{"2249":1,"2522":1},"2":{"93":1,"114":1,"160":1,"176":2,"199":3,"211":1,"2126":2,"2245":1,"2246":2,"2247":1,"2248":2,"2249":1,"2437":1,"2539":1,"2674":1}}],["unknowingly",{"2":{"2305":1}}],["unknown",{"0":{"1241":1},"2":{"111":1,"315":1,"2169":2,"2170":2,"2171":2,"2300":1,"2353":1}}],["unblink",{"2":{"2044":4}}],["unwanted",{"2":{"1675":1,"2065":1}}],["unnecessarily",{"2":{"1177":1,"1344":1}}],["unnecessary",{"2":{"134":1,"236":1,"266":1,"277":1,"556":1,"2405":1}}],["unpressed",{"2":{"1325":1}}],["unpredictable",{"2":{"684":1}}],["unplugged",{"2":{"1553":1,"2633":1}}],["unplugging",{"2":{"1332":1,"1337":1,"1403":1,"2118":1}}],["unplug",{"2":{"626":1,"1270":1,"1528":1,"1553":1,"2353":1,"2450":3,"2607":1}}],["unpacking",{"2":{"467":1}}],["unparsed",{"2":{"249":1}}],["unquoted",{"2":{"612":1}}],["unusable",{"0":{"2516":1},"2":{"1243":1}}],["unusual",{"2":{"466":1,"623":1,"1495":1,"2746":1}}],["unuseful",{"2":{"266":1}}],["unused",{"0":{"1552":1},"2":{"50":1,"75":1,"149":1,"176":1,"191":1,"199":8,"540":1,"1223":1,"1242":1,"1320":1,"1547":1,"1777":1,"1782":1,"2022":1,"2027":1,"2061":2,"2125":3,"2131":1,"2263":1,"2566":1,"2689":1}}],["unfiltered",{"2":{"2226":2}}],["unfamiliar",{"2":{"460":1}}],["unfortunately",{"2":{"173":1,"537":1,"1219":1,"1412":1,"1441":1,"2398":1,"2514":1,"2702":1,"2750":1}}],["uncle",{"2":{"2750":1}}],["unclear",{"2":{"453":1,"458":1,"560":1}}],["uncapitalizing",{"2":{"1503":1}}],["uncomment",{"2":{"1518":1}}],["uncommon",{"2":{"11":1,"1441":1}}],["uncombined",{"2":{"516":1}}],["uncovered",{"2":{"191":1}}],["unconditionally",{"2":{"49":1,"114":1}}],["unavoidable",{"2":{"2566":1}}],["unavailable",{"2":{"635":1,"696":2,"1394":1,"1907":1,"2560":1}}],["unaffected",{"2":{"1499":1}}],["unannotated",{"2":{"480":1}}],["unambiguous",{"2":{"467":1}}],["unable",{"2":{"337":1,"352":1,"2322":1,"2325":1,"2704":1}}],["unassigned",{"2":{"236":1,"446":1}}],["unxmaal",{"2":{"236":1}}],["unshifted",{"2":{"2397":1}}],["unswap",{"2":{"2370":20,"2396":20}}],["unsplit",{"2":{"1849":1}}],["unscrewing",{"2":{"1287":1}}],["unsucessful",{"2":{"726":1}}],["unsupported",{"2":{"638":1,"639":1,"1822":1,"2114":1}}],["unsure",{"2":{"626":1,"628":1,"1825":1,"1826":1,"2276":1,"2279":1,"2421":1,"2469":1}}],["unsigned",{"2":{"222":1,"1290":1,"1820":1,"2091":1,"2093":1,"2142":1}}],["unsent",{"2":{"1904":1}}],["unset",{"2":{"160":1,"689":2,"2574":2}}],["unselect",{"2":{"114":3,"502":1}}],["unmergeable",{"2":{"2566":1}}],["unmerged",{"2":{"221":1,"341":1}}],["unmod",{"2":{"1805":4}}],["unmodified",{"2":{"1677":1,"1805":7,"2738":1}}],["unmaintained",{"2":{"114":1}}],["unrecoverable",{"2":{"2348":1}}],["unresponsive",{"2":{"1553":1,"1803":1,"1804":1}}],["unregistered",{"2":{"597":1,"1375":1,"1523":1,"1670":1}}],["unregister",{"0":{"1367":1,"1370":1,"1644":1,"1892":1},"1":{"1645":1,"1893":1},"2":{"505":1,"1275":1,"1300":1,"1302":1,"1303":1,"1360":1,"1368":2,"1369":1,"1375":2,"1430":3,"1523":2,"1668":1,"1670":1,"1671":1,"1677":1,"2168":1,"2169":5,"2170":3,"2738":1}}],["unrelated",{"2":{"191":1,"279":1,"282":3,"341":1}}],["unreferenced",{"2":{"133":1,"134":1}}],["unloaded",{"2":{"2577":2}}],["unlocking",{"2":{"2066":1,"2071":1}}],["unlock",{"0":{"2066":1},"2":{"2066":1,"2069":6,"2070":3,"2071":6,"2353":2,"2696":4}}],["unlocked",{"2":{"340":1,"349":1,"2067":1,"2070":1,"2071":3,"2696":1}}],["unlk",{"2":{"2069":1}}],["unlike",{"2":{"1278":1,"1531":1,"2428":1,"2686":1,"2741":1}}],["unlikely",{"2":{"154":1,"502":1,"1278":1,"2550":1}}],["unlimited",{"2":{"396":1,"411":1}}],["unless",{"2":{"191":1,"435":1,"457":1,"469":1,"477":1,"566":2,"1275":1,"1278":1,"1287":1,"1300":1,"1341":2,"1411":1,"1457":1,"1469":1,"1715":1,"1877":1,"1949":1,"2262":1,"2279":1,"2324":1,"2367":1,"2541":1,"2546":1,"2564":1,"2566":4,"2577":1}}],["unexplainable",{"2":{"2262":1}}],["unexpectedly",{"2":{"1290":1}}],["unexpected",{"2":{"87":1,"337":1,"1499":1,"1666":1}}],["unecessary",{"2":{"160":1}}],["uno",{"0":{"2331":1},"1":{"2332":1},"2":{"159":2,"160":2,"2331":2,"2332":3}}],["un",{"2":{"149":1,"191":1,"266":1,"502":1,"1368":1,"1934":1}}],["ungodly",{"2":{"114":2}}],["unterminated",{"2":{"134":1}}],["untested",{"2":{"49":1,"483":1,"1589":1,"1811":1,"1817":1,"2141":1,"2263":2}}],["until",{"2":{"114":1,"160":1,"199":1,"522":1,"588":1,"598":1,"627":1,"703":1,"1273":1,"1316":1,"1317":1,"1325":1,"1335":2,"1367":1,"1404":1,"1405":1,"1416":1,"1438":1,"1500":1,"1504":1,"1651":1,"1653":1,"1675":3,"1730":1,"1802":3,"1803":2,"1807":1,"1822":1,"1827":2,"1847":1,"1865":1,"1954":1,"2156":1,"2232":1,"2234":1,"2239":1,"2241":1,"2277":1,"2366":1,"2367":1,"2383":1,"2420":1,"2477":1,"2490":2,"2564":1,"2566":2,"2577":1,"2654":1,"2728":1,"2729":1,"2737":2}}],["universal",{"2":{"2668":1}}],["union",{"2":{"1332":2}}],["uninsulated",{"2":{"2270":1}}],["uninstallation",{"0":{"628":1},"2":{"628":1}}],["uninstall",{"2":{"627":1,"628":4,"629":1}}],["unintentional",{"2":{"191":1,"2270":1}}],["unix",{"2":{"249":1,"277":1,"399":1,"2256":1,"2457":1,"2458":1,"2484":1,"2506":2,"2620":1}}],["unix60",{"2":{"67":1,"72":1,"211":1}}],["uniform",{"2":{"222":1}}],["unify",{"0":{"22":1},"2":{"113":1,"114":2,"149":1,"222":1}}],["uni",{"2":{"197":2,"199":2}}],["uniquely",{"2":{"1335":1,"1864":1}}],["unique",{"2":{"160":1,"199":1,"570":2,"606":1,"1242":2,"2274":1}}],["unikeyboard",{"2":{"143":3,"149":2}}],["unicorne",{"2":{"134":1,"249":1}}],["unicodemap",{"0":{"219":1,"2203":1,"2206":1,"2209":1},"1":{"2204":1,"2205":1,"2207":1,"2208":1,"2210":1},"2":{"219":1,"222":2,"2263":1,"2749":1}}],["unicode",{"0":{"186":1,"2176":1,"2186":1,"2188":1,"2190":1,"2191":1,"2192":1,"2194":1,"2196":1,"2197":1,"2198":1,"2199":1,"2201":1,"2326":1,"2384":1,"2589":1,"2666":1},"1":{"2177":1,"2178":1,"2179":1,"2180":1,"2181":1,"2182":1,"2183":1,"2184":1,"2185":1,"2186":1,"2187":2,"2188":1,"2189":2,"2190":1,"2191":1,"2192":1,"2193":2,"2194":1,"2195":2,"2196":1,"2197":1,"2198":1,"2199":1,"2200":2,"2201":1,"2202":2,"2203":1,"2204":1,"2205":1,"2206":1,"2207":1,"2208":1,"2209":1,"2210":1,"2211":1,"2212":1,"2213":1,"2214":1,"2215":1,"2216":1,"2217":1,"2218":1,"2219":1,"2220":1,"2221":1,"2222":1,"2223":1,"2224":1},"2":{"70":1,"94":1,"111":1,"134":1,"149":2,"160":1,"186":3,"188":3,"191":6,"199":2,"211":1,"222":2,"411":1,"433":1,"515":2,"533":1,"1277":1,"1440":1,"2072":2,"2176":1,"2177":2,"2178":1,"2179":11,"2180":5,"2181":6,"2182":6,"2183":21,"2184":12,"2186":1,"2187":1,"2188":1,"2190":1,"2191":1,"2196":4,"2197":2,"2198":2,"2199":1,"2201":1,"2203":1,"2204":1,"2205":1,"2206":1,"2207":1,"2208":1,"2209":1,"2210":1,"2263":5,"2325":1,"2326":2,"2384":13,"2575":18,"2585":2,"2587":3,"2589":6,"2590":2,"2666":3,"2672":2,"2702":1,"2725":1,"2749":2}}],["units",{"2":{"506":3,"556":1,"654":1,"1326":2,"1857":1,"1868":3,"2596":1,"2615":2,"2686":4}}],["unit|integration>",{"2":{"446":1}}],["unit",{"0":{"485":1,"2667":1,"2750":1},"1":{"2751":1,"2752":1,"2753":1,"2754":1,"2755":1,"2756":1},"2":{"114":1,"134":1,"191":1,"198":1,"199":2,"249":1,"411":1,"446":2,"483":1,"485":1,"560":1,"658":1,"703":2,"1326":1,"1393":1,"1554":1,"2263":1,"2567":3,"2650":1,"2667":2,"2750":2,"2751":1,"2753":2,"2756":1}}],["unite",{"2":{"114":1}}],["undone",{"2":{"2480":1}}],["undo",{"2":{"1527":1,"1857":1,"2355":2,"2392":2,"2477":1}}],["undocumented",{"2":{"8":1,"482":1}}],["unds",{"2":{"176":1,"1499":1,"1506":1,"2378":1,"2399":1}}],["undesired",{"2":{"1677":1,"2738":1}}],["undesirable",{"2":{"1676":1}}],["undef",{"2":{"45":1,"292":3,"500":1,"657":5,"658":3,"661":1,"703":1,"1132":1,"1133":1,"1177":1,"1198":1,"1226":1,"1230":1,"1320":1,"1469":1,"1470":1,"2039":4,"2261":2,"2706":2,"2711":55}}],["undefined",{"2":{"510":1,"1329":1,"1804":1,"1807":1,"1808":1,"1813":1,"1817":1,"1819":1,"2137":1,"2226":1,"2541":1}}],["undefine",{"2":{"45":1,"500":1,"1320":1}}],["underneath",{"2":{"1454":1}}],["undertake",{"2":{"554":1}}],["underlight",{"0":{"2665":1},"2":{"515":1}}],["underlying",{"2":{"234":1,"378":1,"416":1,"430":1,"687":1,"689":2,"690":1,"691":2,"1518":1,"1724":1,"1945":1,"2523":1,"2683":1}}],["undergoing",{"2":{"203":1}}],["undergoes",{"2":{"203":1}}],["underglowx",{"2":{"2300":1}}],["underglow",{"2":{"32":1,"49":1,"266":1,"277":3,"574":1,"582":1,"1332":2,"1343":1,"1454":1,"1947":2,"2031":1,"2034":11,"2041":1,"2061":1,"2280":1,"2300":3,"2376":11,"2610":1,"2711":1}}],["underside",{"2":{"626":1,"2450":1,"2665":1}}],["understood",{"2":{"479":1}}],["understands",{"0":{"2614":1},"2":{"1212":1,"2031":1,"2146":1,"2614":1}}],["understandable",{"2":{"556":1}}],["understandability",{"2":{"457":1,"479":2}}],["understanding",{"0":{"2742":1},"1":{"2743":1,"2744":1,"2745":1,"2746":1,"2747":1,"2748":1,"2749":1},"2":{"249":1,"303":1,"355":1,"474":1,"477":1,"479":1,"560":2,"567":1,"1340":1,"1672":1,"2162":1,"2482":1,"2614":2,"2722":1,"2725":1,"2742":1}}],["understand",{"2":{"2":1,"306":1,"432":1,"457":1,"469":1,"471":1,"567":1,"585":1,"606":1,"615":1,"623":1,"1331":1,"1442":1,"1673":1,"1674":1,"2318":1,"2614":2,"2742":1}}],["underscores",{"2":{"485":1,"2405":1,"2614":1}}],["underscore",{"2":{"461":1,"1441":1,"2294":2,"2378":1,"2399":1}}],["underscore33",{"2":{"143":4}}],["under",{"2":{"32":1,"55":13,"120":1,"134":1,"149":1,"204":1,"211":1,"222":1,"249":1,"265":1,"268":1,"331":1,"335":1,"341":1,"349":1,"370":1,"436":1,"554":1,"606":1,"611":1,"689":1,"692":1,"1243":1,"1273":1,"1354":1,"1380":1,"1406":1,"1729":1,"1876":2,"1921":1,"1952":1,"2128":1,"2169":1,"2183":3,"2278":2,"2310":1,"2347":1,"2424":1,"2439":1,"2440":1,"2513":3,"2543":1,"2567":1,"2570":1,"2576":1,"2577":1,"2655":1,"2671":1,"2719":2}}],["upgrading",{"2":{"2566":1}}],["upgrades",{"2":{"10":1,"114":1}}],["upgrade",{"0":{"24":1,"357":1,"361":1},"1":{"358":1,"359":1,"360":1,"361":1},"2":{"10":3,"65":2,"158":3,"2545":1,"2627":1}}],["upgraded",{"2":{"10":1}}],["uprint",{"2":{"2263":4}}],["uprintf",{"2":{"1250":1,"1252":1}}],["uppr",{"2":{"2173":1}}],["upper",{"0":{"2182":1},"2":{"191":1,"623":1,"659":1,"701":1,"1435":2,"1573":1,"1836":1,"1843":2,"1845":1,"2153":3,"2172":2,"2173":3,"2174":2,"2175":6,"2182":2,"2255":1,"2407":1}}],["uppercase",{"2":{"191":1,"1313":1,"2182":3,"2564":2}}],["updir",{"2":{"1935":3}}],["updater",{"2":{"360":1,"2244":3}}],["updated",{"0":{"44":1,"59":1,"86":1,"102":1,"122":1,"143":1,"159":1,"168":1,"181":1,"197":1,"207":1,"217":1,"226":1,"241":1,"253":1,"270":1},"1":{"45":1,"60":1},"2":{"10":1,"14":1,"69":1,"83":1,"86":2,"108":1,"114":2,"126":1,"134":1,"149":1,"160":1,"182":2,"195":1,"220":1,"230":1,"241":1,"244":1,"253":1,"262":1,"270":1,"317":2,"349":1,"357":1,"587":2,"1714":1,"2478":1,"2479":1,"2480":2,"2566":1,"2568":3}}],["updates",{"0":{"190":1,"248":1,"255":1,"256":1},"1":{"257":1,"258":1,"259":1,"260":1},"2":{"5":1,"12":2,"22":1,"30":1,"33":1,"64":1,"114":2,"134":2,"149":2,"160":2,"176":3,"190":1,"191":2,"199":1,"211":3,"222":1,"236":3,"249":5,"266":3,"277":1,"343":2,"344":2,"345":2,"346":1,"349":2,"352":1,"358":1,"452":1,"657":1,"658":1,"1270":1,"1880":1,"2446":1,"2479":1,"2506":1,"2566":1}}],["update",{"0":{"4":1,"6":1,"10":1,"12":1,"45":1,"56":1,"69":1,"77":1,"679":1,"753":1,"754":1,"780":1,"782":1,"812":1,"814":1,"844":1,"846":1,"879":1,"881":1,"913":1,"915":1,"947":1,"949":1,"981":1,"983":1,"1015":1,"1017":1,"1049":1,"1051":1,"1083":1,"1085":1,"1117":1,"1119":1,"1170":1,"1172":1,"1270":1,"1716":1,"1717":1,"1718":1,"1720":1,"2478":1,"2603":1,"2605":1},"1":{"680":1,"781":1,"783":1,"813":1,"815":1,"845":1,"847":1,"880":1,"882":1,"914":1,"916":1,"948":1,"950":1,"982":1,"984":1,"1016":1,"1018":1,"1050":1,"1052":1,"1084":1,"1086":1,"1118":1,"1120":1,"1171":1,"1173":1,"1717":1,"1718":1,"2479":1,"2480":1,"2481":1,"2604":1,"2606":1},"2":{"10":3,"21":1,"24":1,"31":1,"32":1,"46":1,"49":1,"63":1,"65":1,"75":1,"76":1,"89":1,"90":8,"93":3,"95":1,"105":12,"114":9,"131":2,"133":1,"134":8,"149":5,"158":1,"160":3,"176":15,"191":17,"194":1,"199":5,"211":8,"218":1,"222":8,"230":1,"236":11,"240":2,"249":12,"255":1,"256":1,"266":9,"277":8,"349":1,"350":1,"360":3,"361":2,"559":1,"588":1,"593":1,"594":1,"647":1,"656":2,"675":2,"741":2,"745":2,"749":2,"751":2,"768":2,"772":2,"776":2,"778":2,"800":2,"804":2,"808":2,"810":2,"832":2,"836":2,"840":2,"842":2,"867":2,"871":2,"875":2,"877":2,"901":2,"905":2,"909":2,"911":2,"935":2,"939":2,"943":2,"945":2,"969":2,"973":2,"977":2,"979":2,"1003":2,"1007":2,"1011":2,"1013":2,"1037":2,"1041":2,"1045":2,"1047":2,"1071":2,"1075":2,"1079":2,"1081":2,"1105":2,"1109":2,"1113":2,"1115":2,"1158":2,"1162":2,"1166":2,"1168":2,"1239":1,"1303":1,"1331":2,"1332":4,"1333":2,"1341":3,"1383":1,"1435":1,"1527":1,"1549":6,"1560":3,"1633":1,"1714":2,"1716":4,"1717":2,"1718":1,"1719":1,"1720":1,"1730":1,"1817":3,"1842":1,"1859":1,"1868":1,"1948":1,"1954":1,"2034":1,"2043":1,"2141":1,"2301":1,"2309":1,"2351":1,"2472":1,"2473":2,"2475":2,"2476":1,"2479":1,"2566":3,"2568":1,"2584":1,"2603":1,"2604":4,"2605":1,"2606":3,"2607":1,"2688":1,"2695":1,"2728":1,"2749":1}}],["updating",{"0":{"349":1,"360":1,"2479":1},"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"107":1,"194":1,"199":1,"249":1,"337":1,"352":1,"354":1,"358":1,"359":1,"1817":1,"2042":1,"2141":1,"2263":1,"2564":1}}],["upe1",{"2":{"1907":1}}],["upm10",{"2":{"1907":1}}],["upward",{"2":{"1855":2}}],["upwards",{"2":{"1405":1}}],["uploading",{"2":{"527":1}}],["uploaded",{"2":{"276":2,"521":1,"2262":1,"2566":1}}],["uploads",{"2":{"273":1,"277":1,"1293":2,"2262":1,"2428":1,"2479":1}}],["upload",{"0":{"273":1},"2":{"149":1,"273":4,"304":1,"305":1,"541":1,"623":1,"1434":1,"1435":1,"2260":1,"2262":1,"2350":1,"2437":1}}],["upon",{"2":{"65":1,"545":1,"1265":1,"1385":1,"1457":3,"1673":1,"1828":1,"1829":1,"2035":6,"2473":1,"2476":1,"2535":1,"2540":1,"2546":1}}],["ups",{"0":{"50":1,"64":1,"75":1,"94":1},"2":{"50":1,"176":1,"266":1,"1134":1,"2120":1}}],["upstreaming",{"2":{"2552":1}}],["upstreamed",{"2":{"2546":1,"2550":1,"2552":1}}],["upstream",{"2":{"10":1,"12":1,"26":1,"167":1,"211":1,"222":1,"347":3,"349":2,"359":2,"360":1,"556":1,"1376":1,"2475":6,"2477":8,"2479":8,"2480":4,"2546":1,"2551":1,"2564":2,"2719":1,"2720":2}}],["up",{"0":{"350":1,"354":1,"1361":1,"1870":1,"2275":1,"2277":1,"2280":1,"2442":1,"2456":1,"2474":1,"2492":1,"2503":1,"2504":1,"2642":1},"1":{"1871":1,"2276":1,"2457":1,"2458":1,"2459":1,"2460":1,"2461":1,"2462":1,"2463":1,"2464":1,"2465":1,"2466":1,"2467":1,"2468":1,"2469":1,"2505":1,"2506":1,"2507":1,"2508":1,"2509":1,"2510":1},"2":{"6":1,"13":1,"23":1,"28":1,"45":1,"50":1,"62":1,"73":3,"77":1,"90":3,"93":1,"94":3,"100":1,"114":13,"119":2,"120":3,"123":1,"124":2,"130":2,"131":1,"133":2,"134":6,"145":1,"149":5,"153":1,"156":1,"160":1,"163":1,"166":1,"173":1,"182":1,"188":1,"191":8,"198":2,"199":6,"206":1,"209":1,"210":1,"211":55,"219":1,"222":8,"224":1,"228":1,"231":2,"232":1,"236":4,"248":1,"249":1,"251":1,"266":3,"291":1,"292":1,"300":1,"313":1,"321":1,"331":1,"347":1,"365":1,"366":1,"370":1,"387":1,"453":2,"481":2,"496":1,"499":1,"502":1,"506":2,"515":2,"516":1,"523":1,"526":1,"529":1,"530":4,"554":1,"555":1,"556":1,"558":1,"571":2,"574":1,"576":1,"578":2,"580":2,"582":1,"589":1,"597":1,"624":1,"625":1,"627":1,"628":1,"635":1,"660":2,"664":1,"683":1,"684":3,"696":1,"703":1,"729":1,"755":1,"784":1,"816":1,"848":1,"883":1,"917":1,"951":1,"985":1,"1019":1,"1053":1,"1087":1,"1126":2,"1134":1,"1143":1,"1177":1,"1181":1,"1198":1,"1230":3,"1236":1,"1261":1,"1263":1,"1294":1,"1326":8,"1329":2,"1332":2,"1338":1,"1354":2,"1357":6,"1360":1,"1361":2,"1385":1,"1386":1,"1387":1,"1398":1,"1399":1,"1403":2,"1406":4,"1408":2,"1412":1,"1434":3,"1435":2,"1436":2,"1439":1,"1440":1,"1451":1,"1456":2,"1469":1,"1518":1,"1560":1,"1572":2,"1577":1,"1586":2,"1594":1,"1630":1,"1656":2,"1665":6,"1671":1,"1677":1,"1678":1,"1686":2,"1716":1,"1727":2,"1728":7,"1793":8,"1801":5,"1836":1,"1842":2,"1859":1,"1871":1,"1874":1,"1878":2,"1881":1,"1902":3,"1932":10,"1935":1,"1949":9,"1950":2,"1959":1,"2034":4,"2038":2,"2042":1,"2075":1,"2104":1,"2106":2,"2112":1,"2113":1,"2117":1,"2120":1,"2126":1,"2131":1,"2134":1,"2148":1,"2150":1,"2161":2,"2167":1,"2171":1,"2181":2,"2182":2,"2183":2,"2184":2,"2254":1,"2255":1,"2261":1,"2263":5,"2272":1,"2277":1,"2279":1,"2289":2,"2290":1,"2295":1,"2308":1,"2311":1,"2341":1,"2346":1,"2355":13,"2357":2,"2358":3,"2360":2,"2369":2,"2371":8,"2372":5,"2375":2,"2376":4,"2384":2,"2392":7,"2393":4,"2394":2,"2402":1,"2403":1,"2407":1,"2420":1,"2424":2,"2442":1,"2445":1,"2448":1,"2454":1,"2456":1,"2458":1,"2466":1,"2469":1,"2472":1,"2478":1,"2490":1,"2492":2,"2497":1,"2502":1,"2503":1,"2504":2,"2508":3,"2513":4,"2517":2,"2519":2,"2521":2,"2529":1,"2539":1,"2546":1,"2548":1,"2564":1,"2566":1,"2567":1,"2568":1,"2577":1,"2581":1,"2600":2,"2662":1,"2696":1,"2699":2,"2708":2,"2710":1,"2711":2,"2722":1,"2728":11,"2731":4,"2732":6,"2733":4,"2735":7,"2736":2,"2737":2,"2738":1,"2740":1,"2747":1}}],["usd",{"2":{"2514":1,"2712":1}}],["us=yes",{"2":{"1319":1}}],["usr",{"2":{"1239":1,"2508":1}}],["usually",{"2":{"228":1,"335":1,"377":1,"474":1,"515":1,"564":1,"598":1,"624":1,"625":1,"626":1,"630":1,"689":3,"1129":1,"1137":1,"1219":1,"1270":2,"1286":1,"1326":1,"1329":1,"1401":1,"1454":1,"1459":1,"1464":2,"1495":1,"1564":1,"1852":1,"2032":2,"2046":1,"2073":1,"2144":1,"2237":1,"2262":1,"2263":1,"2320":1,"2328":1,"2346":1,"2348":1,"2352":1,"2402":1,"2450":2,"2455":1,"2490":1,"2498":1,"2513":1,"2550":1,"2614":1,"2686":1,"2714":1,"2718":1,"2757":1}}],["usual",{"2":{"77":1,"438":1,"439":1,"571":1,"1302":1,"1303":1,"1395":1,"1582":2,"1879":1,"1935":1,"1940":1,"2728":1}}],["usability",{"2":{"211":1}}],["usable",{"2":{"107":1,"114":1,"156":1,"209":1,"231":1,"408":1,"435":1,"656":1,"689":2,"690":1,"691":1,"1332":1,"1394":1,"2114":1,"2276":1,"2403":1,"2516":3,"2575":1,"2576":1,"2683":1}}],["usart4",{"2":{"1141":1}}],["usart2",{"2":{"1140":1,"1141":1,"1142":3,"1198":4}}],["usart3",{"2":{"1132":1,"1133":1,"1140":1,"1141":1,"1142":5,"1198":1}}],["usartn",{"2":{"1132":2,"1133":2}}],["usart1",{"2":{"1127":1,"1130":1,"1140":1,"1141":1,"1142":3,"1198":2,"1907":1}}],["usart",{"0":{"1125":1,"1128":1,"1907":1},"1":{"1126":1,"1127":1,"1129":1,"1130":1},"2":{"74":1,"107":1,"176":1,"266":1,"277":1,"1121":3,"1125":1,"1126":2,"1127":5,"1128":2,"1129":5,"1130":10,"1132":5,"1133":5,"1136":1,"1137":2,"1139":1,"1142":3,"1198":1,"1902":1,"1904":1,"1907":11,"2114":1,"2528":1,"2541":4,"2692":1,"2697":1}}],["usages",{"2":{"75":1,"118":1,"128":1,"140":1,"149":1,"156":1,"157":1,"167":1,"199":4,"249":1,"1279":2,"1881":1,"2492":1}}],["usage",{"0":{"631":1,"643":1,"665":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1175":1,"1196":1,"1213":1,"1455":1,"1529":1,"1532":1,"1564":1,"1590":1,"1631":1,"1652":1,"1679":1,"1787":1,"1812":1,"1825":1,"1882":1,"1919":1,"2032":1,"2039":1,"2063":1,"2068":1,"2073":1,"2109":1,"2137":1,"2178":1,"2252":1,"2515":1,"2518":1,"2519":1},"1":{"1788":1,"1789":1,"1790":1,"1791":1,"1792":1,"1793":1,"1794":1,"1795":1,"1796":1,"1797":1,"2033":1,"2516":1,"2517":1,"2518":1,"2519":1},"2":{"45":1,"118":1,"156":1,"160":1,"176":1,"199":1,"211":1,"231":1,"236":1,"249":3,"266":2,"370":5,"371":3,"372":1,"373":1,"374":1,"375":1,"376":1,"377":1,"378":1,"379":1,"380":1,"381":1,"382":1,"383":1,"384":1,"385":1,"386":1,"387":1,"388":1,"389":2,"390":2,"391":2,"393":1,"394":1,"395":1,"396":1,"400":4,"401":1,"402":2,"403":2,"404":1,"405":1,"406":1,"407":1,"411":1,"660":2,"1125":1,"1128":1,"1134":1,"1273":1,"1326":1,"1329":2,"1515":1,"1725":1,"1842":1,"1881":1,"1908":1,"1918":1,"1920":6,"1921":3,"1923":8,"1946":1,"2385":1,"2393":1,"2401":1,"2406":1,"2445":1,"2496":1,"2517":1,"2523":1,"2543":1,"2575":6,"2614":1,"2660":1,"2699":1,"2719":1}}],["us",{"0":{"2378":1,"2397":1},"1":{"2398":1,"2399":1},"2":{"6":1,"74":1,"99":1,"114":2,"149":1,"176":2,"188":1,"191":1,"213":1,"228":1,"245":1,"315":1,"324":1,"356":1,"436":1,"479":1,"485":1,"550":1,"554":1,"560":3,"585":1,"606":2,"684":3,"1214":1,"1303":2,"1355":1,"1362":1,"1410":1,"1499":2,"1584":2,"1683":1,"1821":1,"2076":1,"2112":1,"2311":1,"2325":3,"2355":2,"2378":1,"2388":2,"2397":1,"2418":1,"2455":1,"2477":5,"2569":2,"2637":1,"2667":1,"2701":1,"2702":1,"2703":7,"2730":1,"2746":1,"2748":1}}],["using",{"0":{"322":1,"365":1,"366":1,"1293":1,"1346":1,"1354":1,"1358":1,"1433":1,"1792":1,"2170":1,"2171":1,"2448":1},"1":{"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1,"336":1,"1347":1,"1348":1,"1349":1,"1350":1,"1351":1,"1352":1,"1355":1,"1356":1,"1357":1,"1359":1,"1360":1,"1361":1,"1362":1,"1363":1,"1364":1,"1365":1,"1366":1,"1367":1,"1368":1,"1369":1,"1370":1,"1371":1,"1372":1,"1373":1,"1374":1,"1375":1,"1434":1,"1435":1,"1436":1},"2":{"5":1,"7":1,"14":1,"16":2,"45":1,"49":2,"50":1,"65":2,"73":1,"76":1,"83":1,"103":1,"111":2,"114":4,"126":1,"132":1,"149":1,"157":1,"158":1,"176":2,"191":1,"199":1,"220":1,"232":1,"234":1,"236":1,"240":2,"241":2,"244":1,"248":1,"253":2,"255":1,"270":2,"271":1,"272":1,"311":1,"315":1,"319":2,"322":2,"324":1,"325":1,"326":1,"327":1,"331":1,"334":1,"352":1,"367":1,"374":3,"380":1,"391":1,"400":2,"428":1,"431":1,"432":1,"436":1,"440":1,"441":1,"448":1,"453":1,"455":1,"457":2,"462":1,"466":1,"467":2,"470":2,"479":1,"480":1,"502":2,"503":1,"504":1,"505":1,"510":3,"511":14,"519":1,"521":1,"532":1,"534":1,"554":3,"559":1,"584":1,"592":1,"598":1,"606":1,"626":1,"627":1,"628":1,"630":1,"643":1,"659":1,"665":1,"683":2,"690":1,"698":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1122":2,"1129":2,"1134":1,"1142":1,"1144":1,"1175":1,"1196":1,"1212":2,"1213":1,"1215":1,"1230":1,"1234":1,"1236":1,"1238":1,"1242":1,"1255":1,"1262":1,"1269":1,"1294":1,"1300":2,"1326":5,"1331":2,"1332":5,"1335":2,"1336":1,"1341":1,"1343":1,"1351":1,"1375":1,"1385":1,"1396":1,"1401":1,"1416":1,"1430":3,"1432":1,"1451":1,"1457":1,"1464":2,"1469":1,"1495":1,"1499":1,"1500":1,"1501":2,"1515":2,"1525":3,"1527":1,"1554":1,"1555":1,"1558":1,"1559":1,"1560":1,"1562":3,"1563":1,"1578":1,"1579":1,"1589":1,"1631":1,"1633":1,"1665":1,"1676":1,"1677":1,"1725":2,"1729":1,"1787":1,"1791":1,"1798":1,"1803":1,"1804":1,"1806":1,"1811":2,"1816":1,"1821":3,"1824":1,"1833":1,"1838":1,"1839":1,"1842":2,"1850":1,"1851":1,"1852":2,"1854":2,"1864":2,"1880":1,"1908":1,"1912":1,"1918":1,"1923":1,"1946":2,"1952":1,"1959":1,"1960":1,"2031":1,"2037":1,"2042":3,"2044":1,"2060":1,"2063":1,"2067":1,"2076":1,"2113":1,"2114":1,"2116":2,"2118":1,"2121":1,"2126":3,"2128":2,"2131":5,"2136":1,"2140":1,"2150":1,"2157":2,"2176":1,"2183":3,"2184":1,"2225":1,"2226":1,"2230":2,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":2,"2247":2,"2249":2,"2255":1,"2256":1,"2262":1,"2263":3,"2270":1,"2273":1,"2274":4,"2275":1,"2277":3,"2289":1,"2291":1,"2293":1,"2295":1,"2299":1,"2300":1,"2305":1,"2309":1,"2316":1,"2325":1,"2331":1,"2353":1,"2384":1,"2398":1,"2407":2,"2411":1,"2418":1,"2424":1,"2427":1,"2428":2,"2430":2,"2439":1,"2441":2,"2445":1,"2446":2,"2447":1,"2451":1,"2454":1,"2462":1,"2468":1,"2477":1,"2492":1,"2503":1,"2510":1,"2512":1,"2513":3,"2515":1,"2529":1,"2531":4,"2543":1,"2552":1,"2564":2,"2566":5,"2568":1,"2570":1,"2576":3,"2577":7,"2581":1,"2614":1,"2638":1,"2639":1,"2666":1,"2702":1,"2703":1,"2706":1,"2707":2,"2708":2,"2709":2,"2710":1,"2711":1,"2725":2,"2728":3,"2738":1,"2740":2,"2749":1,"2751":1}}],["usbmodemxxxxxx",{"2":{"2347":1}}],["usbtiny",{"2":{"2335":1}}],["usbtinyisp",{"0":{"2335":1},"1":{"2336":1},"2":{"371":1,"2335":3}}],["usbs1",{"2":{"1907":1}}],["usbser",{"2":{"629":12}}],["usb2adb",{"2":{"1279":1}}],["usb2422",{"2":{"134":1}}],["usbisactive",{"2":{"266":1}}],["usbc",{"2":{"207":2}}],["usbasploader",{"0":{"2236":1,"2346":1},"2":{"371":1,"514":1,"626":1,"629":1,"2236":3,"2346":1}}],["usbasp",{"0":{"2337":1},"1":{"2338":1},"2":{"134":1,"191":1,"371":1,"629":1,"2236":4,"2337":2,"2346":1}}],["usbpd",{"2":{"74":1}}],["usbdrv",{"0":{"21":1}}],["usb",{"0":{"2":1,"21":1,"137":1,"169":1,"184":1,"235":1,"263":1,"516":1,"1242":1,"1295":1,"1828":1,"2668":1,"2669":1,"2699":1},"1":{"170":1,"1243":1},"2":{"2":1,"21":2,"31":1,"34":1,"49":3,"50":5,"62":2,"65":1,"70":3,"73":2,"75":1,"94":2,"111":3,"112":9,"113":1,"114":7,"134":5,"137":1,"149":4,"160":6,"169":3,"170":2,"176":8,"184":4,"191":9,"199":5,"211":1,"222":9,"236":5,"240":1,"249":3,"263":2,"266":4,"334":1,"486":1,"487":3,"488":1,"502":5,"509":4,"511":7,"514":1,"515":6,"516":2,"575":1,"587":1,"626":1,"628":1,"629":1,"1123":1,"1126":1,"1129":1,"1240":3,"1279":1,"1295":2,"1316":4,"1317":4,"1399":1,"1494":5,"1788":2,"1824":2,"1827":1,"1828":4,"1829":1,"1830":2,"1855":4,"1921":2,"1923":1,"1948":1,"2034":1,"2114":1,"2118":4,"2127":3,"2131":9,"2132":4,"2133":2,"2146":1,"2150":3,"2230":1,"2236":2,"2237":1,"2238":1,"2240":1,"2242":1,"2245":1,"2247":1,"2249":3,"2269":2,"2275":1,"2299":4,"2318":1,"2319":1,"2320":1,"2321":2,"2325":1,"2327":2,"2335":1,"2337":1,"2339":1,"2343":1,"2344":1,"2345":1,"2346":2,"2347":1,"2349":1,"2350":2,"2353":1,"2361":4,"2401":1,"2406":1,"2514":1,"2516":3,"2526":1,"2528":1,"2529":1,"2548":2,"2556":8,"2566":1,"2571":1,"2627":1,"2660":2,"2669":1,"2672":2,"2697":3,"2699":7,"2743":1}}],["useful",{"0":{"2601":1},"1":{"2602":1,"2603":1,"2604":1,"2605":1,"2606":1,"2607":1,"2608":1,"2609":1,"2610":1,"2611":1,"2612":1},"2":{"427":1,"455":1,"502":1,"515":1,"550":1,"578":1,"581":1,"592":1,"630":1,"662":1,"689":1,"1176":1,"1250":1,"1252":1,"1253":1,"1269":1,"1331":1,"1342":1,"1360":1,"1364":2,"1368":2,"1378":1,"1380":1,"1403":1,"1441":1,"1459":1,"1495":1,"1499":1,"1507":1,"1512":1,"1518":3,"1562":1,"1719":1,"1806":2,"1817":1,"1822":1,"1851":3,"1853":2,"1857":1,"1918":1,"1929":2,"1935":1,"1938":1,"2044":1,"2060":1,"2112":1,"2118":1,"2131":1,"2143":1,"2170":1,"2182":1,"2226":1,"2228":1,"2234":1,"2262":1,"2266":1,"2272":1,"2322":1,"2402":1,"2495":1,"2564":1,"2570":1,"2601":1,"2603":1,"2606":1,"2703":1,"2741":1}}],["useless",{"2":{"199":1,"211":1,"266":2}}],["used",{"2":{"25":1,"49":1,"50":1,"60":1,"110":1,"120":1,"157":1,"174":1,"176":2,"203":1,"209":1,"215":1,"240":1,"243":1,"278":1,"279":1,"317":2,"324":1,"334":2,"341":1,"370":1,"374":2,"385":1,"415":1,"416":1,"435":1,"466":2,"467":1,"470":1,"493":1,"497":1,"502":1,"504":1,"512":1,"513":3,"521":1,"529":5,"530":1,"534":1,"541":1,"557":1,"559":1,"568":1,"575":1,"586":1,"588":1,"597":1,"598":3,"599":1,"600":1,"602":2,"606":1,"635":4,"639":2,"657":2,"661":1,"662":1,"683":1,"685":1,"687":1,"688":5,"689":3,"690":4,"691":2,"692":1,"694":1,"697":2,"698":1,"699":1,"702":1,"703":1,"1121":3,"1123":1,"1125":1,"1126":1,"1127":1,"1129":2,"1132":2,"1133":1,"1134":1,"1174":1,"1177":2,"1195":1,"1198":1,"1220":1,"1225":1,"1226":1,"1243":1,"1247":1,"1248":1,"1249":1,"1293":1,"1300":1,"1303":1,"1304":2,"1319":2,"1334":1,"1335":1,"1336":2,"1349":1,"1354":1,"1360":1,"1361":1,"1378":1,"1385":1,"1390":1,"1393":1,"1423":1,"1431":1,"1451":1,"1458":1,"1467":1,"1494":1,"1500":1,"1515":1,"1555":1,"1570":1,"1573":1,"1626":1,"1628":1,"1657":1,"1660":1,"1663":1,"1665":1,"1666":2,"1670":2,"1671":1,"1676":1,"1731":1,"1807":1,"1808":1,"1809":1,"1815":1,"1817":1,"1819":3,"1820":2,"1822":3,"1835":1,"1836":5,"1837":1,"1841":1,"1842":1,"1847":2,"1849":1,"1851":2,"1852":1,"1855":1,"1857":1,"1864":1,"1866":1,"1873":2,"1877":2,"1878":1,"1906":1,"1908":3,"1923":1,"1933":1,"1935":1,"1940":3,"1941":2,"1942":1,"1948":2,"1955":1,"2034":2,"2038":2,"2046":1,"2047":1,"2076":1,"2112":1,"2113":2,"2114":1,"2118":2,"2119":1,"2125":1,"2126":1,"2128":2,"2132":1,"2136":1,"2139":1,"2143":2,"2144":1,"2148":1,"2149":2,"2153":1,"2161":2,"2165":1,"2169":6,"2170":1,"2171":3,"2172":1,"2178":1,"2183":1,"2226":1,"2230":1,"2236":1,"2242":1,"2252":1,"2259":1,"2263":4,"2276":1,"2280":1,"2282":2,"2284":1,"2294":2,"2298":1,"2299":1,"2300":1,"2302":1,"2320":1,"2331":1,"2350":1,"2398":1,"2403":1,"2405":2,"2408":1,"2411":3,"2413":2,"2414":1,"2448":1,"2454":1,"2479":1,"2480":1,"2492":1,"2512":1,"2515":1,"2516":5,"2517":2,"2518":4,"2519":4,"2530":1,"2535":1,"2548":2,"2553":3,"2564":2,"2566":8,"2571":1,"2573":1,"2576":10,"2577":12,"2581":1,"2587":2,"2593":1,"2594":1,"2596":2,"2597":2,"2600":1,"2614":1,"2616":2,"2636":1,"2640":2,"2644":1,"2646":1,"2647":1,"2664":1,"2671":1,"2672":2,"2683":1,"2688":1,"2693":1,"2695":1,"2702":1,"2721":1,"2749":1,"2756":1}}],["uses",{"2":{"8":1,"36":1,"46":1,"50":1,"89":1,"100":1,"114":1,"163":1,"218":1,"401":1,"403":1,"430":1,"436":1,"495":1,"510":1,"526":1,"529":1,"530":1,"554":1,"635":2,"657":3,"661":2,"662":1,"681":1,"687":1,"1134":3,"1221":1,"1234":1,"1240":1,"1265":1,"1268":2,"1283":1,"1315":1,"1322":1,"1332":3,"1336":2,"1362":1,"1401":1,"1405":3,"1492":1,"1527":2,"1803":1,"1804":1,"1813":2,"1821":1,"1834":1,"1835":1,"1836":1,"1846":1,"1848":1,"1858":1,"1905":1,"1906":1,"1908":1,"1917":1,"1948":2,"1950":1,"1959":1,"2033":1,"2112":1,"2114":3,"2125":1,"2225":2,"2233":1,"2238":1,"2295":3,"2307":1,"2342":1,"2406":1,"2411":2,"2414":1,"2437":3,"2454":1,"2479":1,"2506":1,"2510":1,"2523":1,"2533":2,"2546":1,"2585":1,"2592":1,"2596":1,"2614":1,"2616":1,"2708":1,"2710":1,"2737":1}}],["user\`",{"2":{"1344":1}}],["username>",{"2":{"446":1,"1380":1,"2421":1,"2422":2,"2475":3,"2479":2}}],["username",{"2":{"385":2,"425":1,"482":3,"554":2,"1376":1,"1380":2,"2421":1,"2435":1,"2436":2,"2437":2,"2438":5,"2468":1,"2553":1,"2672":1}}],["user",{"0":{"40":1,"53":1,"67":1,"72":1,"85":1,"101":1,"121":1,"139":1,"155":1,"165":1,"180":1,"193":1,"203":1,"205":1,"216":1,"225":1,"239":1,"252":1,"269":1,"369":1,"415":1,"425":1,"431":1,"450":1,"572":1,"576":1,"582":1,"588":1,"590":2,"594":1,"1359":1,"1444":1,"1526":1,"1555":1,"1556":1,"1689":1,"1690":1,"1718":1,"1778":1,"1783":1,"2023":1,"2028":1,"2192":1,"2741":1},"1":{"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"86":1,"87":1,"88":1,"89":1,"90":1,"102":1,"103":1,"104":1,"105":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"140":1,"141":1,"142":1,"143":1,"156":1,"157":1,"158":1,"159":1,"166":1,"167":1,"168":1,"169":1,"170":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"194":1,"195":1,"196":1,"197":1,"206":1,"207":1,"217":1,"218":1,"219":1,"220":1,"221":1,"226":1,"240":1,"241":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"270":1,"271":1,"272":1,"273":1,"370":1,"371":1,"372":1,"373":1,"374":1,"375":1,"376":1,"377":1,"378":1,"379":1,"380":1,"381":1,"382":1,"383":1,"384":1,"385":1,"386":1,"387":1,"388":1,"389":1,"390":1,"391":1,"432":1,"433":1,"434":1,"435":1,"1360":1,"1361":1,"1362":1,"1363":1,"1445":1,"1446":1,"1447":1,"1448":1,"1449":1,"1779":1,"2024":1,"2193":1},"2":{"3":1,"4":1,"7":1,"15":1,"28":1,"31":5,"34":3,"49":3,"70":3,"75":3,"90":4,"93":1,"105":8,"114":1,"125":4,"134":1,"149":3,"154":1,"158":1,"167":1,"176":6,"182":2,"185":4,"191":4,"195":2,"196":3,"199":1,"203":5,"211":4,"213":2,"220":1,"222":1,"228":2,"229":1,"231":3,"238":1,"249":7,"277":2,"352":4,"367":1,"385":1,"415":5,"422":1,"425":4,"429":1,"430":6,"431":2,"433":3,"435":3,"440":1,"511":1,"530":1,"534":3,"556":1,"566":4,"568":4,"571":1,"572":1,"573":1,"574":1,"576":1,"577":1,"579":1,"582":1,"583":1,"586":2,"587":1,"588":4,"590":2,"591":2,"592":2,"593":1,"594":1,"595":1,"606":1,"616":1,"1245":1,"1252":1,"1302":1,"1303":1,"1331":3,"1332":35,"1333":3,"1335":1,"1341":2,"1343":1,"1344":2,"1345":1,"1359":4,"1360":4,"1375":2,"1378":1,"1379":1,"1383":5,"1384":2,"1385":2,"1398":1,"1400":1,"1404":2,"1430":4,"1437":1,"1440":1,"1445":5,"1446":2,"1449":1,"1506":2,"1507":2,"1511":1,"1549":4,"1553":1,"1554":2,"1555":2,"1556":4,"1560":4,"1593":1,"1594":1,"1633":2,"1634":1,"1678":1,"1680":2,"1686":2,"1689":1,"1690":1,"1714":1,"1716":2,"1717":1,"1718":1,"1729":3,"1733":4,"1791":1,"1792":1,"1806":1,"1813":1,"1814":1,"1815":1,"1816":3,"1820":1,"1822":5,"1823":2,"1826":3,"1830":1,"1849":3,"1853":4,"1854":2,"1858":3,"1859":3,"1861":2,"1862":2,"1866":1,"1870":2,"1871":1,"1876":1,"1877":2,"1878":3,"1917":1,"1932":1,"1933":3,"1934":1,"1935":2,"1936":1,"1937":2,"1938":1,"1939":1,"1940":2,"1941":3,"1943":2,"1948":2,"1949":3,"1951":1,"1952":3,"1957":4,"1958":3,"1959":2,"1960":1,"2034":2,"2042":1,"2043":3,"2044":5,"2065":1,"2066":1,"2069":1,"2070":1,"2071":2,"2078":1,"2130":14,"2137":1,"2139":1,"2140":2,"2143":9,"2152":3,"2158":1,"2161":2,"2162":1,"2166":1,"2167":3,"2168":7,"2169":4,"2170":4,"2171":4,"2183":1,"2192":1,"2196":1,"2197":1,"2198":1,"2228":2,"2243":1,"2245":1,"2247":1,"2249":1,"2255":4,"2258":1,"2261":1,"2263":4,"2299":2,"2300":2,"2305":1,"2306":3,"2314":1,"2319":1,"2413":2,"2414":2,"2415":1,"2421":2,"2427":1,"2435":1,"2438":1,"2440":2,"2441":1,"2443":1,"2444":1,"2445":1,"2465":1,"2468":2,"2483":2,"2491":5,"2513":1,"2518":1,"2522":1,"2543":1,"2565":1,"2566":6,"2567":2,"2573":1,"2574":1,"2576":2,"2577":10,"2604":1,"2606":2,"2614":1,"2616":2,"2696":1,"2701":1,"2709":2,"2728":1,"2737":1,"2741":1,"2749":3,"2757":1}}],["userspace",{"0":{"228":1,"392":1,"393":1,"394":1,"395":1,"396":1,"397":1,"1376":1,"1378":1,"2258":1,"2428":1,"2441":1,"2443":1,"2444":1,"2446":1,"2447":1},"1":{"393":1,"394":1,"395":1,"396":1,"397":1,"1377":1,"1378":1,"1379":1,"1380":1,"1381":1,"1382":1,"1383":1,"1384":1,"1385":1,"2429":1,"2430":1,"2431":1,"2432":1,"2433":1,"2434":1,"2435":1,"2436":1,"2437":1,"2438":1,"2439":1,"2440":1,"2442":1,"2443":1,"2444":1,"2445":1,"2446":1,"2447":1,"2448":1},"2":{"74":2,"76":1,"134":1,"176":1,"191":3,"199":1,"211":1,"213":2,"222":1,"224":1,"228":4,"236":3,"241":2,"249":1,"253":2,"265":2,"268":2,"270":2,"275":1,"393":6,"394":6,"395":4,"396":3,"397":8,"556":1,"1376":2,"1377":2,"1378":1,"1382":1,"1383":2,"1384":3,"1385":2,"1398":1,"1729":2,"1952":2,"2258":1,"2261":1,"2428":1,"2437":1,"2440":1,"2441":5,"2442":1,"2443":3,"2444":3,"2445":2,"2446":5,"2447":5,"2448":1,"2565":1,"2566":1,"2724":1}}],["users",{"0":{"1339":1,"1340":1,"1672":1},"1":{"1673":1,"1674":1,"1675":1},"2":{"0":1,"9":1,"13":1,"19":1,"39":1,"52":1,"62":1,"70":1,"114":1,"118":1,"131":1,"154":1,"156":1,"166":2,"173":1,"201":1,"221":2,"228":1,"234":1,"243":2,"263":1,"276":1,"309":1,"310":1,"322":1,"337":1,"352":5,"388":1,"401":1,"414":1,"415":1,"417":1,"423":1,"424":1,"435":1,"450":1,"451":1,"496":1,"519":1,"527":1,"559":1,"575":1,"606":1,"609":1,"697":1,"1238":1,"1265":1,"1337":1,"1340":1,"1341":2,"1346":2,"1376":4,"1377":1,"1382":2,"1383":1,"1447":1,"1499":1,"1555":1,"1670":1,"1685":1,"2183":1,"2258":2,"2261":1,"2299":1,"2300":1,"2304":1,"2305":4,"2306":1,"2435":1,"2437":2,"2440":1,"2441":2,"2459":2,"2463":1,"2475":1,"2478":1,"2566":2,"2573":1,"2577":1,"2656":1,"2718":3,"2719":1}}],["use",{"0":{"6":1,"17":1,"30":1,"32":1,"33":1,"164":1,"1267":1,"1435":1,"1656":1,"1809":1,"1871":1,"1878":1,"2161":1,"2255":1,"2293":1,"2752":1},"1":{"31":1,"34":1,"1436":1},"2":{"1":1,"7":1,"17":1,"25":1,"30":1,"31":1,"32":1,"33":1,"34":1,"36":1,"37":1,"43":1,"45":1,"49":2,"70":1,"74":1,"76":1,"80":1,"87":1,"89":1,"93":1,"94":3,"95":1,"99":1,"103":1,"107":1,"114":5,"118":1,"119":3,"126":1,"133":2,"134":9,"149":5,"160":3,"166":1,"167":1,"174":1,"176":15,"179":1,"190":1,"191":15,"194":2,"199":10,"206":1,"211":11,"215":1,"218":1,"220":2,"222":2,"232":1,"236":8,"240":1,"249":4,"256":1,"260":1,"266":2,"277":3,"305":1,"311":1,"313":1,"318":1,"330":1,"331":1,"334":1,"342":1,"349":1,"357":1,"371":1,"378":1,"395":1,"401":1,"402":1,"403":1,"405":2,"430":3,"432":4,"435":1,"440":1,"442":2,"445":2,"446":1,"447":1,"453":6,"454":3,"455":2,"456":1,"457":2,"460":3,"461":1,"462":2,"466":1,"467":1,"469":2,"470":1,"471":1,"472":1,"473":1,"474":1,"475":1,"477":1,"479":3,"481":1,"483":1,"484":1,"487":2,"488":1,"500":1,"502":11,"505":2,"508":1,"509":3,"510":1,"511":1,"515":1,"516":2,"522":1,"529":1,"532":1,"537":1,"540":1,"541":1,"545":1,"554":2,"557":1,"563":2,"566":2,"568":1,"570":2,"571":1,"573":1,"574":1,"586":1,"588":2,"592":1,"597":1,"606":2,"611":2,"612":1,"613":1,"616":1,"621":1,"622":1,"623":1,"625":1,"626":1,"629":1,"631":1,"633":1,"635":1,"641":2,"643":2,"655":1,"657":12,"658":8,"659":2,"661":5,"665":2,"666":2,"669":1,"681":1,"683":1,"689":2,"692":1,"697":1,"698":1,"700":1,"702":1,"703":6,"707":1,"726":1,"730":2,"734":1,"756":2,"760":1,"785":2,"792":1,"817":2,"822":1,"849":2,"857":1,"884":2,"891":1,"918":2,"925":1,"952":2,"959":1,"986":2,"993":1,"1020":2,"1027":1,"1054":2,"1061":1,"1088":2,"1095":1,"1121":1,"1122":1,"1124":3,"1127":1,"1129":1,"1130":1,"1132":5,"1133":5,"1134":1,"1142":2,"1144":2,"1148":1,"1175":1,"1176":1,"1177":8,"1181":1,"1182":1,"1196":1,"1198":7,"1213":2,"1225":1,"1226":7,"1228":1,"1229":2,"1230":7,"1236":1,"1238":2,"1239":1,"1242":3,"1245":2,"1250":1,"1268":3,"1269":1,"1270":1,"1273":1,"1276":2,"1280":1,"1286":1,"1288":1,"1290":2,"1291":1,"1300":2,"1301":1,"1303":1,"1310":2,"1312":1,"1313":1,"1326":2,"1329":1,"1330":1,"1331":1,"1332":9,"1334":1,"1335":1,"1336":2,"1340":1,"1341":3,"1344":2,"1346":1,"1351":2,"1352":2,"1353":2,"1355":1,"1359":3,"1361":2,"1363":1,"1364":1,"1367":1,"1370":2,"1376":1,"1377":1,"1378":2,"1379":1,"1380":1,"1383":7,"1384":1,"1385":4,"1386":1,"1393":3,"1396":2,"1404":1,"1405":2,"1430":2,"1439":1,"1442":1,"1445":2,"1448":2,"1450":1,"1451":1,"1453":1,"1457":1,"1466":1,"1467":1,"1469":6,"1470":4,"1491":1,"1492":1,"1495":2,"1496":1,"1499":1,"1500":2,"1501":2,"1509":1,"1511":1,"1512":1,"1515":1,"1518":1,"1524":1,"1526":1,"1527":1,"1528":2,"1529":1,"1554":1,"1556":1,"1562":1,"1573":1,"1574":1,"1631":1,"1655":3,"1658":1,"1668":2,"1670":3,"1671":1,"1673":1,"1674":1,"1677":4,"1723":4,"1725":1,"1729":2,"1733":2,"1791":1,"1799":1,"1801":1,"1805":2,"1806":1,"1807":1,"1813":1,"1814":1,"1817":2,"1819":1,"1820":10,"1824":1,"1826":1,"1834":1,"1835":1,"1836":4,"1837":1,"1841":1,"1846":1,"1847":1,"1848":1,"1849":5,"1851":1,"1852":1,"1855":2,"1858":1,"1860":1,"1868":1,"1874":1,"1904":1,"1905":1,"1906":1,"1907":3,"1908":1,"1910":3,"1911":2,"1912":1,"1917":1,"1918":1,"1921":1,"1930":1,"1933":3,"1934":1,"1941":2,"1943":1,"1944":4,"1946":1,"1952":2,"1954":1,"1957":2,"1959":2,"1960":1,"2032":1,"2035":6,"2037":1,"2039":1,"2041":1,"2042":1,"2044":2,"2060":1,"2102":1,"2112":1,"2113":1,"2114":2,"2117":2,"2118":2,"2120":2,"2125":1,"2127":1,"2128":3,"2129":6,"2132":1,"2133":1,"2137":1,"2138":1,"2141":2,"2142":1,"2146":1,"2149":2,"2150":1,"2152":1,"2153":1,"2161":2,"2162":2,"2168":1,"2169":3,"2170":2,"2171":4,"2181":3,"2182":2,"2226":2,"2229":3,"2230":1,"2231":2,"2233":1,"2238":3,"2243":1,"2244":1,"2252":2,"2254":1,"2258":1,"2259":2,"2260":1,"2262":6,"2263":3,"2273":1,"2274":3,"2276":1,"2279":2,"2280":1,"2299":1,"2302":3,"2311":2,"2314":2,"2317":1,"2326":1,"2329":1,"2333":1,"2335":1,"2345":1,"2347":1,"2355":1,"2395":2,"2396":1,"2405":4,"2411":1,"2414":1,"2421":1,"2424":1,"2427":1,"2431":1,"2436":2,"2438":1,"2441":3,"2442":1,"2443":1,"2444":1,"2445":3,"2446":1,"2450":1,"2452":1,"2455":1,"2467":1,"2468":2,"2469":1,"2475":1,"2477":1,"2480":6,"2483":1,"2485":1,"2490":1,"2491":3,"2498":1,"2506":4,"2512":1,"2513":2,"2514":1,"2515":1,"2521":1,"2524":1,"2526":1,"2530":4,"2533":1,"2534":1,"2536":2,"2537":2,"2538":2,"2541":2,"2549":1,"2550":1,"2554":1,"2556":2,"2558":2,"2564":2,"2566":8,"2568":1,"2574":1,"2575":3,"2576":3,"2577":3,"2578":3,"2602":1,"2605":3,"2607":4,"2608":1,"2609":1,"2610":2,"2611":1,"2614":1,"2615":3,"2673":2,"2674":1,"2676":2,"2677":2,"2678":1,"2683":2,"2688":1,"2689":2,"2692":1,"2694":1,"2695":1,"2697":3,"2698":1,"2700":1,"2702":1,"2705":3,"2711":1,"2719":1,"2720":2,"2723":2,"2728":4,"2738":4,"2740":1,"2743":1,"2746":3,"2747":1,"2757":1}}],["hkcu",{"2":{"2183":1}}],["hrl",{"2":{"2153":1}}],["hl",{"2":{"2153":3}}],["hwdb",{"2":{"2322":1}}],["hw",{"2":{"1842":1}}],["hfuse",{"2":{"2348":2}}],["hf",{"2":{"1572":13,"1573":2,"1579":2}}],["hfdkb",{"2":{"217":1}}],["hm",{"2":{"1491":1}}],["hc",{"2":{"1491":1,"2299":2}}],["hz",{"2":{"702":1,"786":1,"788":11,"850":1,"853":6,"885":1,"887":6,"919":1,"921":6,"953":1,"955":6,"987":1,"989":6,"1089":1,"1091":10,"2699":1}}],["h>",{"2":{"657":2,"658":2,"661":2,"1132":1,"1133":1,"2577":1}}],["h1",{"2":{"616":1,"617":3}}],["hyper",{"2":{"2254":2,"2410":1}}],["hyphen",{"2":{"1499":1}}],["hypr",{"2":{"1299":1,"2373":2,"2374":1,"2410":2}}],["hypothetical",{"2":{"597":1}}],["hysteresis",{"2":{"114":1}}],["h87a",{"2":{"530":5}}],["h87g2",{"2":{"249":1}}],["hurt",{"2":{"2279":1}}],["hurry",{"2":{"1412":1}}],["hundreds",{"2":{"1825":1}}],["hungarian",{"2":{"1355":1,"2703":3}}],["huge",{"2":{"1527":1}}],["hum5",{"2":{"1578":1}}],["hum4",{"2":{"1578":1}}],["hum3",{"2":{"1578":1}}],["hum2",{"2":{"1578":1}}],["hum1",{"2":{"1578":1}}],["hum",{"2":{"1578":6}}],["humbert",{"2":{"624":1,"1265":1}}],["humans",{"2":{"530":1}}],["human",{"2":{"377":1,"436":1,"2411":1,"2615":1,"2631":1}}],["hui",{"2":{"530":2,"1948":1,"2377":1}}],["hud",{"2":{"530":2,"1948":2,"2377":1}}],["hub",{"0":{"1297":1},"2":{"249":1}}],["hub20",{"2":{"241":2}}],["hub16",{"2":{"241":2}}],["hues",{"2":{"1949":2,"1951":2,"2040":1}}],["hueu",{"2":{"1559":1,"2034":1,"2376":1}}],["hued",{"2":{"1559":1,"2034":1,"2376":1}}],["hue",{"0":{"1984":1,"1985":1,"1986":1,"1987":1,"1988":1,"2054":1},"1":{"1989":1},"2":{"49":1,"111":1,"183":2,"222":3,"292":1,"506":2,"1560":4,"1948":4,"1949":44,"1954":2,"1984":1,"1985":1,"1986":1,"1987":1,"1988":1,"1989":1,"2012":1,"2013":1,"2014":1,"2015":1,"2016":1,"2033":2,"2034":6,"2035":4,"2039":1,"2054":12,"2057":2,"2299":2,"2376":6,"2377":4,"2577":13,"2597":1,"2694":4,"2695":4,"2711":3}}],["h2",{"2":{"211":1,"617":2}}],["hjson",{"2":{"191":1,"199":1,"222":1,"610":2,"2566":1}}],["hpp",{"2":{"160":1}}],["hnahkb",{"2":{"143":3,"149":1}}],["http",{"2":{"315":1,"358":1,"402":1,"522":1,"551":1,"558":1,"1380":1,"1527":1,"2570":1}}],["https",{"2":{"2":1,"21":1,"196":1,"236":1,"314":1,"315":1,"317":4,"359":1,"370":1,"515":1,"520":1,"521":1,"551":1,"554":1,"557":1,"623":1,"624":5,"684":7,"685":1,"701":1,"1235":1,"1236":1,"1242":3,"1274":1,"1275":3,"1279":2,"1280":1,"1281":3,"1283":1,"1289":2,"1290":1,"1293":2,"1297":1,"1298":2,"1359":1,"1680":1,"2040":1,"2252":1,"2255":4,"2303":2,"2431":1,"2438":2,"2443":1,"2444":1,"2462":1,"2475":8,"2479":5,"2506":1,"2513":1,"2553":2,"2566":3,"2672":1}}],["html",{"2":{"279":1,"551":1,"1242":1,"1280":1,"1290":1,"2303":1}}],["ht32",{"2":{"130":1,"134":1}}],["hd44780u",{"2":{"1589":1}}],["hd44780",{"0":{"1588":1,"1596":1,"1598":1,"1599":1,"1600":1,"1602":1,"1603":1,"1605":1,"1607":1,"1609":1,"1611":1,"1613":1,"1615":1,"1617":1,"1619":1,"1622":1,"1624":1,"1626":1,"1628":1},"1":{"1589":1,"1590":1,"1591":1,"1592":1,"1593":1,"1594":1,"1595":1,"1596":1,"1597":2,"1598":1,"1599":1,"1600":1,"1601":2,"1602":1,"1603":1,"1604":2,"1605":1,"1606":2,"1607":1,"1608":2,"1609":1,"1610":2,"1611":1,"1612":2,"1613":1,"1614":2,"1615":1,"1616":2,"1617":1,"1618":2,"1619":1,"1620":2,"1621":2,"1622":1,"1623":2,"1624":1,"1625":2,"1626":1,"1627":2,"1628":1,"1629":2},"2":{"64":1,"160":1,"1591":7,"1593":2,"1594":4,"1609":1,"1613":1,"1622":1,"2566":2}}],["hs60v2",{"0":{"1243":1}}],["hs60",{"2":{"277":1}}],["hs",{"2":{"211":1,"266":1}}],["hsv888",{"2":{"2597":1}}],["hsvs",{"2":{"191":1}}],["hsv",{"0":{"2016":2},"1":{"2017":2},"2":{"49":1,"114":1,"149":1,"1332":7,"1950":1,"1953":22,"1959":11,"1960":1,"2017":2,"2042":5,"2044":2,"2051":7,"2054":2,"2058":24,"2577":1,"2597":3,"2694":1,"2695":1}}],["hsgw",{"2":{"37":2}}],["hierarchies",{"2":{"2492":1,"2503":1}}],["hierarchy",{"2":{"176":1,"568":1}}],["hich",{"2":{"1943":1}}],["hiragana",{"2":{"1280":1,"2391":2}}],["himself",{"2":{"1265":1}}],["his",{"2":{"1265":1,"2270":1,"2281":1}}],["history",{"0":{"606":1},"2":{"2401":1,"2477":1}}],["historically",{"2":{"172":1,"189":1,"273":1,"276":1,"606":1,"2566":1}}],["historical",{"2":{"126":1,"127":1,"241":1,"245":1,"253":1,"270":1,"688":1,"2441":1}}],["hint",{"0":{"618":1},"1":{"619":1,"620":1},"2":{"618":1,"2477":1}}],["hineybush",{"2":{"530":4}}],["hinder",{"2":{"474":1}}],["hi",{"2":{"266":1,"1722":1}}],["hillside48",{"2":{"176":1}}],["hillside",{"2":{"149":1,"168":2,"181":6,"191":1}}],["hits",{"2":{"1329":1,"1728":4,"1949":5}}],["hitting",{"2":{"626":2,"1508":1,"2169":1,"2226":1,"2263":1,"2479":1,"2490":1,"2608":1,"2738":1}}],["hit",{"2":{"114":1,"152":1,"291":1,"505":1,"627":1,"1270":1,"1329":1,"1406":1,"1412":1,"1508":4,"1651":1,"1678":1,"1684":1,"1686":1,"1728":5,"1821":1,"1949":7,"2145":1,"2153":1,"2160":3,"2169":4,"2182":1,"2234":1,"2508":1,"2718":1}}],["highest",{"2":{"496":1,"659":1,"1329":1,"1332":1,"1338":1,"1341":2,"1343":1,"1344":1,"1406":1,"1451":1,"1452":1,"1525":1,"1722":1,"1813":1,"1859":1,"1861":1,"1876":2,"1877":2,"1958":3,"2137":1,"2172":1,"2403":1,"2605":1,"2644":1}}],["higher",{"2":{"114":1,"125":1,"185":1,"341":1,"502":1,"505":1,"659":1,"1136":1,"1335":1,"1338":2,"1340":1,"1821":1,"1842":1,"2170":1,"2401":2,"2403":4,"2406":1,"2564":2,"2574":1,"2576":1,"2605":1,"2720":1,"2737":1}}],["highlight",{"2":{"435":1}}],["highlights",{"2":{"381":1}}],["highlighted",{"2":{"272":1}}],["highly",{"2":{"182":1,"663":1,"1377":1,"2102":1,"2341":1,"2478":1,"2568":1}}],["high",{"2":{"49":2,"92":1,"114":1,"243":2,"279":1,"352":1,"502":3,"509":1,"510":2,"517":1,"556":1,"659":4,"683":1,"696":5,"1126":1,"1134":1,"1214":2,"1215":1,"1225":1,"1331":1,"1399":1,"1406":1,"1451":2,"1457":1,"1458":1,"1557":1,"1562":1,"1576":2,"1577":2,"1633":3,"1683":1,"1715":1,"1717":2,"1803":2,"2124":1,"2150":1,"2311":1,"2343":1,"2344":1,"2345":1,"2346":1,"2348":2,"2401":1,"2406":1,"2530":1,"2548":1,"2577":1,"2619":1,"2676":1,"2677":1,"2685":1,"2720":1,"2735":1,"2736":1,"2742":1}}],["hidden",{"2":{"2601":1,"2749":1}}],["hid4java",{"2":{"1921":1}}],["hidapi",{"2":{"1921":1}}],["hidraw",{"2":{"1254":1}}],["hidbootflash",{"2":{"2237":1}}],["hidboot",{"2":{"629":1}}],["hidusb",{"2":{"240":1,"626":1,"627":2,"629":4}}],["hides",{"2":{"2407":1}}],["hide",{"2":{"199":1,"1384":1}}],["hid",{"0":{"1249":1,"1254":1,"1918":1,"1925":1,"1927":1,"2238":1,"2639":1},"1":{"1919":1,"1920":1,"1921":1,"1922":1,"1923":1,"1924":1,"1925":1,"1926":2,"1927":1,"1928":2},"2":{"2":1,"34":1,"49":2,"50":1,"114":3,"143":2,"149":2,"199":2,"222":2,"236":1,"266":1,"371":1,"503":1,"516":1,"625":2,"629":1,"1249":1,"1254":4,"1255":1,"1272":1,"1273":1,"1278":1,"1491":1,"1677":1,"1714":1,"1849":3,"1855":4,"1881":2,"1916":1,"1918":2,"1920":4,"1921":7,"1922":2,"1923":11,"1925":1,"1927":1,"1948":1,"2034":1,"2235":1,"2237":1,"2238":6,"2239":1,"2263":2,"2320":1,"2321":1,"2355":1,"2385":1,"2401":1,"2406":1,"2566":1,"2571":1,"2639":1,"2649":1,"2660":2,"2701":1,"2738":1}}],["h7",{"2":{"49":1}}],["hhkbs",{"2":{"36":2}}],["hhkb",{"0":{"35":1,"36":1,"257":1,"258":1},"1":{"36":1},"2":{"35":3,"36":8,"211":2,"256":2,"257":1,"258":1,"1283":1}}],["hebrew",{"2":{"2703":2}}],["heir",{"2":{"1943":1}}],["heights",{"2":{"1820":1}}],["height",{"2":{"111":1,"114":1,"1817":2,"1820":3,"1821":3,"1822":1,"1838":2,"2141":2,"2142":3,"2576":13,"2577":9,"2587":2,"2594":1,"2615":1,"2686":1}}],["henkan",{"2":{"1280":1,"2391":1}}],["hence",{"2":{"656":1,"1329":1,"1401":1}}],["hey",{"2":{"343":1,"344":1,"345":1,"346":1,"349":1}}],["her",{"2":{"1565":1}}],["hertz",{"2":{"659":1}}],["herringbone",{"2":{"197":4}}],["here",{"0":{"1260":1},"2":{"31":1,"213":1,"233":1,"264":1,"274":1,"307":1,"316":1,"323":1,"324":2,"327":1,"329":1,"330":1,"331":1,"334":1,"335":2,"336":1,"391":1,"453":1,"485":1,"501":1,"515":1,"534":1,"554":5,"560":2,"562":1,"565":2,"566":2,"570":1,"586":1,"609":1,"614":1,"621":1,"629":1,"659":1,"683":1,"1235":1,"1236":1,"1242":1,"1262":1,"1268":1,"1271":1,"1287":1,"1297":1,"1300":1,"1331":1,"1332":1,"1346":1,"1351":1,"1359":2,"1377":2,"1379":1,"1383":1,"1405":1,"1430":1,"1431":1,"1450":1,"1453":1,"1464":2,"1497":1,"1518":4,"1523":1,"1530":1,"1562":1,"1668":1,"1725":1,"1832":1,"1855":1,"1859":1,"1876":1,"1877":1,"1921":2,"1923":1,"1943":1,"1946":1,"1959":1,"2040":1,"2041":1,"2119":1,"2126":1,"2160":1,"2161":1,"2164":1,"2169":2,"2170":2,"2171":1,"2181":1,"2242":1,"2255":2,"2261":1,"2262":1,"2263":1,"2268":1,"2272":1,"2275":1,"2277":2,"2278":1,"2279":1,"2298":1,"2311":2,"2319":1,"2320":1,"2324":1,"2348":2,"2351":1,"2367":1,"2374":1,"2407":1,"2410":1,"2424":1,"2431":1,"2441":1,"2443":1,"2459":1,"2473":1,"2475":1,"2476":1,"2477":1,"2488":1,"2489":1,"2506":1,"2508":1,"2513":1,"2522":1,"2555":1,"2566":1,"2568":2,"2601":1,"2612":1,"2670":1,"2702":1,"2710":1,"2721":1,"2725":1,"2728":1,"2739":1,"2741":2,"2746":1,"2748":1,"2750":1}}],["heated",{"2":{"2272":1}}],["heat",{"2":{"1950":1,"2270":1,"2272":3}}],["heating",{"2":{"1950":1,"2272":1,"2521":1}}],["heatmap",{"0":{"1950":1},"2":{"160":1,"176":2,"211":1,"1949":3,"1950":8,"2711":1}}],["heavily",{"2":{"1257":1,"1316":1,"1317":1,"1733":1,"1957":1}}],["heavy",{"2":{"149":1,"249":1,"251":1,"1219":1,"2454":1}}],["healthy",{"2":{"627":1}}],["headings",{"0":{"617":1},"2":{"617":3}}],["heading",{"2":{"616":3}}],["headroom",{"2":{"134":2}}],["head",{"2":{"99":1,"302":1,"319":1,"320":1,"347":1,"1259":1,"1264":1,"2477":6,"2504":1,"2507":1,"2509":1}}],["headers",{"2":{"94":1,"160":1,"199":1,"211":3,"249":2,"282":3,"294":1,"341":1,"559":1,"1825":1,"2564":2,"2701":1,"2702":1,"2703":1}}],["header",{"0":{"2570":1,"2586":1,"2593":1,"2703":1},"2":{"4":1,"134":1,"176":1,"191":6,"211":1,"222":2,"249":1,"277":1,"404":1,"453":1,"501":1,"534":1,"1554":1,"2309":1,"2328":1,"2339":2,"2352":1,"2450":1,"2564":4,"2585":2,"2586":2,"2587":3,"2588":3,"2589":2,"2592":2,"2593":8,"2594":3,"2595":2,"2596":3,"2597":2,"2598":2,"2599":2,"2701":1,"2702":3,"2703":4}}],["hecomi",{"2":{"143":2}}],["hexnumpad",{"2":{"2196":1,"2197":1,"2198":1}}],["hexadecimal",{"2":{"2091":1,"2093":1,"2095":1,"2097":1,"2181":1,"2699":2}}],["hex6c",{"2":{"211":1}}],["hex",{"2":{"94":1,"160":1,"199":1,"371":1,"387":1,"513":1,"612":2,"1238":1,"1287":6,"1385":1,"1923":1,"2075":1,"2183":2,"2229":1,"2230":1,"2231":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":2,"2252":1,"2262":3,"2263":4,"2277":1,"2278":1,"2346":1,"2347":6,"2348":1,"2349":4,"2425":3,"2427":1,"2437":1,"2452":3,"2453":1,"2469":3,"2674":1}}],["helios",{"0":{"1321":1},"2":{"199":1,"1311":2,"1315":4,"1322":4,"1631":1,"2545":1,"2712":1}}],["helix",{"0":{"55":1},"2":{"55":52,"114":1,"133":1,"134":1,"149":1,"160":1,"211":1,"266":1,"1814":1}}],["held",{"2":{"160":1,"194":3,"623":1,"1273":1,"1284":1,"1300":1,"1303":1,"1335":1,"1367":1,"1368":1,"1412":2,"1414":1,"1431":1,"1442":1,"1446":2,"1503":1,"1518":2,"1564":1,"1566":1,"1582":3,"1651":1,"1654":1,"1670":1,"1674":2,"1675":1,"1802":1,"1803":1,"1806":2,"1807":1,"1859":1,"1864":1,"1865":1,"1933":2,"1948":10,"2034":10,"2108":1,"2110":7,"2111":1,"2112":9,"2113":1,"2125":1,"2152":1,"2156":5,"2161":4,"2168":1,"2169":3,"2170":1,"2171":2,"2236":1,"2263":1,"2320":1,"2355":2,"2356":2,"2364":1,"2367":1,"2374":22,"2376":10,"2377":10,"2382":7,"2383":5,"2393":1,"2407":1,"2410":23,"2414":1,"2479":1,"2490":1,"2572":2,"2651":1,"2654":1,"2659":1,"2729":5,"2730":1,"2731":1,"2732":2,"2733":1,"2734":2,"2738":1}}],["helped",{"2":{"2474":1}}],["helper",{"2":{"49":1,"2130":1,"2269":1}}],["helpers",{"0":{"231":1},"2":{"49":1,"199":2,"211":1,"236":1}}],["helping",{"2":{"2266":1,"2418":1}}],["helpful",{"2":{"620":2,"1431":1,"1683":1,"1876":1,"2037":1,"2131":1,"2273":1,"2404":1,"2405":1,"2419":1,"2714":1}}],["help=",{"2":{"430":1,"441":2}}],["helps",{"2":{"173":1,"380":1,"477":1,"511":1,"1265":1,"1817":2,"2141":1,"2182":1,"2272":3,"2274":1,"2510":1,"2667":1,"2722":1}}],["help",{"0":{"356":1,"553":1,"2316":1,"2713":1},"1":{"2714":1,"2715":1,"2716":1},"2":{"132":1,"173":1,"228":1,"324":1,"393":2,"394":2,"395":2,"396":2,"402":2,"403":2,"411":2,"446":1,"485":1,"550":2,"553":1,"554":1,"556":1,"557":1,"567":1,"585":1,"613":1,"615":2,"623":1,"1337":1,"1340":1,"1353":1,"1406":1,"1416":1,"1437":1,"1530":4,"1733":1,"1957":1,"2123":1,"2176":1,"2250":1,"2262":1,"2267":1,"2268":1,"2273":1,"2280":1,"2286":2,"2311":1,"2313":1,"2316":1,"2317":1,"2355":2,"2392":2,"2400":1,"2450":1,"2455":1,"2468":1,"2477":3,"2510":2,"2521":1,"2564":1,"2566":1,"2568":1,"2575":6,"2637":1,"2705":1,"2706":1,"2713":1,"2714":1,"2727":1}}],["hello",{"0":{"1593":1,"2078":1},"2":{"23":1,"120":1,"426":1,"430":10,"432":1,"470":1,"1354":1,"1355":1,"1436":3,"1593":1,"1610":1,"2078":3,"2154":1,"2577":1}}],["hobbyist",{"2":{"2417":1}}],["hop",{"2":{"1258":1,"2748":1}}],["hopefully",{"2":{"560":1,"2752":1}}],["hope",{"2":{"245":1,"446":1,"1380":1,"2570":1}}],["hover",{"2":{"540":1,"2513":1}}],["housings",{"2":{"2272":1}}],["housekeeping",{"0":{"587":1,"588":1},"1":{"588":1},"2":{"75":1,"92":1,"277":1,"587":2,"588":2,"2130":2,"2577":7}}],["hours",{"2":{"358":1,"551":1}}],["home=",{"2":{"365":1,"366":1}}],["homebrew",{"0":{"365":1},"2":{"365":1,"2238":1,"2431":1,"2461":1,"2462":1}}],["home",{"0":{"1599":1},"2":{"277":1,"367":1,"373":1,"388":1,"393":1,"394":1,"397":4,"530":2,"1361":7,"1511":1,"1519":1,"1586":1,"1594":1,"1599":1,"1684":2,"1932":3,"2169":1,"2254":1,"2355":5,"2392":2,"2393":2,"2394":1,"2408":1,"2422":1,"2463":1,"2468":2,"2566":1,"2575":6,"2740":1}}],["hood",{"2":{"436":1,"611":1}}],["hoodrowg",{"2":{"211":1}}],["hooking",{"2":{"584":1,"585":1,"1902":1}}],["hooks",{"0":{"1556":1},"2":{"277":1,"567":1,"1556":1,"1723":1,"1944":1,"2067":1,"2150":1,"2152":2}}],["hook",{"0":{"1519":1,"1917":1},"2":{"199":1,"272":1,"584":1,"1386":1,"1525":1,"1902":2,"2529":1}}],["hooked",{"2":{"198":1,"506":1}}],["horizontally",{"2":{"1821":1,"1857":1,"1949":1}}],["horizontal",{"2":{"1807":1,"1821":1,"1836":1,"1844":1,"1855":1,"2577":1,"2686":1,"2688":1,"2695":1}}],["horrortroll",{"2":{"199":1}}],["horn",{"2":{"176":1}}],["hole",{"2":{"2266":1,"2528":1}}],["holiday",{"2":{"176":1}}],["holds",{"2":{"195":1,"1430":2,"1431":3,"1565":2,"1651":1,"2162":1,"2169":1,"2401":2,"2406":2,"2490":1,"2737":1}}],["holdings",{"2":{"211":1}}],["holding",{"0":{"1518":1},"2":{"152":2,"626":2,"1303":1,"1385":2,"1411":1,"1416":1,"1430":1,"1431":1,"1432":1,"1674":1,"1675":1,"1802":5,"1839":1,"1864":1,"1865":1,"2152":1,"2182":1,"2231":1,"2238":1,"2305":1,"2355":1,"2401":1,"2654":1,"2728":1,"2738":2,"2739":1}}],["hold",{"0":{"22":1,"195":1,"1308":1,"1432":1,"2168":1,"2414":1,"2415":1,"2726":1,"2729":1,"2735":1,"2736":1},"1":{"2727":1,"2728":1,"2729":1,"2730":2,"2731":2,"2732":2,"2733":2,"2734":2,"2735":2,"2736":2,"2737":1,"2738":1,"2739":1,"2740":1,"2741":1},"2":{"22":1,"112":4,"114":1,"134":2,"149":2,"176":2,"191":2,"194":8,"195":5,"199":3,"203":1,"206":3,"249":1,"505":18,"624":1,"626":2,"1270":1,"1284":1,"1299":19,"1308":1,"1335":1,"1353":1,"1368":2,"1409":1,"1411":1,"1412":2,"1414":1,"1416":1,"1423":1,"1431":5,"1432":2,"1446":2,"1495":1,"1500":1,"1516":3,"1518":5,"1522":1,"1529":1,"1651":1,"1653":1,"1654":1,"1670":1,"1673":3,"1674":2,"1675":2,"1805":1,"1806":1,"1839":3,"1864":2,"1871":1,"2112":1,"2168":33,"2169":16,"2170":4,"2171":6,"2179":2,"2196":2,"2237":1,"2249":2,"2263":1,"2269":1,"2272":2,"2366":1,"2373":19,"2379":1,"2410":1,"2414":4,"2415":3,"2416":1,"2450":4,"2490":2,"2498":1,"2566":2,"2674":4,"2691":1,"2724":1,"2726":2,"2727":1,"2728":1,"2729":10,"2730":1,"2731":4,"2732":6,"2733":4,"2735":19,"2736":14,"2737":2,"2740":1,"2754":4}}],["honor",{"2":{"176":1,"2441":1}}],["honeycomb",{"2":{"159":2}}],["hot",{"2":{"1949":1,"1950":1,"2118":1,"2133":1,"2267":1,"2273":2,"2280":1}}],["hotkey",{"2":{"1932":1}}],["hotkeys",{"2":{"1442":1,"1929":1,"1932":1}}],["hotdox76v2",{"2":{"191":1}}],["hotswap",{"2":{"122":1,"149":1,"191":1,"199":1,"207":2,"211":8,"222":1,"241":4,"266":1,"424":1}}],["hotfix",{"2":{"114":1,"134":1}}],["hosts",{"2":{"2637":1}}],["hosting",{"2":{"623":1,"2303":1,"2566":1}}],["host",{"0":{"1355":1,"1719":1,"2669":2},"2":{"113":1,"114":1,"134":1,"149":2,"182":1,"190":2,"191":3,"195":1,"199":2,"211":1,"222":1,"263":2,"334":1,"511":1,"515":1,"625":1,"1292":1,"1316":2,"1317":2,"1355":2,"1537":2,"1538":1,"1638":1,"1641":1,"1670":1,"1714":3,"1719":4,"1807":1,"1813":3,"1824":1,"1825":1,"1826":4,"1830":1,"1853":1,"1855":4,"1858":1,"1881":1,"1897":1,"1910":2,"1912":1,"1917":1,"1918":2,"1922":1,"1923":2,"1925":1,"1958":1,"1959":2,"2035":1,"2072":1,"2075":1,"2129":2,"2137":3,"2177":1,"2183":1,"2263":1,"2341":1,"2417":1,"2429":1,"2433":1,"2554":1,"2611":1,"2669":1,"2688":1,"2694":1,"2695":1,"2699":2,"2729":1,"2735":2,"2736":1,"2743":1}}],["hosted",{"2":{"93":1}}],["hostname",{"2":{"70":3}}],["however",{"2":{"493":1,"496":1,"575":1,"584":1,"625":1,"630":1,"633":1,"643":1,"665":1,"689":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1175":1,"1196":1,"1213":1,"1217":1,"1225":1,"1273":1,"1278":1,"1325":1,"1331":1,"1383":1,"1385":1,"1405":2,"1416":1,"1431":1,"1458":1,"1463":1,"1492":1,"1499":1,"1562":1,"1564":1,"1582":3,"1685":1,"1806":1,"1820":1,"1821":2,"1876":1,"1920":1,"1921":1,"2073":1,"2113":1,"2118":2,"2126":1,"2128":1,"2134":1,"2169":1,"2172":1,"2178":1,"2182":1,"2183":1,"2243":1,"2327":1,"2328":1,"2344":1,"2350":1,"2408":1,"2451":1,"2454":1,"2497":2,"2507":1,"2516":1,"2517":1,"2518":1,"2541":1,"2564":1,"2591":1,"2701":1,"2704":1,"2735":1,"2746":1,"2750":1,"2756":1}}],["how",{"0":{"550":1,"554":1,"567":1,"1253":1,"1259":1,"1269":1,"1286":1,"1411":1,"1413":1,"1438":1,"1439":1,"1500":1,"1866":1,"1867":1,"1930":1,"1940":1,"1941":1,"2161":1,"2255":1,"2283":1,"2311":1,"2318":1,"2326":1,"2472":1,"2614":1,"2616":1,"2720":1,"2721":1},"1":{"551":1,"568":1,"1501":1,"1868":1,"1869":1,"1870":1,"1871":1,"2319":1,"2320":1,"2321":1,"2322":1,"2323":1,"2324":1,"2325":1,"2326":1},"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"70":1,"76":1,"77":1,"90":1,"123":1,"153":2,"186":1,"188":1,"194":1,"263":1,"322":1,"337":1,"412":1,"430":1,"431":1,"453":1,"502":1,"505":6,"528":1,"545":1,"551":2,"554":1,"557":1,"561":2,"567":1,"588":1,"605":1,"606":1,"609":1,"611":1,"613":1,"641":1,"758":1,"787":1,"789":1,"819":1,"851":1,"854":1,"886":1,"888":1,"920":1,"922":1,"954":1,"956":1,"988":1,"990":1,"1022":1,"1024":1,"1056":1,"1058":1,"1090":1,"1092":1,"1146":1,"1236":1,"1243":2,"1261":1,"1262":1,"1270":1,"1332":1,"1334":1,"1340":2,"1341":2,"1343":1,"1344":1,"1356":1,"1360":2,"1361":1,"1377":1,"1405":1,"1416":1,"1438":1,"1450":2,"1557":1,"1573":4,"1663":1,"1668":1,"1672":1,"1673":1,"1674":1,"1675":1,"1716":1,"1724":1,"1730":1,"1807":2,"1820":1,"1842":1,"1860":1,"1873":1,"1932":1,"1940":1,"1941":1,"1945":1,"1949":3,"1950":1,"1954":1,"2033":1,"2038":3,"2040":6,"2041":1,"2111":1,"2118":1,"2126":2,"2128":1,"2131":2,"2160":1,"2162":1,"2169":1,"2172":1,"2226":2,"2260":1,"2268":1,"2274":2,"2280":1,"2281":1,"2283":1,"2289":1,"2290":1,"2291":1,"2305":1,"2311":2,"2316":1,"2318":1,"2409":1,"2417":1,"2418":1,"2423":1,"2424":2,"2426":1,"2454":1,"2456":1,"2468":1,"2472":1,"2477":1,"2483":1,"2492":1,"2503":2,"2522":1,"2553":1,"2556":1,"2564":1,"2566":1,"2568":1,"2576":2,"2577":3,"2578":1,"2613":1,"2614":2,"2663":1,"2671":1,"2688":1,"2695":1,"2723":1,"2724":1,"2725":2,"2728":1,"2740":1,"2742":2,"2746":1,"2747":2,"2751":1,"2753":2}}],["h",{"0":{"501":1,"1379":1,"1730":1,"1823":1,"1868":1,"1954":1,"2012":1,"2014":1,"2261":1,"2299":1,"2302":1,"2706":1},"1":{"502":1,"503":1,"504":1,"505":1,"506":1,"507":1,"508":1,"509":1,"510":1,"511":1,"2015":1},"2":{"4":2,"5":4,"14":1,"25":1,"28":1,"31":2,"34":2,"49":1,"50":8,"65":3,"70":12,"73":2,"74":1,"75":2,"76":1,"86":2,"94":1,"114":6,"119":1,"134":1,"149":3,"169":2,"170":2,"173":3,"176":12,"184":2,"191":3,"199":12,"201":4,"211":10,"220":1,"222":13,"236":7,"246":1,"249":1,"266":12,"273":1,"277":2,"282":1,"313":1,"314":1,"374":1,"384":1,"389":1,"390":1,"391":1,"393":2,"394":2,"395":2,"396":2,"401":1,"402":2,"403":2,"404":1,"411":2,"453":2,"496":2,"499":1,"501":2,"530":3,"534":1,"559":1,"588":1,"601":1,"606":3,"607":1,"608":1,"610":3,"613":2,"614":4,"631":1,"641":1,"643":1,"644":1,"657":2,"658":2,"661":4,"666":1,"667":1,"683":1,"684":3,"685":3,"686":2,"689":2,"690":2,"691":2,"694":2,"696":1,"697":1,"700":1,"702":1,"703":4,"704":1,"705":1,"731":1,"757":1,"758":1,"786":1,"787":1,"788":1,"789":1,"790":1,"818":1,"819":1,"820":1,"850":1,"851":1,"852":1,"853":1,"854":1,"855":1,"885":1,"886":1,"887":1,"888":1,"889":1,"919":1,"920":1,"921":1,"922":1,"923":1,"953":1,"954":1,"955":1,"956":1,"957":1,"987":1,"988":1,"989":1,"990":1,"991":1,"1021":1,"1022":1,"1023":1,"1024":1,"1025":1,"1055":1,"1056":1,"1057":1,"1058":1,"1059":1,"1089":1,"1090":1,"1091":1,"1092":1,"1093":1,"1124":2,"1127":1,"1130":1,"1132":5,"1133":5,"1134":1,"1135":1,"1137":1,"1138":1,"1142":1,"1145":1,"1146":1,"1175":1,"1177":6,"1196":1,"1198":2,"1213":1,"1214":1,"1215":1,"1216":1,"1217":1,"1225":1,"1226":2,"1227":1,"1228":1,"1230":3,"1242":1,"1250":2,"1253":1,"1255":1,"1267":1,"1276":1,"1290":1,"1294":1,"1316":1,"1320":1,"1326":1,"1328":1,"1332":1,"1340":1,"1346":1,"1347":2,"1351":4,"1362":1,"1376":3,"1377":1,"1379":7,"1384":1,"1385":6,"1387":1,"1390":1,"1391":1,"1392":1,"1393":2,"1394":1,"1395":1,"1396":1,"1397":1,"1398":4,"1401":1,"1402":2,"1403":2,"1404":1,"1405":1,"1406":2,"1414":1,"1415":2,"1416":1,"1431":1,"1435":2,"1440":1,"1446":1,"1457":1,"1458":1,"1459":1,"1469":2,"1470":2,"1492":1,"1495":1,"1496":2,"1500":2,"1501":1,"1503":1,"1504":1,"1513":1,"1524":1,"1527":4,"1530":2,"1547":1,"1553":2,"1554":1,"1555":1,"1557":1,"1558":1,"1559":1,"1568":1,"1570":1,"1575":1,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"1591":1,"1622":1,"1632":1,"1675":1,"1677":2,"1682":1,"1683":1,"1684":1,"1685":1,"1714":1,"1715":1,"1725":1,"1728":1,"1789":1,"1790":1,"1792":1,"1797":3,"1803":1,"1804":1,"1805":1,"1806":1,"1807":1,"1814":1,"1816":1,"1817":2,"1830":2,"1834":1,"1835":1,"1836":1,"1845":1,"1846":1,"1847":1,"1849":2,"1855":2,"1857":3,"1858":1,"1859":9,"1861":1,"1862":1,"1863":1,"1866":2,"1867":1,"1878":1,"1879":1,"1904":1,"1905":1,"1906":2,"1907":1,"1908":1,"1910":1,"1912":1,"1913":1,"1914":3,"1920":1,"1932":2,"1946":1,"1949":1,"1953":1,"2013":1,"2015":1,"2032":1,"2035":1,"2036":1,"2041":1,"2042":1,"2044":1,"2045":1,"2046":1,"2047":1,"2051":8,"2054":4,"2058":1,"2059":2,"2060":1,"2074":1,"2103":1,"2112":1,"2124":2,"2125":1,"2126":1,"2127":2,"2128":1,"2129":1,"2140":1,"2141":1,"2145":1,"2148":1,"2153":2,"2161":1,"2171":1,"2174":2,"2179":1,"2180":1,"2182":1,"2183":1,"2231":2,"2238":2,"2259":3,"2260":1,"2261":6,"2263":5,"2279":1,"2296":2,"2299":21,"2347":1,"2355":3,"2386":3,"2402":1,"2405":1,"2407":2,"2435":2,"2438":1,"2468":1,"2490":1,"2491":1,"2524":1,"2530":1,"2536":1,"2537":1,"2538":1,"2539":1,"2541":1,"2544":1,"2548":1,"2550":1,"2561":1,"2564":3,"2565":1,"2566":6,"2572":1,"2574":1,"2575":10,"2576":10,"2577":7,"2583":1,"2584":1,"2597":1,"2607":2,"2614":4,"2615":7,"2671":1,"2686":1,"2702":1,"2703":120,"2706":3,"2707":1,"2708":1,"2711":2,"2725":1,"2727":2,"2728":3,"2735":2,"2736":2,"2737":2,"2738":4}}],["hazards",{"0":{"2617":1},"1":{"2618":1,"2619":1,"2620":1}}],["hat",{"2":{"2431":1,"2464":1}}],["hate",{"2":{"401":1}}],["hamming",{"2":{"2152":1}}],["hammer",{"2":{"332":1}}],["habit",{"2":{"1416":1,"1437":1}}],["habits",{"2":{"195":1}}],["hargett",{"2":{"2753":1}}],["harmful",{"2":{"2273":1,"2274":1}}],["harming",{"2":{"481":1}}],["harr",{"2":{"1932":49}}],["harvest",{"2":{"1902":1}}],["hardwired",{"2":{"2271":1}}],["hardware",{"0":{"14":1,"502":1,"661":1,"1396":1,"1491":1,"1550":1,"1561":1,"1571":1,"1589":1,"1811":1,"2061":1,"2116":1,"2117":1,"2131":1,"2132":1,"2136":1,"2284":1,"2303":1,"2328":1,"2524":1,"2525":1,"2535":1,"2556":1,"2673":1},"1":{"1492":1,"1551":1,"1552":1,"2117":1,"2118":2,"2119":1,"2120":1,"2133":1,"2329":1,"2330":1,"2331":1,"2332":1,"2333":1,"2334":1,"2335":1,"2336":1,"2337":1,"2338":1,"2339":1,"2340":1,"2536":1,"2537":1,"2538":1},"2":{"14":2,"113":1,"114":1,"133":1,"156":1,"160":1,"163":2,"176":1,"191":4,"215":1,"236":1,"249":1,"277":1,"352":1,"493":1,"499":1,"511":1,"563":1,"565":1,"566":3,"574":2,"575":2,"578":2,"624":2,"627":1,"654":2,"655":1,"656":2,"661":2,"663":1,"681":1,"684":1,"685":1,"693":1,"703":2,"1122":1,"1125":1,"1127":1,"1128":1,"1130":1,"1195":1,"1289":1,"1325":1,"1396":4,"1459":1,"1461":1,"1463":1,"1466":1,"1492":1,"1573":2,"1720":1,"1729":1,"1788":1,"1811":1,"1821":1,"1832":1,"1840":3,"1850":2,"1852":1,"1853":3,"1902":1,"1952":1,"2031":1,"2065":1,"2115":1,"2131":1,"2133":1,"2146":1,"2230":1,"2284":2,"2300":1,"2301":2,"2303":1,"2304":1,"2329":1,"2333":1,"2346":1,"2347":1,"2348":1,"2407":1,"2515":1,"2523":1,"2524":2,"2525":3,"2530":1,"2535":1,"2543":1,"2546":1,"2553":1,"2555":1,"2566":4,"2567":2,"2578":1,"2638":1,"2676":1,"2718":1,"2719":1,"2725":1,"2743":1}}],["hardline",{"2":{"2270":1}}],["hardcoding",{"2":{"684":1}}],["hardcoded",{"2":{"191":1,"1401":1}}],["harder",{"2":{"606":1,"2314":1,"2424":1}}],["hard",{"2":{"49":1,"92":1,"263":1,"349":1,"361":2,"457":1,"481":3,"560":1,"1684":1,"2042":1,"2292":1,"2305":2,"2417":1,"2475":1}}],["haierwangwei2005",{"2":{"149":1}}],["hacks",{"2":{"479":1}}],["hacking",{"2":{"321":1}}],["hackpad",{"2":{"222":1}}],["hacked",{"2":{"218":1}}],["hacky",{"2":{"160":1}}],["hack",{"2":{"114":2,"149":1}}],["happened",{"2":{"484":1,"560":1,"2071":1,"2734":1,"2757":1}}],["happen",{"2":{"373":1,"452":1,"593":1,"594":1,"627":1,"707":1,"1278":1,"1325":1,"1344":1,"2152":1,"2167":1,"2327":1,"2628":1}}],["happens",{"2":{"349":1,"520":1,"574":3,"588":1,"592":2,"1359":1,"1376":1,"1441":1,"1676":1,"2130":1,"2311":1,"2320":1,"2476":1,"2641":1,"2642":1,"2728":1,"2729":3,"2735":1}}],["happening",{"2":{"113":1,"592":1,"1514":1,"2231":1,"2238":1,"2738":2}}],["happy",{"2":{"119":1,"336":1,"1435":1,"2255":1,"2307":2,"2420":1}}],["haptics",{"2":{"221":1,"1523":1}}],["haptic",{"0":{"1569":1,"1570":1,"1572":1,"1580":1,"1581":1,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1},"1":{"1570":1,"1571":1,"1572":1,"1573":2,"1574":2,"1575":2,"1576":2,"1577":2,"1578":2,"1579":2,"1580":2,"1581":1,"1582":2,"1583":2,"1584":2,"1585":2,"1586":2,"1587":2},"2":{"64":1,"114":2,"134":3,"160":1,"188":1,"191":1,"199":1,"211":1,"221":2,"222":2,"266":1,"592":1,"1570":14,"1572":21,"1579":1,"1580":1,"1581":3,"1582":4,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"2129":2,"2697":3,"2749":1}}],["hankaku",{"2":{"2391":1}}],["hanja",{"2":{"2391":1}}],["hangul",{"2":{"2391":1}}],["hang",{"2":{"303":1}}],["hangs",{"2":{"236":1}}],["hannah65",{"2":{"102":1}}],["handwiring",{"2":{"2269":1,"2725":1}}],["handwire",{"2":{"2268":2,"2280":1}}],["handwired",{"0":{"2307":1},"2":{"43":3,"49":1,"67":1,"72":1,"102":1,"114":2,"120":1,"122":1,"134":1,"149":2,"168":2,"181":3,"191":5,"199":3,"207":1,"211":7,"217":14,"222":1,"226":2,"241":1,"249":1,"253":6,"266":1,"277":3,"380":2,"1354":1,"1355":1,"2245":1,"2247":1,"2249":1,"2259":1,"2281":1,"2307":2,"2513":1,"2514":1,"2566":1,"2567":1}}],["hand88",{"2":{"211":1}}],["handful",{"2":{"130":1,"134":1,"149":1,"198":1,"211":2,"222":1,"606":1,"2240":1,"2549":1,"2730":1}}],["hand",{"0":{"2265":1},"1":{"2266":1,"2267":1,"2268":1,"2269":1,"2270":1,"2271":1,"2272":1,"2273":1,"2274":1,"2275":1,"2276":1,"2277":1,"2278":1,"2279":1,"2280":1,"2281":1},"2":{"114":1,"149":1,"176":1,"249":2,"277":1,"331":2,"509":1,"510":8,"1300":1,"1336":2,"1412":1,"1496":1,"1684":2,"2124":3,"2125":3,"2126":1,"2154":1,"2155":3,"2156":6,"2157":1,"2267":2,"2268":1,"2270":1,"2272":1,"2281":2,"2370":2,"2383":6,"2396":2,"2402":1,"2664":1}}],["handedness",{"0":{"509":1,"510":1,"2123":1,"2124":1,"2125":1,"2126":1,"2127":1},"1":{"510":1,"2124":1,"2125":1,"2126":1,"2127":1},"2":{"134":1,"176":1,"236":1,"509":2,"510":3,"1496":1,"1852":2,"2124":1,"2125":2,"2126":4,"2127":1,"2232":1,"2234":1,"2241":1,"2246":1,"2248":1,"2697":3}}],["handed",{"2":{"107":1,"199":1,"2154":1,"2411":2}}],["handy",{"2":{"99":1,"571":1,"1935":1,"2405":1,"2458":1,"2716":1}}],["hands",{"0":{"2154":1,"2383":1},"1":{"2155":1,"2156":1,"2157":1,"2158":1},"2":{"94":1,"191":1,"199":2,"211":2,"231":3,"249":1,"509":1,"510":2,"1446":4,"1496":1,"1684":4,"1852":1,"2126":1,"2154":3,"2156":9,"2157":1,"2158":9,"2266":1,"2370":4,"2383":8,"2396":4,"2417":1}}],["handles",{"2":{"436":1,"654":1,"1220":1,"1279":1,"1495":1,"1880":1,"1941":1,"2407":1}}],["handle",{"0":{"1940":1,"1941":1},"2":{"134":1,"160":1,"190":1,"191":3,"199":2,"203":1,"222":1,"231":1,"236":1,"341":1,"430":1,"466":2,"573":1,"586":1,"587":1,"1258":1,"1325":1,"1384":1,"1416":1,"1445":1,"1446":1,"1673":1,"1674":1,"1832":1,"1849":1,"1853":2,"1859":3,"1880":1,"1921":1,"1940":1,"2157":1,"2162":2,"2170":1,"2573":1,"2576":10,"2577":18,"2744":1,"2746":1,"2749":1}}],["handled",{"2":{"105":2,"196":1,"502":2,"511":1,"571":1,"1344":1,"1379":1,"1430":1,"1675":1,"1827":1,"1845":1,"1864":1,"1881":1,"1922":1,"2152":1,"2160":1,"2566":1,"2577":1,"2749":1}}],["handlers",{"2":{"191":1,"277":1,"1940":1,"1941":1}}],["handler",{"2":{"73":1,"191":1,"1134":1,"1221":1,"1462":1,"1822":1,"2130":4,"2143":1,"2584":1}}],["handling",{"0":{"16":1,"1874":1},"2":{"11":1,"50":2,"98":1,"114":1,"134":2,"149":1,"191":2,"199":2,"236":3,"266":4,"277":1,"344":1,"345":1,"505":8,"571":1,"1342":1,"1447":1,"1448":1,"1497":1,"1511":1,"1549":1,"1559":1,"1675":1,"1720":1,"1876":1,"2567":1,"2692":1,"2744":1}}],["halve",{"2":{"1130":1,"2126":1}}],["halves",{"2":{"32":1,"45":1,"506":1,"510":1,"511":2,"1121":2,"1496":1,"2116":1,"2117":1,"2120":2,"2129":2,"2130":1,"2131":1,"2694":1}}],["halt",{"2":{"203":1,"2353":2,"2749":1}}],["hal",{"2":{"174":1,"641":1,"657":2,"658":2,"661":2,"703":1,"1132":1,"1133":1,"1177":1,"1226":1,"1230":1,"1469":1,"1470":1,"2523":1}}],["halberd",{"2":{"143":2}}],["halconf",{"2":{"50":2,"86":1,"657":2,"658":2,"661":2,"703":1,"1124":1,"1132":1,"1133":1,"1177":1,"1226":1,"1230":1,"1469":1,"1470":1,"1906":1}}],["halfs",{"2":{"1949":1}}],["halfkay",{"0":{"2235":1},"2":{"371":1,"514":1,"625":1,"629":1,"2235":3,"2237":1,"2238":1,"2664":1}}],["half",{"0":{"1125":1},"1":{"1126":1,"1127":1},"2":{"45":3,"107":2,"114":2,"149":1,"176":2,"191":2,"211":1,"236":1,"277":1,"506":5,"509":8,"510":2,"511":4,"515":1,"1121":1,"1122":1,"1125":3,"1126":1,"1127":1,"1128":2,"1129":4,"1134":2,"1136":1,"1496":3,"1558":3,"1714":1,"1730":1,"1806":1,"1807":1,"1845":1,"1849":3,"1949":2,"1954":1,"1959":1,"2032":1,"2044":1,"2117":1,"2120":1,"2122":2,"2126":1,"2131":2,"2225":1,"2271":1,"2370":2,"2396":2,"2543":2,"2614":1,"2688":1,"2694":1,"2695":1,"2697":14,"2747":1}}],["having",{"2":{"23":1,"149":1,"234":1,"356":1,"505":2,"546":1,"596":1,"684":1,"1136":1,"1138":1,"1241":1,"1254":1,"1303":1,"1338":1,"1368":1,"1385":1,"1416":1,"1514":1,"1527":1,"1528":1,"1729":1,"1863":1,"1935":2,"1952":1,"2128":1,"2149":1,"2182":1,"2325":1,"2441":1,"2490":1,"2510":1,"2530":1,"2566":1,"2571":1,"2605":1,"2610":1,"2649":1,"2757":1}}],["haven",{"2":{"164":1,"537":1,"1237":1,"1266":1,"2457":1,"2504":1}}],["have",{"0":{"551":1,"1260":1,"1263":1},"1":{"1264":1},"2":{"0":1,"1":1,"4":1,"7":1,"8":1,"9":1,"10":1,"14":2,"16":1,"19":1,"28":1,"36":1,"38":1,"39":1,"43":1,"45":1,"49":3,"50":1,"52":1,"57":1,"67":2,"69":1,"83":1,"86":1,"94":1,"98":1,"102":1,"114":1,"118":1,"122":1,"124":3,"128":1,"134":2,"140":2,"143":1,"157":2,"159":1,"168":1,"169":1,"172":1,"173":1,"175":1,"181":1,"182":5,"183":1,"189":1,"191":1,"195":1,"197":1,"198":1,"201":3,"203":1,"209":1,"211":1,"213":1,"218":1,"219":1,"220":1,"221":1,"224":1,"228":1,"231":1,"238":1,"240":1,"254":1,"255":1,"262":1,"268":1,"276":1,"277":1,"327":1,"332":1,"337":1,"341":1,"349":1,"352":4,"356":1,"363":1,"365":1,"366":2,"367":1,"399":2,"429":1,"430":1,"431":1,"433":1,"435":1,"436":2,"440":1,"453":1,"454":1,"457":1,"468":1,"470":1,"478":1,"479":1,"487":1,"488":1,"496":1,"499":2,"502":1,"506":1,"508":1,"515":1,"530":2,"538":1,"540":1,"545":1,"554":2,"555":1,"556":2,"557":1,"558":1,"559":1,"560":1,"561":2,"568":1,"575":1,"578":1,"584":1,"587":4,"597":1,"602":1,"606":5,"614":1,"616":1,"617":1,"618":1,"621":2,"623":1,"624":1,"625":2,"626":1,"627":1,"635":2,"642":1,"654":1,"663":1,"688":1,"697":1,"699":1,"703":1,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1129":1,"1148":1,"1174":1,"1176":1,"1177":1,"1195":1,"1198":1,"1215":1,"1216":1,"1227":1,"1234":1,"1236":1,"1238":1,"1244":1,"1245":1,"1262":1,"1264":2,"1265":1,"1266":1,"1275":1,"1276":2,"1281":1,"1287":1,"1288":1,"1289":1,"1290":1,"1293":1,"1300":1,"1304":1,"1325":1,"1326":1,"1329":3,"1330":1,"1331":1,"1338":1,"1339":1,"1340":1,"1346":1,"1355":1,"1357":1,"1360":1,"1375":1,"1377":3,"1378":1,"1380":1,"1383":2,"1384":2,"1385":3,"1390":1,"1394":1,"1396":1,"1398":1,"1403":1,"1405":1,"1411":2,"1412":3,"1416":2,"1430":1,"1435":3,"1440":1,"1446":1,"1451":1,"1455":2,"1459":2,"1495":3,"1497":1,"1503":1,"1508":1,"1515":2,"1518":2,"1525":1,"1527":2,"1533":1,"1553":1,"1558":1,"1563":1,"1572":1,"1575":1,"1631":1,"1654":1,"1670":1,"1671":1,"1682":1,"1684":3,"1815":1,"1816":1,"1820":1,"1821":1,"1824":1,"1830":1,"1849":1,"1850":1,"1851":1,"1881":1,"1907":1,"1948":2,"1949":1,"2031":1,"2034":1,"2036":1,"2038":1,"2114":1,"2118":1,"2120":1,"2125":1,"2126":1,"2131":3,"2133":2,"2139":1,"2140":1,"2145":1,"2150":1,"2152":1,"2160":1,"2162":4,"2169":3,"2172":1,"2180":1,"2181":1,"2182":3,"2230":1,"2233":1,"2235":1,"2238":1,"2240":1,"2250":1,"2252":1,"2254":1,"2255":2,"2262":4,"2264":1,"2267":1,"2273":2,"2274":3,"2276":2,"2277":1,"2279":1,"2280":2,"2282":1,"2293":1,"2295":1,"2297":1,"2299":1,"2302":4,"2305":3,"2307":1,"2309":2,"2311":1,"2321":1,"2323":1,"2325":2,"2326":1,"2327":1,"2328":1,"2342":1,"2344":1,"2346":1,"2351":1,"2353":1,"2397":1,"2403":1,"2405":2,"2406":1,"2407":1,"2408":2,"2409":2,"2410":1,"2417":2,"2418":1,"2420":1,"2421":1,"2422":1,"2425":2,"2427":1,"2431":1,"2438":2,"2441":1,"2445":3,"2446":1,"2447":1,"2448":1,"2450":2,"2452":2,"2454":3,"2458":1,"2462":1,"2463":1,"2464":1,"2469":1,"2472":3,"2473":1,"2474":1,"2475":2,"2476":2,"2477":2,"2478":1,"2480":2,"2494":2,"2496":1,"2497":2,"2504":1,"2508":1,"2513":1,"2515":1,"2519":1,"2521":2,"2524":1,"2526":1,"2529":1,"2535":1,"2544":1,"2546":1,"2548":1,"2549":1,"2553":2,"2556":1,"2559":1,"2560":1,"2565":1,"2566":5,"2569":2,"2570":1,"2571":2,"2574":1,"2576":3,"2577":1,"2592":1,"2603":1,"2606":1,"2607":2,"2612":2,"2615":1,"2701":1,"2702":1,"2706":1,"2719":1,"2724":1,"2726":1,"2728":1,"2741":1,"2742":1,"2746":5,"2752":1,"2757":1}}],["had60",{"2":{"211":1}}],["hadron",{"2":{"134":1}}],["hades",{"2":{"114":1,"207":2,"211":1}}],["had",{"2":{"7":1,"67":1,"86":1,"102":1,"116":1,"122":1,"124":1,"125":1,"143":1,"153":1,"159":1,"168":1,"172":1,"174":1,"181":1,"182":1,"185":1,"197":1,"233":1,"243":1,"245":1,"537":1,"1265":1,"1338":1,"1441":1,"2113":1,"2150":1,"2279":1,"2564":1}}],["hashbrowns",{"2":{"616":1}}],["hash",{"2":{"316":1,"349":3,"453":1,"530":1,"610":1,"612":1,"1584":1,"2355":1,"2378":1,"2388":1,"2399":1}}],["hasn",{"2":{"153":1,"214":1,"505":1,"537":1}}],["has",{"0":{"338":1},"2":{"1":1,"3":1,"7":1,"8":1,"14":2,"15":1,"25":1,"28":1,"31":1,"34":1,"49":3,"56":1,"57":1,"60":1,"67":1,"70":3,"82":1,"84":1,"86":3,"87":1,"90":1,"98":1,"99":1,"103":1,"109":1,"113":1,"114":2,"118":2,"123":2,"124":1,"126":1,"132":1,"137":1,"142":1,"146":1,"153":2,"154":1,"156":1,"160":1,"163":1,"164":1,"166":1,"167":1,"169":1,"172":1,"174":1,"175":3,"182":2,"184":1,"194":3,"196":1,"198":2,"199":1,"201":2,"202":1,"206":1,"213":1,"214":1,"215":1,"218":1,"221":1,"228":1,"230":1,"232":1,"233":3,"240":2,"243":2,"249":1,"262":2,"265":1,"271":1,"273":2,"277":1,"312":1,"315":3,"316":1,"317":1,"341":1,"349":1,"357":1,"375":1,"400":1,"427":1,"465":1,"470":1,"479":1,"495":1,"497":1,"502":2,"505":1,"510":1,"513":1,"516":2,"522":1,"523":1,"524":1,"525":1,"529":1,"537":2,"540":1,"560":1,"565":2,"567":1,"575":1,"578":1,"582":1,"585":1,"587":1,"588":5,"596":1,"598":1,"600":1,"606":1,"626":2,"627":1,"629":1,"635":2,"636":1,"641":1,"669":1,"688":1,"695":1,"701":1,"758":1,"787":1,"819":1,"851":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1056":1,"1090":1,"1129":3,"1137":1,"1146":1,"1216":1,"1230":1,"1234":1,"1236":1,"1240":1,"1265":1,"1270":1,"1271":1,"1278":1,"1283":1,"1287":1,"1316":2,"1317":1,"1319":2,"1320":1,"1329":2,"1331":1,"1332":1,"1340":1,"1353":1,"1357":1,"1359":1,"1360":1,"1383":1,"1394":1,"1416":1,"1451":1,"1452":1,"1491":1,"1515":1,"1518":1,"1558":1,"1562":1,"1574":1,"1577":1,"1641":1,"1658":1,"1666":1,"1674":1,"1675":2,"1682":1,"1697":1,"1726":6,"1730":5,"1805":1,"1813":1,"1827":1,"1853":2,"1855":4,"1873":1,"1879":1,"1918":1,"1925":1,"1940":1,"1942":1,"1947":6,"1954":7,"1959":1,"2031":1,"2032":1,"2044":2,"2071":1,"2102":2,"2103":1,"2114":1,"2117":1,"2122":1,"2128":3,"2134":1,"2137":1,"2144":2,"2152":4,"2157":1,"2162":1,"2169":3,"2183":2,"2249":1,"2262":1,"2264":2,"2272":1,"2292":1,"2295":2,"2300":1,"2311":4,"2315":1,"2323":1,"2347":1,"2396":1,"2401":1,"2402":1,"2417":1,"2418":1,"2442":1,"2454":1,"2455":1,"2456":1,"2479":2,"2492":1,"2508":1,"2513":1,"2517":1,"2523":1,"2525":2,"2530":2,"2539":1,"2544":1,"2548":3,"2553":1,"2566":5,"2571":1,"2576":3,"2577":3,"2578":1,"2585":1,"2587":2,"2591":1,"2592":1,"2614":1,"2615":2,"2616":1,"2633":1,"2689":1,"2718":1,"2729":1,"2734":1,"2739":1,"2743":1,"2746":1,"2748":1,"2750":1,"2752":1,"2753":1}}],["c♯",{"2":{"1793":6,"2371":6}}],["cx",{"2":{"1725":1,"1946":1}}],["cx60",{"2":{"211":1}}],["cjoystick",{"2":{"1633":1,"1634":1}}],["c\\tuint16",{"2":{"1555":1}}],["cgram",{"0":{"1626":1},"1":{"1627":1},"2":{"1594":1,"1626":1,"1627":1}}],["cg",{"2":{"1300":1,"1398":4,"1399":4,"2370":7,"2396":7}}],["cédille",{"0":{"1277":1}}],["c8",{"0":{"1142":1}}],["c3²",{"2":{"635":2}}],["c3¹",{"2":{"635":2}}],["c3",{"2":{"633":1,"635":5,"1793":1,"1794":1,"2371":1,"2557":1}}],["c39",{"2":{"143":2}}],["c2²",{"2":{"635":2}}],["c2¹",{"2":{"635":2}}],["c2",{"2":{"633":1,"635":5,"1793":1,"2371":1,"2557":1,"2689":1}}],["c2json",{"0":{"380":1},"2":{"236":1,"380":3,"407":1}}],["c15",{"2":{"2519":1}}],["c14",{"2":{"2519":1}}],["c12832a1z",{"2":{"2136":1}}],["c13",{"2":{"1316":1,"1394":1,"2518":1,"2519":1,"2530":2}}],["c1²",{"2":{"635":2}}],["c1¹",{"2":{"635":2}}],["c1",{"2":{"633":1,"635":5,"702":1,"822":4,"1793":1,"2371":1,"2557":1,"2689":1}}],["c1ed",{"2":{"375":2}}],["c0²",{"2":{"635":2}}],["c0¹",{"2":{"635":2}}],["c0",{"2":{"633":1,"635":5,"639":2,"702":1,"2689":1}}],["ck",{"2":{"1406":6,"1408":6,"2357":6}}],["ckeyrecord",{"2":{"573":1}}],["ckled2001",{"2":{"149":1,"176":1,"221":4,"236":2,"1143":1}}],["c6",{"2":{"502":3,"655":2,"1387":1,"1466":1,"2231":1,"2238":1,"2263":1,"2530":1,"2558":1}}],["c5²",{"2":{"635":1}}],["c5¹",{"2":{"635":1}}],["c5",{"2":{"502":3,"633":1,"635":4,"655":2,"702":1,"1387":1,"1466":1,"1793":1,"2074":1,"2371":1}}],["c7",{"2":{"502":2,"511":1,"2131":1,"2558":1}}],["cdt",{"0":{"2497":1},"2":{"2496":1,"2497":2}}],["cdigitizer",{"2":{"1534":2}}],["cdeferred",{"2":{"598":1,"2577":1}}],["cd",{"0":{"373":1},"2":{"349":1,"360":5,"370":4,"373":1,"401":1,"2252":1,"2438":1,"2575":2}}],["cdc",{"2":{"50":1,"2344":1}}],["cfloat",{"2":{"1398":1}}],["cfgr",{"2":{"641":1}}],["cfgr1",{"2":{"641":1}}],["cfg",{"2":{"335":2,"445":1,"456":1,"2353":2}}],["cformat",{"2":{"1":1,"51":1,"65":1,"199":1}}],["csprintf",{"2":{"2705":1}}],["cs5",{"2":{"1793":1,"2371":1}}],["cs4",{"2":{"1793":1,"2371":1}}],["csr",{"2":{"1491":1}}],["csend",{"2":{"1361":4,"2079":2}}],["csg",{"2":{"1300":1}}],["csag",{"2":{"1300":1}}],["csa",{"2":{"1300":1,"1665":1,"2703":1}}],["cs3",{"2":{"669":2,"792":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1793":1,"2371":1}}],["cs2",{"2":{"669":2,"792":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1793":1,"2371":1}}],["cs1",{"2":{"669":2,"792":3,"857":3,"891":3,"925":3,"959":3,"993":3,"1027":3,"1061":3,"1095":3,"1793":1,"2371":1}}],["csx",{"2":{"667":1,"786":1,"789":4,"790":1,"850":1,"854":1,"855":1,"885":1,"888":1,"889":1,"919":1,"922":1,"923":1,"953":1,"956":1,"957":1,"987":1,"990":1,"991":1,"1021":1,"1024":1,"1055":1,"1058":1,"1089":1,"1092":1}}],["cstatic",{"2":{"588":1,"1360":1,"1814":1,"2138":1,"2576":1,"2577":2,"2581":1,"2612":1}}],["css",{"0":{"288":1}}],["cs",{"0":{"673":1,"679":1},"1":{"674":1,"680":1},"2":{"266":1,"666":2,"674":1,"680":1,"786":3,"789":15,"850":1,"854":2,"885":1,"888":2,"919":1,"922":2,"953":1,"956":2,"987":1,"990":2,"1021":2,"1024":6,"1055":2,"1058":6,"1089":2,"1092":6,"1300":2,"1492":1,"1665":2,"1793":1,"1819":2,"1834":2,"1835":2,"1842":2,"1848":2,"1849":16,"1851":3,"2371":1,"2576":4}}],["csy",{"2":{"236":1,"1024":3,"1025":1,"1058":3,"1059":1,"1092":3,"1093":1}}],["cccb1608",{"2":{"2255":1}}],["cc80",{"2":{"1792":3}}],["ccw",{"2":{"1559":8}}],["ccopyright",{"2":{"2309":3}}],["ccombo",{"2":{"1525":1}}],["cconst",{"2":{"272":2,"669":1,"734":2,"760":2,"792":2,"822":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1148":2,"1405":1,"1508":1,"1509":1,"1510":1,"1594":1,"1663":1,"1665":1,"2044":1,"2155":1,"2182":2,"2406":1,"2423":1,"2747":1}}],["cchar",{"2":{"1363":2}}],["cc",{"0":{"1791":1},"2":{"222":3,"1293":2,"1791":1,"1792":7}}],["ccase",{"2":{"1857":1}}],["ccar",{"2":{"176":1}}],["ccache",{"2":{"133":1,"134":2}}],["cbbrowne",{"2":{"1287":3}}],["cb1",{"2":{"1148":5}}],["cb1800",{"2":{"211":1}}],["cb",{"0":{"1142":1},"2":{"597":2,"598":1,"2347":1}}],["cb87v2",{"2":{"211":1}}],["cb87rgb",{"2":{"211":1}}],["cb65",{"2":{"211":1}}],["cbool",{"2":{"90":1,"105":1,"125":2,"185":2,"194":2,"195":1,"534":1,"572":1,"593":1,"594":1,"1252":1,"1302":1,"1375":1,"1384":1,"1423":2,"1430":1,"1446":1,"1448":1,"1506":1,"1519":1,"1549":4,"1560":2,"1717":1,"1719":1,"1733":1,"1826":1,"1880":1,"1937":1,"1938":1,"1939":1,"1940":1,"1957":2,"1958":3,"1959":2,"2043":1,"2078":1,"2130":1,"2152":3,"2228":1,"2413":1,"2414":1,"2415":1,"2576":1,"2577":14,"2581":1,"2604":1,"2735":1,"2736":1,"2738":1}}],["cypress",{"2":{"2622":1}}],["cypher",{"2":{"211":2}}],["cycling",{"2":{"1728":1,"1949":2,"2036":1,"2040":1,"2175":1,"2179":1}}],["cycled",{"2":{"2183":1}}],["cycles",{"0":{"1298":1},"2":{"126":1,"145":1,"213":1,"224":1,"238":1,"687":1,"1298":1,"1326":7,"1402":2,"1403":1,"1408":3,"1594":1,"1821":1,"1847":2,"2033":1,"2357":3}}],["cycle",{"0":{"350":1,"1344":1},"2":{"63":1,"103":2,"105":1,"107":1,"116":1,"131":1,"149":1,"156":1,"163":1,"167":1,"172":1,"182":1,"184":1,"187":1,"190":1,"198":1,"201":1,"206":1,"211":1,"213":1,"224":1,"230":1,"233":1,"251":1,"262":1,"265":1,"268":1,"273":1,"275":1,"341":2,"343":1,"344":1,"345":1,"350":4,"502":1,"684":1,"704":2,"1215":1,"1287":1,"1344":12,"1375":1,"1397":1,"1454":1,"1456":1,"1457":1,"1459":1,"1476":1,"1567":1,"1727":2,"1728":9,"1733":1,"1948":4,"1949":21,"1954":1,"1957":1,"2034":2,"2035":1,"2128":1,"2179":1,"2183":1,"2184":2,"2347":1,"2360":1,"2369":2,"2376":2,"2377":2,"2384":2,"2677":1,"2688":1,"2695":1,"2711":7,"2720":2}}],["cyan",{"2":{"433":1,"435":1,"582":1,"1332":4,"1953":2,"2042":2,"2058":2}}],["cyberstar",{"2":{"211":1}}],["cncl",{"2":{"2355":1,"2392":1}}],["cname",{"2":{"279":1}}],["cn",{"2":{"199":1}}],["cmsis",{"2":{"2513":1}}],["cmt",{"2":{"2410":1}}],["cmousekey",{"2":{"1800":1}}],["cmu",{"2":{"1796":1}}],["cmd=",{"2":{"2262":1}}],["cmd=yes",{"2":{"2262":2}}],["cmd",{"2":{"628":1,"1565":1,"1686":1,"1822":2,"2374":1,"2410":1}}],["cmatrix",{"2":{"566":1}}],["cmp",{"2":{"199":1,"1341":1,"2043":3}}],["cm",{"2":{"191":1,"1512":3}}],["cwd",{"2":{"2513":2}}],["cw",{"2":{"188":1,"191":1,"1500":1,"1559":8,"2362":1}}],["cz",{"2":{"176":4}}],["czech",{"2":{"48":1,"266":1,"1355":1,"2703":9}}],["c4²",{"2":{"635":1}}],["c4¹",{"2":{"635":1}}],["c4",{"0":{"1320":1},"2":{"176":1,"189":1,"191":1,"502":3,"633":1,"635":4,"655":2,"702":1,"1311":1,"1315":6,"1320":1,"1387":1,"1466":1,"1793":1,"2371":1,"2557":1}}],["c++",{"0":{"2752":1},"2":{"176":1,"322":1,"331":4,"454":1,"552":1,"1921":1,"2496":1,"2497":2,"2502":1,"2510":1,"2752":3,"2753":1}}],["ct",{"2":{"2165":3,"2166":1,"2167":3,"2168":2}}],["ctypedef",{"2":{"1332":1,"2130":1,"2168":1,"2169":1,"2587":1,"2589":1,"2593":1,"2594":1,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1}}],["cts",{"2":{"1195":1,"1197":1,"1198":4}}],["ctl",{"2":{"505":1,"2165":1,"2169":3,"2370":3,"2374":1,"2396":3,"2410":1}}],["ctpc",{"2":{"160":2,"191":1,"199":2}}],["ctrl+g",{"2":{"2198":1}}],["ctrl+x",{"2":{"2196":1}}],["ctrl+y",{"2":{"1656":1}}],["ctrl+z",{"2":{"1508":1}}],["ctrl+delete",{"2":{"1303":1}}],["ctrl+shift+i",{"2":{"2566":1}}],["ctrl+shift+z",{"2":{"1656":1}}],["ctrl+shift+a",{"2":{"1414":2}}],["ctrl+shift+backspace",{"2":{"1303":1}}],["ctrl+shift+enter",{"2":{"628":1}}],["ctrl+c",{"2":{"196":1,"1680":1,"2079":1,"2234":1}}],["ctrl+alt+del",{"2":{"1303":1}}],["ctrl+alt+shift+backspace",{"2":{"1303":1}}],["ctrl+a",{"2":{"196":1,"1414":2,"1680":1,"2079":1}}],["ctrl",{"2":{"131":2,"134":2,"149":1,"199":1,"231":2,"291":1,"623":1,"1271":1,"1300":8,"1357":3,"1361":1,"1385":1,"1442":1,"1499":1,"1501":5,"1523":1,"1568":1,"1656":2,"1665":8,"1666":1,"1670":3,"1676":1,"1677":3,"1929":3,"1932":5,"1933":8,"2079":1,"2110":2,"2228":1,"2355":2,"2370":1,"2382":2,"2390":2,"2396":1,"2414":3,"2415":2,"2491":4,"2508":1,"2512":2,"2651":1,"2705":1,"2738":3}}],["cease",{"2":{"2719":1}}],["ce10f7642b0459e409839b23cc91498945119b4d",{"2":{"2255":1}}],["ceil",{"2":{"1836":1}}],["cells",{"2":{"1466":1}}],["celebrate",{"2":{"554":1}}],["centroid",{"2":{"2688":1,"2695":1}}],["centrally",{"2":{"1265":1}}],["centos",{"2":{"2431":1,"2464":1}}],["centered",{"2":{"1633":1,"1817":1,"2313":1}}],["center",{"2":{"191":1,"404":1,"1725":4,"1728":1,"1946":4,"1948":1,"1949":4,"2038":1,"2133":2,"2688":2,"2695":2}}],["cenum",{"2":{"532":1,"534":2,"557":1,"570":1,"1359":2,"1511":2,"1523":1,"1728":1,"1825":1,"1830":1,"1858":1,"1859":1,"1935":1,"1943":1,"1949":1,"2181":1,"2728":1}}],["certainly",{"2":{"276":1,"1832":1,"2328":1,"2564":1,"2567":1}}],["certain",{"0":{"1876":1,"1936":1},"1":{"1937":1,"1938":1,"1939":1},"2":{"149":1,"487":1,"512":1,"515":1,"516":1,"581":1,"592":1,"630":1,"656":1,"1177":1,"1243":1,"1294":1,"1368":1,"1384":2,"1454":1,"1725":2,"1794":1,"1814":1,"1876":1,"1938":1,"1946":2,"2138":1,"2147":1,"2150":1,"2152":1,"2228":1,"2595":1,"2601":1,"2688":1,"2695":1,"2702":2,"2756":1}}],["ce",{"2":{"134":1,"199":1,"266":1,"271":1,"1311":2,"1315":4,"1322":4,"1934":1,"2251":1}}],["cest73",{"2":{"114":1,"211":1}}],["cpainter",{"2":{"2576":9,"2577":3}}],["cpnl",{"2":{"2355":1,"2393":1}}],["cplay",{"2":{"1398":2}}],["cp",{"2":{"452":1}}],["cpp",{"2":{"380":1,"1279":1,"2753":1}}],["cpi",{"2":{"236":1,"249":1,"1834":2,"1835":2,"1838":2,"1842":1,"1846":2,"1848":2,"1849":8,"1850":3,"1853":4,"1854":2,"1861":2,"1862":4}}],["cpus",{"2":{"2262":2}}],["cpu",{"2":{"114":1,"514":2,"659":1,"1122":1,"1125":1,"1128":1,"1219":1,"1221":1,"1222":1,"1223":1,"1918":1,"2262":1,"2745":1}}],["cpuclock",{"2":{"114":1}}],["cptc",{"2":{"92":1}}],["crux",{"2":{"2727":1}}],["cryptographically",{"2":{"2611":1}}],["cryptographic",{"2":{"2550":2}}],["crystal",{"2":{"2521":1}}],["crsl",{"2":{"2355":1,"2392":1}}],["crsel",{"2":{"2355":2,"2392":2}}],["crgblight",{"2":{"2044":2,"2051":1,"2058":1}}],["crgb",{"2":{"1952":1}}],["credentials",{"2":{"2506":1}}],["credential",{"2":{"2506":1}}],["credits",{"0":{"1453":1,"1831":1}}],["credit",{"2":{"1353":1,"1453":1}}],["cream|",{"2":{"621":1}}],["cream||order",{"2":{"621":1}}],["cream",{"2":{"621":1}}],["creative",{"2":{"1340":1}}],["creating",{"0":{"1658":1,"2349":1,"2470":1},"1":{"1659":1,"1660":1,"1661":1,"1662":1},"2":{"363":1,"441":1,"559":1,"570":1,"1254":1,"1287":1,"1355":1,"1658":1,"1855":1,"1921":1,"2032":1,"2154":1,"2182":1,"2183":1,"2292":1,"2409":1,"2417":1,"2425":1,"2445":1,"2469":1,"2478":1,"2563":1,"2576":10,"2577":1}}],["creator",{"2":{"114":1}}],["creates",{"2":{"379":1,"380":1,"385":1,"386":1,"391":1,"401":1,"430":1,"1454":1,"2480":1,"2497":1}}],["created",{"2":{"114":1,"251":1,"315":1,"1265":1,"1303":1,"1332":2,"1337":1,"1553":1,"1878":1,"2160":1,"2277":1,"2278":1,"2309":1,"2422":1,"2446":1,"2448":1,"2477":3,"2483":1,"2513":2,"2553":1,"2566":1,"2577":3,"2753":1}}],["create",{"0":{"141":1,"2422":1,"2433":1,"2435":1},"2":{"76":1,"132":1,"134":2,"149":1,"172":1,"173":1,"175":1,"176":1,"249":1,"313":1,"341":1,"347":1,"350":1,"367":2,"441":1,"519":1,"529":1,"537":1,"538":1,"554":1,"569":1,"607":1,"614":1,"621":2,"623":1,"1234":1,"1272":1,"1278":1,"1332":1,"1376":1,"1384":1,"1385":1,"1398":1,"1399":1,"1413":1,"1415":1,"1440":1,"1525":1,"1553":1,"1656":1,"1662":1,"1670":1,"1729":2,"1878":1,"1952":2,"2150":2,"2169":1,"2170":1,"2181":1,"2182":1,"2255":3,"2276":1,"2324":1,"2351":1,"2400":1,"2415":1,"2417":1,"2422":2,"2433":1,"2435":2,"2436":1,"2445":2,"2470":1,"2473":1,"2474":1,"2480":1,"2553":1,"2576":2,"2577":1,"2578":1,"2581":1,"2603":1,"2616":1,"2671":1,"2723":1,"2725":1,"2753":2,"2757":1}}],["cribbit",{"2":{"2270":1,"2281":1}}],["criteria",{"2":{"341":1,"374":1,"1873":1,"2169":1,"2546":1}}],["critical",{"2":{"340":1,"345":1,"350":1,"433":1,"479":1,"628":1,"1471":1,"1824":1,"2566":1,"2567":2}}],["crin",{"2":{"211":1}}],["croatian",{"2":{"1355":1,"2703":3}}],["crossing",{"2":{"660":1}}],["cross",{"2":{"331":1,"1728":3,"1949":3,"2711":1}}],["cropped",{"2":{"114":1}}],["cradio",{"2":{"191":1}}],["craftwalk",{"2":{"134":1,"266":1}}],["crc8",{"2":{"114":1}}],["crc",{"2":{"107":1,"114":3,"176":1,"191":1}}],["crkbd",{"2":{"86":3,"94":1,"176":1,"211":1,"2126":3,"2440":1}}],["cvoid",{"2":{"34":1,"90":1,"105":1,"125":1,"185":1,"196":1,"565":1,"576":1,"582":1,"590":1,"698":1,"707":1,"1245":1,"1332":2,"1400":1,"1464":1,"1497":1,"1507":1,"1593":1,"1680":1,"1733":1,"1816":1,"1850":1,"1862":1,"1910":1,"1917":1,"1921":1,"1923":1,"1960":1,"2044":1,"2130":1,"2166":1,"2491":4,"2524":1,"2525":1,"2526":1,"2577":10,"2582":1,"2757":1}}],["c",{"0":{"272":1,"400":1,"411":1,"453":1,"1140":1,"1316":1,"1318":1,"1322":1,"1358":1,"1392":1,"1605":1,"1797":1,"2301":1,"2404":1,"2423":1,"2527":1,"2629":1},"1":{"1323":1,"1324":1,"1359":1,"1360":1,"1361":1,"1362":1,"1363":1,"1364":1,"1365":1,"1366":1,"1367":1,"1368":1,"1369":1,"1370":1,"1371":1,"1372":1,"1373":1,"1374":1,"1375":1,"1606":1,"2405":1,"2406":1,"2407":1,"2408":1,"2528":1,"2529":1,"2530":1},"2":{"28":1,"31":2,"34":3,"49":3,"50":6,"63":1,"64":1,"65":1,"74":1,"75":2,"77":1,"86":2,"92":1,"98":1,"105":2,"114":4,"134":5,"149":2,"153":1,"160":2,"169":1,"172":2,"176":3,"184":1,"189":3,"191":1,"196":1,"199":3,"211":4,"220":1,"231":2,"234":9,"236":2,"247":1,"249":1,"266":6,"272":1,"277":1,"292":2,"305":1,"313":1,"316":1,"318":1,"322":1,"331":4,"370":2,"371":2,"379":1,"380":4,"396":2,"400":5,"404":1,"411":9,"441":1,"453":3,"454":1,"470":1,"489":1,"501":1,"502":6,"509":1,"513":6,"529":2,"530":4,"532":1,"533":1,"534":2,"552":1,"555":2,"559":1,"564":3,"565":1,"566":2,"570":1,"588":3,"599":1,"600":1,"601":1,"607":1,"610":1,"631":1,"635":1,"657":3,"658":2,"660":1,"661":4,"662":1,"663":1,"665":1,"667":1,"669":1,"701":1,"703":3,"730":2,"734":1,"756":2,"760":1,"785":2,"788":1,"789":1,"790":1,"792":1,"817":2,"820":1,"822":1,"849":2,"853":1,"854":1,"855":1,"857":1,"884":2,"887":1,"888":1,"889":1,"891":1,"918":2,"921":1,"922":1,"923":1,"925":1,"952":2,"955":1,"956":1,"957":1,"959":1,"986":2,"989":1,"990":1,"991":1,"993":1,"1020":2,"1024":1,"1025":1,"1027":1,"1054":2,"1058":1,"1059":1,"1061":1,"1088":2,"1091":1,"1092":1,"1093":1,"1095":1,"1124":1,"1127":2,"1129":2,"1130":2,"1132":3,"1133":3,"1134":1,"1136":1,"1137":1,"1138":1,"1144":2,"1148":1,"1177":3,"1198":2,"1216":1,"1217":1,"1225":1,"1226":2,"1227":1,"1228":1,"1230":2,"1234":1,"1250":1,"1252":1,"1253":1,"1269":1,"1270":1,"1276":1,"1279":1,"1290":1,"1294":1,"1299":2,"1300":1,"1303":1,"1311":7,"1312":2,"1313":3,"1314":2,"1315":12,"1316":3,"1319":1,"1320":1,"1322":1,"1330":2,"1332":2,"1344":1,"1346":1,"1347":1,"1351":2,"1352":1,"1359":2,"1362":1,"1365":1,"1366":1,"1375":1,"1376":2,"1377":6,"1383":6,"1384":1,"1385":5,"1392":2,"1397":2,"1398":13,"1399":16,"1400":1,"1401":1,"1402":1,"1403":2,"1404":4,"1405":2,"1406":1,"1414":1,"1415":1,"1416":1,"1431":2,"1440":1,"1445":2,"1448":1,"1458":1,"1459":1,"1469":3,"1470":2,"1495":1,"1496":2,"1501":1,"1503":1,"1504":1,"1508":3,"1510":1,"1512":1,"1525":1,"1527":4,"1530":1,"1547":2,"1548":3,"1549":4,"1553":1,"1554":1,"1557":6,"1558":2,"1559":4,"1560":2,"1561":1,"1576":1,"1577":1,"1579":2,"1581":1,"1593":1,"1606":1,"1632":1,"1633":1,"1657":1,"1666":1,"1668":1,"1670":1,"1677":2,"1680":1,"1682":1,"1683":8,"1684":1,"1685":1,"1686":2,"1718":1,"1729":1,"1730":1,"1733":1,"1789":1,"1790":1,"1792":1,"1793":19,"1794":1,"1797":3,"1805":10,"1806":1,"1813":2,"1814":1,"1815":1,"1816":1,"1817":2,"1821":1,"1822":1,"1826":1,"1830":2,"1836":1,"1849":3,"1850":1,"1861":1,"1863":1,"1865":1,"1866":2,"1871":2,"1876":2,"1877":2,"1878":2,"1904":1,"1905":1,"1906":2,"1907":1,"1908":1,"1910":1,"1911":1,"1912":6,"1913":1,"1914":2,"1915":3,"1916":1,"1921":2,"1932":1,"1933":3,"1934":1,"1936":1,"1950":5,"1951":1,"1952":1,"1954":1,"1957":1,"2040":1,"2042":3,"2059":1,"2060":2,"2064":1,"2075":1,"2078":1,"2103":1,"2124":2,"2125":2,"2126":3,"2127":2,"2128":6,"2129":10,"2130":3,"2131":10,"2137":2,"2139":1,"2140":1,"2141":1,"2143":1,"2148":1,"2153":1,"2157":1,"2161":1,"2164":2,"2165":1,"2167":1,"2169":3,"2170":2,"2171":4,"2174":1,"2181":3,"2182":1,"2183":1,"2184":3,"2228":1,"2231":1,"2232":1,"2233":1,"2236":1,"2238":1,"2241":1,"2255":1,"2256":1,"2259":1,"2260":2,"2262":15,"2263":1,"2266":1,"2268":1,"2269":3,"2288":1,"2296":1,"2300":1,"2302":1,"2323":2,"2347":1,"2353":18,"2355":3,"2371":19,"2373":1,"2374":1,"2384":3,"2386":3,"2400":1,"2404":1,"2405":1,"2407":3,"2408":1,"2410":1,"2414":7,"2415":4,"2422":1,"2423":2,"2435":3,"2438":1,"2440":2,"2490":1,"2496":1,"2497":2,"2502":1,"2508":1,"2510":1,"2513":5,"2514":1,"2527":1,"2528":1,"2529":2,"2530":7,"2539":1,"2545":1,"2548":3,"2564":1,"2566":6,"2571":2,"2573":10,"2575":4,"2576":17,"2577":12,"2584":1,"2588":1,"2600":4,"2607":1,"2614":2,"2629":1,"2634":1,"2673":1,"2701":1,"2702":1,"2705":1,"2706":3,"2707":1,"2708":3,"2709":4,"2710":3,"2711":2,"2712":2,"2727":2,"2735":2,"2736":2,"2737":2,"2738":4,"2742":1,"2743":4,"2744":1,"2746":3,"2752":4,"2753":1}}],["cif",{"2":{"1683":1}}],["cint16",{"2":{"2577":2}}],["cint",{"2":{"292":1}}],["cipulot",{"2":{"249":1}}],["city42",{"2":{"222":1}}],["ciruitry",{"2":{"1573":1}}],["circ",{"2":{"2378":1,"2399":1}}],["circle",{"2":{"2033":1,"2577":4}}],["circles",{"2":{"153":1,"2577":2}}],["circumflex",{"2":{"2378":1,"2399":1}}],["circumstances",{"2":{"221":1,"689":2,"692":1,"1243":1,"1876":1,"2128":1,"2131":1,"2255":1,"2513":1,"2543":1,"2576":1,"2577":1}}],["circular",{"0":{"1228":1},"2":{"93":1,"175":2,"176":2,"236":1,"641":2,"1226":2,"1228":3,"1844":1,"2573":1}}],["circuitry",{"0":{"1903":1},"2":{"1902":1}}],["circuits",{"2":{"1458":1}}],["circuit",{"0":{"1289":1},"2":{"49":4,"1289":2,"1293":1,"1325":1,"1458":1,"1573":1,"2240":1,"2242":1,"2279":1,"2311":4,"2524":1,"2676":1,"2677":1}}],["cirque",{"0":{"1841":1},"1":{"1842":1,"1843":1,"1844":1,"1845":1},"2":{"118":4,"175":2,"176":7,"190":1,"191":4,"249":3,"1841":4,"1842":20,"1843":5,"1844":3,"1845":3,"1859":1,"1879":1}}],["cie1931",{"2":{"84":1,"93":1}}],["cie",{"2":{"49":1,"2577":1}}],["ci",{"2":{"17":1,"51":1,"76":1,"134":1,"149":1,"164":1,"199":1,"211":2,"249":2,"447":1,"556":1,"644":2,"2032":1,"2675":1}}],["caddy",{"2":{"2280":1}}],["cadence",{"2":{"337":1}}],["cadet",{"0":{"2108":1,"2382":1,"2661":1},"1":{"2109":1,"2110":1,"2111":1,"2112":1,"2113":1},"2":{"49":1,"188":1,"191":2,"249":1,"1500":1,"2108":1,"2110":7,"2111":1,"2112":3,"2113":3,"2382":8,"2661":1,"2705":1,"2749":1}}],["cag",{"2":{"1300":1}}],["ca",{"2":{"1300":1,"1527":1,"1665":1}}],["ca4",{"2":{"822":1}}],["ca3",{"2":{"822":1,"1148":2}}],["ca2",{"2":{"822":1,"1148":2}}],["ca1",{"2":{"822":1,"1148":3}}],["caveats",{"0":{"531":1,"1336":1,"1567":1,"1654":1,"1788":1,"2111":1,"2177":1,"2398":1,"2411":1},"1":{"532":1,"533":1,"534":1},"2":{"2515":1,"2566":1,"2605":1}}],["came",{"2":{"437":1,"504":1,"2686":1}}],["camps",{"2":{"173":1}}],["caution",{"2":{"541":1}}],["caught",{"2":{"356":1}}],["causing",{"2":{"156":1,"1398":1,"2343":1,"2516":1,"2584":1}}],["causes",{"2":{"556":1,"660":1,"1122":1,"1216":1,"1384":1,"1576":1,"2480":1}}],["caused",{"2":{"114":1,"134":1,"199":1,"222":1,"337":1,"1675":1}}],["cause",{"2":{"73":1,"88":2,"104":2,"127":2,"170":1,"201":1,"352":2,"556":1,"659":2,"1219":1,"1298":1,"1332":2,"1336":1,"1340":1,"1410":1,"1464":1,"1821":1,"1871":1,"1873":1,"1912":2,"1954":1,"2153":1,"2231":1,"2238":1,"2276":1,"2308":1,"2411":2,"2517":1,"2518":1,"2705":1,"2726":1}}],["cached",{"2":{"308":1}}],["cathodes",{"2":{"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1}}],["cat24c512",{"2":{"684":2}}],["catb",{"2":{"551":1}}],["catch",{"2":{"466":1,"597":1,"1451":1}}],["catching",{"2":{"466":1}}],["caticorn",{"2":{"222":1}}],["category",{"2":{"1312":1}}],["categories",{"2":{"352":1}}],["categorize",{"2":{"110":1}}],["catered",{"2":{"322":1}}],["cater",{"2":{"182":1,"236":1,"1121":1}}],["caterina",{"0":{"2233":1,"2344":1},"1":{"2234":1},"2":{"70":1,"509":1,"514":1,"625":1,"629":11,"2126":1,"2233":3,"2234":1,"2347":5,"2348":1}}],["cain",{"2":{"211":1}}],["caffeinated",{"2":{"211":1}}],["cables",{"2":{"1129":1,"2118":6}}],["cable",{"2":{"211":1,"626":1,"1123":1,"1126":1,"1129":1,"1848":1,"2114":1,"2117":3,"2118":1,"2119":1,"2120":1,"2127":3,"2131":1,"2249":2,"2271":1,"2275":1,"2276":1}}],["casual",{"2":{"470":1}}],["cassini",{"2":{"211":1}}],["cassette42",{"2":{"143":2}}],["cases",{"2":{"25":1,"75":1,"176":1,"182":3,"194":1,"214":1,"234":1,"236":1,"246":1,"380":1,"452":1,"457":1,"483":1,"504":1,"584":1,"609":2,"610":1,"613":1,"643":1,"700":1,"1175":1,"1196":1,"1213":1,"1445":1,"1515":1,"1527":1,"1673":1,"1674":1,"1850":1,"1918":1,"1934":1,"2149":1,"2161":3,"2303":1,"2571":1,"2718":1,"2736":1}}],["case",{"0":{"2182":1},"2":{"11":1,"105":2,"160":1,"194":3,"195":2,"202":1,"222":1,"231":4,"273":1,"335":1,"478":1,"534":6,"538":1,"572":2,"573":1,"598":2,"626":2,"707":1,"726":1,"1177":1,"1258":1,"1276":1,"1290":1,"1300":1,"1302":1,"1303":2,"1326":1,"1332":8,"1343":4,"1344":1,"1359":5,"1360":4,"1375":1,"1384":2,"1385":1,"1404":2,"1414":1,"1416":5,"1423":6,"1430":3,"1435":2,"1440":1,"1446":15,"1450":1,"1458":1,"1495":1,"1506":6,"1511":2,"1515":1,"1518":7,"1519":1,"1523":3,"1525":3,"1528":1,"1549":4,"1562":1,"1634":5,"1673":1,"1792":1,"1813":3,"1826":5,"1827":1,"1830":2,"1850":1,"1857":1,"1859":1,"1861":1,"1871":2,"1876":1,"1877":1,"1878":1,"1933":3,"1934":5,"1935":4,"1937":1,"1938":1,"1940":2,"1941":2,"1943":14,"1958":2,"1959":1,"2031":1,"2044":5,"2078":1,"2102":1,"2137":3,"2162":2,"2167":4,"2168":1,"2169":12,"2170":6,"2171":7,"2182":1,"2252":2,"2263":1,"2267":1,"2270":1,"2275":1,"2294":1,"2311":1,"2327":1,"2350":1,"2413":1,"2414":3,"2415":1,"2454":1,"2477":1,"2529":1,"2564":1,"2604":2,"2706":1,"2727":2,"2728":7,"2735":1,"2736":1,"2737":1,"2738":1}}],["carries",{"2":{"2118":1}}],["carryover",{"2":{"2112":1}}],["carefully",{"2":{"2273":1,"2752":1}}],["careful",{"2":{"474":1,"584":1,"586":1,"628":1,"1404":1,"2273":1,"2274":1,"2423":1}}],["care",{"2":{"236":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"1189":1,"1192":1,"1207":1,"1209":1,"1337":1,"1450":1,"1676":1,"2565":1,"2748":1}}],["carbo65",{"2":{"211":1}}],["car",{"2":{"211":1}}],["carve",{"2":{"113":1,"114":1,"133":1,"134":1}}],["card",{"2":{"111":2,"143":4,"1353":1}}],["captioning",{"2":{"2144":1}}],["capture",{"2":{"143":2,"194":1,"203":2,"1404":1}}],["cap",{"2":{"1813":1,"2137":1}}],["capitalized",{"2":{"1499":2}}],["capitalization",{"2":{"176":1,"1938":1}}],["capitals",{"2":{"1499":1}}],["capital",{"2":{"211":1,"1412":2,"2490":1,"2614":1}}],["capacitors",{"2":{"1589":1}}],["capacity",{"2":{"160":1}}],["capability",{"2":{"164":1,"277":1,"402":1,"1461":1,"1491":1,"2566":1}}],["capabilities",{"0":{"278":1,"279":1},"1":{"279":1,"280":2,"281":2,"282":2,"283":2,"284":2,"285":2,"286":2,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1},"2":{"160":1,"278":1,"1121":1,"2566":1,"2718":1}}],["capable",{"2":{"49":1,"153":2,"486":1,"655":1,"1125":1,"1294":1,"1387":1,"1390":1,"1466":1,"1630":1,"2240":1,"2327":1,"2350":1,"2543":1,"2566":4,"2585":1,"2592":1,"2653":1}}],["capswrd",{"2":{"188":1,"191":1}}],["caps",{"0":{"152":1,"1499":1,"1500":1,"1502":1,"1507":1,"2164":1,"2362":1,"2680":1},"1":{"1500":1,"1501":2,"1502":1,"1503":2,"1504":2,"1505":2,"1506":2,"1507":2},"2":{"149":2,"152":2,"160":2,"176":5,"188":2,"191":3,"199":2,"211":2,"222":2,"231":2,"249":1,"313":1,"505":2,"506":1,"511":1,"530":2,"1269":3,"1271":1,"1276":1,"1368":3,"1446":1,"1457":2,"1459":4,"1499":18,"1500":9,"1501":2,"1503":6,"1504":6,"1505":9,"1506":8,"1507":6,"1509":1,"1530":1,"1585":1,"1651":2,"1714":1,"1715":2,"1717":1,"1718":13,"1719":3,"1733":1,"1813":1,"1816":1,"1957":1,"1958":2,"1959":4,"2041":1,"2042":2,"2043":1,"2129":1,"2137":1,"2140":1,"2164":5,"2165":1,"2167":2,"2182":1,"2184":1,"2355":5,"2362":3,"2370":17,"2384":1,"2389":5,"2396":17,"2407":1,"2674":1,"2677":2,"2680":7,"2685":2,"2744":1,"2749":1}}],["capsunlocked",{"2":{"143":3,"149":1,"217":4,"222":1,"249":1}}],["capslock",{"2":{"112":1,"149":1,"152":1,"1234":2,"2042":2,"2674":1}}],["calc",{"2":{"2355":1,"2393":1}}],["calculator",{"2":{"2348":1,"2355":2,"2393":2}}],["calculate",{"2":{"1725":4,"1821":1,"1859":1,"1946":4,"2038":1,"2229":1}}],["calculated",{"2":{"684":1,"689":2,"1181":1,"1638":1,"1821":1,"2226":2,"2576":1}}],["calculating",{"2":{"211":1,"1290":1,"2226":2}}],["calculation",{"0":{"2225":1},"1":{"2226":1,"2227":1,"2228":1},"2":{"50":1,"114":1,"222":3,"1838":2,"2226":1,"2228":2}}],["calibrating",{"2":{"1843":1}}],["calibration",{"2":{"249":1,"1843":1}}],["california",{"2":{"211":1,"378":1}}],["calice",{"2":{"211":1}}],["caller",{"2":{"1359":1}}],["called",{"2":{"49":1,"94":1,"187":1,"194":1,"203":1,"308":1,"335":1,"564":1,"566":2,"568":1,"571":2,"572":1,"574":1,"578":1,"584":1,"586":1,"587":2,"589":1,"592":1,"646":1,"673":1,"707":2,"738":1,"764":1,"796":1,"826":1,"861":1,"895":1,"929":1,"963":1,"997":1,"1031":1,"1065":1,"1099":1,"1152":1,"1179":2,"1200":2,"1212":1,"1254":1,"1272":1,"1325":1,"1332":1,"1341":3,"1359":1,"1464":1,"1497":1,"1506":1,"1562":1,"1578":1,"1596":2,"1598":1,"1599":1,"1600":1,"1668":1,"1670":1,"1714":1,"1716":1,"1822":2,"1873":2,"1876":1,"1879":1,"1937":1,"2031":2,"2143":6,"2144":1,"2152":4,"2161":1,"2162":8,"2182":1,"2183":1,"2264":2,"2311":2,"2327":1,"2405":1,"2422":1,"2476":1,"2490":1,"2491":1,"2548":1,"2553":1,"2605":1,"2739":1,"2744":1,"2749":2,"2751":1}}],["calling",{"2":{"149":1,"613":1,"636":1,"1335":1,"1368":1,"1500":1,"1654":1,"1815":1,"1822":1,"1864":1,"1866":2,"2139":1,"2143":1,"2162":2,"2576":1,"2577":3}}],["callback",{"0":{"185":1,"203":1,"601":1,"1444":1,"1871":1},"1":{"1445":1,"1446":1,"1447":1,"1448":1,"1449":1},"2":{"149":1,"185":1,"191":1,"196":1,"203":2,"211":1,"596":1,"597":4,"598":8,"658":1,"662":1,"1221":1,"1341":6,"1394":1,"1445":2,"1446":1,"1448":1,"1449":1,"1506":4,"1549":1,"1560":1,"1689":1,"1690":1,"1743":1,"1745":1,"1776":1,"1778":1,"1779":1,"1780":1,"1783":1,"1785":1,"1852":1,"1853":5,"1854":2,"1858":1,"1870":3,"1925":1,"1933":1,"1937":1,"1939":1,"1941":1,"1970":1,"1972":1,"2021":1,"2023":1,"2024":1,"2025":1,"2028":1,"2030":1,"2158":1,"2168":1,"2192":1,"2194":1,"2440":1,"2491":5}}],["callbacks",{"0":{"90":1,"105":1,"229":1,"597":1,"1526":1,"1549":1,"1560":1,"1680":1,"1732":1,"1826":1,"1853":1,"1854":1,"1870":1,"1956":1,"2228":1,"2491":1},"1":{"1733":1,"1871":1,"1957":1,"1958":1,"1959":1,"1960":1},"2":{"93":1,"105":1,"114":2,"149":2,"191":4,"229":1,"236":2,"249":1,"277":3,"515":1,"566":1,"597":1,"601":1,"662":1,"1124":2,"1341":2,"1507":1,"1680":1,"1716":1,"1720":1,"1854":1,"1906":1,"2263":1,"2491":1,"2567":2}}],["call",{"0":{"1555":1},"2":{"114":1,"134":2,"176":1,"191":1,"249":2,"266":1,"315":1,"340":1,"343":1,"344":1,"515":1,"534":1,"539":1,"568":1,"574":1,"576":1,"582":1,"588":1,"597":1,"614":1,"643":1,"647":1,"675":1,"700":1,"701":1,"741":1,"745":1,"749":1,"751":1,"768":1,"772":1,"776":1,"778":1,"800":1,"804":1,"808":1,"810":1,"832":1,"836":1,"840":1,"842":1,"867":1,"871":1,"875":1,"877":1,"901":1,"905":1,"909":1,"911":1,"935":1,"939":1,"943":1,"945":1,"969":1,"973":1,"977":1,"979":1,"1003":1,"1007":1,"1011":1,"1013":1,"1037":1,"1041":1,"1045":1,"1047":1,"1071":1,"1075":1,"1079":1,"1081":1,"1105":1,"1109":1,"1113":1,"1115":1,"1158":1,"1162":1,"1166":1,"1168":1,"1175":1,"1196":1,"1210":1,"1213":1,"1272":1,"1332":1,"1341":1,"1506":1,"1553":1,"1554":2,"1555":1,"1556":1,"1714":1,"1720":1,"1729":1,"1813":1,"1822":2,"1825":1,"1873":2,"1910":1,"1922":1,"1952":1,"2051":2,"2130":1,"2137":1,"2143":2,"2302":1,"2306":1,"2324":1,"2490":3,"2491":1,"2492":1,"2503":1,"2577":3,"2614":1,"2710":1,"2744":2,"2757":3}}],["calls",{"2":{"50":1,"114":1,"133":1,"134":1,"191":2,"199":1,"266":2,"277":1,"474":1,"587":1,"2051":1,"2081":1,"2161":2,"2306":1,"2584":1,"2749":1,"2757":4}}],["cannot",{"2":{"629":1,"635":3,"690":1,"702":1,"1416":1,"1498":1,"1516":1,"1527":1,"1615":1,"1670":1,"1807":1,"1822":2,"1851":1,"1948":1,"2034":1,"2235":1,"2240":1,"2254":1,"2327":1,"2341":1,"2350":1,"2398":1,"2413":1,"2427":1,"2440":1,"2515":1,"2516":2,"2518":1,"2577":2,"2605":1,"2702":1,"2728":3}}],["cannonkeys",{"2":{"191":1,"199":1,"211":22}}],["candidate",{"2":{"341":1,"397":1,"2566":1}}],["candidates",{"2":{"341":1}}],["candybar",{"2":{"43":4}}],["canonical",{"2":{"317":1}}],["canada",{"2":{"2703":1}}],["canadian",{"2":{"149":1,"249":1,"1355":1,"2703":5}}],["canary60rgb",{"2":{"253":2}}],["canary",{"2":{"253":2}}],["canceling",{"2":{"1303":1}}],["cancelled",{"2":{"1303":1,"1654":1}}],["cancelling",{"0":{"600":1},"2":{"1446":1}}],["canceled",{"2":{"600":1}}],["cancel",{"0":{"2198":1,"2222":1},"2":{"149":1,"598":1,"600":3,"1654":2,"2198":1,"2222":1,"2355":2,"2392":2,"2490":2}}],["can",{"0":{"503":1,"504":1,"505":1,"532":1,"553":1,"1238":1,"1254":1,"1255":1,"1259":1,"1267":1,"1269":1,"1290":1,"2159":1,"2254":1,"2325":1},"1":{"1239":1,"1240":1,"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1},"2":{"0":1,"1":1,"9":1,"19":1,"39":1,"45":1,"49":1,"50":2,"52":1,"60":1,"70":3,"73":1,"74":1,"80":1,"83":1,"98":1,"112":2,"119":2,"120":2,"124":1,"138":1,"152":1,"173":1,"179":1,"191":1,"194":1,"195":2,"199":1,"203":2,"206":1,"210":1,"228":1,"231":1,"233":1,"240":1,"262":1,"263":1,"291":1,"311":1,"312":1,"313":2,"315":1,"317":1,"318":2,"322":1,"324":1,"327":2,"331":4,"334":3,"335":1,"337":1,"340":1,"341":1,"352":1,"353":1,"354":1,"355":1,"365":1,"366":1,"370":2,"371":2,"374":5,"376":1,"377":1,"378":1,"384":1,"400":1,"401":1,"402":1,"403":1,"414":1,"415":1,"417":1,"418":2,"423":1,"424":1,"429":1,"430":1,"432":2,"433":1,"435":3,"436":1,"437":1,"438":1,"439":1,"440":1,"441":1,"442":1,"445":1,"446":4,"448":1,"449":1,"450":1,"451":1,"452":1,"453":3,"454":1,"455":1,"456":1,"474":1,"479":1,"481":1,"483":2,"484":1,"485":1,"488":1,"498":1,"499":1,"500":2,"501":1,"502":2,"503":1,"504":1,"506":2,"509":1,"510":1,"511":2,"513":1,"516":6,"519":2,"520":1,"521":2,"522":1,"533":1,"534":1,"541":1,"546":1,"551":1,"553":1,"554":1,"557":1,"558":1,"559":1,"560":1,"561":1,"566":1,"568":1,"570":1,"571":1,"586":2,"587":2,"589":2,"592":1,"597":1,"598":3,"599":1,"600":1,"601":2,"606":2,"609":1,"610":1,"611":1,"612":1,"613":4,"614":1,"616":1,"618":1,"621":1,"623":1,"626":2,"627":3,"628":1,"630":2,"633":1,"635":1,"639":1,"641":3,"643":1,"655":1,"657":1,"659":3,"660":4,"661":2,"662":1,"681":1,"683":1,"684":2,"685":2,"686":1,"693":1,"694":1,"697":1,"698":1,"700":1,"701":1,"702":1,"703":1,"707":2,"726":1,"788":1,"852":1,"853":1,"887":1,"921":1,"955":1,"989":1,"1023":1,"1057":1,"1091":1,"1125":1,"1126":1,"1127":1,"1130":1,"1132":1,"1133":1,"1134":2,"1135":1,"1136":2,"1137":1,"1138":1,"1142":1,"1175":1,"1176":1,"1177":2,"1179":1,"1181":1,"1196":1,"1198":1,"1200":1,"1212":2,"1213":1,"1215":1,"1217":1,"1218":1,"1225":2,"1228":1,"1234":1,"1235":1,"1236":2,"1239":2,"1241":1,"1242":2,"1243":1,"1245":1,"1247":1,"1248":1,"1249":1,"1250":1,"1252":1,"1253":1,"1254":2,"1260":1,"1262":1,"1265":2,"1270":2,"1275":1,"1276":1,"1279":1,"1280":1,"1286":1,"1287":1,"1288":1,"1290":1,"1293":1,"1295":1,"1299":1,"1300":6,"1301":1,"1302":1,"1303":1,"1310":1,"1312":2,"1313":1,"1316":1,"1317":1,"1320":2,"1328":1,"1329":1,"1331":5,"1332":5,"1335":3,"1336":2,"1338":1,"1340":4,"1341":4,"1342":1,"1344":1,"1346":2,"1347":1,"1349":1,"1351":2,"1353":1,"1354":2,"1355":1,"1359":1,"1360":1,"1361":6,"1363":2,"1364":2,"1365":1,"1368":1,"1376":2,"1377":2,"1378":2,"1380":2,"1381":1,"1383":7,"1384":3,"1385":4,"1386":3,"1387":2,"1390":1,"1393":1,"1394":2,"1395":1,"1396":1,"1397":1,"1398":6,"1400":1,"1401":2,"1402":1,"1403":2,"1404":2,"1405":1,"1406":1,"1411":1,"1412":1,"1413":1,"1414":1,"1415":2,"1416":3,"1430":1,"1431":1,"1439":2,"1440":1,"1441":1,"1442":1,"1445":1,"1446":1,"1448":1,"1451":2,"1454":1,"1463":1,"1464":2,"1467":1,"1471":1,"1492":2,"1494":1,"1497":2,"1499":1,"1500":1,"1506":1,"1511":2,"1512":1,"1513":1,"1514":1,"1515":3,"1516":3,"1518":2,"1519":1,"1523":2,"1525":1,"1526":1,"1527":2,"1530":1,"1534":2,"1547":1,"1549":1,"1553":4,"1554":1,"1556":2,"1557":6,"1558":2,"1559":1,"1560":1,"1562":2,"1568":1,"1578":2,"1579":1,"1594":1,"1596":1,"1630":3,"1631":1,"1632":1,"1633":2,"1651":1,"1654":2,"1655":2,"1659":1,"1666":2,"1668":2,"1670":2,"1673":2,"1676":2,"1677":1,"1680":1,"1682":1,"1683":1,"1684":3,"1717":1,"1719":1,"1723":1,"1725":3,"1728":2,"1729":2,"1733":1,"1743":1,"1745":1,"1798":1,"1801":1,"1803":3,"1804":1,"1805":2,"1806":2,"1807":1,"1808":1,"1809":1,"1814":2,"1815":2,"1816":1,"1820":2,"1821":1,"1822":2,"1824":1,"1825":1,"1826":1,"1827":1,"1828":1,"1830":2,"1832":2,"1833":1,"1836":2,"1838":1,"1842":2,"1844":3,"1845":1,"1849":2,"1851":3,"1853":3,"1854":2,"1855":4,"1863":1,"1864":1,"1866":2,"1869":1,"1873":1,"1876":2,"1879":1,"1881":1,"1905":1,"1906":1,"1908":1,"1910":1,"1911":1,"1912":1,"1913":1,"1914":2,"1920":1,"1921":3,"1922":1,"1929":1,"1934":2,"1935":1,"1937":1,"1938":1,"1939":1,"1940":1,"1943":1,"1944":1,"1946":3,"1948":1,"1949":3,"1951":1,"1952":2,"1953":1,"1957":1,"1959":2,"1960":1,"1970":1,"1972":1,"2031":1,"2034":1,"2035":1,"2036":1,"2037":1,"2040":1,"2041":2,"2042":3,"2043":1,"2044":2,"2058":1,"2059":2,"2060":3,"2066":1,"2067":1,"2075":1,"2076":1,"2102":1,"2103":1,"2104":1,"2111":1,"2112":2,"2113":1,"2114":1,"2117":1,"2118":1,"2124":2,"2125":2,"2126":3,"2127":1,"2128":3,"2129":1,"2130":4,"2131":2,"2132":1,"2133":1,"2139":2,"2140":1,"2143":2,"2144":1,"2145":2,"2146":3,"2147":1,"2149":1,"2150":2,"2152":1,"2153":1,"2156":1,"2157":1,"2160":2,"2168":1,"2169":2,"2170":1,"2171":2,"2174":1,"2176":1,"2178":1,"2180":1,"2181":2,"2182":4,"2183":3,"2196":1,"2197":1,"2198":1,"2228":1,"2237":1,"2242":1,"2245":1,"2247":1,"2249":1,"2252":2,"2255":5,"2257":1,"2259":2,"2262":4,"2263":5,"2267":1,"2268":3,"2270":2,"2271":1,"2272":2,"2274":4,"2275":2,"2276":2,"2277":3,"2280":2,"2284":1,"2286":1,"2290":1,"2295":1,"2298":1,"2299":3,"2300":3,"2301":1,"2303":1,"2305":1,"2306":1,"2308":1,"2309":1,"2311":4,"2316":1,"2317":1,"2318":2,"2320":2,"2321":2,"2324":2,"2325":1,"2326":1,"2327":1,"2328":1,"2331":1,"2346":1,"2347":2,"2348":2,"2349":1,"2350":1,"2351":1,"2353":3,"2367":1,"2401":2,"2402":2,"2404":1,"2405":6,"2406":1,"2410":2,"2411":3,"2413":2,"2414":1,"2417":3,"2418":1,"2421":4,"2422":2,"2424":1,"2425":1,"2429":1,"2430":1,"2440":2,"2441":3,"2443":3,"2444":1,"2445":2,"2447":1,"2448":2,"2450":1,"2452":1,"2454":1,"2455":1,"2456":1,"2457":1,"2466":2,"2468":2,"2469":2,"2473":1,"2474":1,"2475":1,"2477":4,"2479":4,"2480":7,"2490":3,"2491":2,"2497":2,"2501":1,"2508":2,"2512":1,"2513":4,"2516":1,"2517":4,"2518":4,"2519":1,"2521":1,"2522":1,"2524":2,"2525":1,"2530":3,"2533":1,"2534":2,"2539":1,"2540":1,"2541":1,"2542":1,"2544":1,"2548":2,"2549":1,"2550":3,"2553":1,"2555":1,"2557":2,"2560":1,"2564":1,"2565":1,"2566":6,"2567":2,"2568":1,"2569":2,"2570":1,"2573":1,"2574":4,"2575":2,"2576":34,"2577":13,"2583":1,"2584":2,"2587":1,"2594":1,"2602":1,"2607":2,"2608":2,"2610":2,"2611":1,"2631":1,"2639":1,"2654":1,"2671":1,"2672":2,"2693":1,"2701":1,"2702":1,"2705":2,"2706":3,"2707":1,"2708":3,"2710":3,"2711":2,"2716":1,"2718":2,"2719":1,"2723":1,"2727":5,"2728":7,"2735":3,"2736":3,"2737":2,"2738":3,"2743":2,"2746":2,"2748":1,"2749":2,"2750":1,"2752":2,"2753":2,"2754":2,"2755":2,"2757":8}}],["chunks",{"2":{"2143":1}}],["chunder",{"2":{"292":1}}],["chnu",{"2":{"1793":1,"2371":1}}],["chnd",{"2":{"1793":1,"2371":1}}],["ch9",{"2":{"1793":1,"2371":1}}],["ch8",{"2":{"1793":1,"2371":1}}],["ch7",{"2":{"1793":1,"2371":1}}],["ch6",{"2":{"1793":1,"2371":1}}],["ch5",{"2":{"1793":1,"2371":1}}],["ch4",{"2":{"661":1,"1793":1,"2371":1}}],["ch3",{"2":{"661":1,"1469":1,"1793":1,"2371":1}}],["chyn",{"2":{"661":1,"1230":2}}],["chy",{"2":{"661":1,"1396":1}}],["ch2",{"2":{"657":2,"658":2,"661":1,"1793":1,"2371":1}}],["ch16",{"2":{"1793":1,"2371":1}}],["ch15",{"2":{"1793":1,"2371":1}}],["ch14",{"2":{"1793":1,"2371":1}}],["ch13",{"2":{"1793":1,"2371":1}}],["ch12",{"2":{"1793":1,"2371":1}}],["ch11",{"2":{"1793":1,"2371":1}}],["ch10",{"2":{"1793":1,"2371":1}}],["ch1",{"2":{"656":2,"657":2,"658":2,"661":1,"662":1,"1396":1,"1793":1,"2371":1}}],["ch",{"2":{"199":1,"222":1,"559":1,"1355":2}}],["chrome",{"2":{"2427":1}}],["chromeos",{"2":{"191":1}}],["chromatic",{"2":{"1398":2,"1399":3,"1403":5}}],["chromatonemini",{"2":{"236":1}}],["christmas",{"2":{"49":2,"143":2,"181":2,"2034":1,"2036":2,"2037":2,"2038":4,"2376":1,"2711":1}}],["chose",{"2":{"1272":1,"1395":1,"2429":1,"2457":1}}],["chosen",{"2":{"703":1,"1126":1,"1128":1,"1133":1,"1177":1,"1198":1,"1572":1,"1805":2,"2129":1,"2260":1,"2541":1,"2542":1,"2544":2,"2664":1}}],["choosing",{"0":{"1131":1,"2546":1},"1":{"1132":1,"1133":1,"1134":1,"2547":1,"2548":1,"2549":1,"2550":1,"2551":1,"2552":1},"2":{"1122":1,"1127":1,"1130":1,"2506":1}}],["chooses",{"2":{"1325":1}}],["choose",{"2":{"453":2,"455":1,"538":1,"566":1,"641":1,"1125":1,"1128":1,"1177":1,"1325":1,"1393":1,"1677":1,"1805":1,"2181":1,"2255":1,"2310":2,"2436":1,"2445":1,"2491":1,"2495":1,"2497":1,"2540":1,"2718":1,"2735":1,"2738":1}}],["chord",{"2":{"1357":1,"1511":1,"1518":3,"1521":1,"1527":1,"2150":1,"2152":12}}],["chorded",{"2":{"1303":1,"2144":1,"2152":1}}],["chording",{"2":{"515":1,"1302":1,"1508":1}}],["chords",{"2":{"505":1,"1397":1,"1939":1,"2149":1,"2150":1,"2152":1}}],["chore",{"2":{"160":1,"211":1,"249":1}}],["choc",{"2":{"143":2}}],["choco60",{"2":{"143":2}}],["choices",{"2":{"560":1,"2417":1,"2418":1,"2686":1}}],["choice",{"2":{"74":1,"124":1,"1467":1,"1519":1,"1668":1,"1921":1,"2113":1,"2149":1,"2152":1,"2169":1,"2497":1,"2498":1,"2514":1,"2515":1,"2546":1,"2553":2}}],["children",{"2":{"1451":1}}],["child",{"2":{"1451":5,"2567":1}}],["chili",{"2":{"143":2,"211":1}}],["chime",{"2":{"592":1,"1399":1}}],["chimera",{"2":{"143":8,"149":1,"2294":1}}],["chiffre",{"2":{"143":2,"222":1,"236":1}}],["chidori",{"2":{"143":2}}],["chipid",{"2":{"2353":2}}],["chip",{"2":{"130":1,"276":1,"488":1,"560":2,"663":1,"666":2,"674":1,"680":1,"681":2,"1293":1,"1491":2,"1492":3,"1573":1,"1817":1,"1820":1,"1834":1,"1835":1,"1842":1,"1849":4,"2031":1,"2276":1,"2291":1,"2347":2,"2450":1,"2518":3,"2544":2,"2567":1,"2574":1,"2576":10,"2638":1}}],["chipsets",{"2":{"1493":1}}],["chipset",{"2":{"1492":1}}],["chips",{"2":{"123":1,"560":1,"681":4,"684":2,"685":2,"693":1,"694":1,"1243":1,"1319":1,"1491":1,"2236":1,"2335":2,"2544":1,"2550":1}}],["chibios",{"0":{"10":2,"11":1,"69":1,"77":1,"263":1,"357":1,"358":1,"359":1,"361":2,"668":1,"703":1,"733":1,"759":1,"791":1,"821":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1147":1,"1177":1,"1198":1,"1224":1,"1468":1,"1906":1,"2523":1},"1":{"358":1,"359":1,"360":1,"361":1,"704":1,"705":1,"1225":1,"1226":1,"1227":1,"1228":1,"1229":1,"1230":1,"1469":1,"1470":1,"2524":1,"2525":1,"2526":1},"2":{"10":6,"11":1,"24":1,"49":5,"50":5,"65":4,"69":4,"73":1,"74":1,"77":1,"93":1,"108":2,"113":1,"114":9,"133":1,"134":8,"149":6,"160":4,"163":1,"176":11,"191":7,"199":6,"211":2,"222":6,"236":6,"249":3,"266":3,"277":1,"349":5,"357":3,"358":2,"359":8,"360":7,"488":1,"495":1,"552":1,"635":1,"636":1,"641":1,"656":2,"661":2,"663":1,"668":1,"697":1,"726":1,"733":1,"759":1,"791":1,"821":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1124":1,"1125":1,"1128":1,"1132":2,"1133":2,"1147":1,"1226":1,"1230":2,"1469":1,"1470":1,"1824":1,"1906":1,"2131":1,"2132":1,"2255":2,"2262":1,"2310":1,"2523":4,"2524":2,"2525":2,"2526":3,"2535":2,"2536":1,"2537":1,"2546":10,"2548":4,"2549":3,"2550":1,"2551":2,"2552":2,"2564":1,"2566":5,"2673":1,"2743":1}}],["chevron",{"2":{"1949":4,"2711":1}}],["cherry",{"2":{"2706":1}}],["cherryb",{"2":{"211":4}}],["chere",{"2":{"2508":1}}],["cherish",{"2":{"176":1}}],["cheap",{"2":{"114":1,"134":1,"2350":1}}],["checkmark",{"2":{"2569":1}}],["checklist",{"2":{"2563":1}}],["checklists",{"0":{"342":1,"2563":1},"1":{"343":1,"344":1,"345":1,"346":1,"347":1,"2564":1,"2565":1,"2566":1,"2567":1,"2568":1,"2569":1,"2570":1}}],["checkbox",{"2":{"2498":1}}],["checker",{"2":{"2279":1}}],["checkerboards",{"2":{"143":3,"149":1,"211":1}}],["checked",{"2":{"349":1,"367":1,"447":1,"1431":1,"1524":1,"1877":1,"1879":1,"2126":1,"2255":4,"2480":2,"2605":1}}],["checkout",{"2":{"305":1,"347":2,"349":3,"359":2,"360":4,"361":2,"554":1,"1334":1,"1382":2,"2437":4,"2479":1,"2480":3,"2506":1}}],["checking",{"0":{"315":1,"1300":1},"1":{"1301":1,"1302":1,"1303":1},"2":{"176":1,"199":2,"476":1,"484":1,"527":1,"529":1,"1303":1,"1364":1,"1939":2,"2147":1,"2171":1,"2425":1,"2453":2,"2469":1,"2548":1,"2563":1,"2740":1}}],["check",{"2":{"49":1,"87":1,"112":1,"114":2,"134":2,"160":2,"163":1,"176":6,"199":3,"211":2,"214":1,"222":2,"234":1,"236":1,"249":3,"254":1,"266":1,"277":2,"282":3,"304":1,"312":1,"315":2,"316":1,"321":1,"341":1,"376":3,"381":1,"515":2,"548":1,"556":2,"588":7,"626":1,"627":1,"628":1,"635":1,"689":1,"1227":1,"1238":1,"1255":1,"1260":1,"1286":1,"1292":2,"1293":1,"1300":2,"1341":2,"1344":3,"1359":1,"1364":1,"1377":1,"1381":1,"1384":1,"1430":1,"1438":1,"1441":1,"1455":1,"1524":1,"1526":1,"1527":1,"1699":1,"1700":1,"1702":1,"1703":2,"1705":1,"1706":3,"1708":1,"1709":4,"1711":1,"1712":5,"1729":3,"1842":2,"1855":1,"1859":1,"1861":1,"1877":1,"1895":1,"1952":3,"2032":1,"2036":1,"2071":3,"2128":2,"2162":1,"2171":2,"2172":1,"2262":2,"2279":7,"2293":5,"2303":1,"2311":1,"2316":1,"2347":1,"2348":1,"2353":2,"2454":1,"2455":1,"2475":1,"2479":1,"2506":1,"2519":1,"2523":1,"2603":1,"2605":1,"2679":1,"2699":2,"2705":1,"2753":1}}],["checksum",{"2":{"176":1,"2262":1,"2353":2}}],["checks",{"2":{"36":2,"149":1,"199":1,"236":1,"263":1,"282":3,"304":1,"341":1,"381":1,"400":1,"588":1,"1302":1,"1341":3,"1438":1,"1876":1,"2162":2,"2169":1,"2232":1,"2234":1,"2239":1,"2437":1,"2480":1}}],["chconf",{"2":{"50":2,"86":1}}],["challenge",{"2":{"606":1,"1355":1}}],["chatter",{"0":{"1325":1},"1":{"1326":1,"1327":1,"1328":1,"1329":1,"1330":1},"2":{"1325":1}}],["chat",{"0":{"2714":1},"2":{"553":1,"560":1,"585":1,"2317":1,"2455":1}}],["chains",{"2":{"1219":1,"1451":2,"2528":1}}],["chained",{"2":{"1212":1,"2031":1}}],["chain",{"2":{"331":1,"644":2,"648":1,"651":1,"1214":2,"1232":1,"1299":1,"1451":7,"1452":1,"2319":1,"2675":2,"2694":1,"2700":1,"2735":1,"2749":2}}],["chapter1",{"2":{"266":1}}],["charging",{"2":{"2524":1}}],["charge",{"2":{"49":2}}],["charlieplex",{"2":{"2289":1}}],["charlieplexed",{"2":{"816":1}}],["chartreuse",{"2":{"1953":2,"2058":2}}],["chars",{"2":{"249":1,"266":1,"1822":2,"2143":2}}],["character",{"0":{"1594":1},"2":{"453":1,"461":1,"1255":1,"1399":1,"1409":1,"1440":1,"1499":1,"1565":2,"1594":3,"1605":4,"1606":1,"1611":1,"1612":2,"1613":1,"1614":2,"1618":1,"1620":1,"1621":1,"1817":2,"1822":5,"2072":1,"2074":2,"2075":1,"2083":1,"2084":1,"2087":1,"2088":1,"2089":1,"2090":1,"2099":1,"2141":2,"2143":5,"2169":1,"2176":1,"2181":1,"2182":4,"2183":1,"2199":1,"2200":1,"2219":1,"2263":1,"2294":1,"2323":2,"2490":1,"2575":2,"2611":1,"2701":1,"2702":2}}],["characters",{"0":{"1277":1,"2325":1,"2326":1},"2":{"211":1,"556":1,"1359":2,"1412":2,"1418":1,"1421":1,"1428":1,"1440":1,"1441":1,"1448":2,"1591":2,"1594":3,"1607":1,"1609":1,"1626":1,"1628":1,"1675":2,"1814":1,"1822":1,"2072":1,"2075":1,"2076":1,"2081":1,"2083":1,"2085":1,"2087":1,"2138":1,"2143":1,"2181":1,"2182":5,"2183":1,"2201":1,"2214":1,"2228":2,"2263":4,"2279":1,"2321":1,"2325":1,"2326":1,"2397":1,"2398":1,"2411":1,"2564":1,"2588":1,"2589":2,"2666":1,"2672":2,"2676":1,"2701":1,"2702":4,"2728":1}}],["charactermatrix",{"2":{"31":1,"1823":1}}],["charon",{"2":{"211":1}}],["charue",{"2":{"211":2}}],["charybdis",{"2":{"176":2}}],["char",{"0":{"1208":1,"1605":1,"1607":1,"1609":1,"1611":1,"1613":1,"2081":1,"2083":1,"2085":1,"2087":1,"2089":2,"2201":1},"1":{"1209":1,"1606":1,"1608":1,"1610":1,"1612":1,"1614":1,"2082":1,"2084":1,"2086":1,"2088":1,"2090":2,"2202":1},"2":{"114":1,"134":1,"462":1,"1447":3,"1448":6,"1594":1,"1606":1,"1608":1,"1610":1,"1613":1,"1814":1,"1815":4,"1822":12,"1823":6,"2082":1,"2084":1,"2086":1,"2088":1,"2090":1,"2138":1,"2139":4,"2143":12,"2183":1,"2202":1,"2565":1,"2577":4,"2710":1}}],["chance",{"2":{"537":1,"1242":1,"1521":1,"2321":1,"2564":1}}],["chances",{"2":{"537":1,"2417":1,"2478":1,"2706":1}}],["changing",{"0":{"2059":1,"2413":1,"2414":1,"2415":1,"2584":1},"2":{"194":1,"214":1,"233":1,"236":1,"502":1,"539":1,"598":1,"1325":1,"1332":2,"1873":1,"2033":3,"2042":1,"2226":1,"2315":1,"2318":1,"2326":1,"2576":11}}],["changelist",{"0":{"114":1,"134":1,"149":1,"160":1,"176":1,"191":1,"199":1,"211":1,"222":1,"236":1,"249":1,"266":1,"277":1}}],["changelogs",{"2":{"266":1,"351":1}}],["changelog",{"0":{"9":1,"19":1,"39":1,"52":1,"66":1,"78":1,"96":1,"115":1,"135":1,"150":1,"161":1,"177":1,"192":1,"200":1,"212":1,"223":1,"237":1,"250":1,"267":1},"1":{"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1},"2":{"99":1,"149":2,"341":3,"347":1,"355":2,"2721":1}}],["changed",{"2":{"14":1,"90":1,"114":1,"156":1,"160":1,"169":1,"176":1,"182":1,"186":1,"191":1,"199":1,"214":1,"215":1,"240":1,"256":1,"341":1,"400":4,"440":1,"554":2,"565":2,"566":4,"1127":1,"1130":1,"1134":1,"1328":1,"1332":1,"1342":1,"1514":1,"1567":1,"1632":1,"1668":1,"1725":1,"1819":1,"1822":2,"1853":2,"1855":4,"1864":1,"1920":1,"1946":1,"2126":1,"2156":1,"2180":1,"2182":1,"2192":1,"2194":1,"2255":1,"2408":1,"2480":3,"2491":7,"2728":2,"2757":3}}],["changesets",{"2":{"182":1}}],["changes",{"0":{"5":1,"20":1,"40":1,"46":1,"47":1,"53":1,"61":1,"66":1,"67":1,"68":1,"72":1,"78":1,"79":1,"85":1,"91":1,"96":1,"101":1,"106":1,"115":1,"121":1,"129":1,"131":1,"135":1,"139":1,"144":1,"150":1,"155":1,"161":1,"165":1,"171":1,"177":1,"180":1,"187":1,"192":1,"193":1,"194":1,"198":1,"200":1,"201":1,"205":1,"206":1,"208":1,"212":1,"213":1,"216":1,"223":1,"225":1,"227":1,"237":1,"239":1,"240":1,"242":1,"244":1,"250":1,"252":1,"261":1,"267":1,"269":1,"337":1,"338":1,"341":1,"351":1,"352":1,"355":1,"541":1,"2474":1,"2477":1,"2480":1,"2481":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"48":1,"49":1,"50":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"62":1,"63":1,"64":1,"67":1,"68":1,"69":2,"70":2,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"79":1,"80":2,"81":2,"82":2,"83":2,"84":2,"85":1,"86":2,"87":2,"88":2,"89":2,"90":2,"91":1,"92":2,"93":2,"94":2,"95":2,"97":1,"98":1,"99":1,"100":1,"101":1,"102":2,"103":2,"104":2,"105":2,"106":1,"107":2,"108":2,"109":2,"110":2,"111":2,"112":2,"113":2,"114":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":2,"123":2,"124":2,"125":2,"126":2,"127":2,"128":2,"129":1,"130":2,"131":2,"132":2,"133":2,"134":1,"136":1,"137":1,"138":1,"139":1,"140":2,"141":2,"142":2,"143":2,"144":1,"145":2,"146":2,"147":2,"148":2,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":2,"157":2,"158":2,"159":2,"160":1,"162":1,"163":1,"164":1,"165":1,"166":2,"167":2,"168":2,"169":2,"170":2,"171":1,"172":2,"173":2,"174":2,"175":2,"176":1,"178":1,"179":1,"180":1,"181":2,"182":2,"183":2,"184":2,"185":2,"186":2,"187":1,"188":2,"189":2,"190":2,"191":1,"193":1,"194":2,"195":2,"196":2,"197":2,"198":1,"199":1,"201":1,"202":2,"203":2,"204":2,"205":1,"206":2,"207":2,"208":1,"209":2,"210":2,"211":1,"213":1,"214":2,"215":2,"216":1,"217":2,"218":2,"219":2,"220":2,"221":2,"222":1,"224":1,"225":1,"226":2,"227":1,"228":2,"229":2,"230":2,"231":2,"232":2,"233":2,"234":2,"235":2,"236":1,"238":1,"239":1,"240":2,"241":2,"242":1,"243":2,"244":2,"245":2,"246":2,"247":2,"248":2,"249":1,"251":1,"252":1,"253":2,"254":2,"255":2,"256":2,"257":2,"258":2,"259":2,"260":2,"261":1,"262":2,"263":2,"264":1,"265":1,"266":1,"268":1,"269":1,"270":2,"271":2,"272":2,"273":2,"274":1,"275":1,"276":1,"277":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"349":1,"350":1,"353":1,"354":1,"355":1,"356":1},"2":{"0":3,"2":1,"9":2,"19":3,"22":1,"25":1,"28":1,"31":4,"32":1,"34":4,"36":1,"39":2,"45":1,"52":2,"67":1,"74":1,"86":1,"87":1,"103":2,"105":1,"107":1,"114":2,"116":1,"125":1,"126":2,"131":2,"133":1,"134":2,"149":1,"156":1,"163":2,"167":1,"172":1,"175":1,"176":3,"182":1,"184":1,"185":1,"187":2,"188":1,"191":4,"198":2,"199":1,"201":3,"206":1,"211":1,"213":3,"222":2,"224":3,"231":1,"233":3,"236":2,"238":2,"247":1,"251":1,"254":1,"262":1,"263":1,"265":3,"272":1,"273":1,"275":1,"276":1,"337":1,"338":1,"341":5,"342":1,"343":3,"344":3,"345":3,"346":2,"349":3,"350":4,"351":1,"352":9,"354":2,"355":1,"407":1,"411":1,"474":1,"505":1,"521":1,"550":1,"554":6,"556":1,"558":1,"560":4,"561":1,"581":1,"607":1,"627":1,"657":1,"658":1,"661":1,"1326":1,"1329":5,"1341":1,"1403":3,"1557":1,"1573":1,"1716":1,"1787":2,"1820":6,"1859":1,"1949":4,"2043":1,"2128":1,"2131":1,"2175":3,"2226":1,"2250":1,"2255":4,"2263":1,"2309":1,"2424":1,"2425":1,"2431":1,"2440":1,"2441":1,"2448":1,"2474":1,"2475":2,"2476":2,"2477":8,"2478":1,"2480":6,"2481":1,"2491":2,"2564":1,"2566":2,"2567":5,"2568":1,"2577":1,"2620":1,"2628":1,"2667":1,"2719":1,"2720":2,"2721":1,"2728":3,"2744":1,"2748":1,"2757":2}}],["change",{"0":{"0":1,"9":1,"19":1,"39":1,"52":1,"57":1,"71":1,"272":1,"339":1,"603":1,"1342":1,"1791":1,"2052":1,"2054":1,"2748":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"340":1,"1343":1,"1344":1,"1345":1},"2":{"0":3,"9":2,"19":2,"23":1,"31":2,"39":2,"45":1,"49":1,"52":2,"64":2,"87":1,"90":2,"93":1,"94":1,"95":1,"105":3,"114":4,"118":1,"133":1,"134":3,"149":2,"160":2,"176":2,"182":1,"188":1,"191":7,"198":2,"199":4,"201":1,"211":2,"213":1,"215":1,"249":4,"255":1,"257":1,"258":1,"259":2,"262":1,"263":4,"266":5,"271":1,"272":2,"277":2,"282":6,"317":1,"337":5,"339":1,"341":4,"347":1,"349":1,"352":1,"353":1,"354":1,"355":1,"435":1,"440":1,"453":2,"454":1,"485":1,"498":1,"554":1,"556":2,"569":1,"603":1,"626":1,"641":1,"657":1,"662":1,"830":1,"865":1,"899":1,"933":1,"967":1,"1001":1,"1035":1,"1069":1,"1103":1,"1124":1,"1127":2,"1130":2,"1136":1,"1137":1,"1156":1,"1216":1,"1271":1,"1284":1,"1326":4,"1329":9,"1332":14,"1335":1,"1341":1,"1362":1,"1397":1,"1400":2,"1403":1,"1404":1,"1415":1,"1457":1,"1464":1,"1469":1,"1492":1,"1511":2,"1515":1,"1523":1,"1528":1,"1530":1,"1534":2,"1558":2,"1631":1,"1656":1,"1666":2,"1675":1,"1677":1,"1682":1,"1685":1,"1715":1,"1805":1,"1822":1,"1859":1,"1864":1,"1873":3,"1877":2,"1911":1,"1932":1,"1936":1,"1950":1,"1951":1,"2032":1,"2047":2,"2052":4,"2106":2,"2107":2,"2111":1,"2128":2,"2174":2,"2190":1,"2191":1,"2228":1,"2261":1,"2327":1,"2398":1,"2402":3,"2411":1,"2424":2,"2480":1,"2490":1,"2491":2,"2502":2,"2508":1,"2513":1,"2530":1,"2556":2,"2564":2,"2567":1,"2605":2,"2728":2,"2738":1,"2757":1}}],["channels",{"0":{"632":1},"1":{"633":1,"634":1,"635":1,"636":1},"2":{"633":1,"635":2,"641":2,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1,"1217":1,"2276":1}}],["channel",{"2":{"14":2,"228":1,"633":1,"635":2,"636":1,"639":5,"656":1,"657":1,"661":2,"669":1,"672":3,"734":1,"737":3,"750":3,"760":1,"763":3,"777":3,"792":1,"795":3,"809":3,"822":1,"825":3,"841":3,"857":1,"860":3,"876":3,"891":1,"894":3,"910":3,"925":1,"928":3,"944":3,"959":1,"962":3,"978":3,"993":1,"996":3,"1012":3,"1027":1,"1030":3,"1046":3,"1061":1,"1064":3,"1080":3,"1095":1,"1098":3,"1114":3,"1148":1,"1151":3,"1167":3,"1217":1,"1230":4,"1390":2,"1396":1,"1458":2,"1469":2,"1471":1,"1787":1,"1792":2,"1793":36,"1794":1,"2371":36}}],["cumbersome",{"2":{"1527":1}}],["cuint32",{"2":{"597":1}}],["cuint16",{"2":{"195":1,"1416":1,"1518":1,"1933":2,"1934":1,"1941":1,"2577":4,"2727":1,"2728":1,"2737":1}}],["cu80",{"2":{"143":2,"149":1,"217":4,"222":1,"249":1}}],["cu75",{"2":{"143":2,"149":1}}],["cu24",{"2":{"143":2,"149":1}}],["cutters",{"2":{"2266":1,"2273":1}}],["cutoff",{"2":{"1836":1}}],["cut",{"2":{"116":1,"1399":1,"1836":1,"2133":1,"2276":1,"2355":2,"2392":2,"2414":1}}],["currency",{"2":{"2325":1}}],["currentreport",{"2":{"1857":8}}],["currently",{"2":{"7":1,"65":1,"103":1,"203":1,"221":1,"262":1,"315":1,"317":1,"382":1,"511":2,"630":1,"655":1,"684":1,"685":2,"688":1,"690":1,"692":2,"694":2,"1195":1,"1300":1,"1314":2,"1315":1,"1316":1,"1317":1,"1319":1,"1322":1,"1326":1,"1336":1,"1346":1,"1357":1,"1371":1,"1372":1,"1373":1,"1394":1,"1396":1,"1449":1,"1491":2,"1492":1,"1493":1,"1494":1,"1505":1,"1531":1,"1553":1,"1570":1,"1589":1,"1615":1,"1728":1,"1731":1,"1743":1,"1745":1,"1747":1,"1749":1,"1755":1,"1756":1,"1775":1,"1777":1,"1782":1,"1822":2,"1827":1,"1844":1,"1849":1,"1879":1,"1881":1,"1921":1,"1948":2,"1949":1,"1955":1,"1970":1,"1972":1,"1974":1,"1976":1,"1982":1,"1983":1,"2020":1,"2022":1,"2027":1,"2031":1,"2041":1,"2046":1,"2063":1,"2064":1,"2065":1,"2071":3,"2107":1,"2114":2,"2129":1,"2143":1,"2152":1,"2158":1,"2161":1,"2169":1,"2183":1,"2187":1,"2196":1,"2197":1,"2198":1,"2212":1,"2231":1,"2235":1,"2238":2,"2245":1,"2247":1,"2341":1,"2363":1,"2411":1,"2442":1,"2450":1,"2451":1,"2463":1,"2480":1,"2573":2,"2617":1,"2686":3,"2745":1}}],["current",{"0":{"4":1,"667":1,"790":1,"855":1,"889":1,"923":1,"957":1,"991":1,"1025":1,"1059":1,"1093":1},"2":{"30":1,"33":1,"49":1,"50":1,"88":1,"104":1,"114":1,"119":3,"176":2,"199":1,"266":1,"273":1,"341":1,"343":1,"350":3,"370":1,"395":1,"401":1,"405":1,"416":1,"483":1,"504":1,"506":1,"511":4,"515":1,"533":1,"560":1,"565":1,"566":1,"580":6,"599":1,"641":1,"666":2,"667":2,"786":2,"790":2,"830":1,"850":2,"855":2,"865":1,"885":2,"889":2,"899":1,"919":2,"923":2,"933":1,"953":2,"957":2,"967":1,"987":2,"991":2,"1001":1,"1021":2,"1025":2,"1035":1,"1055":2,"1059":2,"1069":1,"1089":2,"1093":2,"1103":1,"1156":1,"1194":1,"1300":4,"1303":1,"1335":1,"1340":2,"1341":2,"1344":4,"1355":1,"1385":1,"1434":1,"1436":1,"1446":1,"1452":1,"1471":1,"1481":1,"1482":1,"1483":1,"1488":1,"1506":1,"1507":1,"1511":1,"1525":3,"1529":1,"1530":1,"1537":1,"1570":1,"1573":2,"1620":1,"1621":2,"1638":1,"1741":1,"1761":1,"1762":1,"1771":1,"1772":1,"1774":1,"1776":1,"1778":1,"1780":1,"1783":1,"1815":3,"1816":1,"1822":10,"1853":3,"1855":1,"1859":1,"1864":1,"1865":1,"1869":1,"1873":4,"1939":1,"1949":2,"1968":1,"1988":1,"1989":1,"1994":1,"1995":1,"2000":1,"2001":1,"2010":1,"2011":1,"2016":1,"2017":1,"2019":1,"2021":1,"2023":1,"2025":1,"2028":1,"2036":1,"2057":6,"2107":2,"2112":1,"2129":4,"2139":3,"2140":1,"2143":9,"2147":3,"2152":1,"2170":1,"2171":1,"2175":3,"2179":1,"2186":1,"2215":1,"2227":4,"2268":1,"2311":2,"2327":1,"2355":1,"2358":1,"2375":3,"2393":1,"2402":1,"2417":1,"2452":1,"2477":10,"2479":1,"2481":1,"2491":1,"2497":1,"2509":1,"2519":3,"2531":1,"2567":1,"2573":1,"2577":2,"2596":1,"2697":1,"2699":2,"2705":1,"2710":3,"2728":6,"2745":1,"2748":2}}],["cur",{"2":{"2169":3,"2170":3,"2171":4}}],["curious",{"2":{"1450":1}}],["curly",{"2":{"2079":1,"2170":1,"2378":2,"2399":2,"2508":1}}],["curl",{"2":{"314":1,"315":1,"317":3}}],["cursorstyle",{"2":{"2508":1}}],["cursor",{"0":{"1596":1,"1600":1,"1603":1},"1":{"1597":1,"1601":1,"1604":1},"2":{"62":1,"114":1,"175":1,"176":2,"1531":1,"1534":1,"1593":1,"1594":1,"1597":3,"1599":1,"1600":1,"1601":3,"1603":1,"1605":1,"1620":2,"1628":1,"1801":8,"1802":8,"1803":10,"1804":14,"1805":12,"1806":6,"1807":8,"1808":2,"1816":1,"1822":19,"1844":1,"1851":5,"1858":2,"1932":2,"2079":1,"2143":19,"2263":1,"2372":8,"2652":1}}],["curved",{"2":{"1842":3}}],["curves",{"2":{"84":1,"1807":1}}],["curve",{"2":{"49":1,"74":1,"93":1,"1802":1,"1804":1,"1807":1,"2038":1,"2577":1}}],["customer",{"2":{"549":1}}],["customarily",{"2":{"255":1}}],["customary",{"2":{"179":1,"255":1}}],["custommk",{"2":{"102":3,"1315":1}}],["customising",{"0":{"2440":1},"2":{"2440":1}}],["customise",{"2":{"1245":1,"1445":1,"2436":1}}],["customisations",{"2":{"24":1}}],["customize",{"0":{"567":1,"1867":1,"1879":1,"2424":1},"1":{"568":1,"1868":1,"1869":1,"1870":1,"1871":1},"2":{"496":1,"537":1,"567":1,"584":1,"1659":1,"1662":1,"1673":1,"2306":1,"2492":1,"2553":1,"2709":1}}],["customized",{"0":{"1383":1},"2":{"45":2,"49":1,"1385":1,"1439":1,"1733":1,"1879":1,"1957":1}}],["customizing",{"0":{"1440":1,"1502":1,"2264":1},"1":{"1441":1,"1503":1,"1504":1,"1505":1,"1506":1,"1507":1},"2":{"236":1,"1359":1,"2306":1}}],["customizability",{"2":{"1430":1,"2491":1}}],["customizable",{"0":{"1523":1},"2":{"160":1}}],["customization",{"0":{"1554":1},"1":{"1555":1,"1556":1},"2":{"191":1,"574":1,"592":1,"1335":1,"1554":1,"1556":1,"1662":1,"1666":1,"1670":1,"1855":1,"2571":1,"2740":1}}],["custom",{"0":{"533":1,"534":1,"563":1,"569":1,"1269":1,"1384":1,"1430":1,"1464":1,"1594":1,"1729":1,"1820":1,"1850":1,"1857":1,"1874":1,"1878":1,"1880":1,"1952":1,"2130":1,"2142":1,"2306":1},"1":{"564":1,"565":1,"566":1,"570":1,"571":1,"572":1,"573":1,"1821":1},"2":{"3":1,"7":1,"15":1,"49":1,"76":1,"80":1,"112":2,"114":2,"134":1,"149":4,"160":2,"176":2,"191":3,"211":3,"236":2,"265":1,"266":2,"277":2,"312":1,"318":1,"479":1,"508":2,"511":2,"515":3,"519":1,"534":21,"564":1,"565":3,"567":1,"570":3,"572":1,"586":2,"659":1,"689":1,"1218":1,"1250":1,"1257":1,"1269":2,"1300":1,"1303":1,"1330":2,"1332":1,"1342":1,"1344":1,"1359":7,"1364":1,"1375":1,"1385":2,"1398":1,"1423":3,"1430":1,"1440":1,"1446":3,"1460":1,"1464":2,"1492":2,"1500":1,"1508":1,"1511":4,"1523":1,"1530":1,"1556":1,"1594":3,"1611":1,"1612":1,"1613":1,"1614":1,"1626":1,"1655":2,"1656":2,"1668":1,"1670":3,"1676":1,"1678":1,"1680":1,"1716":1,"1729":10,"1733":1,"1791":1,"1792":1,"1817":3,"1820":3,"1826":1,"1830":2,"1832":1,"1833":1,"1836":1,"1850":3,"1857":1,"1858":1,"1859":1,"1878":3,"1879":1,"1880":3,"1881":2,"1933":1,"1935":2,"1940":2,"1941":1,"1943":1,"1948":1,"1952":10,"1957":1,"2034":1,"2078":1,"2121":2,"2141":3,"2149":1,"2161":3,"2170":1,"2171":1,"2182":1,"2183":1,"2243":1,"2259":1,"2263":6,"2267":1,"2270":1,"2301":1,"2306":3,"2405":2,"2407":1,"2413":1,"2414":2,"2415":1,"2417":1,"2420":1,"2429":1,"2449":1,"2450":1,"2455":1,"2457":1,"2491":1,"2501":1,"2565":1,"2566":8,"2571":2,"2573":1,"2610":1,"2619":1,"2674":1,"2677":1,"2678":1,"2683":2,"2688":1,"2689":4,"2694":1,"2695":1,"2697":1,"2700":1,"2724":1,"2725":1,"2728":2}}],["cl",{"2":{"2370":5,"2396":5,"2405":2,"2408":1}}],["cln",{"2":{"2165":1,"2168":2}}],["clk",{"2":{"1903":2,"2141":1,"2340":1,"2692":1}}],["cled",{"2":{"1725":1,"1729":1,"1946":1}}],["clearpageremainder",{"2":{"1822":1,"2143":1}}],["clears",{"2":{"1341":1,"1526":1,"1822":1,"2143":1,"2577":1}}],["clearing",{"2":{"1271":1,"1430":1,"1457":3,"2035":6}}],["cleared",{"2":{"592":1,"2524":1,"2525":1}}],["clearer",{"2":{"16":1}}],["clear",{"0":{"1371":1,"1372":1,"1373":1,"1598":1,"1885":1},"2":{"149":2,"188":1,"191":5,"199":1,"231":1,"561":1,"592":1,"1270":3,"1298":1,"1300":2,"1341":1,"1371":1,"1372":1,"1373":1,"1385":2,"1511":6,"1530":2,"1598":1,"1622":1,"1624":1,"1816":1,"1822":1,"1823":3,"1859":1,"1885":1,"2106":1,"2143":1,"2353":1,"2355":5,"2356":1,"2389":1,"2392":4,"2490":2,"2546":1,"2566":1,"2572":1,"2577":2,"2752":1}}],["cleaner",{"2":{"2281":1}}],["cleaned",{"2":{"198":1}}],["cleaning",{"2":{"224":1,"251":1,"2272":1,"2502":1}}],["clean",{"0":{"50":1,"64":1,"75":1,"94":1,"387":1},"2":{"94":1,"114":3,"133":1,"134":2,"160":1,"191":6,"199":2,"211":5,"222":2,"236":3,"249":1,"387":1,"396":1,"401":1,"411":1,"559":1,"1325":1,"2262":3,"2502":1,"2566":1,"2750":1}}],["cleans",{"2":{"13":1,"387":1,"2262":1}}],["cleanups",{"2":{"2":1,"50":1,"149":1,"191":2,"211":3,"222":7,"236":10,"249":1,"277":1}}],["cleanup",{"0":{"2":1,"25":1,"27":1,"113":1,"133":1,"229":1,"233":1},"2":{"12":1,"25":1,"64":2,"94":1,"114":3,"149":1,"187":1,"191":2,"198":1,"199":1,"201":1,"211":4,"213":1,"224":1,"233":1,"235":1,"236":2,"249":2,"268":1,"277":1,"592":1,"2749":1}}],["clr",{"2":{"1270":1,"1332":1,"1527":1,"2126":1,"2355":1,"2356":1,"2392":1,"2572":1,"2610":1}}],["clunker",{"2":{"236":1}}],["clutter",{"2":{"2497":1}}],["cluttered",{"2":{"204":1}}],["cluttering",{"2":{"28":1}}],["club",{"2":{"114":1,"143":4,"149":1,"236":2,"2243":2}}],["cluecard",{"2":{"111":1,"2749":1}}],["clueboards",{"2":{"2230":1}}],["clueboard",{"0":{"1243":1},"2":{"111":3,"149":1,"286":1,"313":1,"370":2,"375":2,"378":1,"395":1,"396":1,"414":2,"415":1,"425":1,"426":2,"623":3,"2259":2,"2293":2,"2294":1,"2295":6,"2404":1,"2407":1,"2421":2,"2422":1,"2469":7,"2565":1,"2671":4,"2672":3}}],["clag",{"2":{"2355":1,"2392":1}}],["clayer",{"2":{"1332":1,"1343":1,"2606":2}}],["classname",{"2":{"460":1}}],["class",{"2":{"457":1,"475":1,"2441":1}}],["classic",{"2":{"210":1,"1290":1,"1491":1,"2728":1}}],["clarification",{"2":{"149":1,"191":1}}],["clarify",{"2":{"134":1,"2172":1}}],["claw44",{"2":{"143":2}}],["clawsome",{"2":{"102":3}}],["clangd",{"2":{"2510":1,"2512":4}}],["clang",{"0":{"1":1,"454":1},"2":{"1":1,"114":1,"132":2,"134":2,"149":1,"400":1,"454":8}}],["clogged",{"2":{"2574":1}}],["cloning",{"2":{"2255":2,"2445":1}}],["cloned",{"2":{"2463":1,"2501":1,"2504":1,"2511":1}}],["clones",{"2":{"271":2,"487":1,"2233":1,"2331":1,"2344":1,"2655":1}}],["clone",{"2":{"93":1,"359":1,"365":1,"366":1,"554":2,"1346":1,"2233":1,"2250":1,"2252":1,"2255":3,"2440":1,"2443":2,"2444":2,"2463":1,"2468":1}}],["closing",{"2":{"453":2,"2079":1,"2108":1,"2279":1}}],["closely",{"2":{"2133":1}}],["closest",{"2":{"1451":1}}],["closes",{"2":{"341":2}}],["closed",{"2":{"340":1,"341":1,"343":1,"344":1,"345":2,"346":2,"350":2,"2144":1,"2235":1,"2311":1,"2566":1}}],["close",{"2":{"331":2,"335":1,"1537":1,"1921":1,"1923":1,"2109":3,"2110":3,"2382":3,"2460":1,"2577":6}}],["cloudline",{"2":{"211":1}}],["clocks",{"2":{"2523":1,"2524":1,"2525":1}}],["clock",{"2":{"114":1,"334":1,"502":1,"685":3,"694":3,"702":1,"704":1,"1181":5,"1223":1,"1227":1,"1817":2,"1834":1,"1835":2,"1842":2,"1846":1,"1848":1,"1849":2,"1904":1,"1905":3,"1906":2,"1907":5,"1908":2,"2032":2,"2141":1,"2348":2,"2675":1,"2692":1}}],["clockwise",{"2":{"13":2,"90":10,"588":1,"1557":1,"1560":9,"1915":1}}],["clipping",{"0":{"2060":1},"2":{"2048":3,"2060":5}}],["client",{"2":{"307":2,"1220":1,"2345":1,"2431":1,"2450":1}}],["clients",{"2":{"304":1}}],["click4",{"2":{"1578":1}}],["click3",{"2":{"1578":2}}],["click2",{"2":{"1578":2}}],["click1",{"2":{"1578":2}}],["clicking",{"2":{"540":3,"2255":2,"2317":1}}],["clicks",{"2":{"266":1,"1406":3,"1408":2,"1431":1,"1809":1,"2263":1,"2357":2}}],["clicky",{"2":{"236":1,"1398":1,"1406":18,"1408":9,"1549":2,"2357":9,"2676":2,"2749":2}}],["click",{"0":{"1406":1},"2":{"149":1,"291":2,"331":3,"335":2,"537":1,"557":1,"626":1,"627":2,"1300":1,"1406":3,"1578":15,"1836":1,"1839":3,"1844":1,"1845":2,"1857":1,"2150":3,"2255":1,"2278":1,"2398":1,"2411":1,"2452":1,"2453":1,"2498":3,"2501":2,"2508":2,"2511":2,"2513":1,"2615":1,"2652":1,"2693":1}}],["cli",{"0":{"173":1,"362":1,"368":1,"412":1,"416":1,"427":1,"433":1,"434":1,"1248":1,"2575":1},"1":{"363":1,"364":1,"365":1,"366":1,"367":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":1,"423":1,"424":1},"2":{"1":1,"94":1,"95":1,"114":6,"132":1,"134":4,"149":1,"153":1,"158":2,"160":2,"164":1,"173":1,"176":5,"191":1,"199":7,"211":3,"222":1,"236":3,"249":2,"266":1,"277":1,"282":2,"292":1,"363":1,"364":1,"372":1,"407":2,"413":1,"428":2,"429":1,"430":18,"431":1,"432":3,"433":7,"434":2,"436":3,"437":6,"438":2,"439":2,"440":1,"441":8,"448":1,"466":1,"470":4,"484":3,"485":1,"606":1,"607":2,"609":1,"613":1,"614":3,"1248":1,"2229":1,"2230":1,"2235":1,"2237":1,"2238":2,"2241":2,"2244":3,"2245":2,"2247":2,"2249":2,"2353":1,"2422":1,"2431":1,"2437":1,"2442":1,"2454":1,"2458":1,"2461":2,"2463":1,"2465":1,"2466":1,"2467":1,"2468":1,"2573":1,"2577":4,"2723":1,"2725":2}}],["coating",{"2":{"2272":1}}],["coarser",{"2":{"2105":1}}],["coarse",{"2":{"102":2,"217":1}}],["coil",{"2":{"1573":1,"1577":1}}],["coworkers",{"2":{"1401":1,"1406":1}}],["cowfish",{"2":{"191":1}}],["coffee|",{"2":{"621":1}}],["coffee||make",{"2":{"621":1}}],["coffee",{"2":{"616":1,"621":1}}],["coseyfannitutti",{"2":{"2346":1}}],["cosmetic",{"2":{"2129":3}}],["cosmo",{"2":{"1279":1}}],["costing",{"2":{"1451":1,"2664":1}}],["cost",{"2":{"479":1,"1553":1,"1851":1,"2226":1,"2655":1,"2664":1,"2750":1}}],["cospad",{"2":{"102":2}}],["coding",{"0":{"453":1,"455":1,"555":1},"2":{"352":1,"454":1,"550":1,"555":2,"560":1,"1921":1,"2510":1,"2725":2}}],["coders",{"2":{"2750":1}}],["codepoints",{"2":{"2666":1}}],["code16",{"0":{"1370":4},"2":{"149":1,"176":1,"196":1,"1370":1,"1430":4,"1511":3,"1680":1,"1948":1,"2034":1,"2168":4,"2170":5,"2413":1,"2414":3,"2415":2}}],["codes",{"0":{"1870":1},"1":{"1871":1},"2":{"32":1,"176":1,"1332":3,"1385":2,"1406":1,"1792":1,"2112":1,"2183":1,"2263":1,"2398":2,"2440":1,"2490":1,"2701":1}}],["codebases",{"0":{"44":1,"59":1,"86":1,"102":1,"122":1,"143":1,"159":1,"168":1,"181":1,"197":1,"207":1,"217":1,"226":1,"241":1,"253":1,"270":1},"1":{"45":1,"60":1},"2":{"2752":1}}],["codebase",{"0":{"18":1,"113":1,"133":1},"2":{"18":1,"21":1,"35":1,"60":1,"86":1,"262":1,"455":1,"479":1,"483":1,"2564":2,"2719":1,"2754":1,"2757":1}}],["code",{"0":{"1":1,"4":1,"27":1,"33":1,"218":1,"220":1,"292":1,"480":1,"533":1,"562":1,"574":1,"575":1,"578":1,"581":1,"584":1,"589":1,"592":1,"603":1,"613":1,"614":1,"1330":1,"1342":1,"1366":1,"1367":1,"1368":1,"1369":1,"1376":1,"1792":1,"2089":1,"2152":1,"2199":1,"2206":1,"2434":1,"2503":1,"2504":1,"2507":1,"2511":1,"2512":1,"2513":1,"2742":1},"1":{"34":1,"575":1,"576":2,"577":2,"578":1,"579":2,"580":2,"581":1,"582":2,"583":2,"585":1,"586":1,"590":1,"591":1,"593":1,"594":1,"595":1,"1343":1,"1344":1,"1345":1,"1377":1,"1378":1,"1379":1,"1380":1,"1381":1,"1382":1,"1383":1,"1384":1,"1385":1,"2090":1,"2200":1,"2207":1,"2208":1,"2435":1,"2436":1,"2437":1,"2438":1,"2439":1,"2505":1,"2506":1,"2507":1,"2508":2,"2509":1,"2510":1,"2512":1,"2743":1,"2744":1,"2745":1,"2746":1,"2747":1,"2748":1,"2749":1},"2":{"2":1,"3":1,"10":1,"15":1,"21":1,"22":1,"24":1,"25":1,"28":1,"31":1,"49":2,"50":4,"57":2,"64":1,"65":1,"70":1,"74":2,"75":1,"76":1,"90":13,"92":1,"93":2,"94":2,"105":6,"112":1,"113":3,"114":11,"123":1,"125":7,"132":1,"133":5,"134":10,"149":6,"160":2,"173":1,"174":1,"175":3,"176":8,"185":7,"190":2,"191":5,"194":2,"199":2,"201":1,"206":1,"211":1,"215":1,"218":1,"220":1,"222":4,"229":1,"231":1,"236":5,"243":1,"245":1,"249":1,"266":4,"268":1,"272":1,"282":1,"291":1,"292":4,"303":2,"312":1,"316":1,"318":1,"331":1,"354":2,"384":1,"388":1,"400":3,"406":1,"407":1,"411":1,"430":1,"442":1,"445":2,"446":2,"447":2,"453":5,"454":2,"456":1,"457":1,"466":1,"469":1,"473":1,"478":1,"479":3,"480":1,"481":3,"482":4,"483":1,"496":1,"503":1,"504":1,"505":3,"517":1,"550":1,"556":2,"557":1,"560":1,"562":3,"563":1,"565":1,"567":1,"569":1,"574":1,"576":1,"582":1,"584":2,"586":1,"588":1,"590":2,"603":1,"607":1,"613":2,"614":1,"631":1,"643":2,"665":1,"688":1,"689":1,"691":1,"692":1,"700":2,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1175":2,"1196":2,"1213":2,"1245":1,"1250":1,"1252":1,"1253":1,"1263":1,"1265":1,"1270":1,"1279":1,"1283":1,"1300":1,"1302":2,"1303":3,"1312":1,"1313":3,"1316":1,"1317":1,"1326":2,"1332":1,"1341":1,"1342":1,"1344":1,"1351":1,"1353":1,"1360":3,"1364":1,"1367":1,"1368":4,"1369":1,"1375":4,"1376":1,"1380":1,"1384":2,"1385":1,"1399":1,"1400":1,"1445":1,"1446":1,"1447":1,"1448":2,"1453":1,"1497":2,"1499":1,"1500":1,"1523":1,"1559":1,"1560":5,"1573":1,"1605":1,"1630":1,"1633":1,"1656":1,"1716":2,"1717":1,"1791":1,"1814":1,"1817":1,"1821":1,"1836":1,"1849":1,"1853":2,"1854":2,"1859":1,"1871":1,"1876":1,"1877":1,"1878":4,"1880":3,"1921":1,"1948":1,"1954":1,"2034":1,"2035":1,"2047":1,"2060":1,"2090":1,"2130":1,"2134":1,"2138":1,"2141":1,"2149":3,"2152":1,"2157":1,"2169":11,"2170":1,"2171":4,"2181":4,"2182":3,"2183":7,"2184":3,"2196":1,"2197":1,"2198":1,"2200":2,"2206":1,"2208":1,"2209":1,"2223":1,"2226":1,"2242":1,"2257":1,"2258":1,"2259":1,"2260":1,"2261":2,"2263":7,"2286":1,"2295":1,"2301":2,"2306":1,"2309":2,"2384":3,"2401":6,"2406":1,"2408":1,"2411":1,"2413":1,"2414":2,"2418":1,"2430":1,"2433":1,"2440":1,"2485":2,"2492":5,"2501":2,"2503":8,"2506":2,"2507":1,"2509":1,"2510":4,"2512":5,"2513":6,"2524":2,"2525":1,"2553":1,"2566":8,"2567":1,"2569":1,"2577":1,"2581":2,"2589":2,"2605":1,"2629":2,"2631":2,"2656":1,"2709":2,"2710":3,"2713":1,"2718":1,"2719":1,"2723":1,"2728":1,"2729":1,"2743":1,"2744":2,"2751":1,"2752":1,"2757":5}}],["copper",{"2":{"2270":1}}],["copied",{"2":{"513":1,"2564":1}}],["copies",{"2":{"249":1,"1359":1}}],["copying",{"2":{"2425":1,"2469":1,"2576":1}}],["copyrighted",{"2":{"1398":1}}],["copyrights",{"2":{"559":1}}],["copyright",{"0":{"2309":1},"2":{"352":1,"1380":1,"2309":2,"2553":2,"2570":2,"2719":1}}],["copypasta",{"2":{"114":1,"1353":1}}],["copy",{"0":{"452":1},"2":{"31":1,"114":1,"191":1,"305":1,"452":1,"554":1,"1270":1,"1380":1,"1445":1,"2245":2,"2247":2,"2249":2,"2252":2,"2255":1,"2355":2,"2392":2,"2414":1,"2415":1,"2422":1,"2440":1,"2441":1,"2442":1,"2443":1,"2444":1,"2445":1,"2452":1,"2564":1,"2566":1,"2570":1,"2576":1,"2615":2}}],["covered",{"0":{"1260":1},"2":{"1234":1,"2348":1}}],["cover",{"2":{"683":1,"1258":1,"1804":1,"2263":1,"2560":1}}],["covers",{"2":{"528":1,"616":1,"1237":1,"1264":1,"1266":1,"1445":1,"1802":1,"2134":1,"2181":1,"2263":1,"2503":1,"2613":1}}],["covering",{"2":{"222":1,"556":1,"2483":1}}],["coverage",{"2":{"134":2,"236":1}}],["co",{"2":{"211":1,"701":1,"1958":1,"2672":1}}],["cocoa40",{"2":{"143":2}}],["coordinate",{"2":{"1537":2,"1725":1,"1946":1,"2577":2}}],["coordinates",{"2":{"100":2,"114":1,"176":1,"277":1,"1531":1,"1533":2,"1534":1,"1822":1,"1842":1,"2143":1,"2576":1}}],["cooperating",{"2":{"684":1}}],["cooler",{"2":{"2108":1}}],["cool",{"2":{"616":1,"621":5,"1376":2,"1377":2,"1729":10,"1952":10,"2108":1,"2272":1,"2273":2}}],["cook",{"2":{"143":2,"211":1}}],["coexist",{"2":{"98":1}}],["cozykeys",{"2":{"56":3}}],["col1",{"2":{"2311":13}}],["col0",{"2":{"2311":14}}],["col2row",{"2":{"502":3,"563":1,"580":3,"2231":2,"2238":2,"2519":2,"2557":1,"2689":1,"2693":2}}],["colons",{"2":{"2754":1}}],["colon",{"0":{"285":2},"2":{"2160":1,"2169":1,"2378":1,"2399":1}}],["coloured",{"2":{"1454":1}}],["colour",{"2":{"222":1,"1454":1}}],["color=false",{"2":{"2262":2}}],["colored",{"2":{"626":1}}],["colorizing",{"0":{"435":1},"2":{"432":1}}],["colorize",{"2":{"431":1,"432":1,"435":1}}],["colors",{"0":{"1953":1,"2058":1},"2":{"149":1,"214":1,"435":3,"1216":1,"1523":1,"1953":1,"1960":1,"2033":1,"2038":1,"2042":1,"2058":1,"2574":1,"2575":4,"2577":1,"2596":4}}],["color",{"0":{"647":1,"649":1,"675":1,"677":1,"741":1,"743":1,"768":1,"770":1,"800":1,"802":1,"832":1,"834":1,"867":1,"869":1,"901":1,"903":1,"935":1,"937":1,"969":1,"971":1,"1003":1,"1005":1,"1037":1,"1039":1,"1071":1,"1073":1,"1105":1,"1107":1,"1158":1,"1160":1,"1970":1,"1972":1,"2033":1},"1":{"648":1,"650":1,"676":1,"678":1,"742":1,"744":1,"769":1,"771":1,"801":1,"803":1,"833":1,"835":1,"868":1,"870":1,"902":1,"904":1,"936":1,"938":1,"970":1,"972":1,"1004":1,"1006":1,"1038":1,"1040":1,"1072":1,"1074":1,"1106":1,"1108":1,"1159":1,"1161":1,"1971":1,"1973":1},"2":{"114":1,"191":1,"199":1,"236":1,"435":10,"582":1,"593":2,"594":2,"647":1,"649":1,"664":1,"675":1,"677":1,"729":1,"730":1,"734":1,"737":1,"741":1,"743":1,"745":1,"747":1,"751":1,"755":1,"756":1,"760":1,"763":1,"768":1,"770":1,"772":1,"774":1,"778":1,"784":1,"785":1,"792":1,"795":1,"800":1,"802":1,"804":1,"806":1,"810":1,"816":1,"817":1,"822":1,"825":1,"832":1,"834":1,"836":1,"838":1,"842":1,"848":1,"849":1,"857":1,"860":1,"867":1,"869":1,"871":1,"873":1,"877":1,"883":1,"884":1,"891":1,"894":1,"901":1,"903":1,"905":1,"907":1,"911":1,"917":1,"918":1,"925":1,"928":1,"935":1,"937":1,"939":1,"941":1,"945":1,"951":1,"952":1,"959":1,"962":1,"969":1,"971":1,"973":1,"975":1,"979":1,"985":1,"986":1,"993":1,"996":1,"1003":1,"1005":1,"1007":1,"1009":1,"1013":1,"1019":1,"1020":1,"1027":1,"1030":1,"1037":1,"1039":1,"1041":1,"1043":1,"1047":1,"1053":1,"1054":1,"1061":1,"1064":1,"1071":1,"1073":1,"1075":1,"1077":1,"1081":1,"1087":1,"1088":1,"1095":1,"1098":1,"1105":1,"1107":1,"1109":1,"1111":1,"1115":1,"1143":1,"1144":1,"1148":1,"1151":1,"1158":1,"1160":1,"1162":1,"1164":1,"1168":1,"1212":2,"1216":2,"1217":1,"1332":3,"1826":4,"1944":1,"1949":2,"1950":1,"1951":2,"1952":2,"1953":1,"1957":3,"1958":4,"1959":4,"1960":1,"1970":1,"1972":1,"2018":1,"2031":2,"2033":2,"2036":3,"2040":1,"2047":1,"2052":1,"2058":1,"2262":2,"2289":1,"2574":2,"2575":6,"2576":11,"2577":7,"2597":1,"2695":1}}],["col",{"0":{"1603":1},"1":{"1604":1},"2":{"199":1,"222":1,"502":1,"511":3,"573":1,"580":4,"1252":8,"1547":1,"1552":1,"1604":1,"1725":3,"1822":1,"1946":3,"1958":4,"2131":2,"2143":1,"2155":1,"2231":1,"2238":1,"2689":2}}],["colemak",{"0":{"2630":1},"2":{"191":1,"370":2,"401":2,"1338":1,"1355":2,"1362":2,"1524":1,"2402":1,"2406":1,"2607":2,"2703":3}}],["coled",{"2":{"31":1,"34":1}}],["coln",{"2":{"176":3,"2168":1,"2378":1,"2399":1}}],["collectively",{"2":{"2479":1}}],["collection",{"2":{"1251":1}}],["collected",{"2":{"2419":1}}],["collect",{"2":{"1830":1}}],["collaborator",{"2":{"521":1,"561":1,"2563":1,"2567":1}}],["collaborators",{"2":{"163":1,"201":1,"341":2,"2313":1,"2563":1,"2564":2,"2567":2,"2569":1}}],["collisions",{"2":{"156":1,"167":1,"1344":1}}],["collision",{"2":{"134":1,"186":1,"689":1,"1242":1}}],["cols",{"2":{"111":1,"114":2,"502":1,"530":1,"580":2,"1290":1,"1359":2,"1405":1,"1591":1,"1725":2,"1792":1,"1946":2,"1958":1,"2155":1,"2164":1,"2401":1,"2406":3,"2423":1,"2519":1,"2557":3,"2558":1,"2566":1,"2689":1,"2747":1}}],["columnn",{"2":{"1496":1}}],["columner",{"2":{"241":2}}],["columns",{"0":{"2274":1},"2":{"211":1,"249":1,"453":1,"455":1,"502":3,"511":1,"1290":1,"1329":1,"1403":1,"1405":1,"2122":1,"2131":2,"2268":2,"2274":1,"2276":1,"2279":1,"2311":4,"2557":1,"2558":1,"2614":1,"2648":1,"2689":2}}],["column",{"0":{"1290":1},"2":{"55":1,"222":1,"266":1,"289":2,"580":2,"1495":2,"1496":1,"1497":1,"1604":1,"1612":1,"1614":1,"1728":4,"1817":1,"1822":2,"1949":4,"2122":1,"2141":1,"2143":2,"2155":4,"2268":1,"2274":5,"2276":2,"2279":2,"2311":16,"2401":1,"2519":2,"2558":1,"2614":1,"2686":1,"2693":1,"2730":1,"2745":1}}],["court",{"2":{"2144":1}}],["courtesy",{"2":{"562":1}}],["course",{"2":{"120":1,"123":1,"546":1,"1668":1,"2327":1,"2757":1}}],["couldn",{"0":{"2670":1}}],["could",{"0":{"1656":1},"2":{"211":1,"352":1,"374":1,"401":1,"414":1,"481":2,"628":1,"639":1,"641":1,"1329":1,"1336":1,"1338":1,"1370":1,"1383":1,"1384":2,"1395":1,"1447":1,"1451":1,"1511":1,"1519":1,"1523":1,"1562":2,"1803":1,"1848":1,"1878":2,"1923":1,"1939":1,"2118":1,"2280":1,"2325":1,"2409":1,"2411":2,"2473":1,"2491":1,"2577":1,"2605":2,"2670":1,"2735":2,"2740":1,"2746":1}}],["couple",{"2":{"145":1,"346":1,"1271":1,"1361":1,"1398":1,"1442":1,"1935":1,"2128":1,"2146":1,"2273":1,"2276":1,"2605":1}}],["coupled",{"2":{"48":1,"119":1,"131":1}}],["count=6",{"2":{"2300":1}}],["count=30",{"2":{"2300":1}}],["counting",{"2":{"2255":2,"2614":1}}],["countries",{"2":{"1339":1}}],["counts",{"2":{"236":2,"277":1,"1849":1,"1940":1,"2162":1}}],["counteract",{"2":{"1677":1,"2738":1}}],["counterparts",{"2":{"1370":1}}],["counterpart",{"2":{"1336":1}}],["counters",{"2":{"461":1,"1329":1}}],["counter",{"2":{"114":1,"336":1,"1469":1,"1560":1,"2162":1}}],["count",{"0":{"2214":1},"1":{"2215":1},"2":{"49":2,"70":1,"111":1,"112":1,"166":1,"183":6,"191":4,"199":1,"222":3,"236":4,"249":4,"292":2,"506":1,"611":2,"669":1,"684":1,"685":1,"689":1,"690":3,"734":2,"760":2,"792":2,"822":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1148":2,"1214":1,"1252":8,"1326":1,"1446":2,"1451":1,"1500":1,"1632":2,"1633":1,"1634":1,"1638":1,"1730":1,"1744":1,"1815":1,"1820":3,"1847":1,"1865":2,"1873":2,"1940":5,"1941":3,"1942":2,"1954":1,"1971":1,"2032":1,"2038":1,"2039":2,"2051":4,"2059":1,"2060":1,"2139":1,"2142":2,"2156":1,"2161":1,"2168":1,"2226":1,"2228":4,"2413":1,"2414":3,"2415":1,"2477":2,"2577":4,"2594":1,"2688":2,"2694":3,"2695":2}}],["corp",{"2":{"2450":1,"2453":2}}],["coral",{"2":{"1953":2,"2058":2}}],["corrupted",{"2":{"2327":1}}],["corruption",{"2":{"249":1,"2757":1}}],["corresponds",{"2":{"1451":1,"1794":1,"2150":1,"2169":1,"2347":1}}],["correspond",{"2":{"669":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1,"1633":1,"2354":1,"2397":1,"2686":1}}],["corresponding",{"2":{"118":1,"166":1,"430":1,"641":1,"661":1,"1129":1,"1268":1,"1300":1,"1431":1,"1451":1,"1529":1,"1817":1,"2147":1,"2263":1,"2268":1,"2278":1,"2311":1,"2567":1,"2575":1,"2596":2,"2599":1,"2600":1,"2702":1,"2735":1,"2736":1}}],["corrected",{"2":{"399":1,"1447":1,"1448":2,"2577":1}}],["correctness",{"2":{"263":1,"2567":1}}],["corrections",{"2":{"199":1,"266":1,"1440":2}}],["correction",{"2":{"49":1,"222":1,"236":1,"249":2,"1440":3,"1451":1,"1452":1}}],["correct",{"2":{"11":1,"114":2,"132":1,"134":1,"149":1,"176":4,"194":1,"199":2,"211":2,"222":2,"236":1,"249":2,"428":1,"537":1,"538":1,"566":2,"626":1,"627":1,"629":1,"661":1,"684":1,"1129":1,"1132":1,"1133":1,"1243":1,"1331":1,"1385":1,"1405":1,"1430":1,"1437":1,"1438":1,"1441":2,"1447":2,"1448":3,"1451":1,"1496":1,"1670":1,"1824":1,"1852":1,"1908":1,"1948":1,"2126":1,"2183":1,"2311":1,"2436":1,"2458":1,"2508":1,"2512":1,"2513":1,"2522":1,"2550":1,"2566":1,"2577":2}}],["correctly",{"2":{"11":1,"31":1,"34":1,"48":1,"73":1,"132":1,"191":2,"199":1,"263":2,"277":2,"323":1,"332":1,"377":1,"684":1,"1252":1,"1303":1,"1330":1,"1441":1,"1560":1,"1830":1,"2150":1,"2279":2,"2398":1,"2411":1,"2438":1,"2441":1,"2445":1,"2507":1,"2513":3,"2566":1,"2567":1,"2576":4}}],["cor65",{"2":{"249":1}}],["cor",{"2":{"211":1}}],["corner",{"2":{"1845":1,"2686":2}}],["corne",{"2":{"86":1,"92":1,"93":1,"191":1,"211":1}}],["cortex",{"2":{"50":1,"134":1,"191":1,"222":1,"2513":4,"2528":1}}],["cored",{"2":{"2266":1,"2274":2}}],["cores",{"2":{"1906":1}}],["core",{"0":{"1":1,"20":1,"46":1,"47":1,"61":1,"68":1,"91":1,"106":1,"129":1,"144":1,"171":1,"187":1,"198":1,"208":1,"227":1,"242":1,"261":1,"560":1,"568":1,"2567":1,"2601":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"48":1,"49":1,"50":1,"62":1,"63":1,"64":1,"69":1,"70":1,"92":1,"93":1,"94":1,"95":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"130":1,"131":1,"132":1,"133":1,"145":1,"146":1,"147":1,"148":1,"172":1,"173":1,"174":1,"175":1,"188":1,"189":1,"190":1,"209":1,"210":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"262":1,"263":1,"2602":1,"2603":1,"2604":1,"2605":1,"2606":1,"2607":1,"2608":1,"2609":1,"2610":1,"2611":1,"2612":1},"2":{"1":2,"75":2,"113":5,"114":7,"118":1,"130":1,"133":3,"134":6,"140":1,"146":1,"149":3,"160":5,"176":3,"179":1,"187":1,"191":2,"198":1,"199":4,"211":3,"213":1,"222":2,"236":2,"249":2,"266":1,"277":1,"341":2,"354":1,"400":3,"556":1,"559":1,"560":2,"568":1,"607":1,"654":1,"657":1,"1275":1,"1287":1,"1329":1,"1397":1,"1560":1,"1729":1,"1952":1,"2178":1,"2257":1,"2310":1,"2313":1,"2546":1,"2564":2,"2566":5,"2567":5,"2725":1,"2743":2,"2745":1}}],["congrats",{"2":{"2455":1}}],["congratulations",{"2":{"545":1}}],["conjunction",{"2":{"2171":1}}],["conu",{"2":{"1572":1}}],["conducted",{"2":{"2272":1}}],["conductors",{"2":{"1123":1,"1126":1,"1129":1}}],["conduct",{"0":{"562":1},"2":{"550":1,"562":2,"2713":1}}],["cond",{"2":{"473":1,"1572":1}}],["conditions",{"0":{"1939":1},"2":{"684":1,"1519":1,"1562":1,"1879":2,"1939":1,"2169":1}}],["conditional",{"0":{"473":1,"1313":1},"2":{"473":1}}],["condition",{"2":{"211":1,"277":1,"453":4,"1300":1,"1315":1,"1322":1,"2729":1}}],["concurrent",{"2":{"2574":1}}],["concurrently",{"2":{"2478":1}}],["concept",{"2":{"2523":1}}],["conceptually",{"2":{"2408":1}}],["concepts",{"2":{"113":1,"552":1,"2318":1,"2457":1,"2473":1,"2476":1,"2686":1,"2722":1,"2742":1}}],["conceived",{"2":{"2160":1}}],["concerns",{"2":{"2720":1}}],["concerning",{"2":{"1346":1}}],["concern",{"2":{"479":1,"2404":1,"2569":1}}],["concerned",{"2":{"263":1}}],["concrete",{"2":{"234":1}}],["confuse",{"2":{"2304":1,"2617":1}}],["confused",{"2":{"1359":1}}],["confusion",{"2":{"271":1,"1560":1,"2614":1}}],["confusingly",{"2":{"1273":1}}],["confusing",{"2":{"243":1,"347":1,"474":1,"482":1,"556":1,"2155":1,"2701":1}}],["conforms",{"2":{"2575":1}}],["conform",{"2":{"244":1,"560":1,"2292":1,"2305":1,"2559":1}}],["conf",{"2":{"134":1,"360":1,"1239":1,"2583":1}}],["conflicted",{"2":{"2477":1}}],["conflicting",{"0":{"1349":1},"2":{"2477":7}}],["conflicts",{"0":{"2476":1},"1":{"2477":1},"2":{"191":1,"341":2,"1383":1,"2150":1,"2472":1,"2477":1,"2478":1,"2564":4,"2566":1}}],["conflict",{"2":{"92":1,"191":1,"367":1,"455":1,"1467":1,"1501":1,"2111":1,"2476":2,"2477":7}}],["confirm",{"2":{"347":1,"626":1,"627":1,"635":1,"689":1,"2548":1}}],["confirmed",{"2":{"32":1,"2280":1}}],["confident",{"2":{"337":1,"2667":1}}],["confidence",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"182":1,"337":1,"2548":1,"2567":1}}],["conficts",{"2":{"114":1}}],["configparser",{"2":{"436":2}}],["configuring",{"0":{"331":1,"335":1,"496":1,"1415":1,"1802":1,"2150":1,"2512":1},"1":{"497":1,"498":1,"499":1,"500":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"1423":1,"1424":1,"1425":1,"1426":1,"1427":1,"1428":1,"1429":1,"1803":1,"1804":1,"1805":1,"1806":1,"1807":1,"1808":1},"2":{"580":1,"830":1,"865":1,"899":1,"933":1,"967":1,"1001":1,"1035":1,"1069":1,"1103":1,"1156":1,"1462":1,"2122":1,"2559":1,"2723":1}}],["configures",{"2":{"1399":2,"1504":1,"1570":2,"1573":3,"1633":1,"1840":3,"2128":1,"2675":1,"2676":1,"2677":1,"2678":1,"2679":1,"2680":1,"2681":1,"2682":1,"2683":1,"2684":1,"2685":1,"2687":1,"2688":1,"2690":1,"2691":1,"2692":1,"2694":1,"2695":1,"2696":1,"2697":1,"2698":1,"2700":1}}],["configured",{"0":{"505":1},"2":{"134":1,"236":1,"255":1,"256":1,"266":1,"433":1,"468":1,"502":1,"566":2,"606":1,"655":1,"656":1,"660":1,"684":1,"852":3,"1023":3,"1057":3,"1126":2,"1129":1,"1142":1,"1194":1,"1214":1,"1218":1,"1225":1,"1275":1,"1376":1,"1387":1,"1391":1,"1400":1,"1460":1,"1498":1,"1516":1,"1570":1,"1633":2,"1665":2,"1827":1,"1910":1,"1912":1,"1934":1,"1949":1,"1958":1,"2035":1,"2043":1,"2046":1,"2066":1,"2067":1,"2070":1,"2128":1,"2402":1,"2422":1,"2432":1,"2448":1,"2454":1,"2475":3,"2507":1,"2524":2,"2525":1,"2539":1,"2540":1,"2542":1,"2560":1,"2566":1,"2576":12,"2581":1,"2701":1,"2728":1,"2737":1,"2743":1}}],["configure",{"0":{"1506":1,"2421":1,"2500":1,"2511":1},"1":{"2501":1,"2502":1,"2512":1},"2":{"76":1,"112":2,"124":1,"154":1,"186":1,"195":1,"211":1,"221":1,"372":1,"515":1,"564":1,"565":1,"566":1,"661":1,"668":1,"702":1,"733":1,"749":1,"751":1,"758":1,"759":1,"776":1,"778":1,"787":1,"791":1,"808":1,"810":1,"819":1,"821":1,"840":1,"842":1,"851":1,"856":1,"875":1,"877":1,"886":1,"890":1,"909":1,"911":1,"920":1,"924":1,"943":1,"945":1,"954":1,"958":1,"977":1,"979":1,"988":1,"992":1,"1011":1,"1013":1,"1022":1,"1026":1,"1045":1,"1047":1,"1056":1,"1060":1,"1079":1,"1081":1,"1090":1,"1094":1,"1113":1,"1115":1,"1124":1,"1127":1,"1130":1,"1146":1,"1147":1,"1166":1,"1168":1,"1225":2,"1331":1,"1332":2,"1397":1,"1406":1,"1458":1,"1459":1,"1464":1,"1496":1,"1499":1,"1501":1,"1504":1,"1506":1,"1515":3,"1518":1,"1559":1,"1655":1,"1668":1,"1684":1,"1715":1,"1724":1,"1849":1,"1852":1,"1912":1,"1936":1,"1945":1,"2124":1,"2125":1,"2131":1,"2150":2,"2180":1,"2260":1,"2299":1,"2300":2,"2421":1,"2422":1,"2425":1,"2454":2,"2503":1,"2536":1,"2537":1,"2542":1,"2555":1,"2558":1,"2579":1,"2607":1,"2724":1,"2725":1,"2726":1,"2728":2}}],["configurability",{"2":{"1666":1}}],["configurables",{"2":{"124":1,"201":1,"213":1}}],["configurable",{"2":{"74":1,"109":1,"134":1,"152":1,"176":1,"198":1,"210":1,"211":1,"246":1,"496":1,"657":1,"683":1,"686":1,"689":1,"690":1,"691":1,"1499":1,"1845":1,"1951":1,"2524":1,"2566":1,"2574":1,"2577":2}}],["configuratorexport",{"2":{"370":1,"371":1}}],["configurator",{"0":{"517":1,"520":1,"528":1,"536":1,"544":1,"1234":1,"2427":1,"2613":1,"2614":1,"2616":1},"1":{"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"537":1,"538":1,"539":1,"540":1,"541":1,"542":1,"543":1,"545":1,"546":1,"547":1,"548":1,"549":1,"1235":1,"2614":1,"2615":1,"2616":1,"2617":1,"2618":1,"2619":1,"2620":1},"2":{"35":1,"114":1,"120":2,"154":1,"209":1,"349":1,"370":1,"371":2,"379":1,"388":1,"393":2,"394":2,"405":1,"441":2,"517":3,"519":2,"520":3,"521":1,"523":1,"524":1,"528":1,"529":3,"530":1,"532":1,"533":2,"534":1,"535":2,"536":1,"537":1,"541":1,"545":2,"549":1,"1234":1,"1258":1,"1286":1,"1354":1,"2259":2,"2279":1,"2295":1,"2298":1,"2313":1,"2314":1,"2427":6,"2436":1,"2437":1,"2455":1,"2549":1,"2566":2,"2613":1,"2614":4,"2615":3,"2616":3,"2617":1,"2619":1,"2671":1,"2686":1}}],["configurations",{"0":{"1432":1},"2":{"76":1,"265":1,"335":1,"374":1,"436":1,"495":1,"499":1,"560":1,"635":2,"655":1,"656":1,"684":1,"685":1,"694":1,"1432":1,"1811":1,"1836":1,"1841":1,"1853":1,"1854":1,"2168":2,"2284":1,"2513":1,"2519":1,"2543":1,"2718":1,"2739":1,"2754":4}}],["configuration",{"0":{"28":1,"112":1,"183":1,"412":1,"417":1,"418":1,"419":1,"423":1,"425":1,"426":1,"436":1,"437":1,"438":1,"439":1,"440":1,"441":1,"506":1,"604":1,"605":1,"640":1,"644":1,"666":1,"668":1,"681":1,"682":1,"683":1,"684":1,"685":1,"686":1,"687":1,"688":1,"689":1,"690":1,"691":1,"692":1,"693":1,"694":1,"702":1,"703":1,"731":1,"733":1,"757":1,"759":1,"786":1,"791":1,"818":1,"821":1,"850":1,"856":1,"885":1,"890":1,"919":1,"924":1,"953":1,"958":1,"987":1,"992":1,"1021":1,"1026":1,"1055":1,"1060":1,"1089":1,"1094":1,"1123":1,"1126":1,"1129":1,"1135":1,"1145":1,"1147":1,"1176":1,"1177":1,"1197":1,"1198":1,"1214":1,"1218":1,"1224":1,"1308":1,"1313":1,"1331":1,"1379":1,"1457":1,"1460":1,"1465":1,"1468":1,"1513":1,"1530":1,"1568":1,"1591":1,"1632":1,"1681":1,"1715":1,"1724":1,"1725":1,"1794":1,"1817":1,"1818":1,"1819":1,"1829":1,"1851":1,"1852":1,"1920":1,"1945":1,"1946":1,"2035":1,"2064":1,"2070":1,"2074":1,"2112":1,"2113":1,"2116":1,"2121":1,"2131":1,"2141":1,"2155":1,"2174":1,"2179":1,"2226":1,"2556":1,"2557":1,"2560":1,"2561":1,"2574":1,"2673":1,"2674":1,"2726":1},"1":{"419":1,"420":1,"421":1,"422":1,"437":1,"438":1,"439":1,"440":1,"441":1,"606":1,"607":1,"608":1,"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"667":1,"682":1,"683":2,"684":1,"685":1,"686":1,"687":1,"689":1,"690":1,"691":1,"692":1,"694":1,"704":1,"705":1,"732":1,"758":1,"787":1,"788":1,"789":1,"790":1,"819":1,"820":1,"851":1,"852":1,"853":1,"854":1,"855":1,"886":1,"887":1,"888":1,"889":1,"920":1,"921":1,"922":1,"923":1,"954":1,"955":1,"956":1,"957":1,"988":1,"989":1,"990":1,"991":1,"1022":1,"1023":1,"1024":1,"1025":1,"1056":1,"1057":1,"1058":1,"1059":1,"1090":1,"1091":1,"1092":1,"1093":1,"1136":1,"1137":1,"1146":1,"1215":1,"1216":1,"1217":1,"1219":1,"1220":1,"1221":1,"1222":1,"1223":1,"1225":1,"1226":1,"1227":1,"1228":1,"1229":1,"1230":1,"1332":1,"1333":1,"1458":1,"1459":1,"1461":1,"1462":1,"1463":1,"1464":1,"1466":1,"1467":1,"1469":1,"1470":1,"1514":1,"1515":1,"1516":1,"1517":1,"1518":1,"1519":1,"1520":1,"1521":1,"1522":1,"1523":1,"1524":1,"1525":1,"1633":1,"1634":1,"1682":1,"1683":1,"1684":1,"1685":1,"1818":1,"1819":1,"2117":1,"2118":1,"2119":1,"2120":1,"2122":1,"2123":1,"2124":1,"2125":1,"2126":1,"2127":1,"2128":1,"2129":1,"2130":1,"2131":1,"2180":1,"2558":1,"2561":1,"2562":1,"2727":1,"2728":1,"2729":1,"2730":1,"2731":1,"2732":1,"2733":1,"2734":1,"2735":1,"2736":1,"2737":1,"2738":1,"2739":1,"2740":1,"2741":1},"2":{"28":1,"45":1,"50":1,"65":1,"69":1,"74":1,"83":2,"114":2,"118":1,"134":2,"138":1,"141":1,"149":2,"176":1,"183":4,"194":3,"198":1,"199":1,"206":1,"211":1,"233":1,"236":3,"238":1,"251":1,"262":2,"335":2,"372":1,"401":1,"413":1,"414":2,"415":1,"416":3,"417":2,"418":2,"423":2,"424":1,"430":2,"436":4,"437":1,"438":1,"439":1,"440":3,"441":1,"445":1,"454":2,"496":4,"499":1,"505":1,"511":1,"515":1,"582":1,"604":1,"605":1,"606":1,"607":1,"657":1,"661":2,"663":1,"668":1,"684":2,"685":2,"687":3,"689":1,"690":1,"692":1,"694":2,"703":2,"704":1,"705":1,"733":1,"759":1,"791":1,"821":1,"850":4,"856":1,"890":1,"924":1,"953":2,"958":1,"987":2,"992":1,"1021":6,"1026":1,"1055":6,"1060":1,"1089":2,"1094":1,"1100":1,"1122":1,"1123":1,"1126":1,"1127":1,"1129":2,"1130":1,"1135":1,"1142":1,"1147":1,"1177":2,"1198":1,"1225":1,"1226":1,"1230":2,"1308":1,"1316":1,"1317":1,"1379":1,"1398":1,"1415":1,"1463":1,"1469":1,"1470":1,"1513":1,"1518":2,"1560":1,"1562":2,"1714":1,"1716":1,"1725":1,"1773":1,"1794":2,"1802":1,"1814":1,"1817":1,"1842":2,"1852":4,"1946":1,"1949":1,"2018":1,"2032":1,"2052":1,"2064":1,"2112":1,"2129":1,"2131":1,"2155":1,"2169":1,"2277":1,"2299":1,"2416":1,"2454":1,"2468":1,"2507":1,"2513":2,"2522":1,"2541":1,"2542":1,"2543":1,"2548":1,"2555":1,"2560":1,"2566":12,"2671":2,"2688":1,"2695":1,"2724":1,"2728":1}}],["configs",{"2":{"50":1,"77":1,"191":1,"199":1,"249":2,"360":1,"1851":3}}],["config",{"0":{"69":1,"77":1,"83":1,"372":1,"416":1,"501":1,"659":1,"1379":1,"1399":1,"1639":1,"1730":1,"1868":1,"1954":1,"2261":1,"2299":1,"2706":1},"1":{"417":1,"418":1,"419":1,"420":1,"421":1,"422":1,"423":1,"424":1,"502":1,"503":1,"504":1,"505":1,"506":1,"507":1,"508":1,"509":1,"510":1,"511":1,"660":1,"1640":1},"2":{"4":2,"14":1,"25":1,"28":1,"31":2,"34":2,"49":1,"50":1,"70":12,"74":1,"75":1,"76":1,"77":2,"83":2,"92":1,"93":2,"95":2,"114":5,"119":1,"133":2,"134":3,"149":1,"160":4,"169":2,"170":2,"176":4,"183":6,"184":2,"191":10,"199":21,"201":1,"211":16,"222":3,"224":1,"236":10,"246":1,"249":27,"262":2,"266":5,"273":1,"277":2,"282":1,"335":3,"370":2,"372":5,"401":1,"412":1,"413":1,"414":1,"415":1,"416":1,"417":2,"419":1,"420":1,"421":1,"422":1,"423":1,"424":1,"429":1,"430":4,"436":4,"437":5,"438":2,"439":2,"440":2,"456":1,"496":2,"498":1,"499":1,"501":2,"520":1,"588":1,"601":1,"606":3,"607":2,"608":1,"610":4,"613":4,"614":4,"644":1,"657":1,"658":1,"661":2,"666":1,"667":1,"683":1,"684":2,"685":2,"686":1,"689":2,"690":2,"691":2,"694":2,"702":1,"703":1,"704":1,"705":1,"731":1,"757":1,"758":1,"786":1,"787":1,"788":1,"789":1,"790":1,"818":1,"819":1,"820":1,"850":1,"851":1,"852":1,"853":1,"854":1,"855":1,"885":1,"886":1,"887":1,"888":1,"889":1,"919":1,"920":1,"921":1,"922":1,"923":1,"953":1,"954":1,"955":1,"956":1,"957":1,"987":1,"988":1,"989":1,"990":1,"991":1,"1021":1,"1022":1,"1023":1,"1024":1,"1025":1,"1055":1,"1056":1,"1057":1,"1058":1,"1059":1,"1089":1,"1090":1,"1091":1,"1092":1,"1093":1,"1124":1,"1127":1,"1130":1,"1132":1,"1133":1,"1134":1,"1135":1,"1137":1,"1138":1,"1142":1,"1145":1,"1146":1,"1177":3,"1198":1,"1214":1,"1215":1,"1216":1,"1217":1,"1225":1,"1227":1,"1228":1,"1235":1,"1236":1,"1240":1,"1242":1,"1253":1,"1276":1,"1294":1,"1316":1,"1320":1,"1326":1,"1328":1,"1332":21,"1346":1,"1376":1,"1379":3,"1387":1,"1390":1,"1391":1,"1392":1,"1393":2,"1394":1,"1395":1,"1396":1,"1397":1,"1398":1,"1400":1,"1401":1,"1402":1,"1403":2,"1404":1,"1405":1,"1406":1,"1414":1,"1415":2,"1416":1,"1431":1,"1435":2,"1457":1,"1458":1,"1459":1,"1492":1,"1495":1,"1496":1,"1500":2,"1501":1,"1503":1,"1504":1,"1513":1,"1518":1,"1524":1,"1530":2,"1547":1,"1553":1,"1554":1,"1555":1,"1557":1,"1558":1,"1559":1,"1568":1,"1570":1,"1572":1,"1575":1,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"1591":1,"1632":1,"1633":1,"1634":1,"1675":1,"1677":2,"1682":1,"1683":1,"1684":1,"1685":1,"1714":1,"1715":2,"1725":4,"1728":1,"1789":1,"1790":1,"1792":2,"1794":1,"1803":1,"1804":1,"1805":1,"1806":1,"1807":1,"1817":1,"1830":1,"1834":1,"1835":1,"1836":1,"1845":1,"1846":1,"1847":1,"1849":2,"1851":2,"1863":1,"1866":2,"1867":1,"1878":1,"1904":1,"1905":1,"1906":1,"1907":1,"1908":1,"1913":1,"1914":2,"1920":1,"1932":1,"1946":4,"1949":1,"1950":1,"1958":2,"1959":1,"2032":1,"2035":1,"2041":1,"2042":1,"2044":2,"2045":1,"2046":1,"2059":2,"2060":1,"2074":1,"2103":1,"2112":1,"2124":2,"2125":2,"2126":1,"2127":2,"2128":1,"2129":1,"2145":1,"2153":1,"2154":1,"2155":3,"2157":1,"2161":1,"2171":1,"2174":3,"2179":1,"2180":1,"2182":1,"2183":1,"2231":2,"2238":2,"2259":2,"2260":1,"2261":7,"2263":5,"2296":1,"2299":23,"2402":1,"2421":3,"2435":1,"2437":1,"2438":1,"2443":1,"2444":1,"2445":1,"2490":1,"2491":1,"2524":1,"2530":1,"2533":1,"2539":1,"2541":1,"2544":1,"2561":2,"2562":1,"2566":4,"2572":1,"2574":1,"2576":10,"2577":2,"2584":1,"2607":1,"2671":1,"2697":4,"2706":3,"2707":1,"2708":1,"2709":2,"2711":2,"2725":1,"2727":2,"2728":3,"2735":2,"2736":2,"2737":2,"2738":4}}],["connector",{"2":{"2118":1,"2339":1}}],["connects",{"0":{"1551":1},"2":{"1547":1,"2311":1}}],["connectivity",{"2":{"2513":1,"2516":1}}],["connecting",{"0":{"334":1},"2":{"334":1,"852":1,"1023":1,"1057":1,"1236":1,"2118":1,"2272":2,"2328":1,"2432":1}}],["connection",{"2":{"92":1,"511":1,"515":1,"1121":1,"1122":1,"1126":1,"1491":1,"1819":3,"2059":2,"2114":1,"2118":2,"2128":4,"2131":1,"2132":1,"2270":1,"2398":2,"2411":2,"2490":1,"2516":1,"2517":1,"2697":3}}],["connected",{"2":{"92":1,"149":1,"182":1,"249":1,"502":1,"506":1,"644":2,"656":1,"661":1,"666":3,"674":1,"680":1,"731":1,"734":1,"757":1,"758":1,"760":1,"786":1,"787":1,"792":1,"818":1,"819":1,"822":1,"850":1,"851":1,"857":1,"885":1,"886":1,"891":1,"919":1,"920":1,"925":1,"953":1,"954":1,"959":1,"987":1,"988":1,"993":1,"1021":1,"1022":1,"1027":1,"1055":1,"1056":1,"1061":1,"1089":1,"1090":1,"1095":1,"1129":2,"1145":1,"1146":1,"1148":1,"1176":1,"1214":1,"1223":1,"1236":1,"1378":1,"1387":1,"1388":1,"1399":3,"1458":1,"1459":1,"1471":2,"1492":1,"1551":1,"1573":2,"1574":1,"1591":4,"1730":1,"1819":1,"1834":3,"1835":1,"1842":3,"1846":2,"1848":3,"1849":4,"1954":1,"2032":6,"2061":1,"2114":1,"2120":1,"2125":1,"2127":3,"2128":2,"2131":1,"2141":3,"2237":1,"2268":1,"2311":4,"2353":1,"2450":1,"2453":1,"2518":1,"2521":1,"2526":1,"2529":2,"2534":1,"2557":1,"2558":1,"2559":1,"2675":2,"2676":2,"2677":2,"2682":1,"2684":2,"2685":5,"2689":3,"2692":2,"2693":4,"2697":1,"2700":1}}],["connect",{"0":{"1552":1},"2":{"82":1,"92":1,"375":2,"702":1,"1176":1,"1197":1,"1234":1,"1236":1,"1491":1,"1547":1,"1552":1,"2116":1,"2119":1,"2120":1,"2273":1,"2274":1,"2275":2,"2279":1,"2328":1,"2330":1,"2332":1,"2334":1,"2339":1,"2352":1,"2353":1}}],["cons",{"2":{"2181":1,"2270":1}}],["consecutive",{"2":{"1839":5,"2172":1}}],["consequence",{"2":{"1336":1,"1441":1,"1499":1}}],["consequently",{"2":{"598":1}}],["consult",{"2":{"327":1,"641":1,"656":1,"689":1,"697":1,"2567":1}}],["consulted",{"2":{"157":1}}],["consuming",{"2":{"2428":1}}],["consumes",{"2":{"1821":1}}],["consume",{"2":{"1287":1,"1326":1}}],["consumed",{"2":{"529":1}}],["consumer",{"2":{"231":1,"236":1,"1273":1,"1279":1,"2136":1,"2393":1}}],["consumer2rn42",{"2":{"50":1}}],["consumer2bluefruit",{"2":{"50":1}}],["consumption",{"2":{"134":1,"211":1,"502":1,"589":1,"2299":3}}],["consist",{"2":{"2148":1}}],["consisting",{"2":{"1356":1,"2294":1}}],["consists",{"2":{"304":1,"413":1,"2301":1,"2686":1}}],["consistency",{"2":{"50":1,"114":2,"160":1,"183":1,"233":1,"453":1,"462":1,"470":1,"557":1,"564":1,"2564":2}}],["consistently",{"2":{"94":1,"176":2,"190":1,"191":1,"1216":1}}],["consistent",{"2":{"49":1,"191":1,"199":1,"453":1,"502":1,"597":1,"615":1,"2576":1,"2674":1}}],["considers",{"2":{"2735":1}}],["considering",{"2":{"1503":1,"2596":1}}],["considerations",{"0":{"1287":1,"2118":1,"2132":1},"1":{"2133":1},"2":{"2515":1}}],["considerably",{"2":{"113":1}}],["consider",{"0":{"354":1},"2":{"354":1,"391":1,"481":1,"554":1,"560":1,"1330":1,"1527":1,"2276":1,"2277":1,"2305":1,"2523":1,"2524":1,"2525":1,"2551":1,"2552":1,"2712":1}}],["considered",{"2":{"241":1,"253":1,"270":1,"350":2,"510":1,"600":1,"1325":1,"1326":1,"1506":1,"1651":1,"1836":3,"1844":2,"1915":1,"2228":1,"2295":1,"2569":1,"2577":1,"2592":1,"2596":1,"2735":1,"2736":1}}],["construction",{"2":{"2576":2}}],["constructed",{"2":{"1923":1}}],["constraint",{"2":{"2718":1}}],["constraints",{"0":{"2718":1},"2":{"123":1,"134":1,"153":1,"660":1,"1227":1,"2182":1,"2704":1,"2718":2,"2719":1}}],["constraining",{"2":{"1340":1}}],["constrain",{"2":{"176":1,"374":1,"1441":1,"1849":3}}],["constrained",{"2":{"123":1,"2585":1,"2592":1,"2704":1}}],["const",{"0":{"1188":1,"1206":1,"1607":1,"1609":1,"1613":1,"2081":1,"2083":1,"2085":1,"2087":1,"2201":1},"1":{"1189":1,"1190":1,"1207":1,"1608":1,"1610":1,"1614":1,"2082":1,"2084":1,"2086":1,"2088":1,"2202":1},"2":{"247":1,"272":1,"530":1,"1189":1,"1207":1,"1359":2,"1440":1,"1447":1,"1448":2,"1508":1,"1509":1,"1510":1,"1511":6,"1523":1,"1548":1,"1559":1,"1608":1,"1610":1,"1614":1,"1657":1,"1663":1,"1665":6,"1666":3,"1668":1,"1792":1,"1814":1,"1815":1,"1822":13,"2040":7,"2042":6,"2044":3,"2082":1,"2084":1,"2086":1,"2088":1,"2130":5,"2138":1,"2139":1,"2143":10,"2157":1,"2164":1,"2181":1,"2202":1,"2401":1,"2406":1,"2577":7}}],["constantly",{"2":{"2147":1}}],["constant",{"0":{"1805":1},"2":{"191":1,"198":1,"460":1,"1363":1,"1411":1,"1499":1,"1802":3,"1803":2,"1805":2,"1806":1,"1807":1,"2587":2,"2594":2,"2728":1}}],["constants",{"0":{"317":1},"2":{"76":1,"188":1,"191":1,"317":10,"641":1,"1336":1,"1499":1,"1677":1,"2738":1}}],["constellation",{"2":{"102":3,"114":1,"211":1}}],["consoles",{"2":{"82":1,"375":1}}],["console",{"0":{"82":1,"375":1,"1255":1},"2":{"50":1,"70":1,"82":2,"93":1,"111":1,"114":4,"119":2,"134":3,"249":1,"277":1,"375":9,"515":2,"516":1,"566":1,"1138":1,"1245":1,"1248":1,"1252":2,"1254":2,"1255":2,"1287":1,"1298":1,"1341":2,"1448":1,"1498":1,"1529":1,"1530":7,"1830":1,"1843":1,"1863":1,"2263":1,"2574":2,"2755":1}}],["consolidating",{"2":{"251":1}}],["consolidation",{"0":{"42":1,"221":1},"2":{"50":2,"198":1,"224":1,"233":1,"266":1,"2567":1}}],["consolidated",{"0":{"1385":1},"2":{"220":1}}],["consolidate",{"0":{"204":1},"2":{"191":1,"199":1,"204":1,"211":1,"222":1,"236":1,"249":1,"1385":1}}],["consolidates",{"2":{"50":1}}],["contiguous",{"2":{"2060":1}}],["continous",{"2":{"1572":2}}],["continually",{"2":{"1287":1}}],["continuations",{"2":{"199":1}}],["continuing",{"2":{"347":1}}],["continued",{"2":{"238":1,"262":1}}],["continues",{"2":{"133":1,"251":1,"1503":1,"1506":1,"1851":1,"2152":1,"2477":1,"2704":1}}],["continue",{"2":{"64":1,"160":1,"240":1,"246":1,"354":1,"1359":1,"1506":2,"1779":1,"1785":1,"1808":1,"2024":1,"2030":1,"2113":1,"2183":1,"2437":1,"2477":2,"2566":1}}],["continuously",{"2":{"1855":1}}],["continuous",{"0":{"1580":1},"2":{"32":1,"1572":4,"1580":1,"1851":1,"2051":2}}],["cont",{"2":{"1572":1}}],["contoller",{"2":{"1126":1}}],["contacts",{"2":{"1326":1,"2274":1,"2279":1,"2311":1}}],["contact",{"0":{"1325":2},"1":{"1326":2,"1327":2,"1328":2,"1329":2,"1330":2},"2":{"537":1,"1325":5,"1537":4,"1545":1,"1546":2,"1851":1,"2272":1,"2273":3,"2311":1}}],["contained",{"2":{"428":1,"609":1,"1729":1,"1952":1,"2671":1}}],["container",{"2":{"211":1,"627":1,"628":1,"2252":1,"2437":1,"2440":1,"2589":1,"2597":1}}],["contains",{"2":{"374":3,"496":2,"498":1,"500":1,"573":1,"671":1,"736":1,"762":1,"794":1,"824":1,"859":1,"893":1,"927":1,"961":1,"995":1,"1029":1,"1063":1,"1097":1,"1150":1,"1210":1,"1212":1,"1284":4,"1346":3,"1536":1,"1637":1,"1655":1,"1849":1,"2031":1,"2148":1,"2152":1,"2272":1,"2298":1,"2347":1,"2441":1,"2480":1,"2491":1,"2566":1,"2585":2,"2588":1,"2589":1,"2590":2,"2592":2,"2597":1,"2599":1,"2615":3,"2671":2,"2686":2,"2688":1,"2695":1}}],["contain",{"2":{"236":1,"268":1,"485":1,"522":1,"529":3,"641":1,"661":1,"1346":1,"1493":1,"1573":1,"1697":1,"1923":1,"2181":1,"2297":1,"2438":1,"2556":1,"2564":2,"2589":1,"2754":1}}],["containing",{"0":{"361":1},"2":{"156":1,"191":2,"211":1,"265":1,"316":1,"416":1,"505":1,"1612":1,"1614":1,"1638":1,"1921":1,"1922":1,"1923":1,"2170":1,"2201":1,"2325":1,"2423":1,"2448":1,"2566":1,"2567":1,"2585":1,"2592":1,"2599":1,"2702":1,"2753":1}}],["context",{"2":{"597":1,"1121":1,"1668":1,"1670":4,"2355":2,"2392":1,"2404":1}}],["contexts",{"2":{"481":1}}],["content",{"0":{"2282":1},"1":{"2283":1},"2":{"149":1,"266":1,"295":1,"296":1,"297":1,"298":1,"299":5,"300":1,"314":1,"335":1,"684":1,"1254":1,"1385":1,"1814":1,"1816":2,"1908":1,"2140":2,"2282":1,"2435":1,"2437":1,"2477":1,"2508":1,"2584":2}}],["contents",{"2":{"50":1,"230":1,"554":2,"616":1,"617":2,"1680":1,"1822":3,"2042":1,"2059":1,"2143":1,"2349":1,"2406":1,"2477":1,"2564":1,"2576":2,"2587":1,"2594":1,"2595":1,"2615":2}}],["contrast",{"2":{"1678":1,"2036":1,"2136":1,"2141":2}}],["control+click",{"2":{"2508":1}}],["control+shift",{"2":{"1677":1,"2738":1}}],["control+shift+escape",{"2":{"1568":1}}],["control+a",{"2":{"1361":1}}],["control+alt+delete",{"2":{"1299":1}}],["control+right",{"2":{"626":1}}],["controls",{"0":{"1665":1},"2":{"515":1,"630":1,"667":1,"790":1,"855":1,"889":1,"923":1,"957":1,"991":1,"1025":1,"1059":1,"1093":1,"1136":1,"1312":1,"1416":1,"1457":1,"1459":1,"1518":3,"1630":1,"1715":5,"1879":1,"1949":2,"2128":1,"2423":1,"2574":2,"2577":1,"2635":1}}],["controllable",{"2":{"430":1,"1459":1}}],["controlling",{"2":{"166":1,"664":1,"755":1,"784":1,"816":1,"848":1,"883":1,"917":1,"951":1,"985":1,"1019":1,"1053":1,"1087":1,"1143":1,"1670":1,"1671":1,"1867":1}}],["controlled",{"2":{"45":1,"589":1,"601":1,"1574":1,"1675":1,"1851":1,"1951":1,"2063":1,"2490":1,"2577":4}}],["controllerwords",{"2":{"191":1}}],["controllerworks",{"2":{"191":1}}],["controllers",{"2":{"50":1,"134":1,"211":1,"506":1,"661":1,"1126":1,"1310":1,"1315":1,"1322":1,"1788":1,"1821":1,"1837":1,"2032":1,"2042":1,"2114":2,"2116":1,"2118":2,"2126":5,"2131":1,"2275":1,"2545":1}}],["controller",{"0":{"1903":1,"2275":1},"1":{"2276":1},"2":{"36":2,"50":1,"92":1,"93":1,"114":1,"134":1,"176":2,"204":1,"210":1,"211":2,"222":2,"659":1,"1128":1,"1234":1,"1238":1,"1331":1,"1378":1,"1403":1,"1554":1,"1630":1,"1791":1,"1817":1,"1820":1,"1828":2,"1838":1,"1841":1,"1849":1,"1902":1,"1903":1,"2118":1,"2124":2,"2125":1,"2126":6,"2131":2,"2134":1,"2175":1,"2249":1,"2268":1,"2269":2,"2271":1,"2275":1,"2276":5,"2278":1,"2280":1,"2311":2,"2330":1,"2332":1,"2334":1,"2427":2,"2514":1,"2518":2,"2521":2,"2576":2,"2577":1,"2700":1,"2704":1,"2712":1}}],["control",{"0":{"265":1,"275":1,"667":1,"695":1,"749":1,"751":1,"754":1,"776":1,"778":1,"782":1,"790":1,"840":1,"842":1,"846":1,"855":1,"875":1,"877":1,"881":1,"889":1,"909":1,"911":1,"915":1,"923":1,"943":1,"945":1,"949":1,"957":1,"977":1,"979":1,"983":1,"991":1,"1025":1,"1059":1,"1093":1,"1166":1,"1168":1,"1172":1,"1291":1,"1791":1,"1808":1,"1872":1,"1873":1,"1875":1,"1878":1,"1911":1},"1":{"696":1,"697":1,"698":1,"750":1,"752":1,"777":1,"779":1,"783":1,"841":1,"843":1,"847":1,"876":1,"878":1,"882":1,"910":1,"912":1,"916":1,"944":1,"946":1,"950":1,"978":1,"980":1,"984":1,"1167":1,"1169":1,"1173":1,"1873":1,"1874":1,"1875":1,"1876":2,"1877":2,"1878":1},"2":{"63":1,"114":1,"149":1,"195":1,"199":2,"231":1,"236":3,"249":1,"265":1,"268":1,"275":1,"277":1,"430":1,"431":1,"435":2,"466":1,"514":1,"515":2,"566":1,"610":1,"626":2,"630":1,"666":1,"695":2,"696":1,"749":2,"751":2,"754":1,"776":2,"778":2,"782":1,"786":1,"789":1,"840":2,"842":2,"846":1,"850":1,"854":1,"875":2,"877":2,"881":1,"885":1,"888":1,"909":2,"911":2,"915":1,"919":1,"922":1,"943":2,"945":2,"949":1,"953":1,"956":1,"977":2,"979":2,"983":1,"987":1,"990":1,"1021":1,"1024":1,"1055":1,"1058":1,"1089":1,"1092":1,"1166":2,"1168":2,"1172":1,"1195":1,"1212":1,"1230":1,"1234":1,"1239":1,"1291":2,"1299":7,"1300":3,"1332":1,"1356":1,"1361":2,"1370":1,"1377":1,"1385":1,"1399":4,"1404":1,"1411":1,"1416":1,"1423":1,"1454":1,"1459":1,"1464":1,"1498":1,"1568":1,"1582":1,"1665":1,"1716":1,"1723":1,"1791":1,"1808":2,"1832":1,"1836":1,"1867":1,"1872":1,"1876":1,"1878":1,"1912":1,"1944":1,"1954":3,"2031":2,"2035":2,"2040":1,"2062":1,"2063":1,"2108":1,"2109":4,"2110":2,"2150":1,"2161":1,"2169":1,"2170":1,"2171":1,"2183":1,"2226":2,"2263":2,"2272":1,"2290":1,"2305":1,"2348":1,"2355":7,"2356":1,"2370":17,"2373":9,"2374":9,"2382":2,"2390":2,"2393":4,"2396":17,"2410":15,"2411":2,"2450":1,"2490":1,"2556":1,"2572":1,"2652":1,"2676":1,"2699":1,"2705":2,"2709":1,"2727":1,"2735":1,"2736":1,"2737":1,"2738":1}}],["contributor",{"2":{"2617":1}}],["contributors",{"2":{"163":1,"550":2,"2566":1}}],["contribution",{"0":{"554":1},"2":{"550":1,"554":1,"2552":1}}],["contributions",{"2":{"550":1,"554":1,"556":1}}],["contributing",{"2":{"354":1,"557":1,"2255":1,"2472":2,"2568":1}}],["contribute",{"0":{"550":1},"1":{"551":1},"2":{"284":1,"374":1,"429":1,"483":1,"550":1,"552":1,"556":1,"2183":1,"2292":1,"2317":2}}],["contributed",{"2":{"123":1,"2160":1,"2303":1}}],["contrib",{"0":{"10":1,"359":1,"361":1},"2":{"10":2,"69":1,"108":1,"114":2,"134":2,"160":1,"163":1,"176":4,"191":2,"199":1,"222":1,"249":1,"349":1,"357":1,"359":2,"360":1,"495":1,"2255":1,"2546":3,"2549":1,"2552":2}}],["convenience",{"2":{"2075":1,"2410":1,"2577":1}}],["convenient",{"2":{"1503":1,"1721":1,"1851":1,"1932":1,"2492":1,"2503":1}}],["conveniently",{"2":{"1451":1}}],["convention",{"2":{"249":1,"532":1,"1326":5,"2479":1,"2535":1,"2565":1}}],["conventions",{"0":{"4":1,"453":1,"455":1,"555":1},"2":{"134":2,"243":1,"352":1,"454":1,"550":1,"555":2,"557":1,"560":1,"1326":2,"2510":1,"2725":2}}],["convey",{"2":{"188":1,"435":1}}],["conversation",{"2":{"485":1,"609":1}}],["conversions",{"2":{"65":1,"77":1,"189":1,"266":25,"1314":1}}],["conversion",{"0":{"1823":1,"2530":1},"2":{"49":1,"172":1,"211":3,"636":1,"657":1,"658":1,"1217":1}}],["converts",{"2":{"167":1,"408":1,"409":1,"410":1,"1959":1,"2575":3,"2615":1}}],["converters",{"0":{"172":1,"189":1,"1310":1,"1311":1},"1":{"1311":1,"1312":1,"1313":1,"1314":1,"1315":1,"1316":1,"1317":1,"1318":1,"1319":1,"1320":1,"1321":1,"1322":1,"1323":1,"1324":1},"2":{"160":2,"172":1,"176":2,"189":4,"191":2,"199":1,"1311":1,"2427":1}}],["converter",{"0":{"271":1},"2":{"114":1,"133":1,"134":1,"160":2,"176":4,"181":2,"189":2,"191":3,"199":3,"207":3,"211":1,"249":1,"271":1,"277":1,"630":1,"1312":1,"1313":1,"1315":1,"1316":1,"1317":1,"1322":1,"1570":1,"1589":1,"2576":1,"2615":1,"2617":1}}],["converted",{"2":{"22":1,"50":1,"201":1,"249":1,"384":1,"388":1,"611":1,"1332":1,"1492":1,"2440":1,"2566":1,"2575":1,"2620":1}}],["convert",{"0":{"408":1,"410":1},"2":{"93":1,"114":1,"134":1,"149":4,"153":1,"160":3,"172":1,"176":1,"211":2,"236":3,"266":3,"277":2,"405":1,"1217":1,"1312":4,"1313":2,"1315":39,"1316":1,"1322":15,"1336":1,"2076":1,"2530":2,"2573":1,"2575":4,"2577":2,"2615":2,"2710":1}}],["converting",{"0":{"21":1},"2":{"153":1,"189":1,"251":1,"409":1,"1310":1,"1453":1,"2575":2}}],["com4",{"2":{"2513":1}}],["comx",{"2":{"2347":1}}],["com>",{"2":{"2309":4}}],["comfortably",{"2":{"1684":1}}],["comfortable",{"2":{"613":1,"1929":1,"2169":1,"2255":1,"2727":1}}],["comformable",{"2":{"606":1}}],["coming",{"2":{"228":1,"1234":4,"1518":1,"1831":1,"2311":1}}],["come",{"2":{"479":1,"1294":1,"2031":1,"2152":1,"2178":1,"2240":1,"2242":1,"2243":1,"2272":1,"2326":1}}],["comet46",{"2":{"143":2,"149":1,"176":1}}],["comes",{"2":{"99":1,"233":1,"435":1,"458":1,"623":1,"1392":1,"1412":1,"1578":1,"1672":1,"2130":1,"2230":1,"2235":1,"2279":1,"2429":1,"2457":1,"2496":1,"2577":1}}],["comb",{"2":{"231":1,"1527":5}}],["combination",{"2":{"483":1,"484":1,"502":1,"606":1,"626":1,"639":2,"1336":1,"1501":3,"1508":1,"1529":1,"1530":1,"1559":1,"1655":1,"1659":1,"1670":2,"1676":1,"1849":1,"2502":1}}],["combinations",{"2":{"99":1,"656":1,"698":1,"1312":1,"1568":1,"1655":2,"1676":1,"1811":1,"1932":1,"1939":1,"2228":1,"2262":1,"2410":1,"2490":1}}],["combining",{"2":{"176":1,"516":1,"1300":1,"1431":1,"2231":1,"2238":1,"2702":1}}],["combines",{"2":{"1429":1,"1515":1}}],["combinedmap",{"2":{"2153":1}}],["combined",{"0":{"1806":1,"1862":1},"2":{"176":1,"496":1,"516":3,"1335":1,"1553":1,"1802":1,"1806":3,"1807":1,"1852":2,"1854":9,"1862":2,"1864":1,"1929":1,"2031":1,"2153":2,"2270":1,"2344":1,"2349":1,"2671":2}}],["combinedkeys",{"2":{"114":1}}],["combine",{"2":{"64":1,"249":1,"424":1,"459":1,"606":1,"1299":1,"1361":1,"1854":2,"1862":1,"1912":1,"2042":1,"2410":1}}],["combo\`",{"2":{"1519":1}}],["combo2",{"2":{"1508":2,"1509":1,"1510":2}}],["combo1",{"2":{"1508":2,"1509":1,"1510":2}}],["combos",{"0":{"1508":1,"1510":1,"1516":1,"1524":1,"1676":1},"1":{"1509":1,"1510":1,"1511":1,"1512":1,"1513":1,"1514":1,"1515":1,"1516":1,"1517":1,"1518":1,"1519":1,"1520":1,"1521":1,"1522":1,"1523":1,"1524":1,"1525":2,"1526":1,"1527":1},"2":{"46":1,"98":3,"114":2,"176":1,"211":1,"505":2,"1508":1,"1509":1,"1510":3,"1511":5,"1514":2,"1515":10,"1516":1,"1517":1,"1518":5,"1519":3,"1520":1,"1521":2,"1522":1,"1523":2,"1524":3,"1527":6,"1676":3,"1678":1,"1824":1,"2724":1}}],["combo",{"0":{"98":1,"1514":1,"1518":1,"1519":1,"1520":1,"1521":1,"1522":1,"1525":1,"2681":1},"1":{"1521":1,"1522":1},"2":{"46":7,"98":3,"112":2,"114":1,"149":2,"160":1,"188":1,"191":1,"199":2,"203":1,"211":3,"222":1,"505":20,"515":2,"1500":1,"1508":9,"1509":3,"1510":6,"1511":36,"1512":7,"1514":2,"1515":5,"1516":7,"1517":1,"1518":63,"1519":12,"1520":1,"1521":2,"1522":1,"1523":19,"1524":1,"1525":16,"1526":9,"1527":7,"2263":1,"2446":1,"2566":1,"2575":2,"2681":3,"2749":1}}],["compensating",{"2":{"1915":1}}],["compensated",{"2":{"2569":1}}],["compensate",{"2":{"1326":1,"1406":1,"1915":4}}],["comprising",{"2":{"2496":1,"2686":1,"2696":1}}],["comprise",{"2":{"2423":1}}],["comprises",{"2":{"334":1}}],["compression",{"2":{"2255":1,"2585":1,"2587":3,"2592":1,"2596":4}}],["compressing",{"2":{"2255":2}}],["comprehensions",{"0":{"471":1},"2":{"471":1,"472":1}}],["comprehensive",{"2":{"446":1,"483":1}}],["composite",{"2":{"1902":1}}],["composed",{"2":{"1515":1}}],["compose",{"2":{"222":1,"1300":1,"1714":1,"1715":2,"1717":1,"2685":2}}],["component",{"2":{"1533":2,"2597":3,"2694":1,"2695":1,"2751":1}}],["components",{"2":{"130":1,"1216":1,"1236":1,"2272":1,"2567":1}}],["computationally",{"2":{"1329":1}}],["computed",{"2":{"2225":1}}],["compute",{"2":{"191":1,"2225":1}}],["computers",{"0":{"2318":1},"1":{"2319":1,"2320":1,"2321":1,"2322":1,"2323":1,"2324":1,"2325":1,"2326":1}}],["computer",{"2":{"62":1,"541":1,"567":1,"627":1,"1292":1,"1355":1,"1356":1,"1359":1,"1366":1,"1367":1,"1406":1,"1436":3,"1530":1,"1655":1,"1677":1,"1719":1,"1806":1,"1807":1,"1830":1,"1855":2,"1918":1,"1949":1,"2125":1,"2255":4,"2263":1,"2313":1,"2355":2,"2393":2,"2398":1,"2411":1,"2417":4,"2428":1,"2435":1,"2475":1,"2479":1,"2490":2,"2611":1,"2633":1,"2666":1,"2669":1,"2737":1,"2738":1,"2743":1,"2748":1,"2754":1}}],["computing",{"2":{"143":9,"149":1,"181":2,"270":2,"277":1}}],["companies",{"2":{"2622":1}}],["companying",{"2":{"1519":1}}],["company",{"0":{"42":1},"2":{"43":1}}],["compact",{"2":{"479":1,"624":1,"1340":1,"2410":1}}],["comparing",{"2":{"2147":1,"2748":1}}],["comparisons",{"2":{"211":1}}],["comparison",{"0":{"2730":1},"1":{"2731":1,"2732":1,"2733":1},"2":{"190":1,"191":2,"248":1}}],["compares",{"2":{"1853":1,"2748":1}}],["compared",{"2":{"1842":1,"2454":1,"2566":1,"2736":1}}],["compare",{"2":{"51":1,"349":1,"2479":1,"2730":1}}],["compatible",{"0":{"486":1},"1":{"487":1,"488":1,"489":1,"490":1,"491":1,"492":1,"493":1,"494":1,"495":1},"2":{"132":3,"134":1,"149":1,"172":1,"199":1,"304":1,"322":1,"486":1,"495":1,"519":2,"1212":1,"1247":1,"1314":1,"1315":1,"1380":1,"1557":1,"1811":1,"1841":1,"2114":2,"2116":1,"2126":4,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":1,"2247":1,"2249":1,"2266":1,"2350":1,"2427":1,"2519":1,"2529":1,"2544":3,"2545":1,"2548":2,"2553":2,"2564":1,"2576":10,"2673":1,"2712":1,"2725":1}}],["compatiblitly",{"2":{"75":1}}],["compatibility",{"0":{"1295":1,"1296":1,"1314":1,"2115":1},"1":{"1297":1},"2":{"31":1,"34":1,"98":1,"114":1,"176":1,"249":1,"262":1,"273":1,"276":1,"455":1,"457":1,"516":1,"660":1,"1312":1,"1314":4,"1463":1,"2113":1,"2183":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2245":1,"2247":1,"2249":1,"2546":1,"2548":1,"2564":1,"2566":2}}],["compilable",{"2":{"2295":6}}],["compilation",{"0":{"132":1,"401":1},"2":{"36":1,"88":2,"104":2,"114":2,"127":2,"132":3,"134":6,"149":4,"170":1,"176":6,"191":2,"199":2,"211":5,"222":5,"236":2,"249":1,"254":1,"266":1,"315":3,"370":3,"401":3,"479":1,"513":2,"522":1,"527":1,"542":1,"564":2,"2262":2,"2448":1,"2512":1,"2721":1}}],["compiling",{"0":{"2447":1},"2":{"58":1,"73":2,"92":1,"134":1,"312":2,"315":1,"363":1,"370":4,"396":1,"411":1,"512":1,"513":1,"524":1,"533":1,"539":1,"556":1,"1259":1,"1319":1,"1377":1,"1385":2,"1812":1,"2063":1,"2137":1,"2149":1,"2256":1,"2262":7,"2423":1,"2577":2}}],["compiledfirmware",{"2":{"371":1}}],["compiledb",{"2":{"132":1,"134":1}}],["compiled",{"2":{"50":1,"182":1,"211":2,"309":1,"371":1,"375":1,"513":1,"520":1,"530":1,"533":1,"1351":1,"1385":1,"2277":1,"2279":1,"2418":1,"2425":1,"2439":1,"2513":2,"2704":1,"2705":1,"2724":1,"2743":2,"2754":1}}],["compiles",{"2":{"49":1,"176":1,"199":1,"396":1,"556":1,"1381":1,"1385":1,"2262":1,"2425":1,"2753":1}}],["compile",{"0":{"307":1,"308":1,"309":1,"310":1,"314":1,"370":1,"396":1,"523":1,"524":1,"525":1,"542":1,"548":1,"2631":1},"2":{"24":1,"28":1,"36":2,"37":1,"43":1,"73":1,"114":8,"120":1,"132":2,"134":3,"149":1,"160":1,"176":2,"191":1,"199":3,"291":1,"304":4,"307":1,"311":1,"314":3,"315":1,"316":2,"318":1,"322":1,"360":1,"370":16,"371":1,"389":1,"390":1,"391":1,"396":2,"401":4,"414":8,"420":1,"421":1,"422":2,"424":5,"426":2,"437":2,"458":3,"504":1,"519":3,"522":4,"527":1,"529":1,"534":1,"542":1,"560":3,"1288":1,"1312":1,"1319":1,"1354":1,"1379":1,"1413":1,"1416":1,"1434":1,"1435":1,"1501":1,"2149":1,"2238":1,"2244":1,"2252":1,"2255":1,"2259":1,"2262":7,"2277":3,"2346":1,"2356":1,"2425":3,"2428":1,"2437":1,"2441":1,"2445":1,"2447":3,"2454":1,"2456":1,"2469":2,"2494":1,"2508":1,"2512":2,"2513":1,"2522":1,"2553":1,"2572":2,"2647":2,"2671":1,"2723":1,"2756":1}}],["compiler",{"0":{"303":1,"527":1},"2":{"21":1,"73":1,"149":1,"191":1,"199":1,"303":1,"305":1,"320":1,"523":1,"526":2,"527":1,"1359":1,"1383":1,"2300":1,"2428":1,"2752":1,"2754":1}}],["comply",{"2":{"522":1,"2310":1}}],["complicated",{"2":{"481":1,"1331":2,"1336":1,"1382":1,"1405":1,"1511":1,"2161":1,"2268":1,"2408":1,"2411":1,"2450":1}}],["compliance",{"2":{"222":1,"263":1}}],["compliant",{"2":{"24":1}}],["compliation",{"2":{"114":1}}],["complaints",{"2":{"154":1}}],["complements",{"2":{"1934":1}}],["complementary",{"2":{"93":1,"249":1,"661":2,"1230":4}}],["completing",{"2":{"2273":1,"2279":1}}],["completion",{"0":{"448":1},"1":{"449":1,"450":1,"451":1,"452":1},"2":{"448":1,"449":1,"451":1,"698":1,"2492":1,"2503":1}}],["completes",{"2":{"1686":1,"2311":1,"2729":1,"2748":1}}],["completed",{"2":{"522":1,"525":1,"1215":1,"1310":1,"2255":2,"2273":1,"2438":1,"2448":1,"2460":1,"2513":1,"2526":1,"2641":1,"2721":1}}],["complete",{"0":{"127":1},"2":{"70":1,"126":1,"236":2,"263":1,"282":3,"305":1,"315":2,"341":1,"448":1,"450":1,"451":3,"452":2,"613":1,"624":1,"688":1,"1134":1,"1137":1,"1177":1,"1265":1,"1405":1,"1447":1,"1678":1,"1682":1,"2171":1,"2197":1,"2221":1,"2273":1,"2275":1,"2353":1,"2424":1,"2425":1,"2442":1,"2476":1,"2498":1,"2502":1,"2555":1,"2564":1,"2566":1,"2687":1}}],["completely",{"2":{"49":1,"195":2,"262":1,"266":1,"505":1,"1335":1,"1398":1,"1403":1,"1435":1,"1522":1,"1553":1,"1655":2,"1668":1,"2267":1,"2273":1,"2347":1,"2402":1,"2424":1,"2466":1}}],["complex",{"0":{"464":1,"1269":1,"2165":1},"1":{"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1},"2":{"134":1,"471":1,"567":1,"612":1,"1332":1,"1364":1,"1508":1,"1549":1,"1670":1,"1729":5,"1918":1,"1952":5,"2165":1,"2268":1}}],["complexity",{"2":{"3":1,"15":1,"153":1,"211":1,"471":1,"2573":1}}],["commercial",{"2":{"2244":1,"2546":1,"2566":2}}],["commenting",{"2":{"355":1}}],["commented",{"2":{"199":1,"2566":2}}],["comment",{"2":{"92":1,"149":2,"191":2,"356":1,"367":1,"453":1,"455":1,"2566":1}}],["comments",{"2":{"77":1,"114":1,"176":1,"211":1,"355":1,"446":1,"453":2,"455":2,"562":1,"1553":1,"1554":1,"1794":1,"2566":2}}],["comm",{"2":{"313":1,"530":2,"1499":1,"2355":1,"2388":1,"2407":1}}],["committee",{"2":{"2545":1}}],["committed",{"2":{"2255":1,"2439":1,"2473":1,"2480":1}}],["committing",{"2":{"556":1,"2568":1}}],["commits",{"2":{"560":1,"2473":1,"2475":2,"2477":5,"2480":1,"2506":1}}],["commit",{"0":{"2434":1,"2438":1,"2478":1},"1":{"2435":1,"2436":1,"2437":1,"2438":1,"2439":1,"2479":1,"2480":1,"2481":1},"2":{"199":1,"347":1,"349":4,"360":1,"520":1,"529":3,"530":2,"554":1,"556":2,"2255":2,"2428":1,"2430":1,"2431":1,"2433":1,"2438":3,"2439":1,"2440":1,"2446":1,"2472":1,"2473":1,"2476":1,"2477":9,"2478":1,"2480":5,"2506":1,"2568":2}}],["comms",{"2":{"176":1,"191":2,"2573":1}}],["comma",{"2":{"467":1,"468":3,"612":2,"1441":1,"1584":1,"2130":1,"2169":1,"2179":1,"2355":2,"2388":1,"2394":1,"2423":1,"2508":1}}],["commas",{"2":{"160":1,"211":1,"2423":1,"2565":1}}],["command+option+escape",{"2":{"1568":1}}],["command+",{"2":{"286":1,"1567":1}}],["commands",{"0":{"368":1,"369":1,"392":1,"398":1,"2392":1,"2575":1},"1":{"370":1,"371":1,"372":1,"373":1,"374":1,"375":1,"376":1,"377":1,"378":1,"379":1,"380":1,"381":1,"382":1,"383":1,"384":1,"385":1,"386":1,"387":1,"388":1,"389":1,"390":1,"391":1,"393":1,"394":1,"395":1,"396":1,"397":1,"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1,"410":1,"411":1},"2":{"55":1,"93":1,"114":2,"132":2,"134":1,"149":1,"153":1,"158":1,"173":1,"199":1,"347":2,"349":1,"363":1,"396":1,"401":3,"407":2,"415":2,"440":1,"484":2,"502":1,"515":2,"1239":1,"1255":1,"1385":1,"1441":1,"1622":1,"1821":1,"1822":1,"2144":1,"2262":2,"2263":2,"2294":1,"2300":1,"2348":1,"2431":1,"2435":2,"2438":1,"2442":1,"2452":1,"2457":1,"2464":1,"2479":1,"2484":2,"2512":2,"2577":2}}],["command",{"0":{"82":1,"83":1,"173":1,"1501":1,"1528":1,"1622":2,"2305":1,"2454":1,"2484":1},"1":{"1529":1,"1530":1,"1623":2},"2":{"1":1,"10":2,"18":2,"65":1,"70":3,"82":1,"83":1,"93":1,"111":1,"114":1,"158":1,"160":1,"173":1,"176":1,"199":1,"211":2,"291":1,"292":2,"325":1,"331":3,"363":1,"366":1,"370":2,"371":3,"372":1,"373":1,"374":1,"375":1,"376":1,"378":1,"381":1,"382":1,"383":2,"384":1,"385":1,"386":2,"387":1,"388":1,"389":1,"390":1,"391":1,"393":1,"394":1,"395":1,"396":1,"397":1,"399":1,"400":2,"401":2,"402":2,"403":2,"404":1,"405":1,"406":1,"407":1,"408":2,"409":2,"410":2,"411":1,"414":2,"415":2,"416":1,"424":1,"430":1,"437":2,"454":1,"484":1,"502":1,"515":1,"530":1,"558":1,"626":2,"628":1,"703":1,"1238":2,"1245":1,"1248":1,"1271":1,"1288":2,"1312":1,"1348":1,"1381":1,"1385":2,"1498":2,"1500":1,"1501":7,"1528":3,"1529":3,"1530":6,"1622":2,"1623":2,"2111":3,"2126":1,"2141":1,"2154":1,"2183":1,"2230":2,"2233":1,"2235":2,"2236":1,"2237":1,"2240":1,"2242":1,"2243":1,"2244":1,"2252":1,"2255":2,"2262":7,"2263":1,"2305":4,"2347":2,"2348":1,"2353":3,"2355":2,"2390":2,"2410":2,"2421":1,"2422":1,"2425":1,"2427":1,"2438":1,"2441":1,"2445":2,"2446":1,"2447":1,"2451":2,"2454":3,"2457":1,"2468":5,"2469":1,"2477":2,"2479":2,"2480":1,"2484":1,"2492":1,"2494":1,"2503":1,"2508":1,"2512":4,"2566":1,"2575":5,"2636":1,"2705":1,"2753":1,"2757":2}}],["communicate",{"2":{"1176":1,"1239":1,"1918":1,"2117":1,"2233":1,"2351":1}}],["communicates",{"2":{"453":1,"2147":1}}],["communicated",{"0":{"2721":1},"2":{"352":1,"2720":1,"2721":1}}],["communicating",{"2":{"244":1,"1201":1,"1589":1,"1811":1,"1921":1,"2136":1,"2271":1}}],["communications",{"2":{"2128":1}}],["communication",{"0":{"2128":1},"2":{"30":1,"352":1,"508":1,"511":3,"1121":3,"1125":1,"1126":1,"1127":1,"1128":1,"1134":1,"1136":2,"1137":1,"1138":2,"1215":1,"1319":2,"1813":2,"1834":1,"1835":1,"1838":1,"1842":2,"1846":1,"1847":1,"1848":1,"1849":1,"1918":1,"2114":1,"2118":2,"2121":1,"2128":8,"2129":1,"2131":4,"2132":1,"2263":2,"2697":1}}],["community",{"0":{"1321":1,"1324":1,"2466":1,"2545":1},"2":{"70":2,"116":1,"160":1,"176":1,"199":1,"201":1,"211":25,"213":1,"236":3,"249":1,"266":2,"352":1,"370":1,"455":1,"559":1,"1265":4,"1321":1,"1324":1,"1346":4,"1349":1,"2160":1,"2292":1,"2313":3,"2317":1,"2466":1,"2482":1,"2545":1,"2566":3,"2569":1,"2672":1,"2686":2,"2713":1}}],["commonly",{"2":{"69":1,"187":1,"232":1,"467":1,"2031":1,"2047":1,"2118":1,"2169":1,"2268":1,"2664":1}}],["common",{"0":{"30":1,"32":1,"33":1,"80":1,"1725":1,"1842":1,"1851":1,"1946":1,"2269":1},"1":{"31":1,"34":1},"2":{"5":1,"8":1,"30":2,"32":1,"74":3,"75":1,"86":1,"92":1,"93":1,"94":3,"107":1,"113":1,"114":5,"133":4,"134":5,"149":2,"160":1,"176":2,"191":1,"199":2,"201":1,"204":1,"211":2,"222":1,"236":2,"248":1,"381":1,"502":1,"505":1,"515":1,"532":1,"569":1,"597":1,"654":1,"699":1,"1174":1,"1195":1,"1201":1,"1244":1,"1255":1,"1259":1,"1287":1,"1337":1,"1353":1,"1359":1,"1383":1,"1410":1,"1416":1,"1518":1,"1521":1,"1561":1,"1816":1,"1820":1,"1852":2,"1858":1,"1932":1,"1943":1,"2132":1,"2140":1,"2169":1,"2178":1,"2263":1,"2278":1,"2284":1,"2300":4,"2305":1,"2311":1,"2353":15,"2410":1,"2454":1,"2479":1,"2553":1,"2566":1,"2575":1,"2626":1,"2628":1,"2646":1,"2668":1,"2671":1,"2743":1,"2749":1,"2753":1}}],["com",{"2":{"2":1,"21":1,"196":1,"211":1,"236":1,"358":1,"359":2,"515":1,"541":1,"551":1,"554":1,"623":1,"624":5,"684":7,"685":1,"1242":2,"1274":1,"1275":2,"1279":2,"1281":3,"1283":1,"1298":1,"1511":2,"1680":1,"1820":10,"2040":1,"2234":1,"2252":1,"2255":3,"2303":1,"2347":1,"2351":1,"2438":3,"2443":1,"2444":1,"2475":8,"2479":5,"2513":2,"2566":3,"2715":1}}],["4bpp",{"2":{"2596":2}}],["4+i",{"2":{"2577":2}}],["4t",{"2":{"2105":1}}],["4=25",{"2":{"1822":1}}],["4×",{"2":{"1557":1}}],["49",{"2":{"1440":1,"1578":1,"1836":1}}],["470ω",{"2":{"1471":1}}],["47",{"2":{"1405":1,"1578":1}}],["479b",{"2":{"315":1}}],["43",{"2":{"1405":1,"1578":1,"1836":1}}],["432",{"2":{"1403":1}}],["4352",{"2":{"554":1}}],["44",{"2":{"1405":1,"1440":1,"1578":1,"1836":1}}],["440",{"2":{"1403":1,"1406":1}}],["44100u",{"2":{"659":1}}],["42",{"0":{"1281":1},"2":{"1281":1,"1396":1,"1405":1,"1440":1,"1491":5,"1578":1,"2148":1}}],["4226",{"2":{"49":1}}],["4kib",{"2":{"2039":1}}],["4k2",{"2":{"853":1,"887":1,"921":1}}],["4k",{"2":{"788":1,"789":2,"854":2,"888":2,"922":2,"956":2,"990":2,"1024":2,"1058":2,"1092":2}}],["4key",{"2":{"143":2}}],["451",{"2":{"2160":1}}],["453",{"2":{"1091":2}}],["45",{"2":{"784":1,"1405":1,"1578":1,"1821":1,"1945":1}}],["45pm",{"2":{"350":1}}],["412",{"2":{"2294":1}}],["41",{"2":{"1405":1,"1578":1,"1836":1}}],["4173",{"2":{"403":1}}],["4198",{"2":{"93":1}}],["4a7b",{"2":{"314":1,"315":1}}],["4pplet",{"2":{"211":3}}],["460800",{"2":{"1136":1}}],["46",{"2":{"181":2,"1405":1,"1578":1,"1836":1,"2269":1}}],["4800",{"2":{"1201":1}}],["48",{"2":{"168":1,"181":2,"211":1,"236":1,"816":1,"917":1,"1053":1,"1578":1,"1725":2,"1794":1,"1804":1,"1836":1,"1945":3,"1946":2,"2130":2,"2688":1,"2695":1}}],["4871",{"2":{"2":1}}],["40kb",{"2":{"2528":1}}],["400",{"2":{"1804":1,"1846":2,"2299":1,"2355":1,"2394":1}}],["400000",{"2":{"702":1}}],["400000l",{"2":{"502":1}}],["4000",{"2":{"606":1}}],["40ms",{"2":{"1514":1}}],["403",{"2":{"1281":2}}],["4095u",{"2":{"659":2,"1401":2}}],["4096",{"2":{"131":1,"134":1}}],["40percentclub",{"2":{"266":1}}],["40",{"2":{"149":1,"176":1,"211":1,"481":1,"624":1,"1405":1,"1514":1,"1578":5,"1803":1,"1805":1,"1807":1,"1836":1,"1842":1,"1950":1,"2038":1,"2533":1,"2584":1}}],["401",{"2":{"114":1}}],["4x4",{"2":{"1349":3,"2559":2,"2566":1}}],["4x5",{"2":{"222":1}}],["4x8",{"2":{"143":2}}],["4x7",{"2":{"143":2}}],["4x6",{"2":{"143":2,"149":1,"222":1}}],["4x",{"2":{"114":1,"1576":1,"1577":1,"1842":3}}],["4x12",{"2":{"70":1,"1349":3,"1352":1,"1405":1}}],["4",{"0":{"108":1,"343":1,"540":1,"2169":1,"2323":1,"2469":1},"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"70":1,"93":1,"108":1,"111":1,"114":5,"134":2,"188":1,"191":3,"211":2,"222":1,"236":1,"249":1,"266":2,"286":1,"292":2,"313":1,"350":4,"358":5,"360":1,"448":1,"453":2,"455":1,"511":1,"530":2,"633":1,"635":22,"636":1,"659":1,"666":1,"694":1,"703":2,"707":2,"757":1,"786":1,"788":1,"789":2,"818":1,"850":2,"853":2,"854":2,"885":1,"887":2,"888":2,"919":1,"921":2,"922":2,"953":1,"956":2,"987":1,"990":2,"1021":2,"1024":2,"1055":2,"1058":2,"1089":1,"1092":2,"1136":1,"1145":1,"1176":1,"1181":1,"1227":1,"1331":1,"1336":2,"1344":1,"1363":2,"1366":1,"1405":1,"1451":1,"1496":4,"1515":2,"1530":2,"1557":2,"1558":2,"1573":1,"1576":1,"1577":1,"1578":1,"1589":1,"1594":2,"1635":3,"1725":5,"1730":1,"1793":31,"1794":1,"1801":2,"1805":1,"1821":2,"1822":1,"1836":3,"1839":1,"1883":3,"1903":3,"1946":5,"1954":1,"2036":3,"2038":1,"2042":4,"2059":1,"2060":3,"2092":1,"2093":1,"2105":1,"2117":2,"2118":3,"2120":3,"2128":1,"2141":1,"2147":1,"2148":2,"2153":1,"2155":5,"2167":2,"2169":1,"2255":3,"2261":1,"2295":2,"2299":3,"2300":2,"2311":1,"2352":1,"2355":9,"2365":3,"2371":31,"2372":2,"2380":3,"2386":2,"2391":2,"2394":2,"2407":1,"2411":1,"2468":2,"2534":1,"2571":1,"2574":2,"2575":2,"2577":3,"2585":1,"2592":1,"2596":2,"2615":4,"2684":1,"2686":4,"2694":1,"2696":1,"2710":1,"2745":1,"2757":2}}],["p>need",{"2":{"2477":2}}],["p>",{"2":{"2477":3}}],["p>for",{"2":{"2477":1}}],["p9",{"2":{"2355":1,"2394":1,"2747":1}}],["p7",{"2":{"2355":1,"2394":1,"2747":1}}],["p5",{"2":{"2355":1,"2394":1,"2747":1}}],["p3",{"2":{"2355":1,"2394":1,"2747":1}}],["p3d",{"0":{"255":1},"2":{"211":1,"241":5,"249":1,"266":1}}],["ppls",{"2":{"2355":1,"2394":1,"2747":1}}],["pp",{"2":{"2169":1}}],["p6",{"2":{"1634":1,"2355":1,"2394":1,"2747":1}}],["p4",{"2":{"1634":1,"2355":1,"2394":1,"2747":1}}],["p2",{"2":{"1634":1,"2355":1,"2394":1,"2747":1}}],["p8",{"2":{"1634":1,"2355":1,"2394":1,"2747":1}}],["p0",{"2":{"1634":2,"2355":1,"2394":1,"2747":1}}],["p1",{"2":{"2355":1,"2394":1,"2747":1}}],["p146279",{"2":{"1290":1}}],["p1800fl",{"2":{"102":2,"114":1}}],["pqrs",{"2":{"1280":1}}],["pbr",{"2":{"2153":1}}],["pb",{"2":{"1883":32,"2380":32}}],["pb11",{"2":{"1140":1,"1141":1,"1142":1}}],["pb10",{"2":{"1140":1,"1141":1,"1142":1}}],["pb4",{"2":{"1140":1}}],["pb3",{"2":{"1140":1}}],["pb7",{"2":{"1140":1,"1141":1,"1142":1}}],["pb6",{"2":{"1140":1,"1141":1,"1142":1}}],["pdot",{"2":{"2355":1,"2394":1,"2747":1}}],["pd3",{"2":{"2119":1}}],["pd1",{"2":{"2119":1,"2120":1}}],["pd0",{"2":{"1293":1,"2119":1,"2120":1}}],["pdfs",{"2":{"1503":1}}],["pdf",{"2":{"1289":1,"1293":2}}],["pd9",{"2":{"1140":1,"1141":1,"1142":1}}],["pd8",{"2":{"1140":1,"1141":1,"1142":1}}],["pd6",{"2":{"1140":1,"1142":1}}],["pd5",{"2":{"1140":1,"1142":1,"1907":1}}],["pdr",{"2":{"850":1,"854":8,"885":1,"888":9,"919":1,"922":9,"953":1,"956":9,"987":1,"990":9,"1021":1,"1024":9,"1055":1,"1058":9,"1089":1,"1092":9}}],["pd2",{"2":{"191":1,"1907":1,"2119":1}}],["pnp",{"2":{"1458":1}}],["pnputil",{"2":{"628":2}}],["png",{"2":{"623":1,"2573":1,"2575":4}}],["photos",{"2":{"2450":1}}],["phonetic",{"2":{"2144":1}}],["phone",{"2":{"2118":1}}],["phrases",{"2":{"1353":1,"1359":1}}],["phpshop",{"2":{"1242":1}}],["php",{"2":{"1242":1,"1275":1,"1289":1,"1297":1,"1298":1}}],["physically",{"2":{"1216":1,"1378":1,"2302":1,"2679":1,"2730":1}}],["physical",{"0":{"1721":1,"2746":1},"1":{"1722":1},"2":{"540":2,"624":1,"1216":1,"1284":3,"1326":1,"1346":2,"1347":1,"1495":1,"1721":1,"1725":7,"1946":7,"1950":1,"2131":1,"2152":1,"2270":1,"2302":1,"2407":1,"2450":1,"2559":3,"2614":3,"2615":2,"2643":1,"2686":1,"2730":1,"2731":2,"2732":3,"2733":2,"2746":2,"2747":1}}],["phapbgs",{"2":{"2147":1,"2148":1}}],["phantagom",{"2":{"211":1}}],["phantom",{"2":{"211":1}}],["phase",{"2":{"191":1,"1181":1,"1214":3,"1224":2}}],["pjrc",{"2":{"487":2,"491":4,"625":1,"1249":1,"2235":1,"2238":1,"2333":1,"2639":1}}],["pwl",{"2":{"2153":1}}],["pwr",{"2":{"1273":1,"1903":1,"2148":1,"2153":1,"2355":1,"2393":1}}],["pw88",{"2":{"222":1,"241":2}}],["pwmd4",{"2":{"1469":1}}],["pwmd2",{"2":{"1230":1}}],["pwmd1",{"2":{"661":1,"662":1,"1396":1}}],["pwmd11tim1",{"2":{"656":1}}],["pwm3360",{"2":{"149":1}}],["pwm",{"0":{"14":1,"661":1,"662":1,"679":1,"753":1,"780":1,"788":1,"812":1,"844":1,"853":1,"879":1,"887":1,"913":1,"921":1,"947":1,"955":1,"981":1,"989":1,"1015":1,"1049":1,"1083":1,"1091":1,"1117":1,"1170":1,"1222":1,"1230":1,"1394":1,"1396":1,"1461":1,"1466":1,"1469":1},"1":{"680":1,"781":1,"813":1,"845":1,"880":1,"914":1,"948":1,"982":1,"1016":1,"1050":1,"1084":1,"1118":1,"1171":1,"1395":1},"2":{"14":4,"49":1,"50":1,"93":1,"134":3,"160":1,"176":3,"191":2,"222":1,"236":4,"249":8,"266":1,"593":1,"594":1,"651":1,"655":2,"656":5,"661":10,"662":2,"663":2,"671":1,"672":3,"675":1,"679":1,"736":1,"737":4,"741":1,"745":1,"753":1,"762":1,"763":4,"768":1,"772":1,"780":1,"786":3,"788":11,"794":1,"795":4,"800":1,"804":1,"812":1,"824":1,"825":4,"832":1,"836":1,"844":1,"850":3,"853":8,"859":1,"860":4,"867":1,"871":1,"879":1,"885":3,"887":8,"893":1,"894":4,"901":1,"905":1,"913":1,"919":3,"921":8,"927":1,"928":4,"935":1,"939":1,"947":1,"953":3,"955":7,"961":1,"962":4,"969":1,"973":1,"981":1,"987":3,"989":7,"995":1,"996":4,"1003":1,"1007":1,"1015":1,"1029":1,"1030":4,"1037":1,"1041":1,"1049":1,"1063":1,"1064":4,"1071":1,"1075":1,"1083":1,"1089":3,"1091":10,"1097":1,"1098":4,"1105":1,"1109":1,"1117":1,"1150":1,"1151":4,"1158":1,"1162":1,"1170":1,"1218":1,"1222":2,"1230":16,"1316":1,"1317":1,"1387":2,"1394":3,"1396":7,"1454":2,"1459":2,"1460":1,"1461":2,"1462":2,"1463":1,"1466":2,"1467":1,"1469":11,"2276":1,"2528":1,"2534":1,"2676":2,"2677":3,"2700":2}}],["pt",{"2":{"222":3}}],["pmns",{"2":{"2355":1,"2394":1,"2747":1}}],["pmeg2005eh",{"2":{"2133":1}}],["pm2040",{"2":{"176":2,"277":1,"1311":1,"1315":5}}],["pmw3320",{"0":{"1848":1},"2":{"211":1,"1848":6}}],["pmw33xx",{"0":{"273":1,"276":1},"2":{"175":2,"176":3,"199":1,"236":1,"249":1,"273":3,"276":1,"277":1,"1849":23}}],["pmw3389",{"2":{"149":2,"199":1,"1849":1}}],["pmw3360",{"2":{"114":3,"118":1,"149":4,"160":1,"1849":1,"1851":1,"2566":1}}],["pmw",{"0":{"1849":2},"2":{"118":1,"1849":6}}],["pcmm",{"2":{"2355":1,"2394":1}}],["pcint",{"2":{"1905":1}}],["pc",{"2":{"1280":3}}],["pc13",{"2":{"2353":1}}],["pc11",{"2":{"1140":1,"1141":1,"1142":1}}],["pc10",{"2":{"1140":1,"1141":1,"1142":1}}],["pc5",{"2":{"1140":1,"1141":1}}],["pc4",{"2":{"1140":1,"1141":1}}],["pca9505",{"2":{"176":1}}],["pca9555",{"2":{"149":1}}],["pcba",{"2":{"2712":3}}],["pcbheaven",{"2":{"2311":1}}],["pcb1",{"2":{"2249":2}}],["pcb",{"2":{"18":2,"114":1,"134":2,"176":2,"211":2,"222":2,"624":2,"1125":1,"1129":1,"1252":1,"1287":1,"2230":1,"2233":1,"2235":1,"2236":2,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":2,"2247":2,"2249":2,"2267":1,"2302":1,"2303":1,"2328":1,"2450":4,"2529":1,"2534":1,"2566":1,"2614":1,"2665":1,"2672":1}}],["pcbs",{"2":{"18":1,"37":2,"114":1,"249":1,"2230":1,"2529":3}}],["pseudocode",{"2":{"2600":1}}],["pseudorandomly",{"2":{"2611":1}}],["pseudorandom",{"2":{"2099":1}}],["pste",{"2":{"2355":1,"2392":1}}],["pstr",{"2":{"1448":1,"1593":1,"1594":1,"1610":1,"1813":11,"1816":2,"2100":1,"2101":1,"2137":11,"2710":2}}],["psls",{"2":{"2355":1,"2394":1,"2747":1}}],["psi",{"2":{"1594":3}}],["pscr",{"2":{"313":1,"530":2,"2355":1,"2392":1,"2408":1}}],["ps",{"0":{"1289":1,"1809":1,"1902":1,"1910":1,"2692":1},"1":{"1903":1,"1904":1,"1905":1,"1906":1,"1907":1,"1908":1,"1909":1,"1910":1,"1911":1,"1912":1,"1913":1,"1914":1,"1915":1,"1916":1,"1917":1},"2":{"133":1,"134":1,"175":1,"176":1,"191":1,"211":3,"236":1,"266":1,"1809":1,"1902":2,"1910":1,"2692":6}}],["psp",{"2":{"118":1}}],["ps2avrgb",{"0":{"2345":1},"2":{"235":1,"1220":1,"2237":1,"2345":1,"2450":1}}],["ps2",{"2":{"114":2,"133":1,"134":1,"149":1,"222":1,"1904":5,"1905":9,"1906":5,"1907":17,"1908":3,"1910":17,"1911":4,"1912":10,"1913":1,"1914":4,"1915":3,"1916":2,"1917":1,"2692":1}}],["punctuation",{"0":{"1584":1,"2388":1},"2":{"1499":1,"1584":1,"2228":1}}],["pulsing",{"2":{"1578":6,"1949":2}}],["pulses",{"2":{"1557":2,"1728":9,"1949":2}}],["pulse",{"2":{"1215":3,"1454":1,"1578":1,"1949":10,"1951":1}}],["pulled",{"2":{"1573":1,"2231":1,"2238":1,"2519":1}}],["pulldown",{"2":{"786":3,"789":12,"850":2,"854":3,"885":2,"888":3,"919":2,"922":3,"953":2,"956":3,"987":2,"990":3,"1021":2,"1024":3,"1055":2,"1058":3,"1089":2,"1092":3,"1471":1}}],["pulls",{"2":{"305":1,"308":1,"2566":1}}],["pullup",{"2":{"134":1,"236":1,"707":2,"786":3,"789":12,"850":2,"854":3,"885":2,"888":3,"919":2,"922":3,"953":2,"956":3,"987":2,"990":3,"1021":2,"1024":3,"1055":2,"1058":3,"1089":2,"1092":3,"1225":3}}],["pulling",{"2":{"10":1,"24":1,"49":1,"1225":1,"2564":1}}],["pull",{"0":{"352":1,"1225":1,"2656":1},"1":{"353":1,"354":1,"355":1,"356":1},"2":{"2":1,"38":1,"45":1,"69":1,"87":1,"103":1,"126":1,"243":1,"347":2,"349":2,"352":3,"355":1,"356":1,"359":1,"360":1,"537":1,"550":2,"554":9,"558":1,"560":1,"623":1,"684":1,"696":5,"1126":2,"1134":2,"1142":1,"1225":2,"1236":1,"1261":1,"1263":1,"1265":1,"1330":1,"1381":1,"2117":1,"2120":2,"2255":3,"2317":1,"2473":2,"2476":1,"2478":1,"2479":2,"2480":2,"2517":3,"2519":1,"2521":1,"2530":1,"2568":1,"2569":1,"2656":1,"2670":1,"2719":1,"2757":1}}],["pupdr",{"2":{"707":2}}],["puzzle",{"2":{"614":1}}],["pumps",{"2":{"1559":1}}],["pumpkinpad",{"2":{"241":1}}],["pumpkin",{"2":{"191":1,"241":1,"249":1}}],["pumkinpad",{"2":{"249":1}}],["public",{"0":{"2227":1},"2":{"249":1,"1380":3,"2310":1,"2570":3}}],["publishing",{"0":{"2481":1}}],["published",{"2":{"182":2,"317":1,"628":1,"1380":1,"2297":1,"2570":1,"2660":1}}],["publish",{"2":{"176":1,"188":1,"191":2,"199":1,"317":1,"2481":1}}],["pushed",{"2":{"520":1,"701":1,"1329":4,"1559":1,"2577":1}}],["pushbutton",{"2":{"255":1}}],["push",{"0":{"1225":1},"2":{"243":1,"262":1,"340":1,"347":3,"349":3,"358":2,"359":2,"360":2,"361":2,"554":2,"696":3,"1142":1,"1225":1,"1391":1,"2255":2,"2273":1,"2431":1,"2437":1,"2438":2,"2441":1,"2446":1,"2448":2,"2475":6,"2479":4,"2480":5,"2481":2}}],["putc",{"0":{"1605":1},"1":{"1606":1}}],["puts",{"0":{"1607":1,"1609":1},"1":{"1608":1,"1610":1},"2":{"1593":1,"1594":1,"1609":1,"2356":1,"2572":1}}],["putting",{"2":{"417":1,"2263":1,"2304":1,"2325":1,"2672":1}}],["put",{"0":{"2450":1},"2":{"134":1,"182":1,"184":1,"450":1,"526":1,"540":1,"550":1,"556":1,"560":1,"574":1,"586":1,"626":2,"1397":1,"1913":1,"1914":2,"2152":1,"2167":1,"2169":2,"2182":1,"2258":1,"2279":1,"2356":1,"2417":1,"2450":1,"2566":1,"2569":1,"2571":1,"2572":1,"2615":1}}],["puca",{"2":{"134":1}}],["purely",{"2":{"2178":1}}],["purejavahidapi",{"2":{"1921":1}}],["purchased",{"2":{"2350":1}}],["purchase",{"2":{"2145":1}}],["purple",{"2":{"1953":2,"2042":2,"2058":2,"2460":2}}],["purposes",{"2":{"789":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1815":1,"1923":1,"2139":1,"2295":1,"2349":1,"2513":1,"2615":1,"2644":1}}],["purpose",{"2":{"355":2,"432":1,"1230":1,"1380":1,"1470":1,"2129":8,"2492":1,"2503":1,"2570":1,"2574":1}}],["pur",{"2":{"850":1,"854":10,"885":1,"888":9,"919":1,"922":9,"953":1,"956":9,"987":1,"990":9,"1021":1,"1024":9,"1055":1,"1058":9,"1089":1,"1092":9}}],["purge",{"2":{"134":1,"238":1}}],["pursuit40",{"2":{"143":2}}],["pursuit",{"2":{"109":1}}],["peer",{"2":{"2626":2}}],["peej",{"2":{"211":1}}],["peql",{"2":{"2355":1,"2394":1}}],["pepper",{"2":{"2169":3}}],["pep8",{"2":{"455":1}}],["pent",{"2":{"2355":1,"2394":1,"2747":1}}],["penalize",{"2":{"2228":1}}],["pendulum",{"2":{"1949":3,"2711":1}}],["pending",{"2":{"599":1,"600":1}}],["pen",{"2":{"1842":1}}],["pedal",{"2":{"1793":1,"2371":1}}],["peaks",{"2":{"2272":1}}],["peak",{"2":{"1576":1,"1577":2}}],["pearl",{"2":{"211":5}}],["pe1",{"2":{"1140":1}}],["pe0",{"2":{"1140":1}}],["pegasushoof",{"2":{"199":2}}],["petruziamini",{"2":{"266":1}}],["pet",{"2":{"191":1}}],["people",{"2":{"119":2,"164":2,"172":2,"173":1,"221":1,"231":1,"244":2,"367":1,"446":1,"481":1,"482":1,"556":1,"559":1,"560":1,"567":1,"574":1,"602":1,"606":2,"615":1,"623":1,"1244":1,"1257":1,"1266":1,"1269":1,"1298":1,"1304":1,"1334":1,"1340":1,"1410":1,"2250":1,"2263":1,"2280":1,"2282":1,"2292":2,"2302":1,"2317":1,"2408":1,"2421":2,"2427":1,"2476":1,"2568":1,"2655":1,"2714":1,"2726":1,"2727":1,"2740":1,"2756":1}}],["peiorisboards",{"2":{"102":1}}],["perpetually",{"2":{"2719":1}}],["perhaps",{"2":{"1668":1}}],["permitted",{"2":{"1677":1,"2564":1,"2565":1,"2738":1}}],["permissions",{"2":{"1238":1}}],["permission",{"2":{"199":1}}],["permissive",{"0":{"2735":1},"2":{"112":2,"176":1,"505":4,"1432":1,"2168":1,"2169":1,"2674":2,"2729":1,"2731":2,"2732":3,"2733":2,"2735":11,"2736":2}}],["permanently",{"2":{"1582":1}}],["perks",{"2":{"1303":1}}],["perfectly",{"2":{"481":1,"2455":1}}],["perfect",{"2":{"228":1,"554":1,"1416":1}}],["perform",{"2":{"580":2,"636":1,"1508":1,"1655":1,"1676":1,"1815":1,"1826":1,"1859":1,"1931":1,"1934":1,"2066":1,"2069":1,"2070":1,"2133":1,"2139":1,"2250":1,"2328":1,"2381":1,"2491":1,"2513":1,"2524":1,"2576":11,"2696":1,"2735":2,"2736":2}}],["performed",{"2":{"515":1,"592":1,"690":1,"691":1,"1633":1,"2347":1}}],["performs",{"2":{"169":1,"428":1,"527":1,"689":1,"690":1,"691":1,"692":1,"1929":2,"1932":2,"2231":1,"2238":1,"2743":1}}],["performing",{"2":{"134":1,"2069":2}}],["performance",{"2":{"93":1,"175":1,"176":1,"215":1,"236":1,"479":1,"584":2,"585":1,"1253":1,"1326":3,"1329":1,"1464":1,"1817":1,"1821":1,"1851":1,"2032":1,"2574":1}}],["perceptible",{"2":{"2745":1}}],["percent",{"2":{"470":1,"2378":1,"2399":1}}],["perc",{"2":{"176":2,"2378":1,"2399":1}}],["person",{"2":{"1416":1,"2701":1}}],["personal",{"2":{"160":1,"191":1,"1242":1,"1274":1,"2255":1,"2305":1,"2428":2,"2432":1,"2433":1,"2438":1,"2468":1,"2470":1,"2506":1,"2565":1}}],["perspective",{"2":{"331":6,"336":1,"2483":1,"2546":1}}],["persisted",{"2":{"1794":1}}],["persistence",{"2":{"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1}}],["persistent",{"0":{"604":1,"1331":1,"2607":1,"2610":1},"1":{"1332":1,"1333":1},"2":{"131":1,"604":1,"1331":1,"1335":2,"1341":2,"1399":1,"1439":1,"1594":1,"1830":1,"2126":1,"2175":1,"2356":1,"2572":1,"2574":1,"2607":2,"2610":1,"2728":1}}],["persists",{"2":{"1335":1}}],["persist",{"2":{"134":1,"474":1,"501":1,"1855":1,"2179":2,"2183":1,"2263":1}}],["perimeter",{"2":{"1844":1}}],["periodic",{"2":{"2320":1}}],["periodically",{"2":{"312":1,"452":1,"522":1,"1464":1,"2162":1}}],["periods",{"2":{"2169":1,"2226":3}}],["period",{"2":{"112":1,"199":1,"236":1,"264":1,"265":1,"274":1,"337":2,"350":1,"413":1,"502":1,"596":1,"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"1185":1,"1187":1,"1190":1,"1193":1,"1411":2,"1430":1,"1441":1,"1457":1,"1469":2,"1514":1,"1573":1,"1651":1,"2226":1,"2490":1,"2584":1,"2677":1}}],["peripherals",{"0":{"2535":1},"1":{"2536":1,"2537":1,"2538":1},"2":{"118":2,"146":1,"163":1,"211":1,"229":2,"234":3,"244":1,"656":1,"688":1,"703":1,"1129":1,"1134":1,"1139":1,"1142":1,"1177":1,"1198":1,"1390":1,"1832":1,"2523":1,"2531":1,"2534":1,"2535":1,"2567":1}}],["peripheral",{"0":{"234":1},"2":{"49":1,"176":1,"191":2,"199":1,"234":1,"654":1,"656":1,"685":1,"690":3,"691":1,"694":1,"703":3,"1122":1,"1126":1,"1128":1,"1132":3,"1133":3,"1134":5,"1142":1,"1177":3,"1182":1,"1198":3,"1222":1,"1223":2,"1229":1,"1230":1,"1390":1,"1908":4,"2534":1,"2536":1,"2537":1,"2538":1,"2546":2,"2550":2}}],["per",{"0":{"1423":1,"1518":1,"1683":1,"1792":1,"2225":1,"2264":1,"2740":1},"1":{"2226":1,"2227":1,"2228":1},"2":{"0":1,"9":1,"19":1,"22":1,"39":1,"52":1,"63":2,"92":1,"93":1,"112":6,"114":2,"149":1,"176":1,"184":1,"191":1,"194":3,"195":2,"198":1,"199":4,"201":1,"211":1,"213":1,"224":1,"238":1,"457":1,"459":1,"468":1,"505":16,"529":1,"562":1,"584":1,"657":1,"684":1,"703":1,"1177":2,"1198":1,"1212":2,"1236":1,"1255":1,"1326":8,"1329":10,"1359":1,"1384":1,"1388":1,"1390":1,"1397":1,"1400":1,"1411":2,"1416":1,"1431":2,"1454":1,"1500":1,"1518":5,"1557":1,"1562":1,"1683":3,"1730":1,"1733":1,"1803":1,"1804":3,"1805":8,"1807":1,"1817":1,"1849":3,"1954":1,"1957":1,"2031":1,"2105":6,"2128":1,"2157":1,"2161":2,"2171":2,"2225":1,"2566":1,"2575":1,"2577":3,"2585":1,"2589":1,"2592":1,"2674":4,"2688":1,"2695":1,"2701":1,"2711":1,"2720":1,"2727":1,"2728":2,"2735":1,"2736":1,"2737":1,"2738":1,"2740":1,"2745":2}}],["pkg",{"2":{"2467":1}}],["pk",{"2":{"94":1,"114":1,"199":1,"1326":1,"1329":3,"2674":3}}],["pgm",{"2":{"160":1,"1518":1}}],["pgup",{"2":{"90":2,"209":1,"313":2,"530":2,"1560":2,"1932":1,"2355":1,"2392":1,"2407":1,"2408":1}}],["pgdn",{"2":{"90":2,"120":1,"209":1,"313":2,"530":2,"1354":1,"1560":2,"1932":1,"2355":1,"2392":1,"2407":1,"2408":1}}],["pywinusb",{"2":{"1921":1}}],["pyhidapi",{"2":{"1921":1,"1923":1}}],["pytest",{"0":{"407":1},"2":{"277":1,"407":5,"442":1,"443":1,"447":1,"483":1}}],["pythonimport",{"2":{"1923":1}}],["pythonistas",{"2":{"455":1}}],["pythonfrom",{"2":{"292":1}}],["python3",{"2":{"158":1,"366":1,"429":1,"1441":1,"2464":4}}],["python",{"0":{"23":1,"406":1,"455":1},"2":{"23":1,"70":2,"76":1,"149":1,"158":1,"160":2,"282":3,"364":1,"366":1,"406":2,"407":2,"430":4,"432":1,"442":1,"444":1,"446":2,"455":2,"457":1,"461":1,"466":1,"479":1,"483":1,"484":1,"485":2,"555":2,"607":3,"613":2,"614":3,"1441":1,"1921":1,"1923":1,"2238":1,"2461":1,"2464":4,"2575":1}}],["pyformat",{"2":{"199":1}}],["py",{"2":{"76":1,"114":1,"222":1,"282":3,"430":1,"460":1,"484":1,"485":1,"607":3,"613":1,"614":3,"2467":2}}],["pirate",{"0":{"2339":1},"1":{"2340":1},"2":{"2339":2,"2340":1}}],["piezos",{"2":{"1391":1}}],["piezo",{"2":{"656":2,"662":1,"1388":1,"1391":1,"1392":1,"1395":2}}],["piece",{"2":{"481":1,"614":1,"1300":1,"2279":1,"2323":1}}],["pieces",{"2":{"249":1,"481":1,"2272":2,"2457":1,"2750":1}}],["pitch",{"2":{"231":1,"1403":3,"1793":4,"2371":4}}],["pi50",{"2":{"211":2}}],["piantor",{"2":{"211":1}}],["piggy60",{"2":{"207":4,"211":2}}],["pizza65",{"2":{"191":1}}],["pizzakeyboards",{"2":{"191":1}}],["pi60",{"2":{"191":1,"236":1}}],["pio0",{"2":{"1134":1,"1229":1,"1908":1}}],["pio1",{"2":{"249":1,"1134":2,"1229":2,"1908":2}}],["pio",{"0":{"1134":1,"1221":1,"1229":1,"1908":1},"2":{"176":2,"191":3,"211":1,"249":1,"1126":1,"1127":3,"1130":3,"1134":7,"1221":2,"1224":2,"1229":2,"1317":2,"1908":4,"2531":2,"2543":4}}],["pi",{"0":{"163":1,"492":1,"1321":1,"2249":1,"2531":1},"1":{"2532":1,"2533":1,"2534":1,"2535":1,"2536":1,"2537":1,"2538":1,"2539":1,"2540":1,"2541":1,"2542":1,"2543":1,"2544":1,"2545":1},"2":{"163":1,"176":1,"189":1,"191":1,"199":1,"1127":1,"1130":1,"1134":1,"1311":2,"1315":6,"1322":6,"1908":1,"2533":1,"2534":1,"2545":1,"2712":1}}],["pipe",{"2":{"1677":1,"2378":1,"2399":1,"2738":1}}],["pipes",{"2":{"334":1}}],["pipeline",{"2":{"198":1,"1559":1,"2567":1}}],["pip",{"0":{"366":1},"2":{"158":2,"366":2,"429":1,"1441":1,"2464":6,"2465":1}}],["pillow",{"0":{"158":1},"2":{"158":2,"160":1,"2575":1}}],["pistachio",{"2":{"134":1,"143":6,"222":1}}],["picture",{"2":{"2566":1}}],["picro",{"2":{"2545":1}}],["pic",{"2":{"2339":1}}],["picks",{"2":{"2261":1}}],["picky",{"2":{"455":1}}],["picking",{"2":{"156":1}}],["picked",{"2":{"130":2,"145":1,"163":1,"210":1,"232":1,"248":1,"523":1,"1440":1}}],["pick",{"2":{"120":1,"428":1,"435":1,"453":1,"526":1,"555":1,"627":1,"639":1,"1242":1,"1396":1,"1496":1,"1652":1,"1838":2,"1852":3,"1930":1,"2553":1,"2556":1,"2718":1}}],["picolibc",{"2":{"134":1}}],["pico",{"2":{"55":15,"163":1,"191":1,"199":1,"236":1,"241":4,"691":1,"2249":1,"2533":2}}],["pimoroni",{"0":{"1847":1},"2":{"114":2,"118":2,"176":1,"1847":9}}],["pixdata",{"2":{"2574":1,"2577":3}}],["pixels",{"2":{"1804":2,"1807":2,"1815":3,"1817":1,"1822":5,"1839":5,"2139":3,"2141":1,"2143":5,"2577":9,"2587":2,"2594":2,"2596":2}}],["pixel",{"2":{"134":1,"149":1,"176":1,"199":1,"222":2,"248":1,"277":1,"1804":1,"1822":2,"1949":9,"2143":2,"2574":1,"2575":2,"2576":5,"2577":7,"2585":2,"2592":2,"2596":8,"2598":4,"2711":3}}],["pix",{"2":{"74":2}}],["pid>",{"2":{"375":1}}],["pid",{"0":{"1242":1},"1":{"1243":1},"2":{"70":1,"111":1,"169":1,"176":1,"184":1,"249":2,"266":1,"375":1,"502":1,"628":1,"629":1,"1242":1,"1278":1,"2299":1,"2556":3,"2566":1,"2699":1}}],["pink",{"2":{"1953":2,"2058":2}}],["pinky",{"2":{"1410":1}}],["pinwheels",{"2":{"1949":3,"2711":1}}],["pinwheel",{"2":{"1728":4,"1948":2,"1949":12,"2711":3}}],["pings",{"2":{"726":1}}],["ping",{"0":{"726":1},"1":{"727":1,"728":1},"2":{"726":1,"2566":1}}],["pintomux",{"2":{"199":1,"638":1,"639":1}}],["pinouts",{"2":{"1319":1,"1558":1,"2269":1,"2353":1}}],["pinout",{"2":{"176":1,"511":2,"633":1,"1321":1,"1558":1,"2269":1,"2275":1,"2352":1,"2533":1,"2545":2}}],["pinnacle",{"2":{"118":2,"175":1,"176":2,"191":1,"1841":3,"1842":19,"1843":5,"1844":3,"1845":3,"1879":1}}],["pinxx",{"2":{"114":1}}],["pins>",{"2":{"2131":2}}],["pins",{"0":{"1459":1,"2516":1,"2517":1},"2":{"49":1,"70":1,"111":2,"112":2,"114":2,"134":1,"176":2,"191":2,"199":2,"211":1,"236":2,"249":1,"277":1,"334":2,"502":14,"511":12,"563":1,"575":1,"576":2,"580":11,"606":1,"609":1,"630":1,"633":1,"635":4,"655":1,"661":1,"662":1,"663":1,"666":1,"667":1,"702":2,"703":2,"707":1,"734":1,"757":1,"760":1,"786":1,"789":1,"790":1,"792":1,"818":1,"822":1,"850":1,"851":1,"852":1,"854":1,"855":1,"857":1,"885":1,"886":1,"888":1,"889":1,"891":1,"919":1,"922":1,"923":1,"925":1,"953":1,"956":1,"957":1,"959":1,"987":1,"990":1,"991":1,"993":1,"1021":1,"1022":1,"1023":1,"1024":1,"1025":1,"1027":1,"1055":1,"1056":1,"1057":1,"1058":1,"1059":1,"1061":1,"1089":1,"1090":1,"1092":1,"1093":1,"1095":1,"1125":1,"1127":1,"1129":2,"1130":2,"1139":1,"1142":4,"1145":1,"1148":1,"1176":2,"1177":3,"1195":1,"1197":2,"1198":2,"1223":1,"1234":1,"1294":1,"1314":1,"1319":1,"1323":1,"1324":1,"1387":2,"1390":1,"1391":1,"1394":1,"1395":1,"1399":1,"1459":3,"1464":1,"1466":1,"1471":2,"1492":1,"1547":3,"1557":5,"1558":7,"1562":9,"1573":4,"1574":1,"1591":3,"1715":1,"1717":1,"1820":7,"1849":8,"1906":1,"1908":1,"2061":3,"2125":1,"2131":9,"2237":1,"2268":1,"2272":1,"2275":2,"2276":3,"2278":1,"2286":1,"2328":3,"2352":1,"2353":1,"2450":1,"2514":1,"2515":1,"2516":2,"2518":2,"2519":5,"2521":1,"2525":1,"2529":2,"2530":1,"2532":1,"2533":2,"2534":1,"2540":1,"2542":2,"2543":1,"2557":5,"2558":7,"2566":1,"2576":2,"2638":1,"2648":1,"2676":1,"2677":2,"2682":2,"2684":1,"2689":6,"2697":3}}],["pin",{"0":{"243":1,"673":2,"679":2,"1123":1,"1126":1,"1129":1,"1180":1,"1236":1,"1314":1,"1551":1,"2124":1,"2125":1,"2515":1,"2533":1,"2558":1},"1":{"674":2,"680":2,"1181":1,"1182":1,"2516":1,"2517":1,"2518":1,"2519":1},"2":{"28":2,"45":1,"70":2,"93":1,"111":1,"112":2,"114":5,"134":1,"149":1,"160":4,"172":1,"175":1,"176":2,"190":1,"191":1,"199":4,"201":3,"211":8,"222":1,"236":1,"243":33,"249":3,"266":1,"277":10,"495":1,"502":26,"506":4,"509":3,"510":7,"511":1,"576":5,"580":3,"635":1,"636":1,"638":5,"639":9,"644":6,"656":1,"661":5,"662":4,"666":8,"674":3,"680":3,"684":5,"685":2,"694":2,"695":1,"696":34,"703":4,"707":2,"731":3,"757":2,"758":1,"786":2,"787":1,"792":1,"818":2,"819":1,"822":1,"850":2,"857":1,"885":2,"891":1,"919":2,"920":1,"925":1,"953":2,"954":1,"959":1,"987":2,"988":1,"993":1,"1021":2,"1027":1,"1055":2,"1061":1,"1089":2,"1095":1,"1122":1,"1123":3,"1124":2,"1126":5,"1127":3,"1129":12,"1130":7,"1134":2,"1140":2,"1141":2,"1142":6,"1145":2,"1146":1,"1148":1,"1176":3,"1177":13,"1181":3,"1194":1,"1198":8,"1214":3,"1223":2,"1225":4,"1226":4,"1230":1,"1234":13,"1235":4,"1236":5,"1293":2,"1312":1,"1314":3,"1319":2,"1320":2,"1325":1,"1378":1,"1386":1,"1387":10,"1388":2,"1390":4,"1391":3,"1392":3,"1393":2,"1394":5,"1395":4,"1396":5,"1399":9,"1457":4,"1458":2,"1459":4,"1462":2,"1466":1,"1467":1,"1469":2,"1471":3,"1492":4,"1496":1,"1547":1,"1551":1,"1562":1,"1570":5,"1573":8,"1591":6,"1630":1,"1631":1,"1633":4,"1640":3,"1715":11,"1717":9,"1819":7,"1820":3,"1834":12,"1835":3,"1836":6,"1842":3,"1846":8,"1848":12,"1849":11,"1851":16,"1902":1,"1903":2,"1904":2,"1905":4,"1906":2,"1907":2,"1908":3,"2032":11,"2061":2,"2119":2,"2120":2,"2124":4,"2125":3,"2128":2,"2131":1,"2141":6,"2231":2,"2238":2,"2263":3,"2276":1,"2330":3,"2332":3,"2334":3,"2339":2,"2344":1,"2352":1,"2516":3,"2517":4,"2518":4,"2521":1,"2524":2,"2529":1,"2530":1,"2533":2,"2534":2,"2539":1,"2541":15,"2543":2,"2558":4,"2566":1,"2576":64,"2673":1,"2675":4,"2676":3,"2677":2,"2684":6,"2685":5,"2689":1,"2692":4,"2693":4,"2697":4,"2700":2}}],["pliers",{"2":{"2266":1,"2273":1}}],["pl",{"2":{"2153":3}}],["ply2",{"2":{"1553":2,"2363":1}}],["ply1",{"2":{"1553":2,"2363":1}}],["plywrks",{"2":{"211":1}}],["plover",{"0":{"2145":1,"2146":1},"1":{"2147":1,"2148":1,"2149":1},"2":{"1332":1,"1343":1,"1549":4,"2144":1,"2145":5,"2146":6,"2150":2,"2151":2,"2703":4}}],["ploopyco",{"2":{"266":1}}],["ploopy",{"2":{"134":1,"199":1}}],["plump",{"2":{"2279":1}}],["plunger",{"2":{"1573":1}}],["pluggable",{"2":{"2118":1}}],["plugging",{"2":{"1270":1,"1495":1,"2114":1,"2118":1,"2237":1,"2305":2,"2450":1,"2556":1}}],["plugged",{"2":{"509":4,"626":1,"1254":1,"2177":1,"2669":1}}],["plug",{"2":{"624":1,"626":1,"1300":1,"1553":1,"2278":1,"2347":1,"2353":1,"2450":2}}],["plugins",{"0":{"2496":1,"2499":1},"1":{"2497":1,"2498":1,"2499":1},"2":{"2496":1,"2499":1}}],["plugin",{"2":{"445":1,"454":1,"2249":2,"2492":1,"2497":1,"2499":1,"2513":1}}],["plus",{"2":{"143":2,"176":2,"211":2,"222":1,"226":1,"241":4,"1822":1,"2143":1,"2268":1,"2355":1,"2378":1,"2394":1,"2399":1}}],["plenty",{"2":{"488":1,"1684":1}}],["plexus75",{"2":{"143":2}}],["pleased",{"2":{"224":1}}],["please",{"2":{"14":1,"16":1,"37":1,"43":1,"49":1,"195":1,"196":1,"228":1,"240":1,"273":1,"276":1,"329":1,"367":1,"446":2,"453":1,"455":1,"479":1,"485":1,"535":1,"540":1,"543":1,"547":1,"548":1,"549":1,"551":2,"556":1,"557":1,"560":3,"585":1,"623":1,"641":1,"1129":1,"1219":1,"1260":2,"1261":1,"1330":1,"1376":1,"1380":1,"1501":1,"1553":1,"1554":1,"1576":1,"1577":1,"1677":1,"1830":1,"1902":1,"1904":1,"1921":1,"2032":1,"2042":1,"2183":1,"2260":1,"2286":1,"2297":1,"2300":1,"2306":1,"2409":1,"2417":1,"2427":1,"2453":1,"2466":1,"2473":1,"2476":1,"2535":1,"2536":1,"2537":1,"2553":2,"2554":2,"2565":1,"2569":1,"2578":1,"2579":1,"2581":1,"2713":1,"2738":1,"2751":1}}],["plastic",{"2":{"2274":1}}],["placing",{"2":{"2035":1,"2311":1}}],["placement",{"2":{"2120":1,"2169":1}}],["placeholder",{"2":{"1383":1,"2709":2}}],["placed",{"2":{"314":1,"481":1,"1454":1,"1471":1,"1531":1,"1817":1,"2120":1,"2133":1,"2279":1,"2299":1,"2300":1,"2311":1,"2440":1,"2447":1,"2555":1,"2566":2}}],["place",{"2":{"114":1,"176":2,"182":1,"194":1,"249":1,"404":1,"452":1,"453":1,"474":1,"575":1,"621":2,"631":1,"1239":1,"1270":2,"1275":1,"1278":1,"1344":1,"1380":1,"1398":1,"1440":1,"1459":1,"1509":1,"2126":1,"2133":1,"2164":1,"2169":1,"2245":1,"2247":1,"2249":1,"2258":1,"2267":1,"2270":1,"2273":3,"2275":1,"2276":1,"2280":1,"2319":1,"2405":2,"2480":1,"2554":1,"2620":1,"2701":1,"2710":1,"2714":1,"2728":1,"2757":1}}],["places",{"2":{"111":1,"331":1,"470":1,"557":1,"610":1,"1527":1,"1534":1,"2169":1,"2350":1,"2614":1,"2746":1}}],["plates",{"2":{"2303":1}}],["plate",{"2":{"2266":2,"2267":4,"2270":1}}],["plat",{"2":{"133":1,"134":1}}],["platforms",{"2":{"50":1,"93":1,"137":1,"156":1,"160":1,"176":1,"191":1,"222":1,"455":1,"560":1,"695":1,"696":1,"1122":1,"1124":1,"1247":1,"2743":2}}],["platform",{"2":{"50":2,"65":1,"75":1,"111":1,"113":4,"114":4,"123":1,"133":5,"134":5,"149":1,"160":1,"163":2,"189":1,"191":1,"199":7,"211":1,"654":1,"696":1,"1121":1,"1463":1,"1469":1,"1811":1,"2576":2,"2623":1,"2743":4,"2754":1}}],["plans",{"2":{"2756":1}}],["planning",{"0":{"2268":1},"1":{"2269":1},"2":{"2267":1,"2271":1,"2276":1,"2277":1}}],["planned",{"2":{"88":1,"560":1,"2063":1,"2266":1,"2270":1}}],["plan",{"2":{"143":2,"561":1,"617":1,"2268":2,"2456":1}}],["planck",{"0":{"17":1,"1243":1},"2":{"17":1,"270":2,"277":2,"331":2,"370":2,"378":1,"383":1,"393":2,"394":2,"395":1,"396":1,"624":7,"1243":1,"1265":1,"1287":4,"1343":1,"1351":4,"1352":2,"1376":2,"1393":2,"1405":2,"1440":1,"1921":1,"2102":1,"2145":1,"2146":1,"2155":1,"2231":2,"2238":2,"2252":2,"2255":1,"2262":8,"2268":2,"2281":1,"2294":1,"2425":4,"2440":1,"2452":2}}],["plain",{"2":{"1500":1,"1948":2,"2034":1,"2376":1,"2407":1,"2429":2,"2457":2,"2492":1,"2503":1}}],["plain60",{"2":{"57":2}}],["plaid",{"2":{"37":2,"249":1}}],["player",{"2":{"2355":1,"2393":1}}],["played",{"2":{"659":2,"1400":1,"1578":2}}],["plays",{"2":{"1398":12,"1399":16}}],["playback",{"2":{"1357":1,"1403":2,"2106":1,"2107":1,"2355":1}}],["playing",{"2":{"572":1,"654":1,"659":1,"1397":1,"1403":2,"1436":3,"1507":1,"2107":1}}],["play",{"0":{"27":2},"2":{"27":2,"222":1,"336":1,"479":1,"572":2,"1332":2,"1357":1,"1386":1,"1398":3,"1403":1,"1416":1,"1448":2,"1511":1,"1549":2,"1553":2,"1556":2,"1665":9,"1672":1,"1686":5,"1718":3,"2074":1,"2180":6,"2355":2,"2363":2,"2393":2,"2513":2,"2607":1,"2676":1,"2750":1}}],["p",{"0":{"1609":1,"1613":1,"2085":1,"2087":1},"1":{"1610":1,"1614":1,"2086":1,"2088":1},"2":{"14":1,"211":1,"266":3,"292":1,"313":1,"374":4,"530":2,"633":2,"702":1,"789":1,"820":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1176":1,"1197":1,"1448":3,"1451":1,"1452":1,"1458":1,"1466":1,"1467":1,"1503":1,"1593":1,"1594":2,"1813":8,"1814":1,"1816":2,"1822":7,"1823":6,"1932":1,"1948":1,"2034":1,"2100":1,"2101":1,"2137":8,"2138":1,"2143":3,"2148":2,"2153":2,"2169":2,"2233":2,"2236":1,"2347":3,"2355":3,"2376":1,"2386":3,"2407":1,"2435":1,"2512":4,"2710":2}}],["paper",{"2":{"2150":2}}],["paw",{"0":{"1846":1},"2":{"1846":2}}],["paw3204",{"2":{"176":1,"1846":3}}],["pam8302",{"2":{"1399":1}}],["pa0",{"2":{"1141":1}}],["pa3",{"2":{"1140":1,"1141":1,"1142":1}}],["pa2",{"2":{"1140":1,"1141":1,"1142":1}}],["pa1",{"2":{"1141":1}}],["pa15",{"2":{"1140":1,"1141":1}}],["pa14",{"2":{"1140":1,"1141":1}}],["pa11",{"2":{"661":1}}],["pa10",{"2":{"661":1,"1140":1,"1141":1,"1142":1}}],["pa9",{"2":{"661":1,"1140":1,"1141":1,"1142":1}}],["pa8",{"2":{"661":1,"1396":2}}],["pasted",{"2":{"2566":1}}],["paste",{"2":{"2255":1,"2349":1,"2355":2,"2392":2,"2414":1,"2415":1,"2437":1,"2566":1,"2615":1}}],["past",{"0":{"338":1,"351":1},"2":{"1414":1,"2355":1,"2394":1,"2739":1,"2747":1}}],["password",{"2":{"2438":1}}],["passwords",{"2":{"1353":1,"2611":1}}],["passes",{"2":{"1341":1,"1447":1,"2031":1}}],["passed",{"2":{"194":1,"374":2,"385":1,"387":1,"396":2,"411":3,"588":2,"597":1,"598":1,"1176":1,"1177":1,"1212":1,"1430":1,"1445":2,"1670":1,"1675":2,"1822":2,"1853":1,"1854":1,"1953":1,"2058":1,"2128":1,"2143":2,"2162":2,"2293":1,"2311":1,"2612":2}}],["passing",{"2":{"506":1,"1822":1,"1854":1,"2143":1,"2170":1,"2293":1,"2417":1}}],["pass",{"2":{"22":1,"114":1,"130":1,"134":1,"149":2,"282":3,"341":1,"400":1,"432":2,"441":1,"447":1,"454":1,"474":1,"476":4,"1335":1,"1403":1,"1451":1,"1452":1,"2311":2,"2353":1,"2577":1,"2702":1}}],["pauses",{"2":{"660":1}}],["pause",{"2":{"336":1,"502":1,"1357":1,"1586":1,"1665":8,"2355":4,"2392":2,"2393":2,"2450":1}}],["paus",{"2":{"313":1,"530":2,"2355":1,"2392":1,"2408":1}}],["pay",{"2":{"2125":1}}],["payloads",{"2":{"1921":1}}],["payload",{"0":{"313":1},"2":{"313":1,"314":1,"1921":1}}],["paying",{"2":{"198":1}}],["pain",{"2":{"2276":1}}],["painter",{"0":{"153":1,"232":1,"248":1,"408":1,"409":1,"410":1,"2573":1,"2574":1,"2575":1,"2576":1,"2577":1,"2578":1,"2580":1,"2581":1,"2582":1},"1":{"2574":1,"2575":1,"2576":1,"2577":1,"2579":1,"2580":1,"2581":2,"2582":2,"2583":1,"2584":1},"2":{"153":5,"158":1,"160":1,"176":1,"199":2,"211":2,"232":5,"248":3,"249":1,"408":1,"409":1,"410":1,"2573":19,"2574":12,"2575":11,"2576":41,"2577":44,"2578":2,"2579":5,"2581":3}}],["paid",{"2":{"551":1,"2569":1}}],["pairs",{"0":{"2182":1},"2":{"529":1,"612":1,"1547":1,"1934":1,"2183":1,"2671":1}}],["pair",{"2":{"202":1,"1562":1,"1908":1,"2199":1,"2203":1}}],["pachi",{"2":{"211":2,"277":1}}],["packaging",{"0":{"367":1},"2":{"2272":1}}],["package",{"2":{"324":1,"358":2,"367":2,"460":1,"461":1,"1241":1,"1441":1,"2351":1,"2466":2,"2467":1,"2496":1,"2497":2,"2498":1,"2546":1,"2549":1,"2647":1}}],["packages",{"0":{"2466":1},"2":{"167":1,"331":1,"364":1,"2351":1,"2462":1,"2466":1,"2509":1,"2546":1}}],["pack",{"2":{"331":1,"2255":1,"2510":2}}],["packs",{"2":{"331":3,"2131":1}}],["packed",{"2":{"236":2,"1638":1,"1677":2,"2585":1,"2587":1,"2588":1,"2589":2,"2592":1,"2593":1,"2594":1,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1,"2738":2}}],["packets",{"2":{"263":1,"1830":2,"2147":2,"2148":2,"2152":1}}],["packet",{"2":{"236":2,"263":1,"502":1,"2147":5,"2148":3,"2152":2,"2699":1}}],["packing",{"2":{"199":1}}],["packrat",{"2":{"143":2}}],["pacman",{"2":{"160":1,"2351":1,"2431":1,"2464":1,"2466":1}}],["pal2",{"2":{"2575":3}}],["pal256",{"2":{"2575":3}}],["pal4",{"2":{"2575":3}}],["pal16",{"2":{"2575":3}}],["palsetpadmode",{"2":{"707":2}}],["palettes",{"2":{"2574":1}}],["palette",{"0":{"2590":1,"2597":1},"2":{"160":1,"249":1,"2512":2,"2574":1,"2575":6,"2585":2,"2587":1,"2590":3,"2592":3,"2596":14,"2597":8}}],["paladinpad",{"2":{"134":1}}],["paladin64",{"2":{"122":2,"211":1}}],["pal",{"2":{"133":1,"134":1,"211":1,"661":2,"697":1,"703":2,"707":6,"1124":2,"1127":1,"1129":2,"1130":1,"1177":3,"1198":4,"1226":2,"1230":1,"1320":1,"1396":1,"1469":1,"1906":1}}],["patience",{"2":{"2569":1}}],["patient",{"2":{"551":1}}],["patching",{"2":{"2477":1}}],["patch",{"2":{"211":1,"2477":3}}],["patterns",{"2":{"381":1,"606":2,"1943":1,"2292":1}}],["pattern",{"2":{"118":1,"125":1,"185":1,"198":1,"428":1,"2648":1,"2728":1}}],["path=",{"2":{"2468":1}}],["path=raw",{"2":{"1923":1}}],["pathlib",{"2":{"292":1}}],["paths",{"2":{"132":1,"134":1,"149":1,"176":1,"199":1,"331":1,"554":1,"2509":1}}],["path",{"2":{"6":1,"50":1,"114":1,"211":1,"292":3,"331":2,"335":1,"393":1,"394":1,"405":1,"407":1,"425":1,"426":2,"450":1,"665":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1376":2,"1438":1,"1923":1,"2252":1,"2255":4,"2262":4,"2277":1,"2347":1,"2353":3,"2421":1,"2435":1,"2437":2,"2445":1,"2446":1,"2468":2,"2469":1,"2480":3,"2508":3,"2513":7,"2575":1}}],["padding",{"2":{"2585":1,"2592":1,"2705":1}}],["paddlegame",{"2":{"114":1}}],["pads",{"2":{"624":1,"1562":1,"2133":2}}],["pad",{"0":{"2394":1},"2":{"114":2,"191":1,"236":1,"241":5,"249":2,"266":1,"1177":1,"1385":1,"1557":2,"1879":1,"2131":1,"2133":3,"2272":1}}],["pans",{"2":{"1822":1,"2143":1}}],["pan",{"2":{"211":1,"1822":1,"2143":1}}],["panel",{"2":{"153":1,"248":1,"1813":2,"2183":1,"2355":2,"2393":2,"2573":2,"2576":29,"2577":4}}],["panels",{"2":{"123":1,"153":2,"248":1,"2567":1,"2576":3,"2577":3}}],["pandora",{"2":{"114":1,"211":1}}],["pancake",{"2":{"37":2}}],["paren",{"2":{"2378":2,"2399":2}}],["parens",{"2":{"2170":1}}],["parenthesis",{"2":{"2108":1,"2109":6,"2110":6,"2382":6}}],["parentheses",{"0":{"469":1},"2":{"469":2,"2112":1,"2170":1}}],["parent",{"2":{"72":1,"149":1,"249":1,"266":1,"373":1,"559":1,"2498":1}}],["parity",{"2":{"1907":1,"2150":1}}],["paryz",{"2":{"199":1}}],["parse",{"2":{"149":1,"612":1}}],["parsing",{"2":{"76":1,"92":1,"176":1,"191":1,"199":1,"211":1,"236":1,"380":1,"430":1,"436":1,"2509":1,"2587":1,"2593":1,"2594":1}}],["paragraph",{"2":{"616":2}}],["params",{"2":{"199":1,"1729":11,"1952":11}}],["parameter",{"2":{"191":1,"460":1,"598":1,"1215":1,"1326":1,"1369":1,"1716":1,"2126":2,"2252":1,"2577":2}}],["parameters",{"2":{"70":1,"249":1,"1182":1,"1287":1,"2252":3,"2402":1,"2566":1}}],["parallel",{"2":{"114":1,"134":1,"236":1,"370":3,"396":5,"411":5,"1367":1,"1471":1,"2273":1,"2576":1}}],["participating",{"2":{"2713":1}}],["particularly",{"2":{"467":1,"552":1,"609":1,"2131":1}}],["particular",{"0":{"1877":1},"2":{"453":1,"455":1,"460":1,"500":1,"559":3,"635":2,"707":1,"726":1,"1288":1,"1341":1,"1344":1,"1380":1,"1398":1,"1451":1,"1469":1,"1605":1,"1861":1,"1876":1,"1941":1,"2172":1,"2228":1,"2264":2,"2274":2,"2319":1,"2348":1,"2351":1,"2423":1,"2494":1,"2548":1,"2570":1,"2640":1}}],["parties",{"2":{"2546":1}}],["partialremap",{"2":{"1142":2}}],["partially",{"2":{"176":1,"199":1,"236":2,"663":1}}],["partial",{"2":{"49":1,"1316":1,"1317":1,"1447":1,"2226":1,"2576":1}}],["party",{"2":{"317":1,"457":1,"550":1,"2183":1,"2302":1,"2720":1}}],["parts",{"0":{"2266":1},"2":{"172":1,"304":1,"482":1,"552":1,"703":1,"1177":1,"1198":1,"1859":2,"2274":1,"2348":2,"2476":1,"2753":1}}],["part",{"2":{"67":1,"76":1,"86":1,"114":2,"134":1,"160":1,"176":2,"188":5,"191":5,"199":1,"211":8,"236":1,"262":1,"266":32,"292":1,"454":1,"469":1,"470":1,"560":1,"574":1,"602":1,"613":1,"623":1,"641":1,"1138":1,"1254":1,"1304":1,"1331":1,"1340":1,"1364":1,"1383":2,"1385":1,"1404":1,"1438":1,"1445":1,"1446":1,"1459":1,"1553":1,"1685":1,"1725":2,"1946":2,"2072":1,"2128":5,"2131":1,"2149":1,"2228":1,"2255":1,"2277":1,"2279":2,"2282":1,"2328":1,"2393":1,"2406":2,"2431":2,"2472":3,"2477":2,"2478":1,"2490":1,"2507":1,"2513":1,"2523":1,"2548":1,"2608":1,"2660":1,"2743":1,"2753":1}}],["page=shop",{"2":{"1242":1}}],["pagesize",{"2":{"2353":1}}],["pages",{"2":{"277":1,"279":1,"520":1,"602":1,"1304":1,"2303":2,"2353":3,"2419":1,"2535":1}}],["page",{"0":{"616":1,"830":2,"865":2,"899":2,"933":2,"967":2,"1001":2,"1035":2,"1069":2,"1103":2,"1156":2},"1":{"831":2,"866":2,"900":2,"934":2,"968":2,"1002":2,"1036":2,"1070":2,"1104":2,"1157":2},"2":{"13":1,"124":1,"163":1,"164":1,"194":1,"206":1,"210":1,"249":1,"278":2,"279":1,"303":1,"311":1,"322":1,"330":1,"351":1,"492":1,"496":2,"517":1,"519":1,"528":1,"536":1,"557":2,"567":1,"602":2,"605":1,"615":1,"616":4,"617":1,"621":3,"622":1,"669":1,"684":2,"685":2,"694":2,"704":1,"705":1,"792":1,"822":1,"830":1,"831":2,"857":1,"865":1,"866":2,"891":1,"899":1,"900":2,"925":1,"933":1,"934":2,"959":1,"967":1,"968":2,"993":1,"1001":1,"1002":2,"1027":1,"1035":1,"1036":2,"1061":1,"1069":1,"1070":2,"1095":1,"1103":1,"1104":2,"1148":1,"1156":1,"1157":2,"1237":1,"1244":1,"1259":1,"1264":2,"1266":1,"1273":2,"1279":2,"1300":1,"1301":1,"1304":2,"1310":1,"1325":1,"1586":2,"1589":1,"1821":2,"1822":7,"1881":1,"1902":1,"1920":3,"1921":1,"1923":4,"1932":2,"2143":7,"2255":1,"2256":1,"2263":4,"2282":3,"2287":1,"2288":1,"2289":1,"2290":1,"2291":1,"2298":1,"2316":1,"2317":1,"2335":1,"2353":8,"2354":2,"2355":6,"2385":1,"2392":4,"2393":3,"2394":2,"2439":1,"2460":1,"2492":1,"2503":1,"2523":1,"2546":1,"2553":1,"2555":1,"2561":1,"2562":1,"2564":1,"2571":1,"2601":1,"2613":1,"2671":1,"2672":3,"2722":1}}],["pong",{"2":{"2566":1}}],["podman",{"2":{"2251":2,"2252":3}}],["poop",{"2":{"2182":1}}],["poor",{"2":{"2169":1,"2719":2}}],["pop",{"2":{"2279":1}}],["populated",{"2":{"2746":1}}],["populates",{"2":{"2122":1}}],["populate",{"2":{"1332":1,"2553":1,"2746":1}}],["popularity",{"2":{"2630":1}}],["popular",{"2":{"236":1,"263":1,"1953":1,"2058":1,"2514":1,"2634":1,"2712":1}}],["popping",{"2":{"236":1}}],["policies",{"0":{"2717":1},"1":{"2718":1,"2719":1,"2720":1,"2721":1}}],["policy",{"0":{"2719":1},"1":{"2720":1,"2721":1},"2":{"1239":1,"2720":1}}],["policy=default",{"2":{"1239":1}}],["polish",{"2":{"2703":2}}],["polilla",{"2":{"253":2}}],["polarity",{"2":{"1181":1,"2524":1}}],["polaris",{"2":{"211":1,"388":4}}],["pololu",{"2":{"629":1,"2233":1,"2344":1}}],["polled",{"2":{"176":1,"1851":1}}],["poll",{"2":{"176":1,"511":2,"522":1,"1907":1,"2131":2,"2699":1}}],["polling",{"0":{"137":1},"2":{"112":1,"114":1,"137":1,"149":2,"502":2,"1851":1,"2697":2,"2699":1}}],["potentiometer",{"2":{"630":1,"1630":1,"1791":1}}],["potential",{"2":{"21":1,"142":1,"149":1,"262":1,"376":1,"397":1,"1918":1,"1921":1}}],["potentially",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"130":1,"337":1,"587":1,"628":1,"1331":1,"1336":1,"1499":1,"1921":1,"1929":1,"2118":1,"2226":1,"2411":1,"2702":1}}],["potato65s",{"2":{"211":1}}],["pocketavr",{"0":{"2335":1},"1":{"2336":1},"2":{"2335":3}}],["pocket",{"2":{"226":1,"236":1}}],["pockettype",{"2":{"57":2}}],["poc",{"2":{"176":1}}],["poker",{"2":{"122":1}}],["port>",{"2":{"2347":1}}],["portmento",{"2":{"1793":1,"2371":1}}],["portc",{"2":{"1387":1}}],["portuguese",{"2":{"1355":2,"2703":7}}],["portb",{"2":{"1312":1,"1387":1}}],["porting",{"2":{"1252":1,"2551":1,"2566":1}}],["portions",{"2":{"1685":1}}],["portion",{"2":{"228":1,"2263":1,"2530":1,"2686":1}}],["portamento",{"2":{"1793":1,"2371":1}}],["portability",{"2":{"699":1,"1174":1,"1195":1}}],["portal",{"2":{"122":2}}],["port",{"2":{"114":1,"134":2,"402":1,"403":1,"509":3,"625":1,"1295":2,"1793":1,"2146":3,"2150":2,"2234":1,"2329":1,"2331":1,"2333":1,"2335":1,"2337":1,"2339":1,"2344":1,"2347":2,"2371":1,"2513":3,"2516":1,"2528":1}}],["ports",{"0":{"1720":1},"2":{"114":1,"191":2,"1464":1,"2347":1,"2528":1,"2548":1}}],["powering",{"2":{"1471":1}}],["powerful",{"2":{"1334":1,"2168":1,"2314":1,"2417":1,"2514":1}}],["powers",{"2":{"1121":1,"2553":1,"2650":1}}],["powered",{"2":{"334":1,"537":1,"1573":1,"2540":1}}],["poweron",{"2":{"249":1}}],["poweroff",{"2":{"211":1}}],["power",{"0":{"479":1,"590":1,"1273":1,"1298":1},"2":{"70":1,"112":1,"134":3,"211":1,"222":1,"231":1,"262":1,"266":1,"502":2,"589":2,"590":1,"591":2,"606":1,"638":1,"660":1,"681":1,"684":2,"1181":1,"1225":1,"1273":3,"1292":1,"1298":1,"1331":1,"1335":1,"1399":5,"1471":1,"1570":1,"1594":1,"2061":1,"2153":1,"2175":2,"2183":1,"2263":1,"2299":4,"2355":4,"2392":2,"2393":2,"2417":1,"2529":1,"2566":1,"2577":7,"2676":2,"2699":1}}],["pose",{"2":{"1225":1}}],["possibility",{"2":{"1935":1,"2145":1,"2279":1}}],["possibilities",{"2":{"1655":1,"1662":1,"1725":1,"1946":1,"2280":1}}],["possibly",{"2":{"28":1,"50":1,"1226":2}}],["possible",{"2":{"11":1,"98":1,"99":1,"140":1,"224":1,"282":3,"315":1,"341":1,"355":1,"370":1,"466":1,"483":1,"496":2,"529":1,"551":1,"584":1,"587":1,"588":1,"655":1,"656":1,"660":1,"688":1,"758":1,"787":1,"819":1,"851":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1056":1,"1090":1,"1128":1,"1146":1,"1223":1,"1230":1,"1238":1,"1278":1,"1337":1,"1341":1,"1346":2,"1353":1,"1416":1,"1491":2,"1508":1,"1510":1,"1511":1,"1518":1,"1525":1,"1528":1,"1553":1,"1555":1,"1568":1,"1722":1,"1791":2,"1803":1,"1804":1,"1806":1,"1842":1,"1851":1,"1881":1,"1902":1,"1904":1,"1912":1,"1936":1,"1943":1,"1950":1,"1960":1,"2042":1,"2114":1,"2120":1,"2128":2,"2152":1,"2161":1,"2162":1,"2168":1,"2169":1,"2170":1,"2181":1,"2182":1,"2183":3,"2229":1,"2261":1,"2263":2,"2268":1,"2273":1,"2274":1,"2302":2,"2306":1,"2327":1,"2349":1,"2411":1,"2417":1,"2458":1,"2468":1,"2497":1,"2506":1,"2513":1,"2524":1,"2525":1,"2549":1,"2566":6,"2596":3,"2612":1,"2686":1,"2718":1,"2719":1,"2721":1,"2751":1,"2756":1,"2757":1}}],["possess",{"2":{"702":1,"1217":1,"1220":1,"2350":1}}],["possesses",{"2":{"633":1}}],["positive",{"2":{"465":2,"1822":1,"2143":1}}],["positives",{"2":{"199":1,"1416":1}}],["positioning",{"0":{"1533":1},"2":{"2577":1}}],["positional",{"2":{"393":1,"394":1}}],["positions",{"2":{"176":1,"211":1,"222":1,"1524":1,"1594":1,"1725":2,"1836":2,"1946":2,"2302":1,"2566":2,"2614":1,"2686":1,"2707":1}}],["position",{"0":{"1252":1,"1545":1},"1":{"1546":1},"2":{"62":1,"211":1,"1252":1,"1275":1,"1452":1,"1533":2,"1534":1,"1545":1,"1546":2,"1557":1,"1562":1,"1599":1,"1603":1,"1620":1,"1684":2,"1725":9,"1815":1,"1822":9,"1836":1,"1842":3,"1946":9,"1950":1,"2139":1,"2143":9,"2145":1,"2273":1,"2559":2,"2679":1,"2686":5,"2688":3,"2695":3,"2697":1,"2745":1}}],["pos",{"2":{"176":1,"1557":1,"2048":1,"2050":1}}],["postage",{"2":{"2269":2}}],["postprocess",{"2":{"176":1}}],["post",{"0":{"307":1,"348":1,"581":1,"582":1,"583":1,"2525":1},"1":{"349":1,"350":1,"582":1,"583":1},"2":{"74":1,"133":2,"134":3,"176":3,"266":2,"307":1,"312":1,"314":2,"343":1,"344":1,"574":2,"582":2,"583":2,"588":3,"1245":1,"1332":3,"1360":2,"1593":1,"1594":1,"1862":1,"1960":1,"2042":1,"2044":4,"2130":1,"2152":1,"2299":10,"2300":8,"2475":2,"2525":2,"2566":1,"2568":1,"2576":2,"2577":4,"2581":1,"2749":6}}],["posted",{"2":{"49":1,"2567":1}}],["points",{"2":{"453":1,"1451":1,"1670":1,"2152":1,"2162":1,"2181":3,"2182":3,"2183":5,"2263":3,"2279":1,"2523":1}}],["pointer",{"2":{"709":1,"712":1,"715":1,"718":1,"1189":1,"1192":1,"1207":1,"1209":1,"1233":1,"1448":1,"1798":1,"1815":5,"1822":1,"1832":1,"1836":1,"1921":1,"1922":1,"1926":1,"1928":1,"2139":5,"2143":1,"2162":2}}],["pointers",{"2":{"114":1,"222":1,"522":1,"1657":1}}],["pointed",{"2":{"21":1}}],["point",{"0":{"2199":1,"2206":1},"1":{"2200":1,"2207":1,"2208":1},"2":{"94":2,"215":2,"236":1,"340":1,"347":1,"349":1,"350":1,"581":1,"598":1,"602":1,"626":1,"627":2,"1270":1,"1304":1,"1430":1,"1441":1,"1451":1,"1515":1,"1562":1,"1648":1,"1725":2,"1864":1,"1946":2,"2125":1,"2162":2,"2169":1,"2171":1,"2181":1,"2183":1,"2184":3,"2200":2,"2206":1,"2208":1,"2209":1,"2223":1,"2263":1,"2276":1,"2282":1,"2307":1,"2384":3,"2408":1,"2443":1,"2475":1,"2477":2,"2513":2,"2524":1,"2553":1,"2557":1,"2576":1,"2589":2,"2688":1,"2695":1,"2704":1,"2730":1,"2743":1}}],["pointless",{"2":{"50":1,"94":1,"211":1,"236":1,"277":1}}],["pointing",{"0":{"118":1,"138":1,"175":1,"190":1,"1809":1,"1832":1,"1861":1,"1862":1,"1880":1},"1":{"1833":1,"1834":1,"1835":1,"1836":1,"1837":1,"1838":1,"1839":1,"1840":1,"1841":1,"1842":1,"1843":1,"1844":1,"1845":1,"1846":1,"1847":1,"1848":1,"1849":1,"1850":1,"1851":1,"1852":1,"1853":1,"1854":1},"2":{"6":1,"63":1,"118":12,"134":3,"138":4,"149":4,"175":5,"176":8,"190":4,"191":6,"211":3,"249":1,"266":1,"273":1,"505":1,"1531":1,"1809":1,"1832":2,"1833":1,"1834":3,"1835":1,"1842":2,"1844":2,"1845":1,"1846":2,"1848":3,"1849":7,"1850":5,"1851":22,"1852":16,"1853":11,"1854":11,"1855":9,"1857":3,"1858":2,"1859":1,"1860":1,"1861":5,"1862":6,"1863":2,"1864":3,"1866":2,"1868":1,"1879":2,"1880":10,"2129":5,"2284":1,"2689":1,"2725":1}}],["pryce",{"2":{"2750":1}}],["prune",{"2":{"359":1,"360":2}}],["pr12345",{"2":{"341":1}}],["practical",{"2":{"2311":1,"2414":1,"2719":1,"2720":1}}],["practically",{"2":{"337":1,"2176":1,"2348":1}}],["practice",{"2":{"1300":1,"1412":1,"1436":1,"2308":1,"2577":1}}],["practices",{"0":{"615":1,"2471":1},"1":{"2472":1},"2":{"352":1,"367":1,"455":1,"615":1,"2564":1,"2568":1}}],["pragma",{"2":{"134":1,"199":1,"211":1,"453":1,"1385":1,"1415":1,"1729":1,"1952":1,"2261":2,"2564":1,"2614":2}}],["pr20584",{"2":{"211":1}}],["pristine",{"2":{"2566":2}}],["private",{"2":{"2566":1}}],["privileged",{"2":{"2262":1}}],["privileges",{"2":{"1239":1,"1254":1}}],["price",{"2":{"2514":1}}],["prir",{"2":{"2355":1,"2392":1}}],["principle",{"2":{"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1,"1802":1,"2552":1}}],["println",{"2":{"2491":12}}],["printed",{"2":{"1138":1,"1863":1,"1923":1,"2263":1,"2280":1,"2352":1,"2467":1,"2533":1,"2701":1}}],["printedpad",{"2":{"277":1}}],["printer",{"2":{"191":1}}],["prints",{"2":{"160":1,"1255":1,"1341":2,"2574":1}}],["print",{"2":{"75":2,"114":1,"119":1,"149":1,"199":1,"249":1,"374":6,"378":1,"434":1,"470":1,"503":1,"566":2,"1250":9,"1252":1,"1255":3,"1363":1,"1530":5,"1586":1,"1605":1,"1606":1,"1607":1,"1608":1,"1609":1,"1610":1,"1830":4,"1923":7,"2263":13,"2355":2,"2375":1,"2392":2,"2728":1,"2757":1}}],["printing",{"0":{"432":1,"434":1},"1":{"433":1,"434":1,"435":1},"2":{"49":1,"211":1,"432":1,"503":1,"1498":1,"1628":1}}],["printf",{"0":{"24":1},"2":{"160":1,"176":4,"334":1,"432":1,"467":1,"470":1,"1239":1,"1448":1,"2705":1}}],["prioritized",{"2":{"341":1}}],["priority",{"2":{"236":1,"496":2,"703":4,"2403":1}}],["prior",{"2":{"251":1,"552":1,"2355":2,"2392":2}}],["primitives",{"2":{"2573":1}}],["primarily",{"2":{"575":1,"1128":1,"1268":2,"2345":1}}],["primary",{"2":{"191":1,"656":1,"1388":1,"1531":1,"1811":1,"2129":1,"2136":1,"2250":1,"2697":2}}],["primekb",{"2":{"211":1}}],["primus75",{"2":{"211":1}}],["prnt",{"2":{"119":1,"2375":1,"2728":3}}],["preamble",{"0":{"2283":1}}],["prerequisite",{"2":{"2251":1}}],["prerequisites",{"0":{"564":1,"2429":1,"2457":1,"2459":1,"2460":1,"2462":1,"2464":1,"2493":1,"2506":1},"1":{"2494":1,"2495":1},"2":{"402":1,"403":1}}],["preloaded",{"2":{"1578":1,"2240":1}}],["pregenerated",{"2":{"659":1}}],["precompiled",{"2":{"2346":1}}],["precomputed",{"2":{"1401":1}}],["precalculated",{"2":{"1820":2,"1821":3,"2142":1}}],["precedence",{"0":{"2403":1},"2":{"509":1,"2042":2,"2123":1,"2264":1,"2401":2,"2644":1,"2735":1}}],["precision",{"2":{"222":2,"630":1,"1573":1,"1634":12}}],["precisely",{"2":{"1658":1}}],["precise",{"2":{"134":1,"1804":1,"1807":1,"1808":1}}],["pretty=oneline",{"2":{"529":1,"530":1}}],["pretty",{"2":{"378":1,"453":1,"555":1,"560":1,"1250":1,"1262":1,"1264":1,"1286":1,"1383":1,"1906":1,"2270":1,"2311":1,"2454":1,"2455":1}}],["pretend",{"2":{"100":1}}],["predetermined",{"2":{"1496":1}}],["predefined",{"0":{"1426":1,"1427":1,"1428":1,"1429":1},"2":{"231":1,"659":1,"1393":1,"1426":1,"1427":1,"1428":1,"1429":1,"1881":1,"1933":1,"2607":1}}],["predicted",{"2":{"337":1}}],["preonic",{"2":{"211":1,"1243":1}}],["preflashed",{"2":{"2235":1}}],["preformatted",{"2":{"292":1}}],["preferring",{"2":{"2566":1}}],["preferred",{"2":{"116":1,"389":1,"390":1,"391":1,"2252":1,"2277":1,"2303":1,"2468":2,"2548":1,"2553":1,"2565":2,"2566":2,"2584":1,"2614":1}}],["prefers",{"2":{"2556":1}}],["preference",{"2":{"2436":1,"2566":2,"2729":1}}],["preferences",{"2":{"291":1,"435":1,"1567":1,"2183":1,"2508":1}}],["preferable",{"2":{"1326":1,"1573":1,"1874":1}}],["preferably",{"2":{"522":1,"1347":1,"2498":1,"2566":1}}],["prefer",{"2":{"282":3,"341":1,"432":1,"434":1,"440":1,"453":1,"457":2,"468":1,"470":1,"476":1,"479":1,"480":1,"481":1,"1248":1,"1326":1,"2444":1,"2565":1,"2566":2,"2750":1}}],["prefix=",{"2":{"358":1}}],["prefixed",{"2":{"236":1,"435":2,"1335":1,"1357":1,"2396":1,"2407":1,"2410":1,"2701":1}}],["prefix",{"2":{"199":3,"236":1,"249":1,"266":1,"1357":1,"1361":1,"1530":1,"2075":1,"2181":1,"2753":1}}],["prebuilt",{"0":{"164":1},"2":{"164":2,"1249":1,"2242":1}}],["preinstalled",{"2":{"2031":1}}],["preinstall",{"2":{"160":1}}],["preprocess",{"2":{"2162":1,"2749":1}}],["preprocessor",{"2":{"211":1,"453":3,"496":1,"1359":1,"2262":2,"2571":1}}],["prepend",{"2":{"1729":1,"1952":1}}],["prep",{"2":{"114":1,"149":1,"236":1}}],["preparing",{"2":{"396":1,"1381":1}}],["prepare",{"0":{"2458":1},"1":{"2459":1,"2460":1,"2461":1,"2462":1,"2463":1,"2464":1,"2465":1,"2466":1,"2467":1},"2":{"149":1,"222":1,"249":1,"346":1,"2060":1,"2183":1,"2270":1,"2458":1}}],["prepared",{"2":{"134":1,"560":1}}],["prepares",{"2":{"56":1}}],["preparation",{"2":{"86":1,"142":1,"1822":1,"2143":1}}],["presumably",{"2":{"1242":1}}],["presc",{"2":{"705":1}}],["presence",{"2":{"249":1,"1300":1,"1842":1,"2300":1}}],["presents",{"2":{"522":1,"625":1,"1355":1,"2235":1,"2237":1}}],["present",{"2":{"34":1,"201":2,"206":1,"228":1,"229":1,"236":1,"374":2,"387":1,"405":1,"462":1,"508":1,"535":1,"548":1,"633":1,"635":1,"681":1,"689":1,"693":1,"1326":1,"1378":1,"2146":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":2,"2242":2,"2245":1,"2247":1,"2249":1,"2325":1,"2450":1,"2477":1,"2548":2,"2556":1,"2566":3,"2586":1,"2593":1,"2597":1,"2702":1}}],["presets",{"2":{"160":3,"659":1,"1820":3}}],["pressure",{"2":{"1531":1,"1842":1}}],["presses",{"2":{"505":1,"567":2,"660":1,"1344":1,"1361":2,"1438":1,"1515":1,"1565":2,"1634":1,"1676":1,"1801":1,"1809":1,"1853":1,"1951":1,"2125":1,"2129":1,"2169":1,"2320":2,"2417":2,"2643":1,"2645":1,"2653":1,"2701":1}}],["pressed",{"0":{"1365":1},"2":{"46":2,"98":1,"194":2,"199":1,"202":1,"222":1,"505":1,"515":2,"534":6,"571":1,"572":5,"573":1,"588":1,"1252":9,"1299":1,"1302":1,"1303":1,"1325":2,"1332":6,"1335":2,"1344":1,"1359":8,"1360":4,"1365":2,"1371":1,"1372":1,"1373":1,"1375":1,"1384":2,"1385":1,"1403":1,"1411":1,"1412":1,"1430":1,"1451":1,"1497":1,"1499":1,"1503":1,"1504":2,"1510":1,"1511":3,"1517":1,"1518":4,"1521":1,"1564":1,"1566":1,"1568":4,"1579":1,"1582":1,"1634":5,"1653":2,"1655":1,"1656":2,"1659":2,"1661":1,"1663":1,"1665":1,"1670":4,"1671":4,"1673":5,"1674":3,"1675":4,"1676":2,"1680":1,"1682":1,"1683":1,"1791":1,"1792":1,"1808":1,"1830":2,"1853":1,"1857":1,"1858":1,"1859":3,"1864":4,"1865":2,"1868":1,"1871":1,"1874":3,"1878":2,"1896":1,"1912":1,"1929":1,"1931":1,"1932":1,"1933":1,"1940":4,"1941":5,"1943":2,"1950":2,"2044":1,"2078":2,"2112":1,"2145":1,"2147":1,"2152":6,"2153":1,"2154":1,"2161":3,"2162":3,"2168":1,"2169":4,"2172":1,"2279":1,"2311":6,"2320":1,"2364":1,"2366":2,"2367":2,"2381":1,"2413":1,"2414":3,"2415":2,"2417":1,"2490":3,"2524":1,"2604":2,"2641":1,"2649":1,"2680":1,"2689":3,"2728":4,"2729":4,"2736":3,"2745":2,"2748":2}}],["press",{"0":{"1517":1,"1518":1,"2320":1,"2736":1},"2":{"99":1,"114":1,"134":1,"191":2,"194":7,"199":1,"202":2,"206":2,"235":1,"266":1,"331":1,"336":2,"505":9,"541":1,"542":2,"572":1,"573":1,"588":1,"624":2,"628":1,"1270":1,"1286":1,"1287":1,"1299":19,"1300":1,"1325":1,"1332":1,"1359":1,"1361":1,"1368":1,"1398":5,"1399":5,"1411":2,"1414":1,"1430":2,"1431":1,"1435":3,"1436":3,"1438":1,"1442":1,"1506":3,"1517":1,"1518":4,"1520":2,"1521":1,"1529":2,"1553":4,"1643":1,"1651":2,"1655":1,"1675":1,"1676":1,"1685":1,"1798":1,"1805":1,"1836":1,"1839":2,"1847":1,"1887":1,"1891":1,"1929":2,"1935":1,"1937":1,"1950":1,"2125":1,"2145":1,"2149":1,"2152":2,"2156":1,"2162":1,"2169":2,"2171":2,"2182":1,"2230":2,"2233":2,"2235":2,"2236":2,"2238":2,"2243":1,"2244":1,"2278":1,"2305":1,"2311":4,"2320":1,"2322":1,"2373":19,"2383":1,"2408":1,"2450":3,"2455":1,"2512":2,"2566":1,"2611":1,"2654":2,"2663":1,"2672":1,"2674":2,"2728":1,"2729":1,"2731":2,"2732":3,"2733":2,"2734":1,"2735":6,"2736":9,"2737":3}}],["pressing",{"2":{"73":1,"99":1,"202":2,"211":1,"332":1,"540":1,"541":1,"626":1,"1255":1,"1292":1,"1303":1,"1325":1,"1353":1,"1431":1,"1499":1,"1500":3,"1503":1,"1514":1,"1656":2,"1803":2,"1804":1,"1807":1,"1858":1,"1864":1,"1929":1,"1936":1,"1940":1,"1941":1,"2305":1,"2311":1,"2490":3,"2491":2,"2654":1,"2659":1,"2662":1,"2680":2,"2729":1,"2735":1,"2738":2}}],["pre",{"0":{"203":1,"575":1,"576":1,"577":1,"2524":1,"2540":1},"1":{"576":1,"577":1,"2541":1,"2542":1},"2":{"34":2,"176":1,"194":1,"203":4,"211":2,"266":1,"371":1,"380":1,"574":1,"576":2,"577":2,"684":1,"685":1,"1319":1,"2268":1,"2274":1,"2321":1,"2524":2,"2525":1,"2540":1,"2542":1,"2566":4,"2746":1,"2749":3}}],["prev",{"2":{"1402":1,"1408":1,"1559":1,"1572":1,"1665":2,"1727":1,"2034":1,"2183":1,"2184":1,"2355":1,"2357":1,"2369":1,"2376":1,"2384":1,"2393":2}}],["preview",{"2":{"558":1,"2510":2,"2566":2}}],["previewing",{"0":{"558":1}}],["previous",{"2":{"24":2,"56":1,"57":1,"58":1,"98":1,"107":1,"124":1,"126":1,"145":1,"149":1,"191":1,"206":1,"231":1,"344":1,"349":2,"351":1,"500":1,"628":1,"629":1,"1275":1,"1303":1,"1402":1,"1408":1,"1572":2,"1665":1,"1727":1,"1753":1,"1754":1,"1923":1,"1932":2,"1980":1,"1981":1,"2034":1,"2052":2,"2053":2,"2147":1,"2161":1,"2171":1,"2184":1,"2191":1,"2261":2,"2273":1,"2296":1,"2311":1,"2355":2,"2357":1,"2369":1,"2376":1,"2384":1,"2393":2,"2421":1,"2437":1,"2439":1,"2477":1,"2566":1,"2577":1,"2748":1}}],["previously",{"2":{"14":1,"50":1,"166":1,"169":1,"170":1,"182":1,"184":1,"234":1,"276":1,"692":1,"2066":1,"2125":1,"2147":1,"2557":1,"2577":1}}],["prevention",{"2":{"818":1}}],["preventing",{"2":{"190":2,"191":1,"229":1,"1865":1,"1873":2}}],["prevent",{"2":{"186":1,"191":2,"199":1,"211":1,"222":1,"249":1,"347":1,"505":1,"516":1,"533":1,"597":1,"617":1,"689":1,"698":1,"1674":1,"1865":1,"1878":1,"2065":1,"2113":1,"2150":1,"2263":1,"2423":1,"2517":1,"2522":1,"2564":1,"2614":1,"2702":1}}],["prevented",{"2":{"103":1}}],["prevents",{"2":{"6":1,"1368":1,"1675":1,"1855":1,"2728":1}}],["pros",{"2":{"2181":1,"2270":1}}],["professional",{"2":{"2144":1}}],["profiles",{"2":{"1838":1,"2508":1}}],["profile",{"2":{"450":1,"451":1,"452":1}}],["profiler",{"2":{"211":1}}],["proficient",{"2":{"352":1,"2722":1}}],["prone",{"2":{"1338":1,"1437":1,"1516":1,"1520":1}}],["providing",{"2":{"557":1,"614":1,"1393":1,"2302":1,"2306":1,"2506":1,"2523":1,"2550":1,"2578":1}}],["provided",{"2":{"70":1,"125":1,"164":1,"185":1,"363":1,"385":1,"430":2,"511":7,"681":2,"688":1,"692":3,"1227":1,"1249":1,"1265":1,"1359":1,"1441":1,"1573":1,"1630":1,"1633":2,"1670":1,"1838":2,"1849":1,"1850":1,"2130":1,"2150":1,"2152":1,"2293":1,"2348":1,"2482":1,"2550":1,"2566":3,"2567":1}}],["provides",{"2":{"24":1,"45":1,"69":1,"164":1,"174":1,"318":1,"402":1,"495":1,"559":1,"563":1,"565":1,"570":1,"642":1,"663":1,"1123":1,"1126":1,"1129":1,"1212":1,"1630":1,"1683":1,"1714":1,"1725":1,"1807":1,"1851":3,"1922":1,"1946":1,"2047":1,"2144":1,"2458":1,"2492":1,"2503":1,"2506":1,"2510":1,"2637":1,"2701":1}}],["provide",{"2":{"4":1,"160":1,"199":1,"213":1,"234":1,"436":1,"456":1,"516":1,"566":1,"696":1,"1314":1,"1316":1,"1317":1,"1430":1,"1439":1,"1440":1,"1573":1,"1633":1,"1714":1,"1716":1,"1721":1,"1722":1,"1791":1,"1851":1,"2118":1,"2263":1,"2305":1,"2351":1,"2540":1,"2542":1,"2546":1,"2571":1}}],["proves",{"2":{"481":1}}],["probe",{"2":{"2353":1,"2513":5}}],["probability",{"2":{"2038":1}}],["probably",{"2":{"233":1,"331":1,"472":1,"626":1,"1283":1,"1287":1,"1678":1,"1825":1,"2262":1,"2274":2,"2279":1,"2347":1,"2497":1,"2501":1,"2756":1}}],["problem",{"0":{"1298":1,"1677":1},"2":{"1242":1,"1274":1,"1281":1,"1293":1,"1340":1,"1383":1,"1410":1,"1416":1,"1499":1,"2305":1,"2311":1,"2752":1}}],["problems",{"0":{"549":1},"2":{"211":1,"254":1,"337":1,"376":4,"381":1,"397":1,"541":1,"554":1,"1295":1,"1337":1,"1398":1,"2262":1,"2293":1,"2424":1,"2454":1,"2466":1,"2516":1,"2755":1}}],["problematic",{"2":{"123":1,"254":1}}],["proceed",{"2":{"626":1,"2433":1}}],["procedures",{"2":{"2418":1}}],["procedure",{"0":{"357":1},"1":{"358":1,"359":1,"360":1,"361":1},"2":{"176":1,"191":1,"2122":1,"2130":1,"2566":1}}],["processes",{"2":{"342":1}}],["processed",{"2":{"114":1,"1338":1,"1359":2,"1377":1,"1379":1,"1404":2,"1518":1,"1881":1,"2152":2,"2172":1,"2406":1,"2605":1,"2643":1}}],["processors",{"2":{"552":1,"2150":1,"2310":2,"2743":1}}],["processor=stm32f411",{"2":{"374":3}}],["processor",{"2":{"70":1,"111":2,"191":1,"199":1,"380":1,"609":1,"1804":1,"2417":2,"2528":1,"2650":1,"2673":1}}],["processing",{"0":{"98":1,"1685":1},"2":{"4":1,"98":1,"112":1,"125":1,"185":1,"191":1,"199":1,"203":3,"249":1,"505":1,"571":1,"572":1,"587":1,"588":1,"698":1,"1221":1,"1222":1,"1223":1,"1332":1,"1385":1,"1446":2,"1448":1,"1515":1,"1516":1,"1559":1,"1615":1,"1685":1,"1832":1,"1865":1,"1878":1,"1880":1,"2152":2,"2299":1,"2403":1,"2413":1,"2414":3,"2584":2,"2687":1,"2749":1}}],["process",{"0":{"16":1,"23":1,"203":1,"572":1,"573":1,"1359":1,"1445":1,"1446":1,"2569":1,"2749":1},"1":{"1360":1,"1361":1,"1362":1,"1363":1,"1446":1},"2":{"0":1,"1":1,"3":1,"7":1,"9":1,"15":1,"19":1,"39":1,"46":3,"52":1,"76":1,"94":1,"114":1,"156":1,"176":2,"201":1,"203":6,"211":3,"222":3,"235":1,"236":1,"266":1,"277":1,"337":1,"342":1,"351":1,"353":1,"354":1,"355":1,"513":1,"534":5,"550":1,"560":1,"571":3,"572":2,"573":2,"574":3,"581":1,"584":1,"588":1,"592":1,"594":1,"607":2,"627":1,"628":1,"698":2,"1252":1,"1302":3,"1303":2,"1310":2,"1332":4,"1335":1,"1344":2,"1359":4,"1360":5,"1375":1,"1384":2,"1385":5,"1398":6,"1399":12,"1431":1,"1440":1,"1445":4,"1446":2,"1511":3,"1523":3,"1527":1,"1553":2,"1555":2,"1559":1,"1560":1,"1573":1,"1634":1,"1646":1,"1730":2,"1791":1,"1792":1,"1797":2,"1817":1,"1826":4,"1827":1,"1830":1,"1858":1,"1859":1,"1874":1,"1878":1,"1880":2,"1917":1,"1935":1,"1940":2,"1941":1,"1943":5,"1948":1,"1954":2,"2034":1,"2044":3,"2078":1,"2130":1,"2152":3,"2162":5,"2168":2,"2177":1,"2243":1,"2273":2,"2274":1,"2286":1,"2301":1,"2306":1,"2311":1,"2403":1,"2413":2,"2414":1,"2415":1,"2418":1,"2436":1,"2440":2,"2442":1,"2450":1,"2459":2,"2462":1,"2463":1,"2472":1,"2553":1,"2560":1,"2566":1,"2567":1,"2604":1,"2631":1,"2688":2,"2695":2,"2697":1,"2728":1,"2745":1,"2748":1,"2749":45}}],["props",{"2":{"2355":1,"2392":1}}],["proposed",{"2":{"282":3,"341":1,"352":1}}],["prophet",{"2":{"211":1}}],["property",{"2":{"475":1,"1292":1,"2577":2}}],["properties",{"0":{"475":1},"2":{"331":2,"475":1,"628":1,"1600":1,"1855":1,"2502":1,"2686":2}}],["properly",{"2":{"191":1,"222":1,"249":1,"502":1,"505":1,"1275":1,"1521":1,"1684":1,"1822":1,"1948":1,"1954":1,"2133":1,"2150":1,"2321":1,"2335":1,"2343":1,"2490":1,"2501":1,"2613":1}}],["proper",{"2":{"174":1,"399":1,"1238":1,"1239":1,"2437":1,"2515":1,"2517":1,"2550":1}}],["propagated",{"2":{"441":1}}],["propagate",{"2":{"149":1}}],["prologues",{"2":{"160":1}}],["prompts",{"2":{"2468":4}}],["prompt",{"2":{"376":1,"385":2,"628":1,"2347":1,"2355":1,"2438":1,"2460":1,"2506":1}}],["prompted",{"2":{"172":1,"2498":1}}],["promote",{"2":{"199":1}}],["prominent",{"2":{"2617":1}}],["prominently",{"2":{"131":1}}],["promicro",{"0":{"2286":1,"2655":1},"2":{"153":1,"222":1,"271":2,"277":1,"380":2,"1236":1,"1311":13,"1314":2,"2286":1,"2673":2}}],["promethium",{"2":{"114":1}}],["programatically",{"2":{"2149":1}}],["programs",{"0":{"2616":1},"2":{"1677":2,"1932":1,"2420":1,"2543":1,"2738":2,"2743":1}}],["program",{"0":{"1238":1},"1":{"1239":1,"1240":1},"2":{"336":1,"430":1,"432":2,"481":1,"560":1,"606":1,"689":1,"1134":1,"1221":1,"1234":1,"1380":3,"1499":1,"1511":1,"1918":1,"2104":1,"2144":1,"2263":1,"2277":1,"2417":2,"2429":3,"2457":3,"2570":3,"2627":1,"2743":3,"2754":1}}],["programmed",{"2":{"2455":1}}],["programmer>",{"2":{"2347":1}}],["programmers",{"2":{"470":1,"2335":1,"2347":1,"2353":1}}],["programmer",{"0":{"327":1},"2":{"327":1,"1238":3,"1436":3,"1796":1,"2230":4,"2233":1,"2236":2,"2262":1,"2329":1,"2331":1,"2333":1,"2335":1,"2337":1,"2339":1,"2347":2,"2418":1,"2453":3,"2703":3}}],["programmatically",{"2":{"1633":1,"1729":1,"1952":1,"2178":1}}],["programmatic",{"2":{"1578":1}}],["programmable",{"0":{"1881":1,"1885":1,"1886":1,"1888":1,"1890":1,"1892":1,"1894":1,"1897":1,"1898":1,"1900":1,"2380":1},"1":{"1882":1,"1883":1,"1884":1,"1885":1,"1886":1,"1887":2,"1888":1,"1889":2,"1890":1,"1891":2,"1892":1,"1893":2,"1894":1,"1895":2,"1896":2,"1897":1,"1898":1,"1899":2,"1900":1,"1901":2},"2":{"134":4,"149":1,"188":1,"190":1,"191":3,"231":3,"1221":1,"1881":2,"1883":64,"1885":1,"1897":1,"1898":1,"1899":1,"1900":1,"1901":1,"2305":1,"2380":65,"2543":1,"2749":1}}],["programming",{"0":{"571":1,"2306":1},"1":{"572":1,"573":1},"2":{"552":1,"1918":1,"1921":1,"2314":1,"2348":1,"2417":1,"2427":1,"2453":1,"2503":1,"2629":1,"2638":2,"2742":1}}],["progressively",{"2":{"213":1}}],["progress",{"2":{"113":1,"315":1,"654":1,"2071":1}}],["progressed",{"2":{"109":1}}],["progmem",{"2":{"94":1,"114":1,"149":1,"247":1,"530":1,"669":1,"734":2,"760":2,"792":2,"822":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1148":2,"1359":2,"1440":1,"1448":1,"1453":1,"1508":2,"1509":2,"1510":2,"1511":6,"1523":1,"1548":1,"1559":1,"1594":1,"1609":1,"1610":1,"1613":1,"1614":1,"1792":1,"1814":1,"1822":3,"2040":7,"2042":5,"2044":3,"2085":1,"2087":1,"2138":1,"2143":3,"2155":1,"2157":1,"2164":1,"2181":1,"2182":1,"2401":1,"2406":2,"2423":1,"2747":1}}],["pro",{"0":{"271":1,"1315":1,"1318":2,"2329":1,"2541":1},"1":{"1316":1,"1317":1,"1318":1,"1319":1,"1320":1,"1321":1,"2330":1},"2":{"77":1,"86":2,"102":3,"114":12,"134":2,"143":2,"149":2,"159":4,"160":2,"163":1,"172":1,"176":4,"189":1,"191":2,"197":2,"199":1,"222":3,"236":2,"271":2,"487":1,"509":1,"625":1,"629":2,"1240":1,"1311":1,"1313":1,"1315":8,"1320":1,"1323":1,"1324":1,"2114":1,"2116":1,"2119":1,"2120":1,"2126":2,"2132":1,"2233":1,"2234":1,"2266":1,"2268":1,"2269":2,"2329":2,"2330":3,"2331":1,"2344":3,"2348":1,"2427":1,"2527":1,"2529":1,"2530":6,"2539":2,"2541":2,"2542":1,"2545":1,"2655":1,"2703":4,"2712":3}}],["producing",{"2":{"93":1,"2031":1}}],["production",{"0":{"2307":1,"2349":1},"2":{"2231":3,"2238":3,"2307":1,"2349":2}}],["products",{"2":{"142":1,"684":3,"1242":1,"2671":1}}],["product",{"2":{"70":1,"134":2,"169":2,"184":2,"191":2,"502":2,"629":1,"684":4,"685":1,"1242":4,"1254":1,"1921":2,"1923":5,"2231":2,"2238":2,"2299":1,"2328":1,"2566":1,"2672":2,"2699":1}}],["produces",{"2":{"1393":1,"1503":2,"1684":1,"1935":2,"1943":2}}],["produced",{"2":{"371":1,"502":1,"1935":2,"2243":1,"2244":1,"2622":1,"2623":1}}],["produce",{"2":{"49":1,"170":1,"209":1,"266":1,"661":1,"1431":3,"1440":1,"1508":1,"1794":1,"2274":1,"2325":1,"2427":1}}],["protozoa",{"2":{"211":2}}],["prototypist",{"2":{"143":2,"149":1,"211":3,"222":2}}],["prototypes",{"2":{"133":1,"134":1,"2307":1,"2566":1}}],["prototype",{"2":{"114":1,"191":1,"2307":1,"2564":1}}],["proto",{"2":{"114":1,"134":1,"253":1}}],["protocol=serial",{"2":{"266":1,"277":1}}],["protocols",{"0":{"2149":1},"2":{"133":1,"134":1,"1491":1,"2146":2,"2149":3,"2150":1}}],["protocol",{"0":{"2146":1},"1":{"2147":1,"2148":1,"2149":1},"2":{"50":1,"75":1,"111":2,"112":1,"113":1,"114":1,"133":3,"134":3,"160":1,"176":2,"191":1,"199":2,"222":1,"236":2,"249":1,"263":1,"265":1,"266":1,"334":1,"511":1,"516":1,"1212":1,"1215":1,"1491":1,"1574":1,"1834":1,"1846":1,"1848":1,"1910":1,"2031":1,"2129":1,"2146":1,"2147":2,"2148":2,"2149":6,"2150":2,"2152":4,"2233":1,"2243":1,"2320":1,"2626":2,"2697":4,"2698":2,"2743":2,"2744":1}}],["proton",{"0":{"1140":1,"1316":1,"1392":1,"2527":1},"1":{"2528":1,"2529":1,"2530":1},"2":{"49":3,"50":2,"77":1,"134":2,"160":1,"172":2,"189":2,"489":1,"509":1,"663":1,"703":1,"1129":2,"1177":1,"1198":1,"1234":1,"1311":1,"1313":2,"1315":4,"1316":2,"1319":1,"1392":1,"1469":1,"2126":1,"2241":1,"2266":1,"2268":1,"2269":1,"2513":2,"2527":1,"2529":2,"2530":6,"2712":1}}],["protected",{"2":{"2627":1}}],["protect",{"2":{"26":1,"684":1,"2311":1}}],["project¹",{"2":{"2501":1}}],["projectcain",{"2":{"249":1}}],["projects",{"0":{"1234":1,"2307":1},"1":{"1235":1},"2":{"204":1,"502":2,"606":1,"2229":1,"2257":1,"2297":1,"2299":1,"2497":1,"2498":1}}],["project",{"0":{"42":1,"552":1,"2259":1,"2294":1,"2501":1},"2":{"211":2,"213":1,"291":1,"331":1,"352":1,"460":1,"501":1,"550":1,"554":1,"562":1,"1234":1,"1265":1,"1831":1,"2144":1,"2250":2,"2256":1,"2257":2,"2259":2,"2279":1,"2307":3,"2309":1,"2498":1,"2501":5,"2502":6,"2553":2,"2637":1}}],["pr",{"0":{"354":1,"361":1,"2563":1},"1":{"2564":1,"2565":1,"2566":1,"2567":1,"2568":1,"2569":1,"2570":1},"2":{"1":1,"14":1,"32":1,"36":1,"49":1,"130":1,"134":1,"149":2,"191":1,"198":1,"199":1,"229":1,"236":1,"255":1,"256":1,"265":1,"273":1,"275":1,"282":12,"341":11,"344":1,"345":1,"346":1,"347":1,"354":1,"360":1,"446":1,"447":2,"556":2,"559":1,"560":2,"1326":1,"1329":3,"1346":1,"1511":1,"2149":1,"2153":3,"2564":8,"2566":8,"2567":6,"2569":2,"2674":2}}],["prs",{"0":{"38":1,"2564":1,"2565":1,"2566":1,"2567":1},"2":{"1":1,"21":1,"134":1,"188":1,"199":1,"213":1,"224":1,"233":1,"251":2,"265":1,"268":2,"275":1,"337":1,"340":4,"341":4,"343":3,"344":1,"345":1,"350":9,"399":1,"556":1,"560":1,"2563":1,"2564":1,"2565":1,"2566":4,"2567":3,"2568":1,"2569":3}}],["tft",{"2":{"2284":1,"2576":1}}],["tbd",{"2":{"2238":1}}],["tbk",{"2":{"277":1}}],["tsr",{"2":{"2153":1}}],["tsangan",{"2":{"211":2}}],["tl",{"2":{"2153":3,"2173":2}}],["td",{"2":{"1509":2,"2161":1,"2164":4,"2165":1,"2167":1,"2168":1,"2169":41,"2170":26,"2171":25}}],["tps65",{"2":{"1837":1,"1838":2}}],["tps43",{"2":{"1837":1,"1838":2}}],["tpyo",{"2":{"1447":1}}],["tpm754",{"2":{"1289":2}}],["t6181",{"2":{"1290":1}}],["t1l",{"2":{"1224":1}}],["t1h",{"2":{"1214":1,"1215":1,"1224":1}}],["tmpu",{"2":{"2106":1}}],["tmpd",{"2":{"2106":1}}],["tm023023",{"2":{"1841":1}}],["tm035035",{"2":{"1841":1}}],["tm040040",{"2":{"1841":1}}],["tm1812",{"2":{"1216":1}}],["tmk",{"0":{"560":1,"1265":1},"2":{"1":1,"38":1,"49":1,"75":2,"113":4,"114":5,"133":3,"134":3,"176":1,"199":1,"222":2,"515":2,"1242":2,"1257":1,"1265":6,"1274":2,"1275":4,"1281":2,"1283":2,"1287":1,"1293":1,"1298":2,"1491":1,"2257":3,"2401":1,"2406":1,"2450":1,"2623":1,"2743":1}}],["t0l",{"2":{"293":1,"1224":1}}],["t0h",{"2":{"293":1,"1214":1,"1215":1,"1224":1}}],["tty",{"2":{"2347":1}}],["ttyacmx",{"2":{"2347":1}}],["ttf",{"2":{"409":1,"2573":1,"2575":3,"2577":1}}],["tt",{"2":{"194":1,"505":1,"1335":2,"1582":1,"1865":1,"2156":2,"2367":1,"2383":1,"2737":1}}],["txbolt",{"2":{"2147":1,"2698":1}}],["txen1",{"2":{"1907":1}}],["txled",{"2":{"1316":1,"1320":1}}],["tx",{"0":{"2147":1},"2":{"277":1,"1126":4,"1127":3,"1129":8,"1130":6,"1134":1,"1140":11,"1141":9,"1142":8,"1197":2,"1198":4,"1314":1,"2146":1,"2147":3,"2148":1,"2150":1,"2153":4,"2530":2,"2541":3,"2543":2}}],["txt",{"2":{"191":1,"364":1,"405":2,"429":1,"1440":1,"1442":1,"2477":4}}],["txuu",{"2":{"143":2}}],["tube",{"2":{"2270":1}}],["tuning",{"2":{"1940":1,"2737":1}}],["tuned",{"2":{"1842":1,"2560":1}}],["tunes",{"2":{"1386":1}}],["tune",{"2":{"176":2,"1658":1,"1676":1,"1941":1,"2607":1,"2740":1}}],["tuple",{"2":{"467":2,"469":1}}],["tuples",{"0":{"467":1},"2":{"467":1}}],["tutorial",{"0":{"2417":1},"1":{"2418":1,"2419":1},"2":{"327":1,"701":1,"2427":1,"2428":2,"2484":1,"2486":1,"2494":1,"2723":2}}],["tuv",{"2":{"266":1}}],["tuvw",{"2":{"249":1}}],["turquoise",{"2":{"1953":2,"2058":2}}],["turing",{"2":{"1873":2}}],["turkish",{"2":{"134":1,"1355":2,"2703":6}}],["turnaround",{"2":{"265":1,"2442":1}}],["turn",{"0":{"2167":1},"2":{"92":1,"124":1,"152":1,"222":1,"347":1,"588":1,"610":1,"615":1,"658":1,"1124":1,"1136":1,"1217":1,"1245":1,"1398":1,"1456":2,"1458":1,"1462":1,"1474":1,"1475":1,"1486":1,"1487":1,"1572":2,"1600":1,"1602":1,"1669":2,"1722":2,"1727":2,"1730":1,"1737":1,"1738":1,"1739":1,"1740":1,"1793":2,"1815":1,"1822":2,"1878":1,"1949":3,"1954":1,"1964":1,"1965":1,"1966":1,"1967":1,"2044":2,"2053":4,"2063":1,"2102":1,"2139":1,"2143":2,"2145":1,"2156":5,"2167":2,"2263":1,"2305":1,"2360":2,"2367":3,"2369":2,"2371":2,"2383":5,"2408":1,"2543":1,"2566":1,"2605":1,"2676":1,"2677":1,"2685":1,"2688":1,"2694":1,"2695":1,"2744":1}}],["turned",{"2":{"77":1,"504":3,"560":2,"1404":1,"1459":1,"1534":1,"1562":1,"1718":1,"2044":1,"2182":1,"2560":1}}],["turns",{"2":{"31":1,"34":1,"152":1,"502":1,"1332":1,"1341":10,"1398":2,"1403":2,"1406":2,"1408":6,"1434":2,"1443":2,"1449":2,"1499":1,"1500":4,"1501":2,"1503":1,"1504":1,"1505":2,"1507":1,"1512":2,"1717":2,"1730":1,"1816":1,"1817":1,"1822":3,"1954":1,"2141":1,"2143":4,"2158":2,"2161":1,"2262":2,"2357":6,"2358":2,"2359":2,"2367":2,"2379":2,"2490":2,"2575":1,"2603":2,"2680":2}}],["turning",{"2":{"13":1,"25":1,"134":1,"195":1,"592":1,"1398":1,"1815":1,"1877":1,"2139":1,"2263":1,"2631":1,"2744":1}}],["tzarc",{"2":{"174":1,"176":1}}],["typ65+",{"2":{"211":1}}],["typists",{"2":{"1326":1,"2735":1,"2736":1}}],["typically",{"2":{"613":1,"1217":1,"1265":1,"1268":1,"1338":1,"1411":1,"1633":1,"1819":1,"2169":1,"2263":1,"2301":2,"2406":1,"2625":1,"2627":1,"2665":1,"2745":1,"2746":1}}],["typical",{"2":{"194":1,"430":1,"1335":1,"1471":1,"1499":1,"2406":1}}],["typing",{"0":{"1935":1,"1950":1},"2":{"152":1,"195":1,"211":1,"246":1,"586":1,"1338":1,"1406":1,"1435":1,"1442":2,"1448":1,"1503":2,"1683":1,"1684":2,"1864":1,"1929":1,"1935":2,"1943":2,"1949":3,"1950":6,"2062":1,"2084":1,"2088":1,"2144":1,"2154":1,"2169":5,"2183":1,"2226":5,"2279":1,"2512":2,"2651":1,"2711":1,"2740":1,"2754":1}}],["typographic",{"2":{"199":1}}],["typos",{"2":{"134":2,"249":1,"1437":1,"1438":3,"1440":1,"1441":2,"1445":1}}],["typo",{"2":{"114":4,"134":4,"149":3,"176":1,"191":1,"249":1,"1438":3,"1440":3,"1441":4,"1442":2,"1445":2,"1446":4,"1447":4,"1448":4,"1451":4,"1452":1}}],["typeid",{"2":{"2585":2,"2587":1,"2588":1,"2589":1,"2590":2,"2591":2,"2592":2,"2594":1,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1}}],["typed",{"2":{"1356":2,"1436":1,"1437":1,"1530":1,"1673":1,"1674":1,"1675":9,"1934":2,"1935":1,"2169":1,"2182":1,"2728":1}}],["typedef",{"2":{"236":1,"1821":1,"1822":1,"2130":1,"2143":1,"2169":1,"2170":1,"2171":2,"2588":1}}],["typewriter",{"2":{"236":1}}],["typenames",{"2":{"176":1}}],["types",{"0":{"612":1,"1326":1},"2":{"114":2,"119":1,"149":1,"191":1,"196":2,"236":1,"496":2,"556":1,"612":1,"1570":1,"1680":2,"1820":1,"1929":1,"1935":1,"2078":1,"2079":2,"2229":2,"2375":1,"2575":2,"2661":1,"2728":1}}],["type",{"0":{"480":1,"1813":1},"2":{"49":2,"111":1,"112":1,"114":2,"132":1,"143":2,"149":1,"152":2,"160":1,"199":1,"211":1,"222":1,"236":4,"249":3,"273":1,"277":1,"314":1,"324":1,"373":1,"445":1,"480":1,"496":1,"515":1,"541":1,"556":1,"580":1,"610":1,"627":2,"628":1,"641":1,"1290":2,"1325":1,"1326":1,"1329":2,"1330":1,"1353":1,"1355":2,"1357":1,"1359":2,"1385":1,"1403":1,"1406":1,"1435":2,"1442":2,"1451":1,"1452":2,"1491":1,"1499":2,"1508":1,"1521":1,"1534":1,"1651":1,"1655":2,"1657":1,"1684":2,"1725":3,"1820":4,"1821":1,"1834":1,"1846":1,"1848":1,"1849":1,"1850":1,"1873":1,"1874":1,"1879":1,"1946":3,"2062":1,"2081":1,"2082":1,"2083":1,"2084":1,"2085":1,"2086":1,"2087":1,"2088":1,"2089":1,"2090":1,"2091":1,"2092":1,"2093":1,"2094":1,"2095":1,"2096":1,"2097":1,"2098":1,"2099":1,"2126":1,"2142":3,"2154":2,"2155":1,"2169":4,"2170":2,"2171":1,"2179":1,"2182":1,"2262":1,"2263":1,"2294":1,"2300":6,"2319":1,"2347":1,"2450":1,"2490":3,"2513":1,"2514":1,"2573":1,"2576":1,"2585":1,"2587":2,"2588":2,"2589":2,"2592":1,"2593":4,"2594":2,"2595":2,"2596":2,"2597":2,"2598":2,"2599":2,"2661":1,"2674":1,"2688":1,"2695":1,"2740":1,"2754":1}}],["tweezers",{"2":{"2266":1,"2273":1}}],["tweak",{"2":{"119":1,"1950":1,"2038":1,"2416":1}}],["tweaks",{"0":{"2710":1},"2":{"94":1,"149":1,"277":1,"2515":1}}],["tw40",{"2":{"241":2}}],["tw",{"2":{"93":1,"2034":1,"2376":1}}],["twisting",{"2":{"2272":1}}],["twinkling",{"2":{"2038":1}}],["twinkle",{"2":{"74":1,"93":1,"114":1,"231":1,"2034":2,"2036":2,"2037":2,"2038":3,"2040":2,"2376":2,"2711":1}}],["twi",{"2":{"249":1}}],["twig50",{"2":{"191":1}}],["twice",{"2":{"92":1,"1411":1,"2105":1,"2160":1,"2161":1,"2164":1,"2233":1,"2344":1,"2680":1}}],["two",{"0":{"297":1,"298":1,"1702":1},"1":{"1703":1,"1704":1},"2":{"18":1,"31":1,"34":1,"35":1,"49":1,"114":1,"149":1,"196":2,"203":1,"222":1,"255":1,"277":1,"282":1,"297":1,"298":1,"334":1,"414":1,"432":1,"479":1,"496":1,"556":1,"560":1,"572":1,"589":1,"606":1,"614":2,"625":1,"633":1,"655":2,"662":1,"1121":3,"1129":2,"1181":1,"1273":1,"1300":1,"1303":2,"1319":1,"1326":1,"1335":1,"1346":1,"1359":1,"1377":1,"1387":1,"1391":1,"1395":1,"1399":1,"1416":1,"1430":1,"1451":3,"1452":1,"1515":1,"1520":1,"1523":1,"1548":1,"1553":1,"1559":1,"1562":3,"1589":1,"1632":1,"1633":1,"1634":1,"1680":2,"1686":1,"1787":1,"1791":1,"1812":1,"1816":1,"1821":2,"1837":1,"1839":3,"1880":1,"1903":1,"1906":1,"1922":1,"1943":1,"1949":1,"2039":1,"2042":1,"2061":1,"2063":1,"2079":1,"2095":1,"2114":3,"2116":2,"2119":1,"2120":1,"2140":1,"2147":2,"2152":1,"2153":1,"2162":1,"2169":2,"2272":3,"2305":1,"2402":1,"2411":1,"2452":1,"2477":1,"2478":1,"2513":1,"2530":1,"2540":1,"2543":1,"2569":1,"2600":1,"2709":1,"2735":2,"2750":2,"2757":1}}],["tgr",{"2":{"122":2,"134":1}}],["tg",{"2":{"38":1,"1335":2,"1865":3,"1878":2,"2161":1,"2171":3,"2367":1}}],["tkm",{"2":{"114":1,"211":1}}],["tkc",{"2":{"43":4,"211":3}}],["tkc1800",{"0":{"33":1,"34":1},"1":{"34":1},"2":{"33":2,"34":1,"43":2,"2617":1}}],["tkl87",{"2":{"270":1,"277":1}}],["tklfrlnrlmlao",{"2":{"211":1}}],["tkl",{"2":{"18":2,"110":1,"197":6,"211":5,"226":2,"236":1,"253":2,"2153":1,"2445":1,"2553":1,"2566":1}}],["tate",{"2":{"1943":1}}],["talking",{"2":{"560":1,"2114":1}}],["talk",{"2":{"554":1,"560":2,"561":1,"1181":1,"2255":1,"2353":1}}],["tandem",{"2":{"357":1}}],["tag+=",{"2":{"1254":1}}],["tagging",{"2":{"358":1}}],["tagged",{"2":{"340":1}}],["tag",{"2":{"211":1,"228":1,"292":1,"347":2,"349":1,"358":2,"359":1,"559":1,"2513":1,"2514":1}}],["tags",{"0":{"110":1},"2":{"110":5,"358":2,"359":1,"360":2,"2479":1,"2615":1,"2672":2}}],["tabbing",{"2":{"1302":1}}],["tabs",{"0":{"294":1},"1":{"295":1,"296":1,"297":1,"298":1,"299":1},"2":{"294":1,"453":1,"455":1,"2277":1,"2565":1}}],["tabsification",{"2":{"191":1}}],["tab",{"0":{"295":1,"298":1,"299":1,"448":1,"1302":1,"1418":1},"1":{"296":1,"297":1,"449":1,"450":1,"451":1,"452":1},"2":{"222":1,"294":1,"313":1,"331":3,"335":1,"448":2,"449":1,"450":1,"451":4,"452":2,"520":1,"521":1,"530":2,"628":1,"1269":3,"1292":1,"1302":4,"1375":14,"1417":1,"1418":1,"1423":2,"1429":1,"1510":1,"1511":3,"1527":2,"1933":9,"2075":2,"2150":2,"2169":2,"2228":1,"2355":2,"2388":2,"2398":1,"2401":1,"2407":1,"2411":1,"2439":1,"2490":1,"2502":2,"2615":1}}],["tables",{"0":{"289":1},"2":{"2076":1,"2535":1,"2660":1,"2702":1}}],["tablet",{"2":{"100":1,"1334":1}}],["table",{"0":{"404":1,"2588":1,"2589":1},"2":{"55":1,"160":1,"191":1,"199":1,"247":1,"404":3,"616":1,"617":2,"621":1,"628":1,"635":1,"659":3,"663":1,"1127":1,"1130":1,"1393":1,"1466":1,"1467":1,"1725":1,"1864":1,"1946":1,"2036":1,"2155":1,"2181":2,"2182":7,"2224":1,"2263":2,"2272":1,"2323":1,"2531":1,"2544":1,"2577":2,"2587":6,"2588":4,"2589":3}}],["taking",{"2":{"284":1,"352":1,"550":1,"1943":1,"2042":1,"2319":1,"2477":1,"2502":1,"2735":1}}],["takashicompany",{"2":{"249":2,"390":2}}],["takashiski",{"2":{"143":4,"149":2}}],["takai",{"2":{"149":1}}],["taken",{"2":{"352":1,"430":1,"1337":1,"1534":1,"2161":1,"2315":1}}],["take",{"0":{"1253":1},"2":{"134":1,"191":2,"194":1,"222":1,"236":1,"331":1,"335":1,"358":1,"415":1,"513":1,"551":1,"560":1,"606":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"1189":1,"1192":1,"1207":1,"1209":1,"1273":1,"1361":1,"1672":1,"1675":1,"1676":1,"1822":1,"2042":1,"2063":1,"2122":1,"2171":1,"2264":1,"2273":1,"2306":1,"2417":1,"2462":1,"2546":1,"2569":1,"2578":1,"2705":1,"2718":1,"2747":1,"2753":1,"2757":1}}],["takes",{"2":{"49":1,"415":1,"683":1,"1278":1,"1294":1,"1325":1,"1524":1,"1573":1,"1660":1,"1661":1,"1662":1,"1675":1,"1825":1,"2149":1,"2161":1,"2169":1,"2255":1,"2407":1,"2476":1,"2644":1,"2710":1}}],["taurus",{"2":{"114":1}}],["ta65",{"2":{"57":2}}],["taro",{"2":{"143":2}}],["targeted",{"2":{"2550":1}}],["targetted",{"2":{"2132":1}}],["target2initiator",{"2":{"2130":4}}],["targets",{"0":{"2232":1,"2234":1,"2239":1,"2241":1,"2246":1,"2248":1,"2446":1,"2447":1},"2":{"173":1,"176":1,"199":1,"204":1,"213":1,"236":1,"374":5,"393":2,"394":2,"395":2,"396":1,"552":1,"2126":1,"2132":1,"2262":1,"2446":1,"2447":2,"2448":1,"2513":3,"2567":1}}],["targeting",{"2":{"149":1,"350":3,"1125":1,"1128":1,"2551":1,"2565":1,"2566":1}}],["target",{"0":{"1865":1,"1873":1,"1877":1,"1879":1},"2":{"49":2,"94":1,"114":3,"149":1,"160":1,"198":1,"236":1,"240":1,"266":23,"292":1,"361":4,"371":1,"374":2,"396":1,"455":1,"661":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"727":1,"1127":1,"1130":1,"1227":1,"1312":2,"1313":1,"1315":2,"1322":2,"1340":1,"1385":1,"1820":4,"1864":6,"1865":12,"1866":1,"1868":1,"1871":1,"1873":8,"1874":1,"1876":4,"1877":6,"1878":1,"1879":3,"1880":1,"2230":1,"2231":2,"2233":1,"2235":1,"2236":1,"2237":1,"2238":2,"2240":1,"2242":1,"2243":1,"2244":1,"2252":4,"2262":5,"2300":1,"2326":1,"2328":2,"2339":1,"2347":1,"2353":1,"2454":2,"2496":1,"2502":2,"2513":3,"2564":1,"2567":1,"2576":3}}],["tartan",{"2":{"37":2}}],["tasks",{"2":{"76":1,"149":1,"363":1,"515":1,"592":1,"1463":1,"1508":1,"2743":1}}],["task",{"0":{"125":1,"588":1,"1880":1,"2584":1},"2":{"31":2,"34":1,"49":1,"64":1,"84":1,"93":1,"113":1,"114":1,"125":4,"134":5,"149":2,"211":1,"266":2,"277":1,"569":1,"581":1,"587":2,"588":2,"597":1,"1316":1,"1317":1,"1464":1,"1730":1,"1813":2,"1814":1,"1815":1,"1816":1,"1822":5,"1823":4,"1842":1,"1849":2,"1851":2,"1853":2,"1854":3,"1855":2,"1858":2,"1859":1,"1861":1,"1862":1,"1879":1,"1880":8,"1954":1,"2130":2,"2137":2,"2139":1,"2140":1,"2143":4,"2162":1,"2418":1,"2472":1,"2574":4,"2577":7,"2584":5,"2688":1,"2695":1,"2744":3}}],["tapdance",{"2":{"2170":11}}],["tape",{"2":{"2150":2,"2270":2,"2280":2}}],["tapped",{"2":{"505":1,"1303":1,"1335":1,"1336":1,"1375":1,"1446":2,"1500":1,"1518":2,"1582":3,"1865":1,"2110":7,"2112":7,"2113":3,"2156":2,"2160":1,"2161":4,"2169":2,"2170":3,"2355":1,"2367":2,"2374":22,"2382":7,"2383":2,"2393":1,"2410":23,"2411":1,"2490":1,"2729":1,"2735":3}}],["tapping",{"0":{"119":1,"195":1,"1518":1,"2375":1,"2727":1,"2728":1,"2738":1},"1":{"2728":1,"2739":1},"2":{"22":2,"49":1,"63":1,"112":11,"119":11,"134":2,"149":1,"160":1,"176":1,"188":1,"191":1,"194":1,"195":6,"199":3,"203":1,"222":3,"503":2,"505":12,"515":2,"1335":2,"1379":1,"1411":1,"1412":2,"1416":1,"1431":6,"1432":1,"1435":1,"1446":2,"1451":1,"1500":6,"1516":1,"1582":1,"1677":2,"1844":3,"1845":1,"1865":2,"1868":1,"1929":2,"2112":1,"2156":2,"2161":9,"2162":4,"2169":4,"2170":1,"2171":7,"2236":1,"2375":9,"2490":1,"2661":1,"2674":1,"2706":2,"2727":9,"2728":50,"2729":6,"2730":2,"2734":6,"2735":6,"2736":4,"2737":8,"2738":11,"2739":2,"2749":1}}],["taps",{"0":{"2166":1,"2412":1,"2731":1},"1":{"2413":1,"2414":1,"2415":1},"2":{"98":1,"176":1,"191":1,"194":7,"211":1,"505":2,"660":1,"1335":2,"1368":1,"1431":2,"1432":1,"1500":2,"1677":1,"1683":1,"1685":2,"1842":2,"2079":1,"2156":1,"2161":1,"2162":1,"2168":1,"2169":2,"2398":2,"2566":1,"2728":2,"2738":1}}],["tap",{"0":{"15":1,"22":1,"194":1,"195":1,"206":1,"1306":1,"1308":1,"1361":1,"1368":1,"1369":1,"1370":2,"1432":1,"2099":1,"2159":1,"2161":1,"2164":2,"2168":1,"2169":1,"2170":3,"2171":1,"2374":1,"2410":1,"2413":1,"2415":1,"2539":1,"2611":1,"2662":1,"2663":1,"2726":1,"2729":1,"2732":1,"2737":1},"1":{"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1,"2411":1,"2412":1,"2413":1,"2414":1,"2415":1,"2416":1,"2727":1,"2728":1,"2729":1,"2730":2,"2731":2,"2732":2,"2733":2,"2734":2,"2735":2,"2736":2,"2737":1,"2738":1,"2739":1,"2740":1,"2741":1},"2":{"22":3,"38":1,"49":3,"74":1,"90":8,"112":5,"120":3,"134":1,"149":4,"152":2,"176":7,"191":4,"194":14,"195":10,"196":1,"199":6,"203":3,"206":3,"211":3,"222":3,"249":1,"266":1,"277":1,"317":1,"365":1,"503":1,"505":18,"533":2,"626":1,"1306":1,"1308":1,"1335":2,"1336":1,"1340":1,"1354":3,"1357":4,"1361":7,"1363":1,"1368":3,"1369":1,"1375":2,"1385":1,"1409":2,"1411":2,"1412":2,"1423":1,"1430":4,"1431":6,"1432":1,"1445":1,"1446":11,"1448":1,"1451":1,"1500":4,"1503":1,"1509":2,"1511":3,"1516":1,"1518":16,"1559":1,"1560":4,"1582":5,"1651":1,"1677":1,"1680":1,"1683":1,"1685":1,"1805":3,"1839":8,"1844":4,"1845":5,"1864":4,"1865":2,"1929":1,"1948":1,"2034":1,"2075":1,"2079":1,"2108":2,"2112":4,"2113":2,"2149":2,"2156":4,"2160":1,"2161":30,"2162":21,"2164":8,"2165":1,"2166":5,"2167":12,"2168":58,"2169":53,"2170":23,"2171":49,"2179":1,"2196":4,"2197":3,"2198":3,"2228":8,"2237":1,"2240":2,"2242":2,"2243":1,"2244":1,"2245":4,"2247":4,"2249":5,"2374":1,"2383":1,"2410":3,"2411":3,"2413":4,"2414":7,"2415":5,"2416":2,"2461":1,"2490":4,"2491":2,"2539":7,"2541":1,"2566":1,"2611":1,"2645":1,"2662":1,"2663":1,"2674":4,"2680":1,"2687":3,"2691":2,"2706":2,"2724":2,"2726":2,"2727":1,"2728":7,"2729":4,"2730":2,"2734":1,"2735":10,"2736":4,"2737":14,"2738":2,"2740":1,"2749":2,"2754":4}}],["ti",{"2":{"2622":1}}],["tie",{"2":{"2614":1}}],["tied",{"2":{"357":1,"2326":1,"2616":1}}],["tin",{"2":{"2272":1}}],["tiny",{"0":{"2522":1}}],["tinyuf2",{"0":{"2245":1},"1":{"2246":1},"2":{"93":1,"176":1,"199":1,"277":1,"2245":5,"2522":2}}],["tinyprintf",{"0":{"24":1}}],["tion",{"2":{"1943":2}}],["tilde",{"2":{"1666":2,"2378":1,"2399":1,"2702":1}}],["tild",{"2":{"1336":1,"2378":1,"2399":1,"2411":1}}],["tips",{"0":{"620":1,"1350":1},"1":{"1351":1,"1352":1},"2":{"1803":1,"1804":1,"1807":1,"2272":1,"2274":1}}],["tip",{"0":{"1541":1,"1542":1},"2":{"290":2,"317":1,"445":1,"496":1,"537":1,"539":1,"540":1,"592":1,"597":1,"620":4,"627":1,"657":1,"684":1,"702":1,"1121":1,"1138":1,"1230":1,"1312":1,"1328":1,"1329":2,"1341":1,"1359":1,"1364":1,"1385":1,"1416":1,"1441":1,"1445":1,"1446":1,"1447":1,"1448":1,"1496":1,"1531":2,"1533":1,"1537":2,"1541":1,"1542":1,"1548":1,"1553":1,"1559":2,"1560":1,"1632":1,"1714":1,"1728":1,"1729":1,"1814":1,"1825":1,"1838":1,"1863":1,"1881":1,"1939":1,"1948":1,"1949":2,"1952":1,"1958":1,"1959":1,"2032":1,"2034":1,"2041":1,"2065":1,"2072":1,"2119":1,"2126":2,"2127":1,"2131":2,"2255":1,"2299":1,"2300":1,"2302":1,"2344":1,"2348":1,"2393":1,"2421":1,"2424":1,"2430":1,"2435":1,"2438":1,"2440":1,"2441":1,"2451":1,"2457":1,"2462":1,"2463":1,"2468":2,"2469":1,"2473":1,"2476":1,"2479":1,"2480":2,"2508":1,"2541":1,"2556":1,"2559":1,"2576":1,"2577":5,"2578":1,"2607":1,"2611":1,"2614":1,"2615":1,"2719":1,"2727":1,"2735":1,"2737":1}}],["tiger80",{"2":{"211":1}}],["tiger910",{"2":{"143":2}}],["tighter",{"2":{"1949":2,"2441":1}}],["tight",{"2":{"191":1,"1219":1}}],["ticking",{"2":{"2231":1,"2238":1}}],["tick3",{"2":{"1578":1}}],["tick2",{"2":{"1578":1}}],["tick1",{"2":{"1578":1}}],["tick",{"2":{"160":2,"588":1,"627":1,"1578":6}}],["ticks",{"2":{"25":1,"64":1,"176":1,"1469":1,"2582":1}}],["title",{"2":{"149":1,"279":1,"294":1,"554":2,"616":1}}],["tidy",{"2":{"50":1,"114":3,"131":1,"133":1,"134":3,"149":2,"199":3,"211":3,"222":1,"249":1,"266":3,"2270":1,"2276":1}}],["tim4",{"2":{"1469":3}}],["tim2",{"2":{"1230":2}}],["timx",{"2":{"661":2,"1230":5,"1396":1}}],["tim8",{"2":{"657":3,"663":1}}],["tim7",{"2":{"657":3}}],["tim6",{"2":{"657":3,"658":3}}],["tim15",{"2":{"1470":2}}],["tim1",{"2":{"656":1,"661":6,"662":1,"1396":1}}],["timingr",{"2":{"705":5}}],["timings",{"2":{"191":1,"1125":1,"1128":1,"1518":1}}],["timing",{"0":{"1215":1,"1518":1},"2":{"11":1,"74":1,"112":1,"134":2,"149":1,"211":1,"505":4,"597":1,"690":1,"1214":1,"1215":1,"1219":1,"1224":2,"1562":1,"1676":1,"1683":3,"2525":1,"2564":2,"2574":1,"2577":1,"2687":1,"2727":1,"2737":2}}],["timeframe",{"2":{"2162":1}}],["timely",{"2":{"2130":1}}],["timeline",{"2":{"127":1,"2567":1}}],["timed",{"0":{"1697":1},"2":{"515":1,"588":1,"2263":1}}],["time80",{"2":{"211":1}}],["timeout=1000",{"2":{"1923":1}}],["timeouts",{"2":{"25":1,"199":1,"2129":1}}],["timeout",{"0":{"25":1,"708":1,"711":1,"714":1,"717":1,"720":1,"723":1,"726":1,"1137":1,"1416":1,"1504":1,"1682":1,"1683":1,"1684":1},"1":{"709":1,"710":1,"712":1,"713":1,"715":1,"716":1,"718":1,"719":1,"721":1,"722":1,"724":1,"725":1,"727":1,"728":1},"2":{"25":7,"49":1,"74":1,"93":1,"112":2,"134":2,"152":1,"158":1,"160":1,"176":4,"183":4,"191":3,"211":1,"505":5,"511":7,"588":17,"703":1,"709":1,"710":2,"712":1,"713":2,"715":1,"716":2,"718":1,"719":2,"721":1,"722":2,"724":1,"725":2,"727":1,"728":2,"731":2,"757":2,"786":2,"818":2,"850":2,"885":2,"919":2,"953":2,"987":2,"1021":2,"1055":2,"1089":2,"1137":2,"1145":2,"1185":2,"1187":2,"1190":2,"1193":2,"1220":2,"1411":3,"1414":1,"1415":1,"1416":5,"1425":1,"1431":1,"1433":1,"1434":3,"1435":5,"1436":1,"1504":4,"1514":2,"1518":1,"1682":1,"1683":4,"1684":3,"1694":1,"1697":2,"1730":1,"1817":5,"1822":1,"1838":2,"1842":2,"1847":2,"1873":6,"1954":1,"2067":2,"2070":4,"2128":1,"2131":6,"2141":1,"2143":1,"2169":1,"2358":3,"2461":1,"2490":1,"2539":2,"2574":2,"2680":1,"2687":2,"2688":3,"2691":1,"2695":3,"2696":4,"2697":2,"2700":2,"2739":1}}],["timer1",{"2":{"655":1,"2263":1}}],["timer3",{"2":{"655":1}}],["timer",{"0":{"11":1,"1462":1,"1467":1,"1470":1,"1520":1,"1521":1,"1522":1,"1698":1},"1":{"1521":1,"1522":1},"2":{"11":1,"49":1,"74":1,"114":4,"134":1,"149":2,"191":1,"199":3,"222":1,"505":5,"588":7,"657":5,"658":2,"661":3,"662":2,"1230":1,"1326":4,"1329":4,"1375":6,"1387":2,"1394":1,"1396":2,"1411":1,"1459":1,"1460":1,"1462":2,"1466":22,"1467":8,"1470":2,"1519":1,"1520":2,"1521":2,"1522":2,"1691":1,"1694":1,"1698":1,"1815":1,"1864":1,"1871":1,"1874":1,"2130":2,"2139":1,"2162":1,"2564":3,"2577":12,"2612":5,"2677":2}}],["timers",{"0":{"2612":1},"2":{"10":1,"11":1,"596":1,"657":1,"661":1,"1230":2,"1467":3,"1470":1,"2526":1,"2612":1}}],["time",{"0":{"1328":1,"2167":1},"2":{"10":2,"25":1,"28":1,"49":2,"50":1,"73":1,"112":1,"123":1,"124":1,"134":1,"140":1,"152":1,"153":1,"173":1,"174":1,"176":3,"182":1,"191":1,"222":1,"228":1,"243":1,"265":2,"284":1,"317":1,"327":1,"330":1,"331":2,"352":1,"358":1,"414":1,"430":1,"434":1,"452":2,"454":1,"463":2,"464":2,"465":3,"483":1,"485":1,"507":1,"513":2,"520":1,"521":1,"550":1,"551":1,"571":1,"573":1,"587":1,"588":5,"596":1,"597":6,"598":1,"599":1,"606":1,"684":2,"703":1,"707":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"727":1,"789":6,"1024":6,"1058":6,"1092":6,"1121":1,"1137":1,"1221":1,"1252":8,"1300":1,"1311":1,"1325":3,"1326":7,"1328":1,"1329":2,"1341":1,"1342":1,"1368":1,"1379":1,"1385":2,"1390":1,"1397":3,"1398":1,"1399":1,"1406":1,"1411":5,"1414":1,"1416":1,"1435":2,"1438":1,"1446":1,"1459":1,"1500":2,"1501":1,"1504":1,"1514":1,"1516":1,"1518":1,"1554":1,"1559":1,"1562":1,"1564":1,"1572":2,"1573":8,"1651":1,"1675":1,"1676":1,"1682":1,"1683":1,"1684":4,"1731":1,"1803":8,"1804":1,"1805":8,"1807":4,"1808":1,"1815":1,"1817":1,"1821":4,"1822":1,"1825":2,"1827":1,"1829":1,"1833":1,"1839":9,"1844":2,"1849":1,"1864":1,"1868":4,"1876":1,"1879":2,"1910":1,"1921":1,"1948":1,"1949":1,"1951":1,"1955":1,"2034":1,"2044":1,"2084":1,"2088":1,"2111":1,"2126":1,"2128":1,"2139":1,"2141":1,"2144":2,"2146":1,"2149":1,"2161":4,"2162":2,"2169":1,"2171":2,"2179":1,"2225":1,"2226":3,"2259":1,"2273":1,"2275":1,"2311":2,"2320":1,"2326":1,"2347":1,"2428":1,"2441":1,"2442":2,"2446":1,"2450":1,"2454":1,"2466":1,"2475":1,"2476":1,"2477":1,"2480":1,"2490":2,"2502":1,"2524":1,"2564":2,"2566":2,"2569":4,"2573":1,"2574":5,"2577":3,"2584":1,"2596":1,"2605":1,"2612":1,"2671":1,"2674":1,"2680":1,"2681":1,"2687":1,"2689":2,"2690":1,"2691":1,"2697":2,"2699":1,"2705":1,"2712":1,"2720":1,"2727":1,"2730":1,"2731":2,"2732":3,"2733":2,"2743":1,"2745":1}}],["timestamp",{"2":{"1326":6}}],["timestamps",{"2":{"199":1,"211":1,"375":1,"2129":1,"2697":1}}],["times",{"2":{"0":2,"9":2,"19":2,"39":2,"52":2,"222":1,"234":1,"374":2,"396":1,"411":2,"505":3,"584":1,"590":1,"628":1,"683":1,"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1,"1325":1,"1326":1,"1431":1,"1436":2,"1451":2,"1573":1,"1582":1,"1802":2,"1940":1,"1942":1,"2044":3,"2105":5,"2160":2,"2169":1,"2262":1,"2367":1,"2490":2,"2491":1,"2595":1,"2600":1,"2661":1,"2663":1,"2691":1,"2728":2,"2745":3}}],["tedious",{"2":{"2254":1,"2421":1}}],["telephony",{"2":{"1881":1}}],["tells",{"2":{"1357":1,"1383":1,"1725":1,"1946":1,"2113":1,"2321":1,"2477":2,"2480":1,"2614":2,"2748":1}}],["tell",{"2":{"105":2,"233":1,"263":1,"433":1,"529":1,"540":1,"559":1,"1830":1,"2125":2,"2263":1,"2411":1,"2473":1,"2757":1}}],["tekezo",{"2":{"1281":2}}],["tee",{"2":{"1239":1}}],["teensys",{"2":{"625":1,"2235":1,"2262":1}}],["teensy++",{"2":{"487":1,"2133":1,"2268":1,"2269":1}}],["teensy2",{"2":{"207":2}}],["teensypp",{"2":{"207":2}}],["teensy",{"0":{"81":1,"108":1,"2133":1,"2276":1,"2333":1,"2664":1},"1":{"2334":1},"2":{"81":1,"93":1,"108":1,"114":4,"131":1,"134":1,"149":2,"176":1,"199":1,"207":2,"292":4,"487":1,"491":4,"511":1,"624":1,"1234":1,"2133":3,"2235":5,"2238":1,"2262":2,"2266":1,"2268":1,"2269":1,"2275":1,"2276":1,"2279":2,"2333":2,"2334":3,"2664":1}}],["ten",{"2":{"1943":1}}],["tend",{"2":{"341":1,"1451":1,"2576":1}}],["tentative",{"0":{"88":1},"2":{"176":1}}],["tegic",{"2":{"253":2}}],["technology",{"2":{"1325":1}}],["technologies",{"2":{"1325":1}}],["technique",{"2":{"1325":1,"1454":1,"1677":1,"2270":1,"2738":1}}],["techniques",{"2":{"479":1,"2270":1}}],["technically",{"2":{"1278":1,"1325":1,"2132":1}}],["technical",{"0":{"529":1,"1821":1},"2":{"70":1,"201":1,"213":1,"224":1,"238":1,"551":1,"701":1,"1265":1,"1389":1}}],["tech",{"2":{"187":1,"191":1,"198":1,"199":1,"211":23,"279":1,"2566":3}}],["teach",{"2":{"2457":1,"2472":1}}],["teaching",{"2":{"176":1}}],["teal",{"2":{"582":1,"1953":2,"2058":2}}],["team",{"0":{"265":1,"275":1},"2":{"116":1,"265":3,"268":1,"273":1,"275":2,"276":1,"356":1,"1265":1,"2719":3,"2720":1}}],["team0110",{"2":{"102":1}}],["tempo",{"0":{"1400":1},"2":{"1400":10,"1406":1,"1950":1,"2105":1,"2106":4,"2107":10}}],["temporarily",{"2":{"273":1,"334":1,"1288":1,"1303":1,"1433":1,"1434":1,"1512":1,"2263":1,"2328":1,"2728":1}}],["temporary",{"2":{"114":1,"249":1,"396":1,"1284":1,"1335":1,"1553":1}}],["temperature",{"2":{"636":2,"1950":3,"2272":1}}],["temp",{"2":{"396":1,"1385":7}}],["templates",{"0":{"622":1},"1":{"623":1,"624":1},"2":{"266":1,"277":1,"318":1,"385":1,"622":1}}],["template",{"0":{"623":1,"624":1,"2435":1},"2":{"50":1,"277":1,"318":1,"559":1,"621":1,"1380":1,"1383":1,"1717":1,"2297":1,"2435":1,"2554":1,"2566":1}}],["textwidth",{"2":{"2577":4}}],["text",{"0":{"399":1,"432":1,"435":1,"2423":1,"2485":1},"1":{"433":1,"434":1,"435":1},"2":{"110":1,"111":2,"153":1,"199":1,"236":1,"279":1,"300":1,"389":1,"390":1,"391":1,"399":3,"431":1,"432":4,"434":1,"435":7,"618":1,"1287":1,"1353":1,"1440":2,"1441":1,"1451":1,"1839":1,"2182":1,"2263":1,"2277":1,"2279":1,"2349":1,"2420":1,"2423":1,"2429":3,"2437":1,"2457":3,"2460":1,"2477":2,"2480":1,"2485":2,"2492":1,"2502":1,"2503":1,"2553":1,"2577":4,"2615":1,"2672":2,"2702":1}}],["terry",{"2":{"176":1}}],["terrazzo",{"2":{"92":2}}],["term\`",{"2":{"2169":1}}],["terms",{"0":{"2621":1},"1":{"2622":1,"2623":1,"2624":1,"2625":1,"2626":1,"2627":1,"2628":1,"2629":1,"2630":1,"2631":1,"2632":1,"2633":1,"2634":1,"2635":1,"2636":1,"2637":1,"2638":1,"2639":1,"2640":1,"2641":1,"2642":1,"2643":1,"2644":1,"2645":1,"2646":1,"2647":1,"2648":1,"2649":1,"2650":1,"2651":1,"2652":1,"2653":1,"2654":1,"2655":1,"2656":1,"2657":1,"2658":1,"2659":1,"2660":1,"2661":1,"2662":1,"2663":1,"2664":1,"2665":1,"2666":1,"2667":1,"2668":1,"2669":1},"2":{"1326":1,"1380":1,"1431":1,"2171":1,"2181":1,"2570":1,"2585":1,"2592":1,"2728":1}}],["terminated",{"2":{"1451":3,"1508":1}}],["terminator",{"2":{"272":1,"1594":1}}],["terminals",{"2":{"2460":1}}],["terminal",{"2":{"176":1,"191":1,"291":5,"324":2,"433":1,"435":1,"1248":1,"1448":1,"1567":1,"2074":1,"2169":1,"2279":1,"2347":1,"2420":1,"2425":1,"2454":1,"2458":1,"2460":3,"2468":3,"2508":9}}],["terminology",{"2":{"249":2}}],["term",{"0":{"119":1,"195":1,"1514":1,"2375":1,"2670":1,"2727":1,"2728":1,"2737":1},"1":{"2728":1},"2":{"22":2,"49":1,"112":3,"114":1,"119":9,"134":2,"160":1,"176":1,"188":1,"191":1,"194":1,"195":9,"199":3,"222":2,"262":1,"505":18,"515":2,"1379":1,"1411":1,"1431":1,"1432":1,"1500":4,"1508":1,"1514":1,"1516":2,"1518":7,"1520":1,"1521":1,"1844":3,"1845":1,"1868":1,"2161":9,"2162":4,"2169":3,"2170":1,"2171":6,"2375":9,"2546":1,"2625":1,"2653":1,"2659":1,"2665":1,"2670":1,"2674":2,"2681":1,"2716":1,"2727":9,"2728":50,"2729":6,"2730":1,"2734":6,"2735":6,"2736":4,"2737":17,"2738":2,"2749":1}}],["testgroup",{"2":{"2753":1}}],["testlist",{"2":{"2753":3}}],["tester",{"2":{"2279":2}}],["testers",{"2":{"340":1,"343":1,"344":1}}],["tested",{"2":{"49":3,"273":1,"285":1,"663":1,"1365":1,"1811":1,"2102":1,"2169":1,"2295":1,"2492":1}}],["testing",{"0":{"442":1,"443":1,"446":1,"483":1,"663":1,"2279":1,"2487":1,"2488":1,"2667":1,"2750":1},"1":{"443":1,"444":1,"445":1,"446":1,"447":1,"484":1,"485":1,"2488":1,"2489":1,"2751":1,"2752":1,"2753":1,"2754":1,"2755":1,"2756":1},"2":{"337":1,"340":1,"349":1,"352":1,"397":1,"483":1,"1253":1,"1286":1,"1436":1,"1821":1,"2263":1,"2455":1,"2546":1,"2667":2,"2750":2,"2751":1,"2753":1,"2756":1}}],["test",{"0":{"411":1,"1286":1,"2455":1,"2469":1,"2751":1},"2":{"49":1,"134":3,"149":2,"191":1,"199":3,"211":2,"236":3,"249":3,"266":1,"277":1,"292":2,"407":9,"411":16,"442":1,"446":1,"483":1,"484":1,"485":1,"1286":1,"1287":1,"1452":1,"1508":4,"1509":2,"1510":4,"1549":4,"2034":1,"2036":2,"2037":2,"2150":1,"2279":2,"2294":1,"2376":1,"2455":2,"2567":1,"2711":1,"2750":1,"2751":3,"2752":3,"2753":4,"2754":5,"2755":2,"2756":2}}],["tests",{"0":{"484":1,"485":1,"2753":1,"2754":1,"2755":1,"2756":1},"2":{"1":1,"114":1,"134":3,"149":1,"160":1,"174":1,"176":1,"191":1,"196":1,"198":1,"199":2,"222":1,"263":1,"407":3,"411":2,"442":1,"446":8,"483":5,"484":2,"485":4,"560":1,"1435":1,"2567":3,"2667":1,"2750":1,"2751":1,"2753":7,"2754":4,"2755":3,"2756":1}}],["t",{"0":{"548":1,"551":1,"647":4,"649":3,"652":1,"671":1,"673":1,"675":3,"677":3,"679":2,"708":5,"711":5,"714":6,"717":6,"720":6,"723":6,"726":3,"736":1,"739":2,"741":3,"743":3,"745":1,"747":1,"749":1,"751":1,"762":1,"764":1,"766":3,"768":3,"770":3,"772":1,"774":1,"776":1,"778":1,"780":1,"782":1,"794":1,"796":1,"798":3,"800":3,"802":3,"804":1,"806":1,"808":4,"810":2,"812":1,"814":1,"824":1,"826":1,"828":3,"830":2,"832":3,"834":3,"836":1,"838":1,"840":1,"842":1,"844":1,"846":1,"859":1,"861":1,"863":3,"865":2,"867":3,"869":3,"871":1,"873":1,"875":1,"877":1,"879":1,"881":1,"893":1,"895":1,"897":3,"899":2,"901":3,"903":3,"905":1,"907":1,"909":1,"911":1,"913":1,"915":1,"927":1,"929":1,"931":3,"933":2,"935":3,"937":3,"939":1,"941":1,"943":1,"945":1,"947":1,"949":1,"961":1,"963":1,"965":3,"967":2,"969":3,"971":3,"973":1,"975":1,"977":1,"979":1,"981":1,"983":1,"995":1,"997":1,"999":3,"1001":2,"1003":3,"1005":3,"1007":1,"1009":1,"1011":4,"1013":2,"1015":1,"1017":1,"1029":1,"1031":1,"1033":3,"1035":2,"1037":3,"1039":3,"1041":1,"1043":1,"1045":4,"1047":2,"1049":1,"1051":1,"1063":1,"1065":1,"1067":3,"1069":2,"1071":3,"1073":3,"1075":1,"1077":1,"1079":4,"1081":2,"1083":1,"1085":1,"1097":1,"1099":1,"1101":3,"1103":2,"1105":3,"1107":3,"1109":1,"1111":1,"1113":4,"1115":2,"1117":1,"1119":1,"1150":1,"1152":1,"1154":3,"1156":2,"1158":3,"1160":3,"1162":1,"1164":1,"1166":1,"1168":1,"1170":1,"1172":1,"1180":3,"1183":2,"1186":1,"1188":3,"1191":3,"1200":1,"1202":1,"1204":1,"1206":2,"1208":1,"1232":2,"1238":1,"1243":1,"1254":1,"1255":1,"1258":1,"1260":1,"1270":1,"1272":1,"1273":1,"1281":1,"1288":1,"1290":1,"1291":1,"1292":1,"1479":1,"1481":1,"1536":1,"1603":2,"1611":2,"1613":2,"1617":1,"1619":1,"1622":1,"1624":1,"1626":1,"1628":1,"1637":1,"1639":1,"1642":1,"1644":1,"1646":2,"1649":2,"1670":1,"1671":1,"1694":1,"1699":1,"1702":2,"1705":3,"1708":4,"1711":5,"1743":2,"1745":1,"1747":1,"1749":1,"1755":1,"1761":1,"1767":1,"1769":1,"1771":1,"1780":2,"1783":2,"1886":1,"1888":1,"1890":1,"1892":1,"1894":1,"1898":1,"1900":1,"1925":2,"1927":2,"1970":4,"1972":3,"1974":1,"1976":1,"1982":1,"1988":1,"1994":1,"2000":1,"2006":1,"2008":1,"2010":1,"2012":3,"2014":3,"2025":2,"2028":2,"2083":1,"2087":1,"2091":1,"2093":1,"2095":1,"2097":1,"2186":1,"2188":1,"2192":1,"2194":1,"2199":1,"2203":2,"2206":2,"2209":1,"2214":1,"2216":1,"2254":1,"2670":1},"1":{"648":4,"650":3,"653":1,"672":1,"674":1,"676":3,"678":3,"680":2,"709":5,"710":5,"712":5,"713":5,"715":6,"716":6,"718":6,"719":6,"721":6,"722":6,"724":6,"725":6,"727":3,"728":3,"737":1,"740":2,"742":3,"744":3,"746":1,"748":1,"750":1,"752":1,"763":1,"765":1,"767":3,"769":3,"771":3,"773":1,"775":1,"777":1,"779":1,"781":1,"783":1,"795":1,"797":1,"799":3,"801":3,"803":3,"805":1,"807":1,"809":4,"811":2,"813":1,"815":1,"825":1,"827":1,"829":3,"831":2,"833":3,"835":3,"837":1,"839":1,"841":1,"843":1,"845":1,"847":1,"860":1,"862":1,"864":3,"866":2,"868":3,"870":3,"872":1,"874":1,"876":1,"878":1,"880":1,"882":1,"894":1,"896":1,"898":3,"900":2,"902":3,"904":3,"906":1,"908":1,"910":1,"912":1,"914":1,"916":1,"928":1,"930":1,"932":3,"934":2,"936":3,"938":3,"940":1,"942":1,"944":1,"946":1,"948":1,"950":1,"962":1,"964":1,"966":3,"968":2,"970":3,"972":3,"974":1,"976":1,"978":1,"980":1,"982":1,"984":1,"996":1,"998":1,"1000":3,"1002":2,"1004":3,"1006":3,"1008":1,"1010":1,"1012":4,"1014":2,"1016":1,"1018":1,"1030":1,"1032":1,"1034":3,"1036":2,"1038":3,"1040":3,"1042":1,"1044":1,"1046":4,"1048":2,"1050":1,"1052":1,"1064":1,"1066":1,"1068":3,"1070":2,"1072":3,"1074":3,"1076":1,"1078":1,"1080":4,"1082":2,"1084":1,"1086":1,"1098":1,"1100":1,"1102":3,"1104":2,"1106":3,"1108":3,"1110":1,"1112":1,"1114":4,"1116":2,"1118":1,"1120":1,"1151":1,"1153":1,"1155":3,"1157":2,"1159":3,"1161":3,"1163":1,"1165":1,"1167":1,"1169":1,"1171":1,"1173":1,"1181":3,"1182":3,"1184":2,"1185":2,"1187":1,"1189":3,"1190":3,"1192":3,"1193":3,"1201":1,"1203":1,"1205":1,"1207":2,"1209":1,"1233":2,"1239":1,"1240":1,"1480":1,"1482":1,"1537":1,"1604":2,"1612":2,"1614":2,"1618":1,"1620":1,"1621":1,"1623":1,"1625":1,"1627":1,"1629":1,"1638":1,"1640":1,"1643":1,"1645":1,"1647":2,"1648":2,"1650":2,"1695":1,"1696":1,"1700":1,"1701":1,"1703":2,"1704":2,"1706":3,"1707":3,"1709":4,"1710":4,"1712":5,"1713":5,"1744":2,"1746":1,"1748":1,"1750":1,"1756":1,"1762":1,"1768":1,"1770":1,"1772":1,"1887":1,"1889":1,"1891":1,"1893":1,"1895":1,"1896":1,"1899":1,"1901":1,"1926":2,"1928":2,"1971":4,"1973":3,"1975":1,"1977":1,"1983":1,"1989":1,"1995":1,"2001":1,"2007":1,"2009":1,"2011":1,"2015":3,"2084":1,"2088":1,"2092":1,"2094":1,"2096":1,"2098":1,"2187":1,"2189":1,"2193":1,"2195":1,"2200":1,"2204":2,"2205":2,"2207":2,"2208":2,"2210":1,"2215":1,"2217":1,"2218":1},"2":{"22":9,"31":3,"34":3,"46":3,"90":4,"94":2,"105":8,"114":4,"119":1,"149":3,"153":1,"164":1,"166":1,"173":2,"176":1,"188":1,"191":2,"194":9,"195":6,"198":1,"199":2,"211":3,"214":1,"221":1,"222":1,"232":1,"247":1,"249":1,"266":1,"272":3,"277":2,"291":1,"313":1,"317":1,"349":1,"352":2,"375":2,"385":1,"396":3,"401":1,"407":4,"411":2,"430":1,"453":1,"454":2,"455":1,"457":1,"474":1,"479":1,"498":1,"501":1,"505":1,"515":1,"530":3,"534":4,"537":2,"538":1,"540":1,"551":1,"557":1,"560":4,"565":1,"566":3,"572":2,"573":10,"575":1,"578":1,"580":7,"586":1,"588":4,"597":2,"606":1,"613":1,"621":1,"648":4,"650":3,"653":1,"660":2,"669":1,"672":4,"674":1,"676":3,"678":3,"680":2,"709":4,"712":4,"715":5,"718":5,"721":4,"724":4,"727":2,"734":2,"737":4,"740":2,"742":3,"744":3,"746":1,"748":1,"750":1,"752":1,"760":2,"763":5,"765":1,"767":3,"769":3,"771":3,"773":1,"775":1,"777":1,"779":1,"781":1,"783":1,"792":2,"795":5,"797":1,"799":3,"801":3,"803":3,"805":1,"807":1,"809":4,"811":2,"813":1,"815":1,"822":2,"825":5,"827":1,"829":3,"831":2,"833":3,"835":3,"837":1,"839":1,"841":1,"843":1,"845":1,"847":1,"857":2,"860":5,"862":1,"864":3,"866":2,"868":3,"870":3,"872":1,"874":1,"876":1,"878":1,"880":1,"882":1,"891":2,"894":5,"896":1,"898":3,"900":2,"902":3,"904":3,"906":1,"908":1,"910":1,"912":1,"914":1,"916":1,"925":2,"928":5,"930":1,"932":3,"934":2,"936":3,"938":3,"940":1,"942":1,"944":1,"946":1,"948":1,"950":1,"959":2,"962":5,"964":1,"966":3,"968":2,"970":3,"972":3,"974":1,"976":1,"978":1,"980":1,"982":1,"984":1,"993":2,"996":5,"998":1,"1000":3,"1002":2,"1004":3,"1006":3,"1008":1,"1010":1,"1012":4,"1014":2,"1016":1,"1018":1,"1027":2,"1030":5,"1032":1,"1034":3,"1036":2,"1038":3,"1040":3,"1042":1,"1044":1,"1046":4,"1048":2,"1050":1,"1052":1,"1061":2,"1064":5,"1066":1,"1068":3,"1070":2,"1072":3,"1074":3,"1076":1,"1078":1,"1080":4,"1082":2,"1084":1,"1086":1,"1095":2,"1098":5,"1100":2,"1102":3,"1104":2,"1106":3,"1108":3,"1110":1,"1112":1,"1114":4,"1116":2,"1118":1,"1120":1,"1125":1,"1126":1,"1137":1,"1148":2,"1151":5,"1153":1,"1155":3,"1157":2,"1159":3,"1161":3,"1163":1,"1165":1,"1167":1,"1169":1,"1171":1,"1173":1,"1177":1,"1181":3,"1184":1,"1189":2,"1192":2,"1201":1,"1203":1,"1207":2,"1209":2,"1233":2,"1236":1,"1237":1,"1241":1,"1242":1,"1252":2,"1254":1,"1260":1,"1262":1,"1265":1,"1266":1,"1271":1,"1276":2,"1286":1,"1287":3,"1288":2,"1290":1,"1302":3,"1303":5,"1312":1,"1325":1,"1331":1,"1332":9,"1333":4,"1336":1,"1340":1,"1341":4,"1343":2,"1344":4,"1345":4,"1359":8,"1360":5,"1361":1,"1363":1,"1367":1,"1375":3,"1378":2,"1379":1,"1383":8,"1384":2,"1385":8,"1393":1,"1398":1,"1400":3,"1403":2,"1404":2,"1405":2,"1406":1,"1416":3,"1423":4,"1430":8,"1438":2,"1439":1,"1440":1,"1442":1,"1445":5,"1446":4,"1447":1,"1448":3,"1450":1,"1451":5,"1464":1,"1480":1,"1495":1,"1506":2,"1508":3,"1509":3,"1510":5,"1511":9,"1515":2,"1518":22,"1519":8,"1522":1,"1523":10,"1525":2,"1527":1,"1534":1,"1548":1,"1549":4,"1555":1,"1556":5,"1558":1,"1559":1,"1560":3,"1581":2,"1594":1,"1604":1,"1612":2,"1614":2,"1618":1,"1623":1,"1625":1,"1627":1,"1629":1,"1633":1,"1634":6,"1638":2,"1640":4,"1643":1,"1645":1,"1647":1,"1650":2,"1655":1,"1657":3,"1658":2,"1659":1,"1662":2,"1663":2,"1665":7,"1666":3,"1668":6,"1670":9,"1672":1,"1683":1,"1686":1,"1695":1,"1700":1,"1703":2,"1706":3,"1709":4,"1712":5,"1714":3,"1716":2,"1717":1,"1718":2,"1719":1,"1722":5,"1725":2,"1729":7,"1733":2,"1744":2,"1746":1,"1748":1,"1750":1,"1768":1,"1770":1,"1781":2,"1784":2,"1792":3,"1813":1,"1815":4,"1816":2,"1820":2,"1821":2,"1822":30,"1824":1,"1825":2,"1826":1,"1830":2,"1849":4,"1850":5,"1852":1,"1853":5,"1854":3,"1855":5,"1857":1,"1858":4,"1859":10,"1861":4,"1862":3,"1864":1,"1868":1,"1870":4,"1871":2,"1873":10,"1876":2,"1877":2,"1878":2,"1879":1,"1880":4,"1887":1,"1889":1,"1891":1,"1893":1,"1895":1,"1901":1,"1910":2,"1917":1,"1921":2,"1923":3,"1926":2,"1928":2,"1933":6,"1934":3,"1935":5,"1937":3,"1938":3,"1939":3,"1940":2,"1941":5,"1943":15,"1946":2,"1948":1,"1952":7,"1957":2,"1958":13,"1959":5,"1971":4,"1973":3,"1975":1,"1977":1,"2007":1,"2009":1,"2013":3,"2015":3,"2026":2,"2029":2,"2032":1,"2034":1,"2040":7,"2042":6,"2043":5,"2044":7,"2064":1,"2075":1,"2078":2,"2084":1,"2088":1,"2092":1,"2094":1,"2096":1,"2098":1,"2106":1,"2107":13,"2125":2,"2128":1,"2130":20,"2133":1,"2137":1,"2139":4,"2140":2,"2142":1,"2143":16,"2145":1,"2148":2,"2149":1,"2152":9,"2153":2,"2155":2,"2156":1,"2157":1,"2164":2,"2166":2,"2167":5,"2168":17,"2169":14,"2170":11,"2171":16,"2172":1,"2181":1,"2182":2,"2183":1,"2189":1,"2193":1,"2195":1,"2200":1,"2204":1,"2207":1,"2210":1,"2217":1,"2224":1,"2228":6,"2244":1,"2254":1,"2255":1,"2262":1,"2263":1,"2272":1,"2273":1,"2274":4,"2279":2,"2286":1,"2301":3,"2307":1,"2311":2,"2335":1,"2355":3,"2374":40,"2376":1,"2383":1,"2386":3,"2401":1,"2403":1,"2405":2,"2406":3,"2407":1,"2410":40,"2411":1,"2413":3,"2414":2,"2415":2,"2417":2,"2423":1,"2424":1,"2444":1,"2453":1,"2454":2,"2455":1,"2457":1,"2468":1,"2477":2,"2491":6,"2497":1,"2504":1,"2506":1,"2508":2,"2512":1,"2513":1,"2533":1,"2542":1,"2546":1,"2553":1,"2556":1,"2566":1,"2569":1,"2576":89,"2577":131,"2581":2,"2587":16,"2588":7,"2589":5,"2593":7,"2594":13,"2595":5,"2596":11,"2597":10,"2598":9,"2599":4,"2603":1,"2604":2,"2606":5,"2612":1,"2614":1,"2701":1,"2705":1,"2706":3,"2709":4,"2711":1,"2724":2,"2727":4,"2728":9,"2730":2,"2731":5,"2732":8,"2733":5,"2734":3,"2735":2,"2736":2,"2737":9,"2738":2,"2741":1,"2746":2,"2747":1,"2748":1,"2749":81,"2750":1,"2752":1,"2753":1,"2757":3}}],["tr6",{"2":{"1793":1,"2371":1}}],["tr5",{"2":{"1793":1,"2371":1}}],["tr4",{"2":{"1793":1,"2371":1}}],["tr3",{"2":{"1793":1,"2371":1}}],["tr2",{"2":{"1793":1,"2371":1}}],["tr1",{"2":{"1793":1,"2371":1}}],["tr0",{"2":{"1793":1,"2371":1}}],["trn1",{"2":{"1793":1,"2371":1}}],["trn2",{"2":{"1793":1,"2371":1}}],["trn3",{"2":{"1793":1,"2371":1}}],["trn4",{"2":{"1793":1,"2371":1}}],["trn5",{"2":{"1793":1,"2371":1}}],["trn6",{"2":{"1793":1,"2371":1}}],["trns",{"2":{"313":118,"530":152,"1275":1,"1335":1,"1340":2,"1933":3,"1934":1,"1935":1,"1941":1,"1958":1,"2112":3,"2113":1,"2355":1,"2367":1,"2385":1,"2395":1,"2403":4,"2405":2,"2408":1,"2614":1}}],["trp",{"2":{"1578":1}}],["trrs",{"2":{"1129":1,"2114":1,"2116":1,"2117":2,"2118":2,"2119":1,"2120":1,"2131":1,"2271":1}}],["trsu",{"2":{"1793":1,"2371":1}}],["trsd",{"2":{"1793":1,"2371":1}}],["trst",{"2":{"1214":1,"1215":1}}],["trs",{"2":{"1123":1,"1126":1,"2119":1}}],["troubleshoot",{"2":{"2250":1}}],["troubleshooting",{"0":{"544":1,"1138":1,"1501":1,"1863":1},"1":{"545":1,"546":1,"547":1,"548":1,"549":1},"2":{"1138":1,"1244":1,"1251":1,"1863":1,"2134":1,"2428":1}}],["trouble",{"2":{"555":1,"1287":1,"2279":1}}],["tronguylabs",{"2":{"114":1,"207":4}}],["trk1",{"2":{"277":1}}],["trkeyboard",{"2":{"277":1}}],["trying",{"2":{"554":1,"1416":1,"1881":1,"2125":1,"2169":2,"2286":1,"2469":1}}],["try",{"2":{"228":1,"364":1,"461":1,"466":2,"477":1,"541":1,"551":1,"557":1,"560":1,"561":1,"626":1,"707":1,"1254":2,"1255":1,"1280":1,"1288":1,"1298":1,"1338":1,"1346":1,"1390":1,"1923":1,"2169":1,"2274":1,"2279":1,"2335":1,"2353":2,"2450":1,"2454":1,"2466":1,"2501":1,"2513":1,"2566":1,"2605":1,"2728":1,"2753":1}}],["treated",{"2":{"1865":4,"1869":1,"1871":1,"2308":1,"2355":1}}],["treating",{"2":{"562":1,"2370":1,"2396":1}}],["treat",{"2":{"176":1,"612":1,"1339":1,"2060":1,"2370":1,"2396":1,"2745":1}}],["treadstone48",{"2":{"143":4}}],["treadstone32",{"2":{"143":2}}],["tree",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"143":2,"181":2,"191":1,"199":2,"337":1,"436":1,"1227":1,"1338":1,"1438":1,"2428":2,"2477":1}}],["truth",{"2":{"606":2}}],["trunk",{"2":{"134":1}}],["truetype",{"2":{"2575":1}}],["true",{"0":{"258":1,"476":1},"2":{"13":1,"90":3,"105":6,"111":8,"185":1,"194":3,"195":1,"230":1,"249":1,"256":1,"258":1,"314":1,"397":1,"453":1,"476":2,"534":1,"571":1,"572":2,"588":1,"592":1,"593":1,"609":1,"610":3,"641":1,"657":7,"658":5,"661":3,"681":1,"703":3,"1124":1,"1129":1,"1132":2,"1133":2,"1177":3,"1181":1,"1182":1,"1198":1,"1211":1,"1226":2,"1230":3,"1252":1,"1302":2,"1303":4,"1332":4,"1344":1,"1359":3,"1360":1,"1375":2,"1384":1,"1385":1,"1404":1,"1423":2,"1430":1,"1446":2,"1448":2,"1449":1,"1457":1,"1469":2,"1470":2,"1484":1,"1489":1,"1505":1,"1506":3,"1518":6,"1519":1,"1523":1,"1526":1,"1530":2,"1534":2,"1549":4,"1560":2,"1593":2,"1616":1,"1621":1,"1634":1,"1670":2,"1686":2,"1696":1,"1701":1,"1704":1,"1707":1,"1710":1,"1713":1,"1716":1,"1718":2,"1726":2,"1730":1,"1733":1,"1742":1,"1775":1,"1779":1,"1785":1,"1792":2,"1816":1,"1822":16,"1826":1,"1839":3,"1853":1,"1854":1,"1858":1,"1859":1,"1861":1,"1862":1,"1866":2,"1871":2,"1873":3,"1874":2,"1876":2,"1879":3,"1896":1,"1906":1,"1908":2,"1916":1,"1935":1,"1937":2,"1938":1,"1939":1,"1940":1,"1941":1,"1943":2,"1947":2,"1954":1,"1957":1,"1969":1,"2020":1,"2024":1,"2030":1,"2035":1,"2043":1,"2056":1,"2078":1,"2143":12,"2152":3,"2158":1,"2162":1,"2168":1,"2169":2,"2171":2,"2179":1,"2213":1,"2218":1,"2220":1,"2228":2,"2306":1,"2413":1,"2414":7,"2415":1,"2437":1,"2548":5,"2577":5,"2604":1,"2674":1,"2676":2,"2677":1,"2688":3,"2694":3,"2695":3,"2699":1,"2728":1,"2735":1,"2736":1,"2738":1,"2743":1}}],["tr",{"2":{"134":1,"2153":3}}],["trim",{"2":{"2273":1}}],["tried",{"2":{"2458":1,"2726":1}}],["trie",{"0":{"1450":1},"1":{"1451":1,"1452":1},"2":{"1438":4,"1440":1,"1450":1,"1451":4,"1452":1}}],["tries",{"2":{"502":1,"1451":1,"2417":1,"2452":1}}],["triangle",{"2":{"1393":1}}],["tricker",{"2":{"1340":1}}],["tricky",{"2":{"1338":1,"1438":1,"2255":1,"2757":1}}],["triplet",{"2":{"1217":1,"2577":1}}],["triple",{"2":{"462":2,"2169":5}}],["trinity",{"2":{"211":1}}],["tri",{"0":{"2172":1,"2602":1,"2603":1,"2605":1},"1":{"2173":1,"2174":1,"2175":1,"2603":1,"2604":2,"2605":1,"2606":2},"2":{"199":2,"211":1,"1341":3,"1383":3,"2172":1,"2173":2,"2174":4,"2175":7,"2566":2,"2603":1,"2604":4,"2605":1,"2606":4}}],["triggered",{"2":{"505":1,"592":1,"658":1,"1556":4,"1582":3,"1670":1,"1873":1}}],["triggers",{"0":{"1441":1},"2":{"195":1,"1431":1,"1670":1,"1677":1,"1678":1,"1844":2,"1954":1,"2738":1}}],["triggering",{"2":{"98":1,"505":1,"1573":1,"2112":1,"2129":1,"2305":1}}],["trigger",{"2":{"95":1,"98":1,"114":1,"191":1,"198":1,"505":1,"521":1,"586":1,"592":1,"597":4,"657":2,"658":1,"1239":1,"1300":1,"1302":1,"1303":1,"1441":3,"1495":1,"1496":1,"1497":1,"1519":3,"1554":1,"1573":1,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"1655":1,"1665":7,"1668":2,"1670":4,"1671":6,"1673":8,"1674":6,"1675":1,"1677":1,"1828":1,"1844":1,"1845":1,"1873":1,"1874":1,"1879":1,"1954":1,"2437":1,"2439":1,"2440":1,"2524":1,"2605":1,"2728":2,"2737":2,"2738":1}}],["trivial",{"2":{"95":1,"266":1,"1670":1,"2309":1,"2401":1}}],["tranlates",{"2":{"2707":1}}],["transcription",{"2":{"2144":1}}],["translucent",{"2":{"2031":1}}],["translating",{"2":{"2490":1}}],["translation",{"2":{"413":1,"2144":1}}],["translatable",{"2":{"1359":1}}],["translated",{"2":{"1881":1}}],["translates",{"2":{"638":1,"639":1,"2302":1}}],["translate",{"2":{"99":1,"1576":1,"2571":1}}],["transmitted",{"2":{"1492":1,"2574":1,"2729":1}}],["transmitting",{"2":{"1123":1,"1126":1,"1129":2,"2129":5}}],["transmit",{"0":{"708":1,"1188":1,"1206":1},"1":{"709":1,"710":1,"1189":1,"1190":1,"1207":1},"2":{"684":1,"685":1,"709":1,"715":1,"718":1,"1201":1,"1202":1,"1206":1,"2697":1}}],["transmissions",{"2":{"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1}}],["transmission",{"2":{"214":1,"263":1,"1121":3,"1181":1,"1225":1}}],["transistor",{"2":{"1458":4,"1471":1}}],["transitions",{"2":{"278":1,"1325":2,"1386":1,"2684":1}}],["transitioned",{"2":{"268":1}}],["transition",{"2":{"236":1,"265":1,"1325":1,"1578":60}}],["transient",{"0":{"686":1},"2":{"149":1,"681":2,"686":3,"2683":1}}],["transparency",{"0":{"2403":1},"2":{"2403":1,"2587":2,"2596":3}}],["transparent",{"2":{"231":1,"1335":1,"1677":1,"2113":1,"2355":2,"2395":2,"2403":4,"2405":1,"2587":1,"2596":3,"2738":1}}],["transposition",{"2":{"1793":15,"1794":1,"2371":15}}],["transpose",{"2":{"222":1,"1793":15,"2371":15}}],["transported",{"2":{"74":1}}],["transport",{"0":{"107":1},"2":{"74":1,"75":1,"111":1,"112":3,"114":1,"134":1,"160":1,"176":1,"266":1,"277":1,"508":1,"511":9,"1730":1,"1813":2,"1851":1,"1954":1,"2115":1,"2121":2,"2128":1,"2129":1,"2130":2,"2263":2,"2506":1,"2573":1,"2697":3}}],["transformation",{"2":{"1910":1,"2728":1}}],["transformations",{"2":{"169":1,"176":1,"185":1}}],["transform",{"2":{"1849":1,"1915":1}}],["transferring",{"2":{"1821":1,"2576":1}}],["transfers",{"2":{"160":1}}],["transfer",{"2":{"107":1,"703":1,"2128":1,"2130":1,"2149":1,"2320":1,"2576":2,"2577":2}}],["transactions",{"2":{"1136":1,"2130":1}}],["transaction",{"2":{"149":1,"176":1,"191":2,"266":1,"511":2,"1180":1,"1194":1,"2130":12,"2574":1}}],["travel",{"2":{"1839":7,"2038":1,"2268":1}}],["travis",{"2":{"1":1,"17":1}}],["trapezoid",{"2":{"1393":1}}],["trailing",{"2":{"211":2,"461":1,"467":1,"468":3,"1181":2}}],["traditional",{"2":{"2441":1}}],["traditionally",{"2":{"125":1,"185":1,"240":1,"2407":1}}],["tradestation",{"2":{"43":2}}],["tracing",{"0":{"2757":1},"2":{"2263":1,"2757":3}}],["trace=x",{"2":{"2757":1}}],["traced",{"2":{"2480":1,"2757":5}}],["trace",{"2":{"2133":1,"2263":1,"2757":4}}],["traceability",{"2":{"341":1}}],["tractyl",{"2":{"114":1,"149":2}}],["tracked",{"2":{"1807":1}}],["tracker++",{"2":{"1360":1}}],["tracker",{"2":{"1360":3,"1873":5}}],["tracks",{"0":{"2104":1},"2":{"1802":1,"2104":2,"2477":1,"2757":2}}],["trackpoints",{"2":{"1902":1}}],["trackpoint",{"0":{"1289":1,"1903":1},"2":{"266":1,"1902":4,"1912":1}}],["trackpad",{"0":{"1837":1,"1841":1},"1":{"1838":1,"1839":1,"1840":1,"1842":1,"1843":1,"1844":1,"1845":1},"2":{"176":2,"249":1,"1837":1,"1838":3,"1841":1,"1842":6,"1845":4,"1859":1}}],["trackpads",{"2":{"176":1,"1837":1,"1841":1}}],["tracking",{"2":{"134":1,"654":1,"1835":1,"1849":1,"1936":1,"2637":1}}],["trackball",{"0":{"1847":1},"2":{"114":3,"118":2,"176":1,"199":1,"246":1,"1847":11}}],["track",{"2":{"74":2,"1303":2,"1665":6,"1842":5,"1879":1,"1932":1,"2106":1,"2107":19,"2147":1,"2152":1,"2272":1,"2355":10,"2393":12,"2576":1,"2757":3}}],["tolerant",{"2":{"2519":1,"2532":1}}],["toward",{"2":{"2273":1}}],["towards",{"2":{"111":1,"191":1,"194":1,"262":1,"322":1,"606":1,"1471":1,"2171":2,"2665":1}}],["to=michi",{"2":{"1315":2}}],["to=imera",{"2":{"1315":2}}],["to=liatris",{"2":{"1315":2,"1322":2}}],["to=helios",{"2":{"1315":2,"1322":2}}],["to=elite",{"2":{"1315":2,"1322":2}}],["to=rp2040",{"2":{"1315":2,"1322":2}}],["to=stemcell",{"2":{"1315":2,"1322":2}}],["to=sparkfun",{"2":{"1315":2}}],["to=bonsai",{"2":{"1315":2}}],["to=bit",{"2":{"1315":2}}],["to=blok",{"2":{"1315":2}}],["to=kb2040",{"2":{"1315":2}}],["to=proton",{"2":{"1312":1,"1315":2,"2530":1}}],["to=",{"2":{"1312":2}}],["tour",{"2":{"560":1}}],["touching",{"2":{"2273":1}}],["touchdown",{"2":{"1879":1}}],["touch",{"2":{"176":1,"211":44,"222":4,"266":1,"273":1,"276":1,"1841":1,"1842":1,"1844":4,"1845":1,"2273":2,"2279":1,"2435":2,"2563":1}}],["touchpads",{"2":{"190":1,"191":1,"244":1,"1902":1,"1911":1}}],["touchpad",{"2":{"118":2,"1842":1,"1910":1}}],["todo",{"2":{"446":1,"565":2,"566":4}}],["today",{"2":{"343":1,"344":1,"345":1}}],["token",{"2":{"598":4,"599":3,"600":5,"2432":1,"2438":1,"2506":1,"2577":6}}],["tokens",{"2":{"416":1,"432":2,"435":1}}],["tokenn",{"2":{"372":1}}],["token2",{"2":{"372":1}}],["token1",{"2":{"372":1}}],["tokyokeyboard",{"2":{"102":1,"114":1}}],["tokyo60",{"2":{"102":2,"114":2}}],["tones",{"2":{"659":6,"1387":1,"1390":1,"1397":1,"1399":1}}],["tone",{"0":{"1397":1},"2":{"222":1,"572":3,"615":1,"1332":2,"1390":1,"1397":5,"1399":1}}],["tofujr",{"2":{"236":1}}],["tofu60",{"2":{"236":2}}],["tofu",{"2":{"199":1}}],["totally",{"2":{"1857":1}}],["total",{"2":{"191":4,"684":1,"685":1,"686":1,"694":1,"1214":1,"1215":1,"1553":1,"2120":1,"2229":1,"2255":2,"2276":1,"2424":1,"2577":2,"2587":4,"2594":4,"2708":1}}],["tominabox1",{"2":{"143":5,"149":2,"222":1,"236":1}}],["tops",{"2":{"2273":1}}],["topmost",{"2":{"1338":1,"1612":1,"1614":1}}],["topic=41989",{"2":{"1298":1}}],["topic=14290",{"2":{"1297":1}}],["topic=50176",{"2":{"1289":1}}],["topic=57008",{"2":{"1275":1}}],["topics",{"0":{"602":1,"1304":1,"2723":1,"2724":1,"2725":1},"1":{"603":1,"604":1,"1305":1,"1306":1,"1307":1,"1308":1,"1309":1},"2":{"2455":1,"2723":1,"2724":2}}],["topic",{"2":{"350":5,"1300":1,"2348":1}}],["top",{"2":{"100":1,"149":1,"255":1,"349":1,"502":1,"512":1,"545":1,"609":1,"614":2,"624":1,"631":1,"681":1,"1250":1,"1270":1,"1332":1,"1335":1,"1340":2,"1398":1,"1496":2,"1533":1,"1560":1,"1684":1,"1724":1,"1725":1,"1728":1,"1822":1,"1876":1,"1921":1,"1934":1,"1945":1,"1946":1,"1949":2,"2122":1,"2143":1,"2148":1,"2169":1,"2178":1,"2273":1,"2295":1,"2299":13,"2300":13,"2309":1,"2348":1,"2405":1,"2406":2,"2423":1,"2450":1,"2477":1,"2498":1,"2508":1,"2513":2,"2554":1,"2556":1,"2566":1,"2575":1,"2577":5,"2598":3,"2614":1,"2615":1,"2616":1,"2679":1,"2686":2,"2701":1}}],["too",{"2":{"94":1,"105":1,"134":1,"153":1,"188":1,"211":1,"233":1,"471":1,"473":1,"477":1,"515":1,"555":1,"592":1,"598":1,"617":1,"626":1,"659":4,"660":3,"1243":1,"1287":2,"1325":1,"1331":1,"1332":1,"1336":1,"1364":1,"1385":1,"1401":1,"1406":1,"1410":1,"1438":1,"1508":1,"1684":1,"1803":6,"1804":1,"1859":1,"2133":2,"2157":1,"2169":1,"2171":1,"2263":1,"2272":1,"2273":1,"2274":1,"2306":1,"2411":1,"2441":1,"2491":1,"2555":1,"2564":2,"2566":2,"2712":1,"2728":1,"2757":1}}],["tool",{"2":{"182":1,"317":1,"324":1,"327":1,"331":1,"401":1,"430":1,"519":1,"541":1,"1281":1,"2183":1,"2293":1,"2329":1,"2331":1,"2333":1,"2427":1,"2566":1,"2615":1}}],["toolchains",{"2":{"331":1,"2462":1}}],["toolchain",{"0":{"325":1},"2":{"134":1,"325":1,"352":1,"2501":1,"2513":1}}],["toolbox",{"0":{"1247":1,"2451":1,"2452":1},"1":{"2452":1,"2453":1},"2":{"82":1,"119":1,"131":1,"164":2,"240":3,"292":1,"519":1,"626":1,"629":1,"1241":1,"1247":1,"1255":1,"1529":1,"2126":2,"2229":1,"2230":2,"2233":1,"2235":1,"2236":1,"2237":1,"2240":1,"2242":1,"2243":1,"2244":2,"2254":1,"2278":2,"2313":1,"2341":1,"2353":1,"2429":1,"2439":1,"2450":1,"2451":3,"2452":2,"2453":1,"2457":1}}],["tooling",{"2":{"70":1,"198":1,"317":1,"606":1,"2302":1,"2496":1}}],["tools",{"0":{"326":1,"1246":1},"1":{"1247":1,"1248":1,"1249":1},"2":{"49":1,"182":1,"318":1,"322":1,"325":1,"326":1,"328":1,"331":1,"431":2,"541":2,"606":2,"624":1,"1246":1,"1257":1,"1287":1,"1814":1,"2126":1,"2150":2,"2229":1,"2241":1,"2267":1,"2341":1,"2427":1,"2492":2,"2497":1,"2503":2,"2504":1,"2510":1,"2723":1}}],["tog",{"2":{"188":1,"191":1,"231":1,"530":2,"1948":1,"2377":1}}],["togg",{"2":{"188":2,"191":3,"235":1,"530":2,"1245":1,"1398":1,"1403":1,"1406":1,"1408":3,"1434":1,"1439":1,"1442":1,"1443":1,"1456":1,"1500":1,"1512":1,"1572":1,"1669":1,"1727":1,"1793":1,"2034":1,"2044":2,"2045":1,"2063":1,"2069":1,"2106":1,"2156":2,"2356":1,"2357":3,"2358":1,"2359":1,"2360":1,"2362":1,"2369":1,"2370":7,"2371":1,"2376":1,"2379":1,"2383":1,"2396":7,"2490":1,"2572":1}}],["toggling",{"0":{"1335":1},"1":{"1336":1},"2":{"49":1,"1219":1,"1331":1,"1859":1,"1864":1,"1873":1,"1874":1,"1960":1,"2044":1,"2171":1,"2263":1,"2525":1,"2705":1}}],["toggles",{"0":{"2037":1},"2":{"661":1,"1332":1,"1335":1,"1341":1,"1394":1,"1398":1,"1403":1,"1406":1,"1408":3,"1434":1,"1443":1,"1449":1,"1505":1,"1512":1,"1526":1,"2063":1,"2158":1,"2161":1,"2357":3,"2358":1,"2359":1,"2362":1,"2367":1,"2370":1,"2379":1,"2396":1,"2490":1,"2491":1,"2737":1}}],["toggled",{"2":{"506":1,"662":1,"684":1,"1335":1,"2491":1,"2524":1,"2566":1}}],["toggleterminal",{"2":{"291":1,"2508":1}}],["togglepin",{"2":{"243":1}}],["toggle",{"0":{"1473":1,"1485":1,"1735":1,"1736":1,"1962":1,"1963":1,"2171":1},"2":{"38":1,"49":2,"93":1,"112":2,"114":1,"149":1,"160":1,"211":1,"222":1,"231":3,"243":1,"505":6,"662":1,"696":1,"1288":1,"1331":1,"1335":4,"1398":1,"1403":1,"1406":1,"1408":3,"1434":1,"1442":1,"1443":1,"1446":1,"1449":1,"1456":3,"1473":1,"1485":1,"1500":1,"1505":1,"1512":2,"1526":1,"1530":6,"1572":8,"1582":3,"1668":1,"1669":2,"1727":2,"1735":1,"1736":1,"1793":2,"1858":1,"1859":1,"1864":2,"1865":2,"1873":4,"1874":4,"1878":4,"1948":1,"1962":1,"1963":1,"2034":2,"2044":2,"2053":4,"2069":2,"2106":3,"2107":7,"2156":9,"2158":1,"2161":1,"2171":1,"2240":1,"2263":1,"2356":2,"2357":3,"2358":1,"2359":1,"2360":3,"2362":1,"2367":1,"2369":2,"2370":13,"2371":2,"2376":2,"2377":1,"2379":1,"2383":4,"2396":13,"2490":2,"2491":2,"2524":1,"2525":1,"2572":2,"2674":1,"2691":1,"2737":1}}],["together",{"2":{"72":1,"322":1,"457":1,"516":1,"550":1,"609":1,"852":1,"1023":1,"1057":1,"1122":1,"1212":1,"1284":1,"1509":1,"1511":1,"1817":1,"1912":1,"1932":1,"2031":1,"2060":1,"2133":1,"2167":1,"2261":1,"2272":2,"2304":1,"2349":1,"2410":1,"2450":1,"2566":1}}],["to",{"0":{"3":1,"4":1,"5":1,"6":1,"7":1,"15":1,"16":1,"17":1,"21":1,"24":1,"25":1,"26":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"43":1,"46":1,"57":1,"142":1,"164":1,"166":1,"173":1,"263":1,"265":1,"275":1,"461":1,"528":1,"550":1,"551":1,"567":1,"608":1,"609":1,"613":1,"614":1,"627":1,"1253":1,"1258":1,"1263":1,"1264":1,"1344":1,"1412":1,"1519":1,"1551":1,"1552":1,"1656":2,"1676":1,"1677":1,"1799":1,"1866":1,"1867":1,"1871":2,"1873":1,"1878":1,"1921":1,"2039":1,"2161":1,"2255":1,"2281":1,"2324":1,"2326":1,"2424":1,"2438":1,"2446":1,"2472":1,"2517":1,"2553":1,"2601":1,"2609":1,"2746":1},"1":{"31":1,"34":1,"36":1,"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"551":1,"568":1,"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"1264":1,"1800":1,"1801":1,"1868":1,"1869":1,"1870":1,"1871":1,"2554":1,"2555":1,"2556":1,"2557":1,"2558":1,"2559":1,"2560":1,"2561":1,"2562":1,"2602":1,"2603":1,"2604":1,"2605":1,"2606":1,"2607":1,"2608":1,"2609":1,"2610":1,"2611":1,"2612":1},"2":{"0":1,"1":2,"2":3,"3":1,"4":2,"5":3,"6":4,"7":1,"9":1,"10":9,"12":1,"14":4,"15":1,"16":2,"17":1,"19":1,"21":2,"22":2,"23":2,"24":3,"25":3,"26":1,"27":1,"28":5,"30":3,"31":5,"32":3,"33":3,"34":5,"36":2,"37":2,"38":1,"39":1,"43":2,"45":6,"46":3,"48":1,"49":21,"50":9,"51":2,"52":1,"56":2,"58":1,"62":1,"63":4,"64":4,"65":4,"69":2,"70":6,"72":1,"73":3,"74":8,"75":2,"76":5,"77":3,"82":5,"83":1,"87":3,"88":2,"89":1,"90":6,"92":3,"93":14,"94":5,"95":2,"98":2,"99":5,"100":2,"103":2,"104":2,"105":3,"107":5,"109":1,"110":3,"112":2,"113":6,"114":48,"116":1,"118":4,"119":8,"120":2,"123":4,"124":6,"125":9,"126":3,"127":2,"128":2,"130":3,"131":1,"132":3,"133":8,"134":38,"137":1,"140":1,"142":1,"149":60,"152":3,"153":11,"154":4,"156":2,"157":2,"158":4,"160":27,"163":2,"164":4,"166":1,"167":4,"169":2,"170":1,"172":5,"173":5,"174":4,"175":1,"176":32,"179":1,"182":6,"184":2,"185":9,"186":2,"187":1,"188":3,"189":4,"191":40,"194":8,"195":7,"198":3,"199":36,"201":4,"202":4,"203":3,"204":1,"206":4,"209":3,"211":64,"213":5,"214":1,"215":2,"218":3,"220":3,"221":2,"222":28,"224":2,"228":7,"230":3,"231":3,"232":4,"233":5,"234":4,"235":4,"236":33,"240":7,"241":1,"243":1,"244":3,"245":2,"246":1,"247":1,"249":38,"253":1,"255":4,"256":1,"257":1,"258":1,"259":2,"262":2,"263":4,"265":5,"266":87,"268":4,"270":1,"271":1,"272":5,"273":5,"275":3,"276":5,"277":24,"278":2,"279":4,"282":21,"284":1,"291":2,"292":1,"302":2,"303":3,"304":1,"305":4,"309":1,"310":1,"311":1,"312":1,"313":2,"314":2,"315":2,"317":6,"318":2,"319":1,"320":2,"322":1,"323":1,"324":2,"325":1,"326":1,"327":1,"330":2,"331":8,"334":2,"335":4,"336":1,"337":1,"340":4,"341":19,"343":2,"344":2,"345":3,"346":2,"349":8,"350":10,"351":1,"352":14,"353":1,"354":4,"355":1,"356":1,"357":2,"358":2,"360":3,"361":1,"363":1,"364":2,"367":4,"370":3,"371":5,"373":1,"374":4,"375":3,"376":3,"378":2,"384":2,"388":2,"389":1,"390":1,"391":1,"393":6,"394":4,"396":3,"397":2,"399":3,"400":3,"401":3,"402":1,"403":4,"404":1,"405":5,"407":1,"408":1,"409":2,"410":1,"411":4,"414":1,"415":2,"416":2,"417":1,"418":1,"423":2,"424":1,"426":1,"427":1,"428":2,"429":4,"430":6,"431":2,"432":4,"433":3,"434":1,"435":9,"436":4,"437":1,"440":3,"441":5,"442":2,"445":2,"446":3,"447":1,"450":4,"451":2,"452":3,"453":7,"454":4,"455":5,"456":1,"457":6,"460":1,"462":1,"465":1,"466":3,"468":4,"469":2,"470":1,"471":2,"472":1,"473":2,"474":2,"477":1,"478":1,"479":6,"481":5,"482":3,"483":3,"484":2,"485":1,"488":1,"493":2,"496":6,"498":1,"499":2,"500":2,"502":13,"504":2,"505":19,"506":11,"507":1,"509":8,"510":4,"511":3,"512":1,"513":6,"515":6,"516":4,"519":3,"520":1,"521":2,"522":2,"526":2,"527":2,"528":2,"529":5,"530":4,"532":2,"533":1,"534":4,"535":1,"537":7,"538":1,"541":3,"542":1,"543":1,"545":1,"546":2,"548":1,"550":4,"551":7,"552":2,"554":17,"555":1,"556":6,"557":5,"558":1,"559":2,"560":13,"561":3,"562":1,"563":2,"564":3,"565":2,"566":5,"567":4,"568":1,"569":2,"570":7,"571":3,"573":1,"574":4,"580":4,"581":2,"582":2,"584":2,"585":1,"586":1,"587":3,"588":7,"592":5,"593":3,"594":3,"595":2,"596":3,"597":5,"598":5,"599":1,"600":1,"601":1,"602":3,"605":1,"606":10,"607":7,"608":1,"609":7,"610":8,"611":5,"612":1,"613":4,"614":5,"615":2,"616":2,"617":1,"618":2,"621":7,"622":1,"623":4,"624":2,"625":2,"626":9,"627":4,"628":3,"629":3,"630":3,"631":2,"633":2,"635":1,"636":3,"638":2,"639":2,"641":4,"642":1,"643":2,"644":4,"648":3,"650":3,"651":1,"653":2,"654":1,"655":1,"656":1,"657":4,"658":4,"659":1,"660":7,"661":6,"662":2,"664":1,"665":2,"666":6,"667":3,"668":1,"669":4,"672":1,"674":2,"676":3,"678":3,"679":1,"680":1,"681":4,"683":3,"684":5,"685":5,"687":1,"688":7,"689":12,"690":5,"691":3,"692":2,"693":1,"694":3,"695":2,"698":5,"699":1,"700":2,"701":5,"702":2,"703":8,"707":3,"708":1,"709":5,"712":5,"714":1,"715":7,"717":1,"718":7,"721":4,"724":4,"726":2,"727":1,"729":1,"730":2,"731":3,"733":1,"734":4,"740":1,"742":3,"744":3,"746":1,"748":1,"753":1,"754":1,"755":1,"756":2,"757":3,"758":2,"759":1,"760":4,"763":1,"767":1,"769":3,"771":3,"773":1,"775":1,"780":1,"782":1,"784":1,"785":2,"786":3,"787":2,"788":1,"789":3,"790":3,"791":1,"792":5,"795":1,"799":1,"801":3,"803":3,"805":1,"807":1,"812":1,"814":1,"816":1,"817":2,"818":3,"819":2,"820":2,"821":1,"822":5,"825":1,"829":1,"831":1,"833":3,"835":3,"837":1,"839":1,"844":1,"846":1,"848":1,"849":2,"850":3,"851":2,"852":1,"853":1,"854":3,"855":3,"856":1,"857":5,"860":1,"864":1,"866":1,"868":3,"870":3,"872":1,"874":1,"879":1,"881":1,"883":1,"884":2,"885":3,"886":2,"887":1,"888":3,"889":3,"890":1,"891":5,"894":1,"898":1,"900":1,"902":3,"904":3,"906":1,"908":1,"913":1,"915":1,"917":1,"918":2,"919":3,"920":2,"921":1,"922":3,"923":3,"924":1,"925":5,"928":1,"932":1,"934":1,"936":3,"938":3,"940":1,"942":1,"947":1,"949":1,"951":1,"952":2,"953":3,"954":2,"955":1,"956":3,"957":3,"958":1,"959":5,"962":1,"966":1,"968":1,"970":3,"972":3,"974":1,"976":1,"981":1,"983":1,"985":1,"986":2,"987":3,"988":2,"989":1,"990":3,"991":3,"992":1,"993":5,"996":1,"1000":1,"1002":1,"1004":3,"1006":3,"1008":1,"1010":1,"1015":1,"1017":1,"1019":1,"1020":2,"1021":3,"1022":2,"1023":1,"1024":3,"1025":3,"1026":1,"1027":5,"1030":1,"1034":1,"1036":1,"1038":3,"1040":3,"1042":1,"1044":1,"1049":1,"1051":1,"1053":1,"1054":2,"1055":3,"1056":2,"1057":1,"1058":3,"1059":3,"1060":1,"1061":5,"1064":1,"1068":1,"1070":1,"1072":3,"1074":3,"1076":1,"1078":1,"1083":1,"1085":1,"1087":1,"1088":2,"1089":3,"1090":2,"1091":1,"1092":3,"1093":3,"1094":1,"1095":5,"1098":1,"1102":1,"1104":1,"1106":3,"1108":3,"1110":1,"1112":1,"1117":1,"1119":1,"1121":1,"1123":2,"1124":3,"1125":2,"1126":6,"1127":5,"1128":3,"1129":9,"1130":6,"1132":2,"1133":3,"1134":1,"1136":1,"1137":2,"1138":3,"1142":2,"1143":1,"1144":2,"1145":3,"1146":2,"1147":1,"1148":5,"1151":1,"1155":1,"1157":1,"1159":3,"1161":3,"1163":1,"1165":1,"1170":1,"1172":1,"1174":1,"1175":2,"1176":5,"1177":12,"1181":6,"1183":1,"1184":1,"1188":1,"1189":4,"1192":4,"1195":1,"1196":2,"1197":1,"1198":9,"1201":1,"1203":1,"1205":1,"1207":4,"1209":4,"1210":1,"1212":1,"1213":2,"1214":2,"1215":1,"1216":3,"1217":7,"1219":1,"1220":1,"1221":3,"1222":1,"1223":2,"1224":1,"1225":5,"1226":6,"1227":3,"1228":2,"1229":1,"1230":7,"1232":1,"1233":1,"1234":6,"1235":4,"1236":4,"1238":2,"1239":1,"1240":1,"1241":2,"1242":1,"1243":5,"1245":4,"1246":1,"1247":1,"1248":1,"1249":1,"1250":1,"1251":1,"1252":4,"1253":3,"1254":2,"1258":1,"1259":2,"1260":1,"1261":1,"1262":3,"1264":5,"1265":3,"1267":2,"1268":1,"1269":2,"1270":5,"1271":4,"1272":1,"1273":1,"1275":3,"1276":1,"1278":4,"1279":1,"1280":1,"1281":2,"1284":1,"1286":1,"1287":8,"1288":4,"1289":1,"1290":2,"1291":2,"1292":1,"1294":2,"1295":1,"1298":2,"1299":1,"1300":13,"1302":4,"1303":7,"1304":3,"1310":3,"1311":1,"1312":4,"1313":2,"1314":4,"1315":13,"1316":4,"1318":1,"1319":4,"1320":4,"1321":2,"1322":5,"1323":1,"1324":1,"1325":8,"1326":4,"1328":1,"1329":1,"1330":3,"1331":8,"1332":27,"1333":2,"1334":2,"1335":13,"1336":10,"1337":3,"1338":3,"1339":1,"1340":3,"1341":8,"1343":1,"1344":4,"1346":7,"1347":2,"1348":1,"1349":2,"1351":3,"1352":4,"1353":6,"1354":1,"1355":5,"1356":2,"1359":12,"1360":5,"1361":2,"1362":1,"1363":2,"1364":3,"1365":1,"1366":1,"1367":2,"1368":2,"1370":3,"1375":1,"1376":3,"1377":5,"1378":2,"1379":1,"1380":3,"1381":1,"1383":5,"1384":9,"1385":18,"1386":4,"1387":2,"1388":2,"1390":2,"1391":6,"1392":1,"1393":7,"1394":1,"1395":5,"1396":6,"1397":3,"1398":7,"1399":7,"1400":3,"1401":1,"1402":2,"1403":10,"1404":2,"1405":10,"1406":7,"1408":1,"1410":1,"1411":2,"1412":3,"1413":1,"1414":1,"1415":1,"1416":9,"1423":3,"1430":3,"1431":7,"1433":2,"1435":11,"1437":4,"1438":6,"1439":4,"1440":2,"1441":7,"1442":3,"1445":4,"1446":2,"1447":4,"1448":6,"1449":1,"1450":4,"1451":17,"1452":9,"1453":3,"1454":1,"1456":1,"1457":4,"1458":4,"1459":7,"1462":4,"1464":5,"1467":2,"1469":8,"1470":3,"1471":6,"1480":2,"1482":1,"1491":3,"1492":4,"1493":1,"1495":9,"1496":4,"1497":6,"1498":4,"1499":6,"1500":5,"1501":2,"1504":2,"1505":1,"1506":3,"1507":2,"1508":5,"1509":1,"1510":1,"1511":3,"1512":1,"1514":3,"1515":5,"1516":2,"1518":12,"1519":1,"1520":1,"1521":1,"1523":1,"1524":2,"1525":2,"1526":2,"1527":7,"1528":4,"1529":4,"1530":9,"1531":2,"1532":1,"1533":2,"1534":4,"1537":4,"1538":1,"1546":2,"1547":4,"1548":2,"1551":3,"1552":1,"1553":8,"1554":4,"1555":3,"1556":3,"1557":2,"1558":2,"1559":4,"1560":3,"1561":2,"1563":1,"1564":1,"1567":3,"1568":1,"1570":3,"1572":4,"1573":13,"1574":2,"1576":1,"1577":4,"1579":2,"1580":1,"1582":4,"1589":1,"1590":1,"1591":6,"1593":1,"1594":2,"1597":2,"1599":1,"1601":2,"1603":1,"1604":5,"1605":3,"1606":1,"1607":1,"1608":1,"1609":1,"1610":1,"1612":2,"1614":2,"1617":1,"1618":2,"1620":1,"1622":3,"1623":1,"1624":2,"1625":1,"1627":3,"1628":1,"1629":3,"1630":1,"1631":1,"1632":1,"1633":5,"1638":2,"1640":1,"1641":1,"1643":2,"1645":2,"1647":1,"1650":2,"1651":2,"1654":1,"1655":8,"1657":6,"1658":2,"1659":1,"1661":1,"1662":1,"1663":1,"1665":3,"1666":3,"1668":4,"1670":23,"1671":2,"1672":2,"1673":3,"1674":4,"1675":3,"1676":4,"1677":11,"1678":3,"1679":2,"1682":2,"1683":5,"1684":11,"1685":5,"1686":1,"1694":1,"1695":1,"1700":1,"1703":2,"1706":3,"1709":4,"1712":5,"1714":3,"1715":2,"1716":1,"1718":2,"1720":2,"1722":3,"1723":3,"1724":3,"1725":14,"1726":2,"1728":6,"1729":8,"1730":6,"1733":3,"1736":1,"1738":1,"1740":1,"1744":2,"1746":1,"1748":2,"1749":1,"1750":2,"1751":1,"1752":2,"1753":1,"1754":2,"1758":1,"1760":1,"1762":1,"1764":1,"1766":1,"1768":2,"1769":1,"1770":2,"1772":1,"1776":1,"1778":1,"1779":1,"1780":1,"1783":1,"1785":1,"1787":3,"1789":2,"1790":2,"1791":5,"1793":49,"1794":2,"1798":1,"1799":2,"1800":2,"1801":5,"1802":3,"1803":7,"1804":4,"1805":9,"1806":7,"1807":11,"1808":1,"1812":3,"1813":1,"1814":2,"1815":5,"1816":4,"1817":10,"1819":1,"1820":11,"1821":9,"1822":31,"1825":2,"1826":1,"1827":1,"1828":3,"1830":5,"1832":4,"1833":2,"1834":6,"1835":4,"1836":11,"1837":2,"1838":3,"1839":5,"1841":2,"1842":9,"1843":1,"1844":3,"1845":2,"1846":5,"1847":3,"1848":7,"1849":18,"1850":3,"1851":7,"1852":1,"1853":7,"1854":3,"1855":15,"1857":2,"1858":5,"1859":8,"1860":1,"1862":3,"1863":4,"1864":4,"1865":2,"1866":1,"1867":1,"1868":3,"1869":2,"1871":1,"1873":4,"1874":3,"1876":3,"1877":5,"1878":2,"1880":1,"1881":6,"1882":1,"1887":2,"1889":2,"1891":2,"1893":2,"1895":2,"1897":1,"1902":5,"1903":1,"1907":4,"1910":4,"1911":1,"1912":9,"1913":1,"1914":2,"1915":1,"1916":2,"1917":2,"1918":3,"1919":1,"1920":1,"1921":11,"1922":4,"1923":1,"1926":1,"1928":2,"1929":2,"1932":4,"1933":5,"1934":3,"1935":2,"1936":4,"1938":2,"1941":4,"1942":5,"1943":1,"1944":3,"1945":3,"1946":14,"1947":2,"1948":3,"1949":21,"1950":7,"1951":1,"1952":8,"1953":5,"1954":10,"1957":3,"1958":1,"1959":7,"1960":2,"1963":1,"1965":1,"1967":1,"1971":4,"1973":3,"1975":2,"1976":1,"1977":2,"1978":1,"1979":2,"1980":1,"1981":2,"1985":1,"1987":1,"1989":1,"1991":1,"1993":1,"1995":1,"1997":1,"1999":1,"2001":1,"2003":1,"2005":1,"2007":2,"2008":1,"2009":2,"2011":1,"2013":6,"2014":1,"2015":6,"2021":1,"2023":1,"2024":1,"2025":1,"2028":1,"2030":1,"2031":6,"2032":9,"2033":1,"2034":1,"2035":11,"2037":2,"2038":12,"2039":1,"2040":6,"2041":3,"2042":11,"2044":6,"2045":2,"2046":2,"2047":3,"2048":1,"2051":20,"2052":7,"2053":3,"2054":9,"2055":3,"2058":5,"2059":2,"2060":3,"2061":6,"2063":3,"2064":3,"2065":1,"2066":3,"2067":1,"2068":1,"2069":1,"2070":4,"2072":2,"2073":1,"2074":2,"2075":2,"2076":3,"2078":1,"2079":1,"2082":1,"2084":2,"2086":1,"2088":2,"2090":1,"2092":2,"2094":2,"2096":2,"2098":2,"2100":1,"2101":1,"2102":2,"2103":1,"2104":2,"2105":1,"2106":3,"2107":4,"2111":1,"2112":2,"2113":11,"2114":1,"2116":2,"2117":2,"2118":3,"2119":1,"2120":3,"2121":3,"2122":2,"2123":2,"2124":6,"2125":14,"2126":9,"2127":6,"2128":11,"2129":19,"2130":20,"2131":10,"2133":6,"2134":3,"2137":4,"2138":2,"2139":5,"2140":2,"2141":9,"2142":2,"2143":26,"2145":14,"2146":10,"2147":5,"2148":4,"2149":8,"2150":10,"2152":13,"2153":4,"2154":1,"2155":2,"2156":1,"2157":3,"2158":1,"2161":10,"2162":10,"2164":2,"2167":3,"2168":2,"2169":25,"2170":4,"2171":21,"2172":6,"2174":4,"2175":1,"2177":1,"2178":2,"2179":7,"2180":7,"2181":10,"2182":9,"2183":17,"2184":7,"2189":1,"2190":1,"2191":1,"2200":1,"2202":1,"2204":1,"2216":1,"2217":1,"2221":1,"2225":2,"2226":7,"2227":1,"2228":5,"2229":5,"2230":4,"2231":7,"2233":7,"2234":2,"2235":4,"2236":3,"2237":3,"2238":11,"2240":5,"2241":2,"2242":5,"2243":3,"2244":2,"2245":8,"2247":8,"2249":8,"2250":3,"2252":8,"2254":3,"2255":14,"2256":3,"2257":1,"2258":1,"2260":2,"2261":4,"2262":21,"2263":34,"2264":1,"2267":2,"2268":10,"2269":2,"2270":5,"2272":9,"2273":16,"2274":12,"2275":7,"2276":12,"2277":5,"2278":1,"2279":8,"2280":2,"2281":1,"2282":2,"2284":2,"2286":2,"2289":4,"2290":2,"2291":1,"2292":5,"2295":4,"2297":2,"2298":1,"2299":2,"2300":3,"2301":1,"2302":4,"2303":2,"2304":3,"2305":6,"2306":2,"2307":3,"2309":5,"2310":1,"2311":18,"2314":1,"2315":2,"2316":1,"2317":5,"2318":1,"2320":1,"2321":4,"2322":2,"2323":3,"2324":1,"2325":5,"2326":3,"2327":7,"2328":9,"2329":2,"2330":2,"2331":1,"2332":2,"2333":2,"2334":2,"2335":1,"2339":1,"2341":1,"2343":2,"2344":2,"2346":1,"2347":8,"2348":5,"2349":3,"2350":2,"2351":3,"2352":1,"2353":12,"2354":3,"2357":1,"2360":1,"2367":1,"2371":49,"2372":3,"2379":1,"2384":7,"2395":1,"2396":3,"2397":1,"2398":3,"2400":1,"2401":2,"2402":5,"2403":5,"2404":2,"2405":4,"2406":1,"2407":4,"2408":3,"2409":1,"2410":1,"2411":11,"2413":3,"2414":7,"2415":3,"2417":7,"2418":4,"2420":1,"2421":5,"2422":2,"2423":3,"2424":8,"2425":7,"2426":4,"2427":3,"2428":4,"2429":5,"2430":1,"2431":2,"2432":1,"2433":3,"2435":1,"2436":4,"2437":1,"2438":1,"2439":5,"2440":4,"2441":8,"2442":5,"2443":3,"2444":2,"2445":6,"2446":8,"2447":2,"2448":3,"2449":1,"2450":6,"2451":3,"2452":4,"2453":4,"2454":9,"2455":3,"2456":3,"2457":5,"2458":4,"2459":2,"2460":1,"2462":2,"2464":1,"2466":2,"2467":2,"2468":12,"2469":6,"2470":2,"2472":8,"2473":4,"2474":5,"2475":13,"2476":2,"2477":16,"2478":4,"2479":14,"2480":22,"2481":4,"2482":1,"2483":1,"2485":2,"2486":1,"2490":11,"2491":6,"2492":3,"2494":1,"2495":4,"2496":1,"2497":8,"2498":3,"2499":1,"2501":1,"2502":3,"2503":3,"2504":3,"2506":4,"2507":3,"2508":11,"2509":1,"2510":5,"2512":7,"2513":28,"2514":3,"2515":2,"2518":2,"2519":1,"2521":4,"2522":2,"2523":3,"2524":17,"2525":5,"2526":2,"2529":2,"2530":6,"2533":5,"2534":3,"2535":2,"2536":1,"2537":1,"2539":5,"2540":1,"2541":3,"2542":3,"2544":4,"2545":1,"2546":7,"2548":11,"2549":4,"2550":1,"2551":1,"2552":3,"2553":8,"2554":2,"2555":1,"2556":3,"2557":2,"2558":4,"2559":4,"2560":2,"2564":9,"2565":6,"2566":39,"2567":8,"2568":5,"2569":6,"2571":2,"2572":1,"2573":7,"2574":7,"2575":15,"2576":40,"2577":61,"2578":7,"2579":4,"2581":6,"2582":1,"2584":6,"2586":1,"2587":2,"2590":1,"2591":1,"2594":2,"2595":3,"2597":3,"2598":7,"2599":1,"2600":3,"2601":1,"2603":2,"2605":6,"2606":3,"2607":4,"2608":3,"2609":2,"2610":5,"2611":3,"2612":1,"2613":1,"2614":13,"2615":10,"2616":3,"2617":1,"2619":1,"2620":2,"2626":1,"2627":2,"2628":1,"2643":1,"2644":2,"2645":2,"2647":2,"2648":2,"2651":1,"2653":1,"2656":3,"2661":1,"2662":2,"2663":1,"2664":1,"2666":2,"2671":4,"2672":3,"2674":2,"2675":3,"2676":4,"2677":7,"2678":1,"2679":2,"2681":1,"2682":1,"2683":4,"2684":3,"2685":6,"2686":5,"2687":1,"2688":10,"2689":6,"2690":1,"2691":2,"2692":3,"2693":6,"2694":7,"2695":10,"2696":7,"2697":17,"2698":1,"2699":4,"2700":2,"2701":3,"2702":7,"2704":7,"2705":6,"2706":5,"2707":2,"2708":2,"2709":6,"2711":4,"2712":2,"2714":2,"2718":5,"2719":9,"2720":1,"2722":3,"2723":3,"2724":3,"2725":2,"2726":1,"2727":8,"2728":20,"2729":3,"2730":2,"2734":2,"2735":5,"2736":5,"2737":11,"2738":15,"2739":1,"2740":2,"2741":2,"2742":2,"2743":1,"2744":3,"2745":3,"2746":11,"2747":4,"2748":4,"2749":7,"2750":2,"2751":3,"2752":3,"2753":6,"2754":2,"2755":4,"2756":3,"2757":17}}],["th",{"2":{"1527":1}}],["th+tl",{"2":{"1214":1}}],["thus",{"2":{"341":1,"1134":1,"1217":1,"1290":1,"1300":1,"1375":1,"1414":1,"1499":1,"1677":1,"2122":1,"2171":1,"2235":1,"2321":1,"2326":1,"2477":1,"2535":1,"2542":1,"2702":1,"2728":1,"2735":1,"2738":1}}],["thumb",{"2":{"199":1}}],["threads",{"2":{"2255":1}}],["threading",{"0":{"478":1}}],["threshold",{"0":{"246":1},"2":{"246":2,"249":1,"1868":1}}],["three",{"0":{"299":1,"1705":1},"1":{"1706":1,"1707":1},"2":{"98":1,"191":1,"196":1,"282":1,"299":1,"462":1,"496":1,"546":1,"574":1,"580":1,"1273":1,"1416":1,"1433":1,"1434":1,"1451":1,"1510":2,"1562":2,"1673":2,"1680":1,"1683":1,"1714":1,"1802":1,"1813":1,"1822":1,"1902":1,"2044":1,"2105":2,"2137":2,"2152":2,"2160":1,"2162":3,"2169":1,"2182":1,"2311":1,"2355":1,"2727":1,"2728":2,"2729":1}}],["throttling",{"2":{"2128":1}}],["throttled",{"2":{"2130":1}}],["throttle",{"2":{"149":1,"511":1,"1842":1,"1851":2,"2128":1,"2574":1,"2577":6}}],["throtting",{"2":{"587":1}}],["thrown",{"2":{"516":1}}],["throw",{"2":{"114":1,"1287":1}}],["throughout",{"2":{"1655":1}}],["through",{"0":{"1344":1},"2":{"110":1,"160":1,"166":1,"224":1,"232":1,"315":1,"354":2,"374":1,"502":1,"529":1,"534":1,"574":1,"580":1,"606":1,"630":1,"661":1,"1242":1,"1265":1,"1327":1,"1335":1,"1344":1,"1346":1,"1375":1,"1385":1,"1393":1,"1396":1,"1397":2,"1402":2,"1403":2,"1408":3,"1420":1,"1421":1,"1426":1,"1427":2,"1445":1,"1454":1,"1456":1,"1471":1,"1476":1,"1498":1,"1500":1,"1559":2,"1573":2,"1633":2,"1727":2,"1876":1,"1948":2,"1949":1,"1951":1,"2034":2,"2035":1,"2091":1,"2093":1,"2095":1,"2097":1,"2105":1,"2161":1,"2162":1,"2179":1,"2183":1,"2184":2,"2233":1,"2255":1,"2266":1,"2268":1,"2272":1,"2274":1,"2277":1,"2286":1,"2303":1,"2311":3,"2315":1,"2321":1,"2325":1,"2351":1,"2357":3,"2360":1,"2369":2,"2376":2,"2377":2,"2384":2,"2403":1,"2404":1,"2459":1,"2472":1,"2501":1,"2513":1,"2528":1,"2546":1,"2548":1,"2551":2,"2566":3,"2568":1,"2571":1,"2577":3,"2625":1,"2699":2,"2719":1,"2743":1}}],["thomas",{"2":{"2337":1,"2483":1}}],["thoughts",{"0":{"2712":1}}],["thought",{"2":{"482":1,"2275":1,"2417":1}}],["though",{"2":{"50":1,"334":1,"1293":1,"1302":1,"1377":1,"1390":1,"1411":1,"1441":1,"1454":1,"1670":1,"1674":1,"1675":1,"2269":1,"2272":1,"2274":1,"2480":1}}],["those",{"2":{"33":1,"49":1,"113":1,"175":1,"263":1,"265":1,"276":1,"304":1,"317":1,"430":1,"454":1,"479":1,"519":1,"541":2,"557":1,"643":1,"665":1,"688":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1129":1,"1144":1,"1213":1,"1271":1,"1273":1,"1280":1,"1383":1,"1385":1,"1386":1,"1403":1,"1416":1,"1435":1,"1677":1,"1683":1,"1716":1,"1733":1,"1821":1,"1907":1,"1957":1,"2152":1,"2181":1,"2255":1,"2276":1,"2320":1,"2406":1,"2418":1,"2435":1,"2441":1,"2508":1,"2529":1,"2548":1,"2557":1,"2571":1,"2576":1,"2601":1,"2610":1,"2704":1,"2705":1,"2719":1,"2728":1,"2738":1,"2740":2,"2746":2,"2753":2,"2755":1}}],["thickness",{"2":{"2267":1}}],["thicker",{"2":{"1842":1}}],["thiers",{"2":{"1441":1}}],["thier",{"2":{"1440":3,"1441":8}}],["thing",{"0":{"551":1},"2":{"213":1,"484":1,"509":1,"1260":1,"1300":1,"1312":1,"1331":1,"1359":3,"2169":1,"2325":1,"2557":1,"2702":1,"2740":1,"2752":1}}],["things",{"0":{"2159":1},"1":{"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1},"2":{"50":1,"113":1,"119":1,"158":1,"230":1,"278":1,"305":1,"352":1,"353":1,"389":1,"390":1,"391":1,"454":1,"455":1,"462":1,"501":1,"551":1,"560":2,"561":1,"567":1,"572":1,"574":1,"607":1,"630":1,"1262":1,"1287":1,"1360":1,"1363":1,"1403":1,"1404":1,"1416":1,"1498":1,"1787":1,"1903":1,"2129":2,"2133":1,"2152":2,"2169":1,"2178":1,"2231":1,"2238":1,"2255":1,"2262":1,"2273":2,"2277":1,"2279":2,"2299":1,"2311":1,"2324":1,"2348":1,"2407":1,"2408":1,"2417":2,"2450":1,"2472":2,"2504":1,"2507":1,"2524":1,"2553":1,"2569":1,"2705":1}}],["thinkpad",{"2":{"1290":1,"1902":1}}],["thinking",{"2":{"243":1}}],["thinks",{"2":{"182":1}}],["think",{"2":{"119":1,"228":1,"453":1,"455":1,"481":1,"554":1,"560":1,"1242":1,"1412":2,"1651":1,"2305":1,"2311":1,"2564":1,"2701":1,"2743":1,"2757":1}}],["third",{"2":{"49":1,"317":1,"550":1,"598":1,"657":1,"1406":1,"1675":1,"1706":1,"1709":1,"1712":1,"2155":2,"2161":1,"2169":1,"2172":1,"2183":1,"2566":1,"2720":1}}],["this",{"0":{"551":1,"1252":1},"2":{"0":1,"3":1,"5":1,"6":2,"10":1,"11":2,"14":2,"15":1,"16":1,"21":1,"23":1,"28":1,"30":1,"31":1,"32":1,"33":1,"34":1,"36":3,"45":2,"49":6,"50":2,"69":1,"70":2,"87":1,"88":1,"90":2,"99":3,"103":1,"104":1,"107":1,"111":1,"116":1,"119":1,"120":1,"123":1,"125":3,"126":2,"127":1,"131":1,"132":2,"133":1,"143":2,"149":1,"152":2,"154":1,"156":1,"163":1,"164":1,"172":2,"173":1,"182":2,"185":3,"187":1,"189":1,"190":1,"194":4,"198":1,"201":2,"209":1,"211":1,"213":3,"214":1,"215":2,"218":2,"221":1,"224":1,"228":2,"229":1,"230":2,"231":1,"233":1,"240":1,"243":1,"244":1,"251":1,"255":2,"256":1,"262":1,"263":5,"265":1,"268":1,"271":1,"273":4,"275":1,"276":2,"278":1,"279":1,"284":1,"286":1,"288":1,"290":6,"291":1,"292":1,"293":2,"300":1,"303":2,"304":1,"307":1,"308":1,"309":1,"310":1,"311":2,"312":1,"315":1,"316":2,"319":1,"322":3,"323":1,"324":1,"326":1,"327":1,"328":1,"331":4,"334":1,"335":2,"337":3,"340":1,"341":3,"342":1,"343":1,"344":1,"345":1,"349":3,"350":5,"351":1,"352":2,"355":1,"358":1,"365":1,"366":2,"370":2,"371":3,"372":1,"373":1,"374":1,"375":1,"376":1,"377":1,"378":2,"380":1,"381":1,"382":1,"383":2,"384":1,"385":1,"386":2,"387":1,"388":1,"389":1,"390":1,"391":1,"393":2,"394":2,"395":2,"396":2,"397":1,"399":1,"400":1,"401":2,"402":3,"403":3,"404":2,"405":1,"406":1,"407":2,"408":2,"409":2,"410":2,"411":3,"412":1,"413":1,"415":1,"427":1,"429":1,"430":5,"433":1,"434":1,"435":1,"436":3,"440":1,"446":2,"447":1,"448":1,"450":2,"453":2,"457":1,"464":1,"465":2,"466":1,"467":1,"470":1,"478":1,"480":1,"481":1,"482":2,"483":1,"484":1,"485":2,"493":1,"495":1,"496":1,"497":1,"498":2,"500":1,"501":1,"502":1,"504":1,"505":3,"508":1,"510":2,"511":1,"512":1,"513":2,"515":2,"516":3,"517":1,"520":1,"521":2,"523":2,"524":2,"525":1,"528":1,"529":8,"532":1,"533":1,"534":6,"535":1,"536":1,"539":2,"541":4,"550":2,"554":1,"556":1,"557":1,"558":1,"560":3,"563":1,"564":2,"565":1,"566":3,"567":1,"570":2,"572":2,"574":2,"575":4,"576":1,"578":2,"580":5,"581":3,"582":1,"585":2,"586":2,"587":1,"588":1,"589":3,"592":5,"596":1,"597":2,"598":4,"599":1,"600":1,"601":1,"602":3,"605":1,"606":3,"608":1,"609":3,"610":4,"611":1,"613":3,"614":1,"615":1,"616":4,"619":2,"620":2,"621":1,"622":1,"623":1,"624":2,"626":2,"627":6,"628":5,"629":1,"630":2,"631":2,"635":4,"639":2,"641":2,"642":1,"646":1,"647":1,"657":1,"659":1,"661":3,"662":2,"665":1,"667":1,"669":2,"673":1,"675":1,"681":2,"684":1,"685":1,"687":2,"688":4,"689":4,"690":1,"691":1,"692":3,"695":1,"697":1,"701":3,"702":1,"703":2,"704":1,"705":1,"707":2,"726":2,"727":1,"730":1,"734":2,"738":1,"741":1,"745":1,"749":1,"751":1,"756":1,"758":1,"760":2,"764":1,"768":1,"772":1,"776":1,"778":1,"785":1,"787":1,"789":1,"790":1,"792":2,"796":1,"800":1,"804":1,"808":1,"810":1,"817":1,"819":1,"820":2,"822":2,"826":1,"832":1,"836":1,"840":1,"842":1,"849":1,"851":1,"852":1,"854":1,"855":1,"857":2,"861":1,"867":1,"871":1,"875":1,"877":1,"884":1,"886":1,"888":1,"889":1,"891":2,"895":1,"901":1,"905":1,"909":1,"911":1,"918":1,"920":1,"922":1,"923":1,"925":2,"929":1,"935":1,"939":1,"943":1,"945":1,"952":1,"954":1,"956":1,"957":1,"959":2,"963":1,"969":1,"973":1,"977":1,"979":1,"986":1,"988":1,"990":1,"991":1,"993":2,"997":1,"1003":1,"1007":1,"1011":1,"1013":1,"1020":1,"1022":1,"1023":1,"1024":1,"1025":1,"1027":2,"1031":1,"1037":1,"1041":1,"1045":1,"1047":1,"1054":1,"1056":1,"1057":1,"1058":1,"1059":1,"1061":2,"1065":1,"1071":1,"1075":1,"1079":1,"1081":1,"1088":1,"1090":1,"1092":1,"1093":1,"1095":2,"1099":1,"1105":1,"1109":1,"1113":1,"1115":1,"1121":1,"1122":2,"1123":2,"1126":2,"1128":1,"1129":5,"1132":1,"1133":1,"1134":2,"1137":2,"1143":1,"1144":1,"1146":1,"1148":2,"1152":1,"1158":1,"1162":1,"1166":1,"1168":1,"1176":1,"1177":1,"1179":1,"1181":1,"1194":1,"1195":1,"1200":1,"1201":1,"1205":1,"1210":1,"1212":2,"1219":2,"1221":3,"1222":1,"1223":2,"1225":2,"1226":1,"1230":1,"1235":1,"1236":1,"1237":1,"1238":2,"1239":1,"1242":2,"1243":5,"1244":1,"1252":1,"1253":1,"1254":3,"1258":1,"1264":2,"1266":1,"1269":1,"1270":5,"1271":1,"1272":1,"1274":1,"1276":5,"1278":3,"1279":1,"1281":2,"1283":1,"1287":1,"1288":1,"1290":1,"1292":1,"1300":1,"1302":3,"1303":4,"1304":3,"1310":2,"1311":1,"1312":2,"1314":2,"1316":1,"1325":2,"1326":1,"1328":1,"1329":3,"1331":5,"1332":16,"1334":1,"1335":6,"1336":4,"1338":2,"1340":1,"1341":1,"1342":2,"1343":1,"1344":2,"1347":1,"1348":1,"1351":1,"1354":1,"1355":3,"1357":1,"1359":2,"1360":5,"1361":3,"1362":1,"1363":1,"1365":2,"1366":1,"1367":2,"1368":3,"1371":1,"1372":1,"1373":1,"1375":3,"1376":3,"1377":4,"1378":2,"1379":2,"1380":5,"1381":1,"1383":3,"1384":6,"1385":11,"1386":1,"1392":1,"1393":1,"1397":1,"1398":6,"1401":1,"1403":6,"1404":4,"1405":5,"1406":7,"1411":3,"1412":1,"1415":1,"1416":7,"1423":2,"1431":3,"1433":1,"1437":1,"1439":1,"1440":3,"1441":3,"1442":2,"1445":1,"1446":1,"1447":1,"1448":3,"1450":3,"1451":6,"1452":1,"1453":1,"1454":1,"1458":2,"1459":3,"1461":1,"1462":1,"1463":1,"1464":1,"1467":1,"1469":1,"1470":1,"1471":2,"1492":1,"1494":2,"1495":4,"1497":3,"1499":2,"1500":3,"1501":1,"1503":2,"1507":1,"1508":2,"1511":2,"1512":1,"1514":1,"1515":3,"1516":1,"1518":2,"1520":1,"1522":1,"1525":3,"1527":2,"1528":2,"1529":1,"1531":1,"1533":1,"1534":1,"1547":2,"1548":2,"1553":2,"1554":3,"1555":1,"1556":1,"1557":3,"1558":1,"1559":2,"1560":2,"1562":3,"1564":1,"1567":1,"1568":2,"1573":2,"1575":1,"1577":2,"1579":1,"1580":1,"1581":1,"1589":1,"1594":2,"1596":1,"1598":1,"1599":1,"1600":1,"1609":1,"1613":1,"1622":1,"1624":1,"1626":1,"1628":1,"1630":1,"1631":1,"1632":1,"1654":1,"1655":2,"1657":1,"1659":2,"1661":1,"1663":2,"1665":2,"1668":3,"1670":16,"1671":1,"1672":2,"1673":1,"1674":1,"1675":7,"1677":2,"1682":2,"1683":4,"1684":3,"1685":4,"1686":1,"1717":3,"1718":1,"1719":1,"1720":1,"1723":1,"1725":6,"1726":2,"1733":2,"1743":1,"1745":1,"1781":2,"1784":2,"1794":1,"1803":3,"1804":2,"1805":1,"1806":7,"1807":2,"1808":1,"1813":1,"1814":1,"1815":2,"1816":1,"1817":2,"1820":1,"1821":4,"1824":1,"1825":2,"1827":1,"1828":1,"1830":1,"1832":1,"1834":1,"1835":1,"1836":3,"1837":2,"1841":2,"1844":3,"1845":2,"1846":1,"1847":1,"1848":1,"1849":4,"1851":4,"1855":14,"1857":2,"1858":2,"1859":2,"1864":1,"1873":1,"1876":1,"1879":2,"1881":2,"1904":1,"1908":1,"1912":2,"1918":2,"1921":1,"1929":1,"1933":1,"1935":1,"1936":1,"1938":2,"1939":1,"1940":1,"1941":1,"1944":1,"1946":6,"1947":2,"1950":3,"1953":1,"1954":2,"1957":2,"1959":4,"1960":1,"1970":1,"1972":1,"2026":2,"2029":2,"2031":2,"2033":1,"2036":3,"2042":2,"2044":1,"2054":12,"2058":1,"2059":1,"2060":1,"2066":1,"2072":1,"2074":1,"2079":2,"2081":1,"2085":1,"2087":1,"2100":1,"2101":1,"2102":1,"2103":1,"2112":1,"2113":1,"2114":1,"2116":1,"2118":2,"2123":1,"2124":4,"2125":2,"2126":5,"2127":3,"2128":13,"2129":19,"2130":4,"2131":17,"2136":1,"2137":1,"2138":1,"2139":2,"2140":1,"2141":2,"2142":1,"2146":2,"2149":1,"2150":1,"2152":10,"2155":1,"2160":1,"2161":8,"2162":5,"2165":2,"2168":1,"2169":6,"2170":1,"2171":8,"2172":3,"2174":1,"2177":2,"2181":1,"2182":3,"2183":8,"2196":1,"2197":1,"2198":1,"2225":2,"2226":5,"2228":1,"2229":1,"2230":1,"2231":1,"2232":1,"2233":1,"2234":2,"2235":1,"2236":1,"2237":2,"2238":3,"2240":1,"2241":1,"2242":2,"2243":2,"2244":2,"2245":3,"2247":3,"2249":3,"2250":3,"2252":2,"2254":2,"2255":5,"2256":1,"2258":1,"2259":4,"2261":1,"2262":3,"2263":21,"2267":2,"2268":2,"2270":1,"2272":4,"2273":5,"2274":1,"2276":2,"2279":1,"2280":2,"2282":3,"2286":2,"2289":1,"2295":3,"2296":1,"2298":1,"2299":2,"2300":2,"2301":3,"2302":4,"2305":4,"2309":1,"2311":14,"2313":1,"2317":1,"2318":1,"2319":1,"2320":3,"2321":1,"2322":1,"2324":1,"2325":1,"2327":3,"2335":1,"2344":2,"2345":1,"2346":2,"2347":2,"2348":3,"2349":2,"2350":2,"2351":1,"2353":2,"2354":2,"2355":1,"2395":1,"2398":3,"2400":1,"2402":1,"2404":1,"2405":1,"2406":5,"2407":1,"2408":4,"2409":1,"2410":2,"2411":7,"2415":1,"2417":2,"2418":3,"2419":1,"2420":1,"2421":1,"2422":2,"2423":3,"2424":1,"2425":2,"2427":1,"2428":4,"2433":1,"2440":1,"2441":1,"2442":1,"2445":1,"2446":2,"2448":1,"2450":5,"2452":2,"2454":9,"2456":1,"2459":1,"2460":1,"2466":1,"2468":5,"2469":2,"2472":3,"2473":1,"2475":4,"2476":2,"2477":4,"2479":5,"2480":3,"2481":1,"2490":6,"2491":1,"2492":2,"2497":2,"2498":1,"2502":1,"2503":2,"2506":6,"2507":1,"2508":3,"2510":4,"2512":1,"2513":5,"2514":1,"2517":2,"2518":1,"2519":1,"2521":1,"2522":1,"2523":2,"2524":8,"2525":5,"2526":4,"2529":3,"2530":1,"2533":1,"2534":2,"2539":1,"2541":1,"2542":2,"2543":1,"2546":2,"2548":3,"2550":1,"2551":2,"2553":2,"2554":1,"2557":1,"2559":1,"2563":2,"2564":5,"2565":2,"2566":4,"2567":2,"2568":2,"2569":1,"2570":3,"2571":2,"2573":1,"2574":3,"2575":8,"2576":1,"2577":7,"2584":3,"2585":1,"2587":1,"2589":1,"2592":1,"2593":1,"2594":1,"2595":3,"2596":5,"2597":1,"2598":1,"2599":1,"2603":4,"2605":5,"2606":1,"2607":5,"2611":2,"2613":1,"2614":5,"2615":3,"2655":1,"2671":1,"2672":2,"2679":1,"2686":3,"2699":1,"2701":3,"2702":2,"2705":8,"2706":3,"2707":3,"2710":5,"2712":1,"2716":1,"2718":1,"2719":1,"2722":1,"2723":1,"2727":6,"2728":2,"2729":6,"2730":1,"2734":1,"2735":7,"2736":5,"2737":2,"2738":4,"2742":1,"2743":2,"2744":3,"2745":3,"2746":5,"2747":2,"2748":3,"2749":4,"2752":1,"2753":1,"2757":4}}],["thank",{"2":{"2347":1}}],["thanks",{"2":{"235":1,"284":1,"550":1,"2255":1,"2292":1,"2323":1,"2568":1}}],["thankyou",{"2":{"116":1}}],["than",{"0":{"1277":1},"2":{"24":1,"46":1,"49":1,"50":1,"63":1,"112":1,"124":1,"152":1,"153":1,"166":1,"176":1,"194":1,"201":2,"213":1,"230":1,"234":1,"251":1,"278":1,"367":1,"415":1,"418":1,"453":3,"455":1,"468":1,"476":1,"482":1,"502":1,"505":1,"511":2,"513":1,"556":1,"560":1,"567":2,"570":1,"571":1,"596":1,"628":1,"689":1,"1121":2,"1128":1,"1176":1,"1225":1,"1287":1,"1290":1,"1329":1,"1336":1,"1338":1,"1339":1,"1340":3,"1355":1,"1359":1,"1368":1,"1376":1,"1383":1,"1403":1,"1404":1,"1411":1,"1412":1,"1416":2,"1431":2,"1442":1,"1445":1,"1446":2,"1451":1,"1499":2,"1515":1,"1562":1,"1573":1,"1655":1,"1670":1,"1683":1,"1685":1,"1791":1,"1821":2,"1822":1,"1833":1,"1874":1,"1876":1,"2033":1,"2036":1,"2060":1,"2113":1,"2128":1,"2145":1,"2147":1,"2161":4,"2162":1,"2170":1,"2241":2,"2243":1,"2262":2,"2263":1,"2272":1,"2286":1,"2311":1,"2335":1,"2344":1,"2403":1,"2411":2,"2427":1,"2442":1,"2460":1,"2477":1,"2490":1,"2516":1,"2551":1,"2565":1,"2566":2,"2567":1,"2571":1,"2577":1,"2605":1,"2608":1,"2612":1,"2654":1,"2729":4,"2734":2,"2737":2,"2757":1}}],["that",{"0":{"503":1,"504":1,"505":1,"1260":1,"1263":1,"1381":1,"1865":1},"1":{"1264":1},"2":{"0":3,"5":1,"6":2,"9":3,"13":2,"14":1,"19":3,"23":1,"24":1,"28":1,"31":2,"34":1,"36":2,"38":1,"39":3,"45":1,"46":1,"49":2,"50":3,"52":3,"70":1,"73":2,"75":1,"87":1,"90":1,"94":2,"95":1,"98":1,"99":1,"103":1,"110":1,"112":1,"114":3,"123":2,"124":2,"125":1,"126":1,"131":1,"132":2,"149":4,"152":2,"153":1,"154":1,"156":1,"163":1,"166":1,"175":1,"176":5,"179":2,"182":4,"185":1,"191":2,"194":1,"195":1,"199":3,"203":3,"209":1,"218":1,"224":1,"230":1,"233":1,"240":2,"243":1,"255":1,"256":1,"262":1,"263":1,"268":1,"275":1,"276":1,"278":1,"300":1,"303":1,"305":1,"307":1,"312":1,"315":1,"317":3,"318":2,"324":2,"331":1,"334":1,"337":5,"341":3,"344":1,"345":2,"346":1,"347":1,"349":3,"350":2,"352":5,"353":1,"354":3,"355":1,"361":1,"366":1,"370":2,"373":1,"384":1,"385":1,"399":1,"400":1,"414":1,"415":2,"428":1,"431":1,"434":1,"435":4,"436":1,"437":1,"446":1,"452":1,"453":5,"454":1,"457":1,"460":1,"465":1,"466":1,"467":2,"471":1,"473":1,"474":2,"479":2,"480":1,"481":3,"482":2,"483":1,"488":1,"493":1,"495":1,"496":1,"497":2,"498":1,"499":1,"500":1,"501":1,"502":1,"506":2,"509":3,"512":2,"519":2,"520":1,"523":1,"524":1,"525":1,"529":5,"530":2,"533":2,"534":2,"537":1,"538":3,"540":1,"551":1,"554":3,"556":6,"559":2,"560":4,"562":2,"564":1,"567":2,"568":1,"570":2,"571":2,"574":2,"575":1,"578":1,"584":2,"586":1,"587":2,"592":2,"597":2,"598":2,"599":1,"601":1,"602":2,"606":4,"609":1,"611":1,"614":1,"616":1,"621":1,"623":1,"625":1,"626":1,"627":2,"628":1,"629":2,"635":2,"636":3,"639":2,"641":2,"659":3,"661":1,"662":1,"663":1,"684":1,"685":1,"688":1,"689":1,"691":2,"694":1,"698":3,"726":1,"1121":2,"1125":1,"1126":1,"1127":1,"1129":1,"1132":3,"1133":3,"1135":1,"1138":1,"1142":1,"1212":1,"1219":1,"1220":1,"1235":1,"1236":1,"1238":1,"1239":1,"1241":1,"1250":1,"1258":3,"1260":1,"1264":2,"1265":1,"1270":1,"1271":1,"1272":1,"1278":2,"1287":3,"1293":1,"1294":1,"1299":1,"1300":3,"1302":1,"1303":4,"1304":2,"1312":2,"1313":1,"1325":3,"1326":2,"1329":6,"1331":4,"1332":11,"1333":1,"1334":1,"1335":4,"1336":1,"1337":1,"1340":5,"1341":3,"1342":1,"1346":1,"1351":2,"1353":1,"1359":5,"1360":1,"1361":2,"1362":1,"1364":1,"1365":1,"1368":1,"1377":6,"1379":1,"1380":2,"1383":8,"1384":4,"1385":14,"1390":1,"1394":1,"1397":2,"1398":4,"1399":1,"1400":1,"1404":1,"1405":4,"1410":2,"1412":1,"1413":1,"1414":2,"1415":1,"1416":4,"1423":1,"1427":1,"1429":1,"1430":1,"1431":1,"1435":1,"1436":1,"1437":1,"1439":1,"1440":2,"1441":2,"1445":1,"1446":3,"1451":2,"1452":1,"1455":1,"1457":1,"1458":1,"1464":1,"1467":1,"1471":1,"1492":1,"1494":1,"1495":5,"1496":1,"1497":3,"1498":2,"1499":2,"1503":1,"1506":3,"1511":1,"1518":2,"1521":1,"1526":1,"1528":1,"1537":1,"1553":3,"1554":2,"1556":3,"1558":2,"1563":2,"1573":4,"1576":1,"1578":1,"1579":1,"1630":1,"1632":1,"1658":1,"1660":1,"1661":1,"1662":1,"1665":1,"1670":5,"1673":1,"1674":1,"1675":2,"1676":3,"1677":4,"1683":2,"1684":1,"1714":1,"1715":5,"1717":1,"1725":3,"1728":2,"1787":1,"1791":1,"1798":1,"1802":2,"1805":1,"1816":1,"1820":2,"1821":1,"1822":3,"1825":1,"1833":2,"1835":2,"1836":2,"1842":1,"1844":2,"1849":3,"1850":1,"1851":4,"1852":1,"1853":2,"1855":1,"1857":3,"1859":1,"1863":1,"1864":4,"1872":1,"1873":2,"1874":1,"1876":2,"1877":1,"1878":4,"1879":3,"1881":1,"1912":1,"1918":1,"1921":1,"1929":1,"1933":1,"1934":3,"1936":1,"1938":2,"1946":3,"1948":1,"1949":4,"1950":2,"1951":1,"2031":1,"2032":2,"2040":1,"2042":1,"2051":1,"2062":1,"2063":1,"2064":1,"2069":1,"2071":1,"2072":1,"2075":1,"2111":1,"2113":1,"2114":1,"2116":1,"2117":1,"2118":3,"2119":1,"2120":1,"2123":1,"2125":5,"2126":1,"2128":3,"2129":1,"2130":1,"2131":8,"2132":1,"2133":2,"2134":1,"2140":1,"2142":1,"2143":3,"2144":1,"2146":1,"2147":3,"2148":1,"2149":1,"2150":3,"2152":1,"2153":1,"2155":1,"2160":2,"2161":5,"2162":6,"2169":12,"2170":1,"2171":5,"2172":1,"2181":1,"2183":1,"2226":1,"2228":2,"2229":1,"2230":3,"2231":1,"2235":1,"2238":1,"2240":2,"2250":2,"2252":2,"2254":1,"2255":3,"2256":1,"2258":1,"2259":3,"2260":1,"2262":9,"2263":3,"2264":1,"2267":1,"2268":1,"2269":1,"2270":1,"2272":2,"2273":6,"2274":1,"2275":3,"2276":3,"2279":4,"2280":1,"2282":2,"2284":1,"2292":2,"2297":1,"2299":2,"2300":1,"2302":5,"2304":1,"2305":4,"2306":4,"2307":1,"2308":1,"2309":2,"2311":13,"2322":1,"2325":3,"2327":1,"2329":1,"2330":1,"2332":1,"2333":1,"2334":1,"2341":1,"2343":1,"2346":2,"2347":1,"2348":1,"2353":2,"2354":2,"2363":1,"2397":1,"2403":1,"2404":1,"2406":1,"2407":1,"2408":2,"2410":1,"2411":1,"2416":1,"2417":4,"2418":1,"2420":1,"2421":1,"2422":2,"2423":6,"2424":2,"2425":1,"2427":3,"2429":4,"2430":1,"2431":1,"2436":1,"2437":2,"2439":1,"2441":1,"2449":1,"2450":1,"2454":3,"2455":1,"2457":4,"2460":1,"2463":1,"2464":1,"2466":1,"2468":3,"2469":3,"2470":1,"2473":2,"2474":1,"2475":2,"2476":2,"2477":9,"2479":4,"2480":9,"2490":2,"2491":1,"2492":2,"2496":1,"2497":1,"2498":1,"2503":1,"2504":1,"2506":2,"2507":1,"2508":1,"2509":2,"2510":3,"2511":1,"2512":1,"2513":2,"2515":2,"2518":1,"2523":1,"2524":2,"2525":1,"2526":2,"2529":1,"2533":1,"2534":2,"2540":1,"2541":1,"2544":1,"2545":1,"2546":1,"2548":4,"2549":1,"2550":1,"2555":2,"2556":2,"2559":2,"2560":1,"2564":1,"2565":1,"2566":6,"2567":5,"2569":6,"2570":1,"2574":6,"2575":1,"2576":2,"2577":5,"2578":1,"2585":1,"2587":1,"2592":1,"2596":1,"2600":1,"2601":3,"2602":1,"2603":1,"2605":2,"2607":3,"2608":2,"2611":1,"2614":4,"2615":3,"2616":1,"2617":1,"2623":1,"2625":1,"2627":2,"2628":1,"2630":1,"2634":1,"2635":1,"2637":2,"2640":1,"2641":1,"2642":1,"2645":1,"2647":1,"2648":1,"2649":1,"2650":1,"2651":2,"2652":1,"2653":2,"2654":1,"2660":2,"2663":1,"2664":1,"2665":1,"2667":1,"2672":1,"2686":1,"2702":3,"2705":4,"2706":4,"2707":1,"2708":2,"2709":1,"2711":1,"2718":2,"2719":2,"2723":1,"2724":1,"2726":1,"2727":1,"2728":13,"2729":2,"2730":1,"2734":1,"2735":2,"2736":1,"2737":2,"2738":4,"2740":3,"2742":1,"2743":3,"2745":4,"2746":4,"2748":2,"2749":1,"2751":1,"2752":3,"2753":9,"2754":1,"2756":5,"2757":3}}],["theory",{"2":{"2516":1}}],["theories",{"2":{"2148":1}}],["thekey",{"2":{"207":4,"211":1}}],["thermal",{"2":{"191":1}}],["theres",{"2":{"2131":1}}],["thereafter",{"2":{"1804":1}}],["thereby",{"2":{"69":1}}],["therefore",{"2":{"28":1,"380":1,"635":2,"698":2,"1122":1,"1125":1,"1128":1,"1134":1,"1573":1,"1821":1,"1827":1,"1908":1,"2237":1,"2752":1}}],["there",{"0":{"546":1,"1265":1,"1412":1,"2741":1},"2":{"28":1,"99":1,"123":1,"131":1,"152":1,"154":1,"163":1,"166":1,"175":1,"189":1,"198":1,"201":1,"213":1,"224":1,"233":1,"238":1,"268":1,"276":1,"286":1,"291":1,"306":1,"315":1,"337":1,"341":1,"349":1,"353":1,"360":1,"414":1,"428":1,"432":1,"435":1,"449":1,"454":1,"485":1,"493":1,"496":1,"505":1,"509":1,"522":1,"525":1,"534":1,"537":1,"538":1,"548":1,"560":3,"574":1,"592":1,"598":1,"601":1,"609":1,"625":1,"630":1,"654":1,"655":1,"659":1,"684":1,"685":3,"687":1,"690":1,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1135":1,"1148":1,"1234":1,"1258":3,"1259":3,"1268":1,"1272":1,"1273":1,"1287":2,"1300":2,"1319":1,"1325":2,"1331":2,"1341":2,"1357":1,"1361":1,"1364":1,"1375":1,"1394":1,"1397":1,"1398":1,"1400":1,"1411":2,"1415":1,"1416":2,"1423":2,"1430":1,"1431":1,"1435":2,"1437":1,"1442":1,"1451":1,"1499":1,"1518":1,"1521":1,"1525":1,"1526":1,"1528":1,"1533":1,"1554":2,"1556":1,"1563":1,"1568":1,"1573":1,"1577":1,"1676":1,"1714":1,"1733":1,"1787":1,"1791":1,"1805":2,"1812":1,"1820":1,"1822":1,"1832":1,"1833":1,"1836":1,"1850":1,"1852":1,"1867":1,"1872":1,"1879":1,"1881":1,"1902":1,"1908":1,"1943":1,"1957":1,"2032":1,"2036":1,"2051":1,"2063":1,"2064":1,"2073":1,"2114":1,"2123":1,"2125":1,"2128":1,"2129":1,"2131":1,"2133":1,"2137":1,"2143":1,"2147":1,"2152":1,"2161":1,"2162":1,"2168":1,"2169":1,"2177":2,"2178":1,"2228":1,"2229":1,"2252":1,"2255":1,"2261":1,"2263":1,"2267":1,"2269":1,"2270":1,"2272":1,"2273":1,"2276":1,"2278":1,"2280":1,"2284":1,"2295":1,"2317":1,"2327":1,"2344":1,"2404":1,"2417":2,"2418":2,"2419":1,"2423":1,"2424":1,"2439":1,"2441":1,"2452":1,"2455":1,"2457":2,"2491":5,"2496":1,"2498":1,"2501":1,"2507":1,"2508":2,"2510":1,"2515":1,"2522":1,"2549":1,"2555":1,"2560":1,"2563":1,"2564":1,"2567":1,"2568":1,"2573":1,"2576":1,"2577":1,"2600":1,"2601":1,"2602":2,"2605":1,"2607":1,"2608":1,"2614":1,"2702":1,"2703":1,"2704":1,"2705":2,"2706":1,"2708":1,"2709":1,"2712":3,"2713":1,"2714":3,"2719":1,"2741":1,"2745":1,"2750":3,"2752":1,"2753":2,"2755":1,"2756":1}}],["thedogkeyboard",{"2":{"143":2,"211":1}}],["they",{"2":{"124":1,"125":2,"185":2,"188":1,"196":1,"198":1,"203":1,"243":1,"265":1,"273":2,"276":1,"304":1,"308":2,"334":1,"352":1,"367":1,"413":1,"416":1,"424":1,"430":1,"432":1,"435":1,"446":1,"453":1,"455":1,"466":1,"516":1,"519":1,"529":1,"538":1,"559":1,"574":1,"581":1,"602":1,"633":1,"642":1,"660":1,"698":1,"1177":1,"1273":1,"1300":2,"1304":1,"1332":1,"1340":1,"1361":2,"1427":1,"1445":2,"1446":4,"1455":1,"1491":1,"1503":1,"1517":1,"1518":1,"1522":1,"1553":2,"1554":1,"1557":1,"1676":1,"1677":1,"1725":2,"1849":1,"1864":1,"1871":1,"1881":2,"1912":2,"1920":1,"1936":1,"1946":2,"1948":1,"2034":1,"2044":1,"2114":1,"2118":1,"2131":1,"2152":2,"2160":2,"2162":2,"2169":1,"2172":1,"2183":1,"2242":1,"2258":1,"2274":2,"2279":1,"2282":1,"2299":1,"2303":1,"2305":4,"2311":1,"2344":1,"2347":1,"2397":1,"2405":1,"2409":1,"2414":1,"2427":1,"2441":2,"2445":1,"2516":1,"2519":2,"2530":1,"2550":1,"2556":1,"2564":2,"2566":4,"2567":2,"2571":1,"2576":4,"2577":2,"2603":1,"2614":1,"2616":1,"2620":1,"2702":1,"2705":2,"2726":1,"2728":1,"2738":1,"2745":1,"2754":1}}],["the60",{"2":{"102":3}}],["then",{"0":{"2167":1},"2":{"49":1,"70":1,"120":2,"152":1,"235":1,"291":1,"304":1,"321":1,"331":1,"352":1,"354":1,"366":1,"432":1,"500":1,"505":1,"506":1,"510":1,"527":1,"534":1,"540":2,"541":1,"559":1,"588":1,"597":1,"601":1,"607":1,"613":1,"628":1,"631":1,"641":1,"643":1,"660":1,"684":1,"698":1,"700":1,"703":1,"1175":1,"1177":2,"1196":1,"1213":1,"1225":1,"1241":1,"1254":1,"1258":1,"1260":2,"1261":1,"1270":1,"1287":1,"1299":2,"1300":1,"1325":1,"1326":1,"1331":1,"1332":2,"1335":1,"1359":1,"1361":2,"1368":1,"1370":1,"1375":1,"1377":1,"1383":2,"1384":2,"1385":1,"1395":1,"1398":1,"1405":2,"1411":5,"1412":1,"1413":1,"1416":2,"1438":1,"1440":1,"1452":2,"1500":3,"1504":1,"1508":1,"1520":1,"1527":2,"1529":1,"1534":1,"1548":1,"1553":1,"1558":1,"1559":1,"1570":2,"1573":3,"1630":1,"1651":1,"1652":1,"1657":1,"1670":1,"1673":2,"1674":3,"1675":3,"1676":1,"1679":1,"1728":9,"1733":1,"1807":1,"1813":1,"1826":1,"1830":2,"1833":1,"1836":1,"1851":1,"1857":1,"1864":2,"1865":1,"1922":1,"1923":2,"1929":1,"1930":1,"1937":1,"1940":1,"1949":15,"1950":1,"1957":1,"1959":1,"2032":1,"2063":1,"2075":1,"2079":2,"2113":1,"2121":1,"2122":1,"2124":1,"2125":1,"2130":2,"2131":1,"2137":1,"2152":2,"2161":2,"2162":3,"2164":1,"2167":1,"2169":2,"2171":3,"2181":2,"2182":2,"2183":3,"2196":4,"2232":1,"2234":1,"2239":1,"2240":1,"2241":1,"2242":1,"2255":1,"2261":2,"2262":2,"2263":1,"2272":2,"2277":1,"2302":1,"2305":1,"2311":1,"2325":1,"2328":1,"2349":1,"2353":1,"2406":1,"2454":1,"2458":1,"2472":1,"2473":1,"2475":1,"2476":1,"2477":4,"2479":1,"2480":2,"2481":1,"2490":2,"2502":1,"2508":3,"2513":1,"2519":1,"2543":1,"2566":2,"2576":10,"2577":3,"2603":2,"2610":2,"2611":1,"2620":1,"2654":1,"2705":1,"2712":1,"2727":1,"2728":2,"2729":2,"2735":3,"2736":2,"2737":2,"2738":1,"2740":1,"2743":1,"2750":1,"2753":1,"2757":3}}],["themself",{"2":{"352":1}}],["themselves",{"2":{"233":1,"352":1,"529":1,"1525":1,"1527":1,"2441":1,"2542":1,"2614":1}}],["theme",{"2":{"233":1}}],["them",{"2":{"2":1,"154":1,"164":1,"186":1,"202":1,"204":1,"221":1,"234":2,"272":1,"273":1,"304":1,"334":1,"376":2,"453":2,"455":2,"469":1,"471":1,"479":1,"502":1,"527":1,"537":1,"546":1,"549":1,"554":1,"570":2,"617":1,"621":1,"661":1,"1176":1,"1291":1,"1299":1,"1320":1,"1326":1,"1338":1,"1339":1,"1340":1,"1341":1,"1361":1,"1370":1,"1375":1,"1376":1,"1383":1,"1384":1,"1385":1,"1398":1,"1416":1,"1454":1,"1469":1,"1500":1,"1503":1,"1512":1,"1518":1,"1519":1,"1553":1,"1568":1,"1722":1,"1791":2,"1803":1,"1842":1,"1869":1,"1881":1,"1912":1,"1921":1,"1935":1,"1943":1,"2031":2,"2042":2,"2112":2,"2113":1,"2114":1,"2118":1,"2150":1,"2167":1,"2171":1,"2177":1,"2182":1,"2229":3,"2255":1,"2263":2,"2271":1,"2272":1,"2273":1,"2274":1,"2280":1,"2292":1,"2303":2,"2305":1,"2306":1,"2307":1,"2308":1,"2328":1,"2343":1,"2348":1,"2396":1,"2405":1,"2410":1,"2411":1,"2419":1,"2424":1,"2427":2,"2438":1,"2440":1,"2447":1,"2450":2,"2464":1,"2466":1,"2467":1,"2472":1,"2475":1,"2477":3,"2480":2,"2509":1,"2515":1,"2530":2,"2541":1,"2567":1,"2577":1,"2620":1,"2701":1,"2705":1,"2709":1,"2711":1,"2719":1,"2726":1,"2735":1,"2741":1,"2750":1,"2753":1,"2757":1}}],["the",{"0":{"23":1,"42":1,"56":1,"315":1,"323":1,"324":1,"325":1,"334":1,"335":1,"336":1,"339":1,"349":1,"350":1,"440":1,"501":1,"512":1,"547":1,"558":1,"562":1,"571":1,"609":1,"1132":1,"1133":1,"1134":1,"1227":1,"1259":1,"1268":1,"1272":1,"1551":3,"1552":2,"1677":1,"1678":1,"1865":1,"1871":1,"1903":1,"1921":1,"1922":1,"2059":2,"2103":1,"2108":1,"2149":1,"2152":1,"2261":1,"2267":1,"2268":1,"2270":1,"2273":1,"2274":1,"2275":1,"2276":1,"2278":1,"2321":1,"2322":1,"2323":1,"2324":1,"2347":1,"2348":1,"2417":1,"2424":1,"2446":1,"2452":1,"2454":1,"2474":1,"2499":1,"2501":1,"2584":1,"2607":1,"2608":1,"2610":1,"2614":1,"2615":1,"2616":1,"2670":1,"2704":1,"2740":2,"2744":1,"2754":1,"2755":1},"1":{"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"340":1,"502":1,"503":1,"504":1,"505":1,"506":1,"507":1,"508":1,"509":1,"510":1,"511":1,"513":1,"514":1,"515":1,"516":1,"572":1,"573":1,"1679":1,"1680":1,"1681":1,"1682":1,"1683":1,"1684":1,"1685":1,"1686":1,"1687":1,"1688":1,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1695":1,"1696":1,"1697":1,"1698":1,"1699":1,"1700":1,"1701":1,"1702":1,"1703":1,"1704":1,"1705":1,"1706":1,"1707":1,"1708":1,"1709":1,"1710":1,"1711":1,"1712":1,"1713":1,"2109":1,"2110":1,"2111":1,"2112":1,"2113":1,"2269":1,"2271":1,"2272":1,"2273":1,"2274":1,"2276":1,"2348":1,"2418":1,"2419":1,"2705":1,"2706":1,"2707":1,"2708":1,"2709":1,"2710":1,"2711":1,"2745":1,"2746":1,"2747":1,"2748":1,"2749":1},"2":{"0":1,"1":1,"2":1,"3":2,"4":2,"5":3,"6":3,"7":3,"8":1,"10":3,"11":1,"12":1,"13":3,"14":5,"15":2,"16":3,"18":1,"19":1,"21":4,"22":3,"23":2,"24":2,"25":4,"27":2,"28":5,"30":4,"31":13,"32":1,"33":3,"34":12,"35":1,"36":7,"37":1,"43":3,"45":7,"46":2,"49":24,"50":18,"51":1,"55":5,"56":3,"58":1,"60":1,"62":3,"65":3,"67":4,"69":2,"70":17,"73":3,"74":3,"76":1,"83":3,"86":5,"87":4,"88":2,"90":4,"92":1,"93":2,"94":2,"99":4,"100":1,"102":1,"103":6,"104":2,"105":3,"107":4,"110":1,"112":1,"113":3,"114":13,"116":3,"118":5,"119":8,"120":3,"122":1,"123":3,"124":8,"125":8,"126":5,"127":2,"128":2,"130":1,"131":4,"132":2,"134":5,"137":1,"138":1,"140":1,"142":1,"143":3,"146":1,"149":10,"152":5,"153":4,"154":1,"156":6,"157":6,"158":4,"159":1,"160":6,"163":6,"164":4,"166":4,"167":2,"168":1,"169":3,"172":2,"173":4,"174":5,"175":6,"176":12,"181":1,"182":13,"184":3,"185":9,"186":2,"187":1,"188":1,"189":4,"191":10,"194":23,"195":6,"196":6,"197":2,"198":3,"199":7,"201":8,"202":7,"203":6,"204":3,"206":5,"209":5,"210":3,"211":11,"213":6,"215":1,"218":3,"219":1,"220":2,"221":2,"222":9,"224":3,"228":6,"229":2,"230":4,"231":1,"232":4,"233":5,"234":5,"235":3,"236":3,"238":1,"240":9,"243":4,"244":1,"245":4,"246":3,"247":1,"248":3,"249":4,"251":5,"254":6,"255":16,"256":3,"257":1,"258":1,"259":4,"262":6,"263":7,"264":1,"265":14,"266":4,"268":3,"271":6,"272":4,"273":7,"274":1,"275":4,"276":4,"277":2,"278":2,"279":1,"282":16,"284":1,"286":1,"291":4,"292":1,"294":1,"302":1,"303":2,"304":6,"305":7,"306":1,"307":5,"308":3,"309":1,"310":1,"311":1,"312":3,"313":3,"314":3,"315":8,"316":6,"317":8,"318":2,"319":1,"320":2,"321":2,"322":2,"323":3,"324":4,"325":2,"327":2,"330":3,"331":24,"332":2,"334":11,"335":10,"336":6,"337":4,"339":1,"341":20,"342":1,"346":3,"347":4,"349":8,"350":13,"351":1,"352":6,"353":1,"354":4,"355":2,"356":1,"357":2,"360":3,"361":5,"363":2,"364":3,"365":1,"366":1,"367":3,"370":7,"371":9,"372":2,"373":2,"374":11,"375":1,"377":2,"378":3,"380":1,"382":1,"383":1,"384":2,"385":2,"387":2,"388":2,"389":2,"390":2,"391":1,"393":3,"394":3,"395":1,"396":3,"399":1,"400":1,"401":4,"402":1,"403":5,"404":2,"405":2,"407":1,"408":2,"409":2,"410":2,"411":3,"413":2,"414":1,"415":1,"416":4,"417":2,"418":1,"423":1,"425":3,"426":5,"428":5,"429":1,"430":23,"431":3,"432":3,"433":7,"434":2,"435":14,"436":6,"437":5,"438":1,"439":1,"440":3,"441":2,"442":1,"445":1,"446":1,"448":2,"450":2,"451":3,"452":3,"453":32,"454":7,"455":2,"457":4,"458":1,"462":9,"463":1,"464":1,"465":2,"466":2,"467":1,"468":2,"470":3,"471":1,"472":1,"474":1,"476":1,"479":1,"480":1,"481":3,"482":1,"483":6,"484":1,"485":3,"487":2,"492":2,"493":3,"495":2,"496":9,"497":2,"498":1,"499":1,"500":1,"501":3,"502":31,"503":1,"504":4,"505":25,"506":14,"508":1,"509":17,"510":11,"511":35,"512":2,"513":11,"514":1,"515":17,"516":9,"517":4,"519":3,"520":4,"521":5,"522":11,"523":1,"524":1,"525":2,"526":2,"527":5,"529":19,"530":13,"532":2,"533":5,"534":9,"535":2,"536":1,"537":6,"538":3,"539":1,"540":6,"541":5,"542":3,"545":3,"546":2,"548":1,"550":3,"551":1,"552":1,"554":30,"556":13,"557":6,"558":2,"559":8,"560":11,"561":1,"562":4,"563":3,"564":1,"565":2,"566":8,"568":7,"569":3,"570":2,"571":7,"572":2,"573":3,"574":8,"575":3,"576":2,"578":3,"580":13,"581":2,"582":3,"584":2,"586":2,"587":5,"588":6,"589":2,"592":15,"596":1,"597":18,"598":18,"599":3,"600":2,"601":3,"602":1,"606":4,"607":5,"609":1,"610":5,"611":1,"612":1,"613":1,"614":5,"616":3,"617":2,"621":1,"622":1,"623":8,"624":11,"625":10,"626":27,"627":13,"628":18,"629":7,"630":2,"631":2,"633":2,"635":14,"636":5,"638":8,"639":12,"641":12,"642":1,"643":6,"644":11,"646":1,"647":2,"648":5,"649":1,"650":3,"651":2,"652":1,"653":1,"654":7,"655":1,"656":5,"657":8,"658":5,"659":9,"660":11,"661":15,"662":6,"663":2,"665":4,"666":11,"667":3,"668":2,"669":4,"671":1,"672":8,"673":1,"674":3,"675":2,"676":6,"677":1,"678":3,"679":2,"680":5,"681":10,"683":3,"684":22,"685":10,"686":3,"687":5,"688":7,"689":29,"690":17,"691":13,"692":7,"693":4,"694":18,"696":3,"697":4,"698":11,"699":1,"700":4,"701":11,"702":6,"703":15,"704":1,"705":1,"707":3,"708":1,"709":7,"710":1,"711":1,"712":7,"713":1,"714":1,"715":8,"716":1,"717":1,"718":8,"719":1,"720":1,"721":7,"722":1,"723":1,"724":7,"725":1,"726":2,"727":5,"728":1,"730":4,"731":5,"732":1,"733":2,"734":7,"736":1,"737":8,"738":1,"739":2,"740":2,"741":2,"742":6,"743":1,"744":3,"745":2,"746":4,"747":1,"748":1,"749":2,"750":6,"751":2,"752":4,"753":2,"754":2,"756":4,"757":9,"758":5,"759":2,"760":7,"762":1,"763":10,"764":1,"765":1,"766":2,"767":3,"768":2,"769":6,"770":1,"771":3,"772":2,"773":4,"774":1,"775":1,"776":2,"777":6,"778":2,"779":4,"780":2,"781":1,"782":2,"783":1,"785":4,"786":14,"787":5,"788":2,"789":6,"790":4,"791":2,"792":10,"794":1,"795":10,"796":1,"797":1,"798":2,"799":3,"800":2,"801":6,"802":1,"803":3,"804":2,"805":4,"806":1,"807":1,"808":2,"809":9,"810":2,"811":5,"812":2,"813":1,"814":2,"815":1,"817":4,"818":9,"819":5,"820":3,"821":2,"822":10,"824":1,"825":10,"826":1,"827":1,"828":2,"829":3,"830":2,"831":2,"832":2,"833":6,"834":1,"835":3,"836":2,"837":4,"838":1,"839":1,"840":2,"841":6,"842":2,"843":4,"844":2,"845":1,"846":2,"847":1,"849":4,"850":18,"851":5,"852":5,"853":2,"854":6,"855":5,"856":2,"857":10,"859":1,"860":10,"861":1,"862":1,"863":2,"864":3,"865":2,"866":2,"867":2,"868":6,"869":1,"870":3,"871":2,"872":4,"873":1,"874":1,"875":2,"876":6,"877":2,"878":4,"879":2,"880":1,"881":2,"882":1,"884":4,"885":14,"886":5,"887":2,"888":6,"889":5,"890":2,"891":10,"893":1,"894":10,"895":1,"896":1,"897":2,"898":3,"899":2,"900":2,"901":2,"902":6,"903":1,"904":3,"905":2,"906":4,"907":1,"908":1,"909":2,"910":6,"911":2,"912":4,"913":2,"914":1,"915":2,"916":1,"918":4,"919":14,"920":5,"921":2,"922":6,"923":5,"924":2,"925":10,"927":1,"928":10,"929":1,"930":1,"931":2,"932":3,"933":2,"934":2,"935":2,"936":6,"937":1,"938":3,"939":2,"940":4,"941":1,"942":1,"943":2,"944":6,"945":2,"946":4,"947":2,"948":1,"949":2,"950":1,"952":4,"953":16,"954":5,"955":2,"956":6,"957":5,"958":2,"959":10,"961":1,"962":10,"963":1,"964":1,"965":2,"966":3,"967":2,"968":2,"969":2,"970":6,"971":1,"972":3,"973":2,"974":4,"975":1,"976":1,"977":2,"978":6,"979":2,"980":4,"981":2,"982":1,"983":2,"984":1,"986":4,"987":16,"988":5,"989":2,"990":6,"991":5,"992":2,"993":10,"995":1,"996":10,"997":1,"998":1,"999":2,"1000":3,"1001":2,"1002":2,"1003":2,"1004":6,"1005":1,"1006":3,"1007":2,"1008":4,"1009":1,"1010":1,"1011":2,"1012":9,"1013":2,"1014":5,"1015":2,"1016":1,"1017":2,"1018":1,"1020":4,"1021":18,"1022":5,"1023":5,"1024":6,"1025":5,"1026":2,"1027":10,"1029":1,"1030":10,"1031":1,"1032":1,"1033":2,"1034":3,"1035":2,"1036":2,"1037":2,"1038":6,"1039":1,"1040":3,"1041":2,"1042":4,"1043":1,"1044":1,"1045":2,"1046":9,"1047":2,"1048":5,"1049":2,"1050":1,"1051":2,"1052":1,"1054":4,"1055":18,"1056":5,"1057":5,"1058":6,"1059":5,"1060":2,"1061":10,"1063":1,"1064":10,"1065":1,"1066":1,"1067":2,"1068":3,"1069":2,"1070":2,"1071":2,"1072":6,"1073":1,"1074":3,"1075":2,"1076":4,"1077":1,"1078":1,"1079":2,"1080":9,"1081":2,"1082":5,"1083":2,"1084":1,"1085":2,"1086":1,"1088":4,"1089":16,"1090":5,"1091":2,"1092":6,"1093":5,"1094":2,"1095":10,"1097":1,"1098":10,"1099":1,"1100":2,"1101":2,"1102":3,"1103":2,"1104":2,"1105":2,"1106":6,"1107":1,"1108":3,"1109":2,"1110":4,"1111":1,"1112":1,"1113":2,"1114":9,"1115":2,"1116":5,"1117":2,"1118":1,"1119":2,"1120":1,"1121":4,"1122":5,"1123":3,"1124":5,"1125":1,"1126":8,"1127":10,"1128":3,"1129":23,"1130":10,"1132":11,"1133":13,"1134":13,"1136":4,"1137":1,"1138":4,"1142":3,"1144":4,"1145":9,"1146":5,"1147":2,"1148":10,"1150":1,"1151":10,"1152":1,"1153":1,"1154":2,"1155":3,"1156":2,"1157":2,"1158":2,"1159":6,"1160":1,"1161":3,"1162":2,"1163":4,"1164":1,"1165":1,"1166":2,"1167":6,"1168":2,"1169":4,"1170":2,"1171":1,"1172":2,"1173":1,"1174":1,"1175":4,"1176":4,"1177":14,"1179":2,"1181":11,"1182":2,"1183":1,"1184":1,"1185":1,"1186":1,"1187":3,"1188":1,"1189":3,"1190":1,"1191":1,"1192":3,"1193":1,"1194":3,"1195":2,"1196":4,"1197":3,"1198":12,"1200":2,"1201":2,"1203":1,"1205":3,"1207":3,"1209":3,"1210":1,"1211":1,"1212":4,"1213":6,"1214":13,"1215":7,"1216":8,"1217":7,"1219":4,"1220":6,"1221":6,"1222":2,"1223":6,"1224":3,"1225":15,"1226":10,"1227":5,"1228":2,"1229":3,"1230":12,"1232":1,"1233":3,"1234":3,"1235":4,"1236":5,"1237":1,"1238":3,"1239":3,"1241":7,"1242":1,"1243":3,"1245":5,"1248":1,"1250":1,"1252":2,"1253":3,"1254":4,"1257":1,"1258":2,"1259":1,"1260":3,"1261":1,"1263":1,"1265":5,"1268":2,"1270":15,"1271":3,"1272":3,"1273":4,"1274":4,"1275":1,"1277":1,"1278":8,"1281":1,"1282":1,"1283":1,"1284":9,"1286":1,"1287":14,"1288":1,"1289":1,"1292":1,"1294":8,"1298":1,"1299":4,"1300":24,"1301":2,"1302":7,"1303":23,"1304":1,"1310":1,"1311":1,"1312":6,"1313":1,"1314":2,"1315":1,"1316":4,"1317":1,"1319":2,"1320":3,"1321":1,"1322":1,"1323":1,"1324":1,"1325":10,"1326":17,"1328":1,"1329":9,"1330":2,"1331":9,"1332":39,"1333":5,"1334":3,"1335":16,"1336":13,"1337":1,"1338":6,"1339":2,"1340":10,"1341":18,"1342":1,"1343":4,"1344":9,"1345":4,"1346":13,"1347":8,"1348":1,"1349":1,"1351":3,"1352":3,"1354":1,"1355":3,"1357":3,"1359":19,"1360":7,"1361":8,"1363":1,"1364":3,"1365":1,"1366":2,"1367":3,"1368":4,"1369":1,"1370":2,"1373":1,"1375":6,"1376":8,"1377":10,"1378":8,"1379":7,"1380":9,"1383":10,"1384":7,"1385":20,"1387":3,"1388":5,"1389":1,"1390":5,"1391":2,"1392":1,"1393":5,"1394":4,"1395":4,"1396":4,"1397":6,"1398":13,"1399":12,"1400":5,"1401":5,"1402":3,"1403":9,"1404":1,"1405":16,"1406":18,"1408":5,"1410":3,"1411":11,"1412":6,"1413":1,"1414":2,"1415":2,"1416":12,"1417":1,"1418":1,"1422":1,"1423":3,"1427":1,"1430":10,"1431":9,"1432":1,"1434":6,"1435":9,"1436":3,"1438":11,"1439":2,"1440":13,"1441":4,"1442":7,"1443":4,"1445":4,"1446":6,"1447":10,"1448":8,"1450":4,"1451":42,"1452":14,"1453":1,"1454":6,"1455":1,"1456":5,"1457":16,"1458":9,"1459":11,"1461":3,"1462":4,"1463":2,"1464":4,"1466":4,"1467":7,"1469":9,"1470":5,"1471":11,"1473":1,"1474":1,"1475":1,"1477":1,"1478":1,"1479":1,"1480":1,"1481":1,"1482":1,"1483":1,"1484":1,"1488":1,"1491":2,"1492":11,"1493":2,"1495":11,"1496":9,"1497":5,"1498":3,"1499":12,"1500":7,"1501":4,"1503":3,"1504":2,"1506":7,"1507":1,"1508":5,"1509":2,"1510":2,"1511":4,"1512":3,"1514":4,"1515":10,"1516":5,"1517":3,"1518":22,"1519":3,"1520":6,"1521":5,"1522":3,"1523":5,"1524":5,"1525":17,"1526":9,"1527":14,"1528":2,"1529":6,"1530":27,"1531":3,"1532":1,"1533":11,"1534":8,"1536":2,"1537":13,"1538":2,"1539":2,"1540":2,"1541":2,"1542":2,"1543":2,"1544":2,"1545":3,"1546":4,"1547":6,"1548":2,"1549":1,"1551":5,"1552":3,"1553":19,"1554":17,"1555":6,"1556":2,"1557":3,"1558":11,"1559":8,"1560":7,"1561":4,"1562":4,"1563":1,"1564":4,"1565":1,"1567":2,"1570":7,"1573":41,"1574":2,"1575":1,"1576":2,"1577":8,"1578":1,"1579":3,"1580":1,"1581":3,"1582":6,"1583":2,"1584":2,"1585":2,"1586":2,"1587":2,"1590":1,"1591":13,"1593":1,"1594":6,"1596":2,"1597":2,"1598":1,"1599":2,"1600":2,"1601":2,"1602":1,"1603":3,"1604":2,"1605":9,"1606":1,"1607":1,"1608":1,"1609":1,"1610":1,"1612":8,"1614":8,"1615":1,"1616":1,"1617":1,"1618":3,"1619":1,"1620":3,"1621":5,"1622":6,"1623":1,"1624":4,"1625":1,"1626":1,"1627":1,"1628":3,"1629":1,"1630":3,"1631":4,"1632":2,"1633":16,"1634":1,"1637":2,"1638":4,"1640":5,"1641":2,"1642":2,"1643":2,"1644":2,"1645":2,"1646":2,"1647":1,"1648":1,"1649":2,"1650":3,"1651":1,"1652":1,"1653":2,"1654":5,"1655":5,"1657":2,"1658":2,"1660":1,"1663":1,"1665":4,"1666":2,"1668":4,"1670":27,"1671":10,"1672":1,"1673":17,"1674":12,"1675":13,"1676":3,"1677":9,"1678":1,"1679":2,"1680":7,"1682":4,"1683":3,"1684":17,"1685":5,"1686":3,"1687":1,"1689":1,"1690":1,"1691":2,"1692":1,"1693":1,"1694":4,"1695":1,"1696":2,"1697":3,"1698":1,"1699":2,"1700":1,"1701":1,"1702":2,"1703":2,"1704":1,"1705":2,"1706":3,"1707":1,"1708":2,"1709":4,"1710":1,"1711":2,"1712":5,"1713":1,"1714":6,"1715":15,"1716":6,"1717":6,"1719":6,"1720":4,"1721":2,"1722":5,"1723":3,"1724":5,"1725":34,"1726":3,"1727":4,"1728":5,"1729":10,"1730":8,"1731":2,"1733":4,"1741":1,"1743":3,"1744":2,"1745":3,"1746":1,"1747":1,"1748":1,"1749":1,"1750":1,"1751":1,"1752":1,"1753":1,"1754":1,"1755":1,"1756":2,"1757":1,"1758":1,"1759":1,"1760":1,"1761":1,"1762":1,"1763":1,"1764":1,"1765":1,"1766":1,"1767":1,"1768":1,"1769":1,"1770":1,"1771":1,"1772":1,"1773":1,"1774":1,"1775":1,"1776":1,"1778":1,"1779":1,"1780":1,"1781":4,"1783":1,"1784":4,"1785":1,"1787":2,"1789":1,"1790":1,"1791":4,"1794":3,"1798":1,"1800":1,"1801":1,"1802":10,"1803":12,"1804":23,"1805":13,"1806":7,"1807":11,"1808":4,"1812":2,"1813":5,"1814":5,"1815":18,"1816":3,"1817":17,"1818":2,"1819":14,"1820":28,"1821":18,"1822":84,"1824":2,"1825":3,"1826":4,"1827":5,"1828":6,"1829":2,"1830":1,"1832":4,"1833":1,"1834":12,"1835":11,"1836":14,"1837":3,"1838":8,"1841":4,"1842":25,"1843":8,"1844":2,"1845":4,"1846":9,"1847":12,"1848":12,"1849":26,"1850":4,"1851":13,"1852":12,"1853":12,"1854":11,"1855":23,"1857":4,"1858":7,"1859":15,"1860":3,"1861":2,"1862":2,"1863":3,"1864":16,"1865":2,"1866":4,"1867":1,"1869":1,"1871":3,"1872":1,"1873":19,"1874":1,"1876":8,"1877":4,"1878":4,"1879":7,"1880":3,"1881":6,"1882":1,"1885":1,"1886":1,"1887":2,"1888":1,"1889":2,"1890":2,"1891":2,"1892":2,"1893":2,"1894":1,"1895":2,"1896":1,"1897":2,"1898":1,"1899":1,"1900":1,"1902":3,"1903":3,"1905":1,"1906":3,"1907":1,"1908":9,"1910":9,"1911":4,"1912":13,"1913":1,"1914":2,"1915":6,"1916":2,"1917":3,"1918":5,"1919":1,"1920":7,"1921":23,"1922":6,"1923":15,"1925":1,"1926":3,"1928":3,"1929":10,"1930":2,"1931":2,"1932":10,"1933":17,"1934":4,"1935":7,"1936":1,"1937":5,"1938":3,"1939":3,"1940":8,"1941":5,"1942":5,"1943":1,"1944":3,"1945":5,"1946":34,"1947":4,"1948":14,"1949":9,"1950":17,"1951":3,"1952":10,"1953":4,"1954":11,"1955":2,"1957":5,"1959":6,"1960":1,"1968":1,"1970":3,"1971":4,"1972":3,"1973":3,"1974":1,"1975":1,"1976":1,"1977":1,"1978":1,"1979":1,"1980":1,"1981":1,"1982":1,"1983":2,"1984":1,"1985":1,"1986":1,"1987":1,"1988":1,"1989":1,"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"1995":1,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2001":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2007":1,"2008":1,"2009":1,"2010":1,"2011":1,"2012":1,"2013":3,"2014":1,"2015":3,"2016":1,"2017":1,"2018":1,"2019":1,"2020":1,"2021":1,"2023":1,"2024":1,"2025":1,"2026":4,"2028":1,"2029":4,"2030":1,"2031":12,"2032":20,"2033":10,"2034":7,"2035":23,"2036":3,"2037":1,"2038":21,"2039":1,"2040":9,"2041":1,"2042":15,"2043":4,"2044":12,"2045":1,"2046":1,"2047":3,"2051":18,"2052":15,"2054":14,"2055":6,"2058":4,"2059":10,"2060":8,"2061":4,"2062":6,"2063":4,"2064":3,"2065":1,"2066":2,"2067":5,"2068":1,"2069":1,"2070":2,"2071":5,"2072":7,"2073":1,"2074":6,"2075":10,"2076":1,"2078":2,"2079":3,"2082":1,"2084":3,"2086":1,"2088":3,"2090":1,"2091":1,"2092":1,"2093":1,"2094":1,"2095":1,"2096":1,"2097":1,"2098":1,"2099":1,"2102":2,"2103":2,"2104":3,"2105":6,"2106":12,"2107":26,"2108":3,"2109":4,"2111":3,"2112":20,"2113":13,"2114":6,"2115":1,"2117":1,"2118":9,"2119":4,"2120":9,"2121":2,"2122":13,"2123":1,"2124":7,"2125":13,"2126":24,"2127":8,"2128":18,"2129":45,"2130":11,"2131":31,"2132":1,"2133":15,"2134":4,"2137":5,"2138":3,"2139":18,"2140":3,"2141":19,"2142":10,"2143":69,"2144":3,"2145":7,"2146":5,"2147":23,"2148":8,"2149":11,"2150":18,"2151":1,"2152":22,"2153":4,"2154":3,"2155":5,"2157":6,"2160":6,"2161":44,"2162":31,"2164":1,"2165":2,"2167":4,"2168":2,"2169":25,"2170":8,"2171":30,"2172":7,"2173":6,"2174":9,"2175":9,"2177":3,"2178":2,"2179":9,"2180":13,"2181":12,"2182":17,"2183":15,"2186":1,"2187":1,"2188":1,"2189":1,"2190":1,"2191":1,"2192":1,"2193":1,"2194":1,"2195":1,"2196":3,"2197":3,"2198":3,"2199":1,"2200":2,"2202":1,"2203":3,"2204":2,"2205":1,"2206":3,"2207":2,"2209":3,"2210":2,"2211":1,"2214":2,"2215":1,"2216":2,"2217":1,"2218":1,"2219":2,"2220":1,"2221":1,"2222":1,"2223":2,"2224":2,"2225":4,"2226":11,"2227":2,"2228":7,"2229":9,"2230":11,"2231":13,"2232":3,"2233":13,"2234":5,"2235":10,"2236":13,"2237":10,"2238":27,"2239":1,"2240":11,"2241":7,"2242":11,"2243":11,"2244":11,"2245":22,"2246":2,"2247":22,"2248":2,"2249":28,"2250":3,"2251":1,"2252":15,"2255":6,"2256":2,"2257":6,"2258":2,"2259":11,"2260":6,"2261":7,"2262":57,"2263":27,"2264":1,"2266":1,"2267":4,"2268":21,"2269":2,"2270":7,"2271":1,"2272":25,"2273":45,"2274":18,"2275":10,"2276":24,"2277":11,"2278":4,"2279":28,"2280":4,"2282":1,"2284":1,"2286":3,"2287":1,"2288":1,"2289":2,"2290":2,"2291":3,"2294":1,"2295":4,"2296":2,"2297":3,"2298":3,"2299":10,"2300":17,"2301":2,"2302":8,"2303":6,"2304":3,"2305":4,"2306":5,"2307":3,"2308":1,"2309":11,"2310":3,"2311":44,"2313":2,"2314":1,"2315":1,"2316":1,"2317":4,"2318":1,"2319":2,"2320":5,"2321":5,"2322":3,"2323":3,"2324":3,"2325":5,"2326":5,"2327":10,"2328":14,"2330":8,"2331":1,"2332":8,"2334":8,"2335":5,"2339":5,"2341":4,"2342":7,"2343":2,"2344":8,"2345":1,"2346":3,"2347":16,"2348":17,"2349":12,"2350":6,"2351":5,"2352":7,"2353":17,"2354":2,"2355":7,"2356":4,"2357":5,"2358":6,"2359":4,"2360":5,"2363":1,"2366":2,"2367":2,"2369":4,"2370":8,"2375":3,"2381":2,"2385":4,"2393":9,"2395":2,"2396":11,"2397":2,"2398":7,"2400":3,"2401":8,"2402":7,"2403":10,"2404":3,"2405":6,"2406":11,"2407":13,"2408":5,"2409":1,"2410":2,"2411":12,"2413":3,"2414":2,"2416":1,"2417":5,"2418":2,"2419":1,"2420":1,"2421":8,"2422":5,"2423":7,"2424":5,"2425":5,"2427":4,"2428":3,"2429":2,"2430":2,"2431":6,"2432":1,"2435":3,"2436":9,"2437":5,"2438":5,"2439":8,"2440":7,"2441":11,"2442":1,"2443":1,"2444":1,"2445":12,"2446":4,"2447":5,"2448":2,"2450":16,"2451":7,"2452":8,"2453":2,"2454":14,"2455":2,"2457":2,"2458":3,"2459":3,"2460":5,"2461":2,"2462":3,"2463":5,"2464":1,"2465":1,"2466":4,"2467":3,"2468":13,"2469":6,"2472":3,"2473":1,"2474":2,"2475":5,"2476":3,"2477":60,"2478":2,"2479":18,"2480":14,"2481":2,"2482":3,"2483":1,"2485":1,"2490":18,"2491":8,"2492":5,"2494":4,"2495":3,"2496":3,"2497":6,"2498":14,"2501":13,"2502":9,"2503":3,"2504":2,"2506":9,"2507":2,"2508":15,"2509":5,"2510":4,"2511":1,"2512":6,"2513":50,"2514":2,"2515":2,"2517":3,"2518":10,"2519":6,"2521":4,"2522":3,"2523":7,"2524":15,"2525":8,"2526":5,"2527":2,"2529":8,"2530":10,"2531":2,"2532":2,"2533":14,"2534":4,"2535":2,"2536":2,"2537":2,"2539":10,"2541":7,"2542":3,"2543":8,"2544":4,"2545":2,"2546":8,"2548":15,"2549":2,"2550":9,"2551":1,"2552":2,"2553":8,"2554":3,"2555":3,"2556":14,"2557":9,"2558":7,"2559":8,"2560":2,"2561":1,"2562":1,"2563":1,"2564":15,"2565":2,"2566":51,"2567":14,"2569":5,"2570":8,"2571":3,"2572":4,"2573":6,"2574":17,"2575":40,"2576":104,"2577":129,"2578":3,"2579":3,"2581":9,"2582":2,"2584":3,"2585":7,"2586":2,"2587":12,"2588":3,"2589":6,"2590":8,"2591":3,"2592":8,"2593":5,"2594":4,"2595":9,"2596":12,"2597":6,"2598":11,"2599":5,"2600":3,"2603":2,"2605":7,"2606":1,"2607":7,"2608":2,"2609":1,"2610":4,"2611":2,"2613":1,"2614":17,"2615":36,"2616":12,"2617":6,"2619":2,"2620":6,"2623":1,"2624":3,"2625":1,"2627":1,"2628":1,"2631":1,"2632":2,"2633":3,"2635":1,"2636":1,"2637":2,"2638":1,"2644":1,"2645":1,"2646":1,"2647":1,"2648":2,"2650":1,"2651":1,"2654":4,"2657":3,"2658":3,"2659":1,"2660":2,"2661":1,"2663":1,"2665":6,"2666":1,"2668":1,"2669":1,"2670":2,"2671":9,"2672":12,"2673":8,"2674":5,"2675":9,"2676":9,"2677":14,"2678":2,"2679":5,"2680":3,"2681":2,"2682":4,"2683":8,"2684":6,"2685":13,"2686":39,"2687":4,"2688":26,"2689":9,"2690":2,"2691":4,"2692":8,"2693":6,"2694":19,"2695":31,"2696":6,"2697":35,"2698":3,"2699":14,"2700":8,"2701":16,"2702":7,"2704":2,"2705":7,"2706":2,"2707":2,"2708":4,"2709":3,"2711":1,"2712":2,"2714":1,"2715":1,"2718":5,"2719":12,"2720":8,"2722":2,"2723":5,"2724":3,"2726":2,"2727":9,"2728":45,"2729":34,"2730":5,"2734":10,"2735":41,"2736":22,"2737":20,"2738":15,"2739":2,"2740":5,"2741":1,"2742":2,"2743":13,"2744":8,"2745":7,"2746":13,"2747":4,"2748":10,"2749":5,"2751":3,"2752":5,"2753":20,"2754":7,"2755":5,"2756":3,"2757":25}}],["theirs",{"2":{"2309":1}}],["their",{"2":{"0":2,"9":2,"19":2,"39":2,"52":2,"58":1,"67":1,"83":1,"86":1,"102":1,"107":1,"114":1,"122":1,"123":1,"124":1,"125":1,"134":1,"143":1,"154":1,"157":1,"159":1,"166":1,"168":1,"172":1,"175":2,"179":1,"181":1,"182":1,"185":1,"197":1,"222":1,"228":2,"233":1,"234":1,"251":1,"263":1,"275":1,"307":1,"310":1,"318":1,"337":2,"349":1,"352":4,"374":1,"375":1,"388":1,"433":1,"435":1,"440":1,"453":1,"484":1,"496":2,"510":1,"519":3,"527":1,"551":1,"556":1,"559":1,"562":1,"587":1,"602":1,"629":1,"654":1,"656":1,"697":1,"734":2,"760":2,"792":2,"822":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1148":2,"1216":1,"1244":1,"1265":2,"1298":1,"1304":1,"1336":1,"1370":1,"1430":1,"1440":2,"1441":1,"1518":1,"1525":1,"1533":1,"1718":1,"1722":1,"1725":2,"1805":1,"1851":1,"1943":1,"1946":2,"2046":1,"2053":2,"2075":1,"2177":1,"2181":1,"2183":1,"2229":1,"2230":2,"2233":1,"2243":1,"2286":2,"2305":4,"2309":2,"2346":1,"2354":1,"2397":1,"2421":1,"2427":1,"2441":1,"2466":1,"2468":2,"2475":1,"2533":1,"2535":1,"2549":1,"2564":3,"2566":2,"2568":1,"2574":2,"2577":1,"2578":1,"2592":1,"2601":1,"2617":1,"2655":1,"2701":1,"2726":1}}],["these",{"2":{"0":1,"7":1,"9":1,"16":1,"19":1,"21":1,"28":1,"37":1,"38":1,"39":1,"52":1,"67":1,"86":1,"120":2,"124":1,"182":1,"188":1,"202":2,"254":1,"268":2,"273":1,"276":1,"317":1,"337":1,"364":1,"367":2,"414":1,"431":1,"432":1,"441":2,"442":1,"453":1,"470":1,"473":1,"479":3,"485":1,"496":1,"503":1,"504":1,"509":1,"515":1,"516":1,"520":1,"522":1,"529":1,"530":1,"551":2,"559":1,"560":1,"571":4,"573":1,"574":1,"580":1,"584":1,"587":3,"606":3,"610":1,"611":1,"612":1,"614":1,"615":1,"633":1,"635":1,"660":1,"661":1,"669":1,"689":1,"789":1,"792":1,"822":1,"854":1,"857":1,"888":1,"891":1,"922":1,"925":1,"956":1,"959":1,"990":1,"993":1,"1024":1,"1027":1,"1058":1,"1061":1,"1092":1,"1095":1,"1124":1,"1127":1,"1129":1,"1130":1,"1132":1,"1133":1,"1138":1,"1148":1,"1212":1,"1245":1,"1265":3,"1267":1,"1268":1,"1273":1,"1281":1,"1299":1,"1300":1,"1320":1,"1331":1,"1332":1,"1335":2,"1338":1,"1341":1,"1351":1,"1353":1,"1354":1,"1361":1,"1370":1,"1383":1,"1385":1,"1392":1,"1398":1,"1402":1,"1406":1,"1423":1,"1427":1,"1430":1,"1435":1,"1437":1,"1446":2,"1454":1,"1469":2,"1471":1,"1495":2,"1496":2,"1509":1,"1513":1,"1515":1,"1518":1,"1530":1,"1533":1,"1553":1,"1568":1,"1573":1,"1574":1,"1578":1,"1589":1,"1655":1,"1658":1,"1673":1,"1680":1,"1715":1,"1716":1,"1725":1,"1728":2,"1733":1,"1794":1,"1817":1,"1820":3,"1821":1,"1841":1,"1850":1,"1855":1,"1859":1,"1863":1,"1881":1,"1910":1,"1921":2,"1929":1,"1932":2,"1946":1,"1948":1,"1949":3,"1953":2,"1957":1,"2031":1,"2032":1,"2034":2,"2035":1,"2037":1,"2040":1,"2041":1,"2042":1,"2044":1,"2058":2,"2072":1,"2075":1,"2105":1,"2113":1,"2118":1,"2125":1,"2128":1,"2129":1,"2130":1,"2146":1,"2149":1,"2152":1,"2153":2,"2169":1,"2172":1,"2174":1,"2175":1,"2181":1,"2182":1,"2183":1,"2231":1,"2244":1,"2262":2,"2263":2,"2269":1,"2270":1,"2275":1,"2279":2,"2305":1,"2308":1,"2335":1,"2342":1,"2343":1,"2350":1,"2393":2,"2395":1,"2397":1,"2398":2,"2403":1,"2405":3,"2409":1,"2410":1,"2411":1,"2418":1,"2423":1,"2445":1,"2457":1,"2466":1,"2468":1,"2475":1,"2482":1,"2490":2,"2516":1,"2523":1,"2530":1,"2533":2,"2535":1,"2540":1,"2541":2,"2544":1,"2545":1,"2548":1,"2549":1,"2556":1,"2559":1,"2560":1,"2563":1,"2565":1,"2566":3,"2569":1,"2571":1,"2576":6,"2577":2,"2639":1,"2660":1,"2665":1,"2671":1,"2701":1,"2703":1,"2705":1,"2706":1,"2708":1,"2711":3,"2723":1,"2724":3,"2726":1,"2728":1,"2747":1,"2750":1}}],["w25x10cl",{"2":{"2544":2}}],["w25q080",{"2":{"2544":2}}],["wmp",{"2":{"2355":1}}],["wm",{"2":{"2355":1}}],["w^wr^sd",{"2":{"2154":1}}],["wfav",{"2":{"2355":1,"2393":1}}],["wfwd",{"2":{"1932":1,"2355":1,"2393":1}}],["wfi",{"2":{"222":1}}],["www",{"2":{"551":1,"624":1,"684":7,"685":1,"701":1,"1242":2,"1289":1,"1380":1,"2040":1,"2169":1,"2355":7,"2393":7,"2570":1}}],["wt",{"2":{"236":1,"249":2,"2566":2}}],["wt80",{"2":{"211":2}}],["wt75",{"2":{"211":3}}],["wt70",{"2":{"211":1}}],["wt69",{"2":{"211":1}}],["wt65",{"2":{"211":8}}],["wt60",{"2":{"199":1,"211":8}}],["w1",{"2":{"211":1,"241":2,"249":1}}],["wk",{"2":{"211":1}}],["wkl",{"2":{"149":1}}],["wl",{"2":{"176":2,"2153":3}}],["wbak",{"2":{"1932":1,"2355":1,"2393":1}}],["wbg7",{"2":{"176":1}}],["wb32fq95xx",{"2":{"490":1}}],["wb32fq95",{"2":{"160":1}}],["wb32f3g71xx",{"2":{"490":1}}],["wb32f3g71",{"2":{"134":1}}],["wb32",{"0":{"490":1,"2244":1},"2":{"160":1,"176":4,"191":4,"199":2,"222":1,"236":1,"2244":4}}],["wstp",{"2":{"2355":1,"2393":1}}],["wsch",{"2":{"2355":1,"2393":1}}],["ws2811",{"2":{"1212":1,"2031":1,"2288":1}}],["ws2812s",{"2":{"1216":1}}],["ws2812c",{"2":{"1212":1,"2031":1}}],["ws2812b",{"2":{"1212":1,"1216":2,"2031":1}}],["ws2812",{"0":{"1212":1,"1232":1,"2288":1,"2700":1},"1":{"1213":1,"1214":1,"1215":1,"1216":1,"1217":1,"1218":1,"1219":1,"1220":1,"1221":1,"1222":1,"1223":1,"1224":1,"1225":1,"1226":1,"1227":1,"1228":1,"1229":1,"1230":1,"1231":1,"1232":1,"1233":2},"2":{"49":1,"50":2,"93":2,"134":2,"149":1,"176":4,"191":3,"199":1,"201":2,"211":7,"221":4,"222":1,"234":2,"236":1,"249":3,"266":2,"506":3,"642":1,"1122":2,"1212":1,"1213":4,"1214":10,"1215":2,"1216":3,"1217":2,"1218":2,"1219":1,"1220":3,"1221":1,"1224":6,"1225":1,"1226":6,"1227":1,"1228":1,"1229":1,"1230":7,"1232":1,"1945":1,"1959":1,"2031":1,"2032":4,"2288":1,"2528":1,"2531":1,"2694":2,"2695":1,"2700":3}}],["wsl",{"2":{"158":1,"1241":1,"1385":1,"2463":3}}],["w64",{"2":{"158":1,"2351":2,"2461":1}}],["w",{"2":{"134":1,"199":1,"201":2,"211":1,"241":1,"249":1,"266":4,"313":1,"375":1,"530":2,"1212":1,"1217":4,"1499":2,"1511":1,"1527":1,"1655":1,"1805":8,"1932":1,"1943":6,"2148":1,"2153":1,"2169":1,"2233":1,"2236":1,"2347":1,"2348":3,"2355":3,"2386":3,"2401":1,"2407":1,"2575":4,"2615":3,"2686":2}}],["wc",{"2":{"116":1}}],["wp",{"2":{"114":1,"684":5}}],["wpm",{"0":{"2225":1},"1":{"2226":1,"2227":1,"2228":1},"2":{"93":1,"114":1,"134":1,"149":1,"191":2,"199":1,"511":2,"1683":1,"1949":1,"2129":3,"2144":1,"2225":4,"2226":24,"2227":4,"2228":9,"2697":2,"2705":2,"2710":12,"2749":1}}],["wref",{"2":{"2355":1,"2393":1}}],["wraps",{"2":{"1822":3,"2054":4,"2143":3}}],["wrapping",{"2":{"1361":1}}],["wrapped",{"2":{"249":1,"436":1}}],["wrappers",{"2":{"176":1}}],["wrap",{"2":{"199":1,"453":3,"454":1,"455":3,"1398":1,"1591":2,"2170":1}}],["wrote",{"2":{"174":1,"388":1,"405":1,"414":1,"415":1,"417":1,"423":1,"424":1,"2728":1}}],["wrongly",{"2":{"1274":1}}],["wrong",{"0":{"28":1,"627":1},"2":{"5":1,"25":1,"92":1,"176":1,"240":1,"249":1,"433":1,"557":1,"1216":1,"1241":1,"1287":1,"1447":1,"2455":1}}],["written",{"2":{"164":1,"230":1,"440":1,"552":2,"1331":1,"1332":1,"1736":1,"1738":1,"1740":1,"1749":1,"1752":1,"1754":1,"1758":1,"1760":1,"1764":1,"1766":1,"1769":1,"1963":1,"1965":1,"1967":1,"1976":1,"1979":1,"1981":1,"1985":1,"1987":1,"1991":1,"1993":1,"1997":1,"1999":1,"2003":1,"2005":1,"2008":1,"2014":1,"2036":1,"2051":9,"2052":3,"2053":3,"2054":7,"2055":3,"2134":1,"2300":1,"2347":1,"2353":2,"2407":1,"2450":1,"2453":1,"2577":1,"2627":1,"2629":1,"2752":2}}],["writing",{"0":{"440":1},"2":{"65":1,"70":1,"112":1,"134":1,"174":1,"182":1,"317":1,"388":1,"401":1,"430":2,"434":1,"441":1,"483":2,"485":1,"615":1,"681":4,"684":1,"688":1,"693":1,"1331":1,"1364":1,"1438":1,"1578":1,"1822":6,"2143":6,"2144":1,"2182":1,"2255":1,"2300":1,"2347":2,"2466":1,"2524":1,"2554":1,"2575":4,"2577":1,"2751":1,"2756":1}}],["writereg16",{"2":{"244":1}}],["writereg",{"2":{"244":1,"249":1}}],["writepinlow",{"2":{"243":1}}],["writepinhigh",{"2":{"243":1}}],["writepin",{"2":{"160":1,"243":1}}],["writes",{"2":{"114":1,"689":1,"690":1,"691":1,"692":1,"714":1,"717":1,"1331":1,"1332":1,"1341":1,"1720":1,"1822":9,"2143":9,"2525":1,"2575":2}}],["write",{"0":{"714":1,"717":1,"739":1,"766":1,"798":1,"828":1,"863":1,"897":1,"931":1,"965":1,"999":1,"1033":1,"1067":1,"1101":1,"1154":1,"1183":1,"1202":1,"1617":1},"1":{"715":1,"716":1,"718":1,"719":1,"740":1,"767":1,"799":1,"829":1,"864":1,"898":1,"932":1,"966":1,"1000":1,"1034":1,"1068":1,"1102":1,"1155":1,"1184":1,"1185":1,"1203":1,"1618":1},"2":{"31":4,"62":1,"114":2,"149":1,"174":1,"243":3,"244":2,"249":5,"424":1,"427":1,"440":1,"441":1,"446":2,"453":1,"455":1,"485":1,"559":1,"560":1,"585":1,"613":1,"614":1,"623":1,"684":2,"688":1,"689":2,"690":3,"691":3,"696":3,"701":1,"709":1,"715":2,"718":2,"727":1,"1183":1,"1184":1,"1189":2,"1203":1,"1207":2,"1287":2,"1331":1,"1332":5,"1333":1,"1361":1,"1364":1,"1448":1,"1527":1,"1617":1,"1717":6,"1813":9,"1814":1,"1815":1,"1816":2,"1822":17,"1823":18,"1847":1,"1881":1,"1918":1,"1923":1,"2137":9,"2138":1,"2139":1,"2143":11,"2301":2,"2353":4,"2426":1,"2525":1,"2553":1,"2600":2,"2710":5,"2751":1,"2752":2,"2753":1}}],["wont",{"2":{"1385":1}}],["wonder",{"2":{"2325":1,"2757":1}}],["wondering",{"2":{"554":1,"2740":1}}],["wonderland",{"2":{"57":2}}],["won",{"0":{"548":1},"2":{"221":1,"349":1,"498":1,"560":1,"1363":1,"1379":1,"1383":1,"1403":1,"1683":1,"2032":1,"2274":1,"2335":1,"2477":1,"2569":1,"2603":1,"2701":1,"2724":1,"2728":1,"2750":1}}],["woodkeys",{"2":{"143":6,"149":2}}],["wootpatoot",{"2":{"70":1}}],["worse",{"2":{"1278":1,"2118":1}}],["worrying",{"0":{"2472":1}}],["worry",{"2":{"1262":1}}],["worth",{"2":{"539":1,"1511":1,"2161":1,"2589":1,"2753":1}}],["worldsemi",{"2":{"1212":1}}],["world",{"0":{"1593":1,"2078":1},"2":{"430":4,"432":1,"470":1,"1251":1,"1268":1,"1325":2,"1355":1,"1436":3,"1593":1,"2078":2,"2154":1,"2666":1}}],["world1",{"2":{"120":1,"1354":1}}],["wordtypo",{"2":{"1447":1}}],["wordtpyo",{"2":{"1447":1}}],["words",{"2":{"1359":1,"1437":1,"1438":1,"1441":8,"1447":3,"1686":1,"1932":1,"2144":2,"2169":1,"2182":1,"2225":1,"2410":1,"2729":1}}],["word",{"0":{"152":1,"568":1,"1499":1,"1500":1,"1502":1,"1506":1,"1507":1,"2093":1,"2225":1,"2362":1,"2680":1},"1":{"1500":1,"1501":2,"1502":1,"1503":2,"1504":2,"1505":2,"1506":2,"1507":2,"2094":1,"2226":1,"2227":1,"2228":1},"2":{"152":3,"160":3,"176":2,"188":1,"191":2,"199":1,"211":3,"222":1,"249":1,"460":1,"1303":1,"1440":1,"1441":3,"1445":1,"1446":1,"1447":2,"1499":14,"1500":10,"1501":2,"1503":8,"1504":7,"1505":9,"1506":11,"1507":6,"1518":1,"1929":1,"1932":2,"2169":2,"2226":2,"2228":1,"2302":1,"2317":1,"2362":3,"2680":7,"2749":1}}],["workman",{"2":{"1355":3,"2703":6}}],["worked",{"2":{"606":1,"2413":1,"2457":1}}],["worker",{"2":{"305":1}}],["workers",{"0":{"305":1},"2":{"304":1,"305":1}}],["workbench",{"2":{"291":1,"2498":2,"2508":1}}],["workarounds",{"0":{"2618":1},"1":{"2619":1,"2620":1}}],["workaround",{"0":{"218":1},"2":{"149":1,"160":5,"199":2,"218":2,"222":1,"249":2,"1397":1,"1431":1,"1960":1}}],["workflows",{"2":{"262":1,"1314":1,"2435":2,"2437":1,"2438":1,"2448":1}}],["workflow",{"0":{"2437":1,"2439":1},"2":{"134":1,"164":1,"176":1,"191":1,"199":1,"213":1,"361":1,"521":1,"557":1,"2250":1,"2428":2,"2437":3,"2439":3,"2440":4}}],["workings",{"0":{"1672":1},"1":{"1673":1,"1674":1,"1675":1},"2":{"1863":1}}],["working",{"0":{"545":1,"1271":1,"1272":1,"1273":1,"1337":1,"2471":1},"1":{"1338":1,"1339":1,"1340":1,"2472":1},"2":{"114":1,"158":1,"321":1,"363":1,"370":1,"389":1,"390":1,"391":1,"399":1,"481":2,"516":1,"554":1,"560":1,"606":2,"684":1,"685":1,"690":1,"694":1,"1243":1,"1281":1,"1298":1,"1325":1,"1455":1,"1811":2,"1903":1,"2032":1,"2128":1,"2171":1,"2183":1,"2251":1,"2277":2,"2279":2,"2280":1,"2293":1,"2305":1,"2353":1,"2409":1,"2421":1,"2429":1,"2431":1,"2455":1,"2492":1,"2497":1,"2502":1,"2513":2,"2553":2,"2564":1}}],["workshop",{"2":{"1290":1}}],["workspaceroot",{"2":{"2513":2}}],["workspace",{"2":{"291":1,"2498":1,"2508":1,"2509":1,"2510":2,"2511":1}}],["works",{"0":{"2283":1,"2311":1},"2":{"100":1,"176":1,"199":1,"211":4,"263":2,"285":1,"375":1,"412":1,"481":1,"510":1,"532":1,"605":1,"663":1,"1122":1,"1215":1,"1236":1,"1239":1,"1243":1,"1283":1,"1334":1,"1401":1,"1403":1,"1411":1,"1416":1,"1442":1,"1447":1,"1450":1,"1499":1,"1500":2,"1503":1,"1577":1,"1672":1,"1844":1,"1845":1,"1879":1,"1940":1,"2033":1,"2118":1,"2122":1,"2126":1,"2162":1,"2171":3,"2172":1,"2182":1,"2183":4,"2249":1,"2270":1,"2283":1,"2311":1,"2331":1,"2349":1,"2403":1,"2427":1,"2502":1,"2513":1,"2725":1,"2742":1,"2757":1}}],["work",{"0":{"1281":1,"1288":1,"1291":1,"1292":1,"1411":1,"1438":1},"2":{"10":1,"23":2,"28":1,"49":1,"50":2,"114":1,"131":1,"134":1,"142":1,"160":1,"182":2,"189":2,"191":3,"194":1,"199":2,"222":1,"236":1,"251":2,"266":1,"277":1,"317":1,"336":1,"349":1,"354":1,"358":1,"380":1,"435":1,"452":1,"488":1,"515":2,"534":1,"541":1,"551":1,"554":2,"560":3,"605":1,"606":1,"698":1,"726":1,"1126":1,"1132":1,"1133":1,"1236":1,"1238":1,"1241":1,"1271":1,"1288":2,"1290":1,"1303":2,"1312":1,"1332":2,"1335":1,"1340":2,"1363":1,"1370":1,"1375":1,"1385":3,"1403":4,"1416":3,"1432":1,"1435":1,"1522":1,"1524":1,"1568":1,"1572":1,"1676":2,"1787":1,"1788":1,"1822":1,"1824":1,"1848":1,"1852":1,"1861":1,"1866":2,"1873":1,"1948":2,"2034":1,"2041":1,"2045":1,"2114":1,"2145":1,"2150":1,"2153":1,"2162":1,"2169":1,"2177":1,"2181":1,"2238":1,"2240":1,"2254":1,"2256":1,"2262":1,"2276":1,"2279":1,"2292":2,"2299":1,"2309":2,"2311":1,"2318":1,"2326":1,"2341":1,"2344":1,"2398":1,"2411":1,"2424":1,"2445":1,"2455":1,"2457":1,"2474":1,"2476":1,"2477":1,"2490":1,"2501":1,"2513":1,"2517":1,"2524":1,"2577":1,"2725":1,"2735":1,"2736":1,"2742":1,"2746":1}}],["wouldn",{"2":{"1522":1,"2757":1}}],["would",{"2":{"11":1,"73":1,"98":1,"164":1,"194":3,"263":1,"320":1,"331":1,"367":1,"479":1,"480":1,"485":1,"505":1,"529":1,"530":1,"532":1,"554":1,"611":1,"643":1,"660":4,"661":2,"665":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1132":1,"1133":1,"1144":1,"1181":1,"1213":1,"1226":1,"1230":1,"1264":1,"1294":1,"1300":2,"1325":1,"1334":1,"1336":3,"1338":1,"1361":4,"1366":1,"1391":1,"1392":1,"1405":1,"1430":2,"1432":1,"1441":2,"1451":2,"1469":1,"1470":1,"1492":1,"1508":1,"1510":1,"1514":1,"1530":1,"1560":1,"1577":1,"1670":1,"1676":1,"1729":1,"1731":1,"1791":1,"1804":1,"1857":1,"1874":1,"1876":2,"1878":2,"1912":1,"1943":1,"1952":1,"1955":1,"1959":1,"2039":1,"2044":1,"2045":1,"2046":1,"2064":1,"2152":3,"2154":1,"2155":1,"2162":1,"2169":2,"2183":1,"2228":1,"2268":1,"2311":2,"2396":1,"2403":2,"2410":1,"2411":4,"2421":1,"2469":2,"2506":1,"2533":1,"2551":1,"2566":1,"2577":3,"2607":2,"2614":1,"2719":1,"2734":2,"2735":1,"2736":1,"2752":1,"2756":3}}],["whlr",{"2":{"1801":1,"1932":1,"2372":1}}],["whll",{"2":{"1801":1,"1932":1,"2372":1}}],["whld",{"2":{"1559":1,"1801":1,"1932":1,"2372":1}}],["whlu",{"2":{"1559":1,"1801":1,"1932":1,"2372":1}}],["wh",{"2":{"209":2}}],["why",{"0":{"1409":1,"1410":1,"2254":1,"2283":1,"2740":1,"2741":1},"1":{"1410":1,"1411":1,"1412":1,"1413":1,"1414":1,"1415":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"1423":1,"1424":1,"1425":1,"1426":1,"1427":1,"1428":1,"1429":1,"1430":1,"1431":1,"1432":1,"1433":1,"1434":1,"1435":1,"1436":1},"2":{"173":1,"367":1,"453":1,"455":1,"482":1,"789":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1300":1,"1340":1,"2325":1,"2671":1,"2740":1,"2757":1}}],["whom",{"2":{"2355":1,"2393":1}}],["whoeveryouare",{"2":{"2255":3}}],["whose",{"2":{"430":1,"2149":1,"2728":1}}],["who",{"2":{"119":2,"164":1,"166":1,"173":3,"209":1,"221":1,"231":1,"234":1,"470":1,"479":1,"502":1,"559":1,"605":1,"606":1,"1353":1,"1729":1,"1952":1,"2183":1,"2292":1,"2297":1,"2305":2,"2418":2}}],["whole",{"0":{"420":1,"551":1},"2":{"116":1,"263":1,"457":1,"498":1,"501":1,"1264":1,"1303":1,"1441":1,"1451":1,"1573":1,"1821":1,"2226":1,"2274":1,"2279":1,"2311":1,"2729":1,"2740":1,"2756":1}}],["whatever",{"2":{"502":3,"573":1,"1272":1,"1338":1,"1351":1,"1815":1,"2036":1,"2130":1,"2139":1,"2429":1,"2457":1,"2480":1,"2669":1,"2728":2}}],["what",{"0":{"338":1,"341":1,"353":1,"546":1,"547":1,"562":1,"1257":1,"1260":1,"1261":1,"1264":1,"1265":1,"1267":1,"1268":1,"1284":1,"1565":1,"2313":1,"2321":1,"2322":1,"2323":1},"1":{"354":1,"355":1,"356":1},"2":{"50":1,"99":1,"119":2,"182":1,"228":1,"246":1,"251":1,"254":1,"303":1,"435":1,"446":1,"462":1,"474":2,"516":1,"527":1,"539":1,"540":1,"550":1,"556":1,"567":1,"574":2,"586":1,"602":1,"606":1,"616":1,"629":1,"661":1,"1258":1,"1283":1,"1287":1,"1304":1,"1316":1,"1317":1,"1334":1,"1340":2,"1341":2,"1357":1,"1359":1,"1397":1,"1450":1,"1451":1,"1515":1,"1579":1,"1670":2,"1675":1,"1678":1,"1725":3,"1821":1,"1830":1,"1936":1,"1946":3,"2041":1,"2126":1,"2152":1,"2160":1,"2161":1,"2162":1,"2169":1,"2171":1,"2255":1,"2268":1,"2270":1,"2275":1,"2282":1,"2297":1,"2299":1,"2311":3,"2318":1,"2319":1,"2321":2,"2324":1,"2342":2,"2348":1,"2405":1,"2425":1,"2454":1,"2455":1,"2468":1,"2476":1,"2478":1,"2480":1,"2552":1,"2553":1,"2563":1,"2566":2,"2568":1,"2577":1,"2602":1,"2615":1,"2686":1,"2727":2,"2746":1,"2752":1}}],["wheatfield",{"2":{"159":2}}],["wheel",{"2":{"112":1,"222":1,"507":1,"1801":8,"1803":12,"1804":12,"1805":1,"1807":1,"1808":3,"1932":2,"1951":1,"2033":2,"2372":8,"2690":1}}],["whereas",{"2":{"592":1,"635":2,"660":1,"1533":1,"2728":1}}],["wherever",{"2":{"496":1,"1528":1,"2686":1,"2719":1,"2721":1}}],["where",{"0":{"553":1,"1258":1},"2":{"94":1,"99":1,"134":1,"140":1,"191":1,"194":1,"199":1,"211":1,"231":1,"249":1,"266":1,"304":1,"374":4,"446":1,"458":1,"482":1,"484":1,"500":1,"502":2,"511":1,"526":1,"557":2,"574":2,"578":1,"684":1,"758":1,"787":1,"819":1,"851":1,"852":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1023":1,"1056":1,"1057":1,"1090":1,"1125":1,"1128":2,"1132":1,"1133":1,"1146":1,"1216":1,"1225":1,"1300":1,"1302":1,"1303":1,"1329":2,"1341":1,"1406":1,"1438":1,"1451":1,"1523":1,"1577":1,"1612":1,"1614":1,"1630":1,"1648":1,"1672":1,"1725":2,"1733":1,"1830":1,"1850":1,"1859":1,"1932":2,"1946":2,"1957":1,"2051":9,"2054":2,"2065":1,"2152":2,"2181":2,"2182":1,"2259":2,"2262":1,"2266":1,"2274":2,"2275":1,"2277":1,"2279":1,"2297":1,"2300":1,"2301":1,"2311":1,"2348":1,"2353":1,"2367":1,"2406":1,"2407":1,"2423":2,"2445":1,"2452":1,"2478":2,"2501":1,"2533":1,"2554":1,"2555":1,"2558":1,"2564":1,"2566":5,"2567":1,"2568":1,"2577":2,"2595":1,"2597":1,"2598":1,"2614":2,"2704":1,"2742":1,"2744":2,"2746":1,"2756":1,"2757":1}}],["whether",{"2":{"49":1,"214":1,"234":1,"354":1,"437":1,"481":1,"580":2,"592":1,"681":1,"693":1,"698":1,"1210":1,"1230":1,"1300":1,"1412":1,"1430":1,"1438":2,"1457":1,"1537":1,"1597":2,"1601":2,"1615":1,"1618":1,"1620":1,"1638":1,"1670":1,"1693":1,"1697":1,"1717":1,"1725":1,"1805":1,"1946":1,"2107":3,"2125":1,"2129":1,"2152":1,"2162":2,"2169":1,"2171":1,"2179":1,"2212":1,"2348":1,"2524":1,"2574":1,"2576":1,"2577":1,"2587":1,"2677":1,"2689":3}}],["whenver",{"2":{"1558":1}}],["whenever",{"2":{"263":1,"282":3,"341":2,"572":1,"584":1,"588":1,"592":1,"613":1,"690":1,"691":1,"1132":1,"1359":1,"1442":1,"1857":1,"1876":1,"1950":1,"2043":1,"2047":1,"2128":1,"2154":1,"2226":1,"2319":1,"2320":1,"2403":1,"2441":1,"2448":1,"2491":1,"2577":1,"2749":1}}],["when",{"0":{"339":1,"361":1,"1270":1,"1877":1},"1":{"340":1},"2":{"11":1,"28":1,"49":1,"50":1,"58":1,"65":2,"74":1,"92":2,"93":1,"94":1,"107":1,"111":1,"114":6,"133":1,"134":2,"149":1,"160":1,"176":2,"191":5,"195":1,"199":7,"211":3,"222":5,"230":1,"233":1,"234":2,"236":3,"240":1,"241":1,"246":1,"247":1,"249":4,"253":1,"263":1,"266":1,"270":1,"305":1,"312":1,"331":1,"337":1,"341":1,"342":1,"361":1,"364":1,"367":2,"393":2,"394":2,"416":2,"426":1,"431":1,"433":1,"435":1,"436":1,"440":1,"441":1,"447":2,"453":3,"457":2,"459":1,"465":1,"467":2,"468":2,"474":1,"477":1,"479":1,"481":1,"482":1,"496":1,"502":2,"505":1,"506":4,"510":2,"511":16,"513":2,"522":1,"526":1,"527":1,"529":1,"539":1,"541":1,"542":1,"556":1,"557":1,"559":1,"560":1,"565":1,"566":1,"568":1,"570":1,"571":1,"572":3,"578":1,"586":1,"589":2,"592":1,"606":1,"607":1,"609":2,"610":1,"615":1,"622":1,"623":1,"625":1,"627":1,"628":2,"639":1,"659":2,"681":1,"684":1,"698":1,"1122":1,"1133":1,"1176":1,"1214":1,"1225":1,"1238":1,"1239":2,"1241":1,"1250":2,"1252":2,"1253":1,"1254":1,"1265":2,"1267":1,"1272":1,"1284":1,"1288":2,"1290":1,"1299":1,"1303":1,"1325":2,"1326":1,"1329":4,"1332":4,"1335":4,"1336":1,"1337":1,"1338":1,"1339":2,"1340":2,"1349":1,"1353":1,"1355":1,"1357":1,"1359":6,"1368":1,"1376":1,"1377":1,"1381":2,"1397":1,"1398":13,"1399":17,"1410":1,"1411":2,"1412":1,"1425":1,"1430":2,"1432":1,"1441":2,"1446":4,"1448":1,"1457":1,"1458":1,"1459":1,"1463":1,"1471":1,"1494":1,"1495":1,"1496":1,"1499":1,"1501":1,"1503":1,"1506":1,"1507":3,"1508":1,"1510":1,"1517":1,"1518":2,"1519":1,"1527":2,"1530":1,"1553":1,"1554":1,"1556":3,"1557":1,"1562":1,"1564":2,"1566":2,"1573":4,"1576":1,"1577":1,"1579":1,"1582":6,"1626":1,"1628":1,"1631":1,"1633":1,"1655":1,"1656":4,"1659":1,"1663":1,"1665":1,"1666":1,"1668":1,"1670":1,"1671":4,"1673":1,"1674":2,"1675":2,"1680":2,"1686":2,"1689":1,"1690":1,"1715":1,"1716":2,"1720":1,"1730":1,"1802":1,"1803":1,"1805":2,"1806":1,"1808":1,"1812":1,"1817":2,"1821":1,"1822":2,"1826":1,"1828":1,"1836":1,"1842":1,"1851":1,"1852":1,"1854":1,"1855":2,"1857":1,"1859":2,"1864":4,"1865":4,"1873":1,"1874":1,"1876":1,"1877":1,"1878":1,"1879":4,"1880":1,"1912":1,"1915":1,"1925":1,"1932":1,"1938":2,"1940":1,"1941":1,"1942":2,"1948":10,"1954":1,"1959":1,"2031":1,"2034":10,"2035":1,"2037":1,"2038":1,"2042":5,"2044":1,"2045":2,"2063":2,"2074":1,"2078":1,"2108":2,"2110":14,"2111":1,"2112":17,"2113":4,"2114":1,"2125":1,"2126":2,"2127":1,"2129":1,"2131":7,"2132":1,"2137":1,"2143":4,"2146":1,"2152":2,"2156":4,"2157":1,"2160":1,"2161":10,"2162":4,"2169":4,"2170":4,"2171":1,"2177":1,"2179":3,"2180":6,"2182":2,"2192":1,"2194":1,"2226":6,"2231":1,"2238":1,"2250":1,"2252":1,"2262":5,"2267":1,"2270":1,"2272":1,"2273":3,"2276":1,"2279":2,"2300":1,"2302":2,"2304":1,"2305":1,"2308":1,"2311":6,"2320":1,"2326":1,"2347":1,"2348":1,"2354":1,"2355":2,"2364":2,"2367":3,"2374":44,"2376":10,"2377":10,"2382":14,"2383":4,"2393":2,"2398":1,"2402":1,"2405":1,"2410":48,"2411":1,"2414":1,"2417":2,"2423":1,"2425":1,"2440":1,"2445":1,"2454":1,"2460":1,"2469":1,"2476":3,"2477":1,"2478":1,"2491":6,"2498":2,"2509":1,"2512":2,"2522":1,"2524":1,"2539":1,"2554":1,"2560":1,"2563":1,"2566":3,"2568":2,"2573":1,"2575":4,"2576":4,"2577":1,"2584":2,"2596":1,"2616":2,"2633":1,"2641":1,"2642":1,"2680":1,"2688":1,"2689":1,"2694":2,"2695":1,"2697":1,"2701":1,"2702":1,"2716":1,"2719":1,"2720":1,"2721":1,"2728":3,"2729":4,"2735":2,"2736":2,"2737":1,"2743":2,"2745":1,"2748":2,"2757":1}}],["whistles",{"2":{"2566":1}}],["whitefacemountain",{"2":{"277":1}}],["whitefox",{"2":{"143":2,"236":1}}],["white",{"2":{"266":1,"433":1,"435":2,"530":1,"1217":5,"1332":1,"1826":1,"1953":2,"2051":1,"2058":3,"2596":4}}],["whitespace",{"2":{"211":4,"453":1,"454":1,"556":1,"616":1,"1440":1,"2407":1}}],["whilst",{"2":{"198":1,"402":1,"2549":1}}],["while",{"2":{"21":1,"37":1,"49":1,"73":1,"191":1,"194":3,"199":2,"203":1,"331":1,"346":1,"496":1,"505":1,"559":1,"568":1,"590":1,"606":1,"626":3,"654":1,"663":1,"1265":1,"1270":1,"1273":1,"1284":2,"1303":1,"1319":1,"1325":3,"1329":2,"1331":1,"1353":1,"1356":1,"1364":1,"1383":1,"1403":1,"1441":1,"1442":1,"1446":1,"1463":1,"1498":1,"1499":2,"1503":2,"1506":2,"1518":1,"1553":1,"1556":1,"1570":1,"1573":1,"1594":1,"1655":1,"1670":1,"1673":3,"1674":1,"1677":1,"1803":1,"1804":1,"1805":1,"1806":1,"1807":1,"1822":7,"1827":1,"1859":1,"1861":1,"1865":1,"1869":1,"1871":1,"1878":1,"1905":3,"1907":4,"1929":1,"1937":1,"1953":1,"2058":1,"2063":1,"2066":1,"2070":1,"2105":1,"2112":1,"2125":1,"2128":1,"2143":5,"2148":2,"2152":1,"2156":3,"2169":1,"2171":1,"2236":1,"2237":1,"2249":2,"2255":1,"2262":2,"2263":1,"2279":1,"2284":1,"2293":1,"2305":2,"2383":3,"2400":1,"2407":2,"2408":1,"2419":1,"2424":1,"2425":1,"2450":3,"2515":1,"2574":1,"2584":1,"2600":1,"2640":1,"2651":1,"2654":1,"2659":1,"2671":1,"2696":1,"2726":1,"2729":3,"2738":1,"2743":1,"2745":1,"2754":1}}],["whichever",{"2":{"1405":1,"1922":1,"2152":1}}],["which",{"0":{"1252":1,"1506":1},"2":{"0":1,"9":1,"19":1,"27":1,"30":1,"33":1,"39":1,"45":1,"49":3,"50":1,"52":1,"69":1,"108":1,"118":1,"119":1,"134":1,"149":1,"154":1,"158":1,"173":1,"191":1,"194":1,"201":1,"209":1,"215":2,"233":1,"236":1,"246":1,"265":1,"313":1,"317":2,"327":1,"331":1,"334":2,"337":1,"341":1,"358":1,"401":1,"402":1,"415":1,"416":1,"430":1,"433":1,"453":1,"467":1,"470":1,"474":1,"487":1,"496":3,"503":1,"504":2,"505":2,"510":1,"513":1,"529":3,"540":1,"556":1,"560":1,"574":1,"586":1,"589":1,"615":1,"623":1,"626":1,"635":3,"654":1,"655":1,"660":3,"661":2,"688":1,"695":1,"700":1,"703":1,"726":1,"1122":1,"1129":1,"1136":1,"1137":1,"1138":1,"1175":1,"1177":2,"1196":1,"1198":1,"1215":1,"1216":1,"1217":1,"1220":1,"1243":1,"1253":1,"1270":1,"1271":2,"1279":1,"1284":1,"1287":3,"1290":1,"1300":1,"1301":1,"1303":1,"1312":1,"1325":1,"1326":2,"1336":1,"1349":1,"1357":1,"1359":2,"1361":3,"1392":1,"1393":1,"1394":1,"1396":1,"1397":1,"1400":2,"1404":3,"1411":1,"1414":1,"1416":1,"1417":1,"1419":1,"1421":1,"1423":1,"1428":1,"1432":1,"1436":1,"1448":1,"1459":2,"1461":1,"1495":2,"1499":1,"1501":1,"1506":2,"1516":1,"1523":1,"1527":1,"1531":1,"1548":1,"1549":1,"1551":2,"1556":1,"1557":1,"1559":1,"1562":2,"1572":1,"1575":1,"1630":1,"1657":1,"1659":1,"1660":1,"1661":1,"1662":1,"1670":3,"1673":1,"1675":1,"1676":1,"1677":1,"1678":1,"1722":1,"1803":2,"1804":3,"1807":1,"1815":1,"1816":1,"1821":3,"1822":1,"1824":2,"1825":2,"1838":1,"1841":1,"1842":2,"1855":3,"1864":1,"1912":1,"1922":1,"1923":1,"1929":1,"1932":1,"1941":1,"1943":1,"2040":1,"2041":1,"2063":1,"2078":1,"2105":1,"2123":2,"2131":2,"2139":1,"2140":1,"2155":1,"2161":4,"2169":1,"2171":2,"2177":1,"2178":1,"2181":2,"2226":1,"2235":1,"2236":1,"2238":1,"2252":3,"2254":1,"2255":1,"2262":2,"2263":1,"2272":3,"2276":2,"2293":1,"2299":1,"2300":1,"2302":1,"2303":2,"2311":3,"2321":1,"2344":1,"2349":2,"2350":1,"2367":1,"2402":1,"2406":1,"2407":1,"2411":2,"2443":1,"2448":1,"2454":1,"2461":1,"2468":1,"2473":1,"2475":3,"2479":3,"2480":2,"2485":1,"2513":1,"2517":1,"2523":1,"2529":1,"2534":2,"2535":1,"2539":3,"2541":1,"2542":1,"2543":1,"2546":1,"2548":1,"2557":1,"2566":1,"2567":1,"2571":2,"2573":1,"2576":2,"2577":4,"2584":1,"2587":1,"2596":2,"2614":4,"2615":4,"2633":2,"2643":1,"2661":1,"2664":1,"2677":1,"2686":1,"2688":2,"2689":1,"2694":2,"2695":2,"2697":1,"2699":1,"2701":1,"2703":1,"2705":1,"2710":2,"2718":1,"2728":1,"2729":2,"2737":1,"2738":1,"2740":1,"2743":1,"2744":1,"2745":1,"2746":1,"2749":1,"2750":1,"2752":1,"2757":3}}],["waz",{"2":{"2147":1,"2148":1}}],["warranty",{"2":{"1380":2,"2570":2}}],["warn",{"2":{"114":1,"160":1,"610":1,"2353":1}}],["warnings",{"0":{"2308":1,"2529":1},"2":{"95":1,"160":1,"170":1,"191":1,"211":1,"236":2,"352":1,"2262":1,"2308":2,"2721":1}}],["warning",{"2":{"23":1,"50":1,"107":1,"114":1,"134":1,"149":1,"153":1,"154":1,"160":1,"176":2,"182":1,"199":3,"228":1,"236":4,"266":1,"290":3,"317":1,"433":1,"537":1,"538":1,"540":1,"541":1,"574":1,"610":1,"619":2,"626":1,"628":1,"683":1,"685":1,"688":1,"689":1,"690":1,"694":1,"1122":1,"1126":1,"1353":1,"1376":2,"1398":1,"1448":1,"1495":1,"1527":1,"1558":1,"1560":1,"1677":1,"1714":1,"1820":1,"1822":2,"1850":1,"1851":2,"1852":1,"1921":1,"1948":1,"2034":1,"2037":1,"2044":1,"2102":1,"2114":2,"2118":1,"2129":1,"2130":1,"2146":1,"2150":1,"2161":1,"2175":1,"2183":1,"2254":1,"2330":1,"2332":1,"2334":1,"2335":1,"2339":1,"2348":2,"2423":1,"2427":1,"2436":1,"2437":1,"2441":1,"2442":2,"2445":1,"2454":2,"2460":1,"2475":1,"2490":1,"2513":1,"2532":1,"2565":1,"2572":1,"2573":1,"2576":4,"2577":3,"2581":1,"2614":2,"2718":1,"2737":1,"2738":1}}],["watch",{"2":{"1287":1,"2040":1,"2427":1,"2750":1}}],["watchdog",{"2":{"191":1,"222":2,"511":3,"2131":5,"2697":2}}],["waffling60",{"2":{"236":1}}],["waffling80",{"2":{"211":1}}],["waveshare",{"2":{"2576":3}}],["wavetable",{"2":{"1393":1}}],["waveforms",{"2":{"1578":1}}],["waveform",{"0":{"1578":1},"2":{"249":1,"1393":5,"1401":2,"1572":2,"1578":2}}],["wave",{"2":{"222":1,"266":1,"661":1,"1393":3,"1576":1,"1728":8,"1949":5,"2711":1}}],["walk",{"2":{"2255":1,"2404":1,"2459":1,"2472":1,"2568":1}}],["walter",{"2":{"191":1}}],["wallaby",{"2":{"143":2}}],["wako",{"2":{"1265":1,"2257":1}}],["waka60",{"2":{"266":1}}],["wakizashi40",{"2":{"211":1}}],["wakizashi",{"2":{"149":1}}],["wakes",{"2":{"589":1}}],["wakeup",{"0":{"590":1},"2":{"112":1,"114":1,"176":1,"199":2,"222":3,"236":1,"502":2,"515":1,"588":2,"589":1,"590":2,"591":2,"2577":1,"2699":2}}],["wake",{"0":{"589":1,"591":1,"1292":1,"1298":1},"1":{"590":1,"591":1},"2":{"62":1,"73":1,"231":1,"502":1,"515":1,"1273":1,"1292":2,"2355":3,"2393":3}}],["wanted",{"2":{"1384":1,"1385":1,"1412":1,"2174":1}}],["wanten",{"2":{"143":2}}],["wanting",{"2":{"1181":1,"2169":1,"2276":1,"2545":1,"2601":1}}],["wants",{"2":{"222":1,"1431":1,"2418":1,"2474":1,"2748":1}}],["want",{"0":{"551":1,"1263":1,"1264":1},"1":{"1264":1},"2":{"125":1,"173":1,"185":1,"194":1,"232":1,"341":1,"376":1,"415":1,"451":1,"452":1,"457":1,"474":1,"479":1,"481":1,"502":3,"505":3,"511":2,"537":1,"538":1,"539":1,"541":1,"550":1,"554":1,"567":1,"571":1,"574":5,"581":1,"586":1,"605":1,"609":1,"657":1,"658":1,"698":1,"1136":1,"1137":1,"1242":1,"1287":1,"1300":3,"1316":1,"1320":1,"1331":2,"1332":7,"1333":1,"1338":2,"1339":1,"1340":1,"1351":1,"1353":1,"1359":2,"1360":1,"1361":1,"1362":1,"1364":1,"1368":1,"1380":1,"1381":2,"1383":2,"1384":1,"1385":5,"1396":1,"1405":2,"1411":1,"1438":1,"1442":1,"1448":1,"1464":2,"1495":2,"1518":4,"1524":1,"1529":1,"1555":1,"1655":1,"1677":1,"1685":1,"1723":1,"1725":2,"1729":1,"1730":1,"1733":1,"1791":1,"1803":1,"1805":1,"1815":1,"1822":1,"1826":1,"1830":1,"1842":1,"1876":1,"1912":1,"1944":1,"1946":2,"1952":1,"1954":1,"1957":1,"1959":1,"1960":1,"2036":1,"2042":1,"2044":2,"2059":1,"2060":1,"2064":1,"2104":1,"2113":1,"2117":1,"2133":1,"2139":1,"2143":1,"2145":2,"2149":1,"2152":1,"2153":1,"2161":4,"2162":1,"2169":4,"2183":1,"2228":2,"2252":1,"2255":1,"2262":2,"2263":1,"2264":1,"2268":1,"2270":1,"2272":1,"2274":1,"2275":2,"2276":1,"2280":1,"2305":1,"2306":1,"2325":1,"2327":1,"2341":1,"2402":1,"2404":1,"2422":1,"2444":1,"2445":1,"2446":1,"2449":1,"2452":1,"2468":4,"2473":1,"2474":1,"2475":1,"2480":1,"2490":2,"2504":1,"2510":1,"2513":1,"2529":1,"2533":1,"2541":1,"2569":1,"2574":1,"2603":1,"2606":2,"2607":2,"2608":1,"2611":1,"2702":1,"2706":2,"2728":1,"2738":1,"2750":1,"2753":1,"2757":2}}],["waits",{"2":{"515":1,"599":1,"1326":1,"1368":2,"1622":1,"1624":1,"2241":1,"2729":1}}],["waiting",{"2":{"176":1,"191":1,"230":1,"315":1,"511":1,"523":1,"1252":1,"1254":2,"1368":1,"1554":1,"2131":1,"2132":1,"2442":1}}],["wait",{"2":{"92":1,"94":2,"112":1,"113":1,"114":4,"149":1,"176":3,"222":2,"263":1,"266":1,"336":1,"515":2,"554":1,"588":1,"598":1,"707":2,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"727":1,"1177":1,"1326":1,"1375":1,"1497":1,"1730":1,"1910":1,"1954":1,"2038":1,"2040":6,"2075":1,"2084":1,"2088":1,"2161":1,"2167":4,"2169":1,"2179":1,"2230":1,"2233":2,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":4,"2247":4,"2249":4,"2450":1,"2564":1,"2574":1,"2689":1,"2697":2,"2699":3,"2737":1}}],["waaffle",{"2":{"86":4}}],["wasn",{"2":{"1518":1,"2730":1}}],["wasting",{"2":{"430":1}}],["wasdat",{"2":{"57":4,"160":1}}],["was",{"0":{"352":1},"1":{"353":1,"354":1,"355":1,"356":1},"2":{"6":1,"8":1,"10":1,"11":1,"113":1,"125":1,"174":1,"179":1,"185":1,"189":2,"194":1,"214":1,"215":1,"243":1,"245":1,"251":1,"255":1,"263":1,"271":1,"285":1,"324":1,"327":1,"352":1,"361":2,"472":1,"505":1,"529":1,"545":1,"556":2,"606":1,"663":1,"1133":1,"1265":1,"1272":2,"1332":1,"1438":1,"1448":1,"1523":2,"1670":1,"1673":1,"1675":1,"1696":1,"1821":2,"1822":7,"1830":1,"1877":1,"1929":1,"1933":4,"2134":2,"2143":4,"2147":1,"2162":2,"2171":1,"2218":1,"2220":1,"2274":1,"2309":1,"2311":1,"2406":1,"2437":1,"2468":1,"2477":4,"2480":1,"2524":1,"2545":1,"2575":1,"2623":1}}],["ways",{"2":{"337":1,"432":1,"437":1,"438":1,"439":1,"449":1,"509":1,"540":1,"557":1,"560":1,"624":1,"1270":1,"1325":2,"1331":1,"1335":1,"1336":1,"1340":1,"1353":1,"1442":1,"1499":1,"1714":1,"1867":1,"2123":1,"2267":2,"2280":1,"2305":1,"2317":1,"2403":1,"2450":1,"2472":2}}],["way",{"2":{"0":1,"9":1,"19":1,"39":1,"50":1,"52":1,"120":1,"124":1,"154":2,"194":2,"222":1,"254":1,"337":1,"354":1,"377":1,"433":1,"436":2,"483":1,"534":1,"560":2,"584":1,"636":1,"685":1,"1212":1,"1234":1,"1235":1,"1331":1,"1335":1,"1337":1,"1346":1,"1377":1,"1383":1,"1385":2,"1391":1,"1404":1,"1447":1,"1451":2,"1454":1,"1495":1,"1528":1,"1655":1,"1675":1,"1677":1,"1684":1,"1725":1,"1803":1,"1851":1,"1855":1,"1859":1,"1922":1,"1935":1,"1946":1,"2031":1,"2130":1,"2150":1,"2183":1,"2226":1,"2238":1,"2270":1,"2272":1,"2311":3,"2317":1,"2344":1,"2349":1,"2403":1,"2406":1,"2445":1,"2451":1,"2474":1,"2477":2,"2480":1,"2502":1,"2529":1,"2539":1,"2564":1,"2569":1,"2614":1,"2615":1,"2689":1,"2702":1,"2719":1,"2738":1,"2753":1,"2756":1}}],["wikipedia",{"2":{"1300":1,"1803":1,"2311":1}}],["wiki",{"2":{"515":1,"1902":1,"2151":1}}],["wipe",{"2":{"2610":1}}],["wiper",{"2":{"1630":1}}],["wip",{"2":{"277":1}}],["wiping",{"0":{"2610":1},"2":{"191":1,"2272":1}}],["witf",{"2":{"211":1}}],["withe",{"2":{"1138":1}}],["withing",{"2":{"1573":1}}],["within",{"2":{"31":1,"34":1,"50":1,"67":1,"75":1,"86":1,"94":1,"102":1,"122":1,"124":1,"126":1,"132":1,"133":1,"134":1,"141":2,"143":1,"149":2,"159":1,"168":1,"181":1,"190":1,"191":1,"195":1,"197":1,"199":1,"201":1,"222":1,"231":1,"236":2,"254":1,"266":1,"317":1,"337":1,"360":1,"373":1,"432":1,"435":1,"460":1,"486":1,"511":1,"580":2,"610":1,"611":1,"684":1,"685":1,"690":1,"1250":1,"1336":1,"1344":1,"1364":1,"1397":1,"1400":1,"1411":1,"1441":2,"1496":1,"1503":1,"1508":1,"1518":1,"1520":1,"1521":1,"1527":1,"1537":1,"1729":1,"1743":1,"1745":1,"1827":1,"1838":1,"1940":1,"1948":1,"1952":1,"1970":1,"1972":1,"2034":1,"2115":1,"2120":1,"2131":1,"2162":1,"2169":1,"2170":1,"2233":1,"2258":1,"2259":2,"2263":1,"2302":1,"2326":1,"2355":1,"2393":1,"2403":1,"2428":1,"2445":1,"2502":1,"2550":2,"2559":1,"2566":2,"2571":2,"2592":1,"2595":1,"2701":1,"2719":1,"2720":3,"2725":1,"2735":3,"2736":2,"2737":1,"2744":1,"2745":1,"2749":1}}],["without",{"0":{"1960":1},"2":{"23":1,"49":2,"70":1,"80":1,"112":1,"125":1,"152":2,"164":1,"173":1,"176":1,"185":1,"194":1,"228":1,"273":2,"276":1,"290":1,"352":1,"370":1,"388":1,"414":1,"430":1,"470":1,"481":1,"500":1,"511":1,"515":1,"550":1,"560":1,"582":3,"585":1,"698":1,"727":1,"1289":1,"1300":4,"1337":1,"1380":2,"1385":1,"1398":1,"1416":1,"1431":4,"1442":1,"1457":1,"1463":1,"1506":1,"1528":1,"1555":1,"1666":1,"1683":2,"1729":1,"1806":1,"1848":1,"1851":1,"1864":1,"1881":1,"1935":1,"1952":1,"1960":1,"2041":1,"2065":1,"2069":2,"2079":1,"2125":1,"2128":1,"2131":1,"2132":1,"2144":1,"2146":1,"2149":1,"2154":1,"2183":2,"2237":1,"2250":1,"2252":1,"2262":2,"2263":1,"2305":1,"2311":1,"2322":1,"2348":1,"2441":1,"2480":1,"2490":1,"2516":1,"2530":1,"2566":1,"2570":2,"2571":1,"2577":4,"2605":1,"2620":1,"2726":1,"2738":3,"2744":1,"2757":1}}],["with",{"0":{"1":1,"27":1,"454":1,"625":1,"1247":1,"1248":1,"1249":1,"1264":1,"1281":1,"1337":1,"1346":1,"1660":1,"1661":1,"1662":1,"1809":1,"2083":1,"2087":1,"2145":1,"2146":1,"2152":1,"2255":1,"2428":1,"2451":1,"2471":1,"2513":1},"1":{"626":1,"627":1,"628":1,"629":1,"1338":1,"1339":1,"1340":1,"1347":1,"1348":1,"1349":1,"1350":1,"1351":1,"1352":1,"2084":1,"2088":1,"2147":1,"2148":1,"2149":1,"2429":1,"2430":1,"2431":1,"2432":1,"2433":1,"2434":1,"2435":1,"2436":1,"2437":1,"2438":1,"2439":1,"2440":1,"2452":1,"2453":1,"2472":1},"2":{"1":1,"5":1,"6":2,"7":2,"8":1,"11":1,"25":1,"27":1,"30":2,"31":5,"33":2,"34":2,"36":1,"49":3,"50":1,"60":1,"69":1,"72":1,"77":1,"83":1,"84":1,"86":1,"92":1,"93":1,"98":4,"100":1,"107":1,"111":1,"114":11,"119":2,"123":1,"124":1,"126":1,"131":2,"134":6,"138":1,"149":7,"153":1,"154":1,"156":1,"157":1,"160":4,"163":2,"166":1,"167":1,"172":1,"173":3,"175":2,"176":9,"182":5,"186":1,"189":1,"190":1,"191":6,"194":2,"195":1,"196":1,"198":1,"199":7,"201":1,"211":9,"218":1,"221":1,"222":5,"230":2,"231":2,"236":1,"240":3,"241":1,"243":1,"244":1,"249":8,"253":1,"254":1,"263":1,"264":1,"265":1,"266":4,"268":1,"270":1,"273":3,"274":1,"276":1,"277":1,"282":1,"291":1,"292":2,"294":1,"304":1,"317":2,"322":1,"324":1,"331":2,"340":1,"341":4,"347":1,"349":1,"350":1,"352":1,"357":1,"360":1,"361":2,"363":1,"366":1,"367":1,"370":7,"371":2,"374":1,"375":1,"377":1,"380":2,"389":1,"390":1,"391":1,"400":3,"416":3,"428":1,"430":1,"431":1,"435":2,"437":1,"453":2,"455":3,"462":2,"468":2,"472":1,"473":1,"477":1,"479":2,"481":2,"483":2,"485":1,"486":3,"488":1,"489":1,"493":1,"495":1,"502":7,"505":1,"508":1,"509":3,"510":1,"511":2,"514":1,"515":2,"522":2,"541":2,"545":1,"546":1,"551":1,"552":2,"554":6,"555":2,"556":4,"559":2,"560":3,"562":1,"563":1,"568":1,"584":1,"585":1,"587":1,"606":1,"610":1,"611":1,"613":2,"616":2,"621":1,"624":1,"625":2,"626":2,"627":2,"628":2,"629":2,"633":1,"635":1,"643":1,"654":1,"656":4,"657":1,"659":1,"661":2,"662":2,"665":1,"689":3,"692":1,"696":3,"714":1,"717":1,"720":1,"723":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1121":1,"1122":1,"1126":1,"1129":4,"1132":1,"1133":2,"1134":2,"1136":1,"1139":1,"1144":1,"1176":1,"1201":1,"1213":1,"1215":2,"1217":2,"1234":1,"1235":1,"1238":4,"1239":2,"1241":1,"1242":2,"1254":3,"1255":2,"1257":1,"1258":1,"1261":1,"1264":1,"1265":2,"1270":2,"1281":1,"1284":1,"1287":1,"1288":1,"1290":1,"1293":1,"1294":1,"1299":2,"1300":8,"1302":1,"1303":2,"1313":1,"1319":1,"1323":1,"1324":1,"1325":2,"1326":1,"1328":1,"1329":2,"1330":1,"1331":1,"1332":1,"1335":4,"1337":1,"1338":2,"1344":1,"1346":2,"1348":1,"1351":1,"1352":1,"1359":1,"1361":1,"1362":1,"1363":1,"1368":1,"1369":1,"1370":1,"1375":1,"1376":3,"1377":1,"1378":3,"1380":3,"1385":3,"1387":1,"1388":2,"1390":2,"1391":2,"1392":1,"1393":3,"1395":2,"1397":1,"1398":1,"1399":2,"1403":3,"1411":2,"1412":1,"1413":1,"1416":3,"1431":2,"1435":4,"1436":3,"1438":1,"1440":2,"1445":1,"1448":1,"1451":14,"1452":2,"1466":1,"1467":2,"1491":2,"1492":3,"1495":1,"1498":1,"1500":2,"1501":1,"1503":3,"1506":1,"1508":2,"1509":1,"1510":1,"1511":2,"1515":2,"1516":3,"1518":2,"1521":1,"1524":1,"1525":1,"1527":1,"1530":6,"1531":1,"1537":1,"1548":1,"1552":1,"1554":1,"1556":1,"1557":2,"1558":1,"1559":1,"1563":2,"1564":1,"1570":1,"1573":1,"1576":1,"1578":1,"1580":1,"1581":1,"1582":2,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"1589":1,"1631":3,"1632":1,"1633":1,"1634":1,"1655":2,"1659":1,"1665":5,"1666":1,"1668":2,"1670":2,"1671":1,"1675":2,"1676":3,"1677":1,"1683":2,"1719":1,"1722":3,"1725":1,"1729":2,"1731":1,"1733":1,"1787":1,"1802":1,"1804":1,"1808":2,"1809":1,"1813":2,"1814":2,"1815":1,"1817":1,"1820":7,"1821":2,"1822":2,"1830":1,"1836":1,"1837":1,"1838":1,"1842":2,"1846":1,"1847":2,"1849":1,"1851":3,"1852":1,"1859":2,"1861":1,"1863":1,"1864":3,"1867":1,"1872":1,"1873":1,"1908":1,"1912":1,"1915":1,"1918":1,"1921":2,"1923":3,"1929":2,"1932":3,"1933":1,"1935":1,"1938":1,"1939":1,"1940":3,"1943":1,"1946":1,"1948":2,"1949":2,"1951":2,"1952":2,"1955":1,"1957":1,"1958":2,"1960":1,"2031":2,"2032":1,"2034":1,"2040":1,"2042":4,"2045":1,"2059":1,"2062":1,"2063":1,"2072":2,"2075":2,"2081":1,"2083":1,"2085":1,"2087":2,"2100":2,"2101":2,"2102":1,"2104":1,"2109":7,"2111":2,"2112":8,"2113":3,"2117":1,"2120":1,"2125":1,"2126":9,"2127":2,"2128":1,"2130":4,"2131":4,"2132":1,"2133":1,"2139":1,"2142":1,"2143":1,"2144":2,"2145":1,"2146":1,"2150":2,"2153":1,"2160":1,"2161":5,"2162":1,"2168":2,"2169":3,"2171":6,"2176":1,"2178":1,"2179":3,"2182":3,"2183":2,"2229":1,"2230":2,"2231":2,"2232":1,"2233":3,"2234":2,"2235":1,"2236":2,"2237":1,"2238":3,"2240":3,"2241":1,"2242":2,"2243":1,"2244":1,"2245":1,"2247":1,"2249":3,"2252":1,"2255":5,"2256":4,"2257":1,"2262":3,"2263":4,"2267":1,"2268":2,"2269":1,"2270":4,"2272":2,"2273":1,"2276":1,"2277":1,"2279":2,"2290":1,"2294":1,"2295":1,"2301":2,"2302":1,"2303":1,"2310":1,"2311":1,"2313":1,"2320":1,"2322":1,"2324":1,"2326":1,"2327":1,"2328":1,"2331":1,"2335":2,"2341":2,"2344":1,"2349":1,"2350":1,"2351":2,"2367":1,"2385":1,"2396":1,"2397":1,"2401":1,"2402":2,"2404":1,"2406":1,"2407":2,"2410":1,"2413":2,"2414":1,"2415":1,"2420":1,"2421":3,"2422":1,"2425":1,"2427":2,"2428":4,"2429":1,"2430":1,"2431":1,"2432":1,"2435":1,"2437":5,"2438":2,"2441":1,"2443":1,"2451":1,"2452":1,"2455":2,"2457":3,"2468":2,"2469":2,"2473":1,"2475":4,"2476":2,"2477":5,"2479":1,"2480":1,"2490":1,"2491":1,"2492":1,"2494":1,"2498":1,"2501":2,"2508":1,"2510":1,"2513":3,"2517":1,"2518":3,"2519":1,"2521":1,"2523":1,"2524":1,"2526":1,"2529":1,"2530":2,"2544":4,"2546":2,"2548":1,"2549":1,"2550":1,"2552":1,"2553":3,"2557":1,"2563":2,"2564":6,"2565":1,"2566":6,"2567":1,"2568":1,"2570":1,"2573":1,"2575":1,"2576":22,"2577":12,"2578":3,"2581":2,"2584":1,"2587":1,"2595":1,"2596":1,"2598":1,"2599":1,"2600":3,"2610":1,"2615":1,"2616":1,"2619":1,"2634":1,"2637":1,"2647":1,"2648":1,"2655":1,"2670":2,"2671":2,"2674":1,"2686":1,"2688":1,"2695":1,"2701":1,"2702":1,"2706":2,"2709":3,"2712":1,"2713":1,"2714":1,"2719":1,"2720":1,"2722":1,"2725":1,"2726":1,"2728":5,"2730":1,"2735":1,"2736":1,"2737":2,"2738":2,"2740":1,"2742":1,"2743":1,"2746":3,"2747":1,"2754":1,"2755":3,"2757":3}}],["wild",{"2":{"2160":1}}],["wildcard",{"2":{"411":1}}],["wildcards",{"2":{"374":1}}],["wilba",{"2":{"191":1,"199":1,"211":23,"2566":3}}],["willing",{"2":{"2569":1}}],["willoucom",{"2":{"222":1}}],["will",{"0":{"341":1,"2720":1,"2721":1},"2":{"0":1,"5":1,"7":1,"9":1,"10":1,"14":1,"19":1,"21":1,"22":1,"23":3,"39":1,"45":1,"49":1,"52":1,"70":1,"88":3,"89":1,"90":3,"103":1,"104":3,"105":2,"107":1,"110":2,"120":1,"126":1,"127":3,"132":3,"152":1,"153":1,"156":1,"170":3,"182":2,"195":2,"198":1,"201":1,"203":2,"206":1,"209":3,"213":3,"218":1,"220":1,"228":1,"230":1,"240":2,"255":1,"256":1,"262":1,"263":2,"265":3,"272":1,"273":1,"275":1,"276":1,"291":1,"303":1,"316":1,"322":1,"331":3,"334":2,"336":1,"337":2,"341":1,"345":1,"350":5,"355":1,"358":2,"364":1,"365":1,"366":1,"370":2,"371":1,"373":1,"377":1,"378":1,"381":1,"383":1,"385":2,"386":1,"387":1,"405":1,"415":1,"424":1,"429":2,"430":4,"431":1,"433":1,"435":2,"441":1,"446":2,"447":1,"448":1,"450":2,"452":1,"454":3,"468":2,"474":2,"478":1,"487":1,"496":1,"497":1,"501":1,"502":1,"503":1,"504":2,"506":2,"512":1,"515":2,"519":1,"522":2,"525":1,"526":1,"527":1,"530":1,"533":1,"534":1,"537":1,"538":1,"540":1,"541":2,"542":1,"554":2,"556":1,"560":2,"562":1,"567":1,"568":1,"570":1,"571":3,"574":1,"580":4,"584":1,"586":1,"588":1,"590":2,"592":3,"593":1,"594":1,"597":1,"598":3,"599":1,"600":1,"606":1,"607":1,"613":1,"615":2,"616":2,"617":1,"625":1,"626":2,"628":2,"639":3,"641":2,"661":1,"663":1,"681":4,"684":1,"685":1,"689":3,"692":1,"701":3,"726":1,"727":1,"1132":1,"1133":1,"1138":2,"1181":1,"1194":1,"1205":1,"1210":1,"1217":1,"1221":1,"1227":1,"1235":1,"1238":1,"1242":1,"1243":1,"1245":1,"1252":1,"1254":2,"1258":1,"1269":1,"1270":4,"1287":2,"1288":1,"1289":1,"1290":1,"1299":2,"1302":1,"1312":2,"1325":4,"1326":2,"1328":1,"1332":6,"1335":2,"1336":2,"1338":2,"1340":3,"1344":1,"1346":1,"1353":1,"1359":1,"1361":1,"1367":1,"1371":1,"1372":1,"1373":1,"1375":5,"1376":1,"1377":2,"1378":1,"1379":2,"1380":1,"1383":1,"1385":7,"1396":1,"1398":2,"1403":2,"1404":2,"1405":2,"1406":4,"1411":2,"1412":3,"1414":1,"1416":4,"1431":5,"1433":1,"1435":1,"1439":1,"1440":3,"1441":1,"1445":2,"1446":2,"1448":2,"1457":1,"1459":1,"1495":2,"1499":2,"1508":1,"1509":1,"1510":1,"1511":1,"1515":1,"1525":5,"1527":1,"1533":1,"1548":1,"1553":1,"1558":2,"1559":1,"1560":3,"1562":1,"1563":1,"1564":2,"1565":3,"1567":1,"1568":1,"1570":1,"1572":1,"1573":4,"1577":1,"1579":4,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"1591":1,"1605":1,"1621":2,"1651":2,"1654":1,"1665":7,"1670":5,"1671":3,"1673":2,"1674":1,"1675":3,"1677":3,"1684":1,"1685":1,"1686":2,"1714":1,"1716":3,"1718":1,"1719":1,"1730":2,"1743":1,"1745":1,"1787":2,"1791":1,"1794":1,"1803":3,"1804":3,"1808":2,"1815":2,"1817":1,"1821":1,"1822":2,"1825":1,"1842":2,"1845":1,"1850":1,"1851":3,"1852":1,"1854":1,"1855":3,"1859":3,"1861":1,"1863":2,"1864":3,"1865":3,"1866":2,"1871":1,"1873":2,"1877":1,"1879":4,"1910":1,"1912":4,"1918":1,"1921":1,"1938":1,"1940":1,"1948":2,"1950":1,"1951":3,"1954":2,"1958":1,"1959":1,"1960":1,"1970":1,"1972":1,"2034":1,"2035":1,"2041":1,"2042":4,"2044":3,"2061":1,"2062":1,"2063":2,"2066":1,"2067":1,"2072":1,"2074":1,"2075":1,"2102":1,"2112":1,"2114":1,"2117":2,"2121":1,"2124":1,"2125":3,"2126":2,"2128":2,"2129":1,"2130":1,"2131":4,"2133":1,"2139":2,"2141":1,"2143":2,"2146":2,"2149":1,"2150":1,"2152":3,"2153":2,"2156":1,"2161":6,"2169":3,"2171":1,"2175":1,"2177":1,"2181":4,"2182":3,"2183":3,"2199":1,"2225":1,"2226":5,"2229":3,"2230":2,"2231":1,"2234":1,"2237":1,"2238":2,"2244":1,"2250":1,"2252":3,"2255":1,"2260":1,"2261":1,"2262":6,"2263":7,"2264":1,"2266":1,"2267":1,"2268":3,"2271":1,"2272":3,"2273":7,"2274":1,"2276":1,"2279":1,"2280":1,"2293":1,"2295":2,"2299":1,"2301":2,"2302":1,"2303":1,"2305":2,"2308":1,"2311":5,"2318":1,"2322":2,"2327":1,"2328":1,"2329":1,"2333":1,"2335":1,"2342":2,"2346":1,"2347":1,"2351":3,"2352":1,"2355":1,"2398":1,"2404":1,"2405":1,"2408":2,"2411":2,"2413":1,"2418":1,"2420":1,"2423":1,"2425":2,"2427":2,"2428":2,"2431":2,"2432":1,"2433":1,"2435":1,"2436":1,"2437":1,"2438":1,"2439":2,"2440":2,"2441":2,"2442":2,"2443":1,"2446":1,"2447":2,"2448":2,"2450":3,"2451":1,"2452":1,"2453":1,"2454":2,"2455":2,"2457":1,"2459":2,"2460":1,"2461":1,"2462":2,"2463":1,"2464":1,"2468":5,"2472":1,"2473":1,"2475":3,"2477":1,"2480":1,"2481":1,"2490":5,"2491":1,"2495":1,"2496":2,"2497":1,"2498":2,"2501":1,"2502":2,"2504":1,"2506":1,"2508":2,"2513":5,"2522":1,"2529":1,"2543":1,"2546":1,"2548":4,"2550":1,"2552":1,"2553":1,"2556":3,"2563":1,"2564":5,"2565":2,"2566":6,"2567":3,"2568":1,"2569":1,"2570":1,"2571":2,"2573":2,"2574":4,"2575":1,"2576":1,"2577":7,"2581":1,"2601":1,"2605":3,"2607":1,"2615":4,"2633":1,"2662":1,"2672":2,"2686":1,"2688":1,"2695":1,"2705":6,"2709":1,"2716":1,"2719":2,"2720":4,"2721":2,"2723":1,"2728":3,"2729":1,"2734":2,"2735":6,"2736":3,"2737":7,"2738":7,"2743":4,"2744":2,"2745":1,"2746":1,"2748":1,"2749":1,"2753":1,"2754":2,"2757":3}}],["wise",{"2":{"691":1,"703":1,"1177":1,"1198":1}}],["wisdom",{"2":{"179":1}}],["wished",{"2":{"530":1}}],["wishing",{"2":{"427":1}}],["wish",{"2":{"1":1,"152":1,"206":1,"231":1,"232":1,"265":1,"401":1,"500":1,"1380":1,"1560":1,"1666":1,"1922":1,"1948":1,"2034":1,"2120":1,"2149":1,"2261":2,"2441":1,"2442":2,"2443":1,"2451":1,"2524":1,"2525":1,"2542":1}}],["widht",{"2":{"1440":2}}],["width",{"2":{"111":1,"114":1,"617":1,"689":1,"690":1,"691":1,"1440":2,"1454":1,"1807":1,"1817":2,"1820":3,"1821":3,"1822":1,"1838":2,"2141":2,"2142":3,"2576":13,"2577":8,"2588":4,"2594":1,"2615":1,"2686":1,"2705":1}}],["widely",{"2":{"2492":1,"2548":1}}],["wider",{"2":{"352":1,"453":1,"455":2}}],["widen",{"2":{"191":1}}],["wide",{"0":{"451":1,"452":1},"2":{"77":1,"188":1,"617":1,"1728":3,"1949":3,"2502":1,"2544":1,"2577":3,"2619":1,"2701":1,"2711":1}}],["winc",{"2":{"2179":1,"2180":1,"2184":1,"2196":1,"2384":1}}],["wincompose",{"2":{"191":1,"2179":1,"2180":1,"2183":4,"2184":2,"2196":1,"2197":1,"2198":1,"2384":2}}],["window",{"2":{"331":3,"350":2,"628":1,"1137":1,"1516":2,"1518":2,"1567":1,"1803":1,"2347":1,"2404":1,"2420":1,"2425":1,"2454":1,"2502":1,"2508":2,"2539":1}}],["windows",{"0":{"240":1,"326":1,"2254":1,"2505":1},"1":{"2506":1,"2507":1,"2508":1},"2":{"73":1,"158":1,"240":1,"326":2,"331":1,"399":1,"454":1,"625":1,"627":1,"629":1,"1241":1,"1249":1,"1273":1,"1283":1,"1292":1,"1375":1,"1567":1,"1568":1,"1673":1,"1825":1,"1826":1,"1881":1,"1921":1,"2180":1,"2183":5,"2184":3,"2237":1,"2245":1,"2247":1,"2249":1,"2254":6,"2343":1,"2347":2,"2351":1,"2355":4,"2384":3,"2390":2,"2392":1,"2398":1,"2410":2,"2411":1,"2429":1,"2435":2,"2451":1,"2452":1,"2457":1,"2463":1,"2503":1,"2506":3,"2508":2,"2513":4,"2556":1}}],["winusb",{"2":{"240":2,"629":12}}],["wings",{"2":{"211":2,"266":1}}],["wings42",{"2":{"143":6}}],["winkeyless",{"2":{"211":1}}],["winkeys",{"2":{"211":1}}],["winni",{"2":{"211":1}}],["winry315",{"2":{"277":1}}],["winry",{"2":{"143":1,"149":1}}],["winry25tc",{"2":{"143":2,"149":1}}],["wins",{"2":{"70":13}}],["win",{"2":{"70":1,"134":1,"266":1,"1565":1,"2180":1,"2184":1,"2374":1,"2384":1,"2410":1}}],["wired",{"2":{"506":2,"1236":1,"1392":1,"1459":1,"1471":1,"1551":1,"1561":2,"1836":1,"2118":1,"2131":1,"2274":1,"2330":1,"2332":1,"2334":1,"2664":1,"2668":1,"2740":1}}],["wires",{"2":{"334":1,"1121":1,"1129":1,"2117":2,"2118":4,"2119":1,"2120":1,"2272":1,"2274":5,"2275":1,"2276":4,"2279":2,"2328":2}}],["wireless",{"2":{"241":1,"2566":10,"2626":2}}],["wire",{"2":{"45":2,"114":1,"334":1,"1121":5,"1123":1,"1126":1,"1212":2,"1216":1,"1319":1,"2031":2,"2061":1,"2134":1,"2266":3,"2267":1,"2268":3,"2270":9,"2272":1,"2273":2,"2274":5,"2279":1,"2281":1,"2311":3,"2319":1}}],["wiring",{"0":{"45":1,"1388":1,"1391":1,"1395":1,"2119":1,"2120":1,"2265":1,"2270":1,"2275":1,"2330":1,"2332":1,"2334":1,"2336":1,"2338":1,"2340":1,"2352":1},"1":{"1392":1,"2266":1,"2267":1,"2268":1,"2269":1,"2270":1,"2271":2,"2272":2,"2273":2,"2274":2,"2275":1,"2276":2,"2277":1,"2278":1,"2279":1,"2280":1,"2281":1},"2":{"45":3,"134":1,"656":1,"1391":1,"1395":1,"1573":1,"1822":2,"1849":1,"1949":1,"2143":2,"2267":1,"2270":1,"2272":1,"2274":1,"2279":1,"2281":1,"2328":1,"2353":1,"2513":1,"2559":1,"2648":1}}],["welcomed",{"2":{"2569":1}}],["welcome",{"2":{"2498":1}}],["well",{"2":{"49":1,"50":2,"90":1,"107":1,"131":1,"132":1,"152":1,"153":1,"173":1,"198":1,"201":1,"213":1,"215":1,"224":1,"229":1,"232":1,"243":1,"249":1,"263":1,"265":1,"272":1,"331":1,"336":1,"374":2,"435":1,"512":1,"552":1,"560":1,"606":1,"629":1,"639":1,"691":1,"1127":1,"1130":1,"1303":1,"1334":1,"1347":1,"1385":1,"1396":1,"1403":1,"1411":1,"1416":1,"1447":1,"1453":1,"1500":1,"1573":1,"1675":1,"1676":1,"1716":1,"1722":1,"1849":1,"1879":1,"1939":1,"1950":1,"2108":2,"2114":1,"2150":1,"2162":1,"2169":1,"2181":1,"2231":1,"2238":1,"2252":1,"2263":2,"2267":1,"2292":1,"2306":1,"2347":1,"2353":1,"2367":1,"2442":1,"2546":1,"2571":1,"2573":2,"2711":1,"2740":1}}],["wetting",{"2":{"2272":1}}],["wet",{"2":{"2272":1}}],["wete",{"2":{"197":4}}],["west",{"2":{"1915":1}}],["westberrytech",{"0":{"490":1},"2":{"130":1,"134":1}}],["week",{"0":{"345":1},"2":{"350":1}}],["weeks",{"0":{"343":1,"344":1},"2":{"228":1,"350":7}}],["webhost",{"2":{"2477":3}}],["webpage",{"2":{"1238":1}}],["web",{"2":{"302":1,"318":1,"517":1,"557":1,"602":1,"1304":1,"2169":1,"2282":1,"2430":1}}],["website",{"2":{"70":1,"2270":1,"2277":1,"2279":1,"2281":1,"2297":1,"2637":1}}],["weighting",{"2":{"1836":1}}],["weight",{"2":{"1576":2,"1577":3,"2152":1}}],["weights",{"2":{"249":1,"1836":6}}],["weird",{"2":{"1403":1,"2610":1}}],["weirdo",{"2":{"143":7,"149":2,"211":1}}],["werror=array",{"2":{"160":1}}],["weren",{"2":{"199":1}}],["were",{"2":{"98":1,"128":1,"131":1,"166":1,"175":1,"186":1,"188":1,"204":1,"229":1,"234":2,"244":1,"251":1,"254":1,"256":1,"263":2,"268":1,"272":1,"273":1,"453":1,"455":1,"1338":1,"1412":1,"1430":1,"1451":1,"1498":1,"1510":1,"1675":1,"1861":1,"1912":1,"1929":1,"1933":1,"1940":1,"1941":1,"2036":1,"2133":1,"2427":1,"2477":2,"2575":1,"2620":1,"2711":1,"2735":1}}],["went",{"2":{"125":1,"185":1,"1821":1}}],["wealthier",{"2":{"1441":2}}],["weact",{"0":{"2514":1},"1":{"2515":1,"2516":1,"2517":1,"2518":1,"2519":1,"2520":1,"2521":1,"2522":1},"2":{"489":2,"2514":3,"2522":1,"2712":1}}],["wear",{"0":{"174":1,"687":1,"688":1,"689":1,"690":1,"691":1,"692":1},"1":{"689":1,"690":1,"691":1,"692":1},"2":{"114":1,"174":1,"176":4,"191":1,"211":1,"236":5,"249":1,"277":1,"681":2,"687":3,"688":6,"689":8,"690":7,"691":5,"2683":3}}],["weakly",{"2":{"707":1,"726":1,"1497":1,"2196":1,"2197":1,"2198":1}}],["weak",{"0":{"1284":1},"2":{"65":1,"93":1,"114":1,"149":2,"191":1,"222":1,"511":1,"566":4,"1284":7,"1383":2,"1385":1,"1430":2,"1445":1,"1506":2,"1581":1,"1822":2,"2129":1,"2143":4,"2228":3,"2566":1,"2709":1}}],["we",{"0":{"1409":1,"2283":1,"2740":1},"1":{"1410":1,"1411":1,"1412":1,"1413":1,"1414":1,"1415":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"1423":1,"1424":1,"1425":1,"1426":1,"1427":1,"1428":1,"1429":1,"1430":1,"1431":1,"1432":1,"1433":1,"1434":1,"1435":1,"1436":1},"2":{"0":1,"9":1,"19":1,"39":1,"50":2,"51":1,"52":1,"83":1,"89":1,"92":1,"93":1,"111":1,"112":1,"172":1,"188":2,"194":2,"213":1,"224":1,"228":1,"245":2,"263":1,"273":1,"277":1,"314":1,"322":1,"331":7,"334":3,"337":3,"342":1,"344":1,"345":1,"346":1,"363":1,"364":1,"367":1,"430":6,"433":1,"436":1,"440":1,"442":1,"445":1,"446":2,"447":1,"453":6,"454":1,"455":5,"456":1,"457":4,"459":1,"462":1,"468":1,"470":3,"471":1,"478":1,"479":2,"480":2,"481":1,"483":1,"484":1,"485":1,"496":1,"512":1,"530":2,"537":1,"549":1,"550":2,"551":1,"556":2,"557":1,"559":1,"560":3,"561":2,"562":1,"568":2,"602":1,"606":4,"611":2,"612":1,"625":1,"641":4,"661":1,"1236":1,"1243":1,"1257":1,"1262":1,"1263":1,"1264":2,"1304":1,"1320":1,"1326":1,"1332":5,"1337":1,"1344":2,"1359":8,"1360":1,"1375":1,"1385":1,"1412":7,"1431":1,"1438":4,"1441":1,"1451":7,"1452":1,"1527":1,"1528":1,"1549":1,"1553":1,"1815":2,"1820":1,"1821":2,"1827":1,"1861":2,"1923":1,"2042":4,"2043":1,"2044":2,"2114":1,"2139":2,"2162":3,"2168":2,"2171":4,"2231":1,"2238":1,"2255":1,"2267":1,"2274":1,"2276":2,"2282":1,"2286":1,"2292":2,"2293":2,"2303":1,"2304":1,"2305":2,"2307":3,"2311":9,"2404":1,"2405":1,"2407":1,"2408":1,"2409":1,"2417":1,"2418":1,"2419":1,"2420":1,"2458":1,"2468":1,"2472":2,"2477":4,"2479":1,"2496":1,"2502":2,"2506":1,"2507":1,"2508":1,"2512":1,"2519":1,"2566":1,"2568":1,"2569":3,"2571":1,"2614":3,"2615":3,"2616":1,"2656":1,"2726":1,"2735":2,"2740":2,"2746":5,"2747":2,"2748":3,"2749":1}}],["i+7",{"2":{"2577":1}}],["i+=8",{"2":{"2577":3}}],["i++",{"2":{"1729":2,"1815":1,"1816":1,"1952":2,"1958":2,"1959":1,"2139":1}}],["i2s",{"2":{"2528":1}}],["i2c0",{"2":{"2536":2}}],["i2cv2",{"0":{"705":1},"2":{"705":1}}],["i2cv1",{"0":{"704":1},"2":{"704":1}}],["i2cd0",{"2":{"2536":1}}],["i2cd1",{"2":{"703":2,"2536":1,"2541":1}}],["i2cd2",{"2":{"199":1,"703":1}}],["i2c3",{"2":{"703":1}}],["i2c2",{"2":{"703":4}}],["i2c1",{"2":{"703":6,"704":3,"705":5,"2536":2,"2541":2}}],["i2c",{"0":{"244":1,"684":1,"699":1,"701":1,"707":1,"708":2,"711":2,"714":2,"717":2,"720":2,"723":2,"726":2,"1220":1,"1818":1,"2120":1,"2291":1,"2536":1},"1":{"700":1,"701":1,"702":1,"703":1,"704":1,"705":1,"706":1,"707":1,"708":1,"709":3,"710":3,"711":1,"712":3,"713":3,"714":1,"715":3,"716":3,"717":1,"718":3,"719":3,"720":1,"721":3,"722":3,"723":1,"724":3,"725":3,"726":1,"727":3,"728":3},"2":{"30":1,"33":2,"45":1,"75":1,"92":1,"114":1,"118":2,"134":4,"149":1,"176":5,"191":1,"199":2,"211":1,"232":1,"234":4,"236":4,"244":9,"249":7,"266":1,"293":1,"502":2,"511":3,"681":2,"684":19,"699":1,"700":3,"701":4,"702":3,"703":14,"704":1,"707":4,"708":1,"709":1,"710":3,"711":1,"712":1,"713":3,"714":1,"715":1,"716":3,"717":1,"718":1,"719":3,"720":1,"721":1,"722":3,"723":1,"724":1,"725":3,"726":2,"727":1,"728":3,"730":1,"731":2,"732":1,"756":1,"757":6,"758":5,"785":1,"786":6,"787":5,"817":1,"818":6,"819":5,"849":1,"850":6,"851":17,"884":1,"885":6,"886":17,"918":1,"919":6,"920":5,"952":1,"953":6,"954":5,"986":1,"987":6,"988":5,"1020":1,"1021":6,"1022":17,"1054":1,"1055":6,"1056":17,"1088":1,"1089":6,"1090":17,"1144":1,"1145":6,"1146":5,"1214":1,"1218":1,"1220":6,"1319":1,"1574":1,"1811":1,"1813":3,"1818":1,"1821":1,"1838":3,"1841":2,"1842":3,"1847":3,"2114":2,"2115":1,"2117":1,"2128":4,"2276":1,"2289":1,"2291":1,"2528":1,"2531":2,"2534":1,"2536":4,"2541":3,"2564":1,"2573":6,"2576":10,"2683":1,"2697":1,"2700":5}}],["ipad",{"2":{"2299":1}}],["iphone",{"2":{"2299":1}}],["ipsum",{"2":{"301":1}}],["ignoring",{"0":{"1936":1,"1937":1},"1":{"1937":1,"1938":1,"1939":1},"2":{"1876":1}}],["ignores",{"2":{"1281":1,"1283":1,"1937":1,"1939":1,"2729":1}}],["ignored",{"2":{"393":2,"394":2,"1326":1,"1440":1,"1446":1,"1836":1,"1864":1,"1936":2,"1937":1,"2042":1,"2066":1,"2348":1,"2398":1,"2587":1}}],["ignore",{"0":{"194":1,"206":1},"2":{"22":2,"112":2,"160":1,"194":11,"199":2,"206":2,"211":1,"249":1,"331":1,"334":1,"1873":1,"1937":1,"1939":1,"1943":1,"2042":1,"2125":1,"2355":1,"2395":1,"2413":1,"2468":1}}],["iqs572",{"2":{"1837":1}}],["iqs550",{"2":{"1837":1}}],["iqs525",{"2":{"1837":1}}],["iqs5xx",{"0":{"1837":1},"1":{"1838":1,"1839":1,"1840":1},"2":{"236":1,"1837":2,"1838":9,"1839":17,"1840":3}}],["icsp",{"2":{"2339":1}}],["ics",{"2":{"1811":1,"2230":1}}],["ice",{"2":{"1807":1}}],["icelandic",{"2":{"1355":1,"2703":3}}],["ic",{"2":{"1143":1,"1464":1,"1589":2,"1811":1,"1817":5,"1820":3,"2136":2}}],["icon",{"2":{"336":1,"2460":2}}],["i²c",{"0":{"732":1,"758":1,"787":1,"819":1,"851":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1056":1,"1090":1,"1146":1},"2":{"729":1,"731":2,"732":1,"733":1,"755":1,"757":6,"758":1,"759":1,"784":1,"786":6,"787":1,"791":1,"816":1,"818":6,"819":1,"821":1,"848":1,"850":6,"851":1,"856":1,"883":1,"885":6,"886":1,"890":1,"917":1,"919":6,"920":1,"924":1,"951":1,"953":6,"954":1,"958":1,"985":1,"987":6,"988":1,"992":1,"1019":1,"1021":6,"1022":1,"1026":1,"1053":1,"1055":6,"1056":1,"1060":1,"1087":1,"1089":6,"1090":1,"1094":1,"1143":1,"1145":6,"1146":1,"1147":1,"2700":2}}],["ie",{"2":{"676":1,"727":1,"742":1,"746":1,"750":1,"752":1,"769":1,"773":1,"777":1,"779":1,"801":1,"805":1,"809":1,"811":1,"833":1,"837":1,"841":1,"843":1,"868":1,"872":1,"876":1,"878":1,"902":1,"906":1,"910":1,"912":1,"936":1,"940":1,"944":1,"946":1,"970":1,"974":1,"978":1,"980":1,"1004":1,"1008":1,"1012":1,"1014":1,"1038":1,"1042":1,"1046":1,"1048":1,"1072":1,"1076":1,"1080":1,"1082":1,"1106":1,"1110":1,"1114":1,"1116":1,"1159":1,"1163":1,"1167":1,"1169":1,"1205":1,"1219":1,"1537":1,"1573":1,"1610":1,"2463":1}}],["ijk",{"2":{"266":1}}],["ii",{"2":{"199":1,"211":1}}],["iie",{"2":{"181":2}}],["i64",{"2":{"191":1}}],["ireland",{"2":{"2703":1}}],["irene",{"2":{"211":1}}],["iron",{"2":{"2266":1,"2272":5,"2273":1,"2274":1}}],["irony",{"2":{"2181":2}}],["iron180",{"2":{"211":2,"249":1}}],["ir",{"2":{"1849":1}}],["irregular",{"2":{"563":1}}],["irrelevant",{"2":{"244":1}}],["irq",{"2":{"191":1,"236":1,"703":1,"1492":1}}],["irqs",{"2":{"176":1}}],["irish",{"2":{"2703":1}}],["iris60",{"2":{"211":1}}],["iris",{"2":{"45":1,"134":1,"199":1,"211":2,"266":2,"277":1}}],["ik75",{"2":{"176":1}}],["imagine",{"2":{"1684":1,"1725":1,"1946":1,"2614":1}}],["image",{"0":{"409":1,"410":1,"2303":1},"2":{"410":1,"623":4,"818":1,"1243":1,"2268":1,"2270":1,"2544":1,"2554":1,"2566":3,"2575":14,"2577":55,"2592":1,"2594":2,"2596":2,"2598":5,"2599":1}}],["images",{"0":{"281":1},"2":{"153":3,"408":1,"623":1,"1264":1,"2260":1,"2554":1,"2566":2,"2573":2,"2574":2,"2575":2,"2577":5,"2585":1,"2592":1}}],["imcompatible",{"2":{"1125":1}}],["imgur",{"2":{"623":2,"624":1,"2260":1,"2303":1,"2554":1,"2566":4}}],["imera",{"2":{"249":1,"1311":1,"1315":4,"2712":1}}],["immediate",{"2":{"559":1,"1329":3}}],["immediately",{"2":{"230":1,"259":1,"349":1,"592":1,"647":1,"675":1,"741":1,"745":1,"749":1,"751":1,"768":1,"772":1,"776":1,"778":1,"800":1,"804":1,"808":1,"810":1,"832":1,"836":1,"840":1,"842":1,"867":1,"871":1,"875":1,"877":1,"901":1,"905":1,"909":1,"911":1,"935":1,"939":1,"943":1,"945":1,"969":1,"973":1,"977":1,"979":1,"1003":1,"1007":1,"1011":1,"1013":1,"1037":1,"1041":1,"1045":1,"1047":1,"1071":1,"1075":1,"1079":1,"1081":1,"1105":1,"1109":1,"1113":1,"1115":1,"1158":1,"1162":1,"1166":1,"1168":1,"1210":1,"1273":1,"1300":2,"1326":1,"1332":3,"1411":1,"1451":1,"1518":1,"1675":1,"2162":1,"2490":2,"2577":1,"2595":1,"2596":2,"2606":1,"2702":1,"2728":1,"2729":3,"2735":1,"2736":1}}],["immutable",{"2":{"474":1}}],["immune",{"2":{"231":1}}],["impossible",{"2":{"1287":1,"1336":1,"1683":1,"2302":1}}],["imported",{"2":{"389":1,"390":1,"391":1,"2268":1,"2277":1,"2564":1}}],["importer",{"2":{"176":1}}],["important",{"0":{"340":1,"619":1},"2":{"433":1,"453":1,"467":1,"537":1,"560":2,"568":1,"619":2,"1300":1,"1338":1,"1375":1,"1435":1,"1448":1,"1525":1,"1533":1,"1959":1,"2226":1,"2436":1,"2450":1,"2702":1,"2728":1}}],["imports",{"0":{"457":1},"1":{"458":1},"2":{"236":1,"389":1,"390":1,"457":1}}],["importing",{"0":{"2501":1},"2":{"173":1,"389":1,"390":1,"391":1,"457":2,"2277":1,"2501":1}}],["import",{"0":{"173":1,"389":1,"390":1,"391":1,"458":1},"2":{"173":4,"176":1,"292":1,"331":2,"389":2,"390":2,"391":2,"430":2,"457":8,"458":4,"479":1,"1923":1,"2277":3,"2427":1,"2566":1}}],["impedance",{"2":{"696":1}}],["impls",{"2":{"1729":2,"1952":2}}],["impls\`",{"2":{"1729":1,"1952":1}}],["impliments",{"2":{"2289":1}}],["implied",{"2":{"1380":1,"2570":1}}],["implies",{"2":{"1236":1,"1397":1,"2131":1}}],["implicitly",{"2":{"506":1}}],["implicit",{"2":{"467":1,"476":1,"2702":1}}],["implications",{"2":{"352":2,"355":1}}],["implementing",{"0":{"1330":1},"2":{"277":2,"560":1,"564":1,"565":1,"587":1,"630":1,"1121":1,"1453":1,"1523":1,"1850":1,"2302":1,"2566":1}}],["implemented",{"2":{"74":1,"149":1,"176":1,"215":2,"534":1,"580":1,"1265":1,"1316":1,"1317":1,"1531":1,"1581":1,"1675":1,"1676":1,"1717":1,"1791":1,"1804":1,"1880":1,"1921":1,"2168":1,"2183":1,"2184":1,"2384":1,"2548":1,"2566":2,"2587":1,"2596":1,"2686":3,"2719":1}}],["implement",{"2":{"50":1,"74":1,"93":1,"114":1,"131":1,"134":1,"149":1,"160":1,"176":1,"191":1,"199":2,"211":1,"236":5,"259":1,"277":2,"516":1,"560":1,"565":1,"566":2,"1265":1,"1326":1,"1330":2,"1344":1,"1393":1,"1405":1,"1464":1,"1680":1,"1714":1,"1725":1,"1791":1,"1813":1,"1820":1,"1832":1,"1833":1,"1918":1,"1921":1,"1946":1,"2065":1,"2137":1,"2228":1,"2300":1,"2491":1,"2524":1,"2525":1,"2526":1,"2571":1}}],["implementations",{"2":{"149":3,"175":1,"211":1,"214":1,"277":6,"1121":1,"1721":1,"1722":1,"2114":1,"2566":1,"2567":1,"2705":1,"2743":1}}],["implementation",{"0":{"572":1,"576":1,"582":1,"585":1,"588":1,"590":1,"593":1,"594":1,"1332":1,"1343":1,"1717":1,"1718":1,"2162":1},"2":{"49":1,"75":1,"114":1,"125":1,"163":1,"176":1,"185":1,"233":1,"236":1,"277":1,"560":1,"565":1,"568":1,"635":2,"641":3,"692":1,"1127":1,"1130":1,"1134":2,"1221":1,"1393":2,"1406":1,"1442":1,"1450":2,"1491":1,"1499":1,"1511":1,"1573":1,"1821":1,"1836":1,"1858":1,"1908":2,"2114":2,"2153":1,"2263":2,"2300":1,"2367":1,"2524":1,"2525":1,"2526":1,"2689":2,"2705":1}}],["implements",{"2":{"49":1,"1531":1,"1879":1,"1943":1,"2415":1}}],["improving",{"2":{"402":1,"403":1}}],["improvement",{"2":{"114":1,"175":1}}],["improvements",{"0":{"84":1,"98":1,"107":1,"109":1,"175":1,"210":1},"1":{"110":1,"111":1,"112":1},"2":{"45":1,"107":1,"114":2,"134":1,"149":1,"176":1,"190":1,"191":2,"211":3,"222":1,"236":1,"1453":1,"2719":1}}],["improve",{"0":{"229":1},"2":{"93":1,"114":5,"134":1,"175":1,"176":4,"191":2,"211":3,"214":1,"222":1,"236":4,"249":1,"516":1,"550":1,"554":1,"1326":1,"1329":1,"1817":1,"2141":1,"2226":1,"2409":1,"2719":2}}],["improved",{"0":{"83":1},"2":{"10":2,"50":1,"74":1,"84":1,"174":1,"196":1,"561":1,"1226":1}}],["improper",{"2":{"249":1,"1289":1}}],["impact",{"2":{"194":1,"584":1,"2129":1,"2162":1,"2578":1,"2719":1,"2720":1,"2737":1}}],["impacts",{"2":{"14":1}}],["ivy",{"2":{"143":2}}],["ibus",{"2":{"2183":3}}],["ibnuda",{"2":{"143":3,"149":2}}],["ibm122m",{"2":{"207":2}}],["ibm4704",{"2":{"133":1,"134":1}}],["ibm",{"2":{"114":1,"204":1,"207":11,"217":1,"222":1}}],["ixora",{"2":{"102":2}}],["illusion",{"2":{"1454":1}}],["illustrious",{"2":{"123":1}}],["illustrate",{"2":{"99":1,"194":1,"2730":1}}],["ill",{"2":{"355":1}}],["ili9341",{"2":{"2573":2,"2576":7}}],["ili9163",{"2":{"2573":2,"2576":7}}],["ili9486",{"2":{"248":1,"249":1,"2573":2,"2576":8}}],["ili9488",{"2":{"176":1,"2573":2,"2576":7}}],["ili9xxx",{"2":{"222":1}}],["ilumkb",{"2":{"102":1,"114":1}}],["ios",{"2":{"1491":2,"1825":1,"1826":1,"2299":5}}],["iohidconsumer",{"2":{"1279":2}}],["iohidfamily",{"2":{"1279":6}}],["io",{"2":{"74":1,"112":1,"502":1,"697":1,"2437":1,"2543":1,"2689":1}}],["iota",{"2":{"31":3,"34":2,"1823":10}}],["i",{"0":{"353":1,"546":1,"551":2,"553":1,"554":1,"1243":1,"1258":1,"1259":2,"1260":1,"1261":1,"1263":2,"1264":1,"1267":1,"1269":1,"1270":1,"1286":1,"1413":1,"1439":1,"1500":1,"1930":1,"2254":1,"2472":1},"1":{"354":1,"355":1,"356":1,"1264":2,"1501":1},"2":{"65":1,"105":2,"108":1,"114":1,"219":4,"249":2,"266":2,"279":1,"313":1,"331":1,"335":1,"408":1,"414":1,"530":2,"537":1,"556":2,"563":1,"611":1,"623":1,"624":1,"703":1,"1177":1,"1198":1,"1221":1,"1242":1,"1274":1,"1338":1,"1359":1,"1363":1,"1436":3,"1448":2,"1450":1,"1451":4,"1518":2,"1553":1,"1670":2,"1729":6,"1733":1,"1815":3,"1816":3,"1864":1,"1902":1,"1923":4,"1932":1,"1943":6,"1952":6,"1957":1,"1958":8,"1959":4,"2056":4,"2139":3,"2171":2,"2181":2,"2182":4,"2184":4,"2233":1,"2236":1,"2262":3,"2268":2,"2269":2,"2275":2,"2284":1,"2347":1,"2355":3,"2384":4,"2386":3,"2407":1,"2427":1,"2501":1,"2528":1,"2564":1,"2565":1,"2566":3,"2575":6,"2577":19,"2600":2,"2750":2,"2757":1}}],["idx",{"2":{"1518":3}}],["idproduct",{"2":{"1254":1}}],["idvendor",{"2":{"1254":1}}],["id=92",{"2":{"1242":1}}],["id=some",{"2":{"279":1}}],["idling",{"0":{"589":1},"1":{"590":1,"591":1}}],["idled",{"2":{"589":2}}],["idle",{"0":{"1504":1},"2":{"149":1,"211":1,"222":1,"236":2,"588":1,"1499":1,"1504":3,"2070":1,"2680":1,"2696":1}}],["idb",{"2":{"217":3}}],["idb60",{"2":{"211":1}}],["ids",{"0":{"169":1,"184":1},"1":{"170":1},"2":{"169":1,"176":1,"184":1,"222":1,"317":1,"511":2,"629":1,"1921":1,"2130":4}}],["id75",{"2":{"143":1,"149":3,"199":1,"211":2}}],["idobo",{"2":{"143":1,"149":1}}],["idobao",{"2":{"143":6,"149":6,"168":4,"176":4,"266":1}}],["id87v2",{"2":{"176":1}}],["id87",{"2":{"143":2,"149":1}}],["id80v1",{"2":{"176":1}}],["id80v3",{"2":{"176":1}}],["id80",{"2":{"143":2,"149":4,"168":4}}],["id67",{"2":{"143":4,"149":1,"176":1}}],["ides",{"2":{"2723":1}}],["identical",{"2":{"1318":1,"1319":1,"1321":1,"1323":1,"1324":1,"1406":1,"1806":1,"2128":1,"2161":1,"2533":1,"2541":1,"2550":1,"2576":1,"2586":1,"2590":1,"2591":1}}],["identity",{"2":{"562":1}}],["identified",{"2":{"1451":1}}],["identifier",{"2":{"157":2,"461":1,"1336":1,"2411":1,"2570":2}}],["identifiers",{"2":{"110":1,"266":1,"1441":1,"1499":1}}],["identifying",{"2":{"2616":1}}],["identify",{"2":{"70":1,"110":1,"1451":1,"1452":1,"1496":1,"1902":1,"2172":1,"2749":1}}],["ideally",{"2":{"1376":1,"1850":1,"1868":3,"2133":1,"2550":1}}],["ideal",{"2":{"1325":1,"1381":1,"2120":1,"2232":1,"2234":1,"2241":1}}],["idea",{"2":{"473":1,"560":1,"561":1,"1238":1,"1353":1,"1416":1,"1451":1,"1831":1,"1921":1,"2273":1,"2274":2,"2552":1}}],["ide",{"0":{"330":1},"2":{"132":1,"322":1,"323":1,"330":1,"331":1,"401":1,"2492":2,"2497":2,"2634":1}}],["id",{"0":{"308":1,"309":1,"310":1},"2":{"50":1,"70":2,"160":1,"169":2,"184":2,"191":2,"211":1,"277":1,"314":1,"315":1,"341":1,"502":2,"1230":1,"1242":4,"1254":1,"1920":3,"1921":3,"1923":6,"2130":3,"2147":2,"2343":1,"2344":1,"2345":1,"2346":1,"2406":1,"2556":1,"2587":2,"2588":2,"2589":2,"2593":3,"2594":2,"2595":2,"2596":2,"2597":2,"2598":2,"2599":2,"2699":2}}],["iwrap",{"2":{"50":1}}],["itunes",{"2":{"2355":1}}],["ition",{"2":{"1943":1}}],["ith",{"2":{"1670":1}}],["italian",{"2":{"1355":3,"2703":9}}],["iterates",{"2":{"1821":1}}],["iterate",{"2":{"580":1}}],["iterators",{"2":{"461":1}}],["iterations",{"2":{"556":1}}],["iteration",{"2":{"65":1,"437":1,"587":1}}],["itemid=1",{"2":{"1242":1}}],["item",{"0":{"183":1},"2":{"268":1,"467":2,"468":1,"686":1,"2164":1}}],["items",{"2":{"83":1,"112":1,"134":1,"183":1,"210":1,"236":2,"264":1,"274":1,"282":3,"341":1,"473":1}}],["it",{"0":{"27":1,"548":1,"609":1,"613":1,"614":1,"1243":2,"1253":1,"1264":1,"1270":1,"1411":1,"1438":1,"2315":1,"2455":1},"2":{"5":1,"6":1,"8":1,"14":2,"21":2,"23":1,"27":1,"31":2,"45":2,"50":1,"82":1,"89":1,"94":1,"98":1,"99":1,"105":2,"114":2,"116":2,"119":1,"123":1,"130":2,"133":1,"134":1,"149":1,"153":2,"154":1,"166":1,"173":1,"174":2,"176":1,"179":3,"182":2,"194":2,"195":2,"198":1,"199":1,"203":1,"213":1,"214":1,"228":2,"233":1,"235":1,"246":1,"251":2,"254":1,"259":1,"278":1,"282":5,"303":1,"305":1,"308":1,"315":1,"324":1,"325":1,"327":1,"328":1,"329":1,"331":3,"334":2,"341":5,"347":1,"352":2,"353":1,"354":1,"355":1,"370":3,"371":1,"375":1,"376":2,"378":1,"381":1,"383":1,"384":1,"385":1,"386":1,"400":3,"401":1,"403":1,"405":3,"416":1,"423":1,"430":3,"432":1,"435":2,"436":1,"437":1,"440":1,"453":2,"454":7,"455":1,"458":1,"466":1,"467":1,"469":1,"470":2,"472":1,"473":2,"474":1,"477":1,"479":2,"481":4,"482":1,"493":1,"495":1,"500":2,"504":2,"505":3,"509":1,"510":2,"512":1,"513":1,"515":2,"516":1,"526":2,"527":1,"534":1,"537":2,"539":2,"541":2,"551":2,"552":1,"554":2,"560":8,"564":1,"565":1,"566":1,"568":1,"571":2,"572":3,"574":1,"575":2,"578":1,"584":2,"586":2,"587":1,"589":3,"592":4,"597":5,"598":2,"599":2,"600":2,"605":1,"607":3,"613":1,"618":1,"621":2,"623":2,"624":1,"626":3,"627":1,"628":2,"629":1,"639":2,"641":2,"660":1,"661":1,"663":1,"667":1,"683":1,"689":2,"690":1,"696":4,"698":1,"700":1,"707":1,"726":1,"790":1,"855":1,"889":1,"923":1,"957":1,"991":1,"1025":1,"1059":1,"1093":1,"1122":3,"1124":1,"1125":1,"1127":1,"1128":1,"1130":1,"1132":1,"1133":2,"1134":1,"1175":1,"1196":1,"1219":1,"1225":1,"1235":1,"1250":1,"1252":2,"1253":1,"1254":1,"1260":1,"1261":1,"1263":2,"1265":1,"1269":2,"1270":3,"1272":1,"1273":1,"1276":1,"1278":4,"1283":1,"1286":2,"1287":3,"1294":1,"1300":1,"1302":3,"1303":1,"1313":1,"1316":2,"1320":2,"1325":1,"1326":2,"1328":1,"1331":2,"1332":17,"1335":7,"1336":2,"1337":1,"1338":3,"1340":2,"1341":3,"1346":1,"1347":1,"1351":1,"1353":2,"1359":2,"1360":4,"1362":1,"1367":1,"1368":2,"1375":1,"1377":4,"1380":4,"1383":3,"1384":1,"1385":3,"1386":1,"1398":5,"1403":1,"1405":2,"1406":2,"1409":1,"1411":4,"1412":3,"1413":1,"1430":2,"1431":1,"1435":1,"1438":2,"1439":3,"1440":2,"1441":5,"1442":1,"1445":2,"1450":3,"1451":1,"1454":2,"1455":2,"1459":1,"1463":1,"1471":2,"1491":2,"1492":3,"1495":1,"1496":1,"1498":2,"1499":4,"1503":1,"1508":2,"1510":1,"1511":2,"1515":2,"1518":6,"1525":3,"1526":1,"1528":2,"1534":2,"1538":1,"1551":2,"1553":3,"1554":2,"1555":1,"1556":1,"1557":2,"1560":1,"1564":1,"1565":2,"1567":1,"1573":2,"1621":1,"1631":1,"1641":1,"1651":3,"1652":1,"1654":2,"1658":1,"1666":1,"1670":2,"1674":1,"1675":4,"1683":1,"1686":3,"1717":2,"1718":1,"1720":1,"1722":1,"1723":2,"1725":2,"1731":2,"1743":1,"1745":1,"1776":1,"1778":1,"1780":1,"1783":1,"1802":3,"1803":4,"1804":1,"1807":1,"1816":1,"1820":1,"1821":1,"1822":5,"1824":3,"1825":4,"1827":2,"1830":1,"1832":2,"1833":1,"1836":1,"1845":1,"1848":2,"1850":1,"1853":1,"1855":1,"1857":1,"1858":1,"1865":1,"1866":1,"1867":1,"1873":1,"1874":1,"1876":1,"1878":1,"1879":2,"1881":1,"1912":2,"1917":1,"1921":4,"1922":1,"1923":1,"1930":1,"1932":2,"1933":1,"1934":2,"1936":2,"1937":1,"1938":1,"1940":1,"1943":1,"1944":2,"1946":2,"1950":2,"1955":2,"1960":2,"1970":1,"1972":1,"2021":1,"2023":1,"2025":1,"2028":1,"2032":2,"2037":1,"2041":2,"2042":1,"2051":2,"2063":3,"2072":1,"2073":1,"2102":1,"2108":2,"2111":1,"2118":1,"2120":1,"2122":2,"2123":1,"2124":4,"2125":3,"2126":1,"2128":3,"2130":3,"2131":5,"2132":1,"2134":1,"2140":1,"2143":4,"2144":1,"2145":5,"2147":1,"2149":1,"2150":1,"2152":3,"2154":1,"2157":1,"2160":3,"2161":2,"2162":8,"2169":2,"2170":1,"2171":2,"2172":1,"2178":1,"2180":1,"2181":1,"2182":1,"2183":9,"2226":1,"2230":1,"2231":1,"2233":2,"2235":2,"2236":1,"2237":2,"2238":2,"2243":1,"2250":1,"2252":2,"2254":3,"2255":9,"2256":1,"2259":1,"2260":1,"2262":6,"2263":4,"2267":3,"2268":4,"2272":6,"2273":13,"2274":8,"2275":3,"2276":1,"2277":1,"2279":5,"2280":1,"2292":1,"2293":1,"2295":4,"2297":3,"2298":1,"2300":1,"2302":2,"2304":1,"2305":2,"2306":1,"2307":1,"2311":5,"2317":1,"2320":2,"2323":1,"2326":1,"2327":4,"2329":1,"2333":1,"2341":2,"2342":1,"2345":1,"2346":2,"2347":1,"2348":1,"2349":2,"2353":4,"2367":1,"2402":1,"2403":1,"2404":1,"2405":2,"2406":1,"2407":1,"2408":3,"2410":2,"2411":4,"2413":2,"2417":3,"2418":1,"2423":1,"2424":1,"2425":1,"2427":1,"2428":1,"2431":1,"2436":1,"2437":1,"2441":1,"2443":3,"2446":1,"2450":5,"2452":1,"2454":3,"2455":3,"2458":1,"2463":2,"2464":1,"2468":2,"2469":1,"2473":1,"2474":1,"2475":1,"2476":1,"2477":4,"2478":2,"2479":2,"2480":5,"2490":3,"2491":6,"2492":1,"2495":1,"2497":7,"2498":1,"2501":1,"2506":3,"2508":1,"2509":3,"2510":1,"2512":5,"2513":5,"2514":1,"2517":2,"2518":1,"2521":1,"2522":1,"2529":1,"2530":1,"2533":1,"2539":2,"2541":1,"2542":1,"2544":1,"2546":1,"2548":1,"2549":2,"2552":2,"2553":1,"2556":2,"2559":1,"2564":4,"2566":3,"2567":1,"2568":3,"2569":2,"2570":3,"2571":1,"2573":1,"2574":1,"2576":2,"2577":9,"2578":2,"2582":1,"2584":2,"2585":1,"2587":1,"2590":1,"2592":1,"2594":1,"2596":1,"2603":2,"2605":4,"2607":1,"2612":1,"2614":1,"2615":2,"2616":2,"2619":1,"2637":1,"2654":1,"2663":1,"2666":2,"2671":1,"2686":1,"2691":1,"2697":1,"2701":2,"2702":4,"2704":1,"2707":3,"2712":1,"2720":1,"2723":2,"2728":2,"2737":3,"2738":2,"2739":3,"2740":3,"2742":2,"2743":5,"2744":3,"2745":4,"2746":1,"2747":2,"2748":2,"2750":1,"2751":1,"2752":1,"2753":4,"2756":1,"2757":7}}],["itsybitsy",{"2":{"629":2,"2344":2}}],["itself",{"2":{"152":1,"321":1,"517":1,"529":1,"580":2,"605":1,"625":1,"627":1,"628":1,"654":1,"1376":1,"1435":1,"1442":1,"1448":1,"1499":2,"2146":1,"2235":1,"2237":1,"2262":1,"2273":1,"2275":1,"2327":1,"2351":1,"2397":1,"2523":1,"2546":1,"2615":1,"2701":1,"2749":1}}],["its",{"0":{"2496":1},"1":{"2497":1,"2498":1,"2499":1},"2":{"3":1,"7":1,"8":1,"15":1,"30":1,"33":1,"113":2,"114":1,"120":1,"133":1,"157":1,"174":1,"175":1,"195":1,"330":1,"331":1,"349":1,"352":1,"499":1,"529":1,"627":1,"661":1,"669":1,"686":1,"689":1,"690":1,"691":2,"697":1,"1128":1,"1236":1,"1238":1,"1240":1,"1278":1,"1293":1,"1312":1,"1314":1,"1327":1,"1329":1,"1401":1,"1409":2,"1430":1,"1431":1,"1451":1,"1452":3,"1471":2,"1508":1,"1511":1,"1518":4,"1519":1,"1630":1,"1633":1,"1666":1,"1802":4,"1814":1,"1821":1,"1851":1,"1902":1,"1941":3,"1950":2,"1951":1,"2108":2,"2152":1,"2171":1,"2183":1,"2259":2,"2272":1,"2282":1,"2300":1,"2311":4,"2324":1,"2402":1,"2403":1,"2406":2,"2428":1,"2435":1,"2439":2,"2440":1,"2501":1,"2559":1,"2566":1,"2576":1,"2585":1,"2592":1,"2615":1,"2619":1,"2627":1,"2664":1,"2671":1,"2683":1,"2719":1,"2734":1,"2735":2,"2736":2,"2737":2,"2739":1,"2743":1}}],["ifeq",{"2":{"2300":2}}],["ifnormation",{"2":{"179":1}}],["ifndef",{"2":{"134":1,"453":1,"1385":1,"1423":5,"1446":1,"2168":1,"2299":4,"2564":1,"2709":2}}],["ify",{"2":{"176":1}}],["ifdefs",{"2":{"114":1,"191":1,"211":1,"266":1,"1313":1}}],["ifdef",{"2":{"31":4,"34":4,"134":1,"211":1,"249":2,"453":1,"496":1,"588":3,"607":1,"1252":1,"1313":1,"1315":13,"1322":5,"1351":3,"1384":3,"1398":2,"1423":1,"1446":2,"1448":4,"1549":2,"1686":3,"1718":2,"1729":2,"1813":1,"1816":1,"1849":1,"1904":1,"1905":1,"1907":1,"1952":2,"2137":1,"2140":1,"2299":1}}],["if",{"0":{"141":1,"1260":1,"1261":1,"1264":1},"2":{"1":1,"7":1,"14":1,"16":1,"18":2,"21":1,"23":2,"31":4,"34":4,"37":1,"43":1,"45":1,"49":2,"50":2,"62":1,"87":1,"89":1,"90":9,"98":1,"105":6,"107":1,"114":2,"119":1,"125":2,"149":1,"152":1,"157":1,"158":2,"160":1,"182":1,"185":2,"194":3,"196":4,"198":1,"199":2,"201":1,"202":1,"206":1,"209":2,"214":1,"215":1,"218":1,"221":1,"222":1,"228":1,"230":1,"232":2,"233":1,"236":2,"240":3,"241":1,"245":1,"247":1,"248":1,"253":1,"254":1,"255":1,"256":1,"259":1,"266":1,"270":1,"272":1,"273":2,"276":1,"277":2,"282":6,"291":1,"308":2,"311":1,"312":1,"313":1,"317":1,"319":1,"320":1,"321":1,"326":1,"327":1,"331":2,"332":1,"334":1,"336":1,"341":4,"349":1,"352":1,"353":1,"354":1,"356":1,"361":2,"365":1,"366":1,"367":1,"370":1,"371":1,"373":1,"375":1,"376":1,"377":1,"378":1,"381":1,"383":1,"385":1,"386":1,"387":1,"399":1,"405":1,"407":1,"411":1,"429":1,"430":2,"433":2,"434":1,"435":1,"446":2,"448":1,"450":1,"451":1,"453":16,"454":2,"455":3,"459":1,"462":2,"465":2,"466":3,"471":1,"473":2,"474":3,"476":5,"478":1,"481":3,"484":1,"485":1,"497":1,"500":1,"501":1,"502":9,"503":1,"504":2,"505":10,"506":4,"509":2,"510":3,"511":4,"513":1,"515":1,"516":2,"517":1,"521":1,"529":1,"530":1,"534":7,"537":3,"539":1,"540":2,"541":1,"545":2,"546":1,"551":2,"552":1,"553":1,"554":3,"555":1,"556":1,"557":2,"558":1,"559":1,"560":5,"561":1,"562":1,"571":2,"572":2,"575":1,"580":1,"581":1,"585":1,"586":1,"587":1,"588":10,"589":1,"592":3,"593":2,"594":1,"597":5,"598":3,"601":1,"609":1,"612":1,"613":2,"614":2,"621":2,"624":1,"625":1,"626":6,"627":3,"628":1,"629":1,"630":1,"638":1,"639":2,"641":2,"643":2,"656":1,"660":2,"661":1,"665":2,"683":2,"684":3,"685":1,"689":2,"698":3,"700":2,"701":1,"703":1,"707":1,"710":2,"713":2,"716":2,"719":2,"722":2,"725":2,"726":1,"728":2,"730":2,"756":2,"785":2,"790":1,"817":2,"849":2,"855":1,"884":2,"889":1,"918":2,"923":1,"952":2,"957":1,"986":2,"991":1,"1020":2,"1025":1,"1054":2,"1059":1,"1088":2,"1093":1,"1125":1,"1127":1,"1128":1,"1129":1,"1130":2,"1132":2,"1133":2,"1136":2,"1138":1,"1144":2,"1175":2,"1177":2,"1181":1,"1182":1,"1185":1,"1187":1,"1190":2,"1193":2,"1195":1,"1196":2,"1205":1,"1210":1,"1211":1,"1213":2,"1215":1,"1216":1,"1228":1,"1230":1,"1237":1,"1238":3,"1240":1,"1241":1,"1243":1,"1245":1,"1252":2,"1254":1,"1258":2,"1260":2,"1261":1,"1264":1,"1266":1,"1270":1,"1271":1,"1284":1,"1286":1,"1287":1,"1294":1,"1300":3,"1302":3,"1303":3,"1312":1,"1315":1,"1316":1,"1320":2,"1322":1,"1325":2,"1326":3,"1329":1,"1330":1,"1331":2,"1332":21,"1335":3,"1336":1,"1338":2,"1339":1,"1340":1,"1341":4,"1344":5,"1351":1,"1355":1,"1357":1,"1359":6,"1360":4,"1361":2,"1362":2,"1363":2,"1364":1,"1365":2,"1367":1,"1368":3,"1375":6,"1376":2,"1377":2,"1378":2,"1380":2,"1383":2,"1384":3,"1385":4,"1386":1,"1394":1,"1395":1,"1396":1,"1398":1,"1401":2,"1403":3,"1406":1,"1411":5,"1413":1,"1415":2,"1416":1,"1430":3,"1431":5,"1432":1,"1435":5,"1438":1,"1441":1,"1445":1,"1446":9,"1448":1,"1449":1,"1451":1,"1452":2,"1455":2,"1457":1,"1459":2,"1464":1,"1484":1,"1489":1,"1492":1,"1495":1,"1496":1,"1497":2,"1499":2,"1500":2,"1504":1,"1505":1,"1507":1,"1508":1,"1509":1,"1511":3,"1512":1,"1514":2,"1515":3,"1516":1,"1518":19,"1519":1,"1521":1,"1524":2,"1525":6,"1527":1,"1528":1,"1530":1,"1533":1,"1534":1,"1538":1,"1548":1,"1549":9,"1553":1,"1554":1,"1555":1,"1556":1,"1557":3,"1558":3,"1559":1,"1560":14,"1563":1,"1565":3,"1567":1,"1568":4,"1570":3,"1573":6,"1578":1,"1579":2,"1591":1,"1597":1,"1601":1,"1616":1,"1621":1,"1634":1,"1641":1,"1654":2,"1655":1,"1659":1,"1668":1,"1670":4,"1671":5,"1673":2,"1674":1,"1675":3,"1677":2,"1678":1,"1680":4,"1684":2,"1685":1,"1686":5,"1694":2,"1696":2,"1697":1,"1701":1,"1704":1,"1707":1,"1710":1,"1713":1,"1717":1,"1718":2,"1723":1,"1725":2,"1726":7,"1729":1,"1730":6,"1733":2,"1742":1,"1775":1,"1791":2,"1792":1,"1803":1,"1804":1,"1805":1,"1808":1,"1815":3,"1816":4,"1817":1,"1819":1,"1820":2,"1821":2,"1822":24,"1826":2,"1828":1,"1830":4,"1833":1,"1836":1,"1838":1,"1842":1,"1849":3,"1850":1,"1851":3,"1852":2,"1853":3,"1854":1,"1855":1,"1857":1,"1858":2,"1859":4,"1861":5,"1863":1,"1864":1,"1865":1,"1866":2,"1873":4,"1876":1,"1877":5,"1878":2,"1879":2,"1896":1,"1904":1,"1907":1,"1912":2,"1915":1,"1918":1,"1920":1,"1922":1,"1923":6,"1929":1,"1932":1,"1933":4,"1938":1,"1939":1,"1940":4,"1941":7,"1943":2,"1944":1,"1946":2,"1947":8,"1948":2,"1952":1,"1954":9,"1957":2,"1958":4,"1959":6,"1960":1,"1969":1,"2020":1,"2032":2,"2034":2,"2035":3,"2036":1,"2038":1,"2042":1,"2044":2,"2045":1,"2046":1,"2047":1,"2052":2,"2056":1,"2059":1,"2060":1,"2061":1,"2064":1,"2071":3,"2073":1,"2074":1,"2076":1,"2078":1,"2112":3,"2113":2,"2117":1,"2120":1,"2121":1,"2124":2,"2125":1,"2126":1,"2127":3,"2128":5,"2130":5,"2131":4,"2139":3,"2140":3,"2143":19,"2145":3,"2147":2,"2149":2,"2150":2,"2152":4,"2153":1,"2154":1,"2157":2,"2158":1,"2161":5,"2162":7,"2166":1,"2167":2,"2168":4,"2169":13,"2170":3,"2171":11,"2172":1,"2173":2,"2174":1,"2180":1,"2181":1,"2182":1,"2183":3,"2184":1,"2199":1,"2213":1,"2218":1,"2220":1,"2226":6,"2228":10,"2229":1,"2230":2,"2231":2,"2233":1,"2235":1,"2238":3,"2240":1,"2242":1,"2244":1,"2249":1,"2252":1,"2255":3,"2260":1,"2261":1,"2262":5,"2263":2,"2264":1,"2267":1,"2268":1,"2271":1,"2272":2,"2273":3,"2274":7,"2275":1,"2276":2,"2277":1,"2278":1,"2279":5,"2280":2,"2286":1,"2295":2,"2297":1,"2299":2,"2301":1,"2302":4,"2305":4,"2306":2,"2307":1,"2309":4,"2310":2,"2311":1,"2323":1,"2325":1,"2328":1,"2335":1,"2342":1,"2347":3,"2348":2,"2351":1,"2353":4,"2356":2,"2384":1,"2402":1,"2408":1,"2409":1,"2411":2,"2413":1,"2414":3,"2415":2,"2417":4,"2418":2,"2421":1,"2422":2,"2423":1,"2424":1,"2425":1,"2430":1,"2431":1,"2432":1,"2436":2,"2438":2,"2439":1,"2441":1,"2442":2,"2443":1,"2444":1,"2445":1,"2446":3,"2448":1,"2450":3,"2451":1,"2452":1,"2454":3,"2455":2,"2457":1,"2459":1,"2462":1,"2463":1,"2464":1,"2466":1,"2468":2,"2469":1,"2473":2,"2474":2,"2475":1,"2476":1,"2477":1,"2480":2,"2490":4,"2491":14,"2495":1,"2497":2,"2498":2,"2501":1,"2504":1,"2508":3,"2510":1,"2512":1,"2513":3,"2516":1,"2517":1,"2521":1,"2523":1,"2524":2,"2525":1,"2530":1,"2533":1,"2541":1,"2546":1,"2548":3,"2550":2,"2551":1,"2553":1,"2556":2,"2563":1,"2564":4,"2566":17,"2567":5,"2568":1,"2570":1,"2571":1,"2572":2,"2574":5,"2575":4,"2576":2,"2577":22,"2581":1,"2584":1,"2585":2,"2587":1,"2588":1,"2589":2,"2590":3,"2593":1,"2595":1,"2596":6,"2600":1,"2603":4,"2604":2,"2605":1,"2606":2,"2607":3,"2608":1,"2610":2,"2611":1,"2612":3,"2614":1,"2617":1,"2620":1,"2654":1,"2660":1,"2673":4,"2686":1,"2693":2,"2697":1,"2702":1,"2703":1,"2704":1,"2705":3,"2706":3,"2707":1,"2708":3,"2709":2,"2711":2,"2712":1,"2714":1,"2720":1,"2723":1,"2724":1,"2728":12,"2729":5,"2735":7,"2736":4,"2737":3,"2738":3,"2740":2,"2743":1,"2746":1,"2750":3,"2752":2,"2753":2,"2755":1,"2757":2}}],["innovation",{"2":{"2719":1}}],["inner",{"0":{"1672":1},"1":{"1673":1,"1674":1,"1675":1},"2":{"300":1,"1823":1,"1863":1,"2033":1,"2400":1}}],["inbound",{"2":{"2130":1}}],["inoperable",{"2":{"1287":1}}],["inheriting",{"2":{"2686":1}}],["inheritance",{"2":{"479":1}}],["inherently",{"2":{"1676":1}}],["inherent",{"2":{"1217":1}}],["injection",{"0":{"2079":1}}],["injected",{"2":{"2075":1}}],["inject",{"2":{"567":1,"1527":1}}],["inactivity",{"2":{"1817":2,"2141":1}}],["inactive",{"2":{"1335":1,"1879":1}}],["inappropriate",{"2":{"562":1}}],["inaugural",{"2":{"0":1}}],["ini",{"2":{"414":1,"415":1,"417":1,"423":1,"424":1,"430":1}}],["initiator2target",{"2":{"2130":4}}],["initiated",{"2":{"1804":1}}],["initiative",{"2":{"213":1}}],["initially",{"2":{"2402":1}}],["initial",{"0":{"1684":1,"2434":1},"1":{"2435":1,"2436":1,"2437":1,"2438":1,"2439":1},"2":{"93":1,"130":1,"134":2,"149":2,"188":1,"191":1,"199":2,"266":1,"1400":1,"1804":5,"1839":5,"1935":2,"2402":1,"2438":1,"2567":2,"2675":1,"2734":1}}],["initializing",{"2":{"575":1,"654":1,"1910":1,"2126":1,"2523":1,"2743":1}}],["initializers",{"2":{"1658":1,"1670":1}}],["initialized",{"2":{"574":1,"575":2,"578":2,"581":1,"582":1,"636":1,"1452":1,"1497":1,"1822":1,"2143":1,"2347":1,"2396":1,"2525":1}}],["initialize",{"2":{"565":1,"566":1,"646":1,"673":1,"674":1,"707":1,"738":1,"764":1,"796":1,"826":1,"861":1,"895":1,"929":1,"963":1,"997":1,"1031":1,"1065":1,"1099":1,"1152":1,"1179":1,"1200":1,"1303":2,"1596":1,"1822":1,"2143":1,"2171":1,"2301":1,"2526":1}}],["initializes",{"2":{"49":1}}],["initialization",{"0":{"574":1,"575":1,"578":1,"581":1,"2523":1},"1":{"575":1,"576":2,"577":2,"578":1,"579":2,"580":2,"581":1,"582":2,"583":2,"2524":1,"2525":1,"2526":1},"2":{"149":1,"176":2,"236":1,"249":1,"279":2,"358":1,"359":1,"574":2,"575":1,"581":1,"592":1,"1289":1,"1341":2,"1828":1,"1853":2,"1866":1,"2523":2,"2525":1,"2526":1,"2566":1}}],["initialised",{"2":{"176":1}}],["initialise",{"2":{"65":1,"580":1,"2577":2,"2581":1}}],["initialisation",{"2":{"49":1,"73":1,"77":1,"94":2,"580":3,"2524":1,"2566":1,"2577":4,"2581":1}}],["initilization",{"2":{"149":1}}],["init",{"0":{"576":1,"577":1,"579":1,"582":1,"583":1,"590":1,"646":1,"673":1,"707":1,"738":1,"764":1,"796":1,"826":1,"861":1,"895":1,"929":1,"963":1,"997":1,"1031":1,"1065":1,"1099":1,"1152":1,"1179":1,"1200":1,"1596":1,"2524":1,"2525":1,"2526":1},"1":{"674":1,"765":1,"797":1,"827":1,"862":1,"896":1,"930":1,"964":1,"998":1,"1032":1,"1066":1,"1100":1,"1153":1,"1201":1,"1597":1},"2":{"31":2,"34":4,"49":1,"50":1,"65":1,"114":2,"134":1,"149":2,"176":3,"191":7,"199":1,"236":3,"249":6,"266":2,"277":1,"358":1,"475":1,"565":1,"566":7,"574":4,"576":2,"577":2,"579":2,"580":1,"582":2,"583":2,"589":1,"590":1,"591":2,"707":1,"1245":1,"1331":2,"1332":6,"1333":2,"1399":1,"1464":1,"1593":2,"1594":2,"1598":1,"1599":1,"1600":1,"1729":3,"1816":1,"1822":5,"1823":2,"1849":3,"1850":1,"1853":2,"1855":1,"1862":1,"1866":1,"1905":1,"1907":1,"1910":1,"1952":3,"1960":2,"2042":1,"2044":1,"2126":1,"2130":1,"2140":1,"2143":4,"2301":1,"2353":1,"2438":1,"2524":4,"2525":4,"2526":2,"2566":8,"2576":3,"2577":8,"2581":3,"2610":1,"2757":1}}],["inexpensively",{"2":{"2655":1}}],["inefficient",{"2":{"2051":1,"2577":1}}],["inett",{"2":{"249":1}}],["inertia",{"0":{"1807":1},"2":{"190":2,"191":2,"1802":1,"1807":3}}],["inertial",{"2":{"175":1,"176":1,"1808":1,"1851":2}}],["inland",{"2":{"217":1,"2244":1}}],["inline",{"2":{"50":1,"199":1,"292":2}}],["insulate",{"2":{"2274":1}}],["insulation",{"2":{"2270":3,"2274":2}}],["inspected",{"2":{"2569":1}}],["inspect",{"2":{"2273":1}}],["inspiration",{"2":{"1655":1,"1729":1,"1943":1,"1952":1,"2566":1}}],["insensitive",{"2":{"1440":1}}],["insertion",{"2":{"2255":1}}],["inserting",{"2":{"626":1}}],["inserted",{"2":{"1549":1,"1560":1,"2182":3}}],["inserts",{"2":{"304":1}}],["insert",{"2":{"249":1,"266":1,"554":2,"1555":1,"1586":1,"1832":1,"2183":1,"2355":3,"2392":2,"2394":1}}],["insights",{"2":{"1138":1,"1863":1}}],["inside",{"2":{"169":1,"184":1,"241":1,"253":1,"270":1,"430":1,"485":1,"570":1,"1129":1,"1335":1,"1445":2,"1729":1,"1948":1,"1952":1,"2034":1,"2280":1,"2296":1,"2400":1,"2417":2,"2423":1,"2441":1,"2463":1,"2512":2,"2523":1,"2548":3,"2577":4,"2753":1}}],["ins",{"2":{"530":2,"2355":1,"2392":1}}],["instructs",{"2":{"2577":1}}],["instruct",{"2":{"367":1,"2125":1,"2472":1}}],["instruction",{"2":{"1618":1,"2615":1}}],["instructions",{"0":{"2229":1,"2262":1,"2276":1},"1":{"2230":1,"2231":1,"2232":1,"2233":1,"2234":1,"2235":1,"2236":1,"2237":1,"2238":1,"2239":1,"2240":1,"2241":1,"2242":1,"2243":1,"2244":1,"2245":1,"2246":1,"2247":1,"2248":1,"2249":1,"2263":1,"2264":1},"2":{"36":1,"112":1,"240":1,"323":1,"324":1,"401":1,"535":1,"624":1,"626":1,"1134":1,"1221":1,"1237":1,"1238":1,"1615":1,"1921":1,"2347":1,"2431":1,"2441":2,"2445":1,"2450":1,"2462":1,"2467":1,"2468":1,"2522":1,"2544":1,"2566":1,"2568":1,"2577":3,"2615":1,"2634":1,"2672":2,"2744":1}}],["instructing",{"2":{"23":1,"2475":1}}],["instant",{"2":{"2169":1}}],["instances",{"2":{"277":1,"2478":1}}],["instance",{"2":{"31":3,"34":1,"152":1,"282":3,"341":1,"460":1,"574":1,"657":1,"662":1,"1132":1,"1133":1,"1352":1,"1360":1,"1378":1,"1383":1,"1384":1,"1385":1,"1440":1,"1441":1,"1442":1,"1459":1,"1497":1,"1499":1,"1504":1,"1508":1,"1514":1,"1633":1,"1873":1,"1934":1,"1937":1,"1940":1,"2154":1,"2169":1,"2170":1,"2228":1,"2463":1,"2533":1,"2550":1,"2566":1,"2705":1,"2710":1,"2728":1,"2734":1,"2738":1,"2740":1}}],["installs",{"2":{"2341":1,"2510":1}}],["installer",{"2":{"454":1,"1241":1,"2506":1,"2507":2,"2509":2}}],["installed",{"2":{"23":1,"65":1,"323":1,"364":1,"365":1,"366":2,"402":1,"403":1,"625":1,"627":1,"1241":1,"1441":1,"1560":1,"2031":1,"2183":1,"2255":1,"2431":1,"2460":1,"2497":1,"2499":1,"2508":1,"2510":1}}],["installing",{"0":{"323":1,"2507":1},"1":{"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"2508":1},"2":{"606":1,"2237":1,"2267":1,"2499":1,"2509":1}}],["install",{"0":{"365":1,"366":1,"2431":1,"2496":1,"2497":1,"2499":1},"1":{"2497":1,"2498":1,"2499":1},"2":{"158":2,"160":2,"191":1,"322":1,"323":1,"325":2,"326":2,"327":1,"328":1,"330":1,"331":2,"358":1,"364":2,"365":2,"366":3,"367":1,"429":2,"454":1,"625":1,"626":2,"1241":1,"1413":1,"1441":2,"1454":1,"2183":1,"2238":1,"2251":1,"2278":1,"2351":2,"2431":7,"2456":1,"2458":1,"2459":2,"2460":1,"2461":2,"2462":1,"2463":2,"2464":7,"2465":2,"2466":1,"2467":2,"2495":1,"2496":1,"2497":2,"2510":1,"2513":1}}],["installation",{"0":{"158":1,"625":1,"626":1,"627":1,"2461":1,"2463":1,"2465":1,"2467":1},"1":{"626":1,"627":1,"628":1,"629":1},"2":{"158":2,"173":1,"191":1,"240":1,"324":3,"628":1,"1241":2,"2177":1,"2460":1,"2462":1,"2463":1,"2467":1,"2497":1,"2498":2,"2512":1,"2513":1}}],["instability",{"2":{"73":1}}],["instead",{"2":{"5":1,"17":1,"25":1,"30":1,"33":1,"45":2,"65":1,"70":1,"87":1,"88":1,"95":1,"104":1,"127":1,"128":1,"149":3,"164":1,"184":1,"188":1,"191":1,"195":1,"196":1,"199":1,"202":1,"206":1,"211":1,"215":1,"218":1,"232":2,"234":1,"240":2,"265":1,"268":1,"375":1,"391":1,"414":1,"452":1,"457":2,"465":1,"475":1,"487":1,"502":1,"504":1,"505":2,"506":1,"511":1,"515":1,"529":1,"534":2,"556":1,"580":2,"601":1,"613":1,"624":1,"626":2,"627":1,"639":1,"643":1,"659":1,"662":1,"665":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1122":1,"1125":1,"1144":1,"1212":1,"1213":1,"1225":1,"1229":1,"1255":1,"1270":1,"1273":1,"1274":1,"1276":1,"1290":1,"1300":1,"1303":1,"1316":1,"1320":1,"1330":1,"1335":1,"1351":1,"1352":1,"1363":1,"1364":1,"1368":1,"1370":1,"1385":1,"1431":2,"1440":1,"1447":1,"1451":1,"1458":1,"1459":2,"1462":1,"1471":1,"1508":1,"1518":1,"1527":2,"1528":1,"1557":1,"1564":1,"1633":1,"1658":1,"1666":1,"1675":1,"1677":1,"1678":1,"1723":1,"1730":1,"1804":1,"1821":2,"1849":1,"1851":1,"1858":1,"1859":1,"1877":2,"1910":1,"1912":1,"1929":1,"1937":1,"1944":1,"1948":1,"1954":1,"1959":1,"2031":1,"2034":1,"2072":1,"2075":1,"2122":1,"2134":1,"2149":1,"2161":1,"2181":2,"2182":1,"2183":1,"2226":1,"2230":1,"2240":1,"2254":1,"2259":2,"2269":1,"2277":1,"2279":1,"2291":1,"2327":1,"2339":1,"2341":1,"2349":1,"2355":1,"2402":1,"2406":1,"2417":1,"2428":1,"2444":1,"2463":1,"2477":1,"2478":1,"2491":1,"2498":1,"2502":1,"2523":1,"2556":1,"2558":1,"2564":2,"2566":2,"2568":1,"2570":1,"2575":2,"2576":3,"2577":2,"2584":1,"2607":1,"2666":1,"2680":1,"2688":1,"2695":1,"2701":1,"2708":1,"2734":1,"2735":1,"2736":1,"2737":1,"2738":2,"2740":1,"2745":1,"2750":1}}],["instituted",{"2":{"1":1}}],["invalid",{"2":{"222":1,"236":2,"249":3,"598":1,"600":1,"1182":1,"2302":1}}],["invited",{"2":{"194":1,"206":1}}],["invisible",{"2":{"176":1,"2270":1}}],["invented",{"2":{"1272":1}}],["inversion",{"2":{"222":1}}],["inversely",{"2":{"662":1}}],["inverse",{"2":{"222":1,"509":1}}],["inverts",{"2":{"211":1,"1341":1,"1503":1,"1822":6,"1851":2,"1852":2,"2143":6}}],["inverted",{"2":{"199":1,"1717":1,"1822":1,"2143":1}}],["invert",{"0":{"1503":1,"1913":1,"1914":1},"2":{"114":3,"190":1,"191":1,"211":1,"222":1,"696":1,"1341":1,"1503":2,"1633":1,"1822":13,"1851":2,"1852":3,"1853":1,"1854":1,"1913":2,"1914":5,"2143":9,"2680":2}}],["investigations",{"2":{"134":1}}],["invoking",{"2":{"1940":1,"2130":1,"2311":1,"2508":1}}],["invoke",{"2":{"588":1,"2130":1,"2182":1,"2577":1,"2743":1}}],["invoked",{"2":{"92":1,"515":1,"587":1,"597":1,"598":2,"599":2,"600":1,"1680":1,"1689":1,"1690":1,"1776":1,"1778":1,"1780":1,"1783":1,"1925":1,"2021":1,"2023":1,"2025":1,"2028":1,"2161":1,"2192":1,"2194":1,"2263":1,"2576":1,"2577":1}}],["involve",{"2":{"2177":1,"2267":1}}],["involves",{"2":{"564":1}}],["involved",{"2":{"551":1,"628":1,"2552":1}}],["involving",{"2":{"99":1,"635":1,"1939":1,"2730":1}}],["invocation",{"2":{"176":1,"236":1,"597":1}}],["inputting",{"2":{"1520":1,"1521":1,"2182":1,"2263":1}}],["inputs",{"2":{"580":1,"635":2,"1281":1,"1326":1,"1904":1,"2273":1,"2584":2}}],["input",{"0":{"1277":1,"2181":1,"2183":1,"2186":1,"2188":1,"2190":1,"2191":1,"2192":2,"2194":2,"2196":1,"2197":1,"2198":1,"2322":1},"1":{"2182":1,"2187":1,"2189":1,"2193":2,"2195":2},"2":{"94":1,"114":1,"143":4,"149":1,"176":1,"199":2,"203":2,"236":2,"243":3,"249":2,"385":1,"502":1,"506":1,"515":1,"580":2,"696":6,"707":2,"1142":1,"1329":4,"1355":1,"1445":3,"1491":1,"1591":1,"1630":2,"1633":1,"1640":1,"1673":1,"1674":1,"1675":2,"1676":1,"1880":1,"1907":1,"2066":1,"2125":1,"2146":1,"2162":1,"2176":1,"2177":2,"2179":5,"2180":6,"2182":2,"2183":17,"2184":7,"2186":1,"2187":1,"2188":1,"2189":1,"2190":1,"2191":1,"2192":1,"2193":2,"2194":1,"2195":2,"2196":2,"2197":2,"2198":2,"2199":2,"2211":1,"2214":1,"2215":1,"2216":1,"2219":1,"2221":1,"2222":1,"2231":1,"2237":1,"2238":1,"2243":2,"2252":2,"2273":1,"2313":2,"2326":1,"2347":3,"2384":7,"2519":1,"2566":1,"2574":1,"2575":16,"2615":1,"2684":1,"2689":2,"2693":1,"2702":1,"2756":1}}],["induced",{"2":{"1677":1,"2738":1}}],["industry",{"2":{"149":1}}],["indisinguishable",{"2":{"2576":1}}],["indirect",{"2":{"2183":1}}],["individually",{"2":{"1176":1,"2289":1}}],["individual",{"2":{"485":1,"1217":1,"1218":1,"1377":1,"1416":2,"1454":1,"1460":1,"1655":1,"1722":2,"2031":1,"2171":1,"2262":1,"2290":1,"2533":1}}],["indicated",{"2":{"1451":1,"1822":1,"2143":1,"2147":1,"2148":1,"2567":1}}],["indicate",{"2":{"1359":1,"1386":1,"1451":1,"1959":1,"2423":1,"2491":1}}],["indicates",{"2":{"506":1,"523":1,"524":1,"525":1,"592":2,"1537":1,"1556":1,"1615":1,"1937":1,"2402":1,"2423":1}}],["indicative",{"2":{"2169":1}}],["indication",{"2":{"1331":1,"1332":6,"1342":1,"1726":1,"1733":1,"1947":1,"1957":1}}],["indicating",{"2":{"701":1,"1670":1}}],["indicator",{"0":{"185":1,"1958":1},"1":{"1959":1,"1960":1},"2":{"114":1,"185":1,"191":2,"199":1,"266":1,"511":1,"1457":1,"1534":1,"1539":1,"1540":1,"1715":1,"1717":1,"1720":2,"1726":1,"1733":3,"1743":1,"1745":1,"1947":1,"1957":3,"1958":3,"1959":2,"1970":1,"1972":1,"2518":1,"2566":2,"2677":1,"2697":1}}],["indicators",{"0":{"1714":1,"1733":1,"1776":1,"1778":1,"1780":1,"1783":1,"1957":1,"1960":1,"2021":1,"2023":1,"2025":1,"2028":1,"2685":1},"1":{"1715":1,"1716":1,"1717":1,"1718":1,"1719":1,"1720":1,"1721":1,"1722":1,"1777":1,"1779":1,"2022":1,"2024":1},"2":{"63":1,"93":1,"114":1,"149":1,"185":4,"191":1,"211":1,"222":2,"530":1,"609":1,"630":1,"1714":1,"1715":1,"1733":6,"1957":6,"1958":3,"1959":3,"1960":1,"2041":2,"2646":1,"2685":2,"2697":1}}],["indices",{"2":{"149":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1,"2155":1,"2181":1,"2182":1,"2694":1}}],["indefinite",{"2":{"1873":1}}],["indefinitely",{"2":{"1504":1,"2574":1,"2577":1}}],["indeed",{"2":{"587":1}}],["indenting",{"2":{"453":1}}],["indent",{"2":{"290":1,"453":2,"455":1,"462":1}}],["indented",{"0":{"290":1},"2":{"292":2,"462":1}}],["indentation",{"2":{"249":1,"453":2,"2437":1}}],["independently",{"2":{"1516":1,"1807":1,"1849":1,"2042":1,"2120":1,"2326":1}}],["independent",{"0":{"1524":1},"1":{"1525":1},"2":{"113":1,"114":1,"176":1,"1335":1,"2104":1,"2519":1,"2675":1}}],["indexes",{"2":{"2157":1}}],["indexed",{"2":{"635":2,"639":1,"2401":1,"2501":1,"2596":5}}],["index>",{"2":{"375":1}}],["index",{"0":{"647":1,"675":1,"679":1,"741":1,"745":1,"749":1,"751":1,"764":1,"766":1,"768":1,"772":1,"776":1,"778":1,"780":1,"782":1,"796":1,"798":1,"800":1,"804":1,"808":1,"810":1,"812":1,"814":1,"826":1,"828":1,"830":1,"832":1,"836":1,"840":1,"842":1,"844":1,"846":1,"861":1,"863":1,"865":1,"867":1,"871":1,"875":1,"877":1,"879":1,"881":1,"895":1,"897":1,"899":1,"901":1,"905":1,"909":1,"911":1,"913":1,"915":1,"929":1,"931":1,"933":1,"935":1,"939":1,"943":1,"945":1,"947":1,"949":1,"963":1,"965":1,"967":1,"969":1,"973":1,"977":1,"979":1,"981":1,"983":1,"997":1,"999":1,"1001":1,"1003":1,"1007":1,"1011":1,"1013":1,"1015":1,"1017":1,"1031":1,"1033":1,"1035":1,"1037":1,"1041":1,"1045":1,"1047":1,"1049":1,"1051":1,"1065":1,"1067":1,"1069":1,"1071":1,"1075":1,"1079":1,"1081":1,"1083":1,"1085":1,"1099":1,"1101":1,"1103":1,"1105":1,"1109":1,"1113":1,"1115":1,"1117":1,"1119":1,"1152":1,"1154":1,"1156":1,"1158":1,"1162":1,"1166":1,"1168":1,"1170":1,"1172":1,"1611":1,"1613":1,"1743":1,"1886":1,"1888":1,"1890":1,"1892":1,"1894":1,"1970":1,"2203":1,"2206":1,"2209":1},"1":{"648":1,"676":1,"680":1,"742":1,"746":1,"750":1,"752":1,"765":1,"767":1,"769":1,"773":1,"777":1,"779":1,"781":1,"783":1,"797":1,"799":1,"801":1,"805":1,"809":1,"811":1,"813":1,"815":1,"827":1,"829":1,"831":1,"833":1,"837":1,"841":1,"843":1,"845":1,"847":1,"862":1,"864":1,"866":1,"868":1,"872":1,"876":1,"878":1,"880":1,"882":1,"896":1,"898":1,"900":1,"902":1,"906":1,"910":1,"912":1,"914":1,"916":1,"930":1,"932":1,"934":1,"936":1,"940":1,"944":1,"946":1,"948":1,"950":1,"964":1,"966":1,"968":1,"970":1,"974":1,"978":1,"980":1,"982":1,"984":1,"998":1,"1000":1,"1002":1,"1004":1,"1008":1,"1012":1,"1014":1,"1016":1,"1018":1,"1032":1,"1034":1,"1036":1,"1038":1,"1042":1,"1046":1,"1048":1,"1050":1,"1052":1,"1066":1,"1068":1,"1070":1,"1072":1,"1076":1,"1080":1,"1082":1,"1084":1,"1086":1,"1100":1,"1102":1,"1104":1,"1106":1,"1110":1,"1114":1,"1116":1,"1118":1,"1120":1,"1153":1,"1155":1,"1157":1,"1159":1,"1163":1,"1167":1,"1169":1,"1171":1,"1173":1,"1612":1,"1614":1,"1744":1,"1887":1,"1889":1,"1891":1,"1893":1,"1895":1,"1896":1,"1971":1,"2204":1,"2205":1,"2207":1,"2208":1,"2210":1},"2":{"46":3,"90":10,"105":8,"160":1,"279":1,"532":1,"554":2,"588":1,"636":1,"648":2,"669":2,"672":1,"676":3,"680":2,"690":1,"734":2,"742":3,"746":3,"750":3,"752":3,"758":1,"760":2,"763":1,"765":2,"767":2,"769":3,"773":3,"777":3,"779":3,"781":2,"783":2,"787":1,"792":2,"795":1,"797":2,"799":2,"801":3,"805":3,"809":3,"811":3,"813":2,"815":2,"819":1,"822":2,"825":1,"827":2,"829":2,"831":2,"833":3,"837":3,"841":3,"843":3,"845":2,"847":2,"851":1,"852":1,"857":2,"860":1,"862":2,"864":2,"866":2,"868":3,"872":3,"876":3,"878":3,"880":2,"882":2,"886":1,"891":2,"894":1,"896":2,"898":2,"900":2,"902":3,"906":3,"910":3,"912":3,"914":2,"916":2,"920":1,"925":2,"928":1,"930":2,"932":2,"934":2,"936":3,"940":3,"944":3,"946":3,"948":2,"950":2,"954":1,"959":2,"962":1,"964":2,"966":2,"968":2,"970":3,"974":3,"978":3,"980":3,"982":2,"984":2,"988":1,"993":2,"996":1,"998":2,"1000":2,"1002":2,"1004":3,"1008":3,"1012":3,"1014":3,"1016":2,"1018":2,"1022":1,"1023":1,"1027":2,"1030":1,"1032":2,"1034":2,"1036":2,"1038":3,"1042":3,"1046":3,"1048":3,"1050":2,"1052":2,"1056":1,"1057":1,"1061":2,"1064":1,"1066":2,"1068":2,"1070":2,"1072":3,"1076":3,"1080":3,"1082":3,"1084":2,"1086":2,"1090":1,"1095":2,"1098":1,"1100":2,"1102":2,"1104":2,"1106":3,"1110":3,"1114":3,"1116":3,"1118":2,"1120":2,"1146":1,"1148":2,"1151":1,"1153":2,"1155":2,"1157":2,"1159":3,"1163":3,"1167":3,"1169":3,"1171":2,"1173":2,"1242":1,"1267":1,"1275":1,"1289":1,"1297":1,"1298":1,"1511":2,"1518":13,"1519":3,"1523":5,"1549":4,"1560":7,"1612":2,"1614":2,"1643":1,"1645":1,"1722":2,"1725":7,"1733":2,"1744":2,"1756":1,"1781":2,"1784":2,"1815":2,"1817":2,"1821":1,"1822":4,"1849":1,"1866":2,"1868":1,"1873":1,"1887":2,"1889":2,"1891":2,"1893":2,"1895":2,"1946":7,"1957":2,"1958":5,"1971":2,"1983":1,"2026":2,"2029":2,"2051":4,"2139":2,"2141":2,"2143":4,"2161":1,"2168":1,"2181":1,"2184":2,"2203":1,"2204":1,"2205":1,"2206":1,"2207":2,"2209":1,"2210":2,"2223":1,"2224":2,"2263":1,"2384":2,"2477":1,"2587":3,"2596":3,"2686":1}}],["inf",{"2":{"628":4}}],["infrequently",{"2":{"214":1}}],["infrastructure",{"0":{"51":1,"65":1,"70":1,"76":1,"95":1},"2":{"2250":1}}],["influence",{"2":{"203":1,"574":1,"2729":1}}],["infers",{"2":{"2558":1}}],["inferior",{"2":{"1326":1}}],["infer",{"2":{"133":1,"134":1,"236":1,"266":1,"2557":1}}],["infinity87",{"2":{"211":3}}],["infinity60",{"2":{"143":2,"236":1}}],["infinity",{"2":{"114":3,"134":1,"143":2,"2136":1,"2262":2}}],["infinitely",{"2":{"496":1}}],["infinite",{"2":{"93":1,"179":1,"1684":1}}],["infomation",{"2":{"2553":2}}],["informing",{"2":{"2417":1,"2425":1}}],["informs",{"2":{"597":1}}],["inform",{"2":{"276":1,"685":1,"694":1}}],["informed",{"2":{"275":1}}],["information",{"0":{"529":1,"2229":1,"2520":1},"1":{"2230":1,"2231":1,"2232":1,"2233":1,"2234":1,"2235":1,"2236":1,"2237":1,"2238":1,"2239":1,"2240":1,"2241":1,"2242":1,"2243":1,"2244":1,"2245":1,"2246":1,"2247":1,"2248":1,"2249":1,"2521":1,"2522":1},"2":{"2":1,"14":1,"70":1,"118":1,"132":1,"152":1,"153":1,"169":1,"170":2,"174":1,"182":1,"184":2,"194":1,"196":1,"206":1,"213":1,"247":1,"316":1,"317":1,"378":3,"408":1,"409":1,"410":1,"427":1,"431":1,"435":1,"502":2,"511":2,"512":1,"515":1,"573":1,"597":1,"606":2,"613":1,"624":1,"638":1,"639":1,"661":1,"687":1,"690":1,"701":1,"789":1,"820":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1121":1,"1138":1,"1218":1,"1241":1,"1245":1,"1251":1,"1278":1,"1300":1,"1321":1,"1346":1,"1353":2,"1460":1,"1471":1,"1498":2,"1714":1,"1724":1,"1830":1,"1832":1,"1855":1,"1863":1,"1902":1,"1921":1,"1945":1,"1959":1,"2031":1,"2032":1,"2129":1,"2134":1,"2162":1,"2229":1,"2256":1,"2258":1,"2259":2,"2262":1,"2263":4,"2271":1,"2287":1,"2288":1,"2289":1,"2290":1,"2291":1,"2297":1,"2298":2,"2299":1,"2347":1,"2401":1,"2417":1,"2427":1,"2450":1,"2454":1,"2455":1,"2460":1,"2482":1,"2513":1,"2551":1,"2565":1,"2574":1,"2576":2,"2577":3,"2589":1,"2671":5,"2672":1,"2739":1,"2751":1,"2757":1}}],["info",{"0":{"378":1,"608":1,"611":1,"2298":1,"2555":1,"2671":1},"1":{"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"2556":1,"2557":1,"2558":1,"2559":1,"2672":1,"2673":1,"2674":1,"2675":1,"2676":1,"2677":1,"2678":1,"2679":1,"2680":1,"2681":1,"2682":1,"2683":1,"2684":1,"2685":1,"2686":1,"2687":1,"2688":1,"2689":1,"2690":1,"2691":1,"2692":1,"2693":1,"2694":1,"2695":1,"2696":1,"2697":1,"2698":1,"2699":1,"2700":1},"2":{"70":33,"73":1,"76":4,"99":1,"109":1,"110":1,"111":2,"112":1,"114":5,"134":1,"141":1,"149":1,"160":1,"169":2,"176":3,"184":3,"191":4,"198":1,"199":4,"201":5,"211":22,"213":2,"222":2,"224":2,"232":1,"236":8,"238":1,"249":26,"262":1,"266":3,"277":1,"282":1,"290":2,"374":4,"377":1,"378":4,"384":2,"389":1,"405":3,"430":1,"432":1,"433":2,"434":1,"437":1,"441":1,"470":1,"496":3,"606":3,"607":2,"608":1,"609":1,"610":5,"611":2,"613":2,"614":3,"624":1,"1218":1,"1243":1,"1258":1,"1259":1,"1298":1,"1380":1,"1385":1,"1908":2,"1921":1,"2111":1,"2146":1,"2153":1,"2169":1,"2244":1,"2259":1,"2296":1,"2299":1,"2353":17,"2374":1,"2406":1,"2410":1,"2467":1,"2477":1,"2555":1,"2556":1,"2557":1,"2560":1,"2566":5,"2615":3,"2616":1,"2617":1,"2671":4,"2686":2,"2725":1}}],["int9",{"2":{"2355":1,"2391":1}}],["int7",{"2":{"2355":1,"2391":1}}],["int6",{"2":{"2355":1,"2391":1}}],["int3",{"2":{"2355":1,"2391":1}}],["int2",{"2":{"1905":3,"2355":1,"2391":1}}],["int8",{"2":{"1556":4,"1859":4,"1873":2,"2130":3,"2152":1,"2355":1,"2391":1}}],["intimidates",{"2":{"2417":1}}],["intimidated",{"2":{"356":1,"481":1}}],["intimidating",{"0":{"1262":1}}],["intimate",{"2":{"692":1}}],["int4",{"2":{"313":1,"2355":1,"2391":1,"2407":1}}],["int5",{"2":{"313":1,"2355":1,"2391":1,"2407":1}}],["int16",{"0":{"1646":1,"1649":1},"1":{"1647":1,"1648":1,"1650":1},"2":{"1634":1,"1638":1,"1650":1,"2577":2}}],["int1",{"2":{"313":1,"2355":1,"2391":1,"2407":1}}],["intrinsics",{"2":{"236":1}}],["introducing",{"2":{"2722":1}}],["introduction",{"0":{"262":1,"413":1,"2160":1,"2256":1},"1":{"414":1,"415":1,"2257":1,"2258":1,"2259":1,"2260":1},"2":{"2485":1,"2742":1}}],["introduced",{"2":{"191":1,"211":1,"236":1,"606":1,"2468":1}}],["introduce",{"2":{"191":1,"199":1,"303":1,"1728":1,"1949":2}}],["introspection",{"2":{"176":1,"191":1,"211":1,"222":1,"249":1,"272":1,"277":2}}],["int",{"0":{"675":1,"741":1,"745":1,"768":1,"772":1,"800":1,"804":1,"832":1,"836":1,"867":1,"871":1,"901":1,"905":1,"935":1,"939":1,"969":1,"973":1,"1003":1,"1007":1,"1037":1,"1041":1,"1071":1,"1075":1,"1105":1,"1109":1,"1158":1,"1162":1},"1":{"676":1,"742":1,"746":1,"769":1,"773":1,"801":1,"805":1,"833":1,"837":1,"868":1,"872":1,"902":1,"906":1,"936":1,"940":1,"970":1,"974":1,"1004":1,"1008":1,"1038":1,"1042":1,"1072":1,"1076":1,"1106":1,"1110":1,"1159":1,"1163":1},"2":{"211":1,"453":1,"463":1,"464":1,"465":1,"612":2,"641":4,"676":1,"742":1,"746":1,"769":1,"773":1,"801":1,"805":1,"833":1,"837":1,"868":1,"872":1,"902":1,"906":1,"936":1,"940":1,"970":1,"974":1,"1004":1,"1008":1,"1038":1,"1042":1,"1072":1,"1076":1,"1106":1,"1110":1,"1159":1,"1163":1,"1252":7,"1290":1,"1816":1,"1855":4,"1905":5,"1907":1,"2130":2,"2576":10,"2577":5}}],["intel",{"2":{"2349":1}}],["intelligent",{"2":{"2492":1,"2503":1}}],["intelligently",{"2":{"612":1}}],["intellisense",{"2":{"1845":1,"2509":1,"2510":1,"2513":1}}],["intensity",{"2":{"2033":1}}],["intend",{"2":{"429":1,"474":1,"568":1,"1412":1,"1918":1,"2495":1}}],["intended",{"2":{"240":1,"597":2,"1335":1,"1341":1,"1832":1,"2524":1,"2525":1,"2526":1,"2721":1,"2728":1}}],["intention",{"2":{"1435":1,"2566":1}}],["intent",{"2":{"331":1,"453":1,"2719":1}}],["integral",{"2":{"435":1}}],["integrates",{"2":{"2578":1}}],["integrated",{"2":{"1134":1,"1908":1,"2492":1,"2508":4,"2573":1}}],["integrate",{"2":{"133":1,"609":1,"1851":1}}],["integration",{"0":{"484":1,"2578":1,"2756":1},"1":{"2579":1,"2580":1,"2581":1,"2582":1,"2583":1,"2584":1},"2":{"118":1,"142":1,"199":1,"446":3,"483":1,"484":1,"2441":1,"2578":1,"2579":1,"2637":1,"2756":1}}],["integrations",{"2":{"24":1,"156":1}}],["integers",{"2":{"612":1,"630":1}}],["integer",{"2":{"114":1,"176":1,"191":1,"222":1,"464":1,"465":2,"612":1,"1406":1,"1648":1,"1820":1,"1859":2,"2142":1,"2169":1,"2571":1,"2585":1,"2592":1,"2728":1}}],["interpolation",{"2":{"2596":3}}],["interprets",{"2":{"1499":2}}],["interpret",{"2":{"1451":1,"1677":1,"1881":1,"2300":1,"2738":1}}],["interpreted",{"0":{"2318":1},"1":{"2319":1,"2320":1,"2321":1,"2322":1,"2323":1,"2324":1,"2325":1,"2326":1},"2":{"215":1,"1562":1,"2300":1,"2734":1}}],["intervention",{"2":{"2065":1,"2577":1}}],["intervals",{"2":{"597":1,"1369":1,"1802":1,"2040":6}}],["interval",{"0":{"2083":1,"2087":1,"2101":1},"1":{"2084":1,"2088":1},"2":{"49":1,"63":1,"93":1,"112":2,"502":1,"505":1,"507":1,"660":3,"1221":2,"1794":1,"1803":4,"1804":4,"1805":8,"1807":2,"1808":2,"1817":3,"1836":2,"1912":3,"2038":1,"2084":1,"2087":1,"2088":1,"2101":2,"2141":2,"2690":1,"2697":1,"2699":1}}],["inter",{"2":{"1943":1}}],["intercepting",{"0":{"2412":1},"1":{"2413":1,"2414":1,"2415":1},"2":{"2413":1}}],["interceptable",{"2":{"2150":1,"2152":1}}],["intercept",{"2":{"1853":2,"1854":2,"1858":1,"2413":1,"2414":4,"2415":2}}],["interchangeable",{"2":{"1851":1}}],["interfacing",{"0":{"2152":1}}],["interfaces",{"2":{"502":1,"627":1,"1314":1,"1923":6,"2314":1}}],["interface",{"2":{"49":2,"114":1,"363":1,"654":1,"1177":1,"1294":1,"1397":1,"1918":1,"1920":3,"1921":1,"1923":11,"2301":1,"2353":1,"2427":1,"2479":1,"2576":1,"2639":1,"2668":1}}],["interfere",{"2":{"1284":1,"2740":1}}],["internet",{"2":{"701":1,"2750":1}}],["internally",{"2":{"1845":1,"2113":1,"2576":2,"2577":4}}],["internal",{"2":{"174":1,"211":1,"231":1,"235":1,"638":1,"654":1,"683":1,"1128":1,"1236":1,"1279":1,"1284":1,"1300":1,"1448":1,"1515":1,"1791":1,"1842":1,"2395":1,"2517":1,"2534":1,"2544":1,"2574":2,"2577":2,"2582":1}}],["internals",{"0":{"25":1,"51":1,"65":1,"70":1,"76":1,"95":1},"2":{"263":1,"479":1,"585":1,"1553":1}}],["international",{"0":{"2391":1},"2":{"74":1,"188":1,"191":1,"1355":1,"2182":1,"2325":1,"2355":18,"2391":12,"2703":5}}],["intermittently",{"2":{"556":1,"2518":1}}],["intermediates=yes",{"2":{"211":1}}],["intermediate",{"0":{"1339":1,"1664":1,"2724":1},"1":{"1665":1,"1666":1},"2":{"211":1,"222":1,"409":1,"410":1,"1451":1,"1827":1,"1830":1,"2428":1,"2575":2,"2723":1}}],["intersections",{"0":{"1552":1},"2":{"1547":1,"2125":2}}],["intersection",{"2":{"510":2,"2125":4}}],["interacting",{"2":{"431":1}}],["interaction",{"0":{"431":1},"1":{"432":1,"433":1,"434":1,"435":1},"2":{"307":1,"1534":1,"1676":1,"1872":1,"2065":1}}],["interactions",{"2":{"133":1,"134":1,"431":1}}],["interact",{"2":{"304":1,"416":1,"430":1,"437":1,"2130":1,"2544":1}}],["interacts",{"2":{"263":1}}],["interoperate",{"2":{"218":1}}],["interoperation",{"2":{"182":1}}],["interesting",{"2":{"2262":1,"2407":1,"2408":1}}],["interested",{"2":{"319":1,"321":1,"517":1,"554":1,"1450":1,"2577":1}}],["interest",{"2":{"175":1}}],["interrupter",{"2":{"2160":1}}],["interrupted",{"2":{"505":1,"1252":1,"2160":1,"2162":1,"2169":5}}],["interrupting",{"2":{"1431":1}}],["interruptions",{"2":{"698":1,"2162":1}}],["interruption",{"2":{"505":1}}],["interrupts",{"2":{"698":3,"1902":1,"2729":1}}],["interrupt",{"0":{"194":1,"206":1,"1905":1,"1906":1},"2":{"22":2,"73":1,"112":2,"114":1,"194":10,"199":1,"206":2,"211":2,"698":1,"703":1,"1134":1,"1221":1,"1462":1,"1904":1,"1905":2,"1906":2,"1907":1,"2450":1,"2692":1}}],["into",{"0":{"2450":1,"2452":1},"2":{"18":1,"21":1,"35":1,"36":1,"50":2,"65":2,"72":1,"73":1,"75":1,"99":1,"113":1,"114":7,"119":1,"131":1,"133":1,"134":4,"149":27,"160":3,"173":1,"176":1,"179":1,"188":1,"191":1,"198":2,"201":3,"211":1,"213":1,"218":1,"222":2,"224":1,"236":1,"238":1,"249":11,"254":1,"265":1,"266":1,"272":1,"277":1,"303":1,"304":1,"314":2,"337":1,"344":1,"345":1,"347":1,"349":1,"350":4,"352":1,"373":1,"389":2,"390":2,"391":1,"417":1,"424":1,"436":1,"450":1,"452":1,"481":1,"486":1,"499":1,"509":4,"516":2,"520":1,"526":1,"539":1,"556":1,"560":1,"584":2,"585":1,"592":1,"597":1,"606":1,"609":1,"621":1,"626":1,"628":1,"654":1,"676":1,"712":1,"742":1,"746":1,"750":1,"752":1,"769":1,"773":1,"777":1,"779":1,"801":1,"805":1,"809":1,"811":1,"833":1,"837":1,"841":1,"843":1,"868":1,"872":1,"876":1,"878":1,"902":1,"906":1,"910":1,"912":1,"936":1,"940":1,"944":1,"946":1,"970":1,"974":1,"978":1,"980":1,"1004":1,"1008":1,"1012":1,"1014":1,"1038":1,"1042":1,"1046":1,"1048":1,"1072":1,"1076":1,"1080":1,"1082":1,"1106":1,"1110":1,"1114":1,"1116":1,"1159":1,"1163":1,"1167":1,"1169":1,"1192":1,"1209":1,"1239":1,"1270":3,"1287":2,"1329":1,"1337":1,"1346":2,"1385":1,"1396":1,"1398":1,"1404":1,"1451":1,"1495":2,"1515":2,"1527":1,"1549":1,"1560":1,"1576":1,"1672":1,"1723":1,"1816":1,"1820":1,"1822":2,"1851":1,"1859":1,"1913":1,"1914":2,"1944":1,"2042":1,"2102":1,"2112":1,"2114":1,"2142":1,"2143":2,"2144":1,"2148":1,"2161":2,"2177":1,"2181":1,"2203":1,"2205":1,"2207":1,"2210":1,"2224":1,"2230":1,"2235":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":1,"2247":1,"2255":2,"2277":1,"2279":1,"2280":1,"2302":1,"2303":1,"2306":1,"2327":1,"2349":1,"2356":2,"2398":1,"2408":1,"2411":1,"2417":1,"2436":1,"2438":1,"2439":1,"2440":2,"2450":1,"2452":2,"2453":1,"2458":1,"2463":1,"2473":1,"2513":1,"2523":1,"2546":1,"2552":1,"2553":2,"2566":4,"2571":2,"2572":2,"2573":2,"2576":1,"2577":2,"2579":1,"2585":1,"2615":4,"2631":1,"2669":1,"2672":1,"2704":1,"2705":1,"2707":1,"2710":1,"2721":1,"2724":1,"2748":1,"2757":1}}],["inclination",{"2":{"2546":1}}],["inclusive",{"2":{"1725":1,"1946":1,"2577":1}}],["inclusions",{"2":{"236":1}}],["inclusion",{"2":{"50":1,"74":1,"134":1,"176":2,"234":1,"236":1,"341":1}}],["including",{"2":{"30":1,"33":1,"49":1,"174":1,"234":1,"235":1,"248":1,"277":1,"435":1,"501":1,"643":1,"700":1,"1130":1,"1175":1,"1196":1,"1213":1,"1250":1,"1379":1,"1445":1,"1933":1,"2041":1,"2044":1,"2134":1,"2148":1,"2170":1,"2181":1,"2252":1,"2307":1,"2431":1,"2479":1,"2526":1,"2565":1,"2566":3,"2586":1,"2593":1,"2702":1,"2743":1}}],["include=",{"2":{"2262":2}}],["included",{"0":{"338":1,"341":1},"2":{"10":2,"114":1,"160":1,"273":1,"341":1,"344":1,"345":1,"468":1,"470":1,"501":2,"512":1,"617":1,"643":1,"665":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1175":1,"1196":1,"1213":1,"1351":1,"1376":2,"1377":1,"1398":1,"1439":1,"1908":1,"2051":2,"2228":1,"2262":2,"2263":1,"2405":1,"2509":1,"2567":4,"2585":2,"2587":1,"2601":1,"2718":1,"2749":1,"2753":1}}],["includes",{"0":{"1351":1},"2":{"5":1,"10":2,"12":1,"25":1,"94":1,"114":3,"191":6,"194":1,"211":1,"222":7,"266":4,"337":1,"341":1,"352":1,"515":1,"1271":1,"1314":2,"1455":1,"1733":1,"1957":1,"2032":1,"2228":1,"2250":1,"2263":1,"2321":1,"2410":1,"2512":1,"2546":2,"2573":1,"2585":1,"2592":1,"2702":1,"2707":1,"2751":1,"2752":1}}],["include",{"0":{"2740":1},"2":{"4":1,"12":1,"22":1,"50":1,"73":1,"114":3,"132":1,"133":2,"134":5,"149":2,"176":4,"199":1,"211":1,"222":1,"236":2,"265":1,"276":1,"277":1,"349":1,"374":1,"401":2,"446":1,"453":3,"454":1,"455":1,"467":1,"530":1,"559":2,"563":1,"623":1,"631":2,"657":2,"658":2,"661":2,"1132":2,"1133":2,"1240":1,"1250":1,"1287":1,"1325":1,"1351":3,"1357":1,"1362":2,"1376":1,"1377":2,"1380":1,"1385":6,"1392":1,"1417":1,"1419":1,"1421":1,"1428":1,"1527":2,"1553":1,"1654":1,"1792":1,"1825":1,"1830":1,"1917":1,"1932":1,"2047":1,"2171":3,"2181":1,"2261":1,"2263":6,"2270":1,"2282":1,"2284":1,"2405":1,"2435":1,"2506":1,"2564":2,"2565":1,"2566":8,"2575":1,"2577":4,"2651":1,"2659":1,"2672":2,"2701":1,"2702":2,"2705":1,"2718":1,"2740":1,"2753":2}}],["inch",{"2":{"1849":1}}],["inc",{"2":{"1729":2,"1952":2,"2753":1}}],["incredibly",{"2":{"1683":2,"2601":1}}],["increasing",{"2":{"506":1,"688":1,"1804":1,"1817":1,"1851":1,"2042":1,"2226":2,"2411":1,"2524":1,"2729":1}}],["increase",{"0":{"1477":1,"1757":1,"1758":1,"1763":1,"1764":1,"1984":1,"1985":1,"1990":1,"1991":1,"1996":1,"1997":1,"2002":1,"2003":1},"2":{"134":2,"149":1,"211":2,"504":1,"505":1,"506":1,"601":1,"1245":1,"1400":1,"1433":1,"1435":2,"1456":1,"1477":1,"1515":1,"1553":1,"1554":1,"1560":2,"1572":2,"1580":1,"1727":2,"1728":1,"1757":1,"1758":1,"1763":1,"1764":1,"1793":4,"1821":1,"1851":1,"1948":8,"1949":2,"1950":1,"1984":1,"1985":1,"1990":1,"1991":1,"1996":1,"1997":1,"2002":1,"2003":1,"2034":8,"2042":1,"2054":12,"2055":2,"2064":1,"2106":1,"2107":3,"2272":1,"2360":1,"2369":2,"2371":4,"2376":8,"2377":8,"2584":1,"2728":1}}],["increases",{"2":{"119":1,"215":1,"1406":1,"1408":1,"1730":2,"1950":2,"1954":2,"2055":2,"2357":1,"2375":1,"2524":1,"2688":1,"2695":1,"2728":2}}],["increased",{"2":{"70":1,"175":1,"262":1,"352":1,"598":1,"642":1,"690":2,"1950":1,"2032":1,"2171":1,"2577":2}}],["incrementms",{"2":{"2375":2,"2728":2}}],["incremented",{"2":{"1594":1,"2162":1}}],["incremental",{"2":{"358":1}}],["incrementing",{"2":{"347":1,"1815":1,"2139":1}}],["increments",{"2":{"160":1,"1834":1,"1835":1,"1848":1,"1849":2}}],["increment",{"2":{"114":1,"1452":2,"1815":1,"2035":2,"2139":1,"2728":2}}],["inception",{"2":{"113":1}}],["inconsistencies",{"2":{"2563":1}}],["inconsistent",{"2":{"453":1,"1217":1,"1289":1}}],["incoming",{"2":{"1445":1}}],["incomplete",{"2":{"557":1,"1718":1}}],["incompatible",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"337":1}}],["incorporated",{"2":{"436":1,"499":1}}],["incorporates",{"2":{"352":1,"2648":1}}],["incorrect",{"2":{"114":1,"160":1,"191":2,"198":1,"211":1,"249":1,"629":1,"1557":1,"1562":1,"2066":1,"2348":1,"2353":1,"2437":1}}],["incorrectly",{"2":{"11":1,"689":1,"1437":1,"1830":1,"2279":1}}],["in",{"0":{"3":1,"7":1,"8":1,"15":1,"23":1,"120":1,"218":1,"273":1,"338":1,"546":1,"1234":1,"1240":1,"1279":1,"1280":1,"1298":1,"1354":1,"1358":1,"1363":1,"1416":1,"1539":1,"1540":1,"1551":1,"1552":2,"1553":1,"2108":1,"2144":1,"2423":1,"2613":1},"1":{"1235":1,"1355":1,"1356":1,"1357":1,"1359":1,"1360":1,"1361":1,"1362":1,"1363":1,"1364":1,"1365":1,"1366":1,"1367":1,"1368":1,"1369":1,"1370":1,"1371":1,"1372":1,"1373":1,"1374":1,"1375":1,"1554":1,"1555":1,"1556":1,"2109":1,"2110":1,"2111":1,"2112":1,"2113":1,"2145":1,"2146":1,"2147":1,"2148":1,"2149":1,"2150":1,"2151":1,"2152":1,"2153":1,"2614":1,"2615":1,"2616":1,"2617":1,"2618":1,"2619":1,"2620":1},"2":{"0":1,"3":3,"5":2,"6":1,"9":1,"10":3,"11":1,"15":3,"16":2,"17":1,"19":1,"25":3,"28":1,"31":1,"33":1,"39":1,"48":1,"49":9,"50":5,"52":1,"55":1,"62":1,"64":1,"70":33,"73":2,"74":4,"75":3,"76":2,"77":1,"86":2,"87":1,"92":4,"94":1,"95":2,"99":3,"103":3,"108":1,"109":1,"110":2,"111":1,"113":1,"114":13,"118":1,"119":5,"120":4,"123":2,"124":4,"125":2,"126":1,"132":1,"133":1,"134":13,"142":1,"149":10,"154":2,"156":3,"158":3,"160":3,"169":3,"170":2,"172":2,"174":1,"175":2,"176":21,"179":1,"182":10,"184":3,"185":2,"186":1,"188":1,"189":1,"190":1,"191":13,"194":7,"195":1,"196":2,"199":11,"201":4,"202":2,"204":1,"206":2,"211":9,"213":1,"214":1,"215":2,"218":2,"221":2,"222":10,"228":3,"231":1,"232":1,"233":2,"234":4,"236":4,"240":2,"246":2,"248":1,"249":7,"251":1,"254":1,"262":1,"263":3,"264":1,"265":2,"266":7,"268":1,"272":1,"273":2,"274":1,"276":2,"277":2,"278":1,"282":5,"291":1,"292":1,"314":1,"315":1,"317":5,"319":2,"320":1,"321":1,"322":1,"331":2,"334":1,"335":3,"336":1,"337":4,"341":6,"343":1,"344":1,"345":1,"349":3,"352":3,"354":1,"357":2,"358":1,"364":1,"367":1,"370":10,"371":2,"373":1,"377":1,"378":3,"380":1,"381":2,"382":1,"383":2,"385":2,"386":2,"387":1,"388":1,"389":1,"390":1,"391":1,"393":1,"394":1,"399":2,"404":2,"405":1,"406":1,"424":1,"430":4,"432":3,"436":2,"437":3,"438":1,"439":1,"445":1,"446":3,"452":1,"453":2,"454":2,"455":1,"456":1,"457":2,"460":1,"461":2,"462":2,"469":1,"470":1,"473":2,"474":2,"476":1,"479":1,"480":1,"481":3,"482":1,"483":1,"484":1,"485":1,"496":2,"497":1,"498":1,"502":9,"505":2,"506":3,"508":1,"509":1,"510":3,"511":1,"516":3,"517":1,"521":1,"525":1,"529":5,"530":2,"532":2,"533":2,"534":3,"535":2,"536":1,"537":2,"538":2,"539":1,"540":3,"541":1,"551":1,"552":4,"554":3,"556":3,"557":4,"559":4,"560":6,"561":2,"562":1,"565":2,"566":2,"567":1,"573":1,"574":2,"580":1,"581":1,"584":2,"588":3,"596":1,"597":2,"598":2,"601":1,"607":3,"609":6,"610":3,"613":1,"614":2,"615":1,"616":1,"617":2,"621":1,"623":2,"624":4,"625":1,"626":5,"627":3,"628":3,"629":3,"630":1,"635":3,"636":2,"641":2,"643":2,"644":2,"648":1,"654":1,"656":1,"657":2,"658":2,"659":1,"660":1,"662":1,"669":3,"681":2,"683":1,"684":6,"685":6,"686":2,"688":1,"689":7,"690":3,"691":1,"692":1,"694":11,"696":1,"698":1,"699":1,"700":2,"701":1,"702":1,"703":2,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"726":1,"727":1,"731":1,"734":2,"757":1,"758":1,"760":2,"786":1,"787":1,"789":6,"792":3,"818":1,"819":1,"822":3,"850":1,"851":1,"852":1,"857":3,"885":1,"886":1,"891":3,"919":1,"920":1,"925":3,"953":1,"954":1,"959":3,"987":1,"988":1,"993":3,"1021":1,"1022":1,"1023":1,"1024":6,"1027":3,"1055":1,"1056":1,"1057":1,"1058":6,"1061":3,"1089":1,"1090":1,"1092":6,"1095":3,"1121":2,"1123":1,"1124":2,"1126":2,"1127":2,"1129":2,"1130":2,"1132":5,"1133":5,"1134":2,"1135":1,"1136":1,"1137":3,"1142":7,"1145":1,"1146":1,"1148":3,"1174":1,"1175":2,"1177":4,"1182":1,"1195":2,"1196":2,"1212":1,"1213":2,"1214":6,"1215":1,"1216":1,"1217":1,"1218":2,"1220":1,"1221":1,"1224":2,"1225":1,"1230":1,"1234":1,"1239":1,"1241":1,"1242":2,"1243":1,"1245":2,"1254":2,"1260":1,"1264":1,"1265":2,"1267":1,"1268":1,"1269":1,"1270":4,"1272":1,"1273":3,"1276":2,"1278":2,"1279":1,"1287":3,"1288":4,"1290":4,"1291":2,"1292":2,"1298":2,"1300":7,"1301":1,"1302":2,"1303":2,"1310":2,"1313":1,"1315":1,"1319":1,"1322":1,"1325":4,"1326":9,"1328":1,"1329":1,"1330":2,"1331":2,"1332":6,"1335":2,"1336":1,"1338":2,"1340":5,"1341":4,"1344":1,"1345":1,"1346":3,"1347":3,"1348":1,"1352":3,"1354":2,"1355":1,"1357":1,"1359":1,"1360":2,"1361":3,"1362":1,"1364":3,"1376":3,"1377":6,"1378":1,"1379":4,"1380":1,"1381":1,"1383":9,"1384":5,"1385":3,"1387":1,"1390":1,"1393":2,"1394":3,"1395":1,"1396":3,"1397":1,"1398":6,"1400":2,"1401":2,"1402":2,"1403":1,"1404":4,"1405":3,"1406":2,"1408":1,"1412":2,"1413":1,"1414":1,"1415":1,"1416":3,"1427":1,"1431":2,"1432":1,"1434":1,"1435":1,"1436":1,"1438":3,"1439":2,"1440":3,"1446":3,"1448":1,"1450":3,"1451":9,"1452":2,"1454":1,"1457":1,"1458":1,"1459":1,"1460":1,"1463":1,"1464":1,"1469":1,"1471":2,"1491":1,"1492":1,"1495":2,"1496":1,"1497":3,"1499":3,"1500":3,"1501":2,"1503":1,"1504":1,"1507":1,"1508":1,"1509":2,"1511":3,"1512":1,"1513":1,"1515":2,"1517":3,"1518":13,"1524":1,"1525":1,"1526":1,"1527":4,"1528":1,"1530":1,"1534":6,"1537":2,"1539":1,"1540":1,"1547":3,"1553":3,"1554":4,"1558":2,"1559":1,"1560":1,"1562":2,"1564":1,"1567":1,"1568":1,"1570":2,"1573":5,"1574":1,"1575":1,"1581":1,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"1589":1,"1594":2,"1632":1,"1633":3,"1651":1,"1652":2,"1654":1,"1655":2,"1657":1,"1659":1,"1665":2,"1666":2,"1670":1,"1671":2,"1672":1,"1673":3,"1674":1,"1675":4,"1676":2,"1677":3,"1678":1,"1680":1,"1684":3,"1686":1,"1714":2,"1715":1,"1716":2,"1717":1,"1722":1,"1725":1,"1727":1,"1728":5,"1729":5,"1730":2,"1733":2,"1775":1,"1781":2,"1784":2,"1787":1,"1791":1,"1794":1,"1798":1,"1801":1,"1802":2,"1803":3,"1804":3,"1805":2,"1806":1,"1807":5,"1808":2,"1813":1,"1814":1,"1815":3,"1816":2,"1817":4,"1820":3,"1821":7,"1822":4,"1825":2,"1826":1,"1827":2,"1828":1,"1829":1,"1830":5,"1832":1,"1834":1,"1835":1,"1836":1,"1837":1,"1838":3,"1839":8,"1841":1,"1842":5,"1843":1,"1844":3,"1845":4,"1847":1,"1848":1,"1849":9,"1850":1,"1855":6,"1857":3,"1859":3,"1863":1,"1864":1,"1865":1,"1866":4,"1871":1,"1873":2,"1876":1,"1877":3,"1878":2,"1879":1,"1880":3,"1881":1,"1904":2,"1905":2,"1906":3,"1907":2,"1908":1,"1912":1,"1915":1,"1917":2,"1918":1,"1921":3,"1922":1,"1923":1,"1926":1,"1928":1,"1929":1,"1930":2,"1932":4,"1933":1,"1934":2,"1936":2,"1937":1,"1940":2,"1941":1,"1943":2,"1946":1,"1948":2,"1949":11,"1950":2,"1952":5,"1953":1,"1954":2,"1957":2,"2020":1,"2026":2,"2029":2,"2031":1,"2032":2,"2034":2,"2035":1,"2036":1,"2038":2,"2040":6,"2041":1,"2042":5,"2044":1,"2047":2,"2052":4,"2058":1,"2059":4,"2060":1,"2063":1,"2071":1,"2072":1,"2075":1,"2084":1,"2088":1,"2103":1,"2109":2,"2111":1,"2112":4,"2113":1,"2114":1,"2117":1,"2118":2,"2120":1,"2122":2,"2123":1,"2125":2,"2126":4,"2128":2,"2129":1,"2130":4,"2131":2,"2137":1,"2138":1,"2139":3,"2140":2,"2141":2,"2142":1,"2143":3,"2144":2,"2145":5,"2146":3,"2147":1,"2148":1,"2149":3,"2150":4,"2152":5,"2153":2,"2154":2,"2155":1,"2157":1,"2160":2,"2161":9,"2162":5,"2164":3,"2165":1,"2168":1,"2169":12,"2170":3,"2171":6,"2174":1,"2177":1,"2179":1,"2181":5,"2182":6,"2183":5,"2184":2,"2196":1,"2197":1,"2198":1,"2206":1,"2209":1,"2214":1,"2226":3,"2228":1,"2229":2,"2230":3,"2232":1,"2233":2,"2234":1,"2235":2,"2236":3,"2237":4,"2238":2,"2240":2,"2241":1,"2242":2,"2243":1,"2244":1,"2245":1,"2246":1,"2247":1,"2248":1,"2249":3,"2252":3,"2255":2,"2257":3,"2260":1,"2261":1,"2262":2,"2263":12,"2264":1,"2267":2,"2268":3,"2270":1,"2271":1,"2272":2,"2273":5,"2274":5,"2275":1,"2276":4,"2277":2,"2278":2,"2279":2,"2280":4,"2284":1,"2294":1,"2295":1,"2296":2,"2299":8,"2300":4,"2301":2,"2302":1,"2303":3,"2305":6,"2306":1,"2307":1,"2308":1,"2309":3,"2311":8,"2318":1,"2319":1,"2320":1,"2324":2,"2325":1,"2326":2,"2327":4,"2335":1,"2342":2,"2343":1,"2344":2,"2345":1,"2346":2,"2347":3,"2348":2,"2349":1,"2350":2,"2353":3,"2354":2,"2355":2,"2357":1,"2369":1,"2375":1,"2376":1,"2377":1,"2384":2,"2385":1,"2393":2,"2395":2,"2398":3,"2401":4,"2402":2,"2403":2,"2404":2,"2405":3,"2406":2,"2407":2,"2408":2,"2410":2,"2411":2,"2413":1,"2421":1,"2422":2,"2423":1,"2424":1,"2428":3,"2435":2,"2436":2,"2437":1,"2438":1,"2439":2,"2440":4,"2442":1,"2445":4,"2446":1,"2447":1,"2448":2,"2450":9,"2452":4,"2453":1,"2454":2,"2460":1,"2463":1,"2468":4,"2469":2,"2472":3,"2473":1,"2475":2,"2476":2,"2477":8,"2478":1,"2479":1,"2480":1,"2482":2,"2490":5,"2491":2,"2492":1,"2494":1,"2496":1,"2503":1,"2506":1,"2508":4,"2510":1,"2512":1,"2513":8,"2515":2,"2516":1,"2519":2,"2523":1,"2524":3,"2525":1,"2526":1,"2527":1,"2529":2,"2530":2,"2533":1,"2534":1,"2539":3,"2541":2,"2543":2,"2544":1,"2545":1,"2546":3,"2548":2,"2549":1,"2550":2,"2552":1,"2553":2,"2555":1,"2556":5,"2558":2,"2559":1,"2563":1,"2564":6,"2566":19,"2567":4,"2568":2,"2569":4,"2570":1,"2571":1,"2572":1,"2573":1,"2574":5,"2575":3,"2576":35,"2577":14,"2578":2,"2581":1,"2583":1,"2585":2,"2587":5,"2588":1,"2590":1,"2591":2,"2592":2,"2593":2,"2594":4,"2595":2,"2596":3,"2597":2,"2598":1,"2600":1,"2601":1,"2607":2,"2613":1,"2614":4,"2615":7,"2616":4,"2619":1,"2620":4,"2629":1,"2630":1,"2632":1,"2638":1,"2660":1,"2662":1,"2666":2,"2670":1,"2671":2,"2673":2,"2674":2,"2675":2,"2676":1,"2677":1,"2680":1,"2681":1,"2682":1,"2686":10,"2687":1,"2688":5,"2689":2,"2691":2,"2694":1,"2695":5,"2697":3,"2699":2,"2700":2,"2701":3,"2702":3,"2703":1,"2705":1,"2706":1,"2708":1,"2711":3,"2713":1,"2718":3,"2719":1,"2721":1,"2723":2,"2724":1,"2727":1,"2728":12,"2729":5,"2730":3,"2734":2,"2735":4,"2736":1,"2737":1,"2738":5,"2739":1,"2740":1,"2743":3,"2744":3,"2746":2,"2749":2,"2750":2,"2752":2,"2753":5,"2754":1,"2755":1,"2756":1,"2757":4}}],["is25lp080",{"2":{"2544":2}}],["isc20",{"2":{"1905":1}}],["isc21",{"2":{"1905":1}}],["isdata",{"0":{"1617":1,"1619":1},"1":{"1618":1,"1620":1,"1621":1},"2":{"1618":1,"1620":1,"1621":1}}],["is=yes",{"2":{"1319":1}}],["isp",{"0":{"2327":1,"2329":1,"2331":1,"2333":1,"2638":1},"1":{"2328":1,"2329":1,"2330":2,"2331":1,"2332":2,"2333":1,"2334":2,"2335":1,"2336":1,"2337":1,"2338":1,"2339":1,"2340":1,"2341":1,"2342":1,"2343":1,"2344":1,"2345":1,"2346":1,"2347":1,"2348":1,"2349":1,"2350":1,"2351":1,"2352":1,"2353":1},"2":{"371":1,"629":1,"2235":1,"2236":1,"2327":2,"2328":3,"2329":2,"2331":2,"2333":2,"2336":1,"2338":1,"2339":1,"2341":2,"2342":1,"2347":2,"2349":1}}],["isn",{"0":{"1260":1,"1272":1},"2":{"291":1,"538":1,"578":1,"586":1,"1126":1,"1303":1,"1378":1,"1398":1,"1430":1,"1850":1,"2125":1,"2274":1,"2311":1,"2506":1,"2508":1,"2705":1,"2741":1}}],["ish",{"0":{"288":1},"2":{"160":2,"211":1,"2171":1}}],["issi",{"2":{"114":2,"134":3,"176":1,"211":1,"236":4,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1}}],["issuing",{"2":{"49":1}}],["issued",{"2":{"2721":1}}],["issuecomment",{"2":{"1281":1}}],["issues",{"0":{"2521":1,"2617":1,"2716":1},"1":{"2618":1,"2619":1,"2620":1},"2":{"24":1,"25":1,"86":1,"114":7,"134":8,"149":2,"160":1,"176":3,"199":1,"211":2,"240":1,"263":1,"266":1,"273":1,"276":1,"352":1,"505":2,"539":1,"554":1,"1122":1,"1136":1,"1138":1,"1238":1,"1241":1,"1242":1,"1252":1,"1253":1,"1259":1,"1260":1,"1274":1,"1275":1,"1278":1,"1281":3,"1283":1,"1298":1,"1332":1,"1336":1,"1368":1,"1379":1,"1399":1,"1403":1,"1464":1,"1515":1,"1859":1,"1863":1,"2125":1,"2128":1,"2150":1,"2183":1,"2250":1,"2398":1,"2411":2,"2441":1,"2473":1,"2477":1,"2480":1,"2490":1,"2501":1,"2510":1,"2514":1,"2517":1,"2521":1,"2610":1,"2726":2}}],["issue",{"0":{"1260":1},"2":{"5":1,"6":1,"73":1,"92":1,"114":2,"149":2,"176":4,"191":2,"199":3,"211":3,"236":1,"249":1,"352":1,"485":1,"511":1,"545":1,"553":1,"554":6,"559":1,"560":1,"561":1,"585":1,"609":1,"613":1,"1225":1,"1241":1,"1255":1,"1258":1,"1260":1,"1261":1,"1264":1,"1278":1,"1346":1,"1830":1,"1876":1,"2286":1,"2299":1,"2335":1,"2398":1,"2409":1,"2411":1,"2478":1,"2490":1,"2517":1,"2521":1,"2529":1,"2543":1,"2563":1,"2565":1,"2568":1,"2637":1,"2670":1,"2716":2}}],["is31flcommon",{"2":{"249":1}}],["is31fl3236",{"0":{"755":1,"762":1,"764":1,"766":1,"768":1,"770":1,"772":1,"774":1,"776":1,"778":1,"780":1,"782":1},"1":{"756":1,"757":1,"758":1,"759":1,"760":1,"761":1,"762":1,"763":2,"764":1,"765":2,"766":1,"767":2,"768":1,"769":2,"770":1,"771":2,"772":1,"773":2,"774":1,"775":2,"776":1,"777":2,"778":1,"779":2,"780":1,"781":2,"782":1,"783":2},"2":{"266":1,"755":1,"756":4,"757":7,"758":6,"760":6,"768":1,"769":1,"772":1,"773":1,"776":1,"777":1,"778":1,"779":1,"1724":1,"1945":1,"2695":1}}],["is31fl3218",{"0":{"729":1,"736":1,"738":1,"739":1,"741":1,"743":1,"745":1,"747":1,"749":1,"751":1,"753":1,"754":1},"1":{"730":1,"731":1,"732":1,"733":1,"734":1,"735":1,"736":1,"737":2,"738":1,"739":1,"740":2,"741":1,"742":2,"743":1,"744":2,"745":1,"746":2,"747":1,"748":2,"749":1,"750":2,"751":1,"752":2,"753":1,"754":1},"2":{"236":3,"729":1,"730":4,"731":3,"732":2,"734":6,"741":1,"742":1,"745":1,"746":1,"749":1,"750":1,"751":1,"752":1,"1724":2,"1945":2,"2688":1,"2695":1}}],["is31fl3729",{"0":{"784":1,"794":1,"796":1,"798":1,"800":1,"802":1,"804":1,"806":1,"808":1,"810":1,"812":1,"814":1},"1":{"785":1,"786":1,"787":1,"788":1,"789":1,"790":1,"791":1,"792":1,"793":1,"794":1,"795":2,"796":1,"797":2,"798":1,"799":2,"800":1,"801":2,"802":1,"803":2,"804":1,"805":2,"806":1,"807":2,"808":1,"809":2,"810":1,"811":2,"812":1,"813":2,"814":1,"815":2},"2":{"249":2,"784":1,"785":4,"786":14,"787":6,"788":10,"789":22,"790":1,"792":6,"800":1,"801":1,"804":1,"805":1,"808":1,"809":1,"810":1,"811":1,"1724":1,"1945":1,"2695":1}}],["is31fl3741a",{"2":{"951":1,"953":1,"955":1}}],["is31fl3741",{"0":{"951":1,"961":1,"963":1,"965":1,"967":1,"969":1,"971":1,"973":1,"975":1,"977":1,"979":1,"981":1,"983":1},"1":{"952":1,"953":1,"954":1,"955":1,"956":1,"957":1,"958":1,"959":1,"960":1,"961":1,"962":2,"963":1,"964":2,"965":1,"966":2,"967":1,"968":2,"969":1,"970":2,"971":1,"972":2,"973":1,"974":2,"975":1,"976":2,"977":1,"978":2,"979":1,"980":2,"981":1,"982":2,"983":1,"984":2},"2":{"221":2,"236":2,"249":1,"952":4,"953":15,"954":6,"955":6,"956":22,"957":1,"959":6,"969":1,"970":1,"973":1,"974":1,"977":1,"978":1,"979":1,"980":1,"1724":1,"1945":1,"2688":1,"2695":1}}],["is31fl3746a",{"0":{"1087":1,"1097":1,"1099":1,"1101":1,"1103":1,"1105":1,"1107":1,"1109":1,"1111":1,"1113":1,"1115":1,"1117":1,"1119":1},"1":{"1088":1,"1089":1,"1090":1,"1091":1,"1092":1,"1093":1,"1094":1,"1095":1,"1096":1,"1097":1,"1098":2,"1099":1,"1100":2,"1101":1,"1102":2,"1103":1,"1104":2,"1105":1,"1106":2,"1107":1,"1108":2,"1109":1,"1110":2,"1111":1,"1112":2,"1113":1,"1114":2,"1115":1,"1116":2,"1117":1,"1118":2,"1119":1,"1120":2},"2":{"147":1,"149":1,"221":4,"249":1,"1087":1,"1088":4,"1089":15,"1090":18,"1091":9,"1092":22,"1093":1,"1095":6,"1105":1,"1106":1,"1109":1,"1110":1,"1113":1,"1114":1,"1115":1,"1116":1,"1724":1,"1945":1,"2688":1,"2695":1}}],["is31fl3745",{"0":{"1053":1,"1063":1,"1065":1,"1067":1,"1069":1,"1071":1,"1073":1,"1075":1,"1077":1,"1079":1,"1081":1,"1083":1,"1085":1},"1":{"1054":1,"1055":1,"1056":1,"1057":1,"1058":1,"1059":1,"1060":1,"1061":1,"1062":1,"1063":1,"1064":2,"1065":1,"1066":2,"1067":1,"1068":2,"1069":1,"1070":2,"1071":1,"1072":2,"1073":1,"1074":2,"1075":1,"1076":2,"1077":1,"1078":2,"1079":1,"1080":2,"1081":1,"1082":2,"1083":1,"1084":2,"1085":1,"1086":2},"2":{"147":1,"149":1,"221":4,"249":1,"1053":1,"1054":4,"1055":21,"1056":18,"1057":5,"1058":22,"1059":1,"1061":6,"1071":1,"1072":1,"1075":1,"1076":1,"1079":1,"1080":1,"1081":1,"1082":1,"1724":1,"1945":1,"2688":1,"2695":1}}],["is31fl3743a",{"0":{"1019":1,"1029":1,"1031":1,"1033":1,"1035":1,"1037":1,"1039":1,"1041":1,"1043":1,"1045":1,"1047":1,"1049":1,"1051":1},"1":{"1020":1,"1021":1,"1022":1,"1023":1,"1024":1,"1025":1,"1026":1,"1027":1,"1028":1,"1029":1,"1030":2,"1031":1,"1032":2,"1033":1,"1034":2,"1035":1,"1036":2,"1037":1,"1038":2,"1039":1,"1040":2,"1041":1,"1042":2,"1043":1,"1044":2,"1045":1,"1046":2,"1047":1,"1048":2,"1049":1,"1050":2,"1051":1,"1052":2},"2":{"147":1,"149":1,"221":4,"249":1,"1019":1,"1020":4,"1021":21,"1022":18,"1023":5,"1024":22,"1025":1,"1027":6,"1037":1,"1038":1,"1041":1,"1042":1,"1045":1,"1046":1,"1047":1,"1048":1,"1724":1,"1945":1,"2688":1,"2695":1}}],["is31fl3742a",{"0":{"985":1,"995":1,"997":1,"999":1,"1001":1,"1003":1,"1005":1,"1007":1,"1009":1,"1011":1,"1013":1,"1015":1,"1017":1},"1":{"986":1,"987":1,"988":1,"989":1,"990":1,"991":1,"992":1,"993":1,"994":1,"995":1,"996":2,"997":1,"998":2,"999":1,"1000":2,"1001":1,"1002":2,"1003":1,"1004":2,"1005":1,"1006":2,"1007":1,"1008":2,"1009":1,"1010":2,"1011":1,"1012":2,"1013":1,"1014":2,"1015":1,"1016":2,"1017":1,"1018":2},"2":{"147":1,"149":1,"221":4,"249":1,"985":1,"986":4,"987":15,"988":6,"989":6,"990":22,"991":1,"993":6,"1003":1,"1004":1,"1007":1,"1008":1,"1011":1,"1012":1,"1013":1,"1014":1,"1724":1,"1945":1,"2688":1,"2695":1}}],["is31fl3731",{"0":{"816":1,"824":1,"826":1,"828":1,"830":1,"832":1,"834":1,"836":1,"838":1,"840":1,"842":1,"844":1,"846":1,"2289":1},"1":{"817":1,"818":1,"819":1,"820":1,"821":1,"822":1,"823":1,"824":1,"825":2,"826":1,"827":2,"828":1,"829":2,"830":1,"831":2,"832":1,"833":2,"834":1,"835":2,"836":1,"837":2,"838":1,"839":2,"840":1,"841":2,"842":1,"843":2,"844":1,"845":2,"846":1,"847":2},"2":{"221":4,"236":1,"816":1,"817":4,"818":8,"819":6,"820":2,"822":6,"832":1,"833":1,"836":1,"837":1,"840":1,"841":1,"842":1,"843":1,"1724":1,"1945":1,"2688":1,"2695":1}}],["is31fl3736b",{"2":{"885":1,"887":1}}],["is31fl3736",{"0":{"883":1,"893":1,"895":1,"897":1,"899":1,"901":1,"903":1,"905":1,"907":1,"909":1,"911":1,"913":1,"915":1},"1":{"884":1,"885":1,"886":1,"887":1,"888":1,"889":1,"890":1,"891":1,"892":1,"893":1,"894":2,"895":1,"896":2,"897":1,"898":2,"899":1,"900":2,"901":1,"902":2,"903":1,"904":2,"905":1,"906":2,"907":1,"908":2,"909":1,"910":2,"911":1,"912":2,"913":1,"914":2,"915":1,"916":2},"2":{"211":3,"221":2,"236":2,"249":1,"883":1,"884":4,"885":14,"886":18,"887":7,"888":22,"889":1,"891":6,"901":1,"902":1,"905":1,"906":1,"909":1,"910":1,"911":1,"912":1,"1724":1,"1945":1,"2688":1,"2695":1}}],["is31fl3737b",{"2":{"160":1,"919":1,"921":1}}],["is31fl3737",{"0":{"917":1,"927":1,"929":1,"931":1,"933":1,"935":1,"937":1,"939":1,"941":1,"943":1,"945":1,"947":1,"949":1},"1":{"918":1,"919":1,"920":1,"921":1,"922":1,"923":1,"924":1,"925":1,"926":1,"927":1,"928":2,"929":1,"930":2,"931":1,"932":2,"933":1,"934":2,"935":1,"936":2,"937":1,"938":2,"939":1,"940":2,"941":1,"942":2,"943":1,"944":2,"945":1,"946":2,"947":1,"948":2,"949":1,"950":2},"2":{"114":2,"176":1,"191":1,"221":2,"236":2,"917":1,"918":4,"919":14,"920":6,"921":7,"922":22,"923":1,"925":6,"935":1,"936":1,"939":1,"940":1,"943":1,"944":1,"945":1,"946":1,"1724":1,"1945":1,"2688":1,"2695":1}}],["is31fl3733b",{"2":{"134":1,"850":1,"853":1}}],["is31fl3733",{"0":{"848":1,"859":1,"861":1,"863":1,"865":1,"867":1,"869":1,"871":1,"873":1,"875":1,"877":1,"879":1,"881":1,"2290":1},"1":{"849":1,"850":1,"851":1,"852":1,"853":1,"854":1,"855":1,"856":1,"857":1,"858":1,"859":1,"860":2,"861":1,"862":2,"863":1,"864":2,"865":1,"866":2,"867":1,"868":2,"869":1,"870":2,"871":1,"872":2,"873":1,"874":2,"875":1,"876":2,"877":1,"878":2,"879":1,"880":2,"881":1,"882":2},"2":{"93":1,"149":1,"221":2,"236":2,"249":2,"848":1,"849":4,"850":22,"851":18,"852":5,"853":7,"854":22,"855":1,"857":6,"867":1,"868":1,"871":1,"872":1,"875":1,"876":1,"877":1,"878":1,"1724":1,"1945":1,"2688":1,"2695":1}}],["is31common",{"2":{"249":4}}],["is31",{"2":{"114":1}}],["isolated",{"2":{"2592":1}}],["isolation",{"2":{"241":2}}],["iso",{"2":{"102":3,"114":2,"122":3,"143":2,"149":2,"159":2,"168":2,"191":1,"199":1,"211":5,"217":2,"226":4,"236":2,"266":2,"277":1,"370":2,"385":1,"1268":3,"1347":1,"1355":2,"1378":2,"2268":1,"2302":5,"2553":1,"2617":1,"2619":2,"2686":5,"2703":18}}],["is",{"0":{"141":1,"339":1,"545":1,"547":1,"1240":1,"1252":1,"1257":1,"1483":1,"1488":1,"1741":1,"1877":1,"1894":1,"1940":1,"1941":1,"1968":1,"2313":1},"1":{"340":1,"1484":1,"1489":1,"1742":1,"1895":1,"1896":1,"1969":1},"2":{"0":2,"3":1,"7":1,"9":2,"10":2,"13":2,"14":1,"15":1,"18":4,"19":2,"23":2,"24":1,"25":1,"28":2,"30":1,"31":3,"34":2,"36":1,"39":2,"45":2,"48":1,"49":4,"50":3,"52":2,"70":23,"76":1,"88":1,"90":1,"94":1,"98":1,"103":1,"104":1,"113":2,"114":1,"118":1,"120":2,"123":1,"126":1,"127":1,"130":1,"134":3,"141":1,"149":4,"152":1,"153":3,"154":3,"156":3,"160":2,"166":1,"176":3,"179":1,"191":3,"194":4,"195":4,"196":1,"199":5,"201":2,"202":1,"203":2,"204":1,"206":1,"209":3,"211":2,"213":2,"218":1,"222":1,"224":3,"228":1,"230":1,"232":2,"233":3,"234":1,"235":2,"236":3,"238":1,"240":1,"244":1,"246":2,"249":4,"251":1,"262":2,"263":1,"266":2,"268":1,"273":1,"276":2,"282":3,"286":1,"288":1,"290":5,"292":1,"293":2,"300":1,"303":1,"304":1,"306":1,"307":1,"308":1,"312":1,"313":1,"315":4,"316":1,"317":2,"322":1,"323":1,"324":2,"325":1,"328":1,"329":1,"331":3,"334":1,"335":1,"336":1,"337":3,"339":1,"340":6,"341":10,"343":2,"344":2,"345":2,"346":3,"347":1,"349":2,"350":5,"352":2,"353":2,"354":1,"355":2,"366":1,"370":2,"371":5,"374":4,"378":1,"380":1,"381":1,"383":1,"385":2,"386":1,"387":1,"391":1,"393":2,"394":2,"402":1,"403":1,"405":1,"413":1,"416":1,"428":2,"430":6,"431":1,"433":1,"434":1,"435":1,"436":1,"437":1,"440":2,"445":1,"453":6,"454":2,"455":1,"457":2,"458":1,"462":1,"466":2,"467":3,"468":2,"469":1,"470":2,"471":1,"472":1,"474":3,"479":4,"481":1,"482":4,"483":2,"484":2,"493":3,"495":1,"496":2,"497":2,"501":2,"502":17,"505":6,"506":5,"509":11,"510":8,"511":8,"512":3,"513":5,"515":3,"516":2,"519":1,"520":2,"521":1,"522":1,"526":1,"527":1,"529":7,"532":1,"533":1,"534":9,"537":2,"540":2,"541":1,"542":1,"546":1,"551":1,"552":2,"554":3,"555":1,"556":2,"557":3,"560":4,"562":1,"564":2,"566":1,"567":2,"568":1,"569":2,"570":2,"571":2,"572":2,"573":2,"574":5,"575":2,"578":4,"580":2,"581":2,"584":1,"586":1,"588":6,"589":3,"590":1,"592":10,"597":4,"598":7,"599":1,"600":1,"602":1,"605":1,"606":2,"607":1,"609":3,"610":2,"612":1,"614":2,"619":2,"620":2,"621":2,"623":2,"624":1,"626":3,"627":1,"628":1,"629":2,"630":1,"635":2,"636":3,"638":1,"639":1,"641":1,"643":1,"654":1,"655":2,"656":1,"659":3,"660":1,"661":1,"662":2,"665":1,"681":5,"683":1,"684":5,"685":2,"686":1,"687":1,"688":5,"689":4,"690":3,"691":1,"692":5,"693":1,"694":1,"695":2,"696":4,"697":2,"698":4,"700":1,"701":1,"702":1,"703":4,"707":1,"726":2,"730":1,"732":1,"734":2,"756":1,"758":1,"760":2,"785":1,"787":1,"790":1,"792":2,"817":1,"819":1,"822":2,"849":1,"855":1,"857":2,"884":1,"889":1,"891":2,"918":1,"920":1,"923":1,"925":2,"952":1,"954":1,"957":1,"959":2,"986":1,"988":1,"991":1,"993":2,"1020":1,"1025":1,"1027":2,"1054":1,"1059":1,"1061":2,"1088":1,"1093":1,"1095":2,"1121":2,"1122":3,"1123":3,"1125":3,"1126":5,"1127":1,"1128":4,"1129":4,"1130":1,"1132":3,"1133":4,"1134":4,"1137":1,"1142":4,"1143":1,"1144":1,"1146":1,"1148":2,"1175":1,"1176":2,"1177":2,"1181":1,"1182":1,"1196":1,"1197":1,"1205":1,"1211":1,"1212":1,"1213":1,"1214":1,"1215":1,"1216":1,"1217":1,"1219":2,"1221":2,"1222":1,"1223":2,"1225":6,"1230":2,"1235":1,"1236":1,"1238":3,"1243":1,"1245":1,"1250":3,"1251":1,"1252":2,"1253":1,"1254":3,"1257":1,"1258":2,"1259":1,"1260":1,"1270":3,"1271":1,"1272":3,"1273":2,"1275":1,"1276":1,"1278":4,"1283":2,"1284":6,"1286":1,"1287":5,"1290":1,"1293":2,"1294":1,"1298":1,"1300":6,"1302":1,"1303":6,"1304":1,"1310":1,"1312":1,"1313":1,"1314":1,"1316":3,"1317":2,"1318":1,"1320":1,"1321":2,"1325":3,"1326":14,"1328":1,"1329":18,"1330":1,"1331":5,"1332":8,"1333":1,"1334":1,"1335":9,"1336":4,"1338":1,"1339":1,"1340":5,"1341":8,"1344":6,"1345":1,"1346":1,"1351":1,"1353":2,"1355":1,"1356":2,"1357":1,"1359":16,"1360":6,"1361":1,"1365":3,"1368":3,"1375":7,"1377":3,"1378":1,"1379":2,"1380":3,"1381":1,"1383":3,"1384":2,"1388":1,"1390":1,"1391":1,"1392":1,"1393":1,"1394":1,"1398":6,"1399":11,"1400":4,"1401":1,"1403":4,"1404":1,"1405":2,"1406":3,"1410":1,"1411":9,"1414":3,"1415":3,"1416":6,"1423":3,"1425":1,"1427":1,"1430":7,"1431":5,"1435":1,"1436":3,"1438":5,"1439":3,"1440":3,"1441":6,"1442":1,"1445":6,"1446":3,"1448":2,"1449":2,"1450":5,"1451":11,"1452":2,"1454":2,"1455":1,"1457":1,"1458":3,"1459":4,"1460":1,"1461":1,"1462":2,"1463":3,"1464":1,"1469":1,"1471":4,"1484":1,"1489":1,"1491":3,"1492":3,"1494":1,"1495":5,"1496":3,"1497":4,"1499":9,"1500":1,"1501":3,"1503":2,"1504":2,"1505":2,"1506":5,"1507":1,"1508":1,"1510":1,"1511":3,"1512":1,"1514":1,"1516":1,"1518":5,"1519":2,"1520":2,"1521":4,"1522":1,"1524":2,"1525":5,"1526":1,"1527":1,"1528":4,"1529":2,"1530":2,"1531":1,"1533":4,"1534":3,"1537":1,"1538":1,"1551":1,"1553":3,"1554":2,"1555":1,"1556":3,"1560":2,"1562":1,"1563":2,"1567":2,"1568":4,"1570":4,"1573":14,"1574":1,"1576":2,"1577":4,"1579":2,"1581":1,"1582":5,"1594":3,"1598":1,"1599":1,"1600":1,"1609":1,"1612":2,"1613":1,"1614":2,"1615":1,"1616":1,"1618":1,"1621":1,"1626":1,"1628":1,"1630":2,"1631":1,"1632":1,"1633":4,"1638":1,"1648":1,"1653":1,"1654":1,"1655":1,"1656":2,"1657":1,"1658":2,"1660":1,"1663":1,"1665":3,"1666":1,"1668":2,"1670":10,"1671":5,"1672":1,"1673":7,"1674":7,"1675":18,"1678":1,"1680":2,"1682":2,"1683":2,"1684":4,"1693":1,"1694":3,"1696":1,"1697":1,"1714":1,"1715":1,"1716":1,"1717":2,"1718":2,"1719":1,"1722":2,"1724":2,"1725":13,"1726":3,"1728":1,"1730":1,"1731":1,"1733":1,"1736":1,"1738":1,"1740":1,"1742":1,"1749":1,"1752":1,"1754":1,"1758":1,"1760":1,"1764":1,"1766":1,"1769":1,"1775":1,"1776":2,"1778":2,"1780":2,"1783":2,"1794":1,"1798":1,"1802":1,"1803":6,"1804":4,"1805":7,"1806":3,"1807":3,"1808":1,"1809":1,"1814":1,"1815":1,"1816":5,"1817":2,"1819":1,"1820":3,"1821":6,"1822":16,"1824":1,"1825":2,"1826":1,"1827":4,"1828":1,"1830":1,"1831":1,"1832":1,"1834":1,"1835":2,"1836":3,"1839":8,"1841":1,"1842":4,"1844":1,"1846":1,"1847":2,"1848":1,"1849":6,"1850":1,"1851":6,"1852":2,"1855":13,"1857":4,"1858":1,"1859":7,"1864":6,"1865":1,"1866":1,"1868":1,"1869":1,"1870":2,"1871":2,"1873":4,"1874":1,"1876":1,"1877":4,"1879":3,"1880":1,"1881":2,"1896":1,"1903":1,"1904":1,"1908":2,"1910":1,"1912":2,"1915":1,"1917":1,"1921":4,"1923":6,"1929":3,"1932":5,"1933":4,"1934":2,"1935":2,"1936":1,"1937":3,"1939":2,"1940":8,"1941":3,"1943":1,"1945":2,"1946":13,"1947":4,"1948":10,"1949":2,"1950":3,"1954":2,"1955":1,"1957":1,"1959":2,"1960":1,"1963":1,"1965":1,"1967":1,"1969":1,"1976":1,"1979":1,"1981":1,"1985":1,"1987":1,"1991":1,"1993":1,"1997":1,"1999":1,"2003":1,"2005":1,"2008":1,"2014":1,"2020":1,"2021":2,"2023":2,"2025":2,"2028":2,"2031":1,"2032":3,"2034":10,"2035":1,"2036":3,"2037":1,"2038":1,"2040":1,"2041":2,"2042":4,"2044":3,"2045":2,"2051":4,"2055":2,"2056":3,"2057":1,"2060":1,"2062":1,"2063":3,"2065":1,"2066":1,"2071":6,"2072":2,"2073":3,"2074":3,"2076":1,"2085":1,"2087":1,"2091":1,"2093":1,"2095":1,"2097":1,"2102":1,"2107":6,"2111":1,"2112":2,"2113":3,"2114":4,"2118":2,"2119":1,"2120":1,"2123":1,"2124":2,"2125":7,"2126":4,"2127":3,"2128":4,"2129":10,"2130":5,"2131":12,"2132":4,"2133":1,"2134":1,"2139":1,"2140":5,"2142":2,"2143":9,"2144":1,"2145":1,"2147":5,"2148":3,"2149":4,"2150":1,"2152":13,"2154":2,"2155":3,"2156":1,"2158":2,"2161":15,"2162":22,"2167":1,"2168":1,"2169":24,"2170":2,"2171":16,"2173":2,"2177":2,"2180":6,"2181":3,"2182":1,"2183":6,"2184":1,"2192":1,"2194":1,"2196":1,"2197":1,"2198":1,"2212":1,"2213":1,"2226":6,"2228":4,"2229":1,"2230":2,"2232":2,"2233":1,"2234":4,"2235":3,"2236":3,"2237":3,"2238":1,"2239":1,"2240":2,"2241":2,"2242":3,"2243":3,"2244":3,"2245":3,"2247":3,"2249":2,"2251":1,"2252":4,"2254":1,"2255":1,"2257":1,"2258":2,"2259":4,"2260":1,"2262":6,"2263":9,"2266":1,"2267":1,"2268":2,"2269":1,"2270":2,"2272":2,"2273":5,"2274":2,"2275":1,"2276":3,"2277":3,"2278":1,"2279":3,"2280":1,"2282":1,"2284":2,"2294":1,"2295":3,"2297":1,"2298":1,"2299":2,"2300":3,"2301":1,"2302":4,"2303":1,"2305":3,"2308":1,"2309":1,"2310":1,"2311":17,"2313":1,"2317":1,"2319":2,"2320":3,"2321":1,"2322":1,"2323":2,"2324":3,"2325":1,"2327":2,"2328":2,"2335":1,"2339":1,"2341":1,"2342":1,"2344":3,"2345":2,"2346":1,"2347":5,"2348":2,"2349":2,"2350":4,"2353":5,"2354":1,"2356":1,"2363":1,"2366":1,"2367":2,"2376":10,"2377":10,"2384":1,"2400":3,"2402":4,"2403":1,"2405":1,"2406":4,"2407":5,"2408":1,"2411":4,"2413":1,"2414":1,"2417":2,"2418":2,"2421":1,"2422":1,"2423":2,"2424":1,"2425":1,"2427":3,"2428":3,"2429":1,"2431":1,"2432":1,"2436":2,"2441":2,"2442":2,"2446":2,"2448":1,"2450":4,"2451":2,"2452":1,"2454":4,"2455":1,"2459":2,"2460":2,"2463":2,"2468":3,"2469":4,"2473":1,"2474":2,"2475":1,"2476":2,"2477":4,"2478":2,"2479":3,"2480":6,"2481":1,"2490":5,"2491":7,"2492":2,"2495":1,"2496":1,"2497":4,"2498":3,"2501":1,"2503":2,"2506":4,"2507":2,"2509":1,"2510":2,"2513":2,"2514":1,"2515":2,"2516":3,"2517":1,"2518":4,"2519":3,"2521":1,"2522":1,"2523":4,"2524":6,"2525":5,"2526":4,"2527":1,"2529":2,"2530":2,"2539":2,"2541":5,"2543":2,"2544":2,"2545":1,"2546":2,"2548":7,"2549":1,"2550":1,"2551":1,"2554":1,"2555":1,"2556":1,"2557":1,"2558":1,"2559":1,"2560":1,"2563":1,"2564":9,"2566":12,"2567":2,"2568":2,"2569":5,"2570":2,"2572":1,"2573":4,"2574":3,"2575":5,"2576":36,"2577":29,"2578":3,"2581":1,"2584":3,"2585":4,"2586":2,"2587":2,"2590":3,"2591":2,"2592":4,"2593":2,"2594":1,"2595":2,"2596":6,"2597":6,"2603":4,"2605":2,"2606":1,"2607":1,"2608":1,"2611":6,"2614":4,"2615":3,"2616":1,"2619":2,"2625":1,"2627":1,"2629":1,"2630":1,"2633":1,"2634":1,"2641":3,"2642":1,"2647":1,"2651":1,"2654":2,"2659":1,"2660":1,"2664":2,"2666":1,"2669":2,"2671":2,"2673":2,"2677":2,"2680":1,"2686":3,"2688":1,"2689":1,"2691":1,"2694":2,"2695":1,"2701":3,"2702":4,"2704":3,"2705":1,"2710":1,"2712":2,"2714":2,"2715":1,"2716":1,"2718":3,"2719":6,"2720":2,"2721":1,"2727":5,"2728":7,"2729":11,"2734":4,"2735":11,"2736":7,"2737":6,"2738":1,"2739":1,"2740":4,"2743":5,"2744":6,"2745":6,"2746":3,"2747":1,"2748":1,"2749":6,"2750":1,"2752":2,"2753":1,"2757":4}}],["bndu",{"2":{"1793":1,"2371":1}}],["bndd",{"2":{"1793":1,"2371":1}}],["bn009",{"2":{"207":1,"211":1}}],["bn009r2",{"2":{"207":1}}],["bn006",{"2":{"191":1}}],["b♭",{"2":{"1793":6,"2371":6}}],["bb5",{"2":{"1793":1,"2371":1}}],["bb4",{"2":{"1793":1,"2371":1}}],["bb3",{"2":{"1793":1,"2371":1}}],["bb2",{"2":{"1793":1,"2371":1}}],["bb1",{"2":{"1793":1,"2371":1}}],["bb",{"2":{"1793":1,"2371":1}}],["bbs",{"2":{"266":1}}],["b9",{"2":{"1547":1,"2530":1}}],["b8",{"2":{"1469":1,"2524":1,"2530":1}}],["b87",{"2":{"211":2}}],["b3",{"2":{"576":2,"1176":3,"1562":6,"1591":1,"1717":1,"1793":1,"2330":1,"2332":2,"2334":1,"2371":1,"2530":2,"2558":1}}],["b2",{"2":{"576":2,"635":1,"1176":3,"1320":1,"1395":2,"1459":1,"1466":1,"1562":6,"1591":1,"1717":1,"1793":1,"2330":1,"2332":2,"2334":1,"2371":1,"2516":1,"2530":2,"2558":1,"2689":2}}],["b11",{"2":{"2530":1}}],["b10",{"2":{"2530":1}}],["b15",{"2":{"635":1,"1177":1,"2530":1}}],["b15288fb87",{"2":{"95":1}}],["b14",{"2":{"635":1,"1177":1,"1547":1,"2530":1}}],["b12",{"2":{"635":1,"1557":1,"1558":1,"2530":1}}],["b13",{"2":{"635":1,"1177":1,"1557":1,"1558":1,"2530":1}}],["b1²",{"2":{"635":1}}],["b1¹",{"2":{"635":1}}],["b1",{"2":{"576":2,"635":4,"1176":2,"1395":2,"1466":1,"1562":6,"1591":1,"1717":1,"1793":1,"2330":1,"2332":1,"2334":1,"2371":1,"2450":1,"2530":2,"2558":1,"2689":2}}],["b7",{"2":{"502":5,"510":2,"655":2,"703":1,"707":2,"1130":1,"1176":1,"1197":1,"1387":2,"1466":1,"2124":1,"2263":1,"2530":1,"2558":1}}],["b0²",{"2":{"635":1}}],["b0¹",{"2":{"635":1}}],["b007",{"2":{"629":1,"2243":1}}],["b0",{"2":{"502":2,"511":1,"576":2,"635":4,"1176":2,"1316":1,"1320":3,"1717":1,"2131":1,"2237":1,"2334":2,"2530":3,"2558":1,"2689":2}}],["b6",{"2":{"502":5,"633":1,"703":1,"707":2,"1127":1,"1130":1,"1176":1,"1387":2,"1466":1,"1591":1,"1849":1,"2330":1,"2332":1,"2530":2,"2558":1}}],["b5",{"2":{"502":5,"633":1,"655":2,"1176":2,"1387":2,"1466":1,"1793":1,"1849":1,"2332":1,"2371":1,"2519":1,"2530":2,"2558":1,"2697":1}}],["bgr",{"2":{"1216":1}}],["bg",{"2":{"433":1,"435":1,"2577":9}}],["bdfc",{"2":{"314":1,"315":1}}],["bdn9",{"2":{"149":1,"1312":1}}],["bc417",{"2":{"1491":1}}],["bcat",{"2":{"222":1}}],["bc",{"2":{"211":1}}],["bcd",{"2":{"149":1,"2699":1}}],["bx",{"2":{"211":2}}],["bsd",{"2":{"2180":2,"2183":2,"2184":3,"2384":3}}],["bspace",{"2":{"1530":1}}],["bspc",{"2":{"195":1,"313":1,"530":4,"1303":6,"1448":1,"1506":1,"1511":5,"1527":1,"1663":1,"1932":1,"1937":1,"2228":2,"2355":1,"2388":1,"2407":1,"2735":1,"2736":1}}],["bssl",{"2":{"1527":1}}],["bss",{"2":{"1287":1}}],["bsls",{"2":{"313":1,"530":2,"2355":1,"2388":1,"2407":1}}],["bs",{"2":{"191":3,"259":2,"266":1,"2075":1,"2370":3,"2396":3}}],["bépo",{"2":{"176":1,"2703":1}}],["bpm",{"2":{"1400":1}}],["bp",{"2":{"176":1}}],["bpp",{"2":{"160":1,"236":1}}],["bpiphany",{"2":{"143":2,"149":2}}],["bkf",{"2":{"143":2}}],["b4",{"2":{"111":1,"502":1,"576":2,"633":1,"655":2,"1176":2,"1181":1,"1492":1,"1717":1,"1793":1,"2332":1,"2371":1,"2530":2}}],["bmpgdbserialport",{"2":{"2513":2}}],["bmp",{"2":{"2513":1}}],["bm",{"2":{"134":1,"266":1}}],["bm68hsrgb",{"2":{"122":1,"143":2,"149":1}}],["bm68rgb",{"2":{"102":2,"122":1}}],["bm65hsrgb",{"2":{"122":1,"143":2,"149":1}}],["bm65iso",{"2":{"122":1}}],["bm60hsrgb",{"2":{"122":3}}],["bm60rgb",{"2":{"102":4,"122":2}}],["bm60poker",{"2":{"102":2,"122":1}}],["bm43a",{"2":{"102":2}}],["bm40hsrgb",{"2":{"102":2,"226":2,"236":1}}],["bm16s",{"2":{"102":2}}],["bm16a",{"2":{"102":2,"199":1}}],["b",{"0":{"1970":1,"1972":1},"1":{"1971":1,"1973":1},"2":{"98":2,"199":1,"211":5,"249":1,"266":1,"289":1,"292":1,"299":2,"313":1,"359":1,"360":1,"371":1,"400":2,"502":3,"513":2,"530":2,"554":1,"669":1,"672":1,"734":1,"737":1,"760":1,"763":1,"792":1,"795":1,"822":1,"825":1,"857":1,"860":1,"891":1,"894":1,"925":1,"928":1,"959":1,"962":1,"993":1,"996":1,"1027":1,"1030":1,"1061":1,"1064":1,"1095":1,"1098":1,"1148":1,"1151":1,"1217":2,"1503":1,"1508":3,"1509":1,"1510":2,"1511":1,"1523":2,"1527":1,"1530":1,"1549":3,"1557":4,"1558":3,"1561":1,"1562":2,"1673":2,"1674":2,"1675":2,"1793":13,"1849":2,"1923":2,"1932":2,"1948":1,"1957":1,"1959":1,"1971":1,"1973":1,"2034":1,"2051":10,"2075":1,"2130":2,"2131":1,"2148":2,"2153":2,"2169":1,"2288":1,"2323":2,"2355":3,"2371":13,"2376":1,"2386":3,"2407":1,"2450":2,"2480":3,"2684":2,"2730":1,"2731":10,"2732":29,"2733":17}}],["btn",{"2":{"1912":8}}],["btn8",{"2":{"1801":1,"2372":1}}],["btn7",{"2":{"1801":1,"2372":1}}],["btn6",{"2":{"1801":1,"2372":1}}],["btn5",{"2":{"1801":1,"2372":1}}],["btn4",{"2":{"1801":1,"2372":1}}],["btn3",{"2":{"1801":1,"2372":1}}],["btn2",{"2":{"1801":1,"2372":1}}],["btn1",{"2":{"1801":1,"1857":2,"2372":1}}],["bt",{"2":{"75":1,"134":1,"1494":1,"2361":1}}],["bfo",{"2":{"45":1}}],["bh",{"2":{"37":3,"159":6,"160":3}}],["baart",{"2":{"2483":1}}],["bay",{"2":{"2272":1}}],["ball",{"2":{"1847":1,"2735":1}}],["balance",{"2":{"211":1}}],["baud",{"0":{"1200":1},"1":{"1201":1},"2":{"1136":12,"1201":2,"2150":1}}],["baudrate",{"0":{"1136":1,"1227":1},"2":{"93":1,"1136":4,"1226":1,"1227":2}}],["baking",{"2":{"524":1}}],["bakingpy",{"2":{"515":1,"2263":1}}],["bakeneko",{"2":{"211":1}}],["bakeneko80",{"2":{"143":2}}],["bakeneko60",{"2":{"143":2}}],["bakeneko65",{"2":{"102":3,"114":1,"143":4}}],["baz",{"2":{"453":1}}],["bare",{"2":{"2270":1,"2548":1,"2566":2}}],["barring",{"2":{"1879":1}}],["barrel",{"0":{"1543":1,"1544":1},"2":{"1531":1,"1537":2,"1543":1,"1544":1}}],["bar",{"2":{"453":2,"459":1,"475":8,"476":2,"546":1,"570":2,"1677":1,"2145":1,"2153":12,"2183":1,"2738":1}}],["barleycorn",{"2":{"143":2}}],["bamfk",{"2":{"266":1}}],["bamfk1",{"2":{"222":1}}],["babyv",{"2":{"236":1}}],["badly",{"2":{"557":1}}],["bad",{"2":{"149":1,"453":1,"458":1,"474":1,"476":1,"1353":1,"1448":1,"2272":2,"2279":1,"2308":1,"2566":1}}],["battery",{"2":{"630":1,"2131":1}}],["bat43",{"2":{"143":4}}],["batch",{"2":{"133":1,"346":1,"349":1,"350":1,"1781":2,"1784":2,"2026":2,"2029":2}}],["bang",{"2":{"2181":3}}],["banging",{"2":{"1122":1,"1219":1}}],["banger",{"2":{"143":2,"149":1}}],["bandwidth",{"2":{"2546":1}}],["band",{"2":{"1728":10,"1949":20,"2711":6}}],["bandana",{"2":{"211":1}}],["bandominedoni",{"2":{"134":1}}],["bank",{"2":{"49":4,"176":1,"2524":8}}],["basing",{"2":{"2274":1}}],["basis",{"0":{"2264":1},"2":{"1255":1,"1725":1,"1946":1}}],["basics",{"0":{"1356":1},"1":{"1357":1},"2":{"2483":2,"2722":1,"2723":1}}],["basically",{"2":{"586":1,"1822":1,"2143":1,"2568":1}}],["basic",{"0":{"644":1,"657":1,"666":1,"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1,"1214":1,"1390":1,"1457":1,"1591":1,"1659":1,"1681":1,"1789":1,"1817":1,"1920":1,"2074":1,"2141":1,"2179":1,"2257":1,"2277":1,"2355":1,"2385":1},"1":{"667":1,"732":1,"758":1,"787":1,"788":1,"789":1,"790":1,"819":1,"820":1,"851":1,"852":1,"853":1,"854":1,"855":1,"886":1,"887":1,"888":1,"889":1,"920":1,"921":1,"922":1,"923":1,"954":1,"955":1,"956":1,"957":1,"988":1,"989":1,"990":1,"991":1,"1022":1,"1023":1,"1024":1,"1025":1,"1056":1,"1057":1,"1058":1,"1059":1,"1090":1,"1091":1,"1092":1,"1093":1,"1146":1,"1215":1,"1216":1,"1217":1,"1391":1,"1392":1,"1458":1,"1459":1,"1682":1,"1683":1,"1684":1,"1685":1,"1818":1,"1819":1,"2180":1,"2258":1,"2259":1,"2260":1,"2386":1,"2387":1,"2388":1,"2389":1,"2390":1,"2391":1,"2392":1,"2393":1,"2394":1,"2395":1},"2":{"133":1,"134":1,"211":1,"222":1,"231":4,"248":1,"249":2,"307":1,"317":1,"378":1,"381":1,"391":1,"411":1,"540":1,"547":1,"560":1,"607":1,"621":1,"656":1,"660":1,"663":1,"696":1,"1278":1,"1336":1,"1357":1,"1390":2,"1393":1,"1445":1,"1446":1,"1557":1,"1654":1,"1663":1,"1665":1,"1666":2,"1677":1,"1787":2,"1789":2,"1918":1,"2072":1,"2075":1,"2149":1,"2161":1,"2170":1,"2181":1,"2256":1,"2268":1,"2277":1,"2314":1,"2355":1,"2385":1,"2409":1,"2411":1,"2413":1,"2424":1,"2443":1,"2457":1,"2484":1,"2566":2,"2571":2,"2573":1,"2585":1,"2592":1,"2640":1,"2676":1,"2723":1,"2738":1,"2742":2}}],["bashcompinit",{"2":{"450":3}}],["bashrc",{"2":{"450":1,"2468":2}}],["bash",{"2":{"448":1,"2468":2,"2506":1,"2508":1}}],["bastard",{"2":{"249":1}}],["bastardkb",{"2":{"114":1,"176":2,"266":1,"277":1,"2545":1}}],["base64",{"0":{"2099":1},"2":{"2611":2}}],["bases",{"2":{"560":2}}],["base",{"0":{"2407":1},"2":{"125":1,"163":1,"174":1,"185":1,"217":2,"221":1,"226":1,"270":2,"516":1,"532":1,"683":1,"684":4,"691":1,"1314":1,"1335":1,"1338":1,"1339":4,"1446":3,"1458":1,"1519":1,"1524":1,"1804":4,"2302":1,"2367":1,"2402":3,"2406":1,"2407":1,"2408":1,"2443":1,"2477":2,"2480":2,"2492":1,"2540":1,"2542":1,"2546":1,"2553":1,"2564":1,"2567":1}}],["based",{"0":{"25":1,"1387":1,"1389":1},"1":{"1388":1,"1390":1,"1391":1,"1392":1,"1393":1,"1394":1,"1395":1,"1396":1},"2":{"25":1,"49":1,"50":1,"65":2,"74":1,"93":1,"113":1,"114":2,"123":1,"153":1,"160":1,"163":1,"164":1,"172":1,"191":1,"199":1,"210":1,"235":1,"236":1,"248":1,"263":2,"294":1,"349":1,"374":1,"385":1,"386":1,"391":1,"436":1,"508":1,"557":1,"580":6,"655":1,"656":1,"681":2,"689":1,"694":1,"1125":1,"1128":1,"1243":1,"1248":1,"1316":1,"1317":1,"1319":1,"1326":10,"1332":1,"1341":7,"1343":1,"1384":1,"1385":2,"1387":1,"1390":1,"1491":2,"1492":1,"1575":1,"1630":1,"1634":1,"1680":1,"1725":1,"1807":1,"1811":1,"1821":1,"1822":1,"1824":1,"1838":1,"1847":1,"1859":2,"1876":1,"1939":1,"1946":1,"1959":1,"2053":2,"2056":1,"2065":1,"2131":1,"2143":1,"2155":1,"2160":1,"2183":1,"2226":1,"2229":2,"2232":1,"2234":1,"2241":1,"2263":1,"2277":1,"2287":1,"2291":1,"2327":1,"2346":1,"2385":1,"2418":1,"2430":1,"2441":1,"2446":1,"2454":1,"2466":1,"2514":2,"2523":1,"2527":1,"2543":2,"2545":1,"2573":1,"2576":2,"2577":4,"2585":1,"2590":1,"2592":1,"2611":1,"2663":1,"2673":1,"2720":1}}],["backtick",{"2":{"1565":1,"1567":1}}],["backticks",{"2":{"292":1}}],["backlit",{"2":{"1454":1}}],["backlightx",{"2":{"2300":1}}],["backlighting",{"0":{"1454":1,"2360":1},"1":{"1455":1,"1456":1,"1457":1,"1458":1,"1459":1,"1460":1,"1461":1,"1462":1,"1463":1,"1464":1,"1465":1,"1466":1,"1467":1,"1468":1,"1469":1,"1470":1,"1471":1,"1472":1,"1473":1,"1474":1,"1475":1,"1476":1,"1477":1,"1478":1,"1479":1,"1480":1,"1481":1,"1482":1,"1483":1,"1484":1,"1485":1,"1486":1,"1487":1,"1488":1,"1489":1},"2":{"1455":1,"1723":1,"2161":1,"2263":1,"2300":1,"2360":1,"2610":1}}],["backlights",{"2":{"589":1,"1556":1}}],["backlight|led",{"2":{"176":1}}],["backlight",{"0":{"7":1,"14":2,"16":1,"1459":1,"1473":1,"1474":1,"1475":1,"1476":1,"1477":1,"1478":1,"1479":1,"1481":1,"1483":1,"1485":1,"1486":1,"1487":1,"1488":1,"2625":1,"2677":1},"1":{"1480":1,"1482":1,"1484":1,"1489":1},"2":{"14":4,"16":4,"32":1,"49":1,"50":1,"63":1,"70":1,"73":1,"93":1,"94":1,"110":1,"111":1,"112":4,"114":1,"134":4,"149":1,"160":1,"188":1,"191":4,"198":1,"199":6,"222":4,"231":3,"236":2,"249":3,"266":3,"502":7,"1234":2,"1316":1,"1317":1,"1456":14,"1457":21,"1458":4,"1459":10,"1460":1,"1461":1,"1463":1,"1464":5,"1466":1,"1467":1,"1469":4,"1470":1,"1471":3,"1473":1,"1474":1,"1475":1,"1476":1,"1477":1,"1478":1,"1479":1,"1480":1,"1481":1,"1482":2,"1483":1,"1484":1,"1485":1,"1486":1,"1487":1,"1488":1,"1489":1,"1723":1,"1726":1,"1947":1,"2263":3,"2264":3,"2300":3,"2360":14,"2531":1,"2566":2,"2577":11,"2625":1,"2677":9,"2724":1,"2749":1}}],["backslash",{"2":{"1271":1,"1584":2,"1677":1,"2355":2,"2370":3,"2388":2,"2396":3,"2709":1,"2738":1}}],["backspaced",{"2":{"2182":1}}],["backspaces",{"2":{"1447":2,"1448":3,"1451":1,"1452":1}}],["backspace",{"0":{"1303":1},"2":{"99":1,"152":1,"211":1,"255":1,"540":1,"546":1,"1271":1,"1303":2,"1451":3,"1499":1,"1511":1,"1584":1,"1656":1,"1663":1,"1932":1,"1937":4,"2075":1,"2226":1,"2355":2,"2370":6,"2388":2,"2396":6,"2709":1}}],["backgrounds",{"2":{"435":1}}],["background",{"2":{"435":5,"597":1,"2577":3}}],["backup",{"2":{"388":2}}],["backing",{"0":{"2474":1},"2":{"236":1,"688":1,"689":3,"690":3,"691":4,"2683":1}}],["backwards",{"2":{"114":1,"249":1,"262":1,"2113":1}}],["backward",{"2":{"75":1,"1932":2}}],["back",{"0":{"2317":1,"2324":1},"2":{"50":1,"55":13,"124":1,"134":1,"152":1,"331":1,"341":1,"430":1,"471":1,"529":1,"592":1,"621":1,"624":1,"1396":1,"1435":2,"1554":1,"1555":1,"1556":1,"1684":1,"1838":1,"1922":1,"1932":1,"1949":3,"2066":1,"2067":1,"2069":1,"2130":2,"2133":1,"2146":2,"2231":1,"2238":1,"2255":1,"2273":1,"2274":1,"2279":1,"2348":2,"2355":2,"2393":2,"2425":1,"2454":1,"2477":2,"2518":1,"2567":1,"2672":1,"2711":1,"2728":1,"2745":1}}],["backend",{"0":{"321":1},"2":{"49":1,"2506":1,"2683":1}}],["backport",{"0":{"5":1},"2":{"74":1}}],["bidirectional",{"2":{"1918":1}}],["bioses",{"2":{"516":1}}],["bios",{"0":{"1298":1},"2":{"263":1,"1288":1,"1292":1,"1298":1}}],["bioi",{"2":{"211":4,"236":1}}],["biacco42",{"2":{"143":3,"149":2}}],["bigram",{"2":{"1934":5}}],["bigrams",{"2":{"1934":2}}],["bigseries",{"2":{"143":8}}],["bigswitch",{"2":{"43":2,"266":1}}],["big",{"2":{"94":2,"349":1,"470":1,"545":1,"717":1,"723":1,"2263":1,"2578":1}}],["bigger",{"2":{"46":1,"515":1,"2311":1,"2424":1,"2757":1}}],["binding",{"2":{"2263":1}}],["bindings",{"2":{"1435":1,"2355":1,"2566":2}}],["bind",{"2":{"1677":1,"2738":1}}],["bin|hex",{"2":{"371":1}}],["binary",{"0":{"1450":1},"1":{"1451":1,"1452":1},"2":{"304":1,"316":1,"371":1,"522":2,"525":1,"527":2,"1303":1,"2262":1,"2303":1,"2351":1,"2353":1,"2462":1,"2566":1,"2674":1,"2757":1}}],["binaries",{"0":{"164":1},"2":{"93":1,"164":1,"176":1,"199":1,"519":1,"1249":1,"2242":1,"2310":2,"2549":1}}],["binepad",{"2":{"207":2,"211":1}}],["bin",{"2":{"23":1,"94":2,"95":2,"133":1,"134":1,"332":1,"371":1,"387":1,"513":1,"2240":1,"2242":1,"2243":1,"2244":1,"2252":1,"2262":1,"2353":2,"2427":1,"2437":1,"2452":2,"2468":2,"2508":1,"2513":3,"2674":1}}],["bit|status",{"2":{"2402":1}}],["bitmap",{"2":{"1821":1}}],["bitmask",{"2":{"1300":2,"1345":1,"1660":1,"1661":1,"1662":1,"1670":1,"1725":1,"1899":1,"1901":1,"1946":1,"2596":1}}],["bitfield",{"2":{"1671":1,"2688":1,"2695":1}}],["bitwise",{"2":{"701":1,"1300":2,"1335":1,"1451":1,"1821":1}}],["bits",{"2":{"316":1,"701":3,"1300":1,"1332":2,"1336":4,"1341":6,"1451":3,"1452":1,"1632":1,"1633":1,"1726":4,"1855":2,"1947":4,"2147":4,"2150":2,"2152":2,"2311":1,"2348":2,"2401":2,"2402":1,"2411":3,"2588":6}}],["bitbanging",{"2":{"1125":1,"1128":1}}],["bitbang",{"0":{"1122":1,"1219":1},"1":{"1123":1,"1124":1},"2":{"249":1,"1121":1,"1122":3,"1123":1,"1124":3,"1125":1,"1136":1,"1218":1,"1219":1,"1224":2,"2032":1,"2697":2,"2700":3}}],["bit",{"0":{"11":1,"1318":1},"2":{"11":2,"63":1,"114":1,"130":1,"134":1,"166":1,"176":2,"199":2,"211":1,"630":1,"641":4,"659":2,"660":1,"701":2,"709":1,"712":1,"714":1,"715":1,"717":1,"718":1,"720":1,"721":1,"723":1,"724":1,"727":2,"732":1,"758":1,"787":1,"819":1,"851":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1056":1,"1090":1,"1121":1,"1122":1,"1146":1,"1181":1,"1214":3,"1215":3,"1219":1,"1224":2,"1265":2,"1290":1,"1300":5,"1302":1,"1311":1,"1315":4,"1329":1,"1332":2,"1333":1,"1336":3,"1341":2,"1406":1,"1430":1,"1436":1,"1445":4,"1451":2,"1452":1,"1506":2,"1549":1,"1589":1,"1612":2,"1614":2,"1632":2,"1638":1,"1648":1,"1668":6,"1670":2,"1677":12,"1815":2,"1855":2,"1859":1,"1907":4,"1938":1,"2091":1,"2093":1,"2095":1,"2125":2,"2139":2,"2148":2,"2170":2,"2311":1,"2367":1,"2401":1,"2402":1,"2405":6,"2406":2,"2411":3,"2413":1,"2450":1,"2455":1,"2460":2,"2490":1,"2528":1,"2552":1,"2576":1,"2585":1,"2592":1,"2593":1,"2596":8,"2601":1,"2622":1,"2623":1,"2719":1,"2738":12,"2750":1}}],["bob",{"2":{"2750":1}}],["bout",{"2":{"1943":1}}],["bounce",{"0":{"1325":1},"1":{"1326":1,"1327":1,"1328":1,"1329":1,"1330":1},"2":{"1325":4,"2420":1}}],["bounce75",{"2":{"211":1}}],["bound",{"2":{"236":1,"1677":1,"2718":1,"2738":1}}],["boundary",{"2":{"191":1}}],["bounds",{"2":{"114":1,"160":1,"1822":3,"2143":3,"2292":1}}],["bounded",{"2":{"31":1,"34":1}}],["bold",{"2":{"288":1,"545":1,"1142":1}}],["bolt",{"0":{"2147":1},"2":{"231":1,"2146":1,"2147":3,"2148":1,"2149":2,"2150":1,"2152":2,"2153":4}}],["boy",{"2":{"211":1}}],["bocc",{"2":{"211":1}}],["bonsai",{"0":{"1320":1},"2":{"176":1,"189":1,"191":1,"1311":1,"1315":4,"1320":1,"2712":1}}],["boston",{"2":{"134":1,"211":1}}],["bodges",{"2":{"199":1}}],["bodge",{"2":{"114":1,"134":1,"149":1,"266":1}}],["box",{"2":{"114":1,"290":1,"537":1,"2132":1,"2133":1,"2272":1,"2452":1,"2745":1}}],["boilerplate",{"2":{"114":1,"565":1,"2261":2}}],["bottom",{"2":{"100":1,"149":1,"255":1,"502":1,"557":1,"1287":1,"1314":1,"1323":1,"1324":1,"1405":1,"1446":1,"1533":1,"1725":1,"1728":1,"1946":1,"1949":2,"2031":1,"2122":1,"2148":1,"2169":1,"2171":1,"2270":1,"2305":1,"2317":1,"2450":1,"2498":1,"2564":1,"2577":6,"2598":2,"2614":1,"2665":1}}],["both",{"0":{"2415":1},"2":{"35":1,"45":1,"58":1,"70":14,"98":1,"107":1,"114":1,"134":1,"152":1,"163":1,"173":1,"175":1,"190":1,"229":1,"232":1,"233":1,"236":1,"249":1,"304":1,"349":1,"388":1,"432":1,"435":1,"446":2,"453":1,"483":1,"505":1,"506":1,"511":1,"533":1,"540":1,"550":1,"570":1,"610":1,"630":1,"681":1,"1122":1,"1265":2,"1300":2,"1303":1,"1312":1,"1320":1,"1326":1,"1341":2,"1349":1,"1352":1,"1368":1,"1383":1,"1391":1,"1431":1,"1446":1,"1454":1,"1491":1,"1494":1,"1499":2,"1500":3,"1501":3,"1510":1,"1557":1,"1558":1,"1572":1,"1670":1,"1716":1,"1805":1,"1813":1,"1841":1,"1845":1,"1849":3,"1852":1,"1855":1,"1867":1,"1921":1,"1948":2,"2034":2,"2042":2,"2111":1,"2114":1,"2115":1,"2120":1,"2127":2,"2129":2,"2130":1,"2131":1,"2146":1,"2153":2,"2172":1,"2177":1,"2182":1,"2183":1,"2273":3,"2279":2,"2295":2,"2302":1,"2341":1,"2353":1,"2355":1,"2370":6,"2396":6,"2429":1,"2450":2,"2457":1,"2464":1,"2472":1,"2475":1,"2477":1,"2490":1,"2541":1,"2543":1,"2546":1,"2576":1,"2577":1,"2600":1,"2603":4,"2662":1,"2680":2,"2684":1,"2705":1,"2709":1,"2711":1,"2725":1,"2735":1,"2757":1}}],["boardinit",{"2":{"2526":1,"2566":2}}],["board",{"0":{"172":1,"189":1,"2526":1,"2542":1},"2":{"50":5,"76":1,"77":2,"113":1,"114":3,"134":1,"160":3,"167":1,"176":3,"182":1,"189":3,"191":1,"199":1,"211":2,"222":1,"233":1,"236":2,"248":1,"266":2,"277":1,"335":2,"493":1,"495":1,"502":2,"506":1,"529":1,"587":1,"589":2,"592":1,"625":1,"626":2,"627":1,"657":1,"658":1,"668":1,"691":1,"703":2,"733":1,"759":1,"791":1,"821":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1129":1,"1147":1,"1177":2,"1198":1,"1226":1,"1230":1,"1270":5,"1294":1,"1315":2,"1316":1,"1320":1,"1322":1,"1332":1,"1378":1,"1384":1,"1392":1,"1401":1,"1405":1,"1464":1,"1469":1,"1470":1,"1491":1,"1492":1,"1725":1,"1821":1,"1827":1,"1847":1,"1852":1,"1946":1,"2114":2,"2118":1,"2128":1,"2131":2,"2180":1,"2255":1,"2266":1,"2269":4,"2270":1,"2274":1,"2275":2,"2278":1,"2305":1,"2328":1,"2339":1,"2342":3,"2346":1,"2427":1,"2450":2,"2454":2,"2513":1,"2523":4,"2524":1,"2525":1,"2526":3,"2530":1,"2533":2,"2539":1,"2541":2,"2542":3,"2546":1,"2549":1,"2564":2,"2565":1,"2566":16,"2567":1,"2578":1,"2607":2,"2608":1,"2655":1,"2664":1,"2665":1,"2673":7,"2711":1,"2728":1}}],["boardsource",{"2":{"176":4,"249":1,"277":2,"2541":1}}],["boards",{"0":{"43":1,"235":1,"1387":1,"1389":1,"1722":1,"2133":1,"2269":1,"2540":1},"1":{"1388":1,"1390":1,"1391":1,"1392":1,"1393":1,"1394":1,"1395":1,"1396":1,"2541":1,"2542":1},"2":{"8":1,"10":1,"28":1,"45":1,"57":1,"72":1,"80":1,"93":1,"108":1,"114":7,"131":1,"134":3,"149":25,"153":2,"160":3,"163":1,"172":3,"185":1,"189":1,"191":4,"199":2,"211":8,"221":1,"222":4,"235":1,"249":1,"263":1,"266":1,"277":1,"496":1,"505":1,"509":3,"515":1,"626":1,"655":2,"656":1,"657":1,"663":1,"1125":1,"1128":1,"1220":1,"1235":1,"1242":1,"1316":1,"1317":1,"1383":1,"1384":3,"1385":4,"1387":1,"1405":1,"1491":2,"1495":1,"1497":1,"1631":1,"1722":1,"1954":1,"2118":1,"2132":3,"2133":1,"2230":2,"2233":1,"2237":1,"2240":1,"2242":1,"2243":1,"2263":1,"2269":1,"2328":1,"2346":1,"2417":2,"2514":1,"2523":1,"2539":1,"2540":2,"2541":2,"2545":1,"2546":1,"2551":1,"2552":1,"2566":4,"2567":1,"2573":1,"2672":1,"2712":1}}],["books",{"2":{"2750":1}}],["boost",{"2":{"1570":1,"2567":1}}],["bootstrap",{"2":{"2553":1}}],["bootsel",{"2":{"2249":2}}],["boot1",{"2":{"2516":1}}],["booted",{"2":{"1825":1}}],["bootable",{"2":{"689":1}}],["booting",{"2":{"689":1,"1816":1,"2402":1}}],["boot\`",{"2":{"624":1}}],["bootlader",{"2":{"236":1}}],["bootloadhid",{"0":{"2237":1,"2345":1},"1":{"2238":1,"2239":1},"2":{"114":1,"191":1,"514":1,"629":1,"2237":6,"2262":1}}],["bootloader>",{"2":{"371":2,"2353":1}}],["bootloaders",{"0":{"629":1},"2":{"49":1,"149":1,"160":1,"199":1,"371":3,"375":1,"626":1,"689":1,"1270":1,"2229":2,"2252":1,"2262":1,"2327":1,"2343":2,"2566":1}}],["bootloader",{"0":{"141":1,"625":1,"1240":1,"1241":1,"2229":1,"2342":1,"2347":1,"2350":1,"2450":1,"2521":1,"2544":1,"2609":1,"2627":1,"2693":1},"1":{"626":1,"627":1,"628":1,"629":1,"2230":1,"2231":1,"2232":1,"2233":1,"2234":1,"2235":1,"2236":1,"2237":1,"2238":1,"2239":1,"2240":1,"2241":1,"2242":1,"2243":1,"2244":1,"2245":1,"2246":1,"2247":1,"2248":1,"2249":1,"2343":1,"2344":1,"2345":1,"2346":1,"2348":1,"2351":1,"2352":1,"2353":1},"2":{"49":4,"50":1,"65":1,"70":1,"74":1,"93":2,"111":1,"112":1,"114":3,"141":3,"149":8,"176":8,"191":4,"199":6,"211":1,"230":2,"231":1,"236":1,"240":3,"371":4,"375":1,"489":1,"509":3,"514":1,"592":4,"593":4,"594":3,"595":2,"624":2,"625":3,"626":6,"627":2,"628":2,"629":8,"1239":1,"1241":2,"1270":2,"1287":1,"1293":1,"1385":7,"1495":3,"1497":2,"1530":4,"1573":2,"1816":5,"2126":10,"2229":1,"2230":6,"2231":8,"2233":5,"2235":6,"2236":5,"2237":5,"2238":15,"2240":5,"2241":1,"2242":6,"2243":4,"2244":3,"2245":7,"2247":7,"2249":7,"2327":6,"2335":1,"2341":1,"2342":1,"2344":4,"2345":1,"2346":2,"2347":2,"2348":2,"2349":3,"2350":5,"2351":1,"2353":2,"2356":4,"2450":1,"2454":6,"2517":2,"2521":1,"2522":3,"2524":9,"2530":2,"2539":5,"2544":2,"2566":2,"2572":4,"2609":2,"2664":1,"2672":1,"2673":2,"2693":3}}],["boot20",{"2":{"2353":1}}],["boot2",{"2":{"236":1}}],["bootmapper",{"2":{"235":1,"1220":1,"2345":1,"2450":1}}],["bootmagic",{"0":{"87":1,"103":1,"104":1,"126":1,"127":1,"245":2,"1495":1,"1497":1,"2628":1,"2679":1},"1":{"88":1,"104":1,"127":1,"1496":1,"1497":1,"1498":1},"2":{"70":1,"87":8,"88":8,"93":2,"94":1,"103":3,"104":8,"111":1,"114":2,"126":3,"127":8,"134":1,"176":3,"199":3,"222":1,"245":4,"249":2,"515":3,"592":1,"624":1,"626":3,"1243":2,"1270":1,"1287":1,"1332":1,"1495":5,"1496":3,"1497":6,"1498":1,"1528":1,"1916":1,"2231":1,"2238":1,"2263":1,"2305":2,"2396":1,"2566":1,"2610":1,"2679":3,"2697":2,"2725":1}}],["boot",{"0":{"156":1,"167":1,"2539":1},"2":{"149":1,"156":2,"167":2,"176":1,"191":2,"199":1,"266":1,"277":1,"313":1,"515":1,"516":2,"530":2,"626":3,"689":1,"1287":1,"1398":1,"1399":1,"1816":2,"2230":1,"2233":1,"2235":1,"2236":2,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":2,"2247":2,"2249":2,"2356":1,"2458":1,"2524":1,"2539":1,"2541":1,"2566":1,"2572":1,"2609":1}}],["boot0",{"2":{"49":4,"2240":3,"2242":3}}],["boolean",{"0":{"90":1,"105":1},"2":{"93":1,"114":1,"134":1,"203":1,"588":1,"1303":3,"1332":1,"1365":1,"1719":1}}],["bool",{"0":{"749":3,"751":1,"776":3,"778":1,"840":3,"842":1,"875":3,"877":1,"909":3,"911":1,"943":3,"945":1,"977":3,"979":1,"1166":3,"1168":1,"1180":2,"1210":1,"1483":1,"1488":1,"1596":2,"1600":2,"1615":1,"1617":1,"1619":1,"1693":1,"1694":1,"1697":1,"1698":1,"1699":1,"1702":1,"1705":1,"1708":1,"1711":1,"1741":1,"1774":1,"1776":1,"1778":1,"1780":1,"1783":1,"1894":1,"1968":1,"2019":1,"2021":1,"2023":1,"2025":1,"2028":1,"2212":1,"2216":1,"2219":1},"1":{"750":3,"752":1,"777":3,"779":1,"841":3,"843":1,"876":3,"878":1,"910":3,"912":1,"944":3,"946":1,"978":3,"980":1,"1167":3,"1169":1,"1181":2,"1182":2,"1211":1,"1484":1,"1489":1,"1597":2,"1601":2,"1616":1,"1618":1,"1620":1,"1621":1,"1695":1,"1696":1,"1700":1,"1701":1,"1703":1,"1704":1,"1706":1,"1707":1,"1709":1,"1710":1,"1712":1,"1713":1,"1742":1,"1775":1,"1777":1,"1779":1,"1895":1,"1896":1,"1969":1,"2020":1,"2022":1,"2024":1,"2213":1,"2217":1,"2218":1,"2220":1},"2":{"22":2,"46":2,"90":6,"105":8,"114":1,"125":2,"185":2,"230":1,"534":1,"565":2,"566":1,"573":3,"588":2,"593":1,"594":1,"595":4,"597":1,"641":1,"750":3,"752":1,"777":3,"779":1,"841":3,"843":1,"876":3,"878":1,"910":3,"912":1,"944":3,"946":1,"978":3,"980":1,"1167":3,"1169":1,"1181":1,"1303":2,"1332":3,"1344":1,"1359":2,"1360":1,"1375":1,"1385":2,"1404":1,"1430":2,"1445":1,"1448":1,"1507":2,"1511":1,"1518":6,"1519":1,"1523":2,"1537":4,"1549":2,"1560":2,"1581":1,"1597":2,"1601":2,"1604":1,"1618":1,"1620":1,"1634":2,"1638":1,"1668":2,"1670":3,"1686":1,"1716":2,"1717":1,"1718":1,"1729":3,"1792":1,"1813":1,"1814":1,"1816":4,"1822":26,"1830":1,"1854":1,"1858":2,"1859":2,"1861":1,"1870":2,"1871":1,"1873":5,"1874":3,"1878":4,"1879":1,"1933":1,"1935":1,"1941":1,"1943":2,"1952":3,"2056":1,"2107":6,"2130":2,"2143":16,"2168":1,"2169":1,"2171":1,"2228":2,"2301":2,"2567":1,"2576":1,"2577":5,"2587":1,"2728":1,"2749":34}}],["buflen",{"2":{"2130":2}}],["buff",{"2":{"1815":4,"2139":4}}],["buffered",{"2":{"515":1}}],["buffers",{"0":{"679":1,"753":1,"780":1,"812":1,"844":1,"879":1,"913":1,"947":1,"981":1,"1015":1,"1049":1,"1083":1,"1117":1,"1170":1},"1":{"680":1,"781":1,"813":1,"845":1,"880":1,"914":1,"948":1,"982":1,"1016":1,"1050":1,"1084":1,"1118":1,"1171":1},"2":{"93":1,"249":2,"593":1,"594":1,"675":1,"741":1,"745":1,"768":1,"772":1,"800":1,"804":1,"832":1,"836":1,"867":1,"871":1,"901":1,"905":1,"935":1,"939":1,"969":1,"973":1,"1003":1,"1007":1,"1037":1,"1041":1,"1071":1,"1075":1,"1105":1,"1109":1,"1158":1,"1162":1,"1515":5,"2048":1,"2060":2,"2226":1}}],["buffer",{"0":{"660":1,"1228":1,"1515":1,"1815":1,"2139":1},"2":{"49":1,"93":1,"114":1,"176":1,"199":1,"211":1,"249":3,"641":3,"659":3,"660":8,"712":1,"1192":1,"1205":2,"1209":1,"1210":1,"1211":1,"1226":2,"1228":3,"1401":1,"1438":4,"1445":1,"1446":6,"1515":2,"1526":1,"1554":3,"1680":1,"1685":2,"1691":1,"1694":2,"1696":1,"1697":1,"1699":1,"1701":1,"1702":1,"1704":1,"1705":1,"1707":1,"1708":1,"1710":1,"1711":1,"1713":1,"1815":7,"1820":3,"1821":2,"1822":16,"1921":1,"1922":1,"1923":1,"1926":1,"1928":1,"2059":1,"2130":10,"2139":7,"2142":1,"2143":17,"2214":1,"2215":1,"2216":1,"2219":1,"2574":1,"2576":9,"2577":2}}],["bundled",{"2":{"2244":1}}],["bundle",{"2":{"2112":1,"2431":3,"2458":1}}],["bunch",{"2":{"254":1,"1259":1,"1331":1,"1383":1,"1384":1,"1385":1,"2311":1,"2510":1,"2710":1,"2714":1,"2740":1}}],["buzz",{"2":{"1572":3,"1573":12,"1578":7,"2129":1}}],["buzzer",{"2":{"1388":1}}],["burst",{"2":{"1849":1}}],["burnout",{"2":{"2569":1}}],["burns",{"2":{"2270":1}}],["burn",{"2":{"1287":1,"1817":2,"2141":1}}],["burden",{"2":{"213":1,"2566":1}}],["buy",{"2":{"624":1,"1242":1}}],["bumblebee",{"2":{"277":1}}],["bump",{"2":{"76":1,"114":2,"160":1,"236":1,"360":2,"1578":3}}],["buspirate",{"2":{"2339":1}}],["bus",{"0":{"2339":1},"1":{"2340":1},"2":{"191":2,"266":1,"277":1,"726":1,"2339":2,"2340":1,"2668":1}}],["busywait",{"0":{"1904":1},"1":{"1905":1,"1906":1,"1907":1,"1908":1},"2":{"1902":1,"1904":2,"2692":2}}],["busy",{"0":{"1615":1},"1":{"1616":1},"2":{"191":1,"703":1,"1463":1,"1616":1,"1621":1,"1622":1,"1624":1}}],["business",{"2":{"143":4}}],["bulk",{"2":{"182":1,"2162":1,"2234":1}}],["bullseye",{"2":{"114":1}}],["bugging",{"2":{"2424":1}}],["buggy",{"2":{"1406":1}}],["bug17281",{"2":{"199":1}}],["bugfix",{"2":{"176":1,"222":1,"236":1,"266":1,"340":1,"350":3}}],["bugfixes",{"2":{"10":2,"196":1,"340":1,"344":2,"345":2,"2656":1}}],["bugs",{"0":{"549":1},"2":{"114":1,"134":1,"149":1,"160":1,"176":1,"191":2,"199":1,"211":1,"222":1,"236":2,"249":1,"266":1,"277":1,"481":1,"1666":3}}],["bug",{"0":{"1261":1},"2":{"62":1,"73":1,"149":1,"160":2,"236":1,"315":1,"336":1,"483":1,"545":1,"549":1,"554":1,"560":2,"2317":1,"2343":1,"2468":3,"2513":1,"2757":1}}],["builtin",{"2":{"588":1,"696":2,"1254":2,"1392":1,"2150":1}}],["built",{"0":{"1259":1,"2108":1},"1":{"2109":1,"2110":1,"2111":1,"2112":1,"2113":1},"2":{"33":1,"49":1,"191":1,"228":1,"337":1,"403":2,"432":1,"588":1,"629":1,"655":1,"1134":1,"1326":1,"1398":1,"1406":1,"1729":1,"1849":1,"1952":1,"2126":1,"2144":1,"2183":2,"2233":1,"2259":1,"2262":1,"2284":1,"2417":1,"2428":1,"2440":1,"2447":1,"2449":1,"2549":1,"2573":1,"2579":1,"2616":1}}],["builder",{"2":{"391":1,"2267":1,"2268":1,"2277":2}}],["builddefs",{"2":{"149":1}}],["building",{"0":{"332":1,"1348":1,"2420":1,"2428":1,"2615":1},"1":{"1349":1,"2421":1,"2422":1,"2423":1,"2424":1,"2425":1,"2426":1,"2429":1,"2430":1,"2431":1,"2432":1,"2433":1,"2434":1,"2435":1,"2436":1,"2437":1,"2438":1,"2439":1,"2440":1},"2":{"114":2,"133":1,"134":1,"145":1,"199":1,"213":1,"224":1,"233":1,"305":1,"331":1,"363":1,"370":1,"513":1,"515":2,"536":1,"560":1,"1234":1,"1237":1,"1254":1,"1257":1,"1492":1,"2252":2,"2281":1,"2405":1,"2418":1,"2420":1,"2442":1,"2445":1,"2470":1,"2502":1,"2576":2}}],["builds",{"2":{"28":1,"49":1,"94":1,"114":3,"130":1,"134":4,"149":2,"153":1,"160":3,"176":1,"198":1,"209":1,"211":3,"241":1,"253":1,"270":1,"273":1,"393":3,"394":3,"1265":1,"1312":1,"1385":1,"2262":2,"2447":1,"2448":1,"2473":1,"2476":1,"2502":1,"2513":1,"2535":1,"2567":2,"2616":1,"2664":1}}],["build",{"0":{"23":1,"55":1,"141":1,"326":1,"513":1,"1234":1,"1237":1,"1381":1,"2267":1,"2421":1,"2425":1,"2446":1,"2447":1,"2458":1,"2469":1,"2494":1,"2502":1,"2562":1},"1":{"1235":1,"1238":1,"1239":1,"1240":1,"1241":1,"1242":1,"1243":1,"2459":1,"2460":1,"2461":1,"2462":1,"2463":1,"2464":1,"2465":1,"2466":1,"2467":1},"2":{"23":1,"55":3,"65":1,"70":1,"73":1,"92":2,"112":3,"114":6,"118":1,"126":1,"132":1,"133":1,"134":3,"149":7,"160":2,"164":1,"170":1,"176":2,"189":2,"191":4,"199":6,"201":2,"204":1,"206":1,"211":2,"222":1,"228":1,"234":3,"236":1,"249":1,"262":1,"266":23,"277":2,"292":1,"305":2,"326":1,"331":6,"332":1,"360":1,"365":1,"366":1,"374":1,"376":1,"387":1,"389":1,"390":1,"391":1,"393":4,"394":4,"395":2,"396":5,"401":4,"496":1,"516":1,"538":1,"540":1,"614":3,"624":3,"660":1,"1236":1,"1237":1,"1287":2,"1288":1,"1298":1,"1348":1,"1349":1,"1376":1,"1377":1,"1381":1,"1573":1,"2178":1,"2244":2,"2250":3,"2252":8,"2261":1,"2262":3,"2270":1,"2277":1,"2281":2,"2299":1,"2300":2,"2302":2,"2308":1,"2346":1,"2408":2,"2417":1,"2418":1,"2420":1,"2421":1,"2422":1,"2425":3,"2428":3,"2429":1,"2435":1,"2436":1,"2437":6,"2438":1,"2439":4,"2440":2,"2441":4,"2442":1,"2446":2,"2447":2,"2448":2,"2454":1,"2456":2,"2462":1,"2469":6,"2472":1,"2492":1,"2494":1,"2502":2,"2503":1,"2504":1,"2513":4,"2553":1,"2566":1,"2614":1,"2615":2,"2674":1,"2722":1,"2753":1,"2755":1}}],["butterstick",{"2":{"143":2}}],["button",{"0":{"1642":2,"1644":2,"1881":1,"1885":1,"1886":1,"1888":1,"1890":1,"1892":1,"1894":1,"1897":1,"1898":1,"1900":1,"1912":1,"2380":1},"1":{"1643":2,"1645":2,"1882":1,"1883":1,"1884":1,"1885":1,"1886":1,"1887":2,"1888":1,"1889":2,"1890":1,"1891":2,"1892":1,"1893":2,"1894":1,"1895":2,"1896":2,"1897":1,"1898":1,"1899":2,"1900":1,"1901":2},"2":{"49":1,"63":1,"134":1,"188":1,"190":1,"191":3,"231":5,"332":1,"334":1,"541":2,"542":2,"567":2,"624":2,"626":2,"1236":1,"1270":1,"1287":1,"1359":3,"1385":1,"1406":1,"1495":1,"1553":1,"1632":2,"1635":64,"1638":2,"1642":1,"1643":2,"1644":1,"1645":2,"1801":16,"1809":2,"1839":6,"1853":2,"1855":4,"1859":1,"1864":1,"1881":1,"1882":1,"1883":64,"1885":1,"1886":1,"1887":1,"1888":1,"1889":1,"1890":1,"1891":1,"1892":1,"1893":1,"1894":1,"1895":1,"1896":1,"1897":1,"1898":1,"1899":1,"1900":1,"1901":1,"1912":5,"2126":1,"2150":2,"2230":1,"2233":1,"2235":1,"2236":3,"2238":1,"2240":3,"2242":3,"2243":1,"2244":1,"2245":2,"2247":2,"2249":4,"2255":3,"2277":1,"2278":3,"2365":64,"2372":16,"2380":65,"2417":2,"2450":1,"2453":1,"2498":2,"2508":1,"2513":2,"2518":1,"2528":1,"2615":1,"2672":1,"2749":1}}],["buttons",{"0":{"1913":1},"2":{"49":1,"74":1,"114":1,"134":4,"149":1,"190":1,"222":1,"1531":1,"1630":1,"1632":1,"1638":1,"1798":1,"1842":2,"1853":2,"1855":1,"1857":3,"1864":1,"1879":1,"1881":1,"1912":4,"1913":2}}],["but",{"0":{"1262":1,"1373":1},"2":{"11":1,"49":1,"50":1,"99":1,"100":1,"120":1,"124":1,"125":2,"153":1,"156":1,"160":1,"170":1,"174":1,"185":2,"194":1,"202":1,"233":1,"251":1,"262":1,"273":2,"317":1,"334":1,"336":1,"341":1,"352":1,"355":1,"364":1,"371":1,"377":1,"401":1,"432":1,"446":1,"453":2,"458":1,"469":1,"471":1,"472":1,"473":1,"474":1,"479":1,"499":1,"504":1,"513":1,"515":1,"516":1,"529":1,"530":1,"532":1,"537":1,"540":1,"556":1,"557":1,"560":1,"567":1,"574":1,"578":2,"623":1,"626":1,"641":1,"642":1,"684":1,"685":1,"687":1,"688":1,"689":1,"690":1,"734":1,"760":1,"790":1,"792":1,"822":1,"855":1,"857":1,"889":1,"891":1,"923":1,"925":1,"957":1,"959":1,"991":1,"993":1,"1025":1,"1027":1,"1059":1,"1061":1,"1093":1,"1095":1,"1128":1,"1137":1,"1148":1,"1195":1,"1234":4,"1245":1,"1250":2,"1260":1,"1265":1,"1271":1,"1276":1,"1283":2,"1298":1,"1300":3,"1325":1,"1326":1,"1332":1,"1335":2,"1336":1,"1340":1,"1341":1,"1347":1,"1361":2,"1363":1,"1369":1,"1370":1,"1380":1,"1383":2,"1384":2,"1393":1,"1396":2,"1400":1,"1403":3,"1409":1,"1412":4,"1416":1,"1418":1,"1439":1,"1440":1,"1446":1,"1448":1,"1450":2,"1455":1,"1462":1,"1491":1,"1492":1,"1516":1,"1520":1,"1521":1,"1534":1,"1548":1,"1553":1,"1559":1,"1631":1,"1651":1,"1666":1,"1673":1,"1682":1,"1684":2,"1725":1,"1776":1,"1778":1,"1780":1,"1783":1,"1802":1,"1811":1,"1822":1,"1825":1,"1832":1,"1848":1,"1850":1,"1855":1,"1864":1,"1865":1,"1881":1,"1908":1,"1946":1,"1948":1,"2021":1,"2023":1,"2025":1,"2028":1,"2044":2,"2047":1,"2063":1,"2075":2,"2103":1,"2112":1,"2114":1,"2118":1,"2132":1,"2143":1,"2145":1,"2149":1,"2152":3,"2162":3,"2169":2,"2171":1,"2172":1,"2181":1,"2183":1,"2229":1,"2232":1,"2234":2,"2241":1,"2243":1,"2246":1,"2248":1,"2256":1,"2262":1,"2263":2,"2266":1,"2268":2,"2272":1,"2273":1,"2274":3,"2276":1,"2277":1,"2305":1,"2307":1,"2309":1,"2311":2,"2314":1,"2321":1,"2341":1,"2344":1,"2346":1,"2348":1,"2351":1,"2355":2,"2393":1,"2397":1,"2403":1,"2407":1,"2408":1,"2410":1,"2411":1,"2413":1,"2441":2,"2455":1,"2463":1,"2464":1,"2473":1,"2475":1,"2478":1,"2479":2,"2491":1,"2492":1,"2506":3,"2513":3,"2517":2,"2518":1,"2519":1,"2529":1,"2530":1,"2533":1,"2539":1,"2544":1,"2546":1,"2548":1,"2566":3,"2568":1,"2570":1,"2571":1,"2577":1,"2603":1,"2608":1,"2611":1,"2625":1,"2641":1,"2655":1,"2686":2,"2703":1,"2705":3,"2706":1,"2707":1,"2724":1,"2726":1,"2728":1,"2729":1,"2734":1,"2736":1,"2739":1,"2740":1,"2742":1,"2743":2,"2745":1,"2746":1,"2748":1,"2749":1,"2750":1,"2752":1,"2757":2}}],["blurb",{"0":{"2309":1},"2":{"540":1}}],["bluesmirf",{"2":{"1491":1}}],["blue",{"0":{"647":1,"649":1,"675":1,"677":1,"741":1,"743":1,"749":1,"768":1,"770":1,"776":1,"800":1,"802":1,"808":1,"832":1,"834":1,"840":1,"867":1,"869":1,"875":1,"901":1,"903":1,"909":1,"935":1,"937":1,"943":1,"969":1,"971":1,"977":1,"1003":1,"1005":1,"1011":1,"1037":1,"1039":1,"1045":1,"1071":1,"1073":1,"1079":1,"1105":1,"1107":1,"1113":1,"1158":1,"1160":1,"1166":1},"1":{"648":1,"650":1,"676":1,"678":1,"742":1,"744":1,"750":1,"769":1,"771":1,"777":1,"801":1,"803":1,"809":1,"833":1,"835":1,"841":1,"868":1,"870":1,"876":1,"902":1,"904":1,"910":1,"936":1,"938":1,"944":1,"970":1,"972":1,"978":1,"1004":1,"1006":1,"1012":1,"1038":1,"1040":1,"1046":1,"1072":1,"1074":1,"1080":1,"1106":1,"1108":1,"1114":1,"1159":1,"1161":1,"1167":1},"2":{"433":1,"435":1,"648":2,"650":2,"669":1,"672":1,"676":2,"678":2,"734":1,"737":1,"742":2,"744":2,"750":2,"760":1,"763":1,"769":2,"771":2,"777":2,"792":1,"795":1,"801":2,"803":2,"809":2,"822":1,"825":1,"833":2,"835":2,"841":2,"857":1,"860":1,"868":2,"870":2,"876":2,"891":1,"894":1,"902":2,"904":2,"910":2,"925":1,"928":1,"936":2,"938":2,"944":2,"959":1,"962":1,"970":2,"972":2,"978":2,"993":1,"996":1,"1004":2,"1006":2,"1012":2,"1027":1,"1030":1,"1038":2,"1040":2,"1046":2,"1061":1,"1064":1,"1072":2,"1074":2,"1080":2,"1095":1,"1098":1,"1106":2,"1108":2,"1114":2,"1148":1,"1151":1,"1159":2,"1161":2,"1167":2,"1217":1,"1826":1,"1953":2,"1957":2,"1958":1,"1971":1,"1973":1,"2034":1,"2058":2,"2376":1,"2460":1}}],["bluefruit",{"2":{"221":1,"515":1,"1491":4,"1492":6,"1493":1,"2678":1}}],["bluefruitle",{"0":{"142":1},"2":{"149":1,"221":1}}],["bluepill70",{"2":{"67":1}}],["bluepill",{"2":{"67":1,"72":1,"160":2,"191":1,"207":2,"489":1,"663":1,"2247":1,"2350":1,"2352":2,"2353":3}}],["bluetooth",{"0":{"1281":1,"1490":1,"1491":1,"1493":1,"1494":1,"2361":1,"2626":1,"2678":1},"1":{"1491":1,"1492":2,"1493":1,"1494":1},"2":{"50":2,"51":1,"70":1,"75":1,"111":1,"112":2,"133":1,"134":2,"142":1,"188":1,"191":4,"211":1,"221":4,"222":1,"515":1,"630":1,"1491":9,"1492":1,"1493":2,"1494":4,"2284":1,"2361":4,"2566":4,"2678":2}}],["blade",{"2":{"1728":1,"1949":2}}],["blank",{"2":{"262":1,"462":2,"540":1,"2252":1,"2301":1,"2558":1}}],["black",{"2":{"435":2,"502":1,"1388":1,"1391":3,"1395":2,"1815":1,"1953":2,"2058":2,"2268":1,"2273":1,"2311":2,"2513":5,"2596":4,"2745":1}}],["blackio83",{"2":{"253":2,"266":1}}],["blackpills",{"2":{"2114":1,"2514":2}}],["blackpill",{"0":{"2514":1},"1":{"2515":1,"2516":1,"2517":1,"2518":1,"2519":1,"2520":1,"2521":1,"2522":1},"2":{"93":1,"114":1,"160":2,"176":1,"191":2,"207":2,"253":1,"489":2,"2114":1,"2126":1,"2245":1,"2514":2,"2515":1,"2522":1,"2673":1,"2712":1}}],["blackheart",{"2":{"37":3}}],["blog",{"2":{"2483":2}}],["blowing",{"2":{"2273":1}}],["blow",{"2":{"2273":1}}],["blob",{"2":{"1275":1,"2585":2,"2592":2,"2593":2,"2596":1,"2597":1,"2599":1}}],["blobs",{"2":{"276":2}}],["blooming",{"2":{"236":1,"1949":3,"2711":1}}],["blok",{"0":{"1318":1},"2":{"176":1,"211":1,"1311":1,"1315":4,"2541":1,"2712":1}}],["bloat",{"2":{"114":1,"2263":1}}],["blocked",{"2":{"1403":1}}],["blocked65",{"2":{"159":2}}],["blocker",{"2":{"211":2}}],["blocks",{"0":{"292":1,"618":1},"1":{"619":1,"620":1},"2":{"191":2,"211":1,"231":1,"466":1,"618":1,"690":1,"1817":1,"1820":1,"1821":2,"1822":1,"2142":1,"2566":1,"2585":2,"2586":1,"2592":2,"2593":1}}],["block",{"0":{"2586":1,"2587":1,"2590":1,"2591":1,"2593":1,"2594":1,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1},"2":{"16":1,"31":3,"34":3,"134":1,"176":1,"188":1,"191":1,"290":1,"453":2,"534":1,"570":1,"573":1,"614":1,"689":1,"690":7,"694":2,"698":8,"1205":1,"1287":1,"1338":1,"1519":1,"1729":1,"1820":6,"1821":6,"1952":1,"2128":1,"2133":1,"2142":6,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2245":1,"2247":1,"2249":1,"2585":9,"2586":2,"2587":5,"2588":4,"2589":4,"2590":4,"2591":3,"2592":10,"2593":10,"2594":5,"2595":8,"2596":13,"2597":2,"2598":2,"2599":2,"2619":1,"2746":1}}],["bling",{"2":{"114":1}}],["blinks",{"2":{"2539":1}}],["blinked",{"2":{"2044":1}}],["blink",{"0":{"1596":1,"1600":1,"2044":1},"1":{"1597":1,"1601":1},"2":{"112":1,"506":2,"1556":1,"1597":2,"1601":2,"2044":9,"2161":1,"2518":1,"2694":1}}],["blinking",{"2":{"93":1,"160":1,"1554":1,"1593":1,"2044":3,"2694":1}}],["blindassassin111",{"2":{"37":2}}],["blend",{"2":{"2182":1}}],["ble",{"0":{"1492":1},"2":{"50":1,"133":1,"134":2,"142":1,"1491":2,"1492":1}}],["bl",{"0":{"7":1},"2":{"7":1,"313":1,"371":3,"530":6,"1456":7,"2126":3,"2360":7,"2405":2,"2407":1,"2408":1}}],["brmu",{"2":{"2355":1,"2392":1}}],["brmd",{"2":{"2355":1,"2389":1}}],["brk",{"2":{"2355":1,"2392":1}}],["brtg",{"2":{"1456":1,"2360":1}}],["brushing",{"2":{"246":1}}],["brutal",{"2":{"211":2}}],["brazilian",{"2":{"2703":2}}],["brazil",{"2":{"2703":1}}],["brass",{"2":{"2270":1}}],["brackets",{"2":{"2508":1}}],["bracket",{"2":{"1584":2,"2355":2,"2378":2,"2388":2,"2399":2}}],["braces",{"2":{"453":2,"454":1,"2079":1,"2170":1,"2661":1}}],["brace",{"2":{"453":5,"2378":2,"2399":2}}],["braking",{"2":{"1576":1,"1577":1}}],["brakefactor",{"2":{"1576":1,"1577":1}}],["brands",{"2":{"2244":1}}],["branding",{"2":{"1264":1}}],["brand",{"0":{"1264":1},"2":{"502":1,"624":1}}],["branching",{"2":{"1451":5,"1452":1}}],["branch",{"0":{"349":1,"2473":1,"2474":1,"2475":1,"2479":1},"1":{"2474":1,"2475":1},"2":{"51":2,"73":1,"76":1,"92":1,"94":1,"114":2,"251":1,"337":2,"346":1,"349":5,"357":1,"360":1,"361":2,"400":4,"520":1,"527":1,"529":1,"535":1,"554":3,"1451":2,"2438":1,"2472":1,"2473":3,"2474":5,"2475":3,"2476":2,"2477":12,"2478":4,"2479":3,"2480":19,"2481":1,"2564":7,"2566":1,"2567":1,"2568":7,"2720":2}}],["branches",{"2":{"51":1,"199":1,"347":1,"1451":1,"1452":1,"2478":1,"2479":1,"2568":3}}],["brauner",{"2":{"211":1}}],["brew",{"2":{"158":1,"365":1,"2238":1,"2351":1,"2431":1,"2462":1}}],["breadth",{"2":{"2567":1}}],["breath",{"2":{"502":1,"1457":1,"2263":1,"2273":1}}],["breathe",{"0":{"404":1},"2":{"404":2,"1948":2,"2034":1,"2038":2,"2376":1}}],["breathing",{"0":{"1485":1,"1486":1,"1487":1,"1488":1},"1":{"1489":1},"2":{"74":1,"93":1,"112":2,"134":1,"160":2,"199":1,"231":1,"404":1,"502":3,"582":2,"1456":2,"1457":5,"1463":1,"1485":1,"1486":1,"1487":1,"1488":1,"1489":1,"1728":3,"1948":1,"1949":7,"2034":1,"2036":2,"2037":2,"2038":2,"2040":2,"2063":2,"2360":2,"2376":1,"2677":6,"2688":1,"2694":1,"2695":1,"2711":3}}],["breakout",{"2":{"1847":1}}],["breaks",{"2":{"516":1,"654":1}}],["breakpoints",{"2":{"2513":2}}],["breakpoint",{"2":{"347":1,"349":2}}],["breakage",{"2":{"114":1}}],["break",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"105":2,"114":1,"236":1,"249":1,"337":1,"466":1,"468":1,"1332":6,"1343":5,"1359":4,"1360":2,"1375":1,"1384":2,"1385":1,"1430":2,"1440":1,"1441":1,"1446":2,"1511":2,"1523":2,"1549":4,"1568":1,"1813":3,"1826":4,"1857":1,"1859":2,"1861":2,"1876":2,"1877":3,"1935":2,"1938":1,"1943":10,"1958":3,"2044":3,"2061":1,"2137":3,"2167":3,"2169":12,"2170":8,"2171":4,"2413":1,"2472":1,"2667":1,"2728":4}}],["breaking",{"0":{"0":1,"9":1,"19":1,"39":1,"52":1,"66":1,"78":1,"96":1,"115":1,"135":1,"150":1,"161":1,"177":1,"192":1,"200":1,"212":1,"223":1,"237":1,"250":1,"267":1,"337":1,"338":1,"339":1,"351":1,"352":1,"1506":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"338":1,"339":1,"340":2,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"349":1,"350":1,"353":1,"354":1,"355":1,"356":1},"2":{"0":3,"9":2,"19":2,"23":1,"28":1,"39":2,"52":2,"103":1,"105":1,"107":1,"114":1,"116":1,"126":1,"131":1,"156":1,"163":1,"167":1,"172":1,"176":1,"182":1,"184":1,"187":1,"198":1,"201":1,"206":1,"213":2,"224":1,"238":1,"251":1,"254":1,"262":1,"265":2,"273":1,"275":1,"276":1,"337":3,"338":1,"339":1,"341":4,"342":1,"343":3,"344":3,"345":3,"346":1,"347":1,"349":3,"350":4,"351":1,"352":1,"353":1,"354":2,"481":1,"1503":1,"1504":1,"1506":2,"2567":1,"2720":2,"2721":1}}],["bridge",{"2":{"2240":2,"2242":2}}],["brid",{"2":{"1665":1,"1727":1,"1932":1,"2355":1,"2369":1,"2393":1}}],["briu",{"2":{"1665":1,"1727":1,"1932":1,"2355":1,"2369":1,"2393":1}}],["briefs",{"2":{"2144":1}}],["brief",{"2":{"1382":1,"1725":1,"1946":1,"2259":1}}],["briefly",{"2":{"624":1}}],["brick",{"2":{"199":1,"1287":1}}],["brightens",{"2":{"2038":1}}],["brighter",{"2":{"435":1}}],["bright",{"2":{"435":1}}],["brightness",{"0":{"652":2,"1665":1,"2046":1},"1":{"653":2},"2":{"111":1,"114":1,"160":1,"176":1,"191":2,"506":1,"644":2,"652":1,"653":2,"745":1,"746":1,"747":1,"748":1,"772":1,"773":1,"774":1,"775":1,"804":1,"805":1,"806":1,"807":1,"836":1,"837":1,"838":1,"839":1,"871":1,"872":1,"873":1,"874":1,"905":1,"906":1,"907":1,"908":1,"939":1,"940":1,"941":1,"942":1,"973":1,"974":1,"975":1,"976":1,"1007":1,"1008":1,"1009":1,"1010":1,"1041":1,"1042":1,"1043":1,"1044":1,"1075":1,"1076":1,"1077":1,"1078":1,"1109":1,"1110":1,"1111":1,"1112":1,"1162":1,"1163":1,"1164":1,"1165":1,"1454":1,"1456":1,"1457":2,"1459":1,"1656":1,"1665":7,"1722":5,"1727":4,"1728":4,"1730":4,"1743":1,"1744":1,"1745":1,"1746":1,"1757":1,"1758":1,"1759":1,"1760":1,"1761":1,"1762":1,"1773":1,"1817":3,"1822":4,"1932":1,"1948":2,"1949":7,"1954":5,"1959":1,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2001":1,"2012":1,"2013":1,"2014":1,"2015":1,"2016":1,"2033":1,"2034":4,"2035":3,"2038":1,"2046":2,"2355":6,"2360":1,"2369":4,"2376":4,"2377":2,"2389":1,"2392":1,"2393":4,"2577":1,"2596":3,"2675":2,"2677":6,"2688":5,"2694":5,"2695":4}}],["brigthness",{"2":{"176":1}}],["bringing",{"2":{"606":1}}],["brings",{"2":{"251":1,"268":1}}],["bring",{"2":{"114":1,"291":1,"1677":1,"2508":1,"2738":1}}],["brownfox",{"2":{"2270":1,"2281":1}}],["brown",{"2":{"684":1}}],["browsed",{"2":{"2501":1}}],["browser",{"2":{"522":1,"1932":1,"2355":7,"2393":7,"2404":1}}],["browse",{"2":{"331":1,"2455":1,"2743":1}}],["browsing",{"2":{"110":1,"402":1,"403":1}}],["brought",{"2":{"108":1}}],["broken",{"2":{"73":1,"93":1,"114":2,"134":2,"149":1,"176":1,"191":1,"199":1,"236":1,"277":1,"315":1,"352":1,"481":1,"560":1,"1312":1,"2328":1}}],["br",{"2":{"5":1,"282":1,"1355":1,"2152":1,"2153":3}}],["bypasses",{"2":{"2071":1}}],["bypassed",{"2":{"4":1}}],["bytecode",{"2":{"479":1}}],["byte",{"0":{"1216":1,"2095":1},"1":{"2096":1},"2":{"191":1,"684":1,"685":1,"689":1,"691":1,"701":1,"726":1,"1181":1,"1183":1,"1184":1,"1186":1,"1187":1,"1202":1,"1203":1,"1204":1,"1205":1,"1214":3,"1216":5,"1300":1,"1450":1,"1451":8,"1452":5,"1515":1,"1594":1,"1612":2,"1614":2,"1617":1,"1618":2,"1619":1,"1621":1,"1624":1,"1625":1,"1815":4,"1821":3,"1822":2,"1835":1,"1842":1,"1922":1,"1923":2,"2139":4,"2143":2,"2147":7,"2148":1,"2348":1,"2406":2,"2571":1,"2576":3,"2640":1,"2660":1}}],["bytes",{"2":{"25":1,"131":1,"134":1,"215":1,"222":1,"236":1,"641":1,"683":1,"684":3,"685":3,"686":1,"689":2,"690":2,"691":4,"692":11,"694":5,"708":1,"709":1,"711":1,"712":1,"715":1,"718":1,"721":1,"724":1,"1188":1,"1189":1,"1191":1,"1192":1,"1206":1,"1207":1,"1208":1,"1209":1,"1216":1,"1331":1,"1451":2,"1452":1,"1612":1,"1614":1,"1815":3,"1921":1,"1923":2,"1926":1,"1928":1,"2128":1,"2130":1,"2139":3,"2147":1,"2148":2,"2226":1,"2229":1,"2255":1,"2341":1,"2347":4,"2348":1,"2353":2,"2425":1,"2453":4,"2469":1,"2577":2,"2587":1,"2588":1,"2593":1,"2594":1,"2596":1,"2598":1,"2599":1,"2683":2,"2705":1,"2757":1}}],["by",{"0":{"27":1,"43":1,"532":1,"536":1,"1525":1,"2124":1,"2125":1,"2126":1,"2127":1,"2318":1},"1":{"537":1,"538":1,"539":1,"540":1,"541":1,"542":1,"543":1,"2319":1,"2320":1,"2321":1,"2322":1,"2323":1,"2324":1,"2325":1,"2326":1},"2":{"3":1,"7":1,"15":1,"21":1,"25":2,"28":1,"31":1,"34":1,"37":6,"38":2,"43":2,"45":1,"49":2,"50":2,"58":1,"74":1,"82":1,"94":1,"114":6,"118":2,"119":2,"120":1,"124":1,"125":1,"134":5,"149":2,"154":2,"164":1,"169":1,"173":1,"174":1,"175":1,"176":5,"179":1,"182":1,"184":1,"185":1,"191":4,"194":1,"195":3,"199":4,"201":1,"209":3,"211":1,"215":1,"222":3,"233":1,"248":1,"263":1,"273":1,"278":1,"282":3,"285":1,"292":1,"317":2,"318":1,"321":1,"329":1,"331":1,"340":1,"341":3,"352":2,"370":1,"371":2,"374":1,"405":1,"408":1,"413":1,"415":1,"417":1,"423":1,"428":2,"430":4,"435":1,"441":1,"447":1,"454":1,"460":1,"461":1,"462":1,"470":1,"479":1,"481":1,"485":1,"492":1,"493":1,"498":1,"502":3,"504":1,"505":1,"510":1,"511":1,"512":1,"513":2,"516":3,"520":1,"521":1,"522":1,"523":1,"527":1,"529":4,"530":1,"533":1,"537":1,"541":1,"554":1,"558":1,"559":1,"560":3,"569":1,"571":1,"572":1,"580":2,"581":1,"584":1,"589":2,"597":1,"598":1,"599":1,"600":1,"601":1,"610":1,"612":1,"613":1,"614":2,"616":2,"624":1,"626":3,"627":1,"628":1,"636":2,"641":3,"643":1,"656":1,"657":1,"659":1,"660":1,"661":1,"662":1,"663":1,"664":1,"667":1,"669":1,"681":3,"684":2,"687":1,"688":2,"689":2,"690":3,"691":1,"692":1,"700":1,"701":3,"726":1,"729":1,"734":1,"755":1,"760":1,"784":1,"788":1,"790":2,"792":1,"816":1,"822":1,"848":1,"852":1,"853":1,"855":2,"857":1,"883":1,"887":1,"889":2,"891":1,"917":1,"921":1,"923":2,"925":1,"951":1,"955":1,"957":2,"959":1,"985":1,"989":1,"991":2,"993":1,"1019":1,"1023":1,"1025":2,"1027":1,"1053":1,"1057":1,"1059":2,"1061":1,"1087":1,"1091":1,"1093":2,"1095":1,"1122":1,"1128":1,"1129":1,"1132":1,"1133":2,"1134":2,"1136":1,"1137":1,"1143":1,"1148":1,"1175":1,"1181":2,"1194":1,"1196":1,"1213":1,"1215":1,"1216":1,"1219":1,"1225":1,"1227":1,"1236":2,"1245":1,"1249":1,"1250":1,"1254":1,"1255":1,"1265":4,"1270":1,"1273":1,"1276":1,"1281":1,"1283":1,"1288":1,"1294":1,"1295":1,"1300":4,"1303":1,"1312":2,"1316":1,"1320":2,"1321":1,"1325":1,"1326":2,"1329":4,"1332":5,"1335":2,"1336":1,"1340":1,"1346":2,"1353":1,"1354":1,"1357":2,"1359":2,"1361":3,"1362":1,"1368":1,"1378":1,"1380":1,"1383":1,"1385":1,"1387":2,"1393":2,"1398":1,"1400":2,"1402":1,"1403":1,"1404":2,"1405":1,"1406":4,"1414":3,"1415":1,"1423":1,"1430":1,"1431":2,"1435":1,"1438":1,"1439":2,"1441":1,"1451":5,"1452":2,"1454":3,"1455":1,"1458":1,"1471":1,"1492":1,"1495":2,"1496":1,"1499":5,"1500":5,"1501":3,"1503":2,"1507":1,"1514":1,"1516":1,"1517":1,"1518":4,"1519":1,"1522":1,"1523":3,"1527":2,"1528":1,"1529":2,"1547":1,"1553":2,"1554":1,"1557":3,"1558":1,"1559":1,"1567":1,"1573":2,"1577":1,"1630":2,"1631":1,"1632":1,"1633":1,"1652":1,"1654":1,"1655":1,"1665":1,"1670":1,"1671":1,"1672":1,"1674":1,"1675":6,"1677":2,"1682":1,"1685":1,"1722":2,"1723":1,"1725":2,"1728":1,"1729":1,"1787":1,"1794":1,"1802":1,"1804":3,"1815":3,"1816":2,"1820":3,"1821":2,"1822":7,"1833":2,"1836":1,"1844":1,"1845":1,"1850":1,"1851":5,"1852":4,"1853":1,"1854":1,"1855":2,"1858":1,"1859":1,"1864":1,"1866":2,"1869":1,"1879":2,"1881":1,"1908":1,"1910":1,"1912":1,"1920":2,"1921":3,"1923":1,"1929":1,"1932":7,"1934":1,"1935":2,"1936":1,"1940":1,"1943":1,"1944":1,"1946":2,"1948":2,"1949":3,"1950":1,"1952":1,"1954":1,"2032":1,"2034":2,"2035":4,"2038":2,"2041":1,"2042":2,"2044":1,"2046":1,"2059":2,"2060":1,"2063":1,"2067":1,"2073":1,"2074":1,"2076":1,"2103":1,"2112":3,"2114":3,"2119":1,"2123":1,"2124":2,"2125":1,"2126":1,"2129":1,"2130":1,"2131":1,"2132":1,"2136":1,"2139":3,"2140":2,"2143":9,"2144":2,"2147":3,"2148":1,"2152":1,"2156":2,"2157":1,"2160":1,"2161":2,"2162":1,"2169":2,"2171":1,"2182":3,"2183":5,"2199":1,"2225":1,"2226":1,"2228":1,"2229":1,"2230":2,"2234":1,"2235":1,"2236":1,"2243":1,"2246":1,"2248":1,"2252":5,"2255":2,"2261":1,"2263":7,"2267":1,"2272":1,"2273":1,"2275":1,"2277":1,"2279":1,"2280":2,"2281":1,"2286":1,"2292":1,"2298":1,"2300":1,"2305":3,"2309":1,"2311":4,"2315":1,"2317":1,"2320":2,"2321":1,"2324":1,"2325":1,"2343":1,"2344":1,"2346":1,"2350":1,"2351":1,"2353":1,"2375":4,"2401":1,"2402":1,"2405":1,"2410":1,"2411":1,"2413":2,"2417":1,"2427":1,"2452":1,"2454":3,"2461":1,"2463":2,"2465":1,"2466":1,"2467":1,"2469":1,"2475":2,"2476":1,"2477":1,"2478":1,"2479":2,"2480":4,"2490":4,"2491":3,"2502":1,"2506":1,"2513":1,"2516":1,"2518":1,"2524":1,"2525":1,"2539":3,"2541":2,"2543":1,"2544":3,"2545":1,"2546":1,"2548":4,"2551":1,"2552":1,"2556":3,"2564":1,"2566":5,"2567":1,"2570":1,"2574":1,"2575":3,"2576":21,"2577":7,"2578":2,"2585":1,"2587":2,"2592":1,"2594":1,"2596":2,"2615":1,"2617":1,"2619":1,"2622":1,"2623":1,"2632":1,"2645":1,"2660":1,"2661":1,"2671":2,"2680":2,"2683":1,"2686":3,"2701":1,"2702":1,"2705":2,"2706":1,"2707":3,"2710":1,"2711":3,"2718":1,"2719":1,"2720":1,"2721":1,"2722":1,"2727":1,"2728":10,"2734":1,"2735":6,"2736":5,"2737":2,"2738":2,"2743":2,"2745":1,"2746":1,"2750":2,"2754":1,"2757":4}}],["beware",{"2":{"1573":1}}],["beat",{"2":{"2105":7}}],["beats",{"2":{"1400":1,"2105":2}}],["beacon",{"2":{"1728":3,"1949":6,"2711":2}}],["bear65",{"2":{"72":1}}],["bear",{"2":{"67":2,"277":2,"2268":1,"2275":1}}],["bespoke",{"2":{"2546":1}}],["besides",{"2":{"1373":1,"1393":1,"1939":1,"2262":1,"2725":1}}],["best",{"0":{"615":1,"2471":1},"1":{"2472":1},"2":{"233":1,"367":1,"453":1,"538":1,"546":1,"560":2,"562":1,"575":1,"615":1,"726":1,"1336":1,"1359":3,"1403":1,"1447":1,"1824":1,"1902":1,"1950":1,"2169":1,"2181":1,"2274":1,"2411":1,"2427":1,"2450":1,"2472":1,"2546":1,"2552":1,"2563":1,"2564":1,"2568":1,"2577":1,"2714":1}}],["bepo",{"2":{"1355":1,"2703":2}}],["beyond",{"0":{"1290":1},"2":{"690":1,"1290":1,"1941":1,"2419":1}}],["beneath",{"2":{"2276":1}}],["beneficial",{"2":{"690":1,"2584":1}}],["benefits",{"2":{"350":1,"1655":1,"2114":1}}],["benefit",{"2":{"215":1,"560":1,"1376":1,"2292":1}}],["bent",{"2":{"2273":2,"2274":1}}],["bends",{"2":{"2272":1}}],["bending",{"2":{"2270":1,"2272":1}}],["bend",{"2":{"231":1,"1793":4,"2272":1,"2371":4}}],["beck",{"2":{"2750":1}}],["becom",{"2":{"1938":1}}],["become",{"2":{"315":1,"1527":1,"2245":2,"2247":2,"2249":2,"2273":1,"2311":1,"2411":2}}],["becomes",{"2":{"213":1,"231":1,"505":1,"1499":1,"2307":1,"2327":1}}],["because",{"2":{"28":1,"352":1,"454":1,"537":1,"635":3,"1134":1,"1212":1,"1216":1,"1272":1,"1302":1,"1326":2,"1335":1,"1336":1,"1338":1,"1383":1,"1442":1,"1445":1,"1451":1,"1499":3,"1675":1,"1791":1,"1821":2,"1857":1,"1866":1,"1921":1,"1959":1,"1960":1,"2031":1,"2044":1,"2126":1,"2128":1,"2132":1,"2145":1,"2152":2,"2161":2,"2162":1,"2171":1,"2177":1,"2226":1,"2325":1,"2327":1,"2348":1,"2398":1,"2411":2,"2413":1,"2414":1,"2462":1,"2477":1,"2516":1,"2519":1,"2568":1,"2576":1,"2577":1,"2584":1,"2605":1,"2728":1,"2729":1,"2735":1,"2744":1,"2756":1}}],["bebol",{"2":{"211":1}}],["beekeeb",{"2":{"211":1}}],["beeps",{"2":{"1386":1}}],["beep",{"2":{"120":1,"1354":1,"1357":3,"1386":1,"2074":1,"2676":2}}],["been",{"0":{"338":1},"2":{"1":2,"3":1,"7":1,"8":2,"10":1,"14":2,"15":1,"16":1,"25":1,"36":1,"38":1,"49":2,"60":1,"67":2,"69":1,"70":3,"82":1,"84":1,"86":3,"90":1,"98":1,"114":2,"118":2,"123":1,"124":1,"125":1,"126":1,"128":1,"132":1,"137":1,"140":2,"142":1,"154":1,"157":1,"163":1,"164":1,"166":1,"167":1,"169":1,"175":2,"182":5,"183":1,"185":1,"194":2,"196":1,"198":2,"201":4,"202":1,"203":1,"206":1,"209":1,"213":2,"215":1,"218":1,"219":1,"220":1,"221":1,"224":1,"228":2,"230":1,"231":1,"233":2,"238":1,"243":1,"254":1,"262":3,"265":1,"271":1,"273":1,"349":1,"375":1,"400":1,"510":1,"523":1,"537":1,"575":1,"578":2,"585":1,"587":4,"598":1,"600":1,"606":2,"626":1,"663":1,"1316":1,"1317":1,"1359":1,"1360":2,"1452":1,"1495":1,"1641":1,"1674":1,"1682":1,"1730":5,"1805":1,"1827":1,"1873":1,"1925":1,"1940":1,"1942":1,"1949":1,"1954":7,"2044":1,"2102":1,"2118":1,"2128":2,"2152":2,"2160":1,"2162":1,"2169":2,"2249":1,"2305":1,"2311":1,"2347":1,"2424":1,"2445":1,"2450":1,"2454":1,"2455":1,"2476":1,"2479":1,"2480":1,"2492":1,"2494":1,"2525":2,"2566":2,"2576":1,"2577":2,"2601":1,"2633":1,"2719":1,"2734":1,"2743":1,"2748":1}}],["belgium",{"2":{"2703":2}}],["belgian",{"2":{"1355":1,"2703":4}}],["bel",{"2":{"2074":1,"2676":1}}],["belong",{"2":{"1132":1,"1133":1,"1412":1,"2566":2}}],["below",{"2":{"43":1,"55":1,"182":1,"196":2,"204":1,"224":1,"432":1,"462":1,"568":1,"597":1,"598":1,"602":1,"610":2,"623":1,"628":1,"656":1,"681":3,"693":1,"701":1,"707":1,"1127":1,"1130":1,"1132":1,"1133":1,"1179":1,"1200":1,"1218":1,"1238":1,"1251":1,"1304":1,"1335":1,"1416":1,"1430":1,"1460":1,"1496":1,"1499":2,"1500":1,"1510":1,"1572":1,"1633":1,"1658":1,"1662":1,"1670":1,"1680":2,"1683":1,"1724":1,"1820":1,"1822":1,"1832":1,"1854":1,"1864":2,"1877":1,"1878":1,"1906":1,"1932":1,"1945":1,"1949":1,"2032":1,"2033":1,"2059":1,"2075":1,"2119":1,"2147":1,"2148":1,"2161":1,"2162":1,"2169":1,"2170":2,"2178":1,"2262":2,"2268":1,"2282":1,"2385":1,"2423":2,"2544":1,"2566":1,"2573":1,"2577":3,"2585":1,"2587":3,"2592":1,"2596":3,"2701":1,"2702":1,"2725":1,"2749":2,"2753":1}}],["believe",{"2":{"352":1}}],["belt",{"2":{"199":1}}],["bells",{"2":{"2566":1}}],["bella",{"2":{"211":1}}],["bell",{"2":{"114":1,"1357":1,"1399":1,"2074":2}}],["began",{"2":{"2226":1}}],["begining",{"2":{"2143":2}}],["begins",{"2":{"1451":1,"1680":1,"1689":1,"2152":1,"2226":2,"2368":1,"2406":1,"2423":1}}],["beginner",{"2":{"1340":1}}],["beginners",{"0":{"1338":1}}],["beginning",{"0":{"2723":1},"2":{"203":1,"336":1,"453":1,"1375":1,"1451":3,"1555":1,"1804":1,"1822":2,"2147":1,"2148":1,"2162":1,"2171":1,"2179":3,"2274":1,"2477":1,"2614":1}}],["begin",{"2":{"94":1,"113":1,"114":1,"133":1,"134":1,"249":1,"1442":1,"1687":1,"1691":1,"1822":2,"2071":1,"2196":1,"2211":1,"2294":1,"2443":1,"2452":1,"2757":1}}],["begun",{"2":{"50":1}}],["bet",{"2":{"233":1,"1447":1,"2450":1}}],["beta",{"2":{"143":2,"211":1,"228":1}}],["better",{"0":{"2601":1},"1":{"2602":1,"2603":1,"2604":1,"2605":1,"2606":1,"2607":1,"2608":1,"2609":1,"2610":1,"2611":1,"2612":1},"2":{"50":1,"98":1,"149":1,"160":1,"191":2,"263":1,"458":1,"467":1,"482":1,"589":1,"1836":1,"1902":1,"2286":1,"2318":1,"2409":1,"2491":1,"2497":2,"2506":1,"2509":1,"2584":1,"2670":1,"2719":1,"2730":1,"2735":1,"2736":1,"2757":1}}],["between",{"0":{"1265":1,"1376":1,"1903":1,"2130":1},"1":{"1377":1,"1378":1,"1379":1,"1380":1,"1381":1,"1382":1,"1383":1,"1384":1,"1385":1},"2":{"32":1,"45":1,"49":2,"64":1,"76":1,"107":1,"114":1,"211":2,"249":1,"257":1,"258":1,"259":2,"266":1,"271":1,"276":1,"341":1,"413":1,"415":1,"453":1,"462":1,"468":1,"474":1,"502":2,"505":2,"511":3,"563":1,"592":1,"630":1,"656":1,"660":3,"699":1,"1121":1,"1174":1,"1195":1,"1217":1,"1225":1,"1265":1,"1272":1,"1288":1,"1300":1,"1302":2,"1325":1,"1339":2,"1340":1,"1341":6,"1376":1,"1377":1,"1385":1,"1451":1,"1471":1,"1494":2,"1496":1,"1500":1,"1528":1,"1533":1,"1557":1,"1559":1,"1567":1,"1587":1,"1633":1,"1677":1,"1717":1,"1803":4,"1804":2,"1805":8,"1807":3,"1808":1,"1822":1,"1830":1,"1836":1,"1858":1,"1902":1,"1903":1,"1918":1,"1936":1,"2033":1,"2036":1,"2038":1,"2040":6,"2051":13,"2053":2,"2054":2,"2055":2,"2069":1,"2079":1,"2083":1,"2087":1,"2107":1,"2117":1,"2118":2,"2119":1,"2120":1,"2126":1,"2129":3,"2130":1,"2131":1,"2133":1,"2146":1,"2148":1,"2149":1,"2157":1,"2161":1,"2169":1,"2179":1,"2217":1,"2225":1,"2227":2,"2231":1,"2238":1,"2258":1,"2271":1,"2272":1,"2295":1,"2342":1,"2349":1,"2361":1,"2420":1,"2477":2,"2495":1,"2508":1,"2571":2,"2574":1,"2584":1,"2585":1,"2592":1,"2611":1,"2614":1,"2662":1,"2674":2,"2689":1,"2694":1,"2729":1,"2735":1,"2737":1,"2738":1,"2757":1}}],["behind",{"2":{"49":1,"198":1,"201":1,"213":1,"224":1,"238":1,"251":1,"517":1,"2162":1,"2719":2}}],["behave",{"2":{"529":1,"1302":1,"1503":1,"1676":1,"1864":1,"1940":1,"2160":1,"2393":1,"2567":1,"2735":1}}],["behaves",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"337":1,"567":1,"1941":1,"2423":1}}],["behavioral",{"2":{"1271":1}}],["behaviors",{"0":{"505":1}}],["behavior",{"0":{"567":1,"571":1},"1":{"568":1,"572":1,"573":1},"2":{"4":1,"49":1,"64":1,"87":2,"88":1,"103":1,"104":1,"126":1,"127":1,"176":1,"194":2,"331":1,"352":3,"372":1,"430":2,"435":1,"481":1,"484":1,"511":1,"562":1,"566":2,"569":1,"571":2,"572":1,"589":1,"1271":1,"1403":1,"1415":1,"1528":1,"1554":1,"1555":1,"1655":1,"1659":1,"1662":1,"1666":1,"1670":1,"1671":1,"1673":1,"1674":1,"1675":1,"1676":1,"1716":1,"1717":1,"1824":1,"1855":2,"1941":1,"2131":1,"2170":1,"2172":1,"2196":1,"2197":1,"2198":1,"2306":1,"2311":1,"2416":1,"2490":1,"2502":1,"2539":2,"2541":1,"2628":1,"2726":1,"2729":2}}],["behaviours",{"2":{"198":1}}],["behaviour",{"0":{"194":1,"206":1,"1865":1},"2":{"2":1,"113":1,"114":1,"134":1,"149":2,"191":2,"206":1,"211":2,"587":1,"597":1,"1245":1,"1303":1,"1344":1,"1432":1,"1499":1,"1520":1,"1560":2,"1685":1,"1865":1,"1918":1,"1948":1,"2034":1,"2124":1,"2558":1}}],["being",{"2":{"6":1,"92":1,"114":1,"124":1,"176":1,"182":1,"234":1,"355":1,"493":1,"560":1,"659":2,"660":1,"685":1,"694":1,"1253":1,"1303":1,"1312":1,"1329":1,"1346":1,"1351":1,"1363":1,"1365":1,"1376":2,"1384":1,"1412":1,"1437":1,"1442":1,"1459":1,"1471":1,"1500":1,"1515":1,"1553":1,"1556":3,"1655":1,"1675":3,"1827":1,"1837":1,"1940":2,"2031":1,"2037":1,"2152":2,"2161":2,"2169":3,"2263":2,"2268":2,"2279":1,"2311":14,"2363":1,"2407":1,"2425":1,"2450":1,"2454":1,"2478":1,"2479":1,"2490":2,"2495":1,"2522":1,"2548":1,"2568":1,"2576":3,"2617":1,"2712":1,"2721":1,"2725":1,"2739":1}}],["be",{"0":{"25":1,"263":1,"341":1,"503":1,"504":1,"505":1,"532":1,"2517":1,"2720":1,"2721":1},"2":{"5":1,"10":2,"11":1,"16":1,"22":1,"23":1,"24":1,"25":1,"28":1,"45":1,"49":2,"50":2,"58":1,"60":1,"63":2,"64":1,"70":1,"74":4,"88":2,"93":1,"100":1,"103":2,"104":2,"107":1,"109":1,"110":1,"118":1,"124":2,"125":1,"126":1,"127":2,"131":1,"134":4,"137":1,"138":1,"153":2,"154":1,"156":1,"157":1,"160":1,"164":1,"176":1,"184":1,"185":2,"191":2,"194":3,"195":2,"201":5,"203":1,"209":3,"210":1,"213":2,"220":1,"221":1,"228":3,"230":2,"231":1,"236":1,"249":1,"254":1,"262":2,"263":1,"265":3,"266":1,"268":1,"271":1,"273":1,"275":2,"276":2,"282":3,"291":1,"315":1,"316":1,"317":1,"324":1,"327":1,"331":3,"334":3,"335":1,"337":1,"340":1,"341":8,"343":2,"344":2,"345":3,"349":1,"350":10,"352":5,"357":2,"358":2,"361":1,"370":3,"371":2,"374":5,"384":1,"385":1,"387":1,"396":3,"400":1,"402":1,"403":2,"411":3,"414":1,"415":1,"416":1,"417":1,"424":1,"430":2,"433":1,"434":1,"435":2,"441":3,"446":1,"447":1,"450":1,"452":1,"453":1,"455":1,"457":1,"460":1,"462":1,"465":1,"466":2,"472":1,"473":1,"474":3,"478":1,"479":2,"481":3,"482":2,"483":1,"484":1,"486":1,"497":1,"498":1,"501":2,"502":4,"504":4,"505":1,"506":3,"509":3,"510":2,"511":3,"512":1,"515":2,"516":4,"519":2,"525":1,"529":4,"530":2,"532":1,"533":1,"534":1,"535":1,"537":2,"538":1,"539":1,"542":1,"546":1,"550":1,"551":1,"554":2,"556":2,"560":5,"561":1,"566":2,"567":1,"568":3,"570":1,"571":2,"574":1,"575":1,"580":1,"581":1,"584":2,"586":2,"588":1,"589":2,"592":2,"597":4,"598":9,"599":1,"600":2,"601":1,"602":1,"613":1,"617":1,"621":3,"626":4,"627":3,"628":4,"629":2,"630":1,"635":5,"636":2,"638":1,"639":3,"641":2,"646":1,"659":1,"660":5,"661":2,"663":1,"669":1,"673":1,"681":3,"683":1,"684":4,"685":1,"686":1,"688":1,"689":5,"690":5,"691":2,"693":1,"698":2,"701":4,"702":1,"703":1,"707":3,"726":1,"727":1,"734":1,"738":1,"760":1,"764":1,"788":1,"792":1,"796":1,"822":1,"826":1,"852":2,"853":1,"857":1,"861":1,"887":1,"891":1,"895":1,"921":1,"925":1,"929":1,"955":1,"959":1,"963":1,"989":1,"993":1,"997":1,"1023":2,"1027":1,"1031":1,"1057":2,"1061":1,"1065":1,"1091":1,"1095":1,"1099":1,"1121":1,"1125":1,"1127":1,"1128":1,"1129":4,"1130":1,"1132":2,"1133":2,"1134":2,"1135":1,"1138":1,"1142":1,"1148":1,"1152":1,"1176":1,"1177":4,"1179":2,"1181":2,"1198":1,"1200":2,"1212":1,"1215":1,"1216":2,"1217":2,"1218":1,"1221":1,"1223":3,"1228":1,"1230":1,"1236":1,"1242":1,"1243":3,"1247":1,"1248":1,"1249":1,"1252":1,"1253":1,"1254":1,"1265":1,"1270":3,"1273":1,"1275":1,"1293":2,"1294":1,"1295":1,"1298":1,"1299":2,"1300":4,"1303":1,"1304":1,"1310":2,"1314":1,"1319":1,"1325":1,"1326":3,"1328":1,"1329":1,"1331":3,"1332":2,"1335":4,"1336":2,"1337":1,"1338":2,"1339":1,"1340":4,"1341":1,"1342":1,"1346":2,"1347":4,"1348":1,"1349":1,"1351":1,"1353":1,"1359":3,"1360":1,"1361":2,"1364":1,"1365":1,"1366":1,"1367":1,"1368":2,"1375":2,"1376":2,"1377":5,"1378":1,"1379":2,"1380":1,"1383":2,"1384":1,"1385":2,"1387":2,"1390":1,"1391":1,"1393":1,"1394":2,"1396":1,"1398":5,"1400":1,"1402":1,"1403":1,"1404":2,"1406":1,"1411":1,"1414":1,"1415":1,"1416":1,"1423":1,"1430":1,"1431":7,"1435":1,"1436":1,"1440":2,"1441":1,"1445":1,"1446":2,"1447":1,"1451":2,"1459":2,"1467":1,"1492":2,"1494":1,"1495":1,"1497":1,"1500":1,"1501":1,"1506":2,"1511":1,"1513":1,"1514":2,"1515":4,"1516":3,"1518":8,"1525":2,"1528":1,"1530":1,"1531":1,"1533":2,"1534":3,"1537":1,"1548":2,"1549":1,"1551":2,"1553":1,"1557":4,"1558":1,"1559":2,"1560":1,"1561":2,"1562":4,"1570":1,"1573":5,"1574":1,"1577":1,"1578":2,"1579":2,"1589":1,"1594":2,"1596":2,"1621":2,"1630":3,"1632":1,"1633":3,"1638":1,"1651":2,"1654":2,"1657":1,"1659":1,"1661":1,"1663":1,"1665":2,"1666":1,"1668":1,"1670":13,"1671":3,"1672":1,"1673":2,"1674":1,"1676":2,"1677":2,"1684":1,"1685":1,"1716":1,"1717":1,"1725":3,"1729":2,"1731":1,"1743":1,"1745":1,"1787":1,"1804":2,"1806":1,"1807":1,"1808":2,"1809":1,"1811":1,"1814":2,"1815":2,"1817":1,"1819":1,"1821":1,"1822":4,"1824":1,"1825":1,"1827":1,"1828":1,"1832":2,"1833":1,"1836":3,"1839":1,"1842":3,"1844":4,"1845":2,"1848":1,"1849":3,"1850":2,"1851":3,"1853":1,"1855":4,"1859":3,"1863":2,"1864":5,"1865":1,"1866":3,"1869":1,"1871":1,"1873":3,"1874":1,"1876":4,"1877":2,"1878":2,"1879":2,"1880":2,"1881":2,"1906":1,"1907":1,"1908":2,"1910":1,"1912":3,"1915":1,"1920":1,"1921":3,"1922":2,"1928":2,"1929":1,"1932":1,"1933":1,"1934":3,"1935":1,"1936":2,"1937":1,"1938":3,"1939":1,"1941":1,"1942":3,"1943":1,"1946":3,"1948":2,"1951":1,"1952":2,"1953":1,"1955":1,"1959":2,"1970":1,"1972":1,"2031":1,"2032":1,"2034":2,"2035":2,"2036":1,"2037":2,"2042":3,"2044":2,"2058":1,"2061":2,"2063":1,"2065":1,"2066":2,"2067":1,"2072":2,"2075":2,"2102":1,"2114":1,"2118":2,"2120":2,"2124":2,"2125":3,"2126":2,"2128":3,"2129":1,"2130":6,"2131":2,"2132":1,"2139":2,"2143":2,"2145":1,"2146":2,"2147":1,"2150":1,"2152":7,"2153":2,"2156":1,"2161":4,"2162":1,"2168":1,"2169":6,"2170":1,"2171":6,"2172":1,"2174":1,"2175":1,"2176":1,"2178":1,"2182":6,"2183":2,"2196":1,"2197":1,"2198":1,"2199":1,"2217":1,"2225":1,"2226":4,"2228":1,"2229":2,"2230":2,"2235":2,"2237":3,"2238":1,"2240":3,"2242":2,"2243":2,"2244":1,"2245":1,"2247":1,"2249":1,"2254":2,"2255":3,"2257":3,"2259":1,"2260":2,"2262":5,"2263":7,"2268":2,"2269":1,"2270":2,"2271":1,"2272":2,"2273":7,"2274":3,"2275":2,"2276":2,"2277":2,"2279":4,"2280":1,"2282":1,"2284":1,"2286":1,"2294":1,"2295":2,"2296":3,"2299":2,"2300":2,"2301":1,"2303":2,"2305":1,"2307":1,"2308":1,"2309":2,"2311":4,"2318":1,"2321":1,"2322":1,"2324":1,"2327":1,"2328":1,"2330":1,"2331":1,"2332":1,"2334":1,"2335":1,"2342":1,"2344":1,"2346":1,"2347":3,"2348":2,"2349":1,"2350":2,"2351":3,"2352":1,"2353":1,"2355":1,"2367":1,"2398":1,"2401":2,"2402":1,"2403":2,"2405":3,"2409":1,"2411":3,"2413":4,"2414":1,"2421":1,"2423":3,"2427":2,"2428":2,"2431":2,"2439":1,"2440":4,"2441":1,"2443":1,"2447":2,"2448":2,"2450":4,"2451":1,"2452":1,"2454":1,"2456":1,"2457":1,"2466":2,"2468":1,"2469":2,"2474":1,"2475":1,"2479":1,"2480":4,"2490":2,"2491":2,"2495":1,"2497":1,"2498":1,"2501":3,"2506":2,"2508":1,"2512":1,"2513":12,"2514":1,"2515":1,"2516":3,"2517":5,"2518":5,"2519":4,"2521":1,"2522":1,"2524":6,"2525":1,"2526":1,"2529":1,"2530":1,"2533":1,"2534":1,"2535":1,"2539":1,"2541":1,"2542":1,"2543":1,"2544":2,"2545":1,"2546":1,"2548":6,"2549":3,"2550":2,"2551":1,"2552":2,"2553":1,"2555":1,"2557":1,"2560":2,"2563":1,"2564":11,"2565":6,"2566":32,"2567":13,"2569":2,"2570":1,"2571":1,"2573":2,"2574":5,"2575":4,"2576":39,"2577":30,"2579":1,"2584":1,"2587":2,"2588":2,"2589":1,"2592":1,"2593":1,"2594":2,"2595":1,"2596":3,"2598":2,"2600":1,"2601":1,"2605":4,"2614":2,"2633":1,"2667":1,"2670":1,"2672":2,"2673":1,"2674":2,"2676":1,"2677":1,"2678":1,"2679":1,"2683":3,"2686":1,"2688":2,"2689":1,"2692":1,"2693":1,"2694":2,"2695":2,"2697":2,"2698":1,"2699":1,"2700":1,"2702":1,"2704":1,"2705":1,"2710":1,"2711":1,"2714":1,"2718":2,"2719":3,"2720":7,"2721":2,"2722":1,"2723":1,"2725":1,"2728":5,"2729":1,"2734":2,"2735":5,"2736":3,"2737":5,"2738":2,"2740":2,"2743":1,"2745":1,"2749":3,"2752":3,"2753":2,"2754":1,"2755":1,"2756":1,"2757":2}}],["beforehand",{"2":{"2450":1}}],["before",{"0":{"343":1,"344":1,"345":1,"346":1},"2":{"1":1,"25":1,"45":1,"49":1,"55":1,"73":1,"90":1,"105":1,"160":2,"176":1,"191":1,"199":1,"203":2,"211":1,"234":1,"240":1,"246":1,"259":1,"263":1,"300":1,"307":1,"341":1,"345":1,"347":1,"350":9,"396":1,"409":1,"411":1,"447":1,"478":1,"505":7,"515":3,"554":1,"556":2,"558":1,"560":4,"568":1,"571":1,"574":1,"575":1,"578":1,"585":1,"587":1,"592":2,"598":2,"599":1,"600":1,"636":1,"698":2,"707":1,"1179":1,"1200":1,"1326":1,"1359":1,"1360":4,"1368":1,"1369":1,"1403":1,"1411":1,"1416":1,"1431":2,"1440":1,"1441":1,"1442":1,"1445":1,"1451":1,"1497":1,"1510":1,"1527":1,"1570":1,"1596":1,"1622":1,"1624":1,"1670":1,"1714":1,"1725":1,"1776":1,"1778":1,"1780":1,"1783":1,"1807":1,"1816":1,"1821":1,"1839":8,"1858":1,"1861":1,"1864":1,"1866":2,"1873":2,"1876":2,"1910":1,"1912":1,"1917":1,"1946":1,"2021":1,"2023":1,"2025":1,"2028":1,"2070":1,"2084":1,"2088":1,"2112":2,"2113":1,"2118":1,"2128":2,"2134":1,"2152":2,"2160":1,"2162":1,"2169":1,"2262":1,"2263":1,"2270":1,"2272":1,"2274":1,"2276":1,"2300":1,"2311":1,"2348":1,"2418":1,"2441":1,"2450":1,"2456":1,"2457":1,"2477":1,"2490":1,"2494":1,"2504":1,"2524":3,"2551":1,"2552":1,"2564":1,"2566":2,"2569":1,"2575":1,"2605":1,"2641":1,"2680":1,"2686":1,"2691":1,"2696":1,"2699":1,"2713":1,"2720":1,"2729":1,"2734":1,"2735":1}}],["m4",{"2":{"2528":1}}],["m32u4",{"2":{"2347":1}}],["m3n3van",{"2":{"143":2}}],["mrwd",{"2":{"1932":1,"2355":1,"2393":1}}],["mrelax",{"2":{"160":1}}],["mhz",{"2":{"1181":2}}],["mb85rs64v",{"2":{"685":2}}],["mb85rc256v",{"2":{"684":2}}],["mnt",{"2":{"2463":1}}],["mnemonic",{"2":{"2182":2,"2263":1}}],["mnxt",{"2":{"530":2,"1665":1,"1932":1,"2355":1,"2393":1}}],["mnk50",{"2":{"241":2}}],["mnk75",{"2":{"211":1,"241":2}}],["mnk1800s",{"2":{"211":1,"241":2}}],["mnk65",{"2":{"211":1}}],["mm",{"2":{"349":2,"1838":4,"1842":1,"2699":1}}],["mmcu=",{"2":{"292":1,"2235":1}}],["mmoskal",{"2":{"199":1}}],["m2s",{"2":{"2130":7}}],["m256ws",{"2":{"277":1}}],["m256wh",{"2":{"277":1}}],["m20add",{"2":{"114":1}}],["mj65",{"2":{"253":2}}],["mj6xy",{"2":{"211":1}}],["mfa",{"2":{"2506":1}}],["mffd",{"2":{"1932":1,"2355":1,"2393":1}}],["mf34",{"2":{"226":1,"236":1}}],["mf17",{"2":{"226":1,"236":1}}],["m60",{"2":{"199":1}}],["m65",{"2":{"114":1,"211":2}}],["msel",{"2":{"2355":1,"2393":1}}],["msecs",{"2":{"1361":1}}],["mstp",{"2":{"2355":1,"2393":1}}],["msb",{"2":{"2148":2}}],["msbs",{"2":{"2147":1}}],["msg1967778",{"2":{"1298":2}}],["msg1884034",{"2":{"1297":2}}],["msg1127447",{"2":{"1289":2}}],["msg1492604",{"2":{"1275":2}}],["msystem",{"2":{"2508":1}}],["msys2",{"0":{"2508":1},"2":{"158":1,"160":1,"625":1,"1241":1,"2347":1,"2351":1,"2431":1,"2458":1,"2459":1,"2460":1,"2508":2}}],["msys",{"2":{"158":1,"160":1,"240":1,"2244":1,"2347":1,"2431":1,"2435":1,"2458":1,"2459":1,"2460":3,"2468":1,"2508":2,"2513":4}}],["ms",{"0":{"1416":1},"2":{"149":1,"160":1,"209":2,"222":2,"231":2,"502":1,"505":1,"511":1,"588":2,"707":1,"1326":2,"1357":1,"1497":1,"1554":1,"1559":2,"1573":4,"1683":1,"1801":19,"1805":22,"1806":6,"1807":1,"1817":1,"1838":1,"1839":2,"1842":1,"1851":2,"1857":1,"1868":6,"1879":1,"1932":8,"1950":2,"2075":2,"2128":1,"2141":1,"2167":4,"2344":1,"2372":19,"2490":1,"2539":1,"2564":2,"2674":2,"2681":1,"2687":1,"2689":1,"2697":1,"2699":1,"2700":1}}],["mschwingen",{"2":{"149":1,"207":2}}],["mctl",{"2":{"2355":1,"2393":1}}],["mcselec",{"2":{"1242":1}}],["mcmuffin",{"2":{"616":1}}],["mc",{"2":{"211":1}}],["mcall",{"2":{"160":1}}],["mcp23018",{"2":{"148":1,"149":2,"191":2}}],["mcu>",{"2":{"292":1,"2230":3,"2233":1,"2235":1,"2236":1,"2347":1}}],["mcuconf",{"2":{"50":2,"657":2,"658":2,"661":2,"703":2,"1132":4,"1133":4,"1177":2,"1198":1,"1226":1,"1230":2,"1469":1,"1470":1,"2536":1,"2537":1,"2538":1}}],["mcus",{"0":{"1139":1,"2513":1},"1":{"1140":1,"1141":1,"1142":1},"2":{"49":1,"76":1,"114":1,"149":1,"174":1,"191":1,"249":1,"322":1,"331":1,"334":1,"336":1,"486":1,"487":1,"630":1,"641":1,"654":1,"656":1,"688":1,"689":1,"699":1,"1127":3,"1129":4,"1130":4,"1132":2,"1133":2,"1174":1,"1195":1,"1227":1,"1294":1,"1390":1,"1632":2,"1821":1,"2126":1,"2240":1,"2346":1,"2524":5,"2531":1,"2549":1,"2550":3,"2567":1,"2576":1,"2622":1,"2623":1}}],["mcu",{"0":{"130":1,"145":1,"330":1,"514":1,"1551":1,"2546":1,"2547":1,"2550":1,"2552":1,"2650":1},"1":{"2547":1,"2548":2,"2549":2,"2550":1,"2551":1,"2552":1},"2":{"10":2,"73":1,"93":1,"114":1,"130":2,"134":1,"145":1,"149":1,"174":2,"176":5,"191":1,"199":4,"211":1,"236":1,"285":1,"322":1,"323":1,"326":1,"331":5,"334":1,"335":1,"512":1,"514":1,"515":2,"563":1,"586":1,"587":1,"638":1,"639":1,"654":1,"656":2,"661":1,"663":1,"681":1,"687":1,"688":2,"689":9,"692":3,"702":2,"703":3,"1121":1,"1125":1,"1127":1,"1129":3,"1130":1,"1132":4,"1133":5,"1134":1,"1176":2,"1177":1,"1181":2,"1197":2,"1198":1,"1223":3,"1225":2,"1227":1,"1230":1,"1235":1,"1236":2,"1294":1,"1331":1,"1394":1,"1469":1,"1471":3,"1492":1,"1547":1,"1551":1,"1561":1,"1573":1,"1574":1,"1908":1,"2061":1,"2114":1,"2231":1,"2237":1,"2238":1,"2263":1,"2284":1,"2328":2,"2342":1,"2343":1,"2344":1,"2345":1,"2346":2,"2347":1,"2348":1,"2513":5,"2524":2,"2529":2,"2530":4,"2533":1,"2546":8,"2548":3,"2550":1,"2552":1,"2553":1,"2557":1,"2566":3,"2567":1,"2574":3,"2578":1,"2627":2,"2631":1,"2635":1,"2648":1,"2682":1}}],["mprv",{"2":{"1665":1,"1932":1,"2355":1,"2393":1}}],["mply",{"2":{"530":2,"1665":6,"2355":1,"2393":1}}],["mp",{"2":{"143":2}}],["mpaland",{"0":{"24":1},"2":{"176":1}}],["m0",{"2":{"134":1}}],["m0lly",{"2":{"43":2,"211":1}}],["md5",{"2":{"2262":2,"2353":1}}],["mdash",{"2":{"2149":1,"2478":2,"2479":2,"2480":1,"2617":2}}],["mdbt40",{"2":{"1492":1}}],["mdloader",{"2":{"134":1}}],["md",{"0":{"623":1,"624":1,"1380":1,"2297":1,"2554":1},"2":{"114":1,"134":1,"176":2,"222":1,"341":1,"347":1,"349":1,"350":1,"559":2,"607":1,"621":2,"1275":1,"1346":3,"1376":1,"2259":1,"2260":1,"2293":1,"2296":1,"2297":1,"2303":2,"2554":2,"2566":1}}],["m122",{"2":{"114":1,"207":8}}],["m12og",{"2":{"102":3}}],["mün",{"2":{"114":1}}],["mycoolkeeb",{"2":{"2553":4}}],["mycm",{"2":{"2355":1,"2393":1}}],["myusername",{"2":{"2443":1}}],["mylayout",{"2":{"1378":3}}],["mykeyboard",{"2":{"169":2,"184":2}}],["my",{"0":{"352":1,"442":1,"545":1,"546":1,"1243":1,"1270":1,"1271":1,"1286":1},"1":{"353":1,"354":1,"355":1,"356":1,"443":1,"444":1,"445":1,"446":1,"447":1},"2":{"114":1,"120":2,"272":4,"313":1,"331":1,"335":1,"414":1,"463":1,"464":1,"465":1,"474":2,"557":4,"570":1,"597":3,"598":3,"599":2,"600":2,"616":2,"621":5,"701":1,"1274":1,"1340":1,"1354":2,"1355":2,"1359":4,"1363":4,"1377":2,"1398":3,"1436":3,"1525":4,"1729":10,"1940":4,"1941":5,"1952":10,"2042":10,"2170":2,"2171":14,"2255":2,"2261":2,"2281":1,"2355":2,"2393":2,"2441":5,"2446":1,"2454":2,"2480":1,"2556":1,"2575":10,"2576":5,"2577":29}}],["mx",{"2":{"2266":1,"2706":1}}],["mx25l4006e",{"2":{"694":1}}],["mxss",{"2":{"211":2,"236":1}}],["mx1062",{"2":{"108":1}}],["mx5160",{"2":{"57":2,"211":1}}],["m",{"2":{"93":1,"102":1,"114":1,"158":2,"191":1,"204":2,"207":14,"211":1,"217":1,"222":1,"249":1,"266":5,"313":1,"347":1,"349":1,"358":2,"359":1,"366":1,"371":2,"378":2,"404":1,"429":1,"530":2,"554":1,"1441":1,"1511":2,"1530":1,"1935":6,"1948":4,"2034":10,"2255":1,"2348":3,"2355":3,"2376":10,"2386":3,"2407":1,"2438":2,"2465":1,"2477":1,"2480":1,"2699":1}}],["mumbo",{"0":{"1821":1}}],["mu",{"2":{"1403":4,"1408":4,"2357":4}}],["muhenkan",{"2":{"1280":1,"2391":1}}],["mux",{"2":{"638":4,"639":2}}],["mutually",{"2":{"1339":1}}],["mutable",{"2":{"474":1}}],["mute",{"2":{"231":1,"255":1,"2355":5,"2392":2,"2393":3}}],["mutex",{"2":{"160":1}}],["murcielago",{"2":{"253":2}}],["musical",{"2":{"1398":1,"1406":2}}],["music",{"0":{"1403":1,"1404":1,"1405":1},"1":{"1404":1,"1405":1},"2":{"191":1,"211":1,"592":1,"1397":1,"1398":15,"1399":20,"1403":13,"1404":6,"1405":6,"1408":8,"1549":2,"2357":8,"2707":2,"2749":1}}],["must",{"2":{"88":2,"104":2,"127":2,"141":1,"184":1,"194":1,"268":1,"331":1,"370":2,"399":1,"417":1,"465":1,"466":1,"474":1,"505":3,"508":1,"511":2,"515":1,"532":1,"535":1,"566":2,"609":1,"624":1,"629":1,"636":1,"638":1,"669":1,"690":1,"707":1,"734":1,"760":1,"792":1,"822":1,"852":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1023":1,"1027":1,"1057":1,"1061":1,"1095":1,"1124":1,"1129":1,"1148":1,"1179":1,"1200":1,"1223":2,"1230":1,"1254":1,"1273":1,"1325":1,"1336":1,"1337":1,"1347":4,"1359":1,"1431":3,"1440":1,"1458":1,"1466":1,"1493":1,"1495":1,"1516":2,"1517":1,"1518":9,"1522":1,"1528":1,"1530":1,"1533":1,"1562":1,"1589":1,"1594":1,"1631":1,"1632":1,"1633":2,"1670":2,"1677":2,"1697":1,"1799":1,"1805":1,"1806":1,"1845":1,"1866":1,"1876":1,"1880":1,"1908":1,"1912":2,"1921":2,"1928":2,"1954":1,"2031":1,"2032":2,"2035":1,"2061":1,"2066":1,"2114":1,"2131":1,"2133":1,"2171":1,"2182":1,"2217":1,"2240":1,"2261":1,"2263":2,"2310":1,"2351":1,"2355":1,"2440":2,"2445":1,"2450":1,"2484":1,"2490":1,"2494":2,"2546":1,"2559":1,"2564":4,"2565":1,"2566":7,"2567":2,"2575":1,"2576":3,"2587":2,"2588":2,"2589":1,"2593":1,"2594":2,"2596":1,"2598":1,"2614":1,"2673":1,"2674":2,"2676":1,"2677":1,"2678":1,"2683":2,"2688":2,"2689":1,"2692":1,"2694":2,"2695":2,"2697":2,"2698":1,"2700":1,"2702":1,"2737":1,"2738":2}}],["multitude",{"2":{"2523":1}}],["multiarch",{"2":{"2513":1}}],["multimeter",{"2":{"2279":1}}],["multisplash",{"2":{"1728":3,"1949":6,"2711":2}}],["multinexus",{"2":{"1728":3,"1949":3,"2711":1}}],["multicross",{"2":{"1728":3,"1949":3,"2711":1}}],["multiwide",{"2":{"1728":3,"1949":3,"2711":1}}],["multilingual",{"2":{"1355":1,"2703":3}}],["multiprocessing",{"0":{"478":1}}],["multiplier",{"2":{"1819":1,"1847":1,"1911":3}}],["multiplicative",{"2":{"1406":1}}],["multiplication",{"2":{"191":1}}],["multiples",{"2":{"1802":1}}],["multiplexing",{"0":{"1397":1},"2":{"1397":4,"1399":2,"2534":1}}],["multiplexer",{"2":{"563":1}}],["multiple",{"0":{"422":1,"424":1,"1346":1,"1459":1,"1562":1},"1":{"1347":1,"1348":1,"1349":1,"1350":1,"1351":1,"1352":1},"2":{"75":1,"114":1,"160":3,"211":1,"234":2,"236":1,"249":1,"313":1,"374":2,"396":1,"411":2,"415":2,"418":1,"424":1,"453":1,"468":1,"590":1,"617":1,"628":2,"639":1,"689":1,"690":1,"691":1,"697":1,"698":1,"703":1,"708":1,"711":1,"852":1,"1023":1,"1057":1,"1176":1,"1177":1,"1188":1,"1191":1,"1198":1,"1206":1,"1208":1,"1325":2,"1327":1,"1335":1,"1339":1,"1346":1,"1349":1,"1353":1,"1357":3,"1378":1,"1385":1,"1399":1,"1430":1,"1435":1,"1451":1,"1454":1,"1459":2,"1494":1,"1508":1,"1521":1,"1524":1,"1533":1,"1534":1,"1557":1,"1562":1,"1573":1,"1676":1,"1683":1,"1728":4,"1804":1,"1805":1,"1849":4,"1851":3,"1921":1,"1949":5,"2042":1,"2044":1,"2066":1,"2145":1,"2279":1,"2302":2,"2326":1,"2367":1,"2401":1,"2422":1,"2425":1,"2440":1,"2454":1,"2476":1,"2480":1,"2513":1,"2564":1,"2566":2,"2567":1,"2595":1,"2606":1,"2644":1,"2649":1,"2663":1,"2676":1,"2683":1}}],["multiply",{"2":{"25":1}}],["multi",{"0":{"852":1,"1023":1,"1057":1},"2":{"191":1,"211":1}}],["multibuild",{"2":{"149":1,"199":1}}],["mun",{"2":{"114":1}}],["much",{"0":{"2720":1},"2":{"98":1,"100":1,"123":1,"153":1,"163":1,"174":1,"175":1,"189":1,"244":1,"247":1,"248":1,"251":1,"263":1,"355":1,"477":1,"529":1,"555":1,"692":1,"1264":1,"1334":1,"1383":1,"1406":1,"1423":1,"1438":1,"1471":1,"1655":1,"1676":1,"1806":1,"1807":1,"1842":1,"1906":1,"1949":2,"2182":1,"2226":1,"2237":1,"2250":1,"2273":1,"2274":1,"2311":1,"2442":1,"2506":1,"2508":1,"2509":1,"2525":1,"2534":1,"2543":1,"2565":1,"2701":1}}],["mv",{"2":{"70":1}}],["med",{"2":{"1578":22}}],["medium",{"0":{"1142":1},"2":{"1576":1,"1577":1,"1578":5,"2353":2}}],["media",{"0":{"1665":1,"2393":1},"2":{"73":1,"176":1,"266":1,"502":1,"532":1,"1665":1,"1921":1,"1932":3,"2355":9,"2393":13,"2402":1,"2705":1}}],["meh",{"2":{"1299":1,"2373":2,"2374":1,"2410":3}}],["menu",{"0":{"1272":1},"2":{"628":1,"1272":1,"1677":2,"2126":1,"2183":1,"2355":3,"2392":3,"2460":1,"2738":2}}],["mentioned",{"2":{"228":1,"276":1,"692":1,"1268":1,"1663":1,"1725":1,"1946":1,"2162":1,"2335":1,"2350":1}}],["messing",{"2":{"1287":1}}],["messages",{"0":{"1250":1,"1791":1},"2":{"82":1,"160":1,"191":2,"199":2,"222":1,"375":5,"433":1,"556":1,"1138":3,"1247":1,"1248":1,"1249":1,"1250":1,"1787":1,"1791":1,"1843":1,"1863":2,"2263":10,"2279":1,"2480":1,"2639":2,"2755":1}}],["message",{"0":{"1255":1},"2":{"49":1,"93":1,"149":1,"236":1,"343":1,"344":1,"345":1,"349":1,"393":1,"394":1,"395":1,"396":1,"402":1,"403":1,"411":1,"545":1,"554":2,"1254":2,"1501":1,"1816":1,"2450":1,"2468":1,"2477":1,"2480":1,"2564":1,"2575":3,"2577":1}}],["mesh",{"2":{"560":1}}],["meck",{"2":{"253":2}}],["mechanics",{"2":{"2162":1}}],["mechanical",{"0":{"1276":1,"2312":1},"1":{"2313":1,"2314":1,"2315":1,"2316":1,"2317":1},"2":{"502":1,"624":1,"1257":1,"1276":2,"1325":1,"2313":1,"2320":1,"2417":1}}],["mechanism",{"2":{"160":1,"563":1,"569":1,"1572":1,"2539":1}}],["mechanisms",{"2":{"152":1,"606":1}}],["mechmerlin",{"2":{"370":2}}],["mechmini",{"2":{"143":4}}],["mechwild",{"2":{"211":1,"236":1,"266":2}}],["mechkeys",{"0":{"256":1},"1":{"257":1,"258":1,"259":1,"260":1},"2":{"143":5,"149":2,"266":1}}],["mechloving",{"2":{"134":1}}],["mechlovin9",{"2":{"102":3,"114":1,"211":1}}],["mechlovin",{"2":{"102":3,"134":1,"191":1,"211":9,"222":1,"249":1,"266":2}}],["meant",{"2":{"1364":1,"2517":1,"2605":1}}],["meantime",{"2":{"341":1}}],["mean",{"0":{"562":1},"2":{"263":1,"550":1,"1278":1,"2405":1,"2564":1,"2566":1}}],["means",{"2":{"251":1,"263":1,"324":1,"337":1,"352":1,"396":1,"411":1,"502":1,"554":1,"562":1,"570":1,"613":1,"659":1,"1290":1,"1300":1,"1360":2,"1398":1,"1404":1,"1458":1,"1500":1,"1554":1,"1670":1,"1685":1,"1802":1,"1881":1,"1937":1,"2118":1,"2146":1,"2147":1,"2162":1,"2169":4,"2177":1,"2254":1,"2262":2,"2271":1,"2272":1,"2300":1,"2311":1,"2325":2,"2454":1,"2468":1,"2534":1,"2569":1,"2581":1,"2605":1,"2666":1,"2671":1,"2702":1,"2730":1}}],["meaningful",{"2":{"2569":1}}],["meaning",{"2":{"245":1,"707":1,"726":1,"1225":1,"1302":1,"1325":1,"1336":1,"1438":1,"1533":1,"1787":1,"1881":1,"1933":1,"2272":1,"2311":1,"2411":1,"2575":1}}],["measure",{"2":{"630":1,"1842":1}}],["measured",{"2":{"214":1,"1326":1,"1400":1,"1675":1,"2161":1,"2577":1}}],["measurement",{"2":{"199":1,"2226":1,"2524":1,"2577":1}}],["merchantability",{"2":{"1380":1,"2570":1}}],["mercutio",{"2":{"211":1}}],["merits",{"2":{"1265":1}}],["meridian",{"2":{"211":1}}],["merely",{"2":{"498":1,"2145":1}}],["merges",{"2":{"337":1,"340":1,"344":2,"345":1,"346":1,"350":3}}],["merged",{"2":{"114":1,"134":1,"340":4,"341":2,"343":1,"344":1,"345":1,"349":2,"350":4,"352":1,"399":1,"554":1,"2564":1,"2566":2,"2567":1,"2569":1}}],["merge",{"0":{"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"2476":1},"1":{"349":1,"350":1,"2477":1},"2":{"0":1,"1":1,"75":1,"114":2,"158":1,"176":1,"191":1,"199":2,"201":1,"211":1,"222":2,"275":1,"276":1,"282":3,"337":1,"340":1,"341":3,"345":1,"346":1,"347":2,"349":1,"350":17,"361":2,"478":1,"537":1,"1263":1,"1849":2,"2472":1,"2476":1,"2477":6,"2478":1,"2564":4,"2566":1,"2567":1,"2568":1,"2569":1,"2721":1}}],["merging",{"0":{"361":1},"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"73":1,"191":1,"361":1,"2477":1,"2564":2}}],["metrics",{"2":{"1918":1,"2719":1}}],["met",{"2":{"1562":1}}],["meta",{"2":{"2355":2,"2390":2,"2410":2}}],["metal",{"2":{"2272":1}}],["metaclasses",{"2":{"479":1}}],["metadata",{"0":{"521":1,"2672":1},"2":{"188":1,"191":1,"266":1,"305":2,"317":3,"496":1,"519":2,"521":1,"2298":1,"2498":1,"2671":1}}],["meticulously",{"2":{"201":1}}],["methods=",{"0":{"307":1,"308":1,"309":1,"310":1}}],["methods",{"2":{"140":1,"432":2,"1238":1,"1271":1,"1325":2,"1329":1,"1500":1,"1714":1,"1721":1,"1729":2,"1952":2,"2130":1,"2229":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":2,"2245":2,"2247":2,"2249":2,"2270":1,"2418":1,"2513":1}}],["method",{"0":{"1329":1},"2":{"49":1,"169":1,"184":1,"236":1,"309":1,"310":1,"460":1,"510":1,"1325":1,"1500":2,"1729":1,"1952":1,"2114":1,"2121":1,"2126":2,"2144":1,"2177":1,"2182":1,"2183":2,"2229":1,"2326":1,"2605":1,"2611":1,"2638":1}}],["me",{"0":{"562":1},"2":{"169":2,"184":2,"199":1,"502":1,"550":1,"1274":1,"1332":1,"2171":1,"2417":1,"2422":1,"2428":1}}],["mem",{"2":{"2577":9}}],["memset",{"2":{"1923":2}}],["members",{"0":{"672":1,"737":1,"763":1,"795":1,"825":1,"860":1,"894":1,"928":1,"962":1,"996":1,"1030":1,"1064":1,"1098":1,"1151":1,"1537":1,"1638":1,"1640":1},"2":{"1670":2,"2313":1,"2466":1,"2482":1}}],["member",{"2":{"352":1,"1670":1,"1672":1,"1673":1,"2569":1}}],["memory",{"0":{"1363":1,"2039":1},"2":{"160":1,"236":1,"560":1,"684":2,"685":1,"687":1,"1270":1,"1287":1,"1329":1,"1332":1,"1341":1,"1403":1,"1438":1,"1439":1,"1515":2,"1524":1,"1554":1,"1820":3,"1821":5,"1830":1,"2149":1,"2230":1,"2327":1,"2347":2,"2348":1,"2353":1,"2356":1,"2453":3,"2544":3,"2572":1,"2576":1,"2577":2,"2757":3}}],["memcmp",{"2":{"114":1}}],["melt",{"2":{"2272":1,"2274":1}}],["melting",{"2":{"2272":1}}],["melodies",{"2":{"222":1}}],["melody96",{"2":{"159":2,"160":1,"226":2,"236":1}}],["melgeek",{"2":{"134":1,"253":10}}],["meishi",{"2":{"143":2}}],["meishi2",{"2":{"143":2}}],["meira",{"2":{"143":2}}],["meetup",{"2":{"134":1}}],["mtb60",{"2":{"211":1}}],["mtbkeys",{"2":{"211":1}}],["mt980",{"2":{"159":2}}],["mt84",{"2":{"159":2,"277":1}}],["mt64rgb",{"2":{"159":2,"211":1}}],["mt40",{"2":{"159":2}}],["mt",{"2":{"38":1,"159":6,"160":1,"277":1,"505":2,"1582":1,"2170":1,"2374":1,"2410":1,"2411":1,"2413":2}}],["mkand",{"2":{"2753":1}}],["mkdir",{"2":{"2435":1}}],["mkmakeifeq",{"2":{"2300":1}}],["mkmake",{"2":{"2300":1}}],["mk64fx512",{"2":{"491":1}}],["mk66fx1m0",{"2":{"133":1,"134":1,"491":1}}],["mk66f18",{"2":{"81":1,"93":2,"133":1,"134":1}}],["mk20dx256",{"2":{"491":1}}],["mk20dx128",{"2":{"491":1}}],["mkl26z64",{"2":{"491":1}}],["mk0",{"2":{"199":1}}],["mkiirgb",{"2":{"217":1}}],["mkii",{"2":{"114":1}}],["mk",{"0":{"512":1,"1377":1,"1493":1,"1570":1,"2263":1,"2300":1,"2705":1},"1":{"513":1,"514":1,"515":1,"516":1,"1378":1},"2":{"32":1,"49":1,"50":1,"70":29,"74":1,"76":1,"87":1,"94":1,"103":1,"114":2,"118":2,"119":1,"133":5,"134":8,"141":1,"149":2,"172":1,"191":3,"199":1,"202":1,"211":5,"235":1,"262":1,"266":11,"282":1,"286":1,"374":1,"496":2,"499":1,"508":1,"564":1,"565":1,"566":1,"596":1,"606":3,"607":1,"608":1,"610":2,"613":2,"614":5,"631":1,"643":1,"665":1,"681":1,"688":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1124":1,"1127":2,"1130":2,"1144":1,"1175":1,"1196":1,"1213":1,"1218":1,"1245":1,"1291":1,"1312":1,"1314":1,"1315":1,"1322":1,"1329":1,"1330":2,"1346":1,"1347":2,"1376":2,"1377":7,"1378":1,"1384":2,"1385":2,"1386":1,"1390":1,"1393":1,"1394":1,"1396":1,"1413":2,"1439":1,"1455":1,"1460":1,"1491":1,"1493":2,"1495":1,"1500":1,"1501":1,"1508":1,"1527":1,"1528":1,"1532":1,"1547":1,"1548":1,"1553":1,"1557":1,"1559":1,"1570":1,"1590":1,"1631":1,"1652":1,"1657":1,"1679":1,"1724":1,"1729":2,"1787":1,"1800":1,"1804":1,"1805":22,"1806":2,"1812":1,"1825":1,"1830":1,"1832":1,"1834":1,"1835":1,"1836":1,"1837":1,"1841":1,"1846":1,"1847":1,"1848":1,"1849":2,"1850":1,"1882":1,"1904":1,"1905":1,"1906":1,"1907":1,"1919":1,"1930":1,"1945":1,"1952":2,"2032":2,"2063":1,"2068":1,"2073":1,"2103":1,"2111":1,"2121":1,"2137":1,"2145":1,"2146":1,"2147":1,"2148":1,"2149":1,"2150":1,"2154":1,"2161":1,"2164":1,"2172":1,"2178":1,"2181":2,"2182":1,"2225":1,"2229":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2245":2,"2247":2,"2249":2,"2259":2,"2260":1,"2262":1,"2264":4,"2295":4,"2296":1,"2300":22,"2342":1,"2435":1,"2438":1,"2513":1,"2530":1,"2541":1,"2542":1,"2562":1,"2564":2,"2566":4,"2573":2,"2576":10,"2577":2,"2579":1,"2671":1,"2705":1,"2707":1,"2725":1,"2728":2,"2749":1,"2753":6,"2755":1}}],["mib",{"2":{"2255":2}}],["mimic",{"2":{"2169":1,"2171":1}}],["mi",{"2":{"1787":2,"1793":174,"1794":2,"2263":2,"2371":174}}],["mikrocontroller",{"2":{"1289":1}}],["mike1808",{"2":{"114":1}}],["might",{"2":{"335":1,"341":1,"358":1,"401":1,"502":1,"626":2,"684":2,"1287":2,"1325":2,"1326":6,"1335":1,"1340":1,"1359":1,"1376":1,"1442":1,"1496":1,"1501":1,"1521":1,"1524":1,"1791":1,"1836":1,"1842":1,"2146":1,"2161":1,"2258":1,"2260":1,"2279":1,"2302":1,"2501":1,"2549":1,"2752":1,"2757":1}}],["migrator",{"2":{"65":1}}],["migrations",{"2":{"77":1,"134":1,"199":1,"266":3}}],["migration",{"0":{"38":1,"69":1,"77":1,"265":1,"275":1},"2":{"70":1,"77":1,"113":1,"114":1,"134":2,"149":1,"188":1,"191":1,"199":3,"201":1,"213":1,"238":1,"265":1}}],["migrating",{"0":{"3":1,"7":1,"15":1,"30":1,"36":1},"1":{"31":1},"2":{"167":1,"232":1,"2566":1}}],["migrated",{"2":{"118":1,"126":1,"128":1,"140":1,"209":1,"262":1,"2560":1,"2566":2}}],["migrate",{"0":{"31":1,"34":1,"384":1},"2":{"75":1,"113":1,"114":4,"133":2,"134":6,"149":3,"176":1,"199":7,"211":1,"228":1,"236":9,"249":27,"266":66,"277":11,"384":1,"529":1}}],["mixture",{"2":{"2144":1}}],["mixing",{"2":{"2114":1}}],["mix",{"2":{"1217":1,"1332":1,"1336":1,"2411":1}}],["mixed",{"2":{"282":1,"357":1,"453":1,"560":1,"1412":1}}],["mixup",{"2":{"199":1}}],["mitchsplit",{"0":{"260":1},"2":{"256":1}}],["mitigates",{"2":{"1274":1}}],["mitigated",{"2":{"263":1,"2411":1}}],["mitigate",{"2":{"211":1,"1325":2,"2720":1}}],["mitigation",{"2":{"191":1}}],["miiiw",{"2":{"253":2,"266":1}}],["mice",{"2":{"1910":1,"2284":1,"2313":1}}],["michi",{"0":{"1318":1},"2":{"199":1,"1311":1,"1315":4,"2712":1}}],["micdrop",{"2":{"163":1}}],["microcontrol",{"2":{"2650":1}}],["microcontroller>",{"2":{"371":1}}],["microcontroller",{"0":{"2269":1},"2":{"81":1,"371":2,"486":2,"493":1,"495":1,"516":1,"641":1,"660":1,"695":1,"697":1,"1461":1,"1471":1,"1630":1,"2126":1,"2266":1,"2275":3,"2278":1,"2311":1,"2327":2,"2339":1,"2347":1,"2348":1,"2566":1,"2673":2,"2718":1}}],["microcontrollers",{"0":{"486":1},"1":{"487":1,"488":1,"489":1,"490":1,"491":1,"492":1,"493":1,"494":1,"495":1},"2":{"69":1,"215":2,"263":1,"493":1,"495":2,"1811":1,"2237":1,"2243":1,"2327":2,"2553":2,"2725":1}}],["microchip",{"2":{"684":3,"1212":1,"2031":1,"2343":1}}],["microsoft",{"2":{"1272":1,"2513":1}}],["micros",{"2":{"509":1,"625":1,"2119":1,"2120":1,"2331":1,"2539":1,"2545":1,"2655":1}}],["microseconds",{"2":{"502":1,"1214":1,"2689":1}}],["microdox",{"2":{"176":2}}],["micronucleus",{"2":{"149":1}}],["micro",{"0":{"271":1,"1315":1,"1318":1,"2329":1,"2331":1,"2541":1},"1":{"1316":1,"1317":1,"1318":1,"1319":1,"1320":1,"1321":1,"2330":1,"2332":1},"2":{"77":1,"86":2,"93":1,"163":1,"172":1,"176":1,"189":1,"271":2,"487":1,"629":4,"1240":1,"1293":2,"1313":1,"1315":2,"1320":1,"1323":1,"1324":1,"1804":1,"2114":1,"2116":1,"2126":2,"2132":1,"2233":1,"2234":1,"2266":1,"2268":1,"2269":3,"2329":2,"2330":3,"2331":2,"2332":3,"2344":4,"2347":5,"2348":1,"2427":1,"2514":1,"2527":1,"2529":1,"2530":6,"2539":1,"2541":2,"2542":1,"2712":3}}],["mio",{"2":{"143":2}}],["mirrored",{"2":{"2154":1}}],["mirrors",{"2":{"511":1,"2129":1,"2171":3,"2441":1,"2566":1}}],["mirroring",{"2":{"114":1,"126":1,"2566":1}}],["mirror",{"2":{"76":1,"114":1,"149":1,"511":1,"1730":1,"1954":1,"2129":1,"2697":10}}],["minted",{"2":{"2448":1}}],["minus",{"2":{"1584":1,"2355":2,"2388":1,"2394":1}}],["minute",{"0":{"2225":1},"1":{"2226":1,"2227":1,"2228":1},"2":{"1400":1,"2225":1,"2696":1}}],["minutes",{"2":{"1234":1,"2273":1}}],["mine",{"2":{"1383":1,"2255":1}}],["mind",{"2":{"453":1,"479":1,"551":1,"556":1,"560":1,"616":1,"1302":1,"1331":1,"1364":1,"1497":1,"1558":1,"1820":1,"2112":1,"2142":1,"2161":1,"2268":1,"2273":1,"2275":1,"2279":1,"2305":1,"2306":1,"2308":1,"2311":1,"2578":1,"2719":1}}],["mins",{"2":{"313":1,"530":2,"1499":2,"1506":1,"2355":1,"2388":1,"2407":1}}],["mino",{"2":{"222":1,"241":6}}],["minor",{"2":{"49":1,"51":1,"64":1,"86":1,"114":1,"149":1,"176":1,"191":1,"222":2,"1406":1}}],["min",{"0":{"1780":1,"1783":1,"2025":1,"2028":1},"2":{"211":1,"1217":1,"1406":2,"1440":1,"1573":3,"1632":3,"1640":1,"1729":4,"1733":1,"1781":1,"1784":1,"1836":2,"1952":4,"1957":1,"1958":6,"1959":3,"2026":1,"2029":1}}],["mingw64",{"2":{"2460":1,"2508":1,"2513":3}}],["mingw",{"2":{"158":1,"2351":2,"2460":2,"2461":1}}],["minizone",{"2":{"249":1}}],["miniaxe",{"2":{"241":2,"249":1}}],["minitkl",{"2":{"222":1}}],["minitomic",{"2":{"57":2}}],["mini36",{"2":{"191":1}}],["mini42",{"2":{"191":1}}],["minidox",{"2":{"143":2,"149":1,"217":1,"236":1,"277":1}}],["mini",{"2":{"134":1,"143":4,"149":1,"211":3,"1571":1,"2269":1}}],["minimize",{"2":{"556":1}}],["minimise",{"2":{"103":1,"687":1,"689":1,"2575":1,"2718":1}}],["minim",{"2":{"143":2}}],["minimally",{"2":{"2130":1,"2566":1}}],["minimal",{"2":{"128":1,"160":1,"176":1,"215":1,"2162":1,"2304":1,"2576":1,"2705":1,"2719":1,"2720":1}}],["minimum",{"2":{"70":1,"134":1,"222":1,"659":2,"660":1,"683":1,"1633":1,"1640":1,"1839":5,"1843":2,"2032":1,"2054":6,"2226":1,"2548":1,"2566":2,"2594":1,"2753":1}}],["midpoint",{"2":{"1640":1}}],["midway",{"2":{"574":1}}],["midway60",{"2":{"211":1}}],["mid",{"2":{"505":1,"1640":1,"1648":1}}],["middle",{"2":{"50":1,"222":1,"331":1,"698":1,"1361":1,"1534":1,"1912":2,"2748":1}}],["mididevice",{"2":{"1792":1}}],["midi",{"0":{"1407":1,"1786":1,"1789":1,"1790":1,"1792":1,"1796":1,"2371":1},"1":{"1787":1,"1788":1,"1789":1,"1790":1,"1791":2,"1792":2,"1793":1,"1794":1,"1795":1,"1796":1,"1797":1},"2":{"50":1,"63":1,"70":1,"75":1,"111":1,"114":1,"188":1,"191":2,"199":3,"222":1,"231":3,"249":1,"266":1,"515":2,"516":1,"592":1,"1399":4,"1407":1,"1787":4,"1788":1,"1789":2,"1790":2,"1791":3,"1792":15,"1793":147,"1794":1,"1796":2,"1797":9,"2102":1,"2263":3,"2313":1,"2371":148,"2566":2,"2749":1}}],["millimeters",{"2":{"1838":2,"1842":1}}],["millisecond",{"2":{"597":1,"1326":1,"1683":1}}],["milliseconds",{"2":{"25":1,"119":1,"195":1,"502":2,"505":2,"506":1,"597":1,"598":2,"703":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"727":1,"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1137":1,"1145":1,"1220":1,"1326":1,"1328":1,"1329":7,"1357":1,"1361":1,"1368":2,"1500":1,"1504":1,"1682":1,"1730":2,"1802":1,"1803":1,"1804":2,"1807":1,"1808":1,"1825":1,"1827":1,"1829":1,"1836":1,"1838":1,"1842":1,"1847":1,"1950":1,"1954":2,"2038":1,"2040":6,"2044":1,"2075":1,"2084":1,"2088":1,"2128":3,"2161":1,"2162":1,"2179":1,"2233":1,"2375":1,"2574":2,"2584":1,"2596":1,"2674":2,"2680":1,"2681":1,"2687":1,"2688":2,"2689":1,"2691":1,"2695":2,"2697":3,"2699":1,"2700":1,"2727":1,"2728":1,"2737":1}}],["mild",{"2":{"211":1}}],["milc",{"2":{"65":2,"95":1,"430":3,"431":1}}],["milk",{"2":{"37":2}}],["misfires",{"2":{"1514":1,"1516":1,"1520":1,"1521":1}}],["miso",{"2":{"1176":2,"1177":5,"2328":1,"2330":1,"2332":2,"2334":1,"2336":2,"2338":2,"2340":2,"2518":1,"2541":1}}],["misterknife",{"2":{"211":3}}],["mistaken",{"2":{"2118":1}}],["mistakenly",{"2":{"243":1}}],["mistake",{"2":{"92":1}}],["mishandling",{"2":{"199":1}}],["mis",{"2":{"199":1,"211":1}}],["mismatch",{"2":{"191":1,"349":1}}],["mismatched",{"2":{"149":1}}],["miss",{"2":{"545":1,"2398":1,"2411":1}}],["mission",{"2":{"199":2,"2355":2,"2393":2}}],["missing",{"2":{"28":1,"73":1,"92":1,"93":1,"134":4,"149":4,"160":1,"176":2,"182":1,"191":3,"199":2,"201":1,"211":4,"236":2,"249":1,"2293":1,"2423":1,"2564":1,"2584":1}}],["missed",{"2":{"149":1,"160":1,"236":1}}],["miscellaneous",{"0":{"1285":1},"1":{"1286":1,"1287":1,"1288":1,"1289":1,"1290":1,"1291":1,"1292":1,"1293":1,"1294":1,"1295":1,"1296":1,"1297":1,"1298":1},"2":{"211":1,"222":1,"266":3}}],["misc",{"2":{"149":1,"249":2,"266":3,"277":1,"1932":1}}],["misconfigured",{"2":{"28":1}}],["misplaced",{"2":{"134":1}}],["mocks",{"2":{"2751":1}}],["mock",{"0":{"2751":1},"2":{"2751":1}}],["mocking",{"2":{"485":1,"2753":2}}],["moff",{"2":{"2156":1,"2383":1}}],["mood",{"2":{"2036":1,"2037":2,"2040":1,"2063":1,"2694":1,"2711":1}}],["moonlander",{"2":{"191":1,"199":1,"241":2,"249":1,"277":2}}],["mounting",{"2":{"2275":1}}],["mount",{"2":{"2266":1,"2269":1}}],["mounted",{"2":{"2031":1,"2528":1}}],["mousing",{"2":{"1862":1}}],["mousereport",{"2":{"1855":6}}],["mouse=true",{"2":{"1245":1}}],["mousekey",{"2":{"63":1,"70":1,"75":1,"111":1,"114":1,"188":1,"191":2,"209":1,"222":1,"236":1,"507":5,"515":1,"516":2,"1287":1,"1803":16,"1804":12,"1807":13,"1808":7,"2063":1,"2263":1,"2705":1}}],["mousekeysaccel",{"2":{"1803":1}}],["mousekeys",{"0":{"2652":1},"2":{"48":1,"160":1,"176":1,"191":1,"505":1,"1832":1,"2652":1}}],["mouse",{"0":{"246":1,"507":1,"1289":1,"1798":1,"1799":1,"1800":1,"1801":1,"1802":1,"1808":1,"1809":1,"1855":1,"1857":1,"1858":1,"1864":1,"1869":1,"1870":1,"1871":1,"1873":1,"1876":1,"1878":1,"1880":1,"1902":1,"1910":1,"1913":1,"1914":1,"1915":1,"2372":1,"2690":1},"1":{"1799":1,"1800":2,"1801":2,"1802":1,"1803":2,"1804":2,"1805":2,"1806":2,"1807":2,"1808":2,"1809":1,"1856":1,"1857":1,"1858":1,"1859":1,"1860":1,"1861":1,"1862":1,"1865":1,"1866":1,"1867":1,"1868":1,"1869":1,"1870":2,"1871":3,"1872":1,"1873":1,"1874":1,"1875":1,"1876":1,"1877":1,"1878":1,"1879":1,"1880":1,"1903":1,"1904":1,"1905":1,"1906":1,"1907":1,"1908":1,"1909":1,"1910":1,"1911":1,"1912":1,"1913":1,"1914":1,"1915":1,"1916":1,"1917":1},"2":{"48":1,"74":3,"100":1,"112":7,"114":5,"133":1,"134":1,"149":1,"160":3,"175":5,"176":4,"190":6,"191":7,"211":2,"222":3,"231":1,"236":2,"246":3,"249":1,"266":2,"277":3,"502":1,"505":1,"515":1,"516":4,"540":1,"1431":1,"1491":1,"1530":2,"1531":2,"1798":2,"1799":3,"1800":1,"1801":39,"1802":1,"1804":5,"1805":2,"1807":1,"1808":4,"1809":3,"1839":6,"1849":8,"1850":4,"1851":3,"1853":14,"1854":9,"1855":13,"1857":4,"1858":12,"1859":17,"1860":1,"1861":10,"1862":3,"1864":7,"1865":7,"1866":15,"1867":1,"1868":9,"1869":5,"1870":4,"1871":3,"1872":1,"1873":33,"1874":11,"1876":10,"1877":16,"1878":10,"1879":8,"1880":10,"1902":1,"1904":1,"1905":1,"1906":1,"1907":1,"1908":1,"1910":18,"1911":5,"1912":12,"1913":1,"1914":4,"1915":3,"1916":5,"1917":4,"1921":1,"1932":4,"2146":1,"2150":1,"2372":39,"2424":1,"2652":1,"2690":3,"2692":2,"2699":2,"2744":1}}],["motivations",{"2":{"2719":1}}],["motion",{"2":{"190":1,"191":1,"1807":1,"1836":1,"1849":3,"1851":7,"1864":1}}],["motions",{"2":{"175":1}}],["motors",{"2":{"1575":1,"1576":1}}],["motor",{"0":{"1575":1},"1":{"1576":1,"1577":1},"2":{"1571":1,"1575":1,"1576":2,"1577":2}}],["momokai",{"2":{"266":1}}],["moment",{"2":{"211":2,"1675":5,"2490":1,"2492":1,"2615":1,"2748":1}}],["momentarily",{"2":{"73":1,"1335":4,"1806":1,"2173":2,"2367":3,"2490":1,"2728":1}}],["momentary",{"0":{"3":1,"2171":1},"2":{"199":1,"1275":1,"1335":1,"1518":5,"1582":2,"1655":1,"1668":3,"1805":8,"2156":4,"2172":1,"2383":4,"2490":1}}],["mojo75",{"2":{"253":2}}],["mojo68",{"2":{"253":2}}],["morgan65",{"2":{"211":2}}],["moreover",{"2":{"2114":1}}],["more",{"0":{"1656":1,"2262":1},"1":{"2263":1,"2264":1},"2":{"2":1,"6":2,"8":1,"10":2,"14":1,"16":1,"24":1,"46":1,"49":1,"76":1,"82":1,"93":1,"99":2,"107":1,"109":1,"111":1,"112":1,"114":6,"118":1,"133":2,"134":4,"149":6,"152":1,"153":2,"160":1,"166":1,"172":1,"174":1,"176":4,"179":1,"182":1,"190":3,"191":4,"194":2,"195":1,"196":1,"198":1,"199":6,"206":1,"211":6,"213":1,"222":2,"224":1,"228":2,"229":1,"231":1,"232":1,"236":3,"245":1,"247":1,"248":1,"249":1,"251":1,"265":1,"266":1,"318":1,"334":1,"341":1,"355":2,"363":1,"367":1,"371":1,"408":1,"409":1,"410":1,"418":1,"446":1,"453":1,"455":1,"462":1,"470":2,"479":1,"481":1,"482":1,"496":1,"502":2,"506":1,"511":2,"513":1,"515":2,"516":1,"540":1,"554":1,"556":1,"566":1,"567":3,"612":1,"615":1,"624":2,"626":2,"628":1,"630":2,"638":1,"639":1,"660":1,"687":1,"690":1,"701":2,"789":1,"820":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1121":1,"1128":1,"1176":1,"1217":1,"1235":1,"1241":1,"1267":1,"1269":1,"1290":1,"1298":1,"1300":2,"1301":1,"1321":1,"1326":1,"1335":1,"1338":1,"1339":1,"1340":3,"1357":2,"1359":1,"1376":1,"1380":1,"1382":1,"1389":1,"1390":1,"1404":1,"1405":2,"1411":1,"1414":1,"1416":2,"1423":1,"1430":1,"1451":1,"1471":1,"1491":1,"1498":1,"1508":1,"1511":1,"1515":1,"1516":1,"1520":1,"1524":1,"1549":1,"1554":1,"1562":1,"1589":1,"1655":1,"1662":2,"1666":1,"1670":1,"1683":1,"1685":1,"1714":1,"1725":2,"1729":1,"1787":1,"1791":1,"1802":1,"1803":1,"1808":1,"1821":1,"1833":1,"1859":1,"1864":1,"1872":1,"1880":1,"1902":1,"1918":1,"1929":1,"1934":1,"1946":2,"1952":1,"1954":1,"1958":1,"1959":1,"2032":1,"2044":1,"2060":1,"2145":1,"2148":1,"2151":1,"2152":1,"2161":2,"2162":1,"2169":2,"2178":1,"2183":1,"2226":2,"2229":1,"2258":1,"2259":2,"2262":4,"2263":4,"2268":2,"2269":2,"2270":2,"2272":1,"2273":1,"2274":1,"2282":1,"2287":1,"2288":1,"2289":1,"2290":1,"2291":1,"2297":1,"2298":1,"2299":1,"2300":1,"2311":2,"2314":1,"2319":1,"2335":1,"2344":1,"2347":1,"2348":1,"2354":1,"2374":1,"2385":1,"2406":2,"2408":3,"2409":1,"2410":2,"2440":1,"2450":1,"2454":1,"2455":1,"2460":1,"2478":1,"2480":1,"2482":1,"2490":1,"2495":1,"2510":1,"2513":1,"2543":1,"2551":1,"2552":1,"2553":3,"2561":1,"2565":2,"2567":1,"2568":1,"2569":1,"2570":1,"2574":3,"2577":2,"2578":1,"2612":1,"2614":1,"2615":2,"2661":1,"2664":1,"2671":3,"2701":1,"2711":1,"2724":1,"2727":2,"2728":1,"2735":1,"2736":2,"2737":1,"2738":1,"2739":1,"2754":1,"2757":1}}],["mobile",{"2":{"149":1,"160":1}}],["monsgeek",{"2":{"2244":1}}],["monstargear",{"2":{"211":1}}],["mon",{"2":{"2156":1,"2383":1}}],["monitor",{"2":{"1807":1}}],["monitors",{"2":{"1533":1}}],["month",{"2":{"337":1,"2569":1}}],["months",{"2":{"251":1,"481":1,"2720":1}}],["montex",{"2":{"143":2,"149":1}}],["mono1bpp",{"2":{"2576":1}}],["mono16",{"2":{"2575":4}}],["mono2",{"2":{"2575":3,"2576":1}}],["mono256",{"2":{"2575":3}}],["mono4",{"2":{"2575":4}}],["monochrome",{"2":{"2573":4,"2576":1,"2577":3}}],["mono",{"2":{"249":2,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1}}],["monokei",{"2":{"241":3,"249":1}}],["monksoffunk",{"2":{"149":1}}],["mona",{"2":{"102":3,"197":6}}],["movable",{"2":{"1630":1}}],["movements",{"2":{"1353":1,"1802":1,"1803":4,"1804":15,"1805":4,"1806":1,"1807":3,"1808":1,"2263":1}}],["movement",{"0":{"1917":1},"2":{"48":1,"74":1,"175":2,"246":1,"249":1,"1802":5,"1803":4,"1804":5,"1805":5,"1807":2,"1808":1,"1836":5,"1855":3,"1858":2,"1859":1,"1868":1,"1879":1,"1904":1,"1910":1,"1917":1}}],["moved",{"2":{"43":1,"50":1,"56":1,"57":1,"67":1,"72":1,"86":1,"102":1,"114":1,"122":1,"143":1,"149":1,"159":1,"168":1,"181":1,"197":1,"198":1,"201":2,"204":1,"222":1,"279":1,"602":1,"1304":1,"1917":1,"2282":1,"2488":1,"2489":1,"2566":1,"2704":1}}],["moves",{"0":{"37":1},"2":{"337":1,"1802":2,"1822":2,"2033":1,"2143":2,"2161":1,"2407":1,"2566":1}}],["move",{"2":{"21":1,"36":1,"37":1,"50":1,"72":1,"75":1,"94":1,"100":2,"113":6,"114":14,"133":7,"134":9,"149":58,"156":1,"160":11,"167":1,"176":6,"188":1,"191":7,"199":11,"211":38,"222":16,"236":6,"241":1,"249":12,"253":1,"255":2,"266":2,"270":1,"277":3,"388":1,"1341":1,"1344":1,"1405":1,"1567":1,"1599":1,"1603":1,"1604":2,"1605":1,"1627":1,"1629":1,"1751":1,"1752":1,"1753":1,"1754":1,"1793":2,"1798":1,"1802":1,"1803":1,"1804":3,"1807":4,"1808":2,"1978":1,"1979":1,"1980":1,"1981":1,"2079":1,"2161":1,"2273":1,"2276":1,"2307":1,"2371":2,"2426":1,"2450":1,"2470":1,"2566":2,"2615":1}}],["movings",{"2":{"304":1}}],["moving",{"0":{"16":1},"2":{"36":1,"37":1,"43":1,"111":1,"113":1,"191":1,"275":1,"453":1,"1336":1,"1684":1,"1806":1,"1821":1,"1822":2,"1832":1,"1844":1,"1851":1,"1858":1,"1912":1,"1949":3,"2143":2,"2270":1,"2273":1,"2411":1,"2568":1,"2711":1}}],["mosy",{"2":{"2268":1}}],["mosi",{"2":{"1176":2,"1177":5,"1223":1,"1226":2,"2328":1,"2330":1,"2332":2,"2334":1,"2336":2,"2338":2,"2340":2,"2518":1,"2541":1,"2576":2}}],["most",{"0":{"2704":1},"1":{"2705":1,"2706":1,"2707":1,"2708":1,"2709":1,"2710":1,"2711":1},"2":{"70":1,"118":1,"124":1,"131":1,"158":1,"182":2,"194":1,"214":1,"215":2,"221":1,"233":1,"234":1,"249":2,"251":1,"263":2,"308":1,"336":1,"432":1,"433":1,"434":1,"440":1,"453":1,"454":1,"455":1,"488":1,"498":1,"499":1,"502":2,"529":1,"555":1,"560":1,"569":1,"574":3,"575":1,"592":1,"610":1,"613":1,"623":2,"643":1,"689":1,"700":1,"1175":1,"1196":1,"1213":1,"1216":1,"1241":1,"1242":1,"1265":1,"1272":1,"1276":1,"1278":1,"1334":2,"1337":1,"1338":1,"1340":1,"1346":1,"1359":1,"1360":1,"1375":1,"1390":1,"1397":1,"1441":2,"1445":1,"1455":1,"1458":1,"1459":1,"1564":1,"1573":1,"1577":1,"1632":1,"1684":1,"1685":1,"1802":1,"1807":1,"1835":1,"1842":2,"1876":1,"1911":1,"2047":1,"2114":1,"2118":1,"2134":1,"2144":1,"2148":1,"2149":2,"2181":2,"2182":1,"2255":1,"2262":2,"2263":1,"2272":1,"2284":1,"2305":1,"2315":1,"2327":1,"2328":1,"2350":1,"2400":1,"2401":1,"2418":1,"2421":2,"2468":4,"2548":2,"2553":1,"2566":1,"2576":1,"2610":1,"2626":1,"2629":1,"2637":1,"2646":1,"2668":1,"2702":1,"2705":2,"2707":1,"2712":1,"2718":1,"2729":1,"2743":2,"2750":1}}],["mostly",{"2":{"8":1,"199":1,"377":1,"1265":1,"2114":1,"2344":1,"2508":1}}],["mosfet",{"2":{"14":2,"1458":2,"1471":2,"1573":1}}],["modu",{"2":{"1793":1,"2371":1}}],["modulation",{"2":{"1454":1,"1787":1,"1793":6,"1794":1,"2371":6}}],["modular",{"2":{"16":1}}],["modules",{"2":{"93":1,"479":2,"684":1,"685":1,"1491":1,"1589":2,"1811":2,"2136":1,"2284":1}}],["module",{"2":{"6":1,"428":1,"457":5,"460":1,"461":1,"470":2,"485":1,"684":1,"685":1,"1281":1,"1589":1,"1847":2,"1902":3,"1903":1,"2136":1,"2575":1,"2576":1}}],["modd",{"2":{"1793":1,"2371":1}}],["modded",{"2":{"176":1,"1370":1,"2228":2}}],["modtaps",{"2":{"1300":1}}],["modifer",{"2":{"2112":2,"2129":1}}],["modifying",{"2":{"453":1,"481":2,"626":1,"1338":1,"1450":1,"2309":1,"2315":1,"2321":1}}],["modify",{"2":{"125":1,"185":1,"211":1,"221":1,"236":1,"481":1,"529":1,"703":2,"1177":2,"1198":1,"1300":1,"1335":1,"1360":1,"1380":1,"1400":1,"1534":1,"1720":1,"1853":2,"1854":2,"1858":1,"1859":1,"2032":1,"2040":1,"2042":1,"2152":1,"2321":1,"2441":1,"2566":1,"2570":1,"2651":1,"2726":1}}],["modifiable",{"2":{"1832":1}}],["modification",{"0":{"2061":1},"2":{"65":1,"479":1,"1278":1,"1949":1,"2031":1,"2757":2}}],["modifications",{"2":{"21":1,"282":3,"341":1,"455":1,"1271":1,"2257":1,"2513":2,"2550":1,"2564":1,"2567":1}}],["modifiers",{"0":{"1284":1,"1414":1,"1659":1,"1660":1,"1661":1,"1662":1,"1668":1,"1677":1,"2373":1,"2390":1},"1":{"1673":1,"1674":1,"1675":1},"2":{"99":1,"112":1,"160":1,"222":1,"503":1,"505":1,"623":1,"1284":3,"1300":15,"1303":2,"1335":2,"1336":5,"1364":1,"1366":1,"1386":1,"1414":3,"1430":1,"1431":1,"1508":1,"1523":3,"1654":1,"1655":4,"1659":3,"1661":1,"1665":1,"1670":7,"1671":4,"1673":5,"1674":1,"1676":1,"1728":1,"1937":1,"1959":1,"2112":1,"2398":1,"2410":1,"2411":2,"2413":1,"2490":2,"2697":1,"2709":1}}],["modifier",{"0":{"1274":1,"1275":1,"1299":1,"1300":1,"1516":1,"1678":1,"2651":1,"2654":1},"1":{"1301":1,"1302":1,"1303":1,"1679":1,"1680":1,"1681":1,"1682":1,"1683":1,"1684":1,"1685":1,"1686":1,"1687":1,"1688":1,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1695":1,"1696":1,"1697":1,"1698":1,"1699":1,"1700":1,"1701":1,"1702":1,"1703":1,"1704":1,"1705":1,"1706":1,"1707":1,"1708":1,"1709":1,"1710":1,"1711":1,"1712":1,"1713":1},"2":{"74":1,"99":1,"194":2,"211":1,"231":4,"511":1,"1275":3,"1284":5,"1299":3,"1300":15,"1302":1,"1303":4,"1335":1,"1336":1,"1360":2,"1361":2,"1364":1,"1430":1,"1431":1,"1442":1,"1445":2,"1516":1,"1555":1,"1582":2,"1634":1,"1654":1,"1655":3,"1659":1,"1666":1,"1668":1,"1670":7,"1671":2,"1673":3,"1674":2,"1675":2,"1676":2,"1677":4,"1726":2,"1864":1,"1936":2,"1939":1,"1947":2,"1959":1,"2112":6,"2113":7,"2129":1,"2373":1,"2410":2,"2411":1,"2491":2,"2654":1,"2697":1,"2728":1,"2738":3}}],["modified",{"2":{"2":1,"8":1,"74":1,"149":1,"221":2,"453":1,"474":1,"1143":1,"1257":1,"1341":1,"1675":1,"1806":1,"1938":1,"2170":1,"2240":1,"2343":1,"2468":1,"2564":1,"2566":1,"2568":1,"2728":1,"2735":1,"2757":1}}],["modifies",{"2":{"0":1,"9":1,"19":1,"30":1,"33":1,"39":1,"52":1,"337":1,"1949":2,"2757":1}}],["moderate",{"2":{"2279":1}}],["modern",{"2":{"1129":1,"1272":1,"1276":1,"1499":1,"2181":1,"2263":1,"2270":1,"2277":1,"2281":1}}],["modernize",{"2":{"222":1,"236":2}}],["modernise",{"2":{"222":2}}],["modemmanager",{"2":{"1239":4}}],["mode=guest",{"2":{"624":1}}],["modelled",{"2":{"2130":1}}],["models",{"2":{"1329":1}}],["modelh",{"2":{"217":2}}],["modelm101",{"2":{"207":2}}],["modelm",{"0":{"204":1},"2":{"149":1,"207":3}}],["model",{"2":{"125":1,"143":2,"149":1,"185":1,"204":2,"207":12,"217":1,"222":2,"1838":1,"2566":1,"2756":1}}],["model01",{"2":{"37":2}}],["modes",{"0":{"124":1,"2183":1,"2729":1},"1":{"2730":1,"2731":1,"2732":1,"2733":1,"2734":1,"2735":1,"2736":1},"2":{"114":1,"124":2,"134":1,"186":2,"235":1,"1134":1,"1403":2,"1408":1,"1728":1,"1802":2,"1842":1,"1902":1,"1948":3,"1949":2,"2034":2,"2036":1,"2037":2,"2040":2,"2131":1,"2179":2,"2183":6,"2184":2,"2357":1,"2376":2,"2377":2,"2384":2,"2600":1,"2729":2,"2730":1}}],["mode",{"0":{"186":1,"429":1,"1180":1,"1240":1,"1403":1,"1580":1,"1747":2,"1749":2,"1755":1,"1803":1,"1804":1,"1805":1,"1806":1,"1807":1,"1843":1,"1844":1,"1845":1,"1974":2,"1976":2,"1982":1,"2052":1,"2053":1,"2186":1,"2188":2,"2190":1,"2191":1,"2192":2,"2194":2,"2450":1,"2734":1},"1":{"1181":1,"1182":1,"1404":1,"1405":1,"1748":2,"1750":2,"1756":1,"1975":2,"1977":2,"1983":1,"2187":1,"2189":2,"2193":2,"2195":2},"2":{"49":3,"93":1,"118":2,"134":1,"160":2,"175":1,"176":8,"183":4,"190":1,"191":2,"211":3,"230":1,"231":1,"240":2,"266":1,"429":1,"582":3,"626":4,"627":1,"629":1,"638":1,"661":1,"666":2,"696":2,"703":4,"707":2,"1126":1,"1127":1,"1129":2,"1130":2,"1140":1,"1141":1,"1142":1,"1177":10,"1181":3,"1194":1,"1198":8,"1225":2,"1226":2,"1230":1,"1239":1,"1245":2,"1250":2,"1270":2,"1283":1,"1286":1,"1287":2,"1288":2,"1332":10,"1396":1,"1397":1,"1398":7,"1399":8,"1401":1,"1403":13,"1404":1,"1405":2,"1406":3,"1408":7,"1463":1,"1469":1,"1572":3,"1573":2,"1579":3,"1580":1,"1589":1,"1727":2,"1729":2,"1730":2,"1748":1,"1750":1,"1773":1,"1803":2,"1804":3,"1805":3,"1806":5,"1807":6,"1808":2,"1816":1,"1819":2,"1821":1,"1835":2,"1842":10,"1844":2,"1845":2,"1860":1,"1861":7,"1910":5,"1948":15,"1951":3,"1952":2,"1954":2,"1960":1,"1975":1,"1977":1,"2018":1,"2034":22,"2035":3,"2036":15,"2037":10,"2038":1,"2052":9,"2057":2,"2126":1,"2129":1,"2145":1,"2146":1,"2149":4,"2152":8,"2179":4,"2180":6,"2183":22,"2184":8,"2186":1,"2187":1,"2188":1,"2189":2,"2190":1,"2191":1,"2192":1,"2193":2,"2194":1,"2195":2,"2196":1,"2197":1,"2198":1,"2199":1,"2230":1,"2235":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2255":1,"2263":1,"2344":1,"2356":3,"2357":7,"2369":2,"2376":22,"2377":2,"2384":8,"2450":3,"2455":1,"2517":1,"2524":2,"2530":1,"2566":1,"2572":3,"2576":10,"2672":1,"2707":2,"2729":9,"2730":1,"2735":4,"2736":6}}],["mods",{"0":{"1372":1,"1373":1,"1661":1,"1662":1,"1936":1,"1938":1,"2132":1},"1":{"1937":1,"1938":1,"1939":1,"2133":1},"2":{"38":5,"63":2,"149":1,"191":1,"199":2,"222":3,"266":1,"317":1,"502":1,"505":1,"511":2,"1284":4,"1300":40,"1302":1,"1303":3,"1364":1,"1371":1,"1372":1,"1373":1,"1385":5,"1403":1,"1430":2,"1445":1,"1446":5,"1501":1,"1506":2,"1516":2,"1523":5,"1530":1,"1661":1,"1668":2,"1670":5,"1671":2,"1673":2,"1674":2,"1677":5,"1728":3,"1929":3,"1932":1,"1933":6,"1934":1,"1935":1,"1936":1,"1937":1,"1938":7,"1939":4,"1941":1,"1942":5,"1943":5,"1949":3,"2112":1,"2129":1,"2170":2,"2228":6,"2367":2,"2405":2,"2411":2,"2490":3,"2491":30,"2566":1,"2688":1,"2695":1,"2711":1,"2738":4}}],["mod",{"0":{"194":1,"206":1,"1306":1,"1582":1,"2170":1,"2374":1,"2410":1,"2412":1},"1":{"2411":1,"2412":1,"2413":2,"2414":2,"2415":2,"2416":1},"2":{"22":2,"38":11,"98":1,"112":2,"134":1,"176":1,"191":1,"194":17,"199":3,"203":2,"206":2,"211":4,"317":1,"502":1,"505":5,"530":2,"1300":29,"1302":1,"1303":7,"1306":1,"1335":5,"1336":8,"1361":1,"1364":1,"1370":1,"1385":6,"1430":1,"1431":1,"1432":1,"1445":1,"1446":10,"1500":3,"1501":1,"1503":1,"1506":2,"1509":1,"1518":5,"1523":2,"1530":1,"1582":4,"1634":2,"1654":1,"1663":1,"1665":9,"1666":2,"1668":7,"1670":4,"1671":3,"1677":18,"1685":1,"1793":1,"1864":6,"1865":1,"1932":11,"1933":2,"1938":2,"1939":1,"1948":1,"2112":13,"2113":2,"2133":1,"2170":2,"2228":5,"2367":4,"2371":1,"2374":3,"2377":1,"2379":2,"2398":1,"2405":1,"2410":16,"2411":1,"2413":1,"2416":1,"2490":7,"2491":9,"2566":1,"2654":2,"2687":1,"2706":1,"2709":3,"2728":2,"2730":1,"2734":1,"2738":19}}],["mo",{"0":{"3":1},"2":{"313":5,"530":2,"532":2,"573":1,"1265":1,"1335":4,"1511":1,"1518":1,"1555":1,"1582":1,"1865":1,"2171":3,"2172":1,"2367":3,"2407":2,"2408":2,"2490":1,"2566":2}}],["mail",{"2":{"2355":2,"2393":2}}],["mainstream",{"2":{"1675":1}}],["mainly",{"2":{"198":1,"201":1,"213":1,"224":1,"238":2,"278":1,"1220":1,"1300":1}}],["maintenance",{"2":{"198":1,"213":1,"236":1,"238":1,"251":1,"268":1,"606":2,"2546":1,"2566":1}}],["maintenence",{"2":{"24":1}}],["maintains",{"2":{"559":1,"609":1,"1265":1,"1438":1,"2231":1,"2238":1,"2313":1,"2431":1,"2458":1,"2461":1}}],["maintained",{"2":{"262":1,"559":2,"610":1,"1265":2,"2466":1,"2556":1,"2672":1}}],["maintainers",{"0":{"320":1},"2":{"124":1,"173":1,"204":1,"265":1,"282":3,"318":1,"341":3,"529":1,"550":1,"1729":1,"1952":1,"2466":1,"2552":1,"2719":1}}],["maintainer",{"2":{"70":1,"111":1,"554":3,"559":1,"609":1,"624":1,"2553":2,"2556":1,"2566":1,"2615":1,"2671":1,"2672":2}}],["maintainability",{"2":{"262":1,"457":1,"468":1}}],["maintain",{"2":{"70":1,"114":1,"228":1,"367":1,"429":1,"462":1,"561":1,"606":1,"1385":1,"1398":1,"1718":1,"2263":2,"2441":2,"2546":1,"2719":1}}],["maintaining",{"2":{"70":1,"1949":1,"2292":1,"2725":1}}],["main",{"0":{"2744":1},"1":{"2745":1,"2746":1,"2747":1,"2748":1,"2749":1},"2":{"22":1,"49":1,"50":1,"65":1,"112":1,"113":1,"114":1,"191":1,"199":1,"228":2,"236":1,"306":1,"307":1,"323":1,"336":1,"428":1,"432":1,"496":1,"560":1,"574":1,"1293":2,"1303":1,"1406":1,"1464":1,"1822":1,"1923":1,"2129":2,"2143":1,"2162":1,"2251":1,"2307":2,"2322":1,"2404":1,"2406":1,"2418":1,"2438":2,"2441":1,"2445":2,"2450":1,"2566":1,"2697":1,"2719":1,"2743":6,"2744":2}}],["male",{"2":{"2275":1}}],["ma",{"2":{"502":1,"2699":1}}],["magnet",{"2":{"1577":1,"2270":1}}],["magenta",{"2":{"435":1,"1332":1,"1953":2,"2058":2}}],["magic+n",{"2":{"2263":1}}],["magic+d",{"2":{"1255":1,"2263":1}}],["magic",{"0":{"2305":1,"2370":1,"2396":1,"2709":1},"2":{"114":1,"149":1,"199":4,"226":2,"231":3,"236":2,"477":1,"502":1,"505":2,"515":2,"626":1,"1255":1,"1271":1,"1288":1,"1399":4,"1498":4,"1527":2,"1528":2,"1530":31,"2263":4,"2305":1,"2370":36,"2396":37,"2513":5,"2566":1,"2587":1,"2594":1,"2705":3,"2709":4,"2749":1}}],["making",{"0":{"1350":1,"2480":1},"1":{"1351":1,"1352":1},"2":{"130":1,"194":2,"282":3,"341":1,"401":1,"556":1,"559":1,"1287":1,"1326":1,"1330":1,"1385":1,"1430":1,"2118":1,"2231":2,"2238":2,"2274":1,"2405":1,"2417":1,"2491":2,"2577":2,"2712":1,"2744":1,"2746":2}}],["makemusic",{"2":{"2707":1}}],["makemidi",{"2":{"1787":1}}],["makelto",{"2":{"2705":1}}],["makeled",{"2":{"1724":1}}],["makeleader",{"2":{"1679":1}}],["makequantum",{"2":{"2573":1,"2576":10,"2579":1}}],["makeucis",{"2":{"2182":1}}],["makeunicodemap",{"2":{"2181":1}}],["makeunicode",{"2":{"2178":1,"2181":1}}],["makeuart",{"2":{"1196":1}}],["maketri",{"2":{"2172":1}}],["makeps2",{"2":{"1904":1,"1905":1,"1907":1}}],["makeprogrammable",{"2":{"1882":1}}],["makepointing",{"2":{"1832":1,"1834":1,"1835":1,"1836":1,"1837":1,"1841":2,"1846":1,"1847":1,"1848":1,"1849":2,"1850":1}}],["makeos",{"2":{"1825":1}}],["makeoled",{"2":{"1812":1,"1813":2}}],["makejoystick",{"2":{"1631":2}}],["makehd44780",{"2":{"1590":1}}],["makehaptic",{"2":{"1570":1}}],["makeencoder",{"2":{"1557":1,"1559":1}}],["makedip",{"2":{"1548":1}}],["makedigitizer",{"2":{"1532":1}}],["makeboard",{"2":{"2542":1}}],["makebootmagic",{"2":{"1495":1}}],["makebluetooth",{"2":{"1493":1}}],["makebacklight",{"2":{"1455":1,"1461":1,"1462":1,"1463":1,"1464":1}}],["makeifdef",{"2":{"1377":1}}],["makeifeq",{"2":{"1377":1,"1384":1,"1385":1}}],["makei2c",{"2":{"700":1}}],["makews2812",{"2":{"1213":1,"1219":1,"1220":1,"1221":1,"1222":1,"1223":1}}],["makeconsole",{"2":{"1830":1,"2705":1}}],["makecommand",{"2":{"1501":1,"1528":1,"2111":1}}],["makecommon",{"2":{"665":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1}}],["makecaps",{"2":{"1500":1}}],["makecustom",{"2":{"565":1,"566":1}}],["makeavr",{"2":{"2705":1}}],["makeautocorrect",{"2":{"1439":1}}],["makeaudio",{"2":{"655":1}}],["makeapa102",{"2":{"643":1}}],["makeanalog",{"2":{"631":1}}],["makergblight",{"2":{"2032":2}}],["makergb",{"2":{"1945":1}}],["makeraw",{"2":{"1919":1}}],["makers",{"2":{"496":1}}],["makerepeat",{"2":{"202":1,"1930":1}}],["maker",{"0":{"1234":1},"1":{"1235":1},"2":{"114":1,"1234":2,"1235":1,"1236":2,"2295":1,"2297":1}}],["makefilepin",{"2":{"1314":1}}],["makefileifeq",{"2":{"292":1}}],["makefiles",{"2":{"222":2,"559":1}}],["makefile",{"0":{"2264":1},"2":{"49":1,"133":2,"134":2,"149":3,"198":1,"199":2,"291":1,"331":1,"512":1,"1254":1,"1287":1,"1288":1,"1298":1,"2262":1,"2501":1,"2513":1}}],["makesteno",{"2":{"2146":1,"2147":1,"2148":1,"2149":1}}],["makest7565",{"2":{"2137":1}}],["makespace",{"2":{"2705":1}}],["makesplit",{"2":{"2121":2}}],["makespi",{"2":{"1175":1}}],["makesequencer",{"2":{"2103":1}}],["makesend",{"2":{"2073":1}}],["makesecure",{"2":{"2068":1}}],["makeserial",{"2":{"1124":1,"1127":2,"1130":2}}],["makesrc",{"2":{"564":1,"2577":2}}],["makes",{"2":{"17":1,"123":1,"363":1,"453":1,"481":1,"496":1,"505":1,"513":1,"1265":1,"1299":1,"1302":1,"1432":1,"1499":1,"1516":1,"1803":2,"1804":1,"1807":1,"1824":1,"1836":1,"1873":1,"1876":1,"1932":1,"1936":1,"1954":1,"2128":1,"2225":1,"2250":1,"2300":1,"2311":1,"2408":1,"2418":1,"2508":1,"2510":1,"2565":1,"2577":1,"2664":1,"2735":2,"2736":1}}],["make",{"0":{"409":1,"554":1,"1269":1,"1659":1,"1660":1,"1661":1,"1662":1,"2232":1,"2234":1,"2239":1,"2241":1,"2246":1,"2248":1,"2262":1,"2315":1,"2601":1,"2647":1},"1":{"2263":1,"2264":1,"2602":1,"2603":1,"2604":1,"2605":1,"2606":1,"2607":1,"2608":1,"2609":1,"2610":1,"2611":1,"2612":1},"2":{"2":1,"10":1,"18":4,"21":1,"24":1,"31":1,"36":2,"49":2,"55":1,"65":2,"70":1,"76":1,"94":2,"107":1,"114":7,"119":1,"131":1,"133":2,"134":4,"149":2,"160":1,"175":1,"176":8,"189":1,"191":2,"199":3,"211":5,"236":2,"249":2,"265":1,"305":1,"322":1,"331":1,"334":1,"355":1,"360":2,"370":4,"396":2,"401":1,"407":1,"411":3,"432":1,"435":3,"455":2,"466":1,"469":1,"470":1,"474":1,"478":1,"479":1,"504":1,"508":1,"512":1,"529":4,"530":1,"537":2,"548":1,"550":1,"554":2,"556":9,"560":3,"561":1,"581":1,"588":1,"606":1,"609":1,"616":1,"621":1,"624":5,"626":1,"627":1,"657":1,"658":1,"661":1,"1237":1,"1238":2,"1240":2,"1242":1,"1243":1,"1260":1,"1262":1,"1281":1,"1286":1,"1287":2,"1303":1,"1325":1,"1332":2,"1335":1,"1336":1,"1348":1,"1349":2,"1375":1,"1376":2,"1381":2,"1385":5,"1386":2,"1406":2,"1430":2,"1441":1,"1515":1,"1521":1,"1530":11,"1554":1,"1655":1,"1659":1,"1663":1,"1665":6,"1666":2,"1670":1,"1671":1,"1684":1,"1733":1,"1803":3,"1807":2,"1860":1,"1864":1,"1902":1,"1939":1,"1957":1,"2041":1,"2059":1,"2061":1,"2111":1,"2118":1,"2131":1,"2145":2,"2169":1,"2178":1,"2182":1,"2230":3,"2231":2,"2233":2,"2235":2,"2236":2,"2237":2,"2238":4,"2240":2,"2242":2,"2245":2,"2247":2,"2249":2,"2252":1,"2255":1,"2256":1,"2259":1,"2262":23,"2263":1,"2264":1,"2273":2,"2274":1,"2275":1,"2276":1,"2279":2,"2292":1,"2294":1,"2295":5,"2300":1,"2302":1,"2306":2,"2348":1,"2353":1,"2356":1,"2405":1,"2410":1,"2421":1,"2423":1,"2424":2,"2429":1,"2436":1,"2455":1,"2457":1,"2458":1,"2472":1,"2473":1,"2475":1,"2477":2,"2480":6,"2502":2,"2504":1,"2510":1,"2530":1,"2568":1,"2572":2,"2575":3,"2576":23,"2577":1,"2581":1,"2614":1,"2615":1,"2647":1,"2702":1,"2705":1,"2724":1,"2728":2,"2747":1,"2753":1,"2754":4,"2755":1,"2757":2}}],["majority",{"2":{"156":1,"166":1,"245":1,"248":1,"1132":1,"1258":1,"1495":1,"1497":1,"2727":1}}],["major",{"2":{"116":1,"199":1,"550":1,"1273":1,"1398":2,"1399":3,"1403":2,"2250":1}}],["macca",{"2":{"616":1}}],["mac",{"0":{"1279":1,"1280":1,"1283":1,"1296":1},"1":{"1297":1},"2":{"266":1,"1281":1,"1283":1,"2179":1,"2180":1,"2184":1,"2196":1,"2197":1,"2198":1,"2384":1,"2703":18}}],["machines",{"2":{"1134":1,"1828":1,"2146":1}}],["machine",{"2":{"263":1,"322":1,"323":1,"554":1,"1221":1,"2102":1,"2146":1,"2150":2,"2183":1,"2254":1,"2255":1,"2442":1,"2443":1,"2445":1,"2462":1,"2631":1}}],["mach80",{"2":{"134":1}}],["macos",{"0":{"365":1,"1278":1,"1666":1,"2254":1},"2":{"114":1,"149":1,"158":1,"176":1,"199":1,"236":1,"266":1,"505":2,"1249":1,"1273":2,"1368":1,"1567":1,"1568":1,"1666":3,"1673":1,"1825":1,"1826":1,"1881":1,"1921":1,"2179":1,"2180":1,"2183":3,"2184":2,"2196":1,"2197":1,"2198":1,"2245":1,"2247":1,"2249":1,"2254":1,"2347":1,"2351":1,"2355":3,"2384":2,"2389":1,"2392":1,"2393":1,"2429":1,"2451":1,"2452":1,"2457":1,"2512":2,"2513":2,"2556":1,"2703":11}}],["macro2",{"2":{"1384":1}}],["macro30",{"2":{"1881":1}}],["macro3",{"2":{"241":2,"249":1}}],["macro1",{"2":{"241":2,"1384":1}}],["macro0",{"2":{"199":1}}],["macropad",{"2":{"120":1,"176":3,"211":1,"236":1,"1354":1,"1355":1}}],["macros=",{"2":{"2262":2}}],["macros",{"0":{"17":1,"120":1,"696":1,"1353":1,"1354":1,"1358":1,"1360":1,"1385":1,"1553":2,"2363":1,"2559":1},"1":{"1354":1,"1355":2,"1356":2,"1357":2,"1358":1,"1359":2,"1360":2,"1361":2,"1362":2,"1363":2,"1364":2,"1365":2,"1366":2,"1367":2,"1368":2,"1369":2,"1370":2,"1371":2,"1372":2,"1373":2,"1374":2,"1375":2,"1554":2,"1555":2,"1556":2},"2":{"16":1,"17":1,"38":1,"50":1,"89":1,"114":1,"120":5,"134":2,"140":1,"176":2,"191":3,"196":1,"201":1,"211":2,"236":2,"249":1,"266":3,"277":1,"313":1,"388":1,"454":1,"567":1,"696":1,"1301":1,"1341":1,"1344":2,"1353":3,"1354":4,"1355":2,"1359":1,"1361":1,"1364":1,"1384":7,"1385":3,"1511":1,"1525":2,"1527":2,"1553":5,"1554":2,"1555":1,"1633":1,"1670":1,"1935":1,"1940":1,"1941":1,"1943":1,"2075":1,"2262":2,"2302":2,"2363":1,"2566":4,"2614":3,"2676":1,"2705":1,"2724":3,"2746":1}}],["macro",{"0":{"27":1,"140":1,"1356":1,"1364":1,"1555":1,"2122":1,"2633":1,"2649":1},"1":{"1357":1,"1365":1,"1366":1,"1367":1,"1368":1,"1369":1,"1370":1,"1371":1,"1372":1,"1373":1},"2":{"3":1,"7":1,"15":1,"27":1,"50":1,"75":1,"89":1,"114":3,"120":8,"134":1,"140":2,"149":2,"160":2,"188":2,"191":4,"199":3,"211":75,"222":3,"231":3,"236":1,"249":1,"255":2,"257":1,"258":1,"259":1,"277":2,"313":2,"529":2,"530":1,"570":1,"696":1,"698":1,"1301":1,"1326":1,"1340":1,"1352":1,"1354":4,"1355":1,"1356":2,"1357":1,"1359":9,"1364":3,"1375":1,"1384":2,"1385":1,"1405":1,"1529":1,"1553":22,"1554":12,"1555":6,"1556":14,"1578":1,"1675":1,"1729":2,"1733":1,"1881":1,"1935":3,"1940":7,"1941":6,"1952":2,"1957":1,"2042":2,"2047":1,"2059":1,"2072":1,"2075":1,"2100":1,"2101":1,"2149":1,"2161":3,"2169":1,"2183":1,"2299":1,"2302":4,"2363":10,"2400":1,"2407":3,"2490":1,"2559":3,"2566":2,"2608":2,"2610":2,"2614":1,"2615":1,"2616":2,"2633":2,"2649":1,"2676":1,"2728":3,"2746":6,"2747":2,"2749":1}}],["max660",{"2":{"1589":1}}],["maxfitlerouput",{"2":{"1441":1}}],["maxing",{"2":{"505":1}}],["maximus",{"2":{"222":1}}],["maximum",{"2":{"28":1,"166":2,"370":2,"502":2,"506":1,"511":2,"601":1,"664":1,"755":1,"784":1,"816":1,"848":1,"855":1,"883":1,"889":1,"917":1,"923":1,"951":1,"957":1,"985":1,"991":1,"1019":1,"1025":1,"1053":1,"1059":1,"1087":1,"1093":1,"1143":1,"1287":1,"1326":1,"1457":3,"1463":1,"1500":1,"1632":1,"1633":1,"1640":1,"1725":2,"1730":3,"1802":3,"1803":4,"1804":2,"1806":2,"1807":2,"1822":2,"1836":1,"1839":5,"1843":2,"1946":2,"1954":4,"2035":1,"2038":1,"2042":1,"2054":6,"2128":2,"2130":1,"2131":2,"2143":2,"2161":1,"2170":1,"2574":3,"2576":10,"2577":1,"2587":1,"2593":1,"2594":1,"2677":1,"2688":1,"2694":2,"2695":1,"2699":1,"2737":1}}],["max",{"0":{"1780":1,"1783":1,"2025":1,"2028":1},"2":{"112":4,"134":1,"160":1,"166":1,"176":1,"191":1,"194":1,"211":2,"231":1,"404":1,"502":1,"506":1,"507":2,"601":2,"659":4,"660":4,"666":2,"667":1,"1401":3,"1406":2,"1440":1,"1446":8,"1456":1,"1518":4,"1573":1,"1632":3,"1640":1,"1724":1,"1728":1,"1729":6,"1733":1,"1781":1,"1784":1,"1803":7,"1807":4,"1822":6,"1836":3,"1868":1,"1945":1,"1949":1,"1952":6,"1957":1,"1958":6,"1959":3,"2026":1,"2029":1,"2035":1,"2038":1,"2042":2,"2128":2,"2143":6,"2152":2,"2171":1,"2182":1,"2228":6,"2229":1,"2299":3,"2360":1,"2677":2,"2688":2,"2690":2,"2694":3,"2695":2,"2699":1,"2757":1}}],["maps",{"2":{"282":1,"607":1,"1279":1,"1403":1,"1405":1,"1820":1,"2701":1,"2746":1}}],["mapped",{"2":{"182":1,"209":2,"502":1,"624":1,"630":1,"669":1,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1,"1316":2,"1320":2,"1435":3,"1459":1,"1567":1,"1948":3,"2075":1,"2322":1,"2325":1,"2577":3,"2597":3,"2643":1,"2734":2,"2735":2,"2736":1}}],["mappings",{"2":{"191":1,"211":1,"236":2,"610":2,"1824":1,"2566":1}}],["mapping",{"0":{"154":1,"247":1,"610":1,"669":1,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1,"1801":1,"2157":1},"1":{"611":1,"612":1,"2158":1},"2":{"49":1,"114":1,"149":1,"154":1,"160":2,"191":6,"209":1,"211":1,"231":1,"236":1,"247":2,"266":1,"282":1,"607":1,"610":5,"612":1,"613":1,"1283":1,"1548":2,"1559":3,"1820":2,"2157":1,"2181":2,"2182":4,"2263":2,"2322":1,"2325":1,"2407":1,"2558":1,"2686":1,"2702":1,"2735":1,"2736":1}}],["maple",{"2":{"143":9,"149":1,"181":2,"270":2,"277":1,"629":1,"2350":1}}],["map",{"0":{"1405":1,"1548":1,"1559":1,"2746":1},"2":{"76":1,"134":1,"160":1,"176":2,"191":1,"199":2,"201":3,"209":1,"211":6,"218":1,"222":2,"247":2,"249":1,"277":1,"1287":1,"1405":4,"1434":1,"1533":1,"1548":3,"1559":5,"1560":1,"1799":1,"1801":1,"1820":2,"1821":1,"1836":1,"2059":3,"2060":2,"2153":2,"2155":1,"2157":1,"2181":4,"2182":3,"2184":1,"2203":1,"2204":1,"2205":1,"2206":1,"2207":1,"2209":1,"2210":1,"2263":1,"2384":1,"2566":2,"2614":1,"2694":1,"2746":2,"2747":2,"2749":2}}],["manjaro",{"2":{"2431":1,"2464":1}}],["manipulating",{"0":{"1855":1},"1":{"1856":1,"1857":1,"1858":1,"1859":1,"1860":1,"1861":1,"1862":1},"2":{"1363":1,"2442":1}}],["manipulation",{"2":{"243":1,"334":1,"580":1,"1134":1}}],["manipulations",{"2":{"64":1}}],["manipulate",{"2":{"1341":1,"1449":1,"1498":1,"1505":1,"1855":1,"1860":1,"2158":1}}],["man",{"2":{"1238":1,"2347":1}}],["manner",{"2":{"502":2,"511":1,"1527":1}}],["mango",{"2":{"226":1,"236":1}}],["mandatory",{"2":{"201":2,"2566":1}}],["managed",{"2":{"1265":1}}],["management",{"0":{"1527":1},"2":{"1265":1,"1292":1,"1822":1,"2143":1}}],["manager",{"0":{"324":1},"2":{"324":1,"358":1,"627":1,"628":1,"629":2,"1292":1,"1921":1,"2347":1,"2351":1,"2420":1,"2450":1,"2506":1}}],["manageable",{"2":{"251":1,"481":1}}],["manage",{"2":{"182":1,"554":1,"596":1,"1303":1}}],["manual",{"0":{"2530":1},"2":{"149":1,"160":1,"234":1,"249":2,"1227":1,"1238":1}}],["manually",{"2":{"134":1,"234":1,"244":1,"334":1,"366":1,"454":1,"521":1,"596":1,"1241":1,"1448":1,"1658":1,"1720":1,"1820":1,"1822":2,"1833":1,"1855":1,"2126":1,"2143":2,"2252":2,"2413":1,"2445":1,"2459":1,"2463":1,"2477":1,"2498":1,"2566":1,"2573":1,"2577":2,"2757":1}}],["manufacture",{"2":{"2259":1}}],["manufacturers",{"2":{"684":1,"1132":1,"1133":1}}],["manufacturer",{"2":{"70":3,"76":1,"111":1,"169":2,"184":2,"191":4,"213":1,"327":1,"502":1,"537":1,"681":1,"1923":3,"2231":1,"2238":1,"2556":3,"2565":1,"2566":1,"2671":1,"2672":3}}],["manuform",{"2":{"114":3,"149":2,"211":1,"217":2,"222":8,"226":1,"236":1,"2270":1}}],["manyboard",{"2":{"114":1}}],["many",{"2":{"30":1,"198":1,"265":1,"376":1,"430":1,"445":1,"479":1,"505":2,"578":1,"598":1,"602":1,"659":2,"1212":1,"1254":1,"1304":1,"1325":2,"1368":1,"1405":1,"1410":1,"1416":1,"1430":1,"1454":1,"1501":1,"1557":1,"1658":1,"1791":1,"1807":1,"1817":1,"1918":1,"2042":1,"2114":1,"2131":1,"2132":1,"2141":1,"2148":1,"2170":1,"2171":1,"2181":1,"2226":3,"2229":1,"2230":1,"2262":2,"2267":1,"2280":1,"2300":1,"2348":2,"2408":1,"2418":1,"2427":1,"2429":1,"2456":1,"2457":1,"2479":1,"2480":1,"2492":2,"2503":3,"2555":1,"2566":1,"2577":1,"2634":1,"2663":1,"2686":1,"2701":1,"2702":1,"2718":1,"2741":1,"2745":2,"2750":3,"2757":1}}],["maarten",{"0":{"57":1}}],["maartenwut",{"0":{"57":1},"2":{"57":23}}],["mario",{"2":{"1686":1}}],["mary",{"2":{"1565":2}}],["mar",{"2":{"55":1}}],["marked",{"2":{"656":1,"1142":1,"1466":1,"1538":1,"1641":1,"1728":1,"2344":1,"2477":1,"2672":1}}],["marker",{"2":{"290":1,"2349":1,"2600":8}}],["markers",{"2":{"266":22}}],["markdown",{"2":{"278":2,"341":1,"462":1,"621":1,"1346":1,"2510":2}}],["mark",{"2":{"48":1,"176":1,"191":1,"234":1,"236":1,"502":1,"2221":1,"2477":1,"2741":1}}],["marksard",{"2":{"143":3,"149":2}}],["marks",{"2":{"0":1,"2466":1,"2477":2}}],["matias",{"2":{"2266":1}}],["materials",{"2":{"2270":1,"2274":1}}],["material",{"2":{"2267":1}}],["mate",{"2":{"1491":1}}],["math",{"2":{"469":1,"1836":1}}],["matt",{"2":{"2753":1}}],["matte",{"2":{"2273":1}}],["matters",{"2":{"2042":1,"2408":1}}],["matter",{"2":{"194":1,"556":1,"1383":1,"1551":1,"2274":1,"2408":1,"2456":1,"2614":1}}],["matt3o",{"2":{"2270":2,"2281":1}}],["matthewdias",{"2":{"143":4,"149":2}}],["matrices",{"2":{"176":1,"1495":1,"1723":1,"1944":1,"2131":1,"2289":1,"2311":2}}],["matrix=true",{"2":{"374":1,"1245":1}}],["matrix",{"0":{"80":1,"84":1,"124":1,"214":1,"218":1,"563":1,"578":1,"579":1,"580":1,"584":1,"585":1,"586":1,"1252":1,"1290":1,"1552":1,"1723":1,"1728":1,"1729":1,"1735":1,"1736":1,"1737":1,"1738":1,"1739":1,"1740":1,"1741":1,"1743":1,"1745":1,"1747":1,"1749":1,"1751":1,"1752":1,"1753":1,"1754":1,"1755":1,"1757":1,"1758":1,"1759":1,"1760":1,"1761":1,"1763":1,"1764":1,"1765":1,"1766":1,"1767":1,"1769":1,"1771":1,"1773":1,"1774":1,"1776":1,"1778":1,"1780":1,"1783":1,"1944":1,"1949":1,"1950":1,"1951":1,"1952":1,"1960":1,"1962":1,"1963":1,"1964":1,"1965":1,"1966":1,"1967":1,"1968":1,"1970":1,"1972":1,"1974":1,"1976":1,"1978":1,"1979":1,"1980":1,"1981":1,"1982":1,"1984":1,"1985":1,"1986":1,"1987":1,"1988":1,"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2008":1,"2010":1,"2012":1,"2014":1,"2016":1,"2018":1,"2019":1,"2021":1,"2023":1,"2025":1,"2028":1,"2125":1,"2268":1,"2270":1,"2283":1,"2311":1,"2369":1,"2377":1,"2557":1,"2558":1,"2648":1,"2688":1,"2689":1,"2695":1,"2745":1,"2746":1},"1":{"564":1,"565":1,"566":1,"579":1,"580":1,"585":1,"586":1,"1724":1,"1725":1,"1726":1,"1727":1,"1728":1,"1729":1,"1730":1,"1731":1,"1732":1,"1733":1,"1734":1,"1735":1,"1736":1,"1737":1,"1738":1,"1739":1,"1740":1,"1741":1,"1742":2,"1743":1,"1744":2,"1745":1,"1746":2,"1747":1,"1748":2,"1749":1,"1750":2,"1751":1,"1752":1,"1753":1,"1754":1,"1755":1,"1756":2,"1757":1,"1758":1,"1759":1,"1760":1,"1761":1,"1762":2,"1763":1,"1764":1,"1765":1,"1766":1,"1767":1,"1768":2,"1769":1,"1770":2,"1771":1,"1772":2,"1773":1,"1774":1,"1775":2,"1776":1,"1777":2,"1778":1,"1779":2,"1780":1,"1781":1,"1782":1,"1783":1,"1784":1,"1785":1,"1945":1,"1946":1,"1947":1,"1948":1,"1949":1,"1950":2,"1951":2,"1952":1,"1953":1,"1954":1,"1955":1,"1956":1,"1957":1,"1958":1,"1959":1,"1960":1,"1961":1,"1962":1,"1963":1,"1964":1,"1965":1,"1966":1,"1967":1,"1968":1,"1969":2,"1970":1,"1971":2,"1972":1,"1973":2,"1974":1,"1975":2,"1976":1,"1977":2,"1978":1,"1979":1,"1980":1,"1981":1,"1982":1,"1983":2,"1984":1,"1985":1,"1986":1,"1987":1,"1988":1,"1989":2,"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"1995":2,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2001":2,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2007":2,"2008":1,"2009":2,"2010":1,"2011":2,"2012":1,"2013":1,"2014":1,"2015":2,"2016":1,"2017":2,"2018":1,"2019":1,"2020":2,"2021":1,"2022":2,"2023":1,"2024":2,"2025":1,"2026":1,"2027":1,"2028":1,"2029":1,"2030":1,"2269":1,"2271":1,"2272":1,"2273":1,"2274":1,"2558":1,"2746":1,"2747":1,"2748":1,"2749":1},"2":{"17":1,"31":8,"49":3,"63":2,"64":1,"65":4,"70":1,"74":4,"76":1,"80":2,"84":1,"92":4,"93":14,"94":5,"102":3,"111":2,"112":7,"113":1,"114":36,"124":2,"133":1,"134":11,"149":13,"160":4,"176":4,"183":22,"185":9,"191":16,"196":1,"199":7,"201":1,"211":14,"214":1,"218":1,"221":6,"222":18,"236":12,"238":1,"249":33,"266":10,"277":11,"334":1,"374":2,"378":2,"502":18,"510":4,"511":9,"515":2,"530":2,"563":2,"564":4,"565":10,"566":21,"574":1,"575":1,"578":1,"579":2,"580":18,"584":1,"586":4,"587":2,"588":2,"593":3,"594":3,"609":1,"624":1,"643":1,"659":1,"660":1,"664":1,"665":1,"669":1,"730":2,"756":2,"784":1,"785":2,"816":1,"817":2,"848":1,"849":2,"883":1,"884":2,"917":1,"918":2,"951":1,"952":2,"985":1,"986":2,"1019":1,"1020":2,"1053":1,"1054":2,"1087":1,"1088":2,"1143":1,"1144":2,"1213":1,"1214":1,"1252":1,"1253":8,"1290":1,"1294":1,"1326":3,"1329":1,"1330":2,"1332":1,"1336":1,"1359":4,"1375":1,"1405":5,"1454":1,"1496":2,"1497":3,"1530":2,"1547":2,"1560":4,"1573":1,"1723":1,"1724":3,"1725":5,"1727":12,"1728":64,"1729":23,"1730":15,"1731":1,"1733":8,"1735":1,"1736":1,"1737":1,"1738":1,"1739":1,"1740":1,"1741":1,"1742":1,"1744":1,"1774":1,"1775":1,"1792":2,"1817":1,"1820":3,"1823":8,"1826":4,"1944":1,"1945":3,"1946":5,"1948":4,"1949":148,"1950":7,"1951":1,"1952":23,"1954":19,"1955":1,"1957":8,"1958":10,"1959":7,"1960":4,"1962":1,"1963":1,"1964":1,"1965":1,"1966":1,"1967":1,"1968":1,"1969":1,"1971":1,"2019":1,"2020":1,"2034":1,"2041":2,"2070":1,"2117":1,"2122":3,"2125":11,"2129":2,"2131":4,"2141":1,"2142":2,"2155":3,"2164":2,"2231":1,"2238":1,"2259":1,"2263":3,"2267":1,"2268":4,"2275":1,"2276":1,"2277":2,"2283":1,"2284":1,"2289":1,"2290":1,"2299":1,"2301":3,"2302":4,"2311":6,"2369":13,"2377":1,"2401":3,"2406":6,"2407":1,"2411":1,"2423":2,"2437":3,"2440":1,"2519":1,"2557":7,"2558":6,"2559":20,"2566":10,"2567":1,"2577":3,"2584":1,"2614":5,"2648":1,"2674":1,"2679":2,"2682":3,"2686":3,"2688":6,"2689":8,"2695":6,"2696":1,"2697":7,"2707":1,"2711":46,"2724":2,"2725":2,"2740":1,"2744":2,"2745":8,"2746":6,"2747":4,"2748":4,"2757":1}}],["matched",{"2":{"374":2,"1431":1,"1446":1,"1686":1}}],["matches",{"2":{"341":1,"349":1,"628":1,"1132":1,"1133":1,"1405":1,"1441":9,"1452":2,"1559":1,"1701":1,"1704":1,"1707":1,"1710":1,"1713":1,"1842":1,"2348":1,"2445":2,"2513":1,"2575":1,"2577":2,"2746":1}}],["matchstickworks",{"2":{"226":2,"236":1}}],["match",{"2":{"65":1,"77":1,"105":1,"134":1,"149":1,"182":1,"191":1,"195":1,"349":1,"354":1,"374":5,"453":1,"540":1,"628":1,"703":1,"1177":1,"1198":1,"1278":1,"1300":2,"1332":1,"1336":1,"1347":2,"1351":1,"1355":1,"1438":1,"1445":1,"1525":1,"1820":1,"2157":1,"2221":1,"2323":1,"2348":1,"2411":1,"2533":2,"2575":1,"2584":1,"2587":1,"2614":1,"2615":1,"2747":1}}],["matchingsubstring",{"2":{"2754":2}}],["matching",{"2":{"50":1,"149":1,"243":1,"374":1,"411":1,"702":1,"1132":1,"1133":1,"1176":1,"1221":1,"1300":1,"1341":6,"1441":2,"2323":1,"2352":1,"2542":1,"2566":1,"2701":1,"2754":1}}],["masquerade",{"2":{"2550":1}}],["masked",{"2":{"1445":1,"2125":2,"2413":1}}],["mask",{"0":{"1404":1},"2":{"105":6,"114":1,"502":1,"1300":21,"1303":2,"1336":2,"1341":12,"1364":1,"1385":2,"1404":6,"1446":4,"1501":1,"1523":2,"1530":1,"1549":4,"1663":1,"1665":11,"1666":2,"1668":1,"1670":3,"1677":3,"1815":1,"1910":2,"1912":5,"1933":2,"1938":2,"1939":1,"2125":1,"2139":1,"2228":1,"2491":8,"2588":2,"2738":3}}],["masks",{"2":{"49":1,"1300":1,"1677":1,"1815":2,"2139":2,"2588":1,"2738":1}}],["massive",{"2":{"163":1}}],["massively",{"2":{"70":1}}],["mass",{"2":{"93":1,"199":1,"360":1,"1576":1,"2252":1,"2349":1,"2539":1}}],["massdrop",{"2":{"73":1,"114":1,"131":1,"134":1,"207":2,"493":2,"624":3}}],["masterzen",{"2":{"2281":1}}],["master",{"0":{"699":1,"1174":1,"2474":1,"2478":1,"2479":1},"1":{"700":1,"701":1,"702":1,"703":1,"704":1,"705":1,"706":1,"707":1,"708":1,"709":1,"710":1,"711":1,"712":1,"713":1,"714":1,"715":1,"716":1,"717":1,"718":1,"719":1,"720":1,"721":1,"722":1,"723":1,"724":1,"725":1,"726":1,"727":1,"728":1,"1175":1,"1176":1,"1177":1,"1178":1,"1179":1,"1180":1,"1181":1,"1182":1,"1183":1,"1184":1,"1185":1,"1186":1,"1187":1,"1188":1,"1189":1,"1190":1,"1191":1,"1192":1,"1193":1,"1194":1,"2479":1,"2480":1,"2481":1},"2":{"31":3,"34":1,"45":1,"51":1,"74":1,"114":1,"134":2,"149":1,"169":1,"176":4,"191":1,"234":4,"236":1,"277":1,"317":2,"337":1,"340":4,"345":1,"346":3,"347":2,"349":8,"350":5,"361":4,"400":2,"509":4,"510":4,"511":7,"515":1,"520":1,"529":1,"530":2,"535":1,"684":3,"685":1,"694":1,"699":1,"700":2,"702":1,"852":3,"1023":3,"1057":3,"1129":2,"1130":1,"1174":1,"1175":2,"1275":1,"1816":3,"1844":1,"1879":1,"2051":4,"2127":3,"2128":4,"2129":3,"2130":18,"2131":6,"2132":1,"2140":3,"2225":1,"2255":3,"2370":2,"2396":2,"2472":1,"2473":4,"2474":6,"2475":4,"2476":1,"2477":8,"2478":2,"2479":7,"2480":1,"2564":3,"2566":2,"2567":1,"2568":4,"2576":3,"2721":1}}],["made",{"2":{"10":1,"73":1,"116":1,"124":1,"134":1,"172":1,"201":1,"243":1,"246":1,"263":1,"271":1,"272":1,"273":1,"315":1,"327":1,"428":1,"453":1,"455":1,"519":1,"554":5,"606":1,"624":1,"726":1,"1403":1,"1527":1,"2132":1,"2297":1,"2303":1,"2309":1,"2409":1,"2454":1,"2474":1,"2476":2,"2477":3,"2485":1,"2513":1,"2719":1,"2728":1}}],["maybe",{"0":{"2326":1}}],["may",{"0":{"19":1,"78":1,"150":1,"200":1,"250":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1},"2":{"10":1,"14":1,"24":1,"31":2,"34":1,"73":1,"88":1,"104":1,"124":2,"127":1,"157":1,"166":1,"182":1,"194":1,"240":1,"248":1,"251":1,"259":1,"282":3,"338":1,"341":1,"343":1,"344":1,"345":1,"351":5,"352":7,"355":2,"356":1,"374":3,"380":1,"396":1,"411":2,"452":2,"461":1,"466":1,"480":1,"481":1,"486":3,"502":2,"504":1,"505":4,"511":1,"539":2,"551":1,"556":1,"574":1,"578":1,"589":1,"624":1,"626":3,"627":2,"628":1,"629":1,"635":1,"659":4,"663":1,"668":1,"687":1,"688":1,"689":2,"690":2,"733":1,"759":1,"791":1,"821":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1147":1,"1176":1,"1177":2,"1195":1,"1201":1,"1216":3,"1219":1,"1223":2,"1226":1,"1227":1,"1230":1,"1240":1,"1241":2,"1243":2,"1254":1,"1270":2,"1278":1,"1293":1,"1294":1,"1329":1,"1331":1,"1335":1,"1355":2,"1361":1,"1364":2,"1377":3,"1384":1,"1385":2,"1398":1,"1406":1,"1412":1,"1431":1,"1440":1,"1447":1,"1467":1,"1469":1,"1470":1,"1495":1,"1499":1,"1500":2,"1515":2,"1533":1,"1548":1,"1553":1,"1559":1,"1562":2,"1573":5,"1605":1,"1651":1,"1661":1,"1662":1,"1666":1,"1670":1,"1673":1,"1676":1,"1677":1,"1684":2,"1685":1,"1714":1,"1788":1,"1803":1,"1811":1,"1815":1,"1817":1,"1819":1,"1824":1,"1825":1,"1828":1,"1830":1,"1850":1,"1859":1,"1864":1,"1878":1,"1881":1,"1904":1,"1908":1,"1921":2,"1932":1,"1933":1,"1934":1,"1938":1,"1941":1,"1950":1,"1954":1,"2061":2,"2113":1,"2120":1,"2125":1,"2129":1,"2131":1,"2133":1,"2139":1,"2145":2,"2150":1,"2161":1,"2169":1,"2177":1,"2181":1,"2182":1,"2183":2,"2230":1,"2233":1,"2235":1,"2237":1,"2238":2,"2240":3,"2242":1,"2243":1,"2244":1,"2245":1,"2247":1,"2252":1,"2255":1,"2257":2,"2260":1,"2262":1,"2263":1,"2267":1,"2269":1,"2272":2,"2273":3,"2276":1,"2279":3,"2294":2,"2305":1,"2306":1,"2310":1,"2325":1,"2327":1,"2341":1,"2342":1,"2346":1,"2348":4,"2351":1,"2353":1,"2393":1,"2398":2,"2401":1,"2405":2,"2411":1,"2419":1,"2423":2,"2441":1,"2450":1,"2452":1,"2466":1,"2491":1,"2495":1,"2506":1,"2510":2,"2513":1,"2514":1,"2516":1,"2517":1,"2518":1,"2521":1,"2524":2,"2529":3,"2564":5,"2567":1,"2571":1,"2576":4,"2577":2,"2584":2,"2592":1,"2593":1,"2601":1,"2605":1,"2702":1,"2704":1,"2705":2,"2718":1,"2719":1,"2720":3,"2723":1,"2726":1,"2728":1,"2729":2,"2738":1,"2740":3}}],["aabb",{"0":{"2731":1}}],["aa",{"2":{"2575":1}}],["aaron",{"2":{"1938":2}}],["ao",{"2":{"2153":1}}],["aoff",{"2":{"1793":1,"2371":1}}],["aozora",{"2":{"122":2}}],["a♯",{"2":{"1793":6,"2371":6}}],["a♭",{"2":{"1793":6,"2371":6}}],["a\`",{"2":{"1519":1}}],["azure",{"2":{"1953":2,"2058":2}}],["azerty",{"0":{"2624":1},"2":{"1355":1,"2703":2}}],["azoteq",{"0":{"1837":1},"1":{"1838":1,"1839":1,"1840":1},"2":{"236":1,"249":1,"1837":2,"1838":10,"1839":17,"1840":3}}],["a9",{"2":{"1198":1,"1906":2,"2517":1,"2530":1}}],["a8",{"2":{"656":2,"661":2,"1396":1,"1906":2,"2530":1}}],["a7²",{"2":{"635":1}}],["a7¹",{"2":{"635":1}}],["a7",{"2":{"633":1,"635":4,"2518":2,"2530":1}}],["a6²",{"2":{"635":1}}],["a6¹",{"2":{"635":1}}],["a6",{"2":{"633":1,"635":4,"2518":2,"2530":1}}],["a54",{"2":{"2530":1}}],["a5+dacd2",{"2":{"656":6}}],["a5²",{"2":{"635":1}}],["a5¹",{"2":{"635":1}}],["a5",{"2":{"633":1,"635":4,"656":1,"657":1,"1390":3,"1391":3,"1392":1,"1393":1,"1793":1,"2371":1,"2518":2,"2530":1}}],["a43",{"2":{"2530":1}}],["a4+a5",{"2":{"1392":1}}],["a4+dacd1",{"2":{"656":6}}],["a4²",{"2":{"635":1}}],["a4¹",{"2":{"635":1}}],["a4",{"2":{"633":1,"635":4,"656":1,"657":1,"1390":3,"1391":3,"1392":1,"1393":1,"1633":2,"1793":1,"2371":1,"2518":2,"2530":1}}],["a3²",{"2":{"635":2}}],["a3¹",{"2":{"635":2}}],["a3",{"2":{"633":1,"635":4,"1236":1,"1793":1,"2371":1}}],["a2²",{"2":{"635":2}}],["a2¹",{"2":{"635":2}}],["a2",{"2":{"633":1,"635":4,"1793":1,"2371":1,"2530":1,"2689":2}}],["a14",{"2":{"2530":1}}],["a145",{"2":{"2530":1}}],["a135",{"2":{"2530":1}}],["a13",{"2":{"1573":1,"2530":1}}],["a15",{"2":{"1547":1,"2530":1}}],["a12",{"2":{"1198":1,"2516":1}}],["a11",{"2":{"1198":1,"2516":1}}],["a10",{"2":{"1198":1,"1547":1,"2517":1,"2521":1,"2530":1}}],["a1²",{"2":{"635":2}}],["a1¹",{"2":{"635":2}}],["a1",{"2":{"633":1,"635":4,"1793":1,"2371":1,"2530":1,"2689":2,"2697":1}}],["a0²",{"2":{"635":2}}],["a0¹",{"2":{"635":2}}],["a0",{"2":{"633":1,"635":4,"639":1,"2141":2,"2237":1,"2518":1,"2519":1,"2530":1,"2689":2}}],["akko",{"2":{"2244":1}}],["akemipad",{"2":{"211":1}}],["akis",{"2":{"211":1}}],["akira",{"2":{"211":1}}],["akb",{"2":{"211":2}}],["aka",{"2":{"149":1,"194":1,"1401":1,"1402":1,"1499":2,"1677":1,"2119":1,"2120":1,"2152":1,"2738":1}}],["air",{"2":{"2133":1}}],["aim",{"2":{"2229":1}}],["aims",{"2":{"1832":1,"2065":1,"2472":1}}],["aiming",{"2":{"1791":1}}],["aimed",{"2":{"251":1,"605":1,"1733":1,"1957":1,"2482":1}}],["ain",{"2":{"454":1}}],["aids",{"2":{"2272":1}}],["aid",{"2":{"278":1,"468":1}}],["aide",{"2":{"249":1,"1843":1}}],["aidansmithdotdev",{"2":{"211":1}}],["ai03",{"2":{"149":1,"211":2,"388":1,"2267":1}}],["ae",{"2":{"2182":2}}],["aegis",{"2":{"211":1}}],["aeroboard",{"2":{"222":1}}],["aero",{"2":{"211":1}}],["aella",{"2":{"211":1}}],["aelith",{"2":{"197":2}}],["aeboards",{"0":{"60":1},"2":{"102":3,"114":1,"191":1,"211":3}}],["axis",{"0":{"1646":2,"1649":2},"1":{"1647":2,"1648":2,"1650":2},"2":{"183":2,"236":1,"1325":1,"1571":1,"1577":1,"1632":3,"1633":12,"1634":9,"1638":1,"1639":1,"1640":1,"1646":1,"1647":2,"1649":1,"1650":2,"1836":10,"1851":2,"1852":2,"1855":2,"2615":2,"2686":4,"2688":2,"2695":2}}],["axes",{"0":{"1633":1,"1634":1,"1914":1,"1915":1},"1":{"1634":1},"2":{"49":1,"183":2,"1630":3,"1632":1,"1633":4,"1634":2,"1638":1,"1879":1,"1914":2}}],["ajisai74",{"2":{"143":2}}],["awinic",{"2":{"664":1}}],["awesome",{"2":{"196":1,"313":1,"463":1,"464":1,"465":1,"1263":1,"1375":1,"1680":1,"2556":1}}],["awake",{"2":{"1855":1}}],["awaiting",{"2":{"1816":1}}],["awaited",{"2":{"131":1}}],["aware",{"2":{"370":1,"371":1,"378":1,"381":1,"383":1,"386":1,"452":1,"1515":1,"2355":1}}],["away",{"2":{"3":1,"15":1,"134":3,"176":1,"266":1,"388":1,"1439":1,"1684":1,"1728":4,"1815":1,"1949":6,"2139":1,"2171":1,"2268":1,"2273":1,"2311":1,"2665":1}}],["aw20216s",{"0":{"664":1,"671":1,"673":1,"675":1,"677":1,"679":1},"1":{"665":1,"666":1,"667":1,"668":1,"669":1,"670":1,"671":1,"672":2,"673":1,"674":2,"675":1,"676":2,"677":1,"678":2,"679":1,"680":2},"2":{"236":1,"249":1,"664":1,"665":3,"666":7,"667":1,"669":3,"675":1,"676":1,"1945":1,"2695":1}}],["aw20216",{"2":{"114":3,"176":1,"211":1,"221":2,"236":1}}],["ammount",{"2":{"1949":3}}],["amtel",{"2":{"2126":1}}],["amt",{"2":{"1849":4}}],["among",{"2":{"1568":1,"2348":1}}],["amounts",{"2":{"1334":1,"2574":1,"2576":1,"2577":1}}],["amount",{"2":{"107":1,"688":1,"689":1,"1245":1,"1336":1,"1368":1,"1515":2,"1554":1,"1559":1,"1682":1,"1684":1,"1827":2,"1868":1,"1915":1,"2044":1,"2084":1,"2088":1,"2128":1,"2149":1,"2160":1,"2179":1,"2272":3,"2279":1,"2304":1,"2411":1,"2491":1,"2514":1,"2564":1,"2574":3,"2576":1,"2680":1,"2681":1,"2687":1,"2689":1,"2691":1,"2697":2,"2699":1,"2718":1}}],["amazing",{"2":{"1264":1}}],["amag23",{"2":{"211":1}}],["am",{"2":{"360":1,"1436":3,"1878":2,"2477":1}}],["america",{"2":{"1268":1,"1355":1,"2703":3}}],["amet",{"2":{"301":1}}],["amended",{"2":{"2564":1}}],["amending",{"2":{"229":1}}],["amend",{"2":{"222":2}}],["amendment",{"2":{"222":1}}],["ambiguous",{"2":{"457":1,"460":1}}],["ambiguity",{"2":{"273":1,"2564":1}}],["amber80",{"2":{"211":1}}],["amux",{"2":{"249":1}}],["amj84",{"2":{"222":1}}],["amj",{"2":{"160":1}}],["amjpad",{"2":{"159":2}}],["amj96",{"2":{"159":2}}],["amj60",{"2":{"159":2}}],["amjkeyboard",{"2":{"159":4,"160":1,"222":1}}],["amj40",{"2":{"159":2}}],["ampr",{"2":{"2378":1,"2399":1}}],["ampersand",{"2":{"277":1,"2378":1,"2399":1}}],["amp",{"0":{"25":1,"471":1,"1298":1,"1359":1,"1665":1,"1820":1,"2719":1},"1":{"1360":1,"1361":1,"1362":1,"1363":1,"1821":1,"2720":1,"2721":1},"2":{"63":1,"72":1,"93":1,"114":5,"134":1,"149":1,"160":1,"190":1,"191":1,"199":2,"211":2,"249":1,"266":1,"636":1,"1242":4,"1300":2,"1364":1,"1399":1,"1447":2,"1467":2,"1557":1,"1670":1,"1725":2,"1820":1,"1913":1,"1946":2,"1949":1,"2267":1,"2347":1,"2355":1,"2356":1,"2378":1,"2386":1,"2399":1,"2468":2,"2572":1,"2753":1}}],["ahead",{"2":{"76":1,"453":1,"455":1,"2443":1,"2473":1}}],["apt",{"2":{"454":1,"2431":1,"2464":1}}],["apart",{"2":{"2117":1,"2272":1,"2279":1}}],["apa",{"2":{"222":1}}],["apa102",{"0":{"642":1,"646":1,"647":1,"649":1,"651":1,"652":1,"2675":1},"1":{"643":1,"644":1,"645":1,"646":1,"647":1,"648":2,"649":1,"650":2,"651":1,"652":1,"653":2},"2":{"75":1,"201":2,"211":1,"221":2,"234":2,"236":2,"249":2,"277":1,"642":1,"643":4,"644":3,"647":1,"648":1,"1945":1,"2031":1,"2032":7,"2675":2,"2694":1}}],["apm32",{"0":{"2240":1},"1":{"2241":1},"2":{"211":1,"222":1,"629":2,"2240":2}}],["apm32f103",{"2":{"134":1}}],["ap2",{"2":{"176":1}}],["aplyard",{"2":{"67":2,"72":1}}],["aplx6",{"2":{"67":3,"72":1}}],["apis",{"2":{"153":1,"236":1,"244":1,"643":1,"665":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1213":1,"2523":2,"2564":1,"2576":2,"2577":3}}],["api",{"0":{"220":1,"244":1,"306":1,"311":1,"318":1,"522":1,"645":1,"670":1,"706":1,"735":1,"761":1,"793":1,"823":1,"858":1,"892":1,"926":1,"960":1,"994":1,"1028":1,"1062":1,"1096":1,"1149":1,"1178":1,"1199":1,"1231":1,"1472":1,"1535":1,"1595":1,"1636":1,"1688":1,"1734":1,"1822":1,"1884":1,"1924":1,"1961":1,"2080":1,"2143":1,"2185":1,"2577":1,"2580":1},"1":{"307":1,"308":1,"309":1,"310":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"319":1,"320":1,"321":1,"523":1,"524":1,"525":1,"646":1,"647":1,"648":1,"649":1,"650":1,"651":1,"652":1,"653":1,"671":1,"672":1,"673":1,"674":1,"675":1,"676":1,"677":1,"678":1,"679":1,"680":1,"707":1,"708":1,"709":1,"710":1,"711":1,"712":1,"713":1,"714":1,"715":1,"716":1,"717":1,"718":1,"719":1,"720":1,"721":1,"722":1,"723":1,"724":1,"725":1,"726":1,"727":1,"728":1,"736":1,"737":1,"738":1,"739":1,"740":1,"741":1,"742":1,"743":1,"744":1,"745":1,"746":1,"747":1,"748":1,"749":1,"750":1,"751":1,"752":1,"753":1,"754":1,"762":1,"763":1,"764":1,"765":1,"766":1,"767":1,"768":1,"769":1,"770":1,"771":1,"772":1,"773":1,"774":1,"775":1,"776":1,"777":1,"778":1,"779":1,"780":1,"781":1,"782":1,"783":1,"794":1,"795":1,"796":1,"797":1,"798":1,"799":1,"800":1,"801":1,"802":1,"803":1,"804":1,"805":1,"806":1,"807":1,"808":1,"809":1,"810":1,"811":1,"812":1,"813":1,"814":1,"815":1,"824":1,"825":1,"826":1,"827":1,"828":1,"829":1,"830":1,"831":1,"832":1,"833":1,"834":1,"835":1,"836":1,"837":1,"838":1,"839":1,"840":1,"841":1,"842":1,"843":1,"844":1,"845":1,"846":1,"847":1,"859":1,"860":1,"861":1,"862":1,"863":1,"864":1,"865":1,"866":1,"867":1,"868":1,"869":1,"870":1,"871":1,"872":1,"873":1,"874":1,"875":1,"876":1,"877":1,"878":1,"879":1,"880":1,"881":1,"882":1,"893":1,"894":1,"895":1,"896":1,"897":1,"898":1,"899":1,"900":1,"901":1,"902":1,"903":1,"904":1,"905":1,"906":1,"907":1,"908":1,"909":1,"910":1,"911":1,"912":1,"913":1,"914":1,"915":1,"916":1,"927":1,"928":1,"929":1,"930":1,"931":1,"932":1,"933":1,"934":1,"935":1,"936":1,"937":1,"938":1,"939":1,"940":1,"941":1,"942":1,"943":1,"944":1,"945":1,"946":1,"947":1,"948":1,"949":1,"950":1,"961":1,"962":1,"963":1,"964":1,"965":1,"966":1,"967":1,"968":1,"969":1,"970":1,"971":1,"972":1,"973":1,"974":1,"975":1,"976":1,"977":1,"978":1,"979":1,"980":1,"981":1,"982":1,"983":1,"984":1,"995":1,"996":1,"997":1,"998":1,"999":1,"1000":1,"1001":1,"1002":1,"1003":1,"1004":1,"1005":1,"1006":1,"1007":1,"1008":1,"1009":1,"1010":1,"1011":1,"1012":1,"1013":1,"1014":1,"1015":1,"1016":1,"1017":1,"1018":1,"1029":1,"1030":1,"1031":1,"1032":1,"1033":1,"1034":1,"1035":1,"1036":1,"1037":1,"1038":1,"1039":1,"1040":1,"1041":1,"1042":1,"1043":1,"1044":1,"1045":1,"1046":1,"1047":1,"1048":1,"1049":1,"1050":1,"1051":1,"1052":1,"1063":1,"1064":1,"1065":1,"1066":1,"1067":1,"1068":1,"1069":1,"1070":1,"1071":1,"1072":1,"1073":1,"1074":1,"1075":1,"1076":1,"1077":1,"1078":1,"1079":1,"1080":1,"1081":1,"1082":1,"1083":1,"1084":1,"1085":1,"1086":1,"1097":1,"1098":1,"1099":1,"1100":1,"1101":1,"1102":1,"1103":1,"1104":1,"1105":1,"1106":1,"1107":1,"1108":1,"1109":1,"1110":1,"1111":1,"1112":1,"1113":1,"1114":1,"1115":1,"1116":1,"1117":1,"1118":1,"1119":1,"1120":1,"1150":1,"1151":1,"1152":1,"1153":1,"1154":1,"1155":1,"1156":1,"1157":1,"1158":1,"1159":1,"1160":1,"1161":1,"1162":1,"1163":1,"1164":1,"1165":1,"1166":1,"1167":1,"1168":1,"1169":1,"1170":1,"1171":1,"1172":1,"1173":1,"1179":1,"1180":1,"1181":1,"1182":1,"1183":1,"1184":1,"1185":1,"1186":1,"1187":1,"1188":1,"1189":1,"1190":1,"1191":1,"1192":1,"1193":1,"1194":1,"1200":1,"1201":1,"1202":1,"1203":1,"1204":1,"1205":1,"1206":1,"1207":1,"1208":1,"1209":1,"1210":1,"1211":1,"1232":1,"1233":1,"1473":1,"1474":1,"1475":1,"1476":1,"1477":1,"1478":1,"1479":1,"1480":1,"1481":1,"1482":1,"1483":1,"1484":1,"1485":1,"1486":1,"1487":1,"1488":1,"1489":1,"1536":1,"1537":1,"1538":1,"1539":1,"1540":1,"1541":1,"1542":1,"1543":1,"1544":1,"1545":1,"1546":1,"1596":1,"1597":1,"1598":1,"1599":1,"1600":1,"1601":1,"1602":1,"1603":1,"1604":1,"1605":1,"1606":1,"1607":1,"1608":1,"1609":1,"1610":1,"1611":1,"1612":1,"1613":1,"1614":1,"1615":1,"1616":1,"1617":1,"1618":1,"1619":1,"1620":1,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1,"1626":1,"1627":1,"1628":1,"1629":1,"1637":1,"1638":1,"1639":1,"1640":1,"1641":1,"1642":1,"1643":1,"1644":1,"1645":1,"1646":1,"1647":1,"1648":1,"1649":1,"1650":1,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1695":1,"1696":1,"1697":1,"1698":1,"1699":1,"1700":1,"1701":1,"1702":1,"1703":1,"1704":1,"1705":1,"1706":1,"1707":1,"1708":1,"1709":1,"1710":1,"1711":1,"1712":1,"1713":1,"1735":1,"1736":1,"1737":1,"1738":1,"1739":1,"1740":1,"1741":1,"1742":1,"1743":1,"1744":1,"1745":1,"1746":1,"1747":1,"1748":1,"1749":1,"1750":1,"1751":1,"1752":1,"1753":1,"1754":1,"1755":1,"1756":1,"1757":1,"1758":1,"1759":1,"1760":1,"1761":1,"1762":1,"1763":1,"1764":1,"1765":1,"1766":1,"1767":1,"1768":1,"1769":1,"1770":1,"1771":1,"1772":1,"1773":1,"1774":1,"1775":1,"1776":1,"1777":1,"1778":1,"1779":1,"1780":1,"1781":1,"1782":1,"1783":1,"1784":1,"1785":1,"1885":1,"1886":1,"1887":1,"1888":1,"1889":1,"1890":1,"1891":1,"1892":1,"1893":1,"1894":1,"1895":1,"1896":1,"1897":1,"1898":1,"1899":1,"1900":1,"1901":1,"1925":1,"1926":1,"1927":1,"1928":1,"1962":1,"1963":1,"1964":1,"1965":1,"1966":1,"1967":1,"1968":1,"1969":1,"1970":1,"1971":1,"1972":1,"1973":1,"1974":1,"1975":1,"1976":1,"1977":1,"1978":1,"1979":1,"1980":1,"1981":1,"1982":1,"1983":1,"1984":1,"1985":1,"1986":1,"1987":1,"1988":1,"1989":1,"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"1995":1,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2001":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2007":1,"2008":1,"2009":1,"2010":1,"2011":1,"2012":1,"2013":1,"2014":1,"2015":1,"2016":1,"2017":1,"2018":1,"2019":1,"2020":1,"2021":1,"2022":1,"2023":1,"2024":1,"2025":1,"2026":1,"2027":1,"2028":1,"2029":1,"2030":1,"2081":1,"2082":1,"2083":1,"2084":1,"2085":1,"2086":1,"2087":1,"2088":1,"2089":1,"2090":1,"2091":1,"2092":1,"2093":1,"2094":1,"2095":1,"2096":1,"2097":1,"2098":1,"2099":1,"2100":1,"2101":1,"2186":1,"2187":1,"2188":1,"2189":1,"2190":1,"2191":1,"2192":1,"2193":1,"2194":1,"2195":1,"2196":1,"2197":1,"2198":1,"2199":1,"2200":1,"2201":1,"2202":1,"2203":1,"2204":1,"2205":1,"2206":1,"2207":1,"2208":1,"2209":1,"2210":1,"2211":1,"2212":1,"2213":1,"2214":1,"2215":1,"2216":1,"2217":1,"2218":1,"2219":1,"2220":1,"2221":1,"2222":1,"2223":1,"2224":1,"2581":1,"2582":1},"2":{"51":1,"95":2,"113":1,"114":3,"133":3,"134":4,"149":2,"160":2,"176":1,"182":1,"188":1,"191":5,"196":1,"199":3,"211":2,"218":1,"222":2,"230":1,"236":1,"244":2,"248":1,"249":2,"266":3,"277":2,"304":4,"306":1,"307":2,"311":2,"312":2,"314":1,"315":1,"317":1,"318":2,"319":2,"320":1,"321":2,"519":1,"522":4,"526":1,"527":1,"529":1,"533":1,"598":1,"606":1,"636":1,"643":1,"700":1,"1175":1,"1196":1,"1213":1,"1327":1,"1464":1,"1724":1,"1822":1,"1823":2,"1945":1,"2072":2,"2178":1,"2298":1,"2524":1,"2525":1,"2573":1,"2576":9,"2577":1,"2578":1,"2614":1,"2616":1,"2671":1,"2694":1,"2725":2}}],["apps",{"2":{"2183":2}}],["approvals",{"2":{"2569":1}}],["approximately",{"2":{"1807":1,"2226":1}}],["approaching",{"2":{"2551":1,"2552":1,"2704":1}}],["approaches",{"2":{"1265":1}}],["approach",{"2":{"660":1,"1303":1}}],["approachable",{"2":{"455":1,"479":1}}],["appropriately",{"2":{"562":1,"617":1,"684":1,"1873":1,"1876":1}}],["appropriate",{"2":{"36":2,"49":1,"191":1,"232":1,"331":1,"434":1,"477":1,"481":1,"554":1,"607":1,"609":1,"621":1,"1127":1,"1130":1,"1142":1,"1240":1,"1329":1,"1462":1,"1820":1,"1873":2,"1880":1,"2061":1,"2133":1,"2152":1,"2161":1,"2346":1,"2452":1,"2513":1,"2564":1,"2566":1,"2573":1,"2701":1,"2728":1}}],["appreciated",{"2":{"355":1}}],["app",{"0":{"307":1,"308":1,"309":1,"310":1,"319":1},"2":{"319":1,"1270":1,"1272":1,"2355":1,"2392":1,"2450":1,"2468":2}}],["apparently",{"2":{"293":2,"1491":1}}],["appearance",{"2":{"2270":1}}],["appear",{"2":{"317":1,"332":1,"625":1,"1427":1,"2615":1}}],["appears",{"2":{"50":1,"625":1,"626":1,"627":1,"629":1,"1273":1,"2344":1,"2347":1,"2512":2,"2529":1,"2556":1,"2566":1}}],["appended",{"2":{"2231":1,"2238":1}}],["appendix",{"0":{"1450":1},"1":{"1451":1,"1452":1}}],["appending",{"2":{"1312":1,"2309":1}}],["append",{"2":{"211":1,"2566":1,"2752":1}}],["apple",{"2":{"1278":3,"1279":2,"1283":2,"2462":1}}],["applies",{"2":{"454":1,"505":1,"1432":1,"1531":1,"1670":1,"1675":1,"1802":2,"1842":1,"1849":2,"1853":1,"1854":1,"1910":1,"2490":1,"2514":1,"2552":1,"2565":1,"2653":1}}],["applied",{"2":{"233":1,"341":2,"597":1,"1303":1,"1370":1,"1431":1,"1506":1,"1558":1,"1577":1,"1808":1,"2272":1,"2477":1,"2576":2,"2577":1,"2620":1,"2728":1}}],["applicable",{"2":{"199":1,"628":1,"1330":1,"1677":1,"2297":1,"2566":3,"2673":2,"2738":1}}],["application",{"2":{"182":1,"306":1,"311":1,"314":1,"319":1,"414":1,"415":1,"417":1,"423":1,"424":1,"519":1,"820":1,"1272":1,"1802":1,"2230":1,"2231":1,"2235":1,"2237":1,"2238":2,"2240":1,"2242":1,"2243":1,"2244":1,"2245":1,"2247":1,"2249":1,"2327":1,"2351":1,"2355":2,"2392":2,"2452":1,"2495":1}}],["applications",{"2":{"182":1,"1302":2,"1677":1,"2311":1,"2513":1,"2738":1}}],["apply",{"0":{"1447":1,"1448":1},"1":{"1448":1},"2":{"92":1,"199":1,"222":1,"285":1,"331":2,"335":1,"498":1,"663":1,"1220":1,"1224":1,"1226":1,"1229":1,"1230":1,"1302":1,"1326":2,"1336":1,"1346":1,"1412":1,"1431":1,"1447":1,"1448":3,"1464":1,"1467":1,"1469":1,"1470":1,"1506":1,"1518":1,"1942":2,"2046":1,"2112":1,"2113":2,"2272":2,"2411":1,"2525":1,"2566":1}}],["applying",{"2":{"21":1,"2113":1,"2272":1,"2477":3}}],["adherence",{"2":{"2719":1}}],["adhere",{"2":{"2440":1}}],["adheres",{"2":{"2272":1}}],["adhlns",{"2":{"134":1}}],["adequate",{"2":{"2266":1}}],["adelie",{"2":{"211":1}}],["adelais",{"2":{"134":6,"191":1}}],["adj",{"2":{"1813":3,"2137":3}}],["adjusting",{"2":{"1406":1,"1630":1,"1804":1}}],["adjusts",{"2":{"1401":1,"1634":1,"2038":2,"2145":1}}],["adjusted",{"2":{"788":1,"853":1,"887":1,"921":1,"955":1,"989":1,"1091":1,"2617":1}}],["adjustments",{"2":{"2728":1}}],["adjustment",{"0":{"1215":1},"2":{"236":1,"1876":1,"2038":1,"2136":1,"2688":2,"2694":3,"2695":4}}],["adjustable",{"2":{"134":1}}],["adjust",{"2":{"105":4,"149":2,"191":3,"198":1,"211":1,"266":1,"450":1,"556":1,"667":1,"789":1,"790":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1226":1,"1227":1,"1332":1,"1343":1,"1401":1,"1549":2,"1803":1,"1804":1,"1805":1,"1853":1,"1854":1,"1859":1,"1876":1,"1878":1,"1950":1,"2043":1,"2064":2,"2145":1,"2172":2,"2173":2,"2174":4,"2175":6,"2541":1,"2604":4,"2606":2,"2728":1}}],["ad",{"2":{"758":1,"787":1,"819":1}}],["administrator",{"2":{"628":1,"2183":1}}],["adm42",{"2":{"226":2,"236":1}}],["advice",{"2":{"2564":1}}],["advised",{"2":{"1125":1,"1128":1,"1398":1,"2497":1}}],["adventurous",{"2":{"1518":1}}],["advertised",{"2":{"537":1}}],["advantageous",{"2":{"2584":1}}],["advantages",{"2":{"1125":1,"1128":1,"2492":1,"2503":1,"2508":1}}],["advantage",{"2":{"93":1,"606":1,"1672":1,"2315":1}}],["advances",{"2":{"1822":8,"2143":8}}],["advanced",{"0":{"602":1,"697":1,"1135":1,"1304":1,"1340":1,"1360":1,"1364":1,"1374":1,"1497":1,"1509":1,"1513":1,"1667":1,"1672":1,"1780":1,"1783":1,"1790":1,"1859":1,"1872":1,"1875":1,"2025":1,"2028":1,"2170":1,"2725":1},"1":{"603":1,"604":1,"1136":1,"1137":1,"1305":1,"1306":1,"1307":1,"1308":1,"1309":1,"1365":1,"1366":1,"1367":1,"1368":1,"1369":1,"1370":1,"1371":1,"1372":1,"1373":1,"1375":1,"1514":1,"1515":1,"1516":1,"1517":1,"1518":1,"1519":1,"1520":1,"1521":1,"1522":1,"1523":1,"1524":1,"1525":1,"1668":1,"1673":1,"1674":1,"1675":1,"1791":1,"1792":1,"1873":1,"1874":1,"1875":1,"1876":2,"1877":2,"1878":1},"2":{"49":1,"63":1,"93":1,"149":1,"249":1,"504":1,"505":1,"540":1,"547":1,"697":2,"1135":1,"1230":2,"1265":1,"1301":1,"1303":1,"1340":1,"1364":1,"1404":1,"1509":2,"1670":1,"1733":2,"1787":2,"1790":2,"1842":1,"1859":1,"1872":1,"1957":2,"1958":3,"1959":2,"2161":3,"2162":1,"2167":1,"2169":3,"2170":2,"2171":1,"2277":1,"2314":1,"2348":1,"2459":1,"2523":1,"2543":1,"2566":1,"2571":1,"2723":1,"2724":1,"2725":2,"2753":1}}],["advance",{"0":{"2720":1},"2":{"30":1,"33":1,"322":1,"334":1,"1822":3,"2143":3,"2720":1}}],["adopted",{"2":{"470":1}}],["adoption",{"2":{"128":1}}],["adkb96",{"2":{"253":2}}],["adpenrose",{"2":{"211":2}}],["ad65",{"2":{"211":1}}],["adns9800",{"0":{"273":1,"276":1},"2":{"118":1,"149":1,"273":3,"276":1,"277":1,"1835":6}}],["adns",{"0":{"1834":1,"1835":1},"2":{"118":2,"1834":2,"1835":2}}],["adns5050",{"2":{"118":1,"1834":4}}],["adcconfig",{"2":{"1842":5}}],["adc6",{"2":{"638":1}}],["adcrpenablets",{"2":{"636":1}}],["adcd1",{"2":{"636":2}}],["adc3",{"2":{"635":3}}],["adc2",{"2":{"635":2}}],["adc1",{"2":{"635":1,"639":1}}],["adcv3",{"2":{"635":1}}],["adcv1",{"2":{"635":1}}],["adcs",{"2":{"635":2,"639":2}}],["adc",{"0":{"630":1},"1":{"631":1,"632":1,"633":1,"634":1,"635":1,"636":1,"637":1,"638":1,"639":1,"640":1,"641":1},"2":{"93":1,"191":2,"234":2,"249":1,"630":1,"633":2,"635":7,"636":3,"638":5,"639":11,"641":12,"1630":2,"1631":1,"1632":1,"1633":2,"1836":1,"1842":5,"2531":1}}],["adb",{"2":{"75":1,"1279":2}}],["adalyn",{"2":{"143":2}}],["adafruitble",{"0":{"142":1},"2":{"142":1,"149":1}}],["adafruit",{"0":{"1317":1,"1492":1},"2":{"50":2,"133":1,"134":2,"142":1,"163":1,"176":3,"487":1,"629":3,"684":1,"685":1,"1315":1,"1318":1,"1321":1,"1491":1,"1492":4,"1573":1,"2335":1,"2339":1,"2344":3,"2541":1,"2566":1,"2712":1}}],["adapting",{"2":{"2309":1}}],["adapter",{"2":{"322":1,"2299":1}}],["adapted",{"2":{"179":1}}],["adapt",{"2":{"32":1,"191":1}}],["addenda",{"0":{"1498":1}}],["added",{"2":{"14":1,"49":8,"63":1,"67":1,"72":2,"74":1,"81":1,"82":1,"86":1,"93":1,"112":1,"114":2,"132":1,"134":1,"149":4,"153":1,"154":1,"158":1,"160":1,"173":1,"175":2,"176":8,"189":1,"191":2,"196":1,"201":1,"202":1,"203":1,"211":1,"222":2,"230":1,"231":1,"234":3,"236":3,"243":1,"249":2,"266":2,"277":1,"341":1,"393":1,"435":1,"450":1,"513":1,"554":1,"621":1,"1133":1,"1239":1,"1347":1,"1361":1,"1376":1,"1377":3,"1379":1,"1398":1,"1431":1,"1446":1,"1455":1,"1548":1,"1554":1,"1559":1,"1674":2,"1685":2,"1696":1,"1820":1,"1850":1,"1869":1,"2035":1,"2134":1,"2218":1,"2270":1,"2284":1,"2447":2,"2479":1,"2508":1,"2564":1,"2567":2,"2670":1}}],["addr2",{"2":{"851":1,"886":1,"1022":1,"1056":1,"1090":1}}],["addr1",{"2":{"851":1,"886":1,"1022":1,"1056":1,"1090":1}}],["addr",{"2":{"236":1,"684":1,"920":1,"954":1,"988":1,"1146":1,"1842":1,"2353":8}}],["addressed",{"2":{"685":1,"694":1}}],["addresses",{"2":{"236":1,"249":1,"671":1,"701":2,"736":1,"758":1,"762":1,"787":1,"794":1,"819":1,"824":1,"851":1,"859":1,"886":1,"893":1,"920":1,"927":1,"954":1,"961":1,"988":1,"995":1,"1022":1,"1029":1,"1056":1,"1063":1,"1090":1,"1097":1,"1146":1,"1150":1,"1934":1}}],["addressable",{"2":{"642":1,"1212":2,"2031":2}}],["addressing",{"0":{"701":1,"732":1,"758":1,"787":1,"819":1,"851":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1056":1,"1090":1,"1146":1},"2":{"198":1,"201":1,"213":1,"224":1,"238":1,"554":1,"701":1,"1821":1,"2059":1,"2286":1}}],["address",{"0":{"708":1,"711":1,"726":2,"1626":2,"1628":2},"1":{"709":1,"710":1,"712":1,"713":1,"727":2,"728":2,"1627":2,"1629":2},"2":{"50":1,"73":1,"114":2,"191":1,"236":1,"520":1,"521":1,"522":1,"554":1,"611":2,"672":3,"684":9,"685":1,"688":1,"694":2,"701":4,"709":2,"712":2,"714":1,"715":2,"717":1,"718":2,"720":1,"721":2,"723":1,"724":2,"726":2,"727":2,"732":2,"737":4,"740":1,"757":8,"758":5,"763":4,"767":1,"786":8,"787":5,"795":4,"799":1,"818":8,"819":5,"825":4,"829":1,"850":8,"851":17,"860":4,"864":1,"885":8,"886":17,"894":4,"898":1,"919":8,"920":5,"928":4,"932":1,"953":8,"954":5,"962":4,"966":1,"987":8,"988":5,"996":4,"1000":1,"1021":8,"1022":17,"1030":4,"1034":1,"1055":8,"1056":17,"1064":4,"1068":1,"1089":8,"1090":17,"1098":4,"1102":1,"1145":8,"1146":5,"1151":4,"1155":1,"1220":2,"1355":1,"1621":2,"1626":1,"1627":2,"1628":1,"1629":2,"1818":2,"1821":1,"1838":2,"1842":1,"1847":2,"2289":1,"2351":1,"2353":1,"2533":1,"2576":2,"2700":2}}],["additive",{"0":{"658":1,"1393":1},"2":{"222":3,"236":2,"249":1,"656":1,"660":2,"663":1,"1390":1,"1393":2,"1397":1,"2676":1}}],["addition",{"2":{"114":1,"176":1,"194":1,"211":34,"249":1,"1300":1,"1341":1,"1360":1,"1526":1,"1666":1,"1722":1,"1733":1,"1957":1,"2060":1,"2112":1,"2146":1,"2161":1,"2276":1,"2395":1,"2721":1,"2729":2}}],["additionally",{"2":{"67":1,"86":1,"175":1,"209":1,"262":1,"529":1,"592":1,"657":1,"658":1,"1262":1,"1331":1,"1332":1,"1379":1,"1380":1,"1398":1,"1412":1,"1439":1,"1442":1,"1447":1,"1495":1,"1549":1,"1556":1,"1557":1,"1558":1,"1567":1,"1660":1,"1661":1,"1662":1,"1791":1,"1844":1,"1855":1,"1864":1,"2171":1,"2228":1,"2231":1,"2238":1,"2351":1,"2398":1,"2411":1,"2441":1,"2490":1,"2569":1,"2617":1}}],["additional",{"0":{"535":1,"1730":1,"1870":1,"1909":1,"1943":1,"1954":1,"2134":1,"2419":1,"2520":1,"2560":1},"1":{"1871":1,"1910":1,"1911":1,"1912":1,"1913":1,"1914":1,"1915":1,"1916":1,"1917":1,"2521":1,"2522":1,"2561":1,"2562":1},"2":{"50":1,"86":2,"94":1,"114":1,"134":1,"176":1,"189":1,"191":3,"198":1,"201":1,"210":1,"211":1,"213":1,"236":1,"429":1,"496":1,"564":1,"641":1,"1138":1,"1142":1,"1251":1,"1262":1,"1319":1,"1323":1,"1324":1,"1325":1,"1335":1,"1341":1,"1364":1,"1377":2,"1447":1,"1449":1,"1453":1,"1497":3,"1554":1,"1556":1,"1589":1,"1659":1,"1662":1,"1728":1,"1808":1,"1820":1,"1834":1,"1846":1,"1848":1,"1853":2,"1863":1,"1864":1,"1869":1,"1874":1,"1877":1,"1929":1,"1933":1,"1936":1,"1943":1,"1949":2,"2032":1,"2036":1,"2037":1,"2114":1,"2128":1,"2129":1,"2170":1,"2177":1,"2178":1,"2230":1,"2235":1,"2238":1,"2262":1,"2280":1,"2284":1,"2299":1,"2302":3,"2416":1,"2564":1,"2606":1,"2705":1,"2706":1,"2749":1,"2753":2}}],["additions",{"0":{"49":1,"63":1,"74":1,"93":1},"2":{"149":1,"211":147,"222":1,"236":1,"249":1,"2257":1}}],["adding",{"0":{"14":1,"528":1,"608":1,"1799":1,"1869":1,"2445":1,"2446":1,"2550":1,"2551":1,"2552":1,"2553":1,"2753":1},"1":{"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"1800":1,"1801":1,"1870":1,"1871":1,"2554":1,"2555":1,"2556":1,"2557":1,"2558":1,"2559":1,"2560":1,"2561":1,"2562":1},"2":{"74":1,"86":1,"99":1,"114":1,"173":1,"201":1,"213":1,"236":1,"249":1,"266":1,"277":1,"370":1,"441":1,"533":1,"537":1,"570":1,"608":1,"609":1,"613":1,"669":1,"688":1,"734":1,"760":1,"788":1,"792":1,"822":1,"853":1,"857":1,"887":1,"891":1,"921":1,"925":1,"955":1,"959":1,"989":1,"993":1,"1027":1,"1061":1,"1091":1,"1095":1,"1148":1,"1216":1,"1264":1,"1265":1,"1276":1,"1320":1,"1329":1,"1335":1,"1359":2,"1393":1,"1414":1,"1430":1,"1446":1,"1501":1,"1503":1,"1508":1,"1527":1,"1547":1,"1554":1,"1557":1,"1682":1,"1787":1,"1813":1,"1850":1,"1869":1,"1870":2,"1874":1,"1917":1,"1920":1,"1932":1,"2031":1,"2124":1,"2125":1,"2129":1,"2137":1,"2161":1,"2182":1,"2225":1,"2255":2,"2263":1,"2280":1,"2443":1,"2480":1,"2491":1,"2513":1,"2544":1,"2546":1,"2550":2,"2566":1,"2567":2,"2576":10,"2706":1,"2707":2,"2727":1,"2735":1,"2736":1,"2753":1,"2757":2}}],["add",{"0":{"35":1,"163":1,"173":1,"393":1,"609":1,"610":1,"613":1,"614":1,"1263":1,"1694":1,"1871":1,"1886":1,"2216":1,"2436":1,"2437":1},"1":{"36":1,"611":1,"612":1,"1264":1,"1695":1,"1696":1,"1887":1,"2217":1,"2218":1},"2":{"28":1,"31":1,"32":2,"34":2,"49":4,"63":5,"65":4,"70":1,"74":5,"76":2,"77":2,"92":1,"93":24,"110":2,"114":38,"119":1,"123":1,"130":2,"133":2,"134":26,"149":21,"160":21,"175":1,"176":33,"189":4,"190":1,"191":27,"199":25,"202":2,"211":25,"221":1,"222":18,"235":1,"236":30,"249":23,"266":15,"273":1,"277":7,"282":6,"341":1,"349":1,"358":1,"359":1,"393":2,"436":1,"446":1,"450":1,"451":1,"453":1,"481":1,"513":2,"528":1,"530":1,"534":1,"537":1,"554":4,"564":2,"565":2,"566":2,"588":2,"607":6,"609":1,"610":1,"613":1,"614":1,"621":2,"631":1,"643":1,"644":1,"665":1,"666":1,"667":1,"700":1,"730":1,"731":1,"756":1,"757":1,"785":1,"786":1,"789":1,"790":1,"817":1,"818":1,"820":1,"849":1,"850":1,"854":1,"855":1,"884":1,"885":1,"888":1,"889":1,"918":1,"919":1,"922":1,"923":1,"952":1,"953":1,"956":1,"957":1,"986":1,"987":1,"990":1,"991":1,"1020":1,"1021":1,"1024":1,"1025":1,"1054":1,"1055":1,"1058":1,"1059":1,"1088":1,"1089":1,"1092":1,"1093":1,"1124":1,"1132":2,"1133":2,"1138":1,"1142":1,"1144":1,"1145":1,"1175":1,"1196":1,"1213":1,"1214":1,"1217":1,"1225":1,"1227":1,"1228":1,"1234":1,"1245":1,"1252":1,"1253":1,"1278":1,"1284":1,"1294":1,"1300":3,"1312":1,"1314":1,"1316":1,"1330":1,"1332":4,"1344":1,"1355":1,"1359":1,"1375":1,"1377":4,"1378":1,"1379":1,"1383":3,"1384":2,"1385":7,"1386":1,"1390":1,"1391":1,"1397":1,"1398":1,"1403":2,"1405":2,"1406":1,"1413":1,"1416":3,"1423":1,"1430":1,"1431":1,"1435":1,"1439":1,"1447":1,"1457":1,"1458":1,"1459":1,"1493":1,"1495":1,"1496":1,"1497":1,"1500":3,"1506":2,"1508":1,"1511":1,"1527":1,"1532":1,"1548":1,"1553":1,"1555":1,"1556":1,"1559":2,"1590":1,"1591":1,"1593":1,"1631":1,"1657":1,"1679":2,"1683":1,"1684":1,"1685":1,"1694":1,"1695":1,"1724":1,"1729":2,"1789":1,"1790":1,"1800":1,"1812":1,"1825":1,"1830":2,"1832":1,"1834":1,"1835":1,"1836":1,"1837":1,"1841":1,"1846":1,"1847":1,"1848":1,"1849":2,"1863":1,"1874":1,"1882":1,"1916":1,"1919":1,"1930":1,"1932":1,"1933":1,"1945":1,"1951":1,"1952":2,"1953":1,"2032":1,"2037":1,"2045":1,"2046":1,"2058":1,"2068":1,"2073":1,"2074":1,"2078":1,"2103":1,"2121":2,"2124":1,"2125":2,"2126":1,"2127":2,"2129":1,"2130":1,"2131":1,"2133":1,"2137":1,"2145":2,"2146":1,"2147":1,"2148":1,"2149":1,"2164":3,"2169":3,"2170":2,"2171":1,"2172":1,"2174":1,"2178":1,"2179":1,"2180":1,"2181":4,"2182":1,"2183":3,"2216":1,"2217":1,"2231":1,"2238":1,"2255":3,"2262":2,"2276":1,"2309":1,"2348":1,"2414":1,"2423":1,"2424":1,"2437":1,"2438":2,"2446":4,"2475":2,"2477":2,"2479":3,"2480":5,"2508":1,"2539":1,"2542":1,"2566":1,"2573":1,"2574":1,"2577":4,"2579":1,"2584":1,"2601":1,"2606":2,"2608":1,"2702":1,"2705":1,"2706":2,"2709":2,"2711":1,"2727":2,"2728":1,"2735":2,"2736":2,"2737":3,"2738":3,"2753":2,"2755":1,"2757":7}}],["adds",{"2":{"13":1,"35":1,"49":2,"50":1,"74":1,"107":1,"114":1,"173":1,"222":1,"229":1,"249":1,"277":1,"384":1,"393":1,"506":1,"1385":1,"1406":1,"1451":1,"2130":1,"2145":1,"2161":1,"2230":1,"2480":1,"2513":1}}],["agin",{"2":{"2355":1,"2392":1}}],["age",{"2":{"1325":1}}],["ag",{"2":{"1300":1,"1398":4,"1399":8,"2370":7,"2396":7}}],["agaim",{"2":{"592":1}}],["again",{"2":{"114":1,"134":1,"149":1,"340":1,"504":1,"537":1,"627":2,"1243":1,"1375":1,"1396":1,"1411":1,"1439":1,"1452":1,"1524":1,"1534":1,"1553":2,"1651":2,"1653":1,"1665":1,"1671":1,"1674":1,"1675":1,"1865":1,"1937":1,"1940":2,"2044":1,"2128":1,"2161":1,"2162":1,"2234":1,"2261":1,"2311":1,"2353":1,"2355":4,"2366":1,"2392":4,"2467":1,"2490":1,"2566":1}}],["against",{"2":{"26":1,"49":1,"51":1,"134":1,"176":1,"251":1,"263":1,"265":2,"275":1,"343":1,"349":1,"350":1,"400":2,"435":1,"530":1,"684":1,"1441":1,"2259":1,"2272":1,"2347":1,"2477":1,"2563":1,"2568":1,"2667":1,"2719":1,"2748":1}}],["agreed",{"2":{"204":1,"2546":1}}],["agnostic",{"0":{"1350":1},"1":{"1351":1,"1352":1},"2":{"17":1,"114":1,"695":1,"1352":1}}],["abab",{"0":{"2733":1}}],["abba",{"0":{"2732":1}}],["abbreviate",{"2":{"460":1}}],["abbreviations",{"2":{"460":1,"1499":1}}],["abbreviation",{"2":{"460":1,"2533":1}}],["abuse",{"2":{"2566":1}}],["abuser",{"2":{"562":1}}],["ab5",{"2":{"1793":1,"2371":1}}],["ab4",{"2":{"1793":1,"2371":1}}],["ab3",{"2":{"1793":1,"2371":1}}],["ab375d3",{"2":{"74":1}}],["ab2",{"2":{"1793":1,"2371":1}}],["ab1",{"2":{"1793":1,"2371":1}}],["ab",{"2":{"1511":4,"1523":5,"1527":1,"1793":1,"2371":1,"2731":6,"2732":1,"2733":4}}],["abcd",{"2":{"266":1,"1254":2}}],["abcminiuser",{"2":{"12":1}}],["abort",{"2":{"2477":2}}],["aborted",{"2":{"703":1}}],["above",{"2":{"228":1,"233":1,"266":1,"276":1,"317":1,"349":1,"352":1,"366":1,"432":1,"454":1,"458":1,"530":1,"532":1,"560":1,"588":1,"597":1,"598":1,"613":1,"694":1,"698":2,"1215":1,"1255":1,"1271":1,"1287":1,"1332":5,"1335":1,"1338":1,"1363":1,"1385":1,"1416":2,"1451":4,"1464":1,"1518":1,"1573":1,"1715":1,"1794":1,"1838":1,"1843":1,"1850":1,"1852":1,"1854":1,"1876":1,"1878":1,"1932":1,"1941":1,"2043":1,"2044":1,"2051":1,"2113":2,"2128":1,"2133":1,"2155":1,"2161":1,"2170":1,"2171":4,"2181":1,"2183":1,"2230":1,"2261":1,"2268":2,"2299":1,"2303":1,"2350":1,"2353":1,"2403":1,"2421":1,"2438":1,"2450":1,"2469":1,"2513":2,"2521":1,"2548":1,"2553":1,"2559":1,"2566":1,"2567":1,"2576":2,"2577":4,"2588":1,"2589":1,"2728":1,"2734":3,"2735":3,"2736":1,"2746":1,"2747":1,"2748":1}}],["about",{"2":{"49":1,"50":1,"93":1,"110":1,"114":1,"160":1,"176":1,"240":1,"251":1,"315":1,"347":1,"352":1,"378":2,"481":2,"492":1,"511":6,"512":1,"519":1,"551":2,"554":2,"560":1,"561":1,"567":2,"573":1,"585":1,"606":1,"701":1,"1237":1,"1244":1,"1264":1,"1266":1,"1301":1,"1312":1,"1335":1,"1450":1,"1553":1,"1803":1,"1821":2,"1830":2,"1842":1,"1943":1,"2039":1,"2114":1,"2128":6,"2152":3,"2255":1,"2267":1,"2276":1,"2305":1,"2355":1,"2407":1,"2418":1,"2440":1,"2509":1,"2513":1,"2566":2,"2578":1,"2671":2,"2672":1,"2723":1,"2724":1,"2748":2}}],["abstracted",{"2":{"2523":1}}],["abstracting",{"2":{"2263":2}}],["abstraction",{"2":{"249":1,"277":1,"695":1,"697":1,"1724":1,"1945":1,"2546":1,"2564":1,"2644":1}}],["abstractions",{"2":{"244":1,"2564":2}}],["absence",{"2":{"657":1,"1122":1}}],["absent",{"2":{"374":2,"2688":1,"2694":1,"2695":1}}],["absinthe",{"2":{"159":2}}],["absolutely",{"2":{"2276":1,"2566":1}}],["absolute",{"0":{"1843":1,"1844":1},"2":{"100":1,"114":1,"405":1,"1531":1,"1545":1,"1842":4,"2105":1,"2347":1,"2686":4}}],["abelx",{"2":{"134":1}}],["ability",{"2":{"49":2,"65":1,"93":1,"100":1,"114":1,"131":1,"134":1,"153":1,"160":1,"164":1,"173":1,"174":1,"176":1,"199":1,"506":1,"596":1,"703":1,"1130":1,"1302":2,"1334":1,"1554":1,"2031":1,"2035":1,"2130":1,"2131":1,"2513":1,"2718":1,"2719":1,"2737":3}}],["able",{"2":{"23":1,"50":1,"114":1,"153":2,"228":1,"350":1,"441":1,"537":1,"542":1,"554":1,"560":1,"567":1,"570":1,"627":1,"1243":1,"1326":1,"1331":1,"1348":1,"1353":1,"1376":1,"1454":1,"1573":2,"1654":1,"1655":1,"1672":1,"1684":1,"1787":1,"1859":1,"1912":1,"1921":1,"2032":1,"2061":1,"2146":1,"2150":1,"2157":1,"2162":1,"2171":1,"2228":1,"2229":1,"2245":1,"2247":1,"2249":1,"2255":1,"2318":1,"2450":1,"2457":1,"2469":1,"2494":1,"2495":1,"2513":1,"2548":2,"2549":1,"2576":1,"2605":1,"2701":1,"2723":1,"2725":1,"2755":1}}],["abnt2",{"2":{"5":1,"1355":1,"2703":2}}],["acl2",{"2":{"1801":1,"1805":7,"1806":2,"2372":1}}],["acl1",{"2":{"1801":1,"1805":8,"1806":2,"2372":1}}],["acl0",{"2":{"1801":1,"1805":7,"1806":2,"2372":1}}],["achievable",{"2":{"2718":1}}],["achieved",{"2":{"1821":1,"2577":1,"2701":1}}],["achieve",{"2":{"1666":1,"2064":1,"2169":1,"2268":1,"2270":1,"2576":1}}],["acheron",{"2":{"211":2}}],["acm=y",{"2":{"1240":1}}],["acm",{"2":{"1240":1}}],["acknowledge",{"2":{"506":1,"2044":1}}],["acquire",{"2":{"277":1,"2252":1}}],["ac",{"2":{"236":1,"1359":1,"1439":1,"1442":1,"1443":3,"2079":1,"2359":3}}],["acid",{"2":{"211":1}}],["acid3",{"2":{"143":13,"149":2}}],["acr60",{"0":{"256":1},"1":{"257":1,"258":1,"259":1,"260":1},"2":{"143":2,"256":1,"266":1}}],["across",{"2":{"31":1,"34":1,"118":1,"128":1,"137":1,"138":1,"167":1,"246":1,"262":1,"695":1,"1451":1,"1594":1,"2177":1,"2735":1}}],["accident",{"2":{"2728":1}}],["accidental",{"2":{"246":1,"1368":1,"1514":1,"1520":1}}],["accidentally",{"2":{"194":1,"198":1,"627":1,"1921":1,"2305":1}}],["accumulates",{"2":{"2044":1}}],["accumulate",{"2":{"1859":1}}],["accumulated",{"2":{"1859":13}}],["accuracy",{"2":{"1806":1,"2144":1}}],["accurately",{"2":{"1725":1,"1946":1,"2556":1}}],["accurate",{"2":{"10":1,"1125":1,"1128":1,"1217":1,"2226":1,"2311":1}}],["accomidate",{"2":{"1399":1}}],["accompanying",{"2":{"2567":1}}],["accompanied",{"2":{"118":1,"1414":1,"2721":1}}],["accomplish",{"2":{"1312":1,"1336":1,"2162":1,"2411":1,"2418":1}}],["accomplished",{"2":{"540":1}}],["accommodate",{"2":{"149":1,"1515":1}}],["accounted",{"2":{"1215":1}}],["account",{"2":{"149":1,"211":1,"222":1,"554":2,"2255":2,"2306":1,"2351":1,"2429":2,"2432":1,"2443":1,"2472":2}}],["according",{"2":{"134":2,"638":1,"639":1,"1881":1,"1950":1,"2300":1,"2436":1,"2454":1}}],["accordingly",{"2":{"126":1,"220":1,"278":1,"852":1,"1023":1,"1057":1,"2171":1,"2299":1,"2541":1,"2550":1}}],["accented",{"2":{"2702":1}}],["accel",{"2":{"1805":3}}],["accelerating",{"2":{"1804":1}}],["acceleration",{"2":{"48":2,"1801":6,"1802":1,"1803":4,"1804":3,"1805":1,"1806":4,"1807":1,"1808":4,"1917":1,"2372":6}}],["accelerate",{"2":{"2273":1,"2749":1}}],["accelerates",{"2":{"1802":4,"1807":1}}],["accelerated",{"0":{"1803":1},"2":{"1802":1,"1803":1,"1804":5,"1806":2,"1807":1}}],["accel2",{"2":{"231":1}}],["accessor",{"2":{"2577":2}}],["accessible",{"2":{"1270":1,"2276":1}}],["accessing",{"2":{"317":1,"1300":1,"2463":1,"2577":2}}],["accessed",{"2":{"501":1,"1300":1}}],["accesses",{"2":{"114":1}}],["access",{"2":{"222":1,"240":1,"328":1,"430":2,"433":1,"436":4,"441":1,"479":1,"597":1,"611":2,"633":1,"695":1,"1254":1,"1331":1,"1353":1,"1555":1,"1668":1,"1791":1,"2262":4,"2396":1,"2432":1,"2438":2,"2506":1,"2510":2,"2566":1,"2605":2,"2728":2}}],["acceptable",{"2":{"2564":1,"2566":1}}],["acceptance",{"2":{"341":1}}],["accepts",{"2":{"340":1,"374":1,"405":1,"522":1,"2575":1,"2577":2}}],["accepted",{"2":{"201":1,"265":1,"341":1,"550":1,"556":1,"1376":1,"2565":1,"2566":3}}],["accepting",{"2":{"199":1,"213":1,"224":1,"549":1,"1265":1,"2303":1,"2551":1,"2552":1}}],["accept",{"2":{"173":1,"453":1,"1335":1,"1615":1,"2075":1,"2255":1,"2263":1,"2307":1,"2347":1,"2410":1,"2566":1}}],["acts",{"2":{"2367":1,"2410":1,"2654":1}}],["actor",{"2":{"2437":3}}],["acto",{"2":{"2133":1}}],["act",{"2":{"681":1,"1300":1,"1499":1,"1874":1,"1932":1,"2168":1,"2311":1,"2479":1,"2490":2}}],["actuators",{"2":{"1577":1}}],["actuated",{"2":{"1573":4,"2279":1}}],["actuation",{"2":{"236":1,"1573":1}}],["actual",{"2":{"305":1,"335":1,"571":1,"573":1,"592":1,"1293":1,"1302":1,"1720":1,"1815":1,"1842":1,"1921":1,"2060":1,"2139":1,"2152":1,"2321":1,"2323":1,"2327":1,"2341":1,"2699":1,"2745":1,"2751":1}}],["actually",{"2":{"13":1,"28":1,"51":1,"83":1,"182":1,"396":1,"484":1,"527":1,"556":1,"635":1,"685":1,"689":1,"1260":1,"1267":1,"1272":1,"1278":1,"1283":1,"1325":1,"1336":1,"1383":1,"1384":1,"1442":1,"1821":1,"1855":1,"2072":1,"2075":1,"2118":1,"2119":1,"2152":1,"2169":1,"2279":2,"2321":1,"2324":2,"2348":1,"2550":1,"2602":1,"2614":1,"2701":2,"2728":1,"2740":1,"2757":1}}],["activating",{"2":{"246":1,"1335":1,"1671":3,"1864":1,"1917":1,"2535":1,"2737":1}}],["activation",{"0":{"246":1,"1519":1,"1673":1,"1879":1},"2":{"152":1,"246":1,"1302":1,"1303":1,"1368":1,"1500":1,"1573":2,"1668":1,"1670":1,"1671":3,"1673":1,"1868":2,"1873":2,"1879":6,"1880":1,"2107":2}}],["activates",{"2":{"1335":6,"1340":1,"1359":1,"1507":1,"1659":1,"1668":1,"1851":1,"2172":1,"2367":1,"2407":1,"2539":1}}],["activate",{"0":{"1865":1},"2":{"194":2,"211":1,"556":1,"1124":1,"1127":1,"1130":1,"1132":2,"1133":2,"1235":1,"1335":1,"1340":1,"1386":1,"1499":1,"1500":6,"1501":1,"1510":2,"1517":1,"1518":2,"1519":1,"1521":1,"1523":1,"1530":1,"1582":2,"1655":1,"1661":1,"1665":2,"1670":3,"1671":1,"1673":4,"1864":3,"1879":1,"2107":3,"2146":1,"2183":1,"2408":1,"2410":1,"2490":1,"2539":1,"2605":1,"2645":1,"2680":2,"2728":1,"2737":1}}],["activated",{"2":{"73":1,"236":1,"1335":4,"1340":1,"1359":1,"1398":1,"1399":2,"1459":1,"1501":1,"1515":1,"1522":1,"1523":1,"1573":1,"1670":3,"1673":1,"1805":1,"1879":1,"2046":1,"2311":1,"2539":1,"2541":1}}],["actively",{"2":{"2409":1}}],["active",{"0":{"1693":1,"1877":1,"2212":1},"1":{"2213":1},"2":{"105":8,"149":1,"191":1,"199":1,"249":1,"537":1,"1300":3,"1302":2,"1303":2,"1335":4,"1338":1,"1340":2,"1341":2,"1345":1,"1364":1,"1375":5,"1397":1,"1446":2,"1499":1,"1504":1,"1506":1,"1507":3,"1524":1,"1549":7,"1570":4,"1573":3,"1579":1,"1582":1,"1670":3,"1693":1,"1805":2,"1851":3,"1859":2,"1864":1,"1868":1,"1871":1,"1873":2,"1876":2,"1879":2,"1880":1,"1929":1,"1933":1,"2041":1,"2042":4,"2106":1,"2107":4,"2129":1,"2131":1,"2162":2,"2171":3,"2187":1,"2212":1,"2213":1,"2367":1,"2403":2,"2408":1,"2414":1,"2490":1,"2491":1,"2644":1,"2699":1}}],["activity",{"2":{"74":2,"211":2,"249":1,"588":5,"2067":1,"2071":2,"2129":3,"2518":1,"2688":1,"2695":1,"2697":2}}],["acting",{"2":{"14":1,"2610":1}}],["actioned",{"2":{"16":1}}],["actions",{"0":{"3":1,"7":1,"15":1,"1801":1,"2448":1},"2":{"3":2,"7":3,"15":2,"16":1,"38":1,"114":2,"134":2,"247":1,"340":1,"347":1,"355":1,"515":1,"520":1,"521":1,"1275":1,"1325":1,"1332":1,"1357":1,"1464":1,"1508":1,"1511":1,"1655":2,"1670":2,"1677":1,"1799":1,"1801":1,"1826":1,"2066":1,"2161":3,"2164":1,"2166":1,"2167":1,"2168":2,"2169":1,"2170":1,"2171":3,"2319":1,"2402":1,"2429":1,"2437":3,"2439":1,"2440":1,"2441":1,"2442":1,"2446":1,"2448":1,"2462":1,"2502":1,"2571":1,"2729":1,"2738":1}}],["action",{"0":{"3":1,"7":1,"15":1,"40":1,"53":1,"67":1,"72":1,"85":1,"101":1,"121":1,"139":1,"140":1,"155":1,"165":1,"180":1,"193":1,"205":1,"216":1,"225":1,"239":1,"252":1,"269":1,"2154":1,"2437":1},"1":{"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"86":1,"87":1,"88":1,"89":1,"90":1,"102":1,"103":1,"104":1,"105":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"140":1,"141":1,"142":1,"143":1,"156":1,"157":1,"158":1,"159":1,"166":1,"167":1,"168":1,"169":1,"170":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"194":1,"195":1,"196":1,"197":1,"206":1,"207":1,"217":1,"218":1,"219":1,"220":1,"221":1,"226":1,"240":1,"241":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"270":1,"271":1,"272":1,"273":1,"2155":1,"2156":1,"2157":1,"2158":1},"2":{"16":1,"38":9,"49":1,"75":2,"120":7,"140":1,"149":2,"199":6,"203":1,"211":1,"291":1,"352":3,"428":1,"503":3,"505":1,"506":1,"520":1,"529":1,"546":1,"627":1,"1340":1,"1354":7,"1357":9,"1385":1,"1431":2,"1446":3,"1508":1,"1511":3,"1527":2,"1654":1,"1668":1,"1670":2,"1676":1,"1677":2,"1802":1,"1803":1,"1805":4,"1929":1,"1932":1,"1934":1,"2044":1,"2154":2,"2161":12,"2162":2,"2164":2,"2166":2,"2167":4,"2168":9,"2169":6,"2170":2,"2171":4,"2401":5,"2406":1,"2428":1,"2508":1,"2651":1,"2705":2,"2706":2,"2708":1,"2729":6,"2735":7,"2736":5,"2738":2,"2749":1}}],["averages",{"2":{"2569":1}}],["average",{"2":{"2225":1,"2226":2,"2727":1}}],["avail",{"2":{"2450":1}}],["availability",{"2":{"624":1,"2566":1}}],["available",{"0":{"1210":1,"2285":1},"1":{"1211":1,"2286":1,"2287":1,"2288":1,"2289":1,"2290":1,"2291":1},"2":{"10":1,"73":1,"83":1,"124":2,"153":1,"160":1,"164":1,"186":1,"189":1,"202":1,"210":1,"211":1,"213":1,"232":2,"235":1,"308":1,"315":1,"317":1,"349":1,"371":1,"375":1,"385":1,"411":3,"429":1,"451":1,"497":1,"511":4,"516":1,"519":1,"526":1,"556":1,"606":1,"609":1,"624":1,"641":1,"654":1,"656":1,"684":1,"685":1,"689":2,"732":1,"1121":1,"1125":1,"1130":1,"1134":1,"1140":1,"1141":1,"1142":1,"1195":1,"1234":1,"1246":1,"1249":1,"1265":1,"1267":2,"1270":1,"1311":1,"1319":1,"1325":1,"1355":1,"1377":1,"1384":1,"1397":1,"1398":2,"1402":1,"1403":2,"1406":1,"1445":1,"1512":1,"1570":2,"1662":1,"1728":1,"1824":1,"1850":1,"1852":1,"1854":1,"1902":1,"1908":1,"1912":1,"1949":1,"2063":1,"2149":1,"2225":2,"2229":1,"2230":1,"2232":1,"2233":1,"2234":1,"2235":1,"2238":1,"2239":1,"2241":1,"2244":1,"2245":2,"2247":2,"2249":2,"2262":2,"2272":1,"2278":1,"2295":1,"2297":1,"2303":1,"2325":1,"2327":1,"2346":1,"2354":1,"2451":1,"2459":1,"2468":1,"2514":1,"2526":1,"2543":1,"2555":1,"2561":1,"2562":1,"2566":1,"2577":6,"2702":1,"2709":1}}],["avalon",{"2":{"211":1}}],["avoids",{"2":{"1344":1,"2428":1}}],["avoided",{"0":{"2517":1},"2":{"472":1,"473":1,"478":1,"617":1,"2517":3,"2521":1,"2577":1}}],["avoiding",{"0":{"1441":1},"2":{"282":3,"341":1,"1340":1}}],["avoid",{"0":{"461":1},"2":{"34":1,"114":2,"176":1,"191":1,"195":1,"271":1,"435":1,"457":1,"469":1,"477":1,"556":1,"606":1,"616":1,"1254":1,"1331":1,"1337":1,"1341":2,"1398":1,"1471":1,"1499":1,"1560":1,"1594":1,"1822":1,"1855":1,"1873":1,"1877":2,"1921":1,"2226":1,"2276":3,"2428":1,"2497":1,"2745":1}}],["avrisp",{"2":{"2329":1,"2333":1,"2347":1}}],["avr109",{"2":{"2233":3}}],["avr8",{"2":{"514":1}}],["avrdudess",{"2":{"2233":1,"2236":1}}],["avrdude",{"2":{"236":1,"509":2,"1385":1,"2126":3,"2233":3,"2234":6,"2236":2,"2262":1,"2329":2,"2331":2,"2333":2,"2335":3,"2337":2,"2339":2,"2341":2,"2347":19,"2348":2}}],["avrs",{"2":{"160":1,"2230":1,"2705":1}}],["avr",{"0":{"123":1,"487":1,"514":1,"633":1,"638":1,"655":1,"702":1,"1176":1,"1197":1,"1387":1,"1465":1,"1905":1,"2286":1,"2623":1,"2704":1},"1":{"1388":1,"1466":1,"1467":1,"2705":1,"2706":1,"2707":1,"2708":1,"2709":1,"2710":1,"2711":1},"2":{"2":1,"28":2,"74":1,"111":1,"113":1,"114":5,"123":2,"130":1,"134":3,"149":3,"153":2,"160":4,"166":1,"172":1,"176":5,"191":2,"199":1,"211":1,"215":2,"222":2,"266":2,"486":3,"511":2,"552":1,"560":1,"630":2,"655":1,"681":2,"696":2,"697":2,"1121":1,"1177":1,"1219":2,"1290":1,"1312":2,"1316":1,"1317":1,"1491":1,"1492":1,"1632":1,"1811":4,"1821":1,"1822":2,"2114":2,"2115":1,"2126":3,"2128":1,"2229":1,"2236":1,"2237":1,"2263":1,"2286":1,"2310":1,"2327":1,"2335":1,"2341":1,"2347":2,"2348":3,"2462":1,"2492":1,"2496":1,"2501":1,"2539":1,"2573":1,"2623":1,"2638":1,"2655":1,"2664":1,"2704":2,"2718":1,"2724":1,"2743":2}}],["aur",{"2":{"2466":1}}],["aurora",{"2":{"191":2}}],["auxiliary",{"2":{"2301":1}}],["au",{"2":{"1398":3,"1402":2,"1408":5,"2357":5}}],["audience",{"2":{"470":1}}],["audio",{"0":{"28":1,"215":1,"654":1,"1291":1,"1386":1,"1399":1,"1401":1,"1406":1,"1408":1,"2180":1,"2357":1,"2676":1,"2707":1},"1":{"655":1,"656":1,"657":1,"658":1,"659":1,"660":1,"661":1,"662":1,"663":1,"1387":1,"1388":1,"1389":1,"1390":1,"1391":1,"1392":1,"1393":1,"1394":1,"1395":1,"1396":1,"1397":1,"1398":1,"1399":1,"1400":1,"1401":1,"1402":1,"1403":1,"1404":1,"1405":1,"1406":1,"1407":1,"1408":1,"2182":1},"2":{"28":6,"70":1,"74":1,"75":1,"105":4,"111":1,"112":2,"114":1,"133":1,"134":1,"149":1,"188":1,"191":3,"215":1,"222":6,"231":4,"236":1,"249":2,"266":3,"502":26,"515":3,"592":1,"654":2,"656":3,"657":4,"658":1,"659":12,"660":4,"661":5,"662":5,"1291":1,"1316":1,"1357":1,"1378":1,"1386":1,"1387":10,"1388":2,"1389":1,"1390":6,"1391":3,"1392":3,"1393":7,"1394":2,"1395":4,"1396":5,"1397":3,"1398":17,"1399":10,"1400":3,"1401":2,"1402":8,"1406":18,"1408":19,"1448":2,"1467":1,"1549":4,"1686":3,"1718":2,"2074":1,"2180":1,"2263":4,"2355":3,"2357":20,"2393":3,"2531":1,"2607":2,"2610":1,"2676":5,"2706":1,"2707":1,"2724":1,"2749":1}}],["austin",{"2":{"211":1}}],["authentication",{"0":{"2432":1}}],["authenticated",{"2":{"527":1,"2432":1}}],["author",{"2":{"2309":1,"2564":1}}],["authored",{"2":{"38":1}}],["authorship",{"2":{"1380":1}}],["authors",{"2":{"32":1}}],["autoload",{"2":{"450":1}}],["auto+retro",{"2":{"236":1}}],["autocorrected",{"2":{"1442":1,"1448":1}}],["autocorrection",{"0":{"1439":1},"2":{"1439":1,"1441":1,"1442":1,"1447":1,"1448":3,"1450":1,"1451":1}}],["autocorrect",{"0":{"179":1,"1437":1,"1440":1,"1442":1,"1445":1,"1446":1,"1447":1,"1448":1,"1449":1,"2359":1},"1":{"1438":1,"1439":1,"1440":1,"1441":2,"1442":1,"1443":2,"1444":1,"1445":1,"1446":2,"1447":1,"1448":2,"1449":1,"1450":1,"1451":1,"1452":1,"1453":1},"2":{"179":2,"188":1,"191":2,"211":1,"222":2,"1439":1,"1440":6,"1441":1,"1442":2,"1443":6,"1445":6,"1446":6,"1447":1,"1448":6,"1449":9,"1450":1,"1451":1,"2359":7}}],["automation",{"2":{"2492":1,"2503":1}}],["automatically",{"2":{"173":1,"201":1,"246":1,"347":1,"364":1,"370":1,"371":1,"376":1,"378":1,"381":1,"383":1,"386":1,"435":1,"436":1,"445":2,"454":2,"560":1,"597":1,"626":1,"643":1,"655":1,"665":1,"689":2,"700":1,"727":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1175":1,"1196":1,"1213":1,"1214":1,"1217":1,"1376":3,"1377":1,"1385":1,"1398":2,"1425":1,"1437":1,"1438":1,"1440":1,"1494":1,"1499":1,"1504":1,"1525":2,"1730":1,"1825":1,"1836":1,"1864":1,"1881":1,"1917":1,"1950":1,"1951":1,"1954":1,"2051":1,"2072":1,"2132":1,"2145":2,"2183":1,"2229":1,"2230":2,"2231":1,"2233":1,"2235":1,"2237":1,"2238":2,"2240":1,"2242":1,"2243":1,"2244":1,"2252":1,"2261":1,"2341":1,"2361":1,"2439":1,"2441":1,"2448":1,"2461":1,"2576":1,"2680":1}}],["automatic",{"0":{"246":1,"1864":1,"2067":1},"1":{"1865":1,"1866":1,"1867":1,"1868":1,"1869":1,"1870":1,"1871":1,"1872":1,"1873":1,"1874":1,"1875":1,"1876":1,"1877":1,"1878":1,"1879":1,"1880":1},"2":{"134":1,"190":2,"191":1,"246":1,"689":1,"1316":1,"1317":1,"1412":1,"1880":1}}],["automata02",{"2":{"222":1}}],["automate",{"2":{"199":1}}],["automated",{"2":{"10":1,"198":1,"606":1,"1310":1,"2667":1}}],["autoshifted",{"2":{"1423":1}}],["autoshift",{"2":{"93":1,"191":1,"1416":4,"1430":3}}],["auto",{"0":{"454":1,"1409":1,"1410":1,"1412":1,"1413":1,"1415":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"1423":1,"1424":1,"1425":2,"1426":1,"1427":1,"1428":1,"1429":1,"1433":1,"1873":1,"1876":1,"1878":1,"1880":1,"2358":1},"1":{"1410":1,"1411":1,"1412":1,"1413":1,"1414":1,"1415":1,"1416":2,"1417":2,"1418":2,"1419":2,"1420":2,"1421":2,"1422":2,"1423":2,"1424":2,"1425":2,"1426":2,"1427":2,"1428":2,"1429":2,"1430":1,"1431":1,"1432":1,"1433":1,"1434":2,"1435":2,"1436":2},"2":{"49":1,"63":1,"134":3,"176":1,"188":1,"191":1,"195":3,"211":3,"222":2,"246":1,"249":1,"266":1,"689":1,"1410":1,"1411":14,"1412":2,"1413":2,"1414":4,"1415":3,"1416":7,"1417":1,"1418":2,"1419":1,"1420":1,"1421":1,"1422":1,"1423":15,"1425":1,"1429":1,"1430":4,"1431":3,"1433":1,"1434":12,"1435":4,"1436":1,"1448":1,"1494":2,"1836":2,"1859":3,"1864":1,"1865":2,"1866":10,"1867":1,"1868":7,"1872":1,"1873":33,"1874":7,"1876":10,"1877":11,"1878":10,"1879":3,"1880":5,"2358":13,"2361":2,"2477":1,"2513":1,"2737":5,"2739":2,"2749":1}}],["august",{"0":{"96":1,"161":1,"267":1},"1":{"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1},"2":{"254":1,"268":1,"2632":1}}],["aug",{"0":{"0":1,"39":1,"212":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1},"2":{"88":1,"104":1,"127":1,"170":1,"315":2,"338":1,"340":1,"351":6}}],["aforementioned",{"2":{"1675":1}}],["aforementionned",{"2":{"1336":1}}],["af2",{"2":{"1469":1}}],["afnor",{"2":{"1355":1,"2703":3}}],["africa",{"2":{"1268":1}}],["afpp",{"2":{"1142":7}}],["afio",{"2":{"1142":1}}],["af4",{"2":{"1141":4}}],["af0",{"2":{"1141":4}}],["af1",{"2":{"1141":10}}],["af7",{"2":{"1140":22}}],["affecting",{"2":{"1300":4,"2033":1,"2279":1,"2305":1,"2567":1}}],["affect",{"2":{"221":1,"233":1,"435":2,"560":1,"1312":1,"2567":2,"2615":1,"2728":1,"2739":1}}],["affects",{"2":{"45":1,"49":1,"244":1,"1243":1,"1326":1,"2161":1,"2574":1}}],["affected",{"2":{"3":1,"4":1,"10":1,"14":1,"15":1,"221":1,"254":1,"1558":1,"1573":1,"2130":1,"2529":1,"2735":2,"2736":1}}],["afterwards",{"2":{"202":1,"1270":1,"2273":1,"2468":1}}],["aftermath",{"2":{"176":1}}],["after",{"0":{"25":1,"2166":1},"2":{"10":1,"11":1,"23":1,"24":1,"25":5,"49":1,"90":1,"105":1,"114":2,"134":4,"149":1,"157":1,"176":4,"191":3,"195":1,"199":5,"211":2,"222":1,"255":2,"259":1,"263":1,"315":1,"324":1,"340":1,"341":1,"344":1,"345":1,"349":1,"350":3,"453":1,"485":1,"502":2,"505":2,"510":1,"513":2,"515":1,"554":1,"559":1,"570":1,"575":1,"578":1,"582":1,"588":2,"596":1,"599":1,"624":1,"647":1,"660":1,"675":1,"689":1,"698":1,"741":1,"745":1,"749":1,"751":1,"768":1,"772":1,"776":1,"778":1,"800":1,"804":1,"808":1,"810":1,"832":1,"836":1,"840":1,"842":1,"867":1,"871":1,"875":1,"877":1,"901":1,"905":1,"909":1,"911":1,"935":1,"939":1,"943":1,"945":1,"969":1,"973":1,"977":1,"979":1,"1003":1,"1007":1,"1011":1,"1013":1,"1037":1,"1041":1,"1045":1,"1047":1,"1071":1,"1075":1,"1079":1,"1081":1,"1105":1,"1109":1,"1113":1,"1115":1,"1158":1,"1162":1,"1166":1,"1168":1,"1243":1,"1250":1,"1265":1,"1276":1,"1287":1,"1298":1,"1303":3,"1330":1,"1331":1,"1332":2,"1346":1,"1360":4,"1377":1,"1403":1,"1411":1,"1440":1,"1441":1,"1451":3,"1523":1,"1665":1,"1671":1,"1675":2,"1683":1,"1684":2,"1729":1,"1776":1,"1778":1,"1780":1,"1783":1,"1802":1,"1805":1,"1807":2,"1817":2,"1825":1,"1851":1,"1864":1,"1868":2,"1908":1,"1910":1,"1912":1,"1929":1,"1952":1,"2021":1,"2023":1,"2025":1,"2028":1,"2031":1,"2042":1,"2044":1,"2067":1,"2128":2,"2141":1,"2150":1,"2152":1,"2161":3,"2162":2,"2169":1,"2234":1,"2255":1,"2262":1,"2270":1,"2273":3,"2276":1,"2277":1,"2311":1,"2353":1,"2396":1,"2402":1,"2406":1,"2445":1,"2479":1,"2480":1,"2490":2,"2491":1,"2499":1,"2524":1,"2525":1,"2526":1,"2548":1,"2556":1,"2564":1,"2567":1,"2568":1,"2574":1,"2577":1,"2581":1,"2588":1,"2589":1,"2600":1,"2602":1,"2607":1,"2615":1,"2649":1,"2699":2,"2702":1,"2723":1,"2728":1,"2734":1,"2737":1,"2749":2}}],["arbitrary",{"2":{"318":1,"374":1,"1361":1,"1369":1,"1450":1,"1666":1,"2130":1,"2479":1,"2524":1}}],["arises",{"2":{"2311":1}}],["arise",{"2":{"273":1,"2424":1}}],["arrangement",{"2":{"2559":2}}],["arranged",{"2":{"2311":2,"2614":1}}],["arrange",{"2":{"1338":1}}],["arrays",{"2":{"191":1,"374":2,"530":1,"1677":2,"1821":2,"2148":1,"2400":3,"2557":1,"2738":2}}],["array",{"0":{"27":1},"2":{"27":1,"176":1,"249":1,"266":1,"529":2,"612":5,"676":1,"742":1,"746":1,"750":1,"752":1,"769":1,"773":1,"777":1,"779":1,"801":1,"805":1,"809":1,"811":1,"833":1,"837":1,"841":1,"843":1,"868":1,"872":1,"876":1,"878":1,"902":1,"906":1,"910":1,"912":1,"936":1,"940":1,"944":1,"946":1,"970":1,"974":1,"978":1,"980":1,"1004":1,"1008":1,"1012":1,"1014":1,"1038":1,"1042":1,"1046":1,"1048":1,"1072":1,"1076":1,"1080":1,"1082":1,"1106":1,"1110":1,"1114":1,"1116":1,"1159":1,"1163":1,"1167":1,"1169":1,"1233":2,"1279":1,"1352":1,"1356":1,"1359":1,"1451":3,"1511":1,"1517":1,"1518":3,"1557":1,"1573":1,"1591":1,"1612":1,"1614":1,"1633":1,"1638":2,"1657":2,"1820":2,"1836":2,"2042":4,"2070":1,"2125":1,"2155":2,"2157":1,"2161":2,"2181":2,"2203":1,"2205":1,"2206":1,"2207":1,"2209":1,"2210":1,"2302":1,"2400":4,"2401":1,"2558":1,"2595":1,"2597":1,"2599":1,"2625":1,"2643":1,"2746":2}}],["arrowmechanics",{"2":{"266":1}}],["arrow",{"2":{"255":2,"259":2,"266":1,"626":2,"1586":4,"1871":1,"1929":1,"1932":5,"1937":2,"2079":1,"2355":8,"2392":4,"2394":4,"2617":1,"2620":2}}],["arg",{"2":{"441":3,"597":2,"598":1,"1938":1}}],["args",{"2":{"176":1,"441":3,"462":1,"465":1,"1933":1,"2508":1}}],["arguments",{"0":{"436":1,"441":1,"465":1,"648":1,"650":1,"653":1,"674":1,"676":1,"678":1,"680":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"727":1,"740":1,"742":1,"744":1,"746":1,"748":1,"750":1,"752":1,"765":1,"767":1,"769":1,"771":1,"773":1,"775":1,"777":1,"779":1,"781":1,"783":1,"797":1,"799":1,"801":1,"803":1,"805":1,"807":1,"809":1,"811":1,"813":1,"815":1,"827":1,"829":1,"831":1,"833":1,"835":1,"837":1,"839":1,"841":1,"843":1,"845":1,"847":1,"862":1,"864":1,"866":1,"868":1,"870":1,"872":1,"874":1,"876":1,"878":1,"880":1,"882":1,"896":1,"898":1,"900":1,"902":1,"904":1,"906":1,"908":1,"910":1,"912":1,"914":1,"916":1,"930":1,"932":1,"934":1,"936":1,"938":1,"940":1,"942":1,"944":1,"946":1,"948":1,"950":1,"964":1,"966":1,"968":1,"970":1,"972":1,"974":1,"976":1,"978":1,"980":1,"982":1,"984":1,"998":1,"1000":1,"1002":1,"1004":1,"1006":1,"1008":1,"1010":1,"1012":1,"1014":1,"1016":1,"1018":1,"1032":1,"1034":1,"1036":1,"1038":1,"1040":1,"1042":1,"1044":1,"1046":1,"1048":1,"1050":1,"1052":1,"1066":1,"1068":1,"1070":1,"1072":1,"1074":1,"1076":1,"1078":1,"1080":1,"1082":1,"1084":1,"1086":1,"1100":1,"1102":1,"1104":1,"1106":1,"1108":1,"1110":1,"1112":1,"1114":1,"1116":1,"1118":1,"1120":1,"1153":1,"1155":1,"1157":1,"1159":1,"1161":1,"1163":1,"1165":1,"1167":1,"1169":1,"1171":1,"1173":1,"1181":1,"1184":1,"1189":1,"1192":1,"1201":1,"1203":1,"1207":1,"1209":1,"1233":1,"1480":1,"1546":1,"1597":1,"1601":1,"1604":1,"1606":1,"1608":1,"1610":1,"1612":1,"1614":1,"1618":1,"1620":1,"1623":1,"1625":1,"1627":1,"1629":1,"1643":1,"1645":1,"1647":1,"1650":1,"1695":1,"1700":1,"1703":1,"1706":1,"1709":1,"1712":1,"1744":1,"1746":1,"1748":1,"1750":1,"1768":1,"1770":1,"1781":1,"1784":1,"1887":1,"1889":1,"1891":1,"1893":1,"1895":1,"1901":1,"1926":1,"1928":1,"1971":1,"1973":1,"1975":1,"1977":1,"2007":1,"2009":1,"2013":1,"2015":1,"2026":1,"2029":1,"2082":1,"2084":1,"2086":1,"2088":1,"2090":1,"2092":1,"2094":1,"2096":1,"2098":1,"2189":1,"2193":1,"2195":1,"2200":1,"2202":1,"2204":1,"2207":1,"2210":1,"2217":1,"2224":1},"1":{"437":1,"438":1,"439":1,"440":1,"441":1,"1782":1,"1785":1,"2027":1,"2030":1},"2":{"114":1,"385":1,"393":1,"394":1,"400":1,"401":1,"413":1,"414":1,"416":1,"432":2,"441":2,"462":1,"473":1,"1347":1,"1922":1,"2149":1,"2162":1,"2348":1,"2480":1,"2575":3,"2747":1}}],["argument",{"0":{"474":1},"2":{"46":1,"194":2,"199":1,"236":1,"266":1,"370":2,"371":1,"413":1,"415":2,"416":1,"430":6,"436":5,"441":3,"474":1,"573":2,"597":3,"598":1,"1177":1,"1300":1,"1315":1,"1322":1,"1336":4,"1349":1,"2152":2,"2347":1,"2411":1,"2480":1,"2491":1,"2575":7}}],["artifact",{"2":{"2437":1}}],["artifacts",{"2":{"114":1,"2439":1,"2581":1}}],["article",{"2":{"2229":1,"2311":2}}],["art",{"2":{"176":2}}],["archive",{"2":{"2437":1}}],["architecture",{"0":{"517":1},"2":{"517":2,"697":1}}],["arch",{"2":{"143":2,"176":1,"514":1,"2431":1,"2464":1,"2466":1}}],["arabica37",{"2":{"134":1}}],["arya",{"2":{"134":1}}],["arduinoisp",{"2":{"2331":1}}],["arduino",{"0":{"243":1,"1293":1,"2331":1},"1":{"2332":1},"2":{"113":1,"114":1,"133":1,"134":1,"243":2,"552":2,"629":4,"1293":8,"2233":1,"2286":1,"2331":2,"2344":4}}],["armtoolchainpath",{"2":{"2513":3}}],["arm",{"0":{"322":1,"325":1,"488":1,"634":1,"639":1,"641":1,"656":1,"668":1,"703":1,"733":1,"759":1,"791":1,"821":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1147":1,"1177":1,"1198":1,"1224":1,"1243":1,"1389":1,"1401":1,"1468":1,"1906":1,"2513":1,"2523":1,"2546":1,"2622":1},"1":{"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1,"336":1,"489":1,"490":1,"491":1,"492":1,"635":1,"636":1,"657":1,"658":1,"659":1,"660":1,"661":1,"662":1,"663":1,"704":1,"705":1,"1225":1,"1226":1,"1227":1,"1228":1,"1229":1,"1230":1,"1390":1,"1391":1,"1392":1,"1393":1,"1394":1,"1395":1,"1396":1,"1469":1,"1470":1,"2524":1,"2525":1,"2526":1,"2547":1,"2548":1,"2549":1,"2550":1,"2551":1,"2552":1},"2":{"11":1,"24":1,"69":1,"75":1,"92":1,"93":3,"107":2,"114":3,"123":1,"130":1,"134":2,"153":1,"160":2,"174":1,"191":1,"215":2,"248":1,"263":3,"277":1,"322":2,"325":2,"331":2,"334":1,"336":1,"486":2,"488":1,"508":1,"509":1,"511":2,"552":1,"556":1,"560":1,"630":3,"641":1,"656":1,"657":1,"681":1,"1121":1,"1122":1,"1124":1,"1125":1,"1128":1,"1222":1,"1223":1,"1224":1,"1243":1,"1312":1,"1316":2,"1317":2,"1397":1,"1401":1,"1609":1,"1613":1,"1631":2,"1811":5,"1822":2,"1906":1,"2032":1,"2085":1,"2087":1,"2100":1,"2101":1,"2114":3,"2115":1,"2126":2,"2131":1,"2132":3,"2143":2,"2263":1,"2310":1,"2327":1,"2462":1,"2513":3,"2523":1,"2527":1,"2536":1,"2537":1,"2546":2,"2566":1,"2673":1,"2712":2}}],["around",{"2":{"8":1,"191":2,"198":1,"201":1,"213":1,"222":1,"224":1,"266":1,"358":1,"618":1,"655":1,"1238":1,"1268":1,"1287":2,"1290":1,"1403":1,"1406":1,"1568":1,"1728":1,"1832":1,"1948":1,"1949":4,"2033":1,"2054":4,"2272":1,"2311":1,"2313":1,"2413":1,"2705":1,"2750":1,"2752":1,"2757":1}}],["aref",{"2":{"2276":1}}],["arep",{"2":{"202":1,"1930":1,"1931":1,"2381":1}}],["area",{"2":{"182":1,"585":1,"1822":1,"1950":1,"2480":2,"2576":2,"2577":1,"2627":1,"2719":1}}],["areas",{"2":{"113":1,"213":1,"341":1,"2567":2,"2719":2}}],["aren",{"0":{"1273":1},"2":{"173":1,"188":1,"211":1,"557":1,"560":1,"606":1,"1287":1,"1558":1,"1849":1,"2255":1,"2274":1,"2279":1,"2403":1,"2546":1,"2576":2}}],["are",{"0":{"90":1,"105":1,"546":1,"1262":1,"1265":1,"1268":1,"1271":1,"1284":1,"1412":1,"1506":1,"2318":1,"2741":1},"1":{"2319":1,"2320":1,"2321":1,"2322":1,"2323":1,"2324":1,"2325":1,"2326":1},"2":{"3":1,"4":1,"11":1,"15":1,"16":2,"27":1,"31":3,"33":1,"34":2,"37":1,"55":1,"69":1,"70":1,"73":1,"75":1,"92":1,"94":1,"110":1,"111":1,"114":1,"119":1,"123":2,"124":1,"132":1,"152":1,"163":1,"176":1,"182":1,"187":1,"191":1,"194":1,"196":2,"201":2,"203":1,"206":1,"209":1,"210":1,"215":2,"221":1,"222":1,"231":1,"234":1,"241":1,"253":1,"254":1,"262":1,"263":2,"264":1,"268":1,"270":1,"274":1,"275":1,"282":6,"294":1,"305":1,"306":1,"311":1,"315":1,"317":4,"319":1,"321":1,"323":1,"324":1,"326":1,"331":2,"334":2,"337":2,"341":3,"349":2,"350":1,"352":2,"353":1,"354":2,"360":1,"364":1,"367":1,"370":1,"371":1,"373":1,"374":2,"378":1,"381":1,"383":1,"385":1,"386":1,"388":1,"399":2,"414":1,"416":3,"430":1,"432":1,"433":1,"434":1,"435":2,"448":1,"449":1,"453":2,"454":1,"457":1,"460":1,"465":1,"466":2,"467":2,"469":1,"470":1,"473":2,"480":1,"481":3,"482":1,"483":1,"484":1,"485":1,"488":1,"496":4,"498":1,"499":1,"502":2,"506":2,"509":1,"510":2,"511":1,"515":4,"516":3,"517":1,"520":1,"521":2,"522":2,"530":1,"537":1,"539":1,"548":1,"549":1,"551":1,"552":1,"554":2,"555":1,"556":2,"559":3,"560":7,"561":1,"562":3,"567":1,"571":3,"574":2,"587":2,"589":1,"592":1,"598":1,"601":1,"606":3,"609":4,"610":1,"611":1,"613":2,"614":1,"623":1,"625":1,"626":2,"627":1,"628":1,"629":1,"630":1,"633":2,"635":5,"639":1,"641":1,"642":1,"643":1,"647":1,"655":1,"656":4,"658":1,"659":2,"661":2,"665":1,"675":1,"684":1,"685":1,"689":1,"694":1,"696":1,"698":3,"700":1,"730":1,"741":1,"745":1,"749":1,"751":1,"756":1,"768":1,"772":1,"776":1,"778":1,"785":1,"788":1,"789":2,"800":1,"804":1,"808":1,"810":1,"817":1,"832":1,"836":1,"840":1,"842":1,"849":1,"851":1,"853":1,"854":2,"867":1,"871":1,"875":1,"877":1,"884":1,"886":1,"887":1,"888":2,"901":1,"905":1,"909":1,"911":1,"918":1,"921":1,"922":2,"935":1,"939":1,"943":1,"945":1,"952":1,"955":1,"956":2,"969":1,"973":1,"977":1,"979":1,"986":1,"989":1,"990":2,"1003":1,"1007":1,"1011":1,"1013":1,"1020":1,"1022":1,"1024":2,"1037":1,"1041":1,"1045":1,"1047":1,"1054":1,"1056":1,"1058":2,"1071":1,"1075":1,"1079":1,"1081":1,"1088":1,"1090":1,"1091":1,"1092":2,"1105":1,"1109":1,"1113":1,"1115":1,"1121":2,"1125":1,"1126":1,"1128":1,"1129":4,"1134":1,"1135":1,"1142":1,"1144":1,"1158":1,"1162":1,"1166":1,"1168":1,"1175":1,"1182":1,"1196":1,"1201":2,"1212":1,"1213":1,"1216":1,"1218":1,"1227":1,"1230":1,"1234":1,"1236":1,"1238":1,"1241":1,"1243":1,"1246":1,"1249":1,"1265":2,"1267":1,"1268":2,"1273":2,"1279":1,"1280":1,"1284":2,"1287":2,"1288":1,"1300":3,"1303":2,"1311":1,"1312":1,"1314":1,"1315":1,"1316":1,"1317":1,"1319":1,"1320":1,"1322":1,"1325":5,"1326":4,"1329":2,"1331":3,"1332":1,"1335":2,"1336":2,"1338":2,"1339":1,"1341":5,"1344":1,"1346":1,"1351":1,"1356":1,"1357":2,"1359":2,"1364":2,"1368":1,"1376":1,"1383":1,"1385":1,"1394":1,"1396":1,"1397":1,"1398":2,"1400":2,"1401":1,"1404":3,"1406":2,"1411":2,"1412":2,"1416":3,"1423":1,"1427":1,"1430":1,"1431":2,"1435":3,"1436":1,"1437":2,"1438":1,"1440":2,"1441":1,"1442":1,"1445":2,"1446":5,"1447":1,"1451":4,"1457":1,"1458":1,"1460":1,"1464":1,"1466":1,"1469":2,"1471":2,"1495":1,"1496":1,"1497":1,"1499":1,"1500":1,"1503":2,"1504":1,"1506":1,"1508":1,"1509":1,"1511":1,"1512":1,"1514":1,"1517":2,"1518":6,"1521":1,"1522":1,"1523":1,"1524":2,"1526":1,"1533":1,"1547":1,"1553":2,"1554":1,"1556":1,"1557":2,"1558":1,"1560":1,"1562":1,"1564":1,"1566":1,"1568":1,"1570":2,"1573":2,"1594":1,"1632":1,"1633":2,"1655":2,"1659":2,"1663":1,"1665":1,"1670":2,"1673":6,"1674":3,"1675":2,"1676":3,"1677":4,"1680":1,"1684":1,"1685":1,"1714":1,"1715":1,"1717":1,"1725":2,"1728":2,"1730":1,"1733":2,"1787":1,"1791":2,"1794":2,"1802":2,"1804":2,"1805":1,"1806":1,"1807":4,"1811":1,"1812":1,"1814":1,"1816":1,"1817":1,"1820":4,"1821":5,"1822":2,"1832":1,"1833":2,"1836":2,"1838":2,"1841":2,"1842":2,"1845":1,"1849":1,"1850":1,"1852":2,"1854":1,"1855":2,"1863":1,"1864":3,"1867":1,"1869":1,"1871":1,"1872":1,"1876":2,"1879":1,"1881":3,"1902":1,"1907":1,"1908":1,"1912":1,"1918":1,"1920":1,"1921":3,"1923":2,"1929":1,"1932":1,"1933":1,"1936":3,"1938":1,"1940":1,"1946":2,"1948":5,"1949":2,"1950":1,"1953":2,"1954":1,"1957":2,"2031":1,"2032":2,"2034":1,"2037":2,"2038":3,"2040":1,"2042":1,"2044":1,"2045":1,"2051":11,"2052":2,"2054":2,"2058":2,"2059":1,"2063":2,"2072":2,"2075":3,"2076":1,"2111":1,"2113":1,"2114":2,"2115":1,"2116":1,"2118":3,"2122":1,"2123":1,"2127":1,"2128":4,"2130":1,"2131":4,"2137":1,"2138":1,"2140":1,"2142":1,"2143":1,"2144":1,"2146":1,"2147":2,"2149":1,"2150":2,"2152":1,"2155":3,"2157":1,"2161":5,"2162":1,"2165":1,"2169":4,"2171":1,"2172":4,"2175":1,"2177":1,"2178":1,"2181":1,"2182":2,"2183":1,"2229":1,"2231":2,"2238":2,"2252":3,"2256":2,"2260":2,"2261":1,"2262":3,"2263":5,"2267":3,"2268":1,"2269":2,"2271":1,"2272":4,"2273":3,"2274":1,"2275":1,"2276":4,"2280":1,"2284":1,"2286":1,"2294":2,"2295":1,"2299":1,"2300":1,"2301":1,"2302":1,"2303":5,"2305":1,"2306":1,"2309":1,"2310":2,"2311":4,"2315":1,"2317":1,"2321":1,"2325":2,"2327":1,"2328":1,"2342":1,"2343":2,"2344":1,"2346":1,"2347":1,"2348":1,"2353":1,"2354":1,"2356":1,"2364":1,"2385":1,"2393":3,"2395":1,"2396":1,"2397":2,"2398":1,"2400":1,"2401":2,"2404":1,"2405":3,"2406":1,"2407":2,"2409":1,"2410":1,"2411":2,"2414":1,"2417":4,"2418":3,"2419":1,"2420":2,"2424":2,"2425":2,"2429":1,"2430":1,"2439":1,"2445":2,"2452":2,"2454":1,"2455":1,"2457":2,"2462":1,"2466":1,"2470":1,"2473":1,"2475":2,"2476":1,"2477":2,"2480":2,"2482":1,"2490":3,"2491":3,"2498":1,"2499":1,"2502":1,"2507":1,"2508":1,"2509":1,"2510":1,"2513":1,"2515":2,"2516":1,"2518":2,"2519":2,"2524":2,"2525":1,"2530":1,"2532":1,"2533":1,"2534":1,"2543":3,"2545":1,"2548":2,"2549":2,"2550":1,"2555":1,"2556":1,"2557":1,"2559":1,"2560":1,"2563":1,"2564":1,"2565":1,"2566":10,"2567":2,"2568":2,"2569":4,"2571":4,"2572":1,"2574":2,"2576":8,"2577":6,"2585":4,"2587":1,"2592":2,"2595":2,"2600":1,"2601":4,"2602":1,"2603":3,"2605":2,"2607":1,"2610":1,"2614":2,"2616":2,"2617":1,"2640":2,"2643":1,"2653":1,"2655":1,"2660":1,"2671":2,"2686":3,"2688":1,"2689":1,"2694":1,"2695":1,"2701":1,"2702":1,"2703":4,"2704":1,"2705":6,"2706":2,"2708":2,"2709":3,"2712":2,"2713":1,"2714":1,"2720":1,"2721":1,"2726":2,"2728":1,"2729":2,"2735":1,"2738":4,"2741":1,"2745":3,"2750":2,"2754":2,"2755":1,"2756":3,"2757":1}}],["al",{"2":{"2735":2,"2736":1}}],["albeit",{"2":{"2181":1}}],["alps",{"2":{"1276":1}}],["alphabet",{"2":{"2702":1}}],["alphabetical",{"2":{"1435":1}}],["alphanumeric",{"2":{"1958":1,"2619":1}}],["alphas",{"2":{"1728":3,"1949":3,"2688":1,"2695":1,"2711":1}}],["alpha",{"0":{"1421":1,"1426":1,"1583":1},"2":{"143":8,"1416":2,"1421":1,"1423":2,"1441":1,"1583":2}}],["alone",{"2":{"606":1,"1249":1}}],["alongside",{"2":{"113":1,"114":1}}],["along",{"2":{"69":1,"83":1,"113":1,"149":1,"166":1,"196":1,"230":1,"502":3,"1217":1,"1376":1,"1380":1,"1589":1,"1670":1,"1807":1,"1844":1,"1923":1,"1949":1,"2072":1,"2229":1,"2274":1,"2276":2,"2341":1,"2450":1,"2564":1,"2570":1}}],["alvicstep",{"2":{"211":1}}],["alf",{"2":{"211":2}}],["alcor",{"2":{"191":1}}],["al1",{"2":{"160":1}}],["alu84",{"2":{"143":2}}],["aleblazer",{"2":{"222":1}}],["alexa",{"2":{"211":1}}],["aleth42",{"2":{"143":2}}],["alerts",{"2":{"376":1,"397":1}}],["alert",{"2":{"28":1,"1578":2}}],["alisaie",{"2":{"222":1}}],["alice",{"2":{"211":1,"2746":1}}],["alicia",{"2":{"143":2,"211":1}}],["aligns",{"2":{"2270":1}}],["aligned",{"2":{"137":1,"2273":1,"2619":2}}],["alignment",{"2":{"114":1,"133":1,"134":1,"191":1,"266":1,"2275":1,"2565":1,"2577":1}}],["align",{"2":{"113":1,"114":3,"133":1,"134":3,"149":4,"176":2,"188":3,"191":3,"199":4,"222":1,"249":4,"266":4,"277":1}}],["aliasing",{"2":{"2575":1}}],["aliases",{"2":{"92":1,"111":1,"182":1,"188":1,"191":1,"222":4,"266":1,"1299":1,"1341":1,"1398":1,"1402":1,"1403":1,"1406":1,"1408":1,"1434":1,"1443":1,"1456":1,"1494":1,"1512":1,"1566":1,"1572":1,"1635":1,"1669":1,"1687":1,"1727":1,"1793":1,"1801":1,"1873":1,"1883":1,"1931":1,"1948":1,"2034":1,"2069":1,"2106":1,"2110":1,"2156":1,"2184":1,"2355":1,"2356":1,"2357":1,"2358":1,"2359":1,"2360":1,"2361":1,"2362":1,"2363":1,"2364":1,"2365":1,"2369":1,"2370":1,"2371":1,"2372":1,"2373":1,"2374":1,"2375":1,"2376":1,"2377":1,"2378":1,"2379":1,"2380":1,"2381":1,"2382":1,"2383":1,"2384":1,"2388":1,"2389":1,"2390":1,"2391":1,"2392":1,"2393":1,"2394":1,"2395":1,"2396":1,"2399":1,"2410":1,"2566":1,"2572":1,"2686":2,"2701":1,"2728":1}}],["alias",{"0":{"8":1},"2":{"8":2,"133":1,"134":1,"188":1,"191":2,"199":3,"211":1,"236":1,"249":1,"696":1,"1500":1,"1553":1,"1609":1,"1613":1,"1822":1,"1930":2,"2085":1,"2087":1,"2173":1,"2403":2,"2413":1,"2480":1}}],["almost",{"2":{"77":1,"83":1,"163":1,"268":1,"276":1,"327":1,"693":1,"694":1,"701":1,"1676":1,"2183":1,"2229":1,"2242":1,"2564":1,"2567":1,"2576":1,"2614":1,"2718":1,"2752":1}}],["already",{"0":{"2547":1},"1":{"2548":1,"2549":1},"2":{"75":1,"105":2,"118":1,"125":1,"169":2,"182":3,"185":1,"199":1,"221":1,"228":1,"232":1,"233":1,"241":1,"253":1,"270":1,"291":1,"373":1,"405":2,"539":1,"552":1,"588":1,"625":1,"1129":1,"1142":1,"1182":1,"1272":1,"1302":1,"1344":1,"1383":1,"1446":1,"1573":1,"1673":3,"1849":1,"1877":2,"1879":1,"2143":2,"2162":1,"2171":3,"2267":1,"2277":1,"2327":2,"2350":1,"2418":1,"2431":1,"2445":1,"2464":1,"2468":1,"2474":1,"2497":1,"2504":1,"2508":2,"2509":1,"2512":1,"2548":2,"2566":1,"2567":1,"2576":2,"2581":1,"2659":1,"2719":1,"2753":1}}],["algr",{"2":{"1299":1,"1361":1,"2355":1,"2373":1,"2374":1,"2390":1,"2410":1}}],["algorithm>",{"2":{"1329":1}}],["algorithms",{"0":{"1326":1,"1327":1},"1":{"1328":1,"1329":1,"1330":1},"2":{"114":1,"176":1,"222":1,"1325":1,"1326":6,"1327":1}}],["algorithm",{"2":{"74":1,"174":1,"176":1,"687":1,"689":1,"690":3,"691":1,"1326":10,"1329":4,"1330":2,"1803":1,"2600":1,"2674":1,"2683":1}}],["algernon",{"2":{"37":1,"2160":2,"2262":2}}],["altlp",{"2":{"2170":6}}],["altrep",{"2":{"1943":1}}],["altrep3",{"2":{"1943":12}}],["altrep2",{"2":{"1943":12}}],["alt↯tab",{"0":{"1375":1}}],["altered",{"2":{"2130":1}}],["altering",{"2":{"1454":1,"1527":1}}],["alter",{"2":{"1359":1,"1520":1,"1523":1,"1560":1,"2152":1,"2355":1}}],["alternating",{"2":{"2036":2,"2037":2,"2711":1}}],["alternatives",{"2":{"2418":1,"2719":1}}],["alternative",{"0":{"1362":1},"2":{"515":1,"1226":2,"1230":1,"1287":1,"1315":1,"1322":1,"1336":1,"1391":1,"1394":1,"1469":1,"1499":1,"1849":1,"2150":1,"2263":1,"2418":1,"2566":1,"2630":1,"2632":1}}],["alternatively",{"2":{"31":1,"454":1,"626":1,"684":1,"685":1,"1136":1,"1241":1,"1303":1,"1377":1,"1398":1,"1503":1,"1921":1,"2117":1,"2445":1,"2497":1,"2524":1,"2606":1,"2755":1}}],["alternate0",{"2":{"661":1}}],["alternate",{"0":{"1139":1,"1932":1,"1933":1,"1941":1,"1943":1,"2534":1},"1":{"1140":1,"1141":1,"1142":1,"1934":1,"1935":1},"2":{"36":1,"114":1,"202":2,"502":3,"511":1,"656":1,"661":5,"703":2,"707":2,"1122":1,"1127":2,"1129":2,"1130":2,"1137":1,"1142":2,"1177":3,"1198":4,"1396":1,"1527":1,"1530":3,"1931":1,"1932":7,"1933":6,"1934":2,"1935":1,"1936":1,"1940":2,"1941":10,"1942":2,"1943":1,"2355":2,"2381":1,"2392":2,"2539":1,"2566":2}}],["although",{"2":{"1336":1,"1631":1,"1675":1,"1842":1,"2145":1,"2150":1,"2402":1}}],["alt+escape",{"2":{"1302":1}}],["alt+shift+esc",{"2":{"1302":1}}],["alt+right",{"2":{"291":1,"1336":1}}],["altogether",{"2":{"660":1,"2128":1,"2708":1}}],["altgr+escape",{"2":{"1302":1}}],["altgr",{"2":{"160":1,"1299":1,"1938":1,"2355":1,"2373":2,"2374":2,"2390":1,"2410":2}}],["alt",{"0":{"1302":2},"2":{"73":1,"114":1,"131":2,"134":2,"160":1,"202":2,"231":1,"266":1,"502":3,"623":1,"656":1,"662":2,"1269":2,"1271":1,"1299":10,"1300":8,"1302":5,"1370":1,"1375":10,"1387":3,"1388":1,"1390":2,"1391":2,"1392":2,"1395":2,"1399":2,"1442":1,"1530":3,"1568":2,"1582":1,"1656":1,"1665":7,"1668":1,"1677":6,"1820":2,"1930":1,"1931":1,"1932":3,"1933":3,"1934":2,"1935":3,"1941":3,"1942":1,"2108":1,"2109":4,"2110":4,"2169":1,"2170":3,"2179":2,"2183":2,"2196":1,"2197":1,"2198":1,"2305":1,"2355":4,"2370":10,"2373":12,"2374":12,"2381":1,"2382":4,"2390":4,"2396":10,"2410":16,"2491":4,"2651":1,"2705":1,"2738":6}}],["always",{"2":{"14":1,"50":1,"156":1,"176":1,"191":1,"201":1,"235":1,"249":1,"277":1,"417":1,"430":1,"432":1,"453":1,"460":1,"462":1,"464":1,"465":1,"467":1,"474":1,"475":1,"509":1,"522":1,"549":1,"560":1,"698":1,"1142":2,"1225":1,"1335":1,"1339":2,"1383":1,"1385":2,"1404":1,"1412":1,"1430":2,"1495":1,"1524":1,"1567":1,"1568":4,"1670":1,"1824":1,"1866":1,"1921":1,"1922":1,"1926":2,"1928":2,"1936":1,"2036":1,"2118":1,"2125":1,"2127":3,"2152":1,"2280":1,"2299":1,"2402":1,"2414":1,"2452":1,"2567":1,"2587":1,"2594":1,"2595":1,"2614":1,"2625":1,"2662":1,"2718":2,"2729":1,"2737":1,"2754":1}}],["also",{"0":{"1243":1},"2":{"10":1,"16":1,"28":1,"50":1,"67":1,"86":1,"98":1,"125":1,"130":1,"153":1,"154":1,"156":1,"160":1,"166":1,"167":1,"176":1,"185":1,"194":1,"195":1,"231":1,"244":1,"337":1,"341":1,"352":1,"364":1,"371":3,"374":2,"387":1,"403":1,"418":1,"430":2,"435":1,"437":1,"470":1,"488":1,"516":2,"554":1,"557":1,"559":1,"560":2,"566":1,"586":1,"606":1,"635":1,"657":1,"661":2,"662":1,"690":1,"1143":1,"1217":1,"1223":1,"1242":1,"1249":1,"1265":1,"1270":1,"1292":1,"1299":1,"1300":1,"1302":1,"1312":1,"1325":2,"1336":1,"1341":1,"1359":1,"1361":3,"1364":1,"1378":1,"1383":1,"1385":2,"1397":1,"1400":1,"1411":1,"1430":1,"1446":1,"1448":1,"1471":1,"1498":2,"1499":1,"1500":1,"1501":1,"1509":1,"1515":1,"1520":1,"1522":1,"1523":1,"1534":1,"1553":1,"1557":3,"1577":1,"1582":2,"1632":1,"1655":1,"1659":1,"1666":1,"1673":2,"1674":2,"1676":1,"1697":1,"1722":1,"1730":1,"1805":1,"1830":1,"1842":1,"1849":1,"1855":1,"1859":1,"1878":2,"1910":1,"1911":1,"1912":1,"1921":2,"1923":1,"1929":1,"1932":1,"1939":1,"1940":1,"1950":1,"1954":1,"2032":1,"2036":1,"2040":1,"2042":1,"2044":1,"2061":1,"2063":1,"2075":1,"2102":1,"2120":1,"2121":1,"2126":1,"2145":2,"2146":1,"2150":1,"2157":1,"2173":2,"2177":1,"2178":1,"2182":1,"2183":1,"2226":1,"2229":1,"2230":1,"2232":1,"2234":1,"2240":1,"2241":1,"2246":1,"2248":1,"2250":1,"2252":2,"2262":3,"2263":1,"2267":1,"2269":1,"2272":3,"2276":1,"2281":1,"2295":1,"2297":1,"2298":1,"2299":1,"2300":1,"2306":1,"2328":1,"2331":1,"2342":1,"2344":1,"2347":1,"2355":1,"2356":1,"2357":1,"2358":1,"2359":1,"2360":1,"2361":1,"2362":1,"2363":1,"2364":1,"2365":1,"2366":1,"2367":1,"2368":1,"2369":1,"2370":1,"2371":1,"2372":1,"2373":1,"2374":1,"2375":1,"2376":1,"2377":1,"2378":1,"2379":1,"2380":1,"2381":1,"2382":1,"2383":1,"2384":1,"2405":3,"2411":2,"2414":1,"2421":1,"2450":1,"2458":1,"2466":1,"2490":1,"2491":3,"2497":1,"2498":1,"2508":1,"2513":2,"2521":1,"2530":2,"2546":2,"2556":1,"2559":1,"2566":2,"2573":1,"2575":2,"2576":1,"2577":1,"2578":1,"2585":1,"2592":1,"2615":1,"2654":1,"2671":1,"2693":1,"2703":1,"2705":1,"2708":1,"2734":2,"2735":3,"2736":1,"2737":1,"2739":1,"2746":1,"2750":1,"2751":1,"2753":1,"2754":2,"2757":3}}],["alleviate",{"2":{"1410":1,"1527":1}}],["allocation",{"2":{"2543":1}}],["allocate",{"2":{"1820":1,"2142":1,"2576":1}}],["allocated",{"2":{"689":1,"2576":1}}],["allowing",{"2":{"64":1,"82":1,"98":1,"103":1,"107":1,"109":1,"125":1,"126":1,"185":1,"229":1,"234":1,"496":1,"592":1,"606":1,"681":1,"1335":1,"1375":1,"1684":1,"1725":1,"1864":1,"1872":1,"1946":1,"2031":1,"2129":1,"2263":1,"2441":2,"2577":3,"2593":1,"2737":1}}],["allowed",{"2":{"28":1,"173":1,"189":1,"459":1,"659":1,"1670":1,"1673":1,"2128":1,"2161":1,"2595":1,"2737":1}}],["allows",{"2":{"24":1,"30":1,"33":1,"46":1,"49":3,"50":1,"99":1,"105":2,"107":2,"152":1,"153":1,"154":1,"164":1,"166":2,"172":1,"228":2,"230":2,"231":2,"246":1,"247":1,"262":1,"265":1,"309":1,"310":1,"328":1,"370":1,"374":1,"403":1,"405":1,"413":1,"502":1,"505":1,"508":1,"511":1,"515":3,"519":1,"597":2,"611":1,"660":1,"689":1,"1217":1,"1331":1,"1332":1,"1334":1,"1364":1,"1377":1,"1385":1,"1405":1,"1423":1,"1447":1,"1454":1,"1457":1,"1459":1,"1494":1,"1498":2,"1556":1,"1563":1,"1573":1,"1581":1,"1662":1,"1670":1,"1678":1,"1723":1,"1787":1,"1798":1,"1804":2,"1807":1,"1821":1,"1836":1,"1849":1,"1851":2,"1858":1,"1918":1,"1944":1,"1959":1,"2072":1,"2130":1,"2131":3,"2154":1,"2162":1,"2226":1,"2228":1,"2241":2,"2263":8,"2289":1,"2311":1,"2327":1,"2349":1,"2355":1,"2429":1,"2457":1,"2490":1,"2492":1,"2510":1,"2523":1,"2534":1,"2559":1,"2566":1,"2575":1,"2577":2,"2627":1,"2628":1,"2645":1,"2672":1,"2737":1,"2753":1}}],["allow",{"0":{"164":1,"1519":1},"2":{"6":2,"10":1,"45":1,"49":1,"63":4,"65":2,"70":1,"74":5,"90":2,"93":2,"99":1,"110":1,"113":1,"114":7,"118":1,"125":3,"142":1,"149":1,"160":5,"172":1,"176":7,"185":3,"189":1,"191":6,"199":5,"202":1,"203":1,"211":2,"213":1,"222":2,"234":1,"236":6,"249":2,"277":1,"334":1,"429":1,"431":2,"499":1,"505":1,"560":2,"567":1,"606":1,"695":1,"699":1,"1129":1,"1174":1,"1195":1,"1269":1,"1271":1,"1287":1,"1292":1,"1299":1,"1335":2,"1340":1,"1353":1,"1356":1,"1370":1,"1385":1,"1445":1,"1448":1,"1459":1,"1519":2,"1531":1,"1549":1,"1554":1,"1560":1,"1655":1,"1658":1,"1671":3,"1716":2,"1718":1,"1853":2,"1872":1,"2145":1,"2169":1,"2170":1,"2226":1,"2228":1,"2250":1,"2305":1,"2311":1,"2396":1,"2398":1,"2403":1,"2411":1,"2490":1,"2491":1,"2564":1,"2567":1,"2571":1,"2577":2,"2644":1,"2648":1,"2661":1,"2746":1}}],["alls",{"2":{"211":2}}],["all|txbolt|geminipr",{"2":{"176":1}}],["allison",{"2":{"143":4,"211":1}}],["all",{"0":{"426":1,"649":1,"677":1,"743":1,"747":1,"770":1,"774":1,"802":1,"806":1,"834":1,"838":1,"869":1,"873":1,"903":1,"907":1,"937":1,"941":1,"971":1,"975":1,"1005":1,"1009":1,"1039":1,"1043":1,"1073":1,"1077":1,"1107":1,"1111":1,"1160":1,"1164":1,"1381":1,"1745":1,"1972":1,"2564":1},"1":{"650":1,"678":1,"744":1,"748":1,"771":1,"775":1,"803":1,"807":1,"835":1,"839":1,"870":1,"874":1,"904":1,"908":1,"938":1,"942":1,"972":1,"976":1,"1006":1,"1010":1,"1040":1,"1044":1,"1074":1,"1078":1,"1108":1,"1112":1,"1161":1,"1165":1,"1746":1,"1973":1},"2":{"1":1,"3":1,"4":1,"7":1,"8":1,"14":1,"15":1,"16":1,"22":1,"25":1,"26":1,"32":1,"36":1,"49":3,"57":1,"65":1,"69":1,"77":1,"83":1,"98":1,"111":2,"113":1,"114":4,"120":1,"124":1,"126":1,"134":1,"149":1,"160":1,"163":2,"176":2,"182":1,"191":2,"194":2,"199":2,"204":1,"211":14,"249":1,"255":1,"265":2,"266":1,"268":3,"277":1,"313":2,"317":1,"318":1,"322":1,"331":1,"336":2,"349":2,"351":1,"352":1,"359":1,"360":2,"370":2,"374":2,"375":2,"382":1,"383":1,"387":1,"396":1,"400":3,"401":1,"429":1,"433":6,"435":1,"437":1,"451":1,"455":2,"462":1,"466":1,"482":1,"483":2,"496":2,"500":1,"505":1,"515":1,"530":4,"533":1,"538":1,"540":1,"546":1,"556":2,"557":1,"560":1,"572":2,"580":1,"587":1,"593":2,"594":2,"597":1,"612":1,"626":1,"627":2,"635":1,"649":1,"654":1,"661":1,"677":1,"688":1,"693":1,"694":2,"701":2,"734":1,"743":1,"747":1,"760":1,"770":1,"774":1,"792":1,"802":1,"806":1,"822":1,"834":1,"838":1,"857":1,"869":1,"873":1,"891":1,"903":1,"907":1,"925":1,"937":1,"941":1,"959":1,"971":1,"975":1,"993":1,"1005":1,"1009":1,"1027":1,"1039":1,"1043":1,"1061":1,"1073":1,"1077":1,"1095":1,"1107":1,"1111":1,"1128":1,"1148":1,"1160":1,"1164":1,"1215":1,"1223":1,"1241":1,"1255":1,"1265":2,"1270":1,"1271":1,"1273":1,"1300":2,"1312":1,"1325":1,"1326":3,"1329":1,"1332":2,"1335":1,"1336":1,"1338":1,"1341":5,"1346":3,"1354":1,"1355":1,"1357":1,"1359":2,"1371":1,"1372":1,"1373":1,"1376":1,"1377":1,"1381":3,"1383":1,"1385":5,"1394":1,"1398":3,"1403":1,"1404":1,"1405":1,"1410":1,"1416":1,"1431":1,"1432":1,"1451":2,"1459":1,"1471":1,"1497":1,"1499":1,"1510":1,"1518":4,"1522":1,"1524":1,"1525":2,"1530":1,"1560":1,"1570":1,"1572":1,"1573":1,"1651":1,"1657":1,"1659":1,"1663":1,"1665":2,"1670":2,"1671":1,"1672":1,"1673":2,"1674":1,"1686":2,"1722":2,"1725":2,"1726":3,"1730":1,"1745":1,"1791":2,"1793":2,"1806":1,"1820":1,"1822":3,"1823":2,"1826":4,"1842":1,"1855":1,"1857":1,"1864":1,"1869":1,"1871":1,"1879":1,"1921":1,"1936":1,"1946":2,"1947":3,"1948":2,"1949":4,"1954":1,"1958":1,"1972":1,"2037":1,"2041":1,"2044":3,"2063":1,"2066":1,"2072":1,"2075":1,"2106":4,"2107":7,"2112":2,"2113":1,"2128":1,"2132":1,"2142":1,"2145":1,"2148":1,"2149":3,"2155":1,"2162":4,"2165":2,"2167":1,"2168":1,"2171":1,"2177":1,"2181":1,"2182":1,"2183":4,"2229":1,"2230":1,"2235":1,"2240":1,"2252":2,"2255":1,"2260":1,"2262":13,"2263":4,"2270":1,"2272":1,"2273":1,"2275":1,"2276":1,"2279":2,"2280":1,"2294":2,"2295":1,"2297":1,"2299":1,"2302":4,"2305":1,"2308":1,"2311":3,"2313":1,"2325":1,"2326":1,"2344":1,"2347":1,"2353":2,"2355":1,"2367":1,"2371":2,"2374":1,"2401":1,"2405":1,"2410":1,"2411":1,"2420":1,"2424":1,"2431":1,"2438":1,"2447":2,"2448":1,"2450":1,"2458":1,"2461":1,"2468":5,"2475":1,"2477":1,"2478":1,"2480":1,"2499":1,"2502":3,"2504":1,"2506":1,"2514":1,"2521":1,"2526":1,"2529":1,"2530":1,"2534":1,"2541":1,"2542":1,"2546":1,"2548":2,"2553":1,"2564":2,"2566":7,"2567":1,"2568":1,"2571":1,"2574":1,"2576":11,"2577":5,"2585":2,"2586":1,"2592":2,"2593":1,"2647":1,"2656":1,"2671":1,"2686":1,"2698":2,"2706":1,"2708":2,"2711":1,"2712":1,"2722":1,"2724":1,"2727":1,"2728":1,"2735":3,"2736":3,"2740":1,"2744":1,"2747":1,"2749":1,"2752":1,"2754":3,"2755":1,"2757":2}}],["ast1109mltrq",{"2":{"2528":1}}],["astr",{"2":{"2378":1,"2399":1}}],["astro65",{"2":{"114":1}}],["asterisk",{"2":{"2355":1,"2378":1,"2394":1,"2399":1}}],["asian",{"2":{"2181":1}}],["aside",{"2":{"1300":1,"2325":1}}],["as5",{"2":{"1793":1,"2371":1}}],["as400",{"2":{"2355":1,"2394":1}}],["as4",{"2":{"1793":1,"2371":1}}],["as3",{"2":{"1793":1,"2371":1}}],["as2",{"2":{"1793":1,"2371":1}}],["as1",{"2":{"1793":1,"2371":1}}],["asd",{"2":{"1684":2}}],["asdf2",{"2":{"390":5}}],["ask",{"0":{"356":1},"2":{"466":1,"551":3,"559":1,"560":1,"2252":1,"2255":1,"2292":1,"2418":1,"2450":1,"2512":1,"2568":1,"2745":1}}],["asked",{"0":{"1237":1,"1256":1},"1":{"1238":1,"1239":1,"1240":1,"1241":1,"1242":1,"1243":1,"1257":1,"1258":1,"1259":1,"1260":1,"1261":1,"1262":1,"1263":1,"1264":1,"1265":1},"2":{"265":1,"275":1,"626":1,"2351":1,"2450":1,"2567":1}}],["aspects",{"2":{"313":1,"1346":1,"1498":1}}],["asynchronously",{"2":{"334":1}}],["asynchronous",{"2":{"312":1,"318":1}}],["asyncusb",{"2":{"266":1}}],["async",{"0":{"263":1},"2":{"266":1,"277":1}}],["asymmetric",{"2":{"160":1,"1326":2}}],["asym",{"2":{"114":1,"1326":5,"1329":1,"2674":1}}],["ashpil",{"2":{"207":2}}],["ascii",{"0":{"1277":1,"2089":1,"2588":1},"1":{"2090":1},"2":{"176":2,"1359":1,"1451":1,"1923":2,"2072":1,"2074":1,"2075":1,"2076":1,"2081":1,"2083":1,"2085":1,"2087":1,"2089":1,"2090":1,"2575":8,"2585":2,"2587":3,"2588":6,"2589":3,"2590":2,"2672":2,"2676":1,"2702":3}}],["asst",{"2":{"2355":1,"2393":1}}],["associate",{"2":{"2171":1}}],["associated",{"2":{"175":1,"240":1,"317":1,"503":1,"504":1,"554":2,"1451":1,"2147":1,"2148":1,"2171":3,"2311":1,"2535":1,"2567":1,"2599":1,"2600":3,"2688":1,"2695":1}}],["assistance",{"2":{"2450":1}}],["assistant",{"2":{"2355":2,"2393":2}}],["assist",{"2":{"1264":1,"2047":1}}],["assigns",{"2":{"2321":1,"2616":1}}],["assigned",{"2":{"629":1,"1525":1,"1853":1,"1854":1}}],["assigning",{"2":{"570":1,"2277":1,"2524":1}}],["assignment",{"0":{"2747":1},"2":{"133":1,"134":2,"473":1,"2564":1,"2686":1}}],["assignments",{"2":{"17":1,"114":1,"1530":2,"2530":1,"2576":2}}],["assign",{"2":{"48":1,"235":1,"629":1,"1235":1,"1236":1,"1557":1,"1652":1,"1724":1,"1859":1,"1930":1,"1945":1,"2042":1,"2325":2,"2396":1,"2663":1,"2701":1}}],["assembled",{"2":{"1827":1}}],["assembler",{"2":{"134":1}}],["assertion",{"2":{"335":1}}],["assert",{"2":{"334":1,"1181":1,"1539":1,"1541":1,"1543":1,"2587":1,"2588":1,"2593":1,"2594":1,"2596":1,"2598":1}}],["assuming",{"2":{"696":4,"1959":1,"2149":1,"2169":1,"2577":2}}],["assume",{"2":{"334":1,"567":1,"587":1,"2256":1,"2445":1,"2742":1}}],["assumes",{"2":{"322":1,"1122":1,"1362":1,"1813":1,"2076":1,"2112":1,"2116":1,"2124":1,"2128":1,"2131":2,"2137":1,"2169":1,"2255":1,"2256":1,"2472":1,"2541":1,"2702":1,"2742":2}}],["assumed",{"2":{"14":1,"141":1,"201":1,"278":1,"416":1,"509":1,"1314":1,"1332":1,"1731":1,"1955":1,"2124":1,"2152":1,"2267":1,"2513":1,"2544":1}}],["assumptions",{"2":{"149":1,"191":1}}],["as",{"0":{"6":1,"285":1,"1668":1,"1792":1,"1870":1,"2308":1,"2329":1,"2331":1,"2333":1},"1":{"1673":1,"1674":1,"1675":1,"1871":1,"2330":1,"2332":1,"2334":1},"2":{"6":1,"8":1,"31":2,"37":1,"49":3,"50":5,"55":1,"56":1,"57":1,"65":1,"67":1,"69":1,"76":1,"86":1,"87":1,"90":1,"99":1,"103":2,"107":2,"114":2,"116":1,"118":1,"120":1,"123":1,"124":2,"125":1,"126":2,"131":1,"132":4,"149":1,"152":2,"153":3,"156":2,"160":2,"163":1,"166":1,"169":1,"170":1,"173":2,"175":1,"176":3,"179":1,"184":2,"185":1,"189":1,"191":2,"194":2,"198":5,"199":2,"201":3,"211":1,"213":4,"215":3,"224":5,"228":1,"229":3,"230":1,"231":1,"232":3,"233":1,"234":3,"235":1,"236":1,"238":1,"240":3,"243":3,"244":1,"246":1,"249":2,"254":1,"262":1,"263":7,"265":2,"266":1,"272":2,"273":1,"275":1,"276":3,"278":1,"292":1,"303":1,"313":2,"317":1,"331":3,"334":1,"335":1,"341":1,"352":3,"363":1,"371":1,"374":5,"385":1,"401":1,"402":1,"403":1,"404":1,"414":1,"430":2,"432":3,"445":2,"453":4,"454":1,"455":3,"457":1,"461":1,"462":1,"466":2,"468":1,"472":2,"473":1,"479":1,"483":2,"487":1,"493":1,"505":4,"511":3,"512":2,"513":2,"515":1,"516":1,"523":1,"524":1,"529":5,"533":1,"534":1,"539":1,"551":2,"554":1,"557":1,"560":2,"562":1,"568":1,"571":1,"575":2,"576":2,"581":2,"584":1,"586":4,"587":4,"592":5,"598":1,"606":4,"607":1,"610":1,"612":2,"619":1,"620":1,"625":3,"626":2,"628":3,"629":4,"630":2,"635":3,"639":1,"641":1,"654":1,"656":3,"660":2,"662":1,"669":1,"681":1,"684":5,"685":2,"689":1,"690":2,"691":2,"692":1,"694":6,"696":8,"700":1,"701":1,"703":1,"732":1,"792":1,"822":1,"852":4,"857":1,"891":1,"925":1,"959":1,"993":1,"1023":4,"1027":1,"1057":4,"1061":1,"1095":1,"1121":1,"1122":2,"1123":2,"1126":4,"1127":1,"1129":3,"1130":1,"1134":1,"1143":1,"1148":1,"1175":1,"1177":4,"1181":1,"1198":2,"1216":1,"1217":1,"1218":2,"1225":1,"1234":1,"1236":1,"1240":1,"1242":1,"1254":1,"1258":1,"1265":1,"1283":1,"1287":2,"1294":2,"1298":1,"1300":2,"1302":1,"1303":2,"1331":1,"1332":4,"1335":6,"1336":2,"1338":3,"1339":1,"1340":2,"1341":1,"1343":1,"1344":1,"1345":1,"1346":1,"1347":1,"1354":1,"1359":3,"1361":1,"1364":1,"1366":1,"1368":1,"1376":1,"1377":2,"1378":2,"1379":2,"1380":2,"1385":3,"1387":1,"1391":2,"1392":1,"1395":1,"1396":2,"1398":1,"1399":2,"1403":1,"1405":2,"1411":1,"1412":1,"1414":2,"1416":1,"1427":1,"1430":1,"1431":3,"1432":1,"1434":6,"1435":6,"1436":3,"1440":2,"1441":2,"1445":2,"1446":1,"1447":2,"1451":8,"1453":2,"1454":2,"1459":2,"1462":1,"1492":1,"1496":1,"1498":2,"1499":4,"1500":3,"1503":1,"1509":1,"1511":2,"1512":1,"1515":1,"1517":1,"1518":4,"1522":1,"1525":1,"1527":3,"1528":1,"1538":1,"1551":1,"1552":1,"1553":1,"1560":1,"1562":2,"1573":3,"1577":1,"1579":1,"1581":1,"1582":1,"1594":1,"1630":2,"1631":1,"1633":1,"1634":1,"1638":1,"1641":1,"1651":1,"1654":2,"1666":2,"1668":1,"1670":5,"1675":2,"1676":1,"1677":1,"1683":1,"1685":1,"1714":1,"1716":2,"1719":1,"1720":1,"1722":2,"1723":1,"1725":3,"1728":1,"1729":1,"1733":1,"1788":2,"1791":1,"1793":1,"1802":2,"1803":2,"1805":1,"1807":3,"1814":1,"1815":1,"1820":1,"1821":1,"1822":1,"1824":1,"1829":1,"1842":2,"1849":3,"1853":1,"1854":1,"1864":6,"1865":7,"1866":1,"1868":1,"1869":1,"1871":1,"1873":1,"1874":1,"1876":2,"1877":1,"1878":1,"1879":2,"1880":1,"1902":1,"1907":1,"1912":1,"1915":1,"1918":2,"1933":3,"1934":1,"1935":1,"1939":2,"1940":2,"1941":4,"1944":1,"1946":3,"1948":1,"1950":4,"1952":1,"1957":2,"2017":1,"2034":1,"2041":1,"2042":2,"2046":1,"2059":1,"2060":1,"2063":2,"2072":1,"2075":1,"2106":1,"2107":1,"2108":4,"2112":1,"2113":2,"2114":3,"2118":1,"2122":1,"2125":1,"2126":1,"2128":4,"2129":1,"2130":1,"2131":3,"2133":2,"2134":1,"2139":1,"2143":1,"2146":2,"2147":1,"2148":1,"2149":3,"2150":4,"2152":2,"2153":1,"2155":1,"2157":2,"2161":1,"2162":1,"2168":3,"2169":2,"2170":4,"2171":4,"2181":2,"2182":3,"2183":4,"2221":1,"2227":1,"2228":1,"2229":2,"2230":1,"2231":4,"2232":1,"2234":2,"2235":1,"2236":1,"2237":1,"2238":4,"2240":1,"2241":1,"2242":1,"2245":1,"2247":1,"2249":1,"2250":1,"2252":3,"2254":1,"2262":5,"2263":5,"2267":4,"2268":2,"2269":1,"2270":1,"2272":1,"2273":1,"2274":1,"2275":2,"2276":6,"2277":1,"2279":1,"2280":1,"2292":1,"2294":2,"2295":1,"2296":1,"2297":1,"2299":3,"2300":1,"2302":1,"2303":3,"2305":1,"2306":2,"2308":1,"2311":6,"2313":1,"2323":1,"2324":1,"2329":1,"2331":1,"2333":1,"2341":1,"2344":1,"2347":1,"2348":3,"2349":1,"2350":1,"2353":1,"2355":2,"2358":6,"2367":1,"2370":6,"2371":1,"2394":1,"2396":7,"2397":1,"2401":2,"2402":1,"2405":1,"2406":2,"2408":2,"2410":1,"2421":1,"2427":1,"2441":1,"2442":1,"2443":1,"2445":3,"2448":2,"2458":2,"2460":1,"2463":1,"2466":1,"2468":1,"2475":2,"2477":1,"2479":2,"2483":1,"2490":5,"2491":1,"2492":3,"2501":2,"2503":3,"2506":3,"2508":1,"2511":1,"2513":1,"2514":1,"2519":2,"2523":2,"2524":2,"2525":1,"2526":1,"2533":1,"2542":1,"2543":1,"2544":1,"2546":5,"2548":2,"2549":1,"2550":3,"2552":1,"2553":1,"2554":1,"2556":1,"2564":2,"2566":13,"2567":4,"2568":1,"2569":2,"2570":1,"2571":2,"2573":6,"2574":1,"2575":6,"2576":1,"2577":10,"2584":1,"2585":1,"2589":1,"2592":1,"2601":1,"2607":1,"2608":1,"2614":3,"2615":2,"2616":2,"2619":2,"2620":3,"2622":1,"2628":1,"2654":2,"2660":1,"2666":1,"2671":1,"2672":2,"2677":2,"2686":3,"2699":2,"2701":1,"2702":4,"2704":2,"2709":2,"2711":1,"2718":2,"2719":2,"2720":1,"2728":6,"2734":2,"2735":8,"2736":3,"2737":3,"2738":1,"2741":1,"2743":2,"2745":2,"2749":1,"2752":1,"2757":2}}],["at25sf128a",{"2":{"2544":2}}],["ation",{"2":{"1943":1}}],["atm32u4dfu",{"2":{"629":1}}],["atm16u4",{"2":{"629":1}}],["atmel",{"0":{"487":1,"493":1,"2230":1,"2343":1},"1":{"2231":1,"2232":1},"2":{"111":1,"240":3,"493":1,"514":2,"629":7,"2230":2,"2343":1,"2348":1,"2450":1,"2453":2,"2622":1,"2623":1}}],["atmega16",{"2":{"633":1,"702":2,"1176":1,"1197":2,"1466":2,"1467":2}}],["atmega16u4",{"2":{"487":1,"2343":1}}],["atmega16u2",{"2":{"64":1,"92":1,"487":1,"629":1}}],["atmega32a",{"2":{"235":1,"487":1,"633":1,"702":1,"1176":1,"1197":1,"1466":1,"1467":1,"2345":1,"2346":2}}],["atmega32u4",{"0":{"1905":1},"2":{"70":1,"111":1,"385":1,"487":1,"514":1,"638":1,"655":1,"663":1,"1238":4,"1240":1,"1293":1,"1387":1,"1821":1,"1907":1,"2114":1,"2269":5,"2343":1,"2344":1,"2347":1,"2450":1,"2453":5,"2545":1,"2553":1,"2718":1,"2743":1}}],["atmega32u2",{"2":{"63":1,"64":1,"487":1,"629":1}}],["atmega328p",{"2":{"64":1,"487":1,"2236":1,"2346":2}}],["atmega328",{"2":{"64":1,"487":1,"633":2,"702":1,"1176":1,"1197":1,"1466":1,"1467":1}}],["atlas",{"2":{"211":1}}],["atsamd51j18a",{"2":{"493":1}}],["atsam",{"0":{"493":1},"2":{"75":1,"114":4,"134":1,"160":1,"277":1,"493":1,"696":1}}],["atop",{"2":{"69":1}}],["atomically",{"2":{"698":1}}],["atomic",{"0":{"698":1},"2":{"64":1,"277":1,"698":5}}],["atom47",{"2":{"57":4,"114":1}}],["at90usb1286",{"2":{"2269":1}}],["at90usb128",{"2":{"487":1,"629":1,"2335":2,"2343":2}}],["at90usb162",{"2":{"74":1,"487":1,"1466":1,"1467":1}}],["at90usb64",{"2":{"487":1,"629":1,"633":1,"702":1,"1176":1,"1197":1,"1466":1,"1467":1,"2343":2}}],["at90usb",{"2":{"63":1}}],["attain",{"2":{"2566":1}}],["attacking",{"2":{"1406":1}}],["attach",{"0":{"2581":1},"2":{"2581":4}}],["attachment",{"2":{"1289":1,"2581":1}}],["attaching",{"2":{"82":1,"2581":1}}],["attached",{"2":{"49":1,"1462":1,"1533":1,"1576":2,"1577":1,"1849":1,"2031":1,"2125":1,"2268":3,"2311":1}}],["attribution",{"2":{"2553":2}}],["attribute",{"2":{"436":1,"438":1,"439":1,"566":4,"1383":2,"1385":1,"1581":1,"2228":1,"2587":1,"2588":1,"2589":2,"2593":1,"2594":1,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1,"2709":1}}],["attributes",{"2":{"110":1,"435":1,"2513":2}}],["attractive",{"2":{"2270":1}}],["attrs",{"2":{"1254":2}}],["attiny85",{"2":{"1220":2}}],["attenuate",{"2":{"1842":5}}],["attenuation",{"2":{"176":1,"191":1,"1842":6}}],["attention",{"2":{"341":1,"618":1,"2125":1,"2355":1,"2392":1}}],["attempted",{"2":{"263":1,"1312":1,"2450":1}}],["attempts",{"2":{"87":1,"303":1,"660":1,"2066":1,"2128":2,"2256":1,"2742":1}}],["attempting",{"2":{"51":1,"123":1,"240":1,"1252":1,"2130":1,"2353":1,"2453":1,"2524":1}}],["attempt",{"2":{"51":1,"123":1,"182":1,"726":2,"1385":1,"2128":3,"2221":1,"2234":1,"2270":1,"2454":1}}],["at101",{"2":{"37":2,"159":2,"160":1}}],["at",{"0":{"2167":1},"2":{"4":1,"11":1,"21":1,"25":1,"28":1,"65":2,"73":1,"75":1,"114":1,"124":1,"134":2,"149":2,"152":1,"156":1,"157":1,"191":2,"199":1,"203":1,"211":1,"222":1,"229":2,"231":1,"241":2,"249":3,"251":1,"265":3,"266":2,"277":1,"315":2,"336":1,"341":1,"349":1,"350":1,"352":1,"414":1,"430":2,"433":1,"453":5,"462":2,"465":1,"470":1,"482":1,"483":2,"485":1,"496":2,"497":1,"508":1,"515":1,"517":2,"533":2,"534":2,"545":2,"549":1,"557":1,"567":1,"568":3,"574":1,"576":1,"584":1,"586":1,"587":2,"588":1,"597":1,"598":2,"605":1,"614":1,"624":1,"626":1,"627":2,"631":1,"635":1,"660":1,"668":1,"684":1,"689":3,"692":1,"698":1,"726":1,"733":1,"759":1,"791":1,"821":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1121":1,"1127":1,"1130":1,"1147":1,"1181":2,"1201":1,"1226":1,"1230":1,"1241":1,"1242":1,"1250":1,"1253":1,"1270":1,"1300":1,"1311":1,"1312":1,"1329":2,"1335":1,"1336":2,"1380":1,"1383":1,"1385":1,"1390":1,"1394":1,"1397":3,"1398":1,"1400":1,"1405":1,"1416":2,"1440":1,"1441":1,"1446":1,"1451":2,"1452":2,"1459":2,"1469":1,"1470":1,"1471":1,"1499":2,"1501":1,"1508":1,"1514":1,"1522":1,"1530":1,"1531":1,"1533":2,"1548":1,"1553":1,"1555":1,"1559":1,"1562":2,"1577":1,"1581":1,"1589":1,"1620":1,"1621":1,"1632":1,"1675":1,"1676":1,"1697":1,"1731":1,"1733":1,"1798":1,"1799":1,"1802":2,"1803":1,"1804":6,"1805":1,"1806":1,"1807":3,"1814":1,"1815":1,"1821":1,"1822":12,"1824":1,"1833":1,"1835":1,"1842":1,"1849":3,"1851":1,"1864":1,"1907":1,"1921":1,"1948":1,"1949":7,"1955":1,"1957":1,"1959":1,"2032":1,"2034":1,"2036":1,"2040":1,"2044":1,"2051":5,"2054":12,"2058":1,"2105":1,"2111":1,"2112":1,"2117":2,"2120":2,"2125":4,"2130":1,"2139":1,"2143":11,"2145":1,"2146":1,"2150":2,"2151":1,"2152":2,"2162":1,"2169":2,"2171":1,"2181":1,"2184":2,"2226":3,"2243":1,"2245":1,"2247":1,"2249":1,"2255":1,"2262":1,"2263":3,"2270":1,"2272":1,"2273":3,"2274":1,"2279":1,"2302":2,"2303":2,"2307":1,"2309":1,"2311":4,"2317":1,"2322":1,"2326":1,"2349":1,"2353":9,"2378":1,"2384":2,"2399":1,"2401":1,"2404":1,"2405":1,"2411":2,"2417":1,"2422":1,"2423":1,"2432":1,"2438":1,"2443":1,"2447":1,"2450":1,"2454":1,"2466":1,"2467":1,"2468":1,"2475":1,"2477":4,"2480":1,"2482":1,"2490":1,"2497":1,"2498":3,"2513":5,"2521":1,"2523":1,"2524":2,"2525":1,"2526":1,"2529":1,"2554":1,"2556":1,"2564":1,"2566":7,"2567":1,"2570":1,"2573":1,"2574":3,"2575":1,"2576":2,"2577":8,"2578":1,"2587":2,"2594":2,"2636":1,"2653":1,"2662":1,"2671":2,"2699":1,"2701":1,"2708":1,"2720":3,"2728":2,"2730":1,"2743":1,"2745":1,"2746":2,"2747":1,"2748":2,"2749":3,"2753":1,"2756":1,"2757":1}}],["atreus",{"0":{"4":1},"2":{"176":1,"277":1}}],["ancient",{"2":{"2549":1}}],["anchors",{"2":{"279":3}}],["anchor",{"2":{"222":1,"279":1}}],["analysis",{"2":{"2492":1}}],["analogue",{"2":{"2275":1}}],["analogreference",{"2":{"638":1}}],["analogreadpinadc",{"2":{"639":1}}],["analogreadpin",{"2":{"50":1,"638":1,"639":1}}],["analogread",{"2":{"50":1,"133":1,"134":1}}],["analog",{"0":{"1836":1},"2":{"49":1,"74":1,"118":2,"149":1,"191":1,"199":2,"234":6,"236":1,"249":1,"630":1,"631":1,"638":1,"1630":2,"1631":2,"1633":1,"1638":1,"1640":4,"1646":1,"1791":1,"1836":22}}],["anatomy",{"0":{"2404":1},"1":{"2405":1,"2406":1,"2407":1,"2408":1}}],["anodes",{"2":{"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1}}],["another",{"2":{"95":1,"149":2,"194":1,"233":1,"251":1,"268":1,"341":1,"450":1,"505":2,"623":1,"1320":1,"1340":1,"1359":2,"1375":1,"1391":1,"1393":1,"1396":1,"1411":1,"1431":1,"1446":1,"1451":1,"1501":1,"1515":1,"1519":1,"1524":2,"1554":1,"1573":1,"1671":1,"1674":1,"1929":1,"1930":1,"1933":1,"2118":1,"2150":1,"2152":2,"2162":1,"2169":1,"2177":1,"2235":1,"2245":1,"2247":1,"2249":1,"2309":1,"2327":1,"2348":1,"2404":1,"2477":1,"2497":1,"2498":1,"2508":1,"2566":2,"2576":2,"2651":1,"2654":1,"2729":3,"2735":4,"2736":4,"2738":3,"2751":1}}],["answer",{"2":{"465":1,"551":2,"2468":4}}],["ansi",{"0":{"35":1,"2378":1,"2397":1},"1":{"36":1,"2398":1,"2399":1},"2":{"35":1,"36":4,"99":1,"102":1,"114":1,"149":1,"159":2,"168":2,"176":1,"188":1,"191":1,"207":1,"211":4,"217":2,"226":6,"259":2,"260":1,"266":2,"277":1,"370":3,"385":1,"435":1,"1268":3,"1346":3,"1347":3,"1355":1,"1378":2,"2076":1,"2112":1,"2302":5,"2378":1,"2397":1,"2445":1,"2553":1,"2566":1,"2686":4,"2701":1,"2702":1,"2703":10}}],["anti",{"2":{"381":1,"2575":1,"2689":1}}],["anticipation",{"2":{"86":1}}],["anticipated",{"2":{"2":1,"1412":1}}],["annotation",{"2":{"480":1}}],["annotated",{"0":{"480":1}}],["announce",{"2":{"224":1,"345":1,"346":1,"349":1}}],["annepro2",{"2":{"191":1,"249":1,"266":2}}],["anim",{"2":{"2577":4}}],["animtion",{"2":{"191":1}}],["animate",{"2":{"2040":1,"2577":9}}],["animated",{"2":{"153":1,"2311":1,"2573":1,"2575":1,"2577":1}}],["animation",{"0":{"2037":1,"2038":1,"2040":1},"2":{"49":2,"160":1,"191":5,"222":1,"236":1,"249":1,"404":1,"1727":2,"1728":1,"1730":3,"1743":1,"1745":1,"1776":1,"1778":1,"1780":1,"1783":1,"1817":2,"1948":2,"1949":3,"1954":3,"1970":1,"1972":1,"2021":1,"2023":1,"2025":1,"2028":1,"2034":10,"2036":1,"2037":11,"2038":10,"2040":6,"2052":4,"2055":4,"2369":2,"2376":10,"2577":6,"2584":1,"2595":1,"2688":4,"2694":2,"2695":4}}],["animations",{"0":{"2036":1,"2049":1},"1":{"2037":1,"2038":1,"2039":1,"2040":1,"2050":1,"2051":1,"2052":1,"2053":1,"2054":1,"2055":1,"2056":1,"2057":1},"2":{"32":1,"124":5,"153":1,"176":1,"191":1,"199":1,"211":1,"222":1,"236":1,"1725":2,"1727":2,"1729":1,"1946":2,"1952":1,"2037":4,"2038":1,"2039":2,"2040":6,"2041":1,"2052":6,"2369":2,"2566":1,"2573":1,"2574":4,"2575":1,"2577":1,"2596":1,"2688":3,"2694":2,"2695":3,"2711":4}}],["angle65",{"2":{"211":1}}],["angle",{"2":{"176":2,"1849":2,"2378":2,"2399":2,"2686":1}}],["angel64",{"2":{"143":4}}],["angel17",{"2":{"143":2}}],["an",{"0":{"361":1,"608":1,"1260":1,"1436":1,"1552":1,"2473":1,"2546":1,"2547":1,"2550":1},"1":{"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"2474":1,"2475":1,"2547":1,"2548":2,"2549":2,"2550":1,"2551":1,"2552":1},"2":{"5":1,"6":1,"14":1,"49":1,"50":1,"73":2,"99":3,"103":1,"126":1,"132":1,"149":1,"158":1,"172":1,"176":1,"182":1,"194":2,"201":1,"203":2,"234":1,"248":1,"249":1,"268":1,"290":1,"304":1,"311":1,"312":1,"318":1,"319":1,"322":2,"327":2,"388":1,"405":1,"409":1,"410":1,"413":1,"414":1,"417":1,"418":1,"428":1,"430":2,"432":1,"436":1,"437":1,"453":1,"454":1,"461":1,"464":1,"465":3,"466":1,"479":1,"485":1,"500":1,"502":2,"506":1,"511":1,"515":1,"519":1,"523":1,"532":1,"540":2,"545":1,"553":1,"554":4,"559":1,"560":2,"561":2,"564":1,"569":1,"570":1,"571":1,"585":2,"606":1,"609":2,"612":1,"613":1,"616":2,"623":2,"627":1,"628":1,"629":1,"636":1,"638":1,"639":1,"641":2,"654":1,"655":1,"657":1,"663":1,"669":1,"683":1,"684":1,"685":1,"687":1,"688":1,"689":2,"690":1,"696":4,"701":1,"703":3,"714":1,"720":1,"734":1,"760":1,"792":1,"822":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1126":1,"1128":1,"1132":1,"1133":1,"1134":2,"1137":1,"1148":1,"1177":1,"1180":1,"1181":2,"1198":1,"1217":1,"1220":1,"1225":1,"1234":1,"1238":1,"1243":1,"1254":1,"1258":1,"1261":1,"1264":1,"1267":1,"1278":1,"1287":1,"1300":1,"1322":1,"1325":2,"1332":2,"1343":1,"1351":1,"1356":1,"1357":1,"1359":3,"1365":1,"1391":1,"1393":1,"1394":1,"1405":1,"1406":1,"1411":1,"1412":1,"1430":2,"1431":1,"1440":1,"1441":2,"1458":1,"1462":1,"1471":1,"1492":2,"1499":2,"1507":1,"1511":1,"1518":1,"1523":1,"1547":1,"1557":1,"1558":1,"1559":1,"1561":1,"1565":1,"1573":1,"1589":1,"1591":1,"1609":1,"1612":1,"1613":1,"1618":1,"1630":3,"1638":1,"1666":1,"1668":2,"1670":1,"1673":1,"1674":2,"1677":1,"1683":1,"1684":1,"1714":1,"1718":1,"1724":2,"1729":1,"1730":2,"1733":1,"1743":1,"1745":1,"1793":2,"1804":2,"1821":1,"1830":1,"1834":1,"1835":1,"1836":2,"1846":1,"1847":1,"1848":1,"1851":1,"1852":1,"1864":1,"1908":1,"1918":1,"1923":1,"1927":1,"1933":1,"1934":1,"1941":1,"1945":2,"1952":1,"1954":2,"1957":1,"1970":1,"1972":1,"2017":1,"2041":2,"2042":2,"2061":2,"2071":2,"2074":1,"2075":1,"2085":1,"2087":1,"2089":1,"2091":1,"2108":1,"2113":2,"2114":1,"2120":1,"2125":1,"2129":2,"2131":1,"2133":1,"2144":2,"2145":1,"2146":1,"2150":1,"2152":1,"2157":2,"2161":1,"2169":4,"2181":2,"2182":1,"2183":1,"2205":1,"2226":1,"2231":1,"2235":1,"2237":1,"2238":1,"2241":3,"2255":1,"2263":1,"2268":1,"2274":2,"2280":1,"2286":1,"2291":1,"2294":1,"2302":4,"2303":2,"2311":2,"2313":1,"2323":1,"2328":1,"2329":1,"2331":2,"2333":1,"2347":1,"2349":1,"2350":1,"2351":1,"2353":1,"2371":2,"2400":1,"2403":1,"2404":1,"2407":1,"2408":1,"2409":1,"2417":1,"2427":2,"2428":3,"2445":1,"2462":1,"2468":1,"2472":1,"2480":2,"2491":1,"2492":3,"2497":1,"2502":1,"2503":1,"2517":1,"2518":2,"2524":1,"2527":1,"2529":1,"2530":1,"2539":1,"2544":2,"2545":1,"2546":2,"2548":1,"2549":1,"2550":4,"2552":1,"2554":2,"2560":1,"2563":1,"2564":3,"2566":8,"2567":2,"2573":1,"2575":3,"2576":2,"2577":5,"2578":2,"2581":1,"2585":1,"2587":2,"2592":1,"2594":1,"2595":1,"2596":1,"2597":1,"2599":1,"2610":2,"2612":1,"2615":2,"2620":1,"2625":1,"2630":1,"2632":1,"2634":1,"2638":1,"2639":1,"2641":1,"2642":1,"2643":1,"2644":1,"2670":1,"2684":1,"2686":1,"2688":2,"2693":1,"2695":2,"2702":1,"2712":1,"2716":1,"2718":1,"2735":1,"2736":1,"2738":1,"2746":1,"2748":1}}],["anding",{"2":{"1300":1}}],["andrebrait",{"2":{"114":2,"191":1}}],["andc",{"2":{"49":1}}],["and",{"0":{"22":1,"35":2,"49":1,"50":1,"51":1,"58":1,"63":1,"64":1,"65":1,"69":1,"70":1,"74":1,"75":1,"76":1,"77":1,"87":1,"93":1,"94":1,"95":1,"113":1,"133":1,"140":1,"190":1,"229":1,"233":1,"273":1,"276":1,"436":1,"442":2,"443":1,"468":1,"478":1,"549":1,"590":1,"1225":1,"1242":1,"1243":1,"1262":1,"1265":1,"1282":1,"1284":1,"1297":1,"1318":1,"1321":1,"1335":1,"1361":1,"1370":1,"1432":1,"1515":1,"1518":1,"1553":1,"1661":1,"1662":1,"1809":1,"1828":1,"1849":1,"1853":1,"1854":1,"1873":1,"1903":1,"1914":1,"1936":1,"2036":1,"2037":1,"2038":1,"2043":1,"2049":1,"2132":1,"2170":1,"2171":1,"2182":1,"2229":1,"2283":1,"2305":1,"2318":1,"2386":1,"2401":1,"2403":1,"2406":1,"2415":1,"2472":1,"2487":1,"2496":1,"2497":1,"2535":1,"2617":1,"2751":1},"1":{"36":2,"88":1,"437":1,"438":1,"439":1,"440":1,"441":1,"443":2,"444":2,"445":2,"446":2,"447":2,"1243":1,"1336":1,"1554":1,"1555":1,"1556":1,"1937":1,"1938":1,"1939":1,"2037":1,"2038":1,"2039":1,"2040":1,"2050":1,"2051":1,"2052":1,"2053":1,"2054":1,"2055":1,"2056":1,"2057":1,"2133":1,"2230":1,"2231":1,"2232":1,"2233":1,"2234":1,"2235":1,"2236":1,"2237":1,"2238":1,"2239":1,"2240":1,"2241":1,"2242":1,"2243":1,"2244":1,"2245":1,"2246":1,"2247":1,"2248":1,"2249":1,"2319":1,"2320":1,"2321":1,"2322":1,"2323":1,"2324":1,"2325":1,"2326":1,"2402":1,"2403":1,"2407":1,"2408":1,"2488":1,"2489":1,"2497":1,"2498":1,"2499":1,"2536":1,"2537":1,"2538":1,"2618":1,"2619":1,"2620":1},"2":{"1":1,"2":2,"3":4,"4":1,"5":2,"6":1,"7":3,"8":1,"10":2,"11":1,"14":2,"15":4,"16":1,"17":1,"18":1,"21":2,"22":1,"24":2,"25":2,"28":2,"30":1,"31":3,"32":5,"33":2,"34":2,"35":1,"36":1,"37":1,"38":1,"43":1,"45":4,"49":12,"50":7,"57":1,"58":1,"63":1,"64":2,"65":3,"67":1,"69":1,"70":19,"72":1,"73":3,"74":2,"75":2,"76":1,"77":1,"84":1,"86":2,"87":2,"90":1,"92":1,"93":5,"94":3,"99":1,"103":1,"107":2,"108":1,"110":2,"113":4,"114":26,"116":1,"118":1,"119":1,"120":2,"124":3,"126":2,"128":1,"130":2,"132":2,"133":1,"134":9,"140":1,"149":10,"152":2,"153":6,"157":2,"160":6,"163":3,"169":1,"172":1,"173":2,"174":2,"175":5,"176":20,"179":1,"182":3,"185":1,"186":1,"187":1,"188":4,"189":1,"190":1,"191":23,"194":6,"195":2,"196":2,"198":6,"199":11,"201":2,"202":2,"203":2,"206":2,"210":2,"211":53,"213":3,"214":1,"218":1,"220":2,"221":1,"222":12,"224":1,"228":6,"229":2,"230":1,"231":3,"232":3,"233":3,"234":1,"235":3,"236":14,"240":2,"244":1,"245":2,"249":14,"251":2,"255":1,"256":1,"257":1,"258":1,"259":4,"262":1,"263":4,"265":2,"266":6,"268":1,"271":1,"273":2,"276":2,"277":6,"282":4,"284":1,"285":1,"288":1,"291":1,"304":5,"305":2,"307":1,"312":2,"313":1,"315":4,"316":1,"318":1,"322":3,"324":3,"328":1,"331":11,"332":1,"334":4,"335":3,"336":2,"340":1,"341":7,"349":1,"350":1,"352":2,"354":1,"355":3,"357":2,"363":4,"365":2,"366":2,"367":1,"370":2,"371":3,"374":7,"375":2,"376":4,"378":2,"381":4,"383":1,"384":1,"385":1,"386":1,"388":1,"389":1,"390":1,"391":1,"393":1,"394":1,"395":1,"396":1,"397":1,"401":3,"402":3,"403":3,"411":1,"413":3,"414":1,"424":2,"428":2,"429":1,"430":4,"431":4,"432":2,"435":2,"436":3,"441":1,"442":3,"446":2,"447":1,"448":1,"453":5,"454":4,"455":1,"457":5,"460":2,"461":1,"462":2,"465":1,"466":1,"468":1,"470":2,"471":1,"472":1,"474":1,"475":1,"479":5,"480":1,"481":5,"483":3,"484":3,"485":1,"486":1,"487":1,"495":3,"496":2,"498":2,"499":2,"501":2,"502":8,"503":1,"505":11,"506":1,"509":3,"510":2,"511":2,"512":1,"513":1,"515":6,"516":1,"519":2,"521":1,"522":3,"525":1,"527":2,"529":1,"533":1,"534":2,"537":2,"540":2,"546":1,"549":1,"550":5,"551":1,"552":3,"554":3,"556":3,"557":1,"558":1,"559":2,"560":5,"561":1,"562":2,"563":2,"564":1,"565":1,"566":3,"567":2,"570":2,"571":2,"572":1,"576":1,"578":1,"580":4,"584":1,"587":1,"588":4,"589":2,"591":2,"592":5,"597":2,"598":1,"606":9,"607":1,"609":4,"610":4,"613":3,"614":1,"615":1,"616":4,"617":2,"621":4,"622":1,"623":1,"624":4,"625":4,"626":5,"627":3,"628":5,"629":5,"630":2,"633":1,"635":4,"636":1,"639":4,"641":1,"642":1,"643":1,"654":1,"656":4,"657":3,"659":3,"660":1,"661":3,"662":1,"663":3,"665":1,"668":1,"669":1,"681":4,"684":1,"685":1,"686":1,"688":2,"689":8,"690":2,"691":2,"692":3,"696":2,"701":3,"702":2,"730":1,"733":1,"734":3,"756":1,"759":1,"760":3,"785":1,"789":3,"791":1,"792":3,"817":1,"821":1,"822":3,"849":1,"851":1,"852":1,"854":3,"856":1,"857":3,"884":1,"886":1,"888":3,"890":1,"891":3,"918":1,"922":3,"924":1,"925":3,"952":1,"956":3,"958":1,"959":3,"986":1,"990":3,"992":1,"993":3,"1020":1,"1022":1,"1023":1,"1024":3,"1026":1,"1027":3,"1054":1,"1056":1,"1057":1,"1058":3,"1060":1,"1061":3,"1088":1,"1090":1,"1092":3,"1094":1,"1095":3,"1121":4,"1122":2,"1123":1,"1125":2,"1126":1,"1127":1,"1128":1,"1129":6,"1130":2,"1132":1,"1133":1,"1134":4,"1136":1,"1144":1,"1147":1,"1148":3,"1176":2,"1194":2,"1195":1,"1197":1,"1201":2,"1212":3,"1213":1,"1215":2,"1216":1,"1217":1,"1219":1,"1221":3,"1222":2,"1223":4,"1224":2,"1225":2,"1226":2,"1227":2,"1230":2,"1235":1,"1236":1,"1237":1,"1238":1,"1240":1,"1241":2,"1243":2,"1249":1,"1252":1,"1254":2,"1258":1,"1259":1,"1261":1,"1262":2,"1263":1,"1264":2,"1265":9,"1268":3,"1269":1,"1270":5,"1271":1,"1272":2,"1273":2,"1275":1,"1276":3,"1278":1,"1279":1,"1283":1,"1284":1,"1286":1,"1287":2,"1288":2,"1290":1,"1291":1,"1293":2,"1294":1,"1298":2,"1299":30,"1300":8,"1303":4,"1310":1,"1312":1,"1314":1,"1316":2,"1317":1,"1319":1,"1320":3,"1325":3,"1326":11,"1328":1,"1329":2,"1331":8,"1332":18,"1333":3,"1334":1,"1335":6,"1336":7,"1338":2,"1339":1,"1340":4,"1341":16,"1344":2,"1346":4,"1347":2,"1349":1,"1351":1,"1352":2,"1353":2,"1354":1,"1356":1,"1359":4,"1360":3,"1361":6,"1363":1,"1364":2,"1366":2,"1368":2,"1370":1,"1371":1,"1375":1,"1376":1,"1377":2,"1378":4,"1379":2,"1380":3,"1383":3,"1384":6,"1385":10,"1386":1,"1387":2,"1388":2,"1390":1,"1391":6,"1393":2,"1394":1,"1396":3,"1397":2,"1398":4,"1402":2,"1403":2,"1404":3,"1405":5,"1406":4,"1409":2,"1411":2,"1412":2,"1413":1,"1416":3,"1417":1,"1419":1,"1423":1,"1428":1,"1429":1,"1430":2,"1431":4,"1433":1,"1434":1,"1435":5,"1436":1,"1438":3,"1439":1,"1440":6,"1441":3,"1442":1,"1445":3,"1446":3,"1447":4,"1448":5,"1450":1,"1451":8,"1452":1,"1453":1,"1454":2,"1458":1,"1459":3,"1462":1,"1463":1,"1471":1,"1492":1,"1494":2,"1495":3,"1499":4,"1500":3,"1501":1,"1503":4,"1506":3,"1508":7,"1509":1,"1511":4,"1512":2,"1515":1,"1516":1,"1518":5,"1519":2,"1520":1,"1522":1,"1523":2,"1524":2,"1525":1,"1526":1,"1528":1,"1531":2,"1533":3,"1539":1,"1540":1,"1541":1,"1542":1,"1543":1,"1544":1,"1545":2,"1547":2,"1551":1,"1552":1,"1553":6,"1555":1,"1556":2,"1557":1,"1558":1,"1559":2,"1560":3,"1561":1,"1562":1,"1563":1,"1565":1,"1568":1,"1570":1,"1573":6,"1574":2,"1576":1,"1577":3,"1578":1,"1582":4,"1587":1,"1594":1,"1600":1,"1612":1,"1614":1,"1615":1,"1621":1,"1622":2,"1628":1,"1630":1,"1632":2,"1633":6,"1634":1,"1642":1,"1644":1,"1646":1,"1651":2,"1652":1,"1654":1,"1655":2,"1659":2,"1662":1,"1665":6,"1666":2,"1668":3,"1670":7,"1671":1,"1673":4,"1674":2,"1675":4,"1676":4,"1677":5,"1680":1,"1684":1,"1685":1,"1691":1,"1717":4,"1722":1,"1725":4,"1728":4,"1729":5,"1773":1,"1787":4,"1788":1,"1791":1,"1794":1,"1798":1,"1799":1,"1802":3,"1803":3,"1804":3,"1805":4,"1806":4,"1807":6,"1809":2,"1813":2,"1814":2,"1815":2,"1816":1,"1820":2,"1821":8,"1822":9,"1824":2,"1825":1,"1828":1,"1830":6,"1832":3,"1834":1,"1836":1,"1837":2,"1838":1,"1839":2,"1841":2,"1842":2,"1844":1,"1845":1,"1846":2,"1848":1,"1849":4,"1850":1,"1851":6,"1852":4,"1853":5,"1854":6,"1855":5,"1857":2,"1858":2,"1859":7,"1860":1,"1861":2,"1862":1,"1864":4,"1865":2,"1866":1,"1867":1,"1869":1,"1871":2,"1873":2,"1874":1,"1876":1,"1878":1,"1879":2,"1880":1,"1881":1,"1890":1,"1892":1,"1902":2,"1903":2,"1905":2,"1906":2,"1907":1,"1908":1,"1911":1,"1912":1,"1914":1,"1917":1,"1918":1,"1920":2,"1921":7,"1922":1,"1923":7,"1929":1,"1930":1,"1932":1,"1933":5,"1934":1,"1935":2,"1936":3,"1937":1,"1939":2,"1940":1,"1941":2,"1943":3,"1946":4,"1948":3,"1949":10,"1951":1,"1952":5,"1959":1,"1960":1,"2012":1,"2014":1,"2016":1,"2018":1,"2032":2,"2033":2,"2034":1,"2036":1,"2037":1,"2038":1,"2039":1,"2042":5,"2043":1,"2044":2,"2051":19,"2052":1,"2053":2,"2054":2,"2055":2,"2060":2,"2061":1,"2063":1,"2064":1,"2065":1,"2069":1,"2071":1,"2078":1,"2079":1,"2099":1,"2104":1,"2107":1,"2108":3,"2109":3,"2112":6,"2114":6,"2115":1,"2116":1,"2117":4,"2118":5,"2119":1,"2120":5,"2122":2,"2124":1,"2125":2,"2126":5,"2127":2,"2128":4,"2129":3,"2130":3,"2131":7,"2132":1,"2133":4,"2134":1,"2137":1,"2139":2,"2140":1,"2142":1,"2143":7,"2144":5,"2145":1,"2146":5,"2147":1,"2148":3,"2149":2,"2150":4,"2152":3,"2154":1,"2155":2,"2157":1,"2160":3,"2161":11,"2162":8,"2164":1,"2169":11,"2170":4,"2171":6,"2172":3,"2175":2,"2177":1,"2178":1,"2181":4,"2182":10,"2183":11,"2196":1,"2197":1,"2198":1,"2217":2,"2221":1,"2225":2,"2226":3,"2228":2,"2229":4,"2230":1,"2231":5,"2232":2,"2233":3,"2234":2,"2235":2,"2236":1,"2237":2,"2238":6,"2239":1,"2240":2,"2241":2,"2242":2,"2243":2,"2244":1,"2245":1,"2246":1,"2247":1,"2248":1,"2249":1,"2250":2,"2252":3,"2254":2,"2255":11,"2259":2,"2260":2,"2261":2,"2262":6,"2263":18,"2264":1,"2266":2,"2267":3,"2268":5,"2269":2,"2270":5,"2271":1,"2272":8,"2273":12,"2274":6,"2275":2,"2276":3,"2277":3,"2278":3,"2279":9,"2280":1,"2281":1,"2284":4,"2286":2,"2292":3,"2293":1,"2294":3,"2295":3,"2296":1,"2297":1,"2299":4,"2300":5,"2301":1,"2302":3,"2303":3,"2304":1,"2305":5,"2306":2,"2307":1,"2308":2,"2309":1,"2311":12,"2313":2,"2315":2,"2317":2,"2318":1,"2319":1,"2320":2,"2322":1,"2325":1,"2327":3,"2328":2,"2331":1,"2335":3,"2341":1,"2342":1,"2343":2,"2344":3,"2345":1,"2346":2,"2347":1,"2348":4,"2349":2,"2350":2,"2351":2,"2353":5,"2355":61,"2361":1,"2367":1,"2370":25,"2373":32,"2374":13,"2385":1,"2386":36,"2388":13,"2389":1,"2391":2,"2393":2,"2394":10,"2396":26,"2397":1,"2398":1,"2401":2,"2402":2,"2403":1,"2405":7,"2406":4,"2407":2,"2408":1,"2410":19,"2411":7,"2414":2,"2415":1,"2417":3,"2418":3,"2419":1,"2420":2,"2421":1,"2423":3,"2425":2,"2428":2,"2429":4,"2430":1,"2431":2,"2435":1,"2436":2,"2437":1,"2438":1,"2439":1,"2440":4,"2441":3,"2442":1,"2443":2,"2444":1,"2445":1,"2446":1,"2447":1,"2448":2,"2450":10,"2451":1,"2452":1,"2454":5,"2455":2,"2456":1,"2457":4,"2458":1,"2460":1,"2461":2,"2462":1,"2464":1,"2468":10,"2472":3,"2473":1,"2475":2,"2476":1,"2477":16,"2478":2,"2479":4,"2480":6,"2490":11,"2492":2,"2496":1,"2497":3,"2498":2,"2501":2,"2502":3,"2503":1,"2504":1,"2506":2,"2507":1,"2508":4,"2509":3,"2510":3,"2512":4,"2513":9,"2514":2,"2516":3,"2517":1,"2518":6,"2519":5,"2522":1,"2523":3,"2524":2,"2525":6,"2526":1,"2529":2,"2530":2,"2533":1,"2535":2,"2540":1,"2541":3,"2542":2,"2543":4,"2544":1,"2546":1,"2548":1,"2549":3,"2550":1,"2553":2,"2555":1,"2556":5,"2557":3,"2558":4,"2559":2,"2562":1,"2564":10,"2565":1,"2566":23,"2567":3,"2568":1,"2569":4,"2570":1,"2571":4,"2573":1,"2574":2,"2575":6,"2576":11,"2577":20,"2578":3,"2581":1,"2582":1,"2584":1,"2585":4,"2586":1,"2587":2,"2590":1,"2591":1,"2592":6,"2594":1,"2596":1,"2603":2,"2605":4,"2607":2,"2608":1,"2611":3,"2612":1,"2614":4,"2615":8,"2616":3,"2619":1,"2622":1,"2625":1,"2633":1,"2637":1,"2638":1,"2643":1,"2648":1,"2651":1,"2652":1,"2654":1,"2656":1,"2657":1,"2659":1,"2662":3,"2665":1,"2670":1,"2671":4,"2674":2,"2677":1,"2683":2,"2686":4,"2687":1,"2689":2,"2697":2,"2700":1,"2701":2,"2702":2,"2704":1,"2705":6,"2706":1,"2707":1,"2710":1,"2711":1,"2712":1,"2714":1,"2718":3,"2719":4,"2720":2,"2721":1,"2722":1,"2723":1,"2724":1,"2725":1,"2727":3,"2728":14,"2729":5,"2730":1,"2734":1,"2735":12,"2736":4,"2737":3,"2738":7,"2740":1,"2743":3,"2744":3,"2745":2,"2746":1,"2747":1,"2748":2,"2749":1,"2750":2,"2751":1,"2752":4,"2753":3,"2756":2,"2757":5}}],["anymore",{"2":{"1511":1}}],["anything",{"2":{"352":1,"568":1,"574":1,"659":1,"660":1,"1260":1,"1336":1,"1353":1,"1383":1,"1404":1,"1933":1,"2145":1,"2263":1,"2322":1,"2348":1,"2405":1,"2411":1,"2480":1,"2513":1,"2516":1,"2521":1,"2526":1,"2567":1,"2667":1,"2737":1}}],["anyways",{"2":{"1137":1}}],["anyway",{"2":{"215":1,"505":1}}],["anywhere",{"2":{"201":1,"327":1,"2169":1,"2183":2,"2276":1}}],["anyone",{"2":{"123":1,"1353":1,"1450":1,"2250":1}}],["any",{"0":{"533":1,"571":1},"1":{"572":1,"573":1},"2":{"0":1,"5":1,"9":1,"19":1,"21":1,"22":1,"28":1,"36":1,"39":1,"43":1,"46":1,"49":1,"52":1,"70":1,"73":1,"99":1,"103":1,"124":1,"126":1,"131":1,"142":1,"152":1,"173":1,"175":1,"182":2,"194":1,"215":1,"245":2,"257":1,"258":1,"259":2,"265":2,"268":1,"275":3,"276":2,"290":1,"311":1,"317":2,"318":1,"337":3,"350":1,"370":1,"376":1,"385":1,"387":1,"388":1,"395":1,"415":1,"453":1,"455":1,"461":1,"466":1,"480":1,"485":1,"486":1,"488":1,"515":2,"533":1,"541":1,"554":3,"556":3,"562":1,"567":1,"571":1,"588":1,"592":1,"609":1,"621":2,"623":1,"626":1,"628":1,"635":1,"656":2,"707":1,"1134":1,"1142":1,"1177":1,"1179":1,"1200":1,"1221":1,"1236":1,"1240":1,"1242":2,"1243":1,"1264":1,"1292":1,"1300":4,"1326":2,"1329":5,"1332":3,"1338":1,"1343":1,"1347":1,"1359":2,"1379":1,"1380":2,"1383":1,"1385":4,"1394":1,"1398":1,"1401":1,"1414":1,"1430":1,"1431":1,"1435":1,"1440":2,"1446":1,"1457":1,"1459":1,"1466":1,"1467":1,"1495":1,"1499":1,"1500":1,"1516":1,"1518":1,"1525":1,"1563":1,"1573":1,"1596":1,"1633":1,"1654":1,"1659":1,"1671":1,"1673":2,"1676":1,"1726":2,"1729":1,"1830":1,"1851":1,"1864":2,"1873":1,"1874":1,"1876":2,"1879":2,"1905":2,"1906":1,"1908":1,"1929":1,"1933":2,"1947":2,"1952":1,"2041":1,"2042":1,"2063":1,"2064":1,"2073":1,"2109":1,"2113":1,"2114":1,"2117":1,"2130":2,"2131":1,"2144":1,"2145":1,"2152":1,"2169":2,"2170":1,"2171":2,"2176":1,"2183":1,"2228":1,"2230":1,"2233":2,"2235":1,"2236":1,"2237":2,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":3,"2247":3,"2249":3,"2250":1,"2252":1,"2261":1,"2262":1,"2264":1,"2274":1,"2276":1,"2303":1,"2307":1,"2311":1,"2347":1,"2396":1,"2398":1,"2405":1,"2418":1,"2423":1,"2424":1,"2433":1,"2442":1,"2448":1,"2460":1,"2475":1,"2477":1,"2478":1,"2479":1,"2480":2,"2491":4,"2510":1,"2517":1,"2541":1,"2542":1,"2543":1,"2544":1,"2563":1,"2566":4,"2567":2,"2568":1,"2569":1,"2570":2,"2574":2,"2575":5,"2577":8,"2590":1,"2605":1,"2653":1,"2666":1,"2711":1,"2713":1,"2720":1,"2734":1,"2743":2,"2749":1,"2750":1,"2752":2,"2754":1,"2755":1,"2757":1}}],["a",{"0":{"6":1,"21":1,"141":1,"314":1,"361":1,"551":1,"554":1,"568":1,"570":1,"599":1,"600":1,"610":1,"1131":1,"1253":1,"1261":1,"1263":1,"1282":1,"1346":1,"1347":1,"1348":1,"1381":1,"1409":1,"1519":1,"1656":1,"1678":1,"1877":1,"1937":1,"1940":1,"1941":1,"2159":1,"2167":1,"2264":1,"2271":1,"2283":1,"2311":1,"2320":1,"2349":1,"2404":1,"2422":1,"2433":1,"2436":1,"2437":1,"2445":1,"2550":1,"2551":1,"2552":1},"1":{"611":1,"612":1,"1132":1,"1133":1,"1134":1,"1264":1,"1347":1,"1348":1,"1349":2,"1350":1,"1351":1,"1352":1,"1410":1,"1411":1,"1412":1,"1413":1,"1414":1,"1415":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"1423":1,"1424":1,"1425":1,"1426":1,"1427":1,"1428":1,"1429":1,"1430":1,"1431":1,"1432":1,"1433":1,"1434":1,"1435":1,"1436":1,"1679":1,"1680":1,"1681":1,"1682":1,"1683":1,"1684":1,"1685":1,"1686":1,"1687":1,"1688":1,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1695":1,"1696":1,"1697":1,"1698":1,"1699":1,"1700":1,"1701":1,"1702":1,"1703":1,"1704":1,"1705":1,"1706":1,"1707":1,"1708":1,"1709":1,"1710":1,"1711":1,"1712":1,"1713":1,"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1,"2405":1,"2406":1,"2407":1,"2408":1},"2":{"0":5,"1":1,"3":1,"6":2,"8":2,"9":4,"10":3,"11":1,"14":1,"15":1,"16":2,"18":2,"19":4,"21":1,"23":1,"24":1,"25":2,"28":3,"39":4,"49":11,"50":2,"52":4,"62":1,"65":3,"70":4,"73":1,"76":1,"80":1,"82":1,"83":1,"84":1,"86":1,"89":1,"90":1,"94":1,"95":1,"98":4,"99":1,"100":4,"107":1,"110":1,"112":2,"114":8,"116":1,"118":1,"120":1,"125":2,"130":2,"131":2,"132":3,"134":3,"138":3,"145":1,"149":9,"152":2,"153":3,"154":1,"156":2,"157":1,"160":2,"163":3,"164":2,"166":2,"169":2,"172":3,"173":4,"174":4,"175":1,"176":3,"179":2,"182":5,"183":1,"185":2,"187":1,"189":3,"190":1,"191":7,"194":10,"195":2,"196":3,"198":3,"199":1,"201":1,"202":1,"203":1,"209":1,"211":11,"213":1,"218":1,"222":7,"224":2,"228":3,"229":1,"230":1,"231":2,"233":1,"234":1,"236":1,"238":2,"246":2,"247":2,"248":1,"249":3,"251":1,"254":1,"255":1,"262":2,"263":2,"265":2,"266":6,"272":1,"273":2,"282":7,"289":1,"290":4,"291":1,"292":2,"299":2,"302":1,"303":1,"304":1,"305":6,"306":2,"307":2,"313":5,"314":2,"315":4,"316":4,"317":4,"321":1,"324":3,"331":2,"332":1,"334":1,"337":4,"340":1,"341":12,"347":1,"349":4,"352":9,"353":2,"354":2,"355":3,"357":1,"358":2,"359":1,"360":1,"363":1,"367":4,"370":4,"371":3,"373":1,"377":2,"378":6,"379":2,"380":2,"381":3,"383":2,"385":1,"386":3,"387":1,"388":3,"389":2,"390":2,"391":3,"393":6,"394":6,"396":1,"400":2,"401":4,"402":1,"404":1,"405":1,"408":1,"409":1,"411":1,"413":4,"415":2,"418":1,"423":1,"424":1,"428":2,"430":5,"432":1,"433":3,"435":1,"436":2,"441":2,"445":1,"446":1,"447":2,"451":1,"452":1,"453":5,"454":2,"455":2,"456":1,"457":5,"459":1,"460":2,"462":3,"465":1,"466":4,"467":3,"468":5,"469":2,"470":1,"471":1,"473":1,"474":1,"478":1,"479":3,"481":4,"483":2,"484":1,"485":1,"492":1,"493":1,"496":1,"497":1,"500":1,"501":1,"502":6,"504":1,"505":6,"506":3,"508":1,"509":2,"511":2,"512":1,"513":8,"515":4,"516":5,"517":1,"519":2,"520":2,"521":2,"522":1,"523":1,"526":2,"528":2,"529":4,"530":4,"532":2,"534":2,"537":3,"538":1,"540":4,"541":1,"545":1,"552":1,"554":11,"556":4,"557":1,"558":1,"559":7,"560":9,"561":2,"563":1,"564":1,"565":2,"566":1,"567":3,"568":3,"569":2,"570":3,"571":3,"572":3,"573":1,"584":1,"585":1,"586":2,"588":1,"589":2,"592":4,"596":2,"597":3,"598":6,"599":2,"600":2,"601":1,"602":2,"606":11,"607":3,"608":1,"609":3,"610":3,"611":1,"612":6,"613":2,"614":3,"615":1,"616":1,"620":2,"621":6,"623":2,"624":1,"625":4,"626":4,"627":2,"628":2,"629":2,"630":3,"635":1,"636":2,"638":2,"639":3,"641":3,"647":1,"654":1,"655":1,"657":1,"658":1,"659":4,"660":3,"661":2,"662":1,"664":1,"671":1,"675":1,"681":1,"684":2,"685":1,"688":2,"689":4,"690":7,"691":2,"694":1,"695":1,"699":1,"700":1,"703":2,"707":1,"709":2,"712":2,"714":1,"715":2,"717":2,"718":2,"720":1,"721":1,"723":2,"724":1,"726":5,"727":1,"736":1,"741":1,"745":1,"749":1,"751":1,"755":1,"762":1,"768":1,"772":1,"776":1,"778":1,"784":1,"794":1,"800":1,"804":1,"808":1,"810":1,"816":1,"824":1,"832":1,"836":1,"840":1,"842":1,"848":1,"859":1,"867":1,"871":1,"875":1,"877":1,"883":1,"893":1,"901":1,"905":1,"909":1,"911":1,"917":1,"927":1,"935":1,"939":1,"943":1,"945":1,"951":1,"961":1,"969":1,"973":1,"977":1,"979":1,"985":1,"995":1,"1003":1,"1007":1,"1011":1,"1013":1,"1019":1,"1029":1,"1037":1,"1041":1,"1045":1,"1047":1,"1053":1,"1063":1,"1071":1,"1075":1,"1079":1,"1081":1,"1087":1,"1097":1,"1105":1,"1109":1,"1113":1,"1115":1,"1121":1,"1122":2,"1123":1,"1125":1,"1126":2,"1127":1,"1129":3,"1130":1,"1132":1,"1133":1,"1134":2,"1136":1,"1137":1,"1142":1,"1143":2,"1150":1,"1158":1,"1162":1,"1166":1,"1168":1,"1174":1,"1175":1,"1177":4,"1183":1,"1186":1,"1189":1,"1192":1,"1195":1,"1196":1,"1197":6,"1198":1,"1202":1,"1204":1,"1207":1,"1209":1,"1212":5,"1214":3,"1215":6,"1216":1,"1217":2,"1220":1,"1224":2,"1225":2,"1226":1,"1228":1,"1230":2,"1233":1,"1234":10,"1235":1,"1236":4,"1238":3,"1242":2,"1248":1,"1250":5,"1251":1,"1252":1,"1254":1,"1255":2,"1257":2,"1258":2,"1259":2,"1260":1,"1261":1,"1263":1,"1264":1,"1265":8,"1271":1,"1272":2,"1273":1,"1278":2,"1284":1,"1287":3,"1290":1,"1293":1,"1295":2,"1299":6,"1300":9,"1303":2,"1304":2,"1310":1,"1313":1,"1314":1,"1315":2,"1322":1,"1325":4,"1326":6,"1329":9,"1330":1,"1331":3,"1332":7,"1333":1,"1334":3,"1335":3,"1336":5,"1337":1,"1338":3,"1340":7,"1341":3,"1344":4,"1346":5,"1347":3,"1348":1,"1349":2,"1352":2,"1353":4,"1354":2,"1355":3,"1357":5,"1359":8,"1360":5,"1361":11,"1362":2,"1363":1,"1364":3,"1365":1,"1368":1,"1369":1,"1376":2,"1377":1,"1378":1,"1380":5,"1381":2,"1382":2,"1383":5,"1384":3,"1385":6,"1386":2,"1387":2,"1388":1,"1390":3,"1393":2,"1394":2,"1397":6,"1398":7,"1399":2,"1400":1,"1401":2,"1402":1,"1403":6,"1404":1,"1405":6,"1406":8,"1409":2,"1410":1,"1411":7,"1412":4,"1414":2,"1415":1,"1416":10,"1421":1,"1423":2,"1426":2,"1427":1,"1428":1,"1429":1,"1430":1,"1431":7,"1432":1,"1436":6,"1437":1,"1438":12,"1439":3,"1440":4,"1441":7,"1442":3,"1445":6,"1446":3,"1447":2,"1448":3,"1451":23,"1452":2,"1454":4,"1458":2,"1459":2,"1462":1,"1464":3,"1466":1,"1469":1,"1471":4,"1492":3,"1495":3,"1496":1,"1497":2,"1499":7,"1500":3,"1501":1,"1503":2,"1504":1,"1506":2,"1507":1,"1508":7,"1509":1,"1510":2,"1511":4,"1512":1,"1515":3,"1516":2,"1518":4,"1519":2,"1521":1,"1523":5,"1525":4,"1526":1,"1527":2,"1528":2,"1531":2,"1534":2,"1548":1,"1549":3,"1552":1,"1553":3,"1554":3,"1555":1,"1556":4,"1557":5,"1558":6,"1559":1,"1561":1,"1562":5,"1563":2,"1565":2,"1567":1,"1570":3,"1571":1,"1573":7,"1576":2,"1577":9,"1578":1,"1579":1,"1581":1,"1582":5,"1583":2,"1584":1,"1585":1,"1586":1,"1587":1,"1591":1,"1605":1,"1607":1,"1609":1,"1611":1,"1613":1,"1614":1,"1617":1,"1619":1,"1622":1,"1624":1,"1630":3,"1632":1,"1633":2,"1634":1,"1638":1,"1639":1,"1642":1,"1644":1,"1648":1,"1651":3,"1652":1,"1655":5,"1657":1,"1658":1,"1659":2,"1660":1,"1661":1,"1662":2,"1665":1,"1666":1,"1668":3,"1670":11,"1671":3,"1672":1,"1673":5,"1674":3,"1675":21,"1676":1,"1677":7,"1678":3,"1680":3,"1682":1,"1683":1,"1684":1,"1685":5,"1716":1,"1717":1,"1718":1,"1720":1,"1725":7,"1726":3,"1728":5,"1729":6,"1731":1,"1733":1,"1743":1,"1791":4,"1793":19,"1794":1,"1798":2,"1802":2,"1803":2,"1804":3,"1807":8,"1808":1,"1814":1,"1815":3,"1816":2,"1817":1,"1820":1,"1821":4,"1822":13,"1824":1,"1827":2,"1829":1,"1832":2,"1833":2,"1834":1,"1836":1,"1837":1,"1839":1,"1842":3,"1844":4,"1845":1,"1846":1,"1847":1,"1848":1,"1849":1,"1850":2,"1851":8,"1852":3,"1853":5,"1854":5,"1855":6,"1857":2,"1858":1,"1859":1,"1860":1,"1861":1,"1862":2,"1864":9,"1865":3,"1867":1,"1873":1,"1878":2,"1879":1,"1880":1,"1881":1,"1886":1,"1888":1,"1890":1,"1892":1,"1894":1,"1901":1,"1902":5,"1903":1,"1908":1,"1910":2,"1912":3,"1915":1,"1917":1,"1918":1,"1921":3,"1922":2,"1923":5,"1925":1,"1926":1,"1928":1,"1929":2,"1930":1,"1932":1,"1935":3,"1936":1,"1938":1,"1940":4,"1941":1,"1943":6,"1946":7,"1947":3,"1948":1,"1949":14,"1950":2,"1952":6,"1955":1,"1957":1,"1959":3,"1970":1,"2031":6,"2032":1,"2036":3,"2040":1,"2041":1,"2042":2,"2044":2,"2047":2,"2051":4,"2062":1,"2065":2,"2066":1,"2067":1,"2069":3,"2070":1,"2074":2,"2075":3,"2076":1,"2078":1,"2081":1,"2083":2,"2085":1,"2087":2,"2093":1,"2095":1,"2097":1,"2099":3,"2102":2,"2112":3,"2113":2,"2114":4,"2117":1,"2118":2,"2121":1,"2122":2,"2124":1,"2125":6,"2126":4,"2128":5,"2130":12,"2131":9,"2133":4,"2134":1,"2138":1,"2139":3,"2140":1,"2143":11,"2144":2,"2145":1,"2146":8,"2147":5,"2148":4,"2149":2,"2150":5,"2152":6,"2153":5,"2154":2,"2155":1,"2156":1,"2157":2,"2160":3,"2161":8,"2162":13,"2164":3,"2168":1,"2169":18,"2170":5,"2171":4,"2172":3,"2176":1,"2179":4,"2180":5,"2181":2,"2182":6,"2183":6,"2199":2,"2201":1,"2208":1,"2217":1,"2225":1,"2226":3,"2227":1,"2228":1,"2229":1,"2230":1,"2231":5,"2232":1,"2233":4,"2234":2,"2235":2,"2236":3,"2237":2,"2238":7,"2239":1,"2240":6,"2242":4,"2243":2,"2244":1,"2245":1,"2246":1,"2247":1,"2248":1,"2249":1,"2250":3,"2251":1,"2252":2,"2255":6,"2256":1,"2257":1,"2258":2,"2259":4,"2260":2,"2261":2,"2262":3,"2263":8,"2264":2,"2266":2,"2267":3,"2268":8,"2269":4,"2271":4,"2272":14,"2273":5,"2274":5,"2275":2,"2276":5,"2277":5,"2279":9,"2280":3,"2281":1,"2282":2,"2283":1,"2284":3,"2288":1,"2290":1,"2293":1,"2294":2,"2295":7,"2297":1,"2298":1,"2299":4,"2300":6,"2301":1,"2302":5,"2305":4,"2306":1,"2307":3,"2308":1,"2311":21,"2313":1,"2315":1,"2317":3,"2319":1,"2320":2,"2321":5,"2322":2,"2323":5,"2324":2,"2325":8,"2326":4,"2327":4,"2329":3,"2331":1,"2333":3,"2341":1,"2343":1,"2344":3,"2346":4,"2347":2,"2348":4,"2349":4,"2350":2,"2354":3,"2355":10,"2367":2,"2368":1,"2370":2,"2371":19,"2373":1,"2386":3,"2396":2,"2397":2,"2400":4,"2401":1,"2402":2,"2403":5,"2404":1,"2405":4,"2406":2,"2407":2,"2408":2,"2409":1,"2410":4,"2411":4,"2413":1,"2415":1,"2417":7,"2418":3,"2421":1,"2422":3,"2423":3,"2424":4,"2425":2,"2427":3,"2428":3,"2429":3,"2431":2,"2433":1,"2435":2,"2436":2,"2438":1,"2440":1,"2441":1,"2442":3,"2443":2,"2444":1,"2445":3,"2446":4,"2448":1,"2449":1,"2450":4,"2452":1,"2454":2,"2455":1,"2457":4,"2458":2,"2460":1,"2461":1,"2468":1,"2469":6,"2472":3,"2473":2,"2474":3,"2475":4,"2476":4,"2477":6,"2478":3,"2479":2,"2480":4,"2483":2,"2485":1,"2490":10,"2491":7,"2492":2,"2495":1,"2498":2,"2501":2,"2502":1,"2503":3,"2508":4,"2510":2,"2513":6,"2514":5,"2515":3,"2516":3,"2517":2,"2521":2,"2523":5,"2524":4,"2525":2,"2526":1,"2530":5,"2535":1,"2539":2,"2541":1,"2542":1,"2543":1,"2544":2,"2545":3,"2546":2,"2548":3,"2549":1,"2550":1,"2551":1,"2552":2,"2553":6,"2555":2,"2556":2,"2558":2,"2559":2,"2560":1,"2562":1,"2563":2,"2564":12,"2565":1,"2566":26,"2567":7,"2568":2,"2569":3,"2570":2,"2571":2,"2575":8,"2576":20,"2577":26,"2578":3,"2581":1,"2584":3,"2585":4,"2587":1,"2589":1,"2591":1,"2592":3,"2593":3,"2594":1,"2595":1,"2596":7,"2597":1,"2600":2,"2601":2,"2605":3,"2607":3,"2608":2,"2610":1,"2611":6,"2614":3,"2615":6,"2616":4,"2617":1,"2619":2,"2620":1,"2622":2,"2623":1,"2625":2,"2626":2,"2627":2,"2628":1,"2629":1,"2632":1,"2633":1,"2638":1,"2640":2,"2641":2,"2642":1,"2643":1,"2644":1,"2645":2,"2646":1,"2648":2,"2649":2,"2651":1,"2652":1,"2653":1,"2654":3,"2655":1,"2656":1,"2657":1,"2659":2,"2660":3,"2661":1,"2662":3,"2663":1,"2664":3,"2665":1,"2666":1,"2667":1,"2668":1,"2670":1,"2671":1,"2672":5,"2674":1,"2676":2,"2677":2,"2681":1,"2682":2,"2683":1,"2684":3,"2686":8,"2687":1,"2688":2,"2689":6,"2693":2,"2694":1,"2695":2,"2696":1,"2697":1,"2699":4,"2701":2,"2702":5,"2703":2,"2704":2,"2705":1,"2706":1,"2709":1,"2710":2,"2711":1,"2712":1,"2713":1,"2714":1,"2719":2,"2720":1,"2721":1,"2723":1,"2725":3,"2727":4,"2728":13,"2730":4,"2731":8,"2732":8,"2733":5,"2734":11,"2735":14,"2736":6,"2737":11,"2738":8,"2740":2,"2741":2,"2742":2,"2743":2,"2745":7,"2746":6,"2747":1,"2748":3,"2749":5,"2750":2,"2752":1,"2753":12,"2754":1,"2755":1,"2756":3,"2757":9}}]],"serializationVersion":2}`; +const _localSearchIndexroot = `{"documentCount":2758,"nextId":2758,"documentIds":{"0":"/ChangeLog/20190830#qmk-breaking-change-2019-aug-30","1":"/ChangeLog/20190830#core-code-formatting-with-clang-format","2":"/ChangeLog/20190830#lufa-usb-descriptor-cleanup","3":"/ChangeLog/20190830#migrating-action-layer-momentary-entries-in-fn-actions-to-mo-keycodes","4":"/ChangeLog/20190830#update-atreus-to-current-code-conventions","5":"/ChangeLog/20190830#backport-changes-to-keymap-language-files-from-zsa-fork","6":"/ChangeLog/20190830#update-repo-to-use-lufa-as-a-git-submodule","7":"/ChangeLog/20190830#migrating-action-backlight-entries-in-fn-actions-to-bl-keycodes","8":"/ChangeLog/20190830#remove-kc-delt-alias-in-favor-of-kc-del","9":"/ChangeLog/20200229#qmk-breaking-change-2020-feb-29-changelog","10":"/ChangeLog/20200229#update-chibios-chibios-contrib-ugfx-submodules","11":"/ChangeLog/20200229#fix-chibios-timer-overflow-for-16-bit-systick-devices","12":"/ChangeLog/20200229#update-lufa-submodule","13":"/ChangeLog/20200229#encoder-flip","14":"/ChangeLog/20200229#adding-support-for-backlight-on-state-for-hardware-pwm-backlight","15":"/ChangeLog/20200229#migrating-action-layer-tap-key-entries-in-fn-actions-to-lt-keycodes","16":"/ChangeLog/20200229#moving-backlight-keycode-handling-to-process-keycode","17":"/ChangeLog/20200229#refactor-planck-keymaps-to-use-layout-macros","18":"/ChangeLog/20200229#gon-nerd-codebase-refactor","19":"/ChangeLog/20200530#qmk-breaking-change-2020-may-30-changelog","20":"/ChangeLog/20200530#core-changes","21":"/ChangeLog/20200530#converting-v-usb-usbdrv-to-a-submodule","22":"/ChangeLog/20200530#unify-tap-hold-functions-and-documentation","23":"/ChangeLog/20200530#python-required-in-the-build-process","24":"/ChangeLog/20200530#upgrade-from-tinyprintf-to-mpaland-printf","25":"/ChangeLog/20200530#fixed-rgb-disable-after-timeout-to-be-seconds-based-small-internals-cleanup","26":"/ChangeLog/20200530#switch-to-qmk-forks-for-everything","27":"/ChangeLog/20200530#code-cleanup-regarding-deprecated-macro-play-note-array-by-replacing-it-with-play-song","28":"/ChangeLog/20200530#fixing-wrong-configuration-of-audio-feature","29":"/ChangeLog/20200530#keyboard-refactors","30":"/ChangeLog/20200530#migrating-lily58-to-use-split-common","31":"/ChangeLog/20200530#to-migrate-existing-lily58-firmware","32":"/ChangeLog/20200530#refactor-zinc-to-use-split-common","33":"/ChangeLog/20200530#refactor-of-tkc1800-to-use-common-oled-code","34":"/ChangeLog/20200530#to-migrate-existing-tkc1800-firmware","35":"/ChangeLog/20200530#split-hhkb-to-ansi-and-jp-layouts-and-add-via-support-for-each","36":"/ChangeLog/20200530#migrating-existing-hhkb-keymaps","37":"/ChangeLog/20200530#keyboard-moves","38":"/ChangeLog/20200530#keycode-migration-prs","39":"/ChangeLog/20200829#qmk-breaking-change-2020-aug-29-changelog","40":"/ChangeLog/20200829#changes-requiring-user-action","41":"/ChangeLog/20200829#relocated-keyboards","42":"/ChangeLog/20200829#the-key-company-project-consolidation-9547","43":"/ChangeLog/20200829#relocating-boards-by-flehrad-to-flehrad-folder-9635","44":"/ChangeLog/20200829#keyboard-updates","45":"/ChangeLog/20200829#keebio-rgb-wiring-update-7754","46":"/ChangeLog/20200829#core-updates","47":"/ChangeLog/20200829#core-changes","48":"/ChangeLog/20200829#core-fixes","49":"/ChangeLog/20200829#core-additions","50":"/ChangeLog/20200829#core-optimizations","51":"/ChangeLog/20200829#qmk-internals","52":"/ChangeLog/20201128#qmk-breaking-change-2020-nov-28-changelog","53":"/ChangeLog/20201128#changes-requiring-user-action","54":"/ChangeLog/20201128#relocated-keyboards","55":"/ChangeLog/20201128#reduce-helix-keyboard-build-variation-8669","56":"/ChangeLog/20201128#update-the-speedo-firmware-for-v3-0-10657","57":"/ChangeLog/20201128#maartenwut-maarten-name-change-to-evyd13-evy-10274","58":"/ChangeLog/20201128#xelus-valor-and-dawn60-refactors-10512-10584","59":"/ChangeLog/20201128#keyboard-updates","60":"/ChangeLog/20201128#aeboards-ext65-refactor-10820","61":"/ChangeLog/20201128#core-changes","62":"/ChangeLog/20201128#core-fixes","63":"/ChangeLog/20201128#core-additions","64":"/ChangeLog/20201128#core-optimizations","65":"/ChangeLog/20201128#qmk-internals","66":"/ChangeLog/20210227#qmk-breaking-changes-2021-february-27-changelog","67":"/ChangeLog/20210227#changes-requiring-user-action","68":"/ChangeLog/20210227#core-changes","69":"/ChangeLog/20210227#chibios-update-and-config-migration","70":"/ChangeLog/20210227#qmk-infrastructure-and-internals","71":"/ChangeLog/20210227#detailed-change-list","72":"/ChangeLog/20210227#changes-requiring-user-action-1","73":"/ChangeLog/20210227#fixes","74":"/ChangeLog/20210227#additions-and-enhancements","75":"/ChangeLog/20210227#clean-ups-and-optimizations","76":"/ChangeLog/20210227#qmk-infrastructure-and-internals-1","77":"/ChangeLog/20210227#chibios-update-and-config-migration-1","78":"/ChangeLog/20210529#qmk-breaking-changes-2021-may-29-changelog","79":"/ChangeLog/20210529#notable-changes","80":"/ChangeLog/20210529#rgb-matrix-split-common","81":"/ChangeLog/20210529#teensy-3-6-support","82":"/ChangeLog/20210529#new-command-qmk-console","83":"/ChangeLog/20210529#improve-command-qmk-config","84":"/ChangeLog/20210529#led-matrix-improvements","85":"/ChangeLog/20210529#changes-requiring-user-action","86":"/ChangeLog/20210529#updated-keyboard-codebases","87":"/ChangeLog/20210529#bootmagic-deprecation-and-refactor","88":"/ChangeLog/20210529#tentative-deprecation-schedule","89":"/ChangeLog/20210529#removal-of-layout-kc","90":"/ChangeLog/20210529#encoder-callback-boolean","91":"/ChangeLog/20210529#core-changes","92":"/ChangeLog/20210529#core-fixes","93":"/ChangeLog/20210529#core-additions","94":"/ChangeLog/20210529#core-optimizations","95":"/ChangeLog/20210529#qmk-internals","96":"/ChangeLog/20210828#qmk-breaking-changes-2021-august-28-changelog","97":"/ChangeLog/20210828#notable-features","98":"/ChangeLog/20210828#combo-processing-improvements","99":"/ChangeLog/20210828#key-overrides","100":"/ChangeLog/20210828#digitizer-support-12851","101":"/ChangeLog/20210828#changes-requiring-user-action","102":"/ChangeLog/20210828#updated-keyboard-codebases","103":"/ChangeLog/20210828#bootmagic-full-removal","104":"/ChangeLog/20210828#bootmagic-full-deprecation-schedule","105":"/ChangeLog/20210828#dip-switch-boolean","106":"/ChangeLog/20210828#notable-core","107":"/ChangeLog/20210828#split-transport-improvements","108":"/ChangeLog/20210828#teensy-4-x-support","109":"/ChangeLog/20210828#data-driven-improvements-13366","110":"/ChangeLog/20210828#tags","111":"/ChangeLog/20210828#dot-notation","112":"/ChangeLog/20210828#new-configuration-keys","113":"/ChangeLog/20210828#codebase-restructure","114":"/ChangeLog/20210828#full-changelist","115":"/ChangeLog/20211127#qmk-breaking-changes-2021-november-27-changelog","116":"/ChangeLog/20211127#qmk-2000th-keyboard","117":"/ChangeLog/20211127#notable-features","118":"/ChangeLog/20211127#expanded-pointing-device","119":"/ChangeLog/20211127#dynamic-tapping-term","120":"/ChangeLog/20211127#macros-in-keymap-json","121":"/ChangeLog/20211127#changes-requiring-user-action","122":"/ChangeLog/20211127#updated-keyboard-codebases","123":"/ChangeLog/20211127#squeezing-space-from-avr","124":"/ChangeLog/20211127#explicit-rgb-modes","125":"/ChangeLog/20211127#oled-task-refactor","126":"/ChangeLog/20211127#bootmagic-full-removal","127":"/ChangeLog/20211127#bootmagic-full-deprecation-schedule-complete","128":"/ChangeLog/20211127#remove-qwiic","129":"/ChangeLog/20211127#notable-core","130":"/ChangeLog/20211127#new-mcu-support","131":"/ChangeLog/20211127#eeprom-changes","132":"/ChangeLog/20211127#compile-commands","133":"/ChangeLog/20211127#codebase-restructure","134":"/ChangeLog/20211127#full-changelist","135":"/ChangeLog/20220226#qmk-breaking-changes-2022-february-26-changelog","136":"/ChangeLog/20220226#notable-features","137":"/ChangeLog/20220226#default-usb-polling-rate-now-1khz-15352","138":"/ChangeLog/20220226#split-support-for-pointing-devices-15304","139":"/ChangeLog/20220226#changes-requiring-user-action","140":"/ChangeLog/20220226#legacy-macro-and-action-function-system-removed-16025","141":"/ChangeLog/20220226#create-a-build-error-if-no-bootloader-is-specified-16181","142":"/ChangeLog/20220226#rename-adafruitble-to-bluefruitle-16127","143":"/ChangeLog/20220226#updated-keyboard-codebases","144":"/ChangeLog/20220226#notable-core","145":"/ChangeLog/20220226#new-mcu-support","146":"/ChangeLog/20220226#new-drivers","147":"/ChangeLog/20220226#led","148":"/ChangeLog/20220226#gpio","149":"/ChangeLog/20220226#full-changelist","150":"/ChangeLog/20220528#qmk-breaking-changes-2022-may-28-changelog","151":"/ChangeLog/20220528#notable-features","152":"/ChangeLog/20220528#caps-word","153":"/ChangeLog/20220528#quantum-painter","154":"/ChangeLog/20220528#encoder-mapping","155":"/ChangeLog/20220528#changes-requiring-user-action","156":"/ChangeLog/20220528#reset-2-qk_boot","157":"/ChangeLog/20220528#sendstring-keycodes","158":"/ChangeLog/20220528#pillow-install","159":"/ChangeLog/20220528#updated-keyboard-codebases","160":"/ChangeLog/20220528#full-changelist","161":"/ChangeLog/20220827#qmk-breaking-changes-2022-august-27-changelog","162":"/ChangeLog/20220827#notable-features","163":"/ChangeLog/20220827#rp2040-support","164":"/ChangeLog/20220827#cli-flash-binaries","165":"/ChangeLog/20220827#changes-requiring-user-action","166":"/ChangeLog/20220827#default-layers-dropped-from-32-to-16-15286","167":"/ChangeLog/20220827#reset-2-qk_boot","168":"/ChangeLog/20220827#updated-keyboard-codebases","169":"/ChangeLog/20220827#usb-ids-Refactoring","170":"/ChangeLog/20220827#deprecation-schedule","171":"/ChangeLog/20220827#notable-core","172":"/ChangeLog/20220827#board-converters","173":"/ChangeLog/20220827#cli-import","174":"/ChangeLog/20220827#wear-leveling","175":"/ChangeLog/20220827#pointing-device-improvements","176":"/ChangeLog/20220827#full-changelist","177":"/ChangeLog/20221126#qmk-breaking-changes-2022-november-26-changelog","178":"/ChangeLog/20221126#notable-features","179":"/ChangeLog/20221126#autocorrect","180":"/ChangeLog/20221126#changes-requiring-user-action","181":"/ChangeLog/20221126#updated-keyboard-codebases","182":"/ChangeLog/20221126#keycodes-overhaul-user-action","183":"/ChangeLog/20221126#config-refactoring","184":"/ChangeLog/20221126#usb-ids-Refactoring","185":"/ChangeLog/20221126#led-callback-refactor","186":"/ChangeLog/20221126#unicode-mode-renaming","187":"/ChangeLog/20221126#notable-core","188":"/ChangeLog/20221126#keycodes-overhaul-core-changes","189":"/ChangeLog/20221126#board-converters","190":"/ChangeLog/20221126#pointing-and-digitizer","191":"/ChangeLog/20221126#full-changelist","192":"/ChangeLog/20230226#qmk-breaking-changes-2023-february-26-changelog","193":"/ChangeLog/20230226#changes-requiring-user-action","194":"/ChangeLog/20230226#i-m-t-i","195":"/ChangeLog/20230226#quick-tap-term","196":"/ChangeLog/20230226#leader-key-rework-leader-key-rework-19632","197":"/ChangeLog/20230226#updated-keyboard-codebases","198":"/ChangeLog/20230226#notable-core","199":"/ChangeLog/20230226#full-changelist","200":"/ChangeLog/20230528#qmk-breaking-changes-2023-may-28-changelog","201":"/ChangeLog/20230528#notable-changes","202":"/ChangeLog/20230528#repeat-last-key","203":"/ChangeLog/20230528#user-callback-for-pre-process-record","204":"/ChangeLog/20230528#consolidate-modelm","205":"/ChangeLog/20230528#changes-requiring-user-action","206":"/ChangeLog/20230528#i-m-t-i","207":"/ChangeLog/20230528#updated-keyboard-codebases","208":"/ChangeLog/20230528#notable-core","209":"/ChangeLog/20230528#encoder-functionality-fallback","210":"/ChangeLog/20230528#oled-driver-improvements","211":"/ChangeLog/20230528#full-changelist","212":"/ChangeLog/20230827#qmk-breaking-changes-2023-aug-27-changelog","213":"/ChangeLog/20230827#notable-changes","214":"/ChangeLog/20230827#rgb-matrix-optimizations","215":"/ChangeLog/20230827#audio-optimizations-21496-21498","216":"/ChangeLog/20230827#changes-requiring-user-action","217":"/ChangeLog/20230827#updated-keyboard-codebases","218":"/ChangeLog/20230827#remove-encoder-in-matrix-workaround-code","219":"/ChangeLog/20230827#unicodemap-keycodes-rename","220":"/ChangeLog/20230827#remove-old-oled-api-code","221":"/ChangeLog/20230827#driver-naming-consolidation","222":"/ChangeLog/20230827#full-changelist","223":"/ChangeLog/20231126#qmk-breaking-changes-2023-november-26-changelog","224":"/ChangeLog/20231126#notable-features","225":"/ChangeLog/20231126#changes-requiring-user-action","226":"/ChangeLog/20231126#updated-keyboard-codebases","227":"/ChangeLog/20231126#notable-core","228":"/ChangeLog/20231126#external-userspace-22222","229":"/ChangeLog/20231126#improve-and-cleanup-shutdown-callbacks","230":"/ChangeLog/20231126#oled-force-flush","231":"/ChangeLog/20231126#switch-statement-helpers-for-keycode-ranges","232":"/ChangeLog/20231126#quantum-painter-oled-support","233":"/ChangeLog/20231126#rgb-led-lighting-driver-naming-and-cleanup-21890-21891-21892-21903-21904-21905-21918-21929-21938-22004-22008-22009-22071-22090-22099-22126-22133-22163-22200-22308-22309-22311-22325-22365-22379-22380-22381-22383-22436","234":"/ChangeLog/20231126#peripheral-subsystem-enabling","235":"/ChangeLog/20231126#vusb-nkro","236":"/ChangeLog/20231126#full-changelist","237":"/ChangeLog/20240225#qmk-breaking-changes-2024-february-25-changelog","238":"/ChangeLog/20240225#notable-features","239":"/ChangeLog/20240225#changes-requiring-user-action","240":"/ChangeLog/20240225#windows-driver-changes-qmk-toolbox-0-3-0-release","241":"/ChangeLog/20240225#updated-keyboard-codebases","242":"/ChangeLog/20240225#notable-core","243":"/ChangeLog/20240225#gpio-rename","244":"/ChangeLog/20240225#i2c-driver-api-changes-22905","245":"/ChangeLog/20240225#bootmagic-rename","246":"/ChangeLog/20240225#auto-mouse-layer","247":"/ChangeLog/20240225#dip-switch-map","248":"/ChangeLog/20240225#qp-updates","249":"/ChangeLog/20240225#full-changelist","250":"/ChangeLog/20240526#qmk-breaking-changes-2024-may-26-changelog","251":"/ChangeLog/20240526#notable-features","252":"/ChangeLog/20240526#changes-requiring-user-action","253":"/ChangeLog/20240526#updated-keyboard-codebases","254":"/ChangeLog/20240526#remove-deprecated-quantum-keycodes-23407","255":"/ChangeLog/20240526#spacey-layout-updates","256":"/ChangeLog/20240526#acr60-layout-updates","257":"/ChangeLog/20240526#acr60-layout-hhkb","258":"/ChangeLog/20240526#acr60-layout-true-hhkb","259":"/ChangeLog/20240526#acr60-layout-directional","260":"/ChangeLog/20240526#acr60-layout-mitchsplit","261":"/ChangeLog/20240526#notable-core","262":"/ChangeLog/20240526#keyboard-json","263":"/ChangeLog/20240526#refactor-chibios-usb-endpoints-to-be-fully-async-21656","264":"/ChangeLog/20240526#deprecation-notices","265":"/ChangeLog/20240526#migration-of-via-keymaps-to-via-team-control","266":"/ChangeLog/20240526#full-changelist","267":"/ChangeLog/20240825#qmk-breaking-changes-2024-august-25-changelog","268":"/ChangeLog/20240825#notable-features","269":"/ChangeLog/20240825#changes-requiring-user-action","270":"/ChangeLog/20240825#updated-keyboard-codebases","271":"/ChangeLog/20240825#sparkfun-pro-micro-rp2040-converter-renamed-24192","272":"/ChangeLog/20240825#key-override-keymap-c-signature-change-24120","273":"/ChangeLog/20240825#adns9800-and-pmw33xx-firmware-upload-now-opt-in-24001","274":"/ChangeLog/20240825#deprecation-notices","275":"/ChangeLog/20240825#migration-of-via-keymaps-to-via-team-control","276":"/ChangeLog/20240825#adns9800-and-pmw33xx-sensor-firmware-rom-removal","277":"/ChangeLog/20240825#full-changelist","278":"/__capabilities#documentation-capabilities","279":"/__capabilities#overall-capabilities","280":"/__capabilities#dividing-lines","281":"/__capabilities#images","282":"/__capabilities#lists","283":"/__capabilities#emoji","284":"/__capabilities#direct","285":"/__capabilities#as-colon-name-colon","286":"/__capabilities#xml-entities","287":"/__capabilities#styling","288":"/__capabilities#css-ish","289":"/__capabilities#tables","290":"/__capabilities#indented-sections","291":"/__capabilities#keyboard-keys","292":"/__capabilities#code-blocks","293":"/__capabilities#sub-superscript","294":"/__capabilities#tabs","295":"/__capabilities#tab-one","296":"/__capabilities#nested-one","297":"/__capabilities#nested-two","298":"/__capabilities#tab-two","299":"/__capabilities#tab-three","300":"/__capabilities#details-sections","301":"/__capabilities#embed","302":"/api_development_environment#development-environment-setup","303":"/api_development_overview#qmk-compiler-development-guide","304":"/api_development_overview#overview","305":"/api_development_overview#workers","306":"/api_development_overview#api-service","307":"/api_development_overview#app-route-v1-compile-methods-post","308":"/api_development_overview#app-route-v1-compile-string-job-id-methods-get","309":"/api_development_overview#app-route-v1-compile-string-job-id-download-methods-get","310":"/api_development_overview#app-route-v1-compile-string-job-id-source-methods-get","311":"/api_docs#qmk-api","312":"/api_docs#overview","313":"/api_docs#example-json-payload","314":"/api_docs#submitting-a-compile-job","315":"/api_docs#checking-the-status","316":"/api_docs#examining-finished-results","317":"/api_docs#qmk-constants","318":"/api_overview#qmk-api","319":"/api_overview#app-developers","320":"/api_overview#keyboard-maintainers","321":"/api_overview#backend-developers","322":"/arm_debugging#arm-debugging-using-eclipse","323":"/arm_debugging#installing-the-software","324":"/arm_debugging#the-xpack-manager","325":"/arm_debugging#the-arm-toolchain","326":"/arm_debugging#windows-build-tools","327":"/arm_debugging#programmer-debugger-drivers","328":"/arm_debugging#openocd","329":"/arm_debugging#java","330":"/arm_debugging#gnu-mcu-eclipse-ide","331":"/arm_debugging#configuring-eclipse","332":"/arm_debugging#building","333":"/arm_debugging#debugging","334":"/arm_debugging#connecting-the-debugger","335":"/arm_debugging#configuring-the-debugger","336":"/arm_debugging#running-the-debugger","337":"/breaking_changes#breaking-changes","338":"/breaking_changes#what-has-been-included-in-past-breaking-changes","339":"/breaking_changes#when-is-the-next-breaking-change","340":"/breaking_changes#important-dates","341":"/breaking_changes#what-changes-will-be-included","342":"/breaking_changes#checklists","343":"/breaking_changes#_4-weeks-before-merge","344":"/breaking_changes#_2-weeks-before-merge","345":"/breaking_changes#_1-week-before-merge","346":"/breaking_changes#_2-days-before-merge","347":"/breaking_changes#day-of-merge","348":"/breaking_changes#post-merge-operations","349":"/breaking_changes#updating-the-develop-branch","350":"/breaking_changes#set-up-discord-events-for-the-next-cycle","351":"/breaking_changes_history#past-breaking-changes","352":"/breaking_changes_instructions#breaking-changes-my-pull-request-was-flagged","353":"/breaking_changes_instructions#what-do-i-do","354":"/breaking_changes_instructions#consider-splitting-up-your-pr","355":"/breaking_changes_instructions#document-your-changes","356":"/breaking_changes_instructions#ask-for-help","357":"/chibios_upgrade_instructions#chibios-upgrade-procedure","358":"/chibios_upgrade_instructions#getting-chibios","359":"/chibios_upgrade_instructions#getting-chibios-contrib","360":"/chibios_upgrade_instructions#updating-submodules","361":"/chibios_upgrade_instructions#when-merging-a-pr-containing-an-upgrade-of-chibios-chibios-contrib","362":"/cli#qmk-cli","363":"/cli#overview","364":"/cli#requirements","365":"/cli#install-using-homebrew","366":"/cli#install-using-easy_install-or-pip","367":"/cli#packaging-for-other-operating-systems","368":"/cli_commands#qmk-cli-commands","369":"/cli_commands#user-commands","370":"/cli_commands#qmk-compile","371":"/cli_commands#qmk-flash","372":"/cli_commands#qmk-config","373":"/cli_commands#qmk-cd","374":"/cli_commands#qmk-find","375":"/cli_commands#qmk-console","376":"/cli_commands#qmk-doctor","377":"/cli_commands#qmk-format-json","378":"/cli_commands#qmk-info","379":"/cli_commands#qmk-json2c","380":"/cli_commands#qmk-c2json","381":"/cli_commands#qmk-lint","382":"/cli_commands#qmk-list-keyboards","383":"/cli_commands#qmk-list-keymaps","384":"/cli_commands#qmk-migrate","385":"/cli_commands#qmk-new-keyboard","386":"/cli_commands#qmk-new-keymap","387":"/cli_commands#qmk-clean","388":"/cli_commands#qmk-via2json","389":"/cli_commands#qmk-import-keyboard","390":"/cli_commands#qmk-import-keymap","391":"/cli_commands#qmk-import-kbfirmware","392":"/cli_commands#external-userspace-commands","393":"/cli_commands#qmk-userspace-add","394":"/cli_commands#qmk-userspace-remove","395":"/cli_commands#qmk-userspace-list","396":"/cli_commands#qmk-userspace-compile","397":"/cli_commands#qmk-userspace-doctor","398":"/cli_commands#developer-commands","399":"/cli_commands#qmk-format-text","400":"/cli_commands#qmk-format-c","401":"/cli_commands#qmk-generate-compilation-database","402":"/cli_commands#qmk-docs","403":"/cli_commands#qmk-generate-docs","404":"/cli_commands#qmk-generate-rgb-breathe-table","405":"/cli_commands#qmk-kle2json","406":"/cli_commands#qmk-format-python","407":"/cli_commands#qmk-pytest","408":"/cli_commands#qmk-painter-convert-graphics","409":"/cli_commands#qmk-painter-make-font-image","410":"/cli_commands#qmk-painter-convert-font-image","411":"/cli_commands#qmk-test-c","412":"/cli_configuration#qmk-cli-configuration","413":"/cli_configuration#introduction","414":"/cli_configuration#simple-example","415":"/cli_configuration#setting-user-defaults","416":"/cli_configuration#cli-documentation-qmk-config","417":"/cli_configuration#setting-configuration-values","418":"/cli_configuration#reading-configuration-values","419":"/cli_configuration#entire-configuration-example","420":"/cli_configuration#whole-section-example","421":"/cli_configuration#single-key-example","422":"/cli_configuration#multiple-keys-example","423":"/cli_configuration#deleting-configuration-values","424":"/cli_configuration#multiple-operations","425":"/cli_configuration#user-configuration-options","426":"/cli_configuration#all-configuration-options","427":"/cli_development#qmk-cli-development","428":"/cli_development#overview","429":"/cli_development#developer-mode","430":"/cli_development#subcommands","431":"/cli_development#user-interaction","432":"/cli_development#printing-text","433":"/cli_development#logging-cli-log","434":"/cli_development#printing-cli-echo","435":"/cli_development#colorizing-text","436":"/cli_development#arguments-and-configuration","437":"/cli_development#reading-configuration-values","438":"/cli_development#setting-configuration-values","439":"/cli_development#deleting-configuration-values","440":"/cli_development#writing-the-configuration-file","441":"/cli_development#excluding-arguments-from-configuration","442":"/cli_development#testing-and-linting-and-formatting-oh-my","443":"/cli_development#testing-and-linting","444":"/cli_development#formatting","445":"/cli_development#formatting-details","446":"/cli_development#testing-details","447":"/cli_development#linting-details","448":"/cli_tab_complete#tab-completion-for-qmk","449":"/cli_tab_complete#setup","450":"/cli_tab_complete#for-your-user-only","451":"/cli_tab_complete#system-wide-symlink","452":"/cli_tab_complete#system-wide-copy","453":"/coding_conventions_c#coding-conventions-c","454":"/coding_conventions_c#auto-formatting-with-clang-format","455":"/coding_conventions_python#coding-conventions-python","456":"/coding_conventions_python#yapf","457":"/coding_conventions_python#imports","458":"/coding_conventions_python#import-examples","459":"/coding_conventions_python#statements","460":"/coding_conventions_python#naming","461":"/coding_conventions_python#names-to-avoid","462":"/coding_conventions_python#docstrings","463":"/coding_conventions_python#simple-docstring-example","464":"/coding_conventions_python#complex-docstring-example","465":"/coding_conventions_python#function-arguments-docstring-example","466":"/coding_conventions_python#exceptions","467":"/coding_conventions_python#tuples","468":"/coding_conventions_python#lists-and-dictionaries","469":"/coding_conventions_python#parentheses","470":"/coding_conventions_python#format-strings","471":"/coding_conventions_python#comprehensions-generator-expressions","472":"/coding_conventions_python#lambdas","473":"/coding_conventions_python#conditional-expressions","474":"/coding_conventions_python#default-argument-values","475":"/coding_conventions_python#properties","476":"/coding_conventions_python#true-false-evaluations","477":"/coding_conventions_python#decorators","478":"/coding_conventions_python#threading-and-multiprocessing","479":"/coding_conventions_python#power-features","480":"/coding_conventions_python#type-annotated-code","481":"/coding_conventions_python#function-length","482":"/coding_conventions_python#fixmes","483":"/coding_conventions_python#testing","484":"/coding_conventions_python#integration-tests","485":"/coding_conventions_python#unit-tests","486":"/compatible_microcontrollers#compatible-microcontrollers","487":"/compatible_microcontrollers#atmel-avr","488":"/compatible_microcontrollers#arm","489":"/compatible_microcontrollers#stmicroelectronics-stm32","490":"/compatible_microcontrollers#westberrytech-wb32","491":"/compatible_microcontrollers#nxp-kinetis","492":"/compatible_microcontrollers#raspberry-pi","493":"/compatible_microcontrollers#atmel-atsam","494":"/compatible_microcontrollers#risc-v","495":"/compatible_microcontrollers#gigadevice","496":"/config_options#configuring-qmk","497":"/config_options#qmk-default","498":"/config_options#keyboard","499":"/config_options#folders","500":"/config_options#keymap","501":"/config_options#the-config-h-file","502":"/config_options#hardware-options","503":"/config_options#features-that-can-be-disabled","504":"/config_options#features-that-can-be-enabled","505":"/config_options#behaviors-that-can-be-configured","506":"/config_options#rgb-light-configuration","507":"/config_options#mouse-key-options","508":"/config_options#split-keyboard-options","509":"/config_options#setting-handedness","510":"/config_options#defines-for-handedness","511":"/config_options#other-options","512":"/config_options#the-rules-mk-file","513":"/config_options#build-options","514":"/config_options#avr-mcu-options","515":"/config_options#feature-options","516":"/config_options#usb-endpoint-limitations","517":"/configurator_architecture#qmk-configurator-architecture","518":"/configurator_architecture#overview","519":"/configurator_architecture#detailed-description","520":"/configurator_architecture#configurator-frontend","521":"/configurator_architecture#keyboard-metadata","522":"/configurator_architecture#qmk-api","523":"/configurator_architecture#compile-job-queued","524":"/configurator_architecture#compile-job-running","525":"/configurator_architecture#compile-job-finished","526":"/configurator_architecture#redis-rq","527":"/configurator_architecture#qmk-compiler","528":"/configurator_default_keymaps#adding-default-keymaps","529":"/configurator_default_keymaps#technical-information","530":"/configurator_default_keymaps#example","531":"/configurator_default_keymaps#caveats","532":"/configurator_default_keymaps#layer-references","533":"/configurator_default_keymaps#custom-code","534":"/configurator_default_keymaps#custom-keycodes","535":"/configurator_default_keymaps#additional-reading","536":"/configurator_step_by_step#qmk-configurator-step-by-step","537":"/configurator_step_by_step#step-1-select-your-keyboard","538":"/configurator_step_by_step#step-2-select-your-keyboard-layout","539":"/configurator_step_by_step#step-3-name-your-keymap","540":"/configurator_step_by_step#step-4-define-your-keymap","541":"/configurator_step_by_step#step-5-save-your-keymap-for-future-changes","542":"/configurator_step_by_step#step-6-compile-your-firmware-file","543":"/configurator_step_by_step#next-steps-flashing-your-keyboard","544":"/configurator_troubleshooting#configurator-troubleshooting","545":"/configurator_troubleshooting#my-json-file-is-not-working","546":"/configurator_troubleshooting#there-are-extra-spaces-in-my-layout-what-do-i-do","547":"/configurator_troubleshooting#what-is-the-keycode-for","548":"/configurator_troubleshooting#it-won-t-compile","549":"/configurator_troubleshooting#problems-and-bugs","550":"/contributing#how-to-contribute","551":"/contributing#i-don-t-want-to-read-this-whole-thing-i-just-have-a-question","552":"/contributing#project-overview","553":"/contributing#where-can-i-go-for-help","554":"/contributing#how-do-i-make-a-contribution","555":"/contributing#coding-conventions","556":"/contributing#general-guidelines","557":"/contributing#documentation","558":"/contributing#previewing-the-documentation","559":"/contributing#keyboards","560":"/contributing#quantum-tmk-core","561":"/contributing#refactoring","562":"/contributing#what-does-the-code-of-conduct-mean-for-me","563":"/custom_matrix#custom-matrix","564":"/custom_matrix#prerequisites","565":"/custom_matrix#lite","566":"/custom_matrix#full-replacement","567":"/custom_quantum_functions#how-to-customize-your-keyboard-s-behavior","568":"/custom_quantum_functions#a-word-on-core-vs-keyboards-vs-keymap","569":"/custom_quantum_functions#custom-keycodes","570":"/custom_quantum_functions#defining-a-new-keycode","571":"/custom_quantum_functions#programming-the-behavior-of-any-keycode","572":"/custom_quantum_functions#example-process-record-user-implementation","573":"/custom_quantum_functions#process-record-function-documentation","574":"/custom_quantum_functions#keyboard-initialization-code","575":"/custom_quantum_functions#keyboard-pre-initialization-code","576":"/custom_quantum_functions#example-keyboard-pre-init-user-implementation","577":"/custom_quantum_functions#keyboard-pre-init-function-documentation","578":"/custom_quantum_functions#matrix-initialization-code","579":"/custom_quantum_functions#matrix-init-function-documentation","580":"/custom_quantum_functions#low-level-matrix-overrides","581":"/custom_quantum_functions#keyboard-post-initialization-code","582":"/custom_quantum_functions#example-keyboard-post-init-user-implementation","583":"/custom_quantum_functions#keyboard-post-init-function-documentation","584":"/custom_quantum_functions#matrix-scanning-code","585":"/custom_quantum_functions#example-matrix-scan-implementation","586":"/custom_quantum_functions#matrix-scan-function-documentation","587":"/custom_quantum_functions#keyboard-housekeeping","588":"/custom_quantum_functions#example-void-housekeeping-task-user-void-implementation","589":"/custom_quantum_functions#keyboard-idling-wake-code","590":"/custom_quantum_functions#example-suspend-power-down-user-and-suspend-wakeup-init-user-implementation","591":"/custom_quantum_functions#keyboard-suspend-wake-function-documentation","592":"/custom_quantum_functions#keyboard-shutdown-reboot-code","593":"/custom_quantum_functions#example-shutdown-kb-implementation","594":"/custom_quantum_functions#example-shutdown-user-implementation","595":"/custom_quantum_functions#keyboard-shutdown-reboot-function-documentation","596":"/custom_quantum_functions#deferred-execution","597":"/custom_quantum_functions#deferred-executor-callbacks","598":"/custom_quantum_functions#deferred-executor-registration","599":"/custom_quantum_functions#extending-a-deferred-execution","600":"/custom_quantum_functions#cancelling-a-deferred-execution","601":"/custom_quantum_functions#deferred-callback-limits","602":"/custom_quantum_functions#advanced-topics","603":"/custom_quantum_functions#layer-change-code","604":"/custom_quantum_functions#persistent-configuration-eeprom","605":"/data_driven_config#data-driven-configuration","606":"/data_driven_config#history","607":"/data_driven_config#overview","608":"/data_driven_config#adding-an-option-to-info-json","609":"/data_driven_config#add-it-to-the-schema","610":"/data_driven_config#add-a-mapping","611":"/data_driven_config#info-key","612":"/data_driven_config#value-types","613":"/data_driven_config#add-code-to-extract-it","614":"/data_driven_config#add-code-to-generate-it","615":"/documentation_best_practices#documentation-best-practices","616":"/documentation_best_practices#page-opening","617":"/documentation_best_practices#headings","618":"/documentation_best_practices#styled-hint-blocks","619":"/documentation_best_practices#important","620":"/documentation_best_practices#general-tips","621":"/documentation_best_practices#documenting-features","622":"/documentation_templates#documentation-templates","623":"/documentation_templates#keyboard-readmemd-template","624":"/documentation_templates#keyboard-readme-md-template","625":"/driver_installation_zadig#bootloader-driver-installation-with-zadig","626":"/driver_installation_zadig#installation","627":"/driver_installation_zadig#recovering-from-installation-to-wrong-device","628":"/driver_installation_zadig#uninstallation","629":"/driver_installation_zadig#list-of-known-bootloaders","630":"/drivers/adc#adc-driver","631":"/drivers/adc#usage","632":"/drivers/adc#channels","633":"/drivers/adc#avr","634":"/drivers/adc#arm","635":"/drivers/adc#stm32","636":"/drivers/adc#rp2040","637":"/drivers/adc#functions","638":"/drivers/adc#avr-1","639":"/drivers/adc#arm-1","640":"/drivers/adc#configuration","641":"/drivers/adc#arm-2","642":"/drivers/apa102#apa102-driver","643":"/drivers/apa102#usage","644":"/drivers/apa102#basic-configuration","645":"/drivers/apa102#api","646":"/drivers/apa102#api-apa102-init","647":"/drivers/apa102#api-apa102-set-color","648":"/drivers/apa102#api-apa102-set-color-arguments","649":"/drivers/apa102#api-apa102-set-color-all","650":"/drivers/apa102#api-apa102-set-color-all-arguments","651":"/drivers/apa102#api-apa102-flush","652":"/drivers/apa102#api-apa102-set-brightness","653":"/drivers/apa102#api-apa102-set-brightness-arguments","654":"/drivers/audio#audio-driver","655":"/drivers/audio#avr","656":"/drivers/audio#arm","657":"/drivers/audio#dac-basic","658":"/drivers/audio#dac-additive","659":"/drivers/audio#dac-config","660":"/drivers/audio#buffer-size","661":"/drivers/audio#pwm-hardware","662":"/drivers/audio#pwm-software","663":"/drivers/audio#testing-notes","664":"/drivers/aw20216s#aw20216s-driver","665":"/drivers/aw20216s#usage","666":"/drivers/aw20216s#basic-configuration","667":"/drivers/aw20216s#global-current-control","668":"/drivers/aw20216s#arm-configuration","669":"/drivers/aw20216s#led-mapping","670":"/drivers/aw20216s#api","671":"/drivers/aw20216s#api-aw20216s-led-t","672":"/drivers/aw20216s#api-aw20216s-led-t-members","673":"/drivers/aw20216s#api-aw20216s-init","674":"/drivers/aw20216s#api-aw20216s-init-arguments","675":"/drivers/aw20216s#api-aw20216s-set-color","676":"/drivers/aw20216s#api-aw20216s-set-color-arguments","677":"/drivers/aw20216s#api-aw20216s-set-color-all","678":"/drivers/aw20216s#api-aw20216s-set-color-all-arguments","679":"/drivers/aw20216s#api-aw20216s-update-pwm-buffers","680":"/drivers/aw20216s#api-aw20216s-update-pwm-buffers-arguments","681":"/drivers/eeprom#eeprom-driver-configuration","682":"/drivers/eeprom#vendor-eeprom-driver-configuration","683":"/drivers/eeprom#stm32l0l1-eeprom-driver-configuration","684":"/drivers/eeprom#i2c-eeprom-driver-configuration","685":"/drivers/eeprom#spi-eeprom-driver-configuration","686":"/drivers/eeprom#transient-eeprom-driver-configuration","687":"/drivers/eeprom#wear_leveling-eeprom-driver-configuration","688":"/drivers/eeprom#wear_leveling-configuration","689":"/drivers/eeprom#wear_leveling-efl-driver-configuration","690":"/drivers/eeprom#wear_leveling-flash_spi-driver-configuration","691":"/drivers/eeprom#wear_leveling-rp2040-driver-configuration","692":"/drivers/eeprom#wear_leveling-legacy-driver-configuration","693":"/drivers/flash#flash-driver-configuration","694":"/drivers/flash#spi-flash-driver-configuration","695":"/drivers/gpio#gpio-control","696":"/drivers/gpio#macros","697":"/drivers/gpio#advanced-settings","698":"/drivers/gpio#atomic-operation","699":"/drivers/i2c#i2c-master-driver","700":"/drivers/i2c#usage","701":"/drivers/i2c#note-on-i2c-addresses","702":"/drivers/i2c#avr-configuration","703":"/drivers/i2c#arm-configuration","704":"/drivers/i2c#arm-configuration-i2cv1","705":"/drivers/i2c#arm-configuration-i2cv2","706":"/drivers/i2c#api","707":"/drivers/i2c#api-i2c-init","708":"/drivers/i2c#api-i2c-transmit","709":"/drivers/i2c#api-i2c-transmit-arguments","710":"/drivers/i2c#api-i2c-transmit-return","711":"/drivers/i2c#api-i2c-receive","712":"/drivers/i2c#api-i2c-receive-arguments","713":"/drivers/i2c#api-i2c-receive-return","714":"/drivers/i2c#api-i2c-write-register","715":"/drivers/i2c#api-i2c-write-register-arguments","716":"/drivers/i2c#api-i2c-write-register-return","717":"/drivers/i2c#api-i2c-write-register16","718":"/drivers/i2c#api-i2c-write-register16-arguments","719":"/drivers/i2c#api-i2c-write-register16-return","720":"/drivers/i2c#api-i2c-read-register","721":"/drivers/i2c#api-i2c-read-register-arguments","722":"/drivers/i2c#api-i2c-read-register-return","723":"/drivers/i2c#api-i2c-read-register16","724":"/drivers/i2c#api-i2c-read-register16-arguments","725":"/drivers/i2c#api-i2c-read-register16-return","726":"/drivers/i2c#api-i2c-ping-address","727":"/drivers/i2c#arguments","728":"/drivers/i2c#return-value","729":"/drivers/is31fl3218#is31fl3218-driver","730":"/drivers/is31fl3218#usage","731":"/drivers/is31fl3218#basic-configuration","732":"/drivers/is31fl3218#i2c-addressing","733":"/drivers/is31fl3218#arm-configuration","734":"/drivers/is31fl3218#led-mapping","735":"/drivers/is31fl3218#api","736":"/drivers/is31fl3218#api-is31fl3218-led-t","737":"/drivers/is31fl3218#api-is31fl3218-led-t-members","738":"/drivers/is31fl3218#api-is31fl3218-init","739":"/drivers/is31fl3218#api-is31fl3218-write-register","740":"/drivers/is31fl3218#api-is31fl3218-write-register-arguments","741":"/drivers/is31fl3218#api-is31fl3218-set-color","742":"/drivers/is31fl3218#api-is31fl3218-set-color-arguments","743":"/drivers/is31fl3218#api-is31fl3218-set-color-all","744":"/drivers/is31fl3218#api-is31fl3218-set-color-all-arguments","745":"/drivers/is31fl3218#api-is31fl3218-set-value","746":"/drivers/is31fl3218#api-is31fl3218-set-value-arguments","747":"/drivers/is31fl3218#api-is31fl3218-set-value-all","748":"/drivers/is31fl3218#api-is31fl3218-set-value-all-arguments","749":"/drivers/is31fl3218#api-is31fl3218-set-led-control-register-rgb","750":"/drivers/is31fl3218#api-is31fl3218-set-led-control-register-rgb-arguments","751":"/drivers/is31fl3218#api-is31fl3218-set-led-control-register-mono","752":"/drivers/is31fl3218#api-is31fl3218-set-led-control-register-mono-arguments","753":"/drivers/is31fl3218#api-is31fl3218-update-pwm-buffers","754":"/drivers/is31fl3218#api-is31fl3218-update-led-control-registers","755":"/drivers/is31fl3236#is31fl3236-driver","756":"/drivers/is31fl3236#usage","757":"/drivers/is31fl3236#basic-configuration","758":"/drivers/is31fl3236#i2c-addressing","759":"/drivers/is31fl3236#arm-configuration","760":"/drivers/is31fl3236#led-mapping","761":"/drivers/is31fl3236#api","762":"/drivers/is31fl3236#api-is31fl3236-led-t","763":"/drivers/is31fl3236#api-is31fl3236-led-t-members","764":"/drivers/is31fl3236#api-is31fl3236-init","765":"/drivers/is31fl3236#api-is31fl3236-init-arguments","766":"/drivers/is31fl3236#api-is31fl3236-write-register","767":"/drivers/is31fl3236#api-is31fl3236-write-register-arguments","768":"/drivers/is31fl3236#api-is31fl3236-set-color","769":"/drivers/is31fl3236#api-is31fl3236-set-color-arguments","770":"/drivers/is31fl3236#api-is31fl3236-set-color-all","771":"/drivers/is31fl3236#api-is31fl3236-set-color-all-arguments","772":"/drivers/is31fl3236#api-is31fl3236-set-value","773":"/drivers/is31fl3236#api-is31fl3236-set-value-arguments","774":"/drivers/is31fl3236#api-is31fl3236-set-value-all","775":"/drivers/is31fl3236#api-is31fl3236-set-value-all-arguments","776":"/drivers/is31fl3236#api-is31fl3236-set-led-control-register-rgb","777":"/drivers/is31fl3236#api-is31fl3236-set-led-control-register-rgb-arguments","778":"/drivers/is31fl3236#api-is31fl3236-set-led-control-register-mono","779":"/drivers/is31fl3236#api-is31fl3236-set-led-control-register-mono-arguments","780":"/drivers/is31fl3236#api-is31fl3236-update-pwm-buffers","781":"/drivers/is31fl3236#api-is31fl3236-update-pwm-buffers-arguments","782":"/drivers/is31fl3236#api-is31fl3236-update-led-control-registers","783":"/drivers/is31fl3236#api-is31fl3236-update-led-control-registers-arguments","784":"/drivers/is31fl3731#is31fl3731-driver","785":"/drivers/is31fl3731#usage","786":"/drivers/is31fl3731#basic-configuration","787":"/drivers/is31fl3731#i2c-addressing","788":"/drivers/is31fl3731#de-ghosting","789":"/drivers/is31fl3731#arm-configuration","790":"/drivers/is31fl3731#led-mapping","791":"/drivers/is31fl3731#api","792":"/drivers/is31fl3731#api-is31fl3731-led-t","793":"/drivers/is31fl3731#api-is31fl3731-led-t-members","794":"/drivers/is31fl3731#api-is31fl3731-init","795":"/drivers/is31fl3731#api-is31fl3731-init-arguments","796":"/drivers/is31fl3731#api-is31fl3731-write-register","797":"/drivers/is31fl3731#api-is31fl3731-write-register-arguments","798":"/drivers/is31fl3731#api-is31fl3731-select-page","799":"/drivers/is31fl3731#api-is31fl3731-select-page-arguments","800":"/drivers/is31fl3731#api-is31fl3731-set-color","801":"/drivers/is31fl3731#api-is31fl3731-set-color-arguments","802":"/drivers/is31fl3731#api-is31fl3731-set-color-all","803":"/drivers/is31fl3731#api-is31fl3731-set-color-all-arguments","804":"/drivers/is31fl3731#api-is31fl3731-set-value","805":"/drivers/is31fl3731#api-is31fl3731-set-value-arguments","806":"/drivers/is31fl3731#api-is31fl3731-set-value-all","807":"/drivers/is31fl3731#api-is31fl3731-set-value-all-arguments","808":"/drivers/is31fl3731#api-is31fl3731-set-led-control-register-rgb","809":"/drivers/is31fl3731#api-is31fl3731-set-led-control-register-rgb-arguments","810":"/drivers/is31fl3731#api-is31fl3731-set-led-control-register-mono","811":"/drivers/is31fl3731#api-is31fl3731-set-led-control-register-mono-arguments","812":"/drivers/is31fl3731#api-is31fl3731-update-pwm-buffers","813":"/drivers/is31fl3731#api-is31fl3731-update-pwm-buffers-arguments","814":"/drivers/is31fl3731#api-is31fl3731-update-led-control-registers","815":"/drivers/is31fl3731#api-is31fl3731-update-led-control-registers-arguments","816":"/drivers/is31fl3729#is31fl3729-driver","817":"/drivers/is31fl3729#usage","818":"/drivers/is31fl3729#basic-configuration","819":"/drivers/is31fl3729#i2c-addressing","820":"/drivers/is31fl3729#pwm-frequency","821":"/drivers/is31fl3729#de-ghosting","822":"/drivers/is31fl3729#global-current-control","823":"/drivers/is31fl3729#arm-configuration","824":"/drivers/is31fl3729#led-mapping","825":"/drivers/is31fl3729#api","826":"/drivers/is31fl3729#api-is31fl3729-led-t","827":"/drivers/is31fl3729#api-is31fl3729-led-t-members","828":"/drivers/is31fl3729#api-is31fl3729-init","829":"/drivers/is31fl3729#api-is31fl3729-init-arguments","830":"/drivers/is31fl3729#api-is31fl3729-write-register","831":"/drivers/is31fl3729#api-is31fl3729-write-register-arguments","832":"/drivers/is31fl3729#api-is31fl3729-set-color","833":"/drivers/is31fl3729#api-is31fl3729-set-color-arguments","834":"/drivers/is31fl3729#api-is31fl3729-set-color-all","835":"/drivers/is31fl3729#api-is31fl3729-set-color-all-arguments","836":"/drivers/is31fl3729#api-is31fl3729-set-value","837":"/drivers/is31fl3729#api-is31fl3729-set-value-arguments","838":"/drivers/is31fl3729#api-is31fl3729-set-value-all","839":"/drivers/is31fl3729#api-is31fl3729-set-value-all-arguments","840":"/drivers/is31fl3729#api-is31fl3729-set-scaling-register-rgb","841":"/drivers/is31fl3729#api-is31fl3729-set-scaling-register-rgb-arguments","842":"/drivers/is31fl3729#api-is31fl3729-set-scaling-register-mono","843":"/drivers/is31fl3729#api-is31fl3729-set-scaling-register-mono-arguments","844":"/drivers/is31fl3729#api-is31fl3729-update-pwm-buffers","845":"/drivers/is31fl3729#api-is31fl3729-update-pwm-buffers-arguments","846":"/drivers/is31fl3729#api-is31fl3729-update-scaling-registers","847":"/drivers/is31fl3729#api-is31fl3729-update-scaling-registers-arguments","848":"/drivers/is31fl3733#is31fl3733-driver","849":"/drivers/is31fl3733#usage","850":"/drivers/is31fl3733#basic-configuration","851":"/drivers/is31fl3733#i2c-addressing","852":"/drivers/is31fl3733#multi-driver-synchronization","853":"/drivers/is31fl3733#pwm-frequency","854":"/drivers/is31fl3733#de-ghosting","855":"/drivers/is31fl3733#global-current-control","856":"/drivers/is31fl3733#arm-configuration","857":"/drivers/is31fl3733#led-mapping","858":"/drivers/is31fl3733#api","859":"/drivers/is31fl3733#api-is31fl3733-led-t","860":"/drivers/is31fl3733#api-is31fl3733-led-t-members","861":"/drivers/is31fl3733#api-is31fl3733-init","862":"/drivers/is31fl3733#api-is31fl3733-init-arguments","863":"/drivers/is31fl3733#api-is31fl3733-write-register","864":"/drivers/is31fl3733#api-is31fl3733-write-register-arguments","865":"/drivers/is31fl3733#api-is31fl3733-select-page","866":"/drivers/is31fl3733#api-is31fl3733-select-page-arguments","867":"/drivers/is31fl3733#api-is31fl3733-set-color","868":"/drivers/is31fl3733#api-is31fl3733-set-color-arguments","869":"/drivers/is31fl3733#api-is31fl3733-set-color-all","870":"/drivers/is31fl3733#api-is31fl3733-set-color-all-arguments","871":"/drivers/is31fl3733#api-is31fl3733-set-value","872":"/drivers/is31fl3733#api-is31fl3733-set-value-arguments","873":"/drivers/is31fl3733#api-is31fl3733-set-value-all","874":"/drivers/is31fl3733#api-is31fl3733-set-value-all-arguments","875":"/drivers/is31fl3733#api-is31fl3733-set-led-control-register-rgb","876":"/drivers/is31fl3733#api-is31fl3733-set-led-control-register-rgb-arguments","877":"/drivers/is31fl3733#api-is31fl3733-set-led-control-register-mono","878":"/drivers/is31fl3733#api-is31fl3733-set-led-control-register-mono-arguments","879":"/drivers/is31fl3733#api-is31fl3733-update-pwm-buffers","880":"/drivers/is31fl3733#api-is31fl3733-update-pwm-buffers-arguments","881":"/drivers/is31fl3733#api-is31fl3733-update-led-control-registers","882":"/drivers/is31fl3733#api-is31fl3733-update-led-control-registers-arguments","883":"/drivers/is31fl3736#is31fl3736-driver","884":"/drivers/is31fl3736#usage","885":"/drivers/is31fl3736#basic-configuration","886":"/drivers/is31fl3736#i2c-addressing","887":"/drivers/is31fl3736#pwm-frequency","888":"/drivers/is31fl3736#de-ghosting","889":"/drivers/is31fl3736#global-current-control","890":"/drivers/is31fl3736#arm-configuration","891":"/drivers/is31fl3736#led-mapping","892":"/drivers/is31fl3736#api","893":"/drivers/is31fl3736#api-is31fl3736-led-t","894":"/drivers/is31fl3736#api-is31fl3736-led-t-members","895":"/drivers/is31fl3736#api-is31fl3736-init","896":"/drivers/is31fl3736#api-is31fl3736-init-arguments","897":"/drivers/is31fl3736#api-is31fl3736-write-register","898":"/drivers/is31fl3736#api-is31fl3736-write-register-arguments","899":"/drivers/is31fl3736#api-is31fl3736-select-page","900":"/drivers/is31fl3736#api-is31fl3736-select-page-arguments","901":"/drivers/is31fl3736#api-is31fl3736-set-color","902":"/drivers/is31fl3736#api-is31fl3736-set-color-arguments","903":"/drivers/is31fl3736#api-is31fl3736-set-color-all","904":"/drivers/is31fl3736#api-is31fl3736-set-color-all-arguments","905":"/drivers/is31fl3736#api-is31fl3736-set-value","906":"/drivers/is31fl3736#api-is31fl3736-set-value-arguments","907":"/drivers/is31fl3736#api-is31fl3736-set-value-all","908":"/drivers/is31fl3736#api-is31fl3736-set-value-all-arguments","909":"/drivers/is31fl3736#api-is31fl3736-set-led-control-register-rgb","910":"/drivers/is31fl3736#api-is31fl3736-set-led-control-register-rgb-arguments","911":"/drivers/is31fl3736#api-is31fl3736-set-led-control-register-mono","912":"/drivers/is31fl3736#api-is31fl3736-set-led-control-register-mono-arguments","913":"/drivers/is31fl3736#api-is31fl3736-update-pwm-buffers","914":"/drivers/is31fl3736#api-is31fl3736-update-pwm-buffers-arguments","915":"/drivers/is31fl3736#api-is31fl3736-update-led-control-registers","916":"/drivers/is31fl3736#api-is31fl3736-update-led-control-registers-arguments","917":"/drivers/is31fl3737#is31fl3737-driver","918":"/drivers/is31fl3737#usage","919":"/drivers/is31fl3737#basic-configuration","920":"/drivers/is31fl3737#i2c-addressing","921":"/drivers/is31fl3737#pwm-frequency","922":"/drivers/is31fl3737#de-ghosting","923":"/drivers/is31fl3737#global-current-control","924":"/drivers/is31fl3737#arm-configuration","925":"/drivers/is31fl3737#led-mapping","926":"/drivers/is31fl3737#api","927":"/drivers/is31fl3737#api-is31fl3737-led-t","928":"/drivers/is31fl3737#api-is31fl3737-led-t-members","929":"/drivers/is31fl3737#api-is31fl3737-init","930":"/drivers/is31fl3737#api-is31fl3737-init-arguments","931":"/drivers/is31fl3737#api-is31fl3737-write-register","932":"/drivers/is31fl3737#api-is31fl3737-write-register-arguments","933":"/drivers/is31fl3737#api-is31fl3737-select-page","934":"/drivers/is31fl3737#api-is31fl3737-select-page-arguments","935":"/drivers/is31fl3737#api-is31fl3737-set-color","936":"/drivers/is31fl3737#api-is31fl3737-set-color-arguments","937":"/drivers/is31fl3737#api-is31fl3737-set-color-all","938":"/drivers/is31fl3737#api-is31fl3737-set-color-all-arguments","939":"/drivers/is31fl3737#api-is31fl3737-set-value","940":"/drivers/is31fl3737#api-is31fl3737-set-value-arguments","941":"/drivers/is31fl3737#api-is31fl3737-set-value-all","942":"/drivers/is31fl3737#api-is31fl3737-set-value-all-arguments","943":"/drivers/is31fl3737#api-is31fl3737-set-led-control-register-rgb","944":"/drivers/is31fl3737#api-is31fl3737-set-led-control-register-rgb-arguments","945":"/drivers/is31fl3737#api-is31fl3737-set-led-control-register-mono","946":"/drivers/is31fl3737#api-is31fl3737-set-led-control-register-mono-arguments","947":"/drivers/is31fl3737#api-is31fl3737-update-pwm-buffers","948":"/drivers/is31fl3737#api-is31fl3737-update-pwm-buffers-arguments","949":"/drivers/is31fl3737#api-is31fl3737-update-led-control-registers","950":"/drivers/is31fl3737#api-is31fl3737-update-led-control-registers-arguments","951":"/drivers/is31fl3741#is31fl3741-driver","952":"/drivers/is31fl3741#usage","953":"/drivers/is31fl3741#basic-configuration","954":"/drivers/is31fl3741#i2c-addressing","955":"/drivers/is31fl3741#pwm-frequency","956":"/drivers/is31fl3741#de-ghosting","957":"/drivers/is31fl3741#global-current-control","958":"/drivers/is31fl3741#arm-configuration","959":"/drivers/is31fl3741#led-mapping","960":"/drivers/is31fl3741#api","961":"/drivers/is31fl3741#api-is31fl3741-led-t","962":"/drivers/is31fl3741#api-is31fl3741-led-t-members","963":"/drivers/is31fl3741#api-is31fl3741-init","964":"/drivers/is31fl3741#api-is31fl3741-init-arguments","965":"/drivers/is31fl3741#api-is31fl3741-write-register","966":"/drivers/is31fl3741#api-is31fl3741-write-register-arguments","967":"/drivers/is31fl3741#api-is31fl3741-select-page","968":"/drivers/is31fl3741#api-is31fl3741-select-page-arguments","969":"/drivers/is31fl3741#api-is31fl3741-set-color","970":"/drivers/is31fl3741#api-is31fl3741-set-color-arguments","971":"/drivers/is31fl3741#api-is31fl3741-set-color-all","972":"/drivers/is31fl3741#api-is31fl3741-set-color-all-arguments","973":"/drivers/is31fl3741#api-is31fl3741-set-value","974":"/drivers/is31fl3741#api-is31fl3741-set-value-arguments","975":"/drivers/is31fl3741#api-is31fl3741-set-value-all","976":"/drivers/is31fl3741#api-is31fl3741-set-value-all-arguments","977":"/drivers/is31fl3741#api-is31fl3741-set-led-control-register-rgb","978":"/drivers/is31fl3741#api-is31fl3741-set-led-control-register-rgb-arguments","979":"/drivers/is31fl3741#api-is31fl3741-set-led-control-register-mono","980":"/drivers/is31fl3741#api-is31fl3741-set-led-control-register-mono-arguments","981":"/drivers/is31fl3741#api-is31fl3741-update-pwm-buffers","982":"/drivers/is31fl3741#api-is31fl3741-update-pwm-buffers-arguments","983":"/drivers/is31fl3741#api-is31fl3741-update-led-control-registers","984":"/drivers/is31fl3741#api-is31fl3741-update-led-control-registers-arguments","985":"/drivers/is31fl3742a#is31fl3742a-driver","986":"/drivers/is31fl3742a#usage","987":"/drivers/is31fl3742a#basic-configuration","988":"/drivers/is31fl3742a#i2c-addressing","989":"/drivers/is31fl3742a#pwm-frequency","990":"/drivers/is31fl3742a#de-ghosting","991":"/drivers/is31fl3742a#global-current-control","992":"/drivers/is31fl3742a#arm-configuration","993":"/drivers/is31fl3742a#led-mapping","994":"/drivers/is31fl3742a#api","995":"/drivers/is31fl3742a#api-is31fl3742a-led-t","996":"/drivers/is31fl3742a#api-is31fl3742a-led-t-members","997":"/drivers/is31fl3742a#api-is31fl3742a-init","998":"/drivers/is31fl3742a#api-is31fl3742a-init-arguments","999":"/drivers/is31fl3742a#api-is31fl3742a-write-register","1000":"/drivers/is31fl3742a#api-is31fl3742a-write-register-arguments","1001":"/drivers/is31fl3742a#api-is31fl3742a-select-page","1002":"/drivers/is31fl3742a#api-is31fl3742a-select-page-arguments","1003":"/drivers/is31fl3742a#api-is31fl3742a-set-color","1004":"/drivers/is31fl3742a#api-is31fl3742a-set-color-arguments","1005":"/drivers/is31fl3742a#api-is31fl3742a-set-color-all","1006":"/drivers/is31fl3742a#api-is31fl3742a-set-color-all-arguments","1007":"/drivers/is31fl3742a#api-is31fl3742a-set-value","1008":"/drivers/is31fl3742a#api-is31fl3742a-set-value-arguments","1009":"/drivers/is31fl3742a#api-is31fl3742a-set-value-all","1010":"/drivers/is31fl3742a#api-is31fl3742a-set-value-all-arguments","1011":"/drivers/is31fl3742a#api-is31fl3742a-set-scaling-register-rgb","1012":"/drivers/is31fl3742a#api-is31fl3742a-set-scaling-register-rgb-arguments","1013":"/drivers/is31fl3742a#api-is31fl3742a-set-scaling-register-mono","1014":"/drivers/is31fl3742a#api-is31fl3742a-set-scaling-register-mono-arguments","1015":"/drivers/is31fl3742a#api-is31fl3742a-update-pwm-buffers","1016":"/drivers/is31fl3742a#api-is31fl3742a-update-pwm-buffers-arguments","1017":"/drivers/is31fl3742a#api-is31fl3742a-update-scaling-registers","1018":"/drivers/is31fl3742a#api-is31fl3742a-update-scaling-registers-arguments","1019":"/drivers/is31fl3743a#is31fl3743a-driver","1020":"/drivers/is31fl3743a#usage","1021":"/drivers/is31fl3743a#basic-configuration","1022":"/drivers/is31fl3743a#i2c-addressing","1023":"/drivers/is31fl3743a#multi-driver-synchronization","1024":"/drivers/is31fl3743a#de-ghosting","1025":"/drivers/is31fl3743a#global-current-control","1026":"/drivers/is31fl3743a#arm-configuration","1027":"/drivers/is31fl3743a#led-mapping","1028":"/drivers/is31fl3743a#api","1029":"/drivers/is31fl3743a#api-is31fl3743a-led-t","1030":"/drivers/is31fl3743a#api-is31fl3743a-led-t-members","1031":"/drivers/is31fl3743a#api-is31fl3743a-init","1032":"/drivers/is31fl3743a#api-is31fl3743a-init-arguments","1033":"/drivers/is31fl3743a#api-is31fl3743a-write-register","1034":"/drivers/is31fl3743a#api-is31fl3743a-write-register-arguments","1035":"/drivers/is31fl3743a#api-is31fl3743a-select-page","1036":"/drivers/is31fl3743a#api-is31fl3743a-select-page-arguments","1037":"/drivers/is31fl3743a#api-is31fl3743a-set-color","1038":"/drivers/is31fl3743a#api-is31fl3743a-set-color-arguments","1039":"/drivers/is31fl3743a#api-is31fl3743a-set-color-all","1040":"/drivers/is31fl3743a#api-is31fl3743a-set-color-all-arguments","1041":"/drivers/is31fl3743a#api-is31fl3743a-set-value","1042":"/drivers/is31fl3743a#api-is31fl3743a-set-value-arguments","1043":"/drivers/is31fl3743a#api-is31fl3743a-set-value-all","1044":"/drivers/is31fl3743a#api-is31fl3743a-set-value-all-arguments","1045":"/drivers/is31fl3743a#api-is31fl3743a-set-scaling-register-rgb","1046":"/drivers/is31fl3743a#api-is31fl3743a-set-scaling-register-rgb-arguments","1047":"/drivers/is31fl3743a#api-is31fl3743a-set-scaling-register-mono","1048":"/drivers/is31fl3743a#api-is31fl3743a-set-scaling-register-mono-arguments","1049":"/drivers/is31fl3743a#api-is31fl3743a-update-pwm-buffers","1050":"/drivers/is31fl3743a#api-is31fl3743a-update-pwm-buffers-arguments","1051":"/drivers/is31fl3743a#api-is31fl3743a-update-scaling-registers","1052":"/drivers/is31fl3743a#api-is31fl3743a-update-scaling-registers-arguments","1053":"/drivers/is31fl3745#is31fl3745-driver","1054":"/drivers/is31fl3745#usage","1055":"/drivers/is31fl3745#basic-configuration","1056":"/drivers/is31fl3745#i2c-addressing","1057":"/drivers/is31fl3745#multi-driver-synchronization","1058":"/drivers/is31fl3745#de-ghosting","1059":"/drivers/is31fl3745#global-current-control","1060":"/drivers/is31fl3745#arm-configuration","1061":"/drivers/is31fl3745#led-mapping","1062":"/drivers/is31fl3745#api","1063":"/drivers/is31fl3745#api-is31fl3745-led-t","1064":"/drivers/is31fl3745#api-is31fl3745-led-t-members","1065":"/drivers/is31fl3745#api-is31fl3745-init","1066":"/drivers/is31fl3745#api-is31fl3745-init-arguments","1067":"/drivers/is31fl3745#api-is31fl3745-write-register","1068":"/drivers/is31fl3745#api-is31fl3745-write-register-arguments","1069":"/drivers/is31fl3745#api-is31fl3745-select-page","1070":"/drivers/is31fl3745#api-is31fl3745-select-page-arguments","1071":"/drivers/is31fl3745#api-is31fl3745-set-color","1072":"/drivers/is31fl3745#api-is31fl3745-set-color-arguments","1073":"/drivers/is31fl3745#api-is31fl3745-set-color-all","1074":"/drivers/is31fl3745#api-is31fl3745-set-color-all-arguments","1075":"/drivers/is31fl3745#api-is31fl3745-set-value","1076":"/drivers/is31fl3745#api-is31fl3745-set-value-arguments","1077":"/drivers/is31fl3745#api-is31fl3745-set-value-all","1078":"/drivers/is31fl3745#api-is31fl3745-set-value-all-arguments","1079":"/drivers/is31fl3745#api-is31fl3745-set-scaling-register-rgb","1080":"/drivers/is31fl3745#api-is31fl3745-set-scaling-register-rgb-arguments","1081":"/drivers/is31fl3745#api-is31fl3745-set-scaling-register-mono","1082":"/drivers/is31fl3745#api-is31fl3745-set-scaling-register-mono-arguments","1083":"/drivers/is31fl3745#api-is31fl3745-update-pwm-buffers","1084":"/drivers/is31fl3745#api-is31fl3745-update-pwm-buffers-arguments","1085":"/drivers/is31fl3745#api-is31fl3745-update-scaling-registers","1086":"/drivers/is31fl3745#api-is31fl3745-update-scaling-registers-arguments","1087":"/drivers/is31fl3746a#is31fl3746a-driver","1088":"/drivers/is31fl3746a#usage","1089":"/drivers/is31fl3746a#basic-configuration","1090":"/drivers/is31fl3746a#i2c-addressing","1091":"/drivers/is31fl3746a#pwm-frequency","1092":"/drivers/is31fl3746a#de-ghosting","1093":"/drivers/is31fl3746a#global-current-control","1094":"/drivers/is31fl3746a#arm-configuration","1095":"/drivers/is31fl3746a#led-mapping","1096":"/drivers/is31fl3746a#api","1097":"/drivers/is31fl3746a#api-is31fl3746a-led-t","1098":"/drivers/is31fl3746a#api-is31fl3746a-led-t-members","1099":"/drivers/is31fl3746a#api-is31fl3746a-init","1100":"/drivers/is31fl3746a#api-is31fl3746a-init-arguments","1101":"/drivers/is31fl3746a#api-is31fl3746a-write-register","1102":"/drivers/is31fl3746a#api-is31fl3746a-write-register-arguments","1103":"/drivers/is31fl3746a#api-is31fl3746a-select-page","1104":"/drivers/is31fl3746a#api-is31fl3746a-select-page-arguments","1105":"/drivers/is31fl3746a#api-is31fl3746a-set-color","1106":"/drivers/is31fl3746a#api-is31fl3746a-set-color-arguments","1107":"/drivers/is31fl3746a#api-is31fl3746a-set-color-all","1108":"/drivers/is31fl3746a#api-is31fl3746a-set-color-all-arguments","1109":"/drivers/is31fl3746a#api-is31fl3746a-set-value","1110":"/drivers/is31fl3746a#api-is31fl3746a-set-value-arguments","1111":"/drivers/is31fl3746a#api-is31fl3746a-set-value-all","1112":"/drivers/is31fl3746a#api-is31fl3746a-set-value-all-arguments","1113":"/drivers/is31fl3746a#api-is31fl3746a-set-scaling-register-rgb","1114":"/drivers/is31fl3746a#api-is31fl3746a-set-scaling-register-rgb-arguments","1115":"/drivers/is31fl3746a#api-is31fl3746a-set-scaling-register-mono","1116":"/drivers/is31fl3746a#api-is31fl3746a-set-scaling-register-mono-arguments","1117":"/drivers/is31fl3746a#api-is31fl3746a-update-pwm-buffers","1118":"/drivers/is31fl3746a#api-is31fl3746a-update-pwm-buffers-arguments","1119":"/drivers/is31fl3746a#api-is31fl3746a-update-scaling-registers","1120":"/drivers/is31fl3746a#api-is31fl3746a-update-scaling-registers-arguments","1121":"/drivers/serial#serial-driver","1122":"/drivers/serial#bitbang","1123":"/drivers/serial#pin-configuration","1124":"/drivers/serial#setup","1125":"/drivers/serial#usart-half-duplex","1126":"/drivers/serial#pin-configuration-1","1127":"/drivers/serial#setup-1","1128":"/drivers/serial#usart-full-duplex","1129":"/drivers/serial#pin-configuration-2","1130":"/drivers/serial#setup-2","1131":"/drivers/serial#choosing-a-driver-subsystem","1132":"/drivers/serial#the-serial-driver","1133":"/drivers/serial#the-sio-driver","1134":"/drivers/serial#the-pio-driver","1135":"/drivers/serial#advanced-configuration","1136":"/drivers/serial#baudrate","1137":"/drivers/serial#timeout","1138":"/drivers/serial#troubleshooting","1139":"/drivers/serial#alternate-functions-for-selected-stm32-mcus","1140":"/drivers/serial#stm32f303-proton-c-datasheet","1141":"/drivers/serial#stm32f072-datasheet","1142":"/drivers/serial#stm32f103-medium-density-c8-cb-datasheet","1143":"/drivers/snled27351#snled27351-driver","1144":"/drivers/snled27351#usage","1145":"/drivers/snled27351#basic-configuration","1146":"/drivers/snled27351#i2c-addressing","1147":"/drivers/snled27351#arm-configuration","1148":"/drivers/snled27351#led-mapping","1149":"/drivers/snled27351#api","1150":"/drivers/snled27351#api-snled27351-led-t","1151":"/drivers/snled27351#api-snled27351-led-t-members","1152":"/drivers/snled27351#api-snled27351-init","1153":"/drivers/snled27351#api-snled27351-init-arguments","1154":"/drivers/snled27351#api-snled27351-write-register","1155":"/drivers/snled27351#api-snled27351-write-register-arguments","1156":"/drivers/snled27351#api-snled27351-select-page","1157":"/drivers/snled27351#api-snled27351-select-page-arguments","1158":"/drivers/snled27351#api-snled27351-set-color","1159":"/drivers/snled27351#api-snled27351-set-color-arguments","1160":"/drivers/snled27351#api-snled27351-set-color-all","1161":"/drivers/snled27351#api-snled27351-set-color-all-arguments","1162":"/drivers/snled27351#api-snled27351-set-value","1163":"/drivers/snled27351#api-snled27351-set-value-arguments","1164":"/drivers/snled27351#api-snled27351-set-value-all","1165":"/drivers/snled27351#api-snled27351-set-value-all-arguments","1166":"/drivers/snled27351#api-snled27351-set-led-control-register-rgb","1167":"/drivers/snled27351#api-snled27351-set-led-control-register-rgb-arguments","1168":"/drivers/snled27351#api-snled27351-set-led-control-register-mono","1169":"/drivers/snled27351#api-snled27351-set-led-control-register-mono-arguments","1170":"/drivers/snled27351#api-snled27351-update-pwm-buffers","1171":"/drivers/snled27351#api-snled27351-update-pwm-buffers-arguments","1172":"/drivers/snled27351#api-snled27351-update-led-control-registers","1173":"/drivers/snled27351#api-snled27351-update-led-control-registers-arguments","1174":"/drivers/spi#spi-master-driver","1175":"/drivers/spi#usage","1176":"/drivers/spi#avr-configuration","1177":"/drivers/spi#arm-configuration","1178":"/drivers/spi#api","1179":"/drivers/spi#api-spi-init","1180":"/drivers/spi#api-spi-start","1181":"/drivers/spi#api-spi-start-arguments","1182":"/drivers/spi#api-spi-start-return","1183":"/drivers/spi#api-spi-write","1184":"/drivers/spi#api-spi-write-arguments","1185":"/drivers/spi#api-spi-write-return","1186":"/drivers/spi#api-spi-read","1187":"/drivers/spi#api-spi-read-return","1188":"/drivers/spi#api-spi-transmit","1189":"/drivers/spi#api-spi-transmit-arguments","1190":"/drivers/spi#api-spi-transmit-return","1191":"/drivers/spi#api-spi-receive","1192":"/drivers/spi#api-spi-receive-arguments","1193":"/drivers/spi#api-spi-receive-return","1194":"/drivers/spi#api-spi-stop","1195":"/drivers/uart#uart-driver","1196":"/drivers/uart#usage","1197":"/drivers/uart#avr-configuration","1198":"/drivers/uart#arm-configuration","1199":"/drivers/uart#api","1200":"/drivers/uart#api-uart-init","1201":"/drivers/uart#api-uart-init-arguments","1202":"/drivers/uart#api-uart-write","1203":"/drivers/uart#api-uart-write-arguments","1204":"/drivers/uart#api-uart-read","1205":"/drivers/uart#api-uart-read-return","1206":"/drivers/uart#api-uart-transmit","1207":"/drivers/uart#api-uart-transmit-arguments","1208":"/drivers/uart#api-uart-receive","1209":"/drivers/uart#api-uart-receive-arguments","1210":"/drivers/uart#api-uart-available","1211":"/drivers/uart#api-uart-available-return","1212":"/drivers/ws2812#ws2812-driver","1213":"/drivers/ws2812#usage","1214":"/drivers/ws2812#basic-configuration","1215":"/drivers/ws2812#timing-adjustment","1216":"/drivers/ws2812#byte-order","1217":"/drivers/ws2812#rgbw-support","1218":"/drivers/ws2812#driver-configuration","1219":"/drivers/ws2812#bitbang-driver","1220":"/drivers/ws2812#i2c-driver","1221":"/drivers/ws2812#pio-driver","1222":"/drivers/ws2812#pwm-driver","1223":"/drivers/ws2812#spi-driver","1224":"/drivers/ws2812#arm-configuration","1225":"/drivers/ws2812#push-pull-open-drain","1226":"/drivers/ws2812#arm-spi-driver","1227":"/drivers/ws2812#arm-spi-baudrate","1228":"/drivers/ws2812#arm-spi-circular-buffer","1229":"/drivers/ws2812#arm-pio-driver","1230":"/drivers/ws2812#arm-pwm-driver","1231":"/drivers/ws2812#api","1232":"/drivers/ws2812#api-ws2812-setleds","1233":"/drivers/ws2812#api-ws2812-setleds-arguments","1234":"/easy_maker#easy-maker-build-one-off-projects-in-configurator","1235":"/easy_maker#quickstart","1236":"/easy_maker#direct-pin","1237":"/faq_build#frequently-asked-build-questions","1238":"/faq_build#can-t-program-on-linux","1239":"/faq_build#linux-udev-rules","1240":"/faq_build#serial-device-is-not-detected-in-bootloader-mode-on-linux","1241":"/faq_build#unknown-device-for-dfu-bootloader","1242":"/faq_build#usb-vid-and-pid","1243":"/faq_build#i-just-flashed-my-keyboard-and-it-does-nothing-keypresses-don-t-register-it-s-also-arm-rev6-planck-clueboard-60-hs60v2-etc-feb-2019","1244":"/faq_debug#debugging-faq","1245":"/faq_debug#debugging","1246":"/faq_debug#debugging-tools","1247":"/faq_debug#debugging-with-qmk-toolbox","1248":"/faq_debug#debugging-with-qmk-cli","1249":"/faq_debug#debugging-with-hid-listen","1250":"/faq_debug#debug-api","1251":"/faq_debug#debug-examples","1252":"/faq_debug#which-matrix-position-is-this-keypress","1253":"/faq_debug#how-long-did-it-take-to-scan-for-a-keypress","1254":"/faq_debug#hid-listen-can-t-recognize-device","1255":"/faq_debug#can-t-get-message-on-console","1256":"/faq_general#frequently-asked-questions","1257":"/faq_general#what-is-qmk","1258":"/faq_general#i-don-t-know-where-to-start","1259":"/faq_general#how-can-i-flash-the-firmware-i-built","1260":"/faq_general#what-if-i-have-an-issue-that-isn-t-covered-here","1261":"/faq_general#what-if-i-found-a-bug","1262":"/faq_general#but-git-and-github-are-intimidating","1263":"/faq_general#i-have-a-keyboard-that-i-want-to-add-support-for","1264":"/faq_general#what-if-i-want-to-brand-it-with-qmk","1265":"/faq_general#what-differences-are-there-between-qmk-and-tmk","1266":"/faq_keymap#keymap-faq","1267":"/faq_keymap#what-keycodes-can-i-use","1268":"/faq_keymap#what-are-the-default-keycodes","1269":"/faq_keymap#how-can-i-make-custom-names-for-complex-keycodes","1270":"/faq_keymap#my-keymap-doesn-t-update-when-i-flash-it","1271":"/faq_keymap#some-of-my-keys-are-swapped-or-not-working","1272":"/faq_keymap#the-menu-key-isn-t-working","1273":"/faq_keymap#power-keys-aren-t-working","1274":"/faq_keymap#one-shot-modifier","1275":"/faq_keymap#modifier-layer-stuck","1276":"/faq_keymap#mechanical-lock-switch-support","1277":"/faq_keymap#input-special-characters-other-than-ascii-like-cedille-c","1278":"/faq_keymap#fn-key-on-macos","1279":"/faq_keymap#keys-supported-in-mac-osx","1280":"/faq_keymap#jis-keys-in-mac-osx","1281":"/faq_keymap#rn-42-bluetooth-doesn-t-work-with-karabiner","1282":"/faq_keymap#esc-and-on-a-single-key","1283":"/faq_keymap#eject-on-mac-osx","1284":"/faq_keymap#what-are-real-and-weak-modifiers","1285":"/faq_misc#miscellaneous-faq","1286":"/faq_misc#testing","1287":"/faq_misc#safety-considerations","1288":"/faq_misc#nkro-doesn-t-work","1289":"/faq_misc#trackpoint-needs-reset-circuit-ps-2-mouse-support","1290":"/faq_misc#can-t-read-column-of-matrix-beyond-16","1291":"/faq_misc#special-extra-key-doesn-t-work-system-audio-control-keys","1292":"/faq_misc#wake-from-sleep-doesn-t-work","1293":"/faq_misc#using-arduino","1294":"/faq_misc#enabling-jtag","1295":"/faq_misc#usb-3-compatibility","1296":"/faq_misc#mac-compatibility","1297":"/faq_misc#os-x-10-11-and-hub","1298":"/faq_misc#problem-in-bios-uefi-setup-resume-sleep-wake-power-cycles","1299":"/feature_advanced_keycodes#modifier-keys","1300":"/feature_advanced_keycodes#checking-modifier-state","1301":"/feature_advanced_keycodes#examples","1302":"/feature_advanced_keycodes#alt-escape-for-alt-tab","1303":"/feature_advanced_keycodes#shift-backspace-for-delete","1304":"/feature_advanced_keycodes#advanced-topics","1305":"/feature_advanced_keycodes#switching-and-toggling-layers","1306":"/feature_advanced_keycodes#mod-tap","1307":"/feature_advanced_keycodes#one-shot-keys","1308":"/feature_advanced_keycodes#tap-hold-configuration-options","1309":"/feature_advanced_keycodes#key-overrides","1310":"/feature_converters#converters","1311":"/feature_converters#supported-converters","1312":"/feature_converters#overview","1313":"/feature_converters#conditional-configuration","1314":"/feature_converters#pin-compatibility","1315":"/feature_converters#pro-micro","1316":"/feature_converters#proton_c","1317":"/feature_converters#kb2040","1318":"/feature_converters#sparkfun_pm2040","1319":"/feature_converters#stemcell","1320":"/feature_converters#bonsai_c4","1321":"/feature_converters#rp2040_ce","1322":"/feature_converters#elite-c","1323":"/feature_converters#stemcell-stemcell-elite","1324":"/feature_converters#rp2040_ce_elite","1325":"/feature_debounce_type#contact-bounce-contact-chatter","1326":"/feature_debounce_type#types-of-debounce-algorithms","1327":"/feature_debounce_type#supported-debounce-algorithms","1328":"/feature_debounce_type#debounce-time","1329":"/feature_debounce_type#debounce-method","1330":"/feature_debounce_type#implementing-your-own-debouncing-code","1331":"/feature_eeprom#persistent-configuration-eeprom","1332":"/feature_eeprom#example-implementation","1333":"/feature_eeprom#eeconfig-function-documentation","1334":"/feature_layers#layers","1335":"/feature_layers#switching-and-toggling-layers","1336":"/feature_layers#caveats","1337":"/feature_layers#working-with-layers","1338":"/feature_layers#beginners","1339":"/feature_layers#intermediate-users","1340":"/feature_layers#advanced-users","1341":"/feature_layers#functions","1342":"/feature_layers#layer-change-code","1343":"/feature_layers#example-layer-state-set-implementation","1344":"/feature_layers#example-keycode-to-cycle-through-layers","1345":"/feature_layers#layer-state-set-function-documentation","1346":"/feature_layouts#layouts-using-a-keymap-with-multiple-keyboards","1347":"/feature_layouts#supporting-a-layout","1348":"/feature_layouts#building-a-keymap","1349":"/feature_layouts#conflicting-layouts","1350":"/feature_layouts#tips-for-making-layouts-keyboard-agnostic","1351":"/feature_layouts#includes","1352":"/feature_layouts#keymaps","1353":"/feature_macros#macros","1354":"/feature_macros#using-macros-in-json-keymaps","1355":"/feature_macros#selecting-your-host-keyboard-layout","1356":"/feature_macros#macro-basics","1357":"/feature_macros#object-format","1358":"/feature_macros#using-macros-in-c-keymaps","1359":"/feature_macros#send-string-process-record-user","1360":"/feature_macros#advanced-macros","1361":"/feature_macros#tap-down-and-up","1362":"/feature_macros#alternative-keymaps","1363":"/feature_macros#strings-in-memory","1364":"/feature_macros#advanced-macro-functions","1365":"/feature_macros#record-event-pressed","1366":"/feature_macros#register-code-kc","1367":"/feature_macros#unregister-code-kc","1368":"/feature_macros#tap-code-kc","1369":"/feature_macros#tap-code-delay-kc-delay","1370":"/feature_macros#register-code16-kc-unregister-code16-kc-tap-code16-kc-and-tap-code16-delay-kc-delay","1371":"/feature_macros#clear-keyboard","1372":"/feature_macros#clear-mods","1373":"/feature_macros#clear-keyboard-but-mods","1374":"/feature_macros#advanced-example","1375":"/feature_macros#super-alt↯tab","1376":"/feature_userspace#userspace-sharing-code-between-keymaps","1377":"/feature_userspace#rules-mk","1378":"/feature_userspace#override-default-userspace","1379":"/feature_userspace#configuration-options-config-h","1380":"/feature_userspace#readme-readme-md","1381":"/feature_userspace#build-all-keyboards-that-support-a-specific-keymap","1382":"/feature_userspace#examples","1383":"/feature_userspace#customized-functions","1384":"/feature_userspace#custom-features","1385":"/feature_userspace#consolidated-macros","1386":"/features/audio#audio","1387":"/features/audio#avr-based-boards","1388":"/features/audio#wiring","1389":"/features/audio#arm-based-boards","1390":"/features/audio#dac-basic","1391":"/features/audio#wiring-1","1392":"/features/audio#proton-c-example","1393":"/features/audio#dac-additive","1394":"/features/audio#pwm-software","1395":"/features/audio#wiring-2","1396":"/features/audio#pwm-hardware","1397":"/features/audio#tone-multiplexing","1398":"/features/audio#songs","1399":"/features/audio#audio-config","1400":"/features/audio#tempo","1401":"/features/audio#arm-audio-volume","1402":"/features/audio#voices","1403":"/features/audio#music-mode","1404":"/features/audio#music-mask","1405":"/features/audio#music-map","1406":"/features/audio#audio-click","1407":"/features/audio#midi-functionality","1408":"/features/audio#audio-keycodes","1409":"/features/auto_shift#auto-shift-why-do-we-need-a-shift-key","1410":"/features/auto_shift#why-auto-shift","1411":"/features/auto_shift#how-does-it-work","1412":"/features/auto_shift#are-there-limitations-to-auto-shift","1413":"/features/auto_shift#how-do-i-enable-auto-shift","1414":"/features/auto_shift#modifiers","1415":"/features/auto_shift#configuring-auto-shift","1416":"/features/auto_shift#auto-shift-timeout-value-in-ms","1417":"/features/auto_shift#no-auto-shift-special-simple-define","1418":"/features/auto_shift#no-auto-shift-tab-simple-define","1419":"/features/auto_shift#no-auto-shift-symbols-simple-define","1420":"/features/auto_shift#no-auto-shift-numeric-simple-define","1421":"/features/auto_shift#no-auto-shift-alpha-simple-define","1422":"/features/auto_shift#auto-shift-enter-simple-define","1423":"/features/auto_shift#auto-shift-per-key","1424":"/features/auto_shift#auto-shift-repeat-simple-define","1425":"/features/auto_shift#auto-shift-no-auto-repeat-simple-define","1426":"/features/auto_shift#auto-shift-alpha-predefined-key-group","1427":"/features/auto_shift#auto-shift-numeric-predefined-key-group","1428":"/features/auto_shift#auto-shift-symbols-predefined-key-group","1429":"/features/auto_shift#auto-shift-special-predefined-key-group","1430":"/features/auto_shift#custom-shifted-values","1431":"/features/auto_shift#retro-shift","1432":"/features/auto_shift#retro-shift-and-tap-hold-configurations","1433":"/features/auto_shift#using-auto-shift-setup","1434":"/features/auto_shift#setup","1435":"/features/auto_shift#use","1436":"/features/auto_shift#an-example-run","1437":"/features/autocorrect#autocorrect","1438":"/features/autocorrect#how-does-it-work","1439":"/features/autocorrect#how-do-i-enable-autocorrection","1440":"/features/autocorrect#customizing-autocorrect-library","1441":"/features/autocorrect#avoiding-false-triggers","1442":"/features/autocorrect#overriding-autocorrect","1443":"/features/autocorrect#keycodes","1444":"/features/autocorrect#user-callback-functions","1445":"/features/autocorrect#process-autocorrect","1446":"/features/autocorrect#process-autocorrect-example","1447":"/features/autocorrect#apply-autocorrect","1448":"/features/autocorrect#apply-autocorrect-example","1449":"/features/autocorrect#autocorrect-status","1450":"/features/autocorrect#appendix","1451":"/features/autocorrect#encoding","1452":"/features/autocorrect#decoding","1453":"/features/autocorrect#credits","1454":"/features/backlight#backlighting","1455":"/features/backlight#usage","1456":"/features/backlight#keycodes","1457":"/features/backlight#basic-configuration","1458":"/features/backlight#on-state","1459":"/features/backlight#multiple-backlight-pins","1460":"/features/backlight#driver-configuration","1461":"/features/backlight#pwm-driver","1462":"/features/backlight#timer-driver","1463":"/features/backlight#software-driver","1464":"/features/backlight#custom-driver","1465":"/features/backlight#avr-configuration","1466":"/features/backlight#avr-pwm-driver","1467":"/features/backlight#avr-timer-driver","1468":"/features/backlight#arm-configuration","1469":"/features/backlight#arm-pwm-driver","1470":"/features/backlight#arm-timer-driver","1471":"/features/backlight#example-schematic","1472":"/features/backlight#api","1473":"/features/backlight#api-backlight-toggle","1474":"/features/backlight#api-backlight-enable","1475":"/features/backlight#api-backlight-disable","1476":"/features/backlight#api-backlight-step","1477":"/features/backlight#api-backlight-increase","1478":"/features/backlight#api-backlight-decrease","1479":"/features/backlight#api-backlight-level","1480":"/features/backlight#api-backlight-level-arguments","1481":"/features/backlight#api-get-backlight-level","1482":"/features/backlight#api-get-backlight-level-return","1483":"/features/backlight#api-is-backlight-enabled","1484":"/features/backlight#api-is-backlight-enabled-return","1485":"/features/backlight#api-backlight-toggle-breathing","1486":"/features/backlight#api-backlight-enable-breathing","1487":"/features/backlight#api-backlight-disable-breathing","1488":"/features/backlight#api-is-backlight-breathing","1489":"/features/backlight#api-is-backlight-breathing-return","1490":"/features/bluetooth#bluetooth","1491":"/features/bluetooth#bluetooth-known-supported-hardware","1492":"/features/bluetooth#adafruit-ble-spi-friend","1493":"/features/bluetooth#bluetooth-rules-mk-options","1494":"/features/bluetooth#bluetooth-keycodes","1495":"/features/bootmagic#bootmagic","1496":"/features/bootmagic#split-keyboards","1497":"/features/bootmagic#advanced-bootmagic","1498":"/features/bootmagic#addenda","1499":"/features/caps_word#caps-word","1500":"/features/caps_word#how-do-i-enable-caps-word","1501":"/features/caps_word#troubleshooting-command","1502":"/features/caps_word#customizing-caps-word","1503":"/features/caps_word#invert-on-shift","1504":"/features/caps_word#idle-timeout","1505":"/features/caps_word#functions","1506":"/features/caps_word#configure-which-keys-are-word-breaking","1507":"/features/caps_word#representing-caps-word-state","1508":"/features/combo#combos","1509":"/features/combo#advanced-keycodes-support","1510":"/features/combo#overlapping-combos","1511":"/features/combo#examples","1512":"/features/combo#keycodes","1513":"/features/combo#advanced-configuration","1514":"/features/combo#combo-term","1515":"/features/combo#buffer-and-state-sizes","1516":"/features/combo#modifier-combos","1517":"/features/combo#strict-key-press-order","1518":"/features/combo#per-combo-timing-holding-tapping-and-key-press-order","1519":"/features/combo#generic-hook-to-dis-allow-a-combo-activation","1520":"/features/combo#combo-timer","1521":"/features/combo#define-combo-strict-timer","1522":"/features/combo#define-combo-no-timer","1523":"/features/combo#customizable-key-releases","1524":"/features/combo#layer-independent-combos","1525":"/features/combo#combo-reference-layers-by-layer","1526":"/features/combo#user-callbacks","1527":"/features/combo#dictionary-management","1528":"/features/command#command","1529":"/features/command#usage","1530":"/features/command#configuration","1531":"/features/digitizer#digitizer","1532":"/features/digitizer#usage","1533":"/features/digitizer#positioning","1534":"/features/digitizer#examples","1535":"/features/digitizer#api","1536":"/features/digitizer#api-digitizer-t","1537":"/features/digitizer#api-digitizer-t-members","1538":"/features/digitizer#api-digitizer-flush","1539":"/features/digitizer#api-digitizer-in-range-on","1540":"/features/digitizer#api-digitizer-in-range-off","1541":"/features/digitizer#api-digitizer-tip-switch-on","1542":"/features/digitizer#api-digitizer-tip-switch-off","1543":"/features/digitizer#api-digitizer-barrel-switch-on","1544":"/features/digitizer#api-digitizer-barrel-switch-off","1545":"/features/digitizer#api-digitizer-set-position","1546":"/features/digitizer#api-digitizer-set-position-arguments","1547":"/features/dip_switch#dip-switches","1548":"/features/dip_switch#dip-switch-map","1549":"/features/dip_switch#callbacks","1550":"/features/dip_switch#hardware","1551":"/features/dip_switch#connects-each-switch-in-the-dip-switch-to-the-gpio-pin-of-the-mcu","1552":"/features/dip_switch#connect-each-switch-in-the-dip-switch-to-an-unused-intersections-in-the-key-matrix","1553":"/features/dynamic_macros#dynamic-macros-record-and-replay-macros-in-runtime","1554":"/features/dynamic_macros#customization","1555":"/features/dynamic_macros#dynamic-macro-user-call","1556":"/features/dynamic_macros#user-hooks","1557":"/features/encoders#encoders","1558":"/features/encoders#split-keyboards","1559":"/features/encoders#encoder-map","1560":"/features/encoders#callbacks","1561":"/features/encoders#hardware","1562":"/features/encoders#multiple-encoders","1563":"/features/grave_esc#grave-escape","1564":"/features/grave_esc#usage","1565":"/features/grave_esc#what-your-os-sees","1566":"/features/grave_esc#keycodes","1567":"/features/grave_esc#caveats","1568":"/features/grave_esc#configuration","1569":"/features/haptic_feedback#haptic-feedback","1570":"/features/haptic_feedback#haptic-feedback-rules-mk-options","1571":"/features/haptic_feedback#known-supported-hardware","1572":"/features/haptic_feedback#haptic-keycodes","1573":"/features/haptic_feedback#solenoids","1574":"/features/haptic_feedback#drv2605l","1575":"/features/haptic_feedback#feedback-motor-setup","1576":"/features/haptic_feedback#erm","1577":"/features/haptic_feedback#lra","1578":"/features/haptic_feedback#drv2605l-waveform-library","1579":"/features/haptic_feedback#optional-drv2605l-defines","1580":"/features/haptic_feedback#drv2605l-continuous-haptic-mode","1581":"/features/haptic_feedback#haptic-key-exclusion","1582":"/features/haptic_feedback#no-haptic-mod","1583":"/features/haptic_feedback#no-haptic-alpha","1584":"/features/haptic_feedback#no-haptic-punctuation","1585":"/features/haptic_feedback#no-haptic-lockkeys","1586":"/features/haptic_feedback#no-haptic-nav","1587":"/features/haptic_feedback#no-haptic-numeric","1588":"/features/hd44780#hd44780-lcd-driver","1589":"/features/hd44780#supported-hardware","1590":"/features/hd44780#usage","1591":"/features/hd44780#basic-configuration","1592":"/features/hd44780#examples","1593":"/features/hd44780#example-hello-world","1594":"/features/hd44780#example-custom-character","1595":"/features/hd44780#api","1596":"/features/hd44780#api-hd44780-init","1597":"/features/hd44780#api-hd44780-init-arguments","1598":"/features/hd44780#api-hd44780-clear","1599":"/features/hd44780#api-hd44780-home","1600":"/features/hd44780#api-hd44780-on","1601":"/features/hd44780#api-hd44780-on-arguments","1602":"/features/hd44780#api-hd44780-off","1603":"/features/hd44780#api-hd44780-set-cursor","1604":"/features/hd44780#api-hd44780-set-cursor-arguments","1605":"/features/hd44780#api-hd44780-putc","1606":"/features/hd44780#api-hd44780-putc-arguments","1607":"/features/hd44780#api-hd44780-puts","1608":"/features/hd44780#api-hd44780-puts-arguments","1609":"/features/hd44780#api-hd44780-puts-p","1610":"/features/hd44780#api-hd44780-puts-p-arguments","1611":"/features/hd44780#api-hd44780-define-char","1612":"/features/hd44780#api-hd44780-define-char-arguments","1613":"/features/hd44780#api-hd44780-define-char-p","1614":"/features/hd44780#api-hd44780-define-char-p-arguments","1615":"/features/hd44780#api-hd44780-busy","1616":"/features/hd44780#api-hd44780-busy-arguments","1617":"/features/hd44780#api-hd44780-write","1618":"/features/hd44780#api-hd44780-write-arguments","1619":"/features/hd44780#api-hd44780-read","1620":"/features/hd44780#api-hd44780-read-arguments","1621":"/features/hd44780#api-hd44780-read-return","1622":"/features/hd44780#api-hd44780-command","1623":"/features/hd44780#api-hd44780-command-arguments","1624":"/features/hd44780#api-hd44780-data","1625":"/features/hd44780#api-hd44780-data-arguments","1626":"/features/hd44780#api-hd44780-set-cgram-address","1627":"/features/hd44780#api-hd44780-set-cgram-address-arguments","1628":"/features/hd44780#api-hd44780-set-ddram-address","1629":"/features/hd44780#api-hd44780-set-ddram-address-arguments","1630":"/features/key_lock#key-lock","1631":"/features/key_lock#usage","1632":"/features/key_lock#keycodes","1633":"/features/key_lock#caveats","1634":"/features/joystick#joystick","1635":"/features/joystick#usage","1636":"/features/joystick#configuration","1637":"/features/joystick#axes","1638":"/features/joystick#virtual-axes","1639":"/features/joystick#keycodes","1640":"/features/joystick#api","1641":"/features/joystick#api-joystick-t","1642":"/features/joystick#api-joystick-t-members","1643":"/features/joystick#api-joystick-config-t","1644":"/features/joystick#api-joystick-config-t-members","1645":"/features/joystick#api-joystick-flush","1646":"/features/joystick#api-register-joystick-button","1647":"/features/joystick#api-register-joystick-button-arguments","1648":"/features/joystick#api-unregister-joystick-button","1649":"/features/joystick#api-unregister-joystick-button-arguments","1650":"/features/joystick#api-joystick-read-axis","1651":"/features/joystick#api-joystick-read-axis-arguments","1652":"/features/joystick#api-joystick-read-axis-return","1653":"/features/joystick#api-joystick-set-axis","1654":"/features/joystick#api-joystick-set-axis-arguments","1655":"/features/key_overrides#key-overrides","1656":"/features/key_overrides#a-few-more-examples-to-get-started-you-could-use-key-overrides-to","1657":"/features/key_overrides#setup","1658":"/features/key_overrides#creating-key-overrides","1659":"/features/key_overrides#ko-make-basic-modifiers-key-replacement","1660":"/features/key_overrides#ko-make-with-layers-modifiers-key-replacement-layers","1661":"/features/key_overrides#ko-make-with-layers-and-negmods-modifiers-key-replacement-layers-negative-mods","1662":"/features/key_overrides#ko-make-with-layers-negmods-and-options-modifiers-key-replacement-layers-negative-mods-options","1663":"/features/key_overrides#simple-example","1664":"/features/key_overrides#intermediate-difficulty-examples","1665":"/features/key_overrides#media-controls-amp-screen-brightness","1666":"/features/key_overrides#flexible-macos-friendly-grave-escape","1667":"/features/key_overrides#advanced-examples","1668":"/features/key_overrides#modifiers-as-layer-keys","1669":"/features/key_overrides#keycodes","1670":"/features/key_overrides#reference-for-key_override_t","1671":"/features/key_overrides#reference-for-ko_option_t","1672":"/features/key_overrides#for-advanced-users-inner-workings","1673":"/features/key_overrides#activation","1674":"/features/key_overrides#deactivation","1675":"/features/key_overrides#key-repeat-delay","1676":"/features/key_overrides#difference-to-combos","1677":"/features/key_overrides#neutralize-flashing-modifiers","1678":"/features/leader_key#the-leader-key","1679":"/features/leader_key#usage","1680":"/features/leader_key#callbacks","1681":"/features/leader_key#basic-configuration","1682":"/features/leader_key#timeout","1683":"/features/leader_key#per-key-timeout","1684":"/features/leader_key#disabling-initial-timeout","1685":"/features/leader_key#strict-key-processing","1686":"/features/leader_key#example","1687":"/features/leader_key#keycodes","1688":"/features/leader_key#api","1689":"/features/leader_key#api-leader-start-user","1690":"/features/leader_key#api-leader-end-user","1691":"/features/leader_key#api-leader-start","1692":"/features/leader_key#api-leader-end","1693":"/features/leader_key#api-leader-sequence-active","1694":"/features/leader_key#api-leader-sequence-add","1695":"/features/leader_key#api-leader-sequence-add-arguments","1696":"/features/leader_key#api-leader-sequence-add-return","1697":"/features/leader_key#api-leader-sequence-timed-out","1698":"/features/leader_key#api-leader-reset-timer","1699":"/features/leader_key#api-leader-sequence-one-key","1700":"/features/leader_key#api-leader-sequence-one-key-arguments","1701":"/features/leader_key#api-leader-sequence-one-key-return","1702":"/features/leader_key#api-leader-sequence-two-keys","1703":"/features/leader_key#api-leader-sequence-two-keys-arguments","1704":"/features/leader_key#api-leader-sequence-two-keys-return","1705":"/features/leader_key#api-leader-sequence-three-keys","1706":"/features/leader_key#api-leader-sequence-three-keys-arguments","1707":"/features/leader_key#api-leader-sequence-three-keys-return","1708":"/features/leader_key#api-leader-sequence-four-keys","1709":"/features/leader_key#api-leader-sequence-four-keys-arguments","1710":"/features/leader_key#api-leader-sequence-four-keys-return","1711":"/features/leader_key#api-leader-sequence-five-keys","1712":"/features/leader_key#api-leader-sequence-five-keys-arguments","1713":"/features/leader_key#api-leader-sequence-five-keys-return","1714":"/features/led_indicators#led-indicators","1715":"/features/led_indicators#configuration-options","1716":"/features/led_indicators#led-update-function","1717":"/features/led_indicators#example-of-keyboard-led-update-implementation","1718":"/features/led_indicators#example-of-user-led-update-implementation","1719":"/features/led_indicators#host-keyboard-led-state","1720":"/features/led_indicators#led-update-ports","1721":"/features/led_indicators#setting-physical-led-state","1722":"/features/led_indicators#ergodox-boards","1723":"/features/led_matrix#led-matrix-lighting","1724":"/features/led_matrix#driver-configuration","1725":"/features/led_matrix#common-configuration","1726":"/features/led_matrix#flags","1727":"/features/led_matrix#keycodes","1728":"/features/led_matrix#led-matrix-effects","1729":"/features/led_matrix#custom-led-matrix-effects","1730":"/features/led_matrix#additional-configh-options","1731":"/features/led_matrix#eeprom-storage","1732":"/features/led_matrix#callbacks","1733":"/features/led_matrix#indicators","1734":"/features/led_matrix#api","1735":"/features/led_matrix#api-led-matrix-toggle","1736":"/features/led_matrix#api-led-matrix-toggle-noeeprom","1737":"/features/led_matrix#api-led-matrix-enable","1738":"/features/led_matrix#api-led-matrix-enable-noeeprom","1739":"/features/led_matrix#api-led-matrix-disable","1740":"/features/led_matrix#api-led-matrix-disable-noeeprom","1741":"/features/led_matrix#api-led-matrix-is-enabled","1742":"/features/led_matrix#api-led-matrix-is-enabled-return","1743":"/features/led_matrix#led-matrix-set-value","1744":"/features/led_matrix#api-led-matrix-set-value-arguments","1745":"/features/led_matrix#api-led-matrix-set-value-all","1746":"/features/led_matrix#api-led-matrix-set-value-all-arguments","1747":"/features/led_matrix#api-led-matrix-mode","1748":"/features/led_matrix#api-led-matrix-mode-arguments","1749":"/features/led_matrix#api-led-matrix-mode-noeeprom","1750":"/features/led_matrix#api-led-matrix-mode-noeeprom-arguments","1751":"/features/led_matrix#api-led-matrix-step","1752":"/features/led_matrix#api-led-matrix-step-noeeprom","1753":"/features/led_matrix#api-led-matrix-step-reverse","1754":"/features/led_matrix#api-led-matrix-step-reverse-noeeprom","1755":"/features/led_matrix#api-led-matrix-get-mode","1756":"/features/led_matrix#api-led-matrix-get-mode-return","1757":"/features/led_matrix#api-led-matrix-increase-val","1758":"/features/led_matrix#api-led-matrix-increase-val-noeeprom","1759":"/features/led_matrix#api-led-matrix-decrease-val","1760":"/features/led_matrix#api-led-matrix-decrease-val-noeeprom","1761":"/features/led_matrix#api-led-matrix-get-val","1762":"/features/led_matrix#api-led-matrix-get-val-return","1763":"/features/led_matrix#api-led-matrix-increase-speed","1764":"/features/led_matrix#api-led-matrix-increase-speed-noeeprom","1765":"/features/led_matrix#api-led-matrix-decrease-speed","1766":"/features/led_matrix#api-led-matrix-decrease-speed-noeeprom","1767":"/features/led_matrix#api-led-matrix-set-speed","1768":"/features/led_matrix#api-led-matrix-set-speed-arguments","1769":"/features/led_matrix#api-led-matrix-set-speed-noeeprom","1770":"/features/led_matrix#api-led-matrix-set-speed-noeeprom-arguments","1771":"/features/led_matrix#api-led-matrix-get-speed","1772":"/features/led_matrix#api-led-matrix-get-speed-return","1773":"/features/led_matrix#api-led-matrix-reload-from-eeprom","1774":"/features/led_matrix#api-led-matrix-get-suspend-state","1775":"/features/led_matrix#api-led-matrix-get-suspend-state-return","1776":"/features/led_matrix#api-led-matrix-indicators-kb","1777":"/features/led_matrix#api-led-matrix-indicators-kb-return","1778":"/features/led_matrix#api-led-matrix-indicators-user","1779":"/features/led_matrix#api-led-matrix-indicators-user-return","1780":"/features/led_matrix#api-led-matrix-indicators-advanced-kb","1781":"/features/led_matrix#api-led-matrix-indicators-advanced-kb-arguments","1782":"/features/led_matrix#api-led-matrix-indicators-advanced-kb-return","1783":"/features/led_matrix#api-led-matrix-indicators-advanced-user","1784":"/features/led_matrix#api-led-matrix-indicators-advanced-user-arguments","1785":"/features/led_matrix#api-led-matrix-indicators-advanced-user-return","1786":"/features/midi#midi","1787":"/features/midi#usage","1788":"/features/midi#caveats","1789":"/features/midi#basic-midi","1790":"/features/midi#advanced-midi","1791":"/features/midi#sending-control-change-cc-messages","1792":"/features/midi#example-code-for-using-generic-on-off-switches-as-per-midi-specification","1793":"/features/midi#keycodes","1794":"/features/midi#configuration","1795":"/features/midi#references","1796":"/features/midi#midi-specification","1797":"/features/midi#qmk-c-files","1798":"/features/mouse_keys#mouse-keys","1799":"/features/mouse_keys#adding-mouse-keys-to-your-keyboard","1800":"/features/mouse_keys#enabling-mouse-keys","1801":"/features/mouse_keys#mapping-mouse-actions","1802":"/features/mouse_keys#configuring-mouse-keys","1803":"/features/mouse_keys#accelerated-mode","1804":"/features/mouse_keys#kinetic-mode","1805":"/features/mouse_keys#constant-mode","1806":"/features/mouse_keys#combined-mode","1807":"/features/mouse_keys#inertia-mode","1808":"/features/mouse_keys#overlapping-mouse-key-control","1809":"/features/mouse_keys#use-with-ps-2-mouse-and-pointing-device","1810":"/features/oled_driver#oled-driver","1811":"/features/oled_driver#supported-hardware","1812":"/features/oled_driver#usage","1813":"/features/oled_driver#oled-type","1814":"/features/oled_driver#logo-example","1815":"/features/oled_driver#buffer-read-example","1816":"/features/oled_driver#other-examples","1817":"/features/oled_driver#basic-configuration","1818":"/features/oled_driver#i2c-configuration","1819":"/features/oled_driver#spi-configuration","1820":"/features/oled_driver#_128x64-custom-sized-oled-displays","1821":"/features/oled_driver#_90-degree-rotation-technical-mumbo-jumbo","1822":"/features/oled_driver#oled-api","1823":"/features/oled_driver#ssd1306-h-driver-conversion-guide","1824":"/features/os_detection#os-detection","1825":"/features/os_detection#usage","1826":"/features/os_detection#callbacks","1827":"/features/os_detection#os-detection-stability","1828":"/features/os_detection#kvm-and-usb-switches","1829":"/features/os_detection#configuration-options","1830":"/features/os_detection#debug","1831":"/features/os_detection#credits","1832":"/features/programmable_button#programmable-button","1833":"/features/programmable_button#usage","1834":"/features/programmable_button#keycodes","1835":"/features/programmable_button#api","1836":"/features/programmable_button#api-programmable-button-clear","1837":"/features/programmable_button#api-programmable-button-add","1838":"/features/programmable_button#api-programmable-button-add-arguments","1839":"/features/programmable_button#api-programmable-button-remove","1840":"/features/programmable_button#api-programmable-button-remove-arguments","1841":"/features/programmable_button#api-programmable-button-register","1842":"/features/programmable_button#api-programmable-button-register-arguments","1843":"/features/programmable_button#api-programmable-button-unregister","1844":"/features/programmable_button#api-programmable-button-unregister-arguments","1845":"/features/programmable_button#api-programmable-button-is-on","1846":"/features/programmable_button#api-programmable-button-is-on-arguments","1847":"/features/programmable_button#api-programmable-button-is-on-return","1848":"/features/programmable_button#api-programmable-button-flush","1849":"/features/programmable_button#api-programmable-button-get-report","1850":"/features/programmable_button#api-programmable-button-get-report-return","1851":"/features/programmable_button#api-programmable-button-set-report","1852":"/features/programmable_button#api-programmable-button-set-report-arguments","1853":"/features/pointing_device#pointing-device","1854":"/features/pointing_device#sensor-drivers","1855":"/features/pointing_device#adns-5050-sensor","1856":"/features/pointing_device#adns-9800-sensor","1857":"/features/pointing_device#analog-joystick","1858":"/features/pointing_device#azoteq-iqs5xx-trackpad","1859":"/features/pointing_device#device-settings","1860":"/features/pointing_device#gesture-settings","1861":"/features/pointing_device#rotation-settings","1862":"/features/pointing_device#cirque-trackpad","1863":"/features/pointing_device#common-settings","1864":"/features/pointing_device#absolute-mode-settings","1865":"/features/pointing_device#absolute-mode-gestures","1866":"/features/pointing_device#relative-mode-gestures","1867":"/features/pointing_device#paw-3204-sensor","1868":"/features/pointing_device#pimoroni-trackball","1869":"/features/pointing_device#pmw3320-sensor","1870":"/features/pointing_device#pmw-3360-and-pmw-3389-sensor","1871":"/features/pointing_device#custom-driver","1872":"/features/pointing_device#common-configuration","1873":"/features/pointing_device#split-keyboard-configuration","1874":"/features/pointing_device#callbacks-and-functions","1875":"/features/pointing_device#split-keyboard-callbacks-and-functions","1876":"/features/pointing_device#manipulating-mouse-reports","1877":"/features/pointing_device#examples","1878":"/features/pointing_device#custom-mouse-keycode","1879":"/features/pointing_device#drag-scroll-or-mouse-scroll","1880":"/features/pointing_device#advanced-drag-scroll","1881":"/features/pointing_device#split-examples","1882":"/features/pointing_device#single-pointing-device","1883":"/features/pointing_device#combined-pointing-devices","1884":"/features/pointing_device#troubleshooting","1885":"/features/pointing_device#pointing-device-auto-mouse","1886":"/features/pointing_device#behaviour-of-layer-keys-that-activate-the-target-layer","1887":"/features/pointing_device#how-to-enable","1888":"/features/pointing_device#how-to-customize","1889":"/features/pointing_device#config-h-options","1890":"/features/pointing_device#adding-mouse-keys","1891":"/features/pointing_device#callbacks-for-setting-up-additional-key-codes-as-mouse-keys","1892":"/features/pointing_device#to-use-the-callback-function-to-add-mouse-keys","1893":"/features/pointing_device#advanced-control","1894":"/features/pointing_device#functions-to-control-auto-mouse-enable-and-target-layer","1895":"/features/pointing_device#functions-for-handling-custom-key-events","1896":"/features/pointing_device#advanced-control-examples","1897":"/features/pointing_device#disable-auto-mouse-on-certain-layers","1898":"/features/pointing_device#set-different-target-layer-when-a-particular-layer-is-active","1899":"/features/pointing_device#use-custom-keys-to-control-auto-mouse","1900":"/features/pointing_device#customize-target-layer-activation","1901":"/features/pointing_device#auto-mouse-for-custom-pointing-device-task","1902":"/features/ps2_mouse#ps2-mouse-support","1903":"/features/ps2_mouse#the-circuitry-between-trackpoint-and-controller","1904":"/features/ps2_mouse#busywait-version","1905":"/features/ps2_mouse#interrupt-version-avr","1906":"/features/ps2_mouse#interrupt-version-chibios","1907":"/features/ps2_mouse#usart-version","1908":"/features/ps2_mouse#rp2040-pio-version","1909":"/features/ps2_mouse#additional-settings","1910":"/features/ps2_mouse#ps2-mouse-features","1911":"/features/ps2_mouse#fine-control","1912":"/features/ps2_mouse#scroll-button","1913":"/features/ps2_mouse#invert-buttons","1914":"/features/ps2_mouse#invert-mouse-and-scroll-axes","1915":"/features/ps2_mouse#rotate-mouse-axes","1916":"/features/ps2_mouse#debug-settings","1917":"/features/ps2_mouse#movement-hook","1918":"/features/rawhid#raw-hid","1919":"/features/rawhid#usage","1920":"/features/rawhid#basic-configuration","1921":"/features/rawhid#sending-data-to-the-keyboard","1922":"/features/rawhid#receiving-data-from-the-keyboard","1923":"/features/rawhid#simple-example","1924":"/features/rawhid#api","1925":"/features/rawhid#api-raw-hid-receive","1926":"/features/rawhid#api-raw-hid-receive-arguments","1927":"/features/rawhid#api-raw-hid-send","1928":"/features/rawhid#api-raw-hid-send-arguments","1929":"/features/repeat_key#repeat-key","1930":"/features/repeat_key#how-do-i-enable-repeat-key","1931":"/features/repeat_key#keycodes","1932":"/features/repeat_key#alternate-repeating","1933":"/features/repeat_key#defining-alternate-keys","1934":"/features/repeat_key#eliminating-sfbs","1935":"/features/repeat_key#typing-shortcuts","1936":"/features/repeat_key#ignoring-certain-keys-and-mods","1937":"/features/repeat_key#ignoring-a-key","1938":"/features/repeat_key#filtering-remembered-mods","1939":"/features/repeat_key#further-conditions","1940":"/features/repeat_key#handle-how-a-key-is-repeated","1941":"/features/repeat_key#handle-how-a-key-is-alternate-repeated","1942":"/features/repeat_key#functions","1943":"/features/repeat_key#additional-alternate-keys","1944":"/features/rgb_matrix#rgb-matrix-lighting","1945":"/features/rgb_matrix#driver-configuration","1946":"/features/rgb_matrix#common-configuration","1947":"/features/rgb_matrix#flags","1948":"/features/rgb_matrix#keycodes","1949":"/features/rgb_matrix#rgb-matrix-effects","1950":"/features/rgb_matrix#rgb-matrix-effect-typing-heatmap","1951":"/features/rgb_matrix#rgb-matrix-effect-solid-reactive","1952":"/features/rgb_matrix#custom-rgb-matrix-effects","1953":"/features/rgb_matrix#colors","1954":"/features/rgb_matrix#additional-configh-options","1955":"/features/rgb_matrix#eeprom-storage","1956":"/features/rgb_matrix#callbacks","1957":"/features/rgb_matrix#indicators","1958":"/features/rgb_matrix#indicator-examples","1959":"/features/rgb_matrix#indicator-examples-2","1960":"/features/rgb_matrix#indicators-without-rgb-matrix-effect","1961":"/features/rgb_matrix#api","1962":"/features/rgb_matrix#api-rgb-matrix-toggle","1963":"/features/rgb_matrix#api-rgb-matrix-toggle-noeeprom","1964":"/features/rgb_matrix#api-rgb-matrix-enable","1965":"/features/rgb_matrix#api-rgb-matrix-enable-noeeprom","1966":"/features/rgb_matrix#api-rgb-matrix-disable","1967":"/features/rgb_matrix#api-rgb-matrix-disable-noeeprom","1968":"/features/rgb_matrix#api-rgb-matrix-is-enabled","1969":"/features/rgb_matrix#api-rgb-matrix-is-enabled-return","1970":"/features/rgb_matrix#api-rgb-matrix-set-color","1971":"/features/rgb_matrix#api-rgb-matrix-set-color-arguments","1972":"/features/rgb_matrix#api-rgb-matrix-set-color-all","1973":"/features/rgb_matrix#api-rgb-matrix-set-color-all-arguments","1974":"/features/rgb_matrix#api-rgb-matrix-mode","1975":"/features/rgb_matrix#api-rgb-matrix-mode-arguments","1976":"/features/rgb_matrix#api-rgb-matrix-mode-noeeprom","1977":"/features/rgb_matrix#api-rgb-matrix-mode-noeeprom-arguments","1978":"/features/rgb_matrix#api-rgb-matrix-step","1979":"/features/rgb_matrix#api-rgb-matrix-step-noeeprom","1980":"/features/rgb_matrix#api-rgb-matrix-step-reverse","1981":"/features/rgb_matrix#api-rgb-matrix-step-reverse-noeeprom","1982":"/features/rgb_matrix#api-rgb-matrix-get-mode","1983":"/features/rgb_matrix#api-rgb-matrix-get-mode-return","1984":"/features/rgb_matrix#api-rgb-matrix-increase-hue","1985":"/features/rgb_matrix#api-rgb-matrix-increase-hue-noeeprom","1986":"/features/rgb_matrix#api-rgb-matrix-decrease-hue","1987":"/features/rgb_matrix#api-rgb-matrix-decrease-hue-noeeprom","1988":"/features/rgb_matrix#api-rgb-matrix-get-hue","1989":"/features/rgb_matrix#api-rgb-matrix-get-hue-return","1990":"/features/rgb_matrix#api-rgb-matrix-increase-sat","1991":"/features/rgb_matrix#api-rgb-matrix-increase-sat-noeeprom","1992":"/features/rgb_matrix#api-rgb-matrix-decrease-sat","1993":"/features/rgb_matrix#api-rgb-matrix-decrease-sat-noeeprom","1994":"/features/rgb_matrix#api-rgb-matrix-get-sat","1995":"/features/rgb_matrix#api-rgb-matrix-get-sat-return","1996":"/features/rgb_matrix#api-rgb-matrix-increase-val","1997":"/features/rgb_matrix#api-rgb-matrix-increase-val-noeeprom","1998":"/features/rgb_matrix#api-rgb-matrix-decrease-val","1999":"/features/rgb_matrix#api-rgb-matrix-decrease-val-noeeprom","2000":"/features/rgb_matrix#api-rgb-matrix-get-val","2001":"/features/rgb_matrix#api-rgb-matrix-get-val-return","2002":"/features/rgb_matrix#api-rgb-matrix-increase-speed","2003":"/features/rgb_matrix#api-rgb-matrix-increase-speed-noeeprom","2004":"/features/rgb_matrix#api-rgb-matrix-decrease-speed","2005":"/features/rgb_matrix#api-rgb-matrix-decrease-speed-noeeprom","2006":"/features/rgb_matrix#api-rgb-matrix-set-speed","2007":"/features/rgb_matrix#api-rgb-matrix-set-speed-arguments","2008":"/features/rgb_matrix#api-rgb-matrix-set-speed-noeeprom","2009":"/features/rgb_matrix#api-rgb-matrix-set-speed-noeeprom-arguments","2010":"/features/rgb_matrix#api-rgb-matrix-get-speed","2011":"/features/rgb_matrix#api-rgb-matrix-get-speed-return","2012":"/features/rgb_matrix#api-rgb-matrix-sethsv","2013":"/features/rgb_matrix#api-rgb-matrix-sethsv-arguments","2014":"/features/rgb_matrix#api-rgb-matrix-sethsv-noeeprom","2015":"/features/rgb_matrix#api-rgb-matrix-sethsv-noeeprom-arguments","2016":"/features/rgb_matrix#api-rgb-matrix-get-hsv","2017":"/features/rgb_matrix#api-rgb-matrix-get-hsv-return","2018":"/features/rgb_matrix#api-rgb-matrix-reload-from-eeprom","2019":"/features/rgb_matrix#api-rgb-matrix-get-suspend-state","2020":"/features/rgb_matrix#api-rgb-matrix-get-suspend-state-return","2021":"/features/rgb_matrix#api-rgb-matrix-indicators-kb","2022":"/features/rgb_matrix#api-rgb-matrix-indicators-kb-return","2023":"/features/rgb_matrix#api-rgb-matrix-indicators-user","2024":"/features/rgb_matrix#api-rgb-matrix-indicators-user-return","2025":"/features/rgb_matrix#api-rgb-matrix-indicators-advanced-kb","2026":"/features/rgb_matrix#api-rgb-matrix-indicators-advanced-kb-arguments","2027":"/features/rgb_matrix#api-rgb-matrix-indicators-advanced-kb-return","2028":"/features/rgb_matrix#api-rgb-matrix-indicators-advanced-user","2029":"/features/rgb_matrix#api-rgb-matrix-indicators-advanced-user-arguments","2030":"/features/rgb_matrix#api-rgb-matrix-indicators-advanced-user-return","2031":"/features/rgblight#rgb-lighting","2032":"/features/rgblight#usage","2033":"/features/rgblight#color-selection","2034":"/features/rgblight#keycodes","2035":"/features/rgblight#configuration","2036":"/features/rgblight#effects-and-animations","2037":"/features/rgblight#effect-and-animation-toggles","2038":"/features/rgblight#effect-and-animation-settings","2039":"/features/rgblight#example-usage-to-reduce-memory-footprint","2040":"/features/rgblight#animation-speed","2041":"/features/rgblight#lighting-layers","2042":"/features/rgblight#defining-lighting-layers","2043":"/features/rgblight#enabling-lighting-layers","2044":"/features/rgblight#lighting-layer-blink","2045":"/features/rgblight#overriding-rgb-lighting-on-off-status","2046":"/features/rgblight#retain-brightness","2047":"/features/rgblight#functions","2048":"/features/rgblight#low-level-functions","2049":"/features/rgblight#effects-and-animations-functions","2050":"/features/rgblight#effect-range-setting","2051":"/features/rgblight#direct-operation","2052":"/features/rgblight#effect-mode-change","2053":"/features/rgblight#effects-mode-disable-enable","2054":"/features/rgblight#hue-sat-val-change","2055":"/features/rgblight#speed-functions","2056":"/features/rgblight#layer-functions","2057":"/features/rgblight#query","2058":"/features/rgblight#colors","2059":"/features/rgblight#changing-the-order-of-the-leds","2060":"/features/rgblight#clipping-range","2061":"/features/rgblight#hardware-modification","2062":"/features/rgblight#velocikey","2063":"/features/rgblight#usage-1","2064":"/features/rgblight#configuration-1","2065":"/features/secure#secure","2066":"/features/secure#unlock-sequence","2067":"/features/secure#automatic-locking","2068":"/features/secure#usage","2069":"/features/secure#keycodes","2070":"/features/secure#configuration","2071":"/features/secure#functions","2072":"/features/send_string#send-string","2073":"/features/send_string#usage","2074":"/features/send_string#basic-configuration","2075":"/features/send_string#keycodes","2076":"/features/send_string#language-support","2077":"/features/send_string#examples","2078":"/features/send_string#example-hello-world","2079":"/features/send_string#example-keycode-injection","2080":"/features/send_string#api","2081":"/features/send_string#api-send-string","2082":"/features/send_string#api-send-string-arguments","2083":"/features/send_string#api-send-string-with-delay","2084":"/features/send_string#api-send-string-with-delay-arguments","2085":"/features/send_string#api-send-string-p","2086":"/features/send_string#api-send-string-p-arguments","2087":"/features/send_string#api-send-string-with-delay-p","2088":"/features/send_string#api-send-string-with-delay-p-arguments","2089":"/features/send_string#api-send-char","2090":"/features/send_string#api-send-char-arguments","2091":"/features/send_string#api-send-dword","2092":"/features/send_string#api-send-dword-arguments","2093":"/features/send_string#api-send-word","2094":"/features/send_string#api-send-word-arguments","2095":"/features/send_string#api-send-bytes","2096":"/features/send_string#api-send-byte-arguments","2097":"/features/send_string#api-send-nibble","2098":"/features/send_string#api-send-nibble-arguments","2099":"/features/send_string#api-tap-random-base64","2100":"/features/send_string#api-send-string-macro","2101":"/features/send_string#api-send-string-delay-macro","2102":"/features/space_cadet#space-cadet-the-future-built-in","2103":"/features/space_cadet#usage","2104":"/features/space_cadet#keycodes","2105":"/features/space_cadet#caveats","2106":"/features/space_cadet#configuration","2107":"/features/space_cadet#obsolete-configuration","2108":"/features/sequencer#sequencer","2109":"/features/sequencer#enable-the-step-sequencer","2110":"/features/sequencer#tracks","2111":"/features/sequencer#resolutions","2112":"/features/sequencer#keycodes","2113":"/features/sequencer#functions","2114":"/features/split_keyboard#split-keyboard","2115":"/features/split_keyboard#compatibility-overview","2116":"/features/split_keyboard#hardware-configuration","2117":"/features/split_keyboard#required-hardware","2118":"/features/split_keyboard#considerations","2119":"/features/split_keyboard#serial-wiring","2120":"/features/split_keyboard#i2c-wiring","2121":"/features/split_keyboard#firmware-configuration","2122":"/features/split_keyboard#layout-macro","2123":"/features/split_keyboard#setting-handedness","2124":"/features/split_keyboard#handedness-by-pin","2125":"/features/split_keyboard#handedness-by-matrix-pin","2126":"/features/split_keyboard#handedness-by-eeprom","2127":"/features/split_keyboard#handedness-by-define","2128":"/features/split_keyboard#communication-options","2129":"/features/split_keyboard#data-sync-options","2130":"/features/split_keyboard#custom-data-sync","2131":"/features/split_keyboard#hardware-configuration-options","2132":"/features/split_keyboard#hardware-considerations-and-mods","2133":"/features/split_keyboard#teensy-boards","2134":"/features/split_keyboard#additional-resources","2135":"/features/st7565#st7565-lcd-driver","2136":"/features/st7565#supported-hardware","2137":"/features/st7565#usage","2138":"/features/st7565#logo-example","2139":"/features/st7565#buffer-read-example","2140":"/features/st7565#other-examples","2141":"/features/st7565#basic-configuration","2142":"/features/st7565#custom-sized-displays","2143":"/features/st7565#api","2144":"/features/stenography#stenography-in-qmk","2145":"/features/stenography#plover-with-qwerty-keyboard","2146":"/features/stenography#plover-with-steno-protocol","2147":"/features/stenography#tx-bolt","2148":"/features/stenography#geminipr","2149":"/features/stenography#switching-protocols-on-the-fly","2150":"/features/stenography#configuring-qmk-for-steno","2151":"/features/stenography#learning-stenography","2152":"/features/stenography#interfacing-with-the-code","2153":"/features/stenography#keycode-reference","2154":"/features/swap_hands#swap-hands-action","2155":"/features/swap_hands#configuration","2156":"/features/swap_hands#swap-keycodes","2157":"/features/swap_hands#encoder-mapping","2158":"/features/swap_hands#functions","2159":"/features/tap_dance#tap-dance-a-single-key-can-do-3-5-or-100-different-things","2160":"/features/tap_dance#introduction","2161":"/features/tap_dance#how-to-use","2162":"/features/tap_dance#implementation","2163":"/features/tap_dance#examples","2164":"/features/tap_dance#simple-example","2165":"/features/tap_dance#complex-examples","2166":"/features/tap_dance#example-1","2167":"/features/tap_dance#example-2","2168":"/features/tap_dance#example-3","2169":"/features/tap_dance#example-4","2170":"/features/tap_dance#example-5","2171":"/features/tap_dance#example-6","2172":"/features/tri_layer#tri-layers","2173":"/features/tri_layer#keycodes","2174":"/features/tri_layer#configuration","2175":"/features/tri_layer#functions","2176":"/features/unicode#unicode","2177":"/features/unicode#caveats","2178":"/features/unicode#usage","2179":"/features/unicode#basic-configuration","2180":"/features/unicode#audio-feedback","2181":"/features/unicode#input-subsystems","2182":"/features/unicode#unicodemap-pairs","2183":"/features/unicode#input-modes","2184":"/features/unicode#keycodes","2185":"/features/unicode#api","2186":"/features/unicode#api-get-unicode-input-mode","2187":"/features/unicode#api-get-unicode-input-mode-return-value","2188":"/features/unicode#api-set-unicode-input-mode","2189":"/features/unicode#api-set-unicode-input-mode-arguments","2190":"/features/unicode#api-unicode-input-mode-step","2191":"/features/unicode#api-unicode-input-mode-step-reverse","2192":"/features/unicode#api-unicode-input-mode-set-user","2193":"/features/unicode#api-unicode-input-mode-set-user-arguments","2194":"/features/unicode#api-unicode-input-mode-set-kb","2195":"/features/unicode#api-unicode-input-mode-set-kb-arguments","2196":"/features/unicode#api-unicode-input-start","2197":"/features/unicode#api-unicode-input-finish","2198":"/features/unicode#api-unicode-input-cancel","2199":"/features/unicode#api-register-unicode","2200":"/features/unicode#api-register-unicode-arguments","2201":"/features/unicode#api-send-unicode-string","2202":"/features/unicode#api-send-unicode-string-arguments","2203":"/features/unicode#api-unicodemap-index","2204":"/features/unicode#api-unicodemap-index-arguments","2205":"/features/unicode#api-unicodemap-index-return-value","2206":"/features/unicode#api-unicodemap-get-code-point","2207":"/features/unicode#unicodemap-get-code-point-arguments","2208":"/features/unicode#unicodemap-get-code-point-return-value","2209":"/features/unicode#api-register-unicodemap","2210":"/features/unicode#api-register-unicodemap-arguments","2211":"/features/unicode#api-ucis-start","2212":"/features/unicode#api-ucis-active","2213":"/features/unicode#api-ucis-active-return-value","2214":"/features/unicode#api-ucis-count","2215":"/features/unicode#api-ucis-count-return-value","2216":"/features/unicode#api-ucis-add","2217":"/features/unicode#api-ucis-add-arguments","2218":"/features/unicode#api-ucis-add-return-value","2219":"/features/unicode#api-ucis-remove-last","2220":"/features/unicode#api-ucis-remove-last-return-value","2221":"/features/unicode#api-ucis-finish","2222":"/features/unicode#api-ucis-cancel","2223":"/features/unicode#api-register-ucis","2224":"/features/unicode#api-register-ucis-arguments","2225":"/features/wpm#word-per-minute-wpm-calculation","2226":"/features/wpm#configuration","2227":"/features/wpm#public-functions","2228":"/features/wpm#callbacks","2229":"/flashing#flashing-instructions-and-bootloader-information","2230":"/flashing#atmel-dfu","2231":"/flashing#qmk-dfu","2232":"/flashing#make-targets","2233":"/flashing#caterina","2234":"/flashing#make-targets-1","2235":"/flashing#halfkay","2236":"/flashing#usbasploader","2237":"/flashing#bootloadhid","2238":"/flashing#qmk-hid","2239":"/flashing#make-targets-2","2240":"/flashing#stm32-apm32-dfu","2241":"/flashing#make-targets-3","2242":"/flashing#stm32duino","2243":"/flashing#kiibohd-dfu","2244":"/flashing#wb32-dfu","2245":"/flashing#tinyuf2","2246":"/flashing#make-targets-4","2247":"/flashing#uf2boot","2248":"/flashing#make-targets-5","2249":"/flashing#raspberry-pi-rp2040-uf2","2250":"/getting_started_docker#docker-quick-start","2251":"/getting_started_docker#requirements","2252":"/getting_started_docker#usage","2253":"/getting_started_docker#faq","2254":"/getting_started_docker#why-can-t-i-flash-on-windows-macos","2255":"/getting_started_github#how-to-use-github-with-qmk","2256":"/getting_started_introduction#introduction","2257":"/getting_started_introduction#basic-qmk-structure","2258":"/getting_started_introduction#userspace-structure","2259":"/getting_started_introduction#keyboard-project-structure","2260":"/getting_started_introduction#keymap-structure","2261":"/getting_started_introduction#the-config-h-file","2262":"/getting_started_make_guide#more-detailed-make-instructions","2263":"/getting_started_make_guide#rules-mk-options","2264":"/getting_started_make_guide#customizing-makefile-options-on-a-per-keymap-basis","2265":"/hand_wire#hand-wiring-guide","2266":"/hand_wire#parts-list","2267":"/hand_wire#starting-the-build","2268":"/hand_wire#planning-the-matrix","2269":"/hand_wire#common-microcontroller-boards","2270":"/hand_wire#wiring-the-matrix","2271":"/hand_wire#a-note-on-split-keyboards","2272":"/hand_wire#soldering","2273":"/hand_wire#soldering-the-diodes","2274":"/hand_wire#soldering-the-columns","2275":"/hand_wire#wiring-up-the-controller","2276":"/hand_wire#specific-instructions-for-the-teensy-2-0","2277":"/hand_wire#getting-some-basic-firmware-set-up","2278":"/hand_wire#flashing-the-firmware","2279":"/hand_wire#testing-your-firmware","2280":"/hand_wire#finishing-up","2281":"/hand_wire#links-to-other-guides","2282":"/hand_wire#legacy-content","2283":"/hand_wire#preamble-how-a-keyboard-matrix-works-and-why-we-need-diodes","2284":"/hardware_drivers#qmk-hardware-drivers","2285":"/hardware_drivers#available-drivers","2286":"/hardware_drivers#promicro-avr-only","2287":"/hardware_drivers#ssd1306-oled-driver","2288":"/hardware_drivers#ws2812","2289":"/hardware_drivers#is31fl3731","2290":"/hardware_drivers#is31fl3733","2291":"/hardware_drivers#_24xx-series-external-i2c-eeprom","2292":"/hardware_keyboard_guidelines#qmk-keyboard-guidelines","2293":"/hardware_keyboard_guidelines#use-qmk-lint","2294":"/hardware_keyboard_guidelines#naming-your-keyboard-project","2295":"/hardware_keyboard_guidelines#sub-folders","2296":"/hardware_keyboard_guidelines#keyboard-folder-structure","2297":"/hardware_keyboard_guidelines#readme-md","2298":"/hardware_keyboard_guidelines#info-json","2299":"/hardware_keyboard_guidelines#config-h","2300":"/hardware_keyboard_guidelines#rules-mk","2301":"/hardware_keyboard_guidelines#keyboard-name-c","2302":"/hardware_keyboard_guidelines#keyboard-name-h","2303":"/hardware_keyboard_guidelines#image-hardware-files","2304":"/hardware_keyboard_guidelines#keyboard-defaults","2305":"/hardware_keyboard_guidelines#magic-keycodes-and-command","2306":"/hardware_keyboard_guidelines#custom-keyboard-programming","2307":"/hardware_keyboard_guidelines#non-production-handwired-projects","2308":"/hardware_keyboard_guidelines#warnings-as-errors","2309":"/hardware_keyboard_guidelines#copyright-blurb","2310":"/hardware_keyboard_guidelines#license","2311":"/how_a_matrix_works#how-a-keyboard-matrix-works","2312":"/how_keyboards_work#how-keys-are-registered-and-interpreted-by-computers","2313":"/how_keyboards_work#schematic-view","2314":"/how_keyboards_work#_1-you-press-a-key","2315":"/how_keyboards_work#_2-what-the-firmware-sends","2316":"/how_keyboards_work#_3-what-the-event-input-kernel-does","2317":"/how_keyboards_work#_4-what-the-operating-system-does","2318":"/how_keyboards_work#back-to-the-firmware","2319":"/how_keyboards_work#list-of-characters-you-can-send","2320":"/how_keyboards_work#how-to-maybe-enter-unicode-characters","2321":"/#quantum-mechanical-keyboard-firmware","2322":"/#what-is-qmk-firmware","2323":"/#get-started","2324":"/#make-it-yours","2325":"/#need-help","2326":"/#give-back","2327":"/isp_flashing_guide#isp-flashing-guide","2328":"/isp_flashing_guide#hardware","2329":"/isp_flashing_guide#pro-micro-as-isp","2330":"/isp_flashing_guide#wiring","2331":"/isp_flashing_guide#arduino-uno-micro-as-isp","2332":"/isp_flashing_guide#wiring-1","2333":"/isp_flashing_guide#teensy-2-0-as-isp","2334":"/isp_flashing_guide#wiring-2","2335":"/isp_flashing_guide#sparkfun-pocketavr-usbtinyisp","2336":"/isp_flashing_guide#wiring-3","2337":"/isp_flashing_guide#usbasp","2338":"/isp_flashing_guide#wiring-4","2339":"/isp_flashing_guide#bus-pirate","2340":"/isp_flashing_guide#wiring-5","2341":"/isp_flashing_guide#software","2342":"/isp_flashing_guide#bootloader-firmware","2343":"/isp_flashing_guide#atmel-dfu","2344":"/isp_flashing_guide#caterina","2345":"/isp_flashing_guide#bootloadhid-ps2avrgb","2346":"/isp_flashing_guide#usbasploader","2347":"/isp_flashing_guide#flashing-the-bootloader","2348":"/isp_flashing_guide#setting-the-fuses","2349":"/isp_flashing_guide#creating-a-production-firmware","2350":"/isp_flashing_guide#flashing-stm32duino-bootloader","2351":"/isp_flashing_guide#software-1","2352":"/isp_flashing_guide#wiring-6","2353":"/isp_flashing_guide#flashing","2354":"/keycodes#keycodes-overview","2355":"/keycodes#basic-keycodes","2356":"/keycodes#quantum-keycodes","2357":"/keycodes#audio-keys","2358":"/keycodes#auto-shift","2359":"/keycodes#autocorrect","2360":"/keycodes#backlighting","2361":"/keycodes#bluetooth","2362":"/keycodes#caps-word","2363":"/keycodes#dynamic-macros","2364":"/keycodes#grave-escape","2365":"/keycodes#joystick","2366":"/keycodes#key-lock","2367":"/keycodes#layer-switching","2368":"/keycodes#leader-key","2369":"/keycodes#led-matrix","2370":"/keycodes#magic-keycodes","2371":"/keycodes#midi","2372":"/keycodes#mouse-keys","2373":"/keycodes#modifiers","2374":"/keycodes#mod-tap-keys","2375":"/keycodes#tapping-term-keys","2376":"/keycodes#rgb-lighting","2377":"/keycodes#rgb-matrix-lighting","2378":"/keycodes#us-ansi-shifted-symbols","2379":"/keycodes#one-shot-keys","2380":"/keycodes#programmable-button","2381":"/keycodes#repeat-key","2382":"/keycodes#space-cadet","2383":"/keycodes#swap-hands","2384":"/keycodes#unicode-support","2385":"/keycodes_basic#basic-keycodes","2386":"/keycodes_basic#letters-and-numbers","2387":"/keycodes_basic#f-keys","2388":"/keycodes_basic#punctuation","2389":"/keycodes_basic#lock-keys","2390":"/keycodes_basic#modifiers","2391":"/keycodes_basic#international","2392":"/keycodes_basic#commands","2393":"/keycodes_basic#media-keys","2394":"/keycodes_basic#number-pad","2395":"/keycodes_basic#special-keys","2396":"/keycodes_magic#magic-keycodes","2397":"/keycodes_us_ansi_shifted#us-ansi-shifted-symbols","2398":"/keycodes_us_ansi_shifted#caveats","2399":"/keycodes_us_ansi_shifted#keycodes","2400":"/keymap#keymap-overview","2401":"/keymap#keymap-and-layers","2402":"/keymap#keymap-layer-status","2403":"/keymap#layer-precedence-and-transparency","2404":"/keymap#anatomy-of-a-keymap-c","2405":"/keymap#definitions","2406":"/keymap#layers-and-keymaps","2407":"/keymap#base-layer","2408":"/keymap#function-overlay-layer","2409":"/keymap#nitty-gritty-details","2410":"/mod_tap#mod-tap","2411":"/mod_tap#caveats","2412":"/mod_tap#intercepting-mod-taps","2413":"/mod_tap#changing-tap-function","2414":"/mod_tap#changing-hold-function","2415":"/mod_tap#changing-both-tap-and-hold","2416":"/mod_tap#other-resources","2417":"/newbs#the-qmk-tutorial","2418":"/newbs#overview","2419":"/newbs#additional-resources","2420":"/newbs_building_firmware#building-your-first-firmware","2421":"/newbs_building_firmware#configure-your-build-environment-defaults-optional","2422":"/newbs_building_firmware#create-a-new-keymap","2423":"/newbs_building_firmware#open-keymap-c-in-your-favorite-text-editor","2424":"/newbs_building_firmware#customize-the-layout-to-your-liking","2425":"/newbs_building_firmware#build-your-firmware","2426":"/newbs_building_firmware#flash-your-firmware","2427":"/newbs_building_firmware_configurator#qmk-configurator","2428":"/newbs_building_firmware_workflow#building-qmk-with-github-userspace","2429":"/newbs_building_firmware_workflow#prerequisites","2430":"/newbs_building_firmware_workflow#environment-setup","2431":"/newbs_building_firmware_workflow#_1-install-git","2432":"/newbs_building_firmware_workflow#_2-github-authentication","2433":"/newbs_building_firmware_workflow#_3-create-a-repository","2434":"/newbs_building_firmware_workflow#initial-code-commit","2435":"/newbs_building_firmware_workflow#create-template-files","2436":"/newbs_building_firmware_workflow#add-a-json-keymap","2437":"/newbs_building_firmware_workflow#add-a-github-action-workflow","2438":"/newbs_building_firmware_workflow#commit-files-to-github","2439":"/newbs_building_firmware_workflow#review-workflow-output","2440":"/newbs_building_firmware_workflow#customising-your-keymap","2441":"/newbs_external_userspace#external-qmk-userspace","2442":"/newbs_external_userspace#setting-up-qmk-locally","2443":"/newbs_external_userspace#external-userspace-repository-setup-forked-on-github","2444":"/newbs_external_userspace#external-userspace-setup-locally-stored-only","2445":"/newbs_external_userspace#adding-a-keymap","2446":"/newbs_external_userspace#adding-the-keymap-to-external-userspace-build-targets","2447":"/newbs_external_userspace#compiling-external-userspace-build-targets","2448":"/newbs_external_userspace#using-github-actions","2449":"/newbs_flashing#flashing-your-keyboard","2450":"/newbs_flashing#put-your-keyboard-into-dfu-bootloader-mode","2451":"/newbs_flashing#flashing-your-keyboard-with-qmk-toolbox","2452":"/newbs_flashing#load-the-file-into-qmk-toolbox","2453":"/newbs_flashing#flash-your-keyboard","2454":"/newbs_flashing#flash-your-keyboard-from-the-command-line","2455":"/newbs_flashing#test-it-out","2456":"/newbs_getting_started#setting-up-your-qmk-environment","2457":"/newbs_getting_started#_1-prerequisites","2458":"/newbs_getting_started#set-up-your-environment","2459":"/newbs_getting_started#prerequisites","2460":"/newbs_getting_started#prerequisites-1","2461":"/newbs_getting_started#installation","2462":"/newbs_getting_started#prerequisites-2","2463":"/newbs_getting_started#installation-1","2464":"/newbs_getting_started#prerequisites-3","2465":"/newbs_getting_started#installation-2","2466":"/newbs_getting_started#community-packages","2467":"/newbs_getting_started#installation-3","2468":"/newbs_getting_started#set-up-qmk","2469":"/newbs_getting_started#_4-test-your-build-environment","2470":"/newbs_getting_started#creating-your-keymap","2471":"/newbs_git_best_practices#best-git-practices-for-working-with-qmk","2472":"/newbs_git_best_practices#or-how-i-learned-to-stop-worrying-and-love-git","2473":"/newbs_git_resolving_merge_conflicts#resolving-merge-conflicts","2474":"/newbs_git_resolving_merge_conflicts#rebasing-your-changes","2475":"/newbs_git_resynchronize_a_branch#resynchronizing-an-out-of-sync-git-branch","2476":"/newbs_git_resynchronize_a_branch#backing-up-the-changes-on-your-own-master-branch-optional","2477":"/newbs_git_resynchronize_a_branch#resynchronizing-your-branch","2478":"/newbs_git_using_your_master_branch#your-fork-s-master-update-often-commit-never","2479":"/newbs_git_using_your_master_branch#updating-your-master-branch","2480":"/newbs_git_using_your_master_branch#making-changes","2481":"/newbs_git_using_your_master_branch#publishing-your-changes","2482":"/newbs_learn_more_resources#learning-resources","2483":"/newbs_learn_more_resources#qmk-resources","2484":"/newbs_learn_more_resources#command-line-resources","2485":"/newbs_learn_more_resources#text-editor-resources","2486":"/newbs_learn_more_resources#git-resources","2487":"/newbs_testing_debugging#testing-and-debugging","2488":"/newbs_testing_debugging#testing","2489":"/newbs_testing_debugging#debugging","2490":"/one_shot_keys#one-shot-keys","2491":"/one_shot_keys#callbacks","2492":"/other_eclipse#setting-up-eclipse-for-qmk-development","2493":"/other_eclipse#prerequisites","2494":"/other_eclipse#build-environment","2495":"/other_eclipse#java","2496":"/other_eclipse#install-eclipse-and-its-plugins","2497":"/other_eclipse#download-and-install-eclipse-cdt","2498":"/other_eclipse#first-launch","2499":"/other_eclipse#install-the-necessary-plugins","2500":"/other_eclipse#configure-eclipse-for-qmk","2501":"/other_eclipse#importing-the-project","2502":"/other_eclipse#build-your-keyboard","2503":"/other_vscode#setting-up-visual-studio-code-for-qmk-development","2504":"/other_vscode#set-up-vs-code","2505":"/other_vscode#windows","2506":"/other_vscode#prerequisites","2507":"/other_vscode#installing-vs-code","2508":"/other_vscode#msys2-setup","2509":"/other_vscode#every-other-operating-system","2510":"/other_vscode#extensions","2511":"/other_vscode#configure-vs-code-for-qmk","2512":"/other_vscode#configuring-vs-code","2513":"/other_vscode#debugging-arm-mcus-with-visual-studio-code","2514":"/platformdev_blackpill_f4x1#weact-blackpill-stm32f4x1","2515":"/platformdev_blackpill_f4x1#pin-usage-limitations","2516":"/platformdev_blackpill_f4x1#unusable-pins","2517":"/platformdev_blackpill_f4x1#pins-to-be-avoided","2518":"/platformdev_blackpill_f4x1#shared-usage","2519":"/platformdev_blackpill_f4x1#limited-usage","2520":"/platformdev_blackpill_f4x1#additional-information","2521":"/platformdev_blackpill_f4x1#bootloader-issues","2522":"/platformdev_blackpill_f4x1#tiny-uf2-support","2523":"/platformdev_chibios_earlyinit#chibios-early-init","2524":"/platformdev_chibios_earlyinit#early-hardware-init-pre","2525":"/platformdev_chibios_earlyinit#early-hardware-init-post","2526":"/platformdev_chibios_earlyinit#board-init","2527":"/platformdev_proton_c#proton-c","2528":"/platformdev_proton_c#features","2529":"/platformdev_proton_c#warnings","2530":"/platformdev_proton_c#manual-conversion","2531":"/platformdev_rp2040#raspberry-pi-rp2040","2532":"/platformdev_rp2040#gpio","2533":"/platformdev_rp2040#pin-nomenclature","2534":"/platformdev_rp2040#alternate-functions","2535":"/platformdev_rp2040#selecting-hardware-peripherals-and-drivers","2536":"/platformdev_rp2040#i2c-driver","2537":"/platformdev_rp2040#spi-driver","2538":"/platformdev_rp2040#uart-driver","2539":"/platformdev_rp2040#double-tap","2540":"/platformdev_rp2040#pre-defined-rp2040-boards","2541":"/platformdev_rp2040#generic-pro-micro-rp2040","2542":"/platformdev_rp2040#generic-rp2040-board","2543":"/platformdev_rp2040#split-keyboard-support","2544":"/platformdev_rp2040#rp2040-second-stage-bootloader-selection","2545":"/platformdev_rp2040#rp2040_ce","2546":"/platformdev_selecting_arm_mcu#choose-arm-mcu","2547":"/platformdev_selecting_arm_mcu#selecting-already-supported-mcu","2548":"/platformdev_selecting_arm_mcu#stm32-families","2549":"/platformdev_selecting_arm_mcu#non-stm32-families","2550":"/platformdev_selecting_arm_mcu#add-new-stm32-mcu","2551":"/platformdev_selecting_arm_mcu#add-new-stm32-family","2552":"/platformdev_selecting_arm_mcu#add-new-mcu-family","2553":"/porting_your_keyboard_to_qmk#adding-your-keyboard-to-qmk","2554":"/porting_your_keyboard_to_qmk#readme-md","2555":"/porting_your_keyboard_to_qmk#info-json","2556":"/porting_your_keyboard_to_qmk#hardware-configuration","2557":"/porting_your_keyboard_to_qmk#matrix-configuration","2558":"/porting_your_keyboard_to_qmk#direct-pin-matrix","2559":"/porting_your_keyboard_to_qmk#layout-macros","2560":"/porting_your_keyboard_to_qmk#additional-configuration","2561":"/porting_your_keyboard_to_qmk#configuration-options","2562":"/porting_your_keyboard_to_qmk#build-options","2563":"/pr_checklist#pr-checklists","2564":"/pr_checklist#requirements-for-all-prs","2565":"/pr_checklist#keymap-prs","2566":"/pr_checklist#keyboard-prs","2567":"/pr_checklist#core-pr","2568":"/pr_checklist#notes","2569":"/pr_checklist#review-process","2570":"/pr_checklist#example-gplv2-header","2571":"/quantum_keycodes#quantum-keycodes","2572":"/quantum_keycodes#qmk-keycodes","2573":"/quantum_painter#quantum-painter","2574":"/quantum_painter#quantum-painter-config","2575":"/quantum_painter#quantum-painter-cli","2576":"/quantum_painter#quantum-painter-drivers","2577":"/quantum_painter#quantum-painter-api","2578":"/quantum_painter_lvgl#lvgl","2579":"/quantum_painter_lvgl#lvgl-enabling","2580":"/quantum_painter_lvgl#lvgl-api","2581":"/quantum_painter_lvgl#lvgl-api-init","2582":"/quantum_painter_lvgl#lvgl-api-detach","2583":"/quantum_painter_lvgl#lvgl-configuring","2584":"/quantum_painter_lvgl#changing-the-lvgl-task-frequency","2585":"/quantum_painter_qff#qmk-font-format","2586":"/quantum_painter_qff#qff-block-header","2587":"/quantum_painter_qff#qff-font-descriptor","2588":"/quantum_painter_qff#qff-ascii-table","2589":"/quantum_painter_qff#qff-unicode-table","2590":"/quantum_painter_qff#qff-palette-descriptor","2591":"/quantum_painter_qff#qff-data-descriptor","2592":"/quantum_painter_qgf#qmk-graphics-format","2593":"/quantum_painter_qgf#qgf-block-header","2594":"/quantum_painter_qgf#qgf-graphics-descriptor","2595":"/quantum_painter_qgf#qgf-frame-offset-descriptor","2596":"/quantum_painter_qgf#qgf-frame-descriptor","2597":"/quantum_painter_qgf#qgf-frame-palette-descriptor","2598":"/quantum_painter_qgf#qgf-frame-delta-descriptor","2599":"/quantum_painter_qgf#qgf-frame-data-descriptor","2600":"/quantum_painter_rle#qmk-qp-rle-schema","2601":"/ref_functions#list-of-useful-core-functions-to-make-your-keyboard-better","2602":"/ref_functions#olkb-tri-layers","2603":"/ref_functions#update-tri-layer-x-y-z","2604":"/ref_functions#example","2605":"/ref_functions#update-tri-layer-state-state-x-y-z","2606":"/ref_functions#example-1","2607":"/ref_functions#setting-the-persistent-default-layer","2608":"/ref_functions#resetting-the-keyboard","2609":"/ref_functions#reset-to-bootloader","2610":"/ref_functions#wiping-the-eeprom-persistent-storage","2611":"/ref_functions#tap-random-key","2612":"/ref_functions#software-timers","2613":"/reference_configurator_support#supporting-your-keyboard-in-qmk-configurator","2614":"/reference_configurator_support#how-the-configurator-understands-keyboards","2615":"/reference_configurator_support#building-the-json-file","2616":"/reference_configurator_support#how-the-configurator-programs-keys","2617":"/reference_configurator_support#issues-and-hazards","2618":"/reference_configurator_support#workarounds","2619":"/reference_configurator_support#non-rectangular-keys","2620":"/reference_configurator_support#vertically-offset-keys","2621":"/reference_glossary#glossary-of-qmk-terms","2622":"/reference_glossary#arm","2623":"/reference_glossary#avr","2624":"/reference_glossary#azerty","2625":"/reference_glossary#backlight","2626":"/reference_glossary#bluetooth","2627":"/reference_glossary#bootloader","2628":"/reference_glossary#bootmagic","2629":"/reference_glossary#c","2630":"/reference_glossary#colemak","2631":"/reference_glossary#compile","2632":"/reference_glossary#dvorak","2633":"/reference_glossary#dynamic-macro","2634":"/reference_glossary#eclipse","2635":"/reference_glossary#firmware","2636":"/reference_glossary#git","2637":"/reference_glossary#github","2638":"/reference_glossary#isp","2639":"/reference_glossary#hid-listen","2640":"/reference_glossary#keycode","2641":"/reference_glossary#key-down","2642":"/reference_glossary#key-up","2643":"/reference_glossary#keymap","2644":"/reference_glossary#layer","2645":"/reference_glossary#leader-key","2646":"/reference_glossary#led","2647":"/reference_glossary#make","2648":"/reference_glossary#matrix","2649":"/reference_glossary#macro","2650":"/reference_glossary#mcu","2651":"/reference_glossary#modifier","2652":"/reference_glossary#mousekeys","2653":"/reference_glossary#n-key-rollover-nkro","2654":"/reference_glossary#oneshot-modifier","2655":"/reference_glossary#promicro","2656":"/reference_glossary#pull-request","2657":"/reference_glossary#qwerty","2658":"/reference_glossary#qwertz","2659":"/reference_glossary#rollover","2660":"/reference_glossary#scancode","2661":"/reference_glossary#space-cadet-shift","2662":"/reference_glossary#tap","2663":"/reference_glossary#tap-dance","2664":"/reference_glossary#teensy","2665":"/reference_glossary#underlight","2666":"/reference_glossary#unicode","2667":"/reference_glossary#unit-testing","2668":"/reference_glossary#usb","2669":"/reference_glossary#usb-host-or-simply-host","2670":"/reference_glossary#couldn-t-find-the-term-you-re-looking-for","2671":"/reference_info_json#info-json-reference","2672":"/reference_info_json#general-metadata","2673":"/reference_info_json#hardware-configuration","2674":"/reference_info_json#firmware-configuration","2675":"/reference_info_json#apa102","2676":"/reference_info_json#audio","2677":"/reference_info_json#backlight","2678":"/reference_info_json#bluetooth","2679":"/reference_info_json#bootmagic","2680":"/reference_info_json#caps-word","2681":"/reference_info_json#combo","2682":"/reference_info_json#dip-switch","2683":"/reference_info_json#eeprom","2684":"/reference_info_json#encoder","2685":"/reference_info_json#indicators","2686":"/reference_info_json#layouts","2687":"/reference_info_json#leader-key","2688":"/reference_info_json#led-matrix","2689":"/reference_info_json#matrix","2690":"/reference_info_json#mouse-keys","2691":"/reference_info_json#one-shot","2692":"/reference_info_json#ps2","2693":"/reference_info_json#qmk-lufa-bootloader","2694":"/reference_info_json#rgblight","2695":"/reference_info_json#rgb-matrix","2696":"/reference_info_json#secure","2697":"/reference_info_json#split-keyboard","2698":"/reference_info_json#stenography","2699":"/reference_info_json#usb","2700":"/reference_info_json#ws2812","2701":"/squeezing_avr#squeezing-the-most-out-of-avr","2702":"/squeezing_avr#rules-mk-settings","2703":"/squeezing_avr#config-h-settings","2704":"/squeezing_avr#audio-settings","2705":"/squeezing_avr#layers","2706":"/squeezing_avr#magic-functions","2707":"/squeezing_avr#oled-tweaks","2708":"/squeezing_avr#rgb-settings","2709":"/squeezing_avr#final-thoughts","2710":"/reference_keymap_extras#language-specific-keycodes","2711":"/reference_keymap_extras#sendstring-support","2712":"/reference_keymap_extras#header-files","2713":"/support#getting-help","2714":"/support#realtime-chat","2715":"/support#olkb-subreddit","2716":"/support#github-issues","2717":"/support_deprecation_policy#feature-support-policies","2718":"/support_deprecation_policy#system-constraints","2719":"/support_deprecation_policy#deprecation-removal-policy","2720":"/support_deprecation_policy#how-much-advance-notice-will-be-given","2721":"/support_deprecation_policy#how-will-deprecation-be-communicated","2722":"/syllabus#qmk-syllabus","2723":"/syllabus#beginning-topics","2724":"/syllabus#intermediate-topics","2725":"/syllabus#advanced-topics","2726":"/tap_hold#tap-hold-configuration-options","2727":"/tap_hold#tapping-term","2728":"/tap_hold#dynamic-tapping-term","2729":"/tap_hold#tap-or-hold-decision-modes","2730":"/tap_hold#comparison","2731":"/tap_hold#distinct-taps","2732":"/tap_hold#nested-tap","2733":"/tap_hold#rolling-keys","2734":"/tap_hold#default-mode","2735":"/tap_hold#permissive-hold","2736":"/tap_hold#hold-on-other-key-press","2737":"/tap_hold#quick-tap-term","2738":"/tap_hold#retro-tapping","2739":"/tap_hold#retro-shift","2740":"/tap_hold#why-do-we-include-the-key-record-for-the-per-key-functions","2741":"/tap_hold#why-are-there-no-kb-or-user-functions","2742":"/understanding_qmk#understanding-qmk-s-code","2743":"/understanding_qmk#startup","2744":"/understanding_qmk#the-main-loop","2745":"/understanding_qmk#matrix-scanning","2746":"/understanding_qmk#matrix-to-physical-layout-map","2747":"/understanding_qmk#keycode-assignment","2748":"/understanding_qmk#state-change-detection","2749":"/understanding_qmk#process-record","2750":"/unit_testing#unit-testing","2751":"/unit_testing#google-test-and-google-mock","2752":"/unit_testing#use-of-c","2753":"/unit_testing#adding-tests-for-new-or-existing-features","2754":"/unit_testing#running-the-tests","2755":"/unit_testing#debugging-the-tests","2756":"/unit_testing#full-integration-tests","2757":"/unit_testing#tracing-variables"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[6,1,56],"1":[6,6,41],"2":[4,6,36],"3":[11,6,49],"4":[6,6,33],"5":[9,6,41],"6":[9,6,47],"7":[10,6,44],"8":[8,6,34],"9":[7,1,47],"10":[5,7,90],"11":[9,7,46],"12":[3,7,19],"13":[2,7,30],"14":[9,7,69],"15":[12,7,49],"16":[7,7,44],"17":[7,7,25],"18":[4,7,30],"19":[7,1,51],"20":[2,7,1],"21":[7,9,50],"22":[6,9,46],"23":[6,9,47],"24":[6,9,43],"25":[13,9,69],"26":[6,9,12],"27":[13,9,20],"28":[6,9,77],"29":[2,7,1],"30":[6,9,44],"31":[6,15,121],"32":[6,9,45],"33":[8,9,42],"34":[6,17,100],"35":[12,9,22],"36":[4,21,57],"37":[2,7,60],"38":[3,7,58],"39":[7,1,47],"40":[4,7,1],"41":[2,11,1],"42":[6,13,1],"43":[7,13,48],"44":[3,11,1],"45":[5,14,91],"46":[4,11,35],"47":[2,7,1],"48":[1,9,22],"49":[3,9,349],"50":[4,9,260],"51":[4,7,31],"52":[7,1,47],"53":[4,7,1],"54":[2,11,1],"55":[6,13,47],"56":[8,13,21],"57":[8,13,39],"58":[6,13,25],"59":[3,11,1],"60":[4,14,15],"61":[2,7,1],"62":[1,9,26],"63":[3,9,83],"64":[4,9,45],"65":[4,7,121],"66":[7,1,1],"67":[4,7,48],"68":[2,7,1],"69":[5,8,51],"70":[4,8,171],"71":[3,7,1],"72":[4,10,35],"73":[1,10,113],"74":[3,10,149],"75":[4,10,117],"76":[4,10,90],"77":[5,10,68],"78":[7,1,1],"79":[2,7,1],"80":[7,8,13],"81":[5,8,9],"82":[5,8,31],"83":[4,8,33],"84":[4,8,14],"85":[4,7,1],"86":[3,10,86],"87":[5,10,50],"88":[3,15,39],"89":[5,10,24],"90":[6,10,75],"91":[2,7,1],"92":[1,8,112],"93":[3,8,234],"94":[4,8,145],"95":[4,8,35],"96":[7,1,1],"97":[2,7,1],"98":[4,9,54],"99":[3,9,74],"100":[3,9,29],"101":[4,7,1],"102":[3,10,85],"103":[4,10,63],"104":[4,14,41],"105":[7,10,65],"106":[3,7,1],"107":[3,10,84],"108":[5,10,19],"109":[4,10,21],"110":[1,14,42],"111":[2,14,107],"112":[3,14,117],"113":[4,10,105],"114":[2,7,1145],"115":[7,1,1],"116":[3,7,42],"117":[2,7,1],"118":[5,9,106],"119":[4,9,104],"120":[5,9,78],"121":[4,7,1],"122":[3,10,44],"123":[6,10,62],"124":[8,10,95],"125":[4,10,86],"126":[4,10,69],"127":[6,14,40],"128":[4,10,28],"129":[3,7,1],"130":[3,10,50],"131":[2,10,78],"132":[2,10,87],"133":[4,10,179],"134":[2,7,847],"135":[7,1,1],"136":[2,7,1],"137":[7,9,22],"138":[6,9,28],"139":[4,7,1],"140":[8,10,23],"141":[10,10,19],"142":[5,10,22],"143":[3,10,291],"144":[3,7,1],"145":[3,10,18],"146":[2,10,12],"147":[1,12,5],"148":[1,12,3],"149":[2,7,866],"150":[7,1,1],"151":[2,7,1],"152":[3,9,80],"153":[3,9,111],"154":[3,9,54],"155":[4,7,1],"156":[6,10,65],"157":[4,10,50],"158":[3,10,73],"159":[3,10,51],"160":[2,7,516],"161":[7,1,1],"162":[2,7,1],"163":[6,9,73],"164":[9,9,57],"165":[4,7,1],"166":[8,10,71],"167":[6,10,38],"168":[3,10,29],"169":[6,10,75],"170":[2,16,27],"171":[3,7,1],"172":[3,10,67],"173":[7,10,87],"174":[7,10,75],"175":[4,10,100],"176":[2,7,977],"177":[7,1,1],"178":[2,7,1],"179":[2,9,38],"180":[4,7,1],"181":[3,10,38],"182":[2,10,137],"183":[3,10,34],"184":[6,10,66],"185":[5,10,93],"186":[3,10,31],"187":[3,7,21],"188":[2,10,171],"189":[2,10,67],"190":[5,10,79],"191":[2,7,1144],"192":[7,1,1],"193":[4,7,1],"194":[7,10,182],"195":[9,10,106],"196":[7,10,89],"197":[3,10,37],"198":[3,7,105],"199":[2,7,907],"200":[7,1,1],"201":[2,7,147],"202":[4,8,71],"203":[7,8,74],"204":[3,8,37],"205":[4,7,1],"206":[7,10,60],"207":[3,10,49],"208":[3,7,1],"209":[4,10,60],"210":[4,10,31],"211":[2,7,1441],"212":[7,1,1],"213":[2,7,110],"214":[4,8,35],"215":[3,8,54],"216":[4,7,1],"217":[3,10,46],"218":[7,10,49],"219":[4,10,15],"220":[6,10,29],"221":[4,10,105],"222":[2,7,740],"223":[7,1,1],"224":[2,7,75],"225":[4,7,1],"226":[3,10,47],"227":[3,7,1],"228":[3,10,94],"229":[6,10,45],"230":[4,10,55],"231":[7,10,127],"232":[5,10,68],"233":[8,10,78],"234":[4,10,112],"235":[6,10,44],"236":[2,7,816],"237":[7,1,1],"238":[2,7,45],"239":[4,7,1],"240":[4,10,94],"241":[3,10,110],"242":[3,7,1],"243":[7,10,76],"244":[5,10,50],"245":[6,10,40],"246":[7,10,44],"247":[4,10,50],"248":[4,10,50],"249":[2,7,827],"250":[7,1,1],"251":[2,7,62],"252":[4,7,1],"253":[3,10,75],"254":[5,10,45],"255":[5,10,59],"256":[5,10,31],"257":[2,15,21],"258":[3,15,22],"259":[2,15,44],"260":[2,15,8],"261":[3,7,1],"262":[5,10,85],"263":[9,10,104],"264":[2,7,15],"265":[7,9,81],"266":[2,7,686],"267":[7,1,1],"268":[2,7,64],"269":[4,7,1],"270":[3,10,47],"271":[7,10,34],"272":[7,10,52],"273":[9,10,104],"274":[2,7,15],"275":[7,9,45],"276":[7,9,73],"277":[2,7,446],"278":[2,1,37],"279":[2,2,47],"280":[2,4,1],"281":[1,4,1],"282":[1,4,93],"283":[1,4,1],"284":[2,5,15],"285":[4,5,14],"286":[2,4,19],"287":[1,2,1],"288":[2,3,9],"289":[1,3,6],"290":[2,3,28],"291":[2,3,60],"292":[2,3,89],"293":[2,3,9],"294":[1,3,12],"295":[3,4,3],"296":[3,7,4],"297":[3,7,4],"298":[3,4,3],"299":[3,4,8],"300":[2,2,18],"301":[1,2,8],"302":[3,1,12],"303":[4,1,36],"304":[1,1,53],"305":[1,1,50],"306":[2,1,18],"307":[7,2,34],"308":[12,2,24],"309":[13,2,11],"310":[13,2,12],"311":[2,1,23],"312":[1,2,35],"313":[4,3,143],"314":[4,2,48],"315":[3,2,98],"316":[3,2,46],"317":[1,2,130],"318":[2,1,45],"319":[2,2,20],"320":[2,2,21],"321":[2,2,25],"322":[4,1,56],"323":[3,4,25],"324":[3,7,55],"325":[3,7,23],"326":[3,7,17],"327":[3,7,37],"328":[1,7,22],"329":[1,7,12],"330":[4,7,16],"331":[2,4,168],"332":[1,4,20],"333":[1,4,1],"334":[3,4,86],"335":[3,4,85],"336":[4,4,51],"337":[2,1,82],"338":[9,2,10],"339":[7,2,11],"340":[2,8,53],"341":[6,2,187],"342":[1,2,14],"343":[4,3,39],"344":[4,3,46],"345":[4,3,54],"346":[4,3,35],"347":[3,3,67],"348":[3,2,1],"349":[4,5,139],"350":[8,5,95],"351":[3,1,50],"352":[7,1,159],"353":[4,7,22],"354":[5,11,42],"355":[3,11,50],"356":[3,11,31],"357":[3,1,24],"358":[2,3,67],"359":[3,3,35],"360":[2,3,63],"361":[11,3,33],"362":[2,1,1],"363":[1,2,34],"364":[1,3,33],"365":[7,3,33],"366":[3,3,51],"367":[5,3,59],"368":[3,1,1],"369":[2,1,1],"370":[2,2,127],"371":[2,2,112],"372":[2,2,23],"373":[2,2,39],"374":[2,2,131],"375":[2,2,67],"376":[2,2,38],"377":[3,2,35],"378":[2,2,63],"379":[2,2,15],"380":[2,2,51],"381":[2,2,42],"382":[3,2,14],"383":[3,2,31],"384":[2,2,31],"385":[3,2,52],"386":[3,2,32],"387":[2,2,29],"388":[2,2,58],"389":[3,2,51],"390":[3,2,51],"391":[3,2,61],"392":[3,1,1],"393":[3,3,63],"394":[3,3,64],"395":[3,3,44],"396":[3,3,77],"397":[3,3,30],"398":[2,1,1],"399":[3,2,37],"400":[3,2,54],"401":[4,2,103],"402":[2,2,47],"403":[3,2,57],"404":[5,2,45],"405":[2,2,60],"406":[3,2,11],"407":[2,2,33],"408":[4,2,26],"409":[5,2,27],"410":[5,2,22],"411":[3,2,75],"412":[3,1,8],"413":[1,1,33],"414":[2,1,58],"415":[3,1,56],"416":[5,1,38],"417":[3,5,43],"418":[3,5,25],"419":[3,7,3],"420":[3,7,4],"421":[3,7,5],"422":[3,7,7],"423":[3,5,31],"424":[2,5,46],"425":[3,1,20],"426":[3,1,23],"427":[3,1,14],"428":[1,1,45],"429":[3,1,42],"430":[1,1,142],"431":[2,1,34],"432":[2,2,81],"433":[4,4,88],"434":[4,4,37],"435":[2,4,115],"436":[3,1,71],"437":[3,3,51],"438":[3,3,20],"439":[3,3,19],"440":[4,3,33],"441":[4,3,58],"442":[7,1,21],"443":[3,7,3],"444":[1,7,4],"445":[2,7,26],"446":[2,7,72],"447":[2,7,28],"448":[4,1,34],"449":[1,4,10],"450":[4,5,43],"451":[3,5,29],"452":[3,5,40],"453":[4,1,221],"454":[5,1,104],"455":[4,1,104],"456":[1,1,16],"457":[1,1,84],"458":[2,1,22],"459":[1,1,21],"460":[1,1,55],"461":[3,1,33],"462":[1,1,79],"463":[3,1,19],"464":[3,1,24],"465":[4,1,61],"466":[1,1,61],"467":[1,1,43],"468":[3,1,47],"469":[1,1,32],"470":[2,1,72],"471":[4,1,32],"472":[1,1,24],"473":[2,1,46],"474":[3,1,63],"475":[1,1,21],"476":[3,1,24],"477":[1,1,15],"478":[3,1,20],"479":[2,1,102],"480":[3,1,25],"481":[2,1,104],"482":[1,1,46],"483":[1,1,60],"484":[2,1,45],"485":[2,1,66],"486":[2,1,37],"487":[2,2,42],"488":[1,2,22],"489":[3,3,28],"490":[3,3,3],"491":[3,3,13],"492":[2,3,14],"493":[2,2,35],"494":[2,2,1],"495":[1,4,32],"496":[2,1,108],"497":[2,2,25],"498":[1,2,35],"499":[1,2,41],"500":[1,2,34],"501":[4,1,37],"502":[2,4,283],"503":[5,4,39],"504":[5,4,70],"505":[5,4,249],"506":[3,4,126],"507":[3,4,14],"508":[3,4,37],"509":[2,7,90],"510":[3,9,97],"511":[2,7,209],"512":[4,1,33],"513":[2,4,89],"514":[3,4,30],"515":[2,4,209],"516":[3,4,103],"517":[3,1,27],"518":[1,1,1],"519":[2,1,60],"520":[2,2,44],"521":[2,2,55],"522":[2,2,72],"523":[3,4,27],"524":[3,4,16],"525":[3,4,20],"526":[2,2,31],"527":[2,2,44],"528":[6,1,14],"529":[2,6,127],"530":[1,6,205],"531":[1,6,1],"532":[7,7,45],"533":[8,7,56],"534":[5,7,88],"535":[2,6,27],"536":[4,1,13],"537":[5,4,87],"538":[6,4,44],"539":[5,4,29],"540":[5,4,80],"541":[8,4,65],"542":[6,4,18],"543":[5,4,6],"544":[2,1,1],"545":[6,2,36],"546":[11,2,33],"547":[6,2,7],"548":[4,2,19],"549":[3,2,16],"550":[3,1,62],"551":[14,3,83],"552":[2,1,48],"553":[7,1,13],"554":[7,1,166],"555":[2,1,31],"556":[2,1,171],"557":[1,2,106],"558":[3,3,33],"559":[1,2,109],"560":[3,2,215],"561":[1,2,43],"562":[10,1,47],"563":[2,1,44],"564":[1,2,39],"565":[2,2,55],"566":[2,2,86],"567":[7,1,66],"568":[7,7,56],"569":[2,1,27],"570":[4,2,65],"571":[6,2,71],"572":[5,8,70],"573":[4,8,54],"574":[3,1,87],"575":[4,3,48],"576":[6,5,31],"577":[5,5,10],"578":[3,3,41],"579":[4,4,9],"580":[6,4,89],"581":[4,3,29],"582":[6,5,46],"583":[5,5,10],"584":[3,1,57],"585":[4,3,40],"586":[4,3,68],"587":[2,1,82],"588":[6,2,139],"589":[4,1,51],"590":[9,4,19],"591":[5,4,13],"592":[4,1,111],"593":[4,4,36],"594":[4,4,38],"595":[5,4,11],"596":[2,1,33],"597":[3,2,126],"598":[3,2,104],"599":[4,2,39],"600":[4,2,39],"601":[3,2,44],"602":[2,1,43],"603":[3,2,4],"604":[4,2,4],"605":[3,1,24],"606":[1,3,147],"607":[1,3,72],"608":[6,3,16],"609":[5,9,95],"610":[3,9,72],"611":[2,12,49],"612":[2,12,52],"613":[5,9,83],"614":[5,9,74],"615":[3,1,32],"616":[2,1,72],"617":[1,1,35],"618":[3,1,14],"619":[1,3,8],"620":[2,3,9],"621":[2,1,88],"622":[2,1,17],"623":[4,2,91],"624":[4,2,129],"625":[5,1,81],"626":[1,5,175],"627":[6,5,114],"628":[1,5,127],"629":[4,5,161],"630":[2,1,82],"631":[1,2,27],"632":[1,2,1],"633":[1,3,81],"634":[1,3,1],"635":[1,4,203],"636":[1,4,55],"637":[1,2,1],"638":[1,3,57],"639":[1,3,74],"640":[1,2,1],"641":[1,2,130],"642":[2,1,23],"643":[1,2,53],"644":[2,2,36],"645":[1,2,1],"646":[4,3,11],"647":[12,3,22],"648":[1,15,17],"649":[11,3,7],"650":[1,14,10],"651":[4,3,8],"652":[7,3,5],"653":[1,10,11],"654":[2,1,61],"655":[1,2,53],"656":[1,2,104],"657":[2,3,90],"658":[2,3,56],"659":[2,3,148],"660":[4,5,124],"661":[2,3,142],"662":[2,3,58],"663":[2,3,59],"664":[2,1,27],"665":[1,2,47],"666":[2,2,50],"667":[3,4,29],"668":[3,2,18],"669":[2,2,67],"670":[1,2,1],"671":[4,3,11],"672":[1,7,26],"673":[7,3,11],"674":[1,10,15],"675":[12,3,23],"676":[1,15,20],"677":[11,3,7],"678":[1,14,10],"679":[11,3,8],"680":[1,14,15],"681":[3,1,101],"682":[3,3,1],"683":[4,4,61],"684":[3,3,179],"685":[3,3,128],"686":[3,3,37],"687":[4,3,37],"688":[3,1,100],"689":[6,3,175],"690":[6,3,119],"691":[5,3,83],"692":[7,3,72],"693":[3,1,36],"694":[4,3,93],"695":[2,1,22],"696":[1,2,58],"697":[2,2,44],"698":[2,2,69],"699":[3,1,19],"700":[1,3,51],"701":[2,3,94],"702":[2,3,64],"703":[3,3,131],"704":[1,6,27],"705":[1,6,28],"706":[1,3,1],"707":[4,4,70],"708":[11,4,9],"709":[1,15,35],"710":[2,15,16],"711":[11,4,9],"712":[1,15,36],"713":[2,15,16],"714":[13,4,14],"715":[1,17,38],"716":[2,17,16],"717":[13,4,15],"718":[1,17,38],"719":[2,17,16],"720":[13,4,14],"721":[1,17,35],"722":[2,17,16],"723":[13,4,15],"724":[1,17,35],"725":[2,17,16],"726":[9,4,62],"727":[1,13,32],"728":[2,13,16],"729":[2,1,18],"730":[1,2,54],"731":[2,2,37],"732":[2,4,14],"733":[3,2,18],"734":[2,2,71],"735":[1,2,1],"736":[4,3,11],"737":[1,7,25],"738":[4,3,11],"739":[9,3,7],"740":[1,12,11],"741":[12,3,26],"742":[1,15,20],"743":[11,3,10],"744":[1,14,10],"745":[9,3,26],"746":[1,12,18],"747":[8,3,11],"748":[1,11,8],"749":[14,3,26],"750":[1,17,21],"751":[12,3,26],"752":[1,15,18],"753":[6,3,8],"754":[7,3,9],"755":[2,1,25],"756":[1,2,54],"757":[2,2,44],"758":[2,4,48],"759":[3,2,18],"760":[2,2,74],"761":[1,2,1],"762":[4,3,11],"763":[1,7,31],"764":[7,3,11],"765":[1,10,6],"766":[10,3,7],"767":[1,13,13],"768":[12,3,26],"769":[1,15,20],"770":[11,3,10],"771":[1,14,10],"772":[9,3,26],"773":[1,12,18],"774":[8,3,11],"775":[1,11,8],"776":[14,3,26],"777":[1,17,21],"778":[12,3,26],"779":[1,15,18],"780":[9,3,8],"781":[1,12,6],"782":[10,3,9],"783":[1,13,6],"784":[2,1,28],"785":[1,2,54],"786":[2,2,49],"787":[2,4,48],"788":[2,4,30],"789":[3,2,18],"790":[2,2,92],"791":[1,2,1],"792":[4,3,11],"793":[1,7,31],"794":[7,3,11],"795":[1,10,6],"796":[10,3,7],"797":[1,13,13],"798":[8,3,9],"799":[1,11,10],"800":[12,3,26],"801":[1,15,20],"802":[11,3,10],"803":[1,14,10],"804":[9,3,26],"805":[1,12,18],"806":[8,3,11],"807":[1,11,8],"808":[14,3,26],"809":[1,17,21],"810":[12,3,26],"811":[1,15,18],"812":[9,3,8],"813":[1,12,6],"814":[10,3,9],"815":[1,13,6],"816":[2,1,28],"817":[1,2,54],"818":[2,2,69],"819":[2,4,48],"820":[2,4,42],"821":[2,4,68],"822":[3,4,36],"823":[3,2,18],"824":[2,2,88],"825":[1,2,1],"826":[4,3,11],"827":[1,7,31],"828":[7,3,11],"829":[1,10,6],"830":[10,3,7],"831":[1,13,13],"832":[12,3,26],"833":[1,15,20],"834":[11,3,10],"835":[1,14,10],"836":[9,3,26],"837":[1,12,18],"838":[8,3,11],"839":[1,11,8],"840":[12,3,25],"841":[1,15,20],"842":[10,3,25],"843":[1,13,16],"844":[9,3,8],"845":[1,12,6],"846":[9,3,9],"847":[1,12,6],"848":[2,1,27],"849":[1,2,54],"850":[2,2,76],"851":[2,4,62],"852":[3,4,46],"853":[2,4,42],"854":[2,4,70],"855":[3,4,36],"856":[3,2,18],"857":[2,2,88],"858":[1,2,1],"859":[4,3,11],"860":[1,7,31],"861":[7,3,11],"862":[1,10,6],"863":[10,3,7],"864":[1,13,13],"865":[8,3,9],"866":[1,11,10],"867":[12,3,26],"868":[1,15,20],"869":[11,3,10],"870":[1,14,10],"871":[9,3,26],"872":[1,12,18],"873":[8,3,11],"874":[1,11,8],"875":[14,3,26],"876":[1,17,21],"877":[12,3,26],"878":[1,15,18],"879":[9,3,8],"880":[1,12,6],"881":[10,3,9],"882":[1,13,6],"883":[2,1,27],"884":[1,2,54],"885":[2,2,71],"886":[2,4,62],"887":[2,4,42],"888":[2,4,70],"889":[3,4,36],"890":[3,2,18],"891":[2,2,88],"892":[1,2,1],"893":[4,3,11],"894":[1,7,31],"895":[7,3,11],"896":[1,10,6],"897":[10,3,7],"898":[1,13,13],"899":[8,3,9],"900":[1,11,10],"901":[12,3,26],"902":[1,15,20],"903":[11,3,10],"904":[1,14,10],"905":[9,3,26],"906":[1,12,18],"907":[8,3,11],"908":[1,11,8],"909":[14,3,26],"910":[1,17,21],"911":[12,3,26],"912":[1,15,18],"913":[9,3,8],"914":[1,12,6],"915":[10,3,9],"916":[1,13,6],"917":[2,1,27],"918":[1,2,54],"919":[2,2,71],"920":[2,4,48],"921":[2,4,42],"922":[2,4,70],"923":[3,4,36],"924":[3,2,18],"925":[2,2,88],"926":[1,2,1],"927":[4,3,11],"928":[1,7,31],"929":[7,3,11],"930":[1,10,6],"931":[10,3,7],"932":[1,13,13],"933":[8,3,9],"934":[1,11,10],"935":[12,3,26],"936":[1,15,20],"937":[11,3,10],"938":[1,14,10],"939":[9,3,26],"940":[1,12,18],"941":[8,3,11],"942":[1,11,8],"943":[14,3,26],"944":[1,17,21],"945":[12,3,26],"946":[1,15,18],"947":[9,3,8],"948":[1,12,6],"949":[10,3,9],"950":[1,13,6],"951":[2,1,27],"952":[1,2,54],"953":[2,2,75],"954":[2,4,48],"955":[2,4,40],"956":[2,4,70],"957":[3,4,36],"958":[3,2,18],"959":[2,2,88],"960":[1,2,1],"961":[4,3,11],"962":[1,7,31],"963":[7,3,11],"964":[1,10,6],"965":[10,3,7],"966":[1,13,13],"967":[8,3,9],"968":[1,11,10],"969":[12,3,26],"970":[1,15,20],"971":[11,3,10],"972":[1,14,10],"973":[9,3,26],"974":[1,12,18],"975":[8,3,11],"976":[1,11,8],"977":[14,3,26],"978":[1,17,21],"979":[12,3,26],"980":[1,15,18],"981":[9,3,8],"982":[1,12,6],"983":[10,3,9],"984":[1,13,6],"985":[2,1,27],"986":[1,2,54],"987":[2,2,74],"988":[2,4,48],"989":[2,4,37],"990":[2,4,70],"991":[3,4,36],"992":[3,2,18],"993":[2,2,88],"994":[1,2,1],"995":[4,3,11],"996":[1,7,31],"997":[7,3,11],"998":[1,10,6],"999":[10,3,7],"1000":[1,13,13],"1001":[8,3,9],"1002":[1,11,10],"1003":[12,3,26],"1004":[1,15,20],"1005":[11,3,10],"1006":[1,14,10],"1007":[9,3,26],"1008":[1,12,18],"1009":[8,3,11],"1010":[1,11,8],"1011":[12,3,25],"1012":[1,15,20],"1013":[10,3,26],"1014":[1,13,16],"1015":[9,3,8],"1016":[1,12,6],"1017":[9,3,9],"1018":[1,12,6],"1019":[2,1,27],"1020":[1,2,54],"1021":[2,2,73],"1022":[2,4,62],"1023":[3,4,46],"1024":[2,4,72],"1025":[3,4,36],"1026":[3,2,18],"1027":[2,2,88],"1028":[1,2,1],"1029":[4,3,11],"1030":[1,7,31],"1031":[7,3,11],"1032":[1,10,6],"1033":[10,3,7],"1034":[1,13,13],"1035":[8,3,9],"1036":[1,11,10],"1037":[12,3,26],"1038":[1,15,20],"1039":[11,3,10],"1040":[1,14,10],"1041":[9,3,26],"1042":[1,12,18],"1043":[8,3,11],"1044":[1,11,8],"1045":[12,3,25],"1046":[1,15,20],"1047":[10,3,26],"1048":[1,13,16],"1049":[9,3,8],"1050":[1,12,6],"1051":[9,3,9],"1052":[1,12,6],"1053":[2,1,27],"1054":[1,2,54],"1055":[2,2,73],"1056":[2,4,62],"1057":[3,4,46],"1058":[2,4,72],"1059":[3,4,36],"1060":[3,2,18],"1061":[2,2,88],"1062":[1,2,1],"1063":[4,3,11],"1064":[1,7,31],"1065":[7,3,11],"1066":[1,10,6],"1067":[10,3,7],"1068":[1,13,13],"1069":[8,3,9],"1070":[1,11,10],"1071":[12,3,26],"1072":[1,15,20],"1073":[11,3,10],"1074":[1,14,10],"1075":[9,3,26],"1076":[1,12,18],"1077":[8,3,11],"1078":[1,11,8],"1079":[12,3,25],"1080":[1,15,20],"1081":[10,3,26],"1082":[1,13,16],"1083":[9,3,8],"1084":[1,12,6],"1085":[9,3,9],"1086":[1,12,6],"1087":[2,1,27],"1088":[1,2,54],"1089":[2,2,75],"1090":[2,4,62],"1091":[2,4,44],"1092":[2,4,72],"1093":[3,4,36],"1094":[3,2,18],"1095":[2,2,88],"1096":[1,2,1],"1097":[4,3,11],"1098":[1,7,31],"1099":[7,3,11],"1100":[1,10,12],"1101":[10,3,7],"1102":[1,13,13],"1103":[8,3,9],"1104":[1,11,10],"1105":[12,3,26],"1106":[1,15,20],"1107":[11,3,10],"1108":[1,14,10],"1109":[9,3,26],"1110":[1,12,18],"1111":[8,3,11],"1112":[1,11,8],"1113":[12,3,25],"1114":[1,15,20],"1115":[10,3,26],"1116":[1,13,16],"1117":[9,3,8],"1118":[1,12,6],"1119":[9,3,9],"1120":[1,12,6],"1121":[3,1,79],"1122":[1,3,56],"1123":[2,4,44],"1124":[1,4,58],"1125":[3,3,59],"1126":[2,6,90],"1127":[1,6,111],"1128":[3,3,62],"1129":[2,6,121],"1130":[1,6,124],"1131":[4,3,1],"1132":[3,7,95],"1133":[3,7,107],"1134":[3,7,95],"1135":[2,3,17],"1136":[1,5,70],"1137":[1,5,47],"1138":[1,3,48],"1139":[6,3,6],"1140":[3,9,35],"1141":[1,9,34],"1142":[6,9,82],"1143":[2,1,39],"1144":[1,2,53],"1145":[2,2,44],"1146":[2,4,48],"1147":[3,2,18],"1148":[2,2,86],"1149":[1,2,1],"1150":[4,3,11],"1151":[1,7,31],"1152":[7,3,11],"1153":[1,10,6],"1154":[10,3,7],"1155":[1,13,13],"1156":[8,3,9],"1157":[1,11,10],"1158":[12,3,26],"1159":[1,15,20],"1160":[11,3,10],"1161":[1,14,10],"1162":[9,3,26],"1163":[1,12,18],"1164":[8,3,11],"1165":[1,11,8],"1166":[14,3,26],"1167":[1,17,21],"1168":[12,3,26],"1169":[1,15,18],"1170":[9,3,8],"1171":[1,12,6],"1172":[10,3,9],"1173":[1,13,6],"1174":[3,1,19],"1175":[1,3,51],"1176":[2,3,69],"1177":[3,3,131],"1178":[1,3,1],"1179":[4,4,18],"1180":[12,4,5],"1181":[1,16,83],"1182":[2,16,16],"1183":[7,4,9],"1184":[1,11,8],"1185":[2,11,11],"1186":[6,4,9],"1187":[2,10,14],"1188":[10,4,9],"1189":[1,14,21],"1190":[2,14,16],"1191":[9,4,9],"1192":[1,13,21],"1193":[2,13,16],"1194":[4,4,21],"1195":[2,1,40],"1196":[1,2,46],"1197":[2,2,41],"1198":[3,2,89],"1199":[1,2,1],"1200":[7,3,18],"1201":[1,10,31],"1202":[7,3,5],"1203":[1,10,8],"1204":[6,3,5],"1205":[2,9,19],"1206":[10,3,4],"1207":[1,13,21],"1208":[9,3,4],"1209":[1,12,21],"1210":[5,3,19],"1211":[2,8,10],"1212":[2,1,68],"1213":[1,2,53],"1214":[2,2,72],"1215":[2,4,63],"1216":[2,4,78],"1217":[2,4,80],"1218":[2,2,34],"1219":[2,3,49],"1220":[2,3,43],"1221":[2,3,56],"1222":[2,3,22],"1223":[2,3,49],"1224":[3,2,34],"1225":[5,5,82],"1226":[2,5,77],"1227":[3,6,57],"1228":[2,6,27],"1229":[2,5,23],"1230":[2,5,108],"1231":[1,2,1],"1232":[12,3,9],"1233":[1,15,17],"1234":[8,1,74],"1235":[1,8,48],"1236":[2,1,89],"1237":[4,1,25],"1238":[5,4,77],"1239":[3,9,78],"1240":[10,9,35],"1241":[5,4,70],"1242":[4,4,88],"1243":[25,8,78],"1244":[2,1,13],"1245":[1,2,60],"1246":[2,2,9],"1247":[4,3,16],"1248":[4,3,21],"1249":[4,3,26],"1250":[5,2,52],"1251":[2,2,18],"1252":[7,4,96],"1253":[11,4,46],"1254":[6,2,100],"1255":[6,2,50],"1256":[3,1,1],"1257":[4,3,25],"1258":[8,3,41],"1259":[8,3,25],"1260":[12,3,40],"1261":[7,3,22],"1262":[7,3,30],"1263":[10,3,16],"1264":[10,13,47],"1265":[9,3,132],"1266":[2,1,19],"1267":[6,2,24],"1268":[6,2,36],"1269":[10,2,40],"1270":[9,2,99],"1271":[9,2,58],"1272":[6,2,46],"1273":[5,2,67],"1274":[3,2,29],"1275":[3,2,57],"1276":[4,2,58],"1277":[10,2,5],"1278":[4,2,78],"1279":[6,2,46],"1280":[5,2,41],"1281":[8,2,43],"1282":[7,2,6],"1283":[4,2,52],"1284":[8,2,58],"1285":[2,1,1],"1286":[7,2,36],"1287":[2,2,173],"1288":[4,2,46],"1289":[9,2,33],"1290":[8,2,70],"1291":[11,2,19],"1292":[6,2,31],"1293":[3,2,47],"1294":[2,2,58],"1295":[3,2,17],"1296":[2,2,1],"1297":[6,4,10],"1298":[11,2,58],"1299":[2,1,86],"1300":[3,1,226],"1301":[1,3,20],"1302":[5,4,98],"1303":[5,4,176],"1304":[2,1,43],"1305":[1,2,2],"1306":[2,2,3],"1307":[3,2,4],"1308":[4,2,5],"1309":[2,2,3],"1310":[1,1,27],"1311":[2,1,31],"1312":[1,1,91],"1313":[2,2,36],"1314":[2,2,57],"1315":[2,1,95],"1316":[2,3,86],"1317":[2,3,56],"1318":[10,3,8],"1319":[1,3,72],"1320":[2,3,58],"1321":[8,3,27],"1322":[2,1,52],"1323":[3,3,15],"1324":[3,3,17],"1325":[4,1,148],"1326":[4,4,199],"1327":[3,4,9],"1328":[2,7,30],"1329":[2,7,136],"1330":[5,7,61],"1331":[4,1,113],"1332":[2,4,273],"1333":[4,4,35],"1334":[1,1,49],"1335":[4,1,204],"1336":[1,4,150],"1337":[3,1,38],"1338":[1,3,109],"1339":[2,3,48],"1340":[2,3,130],"1341":[1,1,144],"1342":[3,1,20],"1343":[5,4,43],"1344":[6,4,130],"1345":[5,4,21],"1346":[7,1,105],"1347":[3,7,54],"1348":[3,7,20],"1349":[2,8,37],"1350":[6,7,1],"1351":[1,12,64],"1352":[1,12,47],"1353":[1,1,73],"1354":[5,1,58],"1355":[5,5,119],"1356":[2,5,24],"1357":[2,7,79],"1358":[5,1,1],"1359":[6,5,194],"1360":[2,11,91],"1361":[4,11,129],"1362":[2,11,32],"1363":[3,11,58],"1364":[3,5,73],"1365":[4,8,30],"1366":[6,8,26],"1367":[6,8,29],"1368":[6,8,77],"1369":[7,8,21],"1370":[10,8,38],"1371":[3,8,10],"1372":[3,8,8],"1373":[5,8,11],"1374":[3,5,1],"1375":[2,8,98],"1376":[5,1,98],"1377":[2,5,115],"1378":[3,7,77],"1379":[5,5,60],"1380":[4,5,114],"1381":[8,5,36],"1382":[1,5,12],"1383":[2,6,130],"1384":[2,6,124],"1385":[2,6,252],"1386":[1,1,50],"1387":[3,1,59],"1388":[1,4,25],"1389":[3,1,11],"1390":[3,4,76],"1391":[2,7,49],"1392":[4,8,33],"1393":[3,4,98],"1394":[3,4,59],"1395":[1,7,38],"1396":[3,4,75],"1397":[2,1,88],"1398":[1,1,180],"1399":[2,1,129],"1400":[1,1,58],"1401":[3,1,67],"1402":[1,1,51],"1403":[2,1,165],"1404":[2,3,86],"1405":[2,3,166],"1406":[2,1,175],"1407":[2,1,3],"1408":[2,1,52],"1409":[9,1,20],"1410":[4,9,41],"1411":[5,9,101],"1412":[7,9,92],"1413":[7,9,35],"1414":[1,9,54],"1415":[3,9,48],"1416":[7,9,173],"1417":[7,9,17],"1418":[7,9,15],"1419":[7,9,14],"1420":[7,9,10],"1421":[7,9,12],"1422":[6,9,6],"1423":[4,9,79],"1424":[6,9,3],"1425":[7,9,10],"1426":[7,9,9],"1427":[7,9,25],"1428":[7,9,16],"1429":[7,9,14],"1430":[3,9,139],"1431":[2,9,139],"1432":[6,9,47],"1433":[4,9,18],"1434":[1,10,48],"1435":[1,10,94],"1436":[3,11,75],"1437":[1,1,32],"1438":[5,1,92],"1439":[5,1,60],"1440":[3,1,160],"1441":[3,4,121],"1442":[2,1,74],"1443":[1,2,20],"1444":[3,1,1],"1445":[2,4,112],"1446":[3,5,159],"1447":[2,4,73],"1448":[3,5,111],"1449":[2,4,24],"1450":[5,1,50],"1451":[1,6,213],"1452":[1,6,84],"1453":[1,1,22],"1454":[1,1,76],"1455":[1,1,32],"1456":[1,1,34],"1457":[2,1,100],"1458":[4,3,62],"1459":[3,3,91],"1460":[2,1,24],"1461":[2,3,19],"1462":[2,3,31],"1463":[2,3,37],"1464":[2,3,69],"1465":[2,1,1],"1466":[2,3,51],"1467":[2,3,51],"1468":[3,1,1],"1469":[2,4,96],"1470":[2,4,49],"1471":[2,1,84],"1472":[1,1,1],"1473":[4,2,7],"1474":[4,2,5],"1475":[4,2,5],"1476":[4,2,5],"1477":[4,2,5],"1478":[4,2,5],"1479":[6,2,5],"1480":[1,8,11],"1481":[7,2,6],"1482":[2,9,10],"1483":[6,2,6],"1484":[2,8,7],"1485":[5,2,7],"1486":[5,2,5],"1487":[5,2,5],"1488":[6,2,7],"1489":[2,8,7],"1490":[1,1,1],"1491":[4,1,94],"1492":[4,4,89],"1493":[4,1,34],"1494":[2,1,37],"1495":[1,1,110],"1496":[2,1,119],"1497":[2,1,81],"1498":[1,1,48],"1499":[2,1,174],"1500":[6,2,137],"1501":[2,6,80],"1502":[3,2,1],"1503":[3,3,85],"1504":[2,3,51],"1505":[1,3,20],"1506":[8,3,78],"1507":[4,3,45],"1508":[1,1,104],"1509":[3,1,56],"1510":[2,1,47],"1511":[1,1,148],"1512":[1,1,49],"1513":[2,1,12],"1514":[2,3,42],"1515":[4,3,108],"1516":[2,3,48],"1517":[4,3,24],"1518":[9,3,191],"1519":[8,3,69],"1520":[2,3,38],"1521":[5,5,47],"1522":[5,5,34],"1523":[3,3,92],"1524":[3,3,61],"1525":[6,6,85],"1526":[2,1,40],"1527":[2,1,157],"1528":[1,1,60],"1529":[1,1,37],"1530":[1,1,149],"1531":[1,1,42],"1532":[1,1,12],"1533":[1,1,53],"1534":[1,1,63],"1535":[1,1,1],"1536":[3,2,6],"1537":[1,5,36],"1538":[4,2,13],"1539":[6,2,10],"1540":[6,2,10],"1541":[6,2,8],"1542":[6,2,8],"1543":[6,2,8],"1544":[6,2,8],"1545":[8,2,13],"1546":[1,10,16],"1547":[2,1,63],"1548":[3,2,66],"1549":[1,2,76],"1550":[1,2,1],"1551":[11,3,28],"1552":[13,3,15],"1553":[7,1,156],"1554":[1,7,114],"1555":[4,8,67],"1556":[2,8,69],"1557":[1,1,104],"1558":[2,1,84],"1559":[2,1,128],"1560":[1,1,112],"1561":[1,1,19],"1562":[2,1,96],"1563":[2,1,35],"1564":[1,2,34],"1565":[4,2,36],"1566":[1,2,17],"1567":[1,3,38],"1568":[1,2,48],"1569":[2,1,1],"1570":[5,2,77],"1571":[3,2,17],"1572":[2,2,72],"1573":[1,3,197],"1574":[1,3,23],"1575":[3,4,22],"1576":[1,6,71],"1577":[1,6,107],"1578":[3,4,205],"1579":[3,3,44],"1580":[4,3,15],"1581":[3,2,34],"1582":[3,4,73],"1583":[3,4,21],"1584":[3,4,38],"1585":[3,4,23],"1586":[3,4,32],"1587":[3,4,25],"1588":[3,1,1],"1589":[2,3,52],"1590":[1,3,12],"1591":[2,3,58],"1592":[1,3,1],"1593":[2,4,25],"1594":[3,4,90],"1595":[1,3,1],"1596":[7,4,17],"1597":[1,11,10],"1598":[4,4,10],"1599":[4,4,13],"1600":[7,4,15],"1601":[1,11,10],"1602":[4,4,5],"1603":[9,4,9],"1604":[1,13,20],"1605":[6,4,31],"1606":[1,10,7],"1607":[7,4,9],"1608":[1,11,8],"1609":[8,4,22],"1610":[1,12,13],"1611":[9,4,5],"1612":[1,13,34],"1613":[11,4,20],"1614":[1,15,36],"1615":[5,4,12],"1616":[2,9,7],"1617":[9,4,7],"1618":[1,13,18],"1619":[7,4,7],"1620":[1,11,13],"1621":[2,11,20],"1622":[6,4,24],"1623":[1,10,7],"1624":[6,4,18],"1625":[1,10,9],"1626":[8,4,13],"1627":[1,12,11],"1628":[8,4,17],"1629":[1,12,11],"1630":[2,1,58],"1631":[1,2,27],"1632":[1,2,14],"1633":[1,2,66],"1634":[1,1,60],"1635":[1,1,48],"1636":[1,1,73],"1637":[1,2,103],"1638":[2,3,62],"1639":[1,1,41],"1640":[1,1,1],"1641":[3,2,6],"1642":[1,5,44],"1643":[4,2,5],"1644":[1,6,24],"1645":[4,2,14],"1646":[7,2,10],"1647":[1,9,13],"1648":[7,2,10],"1649":[1,9,13],"1650":[7,2,10],"1651":[1,9,7],"1652":[2,9,14],"1653":[9,2,7],"1654":[1,11,11],"1655":[2,1,99],"1656":[13,2,30],"1657":[1,2,46],"1658":[3,2,34],"1659":[7,3,40],"1660":[8,3,14],"1661":[12,3,20],"1662":[13,3,37],"1663":[2,2,42],"1664":[3,2,1],"1665":[5,5,109],"1666":[5,5,80],"1667":[2,2,1],"1668":[4,4,107],"1669":[1,2,18],"1670":[5,2,192],"1671":[5,2,76],"1672":[5,2,36],"1673":[1,11,92],"1674":[1,11,87],"1675":[3,11,135],"1676":[3,2,95],"1677":[7,2,165],"1678":[8,1,33],"1679":[1,8,18],"1680":[1,8,72],"1681":[2,8,1],"1682":[1,10,39],"1683":[3,10,94],"1684":[3,10,101],"1685":[3,10,62],"1686":[1,8,82],"1687":[1,8,11],"1688":[1,8,1],"1689":[5,9,9],"1690":[5,9,9],"1691":[4,9,9],"1692":[4,9,5],"1693":[6,9,7],"1694":[8,9,18],"1695":[1,17,7],"1696":[2,17,11],"1697":[7,9,22],"1698":[6,9,6],"1699":[9,9,8],"1700":[1,18,8],"1701":[2,18,7],"1702":[10,9,8],"1703":[1,19,11],"1704":[2,19,7],"1705":[11,9,8],"1706":[1,20,13],"1707":[2,20,7],"1708":[12,9,8],"1709":[1,21,15],"1710":[2,21,7],"1711":[13,9,8],"1712":[1,22,17],"1713":[2,22,7],"1714":[2,1,80],"1715":[2,2,63],"1716":[3,2,63],"1717":[6,4,67],"1718":[6,4,54],"1719":[4,2,37],"1720":[4,2,32],"1721":[4,2,14],"1722":[2,5,53],"1723":[3,1,35],"1724":[2,3,66],"1725":[2,3,173],"1726":[1,3,44],"1727":[1,3,42],"1728":[3,3,132],"1729":[4,3,157],"1730":[4,3,109],"1731":[2,3,25],"1732":[1,3,1],"1733":[1,4,85],"1734":[1,3,1],"1735":[5,4,7],"1736":[6,4,14],"1737":[5,4,5],"1738":[6,4,12],"1739":[5,4,5],"1740":[6,4,12],"1741":[7,4,9],"1742":[2,11,7],"1743":[10,4,32],"1744":[1,14,16],"1745":[10,4,31],"1746":[1,14,9],"1747":[7,4,6],"1748":[1,11,8],"1749":[8,4,13],"1750":[1,12,8],"1751":[5,4,7],"1752":[6,4,13],"1753":[6,4,7],"1754":[7,4,13],"1755":[8,4,6],"1756":[2,12,8],"1757":[5,4,6],"1758":[7,4,13],"1759":[6,4,6],"1760":[7,4,13],"1761":[8,4,7],"1762":[2,12,9],"1763":[6,4,5],"1764":[7,4,12],"1765":[6,4,5],"1766":[7,4,12],"1767":[8,4,5],"1768":[1,12,11],"1769":[9,4,12],"1770":[1,13,11],"1771":[8,4,6],"1772":[2,12,9],"1773":[7,4,11],"1774":[8,4,9],"1775":[2,12,11],"1776":[7,4,18],"1777":[2,11,3],"1778":[7,4,18],"1779":[2,11,9],"1780":[11,4,18],"1781":[1,4,16],"1782":[2,5,3],"1783":[11,4,18],"1784":[1,4,16],"1785":[2,5,9],"1786":[1,1,1],"1787":[1,1,58],"1788":[1,2,17],"1789":[2,2,15],"1790":[2,2,15],"1791":[5,3,80],"1792":[13,3,66],"1793":[1,2,282],"1794":[1,2,50],"1795":[1,2,1],"1796":[2,3,7],"1797":[3,3,10],"1798":[2,1,31],"1799":[6,2,18],"1800":[3,7,19],"1801":[3,7,65],"1802":[3,2,97],"1803":[2,4,139],"1804":[2,4,154],"1805":[2,4,131],"1806":[2,4,78],"1807":[2,4,173],"1808":[4,4,66],"1809":[8,2,22],"1810":[2,1,1],"1811":[2,2,45],"1812":[1,2,27],"1813":[2,2,97],"1814":[2,2,135],"1815":[3,2,127],"1816":[2,2,112],"1817":[2,2,158],"1818":[2,4,14],"1819":[2,4,40],"1820":[6,2,151],"1821":[6,7,203],"1822":[2,2,280],"1823":[5,2,29],"1824":[2,1,54],"1825":[1,2,80],"1826":[1,2,56],"1827":[3,2,52],"1828":[4,2,38],"1829":[2,2,31],"1830":[1,2,107],"1831":[1,2,8],"1832":[2,1,81],"1833":[1,2,13],"1834":[1,2,42],"1835":[1,2,1],"1836":[5,3,6],"1837":[8,3,7],"1838":[1,11,13],"1839":[8,3,7],"1840":[1,11,13],"1841":[8,3,10],"1842":[1,11,13],"1843":[8,3,10],"1844":[1,11,13],"1845":[9,3,7],"1846":[1,12,13],"1847":[2,12,7],"1848":[5,3,8],"1849":[8,3,6],"1850":[2,11,7],"1851":[8,3,6],"1852":[1,11,10],"1853":[2,1,72],"1854":[2,2,38],"1855":[3,4,60],"1856":[3,4,80],"1857":[2,4,210],"1858":[3,4,36],"1859":[2,7,82],"1860":[2,7,88],"1861":[2,7,18],"1862":[2,4,45],"1863":[2,6,194],"1864":[3,6,36],"1865":[3,6,68],"1866":[3,6,73],"1867":[3,4,62],"1868":[2,4,79],"1869":[2,4,68],"1870":[5,4,210],"1871":[2,4,75],"1872":[2,2,166],"1873":[3,2,93],"1874":[3,2,85],"1875":[5,2,84],"1876":[3,1,133],"1877":[1,3,1],"1878":[3,4,73],"1879":[4,4,71],"1880":[3,4,147],"1881":[2,3,22],"1882":[3,5,64],"1883":[3,5,55],"1884":[1,1,51],"1885":[3,1,131],"1886":[9,3,70],"1887":[4,3,70],"1888":[4,3,24],"1889":[4,7,73],"1890":[3,7,26],"1891":[11,9,20],"1892":[10,18,52],"1893":[2,3,19],"1894":[10,5,118],"1895":[7,5,69],"1896":[3,5,1],"1897":[7,6,93],"1898":[10,6,69],"1899":[8,5,89],"1900":[4,3,104],"1901":[7,3,64],"1902":[4,1,67],"1903":[6,4,26],"1904":[2,4,46],"1905":[5,6,61],"1906":[5,6,53],"1907":[2,6,104],"1908":[3,6,82],"1909":[2,4,1],"1910":[4,6,88],"1911":[2,6,38],"1912":[2,6,104],"1913":[3,6,20],"1914":[5,6,23],"1915":[3,6,47],"1916":[2,6,20],"1917":[2,6,37],"1918":[2,1,67],"1919":[1,2,12],"1920":[2,2,39],"1921":[5,2,186],"1922":[5,2,48],"1923":[2,2,134],"1924":[1,2,1],"1925":[9,3,14],"1926":[1,12,17],"1927":[9,3,5],"1928":[1,12,19],"1929":[2,1,73],"1930":[6,2,33],"1931":[1,2,18],"1932":[2,2,176],"1933":[3,2,108],"1934":[2,5,86],"1935":[2,5,87],"1936":[5,2,56],"1937":[3,7,62],"1938":[3,7,74],"1939":[2,7,70],"1940":[6,2,102],"1941":[7,2,90],"1942":[1,2,34],"1943":[4,2,116],"1944":[3,1,36],"1945":[2,3,71],"1946":[2,3,174],"1947":[1,3,47],"1948":[1,3,172],"1949":[3,3,237],"1950":[5,4,119],"1951":[5,4,50],"1952":[4,3,160],"1953":[1,3,48],"1954":[4,3,152],"1955":[2,3,25],"1956":[1,3,1],"1957":[1,4,97],"1958":[2,4,100],"1959":[1,6,128],"1960":[5,6,49],"1961":[1,3,1],"1962":[5,4,7],"1963":[6,4,14],"1964":[5,4,5],"1965":[6,4,12],"1966":[5,4,5],"1967":[6,4,12],"1968":[7,4,9],"1969":[2,11,7],"1970":[12,4,32],"1971":[1,16,21],"1972":[12,4,31],"1973":[1,16,13],"1974":[7,4,6],"1975":[1,11,8],"1976":[8,4,13],"1977":[1,12,8],"1978":[5,4,7],"1979":[6,4,13],"1980":[6,4,7],"1981":[7,4,13],"1982":[8,4,6],"1983":[2,12,8],"1984":[6,4,6],"1985":[7,4,13],"1986":[6,4,6],"1987":[7,4,13],"1988":[8,4,7],"1989":[2,12,9],"1990":[6,4,6],"1991":[7,4,13],"1992":[6,4,6],"1993":[7,4,13],"1994":[8,4,7],"1995":[2,12,9],"1996":[6,4,7],"1997":[7,4,14],"1998":[6,4,7],"1999":[7,4,14],"2000":[8,4,8],"2001":[2,12,9],"2002":[6,4,5],"2003":[7,4,12],"2004":[6,4,5],"2005":[7,4,12],"2006":[8,4,5],"2007":[1,12,11],"2008":[9,4,12],"2009":[1,13,11],"2010":[8,4,6],"2011":[2,12,9],"2012":[10,4,10],"2013":[1,4,16],"2014":[11,4,17],"2015":[1,15,16],"2016":[7,4,11],"2017":[2,11,8],"2018":[7,4,11],"2019":[8,4,9],"2020":[2,12,11],"2021":[7,4,18],"2022":[2,11,3],"2023":[7,4,18],"2024":[2,11,9],"2025":[12,4,18],"2026":[1,4,16],"2027":[2,5,3],"2028":[12,4,18],"2029":[1,4,16],"2030":[2,5,9],"2031":[2,1,104],"2032":[1,2,109],"2033":[2,3,37],"2034":[1,2,165],"2035":[1,2,93],"2036":[3,2,99],"2037":[4,5,73],"2038":[4,5,106],"2039":[6,5,31],"2040":[2,5,91],"2041":[2,2,72],"2042":[3,3,167],"2043":[5,3,42],"2044":[3,3,162],"2045":[6,3,37],"2046":[2,3,34],"2047":[1,2,36],"2048":[3,3,19],"2049":[4,3,1],"2050":[3,6,12],"2051":[2,6,75],"2052":[3,6,35],"2053":[4,6,25],"2054":[4,6,43],"2055":[2,6,24],"2056":[2,6,23],"2057":[1,6,17],"2058":[1,2,56],"2059":[5,2,50],"2060":[2,2,65],"2061":[2,2,52],"2062":[1,2,27],"2063":[1,3,90],"2064":[1,3,37],"2065":[1,1,34],"2066":[2,1,34],"2067":[2,1,32],"2068":[1,1,12],"2069":[1,1,34],"2070":[1,1,35],"2071":[1,1,37],"2072":[2,1,52],"2073":[1,2,32],"2074":[2,2,42],"2075":[1,2,89],"2076":[2,3,31],"2077":[1,2,1],"2078":[2,3,42],"2079":[2,3,34],"2080":[1,2,1],"2081":[6,3,16],"2082":[1,9,8],"2083":[11,3,13],"2084":[1,14,22],"2085":[7,3,23],"2086":[1,10,8],"2087":[12,3,26],"2088":[1,15,22],"2089":[6,3,6],"2090":[1,9,8],"2091":[7,3,22],"2092":[1,10,14],"2093":[7,3,22],"2094":[1,10,12],"2095":[7,3,21],"2096":[1,10,11],"2097":[7,3,16],"2098":[1,10,11],"2099":[5,3,15],"2100":[4,3,18],"2101":[6,3,18],"2102":[6,1,43],"2103":[1,6,32],"2104":[1,6,33],"2105":[1,6,43],"2106":[1,6,125],"2107":[2,6,104],"2108":[1,1,45],"2109":[4,1,33],"2110":[1,1,25],"2111":[1,1,47],"2112":[1,1,54],"2113":[1,1,58],"2114":[2,1,115],"2115":[2,2,21],"2116":[2,2,19],"2117":[2,4,49],"2118":[1,5,107],"2119":[2,4,42],"2120":[2,4,70],"2121":[2,2,31],"2122":[2,4,54],"2123":[2,4,29],"2124":[3,6,58],"2125":[4,6,128],"2126":[3,6,169],"2127":[3,6,46],"2128":[2,4,179],"2129":[3,4,145],"2130":[5,4,193],"2131":[3,4,208],"2132":[4,2,54],"2133":[2,6,87],"2134":[2,2,51],"2135":[3,1,1],"2136":[2,3,35],"2137":[1,3,89],"2138":[2,3,100],"2139":[3,3,125],"2140":[2,3,77],"2141":[2,3,101],"2142":[3,3,60],"2143":[1,3,191],"2144":[3,1,79],"2145":[4,3,105],"2146":[4,3,108],"2147":[2,7,123],"2148":[1,7,131],"2149":[5,7,118],"2150":[4,3,169],"2151":[2,3,12],"2152":[4,3,196],"2153":[2,3,153],"2154":[3,1,60],"2155":[1,3,70],"2156":[2,3,63],"2157":[2,3,72],"2158":[1,5,22],"2159":[13,1,1],"2160":[1,13,67],"2161":[5,13,240],"2162":[2,13,198],"2163":[1,13,1],"2164":[10,14,62],"2165":[2,14,33],"2166":[9,15,27],"2167":[12,15,75],"2168":[6,15,105],"2169":[7,15,335],"2170":[11,15,167],"2171":[12,15,233],"2172":[2,1,89],"2173":[1,2,25],"2174":[1,2,47],"2175":[1,2,38],"2176":[1,1,17],"2177":[1,1,55],"2178":[1,1,47],"2179":[2,1,67],"2180":[2,3,45],"2181":[2,1,148],"2182":[5,5,197],"2183":[2,1,246],"2184":[1,1,64],"2185":[1,1,1],"2186":[8,2,7],"2187":[2,10,7],"2188":[8,2,6],"2189":[1,10,8],"2190":[6,2,8],"2191":[7,2,8],"2192":[9,2,11],"2193":[1,11,7],"2194":[9,2,11],"2195":[1,11,7],"2196":[5,2,48],"2197":[5,2,40],"2198":[5,2,40],"2199":[8,2,18],"2200":[1,10,11],"2201":[8,2,7],"2202":[1,10,8],"2203":[7,2,16],"2204":[1,9,12],"2205":[2,9,8],"2206":[9,2,12],"2207":[1,11,10],"2208":[2,11,6],"2209":[7,2,12],"2210":[1,9,10],"2211":[4,2,5],"2212":[5,2,6],"2213":[2,7,6],"2214":[6,2,10],"2215":[2,8,7],"2216":[7,2,9],"2217":[1,9,17],"2218":[2,9,7],"2219":[6,2,9],"2220":[2,8,8],"2221":[4,2,11],"2222":[4,2,5],"2223":[4,2,10],"2224":[1,6,10],"2225":[5,1,49],"2226":[1,5,137],"2227":[2,5,20],"2228":[1,5,115],"2229":[5,1,89],"2230":[2,5,129],"2231":[2,7,108],"2232":[2,7,37],"2233":[1,5,120],"2234":[2,6,57],"2235":[1,5,132],"2236":[1,5,101],"2237":[1,5,110],"2238":[2,6,183],"2239":[2,6,18],"2240":[3,5,135],"2241":[2,8,55],"2242":[1,5,115],"2243":[2,5,101],"2244":[2,5,98],"2245":[1,5,107],"2246":[2,6,21],"2247":[1,5,104],"2248":[2,6,21],"2249":[4,5,116],"2250":[3,1,52],"2251":[1,3,14],"2252":[1,3,129],"2253":[1,3,1],"2254":[8,4,47],"2255":[6,1,232],"2256":[1,1,34],"2257":[3,1,32],"2258":[2,4,28],"2259":[3,4,95],"2260":[2,4,54],"2261":[4,1,70],"2262":[4,1,263],"2263":[3,4,338],"2264":[8,4,45],"2265":[3,1,1],"2266":[2,3,64],"2267":[3,3,72],"2268":[3,3,129],"2269":[3,6,69],"2270":[3,3,142],"2271":[5,5,36],"2272":[1,5,183],"2273":[3,6,184],"2274":[3,6,150],"2275":[4,3,75],"2276":[7,6,127],"2277":[6,3,132],"2278":[3,3,46],"2279":[3,3,180],"2280":[2,3,98],"2281":[4,3,37],"2282":[2,1,40],"2283":[12,2,6],"2284":[3,1,51],"2285":[2,1,1],"2286":[4,2,41],"2287":[3,2,15],"2288":[1,2,18],"2289":[1,2,35],"2290":[1,2,30],"2291":[5,2,24],"2292":[3,1,43],"2293":[3,3,47],"2294":[4,3,55],"2295":[2,3,85],"2296":[3,3,35],"2297":[2,5,39],"2298":[2,5,32],"2299":[2,5,139],"2300":[2,5,129],"2301":[6,5,59],"2302":[6,5,107],"2303":[3,3,80],"2304":[2,3,40],"2305":[4,4,125],"2306":[3,3,64],"2307":[4,3,45],"2308":[3,3,34],"2309":[2,3,82],"2310":[1,3,37],"2311":[5,1,267],"2312":[8,1,30],"2313":[2,8,41],"2314":[5,8,47],"2315":[5,8,57],"2316":[7,8,35],"2317":[6,8,48],"2318":[4,8,44],"2319":[6,8,77],"2320":[6,8,54],"2321":[4,1,1],"2322":[5,4,45],"2323":[2,4,22],"2324":[3,4,27],"2325":[3,4,15],"2326":[2,4,54],"2327":[3,1,92],"2328":[1,3,76],"2329":[4,4,33],"2330":[1,7,34],"2331":[5,4,37],"2332":[1,8,40],"2333":[5,4,32],"2334":[1,8,29],"2335":[3,4,62],"2336":[1,7,10],"2337":[1,4,10],"2338":[1,5,10],"2339":[2,4,34],"2340":[1,6,13],"2341":[1,3,49],"2342":[2,3,48],"2343":[2,5,53],"2344":[1,5,111],"2345":[3,5,32],"2346":[1,5,80],"2347":[3,3,195],"2348":[3,5,142],"2349":[5,3,79],"2350":[3,3,63],"2351":[1,5,73],"2352":[1,5,32],"2353":[1,5,212],"2354":[2,1,37],"2355":[2,2,507],"2356":[2,2,56],"2357":[2,2,54],"2358":[2,2,39],"2359":[1,2,22],"2360":[1,2,37],"2361":[1,2,19],"2362":[2,2,15],"2363":[2,2,35],"2364":[2,2,20],"2365":[1,2,44],"2366":[2,2,17],"2367":[2,2,82],"2368":[2,2,12],"2369":[2,2,44],"2370":[2,2,97],"2371":[1,2,284],"2372":[2,2,55],"2373":[1,2,54],"2374":[3,2,66],"2375":[3,2,31],"2376":[2,2,97],"2377":[3,2,54],"2378":[4,2,63],"2379":[3,2,33],"2380":[3,2,45],"2381":[2,2,21],"2382":[2,2,37],"2383":[2,2,43],"2384":[2,2,67],"2385":[2,1,31],"2386":[3,2,70],"2387":[2,2,28],"2388":[1,2,58],"2389":[2,2,26],"2390":[1,2,37],"2391":[1,2,50],"2392":[1,2,118],"2393":[2,2,146],"2394":[2,2,62],"2395":[2,2,34],"2396":[2,1,120],"2397":[4,1,41],"2398":[1,4,68],"2399":[1,4,57],"2400":[2,1,35],"2401":[3,2,99],"2402":[3,4,104],"2403":[4,4,79],"2404":[5,2,53],"2405":[1,7,121],"2406":[3,7,100],"2407":[2,10,154],"2408":[3,10,101],"2409":[3,1,44],"2410":[2,1,134],"2411":[1,2,162],"2412":[3,2,1],"2413":[3,4,77],"2414":[3,4,75],"2415":[5,4,49],"2416":[2,2,14],"2417":[3,1,113],"2418":[1,3,81],"2419":[2,3,26],"2420":[4,1,44],"2421":[7,4,83],"2422":[4,4,72],"2423":[8,4,92],"2424":[6,4,85],"2425":[3,4,91],"2426":[3,4,13],"2427":[2,1,95],"2428":[5,1,72],"2429":[1,5,61],"2430":[2,5,29],"2431":[3,7,89],"2432":[3,7,29],"2433":[4,7,29],"2434":[3,5,1],"2435":[3,8,59],"2436":[4,8,64],"2437":[5,8,111],"2438":[4,8,77],"2439":[3,8,64],"2440":[3,5,84],"2441":[3,1,126],"2442":[4,3,56],"2443":[8,3,59],"2444":[7,3,39],"2445":[3,3,99],"2446":[8,3,69],"2447":[5,3,39],"2448":[3,3,59],"2449":[3,1,16],"2450":[7,3,173],"2451":[6,3,47],"2452":[6,6,86],"2453":[3,6,69],"2454":[7,3,124],"2455":[4,3,80],"2456":[5,1,31],"2457":[2,5,79],"2458":[5,5,48],"2459":[1,8,35],"2460":[1,8,58],"2461":[1,8,34],"2462":[1,8,44],"2463":[1,8,52],"2464":[1,8,60],"2465":[1,8,13],"2466":[2,8,63],"2467":[1,8,33],"2468":[4,5,132],"2469":[5,5,92],"2470":[3,1,19],"2471":[7,1,1],"2472":[12,7,79],"2473":[3,1,66],"2474":[3,3,227],"2475":[7,1,70],"2476":[11,7,42],"2477":[3,7,128],"2478":[8,1,67],"2479":[4,8,124],"2480":[2,8,153],"2481":[3,8,25],"2482":[2,1,20],"2483":[2,2,25],"2484":[3,2,14],"2485":[3,2,22],"2486":[2,2,13],"2487":[3,1,1],"2488":[1,3,3],"2489":[1,3,3],"2490":[3,1,195],"2491":[1,3,139],"2492":[6,1,90],"2493":[1,1,1],"2494":[2,1,24],"2495":[1,1,34],"2496":[5,1,37],"2497":[5,5,82],"2498":[2,5,77],"2499":[4,5,19],"2500":[4,1,1],"2501":[3,4,80],"2502":[3,4,82],"2503":[8,1,79],"2504":[4,1,33],"2505":[1,4,1],"2506":[1,5,104],"2507":[3,5,28],"2508":[2,6,141],"2509":[4,4,37],"2510":[1,4,86],"2511":[5,1,18],"2512":[3,5,80],"2513":[7,1,291],"2514":[4,1,56],"2515":[3,4,39],"2516":[2,6,47],"2517":[4,6,56],"2518":[2,6,65],"2519":[2,6,66],"2520":[2,4,1],"2521":[2,5,40],"2522":[3,5,37],"2523":[4,1,96],"2524":[5,4,162],"2525":[5,4,93],"2526":[3,4,67],"2527":[2,1,16],"2528":[1,2,43],"2529":[1,2,65],"2530":[2,2,165],"2531":[3,1,33],"2532":[1,3,12],"2533":[2,4,73],"2534":[2,4,57],"2535":[5,3,39],"2536":[2,8,23],"2537":[2,8,23],"2538":[2,8,15],"2539":[6,3,89],"2540":[4,3,25],"2541":[4,6,110],"2542":[3,6,54],"2543":[3,3,78],"2544":[5,3,79],"2545":[3,3,57],"2546":[4,1,115],"2547":[5,4,1],"2548":[2,7,121],"2549":[3,7,66],"2550":[11,4,84],"2551":[7,4,34],"2552":[7,4,53],"2553":[5,1,148],"2554":[2,5,38],"2555":[2,5,43],"2556":[2,7,98],"2557":[2,7,65],"2558":[3,9,67],"2559":[2,7,63],"2560":[2,5,40],"2561":[2,7,16],"2562":[2,7,17],"2563":[2,1,44],"2564":[4,2,253],"2565":[2,2,101],"2566":[2,2,597],"2567":[2,2,194],"2568":[1,2,108],"2569":[2,2,102],"2570":[3,2,93],"2571":[2,1,91],"2572":[2,2,65],"2573":[2,1,154],"2574":[3,2,166],"2575":[4,2,240],"2576":[4,2,334],"2577":[4,2,517],"2578":[4,1,76],"2579":[2,4,31],"2580":[4,4,1],"2581":[4,5,71],"2582":[4,5,19],"2583":[4,4,13],"2584":[5,4,90],"2585":[3,1,98],"2586":[2,3,18],"2587":[3,3,130],"2588":[3,3,67],"2589":[3,3,58],"2590":[3,3,37],"2591":[3,3,27],"2592":[3,1,108],"2593":[2,3,68],"2594":[3,3,86],"2595":[3,3,70],"2596":[3,3,146],"2597":[3,3,72],"2598":[3,3,51],"2599":[3,3,42],"2600":[6,1,57],"2601":[10,1,39],"2602":[4,10,16],"2603":[7,13,51],"2604":[1,20,26],"2605":[8,13,76],"2606":[1,21,36],"2607":[5,10,78],"2608":[3,10,38],"2609":[3,10,14],"2610":[6,10,53],"2611":[3,10,60],"2612":[2,10,37],"2613":[6,1,13],"2614":[5,6,188],"2615":[4,6,190],"2616":[5,6,82],"2617":[3,6,50],"2618":[1,9,1],"2619":[3,10,40],"2620":[3,10,43],"2621":[4,1,1],"2622":[1,4,21],"2623":[1,4,18],"2624":[1,4,14],"2625":[1,4,27],"2626":[1,4,13],"2627":[1,4,23],"2628":[1,4,22],"2629":[1,4,16],"2630":[1,4,10],"2631":[1,4,14],"2632":[1,4,20],"2633":[2,4,23],"2634":[1,4,13],"2635":[1,4,7],"2636":[1,4,8],"2637":[1,4,23],"2638":[1,4,17],"2639":[2,4,22],"2640":[1,4,21],"2641":[2,4,15],"2642":[2,4,10],"2643":[1,4,19],"2644":[1,4,17],"2645":[2,4,29],"2646":[1,4,14],"2647":[1,4,21],"2648":[1,4,28],"2649":[1,4,21],"2650":[1,4,9],"2651":[1,4,21],"2652":[1,4,16],"2653":[5,4,17],"2654":[2,4,34],"2655":[1,4,28],"2656":[2,4,18],"2657":[1,4,21],"2658":[1,4,14],"2659":[1,4,18],"2660":[1,4,30],"2661":[3,4,28],"2662":[1,4,24],"2663":[2,4,23],"2664":[1,4,34],"2665":[1,4,25],"2666":[1,4,34],"2667":[2,4,24],"2668":[1,4,12],"2669":[5,4,13],"2670":[10,1,23],"2671":[3,1,102],"2672":[2,3,80],"2673":[2,3,42],"2674":[2,3,91],"2675":[1,3,33],"2676":[1,3,60],"2677":[1,3,77],"2678":[1,3,18],"2679":[1,3,28],"2680":[2,3,48],"2681":[1,3,19],"2682":[2,3,30],"2683":[1,3,49],"2684":[1,3,34],"2685":[1,3,34],"2686":[1,3,161],"2687":[2,3,41],"2688":[2,3,150],"2689":[1,3,90],"2690":[2,3,19],"2691":[2,3,26],"2692":[2,3,35],"2693":[3,3,36],"2694":[1,3,106],"2695":[2,3,163],"2696":[1,3,46],"2697":[2,3,127],"2698":[1,3,23],"2699":[1,3,98],"2700":[1,3,47],"2701":[6,1,52],"2702":[3,6,174],"2703":[3,6,75],"2704":[2,6,51],"2705":[1,6,54],"2706":[2,6,62],"2707":[2,6,62],"2708":[2,6,131],"2709":[2,1,71],"2710":[3,1,111],"2711":[2,3,122],"2712":[2,3,158],"2713":[2,1,23],"2714":[2,2,34],"2715":[2,2,11],"2716":[2,2,21],"2717":[3,1,1],"2718":[2,3,77],"2719":[4,3,129],"2720":[8,7,80],"2721":[6,7,39],"2722":[2,1,26],"2723":[2,1,70],"2724":[2,1,67],"2725":[2,1,71],"2726":[4,1,37],"2727":[2,4,105],"2728":[3,6,284],"2729":[5,4,101],"2730":[1,7,57],"2731":[4,8,31],"2732":[4,8,30],"2733":[4,8,28],"2734":[2,7,66],"2735":[2,7,184],"2736":[5,7,136],"2737":[3,4,142],"2738":[2,4,216],"2739":[2,6,42],"2740":[11,4,81],"2741":[9,4,32],"2742":[4,1,45],"2743":[1,4,108],"2744":[3,4,76],"2745":[2,7,98],"2746":[5,9,134],"2747":[2,9,74],"2748":[3,9,85],"2749":[2,9,146],"2750":[2,1,95],"2751":[4,2,39],"2752":[3,2,78],"2753":[7,2,145],"2754":[3,2,58],"2755":[3,2,45],"2756":[3,2,53],"2757":[2,1,181]},"averageFieldLength":[3.6276287164612038,4.963741841914429,52.99564902102971],"storedFields":{"0":{"title":"QMK Breaking Change - 2019 Aug 30","titles":[]},"1":{"title":"Core code formatting with clang-format","titles":["QMK Breaking Change - 2019 Aug 30"]},"2":{"title":"LUFA USB descriptor cleanup","titles":["QMK Breaking Change - 2019 Aug 30"]},"3":{"title":"Migrating ACTION_LAYER_MOMENTARY() entries in fn_actions to MO() keycodes","titles":["QMK Breaking Change - 2019 Aug 30"]},"4":{"title":"Update Atreus to current code conventions","titles":["QMK Breaking Change - 2019 Aug 30"]},"5":{"title":"Backport changes to keymap language files from ZSA fork","titles":["QMK Breaking Change - 2019 Aug 30"]},"6":{"title":"Update repo to use LUFA as a git submodule","titles":["QMK Breaking Change - 2019 Aug 30"]},"7":{"title":"Migrating ACTION_BACKLIGHT_*() entries in fn_actions to BL_ keycodes","titles":["QMK Breaking Change - 2019 Aug 30"]},"8":{"title":"Remove KC_DELT alias in favor of KC_DEL","titles":["QMK Breaking Change - 2019 Aug 30"]},"9":{"title":"QMK Breaking Change - 2020 Feb 29 Changelog","titles":[]},"10":{"title":"Update ChibiOS/ChibiOS-Contrib/uGFX submodules","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"11":{"title":"Fix ChibiOS timer overflow for 16-bit SysTick devices","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"12":{"title":"Update LUFA submodule","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"13":{"title":"Encoder flip","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"14":{"title":"Adding support for BACKLIGHT_ON_STATE for hardware PWM backlight","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"15":{"title":"Migrating ACTION_LAYER_TAP_KEY() entries in fn_actions to LT() keycodes","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"16":{"title":"Moving backlight keycode handling to process_keycode/","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"17":{"title":"Refactor Planck keymaps to use Layout Macros","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"18":{"title":"GON NerD codebase refactor","titles":["QMK Breaking Change - 2020 Feb 29 Changelog"]},"19":{"title":"QMK Breaking Change - 2020 May 30 Changelog","titles":[]},"20":{"title":"Core Changes","titles":["QMK Breaking Change - 2020 May 30 Changelog"]},"21":{"title":"Converting V-USB usbdrv to a submodule","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"22":{"title":"Unify Tap Hold functions and documentation","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"23":{"title":"Python Required In The Build Process","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"24":{"title":"Upgrade from tinyprintf to mpaland/printf","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"25":{"title":"Fixed RGB_DISABLE_AFTER_TIMEOUT to be seconds based & small internals cleanup","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"26":{"title":"Switch to qmk forks for everything","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"27":{"title":"code cleanup regarding deprecated macro PLAY_NOTE_ARRAY by replacing it with PLAY_SONG","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"28":{"title":"fixing wrong configuration of AUDIO feature","titles":["QMK Breaking Change - 2020 May 30 Changelog","Core Changes"]},"29":{"title":"Keyboard Refactors","titles":["QMK Breaking Change - 2020 May 30 Changelog"]},"30":{"title":"Migrating Lily58 to use split_common","titles":["QMK Breaking Change - 2020 May 30 Changelog","Keyboard Refactors"]},"31":{"title":"To migrate existing Lily58 firmware:","titles":["QMK Breaking Change - 2020 May 30 Changelog","Keyboard Refactors","Migrating Lily58 to use split_common"]},"32":{"title":"Refactor zinc to use split_common","titles":["QMK Breaking Change - 2020 May 30 Changelog","Keyboard Refactors"]},"33":{"title":"Refactor of TKC1800 to use common OLED code","titles":["QMK Breaking Change - 2020 May 30 Changelog","Keyboard Refactors"]},"34":{"title":"To migrate existing TKC1800 firmware:","titles":["QMK Breaking Change - 2020 May 30 Changelog","Keyboard Refactors","Refactor of TKC1800 to use common OLED code"]},"35":{"title":"Split HHKB to ANSI and JP layouts and Add VIA support for each","titles":["QMK Breaking Change - 2020 May 30 Changelog","Keyboard Refactors"]},"36":{"title":"Migrating existing HHKB keymaps","titles":["QMK Breaking Change - 2020 May 30 Changelog","Keyboard Refactors","Split HHKB to ANSI and JP layouts and Add VIA support for each"]},"37":{"title":"Keyboard Moves","titles":["QMK Breaking Change - 2020 May 30 Changelog"]},"38":{"title":"Keycode Migration PRs","titles":["QMK Breaking Change - 2020 May 30 Changelog"]},"39":{"title":"QMK Breaking Change - 2020 Aug 29 Changelog","titles":[]},"40":{"title":"Changes Requiring User Action","titles":["QMK Breaking Change - 2020 Aug 29 Changelog"]},"41":{"title":"Relocated Keyboards","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Changes Requiring User Action"]},"42":{"title":"The Key Company project consolidation (","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Changes Requiring User Action","Relocated Keyboards"]},"43":{"title":"relocating boards by flehrad to flehrad/ folder (","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Changes Requiring User Action","Relocated Keyboards"]},"44":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Changes Requiring User Action"]},"45":{"title":"Keebio RGB wiring update (","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Changes Requiring User Action","Updated Keyboard Codebases"]},"46":{"title":"Changes to Core Functionality","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Changes Requiring User Action"]},"47":{"title":"Core Changes","titles":["QMK Breaking Change - 2020 Aug 29 Changelog"]},"48":{"title":"Fixes","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Core Changes"]},"49":{"title":"Additions and Enhancements","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Core Changes"]},"50":{"title":"Clean-ups and Optimizations","titles":["QMK Breaking Change - 2020 Aug 29 Changelog","Core Changes"]},"51":{"title":"QMK Infrastructure and Internals","titles":["QMK Breaking Change - 2020 Aug 29 Changelog"]},"52":{"title":"QMK Breaking Change - 2020 Nov 28 Changelog","titles":[]},"53":{"title":"Changes Requiring User Action","titles":["QMK Breaking Change - 2020 Nov 28 Changelog"]},"54":{"title":"Relocated Keyboards","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Changes Requiring User Action"]},"55":{"title":"Reduce Helix keyboard build variation (","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Changes Requiring User Action","Relocated Keyboards"]},"56":{"title":"Update the Speedo firmware for v3.0 (","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Changes Requiring User Action","Relocated Keyboards"]},"57":{"title":"Maartenwut/Maarten name change to evyd13/Evy (","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Changes Requiring User Action","Relocated Keyboards"]},"58":{"title":"Xelus Valor and Dawn60 Refactors (","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Changes Requiring User Action","Relocated Keyboards"]},"59":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Changes Requiring User Action"]},"60":{"title":"AEboards EXT65 Refactor (","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Changes Requiring User Action","Updated Keyboard Codebases"]},"61":{"title":"Core Changes","titles":["QMK Breaking Change - 2020 Nov 28 Changelog"]},"62":{"title":"Fixes","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Core Changes"]},"63":{"title":"Additions and Enhancements","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Core Changes"]},"64":{"title":"Clean-ups and Optimizations","titles":["QMK Breaking Change - 2020 Nov 28 Changelog","Core Changes"]},"65":{"title":"QMK Infrastructure and Internals","titles":["QMK Breaking Change - 2020 Nov 28 Changelog"]},"66":{"title":"QMK Breaking Changes - 2021 February 27 Changelog","titles":[]},"67":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2021 February 27 Changelog"]},"68":{"title":"Core Changes","titles":["QMK Breaking Changes - 2021 February 27 Changelog"]},"69":{"title":"ChibiOS Update and Config Migration","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Core Changes"]},"70":{"title":"QMK Infrastructure and Internals","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Core Changes"]},"71":{"title":"Detailed Change List","titles":["QMK Breaking Changes - 2021 February 27 Changelog"]},"72":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Detailed Change List"]},"73":{"title":"Fixes","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Detailed Change List"]},"74":{"title":"Additions and Enhancements","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Detailed Change List"]},"75":{"title":"Clean-ups and Optimizations","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Detailed Change List"]},"76":{"title":"QMK Infrastructure and Internals","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Detailed Change List"]},"77":{"title":"ChibiOS Update and Config Migration","titles":["QMK Breaking Changes - 2021 February 27 Changelog","Detailed Change List"]},"78":{"title":"QMK Breaking Changes - 2021 May 29 Changelog","titles":[]},"79":{"title":"Notable Changes","titles":["QMK Breaking Changes - 2021 May 29 Changelog"]},"80":{"title":"RGB Matrix support for split common (","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Notable Changes"]},"81":{"title":"Teensy 3.6 support (","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Notable Changes"]},"82":{"title":"New command: qmk console (","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Notable Changes"]},"83":{"title":"Improved command: qmk config","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Notable Changes"]},"84":{"title":"LED Matrix Improvements (","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Notable Changes"]},"85":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2021 May 29 Changelog"]},"86":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Changes Requiring User Action"]},"87":{"title":"Bootmagic Deprecation and Refactor (","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Changes Requiring User Action"]},"88":{"title":"Tentative Deprecation Schedule","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Changes Requiring User Action","Bootmagic Deprecation and Refactor ("]},"89":{"title":"Removal of LAYOUT_kc (","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Changes Requiring User Action"]},"90":{"title":"Encoder callbacks are now boolean (","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Changes Requiring User Action"]},"91":{"title":"Core Changes","titles":["QMK Breaking Changes - 2021 May 29 Changelog"]},"92":{"title":"Fixes","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Core Changes"]},"93":{"title":"Additions and Enhancements","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Core Changes"]},"94":{"title":"Clean-ups and Optimizations","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Core Changes"]},"95":{"title":"QMK Infrastructure and Internals","titles":["QMK Breaking Changes - 2021 May 29 Changelog","Core Changes"]},"96":{"title":"QMK Breaking Changes - 2021 August 28 Changelog","titles":[]},"97":{"title":"Notable Features","titles":["QMK Breaking Changes - 2021 August 28 Changelog"]},"98":{"title":"Combo processing improvements (","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable Features"]},"99":{"title":"Key Overrides (","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable Features"]},"100":{"title":"Digitizer support (","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable Features"]},"101":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2021 August 28 Changelog"]},"102":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Changes Requiring User Action"]},"103":{"title":"Bootmagic Full Removal (","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Changes Requiring User Action"]},"104":{"title":"Bootmagic Full Deprecation Schedule","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Changes Requiring User Action","Bootmagic Full Removal ("]},"105":{"title":"DIP switch callbacks are now boolean (","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Changes Requiring User Action"]},"106":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2021 August 28 Changelog"]},"107":{"title":"Split transport improvements","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable core changes"]},"108":{"title":"Teensy 4.x support (","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable core changes"]},"109":{"title":"Data Driven Improvements (","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable core changes"]},"110":{"title":"Tags","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable core changes","Data Driven Improvements ("]},"111":{"title":"Dot Notation","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable core changes","Data Driven Improvements ("]},"112":{"title":"New configuration keys","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable core changes","Data Driven Improvements ("]},"113":{"title":"Codebase restructure and cleanup","titles":["QMK Breaking Changes - 2021 August 28 Changelog","Notable core changes"]},"114":{"title":"Full changelist","titles":["QMK Breaking Changes - 2021 August 28 Changelog"]},"115":{"title":"QMK Breaking Changes - 2021 November 27 Changelog","titles":[]},"116":{"title":"2000 keyboards!","titles":["QMK Breaking Changes - 2021 November 27 Changelog"]},"117":{"title":"Notable Features","titles":["QMK Breaking Changes - 2021 November 27 Changelog"]},"118":{"title":"Expanded Pointing Device support (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Notable Features"]},"119":{"title":"Dynamic Tapping Term (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Notable Features"]},"120":{"title":"Macros in JSON keymaps (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Notable Features"]},"121":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2021 November 27 Changelog"]},"122":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Changes Requiring User Action"]},"123":{"title":"Squeezing space out of AVR (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Changes Requiring User Action"]},"124":{"title":"Require explicit enabling of RGB Matrix modes (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Changes Requiring User Action"]},"125":{"title":"OLED task refactoring (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Changes Requiring User Action"]},"126":{"title":"Bootmagic Full Removal (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Changes Requiring User Action"]},"127":{"title":"Bootmagic Full Deprecation Schedule: Complete!","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Changes Requiring User Action","Bootmagic Full Removal ("]},"128":{"title":"Remove QWIIC_DRIVERS (","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Changes Requiring User Action"]},"129":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2021 November 27 Changelog"]},"130":{"title":"New MCU Support","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Notable core changes"]},"131":{"title":"EEPROM Changes","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Notable core changes"]},"132":{"title":"Compilation Database","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Notable core changes"]},"133":{"title":"Codebase restructure and cleanup","titles":["QMK Breaking Changes - 2021 November 27 Changelog","Notable core changes"]},"134":{"title":"Full changelist","titles":["QMK Breaking Changes - 2021 November 27 Changelog"]},"135":{"title":"QMK Breaking Changes - 2022 February 26 Changelog","titles":[]},"136":{"title":"Notable Features","titles":["QMK Breaking Changes - 2022 February 26 Changelog"]},"137":{"title":"Default USB Polling rate now 1kHz (","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Notable Features"]},"138":{"title":"Split support for pointing devices (","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Notable Features"]},"139":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2022 February 26 Changelog"]},"140":{"title":"Legacy macro and action_function system removed (","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Changes Requiring User Action"]},"141":{"title":"Create a build error if no bootloader is specified (","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Changes Requiring User Action"]},"142":{"title":"Rename AdafruitBLE to BluefruitLE (","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Changes Requiring User Action"]},"143":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Changes Requiring User Action"]},"144":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2022 February 26 Changelog"]},"145":{"title":"New MCU Support","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Notable core changes"]},"146":{"title":"New Drivers","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Notable core changes"]},"147":{"title":"LED","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Notable core changes","New Drivers"]},"148":{"title":"GPIO","titles":["QMK Breaking Changes - 2022 February 26 Changelog","Notable core changes","New Drivers"]},"149":{"title":"Full changelist","titles":["QMK Breaking Changes - 2022 February 26 Changelog"]},"150":{"title":"QMK Breaking Changes - 2022 May 28 Changelog","titles":[]},"151":{"title":"Notable Features","titles":["QMK Breaking Changes - 2022 May 28 Changelog"]},"152":{"title":"Caps Word (","titles":["QMK Breaking Changes - 2022 May 28 Changelog","Notable Features"]},"153":{"title":"Quantum Painter (","titles":["QMK Breaking Changes - 2022 May 28 Changelog","Notable Features"]},"154":{"title":"Encoder Mapping (","titles":["QMK Breaking Changes - 2022 May 28 Changelog","Notable Features"]},"155":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2022 May 28 Changelog"]},"156":{"title":"RESET => QK_BOOT (","titles":["QMK Breaking Changes - 2022 May 28 Changelog","Changes Requiring User Action"]},"157":{"title":"Sendstring keycode overhaul (","titles":["QMK Breaking Changes - 2022 May 28 Changelog","Changes Requiring User Action"]},"158":{"title":"Pillow Installation (","titles":["QMK Breaking Changes - 2022 May 28 Changelog","Changes Requiring User Action"]},"159":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2022 May 28 Changelog","Changes Requiring User Action"]},"160":{"title":"Full changelist","titles":["QMK Breaking Changes - 2022 May 28 Changelog"]},"161":{"title":"QMK Breaking Changes - 2022 August 27 Changelog","titles":[]},"162":{"title":"Notable Features","titles":["QMK Breaking Changes - 2022 August 27 Changelog"]},"163":{"title":"Add Raspberry Pi RP2040 support (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Notable Features"]},"164":{"title":"Allow qmk flash to use prebuilt firmware binaries (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Notable Features"]},"165":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2022 August 27 Changelog"]},"166":{"title":"Default layers dropped from 32 to 16 (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Changes Requiring User Action"]},"167":{"title":"RESET => QK_BOOT (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Changes Requiring User Action"]},"168":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Changes Requiring User Action"]},"169":{"title":"Data-driven USB IDs Refactoring (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Changes Requiring User Action"]},"170":{"title":"Deprecation Schedule","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Changes Requiring User Action","Data-driven USB IDs Refactoring ("]},"171":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2022 August 27 Changelog"]},"172":{"title":"Board converters (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Notable core changes"]},"173":{"title":"Add cli command to import keyboard|keymap|kbfirmware (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Notable core changes"]},"174":{"title":"Generic wear-leveling for EEPROM emulation (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Notable core changes"]},"175":{"title":"Pointing Device Improvements (","titles":["QMK Breaking Changes - 2022 August 27 Changelog","Notable core changes"]},"176":{"title":"Full changelist","titles":["QMK Breaking Changes - 2022 August 27 Changelog"]},"177":{"title":"QMK Breaking Changes - 2022 November 26 Changelog","titles":[]},"178":{"title":"Notable Features","titles":["QMK Breaking Changes - 2022 November 26 Changelog"]},"179":{"title":"Autocorrect (","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Notable Features"]},"180":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2022 November 26 Changelog"]},"181":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Changes Requiring User Action"]},"182":{"title":"Keycodes refactoring","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Changes Requiring User Action"]},"183":{"title":"Configuration Item Refactoring","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Changes Requiring User Action"]},"184":{"title":"Data-driven USB IDs Refactoring (","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Changes Requiring User Action"]},"185":{"title":"LED Indicator callback refactoring (","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Changes Requiring User Action"]},"186":{"title":"Unicode mode refactoring","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Changes Requiring User Action"]},"187":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2022 November 26 Changelog"]},"188":{"title":"Keycodes refactoring","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Notable core changes"]},"189":{"title":"Board Converters","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Notable core changes"]},"190":{"title":"Pointing and Digitizer device updates","titles":["QMK Breaking Changes - 2022 November 26 Changelog","Notable core changes"]},"191":{"title":"Full changelist","titles":["QMK Breaking Changes - 2022 November 26 Changelog"]},"192":{"title":"QMK Breaking Changes - 2023 February 26 Changelog","titles":[]},"193":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2023 February 26 Changelog"]},"194":{"title":"IGNORE_MOD_TAP_INTERRUPT behaviour changes (","titles":["QMK Breaking Changes - 2023 February 26 Changelog","Changes Requiring User Action"]},"195":{"title":"TAPPING_FORCE_HOLD => QUICK_TAP_TERM (","titles":["QMK Breaking Changes - 2023 February 26 Changelog","Changes Requiring User Action"]},"196":{"title":"Leader Key Rework {#leader-key-rework (","titles":["QMK Breaking Changes - 2023 February 26 Changelog","Changes Requiring User Action"]},"197":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2023 February 26 Changelog","Changes Requiring User Action"]},"198":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2023 February 26 Changelog"]},"199":{"title":"Full changelist","titles":["QMK Breaking Changes - 2023 February 26 Changelog"]},"200":{"title":"QMK Breaking Changes - 2023 May 28 Changelog","titles":[]},"201":{"title":"Notable Changes","titles":["QMK Breaking Changes - 2023 May 28 Changelog"]},"202":{"title":"Repeat last key (","titles":["QMK Breaking Changes - 2023 May 28 Changelog","Notable Changes"]},"203":{"title":"User callback for pre process record (","titles":["QMK Breaking Changes - 2023 May 28 Changelog","Notable Changes"]},"204":{"title":"Consolidate modelm (","titles":["QMK Breaking Changes - 2023 May 28 Changelog","Notable Changes"]},"205":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2023 May 28 Changelog"]},"206":{"title":"IGNORE_MOD_TAP_INTERRUPT behaviour changes (","titles":["QMK Breaking Changes - 2023 May 28 Changelog","Changes Requiring User Action"]},"207":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2023 May 28 Changelog","Changes Requiring User Action"]},"208":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2023 May 28 Changelog"]},"209":{"title":"Encoder functionality fallback (","titles":["QMK Breaking Changes - 2023 May 28 Changelog","Notable core changes"]},"210":{"title":"OLED Driver Improvements (","titles":["QMK Breaking Changes - 2023 May 28 Changelog","Notable core changes"]},"211":{"title":"Full changelist","titles":["QMK Breaking Changes - 2023 May 28 Changelog"]},"212":{"title":"QMK Breaking Changes - 2023 Aug 27 Changelog","titles":[]},"213":{"title":"Notable Changes","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog"]},"214":{"title":"RGB Matrix optimizations (","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog","Notable Changes"]},"215":{"title":"Audio optimizations (","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog","Notable Changes"]},"216":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog"]},"217":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog","Changes Requiring User Action"]},"218":{"title":"Remove encoder in-matrix workaround code (","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog","Changes Requiring User Action"]},"219":{"title":"Unicodemap keycodes rename (","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog","Changes Requiring User Action"]},"220":{"title":"Remove old OLED API code (","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog","Changes Requiring User Action"]},"221":{"title":"Driver naming consolidation (","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog","Changes Requiring User Action"]},"222":{"title":"Full changelist","titles":["QMK Breaking Changes - 2023 Aug 27 Changelog"]},"223":{"title":"QMK Breaking Changes - 2023 November 26 Changelog","titles":[]},"224":{"title":"Notable Features","titles":["QMK Breaking Changes - 2023 November 26 Changelog"]},"225":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2023 November 26 Changelog"]},"226":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Changes Requiring User Action"]},"227":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2023 November 26 Changelog"]},"228":{"title":"External Userspace (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"229":{"title":"Improve and Cleanup Shutdown callbacks (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"230":{"title":"OLED Force Flush (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"231":{"title":"Switch statement helpers for keycode ranges (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"232":{"title":"Quantum Painter OLED support (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"233":{"title":"RGB/LED lighting driver naming and cleanup (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"234":{"title":"Peripheral subsystem enabling (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"235":{"title":"NKRO on V-USB boards (","titles":["QMK Breaking Changes - 2023 November 26 Changelog","Notable core changes"]},"236":{"title":"Full changelist","titles":["QMK Breaking Changes - 2023 November 26 Changelog"]},"237":{"title":"QMK Breaking Changes - 2024 February 25 Changelog","titles":[]},"238":{"title":"Notable Features","titles":["QMK Breaking Changes - 2024 February 25 Changelog"]},"239":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2024 February 25 Changelog"]},"240":{"title":"Windows Driver Changes (","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Changes Requiring User Action"]},"241":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Changes Requiring User Action"]},"242":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2024 February 25 Changelog"]},"243":{"title":"Renaming Arduino-style GPIO pin functions (","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Notable core changes"]},"244":{"title":"I2C driver API Changes (","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Notable core changes"]},"245":{"title":"Renaming Bootmagic Lite => Bootmagic (","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Notable core changes"]},"246":{"title":"Threshold for automatic mouse layer activation (","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Notable core changes"]},"247":{"title":"DIP Switch Mapping (","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Notable core changes"]},"248":{"title":"Quantum Painter updates (","titles":["QMK Breaking Changes - 2024 February 25 Changelog","Notable core changes"]},"249":{"title":"Full changelist","titles":["QMK Breaking Changes - 2024 February 25 Changelog"]},"250":{"title":"QMK Breaking Changes - 2024 May 26 Changelog","titles":[]},"251":{"title":"Notable Features","titles":["QMK Breaking Changes - 2024 May 26 Changelog"]},"252":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2024 May 26 Changelog"]},"253":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action"]},"254":{"title":"Remove deprecated quantum keycodes (","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action"]},"255":{"title":"P3D Spacey Layout Updates (","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action"]},"256":{"title":"MechKeys ACR60 Layout Updates (","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action"]},"257":{"title":"LAYOUT_hhkb","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action","MechKeys ACR60 Layout Updates ("]},"258":{"title":"LAYOUT_true_hhkb","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action","MechKeys ACR60 Layout Updates ("]},"259":{"title":"LAYOUT_directional","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action","MechKeys ACR60 Layout Updates ("]},"260":{"title":"LAYOUT_mitchsplit","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Changes Requiring User Action","MechKeys ACR60 Layout Updates ("]},"261":{"title":"Notable core changes","titles":["QMK Breaking Changes - 2024 May 26 Changelog"]},"262":{"title":"Introduction of keyboard.json (","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Notable core changes"]},"263":{"title":"Refactor ChibiOS USB endpoints to be fully async (","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Notable core changes"]},"264":{"title":"Deprecation Notices","titles":["QMK Breaking Changes - 2024 May 26 Changelog"]},"265":{"title":"Migration of VIA keymaps to VIA team control","titles":["QMK Breaking Changes - 2024 May 26 Changelog","Deprecation Notices"]},"266":{"title":"Full changelist","titles":["QMK Breaking Changes - 2024 May 26 Changelog"]},"267":{"title":"QMK Breaking Changes - 2024 August 25 Changelog","titles":[]},"268":{"title":"Notable Features","titles":["QMK Breaking Changes - 2024 August 25 Changelog"]},"269":{"title":"Changes Requiring User Action","titles":["QMK Breaking Changes - 2024 August 25 Changelog"]},"270":{"title":"Updated Keyboard Codebases","titles":["QMK Breaking Changes - 2024 August 25 Changelog","Changes Requiring User Action"]},"271":{"title":"SparkFun Pro Micro RP2040 converter renamed (","titles":["QMK Breaking Changes - 2024 August 25 Changelog","Changes Requiring User Action"]},"272":{"title":"Key Override keymap.c signature change (","titles":["QMK Breaking Changes - 2024 August 25 Changelog","Changes Requiring User Action"]},"273":{"title":"ADNS9800 and PMW33xx firmware upload now opt-in (","titles":["QMK Breaking Changes - 2024 August 25 Changelog","Changes Requiring User Action"]},"274":{"title":"Deprecation Notices","titles":["QMK Breaking Changes - 2024 August 25 Changelog"]},"275":{"title":"Migration of VIA keymaps to VIA team control","titles":["QMK Breaking Changes - 2024 August 25 Changelog","Deprecation Notices"]},"276":{"title":"ADNS9800 and PMW33xx sensor firmware ROM removal","titles":["QMK Breaking Changes - 2024 August 25 Changelog","Deprecation Notices"]},"277":{"title":"Full changelist","titles":["QMK Breaking Changes - 2024 August 25 Changelog"]},"278":{"title":"Documentation Capabilities","titles":[]},"279":{"title":"Overall capabilities","titles":["Documentation Capabilities"]},"280":{"title":"Dividing lines","titles":["Documentation Capabilities","Overall capabilities"]},"281":{"title":"Images","titles":["Documentation Capabilities","Overall capabilities"]},"282":{"title":"Lists","titles":["Documentation Capabilities","Overall capabilities"]},"283":{"title":"Emoji","titles":["Documentation Capabilities","Overall capabilities"]},"284":{"title":"Direct:","titles":["Documentation Capabilities","Overall capabilities","Emoji"]},"285":{"title":"As colon-name-colon:","titles":["Documentation Capabilities","Overall capabilities","Emoji"]},"286":{"title":"XML Entities","titles":["Documentation Capabilities","Overall capabilities"]},"287":{"title":"Styling","titles":["Documentation Capabilities"]},"288":{"title":"CSS-ish","titles":["Documentation Capabilities","Styling"]},"289":{"title":"Tables","titles":["Documentation Capabilities","Styling"]},"290":{"title":"Indented sections","titles":["Documentation Capabilities","Styling"]},"291":{"title":"Keyboard keys","titles":["Documentation Capabilities","Styling"]},"292":{"title":"Code Blocks","titles":["Documentation Capabilities","Styling"]},"293":{"title":"Sub/Superscript","titles":["Documentation Capabilities","Styling"]},"294":{"title":"Tabs","titles":["Documentation Capabilities","Styling"]},"295":{"title":"** Tab one **","titles":["Documentation Capabilities","Styling","Tabs"]},"296":{"title":"** Nested one **","titles":["Documentation Capabilities","Styling","Tabs","** Tab one **"]},"297":{"title":"** Nested two **","titles":["Documentation Capabilities","Styling","Tabs","** Tab one **"]},"298":{"title":"** Tab two **","titles":["Documentation Capabilities","Styling","Tabs"]},"299":{"title":"** Tab three **","titles":["Documentation Capabilities","Styling","Tabs"]},"300":{"title":"Details sections","titles":["Documentation Capabilities"]},"301":{"title":"Embed","titles":["Documentation Capabilities"]},"302":{"title":"Development Environment Setup","titles":[]},"303":{"title":"QMK Compiler Development Guide","titles":[]},"304":{"title":"Overview","titles":[]},"305":{"title":"Workers","titles":[]},"306":{"title":"API Service","titles":[]},"307":{"title":"@app.route('/v1/compile', methods=['POST'])","titles":["API Service"]},"308":{"title":"@app.route('/v1/compile/<string:job_id>', methods=['GET'])","titles":["API Service"]},"309":{"title":"@app.route('/v1/compile/<string:job_id>/download', methods=['GET'])","titles":["API Service"]},"310":{"title":"@app.route('/v1/compile/<string:job_id>/source', methods=['GET'])","titles":["API Service"]},"311":{"title":"QMK API","titles":[]},"312":{"title":"Overview","titles":["QMK API"]},"313":{"title":"Example JSON Payload:","titles":["QMK API","Overview"]},"314":{"title":"Submitting a Compile Job","titles":["QMK API"]},"315":{"title":"Checking The Status","titles":["QMK API"]},"316":{"title":"Examining Finished Results","titles":["QMK API"]},"317":{"title":"Constants","titles":["QMK API"]},"318":{"title":"QMK API","titles":[]},"319":{"title":"App Developers","titles":["QMK API"]},"320":{"title":"Keyboard Maintainers","titles":["QMK API"]},"321":{"title":"Backend Developers","titles":["QMK API"]},"322":{"title":"ARM Debugging using Eclipse","titles":[]},"323":{"title":"Installing the software","titles":["ARM Debugging using Eclipse"]},"324":{"title":"The xPack Manager","titles":["ARM Debugging using Eclipse","Installing the software"]},"325":{"title":"The ARM Toolchain","titles":["ARM Debugging using Eclipse","Installing the software"]},"326":{"title":"Windows build tools","titles":["ARM Debugging using Eclipse","Installing the software"]},"327":{"title":"Programmer/Debugger Drivers","titles":["ARM Debugging using Eclipse","Installing the software"]},"328":{"title":"OpenOCD","titles":["ARM Debugging using Eclipse","Installing the software"]},"329":{"title":"Java","titles":["ARM Debugging using Eclipse","Installing the software"]},"330":{"title":"GNU MCU Eclipse IDE","titles":["ARM Debugging using Eclipse","Installing the software"]},"331":{"title":"Configuring Eclipse","titles":["ARM Debugging using Eclipse"]},"332":{"title":"Building","titles":["ARM Debugging using Eclipse"]},"333":{"title":"Debugging","titles":["ARM Debugging using Eclipse"]},"334":{"title":"Connecting the Debugger","titles":["ARM Debugging using Eclipse","Debugging"]},"335":{"title":"Configuring the Debugger","titles":["ARM Debugging using Eclipse","Debugging"]},"336":{"title":"Running the Debugger.","titles":["ARM Debugging using Eclipse","Debugging"]},"337":{"title":"Breaking Changes","titles":[]},"338":{"title":"What has been included in past Breaking Changes?","titles":["Breaking Changes"]},"339":{"title":"When is the next Breaking Change?","titles":["Breaking Changes"]},"340":{"title":"Important Dates","titles":["Breaking Changes","When is the next Breaking Change?"]},"341":{"title":"What changes will be included?","titles":["Breaking Changes"]},"342":{"title":"Checklists","titles":["Breaking Changes"]},"343":{"title":"4 Weeks Before Merge","titles":["Breaking Changes","Checklists"]},"344":{"title":"2 Weeks Before Merge","titles":["Breaking Changes","Checklists"]},"345":{"title":"1 Week Before Merge","titles":["Breaking Changes","Checklists"]},"346":{"title":"2 Days Before Merge","titles":["Breaking Changes","Checklists"]},"347":{"title":"Day Of Merge","titles":["Breaking Changes","Checklists"]},"348":{"title":"Post-merge operations","titles":["Breaking Changes"]},"349":{"title":"Updating the develop branch","titles":["Breaking Changes","Post-merge operations"]},"350":{"title":"Set up Discord events for the next cycle","titles":["Breaking Changes","Post-merge operations"]},"351":{"title":"Past Breaking Changes","titles":[]},"352":{"title":"Breaking Changes: My Pull Request Was Flagged","titles":[]},"353":{"title":"What Do I Do?","titles":["Breaking Changes: My Pull Request Was Flagged"]},"354":{"title":"Consider Splitting Up Your PR","titles":["Breaking Changes: My Pull Request Was Flagged","What Do I Do?"]},"355":{"title":"Document Your Changes","titles":["Breaking Changes: My Pull Request Was Flagged","What Do I Do?"]},"356":{"title":"Ask for Help","titles":["Breaking Changes: My Pull Request Was Flagged","What Do I Do?"]},"357":{"title":"ChibiOS Upgrade Procedure","titles":[]},"358":{"title":"Getting ChibiOS","titles":["ChibiOS Upgrade Procedure"]},"359":{"title":"Getting ChibiOS-Contrib","titles":["ChibiOS Upgrade Procedure"]},"360":{"title":"Updating submodules","titles":["ChibiOS Upgrade Procedure"]},"361":{"title":"When merging a PR containing an upgrade of ChibiOS/ChibiOS-Contrib:","titles":["ChibiOS Upgrade Procedure"]},"362":{"title":"QMK CLI","titles":[]},"363":{"title":"Overview","titles":["QMK CLI"]},"364":{"title":"Requirements","titles":["QMK CLI","Overview"]},"365":{"title":"Install Using Homebrew (macOS, some Linux)","titles":["QMK CLI","Overview"]},"366":{"title":"Install Using pip","titles":["QMK CLI","Overview"]},"367":{"title":"Packaging For Other Operating Systems","titles":["QMK CLI","Overview"]},"368":{"title":"QMK CLI Commands","titles":[]},"369":{"title":"User Commands","titles":[]},"370":{"title":"qmk compile","titles":["User Commands"]},"371":{"title":"qmk flash","titles":["User Commands"]},"372":{"title":"qmk config","titles":["User Commands"]},"373":{"title":"qmk cd","titles":["User Commands"]},"374":{"title":"qmk find","titles":["User Commands"]},"375":{"title":"qmk console","titles":["User Commands"]},"376":{"title":"qmk doctor","titles":["User Commands"]},"377":{"title":"qmk format-json","titles":["User Commands"]},"378":{"title":"qmk info","titles":["User Commands"]},"379":{"title":"qmk json2c","titles":["User Commands"]},"380":{"title":"qmk c2json","titles":["User Commands"]},"381":{"title":"qmk lint","titles":["User Commands"]},"382":{"title":"qmk list-keyboards","titles":["User Commands"]},"383":{"title":"qmk list-keymaps","titles":["User Commands"]},"384":{"title":"qmk migrate","titles":["User Commands"]},"385":{"title":"qmk new-keyboard","titles":["User Commands"]},"386":{"title":"qmk new-keymap","titles":["User Commands"]},"387":{"title":"qmk clean","titles":["User Commands"]},"388":{"title":"qmk via2json","titles":["User Commands"]},"389":{"title":"qmk import-keyboard","titles":["User Commands"]},"390":{"title":"qmk import-keymap","titles":["User Commands"]},"391":{"title":"qmk import-kbfirmware","titles":["User Commands"]},"392":{"title":"External Userspace Commands","titles":[]},"393":{"title":"qmk userspace-add","titles":["External Userspace Commands"]},"394":{"title":"qmk userspace-remove","titles":["External Userspace Commands"]},"395":{"title":"qmk userspace-list","titles":["External Userspace Commands"]},"396":{"title":"qmk userspace-compile","titles":["External Userspace Commands"]},"397":{"title":"qmk userspace-doctor","titles":["External Userspace Commands"]},"398":{"title":"Developer Commands","titles":[]},"399":{"title":"qmk format-text","titles":["Developer Commands"]},"400":{"title":"qmk format-c","titles":["Developer Commands"]},"401":{"title":"qmk generate-compilation-database","titles":["Developer Commands"]},"402":{"title":"qmk docs","titles":["Developer Commands"]},"403":{"title":"qmk generate-docs","titles":["Developer Commands"]},"404":{"title":"qmk generate-rgb-breathe-table","titles":["Developer Commands"]},"405":{"title":"qmk kle2json","titles":["Developer Commands"]},"406":{"title":"qmk format-python","titles":["Developer Commands"]},"407":{"title":"qmk pytest","titles":["Developer Commands"]},"408":{"title":"qmk painter-convert-graphics","titles":["Developer Commands"]},"409":{"title":"qmk painter-make-font-image","titles":["Developer Commands"]},"410":{"title":"qmk painter-convert-font-image","titles":["Developer Commands"]},"411":{"title":"qmk test-c","titles":["Developer Commands"]},"412":{"title":"QMK CLI Configuration","titles":[]},"413":{"title":"Introduction","titles":[]},"414":{"title":"Simple Example","titles":["Introduction"]},"415":{"title":"Setting User Defaults","titles":["Introduction"]},"416":{"title":"CLI Documentation (qmk config)","titles":[]},"417":{"title":"Setting Configuration Values","titles":["CLI Documentation (qmk config)"]},"418":{"title":"Reading Configuration Values","titles":["CLI Documentation (qmk config)"]},"419":{"title":"Entire Configuration Example","titles":["CLI Documentation (qmk config)","Reading Configuration Values"]},"420":{"title":"Whole Section Example","titles":["CLI Documentation (qmk config)","Reading Configuration Values"]},"421":{"title":"Single Key Example","titles":["CLI Documentation (qmk config)","Reading Configuration Values"]},"422":{"title":"Multiple Keys Example","titles":["CLI Documentation (qmk config)","Reading Configuration Values"]},"423":{"title":"Deleting Configuration Values","titles":["CLI Documentation (qmk config)"]},"424":{"title":"Multiple Operations","titles":["CLI Documentation (qmk config)"]},"425":{"title":"User Configuration Options","titles":[]},"426":{"title":"All Configuration Options","titles":[]},"427":{"title":"QMK CLI Development","titles":[]},"428":{"title":"Overview","titles":[]},"429":{"title":"Developer mode:","titles":["Overview"]},"430":{"title":"Subcommands","titles":[]},"431":{"title":"User Interaction","titles":[]},"432":{"title":"Printing Text","titles":["User Interaction"]},"433":{"title":"Logging (cli.log)","titles":["User Interaction","Printing Text"]},"434":{"title":"Printing (cli.echo)","titles":["User Interaction","Printing Text"]},"435":{"title":"Colorizing Text","titles":["User Interaction","Printing Text"]},"436":{"title":"Arguments and Configuration","titles":[]},"437":{"title":"Reading Configuration Values","titles":["Arguments and Configuration"]},"438":{"title":"Setting Configuration Values","titles":["Arguments and Configuration"]},"439":{"title":"Deleting Configuration Values","titles":["Arguments and Configuration"]},"440":{"title":"Writing The Configuration File","titles":["Arguments and Configuration"]},"441":{"title":"Excluding Arguments From Configuration","titles":["Arguments and Configuration"]},"442":{"title":"Testing, and Linting, and Formatting (oh my!)","titles":[]},"443":{"title":"Testing and Linting","titles":["Testing, and Linting, and Formatting (oh my!)"]},"444":{"title":"Formatting","titles":["Testing, and Linting, and Formatting (oh my!)"]},"445":{"title":"Formatting Details","titles":["Testing, and Linting, and Formatting (oh my!)"]},"446":{"title":"Testing Details","titles":["Testing, and Linting, and Formatting (oh my!)"]},"447":{"title":"Linting Details","titles":["Testing, and Linting, and Formatting (oh my!)"]},"448":{"title":"Tab Completion for QMK","titles":[]},"449":{"title":"Setup","titles":["Tab Completion for QMK"]},"450":{"title":"For Your User Only","titles":["Tab Completion for QMK","Setup"]},"451":{"title":"System Wide Symlink","titles":["Tab Completion for QMK","Setup"]},"452":{"title":"System Wide Copy","titles":["Tab Completion for QMK","Setup"]},"453":{"title":"Coding Conventions (C)","titles":[]},"454":{"title":"Auto-formatting with clang-format","titles":[]},"455":{"title":"Coding Conventions (Python)","titles":[]},"456":{"title":"YAPF","titles":[]},"457":{"title":"Imports","titles":[]},"458":{"title":"Import Examples","titles":["Imports"]},"459":{"title":"Statements","titles":[]},"460":{"title":"Naming","titles":[]},"461":{"title":"Names to Avoid","titles":["Naming"]},"462":{"title":"Docstrings","titles":[]},"463":{"title":"Simple docstring example","titles":["Docstrings"]},"464":{"title":"Complex docstring example","titles":["Docstrings"]},"465":{"title":"Function arguments docstring example","titles":["Docstrings"]},"466":{"title":"Exceptions","titles":[]},"467":{"title":"Tuples","titles":[]},"468":{"title":"Lists and Dictionaries","titles":[]},"469":{"title":"Parentheses","titles":[]},"470":{"title":"Format Strings","titles":[]},"471":{"title":"Comprehensions & Generator Expressions","titles":[]},"472":{"title":"Lambdas","titles":[]},"473":{"title":"Conditional Expressions","titles":[]},"474":{"title":"Default Argument Values","titles":[]},"475":{"title":"Properties","titles":[]},"476":{"title":"True/False Evaluations","titles":[]},"477":{"title":"Decorators","titles":[]},"478":{"title":"Threading and Multiprocessing","titles":[]},"479":{"title":"Power Features","titles":[]},"480":{"title":"Type Annotated Code","titles":[]},"481":{"title":"Function length","titles":[]},"482":{"title":"FIXMEs","titles":[]},"483":{"title":"Testing","titles":[]},"484":{"title":"Integration Tests","titles":["Testing"]},"485":{"title":"Unit Tests","titles":["Testing"]},"486":{"title":"Compatible Microcontrollers","titles":[]},"487":{"title":"Atmel AVR","titles":["Compatible Microcontrollers"]},"488":{"title":"ARM","titles":["Compatible Microcontrollers"]},"489":{"title":"STMicroelectronics (STM32)","titles":["Compatible Microcontrollers","ARM"]},"490":{"title":"WestBerryTech (WB32)","titles":["Compatible Microcontrollers","ARM"]},"491":{"title":"NXP (Kinetis)","titles":["Compatible Microcontrollers","ARM"]},"492":{"title":"Raspberry Pi","titles":["Compatible Microcontrollers","ARM"]},"493":{"title":"Atmel ATSAM","titles":["Compatible Microcontrollers"]},"494":{"title":"RISC-V","titles":["Compatible Microcontrollers"]},"495":{"title":"GigaDevice","titles":["Compatible Microcontrollers","RISC-V"]},"496":{"title":"Configuring QMK","titles":[]},"497":{"title":"QMK Default","titles":["Configuring QMK"]},"498":{"title":"Keyboard","titles":["Configuring QMK"]},"499":{"title":"Folders","titles":["Configuring QMK"]},"500":{"title":"Keymap","titles":["Configuring QMK"]},"501":{"title":"The config.h File","titles":[]},"502":{"title":"Hardware Options","titles":["The config.h File"]},"503":{"title":"Features That Can Be Disabled","titles":["The config.h File"]},"504":{"title":"Features That Can Be Enabled","titles":["The config.h File"]},"505":{"title":"Behaviors That Can Be Configured","titles":["The config.h File"]},"506":{"title":"RGB Light Configuration","titles":["The config.h File"]},"507":{"title":"Mouse Key Options","titles":["The config.h File"]},"508":{"title":"Split Keyboard Options","titles":["The config.h File"]},"509":{"title":"Setting Handedness","titles":["The config.h File","Split Keyboard Options"]},"510":{"title":"Defines for handedness","titles":["The config.h File","Split Keyboard Options","Setting Handedness"]},"511":{"title":"Other Options","titles":["The config.h File","Split Keyboard Options"]},"512":{"title":"The rules.mk File","titles":[]},"513":{"title":"Build Options","titles":["The rules.mk File"]},"514":{"title":"AVR MCU Options","titles":["The rules.mk File"]},"515":{"title":"Feature Options","titles":["The rules.mk File"]},"516":{"title":"USB Endpoint Limitations","titles":["The rules.mk File"]},"517":{"title":"QMK Configurator Architecture","titles":[]},"518":{"title":"Overview","titles":[]},"519":{"title":"Detailed Description","titles":[]},"520":{"title":"Configurator Frontend","titles":["Detailed Description"]},"521":{"title":"Keyboard Metadata","titles":["Detailed Description"]},"522":{"title":"QMK API","titles":["Detailed Description"]},"523":{"title":"Compile Job Queued","titles":["Detailed Description","QMK API"]},"524":{"title":"Compile Job Running","titles":["Detailed Description","QMK API"]},"525":{"title":"Compile Job Finished","titles":["Detailed Description","QMK API"]},"526":{"title":"Redis/RQ","titles":["Detailed Description"]},"527":{"title":"QMK Compiler","titles":["Detailed Description"]},"528":{"title":"Adding Default Keymaps to QMK Configurator","titles":[]},"529":{"title":"Technical Information","titles":["Adding Default Keymaps to QMK Configurator"]},"530":{"title":"Example","titles":["Adding Default Keymaps to QMK Configurator"]},"531":{"title":"Caveats","titles":["Adding Default Keymaps to QMK Configurator"]},"532":{"title":"Layers can only be referenced by number","titles":["Adding Default Keymaps to QMK Configurator","Caveats"]},"533":{"title":"No support for custom code of any kind","titles":["Adding Default Keymaps to QMK Configurator","Caveats"]},"534":{"title":"Limited Support for Custom keycodes","titles":["Adding Default Keymaps to QMK Configurator","Caveats"]},"535":{"title":"Additional Reading","titles":["Adding Default Keymaps to QMK Configurator"]},"536":{"title":"QMK Configurator: Step by Step","titles":[]},"537":{"title":"Step 1: Select Your Keyboard","titles":["QMK Configurator: Step by Step"]},"538":{"title":"Step 2: Select Your Keyboard Layout","titles":["QMK Configurator: Step by Step"]},"539":{"title":"Step 3: Name Your Keymap","titles":["QMK Configurator: Step by Step"]},"540":{"title":"Step 4: Define Your Keymap","titles":["QMK Configurator: Step by Step"]},"541":{"title":"Step 5: Save Your Keymap for Future Changes","titles":["QMK Configurator: Step by Step"]},"542":{"title":"Step 6: Compile Your Firmware File","titles":["QMK Configurator: Step by Step"]},"543":{"title":"Next steps: Flashing Your Keyboard","titles":["QMK Configurator: Step by Step"]},"544":{"title":"Configurator Troubleshooting","titles":[]},"545":{"title":"My .json file is not working","titles":["Configurator Troubleshooting"]},"546":{"title":"There are extra spaces in my layout? What do I do?","titles":["Configurator Troubleshooting"]},"547":{"title":"What is the keycode for...","titles":["Configurator Troubleshooting"]},"548":{"title":"It won't compile","titles":["Configurator Troubleshooting"]},"549":{"title":"Problems and Bugs","titles":["Configurator Troubleshooting"]},"550":{"title":"How to Contribute","titles":[]},"551":{"title":"I Don't Want to Read This Whole Thing! I Just Have a Question!","titles":["How to Contribute"]},"552":{"title":"Project Overview","titles":[]},"553":{"title":"Where Can I Go for Help?","titles":[]},"554":{"title":"How Do I Make a Contribution?","titles":[]},"555":{"title":"Coding Conventions","titles":[]},"556":{"title":"General Guidelines","titles":[]},"557":{"title":"Documentation","titles":["General Guidelines"]},"558":{"title":"Previewing the Documentation","titles":["General Guidelines","Documentation"]},"559":{"title":"Keyboards","titles":["General Guidelines"]},"560":{"title":"Quantum/TMK Core","titles":["General Guidelines"]},"561":{"title":"Refactoring","titles":["General Guidelines"]},"562":{"title":"What Does the Code of Conduct Mean for Me?","titles":[]},"563":{"title":"Custom Matrix","titles":[]},"564":{"title":"Prerequisites","titles":["Custom Matrix"]},"565":{"title":"'lite'","titles":["Custom Matrix"]},"566":{"title":"Full Replacement","titles":["Custom Matrix"]},"567":{"title":"How to Customize Your Keyboard's Behavior","titles":[]},"568":{"title":"A Word on Core vs Keyboards vs Keymap","titles":["How to Customize Your Keyboard's Behavior"]},"569":{"title":"Custom Keycodes","titles":[]},"570":{"title":"Defining a New Keycode","titles":["Custom Keycodes"]},"571":{"title":"Programming the Behavior of Any Keycode","titles":["Custom Keycodes"]},"572":{"title":"Example process_record_user() Implementation","titles":["Custom Keycodes","Programming the Behavior of Any Keycode"]},"573":{"title":"process_record_* Function Documentation","titles":["Custom Keycodes","Programming the Behavior of Any Keycode"]},"574":{"title":"Keyboard Initialization Code","titles":[]},"575":{"title":"Keyboard Pre Initialization code","titles":["Keyboard Initialization Code"]},"576":{"title":"Example keyboard_pre_init_user() Implementation","titles":["Keyboard Initialization Code","Keyboard Pre Initialization code"]},"577":{"title":"keyboard_pre_init_* Function Documentation","titles":["Keyboard Initialization Code","Keyboard Pre Initialization code"]},"578":{"title":"Matrix Initialization Code","titles":["Keyboard Initialization Code"]},"579":{"title":"matrix_init_* Function Documentation","titles":["Keyboard Initialization Code","Matrix Initialization Code"]},"580":{"title":"Low-level Matrix Overrides Function Documentation","titles":["Keyboard Initialization Code","Matrix Initialization Code"]},"581":{"title":"Keyboard Post Initialization code","titles":["Keyboard Initialization Code"]},"582":{"title":"Example keyboard_post_init_user() Implementation","titles":["Keyboard Initialization Code","Keyboard Post Initialization code"]},"583":{"title":"keyboard_post_init_* Function Documentation","titles":["Keyboard Initialization Code","Keyboard Post Initialization code"]},"584":{"title":"Matrix Scanning Code","titles":[]},"585":{"title":"Example matrix_scan_* Implementation","titles":["Matrix Scanning Code"]},"586":{"title":"matrix_scan_* Function Documentation","titles":["Matrix Scanning Code"]},"587":{"title":"Keyboard housekeeping","titles":[]},"588":{"title":"Example void housekeeping_task_user(void) implementation","titles":["Keyboard housekeeping"]},"589":{"title":"Keyboard Idling/Wake Code","titles":[]},"590":{"title":"Example suspend_power_down_user() and suspend_wakeup_init_user() Implementation","titles":["Keyboard Idling/Wake Code"]},"591":{"title":"Keyboard suspend/wake Function Documentation","titles":["Keyboard Idling/Wake Code"]},"592":{"title":"Keyboard Shutdown/Reboot Code","titles":[]},"593":{"title":"Example shutdown_kb() Implementation","titles":["Keyboard Shutdown/Reboot Code"]},"594":{"title":"Example shutdown_user() Implementation","titles":["Keyboard Shutdown/Reboot Code"]},"595":{"title":"Keyboard shutdown/reboot Function Documentation","titles":["Keyboard Shutdown/Reboot Code"]},"596":{"title":"Deferred Execution","titles":[]},"597":{"title":"Deferred executor callbacks","titles":["Deferred Execution"]},"598":{"title":"Deferred executor registration","titles":["Deferred Execution"]},"599":{"title":"Extending a deferred execution","titles":["Deferred Execution"]},"600":{"title":"Cancelling a deferred execution","titles":["Deferred Execution"]},"601":{"title":"Deferred callback limits","titles":["Deferred Execution"]},"602":{"title":"Advanced topics","titles":[]},"603":{"title":"Layer Change Code","titles":["Advanced topics"]},"604":{"title":"Persistent Configuration (EEPROM)","titles":["Advanced topics"]},"605":{"title":"Data Driven Configuration","titles":[]},"606":{"title":"History","titles":["Data Driven Configuration"]},"607":{"title":"Overview","titles":["Data Driven Configuration"]},"608":{"title":"Adding an option to info.json","titles":["Data Driven Configuration"]},"609":{"title":"Add it to the schema","titles":["Data Driven Configuration","Adding an option to info.json"]},"610":{"title":"Add a mapping","titles":["Data Driven Configuration","Adding an option to info.json"]},"611":{"title":"Info Key","titles":["Data Driven Configuration","Adding an option to info.json","Add a mapping"]},"612":{"title":"Value Types","titles":["Data Driven Configuration","Adding an option to info.json","Add a mapping"]},"613":{"title":"Add code to extract it","titles":["Data Driven Configuration","Adding an option to info.json"]},"614":{"title":"Add code to generate it","titles":["Data Driven Configuration","Adding an option to info.json"]},"615":{"title":"Documentation Best Practices","titles":[]},"616":{"title":"Page Opening","titles":[]},"617":{"title":"Headings","titles":[]},"618":{"title":"Styled Hint Blocks","titles":[]},"619":{"title":"Important","titles":["Styled Hint Blocks"]},"620":{"title":"General Tips","titles":["Styled Hint Blocks"]},"621":{"title":"Documenting Features","titles":[]},"622":{"title":"Documentation Templates","titles":[]},"623":{"title":"Keymap readme.md Template","titles":["Documentation Templates"]},"624":{"title":"Keyboard readme.md Template","titles":["Documentation Templates"]},"625":{"title":"Bootloader Driver Installation with Zadig","titles":[]},"626":{"title":"Installation","titles":["Bootloader Driver Installation with Zadig"]},"627":{"title":"Recovering from Installation to Wrong Device","titles":["Bootloader Driver Installation with Zadig"]},"628":{"title":"Uninstallation","titles":["Bootloader Driver Installation with Zadig"]},"629":{"title":"List of Known Bootloaders","titles":["Bootloader Driver Installation with Zadig"]},"630":{"title":"ADC Driver","titles":[]},"631":{"title":"Usage","titles":["ADC Driver"]},"632":{"title":"Channels","titles":["ADC Driver"]},"633":{"title":"AVR","titles":["ADC Driver","Channels"]},"634":{"title":"ARM","titles":["ADC Driver","Channels"]},"635":{"title":"STM32","titles":["ADC Driver","Channels","ARM"]},"636":{"title":"RP2040","titles":["ADC Driver","Channels","ARM"]},"637":{"title":"Functions","titles":["ADC Driver"]},"638":{"title":"AVR","titles":["ADC Driver","Functions"]},"639":{"title":"ARM","titles":["ADC Driver","Functions"]},"640":{"title":"Configuration","titles":["ADC Driver"]},"641":{"title":"ARM","titles":["ADC Driver"]},"642":{"title":"APA102 Driver","titles":[]},"643":{"title":"Usage","titles":["APA102 Driver"]},"644":{"title":"Basic Configuration","titles":["APA102 Driver"]},"645":{"title":"API","titles":["APA102 Driver"]},"646":{"title":"void apa102_init(void)","titles":["APA102 Driver","API"]},"647":{"title":"void apa102_set_color(uint16_t index, uint8_t red, uint8_t green, uint8_t blue)","titles":["APA102 Driver","API"]},"648":{"title":"Arguments","titles":["APA102 Driver","API","void apa102_set_color(uint16_t index, uint8_t red, uint8_t green, uint8_t blue)"]},"649":{"title":"void apa102_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["APA102 Driver","API"]},"650":{"title":"Arguments","titles":["APA102 Driver","API","void apa102_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"651":{"title":"void apa102_flush(void)","titles":["APA102 Driver","API"]},"652":{"title":"void apa102_set_brightness(uint8_t brightness)","titles":["APA102 Driver","API"]},"653":{"title":"Arguments","titles":["APA102 Driver","API","void apa102_set_brightness(uint8_t brightness)"]},"654":{"title":"Audio Driver","titles":[]},"655":{"title":"AVR","titles":["Audio Driver"]},"656":{"title":"ARM","titles":["Audio Driver"]},"657":{"title":"DAC basic","titles":["Audio Driver","ARM"]},"658":{"title":"DAC additive","titles":["Audio Driver","ARM"]},"659":{"title":"DAC Config","titles":["Audio Driver","ARM"]},"660":{"title":"Notes on buffer size","titles":["Audio Driver","ARM","DAC Config"]},"661":{"title":"PWM hardware","titles":["Audio Driver","ARM"]},"662":{"title":"PWM software","titles":["Audio Driver","ARM"]},"663":{"title":"Testing Notes","titles":["Audio Driver","ARM"]},"664":{"title":"AW20216S Driver","titles":[]},"665":{"title":"Usage","titles":["AW20216S Driver"]},"666":{"title":"Basic Configuration","titles":["AW20216S Driver"]},"667":{"title":"Global Current Control","titles":["AW20216S Driver","Basic Configuration"]},"668":{"title":"ARM/ChibiOS Configuration","titles":["AW20216S Driver"]},"669":{"title":"LED Mapping","titles":["AW20216S Driver"]},"670":{"title":"API","titles":["AW20216S Driver"]},"671":{"title":"struct aw20216s_led_t","titles":["AW20216S Driver","API"]},"672":{"title":"Members","titles":["AW20216S Driver","API","struct aw20216s_led_t"]},"673":{"title":"void aw20216s_init(pin_t cs_pin)","titles":["AW20216S Driver","API"]},"674":{"title":"Arguments","titles":["AW20216S Driver","API","void aw20216s_init(pin_t cs_pin)"]},"675":{"title":"void aw20216s_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["AW20216S Driver","API"]},"676":{"title":"Arguments","titles":["AW20216S Driver","API","void aw20216s_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"677":{"title":"void aw20216s_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["AW20216S Driver","API"]},"678":{"title":"Arguments","titles":["AW20216S Driver","API","void aw20216s_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"679":{"title":"void aw20216s_update_pwm_buffers(pin_t cs_pin, uint8_t index)","titles":["AW20216S Driver","API"]},"680":{"title":"Arguments","titles":["AW20216S Driver","API","void aw20216s_update_pwm_buffers(pin_t cs_pin, uint8_t index)"]},"681":{"title":"EEPROM Driver Configuration","titles":[]},"682":{"title":"Vendor Driver Configuration","titles":["EEPROM Driver Configuration"]},"683":{"title":"STM32 L0/L1 Configuration","titles":["EEPROM Driver Configuration","Vendor Driver Configuration"]},"684":{"title":"I2C Driver Configuration","titles":["EEPROM Driver Configuration"]},"685":{"title":"SPI Driver Configuration","titles":["EEPROM Driver Configuration"]},"686":{"title":"Transient Driver configuration","titles":["EEPROM Driver Configuration"]},"687":{"title":"Wear-leveling Driver Configuration","titles":["EEPROM Driver Configuration"]},"688":{"title":"Wear-leveling Configuration","titles":[]},"689":{"title":"Wear-leveling Embedded Flash Driver Configuration","titles":["Wear-leveling Configuration"]},"690":{"title":"Wear-leveling SPI Flash Driver Configuration","titles":["Wear-leveling Configuration"]},"691":{"title":"Wear-leveling RP2040 Driver Configuration","titles":["Wear-leveling Configuration"]},"692":{"title":"Wear-leveling Legacy EEPROM Emulation Driver Configuration","titles":["Wear-leveling Configuration"]},"693":{"title":"FLASH Driver Configuration","titles":[]},"694":{"title":"SPI FLASH Driver Configuration","titles":["FLASH Driver Configuration"]},"695":{"title":"GPIO Control","titles":[]},"696":{"title":"Macros","titles":["GPIO Control"]},"697":{"title":"Advanced Settings","titles":["GPIO Control"]},"698":{"title":"Atomic Operation","titles":["GPIO Control"]},"699":{"title":"I2C Master Driver","titles":[]},"700":{"title":"Usage","titles":["I2C Master Driver"]},"701":{"title":"I2C Addressing","titles":["I2C Master Driver"]},"702":{"title":"AVR Configuration","titles":["I2C Master Driver"]},"703":{"title":"ChibiOS/ARM Configuration","titles":["I2C Master Driver"]},"704":{"title":"I2Cv1","titles":["I2C Master Driver","ChibiOS/ARM Configuration"]},"705":{"title":"I2Cv2","titles":["I2C Master Driver","ChibiOS/ARM Configuration"]},"706":{"title":"API","titles":["I2C Master Driver"]},"707":{"title":"void i2c_init(void)","titles":["I2C Master Driver","API"]},"708":{"title":"i2c_status_t i2c_transmit(uint8_t address, uint8_t *data, uint16_t length, uint16_t timeout)","titles":["I2C Master Driver","API"]},"709":{"title":"Arguments","titles":["I2C Master Driver","API","i2c_status_t i2c_transmit(uint8_t address, uint8_t *data, uint16_t length, uint16_t timeout)"]},"710":{"title":"Return Value","titles":["I2C Master Driver","API","i2c_status_t i2c_transmit(uint8_t address, uint8_t *data, uint16_t length, uint16_t timeout)"]},"711":{"title":"i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout)","titles":["I2C Master Driver","API"]},"712":{"title":"Arguments","titles":["I2C Master Driver","API","i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout)"]},"713":{"title":"Return Value","titles":["I2C Master Driver","API","i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout)"]},"714":{"title":"i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)","titles":["I2C Master Driver","API"]},"715":{"title":"Arguments","titles":["I2C Master Driver","API","i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"716":{"title":"Return Value","titles":["I2C Master Driver","API","i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"717":{"title":"i2c_status_t i2c_write_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)","titles":["I2C Master Driver","API"]},"718":{"title":"Arguments","titles":["I2C Master Driver","API","i2c_status_t i2c_write_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"719":{"title":"Return Value","titles":["I2C Master Driver","API","i2c_status_t i2c_write_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"720":{"title":"i2c_status_t i2c_read_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)","titles":["I2C Master Driver","API"]},"721":{"title":"Arguments","titles":["I2C Master Driver","API","i2c_status_t i2c_read_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"722":{"title":"Return Value","titles":["I2C Master Driver","API","i2c_status_t i2c_read_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"723":{"title":"i2c_status_t i2c_read_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)","titles":["I2C Master Driver","API"]},"724":{"title":"Arguments","titles":["I2C Master Driver","API","i2c_status_t i2c_read_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"725":{"title":"Return Value","titles":["I2C Master Driver","API","i2c_status_t i2c_read_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)"]},"726":{"title":"i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout)","titles":["I2C Master Driver","API"]},"727":{"title":"Arguments","titles":["I2C Master Driver","API","i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout)"]},"728":{"title":"Return Value","titles":["I2C Master Driver","API","i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout)"]},"729":{"title":"IS31FL3218 Driver","titles":[]},"730":{"title":"Usage","titles":["IS31FL3218 Driver"]},"731":{"title":"Basic Configuration","titles":["IS31FL3218 Driver"]},"732":{"title":"I²C Addressing","titles":["IS31FL3218 Driver","Basic Configuration"]},"733":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3218 Driver"]},"734":{"title":"LED Mapping","titles":["IS31FL3218 Driver"]},"735":{"title":"API","titles":["IS31FL3218 Driver"]},"736":{"title":"struct is31fl3218_led_t","titles":["IS31FL3218 Driver","API"]},"737":{"title":"Members","titles":["IS31FL3218 Driver","API","struct is31fl3218_led_t"]},"738":{"title":"void is31fl3218_init(void)","titles":["IS31FL3218 Driver","API"]},"739":{"title":"void is31fl3218_write_register(uint8_t reg, uint8_t data)","titles":["IS31FL3218 Driver","API"]},"740":{"title":"Arguments","titles":["IS31FL3218 Driver","API","void is31fl3218_write_register(uint8_t reg, uint8_t data)"]},"741":{"title":"void is31fl3218_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3218 Driver","API"]},"742":{"title":"Arguments","titles":["IS31FL3218 Driver","API","void is31fl3218_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"743":{"title":"void is31fl3218_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3218 Driver","API"]},"744":{"title":"Arguments","titles":["IS31FL3218 Driver","API","void is31fl3218_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"745":{"title":"void is31fl3218_set_value(int index, uint8_t value)","titles":["IS31FL3218 Driver","API"]},"746":{"title":"Arguments","titles":["IS31FL3218 Driver","API","void is31fl3218_set_value(int index, uint8_t value)"]},"747":{"title":"void is31fl3218_set_value_all(uint8_t value)","titles":["IS31FL3218 Driver","API"]},"748":{"title":"Arguments","titles":["IS31FL3218 Driver","API","void is31fl3218_set_value_all(uint8_t value)"]},"749":{"title":"void is31fl3218_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["IS31FL3218 Driver","API"]},"750":{"title":"Arguments","titles":["IS31FL3218 Driver","API","void is31fl3218_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"751":{"title":"void is31fl3218_set_led_control_register(uint8_t index, bool value)","titles":["IS31FL3218 Driver","API"]},"752":{"title":"Arguments","titles":["IS31FL3218 Driver","API","void is31fl3218_set_led_control_register(uint8_t index, bool value)"]},"753":{"title":"void is31fl3218_update_pwm_buffers(void)","titles":["IS31FL3218 Driver","API"]},"754":{"title":"void is31fl3218_update_led_control_registers(void)","titles":["IS31FL3218 Driver","API"]},"755":{"title":"IS31FL3236 Driver","titles":[]},"756":{"title":"Usage","titles":["IS31FL3236 Driver"]},"757":{"title":"Basic Configuration","titles":["IS31FL3236 Driver"]},"758":{"title":"I²C Addressing","titles":["IS31FL3236 Driver","Basic Configuration"]},"759":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3236 Driver"]},"760":{"title":"LED Mapping","titles":["IS31FL3236 Driver"]},"761":{"title":"API","titles":["IS31FL3236 Driver"]},"762":{"title":"struct is31fl3236_led_t","titles":["IS31FL3236 Driver","API"]},"763":{"title":"Members","titles":["IS31FL3236 Driver","API","struct is31fl3236_led_t"]},"764":{"title":"void is31fl3236_init(uint8_t index)","titles":["IS31FL3236 Driver","API"]},"765":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_init(uint8_t index)"]},"766":{"title":"void is31fl3236_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3236 Driver","API"]},"767":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"768":{"title":"void is31fl3236_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3236 Driver","API"]},"769":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"770":{"title":"void is31fl3236_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3236 Driver","API"]},"771":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"772":{"title":"void is31fl3236_set_value(int index, uint8_t value)","titles":["IS31FL3236 Driver","API"]},"773":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_set_value(int index, uint8_t value)"]},"774":{"title":"void is31fl3236_set_value_all(uint8_t value)","titles":["IS31FL3236 Driver","API"]},"775":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_set_value_all(uint8_t value)"]},"776":{"title":"void is31fl3236_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["IS31FL3236 Driver","API"]},"777":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"778":{"title":"void is31fl3236_set_led_control_register(uint8_t index, bool value)","titles":["IS31FL3236 Driver","API"]},"779":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_set_led_control_register(uint8_t index, bool value)"]},"780":{"title":"void is31fl3236_update_pwm_buffers(uint8_t index)","titles":["IS31FL3236 Driver","API"]},"781":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_update_pwm_buffers(uint8_t index)"]},"782":{"title":"void is31fl3236_update_led_control_registers(uint8_t index)","titles":["IS31FL3236 Driver","API"]},"783":{"title":"Arguments","titles":["IS31FL3236 Driver","API","void is31fl3236_update_led_control_registers(uint8_t index)"]},"784":{"title":"IS31FL3731 Driver","titles":[]},"785":{"title":"Usage","titles":["IS31FL3731 Driver"]},"786":{"title":"Basic Configuration","titles":["IS31FL3731 Driver"]},"787":{"title":"I²C Addressing","titles":["IS31FL3731 Driver","Basic Configuration"]},"788":{"title":"De-Ghosting","titles":["IS31FL3731 Driver","Basic Configuration"]},"789":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3731 Driver"]},"790":{"title":"LED Mapping","titles":["IS31FL3731 Driver"]},"791":{"title":"API","titles":["IS31FL3731 Driver"]},"792":{"title":"struct is31fl3731_led_t","titles":["IS31FL3731 Driver","API"]},"793":{"title":"Members","titles":["IS31FL3731 Driver","API","struct is31fl3731_led_t"]},"794":{"title":"void is31fl3731_init(uint8_t index)","titles":["IS31FL3731 Driver","API"]},"795":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_init(uint8_t index)"]},"796":{"title":"void is31fl3731_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3731 Driver","API"]},"797":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"798":{"title":"void is31fl3731_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3731 Driver","API"]},"799":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_select_page(uint8_t index, uint8_t page)"]},"800":{"title":"void is31fl3731_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3731 Driver","API"]},"801":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"802":{"title":"void is31fl3731_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3731 Driver","API"]},"803":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"804":{"title":"void is31fl3731_set_value(int index, uint8_t value)","titles":["IS31FL3731 Driver","API"]},"805":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_set_value(int index, uint8_t value)"]},"806":{"title":"void is31fl3731_set_value_all(uint8_t value)","titles":["IS31FL3731 Driver","API"]},"807":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_set_value_all(uint8_t value)"]},"808":{"title":"void is31fl3731_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["IS31FL3731 Driver","API"]},"809":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"810":{"title":"void is31fl3731_set_led_control_register(uint8_t index, bool value)","titles":["IS31FL3731 Driver","API"]},"811":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_set_led_control_register(uint8_t index, bool value)"]},"812":{"title":"void is31fl3731_update_pwm_buffers(uint8_t index)","titles":["IS31FL3731 Driver","API"]},"813":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_update_pwm_buffers(uint8_t index)"]},"814":{"title":"void is31fl3731_update_led_control_registers(uint8_t index)","titles":["IS31FL3731 Driver","API"]},"815":{"title":"Arguments","titles":["IS31FL3731 Driver","API","void is31fl3731_update_led_control_registers(uint8_t index)"]},"816":{"title":"IS31FL3729 Driver","titles":[]},"817":{"title":"Usage","titles":["IS31FL3729 Driver"]},"818":{"title":"Basic Configuration","titles":["IS31FL3729 Driver"]},"819":{"title":"I²C Addressing","titles":["IS31FL3729 Driver","Basic Configuration"]},"820":{"title":"PWM Frequency","titles":["IS31FL3729 Driver","Basic Configuration"]},"821":{"title":"De-Ghosting","titles":["IS31FL3729 Driver","Basic Configuration"]},"822":{"title":"Global Current Control","titles":["IS31FL3729 Driver","Basic Configuration"]},"823":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3729 Driver"]},"824":{"title":"LED Mapping","titles":["IS31FL3729 Driver"]},"825":{"title":"API","titles":["IS31FL3729 Driver"]},"826":{"title":"struct is31fl3729_led_t","titles":["IS31FL3729 Driver","API"]},"827":{"title":"Members","titles":["IS31FL3729 Driver","API","struct is31fl3729_led_t"]},"828":{"title":"void is31fl3729_init(uint8_t index)","titles":["IS31FL3729 Driver","API"]},"829":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_init(uint8_t index)"]},"830":{"title":"void is31fl3729_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3729 Driver","API"]},"831":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"832":{"title":"void is31fl3729_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3729 Driver","API"]},"833":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"834":{"title":"void is31fl3729_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3729 Driver","API"]},"835":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"836":{"title":"void is31fl3729_set_value(int index, uint8_t value)","titles":["IS31FL3729 Driver","API"]},"837":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_set_value(int index, uint8_t value)"]},"838":{"title":"void is31fl3729_set_value_all(uint8_t value)","titles":["IS31FL3729 Driver","API"]},"839":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_set_value_all(uint8_t value)"]},"840":{"title":"void is31fl3729_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3729 Driver","API"]},"841":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)"]},"842":{"title":"void is31fl3729_set_scaling_register(uint8_t index, uint8_t value)","titles":["IS31FL3729 Driver","API"]},"843":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_set_scaling_register(uint8_t index, uint8_t value)"]},"844":{"title":"void is31fl3729_update_pwm_buffers(uint8_t index)","titles":["IS31FL3729 Driver","API"]},"845":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_update_pwm_buffers(uint8_t index)"]},"846":{"title":"void is31fl3729_update_scaling_registers(uint8_t index)","titles":["IS31FL3729 Driver","API"]},"847":{"title":"Arguments","titles":["IS31FL3729 Driver","API","void is31fl3729_update_scaling_registers(uint8_t index)"]},"848":{"title":"IS31FL3733 Driver","titles":[]},"849":{"title":"Usage","titles":["IS31FL3733 Driver"]},"850":{"title":"Basic Configuration","titles":["IS31FL3733 Driver"]},"851":{"title":"I²C Addressing","titles":["IS31FL3733 Driver","Basic Configuration"]},"852":{"title":"Multi-Driver Synchronization","titles":["IS31FL3733 Driver","Basic Configuration"]},"853":{"title":"PWM Frequency","titles":["IS31FL3733 Driver","Basic Configuration"]},"854":{"title":"De-Ghosting","titles":["IS31FL3733 Driver","Basic Configuration"]},"855":{"title":"Global Current Control","titles":["IS31FL3733 Driver","Basic Configuration"]},"856":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3733 Driver"]},"857":{"title":"LED Mapping","titles":["IS31FL3733 Driver"]},"858":{"title":"API","titles":["IS31FL3733 Driver"]},"859":{"title":"struct is31fl3733_led_t","titles":["IS31FL3733 Driver","API"]},"860":{"title":"Members","titles":["IS31FL3733 Driver","API","struct is31fl3733_led_t"]},"861":{"title":"void is31fl3733_init(uint8_t index)","titles":["IS31FL3733 Driver","API"]},"862":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_init(uint8_t index)"]},"863":{"title":"void is31fl3733_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3733 Driver","API"]},"864":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"865":{"title":"void is31fl3733_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3733 Driver","API"]},"866":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_select_page(uint8_t index, uint8_t page)"]},"867":{"title":"void is31fl3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3733 Driver","API"]},"868":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"869":{"title":"void is31fl3733_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3733 Driver","API"]},"870":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"871":{"title":"void is31fl3733_set_value(int index, uint8_t value)","titles":["IS31FL3733 Driver","API"]},"872":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_set_value(int index, uint8_t value)"]},"873":{"title":"void is31fl3733_set_value_all(uint8_t value)","titles":["IS31FL3733 Driver","API"]},"874":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_set_value_all(uint8_t value)"]},"875":{"title":"void is31fl3733_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["IS31FL3733 Driver","API"]},"876":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"877":{"title":"void is31fl3733_set_led_control_register(uint8_t index, bool value)","titles":["IS31FL3733 Driver","API"]},"878":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_set_led_control_register(uint8_t index, bool value)"]},"879":{"title":"void is31fl3733_update_pwm_buffers(uint8_t index)","titles":["IS31FL3733 Driver","API"]},"880":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_update_pwm_buffers(uint8_t index)"]},"881":{"title":"void is31fl3733_update_led_control_registers(uint8_t index)","titles":["IS31FL3733 Driver","API"]},"882":{"title":"Arguments","titles":["IS31FL3733 Driver","API","void is31fl3733_update_led_control_registers(uint8_t index)"]},"883":{"title":"IS31FL3736 Driver","titles":[]},"884":{"title":"Usage","titles":["IS31FL3736 Driver"]},"885":{"title":"Basic Configuration","titles":["IS31FL3736 Driver"]},"886":{"title":"I²C Addressing","titles":["IS31FL3736 Driver","Basic Configuration"]},"887":{"title":"PWM Frequency","titles":["IS31FL3736 Driver","Basic Configuration"]},"888":{"title":"De-Ghosting","titles":["IS31FL3736 Driver","Basic Configuration"]},"889":{"title":"Global Current Control","titles":["IS31FL3736 Driver","Basic Configuration"]},"890":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3736 Driver"]},"891":{"title":"LED Mapping","titles":["IS31FL3736 Driver"]},"892":{"title":"API","titles":["IS31FL3736 Driver"]},"893":{"title":"struct is31fl3736_led_t","titles":["IS31FL3736 Driver","API"]},"894":{"title":"Members","titles":["IS31FL3736 Driver","API","struct is31fl3736_led_t"]},"895":{"title":"void is31fl3736_init(uint8_t index)","titles":["IS31FL3736 Driver","API"]},"896":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_init(uint8_t index)"]},"897":{"title":"void is31fl3736_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3736 Driver","API"]},"898":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"899":{"title":"void is31fl3736_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3736 Driver","API"]},"900":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_select_page(uint8_t index, uint8_t page)"]},"901":{"title":"void is31fl3736_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3736 Driver","API"]},"902":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"903":{"title":"void is31fl3736_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3736 Driver","API"]},"904":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"905":{"title":"void is31fl3736_set_value(int index, uint8_t value)","titles":["IS31FL3736 Driver","API"]},"906":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_set_value(int index, uint8_t value)"]},"907":{"title":"void is31fl3736_set_value_all(uint8_t value)","titles":["IS31FL3736 Driver","API"]},"908":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_set_value_all(uint8_t value)"]},"909":{"title":"void is31fl3736_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["IS31FL3736 Driver","API"]},"910":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"911":{"title":"void is31fl3736_set_led_control_register(uint8_t index, bool value)","titles":["IS31FL3736 Driver","API"]},"912":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_set_led_control_register(uint8_t index, bool value)"]},"913":{"title":"void is31fl3736_update_pwm_buffers(uint8_t index)","titles":["IS31FL3736 Driver","API"]},"914":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_update_pwm_buffers(uint8_t index)"]},"915":{"title":"void is31fl3736_update_led_control_registers(uint8_t index)","titles":["IS31FL3736 Driver","API"]},"916":{"title":"Arguments","titles":["IS31FL3736 Driver","API","void is31fl3736_update_led_control_registers(uint8_t index)"]},"917":{"title":"IS31FL3737 Driver","titles":[]},"918":{"title":"Usage","titles":["IS31FL3737 Driver"]},"919":{"title":"Basic Configuration","titles":["IS31FL3737 Driver"]},"920":{"title":"I²C Addressing","titles":["IS31FL3737 Driver","Basic Configuration"]},"921":{"title":"PWM Frequency","titles":["IS31FL3737 Driver","Basic Configuration"]},"922":{"title":"De-Ghosting","titles":["IS31FL3737 Driver","Basic Configuration"]},"923":{"title":"Global Current Control","titles":["IS31FL3737 Driver","Basic Configuration"]},"924":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3737 Driver"]},"925":{"title":"LED Mapping","titles":["IS31FL3737 Driver"]},"926":{"title":"API","titles":["IS31FL3737 Driver"]},"927":{"title":"struct is31fl3737_led_t","titles":["IS31FL3737 Driver","API"]},"928":{"title":"Members","titles":["IS31FL3737 Driver","API","struct is31fl3737_led_t"]},"929":{"title":"void is31fl3737_init(uint8_t index)","titles":["IS31FL3737 Driver","API"]},"930":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_init(uint8_t index)"]},"931":{"title":"void is31fl3737_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3737 Driver","API"]},"932":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"933":{"title":"void is31fl3737_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3737 Driver","API"]},"934":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_select_page(uint8_t index, uint8_t page)"]},"935":{"title":"void is31fl3737_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3737 Driver","API"]},"936":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"937":{"title":"void is31fl3737_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3737 Driver","API"]},"938":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"939":{"title":"void is31fl3737_set_value(int index, uint8_t value)","titles":["IS31FL3737 Driver","API"]},"940":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_set_value(int index, uint8_t value)"]},"941":{"title":"void is31fl3737_set_value_all(uint8_t value)","titles":["IS31FL3737 Driver","API"]},"942":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_set_value_all(uint8_t value)"]},"943":{"title":"void is31fl3737_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["IS31FL3737 Driver","API"]},"944":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"945":{"title":"void is31fl3737_set_led_control_register(uint8_t index, bool value)","titles":["IS31FL3737 Driver","API"]},"946":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_set_led_control_register(uint8_t index, bool value)"]},"947":{"title":"void is31fl3737_update_pwm_buffers(uint8_t index)","titles":["IS31FL3737 Driver","API"]},"948":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_update_pwm_buffers(uint8_t index)"]},"949":{"title":"void is31fl3737_update_led_control_registers(uint8_t index)","titles":["IS31FL3737 Driver","API"]},"950":{"title":"Arguments","titles":["IS31FL3737 Driver","API","void is31fl3737_update_led_control_registers(uint8_t index)"]},"951":{"title":"IS31FL3741 Driver","titles":[]},"952":{"title":"Usage","titles":["IS31FL3741 Driver"]},"953":{"title":"Basic Configuration","titles":["IS31FL3741 Driver"]},"954":{"title":"I²C Addressing","titles":["IS31FL3741 Driver","Basic Configuration"]},"955":{"title":"PWM Frequency","titles":["IS31FL3741 Driver","Basic Configuration"]},"956":{"title":"De-Ghosting","titles":["IS31FL3741 Driver","Basic Configuration"]},"957":{"title":"Global Current Control","titles":["IS31FL3741 Driver","Basic Configuration"]},"958":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3741 Driver"]},"959":{"title":"LED Mapping","titles":["IS31FL3741 Driver"]},"960":{"title":"API","titles":["IS31FL3741 Driver"]},"961":{"title":"struct is31fl3741_led_t","titles":["IS31FL3741 Driver","API"]},"962":{"title":"Members","titles":["IS31FL3741 Driver","API","struct is31fl3741_led_t"]},"963":{"title":"void is31fl3741_init(uint8_t index)","titles":["IS31FL3741 Driver","API"]},"964":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_init(uint8_t index)"]},"965":{"title":"void is31fl3741_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3741 Driver","API"]},"966":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"967":{"title":"void is31fl3741_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3741 Driver","API"]},"968":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_select_page(uint8_t index, uint8_t page)"]},"969":{"title":"void is31fl3741_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3741 Driver","API"]},"970":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"971":{"title":"void is31fl3741_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3741 Driver","API"]},"972":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"973":{"title":"void is31fl3741_set_value(int index, uint8_t value)","titles":["IS31FL3741 Driver","API"]},"974":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_set_value(int index, uint8_t value)"]},"975":{"title":"void is31fl3741_set_value_all(uint8_t value)","titles":["IS31FL3741 Driver","API"]},"976":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_set_value_all(uint8_t value)"]},"977":{"title":"void is31fl3741_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["IS31FL3741 Driver","API"]},"978":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"979":{"title":"void is31fl3741_set_led_control_register(uint8_t index, bool value)","titles":["IS31FL3741 Driver","API"]},"980":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_set_led_control_register(uint8_t index, bool value)"]},"981":{"title":"void is31fl3741_update_pwm_buffers(uint8_t index)","titles":["IS31FL3741 Driver","API"]},"982":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_update_pwm_buffers(uint8_t index)"]},"983":{"title":"void is31fl3741_update_led_control_registers(uint8_t index)","titles":["IS31FL3741 Driver","API"]},"984":{"title":"Arguments","titles":["IS31FL3741 Driver","API","void is31fl3741_update_led_control_registers(uint8_t index)"]},"985":{"title":"IS31FL3742A Driver","titles":[]},"986":{"title":"Usage","titles":["IS31FL3742A Driver"]},"987":{"title":"Basic Configuration","titles":["IS31FL3742A Driver"]},"988":{"title":"I²C Addressing","titles":["IS31FL3742A Driver","Basic Configuration"]},"989":{"title":"PWM Frequency","titles":["IS31FL3742A Driver","Basic Configuration"]},"990":{"title":"De-Ghosting","titles":["IS31FL3742A Driver","Basic Configuration"]},"991":{"title":"Global Current Control","titles":["IS31FL3742A Driver","Basic Configuration"]},"992":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3742A Driver"]},"993":{"title":"LED Mapping","titles":["IS31FL3742A Driver"]},"994":{"title":"API","titles":["IS31FL3742A Driver"]},"995":{"title":"struct is31fl3742a_led_t","titles":["IS31FL3742A Driver","API"]},"996":{"title":"Members","titles":["IS31FL3742A Driver","API","struct is31fl3742a_led_t"]},"997":{"title":"void is31fl3742a_init(uint8_t index)","titles":["IS31FL3742A Driver","API"]},"998":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_init(uint8_t index)"]},"999":{"title":"void is31fl3742a_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3742A Driver","API"]},"1000":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"1001":{"title":"void is31fl3742a_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3742A Driver","API"]},"1002":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_select_page(uint8_t index, uint8_t page)"]},"1003":{"title":"void is31fl3742a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3742A Driver","API"]},"1004":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"1005":{"title":"void is31fl3742a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3742A Driver","API"]},"1006":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"1007":{"title":"void is31fl3742a_set_value(int index, uint8_t value)","titles":["IS31FL3742A Driver","API"]},"1008":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_set_value(int index, uint8_t value)"]},"1009":{"title":"void is31fl3742a_set_value_all(uint8_t value)","titles":["IS31FL3742A Driver","API"]},"1010":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_set_value_all(uint8_t value)"]},"1011":{"title":"void is31fl3742a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3742A Driver","API"]},"1012":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)"]},"1013":{"title":"void is31fl3742a_set_scaling_register(uint8_t index, uint8_t value)","titles":["IS31FL3742A Driver","API"]},"1014":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_set_scaling_register(uint8_t index, uint8_t value)"]},"1015":{"title":"void is31fl3742a_update_pwm_buffers(uint8_t index)","titles":["IS31FL3742A Driver","API"]},"1016":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_update_pwm_buffers(uint8_t index)"]},"1017":{"title":"void is31fl3742a_update_scaling_registers(uint8_t index)","titles":["IS31FL3742A Driver","API"]},"1018":{"title":"Arguments","titles":["IS31FL3742A Driver","API","void is31fl3742a_update_scaling_registers(uint8_t index)"]},"1019":{"title":"IS31FL3743A Driver","titles":[]},"1020":{"title":"Usage","titles":["IS31FL3743A Driver"]},"1021":{"title":"Basic Configuration","titles":["IS31FL3743A Driver"]},"1022":{"title":"I²C Addressing","titles":["IS31FL3743A Driver","Basic Configuration"]},"1023":{"title":"Multi-Driver Synchronization","titles":["IS31FL3743A Driver","Basic Configuration"]},"1024":{"title":"De-Ghosting","titles":["IS31FL3743A Driver","Basic Configuration"]},"1025":{"title":"Global Current Control","titles":["IS31FL3743A Driver","Basic Configuration"]},"1026":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3743A Driver"]},"1027":{"title":"LED Mapping","titles":["IS31FL3743A Driver"]},"1028":{"title":"API","titles":["IS31FL3743A Driver"]},"1029":{"title":"struct is31fl3743a_led_t","titles":["IS31FL3743A Driver","API"]},"1030":{"title":"Members","titles":["IS31FL3743A Driver","API","struct is31fl3743a_led_t"]},"1031":{"title":"void is31fl3743a_init(uint8_t index)","titles":["IS31FL3743A Driver","API"]},"1032":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_init(uint8_t index)"]},"1033":{"title":"void is31fl3743a_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3743A Driver","API"]},"1034":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"1035":{"title":"void is31fl3743a_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3743A Driver","API"]},"1036":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_select_page(uint8_t index, uint8_t page)"]},"1037":{"title":"void is31fl3743a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3743A Driver","API"]},"1038":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"1039":{"title":"void is31fl3743a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3743A Driver","API"]},"1040":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"1041":{"title":"void is31fl3743a_set_value(int index, uint8_t value)","titles":["IS31FL3743A Driver","API"]},"1042":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_set_value(int index, uint8_t value)"]},"1043":{"title":"void is31fl3743a_set_value_all(uint8_t value)","titles":["IS31FL3743A Driver","API"]},"1044":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_set_value_all(uint8_t value)"]},"1045":{"title":"void is31fl3743a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3743A Driver","API"]},"1046":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)"]},"1047":{"title":"void is31fl3743a_set_scaling_register(uint8_t index, uint8_t value)","titles":["IS31FL3743A Driver","API"]},"1048":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_set_scaling_register(uint8_t index, uint8_t value)"]},"1049":{"title":"void is31fl3743a_update_pwm_buffers(uint8_t index)","titles":["IS31FL3743A Driver","API"]},"1050":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_update_pwm_buffers(uint8_t index)"]},"1051":{"title":"void is31fl3743a_update_scaling_registers(uint8_t index)","titles":["IS31FL3743A Driver","API"]},"1052":{"title":"Arguments","titles":["IS31FL3743A Driver","API","void is31fl3743a_update_scaling_registers(uint8_t index)"]},"1053":{"title":"IS31FL3745 Driver","titles":[]},"1054":{"title":"Usage","titles":["IS31FL3745 Driver"]},"1055":{"title":"Basic Configuration","titles":["IS31FL3745 Driver"]},"1056":{"title":"I²C Addressing","titles":["IS31FL3745 Driver","Basic Configuration"]},"1057":{"title":"Multi-Driver Synchronization","titles":["IS31FL3745 Driver","Basic Configuration"]},"1058":{"title":"De-Ghosting","titles":["IS31FL3745 Driver","Basic Configuration"]},"1059":{"title":"Global Current Control","titles":["IS31FL3745 Driver","Basic Configuration"]},"1060":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3745 Driver"]},"1061":{"title":"LED Mapping","titles":["IS31FL3745 Driver"]},"1062":{"title":"API","titles":["IS31FL3745 Driver"]},"1063":{"title":"struct is31fl3745_led_t","titles":["IS31FL3745 Driver","API"]},"1064":{"title":"Members","titles":["IS31FL3745 Driver","API","struct is31fl3745_led_t"]},"1065":{"title":"void is31fl3745_init(uint8_t index)","titles":["IS31FL3745 Driver","API"]},"1066":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_init(uint8_t index)"]},"1067":{"title":"void is31fl3745_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3745 Driver","API"]},"1068":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"1069":{"title":"void is31fl3745_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3745 Driver","API"]},"1070":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_select_page(uint8_t index, uint8_t page)"]},"1071":{"title":"void is31fl3745_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3745 Driver","API"]},"1072":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"1073":{"title":"void is31fl3745_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3745 Driver","API"]},"1074":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"1075":{"title":"void is31fl3745_set_value(int index, uint8_t value)","titles":["IS31FL3745 Driver","API"]},"1076":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_set_value(int index, uint8_t value)"]},"1077":{"title":"void is31fl3745_set_value_all(uint8_t value)","titles":["IS31FL3745 Driver","API"]},"1078":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_set_value_all(uint8_t value)"]},"1079":{"title":"void is31fl3745_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3745 Driver","API"]},"1080":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)"]},"1081":{"title":"void is31fl3745_set_scaling_register(uint8_t index, uint8_t value)","titles":["IS31FL3745 Driver","API"]},"1082":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_set_scaling_register(uint8_t index, uint8_t value)"]},"1083":{"title":"void is31fl3745_update_pwm_buffers(uint8_t index)","titles":["IS31FL3745 Driver","API"]},"1084":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_update_pwm_buffers(uint8_t index)"]},"1085":{"title":"void is31fl3745_update_scaling_registers(uint8_t index)","titles":["IS31FL3745 Driver","API"]},"1086":{"title":"Arguments","titles":["IS31FL3745 Driver","API","void is31fl3745_update_scaling_registers(uint8_t index)"]},"1087":{"title":"IS31FL3746A Driver","titles":[]},"1088":{"title":"Usage","titles":["IS31FL3746A Driver"]},"1089":{"title":"Basic Configuration","titles":["IS31FL3746A Driver"]},"1090":{"title":"I²C Addressing","titles":["IS31FL3746A Driver","Basic Configuration"]},"1091":{"title":"PWM Frequency","titles":["IS31FL3746A Driver","Basic Configuration"]},"1092":{"title":"De-Ghosting","titles":["IS31FL3746A Driver","Basic Configuration"]},"1093":{"title":"Global Current Control","titles":["IS31FL3746A Driver","Basic Configuration"]},"1094":{"title":"ARM/ChibiOS Configuration","titles":["IS31FL3746A Driver"]},"1095":{"title":"LED Mapping","titles":["IS31FL3746A Driver"]},"1096":{"title":"API","titles":["IS31FL3746A Driver"]},"1097":{"title":"struct is31fl3746a_led_t","titles":["IS31FL3746A Driver","API"]},"1098":{"title":"Members","titles":["IS31FL3746A Driver","API","struct is31fl3746a_led_t"]},"1099":{"title":"void is31fl3746a_init(uint8_t index)","titles":["IS31FL3746A Driver","API"]},"1100":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_init(uint8_t index)"]},"1101":{"title":"void is31fl3746a_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["IS31FL3746A Driver","API"]},"1102":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"1103":{"title":"void is31fl3746a_select_page(uint8_t index, uint8_t page)","titles":["IS31FL3746A Driver","API"]},"1104":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_select_page(uint8_t index, uint8_t page)"]},"1105":{"title":"void is31fl3746a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3746A Driver","API"]},"1106":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"1107":{"title":"void is31fl3746a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3746A Driver","API"]},"1108":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"1109":{"title":"void is31fl3746a_set_value(int index, uint8_t value)","titles":["IS31FL3746A Driver","API"]},"1110":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_set_value(int index, uint8_t value)"]},"1111":{"title":"void is31fl3746a_set_value_all(uint8_t value)","titles":["IS31FL3746A Driver","API"]},"1112":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_set_value_all(uint8_t value)"]},"1113":{"title":"void is31fl3746a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)","titles":["IS31FL3746A Driver","API"]},"1114":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)"]},"1115":{"title":"void is31fl3746a_set_scaling_register(uint8_t index, uint8_t value)","titles":["IS31FL3746A Driver","API"]},"1116":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_set_scaling_register(uint8_t index, uint8_t value)"]},"1117":{"title":"void is31fl3746a_update_pwm_buffers(uint8_t index)","titles":["IS31FL3746A Driver","API"]},"1118":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_update_pwm_buffers(uint8_t index)"]},"1119":{"title":"void is31fl3746a_update_scaling_registers(uint8_t index)","titles":["IS31FL3746A Driver","API"]},"1120":{"title":"Arguments","titles":["IS31FL3746A Driver","API","void is31fl3746a_update_scaling_registers(uint8_t index)"]},"1121":{"title":"'serial' Driver","titles":[]},"1122":{"title":"Bitbang","titles":["'serial' Driver"]},"1123":{"title":"Pin configuration","titles":["'serial' Driver","Bitbang"]},"1124":{"title":"Setup","titles":["'serial' Driver","Bitbang"]},"1125":{"title":"USART Half-duplex","titles":["'serial' Driver"]},"1126":{"title":"Pin configuration","titles":["'serial' Driver","USART Half-duplex"]},"1127":{"title":"Setup","titles":["'serial' Driver","USART Half-duplex"]},"1128":{"title":"USART Full-duplex","titles":["'serial' Driver"]},"1129":{"title":"Pin configuration","titles":["'serial' Driver","USART Full-duplex"]},"1130":{"title":"Setup","titles":["'serial' Driver","USART Full-duplex"]},"1131":{"title":"Choosing a driver subsystem","titles":["'serial' Driver"]},"1132":{"title":"The SERIAL driver","titles":["'serial' Driver","Choosing a driver subsystem"]},"1133":{"title":"The SIO driver","titles":["'serial' Driver","Choosing a driver subsystem"]},"1134":{"title":"The PIO driver","titles":["'serial' Driver","Choosing a driver subsystem"]},"1135":{"title":"Advanced Configuration","titles":["'serial' Driver"]},"1136":{"title":"Baudrate","titles":["'serial' Driver","Advanced Configuration"]},"1137":{"title":"Timeout","titles":["'serial' Driver","Advanced Configuration"]},"1138":{"title":"Troubleshooting","titles":["'serial' Driver"]},"1139":{"title":"Alternate Functions for selected STM32 MCUs","titles":["'serial' Driver"]},"1140":{"title":"STM32F303 / Proton-C","titles":["'serial' Driver","Alternate Functions for selected STM32 MCUs"]},"1141":{"title":"STM32F072","titles":["'serial' Driver","Alternate Functions for selected STM32 MCUs"]},"1142":{"title":"STM32F103 Medium Density (C8-CB)","titles":["'serial' Driver","Alternate Functions for selected STM32 MCUs"]},"1143":{"title":"SNLED27351 Driver","titles":[]},"1144":{"title":"Usage","titles":["SNLED27351 Driver"]},"1145":{"title":"Basic Configuration","titles":["SNLED27351 Driver"]},"1146":{"title":"I²C Addressing","titles":["SNLED27351 Driver","Basic Configuration"]},"1147":{"title":"ARM/ChibiOS Configuration","titles":["SNLED27351 Driver"]},"1148":{"title":"LED Mapping","titles":["SNLED27351 Driver"]},"1149":{"title":"API","titles":["SNLED27351 Driver"]},"1150":{"title":"struct snled27351_led_t","titles":["SNLED27351 Driver","API"]},"1151":{"title":"Members","titles":["SNLED27351 Driver","API","struct snled27351_led_t"]},"1152":{"title":"void snled27351_init(uint8_t index)","titles":["SNLED27351 Driver","API"]},"1153":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_init(uint8_t index)"]},"1154":{"title":"void snled27351_write_register(uint8_t index, uint8_t reg, uint8_t data)","titles":["SNLED27351 Driver","API"]},"1155":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_write_register(uint8_t index, uint8_t reg, uint8_t data)"]},"1156":{"title":"void snled27351_select_page(uint8_t index, uint8_t page)","titles":["SNLED27351 Driver","API"]},"1157":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_select_page(uint8_t index, uint8_t page)"]},"1158":{"title":"void snled27351_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)","titles":["SNLED27351 Driver","API"]},"1159":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)"]},"1160":{"title":"void snled27351_set_color_all(uint8_t red, uint8_t green, uint8_t blue)","titles":["SNLED27351 Driver","API"]},"1161":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_set_color_all(uint8_t red, uint8_t green, uint8_t blue)"]},"1162":{"title":"void snled27351_set_value(int index, uint8_t value)","titles":["SNLED27351 Driver","API"]},"1163":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_set_value(int index, uint8_t value)"]},"1164":{"title":"void snled27351_set_value_all(uint8_t value)","titles":["SNLED27351 Driver","API"]},"1165":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_set_value_all(uint8_t value)"]},"1166":{"title":"void snled27351_set_led_control_register(uint8_t index, bool red, bool green, bool blue)","titles":["SNLED27351 Driver","API"]},"1167":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_set_led_control_register(uint8_t index, bool red, bool green, bool blue)"]},"1168":{"title":"void snled27351_set_led_control_register(uint8_t index, bool value)","titles":["SNLED27351 Driver","API"]},"1169":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_set_led_control_register(uint8_t index, bool value)"]},"1170":{"title":"void snled27351_update_pwm_buffers(uint8_t index)","titles":["SNLED27351 Driver","API"]},"1171":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_update_pwm_buffers(uint8_t index)"]},"1172":{"title":"void snled27351_update_led_control_registers(uint8_t index)","titles":["SNLED27351 Driver","API"]},"1173":{"title":"Arguments","titles":["SNLED27351 Driver","API","void snled27351_update_led_control_registers(uint8_t index)"]},"1174":{"title":"SPI Master Driver","titles":[]},"1175":{"title":"Usage","titles":["SPI Master Driver"]},"1176":{"title":"AVR Configuration","titles":["SPI Master Driver"]},"1177":{"title":"ChibiOS/ARM Configuration","titles":["SPI Master Driver"]},"1178":{"title":"API","titles":["SPI Master Driver"]},"1179":{"title":"void spi_init(void)","titles":["SPI Master Driver","API"]},"1180":{"title":"bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor)","titles":["SPI Master Driver","API"]},"1181":{"title":"Arguments","titles":["SPI Master Driver","API","bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor)"]},"1182":{"title":"Return Value","titles":["SPI Master Driver","API","bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor)"]},"1183":{"title":"spi_status_t spi_write(uint8_t data)","titles":["SPI Master Driver","API"]},"1184":{"title":"Arguments","titles":["SPI Master Driver","API","spi_status_t spi_write(uint8_t data)"]},"1185":{"title":"Return Value","titles":["SPI Master Driver","API","spi_status_t spi_write(uint8_t data)"]},"1186":{"title":"spi_status_t spi_read(void)","titles":["SPI Master Driver","API"]},"1187":{"title":"Return Value","titles":["SPI Master Driver","API","spi_status_t spi_read(void)"]},"1188":{"title":"spi_status_t spi_transmit(const uint8_t *data, uint16_t length)","titles":["SPI Master Driver","API"]},"1189":{"title":"Arguments","titles":["SPI Master Driver","API","spi_status_t spi_transmit(const uint8_t *data, uint16_t length)"]},"1190":{"title":"Return Value","titles":["SPI Master Driver","API","spi_status_t spi_transmit(const uint8_t *data, uint16_t length)"]},"1191":{"title":"spi_status_t spi_receive(uint8_t *data, uint16_t length)","titles":["SPI Master Driver","API"]},"1192":{"title":"Arguments","titles":["SPI Master Driver","API","spi_status_t spi_receive(uint8_t *data, uint16_t length)"]},"1193":{"title":"Return Value","titles":["SPI Master Driver","API","spi_status_t spi_receive(uint8_t *data, uint16_t length)"]},"1194":{"title":"void spi_stop(void)","titles":["SPI Master Driver","API"]},"1195":{"title":"UART Driver","titles":[]},"1196":{"title":"Usage","titles":["UART Driver"]},"1197":{"title":"AVR Configuration","titles":["UART Driver"]},"1198":{"title":"ChibiOS/ARM Configuration","titles":["UART Driver"]},"1199":{"title":"API","titles":["UART Driver"]},"1200":{"title":"void uart_init(uint32_t baud)","titles":["UART Driver","API"]},"1201":{"title":"Arguments","titles":["UART Driver","API","void uart_init(uint32_t baud)"]},"1202":{"title":"void uart_write(uint8_t data)","titles":["UART Driver","API"]},"1203":{"title":"Arguments","titles":["UART Driver","API","void uart_write(uint8_t data)"]},"1204":{"title":"uint8_t uart_read(void)","titles":["UART Driver","API"]},"1205":{"title":"Return Value","titles":["UART Driver","API","uint8_t uart_read(void)"]},"1206":{"title":"void uart_transmit(const uint8_t *data, uint16_t length)","titles":["UART Driver","API"]},"1207":{"title":"Arguments","titles":["UART Driver","API","void uart_transmit(const uint8_t *data, uint16_t length)"]},"1208":{"title":"void uart_receive(char *data, uint16_t length)","titles":["UART Driver","API"]},"1209":{"title":"Arguments","titles":["UART Driver","API","void uart_receive(char *data, uint16_t length)"]},"1210":{"title":"bool uart_available(void)","titles":["UART Driver","API"]},"1211":{"title":"Return Value","titles":["UART Driver","API","bool uart_available(void)"]},"1212":{"title":"WS2812 Driver","titles":[]},"1213":{"title":"Usage","titles":["WS2812 Driver"]},"1214":{"title":"Basic Configuration","titles":["WS2812 Driver"]},"1215":{"title":"Timing Adjustment","titles":["WS2812 Driver","Basic Configuration"]},"1216":{"title":"Byte Order","titles":["WS2812 Driver","Basic Configuration"]},"1217":{"title":"RGBW Support","titles":["WS2812 Driver","Basic Configuration"]},"1218":{"title":"Driver Configuration","titles":["WS2812 Driver"]},"1219":{"title":"Bitbang Driver","titles":["WS2812 Driver","Driver Configuration"]},"1220":{"title":"I2C Driver","titles":["WS2812 Driver","Driver Configuration"]},"1221":{"title":"PIO Driver","titles":["WS2812 Driver","Driver Configuration"]},"1222":{"title":"PWM Driver","titles":["WS2812 Driver","Driver Configuration"]},"1223":{"title":"SPI Driver","titles":["WS2812 Driver","Driver Configuration"]},"1224":{"title":"ChibiOS/ARM Configuration","titles":["WS2812 Driver"]},"1225":{"title":"Push-Pull and Open Drain","titles":["WS2812 Driver","ChibiOS/ARM Configuration"]},"1226":{"title":"SPI Driver","titles":["WS2812 Driver","ChibiOS/ARM Configuration"]},"1227":{"title":"Setting the Baudrate","titles":["WS2812 Driver","ChibiOS/ARM Configuration","SPI Driver"]},"1228":{"title":"Circular Buffer","titles":["WS2812 Driver","ChibiOS/ARM Configuration","SPI Driver"]},"1229":{"title":"PIO Driver","titles":["WS2812 Driver","ChibiOS/ARM Configuration"]},"1230":{"title":"PWM Driver","titles":["WS2812 Driver","ChibiOS/ARM Configuration"]},"1231":{"title":"API","titles":["WS2812 Driver"]},"1232":{"title":"void ws2812_setleds(rgb_led_t *ledarray, uint16_t number_of_leds)","titles":["WS2812 Driver","API"]},"1233":{"title":"Arguments","titles":["WS2812 Driver","API","void ws2812_setleds(rgb_led_t *ledarray, uint16_t number_of_leds)"]},"1234":{"title":"Easy Maker - Build One-Off Projects In Configurator","titles":[]},"1235":{"title":"Quickstart","titles":["Easy Maker - Build One-Off Projects In Configurator"]},"1236":{"title":"Direct Pin","titles":[]},"1237":{"title":"Frequently Asked Build Questions","titles":[]},"1238":{"title":"Can't Program on Linux","titles":["Frequently Asked Build Questions"]},"1239":{"title":"Linux udev Rules","titles":["Frequently Asked Build Questions","Can't Program on Linux"]},"1240":{"title":"Serial device is not detected in bootloader mode on Linux","titles":["Frequently Asked Build Questions","Can't Program on Linux"]},"1241":{"title":"Unknown Device for DFU Bootloader","titles":["Frequently Asked Build Questions"]},"1242":{"title":"USB VID and PID","titles":["Frequently Asked Build Questions"]},"1243":{"title":"I just flashed my keyboard and it does nothing/keypresses don't register - it's also ARM (rev6 planck, clueboard 60, hs60v2, etc...) (Feb 2019)","titles":["Frequently Asked Build Questions","USB VID and PID"]},"1244":{"title":"Debugging FAQ","titles":[]},"1245":{"title":"Debugging","titles":["Debugging FAQ"]},"1246":{"title":"Debugging Tools","titles":["Debugging FAQ"]},"1247":{"title":"Debugging With QMK Toolbox","titles":["Debugging FAQ","Debugging Tools"]},"1248":{"title":"Debugging with QMK CLI","titles":["Debugging FAQ","Debugging Tools"]},"1249":{"title":"Debugging With hid_listen","titles":["Debugging FAQ","Debugging Tools"]},"1250":{"title":"Sending Your Own Debug Messages","titles":["Debugging FAQ"]},"1251":{"title":"Debug Examples","titles":["Debugging FAQ"]},"1252":{"title":"Which matrix position is this keypress?","titles":["Debugging FAQ","Debug Examples"]},"1253":{"title":"How long did it take to scan for a keypress?","titles":["Debugging FAQ","Debug Examples"]},"1254":{"title":"hid_listen Can't Recognize Device","titles":["Debugging FAQ"]},"1255":{"title":"Can't Get Message on Console","titles":["Debugging FAQ"]},"1256":{"title":"Frequently Asked Questions","titles":[]},"1257":{"title":"What is QMK?","titles":["Frequently Asked Questions"]},"1258":{"title":"I don't know where to start!","titles":["Frequently Asked Questions"]},"1259":{"title":"How can I flash the firmware I built?","titles":["Frequently Asked Questions"]},"1260":{"title":"What if I have an issue that isn't covered here?","titles":["Frequently Asked Questions"]},"1261":{"title":"What if I found a bug?","titles":["Frequently Asked Questions"]},"1262":{"title":"But git and GitHub are intimidating!","titles":["Frequently Asked Questions"]},"1263":{"title":"I have a Keyboard that I want to add support for","titles":["Frequently Asked Questions"]},"1264":{"title":"What if I want to brand it with QMK?","titles":["Frequently Asked Questions","I have a Keyboard that I want to add support for"]},"1265":{"title":"What Differences Are There Between QMK and TMK?","titles":["Frequently Asked Questions"]},"1266":{"title":"Keymap FAQ","titles":[]},"1267":{"title":"What Keycodes Can I Use?","titles":["Keymap FAQ"]},"1268":{"title":"What Are the Default Keycodes?","titles":["Keymap FAQ"]},"1269":{"title":"How Can I Make Custom Names For Complex Keycodes?","titles":["Keymap FAQ"]},"1270":{"title":"My Keymap Doesn't Update When I Flash It","titles":["Keymap FAQ"]},"1271":{"title":"Some Of My Keys Are Swapped Or Not Working","titles":["Keymap FAQ"]},"1272":{"title":"The Menu Key Isn't Working","titles":["Keymap FAQ"]},"1273":{"title":"Power Keys Aren't Working","titles":["Keymap FAQ"]},"1274":{"title":"One Shot Modifier","titles":["Keymap FAQ"]},"1275":{"title":"Modifier/Layer Stuck","titles":["Keymap FAQ"]},"1276":{"title":"Mechanical Lock Switch Support","titles":["Keymap FAQ"]},"1277":{"title":"Input Special Characters Other Than ASCII like Cédille 'Ç'","titles":["Keymap FAQ"]},"1278":{"title":"Fn Key on macOS","titles":["Keymap FAQ"]},"1279":{"title":"Keys Supported in Mac OSX?","titles":["Keymap FAQ"]},"1280":{"title":"JIS Keys in Mac OSX","titles":["Keymap FAQ"]},"1281":{"title":"RN-42 Bluetooth Doesn't Work with Karabiner","titles":["Keymap FAQ"]},"1282":{"title":"Esc and ` on a Single Key","titles":["Keymap FAQ"]},"1283":{"title":"Eject on Mac OSX","titles":["Keymap FAQ"]},"1284":{"title":"What are "Real" and "Weak" modifiers?","titles":["Keymap FAQ"]},"1285":{"title":"Miscellaneous FAQ","titles":[]},"1286":{"title":"How do I test my keyboard?","titles":["Miscellaneous FAQ"]},"1287":{"title":"Safety Considerations","titles":["Miscellaneous FAQ"]},"1288":{"title":"NKRO Doesn't work","titles":["Miscellaneous FAQ"]},"1289":{"title":"TrackPoint Needs Reset Circuit (PS/2 Mouse Support)","titles":["Miscellaneous FAQ"]},"1290":{"title":"Can't Read Column of Matrix Beyond 16","titles":["Miscellaneous FAQ"]},"1291":{"title":"Special Extra Key Doesn't Work (System, Audio Control Keys)","titles":["Miscellaneous FAQ"]},"1292":{"title":"Wake from Sleep Doesn't Work","titles":["Miscellaneous FAQ"]},"1293":{"title":"Using Arduino?","titles":["Miscellaneous FAQ"]},"1294":{"title":"Enabling JTAG","titles":["Miscellaneous FAQ"]},"1295":{"title":"USB 3 Compatibility","titles":["Miscellaneous FAQ"]},"1296":{"title":"Mac Compatibility","titles":["Miscellaneous FAQ"]},"1297":{"title":"OS X 10.11 and Hub","titles":["Miscellaneous FAQ","Mac Compatibility"]},"1298":{"title":"Problem in BIOS (UEFI) Setup/Resume (Sleep & Wake)/Power Cycles","titles":["Miscellaneous FAQ"]},"1299":{"title":"Modifier Keys","titles":[]},"1300":{"title":"Checking Modifier State","titles":[]},"1301":{"title":"Examples","titles":["Checking Modifier State"]},"1302":{"title":"Alt + Escape for Alt + Tab","titles":["Checking Modifier State","Examples"]},"1303":{"title":"Shift + Backspace for Delete","titles":["Checking Modifier State","Examples"]},"1304":{"title":"Advanced topics","titles":[]},"1305":{"title":"Layers","titles":["Advanced topics"]},"1306":{"title":"Mod-Tap","titles":["Advanced topics"]},"1307":{"title":"One Shot Keys","titles":["Advanced topics"]},"1308":{"title":"Tap-Hold Configuration Options","titles":["Advanced topics"]},"1309":{"title":"Key Overrides","titles":["Advanced topics"]},"1310":{"title":"Converters","titles":[]},"1311":{"title":"Supported Converters","titles":["Converters"]},"1312":{"title":"Overview","titles":["Converters"]},"1313":{"title":"Conditional Configuration","titles":["Converters","Overview"]},"1314":{"title":"Pin Compatibility","titles":["Converters","Overview"]},"1315":{"title":"Pro Micro","titles":["Converters"]},"1316":{"title":"Proton C","titles":["Converters","Pro Micro"]},"1317":{"title":"Adafruit KB2040","titles":["Converters","Pro Micro"]},"1318":{"title":"SparkFun Pro Micro - RP2040, Blok, Bit-C PRO and Michi","titles":["Converters","Pro Micro"]},"1319":{"title":"STeMCell","titles":["Converters","Pro Micro"]},"1320":{"title":"Bonsai C4","titles":["Converters","Pro Micro"]},"1321":{"title":"RP2040 Community Edition - Elite-Pi, Helios, and Liatris","titles":["Converters","Pro Micro"]},"1322":{"title":"Elite-C","titles":["Converters"]},"1323":{"title":"STeMCell {#stemcell}_elite","titles":["Converters","Elite-C"]},"1324":{"title":"RP2040 Community Edition","titles":["Converters","Elite-C"]},"1325":{"title":"Contact bounce / contact chatter","titles":[]},"1326":{"title":"Types of debounce algorithms","titles":["Contact bounce / contact chatter"]},"1327":{"title":"Supported Debounce Algorithms","titles":["Contact bounce / contact chatter"]},"1328":{"title":"Debounce Time","titles":["Contact bounce / contact chatter","Supported Debounce Algorithms"]},"1329":{"title":"Debounce Method","titles":["Contact bounce / contact chatter","Supported Debounce Algorithms"]},"1330":{"title":"Implementing your own debouncing code","titles":["Contact bounce / contact chatter","Supported Debounce Algorithms"]},"1331":{"title":"Persistent Configuration (EEPROM)","titles":[]},"1332":{"title":"Example Implementation","titles":["Persistent Configuration (EEPROM)"]},"1333":{"title":"'EECONFIG' Function Documentation","titles":["Persistent Configuration (EEPROM)"]},"1334":{"title":"Layers","titles":[]},"1335":{"title":"Switching and Toggling Layers","titles":["Layers"]},"1336":{"title":"Caveats","titles":["Layers","Switching and Toggling Layers"]},"1337":{"title":"Working with Layers","titles":["Layers"]},"1338":{"title":"Beginners","titles":["Layers","Working with Layers"]},"1339":{"title":"Intermediate Users","titles":["Layers","Working with Layers"]},"1340":{"title":"Advanced Users","titles":["Layers","Working with Layers"]},"1341":{"title":"Functions","titles":["Layers"]},"1342":{"title":"Layer Change Code","titles":["Layers"]},"1343":{"title":"Example layer_state_set_* Implementation","titles":["Layers","Layer Change Code"]},"1344":{"title":"Example: Keycode to cycle through layers","titles":["Layers","Layer Change Code"]},"1345":{"title":"layer_state_set_* Function Documentation","titles":["Layers","Layer Change Code"]},"1346":{"title":"Layouts: Using a Keymap with Multiple Keyboards","titles":[]},"1347":{"title":"Supporting a Layout","titles":["Layouts: Using a Keymap with Multiple Keyboards"]},"1348":{"title":"Building a Keymap","titles":["Layouts: Using a Keymap with Multiple Keyboards"]},"1349":{"title":"Conflicting layouts","titles":["Layouts: Using a Keymap with Multiple Keyboards","Building a Keymap"]},"1350":{"title":"Tips for Making Layouts Keyboard-Agnostic","titles":["Layouts: Using a Keymap with Multiple Keyboards"]},"1351":{"title":"Includes","titles":["Layouts: Using a Keymap with Multiple Keyboards","Tips for Making Layouts Keyboard-Agnostic"]},"1352":{"title":"Keymaps","titles":["Layouts: Using a Keymap with Multiple Keyboards","Tips for Making Layouts Keyboard-Agnostic"]},"1353":{"title":"Macros","titles":[]},"1354":{"title":"Using Macros In JSON Keymaps","titles":["Macros"]},"1355":{"title":"Selecting Your Host Keyboard Layout","titles":["Macros","Using Macros In JSON Keymaps"]},"1356":{"title":"Macro Basics","titles":["Macros","Using Macros In JSON Keymaps"]},"1357":{"title":"Object Format","titles":["Macros","Using Macros In JSON Keymaps","Macro Basics"]},"1358":{"title":"Using Macros in C Keymaps","titles":["Macros"]},"1359":{"title":"SEND_STRING() & process_record_user","titles":["Macros","Using Macros in C Keymaps"]},"1360":{"title":"Advanced Macros","titles":["Macros","Using Macros in C Keymaps","SEND_STRING() & process_record_user"]},"1361":{"title":"TAP, DOWN and UP","titles":["Macros","Using Macros in C Keymaps","SEND_STRING() & process_record_user"]},"1362":{"title":"Alternative Keymaps","titles":["Macros","Using Macros in C Keymaps","SEND_STRING() & process_record_user"]},"1363":{"title":"Strings in Memory","titles":["Macros","Using Macros in C Keymaps","SEND_STRING() & process_record_user"]},"1364":{"title":"Advanced Macro Functions","titles":["Macros","Using Macros in C Keymaps"]},"1365":{"title":"record->event.pressed","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1366":{"title":"register_code(<kc>);","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1367":{"title":"unregister_code(<kc>);","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1368":{"title":"tap_code(<kc>);","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1369":{"title":"tap_code_delay(<kc>, <delay>);","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1370":{"title":"register_code16(<kc>);, unregister_code16(<kc>);, tap_code16(<kc>); and tap_code16_delay(<kc>, <delay>);","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1371":{"title":"clear_keyboard();","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1372":{"title":"clear_mods();","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1373":{"title":"clear_keyboard_but_mods();","titles":["Macros","Using Macros in C Keymaps","Advanced Macro Functions"]},"1374":{"title":"Advanced Example:","titles":["Macros","Using Macros in C Keymaps"]},"1375":{"title":"Super ALT↯TAB","titles":["Macros","Using Macros in C Keymaps","Advanced Example:"]},"1376":{"title":"Userspace: Sharing Code Between Keymaps","titles":[]},"1377":{"title":"Rules.mk","titles":["Userspace: Sharing Code Between Keymaps"]},"1378":{"title":"Override default userspace","titles":["Userspace: Sharing Code Between Keymaps","Rules.mk"]},"1379":{"title":"Configuration Options (config.h)","titles":["Userspace: Sharing Code Between Keymaps"]},"1380":{"title":"Readme (readme.md)","titles":["Userspace: Sharing Code Between Keymaps"]},"1381":{"title":"Build All Keyboards That Support a Specific Keymap","titles":["Userspace: Sharing Code Between Keymaps"]},"1382":{"title":"Examples","titles":["Userspace: Sharing Code Between Keymaps"]},"1383":{"title":"Customized Functions","titles":["Userspace: Sharing Code Between Keymaps","Examples"]},"1384":{"title":"Custom Features","titles":["Userspace: Sharing Code Between Keymaps","Examples"]},"1385":{"title":"Consolidated Macros","titles":["Userspace: Sharing Code Between Keymaps","Examples"]},"1386":{"title":"Audio","titles":[]},"1387":{"title":"AVR based boards","titles":["Audio"]},"1388":{"title":"Wiring","titles":["Audio","AVR based boards"]},"1389":{"title":"ARM based boards","titles":["Audio"]},"1390":{"title":"DAC (basic)","titles":["Audio","ARM based boards"]},"1391":{"title":"Wiring:","titles":["Audio","ARM based boards","DAC (basic)"]},"1392":{"title":"Proton-C Example:","titles":["Audio","ARM based boards","DAC (basic)","Wiring:"]},"1393":{"title":"DAC (additive)","titles":["Audio","ARM based boards"]},"1394":{"title":"PWM (software)","titles":["Audio","ARM based boards"]},"1395":{"title":"Wiring","titles":["Audio","ARM based boards","PWM (software)"]},"1396":{"title":"PWM (hardware)","titles":["Audio","ARM based boards"]},"1397":{"title":"Tone Multiplexing","titles":["Audio"]},"1398":{"title":"Songs","titles":["Audio"]},"1399":{"title":"Audio Config","titles":["Audio"]},"1400":{"title":"Tempo","titles":["Audio"]},"1401":{"title":"ARM Audio Volume","titles":["Audio"]},"1402":{"title":"Voices","titles":["Audio"]},"1403":{"title":"Music Mode","titles":["Audio"]},"1404":{"title":"Music Mask","titles":["Audio","Music Mode"]},"1405":{"title":"Music Map","titles":["Audio","Music Mode"]},"1406":{"title":"Audio Click","titles":["Audio"]},"1407":{"title":"MIDI Functionality","titles":["Audio"]},"1408":{"title":"Audio Keycodes","titles":["Audio"]},"1409":{"title":"Auto Shift: Why Do We Need a Shift Key?","titles":[]},"1410":{"title":"Why Auto Shift?","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1411":{"title":"How Does It Work?","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1412":{"title":"Are There Limitations to Auto Shift?","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1413":{"title":"How Do I Enable Auto Shift?","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1414":{"title":"Modifiers","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1415":{"title":"Configuring Auto Shift","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1416":{"title":"AUTO_SHIFT_TIMEOUT (Value in ms)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1417":{"title":"NO_AUTO_SHIFT_SPECIAL (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1418":{"title":"NO_AUTO_SHIFT_TAB (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1419":{"title":"NO_AUTO_SHIFT_SYMBOLS (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1420":{"title":"NO_AUTO_SHIFT_NUMERIC (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1421":{"title":"NO_AUTO_SHIFT_ALPHA (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1422":{"title":"AUTO_SHIFT_ENTER (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1423":{"title":"Auto Shift Per Key","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1424":{"title":"AUTO_SHIFT_REPEAT (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1425":{"title":"AUTO_SHIFT_NO_AUTO_REPEAT (simple define)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1426":{"title":"AUTO_SHIFT_ALPHA (predefined key group)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1427":{"title":"AUTO_SHIFT_NUMERIC (predefined key group)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1428":{"title":"AUTO_SHIFT_SYMBOLS (predefined key group)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1429":{"title":"AUTO_SHIFT_SPECIAL (predefined key group)","titles":["Auto Shift: Why Do We Need a Shift Key?","Configuring Auto Shift"]},"1430":{"title":"Custom Shifted Values","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1431":{"title":"Retro Shift","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1432":{"title":"Retro Shift and Tap Hold Configurations","titles":["Auto Shift: Why Do We Need a Shift Key?","Retro Shift"]},"1433":{"title":"Using Auto Shift Setup","titles":["Auto Shift: Why Do We Need a Shift Key?"]},"1434":{"title":"Setup","titles":["Auto Shift: Why Do We Need a Shift Key?","Using Auto Shift Setup"]},"1435":{"title":"Use","titles":["Auto Shift: Why Do We Need a Shift Key?","Using Auto Shift Setup"]},"1436":{"title":"An Example Run","titles":["Auto Shift: Why Do We Need a Shift Key?","Using Auto Shift Setup","Use"]},"1437":{"title":"Autocorrect","titles":[]},"1438":{"title":"How does it work?","titles":["Autocorrect"]},"1439":{"title":"How do I enable Autocorrection","titles":["Autocorrect"]},"1440":{"title":"Customizing autocorrect library","titles":["Autocorrect"]},"1441":{"title":"Avoiding false triggers","titles":["Autocorrect","Customizing autocorrect library"]},"1442":{"title":"Overriding Autocorrect","titles":["Autocorrect"]},"1443":{"title":"Keycodes","titles":["Autocorrect","Overriding Autocorrect"]},"1444":{"title":"User Callback Functions","titles":["Autocorrect"]},"1445":{"title":"Process Autocorrect","titles":["Autocorrect","User Callback Functions"]},"1446":{"title":"Process Autocorrect Example","titles":["Autocorrect","User Callback Functions","Process Autocorrect"]},"1447":{"title":"Apply Autocorrect","titles":["Autocorrect","User Callback Functions"]},"1448":{"title":"Apply Autocorrect Example","titles":["Autocorrect","User Callback Functions","Apply Autocorrect"]},"1449":{"title":"Autocorrect Status","titles":["Autocorrect","User Callback Functions"]},"1450":{"title":"Appendix: Trie binary data format","titles":["Autocorrect"]},"1451":{"title":"Encoding","titles":["Autocorrect","Appendix: Trie binary data format"]},"1452":{"title":"Decoding","titles":["Autocorrect","Appendix: Trie binary data format"]},"1453":{"title":"Credits","titles":["Autocorrect"]},"1454":{"title":"Backlighting","titles":[]},"1455":{"title":"Usage","titles":["Backlighting"]},"1456":{"title":"Keycodes","titles":["Backlighting"]},"1457":{"title":"Basic Configuration","titles":["Backlighting"]},"1458":{"title":""On" State","titles":["Backlighting","Basic Configuration"]},"1459":{"title":"Multiple Backlight Pins","titles":["Backlighting","Basic Configuration"]},"1460":{"title":"Driver Configuration","titles":["Backlighting"]},"1461":{"title":"PWM Driver","titles":["Backlighting","Driver Configuration"]},"1462":{"title":"Timer Driver","titles":["Backlighting","Driver Configuration"]},"1463":{"title":"Software Driver","titles":["Backlighting","Driver Configuration"]},"1464":{"title":"Custom Driver","titles":["Backlighting","Driver Configuration"]},"1465":{"title":"AVR Configuration","titles":["Backlighting"]},"1466":{"title":"PWM Driver","titles":["Backlighting","AVR Configuration"]},"1467":{"title":"Timer Driver","titles":["Backlighting","AVR Configuration"]},"1468":{"title":"ChibiOS/ARM Configuration","titles":["Backlighting"]},"1469":{"title":"PWM Driver","titles":["Backlighting","ChibiOS/ARM Configuration"]},"1470":{"title":"Timer Driver","titles":["Backlighting","ChibiOS/ARM Configuration"]},"1471":{"title":"Example Schematic","titles":["Backlighting"]},"1472":{"title":"API","titles":["Backlighting"]},"1473":{"title":"void backlight_toggle(void)","titles":["Backlighting","API"]},"1474":{"title":"void backlight_enable(void)","titles":["Backlighting","API"]},"1475":{"title":"void backlight_disable(void)","titles":["Backlighting","API"]},"1476":{"title":"void backlight_step(void)","titles":["Backlighting","API"]},"1477":{"title":"void backlight_increase(void)","titles":["Backlighting","API"]},"1478":{"title":"void backlight_decrease(void)","titles":["Backlighting","API"]},"1479":{"title":"void backlight_level(uint8_t level)","titles":["Backlighting","API"]},"1480":{"title":"Arguments","titles":["Backlighting","API","void backlight_level(uint8_t level)"]},"1481":{"title":"uint8_t get_backlight_level(void)","titles":["Backlighting","API"]},"1482":{"title":"Return Value","titles":["Backlighting","API","uint8_t get_backlight_level(void)"]},"1483":{"title":"bool is_backlight_enabled(void)","titles":["Backlighting","API"]},"1484":{"title":"Return Value","titles":["Backlighting","API","bool is_backlight_enabled(void)"]},"1485":{"title":"void backlight_toggle_breathing(void)","titles":["Backlighting","API"]},"1486":{"title":"void backlight_enable_breathing(void)","titles":["Backlighting","API"]},"1487":{"title":"void backlight_disable_breathing(void)","titles":["Backlighting","API"]},"1488":{"title":"bool is_backlight_breathing(void)","titles":["Backlighting","API"]},"1489":{"title":"Return Value","titles":["Backlighting","API","bool is_backlight_breathing(void)"]},"1490":{"title":"Bluetooth","titles":[]},"1491":{"title":"Bluetooth Known Supported Hardware","titles":["Bluetooth"]},"1492":{"title":"Adafruit BLE SPI Friend","titles":["Bluetooth","Bluetooth Known Supported Hardware"]},"1493":{"title":"Bluetooth Rules.mk Options","titles":["Bluetooth"]},"1494":{"title":"Bluetooth Keycodes","titles":["Bluetooth"]},"1495":{"title":"Bootmagic","titles":[]},"1496":{"title":"Split Keyboards","titles":["Bootmagic"]},"1497":{"title":"Advanced Bootmagic","titles":["Bootmagic"]},"1498":{"title":"Addenda","titles":["Bootmagic"]},"1499":{"title":"Caps Word","titles":[]},"1500":{"title":"How do I enable Caps Word","titles":["Caps Word"]},"1501":{"title":"Troubleshooting: Command","titles":["Caps Word","How do I enable Caps Word"]},"1502":{"title":"Customizing Caps Word","titles":["Caps Word"]},"1503":{"title":"Invert on shift","titles":["Caps Word","Customizing Caps Word"]},"1504":{"title":"Idle timeout","titles":["Caps Word","Customizing Caps Word"]},"1505":{"title":"Functions","titles":["Caps Word","Customizing Caps Word"]},"1506":{"title":"Configure which keys are "word breaking"","titles":["Caps Word","Customizing Caps Word"]},"1507":{"title":"Representing Caps Word state","titles":["Caps Word","Customizing Caps Word"]},"1508":{"title":"Combos","titles":[]},"1509":{"title":"Advanced Keycodes Support","titles":["Combos"]},"1510":{"title":"Overlapping Combos","titles":["Combos"]},"1511":{"title":"Examples","titles":["Combos"]},"1512":{"title":"Keycodes","titles":["Combos"]},"1513":{"title":"Advanced Configuration","titles":["Combos"]},"1514":{"title":"Combo Term","titles":["Combos","Advanced Configuration"]},"1515":{"title":"Buffer and state sizes","titles":["Combos","Advanced Configuration"]},"1516":{"title":"Modifier Combos","titles":["Combos","Advanced Configuration"]},"1517":{"title":"Strict key press order","titles":["Combos","Advanced Configuration"]},"1518":{"title":"Per Combo Timing, Holding, Tapping and Key Press Order","titles":["Combos","Advanced Configuration"]},"1519":{"title":"Generic hook to (dis)allow a combo activation","titles":["Combos","Advanced Configuration"]},"1520":{"title":"Combo timer","titles":["Combos","Advanced Configuration"]},"1521":{"title":"#define COMBO_STRICT_TIMER","titles":["Combos","Advanced Configuration","Combo timer"]},"1522":{"title":"#define COMBO_NO_TIMER","titles":["Combos","Advanced Configuration","Combo timer"]},"1523":{"title":"Customizable key releases","titles":["Combos","Advanced Configuration"]},"1524":{"title":"Layer independent combos","titles":["Combos","Advanced Configuration"]},"1525":{"title":"Combo reference layers by layer.","titles":["Combos","Advanced Configuration","Layer independent combos"]},"1526":{"title":"User callbacks","titles":["Combos"]},"1527":{"title":"Dictionary Management","titles":["Combos"]},"1528":{"title":"Command","titles":[]},"1529":{"title":"Usage","titles":["Command"]},"1530":{"title":"Configuration","titles":["Command"]},"1531":{"title":"Digitizer","titles":[]},"1532":{"title":"Usage","titles":["Digitizer"]},"1533":{"title":"Positioning","titles":["Digitizer"]},"1534":{"title":"Examples","titles":["Digitizer"]},"1535":{"title":"API","titles":["Digitizer"]},"1536":{"title":"struct digitizer_t","titles":["Digitizer","API"]},"1537":{"title":"Members","titles":["Digitizer","API","struct digitizer_t"]},"1538":{"title":"void digitizer_flush(void)","titles":["Digitizer","API"]},"1539":{"title":"void digitizer_in_range_on(void)","titles":["Digitizer","API"]},"1540":{"title":"void digitizer_in_range_off(void)","titles":["Digitizer","API"]},"1541":{"title":"void digitizer_tip_switch_on(void)","titles":["Digitizer","API"]},"1542":{"title":"void digitizer_tip_switch_off(void)","titles":["Digitizer","API"]},"1543":{"title":"void digitizer_barrel_switch_on(void)","titles":["Digitizer","API"]},"1544":{"title":"void digitizer_barrel_switch_off(void)","titles":["Digitizer","API"]},"1545":{"title":"void digitizer_set_position(float x, float y)","titles":["Digitizer","API"]},"1546":{"title":"Arguments","titles":["Digitizer","API","void digitizer_set_position(float x, float y)"]},"1547":{"title":"DIP Switches","titles":[]},"1548":{"title":"DIP Switch map","titles":["DIP Switches"]},"1549":{"title":"Callbacks","titles":["DIP Switches"]},"1550":{"title":"Hardware","titles":["DIP Switches"]},"1551":{"title":"Connects each switch in the dip switch to the GPIO pin of the MCU","titles":["DIP Switches","Hardware"]},"1552":{"title":"Connect each switch in the DIP switch to an unused intersections in the key matrix.","titles":["DIP Switches","Hardware"]},"1553":{"title":"Dynamic Macros: Record and Replay Macros in Runtime","titles":[]},"1554":{"title":"Customization","titles":["Dynamic Macros: Record and Replay Macros in Runtime"]},"1555":{"title":"DYNAMIC_MACRO_USER_CALL","titles":["Dynamic Macros: Record and Replay Macros in Runtime","Customization"]},"1556":{"title":"User Hooks","titles":["Dynamic Macros: Record and Replay Macros in Runtime","Customization"]},"1557":{"title":"Encoders","titles":[]},"1558":{"title":"Split Keyboards","titles":["Encoders"]},"1559":{"title":"Encoder map","titles":["Encoders"]},"1560":{"title":"Callbacks","titles":["Encoders"]},"1561":{"title":"Hardware","titles":["Encoders"]},"1562":{"title":"Multiple Encoders","titles":["Encoders"]},"1563":{"title":"Grave Escape","titles":[]},"1564":{"title":"Usage","titles":["Grave Escape"]},"1565":{"title":"What Your OS Sees","titles":["Grave Escape"]},"1566":{"title":"Keycodes","titles":["Grave Escape"]},"1567":{"title":"Caveats","titles":["Grave Escape","Keycodes"]},"1568":{"title":"Configuration","titles":["Grave Escape"]},"1569":{"title":"Haptic Feedback","titles":[]},"1570":{"title":"Haptic feedback rules.mk options","titles":["Haptic Feedback"]},"1571":{"title":"Known Supported Hardware","titles":["Haptic Feedback"]},"1572":{"title":"Haptic Keycodes","titles":["Haptic Feedback"]},"1573":{"title":"Solenoids","titles":["Haptic Feedback","Haptic Keycodes"]},"1574":{"title":"DRV2605L","titles":["Haptic Feedback","Haptic Keycodes"]},"1575":{"title":"Feedback motor setup","titles":["Haptic Feedback","Haptic Keycodes","DRV2605L"]},"1576":{"title":"ERM","titles":["Haptic Feedback","Haptic Keycodes","DRV2605L","Feedback motor setup"]},"1577":{"title":"LRA","titles":["Haptic Feedback","Haptic Keycodes","DRV2605L","Feedback motor setup"]},"1578":{"title":"DRV2605L waveform library","titles":["Haptic Feedback","Haptic Keycodes","DRV2605L"]},"1579":{"title":"Optional DRV2605L defines","titles":["Haptic Feedback","Haptic Keycodes"]},"1580":{"title":"DRV2605L Continuous Haptic Mode","titles":["Haptic Feedback","Haptic Keycodes"]},"1581":{"title":"Haptic Key Exclusion","titles":["Haptic Feedback"]},"1582":{"title":"NO_HAPTIC_MOD","titles":["Haptic Feedback","Haptic Key Exclusion"]},"1583":{"title":"NO_HAPTIC_ALPHA","titles":["Haptic Feedback","Haptic Key Exclusion"]},"1584":{"title":"NO_HAPTIC_PUNCTUATION","titles":["Haptic Feedback","Haptic Key Exclusion"]},"1585":{"title":"NO_HAPTIC_LOCKKEYS","titles":["Haptic Feedback","Haptic Key Exclusion"]},"1586":{"title":"NO_HAPTIC_NAV","titles":["Haptic Feedback","Haptic Key Exclusion"]},"1587":{"title":"NO_HAPTIC_NUMERIC","titles":["Haptic Feedback","Haptic Key Exclusion"]},"1588":{"title":"HD44780 LCD Driver","titles":[]},"1589":{"title":"Supported Hardware","titles":["HD44780 LCD Driver"]},"1590":{"title":"Usage","titles":["HD44780 LCD Driver"]},"1591":{"title":"Basic Configuration","titles":["HD44780 LCD Driver"]},"1592":{"title":"Examples","titles":["HD44780 LCD Driver"]},"1593":{"title":"Hello World","titles":["HD44780 LCD Driver","Examples"]},"1594":{"title":"Custom Character Definition","titles":["HD44780 LCD Driver","Examples"]},"1595":{"title":"API","titles":["HD44780 LCD Driver"]},"1596":{"title":"void hd44780_init(bool cursor, bool blink)","titles":["HD44780 LCD Driver","API"]},"1597":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_init(bool cursor, bool blink)"]},"1598":{"title":"void hd44780_clear(void)","titles":["HD44780 LCD Driver","API"]},"1599":{"title":"void hd44780_home(void)","titles":["HD44780 LCD Driver","API"]},"1600":{"title":"void hd44780_on(bool cursor, bool blink)","titles":["HD44780 LCD Driver","API"]},"1601":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_on(bool cursor, bool blink)"]},"1602":{"title":"void hd44780_off(void)","titles":["HD44780 LCD Driver","API"]},"1603":{"title":"void hd44780_set_cursor(uint8_t col, uint8_t line)","titles":["HD44780 LCD Driver","API"]},"1604":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_set_cursor(uint8_t col, uint8_t line)"]},"1605":{"title":"void hd44780_putc(char c)","titles":["HD44780 LCD Driver","API"]},"1606":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_putc(char c)"]},"1607":{"title":"void hd44780_puts(const char *s)","titles":["HD44780 LCD Driver","API"]},"1608":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_puts(const char *s)"]},"1609":{"title":"void hd44780_puts_P(const char *s)","titles":["HD44780 LCD Driver","API"]},"1610":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_puts_P(const char *s)"]},"1611":{"title":"void hd44780_define_char(uint8_t index, uint8_t *data)","titles":["HD44780 LCD Driver","API"]},"1612":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_define_char(uint8_t index, uint8_t *data)"]},"1613":{"title":"void hd44780_define_char_P(uint8_t index, const uint8_t *data)","titles":["HD44780 LCD Driver","API"]},"1614":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_define_char_P(uint8_t index, const uint8_t *data)"]},"1615":{"title":"bool hd44780_busy(void)","titles":["HD44780 LCD Driver","API"]},"1616":{"title":"Return Value","titles":["HD44780 LCD Driver","API","bool hd44780_busy(void)"]},"1617":{"title":"void hd44780_write(uint8_t data, bool isData)","titles":["HD44780 LCD Driver","API"]},"1618":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_write(uint8_t data, bool isData)"]},"1619":{"title":"uint8_t hd44780_read(bool isData)","titles":["HD44780 LCD Driver","API"]},"1620":{"title":"Arguments","titles":["HD44780 LCD Driver","API","uint8_t hd44780_read(bool isData)"]},"1621":{"title":"Return Value","titles":["HD44780 LCD Driver","API","uint8_t hd44780_read(bool isData)"]},"1622":{"title":"void hd44780_command(uint8_t command)","titles":["HD44780 LCD Driver","API"]},"1623":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_command(uint8_t command)"]},"1624":{"title":"void hd44780_data(uint8_t data)","titles":["HD44780 LCD Driver","API"]},"1625":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_data(uint8_t data)"]},"1626":{"title":"void hd44780_set_cgram_address(uint8_t address)","titles":["HD44780 LCD Driver","API"]},"1627":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_set_cgram_address(uint8_t address)"]},"1628":{"title":"void hd44780_set_ddram_address(uint8_t address)","titles":["HD44780 LCD Driver","API"]},"1629":{"title":"Arguments","titles":["HD44780 LCD Driver","API","void hd44780_set_ddram_address(uint8_t address)"]},"1630":{"title":"Key Lock","titles":[]},"1631":{"title":"Usage","titles":["Key Lock"]},"1632":{"title":"Keycodes","titles":["Key Lock"]},"1633":{"title":"Caveats","titles":["Key Lock"]},"1634":{"title":"Joystick","titles":[]},"1635":{"title":"Usage","titles":["Joystick"]},"1636":{"title":"Configuration","titles":["Joystick"]},"1637":{"title":"Axes","titles":["Joystick","Configuration"]},"1638":{"title":"Virtual Axes","titles":["Joystick","Configuration","Axes"]},"1639":{"title":"Keycodes","titles":["Joystick"]},"1640":{"title":"API","titles":["Joystick"]},"1641":{"title":"struct joystick_t","titles":["Joystick","API"]},"1642":{"title":"Members","titles":["Joystick","API","struct joystick_t"]},"1643":{"title":"struct joystick_config_t","titles":["Joystick","API"]},"1644":{"title":"Members","titles":["Joystick","API","struct joystick_config_t"]},"1645":{"title":"void joystick_flush(void)","titles":["Joystick","API"]},"1646":{"title":"void register_joystick_button(uint8_t button)","titles":["Joystick","API"]},"1647":{"title":"Arguments","titles":["Joystick","API","void register_joystick_button(uint8_t button)"]},"1648":{"title":"void unregister_joystick_button(uint8_t button)","titles":["Joystick","API"]},"1649":{"title":"Arguments","titles":["Joystick","API","void unregister_joystick_button(uint8_t button)"]},"1650":{"title":"int16_t joystick_read_axis(uint8_t axis)","titles":["Joystick","API"]},"1651":{"title":"Arguments","titles":["Joystick","API","int16_t joystick_read_axis(uint8_t axis)"]},"1652":{"title":"Return Value","titles":["Joystick","API","int16_t joystick_read_axis(uint8_t axis)"]},"1653":{"title":"void joystick_set_axis(uint8_t axis, int16_t value)","titles":["Joystick","API"]},"1654":{"title":"Arguments","titles":["Joystick","API","void joystick_set_axis(uint8_t axis, int16_t value)"]},"1655":{"title":"Key Overrides","titles":[]},"1656":{"title":"A few more examples to get started: You could use key overrides to...","titles":["Key Overrides"]},"1657":{"title":"Setup","titles":["Key Overrides"]},"1658":{"title":"Creating Key Overrides","titles":["Key Overrides"]},"1659":{"title":"ko_make_basic(modifiers, key, replacement)","titles":["Key Overrides","Creating Key Overrides"]},"1660":{"title":"ko_make_with_layers(modifiers, key, replacement, layers)","titles":["Key Overrides","Creating Key Overrides"]},"1661":{"title":"ko_make_with_layers_and_negmods(modifiers, key, replacement, layers, negative_mods)","titles":["Key Overrides","Creating Key Overrides"]},"1662":{"title":"ko_make_with_layers_negmods_and_options(modifiers, key, replacement, layers, negative_mods, options)","titles":["Key Overrides","Creating Key Overrides"]},"1663":{"title":"Simple Example","titles":["Key Overrides"]},"1664":{"title":"Intermediate Difficulty Examples","titles":["Key Overrides"]},"1665":{"title":"Media Controls & Screen Brightness","titles":["Key Overrides","Intermediate Difficulty Examples"]},"1666":{"title":"Flexible macOS-friendly Grave Escape","titles":["Key Overrides","Intermediate Difficulty Examples"]},"1667":{"title":"Advanced Examples","titles":["Key Overrides"]},"1668":{"title":"Modifiers as Layer Keys","titles":["Key Overrides","Advanced Examples"]},"1669":{"title":"Keycodes","titles":["Key Overrides"]},"1670":{"title":"Reference for key_override_t","titles":["Key Overrides"]},"1671":{"title":"Reference for ko_option_t","titles":["Key Overrides"]},"1672":{"title":"For Advanced Users: Inner Workings","titles":["Key Overrides"]},"1673":{"title":"Activation","titles":["Key Overrides","For Advanced Users: Inner Workings","Modifiers as Layer Keys"]},"1674":{"title":"Deactivation","titles":["Key Overrides","For Advanced Users: Inner Workings","Modifiers as Layer Keys"]},"1675":{"title":"Key Repeat Delay","titles":["Key Overrides","For Advanced Users: Inner Workings","Modifiers as Layer Keys"]},"1676":{"title":"Difference to Combos","titles":["Key Overrides"]},"1677":{"title":"Solution to the problem of flashing modifiers","titles":["Key Overrides"]},"1678":{"title":"The Leader Key: A New Kind of Modifier","titles":[]},"1679":{"title":"Usage","titles":["The Leader Key: A New Kind of Modifier"]},"1680":{"title":"Callbacks","titles":["The Leader Key: A New Kind of Modifier"]},"1681":{"title":"Basic Configuration","titles":["The Leader Key: A New Kind of Modifier"]},"1682":{"title":"Timeout","titles":["The Leader Key: A New Kind of Modifier","Basic Configuration"]},"1683":{"title":"Per-Key Timeout","titles":["The Leader Key: A New Kind of Modifier","Basic Configuration"]},"1684":{"title":"Disabling Initial Timeout","titles":["The Leader Key: A New Kind of Modifier","Basic Configuration"]},"1685":{"title":"Strict Key Processing","titles":["The Leader Key: A New Kind of Modifier","Basic Configuration"]},"1686":{"title":"Example","titles":["The Leader Key: A New Kind of Modifier"]},"1687":{"title":"Keycodes","titles":["The Leader Key: A New Kind of Modifier"]},"1688":{"title":"API","titles":["The Leader Key: A New Kind of Modifier"]},"1689":{"title":"void leader_start_user(void)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1690":{"title":"void leader_end_user(void)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1691":{"title":"void leader_start(void)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1692":{"title":"void leader_end(void)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1693":{"title":"bool leader_sequence_active(void)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1694":{"title":"bool leader_sequence_add(uint16_t keycode)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1695":{"title":"Arguments","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_add(uint16_t keycode)"]},"1696":{"title":"Return Value","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_add(uint16_t keycode)"]},"1697":{"title":"bool leader_sequence_timed_out(void)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1698":{"title":"bool leader_reset_timer(void)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1699":{"title":"bool leader_sequence_one_key(uint16_t kc)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1700":{"title":"Arguments","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_one_key(uint16_t kc)"]},"1701":{"title":"Return Value","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_one_key(uint16_t kc)"]},"1702":{"title":"bool leader_sequence_two_keys(uint16_t kc1, uint16_t kc2)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1703":{"title":"Arguments","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_two_keys(uint16_t kc1, uint16_t kc2)"]},"1704":{"title":"Return Value","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_two_keys(uint16_t kc1, uint16_t kc2)"]},"1705":{"title":"bool leader_sequence_three_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1706":{"title":"Arguments","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_three_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3)"]},"1707":{"title":"Return Value","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_three_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3)"]},"1708":{"title":"bool leader_sequence_four_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3, uint16_t kc4)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1709":{"title":"Arguments","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_four_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3, uint16_t kc4)"]},"1710":{"title":"Return Value","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_four_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3, uint16_t kc4)"]},"1711":{"title":"bool leader_sequence_five_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3, uint16_t kc4, uint16_t kc5)","titles":["The Leader Key: A New Kind of Modifier","API"]},"1712":{"title":"Arguments","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_five_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3, uint16_t kc4, uint16_t kc5)"]},"1713":{"title":"Return Value","titles":["The Leader Key: A New Kind of Modifier","API","bool leader_sequence_five_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3, uint16_t kc4, uint16_t kc5)"]},"1714":{"title":"LED Indicators","titles":[]},"1715":{"title":"Configuration Options","titles":["LED Indicators"]},"1716":{"title":"LED update function","titles":["LED Indicators"]},"1717":{"title":"Example of keyboard LED update implementation","titles":["LED Indicators","LED update function"]},"1718":{"title":"Example of user LED update implementation","titles":["LED Indicators","LED update function"]},"1719":{"title":"Host keyboard LED state","titles":["LED Indicators"]},"1720":{"title":"led_update_ports()","titles":["LED Indicators"]},"1721":{"title":"Setting Physical LED State","titles":["LED Indicators"]},"1722":{"title":"Ergodox Boards","titles":["LED Indicators","Setting Physical LED State"]},"1723":{"title":"LED Matrix Lighting","titles":[]},"1724":{"title":"Driver Configuration","titles":["LED Matrix Lighting"]},"1725":{"title":"Common Configuration","titles":["LED Matrix Lighting"]},"1726":{"title":"Flags","titles":["LED Matrix Lighting"]},"1727":{"title":"Keycodes","titles":["LED Matrix Lighting"]},"1728":{"title":"LED Matrix Effects","titles":["LED Matrix Lighting"]},"1729":{"title":"Custom LED Matrix Effects","titles":["LED Matrix Lighting"]},"1730":{"title":"Additional config.h Options","titles":["LED Matrix Lighting"]},"1731":{"title":"EEPROM storage","titles":["LED Matrix Lighting"]},"1732":{"title":"Callbacks","titles":["LED Matrix Lighting"]},"1733":{"title":"Indicators","titles":["LED Matrix Lighting","Callbacks"]},"1734":{"title":"API","titles":["LED Matrix Lighting"]},"1735":{"title":"void led_matrix_toggle(void)","titles":["LED Matrix Lighting","API"]},"1736":{"title":"void led_matrix_toggle_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1737":{"title":"void led_matrix_enable(void)","titles":["LED Matrix Lighting","API"]},"1738":{"title":"void led_matrix_enable_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1739":{"title":"void led_matrix_disable(void)","titles":["LED Matrix Lighting","API"]},"1740":{"title":"void led_matrix_disable_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1741":{"title":"bool led_matrix_is_enabled(void)","titles":["LED Matrix Lighting","API"]},"1742":{"title":"Return Value","titles":["LED Matrix Lighting","API","bool led_matrix_is_enabled(void)"]},"1743":{"title":"void led_matrix_set_value(uint8_t index, uint8_t v)","titles":["LED Matrix Lighting","API"]},"1744":{"title":"Arguments","titles":["LED Matrix Lighting","API","void led_matrix_set_value(uint8_t index, uint8_t v)"]},"1745":{"title":"void led_matrix_set_value_all(uint8_t v)","titles":["LED Matrix Lighting","API"]},"1746":{"title":"Arguments","titles":["LED Matrix Lighting","API","void led_matrix_set_value_all(uint8_t v)"]},"1747":{"title":"void led_matrix_mode(uint8_t mode)","titles":["LED Matrix Lighting","API"]},"1748":{"title":"Arguments","titles":["LED Matrix Lighting","API","void led_matrix_mode(uint8_t mode)"]},"1749":{"title":"void led_matrix_mode_noeeprom(uint8_t mode)","titles":["LED Matrix Lighting","API"]},"1750":{"title":"Arguments","titles":["LED Matrix Lighting","API","void led_matrix_mode_noeeprom(uint8_t mode)"]},"1751":{"title":"void led_matrix_step(void)","titles":["LED Matrix Lighting","API"]},"1752":{"title":"void led_matrix_step_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1753":{"title":"void led_matrix_step_reverse(void)","titles":["LED Matrix Lighting","API"]},"1754":{"title":"void led_matrix_step_reverse_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1755":{"title":"uint8_t led_matrix_get_mode(void)","titles":["LED Matrix Lighting","API"]},"1756":{"title":"Return Value","titles":["LED Matrix Lighting","API","uint8_t led_matrix_get_mode(void)"]},"1757":{"title":"void val_matrix_increase_val(void)","titles":["LED Matrix Lighting","API"]},"1758":{"title":"void led_matrix_increase_val_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1759":{"title":"void led_matrix_decrease_val(void)","titles":["LED Matrix Lighting","API"]},"1760":{"title":"void led_matrix_decrease_val_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1761":{"title":"uint8_t led_matrix_get_val(void)","titles":["LED Matrix Lighting","API"]},"1762":{"title":"Return Value","titles":["LED Matrix Lighting","API","uint8_t led_matrix_get_val(void)"]},"1763":{"title":"void led_matrix_increase_speed(void)","titles":["LED Matrix Lighting","API"]},"1764":{"title":"void led_matrix_increase_speed_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1765":{"title":"void led_matrix_decrease_speed(void)","titles":["LED Matrix Lighting","API"]},"1766":{"title":"void led_matrix_decrease_speed_noeeprom(void)","titles":["LED Matrix Lighting","API"]},"1767":{"title":"void led_matrix_set_speed(uint8_t speed)","titles":["LED Matrix Lighting","API"]},"1768":{"title":"Arguments","titles":["LED Matrix Lighting","API","void led_matrix_set_speed(uint8_t speed)"]},"1769":{"title":"void led_matrix_set_speed_noeeprom(uint8_t speed)","titles":["LED Matrix Lighting","API"]},"1770":{"title":"Arguments","titles":["LED Matrix Lighting","API","void led_matrix_set_speed_noeeprom(uint8_t speed)"]},"1771":{"title":"uint8_t led_matrix_get_speed(void)","titles":["LED Matrix Lighting","API"]},"1772":{"title":"Return Value","titles":["LED Matrix Lighting","API","uint8_t led_matrix_get_speed(void)"]},"1773":{"title":"void led_matrix_reload_from_eeprom(void)","titles":["LED Matrix Lighting","API"]},"1774":{"title":"bool led_matrix_get_suspend_state(void)","titles":["LED Matrix Lighting","API"]},"1775":{"title":"Return Value","titles":["LED Matrix Lighting","API","bool led_matrix_get_suspend_state(void)"]},"1776":{"title":"bool led_matrix_indicators_kb(void)","titles":["LED Matrix Lighting","API"]},"1777":{"title":"Return Value","titles":["LED Matrix Lighting","API","bool led_matrix_indicators_kb(void)"]},"1778":{"title":"bool led_matrix_indicators_user(void)","titles":["LED Matrix Lighting","API"]},"1779":{"title":"Return Value","titles":["LED Matrix Lighting","API","bool led_matrix_indicators_user(void)"]},"1780":{"title":"bool led_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max)","titles":["LED Matrix Lighting","API"]},"1781":{"title":"Arguments","titles":["LED Matrix Lighting","API"]},"1782":{"title":"Return Value","titles":["LED Matrix Lighting","API","Arguments"]},"1783":{"title":"bool led_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max)","titles":["LED Matrix Lighting","API"]},"1784":{"title":"Arguments","titles":["LED Matrix Lighting","API"]},"1785":{"title":"Return Value","titles":["LED Matrix Lighting","API","Arguments"]},"1786":{"title":"MIDI","titles":[]},"1787":{"title":"Usage","titles":["MIDI"]},"1788":{"title":"Caveats","titles":["MIDI","Usage"]},"1789":{"title":"Basic MIDI","titles":["MIDI","Usage"]},"1790":{"title":"Advanced MIDI","titles":["MIDI","Usage"]},"1791":{"title":"Sending Control Change (CC) Messages","titles":["MIDI","Usage","Advanced MIDI"]},"1792":{"title":"Example code for using Generic On Off Switches as per MIDI Specification.","titles":["MIDI","Usage","Advanced MIDI"]},"1793":{"title":"Keycodes","titles":["MIDI","Usage"]},"1794":{"title":"Configuration","titles":["MIDI","Usage"]},"1795":{"title":"References","titles":["MIDI","Usage"]},"1796":{"title":"MIDI Specification","titles":["MIDI","Usage","References"]},"1797":{"title":"QMK C Files","titles":["MIDI","Usage","References"]},"1798":{"title":"Mouse keys","titles":[]},"1799":{"title":"Adding mouse keys to your keyboard","titles":["Mouse keys"]},"1800":{"title":"Enabling mouse keys","titles":["Mouse keys","Adding mouse keys to your keyboard"]},"1801":{"title":"Mapping mouse actions","titles":["Mouse keys","Adding mouse keys to your keyboard"]},"1802":{"title":"Configuring mouse keys","titles":["Mouse keys"]},"1803":{"title":"Accelerated mode","titles":["Mouse keys","Configuring mouse keys"]},"1804":{"title":"Kinetic Mode","titles":["Mouse keys","Configuring mouse keys"]},"1805":{"title":"Constant mode","titles":["Mouse keys","Configuring mouse keys"]},"1806":{"title":"Combined mode","titles":["Mouse keys","Configuring mouse keys"]},"1807":{"title":"Inertia mode","titles":["Mouse keys","Configuring mouse keys"]},"1808":{"title":"Overlapping mouse key control","titles":["Mouse keys","Configuring mouse keys"]},"1809":{"title":"Use with PS/2 Mouse and Pointing Device","titles":["Mouse keys"]},"1810":{"title":"OLED Driver","titles":[]},"1811":{"title":"Supported Hardware","titles":["OLED Driver"]},"1812":{"title":"Usage","titles":["OLED Driver"]},"1813":{"title":"OLED type","titles":["OLED Driver"]},"1814":{"title":"Logo Example","titles":["OLED Driver"]},"1815":{"title":"Buffer Read Example","titles":["OLED Driver"]},"1816":{"title":"Other Examples","titles":["OLED Driver"]},"1817":{"title":"Basic Configuration","titles":["OLED Driver"]},"1818":{"title":"I2C Configuration","titles":["OLED Driver","Basic Configuration"]},"1819":{"title":"SPI Configuration","titles":["OLED Driver","Basic Configuration"]},"1820":{"title":"128x64 & Custom sized OLED Displays","titles":["OLED Driver"]},"1821":{"title":"90 Degree Rotation - Technical Mumbo Jumbo","titles":["OLED Driver","128x64 & Custom sized OLED Displays"]},"1822":{"title":"OLED API","titles":["OLED Driver"]},"1823":{"title":"SSD1306.h Driver Conversion Guide","titles":["OLED Driver"]},"1824":{"title":"OS Detection","titles":[]},"1825":{"title":"Usage","titles":["OS Detection"]},"1826":{"title":"Callbacks","titles":["OS Detection"]},"1827":{"title":"OS detection stability","titles":["OS Detection"]},"1828":{"title":"KVM and USB switches","titles":["OS Detection"]},"1829":{"title":"Configuration Options","titles":["OS Detection"]},"1830":{"title":"Debug","titles":["OS Detection"]},"1831":{"title":"Credits","titles":["OS Detection"]},"1832":{"title":"Programmable Button","titles":[]},"1833":{"title":"Usage","titles":["Programmable Button"]},"1834":{"title":"Keycodes","titles":["Programmable Button"]},"1835":{"title":"API","titles":["Programmable Button"]},"1836":{"title":"void programmable_button_clear(void)","titles":["Programmable Button","API"]},"1837":{"title":"void programmable_button_add(uint8_t index)","titles":["Programmable Button","API"]},"1838":{"title":"Arguments","titles":["Programmable Button","API","void programmable_button_add(uint8_t index)"]},"1839":{"title":"void programmable_button_remove(uint8_t index)","titles":["Programmable Button","API"]},"1840":{"title":"Arguments","titles":["Programmable Button","API","void programmable_button_remove(uint8_t index)"]},"1841":{"title":"void programmable_button_register(uint8_t index)","titles":["Programmable Button","API"]},"1842":{"title":"Arguments","titles":["Programmable Button","API","void programmable_button_register(uint8_t index)"]},"1843":{"title":"void programmable_button_unregister(uint8_t index)","titles":["Programmable Button","API"]},"1844":{"title":"Arguments","titles":["Programmable Button","API","void programmable_button_unregister(uint8_t index)"]},"1845":{"title":"bool programmable_button_is_on(uint8_t index)","titles":["Programmable Button","API"]},"1846":{"title":"Arguments","titles":["Programmable Button","API","bool programmable_button_is_on(uint8_t index)"]},"1847":{"title":"Return Value","titles":["Programmable Button","API","bool programmable_button_is_on(uint8_t index)"]},"1848":{"title":"void programmable_button_flush(void)","titles":["Programmable Button","API"]},"1849":{"title":"uint32_t programmable_button_get_report(void)","titles":["Programmable Button","API"]},"1850":{"title":"Return Value","titles":["Programmable Button","API","uint32_t programmable_button_get_report(void)"]},"1851":{"title":"void programmable_button_set_report(uint32_t report)","titles":["Programmable Button","API"]},"1852":{"title":"Arguments","titles":["Programmable Button","API","void programmable_button_set_report(uint32_t report)"]},"1853":{"title":"Pointing Device","titles":[]},"1854":{"title":"Sensor Drivers","titles":["Pointing Device"]},"1855":{"title":"ADNS 5050 Sensor","titles":["Pointing Device","Sensor Drivers"]},"1856":{"title":"ADNS 9800 Sensor","titles":["Pointing Device","Sensor Drivers"]},"1857":{"title":"Analog Joystick","titles":["Pointing Device","Sensor Drivers"]},"1858":{"title":"Azoteq IQS5XX Trackpad","titles":["Pointing Device","Sensor Drivers"]},"1859":{"title":"Device settings","titles":["Pointing Device","Sensor Drivers","Azoteq IQS5XX Trackpad"]},"1860":{"title":"Gesture settings","titles":["Pointing Device","Sensor Drivers","Azoteq IQS5XX Trackpad"]},"1861":{"title":"Rotation settings","titles":["Pointing Device","Sensor Drivers","Azoteq IQS5XX Trackpad"]},"1862":{"title":"Cirque Trackpad","titles":["Pointing Device","Sensor Drivers"]},"1863":{"title":"Common settings","titles":["Pointing Device","Sensor Drivers","Cirque Trackpad"]},"1864":{"title":"Absolute mode settings","titles":["Pointing Device","Sensor Drivers","Cirque Trackpad"]},"1865":{"title":"Absolute mode gestures","titles":["Pointing Device","Sensor Drivers","Cirque Trackpad"]},"1866":{"title":"Relative mode gestures","titles":["Pointing Device","Sensor Drivers","Cirque Trackpad"]},"1867":{"title":"PAW 3204 Sensor","titles":["Pointing Device","Sensor Drivers"]},"1868":{"title":"Pimoroni Trackball","titles":["Pointing Device","Sensor Drivers"]},"1869":{"title":"PMW3320 Sensor","titles":["Pointing Device","Sensor Drivers"]},"1870":{"title":"PMW 3360 and PMW 3389 Sensor","titles":["Pointing Device","Sensor Drivers"]},"1871":{"title":"Custom Driver","titles":["Pointing Device","Sensor Drivers"]},"1872":{"title":"Common Configuration","titles":["Pointing Device"]},"1873":{"title":"Split Keyboard Configuration","titles":["Pointing Device"]},"1874":{"title":"Callbacks and Functions","titles":["Pointing Device"]},"1875":{"title":"Split Keyboard Callbacks and Functions","titles":["Pointing Device"]},"1876":{"title":"Manipulating Mouse Reports","titles":[]},"1877":{"title":"Examples","titles":["Manipulating Mouse Reports"]},"1878":{"title":"Custom Mouse Keycode","titles":["Manipulating Mouse Reports","Examples"]},"1879":{"title":"Drag Scroll or Mouse Scroll","titles":["Manipulating Mouse Reports","Examples"]},"1880":{"title":"Advanced Drag Scroll","titles":["Manipulating Mouse Reports","Examples"]},"1881":{"title":"Split Examples","titles":["Manipulating Mouse Reports"]},"1882":{"title":"Single Pointing Device","titles":["Manipulating Mouse Reports","Split Examples"]},"1883":{"title":"Combined Pointing Devices","titles":["Manipulating Mouse Reports","Split Examples"]},"1884":{"title":"Troubleshooting","titles":[]},"1885":{"title":"Automatic Mouse Layer","titles":[]},"1886":{"title":"Behaviour of Layer keys that activate the target layer","titles":["Automatic Mouse Layer"]},"1887":{"title":"How to enable:","titles":["Automatic Mouse Layer"]},"1888":{"title":"How to Customize:","titles":["Automatic Mouse Layer"]},"1889":{"title":"config.h Options:","titles":["Automatic Mouse Layer","How to Customize:"]},"1890":{"title":"Adding mouse keys","titles":["Automatic Mouse Layer","How to Customize:"]},"1891":{"title":"Callbacks for setting up additional key codes as mouse keys:","titles":["Automatic Mouse Layer","How to Customize:","Adding mouse keys"]},"1892":{"title":"To use the callback function to add mouse keys:","titles":["Automatic Mouse Layer","How to Customize:","Adding mouse keys","Callbacks for setting up additional key codes as mouse keys:"]},"1893":{"title":"Advanced control","titles":["Automatic Mouse Layer"]},"1894":{"title":"Functions to control auto mouse enable and target layer:","titles":["Automatic Mouse Layer","Advanced control"]},"1895":{"title":"Functions for handling custom key events:","titles":["Automatic Mouse Layer","Advanced control"]},"1896":{"title":"Advanced control examples","titles":["Automatic Mouse Layer","Advanced control"]},"1897":{"title":"Disable auto mouse on certain layers:","titles":["Automatic Mouse Layer","Advanced control","Advanced control examples"]},"1898":{"title":"Set different target layer when a particular layer is active:","titles":["Automatic Mouse Layer","Advanced control","Advanced control examples"]},"1899":{"title":"Use custom keys to control auto mouse:","titles":["Automatic Mouse Layer","Advanced control"]},"1900":{"title":"Customize Target Layer Activation","titles":["Automatic Mouse Layer"]},"1901":{"title":"Auto Mouse for Custom Pointing Device Task","titles":["Automatic Mouse Layer"]},"1902":{"title":"PS/2 Mouse Support","titles":[]},"1903":{"title":"The Circuitry between Trackpoint and Controller","titles":["PS/2 Mouse Support"]},"1904":{"title":"Busywait Version","titles":["PS/2 Mouse Support"]},"1905":{"title":"Interrupt Version (AVR/ATMega32u4)","titles":["PS/2 Mouse Support","Busywait Version"]},"1906":{"title":"Interrupt Version (ARM chibios)","titles":["PS/2 Mouse Support","Busywait Version"]},"1907":{"title":"USART Version","titles":["PS/2 Mouse Support","Busywait Version"]},"1908":{"title":"RP2040 PIO Version","titles":["PS/2 Mouse Support","Busywait Version"]},"1909":{"title":"Additional Settings","titles":["PS/2 Mouse Support"]},"1910":{"title":"PS/2 Mouse Features","titles":["PS/2 Mouse Support","Additional Settings"]},"1911":{"title":"Fine Control","titles":["PS/2 Mouse Support","Additional Settings"]},"1912":{"title":"Scroll Button","titles":["PS/2 Mouse Support","Additional Settings"]},"1913":{"title":"Invert Mouse buttons","titles":["PS/2 Mouse Support","Additional Settings"]},"1914":{"title":"Invert Mouse and Scroll Axes","titles":["PS/2 Mouse Support","Additional Settings"]},"1915":{"title":"Rotate Mouse Axes","titles":["PS/2 Mouse Support","Additional Settings"]},"1916":{"title":"Debug Settings","titles":["PS/2 Mouse Support","Additional Settings"]},"1917":{"title":"Movement Hook","titles":["PS/2 Mouse Support","Additional Settings"]},"1918":{"title":"Raw HID","titles":[]},"1919":{"title":"Usage","titles":["Raw HID"]},"1920":{"title":"Basic Configuration","titles":["Raw HID"]},"1921":{"title":"Sending Data to the Keyboard","titles":["Raw HID"]},"1922":{"title":"Receiving Data from the Keyboard","titles":["Raw HID"]},"1923":{"title":"Simple Example","titles":["Raw HID"]},"1924":{"title":"API","titles":["Raw HID"]},"1925":{"title":"void raw_hid_receive(uint8_t *data, uint8_t length)","titles":["Raw HID","API"]},"1926":{"title":"Arguments","titles":["Raw HID","API","void raw_hid_receive(uint8_t *data, uint8_t length)"]},"1927":{"title":"void raw_hid_send(uint8_t *data, uint8_t length)","titles":["Raw HID","API"]},"1928":{"title":"Arguments","titles":["Raw HID","API","void raw_hid_send(uint8_t *data, uint8_t length)"]},"1929":{"title":"Repeat Key","titles":[]},"1930":{"title":"How do I enable Repeat Key","titles":["Repeat Key"]},"1931":{"title":"Keycodes","titles":["Repeat Key"]},"1932":{"title":"Alternate Repeating","titles":["Repeat Key"]},"1933":{"title":"Defining alternate keys","titles":["Repeat Key"]},"1934":{"title":"Eliminating SFBs","titles":["Repeat Key","Defining alternate keys"]},"1935":{"title":"Typing shortcuts","titles":["Repeat Key","Defining alternate keys"]},"1936":{"title":"Ignoring certain keys and mods","titles":["Repeat Key"]},"1937":{"title":"Ignoring a key","titles":["Repeat Key","Ignoring certain keys and mods"]},"1938":{"title":"Filtering remembered mods","titles":["Repeat Key","Ignoring certain keys and mods"]},"1939":{"title":"Further conditions","titles":["Repeat Key","Ignoring certain keys and mods"]},"1940":{"title":"Handle how a key is repeated","titles":["Repeat Key"]},"1941":{"title":"Handle how a key is alternate repeated","titles":["Repeat Key"]},"1942":{"title":"Functions","titles":["Repeat Key"]},"1943":{"title":"Additional "Alternate" keys","titles":["Repeat Key"]},"1944":{"title":"RGB Matrix Lighting","titles":[]},"1945":{"title":"Driver Configuration","titles":["RGB Matrix Lighting"]},"1946":{"title":"Common Configuration","titles":["RGB Matrix Lighting"]},"1947":{"title":"Flags","titles":["RGB Matrix Lighting"]},"1948":{"title":"Keycodes","titles":["RGB Matrix Lighting"]},"1949":{"title":"RGB Matrix Effects","titles":["RGB Matrix Lighting"]},"1950":{"title":"RGB Matrix Effect Typing Heatmap","titles":["RGB Matrix Lighting","RGB Matrix Effects"]},"1951":{"title":"RGB Matrix Effect Solid Reactive","titles":["RGB Matrix Lighting","RGB Matrix Effects"]},"1952":{"title":"Custom RGB Matrix Effects","titles":["RGB Matrix Lighting"]},"1953":{"title":"Colors","titles":["RGB Matrix Lighting"]},"1954":{"title":"Additional config.h Options","titles":["RGB Matrix Lighting"]},"1955":{"title":"EEPROM storage","titles":["RGB Matrix Lighting"]},"1956":{"title":"Callbacks","titles":["RGB Matrix Lighting"]},"1957":{"title":"Indicators","titles":["RGB Matrix Lighting","Callbacks"]},"1958":{"title":"Indicator Examples","titles":["RGB Matrix Lighting","Callbacks"]},"1959":{"title":"Examples","titles":["RGB Matrix Lighting","Callbacks","Indicator Examples"]},"1960":{"title":"Indicators without RGB Matrix Effect","titles":["RGB Matrix Lighting","Callbacks","Indicator Examples"]},"1961":{"title":"API","titles":["RGB Matrix Lighting"]},"1962":{"title":"void rgb_matrix_toggle(void)","titles":["RGB Matrix Lighting","API"]},"1963":{"title":"void rgb_matrix_toggle_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"1964":{"title":"void rgb_matrix_enable(void)","titles":["RGB Matrix Lighting","API"]},"1965":{"title":"void rgb_matrix_enable_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"1966":{"title":"void rgb_matrix_disable(void)","titles":["RGB Matrix Lighting","API"]},"1967":{"title":"void rgb_matrix_disable_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"1968":{"title":"bool rgb_matrix_is_enabled(void)","titles":["RGB Matrix Lighting","API"]},"1969":{"title":"Return Value","titles":["RGB Matrix Lighting","API","bool rgb_matrix_is_enabled(void)"]},"1970":{"title":"void rgb_matrix_set_color(uint8_t index, uint8_t r, uint8_t g, uint8_t b)","titles":["RGB Matrix Lighting","API"]},"1971":{"title":"Arguments","titles":["RGB Matrix Lighting","API","void rgb_matrix_set_color(uint8_t index, uint8_t r, uint8_t g, uint8_t b)"]},"1972":{"title":"void rgb_matrix_set_color_all(uint8_t r, uint8_t g, uint8_t b)","titles":["RGB Matrix Lighting","API"]},"1973":{"title":"Arguments","titles":["RGB Matrix Lighting","API","void rgb_matrix_set_color_all(uint8_t r, uint8_t g, uint8_t b)"]},"1974":{"title":"void rgb_matrix_mode(uint8_t mode)","titles":["RGB Matrix Lighting","API"]},"1975":{"title":"Arguments","titles":["RGB Matrix Lighting","API","void rgb_matrix_mode(uint8_t mode)"]},"1976":{"title":"void rgb_matrix_mode_noeeprom(uint8_t mode)","titles":["RGB Matrix Lighting","API"]},"1977":{"title":"Arguments","titles":["RGB Matrix Lighting","API","void rgb_matrix_mode_noeeprom(uint8_t mode)"]},"1978":{"title":"void rgb_matrix_step(void)","titles":["RGB Matrix Lighting","API"]},"1979":{"title":"void rgb_matrix_step_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"1980":{"title":"void rgb_matrix_step_reverse(void)","titles":["RGB Matrix Lighting","API"]},"1981":{"title":"void rgb_matrix_step_reverse_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"1982":{"title":"uint8_t rgb_matrix_get_mode(void)","titles":["RGB Matrix Lighting","API"]},"1983":{"title":"Return Value","titles":["RGB Matrix Lighting","API","uint8_t rgb_matrix_get_mode(void)"]},"1984":{"title":"void rgb_matrix_increase_hue(void)","titles":["RGB Matrix Lighting","API"]},"1985":{"title":"void rgb_matrix_increase_hue_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"1986":{"title":"void rgb_matrix_decrease_hue(void)","titles":["RGB Matrix Lighting","API"]},"1987":{"title":"void rgb_matrix_decrease_hue_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"1988":{"title":"uint8_t rgb_matrix_get_hue(void)","titles":["RGB Matrix Lighting","API"]},"1989":{"title":"Return Value","titles":["RGB Matrix Lighting","API","uint8_t rgb_matrix_get_hue(void)"]},"1990":{"title":"void rgb_matrix_increase_sat(void)","titles":["RGB Matrix Lighting","API"]},"1991":{"title":"void rgb_matrix_increase_sat_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"1992":{"title":"void rgb_matrix_decrease_sat(void)","titles":["RGB Matrix Lighting","API"]},"1993":{"title":"void rgb_matrix_decrease_sat_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"1994":{"title":"uint8_t rgb_matrix_get_sat(void)","titles":["RGB Matrix Lighting","API"]},"1995":{"title":"Return Value","titles":["RGB Matrix Lighting","API","uint8_t rgb_matrix_get_sat(void)"]},"1996":{"title":"void rgb_matrix_increase_val(void)","titles":["RGB Matrix Lighting","API"]},"1997":{"title":"void rgb_matrix_increase_val_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"1998":{"title":"void rgb_matrix_decrease_val(void)","titles":["RGB Matrix Lighting","API"]},"1999":{"title":"void rgb_matrix_decrease_val_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"2000":{"title":"uint8_t rgb_matrix_get_val(void)","titles":["RGB Matrix Lighting","API"]},"2001":{"title":"Return Value","titles":["RGB Matrix Lighting","API","uint8_t rgb_matrix_get_val(void)"]},"2002":{"title":"void rgb_matrix_increase_speed(void)","titles":["RGB Matrix Lighting","API"]},"2003":{"title":"void rgb_matrix_increase_speed_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"2004":{"title":"void rgb_matrix_decrease_speed(void)","titles":["RGB Matrix Lighting","API"]},"2005":{"title":"void rgb_matrix_decrease_speed_noeeprom(void)","titles":["RGB Matrix Lighting","API"]},"2006":{"title":"void rgb_matrix_set_speed(uint8_t speed)","titles":["RGB Matrix Lighting","API"]},"2007":{"title":"Arguments","titles":["RGB Matrix Lighting","API","void rgb_matrix_set_speed(uint8_t speed)"]},"2008":{"title":"void rgb_matrix_set_speed_noeeprom(uint8_t speed)","titles":["RGB Matrix Lighting","API"]},"2009":{"title":"Arguments","titles":["RGB Matrix Lighting","API","void rgb_matrix_set_speed_noeeprom(uint8_t speed)"]},"2010":{"title":"uint8_t rgb_matrix_get_speed(void)","titles":["RGB Matrix Lighting","API"]},"2011":{"title":"Return Value","titles":["RGB Matrix Lighting","API","uint8_t rgb_matrix_get_speed(void)"]},"2012":{"title":"void rgb_matrix_sethsv(uint8_t h, uint8_t s, uint8_t v)","titles":["RGB Matrix Lighting","API"]},"2013":{"title":"Arguments","titles":["RGB Matrix Lighting","API"]},"2014":{"title":"void rgb_matrix_sethsv_noeeprom(uint8_t h, uint8_t s, uint8_t v)","titles":["RGB Matrix Lighting","API"]},"2015":{"title":"Arguments","titles":["RGB Matrix Lighting","API","void rgb_matrix_sethsv_noeeprom(uint8_t h, uint8_t s, uint8_t v)"]},"2016":{"title":"HSV rgb_matrix_get_hsv(void)","titles":["RGB Matrix Lighting","API"]},"2017":{"title":"Return Value","titles":["RGB Matrix Lighting","API","HSV rgb_matrix_get_hsv(void)"]},"2018":{"title":"void rgb_matrix_reload_from_eeprom(void)","titles":["RGB Matrix Lighting","API"]},"2019":{"title":"bool rgb_matrix_get_suspend_state(void)","titles":["RGB Matrix Lighting","API"]},"2020":{"title":"Return Value","titles":["RGB Matrix Lighting","API","bool rgb_matrix_get_suspend_state(void)"]},"2021":{"title":"bool rgb_matrix_indicators_kb(void)","titles":["RGB Matrix Lighting","API"]},"2022":{"title":"Return Value","titles":["RGB Matrix Lighting","API","bool rgb_matrix_indicators_kb(void)"]},"2023":{"title":"bool rgb_matrix_indicators_user(void)","titles":["RGB Matrix Lighting","API"]},"2024":{"title":"Return Value","titles":["RGB Matrix Lighting","API","bool rgb_matrix_indicators_user(void)"]},"2025":{"title":"bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max)","titles":["RGB Matrix Lighting","API"]},"2026":{"title":"Arguments","titles":["RGB Matrix Lighting","API"]},"2027":{"title":"Return Value","titles":["RGB Matrix Lighting","API","Arguments"]},"2028":{"title":"bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max)","titles":["RGB Matrix Lighting","API"]},"2029":{"title":"Arguments","titles":["RGB Matrix Lighting","API"]},"2030":{"title":"Return Value","titles":["RGB Matrix Lighting","API","Arguments"]},"2031":{"title":"RGB Lighting","titles":[]},"2032":{"title":"Usage","titles":["RGB Lighting"]},"2033":{"title":"Color Selection","titles":["RGB Lighting","Usage"]},"2034":{"title":"Keycodes","titles":["RGB Lighting"]},"2035":{"title":"Configuration","titles":["RGB Lighting"]},"2036":{"title":"Effects and Animations","titles":["RGB Lighting"]},"2037":{"title":"Effect and Animation Toggles","titles":["RGB Lighting","Effects and Animations"]},"2038":{"title":"Effect and Animation Settings","titles":["RGB Lighting","Effects and Animations"]},"2039":{"title":"Example Usage to Reduce Memory Footprint","titles":["RGB Lighting","Effects and Animations"]},"2040":{"title":"Animation Speed","titles":["RGB Lighting","Effects and Animations"]},"2041":{"title":"Lighting Layers","titles":["RGB Lighting"]},"2042":{"title":"Defining Lighting Layers","titles":["RGB Lighting","Lighting Layers"]},"2043":{"title":"Enabling and disabling lighting layers","titles":["RGB Lighting","Lighting Layers"]},"2044":{"title":"Lighting layer blink","titles":["RGB Lighting","Lighting Layers"]},"2045":{"title":"Overriding RGB Lighting on/off status","titles":["RGB Lighting","Lighting Layers"]},"2046":{"title":"Retain brightness","titles":["RGB Lighting","Lighting Layers"]},"2047":{"title":"Functions","titles":["RGB Lighting"]},"2048":{"title":"Low level Functions","titles":["RGB Lighting","Functions"]},"2049":{"title":"Effects and Animations Functions","titles":["RGB Lighting","Functions"]},"2050":{"title":"effect range setting","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2051":{"title":"direct operation","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2052":{"title":"effect mode change","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2053":{"title":"effects mode disable/enable","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2054":{"title":"hue, sat, val change","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2055":{"title":"Speed functions","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2056":{"title":"layer functions","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2057":{"title":"query","titles":["RGB Lighting","Functions","Effects and Animations Functions"]},"2058":{"title":"Colors","titles":["RGB Lighting"]},"2059":{"title":"Changing the order of the LEDs","titles":["RGB Lighting"]},"2060":{"title":"Clipping Range","titles":["RGB Lighting"]},"2061":{"title":"Hardware Modification","titles":["RGB Lighting"]},"2062":{"title":"Velocikey","titles":["RGB Lighting"]},"2063":{"title":"Usage","titles":["RGB Lighting","Velocikey"]},"2064":{"title":"Configuration","titles":["RGB Lighting","Velocikey"]},"2065":{"title":"Secure","titles":[]},"2066":{"title":"Unlock sequence","titles":["Secure"]},"2067":{"title":"Automatic Locking","titles":["Secure"]},"2068":{"title":"Usage","titles":["Secure"]},"2069":{"title":"Keycodes","titles":["Secure"]},"2070":{"title":"Configuration","titles":["Secure"]},"2071":{"title":"Functions","titles":["Secure"]},"2072":{"title":"Send String","titles":[]},"2073":{"title":"Usage","titles":["Send String"]},"2074":{"title":"Basic Configuration","titles":["Send String"]},"2075":{"title":"Keycodes","titles":["Send String"]},"2076":{"title":"Language Support","titles":["Send String","Keycodes"]},"2077":{"title":"Examples","titles":["Send String"]},"2078":{"title":"Hello World","titles":["Send String","Examples"]},"2079":{"title":"Keycode Injection","titles":["Send String","Examples"]},"2080":{"title":"API","titles":["Send String"]},"2081":{"title":"void send_string(const char *string)","titles":["Send String","API"]},"2082":{"title":"Arguments","titles":["Send String","API","void send_string(const char *string)"]},"2083":{"title":"void send_string_with_delay(const char *string, uint8_t interval)","titles":["Send String","API"]},"2084":{"title":"Arguments","titles":["Send String","API","void send_string_with_delay(const char *string, uint8_t interval)"]},"2085":{"title":"void send_string_P(const char *string)","titles":["Send String","API"]},"2086":{"title":"Arguments","titles":["Send String","API","void send_string_P(const char *string)"]},"2087":{"title":"void send_string_with_delay_P(const char *string, uint8_t interval)","titles":["Send String","API"]},"2088":{"title":"Arguments","titles":["Send String","API","void send_string_with_delay_P(const char *string, uint8_t interval)"]},"2089":{"title":"void send_char(char ascii_code)","titles":["Send String","API"]},"2090":{"title":"Arguments","titles":["Send String","API","void send_char(char ascii_code)"]},"2091":{"title":"void send_dword(uint32_t number)","titles":["Send String","API"]},"2092":{"title":"Arguments","titles":["Send String","API","void send_dword(uint32_t number)"]},"2093":{"title":"void send_word(uint16_t number)","titles":["Send String","API"]},"2094":{"title":"Arguments","titles":["Send String","API","void send_word(uint16_t number)"]},"2095":{"title":"void send_byte(uint8_t number)","titles":["Send String","API"]},"2096":{"title":"Arguments","titles":["Send String","API","void send_byte(uint8_t number)"]},"2097":{"title":"void send_nibble(uint8_t number)","titles":["Send String","API"]},"2098":{"title":"Arguments","titles":["Send String","API","void send_nibble(uint8_t number)"]},"2099":{"title":"void tap_random_base64(void)","titles":["Send String","API"]},"2100":{"title":"SEND_STRING(string)","titles":["Send String","API"]},"2101":{"title":"SEND_STRING_DELAY(string, interval)","titles":["Send String","API"]},"2102":{"title":"Space Cadet: The Future, Built In","titles":[]},"2103":{"title":"Usage","titles":["Space Cadet: The Future, Built In"]},"2104":{"title":"Keycodes","titles":["Space Cadet: The Future, Built In"]},"2105":{"title":"Caveats","titles":["Space Cadet: The Future, Built In"]},"2106":{"title":"Configuration","titles":["Space Cadet: The Future, Built In"]},"2107":{"title":"Obsolete Configuration","titles":["Space Cadet: The Future, Built In"]},"2108":{"title":"Sequencer","titles":[]},"2109":{"title":"Enable the step sequencer","titles":["Sequencer"]},"2110":{"title":"Tracks","titles":["Sequencer"]},"2111":{"title":"Resolutions","titles":["Sequencer"]},"2112":{"title":"Keycodes","titles":["Sequencer"]},"2113":{"title":"Functions","titles":["Sequencer"]},"2114":{"title":"Split Keyboard","titles":[]},"2115":{"title":"Compatibility Overview","titles":["Split Keyboard"]},"2116":{"title":"Hardware Configuration","titles":["Split Keyboard"]},"2117":{"title":"Required Hardware","titles":["Split Keyboard","Hardware Configuration"]},"2118":{"title":"Considerations","titles":["Split Keyboard","Hardware Configuration","Required Hardware"]},"2119":{"title":"Serial Wiring","titles":["Split Keyboard","Hardware Configuration"]},"2120":{"title":"I2C Wiring","titles":["Split Keyboard","Hardware Configuration"]},"2121":{"title":"Firmware Configuration","titles":["Split Keyboard"]},"2122":{"title":"Layout Macro","titles":["Split Keyboard","Firmware Configuration"]},"2123":{"title":"Setting Handedness","titles":["Split Keyboard","Firmware Configuration"]},"2124":{"title":"Handedness by Pin","titles":["Split Keyboard","Firmware Configuration","Setting Handedness"]},"2125":{"title":"Handedness by Matrix Pin","titles":["Split Keyboard","Firmware Configuration","Setting Handedness"]},"2126":{"title":"Handedness by EEPROM","titles":["Split Keyboard","Firmware Configuration","Setting Handedness"]},"2127":{"title":"Handedness by #define","titles":["Split Keyboard","Firmware Configuration","Setting Handedness"]},"2128":{"title":"Communication Options","titles":["Split Keyboard","Firmware Configuration"]},"2129":{"title":"Data Sync Options","titles":["Split Keyboard","Firmware Configuration"]},"2130":{"title":"Custom data sync between sides","titles":["Split Keyboard","Firmware Configuration"]},"2131":{"title":"Hardware Configuration Options","titles":["Split Keyboard","Firmware Configuration"]},"2132":{"title":"Hardware Considerations and Mods","titles":["Split Keyboard"]},"2133":{"title":"Teensy boards","titles":["Split Keyboard","Hardware Considerations and Mods"]},"2134":{"title":"Additional Resources","titles":["Split Keyboard"]},"2135":{"title":"ST7565 LCD Driver","titles":[]},"2136":{"title":"Supported Hardware","titles":["ST7565 LCD Driver"]},"2137":{"title":"Usage","titles":["ST7565 LCD Driver"]},"2138":{"title":"Logo Example","titles":["ST7565 LCD Driver"]},"2139":{"title":"Buffer Read Example","titles":["ST7565 LCD Driver"]},"2140":{"title":"Other Examples","titles":["ST7565 LCD Driver"]},"2141":{"title":"Basic Configuration","titles":["ST7565 LCD Driver"]},"2142":{"title":"Custom sized displays","titles":["ST7565 LCD Driver"]},"2143":{"title":"API","titles":["ST7565 LCD Driver"]},"2144":{"title":"Stenography in QMK","titles":[]},"2145":{"title":"Plover with QWERTY Keyboard","titles":["Stenography in QMK"]},"2146":{"title":"Plover with Steno Protocol","titles":["Stenography in QMK"]},"2147":{"title":"TX Bolt","titles":["Stenography in QMK","Plover with Steno Protocol"]},"2148":{"title":"GeminiPR","titles":["Stenography in QMK","Plover with Steno Protocol"]},"2149":{"title":"Switching protocols on the fly","titles":["Stenography in QMK","Plover with Steno Protocol"]},"2150":{"title":"Configuring QMK for Steno","titles":["Stenography in QMK"]},"2151":{"title":"Learning Stenography","titles":["Stenography in QMK"]},"2152":{"title":"Interfacing with the code","titles":["Stenography in QMK"]},"2153":{"title":"Keycode Reference","titles":["Stenography in QMK"]},"2154":{"title":"Swap-Hands Action","titles":[]},"2155":{"title":"Configuration","titles":["Swap-Hands Action"]},"2156":{"title":"Swap Keycodes","titles":["Swap-Hands Action"]},"2157":{"title":"Encoder Mapping","titles":["Swap-Hands Action"]},"2158":{"title":"Functions","titles":["Swap-Hands Action","Encoder Mapping"]},"2159":{"title":"Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","titles":[]},"2160":{"title":"Introduction","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things"]},"2161":{"title":"How to Use Tap Dance","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things"]},"2162":{"title":"Implementation Details","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things"]},"2163":{"title":"Examples","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things"]},"2164":{"title":"Simple Example: Send ESC on Single Tap, CAPS_LOCK on Double Tap","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples"]},"2165":{"title":"Complex Examples","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples"]},"2166":{"title":"Example 1: Send "Safety Dance!" After 100 Taps","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples","Complex Examples"]},"2167":{"title":"Example 2: Turn LED Lights On Then Off, One at a Time","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples","Complex Examples"]},"2168":{"title":"Example 3: Send : on Tap, ; on Hold","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples","Complex Examples"]},"2169":{"title":"Example 4: 'Quad Function Tap-Dance'","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples","Complex Examples"]},"2170":{"title":"Example 5: Using tap dance for advanced mod-tap and layer-tap keys","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples","Complex Examples"]},"2171":{"title":"Example 6: Using tap dance for momentary-layer-switch and layer-toggle keys","titles":["Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","Examples","Complex Examples"]},"2172":{"title":"Tri Layers","titles":[]},"2173":{"title":"Keycodes","titles":["Tri Layers"]},"2174":{"title":"Configuration","titles":["Tri Layers"]},"2175":{"title":"Functions","titles":["Tri Layers"]},"2176":{"title":"Unicode","titles":[]},"2177":{"title":"Caveats","titles":["Unicode"]},"2178":{"title":"Usage","titles":["Unicode"]},"2179":{"title":"Basic Configuration","titles":["Unicode"]},"2180":{"title":"Audio Feedback","titles":["Unicode","Basic Configuration"]},"2181":{"title":"Input Subsystems","titles":["Unicode"]},"2182":{"title":"Lower and Upper Case Pairs","titles":["Unicode","Input Subsystems","Audio Feedback"]},"2183":{"title":"Input Modes","titles":["Unicode"]},"2184":{"title":"Keycodes","titles":["Unicode"]},"2185":{"title":"API","titles":["Unicode"]},"2186":{"title":"uint8_t get_unicode_input_mode(void)","titles":["Unicode","API"]},"2187":{"title":"Return Value","titles":["Unicode","API","uint8_t get_unicode_input_mode(void)"]},"2188":{"title":"void set_unicode_input_mode(uint8_t mode)","titles":["Unicode","API"]},"2189":{"title":"Arguments","titles":["Unicode","API","void set_unicode_input_mode(uint8_t mode)"]},"2190":{"title":"void unicode_input_mode_step(void)","titles":["Unicode","API"]},"2191":{"title":"void unicode_input_mode_step_reverse(void)","titles":["Unicode","API"]},"2192":{"title":"void unicode_input_mode_set_user(uint8_t input_mode)","titles":["Unicode","API"]},"2193":{"title":"Arguments","titles":["Unicode","API","void unicode_input_mode_set_user(uint8_t input_mode)"]},"2194":{"title":"void unicode_input_mode_set_kb(uint8_t input_mode)","titles":["Unicode","API"]},"2195":{"title":"Arguments","titles":["Unicode","API","void unicode_input_mode_set_kb(uint8_t input_mode)"]},"2196":{"title":"void unicode_input_start(void)","titles":["Unicode","API"]},"2197":{"title":"void unicode_input_finish(void)","titles":["Unicode","API"]},"2198":{"title":"void unicode_input_cancel(void)","titles":["Unicode","API"]},"2199":{"title":"void register_unicode(uint32_t code_point)","titles":["Unicode","API"]},"2200":{"title":"Arguments","titles":["Unicode","API","void register_unicode(uint32_t code_point)"]},"2201":{"title":"void send_unicode_string(const char *str)","titles":["Unicode","API"]},"2202":{"title":"Arguments","titles":["Unicode","API","void send_unicode_string(const char *str)"]},"2203":{"title":"uint8_t unicodemap_index(uint16_t keycode)","titles":["Unicode","API"]},"2204":{"title":"Arguments","titles":["Unicode","API","uint8_t unicodemap_index(uint16_t keycode)"]},"2205":{"title":"Return Value","titles":["Unicode","API","uint8_t unicodemap_index(uint16_t keycode)"]},"2206":{"title":"uint32_t unicodemap_get_code_point(uint8_t index)","titles":["Unicode","API"]},"2207":{"title":"Arguments","titles":["Unicode","API","uint32_t unicodemap_get_code_point(uint8_t index)"]},"2208":{"title":"Return Value","titles":["Unicode","API","uint32_t unicodemap_get_code_point(uint8_t index)"]},"2209":{"title":"void register_unicodemap(uint8_t index)","titles":["Unicode","API"]},"2210":{"title":"Arguments","titles":["Unicode","API","void register_unicodemap(uint8_t index)"]},"2211":{"title":"void ucis_start(void)","titles":["Unicode","API"]},"2212":{"title":"bool ucis_active(void)","titles":["Unicode","API"]},"2213":{"title":"Return Value","titles":["Unicode","API","bool ucis_active(void)"]},"2214":{"title":"uint8_t ucis_count(void)","titles":["Unicode","API"]},"2215":{"title":"Return Value","titles":["Unicode","API","uint8_t ucis_count(void)"]},"2216":{"title":"bool ucis_add(uint16_t keycode)","titles":["Unicode","API"]},"2217":{"title":"Arguments","titles":["Unicode","API","bool ucis_add(uint16_t keycode)"]},"2218":{"title":"Return Value","titles":["Unicode","API","bool ucis_add(uint16_t keycode)"]},"2219":{"title":"bool ucis_remove_last(void)","titles":["Unicode","API"]},"2220":{"title":"Return Value","titles":["Unicode","API","bool ucis_remove_last(void)"]},"2221":{"title":"void ucis_finish(void)","titles":["Unicode","API"]},"2222":{"title":"void ucis_cancel(void)","titles":["Unicode","API"]},"2223":{"title":"void register_ucis(void)","titles":["Unicode","API"]},"2224":{"title":"Arguments","titles":["Unicode","API","void register_ucis(void)"]},"2225":{"title":"Word Per Minute (WPM) Calculation","titles":[]},"2226":{"title":"Configuration","titles":["Word Per Minute (WPM) Calculation"]},"2227":{"title":"Public Functions","titles":["Word Per Minute (WPM) Calculation"]},"2228":{"title":"Callbacks","titles":["Word Per Minute (WPM) Calculation"]},"2229":{"title":"Flashing Instructions and Bootloader Information","titles":[]},"2230":{"title":"Atmel DFU","titles":["Flashing Instructions and Bootloader Information"]},"2231":{"title":"QMK DFU","titles":["Flashing Instructions and Bootloader Information","Atmel DFU"]},"2232":{"title":"make Targets","titles":["Flashing Instructions and Bootloader Information","Atmel DFU"]},"2233":{"title":"Caterina","titles":["Flashing Instructions and Bootloader Information"]},"2234":{"title":"make Targets","titles":["Flashing Instructions and Bootloader Information","Caterina"]},"2235":{"title":"HalfKay","titles":["Flashing Instructions and Bootloader Information"]},"2236":{"title":"USBasploader","titles":["Flashing Instructions and Bootloader Information"]},"2237":{"title":"BootloadHID","titles":["Flashing Instructions and Bootloader Information"]},"2238":{"title":"QMK HID","titles":["Flashing Instructions and Bootloader Information","BootloadHID"]},"2239":{"title":"make Targets","titles":["Flashing Instructions and Bootloader Information","BootloadHID"]},"2240":{"title":"STM32/APM32 DFU","titles":["Flashing Instructions and Bootloader Information"]},"2241":{"title":"make Targets","titles":["Flashing Instructions and Bootloader Information","STM32/APM32 DFU"]},"2242":{"title":"STM32duino","titles":["Flashing Instructions and Bootloader Information"]},"2243":{"title":"Kiibohd DFU","titles":["Flashing Instructions and Bootloader Information"]},"2244":{"title":"WB32 DFU","titles":["Flashing Instructions and Bootloader Information"]},"2245":{"title":"tinyuf2","titles":["Flashing Instructions and Bootloader Information"]},"2246":{"title":"make Targets","titles":["Flashing Instructions and Bootloader Information","tinyuf2"]},"2247":{"title":"uf2boot","titles":["Flashing Instructions and Bootloader Information"]},"2248":{"title":"make Targets","titles":["Flashing Instructions and Bootloader Information","uf2boot"]},"2249":{"title":"Raspberry Pi RP2040 UF2","titles":["Flashing Instructions and Bootloader Information"]},"2250":{"title":"Docker Quick Start","titles":[]},"2251":{"title":"Requirements","titles":["Docker Quick Start"]},"2252":{"title":"Usage","titles":["Docker Quick Start"]},"2253":{"title":"FAQ","titles":["Docker Quick Start"]},"2254":{"title":"Why can't I flash on Windows/macOS","titles":["Docker Quick Start","FAQ"]},"2255":{"title":"How to Use GitHub with QMK","titles":[]},"2256":{"title":"Introduction","titles":[]},"2257":{"title":"Basic QMK Structure","titles":["Introduction"]},"2258":{"title":"Userspace Structure","titles":["Introduction","Basic QMK Structure"]},"2259":{"title":"Keyboard Project Structure","titles":["Introduction","Basic QMK Structure"]},"2260":{"title":"Keymap Structure","titles":["Introduction","Basic QMK Structure"]},"2261":{"title":"The config.h File","titles":[]},"2262":{"title":"More Detailed make Instructions","titles":[]},"2263":{"title":"rules.mk Options","titles":["More Detailed make Instructions"]},"2264":{"title":"Customizing Makefile Options on a Per-Keymap Basis","titles":["More Detailed make Instructions"]},"2265":{"title":"Hand-Wiring Guide","titles":[]},"2266":{"title":"Parts list","titles":["Hand-Wiring Guide"]},"2267":{"title":"Starting the build","titles":["Hand-Wiring Guide"]},"2268":{"title":"Planning the matrix","titles":["Hand-Wiring Guide"]},"2269":{"title":"Common Microcontroller Boards","titles":["Hand-Wiring Guide","Planning the matrix"]},"2270":{"title":"Wiring the matrix","titles":["Hand-Wiring Guide"]},"2271":{"title":"A note on split keyboards","titles":["Hand-Wiring Guide","Wiring the matrix"]},"2272":{"title":"Soldering","titles":["Hand-Wiring Guide","Wiring the matrix"]},"2273":{"title":"Soldering the Diodes","titles":["Hand-Wiring Guide","Wiring the matrix","Soldering"]},"2274":{"title":"Soldering the Columns","titles":["Hand-Wiring Guide","Wiring the matrix","Soldering"]},"2275":{"title":"Wiring up the controller","titles":["Hand-Wiring Guide"]},"2276":{"title":"Specific instructions for the Teensy 2.0","titles":["Hand-Wiring Guide","Wiring up the controller"]},"2277":{"title":"Getting Some Basic Firmware Set Up","titles":["Hand-Wiring Guide"]},"2278":{"title":"Flashing the Firmware","titles":["Hand-Wiring Guide"]},"2279":{"title":"Testing Your Firmware","titles":["Hand-Wiring Guide"]},"2280":{"title":"Finishing up","titles":["Hand-Wiring Guide"]},"2281":{"title":"Links to Other Guides","titles":["Hand-Wiring Guide"]},"2282":{"title":"Legacy Content","titles":[]},"2283":{"title":"Preamble: How a Keyboard Matrix Works (and why we need diodes)","titles":["Legacy Content"]},"2284":{"title":"QMK Hardware Drivers","titles":[]},"2285":{"title":"Available Drivers","titles":[]},"2286":{"title":"ProMicro (AVR Only)","titles":["Available Drivers"]},"2287":{"title":"SSD1306 OLED Driver","titles":["Available Drivers"]},"2288":{"title":"WS2812","titles":["Available Drivers"]},"2289":{"title":"IS31FL3731","titles":["Available Drivers"]},"2290":{"title":"IS31FL3733","titles":["Available Drivers"]},"2291":{"title":"24xx series external I2C EEPROM","titles":["Available Drivers"]},"2292":{"title":"QMK Keyboard Guidelines","titles":[]},"2293":{"title":"Use QMK Lint","titles":["QMK Keyboard Guidelines"]},"2294":{"title":"Naming Your Keyboard/Project","titles":["QMK Keyboard Guidelines"]},"2295":{"title":"Sub-folders","titles":["QMK Keyboard Guidelines"]},"2296":{"title":"Keyboard Folder Structure","titles":["QMK Keyboard Guidelines"]},"2297":{"title":"readme.md","titles":["QMK Keyboard Guidelines","Keyboard Folder Structure"]},"2298":{"title":"info.json","titles":["QMK Keyboard Guidelines","Keyboard Folder Structure"]},"2299":{"title":"config.h","titles":["QMK Keyboard Guidelines","Keyboard Folder Structure"]},"2300":{"title":"rules.mk","titles":["QMK Keyboard Guidelines","Keyboard Folder Structure"]},"2301":{"title":"<keyboard_name.c>","titles":["QMK Keyboard Guidelines","Keyboard Folder Structure"]},"2302":{"title":"<keyboard_name.h>","titles":["QMK Keyboard Guidelines","Keyboard Folder Structure"]},"2303":{"title":"Image/Hardware Files","titles":["QMK Keyboard Guidelines"]},"2304":{"title":"Keyboard Defaults","titles":["QMK Keyboard Guidelines"]},"2305":{"title":"Magic Keycodes and Command","titles":["QMK Keyboard Guidelines","Keyboard Defaults"]},"2306":{"title":"Custom Keyboard Programming","titles":["QMK Keyboard Guidelines"]},"2307":{"title":"Non-Production/Handwired Projects","titles":["QMK Keyboard Guidelines"]},"2308":{"title":"Warnings as Errors","titles":["QMK Keyboard Guidelines"]},"2309":{"title":"Copyright Blurb","titles":["QMK Keyboard Guidelines"]},"2310":{"title":"License","titles":["QMK Keyboard Guidelines"]},"2311":{"title":"How a Keyboard Matrix Works","titles":[]},"2312":{"title":"How Keys Are Registered, and Interpreted by Computers","titles":[]},"2313":{"title":"Schematic View","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2314":{"title":"1. You Press a Key","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2315":{"title":"2. What the Firmware Sends","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2316":{"title":"3. What the Event Input/Kernel Does","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2317":{"title":"4. What the Operating System Does","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2318":{"title":"Back to the Firmware","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2319":{"title":"List of Characters You Can Send","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2320":{"title":"How to (Maybe) Enter Unicode Characters","titles":["How Keys Are Registered, and Interpreted by Computers"]},"2321":{"title":"Quantum Mechanical Keyboard Firmware","titles":[]},"2322":{"title":"What is QMK Firmware?","titles":["Quantum Mechanical Keyboard Firmware"]},"2323":{"title":"Get Started","titles":["Quantum Mechanical Keyboard Firmware"]},"2324":{"title":"Make It Yours","titles":["Quantum Mechanical Keyboard Firmware"]},"2325":{"title":"Need help?","titles":["Quantum Mechanical Keyboard Firmware"]},"2326":{"title":"Give Back","titles":["Quantum Mechanical Keyboard Firmware"]},"2327":{"title":"ISP Flashing Guide","titles":[]},"2328":{"title":"Hardware","titles":["ISP Flashing Guide"]},"2329":{"title":"Pro Micro as ISP","titles":["ISP Flashing Guide","Hardware"]},"2330":{"title":"Wiring","titles":["ISP Flashing Guide","Hardware","Pro Micro as ISP"]},"2331":{"title":"Arduino Uno / Micro as ISP","titles":["ISP Flashing Guide","Hardware"]},"2332":{"title":"Wiring","titles":["ISP Flashing Guide","Hardware","Arduino Uno / Micro as ISP"]},"2333":{"title":"Teensy 2.0 as ISP","titles":["ISP Flashing Guide","Hardware"]},"2334":{"title":"Wiring","titles":["ISP Flashing Guide","Hardware","Teensy 2.0 as ISP"]},"2335":{"title":"SparkFun PocketAVR / USBtinyISP","titles":["ISP Flashing Guide","Hardware"]},"2336":{"title":"Wiring","titles":["ISP Flashing Guide","Hardware","SparkFun PocketAVR / USBtinyISP"]},"2337":{"title":"USBasp","titles":["ISP Flashing Guide","Hardware"]},"2338":{"title":"Wiring","titles":["ISP Flashing Guide","Hardware","USBasp"]},"2339":{"title":"Bus Pirate","titles":["ISP Flashing Guide","Hardware"]},"2340":{"title":"Wiring","titles":["ISP Flashing Guide","Hardware","Bus Pirate"]},"2341":{"title":"Software","titles":["ISP Flashing Guide"]},"2342":{"title":"Bootloader Firmware","titles":["ISP Flashing Guide"]},"2343":{"title":"Atmel DFU","titles":["ISP Flashing Guide","Bootloader Firmware"]},"2344":{"title":"Caterina","titles":["ISP Flashing Guide","Bootloader Firmware"]},"2345":{"title":"BootloadHID (PS2AVRGB)","titles":["ISP Flashing Guide","Bootloader Firmware"]},"2346":{"title":"USBaspLoader","titles":["ISP Flashing Guide","Bootloader Firmware"]},"2347":{"title":"Flashing the Bootloader","titles":["ISP Flashing Guide"]},"2348":{"title":"Setting the Fuses","titles":["ISP Flashing Guide","Flashing the Bootloader"]},"2349":{"title":"Creating a "Production" Firmware","titles":["ISP Flashing Guide"]},"2350":{"title":"Flashing STM32Duino Bootloader","titles":["ISP Flashing Guide"]},"2351":{"title":"Software","titles":["ISP Flashing Guide","Flashing STM32Duino Bootloader"]},"2352":{"title":"Wiring","titles":["ISP Flashing Guide","Flashing STM32Duino Bootloader"]},"2353":{"title":"Flashing","titles":["ISP Flashing Guide","Flashing STM32Duino Bootloader"]},"2354":{"title":"Keycodes Overview","titles":[]},"2355":{"title":"Basic Keycodes","titles":["Keycodes Overview"]},"2356":{"title":"Quantum Keycodes","titles":["Keycodes Overview"]},"2357":{"title":"Audio Keys","titles":["Keycodes Overview"]},"2358":{"title":"Auto Shift","titles":["Keycodes Overview"]},"2359":{"title":"Autocorrect","titles":["Keycodes Overview"]},"2360":{"title":"Backlighting","titles":["Keycodes Overview"]},"2361":{"title":"Bluetooth","titles":["Keycodes Overview"]},"2362":{"title":"Caps Word","titles":["Keycodes Overview"]},"2363":{"title":"Dynamic Macros","titles":["Keycodes Overview"]},"2364":{"title":"Grave Escape","titles":["Keycodes Overview"]},"2365":{"title":"Joystick","titles":["Keycodes Overview"]},"2366":{"title":"Key Lock","titles":["Keycodes Overview"]},"2367":{"title":"Layer Switching","titles":["Keycodes Overview"]},"2368":{"title":"Leader Key","titles":["Keycodes Overview"]},"2369":{"title":"LED Matrix","titles":["Keycodes Overview"]},"2370":{"title":"Magic Keycodes","titles":["Keycodes Overview"]},"2371":{"title":"MIDI","titles":["Keycodes Overview"]},"2372":{"title":"Mouse Keys","titles":["Keycodes Overview"]},"2373":{"title":"Modifiers","titles":["Keycodes Overview"]},"2374":{"title":"Mod-Tap Keys","titles":["Keycodes Overview"]},"2375":{"title":"Tapping Term Keys","titles":["Keycodes Overview"]},"2376":{"title":"RGB Lighting","titles":["Keycodes Overview"]},"2377":{"title":"RGB Matrix Lighting","titles":["Keycodes Overview"]},"2378":{"title":"US ANSI Shifted Symbols","titles":["Keycodes Overview"]},"2379":{"title":"One Shot Keys","titles":["Keycodes Overview"]},"2380":{"title":"Programmable Button Support","titles":["Keycodes Overview"]},"2381":{"title":"Repeat Key","titles":["Keycodes Overview"]},"2382":{"title":"Space Cadet","titles":["Keycodes Overview"]},"2383":{"title":"Swap Hands","titles":["Keycodes Overview"]},"2384":{"title":"Unicode Support","titles":["Keycodes Overview"]},"2385":{"title":"Basic Keycodes","titles":[]},"2386":{"title":"Letters and Numbers","titles":["Basic Keycodes"]},"2387":{"title":"F Keys","titles":["Basic Keycodes"]},"2388":{"title":"Punctuation","titles":["Basic Keycodes"]},"2389":{"title":"Lock Keys","titles":["Basic Keycodes"]},"2390":{"title":"Modifiers","titles":["Basic Keycodes"]},"2391":{"title":"International","titles":["Basic Keycodes"]},"2392":{"title":"Commands","titles":["Basic Keycodes"]},"2393":{"title":"Media Keys","titles":["Basic Keycodes"]},"2394":{"title":"Number Pad","titles":["Basic Keycodes"]},"2395":{"title":"Special Keys","titles":["Basic Keycodes"]},"2396":{"title":"Magic Keycodes","titles":[]},"2397":{"title":"US ANSI Shifted Symbols","titles":[]},"2398":{"title":"Caveats","titles":["US ANSI Shifted Symbols"]},"2399":{"title":"Keycodes","titles":["US ANSI Shifted Symbols"]},"2400":{"title":"Keymap Overview","titles":[]},"2401":{"title":"Keymap and Layers","titles":["Keymap Overview"]},"2402":{"title":"Keymap Layer Status","titles":["Keymap Overview","Keymap and Layers"]},"2403":{"title":"Layer Precedence and Transparency","titles":["Keymap Overview","Keymap and Layers"]},"2404":{"title":"Anatomy of a keymap.c","titles":["Keymap Overview"]},"2405":{"title":"Definitions","titles":["Keymap Overview","Anatomy of a keymap.c"]},"2406":{"title":"Layers and Keymaps","titles":["Keymap Overview","Anatomy of a keymap.c"]},"2407":{"title":"Base Layer","titles":["Keymap Overview","Anatomy of a keymap.c","Layers and Keymaps"]},"2408":{"title":"Function Overlay Layer","titles":["Keymap Overview","Anatomy of a keymap.c","Layers and Keymaps"]},"2409":{"title":"Nitty Gritty Details","titles":[]},"2410":{"title":"Mod-Tap","titles":[]},"2411":{"title":"Caveats","titles":["Mod-Tap"]},"2412":{"title":"Intercepting Mod-Taps","titles":["Mod-Tap"]},"2413":{"title":"Changing tap function","titles":["Mod-Tap","Intercepting Mod-Taps"]},"2414":{"title":"Changing hold function","titles":["Mod-Tap","Intercepting Mod-Taps"]},"2415":{"title":"Changing both tap and hold","titles":["Mod-Tap","Intercepting Mod-Taps"]},"2416":{"title":"Other Resources","titles":["Mod-Tap"]},"2417":{"title":"The QMK Tutorial","titles":[]},"2418":{"title":"Overview","titles":["The QMK Tutorial"]},"2419":{"title":"Additional Resources","titles":["The QMK Tutorial"]},"2420":{"title":"Building Your First Firmware","titles":[]},"2421":{"title":"Configure Your Build Environment Defaults (Optional)","titles":["Building Your First Firmware"]},"2422":{"title":"Create a New Keymap","titles":["Building Your First Firmware"]},"2423":{"title":"Open keymap.c In Your Favorite Text Editor","titles":["Building Your First Firmware"]},"2424":{"title":"Customize The Layout To Your Liking","titles":["Building Your First Firmware"]},"2425":{"title":"Build Your Firmware","titles":["Building Your First Firmware"]},"2426":{"title":"Flash Your Firmware","titles":["Building Your First Firmware"]},"2427":{"title":"QMK Configurator","titles":[]},"2428":{"title":"Building QMK with GitHub Userspace","titles":[]},"2429":{"title":"Prerequisites","titles":["Building QMK with GitHub Userspace"]},"2430":{"title":"Environment Setup","titles":["Building QMK with GitHub Userspace"]},"2431":{"title":"1. Install Git","titles":["Building QMK with GitHub Userspace","Environment Setup"]},"2432":{"title":"2. GitHub authentication","titles":["Building QMK with GitHub Userspace","Environment Setup"]},"2433":{"title":"3. Create a repository","titles":["Building QMK with GitHub Userspace","Environment Setup"]},"2434":{"title":"Initial Code Commit","titles":["Building QMK with GitHub Userspace"]},"2435":{"title":"Create template files","titles":["Building QMK with GitHub Userspace","Initial Code Commit"]},"2436":{"title":"Add a JSON keymap","titles":["Building QMK with GitHub Userspace","Initial Code Commit"]},"2437":{"title":"Add a GitHub Action workflow","titles":["Building QMK with GitHub Userspace","Initial Code Commit"]},"2438":{"title":"Commit files to GitHub","titles":["Building QMK with GitHub Userspace","Initial Code Commit"]},"2439":{"title":"Review workflow output","titles":["Building QMK with GitHub Userspace","Initial Code Commit"]},"2440":{"title":"Customising your keymap","titles":["Building QMK with GitHub Userspace"]},"2441":{"title":"External QMK Userspace","titles":[]},"2442":{"title":"Setting up QMK Locally","titles":["External QMK Userspace"]},"2443":{"title":"External Userspace Repository Setup (forked on GitHub)","titles":["External QMK Userspace"]},"2444":{"title":"External Userspace Setup (locally stored only)","titles":["External QMK Userspace"]},"2445":{"title":"Adding a Keymap","titles":["External QMK Userspace"]},"2446":{"title":"Adding the keymap to External Userspace build targets","titles":["External QMK Userspace"]},"2447":{"title":"Compiling External Userspace build targets","titles":["External QMK Userspace"]},"2448":{"title":"Using GitHub Actions","titles":["External QMK Userspace"]},"2449":{"title":"Flashing Your Keyboard","titles":[]},"2450":{"title":"Put Your Keyboard into DFU (Bootloader) Mode","titles":["Flashing Your Keyboard"]},"2451":{"title":"Flashing Your Keyboard with QMK Toolbox","titles":["Flashing Your Keyboard"]},"2452":{"title":"Load the File into QMK Toolbox","titles":["Flashing Your Keyboard","Flashing Your Keyboard with QMK Toolbox"]},"2453":{"title":"Flash Your Keyboard","titles":["Flashing Your Keyboard","Flashing Your Keyboard with QMK Toolbox"]},"2454":{"title":"Flash your Keyboard from the Command Line","titles":["Flashing Your Keyboard"]},"2455":{"title":"Test It Out!","titles":["Flashing Your Keyboard"]},"2456":{"title":"Setting Up Your QMK Environment","titles":[]},"2457":{"title":"1. Prerequisites","titles":["Setting Up Your QMK Environment"]},"2458":{"title":"2. Prepare Your Build Environment","titles":["Setting Up Your QMK Environment"]},"2459":{"title":"Prerequisites","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2460":{"title":"Prerequisites","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2461":{"title":"Installation","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2462":{"title":"Prerequisites","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2463":{"title":"Installation","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2464":{"title":"Prerequisites","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2465":{"title":"Installation","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2466":{"title":"Community Packages","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2467":{"title":"Installation","titles":["Setting Up Your QMK Environment","2. Prepare Your Build Environment"]},"2468":{"title":"3. Run QMK Setup","titles":["Setting Up Your QMK Environment"]},"2469":{"title":"4. Test Your Build Environment","titles":["Setting Up Your QMK Environment"]},"2470":{"title":"Creating Your Keymap","titles":[]},"2471":{"title":"Best Git Practices for Working with QMK","titles":[]},"2472":{"title":"Or, "How I Learned to Stop Worrying and Love Git."","titles":["Best Git Practices for Working with QMK"]},"2473":{"title":"Resolving Merge Conflicts","titles":[]},"2474":{"title":"Rebasing Your Changes","titles":["Resolving Merge Conflicts"]},"2475":{"title":"Resynchronizing an Out-of-Sync Git Branch","titles":[]},"2476":{"title":"Backing Up the Changes on Your Own Master Branch (Optional)","titles":["Resynchronizing an Out-of-Sync Git Branch"]},"2477":{"title":"Resynchronizing Your Branch","titles":["Resynchronizing an Out-of-Sync Git Branch"]},"2478":{"title":"Your Fork's Master: Update Often, Commit Never","titles":[]},"2479":{"title":"Updating your master branch","titles":["Your Fork's Master: Update Often, Commit Never"]},"2480":{"title":"Making Changes","titles":["Your Fork's Master: Update Often, Commit Never"]},"2481":{"title":"Publishing Your Changes","titles":["Your Fork's Master: Update Often, Commit Never"]},"2482":{"title":"Learning Resources","titles":[]},"2483":{"title":"QMK resources","titles":["Learning Resources"]},"2484":{"title":"Command Line resources","titles":["Learning Resources"]},"2485":{"title":"Text Editor resources","titles":["Learning Resources"]},"2486":{"title":"Git resources","titles":["Learning Resources"]},"2487":{"title":"Testing and Debugging","titles":[]},"2488":{"title":"Testing","titles":["Testing and Debugging"]},"2489":{"title":"Debugging","titles":["Testing and Debugging"]},"2490":{"title":"One Shot Keys","titles":[]},"2491":{"title":"Callbacks","titles":["One Shot Keys"]},"2492":{"title":"Setting up Eclipse for QMK Development","titles":[]},"2493":{"title":"Prerequisites","titles":[]},"2494":{"title":"Build Environment","titles":["Prerequisites"]},"2495":{"title":"Java","titles":["Prerequisites"]},"2496":{"title":"Install Eclipse and Its Plugins","titles":[]},"2497":{"title":"Download and Install Eclipse CDT","titles":["Install Eclipse and Its Plugins"]},"2498":{"title":"First Launch","titles":["Install Eclipse and Its Plugins"]},"2499":{"title":"Install the Necessary Plugins","titles":["Install Eclipse and Its Plugins"]},"2500":{"title":"Configure Eclipse for QMK","titles":[]},"2501":{"title":"Importing the Project","titles":["Configure Eclipse for QMK"]},"2502":{"title":"Build Your Keyboard","titles":["Configure Eclipse for QMK"]},"2503":{"title":"Setting up Visual Studio Code for QMK Development","titles":[]},"2504":{"title":"Set up VS Code","titles":[]},"2505":{"title":"Windows","titles":["Set up VS Code"]},"2506":{"title":"Prerequisites","titles":["Set up VS Code","Windows"]},"2507":{"title":"Installing VS Code","titles":["Set up VS Code","Windows"]},"2508":{"title":"MSYS2 Setup","titles":["Set up VS Code","Windows","Installing VS Code"]},"2509":{"title":"Every other Operating System","titles":["Set up VS Code"]},"2510":{"title":"Extensions","titles":["Set up VS Code"]},"2511":{"title":"Configure VS Code for QMK","titles":[]},"2512":{"title":"Configuring VS Code","titles":["Configure VS Code for QMK"]},"2513":{"title":"Debugging ARM MCUs with Visual Studio Code","titles":[]},"2514":{"title":"WeAct Blackpill (STM32F4x1)","titles":[]},"2515":{"title":"Pin Usage Limitations","titles":["WeAct Blackpill (STM32F4x1)"]},"2516":{"title":"Unusable pins","titles":["WeAct Blackpill (STM32F4x1)","Pin Usage Limitations"]},"2517":{"title":"Pins to be avoided","titles":["WeAct Blackpill (STM32F4x1)","Pin Usage Limitations"]},"2518":{"title":"Shared Usage","titles":["WeAct Blackpill (STM32F4x1)","Pin Usage Limitations"]},"2519":{"title":"Limited Usage","titles":["WeAct Blackpill (STM32F4x1)","Pin Usage Limitations"]},"2520":{"title":"Additional Information","titles":["WeAct Blackpill (STM32F4x1)"]},"2521":{"title":"Bootloader issues","titles":["WeAct Blackpill (STM32F4x1)","Additional Information"]},"2522":{"title":"Tiny UF2 Support","titles":["WeAct Blackpill (STM32F4x1)","Additional Information"]},"2523":{"title":"Arm/ChibiOS Early Initialization","titles":[]},"2524":{"title":"early_hardware_init_pre()","titles":["Arm/ChibiOS Early Initialization"]},"2525":{"title":"early_hardware_init_post()","titles":["Arm/ChibiOS Early Initialization"]},"2526":{"title":"board_init()","titles":["Arm/ChibiOS Early Initialization"]},"2527":{"title":"Proton C","titles":[]},"2528":{"title":"Features","titles":["Proton C"]},"2529":{"title":"Warnings","titles":["Proton C"]},"2530":{"title":"Manual Conversion","titles":["Proton C"]},"2531":{"title":"Raspberry Pi RP2040","titles":[]},"2532":{"title":"GPIO","titles":["Raspberry Pi RP2040"]},"2533":{"title":"Pin nomenclature","titles":["Raspberry Pi RP2040","GPIO"]},"2534":{"title":"Alternate functions","titles":["Raspberry Pi RP2040","GPIO"]},"2535":{"title":"Selecting hardware peripherals and drivers","titles":["Raspberry Pi RP2040"]},"2536":{"title":"I2C Driver","titles":["Raspberry Pi RP2040","Selecting hardware peripherals and drivers"]},"2537":{"title":"SPI Driver","titles":["Raspberry Pi RP2040","Selecting hardware peripherals and drivers"]},"2538":{"title":"UART Driver","titles":["Raspberry Pi RP2040","Selecting hardware peripherals and drivers"]},"2539":{"title":"Double-tap reset boot-loader entry","titles":["Raspberry Pi RP2040"]},"2540":{"title":"Pre-defined RP2040 boards","titles":["Raspberry Pi RP2040"]},"2541":{"title":"Generic Pro Micro RP2040","titles":["Raspberry Pi RP2040","Pre-defined RP2040 boards"]},"2542":{"title":"Generic RP2040 board","titles":["Raspberry Pi RP2040","Pre-defined RP2040 boards"]},"2543":{"title":"Split keyboard support","titles":["Raspberry Pi RP2040"]},"2544":{"title":"RP2040 second stage bootloader selection","titles":["Raspberry Pi RP2040"]},"2545":{"title":"RP2040 Community Edition","titles":["Raspberry Pi RP2040"]},"2546":{"title":"Choosing an Arm MCU","titles":[]},"2547":{"title":"Selecting an already-supported MCU","titles":["Choosing an Arm MCU"]},"2548":{"title":"STM32 families","titles":["Choosing an Arm MCU","Selecting an already-supported MCU"]},"2549":{"title":"Non-STM32 families","titles":["Choosing an Arm MCU","Selecting an already-supported MCU"]},"2550":{"title":"Adding support for a new STM32 MCU (for an existing family)","titles":["Choosing an Arm MCU"]},"2551":{"title":"Adding support for a new STM32 Family","titles":["Choosing an Arm MCU"]},"2552":{"title":"Adding support for a new MCU Family","titles":["Choosing an Arm MCU"]},"2553":{"title":"Adding Your Keyboard to QMK","titles":[]},"2554":{"title":"readme.md","titles":["Adding Your Keyboard to QMK"]},"2555":{"title":"info.json","titles":["Adding Your Keyboard to QMK"]},"2556":{"title":"Hardware Configuration","titles":["Adding Your Keyboard to QMK","info.json"]},"2557":{"title":"Matrix Configuration","titles":["Adding Your Keyboard to QMK","info.json"]},"2558":{"title":"Direct Pin Matrix","titles":["Adding Your Keyboard to QMK","info.json","Matrix Configuration"]},"2559":{"title":"Layout macros","titles":["Adding Your Keyboard to QMK","info.json"]},"2560":{"title":"Additional Configuration","titles":["Adding Your Keyboard to QMK"]},"2561":{"title":"Configuration Options","titles":["Adding Your Keyboard to QMK","Additional Configuration"]},"2562":{"title":"Build Options","titles":["Adding Your Keyboard to QMK","Additional Configuration"]},"2563":{"title":"PR checklists","titles":[]},"2564":{"title":"Requirements for all PRs","titles":["PR checklists"]},"2565":{"title":"Keymap PRs","titles":["PR checklists"]},"2566":{"title":"Keyboard PRs","titles":["PR checklists"]},"2567":{"title":"Core PRs","titles":["PR checklists"]},"2568":{"title":"Notes","titles":["PR checklists"]},"2569":{"title":"Review Process","titles":["PR checklists"]},"2570":{"title":"Example GPLv2 Header","titles":["PR checklists"]},"2571":{"title":"Quantum Keycodes","titles":[]},"2572":{"title":"QMK Keycodes","titles":["Quantum Keycodes"]},"2573":{"title":"Quantum Painter","titles":[]},"2574":{"title":"Quantum Painter Configuration","titles":["Quantum Painter"]},"2575":{"title":"Quantum Painter CLI Commands","titles":["Quantum Painter"]},"2576":{"title":"Quantum Painter Display Drivers","titles":["Quantum Painter"]},"2577":{"title":"Quantum Painter Drawing API","titles":["Quantum Painter"]},"2578":{"title":"Quantum Painter LVGL Integration","titles":[]},"2579":{"title":"Enabling LVGL","titles":["Quantum Painter LVGL Integration"]},"2580":{"title":"Quantum Painter LVGL API","titles":["Quantum Painter LVGL Integration"]},"2581":{"title":"Quantum Painter LVGL Attach","titles":["Quantum Painter LVGL Integration","Quantum Painter LVGL API"]},"2582":{"title":"Quantum Painter LVGL Detach","titles":["Quantum Painter LVGL Integration","Quantum Painter LVGL API"]},"2583":{"title":"Enabling/Disabling LVGL features","titles":["Quantum Painter LVGL Integration"]},"2584":{"title":"Changing the LVGL task frequency","titles":["Quantum Painter LVGL Integration"]},"2585":{"title":"QMK Font Format","titles":[]},"2586":{"title":"Block Header","titles":["QMK Font Format"]},"2587":{"title":"Font descriptor block","titles":["QMK Font Format"]},"2588":{"title":"ASCII glyph table","titles":["QMK Font Format"]},"2589":{"title":"Unicode glyph table","titles":["QMK Font Format"]},"2590":{"title":"Font palette block","titles":["QMK Font Format"]},"2591":{"title":"Font data block","titles":["QMK Font Format"]},"2592":{"title":"QMK Graphics Format","titles":[]},"2593":{"title":"Block Header","titles":["QMK Graphics Format"]},"2594":{"title":"Graphics descriptor block","titles":["QMK Graphics Format"]},"2595":{"title":"Frame offset block","titles":["QMK Graphics Format"]},"2596":{"title":"Frame descriptor block","titles":["QMK Graphics Format"]},"2597":{"title":"Frame palette block","titles":["QMK Graphics Format"]},"2598":{"title":"Frame delta block","titles":["QMK Graphics Format"]},"2599":{"title":"Frame data block","titles":["QMK Graphics Format"]},"2600":{"title":"QMK QGF/QFF RLE data schema","titles":[]},"2601":{"title":"List of Useful Core Functions To Make Your Keyboard Better","titles":[]},"2602":{"title":"(OLKB) Tri Layers","titles":["List of Useful Core Functions To Make Your Keyboard Better"]},"2603":{"title":"update_tri_layer(x, y, z)","titles":["List of Useful Core Functions To Make Your Keyboard Better","(OLKB) Tri Layers"]},"2604":{"title":"Example","titles":["List of Useful Core Functions To Make Your Keyboard Better","(OLKB) Tri Layers","update_tri_layer(x, y, z)"]},"2605":{"title":"update_tri_layer_state(state, x, y, z)","titles":["List of Useful Core Functions To Make Your Keyboard Better","(OLKB) Tri Layers"]},"2606":{"title":"Example","titles":["List of Useful Core Functions To Make Your Keyboard Better","(OLKB) Tri Layers","update_tri_layer_state(state, x, y, z)"]},"2607":{"title":"Setting the Persistent Default Layer","titles":["List of Useful Core Functions To Make Your Keyboard Better"]},"2608":{"title":"Resetting the keyboard","titles":["List of Useful Core Functions To Make Your Keyboard Better"]},"2609":{"title":"Reset to bootloader","titles":["List of Useful Core Functions To Make Your Keyboard Better"]},"2610":{"title":"Wiping the EEPROM (Persistent Storage)","titles":["List of Useful Core Functions To Make Your Keyboard Better"]},"2611":{"title":"Tap random key","titles":["List of Useful Core Functions To Make Your Keyboard Better"]},"2612":{"title":"Software Timers","titles":["List of Useful Core Functions To Make Your Keyboard Better"]},"2613":{"title":"Supporting Your Keyboard in QMK Configurator","titles":[]},"2614":{"title":"How the Configurator Understands Keyboards","titles":["Supporting Your Keyboard in QMK Configurator"]},"2615":{"title":"Building the JSON file","titles":["Supporting Your Keyboard in QMK Configurator"]},"2616":{"title":"How the Configurator Programs Keys","titles":["Supporting Your Keyboard in QMK Configurator"]},"2617":{"title":"Issues and Hazards","titles":["Supporting Your Keyboard in QMK Configurator"]},"2618":{"title":"Workarounds","titles":["Supporting Your Keyboard in QMK Configurator","Issues and Hazards"]},"2619":{"title":"Non-rectangular keys","titles":["Supporting Your Keyboard in QMK Configurator","Issues and Hazards","Workarounds"]},"2620":{"title":"Vertically-offset keys","titles":["Supporting Your Keyboard in QMK Configurator","Issues and Hazards","Workarounds"]},"2621":{"title":"Glossary of QMK Terms","titles":[]},"2622":{"title":"ARM","titles":["Glossary of QMK Terms"]},"2623":{"title":"AVR","titles":["Glossary of QMK Terms"]},"2624":{"title":"AZERTY","titles":["Glossary of QMK Terms"]},"2625":{"title":"Backlight","titles":["Glossary of QMK Terms"]},"2626":{"title":"Bluetooth","titles":["Glossary of QMK Terms"]},"2627":{"title":"Bootloader","titles":["Glossary of QMK Terms"]},"2628":{"title":"Bootmagic","titles":["Glossary of QMK Terms"]},"2629":{"title":"C","titles":["Glossary of QMK Terms"]},"2630":{"title":"Colemak","titles":["Glossary of QMK Terms"]},"2631":{"title":"Compile","titles":["Glossary of QMK Terms"]},"2632":{"title":"Dvorak","titles":["Glossary of QMK Terms"]},"2633":{"title":"Dynamic Macro","titles":["Glossary of QMK Terms"]},"2634":{"title":"Eclipse","titles":["Glossary of QMK Terms"]},"2635":{"title":"Firmware","titles":["Glossary of QMK Terms"]},"2636":{"title":"git","titles":["Glossary of QMK Terms"]},"2637":{"title":"GitHub","titles":["Glossary of QMK Terms"]},"2638":{"title":"ISP","titles":["Glossary of QMK Terms"]},"2639":{"title":"hid_listen","titles":["Glossary of QMK Terms"]},"2640":{"title":"Keycode","titles":["Glossary of QMK Terms"]},"2641":{"title":"Key Down","titles":["Glossary of QMK Terms"]},"2642":{"title":"Key Up","titles":["Glossary of QMK Terms"]},"2643":{"title":"Keymap","titles":["Glossary of QMK Terms"]},"2644":{"title":"Layer","titles":["Glossary of QMK Terms"]},"2645":{"title":"Leader Key","titles":["Glossary of QMK Terms"]},"2646":{"title":"LED","titles":["Glossary of QMK Terms"]},"2647":{"title":"Make","titles":["Glossary of QMK Terms"]},"2648":{"title":"Matrix","titles":["Glossary of QMK Terms"]},"2649":{"title":"Macro","titles":["Glossary of QMK Terms"]},"2650":{"title":"MCU","titles":["Glossary of QMK Terms"]},"2651":{"title":"Modifier","titles":["Glossary of QMK Terms"]},"2652":{"title":"Mousekeys","titles":["Glossary of QMK Terms"]},"2653":{"title":"N-Key Rollover (NKRO)","titles":["Glossary of QMK Terms"]},"2654":{"title":"Oneshot Modifier","titles":["Glossary of QMK Terms"]},"2655":{"title":"ProMicro","titles":["Glossary of QMK Terms"]},"2656":{"title":"Pull Request","titles":["Glossary of QMK Terms"]},"2657":{"title":"QWERTY","titles":["Glossary of QMK Terms"]},"2658":{"title":"QWERTZ","titles":["Glossary of QMK Terms"]},"2659":{"title":"Rollover","titles":["Glossary of QMK Terms"]},"2660":{"title":"Scancode","titles":["Glossary of QMK Terms"]},"2661":{"title":"Space Cadet Shift","titles":["Glossary of QMK Terms"]},"2662":{"title":"Tap","titles":["Glossary of QMK Terms"]},"2663":{"title":"Tap Dance","titles":["Glossary of QMK Terms"]},"2664":{"title":"Teensy","titles":["Glossary of QMK Terms"]},"2665":{"title":"Underlight","titles":["Glossary of QMK Terms"]},"2666":{"title":"Unicode","titles":["Glossary of QMK Terms"]},"2667":{"title":"Unit Testing","titles":["Glossary of QMK Terms"]},"2668":{"title":"USB","titles":["Glossary of QMK Terms"]},"2669":{"title":"USB Host (or simply Host)","titles":["Glossary of QMK Terms"]},"2670":{"title":"Couldn't Find the Term You're Looking For?","titles":[]},"2671":{"title":"info.json Reference","titles":[]},"2672":{"title":"General Metadata","titles":["info.json Reference"]},"2673":{"title":"Hardware Configuration","titles":["info.json Reference"]},"2674":{"title":"Firmware Configuration","titles":["info.json Reference"]},"2675":{"title":"APA102","titles":["info.json Reference"]},"2676":{"title":"Audio","titles":["info.json Reference"]},"2677":{"title":"Backlight","titles":["info.json Reference"]},"2678":{"title":"Bluetooth","titles":["info.json Reference"]},"2679":{"title":"Bootmagic","titles":["info.json Reference"]},"2680":{"title":"Caps Word","titles":["info.json Reference"]},"2681":{"title":"Combo","titles":["info.json Reference"]},"2682":{"title":"DIP Switches","titles":["info.json Reference"]},"2683":{"title":"EEPROM","titles":["info.json Reference"]},"2684":{"title":"Encoder","titles":["info.json Reference"]},"2685":{"title":"Indicators","titles":["info.json Reference"]},"2686":{"title":"Layouts","titles":["info.json Reference"]},"2687":{"title":"Leader Key","titles":["info.json Reference"]},"2688":{"title":"LED Matrix","titles":["info.json Reference"]},"2689":{"title":"Matrix","titles":["info.json Reference"]},"2690":{"title":"Mouse Keys","titles":["info.json Reference"]},"2691":{"title":"One Shot","titles":["info.json Reference"]},"2692":{"title":"PS/2","titles":["info.json Reference"]},"2693":{"title":"QMK LUFA Bootloader","titles":["info.json Reference"]},"2694":{"title":"RGBLight","titles":["info.json Reference"]},"2695":{"title":"RGB Matrix","titles":["info.json Reference"]},"2696":{"title":"Secure","titles":["info.json Reference"]},"2697":{"title":"Split Keyboard","titles":["info.json Reference"]},"2698":{"title":"Stenography","titles":["info.json Reference"]},"2699":{"title":"USB","titles":["info.json Reference"]},"2700":{"title":"WS2812","titles":["info.json Reference"]},"2701":{"title":"Squeezing the most out of AVR","titles":[]},"2702":{"title":"rules.mk Settings","titles":["Squeezing the most out of AVR"]},"2703":{"title":"config.h Settings","titles":["Squeezing the most out of AVR"]},"2704":{"title":"Audio Settings","titles":["Squeezing the most out of AVR"]},"2705":{"title":"Layers","titles":["Squeezing the most out of AVR"]},"2706":{"title":"Magic Functions","titles":["Squeezing the most out of AVR"]},"2707":{"title":"OLED tweaks","titles":["Squeezing the most out of AVR"]},"2708":{"title":"RGB Settings","titles":["Squeezing the most out of AVR"]},"2709":{"title":"Final Thoughts","titles":[]},"2710":{"title":"Language-specific Keycodes","titles":[]},"2711":{"title":"Sendstring Support","titles":["Language-specific Keycodes"]},"2712":{"title":"Header Files","titles":["Language-specific Keycodes"]},"2713":{"title":"Getting Help","titles":[]},"2714":{"title":"Realtime Chat","titles":["Getting Help"]},"2715":{"title":"OLKB Subreddit","titles":["Getting Help"]},"2716":{"title":"GitHub Issues","titles":["Getting Help"]},"2717":{"title":"Feature support policies","titles":[]},"2718":{"title":"System Constraints","titles":["Feature support policies"]},"2719":{"title":"Deprecation & Removal Policy","titles":["Feature support policies"]},"2720":{"title":"How much advance notice will be given?","titles":["Feature support policies","Deprecation & Removal Policy"]},"2721":{"title":"How will deprecation be communicated?","titles":["Feature support policies","Deprecation & Removal Policy"]},"2722":{"title":"QMK Syllabus","titles":[]},"2723":{"title":"Beginning Topics","titles":[]},"2724":{"title":"Intermediate Topics","titles":[]},"2725":{"title":"Advanced Topics","titles":[]},"2726":{"title":"Tap-Hold Configuration Options","titles":[]},"2727":{"title":"Tapping Term","titles":["Tap-Hold Configuration Options"]},"2728":{"title":"Dynamic Tapping Term","titles":["Tap-Hold Configuration Options","Tapping Term"]},"2729":{"title":"Tap-Or-Hold Decision Modes","titles":["Tap-Hold Configuration Options"]},"2730":{"title":"Comparison","titles":["Tap-Hold Configuration Options","Tap-Or-Hold Decision Modes"]},"2731":{"title":"Distinct taps (AABB)","titles":["Tap-Hold Configuration Options","Tap-Or-Hold Decision Modes","Comparison"]},"2732":{"title":"Nested tap (ABBA)","titles":["Tap-Hold Configuration Options","Tap-Or-Hold Decision Modes","Comparison"]},"2733":{"title":"Rolling keys (ABAB)","titles":["Tap-Hold Configuration Options","Tap-Or-Hold Decision Modes","Comparison"]},"2734":{"title":"Default Mode","titles":["Tap-Hold Configuration Options","Tap-Or-Hold Decision Modes"]},"2735":{"title":"Permissive Hold","titles":["Tap-Hold Configuration Options","Tap-Or-Hold Decision Modes"]},"2736":{"title":"Hold On Other Key Press","titles":["Tap-Hold Configuration Options","Tap-Or-Hold Decision Modes"]},"2737":{"title":"Quick Tap Term","titles":["Tap-Hold Configuration Options"]},"2738":{"title":"Retro Tapping","titles":["Tap-Hold Configuration Options"]},"2739":{"title":"Retro Shift","titles":["Tap-Hold Configuration Options","Retro Tapping"]},"2740":{"title":"Why do we include the key record for the per key functions?","titles":["Tap-Hold Configuration Options"]},"2741":{"title":"Why are there no *_kb or *_user functions?!","titles":["Tap-Hold Configuration Options"]},"2742":{"title":"Understanding QMK's Code","titles":[]},"2743":{"title":"Startup","titles":["Understanding QMK's Code"]},"2744":{"title":"The Main Loop","titles":["Understanding QMK's Code"]},"2745":{"title":"Matrix Scanning","titles":["Understanding QMK's Code","The Main Loop"]},"2746":{"title":"Matrix to Physical Layout Map","titles":["Understanding QMK's Code","The Main Loop","Matrix Scanning"]},"2747":{"title":"Keycode Assignment","titles":["Understanding QMK's Code","The Main Loop","Matrix Scanning"]},"2748":{"title":"State Change Detection","titles":["Understanding QMK's Code","The Main Loop","Matrix Scanning"]},"2749":{"title":"Process Record","titles":["Understanding QMK's Code","The Main Loop","Matrix Scanning"]},"2750":{"title":"Unit Testing","titles":[]},"2751":{"title":"Google Test and Google Mock","titles":["Unit Testing"]},"2752":{"title":"Use of C++","titles":["Unit Testing"]},"2753":{"title":"Adding Tests for New or Existing Features","titles":["Unit Testing"]},"2754":{"title":"Running the Tests","titles":["Unit Testing"]},"2755":{"title":"Debugging the Tests","titles":["Unit Testing"]},"2756":{"title":"Full Integration Tests","titles":["Unit Testing"]},"2757":{"title":"Tracing Variables","titles":[]}},"dirtCount":0,"index":[["ąžerty",{"2":{"2712":1}}],["ąƚɂɻɣɉʣ",{"2":{"2575":2}}],["µs",{"2":{"2689":1}}],["↓",{"2":{"2615":3}}],["└──",{"2":{"2438":3}}],["└row1",{"2":{"2311":3}}],["├──",{"2":{"2438":4}}],["¥",{"2":{"2391":1}}],["✔6",{"2":{"2355":1}}],["✔5",{"2":{"2355":4}}],["✔4",{"2":{"2355":2}}],["✔3",{"2":{"2355":4}}],["✔2",{"2":{"2355":3}}],["✔",{"2":{"2355":447}}],["✔️",{"2":{"285":1,"663":12,"1121":4,"1140":1,"1141":1,"2115":2,"2531":10,"2543":6}}],["€",{"2":{"2319":1}}],["┌─┘3",{"2":{"2311":2}}],["┌─┤1",{"2":{"2311":2}}],["┌─┤0",{"2":{"2311":2}}],["─────┴────────┘",{"2":{"2311":8}}],["│",{"2":{"2311":25,"2438":2}}],["│└row0",{"2":{"2311":3}}],["ಠ",{"2":{"2182":2}}],["🇺🇦",{"2":{"2182":1}}],["🎉👍",{"2":{"284":1,"550":1}}],["🤣",{"2":{"2182":1}}],["≤",{"2":{"2182":4}}],["æ",{"2":{"2182":2}}],["å",{"2":{"2182":2,"2710":1}}],["ツ",{"2":{"2181":1}}],["ћ",{"2":{"2181":1}}],["□",{"2":{"1594":25}}],["■",{"2":{"1594":15}}],["ñ",{"2":{"1499":1}}],["⇒",{"2":{"1451":3,"1452":3}}],["\\t22",{"2":{"2553":1}}],["\\t24",{"2":{"1405":1}}],["\\t51",{"2":{"2553":1}}],["\\t50",{"2":{"2553":1}}],["\\t1",{"2":{"2553":2}}],["\\t12",{"2":{"1405":1}}],["\\tmod",{"2":{"1665":1}}],["\\t~0",{"2":{"1665":1}}],["\\tkc",{"2":{"1665":2}}],["\\tko",{"2":{"1665":2}}],["\\t\\t",{"2":{"1954":1}}],["\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tkc",{"2":{"1665":4}}],["\\t\\tmod",{"2":{"1665":1}}],["\\t\\treturn",{"2":{"1555":1}}],["\\tif",{"2":{"1555":1}}],["\\t",{"2":{"1405":1,"1555":1,"1663":1,"1665":6,"1666":2,"1954":1}}],["\\t36",{"2":{"1405":1}}],["✅",{"2":{"1336":1,"2115":1}}],["^ge^s^s^w^c",{"2":{"2154":1}}],["^3+0",{"2":{"1857":1}}],["^=",{"2":{"1332":1}}],["^",{"2":{"1325":1,"1899":1,"2311":1,"2355":1,"2378":1,"2386":1,"2399":1}}],["ひらがな",{"2":{"1280":1}}],["変換",{"2":{"1280":1}}],["無変換",{"2":{"1280":1}}],["ç",{"0":{"1277":1}}],["²",{"2":{"635":1}}],["¹",{"2":{"635":1,"2501":1}}],["être",{"2":{"559":1}}],["¯",{"2":{"433":2}}],["☐",{"2":{"433":1}}],["¬",{"2":{"433":2}}],["☒",{"2":{"405":1,"433":1,"2293":2}}],["ψ",{"2":{"370":4,"388":1,"389":5,"390":5,"391":5,"393":2,"394":2,"395":3,"396":1,"397":4,"401":4,"405":1,"414":1,"415":1,"417":1,"423":1,"424":1,"433":1,"2277":5,"2293":1,"2422":1,"2553":5,"2672":2}}],["\`action",{"2":{"2170":1}}],["\`all\`",{"2":{"395":1}}],["\`layer",{"2":{"2170":2}}],["\`lalt\`",{"2":{"2170":1}}],["\`length\`",{"2":{"1921":1}}],["\`led",{"2":{"1729":1}}],["\`tapping",{"2":{"2169":1}}],["\`esc\`",{"2":{"2169":1}}],["\`finished\`",{"2":{"2170":2}}],["\`ff\`",{"2":{"2169":2}}],["\`f\`",{"2":{"2169":1}}],["\`buffer\`",{"2":{"2169":1}}],["\`reset\`",{"2":{"2170":2}}],["\`rgb",{"2":{"1952":1}}],["\`raw",{"2":{"1921":1}}],["\`data\`",{"2":{"1921":1}}],["\`develop\`",{"2":{"317":1}}],["\`",{"2":{"1519":1,"1666":3,"2170":7,"2401":3,"2402":3,"2597":12}}],["\`some",{"2":{"1519":1}}],["\`start\`",{"2":{"465":1}}],["\`kc",{"2":{"1344":1}}],["\`qk",{"2":{"624":1,"1344":1}}],["\`qmk",{"2":{"365":2,"366":2,"397":1}}],["\`offset\`",{"2":{"465":1}}],["\`cd\`",{"2":{"389":1,"390":1,"391":1,"2277":1,"2553":1}}],["\`master\`",{"2":{"317":1,"2568":3}}],["❌",{"2":{"285":1,"663":6,"1336":3}}],["⭕",{"2":{"285":1,"663":4}}],["😃",{"2":{"2255":1,"2670":1}}],["💩",{"2":{"2182":1}}],["🐍",{"2":{"2181":1}}],["👍🎉",{"2":{"284":1,"550":1}}],["😉",{"2":{"123":1}}],["→",{"2":{"176":3,"626":1,"627":2,"628":1,"2183":2}}],["麦田",{"2":{"160":1}}],["|0",{"2":{"2614":1}}],["|ent|",{"2":{"2614":1}}],["|3",{"2":{"2614":1}}],["|2",{"2":{"2614":1}}],["|1",{"2":{"2614":1}}],["|6",{"2":{"2614":1}}],["|5",{"2":{"2614":1}}],["|4",{"2":{"2614":1}}],["|9",{"2":{"2614":1}}],["|8",{"2":{"2614":1}}],["|7",{"2":{"2614":1}}],["|nlk|",{"2":{"2614":1}}],["|ing",{"2":{"1912":1}}],["|mod",{"2":{"1677":1,"2405":5,"2738":1}}],["|=",{"2":{"1446":2,"1878":1,"1905":2}}],["||",{"2":{"1344":1,"1446":1,"1518":1,"1939":1,"2169":2,"2170":1,"2228":9,"2548":1}}],["|kc",{"2":{"621":3}}],["|long",{"2":{"621":1}}],["|",{"2":{"116":1,"621":4,"669":1,"707":4,"760":2,"790":2,"824":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1123":20,"1126":32,"1129":32,"1148":2,"1239":1,"1300":2,"1325":18,"1335":1,"1346":26,"1349":13,"1385":2,"1451":19,"1594":9,"1668":3,"1821":1,"1822":1,"1903":4,"1905":1,"1907":8,"1938":1,"2228":1,"2255":2,"2311":28,"2313":6,"2347":6,"2355":2,"2378":1,"2388":2,"2391":1,"2399":1,"2401":8,"2402":14,"2410":1,"2437":1,"2614":24,"2615":11,"2734":72,"2735":48,"2736":24,"2738":22}}],["5+",{"2":{"1903":2}}],["5=64",{"2":{"1822":1}}],["59",{"2":{"1578":1}}],["58s",{"2":{"2347":1}}],["587968d6cbc2b0e1c7147540872f2a67e59ca18b",{"2":{"2255":1}}],["58",{"2":{"1578":1,"1857":1}}],["54",{"2":{"1578":1}}],["536",{"2":{"2575":1}}],["535",{"2":{"2094":1}}],["53",{"2":{"1578":1,"1857":1}}],["56",{"2":{"1440":1,"1578":1,"1857":1,"2453":1}}],["5625",{"2":{"529":1}}],["575",{"2":{"1637":3}}],["57",{"2":{"1578":1,"2255":1}}],["577ch",{"2":{"1287":1}}],["577c",{"2":{"1287":1}}],["57600",{"2":{"1136":1,"1201":1}}],["5kb",{"2":{"2707":1}}],["5kro",{"2":{"1278":1}}],["5kω",{"2":{"1126":1}}],["5u",{"2":{"1252":1}}],["55",{"2":{"820":1,"1578":1}}],["55k",{"2":{"820":1}}],["51",{"2":{"1578":1,"1793":1,"1857":1,"2371":1,"2553":1,"2611":1}}],["512",{"2":{"694":1,"1820":1,"2142":1}}],["5173",{"2":{"402":1,"558":1}}],["5v",{"2":{"629":2,"630":1,"1571":1,"1635":1,"2114":1,"2133":3,"2329":1,"2332":2,"2344":2,"2519":1,"2528":1,"2529":2,"2530":3,"2532":1}}],["52583",{"2":{"1289":1}}],["525",{"2":{"684":1}}],["52",{"2":{"181":2,"1578":1,"2611":1}}],["5291",{"2":{"114":1}}],["5",{"0":{"541":1,"2159":1,"2170":1},"1":{"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1},"2":{"176":1,"188":1,"191":1,"199":3,"211":2,"222":2,"249":1,"266":1,"313":1,"315":1,"350":2,"491":1,"496":1,"499":1,"502":3,"511":1,"530":2,"598":1,"633":1,"635":4,"684":1,"821":2,"854":2,"888":2,"922":2,"956":2,"990":2,"1024":2,"1058":2,"1091":1,"1092":2,"1136":1,"1177":3,"1226":2,"1328":1,"1335":1,"1336":1,"1357":1,"1370":1,"1383":1,"1405":1,"1440":1,"1499":1,"1504":1,"1530":2,"1534":2,"1576":2,"1577":1,"1578":1,"1594":1,"1612":1,"1614":1,"1639":3,"1677":1,"1714":1,"1716":1,"1725":1,"1730":1,"1793":31,"1798":1,"1801":2,"1804":1,"1821":2,"1832":1,"1834":3,"1857":1,"1860":1,"1863":1,"1868":1,"1934":1,"1943":1,"1946":1,"1954":1,"1959":3,"2036":3,"2040":1,"2060":1,"2111":1,"2128":1,"2130":3,"2148":1,"2153":1,"2155":4,"2156":1,"2174":2,"2226":2,"2232":1,"2234":1,"2239":1,"2255":3,"2339":1,"2355":9,"2365":3,"2371":31,"2372":2,"2380":3,"2386":2,"2391":2,"2394":2,"2407":1,"2490":1,"2497":1,"2575":2,"2576":2,"2593":2,"2596":3,"2615":2,"2674":1,"2680":1,"2688":1,"2689":2,"2695":1,"2696":1,"2697":1,"2707":1,"2738":1,"2745":1}}],["5000",{"2":{"1504":1,"1804":1,"2070":1,"2490":1,"2680":1,"2696":1}}],["500",{"2":{"502":2,"505":1,"597":2,"820":2,"1357":1,"1431":1,"1855":1,"1867":1,"1869":1,"2044":4,"2128":1,"2130":1,"2699":2}}],["500ms",{"2":{"176":1,"1675":1,"2130":1}}],["50",{"2":{"401":1,"703":1,"1221":1,"1416":1,"1518":1,"1578":26,"1817":1,"1860":2,"1870":2,"1950":1,"2040":3,"2167":4,"2681":2,"2728":6}}],["50ms",{"2":{"149":1,"1514":1,"2728":1}}],["5050",{"0":{"1855":1},"2":{"118":1,"1855":2}}],["5x7",{"2":{"143":2,"253":2}}],["5x8",{"2":{"143":4,"1589":2}}],["5x6",{"2":{"143":4,"222":1}}],["5x13",{"2":{"114":1,"249":1}}],["5ms",{"2":{"119":2,"1821":1,"2375":2,"2728":3}}],["$5",{"2":{"2655":1}}],["$path",{"2":{"2468":1}}],["$home",{"2":{"2443":1,"2444":1,"2468":4}}],["$qmk",{"2":{"360":3}}],["$",{"2":{"111":1,"176":1,"292":1,"314":2,"315":1,"317":3,"370":9,"388":1,"389":1,"391":1,"393":1,"394":1,"395":1,"396":1,"401":2,"405":2,"414":1,"415":1,"417":1,"423":1,"424":1,"514":1,"530":1,"665":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1238":4,"1377":2,"1384":2,"1385":2,"2229":1,"2277":1,"2293":2,"2300":9,"2355":1,"2378":1,"2386":1,"2399":1,"2437":5,"2443":1,"2444":1,"2474":2,"2477":2,"2479":1,"2513":2,"2553":1,"2565":1,"2575":5}}],["+size",{"2":{"2566":1}}],["++col",{"2":{"1958":1}}],["++row",{"2":{"1958":1}}],["++i",{"2":{"1448":1,"2577":2}}],["+6",{"2":{"1793":1,"2371":1}}],["+4",{"2":{"1793":1,"2371":1}}],["+3",{"2":{"1793":1,"2371":1,"2518":1}}],["+2",{"2":{"1793":1,"2371":1}}],["+1",{"2":{"1793":1,"2371":1}}],["+127",{"2":{"1636":1}}],["+7",{"2":{"1403":1}}],["+5v",{"2":{"2340":1}}],["+5",{"2":{"1403":1,"1793":1,"2371":1}}],["+=",{"2":{"234":9,"513":4,"514":1,"564":1,"665":2,"730":3,"756":3,"785":3,"817":3,"849":3,"884":3,"918":3,"952":3,"986":3,"1020":3,"1054":3,"1088":3,"1144":3,"1254":2,"1330":1,"1377":3,"1384":1,"1385":1,"1518":1,"1527":1,"1880":2,"2300":2,"2435":1,"2573":14,"2576":11,"2577":2,"2728":1}}],["+cleanup",{"2":{"199":1}}],["+",{"0":{"1302":2,"1303":1},"2":{"99":2,"134":2,"149":1,"176":3,"199":2,"222":1,"236":1,"292":2,"349":1,"582":1,"656":9,"1123":8,"1126":8,"1127":1,"1129":8,"1130":1,"1234":4,"1325":18,"1344":1,"1346":15,"1347":1,"1349":8,"1416":1,"1445":1,"1446":3,"1451":42,"1500":1,"1501":4,"1642":1,"1655":4,"1656":4,"1663":1,"1665":11,"1666":4,"1668":2,"1673":1,"1675":1,"1676":1,"1684":1,"1730":1,"1870":3,"1876":4,"1903":4,"1923":2,"1929":6,"1932":16,"1933":9,"1949":2,"1954":1,"2039":2,"2099":1,"2130":1,"2170":1,"2196":1,"2255":2,"2311":8,"2313":20,"2355":2,"2378":1,"2388":1,"2394":1,"2399":1,"2402":2,"2512":8,"2573":20,"2587":1,"2588":1,"2594":1,"2596":1,"2611":1,"2614":10,"2615":2,"2727":1,"2728":1,"2734":36,"2735":24,"2736":12,"2738":8}}],["≈10ms",{"2":{"94":1}}],["⚠",{"2":{"70":23,"391":1,"433":1,"2277":1}}],[">line",{"2":{"2577":1}}],[">width",{"2":{"2577":2}}],[">>>>>>>",{"2":{"2474":1}}],[">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>",{"2":{"2453":2}}],[">>>",{"2":{"2453":3}}],[">0",{"2":{"2402":1}}],[">1",{"2":{"2402":2}}],[">|",{"2":{"2313":4}}],[">height",{"2":{"2577":2}}],[">held",{"2":{"2168":5}}],[">hold",{"2":{"2168":2}}],[">interrupted",{"2":{"2168":1,"2169":3,"2170":1}}],[">init",{"2":{"1729":1,"1952":1}}],[">pressed",{"2":{"2168":1,"2169":3,"2170":1,"2171":1}}],[">user",{"2":{"2168":1}}],[">state",{"2":{"2168":2}}],[">s2m",{"2":{"2130":1}}],[">count",{"2":{"2166":1,"2167":2,"2168":1,"2169":3,"2170":2,"2171":2}}],[">m2s",{"2":{"2130":1}}],[">keys",{"2":{"1518":2}}],[">keycode",{"2":{"1518":5}}],[">=",{"2":{"1446":2,"1518":1,"1958":1,"2166":1,"2167":1,"2228":10,"2600":1}}],[">tap",{"2":{"1252":2,"1446":2,"2168":3,"2413":1,"2414":3,"2415":1}}],[">event",{"2":{"534":6,"572":2,"588":1,"1252":4,"1302":1,"1303":1,"1332":4,"1344":1,"1359":4,"1360":2,"1365":1,"1375":1,"1384":2,"1385":1,"1638":5,"1792":1,"1830":2,"1878":1,"1879":1,"1880":1,"1899":1,"1940":2,"1941":3,"1943":2,"2078":1,"2168":1,"2413":1,"2414":3,"2415":2,"2604":2,"2728":4}}],[">",{"2":{"70":1,"371":1,"414":2,"415":2,"417":1,"423":1,"424":2,"588":1,"1253":6,"1325":1,"1344":2,"1375":1,"1380":1,"1440":10,"1870":1,"1940":1,"1941":1,"1958":2,"1959":1,"2130":1,"2228":2,"2255":1,"2402":3,"2435":2,"2570":1,"2577":6}}],["~1",{"2":{"2707":1}}],["~175ms",{"2":{"2171":1}}],["~400",{"2":{"2702":1}}],["~5",{"2":{"2517":1}}],["~$6",{"2":{"2514":1,"2709":1}}],["~$",{"2":{"2255":4}}],["~mouse",{"2":{"1878":1}}],["~mod",{"2":{"1446":1,"1938":1}}],["~0x05",{"2":{"2599":1}}],["~0x04",{"2":{"2598":1}}],["~0x03",{"2":{"2597":1}}],["~0x02",{"2":{"2589":1,"2596":1}}],["~0x01",{"2":{"2588":1,"2595":1}}],["~0x00",{"2":{"2587":1,"2594":1}}],["~0",{"2":{"1665":4}}],["~",{"2":{"70":3,"365":1,"366":1,"367":1,"370":4,"389":1,"390":1,"391":1,"401":1,"450":2,"451":1,"530":1,"1563":1,"1565":1,"1666":1,"1668":2,"1905":1,"1907":3,"1938":1,"2277":1,"2355":2,"2378":1,"2388":2,"2399":1,"2435":5,"2436":1,"2437":1,"2438":1,"2477":2}}],["~22k",{"2":{"2517":1}}],["~2",{"2":{"6":1,"10":1}}],["7da94ac5",{"2":{"2255":1}}],["7kohm",{"2":{"2120":1}}],["7kω",{"2":{"2117":1}}],["7k",{"2":{"1903":3}}],["7k25",{"2":{"1091":1}}],["7=256",{"2":{"1822":1}}],["79",{"2":{"1578":1,"1857":1}}],["7949",{"2":{"65":1}}],["78",{"2":{"1578":1}}],["777",{"2":{"2575":1}}],["77",{"2":{"1578":1}}],["73",{"2":{"1578":1,"1857":1}}],["73b4",{"2":{"315":1}}],["7172",{"2":{"2353":1}}],["71",{"2":{"1440":1,"1578":1}}],["7114",{"2":{"32":1}}],["74",{"2":{"1440":1,"1578":1}}],["72mhz",{"2":{"2528":1}}],["72",{"2":{"664":1,"1087":1,"1578":1,"1724":1,"1945":1}}],["7capi8w",{"2":{"623":1}}],["7u",{"2":{"266":1,"705":1}}],["7000h",{"2":{"1287":2}}],["70",{"2":{"462":1,"556":1,"1254":1,"1578":1,"1857":1,"2453":1}}],["70keys",{"2":{"241":2}}],["70ec",{"2":{"114":1,"149":1}}],["76",{"2":{"453":1,"455":1,"1440":1,"1578":1,"1793":1,"1857":1,"2371":1}}],["76k",{"2":{"211":1}}],["7648",{"2":{"49":1}}],["750",{"2":{"2233":1,"2344":1}}],["750ms",{"2":{"1578":1}}],["75000",{"2":{"1136":1}}],["75kbps",{"2":{"511":1,"2128":1}}],["75",{"2":{"211":2,"266":1,"385":1,"1440":1,"1578":1}}],["7521",{"2":{"134":1}}],["7splus",{"2":{"143":2}}],["7skb",{"2":{"143":2,"211":1}}],["7",{"2":{"70":1,"76":1,"149":1,"172":1,"173":1,"211":1,"236":1,"313":1,"351":1,"364":1,"366":1,"455":1,"507":1,"530":2,"556":1,"633":1,"635":4,"657":1,"701":3,"707":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"727":1,"732":1,"758":1,"787":1,"819":1,"851":1,"853":1,"886":1,"887":1,"920":1,"921":1,"954":1,"988":1,"1022":1,"1056":1,"1090":1,"1091":1,"1127":2,"1130":2,"1146":1,"1198":4,"1279":2,"1405":1,"1440":1,"1530":2,"1576":1,"1577":1,"1578":1,"1594":1,"1612":1,"1614":1,"1639":3,"1793":5,"1801":2,"1821":2,"1822":3,"1834":3,"1857":1,"1860":1,"1876":1,"2038":1,"2060":1,"2148":1,"2153":1,"2155":5,"2233":1,"2235":1,"2254":1,"2353":1,"2355":8,"2365":3,"2371":5,"2372":2,"2380":3,"2386":2,"2391":4,"2394":2,"2407":1,"2474":1,"2577":3,"2596":1,"2615":2}}],["x1",{"2":{"2577":1}}],["x1b",{"2":{"2075":1}}],["x=0",{"2":{"2577":1}}],["xbps",{"2":{"2431":1,"2464":1}}],["xl",{"2":{"2353":1}}],["x7f",{"2":{"2075":1}}],["x0",{"2":{"2577":1}}],["x0a",{"2":{"2075":1}}],["x09",{"2":{"2075":1}}],["x08",{"2":{"1594":1,"2075":1}}],["xmas",{"2":{"2034":1,"2376":1}}],["xml",{"0":{"286":1}}],["x+",{"2":{"1860":1}}],["x^2",{"2":{"1857":1}}],["xor",{"2":{"1341":2}}],["xorg",{"2":{"1283":1}}],["xo87",{"2":{"211":1}}],["xfer",{"2":{"1280":1}}],["xzy",{"2":{"249":1}}],["xprintf",{"2":{"2263":3}}],["xpm",{"2":{"324":3,"325":2,"326":1,"328":1}}],["xpack",{"0":{"324":1},"2":{"325":1,"328":1,"331":1}}],["xp",{"2":{"219":1}}],["xtap",{"2":{"2169":5}}],["xtx",{"2":{"211":1}}],["xt",{"2":{"211":4}}],["xt8x",{"2":{"211":1}}],["xt60",{"2":{"211":2}}],["x2",{"2":{"211":1,"2728":4}}],["x26",{"2":{"105":8,"272":4,"450":2,"588":2,"1303":1,"1385":2,"1430":5,"1446":6,"1497":1,"1518":3,"1549":6,"1663":1,"1665":6,"1666":2,"1792":2,"1815":1,"1870":2,"1878":1,"1879":2,"1905":1,"1907":5,"1933":2,"1938":2,"1939":1,"1949":11,"1958":7,"2042":3,"2130":2,"2139":1,"2157":2,"2168":8,"2228":25,"2413":2,"2414":6,"2415":2,"2491":8,"2757":1}}],["xs60",{"2":{"197":2,"199":1}}],["xy",{"2":{"176":1}}],["xicolinguada",{"2":{"2270":1}}],["xip",{"2":{"174":1,"191":1}}],["xiudi",{"2":{"102":9,"114":1,"211":1,"253":2,"266":1}}],["xap",{"2":{"160":1,"199":1,"211":1}}],["x86",{"2":{"158":1,"2351":2,"2461":1}}],["xealousbrown",{"2":{"114":1}}],["xelus22",{"2":{"58":1}}],["xelus",{"0":{"58":1},"2":{"58":4,"197":2,"211":8,"277":1}}],["xd96",{"2":{"102":2}}],["xd87",{"2":{"102":2}}],["xd84pro",{"2":{"102":2}}],["xd84",{"2":{"102":2}}],["xd68",{"2":{"102":2}}],["xd60",{"2":{"93":1,"102":2}}],["xd004",{"2":{"102":2,"211":1,"253":2}}],["xd002",{"2":{"102":2,"114":1}}],["xd75",{"2":{"64":1,"102":2,"266":1}}],["x3c",{"2":{"55":2,"105":8,"292":2,"314":1,"317":1,"370":11,"371":13,"375":4,"377":1,"393":2,"394":2,"405":1,"416":3,"438":6,"439":4,"446":2,"465":2,"564":1,"657":2,"658":2,"661":2,"701":2,"1132":1,"1133":1,"1329":1,"1344":1,"1346":3,"1348":2,"1349":6,"1380":5,"1385":1,"1446":1,"1448":1,"1497":2,"1518":1,"1549":8,"1668":2,"1677":2,"1729":2,"1815":1,"1816":1,"1870":1,"1887":3,"1892":1,"1905":8,"1907":32,"1912":2,"1941":1,"1952":2,"1958":5,"1959":1,"2131":2,"2139":1,"2228":10,"2229":2,"2230":4,"2233":3,"2235":2,"2236":2,"2237":1,"2240":1,"2242":1,"2243":1,"2244":1,"2252":2,"2309":4,"2347":4,"2353":1,"2402":1,"2403":2,"2421":1,"2422":3,"2425":2,"2445":2,"2446":3,"2452":2,"2454":2,"2469":1,"2474":14,"2477":3,"2479":2,"2570":1,"2577":6,"2588":6,"2612":1,"2738":2}}],["x",{"0":{"108":1,"1297":1,"1545":1,"2603":1,"2605":1},"1":{"1546":1,"2604":1,"2606":1},"2":{"49":1,"70":1,"108":1,"113":2,"114":5,"211":3,"219":1,"222":1,"249":2,"266":2,"313":1,"314":1,"359":5,"473":1,"530":2,"1295":1,"1325":1,"1341":4,"1361":5,"1363":1,"1511":2,"1518":1,"1530":1,"1533":2,"1537":2,"1545":1,"1546":2,"1594":24,"1636":1,"1637":1,"1638":2,"1655":1,"1725":6,"1730":2,"1802":1,"1803":1,"1821":2,"1822":2,"1857":5,"1859":3,"1860":2,"1863":2,"1864":4,"1870":4,"1872":5,"1873":5,"1876":3,"1879":2,"1880":3,"1882":2,"1883":2,"1900":1,"1911":1,"1914":2,"1946":6,"1954":2,"2034":1,"2052":2,"2075":4,"2079":1,"2133":1,"2143":2,"2165":1,"2169":18,"2170":1,"2184":1,"2227":2,"2262":1,"2266":3,"2300":2,"2311":21,"2355":3,"2376":1,"2384":1,"2386":3,"2407":1,"2414":4,"2533":1,"2559":16,"2576":3,"2577":13,"2603":3,"2605":3,"2614":1,"2615":19,"2686":3,"2688":2,"2695":2,"2734":2,"2757":1}}],["xxxx",{"2":{"2036":1,"2566":4}}],["xxxxxxx",{"2":{"2355":1,"2395":1,"2405":2,"2614":1}}],["xxxxx",{"2":{"1559":1}}],["xxx",{"2":{"201":2,"703":4,"1336":1,"1670":1,"1671":1,"1677":2,"2614":5,"2738":2}}],["xx",{"2":{"28":1}}],["jdk",{"2":{"2495":1}}],["jre",{"2":{"2495":1}}],["jx",{"2":{"2262":1}}],["jekyll",{"2":{"2303":1}}],["jerky",{"2":{"1804":1,"1904":1}}],["jels60v2",{"2":{"222":1}}],["jellybean",{"2":{"114":1,"199":1,"222":1,"1949":3,"2708":1}}],["j8",{"2":{"1385":1}}],["jkl",{"2":{"1527":1}}],["jk",{"2":{"266":1,"1511":4,"1527":1}}],["jkeys",{"2":{"168":1,"211":2}}],["jm60",{"2":{"241":2}}],["jig",{"2":{"2151":1}}],["jian",{"2":{"236":1}}],["jis",{"0":{"1280":1},"2":{"222":1,"1268":2,"1280":1,"1355":1,"2391":9}}],["jisplit89",{"2":{"143":2}}],["jb",{"2":{"211":1}}],["jf",{"2":{"211":1,"249":1}}],["jsmith",{"2":{"2553":1}}],["jsjson",{"2":{"1857":1}}],["js",{"2":{"324":1,"1639":32,"1644":1,"1857":1,"1921":1,"2365":32}}],["jscotto",{"2":{"199":1,"217":5,"222":1}}],["json\`",{"2":{"397":1}}],["json>",{"2":{"370":1,"371":1,"2446":1}}],["json2c",{"0":{"379":1},"2":{"211":2,"379":1}}],["jsons",{"2":{"114":1}}],["jsonschema",{"2":{"76":1,"114":1,"160":1,"191":2,"222":1,"282":1,"607":1,"609":2,"2671":1}}],["json",{"0":{"120":1,"262":1,"313":1,"377":1,"545":1,"608":1,"1354":1,"2298":1,"2436":1,"2555":1,"2615":1,"2671":1},"1":{"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"1355":1,"1356":1,"1357":1,"2556":1,"2557":1,"2558":1,"2559":1,"2672":1,"2673":1,"2674":1,"2675":1,"2676":1,"2677":1,"2678":1,"2679":1,"2680":1,"2681":1,"2682":1,"2683":1,"2684":1,"2685":1,"2686":1,"2687":1,"2688":1,"2689":1,"2690":1,"2691":1,"2692":1,"2693":1,"2694":1,"2695":1,"2696":1,"2697":1,"2698":1,"2699":1,"2700":1},"2":{"70":32,"73":1,"75":1,"76":6,"109":1,"110":1,"111":1,"112":1,"114":5,"120":3,"132":2,"134":3,"141":1,"149":1,"169":3,"176":2,"184":4,"189":1,"191":8,"198":1,"199":5,"201":5,"211":22,"213":2,"222":1,"224":2,"232":1,"236":10,"238":1,"249":27,"262":2,"266":30,"277":3,"292":1,"307":2,"312":1,"313":1,"314":5,"317":4,"370":1,"374":4,"377":6,"378":2,"380":1,"384":2,"388":4,"389":3,"390":3,"391":2,"393":2,"394":2,"401":2,"405":4,"441":2,"496":3,"519":1,"521":1,"522":3,"525":1,"526":1,"527":2,"529":3,"530":2,"533":1,"541":5,"545":2,"605":1,"606":3,"607":1,"608":1,"609":1,"610":4,"611":3,"613":1,"614":1,"621":1,"1218":1,"1346":1,"1354":2,"1355":2,"1908":3,"1921":1,"2244":1,"2259":1,"2277":3,"2296":1,"2436":2,"2437":5,"2438":1,"2439":1,"2440":4,"2441":1,"2446":2,"2508":2,"2512":2,"2513":2,"2555":1,"2556":2,"2557":2,"2558":1,"2559":1,"2560":1,"2566":9,"2614":1,"2615":10,"2616":3,"2617":2,"2620":2,"2671":4,"2674":1,"2686":2,"2688":1,"2689":1,"2694":1,"2695":1,"2725":1}}],["jtagen",{"2":{"1294":1}}],["jtag",{"0":{"1294":1},"2":{"160":1,"1294":4,"2343":4,"2348":1,"2638":1}}],["jnao",{"2":{"143":2}}],["jolly",{"2":{"2353":1}}],["jonasfasler",{"2":{"2270":1}}],["jones",{"2":{"222":1}}],["john",{"2":{"1436":3,"1511":2,"2553":1}}],["joint",{"2":{"2272":3,"2273":1}}],["joints",{"2":{"2270":2,"2273":1,"2279":3}}],["join",{"2":{"485":1,"609":1,"613":1,"2272":1,"2349":1}}],["job",{"0":{"308":1,"309":1,"310":1,"314":1,"523":1,"524":1,"525":1},"2":{"305":3,"307":1,"308":2,"314":1,"315":1,"316":2,"521":2,"522":5,"523":1,"524":1,"525":1,"529":1,"1450":1,"2439":1}}],["jobs>",{"2":{"370":2,"371":2}}],["jobs",{"2":{"304":4,"370":3,"396":1,"411":1,"520":1,"526":1,"2437":1}}],["joshajohnson",{"2":{"241":2}}],["jopr",{"2":{"191":1}}],["journey",{"2":{"133":1}}],["joysticks",{"2":{"49":1,"118":2,"277":1,"1857":1}}],["joystick",{"0":{"1634":1,"1641":1,"1643":1,"1645":1,"1646":1,"1648":1,"1650":1,"1653":1,"1857":1,"2365":1},"1":{"1635":1,"1636":1,"1637":1,"1638":1,"1639":1,"1640":1,"1641":1,"1642":2,"1643":1,"1644":2,"1645":1,"1646":1,"1647":2,"1648":1,"1649":2,"1650":1,"1651":2,"1652":2,"1653":1,"1654":2},"2":{"49":7,"63":1,"114":1,"118":1,"149":1,"160":2,"183":5,"188":1,"191":4,"199":1,"231":3,"236":1,"249":3,"1634":2,"1635":2,"1636":3,"1637":7,"1638":8,"1639":32,"1641":1,"1642":2,"1645":1,"1857":21,"2365":33,"2749":1}}],["james",{"2":{"2750":1}}],["japan",{"2":{"1268":1}}],["japanese",{"2":{"176":1,"1280":1,"2712":3}}],["jacks",{"2":{"2116":1,"2118":1}}],["jackhumbert",{"2":{"624":1,"1440":1}}],["jack",{"2":{"624":1,"1265":3,"1376":3,"1381":1}}],["jacky",{"2":{"67":3,"72":1,"207":4,"211":2}}],["jan",{"2":{"463":1,"464":1,"465":2}}],["jane",{"2":{"122":2,"134":1}}],["java",{"0":{"329":1,"2495":1},"2":{"329":1,"1921":1,"2492":1,"2495":3}}],["jay60",{"2":{"211":1}}],["jaykeeb",{"2":{"207":1,"217":1}}],["ja",{"2":{"199":1}}],["jj50",{"2":{"102":2,"253":2,"266":1}}],["jj4x4",{"2":{"102":2}}],["jj40",{"2":{"102":2,"253":2,"266":1}}],["j",{"2":{"65":1,"211":1,"219":2,"249":2,"266":2,"313":1,"360":1,"370":4,"371":2,"396":2,"411":2,"530":2,"1511":1,"1527":2,"1932":1,"2169":1,"2182":4,"2184":2,"2355":3,"2384":2,"2386":3,"2407":1}}],["judged",{"2":{"2125":2}}],["judgment",{"2":{"352":1}}],["jumbo",{"0":{"1821":1}}],["jumpers",{"2":{"2353":1}}],["jumper",{"2":{"2240":2,"2242":2,"2328":1}}],["jumping",{"2":{"592":1,"1495":1}}],["jump",{"2":{"65":1,"74":1,"149":2,"176":1,"191":1,"557":1,"592":1,"593":3,"594":2,"595":2,"1403":1,"1495":1,"1497":2,"1530":2,"1816":2,"1932":1,"2508":2,"2524":2}}],["jumps",{"2":{"49":1}}],["jun",{"2":{"1265":1,"2257":1}}],["junco",{"2":{"253":2}}],["junk",{"2":{"149":1,"211":1}}],["justifiable",{"2":{"2564":1}}],["justification",{"2":{"2564":3}}],["just60",{"2":{"143":2}}],["just",{"0":{"551":1,"1243":1},"2":{"5":1,"45":1,"116":1,"173":1,"188":2,"233":1,"245":1,"331":1,"396":1,"486":1,"541":1,"546":1,"702":1,"1132":1,"1133":1,"1176":2,"1197":1,"1238":1,"1260":1,"1276":1,"1294":1,"1332":1,"1335":2,"1338":1,"1340":1,"1352":1,"1353":1,"1359":2,"1363":1,"1383":1,"1385":1,"1386":1,"1390":1,"1398":1,"1405":1,"1430":1,"1437":1,"1441":1,"1447":1,"1450":1,"1492":1,"1495":1,"1511":1,"1515":1,"1518":1,"1522":1,"1524":1,"1555":1,"1573":1,"1668":1,"1675":2,"1676":1,"1684":2,"1791":1,"1821":1,"1871":1,"1872":1,"1960":1,"2043":1,"2107":1,"2118":2,"2127":1,"2160":1,"2161":2,"2169":1,"2172":1,"2177":1,"2262":1,"2268":1,"2274":2,"2279":1,"2349":1,"2405":1,"2433":1,"2441":1,"2451":1,"2454":1,"2506":1,"2508":1,"2553":1,"2568":1,"2576":1,"2605":1,"2615":1,"2728":1,"2729":1,"2752":1,"2753":1,"2757":1}}],["jpg",{"2":{"624":1,"2566":1}}],["jps",{"2":{"36":1}}],["jp",{"0":{"35":1},"1":{"36":1},"2":{"35":1,"36":4}}],["9a",{"2":{"2091":1,"2093":1,"2095":1,"2097":1}}],["95",{"2":{"1578":1,"2425":1,"2588":2}}],["9501",{"2":{"51":1}}],["9b5c",{"2":{"314":1,"315":1}}],["91",{"2":{"1578":1}}],["910",{"2":{"211":1}}],["9126",{"2":{"199":1}}],["9174",{"2":{"48":1}}],["9171",{"2":{"32":1}}],["9",{"2":{"114":1,"152":1,"211":1,"249":1,"266":3,"313":1,"351":1,"360":2,"530":2,"633":1,"635":4,"824":1,"857":1,"891":1,"925":1,"1061":1,"1320":1,"1346":1,"1347":1,"1405":1,"1427":1,"1440":1,"1499":1,"1530":3,"1578":1,"1587":1,"1639":3,"1793":3,"1834":3,"1857":1,"2036":1,"2042":3,"2044":2,"2099":1,"2106":4,"2107":3,"2144":1,"2148":1,"2153":1,"2155":4,"2255":4,"2355":8,"2365":3,"2371":3,"2380":3,"2386":2,"2391":4,"2394":2,"2407":1,"2611":1,"2615":2,"2699":2}}],["967",{"2":{"2092":1}}],["9600",{"2":{"1201":1,"2150":1}}],["9603",{"2":{"74":1}}],["96",{"0":{"1282":1},"2":{"211":1,"286":1,"291":1,"883":1,"1563":1,"1565":1,"1566":1,"1567":1,"1578":1,"1724":1,"1857":1,"2355":1,"2364":1,"2370":2,"2388":1,"2396":2,"2508":1}}],["9657",{"2":{"114":1}}],["92",{"2":{"1578":1,"1857":1}}],["9207",{"2":{"629":1,"2344":1}}],["9203",{"2":{"629":1,"2344":1}}],["9205",{"2":{"114":1,"629":1,"2344":1}}],["9284",{"2":{"50":1}}],["97",{"2":{"1255":1,"1578":1}}],["9700",{"2":{"64":1}}],["9703",{"2":{"63":1}}],["9738",{"2":{"49":1}}],["93",{"2":{"1578":1}}],["9335",{"2":{"92":1}}],["9308",{"2":{"51":1}}],["9356",{"2":{"50":1}}],["9355",{"2":{"50":1}}],["9310",{"2":{"50":1}}],["9315",{"2":{"50":1}}],["9318",{"2":{"46":1}}],["98",{"2":{"1578":1}}],["9800",{"0":{"1856":1},"2":{"118":1,"1856":2}}],["9824",{"2":{"114":1}}],["9826",{"2":{"63":1}}],["9842",{"2":{"93":1}}],["9832",{"2":{"50":1}}],["9864",{"2":{"49":1}}],["9856",{"2":{"49":1}}],["94",{"2":{"1578":1}}],["9404",{"2":{"114":1}}],["9485",{"2":{"73":1}}],["9487",{"2":{"49":1}}],["9471",{"2":{"49":1}}],["99",{"2":{"360":1,"1578":1,"2144":1,"2699":1,"2745":1}}],["9973",{"2":{"270":1,"277":1}}],["9952",{"2":{"65":1}}],["9940",{"2":{"63":1}}],["9949",{"2":{"49":1}}],["9905",{"2":{"51":1}}],["9964",{"2":{"49":1}}],["9987",{"2":{"48":1}}],["90°",{"2":{"1329":1}}],["906",{"2":{"1091":2}}],["9054",{"2":{"50":1}}],["9055",{"2":{"50":1}}],["9023",{"2":{"50":1}}],["9020",{"2":{"49":1}}],["9001",{"2":{"1518":1}}],["900",{"2":{"955":2,"989":2,"1214":1,"1637":2}}],["900k",{"2":{"588":1}}],["9005",{"2":{"50":1}}],["900000",{"2":{"588":1}}],["9000",{"2":{"23":1,"45":1}}],["9019",{"2":{"26":1}}],["90",{"0":{"1821":1},"2":{"8":1,"1406":1,"1578":1,"1820":2,"1821":3,"1822":2,"1861":2,"1872":2,"1873":2,"1915":2,"2255":1,"2577":1}}],["zr",{"2":{"2153":3}}],["zdst",{"2":{"2147":1}}],["zle12864b",{"2":{"2136":1}}],["zone",{"2":{"2480":1}}],["zolentech",{"2":{"2136":1}}],["zoom",{"2":{"1860":9}}],["zodiark",{"2":{"222":1}}],["zxcvm",{"2":{"1355":1,"2712":3}}],["z0",{"2":{"1346":1,"1347":1}}],["zshrc",{"2":{"450":1}}],["zsh",{"2":{"448":1,"450":1}}],["zsa",{"0":{"5":1},"2":{"74":1,"241":1,"249":1,"270":1,"277":3}}],["zk3mod",{"2":{"249":1}}],["z34",{"2":{"241":2}}],["z12",{"2":{"241":2}}],["z150",{"2":{"37":2,"159":2,"160":1}}],["zadig",{"0":{"625":1},"1":{"626":1,"627":1,"628":1,"629":1},"2":{"240":3,"625":1,"626":2,"627":3,"628":1,"629":2,"1241":2}}],["zwag75",{"2":{"211":1}}],["z70ultra",{"2":{"211":1,"253":2}}],["ztboards",{"2":{"211":2}}],["zip",{"2":{"305":2}}],["zigotica",{"2":{"241":2,"249":1}}],["zicodia",{"2":{"211":1}}],["zinc",{"0":{"32":1},"2":{"32":1,"143":6}}],["zenkaku",{"2":{"2391":1}}],["zeal60",{"2":{"1497":1}}],["zed65",{"2":{"222":1,"249":1}}],["zeus",{"2":{"211":1}}],["zeroes",{"2":{"211":1,"1876":1}}],["zero",{"2":{"195":1,"222":1,"236":1,"370":1,"660":2,"685":1,"1211":1,"1290":1,"1420":1,"1451":2,"1452":1,"1878":1,"1900":1,"2155":1,"2226":1,"2491":1,"2524":1,"2585":1,"2587":2,"2592":1,"2594":1,"2702":1}}],["zcar",{"2":{"176":1}}],["zvecr",{"2":{"173":1,"182":1,"266":1}}],["z",{"0":{"2603":1,"2605":1},"1":{"2604":1,"2606":1},"2":{"152":1,"191":1,"249":1,"257":1,"258":1,"259":2,"266":1,"277":1,"313":1,"530":2,"696":1,"1341":4,"1421":1,"1426":1,"1440":1,"1451":1,"1499":1,"1506":1,"1508":1,"1527":1,"1530":1,"1571":1,"1583":1,"1636":1,"1655":1,"1676":1,"1863":1,"1929":7,"1933":5,"1938":1,"2099":2,"2148":1,"2153":1,"2169":1,"2217":1,"2317":2,"2355":3,"2386":3,"2407":1,"2603":3,"2605":5,"2611":2}}],["zygomorph",{"2":{"93":1}}],["8bpp",{"2":{"2596":2}}],["8bit",{"2":{"166":1,"1386":1,"2705":1}}],["8px",{"2":{"2577":2}}],["8mhz",{"2":{"2344":2}}],["8t",{"2":{"2111":1}}],["86",{"2":{"1578":1}}],["8x",{"2":{"1576":1,"1577":1}}],["8xv1",{"2":{"211":1}}],["81",{"2":{"1091":1,"1578":1,"1792":1}}],["8192",{"2":{"684":1,"685":1,"691":1}}],["8k4",{"2":{"850":1,"853":2,"885":1,"887":2,"919":1,"921":2}}],["8k",{"2":{"821":2,"854":2,"888":2,"922":2,"956":2,"987":2,"990":4,"1024":2,"1058":2,"1092":2}}],["87",{"2":{"1578":1}}],["87h",{"2":{"266":1}}],["8777",{"2":{"49":1}}],["8778",{"2":{"49":1}}],["80x160",{"2":{"2573":1,"2576":1}}],["80k",{"2":{"820":1}}],["8000",{"2":{"1882":1,"1883":1}}],["800",{"2":{"599":1,"1856":1,"1867":1,"1870":2}}],["800ms",{"2":{"599":1}}],["80",{"2":{"222":1,"505":2,"820":1,"1368":1,"1578":16,"1792":3,"1803":1,"2576":3,"2577":2,"2674":2}}],["8l",{"2":{"211":1}}],["8|16|32",{"2":{"166":1}}],["88",{"2":{"1578":1}}],["88200u",{"2":{"659":1}}],["8893",{"2":{"65":1}}],["8830",{"2":{"37":1}}],["8200",{"2":{"1856":1}}],["82",{"2":{"1578":1,"1792":1,"1857":1}}],["8237",{"2":{"530":1}}],["8236",{"2":{"315":1}}],["8291",{"2":{"49":1}}],["8256",{"2":{"49":1}}],["8269",{"2":{"24":1}}],["8",{"2":{"49":1,"74":1,"111":1,"114":1,"166":1,"199":1,"211":2,"292":2,"313":1,"351":1,"506":1,"530":2,"601":1,"633":1,"635":4,"641":2,"657":1,"659":2,"690":1,"694":1,"714":1,"720":1,"790":1,"821":2,"853":1,"854":2,"887":1,"888":2,"921":1,"922":2,"955":1,"956":2,"959":1,"989":1,"990":2,"993":1,"1024":2,"1027":1,"1058":2,"1092":2,"1095":1,"1126":1,"1181":1,"1227":1,"1230":1,"1329":1,"1332":1,"1336":1,"1405":1,"1440":2,"1445":2,"1451":1,"1515":3,"1530":2,"1577":1,"1578":1,"1594":3,"1612":1,"1614":1,"1636":2,"1637":1,"1639":3,"1642":1,"1677":1,"1793":3,"1794":1,"1798":1,"1801":2,"1802":2,"1803":2,"1804":3,"1807":1,"1815":2,"1817":1,"1820":2,"1821":3,"1822":2,"1834":3,"1857":1,"1860":1,"1876":2,"1880":2,"1907":1,"2035":1,"2039":2,"2042":2,"2060":1,"2091":1,"2095":1,"2110":1,"2111":1,"2139":2,"2141":1,"2142":2,"2148":1,"2150":1,"2153":1,"2155":4,"2184":1,"2196":1,"2254":1,"2343":1,"2352":1,"2353":3,"2355":8,"2365":3,"2371":3,"2372":2,"2380":3,"2384":1,"2386":2,"2391":4,"2394":2,"2401":2,"2406":1,"2407":1,"2411":1,"2495":1,"2574":1,"2575":3,"2577":3,"2585":1,"2592":1,"2598":2,"2615":2,"2623":1,"2688":1,"2694":2,"2695":1,"2705":1,"2738":1}}],["85",{"2":{"1440":1,"1578":1,"1857":1,"2040":1}}],["8591",{"2":{"114":2,"1511":1}}],["8532",{"2":{"94":1}}],["8537",{"2":{"37":1}}],["8564",{"2":{"63":1}}],["8582",{"2":{"35":1}}],["84",{"2":{"1578":1}}],["8422",{"2":{"133":1,"134":1}}],["8403",{"2":{"93":1}}],["8441",{"2":{"49":1}}],["8499",{"2":{"37":1}}],["8412",{"2":{"37":1}}],["8472",{"2":{"33":1}}],["8484",{"2":{"27":1}}],["89",{"2":{"1578":1,"1793":1,"1857":1,"2371":1}}],["8979",{"2":{"38":1}}],["8977",{"2":{"38":1}}],["8974",{"2":{"28":1}}],["8968",{"2":{"38":1}}],["8959",{"2":{"38":1}}],["8958",{"2":{"38":1}}],["8957",{"2":{"38":1}}],["8954",{"2":{"38":1}}],["8903",{"2":{"28":1}}],["83",{"2":{"251":1,"1578":1,"1792":1}}],["8327",{"2":{"50":1}}],["8321",{"2":{"21":1}}],["8318",{"2":{"49":1}}],["8348",{"2":{"22":1}}],["vqge7ok",{"2":{"2566":2}}],["vbat",{"2":{"2516":1}}],["vbus",{"2":{"1320":2,"1321":1,"2131":1,"2132":4,"2133":2,"2517":1}}],["v60",{"2":{"2294":1}}],["v=vkrppahlisy",{"2":{"2040":1}}],["vlc",{"2":{"2355":1}}],["vl",{"2":{"2353":1}}],["vl9",{"2":{"1793":1,"2371":1}}],["vl8",{"2":{"1793":1,"2371":1}}],["vl7",{"2":{"1793":1,"2371":1}}],["vl6",{"2":{"1793":1,"2371":1}}],["vl5",{"2":{"1793":1,"2371":1}}],["vl4",{"2":{"1793":1,"2371":1}}],["vl3",{"2":{"1793":1,"2371":1}}],["vl2",{"2":{"1793":1,"2371":1}}],["vl10",{"2":{"1793":1,"2371":1}}],["vl1",{"2":{"1793":1,"2371":1}}],["vl0",{"2":{"1793":1,"2371":1}}],["vlk",{"2":{"188":1,"191":1}}],["vddio",{"2":{"1146":1}}],["vdd",{"2":{"1123":1,"1126":1,"1129":1}}],["vcs",{"2":{"2431":2,"2464":2}}],["vcc",{"2":{"630":1,"734":1,"758":1,"760":1,"787":1,"819":1,"851":8,"886":8,"920":1,"954":1,"988":1,"1022":8,"1056":8,"1090":8,"1225":2,"1573":1,"1717":1,"2061":1,"2118":1,"2119":1,"2120":1,"2240":1,"2242":1,"2276":1,"2330":2,"2332":2,"2334":2,"2336":2,"2338":2,"2340":1,"2529":1,"2530":2}}],["vcl65",{"2":{"211":1}}],["vcl",{"2":{"211":1}}],["vk",{"2":{"188":1,"191":1,"2063":1}}],["vuhopkep",{"2":{"149":1}}],["vusb",{"2":{"50":1,"134":1,"149":1,"249":1,"266":1,"505":1,"1242":1,"2743":1}}],["vn66",{"2":{"143":2}}],["vpath",{"2":{"114":2,"191":1,"665":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1527":1}}],["vss",{"2":{"1236":1}}],["vscode",{"2":{"199":1,"454":1,"2430":1,"2508":1,"2513":3}}],["vs",{"0":{"568":2,"2504":1,"2507":1,"2511":1,"2512":1},"1":{"2505":1,"2506":1,"2507":1,"2508":2,"2509":1,"2510":1,"2512":1},"2":{"114":1,"199":1,"457":1,"1326":5,"2114":1,"2485":1,"2503":3,"2506":1,"2507":1,"2509":1,"2510":4,"2512":4,"2513":5,"2550":1,"2723":1}}],["vowel",{"2":{"2153":4}}],["vol",{"2":{"1665":4,"2355":2,"2393":2}}],["vold",{"2":{"209":1,"530":2,"1559":1,"1560":1,"1665":1,"1932":1,"2355":1,"2393":1}}],["volu",{"2":{"209":1,"530":2,"1559":1,"1560":1,"1665":1,"1932":1,"2355":1,"2393":1}}],["volume",{"0":{"1401":1},"2":{"191":1,"630":1,"659":1,"1401":2,"1560":2,"1656":1,"1665":3,"1932":1,"2355":7,"2392":4,"2393":2,"2702":1}}],["voltages",{"2":{"630":1}}],["voltage",{"2":{"199":1,"638":1,"684":1,"1225":2,"1325":1,"1576":1,"1577":1,"1589":1,"1634":2,"2131":1,"2132":1,"2348":1}}],["volatile",{"2":{"114":1,"2149":1}}],["volcano660",{"2":{"102":2,"114":1,"211":1}}],["voilà",{"2":{"1409":1}}],["voice",{"2":{"231":1,"1402":3,"1408":2,"1577":1,"2357":2}}],["voices",{"0":{"1402":1},"2":{"112":1,"502":2,"1402":4,"1408":2,"2357":2,"2676":2}}],["void",{"0":{"588":2,"646":2,"647":1,"649":1,"651":2,"652":1,"673":1,"675":1,"677":1,"679":1,"707":2,"738":2,"739":1,"741":1,"743":1,"745":1,"747":1,"749":1,"751":1,"753":2,"754":2,"764":1,"766":1,"768":1,"770":1,"772":1,"774":1,"776":1,"778":1,"780":1,"782":1,"794":1,"796":1,"798":1,"800":1,"802":1,"804":1,"806":1,"808":1,"810":1,"812":1,"814":1,"828":1,"830":1,"832":1,"834":1,"836":1,"838":1,"840":1,"842":1,"844":1,"846":1,"861":1,"863":1,"865":1,"867":1,"869":1,"871":1,"873":1,"875":1,"877":1,"879":1,"881":1,"895":1,"897":1,"899":1,"901":1,"903":1,"905":1,"907":1,"909":1,"911":1,"913":1,"915":1,"929":1,"931":1,"933":1,"935":1,"937":1,"939":1,"941":1,"943":1,"945":1,"947":1,"949":1,"963":1,"965":1,"967":1,"969":1,"971":1,"973":1,"975":1,"977":1,"979":1,"981":1,"983":1,"997":1,"999":1,"1001":1,"1003":1,"1005":1,"1007":1,"1009":1,"1011":1,"1013":1,"1015":1,"1017":1,"1031":1,"1033":1,"1035":1,"1037":1,"1039":1,"1041":1,"1043":1,"1045":1,"1047":1,"1049":1,"1051":1,"1065":1,"1067":1,"1069":1,"1071":1,"1073":1,"1075":1,"1077":1,"1079":1,"1081":1,"1083":1,"1085":1,"1099":1,"1101":1,"1103":1,"1105":1,"1107":1,"1109":1,"1111":1,"1113":1,"1115":1,"1117":1,"1119":1,"1152":1,"1154":1,"1156":1,"1158":1,"1160":1,"1162":1,"1164":1,"1166":1,"1168":1,"1170":1,"1172":1,"1179":2,"1186":1,"1194":2,"1200":1,"1202":1,"1204":1,"1206":1,"1208":1,"1210":1,"1232":1,"1473":2,"1474":2,"1475":2,"1476":2,"1477":2,"1478":2,"1479":1,"1481":1,"1483":1,"1485":2,"1486":2,"1487":2,"1488":1,"1538":2,"1539":2,"1540":2,"1541":2,"1542":2,"1543":2,"1544":2,"1545":1,"1596":1,"1598":2,"1599":2,"1600":1,"1602":2,"1603":1,"1605":1,"1607":1,"1609":1,"1611":1,"1613":1,"1615":1,"1617":1,"1622":1,"1624":1,"1626":1,"1628":1,"1645":2,"1646":1,"1648":1,"1653":1,"1689":2,"1690":2,"1691":2,"1692":2,"1693":1,"1697":1,"1698":1,"1735":2,"1736":2,"1737":2,"1738":2,"1739":2,"1740":2,"1741":1,"1743":1,"1745":1,"1747":1,"1749":1,"1751":2,"1752":2,"1753":2,"1754":2,"1755":1,"1757":2,"1758":2,"1759":2,"1760":2,"1761":1,"1763":2,"1764":2,"1765":2,"1766":2,"1767":1,"1769":1,"1771":1,"1773":2,"1774":1,"1776":1,"1778":1,"1836":2,"1837":1,"1839":1,"1841":1,"1843":1,"1848":2,"1849":1,"1851":1,"1925":1,"1927":1,"1962":2,"1963":2,"1964":2,"1965":2,"1966":2,"1967":2,"1968":1,"1970":1,"1972":1,"1974":1,"1976":1,"1978":2,"1979":2,"1980":2,"1981":2,"1982":1,"1984":2,"1985":2,"1986":2,"1987":2,"1988":1,"1990":2,"1991":2,"1992":2,"1993":2,"1994":1,"1996":2,"1997":2,"1998":2,"1999":2,"2000":1,"2002":2,"2003":2,"2004":2,"2005":2,"2006":1,"2008":1,"2010":1,"2012":1,"2014":1,"2016":1,"2018":2,"2019":1,"2021":1,"2023":1,"2081":1,"2083":1,"2085":1,"2087":1,"2089":1,"2091":1,"2093":1,"2095":1,"2097":1,"2099":2,"2186":1,"2188":1,"2190":2,"2191":2,"2192":1,"2194":1,"2196":2,"2197":2,"2198":2,"2199":1,"2201":1,"2209":1,"2211":2,"2212":1,"2214":1,"2219":1,"2221":2,"2222":2,"2223":2},"1":{"648":1,"650":1,"653":1,"674":1,"676":1,"678":1,"680":1,"740":1,"742":1,"744":1,"746":1,"748":1,"750":1,"752":1,"765":1,"767":1,"769":1,"771":1,"773":1,"775":1,"777":1,"779":1,"781":1,"783":1,"795":1,"797":1,"799":1,"801":1,"803":1,"805":1,"807":1,"809":1,"811":1,"813":1,"815":1,"829":1,"831":1,"833":1,"835":1,"837":1,"839":1,"841":1,"843":1,"845":1,"847":1,"862":1,"864":1,"866":1,"868":1,"870":1,"872":1,"874":1,"876":1,"878":1,"880":1,"882":1,"896":1,"898":1,"900":1,"902":1,"904":1,"906":1,"908":1,"910":1,"912":1,"914":1,"916":1,"930":1,"932":1,"934":1,"936":1,"938":1,"940":1,"942":1,"944":1,"946":1,"948":1,"950":1,"964":1,"966":1,"968":1,"970":1,"972":1,"974":1,"976":1,"978":1,"980":1,"982":1,"984":1,"998":1,"1000":1,"1002":1,"1004":1,"1006":1,"1008":1,"1010":1,"1012":1,"1014":1,"1016":1,"1018":1,"1032":1,"1034":1,"1036":1,"1038":1,"1040":1,"1042":1,"1044":1,"1046":1,"1048":1,"1050":1,"1052":1,"1066":1,"1068":1,"1070":1,"1072":1,"1074":1,"1076":1,"1078":1,"1080":1,"1082":1,"1084":1,"1086":1,"1100":1,"1102":1,"1104":1,"1106":1,"1108":1,"1110":1,"1112":1,"1114":1,"1116":1,"1118":1,"1120":1,"1153":1,"1155":1,"1157":1,"1159":1,"1161":1,"1163":1,"1165":1,"1167":1,"1169":1,"1171":1,"1173":1,"1187":1,"1201":1,"1203":1,"1205":1,"1207":1,"1209":1,"1211":1,"1233":1,"1480":1,"1482":1,"1484":1,"1489":1,"1546":1,"1597":1,"1601":1,"1604":1,"1606":1,"1608":1,"1610":1,"1612":1,"1614":1,"1616":1,"1618":1,"1623":1,"1625":1,"1627":1,"1629":1,"1647":1,"1649":1,"1654":1,"1742":1,"1744":1,"1746":1,"1748":1,"1750":1,"1756":1,"1762":1,"1768":1,"1770":1,"1772":1,"1775":1,"1777":1,"1779":1,"1838":1,"1840":1,"1842":1,"1844":1,"1850":1,"1852":1,"1926":1,"1928":1,"1969":1,"1971":1,"1973":1,"1975":1,"1977":1,"1983":1,"1989":1,"1995":1,"2001":1,"2007":1,"2009":1,"2011":1,"2015":1,"2017":1,"2020":1,"2022":1,"2024":1,"2082":1,"2084":1,"2086":1,"2088":1,"2090":1,"2092":1,"2094":1,"2096":1,"2098":1,"2187":1,"2189":1,"2193":1,"2195":1,"2200":1,"2202":1,"2210":1,"2213":1,"2215":1,"2220":1,"2224":2},"2":{"31":1,"34":1,"46":2,"90":2,"105":3,"125":3,"185":3,"196":1,"222":1,"249":3,"292":1,"453":1,"565":1,"566":13,"576":1,"577":4,"579":4,"580":5,"582":1,"583":4,"586":4,"587":4,"588":14,"590":3,"591":8,"597":1,"698":1,"707":1,"1245":1,"1332":2,"1333":8,"1360":1,"1375":2,"1393":1,"1400":2,"1430":2,"1464":4,"1497":1,"1511":1,"1593":1,"1594":2,"1668":2,"1670":2,"1680":3,"1686":4,"1729":1,"1733":1,"1813":1,"1814":3,"1815":2,"1816":1,"1822":35,"1825":1,"1870":2,"1871":3,"1874":5,"1883":1,"1887":2,"1894":16,"1895":5,"1901":1,"1910":13,"1943":2,"1952":1,"1957":1,"1960":1,"2042":2,"2044":3,"2113":31,"2130":10,"2137":2,"2138":2,"2139":2,"2140":2,"2143":33,"2166":1,"2167":6,"2168":5,"2169":8,"2170":8,"2171":8,"2227":1,"2301":4,"2431":1,"2464":1,"2491":2,"2524":1,"2525":1,"2526":1,"2576":4,"2577":22,"2581":2,"2582":1,"2749":12,"2757":1}}],["v1",{"0":{"307":1,"308":1,"309":1,"310":1},"2":{"86":1,"102":4,"114":1,"143":7,"149":2,"168":2,"197":10,"199":1,"207":1,"222":1,"226":1,"236":2,"253":2,"277":2,"314":2,"315":1,"317":4,"629":1,"1319":3,"2513":1,"2587":7,"2588":7,"2589":3,"2593":5,"2594":7,"2595":3,"2596":7,"2597":3,"2598":6,"2599":3}}],["v19",{"2":{"49":1}}],["v2j37s7",{"2":{"2353":1}}],["v2",{"2":{"56":2,"86":2,"114":1,"122":1,"143":2,"149":2,"168":2,"191":1,"197":4,"199":2,"207":2,"211":2,"217":4,"222":2,"236":2,"249":3,"277":1,"327":1,"1319":2,"2350":1}}],["v2017",{"2":{"181":2}}],["v20",{"2":{"49":1}}],["v32a",{"2":{"197":2}}],["v3x",{"2":{"191":1}}],["v3",{"0":{"56":1},"2":{"56":2,"114":1,"149":2,"191":1,"211":1,"277":1,"2437":3}}],["vtor",{"2":{"50":1}}],["vai",{"2":{"530":2,"1948":1,"2377":1}}],["vad",{"2":{"530":2,"1948":1,"2377":1}}],["vault35",{"2":{"249":1}}],["vast",{"2":{"166":1,"1655":1}}],["vagrant",{"2":{"113":1,"114":2,"211":1}}],["vaguettelite",{"2":{"86":2}}],["vanilla",{"2":{"2565":1}}],["vaneelaex",{"2":{"86":2}}],["vaneela",{"2":{"86":2}}],["vanana",{"2":{"86":4}}],["varying",{"2":{"1949":3}}],["vary",{"2":{"1325":1,"2351":1,"2727":1}}],["var",{"2":{"460":3,"1250":2}}],["var>=",{"2":{"370":1,"371":2}}],["varaible",{"2":{"176":1}}],["variety",{"2":{"1857":1,"2544":1}}],["varies",{"2":{"1574":1,"1856":1,"1863":1,"1870":2,"1872":1,"2745":1}}],["variants",{"2":{"145":1,"211":1,"1215":1,"1216":1,"1217":1,"2182":1,"2233":1,"2344":2,"2659":1}}],["variant",{"2":{"114":1,"157":1,"222":3,"331":1,"1825":2,"1826":1,"1906":1,"2233":1,"2491":1,"2576":1}}],["variations",{"2":{"236":1,"243":1,"1217":1}}],["variation",{"0":{"55":1},"2":{"176":1}}],["variable",{"2":{"50":1,"65":1,"133":1,"134":3,"236":1,"367":1,"396":1,"411":1,"430":1,"437":1,"460":1,"473":1,"500":1,"610":2,"1303":6,"1326":1,"1347":2,"1377":1,"1434":2,"1452":1,"1557":1,"1880":1,"1894":1,"1895":1,"1921":2,"2042":1,"2147":1,"2162":1,"2252":1,"2262":1,"2263":2,"2279":1,"2358":2,"2468":1,"2513":2,"2525":1,"2589":1,"2590":1,"2591":1,"2595":1,"2597":1,"2599":1,"2728":1,"2757":11}}],["variables",{"0":{"2757":1},"2":{"49":2,"211":2,"496":1,"501":1,"611":1,"1303":1,"1332":1,"1341":1,"1351":1,"1415":1,"1880":1,"2164":1,"2263":2,"2524":1,"2525":1,"2530":1,"2757":5}}],["various",{"2":{"50":2,"114":1,"149":3,"160":1,"191":2,"211":1,"277":2,"331":1,"342":1,"470":1,"496":2,"565":1,"1244":1,"1246":1,"1325":1,"1326":1,"1335":1,"1410":1,"1415":1,"1578":1,"1671":1,"2038":1,"2067":1,"2225":1,"2628":1,"2647":1,"2661":1,"2666":1,"2749":1}}],["vars",{"2":{"49":2,"2262":1}}],["valu",{"2":{"1559":1,"2034":1,"2376":1}}],["valued",{"2":{"1332":1}}],["valueerror",{"2":{"465":2}}],["value>",{"2":{"370":1,"371":2,"416":1,"438":2}}],["values",{"0":{"417":1,"418":1,"423":1,"437":1,"438":1,"439":1,"474":1,"1430":1},"1":{"419":1,"420":1,"421":1,"422":1},"2":{"65":1,"70":1,"83":1,"182":1,"186":2,"198":2,"199":1,"231":1,"236":1,"249":1,"374":1,"417":1,"418":1,"432":2,"438":1,"439":1,"474":2,"502":1,"606":1,"609":1,"612":1,"613":1,"614":1,"630":1,"651":1,"659":1,"669":1,"679":1,"684":1,"685":1,"686":1,"703":1,"753":1,"754":1,"780":1,"782":1,"790":1,"812":1,"814":1,"820":1,"821":4,"824":1,"844":1,"846":1,"853":1,"854":4,"857":1,"879":1,"881":1,"887":1,"888":4,"891":1,"913":1,"915":1,"921":1,"922":4,"925":1,"947":1,"949":1,"955":1,"956":4,"959":1,"981":1,"983":1,"989":1,"990":4,"993":1,"1015":1,"1017":1,"1024":4,"1027":1,"1049":1,"1051":1,"1058":4,"1061":1,"1083":1,"1085":1,"1091":1,"1092":4,"1095":1,"1117":1,"1119":1,"1126":1,"1127":1,"1130":1,"1148":1,"1170":1,"1172":1,"1201":1,"1218":1,"1245":1,"1326":1,"1331":1,"1332":4,"1401":1,"1406":2,"1430":2,"1469":1,"1471":1,"1496":1,"1637":4,"1642":1,"1657":1,"1677":2,"1725":2,"1791":2,"1794":2,"1807":2,"1817":1,"1820":2,"1821":1,"1822":1,"1825":1,"1859":1,"1863":2,"1864":1,"1867":1,"1870":2,"1876":1,"1880":7,"1946":2,"1949":1,"2038":2,"2064":1,"2128":1,"2143":1,"2152":1,"2155":2,"2172":1,"2174":1,"2226":3,"2263":1,"2311":1,"2342":1,"2348":1,"2524":1,"2535":1,"2536":1,"2537":1,"2538":1,"2541":1,"2553":1,"2556":2,"2566":3,"2574":1,"2577":1,"2585":1,"2587":1,"2588":1,"2592":1,"2596":2,"2612":1,"2620":1,"2738":2}}],["value",{"0":{"612":1,"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"745":2,"747":2,"751":1,"772":2,"774":2,"778":1,"804":2,"806":2,"810":1,"836":2,"838":2,"842":1,"871":2,"873":2,"877":1,"905":2,"907":2,"911":1,"939":2,"941":2,"945":1,"973":2,"975":2,"979":1,"1007":2,"1009":2,"1013":1,"1041":2,"1043":2,"1047":1,"1075":2,"1077":2,"1081":1,"1109":2,"1111":2,"1115":1,"1162":2,"1164":2,"1168":1,"1182":1,"1185":1,"1187":1,"1190":1,"1193":1,"1205":1,"1211":1,"1416":1,"1482":1,"1484":1,"1489":1,"1616":1,"1621":1,"1652":1,"1653":1,"1696":1,"1701":1,"1704":1,"1707":1,"1710":1,"1713":1,"1742":1,"1743":1,"1745":1,"1756":1,"1762":1,"1772":1,"1775":1,"1777":1,"1779":1,"1782":1,"1785":1,"1847":1,"1850":1,"1969":1,"1983":1,"1989":1,"1995":1,"2001":1,"2011":1,"2017":1,"2020":1,"2022":1,"2024":1,"2027":1,"2030":1,"2187":1,"2205":1,"2208":1,"2213":1,"2215":1,"2218":1,"2220":1},"1":{"746":2,"748":2,"752":1,"773":2,"775":2,"779":1,"805":2,"807":2,"811":1,"837":2,"839":2,"843":1,"872":2,"874":2,"878":1,"906":2,"908":2,"912":1,"940":2,"942":2,"946":1,"974":2,"976":2,"980":1,"1008":2,"1010":2,"1014":1,"1042":2,"1044":2,"1048":1,"1076":2,"1078":2,"1082":1,"1110":2,"1112":2,"1116":1,"1163":2,"1165":2,"1169":1,"1654":1,"1744":1,"1746":1},"2":{"25":1,"45":2,"49":1,"63":1,"70":13,"90":1,"176":1,"191":1,"195":1,"222":1,"236":1,"316":1,"350":5,"374":7,"413":1,"415":2,"418":1,"423":1,"425":1,"426":1,"430":3,"437":1,"453":1,"502":1,"505":2,"506":3,"510":1,"529":3,"530":1,"588":1,"597":1,"598":4,"601":2,"608":1,"609":1,"610":5,"612":2,"613":1,"628":1,"638":4,"639":4,"641":1,"648":3,"650":3,"659":7,"660":2,"666":2,"676":3,"678":3,"683":2,"684":2,"685":1,"686":1,"689":1,"690":1,"694":1,"739":1,"740":1,"742":3,"744":3,"746":2,"748":2,"752":1,"758":1,"766":1,"767":1,"769":3,"771":3,"773":2,"775":2,"779":1,"787":1,"796":1,"797":1,"801":3,"803":3,"805":2,"807":2,"811":1,"818":3,"819":1,"822":1,"830":1,"831":1,"833":3,"835":3,"837":2,"839":2,"841":3,"843":2,"850":3,"851":1,"852":1,"855":1,"863":1,"864":1,"868":3,"870":3,"872":2,"874":2,"878":1,"885":3,"886":1,"889":1,"897":1,"898":1,"902":3,"904":3,"906":2,"908":2,"912":1,"919":3,"920":1,"923":1,"931":1,"932":1,"936":3,"938":3,"940":2,"942":2,"946":1,"953":4,"954":1,"957":1,"965":1,"966":1,"970":3,"972":3,"974":2,"976":2,"980":1,"987":4,"988":1,"991":1,"999":1,"1000":1,"1004":3,"1006":3,"1008":2,"1010":2,"1012":3,"1014":2,"1021":4,"1022":1,"1023":1,"1025":1,"1033":1,"1034":1,"1038":3,"1040":3,"1042":2,"1044":2,"1046":3,"1048":2,"1055":4,"1056":1,"1057":1,"1059":1,"1067":1,"1068":1,"1072":3,"1074":3,"1076":2,"1078":2,"1080":3,"1082":2,"1089":4,"1090":1,"1093":1,"1101":1,"1102":1,"1106":3,"1108":3,"1110":2,"1112":2,"1114":3,"1116":2,"1137":1,"1146":1,"1154":1,"1155":1,"1159":3,"1161":3,"1163":2,"1165":2,"1169":1,"1198":1,"1221":1,"1325":1,"1332":4,"1333":2,"1365":1,"1393":1,"1406":1,"1411":1,"1416":6,"1430":5,"1431":5,"1434":1,"1435":3,"1436":1,"1464":1,"1533":3,"1546":2,"1554":1,"1559":1,"1573":1,"1634":1,"1637":3,"1644":4,"1650":1,"1653":1,"1654":3,"1657":1,"1658":1,"1670":1,"1671":1,"1675":1,"1677":1,"1682":1,"1725":1,"1726":1,"1728":8,"1729":2,"1730":1,"1733":5,"1744":1,"1746":1,"1762":1,"1794":1,"1803":1,"1804":1,"1807":3,"1816":1,"1820":1,"1822":2,"1857":1,"1864":4,"1872":1,"1883":2,"1894":1,"1895":1,"1933":1,"1946":1,"1947":1,"1948":4,"1949":23,"1950":1,"1954":3,"1971":3,"1973":3,"1989":1,"1995":1,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2001":1,"2012":1,"2013":1,"2014":1,"2015":1,"2016":1,"2033":2,"2034":6,"2035":1,"2051":9,"2054":10,"2055":2,"2056":1,"2091":1,"2092":1,"2093":1,"2094":1,"2095":1,"2096":1,"2098":1,"2113":3,"2125":1,"2128":1,"2129":1,"2130":1,"2140":1,"2143":1,"2149":1,"2156":1,"2169":2,"2170":1,"2172":1,"2208":1,"2226":4,"2227":1,"2229":1,"2299":1,"2300":1,"2306":1,"2311":3,"2358":1,"2376":6,"2377":4,"2524":1,"2541":1,"2566":1,"2577":3,"2587":1,"2594":1,"2597":1,"2606":1,"2671":1,"2677":1,"2688":1,"2694":3,"2695":3,"2697":1,"2719":1,"2728":9,"2737":2,"2738":1,"2739":1}}],["vald",{"2":{"1559":1,"2034":1,"2376":1}}],["valhalla",{"2":{"211":1}}],["valor",{"0":{"58":1},"2":{"58":3,"114":1,"211":1}}],["val",{"0":{"1757":2,"1758":1,"1759":1,"1760":1,"1761":1,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2054":1},"1":{"1762":1,"2001":1},"2":{"49":1,"160":1,"183":4,"191":1,"222":2,"506":1,"1333":3,"1457":1,"1638":8,"1728":3,"1730":1,"1949":9,"1954":1,"1959":2,"2035":4,"2046":2,"2054":4,"2057":2,"2299":4,"2577":11,"2688":2,"2694":1,"2695":2,"2708":3}}],["validating",{"2":{"2453":1}}],["validation",{"2":{"114":1,"199":2,"222":2,"236":1,"266":1,"273":1,"307":1,"1314":1}}],["validated",{"2":{"663":1,"2401":1}}],["validate",{"2":{"76":1,"199":2,"211":1,"349":1}}],["valid",{"2":{"49":1,"149":1,"199":2,"241":1,"253":1,"266":1,"270":1,"374":1,"397":1,"598":1,"689":1,"820":1,"821":2,"853":1,"854":2,"887":1,"888":2,"921":1,"922":2,"955":1,"956":2,"989":1,"990":2,"1024":2,"1058":2,"1091":1,"1092":2,"1218":1,"1243":1,"1312":1,"1445":1,"1460":1,"1622":1,"1860":1,"2038":2,"2149":1,"2294":1,"2316":1,"2354":1,"2402":1,"2403":1,"2564":4,"2566":4,"2575":2,"2596":1}}],["virster",{"2":{"2150":1}}],["virtually",{"2":{"2550":1}}],["virtual",{"0":{"1638":1},"2":{"1284":1,"1533":1,"1634":1,"1637":3,"1638":3,"1644":1,"2146":2,"2150":1,"2233":1,"2573":1}}],["virtualenv",{"2":{"367":1}}],["virtser",{"2":{"516":1}}],["vibrate",{"2":{"1577":1,"1579":1}}],["vibrator",{"2":{"1577":1}}],["vibrations",{"2":{"1576":1}}],["vibration",{"2":{"1576":1}}],["vim",{"2":{"1499":1,"1678":1,"1932":2}}],["violin",{"2":{"1398":2,"1399":3,"1403":1}}],["victim",{"2":{"562":1}}],["vice",{"2":{"194":1,"1335":1,"1553":1,"1933":2}}],["viewport",{"2":{"2576":2,"2577":7}}],["viewpoint",{"2":{"2418":1}}],["viewing",{"2":{"2513":1}}],["viewed",{"2":{"2367":1}}],["views",{"2":{"306":1,"2122":1}}],["view",{"0":{"2313":1},"2":{"273":1,"291":1,"520":1,"521":1,"627":1,"628":1,"2313":1,"2408":1,"2421":1,"2469":1,"2498":1,"2508":1,"2513":2,"2639":1}}],["viendi",{"2":{"211":1}}],["viper",{"2":{"211":1}}],["viktus",{"2":{"134":1,"159":3,"160":1,"211":3}}],["visit",{"2":{"371":1,"2262":1,"2436":1,"2439":1,"2513":1}}],["visible",{"2":{"198":1,"317":1,"1219":1,"1591":2}}],["vision",{"2":{"114":1,"561":1}}],["visualize",{"2":{"2407":1}}],["visualizer",{"2":{"133":1,"134":1}}],["visual",{"0":{"2503":1,"2513":1},"2":{"132":1,"2503":1,"2506":1,"2513":1,"2616":2}}],["vitoni",{"2":{"149":1}}],["vitamins",{"2":{"114":1}}],["viterbi",{"2":{"45":1}}],["vintage",{"2":{"1276":1}}],["vinta",{"2":{"102":2,"217":2}}],["videos",{"2":{"2750":2}}],["video",{"2":{"2036":1,"2041":1,"2281":1,"2427":1,"2750":1,"2753":1}}],["videogames",{"2":{"1339":1}}],["vid>",{"2":{"375":1}}],["vid",{"0":{"1242":1},"1":{"1243":1},"2":{"70":1,"111":1,"169":1,"184":1,"249":2,"266":1,"375":1,"502":1,"628":1,"629":1,"1242":1,"1278":1,"2299":1,"2556":3,"2566":1,"2699":1}}],["vial",{"2":{"2566":2}}],["via2json",{"0":{"388":1},"2":{"388":2}}],["via",{"0":{"35":1,"265":2,"275":2},"1":{"36":1},"2":{"35":1,"92":1,"114":7,"134":6,"149":2,"154":1,"160":1,"176":6,"191":2,"194":1,"199":5,"211":7,"218":1,"222":5,"234":1,"249":3,"265":8,"266":4,"268":4,"275":5,"277":8,"388":3,"606":1,"621":1,"661":1,"683":1,"684":1,"685":1,"694":1,"701":1,"1124":1,"1127":1,"1130":1,"1270":3,"1317":2,"1326":1,"1331":1,"1359":1,"1492":2,"1496":1,"1916":1,"2064":1,"2152":1,"2235":1,"2238":1,"2240":2,"2241":2,"2242":2,"2245":1,"2247":1,"2249":1,"2263":1,"2277":1,"2311":1,"2549":1,"2565":3,"2566":7,"2749":1}}],["vect",{"2":{"1905":2,"1907":2}}],["vector",{"2":{"191":1,"211":1}}],["velu",{"2":{"1793":1,"2371":1}}],["veld",{"2":{"1793":1,"2371":1}}],["velocikey",{"0":{"2062":1},"1":{"2063":1,"2064":1},"2":{"236":1,"2062":1,"2063":5,"2064":2,"2749":1}}],["velocity",{"2":{"63":1,"1787":1,"1793":26,"1794":1,"1802":1,"2371":26}}],["vega",{"2":{"211":1}}],["ventilation",{"2":{"2266":1}}],["venus",{"2":{"114":1}}],["venv",{"2":{"114":1}}],["vendors",{"2":{"2566":4}}],["vendor",{"0":{"682":1},"1":{"683":1},"2":{"37":1,"43":1,"70":1,"86":1,"149":13,"160":2,"169":1,"184":1,"191":1,"199":1,"211":1,"236":1,"266":1,"277":1,"502":1,"629":1,"681":1,"1127":2,"1130":2,"1218":1,"1221":1,"1242":1,"1254":1,"1317":2,"1908":1,"1921":2,"1923":2,"2259":1,"2344":1,"2565":3,"2566":4,"2683":2,"2692":1,"2697":1,"2699":1,"2700":2}}],["ve",{"2":{"83":1,"89":1,"105":2,"112":1,"158":1,"172":1,"243":1,"273":1,"314":1,"462":1,"550":1,"606":1,"684":1,"703":1,"1177":1,"1198":1,"1332":1,"1337":1,"1344":1,"1359":1,"1361":4,"1385":1,"1386":1,"1912":1,"2255":1,"2275":1,"2279":1,"2292":2,"2419":1,"2447":1,"2449":1,"2450":1,"2458":1,"2472":1,"2476":1,"2480":1,"2510":1,"2513":1,"2568":1,"2577":2,"2601":1,"2616":1,"2703":1,"2709":1}}],["vertically",{"0":{"2620":1},"2":{"1878":1,"2273":1,"2617":1,"2620":2}}],["vertical",{"2":{"1807":1,"1857":1,"1865":1,"1866":1,"1876":1,"2577":1,"2620":1,"2686":1,"2688":1,"2695":1}}],["vertex",{"2":{"211":1}}],["verbose=true",{"2":{"2262":1}}],["verbose",{"2":{"540":1,"2262":5,"2575":2}}],["verbosity",{"2":{"211":1}}],["verification",{"2":{"2335":1,"2353":1}}],["verified",{"2":{"484":1,"1811":2,"2347":1,"2353":1,"2567":1}}],["verifying",{"2":{"2347":2}}],["verify",{"2":{"199":1,"628":1,"2479":1,"2502":1,"2566":1,"2757":2}}],["ver20",{"2":{"358":5}}],["vero",{"2":{"211":1}}],["versed",{"2":{"552":1}}],["versatile",{"2":{"2578":1}}],["versa",{"2":{"194":1,"1335":1,"1553":1,"1933":2}}],["versioned",{"2":{"182":1}}],["versioning",{"2":{"182":1,"2636":1}}],["version=yes",{"2":{"65":1}}],["versions",{"2":{"22":1,"35":1,"49":2,"182":2,"189":1,"191":1,"317":3,"357":1,"537":1,"1239":1,"1300":1,"1319":1,"1332":1,"1383":1,"1555":1,"1558":1,"1633":1,"2036":1,"2182":1,"2183":1,"2254":1,"2262":1,"2328":1,"2342":1}}],["version",{"0":{"1904":1,"1905":1,"1906":1,"1907":1,"1908":1},"1":{"1905":1,"1906":1,"1907":1,"1908":1},"2":{"10":1,"36":2,"65":1,"69":1,"70":1,"114":2,"134":1,"149":3,"160":1,"169":1,"173":1,"176":1,"182":1,"184":1,"191":1,"199":2,"211":1,"236":1,"317":1,"324":3,"330":1,"335":1,"340":1,"347":3,"351":20,"357":1,"358":1,"360":2,"502":1,"529":1,"537":1,"1143":1,"1380":2,"1383":4,"1385":1,"1411":1,"1412":1,"1431":1,"1498":1,"1529":1,"1530":2,"1904":1,"1907":1,"2244":1,"2277":2,"2306":2,"2310":1,"2353":1,"2404":1,"2474":1,"2497":1,"2513":1,"2524":1,"2525":1,"2526":1,"2556":1,"2566":1,"2570":2,"2587":1,"2594":1,"2699":2,"2739":1}}],["very",{"2":{"182":1,"307":1,"325":1,"483":1,"557":1,"569":1,"574":1,"575":1,"581":1,"621":1,"659":2,"1223":1,"1242":1,"1245":1,"1331":1,"1375":1,"1405":1,"1416":1,"1576":1,"1577":1,"1676":1,"1684":2,"1806":1,"1816":1,"1825":1,"1871":1,"1879":1,"2118":1,"2134":1,"2140":1,"2250":1,"2270":2,"2273":2,"2304":1,"2313":1,"2398":1,"2418":1,"2431":1,"2450":1,"2464":1,"2497":1,"2523":1,"2655":1,"2664":1,"2714":1,"2742":1,"2753":1}}],["ver",{"2":{"70":2,"111":1,"169":1,"184":1,"191":1,"502":1}}],["ver19",{"2":{"10":1}}],["v",{"0":{"21":1,"235":1,"494":1,"1743":1,"1745":1,"2012":1,"2014":1},"1":{"495":1,"1744":1,"1746":1,"2015":1},"2":{"21":2,"49":2,"50":3,"130":2,"134":2,"143":2,"153":1,"176":1,"236":4,"249":1,"266":1,"292":1,"313":1,"324":1,"433":1,"487":1,"530":2,"734":1,"737":1,"760":1,"763":1,"790":1,"793":1,"824":1,"827":1,"857":1,"860":1,"891":1,"894":1,"925":1,"928":1,"959":1,"962":1,"993":1,"996":1,"1027":1,"1030":1,"1061":1,"1064":1,"1095":1,"1098":1,"1148":1,"1151":1,"1530":1,"1576":1,"1577":3,"1733":1,"1744":1,"1746":1,"1788":1,"1824":1,"1876":2,"1878":2,"1879":1,"1880":9,"1882":1,"1883":1,"1900":1,"1911":1,"1912":1,"1914":1,"1959":2,"2013":1,"2015":1,"2051":8,"2054":4,"2146":1,"2169":1,"2183":1,"2235":1,"2236":1,"2254":2,"2262":3,"2346":1,"2355":3,"2386":3,"2401":1,"2407":1,"2414":4,"2415":2,"2477":3,"2479":2,"2556":1,"2575":2,"2597":1,"2694":1,"2695":1}}],["6=128",{"2":{"1822":1}}],["69",{"2":{"1578":1}}],["61",{"2":{"1578":1,"2611":1}}],["67",{"2":{"1274":1,"1578":1}}],["6739",{"2":{"74":1}}],["63",{"2":{"1091":1,"1578":1,"1792":1,"1864":1,"2040":1,"2611":2}}],["6pad",{"2":{"266":1}}],["6kro",{"2":{"236":1,"515":1,"1278":1,"1288":2,"2659":1}}],["6x",{"2":{"1576":1,"1577":1}}],["6x13",{"2":{"249":1}}],["6x7",{"2":{"222":2}}],["6x6",{"2":{"217":1,"222":1}}],["68",{"2":{"211":1,"222":1,"1578":1,"1857":1}}],["6ball",{"2":{"143":2}}],["66",{"2":{"122":2,"149":1,"211":1,"313":1,"370":4,"375":2,"395":1,"396":1,"414":3,"415":2,"424":1,"425":1,"426":2,"1019":1,"1578":1,"1945":1,"2293":2,"2294":1,"2295":5,"2404":1,"2421":3,"2422":1,"2469":7,"2671":2,"2672":1}}],["64x48",{"2":{"1820":2}}],["64x32",{"2":{"1820":2}}],["64x128",{"2":{"1811":2,"1820":3}}],["64kb",{"2":{"690":2}}],["64kb+",{"2":{"486":1}}],["64u",{"2":{"659":2}}],["64",{"2":{"158":1,"685":1,"686":1,"694":1,"822":1,"848":1,"1143":1,"1227":1,"1440":1,"1451":1,"1578":1,"1638":1,"1725":5,"1792":1,"1793":1,"1821":1,"1945":2,"1946":5,"2040":1,"2255":1,"2290":1,"2294":1,"2335":1,"2351":2,"2353":1,"2371":1,"2460":2,"2461":1,"2688":1,"2695":1}}],["6490",{"2":{"114":1}}],["6480",{"2":{"25":1}}],["6",{"0":{"81":1,"542":1,"2171":1},"2":{"23":1,"81":1,"93":1,"114":1,"131":1,"134":1,"176":1,"188":1,"191":1,"211":1,"313":1,"491":1,"502":1,"506":2,"511":2,"515":2,"530":2,"633":1,"635":4,"639":2,"641":1,"657":1,"658":1,"707":1,"729":1,"955":1,"989":1,"1405":1,"1406":1,"1440":1,"1457":1,"1515":2,"1530":2,"1547":3,"1576":1,"1577":1,"1578":1,"1594":1,"1634":1,"1636":1,"1639":3,"1793":7,"1801":2,"1817":1,"1821":2,"1834":3,"1860":1,"1921":1,"1945":1,"2036":1,"2042":3,"2044":2,"2058":1,"2060":1,"2130":1,"2131":2,"2141":1,"2148":2,"2153":1,"2155":4,"2263":1,"2352":1,"2355":9,"2365":3,"2371":7,"2372":2,"2380":3,"2386":2,"2391":3,"2394":2,"2407":1,"2575":1,"2588":1,"2589":1,"2596":2,"2615":2,"2624":1,"2657":1,"2658":1,"2677":2,"2682":3}}],["62key",{"2":{"226":1}}],["6259",{"2":{"49":1}}],["6260",{"2":{"30":1}}],["62",{"2":{"21":1,"1578":1,"1857":1,"2611":1}}],["600ºf",{"2":{"2272":1}}],["600",{"2":{"1867":1}}],["60000ms",{"2":{"1817":1,"2141":1}}],["60000",{"2":{"1817":1,"2070":1,"2141":1,"2696":1}}],["6000",{"2":{"606":1}}],["60hz",{"2":{"1803":1}}],["60fps",{"2":{"1730":1,"1807":1,"1954":1}}],["60f",{"2":{"1406":1}}],["606",{"2":{"1279":2}}],["6068",{"2":{"131":1,"134":1}}],["60",{"0":{"1243":1},"2":{"18":2,"143":2,"211":6,"217":2,"222":1,"236":1,"257":1,"258":1,"259":2,"260":1,"266":1,"370":1,"385":1,"507":1,"985":1,"1290":1,"1346":3,"1347":3,"1563":1,"1578":17,"1803":1,"1807":3,"1857":1,"1945":1,"2040":1,"2295":1,"2302":1,"2316":1,"2553":1,"2619":1,"2686":6}}],["650",{"2":{"1889":1}}],["65536",{"2":{"690":1,"2353":1}}],["65keys",{"2":{"241":2}}],["6580",{"2":{"93":1}}],["65",{"2":{"11":1,"67":2,"176":1,"211":6,"236":1,"1406":1,"1578":1,"1857":1,"2094":1,"2270":1,"2575":1}}],["03d",{"2":{"2702":1,"2707":1}}],["03h",{"2":{"2544":2}}],["03",{"2":{"2353":17}}],["03eb",{"2":{"629":7,"2343":4,"2450":1,"2453":2}}],["064",{"2":{"1857":2}}],["0=2",{"2":{"1822":1}}],["0ms",{"2":{"1817":1}}],["0f",{"2":{"1403":2,"1406":5}}],["05f",{"2":{"1406":1}}],["05",{"2":{"853":1,"887":1,"921":1,"1491":1}}],["05dc",{"2":{"629":1,"2346":2}}],["05df",{"2":{"629":1,"2345":1}}],["0k5",{"2":{"821":2,"854":2,"888":2,"922":2,"956":2,"990":2,"1024":2,"1058":2,"1092":2}}],["0u",{"2":{"705":2}}],["0b11",{"2":{"2311":3}}],["0b10100000",{"2":{"684":2}}],["0b00",{"2":{"2311":1}}],["0b01",{"2":{"2311":3}}],["0b01010000",{"2":{"684":1}}],["0b",{"2":{"2311":1}}],["0v",{"2":{"630":1,"638":1,"639":1}}],["04",{"2":{"2492":1,"2503":1}}],["04x",{"2":{"1252":1}}],["0483",{"2":{"629":1,"2240":1}}],["0478",{"2":{"629":1}}],["005",{"2":{"2707":1}}],["00s",{"2":{"2347":1}}],["00100000",{"2":{"2148":2}}],["00101000",{"2":{"2147":1,"2148":1}}],["00hwpkts",{"2":{"2147":1}}],["0001",{"2":{"2474":1}}],["00010000",{"2":{"2147":1}}],["00000101",{"2":{"2148":1}}],["00000001ff",{"2":{"2349":1}}],["00000001",{"2":{"2148":1}}],["00000000",{"2":{"2091":1,"2148":7}}],["00000010",{"2":{"2148":1}}],["00001100",{"2":{"2148":1}}],["0000",{"2":{"2093":1,"2450":1,"2453":2}}],["0003",{"2":{"629":1,"2242":1}}],["000e",{"2":{"629":1,"2344":1}}],["000d",{"2":{"629":1,"2344":1}}],["000c",{"2":{"629":1,"2344":1}}],["003",{"2":{"629":1}}],["0037",{"2":{"629":2,"2344":1}}],["0036",{"2":{"629":2,"2344":1}}],["00am",{"2":{"350":9}}],["00",{"2":{"317":5,"463":2,"464":2,"465":4,"1451":1,"1452":1,"2095":1}}],["0ab",{"2":{"266":1}}],["08t12",{"2":{"2353":17}}],["08752684f7f6",{"2":{"314":1,"315":1}}],["08",{"2":{"265":1}}],["02",{"2":{"249":1}}],["01101010",{"2":{"2148":1}}],["01110000",{"2":{"2147":1}}],["01ue",{"2":{"2147":1}}],["0189",{"2":{"629":1}}],["0106",{"2":{"629":1}}],["0101",{"2":{"629":1,"2344":1}}],["01000010",{"2":{"1300":1,"2147":2}}],["0100",{"2":{"253":1}}],["0131",{"2":{"226":1}}],["0130",{"2":{"226":1}}],["01",{"2":{"211":2,"1451":2,"1452":1}}],["0+atmel3",{"2":{"114":1}}],["07",{"2":{"114":2}}],["0xxx",{"2":{"2348":3}}],["0xe7",{"2":{"2315":1}}],["0xe8",{"2":{"1859":1}}],["0x464751",{"2":{"2594":1}}],["0x464651",{"2":{"2587":1}}],["0x4335",{"2":{"1923":1}}],["0x41",{"2":{"1923":2}}],["0x400",{"2":{"2353":1}}],["0x40b",{"2":{"2181":1}}],["0x40",{"2":{"818":1,"822":1}}],["0xd7",{"2":{"2346":1}}],["0xd8",{"2":{"2344":8}}],["0xdb",{"2":{"2343":1}}],["0xd9",{"2":{"2343":3}}],["0xd4",{"2":{"1814":1,"2138":1}}],["0xd3",{"2":{"1814":1,"2138":1}}],["0xd2",{"2":{"1814":1,"2138":1}}],["0xd1",{"2":{"1814":1,"2138":1}}],["0xd0",{"2":{"1814":1,"2138":1,"2344":1,"2345":1,"2346":1}}],["0xb4",{"2":{"1814":1,"2138":1}}],["0xb3",{"2":{"1814":1,"2138":1}}],["0xb2",{"2":{"1814":1,"2138":1,"2545":1}}],["0xb1",{"2":{"1814":1,"2138":1}}],["0xb0",{"2":{"1220":1,"1814":1,"2138":1,"2700":1}}],["0xaf",{"2":{"1814":1,"2138":1}}],["0xae",{"2":{"1814":1,"2138":1}}],["0xad",{"2":{"1814":1,"2138":1}}],["0xac",{"2":{"1814":1,"2138":1}}],["0xab",{"2":{"1814":1,"2138":1}}],["0xaa",{"2":{"1814":1,"2138":1}}],["0xa9",{"2":{"1814":1,"2138":1}}],["0xa8",{"2":{"1814":1,"2138":1}}],["0xa7",{"2":{"1814":1,"2138":1}}],["0xa6",{"2":{"1814":1,"2138":1}}],["0xa5",{"2":{"1814":1,"2138":1,"2385":1,"2395":1}}],["0xa4f9",{"2":{"1921":1}}],["0xa4",{"2":{"1814":1,"2138":1}}],["0xa3",{"2":{"1814":1,"2138":1}}],["0xa2",{"2":{"1814":1,"2138":1}}],["0xa1",{"2":{"1814":1,"2138":1}}],["0xa0",{"2":{"1814":1,"2138":1}}],["0x9b",{"2":{"2343":1}}],["0x99",{"2":{"2343":3}}],["0x94",{"2":{"1814":1,"2138":1}}],["0x93",{"2":{"1814":1,"2138":1}}],["0x92",{"2":{"1814":1,"2138":1}}],["0x91",{"2":{"1814":1,"2138":1}}],["0x90",{"2":{"1814":1,"2138":1}}],["0x8f",{"2":{"1814":1,"2138":1}}],["0x8e",{"2":{"1814":1,"2138":1}}],["0x8d",{"2":{"1814":1,"2138":1}}],["0x8c",{"2":{"1814":1,"2138":1}}],["0x8b",{"2":{"1814":1,"2138":1}}],["0x8a",{"2":{"1814":1,"2138":1}}],["0x89",{"2":{"1814":1,"2138":1}}],["0x88",{"2":{"1814":1,"2138":1}}],["0x87",{"2":{"1814":1,"2138":1}}],["0x86",{"2":{"1814":1,"2138":1}}],["0x85",{"2":{"1814":1,"2138":1}}],["0x84",{"2":{"1814":1,"2138":1}}],["0x83",{"2":{"1814":1,"2138":1}}],["0x82",{"2":{"1814":1,"2138":1}}],["0x81",{"2":{"1814":1,"2138":1}}],["0x8000000",{"2":{"2240":1,"2244":1,"2353":1}}],["0x80",{"2":{"1814":1,"1817":1,"2138":1}}],["0x",{"2":{"1252":1}}],["0xf8",{"2":{"2344":1}}],["0xfb",{"2":{"2344":6}}],["0xfe",{"2":{"2344":2}}],["0xfeed",{"2":{"1242":1,"2556":2}}],["0xf3",{"2":{"2343":4}}],["0xffff",{"2":{"2571":2,"2640":1}}],["0xff60",{"2":{"1920":2,"1923":1}}],["0xff",{"2":{"850":1,"855":1,"885":1,"889":1,"919":1,"923":1,"953":1,"957":1,"987":1,"991":1,"1021":1,"1025":1,"1055":1,"1059":1,"1089":1,"1093":1,"1336":1,"1343":6,"1403":1,"1404":2,"1430":5,"1446":3,"1726":1,"1729":1,"1910":1,"1947":1,"1952":4,"2228":4,"2344":9,"2411":1,"2640":1}}],["0x6fff",{"2":{"2453":1}}],["0x6f",{"2":{"1090":1}}],["0x6e",{"2":{"1090":1}}],["0x6d",{"2":{"1090":1}}],["0x6c",{"2":{"1090":1}}],["0x6b",{"2":{"1090":1}}],["0x6a",{"2":{"1090":1}}],["0x69",{"2":{"1090":1}}],["0x68",{"2":{"1090":1}}],["0x67",{"2":{"1090":1}}],["0x66",{"2":{"1090":1}}],["0x65",{"2":{"1090":1}}],["0x64",{"2":{"1090":1}}],["0x63",{"2":{"1090":1}}],["0x62",{"2":{"1090":1}}],["0x61",{"2":{"1090":1,"1920":2,"1923":1}}],["0x60000002",{"2":{"2402":1}}],["0x60",{"2":{"1090":1}}],["0x7e",{"2":{"2575":3,"2587":1,"2588":1}}],["0x7000",{"2":{"2453":2}}],["0x7fff",{"2":{"2184":1,"2263":1,"2384":1}}],["0x7f",{"2":{"1629":1}}],["0x7a",{"2":{"1343":1}}],["0x77",{"2":{"787":1,"1146":1}}],["0x76",{"2":{"787":1,"1146":1}}],["0x75",{"2":{"787":1,"1146":1}}],["0x74",{"2":{"787":1,"1146":1}}],["0x3",{"2":{"1557":1}}],["0x33",{"2":{"954":1,"988":1}}],["0x32",{"2":{"954":1,"988":1}}],["0x31",{"2":{"954":1,"987":1,"988":1,"1055":1}}],["0x30c4",{"2":{"2181":1}}],["0x30",{"2":{"954":1,"988":1}}],["0x37",{"2":{"819":1}}],["0x36",{"2":{"819":1}}],["0x35",{"2":{"819":1}}],["0x34",{"2":{"819":1}}],["0x3f80",{"2":{"2453":2}}],["0x3f7f",{"2":{"2453":1}}],["0x3f",{"2":{"758":1,"1627":1}}],["0x3e",{"2":{"758":1}}],["0x3d",{"2":{"758":1}}],["0x3c",{"2":{"758":1,"1818":1}}],["0x5f",{"2":{"851":1,"886":1,"920":1}}],["0x5e",{"2":{"851":1,"886":1,"2343":4}}],["0x5d",{"2":{"851":1,"886":1}}],["0x5c",{"2":{"851":1,"886":1}}],["0x5b",{"2":{"851":1,"886":1}}],["0x5a",{"2":{"851":1,"886":1,"920":1}}],["0x59",{"2":{"851":1,"886":1}}],["0x58",{"2":{"851":1,"886":1}}],["0x57",{"2":{"851":1,"886":1}}],["0x56f0",{"2":{"1446":1}}],["0x56",{"2":{"851":1,"886":1}}],["0x5678",{"2":{"169":2,"184":2,"502":1}}],["0x55",{"2":{"851":1,"886":1,"920":1}}],["0x53",{"2":{"851":1,"886":1}}],["0x52",{"2":{"851":1,"886":1}}],["0x51",{"2":{"851":1,"886":1}}],["0x50",{"2":{"851":1,"886":1,"920":1}}],["0x54",{"2":{"732":1,"851":1,"886":1}}],["0x2f",{"2":{"1022":1,"1056":1}}],["0x2e2e",{"2":{"2181":1}}],["0x2e",{"2":{"1022":1,"1056":1}}],["0x2d",{"2":{"1022":1,"1056":1}}],["0x2c",{"2":{"1022":1,"1056":1}}],["0x2b",{"2":{"1022":1,"1056":1}}],["0x2a",{"2":{"1022":1,"1056":1,"1863":1}}],["0x29",{"2":{"1022":1,"1056":1}}],["0x28",{"2":{"1022":1,"1056":1}}],["0x27",{"2":{"1022":1,"1056":1}}],["0x26",{"2":{"1022":1,"1056":1}}],["0x25",{"2":{"1022":1,"1056":1}}],["0x24",{"2":{"1022":1,"1056":1}}],["0x23b0",{"2":{"2699":1}}],["0x23",{"2":{"1022":1,"1056":1}}],["0x2330",{"2":{"111":1}}],["0x22",{"2":{"1022":1,"1056":1}}],["0x21",{"2":{"1022":1,"1056":1}}],["0x203d",{"2":{"2181":1}}],["0x20",{"2":{"1022":1,"1056":1,"2575":3,"2587":1,"2588":1}}],["0x2000",{"2":{"317":1}}],["0x100",{"2":{"2640":1}}],["0x10ffff",{"2":{"2263":2}}],["0x1e9587",{"2":{"2347":1}}],["0x1eff",{"2":{"317":1}}],["0x1d",{"2":{"2317":1}}],["0x1c04",{"2":{"2353":1}}],["0x1c",{"2":{"2317":1}}],["0x1f",{"2":{"2346":1}}],["0x1f1e6",{"2":{"2182":1}}],["0x1f1fa",{"2":{"2182":1}}],["0x1f923",{"2":{"2182":1}}],["0x1f4a9",{"2":{"2182":1}}],["0x1f40d",{"2":{"2181":1}}],["0x1fff",{"2":{"317":1}}],["0x15",{"2":{"1594":3}}],["0x18",{"2":{"701":2}}],["0x1234",{"2":{"169":2,"184":2,"502":1}}],["0x03",{"2":{"2590":2,"2596":1,"2597":2}}],["0x03a8",{"2":{"1921":1}}],["0x07",{"2":{"2385":1,"2596":1}}],["0x06",{"2":{"2317":1,"2596":1}}],["0x05",{"2":{"2317":1,"2596":1,"2599":2}}],["0x0ca0",{"2":{"2182":2}}],["0x0f",{"2":{"1910":1,"2345":1}}],["0x02",{"2":{"1870":1,"1947":1,"2589":2,"2596":3}}],["0x0a",{"2":{"1868":1}}],["0x09",{"2":{"1832":1}}],["0x0b",{"2":{"1832":1}}],["0x08001c00",{"2":{"2353":1}}],["0x08001800",{"2":{"2353":1}}],["0x08001400",{"2":{"2353":1}}],["0x08001000",{"2":{"2353":1}}],["0x08000c00",{"2":{"2353":1}}],["0x08000800",{"2":{"2353":1}}],["0x08000400",{"2":{"2353":1}}],["0x08000000",{"2":{"2353":2}}],["0x08",{"2":{"1594":1,"1726":1,"1947":1}}],["0x0410",{"2":{"2353":2}}],["0x04",{"2":{"1594":3,"1726":1,"1947":1,"2317":1,"2318":1,"2346":1,"2591":2,"2596":1,"2598":2}}],["0x0e",{"2":{"1594":1}}],["0x01",{"2":{"1021":1,"1089":1,"1726":1,"1947":1,"1959":2,"2587":1,"2588":2,"2594":1,"2595":2,"2596":2}}],["0x0100",{"2":{"317":1,"502":1}}],["0x0",{"2":{"660":1,"2453":2}}],["0x005f",{"2":{"2182":1}}],["0x00c6",{"2":{"2182":1}}],["0x00e6",{"2":{"2182":1}}],["0x00",{"2":{"1343":8,"1594":1,"1627":1,"1629":1,"1726":1,"1814":1,"1923":1,"1947":1,"1952":1,"2138":1,"2315":1,"2587":2,"2594":2,"2596":2,"2640":1}}],["0x00ff",{"2":{"317":1,"2571":2}}],["0x0008e534",{"2":{"2353":1}}],["0x0002",{"2":{"1923":1}}],["0x00000002",{"2":{"2402":1}}],["0x00000001",{"2":{"2402":1}}],["0x0000",{"2":{"317":1,"2353":1,"2556":1,"2571":2}}],["0x0001",{"2":{"111":1,"169":1,"184":1}}],["0xcf",{"2":{"1814":1,"2138":1}}],["0xce",{"2":{"1814":1,"2138":1}}],["0xcd",{"2":{"1814":1,"2138":1}}],["0xcc",{"2":{"1814":1,"2138":1}}],["0xca",{"2":{"1814":1,"2138":1}}],["0xc9",{"2":{"1814":1,"2138":1}}],["0xc8",{"2":{"1814":1,"2138":1}}],["0xc7",{"2":{"1814":1,"2138":1}}],["0xc6",{"2":{"1814":1,"2138":1}}],["0xc5",{"2":{"1814":1,"2138":1}}],["0xc4",{"2":{"1814":1,"2138":1}}],["0xc3",{"2":{"1814":1,"2138":1}}],["0xc2",{"2":{"1814":1,"2138":1}}],["0xc1",{"2":{"1814":1,"2138":1}}],["0xc1ed",{"2":{"111":1,"2699":1}}],["0xc0",{"2":{"1814":1,"2138":1,"2346":1}}],["0xcb",{"2":{"114":1,"266":1,"1315":1,"1322":1,"1814":1,"2138":1,"2545":1,"2709":1}}],["0$",{"2":{"70":3}}],["0",{"0":{"56":1,"2276":1,"2333":1},"1":{"2334":1},"2":{"11":1,"14":1,"38":2,"56":1,"90":2,"102":1,"105":4,"114":5,"120":2,"122":2,"152":1,"168":1,"169":2,"176":1,"184":2,"191":2,"195":1,"199":2,"222":1,"231":4,"236":1,"238":2,"240":2,"247":1,"249":2,"266":5,"277":2,"292":1,"313":1,"317":8,"351":40,"370":1,"396":1,"411":1,"465":2,"487":2,"502":1,"505":1,"507":2,"511":1,"530":3,"534":1,"597":3,"598":1,"624":3,"629":1,"630":1,"633":1,"635":4,"636":2,"639":2,"644":1,"653":1,"659":1,"660":1,"666":1,"667":1,"669":2,"672":1,"689":1,"690":1,"726":2,"731":1,"757":2,"760":3,"763":1,"786":2,"790":3,"793":1,"818":2,"821":4,"822":1,"824":3,"827":1,"850":5,"854":6,"855":1,"857":3,"860":1,"885":4,"888":6,"889":1,"891":3,"894":1,"919":4,"922":6,"923":1,"925":3,"928":1,"953":2,"956":4,"957":1,"959":3,"962":1,"987":2,"990":4,"991":1,"993":3,"996":1,"1021":3,"1024":4,"1025":1,"1027":3,"1030":1,"1055":3,"1058":4,"1059":1,"1061":3,"1064":1,"1089":2,"1092":4,"1093":1,"1095":3,"1098":1,"1136":1,"1145":2,"1148":3,"1151":1,"1181":1,"1214":1,"1215":1,"1217":3,"1224":1,"1234":1,"1252":23,"1287":2,"1295":1,"1319":8,"1325":4,"1328":1,"1332":1,"1335":2,"1336":2,"1338":2,"1344":1,"1354":1,"1355":1,"1359":2,"1368":1,"1375":1,"1399":1,"1405":1,"1406":1,"1427":2,"1440":23,"1446":4,"1448":1,"1451":4,"1452":1,"1457":1,"1458":1,"1480":1,"1482":1,"1495":3,"1499":1,"1504":1,"1506":1,"1518":2,"1524":2,"1530":3,"1533":3,"1534":2,"1546":2,"1547":1,"1548":1,"1549":3,"1556":1,"1559":1,"1560":2,"1562":1,"1570":1,"1573":1,"1576":3,"1577":3,"1587":2,"1594":1,"1604":2,"1612":1,"1614":1,"1636":2,"1637":2,"1638":6,"1639":3,"1647":1,"1649":1,"1652":1,"1670":1,"1715":1,"1717":2,"1718":1,"1725":5,"1728":1,"1730":1,"1744":1,"1762":1,"1768":1,"1770":1,"1772":1,"1792":2,"1793":29,"1794":2,"1801":2,"1803":1,"1805":4,"1815":5,"1816":2,"1817":9,"1820":2,"1821":5,"1822":5,"1838":1,"1840":1,"1842":1,"1844":1,"1846":1,"1857":6,"1860":1,"1870":3,"1871":1,"1876":2,"1879":2,"1880":6,"1882":2,"1883":2,"1889":2,"1905":4,"1907":10,"1912":3,"1923":5,"1938":1,"1940":2,"1941":2,"1946":5,"1949":1,"1954":2,"1958":3,"1959":4,"1971":1,"1989":1,"1995":1,"2001":1,"2007":1,"2009":1,"2011":1,"2013":3,"2015":3,"2035":2,"2036":8,"2038":2,"2043":1,"2044":4,"2051":15,"2054":2,"2055":2,"2058":1,"2059":1,"2060":1,"2070":4,"2081":1,"2085":1,"2091":1,"2092":1,"2093":1,"2094":1,"2095":1,"2096":1,"2097":2,"2098":1,"2099":1,"2100":2,"2106":4,"2107":1,"2128":3,"2130":2,"2133":2,"2139":5,"2141":5,"2143":2,"2147":1,"2148":6,"2152":1,"2155":16,"2157":1,"2168":2,"2182":2,"2217":1,"2227":2,"2228":3,"2235":1,"2240":1,"2243":1,"2255":3,"2269":2,"2311":10,"2333":2,"2347":1,"2353":3,"2355":4,"2365":3,"2371":29,"2372":2,"2386":2,"2394":2,"2401":4,"2402":9,"2406":1,"2407":4,"2414":5,"2415":2,"2453":2,"2513":2,"2524":2,"2556":2,"2559":18,"2570":1,"2574":1,"2575":2,"2576":1,"2577":27,"2581":1,"2593":1,"2596":6,"2597":6,"2600":2,"2611":3,"2614":1,"2615":13,"2674":1,"2675":1,"2677":1,"2679":2,"2682":1,"2686":4,"2688":5,"2689":1,"2694":4,"2695":6,"2696":5,"2697":1,"2699":3,"2707":2,"2731":2,"2732":3,"2733":2,"2737":2,"2745":21,"2747":1,"2748":39}}],["3akeyboard",{"2":{"2566":1}}],["3aclosed+label",{"2":{"2566":1}}],["3apr+is",{"2":{"2566":1}}],["3d",{"2":{"2280":1}}],["3+0",{"2":{"1857":1}}],["3=5",{"2":{"1822":1}}],["3|128",{"2":{"1451":1}}],["34",{"2":{"1405":1,"1578":1,"1857":1}}],["333c30605e739ce9bedee5999fdaf81b",{"2":{"2353":1}}],["33s",{"2":{"2347":1}}],["3389",{"0":{"1870":1},"2":{"1870":3}}],["33",{"2":{"1405":1,"1578":1,"1857":1,"2577":6}}],["3360",{"0":{"1870":1},"2":{"118":1,"1870":3}}],["3b",{"2":{"1293":1}}],["35",{"2":{"1405":1,"1440":1,"1578":1,"1857":1,"2299":1,"2474":1}}],["3500",{"2":{"1869":1}}],["350",{"2":{"1214":1,"1682":1}}],["351",{"2":{"951":1,"1724":1}}],["384",{"2":{"2181":1}}],["38400",{"2":{"1136":1,"1201":1}}],["38",{"2":{"1405":1,"1578":1,"1725":1,"1793":1,"1857":1,"1946":1,"2371":1}}],["38u",{"2":{"705":1}}],["3k63",{"2":{"1091":1}}],["3k6",{"2":{"955":1,"989":1}}],["3key",{"2":{"143":2}}],["3v3",{"2":{"2344":2}}],["3v",{"2":{"629":2,"630":2,"1589":1,"1635":1,"2114":1,"2352":1,"2518":1,"2519":1,"2528":1,"2529":2,"2530":3}}],["3rd",{"2":{"457":1,"556":1,"2302":1}}],["39000",{"2":{"1136":1}}],["39x9",{"2":{"951":1}}],["39kbps",{"2":{"511":1,"2128":1}}],["39",{"2":{"315":2,"1405":1,"1578":1}}],["319",{"2":{"2577":3}}],["316",{"2":{"1253":4}}],["313",{"2":{"1253":1}}],["315ºc",{"2":{"2272":1}}],["315",{"2":{"1253":1}}],["314b",{"2":{"629":1}}],["31",{"2":{"231":4,"502":1,"644":2,"653":1,"1275":1,"1405":1,"1457":1,"1578":1,"1639":3,"1647":1,"1649":1,"1834":3,"1838":1,"1840":1,"1842":1,"1844":1,"1846":1,"1857":1,"2040":1,"2353":13,"2365":3,"2380":3,"2401":2,"2402":5,"2675":2,"2677":1}}],["3x",{"2":{"1576":1,"1577":1,"1863":1}}],["3x5+3",{"2":{"249":1}}],["3x5",{"2":{"217":1,"222":2,"249":1,"1496":1}}],["3x8",{"2":{"143":2}}],["3x7",{"2":{"143":2}}],["3x6",{"2":{"143":2}}],["360",{"2":{"1805":1,"2577":1,"2597":1}}],["36",{"2":{"143":2,"211":1,"755":1,"1578":1,"1724":1,"1857":1,"2269":1}}],["37",{"2":{"1405":1,"1578":1,"1725":1,"1857":1,"1946":1}}],["3731",{"2":{"236":1}}],["3733",{"2":{"134":1}}],["3741",{"2":{"236":1}}],["378",{"2":{"211":1}}],["378edd9",{"2":{"73":1}}],["3700",{"2":{"57":2}}],["320x480",{"2":{"2573":2}}],["3204",{"0":{"1867":1},"2":{"1867":2}}],["3286",{"2":{"2335":1}}],["328p",{"2":{"235":1}}],["32k",{"2":{"818":1,"820":2,"854":2,"888":2,"922":2,"953":2,"956":4,"990":2}}],["32kb",{"2":{"688":2}}],["32kb+",{"2":{"486":1}}],["32u2",{"2":{"702":1,"1176":1,"1197":1,"1466":1,"1467":1}}],["32u4rc",{"2":{"2230":1}}],["32u4",{"2":{"211":1,"487":1,"629":4,"633":1,"702":1,"1197":1,"1466":1,"1467":1,"1492":2,"2344":4}}],["32bit",{"2":{"588":1}}],["32730",{"2":{"2347":4}}],["32767",{"2":{"505":2,"1872":2}}],["3270",{"2":{"114":1,"207":8}}],["32",{"0":{"166":1},"2":{"63":1,"120":1,"231":1,"277":1,"506":1,"684":1,"685":1,"820":1,"854":2,"883":1,"888":2,"922":2,"956":2,"990":2,"1227":1,"1332":1,"1333":1,"1336":1,"1354":1,"1405":1,"1515":1,"1578":1,"1634":1,"1636":1,"1725":2,"1804":1,"1805":2,"1807":3,"1820":2,"1834":3,"1857":1,"1921":1,"1922":1,"1923":1,"1926":2,"1928":2,"1945":1,"1946":2,"1950":1,"2042":2,"2091":1,"2109":1,"2111":1,"2130":1,"2141":1,"2142":2,"2289":1,"2380":3,"2401":2,"2402":1,"2411":1,"2424":1,"2528":1,"2622":1,"2688":1,"2694":1,"2695":1}}],["3",{"0":{"81":1,"539":1,"1295":1,"2159":1,"2168":1,"2316":1,"2433":1,"2468":1},"1":{"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1},"2":{"10":1,"23":1,"69":1,"70":1,"76":1,"81":1,"93":1,"114":2,"120":2,"122":2,"131":1,"134":3,"149":1,"176":3,"188":1,"191":1,"199":1,"211":1,"217":1,"222":1,"236":1,"240":1,"251":1,"266":6,"292":1,"313":1,"337":1,"350":1,"358":5,"359":5,"364":1,"366":1,"455":1,"491":3,"502":1,"511":1,"522":1,"530":2,"534":6,"540":1,"582":1,"606":1,"624":1,"629":1,"630":2,"633":1,"635":22,"636":1,"656":2,"672":1,"694":1,"757":2,"763":1,"786":2,"790":1,"793":1,"818":2,"827":1,"850":4,"860":1,"885":2,"894":1,"919":2,"928":1,"953":2,"955":1,"962":1,"987":2,"989":1,"996":1,"1021":4,"1030":1,"1055":4,"1064":1,"1089":2,"1091":1,"1098":1,"1127":1,"1130":1,"1136":1,"1145":2,"1151":1,"1181":1,"1268":1,"1295":1,"1354":1,"1383":1,"1387":1,"1405":1,"1451":2,"1457":1,"1466":4,"1467":2,"1469":1,"1504":1,"1527":1,"1530":2,"1549":1,"1559":1,"1562":1,"1576":4,"1577":3,"1578":1,"1589":1,"1594":1,"1635":1,"1636":1,"1639":3,"1685":2,"1722":2,"1725":1,"1728":1,"1793":31,"1801":2,"1805":3,"1819":1,"1821":3,"1822":1,"1834":3,"1856":1,"1860":1,"1863":1,"1907":2,"1911":2,"1946":1,"1949":2,"2036":4,"2038":1,"2042":1,"2043":1,"2044":2,"2058":1,"2059":1,"2060":3,"2106":1,"2114":1,"2117":1,"2119":1,"2120":1,"2128":1,"2148":2,"2150":1,"2153":1,"2155":16,"2167":4,"2169":1,"2174":1,"2261":1,"2295":1,"2299":4,"2300":4,"2310":1,"2311":3,"2352":3,"2355":9,"2365":3,"2371":31,"2372":2,"2380":3,"2386":2,"2391":2,"2394":2,"2407":1,"2411":1,"2418":1,"2420":2,"2472":1,"2474":1,"2497":1,"2513":1,"2519":1,"2528":1,"2529":2,"2530":3,"2534":1,"2559":16,"2576":22,"2596":2,"2597":1,"2615":9,"2645":1,"2677":1,"2694":1,"2696":1,"2720":1,"2734":1,"2740":1,"2746":1}}],["30fps",{"2":{"2577":6}}],["30x6",{"2":{"985":1}}],["300",{"2":{"505":2,"1682":1,"1683":1,"1807":1,"1860":2,"1912":1,"2144":1,"2687":2}}],["30000",{"2":{"2574":1}}],["3000",{"2":{"266":1,"511":1,"1504":1,"1804":1,"2131":1}}],["30",{"0":{"0":1,"19":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1},"2":{"114":1,"176":1,"351":2,"502":1,"1405":1,"1578":8,"1639":3,"1803":1,"1815":1,"1834":3,"1857":1,"1949":2,"1959":1,"2040":2,"2139":1,"2353":4,"2365":3,"2380":3,"2401":1,"2402":4,"2689":2}}],["1bpp",{"2":{"2576":1,"2596":2}}],["1b4f",{"2":{"629":3,"2344":3}}],["1ca027",{"2":{"1862":1}}],["1c11",{"2":{"629":1,"2243":1}}],["1=3",{"2":{"1822":1}}],["1>",{"2":{"1677":1,"2738":1}}],["1x",{"2":{"1576":1,"1577":1,"1863":1,"2117":1,"2528":1}}],["1x4",{"2":{"211":1}}],["1st",{"2":{"1344":1}}],["1️⃣",{"2":{"656":12}}],["1p5",{"2":{"641":1}}],["1eaf",{"2":{"629":1,"2242":1}}],["1ffb",{"2":{"629":1,"2344":1}}],["1u",{"2":{"2686":2}}],["1up60rgb",{"2":{"529":1}}],["1upkeyboards",{"2":{"191":2,"211":2,"236":1,"529":1}}],["1ul",{"2":{"105":4,"1290":2,"1549":4}}],["19",{"2":{"315":2,"351":1,"1405":1,"1440":1,"1578":1,"1639":3,"1834":3,"1857":2,"2365":3,"2380":3}}],["199",{"2":{"2731":1,"2732":1}}],["19939",{"2":{"236":1}}],["19954",{"2":{"211":1}}],["19997",{"2":{"236":1}}],["19998",{"2":{"211":1}}],["19991",{"2":{"211":1}}],["19993",{"2":{"211":1}}],["19987",{"2":{"211":1}}],["19985",{"2":{"211":1}}],["19980",{"2":{"211":1}}],["19961",{"2":{"211":1}}],["19966",{"2":{"211":1}}],["19925",{"2":{"211":1}}],["19923",{"2":{"199":1}}],["19974",{"2":{"211":1}}],["19948",{"2":{"211":1}}],["19941",{"2":{"199":1}}],["19940",{"2":{"199":1}}],["19912",{"2":{"211":1}}],["19916",{"2":{"199":1}}],["19919",{"2":{"199":1}}],["19918",{"2":{"199":1}}],["19910",{"2":{"199":1}}],["19902",{"2":{"199":1}}],["19901",{"2":{"199":1}}],["19909",{"2":{"199":1}}],["19907",{"2":{"199":1}}],["198",{"2":{"1019":1,"1724":1}}],["19849",{"2":{"211":1}}],["19845",{"2":{"199":1}}],["19842",{"2":{"199":1}}],["19893",{"2":{"199":1}}],["19898",{"2":{"199":1}}],["19891",{"2":{"199":1}}],["19890",{"2":{"199":1}}],["19869",{"2":{"199":1}}],["19867",{"2":{"199":1}}],["19866",{"2":{"199":1}}],["19864",{"2":{"199":1}}],["19863",{"2":{"199":1}}],["19860",{"2":{"199":1}}],["19854",{"2":{"211":1}}],["19857",{"2":{"199":1}}],["19856",{"2":{"199":1}}],["19859",{"2":{"199":1}}],["19851",{"2":{"199":1}}],["19825",{"2":{"211":1}}],["19828",{"2":{"199":1}}],["19821",{"2":{"199":1}}],["19826",{"2":{"199":1}}],["19829",{"2":{"199":1}}],["19808",{"2":{"199":1}}],["19800",{"2":{"199":1}}],["19806",{"2":{"199":1}}],["19889",{"2":{"199":1}}],["19888",{"2":{"199":1}}],["19887",{"2":{"199":1}}],["19885",{"2":{"199":1}}],["19884",{"2":{"199":1}}],["19874",{"2":{"199":1}}],["19879",{"2":{"199":1}}],["19872",{"2":{"199":1}}],["19877",{"2":{"199":1}}],["19875",{"2":{"199":1}}],["19833",{"2":{"199":1}}],["19831",{"2":{"199":1}}],["19830",{"2":{"199":1}}],["19815",{"2":{"199":1}}],["19817",{"2":{"199":1}}],["19813",{"2":{"199":1}}],["19780",{"2":{"222":2}}],["19784",{"2":{"199":1}}],["19738",{"2":{"211":1}}],["19793",{"2":{"199":1}}],["19795",{"2":{"199":1}}],["19778",{"2":{"199":1}}],["19777",{"2":{"199":1}}],["19774",{"2":{"199":1}}],["19767",{"2":{"199":1}}],["19768",{"2":{"199":1}}],["19761",{"2":{"199":1}}],["19749",{"2":{"236":1}}],["19748",{"2":{"199":1}}],["19742",{"2":{"199":1}}],["19752",{"2":{"199":1}}],["19750",{"2":{"199":1}}],["19756",{"2":{"199":1}}],["19755",{"2":{"199":1}}],["19753",{"2":{"199":1}}],["19723",{"2":{"199":1}}],["19721",{"2":{"199":1}}],["19726",{"2":{"199":1}}],["19722",{"2":{"199":1}}],["19720",{"2":{"199":1}}],["19718",{"2":{"199":1}}],["19715",{"2":{"199":1}}],["19714",{"2":{"199":1}}],["19713",{"2":{"199":1}}],["19712",{"2":{"199":1}}],["1970",{"2":{"463":1,"464":1,"465":2}}],["19705",{"2":{"211":1}}],["19700",{"2":{"211":1}}],["19703",{"2":{"199":1}}],["19704",{"2":{"199":1}}],["19701",{"2":{"199":1}}],["19689",{"2":{"211":1}}],["19683",{"2":{"199":1}}],["1967st",{"2":{"211":1}}],["19670",{"2":{"211":1}}],["19675",{"2":{"199":1}}],["19658",{"2":{"199":1}}],["19652",{"2":{"199":1}}],["19656",{"2":{"199":1}}],["19647",{"2":{"199":1}}],["19644",{"2":{"199":1}}],["19649",{"2":{"199":1}}],["19640",{"2":{"199":1}}],["19646",{"2":{"199":1}}],["19699",{"2":{"199":1}}],["19630",{"2":{"199":1}}],["19633",{"2":{"199":1}}],["19632",{"2":{"199":1}}],["19629",{"2":{"199":1}}],["19620",{"2":{"199":1}}],["19602",{"2":{"199":1}}],["19607",{"2":{"199":1}}],["19606",{"2":{"199":1}}],["19603",{"2":{"199":2}}],["19515",{"2":{"222":1}}],["19511",{"2":{"199":1}}],["19537",{"2":{"199":1}}],["19530",{"2":{"199":1}}],["19588",{"2":{"199":1}}],["19581",{"2":{"199":1}}],["19570",{"2":{"199":1}}],["19529",{"2":{"199":1}}],["19599",{"2":{"199":1}}],["19597",{"2":{"199":1}}],["19594",{"2":{"199":1}}],["19562",{"2":{"199":1}}],["19565",{"2":{"199":1}}],["19564",{"2":{"199":1}}],["19563",{"2":{"199":1}}],["19543",{"2":{"211":1}}],["19549",{"2":{"199":1}}],["19548",{"2":{"199":1}}],["19541",{"2":{"199":1}}],["19542",{"2":{"199":1}}],["19545",{"2":{"199":1}}],["19544",{"2":{"199":1}}],["19447",{"2":{"199":1}}],["19468",{"2":{"199":1}}],["19464",{"2":{"199":1}}],["19462",{"2":{"199":1}}],["19463",{"2":{"199":1}}],["19496",{"2":{"199":1}}],["19488",{"2":{"199":1}}],["19487",{"2":{"199":1}}],["19485",{"2":{"199":1}}],["19480",{"2":{"199":1}}],["19474",{"2":{"199":1}}],["19479",{"2":{"199":1}}],["19475",{"2":{"199":1}}],["19453",{"2":{"199":1}}],["19452",{"2":{"199":1}}],["19412",{"2":{"199":1}}],["19411",{"2":{"199":1}}],["19418",{"2":{"199":1}}],["19416",{"2":{"199":1}}],["19415",{"2":{"199":1}}],["19400",{"2":{"199":1}}],["19313",{"2":{"199":1}}],["19341",{"2":{"199":1}}],["19348",{"2":{"199":1}}],["19332",{"2":{"199":1}}],["1930",{"2":{"2632":1}}],["19304",{"2":{"199":1}}],["19302",{"2":{"199":1}}],["19301",{"2":{"199":1}}],["19306",{"2":{"199":1}}],["19303",{"2":{"199":1}}],["19350",{"2":{"199":1}}],["19326",{"2":{"199":1}}],["19325",{"2":{"199":1}}],["19399",{"2":{"199":1}}],["19397",{"2":{"199":1}}],["19394",{"2":{"199":1}}],["19382",{"2":{"199":1}}],["19370",{"2":{"199":1}}],["19366",{"2":{"199":1}}],["192",{"2":{"848":1,"1143":1,"1724":2,"2290":1}}],["19280",{"2":{"249":1}}],["19269",{"2":{"199":1}}],["19267",{"2":{"199":1}}],["19262",{"2":{"199":1}}],["1920",{"2":{"1807":1}}],["19200",{"2":{"1136":1,"1201":1}}],["19201",{"2":{"199":1}}],["19203",{"2":{"199":1}}],["19248",{"2":{"199":1}}],["19243",{"2":{"199":1}}],["19275",{"2":{"199":1}}],["19271",{"2":{"199":1}}],["19277",{"2":{"199":1}}],["19273",{"2":{"199":1}}],["19229",{"2":{"199":1}}],["19226",{"2":{"199":1}}],["19225",{"2":{"199":1}}],["19224",{"2":{"199":1}}],["19216",{"2":{"199":1}}],["19214",{"2":{"199":1}}],["1919",{"2":{"1864":1}}],["19194",{"2":{"199":1}}],["191",{"2":{"1815":1,"2139":1}}],["19172",{"2":{"199":1}}],["19153",{"2":{"199":1}}],["19159",{"2":{"191":1}}],["19160",{"2":{"199":1}}],["19167",{"2":{"199":1}}],["19163",{"2":{"199":1}}],["19135",{"2":{"199":1}}],["19137",{"2":{"191":1}}],["19110",{"2":{"199":1}}],["19119",{"2":{"191":1}}],["19140",{"2":{"191":1}}],["19146",{"2":{"191":1}}],["19144",{"2":{"191":1}}],["19143",{"2":{"188":1,"191":1}}],["19107",{"2":{"191":1}}],["19121",{"2":{"191":1}}],["19120",{"2":{"191":1}}],["19124",{"2":{"191":1}}],["19122",{"2":{"191":1}}],["19049",{"2":{"199":1}}],["19096",{"2":{"191":1}}],["19094",{"2":{"191":1}}],["19053",{"2":{"199":1}}],["19059",{"2":{"191":1}}],["19058",{"2":{"191":1}}],["19056",{"2":{"191":1}}],["19052",{"2":{"191":1}}],["19089",{"2":{"191":1}}],["19086",{"2":{"191":1}}],["19080",{"2":{"191":1}}],["19077",{"2":{"199":1}}],["19075",{"2":{"199":1}}],["19072",{"2":{"191":1}}],["19079",{"2":{"191":1}}],["19031",{"2":{"199":1}}],["19038",{"2":{"191":1}}],["19034",{"2":{"190":1,"191":1}}],["19024",{"2":{"199":1}}],["19028",{"2":{"191":1}}],["19029",{"2":{"191":1}}],["19020",{"2":{"191":1}}],["19015",{"2":{"191":1}}],["19018",{"2":{"191":1}}],["19069",{"2":{"211":1}}],["19066",{"2":{"191":1}}],["19060",{"2":{"191":1}}],["19065",{"2":{"191":1}}],["19063",{"2":{"191":1}}],["19068",{"2":{"191":1}}],["19005",{"2":{"236":1}}],["19006",{"2":{"191":1}}],["19007",{"2":{"191":1}}],["19004",{"2":{"188":1,"191":1}}],["1k81",{"2":{"1091":1}}],["1k8",{"2":{"955":1,"989":1}}],["1k05",{"2":{"853":1,"887":1,"921":1}}],["1k",{"2":{"820":1,"821":4,"854":2,"888":2,"922":2,"956":2,"990":2,"1024":4,"1058":4,"1092":4,"2161":1,"2517":1}}],["1kb",{"2":{"683":1}}],["1key",{"2":{"143":2}}],["1khz",{"0":{"137":1},"2":{"137":1,"149":1}}],["1ms",{"2":{"137":1,"176":1,"211":1}}],["15ms",{"2":{"1821":1}}],["15min",{"2":{"588":1}}],["15x9",{"2":{"816":1}}],["15pad",{"2":{"266":1}}],["15",{"2":{"176":1,"351":1,"502":1,"635":4,"788":1,"857":1,"925":1,"1290":1,"1335":2,"1336":2,"1405":1,"1440":2,"1578":1,"1604":1,"1639":3,"1793":2,"1817":1,"1834":3,"1857":2,"2042":1,"2098":1,"2330":1,"2332":1,"2365":3,"2371":2,"2380":3,"2596":1}}],["15699",{"2":{"191":1}}],["15691",{"2":{"149":1}}],["15674",{"2":{"176":1}}],["15657",{"2":{"160":1}}],["15606",{"2":{"149":1}}],["15603",{"2":{"149":1}}],["15609",{"2":{"149":1}}],["15680",{"2":{"160":1}}],["15682",{"2":{"149":1}}],["15687",{"2":{"149":1}}],["15684",{"2":{"149":1}}],["15681",{"2":{"149":1}}],["15668",{"2":{"149":1}}],["15667",{"2":{"149":1}}],["15665",{"2":{"149":1}}],["15662",{"2":{"149":1}}],["15661",{"2":{"149":1}}],["15646",{"2":{"149":1}}],["15647",{"2":{"149":1}}],["15645",{"2":{"149":1}}],["15643",{"2":{"149":1}}],["15641",{"2":{"149":1}}],["15638",{"2":{"149":1}}],["15637",{"2":{"149":1}}],["15636",{"2":{"149":1}}],["15635",{"2":{"149":1}}],["15988",{"2":{"149":1}}],["15985",{"2":{"149":1}}],["15984",{"2":{"149":1}}],["15987",{"2":{"149":1}}],["15976",{"2":{"149":1}}],["15938",{"2":{"149":1}}],["15935",{"2":{"149":1}}],["15919",{"2":{"149":1}}],["15907",{"2":{"176":1}}],["15906",{"2":{"149":1}}],["15904",{"2":{"149":1}}],["15996",{"2":{"160":1}}],["15990",{"2":{"160":1}}],["15999",{"2":{"149":1}}],["15997",{"2":{"149":1}}],["15993",{"2":{"149":1}}],["15992",{"2":{"149":1}}],["15991",{"2":{"149":1}}],["15968",{"2":{"149":1}}],["15959",{"2":{"160":1}}],["15954",{"2":{"149":1}}],["15953",{"2":{"149":1}}],["15944",{"2":{"149":1}}],["15924",{"2":{"149":1}}],["15925",{"2":{"149":1}}],["15923",{"2":{"149":1}}],["15843",{"2":{"1252":1}}],["15847",{"2":{"211":1}}],["15814",{"2":{"149":1}}],["15815",{"2":{"149":1}}],["15801",{"2":{"149":1}}],["15805",{"2":{"149":1}}],["15889",{"2":{"236":1}}],["15880",{"2":{"149":1}}],["15883",{"2":{"149":1}}],["15882",{"2":{"149":1}}],["15866",{"2":{"149":1}}],["15859",{"2":{"149":1}}],["15828",{"2":{"149":1}}],["15827",{"2":{"149":1}}],["15829",{"2":{"149":1}}],["15821",{"2":{"149":1}}],["15703",{"2":{"1252":1}}],["15741",{"2":{"199":1}}],["15740",{"2":{"149":1}}],["15733",{"2":{"160":1}}],["15730",{"2":{"149":1}}],["15799",{"2":{"149":1}}],["15798",{"2":{"149":1}}],["15797",{"2":{"149":1}}],["15791",{"2":{"149":1}}],["15789",{"2":{"149":1}}],["15788",{"2":{"149":1}}],["15786",{"2":{"149":1}}],["15785",{"2":{"149":1}}],["15783",{"2":{"149":1}}],["15781",{"2":{"149":1}}],["15780",{"2":{"149":1}}],["15787",{"2":{"149":1}}],["15767",{"2":{"149":1}}],["15760",{"2":{"149":1}}],["15758",{"2":{"149":1}}],["15725",{"2":{"149":1}}],["15510",{"2":{"1252":1}}],["15519",{"2":{"149":1}}],["15505",{"2":{"1252":1}}],["15592",{"2":{"149":1}}],["15589",{"2":{"149":1}}],["15557",{"2":{"149":1}}],["15559",{"2":{"149":1}}],["15538",{"2":{"149":1}}],["15537",{"2":{"149":1}}],["15579",{"2":{"149":1}}],["15416",{"2":{"149":1}}],["15419",{"2":{"149":1}}],["15483",{"2":{"149":1}}],["15489",{"2":{"149":1}}],["15481",{"2":{"149":1}}],["15492",{"2":{"149":1}}],["15479",{"2":{"149":1}}],["15457",{"2":{"149":1}}],["15450",{"2":{"149":1}}],["15435",{"2":{"149":1}}],["15431",{"2":{"149":1}}],["15420",{"2":{"149":1}}],["15409",{"2":{"149":1}}],["15320",{"2":{"160":1}}],["15321",{"2":{"149":1}}],["15378",{"2":{"149":1}}],["15376",{"2":{"149":1}}],["15340",{"2":{"149":1}}],["15349",{"2":{"149":1}}],["15336",{"2":{"149":1}}],["15368",{"2":{"149":1}}],["15352",{"2":{"149":1}}],["15316",{"2":{"134":1}}],["15313",{"2":{"134":1}}],["15312",{"2":{"134":1}}],["15306",{"2":{"149":1}}],["15305",{"2":{"149":1}}],["15304",{"2":{"149":1}}],["15307",{"2":{"134":1}}],["15302",{"2":{"134":1}}],["15301",{"2":{"134":1}}],["15309",{"2":{"134":1}}],["15303",{"2":{"134":1}}],["15277",{"2":{"149":1}}],["15207",{"2":{"149":1}}],["15205",{"2":{"134":1}}],["15286",{"2":{"176":1}}],["15285",{"2":{"149":1}}],["15282",{"2":{"149":1}}],["15292",{"2":{"176":1}}],["15298",{"2":{"134":1}}],["15299",{"2":{"134":1}}],["15239",{"2":{"134":1}}],["15221",{"2":{"134":1}}],["15223",{"2":{"134":1}}],["15240",{"2":{"134":1}}],["15243",{"2":{"134":1}}],["15244",{"2":{"134":1}}],["15268",{"2":{"134":1}}],["15263",{"2":{"134":1}}],["15262",{"2":{"134":1}}],["15261",{"2":{"134":1}}],["15260",{"2":{"134":1}}],["15269",{"2":{"134":1}}],["15132",{"2":{"149":1}}],["15130",{"2":{"134":1}}],["15167",{"2":{"134":1}}],["15162",{"2":{"133":1,"134":1}}],["15115",{"2":{"134":1}}],["15116",{"2":{"134":1}}],["15109",{"2":{"134":1}}],["15185",{"2":{"134":1}}],["15184",{"2":{"134":1}}],["15171",{"2":{"134":1}}],["15170",{"2":{"134":1}}],["15174",{"2":{"134":1}}],["15199",{"2":{"134":1}}],["15196",{"2":{"134":1}}],["15195",{"2":{"134":1}}],["150",{"2":{"288":1,"666":2,"667":1,"1242":1,"1415":1,"1416":1,"1516":1,"1518":1,"1807":1,"1860":2}}],["15088",{"2":{"149":1}}],["15083",{"2":{"149":1}}],["15029",{"2":{"134":2}}],["15020",{"2":{"134":1}}],["15021",{"2":{"134":1}}],["15073",{"2":{"134":1}}],["15068",{"2":{"134":1}}],["15055",{"2":{"134":1}}],["15019",{"2":{"134":1}}],["15014",{"2":{"134":1}}],["15017",{"2":{"134":1}}],["15012",{"2":{"134":1}}],["15011",{"2":{"134":1}}],["15010",{"2":{"134":1}}],["15018",{"2":{"134":1}}],["15047",{"2":{"134":1}}],["15040",{"2":{"134":2}}],["15031",{"2":{"134":1}}],["15034",{"2":{"134":1}}],["15037",{"2":{"133":1,"134":1}}],["1500",{"2":{"598":2,"1406":1}}],["15006",{"2":{"149":1}}],["15004",{"2":{"134":1}}],["15003",{"2":{"134":1}}],["15002",{"2":{"134":1}}],["18x4",{"2":{"1087":1}}],["18x8",{"2":{"1053":1}}],["18x11",{"2":{"1019":1}}],["18x12",{"2":{"664":1}}],["18499",{"2":{"199":1}}],["18455",{"2":{"191":1}}],["18450",{"2":{"191":1}}],["18459",{"2":{"191":1}}],["18449",{"2":{"191":1}}],["18441",{"2":{"191":1}}],["18477",{"2":{"191":1}}],["18475",{"2":{"191":1}}],["18472",{"2":{"191":1}}],["1840",{"2":{"211":1}}],["18408",{"2":{"191":1}}],["18403",{"2":{"191":1}}],["18402",{"2":{"191":1}}],["18404",{"2":{"190":1,"191":1}}],["18463",{"2":{"199":1}}],["18467",{"2":{"191":1}}],["18464",{"2":{"191":1}}],["18431",{"2":{"191":1}}],["18432",{"2":{"191":1}}],["18439",{"2":{"191":1}}],["18437",{"2":{"191":1}}],["18438880",{"2":{"149":1}}],["18428",{"2":{"191":1}}],["18426",{"2":{"191":1}}],["18423",{"2":{"191":1}}],["18424",{"2":{"191":1}}],["18421",{"2":{"191":1}}],["18414",{"2":{"191":1}}],["18419",{"2":{"191":1}}],["18418",{"2":{"191":1}}],["18417",{"2":{"191":1}}],["18415",{"2":{"191":1}}],["18521",{"2":{"249":1}}],["18527",{"2":{"191":1}}],["18581",{"2":{"191":1}}],["18588",{"2":{"188":1,"191":1}}],["18574",{"2":{"191":1}}],["18577",{"2":{"191":1}}],["18557",{"2":{"191":1}}],["18553",{"2":{"191":1}}],["18566",{"2":{"191":1}}],["18560",{"2":{"191":1}}],["18565",{"2":{"190":1,"191":1}}],["18545",{"2":{"191":1}}],["18544",{"2":{"191":1}}],["18593",{"2":{"191":1}}],["18594",{"2":{"191":1}}],["18599",{"2":{"191":1}}],["18592",{"2":{"191":1}}],["18513",{"2":{"190":1,"191":1}}],["183874",{"2":{"2255":1}}],["183883",{"2":{"2255":3}}],["18371",{"2":{"199":1}}],["18370",{"2":{"191":1}}],["18351",{"2":{"191":1}}],["18352",{"2":{"191":1}}],["18332",{"2":{"277":1}}],["18338",{"2":{"191":1}}],["18333",{"2":{"191":1}}],["18345",{"2":{"191":1}}],["18394",{"2":{"191":1}}],["18399",{"2":{"191":1}}],["18396",{"2":{"191":1}}],["18366",{"2":{"191":1}}],["18363",{"2":{"190":1,"191":1}}],["18323",{"2":{"191":1}}],["18310",{"2":{"191":1}}],["18309",{"2":{"189":1,"191":1}}],["187",{"2":{"1725":1,"1946":1}}],["18734",{"2":{"191":1}}],["18730",{"2":{"191":1}}],["18725",{"2":{"191":1}}],["18729",{"2":{"191":2}}],["18728",{"2":{"191":1}}],["18727",{"2":{"191":1}}],["18726",{"2":{"191":2}}],["18720",{"2":{"191":1}}],["18721",{"2":{"191":1}}],["18701",{"2":{"191":1}}],["18700",{"2":{"191":1}}],["18709",{"2":{"191":1}}],["18766",{"2":{"191":1}}],["18767",{"2":{"191":1}}],["18769",{"2":{"188":1,"191":1}}],["18751",{"2":{"191":1}}],["18753",{"2":{"191":2}}],["18750",{"2":{"191":1}}],["18716",{"2":{"191":1}}],["18715",{"2":{"191":1}}],["18714",{"2":{"191":1}}],["18717",{"2":{"191":1}}],["18710",{"2":{"188":1,"191":1}}],["18775",{"2":{"191":1}}],["18774",{"2":{"190":1,"191":1}}],["18776",{"2":{"189":1,"191":1}}],["18745",{"2":{"199":1}}],["18749",{"2":{"188":1,"191":1}}],["18740",{"2":{"188":1,"191":1}}],["18789",{"2":{"191":1}}],["18781",{"2":{"191":1}}],["18787",{"2":{"188":1,"191":1}}],["18782",{"2":{"188":1,"191":1}}],["18791",{"2":{"191":1}}],["18796",{"2":{"188":1,"191":1}}],["18792",{"2":{"188":1,"191":1}}],["18249",{"2":{"191":1}}],["18244",{"2":{"191":1}}],["18205",{"2":{"191":1}}],["18299",{"2":{"191":1}}],["18298",{"2":{"191":1}}],["18297",{"2":{"191":1}}],["18292",{"2":{"191":1}}],["18290",{"2":{"188":1,"191":1}}],["18268",{"2":{"191":1}}],["18262",{"2":{"191":1}}],["18260",{"2":{"191":1}}],["18259",{"2":{"191":1}}],["18215",{"2":{"191":2}}],["18212",{"2":{"191":1}}],["18289",{"2":{"191":1}}],["18279",{"2":{"191":1}}],["18274",{"2":{"191":1}}],["18271",{"2":{"188":1,"191":1}}],["18234",{"2":{"191":1}}],["18235",{"2":{"191":1}}],["18230",{"2":{"191":1}}],["18236",{"2":{"189":1,"191":1}}],["18224",{"2":{"191":1}}],["18228",{"2":{"191":1}}],["18222",{"2":{"191":1}}],["18654",{"2":{"191":1}}],["18650",{"2":{"191":1}}],["18651",{"2":{"191":1}}],["18659",{"2":{"190":1,"191":1}}],["18617",{"2":{"191":1}}],["18613",{"2":{"191":1}}],["18618",{"2":{"191":1}}],["18615",{"2":{"191":1}}],["18692",{"2":{"191":1}}],["18693",{"2":{"191":1}}],["18690",{"2":{"191":1}}],["18687",{"2":{"191":1}}],["18689",{"2":{"191":1}}],["18683",{"2":{"188":1,"191":1}}],["18649",{"2":{"191":1}}],["18640",{"2":{"191":1}}],["18641",{"2":{"191":1}}],["18643",{"2":{"188":1,"191":1}}],["18629",{"2":{"191":1}}],["18609",{"2":{"191":1}}],["18608",{"2":{"191":1}}],["18606",{"2":{"191":1}}],["18601",{"2":{"188":1,"191":1}}],["18638",{"2":{"211":1}}],["18635",{"2":{"191":1}}],["18631",{"2":{"191":1}}],["18637",{"2":{"189":1,"191":1}}],["18634",{"2":{"188":1,"191":1}}],["18668",{"2":{"191":1}}],["18667",{"2":{"191":1}}],["18662",{"2":{"191":1}}],["18669",{"2":{"188":1,"191":1}}],["18660",{"2":{"188":1,"191":1}}],["189kbps",{"2":{"511":1,"2128":1}}],["18915",{"2":{"199":1}}],["18910",{"2":{"191":1}}],["18921f",{"2":{"1406":1}}],["18921",{"2":{"191":1}}],["18924",{"2":{"191":1}}],["18984",{"2":{"191":1}}],["18982",{"2":{"191":1}}],["1897",{"2":{"685":1}}],["18977",{"2":{"191":1}}],["18979",{"2":{"191":1}}],["18978",{"2":{"191":1}}],["18974",{"2":{"191":1}}],["18973",{"2":{"191":1}}],["18972",{"2":{"188":1,"191":1}}],["18933",{"2":{"191":1}}],["18939",{"2":{"188":1,"191":1}}],["189000",{"2":{"1136":1}}],["18908",{"2":{"191":1}}],["18901",{"2":{"189":1,"191":1}}],["18992",{"2":{"191":1}}],["18999",{"2":{"191":1}}],["18997",{"2":{"191":1}}],["18991",{"2":{"191":1}}],["18998",{"2":{"191":1}}],["18996",{"2":{"191":1}}],["1895",{"2":{"684":1}}],["18954",{"2":{"191":1}}],["18956",{"2":{"191":1}}],["18959",{"2":{"191":1}}],["18952",{"2":{"191":1}}],["18951",{"2":{"191":1}}],["18958",{"2":{"188":1,"191":1}}],["18943",{"2":{"199":1}}],["18944",{"2":{"191":1}}],["18942",{"2":{"191":1}}],["18940",{"2":{"191":1,"199":1}}],["18949",{"2":{"191":1}}],["18948",{"2":{"191":1}}],["18947",{"2":{"191":1}}],["18946",{"2":{"191":1}}],["18965",{"2":{"191":1}}],["18969",{"2":{"191":1}}],["18961",{"2":{"188":1,"191":1}}],["18964",{"2":{"188":1,"191":1}}],["18963",{"2":{"188":1,"191":1}}],["18962",{"2":{"188":1,"191":1}}],["188",{"2":{"1725":1,"1946":1}}],["18822",{"2":{"191":1}}],["18852",{"2":{"199":1}}],["18855",{"2":{"191":1}}],["18859",{"2":{"191":1}}],["18858",{"2":{"191":1}}],["18887",{"2":{"191":1}}],["18884",{"2":{"191":1}}],["18886",{"2":{"191":1}}],["18882",{"2":{"188":1,"191":1}}],["18876",{"2":{"191":1}}],["18878",{"2":{"191":1}}],["18874",{"2":{"191":1}}],["18877",{"2":{"188":1,"191":1}}],["18860",{"2":{"191":1}}],["18866",{"2":{"191":1}}],["18867",{"2":{"191":1}}],["18864",{"2":{"188":1,"191":1}}],["18811",{"2":{"191":1}}],["18804",{"2":{"191":1}}],["18806",{"2":{"191":1}}],["18803",{"2":{"191":1}}],["18800",{"2":{"188":1,"191":2}}],["18807",{"2":{"188":1,"191":1}}],["18838",{"2":{"191":1}}],["18837",{"2":{"191":1}}],["18832",{"2":{"188":1,"191":1}}],["18834",{"2":{"188":1,"191":1}}],["18890",{"2":{"199":1}}],["18898",{"2":{"188":1,"191":1}}],["18893",{"2":{"188":1,"191":1}}],["18892",{"2":{"188":1,"191":1}}],["18840",{"2":{"191":1}}],["18847",{"2":{"188":1,"191":1}}],["18844",{"2":{"188":1,"191":1}}],["18843",{"2":{"188":1,"191":1}}],["18196",{"2":{"191":1}}],["18194",{"2":{"191":1}}],["18195",{"2":{"191":1}}],["18183",{"2":{"191":1}}],["18178",{"2":{"191":1}}],["18175",{"2":{"176":1}}],["18116",{"2":{"176":1}}],["18117",{"2":{"176":1}}],["18108",{"2":{"191":1}}],["18101",{"2":{"191":1}}],["18102",{"2":{"176":1}}],["18100",{"2":{"176":1}}],["18168",{"2":{"176":1}}],["18131",{"2":{"176":1}}],["18152",{"2":{"169":1,"176":1}}],["18",{"2":{"114":1,"351":1,"729":1,"821":1,"956":1,"1405":1,"1440":1,"1578":1,"1639":3,"1724":1,"1834":3,"1857":2,"2365":3,"2380":3,"2503":1,"2588":1,"2594":3}}],["18098",{"2":{"191":1}}],["18099",{"2":{"176":1}}],["18066",{"2":{"199":1}}],["18060",{"2":{"190":1,"191":1}}],["18067",{"2":{"176":1}}],["18063",{"2":{"176":1}}],["18028",{"2":{"176":1}}],["18025",{"2":{"176":1}}],["18020",{"2":{"176":1}}],["18029",{"2":{"176":1}}],["18036",{"2":{"191":1}}],["18039",{"2":{"176":1}}],["18038",{"2":{"176":1}}],["18032",{"2":{"176":1}}],["18037",{"2":{"176":1}}],["18058",{"2":{"191":1}}],["18050",{"2":{"176":1}}],["18056",{"2":{"176":1}}],["18057",{"2":{"176":1}}],["18018",{"2":{"176":1}}],["18016",{"2":{"176":1}}],["18011",{"2":{"176":1}}],["18044",{"2":{"191":1}}],["18043",{"2":{"176":1}}],["18045",{"2":{"176":1}}],["18042",{"2":{"176":1}}],["18006",{"2":{"191":1}}],["18008",{"2":{"176":1}}],["18007",{"2":{"176":1}}],["18000",{"2":{"176":1}}],["1800",{"2":{"57":2,"211":1,"1856":1,"2617":1,"2620":1}}],["180",{"2":{"31":2,"34":2,"582":1,"985":1,"1724":1,"1816":2,"1821":3,"1822":2,"1861":2,"1872":2,"1873":2,"1915":2,"2140":2,"2143":1,"2577":1}}],["14k5",{"2":{"1091":1}}],["14",{"2":{"351":1,"635":4,"1091":1,"1405":1,"1578":1,"1639":3,"1793":2,"1832":1,"1834":3,"1857":1,"2042":1,"2118":1,"2330":1,"2332":1,"2365":3,"2371":2,"2380":3}}],["14674",{"2":{"149":1}}],["14678",{"2":{"134":1}}],["14655",{"2":{"134":1}}],["14659",{"2":{"133":1,"134":1}}],["14639",{"2":{"134":1}}],["14662",{"2":{"134":1}}],["14699",{"2":{"134":1}}],["14600",{"2":{"134":1}}],["149",{"2":{"1725":1,"1946":1}}],["14944",{"2":{"266":1}}],["14948",{"2":{"149":1}}],["14947",{"2":{"134":1}}],["14934",{"2":{"134":1}}],["14906",{"2":{"134":1}}],["14989",{"2":{"149":1}}],["14982",{"2":{"134":1}}],["14983",{"2":{"134":1}}],["14980",{"2":{"134":1}}],["14967",{"2":{"134":1}}],["14969",{"2":{"133":1,"134":1}}],["14928",{"2":{"134":1}}],["14919",{"2":{"134":1}}],["14917",{"2":{"133":1,"134":1}}],["14975",{"2":{"134":1}}],["14973",{"2":{"134":1}}],["14976",{"2":{"133":1,"134":1}}],["14972",{"2":{"133":1,"134":1}}],["14814",{"2":{"199":1}}],["14877",{"2":{"176":1}}],["14879",{"2":{"134":1}}],["14872",{"2":{"134":1}}],["14864",{"2":{"134":1}}],["14848",{"2":{"134":1}}],["14835",{"2":{"134":1}}],["14839",{"2":{"133":1,"134":1}}],["14898",{"2":{"134":1}}],["14899",{"2":{"133":1,"134":1}}],["14895",{"2":{"133":1,"134":1}}],["14894",{"2":{"133":1,"134":1}}],["14888",{"2":{"133":1,"134":1}}],["14859",{"2":{"134":1}}],["14854",{"2":{"134":1}}],["14858",{"2":{"133":1,"134":1}}],["14855",{"2":{"133":1,"134":1}}],["1471",{"2":{"1864":1}}],["14713",{"2":{"134":1}}],["14764",{"2":{"684":2}}],["14760",{"2":{"133":1,"134":1}}],["14785",{"2":{"134":1}}],["14780",{"2":{"134":1}}],["14751",{"2":{"134":1}}],["14752",{"2":{"131":1,"134":1}}],["14730",{"2":{"134":1}}],["14775",{"2":{"134":1}}],["14747",{"2":{"134":1}}],["14749",{"2":{"134":1}}],["14740",{"2":{"134":1}}],["14745",{"2":{"133":1,"134":1}}],["14743",{"2":{"133":1,"134":1}}],["14720",{"2":{"134":1}}],["14729",{"2":{"134":1}}],["14727",{"2":{"133":1,"134":1}}],["14726",{"2":{"133":1,"134":1}}],["14723",{"2":{"133":1,"134":1}}],["14243",{"2":{"149":1}}],["14248",{"2":{"134":2}}],["14261",{"2":{"134":1}}],["14252",{"2":{"134":1}}],["14235",{"2":{"134":1}}],["14231",{"2":{"133":1,"134":1}}],["14289",{"2":{"134":1}}],["14200",{"2":{"176":1}}],["14208",{"2":{"134":1}}],["14206",{"2":{"134":1}}],["14201",{"2":{"134":1}}],["14207",{"2":{"133":1,"134":1}}],["14215",{"2":{"134":1}}],["14213",{"2":{"134":1}}],["14216",{"2":{"133":1,"134":1}}],["14210",{"2":{"133":1,"134":1}}],["144",{"2":{"784":1,"917":1,"1053":1,"1724":3,"2289":1}}],["14464",{"2":{"134":1}}],["14462",{"2":{"132":1,"134":1}}],["14452",{"2":{"191":1}}],["14455",{"2":{"134":1}}],["14454",{"2":{"134":1}}],["14456",{"2":{"133":1,"134":1}}],["14442",{"2":{"134":1}}],["14420",{"2":{"176":1}}],["14421",{"2":{"134":1}}],["14422",{"2":{"130":1,"134":1}}],["14497",{"2":{"134":1}}],["14490",{"2":{"134":1}}],["14496",{"2":{"134":1}}],["14415",{"2":{"134":1}}],["14413",{"2":{"134":1}}],["14419",{"2":{"134":1}}],["14408",{"2":{"134":1}}],["14404",{"2":{"133":1,"134":1}}],["14474",{"2":{"134":1}}],["14470",{"2":{"134":1}}],["14434",{"2":{"134":1}}],["14439",{"2":{"134":2}}],["14433",{"2":{"134":1}}],["14430",{"2":{"134":1}}],["14325",{"2":{"134":1}}],["14327",{"2":{"134":1}}],["14399",{"2":{"134":1}}],["14372",{"2":{"134":1}}],["14374",{"2":{"134":1}}],["14370",{"2":{"132":1,"134":1}}],["14343",{"2":{"134":1}}],["14348",{"2":{"133":1,"134":1}}],["14389",{"2":{"134":1}}],["14380",{"2":{"133":1,"134":1}}],["14388",{"2":{"130":1,"134":1}}],["14308",{"2":{"133":1,"134":1}}],["14580",{"2":{"149":1}}],["14584",{"2":{"130":1,"134":1}}],["14590",{"2":{"134":1}}],["14591",{"2":{"131":1,"134":1}}],["14546",{"2":{"134":1}}],["14508",{"2":{"134":1}}],["14530",{"2":{"133":1,"134":1}}],["14194",{"2":{"134":1}}],["14195",{"2":{"131":1,"134":1}}],["14181",{"2":{"134":1}}],["14155",{"2":{"134":1}}],["14150",{"2":{"114":1}}],["14174",{"2":{"134":1}}],["14171",{"2":{"114":1}}],["14172",{"2":{"114":1}}],["14118",{"2":{"114":1}}],["14146",{"2":{"114":1}}],["14142",{"2":{"114":1}}],["14140",{"2":{"114":1}}],["14144",{"2":{"114":2}}],["14123",{"2":{"114":1}}],["14120",{"2":{"114":1}}],["14106",{"2":{"114":1}}],["14108",{"2":{"114":1}}],["14105",{"2":{"114":1}}],["14136",{"2":{"114":1}}],["14133",{"2":{"114":1}}],["14134",{"2":{"113":1,"114":1}}],["14132",{"2":{"113":1,"114":1}}],["140",{"2":{"2733":1}}],["14091",{"2":{"149":1}}],["14095",{"2":{"114":1}}],["14090",{"2":{"114":1}}],["14097",{"2":{"114":1}}],["14052",{"2":{"114":1}}],["14051",{"2":{"114":1}}],["14017",{"2":{"114":1}}],["14065",{"2":{"149":1}}],["14061",{"2":{"114":1}}],["14063",{"2":{"114":1}}],["14048",{"2":{"114":1}}],["14045",{"2":{"114":1}}],["14033",{"2":{"134":1}}],["14039",{"2":{"114":1}}],["14038",{"2":{"114":1}}],["14005",{"2":{"114":1}}],["14007",{"2":{"114":1}}],["14089",{"2":{"114":1}}],["14084",{"2":{"114":1}}],["14080",{"2":{"114":1}}],["14083",{"2":{"114":2}}],["14079",{"2":{"114":1}}],["14025",{"2":{"113":1,"114":1}}],["12bit",{"2":{"1401":1}}],["12x12",{"2":{"917":1}}],["12x16",{"2":{"848":1}}],["12x8",{"2":{"883":1}}],["12x4",{"2":{"624":1}}],["12",{"2":{"199":1,"266":1,"292":1,"315":2,"317":1,"350":9,"351":1,"506":3,"633":1,"635":4,"641":1,"659":1,"755":1,"824":1,"959":1,"993":1,"1027":1,"1061":1,"1239":1,"1406":1,"1440":2,"1573":1,"1578":1,"1636":1,"1639":3,"1793":3,"1834":3,"1857":1,"1945":1,"2039":1,"2042":4,"2332":1,"2365":3,"2371":3,"2380":3,"2553":1,"2575":1}}],["12674",{"2":{"114":1}}],["12670",{"2":{"114":1,"134":1}}],["12671",{"2":{"94":1}}],["12632",{"2":{"114":1}}],["12637",{"2":{"114":1}}],["12633",{"2":{"93":1}}],["12692",{"2":{"134":1}}],["12691",{"2":{"134":1}}],["12699",{"2":{"114":1}}],["12697",{"2":{"94":1}}],["12689",{"2":{"114":1}}],["12685",{"2":{"93":1}}],["12669",{"2":{"114":1}}],["12641",{"2":{"114":1}}],["12602",{"2":{"94":1}}],["12600",{"2":{"93":1}}],["12625",{"2":{"94":1}}],["12626",{"2":{"94":1}}],["12651",{"2":{"93":1}}],["12617",{"2":{"114":1}}],["12619",{"2":{"93":1}}],["12613",{"2":{"86":1}}],["1252",{"2":{"2183":1}}],["125",{"2":{"1804":1,"1855":2}}],["1250",{"2":{"1214":1,"2727":1,"2728":1}}],["12508",{"2":{"130":1,"134":1}}],["12509",{"2":{"93":1}}],["12538",{"2":{"114":1}}],["12567",{"2":{"114":1}}],["12560",{"2":{"93":1}}],["12561",{"2":{"92":1}}],["12588",{"2":{"93":1}}],["12580",{"2":{"93":1}}],["121",{"2":{"1578":1}}],["12159",{"2":{"114":1}}],["12116",{"2":{"114":1}}],["12160",{"2":{"94":1}}],["12161",{"2":{"94":1}}],["12187",{"2":{"94":1}}],["12197",{"2":{"94":1}}],["12108",{"2":{"134":1}}],["12109",{"2":{"94":1}}],["12107",{"2":{"93":1}}],["12172",{"2":{"93":1}}],["12425",{"2":{"114":1}}],["12495",{"2":{"94":1}}],["12403",{"2":{"93":1}}],["12444",{"2":{"93":1}}],["12417",{"2":{"93":1}}],["12419",{"2":{"93":1}}],["12435",{"2":{"93":1}}],["12482",{"2":{"92":1}}],["123",{"2":{"1359":1,"1578":1}}],["12315",{"2":{"114":1}}],["12314",{"2":{"114":1}}],["12317",{"2":{"93":1}}],["12386",{"2":{"114":1}}],["12327",{"2":{"94":1}}],["12342",{"2":{"93":1}}],["12361",{"2":{"93":1}}],["122",{"2":{"207":5,"1578":1}}],["12240",{"2":{"114":1}}],["12249",{"2":{"94":1}}],["12238",{"2":{"114":1}}],["12237",{"2":{"93":1}}],["12211",{"2":{"114":1}}],["12216",{"2":{"93":1}}],["12284",{"2":{"94":1}}],["12286",{"2":{"94":1}}],["12258",{"2":{"93":1}}],["12226",{"2":{"86":1}}],["129",{"2":{"1440":2}}],["129u",{"2":{"705":1}}],["12950",{"2":{"134":1}}],["12951",{"2":{"114":1}}],["12947",{"2":{"131":1,"134":2}}],["12946",{"2":{"114":1}}],["12949",{"2":{"114":1}}],["12945",{"2":{"92":1}}],["12914",{"2":{"114":1}}],["12915",{"2":{"95":1}}],["12987",{"2":{"93":1}}],["12985",{"2":{"93":1}}],["12936",{"2":{"93":1}}],["12933",{"2":{"92":1}}],["12977",{"2":{"92":1}}],["12976",{"2":{"92":1}}],["128x128",{"2":{"1811":1,"1820":3,"2573":2}}],["128x32",{"2":{"1811":2,"1820":1,"1821":1,"1822":1,"2136":1,"2142":1,"2573":1}}],["128x64",{"0":{"1820":1},"1":{"1821":1},"2":{"232":1,"1811":3,"1817":1,"1820":2,"2136":1,"2573":3}}],["128u",{"2":{"659":1}}],["128",{"2":{"633":1,"702":1,"1176":1,"1197":1,"1227":1,"1451":1,"1466":1,"1467":1,"1553":1,"1554":2,"1817":1,"1820":1,"1822":1,"1876":4,"2142":1,"2182":1,"2600":5,"2688":1,"2695":1}}],["12870",{"2":{"114":1}}],["12878",{"2":{"92":1}}],["12819",{"2":{"114":1}}],["12893",{"2":{"114":1}}],["12895",{"2":{"92":1}}],["12859",{"2":{"114":1}}],["12851",{"2":{"114":1}}],["12856",{"2":{"95":1}}],["12845",{"2":{"114":1}}],["12846",{"2":{"94":1}}],["12831",{"2":{"114":1}}],["12833",{"2":{"95":1}}],["12832",{"2":{"95":1}}],["12805",{"2":{"93":1}}],["12861",{"2":{"114":1}}],["12864",{"2":{"94":1}}],["12868",{"2":{"93":1}}],["12866",{"2":{"92":1}}],["12828",{"2":{"93":1}}],["12888",{"2":{"92":1}}],["12881",{"2":{"86":1}}],["127",{"2":{"176":1,"505":2,"1636":1,"1637":2,"1638":1,"1730":1,"1792":2,"1793":1,"1794":1,"1815":1,"1864":1,"1870":5,"1872":2,"1876":8,"1878":5,"1954":1,"2038":1,"2040":2,"2139":1,"2182":2,"2371":1}}],["12795",{"2":{"149":2}}],["12797",{"2":{"114":1}}],["12789",{"2":{"114":1}}],["12767",{"2":{"114":1}}],["12755",{"2":{"114":1}}],["12754",{"2":{"114":1}}],["12750",{"2":{"92":1}}],["12770",{"2":{"94":1}}],["12721",{"2":{"93":1}}],["12723",{"2":{"92":1}}],["120",{"2":{"1400":1,"1578":1,"1805":1,"2040":1,"2732":2,"2737":1}}],["12097",{"2":{"114":1}}],["12091",{"2":{"93":1}}],["12023",{"2":{"114":1}}],["12022",{"2":{"73":1}}],["12069",{"2":{"114":1}}],["12067",{"2":{"94":1}}],["12063",{"2":{"93":1}}],["12054",{"2":{"94":1}}],["12086",{"2":{"93":1}}],["12018",{"2":{"93":1}}],["12039",{"2":{"73":1}}],["12001",{"2":{"77":1}}],["12000",{"2":{"76":1,"1870":1}}],["120000",{"2":{"25":1}}],["1200",{"2":{"25":1,"1201":1,"1867":1}}],["11",{"0":{"1297":1},"2":{"160":1,"176":2,"191":1,"211":1,"249":1,"317":2,"350":1,"351":1,"633":1,"635":4,"790":1,"1133":1,"1405":1,"1440":1,"1578":1,"1639":3,"1793":2,"1834":3,"2042":2,"2118":1,"2130":1,"2147":1,"2155":4,"2332":1,"2347":1,"2365":3,"2371":2,"2380":3,"2533":1,"2575":1,"2596":1}}],["112",{"2":{"1440":1,"1578":1,"1725":3,"1946":3,"2688":1,"2695":1}}],["11261",{"2":{"77":1}}],["11237",{"2":{"75":1}}],["118",{"2":{"1578":1}}],["11842",{"2":{"114":1}}],["11846",{"2":{"77":1}}],["11896",{"2":{"114":1}}],["11890",{"2":{"94":1}}],["11893",{"2":{"76":1}}],["11864",{"2":{"92":1}}],["11863",{"2":{"75":1}}],["11820",{"2":{"75":1}}],["11829",{"2":{"75":1}}],["11823",{"2":{"75":1}}],["11824",{"2":{"74":1}}],["11804",{"2":{"75":1}}],["11805",{"2":{"75":1}}],["119972",{"2":{"2255":2}}],["119",{"2":{"1578":1}}],["11988",{"2":{"93":1}}],["11981",{"2":{"72":1}}],["11978",{"2":{"86":1}}],["11927",{"2":{"77":1}}],["11928",{"2":{"76":1}}],["11930",{"2":{"107":1,"114":1}}],["11935",{"2":{"93":1}}],["11936",{"2":{"76":1}}],["11938",{"2":{"74":1}}],["11907",{"2":{"76":1}}],["11905",{"2":{"76":1}}],["11966",{"2":{"75":1}}],["11943",{"2":{"75":1}}],["11940",{"2":{"75":1}}],["11913",{"2":{"74":1}}],["11912",{"2":{"74":1}}],["11000010",{"2":{"2147":1}}],["11001000",{"2":{"2147":1}}],["110",{"2":{"1578":1,"2147":1,"2732":2,"2733":2}}],["11025u",{"2":{"659":1}}],["11036",{"2":{"134":1}}],["11083",{"2":{"93":1}}],["11059",{"2":{"134":2}}],["11055",{"2":{"93":1}}],["11057",{"2":{"74":1}}],["11046",{"2":{"74":1}}],["117",{"2":{"951":1,"1440":1,"1578":1,"1945":1,"2036":1}}],["11727",{"2":{"93":1}}],["11728",{"2":{"73":1}}],["11793",{"2":{"77":1}}],["11750",{"2":{"75":1}}],["11751",{"2":{"75":1}}],["11768",{"2":{"74":1}}],["116",{"2":{"1440":5,"1578":1}}],["11621",{"2":{"77":1}}],["11620",{"2":{"77":1}}],["11615",{"2":{"77":1}}],["11617",{"2":{"77":1}}],["11646",{"2":{"77":1}}],["11630",{"2":{"77":1}}],["11637",{"2":{"75":1}}],["11607",{"2":{"77":1}}],["11600",{"2":{"73":1}}],["11689",{"2":{"77":1}}],["11688",{"2":{"76":1}}],["11687",{"2":{"74":1}}],["11672",{"2":{"75":1}}],["113",{"2":{"1578":1}}],["11350",{"2":{"74":1}}],["11307",{"2":{"74":1}}],["111",{"2":{"1578":1}}],["11151",{"2":{"114":1}}],["11154",{"2":{"74":1}}],["11123",{"2":{"77":1}}],["11111",{"2":{"77":1}}],["11108",{"2":{"76":1}}],["11101",{"2":{"76":1}}],["11165",{"2":{"75":1}}],["11168",{"2":{"75":1}}],["11162",{"2":{"73":1}}],["11195",{"2":{"72":1}}],["115",{"2":{"1436":2,"1578":1}}],["115200",{"2":{"1136":1,"1201":1,"2150":1}}],["11528",{"2":{"199":1}}],["11529",{"2":{"77":1}}],["11536",{"2":{"93":1}}],["11588",{"2":{"77":1}}],["11584",{"2":{"73":1}}],["11504",{"2":{"77":1}}],["11502",{"2":{"76":1}}],["11548",{"2":{"76":1}}],["11544",{"2":{"76":1}}],["11542",{"2":{"76":1}}],["11576",{"2":{"75":1}}],["11570",{"2":{"74":1}}],["11553",{"2":{"74":1}}],["11552",{"2":{"74":1}}],["11519",{"2":{"74":1}}],["11598",{"2":{"77":1}}],["11595",{"2":{"74":1}}],["11594",{"2":{"73":1}}],["114",{"2":{"1440":2,"1578":1,"1793":1,"2371":1}}],["11487",{"2":{"92":1}}],["11495",{"2":{"77":1}}],["11492",{"2":{"76":1}}],["11408",{"2":{"76":1}}],["11409",{"2":{"73":1}}],["11422",{"2":{"114":1}}],["11426",{"2":{"74":1}}],["11427",{"2":{"73":1}}],["11450",{"2":{"73":1}}],["11435",{"2":{"73":1}}],["11473",{"2":{"73":1}}],["11449",{"2":{"77":1}}],["11447",{"2":{"73":1}}],["11448",{"2":{"73":1}}],["11414",{"2":{"77":1}}],["11413",{"2":{"77":1}}],["11418",{"2":{"74":1}}],["11412",{"2":{"73":1}}],["11415",{"2":{"72":1}}],["1360",{"2":{"2425":1}}],["13606",{"2":{"114":1}}],["13697",{"2":{"114":1}}],["13696",{"2":{"114":1}}],["13695",{"2":{"114":1}}],["13692",{"2":{"114":1}}],["13691",{"2":{"114":1}}],["13690",{"2":{"114":1}}],["13698",{"2":{"114":1}}],["13668",{"2":{"114":1}}],["13667",{"2":{"114":1}}],["13665",{"2":{"114":1}}],["13664",{"2":{"114":1}}],["13658",{"2":{"114":1}}],["13653",{"2":{"114":1}}],["13633",{"2":{"114":1}}],["13688",{"2":{"114":1}}],["13687",{"2":{"114":1}}],["13686",{"2":{"114":1}}],["13685",{"2":{"114":1}}],["13684",{"2":{"114":1}}],["13681",{"2":{"114":1}}],["13689",{"2":{"114":1}}],["13680",{"2":{"114":1}}],["13648",{"2":{"114":1}}],["13647",{"2":{"114":1}}],["13646",{"2":{"114":1}}],["13645",{"2":{"114":1}}],["13649",{"2":{"114":1}}],["13641",{"2":{"114":1}}],["13629",{"2":{"114":1}}],["13677",{"2":{"114":2}}],["13672",{"2":{"114":1}}],["13671",{"2":{"114":1}}],["13676",{"2":{"114":1}}],["13673",{"2":{"113":1,"114":1}}],["135",{"2":{"816":1,"1416":1,"1724":1}}],["13546",{"2":{"114":1}}],["13542",{"2":{"114":1}}],["13525",{"2":{"114":1}}],["13523",{"2":{"107":1,"114":1}}],["13533",{"2":{"114":1}}],["13511",{"2":{"114":1}}],["13597",{"2":{"114":1}}],["13596",{"2":{"114":1}}],["13571",{"2":{"114":1}}],["13570",{"2":{"114":1}}],["13551",{"2":{"114":1}}],["13550",{"2":{"114":1}}],["13559",{"2":{"114":1}}],["13504",{"2":{"114":1}}],["13502",{"2":{"114":1}}],["13588",{"2":{"114":1}}],["13566",{"2":{"114":1}}],["134217728",{"2":{"2353":1}}],["13425",{"2":{"114":1}}],["13471",{"2":{"114":1}}],["13470",{"2":{"114":1}}],["13404",{"2":{"114":1}}],["13405",{"2":{"114":1}}],["13403",{"2":{"114":1}}],["13481",{"2":{"114":1}}],["13480",{"2":{"114":1}}],["13442",{"2":{"114":1}}],["13457",{"2":{"114":1}}],["13454",{"2":{"114":1}}],["13450",{"2":{"114":1}}],["13433",{"2":{"114":1}}],["13430",{"2":{"114":1}}],["13418",{"2":{"107":1,"114":1}}],["13310",{"2":{"114":1}}],["13312",{"2":{"113":1,"114":1}}],["13371",{"2":{"114":1}}],["1337",{"2":{"114":1}}],["13377",{"2":{"114":1}}],["13398",{"2":{"114":1}}],["13399",{"2":{"114":1}}],["13389",{"2":{"114":1}}],["13383",{"2":{"114":1}}],["13366",{"2":{"114":1}}],["13360",{"2":{"114":1}}],["13350",{"2":{"114":1}}],["13349",{"2":{"114":1}}],["13333",{"2":{"114":1}}],["13330",{"2":{"114":2}}],["13321",{"2":{"114":1}}],["13304",{"2":{"114":1}}],["13309",{"2":{"114":1}}],["13302",{"2":{"114":1}}],["132x162",{"2":{"2573":1,"2576":1}}],["132x64",{"2":{"1817":1}}],["132",{"2":{"2255":1}}],["13286",{"2":{"154":1,"160":1}}],["13243",{"2":{"114":1}}],["13247",{"2":{"114":1}}],["13209",{"2":{"114":1}}],["13201",{"2":{"114":1}}],["13271",{"2":{"114":1}}],["13228",{"2":{"114":1}}],["13297",{"2":{"114":1}}],["13298",{"2":{"114":1}}],["13296",{"2":{"114":1}}],["13293",{"2":{"114":1}}],["13253",{"2":{"114":1}}],["13251",{"2":{"114":1}}],["13257",{"2":{"114":1}}],["13252",{"2":{"114":1}}],["13236",{"2":{"114":1}}],["13239",{"2":{"114":1}}],["13238",{"2":{"114":1}}],["13237",{"2":{"114":1}}],["131",{"2":{"1440":1}}],["13146",{"2":{"114":1}}],["13147",{"2":{"114":1}}],["13189",{"2":{"114":1}}],["13165",{"2":{"114":1}}],["13172",{"2":{"114":1}}],["13154",{"2":{"114":1}}],["13152",{"2":{"114":1}}],["13151",{"2":{"114":1}}],["13150",{"2":{"114":1}}],["13955",{"2":{"134":1}}],["13954",{"2":{"114":1}}],["13944",{"2":{"134":1}}],["13993",{"2":{"114":1}}],["13992",{"2":{"114":1}}],["13988",{"2":{"114":1}}],["13980",{"2":{"114":1}}],["13985",{"2":{"114":1}}],["13979",{"2":{"114":1}}],["13973",{"2":{"113":1,"114":1}}],["13937",{"2":{"114":1}}],["13931",{"2":{"114":1}}],["13932",{"2":{"114":1}}],["13918",{"2":{"133":1,"134":1}}],["13913",{"2":{"114":1}}],["13912",{"2":{"114":1}}],["13902",{"2":{"134":1}}],["13900",{"2":{"114":1}}],["13908",{"2":{"114":1}}],["13905",{"2":{"114":1}}],["13901",{"2":{"114":1}}],["13968",{"2":{"114":1}}],["13926",{"2":{"114":1}}],["13920",{"2":{"114":1}}],["13927",{"2":{"113":1,"114":1}}],["13810",{"2":{"114":1}}],["13819",{"2":{"114":1}}],["13886",{"2":{"114":1}}],["13885",{"2":{"114":1}}],["13872",{"2":{"114":1}}],["13877",{"2":{"114":1}}],["13838",{"2":{"114":1}}],["13831",{"2":{"114":1}}],["13832",{"2":{"114":1}}],["13830",{"2":{"114":1}}],["13826",{"2":{"114":1}}],["13821",{"2":{"114":1}}],["13823",{"2":{"114":1}}],["13850",{"2":{"114":1}}],["13890",{"2":{"133":1,"134":1}}],["13898",{"2":{"114":1}}],["13896",{"2":{"114":1}}],["13894",{"2":{"113":1,"114":1}}],["13801",{"2":{"114":1}}],["13804",{"2":{"114":1}}],["13800",{"2":{"114":1}}],["13842",{"2":{"134":1}}],["13846",{"2":{"114":1}}],["13843",{"2":{"113":1,"114":1}}],["137000",{"2":{"1136":1}}],["13706",{"2":{"114":1}}],["137kbps",{"2":{"511":1,"2128":1}}],["13789",{"2":{"134":1}}],["13724",{"2":{"114":1}}],["13722",{"2":{"114":1}}],["13720",{"2":{"114":1}}],["13728",{"2":{"114":1}}],["13799",{"2":{"114":1}}],["1375",{"2":{"1855":1}}],["13758",{"2":{"114":1}}],["13755",{"2":{"114":1}}],["13731",{"2":{"114":1}}],["13716",{"2":{"114":1}}],["13717",{"2":{"114":1}}],["13715",{"2":{"114":1}}],["13718",{"2":{"114":1}}],["13713",{"2":{"114":1}}],["13712",{"2":{"114":1}}],["13777",{"2":{"113":1,"114":1}}],["13740",{"2":{"114":1}}],["13747",{"2":{"114":1}}],["13749",{"2":{"113":1,"114":1}}],["13748",{"2":{"113":1,"114":1}}],["130",{"2":{"1440":2,"1959":1,"2727":1,"2728":1,"2733":1}}],["13056",{"2":{"114":1}}],["13098",{"2":{"114":1}}],["13089",{"2":{"114":1}}],["13081",{"2":{"107":1,"114":1}}],["13078",{"2":{"114":1}}],["13077",{"2":{"114":1}}],["13076",{"2":{"114":1}}],["13074",{"2":{"114":1}}],["13070",{"2":{"114":1}}],["13069",{"2":{"114":1}}],["13065",{"2":{"114":1}}],["13064",{"2":{"114":1}}],["13062",{"2":{"114":1}}],["13045",{"2":{"114":1}}],["13044",{"2":{"114":1}}],["13025",{"2":{"114":1}}],["13023",{"2":{"94":1}}],["13024",{"2":{"93":1}}],["13014",{"2":{"93":1}}],["13",{"2":{"70":1,"351":1,"633":1,"635":4,"1095":1,"1134":1,"1148":1,"1405":1,"1491":1,"1578":1,"1639":3,"1793":2,"1834":3,"1857":1,"2042":2,"2332":1,"2365":3,"2371":2,"2380":3,"2598":2}}],["17915",{"2":{"199":1}}],["17911",{"2":{"176":1}}],["17962",{"2":{"190":1,"191":1}}],["17999",{"2":{"176":1}}],["17996",{"2":{"176":1}}],["17989",{"2":{"176":1}}],["17935",{"2":{"191":1}}],["17936",{"2":{"176":1}}],["17931",{"2":{"176":1}}],["17905",{"2":{"176":1}}],["17904",{"2":{"176":2}}],["17923",{"2":{"176":1}}],["17940",{"2":{"167":1,"176":1}}],["17893",{"2":{"211":1}}],["17892",{"2":{"191":1}}],["17880",{"2":{"191":1}}],["17839",{"2":{"176":1}}],["17832",{"2":{"176":1}}],["17817",{"2":{"176":1}}],["17808",{"2":{"176":1}}],["17800",{"2":{"176":1}}],["17803",{"2":{"176":1}}],["17850",{"2":{"176":1}}],["17856",{"2":{"176":1}}],["17855",{"2":{"176":1}}],["17854",{"2":{"176":1}}],["17853",{"2":{"176":1}}],["17862",{"2":{"176":1}}],["17867",{"2":{"176":1}}],["17868",{"2":{"176":1}}],["17863",{"2":{"176":1}}],["17861",{"2":{"176":1}}],["17866",{"2":{"176":1}}],["17864",{"2":{"176":1}}],["17842",{"2":{"176":1}}],["17848",{"2":{"176":1}}],["17840",{"2":{"176":1}}],["17820",{"2":{"199":1}}],["17827",{"2":{"176":1}}],["17823",{"2":{"176":1}}],["17723",{"2":{"191":1}}],["17798",{"2":{"176":1}}],["17795",{"2":{"176":1}}],["17790",{"2":{"176":1}}],["17791",{"2":{"176":1}}],["17716",{"2":{"176":1}}],["17711",{"2":{"176":1}}],["17777",{"2":{"176":1}}],["17776",{"2":{"175":1,"176":1}}],["17732",{"2":{"176":1}}],["17735",{"2":{"176":1}}],["17734",{"2":{"176":1}}],["17786",{"2":{"176":1}}],["17755",{"2":{"176":1}}],["17760",{"2":{"176":1}}],["17748",{"2":{"176":1}}],["17745",{"2":{"176":1}}],["17740",{"2":{"176":1}}],["17706",{"2":{"191":1}}],["17702",{"2":{"176":1}}],["17707",{"2":{"176":1}}],["17708",{"2":{"176":1}}],["17703",{"2":{"176":1}}],["17693",{"2":{"176":1}}],["17695",{"2":{"176":1}}],["17663",{"2":{"191":1}}],["17661",{"2":{"176":1}}],["17669",{"2":{"176":1}}],["17678",{"2":{"176":1}}],["17675",{"2":{"176":1}}],["17679",{"2":{"176":1}}],["17638",{"2":{"176":1}}],["17632",{"2":{"176":1}}],["17639",{"2":{"176":1}}],["17684",{"2":{"176":1}}],["17658",{"2":{"176":1}}],["17656",{"2":{"176":1}}],["17652",{"2":{"176":1}}],["17655",{"2":{"176":1}}],["17654",{"2":{"176":1}}],["17651",{"2":{"176":1}}],["17650",{"2":{"176":1}}],["17645",{"2":{"176":1}}],["17647",{"2":{"176":1}}],["17643",{"2":{"176":1}}],["17615",{"2":{"176":1}}],["17611",{"2":{"176":1}}],["17612",{"2":{"176":1}}],["17613",{"2":{"175":1,"176":1}}],["17601",{"2":{"176":1}}],["17607",{"2":{"176":1}}],["17603",{"2":{"176":1}}],["17602",{"2":{"176":1}}],["175ms",{"2":{"2161":2}}],["175",{"2":{"1416":1,"2161":1}}],["17588",{"2":{"199":1}}],["17584",{"2":{"176":1}}],["17534",{"2":{"176":1}}],["17533",{"2":{"176":1}}],["17593",{"2":{"176":1}}],["17595",{"2":{"176":1}}],["17522",{"2":{"176":1}}],["17549",{"2":{"176":1}}],["17545",{"2":{"176":1}}],["17540",{"2":{"176":1}}],["17559",{"2":{"176":1}}],["17557",{"2":{"176":1}}],["17554",{"2":{"176":1}}],["17501",{"2":{"176":1}}],["17507",{"2":{"176":1}}],["17506",{"2":{"176":1}}],["17579",{"2":{"176":1}}],["17578",{"2":{"176":1}}],["17512",{"2":{"176":1}}],["17519",{"2":{"176":1}}],["17517",{"2":{"176":1}}],["17516",{"2":{"176":1}}],["17514",{"2":{"176":1}}],["174",{"2":{"251":1,"1252":2}}],["17463",{"2":{"176":1}}],["17414",{"2":{"176":1}}],["17492",{"2":{"176":1}}],["17459",{"2":{"176":2}}],["17439",{"2":{"176":1}}],["17435",{"2":{"176":1}}],["17438",{"2":{"176":2}}],["17423",{"2":{"176":2}}],["17426",{"2":{"176":1}}],["17420",{"2":{"176":1}}],["17488",{"2":{"176":1}}],["17481",{"2":{"176":1}}],["17482",{"2":{"175":2,"176":1}}],["17440",{"2":{"176":1}}],["17448",{"2":{"176":1}}],["17444",{"2":{"176":1}}],["17371",{"2":{"176":1}}],["17376",{"2":{"176":1}}],["17335",{"2":{"176":1}}],["17333",{"2":{"176":1}}],["17383",{"2":{"176":1}}],["17385",{"2":{"176":1}}],["17387",{"2":{"176":1}}],["17368",{"2":{"176":1}}],["17397",{"2":{"176":1}}],["17399",{"2":{"176":1}}],["17396",{"2":{"176":1}}],["17354",{"2":{"176":1}}],["17356",{"2":{"176":1}}],["17355",{"2":{"176":1}}],["17352",{"2":{"176":1}}],["17342",{"2":{"176":1}}],["17326",{"2":{"176":1}}],["172",{"2":{"1252":2}}],["17282",{"2":{"199":1}}],["17287",{"2":{"176":1}}],["17265",{"2":{"176":1}}],["17263",{"2":{"176":1}}],["17234",{"2":{"176":1}}],["17232",{"2":{"176":1}}],["17231",{"2":{"176":1}}],["17210",{"2":{"176":1}}],["17295",{"2":{"176":1}}],["17275",{"2":{"176":1}}],["17272",{"2":{"176":1}}],["17271",{"2":{"176":1}}],["17258",{"2":{"176":1}}],["17257",{"2":{"176":1}}],["17256",{"2":{"176":1}}],["17229",{"2":{"176":1}}],["17228",{"2":{"176":1}}],["17222",{"2":{"176":1}}],["170",{"2":{"2040":1}}],["17007",{"2":{"199":1}}],["17046",{"2":{"176":1}}],["17099",{"2":{"176":1}}],["17091",{"2":{"176":1}}],["17095",{"2":{"160":1}}],["17065",{"2":{"176":1}}],["17028",{"2":{"199":1}}],["17020",{"2":{"176":1}}],["17025",{"2":{"160":1}}],["17024",{"2":{"160":1}}],["17037",{"2":{"156":1,"160":1}}],["17189",{"2":{"191":1}}],["17184",{"2":{"176":1}}],["17129",{"2":{"191":1}}],["17174",{"2":{"176":1}}],["17178",{"2":{"176":1}}],["17176",{"2":{"175":1,"176":1}}],["17143",{"2":{"176":1}}],["17142",{"2":{"176":1}}],["17114",{"2":{"176":1}}],["17111",{"2":{"175":1,"176":1}}],["17156",{"2":{"160":1}}],["17150",{"2":{"160":1}}],["17136",{"2":{"160":1}}],["17133",{"2":{"160":1}}],["17104",{"2":{"160":1}}],["17106",{"2":{"160":1}}],["17",{"2":{"55":2,"111":2,"340":1,"351":1,"1405":1,"1440":1,"1578":1,"1639":3,"1834":3,"1857":1,"2035":2,"2299":2,"2365":3,"2380":3,"2614":2,"2694":2,"2746":1}}],["10glbprf",{"2":{"2147":1}}],["10kohm",{"2":{"2120":1}}],["10ms",{"2":{"1863":1,"2728":1}}],["10µf",{"2":{"1589":1}}],["103",{"2":{"1578":1}}],["10388",{"2":{"63":1}}],["10bits",{"2":{"641":1}}],["10bit",{"2":{"641":1}}],["109",{"2":{"1578":1}}],["10904",{"2":{"114":1}}],["10997",{"2":{"74":1}}],["10976",{"2":{"77":1}}],["10973",{"2":{"72":1}}],["10974",{"2":{"65":1}}],["10972",{"2":{"65":1}}],["106",{"2":{"1578":1}}],["10638",{"2":{"65":1}}],["10622",{"2":{"63":1}}],["108",{"2":{"1440":1,"1578":1}}],["10817",{"2":{"76":1}}],["10894",{"2":{"75":1}}],["10807",{"2":{"74":1}}],["10800",{"2":{"62":1}}],["10840",{"2":{"65":1}}],["10824",{"2":{"65":1}}],["10837",{"2":{"64":1}}],["104",{"2":{"1440":2,"1578":1}}],["10419",{"2":{"92":1}}],["10418",{"2":{"77":1}}],["10417",{"2":{"65":1}}],["10400",{"2":{"74":1}}],["10437",{"2":{"73":1}}],["10438",{"2":{"65":1}}],["10439",{"2":{"63":1}}],["10420",{"2":{"65":1}}],["10491",{"2":{"64":1}}],["107",{"2":{"1578":1}}],["10730",{"2":{"74":1}}],["10735",{"2":{"64":1}}],["10767",{"2":{"65":1}}],["10716",{"2":{"65":1}}],["10750",{"2":{"64":1}}],["10706",{"2":{"63":1}}],["105",{"2":{"1440":1,"1578":1}}],["10533",{"2":{"114":1}}],["10530",{"2":{"65":1}}],["10528",{"2":{"72":1}}],["10524",{"2":{"64":1}}],["10563",{"2":{"65":1}}],["10549",{"2":{"63":1}}],["102",{"2":{"1578":1,"1793":1,"2371":1}}],["102559237",{"2":{"1281":1}}],["10259",{"2":{"63":1}}],["1024",{"2":{"683":1,"692":6,"694":3,"1863":1,"2353":2,"2574":1}}],["1023",{"2":{"630":1,"1857":1}}],["10231",{"2":{"65":1}}],["10214",{"2":{"65":1}}],["10206",{"2":{"65":1}}],["10204",{"2":{"63":1}}],["10260",{"2":{"63":1}}],["10",{"0":{"1297":1},"2":{"55":1,"73":1,"111":2,"114":1,"340":1,"351":1,"502":1,"511":1,"551":1,"584":1,"630":1,"633":1,"635":4,"641":3,"703":1,"707":1,"1283":1,"1328":1,"1397":1,"1405":1,"1440":1,"1451":2,"1452":1,"1559":1,"1578":4,"1636":2,"1639":3,"1793":3,"1803":3,"1804":1,"1834":3,"1857":2,"1859":1,"1868":1,"1889":2,"2040":2,"2042":1,"2128":1,"2131":1,"2155":4,"2179":1,"2254":1,"2299":1,"2330":2,"2332":3,"2339":1,"2347":1,"2365":3,"2371":3,"2380":3,"2577":1,"2694":2,"2697":2,"2728":1,"2745":1}}],["10101100",{"2":{"2147":1}}],["10101000",{"2":{"2147":1}}],["10103",{"2":{"50":1}}],["101",{"2":{"207":1,"1440":2,"1578":1,"1857":1}}],["10174",{"2":{"160":1}}],["10171",{"2":{"93":1}}],["10179",{"2":{"63":1}}],["10183",{"2":{"63":1}}],["10127",{"2":{"50":1}}],["10129",{"2":{"50":1}}],["10169",{"2":{"49":1}}],["100ms",{"2":{"2612":2}}],["100ma",{"2":{"134":1}}],["100644",{"2":{"2255":1}}],["100k",{"2":{"1287":1}}],["10088",{"2":{"62":1,"114":1}}],["1000ms",{"2":{"1375":1,"1578":1}}],["1000",{"2":{"120":1,"1354":1,"1361":1,"1375":1,"1683":1,"1804":1,"1807":2,"1867":2,"1869":1,"1883":1,"1889":2,"1910":1,"2699":1}}],["10008",{"2":{"50":1}}],["10000000",{"2":{"2148":3}}],["1000000",{"2":{"1863":1}}],["100000l",{"2":{"502":2}}],["100000",{"2":{"11":1,"704":1,"1287":1}}],["10053",{"2":{"50":1}}],["10040",{"2":{"50":1}}],["100",{"0":{"2159":1,"2166":1},"1":{"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1},"2":{"25":2,"273":1,"505":2,"511":1,"660":2,"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1,"1220":1,"1379":1,"1401":1,"1573":1,"1578":1,"1804":1,"1807":1,"1857":3,"1868":1,"1870":2,"1889":2,"2040":2,"2128":1,"2166":1,"2255":7,"2299":2,"2347":3,"2453":2,"2524":1,"2577":2,"2612":1,"2700":2}}],["16bit",{"2":{"2705":1}}],["16bpp",{"2":{"2576":3}}],["16mb",{"2":{"2593":1}}],["16mhz",{"2":{"2329":1,"2344":2}}],["16ms",{"2":{"1730":1,"1954":1}}],["16t",{"2":{"2111":1}}],["16th",{"2":{"1406":1}}],["16k",{"2":{"854":2,"888":2,"922":2,"956":2,"990":2}}],["16kb",{"2":{"486":1}}],["16x2",{"2":{"1589":1,"1604":2}}],["16x",{"2":{"1576":1,"1577":1}}],["16x12",{"2":{"1143":1}}],["16x8",{"2":{"816":1,"2577":1}}],["16x9",{"2":{"784":1}}],["16c0",{"2":{"629":3,"2345":1,"2346":2}}],["16411",{"2":{"1252":1}}],["16436",{"2":{"176":1}}],["16438",{"2":{"160":1}}],["16423",{"2":{"160":1}}],["16441",{"2":{"160":1}}],["169",{"2":{"1252":2}}],["16992",{"2":{"176":1}}],["16996",{"2":{"176":1}}],["16990",{"2":{"176":1}}],["16997",{"2":{"160":1}}],["16949",{"2":{"176":1}}],["16941",{"2":{"160":1}}],["16932",{"2":{"176":1}}],["16939",{"2":{"160":1}}],["16974",{"2":{"160":1}}],["16958",{"2":{"160":1}}],["16951",{"2":{"160":2}}],["16957",{"2":{"160":1}}],["16915",{"2":{"160":1}}],["16961",{"2":{"160":1}}],["16960",{"2":{"160":1}}],["16926",{"2":{"160":1}}],["16909",{"2":{"160":1}}],["16810",{"2":{"176":1}}],["16800",{"2":{"176":1}}],["16806",{"2":{"160":1}}],["16879",{"2":{"176":1}}],["16875",{"2":{"160":1}}],["16874",{"2":{"160":1}}],["16871",{"2":{"160":1}}],["16865",{"2":{"160":1}}],["16863",{"2":{"160":1}}],["16869",{"2":{"160":1}}],["16827",{"2":{"160":1}}],["16892",{"2":{"160":1}}],["16891",{"2":{"160":1}}],["16859",{"2":{"160":2}}],["16843",{"2":{"160":1}}],["16778",{"2":{"176":1}}],["16770",{"2":{"160":1}}],["16773",{"2":{"160":1}}],["16716",{"2":{"160":1}}],["16718",{"2":{"160":1}}],["16705",{"2":{"160":1}}],["16706",{"2":{"160":1}}],["16702",{"2":{"160":1}}],["16723",{"2":{"160":1}}],["16728",{"2":{"160":1}}],["16782",{"2":{"160":1}}],["16785",{"2":{"160":1}}],["16783",{"2":{"160":1}}],["16738",{"2":{"160":1}}],["16737",{"2":{"160":1}}],["16732",{"2":{"160":1}}],["16689",{"2":{"236":1}}],["16681",{"2":{"160":1}}],["16699",{"2":{"199":1}}],["16669",{"2":{"176":1}}],["16668",{"2":{"173":1,"176":1}}],["16667",{"2":{"160":1}}],["16620",{"2":{"160":1}}],["16621",{"2":{"160":1}}],["16617",{"2":{"160":1}}],["16614",{"2":{"160":1}}],["16611",{"2":{"160":1}}],["16630",{"2":{"160":1}}],["16637",{"2":{"160":1}}],["16635",{"2":{"160":1}}],["16640",{"2":{"160":1}}],["16649",{"2":{"160":1}}],["16647",{"2":{"160":1}}],["16600",{"2":{"160":1}}],["16584",{"2":{"176":1}}],["16588",{"2":{"160":1}}],["16597",{"2":{"160":1}}],["16596",{"2":{"160":1}}],["16593",{"2":{"160":1}}],["16559",{"2":{"160":1}}],["16523",{"2":{"160":1}}],["16525",{"2":{"160":1}}],["16505",{"2":{"160":1}}],["16516",{"2":{"160":1}}],["16518",{"2":{"160":1}}],["16561",{"2":{"160":1}}],["16543",{"2":{"160":1}}],["16303",{"2":{"1252":1}}],["16300",{"2":{"149":1}}],["16384",{"2":{"692":2}}],["16384u",{"2":{"659":1}}],["16394",{"2":{"176":1}}],["16336",{"2":{"176":1}}],["16339",{"2":{"160":1}}],["16337",{"2":{"160":1}}],["16331",{"2":{"160":1}}],["16359",{"2":{"149":1}}],["16358",{"2":{"149":1}}],["16357",{"2":{"149":1}}],["16348",{"2":{"149":1}}],["16315",{"2":{"160":1}}],["16316",{"2":{"149":1}}],["16312",{"2":{"149":1}}],["16371",{"2":{"175":2,"176":1}}],["16370",{"2":{"160":1}}],["16378",{"2":{"149":1}}],["16376",{"2":{"149":1}}],["162",{"2":{"1176":1}}],["16269",{"2":{"160":1}}],["16266",{"2":{"160":1}}],["16268",{"2":{"149":1}}],["16292",{"2":{"149":1}}],["16290",{"2":{"149":1}}],["16276",{"2":{"149":1}}],["16277",{"2":{"149":1}}],["16230",{"2":{"149":1}}],["16208",{"2":{"149":1}}],["16287",{"2":{"176":1}}],["16282",{"2":{"149":1}}],["16280",{"2":{"149":1}}],["16257",{"2":{"160":1}}],["16251",{"2":{"160":1}}],["16256",{"2":{"149":1}}],["16252",{"2":{"149":1}}],["16254",{"2":{"149":1}}],["16215",{"2":{"149":1}}],["16217",{"2":{"149":1}}],["16228",{"2":{"149":1}}],["16222",{"2":{"149":1}}],["16225",{"2":{"149":1}}],["16221",{"2":{"149":1}}],["16220",{"2":{"149":2}}],["16188",{"2":{"149":1}}],["16181",{"2":{"149":1}}],["16185",{"2":{"149":1}}],["16163",{"2":{"176":1}}],["16168",{"2":{"149":1}}],["16167",{"2":{"149":1}}],["16166",{"2":{"149":1}}],["16162",{"2":{"149":1}}],["16157",{"2":{"149":1}}],["16135",{"2":{"149":1}}],["16134",{"2":{"149":1}}],["16128",{"2":{"149":1}}],["16127",{"2":{"149":1}}],["16114",{"2":{"160":1}}],["16116",{"2":{"149":1}}],["16113",{"2":{"149":1}}],["16112",{"2":{"149":1}}],["16107",{"2":{"149":1}}],["16109",{"2":{"149":1}}],["16108",{"2":{"149":1}}],["16102",{"2":{"149":1}}],["16100",{"2":{"149":1}}],["16190",{"2":{"149":1}}],["16038",{"2":{"160":1}}],["16032",{"2":{"149":1}}],["16039",{"2":{"149":1}}],["16000",{"2":{"1870":1}}],["16000000",{"2":{"514":1}}],["1600",{"2":{"1867":2,"1870":1}}],["16004",{"2":{"160":1}}],["16001",{"2":{"149":1}}],["16007",{"2":{"149":1}}],["16002",{"2":{"149":1}}],["16095",{"2":{"160":1}}],["16099",{"2":{"149":1}}],["16096",{"2":{"149":1}}],["16091",{"2":{"149":1}}],["16084",{"2":{"160":1}}],["16086",{"2":{"160":1}}],["16089",{"2":{"149":1}}],["16082",{"2":{"149":1}}],["16081",{"2":{"149":1}}],["16080",{"2":{"149":1}}],["16087",{"2":{"149":1}}],["16076",{"2":{"188":1,"191":1}}],["16075",{"2":{"149":1}}],["16072",{"2":{"149":1}}],["16070",{"2":{"149":1}}],["16054",{"2":{"149":1}}],["16059",{"2":{"149":1}}],["16053",{"2":{"149":1}}],["16050",{"2":{"149":1}}],["16051",{"2":{"149":1}}],["16044",{"2":{"149":1}}],["16041",{"2":{"149":1}}],["16040",{"2":{"149":1}}],["16068",{"2":{"160":1}}],["16067",{"2":{"149":1}}],["16063",{"2":{"149":1}}],["1602a",{"2":{"1589":1}}],["16027",{"2":{"149":1}}],["16026",{"2":{"149":1}}],["16028",{"2":{"149":1}}],["16025",{"2":{"149":1}}],["16023",{"2":{"149":1}}],["16020",{"2":{"149":1}}],["16017",{"2":{"149":1}}],["16016",{"2":{"149":1}}],["16015",{"2":{"149":1}}],["16",{"0":{"11":1,"166":1,"1290":1},"2":{"11":2,"63":1,"134":1,"149":1,"166":2,"176":1,"236":1,"351":1,"551":1,"601":2,"635":4,"669":2,"717":1,"723":1,"851":1,"854":2,"886":1,"888":2,"891":1,"922":2,"956":2,"990":2,"1022":1,"1056":1,"1090":1,"1226":1,"1227":2,"1290":5,"1332":1,"1336":1,"1405":1,"1440":1,"1445":2,"1451":2,"1452":1,"1515":1,"1578":1,"1591":1,"1594":2,"1636":2,"1639":3,"1652":1,"1725":2,"1730":2,"1793":2,"1803":1,"1804":2,"1805":4,"1807":3,"1816":1,"1820":1,"1834":3,"1857":1,"1946":2,"1950":1,"1954":2,"2093":1,"2109":1,"2111":1,"2142":1,"2181":1,"2230":1,"2330":1,"2332":1,"2353":17,"2365":3,"2371":2,"2380":3,"2401":1,"2406":1,"2411":1,"2413":1,"2492":1,"2575":3,"2576":2,"2577":1,"2596":1,"2688":4,"2695":6,"2705":1}}],["1",{"0":{"345":1,"537":1,"2166":1,"2314":1,"2431":1,"2457":1},"2":{"10":1,"14":1,"45":3,"90":2,"102":1,"105":2,"114":5,"120":2,"134":1,"149":1,"160":1,"168":1,"169":1,"172":1,"176":1,"184":1,"191":2,"195":1,"197":2,"199":2,"201":4,"211":6,"222":1,"231":1,"236":1,"247":1,"249":3,"259":1,"266":14,"272":2,"279":1,"286":1,"292":2,"313":4,"317":3,"350":2,"453":1,"463":1,"464":1,"465":2,"473":1,"499":1,"511":2,"529":1,"530":6,"534":6,"573":1,"598":1,"616":1,"633":1,"635":22,"636":1,"639":4,"641":3,"656":1,"659":1,"661":1,"666":1,"683":1,"684":2,"690":1,"701":2,"703":1,"757":2,"786":2,"790":2,"818":2,"820":1,"821":4,"850":4,"853":2,"854":2,"885":2,"887":2,"888":2,"919":2,"921":2,"922":2,"953":3,"955":1,"956":2,"987":2,"989":1,"990":2,"1021":4,"1024":4,"1055":4,"1058":4,"1089":2,"1091":1,"1092":4,"1126":1,"1136":1,"1145":2,"1181":1,"1214":1,"1215":1,"1224":1,"1230":1,"1239":1,"1252":5,"1279":2,"1290":3,"1319":1,"1325":4,"1332":10,"1336":4,"1344":1,"1354":1,"1361":1,"1384":1,"1387":1,"1396":2,"1399":2,"1405":1,"1406":5,"1427":1,"1435":2,"1457":2,"1466":16,"1467":7,"1491":1,"1495":1,"1497":1,"1506":1,"1509":1,"1510":2,"1518":1,"1530":2,"1533":3,"1546":2,"1547":1,"1548":1,"1549":3,"1553":7,"1556":3,"1559":1,"1560":2,"1562":1,"1564":1,"1570":1,"1573":2,"1576":3,"1577":5,"1578":1,"1579":1,"1587":1,"1594":2,"1604":1,"1638":2,"1639":3,"1642":2,"1655":2,"1668":1,"1670":1,"1715":2,"1717":2,"1722":2,"1725":6,"1728":1,"1729":2,"1744":1,"1793":32,"1801":4,"1803":2,"1804":1,"1805":9,"1807":4,"1817":1,"1821":3,"1822":2,"1834":3,"1863":1,"1870":5,"1872":1,"1876":1,"1889":1,"1898":2,"1899":1,"1905":3,"1907":13,"1910":4,"1911":1,"1912":2,"1923":4,"1940":1,"1946":6,"1949":1,"1952":2,"1958":1,"1971":1,"2036":7,"2038":3,"2042":1,"2043":1,"2044":6,"2051":2,"2059":1,"2060":1,"2097":1,"2111":1,"2113":1,"2115":1,"2128":2,"2143":1,"2147":1,"2148":4,"2150":1,"2152":3,"2153":2,"2155":16,"2157":1,"2167":4,"2168":1,"2169":1,"2170":1,"2171":1,"2174":1,"2179":1,"2183":1,"2217":1,"2228":1,"2249":1,"2255":13,"2269":1,"2295":1,"2299":8,"2300":8,"2311":12,"2313":1,"2353":3,"2355":9,"2363":4,"2365":3,"2367":1,"2371":32,"2372":4,"2380":3,"2386":2,"2391":2,"2394":2,"2401":2,"2402":7,"2407":1,"2411":1,"2421":1,"2472":1,"2474":8,"2491":2,"2508":1,"2524":1,"2530":1,"2533":1,"2534":1,"2556":1,"2559":16,"2566":1,"2571":1,"2574":1,"2576":10,"2585":1,"2588":4,"2592":1,"2594":1,"2596":3,"2597":2,"2600":2,"2615":10,"2619":1,"2645":1,"2660":1,"2676":1,"2677":2,"2682":1,"2685":1,"2686":3,"2688":1,"2694":2,"2695":1,"2696":2,"2697":1,"2699":3,"2727":1,"2728":1,"2734":1,"2735":1,"2736":1,"2745":1,"2748":1,"2757":1}}],["=+",{"2":{"1417":1,"1419":1,"1428":1}}],["=>",{"2":{"196":4,"1680":4,"1857":1}}],["=helix",{"2":{"55":4}}],["=======",{"2":{"2474":2}}],["==========================",{"2":{"660":1}}],["=================================================",{"2":{"660":1}}],["============================",{"2":{"660":1}}],["=====",{"2":{"660":1}}],["==",{"2":{"13":1,"90":4,"194":1,"476":2,"502":1,"660":1,"1254":2,"1300":2,"1302":1,"1501":1,"1518":1,"1530":1,"1555":1,"1560":4,"1670":1,"1815":1,"1879":1,"1886":1,"1898":2,"1923":5,"1938":1,"1959":1,"2139":1,"2168":1,"2169":3,"2170":2,"2171":3,"2228":4,"2491":1,"2577":1,"2587":1,"2588":1,"2593":1,"2594":1,"2596":1,"2598":1,"2740":1}}],["=",{"0":{"156":1,"167":1,"195":1,"245":1},"2":{"10":1,"28":1,"49":1,"87":1,"88":3,"104":3,"118":9,"119":1,"127":3,"134":1,"166":1,"176":4,"199":1,"201":1,"202":1,"232":1,"234":7,"235":1,"247":1,"266":2,"272":2,"292":2,"350":1,"416":1,"417":1,"438":2,"465":1,"470":1,"473":1,"474":1,"475":2,"508":2,"510":2,"514":5,"516":2,"530":3,"533":1,"534":2,"557":1,"565":2,"566":3,"570":1,"588":4,"596":1,"597":1,"598":1,"631":1,"643":1,"655":1,"656":14,"660":2,"661":4,"665":1,"669":1,"681":5,"688":4,"690":1,"693":1,"700":1,"730":1,"734":2,"756":1,"760":2,"785":1,"790":2,"817":1,"824":2,"849":1,"857":2,"884":1,"891":2,"918":1,"925":2,"952":1,"959":2,"986":1,"993":2,"1020":1,"1027":2,"1054":1,"1061":2,"1088":1,"1095":2,"1124":1,"1127":2,"1130":2,"1144":1,"1148":2,"1175":1,"1196":1,"1213":1,"1217":4,"1219":1,"1220":1,"1221":1,"1222":1,"1223":1,"1245":1,"1291":1,"1303":3,"1314":1,"1329":1,"1330":1,"1332":4,"1344":4,"1347":2,"1349":1,"1359":6,"1363":2,"1375":6,"1378":1,"1383":1,"1384":1,"1385":4,"1386":1,"1390":1,"1391":2,"1393":1,"1394":1,"1396":2,"1398":1,"1401":1,"1404":1,"1405":1,"1413":1,"1439":1,"1440":1,"1446":8,"1448":2,"1455":1,"1461":1,"1462":1,"1463":1,"1464":1,"1491":2,"1493":3,"1495":1,"1500":1,"1501":1,"1508":4,"1509":2,"1510":3,"1511":14,"1518":4,"1523":3,"1528":1,"1532":1,"1534":2,"1547":1,"1548":2,"1553":1,"1555":1,"1557":1,"1559":6,"1560":1,"1570":3,"1590":1,"1594":1,"1631":1,"1635":2,"1637":1,"1638":7,"1657":1,"1663":2,"1665":7,"1666":7,"1668":11,"1675":1,"1679":1,"1686":6,"1717":1,"1718":5,"1719":1,"1724":1,"1725":3,"1728":2,"1729":5,"1730":2,"1787":1,"1792":2,"1800":1,"1807":3,"1812":1,"1813":3,"1814":1,"1815":5,"1816":1,"1821":4,"1822":4,"1825":1,"1830":2,"1833":1,"1853":1,"1855":1,"1856":1,"1857":1,"1858":1,"1862":2,"1867":1,"1868":1,"1869":1,"1870":5,"1871":1,"1878":6,"1879":7,"1880":14,"1882":7,"1883":4,"1897":1,"1898":1,"1899":3,"1904":3,"1905":4,"1906":3,"1907":13,"1916":1,"1919":1,"1923":14,"1930":1,"1933":1,"1935":1,"1938":1,"1943":1,"1945":1,"1946":3,"1949":2,"1952":5,"1954":2,"1958":7,"1959":6,"2032":3,"2040":7,"2042":6,"2044":4,"2063":4,"2068":1,"2073":1,"2105":1,"2109":1,"2121":2,"2130":7,"2137":2,"2138":1,"2139":5,"2145":2,"2146":1,"2147":5,"2148":5,"2149":2,"2150":1,"2154":1,"2155":1,"2157":1,"2161":1,"2164":4,"2166":2,"2167":4,"2168":11,"2169":11,"2170":3,"2171":7,"2172":1,"2178":1,"2181":6,"2182":5,"2225":1,"2228":13,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2245":1,"2247":1,"2249":1,"2263":1,"2264":2,"2300":3,"2305":1,"2347":1,"2355":3,"2388":1,"2394":2,"2402":6,"2406":1,"2407":1,"2408":1,"2423":1,"2513":3,"2522":1,"2530":2,"2542":1,"2565":1,"2566":2,"2573":1,"2576":11,"2577":31,"2579":3,"2581":1,"2587":6,"2588":6,"2589":6,"2590":2,"2591":2,"2594":6,"2595":6,"2596":14,"2597":6,"2598":6,"2599":6,"2600":9,"2606":2,"2612":1,"2676":1,"2677":1,"2685":1,"2689":1,"2702":9,"2704":1,"2707":1,"2728":6,"2747":2}}],["2d",{"2":{"2702":1}}],["2bpp",{"2":{"2596":2}}],["2c1219002b135937334d4e00",{"2":{"2353":1}}],["2t",{"2":{"2111":1}}],["2=4",{"2":{"1822":1}}],["2ms",{"2":{"1821":1}}],["2>",{"2":{"1677":1,"2738":1}}],["2x2",{"2":{"2311":1}}],["2x1800",{"2":{"2259":1}}],["2x",{"2":{"1576":1,"1577":1,"1863":2,"2117":2}}],["2x4",{"2":{"114":1,"211":1}}],["2v",{"2":{"1571":1}}],["2u",{"2":{"1252":2,"2619":1}}],["2kro",{"2":{"2659":1}}],["2kω",{"2":{"1126":1}}],["2k1",{"2":{"853":1,"887":1,"921":1}}],["2k",{"2":{"818":2,"820":1,"821":6,"854":2,"888":2,"922":2,"956":2,"990":2,"1021":2,"1024":6,"1055":2,"1058":6,"1089":2,"1092":6,"1863":1,"2120":1}}],["2key",{"2":{"143":2}}],["2️⃣",{"2":{"656":3}}],["2a03",{"2":{"629":2}}],["2ffb",{"2":{"629":1,"2343":1}}],["2ff9",{"2":{"629":1,"2343":1}}],["2ff4",{"2":{"629":1,"2343":1,"2450":1,"2453":2}}],["2ff3",{"2":{"629":1,"2343":1}}],["2ff0",{"2":{"629":1}}],["2fef",{"2":{"629":1}}],["23x",{"2":{"2528":1}}],["239",{"2":{"1815":1,"2139":1,"2577":9}}],["239a",{"2":{"629":3,"2344":3}}],["23954",{"2":{"277":1}}],["23945",{"2":{"277":1}}],["23999",{"2":{"277":1}}],["23967",{"2":{"277":1}}],["23963",{"2":{"277":1}}],["23987",{"2":{"277":1}}],["23985",{"2":{"277":1}}],["23983",{"2":{"277":1}}],["23981",{"2":{"277":1}}],["23980",{"2":{"277":1}}],["23923",{"2":{"277":1}}],["23925",{"2":{"277":1}}],["23924",{"2":{"277":1}}],["23917",{"2":{"277":1}}],["23911",{"2":{"277":1}}],["23979",{"2":{"277":1}}],["23975",{"2":{"277":1}}],["23901",{"2":{"277":1}}],["23857",{"2":{"277":1}}],["23818",{"2":{"277":1}}],["23896",{"2":{"277":1}}],["23894",{"2":{"277":1}}],["23883",{"2":{"277":1}}],["23885",{"2":{"277":1}}],["23881",{"2":{"277":1}}],["2370",{"2":{"375":2}}],["23709",{"2":{"266":1}}],["23796",{"2":{"277":1}}],["23793",{"2":{"266":1}}],["23792",{"2":{"266":1}}],["23790",{"2":{"266":1}}],["23782",{"2":{"277":1}}],["23789",{"2":{"266":1}}],["23788",{"2":{"266":1}}],["23787",{"2":{"266":1}}],["23786",{"2":{"266":1}}],["23785",{"2":{"266":1}}],["23784",{"2":{"266":1}}],["23783",{"2":{"266":1}}],["23781",{"2":{"266":1}}],["23780",{"2":{"266":1}}],["23779",{"2":{"266":1}}],["23778",{"2":{"266":1}}],["23774",{"2":{"266":1}}],["23773",{"2":{"266":1}}],["23772",{"2":{"266":1}}],["23771",{"2":{"266":1}}],["23770",{"2":{"266":1}}],["23765",{"2":{"277":1}}],["23769",{"2":{"266":1}}],["23768",{"2":{"266":1}}],["23767",{"2":{"266":1}}],["23764",{"2":{"266":1}}],["23763",{"2":{"266":1}}],["23762",{"2":{"266":1}}],["23760",{"2":{"266":1}}],["23759",{"2":{"266":1}}],["23758",{"2":{"266":1}}],["23757",{"2":{"266":1}}],["23754",{"2":{"266":1}}],["23751",{"2":{"266":1}}],["23750",{"2":{"266":1}}],["23749",{"2":{"266":1}}],["23747",{"2":{"266":1}}],["23746",{"2":{"266":1}}],["23745",{"2":{"266":1}}],["23719",{"2":{"266":1}}],["23716",{"2":{"266":1}}],["23714",{"2":{"266":1}}],["23712",{"2":{"266":1}}],["23726",{"2":{"266":1}}],["23266",{"2":{"266":1}}],["23264",{"2":{"266":1}}],["23222",{"2":{"266":1}}],["23221",{"2":{"266":1}}],["23206",{"2":{"266":1}}],["23202",{"2":{"266":1}}],["23292",{"2":{"266":1}}],["23299",{"2":{"266":1}}],["23294",{"2":{"266":1}}],["23293",{"2":{"266":1}}],["23297",{"2":{"266":1}}],["23289",{"2":{"266":1}}],["23288",{"2":{"266":1}}],["23287",{"2":{"266":1}}],["23286",{"2":{"266":1}}],["23285",{"2":{"266":1}}],["23277",{"2":{"266":1}}],["23276",{"2":{"266":1}}],["23273",{"2":{"266":1}}],["23259",{"2":{"266":1}}],["23246",{"2":{"266":1}}],["23248",{"2":{"266":1}}],["23247",{"2":{"266":1}}],["23236",{"2":{"266":1}}],["23217",{"2":{"266":1}}],["23642",{"2":{"277":1}}],["23692",{"2":{"277":1}}],["23694",{"2":{"266":1}}],["23697",{"2":{"266":1}}],["23691",{"2":{"266":1}}],["23685",{"2":{"266":1}}],["23668",{"2":{"266":1}}],["23663",{"2":{"266":1}}],["23630",{"2":{"277":1}}],["23635",{"2":{"266":1}}],["23633",{"2":{"266":1}}],["23627",{"2":{"266":1}}],["23624",{"2":{"266":1}}],["23622",{"2":{"266":1}}],["23616",{"2":{"266":1}}],["23614",{"2":{"266":1}}],["23612",{"2":{"266":1}}],["23609",{"2":{"266":1}}],["23607",{"2":{"266":1}}],["23606",{"2":{"266":1}}],["23601",{"2":{"266":1}}],["23673",{"2":{"266":1}}],["23650",{"2":{"277":1}}],["23655",{"2":{"266":1}}],["23652",{"2":{"266":1}}],["23658",{"2":{"266":1}}],["23653",{"2":{"266":1}}],["23657",{"2":{"266":1}}],["23656",{"2":{"266":1}}],["23598",{"2":{"266":1}}],["23599",{"2":{"266":1}}],["23593",{"2":{"266":1}}],["23591",{"2":{"266":1}}],["23590",{"2":{"266":1}}],["23589",{"2":{"266":1}}],["23588",{"2":{"266":1}}],["23585",{"2":{"266":1}}],["23576",{"2":{"266":1}}],["23573",{"2":{"266":1}}],["23569",{"2":{"266":1}}],["23567",{"2":{"266":1}}],["23566",{"2":{"266":1}}],["23565",{"2":{"266":1}}],["23564",{"2":{"266":1}}],["23562",{"2":{"266":1}}],["23557",{"2":{"266":1}}],["23556",{"2":{"266":1}}],["23547",{"2":{"266":1}}],["23542",{"2":{"266":1}}],["23541",{"2":{"266":1}}],["23540",{"2":{"266":1}}],["23534",{"2":{"266":1}}],["23533",{"2":{"266":1}}],["23532",{"2":{"266":1}}],["23530",{"2":{"266":1}}],["23520",{"2":{"277":1}}],["23529",{"2":{"266":1}}],["23525",{"2":{"266":1}}],["23524",{"2":{"266":1}}],["23522",{"2":{"266":1}}],["23516",{"2":{"266":1}}],["23515",{"2":{"266":1}}],["23514",{"2":{"266":1}}],["23512",{"2":{"266":1}}],["23511",{"2":{"266":1}}],["23488",{"2":{"266":1}}],["23486",{"2":{"266":1}}],["23462",{"2":{"266":1}}],["23461",{"2":{"266":1}}],["23460",{"2":{"266":1}}],["23463",{"2":{"266":1}}],["23453",{"2":{"266":1}}],["23452",{"2":{"266":1}}],["23455",{"2":{"266":1}}],["2341",{"2":{"629":2,"2344":2}}],["23419",{"2":{"266":1}}],["23418",{"2":{"266":1}}],["23412",{"2":{"266":1}}],["23406",{"2":{"266":1}}],["23403",{"2":{"266":1}}],["23402",{"2":{"266":1}}],["23405",{"2":{"266":1}}],["23407",{"2":{"266":1}}],["23448",{"2":{"266":1}}],["23437",{"2":{"277":1}}],["23439",{"2":{"277":1}}],["23436",{"2":{"266":1}}],["23434",{"2":{"266":1}}],["23432",{"2":{"266":1}}],["23425",{"2":{"266":1}}],["23424",{"2":{"266":1}}],["23423",{"2":{"266":1}}],["23421",{"2":{"266":1}}],["23426",{"2":{"266":1}}],["23422",{"2":{"266":1}}],["23355",{"2":{"277":1}}],["23357",{"2":{"266":1}}],["23341",{"2":{"277":1}}],["23346",{"2":{"266":1}}],["23335",{"2":{"266":1}}],["23330",{"2":{"266":1}}],["23399",{"2":{"266":1}}],["23396",{"2":{"266":1}}],["23395",{"2":{"266":1}}],["23397",{"2":{"266":1}}],["23394",{"2":{"266":1}}],["23393",{"2":{"266":1}}],["23390",{"2":{"266":1}}],["23384",{"2":{"266":1}}],["23379",{"2":{"266":1}}],["23378",{"2":{"266":1}}],["23377",{"2":{"266":1}}],["23376",{"2":{"266":1}}],["23373",{"2":{"266":1}}],["23371",{"2":{"266":1}}],["23375",{"2":{"266":1}}],["23367",{"2":{"266":1}}],["23361",{"2":{"266":1}}],["23360",{"2":{"266":1}}],["23311",{"2":{"266":1}}],["23309",{"2":{"266":1}}],["23307",{"2":{"266":1}}],["23305",{"2":{"266":1}}],["23302",{"2":{"266":1}}],["23329",{"2":{"266":1}}],["23324",{"2":{"266":1}}],["23321",{"2":{"266":1}}],["23322",{"2":{"266":1}}],["23188",{"2":{"266":1}}],["23185",{"2":{"266":1}}],["23179",{"2":{"266":1}}],["2316",{"2":{"2469":1}}],["23169",{"2":{"266":1}}],["23162",{"2":{"266":1}}],["23144",{"2":{"266":1}}],["23143",{"2":{"249":1}}],["23111",{"2":{"266":1}}],["23116",{"2":{"249":1}}],["23112",{"2":{"249":1}}],["23110",{"2":{"249":1}}],["23119",{"2":{"249":1}}],["23155",{"2":{"249":1}}],["23129",{"2":{"249":1}}],["23127",{"2":{"249":1}}],["23121",{"2":{"249":1}}],["23128",{"2":{"249":1}}],["23106",{"2":{"249":1}}],["23104",{"2":{"249":1}}],["23102",{"2":{"249":1}}],["23109",{"2":{"249":1}}],["23108",{"2":{"249":1}}],["23",{"2":{"249":1,"351":1,"556":1,"854":1,"922":1,"990":1,"1024":1,"1058":1,"1092":1,"1405":1,"1440":3,"1578":1,"1639":3,"1834":3,"1857":22,"2365":3,"2380":3,"2594":1}}],["23038",{"2":{"266":1}}],["23037",{"2":{"249":1}}],["230400",{"2":{"1136":1}}],["23048",{"2":{"249":1}}],["23047",{"2":{"249":1}}],["23049",{"2":{"249":1}}],["23097",{"2":{"277":1}}],["23091",{"2":{"277":1}}],["23096",{"2":{"249":1}}],["23095",{"2":{"249":1}}],["23094",{"2":{"249":1}}],["23092",{"2":{"249":1}}],["23093",{"2":{"249":1}}],["23084",{"2":{"249":1}}],["23083",{"2":{"249":1}}],["23081",{"2":{"249":1}}],["23085",{"2":{"249":1}}],["23076",{"2":{"266":1}}],["23077",{"2":{"249":1}}],["23074",{"2":{"249":1}}],["23073",{"2":{"249":1}}],["23063",{"2":{"249":1}}],["23067",{"2":{"249":1}}],["23029",{"2":{"249":1}}],["23000",{"2":{"249":1}}],["23002",{"2":{"249":1}}],["23055",{"2":{"266":1}}],["23059",{"2":{"249":1}}],["23056",{"2":{"249":1}}],["23058",{"2":{"249":1}}],["23052",{"2":{"249":1}}],["247",{"2":{"1815":1,"2139":1}}],["248",{"2":{"1275":1,"2263":1}}],["24lc256",{"2":{"684":2}}],["24lc128",{"2":{"684":3}}],["24lc64",{"2":{"684":3}}],["24lc32a",{"2":{"176":1,"684":3}}],["24xx",{"0":{"2291":1},"2":{"681":1,"684":1}}],["24316",{"2":{"277":1}}],["24322",{"2":{"277":1}}],["24253",{"2":{"277":1}}],["24238",{"2":{"277":1}}],["24237",{"2":{"277":1}}],["24236",{"2":{"277":1}}],["24233",{"2":{"277":1}}],["24232",{"2":{"277":1}}],["24231",{"2":{"277":1}}],["24234",{"2":{"277":1}}],["24215",{"2":{"277":1}}],["24240",{"2":{"277":1}}],["24201",{"2":{"277":1}}],["24200",{"2":{"277":1}}],["24203",{"2":{"277":1}}],["24202",{"2":{"277":1}}],["24116",{"2":{"277":1}}],["24191",{"2":{"277":1}}],["24192",{"2":{"277":1}}],["24185",{"2":{"277":1}}],["24180",{"2":{"277":1}}],["24163",{"2":{"277":1}}],["24155",{"2":{"277":1}}],["24146",{"2":{"277":1}}],["24143",{"2":{"277":1}}],["24142",{"2":{"277":1}}],["24136",{"2":{"277":1}}],["24133",{"2":{"277":1}}],["24127",{"2":{"277":1}}],["24122",{"2":{"277":1}}],["24120",{"2":{"277":1}}],["240px",{"2":{"2577":1}}],["240",{"2":{"2576":3}}],["240x80",{"2":{"2576":2}}],["240x320",{"2":{"2573":2,"2576":1,"2577":4}}],["240x240",{"2":{"2573":2,"2576":1,"2577":1}}],["24092",{"2":{"277":1}}],["24094",{"2":{"277":1}}],["24086",{"2":{"277":1}}],["24087",{"2":{"277":1}}],["24068",{"2":{"277":1}}],["24064",{"2":{"277":1}}],["24060",{"2":{"277":1}}],["24032",{"2":{"277":1}}],["24017",{"2":{"277":1}}],["24016",{"2":{"277":1}}],["24011",{"2":{"277":1}}],["24010",{"2":{"277":1}}],["24054",{"2":{"277":1}}],["24055",{"2":{"277":1}}],["24051",{"2":{"277":1}}],["24049",{"2":{"277":1}}],["24020",{"2":{"277":1}}],["2400",{"2":{"1201":1}}],["24009",{"2":{"277":1}}],["24008",{"2":{"277":1}}],["24006",{"2":{"277":1}}],["24003",{"2":{"277":1}}],["24001",{"2":{"277":1}}],["24",{"2":{"238":1,"339":1,"340":2,"351":1,"1087":1,"1440":2,"1578":1,"1639":3,"1807":1,"1820":1,"1834":3,"1857":6,"1945":1,"2147":1,"2365":3,"2380":3,"2593":1}}],["22947",{"2":{"277":1}}],["22948",{"2":{"249":1}}],["22942",{"2":{"249":1}}],["22934",{"2":{"249":1}}],["22932",{"2":{"249":1}}],["22926",{"2":{"266":1}}],["22922",{"2":{"249":1}}],["22921",{"2":{"249":1}}],["22920",{"2":{"249":1}}],["22997",{"2":{"249":1}}],["22998",{"2":{"249":1}}],["22992",{"2":{"249":1}}],["22991",{"2":{"249":1}}],["22917",{"2":{"249":1}}],["22911",{"2":{"249":1}}],["22910",{"2":{"249":1}}],["22901",{"2":{"249":1}}],["22909",{"2":{"249":1}}],["22908",{"2":{"249":1}}],["22905",{"2":{"249":1}}],["22985",{"2":{"249":1}}],["22971",{"2":{"249":1}}],["22979",{"2":{"249":1}}],["22975",{"2":{"249":1}}],["22970",{"2":{"249":1}}],["22967",{"2":{"266":1}}],["22962",{"2":{"266":1}}],["22969",{"2":{"249":1}}],["22966",{"2":{"249":1}}],["22961",{"2":{"249":1}}],["22953",{"2":{"249":1}}],["22955",{"2":{"249":1}}],["22951",{"2":{"249":1}}],["22857",{"2":{"249":1}}],["22851",{"2":{"249":1}}],["22859",{"2":{"249":1}}],["22895",{"2":{"266":1}}],["22891",{"2":{"266":1}}],["22897",{"2":{"249":1}}],["22896",{"2":{"249":1}}],["22899",{"2":{"249":1}}],["22898",{"2":{"249":1}}],["22819",{"2":{"249":1}}],["22811",{"2":{"249":1}}],["22814",{"2":{"249":1}}],["22884",{"2":{"249":1}}],["22873",{"2":{"249":1}}],["22879",{"2":{"249":1}}],["22878",{"2":{"249":1}}],["22872",{"2":{"249":1}}],["22866",{"2":{"249":1}}],["22864",{"2":{"249":1}}],["22863",{"2":{"249":1}}],["22862",{"2":{"249":1}}],["22861",{"2":{"249":1}}],["22860",{"2":{"249":1}}],["22869",{"2":{"249":1}}],["22865",{"2":{"249":1}}],["22832",{"2":{"249":1}}],["22839",{"2":{"249":1}}],["22830",{"2":{"249":1}}],["22829",{"2":{"249":1}}],["22823",{"2":{"249":1}}],["22826",{"2":{"249":1}}],["22825",{"2":{"249":1}}],["22824",{"2":{"249":1}}],["22809",{"2":{"249":1}}],["22802",{"2":{"249":1}}],["22808",{"2":{"249":1}}],["22807",{"2":{"249":1}}],["22806",{"2":{"249":1}}],["22801",{"2":{"249":1}}],["22803",{"2":{"249":1}}],["22800",{"2":{"249":1}}],["22731",{"2":{"266":1}}],["22736",{"2":{"249":1}}],["22799",{"2":{"249":1}}],["22796",{"2":{"249":1}}],["22798",{"2":{"249":1}}],["22797",{"2":{"249":1}}],["22792",{"2":{"249":1}}],["22795",{"2":{"249":1}}],["22771",{"2":{"249":1}}],["22775",{"2":{"249":1}}],["22764",{"2":{"249":1}}],["22763",{"2":{"249":1}}],["22762",{"2":{"249":1}}],["22760",{"2":{"249":1}}],["22759",{"2":{"249":1}}],["22753",{"2":{"249":1}}],["22750",{"2":{"249":1}}],["22741",{"2":{"266":1}}],["22745",{"2":{"249":1}}],["22743",{"2":{"249":1}}],["22740",{"2":{"249":1}}],["22742",{"2":{"249":1}}],["22721",{"2":{"249":1}}],["22726",{"2":{"249":1}}],["22719",{"2":{"249":1}}],["22715",{"2":{"249":1}}],["22714",{"2":{"249":1}}],["22712",{"2":{"249":1}}],["22710",{"2":{"249":1}}],["22709",{"2":{"249":1}}],["22708",{"2":{"249":1}}],["22701",{"2":{"249":1}}],["22695",{"2":{"266":1}}],["22662",{"2":{"266":1}}],["22649",{"2":{"249":1}}],["22652",{"2":{"249":1}}],["22651",{"2":{"249":1}}],["22656",{"2":{"249":1}}],["22603",{"2":{"249":1}}],["22688",{"2":{"249":1}}],["22682",{"2":{"249":1}}],["22681",{"2":{"249":1}}],["22680",{"2":{"249":1}}],["22670",{"2":{"277":1}}],["22675",{"2":{"249":1}}],["22674",{"2":{"249":1}}],["22673",{"2":{"249":1}}],["22638",{"2":{"249":1}}],["22637",{"2":{"249":1}}],["22636",{"2":{"249":1}}],["22635",{"2":{"249":1}}],["22628",{"2":{"249":1}}],["22625",{"2":{"249":1}}],["22620",{"2":{"249":1}}],["22617",{"2":{"249":1}}],["22579",{"2":{"249":1}}],["22578",{"2":{"249":1}}],["22577",{"2":{"249":1}}],["22575",{"2":{"249":1}}],["22570",{"2":{"249":1}}],["22558",{"2":{"249":1}}],["22560",{"2":{"249":1}}],["22562",{"2":{"249":1}}],["22530",{"2":{"249":1}}],["22518",{"2":{"249":1}}],["22546",{"2":{"249":1}}],["22543",{"2":{"249":1}}],["22542",{"2":{"249":1}}],["22549",{"2":{"236":1}}],["22548",{"2":{"236":1}}],["22545",{"2":{"236":1}}],["22544",{"2":{"236":1}}],["22526",{"2":{"249":1}}],["22529",{"2":{"249":1}}],["22523",{"2":{"236":1}}],["22528",{"2":{"236":1}}],["22525",{"2":{"236":1}}],["22",{"2":{"236":1,"249":1,"340":1,"351":1,"1405":1,"1578":1,"1639":3,"1834":3,"1857":4,"2365":3,"2380":3}}],["224x64",{"2":{"1950":1}}],["224",{"2":{"1725":4,"1946":4,"2688":1,"2695":1}}],["22489",{"2":{"277":1}}],["22480",{"2":{"236":1}}],["22474",{"2":{"249":1}}],["22471",{"2":{"236":1}}],["22419",{"2":{"249":1}}],["22497",{"2":{"236":1}}],["22437",{"2":{"236":1}}],["22435",{"2":{"236":1}}],["22434",{"2":{"236":1}}],["22436",{"2":{"236":1}}],["22469",{"2":{"236":1}}],["22446",{"2":{"236":1}}],["22444",{"2":{"236":1}}],["22448",{"2":{"236":1}}],["22445",{"2":{"236":1}}],["22423",{"2":{"236":1}}],["22401",{"2":{"249":1}}],["22403",{"2":{"236":1}}],["22400",{"2":{"236":1}}],["223",{"2":{"1815":1,"1817":1,"2139":1,"2141":1}}],["22396",{"2":{"1287":3}}],["22398",{"2":{"236":1}}],["22374",{"2":{"249":1}}],["22379",{"2":{"236":1}}],["22358",{"2":{"249":1}}],["22357",{"2":{"236":1}}],["22341",{"2":{"249":1}}],["22342",{"2":{"236":1}}],["22332",{"2":{"236":1}}],["22368",{"2":{"249":1}}],["22364",{"2":{"236":1}}],["22366",{"2":{"236":1}}],["22363",{"2":{"236":1}}],["22369",{"2":{"236":1}}],["22365",{"2":{"236":1}}],["22384",{"2":{"249":1}}],["22383",{"2":{"236":1}}],["22381",{"2":{"236":1}}],["22380",{"2":{"236":1}}],["22328",{"2":{"236":1}}],["22325",{"2":{"236":1}}],["22324",{"2":{"236":1}}],["22323",{"2":{"236":1}}],["22321",{"2":{"236":1}}],["22315",{"2":{"249":1}}],["22314",{"2":{"249":1}}],["22312",{"2":{"236":1}}],["22310",{"2":{"236":1}}],["22313",{"2":{"236":1}}],["22311",{"2":{"236":1}}],["22303",{"2":{"249":1}}],["22304",{"2":{"249":1}}],["22305",{"2":{"236":1}}],["22309",{"2":{"236":1}}],["22308",{"2":{"236":1}}],["22201",{"2":{"249":1}}],["22200",{"2":{"236":1}}],["22281",{"2":{"249":1}}],["22280",{"2":{"236":1}}],["22276",{"2":{"249":1}}],["22297",{"2":{"236":1}}],["22239",{"2":{"236":1}}],["22235",{"2":{"236":1}}],["22236",{"2":{"236":1}}],["22242",{"2":{"236":1}}],["22248",{"2":{"236":1}}],["22265",{"2":{"266":1}}],["22263",{"2":{"249":1}}],["22268",{"2":{"236":1}}],["22264",{"2":{"236":1}}],["22267",{"2":{"236":1}}],["22221",{"2":{"236":1}}],["22222",{"2":{"236":1}}],["22251",{"2":{"266":1}}],["22256",{"2":{"236":1}}],["22253",{"2":{"236":1}}],["22212",{"2":{"236":1}}],["22135",{"2":{"266":1}}],["22133",{"2":{"236":1}}],["22114",{"2":{"249":1}}],["22117",{"2":{"236":1}}],["22185",{"2":{"249":1}}],["22188",{"2":{"236":1}}],["22108",{"2":{"236":1}}],["22106",{"2":{"236":1}}],["22105",{"2":{"236":1}}],["22152",{"2":{"236":1}}],["22151",{"2":{"236":1}}],["22149",{"2":{"236":1}}],["22148",{"2":{"236":1}}],["22145",{"2":{"236":1}}],["22144",{"2":{"236":1}}],["22193",{"2":{"236":1}}],["22170",{"2":{"236":1}}],["22163",{"2":{"236":1}}],["22125",{"2":{"236":1}}],["22122",{"2":{"236":1}}],["22121",{"2":{"236":1}}],["22129",{"2":{"236":1}}],["22126",{"2":{"236":1}}],["22123",{"2":{"236":1}}],["220",{"2":{"2731":1,"2732":1}}],["22050u",{"2":{"659":1}}],["22021",{"2":{"236":1}}],["22025",{"2":{"236":1}}],["22082",{"2":{"249":1}}],["22089",{"2":{"236":1}}],["22088",{"2":{"236":1}}],["22087",{"2":{"236":1}}],["22085",{"2":{"236":1}}],["22084",{"2":{"236":1}}],["22068",{"2":{"236":1}}],["22041",{"2":{"236":1}}],["22049",{"2":{"236":1}}],["22034",{"2":{"236":1}}],["22013",{"2":{"236":1}}],["22011",{"2":{"236":1}}],["22010",{"2":{"236":1}}],["22017",{"2":{"236":1}}],["22091",{"2":{"249":1}}],["22099",{"2":{"236":1}}],["22090",{"2":{"236":1}}],["22072",{"2":{"236":1}}],["22073",{"2":{"236":1}}],["22074",{"2":{"236":1}}],["22071",{"2":{"236":1}}],["22009",{"2":{"236":1}}],["22008",{"2":{"236":1}}],["22007",{"2":{"236":1}}],["22006",{"2":{"236":1}}],["22004",{"2":{"236":1}}],["21944",{"2":{"249":1}}],["21948",{"2":{"236":1}}],["21926",{"2":{"236":1}}],["21929",{"2":{"236":1}}],["21939",{"2":{"236":2}}],["21938",{"2":{"236":1}}],["21996",{"2":{"236":1}}],["21995",{"2":{"236":1}}],["21994",{"2":{"236":1}}],["21993",{"2":{"236":1}}],["21991",{"2":{"236":1}}],["21981",{"2":{"236":1}}],["21986",{"2":{"236":1}}],["21975",{"2":{"236":1}}],["21979",{"2":{"236":1}}],["21978",{"2":{"236":1}}],["21977",{"2":{"236":1}}],["21966",{"2":{"236":1}}],["21964",{"2":{"236":1}}],["21960",{"2":{"236":1}}],["21918",{"2":{"236":1}}],["21909",{"2":{"236":1}}],["21906",{"2":{"236":1}}],["21908",{"2":{"236":1}}],["21905",{"2":{"236":1}}],["21904",{"2":{"236":1}}],["21903",{"2":{"236":1}}],["21883",{"2":{"249":1}}],["21825",{"2":{"236":1}}],["21827",{"2":{"222":1}}],["21897",{"2":{"236":1}}],["21898",{"2":{"236":1}}],["21892",{"2":{"236":1}}],["21891",{"2":{"236":1}}],["21890",{"2":{"236":1}}],["21879",{"2":{"236":1}}],["21874",{"2":{"236":1}}],["21878",{"2":{"236":1}}],["21875",{"2":{"236":1}}],["21866",{"2":{"236":1}}],["21865",{"2":{"236":1}}],["21861",{"2":{"236":1}}],["21859",{"2":{"236":1}}],["21804",{"2":{"236":1}}],["21800",{"2":{"222":1}}],["21842",{"2":{"222":1}}],["21830",{"2":{"222":1}}],["21817",{"2":{"222":1}}],["21815",{"2":{"222":1}}],["21775",{"2":{"249":1}}],["21770",{"2":{"249":1}}],["21777",{"2":{"249":1}}],["21773",{"2":{"222":1}}],["21721",{"2":{"249":1}}],["21727",{"2":{"222":1}}],["21767",{"2":{"236":1}}],["21744",{"2":{"236":1}}],["21740",{"2":{"236":1}}],["21792",{"2":{"222":1}}],["21757",{"2":{"222":1}}],["21751",{"2":{"222":1}}],["21717",{"2":{"236":1}}],["21711",{"2":{"236":1}}],["21718",{"2":{"222":1}}],["21714",{"2":{"222":1}}],["21710",{"2":{"222":1}}],["21704",{"2":{"222":1}}],["21709",{"2":{"222":1}}],["21708",{"2":{"222":1}}],["21703",{"2":{"222":1}}],["216",{"2":{"664":1,"2575":1}}],["21695",{"2":{"266":1}}],["21671",{"2":{"236":1}}],["21676",{"2":{"222":1}}],["21687",{"2":{"249":1}}],["21684",{"2":{"236":1}}],["21688",{"2":{"236":1}}],["21682",{"2":{"222":1}}],["21667",{"2":{"236":1}}],["21662",{"2":{"236":1}}],["21664",{"2":{"236":1}}],["21663",{"2":{"222":1}}],["21661",{"2":{"222":1}}],["21656",{"2":{"266":1}}],["21654",{"2":{"236":1}}],["21659",{"2":{"222":1}}],["21653",{"2":{"222":1}}],["21658",{"2":{"222":1}}],["21651",{"2":{"222":1}}],["21642",{"2":{"236":1}}],["21645",{"2":{"222":1}}],["21644",{"2":{"222":1}}],["21640",{"2":{"222":1}}],["21636",{"2":{"222":1}}],["21635",{"2":{"222":1}}],["21630",{"2":{"222":1}}],["21623",{"2":{"249":1}}],["21626",{"2":{"222":1}}],["21625",{"2":{"222":1}}],["21624",{"2":{"222":1}}],["21611",{"2":{"236":1}}],["21614",{"2":{"222":1}}],["21612",{"2":{"222":1}}],["21613",{"2":{"222":1}}],["21576",{"2":{"236":1}}],["21574",{"2":{"236":1}}],["21579",{"2":{"222":1}}],["21572",{"2":{"222":1}}],["21548",{"2":{"249":1}}],["21543",{"2":{"222":1}}],["21540",{"2":{"222":1}}],["21569",{"2":{"222":1}}],["21567",{"2":{"222":1}}],["21526",{"2":{"222":1}}],["21523",{"2":{"222":1}}],["21592",{"2":{"222":1}}],["21596",{"2":{"222":1}}],["21594",{"2":{"222":1}}],["21591",{"2":{"222":1}}],["21583",{"2":{"236":1}}],["21589",{"2":{"222":1}}],["21588",{"2":{"222":1}}],["21580",{"2":{"222":1}}],["21554",{"2":{"222":1}}],["21553",{"2":{"222":1}}],["21558",{"2":{"222":1}}],["21551",{"2":{"222":1}}],["21519",{"2":{"222":1}}],["21517",{"2":{"222":1}}],["21514",{"2":{"222":1}}],["21507",{"2":{"222":1}}],["21410",{"2":{"266":1}}],["21456",{"2":{"249":1}}],["21450",{"2":{"236":1}}],["21454",{"2":{"222":1}}],["21402",{"2":{"236":1}}],["21405",{"2":{"222":1}}],["21448",{"2":{"249":1}}],["21447",{"2":{"222":1}}],["21444",{"2":{"222":1}}],["21467",{"2":{"236":1}}],["21468",{"2":{"222":1}}],["21465",{"2":{"222":1}}],["21494",{"2":{"236":1}}],["21497",{"2":{"222":1}}],["21495",{"2":{"222":1}}],["21498",{"2":{"222":1}}],["21496",{"2":{"222":2}}],["21493",{"2":{"222":1}}],["21489",{"2":{"222":1}}],["21484",{"2":{"222":1}}],["21482",{"2":{"222":1}}],["21486",{"2":{"222":1}}],["21485",{"2":{"222":1}}],["21480",{"2":{"222":1}}],["21476",{"2":{"222":1}}],["21473",{"2":{"222":1}}],["21472",{"2":{"222":1}}],["21435",{"2":{"222":1}}],["21432",{"2":{"222":1}}],["21436",{"2":{"222":1}}],["21434",{"2":{"222":1}}],["21422",{"2":{"222":1}}],["21427",{"2":{"222":1}}],["21424",{"2":{"222":1}}],["213",{"2":{"1281":1}}],["21398",{"2":{"249":1}}],["21391",{"2":{"222":1}}],["21345",{"2":{"222":1}}],["21343",{"2":{"222":1}}],["21307",{"2":{"222":1}}],["21302",{"2":{"222":1}}],["21380",{"2":{"236":1}}],["21389",{"2":{"222":1}}],["21384",{"2":{"222":1}}],["21382",{"2":{"222":1}}],["21370",{"2":{"222":1}}],["21364",{"2":{"236":1}}],["21365",{"2":{"222":1}}],["21363",{"2":{"222":1}}],["21360",{"2":{"222":1}}],["21366",{"2":{"222":1}}],["21339",{"2":{"222":1}}],["21337",{"2":{"222":1}}],["21332",{"2":{"222":1}}],["21324",{"2":{"222":1}}],["21325",{"2":{"222":1}}],["21322",{"2":{"222":1}}],["21320",{"2":{"222":1}}],["21354",{"2":{"222":1}}],["21353",{"2":{"222":1}}],["21352",{"2":{"222":1}}],["21206",{"2":{"222":1}}],["21205",{"2":{"222":1}}],["21298",{"2":{"222":1}}],["21299",{"2":{"222":1}}],["21296",{"2":{"222":1}}],["21292",{"2":{"222":1}}],["21293",{"2":{"222":1}}],["21287",{"2":{"222":1}}],["21284",{"2":{"222":1}}],["21281",{"2":{"222":1}}],["21273",{"2":{"249":1}}],["21272",{"2":{"222":1}}],["21278",{"2":{"222":1}}],["21271",{"2":{"222":1}}],["21260",{"2":{"222":1}}],["21248",{"2":{"222":1}}],["21240",{"2":{"222":1}}],["21247",{"2":{"222":1}}],["21237",{"2":{"222":1}}],["21234",{"2":{"222":1}}],["21217",{"2":{"222":1}}],["21124",{"2":{"249":1}}],["21174",{"2":{"236":1}}],["21171",{"2":{"236":1}}],["21176",{"2":{"222":1}}],["21190",{"2":{"222":1}}],["21144",{"2":{"222":1}}],["21169",{"2":{"222":1}}],["21164",{"2":{"222":1}}],["21157",{"2":{"222":1}}],["21154",{"2":{"222":1}}],["21151",{"2":{"222":1}}],["21139",{"2":{"222":1}}],["21135",{"2":{"222":1}}],["21134",{"2":{"222":1}}],["21113",{"2":{"222":1}}],["21110",{"2":{"222":1}}],["21116",{"2":{"222":1}}],["21115",{"2":{"222":1}}],["21109",{"2":{"222":1}}],["21108",{"2":{"222":1}}],["21107",{"2":{"222":1}}],["210",{"2":{"2731":2,"2732":2,"2733":1}}],["21060",{"2":{"236":1}}],["21079",{"2":{"222":1}}],["21072",{"2":{"222":1}}],["21096",{"2":{"249":1}}],["21095",{"2":{"222":1}}],["21094",{"2":{"222":1}}],["21092",{"2":{"222":1}}],["21054",{"2":{"222":1}}],["21056",{"2":{"222":1}}],["21046",{"2":{"222":1}}],["21044",{"2":{"211":1}}],["21015",{"2":{"222":1}}],["21013",{"2":{"211":1}}],["21086",{"2":{"222":1}}],["21033",{"2":{"211":1}}],["21032",{"2":{"211":1}}],["21005",{"2":{"211":1}}],["21007",{"2":{"211":1}}],["21002",{"2":{"211":1}}],["21029",{"2":{"211":1}}],["21",{"2":{"160":1,"176":2,"191":1,"211":1,"249":1,"315":2,"351":1,"1133":1,"1405":1,"1578":1,"1639":3,"1834":3,"1857":3,"2365":3,"2380":3}}],["25mhz",{"2":{"2521":1}}],["254",{"2":{"1815":1,"2139":1}}],["253",{"2":{"1815":1,"2139":1}}],["251",{"2":{"1815":1,"2139":1}}],["25k",{"2":{"1441":1}}],["25keys",{"2":{"143":5,"149":1}}],["250",{"2":{"820":2,"1283":1,"1683":1,"1869":1,"1889":1}}],["25xx",{"2":{"681":1,"685":1}}],["255",{"2":{"582":2,"667":1,"822":1,"855":2,"889":2,"923":2,"957":2,"991":2,"1025":2,"1059":2,"1093":2,"1217":4,"1446":3,"1457":2,"1725":1,"1730":1,"1762":1,"1768":1,"1770":1,"1772":1,"1807":1,"1817":2,"1946":1,"1954":3,"1959":9,"1989":1,"1995":1,"2001":1,"2007":1,"2009":1,"2011":1,"2013":3,"2015":3,"2035":2,"2038":3,"2040":1,"2051":9,"2054":2,"2055":2,"2096":1,"2113":1,"2141":1,"2227":2,"2577":20,"2596":1,"2597":3,"2677":2,"2688":2,"2694":3,"2695":3}}],["25u×2uh",{"2":{"2686":1}}],["25u",{"2":{"259":1,"2619":1}}],["25",{"0":{"237":1,"267":1},"1":{"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1},"2":{"265":1,"266":1,"338":2,"340":1,"351":3,"506":1,"888":1,"1091":1,"1405":1,"1440":1,"1578":1,"1639":3,"1793":1,"1834":3,"1857":3,"1860":2,"1889":1,"1950":1,"2040":1,"2226":1,"2269":3,"2365":3,"2371":1,"2380":3,"2587":1,"2611":1,"2686":2}}],["256kb",{"2":{"2528":1}}],["256u",{"2":{"659":2}}],["256",{"2":{"46":1,"694":1,"1227":1,"2574":2,"2575":4,"2577":1,"2578":1,"2596":1}}],["26356",{"2":{"2469":1}}],["266",{"2":{"1298":1}}],["26000",{"2":{"1136":1}}],["26k7",{"2":{"853":1,"887":1,"921":1}}],["26kbps",{"2":{"511":1,"2128":1}}],["26",{"0":{"135":1,"177":1,"192":1,"223":1,"250":1},"1":{"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1},"2":{"170":1,"317":2,"338":1,"351":6,"853":1,"887":1,"921":1,"1405":1,"1440":1,"1578":1,"1639":3,"1834":3,"1857":3,"2365":3,"2380":3,"2611":1}}],["27312",{"2":{"2425":1}}],["275ms",{"2":{"2171":1}}],["275",{"2":{"2171":1}}],["270",{"2":{"1821":1,"1822":1,"1861":2,"1872":2,"1873":2,"1915":2,"2577":1}}],["27749e1",{"2":{"73":1}}],["27",{"0":{"66":1,"115":1,"161":1,"212":1},"1":{"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1},"2":{"88":1,"104":1,"127":1,"170":1,"340":2,"351":4,"1405":1,"1578":1,"1639":3,"1834":3,"1857":1,"2365":3,"2380":3}}],["282",{"2":{"1857":2}}],["285",{"2":{"1637":2,"2588":2}}],["28672",{"2":{"1287":2,"2425":1,"2469":1}}],["280",{"2":{"1214":1}}],["28e9",{"2":{"629":1}}],["28",{"0":{"52":1,"96":1,"150":1,"200":1},"1":{"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1},"2":{"55":1,"88":1,"104":1,"127":1,"351":4,"1405":1,"1578":1,"1639":3,"1834":3,"1857":2,"2365":3,"2380":3}}],["2",{"0":{"344":1,"346":1,"538":1,"1289":1,"1809":1,"1902":1,"1910":1,"2167":1,"2276":1,"2315":1,"2333":1,"2432":1,"2458":1,"2692":1},"1":{"1903":1,"1904":1,"1905":1,"1906":1,"1907":1,"1908":1,"1909":1,"1910":1,"1911":1,"1912":1,"1913":1,"1914":1,"1915":1,"1916":1,"1917":1,"2334":1,"2459":1,"2460":1,"2461":1,"2462":1,"2463":1,"2464":1,"2465":1,"2466":1,"2467":1},"2":{"37":2,"45":3,"49":1,"69":1,"114":7,"120":2,"133":2,"134":3,"175":1,"176":4,"188":1,"191":5,"201":3,"211":7,"222":2,"236":4,"249":2,"266":12,"272":2,"279":1,"292":1,"299":4,"313":3,"317":1,"345":1,"346":1,"350":5,"375":1,"448":1,"459":1,"473":1,"487":2,"491":1,"505":2,"511":1,"522":1,"530":2,"532":1,"534":6,"540":1,"570":1,"624":1,"629":1,"633":1,"635":21,"636":1,"639":2,"641":2,"656":2,"659":2,"660":1,"666":1,"684":1,"685":1,"689":1,"690":1,"691":2,"757":2,"786":2,"790":1,"818":2,"820":1,"821":4,"850":4,"853":2,"854":2,"885":2,"887":2,"888":2,"919":2,"921":2,"922":2,"953":2,"956":2,"987":2,"990":2,"1021":4,"1024":4,"1055":4,"1058":4,"1089":2,"1092":4,"1127":1,"1130":1,"1134":1,"1136":1,"1145":2,"1181":2,"1227":1,"1230":3,"1234":2,"1252":2,"1279":1,"1295":1,"1319":1,"1335":1,"1354":1,"1380":1,"1383":1,"1384":1,"1398":1,"1405":1,"1416":1,"1448":1,"1451":1,"1469":1,"1491":1,"1496":1,"1497":1,"1530":2,"1547":1,"1549":1,"1553":5,"1556":1,"1557":1,"1558":1,"1559":1,"1562":1,"1571":1,"1575":1,"1576":2,"1577":6,"1578":1,"1591":1,"1594":2,"1639":3,"1686":3,"1718":2,"1722":2,"1725":1,"1729":1,"1788":1,"1793":32,"1801":4,"1805":4,"1807":1,"1809":1,"1819":1,"1821":3,"1822":1,"1834":3,"1857":2,"1863":1,"1870":1,"1875":1,"1898":5,"1902":2,"1910":3,"1912":3,"1939":3,"1940":1,"1946":1,"1952":1,"1958":1,"1959":1,"2036":6,"2038":2,"2042":4,"2043":1,"2044":1,"2051":2,"2059":1,"2060":1,"2095":1,"2111":2,"2120":2,"2128":1,"2133":2,"2148":2,"2152":1,"2153":3,"2155":19,"2167":5,"2169":1,"2170":2,"2171":1,"2174":1,"2235":1,"2242":1,"2262":1,"2269":3,"2289":2,"2295":1,"2299":6,"2300":6,"2305":1,"2333":2,"2352":1,"2355":9,"2363":4,"2365":3,"2371":32,"2372":4,"2380":3,"2386":2,"2391":2,"2394":2,"2401":2,"2402":4,"2404":1,"2407":1,"2430":1,"2436":1,"2472":1,"2491":1,"2513":1,"2530":2,"2559":16,"2566":1,"2570":2,"2575":2,"2585":1,"2592":1,"2596":2,"2615":16,"2640":1,"2645":1,"2682":1,"2686":1,"2688":3,"2689":1,"2692":6,"2694":1,"2695":3,"2697":1,"2728":2,"2734":7,"2735":9,"2736":5,"2738":3}}],["290",{"2":{"2588":2}}],["295",{"2":{"2092":1}}],["294",{"2":{"2092":1}}],["29k",{"2":{"953":1,"955":2,"987":1,"989":2,"1089":1,"1091":2}}],["29",{"0":{"9":1,"39":1,"78":1},"1":{"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1},"2":{"88":1,"104":1,"127":1,"351":3,"955":1,"989":1,"1091":1,"1405":1,"1578":1,"1639":3,"1834":3,"1857":2,"2365":3,"2380":3,"2401":1,"2402":4}}],["20x4",{"2":{"1589":1}}],["20kbps",{"2":{"511":1,"2128":1}}],["209",{"2":{"251":1}}],["20996",{"2":{"222":1}}],["20992",{"2":{"222":1}}],["20998",{"2":{"211":1}}],["20981",{"2":{"211":1}}],["20949",{"2":{"211":1}}],["20962",{"2":{"211":1}}],["20960",{"2":{"211":1}}],["20969",{"2":{"211":1}}],["20953",{"2":{"236":1}}],["20958",{"2":{"211":1}}],["20957",{"2":{"211":1}}],["20956",{"2":{"211":1}}],["20931",{"2":{"211":1}}],["20932",{"2":{"211":1}}],["20930",{"2":{"211":1}}],["20924",{"2":{"211":1}}],["20923",{"2":{"211":1}}],["20929",{"2":{"211":1}}],["20928",{"2":{"211":1}}],["20927",{"2":{"211":1}}],["20926",{"2":{"211":1}}],["20921",{"2":{"211":1}}],["20920",{"2":{"211":1}}],["20915",{"2":{"211":1}}],["20919",{"2":{"211":1}}],["20918",{"2":{"211":1}}],["20917",{"2":{"211":1}}],["20913",{"2":{"211":1}}],["20912",{"2":{"211":1}}],["20908",{"2":{"211":1}}],["20907",{"2":{"211":1}}],["20906",{"2":{"211":1}}],["20901",{"2":{"211":1}}],["20900",{"2":{"211":1}}],["20799",{"2":{"211":1}}],["20791",{"2":{"211":1}}],["20790",{"2":{"211":1}}],["20789",{"2":{"211":1}}],["20788",{"2":{"211":1}}],["20787",{"2":{"211":1}}],["20786",{"2":{"211":1}}],["20785",{"2":{"211":1}}],["20784",{"2":{"211":1}}],["20783",{"2":{"211":1}}],["20782",{"2":{"211":1}}],["20781",{"2":{"211":1}}],["20779",{"2":{"211":1}}],["20778",{"2":{"211":1}}],["20777",{"2":{"211":1}}],["20776",{"2":{"211":1}}],["20775",{"2":{"211":1}}],["20774",{"2":{"211":1}}],["20773",{"2":{"211":1}}],["20770",{"2":{"211":1}}],["20761",{"2":{"222":1}}],["20765",{"2":{"211":1}}],["20764",{"2":{"211":1}}],["20763",{"2":{"211":1}}],["20756",{"2":{"211":1}}],["20755",{"2":{"211":1}}],["20754",{"2":{"211":1}}],["20753",{"2":{"211":1}}],["20752",{"2":{"211":1}}],["20751",{"2":{"211":1}}],["20750",{"2":{"211":1}}],["20749",{"2":{"211":1}}],["20748",{"2":{"211":1}}],["20747",{"2":{"211":1}}],["20746",{"2":{"211":1}}],["20745",{"2":{"211":1}}],["20744",{"2":{"211":1}}],["20743",{"2":{"211":1}}],["20742",{"2":{"211":1}}],["20741",{"2":{"211":1}}],["20740",{"2":{"211":1}}],["20732",{"2":{"236":1}}],["20733",{"2":{"211":1}}],["20739",{"2":{"211":1}}],["20738",{"2":{"211":1}}],["20737",{"2":{"211":1}}],["20736",{"2":{"211":1}}],["20735",{"2":{"211":1}}],["20731",{"2":{"211":1}}],["20734",{"2":{"211":1}}],["20723",{"2":{"211":1}}],["20728",{"2":{"211":1}}],["20727",{"2":{"211":1}}],["20726",{"2":{"211":1}}],["20725",{"2":{"211":1}}],["20724",{"2":{"211":1}}],["20722",{"2":{"211":1}}],["20720",{"2":{"211":1}}],["20719",{"2":{"211":1}}],["20718",{"2":{"211":1}}],["20717",{"2":{"211":1}}],["20716",{"2":{"211":1}}],["20715",{"2":{"211":1}}],["20714",{"2":{"211":1}}],["20713",{"2":{"211":1}}],["20712",{"2":{"211":1}}],["20711",{"2":{"211":1}}],["20710",{"2":{"211":1}}],["20708",{"2":{"211":1}}],["20706",{"2":{"211":1}}],["20703",{"2":{"211":1}}],["20899",{"2":{"211":1}}],["20895",{"2":{"211":1}}],["20893",{"2":{"211":1}}],["20892",{"2":{"211":1}}],["20891",{"2":{"211":1}}],["20897",{"2":{"211":1}}],["20889",{"2":{"211":1}}],["20888",{"2":{"211":1}}],["20887",{"2":{"211":1}}],["20886",{"2":{"211":1}}],["20885",{"2":{"211":1}}],["20884",{"2":{"211":1}}],["20882",{"2":{"211":1}}],["20881",{"2":{"211":1}}],["20880",{"2":{"211":1}}],["20879",{"2":{"211":1}}],["20878",{"2":{"211":1}}],["20877",{"2":{"211":1}}],["20876",{"2":{"211":1}}],["20875",{"2":{"211":1}}],["20874",{"2":{"211":1}}],["20873",{"2":{"211":1}}],["20872",{"2":{"211":1}}],["20871",{"2":{"211":1}}],["20870",{"2":{"211":1}}],["20863",{"2":{"236":1}}],["20869",{"2":{"211":1}}],["20867",{"2":{"211":1}}],["20866",{"2":{"211":1}}],["20865",{"2":{"211":1}}],["20864",{"2":{"211":1}}],["20861",{"2":{"211":1}}],["20860",{"2":{"211":1}}],["20857",{"2":{"236":1}}],["20859",{"2":{"211":1}}],["20858",{"2":{"211":1}}],["20855",{"2":{"211":1}}],["20854",{"2":{"211":1}}],["20853",{"2":{"211":1}}],["20851",{"2":{"211":1}}],["20850",{"2":{"211":1}}],["20849",{"2":{"211":1}}],["20848",{"2":{"211":1}}],["20847",{"2":{"211":1}}],["20845",{"2":{"211":1}}],["20844",{"2":{"211":1}}],["20843",{"2":{"211":1}}],["20842",{"2":{"211":1}}],["20835",{"2":{"211":1}}],["20834",{"2":{"211":1}}],["20833",{"2":{"211":1}}],["20832",{"2":{"211":1}}],["20831",{"2":{"211":1}}],["20830",{"2":{"211":1}}],["20836",{"2":{"211":1}}],["20829",{"2":{"211":1}}],["20827",{"2":{"211":1}}],["20825",{"2":{"211":1}}],["20824",{"2":{"211":1}}],["20822",{"2":{"211":1}}],["20821",{"2":{"211":1}}],["20820",{"2":{"211":1}}],["20819",{"2":{"211":1}}],["20818",{"2":{"211":1}}],["20816",{"2":{"211":1}}],["20814",{"2":{"211":1}}],["20813",{"2":{"211":1}}],["20812",{"2":{"211":1}}],["20810",{"2":{"211":1}}],["20806",{"2":{"211":1}}],["20808",{"2":{"211":1}}],["20805",{"2":{"211":1}}],["20804",{"2":{"211":1}}],["20809",{"2":{"211":1}}],["20807",{"2":{"211":1}}],["20802",{"2":{"211":1}}],["20801",{"2":{"211":1}}],["20800",{"2":{"211":1}}],["20699",{"2":{"211":1}}],["20698",{"2":{"211":1}}],["20697",{"2":{"211":1}}],["20696",{"2":{"211":1}}],["20695",{"2":{"211":1}}],["20694",{"2":{"211":1}}],["20693",{"2":{"211":1}}],["20692",{"2":{"211":1}}],["20691",{"2":{"211":1}}],["20689",{"2":{"211":1}}],["20688",{"2":{"211":1}}],["20685",{"2":{"211":1}}],["20684",{"2":{"211":1}}],["20682",{"2":{"211":1}}],["20681",{"2":{"211":1}}],["20680",{"2":{"211":1}}],["2067",{"2":{"629":1}}],["20670",{"2":{"211":1}}],["20679",{"2":{"211":1}}],["20678",{"2":{"211":1}}],["20677",{"2":{"211":1}}],["20676",{"2":{"211":1}}],["20675",{"2":{"211":1}}],["20672",{"2":{"211":1}}],["20671",{"2":{"211":1}}],["20669",{"2":{"211":2}}],["20667",{"2":{"211":1}}],["20666",{"2":{"211":1}}],["20665",{"2":{"211":1}}],["20663",{"2":{"211":1}}],["20662",{"2":{"211":1}}],["20661",{"2":{"211":1}}],["20660",{"2":{"211":1}}],["20653",{"2":{"211":1}}],["20659",{"2":{"211":1}}],["20658",{"2":{"211":1}}],["20657",{"2":{"211":1}}],["20651",{"2":{"211":1}}],["20645",{"2":{"249":1}}],["20646",{"2":{"222":1}}],["20648",{"2":{"211":1}}],["20640",{"2":{"211":1}}],["20642",{"2":{"211":1}}],["20633",{"2":{"211":1}}],["20634",{"2":{"211":1}}],["20639",{"2":{"211":1}}],["20636",{"2":{"211":1}}],["20635",{"2":{"211":1}}],["20638",{"2":{"211":1}}],["20629",{"2":{"211":1}}],["20628",{"2":{"211":1}}],["20622",{"2":{"211":1}}],["20621",{"2":{"211":1}}],["20620",{"2":{"211":1}}],["20623",{"2":{"211":1}}],["20619",{"2":{"211":1}}],["20614",{"2":{"211":1}}],["20613",{"2":{"211":1}}],["20612",{"2":{"211":1}}],["20611",{"2":{"211":1}}],["20610",{"2":{"211":1}}],["20604",{"2":{"211":1}}],["20600",{"2":{"211":1}}],["205",{"2":{"1577":1,"2731":1,"2732":1,"2733":1}}],["20534",{"2":{"222":1}}],["20524",{"2":{"211":1}}],["20599",{"2":{"211":1}}],["20598",{"2":{"211":1}}],["20597",{"2":{"211":1}}],["20596",{"2":{"211":1}}],["20595",{"2":{"211":1}}],["20594",{"2":{"211":1}}],["20593",{"2":{"211":1}}],["20592",{"2":{"211":1}}],["20588",{"2":{"211":1}}],["20586",{"2":{"211":1}}],["20585",{"2":{"211":1}}],["20583",{"2":{"211":1}}],["20580",{"2":{"211":1}}],["20584",{"2":{"211":1}}],["20577",{"2":{"211":1}}],["20571",{"2":{"211":1}}],["20570",{"2":{"211":1}}],["20572",{"2":{"211":1}}],["20569",{"2":{"211":1}}],["20568",{"2":{"211":1}}],["20567",{"2":{"211":1}}],["20566",{"2":{"211":1}}],["20565",{"2":{"211":1}}],["20564",{"2":{"211":1}}],["20563",{"2":{"211":1}}],["20562",{"2":{"211":1}}],["20561",{"2":{"211":1}}],["20560",{"2":{"211":1}}],["20558",{"2":{"211":1}}],["20555",{"2":{"211":1}}],["20554",{"2":{"211":1}}],["20553",{"2":{"211":1}}],["20552",{"2":{"211":1}}],["20549",{"2":{"211":1}}],["20548",{"2":{"211":1}}],["20547",{"2":{"211":1}}],["20546",{"2":{"211":1}}],["20541",{"2":{"211":1}}],["20517",{"2":{"222":1}}],["20515",{"2":{"211":1}}],["20519",{"2":{"211":1}}],["20518",{"2":{"211":1}}],["20516",{"2":{"211":1}}],["20508",{"2":{"211":1}}],["20504",{"2":{"211":1}}],["20500",{"2":{"211":1}}],["20405",{"2":{"266":1}}],["20402",{"2":{"222":1}}],["20456",{"2":{"211":1}}],["20454",{"2":{"211":1}}],["20410",{"2":{"236":1}}],["20411",{"2":{"211":1}}],["20417",{"2":{"211":1}}],["20412",{"2":{"211":1}}],["20499",{"2":{"211":1}}],["20498",{"2":{"211":1}}],["20496",{"2":{"211":1}}],["20495",{"2":{"211":1}}],["20494",{"2":{"211":1}}],["20491",{"2":{"211":1}}],["20490",{"2":{"211":1}}],["20480",{"2":{"2353":1}}],["2048",{"2":{"689":1,"692":3}}],["20481",{"2":{"222":1}}],["20489",{"2":{"211":1}}],["20488",{"2":{"211":1}}],["20487",{"2":{"211":1}}],["20475",{"2":{"211":1}}],["20473",{"2":{"211":1}}],["20478",{"2":{"211":1}}],["20477",{"2":{"211":1}}],["20474",{"2":{"211":1}}],["20470",{"2":{"211":1}}],["20468",{"2":{"211":1}}],["20463",{"2":{"211":1}}],["20443",{"2":{"211":1}}],["20442",{"2":{"211":1}}],["20440",{"2":{"211":1}}],["20433",{"2":{"211":1}}],["20432",{"2":{"211":1}}],["20439",{"2":{"211":1}}],["20438",{"2":{"211":1}}],["20436",{"2":{"211":1}}],["20430",{"2":{"211":1}}],["20427",{"2":{"236":1}}],["20422",{"2":{"211":1}}],["20423",{"2":{"211":1}}],["20395",{"2":{"222":1}}],["20397",{"2":{"211":1}}],["20398",{"2":{"211":1}}],["20389",{"2":{"222":1}}],["20383",{"2":{"211":1}}],["20381",{"2":{"211":1}}],["20367",{"2":{"211":1}}],["20365",{"2":{"211":1}}],["20356",{"2":{"211":1}}],["20350",{"2":{"211":1}}],["20348",{"2":{"211":1}}],["20349",{"2":{"211":1}}],["20341",{"2":{"211":1}}],["20340",{"2":{"211":1}}],["20347",{"2":{"211":1}}],["20339",{"2":{"211":1}}],["20337",{"2":{"211":1}}],["20334",{"2":{"211":2}}],["20331",{"2":{"211":1}}],["20325",{"2":{"211":1}}],["20326",{"2":{"211":1}}],["20321",{"2":{"211":1}}],["20328",{"2":{"211":1}}],["20320",{"2":{"211":1}}],["20315",{"2":{"236":1}}],["20311",{"2":{"211":1}}],["20317",{"2":{"211":1}}],["20316",{"2":{"211":1}}],["20310",{"2":{"211":1}}],["20314",{"2":{"211":1}}],["20313",{"2":{"211":1}}],["20312",{"2":{"211":1}}],["20308",{"2":{"211":1}}],["20303",{"2":{"211":1}}],["20300",{"2":{"211":1}}],["201",{"2":{"2731":1}}],["20101",{"2":{"266":1}}],["20188",{"2":{"211":1}}],["20183",{"2":{"211":1}}],["20148",{"2":{"211":1}}],["20168",{"2":{"211":1}}],["20167",{"2":{"211":1}}],["20113",{"2":{"211":1}}],["20110",{"2":{"211":1}}],["2017",{"2":{"315":2,"2277":1,"2309":3}}],["20177",{"2":{"211":1}}],["20172",{"2":{"211":1}}],["2015",{"2":{"1265":1,"2309":1}}],["20157",{"2":{"211":1}}],["20156",{"2":{"211":1}}],["20155",{"2":{"211":1}}],["20159",{"2":{"211":1}}],["20154",{"2":{"211":1}}],["20150",{"2":{"211":1}}],["20191",{"2":{"211":1}}],["20194",{"2":{"211":1}}],["20192",{"2":{"211":1}}],["2019",{"0":{"0":1,"1243":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1},"2":{"55":2,"134":1,"351":1}}],["200u",{"2":{"2539":1}}],["20043e64",{"2":{"2255":1}}],["2004a",{"2":{"1589":1}}],["200ms",{"2":{"1827":1,"2169":1,"2727":1,"2730":1,"2735":1,"2736":1}}],["200",{"2":{"502":1,"505":4,"1683":1,"1829":1,"1856":1,"1865":2,"1889":1,"1954":2,"2038":1,"2044":1,"2144":1,"2299":1,"2569":2,"2674":2,"2727":1,"2731":1,"2732":2,"2733":1}}],["20059",{"2":{"236":1}}],["20056",{"2":{"211":1}}],["20097",{"2":{"211":1}}],["20092",{"2":{"211":1}}],["20083",{"2":{"211":1}}],["20084",{"2":{"211":1}}],["20078",{"2":{"211":1}}],["20075",{"2":{"211":1}}],["20079",{"2":{"211":1}}],["20020",{"2":{"211":1}}],["20019",{"2":{"211":1}}],["20013",{"2":{"211":1}}],["20061",{"2":{"211":1}}],["20034",{"2":{"211":1}}],["20033",{"2":{"211":1}}],["20030",{"2":{"211":1}}],["2003",{"2":{"116":1}}],["2000000",{"2":{"1856":1,"1870":1}}],["20000",{"2":{"211":1,"1136":1}}],["20003",{"2":{"211":1}}],["20001",{"2":{"211":1}}],["20006",{"2":{"211":1}}],["20004",{"2":{"211":1}}],["2000th",{"2":{"116":1}}],["2000",{"0":{"116":1},"2":{"511":1,"1860":1,"1870":1,"1882":1,"2131":1,"2311":1,"2697":1}}],["20273",{"2":{"277":1}}],["20274",{"2":{"211":1}}],["20255",{"2":{"222":1}}],["20253",{"2":{"211":1}}],["20292",{"2":{"211":1}}],["20297",{"2":{"211":1}}],["20293",{"2":{"211":1}}],["20290",{"2":{"211":1}}],["20289",{"2":{"211":1}}],["2024",{"0":{"237":1,"250":1,"267":1},"1":{"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1},"2":{"249":1,"251":1,"265":1,"268":1,"338":3,"339":1,"340":8,"351":3,"2570":2}}],["20241124",{"2":{"341":1}}],["20241",{"2":{"211":1}}],["20248",{"2":{"211":1}}],["20243",{"2":{"211":1}}],["20262",{"2":{"211":1}}],["20230",{"2":{"222":1}}],["20234",{"2":{"211":1}}],["20238",{"2":{"211":1}}],["20237",{"2":{"211":1}}],["20236",{"2":{"211":1}}],["20235",{"2":{"211":1}}],["2023",{"0":{"192":1,"200":1,"212":1,"223":1},"1":{"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1},"2":{"254":1,"351":4}}],["20220",{"2":{"236":1}}],["2022",{"0":{"135":1,"150":1,"161":1,"177":1},"1":{"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1},"2":{"170":2,"317":2,"351":4,"2353":17}}],["20218",{"2":{"211":1}}],["20211",{"2":{"211":1}}],["2021",{"0":{"66":1,"78":1,"96":1,"115":1},"1":{"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1},"2":{"88":3,"104":3,"114":2,"127":3,"351":4}}],["20204",{"2":{"211":1}}],["20203",{"2":{"211":1}}],["2020",{"0":{"9":1,"19":1,"39":1,"52":1},"1":{"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1},"2":{"55":2,"351":4,"1216":2}}],["20",{"2":{"49":1,"69":1,"111":1,"134":1,"351":1,"359":5,"507":1,"635":1,"1137":2,"1230":1,"1405":1,"1578":5,"1639":3,"1803":1,"1805":1,"1821":1,"1834":3,"1857":3,"1863":1,"1868":1,"2040":3,"2269":2,"2353":1,"2365":3,"2380":3,"2577":1,"2587":3,"2688":1,"2695":1,"2737":1}}],["k42",{"2":{"2614":4,"2616":1,"2746":2}}],["k40",{"2":{"2614":4,"2616":1,"2746":2}}],["k22",{"2":{"2614":4,"2616":1,"2746":2}}],["k21",{"2":{"2614":4,"2616":1,"2746":2}}],["k20",{"2":{"2614":4,"2616":1,"2746":2}}],["k13",{"2":{"2614":4,"2616":1,"2746":2}}],["k12",{"2":{"2614":4,"2616":1,"2746":2}}],["k11",{"2":{"2614":4,"2616":1,"2746":2}}],["k10",{"2":{"2614":4,"2616":1,"2746":2}}],["k03",{"2":{"2614":4,"2616":1,"2746":2}}],["k02",{"2":{"2614":4,"2616":1,"2746":2}}],["k01",{"2":{"2614":4,"2616":1,"2746":2}}],["k00",{"2":{"2614":4,"2616":1,"2746":2}}],["kp",{"2":{"2355":19,"2394":19}}],["kprepublic",{"2":{"102":12,"114":1,"122":10,"134":2,"143":4,"199":1,"226":2,"236":1,"253":4,"266":2}}],["kxy",{"2":{"2279":1}}],["kvms",{"2":{"1829":1}}],["kvm",{"0":{"1828":1},"2":{"1828":1}}],["kω",{"2":{"821":14,"854":14,"888":14,"922":14,"956":14,"990":14,"1024":14,"1058":14,"1092":14}}],["khz",{"2":{"820":6,"853":5,"887":5,"921":5,"955":3,"989":3,"1091":5}}],["kl",{"2":{"1252":7,"2153":3}}],["kle",{"2":{"405":3,"2427":1,"2566":1,"2615":4,"2617":1,"2620":1,"2686":1}}],["kle2json",{"0":{"405":1},"2":{"405":3}}],["klein",{"2":{"249":1}}],["kl90",{"2":{"222":1,"249":1}}],["kumaokobo",{"2":{"241":10,"249":2}}],["kudox",{"2":{"241":16}}],["k83",{"2":{"217":1}}],["kj",{"2":{"211":1}}],["k552",{"2":{"199":2}}],["koyu",{"2":{"211":1}}],["kopibeng",{"2":{"211":5}}],["koalafications",{"2":{"211":1}}],["koolertron",{"2":{"211":1}}],["ko",{"0":{"1659":1,"1660":1,"1661":1,"1662":1,"1671":1},"2":{"188":1,"191":1,"1659":1,"1662":1,"1663":1,"1665":9,"1666":2,"1668":1,"1669":3,"1670":2,"1671":8,"1674":1}}],["korean",{"2":{"176":1,"2712":2}}],["krush60",{"2":{"249":1}}],["kr",{"2":{"176":4}}],["knife",{"2":{"2133":2,"2266":1}}],["knife66",{"2":{"211":3}}],["knight",{"2":{"160":1,"2034":2,"2036":2,"2037":2,"2038":6,"2040":2,"2063":1,"2376":2,"2708":1}}],["knops",{"2":{"114":1}}],["knowledge",{"2":{"567":1,"692":1,"1264":1,"2129":1,"2323":1,"2722":1,"2723":2,"2725":1}}],["know",{"0":{"1258":1},"2":{"228":1,"245":1,"331":1,"335":1,"356":1,"401":1,"437":1,"446":1,"698":2,"1252":1,"1253":1,"1261":1,"1279":1,"1341":2,"1344":1,"1533":1,"1577":1,"1671":1,"1678":1,"1921":1,"2123":1,"2134":1,"2256":1,"2417":1,"2454":1,"2468":2,"2474":1,"2480":1,"2484":1,"2722":1,"2746":1,"2748":1,"2752":1}}],["knows",{"2":{"49":1,"149":1,"661":1}}],["known",{"0":{"629":1,"1491":1,"1571":1},"1":{"1492":1},"2":{"37":1,"488":1,"554":1,"626":1,"629":1,"1126":1,"1143":1,"1216":1,"1454":1,"1498":1,"1528":1,"1832":1,"2118":1,"2474":1,"2513":1,"2566":1,"2576":2,"2654":1}}],["knobs",{"2":{"249":1}}],["knob",{"2":{"13":1}}],["kkatano",{"2":{"143":6,"149":2,"211":1}}],["kapton",{"2":{"2270":1}}],["kapcave",{"2":{"122":2,"134":1}}],["katakana",{"2":{"1280":1,"2391":2}}],["katana60",{"2":{"381":1,"2293":1}}],["karabiner",{"0":{"1281":1},"2":{"1280":1,"1281":4}}],["karn",{"2":{"249":1}}],["karlk90",{"2":{"163":1}}],["kana",{"2":{"222":1,"1714":1,"1715":2,"1717":1,"2685":2}}],["kangaroo",{"2":{"211":1}}],["kastenwagen",{"2":{"211":2}}],["kamigakushi",{"2":{"207":2,"211":1,"217":2}}],["ka2hiro",{"2":{"149":1}}],["kagamidget",{"2":{"143":2}}],["kagizaraya",{"2":{"143":3,"149":1,"241":1,"249":1}}],["kakunpc",{"2":{"143":11,"149":2}}],["kmac",{"2":{"241":4}}],["km",{"2":{"132":1,"176":1,"370":3,"371":1,"374":2,"378":2,"380":2,"381":1,"386":1,"388":1,"389":1,"390":1,"391":1,"393":3,"394":3,"401":1,"1312":1,"1440":1,"2126":3,"2229":1,"2277":1,"2356":1,"2425":1,"2445":1,"2446":1,"2454":1,"2469":2,"2512":1,"2553":1,"2572":1}}],["kyria",{"2":{"102":2,"114":3,"134":1,"222":2,"277":1}}],["k33",{"2":{"2614":4,"2616":1,"2746":2}}],["k32",{"2":{"2614":4,"2616":1,"2746":2}}],["k320",{"2":{"86":1,"102":2,"181":2,"191":1}}],["k31",{"2":{"2614":4,"2616":1,"2746":2}}],["k310",{"2":{"114":1,"181":2,"191":1}}],["k30",{"2":{"2614":4,"2616":1,"2746":2}}],["k34",{"2":{"222":1}}],["k3x0",{"2":{"102":1,"181":2}}],["ktec",{"2":{"102":3}}],["kzar",{"2":{"92":1,"93":1}}],["kib",{"2":{"2255":1,"2335":1,"2353":3}}],["kit",{"2":{"624":1}}],["kira80",{"2":{"241":2}}],["kira",{"2":{"241":2,"249":1}}],["kira75",{"2":{"241":2}}],["kikoslab",{"2":{"222":1,"249":1}}],["kiko",{"2":{"211":1}}],["kicad",{"2":{"211":1}}],["kinds",{"2":{"1451":1,"2064":1,"2327":1}}],["kind",{"0":{"533":1,"1678":1},"1":{"1679":1,"1680":1,"1681":1,"1682":1,"1683":1,"1684":1,"1685":1,"1686":1,"1687":1,"1688":1,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1695":1,"1696":1,"1697":1,"1698":1,"1699":1,"1700":1,"1701":1,"1702":1,"1703":1,"1704":1,"1705":1,"1706":1,"1707":1,"1708":1,"1709":1,"1710":1,"1711":1,"1712":1,"1713":1},"2":{"1451":1,"1452":1,"2169":1}}],["king",{"2":{"176":1}}],["kintwin",{"2":{"222":1}}],["kint41",{"2":{"114":1,"2502":1}}],["kint",{"2":{"114":1,"134":1}}],["kint2pp",{"2":{"94":1}}],["kint36",{"2":{"93":1,"94":1,"114":1,"199":1,"2502":1}}],["kinetis",{"0":{"491":1},"2":{"114":1,"160":2,"191":1,"2243":1,"2524":1,"2546":1,"2622":1}}],["kinetic",{"0":{"1804":1},"2":{"74":1,"160":2,"175":2,"176":1,"222":2,"1802":1,"1804":3,"1807":1,"1808":1,"1872":1}}],["kinesis",{"2":{"93":2,"114":1,"211":1,"217":2,"222":3,"2502":2}}],["kiibohd",{"0":{"2243":1},"2":{"50":1,"629":2,"2243":1}}],["k",{"2":{"49":2,"65":1,"114":1,"143":2,"191":1,"236":1,"249":2,"266":8,"277":1,"313":1,"530":2,"1361":2,"1511":1,"1527":2,"1530":1,"1932":1,"1935":4,"2034":1,"2148":1,"2153":1,"2169":1,"2355":3,"2376":1,"2386":3,"2407":1,"2614":1,"2702":1}}],["kb2",{"2":{"559":2}}],["kb2040",{"0":{"1317":1},"2":{"163":1,"176":2,"1311":1,"1315":4,"1318":1,"1321":1,"2541":1,"2709":1}}],["kb1",{"2":{"559":1}}],["kb16",{"2":{"176":1,"191":1,"249":1}}],["kb38",{"2":{"222":1,"266":1}}],["kb83",{"2":{"217":1,"222":1}}],["kbo5000",{"2":{"199":1}}],["kbfirmware",{"0":{"391":1},"2":{"173":4,"391":2,"541":1,"2277":2,"2427":1,"2566":2}}],["kbd",{"2":{"1530":1}}],["kbdmania",{"2":{"241":2,"249":1}}],["kbd66",{"2":{"211":1}}],["kbd67mkiirgb",{"2":{"217":1}}],["kbd67",{"2":{"114":1,"217":1,"249":1}}],["kbdfans",{"2":{"143":1,"149":1,"191":1,"211":6,"217":2,"241":2,"249":1}}],["kb",{"0":{"593":1,"1776":1,"1780":1,"2021":1,"2025":1,"2194":1,"2741":1},"1":{"1777":1,"2022":1,"2195":1},"2":{"34":1,"70":1,"90":3,"105":4,"111":1,"125":2,"132":1,"185":2,"190":1,"191":3,"197":13,"199":3,"203":2,"211":1,"229":1,"230":1,"231":3,"266":1,"277":6,"370":6,"371":1,"378":4,"380":2,"381":2,"383":1,"384":1,"385":1,"386":1,"388":2,"389":1,"390":1,"391":1,"393":3,"394":3,"401":1,"511":1,"534":3,"566":4,"568":4,"571":1,"573":1,"577":1,"579":1,"583":1,"586":1,"587":1,"591":2,"593":1,"594":1,"595":1,"1273":1,"1312":1,"1331":3,"1333":3,"1341":2,"1345":1,"1383":2,"1404":1,"1440":1,"1549":2,"1560":1,"1716":2,"1717":1,"1729":2,"1733":2,"1822":2,"1826":2,"1870":2,"1874":2,"1875":1,"1891":1,"1892":1,"1952":2,"1957":2,"2126":3,"2130":1,"2162":1,"2229":1,"2277":1,"2293":2,"2301":4,"2306":1,"2355":4,"2356":1,"2392":4,"2422":1,"2425":1,"2445":1,"2446":1,"2454":1,"2469":2,"2491":4,"2512":1,"2553":1,"2566":2,"2567":1,"2572":1,"2576":1,"2577":4,"2578":1,"2581":1,"2749":4}}],["kc5",{"0":{"1711":1},"1":{"1712":1,"1713":1},"2":{"1712":1}}],["kc4",{"0":{"1708":1,"1711":1},"1":{"1709":1,"1710":1,"1712":1,"1713":1},"2":{"1709":1,"1712":1}}],["kc3",{"0":{"1705":1,"1708":1,"1711":1},"1":{"1706":1,"1707":1,"1709":1,"1710":1,"1712":1,"1713":1},"2":{"1706":1,"1709":1,"1712":1}}],["kc2",{"0":{"1702":1,"1705":1,"1708":1,"1711":1},"1":{"1703":1,"1704":1,"1706":1,"1707":1,"1709":1,"1710":1,"1712":1,"1713":1},"2":{"1703":1,"1706":1,"1709":1,"1712":1,"2161":3}}],["kc1",{"0":{"1702":1,"1705":1,"1708":1,"1711":1},"1":{"1703":1,"1704":1,"1706":1,"1707":1,"1709":1,"1710":1,"1712":1,"1713":1},"2":{"1703":1,"1706":1,"1709":1,"1712":1,"2161":3}}],["kc60",{"2":{"236":1,"2040":1}}],["kc",{"0":{"8":2,"89":1,"1366":1,"1367":1,"1368":1,"1369":1,"1370":4,"1699":1},"1":{"1700":1,"1701":1},"2":{"7":2,"8":3,"38":6,"89":1,"90":8,"94":1,"176":2,"188":3,"191":5,"194":5,"195":2,"196":9,"199":5,"202":3,"209":6,"231":16,"255":1,"313":211,"502":3,"505":3,"530":338,"572":1,"573":1,"1252":7,"1269":2,"1272":3,"1273":5,"1275":1,"1276":6,"1283":1,"1299":57,"1300":5,"1302":9,"1303":14,"1332":1,"1335":4,"1336":4,"1340":2,"1344":2,"1357":2,"1359":1,"1360":10,"1361":4,"1366":6,"1367":1,"1368":4,"1369":1,"1370":1,"1375":8,"1385":4,"1403":3,"1404":1,"1416":1,"1417":1,"1418":1,"1423":3,"1429":1,"1430":8,"1445":2,"1446":3,"1448":1,"1451":2,"1496":6,"1499":13,"1500":3,"1503":2,"1506":10,"1508":6,"1509":3,"1510":7,"1511":19,"1518":3,"1523":5,"1527":19,"1530":1,"1555":2,"1559":4,"1560":6,"1564":3,"1565":1,"1582":1,"1587":2,"1633":1,"1638":6,"1663":2,"1665":6,"1666":4,"1668":8,"1670":3,"1677":15,"1680":9,"1683":3,"1685":3,"1686":3,"1700":1,"1892":3,"1932":40,"1933":11,"1934":11,"1935":3,"1937":1,"1938":3,"1941":1,"1942":1,"1943":10,"1958":1,"2075":6,"2106":34,"2107":9,"2156":2,"2161":6,"2164":2,"2167":2,"2168":2,"2169":12,"2170":7,"2171":2,"2179":3,"2217":4,"2228":8,"2279":1,"2318":1,"2355":329,"2367":3,"2373":55,"2374":63,"2378":41,"2383":2,"2385":2,"2386":36,"2387":24,"2388":34,"2389":13,"2390":23,"2391":36,"2392":64,"2393":63,"2394":37,"2395":3,"2397":1,"2399":41,"2403":7,"2405":10,"2407":72,"2408":22,"2410":64,"2411":2,"2413":7,"2414":7,"2415":4,"2490":2,"2571":3,"2605":1,"2614":8,"2616":1,"2710":1,"2727":2,"2728":2,"2730":3,"2731":9,"2732":14,"2733":9,"2734":19,"2735":16,"2736":9,"2737":6,"2738":19,"2746":5,"2747":17,"2748":1}}],["kent",{"2":{"2750":1}}],["kerpleplork",{"2":{"556":4}}],["kernel",{"0":{"2316":1},"2":{"199":1,"1240":1,"2355":1,"2556":1}}],["kept",{"2":{"529":1,"609":1,"660":1,"1573":1,"1885":1,"2446":1,"2546":1}}],["keaboard",{"2":{"253":2}}],["kezewa",{"2":{"241":2,"249":1}}],["kestra",{"2":{"211":1}}],["kegen",{"2":{"191":1,"211":1}}],["kelowna",{"2":{"143":2}}],["keeb",{"2":{"2575":6}}],["keebzdotnet",{"2":{"211":1}}],["keebs",{"2":{"149":8,"176":1}}],["keebio",{"0":{"45":1},"2":{"45":1,"114":3,"134":1,"191":1,"199":2,"222":1,"277":1,"1312":1,"2131":1}}],["keeps",{"2":{"1302":1,"1303":2}}],["keeping",{"2":{"481":1,"689":1,"1269":1,"1803":1,"2152":1,"2308":1,"2719":1,"2737":1}}],["keep",{"2":{"6":1,"74":2,"113":1,"124":1,"194":1,"211":2,"364":1,"453":2,"457":1,"468":1,"479":1,"502":1,"551":1,"556":1,"560":2,"587":1,"615":1,"616":2,"660":1,"1126":1,"1294":1,"1302":1,"1331":1,"1338":1,"1351":1,"1364":1,"1471":1,"1497":1,"1558":1,"1582":1,"1655":1,"1807":1,"1876":1,"2106":1,"2147":1,"2161":1,"2236":1,"2263":1,"2272":2,"2273":2,"2274":1,"2276":1,"2279":1,"2303":1,"2305":1,"2306":1,"2308":1,"2311":1,"2420":1,"2424":1,"2443":1,"2444":1,"2478":2,"2479":1,"2497":2,"2501":1,"2510":1,"2564":1,"2568":3,"2574":1,"2576":1,"2578":1,"2674":1,"2757":1}}],["keylog",{"2":{"2702":2}}],["keylight",{"2":{"1726":1,"1947":1,"1958":1}}],["key3",{"2":{"2311":6}}],["key2",{"2":{"2311":10}}],["key0",{"2":{"2311":6}}],["key1",{"2":{"2153":1,"2311":6}}],["keyreleases",{"2":{"1730":2,"1954":2}}],["keyrepeating",{"2":{"1412":1,"1425":1,"1430":1}}],["keyrepeat",{"2":{"1411":1,"1412":1,"1424":1}}],["keyrecords",{"2":{"1890":1}}],["keyrecord",{"2":{"22":3,"149":1,"194":2,"195":2,"534":2,"572":1,"573":2,"588":1,"1252":1,"1302":1,"1303":1,"1332":1,"1344":1,"1359":2,"1360":2,"1375":1,"1384":1,"1385":2,"1416":1,"1423":2,"1430":3,"1445":1,"1446":1,"1519":2,"1556":1,"1581":1,"1638":1,"1792":1,"1830":1,"1879":1,"1880":1,"1891":2,"1892":1,"1899":1,"1901":1,"1935":1,"1937":1,"1938":1,"1939":1,"1940":1,"1941":1,"1943":2,"2044":2,"2078":1,"2152":2,"2168":1,"2171":1,"2301":1,"2413":1,"2414":1,"2415":1,"2604":1,"2727":1,"2728":2,"2735":1,"2736":1,"2737":1,"2738":1,"2749":42}}],["keyup",{"2":{"1299":1,"1365":1,"1367":1,"1559":2,"2075":2,"2674":2,"2688":2,"2695":2}}],["keydown",{"2":{"1299":1,"1335":1,"1365":1,"1366":1,"1559":2,"1954":1,"2075":2,"2674":2,"2688":1,"2695":1}}],["keyed",{"2":{"610":1}}],["keyevent",{"2":{"211":1,"573":1,"1895":2,"2749":1}}],["key>",{"2":{"416":1,"438":2,"439":2}}],["key=value",{"2":{"374":1}}],["keypos",{"2":{"573":1,"1958":1,"2155":2}}],["keypads",{"2":{"266":1}}],["keypad",{"2":{"181":2,"222":1,"1273":1,"1279":1,"1638":1,"2355":20,"2385":1,"2389":1,"2393":1,"2394":19}}],["keypresses",{"0":{"1243":1},"2":{"1335":1,"1360":1,"1553":1,"1730":1,"1954":1,"2070":1,"2129":1,"2519":1,"2648":1}}],["keypress",{"0":{"1252":1,"1253":1},"2":{"98":1,"1252":1,"1299":1,"1340":1,"1406":1,"1554":1,"1556":1,"1572":1,"1954":1,"2152":1,"2379":2,"2649":1,"2687":1}}],["keyhive",{"2":{"159":10,"160":3}}],["keycap",{"2":{"2710":1}}],["keycaps",{"2":{"2145":1,"2625":1}}],["keycapsss",{"2":{"249":1}}],["keychron",{"2":{"134":1,"176":1,"191":4,"211":2,"226":14,"236":5,"249":3,"266":2}}],["keycode",{"0":{"16":2,"38":1,"157":1,"231":1,"547":1,"570":1,"571":1,"1344":1,"1694":1,"1878":1,"2079":1,"2153":1,"2203":1,"2216":1,"2640":1,"2747":1},"1":{"572":1,"573":1,"1695":1,"1696":1,"2204":1,"2205":1,"2217":1,"2218":1},"2":{"3":1,"7":1,"15":1,"16":1,"22":4,"38":1,"112":1,"133":1,"134":3,"156":3,"157":1,"160":2,"167":1,"182":4,"188":9,"191":15,"194":9,"195":5,"198":2,"199":7,"222":5,"231":25,"235":1,"236":1,"249":1,"255":2,"259":1,"266":2,"277":2,"504":2,"505":3,"534":14,"540":6,"547":2,"569":2,"570":2,"572":3,"573":3,"588":1,"624":1,"626":1,"1245":1,"1252":2,"1267":1,"1270":1,"1278":2,"1283":3,"1299":1,"1302":4,"1303":4,"1332":4,"1335":1,"1336":4,"1344":7,"1359":14,"1360":5,"1364":1,"1368":1,"1370":1,"1375":3,"1384":2,"1385":7,"1404":6,"1416":2,"1423":5,"1430":13,"1431":2,"1434":1,"1439":1,"1442":1,"1443":1,"1445":2,"1446":15,"1451":3,"1452":3,"1499":2,"1500":2,"1506":3,"1509":1,"1511":2,"1512":1,"1518":2,"1519":2,"1523":3,"1527":1,"1530":1,"1555":2,"1559":1,"1581":1,"1582":2,"1631":1,"1632":1,"1638":2,"1669":1,"1670":6,"1677":5,"1679":1,"1685":2,"1694":1,"1695":2,"1696":1,"1699":1,"1700":1,"1703":2,"1706":3,"1709":4,"1712":5,"1791":1,"1792":2,"1793":1,"1794":1,"1797":1,"1830":2,"1879":2,"1880":2,"1885":1,"1891":2,"1892":3,"1899":3,"1901":2,"1930":2,"1931":1,"1932":1,"1933":11,"1934":3,"1935":5,"1937":2,"1938":2,"1939":2,"1940":3,"1941":7,"1942":6,"1943":11,"1948":1,"1958":1,"2034":1,"2044":4,"2045":1,"2063":1,"2072":1,"2075":5,"2078":3,"2104":1,"2106":3,"2107":3,"2152":3,"2161":7,"2164":1,"2168":3,"2170":5,"2171":2,"2173":1,"2182":3,"2203":1,"2204":2,"2216":1,"2217":2,"2218":1,"2228":39,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":2,"2247":2,"2249":2,"2263":1,"2301":1,"2316":2,"2317":2,"2318":1,"2381":1,"2396":1,"2397":1,"2398":1,"2401":2,"2403":3,"2406":3,"2410":2,"2411":4,"2413":5,"2414":5,"2415":2,"2565":1,"2567":1,"2572":1,"2604":2,"2605":1,"2608":1,"2609":1,"2610":1,"2674":1,"2686":1,"2706":3,"2710":3,"2727":2,"2728":5,"2735":2,"2736":2,"2737":3,"2738":8,"2746":1,"2747":1,"2749":41}}],["keycodes",{"0":{"3":1,"7":1,"15":1,"182":1,"188":1,"219":1,"254":1,"534":1,"569":1,"1267":1,"1268":1,"1269":1,"1408":1,"1443":1,"1456":1,"1494":1,"1509":1,"1512":1,"1566":1,"1572":1,"1632":1,"1639":1,"1669":1,"1687":1,"1727":1,"1793":1,"1834":1,"1931":1,"1948":1,"2034":1,"2069":1,"2075":1,"2104":1,"2112":1,"2156":1,"2173":1,"2184":1,"2305":1,"2354":1,"2355":1,"2356":1,"2370":1,"2385":1,"2396":1,"2399":1,"2571":1,"2572":1,"2710":1},"1":{"570":1,"571":1,"572":1,"573":1,"1567":1,"1573":1,"1574":1,"1575":1,"1576":1,"1577":1,"1578":1,"1579":1,"1580":1,"2076":1,"2355":1,"2356":1,"2357":1,"2358":1,"2359":1,"2360":1,"2361":1,"2362":1,"2363":1,"2364":1,"2365":1,"2366":1,"2367":1,"2368":1,"2369":1,"2370":1,"2371":1,"2372":1,"2373":1,"2374":1,"2375":1,"2376":1,"2377":1,"2378":1,"2379":1,"2380":1,"2381":1,"2382":1,"2383":1,"2384":1,"2386":1,"2387":1,"2388":1,"2389":1,"2390":1,"2391":1,"2392":1,"2393":1,"2394":1,"2395":1,"2572":1,"2711":1,"2712":1},"2":{"3":1,"7":1,"15":1,"16":2,"38":1,"49":1,"74":1,"93":1,"94":1,"114":1,"119":1,"120":5,"149":2,"157":2,"160":2,"176":1,"182":4,"186":1,"188":25,"191":29,"194":1,"198":1,"199":8,"211":1,"219":1,"222":1,"231":3,"254":4,"255":1,"257":1,"258":1,"259":2,"266":7,"277":5,"313":1,"317":4,"318":1,"505":2,"529":1,"534":4,"557":2,"570":4,"571":1,"572":1,"621":4,"1236":1,"1265":3,"1267":3,"1268":1,"1269":1,"1271":1,"1273":1,"1276":2,"1279":2,"1300":1,"1332":2,"1336":2,"1344":3,"1354":5,"1357":10,"1359":5,"1361":2,"1370":1,"1375":2,"1379":1,"1385":4,"1398":2,"1402":1,"1403":3,"1404":3,"1406":1,"1445":4,"1446":3,"1451":1,"1498":3,"1500":1,"1506":2,"1508":1,"1509":2,"1511":1,"1512":1,"1518":1,"1524":1,"1526":1,"1528":1,"1572":1,"1573":1,"1633":1,"1655":1,"1702":1,"1705":1,"1708":1,"1711":1,"1723":1,"1787":2,"1791":2,"1792":1,"1797":1,"1801":1,"1821":2,"1830":2,"1832":2,"1879":1,"1880":1,"1899":1,"1932":4,"1933":1,"1935":1,"1943":1,"1944":1,"1948":6,"1951":1,"1954":2,"1958":1,"2032":1,"2034":4,"2035":2,"2072":1,"2075":3,"2149":3,"2150":1,"2153":2,"2161":2,"2168":1,"2170":6,"2172":1,"2178":1,"2181":2,"2182":1,"2183":2,"2203":1,"2228":1,"2263":1,"2305":1,"2318":1,"2319":2,"2324":1,"2354":1,"2355":2,"2356":1,"2370":1,"2385":2,"2393":4,"2395":1,"2396":2,"2397":2,"2398":1,"2403":2,"2407":1,"2409":1,"2411":3,"2424":2,"2490":1,"2565":1,"2566":3,"2567":1,"2571":6,"2603":1,"2614":1,"2640":2,"2643":1,"2663":1,"2687":1,"2702":1,"2706":3,"2710":1,"2711":1,"2712":2,"2723":2,"2724":1,"2740":1,"2746":2,"2747":1,"2749":1}}],["keyword",{"2":{"103":1,"120":1,"126":1,"457":1,"1354":1}}],["key",{"0":{"15":1,"42":1,"99":1,"196":2,"202":1,"272":1,"421":1,"507":1,"611":1,"1272":1,"1278":1,"1282":1,"1291":1,"1309":1,"1409":1,"1423":1,"1426":1,"1427":1,"1428":1,"1429":1,"1517":1,"1518":1,"1523":1,"1552":1,"1581":1,"1630":1,"1655":1,"1656":1,"1658":1,"1659":1,"1660":1,"1661":1,"1662":1,"1670":1,"1675":1,"1678":1,"1683":1,"1685":1,"1699":1,"1808":1,"1891":1,"1895":1,"1929":1,"1930":1,"1937":1,"1940":1,"1941":1,"2159":1,"2314":1,"2366":1,"2368":1,"2381":1,"2611":1,"2641":1,"2642":1,"2645":1,"2653":1,"2687":1,"2736":1,"2740":2},"1":{"1410":1,"1411":1,"1412":1,"1413":1,"1414":1,"1415":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"1423":1,"1424":1,"1425":1,"1426":1,"1427":1,"1428":1,"1429":1,"1430":1,"1431":1,"1432":1,"1433":1,"1434":1,"1435":1,"1436":1,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"1631":1,"1632":1,"1633":1,"1656":1,"1657":1,"1658":1,"1659":2,"1660":2,"1661":2,"1662":2,"1663":1,"1664":1,"1665":1,"1666":1,"1667":1,"1668":1,"1669":1,"1670":1,"1671":1,"1672":1,"1673":1,"1674":1,"1675":1,"1676":1,"1677":1,"1679":1,"1680":1,"1681":1,"1682":1,"1683":1,"1684":1,"1685":1,"1686":1,"1687":1,"1688":1,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1695":1,"1696":1,"1697":1,"1698":1,"1699":1,"1700":2,"1701":2,"1702":1,"1703":1,"1704":1,"1705":1,"1706":1,"1707":1,"1708":1,"1709":1,"1710":1,"1711":1,"1712":1,"1713":1,"1892":1,"1930":1,"1931":1,"1932":1,"1933":1,"1934":1,"1935":1,"1936":1,"1937":1,"1938":1,"1939":1,"1940":1,"1941":1,"1942":1,"1943":1,"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1},"2":{"22":1,"38":3,"43":1,"50":1,"63":1,"73":2,"93":2,"99":6,"110":1,"112":14,"114":7,"119":1,"134":2,"149":5,"152":1,"175":1,"176":4,"188":2,"191":7,"194":12,"195":3,"196":3,"199":7,"201":1,"202":9,"203":5,"206":2,"211":8,"218":1,"222":5,"231":1,"236":1,"249":1,"255":2,"257":1,"258":1,"259":2,"266":3,"268":1,"272":8,"277":1,"316":3,"374":11,"378":1,"413":2,"417":3,"418":1,"425":1,"426":1,"437":3,"502":1,"504":1,"505":34,"510":1,"515":9,"529":4,"530":1,"540":4,"571":8,"572":2,"573":1,"588":4,"609":1,"610":1,"612":1,"614":1,"623":2,"624":3,"626":2,"660":1,"1235":1,"1252":3,"1270":1,"1272":4,"1275":1,"1278":2,"1280":3,"1283":1,"1286":1,"1292":1,"1299":2,"1303":5,"1309":1,"1325":1,"1326":18,"1329":14,"1332":1,"1334":1,"1335":5,"1336":1,"1340":2,"1346":1,"1353":1,"1355":1,"1357":8,"1359":4,"1360":2,"1361":3,"1367":1,"1368":2,"1375":1,"1385":1,"1398":2,"1399":1,"1402":1,"1403":1,"1405":1,"1406":2,"1408":1,"1409":3,"1410":1,"1411":10,"1412":4,"1413":1,"1414":1,"1416":2,"1422":1,"1423":6,"1430":7,"1431":6,"1435":4,"1436":1,"1438":2,"1442":1,"1445":1,"1456":1,"1493":1,"1494":1,"1495":5,"1496":6,"1499":5,"1500":2,"1501":3,"1503":1,"1504":1,"1506":5,"1508":1,"1510":2,"1511":3,"1515":3,"1517":1,"1518":6,"1520":2,"1521":1,"1522":1,"1523":9,"1524":2,"1529":2,"1530":35,"1547":1,"1553":1,"1554":1,"1555":1,"1556":1,"1559":1,"1563":2,"1564":3,"1566":1,"1568":1,"1572":1,"1581":1,"1582":3,"1630":4,"1631":3,"1632":2,"1633":4,"1639":1,"1655":7,"1657":7,"1658":2,"1659":3,"1662":1,"1663":6,"1665":16,"1666":5,"1668":7,"1669":6,"1670":9,"1671":5,"1672":3,"1673":9,"1674":6,"1675":12,"1676":8,"1677":3,"1678":2,"1680":2,"1682":1,"1683":7,"1684":6,"1685":2,"1686":1,"1687":1,"1697":1,"1725":6,"1726":2,"1727":1,"1728":8,"1801":2,"1802":2,"1803":3,"1804":1,"1805":4,"1807":5,"1808":2,"1824":1,"1832":2,"1834":1,"1878":1,"1879":1,"1880":2,"1885":7,"1886":7,"1889":1,"1892":1,"1894":5,"1895":5,"1899":5,"1929":9,"1930":5,"1931":4,"1932":8,"1933":9,"1934":2,"1935":1,"1936":3,"1937":6,"1938":2,"1939":2,"1940":9,"1941":8,"1942":5,"1943":1,"1946":6,"1947":2,"1948":1,"1949":13,"1950":3,"1951":1,"1954":1,"1958":1,"1959":1,"2034":1,"2069":1,"2078":1,"2079":1,"2103":4,"2106":15,"2107":7,"2112":1,"2117":1,"2125":5,"2126":1,"2129":2,"2145":1,"2147":1,"2150":2,"2152":4,"2153":5,"2154":1,"2156":3,"2160":1,"2161":13,"2162":8,"2168":1,"2169":16,"2170":3,"2171":12,"2172":1,"2179":6,"2182":2,"2184":1,"2196":3,"2197":1,"2198":1,"2231":1,"2237":2,"2238":1,"2263":8,"2274":1,"2279":1,"2301":1,"2305":2,"2311":5,"2313":2,"2314":5,"2315":2,"2316":1,"2319":2,"2354":2,"2355":7,"2356":1,"2357":1,"2358":1,"2359":1,"2360":1,"2361":1,"2362":1,"2363":1,"2364":1,"2365":1,"2366":4,"2367":2,"2368":2,"2369":1,"2370":4,"2371":1,"2372":1,"2373":1,"2374":1,"2375":1,"2376":1,"2377":1,"2378":1,"2379":1,"2380":1,"2381":5,"2382":1,"2383":2,"2384":1,"2386":1,"2387":1,"2388":1,"2389":1,"2390":3,"2391":1,"2392":2,"2393":1,"2394":1,"2395":3,"2396":4,"2399":1,"2401":2,"2402":1,"2407":5,"2408":1,"2410":7,"2411":1,"2413":1,"2414":2,"2415":1,"2436":1,"2450":1,"2455":1,"2479":1,"2490":14,"2491":4,"2518":1,"2524":1,"2566":2,"2572":1,"2608":1,"2611":1,"2612":3,"2614":2,"2615":8,"2616":4,"2617":2,"2619":2,"2640":1,"2641":2,"2642":1,"2643":1,"2644":1,"2645":3,"2649":1,"2651":3,"2653":1,"2654":5,"2659":2,"2660":1,"2662":3,"2663":1,"2671":1,"2674":6,"2679":2,"2682":1,"2686":23,"2687":3,"2688":1,"2689":1,"2690":1,"2691":2,"2693":2,"2695":1,"2703":1,"2708":1,"2710":1,"2724":1,"2727":3,"2728":6,"2729":13,"2730":4,"2731":4,"2732":6,"2733":4,"2734":3,"2735":27,"2736":18,"2737":4,"2738":7,"2739":1,"2740":3,"2745":2,"2746":1,"2748":2,"2749":2}}],["keyswitch",{"2":{"1548":1,"1552":1,"1559":1,"2273":2,"2274":3,"2276":1,"2279":5,"2311":5,"2689":1}}],["keyswitches",{"2":{"510":1,"1454":1,"2266":1}}],["keystroke",{"2":{"1360":2}}],["keystrokes",{"2":{"1353":1,"1438":1,"1950":1,"2072":1,"2076":1,"2169":1,"2179":1,"2225":1,"2584":1}}],["keys",{"0":{"112":1,"291":1,"422":1,"1271":1,"1273":1,"1279":1,"1280":1,"1291":1,"1299":1,"1307":1,"1506":1,"1668":1,"1702":1,"1705":1,"1708":1,"1711":1,"1798":1,"1799":1,"1800":1,"1802":1,"1886":1,"1890":1,"1891":1,"1892":1,"1899":1,"1933":1,"1936":1,"1943":1,"2170":1,"2171":1,"2312":1,"2357":1,"2372":1,"2374":1,"2375":1,"2379":1,"2387":1,"2389":1,"2393":1,"2395":1,"2490":1,"2616":1,"2619":1,"2620":1,"2690":1,"2733":1},"1":{"1673":1,"1674":1,"1675":1,"1703":1,"1704":1,"1706":1,"1707":1,"1709":1,"1710":1,"1712":1,"1713":1,"1799":1,"1800":2,"1801":2,"1802":1,"1803":2,"1804":2,"1805":2,"1806":2,"1807":2,"1808":2,"1809":1,"1891":1,"1892":2,"1934":1,"1935":1,"1937":1,"1938":1,"1939":1,"2313":1,"2314":1,"2315":1,"2316":1,"2317":1,"2318":1,"2319":1,"2320":1,"2491":1},"2":{"7":2,"70":1,"74":1,"98":2,"112":2,"114":2,"119":2,"134":2,"143":4,"149":1,"160":1,"176":5,"182":2,"190":2,"191":6,"194":2,"196":3,"199":1,"201":1,"202":3,"211":6,"236":1,"255":1,"259":1,"263":1,"277":1,"374":1,"413":1,"418":1,"502":1,"505":4,"515":2,"525":1,"540":2,"546":1,"548":1,"610":1,"611":1,"614":1,"1271":2,"1273":1,"1275":2,"1278":1,"1280":2,"1284":2,"1286":1,"1300":2,"1303":1,"1307":1,"1326":1,"1329":1,"1334":1,"1335":1,"1338":1,"1347":1,"1355":1,"1357":3,"1360":2,"1361":1,"1371":1,"1373":1,"1386":1,"1403":1,"1405":1,"1412":3,"1416":6,"1417":1,"1419":1,"1420":1,"1423":2,"1426":1,"1427":1,"1428":1,"1429":1,"1430":4,"1431":1,"1432":1,"1433":1,"1434":1,"1435":2,"1445":1,"1446":3,"1454":1,"1497":1,"1499":2,"1500":2,"1503":6,"1504":1,"1506":2,"1508":5,"1510":1,"1514":1,"1515":3,"1517":1,"1518":10,"1524":1,"1527":1,"1530":1,"1553":1,"1555":1,"1582":7,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"1633":3,"1655":4,"1668":1,"1673":1,"1674":2,"1676":4,"1677":1,"1678":1,"1680":3,"1683":1,"1684":2,"1686":1,"1728":1,"1798":1,"1799":3,"1800":1,"1802":6,"1805":1,"1806":1,"1808":1,"1809":2,"1832":1,"1853":1,"1857":1,"1885":3,"1886":1,"1890":4,"1891":2,"1892":2,"1895":2,"1921":1,"1932":2,"1933":1,"1935":2,"1936":3,"1937":1,"1938":1,"1939":3,"1940":1,"1943":4,"1949":4,"1950":4,"1958":3,"2066":1,"2102":1,"2105":1,"2106":10,"2107":2,"2122":1,"2145":2,"2147":4,"2148":2,"2150":3,"2152":10,"2153":4,"2160":1,"2161":2,"2169":1,"2171":4,"2172":1,"2182":2,"2263":1,"2266":1,"2277":1,"2279":1,"2305":2,"2311":5,"2320":1,"2354":1,"2367":1,"2370":3,"2372":1,"2373":1,"2379":4,"2396":3,"2400":1,"2402":3,"2403":1,"2405":1,"2406":1,"2407":1,"2408":2,"2414":1,"2417":1,"2423":1,"2424":1,"2450":3,"2455":1,"2490":12,"2491":1,"2559":2,"2571":1,"2603":1,"2610":1,"2611":1,"2614":2,"2615":1,"2616":2,"2617":2,"2619":1,"2620":3,"2624":1,"2628":1,"2645":1,"2661":1,"2671":1,"2680":1,"2686":1,"2690":2,"2691":1,"2702":1,"2703":1,"2711":1,"2726":1,"2727":1,"2728":7,"2729":3,"2735":4,"2736":2,"2738":1,"2740":1,"2745":1,"2746":2}}],["keymapping",{"2":{"1281":1}}],["keymap=",{"2":{"2421":1}}],["keymap=skully",{"2":{"424":1}}],["keymap=none",{"2":{"423":1,"424":1}}],["keymap=default",{"2":{"370":1,"414":1,"415":1,"417":1,"424":1}}],["keymap>",{"2":{"393":1,"394":1,"2229":1,"2252":1,"2425":1,"2445":1,"2446":1,"2454":1}}],["keymap",{"0":{"5":1,"272":1,"386":1,"390":1,"500":1,"539":1,"540":1,"541":1,"568":1,"623":1,"1266":1,"1270":1,"1346":1,"1348":1,"1381":1,"2260":1,"2264":1,"2400":1,"2401":1,"2402":1,"2404":1,"2422":1,"2423":1,"2436":1,"2440":1,"2445":1,"2446":1,"2470":1,"2565":1,"2643":1},"1":{"1267":1,"1268":1,"1269":1,"1270":1,"1271":1,"1272":1,"1273":1,"1274":1,"1275":1,"1276":1,"1277":1,"1278":1,"1279":1,"1280":1,"1281":1,"1282":1,"1283":1,"1284":1,"1347":1,"1348":1,"1349":2,"1350":1,"1351":1,"1352":1,"2401":1,"2402":2,"2403":2,"2404":1,"2405":2,"2406":2,"2407":2,"2408":2},"2":{"4":1,"5":4,"18":4,"31":1,"32":1,"34":1,"36":1,"45":1,"48":1,"55":1,"75":2,"86":1,"89":1,"90":1,"92":4,"93":3,"94":1,"114":19,"119":2,"120":3,"123":1,"125":7,"133":1,"134":7,"149":5,"154":1,"160":4,"173":1,"176":19,"185":7,"189":1,"191":10,"199":14,"202":2,"206":1,"211":14,"213":1,"218":1,"222":6,"228":1,"229":1,"236":7,"241":1,"249":7,"253":1,"255":2,"256":1,"266":7,"270":1,"272":2,"273":1,"277":6,"305":1,"313":2,"314":1,"315":2,"316":2,"318":1,"331":1,"352":1,"370":16,"371":3,"374":7,"377":1,"378":4,"379":1,"380":5,"381":4,"386":6,"388":6,"390":5,"393":7,"394":7,"395":3,"401":2,"404":1,"414":4,"415":1,"417":1,"422":1,"423":1,"424":2,"425":2,"426":4,"441":2,"458":3,"496":1,"497":1,"500":1,"502":1,"522":3,"526":1,"527":2,"528":1,"529":8,"530":8,"533":2,"534":2,"537":1,"538":1,"539":1,"541":4,"548":1,"556":2,"559":1,"568":3,"570":2,"573":2,"577":1,"579":1,"583":1,"586":1,"587":1,"588":3,"591":1,"595":1,"601":1,"614":2,"623":1,"1238":1,"1245":2,"1252":1,"1266":1,"1269":1,"1270":4,"1275":1,"1276":1,"1279":1,"1312":1,"1332":4,"1333":1,"1334":1,"1336":1,"1338":1,"1344":1,"1345":2,"1346":4,"1347":1,"1348":1,"1352":1,"1354":3,"1355":3,"1359":2,"1362":2,"1375":1,"1376":3,"1377":2,"1378":1,"1379":2,"1383":9,"1384":1,"1385":11,"1397":1,"1398":1,"1400":1,"1404":1,"1405":1,"1413":1,"1415":1,"1416":1,"1434":1,"1440":2,"1445":1,"1500":1,"1507":1,"1508":1,"1509":1,"1512":1,"1527":4,"1530":1,"1548":4,"1549":2,"1553":1,"1554":1,"1559":4,"1560":2,"1564":1,"1593":1,"1631":1,"1637":1,"1657":1,"1665":1,"1679":1,"1716":1,"1729":2,"1733":1,"1778":1,"1783":1,"1791":1,"1800":1,"1801":1,"1803":1,"1804":1,"1805":1,"1806":1,"1807":1,"1813":2,"1826":1,"1830":1,"1886":1,"1887":1,"1891":1,"1897":1,"1898":1,"1899":1,"1917":2,"1921":1,"1930":1,"1933":1,"1936":1,"1952":2,"1957":1,"1958":1,"2023":1,"2028":1,"2032":1,"2042":1,"2044":1,"2078":1,"2103":2,"2126":1,"2130":1,"2137":2,"2145":1,"2150":2,"2154":2,"2157":1,"2161":2,"2164":3,"2169":5,"2170":1,"2171":2,"2172":1,"2178":1,"2181":4,"2182":5,"2183":1,"2243":1,"2245":2,"2247":2,"2249":2,"2252":5,"2255":4,"2259":2,"2260":6,"2261":2,"2262":6,"2263":5,"2264":1,"2274":1,"2279":1,"2293":1,"2299":3,"2300":2,"2302":2,"2324":1,"2349":1,"2354":1,"2356":1,"2396":1,"2401":3,"2402":4,"2404":3,"2405":2,"2409":2,"2410":1,"2411":1,"2417":1,"2421":2,"2422":6,"2423":4,"2425":2,"2428":2,"2433":1,"2435":7,"2436":4,"2437":2,"2438":6,"2439":1,"2440":3,"2441":4,"2445":7,"2446":4,"2452":2,"2454":2,"2469":1,"2470":1,"2502":1,"2512":2,"2565":2,"2566":10,"2567":5,"2571":2,"2572":1,"2577":2,"2614":2,"2616":2,"2686":2,"2706":2,"2708":2,"2710":2,"2711":2,"2712":70,"2723":1,"2727":1,"2728":2,"2735":1,"2736":1,"2737":1,"2738":1,"2746":2,"2747":1,"2748":1,"2749":1,"2756":1}}],["keymaps",{"0":{"17":1,"36":1,"120":1,"265":1,"275":1,"383":1,"528":1,"1352":1,"1354":1,"1358":1,"1362":1,"1376":1,"2406":1},"1":{"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"1355":1,"1356":1,"1357":1,"1359":1,"1360":1,"1361":1,"1362":1,"1363":1,"1364":1,"1365":1,"1366":1,"1367":1,"1368":1,"1369":1,"1370":1,"1371":1,"1372":1,"1373":1,"1374":1,"1375":1,"1377":1,"1378":1,"1379":1,"1380":1,"1381":1,"1382":1,"1383":1,"1384":1,"1385":1,"2407":1,"2408":1},"2":{"0":1,"2":1,"3":1,"4":2,"5":1,"7":1,"8":1,"9":1,"15":1,"17":2,"19":1,"32":1,"36":3,"39":1,"52":1,"60":1,"65":1,"73":1,"74":1,"75":2,"107":1,"114":3,"125":1,"134":1,"149":2,"154":1,"156":2,"160":2,"167":1,"173":2,"176":3,"182":2,"185":1,"191":8,"199":4,"201":1,"211":2,"213":4,"220":1,"222":1,"224":2,"228":5,"231":1,"232":1,"236":2,"238":1,"249":7,"265":5,"266":5,"268":2,"275":3,"277":1,"312":1,"318":1,"337":1,"352":1,"354":2,"363":1,"370":3,"371":1,"378":2,"380":1,"383":2,"388":1,"390":1,"401":1,"498":2,"519":2,"529":5,"530":2,"556":1,"559":1,"560":2,"622":1,"623":1,"641":1,"1252":1,"1253":1,"1265":3,"1266":1,"1270":1,"1346":1,"1359":3,"1378":1,"1381":1,"1385":2,"1393":2,"1792":1,"1918":1,"2145":1,"2146":1,"2164":1,"2171":1,"2252":2,"2255":1,"2259":2,"2261":1,"2262":3,"2299":2,"2300":2,"2302":2,"2305":1,"2400":1,"2401":1,"2406":4,"2417":1,"2422":1,"2423":1,"2424":1,"2440":1,"2441":7,"2443":2,"2445":2,"2446":1,"2447":1,"2448":1,"2456":1,"2565":6,"2566":5,"2567":4,"2723":1,"2724":2,"2725":1,"2747":1}}],["keyboardproject",{"2":{"2553":1}}],["keyboard=true",{"2":{"1245":1}}],["keyboard=clueboard",{"2":{"414":1,"415":1,"424":1,"2421":1}}],["keyboardname",{"2":{"669":1,"734":1,"760":1,"790":1,"824":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1,"2259":2}}],["keyboard>",{"2":{"393":1,"394":1,"564":1,"1348":1,"1349":2,"1892":1,"2229":1,"2252":1,"2425":1,"2445":1,"2446":1,"2454":1,"2469":1}}],["keyboard|keymap|kbfirmware",{"0":{"173":1},"2":{"176":1}}],["keyboardio",{"2":{"37":2,"176":1}}],["keyboard",{"0":{"29":1,"37":1,"44":1,"55":1,"59":1,"86":1,"102":1,"122":1,"143":1,"159":1,"168":1,"181":1,"197":1,"207":1,"217":1,"226":1,"241":1,"253":1,"262":1,"270":1,"291":1,"320":1,"385":1,"389":1,"498":1,"508":1,"521":1,"537":1,"538":1,"543":1,"567":1,"574":1,"575":1,"576":1,"577":1,"581":1,"582":1,"583":1,"587":1,"589":1,"591":1,"592":1,"595":1,"624":1,"1243":1,"1263":1,"1286":1,"1350":1,"1355":1,"1371":1,"1373":1,"1717":1,"1719":1,"1799":1,"1873":1,"1875":1,"1921":1,"1922":1,"2114":1,"2145":1,"2259":1,"2283":1,"2292":1,"2294":1,"2296":1,"2301":1,"2302":1,"2304":1,"2306":1,"2311":1,"2321":1,"2449":1,"2450":1,"2451":1,"2453":1,"2454":1,"2502":1,"2543":1,"2553":1,"2566":1,"2601":1,"2608":1,"2613":1,"2697":1},"1":{"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"45":1,"60":1,"509":1,"510":1,"511":1,"568":1,"575":1,"576":2,"577":2,"578":1,"579":1,"580":1,"581":1,"582":2,"583":2,"588":1,"590":1,"591":1,"593":1,"594":1,"595":1,"1264":1,"1351":1,"1352":1,"1800":1,"1801":1,"2115":1,"2116":1,"2117":1,"2118":1,"2119":1,"2120":1,"2121":1,"2122":1,"2123":1,"2124":1,"2125":1,"2126":1,"2127":1,"2128":1,"2129":1,"2130":1,"2131":1,"2132":1,"2133":1,"2134":1,"2293":1,"2294":1,"2295":1,"2296":1,"2297":2,"2298":2,"2299":2,"2300":2,"2301":2,"2302":2,"2303":1,"2304":1,"2305":2,"2306":1,"2307":1,"2308":1,"2309":1,"2310":1,"2322":1,"2323":1,"2324":1,"2325":1,"2326":1,"2450":1,"2451":1,"2452":2,"2453":2,"2454":1,"2455":1,"2554":1,"2555":1,"2556":1,"2557":1,"2558":1,"2559":1,"2560":1,"2561":1,"2562":1,"2602":1,"2603":1,"2604":1,"2605":1,"2606":1,"2607":1,"2608":1,"2609":1,"2610":1,"2611":1,"2612":1,"2614":1,"2615":1,"2616":1,"2617":1,"2618":1,"2619":1,"2620":1},"2":{"4":2,"14":2,"31":2,"34":3,"36":1,"50":6,"55":1,"56":1,"62":1,"67":3,"70":5,"74":1,"75":2,"76":2,"82":2,"86":6,"90":3,"92":1,"93":2,"94":3,"99":1,"102":2,"105":4,"107":1,"110":2,"111":2,"112":1,"114":7,"116":2,"119":1,"120":1,"122":2,"124":1,"125":5,"133":4,"134":10,"138":1,"143":4,"149":14,"159":2,"160":3,"168":2,"169":1,"173":2,"176":8,"181":2,"184":1,"185":5,"191":10,"197":2,"199":6,"201":3,"204":1,"207":2,"209":3,"211":10,"217":3,"218":1,"221":2,"222":11,"226":2,"229":3,"233":2,"234":1,"236":11,"238":1,"240":1,"241":4,"249":12,"253":4,"255":1,"262":3,"263":2,"265":1,"266":67,"270":4,"277":7,"291":1,"305":1,"307":1,"311":1,"313":4,"318":2,"320":2,"322":1,"334":2,"336":1,"337":1,"370":10,"371":3,"374":2,"375":2,"378":7,"380":1,"381":4,"383":3,"384":2,"385":3,"386":4,"388":1,"389":4,"391":4,"393":6,"394":6,"395":3,"401":3,"404":1,"414":4,"415":2,"421":1,"422":1,"425":2,"426":6,"437":2,"496":3,"497":1,"498":2,"502":8,"504":2,"506":2,"508":2,"511":1,"513":3,"515":7,"516":4,"519":3,"521":3,"528":1,"529":5,"530":2,"533":2,"534":6,"535":3,"537":4,"540":1,"556":2,"559":5,"563":1,"564":1,"565":1,"566":3,"567":2,"568":3,"573":1,"574":4,"576":3,"577":3,"579":1,"580":6,"581":1,"582":1,"583":3,"584":2,"586":1,"587":1,"588":1,"589":1,"590":2,"591":1,"592":3,"595":1,"601":1,"606":1,"609":3,"614":2,"623":1,"624":6,"625":2,"626":5,"627":6,"629":2,"660":1,"668":1,"681":2,"688":1,"689":1,"690":1,"691":1,"693":1,"733":1,"759":1,"789":1,"823":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1121":1,"1124":1,"1127":1,"1130":2,"1133":1,"1147":1,"1226":1,"1230":1,"1235":1,"1236":1,"1238":1,"1242":1,"1243":3,"1245":2,"1246":1,"1247":1,"1248":1,"1254":1,"1257":1,"1264":1,"1268":1,"1271":1,"1273":1,"1274":1,"1275":1,"1278":3,"1279":1,"1280":4,"1281":2,"1283":2,"1284":1,"1286":2,"1287":5,"1290":1,"1294":1,"1298":2,"1300":2,"1302":1,"1303":1,"1312":1,"1314":2,"1321":1,"1326":1,"1329":1,"1331":1,"1332":3,"1333":1,"1334":1,"1335":1,"1337":1,"1338":1,"1340":1,"1341":4,"1345":1,"1346":1,"1347":4,"1348":1,"1349":1,"1351":7,"1352":1,"1353":1,"1354":1,"1355":1,"1357":1,"1359":1,"1364":2,"1376":1,"1377":1,"1385":6,"1386":1,"1393":1,"1398":2,"1399":1,"1403":1,"1404":2,"1405":5,"1406":1,"1410":1,"1435":1,"1436":1,"1440":1,"1454":1,"1457":1,"1463":2,"1464":1,"1469":2,"1470":1,"1494":1,"1495":1,"1496":1,"1498":1,"1499":2,"1528":1,"1530":4,"1549":1,"1553":4,"1558":2,"1560":3,"1563":1,"1565":1,"1567":1,"1573":2,"1579":1,"1593":1,"1594":1,"1655":3,"1673":3,"1674":3,"1675":1,"1676":2,"1677":1,"1714":3,"1715":1,"1716":4,"1717":1,"1718":1,"1719":2,"1720":1,"1721":1,"1725":9,"1726":1,"1728":1,"1729":3,"1730":2,"1733":1,"1776":1,"1779":1,"1780":1,"1785":1,"1792":1,"1798":1,"1799":1,"1812":1,"1813":3,"1816":5,"1825":1,"1826":1,"1828":3,"1829":2,"1830":1,"1866":1,"1870":1,"1874":2,"1875":1,"1883":1,"1885":2,"1891":1,"1902":2,"1904":1,"1905":1,"1906":1,"1907":1,"1918":1,"1921":4,"1922":1,"1935":4,"1946":9,"1947":1,"1948":1,"1949":6,"1950":1,"1952":3,"1954":2,"1957":1,"1958":1,"1959":1,"1960":1,"2021":1,"2024":1,"2025":1,"2030":1,"2031":3,"2032":1,"2041":1,"2042":6,"2043":1,"2044":1,"2060":1,"2061":1,"2063":2,"2064":1,"2066":1,"2067":1,"2076":2,"2108":1,"2117":1,"2118":1,"2121":2,"2122":2,"2125":2,"2126":5,"2127":1,"2128":2,"2129":9,"2130":9,"2131":2,"2134":1,"2137":4,"2140":5,"2141":1,"2145":3,"2146":4,"2149":3,"2150":2,"2154":1,"2157":2,"2160":1,"2167":2,"2176":1,"2177":1,"2183":3,"2194":1,"2229":1,"2233":1,"2237":2,"2245":3,"2247":3,"2249":3,"2250":1,"2252":5,"2257":2,"2259":6,"2261":3,"2262":11,"2263":7,"2264":3,"2266":2,"2268":5,"2271":2,"2276":1,"2277":7,"2278":1,"2279":4,"2280":1,"2281":2,"2283":1,"2284":1,"2293":2,"2294":3,"2295":4,"2296":4,"2297":1,"2298":1,"2299":4,"2300":5,"2301":3,"2302":3,"2303":3,"2304":1,"2305":6,"2306":1,"2308":1,"2309":1,"2311":4,"2314":1,"2315":2,"2316":2,"2317":1,"2319":1,"2322":1,"2330":3,"2332":4,"2334":3,"2336":1,"2338":1,"2340":1,"2342":1,"2349":1,"2356":5,"2370":2,"2385":1,"2393":1,"2396":3,"2397":1,"2398":1,"2405":1,"2406":1,"2407":2,"2411":1,"2417":5,"2418":1,"2420":1,"2421":5,"2422":2,"2423":1,"2425":1,"2426":1,"2427":2,"2429":1,"2435":1,"2436":1,"2439":1,"2441":1,"2446":1,"2448":1,"2449":1,"2450":7,"2451":2,"2452":3,"2454":5,"2455":3,"2457":1,"2469":4,"2490":2,"2491":1,"2502":1,"2508":1,"2512":2,"2513":2,"2515":1,"2523":5,"2524":2,"2525":2,"2526":1,"2533":1,"2540":1,"2553":10,"2554":2,"2555":1,"2556":7,"2557":1,"2558":1,"2559":1,"2564":2,"2565":1,"2566":26,"2567":4,"2572":5,"2573":1,"2576":2,"2577":4,"2581":1,"2584":1,"2608":1,"2609":1,"2614":6,"2615":8,"2616":1,"2619":1,"2620":3,"2624":2,"2625":1,"2626":1,"2628":1,"2630":1,"2632":2,"2633":2,"2639":1,"2643":1,"2646":1,"2647":1,"2650":1,"2652":1,"2657":2,"2658":2,"2665":1,"2668":1,"2669":1,"2671":4,"2672":7,"2673":2,"2674":1,"2686":4,"2688":1,"2695":1,"2697":2,"2699":5,"2708":1,"2710":5,"2711":1,"2723":1,"2725":4,"2727":2,"2738":1,"2740":2,"2741":1,"2744":6,"2745":2,"2746":3,"2748":1,"2749":1,"2756":1}}],["keyboards",{"0":{"41":1,"54":1,"116":1,"382":1,"559":1,"568":1,"1346":1,"1381":1,"1496":1,"1558":1,"2271":1,"2614":1},"1":{"42":1,"43":1,"55":1,"56":1,"57":1,"58":1,"1347":1,"1348":1,"1349":1,"1350":1,"1351":1,"1352":1},"2":{"2":1,"14":1,"28":1,"30":1,"33":1,"35":2,"36":3,"37":1,"43":3,"49":1,"50":1,"58":1,"65":2,"67":1,"69":2,"70":5,"73":2,"74":3,"86":3,"90":1,"92":1,"93":2,"102":1,"107":3,"109":1,"110":1,"114":9,"116":1,"118":1,"122":1,"123":1,"124":2,"132":1,"134":5,"141":1,"143":1,"149":14,"159":1,"160":2,"168":1,"169":2,"173":2,"176":2,"181":1,"191":4,"197":1,"199":2,"201":3,"209":1,"211":3,"213":2,"218":1,"221":1,"222":5,"235":1,"236":4,"240":2,"249":17,"251":1,"262":1,"266":8,"277":3,"282":1,"317":4,"363":1,"370":4,"371":1,"373":1,"374":3,"375":2,"378":1,"380":1,"382":2,"389":1,"390":1,"391":1,"401":1,"429":1,"448":1,"493":1,"499":2,"502":2,"506":1,"508":1,"509":1,"515":1,"519":1,"521":1,"529":1,"530":1,"538":1,"552":1,"556":1,"559":4,"560":3,"564":1,"606":5,"607":1,"622":1,"626":1,"630":1,"641":1,"1121":1,"1124":1,"1127":2,"1130":2,"1132":3,"1133":2,"1135":1,"1137":1,"1138":1,"1241":1,"1242":1,"1244":1,"1257":1,"1265":3,"1272":1,"1276":1,"1278":1,"1310":1,"1316":1,"1317":1,"1329":2,"1330":2,"1346":1,"1352":1,"1377":1,"1378":1,"1384":1,"1385":1,"1393":2,"1403":1,"1405":1,"1430":1,"1436":3,"1454":1,"1455":1,"1457":1,"1459":1,"1494":1,"1495":3,"1501":1,"1527":1,"1528":1,"1547":1,"1573":1,"1714":1,"1730":1,"1816":1,"1817":1,"1824":1,"1870":2,"1884":1,"1900":1,"1954":1,"1958":1,"1959":1,"2031":1,"2032":2,"2035":1,"2042":2,"2044":1,"2061":1,"2114":4,"2118":2,"2125":1,"2131":1,"2140":1,"2146":1,"2225":1,"2229":2,"2230":2,"2232":1,"2234":1,"2241":1,"2243":1,"2244":1,"2245":1,"2247":1,"2252":1,"2255":1,"2257":1,"2258":1,"2259":2,"2261":2,"2262":4,"2263":1,"2268":1,"2277":1,"2280":1,"2284":1,"2292":1,"2293":1,"2295":3,"2296":1,"2299":13,"2300":13,"2307":3,"2311":1,"2312":1,"2322":1,"2345":1,"2355":1,"2394":1,"2400":1,"2421":3,"2422":2,"2425":1,"2427":1,"2441":1,"2445":1,"2450":1,"2454":1,"2456":1,"2469":3,"2539":1,"2541":3,"2542":2,"2543":1,"2544":1,"2545":1,"2546":1,"2553":3,"2564":1,"2566":3,"2567":1,"2575":6,"2613":1,"2614":3,"2653":1,"2671":3,"2672":1,"2673":1,"2688":1,"2695":1,"2708":1,"2710":1,"2725":3,"2742":1}}],["g5",{"2":{"1793":1,"2371":1}}],["g3",{"2":{"1793":1,"2371":1}}],["g1",{"2":{"1793":1,"2371":1}}],["g♯",{"2":{"1793":6,"2371":6}}],["gs5",{"2":{"1793":1,"2371":1}}],["gs4",{"2":{"1793":1,"2371":1}}],["gs3",{"2":{"1793":1,"2371":1}}],["gs2",{"2":{"1793":1,"2371":1}}],["gs1",{"2":{"1793":1,"2371":1}}],["gs",{"2":{"1793":1,"2371":1}}],["gskt00",{"2":{"122":2}}],["g♭",{"2":{"1793":6,"2371":6}}],["gb5",{"2":{"1793":1,"2371":1}}],["gb4",{"2":{"1793":1,"2371":1}}],["gb3",{"2":{"1793":1,"2371":1}}],["gb2",{"2":{"1793":1,"2371":1}}],["gb1",{"2":{"1793":1,"2371":1}}],["gb",{"2":{"1549":1,"1793":1,"2371":1}}],["gboy",{"2":{"191":1}}],["gboards",{"2":{"143":4,"149":1,"160":1,"191":1,"1527":2}}],["gnd",{"2":{"638":1,"639":1,"656":8,"662":1,"758":1,"787":1,"819":1,"851":8,"886":8,"920":1,"954":1,"988":1,"1022":8,"1056":8,"1090":8,"1123":1,"1126":1,"1129":1,"1146":1,"1236":1,"1573":1,"1717":1,"2061":1,"2119":1,"2120":1,"2230":1,"2233":1,"2235":1,"2236":1,"2238":1,"2240":1,"2242":1,"2276":1,"2330":2,"2332":4,"2334":2,"2336":2,"2338":2,"2340":2,"2352":2,"2450":1,"2513":1,"2530":6}}],["gnu++14",{"2":{"176":1}}],["gnu11",{"2":{"176":1}}],["gnu",{"0":{"330":1},"2":{"134":1,"236":3,"322":1,"326":1,"1380":4,"2310":1,"2570":4}}],["gp3",{"2":{"2541":1}}],["gp8",{"2":{"2533":1}}],["gpx",{"2":{"2533":1}}],["gp0",{"2":{"1908":1,"2541":2}}],["gp19",{"2":{"2541":1}}],["gp18",{"2":{"2541":1}}],["gp17",{"2":{"2539":1}}],["gp1",{"2":{"1908":1,"2541":2}}],["gpt",{"2":{"657":8,"658":4,"1470":4}}],["gptd15",{"2":{"1470":1}}],["gptd8",{"2":{"662":1}}],["gptd8tim8",{"2":{"656":1}}],["gptd6",{"2":{"658":1}}],["gptd6tim6",{"2":{"656":1}}],["gptd9",{"2":{"657":1}}],["gptd7tim7",{"2":{"656":1}}],["gp20",{"2":{"2541":1}}],["gp2",{"2":{"2541":1}}],["gp29",{"2":{"636":1}}],["gp28",{"2":{"636":1}}],["gp27",{"2":{"636":1}}],["gp26",{"2":{"636":1}}],["gpl3",{"2":{"2564":1}}],["gpl2+",{"2":{"2564":1,"2566":1}}],["gpl2",{"2":{"2564":1}}],["gplv3",{"2":{"2310":2}}],["gplv2",{"0":{"2570":1},"2":{"2310":1}}],["gpl",{"2":{"522":1,"1380":1,"2310":1,"2564":1,"2570":1}}],["gpioa",{"2":{"1320":1}}],["gpiob",{"2":{"707":2}}],["gpios",{"2":{"696":1,"2523":1,"2524":1,"2525":1}}],["gpiov3",{"2":{"661":1}}],["gpiov2",{"2":{"661":1}}],["gpiov1",{"2":{"661":1}}],["gpiof",{"2":{"65":1}}],["gpio",{"0":{"148":1,"243":1,"695":1,"1551":1,"2532":1},"1":{"696":1,"697":1,"698":1,"2533":1,"2534":1},"2":{"49":1,"64":1,"94":1,"114":3,"133":1,"134":1,"149":2,"243":13,"244":1,"249":2,"266":4,"277":1,"576":5,"580":3,"633":1,"644":2,"666":3,"674":1,"680":1,"695":1,"696":13,"697":1,"707":2,"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1122":1,"1123":1,"1124":1,"1125":1,"1126":1,"1127":2,"1129":2,"1130":1,"1134":2,"1145":1,"1177":2,"1212":1,"1214":1,"1219":1,"1225":3,"1312":1,"1467":1,"1471":2,"1547":1,"1591":4,"1717":6,"1908":2,"2141":3,"2524":2,"2525":2,"2530":1,"2532":1,"2533":3,"2534":3,"2539":1,"2543":1,"2564":1,"2675":2,"2676":3,"2677":3,"2682":1,"2684":2,"2685":6,"2689":4,"2692":2,"2693":4,"2697":3,"2700":1}}],["gd25q64cs",{"2":{"2544":2}}],["gdb",{"2":{"328":1,"335":1,"2513":3,"2755":1}}],["gd32v",{"2":{"191":1,"629":2}}],["gd32vf103",{"2":{"130":2,"134":1,"176":2,"495":1}}],["gmt",{"2":{"315":2,"317":2}}],["gmmk2",{"2":{"236":1}}],["gmmk",{"2":{"102":3,"114":11,"134":1,"149":2,"159":4,"160":2,"176":3,"191":2,"199":1,"222":1,"2244":1}}],["gc9a01",{"2":{"277":1,"2573":2,"2576":7}}],["gc9107",{"2":{"277":1}}],["gc9xxx",{"2":{"277":1}}],["gcc10",{"2":{"134":1}}],["gcc",{"2":{"73":1,"132":1,"134":2,"222":1,"325":1,"331":1,"2262":1,"2501":1}}],["gk61",{"2":{"236":3}}],["g2",{"2":{"211":2,"1793":1,"2371":1}}],["g60",{"2":{"211":2}}],["g431",{"2":{"249":1}}],["g4",{"2":{"191":1,"1793":1,"2371":1}}],["g474",{"2":{"49":1}}],["gif",{"2":{"2575":2}}],["gifs",{"2":{"153":1,"2573":1}}],["giving",{"2":{"1495":1,"2482":1}}],["gives",{"2":{"433":1,"436":1,"479":1,"1491":1,"1515":1,"1685":1,"1725":1,"1821":1,"1946":1,"2263":1,"2474":1,"2729":1}}],["give",{"0":{"2326":1},"2":{"303":1,"1138":1,"1300":1,"1525":2,"1884":1,"1921":1,"2226":1,"2275":1,"2305":1,"2479":1,"2501":1,"2535":1,"2729":1,"2750":1}}],["given",{"0":{"2720":1},"2":{"166":1,"638":2,"639":2,"739":1,"766":1,"796":1,"830":1,"863":1,"897":1,"931":1,"965":1,"999":1,"1033":1,"1067":1,"1101":1,"1154":1,"1300":1,"1397":1,"1416":1,"1518":3,"1525":1,"1527":1,"1650":1,"1653":1,"1694":1,"1699":1,"1702":1,"1705":1,"1708":1,"1711":1,"1802":2,"1827":1,"2051":9,"2054":2,"2075":3,"2152":1,"2171":1,"2203":1,"2206":1,"2209":1,"2216":1,"2223":1,"2262":1,"2277":1,"2304":1,"2315":1,"2319":1,"2320":1,"2403":1,"2409":1,"2450":1,"2550":1,"2564":1,"2566":2,"2567":1,"2577":2,"2616":1,"2728":1,"2748":1}}],["gigadevice",{"0":{"495":1},"2":{"495":1}}],["giabalanai",{"2":{"222":1}}],["ginkgo65hot",{"2":{"176":1}}],["gingham",{"2":{"143":2}}],["gitconfig",{"2":{"385":1}}],["gitignore",{"2":{"149":2,"176":1,"191":1}}],["git",{"0":{"6":1,"1262":1,"2431":1,"2471":1,"2472":1,"2475":1,"2486":1,"2636":1},"1":{"2472":1,"2476":1,"2477":1},"2":{"10":1,"24":1,"114":1,"199":1,"211":1,"249":1,"347":12,"349":16,"352":2,"358":10,"359":11,"360":9,"361":6,"400":1,"428":1,"529":1,"530":2,"554":7,"556":1,"1262":2,"2252":2,"2255":8,"2428":1,"2431":12,"2432":1,"2437":2,"2438":10,"2440":1,"2443":2,"2444":2,"2446":1,"2453":1,"2461":1,"2464":8,"2466":2,"2472":1,"2474":21,"2475":1,"2476":1,"2477":19,"2479":18,"2480":18,"2481":2,"2486":2,"2492":1,"2503":1,"2506":10,"2510":3,"2513":1,"2564":1,"2568":3,"2637":1,"2723":1}}],["github",{"0":{"1262":1,"2255":1,"2428":1,"2432":1,"2437":1,"2438":1,"2443":1,"2448":1,"2637":1,"2716":1},"1":{"2429":1,"2430":1,"2431":1,"2432":1,"2433":1,"2434":1,"2435":1,"2436":1,"2437":1,"2438":1,"2439":1,"2440":1},"2":{"2":1,"21":2,"134":1,"236":1,"282":3,"340":1,"341":2,"347":1,"350":1,"352":1,"358":1,"359":2,"425":1,"446":1,"482":1,"515":1,"520":1,"554":6,"624":1,"1242":1,"1260":1,"1261":1,"1262":2,"1274":1,"1275":2,"1281":3,"1283":1,"1298":1,"1376":1,"1380":3,"1830":1,"2183":1,"2252":1,"2255":6,"2421":2,"2422":2,"2428":3,"2429":2,"2430":2,"2431":1,"2432":1,"2433":1,"2435":2,"2436":2,"2437":4,"2438":7,"2439":2,"2440":2,"2441":2,"2442":1,"2443":2,"2444":2,"2446":1,"2448":3,"2462":1,"2468":2,"2472":1,"2475":1,"2477":11,"2479":5,"2510":2,"2511":1,"2514":1,"2553":1,"2566":1,"2672":1,"2716":1}}],["gluing",{"2":{"2267":1}}],["glue",{"2":{"430":1,"2280":1}}],["glossary",{"0":{"2621":1},"1":{"2622":1,"2623":1,"2624":1,"2625":1,"2626":1,"2627":1,"2628":1,"2629":1,"2630":1,"2631":1,"2632":1,"2633":1,"2634":1,"2635":1,"2636":1,"2637":1,"2638":1,"2639":1,"2640":1,"2641":1,"2642":1,"2643":1,"2644":1,"2645":1,"2646":1,"2647":1,"2648":1,"2649":1,"2650":1,"2651":1,"2652":1,"2653":1,"2654":1,"2655":1,"2656":1,"2657":1,"2658":1,"2659":1,"2660":1,"2661":1,"2662":1,"2663":1,"2664":1,"2665":1,"2666":1,"2667":1,"2668":1,"2669":1}}],["glorious",{"2":{"2244":2}}],["globs",{"2":{"411":1}}],["globe",{"2":{"236":1}}],["globally",{"2":{"1341":1,"1663":1,"1665":1}}],["global",{"0":{"667":1,"822":1,"855":1,"889":1,"923":1,"957":1,"991":1,"1025":1,"1059":1,"1093":1},"2":{"94":1,"134":1,"172":1,"176":2,"191":1,"325":1,"326":1,"328":1,"460":2,"515":1,"566":1,"644":1,"652":1,"666":2,"667":1,"818":2,"822":1,"850":2,"855":1,"885":2,"889":1,"919":2,"923":1,"953":2,"957":1,"987":2,"991":1,"1021":2,"1025":1,"1055":2,"1059":1,"1089":2,"1093":1,"1326":4,"1329":1,"1344":1,"1385":1,"1729":3,"1757":1,"1758":1,"1759":1,"1760":1,"1761":1,"1899":1,"1952":3,"1984":1,"1985":1,"1986":1,"1987":1,"1988":1,"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2012":1,"2014":1,"2016":1,"2170":1,"2437":1,"2675":1,"2727":1,"2728":1}}],["glcdfont",{"2":{"1814":1,"1817":1,"2141":1}}],["gliding",{"2":{"1807":1}}],["glide",{"2":{"1807":1,"1865":1,"1872":3}}],["glides",{"2":{"1807":1}}],["glitch",{"2":{"211":1,"659":1}}],["glance",{"2":{"433":1,"2480":1,"2743":1}}],["glamorous",{"2":{"251":1}}],["glacier",{"2":{"211":1}}],["glyphs",{"2":{"2575":21,"2585":2,"2587":4,"2588":1,"2589":2,"2590":2}}],["glyph",{"0":{"2588":1,"2589":1},"2":{"176":1,"2575":2,"2585":2,"2587":3,"2588":13,"2589":8,"2590":2}}],["glenpickle",{"2":{"143":4,"149":1}}],["ggkeyboards",{"2":{"114":1}}],["gu",{"2":{"2370":3,"2396":3}}],["guessed",{"2":{"1830":1}}],["guess",{"2":{"1824":1}}],["guestures",{"2":{"176":1}}],["guarantees",{"2":{"2577":1}}],["guarantee",{"2":{"570":1}}],["guaranteed",{"2":{"341":1,"698":1}}],["guarded",{"2":{"2548":1}}],["guard",{"2":{"160":1,"176":1,"199":1,"222":1,"356":1}}],["guards",{"2":{"4":1,"134":1,"453":1,"2564":1}}],["gurindam",{"2":{"143":2}}],["guiding",{"2":{"2722":1}}],["guidance",{"2":{"2418":1}}],["guided",{"2":{"2750":1}}],["guides",{"0":{"2281":1},"2":{"551":1,"1237":1,"2272":1}}],["guidelines",{"0":{"556":1,"2292":1},"1":{"557":1,"558":1,"559":1,"560":1,"561":1,"2293":1,"2294":1,"2295":1,"2296":1,"2297":1,"2298":1,"2299":1,"2300":1,"2301":1,"2302":1,"2303":1,"2304":1,"2305":1,"2306":1,"2307":1,"2308":1,"2309":1,"2310":1},"2":{"367":2,"453":1,"462":1,"550":2,"556":1,"559":1,"560":1,"615":1,"1262":1,"1337":1,"1338":1,"2259":1,"2440":1,"2553":2,"2559":1,"2725":1}}],["guide",{"0":{"303":1,"1823":1,"2265":1,"2327":1},"1":{"2266":1,"2267":1,"2268":1,"2269":1,"2270":1,"2271":1,"2272":1,"2273":1,"2274":1,"2275":1,"2276":1,"2277":1,"2278":1,"2279":1,"2280":1,"2281":1,"2328":1,"2329":1,"2330":1,"2331":1,"2332":1,"2333":1,"2334":1,"2335":1,"2336":1,"2337":1,"2338":1,"2339":1,"2340":1,"2341":1,"2342":1,"2343":1,"2344":1,"2345":1,"2346":1,"2347":1,"2348":1,"2349":1,"2350":1,"2351":1,"2352":1,"2353":1},"2":{"199":1,"322":2,"323":1,"371":1,"624":2,"1258":1,"2134":1,"2255":2,"2262":1,"2267":1,"2268":1,"2279":1,"2281":3,"2346":1,"2417":1,"2418":3,"2419":1,"2420":1,"2428":2,"2433":1,"2440":1,"2442":1,"2454":1,"2503":1,"2504":1}}],["guitar",{"2":{"1398":2,"1399":3,"1403":1}}],["gui+s",{"2":{"196":1,"1680":1}}],["gui",{"2":{"114":1,"231":2,"266":1,"292":1,"318":1,"623":1,"1271":2,"1299":8,"1300":8,"1370":1,"1564":1,"1565":1,"1566":1,"1568":2,"1582":1,"1666":3,"1668":1,"1677":8,"1932":1,"1939":3,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2240":1,"2242":1,"2243":1,"2244":1,"2355":4,"2364":1,"2370":26,"2373":9,"2374":10,"2390":4,"2396":26,"2410":13,"2417":1,"2491":4,"2492":1,"2578":1,"2702":1,"2706":1,"2738":8}}],["gr",{"2":{"2152":1,"2153":3}}],["grunt",{"2":{"1375":1}}],["grb",{"2":{"1214":1,"1216":3}}],["grv",{"2":{"313":2,"530":2,"1564":2,"1666":2,"2355":1,"2388":1,"2407":1,"2408":1,"2727":1,"2728":1}}],["growing",{"2":{"2750":1}}],["grow",{"2":{"550":1,"2701":1}}],["grown",{"2":{"113":1,"606":1,"2292":2}}],["grounded",{"2":{"2344":1}}],["ground",{"2":{"334":1,"502":1,"684":1,"1225":1,"1235":1,"1236":1,"1388":1,"1391":2,"1395":1,"1471":1,"1551":1,"1561":1,"2278":1,"2558":1}}],["groupbuys",{"2":{"2566":1}}],["group",{"0":{"1426":1,"1427":1,"1428":1,"1429":1},"2":{"249":5,"407":1,"457":1,"609":1,"1257":1,"1426":1,"1427":1,"1428":1,"1429":1,"2038":1,"2147":4,"2322":1,"2354":1,"2753":1}}],["groups",{"2":{"231":1,"1416":2,"2148":1}}],["gritty",{"0":{"2409":1},"2":{"303":1}}],["grin",{"2":{"179":1}}],["grid",{"2":{"112":1,"249":1,"510":3,"1352":1,"1547":1,"1725":1,"1946":1,"1950":1,"2125":3,"2682":1,"2697":1}}],["grayscale",{"2":{"2575":4,"2596":5}}],["graystudio",{"2":{"211":1}}],["gram",{"2":{"1943":1}}],["grammar",{"2":{"176":1}}],["graphic",{"2":{"2575":2}}],["graphical",{"2":{"2323":1,"2427":1,"2429":1,"2457":1,"2503":1,"2573":1,"2578":1}}],["graphics",{"0":{"408":1,"2592":1,"2594":1},"1":{"2593":1,"2594":1,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1},"2":{"2575":2,"2578":2,"2592":3,"2593":1,"2594":4,"2595":1}}],["grape",{"2":{"211":1}}],["grabbing",{"2":{"2273":1}}],["grab",{"2":{"324":1,"2273":1,"2474":1}}],["gracefully",{"2":{"209":1}}],["granularity",{"2":{"2111":1}}],["granular",{"2":{"195":1,"1411":1,"1416":1,"1423":1,"2727":1,"2735":1,"2736":1,"2737":1,"2738":1}}],["gradients",{"2":{"1949":2}}],["gradient",{"2":{"176":1,"199":1,"292":1,"1332":1,"1728":4,"1948":2,"1949":22,"1951":3,"2034":2,"2036":2,"2037":2,"2039":1,"2040":2,"2376":2,"2708":3}}],["grave",{"0":{"1563":1,"1666":1,"2364":1},"1":{"1564":1,"1565":1,"1566":1,"1567":1,"1568":1},"2":{"114":1,"188":1,"191":1,"199":1,"291":1,"623":1,"1282":1,"1530":1,"1563":2,"1566":1,"1568":4,"1584":1,"1666":4,"2355":1,"2364":2,"2370":2,"2388":1,"2396":2,"2405":2,"2424":1,"2508":1,"2702":1,"2711":1,"2749":1}}],["grs",{"2":{"114":1,"149":1}}],["greyscale",{"2":{"2585":1,"2592":1}}],["grep",{"2":{"2566":2}}],["greek",{"2":{"2711":1,"2712":2}}],["greeting",{"2":{"430":1,"1579":1}}],["greet",{"2":{"426":1,"430":1}}],["green",{"0":{"647":1,"649":1,"675":1,"677":1,"741":1,"743":1,"749":1,"768":1,"770":1,"776":1,"800":1,"802":1,"808":1,"832":1,"834":1,"840":1,"867":1,"869":1,"875":1,"901":1,"903":1,"909":1,"935":1,"937":1,"943":1,"969":1,"971":1,"977":1,"1003":1,"1005":1,"1011":1,"1037":1,"1039":1,"1045":1,"1071":1,"1073":1,"1079":1,"1105":1,"1107":1,"1113":1,"1158":1,"1160":1,"1166":1},"1":{"648":1,"650":1,"676":1,"678":1,"742":1,"744":1,"750":1,"769":1,"771":1,"777":1,"801":1,"803":1,"809":1,"833":1,"835":1,"841":1,"868":1,"870":1,"876":1,"902":1,"904":1,"910":1,"936":1,"938":1,"944":1,"970":1,"972":1,"978":1,"1004":1,"1006":1,"1012":1,"1038":1,"1040":1,"1046":1,"1072":1,"1074":1,"1080":1,"1106":1,"1108":1,"1114":1,"1159":1,"1161":1,"1167":1},"2":{"49":1,"282":3,"341":1,"435":1,"542":2,"593":1,"626":1,"648":2,"650":2,"669":1,"672":1,"676":2,"678":2,"734":1,"737":1,"742":2,"744":2,"750":2,"760":1,"763":1,"769":2,"771":2,"777":2,"790":1,"793":1,"801":2,"803":2,"809":2,"824":1,"827":1,"833":2,"835":2,"841":2,"857":1,"860":1,"868":2,"870":2,"876":2,"891":1,"894":1,"902":2,"904":2,"910":2,"925":1,"928":1,"936":2,"938":2,"944":2,"959":1,"962":1,"970":2,"972":2,"978":2,"993":1,"996":1,"1004":2,"1006":2,"1012":2,"1027":1,"1030":1,"1038":2,"1040":2,"1046":2,"1061":1,"1064":1,"1072":2,"1074":2,"1080":2,"1095":1,"1098":1,"1106":2,"1108":2,"1114":2,"1148":1,"1151":1,"1159":2,"1161":2,"1167":2,"1216":1,"1217":1,"1332":1,"1953":2,"1957":2,"1958":1,"1971":1,"1973":1,"2034":1,"2038":1,"2042":2,"2044":1,"2051":1,"2058":3,"2376":1,"2513":1,"2569":1}}],["greatest",{"2":{"2548":1}}],["greater",{"2":{"63":1,"352":1,"364":1,"660":1,"1336":1,"1431":2,"1893":1,"2411":1}}],["great",{"2":{"483":1,"506":1,"1258":1,"1416":1,"1495":1,"1497":1,"1683":1,"2446":1,"2485":1,"2486":1,"2510":1,"2515":1,"2546":1}}],["greatly",{"2":{"49":1,"2262":1}}],["gh",{"2":{"2438":4}}],["ghcr",{"2":{"2437":1}}],["gh62",{"2":{"391":5,"2277":5}}],["gh60",{"2":{"370":2,"401":2,"2453":1}}],["gherkin",{"2":{"266":1,"2529":1}}],["ghoul",{"2":{"199":1}}],["ghosting",{"0":{"788":1,"821":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1},"2":{"134":1,"788":1,"821":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"2311":2,"2689":1}}],["ghost",{"2":{"112":1,"199":1,"502":2,"786":1,"2689":1}}],["gh80",{"2":{"57":4,"266":1}}],["gauge",{"2":{"2719":1}}],["gather",{"2":{"1853":1,"2719":1}}],["gathering",{"2":{"401":1}}],["gateway",{"2":{"2749":1}}],["gateron",{"2":{"2266":1}}],["gate",{"2":{"1458":1,"1471":2}}],["gasc",{"2":{"1300":2}}],["gamma",{"2":{"236":1}}],["game",{"2":{"241":6,"1353":1,"1512":1,"1634":1,"2486":1}}],["gamers",{"2":{"137":1}}],["gamebuddy",{"2":{"102":3,"114":1}}],["galleon",{"2":{"211":1}}],["galaxy",{"2":{"114":1}}],["garbled",{"2":{"191":1}}],["gap",{"2":{"134":1,"2311":1}}],["gain",{"2":{"131":1,"633":1,"2708":1}}],["gained",{"2":{"100":1,"107":1,"153":1}}],["gaining",{"2":{"86":1,"2630":1}}],["gold",{"2":{"1953":2,"2058":3}}],["goldenrod",{"2":{"1953":2,"2058":2}}],["golden",{"2":{"1436":1}}],["googletest",{"2":{"2255":1}}],["google",{"0":{"2751":2},"2":{"336":1,"2751":3,"2752":1}}],["googling",{"2":{"335":1}}],["goodbye",{"2":{"1398":1,"1399":2}}],["good",{"2":{"119":1,"453":1,"458":2,"473":1,"474":1,"476":1,"551":1,"574":1,"589":1,"1238":1,"1259":1,"1340":1,"1346":1,"1380":1,"1438":1,"1873":1,"1921":1,"2161":1,"2169":2,"2255":1,"2270":1,"2272":2,"2273":1,"2274":1,"2311":1,"2324":1,"2353":1,"2417":1,"2484":1,"2514":1,"2556":1,"2727":1,"2740":1,"2750":1}}],["goal",{"2":{"262":1,"457":1,"1346":1}}],["going",{"2":{"188":1,"268":1,"567":1,"690":1,"1332":1,"2162":1,"2274":2,"2276":1,"2279":1,"2305":1,"2313":1,"2425":1,"2443":1,"2480":2,"2490":1,"2614":2,"2615":1,"2714":1,"2756":1}}],["goes",{"2":{"166":1,"336":1,"354":1,"433":1,"1290":1,"1395":2,"1453":1,"1921":1,"2035":1,"2111":1,"2347":1,"2353":1,"2564":1,"2573":1,"2688":1,"2694":1,"2695":1}}],["gotten",{"2":{"537":1}}],["got",{"2":{"158":1,"164":1,"176":1,"179":1,"182":1,"190":1,"245":1,"454":1,"1274":1,"1386":1,"2279":1}}],["go",{"0":{"553":1},"2":{"92":1,"119":1,"137":1,"152":1,"291":1,"303":1,"331":2,"349":1,"354":1,"453":1,"455":1,"499":1,"609":2,"1335":2,"1385":1,"1395":1,"1435":2,"1452":2,"1572":2,"1815":1,"1822":1,"1897":1,"2062":1,"2139":1,"2143":1,"2162":1,"2183":1,"2240":1,"2242":1,"2255":1,"2261":1,"2267":1,"2274":1,"2277":1,"2425":1,"2490":1,"2508":1,"2513":1,"2546":1,"2551":1,"2566":2,"2615":1,"2728":2}}],["gone",{"2":{"172":1}}],["gon",{"0":{"18":1},"2":{"18":3}}],["g",{"0":{"1970":1,"1972":1},"1":{"1971":1,"1973":1},"2":{"38":2,"65":1,"114":1,"149":1,"160":2,"191":2,"211":6,"236":1,"249":3,"266":2,"313":1,"349":1,"506":1,"529":1,"530":2,"626":2,"635":1,"669":2,"672":1,"676":1,"734":3,"737":1,"742":1,"746":1,"750":1,"752":1,"760":3,"763":1,"769":1,"773":1,"777":1,"779":1,"790":3,"793":1,"801":1,"805":1,"809":1,"811":1,"824":3,"827":1,"833":1,"837":1,"841":1,"843":1,"857":3,"860":1,"868":1,"872":1,"876":1,"878":1,"891":3,"894":1,"902":1,"906":1,"910":1,"912":1,"925":3,"928":1,"936":1,"940":1,"944":1,"946":1,"959":3,"962":1,"970":1,"974":1,"978":1,"980":1,"993":3,"996":1,"1004":1,"1008":1,"1012":1,"1014":1,"1027":3,"1030":1,"1038":1,"1042":1,"1046":1,"1048":1,"1061":3,"1064":1,"1072":1,"1076":1,"1080":1,"1082":1,"1095":3,"1098":1,"1106":1,"1110":1,"1114":1,"1116":1,"1125":1,"1129":1,"1148":3,"1151":1,"1159":1,"1163":1,"1167":1,"1169":1,"1217":2,"1287":1,"1299":1,"1316":1,"1317":1,"1326":2,"1329":3,"1335":1,"1359":1,"1362":1,"1378":1,"1397":1,"1451":1,"1496":1,"1507":1,"1509":1,"1527":2,"1557":1,"1656":1,"1670":3,"1676":1,"1677":1,"1714":1,"1725":1,"1729":2,"1793":19,"1813":2,"1816":1,"1821":2,"1857":1,"1872":1,"1885":1,"1900":1,"1915":1,"1946":1,"1948":1,"1950":1,"1952":2,"1957":1,"1958":2,"1959":3,"1971":1,"1973":1,"2034":2,"2042":1,"2044":3,"2045":1,"2051":10,"2063":1,"2126":5,"2129":3,"2140":1,"2148":1,"2153":1,"2161":1,"2170":1,"2259":1,"2268":1,"2270":2,"2271":1,"2280":1,"2335":2,"2355":3,"2371":19,"2373":1,"2376":1,"2386":3,"2407":1,"2440":2,"2467":1,"2501":1,"2502":2,"2513":1,"2519":1,"2524":2,"2564":1,"2565":1,"2566":3,"2567":1,"2569":1,"2577":1,"2674":1,"2702":1,"2728":8,"2738":1}}],["gfx",{"2":{"31":3,"34":2,"1823":10,"2577":2}}],["ge",{"2":{"2370":2,"2396":2}}],["gemini",{"2":{"2149":3,"2152":2}}],["geminipr",{"0":{"2148":1},"2":{"2146":1,"2148":6,"2150":1,"2153":2,"2698":1}}],["geminate60",{"2":{"143":2,"211":1}}],["german",{"2":{"1355":3,"2658":1,"2712":8}}],["gergoplex",{"2":{"160":1,"191":1}}],["gergo",{"2":{"143":2}}],["geekhack",{"2":{"1275":1,"1289":1,"1297":1,"1298":1}}],["geometric",{"2":{"2688":1,"2695":1}}],["geometry",{"2":{"2577":2}}],["geonworks",{"2":{"241":1,"249":1}}],["georgi",{"2":{"143":2}}],["gesture",{"0":{"1860":1},"2":{"1859":1,"1865":1,"1866":1,"1872":3,"1910":1}}],["gestures",{"0":{"1865":1,"1866":1},"2":{"176":1,"1860":3,"1863":2,"1865":2,"1866":1,"1872":3}}],["gesc",{"2":{"191":2,"199":2,"1564":1,"1565":2,"1566":1,"2364":1}}],["genuine",{"2":{"1283":1}}],["gen1",{"2":{"424":1}}],["gentoo",{"2":{"191":1,"211":2,"2431":1,"2464":1}}],["gentleman",{"2":{"176":1}}],["gentleman65",{"2":{"168":2,"211":2}}],["genisis",{"2":{"114":1}}],["genesis",{"2":{"102":3}}],["generic",{"0":{"174":1,"1519":1,"1792":1,"2541":1,"2542":1},"2":{"50":1,"172":1,"175":1,"176":3,"236":3,"625":1,"1346":1,"1416":3,"1792":1,"1853":2,"2114":2,"2353":1,"2393":1,"2542":2,"2544":2,"2625":1,"2665":1}}],["generating",{"2":{"606":1,"614":1,"1385":1,"1431":1,"1827":1,"2246":1,"2248":1,"2553":1,"2611":1,"2671":1}}],["generation",{"2":{"12":1,"132":1,"176":1,"191":3,"199":2,"222":4,"231":1,"249":1,"277":1,"2506":1}}],["generators",{"2":{"278":2,"471":1,"472":1}}],["generator",{"0":{"471":1},"2":{"132":1,"149":2,"1594":1,"2267":1}}],["generates",{"2":{"404":1,"613":1,"2427":1}}],["generated",{"2":{"73":1,"403":1,"521":1,"545":1,"614":1,"659":1,"1363":1,"1394":1,"1401":1,"1525":1,"2262":1,"2303":2,"2401":1,"2513":1,"2566":1,"2575":5,"2584":1}}],["generate",{"0":{"401":1,"403":1,"404":1,"614":1},"2":{"70":4,"95":1,"114":1,"132":2,"153":1,"160":1,"191":1,"199":2,"211":1,"236":2,"249":2,"277":1,"282":3,"313":1,"388":1,"401":2,"403":2,"404":1,"521":1,"607":3,"614":5,"1312":1,"1393":3,"1440":1,"1441":1,"1562":1,"1857":1,"1868":1,"1872":1,"2231":2,"2238":2,"2262":2,"2512":2,"2575":4}}],["generally",{"2":{"341":1,"435":1,"457":1,"468":1,"470":1,"473":1,"476":1,"479":1,"485":1,"486":1,"502":1,"597":1,"616":1,"617":1,"628":1,"681":1,"685":1,"703":1,"726":1,"1177":1,"1198":1,"1238":1,"1335":1,"1390":1,"1457":1,"1469":1,"1531":1,"1560":1,"1715":1,"1731":1,"1895":1,"1934":1,"1948":1,"1955":1,"2169":1,"2269":1,"2308":1,"2318":1,"2327":1,"2346":1,"2450":1,"2513":1,"2575":2,"2576":1,"2577":1,"2679":1,"2708":1,"2720":3}}],["generalise",{"2":{"191":1,"236":1}}],["generalize",{"2":{"149":1}}],["general",{"0":{"556":1,"620":1,"2672":1},"1":{"557":1,"558":1,"559":1,"560":1,"561":1},"2":{"5":1,"10":1,"175":1,"201":1,"213":1,"233":1,"403":1,"432":1,"453":1,"455":1,"550":1,"1230":1,"1380":3,"1470":1,"1655":1,"1901":1,"2169":1,"2299":1,"2310":1,"2484":1,"2486":1,"2546":2,"2550":1,"2569":1,"2570":3,"2576":1,"2577":1,"2585":1,"2592":1,"2718":1}}],["gets",{"2":{"437":1,"519":1,"586":1,"587":1,"592":1,"598":1,"599":1,"600":1,"1353":1,"1364":1,"1377":1,"1430":2,"1450":1,"1822":1,"1874":1,"1894":1,"2057":6,"2152":1,"2175":3,"2311":2,"2405":1,"2524":1,"2757":1}}],["getter",{"2":{"475":1}}],["getters",{"2":{"236":2}}],["getting",{"0":{"358":1,"359":1,"2277":1,"2713":1},"1":{"2714":1,"2715":1,"2716":1},"2":{"211":2,"341":1,"617":1,"624":2,"641":1,"1332":1,"1338":1,"2494":1,"2504":1,"2563":1,"2564":1,"2569":1,"2615":1,"2713":1}}],["getta25",{"2":{"143":2}}],["getreuer",{"2":{"179":1,"191":1,"1453":1}}],["get",{"0":{"308":1,"309":1,"310":1,"1255":1,"1481":1,"1656":1,"1755":1,"1761":1,"1771":1,"1774":1,"1849":1,"1982":1,"1988":1,"1994":1,"2000":1,"2010":1,"2016":1,"2019":1,"2186":1,"2206":1,"2323":1},"1":{"1482":1,"1756":1,"1762":1,"1772":1,"1775":1,"1850":1,"1983":1,"1989":1,"1995":1,"2001":1,"2011":1,"2017":1,"2020":1,"2187":1,"2207":1,"2208":1},"2":{"22":4,"23":1,"50":1,"75":1,"140":1,"158":1,"160":1,"190":1,"191":3,"194":6,"195":2,"199":1,"222":4,"236":2,"249":1,"273":1,"276":1,"277":1,"315":1,"323":1,"324":1,"327":1,"330":1,"375":1,"378":1,"399":1,"454":1,"471":1,"502":1,"505":2,"515":1,"529":1,"551":1,"556":1,"557":1,"560":2,"566":1,"570":1,"586":1,"627":1,"1235":1,"1254":2,"1258":1,"1278":1,"1287":1,"1300":10,"1302":1,"1303":1,"1312":1,"1332":1,"1340":2,"1341":1,"1342":1,"1343":1,"1344":1,"1355":1,"1364":1,"1383":1,"1385":2,"1397":1,"1403":1,"1404":1,"1409":2,"1411":2,"1412":2,"1416":7,"1423":5,"1430":1,"1439":1,"1446":1,"1447":1,"1481":1,"1483":1,"1488":1,"1497":1,"1499":2,"1500":1,"1501":1,"1507":1,"1518":9,"1525":1,"1530":1,"1553":1,"1581":1,"1670":1,"1677":1,"1714":1,"1719":1,"1741":1,"1755":1,"1761":1,"1771":1,"1774":1,"1791":1,"1813":1,"1815":1,"1822":1,"1824":1,"1825":1,"1845":1,"1849":1,"1871":2,"1872":1,"1874":2,"1876":1,"1878":1,"1880":1,"1882":1,"1894":6,"1895":1,"1897":1,"1898":1,"1899":1,"1903":1,"1923":2,"1932":1,"1933":3,"1934":1,"1935":1,"1939":2,"1940":4,"1941":5,"1942":4,"1943":5,"1950":2,"1958":3,"1959":2,"1968":1,"1982":1,"1988":1,"1994":1,"2000":1,"2010":1,"2016":1,"2019":1,"2038":1,"2046":1,"2056":1,"2057":5,"2102":2,"2113":2,"2114":1,"2137":1,"2139":1,"2160":1,"2161":1,"2168":1,"2171":2,"2175":3,"2186":1,"2203":1,"2204":1,"2206":1,"2214":1,"2227":1,"2228":2,"2269":1,"2273":1,"2277":1,"2279":1,"2307":1,"2311":4,"2325":1,"2326":1,"2335":1,"2347":1,"2348":1,"2353":1,"2424":2,"2429":1,"2450":1,"2457":1,"2468":1,"2474":1,"2504":1,"2512":1,"2513":1,"2552":1,"2553":2,"2564":1,"2569":2,"2574":1,"2577":8,"2702":4,"2707":5,"2710":1,"2714":1,"2727":1,"2728":8,"2735":1,"2736":1,"2737":1,"2738":2,"2745":1,"2752":1}}],["gtk",{"2":{"2183":2}}],["gtest",{"2":{"114":1}}],["gt",{"0":{"156":1,"167":1,"195":1,"245":1,"308":1,"309":1,"310":1,"1365":1,"1366":1,"1367":1,"1368":1,"1369":2,"1370":5,"2301":1,"2302":1},"2":{"4":3,"18":2,"49":1,"55":3,"70":1,"94":1,"113":2,"114":5,"132":2,"133":2,"134":2,"166":1,"176":4,"191":3,"199":3,"201":2,"211":1,"222":1,"249":5,"277":1,"282":1,"290":2,"291":6,"300":1,"331":15,"335":1,"341":1,"345":2,"347":3,"349":8,"350":1,"370":1,"371":1,"400":1,"417":2,"433":1,"436":4,"500":1,"510":2,"511":3,"529":2,"534":2,"559":3,"613":1,"614":4,"621":1,"669":1,"696":1,"703":2,"734":1,"760":1,"790":1,"824":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1132":1,"1133":1,"1148":1,"1177":2,"1198":2,"1238":2,"1300":3,"1312":2,"1313":1,"1325":4,"1346":1,"1347":3,"1351":4,"1352":1,"1359":1,"1366":1,"1367":1,"1368":3,"1369":1,"1376":6,"1377":5,"1379":5,"1381":1,"1383":1,"1385":5,"1404":1,"1417":1,"1419":1,"1428":1,"1440":1,"1441":1,"1496":1,"1511":2,"1549":1,"1560":1,"1677":1,"1808":1,"1832":1,"1880":1,"1885":1,"1886":9,"1887":1,"1895":1,"2126":5,"2144":1,"2150":2,"2152":1,"2169":1,"2255":1,"2259":2,"2261":4,"2262":18,"2263":2,"2279":1,"2296":2,"2299":1,"2302":1,"2303":3,"2311":1,"2347":4,"2349":2,"2353":1,"2355":1,"2378":2,"2388":1,"2399":2,"2435":1,"2441":5,"2445":2,"2468":4,"2474":7,"2479":3,"2501":2,"2502":2,"2508":4,"2511":2,"2512":2,"2513":2,"2523":1,"2524":1,"2564":1,"2566":4,"2576":1,"2577":4,"2578":1,"2614":4,"2671":1,"2686":1,"2728":2,"2738":1,"2740":1}}],["e5",{"2":{"1793":1,"2371":1}}],["e4",{"2":{"1793":1,"2371":1}}],["e3",{"2":{"1793":1,"2371":1}}],["e2",{"2":{"1793":1,"2371":1}}],["e♭",{"2":{"1793":6,"2371":6}}],["ebay",{"2":{"2350":1,"2655":1}}],["eb5",{"2":{"1793":1,"2371":1}}],["eb4",{"2":{"1793":1,"2371":1}}],["eb3",{"2":{"1793":1,"2371":1}}],["eb2",{"2":{"1793":1,"2371":1}}],["eb1",{"2":{"1793":1,"2371":1}}],["eb",{"2":{"1793":1,"2371":1}}],["eimsk",{"2":{"1905":2}}],["eicra",{"2":{"1905":1}}],["eighth",{"2":{"2074":1,"2155":1}}],["eight",{"2":{"1594":2,"1636":1,"1821":1,"2091":1,"2111":1}}],["either",{"2":{"49":1,"60":1,"87":1,"88":2,"104":2,"127":2,"141":1,"152":1,"352":1,"395":1,"405":1,"436":1,"454":1,"555":1,"560":1,"613":1,"626":1,"635":1,"643":1,"654":1,"701":1,"1127":1,"1130":1,"1213":1,"1225":1,"1239":1,"1268":1,"1303":1,"1380":1,"1387":1,"1390":1,"1393":1,"1438":1,"1451":1,"1530":1,"1553":2,"1554":1,"1604":1,"1634":1,"1822":1,"1882":1,"1885":1,"1887":1,"1932":1,"2120":1,"2132":1,"2145":1,"2150":2,"2238":1,"2272":1,"2305":1,"2310":1,"2445":1,"2506":1,"2518":1,"2525":1,"2566":1,"2570":1,"2576":1,"2577":1,"2587":1,"2603":1,"2729":1}}],["ejct",{"2":{"1283":1,"2355":1,"2393":1}}],["eject",{"0":{"1283":1},"2":{"1283":3,"2355":2,"2393":2}}],["e1",{"2":{"1793":1,"2371":1}}],["e15",{"2":{"635":1}}],["e14",{"2":{"635":1}}],["e12",{"2":{"635":1}}],["e11",{"2":{"635":1}}],["e10",{"2":{"635":1}}],["e13",{"2":{"635":1}}],["e7",{"2":{"635":1}}],["e8",{"2":{"635":2}}],["e88",{"2":{"211":1}}],["e9",{"2":{"635":1}}],["egg",{"2":{"616":1,"2165":1,"2166":3,"2167":2}}],["eggman",{"2":{"143":2}}],["eg",{"2":{"374":1,"459":1,"470":1,"505":1,"559":1,"573":1,"592":1,"638":1,"639":3,"698":1,"1181":1,"1361":1,"1370":1,"1440":1,"1499":1,"1591":1,"1685":1,"1894":1,"2091":1,"2093":1,"2095":1,"2097":1,"2114":1,"2174":1,"2231":2,"2235":1,"2238":2,"2245":1,"2247":1,"2249":1,"2545":1,"2566":1,"2672":2}}],["euro",{"2":{"2319":1}}],["europe",{"2":{"1268":1}}],["eubg",{"2":{"2147":1,"2148":1}}],["eu",{"2":{"241":2,"2153":1}}],["eyes",{"2":{"2273":1}}],["eyeohdesigns",{"2":{"236":1}}],["eyboard",{"2":{"1935":1}}],["eybord",{"2":{"1935":1}}],["eyalroz",{"2":{"176":1}}],["ec44c6c1675c25b9827aacd08c02433cccde7780",{"2":{"2255":1}}],["ec11",{"2":{"1557":1}}],["echo",{"0":{"434":1},"2":{"432":1,"434":1,"458":4,"470":1,"2435":2,"2468":1}}],["eclipse",{"0":{"322":1,"330":1,"331":1,"2492":1,"2496":1,"2497":1,"2500":1,"2634":1},"1":{"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1,"336":1,"2497":1,"2498":1,"2499":1,"2501":1,"2502":1},"2":{"322":1,"323":1,"326":1,"329":1,"331":2,"2492":3,"2495":1,"2496":2,"2497":6,"2498":3,"2499":1,"2502":1,"2634":1,"2723":1}}],["ecosystem",{"2":{"243":1}}],["eccentric",{"2":{"1576":1}}],["ecc",{"2":{"236":1}}],["ec",{"2":{"222":1,"247":2,"277":1,"1548":2,"2370":3,"2396":3}}],["ekow",{"2":{"211":1}}],["ek65",{"2":{"199":1}}],["equo",{"2":{"2431":1,"2464":1}}],["equally",{"2":{"1675":1}}],["equality",{"2":{"1300":1}}],["equal",{"2":{"417":1,"1290":1,"1584":1,"2147":1,"2152":1,"2355":3,"2388":1,"2394":2,"2587":2,"2594":2}}],["equals",{"2":{"249":1}}],["equivalency",{"2":{"476":1}}],["equivalents",{"2":{"496":1,"1212":1,"1875":1,"2530":1}}],["equivalent",{"2":{"7":1,"103":1,"185":1,"186":1,"232":1,"234":1,"684":1,"685":1,"688":1,"1525":1,"1531":1,"1589":1,"1730":1,"1948":2,"1954":1,"2034":1,"2403":1,"2491":1,"2524":1,"2525":1,"2566":4}}],["equinox",{"2":{"211":1}}],["eql",{"2":{"176":1,"313":1,"530":2,"2355":1,"2388":1,"2407":1}}],["efuse",{"2":{"2348":2}}],["ef8878fba5d3786e3f9c66436da63a560cd36ac9",{"2":{"530":2}}],["efgh",{"2":{"266":1}}],["ef",{"2":{"249":1}}],["efl",{"2":{"176":2,"191":1,"236":1,"277":1,"689":4,"692":1}}],["effort",{"2":{"606":1,"726":1,"1441":1,"2168":1,"2270":1,"2303":1}}],["efficiently",{"2":{"1438":1,"1577":1}}],["efficient",{"2":{"63":1,"231":1,"1121":2,"1122":1,"1128":1,"1821":1,"1885":1,"2145":1}}],["effect2",{"2":{"1729":6,"1952":6}}],["effective",{"2":{"659":1,"1326":1,"1677":1,"1807":1,"2728":1,"2738":1}}],["effectively",{"2":{"49":1,"163":1,"1225":1,"1637":1,"2125":1,"2320":1,"2737":1}}],["effects",{"0":{"1728":1,"1729":1,"1949":1,"1952":1,"2036":1,"2049":1,"2053":1},"1":{"1950":1,"1951":1,"2037":1,"2038":1,"2039":1,"2040":1,"2050":1,"2051":1,"2052":1,"2053":1,"2054":1,"2055":1,"2056":1,"2057":1},"2":{"84":1,"93":2,"124":1,"134":1,"156":1,"222":1,"249":1,"266":1,"277":1,"458":3,"659":1,"1402":1,"1725":1,"1728":2,"1729":6,"1730":3,"1946":1,"1948":1,"1949":3,"1951":1,"1952":6,"1954":3,"2050":1,"2062":1,"2063":2,"2566":1,"2606":1,"2688":3,"2694":2,"2695":3}}],["effect",{"0":{"1950":1,"1951":1,"1960":1,"2037":1,"2038":1,"2050":1,"2052":1},"2":{"49":1,"74":1,"93":1,"134":1,"149":2,"160":1,"176":1,"191":6,"194":1,"199":1,"222":1,"236":1,"249":2,"266":1,"276":1,"277":1,"292":2,"530":1,"1273":1,"1338":1,"1402":1,"1406":2,"1411":1,"1503":1,"1508":1,"1577":1,"1728":3,"1729":21,"1743":1,"1745":1,"1747":1,"1748":1,"1749":1,"1750":1,"1751":1,"1752":1,"1753":1,"1754":1,"1755":1,"1756":1,"1757":1,"1758":1,"1759":1,"1760":1,"1761":1,"1763":1,"1764":1,"1765":1,"1766":1,"1767":1,"1769":1,"1771":1,"1772":1,"1773":1,"1807":1,"1822":2,"1911":1,"1948":2,"1949":3,"1950":4,"1951":1,"1952":21,"1960":2,"1970":1,"1972":1,"1974":1,"1975":1,"1976":1,"1977":1,"1978":1,"1979":1,"1980":1,"1981":1,"1982":1,"1983":1,"1984":1,"1985":1,"1986":1,"1987":1,"1988":1,"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2008":1,"2010":1,"2011":1,"2012":1,"2014":1,"2016":1,"2017":1,"2018":1,"2031":1,"2034":2,"2036":1,"2037":10,"2038":11,"2039":2,"2050":1,"2051":1,"2052":1,"2053":6,"2054":14,"2062":1,"2063":1,"2171":1,"2376":2,"2377":2,"2688":1,"2694":1,"2695":1,"2708":10}}],["ede48346eee4b8d6847c19bc01420bee76a5e486",{"2":{"2255":1}}],["ed",{"2":{"275":1,"1934":2,"2524":1}}],["edges",{"2":{"1949":1}}],["edge",{"2":{"175":1,"1181":8,"1907":1,"2272":1,"2615":2,"2619":2,"2684":1}}],["editable",{"2":{"436":1}}],["editorconfig",{"2":{"2510":1}}],["editors",{"2":{"445":1,"2485":1}}],["editor",{"0":{"2423":1,"2485":1},"2":{"389":1,"390":1,"391":1,"401":2,"623":1,"1353":1,"1814":2,"2268":1,"2277":2,"2279":1,"2349":1,"2420":1,"2423":1,"2427":1,"2429":3,"2430":1,"2437":1,"2457":3,"2474":1,"2480":1,"2485":1,"2492":1,"2502":1,"2503":3,"2506":2,"2553":1,"2615":1,"2620":1,"2686":1}}],["edit",{"2":{"347":1,"349":1,"557":2,"609":1,"613":1,"1729":1,"1952":1,"2064":1,"2110":1,"2259":2,"2326":1,"2429":1,"2457":1,"2473":1,"2474":1,"2480":1,"2620":1}}],["edited",{"2":{"335":1,"352":1,"530":1,"1814":1,"2478":1}}],["editing",{"2":{"335":1,"402":1,"409":1,"557":1,"560":1,"1242":1,"1442":1,"2423":1,"2474":1,"2575":1}}],["edition",{"0":{"1321":1,"1324":1,"2545":1},"2":{"211":2,"249":3,"1321":1,"1324":1,"2545":1}}],["edits",{"2":{"211":1,"352":1}}],["edi",{"2":{"143":1,"149":1}}],["eopkg",{"2":{"2431":1,"2464":1}}],["eof",{"2":{"249":1,"2600":1}}],["eol",{"2":{"173":1}}],["eon95",{"2":{"57":2}}],["eon87",{"2":{"57":2}}],["eon75",{"2":{"57":2}}],["eon65",{"2":{"57":2}}],["eon40",{"2":{"57":2}}],["etc",{"0":{"1243":1},"2":{"169":1,"385":2,"451":1,"452":1,"473":1,"479":1,"573":1,"592":1,"669":1,"703":2,"734":2,"760":2,"790":2,"824":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1148":2,"1177":2,"1198":2,"1212":1,"1239":2,"1254":1,"1294":1,"1312":1,"1338":1,"1398":1,"1816":1,"1885":1,"1921":1,"1959":1,"2031":1,"2042":1,"2065":1,"2129":1,"2140":1,"2266":2,"2272":1,"2492":1,"2503":1,"2553":2,"2564":3,"2566":4,"2567":1,"2702":1,"2703":2}}],["eh",{"2":{"143":4,"270":3,"277":1,"2370":2,"2396":2}}],["es",{"2":{"1499":1}}],["estimating",{"2":{"2226":1}}],["estimated",{"2":{"2226":1,"2228":1}}],["estonian",{"2":{"1355":1,"2712":3}}],["established",{"2":{"515":1,"2144":1,"2270":1}}],["especially",{"2":{"560":1,"1326":1,"1340":1,"1430":1,"1459":1,"1495":1,"1499":1,"2262":1,"2274":1,"2302":1,"2550":1,"2584":1,"2716":1,"2740":1,"2750":1}}],["espectro",{"2":{"143":2}}],["esr",{"2":{"551":1}}],["essential",{"2":{"328":1,"1672":1,"2299":1}}],["essentially",{"2":{"263":1,"2102":1,"2269":1}}],["eschew",{"2":{"460":1}}],["escaping",{"2":{"191":1}}],["escaped",{"2":{"2672":2}}],["escape",{"0":{"1302":1,"1563":1,"1666":1,"2364":1},"1":{"1564":1,"1565":1,"1566":1,"1567":1,"1568":1},"2":{"114":1,"176":1,"188":1,"191":1,"211":1,"231":1,"623":1,"624":1,"626":2,"1270":1,"1282":1,"1351":1,"1359":1,"1508":1,"1563":3,"1566":2,"1568":4,"1666":2,"2075":1,"2164":1,"2169":1,"2198":2,"2234":1,"2263":1,"2355":2,"2364":3,"2370":8,"2388":2,"2396":8,"2410":2,"2424":1,"2450":1,"2686":1}}],["esc",{"0":{"1282":1,"2164":1},"2":{"105":2,"114":1,"199":1,"313":1,"530":2,"1302":3,"1359":1,"1366":1,"1495":1,"1508":2,"1509":1,"1510":1,"1511":3,"1527":2,"1530":1,"1549":3,"1564":1,"1565":1,"1568":4,"1584":1,"1656":1,"1666":10,"2075":1,"2164":4,"2165":1,"2167":2,"2169":2,"2231":3,"2238":3,"2355":1,"2370":2,"2388":1,"2396":2,"2401":1,"2410":1,"2693":2,"2702":1,"2749":1}}],["epsize",{"2":{"1921":1,"1922":1}}],["epsize\`",{"2":{"1921":1}}],["epoch80",{"2":{"241":2}}],["ep",{"2":{"114":1,"190":1,"191":1,"211":1,"266":1,"516":2}}],["e6",{"2":{"111":1,"511":1,"1124":1,"1492":1,"2231":1,"2238":1,"2530":1,"2558":1}}],["emergencies",{"2":{"2720":1}}],["emerge",{"2":{"2431":1,"2464":1}}],["emery65",{"2":{"211":1}}],["em",{"2":{"1511":3}}],["emitting",{"2":{"2646":1}}],["emitted",{"2":{"1411":2,"1832":1}}],["emit",{"2":{"1416":1,"2168":1}}],["emac",{"2":{"2184":1,"2384":1}}],["emacs",{"2":{"176":1,"1499":1,"1932":1,"2183":2,"2184":2,"2196":1,"2197":1,"2198":1,"2384":2}}],["email>",{"2":{"1380":1}}],["email",{"2":{"1380":2,"1511":5,"2309":1,"2351":1,"2474":3}}],["emoji",{"0":{"283":1},"1":{"284":1,"285":1},"2":{"279":1,"433":2,"2181":1,"2182":1,"2263":1}}],["employing",{"2":{"1325":1}}],["emphasis",{"2":{"198":1,"201":1}}],["emptystring",{"2":{"181":2,"191":1}}],["empty",{"2":{"50":1,"199":1,"211":2,"222":1,"249":1,"540":2,"556":1,"1205":1,"1694":1,"2220":1,"2349":1,"2453":2,"2498":1,"2566":2}}],["embed",{"0":{"301":1},"2":{"301":1}}],["embedded",{"0":{"689":1},"2":{"174":1,"176":1,"300":1,"552":1,"688":3,"689":2,"692":3,"2407":1,"2539":1,"2566":2,"2578":1,"2683":1}}],["embracing",{"2":{"116":1}}],["emulating",{"2":{"688":1}}],["emulation",{"0":{"174":1,"692":1},"2":{"94":1,"131":1,"134":1,"249":1,"277":1,"681":1,"1683":1,"2146":1,"2531":1}}],["emulates",{"2":{"1673":1,"1674":1,"1860":1,"2236":1,"2329":1,"2333":1,"2346":1}}],["emulate",{"2":{"174":1,"1791":1,"1798":1,"2170":1,"2331":1,"2756":1}}],["emulated",{"2":{"160":1,"176":2,"681":1,"688":1,"692":1,"1463":1,"1675":1,"2149":1,"2756":1}}],["eep",{"2":{"509":2,"510":2}}],["eeproms",{"2":{"2531":1}}],["eeprom",{"0":{"131":1,"174":1,"604":1,"681":1,"692":1,"1331":1,"1731":1,"1773":1,"1955":1,"2018":1,"2126":1,"2291":1,"2610":1,"2683":1},"1":{"682":1,"683":1,"684":1,"685":1,"686":1,"687":1,"1332":1,"1333":1},"2":{"49":2,"65":1,"73":1,"94":3,"114":7,"131":5,"134":7,"149":5,"160":1,"174":2,"176":10,"188":1,"191":5,"211":1,"236":7,"249":1,"277":3,"504":1,"509":3,"510":3,"592":1,"604":1,"681":12,"683":4,"684":36,"685":13,"686":5,"688":4,"689":1,"690":2,"691":1,"692":2,"1243":5,"1270":5,"1271":1,"1287":2,"1331":5,"1332":10,"1333":2,"1341":1,"1457":3,"1495":1,"1497":1,"1530":4,"1731":1,"1736":1,"1738":1,"1740":1,"1749":1,"1752":1,"1754":1,"1758":1,"1760":1,"1764":1,"1766":1,"1769":1,"1773":1,"1794":1,"1830":2,"1948":2,"1955":1,"1963":1,"1965":1,"1967":1,"1976":1,"1979":1,"1981":1,"1985":1,"1987":1,"1991":1,"1993":1,"1997":1,"1999":1,"2003":1,"2005":1,"2008":1,"2014":1,"2018":1,"2035":6,"2051":9,"2052":5,"2053":3,"2054":7,"2055":3,"2126":9,"2149":1,"2179":1,"2183":1,"2232":1,"2234":1,"2241":1,"2246":1,"2248":1,"2263":1,"2291":3,"2356":2,"2377":2,"2518":1,"2531":1,"2572":2,"2610":3,"2683":4}}],["ee",{"2":{"191":1,"249":2,"509":1,"510":2,"1270":1,"1332":1,"1496":1,"1873":1,"2126":2,"2356":1,"2370":4,"2396":4,"2572":1,"2610":1}}],["eeconfig",{"0":{"1333":1},"2":{"94":1,"114":1,"134":1,"176":1,"191":2,"211":1,"236":1,"249":5,"266":1,"277":1,"683":1,"1331":6,"1332":7,"1333":7,"2126":1,"2610":1}}],["elbow",{"2":{"2273":1}}],["elapses",{"2":{"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"1185":1,"1187":1,"1190":1,"1193":1}}],["elapsed32",{"2":{"588":1,"2130":1,"2577":6}}],["elapsed",{"2":{"249":1,"1326":1,"1375":1,"2044":1,"2612":1}}],["elf",{"2":{"236":1,"1287":1,"2425":1,"2469":1,"2513":2}}],["elongate",{"2":{"211":1}}],["ellora65",{"2":{"211":1}}],["ellipse",{"2":{"211":3,"236":1,"2577":3}}],["ellipses",{"2":{"153":1,"2577":3}}],["elevated",{"2":{"2274":1}}],["element++",{"2":{"1815":1,"2139":1}}],["element",{"2":{"1815":2,"2139":2}}],["elements",{"2":{"134":1,"2566":1,"2578":1}}],["electrical",{"2":{"1725":3,"1946":3,"2059":2,"2272":1,"2280":1,"2513":1,"2559":1,"2566":3}}],["electronics",{"2":{"701":1,"1471":1}}],["elephant42",{"2":{"191":2}}],["elephant",{"2":{"67":4,"72":1}}],["elsewhere",{"2":{"501":1,"557":1,"578":1,"1887":1,"2272":1,"2303":1,"2328":1,"2577":1,"2728":1,"2749":1}}],["else",{"2":{"90":6,"105":4,"179":1,"194":1,"196":3,"350":1,"352":2,"453":2,"473":1,"568":1,"572":2,"582":1,"593":1,"594":1,"626":1,"1302":2,"1303":1,"1313":1,"1332":2,"1359":3,"1365":1,"1375":1,"1383":1,"1446":3,"1499":1,"1507":1,"1549":7,"1560":6,"1668":1,"1680":3,"1686":2,"1792":1,"1816":2,"1822":1,"1878":1,"1894":1,"1933":2,"1940":1,"1941":2,"1959":2,"2130":1,"2140":1,"2150":1,"2168":1,"2169":6,"2170":2,"2171":4,"2183":1,"2228":2,"2250":1,"2299":2,"2309":1,"2415":1,"2510":2,"2600":1,"2604":2,"2612":1,"2723":1}}],["eligible",{"2":{"1936":1}}],["eliminating",{"0":{"1934":1},"2":{"821":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1}}],["eliminate",{"2":{"76":1,"222":1,"277":1,"1668":1,"1934":1,"2279":1,"2566":1}}],["elitec",{"2":{"122":1}}],["elite",{"0":{"1321":1,"1322":1,"1323":1},"1":{"1323":1,"1324":1},"2":{"86":2,"153":1,"189":2,"191":2,"199":1,"1311":7,"1314":2,"1315":4,"1322":5,"2126":1,"2232":1,"2269":1,"2545":2,"2673":1,"2709":1}}],["evaporate",{"2":{"2272":1}}],["evaluate",{"2":{"1900":1}}],["evaluates",{"2":{"1726":2,"1947":2,"2100":1,"2101":1}}],["evaluated",{"2":{"504":1}}],["evaluation",{"2":{"476":1}}],["evaluations",{"0":{"476":1}}],["evo70",{"2":{"211":1}}],["evy",{"0":{"57":1}}],["evyd13",{"0":{"57":1},"2":{"57":22,"211":1}}],["ever",{"2":{"112":1,"154":1,"175":1,"194":1,"1234":1,"1359":3,"2744":1}}],["everytime",{"2":{"2128":1}}],["everything",{"0":{"26":1},"2":{"332":1,"360":1,"582":1,"602":1,"1129":1,"1258":1,"1264":1,"1304":1,"1332":1,"1338":1,"1381":1,"1553":1,"1960":1,"2043":1,"2134":1,"2148":1,"2150":1,"2262":2,"2279":1,"2282":1,"2353":1,"2404":1,"2424":1,"2444":1,"2455":1,"2503":1,"2508":1,"2578":1,"2725":1,"2744":1}}],["everywhere",{"2":{"1894":1}}],["everyone",{"2":{"179":1,"349":1,"350":1,"551":1,"562":1,"1411":1,"1416":1,"2418":1}}],["every",{"0":{"2509":1},"2":{"92":1,"188":1,"194":2,"199":1,"399":1,"415":1,"435":1,"486":1,"497":1,"520":1,"521":1,"522":1,"556":1,"571":1,"586":1,"623":1,"654":1,"659":1,"660":1,"683":1,"1286":1,"1300":1,"1330":1,"1341":1,"1342":1,"1385":1,"1451":1,"1506":1,"1520":1,"1733":1,"1821":1,"1900":2,"1937":1,"1950":1,"1957":1,"2111":3,"2126":1,"2128":1,"2130":1,"2149":1,"2161":2,"2162":1,"2232":1,"2234":1,"2239":1,"2260":1,"2262":1,"2274":1,"2437":1,"2455":1,"2480":1,"2534":1,"2569":1,"2671":1,"2721":1,"2728":1,"2746":2}}],["even",{"2":{"93":1,"153":2,"190":1,"211":1,"459":1,"474":1,"481":1,"496":1,"505":2,"506":1,"533":1,"560":1,"575":1,"586":1,"597":2,"1278":1,"1286":1,"1303":2,"1325":1,"1326":1,"1331":1,"1332":2,"1353":1,"1366":1,"1380":1,"1430":1,"1432":1,"1499":1,"1508":1,"1518":2,"1524":1,"1562":1,"1567":1,"1662":1,"1670":1,"1674":1,"1675":1,"1805":1,"2045":1,"2102":1,"2106":1,"2118":1,"2146":1,"2161":1,"2183":1,"2226":1,"2228":1,"2263":1,"2274":1,"2280":1,"2302":1,"2305":1,"2455":1,"2546":1,"2570":1,"2577":1,"2607":1,"2729":2,"2738":1,"2741":1,"2752":2}}],["eventual",{"2":{"1346":1}}],["eventually",{"2":{"169":1,"1287":1,"2255":1,"2311":1}}],["events",{"0":{"350":1,"1895":1},"2":{"73":2,"203":1,"350":1,"571":1,"572":1,"573":1,"584":1,"1326":2,"1332":1,"1368":1,"1511":1,"1559":1,"1560":1,"1673":1,"1677":1,"1880":1,"1954":1,"2129":1,"2411":1,"2612":1,"2649":1,"2674":2,"2687":1,"2729":1,"2735":4,"2738":1,"2749":2}}],["event",{"0":{"1365":1,"2316":1},"2":{"46":3,"160":1,"176":1,"199":1,"203":1,"350":5,"521":1,"571":1,"573":1,"1275":1,"1299":2,"1357":4,"1366":1,"1367":1,"1369":1,"1448":1,"1511":2,"1527":1,"1675":1,"1828":1,"1880":1,"1895":3,"2067":1,"2071":1,"2075":3,"2152":1,"2314":1,"2641":1,"2642":1,"2662":1,"2730":1,"2731":2,"2732":3,"2733":2,"2734":1,"2740":1,"2749":1}}],["ez",{"2":{"50":1,"114":1,"270":2,"277":1,"378":1,"383":1,"2108":1,"2566":1}}],["e",{"2":{"38":2,"114":2,"266":2,"279":1,"292":1,"313":1,"349":1,"370":1,"371":2,"395":2,"396":2,"408":1,"411":2,"461":1,"506":1,"529":1,"530":2,"626":2,"703":1,"1125":1,"1129":1,"1177":1,"1198":1,"1287":1,"1312":2,"1315":13,"1316":1,"1317":1,"1319":2,"1322":5,"1326":1,"1335":1,"1338":1,"1359":2,"1362":1,"1378":1,"1397":1,"1451":2,"1496":1,"1507":1,"1509":1,"1511":2,"1518":2,"1530":1,"1553":1,"1557":1,"1591":2,"1656":1,"1670":3,"1676":1,"1677":1,"1686":2,"1714":1,"1729":2,"1793":13,"1813":2,"1816":1,"1821":2,"1857":1,"1872":1,"1885":2,"1900":1,"1902":1,"1915":1,"1932":1,"1934":4,"1948":1,"1952":2,"1959":1,"2034":1,"2042":1,"2044":3,"2045":1,"2063":1,"2075":1,"2126":5,"2129":3,"2140":1,"2148":1,"2152":1,"2153":4,"2161":1,"2170":1,"2259":1,"2268":2,"2270":2,"2271":1,"2280":1,"2335":2,"2347":1,"2355":3,"2371":13,"2386":3,"2401":1,"2407":1,"2427":1,"2440":2,"2501":2,"2502":2,"2519":1,"2524":2,"2564":2,"2565":2,"2566":4,"2567":1,"2569":1,"2575":1,"2577":1,"2702":1,"2738":1}}],["eat",{"2":{"2263":1}}],["eabi",{"2":{"325":1}}],["ea1514b3",{"2":{"314":1,"315":1}}],["eagle",{"2":{"211":1}}],["eager",{"2":{"94":1,"114":1,"199":1,"222":1,"236":1,"1326":9,"1329":4,"2674":3}}],["earliest",{"2":{"2524":1,"2525":1}}],["earlier",{"2":{"114":1,"1555":1,"1725":1,"1946":1,"2548":1,"2552":1,"2728":1,"2729":4,"2735":1,"2747":1}}],["early",{"0":{"2523":1,"2524":1,"2525":1},"1":{"2524":1,"2525":1,"2526":1},"2":{"49":1,"63":1,"65":1,"77":1,"279":2,"574":1,"575":1,"1523":1,"1825":1,"1869":1,"1885":1,"2168":1,"2277":1,"2523":2,"2524":5,"2525":4,"2566":5}}],["each",{"0":{"35":1,"1551":1,"1552":1},"1":{"36":1},"2":{"31":3,"34":1,"36":1,"45":2,"65":1,"118":1,"138":1,"149":1,"166":1,"176":2,"188":1,"222":1,"234":1,"273":1,"313":1,"340":1,"349":1,"374":2,"413":1,"414":1,"428":1,"433":1,"462":1,"484":1,"499":1,"502":1,"505":2,"506":1,"509":1,"516":1,"521":1,"556":2,"557":1,"568":1,"569":1,"580":1,"588":3,"610":1,"627":1,"641":1,"655":1,"664":1,"669":1,"697":1,"701":1,"734":1,"755":1,"760":1,"784":1,"790":1,"816":1,"824":1,"848":1,"857":1,"883":1,"891":1,"917":1,"925":1,"951":1,"959":1,"985":1,"993":1,"1019":1,"1027":1,"1053":1,"1061":1,"1087":1,"1095":1,"1143":1,"1148":1,"1181":1,"1212":1,"1217":1,"1235":1,"1236":1,"1252":1,"1265":1,"1312":1,"1326":1,"1329":1,"1331":1,"1340":1,"1346":1,"1356":1,"1357":2,"1385":1,"1406":3,"1438":2,"1441":1,"1451":2,"1452":1,"1518":1,"1523":1,"1547":2,"1554":2,"1556":1,"1557":2,"1558":1,"1562":1,"1573":1,"1612":1,"1614":1,"1642":1,"1657":1,"1672":1,"1676":1,"1683":1,"1725":1,"1730":1,"1802":1,"1804":1,"1816":1,"1820":1,"1821":2,"1822":1,"1870":1,"1872":2,"1878":1,"1902":1,"1946":1,"1950":2,"1954":1,"2031":1,"2032":1,"2038":3,"2040":7,"2043":1,"2083":1,"2087":1,"2117":1,"2125":1,"2126":1,"2130":1,"2131":1,"2134":1,"2140":1,"2142":1,"2147":1,"2161":6,"2162":2,"2167":3,"2170":6,"2177":1,"2181":1,"2182":3,"2234":1,"2255":1,"2258":1,"2259":1,"2268":1,"2271":1,"2273":2,"2274":1,"2276":1,"2279":1,"2289":1,"2290":1,"2311":1,"2315":1,"2347":1,"2354":2,"2402":1,"2405":2,"2407":1,"2424":1,"2479":1,"2499":1,"2523":1,"2544":1,"2548":2,"2558":2,"2567":1,"2574":1,"2575":1,"2576":1,"2577":3,"2585":2,"2592":2,"2593":1,"2595":2,"2597":2,"2614":2,"2615":2,"2616":1,"2686":4,"2687":1,"2688":2,"2689":1,"2694":1,"2695":2,"2730":1,"2735":1,"2740":1,"2753":3,"2757":1}}],["east",{"2":{"1915":1,"2181":1}}],["eason",{"2":{"222":1}}],["ease",{"2":{"70":1,"2181":1,"2318":1}}],["easyeda",{"2":{"93":1}}],["easy",{"0":{"1234":1},"1":{"1235":1},"2":{"6":1,"114":2,"154":1,"325":1,"380":1,"436":1,"453":2,"473":1,"479":1,"550":1,"551":1,"555":1,"557":1,"606":1,"623":1,"636":1,"695":1,"701":1,"1234":3,"1236":1,"1310":1,"1684":1,"2041":1,"2118":1,"2270":1,"2273":1,"2304":1,"2417":2,"2423":1,"2458":1,"2468":1,"2578":1}}],["easiest",{"2":{"557":1,"1235":1,"1492":1,"1725":1,"1946":1,"2161":1,"2181":1,"2274":1,"2326":1,"2615":1}}],["easier",{"2":{"2":1,"10":1,"21":1,"31":1,"45":1,"70":1,"118":1,"130":1,"133":1,"341":1,"363":1,"431":1,"432":1,"457":1,"469":1,"471":1,"481":1,"530":1,"1262":1,"1385":1,"1499":1,"1733":1,"1885":1,"1957":1,"2061":1,"2145":1,"2178":1,"2182":1,"2250":1,"2252":1,"2270":2,"2281":1,"2292":1,"2300":1,"2302":1,"2405":2,"2408":1,"2418":1,"2423":1,"2424":1,"2472":1,"2508":1,"2510":1,"2571":1,"2614":1,"2746":1,"2756":1}}],["easily",{"2":{"6":1,"65":1,"388":1,"615":1,"627":1,"1212":1,"1359":1,"1655":1,"1853":1,"1921":1,"2031":1,"2250":1,"2272":1,"2277":1,"2422":1,"2452":1,"2480":1,"2501":1,"2728":1,"2753":1}}],["exe",{"2":{"2453":3,"2508":1,"2513":1}}],["exercise",{"2":{"1518":1,"2614":1}}],["exec",{"2":{"149":1,"515":1,"596":1,"597":1,"598":1,"599":2,"600":2,"2130":2,"2263":1,"2355":1,"2392":1,"2749":1}}],["executor",{"0":{"597":1,"598":1},"2":{"515":1,"597":1,"598":1,"2263":1}}],["executors",{"2":{"134":1,"601":2}}],["executable",{"2":{"335":1,"2417":1,"2498":1,"2513":2,"2753":1,"2755":1}}],["executions",{"2":{"598":1}}],["execution",{"0":{"596":1,"599":1,"600":1},"1":{"597":1,"598":1,"599":1,"600":1,"601":1},"2":{"65":1,"249":1,"515":1,"597":3,"598":1,"599":2,"600":2,"698":1,"2263":1,"2524":1,"2574":1}}],["executing",{"2":{"49":1,"160":1,"568":1,"597":1,"598":1,"2060":1,"2513":1,"2524":2,"2525":1}}],["executed",{"2":{"424":1,"598":1,"698":2,"2169":1,"2524":3,"2525":2,"2526":1,"2574":1}}],["executes",{"2":{"49":1,"688":1,"691":1}}],["execute",{"2":{"49":1,"65":1,"77":1,"105":2,"247":1,"596":1,"1303":1,"1448":2,"2262":2,"2348":1,"2355":2,"2392":2,"2544":1}}],["exlm",{"2":{"1430":2,"2378":1,"2399":1}}],["exsl",{"2":{"1360":1,"2355":1,"2392":1}}],["exsel",{"2":{"231":2,"1360":3,"2355":2,"2392":2}}],["exhaustion",{"2":{"659":1,"660":1}}],["exhaustive",{"2":{"273":1,"663":1,"2563":1,"2564":1,"2719":1}}],["exisiting",{"2":{"2276":1}}],["existed",{"2":{"2169":1}}],["existence",{"2":{"199":1,"1364":1}}],["exists",{"2":{"191":1,"266":1,"374":2,"405":1,"610":1,"615":1,"1300":2,"1349":1,"1397":1,"1413":1,"1415":1,"1560":1,"1675":1,"1933":1,"2513":1,"2566":1,"2567":1}}],["exist",{"2":{"182":1,"191":1,"199":1,"236":1,"317":2,"496":1,"510":1,"539":1,"554":1,"1265":1,"1398":1,"2169":1,"2255":1,"2348":1,"2530":1,"2587":1,"2594":1,"2753":1}}],["existing",{"0":{"31":1,"34":1,"36":1,"2550":1,"2753":1},"2":{"50":2,"92":1,"118":1,"128":1,"140":1,"149":2,"158":1,"194":1,"201":1,"203":1,"213":1,"221":1,"240":1,"249":1,"262":1,"268":1,"272":1,"275":1,"282":3,"291":1,"331":1,"341":1,"344":1,"352":1,"386":1,"453":2,"481":1,"560":1,"569":1,"571":1,"1341":8,"1344":1,"1346":1,"1656":1,"1873":1,"2268":1,"2327":1,"2445":1,"2480":2,"2501":2,"2508":1,"2513":2,"2550":2,"2564":1,"2566":5,"2567":1,"2753":2}}],["exiting",{"2":{"2150":1,"2231":2,"2238":2}}],["exit",{"2":{"373":2,"393":1,"394":1,"395":1,"396":1,"402":1,"403":1,"411":1,"626":1,"1923":1,"2353":1,"2575":3,"2693":2}}],["exaggeration",{"2":{"2745":1}}],["exactly",{"2":{"1351":1,"1921":1,"2148":1,"2255":1,"2318":1}}],["exact",{"2":{"336":1,"538":1,"597":1,"1518":1,"1605":1,"1675":1,"2196":1,"2197":1,"2198":1,"2250":1,"2328":1,"2727":1,"2745":1}}],["examine",{"2":{"1496":1}}],["examines",{"2":{"376":1,"397":1}}],["examining",{"0":{"316":1}}],["examples",{"0":{"458":1,"1251":1,"1301":1,"1382":1,"1511":1,"1534":1,"1592":1,"1656":1,"1664":1,"1667":1,"1816":1,"1877":1,"1881":1,"1896":1,"1958":1,"1959":1,"2077":1,"2140":1,"2163":1,"2165":1},"1":{"1252":1,"1253":1,"1302":1,"1303":1,"1383":1,"1384":1,"1385":1,"1593":1,"1594":1,"1665":1,"1666":1,"1668":1,"1878":1,"1879":1,"1880":1,"1882":1,"1883":1,"1897":1,"1898":1,"1959":1,"1960":1,"2078":1,"2079":1,"2164":1,"2165":1,"2166":2,"2167":2,"2168":2,"2169":2,"2170":2,"2171":2},"2":{"99":1,"114":1,"198":1,"375":1,"376":1,"378":1,"380":1,"381":1,"405":1,"407":1,"411":1,"557":1,"609":2,"1251":1,"1301":1,"1330":1,"1346":1,"1366":1,"1518":1,"1519":1,"1655":1,"1662":1,"1677":1,"1729":1,"1881":1,"1921":1,"1952":1,"2147":1,"2148":1,"2161":1,"2162":1,"2165":3,"2171":4,"2262":1,"2270":1,"2284":1,"2294":1,"2311":1,"2486":1,"2575":3,"2577":2,"2651":1,"2738":1,"2752":1}}],["example",{"0":{"313":1,"414":1,"419":1,"420":1,"421":1,"422":1,"463":1,"464":1,"465":1,"530":1,"572":1,"576":1,"582":1,"585":1,"588":1,"590":1,"593":1,"594":1,"1332":1,"1343":1,"1344":1,"1374":1,"1392":1,"1436":1,"1446":1,"1448":1,"1471":1,"1663":1,"1686":1,"1717":1,"1718":1,"1792":1,"1814":1,"1815":1,"1923":1,"2039":1,"2138":1,"2139":1,"2164":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1,"2570":1,"2604":1,"2606":1},"1":{"1375":1},"2":{"49":2,"70":1,"90":2,"98":1,"99":2,"105":2,"111":1,"114":2,"149":1,"194":1,"202":1,"203":1,"211":1,"234":1,"272":1,"301":1,"314":1,"331":3,"358":1,"370":2,"373":1,"374":1,"388":1,"389":1,"390":1,"391":1,"393":1,"394":1,"395":1,"396":1,"397":1,"401":1,"414":2,"415":3,"417":2,"423":2,"424":1,"425":2,"426":4,"430":2,"432":1,"437":1,"441":2,"453":1,"470":1,"473":1,"513":1,"529":1,"532":1,"540":1,"554":1,"556":2,"557":1,"570":1,"572":1,"576":1,"582":1,"585":2,"588":1,"589":1,"597":1,"601":1,"611":1,"616":1,"624":2,"626":1,"661":1,"669":1,"684":1,"701":1,"703":2,"734":1,"760":1,"790":1,"824":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1132":1,"1133":1,"1148":1,"1177":2,"1181":1,"1198":2,"1216":1,"1238":1,"1252":1,"1253":1,"1269":1,"1293":1,"1299":1,"1300":2,"1302":2,"1303":2,"1312":1,"1313":1,"1325":2,"1331":1,"1332":4,"1335":1,"1339":1,"1343":2,"1344":1,"1351":1,"1357":8,"1359":1,"1360":1,"1361":2,"1364":1,"1365":1,"1376":1,"1377":1,"1381":1,"1382":3,"1385":1,"1388":1,"1391":1,"1393":1,"1395":1,"1405":1,"1412":1,"1416":1,"1430":1,"1431":1,"1445":1,"1447":1,"1448":1,"1451":2,"1464":1,"1469":1,"1471":1,"1497":1,"1499":1,"1503":1,"1510":1,"1511":3,"1518":1,"1519":1,"1523":2,"1524":1,"1529":1,"1534":1,"1557":1,"1558":1,"1562":2,"1582":1,"1594":1,"1633":1,"1637":1,"1638":1,"1663":1,"1665":1,"1666":1,"1668":2,"1670":1,"1684":1,"1686":1,"1717":1,"1718":1,"1719":1,"1720":1,"1724":1,"1725":1,"1729":1,"1791":1,"1802":1,"1804":1,"1807":1,"1813":1,"1814":1,"1815":1,"1817":1,"1821":1,"1875":1,"1878":1,"1880":1,"1882":1,"1883":1,"1899":1,"1902":1,"1905":1,"1906":1,"1908":2,"1917":1,"1921":1,"1923":1,"1933":2,"1939":1,"1941":1,"1945":1,"1946":1,"1952":1,"1959":1,"2041":1,"2047":1,"2051":1,"2059":1,"2067":1,"2079":2,"2107":1,"2122":1,"2126":1,"2130":1,"2137":1,"2138":1,"2139":1,"2145":1,"2146":1,"2149":1,"2152":1,"2155":2,"2157":1,"2160":1,"2161":2,"2164":1,"2167":1,"2169":5,"2170":1,"2171":2,"2181":2,"2182":1,"2183":1,"2252":2,"2259":1,"2262":4,"2277":1,"2293":2,"2295":1,"2299":2,"2300":1,"2302":1,"2303":1,"2306":1,"2309":3,"2311":2,"2317":1,"2319":1,"2331":1,"2344":1,"2347":3,"2348":1,"2349":1,"2367":1,"2393":1,"2402":1,"2404":1,"2407":1,"2411":1,"2413":1,"2414":1,"2415":1,"2421":2,"2452":1,"2469":2,"2490":1,"2491":1,"2524":1,"2546":1,"2548":1,"2549":1,"2550":1,"2559":1,"2564":1,"2566":3,"2576":1,"2577":1,"2612":1,"2617":1,"2671":1,"2672":6,"2673":2,"2674":1,"2682":1,"2686":6,"2688":4,"2689":3,"2694":3,"2695":4,"2696":1,"2697":1,"2699":3,"2710":1,"2711":1,"2728":3,"2734":3,"2735":1,"2736":1,"2737":1,"2743":1,"2746":2,"2748":1,"2750":1,"2753":1,"2755":1,"2757":1}}],["exclaim",{"2":{"2378":1,"2399":1}}],["exclamation",{"2":{"1430":1}}],["excluding",{"0":{"441":1},"2":{"502":1,"1457":1,"1937":1,"2677":1}}],["excluded",{"2":{"441":1,"2051":2}}],["exclude",{"2":{"176":2,"610":2,"1446":7}}],["exclusion",{"0":{"1581":1},"1":{"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1},"2":{"1581":2}}],["exclusions",{"2":{"114":1,"149":1}}],["exclusively",{"2":{"304":1,"2242":1}}],["exclusive",{"2":{"160":1,"1339":1}}],["exchangeable",{"2":{"654":1}}],["excess",{"2":{"617":1,"2273":1}}],["excessive",{"2":{"469":1,"659":1,"2584":1}}],["except",{"2":{"453":1,"461":2,"466":1,"502":1,"726":1,"1214":1,"1242":1,"1335":1,"1633":1,"1878":1,"2230":1,"2240":1,"2302":1,"2367":1,"2742":1}}],["exceptional",{"2":{"466":1}}],["exceptionname",{"2":{"460":1}}],["exception",{"2":{"189":1,"194":1,"461":1,"466":3,"1390":1,"1397":1,"2169":1,"2327":1,"2385":1,"2550":1,"2587":1}}],["exceptions",{"0":{"466":1},"2":{"160":1,"466":1,"625":1,"1445":1,"1885":1,"1900":1,"2303":1}}],["exceed",{"2":{"2268":1}}],["exceeds",{"2":{"176":1,"481":1}}],["exceeding",{"2":{"160":1}}],["exceeded",{"2":{"28":1,"516":1,"1425":1}}],["ext",{"2":{"2545":1}}],["extreg",{"2":{"1863":5}}],["extremely",{"2":{"479":1,"584":1,"628":1,"2463":1,"2739":1}}],["extraneous",{"2":{"2702":1}}],["extracondensedbold",{"2":{"2575":1}}],["extracts",{"2":{"613":1}}],["extracted",{"2":{"249":1,"2498":1}}],["extract",{"0":{"613":1},"2":{"236":1,"249":5,"277":1,"282":1,"607":1,"613":4,"2497":1,"2687":1}}],["extraction",{"2":{"191":1}}],["extrapolates",{"2":{"606":1}}],["extrakeys",{"2":{"191":1,"2702":1}}],["extrakey",{"2":{"70":1,"111":1,"191":1,"209":1,"515":1,"516":2,"1287":1,"1291":2,"2063":1,"2263":1,"2702":1}}],["extras",{"2":{"48":1,"114":1,"160":1,"199":2,"222":1,"277":1,"2712":1}}],["extra",{"0":{"546":1,"1291":1},"2":{"45":2,"114":1,"145":1,"176":1,"191":2,"199":1,"317":1,"563":1,"633":1,"681":1,"693":1,"1287":2,"1391":1,"1463":1,"1515":7,"2042":1,"2131":2,"2150":1,"2262":1,"2276":1,"2349":1,"2423":1,"2506":1,"2523":1,"2530":1,"2575":1,"2729":1}}],["extkeys",{"2":{"143":2}}],["extern",{"2":{"266":1,"1792":1,"2752":1}}],["externs",{"2":{"196":1}}],["externally",{"2":{"224":1,"228":1,"317":1,"2441":1}}],["external",{"0":{"228":1,"392":1,"2291":1,"2441":1,"2443":1,"2444":1,"2446":1,"2447":1},"1":{"393":1,"394":1,"395":1,"396":1,"397":1,"2442":1,"2443":1,"2444":1,"2445":1,"2446":1,"2447":1,"2448":1},"2":{"73":1,"114":1,"134":1,"149":1,"174":1,"220":1,"224":1,"228":3,"241":2,"253":2,"268":1,"270":2,"393":1,"394":1,"395":1,"396":1,"397":1,"638":1,"681":1,"684":10,"685":5,"688":1,"690":6,"691":1,"694":7,"1126":1,"1134":1,"1225":1,"1723":1,"1729":1,"1814":1,"1944":1,"1952":1,"2291":1,"2441":5,"2442":1,"2443":1,"2444":1,"2445":2,"2446":2,"2447":3,"2448":1,"2531":1,"2544":2,"2554":1,"2566":1,"2574":1,"2577":1,"2638":1}}],["extent",{"2":{"2157":1,"2577":1}}],["extensively",{"2":{"470":1}}],["extensive",{"2":{"355":1,"1267":1}}],["extensions",{"0":{"2510":1},"2":{"2510":2}}],["extension",{"2":{"199":1,"211":1,"454":1,"460":1,"505":2,"1804":1,"2510":3,"2512":2,"2546":1}}],["extensible",{"2":{"107":1,"114":1,"2492":1}}],["extending",{"0":{"599":1},"2":{"505":2,"571":1}}],["extend",{"2":{"160":1,"191":1,"599":2}}],["extended",{"2":{"74":1,"176":2,"211":1,"236":1,"435":2,"505":2,"684":1,"685":1,"686":1,"1516":1,"1872":2,"2343":1,"2344":1,"2346":1,"2348":2,"2530":1,"2712":2,"2720":1}}],["ext65",{"0":{"60":1},"2":{"60":1}}],["expires",{"2":{"2737":1}}],["expired",{"2":{"1900":1,"2729":1}}],["expansion",{"2":{"2290":1}}],["expands",{"2":{"395":1,"2728":1}}],["expanding",{"2":{"300":1,"1336":1,"2411":1}}],["expandable",{"2":{"300":1}}],["expanders",{"2":{"2284":1}}],["expander",{"2":{"266":1}}],["expanded",{"0":{"118":1},"2":{"70":1,"506":1,"1265":1,"2042":1}}],["expand",{"2":{"134":1,"149":1,"331":1,"395":1,"2728":1}}],["expression",{"2":{"469":1}}],["expressions",{"0":{"471":1,"473":1},"2":{"374":1,"473":1}}],["expressed",{"2":{"70":1}}],["explore",{"2":{"2280":1,"2324":1,"2424":1}}],["explorer",{"2":{"2245":1,"2247":1,"2249":1,"2452":2,"2501":1}}],["explanations",{"2":{"2260":1}}],["explanation",{"2":{"1334":1,"2162":1,"2172":1}}],["explained",{"2":{"1345":1,"2262":1}}],["explain",{"2":{"453":1,"455":1,"554":1,"560":1,"1675":1,"2256":1,"2742":1}}],["explains",{"2":{"412":1,"1672":1,"2297":1}}],["explaining",{"2":{"173":1,"1672":1,"2566":1,"2746":1,"2750":1}}],["explicit",{"0":{"124":1},"2":{"134":1,"198":1,"1527":1}}],["explicitly",{"2":{"14":1,"114":1,"191":1,"469":1,"684":1,"1432":1,"1495":1,"1528":1,"2037":1,"2051":1,"2150":1,"2708":1}}],["exporting",{"2":{"2575":2}}],["exports",{"2":{"370":2,"371":1}}],["exported",{"2":{"317":1}}],["export",{"2":{"134":1,"365":1,"366":1,"379":1,"391":1,"393":2,"394":2,"441":1,"519":1,"2277":2,"2566":1}}],["exposes",{"2":{"1313":1,"2304":1}}],["exposed",{"2":{"689":1,"690":1,"691":1,"2274":2,"2515":1,"2683":1}}],["expose",{"2":{"114":1,"160":1,"176":1,"211":1,"2305":1}}],["expert",{"2":{"703":2}}],["experiment",{"2":{"1857":1,"2280":1}}],["experimentation",{"2":{"556":1}}],["experimental",{"2":{"511":1,"1136":1,"1403":1,"2108":2,"2128":1}}],["experiencing",{"2":{"1260":1}}],["experience",{"2":{"496":1,"552":1,"1136":1,"1228":1,"1403":1,"1405":1,"2125":1,"2472":1}}],["expense",{"2":{"496":1,"2226":1}}],["expensive",{"2":{"114":1,"1329":1,"1733":1,"1957":1,"2269":1}}],["expects",{"2":{"1677":1,"2146":1,"2575":1,"2738":1}}],["expect",{"2":{"437":1,"1286":1,"1325":1,"1869":1,"2312":1,"2455":1,"2699":1,"2756":1}}],["expecting",{"2":{"124":1}}],["expected",{"2":{"4":1,"13":1,"317":1,"352":1,"701":1,"1447":1,"1685":1,"1725":3,"1885":1,"1946":3,"2150":1,"2686":1,"2730":1}}],["erm",{"0":{"1576":1},"2":{"1571":1,"1576":2,"1577":2}}],["err",{"2":{"496":1}}],["erroneous",{"2":{"149":1,"160":1}}],["error",{"0":{"141":1},"2":{"28":1,"92":1,"103":1,"114":4,"126":1,"149":4,"160":1,"176":3,"191":2,"199":3,"201":1,"211":1,"222":4,"236":1,"315":1,"433":1,"500":1,"516":1,"522":1,"556":1,"689":1,"710":2,"713":2,"716":2,"719":2,"722":2,"725":2,"728":2,"1190":2,"1193":2,"1338":1,"1437":1,"1868":1,"1907":1,"2279":1,"2300":1,"2353":1,"2437":1,"2454":1,"2468":1,"2474":1}}],["errors",{"0":{"2308":1},"2":{"17":1,"34":1,"73":2,"92":1,"114":2,"134":1,"149":1,"160":2,"191":2,"199":1,"211":2,"316":1,"360":1,"381":1,"481":1,"556":3,"1287":1,"1312":1,"1437":1,"1868":1,"2128":2,"2144":1,"2262":1,"2279":1,"2308":2,"2335":1,"2428":1,"2437":1,"2439":1,"2508":1,"2587":1,"2593":1,"2594":1,"2752":1}}],["eras",{"2":{"2355":1,"2392":1}}],["erasing",{"2":{"2347":1,"2353":1,"2453":1}}],["erased",{"2":{"2353":8}}],["erase",{"2":{"277":2,"683":1,"687":1,"690":1,"1238":1,"1287":1,"1815":1,"2139":1,"2230":2,"2347":1,"2355":2,"2392":2,"2453":1,"2477":1}}],["era",{"2":{"236":1,"249":1}}],["era65",{"2":{"222":1}}],["erovia",{"2":{"164":1}}],["ergosaurus",{"2":{"159":2}}],["ergotaco",{"2":{"143":2}}],["ergodash",{"2":{"143":4}}],["ergodone",{"2":{"102":2}}],["ergodox",{"0":{"1722":1},"2":{"8":1,"114":3,"134":1,"143":2,"211":1,"378":1,"1329":1,"1722":7,"2136":1,"2167":9,"2262":2}}],["ergoarrows",{"2":{"143":2}}],["ergo42",{"2":{"143":2}}],["ergo",{"2":{"143":2}}],["ergoinu",{"2":{"37":2,"149":1}}],["enamelled",{"2":{"2270":1}}],["enablehexnumpad",{"2":{"2183":1}}],["enable=true",{"2":{"1245":1,"1255":1}}],["enable=yes",{"2":{"93":1,"277":1,"375":1,"1254":1,"2063":1,"2755":1}}],["enabled",{"0":{"504":1,"1483":1,"1741":1,"1968":1},"1":{"1484":1,"1742":1,"1969":1},"2":{"112":3,"114":2,"174":1,"191":1,"209":4,"211":1,"222":2,"236":1,"249":2,"265":1,"268":1,"275":2,"277":1,"388":1,"397":1,"502":9,"505":1,"515":1,"516":1,"592":2,"636":1,"657":1,"683":1,"698":3,"1228":1,"1243":1,"1250":2,"1252":1,"1294":1,"1313":1,"1316":2,"1317":2,"1321":1,"1332":5,"1341":4,"1357":1,"1377":1,"1384":7,"1398":1,"1402":1,"1413":1,"1418":1,"1423":1,"1431":3,"1432":1,"1439":1,"1446":1,"1449":1,"1455":1,"1484":1,"1489":1,"1495":1,"1501":1,"1516":1,"1526":1,"1528":1,"1548":1,"1556":1,"1559":1,"1570":1,"1579":1,"1581":1,"1668":1,"1670":2,"1730":2,"1741":1,"1742":1,"1751":1,"1752":1,"1753":1,"1754":1,"1773":1,"1793":1,"1854":1,"1866":1,"1884":1,"1885":1,"1887":2,"1894":3,"1899":4,"1908":2,"1932":1,"1948":1,"1954":2,"1968":1,"1969":1,"1978":1,"1979":1,"1980":1,"1981":1,"2018":1,"2032":1,"2034":1,"2036":1,"2052":7,"2056":1,"2057":1,"2063":2,"2073":1,"2074":1,"2113":1,"2114":1,"2129":3,"2131":3,"2173":2,"2180":1,"2183":2,"2226":1,"2254":1,"2260":1,"2263":1,"2304":1,"2348":1,"2371":1,"2502":1,"2566":3,"2574":2,"2577":1,"2607":1,"2674":1,"2676":2,"2677":2,"2679":1,"2680":1,"2682":1,"2688":1,"2690":1,"2692":2,"2694":3,"2695":1,"2696":1,"2697":2,"2698":1,"2702":1,"2708":2,"2735":3,"2736":3,"2738":2}}],["enables",{"2":{"87":1,"114":1,"119":1,"502":7,"504":1,"505":6,"506":1,"513":1,"515":2,"582":1,"788":1,"1214":1,"1399":4,"1424":1,"1431":1,"1432":1,"1526":1,"1728":20,"1808":1,"1817":1,"1829":1,"1865":1,"1866":1,"1872":1,"1882":1,"1889":1,"1932":1,"1949":48,"2129":8,"2131":1,"2172":1,"2173":4,"2263":7,"2539":1,"2648":1,"2679":1,"2680":1,"2690":1,"2718":1,"2727":1,"2737":1}}],["enable",{"0":{"1413":1,"1439":1,"1474":1,"1486":1,"1500":1,"1737":1,"1738":1,"1887":1,"1894":1,"1930":1,"1964":1,"1965":1,"2053":1,"2109":1},"1":{"1501":1},"2":{"10":1,"28":1,"31":3,"34":3,"49":1,"65":5,"70":1,"74":1,"75":1,"87":3,"88":7,"93":2,"94":1,"103":1,"104":7,"114":6,"118":1,"119":1,"124":1,"126":1,"127":7,"131":1,"133":1,"134":12,"149":2,"160":1,"176":5,"191":3,"194":2,"199":1,"202":2,"209":2,"211":2,"222":2,"232":1,"234":1,"235":2,"236":2,"247":1,"249":1,"266":35,"273":1,"277":2,"318":1,"370":1,"429":1,"448":1,"502":2,"504":2,"505":4,"511":8,"513":1,"515":24,"516":7,"533":1,"582":1,"588":1,"596":2,"657":1,"658":1,"661":1,"666":1,"668":1,"698":1,"703":4,"733":1,"750":3,"752":1,"759":1,"777":3,"779":1,"786":1,"788":1,"789":1,"809":3,"811":1,"823":1,"856":1,"876":3,"878":1,"890":1,"910":3,"912":1,"924":1,"944":3,"946":1,"958":1,"978":3,"980":1,"992":1,"1026":1,"1060":1,"1094":1,"1130":1,"1138":2,"1147":1,"1167":3,"1169":1,"1177":3,"1198":2,"1217":1,"1226":2,"1228":1,"1230":1,"1245":2,"1252":2,"1253":1,"1255":1,"1276":3,"1280":4,"1281":1,"1287":4,"1288":1,"1291":2,"1298":3,"1300":2,"1314":1,"1319":1,"1332":3,"1377":3,"1383":1,"1384":4,"1386":1,"1390":1,"1397":2,"1398":2,"1399":2,"1402":1,"1405":1,"1406":1,"1413":1,"1414":1,"1431":1,"1433":1,"1439":3,"1446":1,"1448":4,"1449":1,"1455":1,"1457":4,"1469":1,"1470":1,"1493":2,"1495":1,"1500":1,"1501":2,"1503":1,"1508":2,"1512":1,"1526":1,"1528":1,"1530":1,"1532":1,"1547":1,"1548":2,"1549":2,"1553":2,"1557":1,"1559":2,"1560":1,"1570":7,"1590":1,"1631":2,"1635":1,"1657":2,"1668":1,"1679":1,"1683":2,"1685":1,"1686":3,"1714":1,"1718":2,"1728":22,"1730":1,"1787":2,"1789":1,"1790":1,"1799":1,"1800":2,"1804":1,"1805":3,"1807":1,"1812":2,"1813":1,"1816":1,"1825":1,"1830":2,"1833":1,"1853":2,"1854":1,"1860":13,"1864":1,"1865":4,"1866":5,"1868":1,"1870":1,"1872":6,"1873":1,"1875":1,"1880":1,"1881":1,"1882":1,"1884":1,"1887":3,"1889":1,"1894":6,"1897":3,"1899":1,"1904":2,"1905":2,"1906":2,"1907":2,"1910":4,"1912":2,"1916":1,"1919":1,"1930":1,"1949":50,"1951":1,"1954":1,"1958":1,"1959":1,"2032":2,"2035":1,"2037":11,"2041":1,"2042":2,"2043":1,"2044":3,"2053":2,"2056":1,"2063":4,"2068":1,"2073":1,"2105":1,"2109":1,"2110":1,"2112":1,"2113":4,"2121":1,"2126":1,"2129":13,"2131":4,"2137":3,"2140":1,"2145":3,"2146":2,"2147":1,"2148":1,"2149":2,"2150":1,"2154":1,"2157":2,"2161":1,"2164":1,"2172":2,"2181":4,"2182":2,"2183":3,"2225":2,"2231":1,"2238":1,"2263":17,"2264":2,"2299":5,"2300":2,"2305":4,"2370":2,"2396":2,"2513":1,"2522":1,"2565":1,"2566":8,"2572":1,"2573":2,"2574":1,"2576":11,"2579":2,"2674":3,"2682":1,"2688":1,"2692":2,"2694":4,"2695":1,"2696":1,"2697":1,"2698":1,"2700":1,"2702":8,"2703":2,"2704":1,"2706":2,"2708":46,"2727":1,"2728":5,"2735":1,"2738":1,"2757":1}}],["enabling",{"0":{"124":1,"234":1,"1294":1,"1800":1,"2043":1,"2579":1,"2583":1},"2":{"10":1,"50":1,"107":2,"134":1,"190":1,"191":1,"195":1,"232":2,"234":1,"388":1,"505":1,"512":1,"1195":1,"1276":1,"1403":1,"2131":1,"2150":1,"2448":1,"2566":1,"2576":10,"2578":1,"2702":2}}],["enjoy",{"2":{"2263":1}}],["enqueue",{"2":{"2162":1}}],["enqueued",{"2":{"314":1,"315":1}}],["energy",{"2":{"551":1,"1491":1}}],["enough",{"2":{"334":1,"486":1,"538":1,"556":1,"585":1,"588":2,"621":1,"1123":1,"1126":1,"1129":1,"1303":1,"1412":1,"1515":1,"1671":1,"1716":1,"1804":1,"1822":1,"2143":1,"2161":1,"2274":2,"2276":1,"2279":1,"2427":1,"2457":1,"2513":1,"2564":1,"2702":1}}],["encryption",{"2":{"2065":1}}],["encompasses",{"2":{"2322":1}}],["encompass",{"2":{"602":1,"606":1,"1304":1}}],["encountering",{"2":{"1666":1}}],["encountered",{"2":{"1241":1,"2074":1}}],["encounter",{"2":{"541":1,"1904":1,"2250":1,"2305":1,"2466":1}}],["encouraging",{"2":{"482":1}}],["encourages",{"2":{"1265":1}}],["encouraged",{"2":{"474":1,"496":1,"2554":1,"2564":1,"2569":1,"2718":1}}],["encourage",{"2":{"453":1,"455":1,"471":1,"537":1,"1528":1,"2566":1,"2656":1}}],["encodes",{"2":{"2148":1}}],["encode",{"2":{"1451":3}}],["encoded",{"2":{"1451":5}}],["encoder2b",{"2":{"1557":1,"1558":1,"2131":1}}],["encoder2a",{"2":{"1557":1,"1558":1,"2131":1}}],["encoder1b",{"2":{"1557":1,"1558":1,"2131":1}}],["encoder1a",{"2":{"1557":1,"1558":1,"2131":1}}],["encodermap",{"2":{"199":2}}],["encoder+encoder",{"2":{"176":1}}],["encoders",{"0":{"1557":1,"1562":1},"1":{"1558":1,"1559":1,"1560":1,"1561":1,"1562":1},"2":{"13":1,"114":3,"154":1,"160":1,"198":1,"201":3,"236":1,"277":1,"1557":3,"1558":1,"1559":3,"1560":1,"1561":1,"1562":6,"2157":3,"2566":1}}],["encoder",{"0":{"13":1,"90":1,"154":1,"209":1,"218":1,"1559":1,"2157":1,"2684":1},"1":{"2158":1},"2":{"13":2,"63":2,"74":1,"90":11,"93":1,"105":1,"110":1,"114":1,"134":1,"154":2,"160":3,"176":5,"191":5,"199":2,"201":3,"209":5,"211":8,"218":2,"222":3,"226":4,"247":1,"249":3,"255":1,"266":3,"277":2,"588":2,"630":1,"1234":2,"1557":13,"1558":13,"1559":16,"1560":9,"1562":9,"1948":1,"2034":1,"2131":3,"2157":5,"2566":4,"2584":1,"2684":5,"2686":2,"2697":2}}],["encoding",{"0":{"1451":1},"2":{"73":1,"211":1,"1215":1,"2575":2,"2585":1,"2592":1,"2666":1}}],["enclosing",{"2":{"294":1}}],["enhance",{"2":{"277":1,"320":1}}],["enhancement",{"2":{"93":1,"160":1,"222":2,"236":2,"249":1}}],["enhancements",{"0":{"49":1,"63":1,"74":1,"93":1},"2":{"211":1}}],["en",{"2":{"249":1,"666":1,"684":3,"1293":2}}],["english",{"2":{"211":1,"1355":1,"1441":4,"1934":1,"1943":1,"2148":1,"2391":1,"2657":1,"2712":5}}],["engine",{"2":{"160":1,"304":1,"1445":1}}],["env",{"2":{"93":1,"396":4,"411":4,"2508":1}}],["environments",{"2":{"132":1}}],["environment",{"0":{"302":1,"2421":1,"2430":1,"2456":1,"2458":1,"2469":1,"2494":1},"1":{"2431":1,"2432":1,"2433":1,"2457":1,"2458":1,"2459":2,"2460":2,"2461":2,"2462":2,"2463":2,"2464":2,"2465":2,"2466":2,"2467":2,"2468":1,"2469":1},"2":{"23":1,"321":1,"365":1,"366":1,"367":1,"376":4,"397":1,"401":1,"428":1,"437":1,"558":1,"624":2,"625":1,"1237":1,"2250":1,"2252":1,"2277":1,"2300":1,"2341":1,"2346":1,"2418":1,"2420":1,"2421":1,"2422":2,"2425":1,"2428":2,"2454":1,"2456":1,"2458":2,"2469":1,"2472":1,"2492":1}}],["enumerating",{"2":{"570":2,"1923":1,"2255":1}}],["enumeration",{"2":{"515":1,"2699":2}}],["enumerated",{"2":{"1359":1}}],["enumerate",{"2":{"570":1,"1923":1,"2343":1}}],["enums",{"2":{"199":1,"453":1,"557":1,"2165":2,"2169":1,"2423":1,"2565":2}}],["enum",{"2":{"50":1,"453":1,"532":1,"534":2,"557":1,"628":2,"1344":1,"1359":1,"1375":1,"1379":1,"1385":1,"1511":1,"1518":1,"1792":1,"1821":2,"1822":2,"1899":1,"2143":2,"2164":1,"2165":1,"2169":3,"2170":2,"2171":3,"2181":2,"2405":1}}],["ent",{"2":{"313":1,"530":2,"1385":1,"1423":1,"1518":1,"1892":1,"2107":1,"2161":2,"2355":1,"2388":1,"2407":1}}],["entities",{"0":{"286":1}}],["entirely",{"2":{"50":1,"222":1,"273":1,"352":1,"453":1,"1447":1,"1950":1,"2302":1,"2405":1,"2424":1,"2576":1}}],["entire",{"0":{"419":1},"2":{"50":1,"152":1,"199":1,"231":1,"249":1,"407":1,"411":1,"418":2,"1329":1,"1684":1,"1685":1,"1822":3,"2122":1,"2355":1,"2393":1,"2576":3,"2587":2,"2594":2,"2720":1}}],["entered",{"2":{"2474":2}}],["enters",{"2":{"2233":1,"2235":1}}],["entering",{"2":{"324":1,"592":1,"626":1,"2231":1,"2238":1,"2320":1,"2480":1,"2517":1,"2521":1,"2539":1}}],["enter80",{"2":{"241":2}}],["enter67",{"2":{"241":2}}],["enter",{"0":{"1422":1,"2320":1},"2":{"176":1,"211":1,"325":1,"335":2,"572":4,"624":1,"626":1,"1332":3,"1338":1,"1399":1,"1422":1,"1423":1,"1518":1,"1584":1,"1892":1,"2075":1,"2078":1,"2103":1,"2104":2,"2150":1,"2161":2,"2182":1,"2196":1,"2197":2,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":2,"2247":2,"2249":2,"2255":1,"2263":1,"2348":1,"2355":4,"2382":2,"2388":2,"2394":2,"2450":1,"2479":2,"2481":1,"2524":2,"2530":1,"2539":1,"2541":1,"2553":2,"2615":2,"2617":1,"2619":1,"2686":1}}],["entry",{"0":{"2539":1},"2":{"149":1,"176":1,"222":1,"236":1,"540":1,"627":2,"1441":1,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"2154":1,"2162":3,"2182":2,"2502":1,"2539":1,"2565":1,"2595":1,"2597":3,"2743":1}}],["entrypoint",{"2":{"94":1,"307":1,"428":2}}],["entries",{"0":{"3":1,"7":1,"15":1},"2":{"628":1,"1405":1,"1441":1,"1495":1,"1496":1,"1525":1,"2181":1,"2597":2}}],["ensures",{"2":{"209":1,"511":4,"1312":1,"2130":1,"2250":1,"2272":1,"2577":1}}],["ensure",{"2":{"31":1,"34":1,"90":1,"92":1,"149":1,"176":2,"191":3,"198":1,"240":1,"249":4,"317":1,"341":1,"366":1,"399":1,"407":1,"411":1,"483":1,"562":1,"584":1,"636":1,"684":1,"1126":1,"1255":1,"1314":1,"1381":1,"1683":1,"1885":1,"1894":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2245":1,"2247":1,"2249":1,"2268":1,"2272":1,"2273":1,"2463":1,"2507":1,"2513":1,"2546":1,"2548":2,"2566":1,"2567":1,"2577":1}}],["ended",{"2":{"2169":1}}],["endianness",{"2":{"1181":1,"1194":1}}],["endian",{"2":{"717":1,"723":1,"1451":1,"2585":1,"2592":1}}],["ending",{"2":{"265":1,"399":1,"1817":1,"2141":1}}],["endings",{"2":{"249":1,"277":1,"399":2,"2506":1}}],["endif",{"2":{"31":2,"34":2,"134":1,"247":1,"292":1,"453":1,"588":3,"1252":1,"1313":1,"1351":2,"1377":2,"1384":2,"1385":2,"1398":2,"1423":6,"1446":3,"1448":4,"1548":1,"1549":2,"1559":1,"1686":3,"1718":2,"1729":1,"1813":1,"1816":1,"1822":1,"1870":1,"1904":1,"1905":1,"1907":1,"1952":1,"2137":1,"2140":1,"2157":1,"2168":1,"2299":5,"2300":3,"2706":2}}],["endpoints",{"0":{"263":1},"2":{"176":1,"266":1,"317":2,"516":4,"1788":1,"2150":1}}],["endpoint",{"0":{"516":1},"2":{"49":1,"50":4,"112":2,"160":1,"191":1,"236":1,"249":1,"308":1,"314":1,"317":4,"514":1,"516":4,"2150":1,"2238":1,"2699":3}}],["ends",{"2":{"28":1,"124":1,"1438":2,"1680":1,"1686":1,"1690":1,"2152":1,"2162":1,"2469":1}}],["end",{"0":{"1690":1,"1692":1},"2":{"3":1,"15":1,"149":1,"152":1,"196":2,"199":1,"211":1,"255":2,"265":2,"350":5,"352":1,"435":1,"450":1,"453":2,"530":2,"534":1,"550":1,"574":1,"587":1,"588":1,"606":1,"609":1,"689":2,"1194":1,"1255":1,"1287":1,"1326":2,"1344":3,"1363":1,"1499":1,"1508":3,"1509":2,"1510":2,"1511":7,"1518":1,"1523":1,"1534":1,"1556":1,"1586":1,"1680":1,"1686":1,"1692":1,"1813":1,"1817":1,"1822":2,"1932":3,"2051":2,"2137":1,"2141":1,"2152":1,"2161":1,"2162":1,"2169":1,"2262":1,"2272":3,"2273":3,"2279":1,"2349":2,"2352":1,"2355":3,"2392":2,"2394":1,"2408":1,"2425":1,"2437":1,"2467":1,"2474":2,"2503":1,"2525":1,"2564":1,"2566":1,"2576":1,"2577":1,"2734":1,"2744":1,"2757":2}}],["lr",{"2":{"1820":2,"2153":3}}],["lra",{"0":{"1577":1},"2":{"1571":1,"1576":1,"1577":5}}],["lpt",{"2":{"2347":1}}],["lp",{"2":{"2170":3}}],["lprn",{"2":{"1633":1,"2170":5,"2378":1,"2399":1}}],["lpad",{"2":{"241":2,"2355":1,"2393":1}}],["lgr",{"2":{"2153":1}}],["lg",{"2":{"1578":10}}],["lgui",{"2":{"196":1,"313":1,"530":2,"1299":1,"1300":1,"1361":1,"1366":1,"1403":1,"1680":1,"1686":1,"2355":1,"2370":4,"2373":1,"2374":1,"2390":1,"2396":4,"2405":1,"2407":1,"2410":2}}],["l65",{"2":{"1571":1}}],["lyr",{"2":{"1332":2}}],["lyso1",{"2":{"143":2,"149":2}}],["lbrc",{"2":{"313":1,"530":2,"1932":1,"2355":1,"2388":1,"2407":1}}],["l17",{"2":{"1496":2}}],["l16",{"2":{"1496":2}}],["l15",{"2":{"1496":2}}],["l14",{"2":{"1496":2}}],["l13",{"2":{"1496":2}}],["l12",{"2":{"1496":2}}],["l11",{"2":{"1496":2}}],["l10",{"2":{"1496":2}}],["l1",{"0":{"683":1},"2":{"277":1,"683":1}}],["l09",{"2":{"1496":2}}],["l082",{"2":{"2550":1}}],["l08",{"2":{"1496":2}}],["l073rz",{"2":{"2566":1}}],["l072",{"2":{"2550":1}}],["l07",{"2":{"1496":2}}],["l06",{"2":{"1496":2}}],["l05",{"2":{"1496":2}}],["l04",{"2":{"1496":2}}],["l03",{"2":{"1496":2}}],["l02",{"2":{"1496":2}}],["l01",{"2":{"1496":2}}],["l0xx",{"2":{"663":1}}],["l0",{"0":{"683":1},"2":{"277":1}}],["lfs",{"2":{"2506":1}}],["lfuse",{"2":{"2348":2}}],["lf",{"2":{"249":1,"399":1,"2075":1}}],["lfk87",{"2":{"211":1}}],["lfkeyboards",{"2":{"149":1,"211":1}}],["lwin",{"2":{"1299":2,"1361":1,"2355":1,"2373":1,"2374":1,"2390":1,"2410":1}}],["lw75",{"2":{"241":2}}],["lw67",{"2":{"241":2}}],["lv061228b",{"2":{"1571":1}}],["lvgl",{"0":{"2578":1,"2579":1,"2580":1,"2581":1,"2582":1,"2583":1,"2584":1},"1":{"2579":1,"2580":1,"2581":2,"2582":2,"2583":1,"2584":1},"2":{"199":2,"236":1,"2574":1,"2578":5,"2579":2,"2581":9,"2582":3,"2583":1,"2584":6}}],["lv",{"2":{"176":2,"2583":1}}],["lsb",{"2":{"2596":8}}],["lsbfirst",{"0":{"1180":1},"1":{"1181":1,"1182":1},"2":{"1181":1,"1856":1,"1863":1}}],["lswp",{"2":{"2370":2,"2396":2}}],["lspo",{"2":{"2103":1,"2104":1,"2106":6,"2107":5,"2382":1}}],["lsusb",{"2":{"1921":1,"2450":1,"2556":2}}],["lshift",{"2":{"1300":1}}],["lshift+rshift+key",{"2":{"2263":1}}],["lshift+rshift+n",{"2":{"1288":1}}],["lshift+ralt",{"2":{"1300":1}}],["lsa",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["lsg",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["lscr",{"2":{"502":1,"1276":1,"2355":1,"2389":1}}],["ls",{"2":{"143":4}}],["lsft",{"2":{"120":2,"313":1,"530":2,"1299":1,"1300":2,"1336":4,"1354":2,"1357":4,"1361":1,"1366":1,"1430":1,"1446":6,"1500":3,"1503":1,"1506":2,"1509":1,"1510":2,"1511":5,"1523":1,"1527":1,"1633":1,"1677":1,"1686":1,"2106":6,"2107":2,"2179":1,"2228":1,"2355":1,"2373":1,"2374":1,"2390":1,"2397":1,"2405":1,"2407":1,"2410":3,"2413":1,"2490":1,"2730":1,"2731":5,"2732":8,"2733":5,"2738":1}}],["lds",{"2":{"236":3}}],["ldscript",{"2":{"114":1}}],["ld",{"2":{"131":1,"134":1,"277":1,"2262":2}}],["llvm",{"2":{"454":2}}],["lld",{"2":{"191":1,"641":1}}],["ll",{"2":{"124":1,"158":2,"188":1,"232":1,"254":1,"272":1,"316":1,"537":1,"552":1,"557":1,"614":2,"657":1,"658":1,"689":1,"703":2,"1177":2,"1198":2,"1239":1,"1259":1,"1263":1,"1287":1,"1312":1,"1385":2,"1436":1,"1508":1,"1657":1,"1791":1,"1812":1,"2063":1,"2126":1,"2133":2,"2137":1,"2161":2,"2169":2,"2255":4,"2259":1,"2274":3,"2276":2,"2277":1,"2311":2,"2312":1,"2328":2,"2404":2,"2405":1,"2406":3,"2422":1,"2423":3,"2429":2,"2445":1,"2449":1,"2450":1,"2452":1,"2454":1,"2457":3,"2472":1,"2474":1,"2477":1,"2508":1,"2513":2,"2554":1,"2556":1,"2564":1,"2615":1,"2743":1,"2744":1,"2746":1,"2748":1}}],["lumissil",{"2":{"729":1,"755":1,"784":1,"816":1,"848":1,"883":1,"917":1,"951":1,"985":1,"1019":1,"1053":1,"1087":1}}],["lump",{"2":{"559":1,"560":1}}],["lune",{"2":{"211":1}}],["luna",{"2":{"191":1}}],["lucid",{"2":{"211":2}}],["lucky",{"2":{"2703":1}}],["luckily",{"2":{"2229":1,"2468":1}}],["luck",{"2":{"124":1,"173":1,"2455":1}}],["lulu",{"2":{"176":1}}],["lut",{"2":{"149":1,"404":2,"2711":1,"2712":2}}],["lufa",{"0":{"2":1,"6":1,"12":1,"2693":1},"2":{"6":4,"12":2,"49":1,"50":2,"93":1,"111":1,"114":2,"176":2,"191":1,"199":1,"277":1,"487":1,"514":1,"552":1,"1824":1,"2230":2,"2231":1,"2238":2,"2255":1,"2344":1,"2564":1,"2693":1,"2743":3}}],["l400",{"2":{"1332":1}}],["l4",{"2":{"191":1}}],["l422",{"2":{"114":1}}],["l443",{"2":{"93":1}}],["lcpo",{"2":{"2103":1,"2104":1,"2106":1,"2382":1}}],["lcbr",{"2":{"1932":1,"2378":1,"2399":1}}],["lctrl",{"2":{"1300":1,"2401":1}}],["lctl",{"2":{"38":2,"120":1,"194":5,"196":2,"313":1,"530":2,"1265":1,"1299":2,"1300":2,"1335":1,"1336":1,"1354":1,"1359":1,"1361":2,"1403":1,"1445":1,"1508":1,"1523":1,"1582":1,"1680":2,"1686":2,"2079":1,"2106":2,"2169":2,"2179":1,"2228":1,"2355":1,"2370":2,"2373":1,"2374":1,"2390":1,"2396":2,"2407":1,"2410":3,"2411":1,"2413":1,"2571":1}}],["lcag",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["lca",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["lcap",{"2":{"502":1,"1276":1,"2355":1,"2389":1}}],["lcmd",{"2":{"1299":1,"1361":1,"2355":1,"2373":1,"2374":1,"2390":1,"2410":1}}],["lc",{"2":{"491":1}}],["lck75",{"2":{"143":2}}],["lcds",{"2":{"153":1}}],["lcd",{"0":{"1588":1,"2135":1},"1":{"1589":1,"1590":1,"1591":1,"1592":1,"1593":1,"1594":1,"1595":1,"1596":1,"1597":1,"1598":1,"1599":1,"1600":1,"1601":1,"1602":1,"1603":1,"1604":1,"1605":1,"1606":1,"1607":1,"1608":1,"1609":1,"1610":1,"1611":1,"1612":1,"1613":1,"1614":1,"1615":1,"1616":1,"1617":1,"1618":1,"1619":1,"1620":1,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1,"1626":1,"1627":1,"1628":1,"1629":1,"2136":1,"2137":1,"2138":1,"2139":1,"2140":1,"2141":1,"2142":1,"2143":1},"2":{"114":1,"133":1,"134":1,"277":1,"1589":1,"2136":1,"2284":1,"2573":7}}],["lmn",{"2":{"266":1}}],["lm",{"2":{"38":1,"134":1,"1335":3,"1336":6,"1582":1,"1727":9,"1886":1,"2367":2,"2369":9}}],["l",{"2":{"32":1,"116":1,"191":1,"249":1,"266":3,"313":1,"375":2,"378":1,"385":1,"388":1,"411":2,"530":2,"573":1,"1300":27,"1451":5,"1527":1,"1932":1,"1934":1,"2148":1,"2153":1,"2347":1,"2355":3,"2386":3,"2407":1,"2686":1,"2734":5,"2735":9,"2736":5}}],["lnrm",{"2":{"2370":2,"2396":2}}],["lng9",{"2":{"2355":1,"2391":1}}],["lng8",{"2":{"2355":1,"2391":1}}],["lng7",{"2":{"2355":1,"2391":1}}],["lng6",{"2":{"2355":1,"2391":1}}],["lng5",{"2":{"2355":1,"2391":1}}],["lng4",{"2":{"2355":1,"2391":1}}],["lng3",{"2":{"2355":1,"2391":1}}],["lng2",{"2":{"2355":1,"2391":1}}],["lng1",{"2":{"2355":1,"2391":1}}],["lnx",{"2":{"2179":1,"2180":1,"2196":1}}],["lnum",{"2":{"502":1,"1276":1,"2355":1,"2389":1}}],["ln",{"2":{"31":2,"451":1,"1813":2,"1822":5,"1823":4,"2137":2,"2143":3}}],["legs",{"2":{"2268":1,"2270":1}}],["leg",{"2":{"1793":1,"2268":3,"2371":1}}],["legato",{"2":{"1793":2,"2371":2}}],["legal",{"2":{"1278":1}}],["legacy",{"0":{"140":1,"692":1,"2282":1},"1":{"2283":1},"2":{"75":1,"86":2,"94":1,"114":2,"133":1,"134":2,"160":2,"176":3,"188":12,"191":18,"211":1,"222":1,"236":1,"254":1,"277":1,"384":1,"505":1,"688":2,"1314":1,"2683":2,"2701":1}}],["leonardo",{"2":{"629":2,"1293":2,"2344":1}}],["len",{"2":{"1923":2}}],["lenght",{"2":{"1440":2}}],["lengths",{"2":{"1400":1,"2270":3}}],["lengthy",{"2":{"660":1}}],["length",{"0":{"481":1,"708":1,"711":1,"714":1,"717":1,"720":1,"723":1,"1188":1,"1191":1,"1206":1,"1208":1,"1925":1,"1927":1},"1":{"709":1,"710":1,"712":1,"713":1,"715":1,"716":1,"718":1,"719":1,"721":1,"722":1,"724":1,"725":1,"1189":1,"1190":1,"1192":1,"1193":1,"1207":1,"1209":1,"1926":1,"1928":1},"2":{"249":2,"313":1,"374":3,"481":1,"502":1,"709":2,"712":2,"715":2,"718":2,"721":2,"724":2,"1189":2,"1192":2,"1207":2,"1209":2,"1211":1,"1214":4,"1215":1,"1224":2,"1233":1,"1411":1,"1431":1,"1440":4,"1457":1,"1515":2,"1573":1,"1802":1,"1822":2,"1865":2,"1921":5,"1922":1,"1923":7,"1926":3,"1928":3,"2038":2,"2143":2,"2215":1,"2276":1,"2405":1,"2585":1,"2587":2,"2588":2,"2589":2,"2590":1,"2591":1,"2592":1,"2593":4,"2594":2,"2595":2,"2596":2,"2597":2,"2598":2,"2599":2,"2600":11,"2677":1}}],["lenient",{"2":{"114":1}}],["leeloo",{"2":{"236":2}}],["lefishe",{"2":{"143":2}}],["left=4",{"2":{"2577":1}}],["leftuf2",{"2":{"2126":1}}],["leftdfu",{"2":{"2126":2}}],["leftavrdude",{"2":{"2126":1}}],["leftmost",{"2":{"1533":1}}],["lefthand",{"2":{"509":1,"510":1}}],["leftover30",{"2":{"211":1}}],["leftover",{"2":{"77":1}}],["lefty",{"2":{"43":2,"134":3,"211":1,"241":6}}],["left",{"2":{"31":1,"34":1,"45":1,"100":1,"114":3,"152":1,"176":1,"202":2,"231":2,"236":2,"249":2,"257":1,"258":1,"259":2,"277":1,"289":1,"313":2,"331":3,"502":2,"506":2,"509":5,"510":4,"511":2,"530":2,"623":1,"624":1,"626":5,"684":1,"701":1,"1123":1,"1126":1,"1129":1,"1223":1,"1270":1,"1284":9,"1290":1,"1299":13,"1300":4,"1302":3,"1336":2,"1361":3,"1405":1,"1500":5,"1501":4,"1511":1,"1518":1,"1529":2,"1559":1,"1564":1,"1584":1,"1586":1,"1670":2,"1677":15,"1725":1,"1728":9,"1730":1,"1801":5,"1816":2,"1817":1,"1819":1,"1822":5,"1860":2,"1866":1,"1870":1,"1873":5,"1875":5,"1876":2,"1882":1,"1883":10,"1912":1,"1913":1,"1932":8,"1937":2,"1946":1,"1948":2,"1949":14,"1954":2,"2060":1,"2079":2,"2102":1,"2103":6,"2104":6,"2107":2,"2122":2,"2124":2,"2125":2,"2126":3,"2127":3,"2131":2,"2140":1,"2143":3,"2153":2,"2157":1,"2167":3,"2179":1,"2196":1,"2197":1,"2198":1,"2232":1,"2234":1,"2241":1,"2246":1,"2248":1,"2262":2,"2273":3,"2274":1,"2355":12,"2370":10,"2372":5,"2373":16,"2374":13,"2378":3,"2382":6,"2388":1,"2390":8,"2392":2,"2394":1,"2396":10,"2397":1,"2399":3,"2407":2,"2410":20,"2411":2,"2424":1,"2450":2,"2474":2,"2501":1,"2530":3,"2558":1,"2566":1,"2575":1,"2577":11,"2598":3,"2615":2,"2616":1,"2661":1,"2679":1,"2680":1,"2686":2,"2688":1,"2695":1,"2708":2,"2738":15}}],["le",{"2":{"143":2,"221":1,"222":1,"236":1,"515":1,"1491":3,"1492":4,"1493":1,"2678":1}}],["lean",{"2":{"2428":1}}],["leaps",{"2":{"2292":1}}],["learned",{"0":{"2472":1}}],["learn",{"2":{"2151":1,"2152":1,"2312":1,"2419":1,"2426":1,"2440":1,"2457":1,"2486":1,"2513":1,"2578":1,"2671":1,"2723":2,"2724":2}}],["learning",{"0":{"2151":1,"2482":1},"1":{"2483":1,"2484":1,"2485":1,"2486":1},"2":{"2151":1,"2419":1}}],["leaflabs",{"2":{"2350":1}}],["leaf",{"2":{"1438":1,"1451":7,"1452":1}}],["lease",{"2":{"349":1,"361":2,"2477":2}}],["least",{"2":{"199":1,"462":1,"482":1,"584":1,"635":1,"1181":1,"1336":1,"1416":1,"1612":1,"1614":1,"1636":1,"1697":1,"1799":1,"1805":1,"1806":1,"1856":1,"1863":2,"2117":2,"2125":2,"2169":1,"2274":1,"2302":1,"2353":1,"2411":1,"2432":1,"2720":1,"2745":1,"2756":1}}],["leak",{"2":{"236":1}}],["leaving",{"2":{"169":1,"184":1,"482":1,"1287":1,"1336":1,"2272":1,"2305":1,"2411":1,"2501":1}}],["leaves",{"2":{"1341":2,"1438":1}}],["leave",{"2":{"87":1,"103":1,"126":1,"462":1,"482":1,"510":1,"540":1,"1225":1,"1335":1,"1418":1,"2240":1,"2252":2,"2262":1,"2274":1,"2309":1,"2506":1,"2556":1}}],["leading",{"2":{"461":1,"660":1,"1181":6,"2147":1}}],["leader",{"0":{"196":2,"1678":1,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1697":1,"1698":1,"1699":1,"1702":1,"1705":1,"1708":1,"1711":1,"2368":1,"2645":1,"2687":1},"1":{"1679":1,"1680":1,"1681":1,"1682":1,"1683":1,"1684":1,"1685":1,"1686":1,"1687":1,"1688":1,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1695":2,"1696":2,"1697":1,"1698":1,"1699":1,"1700":2,"1701":2,"1702":1,"1703":2,"1704":2,"1705":1,"1706":2,"1707":2,"1708":1,"1709":2,"1710":2,"1711":1,"1712":2,"1713":2},"2":{"93":1,"112":3,"176":1,"196":15,"199":2,"505":6,"515":2,"1678":2,"1680":12,"1682":2,"1683":5,"1684":9,"1685":1,"1686":15,"1687":2,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1697":2,"1698":1,"2368":2,"2645":2,"2687":3,"2749":1}}],["lead",{"2":{"73":1,"188":2,"191":2,"1388":2,"1391":1,"1395":1,"1679":1,"1686":1,"1687":1,"1804":1,"2273":1,"2368":1,"2584":1}}],["letting",{"2":{"2273":1}}],["letter",{"2":{"1438":4,"1442":1,"1445":1,"1499":1,"1506":1,"1675":4,"1938":1,"1943":1,"2169":3}}],["letters",{"0":{"2386":1},"2":{"191":1,"211":1,"292":1,"460":1,"1254":1,"1355":1,"1435":3,"1440":1,"1442":1,"1446":1,"1447":1,"1499":1,"1503":1,"1929":1,"1934":1,"1938":1,"2169":3,"2228":1,"2294":1,"2315":1,"2564":1,"2657":1,"2658":1}}],["let",{"2":{"70":1,"110":1,"194":1,"228":1,"245":1,"331":2,"335":1,"356":1,"414":2,"430":1,"448":1,"471":1,"510":1,"515":1,"572":1,"1300":1,"1302":2,"1303":1,"1332":1,"1335":2,"1344":1,"1352":1,"1383":1,"1630":1,"1675":1,"1853":1,"2114":1,"2134":1,"2162":1,"2240":1,"2242":1,"2263":1,"2264":1,"2293":1,"2421":1,"2454":1,"2458":1,"2490":1,"2726":1,"2730":1,"2748":1,"2750":1}}],["lets",{"2":{"70":27,"114":1,"137":1,"143":2,"270":2,"277":1,"372":1,"375":1,"430":1,"506":1,"1303":2,"1364":1,"1385":1,"1508":1,"2062":1,"2263":2,"2303":1,"2649":1,"2652":1,"2663":1,"2728":1}}],["leveraging",{"2":{"1943":1}}],["leveraged",{"2":{"2720":1}}],["leverages",{"2":{"317":1,"1221":1,"1222":1,"1223":1,"1437":1,"1461":1}}],["leverage",{"2":{"153":1,"630":1,"2130":1,"2542":1,"2567":1}}],["lever",{"2":{"1857":2}}],["leveling",{"0":{"174":1,"687":1,"688":1,"689":1,"690":1,"691":1,"692":1},"1":{"689":1,"690":1,"691":1,"692":1},"2":{"114":1,"174":1,"176":4,"191":1,"211":1,"236":5,"249":1,"277":1,"681":2,"687":3,"688":6,"689":8,"690":7,"691":5,"2683":3}}],["levels",{"2":{"112":1,"199":2,"453":1,"496":3,"502":2,"1456":1,"1457":3,"1476":1,"1480":1,"1482":1,"2130":1,"2295":1,"2360":1,"2677":2,"2749":1}}],["level",{"0":{"580":1,"1479":2,"1481":1,"2048":1},"1":{"1480":2,"1482":1},"2":{"4":1,"14":1,"28":1,"75":1,"90":4,"93":2,"125":3,"134":1,"160":2,"185":3,"191":2,"229":2,"243":2,"249":2,"262":1,"266":3,"277":3,"279":1,"355":1,"433":4,"453":1,"462":1,"496":1,"497":1,"498":1,"500":1,"502":2,"510":2,"511":1,"512":1,"517":1,"533":1,"534":2,"556":1,"567":1,"568":4,"576":1,"580":2,"592":2,"594":1,"609":1,"614":1,"630":1,"644":1,"653":1,"668":1,"696":6,"733":1,"759":1,"789":1,"823":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1147":1,"1225":1,"1226":1,"1230":1,"1332":1,"1347":1,"1456":2,"1457":2,"1459":1,"1464":2,"1469":1,"1470":1,"1477":1,"1478":1,"1479":1,"1480":2,"1481":1,"1482":1,"1499":1,"1530":1,"1548":1,"1557":1,"1559":1,"1560":3,"1581":1,"1716":3,"1717":1,"1722":1,"1727":2,"1729":1,"1733":1,"1776":1,"1778":1,"1779":1,"1780":1,"1783":1,"1785":1,"1817":1,"1822":3,"1826":1,"1874":2,"1891":2,"1900":1,"1952":1,"1957":1,"2021":1,"2023":1,"2024":1,"2025":1,"2028":1,"2030":1,"2035":1,"2130":2,"2141":1,"2192":1,"2194":1,"2243":1,"2245":1,"2247":1,"2249":1,"2299":2,"2300":1,"2348":1,"2355":1,"2360":2,"2369":2,"2403":1,"2523":2,"2524":1,"2526":1,"2546":1,"2564":1,"2566":2,"2567":2,"2573":1,"2577":1,"2629":1,"2671":1,"2675":1,"2677":1,"2688":1,"2694":1,"2695":1,"2719":1,"2720":1,"2741":2,"2742":1,"2746":1,"2747":1,"2749":1}}],["levinson",{"2":{"45":1}}],["ledarray",{"0":{"1232":1},"1":{"1233":1},"2":{"1233":1}}],["ledmatrix",{"2":{"65":1}}],["led",{"0":{"84":1,"147":1,"185":1,"233":1,"669":1,"671":1,"734":1,"736":1,"749":1,"751":1,"754":1,"760":1,"762":1,"776":1,"778":1,"782":1,"790":1,"792":1,"808":1,"810":1,"814":1,"824":1,"826":1,"857":1,"859":1,"875":1,"877":1,"881":1,"891":1,"893":1,"909":1,"911":1,"915":1,"925":1,"927":1,"943":1,"945":1,"949":1,"959":1,"961":1,"977":1,"979":1,"983":1,"993":1,"995":1,"1027":1,"1029":1,"1061":1,"1063":1,"1095":1,"1097":1,"1148":1,"1150":1,"1166":1,"1168":1,"1172":1,"1232":1,"1714":1,"1716":1,"1717":1,"1718":1,"1719":1,"1720":1,"1721":1,"1723":1,"1728":1,"1729":1,"1735":1,"1736":1,"1737":1,"1738":1,"1739":1,"1740":1,"1741":1,"1743":1,"1745":1,"1747":1,"1749":1,"1751":1,"1752":1,"1753":1,"1754":1,"1755":1,"1758":1,"1759":1,"1760":1,"1761":1,"1763":1,"1764":1,"1765":1,"1766":1,"1767":1,"1769":1,"1771":1,"1773":1,"1774":1,"1776":1,"1778":1,"1780":3,"1783":3,"2025":2,"2028":2,"2167":1,"2369":1,"2646":1,"2688":1},"1":{"672":1,"737":1,"750":1,"752":1,"763":1,"777":1,"779":1,"783":1,"793":1,"809":1,"811":1,"815":1,"827":1,"860":1,"876":1,"878":1,"882":1,"894":1,"910":1,"912":1,"916":1,"928":1,"944":1,"946":1,"950":1,"962":1,"978":1,"980":1,"984":1,"996":1,"1030":1,"1064":1,"1098":1,"1151":1,"1167":1,"1169":1,"1173":1,"1233":1,"1715":1,"1716":1,"1717":2,"1718":2,"1719":1,"1720":1,"1721":1,"1722":2,"1724":1,"1725":1,"1726":1,"1727":1,"1728":1,"1729":1,"1730":1,"1731":1,"1732":1,"1733":1,"1734":1,"1735":1,"1736":1,"1737":1,"1738":1,"1739":1,"1740":1,"1741":1,"1742":2,"1743":1,"1744":2,"1745":1,"1746":2,"1747":1,"1748":2,"1749":1,"1750":2,"1751":1,"1752":1,"1753":1,"1754":1,"1755":1,"1756":2,"1757":1,"1758":1,"1759":1,"1760":1,"1761":1,"1762":2,"1763":1,"1764":1,"1765":1,"1766":1,"1767":1,"1768":2,"1769":1,"1770":2,"1771":1,"1772":2,"1773":1,"1774":1,"1775":2,"1776":1,"1777":2,"1778":1,"1779":2,"1780":1,"1781":1,"1782":1,"1783":1,"1784":1,"1785":1},"2":{"32":2,"50":2,"65":1,"70":2,"84":1,"92":3,"93":10,"94":6,"111":1,"113":1,"114":13,"133":1,"134":9,"149":5,"160":2,"176":8,"183":14,"185":5,"191":27,"199":5,"211":3,"214":1,"221":3,"222":16,"233":1,"236":27,"249":33,"266":10,"277":11,"292":2,"502":1,"506":2,"511":1,"575":1,"576":2,"644":2,"646":1,"647":1,"648":1,"651":1,"664":1,"665":1,"669":4,"671":1,"672":4,"673":1,"674":1,"675":1,"676":1,"679":1,"729":1,"730":2,"734":6,"736":1,"737":4,"738":1,"741":1,"742":1,"745":1,"746":1,"749":3,"750":1,"751":3,"752":2,"753":1,"754":2,"755":1,"756":2,"760":6,"762":1,"763":5,"764":1,"768":1,"769":1,"772":1,"773":1,"776":3,"777":1,"778":3,"779":2,"780":1,"782":2,"784":1,"785":2,"790":6,"792":1,"793":5,"794":1,"798":1,"800":1,"801":1,"804":1,"805":1,"808":3,"809":1,"810":3,"811":2,"812":1,"814":2,"816":1,"817":2,"824":6,"826":1,"827":5,"828":1,"832":1,"833":1,"836":1,"837":1,"840":1,"841":1,"842":1,"843":2,"844":1,"846":1,"848":1,"849":2,"857":6,"859":1,"860":5,"861":1,"865":1,"867":1,"868":1,"871":1,"872":1,"875":3,"876":1,"877":3,"878":2,"879":1,"881":2,"883":1,"884":2,"891":6,"893":1,"894":5,"895":1,"899":1,"901":1,"902":1,"905":1,"906":1,"909":3,"910":1,"911":3,"912":2,"913":1,"915":2,"917":1,"918":2,"925":6,"927":1,"928":5,"929":1,"933":1,"935":1,"936":1,"939":1,"940":1,"943":3,"944":1,"945":3,"946":2,"947":1,"949":2,"951":1,"952":2,"959":6,"961":1,"962":5,"963":1,"967":1,"969":1,"970":1,"973":1,"974":1,"977":3,"978":1,"979":3,"980":2,"981":1,"983":2,"985":1,"986":2,"993":6,"995":1,"996":5,"997":1,"1001":1,"1003":1,"1004":1,"1007":1,"1008":1,"1011":1,"1012":1,"1013":1,"1014":2,"1015":1,"1017":1,"1019":1,"1020":2,"1027":6,"1029":1,"1030":5,"1031":1,"1035":1,"1037":1,"1038":1,"1041":1,"1042":1,"1045":1,"1046":1,"1047":1,"1048":2,"1049":1,"1051":1,"1053":1,"1054":2,"1061":6,"1063":1,"1064":5,"1065":1,"1069":1,"1071":1,"1072":1,"1075":1,"1076":1,"1079":1,"1080":1,"1081":1,"1082":2,"1083":1,"1085":1,"1087":1,"1088":2,"1095":6,"1097":1,"1098":5,"1099":1,"1100":1,"1103":1,"1105":1,"1106":1,"1109":1,"1110":1,"1113":1,"1114":1,"1115":1,"1116":2,"1117":1,"1119":1,"1143":1,"1144":2,"1148":6,"1150":1,"1151":5,"1152":1,"1156":1,"1158":1,"1159":1,"1162":1,"1163":1,"1166":3,"1167":1,"1168":3,"1169":2,"1170":1,"1172":2,"1212":2,"1214":2,"1215":1,"1216":1,"1217":3,"1232":1,"1233":3,"1234":2,"1298":1,"1316":1,"1320":1,"1457":1,"1459":3,"1507":1,"1530":2,"1556":1,"1570":3,"1714":9,"1715":12,"1716":10,"1717":12,"1718":7,"1719":6,"1720":3,"1722":9,"1723":2,"1724":4,"1725":26,"1726":10,"1727":12,"1728":64,"1729":31,"1730":21,"1733":12,"1735":1,"1736":1,"1737":1,"1738":1,"1739":1,"1740":1,"1741":1,"1742":1,"1743":1,"1744":3,"1774":1,"1775":1,"1781":4,"1784":4,"1813":7,"1870":1,"1944":3,"1945":2,"1946":25,"1947":12,"1949":1,"1950":1,"1952":10,"1954":5,"1955":1,"1957":4,"1958":17,"1959":11,"1970":1,"1971":2,"2026":4,"2029":4,"2031":2,"2032":2,"2038":4,"2039":2,"2042":4,"2043":4,"2048":1,"2051":9,"2059":6,"2060":3,"2061":2,"2063":1,"2129":3,"2137":7,"2167":10,"2231":2,"2238":2,"2263":3,"2276":1,"2288":1,"2300":2,"2301":3,"2369":13,"2491":1,"2518":2,"2528":1,"2530":5,"2539":2,"2566":3,"2674":1,"2675":2,"2685":6,"2688":12,"2693":3,"2694":3,"2695":9,"2700":1,"2724":1}}],["leds",{"0":{"1232":1,"2059":1},"1":{"1233":1},"2":{"25":1,"45":1,"50":1,"114":1,"149":1,"201":2,"211":1,"229":1,"249":2,"506":4,"586":1,"587":1,"642":2,"644":1,"647":1,"649":1,"664":2,"669":1,"675":1,"676":1,"677":1,"729":2,"734":2,"741":1,"742":1,"743":1,"745":1,"746":1,"747":1,"749":1,"750":1,"751":1,"752":1,"755":2,"760":2,"768":1,"769":1,"770":1,"772":1,"773":1,"774":1,"776":1,"777":1,"778":1,"779":1,"784":2,"790":2,"800":1,"801":1,"802":1,"804":1,"805":1,"806":1,"808":1,"809":1,"810":1,"811":1,"816":2,"818":1,"824":2,"832":1,"833":1,"834":1,"836":1,"837":1,"838":1,"840":1,"841":1,"842":1,"843":1,"848":2,"850":1,"857":2,"867":1,"868":1,"869":1,"871":1,"872":1,"873":1,"875":1,"876":1,"877":1,"878":1,"883":2,"885":1,"891":2,"901":1,"902":1,"903":1,"905":1,"906":1,"907":1,"909":1,"910":1,"911":1,"912":1,"917":2,"919":1,"925":2,"935":1,"936":1,"937":1,"939":1,"940":1,"941":1,"943":1,"944":1,"945":1,"946":1,"951":2,"953":1,"959":2,"969":1,"970":1,"971":1,"973":1,"974":1,"975":1,"977":1,"978":1,"979":1,"980":1,"985":2,"987":1,"993":2,"1003":1,"1004":1,"1005":1,"1007":1,"1008":1,"1009":1,"1011":1,"1012":1,"1013":1,"1014":1,"1019":2,"1027":2,"1037":1,"1038":1,"1039":1,"1041":1,"1042":1,"1043":1,"1045":1,"1046":1,"1047":1,"1048":1,"1053":2,"1061":2,"1071":1,"1072":1,"1073":1,"1075":1,"1076":1,"1077":1,"1079":1,"1080":1,"1081":1,"1082":1,"1087":2,"1089":1,"1095":2,"1105":1,"1106":1,"1107":1,"1109":1,"1110":1,"1111":1,"1113":1,"1114":1,"1115":1,"1116":1,"1143":2,"1148":2,"1158":1,"1159":1,"1160":1,"1162":1,"1163":1,"1164":1,"1166":1,"1167":1,"1168":1,"1169":1,"1212":4,"1214":1,"1215":1,"1216":1,"1217":2,"1220":1,"1233":1,"1294":1,"1314":2,"1378":1,"1454":3,"1457":1,"1458":1,"1459":2,"1471":2,"1554":1,"1714":2,"1716":1,"1720":1,"1721":1,"1722":3,"1724":1,"1725":2,"1728":1,"1729":2,"1730":4,"1745":1,"1776":1,"1778":1,"1780":1,"1783":1,"1945":1,"1946":2,"1949":3,"1950":1,"1952":2,"1954":4,"1972":1,"2021":1,"2023":1,"2025":1,"2028":1,"2031":6,"2032":10,"2038":5,"2041":1,"2042":6,"2048":1,"2051":7,"2053":6,"2054":14,"2059":2,"2060":3,"2061":1,"2131":2,"2160":1,"2161":1,"2167":1,"2280":1,"2289":3,"2290":2,"2301":1,"2625":1,"2665":2,"2677":2,"2685":1,"2688":5,"2694":3,"2695":5,"2700":1,"2744":2}}],["lessthan",{"2":{"2299":1}}],["less",{"2":{"24":1,"133":1,"134":1,"263":1,"455":1,"1287":1,"1326":1,"1329":1,"1403":1,"1404":1,"1411":1,"1435":1,"1516":1,"1521":2,"1821":1,"1863":1,"2147":1,"2161":2,"2262":1,"2421":1,"2534":1,"2564":1,"2612":1,"2671":1,"2729":1}}],["lone",{"2":{"1677":1,"2738":1}}],["longan",{"2":{"495":1}}],["long",{"0":{"1253":1},"2":{"131":1,"140":1,"154":1,"164":1,"243":1,"331":1,"436":1,"453":1,"455":1,"481":3,"505":4,"616":1,"621":1,"656":1,"660":1,"1215":1,"1287":1,"1290":1,"1406":1,"1410":1,"1412":1,"1414":1,"1416":1,"1440":1,"1451":1,"1464":1,"1511":1,"1515":4,"1562":1,"1573":1,"1578":17,"1630":1,"1683":1,"1885":1,"1921":1,"2038":1,"2040":6,"2063":1,"2128":1,"2134":1,"2169":1,"2171":1,"2182":1,"2276":1,"2305":1,"2473":1,"2502":1,"2546":1,"2577":1,"2614":1,"2716":1}}],["longer",{"2":{"48":1,"50":1,"98":1,"124":1,"130":1,"141":1,"194":1,"196":1,"201":1,"213":1,"218":1,"224":1,"233":1,"240":1,"262":2,"265":1,"268":1,"273":2,"276":1,"513":1,"522":1,"556":1,"559":1,"588":1,"627":1,"1219":1,"1243":1,"1376":1,"1409":1,"1412":1,"1416":1,"1432":1,"1441":1,"1670":1,"1677":1,"1807":1,"1860":1,"2161":1,"2162":1,"2169":1,"2171":1,"2272":2,"2303":1,"2462":1,"2565":1,"2566":1,"2577":2,"2702":1,"2728":1,"2729":1,"2734":2,"2738":1}}],["loud",{"2":{"1401":1,"1406":1}}],["louder",{"2":{"277":1}}],["lo",{"2":{"1361":4,"1722":1,"1934":1}}],["losh",{"2":{"2102":1}}],["loss",{"2":{"1331":1,"2175":1,"2263":1}}],["loses",{"2":{"1335":1,"2697":1}}],["lose",{"2":{"660":1,"1495":1,"2476":1}}],["lost",{"2":{"176":1,"681":1,"1553":1,"2633":1}}],["love",{"0":{"2472":1},"2":{"561":1,"1264":1,"1361":2,"2569":1}}],["lorem",{"2":{"301":1}}],["loki65",{"2":{"211":1}}],["lopt",{"2":{"176":1,"1299":1,"1361":1,"2355":1,"2373":1,"2374":1,"2390":1,"2410":1}}],["loadable",{"2":{"2575":1}}],["loads",{"2":{"1219":1,"2577":2}}],["loaded",{"2":{"626":1,"2353":1,"2501":1,"2574":3,"2577":2}}],["loader",{"0":{"2539":1},"2":{"292":3,"2235":3,"2238":1,"2353":3,"2539":1,"2541":1}}],["loading",{"2":{"160":1,"1287":1,"2480":1,"2577":2}}],["load",{"0":{"2452":1},"2":{"149":1,"450":1,"541":1,"592":1,"659":1,"1287":1,"2327":1,"2329":1,"2333":1,"2347":1,"2356":1,"2425":1,"2427":1,"2469":1,"2572":1,"2574":1,"2577":11}}],["loose",{"2":{"2279":2,"2446":1}}],["looking",{"0":{"2670":1},"2":{"228":1,"367":1,"430":2,"483":1,"602":1,"661":2,"1304":1,"1921":1,"2263":1,"2272":1,"2282":1,"2311":1,"2491":1,"2565":1}}],["look",{"2":{"194":1,"341":1,"414":1,"470":1,"559":1,"597":1,"627":1,"628":1,"1226":1,"1230":1,"1242":1,"1271":1,"1325":1,"1332":2,"1383":1,"1405":1,"1440":1,"1469":1,"1470":1,"1675":1,"2150":1,"2182":1,"2261":1,"2273":1,"2342":1,"2403":1,"2404":1,"2417":1,"2422":1,"2519":1,"2571":1,"2578":1,"2728":1,"2743":1,"2746":1,"2748":2,"2749":1,"2752":1,"2753":1}}],["lookup",{"2":{"191":1,"404":1,"1725":1,"1946":1,"2076":1,"2541":1,"2711":1}}],["looks",{"2":{"125":1,"185":1,"1410":1,"1423":1,"2255":1,"2423":1,"2425":1,"2745":1,"2747":1,"2748":1}}],["looping",{"2":{"2272":1,"2744":1}}],["loopgain",{"2":{"1576":1,"1577":1}}],["loops",{"2":{"160":1,"1894":1}}],["loop",{"0":{"2744":1},"1":{"2745":1,"2746":1,"2747":1,"2748":1,"2749":1},"2":{"65":1,"92":1,"113":1,"114":1,"149":1,"176":2,"277":1,"471":1,"588":1,"1398":2,"1464":1,"1815":2,"1817":1,"1951":1,"2139":2,"2231":1,"2234":2,"2238":1,"2272":1,"2577":1,"2743":1,"2744":2,"2748":1}}],["locate",{"2":{"2436":1,"2450":1,"2452":1}}],["locates",{"2":{"2403":1}}],["located",{"2":{"515":1,"626":1,"691":1,"1272":1,"1415":1,"1440":1,"1496":1,"1814":1,"2263":1,"2275":1,"2296":1,"2393":1,"2450":1,"2452":1,"2463":1,"2587":1,"2588":1,"2589":1,"2594":1,"2712":1}}],["locations",{"2":{"132":1,"149":1,"176":1,"204":1,"266":1,"335":1,"540":1,"669":1,"1901":1,"2070":1,"2261":1,"2614":1,"2682":1,"2696":1,"2747":2}}],["location",{"2":{"114":1,"133":1,"134":1,"149":1,"199":1,"234":1,"249":2,"365":1,"366":1,"450":1,"610":1,"684":1,"685":1,"691":1,"1405":1,"1814":1,"1901":1,"1949":1,"2275":1,"2303":1,"2422":1,"2435":1,"2441":1,"2497":1,"2501":1,"2513":2,"2576":2,"2577":3,"2598":5,"2615":2,"2746":1,"2757":1}}],["localhost",{"2":{"558":1}}],["locally",{"0":{"2442":1,"2444":1},"2":{"403":1,"556":1,"560":1,"1376":1,"2277":1,"2442":2,"2444":1,"2445":1}}],["local",{"2":{"402":1,"430":1,"455":1,"457":1,"460":1,"554":1,"555":1,"598":1,"616":1,"1820":1,"1821":1,"1901":1,"2142":1,"2252":1,"2255":2,"2278":1,"2398":1,"2411":1,"2428":1,"2431":1,"2442":1,"2443":1,"2444":1,"2452":1,"2468":2,"2477":2,"2490":1,"2566":1}}],["locale",{"2":{"249":1}}],["lockout",{"2":{"1889":1}}],["lockkeys",{"0":{"1585":1},"2":{"1585":1}}],["lockups",{"2":{"263":1}}],["locking",{"0":{"2067":1},"2":{"176":1,"188":1,"191":2,"199":2,"236":1,"266":32,"502":3,"1276":2,"2355":6,"2389":6,"2502":1,"2674":2,"2703":2}}],["locked",{"2":{"160":1,"266":1,"317":2,"340":3,"346":1,"2066":1,"2067":1,"2069":2,"2070":1,"2071":2,"2129":1,"2491":7,"2696":1}}],["lock",{"0":{"1276":1,"1630":1,"2164":1,"2366":1,"2389":1},"1":{"1631":1,"1632":1,"1633":1},"2":{"73":1,"149":2,"176":1,"188":2,"191":2,"199":2,"222":3,"231":2,"505":1,"506":1,"530":1,"1276":2,"1337":1,"1368":1,"1457":2,"1459":4,"1499":5,"1530":2,"1585":3,"1630":4,"1631":3,"1632":1,"1633":4,"1714":4,"1715":6,"1717":3,"1718":6,"1719":2,"1733":1,"1813":3,"1816":1,"1957":1,"1958":2,"1959":5,"2041":1,"2042":2,"2043":1,"2069":2,"2071":2,"2129":2,"2137":3,"2140":1,"2164":1,"2182":1,"2263":2,"2355":12,"2366":2,"2370":16,"2389":12,"2396":16,"2490":1,"2491":1,"2615":3,"2616":1,"2674":1,"2677":2,"2685":6,"2703":2,"2744":3,"2749":1}}],["lowr",{"2":{"2173":1}}],["lowest",{"2":{"496":1,"1329":1,"1338":1,"1339":1,"1406":1,"1722":1,"2172":1,"2355":1,"2395":1,"2408":1}}],["lower",{"0":{"2182":1},"2":{"198":1,"236":1,"639":1,"641":1,"659":3,"660":1,"701":2,"855":1,"889":1,"923":1,"957":1,"991":1,"1025":1,"1059":1,"1093":1,"1136":1,"1225":1,"1332":1,"1335":2,"1338":1,"1340":1,"1343":1,"1404":1,"1434":1,"1457":1,"1573":1,"1683":1,"1803":2,"1804":1,"1807":1,"1857":2,"1863":2,"1864":2,"2153":3,"2172":2,"2173":3,"2174":2,"2175":6,"2182":2,"2294":1,"2358":1,"2401":1,"2403":4,"2406":1,"2604":7,"2606":2,"2728":1}}],["lowercase",{"2":{"152":1,"221":1,"1254":1,"1351":1,"1412":1,"2182":3,"2302":1,"2347":1,"2564":2,"2728":1}}],["low",{"0":{"580":1,"2048":1},"2":{"49":1,"134":1,"160":1,"243":2,"502":2,"509":1,"510":5,"511":1,"580":2,"659":3,"684":1,"696":3,"1224":2,"1225":1,"1242":1,"1329":1,"1399":1,"1457":1,"1458":1,"1491":1,"1570":5,"1573":3,"1576":1,"1577":1,"1637":3,"1715":1,"1717":2,"1803":2,"1804":1,"1872":2,"1883":1,"2037":1,"2124":2,"2125":1,"2343":1,"2344":1,"2345":1,"2346":1,"2348":2,"2401":1,"2406":1,"2519":1,"2523":1,"2524":1,"2526":1,"2564":1,"2629":1,"2655":1,"2664":1,"2689":1,"2728":2}}],["login",{"2":{"2508":1}}],["logically",{"2":{"2060":1}}],["logical",{"2":{"134":1,"236":1,"556":1,"688":1,"689":2,"690":3,"691":2,"1216":1,"1671":2,"2059":1,"2311":2,"2676":1,"2677":1,"2683":2,"2685":1,"2689":1}}],["logic",{"2":{"16":1,"75":1,"94":2,"113":1,"114":2,"133":2,"134":5,"149":1,"160":3,"191":1,"198":1,"199":1,"211":1,"222":2,"249":2,"266":1,"277":6,"534":2,"1225":1,"1344":1,"1452":1,"1497":1,"1728":1,"1830":1,"1949":2,"2114":2,"2162":1,"2491":1,"2564":1}}],["logfile",{"2":{"2262":4}}],["logged",{"2":{"434":1}}],["logger",{"2":{"430":1,"433":1}}],["logging",{"0":{"433":1},"2":{"249":1,"430":1,"470":1,"1252":1,"1253":1}}],["log",{"0":{"433":1},"2":{"114":1,"199":2,"211":1,"349":1,"430":3,"432":2,"433":12,"434":2,"437":1,"441":1,"466":2,"470":2,"529":1,"530":2,"554":1,"2281":1,"2439":1}}],["logo",{"0":{"1814":1,"2138":1},"2":{"31":2,"1814":7,"1816":2,"2138":5,"2140":2}}],["logs",{"2":{"17":1,"2474":1,"2556":1}}],["lots",{"2":{"501":1,"2324":1}}],["lotus58",{"2":{"211":1,"266":1}}],["lot",{"2":{"6":1,"10":2,"114":1,"153":1,"172":1,"175":1,"187":1,"198":2,"201":1,"213":1,"224":1,"233":1,"238":1,"341":1,"435":1,"466":1,"552":1,"560":1,"567":1,"586":1,"606":1,"1258":1,"1332":2,"1336":1,"1437":1,"1515":1,"1527":1,"1528":1,"2114":1,"2161":1,"2272":1,"2274":1,"2280":1,"2284":1,"2326":1,"2411":1,"2417":2,"2424":1,"2425":1,"2469":1,"2555":1,"2560":1,"2566":1,"2567":1,"2601":1,"2707":1,"2708":1,"2713":1,"2725":1,"2743":1}}],["laziness",{"2":{"2564":1}}],["lazydesigners",{"2":{"102":3}}],["lapo",{"2":{"2103":1,"2104":1,"2106":1,"2382":1}}],["laptop",{"2":{"1334":1}}],["lag",{"2":{"1219":1,"1299":1,"2373":1,"2374":1,"2410":1,"2745":1}}],["lags",{"2":{"659":1}}],["lacking",{"2":{"2566":1}}],["lacks",{"2":{"2061":1}}],["lack",{"2":{"1125":1,"1385":1,"1729":1,"1952":1,"2132":1,"2133":1,"2719":1}}],["laid",{"2":{"561":1,"606":1}}],["lambdas",{"0":{"472":1},"2":{"472":1}}],["larr",{"2":{"286":1,"2295":6}}],["largely",{"2":{"244":1,"495":1,"552":1,"2243":1,"2263":2}}],["largest",{"2":{"176":1,"2702":1}}],["larger",{"2":{"153":1,"174":1,"175":1,"176":1,"211":1,"264":1,"274":1,"341":1,"661":1,"689":2,"690":2,"1396":1,"1515":2,"1817":1,"2107":1,"2268":1,"2308":1,"2576":1,"2666":1,"2746":1}}],["large",{"2":{"134":1,"153":1,"163":1,"174":1,"175":1,"176":1,"233":1,"341":1,"352":1,"515":1,"602":1,"606":1,"660":1,"1287":1,"1304":1,"1515":1,"1804":1,"1806":1,"2226":1,"2417":1,"2506":1,"2514":1,"2567":1,"2576":1,"2577":1,"2607":1,"2709":1,"2720":1}}],["la+",{"2":{"211":1}}],["labor",{"2":{"2569":1}}],["labk",{"2":{"2378":1,"2399":1}}],["labeled",{"2":{"703":1,"1177":1,"1198":1,"2450":1}}],["label",{"2":{"341":4,"2615":18,"2616":1,"2686":2}}],["labels",{"2":{"191":1,"2710":1}}],["lab",{"2":{"211":3}}],["latches",{"2":{"1215":1}}],["latter",{"2":{"357":1,"1273":1,"1521":1,"1680":1,"1858":1,"1960":1,"2495":1,"2577":3,"2735":1}}],["lattice60",{"2":{"159":2}}],["latam",{"2":{"249":1}}],["latvian",{"2":{"176":1,"1355":1,"2712":3}}],["latin",{"2":{"1355":2,"2711":1,"2712":6}}],["latinpad",{"2":{"143":2}}],["latinpadble",{"2":{"143":2,"211":1}}],["latin6rgb",{"2":{"143":2}}],["latin64ble",{"2":{"143":2}}],["latin60rgb",{"2":{"143":2}}],["latin47ble",{"2":{"143":2}}],["latincompass",{"2":{"143":7,"149":2}}],["latin17rgb",{"2":{"143":2}}],["late",{"2":{"597":1}}],["late9",{"2":{"241":2,"249":1}}],["latency",{"2":{"94":1,"199":1,"2226":2}}],["later",{"2":{"23":1,"157":1,"352":1,"366":1,"448":1,"468":1,"541":1,"556":1,"656":1,"1303":1,"1380":1,"1830":1,"2042":2,"2161":1,"2276":1,"2309":1,"2343":1,"2405":1,"2468":1,"2472":1,"2570":2}}],["latest",{"2":{"10":1,"24":1,"176":1,"191":1,"211":1,"254":1,"330":1,"2183":1,"2431":1,"2437":1,"2459":1}}],["lanes",{"2":{"2118":1}}],["laneware",{"2":{"241":5,"249":1}}],["landed",{"2":{"131":1}}],["languages",{"2":{"134":1,"1355":1,"2146":1,"2181":1,"2263":1,"2492":1,"2503":1,"2710":1}}],["language",{"0":{"5":1,"2076":1,"2710":1},"1":{"2711":1,"2712":1},"2":{"74":1,"401":1,"479":1,"1355":4,"1921":1,"2146":1,"2355":18,"2391":13,"2510":1,"2512":2,"2629":1,"2657":1,"2666":1,"2710":1,"2712":1}}],["lalt",{"2":{"120":1,"313":1,"530":2,"1269":1,"1299":2,"1300":1,"1302":2,"1335":1,"1354":1,"1357":1,"1361":1,"1375":4,"1403":1,"2106":2,"2169":2,"2170":2,"2355":1,"2367":1,"2370":2,"2373":1,"2374":1,"2390":1,"2396":2,"2405":1,"2407":1,"2410":2}}],["laser",{"2":{"118":1,"191":1,"241":2,"1856":1}}],["lastly",{"2":{"1332":1}}],["last",{"0":{"202":1,"2219":1},"1":{"2220":1},"2":{"23":1,"74":1,"103":1,"105":1,"167":1,"176":2,"184":1,"189":1,"198":1,"201":1,"202":2,"206":1,"211":2,"213":1,"222":1,"224":2,"238":1,"249":1,"275":1,"317":2,"340":1,"343":1,"344":1,"345":1,"350":4,"462":1,"529":1,"581":1,"587":1,"588":2,"689":2,"1344":1,"1360":2,"1412":1,"1430":1,"1438":2,"1442":1,"1451":1,"1582":1,"1673":1,"1781":1,"1784":1,"1889":1,"1929":3,"1931":2,"1932":2,"1933":3,"1934":1,"1936":2,"1937":2,"1938":1,"1939":1,"1940":1,"1941":1,"1942":5,"1943":6,"2026":1,"2029":1,"2044":1,"2128":2,"2130":3,"2147":1,"2149":1,"2161":1,"2162":2,"2169":1,"2183":1,"2219":1,"2277":1,"2349":1,"2381":2,"2415":1,"2422":1,"2439":1,"2481":1,"2491":1,"2508":1,"2530":1,"2574":1,"2576":1,"2577":25,"2591":1,"2747":1,"2748":1}}],["launchpad",{"2":{"143":2,"199":2,"231":1,"1791":1,"2355":2,"2393":2}}],["launch",{"0":{"2498":1},"2":{"114":2,"484":1,"2150":1,"2226":2,"2355":5,"2393":5,"2498":1,"2513":2}}],["layr",{"2":{"2171":3}}],["lays",{"2":{"278":1}}],["layout=ortho",{"2":{"1349":2}}],["layout>",{"2":{"1348":1,"1349":4}}],["layouts+users",{"2":{"191":1}}],["layouts",{"0":{"35":1,"1346":1,"1349":1,"1350":1,"2686":1},"1":{"36":1,"1347":1,"1348":1,"1349":1,"1350":1,"1351":2,"1352":2},"2":{"70":3,"73":1,"74":1,"99":1,"111":1,"114":1,"169":1,"176":1,"191":3,"199":4,"201":3,"211":23,"213":1,"222":3,"236":2,"249":3,"256":2,"370":2,"378":1,"513":2,"538":2,"1268":2,"1335":1,"1339":1,"1346":8,"1347":3,"1349":2,"1378":1,"1524":1,"1957":1,"2302":5,"2441":1,"2445":2,"2553":1,"2559":1,"2566":3,"2615":2,"2617":1,"2657":1,"2686":5,"2710":1,"2711":2,"2746":1}}],["layout",{"0":{"17":1,"89":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"538":1,"546":1,"1347":1,"1355":1,"2122":1,"2424":1,"2559":1,"2746":1},"1":{"257":1,"258":1,"259":1,"260":1},"2":{"17":1,"36":1,"48":1,"70":2,"76":1,"89":2,"94":1,"111":4,"114":2,"120":2,"149":1,"160":2,"191":4,"199":4,"201":3,"211":248,"213":1,"222":11,"236":9,"238":1,"249":4,"255":3,"256":4,"257":2,"258":2,"259":4,"260":1,"266":10,"277":2,"313":4,"370":1,"388":1,"454":1,"529":2,"530":6,"538":3,"540":4,"623":6,"624":1,"1335":1,"1338":2,"1339":1,"1346":10,"1347":6,"1349":4,"1352":6,"1354":2,"1355":4,"1362":1,"1378":2,"1405":5,"1496":2,"1499":1,"1524":1,"1563":1,"1725":2,"1792":1,"1825":1,"1934":1,"1940":1,"1943":1,"1946":2,"2076":2,"2106":2,"2122":3,"2126":1,"2145":2,"2146":1,"2150":2,"2170":1,"2182":1,"2183":1,"2259":2,"2267":1,"2268":2,"2277":2,"2302":17,"2317":2,"2318":2,"2319":6,"2320":1,"2400":1,"2402":2,"2407":4,"2408":1,"2423":1,"2427":1,"2436":2,"2440":1,"2441":1,"2445":4,"2513":1,"2541":1,"2553":2,"2559":8,"2566":15,"2614":6,"2615":11,"2616":2,"2619":1,"2620":2,"2624":1,"2630":1,"2632":1,"2643":1,"2657":1,"2658":1,"2686":18,"2688":1,"2695":1,"2710":3,"2711":3,"2712":3,"2746":5,"2747":3}}],["layering",{"2":{"2408":1}}],["layer>",{"2":{"1887":3}}],["layer9",{"2":{"1530":1}}],["layer8",{"2":{"1530":1}}],["layer7",{"2":{"1530":1,"1897":2}}],["layer6",{"2":{"1530":1}}],["layer5",{"2":{"1530":1,"1897":2}}],["layer4",{"2":{"1530":1}}],["layer3",{"2":{"1530":1,"2042":2}}],["layer2",{"2":{"1530":1,"2042":2}}],["layer1",{"2":{"1530":1,"2042":2}}],["layer0",{"2":{"1530":3}}],["layers\`",{"2":{"1344":1}}],["layers",{"0":{"166":1,"532":1,"1305":1,"1334":1,"1335":1,"1337":1,"1344":1,"1525":1,"1660":2,"1661":2,"1662":2,"1897":1,"2041":1,"2042":1,"2043":1,"2172":1,"2401":1,"2406":1,"2602":1,"2705":1},"1":{"1335":1,"1336":2,"1337":1,"1338":2,"1339":2,"1340":2,"1341":1,"1342":1,"1343":1,"1344":1,"1345":1,"2042":1,"2043":1,"2044":1,"2045":1,"2046":1,"2173":1,"2174":1,"2175":1,"2402":1,"2403":1,"2407":1,"2408":1,"2603":1,"2604":1,"2605":1,"2606":1},"2":{"112":4,"114":1,"120":1,"160":1,"166":4,"176":1,"190":1,"191":1,"198":1,"199":3,"211":1,"266":1,"305":1,"313":1,"388":1,"503":1,"506":6,"529":1,"530":2,"532":1,"548":1,"557":2,"1243":1,"1275":1,"1305":1,"1332":1,"1334":1,"1335":12,"1336":2,"1337":1,"1338":6,"1339":3,"1340":5,"1341":12,"1342":1,"1343":1,"1344":3,"1345":1,"1354":1,"1355":1,"1399":1,"1446":1,"1524":3,"1525":2,"1527":1,"1559":1,"1582":1,"1633":1,"1659":1,"1660":2,"1665":6,"1668":1,"1670":2,"1813":1,"1885":1,"1889":1,"1897":2,"1936":1,"2041":3,"2042":21,"2043":1,"2044":9,"2045":3,"2046":3,"2047":1,"2137":1,"2146":1,"2170":1,"2171":1,"2172":1,"2174":1,"2175":2,"2367":1,"2401":6,"2402":2,"2403":5,"2405":1,"2406":5,"2423":1,"2424":2,"2490":2,"2603":1,"2605":2,"2606":1,"2694":2,"2705":5,"2723":1}}],["layer",{"0":{"3":1,"15":1,"246":1,"603":1,"1275":1,"1342":1,"1343":1,"1345":1,"1524":1,"1525":1,"1668":1,"1885":1,"1886":2,"1894":1,"1898":2,"1900":1,"2044":1,"2056":1,"2170":1,"2171":2,"2367":1,"2402":1,"2403":1,"2407":1,"2408":1,"2603":1,"2605":1,"2607":1,"2644":1},"1":{"1343":1,"1344":1,"1345":1,"1525":1,"1673":1,"1674":1,"1675":1,"1886":1,"1887":1,"1888":1,"1889":1,"1890":1,"1891":1,"1892":1,"1893":1,"1894":1,"1895":1,"1896":1,"1897":1,"1898":1,"1899":1,"1900":1,"1901":1,"2604":1,"2606":1},"2":{"31":1,"38":10,"49":2,"73":1,"93":1,"105":4,"114":2,"149":1,"160":1,"166":3,"176":2,"190":1,"191":5,"194":4,"198":1,"199":7,"211":4,"236":4,"246":2,"249":1,"266":2,"313":1,"503":1,"504":3,"505":2,"506":3,"511":2,"529":2,"532":2,"557":4,"587":1,"603":1,"626":1,"695":1,"697":1,"1275":4,"1331":1,"1332":29,"1334":1,"1335":28,"1336":4,"1337":2,"1338":10,"1339":2,"1340":13,"1341":87,"1342":2,"1343":5,"1344":30,"1345":6,"1379":1,"1383":13,"1386":1,"1399":3,"1403":1,"1446":9,"1511":3,"1518":4,"1519":5,"1524":3,"1525":31,"1527":6,"1530":28,"1549":8,"1553":1,"1555":1,"1559":1,"1582":5,"1655":1,"1668":14,"1670":2,"1685":1,"1720":1,"1724":1,"1733":1,"1813":4,"1816":1,"1880":9,"1882":6,"1885":17,"1886":15,"1887":8,"1889":6,"1890":2,"1892":2,"1894":31,"1895":1,"1897":12,"1898":30,"1899":3,"1900":4,"1901":2,"1917":1,"1936":2,"1937":1,"1939":7,"1945":1,"1957":1,"1958":13,"1959":4,"2041":1,"2042":18,"2043":14,"2044":24,"2056":4,"2129":3,"2137":4,"2140":1,"2145":1,"2150":3,"2154":1,"2156":1,"2161":9,"2170":4,"2171":26,"2172":4,"2173":8,"2174":13,"2175":22,"2228":4,"2367":20,"2379":2,"2398":1,"2400":2,"2401":2,"2402":18,"2403":5,"2404":1,"2405":5,"2406":4,"2407":3,"2408":6,"2414":2,"2423":2,"2490":6,"2491":14,"2523":1,"2546":2,"2565":1,"2566":4,"2603":4,"2604":8,"2605":10,"2606":7,"2607":8,"2644":1,"2686":2,"2687":1,"2694":2,"2697":2,"2703":1,"2705":3,"2728":2,"2734":2,"2735":6,"2736":5,"2737":1,"2757":7}}],["lter",{"2":{"1451":1}}],["lto",{"2":{"111":1,"112":2,"114":3,"134":5,"149":1,"160":1,"211":2,"249":1,"266":2,"513":2,"2513":1,"2674":1}}],["lt",{"0":{"15":1,"308":1,"309":1,"310":1,"1366":1,"1367":1,"1368":1,"1369":2,"1370":5,"2301":1,"2302":1},"2":{"4":3,"18":2,"55":1,"70":1,"132":2,"133":1,"134":1,"176":4,"195":1,"199":1,"201":1,"211":1,"249":2,"282":1,"341":1,"345":2,"347":3,"349":8,"370":1,"371":1,"400":1,"417":2,"433":1,"436":4,"462":1,"500":1,"505":1,"510":2,"511":3,"529":2,"534":2,"559":3,"613":1,"614":4,"621":1,"661":1,"669":1,"690":1,"696":1,"701":2,"734":1,"760":1,"790":1,"824":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1132":1,"1133":1,"1148":1,"1238":2,"1239":1,"1269":1,"1290":6,"1300":3,"1312":2,"1313":1,"1335":2,"1336":1,"1346":1,"1347":3,"1351":4,"1352":1,"1366":1,"1367":1,"1368":3,"1369":1,"1376":6,"1377":5,"1379":4,"1381":1,"1383":1,"1385":5,"1404":2,"1417":1,"1419":1,"1428":1,"1496":1,"1499":1,"1509":1,"1510":2,"1511":2,"1549":1,"1560":1,"1582":1,"1670":2,"1677":1,"1685":2,"1805":5,"1885":1,"1886":11,"1887":1,"2126":3,"2170":1,"2255":1,"2259":2,"2261":4,"2262":16,"2263":2,"2279":1,"2296":2,"2299":1,"2302":1,"2303":3,"2347":4,"2349":2,"2353":1,"2355":1,"2367":1,"2378":2,"2388":1,"2399":2,"2414":4,"2415":2,"2435":1,"2441":5,"2445":2,"2468":2,"2474":7,"2479":3,"2512":2,"2513":2,"2523":1,"2524":1,"2564":1,"2566":2,"2605":1,"2614":4,"2671":1,"2686":1,"2727":1,"2728":3,"2734":4,"2735":7,"2736":4,"2738":4}}],["liking",{"0":{"2424":1},"2":{"2032":1}}],["likewise",{"2":{"511":1,"2414":1,"2706":1}}],["likelihood",{"2":{"263":1,"341":1,"689":1,"2564":2}}],["likely",{"2":{"118":1,"132":1,"156":1,"182":1,"213":2,"341":1,"656":1,"689":1,"1287":1,"1533":1,"1912":1,"2038":1,"2244":1,"2351":1,"2431":1,"2450":1,"2464":1,"2524":1,"2533":1,"2549":1,"2564":1,"2573":1,"2581":1,"2704":1}}],["like",{"0":{"1277":1},"2":{"100":1,"114":1,"120":1,"125":3,"152":3,"156":1,"169":2,"175":1,"176":1,"185":3,"189":1,"194":1,"201":1,"230":1,"244":1,"247":1,"263":1,"279":1,"320":1,"367":1,"446":1,"454":1,"482":1,"485":1,"509":2,"510":1,"515":1,"519":1,"551":1,"554":2,"556":2,"588":1,"597":1,"609":1,"628":1,"692":1,"1129":1,"1226":1,"1230":1,"1234":4,"1254":2,"1265":1,"1276":1,"1280":1,"1294":1,"1298":1,"1300":3,"1302":1,"1325":2,"1331":1,"1332":1,"1334":1,"1335":3,"1336":1,"1354":1,"1355":2,"1359":1,"1361":2,"1363":1,"1369":1,"1376":1,"1377":2,"1379":1,"1384":1,"1394":1,"1398":4,"1403":1,"1404":1,"1406":2,"1423":2,"1432":1,"1440":1,"1441":2,"1451":1,"1459":1,"1469":1,"1470":1,"1496":1,"1497":1,"1499":2,"1500":1,"1501":1,"1503":1,"1511":1,"1520":1,"1530":1,"1558":1,"1560":1,"1562":1,"1655":1,"1668":1,"1676":2,"1677":2,"1683":2,"1787":2,"1791":1,"1806":1,"1807":2,"1853":1,"1880":1,"1918":1,"1929":2,"1932":1,"1943":1,"1948":1,"1959":2,"2034":1,"2045":1,"2046":1,"2062":1,"2064":2,"2126":1,"2129":2,"2152":1,"2156":1,"2161":5,"2165":1,"2169":1,"2171":1,"2181":1,"2183":1,"2228":1,"2229":1,"2237":1,"2255":1,"2260":1,"2261":1,"2263":1,"2268":1,"2271":1,"2272":1,"2273":2,"2275":1,"2276":1,"2292":1,"2299":1,"2309":2,"2311":2,"2322":1,"2328":2,"2367":2,"2410":2,"2411":1,"2421":1,"2422":1,"2423":1,"2459":1,"2468":1,"2474":1,"2490":1,"2491":2,"2502":1,"2510":1,"2525":1,"2530":2,"2534":1,"2566":2,"2567":2,"2569":1,"2571":1,"2575":1,"2607":1,"2617":2,"2702":3,"2703":1,"2735":2,"2736":1,"2738":2,"2743":3,"2745":1,"2747":1,"2748":2,"2753":1,"2754":1}}],["lilypadusb",{"2":{"629":1,"2344":1}}],["lily58",{"0":{"30":1,"31":1},"1":{"31":1},"2":{"30":2}}],["live",{"2":{"401":1,"402":1,"2152":1,"2510":1}}],["lives",{"2":{"99":1,"2327":1}}],["licensing",{"2":{"273":1,"352":1,"2549":2}}],["licensed",{"2":{"2310":1}}],["licenses",{"2":{"1380":1,"2564":1,"2570":1}}],["license",{"0":{"2310":1},"2":{"199":1,"276":1,"282":3,"341":1,"1242":1,"1380":5,"2310":2,"2564":7,"2566":2,"2570":5}}],["liatris",{"0":{"1321":1},"2":{"211":1,"1311":2,"1315":4,"1322":4,"2545":1,"2709":1}}],["lights",{"0":{"2167":1},"2":{"589":1,"1343":1,"1378":1,"2062":1,"2063":1}}],["lightcycle",{"2":{"222":1}}],["light",{"0":{"506":1},"2":{"199":1,"222":1,"506":1,"511":1,"588":1,"1458":1,"1855":1,"1867":1,"1869":1,"1948":1,"1949":1,"1951":1,"1959":1,"2034":1,"2035":2,"2036":1,"2038":2,"2041":1,"2042":6,"2063":1,"2131":1,"2134":1,"2167":1,"2288":1,"2497":1,"2566":1,"2578":1,"2646":1,"2665":1,"2694":1,"2708":2}}],["lighting",{"0":{"233":1,"1723":1,"1944":1,"2031":1,"2041":1,"2042":1,"2043":1,"2044":1,"2045":1,"2376":1,"2377":1},"1":{"1724":1,"1725":1,"1726":1,"1727":1,"1728":1,"1729":1,"1730":1,"1731":1,"1732":1,"1733":1,"1734":1,"1735":1,"1736":1,"1737":1,"1738":1,"1739":1,"1740":1,"1741":1,"1742":1,"1743":1,"1744":1,"1745":1,"1746":1,"1747":1,"1748":1,"1749":1,"1750":1,"1751":1,"1752":1,"1753":1,"1754":1,"1755":1,"1756":1,"1757":1,"1758":1,"1759":1,"1760":1,"1761":1,"1762":1,"1763":1,"1764":1,"1765":1,"1766":1,"1767":1,"1768":1,"1769":1,"1770":1,"1771":1,"1772":1,"1773":1,"1774":1,"1775":1,"1776":1,"1777":1,"1778":1,"1779":1,"1780":1,"1781":1,"1782":1,"1783":1,"1784":1,"1785":1,"1945":1,"1946":1,"1947":1,"1948":1,"1949":1,"1950":1,"1951":1,"1952":1,"1953":1,"1954":1,"1955":1,"1956":1,"1957":1,"1958":1,"1959":1,"1960":1,"1961":1,"1962":1,"1963":1,"1964":1,"1965":1,"1966":1,"1967":1,"1968":1,"1969":1,"1970":1,"1971":1,"1972":1,"1973":1,"1974":1,"1975":1,"1976":1,"1977":1,"1978":1,"1979":1,"1980":1,"1981":1,"1982":1,"1983":1,"1984":1,"1985":1,"1986":1,"1987":1,"1988":1,"1989":1,"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"1995":1,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2001":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2007":1,"2008":1,"2009":1,"2010":1,"2011":1,"2012":1,"2013":1,"2014":1,"2015":1,"2016":1,"2017":1,"2018":1,"2019":1,"2020":1,"2021":1,"2022":1,"2023":1,"2024":1,"2025":1,"2026":1,"2027":1,"2028":1,"2029":1,"2030":1,"2032":1,"2033":1,"2034":1,"2035":1,"2036":1,"2037":1,"2038":1,"2039":1,"2040":1,"2041":1,"2042":2,"2043":2,"2044":2,"2045":2,"2046":2,"2047":1,"2048":1,"2049":1,"2050":1,"2051":1,"2052":1,"2053":1,"2054":1,"2055":1,"2056":1,"2057":1,"2058":1,"2059":1,"2060":1,"2061":1,"2062":1,"2063":1,"2064":1},"2":{"114":1,"191":1,"221":1,"233":1,"236":3,"244":1,"249":2,"266":1,"404":1,"506":4,"1316":1,"1317":1,"1377":1,"1948":1,"2031":1,"2032":1,"2034":1,"2035":3,"2036":1,"2041":2,"2042":2,"2043":2,"2044":2,"2045":4,"2046":2,"2047":1,"2056":2,"2062":1,"2376":2,"2377":2,"2577":1,"2625":1,"2694":2,"2724":2}}],["little",{"2":{"191":1,"587":1,"628":1,"1287":1,"1412":1,"1416":2,"1432":2,"1436":1,"1451":1,"2161":1,"2162":1,"2168":1,"2176":1,"2255":2,"2273":1,"2455":1,"2585":1,"2592":1}}],["lithuanian",{"2":{"176":2,"1355":2,"2712":6}}],["literal",{"2":{"160":2,"612":1,"1363":1}}],["literals",{"2":{"114":1,"191":1,"2075":1}}],["lite",{"0":{"245":1,"565":1},"2":{"87":3,"88":3,"93":1,"103":4,"104":3,"112":1,"126":5,"127":3,"134":1,"149":2,"245":2,"249":2,"565":1,"2566":2,"2689":2}}],["liftoff",{"2":{"1870":2}}],["lifted",{"2":{"1674":1,"1870":1}}],["lifting",{"2":{"1665":1,"2454":1}}],["lift",{"2":{"175":1,"1870":1,"1872":2}}],["life",{"2":{"123":1,"401":1,"551":1,"1331":1,"2038":1,"2569":1}}],["lime",{"2":{"134":1}}],["limitation",{"2":{"635":1,"1431":1,"2335":1,"2413":1,"2519":1}}],["limitations",{"0":{"516":1,"1412":1,"2515":1},"1":{"2516":1,"2517":1,"2518":1,"2519":1},"2":{"552":1,"1230":1,"2115":1,"2146":1,"2177":1,"2263":1}}],["limits",{"0":{"601":1},"2":{"176":2,"236":1,"516":1,"659":1,"1729":2,"1730":3,"1872":1,"1952":2,"1954":3,"2519":1,"2688":2,"2695":2}}],["limiting",{"2":{"114":1,"370":1,"1730":1,"1954":1,"2304":1,"2524":1,"2525":1}}],["limited",{"0":{"534":1,"2519":1},"2":{"92":1,"130":1,"174":1,"493":1,"533":1,"556":1,"560":1,"630":1,"659":1,"1245":1,"1271":1,"1331":1,"1336":2,"1441":1,"1491":1,"1554":1,"1666":1,"1934":1,"1959":1,"2108":1,"2130":1,"2181":1,"2243":1,"2314":1,"2319":3,"2320":1,"2411":1,"2479":1,"2569":1,"2701":1,"2719":1}}],["limit",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"63":1,"114":1,"160":2,"176":1,"191":1,"222":1,"236":1,"337":1,"481":1,"570":1,"598":1,"659":1,"690":1,"697":1,"1326":1,"1457":1,"1573":2,"1729":1,"1730":2,"1817":1,"1950":3,"1952":1,"1954":2,"2035":2,"2299":2,"2574":1,"2688":2,"2695":2,"2705":1}}],["linx",{"2":{"2184":1,"2384":1}}],["linworks",{"2":{"191":1,"266":1}}],["lingering",{"2":{"191":3,"199":1}}],["linux1",{"2":{"2355":1}}],["linux",{"0":{"365":1,"1238":1,"1239":1,"1240":1},"1":{"1239":1,"1240":1},"2":{"158":1,"222":1,"1238":1,"1239":1,"1249":1,"1254":2,"1283":1,"1673":1,"1825":1,"1826":1,"1832":1,"1921":1,"2179":1,"2180":1,"2183":3,"2184":2,"2196":1,"2197":1,"2198":1,"2347":1,"2351":1,"2355":1,"2384":2,"2451":1,"2457":1,"2458":1,"2484":1,"2513":2,"2556":1,"2712":2}}],["linting",{"0":{"442":1,"443":1,"447":1},"1":{"443":1,"444":1,"445":1,"446":1,"447":1}}],["lint",{"0":{"381":1,"2293":1},"2":{"134":1,"160":1,"191":1,"199":1,"236":1,"249":1,"266":1,"282":3,"341":1,"381":3,"442":1,"447":1,"2293":5}}],["linear",{"2":{"1577":2,"2596":3}}],["linebreak",{"2":{"462":1}}],["lined",{"2":{"292":1,"453":1}}],["lines",{"0":{"280":1},"2":{"64":1,"113":1,"153":1,"211":1,"272":1,"273":1,"277":1,"453":2,"455":2,"462":1,"468":1,"481":1,"556":1,"588":1,"661":1,"1363":1,"1561":2,"1591":3,"1822":5,"1903":1,"2143":4,"2146":1,"2147":1,"2148":1,"2149":1,"2342":1,"2349":1,"2423":2,"2556":1,"2577":1}}],["line",{"0":{"1603":1,"2454":1,"2484":1},"1":{"1604":1},"2":{"45":1,"65":1,"112":1,"114":2,"118":2,"157":1,"199":1,"226":2,"236":1,"249":1,"264":1,"274":1,"277":1,"282":3,"292":2,"363":1,"399":3,"400":1,"414":1,"430":1,"437":1,"453":4,"454":1,"457":1,"459":2,"462":3,"468":3,"473":1,"556":2,"563":1,"1124":1,"1126":1,"1134":1,"1225":1,"1255":1,"1314":1,"1316":1,"1320":2,"1328":1,"1329":1,"1351":1,"1378":1,"1511":3,"1518":1,"1552":2,"1591":2,"1604":2,"1605":1,"1800":1,"1822":5,"1853":1,"1903":1,"2109":1,"2143":3,"2150":1,"2172":1,"2230":1,"2233":1,"2235":2,"2236":1,"2237":1,"2240":1,"2242":1,"2243":1,"2244":1,"2255":2,"2262":1,"2268":1,"2273":1,"2311":2,"2349":2,"2423":3,"2427":1,"2437":1,"2451":2,"2457":1,"2474":2,"2479":2,"2484":1,"2492":1,"2503":1,"2506":1,"2508":1,"2530":1,"2542":1,"2553":1,"2577":7,"2587":1,"2615":1,"2622":1,"2623":1,"2636":1,"2757":2}}],["linkid=830387",{"2":{"2513":1}}],["linking",{"2":{"236":2,"279":1,"513":2,"1287":1,"2303":1,"2425":1,"2469":1}}],["link007",{"2":{"2351":1}}],["linked",{"2":{"236":1,"513":1,"2346":1,"2686":1}}],["linker",{"2":{"114":1}}],["links",{"0":{"2281":1},"2":{"199":1,"279":2,"331":1,"351":1,"602":1,"1262":1,"1304":1,"1451":1,"2275":1,"2282":1,"2297":1,"2328":1,"2354":1,"2566":1}}],["link",{"2":{"10":2,"50":1,"93":1,"94":1,"114":1,"133":1,"134":2,"277":1,"327":2,"349":1,"513":2,"557":1,"621":1,"1236":1,"1267":1,"1451":2,"1452":1,"1910":2,"2241":4,"2255":2,"2269":4,"2350":1,"2351":2,"2352":2,"2353":4,"2497":1,"2506":1,"2564":1,"2566":3,"2674":1,"2702":1}}],["libffi",{"2":{"2464":1}}],["libusbk",{"2":{"629":1}}],["libusb",{"2":{"240":3}}],["liberal",{"2":{"455":1,"471":1}}],["liberally",{"2":{"453":1,"455":1}}],["liber",{"2":{"143":2,"149":1}}],["libc",{"2":{"114":1,"681":1,"2702":1}}],["lib8tion",{"2":{"114":1}}],["libraries",{"2":{"30":1,"33":1,"1921":1,"2720":1}}],["library",{"0":{"1440":1,"1578":1},"1":{"1441":1},"2":{"30":2,"160":1,"414":1,"415":1,"417":1,"423":1,"424":1,"479":1,"513":1,"697":2,"1439":3,"1440":2,"1578":1,"1921":2,"1922":1,"1923":1,"2578":2}}],["lib",{"2":{"6":1,"75":1,"113":1,"114":1,"234":2,"282":3,"349":2,"360":1,"430":2,"446":1,"483":1,"484":1,"485":2,"513":8,"607":3,"613":1,"614":3,"2255":4,"2523":1}}],["lists",{"0":{"282":1,"468":1},"2":{"382":1,"383":1,"395":1,"474":1,"626":1}}],["listings",{"2":{"211":1,"2513":1}}],["listing",{"2":{"149":1,"371":1,"621":1,"1357":1}}],["listed",{"2":{"43":1,"120":1,"204":1,"264":1,"274":1,"364":1,"366":1,"454":1,"509":1,"574":1,"580":1,"656":1,"659":1,"701":1,"1336":1,"1340":1,"1822":1,"2123":1,"2161":1,"2342":1,"2347":1,"2348":1,"2439":1,"2544":1,"2548":1,"2573":1,"2749":1}}],["listening",{"2":{"1252":1,"1254":2,"2071":1}}],["listen",{"0":{"1249":1,"1254":1,"2639":1},"2":{"34":1,"503":1,"1249":1,"1254":4,"1255":1,"2131":1,"2263":2,"2639":1}}],["list",{"0":{"71":1,"382":1,"383":1,"395":1,"629":1,"2266":1,"2319":1,"2601":1},"1":{"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"2602":1,"2603":1,"2604":1,"2605":1,"2606":1,"2607":1,"2608":1,"2609":1,"2610":1,"2611":1,"2612":1},"2":{"0":1,"19":1,"76":1,"93":1,"114":1,"116":1,"120":1,"124":1,"134":3,"149":2,"157":1,"172":1,"182":1,"186":1,"188":2,"189":1,"191":2,"199":1,"202":1,"204":1,"211":1,"233":2,"234":1,"249":1,"272":1,"292":1,"313":1,"316":3,"317":1,"331":1,"341":1,"374":3,"375":1,"382":1,"383":1,"393":1,"394":1,"395":2,"396":1,"411":5,"457":1,"467":1,"513":3,"537":1,"612":1,"626":2,"629":1,"663":1,"1265":1,"1300":2,"1354":1,"1355":1,"1359":2,"1383":1,"1398":5,"1508":1,"1511":2,"1518":1,"1547":1,"1578":1,"1633":1,"1677":2,"1724":1,"1921":1,"1932":1,"1945":1,"1953":1,"2042":3,"2044":1,"2047":1,"2052":4,"2058":1,"2130":1,"2152":1,"2168":1,"2179":1,"2183":2,"2280":1,"2315":1,"2318":1,"2319":1,"2400":2,"2406":1,"2407":1,"2421":2,"2423":2,"2424":1,"2436":1,"2437":2,"2440":1,"2448":1,"2469":2,"2474":4,"2502":1,"2523":1,"2548":1,"2549":1,"2555":1,"2556":3,"2562":1,"2564":1,"2566":1,"2592":1,"2607":1,"2672":1,"2677":1,"2682":2,"2684":1,"2686":2,"2688":1,"2689":3,"2695":1,"2696":1,"2719":1,"2723":1,"2738":2}}],["svd",{"2":{"2513":5}}],["svdfile",{"2":{"2513":2}}],["svnroot",{"2":{"358":1}}],["svn",{"2":{"114":1,"149":1,"358":8}}],["sz",{"2":{"2183":1}}],["s2",{"2":{"2148":1,"2153":2}}],["s2m",{"2":{"2130":9}}],["s1",{"2":{"2148":1,"2153":2}}],["sg",{"2":{"1300":1}}],["sgui",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["sbin",{"2":{"1239":1}}],["s3",{"2":{"222":1,"304":2,"305":1,"308":1,"519":1,"2153":1}}],["sq",{"2":{"2111":9,"2112":12}}],["sq80",{"2":{"249":1}}],["sqrt",{"2":{"222":1}}],["squash",{"2":{"560":1}}],["square",{"2":{"222":1,"661":1,"1393":2,"1401":1}}],["squiggly",{"2":{"401":1}}],["squigglybob",{"2":{"222":1}}],["squigglies",{"2":{"401":1}}],["squiggle",{"2":{"143":2}}],["squishytkl",{"2":{"197":2}}],["squishy65",{"2":{"197":2}}],["squeeze",{"2":{"160":1,"486":1,"616":1}}],["squeezing",{"0":{"123":1,"2701":1},"1":{"2702":1,"2703":1,"2704":1,"2705":1,"2706":1,"2707":1,"2708":1},"2":{"134":1,"2718":1,"2724":1}}],["sfbs",{"0":{"1934":1}}],["sf",{"2":{"211":1}}],["sftent",{"2":{"2106":3,"2107":1}}],["sft",{"2":{"195":1,"1511":2,"2374":1,"2410":1,"2727":1,"2728":1,"2734":3,"2737":6}}],["s65",{"2":{"211":1}}],["sram",{"2":{"2353":3}}],["srand",{"2":{"1815":1,"2139":1}}],["sr",{"2":{"2153":3}}],["srst",{"2":{"335":1}}],["srom",{"2":{"273":2,"277":1}}],["sriwedari70",{"2":{"211":1}}],["src",{"2":{"75":1,"114":1,"133":1,"134":1,"149":1,"234":9,"236":1,"401":1,"513":8,"614":2,"665":1,"730":2,"756":2,"785":2,"817":2,"849":2,"884":2,"918":2,"952":2,"986":2,"1020":2,"1054":2,"1088":2,"1144":2,"1330":1,"1377":4,"2299":1,"2435":1,"2753":1}}],["sdio",{"2":{"1855":2,"1867":2,"1869":2,"1872":3}}],["sd",{"2":{"1511":4}}],["sdep",{"2":{"1492":1}}],["sd2",{"2":{"1198":1}}],["sd3",{"2":{"1132":2}}],["sd1",{"2":{"1132":1,"1198":2}}],["sdb",{"2":{"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1}}],["sdk",{"2":{"191":1,"199":1}}],["sdadel",{"2":{"705":1}}],["sda",{"2":{"176":1,"702":2,"703":4,"758":1,"787":1,"819":1,"851":8,"886":8,"920":1,"954":1,"988":1,"1022":8,"1056":8,"1090":8,"1146":1,"1574":1,"2120":1,"2541":1}}],["ssh",{"2":{"2432":1,"2438":1}}],["ssion",{"2":{"1943":1}}],["ssp",{"2":{"1123":3}}],["ssk",{"2":{"207":3}}],["ss",{"2":{"176":2,"196":2,"1176":5,"1359":1,"1361":24,"1363":1,"1680":2,"1686":4,"2075":4,"2078":1,"2079":2,"2141":1}}],["ssd1351",{"2":{"176":1,"2573":2,"2576":7}}],["ssd1306oled\\t",{"2":{"31":1,"34":1}}],["ssd1306oled",{"2":{"31":2,"34":2,"220":1}}],["ssd1306",{"0":{"1823":1,"2287":1},"2":{"30":1,"33":1,"50":1,"153":1,"176":1,"220":2,"221":2,"248":1,"249":1,"1811":5,"1813":3,"1817":1,"1820":1,"1821":3,"1822":2,"2287":1,"2573":2,"2576":2}}],["snek",{"2":{"2181":3}}],["snes",{"2":{"236":1}}],["sn",{"2":{"2034":1,"2376":1}}],["snippers",{"2":{"2266":1}}],["snippet",{"2":{"1555":1,"1908":1}}],["snip>",{"2":{"317":1}}],["snled27351",{"0":{"1143":1,"1150":1,"1152":1,"1154":1,"1156":1,"1158":1,"1160":1,"1162":1,"1164":1,"1166":1,"1168":1,"1170":1,"1172":1},"1":{"1144":1,"1145":1,"1146":1,"1147":1,"1148":1,"1149":1,"1150":1,"1151":2,"1152":1,"1153":2,"1154":1,"1155":2,"1156":1,"1157":2,"1158":1,"1159":2,"1160":1,"1161":2,"1162":1,"1163":2,"1164":1,"1165":2,"1166":1,"1167":2,"1168":1,"1169":2,"1170":1,"1171":2,"1172":1,"1173":2},"2":{"236":2,"249":1,"1143":1,"1144":4,"1145":7,"1146":6,"1148":6,"1158":1,"1159":1,"1162":1,"1163":1,"1166":1,"1167":1,"1168":1,"1169":1,"1724":1,"1945":1,"2688":1,"2695":1}}],["snowe",{"2":{"191":1}}],["snprintf",{"2":{"191":1,"2702":3,"2707":1}}],["snapshot",{"2":{"554":1}}],["snap",{"2":{"277":1}}],["snake",{"2":{"160":1,"2034":2,"2036":2,"2037":2,"2038":2,"2040":2,"2063":1,"2376":2,"2694":1,"2708":1}}],["snagpad",{"2":{"43":2}}],["sn74x154",{"2":{"160":1}}],["sn74x138",{"2":{"148":1,"149":1,"160":1}}],["skeleton",{"2":{"2443":1}}],["sketches",{"2":{"2344":1}}],["sketch",{"2":{"2331":1}}],["skewed",{"2":{"1405":1}}],["sk6805",{"2":{"1212":1,"1216":1,"2031":1}}],["sk6812rgbw",{"2":{"1217":1}}],["sk6812mini",{"2":{"1212":1,"2031":1}}],["sk6812",{"2":{"1212":1,"1216":1,"2031":1}}],["skills",{"2":{"557":1,"1683":1,"1918":1}}],["skips",{"2":{"1360":2,"1557":1,"1863":1,"1886":2,"2355":1}}],["skipped",{"2":{"277":1,"2162":1}}],["skipping",{"2":{"240":1,"597":1,"2162":1}}],["skip",{"2":{"49":1,"65":1,"114":1,"149":1,"176":1,"214":1,"571":1,"572":1,"1127":1,"1130":1,"1332":1,"1446":1,"1859":1,"1863":1,"2268":1,"2349":1,"2393":2,"2405":1,"2430":1,"2451":1,"2474":2,"2497":1,"2498":1,"2724":1}}],["skully",{"2":{"424":1}}],["skullydazed",{"2":{"111":1,"2672":1}}],["skyloong",{"2":{"222":1,"236":4}}],["slct",{"2":{"2355":1,"2392":1}}],["sl",{"2":{"2153":2}}],["slep",{"2":{"1273":1,"2355":1,"2393":1}}],["sleeping",{"2":{"1530":1,"2263":1}}],["sleep",{"0":{"1292":1,"1298":1},"2":{"70":1,"73":1,"93":1,"190":2,"191":1,"222":1,"249":2,"588":1,"1292":1,"1298":1,"1530":1,"1730":1,"1954":1,"2035":2,"2263":1,"2355":2,"2393":2,"2688":2,"2694":2,"2695":2}}],["slovenian",{"2":{"1355":1,"2712":3}}],["slovak",{"2":{"1355":1,"2712":3}}],["slows",{"2":{"1872":1}}],["slowdown",{"2":{"1821":1}}],["slower",{"2":{"1817":1,"1883":1,"2112":1,"2113":1,"2428":1}}],["slowest",{"2":{"1805":1,"1806":1,"1822":1}}],["slowly",{"2":{"1815":1,"2139":1}}],["slow",{"2":{"506":1,"1326":2,"1403":1,"1573":1,"1803":1,"1857":1,"2042":1,"2463":1,"2584":1}}],["slots",{"2":{"218":1}}],["slsh",{"2":{"313":1,"530":2,"2228":1,"2355":1,"2388":1,"2407":1}}],["slash",{"2":{"1530":1,"1584":1,"2294":1,"2355":2,"2388":1,"2394":1}}],["slashes",{"2":{"149":1}}],["slated",{"2":{"688":1}}],["slate",{"2":{"559":1,"2566":1}}],["slavepin",{"0":{"1180":1},"1":{"1181":1,"1182":1},"2":{"1177":1,"1181":1}}],["slave",{"2":{"74":1,"92":1,"93":1,"107":1,"211":1,"509":2,"511":13,"685":2,"694":2,"852":3,"1023":3,"1057":3,"1129":2,"1176":1,"1177":2,"1181":1,"1194":1,"1714":1,"1907":1,"1959":1,"2044":1,"2051":4,"2114":1,"2128":4,"2129":8,"2130":24,"2131":7,"2132":1,"2141":1,"2225":1}}],["slim",{"2":{"1950":1,"2235":1}}],["sliding",{"2":{"1807":1}}],["slicing",{"2":{"1397":1}}],["slightly",{"2":{"560":1,"641":1,"1128":1,"1143":1,"1215":1,"1406":1,"1409":1,"1520":1,"1573":1,"1880":1,"2122":1,"2226":1,"2343":1,"2348":1,"2566":1,"2735":1}}],["slight",{"2":{"149":1,"236":1,"1949":3}}],["slipped",{"2":{"95":1}}],["smith",{"2":{"2553":1}}],["smithrune",{"2":{"211":1}}],["smp",{"2":{"641":1}}],["smpr",{"2":{"641":1}}],["smart",{"2":{"551":1}}],["smallest",{"2":{"2564":1,"2567":1}}],["smaller",{"2":{"134":1,"166":1,"248":1,"249":2,"481":1,"1573":1,"1822":1,"2147":1,"2564":1,"2576":3,"2702":2,"2720":1}}],["smallice",{"2":{"159":2}}],["small",{"0":{"25":1},"2":{"153":1,"174":1,"191":2,"211":1,"277":1,"364":1,"481":1,"513":1,"1212":1,"1430":1,"1438":1,"1439":1,"1527":1,"1571":1,"1803":1,"1806":1,"2031":1,"2133":2,"2240":1,"2266":1,"2269":1,"2272":2,"2274":1,"2308":1,"2424":1,"2480":1,"2750":1}}],["smoke",{"2":{"2273":2}}],["smoothly",{"2":{"2226":1}}],["smoothed",{"2":{"2226":1}}],["smoother",{"2":{"74":1,"505":1,"1803":1,"1804":1}}],["smoothness",{"2":{"1804":1,"2226":1}}],["smooth1",{"2":{"1578":12}}],["smooth2",{"2":{"1578":12}}],["smooth",{"2":{"353":1,"1578":5,"1807":1,"2472":1}}],["smoll",{"2":{"241":4,"249":1}}],["smolka",{"2":{"211":1}}],["syllabus",{"0":{"2722":1},"2":{"2419":1}}],["syllable",{"2":{"2144":2}}],["syrq",{"2":{"2355":1,"2392":1}}],["sysreq",{"2":{"2355":1,"2392":1}}],["sys",{"2":{"1923":2}}],["sysclk",{"2":{"134":1}}],["sysex",{"2":{"114":1,"133":1,"134":1}}],["systemctl",{"2":{"1239":2}}],["systemd",{"2":{"1239":1}}],["systems",{"0":{"367":1},"2":{"134":1,"234":1,"367":1,"592":1,"1273":1,"1385":1,"1787":1,"2177":1,"2182":1,"2262":2,"2320":1,"2585":1,"2592":1,"2702":1}}],["system",{"0":{"140":1,"451":1,"452":1,"1291":1,"2317":1,"2509":1,"2718":1},"2":{"49":2,"75":1,"76":1,"84":1,"93":1,"114":1,"149":1,"176":1,"231":3,"232":1,"234":1,"249":1,"262":2,"272":1,"366":1,"403":1,"413":1,"434":1,"451":1,"457":1,"479":1,"480":1,"515":1,"589":1,"605":1,"614":1,"626":1,"661":1,"681":1,"687":1,"1221":1,"1239":1,"1273":1,"1291":1,"1723":1,"1725":1,"1731":1,"1802":1,"1803":1,"1832":1,"1853":1,"1874":1,"1876":1,"1879":2,"1921":1,"1944":1,"1946":1,"1948":2,"1955":1,"2072":1,"2107":1,"2120":1,"2146":1,"2183":2,"2225":1,"2250":1,"2255":1,"2261":1,"2263":2,"2316":1,"2317":1,"2320":1,"2355":8,"2392":2,"2393":7,"2431":1,"2441":2,"2445":1,"2450":1,"2492":1,"2497":1,"2508":1,"2531":1,"2556":1,"2573":1,"2577":1,"2629":1,"2638":1,"2702":1,"2710":1,"2718":1,"2735":1,"2736":1}}],["systick",{"0":{"11":1},"2":{"11":2}}],["symb",{"2":{"2606":1}}],["symbol",{"2":{"331":1,"1419":1,"2036":2,"2182":2,"2224":1,"2311":1,"2319":1,"2397":1}}],["symbolic",{"2":{"236":1,"1428":1}}],["symbols",{"0":{"1419":1,"1428":1,"2378":1,"2397":1},"1":{"2398":1,"2399":1},"2":{"176":2,"1423":2,"1429":1,"2181":1,"2263":1,"2354":1,"2378":1}}],["symmetric",{"2":{"1326":2,"1934":1}}],["symmetric70",{"2":{"114":1,"134":1}}],["symlink",{"0":{"451":1},"2":{"451":1,"452":1}}],["symlinks",{"2":{"403":1}}],["sym",{"2":{"94":1,"149":1,"199":1,"236":2,"1326":3,"1329":8,"2182":4,"2674":5}}],["synapse",{"2":{"241":2}}],["synth",{"2":{"1393":2}}],["synthesis",{"2":{"1393":1}}],["synthesis60",{"2":{"211":1}}],["syntaxwarning",{"2":{"249":1}}],["syntax",{"2":{"92":1,"176":1,"191":1,"374":1,"1440":1,"2262":1,"2347":1,"2417":1,"2437":1,"2479":1,"2728":2}}],["syncing",{"2":{"1958":1,"2129":4}}],["synchronous",{"2":{"1907":1}}],["synchronizes",{"2":{"2129":1}}],["synchronized",{"2":{"852":1,"1023":1,"1057":1}}],["synchronization",{"0":{"852":1,"1023":1,"1057":1},"2":{"852":1,"1023":1,"1057":1,"2035":1,"2128":1,"2131":1,"2694":1}}],["synchronizing",{"2":{"511":1}}],["synced",{"2":{"1714":1,"1959":1,"2044":1}}],["syncs",{"2":{"511":2}}],["sync",{"0":{"2129":1,"2130":1,"2475":1},"1":{"2476":1,"2477":1},"2":{"74":1,"107":1,"112":2,"114":4,"211":1,"222":1,"236":2,"249":2,"506":1,"511":3,"850":12,"852":5,"1021":12,"1023":5,"1055":12,"1057":5,"1100":2,"1385":1,"1714":1,"1873":1,"1958":1,"1959":1,"2042":1,"2044":1,"2128":3,"2129":1,"2130":16,"2472":1,"2477":1,"2697":1}}],["s7",{"2":{"67":4,"72":1}}],["schottky",{"2":{"2133":2}}],["school",{"2":{"2118":1,"2564":1}}],["scheikled",{"2":{"222":1}}],["schemes",{"2":{"635":1,"2666":2}}],["scheme",{"2":{"182":1,"2313":1,"2587":3,"2596":3}}],["schemas",{"2":{"191":1,"282":1,"607":1,"609":1,"2671":1}}],["schematics",{"2":{"1293":1}}],["schematic",{"0":{"1471":1,"2313":1},"2":{"93":1,"1236":1,"1289":1,"1293":2}}],["schema",{"0":{"609":1,"2600":1},"2":{"76":2,"149":1,"176":3,"199":1,"222":1,"249":1,"266":2,"277":1,"282":1,"607":1,"2566":1,"2671":1}}],["scheduled",{"2":{"339":1,"598":1,"601":1,"2584":1}}],["schedule",{"0":{"88":1,"104":1,"127":1,"170":1},"2":{"184":1}}],["score",{"2":{"2225":1,"2228":1}}],["scope",{"2":{"1832":1,"2108":1,"2745":1,"2746":1}}],["scottoalp",{"2":{"266":1}}],["scottostarter",{"2":{"217":2}}],["scottocmd",{"2":{"217":2}}],["scotto9",{"2":{"217":2}}],["scottokeebs",{"2":{"217":5}}],["scotto36",{"2":{"217":2}}],["scotto40",{"2":{"199":1,"217":2}}],["scmd",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["sck",{"2":{"1176":2,"1177":4,"1226":4,"2518":1,"2541":1,"2576":2}}],["scenario",{"2":{"1252":1,"1253":1,"2152":1,"2311":1,"2403":1}}],["scenarios",{"2":{"263":1,"663":1,"2311":1,"2730":1}}],["scenes",{"2":{"198":1,"201":1,"213":1,"224":1,"238":1,"251":1,"2162":1}}],["science",{"2":{"199":1}}],["sclr",{"2":{"2112":1}}],["sclk",{"2":{"1855":2,"1867":2,"1869":2,"1872":3,"2328":1,"2330":1,"2332":2,"2334":1,"2336":2,"2338":2,"2340":1}}],["scll",{"2":{"705":1}}],["sclh",{"2":{"705":1}}],["scldel",{"2":{"705":1}}],["scln",{"2":{"176":1,"313":1,"530":2,"1499":1,"2168":1,"2355":1,"2388":1,"2407":1}}],["scl",{"2":{"176":1,"502":1,"702":3,"703":4,"758":1,"787":1,"819":1,"851":8,"886":8,"920":1,"954":1,"988":1,"1022":8,"1056":8,"1090":8,"1146":1,"1574":1,"2120":1,"2541":1}}],["sculpt",{"2":{"149":1,"160":1}}],["scythe",{"2":{"143":2}}],["scylla",{"2":{"114":1}}],["scary",{"2":{"2752":1}}],["scarlet",{"2":{"211":1}}],["scarletbandana",{"2":{"143":2}}],["scattered",{"2":{"2750":1}}],["scaling",{"0":{"840":1,"842":1,"846":1,"1011":1,"1013":1,"1017":1,"1045":1,"1047":1,"1051":1,"1079":1,"1081":1,"1085":1,"1113":1,"1115":1,"1119":1},"1":{"841":1,"843":1,"847":1,"1012":1,"1014":1,"1018":1,"1046":1,"1048":1,"1052":1,"1080":1,"1082":1,"1086":1,"1114":1,"1116":1,"1120":1},"2":{"176":1,"249":2,"666":2,"840":2,"841":3,"842":2,"843":1,"846":1,"1011":2,"1012":3,"1013":2,"1014":1,"1017":1,"1045":2,"1046":3,"1047":2,"1048":1,"1051":1,"1079":2,"1080":3,"1081":2,"1082":1,"1085":1,"1113":2,"1114":3,"1115":2,"1116":1,"1119":1,"1405":1,"1863":1,"1910":3}}],["scaled",{"2":{"1637":2,"2677":1,"2688":1,"2694":1,"2695":1}}],["scale",{"2":{"176":1,"191":1,"199":1,"1403":5,"1405":1,"1868":1,"1950":1,"2567":1}}],["scancode",{"0":{"2660":1},"2":{"2315":2,"2316":1}}],["scancodes",{"2":{"1279":1,"2315":2,"2407":1,"2666":1}}],["scans",{"2":{"1326":2,"1340":1}}],["scanned",{"2":{"641":1,"1252":1,"1253":1,"2311":10}}],["scanning",{"0":{"584":1,"2745":1},"1":{"585":1,"586":1,"2746":1,"2747":1,"2748":1,"2749":1},"2":{"49":1,"134":1,"266":1,"515":1,"563":1,"565":2,"566":3,"584":1,"586":1,"659":1,"660":1,"1326":4,"1573":1,"2122":1,"2263":1,"2311":1,"2548":1,"2584":1,"2614":1,"2689":2,"2744":1,"2745":4,"2746":2,"2748":2}}],["scanf",{"2":{"334":1}}],["scan",{"0":{"585":1,"586":1,"1253":1},"2":{"31":1,"65":1,"93":2,"112":1,"113":1,"114":1,"149":2,"176":2,"196":1,"199":2,"214":1,"277":1,"565":1,"566":5,"586":3,"587":2,"588":1,"627":1,"1253":7,"1326":2,"1329":1,"1330":1,"1375":1,"1497":5,"1573":2,"1817":1,"1868":1,"2128":1,"2129":1,"2141":1,"2150":1,"2231":1,"2238":1,"2301":1,"2314":1,"2407":1,"2747":1,"2748":3}}],["sc",{"2":{"55":11,"2103":7,"2104":7,"2106":1,"2107":1,"2382":7}}],["scratch",{"2":{"2262":1,"2497":1}}],["scr",{"2":{"1813":1,"2137":1}}],["scrutiny",{"2":{"352":1}}],["scrl",{"2":{"313":1,"530":2,"1276":1,"2355":1,"2389":1,"2408":1}}],["scrollwheel",{"2":{"1910":1}}],["scrolls",{"2":{"1817":1}}],["scroll",{"0":{"1879":2,"1880":1,"1912":1,"1914":1},"2":{"175":1,"176":3,"188":1,"191":1,"199":1,"222":1,"236":2,"511":1,"1585":1,"1714":1,"1715":2,"1717":1,"1798":1,"1802":5,"1803":3,"1805":13,"1806":1,"1813":1,"1816":2,"1817":3,"1822":7,"1860":3,"1863":1,"1865":5,"1866":3,"1872":3,"1878":1,"1879":4,"1880":25,"1883":1,"1910":3,"1912":15,"1914":1,"2137":1,"2140":1,"2355":4,"2389":4,"2685":2,"2744":1}}],["scrolling",{"2":{"48":1,"175":1,"1406":1,"1728":6,"1802":2,"1803":4,"1804":1,"1805":1,"1811":4,"1816":1,"1822":17,"1860":1,"1876":2,"1878":1,"1879":5,"1880":18,"1881":1,"1882":8,"1883":1,"1910":1,"1912":2,"1948":1,"1949":9}}],["screw",{"2":{"114":1}}],["screens",{"2":{"592":1,"1822":1,"2284":1}}],["screen",{"0":{"1665":1},"2":{"34":1,"153":1,"511":1,"1406":1,"1534":1,"1586":1,"1665":1,"1807":1,"1814":1,"1815":1,"1817":3,"1821":2,"1822":12,"1823":1,"2129":2,"2138":1,"2139":1,"2141":1,"2143":11,"2355":2,"2392":2,"2425":1,"2498":1,"2501":1,"2577":11}}],["script",{"2":{"94":1,"114":2,"134":1,"149":3,"191":1,"199":1,"277":1,"335":2,"428":1,"430":2,"451":1,"452":1,"625":1,"1241":1,"2238":1,"2252":1}}],["scripts",{"2":{"10":1,"211":1,"335":2}}],["shyay",{"2":{"2466":1}}],["shsudo",{"2":{"2466":1}}],["shcd",{"2":{"2443":1,"2444":1}}],["shqmk",{"2":{"1312":1,"1440":1,"2421":2,"2422":2,"2425":2,"2445":1,"2447":1,"2454":2,"2468":4,"2469":2}}],["sheer",{"2":{"2719":1}}],["sheet",{"2":{"656":2,"661":2,"1396":1}}],["she",{"2":{"1565":1}}],["shell",{"2":{"116":1,"176":1,"249":1,"373":2,"428":1,"1935":1,"2256":1,"2508":1}}],["shade",{"2":{"2575":4}}],["shades",{"2":{"1950":1}}],["shall",{"2":{"2161":1,"2566":1}}],["shapes",{"2":{"2617":1}}],["shaped",{"2":{"2131":1}}],["shapped",{"2":{"1949":1}}],["sha",{"2":{"529":2}}],["sha1",{"2":{"349":1}}],["shandoncodes",{"2":{"241":5,"249":1}}],["sharp2",{"2":{"1578":12}}],["sharp1",{"2":{"1578":12}}],["sharp",{"2":{"1578":8,"1793":30,"2266":1,"2371":30}}],["sharing",{"0":{"1376":1},"1":{"1377":1,"1378":1,"1379":1,"1380":1,"1381":1,"1382":1,"1383":1,"1384":1,"1385":1},"2":{"107":1,"1265":1,"1562":1,"2558":1}}],["shares",{"2":{"1498":1}}],["share",{"2":{"63":1,"415":1,"1265":1,"1352":1,"1376":1,"1380":1,"1554":1,"1562":2,"1563":1,"2295":1,"2510":1}}],["shared",{"0":{"2518":1},"2":{"30":1,"33":1,"50":1,"107":1,"112":2,"114":1,"138":1,"160":1,"190":1,"191":1,"262":1,"502":1,"516":2,"633":1,"1377":1,"1385":1,"1731":1,"1809":1,"1875":2,"1948":1,"1955":1,"2516":1,"2518":4,"2530":2,"2699":3}}],["shutdown",{"0":{"229":1,"592":1,"593":1,"594":1,"595":1},"1":{"593":1,"594":1,"595":1},"2":{"229":6,"230":1,"236":2,"249":1,"266":1,"277":1,"592":3,"593":2,"594":1,"595":2,"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1,"1816":1}}],["sh1107",{"2":{"210":1,"1811":4,"1813":1,"1817":1,"1820":1,"1821":3,"1822":1}}],["sh1106",{"2":{"153":1,"232":2,"1811":2,"1813":1,"1817":2,"1821":2,"1822":1,"2573":6,"2576":15}}],["shpkg",{"2":{"2467":1}}],["shpython3",{"2":{"158":1,"2465":1}}],["shpacman",{"2":{"158":1,"2461":1}}],["shbrew",{"2":{"158":1,"2463":1}}],["sh",{"2":{"114":1,"199":1,"360":1,"450":1,"451":3,"452":1,"625":1,"1241":1,"1578":10,"2156":10,"2252":6,"2383":8,"2431":1,"2446":1,"2462":1}}],["shine",{"2":{"2625":1,"2665":1}}],["shiny",{"2":{"2272":1,"2273":1}}],["shipping",{"2":{"2310":2}}],["shipped",{"2":{"625":1,"2343":1,"2566":1}}],["ship",{"2":{"1132":1,"1133":1}}],["shisaku",{"2":{"211":1}}],["shield",{"2":{"113":1,"114":1}}],["shifting",{"2":{"1412":2,"1432":1,"1506":1}}],["shift+option",{"2":{"2355":1}}],["shift+v",{"2":{"1529":1}}],["shift+s",{"2":{"1503":1}}],["shift+a",{"2":{"1503":2}}],["shift+escape",{"2":{"626":1}}],["shift+b",{"2":{"626":1}}],["shift+right",{"2":{"626":3,"1529":2}}],["shift+2",{"2":{"99":1}}],["shifter",{"2":{"580":1}}],["shifted",{"0":{"1430":1,"2378":1,"2397":1},"1":{"2398":1,"2399":1},"2":{"176":1,"188":1,"191":2,"249":1,"266":1,"684":2,"701":1,"1409":1,"1411":3,"1412":3,"1416":3,"1423":5,"1430":12,"1431":3,"1435":1,"1446":1,"1499":2,"1506":2,"1565":1,"1633":1,"1933":2,"1938":1,"1949":1,"2378":1,"2397":1,"2413":1,"2739":1}}],["shifts",{"2":{"134":2,"1303":2,"1499":1,"1500":4,"1501":2,"1787":1,"1949":4,"2680":1}}],["shift",{"0":{"1303":1,"1409":2,"1410":1,"1412":1,"1413":1,"1415":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"1423":1,"1424":1,"1425":1,"1426":1,"1427":1,"1428":1,"1429":1,"1431":1,"1432":1,"1433":1,"1503":1,"2358":1,"2661":1,"2739":1},"1":{"1410":2,"1411":2,"1412":2,"1413":2,"1414":2,"1415":2,"1416":3,"1417":3,"1418":3,"1419":3,"1420":3,"1421":3,"1422":3,"1423":3,"1424":3,"1425":3,"1426":3,"1427":3,"1428":3,"1429":3,"1430":2,"1431":2,"1432":3,"1433":2,"1434":3,"1435":3,"1436":3},"2":{"49":1,"63":1,"99":1,"114":1,"134":4,"152":4,"176":1,"188":1,"191":1,"211":3,"222":2,"236":2,"255":1,"257":1,"258":1,"259":2,"291":1,"502":1,"546":1,"626":1,"701":1,"1274":1,"1284":9,"1290":1,"1299":9,"1300":11,"1303":7,"1336":2,"1364":2,"1370":1,"1385":4,"1409":1,"1410":2,"1411":10,"1412":5,"1413":1,"1414":4,"1415":3,"1416":7,"1417":1,"1418":2,"1419":1,"1420":1,"1421":1,"1422":1,"1423":10,"1425":1,"1429":1,"1430":7,"1431":9,"1432":3,"1433":1,"1434":12,"1435":4,"1436":1,"1442":1,"1445":2,"1446":3,"1499":2,"1500":9,"1501":4,"1503":10,"1506":3,"1511":1,"1523":1,"1529":1,"1530":1,"1564":1,"1565":1,"1566":1,"1568":2,"1582":1,"1630":2,"1633":1,"1655":2,"1656":1,"1663":2,"1665":5,"1666":2,"1673":1,"1674":2,"1675":6,"1677":1,"1817":1,"1929":3,"1932":2,"1933":5,"1938":4,"1948":10,"2034":10,"2102":4,"2103":6,"2104":6,"2105":1,"2107":4,"2141":1,"2170":1,"2182":1,"2184":1,"2203":1,"2305":1,"2355":4,"2356":2,"2358":13,"2364":1,"2373":11,"2374":10,"2376":10,"2377":10,"2382":6,"2384":1,"2390":4,"2397":1,"2398":1,"2410":16,"2411":2,"2450":2,"2490":4,"2491":4,"2512":4,"2572":2,"2651":1,"2661":3,"2680":6,"2686":1,"2731":6,"2732":3,"2737":2,"2738":1,"2739":3,"2749":1,"2754":2}}],["shore",{"2":{"2750":1}}],["shorting",{"2":{"2279":1,"2529":1}}],["shorts",{"2":{"2270":1,"2272":1}}],["shortcuts",{"0":{"1935":1},"2":{"1361":1,"1363":1,"1655":1,"1656":1,"1676":2,"1677":1,"1935":1,"1943":1,"2183":1,"2319":1,"2397":1,"2410":1,"2738":1}}],["shortcut",{"2":{"1302":1,"1303":1,"1567":2,"1813":1,"2100":1,"2101":1,"2137":1,"2144":1,"2458":1,"2657":1}}],["shortly",{"2":{"575":1,"1675":1,"2152":1}}],["shortest",{"2":{"1416":1}}],["shorted",{"2":{"510":1,"2529":1}}],["shorter",{"2":{"457":1,"1215":1,"1554":1,"1804":1,"2442":1}}],["shortened",{"2":{"202":1,"2632":1}}],["shorten",{"2":{"149":1,"1331":1}}],["shorthands",{"2":{"1953":1,"2058":1}}],["shorthand",{"2":{"199":1,"2479":1,"2614":1}}],["shortages",{"2":{"172":1}}],["short",{"2":{"114":1,"123":1,"134":1,"266":1,"462":1,"466":1,"468":1,"481":1,"540":1,"554":2,"556":1,"616":1,"623":1,"624":1,"660":2,"707":1,"1235":1,"1257":1,"1325":1,"1411":1,"1500":1,"1515":2,"1578":16,"1675":3,"1684":1,"1825":1,"1930":2,"2118":2,"2171":1,"2230":1,"2233":1,"2235":1,"2236":1,"2238":1,"2240":1,"2242":1,"2270":1,"2274":1,"2275":1,"2278":1,"2279":1,"2450":1,"2490":1,"2529":1,"2530":1,"2626":1,"2676":1}}],["shop",{"2":{"2335":1,"2709":1}}],["shooting",{"2":{"2279":1}}],["shot",{"0":{"1274":1,"1307":1,"2379":1,"2490":1,"2691":1},"1":{"2491":1},"2":{"93":1,"160":2,"188":1,"191":1,"194":1,"199":1,"231":1,"503":1,"505":1,"1274":1,"1300":11,"1307":1,"1335":1,"1446":3,"1500":2,"1503":2,"1633":2,"1885":2,"1886":1,"2156":1,"2367":1,"2379":7,"2383":1,"2490":14,"2491":7,"2691":1,"2737":1}}],["showcasing",{"2":{"2566":1}}],["showed",{"2":{"1436":1}}],["shows",{"2":{"300":1,"315":1,"416":1,"523":1,"524":1,"556":1,"1343":1,"1344":1,"1663":1,"1668":1,"2262":2,"2531":1,"2548":1}}],["shown",{"2":{"134":1,"156":1,"506":1,"635":1,"669":1,"790":1,"824":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1132":1,"1133":1,"1148":1,"1268":1,"1597":1,"1601":1,"1605":1,"1658":1,"2045":1,"2147":1,"2148":1,"2268":2,"2490":1,"2595":1,"2728":1,"2735":1}}],["show",{"2":{"83":1,"114":1,"119":1,"176":1,"230":1,"254":1,"375":4,"378":4,"393":1,"394":1,"395":1,"396":2,"402":1,"403":1,"411":1,"433":1,"588":1,"1236":1,"1287":1,"1593":1,"1597":1,"1601":1,"1881":1,"2041":1,"2150":1,"2262":2,"2309":1,"2311":2,"2398":1,"2411":1,"2467":1,"2474":1,"2508":1,"2548":1,"2556":1,"2575":3}}],["showing",{"2":{"70":1,"77":1,"506":1,"1236":1,"1325":1,"2041":1,"2492":1,"2503":1,"2620":1}}],["shouldn",{"2":{"501":1,"575":1,"1287":1,"1312":1,"1439":1,"1824":1,"2128":1,"2273":1,"2566":1}}],["should",{"2":{"3":1,"6":1,"10":2,"11":1,"15":1,"17":1,"49":1,"70":1,"103":1,"125":1,"126":1,"131":2,"156":1,"157":2,"167":1,"182":1,"185":2,"194":1,"198":1,"201":7,"206":1,"234":1,"236":1,"240":1,"245":1,"249":1,"254":1,"268":1,"271":1,"275":1,"278":1,"282":3,"291":1,"303":1,"306":1,"315":3,"319":1,"321":1,"324":1,"332":2,"334":1,"336":1,"341":3,"357":1,"361":1,"407":1,"411":1,"432":2,"434":2,"435":3,"441":1,"447":1,"453":1,"457":2,"460":1,"462":1,"466":2,"468":1,"472":1,"473":1,"476":1,"478":1,"482":1,"498":1,"517":1,"529":6,"530":1,"555":1,"556":3,"559":1,"560":5,"568":1,"571":1,"573":1,"574":1,"580":3,"581":1,"584":1,"585":1,"586":1,"588":1,"597":1,"598":2,"600":1,"609":1,"616":1,"617":2,"622":1,"623":1,"626":1,"627":2,"628":1,"646":1,"660":2,"673":1,"689":1,"691":1,"697":1,"701":1,"726":1,"738":1,"764":1,"794":1,"828":1,"861":1,"895":1,"929":1,"963":1,"997":1,"1031":1,"1065":1,"1099":1,"1121":1,"1128":1,"1132":1,"1133":1,"1152":1,"1177":1,"1236":1,"1237":1,"1238":1,"1242":1,"1243":2,"1258":2,"1266":1,"1271":1,"1284":1,"1292":1,"1314":1,"1326":1,"1332":1,"1339":2,"1346":1,"1348":1,"1351":1,"1359":1,"1379":1,"1380":1,"1385":2,"1393":1,"1396":1,"1404":1,"1416":1,"1423":1,"1435":1,"1440":1,"1445":1,"1446":2,"1457":1,"1469":1,"1499":1,"1501":1,"1506":3,"1518":3,"1519":3,"1548":1,"1551":3,"1553":1,"1554":1,"1559":1,"1561":2,"1596":1,"1637":1,"1670":1,"1715":1,"1723":1,"1817":1,"1871":1,"1873":1,"1894":2,"1895":1,"1898":1,"1901":1,"1922":1,"1944":1,"1948":1,"2032":1,"2034":1,"2037":1,"2065":1,"2071":1,"2118":1,"2120":1,"2128":1,"2130":2,"2149":1,"2150":1,"2152":1,"2162":1,"2169":1,"2243":1,"2262":2,"2273":4,"2276":1,"2277":1,"2279":2,"2295":1,"2296":3,"2297":1,"2299":1,"2302":6,"2305":1,"2306":1,"2309":3,"2311":3,"2330":1,"2332":1,"2334":1,"2347":2,"2349":1,"2353":2,"2409":1,"2422":1,"2425":1,"2427":1,"2441":1,"2450":1,"2457":1,"2460":1,"2464":1,"2466":1,"2469":2,"2477":1,"2479":1,"2506":2,"2508":1,"2513":5,"2517":3,"2519":3,"2526":1,"2530":1,"2550":1,"2551":1,"2553":1,"2556":2,"2557":1,"2561":1,"2564":4,"2565":3,"2566":19,"2567":8,"2570":1,"2574":1,"2576":2,"2577":6,"2592":1,"2596":2,"2598":1,"2600":1,"2605":1,"2679":1,"2686":3,"2699":2,"2702":1,"2723":2,"2725":1,"2728":1,"2752":2,"2755":1,"2757":1}}],["sabayon",{"2":{"2431":1,"2464":1}}],["sasha",{"2":{"2270":1,"2281":1}}],["sag",{"2":{"1300":1}}],["sagr",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["sa",{"2":{"1300":1,"1665":2}}],["salt",{"2":{"2237":1,"2305":1}}],["sall",{"2":{"2112":1}}],["salad",{"2":{"1287":1}}],["salicylic",{"2":{"143":13,"149":2,"211":1}}],["sake",{"2":{"1269":1}}],["sanitisation",{"2":{"1445":1}}],["sanitise",{"2":{"1445":1}}],["sane",{"2":{"659":2}}],["sango",{"2":{"249":1}}],["sacrifices",{"2":{"659":1}}],["says",{"2":{"2255":1,"2450":1,"2752":1}}],["saying",{"2":{"545":1,"2468":1}}],["say",{"2":{"537":1,"1300":1,"1630":1,"2106":1,"2107":1,"2152":1,"2264":1,"2460":1,"2611":1,"2745":1}}],["said",{"2":{"1363":1}}],["sai",{"2":{"530":2,"1948":1,"2377":1}}],["saikoutype",{"2":{"249":1}}],["sadly",{"2":{"2468":1}}],["sad",{"2":{"530":2,"1948":1,"2377":1}}],["sawnsprojects",{"2":{"211":2,"249":1}}],["sauce",{"2":{"211":1}}],["saevus",{"2":{"211":1}}],["safemode",{"2":{"2347":1}}],["safest",{"2":{"1560":1}}],["safety",{"0":{"1287":1,"2166":1},"2":{"2128":1,"2166":1}}],["safe",{"2":{"199":1,"229":2,"534":1,"557":1,"570":3,"1359":3,"1375":1,"1385":5,"1792":1,"1830":1,"1879":1,"1880":1,"1899":1,"1935":1,"1943":1,"2437":2,"2728":1}}],["safely",{"2":{"31":1,"34":1,"240":1,"587":1,"1815":1,"2139":1,"2348":1,"2468":1,"2480":1}}],["saves",{"2":{"1863":1,"1876":1,"2480":2}}],["save",{"0":{"541":1},"2":{"249":1,"440":1,"503":1,"541":1,"589":1,"1332":1,"1384":1,"1406":1,"1451":1,"1515":1,"1655":1,"2039":1,"2128":1,"2277":1,"2349":1,"2429":2,"2436":1,"2437":1,"2457":2,"2474":1,"2476":1,"2480":1,"2506":1,"2511":1,"2702":1,"2707":1}}],["saved",{"2":{"131":1,"393":1,"394":1,"1243":1,"1332":1,"1495":1}}],["saving",{"2":{"131":1,"134":1,"582":3,"606":1,"2615":1}}],["savings",{"2":{"25":1,"2702":1}}],["sata",{"2":{"2118":1}}],["satan",{"2":{"370":2,"401":2,"2453":1}}],["satu",{"2":{"1559":1,"2034":1,"2376":1}}],["saturation",{"2":{"111":1,"114":1,"506":1,"1948":4,"1949":6,"1954":1,"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"1995":1,"2012":1,"2013":1,"2014":1,"2015":1,"2016":1,"2033":2,"2034":6,"2035":2,"2054":8,"2376":6,"2377":4,"2577":2,"2597":1,"2694":3,"2695":2}}],["satd",{"2":{"1559":1,"2034":1,"2376":1}}],["satisfied",{"2":{"541":1,"2728":1,"2729":1}}],["satisfaction75",{"2":{"134":2,"199":1,"249":1}}],["satellite",{"2":{"191":1,"211":1}}],["satt99",{"2":{"149":1}}],["satt",{"2":{"143":1,"149":1,"176":1}}],["sat",{"0":{"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"2054":1},"1":{"1995":1},"2":{"49":1,"183":2,"222":3,"292":1,"315":2,"506":1,"1949":12,"1954":1,"2035":2,"2039":1,"2054":4,"2057":2,"2299":2,"2577":11,"2694":1,"2695":2,"2708":3}}],["sampling",{"2":{"149":1,"641":2,"2226":1}}],["sampled",{"2":{"1326":1}}],["samples",{"2":{"659":2,"1393":1,"1401":1,"1637":1}}],["sample",{"2":{"31":1,"176":1,"222":1,"659":6,"660":4,"1181":4,"1393":6,"1401":4,"1415":1,"1439":1,"1650":1,"1907":1,"1910":3,"2226":6,"2317":1}}],["same",{"2":{"27":1,"45":2,"73":1,"157":1,"166":1,"169":1,"222":1,"234":1,"235":1,"279":1,"313":1,"401":1,"453":2,"462":1,"496":1,"511":2,"522":1,"529":2,"540":1,"541":1,"546":1,"597":1,"600":1,"607":1,"628":1,"635":1,"662":1,"688":1,"691":1,"734":1,"760":1,"790":1,"824":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1129":1,"1148":1,"1215":1,"1260":2,"1275":1,"1283":1,"1284":1,"1300":1,"1312":2,"1326":1,"1338":1,"1341":1,"1352":2,"1355":1,"1376":1,"1377":1,"1378":2,"1379":1,"1383":1,"1414":1,"1446":1,"1451":3,"1459":2,"1501":1,"1511":1,"1514":1,"1517":1,"1518":3,"1524":2,"1527":2,"1551":1,"1554":1,"1562":1,"1676":1,"1683":1,"1723":1,"1725":1,"1728":4,"1802":1,"1803":1,"1807":3,"1808":1,"1821":1,"1870":3,"1886":1,"1911":1,"1915":1,"1921":1,"1934":3,"1944":1,"1946":1,"1948":1,"1949":5,"2034":1,"2044":1,"2059":1,"2105":1,"2114":1,"2131":1,"2146":1,"2155":1,"2162":2,"2169":1,"2182":1,"2231":1,"2238":1,"2243":1,"2250":1,"2252":1,"2262":1,"2269":1,"2272":1,"2273":1,"2289":1,"2295":2,"2299":1,"2303":2,"2309":1,"2344":1,"2405":1,"2440":1,"2441":1,"2445":2,"2450":1,"2460":1,"2473":2,"2474":1,"2477":1,"2478":1,"2525":1,"2548":1,"2550":3,"2552":1,"2564":1,"2566":4,"2574":1,"2575":4,"2576":2,"2590":1,"2605":1,"2615":1,"2663":1,"2686":1,"2703":1,"2735":1,"2744":1,"2753":1}}],["sprintf",{"2":{"2702":2,"2707":2}}],["springgreen",{"2":{"1953":2,"2058":2}}],["spring",{"2":{"1577":1}}],["springs",{"2":{"1577":1}}],["spread",{"2":{"1950":2,"2326":1}}],["spreads",{"2":{"1950":1}}],["spruce",{"2":{"222":1}}],["splash",{"2":{"1728":3,"1949":6,"2708":2}}],["splaytoraid",{"2":{"266":1}}],["splicing",{"2":{"1399":1}}],["splinky",{"2":{"176":1,"2545":1}}],["splitting",{"0":{"354":1}}],["splitty",{"2":{"253":2}}],["split75",{"2":{"159":2}}],["splitreus62",{"2":{"143":2}}],["splitkb",{"2":{"102":1,"114":1,"134":2,"211":1,"222":1,"277":1}}],["split",{"0":{"30":1,"32":1,"35":1,"80":1,"107":1,"138":1,"508":1,"1496":1,"1558":1,"1873":1,"1875":1,"1881":1,"2114":1,"2271":1,"2543":1,"2697":1},"1":{"31":1,"36":1,"509":1,"510":1,"511":1,"1882":1,"1883":1,"2115":1,"2116":1,"2117":1,"2118":1,"2119":1,"2120":1,"2121":1,"2122":1,"2123":1,"2124":1,"2125":1,"2126":1,"2127":1,"2128":1,"2129":1,"2130":1,"2131":1,"2132":1,"2133":1,"2134":1},"2":{"30":3,"32":2,"45":3,"65":2,"70":28,"74":3,"80":1,"92":2,"93":4,"94":1,"107":7,"111":1,"112":10,"114":13,"134":4,"138":1,"143":8,"149":10,"160":3,"175":1,"176":15,"191":7,"199":3,"211":7,"222":9,"236":5,"249":4,"253":2,"259":5,"260":2,"266":8,"270":2,"277":11,"502":1,"506":6,"508":5,"509":8,"510":7,"511":26,"515":5,"611":2,"1121":2,"1126":2,"1127":1,"1134":1,"1316":1,"1317":1,"1319":2,"1321":1,"1330":1,"1346":1,"1352":3,"1405":1,"1496":3,"1547":1,"1558":3,"1714":2,"1730":3,"1816":2,"1817":1,"1863":1,"1866":1,"1870":1,"1872":1,"1873":1,"1875":1,"1881":1,"1900":1,"1954":3,"1958":2,"1959":2,"2032":2,"2035":2,"2042":4,"2044":2,"2060":1,"2114":4,"2118":2,"2121":1,"2122":2,"2124":1,"2125":3,"2126":10,"2127":1,"2128":5,"2129":21,"2130":4,"2131":14,"2132":3,"2133":2,"2134":2,"2140":2,"2157":1,"2225":1,"2232":3,"2234":3,"2241":3,"2246":2,"2248":2,"2263":9,"2271":2,"2284":1,"2303":1,"2370":2,"2396":2,"2543":1,"2559":1,"2566":1,"2567":1,"2672":1,"2688":2,"2694":4,"2695":2,"2697":5,"2725":1}}],["splits",{"2":{"18":1,"35":1,"114":1}}],["sponge",{"2":{"2272":1}}],["spots",{"2":{"546":1}}],["spot",{"2":{"251":1,"540":2,"592":1,"2408":1}}],["spooky",{"2":{"176":1}}],["sp111",{"2":{"211":1}}],["spc",{"2":{"195":1,"266":1,"313":2,"530":2,"1499":1,"1527":2,"2161":3,"2355":1,"2388":1,"2407":2,"2727":1,"2728":1,"2737":1,"2738":4}}],["spdx",{"2":{"2570":2}}],["spdu",{"2":{"1559":1,"1727":1,"2034":1,"2369":1,"2376":1}}],["spdd",{"2":{"1559":1,"1727":1,"2034":1,"2369":1,"2376":1}}],["spd",{"2":{"183":4,"222":1,"1730":1,"1948":1,"1951":1,"1954":1,"2035":1,"2377":1}}],["spacing",{"2":{"2437":1,"2565":1}}],["space+b",{"2":{"626":1}}],["spaces",{"0":{"546":1},"2":{"292":1,"416":1,"453":2,"455":1,"519":1,"521":1,"527":2,"2131":1,"2558":1,"2565":1,"2713":1,"2746":1}}],["spacebars",{"2":{"259":1}}],["spacebar",{"2":{"259":1,"2305":1,"2355":1,"2388":1,"2450":1}}],["spacey",{"0":{"255":1},"2":{"241":2,"255":1,"266":1}}],["spaceholdings",{"2":{"143":3,"149":2,"253":2,"266":1}}],["space",{"0":{"123":1,"2102":1,"2382":1,"2661":1},"1":{"2103":1,"2104":1,"2105":1,"2106":1,"2107":1},"2":{"49":2,"123":1,"124":3,"134":1,"143":8,"166":1,"176":3,"188":1,"189":1,"191":2,"203":1,"211":2,"249":1,"255":1,"259":1,"260":1,"486":1,"530":1,"546":2,"612":1,"660":1,"1336":1,"1384":1,"1403":1,"1406":1,"1441":1,"1451":1,"1499":1,"1500":1,"1554":1,"1584":1,"1655":1,"2037":1,"2102":1,"2104":7,"2105":1,"2106":3,"2107":3,"2149":1,"2161":2,"2182":1,"2197":1,"2226":1,"2228":1,"2355":1,"2382":8,"2388":1,"2411":1,"2428":1,"2514":1,"2578":1,"2661":1,"2706":2,"2707":2,"2708":1,"2711":1,"2724":1,"2749":1}}],["spaceman",{"2":{"37":4}}],["span",{"2":{"1921":1}}],["spanish",{"2":{"176":1,"249":1,"1355":3,"1499":1,"2712":9}}],["spamming",{"2":{"222":1,"2757":1}}],["spare",{"2":{"218":1,"1386":1}}],["sparkfun",{"0":{"271":1,"1318":1,"2335":1},"1":{"2336":1},"2":{"163":1,"176":1,"271":3,"277":1,"487":1,"684":3,"1311":1,"1315":4,"1491":2,"2329":1,"2331":1,"2335":3,"2344":4,"2541":2,"2709":1}}],["sp",{"2":{"134":1,"211":1}}],["spi0",{"2":{"2537":2}}],["spiral",{"2":{"1728":4,"1949":12,"2708":3}}],["spid0",{"2":{"2537":1,"2541":1}}],["spid2",{"2":{"1177":2}}],["spid1",{"2":{"1177":1,"1226":1,"2537":1}}],["spiderisland",{"2":{"143":1}}],["spidey3",{"2":{"74":1,"176":1,"191":1}}],["spi3",{"2":{"1177":1}}],["spi2",{"2":{"1177":4}}],["spi1",{"2":{"1177":2,"1226":2,"2537":2}}],["spinning",{"2":{"1728":3,"1948":1,"1949":9}}],["spins",{"2":{"1576":1}}],["spin",{"2":{"176":1}}],["spi",{"0":{"685":1,"690":1,"694":1,"1174":1,"1179":1,"1180":1,"1183":2,"1186":2,"1188":2,"1191":2,"1194":1,"1223":1,"1226":1,"1492":1,"1819":1,"2537":1},"1":{"1175":1,"1176":1,"1177":1,"1178":1,"1179":1,"1180":1,"1181":2,"1182":2,"1183":1,"1184":3,"1185":3,"1186":1,"1187":3,"1188":1,"1189":3,"1190":3,"1191":1,"1192":3,"1193":3,"1194":1,"1227":1,"1228":1},"2":{"93":1,"114":2,"118":2,"134":1,"149":2,"174":1,"176":9,"210":1,"232":1,"234":4,"236":5,"277":2,"664":1,"665":1,"666":4,"668":1,"681":3,"685":9,"688":2,"690":2,"693":1,"694":6,"1174":1,"1175":3,"1176":3,"1177":26,"1179":1,"1180":1,"1181":4,"1182":1,"1183":1,"1185":2,"1186":1,"1187":1,"1188":1,"1190":3,"1191":1,"1193":3,"1194":2,"1218":1,"1223":4,"1226":12,"1227":2,"1228":1,"1491":3,"1492":5,"1811":1,"1813":2,"1819":4,"1856":8,"1862":2,"1863":9,"1870":4,"1948":1,"1951":1,"2136":1,"2141":2,"2276":1,"2377":1,"2518":3,"2528":1,"2531":2,"2534":1,"2537":4,"2541":6,"2544":1,"2564":1,"2573":22,"2576":63,"2683":2,"2700":2}}],["spent",{"2":{"2745":1}}],["spend",{"2":{"173":1,"1438":1,"2569":1}}],["speaks",{"2":{"2146":1}}],["speak",{"2":{"2146":2}}],["speakers",{"2":{"655":1,"656":1,"1397":1,"2301":1}}],["speaker",{"2":{"655":3,"1386":1,"1387":3,"1388":1,"1390":2,"1394":1,"1396":1,"1397":1,"1399":5,"2074":1,"2231":2,"2238":2,"2528":1,"2530":2,"2676":3,"2693":2}}],["spelled",{"2":{"1441":1}}],["spelling",{"2":{"49":1,"92":1,"1361":2,"2144":1}}],["specially",{"2":{"1941":1}}],["specialized",{"2":{"493":1,"1220":1,"2346":1}}],["special",{"0":{"1277":1,"1291":1,"1417":1,"1429":1,"2395":1},"2":{"222":1,"423":1,"432":1,"505":1,"567":1,"587":1,"625":1,"707":1,"1176":1,"1197":1,"1212":1,"1335":1,"1386":1,"1403":1,"1415":1,"1416":2,"1417":1,"1418":1,"1423":1,"1440":1,"1445":1,"1633":1,"1733":1,"1878":1,"1957":1,"2031":1,"2073":1,"2149":1,"2182":1,"2276":1,"2329":1,"2333":1,"2402":1,"2407":1,"2450":2,"2515":1,"2566":1,"2571":1,"2606":1,"2627":1,"2661":1,"2727":1,"2728":1}}],["specifed",{"2":{"1341":6}}],["specifying",{"2":{"76":1,"87":1,"103":1,"118":1,"126":1,"166":1,"170":2,"211":1,"246":1,"247":1,"279":1,"414":1,"474":1,"689":2,"1336":2,"1369":1,"2252":1,"2454":1,"2575":1}}],["specify",{"2":{"55":1,"87":1,"134":1,"169":1,"184":1,"201":1,"234":1,"313":1,"371":1,"418":1,"430":1,"474":1,"505":1,"511":2,"513":2,"611":1,"1129":1,"1136":1,"1287":1,"1332":1,"1349":1,"1440":1,"1495":2,"1525":1,"1558":1,"1573":1,"1722":1,"1820":1,"1853":1,"1859":2,"2044":1,"2059":1,"2131":3,"2160":1,"2161":1,"2262":1,"2263":1,"2264":1,"2295":1,"2347":1,"2422":1,"2425":1,"2454":1,"2479":1,"2530":1,"2539":1,"2557":2,"2575":7,"2593":1,"2757":1}}],["specifig",{"2":{"1906":1}}],["specifiers",{"2":{"2702":1}}],["specifies",{"2":{"1326":1,"1662":1,"1665":1,"1868":1,"2262":1,"2566":1,"2596":2,"2671":1}}],["specified",{"0":{"141":1},"2":{"49":1,"58":1,"70":14,"109":1,"149":1,"184":1,"371":2,"383":1,"384":1,"400":1,"506":1,"513":2,"596":1,"638":2,"639":3,"684":2,"685":1,"694":5,"1221":1,"1326":1,"1341":6,"1357":1,"1361":1,"1558":1,"1603":1,"1659":1,"1729":1,"1822":1,"1933":1,"1952":1,"2044":2,"2124":1,"2143":1,"2152":1,"2161":2,"2183":1,"2226":2,"2245":1,"2247":1,"2249":1,"2262":6,"2299":1,"2347":1,"2398":1,"2411":2,"2454":2,"2468":1,"2491":1,"2513":2,"2566":1,"2575":7,"2576":3,"2587":1,"2590":1,"2593":1,"2673":2,"2686":1}}],["specifics",{"2":{"654":1,"1227":1,"1243":1}}],["specifications",{"2":{"1859":2}}],["specification",{"0":{"1792":1,"1796":1},"2":{"169":1,"182":1,"184":1,"1272":1,"1791":1,"1921":1,"2315":1,"2571":1}}],["specifically",{"2":{"107":1,"2269":1,"2485":1,"2548":1,"2585":1,"2592":1,"2740":1}}],["specific",{"0":{"1381":1,"2276":1,"2710":1},"1":{"2711":1,"2712":1},"2":{"5":1,"21":1,"49":1,"74":2,"77":1,"94":1,"113":1,"114":2,"118":1,"124":1,"133":3,"134":3,"176":2,"191":2,"199":1,"211":2,"324":1,"370":1,"374":1,"400":1,"457":1,"508":1,"552":1,"609":1,"626":1,"636":1,"641":1,"661":1,"687":1,"697":1,"703":1,"726":1,"1134":1,"1280":1,"1300":2,"1316":1,"1317":1,"1351":1,"1377":1,"1379":1,"1385":3,"1402":1,"1576":1,"1577":2,"1579":1,"1581":1,"1630":1,"1670":1,"1729":1,"1822":2,"1824":2,"1859":1,"1871":1,"1886":1,"1908":1,"1948":1,"1952":1,"1959":1,"2034":1,"2075":1,"2114":1,"2143":1,"2162":1,"2169":1,"2230":1,"2246":1,"2248":1,"2259":2,"2262":1,"2263":1,"2280":1,"2304":1,"2320":1,"2327":1,"2450":1,"2502":1,"2513":1,"2535":1,"2564":1,"2565":3,"2566":4,"2577":2,"2581":1,"2583":1,"2601":1,"2603":1,"2612":1,"2616":2,"2671":3,"2708":1,"2710":1,"2712":1,"2728":1,"2744":1,"2749":1,"2754":1}}],["specs",{"2":{"114":1}}],["spec",{"2":{"114":1,"533":1,"1714":1,"1876":4,"2120":1,"2710":1}}],["speeds",{"2":{"511":1,"1798":1,"1802":2,"1805":3,"1806":2,"1822":1,"2040":1,"2064":1}}],["speedo",{"0":{"56":1},"2":{"56":6}}],["speed",{"0":{"1763":1,"1764":1,"1765":1,"1766":1,"1767":2,"1769":2,"1771":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":2,"2008":2,"2010":1,"2040":1,"2055":1},"1":{"1768":2,"1770":2,"1772":1,"2007":2,"2009":2,"2011":1},"2":{"49":3,"112":2,"114":1,"198":1,"222":1,"370":1,"502":1,"507":1,"511":4,"704":1,"1136":4,"1181":2,"1223":1,"1326":1,"1385":1,"1400":1,"1403":1,"1727":4,"1728":2,"1730":1,"1763":1,"1764":1,"1765":1,"1766":1,"1767":1,"1768":2,"1769":1,"1770":2,"1771":1,"1772":1,"1793":4,"1802":6,"1803":8,"1804":14,"1805":12,"1806":4,"1807":5,"1817":1,"1822":3,"1856":2,"1857":2,"1863":2,"1870":3,"1880":2,"1911":1,"1948":4,"1949":5,"1951":1,"1954":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2007":2,"2008":1,"2009":2,"2010":1,"2011":1,"2034":6,"2035":1,"2055":12,"2057":2,"2062":2,"2063":2,"2064":1,"2111":1,"2128":2,"2129":1,"2314":1,"2348":1,"2355":1,"2369":4,"2371":4,"2376":6,"2377":4,"2688":4,"2690":1,"2694":2,"2695":4,"2697":2}}],["stsw",{"2":{"2351":1}}],["stk500v1",{"2":{"2331":1}}],["stk500",{"2":{"2331":1}}],["st4",{"2":{"2153":1}}],["st3",{"2":{"2153":1}}],["st2",{"2":{"2153":1}}],["st1",{"2":{"2153":1}}],["st110r2",{"2":{"249":1}}],["stn",{"2":{"2152":5,"2153":113}}],["stmc",{"2":{"1319":2}}],["stm",{"2":{"1319":1}}],["stmicroelectronics",{"0":{"489":1},"2":{"331":1}}],["stm32cubemx",{"2":{"1227":1}}],["stm32s",{"2":{"661":1}}],["stm32h733",{"2":{"489":1}}],["stm32h723",{"2":{"222":1,"489":1}}],["stm32duino",{"0":{"2242":1,"2350":1},"1":{"2351":1,"2352":1,"2353":1},"2":{"114":1,"489":1,"629":1,"2240":1,"2242":2,"2350":1}}],["stm32f2",{"2":{"1396":1}}],["stm32f2xx",{"2":{"704":1}}],["stm32f7xx",{"2":{"705":1}}],["stm32f070",{"2":{"692":1}}],["stm32f072xb",{"2":{"681":1}}],["stm32f072",{"0":{"1141":1},"2":{"50":1,"191":1,"692":1}}],["stm32f042",{"2":{"692":1,"2240":1}}],["stm32f0",{"2":{"639":1}}],["stm32f0x2",{"2":{"489":1}}],["stm32f0xx",{"2":{"199":1,"635":1,"688":1,"692":1,"705":1}}],["stm32f1x",{"2":{"2353":2}}],["stm32f1xx",{"2":{"93":1,"635":2,"681":1,"704":1,"1390":1,"1394":1,"1396":1}}],["stm32f103c8",{"2":{"656":1,"661":2,"663":1}}],["stm32f103c6",{"2":{"176":1}}],["stm32f103x",{"2":{"635":1}}],["stm32f103",{"0":{"1142":1},"2":{"199":1,"489":1,"495":1,"1127":1,"1129":1,"1130":1,"1142":1,"2240":1,"2242":1,"2327":1,"2350":1,"2353":1}}],["stm32f3discovery",{"2":{"335":2}}],["stm32f303xc",{"2":{"2269":1,"2527":1,"2548":2}}],["stm32f303xe",{"2":{"160":1}}],["stm32f303",{"0":{"1140":1},"2":{"385":1,"489":1,"495":1,"703":1,"1129":1,"1177":1,"1198":1,"1469":1,"1573":1,"2513":2,"2530":1,"2553":1}}],["stm32f303cct6",{"2":{"663":1,"2528":1}}],["stm32f303cc",{"2":{"331":1}}],["stm32f3",{"2":{"222":1,"331":2,"335":1,"639":1}}],["stm32f3xx",{"2":{"93":1,"635":1,"681":1,"705":1}}],["stm32f4x1",{"0":{"2514":1},"1":{"2515":1,"2516":1,"2517":1,"2518":1,"2519":1,"2520":1,"2521":1,"2522":1},"2":{"688":1,"692":1}}],["stm32f4xx",{"2":{"93":1,"635":2,"704":1}}],["stm32f411",{"2":{"374":2,"489":1,"692":1}}],["stm32f407",{"2":{"489":1}}],["stm32f407x",{"2":{"114":1}}],["stm32f405vg",{"2":{"663":1}}],["stm32f405",{"2":{"489":1}}],["stm32f405rg",{"2":{"277":1}}],["stm32f401",{"2":{"489":1,"692":1}}],["stm32f446",{"2":{"93":1,"489":1}}],["stm32l1xx",{"2":{"681":1,"704":1}}],["stm32l073rz",{"2":{"2566":1}}],["stm32l072",{"2":{"2550":1}}],["stm32l0",{"2":{"683":1}}],["stm32l0xx",{"2":{"681":1,"704":1}}],["stm32l082kz",{"2":{"2566":1}}],["stm32l082",{"2":{"49":1,"2550":1}}],["stm32l443",{"2":{"489":1}}],["stm32l442",{"2":{"145":1,"149":1,"489":1}}],["stm32l422",{"2":{"489":1}}],["stm32l422xb",{"2":{"114":1}}],["stm32l412",{"2":{"489":1}}],["stm32l412xb",{"2":{"114":1}}],["stm32l4xx",{"2":{"249":1,"705":1}}],["stm32l432",{"2":{"145":1,"149":1,"236":1,"489":1}}],["stm32l433",{"2":{"93":1,"489":1}}],["stm32l4+",{"2":{"49":1}}],["stm32g431",{"2":{"77":1,"489":1}}],["stm32g4xx",{"2":{"74":1,"249":1}}],["stm32g474",{"2":{"49":1,"77":1,"489":1}}],["stm32g4",{"2":{"49":1}}],["stm32",{"0":{"489":1,"635":1,"683":1,"1139":1,"2240":1,"2548":1,"2549":1,"2550":1,"2551":1},"1":{"1140":1,"1141":1,"1142":1,"2241":1},"2":{"49":4,"50":2,"65":1,"114":1,"131":1,"133":1,"134":5,"176":3,"211":1,"222":1,"277":1,"629":2,"656":1,"657":10,"658":6,"661":2,"683":1,"697":1,"703":7,"707":4,"1127":2,"1129":1,"1130":2,"1132":4,"1133":4,"1177":3,"1198":3,"1226":3,"1227":1,"1230":6,"1316":1,"1390":2,"1396":1,"1469":3,"1470":3,"1636":1,"1821":1,"2240":3,"2241":1,"2243":1,"2327":1,"2350":1,"2353":1,"2450":1,"2524":8,"2530":1,"2546":1,"2548":8,"2549":2,"2550":2,"2673":1,"2683":1}}],["stylus",{"2":{"1531":1,"1863":1}}],["styling",{"0":{"287":1},"1":{"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1},"2":{"243":1,"279":1}}],["styled",{"0":{"618":1},"1":{"619":1,"620":1},"2":{"618":1}}],["styles",{"2":{"468":1,"555":1,"560":1,"1234":1,"2750":1}}],["style=file",{"2":{"454":1}}],["style",{"0":{"243":1},"2":{"133":1,"134":1,"176":1,"199":1,"243":1,"265":1,"279":2,"432":1,"433":6,"435":2,"436":2,"438":2,"439":2,"453":9,"455":1,"456":1,"467":1,"470":2,"555":1,"560":2,"615":1,"1866":1,"2172":1,"2344":1,"2506":2}}],["st7789",{"2":{"2573":2,"2576":8}}],["st7735",{"2":{"176":1,"236":1,"2573":2,"2576":8}}],["st7565p",{"2":{"2136":1}}],["st7565r",{"2":{"2136":1}}],["st7565",{"0":{"2135":1},"1":{"2136":1,"2137":1,"2138":1,"2139":1,"2140":1,"2141":1,"2142":1,"2143":1},"2":{"114":5,"191":1,"511":2,"2129":2,"2136":1,"2137":11,"2138":1,"2139":4,"2140":3,"2141":13,"2142":11,"2143":39,"2697":2}}],["std",{"2":{"704":1}}],["stdlayout",{"2":{"358":1}}],["stderr",{"2":{"316":1,"2755":1}}],["stdout",{"2":{"316":1}}],["stdint",{"2":{"176":1}}],["stdbool",{"2":{"73":1}}],["stilgar",{"2":{"2270":1}}],["still",{"2":{"16":1,"124":2,"125":1,"156":1,"170":1,"185":1,"191":2,"203":1,"228":3,"232":1,"241":1,"253":1,"270":1,"273":1,"278":1,"308":1,"361":1,"435":1,"454":1,"467":1,"504":1,"510":1,"684":1,"692":1,"1243":1,"1284":1,"1288":1,"1303":2,"1385":1,"1403":1,"1404":1,"1412":1,"1416":1,"1446":1,"1555":1,"1562":1,"1582":3,"1659":1,"1674":2,"1684":1,"1923":1,"2106":1,"2152":1,"2161":1,"2169":3,"2273":2,"2311":1,"2441":3,"2455":1,"2477":1,"2577":1,"2670":1,"2702":1,"2709":1,"2710":1,"2721":1,"2726":1,"2728":2,"2729":1,"2735":1}}],["sticky",{"2":{"2280":1,"2490":1,"2654":1}}],["stick",{"2":{"1346":1,"1401":1,"1857":1}}],["stickandgum",{"2":{"114":1}}],["steve",{"2":{"2102":1,"2750":1}}],["stef9998",{"2":{"253":2}}],["steadily",{"2":{"251":1}}],["steal",{"2":{"143":2}}],["stello65",{"2":{"211":1}}],["stella",{"2":{"143":2}}],["stemcell",{"0":{"1319":1,"1323":2},"2":{"176":1,"1311":2,"1315":4,"1319":3,"1322":4,"1323":1,"2709":1}}],["stenographers",{"2":{"2144":1}}],["stenography",{"0":{"2144":1,"2151":1,"2698":1},"1":{"2145":1,"2146":1,"2147":1,"2148":1,"2149":1,"2150":1,"2151":1,"2152":1,"2153":1},"2":{"2144":2,"2146":2,"2148":1,"2149":2,"2150":2,"2151":1,"2698":3,"2725":1}}],["stenotype",{"2":{"1943":1,"2150":1}}],["stenothe",{"2":{"197":1}}],["steno",{"0":{"2146":1,"2150":1},"1":{"2147":1,"2148":1,"2149":1},"2":{"114":1,"176":4,"199":1,"231":3,"236":1,"249":1,"2063":1,"2144":2,"2145":1,"2146":5,"2147":4,"2148":2,"2149":10,"2150":4,"2151":1,"2152":13,"2153":2,"2698":1,"2749":1}}],["stepping",{"2":{"194":1,"1406":2}}],["steps",{"0":{"543":1},"2":{"111":3,"191":1,"211":1,"222":2,"231":1,"255":1,"536":1,"574":1,"1124":1,"1127":1,"1130":1,"1132":1,"1133":1,"1310":1,"1330":1,"1406":1,"1803":1,"1805":8,"1812":1,"1827":1,"2035":3,"2038":2,"2040":6,"2063":1,"2109":2,"2110":1,"2111":2,"2112":4,"2113":6,"2137":1,"2421":1,"2437":1,"2438":1,"2455":1,"2477":1,"2497":1,"2688":4,"2694":6,"2695":8,"2718":1,"2753":1}}],["step",{"0":{"536":2,"537":1,"538":1,"539":1,"540":1,"541":1,"542":1,"1476":1,"1751":1,"1752":1,"1753":1,"1754":1,"1978":1,"1979":1,"1980":1,"1981":1,"2109":1,"2190":1,"2191":1},"1":{"537":2,"538":2,"539":2,"540":2,"541":2,"542":2,"543":2},"2":{"49":1,"63":1,"222":2,"292":2,"313":1,"506":6,"570":1,"606":1,"1127":2,"1130":2,"1435":2,"1456":2,"1573":3,"1729":2,"1802":2,"1803":2,"1804":2,"1808":2,"1950":1,"1952":2,"2035":3,"2038":2,"2039":2,"2052":4,"2108":1,"2110":1,"2112":4,"2113":16,"2171":1,"2255":1,"2268":1,"2281":2,"2299":6,"2341":1,"2349":1,"2360":2,"2408":1,"2422":1,"2424":1,"2427":2,"2430":1,"2436":1,"2437":1,"2439":1,"2477":1,"2481":1,"2497":2,"2548":1,"2702":1,"2749":1}}],["story",{"2":{"453":1,"455":1}}],["stores",{"2":{"688":1,"1303":1,"1326":1,"1451":1,"2748":1}}],["store",{"2":{"436":1,"519":2,"554":1,"588":2,"689":1,"690":1,"691":1,"1303":1,"1331":1,"1332":1,"1438":1,"1553":1,"1830":4,"1880":1,"2106":1,"2428":1,"2441":1,"2445":2,"2446":1,"2544":1,"2757":1}}],["stored",{"0":{"2444":1},"2":{"228":2,"431":1,"510":1,"1270":1,"1300":1,"1331":1,"1439":1,"1446":1,"1451":1,"1530":1,"1594":1,"1794":1,"1821":1,"1830":1,"2149":1,"2181":1,"2303":1,"2401":1,"2428":1,"2441":1,"2452":1,"2574":1}}],["storing",{"2":{"224":1,"1438":1,"1451":1,"2441":1}}],["storage",{"0":{"1731":1,"1955":1,"2610":1},"2":{"93":1,"131":1,"304":1,"686":1,"688":1,"689":2,"690":1,"691":3,"692":1,"2126":1,"2252":1,"2506":1,"2539":1,"2574":1,"2610":1,"2683":1}}],["stone",{"2":{"194":1}}],["stock",{"2":{"114":1,"318":1,"509":1,"510":1,"2126":1,"2565":1,"2709":1}}],["stopped",{"2":{"592":2,"1556":1,"2577":1}}],["stopping",{"2":{"211":1,"515":1,"589":1,"654":1,"1340":1,"1578":1}}],["stops",{"2":{"529":1,"1298":1,"1499":1,"1803":1,"1804":2,"1807":2,"1822":1,"2054":8,"2226":1,"2403":1,"2577":1,"2582":1}}],["stop",{"0":{"1194":1,"2472":1},"2":{"74":1,"134":1,"160":1,"176":1,"222":1,"277":1,"660":1,"1403":2,"1448":1,"1506":1,"1553":2,"1793":1,"1807":1,"1907":1,"2044":1,"2051":2,"2112":1,"2113":1,"2131":1,"2150":1,"2280":1,"2355":6,"2363":1,"2370":1,"2371":1,"2392":2,"2393":4,"2396":1,"2577":6}}],["sturdy",{"2":{"2273":1,"2274":1}}],["stumbled",{"2":{"545":1}}],["stub",{"2":{"236":1}}],["stubs",{"2":{"114":1,"2751":1}}],["stuck",{"0":{"1275":1},"2":{"211":1,"222":1,"263":1,"1275":1,"1404":1,"1894":1}}],["studiokestra",{"2":{"226":2}}],["studios",{"2":{"211":1}}],["studio",{"0":{"2503":1,"2513":1},"2":{"67":3,"132":1,"207":4,"211":16,"249":1,"2503":1,"2506":1,"2513":1}}],["stuff",{"2":{"50":2,"114":1,"231":2,"575":1,"578":1,"1376":2,"1377":2,"1511":1,"2262":1,"2405":1,"2702":1}}],["stlink",{"2":{"49":1,"2241":1,"2351":3,"2353":3}}],["st",{"2":{"49":1,"266":1,"327":2,"1403":2,"1469":1,"2241":6,"2350":1,"2351":3,"2352":2,"2353":7,"2566":1,"2622":1}}],["stapelberg",{"2":{"2502":2}}],["stay",{"2":{"2344":1}}],["staying",{"2":{"2276":1}}],["stays",{"2":{"199":1,"1332":1,"1411":1,"1573":1}}],["staging",{"2":{"2480":2}}],["staggering",{"2":{"1384":1}}],["staggered",{"2":{"211":1,"2274":1}}],["stage2",{"2":{"176":1}}],["stage",{"0":{"2544":1},"2":{"119":1,"156":1,"2513":1,"2523":1,"2526":1,"2544":1}}],["stabilisers",{"2":{"2266":1,"2267":1}}],["stability",{"0":{"1827":1},"2":{"1562":1}}],["stabilizes",{"2":{"1827":1}}],["stabilize",{"2":{"176":1,"191":1}}],["stable",{"2":{"211":1,"350":1,"1827":2}}],["stackexchange",{"2":{"1471":1}}],["stacked",{"2":{"222":1}}],["stacktrace",{"2":{"466":1}}],["stack",{"2":{"199":2,"222":1,"302":2,"487":1,"504":1,"1334":1,"1335":2,"1340":1,"1890":1,"1894":2,"1898":2,"1901":3,"2150":1,"2172":1,"2401":1,"2403":1,"2496":1}}],["stale",{"2":{"191":1}}],["stands",{"2":{"2533":1}}],["stand",{"2":{"1249":1}}],["standpoint",{"2":{"569":1,"1265":2}}],["standing",{"2":{"154":1}}],["standalone",{"2":{"643":1,"665":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1175":1,"1196":1,"1213":1}}],["standaside",{"2":{"143":2,"149":1}}],["standards",{"2":{"244":1,"266":1,"1121":1,"1265":1,"1346":1,"2566":1,"2719":1}}],["standardisation",{"2":{"238":1}}],["standardised",{"2":{"198":1,"2573":1}}],["standardise",{"2":{"149":1,"182":1}}],["standardizing",{"2":{"557":1}}],["standardization",{"2":{"236":1,"266":2}}],["standardized",{"2":{"134":1}}],["standard",{"2":{"125":2,"134":1,"163":1,"176":3,"185":2,"191":1,"199":1,"220":2,"266":1,"431":1,"454":1,"457":1,"479":1,"508":1,"515":2,"697":1,"1177":1,"1268":1,"1403":3,"1633":1,"1673":1,"1674":1,"1675":1,"1720":2,"1863":1,"1885":1,"2144":1,"2145":2,"2146":2,"2148":1,"2177":1,"2262":1,"2263":2,"2331":1,"2397":1,"2512":1,"2545":1,"2566":4,"2571":1,"2577":1,"2581":1,"2619":1,"2624":1,"2657":2,"2658":1,"2702":1}}],["star",{"2":{"629":1,"1686":2,"2233":1,"2344":1}}],["starlight",{"2":{"236":1,"277":1,"1949":9}}],["staryu",{"2":{"102":2}}],["started",{"0":{"1656":1,"2323":1},"2":{"524":1,"557":1,"574":1,"575":1,"578":1,"624":2,"1235":1,"1257":1,"1258":1,"1265":1,"1338":1,"1520":1,"1521":1,"1822":1,"2326":1,"2424":1,"2429":1,"2457":1,"2494":1,"2498":1,"2504":1,"2553":1,"2577":1,"2615":1,"2743":1}}],["start=none",{"2":{"465":1}}],["starting",{"0":{"2267":1},"2":{"119":1,"453":1,"587":1,"654":1,"1397":1,"1406":1,"1438":1,"1451":1,"1684":1,"1817":1,"2042":2,"2125":1,"2141":1,"2169":1,"2273":1,"2292":1,"2353":2,"2494":1,"2504":1,"2553":1,"2577":1,"2587":1,"2594":1,"2699":1,"2703":1}}],["start",{"0":{"1180":1,"1258":1,"1689":1,"1691":1,"2196":1,"2211":1,"2250":1},"1":{"1181":1,"1182":1,"2251":1,"2252":1,"2253":1,"2254":1},"2":{"50":1,"75":1,"132":1,"191":3,"196":1,"198":1,"211":1,"277":1,"291":1,"321":1,"350":5,"389":1,"390":1,"391":1,"430":1,"453":2,"462":1,"465":7,"485":1,"505":1,"517":1,"559":1,"609":1,"616":1,"624":1,"628":1,"1127":1,"1130":1,"1176":1,"1177":2,"1180":1,"1194":1,"1250":1,"1258":1,"1262":1,"1344":3,"1377":1,"1403":1,"1405":1,"1416":1,"1452":1,"1553":5,"1554":1,"1556":2,"1605":1,"1680":2,"1684":1,"1686":4,"1817":1,"1822":7,"1857":1,"1895":1,"1921":1,"2038":2,"2051":4,"2108":1,"2110":1,"2112":1,"2113":1,"2141":1,"2143":5,"2147":1,"2182":1,"2252":1,"2255":1,"2267":1,"2272":1,"2277":1,"2311":1,"2363":4,"2420":1,"2423":1,"2427":1,"2452":1,"2460":1,"2469":1,"2474":2,"2478":1,"2490":1,"2496":1,"2508":1,"2512":2,"2513":1,"2524":1,"2539":1,"2553":1,"2587":1,"2594":1,"2595":1,"2596":1,"2612":1,"2724":1,"2743":1,"2757":1}}],["startup",{"0":{"2743":1},"2":{"49":1,"65":1,"112":1,"114":1,"134":1,"183":8,"191":3,"266":1,"504":1,"515":2,"574":2,"575":1,"1398":3,"1399":4,"1464":1,"1579":1,"1825":1,"2131":1,"2183":1,"2498":1,"2679":1,"2699":2}}],["starts",{"2":{"49":1,"307":1,"402":1,"515":1,"1294":1,"1398":1,"1399":1,"1411":1,"1807":1,"1822":2,"1887":1,"2126":1,"2575":1,"2743":1}}],["stat",{"2":{"1872":1}}],["station",{"2":{"2133":2,"2266":1}}],["stating",{"2":{"352":1}}],["statically",{"2":{"2576":1}}],["static",{"2":{"50":1,"214":1,"292":1,"403":1,"520":1,"588":2,"1303":1,"1440":1,"1638":3,"1718":1,"1728":2,"1729":5,"1814":1,"1815":1,"1816":1,"1882":1,"1943":2,"1948":1,"1949":5,"1952":5,"2034":2,"2035":1,"2036":3,"2037":2,"2039":1,"2040":1,"2130":1,"2138":1,"2139":1,"2140":1,"2169":1,"2170":1,"2171":1,"2376":2,"2492":1,"2576":1,"2577":11,"2587":1,"2588":1,"2593":1,"2594":1,"2596":1,"2598":1,"2694":1,"2708":1}}],["statuses",{"2":{"315":1}}],["status",{"0":{"315":1,"708":1,"711":1,"714":1,"717":1,"720":1,"723":1,"726":1,"1183":1,"1186":1,"1188":1,"1191":1,"1449":1,"2045":1,"2402":1},"1":{"709":1,"710":1,"712":1,"713":1,"715":1,"716":1,"718":1,"719":1,"721":1,"722":1,"724":1,"725":1,"727":1,"728":1,"1184":1,"1185":1,"1187":1,"1189":1,"1190":1,"1192":1,"1193":1},"2":{"92":1,"149":1,"191":2,"199":2,"304":1,"305":1,"312":1,"315":2,"520":1,"521":1,"522":3,"523":2,"524":2,"525":2,"586":1,"710":3,"713":3,"716":3,"719":3,"722":3,"725":3,"728":3,"1185":2,"1187":1,"1190":3,"1193":3,"1252":1,"1303":3,"1329":2,"1332":2,"1344":1,"1384":1,"1439":1,"1442":1,"1443":1,"1526":2,"1530":2,"1570":4,"1813":2,"1816":1,"1872":1,"1895":1,"1901":1,"1959":1,"2041":1,"2057":1,"2129":6,"2137":2,"2140":1,"2147":1,"2359":1,"2370":1,"2379":1,"2396":1,"2402":1,"2490":1,"2531":1,"2539":1,"2697":2,"2701":1,"2744":2}}],["stats",{"2":{"50":1}}],["stateless",{"2":{"2686":1}}],["stated",{"2":{"2552":1}}],["state|default",{"2":{"1958":1}}],["state++",{"2":{"1729":1,"1952":1}}],["states",{"2":{"247":1,"587":1,"1284":1,"1325":1,"1548":1,"1642":1,"1850":1,"1852":1,"1876":1,"2170":2,"2171":1,"2474":1}}],["statement",{"0":{"231":1},"2":{"194":1,"236":1,"453":2,"459":1,"532":1,"1351":1,"1359":1,"1446":1,"1527":1,"2161":1,"2309":1,"2706":1}}],["statements",{"0":{"459":1},"2":{"160":1,"231":1,"457":1,"459":1,"461":1,"466":1,"469":1,"473":1,"476":1,"607":1,"2757":1}}],["state",{"0":{"14":1,"1300":1,"1343":1,"1345":1,"1458":1,"1507":1,"1515":1,"1719":1,"1721":1,"1774":1,"2019":1,"2605":2,"2748":1},"1":{"1301":1,"1302":1,"1303":1,"1722":1,"1775":1,"2020":1,"2606":2},"2":{"14":2,"31":1,"49":1,"50":1,"62":1,"63":1,"74":1,"93":1,"105":10,"112":1,"114":2,"149":3,"166":2,"176":2,"179":1,"199":2,"211":1,"247":1,"453":1,"502":3,"506":1,"511":7,"554":1,"566":2,"580":4,"597":1,"654":1,"656":7,"657":4,"658":1,"662":1,"684":1,"1134":1,"1221":1,"1278":1,"1284":7,"1300":9,"1303":9,"1325":1,"1326":1,"1329":7,"1332":10,"1338":1,"1341":37,"1343":6,"1344":7,"1345":9,"1364":1,"1383":18,"1398":1,"1399":2,"1408":1,"1409":1,"1411":2,"1412":1,"1416":3,"1431":1,"1434":1,"1452":3,"1457":3,"1458":2,"1471":1,"1483":1,"1488":1,"1503":1,"1507":1,"1515":1,"1519":1,"1525":1,"1526":2,"1534":4,"1536":1,"1537":3,"1549":7,"1573":1,"1641":1,"1642":1,"1646":1,"1648":1,"1670":1,"1714":7,"1715":2,"1716":4,"1717":7,"1718":8,"1719":5,"1720":1,"1721":1,"1726":1,"1729":3,"1730":1,"1736":1,"1738":1,"1740":1,"1741":1,"1749":1,"1752":1,"1754":1,"1758":1,"1760":1,"1764":1,"1766":1,"1769":1,"1774":1,"1775":1,"1809":1,"1813":6,"1815":1,"1816":1,"1837":1,"1839":1,"1841":1,"1843":1,"1845":1,"1876":1,"1880":7,"1882":6,"1894":12,"1895":2,"1897":10,"1898":12,"1939":2,"1943":1,"1947":1,"1952":3,"1954":1,"1958":6,"1959":6,"1963":1,"1965":1,"1967":1,"1968":1,"1976":1,"1979":1,"1981":1,"1985":1,"1987":1,"1991":1,"1993":1,"1997":1,"1999":1,"2003":1,"2005":1,"2008":1,"2014":1,"2019":1,"2020":1,"2041":1,"2043":23,"2044":3,"2053":2,"2056":2,"2066":1,"2067":1,"2069":1,"2129":9,"2137":6,"2139":1,"2140":1,"2161":1,"2162":4,"2166":4,"2167":10,"2168":7,"2169":40,"2170":29,"2171":35,"2203":1,"2301":1,"2357":1,"2358":1,"2370":1,"2396":1,"2402":8,"2474":2,"2481":1,"2490":1,"2491":3,"2519":1,"2577":2,"2605":3,"2606":17,"2674":2,"2676":4,"2677":4,"2680":1,"2685":2,"2688":1,"2689":2,"2694":1,"2695":1,"2696":1,"2697":7,"2705":2,"2745":1,"2746":1,"2748":2,"2757":4}}],["struggle",{"2":{"2655":1}}],["structs",{"2":{"236":1,"249":1,"2585":1,"2592":1}}],["struct",{"0":{"671":1,"736":1,"762":1,"792":1,"826":1,"859":1,"893":1,"927":1,"961":1,"995":1,"1029":1,"1063":1,"1097":1,"1150":1,"1536":1,"1641":1,"1643":1},"1":{"672":1,"737":1,"763":1,"793":1,"827":1,"860":1,"894":1,"928":1,"962":1,"996":1,"1030":1,"1064":1,"1098":1,"1151":1,"1537":1,"1642":1,"1644":1},"2":{"31":1,"236":1,"266":1,"1332":1,"1534":1,"1658":1,"1716":1,"1725":1,"1794":1,"1822":1,"1823":1,"1946":1,"2017":1,"2130":2,"2143":1,"2168":1,"2169":1,"2171":1,"2587":1,"2588":1,"2589":2,"2593":1,"2594":1,"2595":1,"2596":1,"2597":2,"2598":1,"2599":1}}],["structured",{"2":{"568":1,"1874":1,"1875":1}}],["structures",{"2":{"211":1,"499":1}}],["structure",{"0":{"2257":1,"2258":1,"2259":1,"2260":1,"2296":1},"1":{"2258":1,"2259":1,"2260":1,"2297":1,"2298":1,"2299":1,"2300":1,"2301":1,"2302":1},"2":{"22":1,"125":1,"185":1,"236":1,"481":1,"692":1,"704":1,"705":1,"1332":5,"1376":1,"1438":2,"1508":1,"1815":2,"1874":1,"1875":1,"1921":1,"2139":2,"2162":2,"2171":1,"2259":2,"2400":1,"2423":1,"2441":1,"2585":1,"2592":1,"2753":1}}],["stroke",{"2":{"2147":1,"2152":2}}],["strokes",{"2":{"2144":2,"2147":1,"2148":1,"2150":1}}],["stronger",{"2":{"2281":1}}],["strongly",{"2":{"182":1,"341":1,"1122":1,"1807":1,"2443":1,"2567":1}}],["strong",{"2":{"182":1,"341":2,"472":1,"478":1,"1578":10,"2065":1,"2272":1,"2279":1,"2566":1}}],["stress",{"2":{"1684":1}}],["strength",{"2":{"1572":2,"1580":1,"2519":1}}],["stretching",{"2":{"1410":1}}],["streamed",{"2":{"2577":1}}],["stream2",{"2":{"1230":1}}],["streampad",{"2":{"249":1}}],["stream",{"2":{"50":1,"114":1,"134":1,"1230":2,"1447":1,"1910":2}}],["streamline",{"2":{"50":1,"363":1}}],["streams",{"2":{"49":2}}],["strategies",{"2":{"2745":1}}],["strategy",{"2":{"2437":1}}],["stranded",{"2":{"2274":1}}],["strange",{"2":{"14":1}}],["straight",{"2":{"2252":1,"2272":1,"2277":1}}],["straightforward",{"2":{"355":1,"413":1,"436":1,"623":1,"1286":1,"2328":1,"2455":1}}],["strain",{"2":{"2144":1}}],["strapped",{"2":{"1821":1}}],["stray",{"2":{"199":1,"211":1}}],["str",{"0":{"2201":1},"1":{"2202":1},"2":{"160":1,"191":1,"612":1,"1363":4,"1447":1,"1448":4,"1578":8,"2153":4,"2202":1,"2577":3,"2702":3,"2707":5}}],["strives",{"2":{"2719":1}}],["strike",{"2":{"182":1,"240":1}}],["stringify",{"2":{"1857":1}}],["strings",{"0":{"470":1,"1363":1},"2":{"176":1,"191":1,"374":2,"416":1,"432":1,"467":1,"470":1,"611":1,"612":2,"616":1,"1255":1,"1356":2,"1361":2,"1363":1,"1447":2,"1683":1,"1923":1,"2231":1,"2238":1}}],["string",{"0":{"308":1,"309":1,"310":1,"1359":1,"2072":1,"2081":2,"2083":2,"2085":2,"2087":2,"2100":2,"2101":2,"2201":1},"1":{"1360":1,"1361":1,"1362":1,"1363":1,"2073":1,"2074":1,"2075":1,"2076":1,"2077":1,"2078":1,"2079":1,"2080":1,"2081":1,"2082":3,"2083":1,"2084":3,"2085":1,"2086":3,"2087":1,"2088":3,"2089":1,"2090":1,"2091":1,"2092":1,"2093":1,"2094":1,"2095":1,"2096":1,"2097":1,"2098":1,"2099":1,"2100":1,"2101":1,"2202":1},"2":{"94":1,"114":2,"149":1,"157":1,"160":3,"176":1,"190":1,"191":4,"196":5,"211":1,"249":1,"266":1,"423":1,"432":2,"435":1,"529":3,"534":6,"611":1,"612":1,"1250":8,"1359":9,"1361":21,"1363":7,"1384":2,"1385":3,"1399":1,"1403":2,"1447":1,"1448":5,"1451":4,"1452":1,"1511":1,"1527":2,"1607":1,"1608":1,"1609":1,"1610":1,"1680":5,"1683":1,"1686":2,"1813":1,"1822":6,"1935":2,"1940":2,"1941":3,"1943":10,"2072":1,"2073":2,"2075":5,"2076":1,"2078":1,"2079":2,"2081":3,"2082":2,"2083":1,"2084":2,"2085":3,"2086":2,"2087":3,"2088":2,"2100":4,"2101":4,"2137":1,"2143":6,"2166":1,"2201":1,"2202":1,"2231":1,"2238":1,"2575":1,"2577":2,"2672":4,"2676":1,"2711":4}}],["strictly",{"2":{"1302":1,"1534":1,"2506":1,"2513":1}}],["strict",{"0":{"1517":1,"1521":1,"1685":1},"2":{"75":1,"112":1,"191":1,"381":1,"504":1,"505":2,"1239":1,"1303":1,"1521":1,"1685":1,"1908":1,"2687":1}}],["stripping",{"2":{"2270":2,"2274":1}}],["stripped",{"2":{"2270":1}}],["strippers",{"2":{"2266":1}}],["strip",{"2":{"45":1,"199":1,"211":2,"1377":1,"1384":1,"1385":1,"2032":2,"2038":1,"2061":2,"2134":1,"2270":1,"2272":1,"2300":3}}],["s",{"0":{"567":1,"1243":1,"1607":1,"1609":1,"2012":1,"2014":1,"2478":1,"2742":1},"1":{"568":1,"1608":1,"1610":1,"2015":1,"2479":1,"2480":1,"2481":1,"2743":1,"2744":1,"2745":1,"2746":1,"2747":1,"2748":1,"2749":1},"2":{"14":1,"46":1,"49":1,"69":1,"70":1,"72":1,"82":1,"99":2,"109":1,"114":4,"116":1,"119":2,"125":1,"133":1,"134":1,"149":31,"153":1,"156":1,"158":1,"163":1,"174":1,"176":7,"182":3,"185":1,"191":2,"194":1,"196":5,"202":1,"211":6,"224":1,"243":1,"249":2,"265":1,"266":4,"268":1,"273":1,"276":1,"278":1,"282":6,"286":1,"291":1,"307":2,"313":2,"320":1,"327":2,"331":1,"337":1,"341":2,"349":1,"358":1,"384":1,"386":1,"403":3,"404":1,"414":2,"425":1,"429":1,"430":3,"432":2,"435":3,"436":1,"437":3,"441":2,"451":1,"453":3,"458":1,"470":1,"473":2,"493":1,"502":2,"509":1,"510":1,"515":2,"526":1,"529":3,"530":3,"532":1,"534":1,"537":1,"551":1,"554":2,"560":1,"563":1,"570":1,"574":2,"575":1,"578":1,"580":2,"587":1,"588":2,"592":1,"597":2,"598":1,"599":1,"600":1,"605":1,"609":1,"610":1,"614":1,"616":1,"623":1,"626":2,"627":2,"638":1,"639":1,"661":1,"666":2,"672":3,"681":1,"683":1,"685":1,"688":1,"689":3,"690":1,"691":1,"692":1,"703":3,"731":1,"732":1,"737":3,"763":3,"793":3,"827":3,"860":3,"894":3,"928":3,"962":3,"996":3,"1030":3,"1064":3,"1098":3,"1126":1,"1128":1,"1133":1,"1151":3,"1177":3,"1181":1,"1198":2,"1214":2,"1223":1,"1224":2,"1250":3,"1254":1,"1258":1,"1260":2,"1264":1,"1265":3,"1269":2,"1278":1,"1286":1,"1287":1,"1299":1,"1300":1,"1302":1,"1303":1,"1312":2,"1314":1,"1331":1,"1332":2,"1335":3,"1337":1,"1338":3,"1340":1,"1346":1,"1347":3,"1352":1,"1355":1,"1360":1,"1361":1,"1367":1,"1370":1,"1377":4,"1378":1,"1380":1,"1382":1,"1383":1,"1398":2,"1405":1,"1406":1,"1412":2,"1413":1,"1430":1,"1431":1,"1441":2,"1445":2,"1448":2,"1452":1,"1459":1,"1471":1,"1492":4,"1496":1,"1499":1,"1503":1,"1511":2,"1515":1,"1518":1,"1523":1,"1525":1,"1528":1,"1530":1,"1548":1,"1553":1,"1557":1,"1559":1,"1577":1,"1591":4,"1608":1,"1610":1,"1630":1,"1633":1,"1634":2,"1666":1,"1675":1,"1677":1,"1680":5,"1683":1,"1723":1,"1725":3,"1731":1,"1796":1,"1800":1,"1803":1,"1804":2,"1805":1,"1806":1,"1807":3,"1820":1,"1822":1,"1866":1,"1871":1,"1878":1,"1879":1,"1912":2,"1921":3,"1933":1,"1942":1,"1943":6,"1944":1,"1946":3,"1949":3,"1950":2,"1955":1,"2013":1,"2015":1,"2041":1,"2051":8,"2054":4,"2072":1,"2102":1,"2105":1,"2112":1,"2114":2,"2118":1,"2122":2,"2124":3,"2126":3,"2129":1,"2130":2,"2131":3,"2134":1,"2141":3,"2143":1,"2148":2,"2152":1,"2153":3,"2154":1,"2157":1,"2160":4,"2162":4,"2164":1,"2171":1,"2178":1,"2182":2,"2183":1,"2223":1,"2230":3,"2237":1,"2238":1,"2240":1,"2244":3,"2252":2,"2254":1,"2255":2,"2257":1,"2259":1,"2262":3,"2263":3,"2264":2,"2270":8,"2273":2,"2274":4,"2275":1,"2276":1,"2279":4,"2281":4,"2284":1,"2288":1,"2295":1,"2296":1,"2297":2,"2302":1,"2304":1,"2309":2,"2313":1,"2327":1,"2328":1,"2330":1,"2332":1,"2334":1,"2337":1,"2346":2,"2347":1,"2351":2,"2355":3,"2356":1,"2367":1,"2373":1,"2374":1,"2386":3,"2401":1,"2405":1,"2407":4,"2410":1,"2417":1,"2421":1,"2424":1,"2429":1,"2431":2,"2441":1,"2450":1,"2454":2,"2455":2,"2457":1,"2461":1,"2464":2,"2466":2,"2468":1,"2469":1,"2472":1,"2473":1,"2474":3,"2475":2,"2477":5,"2479":2,"2480":3,"2483":2,"2491":1,"2506":2,"2508":3,"2509":2,"2510":2,"2513":3,"2523":1,"2524":2,"2525":2,"2526":2,"2533":1,"2541":2,"2548":2,"2549":2,"2552":1,"2557":1,"2559":1,"2564":1,"2566":6,"2567":1,"2568":1,"2569":1,"2572":1,"2574":1,"2575":3,"2576":3,"2577":4,"2578":1,"2584":2,"2585":1,"2586":1,"2587":1,"2590":1,"2591":1,"2592":1,"2595":2,"2596":2,"2597":1,"2599":1,"2607":1,"2612":2,"2614":3,"2615":8,"2616":2,"2620":1,"2632":1,"2639":1,"2657":1,"2672":2,"2676":2,"2684":2,"2693":2,"2697":1,"2701":1,"2704":1,"2708":2,"2710":1,"2719":1,"2728":5,"2735":2,"2738":1,"2740":2,"2744":1,"2745":4,"2746":2,"2748":1,"2750":3,"2751":1,"2752":1,"2753":6,"2756":1,"2757":2}}],["sixty",{"2":{"1406":1}}],["sixtyfive",{"2":{"211":1}}],["sixth",{"2":{"1278":1}}],["six",{"2":{"1221":1,"2111":1,"2148":1}}],["sipeed",{"2":{"495":1}}],["situation",{"2":{"466":1,"1326":1,"1684":1,"1828":1}}],["situations",{"2":{"466":1,"483":1,"567":1,"1225":1,"1288":1,"1359":1,"1378":1,"2468":4,"2662":1,"2702":1}}],["site",{"2":{"403":1,"2751":1}}],["sit",{"2":{"301":1,"616":1}}],["silvery",{"2":{"2272":1}}],["silent=true",{"2":{"2262":1}}],["silent",{"2":{"236":1}}],["silicon",{"2":{"49":1,"2462":1}}],["sizing",{"2":{"211":1,"288":1}}],["size=x",{"2":{"2757":1}}],["sizey",{"2":{"2577":1}}],["sizex",{"2":{"2577":1}}],["sizeof",{"2":{"1820":1,"2130":2,"2142":1,"2587":2,"2588":2,"2593":1,"2594":2,"2595":1,"2596":2,"2597":1,"2598":1,"2702":1,"2757":1}}],["sized",{"0":{"1820":1,"2142":1},"1":{"1821":1},"2":{"2147":1}}],["sizes",{"0":{"1515":1},"2":{"134":1,"149":1,"201":1,"210":1,"689":1,"1515":3,"1811":1,"1820":1,"2130":1,"2576":1,"2593":1,"2614":1}}],["size",{"0":{"660":1},"2":{"3":1,"15":1,"28":1,"69":1,"70":1,"75":1,"113":1,"114":10,"134":4,"149":4,"153":1,"166":1,"176":2,"191":1,"199":1,"201":1,"211":4,"215":1,"222":2,"236":5,"266":2,"496":1,"503":1,"504":1,"506":1,"511":2,"513":1,"560":1,"659":3,"660":4,"683":2,"684":4,"685":4,"686":3,"688":2,"689":11,"690":9,"691":11,"694":10,"1287":4,"1440":2,"1445":1,"1446":4,"1553":1,"1554":3,"1573":3,"1589":1,"1642":1,"1728":1,"1803":2,"1804":2,"1808":2,"1811":1,"1820":6,"1821":3,"1822":7,"1932":1,"1949":2,"1950":1,"2042":1,"2128":1,"2130":6,"2136":1,"2142":6,"2143":2,"2152":2,"2161":1,"2182":1,"2226":2,"2228":1,"2229":2,"2262":2,"2263":2,"2274":1,"2299":1,"2303":1,"2348":1,"2425":2,"2469":2,"2550":1,"2557":2,"2558":2,"2566":1,"2573":1,"2574":1,"2575":7,"2576":3,"2578":1,"2587":4,"2594":4,"2683":4,"2701":2,"2702":2,"2705":1,"2706":1,"2718":2,"2757":2}}],["sion",{"2":{"1943":1}}],["siod0",{"2":{"2538":1,"2541":2}}],["siod3",{"2":{"1133":2}}],["siod1",{"2":{"1133":1,"2538":1}}],["sio",{"0":{"1133":1},"2":{"176":1,"199":1,"249":1,"1127":1,"1130":1,"1133":5,"2531":2,"2538":2,"2541":1,"2543":3}}],["sinks",{"2":{"2519":1}}],["sinusoidal",{"2":{"1576":1}}],["sine",{"2":{"1393":2,"1728":2}}],["singa",{"2":{"211":1}}],["single",{"0":{"421":1,"1282":1,"1882":1,"2159":1,"2164":1},"1":{"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1},"2":{"16":1,"94":1,"112":1,"113":1,"114":2,"138":1,"191":1,"211":3,"222":1,"236":1,"262":1,"313":1,"334":1,"407":1,"411":1,"418":1,"424":1,"459":1,"461":1,"468":2,"516":2,"519":1,"606":2,"635":1,"636":1,"647":1,"664":1,"671":1,"675":1,"726":1,"729":1,"730":1,"734":1,"736":1,"737":1,"741":1,"745":2,"747":1,"749":1,"751":2,"755":1,"756":1,"760":1,"762":1,"763":1,"768":1,"772":2,"774":1,"776":1,"778":2,"784":1,"785":1,"790":1,"792":1,"793":1,"800":1,"804":2,"806":1,"808":1,"810":2,"816":1,"817":1,"824":1,"826":1,"827":1,"832":1,"836":2,"838":1,"840":1,"842":2,"848":1,"849":1,"857":1,"859":1,"860":1,"867":1,"871":2,"873":1,"875":1,"877":2,"883":1,"884":1,"891":1,"893":1,"894":1,"901":1,"905":2,"907":1,"909":1,"911":2,"917":1,"918":1,"925":1,"927":1,"928":1,"935":1,"939":2,"941":1,"943":1,"945":2,"951":1,"952":1,"959":1,"961":1,"962":1,"969":1,"973":2,"975":1,"977":1,"979":2,"985":1,"986":1,"993":1,"995":1,"996":1,"1003":1,"1007":2,"1009":1,"1011":1,"1013":2,"1019":1,"1020":1,"1027":1,"1029":1,"1030":1,"1037":1,"1041":2,"1043":1,"1045":1,"1047":2,"1053":1,"1054":1,"1061":1,"1063":1,"1064":1,"1071":1,"1075":2,"1077":1,"1079":1,"1081":2,"1087":1,"1088":1,"1095":1,"1097":1,"1098":1,"1105":1,"1109":2,"1111":1,"1113":1,"1115":2,"1121":2,"1143":1,"1144":1,"1148":1,"1150":1,"1151":1,"1158":1,"1162":2,"1164":1,"1166":1,"1168":2,"1202":1,"1204":1,"1212":2,"1234":6,"1235":1,"1236":1,"1286":1,"1299":1,"1300":1,"1319":1,"1325":1,"1329":1,"1335":1,"1341":1,"1357":3,"1381":1,"1399":1,"1406":1,"1451":3,"1454":2,"1495":1,"1499":1,"1534":1,"1577":1,"1591":1,"1643":1,"1665":1,"1728":6,"1729":1,"1743":1,"1815":2,"1822":2,"1860":2,"1872":2,"1875":1,"1923":1,"1944":1,"1949":18,"1952":1,"1970":1,"2031":1,"2051":2,"2097":1,"2106":1,"2113":1,"2125":1,"2139":2,"2143":2,"2149":1,"2157":1,"2161":2,"2162":1,"2164":1,"2169":17,"2170":12,"2171":11,"2199":1,"2262":1,"2274":2,"2290":1,"2302":1,"2349":1,"2407":1,"2415":1,"2455":1,"2553":1,"2564":1,"2566":1,"2571":1,"2589":1,"2597":1,"2600":1,"2607":1,"2649":1,"2660":1}}],["sinanju",{"2":{"211":1}}],["sinc",{"2":{"191":1}}],["since",{"2":{"113":1,"175":1,"240":1,"463":1,"464":1,"465":1,"513":1,"641":1,"659":1,"660":2,"1332":1,"1338":1,"1383":1,"1384":1,"1397":1,"1401":1,"1427":1,"1438":1,"1471":1,"1501":1,"1533":1,"1577":1,"1674":1,"1677":1,"1866":1,"2042":1,"2108":1,"2118":1,"2122":1,"2128":2,"2162":2,"2183":1,"2226":1,"2243":1,"2274":1,"2292":1,"2311":1,"2347":1,"2398":1,"2474":2,"2506":1,"2576":1,"2605":1,"2615":1,"2734":2,"2738":1,"2752":1}}],["signed",{"2":{"1652":1,"1876":4,"1940":1,"1942":1}}],["sign",{"2":{"417":1,"554":1,"2728":2}}],["significance",{"2":{"2172":1}}],["significantly",{"2":{"196":1,"513":1,"1326":1,"1803":1,"2462":1,"2574":2}}],["significant",{"2":{"107":1,"169":1,"182":1,"215":1,"228":1,"486":1,"560":2,"688":1,"701":1,"1181":1,"1612":1,"1614":1,"1856":1,"1863":1,"2125":1,"2148":1,"2263":1,"2309":1,"2574":2,"2576":1}}],["signifies",{"2":{"341":1,"2524":1,"2596":1}}],["signum",{"2":{"122":2}}],["signature65",{"2":{"211":1}}],["signature",{"0":{"272":1},"2":{"114":1,"272":1,"597":1,"2347":1}}],["signals",{"2":{"2311":1}}],["signalling",{"2":{"125":1,"185":1}}],["signal",{"2":{"92":1,"176":1,"334":4,"1394":1,"1454":1,"1462":1,"1534":1,"1576":1,"1577":1}}],["sided",{"2":{"1875":1,"2280":1}}],["sidebar",{"2":{"621":1,"2424":1,"2513":2}}],["side",{"2":{"74":1,"138":1,"149":2,"156":1,"191":2,"211":1,"331":2,"496":1,"509":6,"511":1,"522":2,"607":1,"1236":1,"1547":1,"1551":3,"1558":2,"1577":2,"1832":1,"1863":1,"1865":3,"1866":2,"1870":1,"1873":2,"1875":3,"1883":5,"1900":1,"1921":1,"1923":1,"2051":4,"2123":1,"2124":1,"2127":3,"2129":12,"2130":6,"2131":7,"2157":1,"2246":1,"2248":1,"2272":1,"2273":1,"2276":1,"2311":1,"2352":1,"2474":1,"2566":1,"2567":1,"2577":5,"2728":1}}],["sides",{"0":{"2130":1},"2":{"31":1,"34":1,"107":2,"134":1,"211":1,"511":2,"1558":1,"1670":1,"1866":1,"1870":1,"1873":1,"2042":2,"2114":1,"2127":2,"2129":1,"2131":1,"2157":1,"2279":2,"2370":6,"2396":6}}],["sidestep",{"2":{"24":1}}],["simulation",{"2":{"1949":1}}],["simulate",{"2":{"1406":1,"1949":1}}],["simultaneously",{"2":{"659":1,"1390":1,"1499":1,"1500":1,"1562":1,"1802":1,"2152":1,"2401":1}}],["simultaneous",{"2":{"563":1,"659":4,"1387":1}}],["simutaneously",{"2":{"1399":1}}],["similiarly",{"2":{"82":1}}],["similarity",{"2":{"2566":1}}],["similary",{"2":{"1935":1}}],["similarly",{"2":{"1300":1,"1388":1,"1391":1,"1533":1,"1940":1}}],["similar",{"2":{"49":2,"99":1,"128":1,"154":1,"203":1,"220":1,"231":1,"371":1,"432":1,"529":1,"569":1,"587":1,"642":1,"1227":1,"1260":1,"1336":1,"1370":1,"1376":1,"1462":1,"1573":1,"1655":1,"1666":1,"1886":1,"1898":1,"1948":1,"2034":1,"2114":1,"2156":1,"2161":1,"2171":3,"2172":1,"2183":1,"2347":1,"2353":1,"2414":1,"2417":1,"2425":1,"2450":1,"2453":1,"2469":1,"2477":1,"2539":1,"2739":1,"2753":1,"2755":1}}],["simplfy",{"2":{"222":1}}],["simplified",{"2":{"2632":1}}],["simplifies",{"2":{"149":1,"198":1}}],["simplifying",{"2":{"164":1}}],["simplify",{"2":{"10":1,"160":1,"176":1,"191":2,"198":1,"222":1,"236":1,"262":1,"363":1,"2553":1,"2567":1}}],["simply",{"0":{"2669":1},"2":{"31":1,"110":1,"194":1,"314":1,"373":1,"428":1,"434":1,"602":1,"609":1,"614":1,"654":1,"659":1,"688":1,"1217":1,"1304":1,"1412":1,"1416":1,"1423":1,"1451":1,"1534":1,"1609":1,"1613":1,"1729":1,"1743":1,"1745":1,"1922":1,"1940":1,"1952":1,"1970":1,"1972":1,"2032":1,"2081":1,"2085":1,"2087":1,"2152":1,"2169":1,"2282":1,"2319":1,"2347":1,"2353":1,"2397":1,"2476":1,"2499":1,"2557":1,"2710":1}}],["simplest",{"2":{"2451":1,"2476":1,"2548":1}}],["simpler",{"2":{"236":1,"341":1,"2506":1,"2740":1}}],["simple",{"0":{"414":1,"463":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"1424":1,"1425":1,"1663":1,"1923":1,"2164":1},"2":{"13":1,"94":1,"114":2,"249":1,"306":1,"315":1,"481":1,"567":1,"610":1,"611":1,"1250":3,"1270":1,"1300":1,"1302":1,"1310":1,"1338":1,"1364":1,"1386":1,"1450":1,"1452":1,"1464":1,"1565":1,"1670":2,"1728":3,"1729":1,"1949":3,"1952":1,"2078":1,"2133":1,"2147":1,"2155":1,"2161":1,"2164":1,"2231":1,"2238":1,"2268":1,"2277":1,"2313":1,"2315":1,"2417":1,"2448":1,"2454":1,"2497":1,"2507":1,"2543":1,"2564":1,"2664":1,"2706":1,"2708":1,"2740":1,"2749":1}}],["sea",{"2":{"2545":1}}],["searched",{"2":{"1441":1}}],["searches",{"2":{"384":1,"1346":1,"1441":1}}],["searching",{"2":{"374":1,"1438":1,"2403":1,"2719":1}}],["search",{"2":{"114":1,"191":1,"236":2,"279":1,"374":2,"1438":1,"1452":1,"2355":2,"2393":2,"2403":1,"2566":1,"2757":1}}],["sepr",{"2":{"2355":1,"2392":1}}],["seperate",{"2":{"2280":1}}],["separator",{"2":{"2355":2,"2392":2}}],["separation",{"2":{"236":1,"2294":1}}],["separated",{"2":{"413":1,"462":1,"612":2,"2130":1,"2179":1,"2474":1,"2566":1}}],["separately",{"2":{"228":1,"358":1,"1379":1,"1518":1,"1547":1,"1802":1,"2567":2,"2608":1}}],["separate",{"2":{"18":1,"35":1,"114":1,"134":1,"222":2,"236":1,"266":1,"277":1,"354":1,"454":1,"502":1,"516":1,"556":3,"559":1,"612":1,"654":1,"655":1,"1265":1,"1346":1,"1363":1,"1459":1,"1464":1,"1821":1,"1885":1,"1898":1,"2154":1,"2181":1,"2182":1,"2307":1,"2346":1,"2508":1,"2558":1,"2564":1,"2577":1,"2602":1,"2746":1,"2753":2}}],["seq",{"2":{"1578":3,"1820":3}}],["sequential",{"2":{"191":1,"1815":1,"2070":1,"2139":1}}],["sequence",{"0":{"1693":1,"1694":1,"1697":1,"1699":1,"1702":1,"1705":1,"1708":1,"1711":1,"2066":1},"1":{"1695":1,"1696":1,"1700":1,"1701":1,"1703":1,"1704":1,"1706":1,"1707":1,"1709":1,"1710":1,"1712":1,"1713":1},"2":{"196":4,"468":3,"473":1,"505":1,"1359":1,"1437":1,"1508":1,"1578":4,"1579":4,"1678":1,"1680":6,"1682":1,"1683":2,"1684":7,"1685":2,"1686":5,"1687":1,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1697":1,"1698":1,"1699":1,"1701":1,"1702":1,"1704":1,"1705":1,"1707":1,"1708":1,"1710":1,"1711":1,"1713":1,"2069":3,"2070":3,"2071":3,"2110":1,"2179":4,"2183":2,"2196":1,"2197":1,"2198":1,"2211":1,"2214":1,"2215":1,"2216":1,"2219":1,"2220":1,"2221":1,"2222":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":2,"2247":2,"2249":2,"2368":1,"2577":1,"2616":1,"2645":1,"2687":1,"2696":3,"2734":6,"2735":7,"2736":2}}],["sequences",{"2":{"134":1,"196":1,"435":2,"1578":2,"2072":1,"2183":1,"2320":1,"2735":1}}],["sequencer",{"0":{"2108":1,"2109":1},"1":{"2109":1,"2110":1,"2111":1,"2112":1,"2113":1},"2":{"63":1,"191":1,"199":1,"231":3,"2108":1,"2109":2,"2110":1,"2111":1,"2112":12,"2113":32,"2749":1,"2753":1}}],["sequencing",{"2":{"49":1,"176":1,"229":1}}],["semi",{"2":{"2169":1}}],["semitone",{"2":{"1793":2,"2371":2}}],["semitones",{"2":{"1793":10,"2371":10}}],["semicolon",{"2":{"1499":1,"1584":1,"1729":1,"1952":1,"2160":2,"2355":1,"2388":1}}],["semantics",{"2":{"199":1,"277":1}}],["seil",{"2":{"1280":2}}],["seigaiha",{"2":{"143":2}}],["self",{"2":{"428":1,"475":6,"609":1,"1525":1,"1527":1,"1729":1,"1952":1}}],["selectable",{"2":{"1326":1}}],["selects",{"2":{"505":1,"1359":1,"2611":1,"2616":1,"2729":3,"2736":1}}],["selectively",{"2":{"2039":1}}],["selecting",{"0":{"1355":1,"2535":1,"2547":1},"1":{"2536":1,"2537":1,"2538":1,"2548":1,"2549":1},"2":{"266":1,"331":1,"681":1,"1236":1,"2150":1,"2411":1,"2502":1}}],["selection",{"0":{"2033":1,"2544":1},"2":{"75":1,"114":1,"188":1,"191":2,"199":1,"211":1,"222":1,"249":1,"630":1,"1218":1,"1460":1,"1492":1,"1525":1,"1805":2,"1932":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2245":1,"2247":1,"2249":1,"2300":1,"2534":1,"2544":1,"2546":1,"2566":1,"2611":1,"2689":1}}],["select",{"0":{"537":1,"538":1,"798":1,"865":1,"899":1,"933":1,"967":1,"1001":1,"1035":1,"1069":1,"1103":1,"1156":1},"1":{"799":1,"866":1,"900":1,"934":1,"968":1,"1002":1,"1036":1,"1070":1,"1104":1,"1157":1},"2":{"222":1,"236":1,"331":16,"335":3,"502":1,"511":1,"537":3,"538":1,"626":2,"627":1,"628":1,"666":2,"674":1,"680":1,"685":2,"694":2,"799":1,"866":1,"900":1,"934":1,"968":1,"1002":1,"1036":1,"1070":1,"1104":1,"1136":1,"1157":1,"1176":1,"1177":6,"1181":1,"1194":1,"1235":1,"1329":1,"1393":1,"1402":1,"1573":2,"1805":3,"1855":1,"1856":1,"1860":1,"1863":1,"1869":1,"1870":4,"1929":1,"1932":1,"2033":1,"2110":1,"2126":1,"2128":1,"2141":1,"2147":1,"2148":1,"2150":1,"2255":2,"2278":1,"2355":3,"2392":2,"2393":1,"2436":2,"2439":2,"2498":3,"2501":2,"2502":1,"2506":2,"2512":2,"2513":1,"2518":1,"2542":1,"2573":1,"2576":10,"2729":1,"2735":2,"2736":2}}],["selector",{"2":{"176":1,"2498":1}}],["selected",{"0":{"1139":1},"1":{"1140":1,"1141":1,"1142":1},"2":{"65":1,"186":1,"540":1,"661":1,"662":1,"688":1,"689":1,"708":1,"711":1,"1127":1,"1129":1,"1130":1,"1132":3,"1133":4,"1183":1,"1186":1,"1188":1,"1191":1,"1223":1,"1388":1,"1393":1,"1394":1,"1395":1,"1398":4,"1399":4,"1494":1,"1575":1,"1579":1,"2040":1,"2179":1,"2180":5,"2183":4,"2184":2,"2196":1,"2197":1,"2198":1,"2384":2,"2541":1,"2544":1,"2719":2,"2720":1,"2729":2}}],["segments",{"2":{"2042":5,"2044":2,"2270":1}}],["segment",{"2":{"236":3,"2042":6,"2044":3}}],["seven",{"2":{"2614":2}}],["seventyfive",{"2":{"211":1}}],["several",{"2":{"204":2,"213":1,"305":1,"316":1,"358":1,"431":1,"449":1,"481":1,"537":1,"551":1,"560":1,"574":1,"1121":1,"1127":1,"1130":1,"1135":1,"1265":1,"1270":1,"1568":1,"1676":1,"1893":1,"2123":1,"2146":1,"2165":1,"2244":1,"2295":1,"2296":1,"2327":1,"2344":1,"2419":1,"2491":1,"2496":1,"2530":1,"2686":1,"2719":1,"2753":1}}],["severely",{"2":{"123":1,"2701":1}}],["sekigon",{"2":{"114":1}}],["serbian",{"2":{"1355":1,"2712":5}}],["servicing",{"2":{"660":1}}],["services",{"2":{"516":1}}],["service",{"0":{"306":1},"1":{"307":1,"308":1,"309":1,"310":1},"2":{"304":2,"306":1,"312":1,"315":1,"623":1,"1239":2,"1869":1,"2260":1,"2554":1,"2566":1}}],["served",{"2":{"520":1,"2303":2}}],["serves",{"2":{"403":1}}],["serve",{"2":{"403":3,"2644":1}}],["servertype",{"2":{"2513":1}}],["server",{"2":{"315":1,"401":1,"402":1,"2326":1,"2510":1,"2512":2,"2545":1,"2714":1}}],["serratus",{"2":{"211":1}}],["serenity",{"2":{"211":1}}],["serpent65",{"2":{"211":1}}],["serious",{"2":{"315":1,"2569":1}}],["series",{"0":{"2291":1},"2":{"149":1,"249":1,"331":2,"495":1,"532":1,"684":1,"685":1,"1390":1,"2335":1,"2750":1}}],["serialport>",{"2":{"2233":1}}],["serialized",{"2":{"1450":1,"1451":3}}],["serial",{"0":{"1121":1,"1132":1,"1240":1,"2119":1},"1":{"1122":1,"1123":1,"1124":1,"1125":1,"1126":1,"1127":1,"1128":1,"1129":1,"1130":1,"1131":1,"1132":1,"1133":1,"1134":1,"1135":1,"1136":1,"1137":1,"1138":1,"1139":1,"1140":1,"1141":1,"1142":1},"2":{"30":1,"45":1,"63":2,"65":1,"74":1,"93":1,"94":1,"111":1,"112":2,"114":3,"133":2,"134":2,"149":2,"176":2,"191":5,"199":3,"277":11,"511":7,"625":1,"1121":2,"1122":1,"1123":2,"1124":2,"1126":2,"1127":5,"1129":6,"1130":8,"1132":7,"1133":3,"1134":3,"1136":4,"1137":1,"1138":2,"1198":2,"1240":1,"1530":1,"1855":1,"1867":1,"1869":1,"2114":4,"2115":1,"2119":1,"2128":7,"2146":4,"2149":1,"2150":3,"2225":1,"2233":1,"2329":1,"2331":1,"2333":1,"2339":1,"2344":1,"2347":2,"2353":1,"2513":1,"2531":1,"2541":7,"2543":1,"2668":1,"2697":4}}],["sergiopoverony",{"2":{"114":1}}],["sentence",{"2":{"2169":1}}],["sentences",{"2":{"621":1,"1435":1,"1630":1}}],["sent",{"2":{"211":1,"263":2,"587":1,"1181":1,"1212":1,"1215":1,"1216":1,"1217":1,"1284":1,"1299":2,"1303":1,"1340":1,"1360":2,"1367":1,"1399":1,"1414":1,"1430":1,"1537":1,"1573":1,"1642":1,"1670":1,"1677":1,"1876":3,"1878":1,"1879":1,"1912":2,"1917":1,"1923":1,"2031":1,"2072":2,"2075":1,"2103":1,"2104":1,"2106":2,"2130":1,"2152":5,"2161":1,"2199":1,"2315":1,"2382":1,"2660":1,"2737":4,"2738":1}}],["sensible",{"2":{"1940":1}}],["sensitivity",{"2":{"1863":1,"1870":1,"1911":1}}],["sensitive",{"2":{"454":1,"585":1,"1353":1,"1863":3}}],["sensing",{"2":{"1236":1}}],["sense75",{"2":{"222":1}}],["senselessclay",{"2":{"211":1}}],["sense",{"2":{"123":1,"453":1,"560":1,"1265":1,"1432":1,"1932":1,"2517":1,"2553":1,"2724":1}}],["sensors",{"2":{"160":1,"273":1,"276":1,"1854":1,"1870":5,"1871":1,"1874":2,"2566":1}}],["sensor",{"0":{"276":1,"1854":1,"1855":1,"1856":1,"1867":1,"1869":1,"1870":1},"1":{"1855":1,"1856":1,"1857":1,"1858":1,"1859":1,"1860":1,"1861":1,"1862":1,"1863":1,"1864":1,"1865":1,"1866":1,"1867":1,"1868":1,"1869":1,"1870":1,"1871":1},"2":{"114":3,"118":2,"149":4,"175":1,"176":1,"249":2,"273":3,"276":1,"636":2,"1854":2,"1855":5,"1856":5,"1857":1,"1859":2,"1862":1,"1863":7,"1864":4,"1867":4,"1868":2,"1869":5,"1870":15,"1871":2,"1872":7,"1874":3}}],["sends",{"0":{"2315":1},"2":{"202":1,"623":1,"1286":1,"1299":1,"1335":1,"1357":1,"1366":1,"1367":1,"1368":1,"1438":1,"1582":2,"1659":1,"1874":3,"1876":1,"1937":1,"2161":4,"2356":1,"2410":1,"2455":1,"2572":1,"2611":1,"2710":1,"2739":1}}],["sendstring",{"0":{"157":1,"2711":1},"2":{"114":1,"160":1,"188":1,"191":1,"211":1,"1362":1,"1399":1,"2074":1,"2711":3,"2712":53}}],["sending",{"0":{"1250":1,"1791":1,"1921":1},"2":{"176":2,"191":2,"199":1,"502":1,"567":1,"1121":1,"1369":1,"1554":1,"1622":1,"1624":1,"1663":1,"1876":1,"1885":1,"1910":1,"1912":1,"1918":1,"2152":1,"2161":1,"2263":1,"2577":1,"2699":1,"2710":1}}],["sendyyeah",{"2":{"74":1}}],["sendz",{"2":{"74":1}}],["send",{"0":{"1359":1,"1927":1,"2072":1,"2081":1,"2083":1,"2085":1,"2087":1,"2089":1,"2091":1,"2093":1,"2095":1,"2097":1,"2100":1,"2101":1,"2164":1,"2166":1,"2168":1,"2201":1,"2319":1},"1":{"1360":1,"1361":1,"1362":1,"1363":1,"1928":1,"2073":1,"2074":1,"2075":1,"2076":1,"2077":1,"2078":1,"2079":1,"2080":1,"2081":1,"2082":2,"2083":1,"2084":2,"2085":1,"2086":2,"2087":1,"2088":2,"2089":1,"2090":2,"2091":1,"2092":2,"2093":1,"2094":2,"2095":1,"2096":2,"2097":1,"2098":2,"2099":1,"2100":1,"2101":1,"2202":1},"2":{"50":1,"94":1,"114":1,"149":1,"157":1,"160":1,"176":1,"190":1,"191":4,"195":1,"196":3,"222":1,"236":1,"249":1,"266":1,"515":1,"534":6,"571":1,"572":1,"708":1,"1188":1,"1232":1,"1278":1,"1300":2,"1320":1,"1332":1,"1336":1,"1353":2,"1357":2,"1359":8,"1360":2,"1361":5,"1363":6,"1368":1,"1375":1,"1384":2,"1385":3,"1399":1,"1431":1,"1448":5,"1451":1,"1452":1,"1508":1,"1511":2,"1527":1,"1538":1,"1557":1,"1568":4,"1618":1,"1622":1,"1623":1,"1624":1,"1625":1,"1645":1,"1655":1,"1656":3,"1665":7,"1670":1,"1680":3,"1683":1,"1686":2,"1787":1,"1792":2,"1821":1,"1822":4,"1848":1,"1874":1,"1876":5,"1878":1,"1901":1,"1912":3,"1921":2,"1922":3,"1923":3,"1927":1,"1928":1,"1935":2,"1940":2,"1941":3,"1943":10,"2072":1,"2073":1,"2075":7,"2076":1,"2078":1,"2081":1,"2085":1,"2087":1,"2100":2,"2101":2,"2106":9,"2107":5,"2129":1,"2130":3,"2150":1,"2152":2,"2160":2,"2161":1,"2166":1,"2169":8,"2170":1,"2183":1,"2184":3,"2200":1,"2201":1,"2202":1,"2209":1,"2223":1,"2263":5,"2311":2,"2315":2,"2320":1,"2384":3,"2397":1,"2398":1,"2410":1,"2411":1,"2413":2,"2414":4,"2415":2,"2611":1,"2649":1,"2666":1,"2676":1,"2699":2,"2711":3,"2734":2,"2738":2}}],["security",{"2":{"1353":1}}],["secure",{"0":{"2065":1,"2696":1},"1":{"2066":1,"2067":1,"2068":1,"2069":1,"2070":1,"2071":1},"2":{"160":2,"188":2,"191":2,"2065":2,"2067":1,"2069":4,"2070":3,"2071":7,"2280":1,"2506":1,"2611":1,"2696":3,"2749":1}}],["sector",{"2":{"689":3,"691":2,"694":2}}],["sectors",{"2":{"689":3}}],["section>",{"2":{"438":2,"439":2}}],["sections",{"0":{"290":1,"300":1},"2":{"194":1,"279":1,"602":1,"1304":1,"2033":1,"2313":1,"2404":1,"2418":1,"2459":1,"2474":1,"2535":1,"2560":1,"2574":1,"2600":1}}],["section",{"0":{"420":1},"2":{"31":2,"34":1,"124":1,"195":1,"206":1,"236":1,"240":1,"294":1,"320":1,"342":1,"417":1,"418":1,"437":4,"445":1,"453":1,"608":1,"628":1,"629":1,"681":2,"687":1,"693":1,"1127":2,"1129":1,"1130":2,"1235":1,"1340":1,"1450":1,"1672":1,"2031":1,"2134":1,"2152":1,"2165":1,"2240":1,"2263":1,"2268":1,"2282":1,"2296":1,"2327":1,"2347":2,"2348":2,"2398":1,"2411":1,"2420":1,"2439":1,"2451":1,"2454":1,"2472":2,"2490":1,"2494":1,"2534":1,"2536":1,"2537":1,"2548":1,"2557":1,"2565":1,"2577":1,"2579":1,"2581":1,"2614":2,"2723":1,"2724":1,"2744":1,"2747":1}}],["secondary",{"2":{"176":1,"191":1,"656":1,"1388":1,"1390":1,"1531":1,"1863":1,"1866":1,"1949":1,"2697":11}}],["second",{"0":{"2544":1},"2":{"90":2,"157":1,"266":1,"375":1,"506":1,"556":1,"557":2,"584":1,"597":1,"666":1,"683":1,"1303":1,"1359":1,"1361":1,"1387":1,"1391":1,"1399":2,"1416":1,"1438":1,"1560":2,"1703":1,"1706":1,"1709":1,"1712":1,"1725":1,"1804":3,"1807":1,"1870":2,"1940":1,"1946":1,"1949":1,"2114":1,"2125":1,"2131":1,"2161":2,"2162":1,"2272":1,"2309":1,"2348":1,"2450":1,"2474":1,"2513":1,"2544":1,"2693":1,"2737":3,"2745":3,"2746":1}}],["seconds>",{"2":{"375":1}}],["seconds",{"0":{"25":1},"2":{"11":1,"463":1,"464":2,"465":4,"502":1,"522":1,"598":1,"1457":1,"1499":1,"1504":2,"2226":5,"2232":1,"2233":1,"2234":1,"2235":1,"2239":1,"2355":1,"2677":2,"2680":1,"2696":1,"2697":1}}],["setpixel",{"2":{"2577":4}}],["setpinoutputopendrain",{"2":{"243":1}}],["setpinoutputpushpull",{"2":{"243":1}}],["setpinoutput",{"2":{"243":1}}],["setpininputlow",{"2":{"243":1}}],["setpininput",{"2":{"243":1}}],["setpininputhigh",{"2":{"34":2,"243":1}}],["setrgb",{"2":{"1343":5,"1953":1,"2051":5,"2058":3}}],["setings",{"2":{"1332":1}}],["setleds",{"0":{"1232":1},"1":{"1233":1}}],["settling",{"2":{"1326":3}}],["settle",{"2":{"1325":1}}],["settles",{"2":{"1325":1}}],["setter",{"2":{"475":2}}],["setta21",{"2":{"143":2}}],["settable",{"2":{"114":1}}],["setting",{"0":{"415":1,"417":1,"438":1,"509":1,"1227":1,"1721":1,"1891":1,"2050":1,"2123":1,"2348":1,"2442":1,"2456":1,"2492":1,"2503":1,"2607":1},"1":{"510":1,"1722":1,"1892":1,"2124":1,"2125":1,"2126":1,"2127":1,"2457":1,"2458":1,"2459":1,"2460":1,"2461":1,"2462":1,"2463":1,"2464":1,"2465":1,"2466":1,"2467":1,"2468":1,"2469":1},"2":{"87":1,"88":3,"93":1,"104":3,"127":3,"176":2,"191":1,"321":1,"370":1,"415":2,"423":1,"435":1,"497":3,"502":1,"504":1,"505":1,"516":2,"533":1,"556":1,"578":1,"624":1,"641":1,"667":1,"701":1,"703":3,"788":1,"822":1,"855":1,"889":1,"923":1,"957":1,"991":1,"1025":1,"1059":1,"1093":1,"1129":1,"1239":1,"1292":1,"1328":1,"1338":1,"1384":1,"1400":1,"1402":1,"1406":1,"1415":1,"1416":1,"1430":1,"1451":1,"1504":1,"1507":1,"1576":1,"1577":1,"1628":1,"1631":1,"1666":1,"1717":1,"1721":1,"1729":1,"1803":5,"1804":3,"1805":1,"1855":1,"1856":2,"1857":1,"1859":3,"1860":1,"1861":1,"1863":4,"1864":1,"1865":1,"1866":1,"1867":1,"1868":1,"1869":1,"1870":2,"1872":1,"1873":1,"1874":1,"1887":3,"1897":1,"1899":1,"1952":1,"2044":1,"2060":1,"2063":1,"2109":1,"2125":1,"2126":2,"2131":2,"2148":2,"2232":1,"2234":1,"2241":1,"2243":1,"2244":1,"2245":1,"2246":1,"2247":1,"2248":1,"2249":1,"2252":1,"2259":1,"2261":6,"2262":1,"2277":1,"2305":1,"2341":1,"2346":1,"2348":1,"2513":1,"2522":1,"2610":1,"2727":3}}],["settings",{"0":{"697":1,"1859":1,"1860":1,"1861":1,"1863":1,"1864":1,"1909":1,"1916":1,"2038":1,"2702":1,"2703":1,"2704":1,"2708":1},"1":{"1910":1,"1911":1,"1912":1,"1913":1,"1914":1,"1915":1,"1916":1,"1917":1},"2":{"69":1,"74":1,"75":1,"114":1,"131":1,"134":1,"291":1,"331":1,"496":1,"498":2,"505":5,"582":1,"659":1,"697":1,"821":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1129":1,"1243":1,"1292":1,"1331":3,"1332":2,"1379":2,"1385":1,"1399":1,"1495":1,"1498":1,"1511":1,"1513":1,"1570":2,"1573":3,"1676":1,"1803":1,"1804":2,"1805":1,"1806":1,"1807":1,"1808":1,"1859":1,"1863":1,"1910":1,"2064":1,"2131":1,"2150":1,"2175":1,"2261":1,"2263":1,"2299":2,"2300":1,"2448":1,"2490":1,"2508":4,"2513":1,"2553":1,"2556":1,"2566":1,"2607":1,"2610":1,"2705":1,"2710":1,"2728":1,"2735":1,"2736":1,"2737":1}}],["sets",{"2":{"50":1,"502":5,"505":4,"511":1,"576":1,"582":3,"638":1,"641":3,"655":1,"1332":1,"1341":4,"1406":5,"1554":2,"1573":3,"1580":1,"1717":1,"1730":5,"1806":3,"1822":4,"1856":5,"1857":3,"1859":3,"1863":7,"1868":1,"1870":8,"1874":2,"1875":2,"1883":1,"1894":1,"1954":7,"1959":1,"2033":1,"2055":2,"2126":1,"2128":3,"2131":3,"2143":2,"2174":3,"2175":1,"2227":1,"2232":1,"2234":1,"2241":1,"2246":1,"2248":1,"2259":2,"2299":1,"2300":1,"2566":1}}],["sethsv",{"0":{"2012":1,"2014":1},"1":{"2015":1},"2":{"49":1,"582":1,"1332":7,"1953":1,"1960":1,"2051":7,"2054":2,"2058":3}}],["setups",{"2":{"659":1,"662":1,"1830":6,"2408":1}}],["setup",{"0":{"302":1,"449":1,"1124":1,"1127":1,"1130":1,"1298":1,"1433":1,"1434":1,"1575":1,"1657":1,"2430":1,"2443":1,"2444":1,"2468":1,"2508":1},"1":{"450":1,"451":1,"452":1,"1434":1,"1435":1,"1436":1,"1576":1,"1577":1,"2431":1,"2432":1,"2433":1},"2":{"14":1,"23":1,"93":1,"176":1,"302":1,"322":1,"331":1,"332":1,"334":2,"365":1,"366":1,"428":1,"445":1,"449":1,"456":1,"574":1,"624":1,"702":1,"1129":1,"1176":1,"1197":1,"1237":1,"1338":1,"1416":1,"1435":1,"1560":1,"1815":1,"1821":1,"1824":1,"1825":1,"1830":2,"1873":1,"2042":1,"2073":1,"2139":1,"2177":1,"2262":1,"2276":1,"2289":1,"2290":1,"2291":1,"2300":1,"2309":1,"2418":1,"2428":2,"2429":1,"2432":1,"2438":1,"2440":1,"2442":1,"2468":8,"2502":1,"2634":1,"2743":2}}],["set",{"0":{"350":1,"647":1,"649":1,"652":1,"675":1,"677":1,"741":1,"743":1,"745":1,"747":1,"749":1,"751":1,"768":1,"770":1,"772":1,"774":1,"776":1,"778":1,"800":1,"802":1,"804":1,"806":1,"808":1,"810":1,"832":1,"834":1,"836":1,"838":1,"840":1,"842":1,"867":1,"869":1,"871":1,"873":1,"875":1,"877":1,"901":1,"903":1,"905":1,"907":1,"909":1,"911":1,"935":1,"937":1,"939":1,"941":1,"943":1,"945":1,"969":1,"971":1,"973":1,"975":1,"977":1,"979":1,"1003":1,"1005":1,"1007":1,"1009":1,"1011":1,"1013":1,"1037":1,"1039":1,"1041":1,"1043":1,"1045":1,"1047":1,"1071":1,"1073":1,"1075":1,"1077":1,"1079":1,"1081":1,"1105":1,"1107":1,"1109":1,"1111":1,"1113":1,"1115":1,"1158":1,"1160":1,"1162":1,"1164":1,"1166":1,"1168":1,"1343":1,"1345":1,"1545":1,"1603":1,"1626":1,"1628":1,"1653":1,"1743":1,"1745":1,"1767":1,"1769":1,"1851":1,"1898":1,"1970":1,"1972":1,"2006":1,"2008":1,"2188":1,"2192":1,"2194":1,"2277":1,"2504":1},"1":{"648":1,"650":1,"653":1,"676":1,"678":1,"742":1,"744":1,"746":1,"748":1,"750":1,"752":1,"769":1,"771":1,"773":1,"775":1,"777":1,"779":1,"801":1,"803":1,"805":1,"807":1,"809":1,"811":1,"833":1,"835":1,"837":1,"839":1,"841":1,"843":1,"868":1,"870":1,"872":1,"874":1,"876":1,"878":1,"902":1,"904":1,"906":1,"908":1,"910":1,"912":1,"936":1,"938":1,"940":1,"942":1,"944":1,"946":1,"970":1,"972":1,"974":1,"976":1,"978":1,"980":1,"1004":1,"1006":1,"1008":1,"1010":1,"1012":1,"1014":1,"1038":1,"1040":1,"1042":1,"1044":1,"1046":1,"1048":1,"1072":1,"1074":1,"1076":1,"1078":1,"1080":1,"1082":1,"1106":1,"1108":1,"1110":1,"1112":1,"1114":1,"1116":1,"1159":1,"1161":1,"1163":1,"1165":1,"1167":1,"1169":1,"1546":1,"1604":1,"1627":1,"1629":1,"1654":1,"1744":1,"1746":1,"1768":1,"1770":1,"1852":1,"1971":1,"1973":1,"2007":1,"2009":1,"2189":1,"2193":1,"2195":1,"2505":1,"2506":1,"2507":1,"2508":1,"2509":1,"2510":1},"2":{"6":1,"23":1,"25":1,"28":1,"30":1,"33":1,"38":1,"49":1,"50":2,"63":1,"83":1,"90":1,"92":1,"93":1,"114":2,"134":1,"141":1,"153":2,"163":1,"173":2,"191":5,"195":2,"199":3,"209":1,"211":1,"222":2,"228":1,"236":4,"243":6,"266":2,"277":2,"317":1,"360":1,"365":2,"366":2,"367":1,"371":1,"385":1,"396":2,"411":2,"413":1,"414":1,"415":1,"417":1,"430":1,"433":1,"438":1,"446":1,"462":1,"496":1,"497":1,"501":1,"502":1,"505":1,"509":4,"512":1,"520":1,"529":1,"558":1,"574":1,"576":6,"578":1,"580":2,"592":1,"593":2,"594":2,"596":1,"602":1,"607":1,"610":3,"625":1,"641":3,"643":1,"647":1,"648":3,"649":1,"650":3,"652":1,"653":1,"656":1,"662":1,"665":1,"675":1,"676":3,"677":1,"678":3,"689":1,"696":16,"699":1,"703":1,"707":4,"727":1,"730":1,"739":1,"740":1,"741":1,"742":3,"743":1,"744":3,"745":1,"746":1,"747":1,"748":1,"756":1,"758":1,"766":1,"767":1,"768":1,"769":3,"770":1,"771":3,"772":1,"773":1,"774":1,"775":1,"785":1,"787":1,"796":1,"797":1,"800":1,"801":3,"802":1,"803":3,"804":1,"805":1,"806":1,"807":1,"817":1,"819":1,"830":1,"831":1,"832":1,"833":3,"834":1,"835":3,"836":1,"837":1,"838":1,"839":1,"849":1,"851":1,"852":1,"863":1,"864":1,"867":1,"868":3,"869":1,"870":3,"871":1,"872":1,"873":1,"874":1,"884":1,"886":1,"897":1,"898":1,"901":1,"902":3,"903":1,"904":3,"905":1,"906":1,"907":1,"908":1,"918":1,"920":1,"931":1,"932":1,"935":1,"936":3,"937":1,"938":3,"939":1,"940":1,"941":1,"942":1,"952":1,"954":1,"965":1,"966":1,"969":1,"970":3,"971":1,"972":3,"973":1,"974":1,"975":1,"976":1,"986":1,"988":1,"999":1,"1000":1,"1003":1,"1004":3,"1005":1,"1006":3,"1007":1,"1008":1,"1009":1,"1010":1,"1020":1,"1022":1,"1023":1,"1033":1,"1034":1,"1037":1,"1038":3,"1039":1,"1040":3,"1041":1,"1042":1,"1043":1,"1044":1,"1054":1,"1056":1,"1057":1,"1067":1,"1068":1,"1071":1,"1072":3,"1073":1,"1074":3,"1075":1,"1076":1,"1077":1,"1078":1,"1088":1,"1090":1,"1101":1,"1102":1,"1105":1,"1106":3,"1107":1,"1108":3,"1109":1,"1110":1,"1111":1,"1112":1,"1144":1,"1146":1,"1154":1,"1155":1,"1158":1,"1159":3,"1160":1,"1161":3,"1162":1,"1163":1,"1164":1,"1165":1,"1174":1,"1177":1,"1181":1,"1195":1,"1198":1,"1213":1,"1214":1,"1230":1,"1255":1,"1294":1,"1300":4,"1303":1,"1304":1,"1318":1,"1319":1,"1321":1,"1329":4,"1330":1,"1331":1,"1332":9,"1335":1,"1336":1,"1338":1,"1340":1,"1341":8,"1343":2,"1344":1,"1345":2,"1346":1,"1347":1,"1355":1,"1383":6,"1385":2,"1387":1,"1390":2,"1393":1,"1394":1,"1397":2,"1399":1,"1400":4,"1401":1,"1404":1,"1411":1,"1416":1,"1430":1,"1431":2,"1436":1,"1441":1,"1451":1,"1456":1,"1459":1,"1464":1,"1469":1,"1479":1,"1480":1,"1495":1,"1496":1,"1507":2,"1513":1,"1514":2,"1515":1,"1525":4,"1526":1,"1530":3,"1533":1,"1534":1,"1545":1,"1570":1,"1573":3,"1575":1,"1576":2,"1579":3,"1594":1,"1600":1,"1605":1,"1626":1,"1628":1,"1638":4,"1646":1,"1653":1,"1654":2,"1665":1,"1670":6,"1671":4,"1716":1,"1722":3,"1725":1,"1726":2,"1729":2,"1730":5,"1733":4,"1743":1,"1744":1,"1745":1,"1746":1,"1747":1,"1749":1,"1767":1,"1768":1,"1769":1,"1770":1,"1793":49,"1801":3,"1803":1,"1804":1,"1806":1,"1807":5,"1816":1,"1817":6,"1820":1,"1822":5,"1826":4,"1837":1,"1841":1,"1851":1,"1859":1,"1863":1,"1870":3,"1871":1,"1874":2,"1875":3,"1876":2,"1878":2,"1879":4,"1880":13,"1882":4,"1883":4,"1885":2,"1886":1,"1887":5,"1894":13,"1897":3,"1898":8,"1899":2,"1907":1,"1910":6,"1911":1,"1912":1,"1936":1,"1942":4,"1946":1,"1947":2,"1949":3,"1950":1,"1952":2,"1954":8,"1957":4,"1958":4,"1959":3,"1970":1,"1971":3,"1972":1,"1973":3,"1974":1,"1976":1,"2006":1,"2007":1,"2008":1,"2009":1,"2012":1,"2013":3,"2014":1,"2015":3,"2043":6,"2044":1,"2047":1,"2048":3,"2050":2,"2051":10,"2052":2,"2054":2,"2055":2,"2056":1,"2060":4,"2063":1,"2066":1,"2072":1,"2076":1,"2099":1,"2107":1,"2112":2,"2113":12,"2119":1,"2126":1,"2128":3,"2131":5,"2141":2,"2143":1,"2147":2,"2149":1,"2150":3,"2152":3,"2153":1,"2154":1,"2161":2,"2162":1,"2167":1,"2171":6,"2174":1,"2175":4,"2183":2,"2188":1,"2189":1,"2227":1,"2228":1,"2229":1,"2243":1,"2252":1,"2254":1,"2261":1,"2262":2,"2263":2,"2264":1,"2272":1,"2298":1,"2299":1,"2300":2,"2304":1,"2305":1,"2311":1,"2317":1,"2319":1,"2341":1,"2348":1,"2353":1,"2360":1,"2367":1,"2370":2,"2371":49,"2372":3,"2385":1,"2396":2,"2411":1,"2420":1,"2421":4,"2442":1,"2445":1,"2448":1,"2454":1,"2456":1,"2458":1,"2469":1,"2472":1,"2477":1,"2480":4,"2490":3,"2491":1,"2492":2,"2503":1,"2504":2,"2506":1,"2508":2,"2513":2,"2524":1,"2555":1,"2567":1,"2574":2,"2575":5,"2576":2,"2577":10,"2581":1,"2605":1,"2606":2,"2607":4,"2615":1,"2661":1,"2666":1,"2679":1,"2696":2,"2710":1,"2711":2,"2727":1,"2728":1,"2730":1,"2737":4,"2744":1,"2748":1,"2749":1}}],["se",{"2":{"5":1,"176":1,"2069":4}}],["seeks",{"2":{"2355":1}}],["seen",{"2":{"175":1,"232":1,"625":1,"1398":1,"1451":1,"2128":1,"2483":1}}],["seem",{"2":{"119":1,"273":1,"276":2,"1298":1,"1683":1,"2577":1}}],["seems",{"2":{"50":1,"1283":1}}],["sees",{"0":{"1565":1},"2":{"49":1,"215":1,"1670":1}}],["see",{"2":{"2":1,"14":1,"118":1,"132":1,"138":1,"152":1,"153":1,"166":1,"172":1,"174":1,"179":1,"182":2,"186":1,"189":1,"196":1,"228":1,"229":1,"232":1,"240":1,"247":1,"279":1,"313":1,"315":1,"331":2,"341":1,"349":1,"372":1,"408":1,"409":1,"410":1,"429":1,"432":2,"492":1,"496":1,"502":2,"505":4,"511":3,"515":2,"535":1,"540":1,"547":1,"610":2,"624":1,"626":2,"638":1,"639":1,"656":1,"659":3,"661":1,"681":2,"687":1,"690":1,"693":1,"701":1,"704":1,"705":1,"788":1,"1127":4,"1130":4,"1218":1,"1235":1,"1238":2,"1241":1,"1242":1,"1243":1,"1254":1,"1255":5,"1260":1,"1265":1,"1267":1,"1277":1,"1278":1,"1281":1,"1282":1,"1289":1,"1297":1,"1300":1,"1325":2,"1330":1,"1332":1,"1334":1,"1335":2,"1341":1,"1359":1,"1365":1,"1376":1,"1380":2,"1383":1,"1389":1,"1393":1,"1402":1,"1406":1,"1407":1,"1412":1,"1416":1,"1431":1,"1441":1,"1446":1,"1460":1,"1471":1,"1498":2,"1499":2,"1501":1,"1511":1,"1565":1,"1582":2,"1589":1,"1659":1,"1662":1,"1675":3,"1714":1,"1724":1,"1791":1,"1863":2,"1873":1,"1875":1,"1876":1,"1885":2,"1897":1,"1908":1,"1910":2,"1932":1,"1939":1,"1945":1,"1958":1,"1959":1,"2031":1,"2032":1,"2041":1,"2044":1,"2047":1,"2048":1,"2072":1,"2105":1,"2128":1,"2145":1,"2171":1,"2178":1,"2229":1,"2240":1,"2255":2,"2258":1,"2259":2,"2263":6,"2273":1,"2280":1,"2287":1,"2288":1,"2289":1,"2290":1,"2291":1,"2298":1,"2299":1,"2300":1,"2311":2,"2325":1,"2335":1,"2355":1,"2356":1,"2357":1,"2358":1,"2359":1,"2360":1,"2361":1,"2362":1,"2363":1,"2364":1,"2365":1,"2366":1,"2367":2,"2368":1,"2369":1,"2370":1,"2371":1,"2372":1,"2373":1,"2374":1,"2375":1,"2376":1,"2377":1,"2378":1,"2379":1,"2380":1,"2381":1,"2382":1,"2383":1,"2384":1,"2385":1,"2405":1,"2409":1,"2416":1,"2422":1,"2424":1,"2440":1,"2450":1,"2453":1,"2454":2,"2460":1,"2474":1,"2477":1,"2490":2,"2521":1,"2533":1,"2553":2,"2555":1,"2559":1,"2561":1,"2562":1,"2564":1,"2565":1,"2566":4,"2569":1,"2570":2,"2576":2,"2577":2,"2587":3,"2588":1,"2593":1,"2596":3,"2603":1,"2614":1,"2615":1,"2671":1,"2697":4,"2702":1,"2727":1,"2728":1,"2739":1,"2748":1}}],["swy",{"2":{"821":4,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1}}],["sw1",{"2":{"669":6,"824":5,"857":5,"891":5,"925":5,"959":5,"993":5,"1027":5,"1061":5,"1095":5}}],["swo",{"2":{"334":1}}],["swordfish",{"2":{"222":1}}],["swclk",{"2":{"334":2,"2352":1,"2353":1,"2513":1,"2530":1}}],["swdio",{"2":{"334":2,"2352":1,"2353":1,"2513":1,"2530":1}}],["swd",{"2":{"322":1,"328":1,"334":1,"2530":1}}],["swx",{"2":{"236":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1024":3,"1055":1,"1058":3,"1089":1,"1092":3}}],["sw",{"2":{"217":1,"818":3,"821":15,"850":1,"854":2,"885":1,"888":2,"919":1,"922":2,"953":1,"956":2,"987":1,"990":2,"1021":2,"1024":6,"1055":2,"1058":6,"1089":2,"1092":6,"1948":1,"2034":1,"2376":1}}],["switzerland",{"2":{"2712":2}}],["switched",{"2":{"1340":1,"1399":1,"2035":1,"2491":1}}],["switches",{"0":{"1547":1,"1792":1,"1828":1,"2682":1},"1":{"1548":1,"1549":1,"1550":1,"1551":1,"1552":1},"2":{"114":1,"199":1,"236":1,"247":1,"249":1,"563":1,"1236":1,"1276":1,"1325":1,"1326":1,"1335":1,"1406":1,"1471":1,"1547":1,"1548":3,"1573":2,"1792":1,"1828":1,"1937":1,"2117":1,"2267":1,"2268":2,"2269":1,"2270":1,"2311":1,"2479":1,"2625":1,"2682":2,"2697":1}}],["switchplate",{"2":{"211":1}}],["switchs",{"2":{"160":1}}],["switching",{"0":{"1335":1,"2149":1,"2367":1},"1":{"1336":1},"2":{"50":1,"114":1,"132":1,"191":1,"516":1,"1275":2,"1295":1,"1335":1,"1337":1,"1454":1,"1494":1,"1633":1,"1816":1,"1828":1,"1829":1,"1918":1,"2140":1,"2145":2,"2161":1,"2348":1,"2367":1}}],["switch",{"0":{"26":1,"105":1,"231":1,"247":1,"1276":1,"1541":1,"1542":1,"1543":1,"1544":1,"1548":1,"1551":2,"1552":2,"2171":1},"2":{"3":1,"15":1,"16":1,"94":1,"105":15,"107":1,"114":8,"191":2,"194":3,"195":2,"231":3,"235":1,"236":5,"247":7,"249":4,"334":1,"502":3,"534":2,"563":1,"572":1,"573":1,"626":1,"1234":1,"1236":3,"1253":1,"1276":1,"1288":1,"1294":1,"1302":2,"1303":1,"1325":5,"1326":1,"1332":2,"1335":2,"1339":3,"1340":1,"1343":1,"1344":1,"1359":3,"1360":2,"1365":1,"1375":1,"1384":1,"1385":1,"1404":1,"1416":3,"1423":2,"1430":3,"1446":2,"1454":1,"1494":1,"1506":1,"1511":1,"1518":5,"1519":1,"1523":2,"1525":1,"1527":1,"1530":3,"1531":2,"1537":2,"1541":1,"1542":1,"1543":1,"1544":1,"1547":8,"1548":7,"1549":7,"1551":1,"1552":1,"1573":6,"1638":1,"1729":1,"1748":1,"1750":1,"1792":1,"1813":1,"1826":1,"1830":1,"1857":1,"1880":1,"1882":1,"1889":1,"1892":1,"1897":1,"1898":2,"1899":1,"1908":1,"1933":2,"1934":1,"1935":2,"1936":2,"1937":1,"1938":1,"1940":1,"1941":2,"1943":4,"1952":1,"1958":1,"1959":1,"1975":1,"1977":1,"2044":2,"2047":1,"2078":1,"2137":1,"2145":2,"2146":2,"2149":3,"2150":1,"2167":1,"2168":1,"2169":2,"2170":2,"2171":7,"2183":1,"2184":6,"2240":1,"2259":1,"2263":1,"2268":2,"2272":1,"2273":5,"2279":1,"2280":2,"2302":2,"2311":3,"2328":1,"2361":1,"2379":1,"2384":6,"2402":2,"2413":1,"2414":1,"2415":1,"2490":1,"2498":1,"2502":1,"2513":1,"2558":2,"2559":1,"2566":2,"2604":1,"2614":4,"2674":2,"2682":1,"2697":1,"2703":1,"2709":1,"2727":3,"2728":2,"2735":2,"2736":2,"2737":1,"2738":1,"2746":3}}],["swillkb",{"2":{"2267":1}}],["swipe",{"2":{"1860":12}}],["swin",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["swirls",{"2":{"2038":1}}],["swirling",{"2":{"2036":1,"2040":1}}],["swirl",{"2":{"292":1,"1948":2,"2034":2,"2036":1,"2037":2,"2038":2,"2039":1,"2040":1,"2062":1,"2063":1,"2376":2,"2708":1}}],["swift65",{"2":{"266":2}}],["swiftrax",{"2":{"191":2,"277":1}}],["swiss",{"2":{"211":1,"2269":1,"2712":4}}],["sweep",{"2":{"191":1,"249":1}}],["swedish",{"2":{"5":2,"1355":1,"2710":1,"2712":11}}],["swapping",{"2":{"194":1,"689":1,"1130":1,"1271":3,"2157":1,"2353":1,"2543":1,"2628":1,"2702":1}}],["swapped",{"0":{"1271":1},"2":{"166":1,"222":1,"681":1,"693":1,"1216":2,"1637":1,"2305":1}}],["swap",{"0":{"2154":1,"2156":1,"2383":1},"1":{"2155":1,"2156":1,"2157":1,"2158":1},"2":{"94":1,"114":1,"149":1,"157":1,"176":2,"191":1,"199":2,"211":2,"231":4,"247":1,"1129":2,"1130":2,"1140":1,"1141":1,"1142":1,"1319":1,"1398":4,"1399":6,"1446":4,"1548":1,"1557":1,"2154":4,"2155":3,"2156":17,"2157":3,"2158":9,"2370":31,"2383":16,"2396":31,"2706":2}}],["sudden",{"2":{"2226":1}}],["sudo",{"2":{"454":1,"1238":8,"1239":6,"1254":1,"2262":1,"2431":7,"2464":7,"2556":1}}],["sunk",{"2":{"667":1,"822":1,"855":1,"889":1,"923":1,"957":1,"991":1,"1025":1,"1059":1,"1093":1}}],["sunsetter",{"2":{"211":1}}],["suffer",{"2":{"660":1,"690":1,"1410":1}}],["sufficient",{"2":{"2149":1,"2567":1,"2745":1}}],["suffices",{"2":{"1670":1}}],["suffice",{"2":{"355":1}}],["suffix",{"2":{"568":4}}],["sugar|",{"2":{"621":1}}],["sugar||order",{"2":{"621":1}}],["sugar",{"2":{"621":1}}],["suggest",{"2":{"2293":1}}],["suggestions",{"2":{"561":1,"2409":1,"2454":1}}],["suggested",{"2":{"199":1,"341":1,"587":1,"1901":1,"2169":1}}],["summary",{"2":{"300":1,"1315":1,"1322":1}}],["sust",{"2":{"1793":1,"2371":1}}],["sustain",{"2":{"249":1,"1793":2,"2371":2}}],["susceptible",{"2":{"341":1,"1325":2,"1329":1}}],["suspense",{"2":{"222":1}}],["suspend",{"0":{"590":2,"591":1,"1774":1,"2019":1},"1":{"1775":1,"2020":1},"2":{"92":3,"93":1,"94":1,"112":1,"114":4,"133":1,"134":1,"149":2,"176":1,"222":3,"249":1,"263":2,"266":1,"277":2,"502":1,"515":1,"588":2,"589":2,"590":2,"591":4,"1774":1,"2019":1,"2125":1,"2573":1,"2577":4,"2699":2}}],["suspended",{"2":{"74":1,"114":2,"134":1,"222":1,"249":2,"590":1,"1570":1,"1577":1,"1730":1,"1775":1,"1954":1,"2020":1}}],["suspending",{"2":{"25":1,"502":1}}],["succeeds",{"2":{"2128":1}}],["succeed",{"2":{"1686":6}}],["success",{"2":{"554":1,"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"1185":1,"1190":1,"1193":1,"2453":4}}],["successfully",{"2":{"407":1,"411":1,"552":1,"1381":1,"1686":1,"1822":1,"2125":1,"2143":1,"2353":1,"2439":1,"2544":1}}],["successful",{"2":{"324":1,"1137":1,"1340":1,"2131":1}}],["successive",{"2":{"266":1}}],["succession",{"2":{"191":1}}],["such",{"2":{"55":1,"69":1,"87":1,"103":1,"118":1,"123":1,"124":1,"126":1,"132":1,"153":1,"163":1,"198":1,"229":1,"230":1,"234":1,"240":1,"244":1,"246":1,"263":1,"352":1,"363":1,"371":1,"374":1,"432":1,"457":1,"479":1,"481":1,"505":1,"529":1,"533":1,"575":1,"585":1,"586":1,"592":2,"599":1,"606":1,"625":1,"630":1,"684":1,"685":1,"694":1,"700":1,"1175":1,"1217":1,"1234":1,"1240":1,"1335":1,"1336":1,"1361":1,"1366":1,"1377":1,"1378":1,"1379":2,"1385":1,"1398":1,"1399":1,"1405":1,"1431":1,"1445":2,"1498":1,"1509":1,"1512":1,"1582":1,"1633":1,"1634":1,"1635":1,"1670":1,"1683":1,"1733":1,"1788":2,"1814":1,"1829":1,"1863":2,"1897":1,"1899":1,"1918":2,"1957":2,"2126":1,"2129":1,"2131":1,"2133":1,"2170":2,"2182":2,"2183":2,"2236":1,"2240":1,"2245":1,"2247":1,"2249":1,"2254":1,"2267":1,"2279":1,"2280":1,"2297":1,"2303":2,"2319":2,"2322":1,"2348":1,"2397":1,"2402":1,"2406":1,"2427":1,"2445":1,"2492":3,"2503":3,"2523":2,"2524":1,"2548":1,"2554":1,"2566":4,"2567":3,"2569":1,"2571":1,"2573":2,"2574":1,"2577":1,"2607":1,"2622":1,"2628":1,"2671":1,"2686":1,"2706":2,"2711":1,"2728":1,"2734":1,"2737":1,"2741":1,"2743":1,"2749":1}}],["surprised",{"2":{"2567":1}}],["surplus",{"2":{"160":1}}],["surrogate",{"2":{"2183":1,"2199":1}}],["surrounding",{"2":{"453":2,"1950":2}}],["surfaces",{"2":{"2272":3,"2576":4}}],["surface",{"2":{"191":1,"1537":1,"1856":1,"1870":1,"2273":1,"2573":2,"2576":29,"2665":1}}],["sure",{"2":{"50":1,"334":1,"360":1,"453":2,"455":1,"508":1,"537":2,"540":1,"548":1,"551":1,"556":7,"557":1,"560":2,"609":1,"613":1,"621":1,"626":1,"627":1,"1240":2,"1242":1,"1260":1,"1283":1,"1286":1,"1332":1,"1335":1,"1336":1,"1375":1,"1430":1,"1515":1,"1521":1,"2105":1,"2118":1,"2131":1,"2145":1,"2169":1,"2171":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2245":1,"2247":1,"2249":1,"2255":1,"2262":1,"2273":1,"2274":1,"2276":1,"2279":1,"2306":1,"2309":1,"2342":1,"2348":1,"2353":1,"2417":1,"2429":1,"2436":1,"2455":1,"2457":1,"2474":1,"2485":1,"2491":1,"2504":1,"2566":1,"2577":1,"2702":1,"2704":1}}],["suits",{"2":{"2479":1}}],["suite",{"2":{"407":2,"411":2}}],["suited",{"2":{"211":1,"355":1}}],["suitable",{"2":{"153":1,"1287":1,"1329":1,"2418":1,"2629":1,"2728":1,"2757":1}}],["suihankey",{"2":{"143":6}}],["supremely",{"2":{"1353":1}}],["superfluous",{"2":{"2728":1}}],["supercharged",{"2":{"1630":1}}],["superior",{"2":{"1321":1,"1326":1}}],["super",{"0":{"1375":1},"2":{"616":1,"2235":1,"2507":1}}],["superscripted",{"2":{"293":1}}],["superscript",{"0":{"293":1}}],["supersedes",{"2":{"2441":1}}],["superseded",{"2":{"3":1,"7":1,"15":1,"25":1,"38":1}}],["superseeds",{"2":{"236":1}}],["suppose",{"2":{"2475":1}}],["supposed",{"2":{"2044":1,"2744":1}}],["supposing",{"2":{"1940":1}}],["supports",{"2":{"166":1,"243":1,"248":1,"313":1,"318":1,"411":1,"454":1,"488":1,"499":1,"513":1,"538":1,"560":1,"589":1,"630":1,"635":1,"641":1,"664":1,"681":3,"684":1,"685":1,"693":1,"694":1,"729":1,"755":1,"784":1,"816":1,"848":1,"883":1,"917":1,"951":1,"985":1,"1019":1,"1053":1,"1087":1,"1125":1,"1143":1,"1319":1,"1327":1,"1335":2,"1349":1,"1553":1,"1573":1,"1575":1,"1802":1,"1822":1,"1858":1,"1862":1,"1863":1,"1870":1,"2031":1,"2114":1,"2118":1,"2144":1,"2145":1,"2149":1,"2150":1,"2181":2,"2182":1,"2183":5,"2262":1,"2302":3,"2341":1,"2441":1,"2503":1,"2548":1,"2549":1,"2574":2,"2575":4,"2724":1,"2729":1}}],["supporting",{"0":{"1347":1,"2613":1},"1":{"2614":1,"2615":1,"2616":1,"2617":1,"2618":1,"2619":1,"2620":1},"2":{"50":1,"318":1,"535":1,"1634":1,"1872":3,"2102":1,"2148":1,"2245":1,"2247":1,"2719":1}}],["supported",{"0":{"1279":1,"1311":1,"1327":1,"1491":1,"1571":1,"1589":1,"1811":1,"2136":1,"2547":1},"1":{"1328":1,"1329":1,"1330":1,"1492":1,"2548":1,"2549":1},"2":{"49":2,"69":1,"118":1,"137":1,"153":1,"154":2,"163":2,"172":1,"213":1,"248":1,"262":1,"266":1,"285":1,"318":1,"371":1,"374":1,"437":1,"455":1,"511":1,"538":1,"560":1,"600":1,"606":1,"624":1,"630":1,"635":1,"656":2,"661":1,"663":2,"681":1,"1128":1,"1132":2,"1133":2,"1134":1,"1227":1,"1230":1,"1265":1,"1273":1,"1279":1,"1315":2,"1316":2,"1317":2,"1322":2,"1336":1,"1357":1,"1359":1,"1394":1,"1457":1,"1463":1,"1466":1,"1467":1,"1491":2,"1492":2,"1493":1,"1509":1,"1547":1,"1557":1,"1589":1,"1636":1,"1724":1,"1813":1,"1820":2,"1854":1,"1862":1,"1863":1,"1865":1,"1867":1,"1870":1,"1871":1,"1872":2,"1874":2,"1875":1,"1910":1,"1911":1,"1912":1,"1945":1,"2072":2,"2075":1,"2146":1,"2161":2,"2183":1,"2245":1,"2247":1,"2252":1,"2263":3,"2350":1,"2421":1,"2441":1,"2454":2,"2469":1,"2523":1,"2543":2,"2546":2,"2548":4,"2552":1,"2565":1,"2567":1,"2573":1,"2574":2,"2578":3,"2623":1,"2686":2,"2702":1}}],["support",{"0":{"14":1,"35":1,"80":1,"81":1,"100":1,"108":1,"118":1,"130":1,"138":1,"145":1,"163":1,"232":1,"533":1,"534":1,"1217":1,"1263":1,"1276":1,"1289":1,"1381":1,"1509":1,"1902":1,"2076":1,"2380":1,"2384":1,"2522":1,"2543":1,"2550":1,"2551":1,"2552":1,"2711":1,"2717":1},"1":{"36":1,"1264":1,"1903":1,"1904":1,"1905":1,"1906":1,"1907":1,"1908":1,"1909":1,"1910":1,"1911":1,"1912":1,"1913":1,"1914":1,"1915":1,"1916":1,"1917":1,"2718":1,"2719":1,"2720":1,"2721":1},"2":{"10":3,"35":1,"46":1,"49":4,"50":2,"63":5,"65":1,"74":3,"75":1,"76":1,"81":1,"86":2,"89":1,"93":12,"107":1,"108":1,"113":1,"114":15,"118":2,"120":1,"130":5,"131":1,"133":1,"134":14,"138":1,"145":1,"146":1,"149":9,"153":1,"154":1,"156":1,"160":7,"163":2,"167":1,"175":4,"176":18,"189":2,"190":1,"191":9,"199":10,"201":1,"210":3,"211":28,"213":1,"218":1,"222":5,"232":2,"234":1,"236":14,"248":2,"249":11,"262":1,"265":1,"266":4,"277":2,"320":2,"370":1,"374":1,"391":1,"403":1,"414":1,"415":1,"417":1,"423":1,"424":1,"432":1,"433":1,"470":1,"492":1,"493":2,"495":1,"502":2,"505":1,"506":1,"515":2,"534":1,"535":1,"537":2,"606":1,"607":1,"608":1,"609":1,"642":1,"654":2,"688":1,"1121":1,"1195":1,"1212":1,"1214":1,"1240":1,"1264":1,"1265":1,"1276":1,"1278":1,"1319":1,"1321":1,"1323":1,"1324":1,"1326":1,"1330":1,"1347":1,"1352":1,"1377":2,"1383":1,"1384":1,"1399":1,"1411":1,"1454":1,"1455":2,"1491":3,"1493":1,"1494":1,"1549":1,"1562":2,"1635":1,"1728":1,"1799":1,"1811":1,"1821":2,"1832":1,"1872":1,"1921":1,"1948":2,"1949":2,"2063":1,"2064":1,"2107":1,"2108":2,"2128":1,"2129":7,"2132":1,"2145":1,"2153":1,"2154":1,"2172":1,"2183":3,"2229":1,"2238":1,"2252":1,"2259":1,"2263":2,"2277":1,"2284":2,"2286":1,"2287":1,"2288":1,"2289":1,"2290":1,"2291":1,"2304":1,"2325":1,"2335":1,"2377":2,"2384":1,"2417":1,"2418":1,"2441":1,"2474":3,"2497":1,"2506":3,"2513":1,"2522":2,"2523":1,"2531":1,"2535":1,"2546":10,"2548":1,"2549":3,"2550":1,"2553":2,"2565":1,"2566":1,"2567":2,"2573":2,"2576":11,"2613":1,"2617":1,"2674":1,"2701":1,"2703":2,"2710":2,"2714":1,"2718":1,"2719":1,"2753":1}}],["suppression",{"2":{"1677":1,"2738":1}}],["suppress",{"2":{"1670":3}}],["suppressed",{"2":{"1668":1,"1670":2,"1673":1,"1674":1,"1677":2,"1863":1}}],["supplements",{"2":{"572":1}}],["supplement",{"2":{"563":1}}],["supplying",{"2":{"598":1}}],["supply",{"2":{"123":1,"318":1,"370":1,"454":1,"457":1,"1225":1,"1471":1,"2514":1}}],["supplied",{"2":{"118":1,"146":1,"230":1,"305":1,"374":1,"393":2,"394":2,"416":1,"430":3,"1177":1,"1182":1,"1361":1,"2523":1,"2544":1,"2575":1,"2576":1,"2577":14,"2581":1}}],["sublime",{"2":{"2485":1}}],["subfolder",{"2":{"2259":1,"2294":1,"2753":1}}],["subchain",{"2":{"1451":1}}],["subcommands",{"0":{"430":1},"2":{"427":1,"429":1,"430":1,"442":1}}],["subcommand|general|default>",{"2":{"416":1}}],["subcommand",{"2":{"95":1,"114":1,"132":1,"134":1,"149":1,"380":1,"413":1,"428":3,"430":5,"432":1,"433":1,"435":1,"436":3,"441":1}}],["subreddit",{"0":{"2715":1},"2":{"551":1,"2280":1}}],["subprocess",{"2":{"484":1}}],["subjective",{"2":{"2567":1}}],["subject",{"2":{"317":1,"2485":1,"2577":1}}],["subdirectories",{"2":{"236":1,"2259":1}}],["subdirectory",{"2":{"160":1,"176":1}}],["subtracting",{"2":{"1880":1}}],["subtracted",{"2":{"465":1}}],["subtlety",{"2":{"194":1}}],["subtarget",{"2":{"49":1}}],["subs",{"2":{"1527":2}}],["subscripted",{"2":{"293":1}}],["substrings",{"2":{"1441":1}}],["substring",{"2":{"1441":1,"2753":1,"2754":1}}],["substraction",{"2":{"1326":1}}],["substituting",{"2":{"341":1}}],["substitutions",{"2":{"49":1}}],["substantially",{"2":{"109":1}}],["subsequent",{"2":{"341":1,"358":1,"1520":1,"2577":1,"2719":1}}],["subsequently",{"2":{"49":1,"265":1,"340":1,"2448":1,"2567":1,"2581":1}}],["subset",{"2":{"65":1,"681":1,"1822":1,"2320":1,"2749":1,"2753":1}}],["subsystem==",{"2":{"1254":1}}],["subsystems",{"0":{"2181":1},"1":{"2182":1},"2":{"77":2,"163":1,"198":1,"2114":1,"2178":1,"2181":1,"2543":1,"2548":2,"2720":1}}],["subsystem",{"0":{"234":1,"1131":1},"1":{"1132":1,"1133":1,"1134":1},"2":{"11":1,"107":1,"114":2,"153":1,"175":1,"244":1,"317":2,"515":1,"690":1,"1126":1,"1127":2,"1130":2,"1132":1,"1133":2,"1134":1,"1723":1,"1908":1,"1944":1}}],["sub",{"0":{"293":1,"2295":1},"2":{"6":1,"113":1,"114":1,"133":1,"134":1,"149":1,"499":1,"513":1,"1240":1,"2294":1,"2295":7,"2299":21,"2300":21,"2596":1}}],["submission",{"2":{"352":2,"353":1,"355":1,"356":1,"2566":1}}],["submissions",{"2":{"103":1,"126":1,"275":1,"341":1,"1376":1,"2565":1,"2566":1}}],["submits",{"2":{"519":1}}],["submit",{"2":{"304":1,"352":1,"354":2,"447":1,"554":1,"556":2,"559":2,"560":1,"2567":1,"2656":2}}],["submitters",{"2":{"2564":1,"2566":2}}],["submitter",{"2":{"341":1,"2564":1,"2567":1}}],["submitted",{"2":{"116":1,"522":1,"2563":1,"2564":1,"2565":1,"2566":2,"2719":1}}],["submitting",{"0":{"314":1},"2":{"1":1,"307":1,"315":1,"560":1,"622":1,"2255":2,"2566":1}}],["submodules=on",{"2":{"2477":2}}],["submodules",{"0":{"10":1,"360":1},"2":{"10":1,"26":1,"69":1,"266":1,"349":1,"360":1,"2252":2,"2255":2,"2437":1,"2477":2}}],["submodule",{"0":{"6":1,"12":1,"21":1},"2":{"6":1,"10":1,"12":1,"21":1,"24":1,"114":2,"134":1,"160":1,"176":4,"191":1,"199":4,"211":2,"222":1,"249":2,"266":1,"349":2,"2255":4}}],["soi8",{"2":{"2518":1}}],["socket",{"2":{"2117":1,"2275":1}}],["sockets",{"2":{"114":1,"2117":1}}],["sost",{"2":{"1793":1,"2371":1}}],["sostenuto",{"2":{"1793":2,"2371":2}}],["sodium62",{"2":{"249":1}}],["soda",{"2":{"176":1,"226":2,"236":2}}],["sonix",{"2":{"1143":1}}],["sony",{"2":{"133":1,"134":1}}],["songs",{"0":{"1398":1},"2":{"654":1,"1398":2,"1399":1,"1400":1,"2607":2}}],["song",{"0":{"27":1},"2":{"27":1,"134":1,"572":1,"1332":1,"1398":23,"1399":16,"1448":4,"1549":4,"1686":12,"1718":4,"2074":1,"2180":10,"2607":4}}],["sofle",{"2":{"114":1,"134":1,"249":1}}],["soft",{"2":{"63":1,"112":2,"199":3,"277":4,"453":1,"455":1,"511":2,"592":3,"593":1,"594":1,"1123":1,"1124":1,"1136":1,"1578":4,"1793":3,"2119":1,"2128":2,"2225":1,"2371":3,"2541":1,"2608":1,"2697":1}}],["software",{"0":{"323":1,"662":1,"1394":1,"1463":1,"2341":1,"2351":1,"2612":1},"1":{"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"1395":1},"2":{"14":2,"215":1,"324":2,"627":1,"656":1,"662":2,"663":1,"1325":2,"1362":1,"1380":2,"1394":2,"1459":1,"1460":1,"1463":1,"1821":1,"1832":1,"1906":1,"2065":1,"2115":1,"2131":1,"2169":1,"2177":1,"2314":1,"2317":1,"2320":2,"2417":2,"2418":1,"2456":1,"2457":1,"2492":1,"2506":2,"2570":2,"2635":1,"2636":1,"2647":1,"2676":1,"2677":2,"2720":1,"2750":1}}],["sought",{"2":{"2551":1}}],["sourcing",{"2":{"2519":1}}],["sources",{"2":{"173":1,"606":1,"2183":1,"2564":1,"2566":2}}],["source",{"0":{"310":1},"2":{"5":1,"36":1,"67":1,"86":1,"102":1,"122":1,"130":1,"132":1,"143":1,"159":1,"168":1,"181":1,"197":1,"199":1,"234":1,"304":1,"305":2,"310":1,"312":1,"316":2,"322":1,"367":1,"380":1,"450":1,"522":2,"525":1,"527":2,"554":1,"564":1,"606":2,"638":1,"684":1,"685":1,"1279":3,"1377":4,"1446":1,"1733":1,"1820":4,"1826":1,"1855":1,"1867":1,"1869":1,"1957":1,"2060":2,"2144":1,"2183":1,"2235":1,"2242":1,"2244":1,"2262":11,"2277":1,"2300":1,"2322":1,"2323":1,"2328":1,"2400":1,"2407":1,"2418":1,"2428":1,"2435":2,"2438":1,"2440":2,"2468":1,"2492":1,"2503":1,"2524":1,"2525":1,"2526":1,"2564":2,"2566":3,"2578":1,"2647":1,"2709":3,"2753":2}}],["south",{"2":{"1915":1}}],["southpad",{"2":{"226":2,"236":1}}],["southpaw75",{"2":{"67":2,"72":1}}],["southpole",{"2":{"159":2}}],["sound",{"2":{"1393":1,"1398":3,"1399":14,"1406":3,"1448":2,"1507":1,"1686":2,"1718":3,"2074":2,"2491":1,"2607":3}}],["soundmonster",{"2":{"92":1}}],["sounds",{"2":{"74":1,"1386":1,"1398":2,"1406":3,"1511":1,"1573":1,"2102":1,"2180":1,"2607":2}}],["solus",{"2":{"2431":1,"2464":1}}],["solutions",{"2":{"1259":1}}],["solution",{"0":{"1677":1},"2":{"1225":1,"1248":1,"1416":1,"1438":1,"1441":1,"1508":1,"1524":1,"1570":1,"2065":1,"2548":1}}],["solve",{"2":{"1336":1,"2411":1,"2474":1}}],["solves",{"2":{"1274":1}}],["solved",{"2":{"613":1}}],["sold",{"2":{"624":1}}],["soldering",{"0":{"2272":1,"2273":1,"2274":1},"1":{"2273":1,"2274":1},"2":{"1492":1,"2061":1,"2266":2,"2270":1,"2272":3,"2273":3,"2274":1,"2276":2}}],["solder",{"2":{"207":2,"211":4,"253":1,"266":1,"2061":1,"2133":2,"2266":1,"2270":1,"2272":12,"2273":6,"2274":3,"2276":2,"2279":4,"2328":1}}],["solderd",{"2":{"176":1}}],["soldered",{"2":{"122":1,"197":1,"199":1,"211":4,"226":1,"241":2,"1589":1,"2270":1,"2273":3,"2279":1}}],["solanis",{"2":{"211":1}}],["solidifies",{"2":{"2273":1}}],["solid",{"0":{"1951":1},"2":{"176":1,"249":1,"266":2,"1332":1,"1728":28,"1730":1,"1949":32,"1951":2,"1960":2,"2036":2,"2040":1,"2273":1,"2688":1,"2695":1,"2708":10}}],["sol3",{"2":{"149":1,"176":1}}],["sol",{"2":{"114":1,"149":1,"176":1}}],["solomon",{"2":{"2270":1,"2281":1}}],["solo",{"2":{"107":1,"114":1}}],["solenoids",{"0":{"1573":1},"2":{"160":1,"1573":2}}],["solenoid",{"2":{"64":1,"114":1,"134":1,"191":1,"221":2,"236":1,"1570":2,"1572":3,"1573":28}}],["solheim68",{"2":{"57":2}}],["sorts",{"2":{"2322":1}}],["sorting",{"2":{"110":1,"211":1}}],["sort",{"2":{"49":1,"209":1,"211":1,"290":1,"592":1,"1278":1,"2117":1,"2273":1}}],["sooner",{"2":{"468":1,"2162":1}}],["soon",{"2":{"49":1,"315":1,"336":1,"505":1,"660":1,"1234":4,"1294":1,"1335":2,"1375":1,"1885":1,"2311":1}}],["somewhat",{"2":{"1273":1,"2181":1,"2255":1,"2523":1}}],["somewhere",{"2":{"350":1,"367":1,"373":1,"1362":1,"1887":1,"1901":1,"2474":1,"2728":1}}],["somebody",{"2":{"1260":1,"2510":3,"2714":1}}],["someone",{"2":{"479":1,"481":1,"551":1,"557":1,"613":1,"2309":1,"2418":1}}],["something",{"2":{"125":1,"137":2,"185":1,"315":1,"352":1,"433":1,"434":1,"529":1,"572":2,"587":1,"597":1,"626":1,"628":1,"1249":1,"1325":1,"1332":2,"1340":1,"1363":1,"1383":1,"1384":1,"1398":1,"1402":1,"1403":1,"1412":1,"1459":1,"1497":1,"1499":1,"1507":2,"1655":1,"1680":1,"1683":1,"1791":1,"1807":1,"1898":1,"1959":1,"2064":1,"2128":1,"2161":1,"2272":1,"2273":1,"2276":2,"2327":1,"2422":1,"2468":1,"2474":1,"2477":1,"2480":1,"2491":1,"2513":1,"2569":1,"2575":1,"2612":2,"2714":1}}],["sometimes",{"2":{"119":1,"415":1,"434":1,"457":1,"481":1,"538":1,"606":1,"626":2,"627":1,"656":1,"1250":1,"1269":1,"1325":1,"1326":1,"1339":1,"1340":1,"1359":1,"1458":1,"1630":1,"1684":1,"1880":1,"2255":1,"2279":1,"2327":1,"2401":1,"2406":1,"2473":1,"2490":1,"2549":1,"2614":1,"2719":1,"2746":1,"2757":1}}],["some",{"0":{"365":1,"1271":1,"2277":1},"2":{"2":1,"12":1,"25":1,"28":1,"50":1,"64":1,"95":1,"113":3,"114":6,"123":3,"124":1,"134":1,"149":4,"153":1,"157":1,"158":3,"160":4,"166":1,"174":2,"176":1,"182":2,"191":5,"196":1,"199":2,"209":1,"211":8,"215":1,"218":1,"222":2,"234":2,"235":1,"236":7,"246":1,"256":1,"266":3,"300":2,"307":1,"312":1,"331":1,"334":1,"335":1,"350":1,"352":3,"380":1,"428":1,"436":1,"441":1,"452":1,"453":1,"454":1,"455":2,"479":1,"481":1,"498":1,"499":1,"505":1,"512":1,"516":1,"538":1,"550":1,"551":1,"556":1,"559":1,"560":2,"578":1,"609":3,"624":1,"626":2,"628":1,"635":3,"659":1,"660":1,"684":1,"698":3,"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"1129":1,"1130":1,"1190":1,"1193":1,"1215":1,"1216":1,"1217":1,"1262":1,"1269":1,"1287":2,"1288":1,"1295":1,"1298":2,"1300":1,"1303":1,"1325":2,"1337":1,"1340":1,"1351":1,"1363":1,"1364":2,"1366":1,"1378":1,"1385":1,"1386":1,"1403":2,"1415":1,"1416":1,"1435":1,"1492":1,"1495":1,"1497":1,"1498":1,"1515":2,"1519":2,"1527":1,"1528":1,"1554":1,"1556":1,"1570":1,"1573":1,"1670":1,"1676":1,"1678":1,"1721":1,"1729":3,"1788":1,"1815":2,"1825":1,"1828":1,"1829":1,"1885":1,"1894":1,"1910":1,"1918":1,"1921":1,"1936":1,"1952":3,"1954":1,"1957":1,"2031":1,"2044":2,"2060":3,"2061":1,"2110":1,"2114":1,"2123":1,"2125":1,"2126":1,"2131":2,"2139":2,"2145":1,"2150":1,"2161":1,"2169":1,"2177":1,"2182":1,"2183":1,"2226":1,"2228":1,"2230":1,"2233":1,"2236":1,"2240":1,"2244":1,"2261":1,"2262":5,"2267":1,"2270":1,"2272":1,"2273":1,"2274":1,"2275":1,"2276":2,"2292":1,"2307":1,"2320":1,"2328":2,"2344":1,"2346":1,"2347":1,"2348":1,"2353":1,"2393":1,"2401":1,"2405":2,"2407":1,"2408":1,"2410":1,"2423":1,"2428":1,"2450":1,"2456":1,"2466":1,"2472":2,"2484":1,"2507":1,"2510":1,"2513":2,"2529":1,"2550":1,"2560":1,"2565":1,"2576":4,"2577":3,"2585":1,"2592":1,"2615":1,"2662":1,"2702":2,"2703":1,"2705":1,"2708":2,"2718":2,"2723":1,"2724":3,"2726":1,"2752":1,"2753":2,"2757":1}}],["so",{"2":{"0":1,"9":1,"13":2,"19":1,"39":1,"50":1,"52":1,"60":1,"73":1,"99":1,"112":1,"114":1,"118":1,"149":2,"163":2,"174":1,"176":1,"182":2,"191":1,"199":1,"231":1,"232":1,"245":1,"248":1,"273":1,"291":1,"324":1,"329":1,"337":2,"341":1,"350":1,"430":1,"435":1,"446":1,"454":2,"467":1,"481":1,"527":1,"530":1,"551":2,"554":1,"557":1,"560":1,"588":1,"602":1,"606":1,"616":1,"617":1,"625":1,"627":1,"641":1,"660":1,"683":1,"690":1,"702":1,"1132":1,"1133":1,"1137":1,"1177":1,"1195":1,"1236":1,"1237":1,"1250":1,"1265":1,"1270":2,"1272":1,"1273":1,"1278":2,"1284":1,"1287":1,"1290":1,"1300":1,"1303":2,"1304":1,"1332":2,"1336":1,"1338":1,"1344":1,"1346":1,"1353":1,"1355":1,"1359":2,"1360":1,"1383":2,"1385":2,"1396":1,"1403":1,"1405":1,"1406":1,"1438":2,"1439":2,"1442":1,"1451":1,"1464":1,"1471":1,"1493":1,"1495":2,"1497":1,"1527":1,"1530":1,"1553":1,"1557":1,"1562":1,"1567":1,"1576":1,"1594":1,"1634":1,"1677":1,"1723":1,"1791":2,"1794":1,"1807":2,"1809":1,"1821":1,"1830":1,"1870":1,"1871":1,"1874":2,"1875":2,"1878":1,"1880":1,"1882":1,"1934":1,"1936":1,"1938":1,"1940":1,"1944":1,"2041":1,"2044":1,"2051":1,"2073":1,"2107":1,"2108":1,"2130":1,"2133":1,"2146":1,"2147":1,"2149":1,"2153":1,"2161":1,"2168":1,"2169":2,"2171":1,"2181":1,"2254":1,"2262":1,"2264":2,"2268":1,"2273":2,"2279":1,"2282":1,"2307":1,"2309":2,"2311":3,"2319":1,"2327":1,"2341":1,"2353":1,"2404":1,"2410":1,"2411":1,"2425":1,"2429":1,"2445":1,"2457":1,"2466":1,"2476":1,"2480":1,"2491":1,"2495":1,"2496":1,"2508":1,"2512":1,"2513":2,"2516":1,"2525":1,"2529":1,"2533":1,"2557":1,"2566":3,"2567":1,"2569":1,"2576":2,"2577":2,"2605":1,"2607":2,"2608":1,"2610":1,"2616":1,"2619":1,"2654":1,"2701":1,"2702":2,"2708":1,"2710":1,"2711":1,"2728":2,"2738":1,"2740":1,"2741":1,"2746":1,"2750":1,"2753":1,"2754":1,"2757":2}}],["ndel",{"2":{"2615":1}}],["ndash",{"2":{"286":1,"1933":3,"2147":1}}],["n↓",{"2":{"2615":1}}],["n→",{"2":{"2615":1}}],["n←",{"2":{"2615":1}}],["n↑",{"2":{"2615":1}}],["nhome",{"2":{"2615":1}}],["nhd",{"2":{"2136":1}}],["nrf5",{"2":{"2549":1}}],["nrf51822",{"2":{"1491":1,"1492":1}}],["nrst",{"2":{"2245":2,"2247":2,"2353":1,"2513":1,"2516":1}}],["nb",{"2":{"2153":1}}],["n9",{"2":{"2153":1}}],["n8",{"2":{"2153":1}}],["n7",{"2":{"2153":1}}],["n3",{"2":{"1793":1,"2153":1,"2371":1}}],["n4",{"2":{"1793":1,"2153":1,"2371":1}}],["n40",{"2":{"222":1}}],["n5",{"2":{"1793":1,"2153":1,"2371":1}}],["n2",{"2":{"1793":2,"2153":1,"2371":2}}],["nter",{"2":{"1943":1}}],["ntil",{"2":{"1499":1}}],["nt660",{"2":{"57":2}}],["nfer",{"2":{"1280":1}}],["ns",{"2":{"1221":1}}],["n1",{"2":{"349":1,"1793":2,"2153":1,"2371":2}}],["nucleo64",{"2":{"2566":1}}],["nucleo",{"2":{"2566":1}}],["nuanced",{"2":{"1802":1}}],["nubs",{"2":{"313":1,"530":2,"2355":1,"2388":1,"2407":1}}],["nuhs",{"2":{"313":1,"530":2,"2355":1,"2388":1,"2407":1}}],["nullbitsco",{"2":{"277":1}}],["null",{"2":{"222":1,"249":1,"272":2,"315":1,"598":3,"1451":1,"1594":1,"1668":1,"1670":2,"1923":1,"2168":1,"2169":1,"2170":1,"2171":1,"2577":4}}],["nue",{"2":{"211":1}}],["numlock",{"2":{"1234":2}}],["numerous",{"2":{"188":1,"2114":1}}],["numerically",{"2":{"1340":1}}],["numerical",{"2":{"1340":1,"2710":1}}],["numeric",{"0":{"1420":1,"1427":1,"1587":1},"2":{"181":2,"532":1,"1416":1,"1420":1,"1423":2,"1587":1,"2172":1}}],["numpad",{"2":{"134":1,"143":2,"211":1,"236":1,"2183":1,"2196":1,"2391":1,"2614":5,"2615":5,"2745":1,"2746":2}}],["num",{"2":{"70":1,"188":1,"191":2,"199":1,"201":3,"222":2,"247":2,"249":2,"370":3,"371":2,"511":1,"641":1,"1276":1,"1329":1,"1330":1,"1548":2,"1559":2,"1585":1,"1714":1,"1715":2,"1717":1,"1813":2,"1959":1,"2038":1,"2048":1,"2050":1,"2129":1,"2137":2,"2153":12,"2157":1,"2355":5,"2389":5,"2574":2,"2576":11,"2577":2,"2587":1,"2615":3,"2616":2,"2685":2,"2744":1,"2747":1,"2748":1}}],["numbered",{"2":{"282":1,"639":1,"1338":2,"1339":1}}],["numbers",{"0":{"2386":1},"2":{"166":1,"465":2,"570":1,"1353":1,"1791":1,"2036":1,"2122":1,"2228":1,"2294":1,"2315":1,"2405":1,"2474":1,"2533":3,"2571":1,"2660":1}}],["number",{"0":{"532":1,"1232":1,"2091":1,"2093":1,"2095":1,"2097":1,"2394":1},"1":{"1233":1,"2092":1,"2094":1,"2096":1,"2098":1},"2":{"95":1,"114":2,"119":1,"134":1,"163":1,"166":2,"169":1,"174":3,"183":1,"199":1,"201":2,"211":1,"215":1,"233":1,"236":1,"324":1,"363":1,"364":1,"370":2,"396":1,"411":1,"463":1,"464":2,"465":4,"502":4,"506":4,"516":1,"554":1,"560":1,"570":2,"589":1,"597":1,"598":1,"601":1,"606":1,"612":1,"641":1,"659":4,"684":1,"685":1,"687":1,"688":1,"689":3,"690":3,"691":3,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"731":1,"757":1,"786":1,"799":1,"818":1,"850":1,"866":1,"885":1,"900":1,"919":1,"934":1,"953":1,"968":1,"987":1,"1002":1,"1021":1,"1036":1,"1055":1,"1070":1,"1089":1,"1104":1,"1132":1,"1133":1,"1145":1,"1157":1,"1181":1,"1189":1,"1192":1,"1207":1,"1209":1,"1214":1,"1233":1,"1265":1,"1331":1,"1338":1,"1341":2,"1347":1,"1353":1,"1361":1,"1378":1,"1384":1,"1393":1,"1447":1,"1451":2,"1452":1,"1457":1,"1466":1,"1530":1,"1554":1,"1556":1,"1578":1,"1579":2,"1591":2,"1604":2,"1655":1,"1676":1,"1725":4,"1730":3,"1794":1,"1803":1,"1804":3,"1807":1,"1815":1,"1817":1,"1820":4,"1822":2,"1827":1,"1854":1,"1868":2,"1946":4,"1950":2,"1954":3,"2032":3,"2035":3,"2036":4,"2038":5,"2044":1,"2060":1,"2092":1,"2094":1,"2096":1,"2098":1,"2120":1,"2128":4,"2131":4,"2139":1,"2142":1,"2143":2,"2145":1,"2150":1,"2152":2,"2153":12,"2157":1,"2161":1,"2169":1,"2170":1,"2214":1,"2262":2,"2266":1,"2268":3,"2269":2,"2284":1,"2319":1,"2417":1,"2474":5,"2475":1,"2490":1,"2508":1,"2510":1,"2514":1,"2515":2,"2524":1,"2533":3,"2539":1,"2553":1,"2556":1,"2574":3,"2575":2,"2576":10,"2577":5,"2587":1,"2593":1,"2595":1,"2597":1,"2600":1,"2605":1,"2607":1,"2611":1,"2622":1,"2640":1,"2648":1,"2653":1,"2660":1,"2677":1,"2683":2,"2684":1,"2688":4,"2691":1,"2694":5,"2695":6,"2699":3,"2701":1,"2705":1,"2709":1,"2719":1,"2757":2}}],["numbering",{"2":{"50":1,"635":1}}],["numbrero",{"2":{"43":2}}],["nvram",{"2":{"191":1}}],["nvm",{"2":{"131":1,"134":1}}],["nqg",{"2":{"181":2,"191":1}}],["nc",{"2":{"2153":1}}],["ncr80",{"2":{"277":1}}],["ncc1701kb",{"2":{"249":1}}],["nced",{"2":{"176":1}}],["nckiibs",{"2":{"86":8}}],["nnbs",{"2":{"176":1}}],["nkeys",{"2":{"1530":1}}],["nk",{"2":{"211":1,"235":1,"2044":3,"2145":1,"2370":3,"2396":3}}],["nknl7jp",{"2":{"143":2}}],["nknl7en",{"2":{"143":2}}],["nk87b",{"2":{"211":1}}],["nk87",{"2":{"143":2,"211":1}}],["nk65",{"2":{"143":2}}],["nk1",{"2":{"143":2}}],["nkro",{"0":{"235":1,"1288":1,"2653":1},"2":{"50":1,"70":1,"111":1,"112":1,"191":1,"199":2,"211":1,"235":2,"236":3,"277":1,"502":1,"504":3,"515":2,"516":2,"1288":4,"1298":1,"1493":2,"1530":2,"2044":1,"2145":6,"2263":8,"2370":3,"2396":3,"2566":1,"2648":1,"2659":1,"2699":2,"2702":1}}],["nibble",{"0":{"2097":1},"1":{"2098":1}}],["nins",{"2":{"2615":1}}],["nine",{"2":{"1420":1}}],["ninja",{"2":{"191":1,"241":2}}],["nit",{"2":{"455":1}}],["nitty",{"0":{"2409":1},"2":{"303":1}}],["nickname",{"2":{"2479":1}}],["nicinabox",{"2":{"2134":1}}],["nicities",{"2":{"436":1}}],["nicer",{"2":{"2565":1}}],["nicest",{"2":{"2160":1}}],["nice",{"2":{"431":1,"433":1,"1262":1,"2031":1,"2134":1,"2508":1}}],["nightly",{"2":{"211":1,"222":1}}],["niu",{"2":{"143":2,"149":1}}],["nixpkgs",{"2":{"249":1}}],["nix",{"2":{"113":1,"114":1,"176":1,"211":1,"249":1}}],["npgdn",{"2":{"2615":1}}],["npgup",{"2":{"2615":1}}],["npkc",{"2":{"2040":1}}],["npn",{"2":{"1458":1}}],["npm",{"2":{"324":1}}],["npminila",{"2":{"143":2}}],["npspears",{"2":{"149":1}}],["np21",{"2":{"143":2,"149":2}}],["nphhkb",{"2":{"143":2}}],["np64",{"2":{"143":2}}],["n6",{"2":{"114":1,"1793":1,"2153":1,"2371":1}}],["nxp",{"0":{"491":1},"2":{"108":1,"2243":1,"2622":1}}],["nyquist",{"2":{"45":1}}],["na",{"2":{"2153":1}}],["nav",{"0":{"1586":1},"2":{"1525":5,"1527":2,"1586":1}}],["navigate",{"2":{"2278":1,"2347":1,"2452":1,"2548":1}}],["navigation",{"2":{"1932":2,"2402":1,"2492":1,"2503":1}}],["navigating",{"2":{"558":1,"2256":1}}],["navi10",{"2":{"159":2}}],["nack",{"2":{"211":1}}],["nacly",{"2":{"143":2,"149":2,"249":1}}],["nanoseconds",{"2":{"1214":3,"1224":2}}],["nano",{"2":{"191":1,"495":1}}],["naked64",{"2":{"143":2}}],["naked60",{"2":{"143":2}}],["naked48",{"2":{"143":2}}],["naiping",{"2":{"143":6}}],["nafuda",{"2":{"143":2}}],["naming",{"0":{"221":1,"233":1,"460":1,"2294":1},"1":{"461":1},"2":{"134":1,"156":1,"167":1,"182":2,"221":1,"222":6,"224":1,"233":2,"236":9,"238":1,"243":1,"244":1,"249":1,"266":1,"557":1,"570":1,"1293":1,"1326":7,"2181":1,"2452":1,"2553":1,"2564":1,"2565":1}}],["name|description|",{"2":{"621":1}}],["name|short",{"2":{"621":1}}],["named",{"2":{"271":1,"314":1,"389":1,"390":1,"391":1,"430":1,"485":1,"534":1,"1272":1,"1346":2,"1376":2,"1377":1,"1813":1,"2137":1,"2277":1,"2302":2,"2433":1,"2476":1,"2480":1,"2614":1,"2615":1,"2624":1,"2657":1,"2658":1,"2746":1,"2757":1}}],["namely",{"2":{"202":1,"1385":1,"2235":1}}],["namecard2x4",{"2":{"143":2}}],["name>",{"2":{"55":2,"370":6,"371":2,"1380":1,"1385":1,"2422":1,"2452":2}}],["name",{"0":{"57":1,"285":1,"539":1,"2301":1,"2302":1},"2":{"37":2,"43":2,"55":1,"56":2,"57":2,"58":2,"67":2,"70":1,"86":3,"102":2,"111":1,"114":2,"122":2,"134":1,"143":2,"149":2,"159":2,"167":1,"168":2,"169":1,"181":2,"182":2,"184":1,"188":1,"191":1,"197":2,"199":3,"207":2,"217":2,"226":2,"231":1,"236":1,"241":2,"253":2,"266":3,"270":2,"277":1,"279":1,"341":1,"370":1,"374":2,"385":1,"400":3,"405":1,"413":1,"425":2,"426":4,"430":12,"433":1,"436":2,"437":1,"457":1,"460":9,"461":1,"470":2,"502":1,"529":1,"532":1,"539":1,"554":3,"559":2,"609":1,"627":1,"628":3,"629":5,"1236":1,"1300":1,"1329":2,"1347":2,"1352":1,"1376":7,"1377":5,"1378":4,"1379":4,"1380":2,"1381":1,"1383":2,"1384":1,"1385":3,"1397":1,"1436":3,"1518":4,"1527":1,"1571":1,"1578":4,"1579":2,"1728":1,"1729":1,"1853":1,"1923":1,"1949":1,"1952":1,"2174":1,"2175":1,"2183":6,"2252":1,"2262":1,"2279":1,"2286":2,"2294":1,"2296":4,"2299":1,"2302":2,"2303":1,"2309":7,"2318":1,"2347":1,"2351":1,"2405":2,"2421":2,"2422":1,"2436":1,"2437":7,"2438":1,"2445":3,"2454":1,"2474":1,"2479":5,"2480":3,"2501":4,"2513":4,"2553":3,"2556":4,"2559":1,"2566":1,"2570":2,"2607":1,"2615":6,"2671":1,"2672":1,"2673":1,"2686":2,"2753":1,"2757":2}}],["names",{"0":{"461":1,"1269":1},"2":{"36":1,"37":1,"43":1,"92":1,"114":1,"157":1,"182":2,"188":3,"191":3,"222":2,"241":2,"253":2,"270":2,"277":1,"375":1,"448":1,"457":1,"460":2,"461":2,"532":1,"641":1,"1132":1,"1133":1,"1269":2,"1346":1,"1351":2,"1499":1,"2172":1,"2181":2,"2262":2,"2294":3,"2302":1,"2405":2,"2557":1,"2566":3,"2614":1,"2686":2}}],["narrow",{"2":{"119":1,"176":1,"1921":1}}],["nat",{"2":{"2750":1}}],["nature",{"2":{"606":1,"1134":1,"1894":1}}],["naturally",{"2":{"1677":1,"2149":1,"2738":1}}],["natural",{"2":{"119":1,"1405":1,"2727":1}}],["natively",{"2":{"1821":1,"2530":1}}],["native",{"2":{"38":1,"49":1,"248":1,"249":1,"487":1,"529":1,"2462":1,"2574":2,"2575":2,"2576":11,"2577":3,"2754":1}}],["n",{"0":{"2653":1},"2":{"14":1,"196":1,"236":1,"266":2,"313":1,"375":2,"376":2,"396":2,"401":1,"430":1,"462":1,"515":1,"530":2,"556":1,"758":2,"787":2,"819":2,"851":2,"852":2,"886":2,"920":2,"954":2,"988":2,"1022":2,"1023":2,"1056":2,"1057":2,"1090":2,"1132":1,"1133":1,"1142":1,"1146":2,"1197":6,"1252":1,"1255":1,"1288":1,"1326":1,"1359":2,"1448":1,"1458":1,"1471":1,"1493":1,"1530":2,"1593":1,"1605":1,"1680":1,"1686":1,"1722":3,"1726":2,"1813":4,"1820":2,"1932":1,"1934":1,"1947":2,"2075":1,"2078":1,"2112":6,"2130":2,"2137":4,"2145":1,"2150":1,"2152":4,"2180":5,"2182":1,"2346":1,"2355":9,"2370":3,"2386":3,"2396":3,"2407":1,"2575":4,"2589":3,"2595":3,"2597":4,"2599":3}}],["neo2",{"2":{"2712":2}}],["neopad",{"2":{"241":2}}],["nend",{"2":{"2615":1}}],["neat",{"2":{"2270":1,"2704":1}}],["near",{"2":{"1375":1,"1398":1,"1728":2,"1865":1,"1949":2,"2274":1,"2614":1}}],["nearest",{"2":{"1181":1,"2153":1}}],["nearly",{"2":{"496":1,"606":1,"2355":1,"2480":1,"2534":1}}],["nearfield",{"2":{"211":1}}],["neighbour",{"2":{"2272":1}}],["neighboring",{"2":{"1950":1}}],["neither",{"2":{"430":1,"435":1,"626":1,"1411":1,"2127":1,"2244":1,"2603":1,"2610":1}}],["negated",{"2":{"2587":1,"2593":1,"2594":1}}],["negatively",{"2":{"2129":1,"2719":1}}],["negative",{"0":{"1661":1,"1662":1},"2":{"584":1,"656":1,"662":1,"726":1,"1391":1,"1392":1,"1395":1,"1399":1,"1661":1,"1668":1,"1670":2,"1671":2,"1673":2,"1674":1,"1940":1}}],["neg",{"2":{"2587":2,"2588":1,"2589":1,"2593":1,"2594":2,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1}}],["negmods",{"0":{"1661":1,"1662":1},"2":{"1659":1,"1665":5}}],["nexus",{"2":{"1728":3,"1949":3,"2708":1}}],["nexecstart=",{"2":{"1239":2}}],["next",{"0":{"339":1,"350":1,"543":1},"1":{"340":1},"2":{"23":1,"103":1,"104":1,"133":1,"134":1,"156":1,"203":1,"230":1,"236":1,"265":1,"276":1,"331":2,"339":1,"341":1,"346":1,"347":2,"350":1,"453":1,"587":1,"588":1,"616":1,"657":2,"658":2,"659":3,"661":2,"1132":2,"1133":2,"1212":1,"1221":1,"1303":1,"1335":1,"1344":4,"1402":2,"1403":2,"1408":4,"1452":2,"1500":1,"1506":1,"1518":1,"1520":1,"1527":1,"1559":1,"1567":1,"1572":3,"1591":1,"1605":1,"1630":1,"1632":1,"1665":3,"1727":2,"1743":1,"1745":1,"1751":1,"1752":1,"1815":1,"1822":4,"1889":1,"1921":1,"1932":2,"1970":1,"1972":1,"1978":1,"1979":1,"2031":1,"2034":2,"2052":2,"2084":1,"2088":1,"2126":1,"2139":1,"2143":4,"2156":1,"2161":1,"2169":1,"2183":2,"2184":2,"2190":1,"2226":1,"2268":1,"2273":1,"2274":1,"2313":1,"2353":1,"2355":4,"2357":4,"2366":1,"2369":2,"2376":2,"2383":1,"2384":2,"2393":4,"2395":1,"2408":1,"2436":1,"2490":1,"2501":1,"2513":2,"2525":1,"2548":1,"2557":1,"2559":1,"2711":1}}],["networks",{"2":{"1491":1}}],["net",{"2":{"358":1,"1289":1,"1290":1}}],["necessarily",{"2":{"2533":1,"2565":1}}],["necessary",{"0":{"2499":1},"2":{"218":1,"234":1,"313":1,"322":1,"323":1,"324":1,"331":2,"334":1,"335":1,"377":1,"401":1,"515":1,"584":1,"627":1,"661":1,"707":1,"726":1,"1142":1,"1215":1,"1265":1,"1430":1,"1553":1,"1560":1,"1670":2,"1671":1,"1673":5,"1902":1,"1920":1,"2125":1,"2142":1,"2148":1,"2243":1,"2263":1,"2272":1,"2300":1,"2328":1,"2348":1,"2431":1,"2451":1,"2458":1,"2461":1,"2496":1,"2542":1,"2566":3,"2671":1,"2728":1}}],["necessitating",{"2":{"352":1}}],["never",{"0":{"2478":1},"1":{"2479":1,"2480":1,"2481":1},"2":{"229":1,"432":1,"434":1,"460":1,"554":1,"568":1,"593":1,"594":1,"1504":1,"1553":1,"1671":1,"1894":1,"2418":1,"2472":1,"2473":1,"2475":1,"2478":1,"2568":2,"2743":1}}],["neutralized",{"2":{"1677":1,"2738":1}}],["neutralizer",{"2":{"1677":4,"2738":4}}],["neutralize",{"2":{"222":1,"1677":6,"2738":6}}],["nebula68",{"2":{"143":2}}],["nebula68b",{"2":{"143":2,"253":2,"266":1}}],["nebula12b",{"2":{"211":1}}],["nebula12",{"2":{"143":2}}],["nest",{"2":{"2295":1}}],["nesting",{"2":{"1553":1,"1554":1,"2170":1}}],["nested",{"0":{"296":1,"297":1,"2732":1},"2":{"134":1,"282":4,"296":1,"297":1,"299":2,"611":1,"1554":1,"2686":1,"2735":3}}],["neson",{"2":{"114":1}}],["nerdtkl",{"2":{"18":1}}],["nerd60",{"2":{"18":1}}],["nerdd",{"2":{"18":1}}],["nerd",{"0":{"18":1},"2":{"18":3}}],["needle",{"2":{"2266":1,"2273":1}}],["needlessly",{"2":{"1898":1}}],["needless",{"2":{"222":2,"2611":1}}],["needing",{"2":{"125":1,"164":1,"185":1,"228":1,"1630":1,"2146":1,"2279":1}}],["needs",{"0":{"1289":1},"2":{"46":1,"349":1,"352":1,"354":1,"371":1,"399":1,"401":1,"580":1,"597":1,"598":1,"636":1,"657":1,"658":1,"681":1,"684":1,"689":1,"690":1,"691":1,"693":1,"1234":1,"1335":1,"1383":1,"1398":1,"1448":1,"1518":3,"1537":1,"1642":1,"1866":1,"1897":1,"1901":1,"2123":1,"2147":1,"2149":1,"2157":1,"2181":1,"2263":2,"2286":1,"2298":1,"2311":1,"2327":2,"2354":1,"2480":1,"2512":1,"2513":2,"2521":1,"2523":1,"2551":1,"2552":1,"2566":1,"2575":1,"2577":2,"2614":1,"2615":1,"2671":1,"2683":1,"2749":1}}],["needed",{"2":{"21":1,"45":1,"113":1,"134":1,"158":1,"179":1,"196":1,"329":1,"358":1,"453":1,"455":1,"506":2,"580":1,"607":1,"654":1,"1123":1,"1126":2,"1129":1,"1234":1,"1254":1,"1319":2,"1363":1,"1376":1,"1409":1,"1447":1,"1491":1,"1497":1,"1511":1,"1573":1,"1668":1,"1872":1,"1898":1,"1899":1,"1903":1,"1940":1,"1950":1,"2114":1,"2130":1,"2150":1,"2154":1,"2161":2,"2171":1,"2304":1,"2431":1,"2461":1,"2464":1,"2477":1,"2480":1,"2503":1,"2506":2,"2509":1,"2553":1,"2564":1,"2620":2,"2702":1,"2742":1,"2753":1}}],["need",{"0":{"1409":1,"2283":1,"2325":1},"1":{"1410":1,"1411":1,"1412":1,"1413":1,"1414":1,"1415":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"1423":1,"1424":1,"1425":1,"1426":1,"1427":1,"1428":1,"1429":1,"1430":1,"1431":1,"1432":1,"1433":1,"1434":1,"1435":1,"1436":1},"2":{"5":1,"7":1,"14":1,"22":1,"31":1,"45":1,"49":1,"50":1,"89":1,"90":1,"107":1,"118":1,"124":1,"158":2,"164":1,"194":1,"199":1,"218":1,"220":1,"222":1,"232":1,"240":1,"241":1,"253":1,"255":1,"256":1,"259":1,"270":1,"272":2,"282":3,"326":1,"331":1,"341":2,"349":1,"352":1,"357":1,"358":1,"364":1,"374":1,"401":1,"434":1,"437":1,"440":1,"450":2,"462":1,"466":2,"471":1,"472":1,"478":1,"482":1,"505":2,"530":1,"532":1,"553":1,"557":1,"560":1,"575":1,"578":1,"580":1,"585":1,"586":1,"606":1,"607":2,"613":1,"614":2,"626":1,"628":1,"630":1,"643":1,"660":1,"661":1,"665":1,"668":1,"687":1,"689":2,"700":1,"701":1,"703":2,"730":1,"733":1,"756":1,"759":1,"785":1,"789":1,"817":1,"822":1,"823":1,"849":1,"855":1,"856":1,"884":1,"889":1,"890":1,"918":1,"923":1,"924":1,"952":1,"957":1,"958":1,"986":1,"991":1,"992":1,"1020":1,"1025":1,"1026":1,"1054":1,"1059":1,"1060":1,"1088":1,"1093":1,"1094":1,"1136":1,"1144":1,"1147":1,"1175":1,"1176":1,"1177":2,"1196":1,"1198":2,"1213":1,"1216":1,"1226":1,"1227":1,"1230":1,"1236":1,"1238":1,"1239":1,"1241":1,"1242":1,"1254":1,"1258":2,"1264":1,"1270":1,"1276":1,"1287":1,"1288":1,"1291":1,"1302":1,"1312":1,"1332":1,"1336":1,"1339":1,"1352":2,"1355":1,"1363":1,"1377":1,"1383":1,"1385":2,"1423":1,"1435":2,"1439":3,"1440":1,"1450":1,"1451":1,"1457":1,"1459":1,"1469":2,"1470":1,"1495":1,"1496":1,"1497":2,"1500":1,"1508":2,"1509":1,"1512":1,"1518":2,"1521":1,"1527":1,"1534":1,"1548":1,"1558":1,"1559":1,"1573":1,"1630":1,"1657":2,"1668":2,"1670":2,"1671":1,"1684":1,"1715":1,"1791":3,"1812":1,"1815":1,"1821":1,"1854":2,"1870":2,"1898":1,"1902":1,"1907":1,"1910":1,"1918":1,"1921":1,"1922":1,"1934":1,"1950":1,"2032":1,"2042":2,"2047":1,"2051":1,"2061":1,"2063":2,"2064":1,"2073":1,"2117":2,"2119":1,"2120":1,"2121":1,"2126":2,"2128":2,"2130":1,"2131":1,"2133":4,"2134":1,"2137":1,"2139":1,"2145":1,"2150":1,"2152":1,"2161":1,"2168":1,"2169":4,"2170":1,"2171":2,"2181":1,"2183":2,"2238":1,"2240":1,"2242":1,"2244":1,"2255":1,"2256":1,"2261":1,"2262":3,"2263":3,"2266":1,"2272":1,"2273":2,"2277":1,"2279":2,"2297":1,"2299":2,"2320":1,"2327":2,"2328":2,"2329":1,"2333":1,"2342":1,"2351":1,"2405":1,"2411":1,"2424":1,"2425":1,"2429":2,"2432":1,"2433":1,"2442":2,"2446":1,"2454":1,"2456":1,"2457":3,"2459":1,"2460":1,"2462":1,"2464":1,"2475":1,"2477":2,"2480":2,"2490":2,"2492":1,"2495":1,"2496":1,"2497":1,"2499":1,"2503":1,"2507":1,"2508":1,"2510":1,"2513":3,"2530":1,"2553":1,"2564":3,"2565":1,"2568":1,"2573":2,"2575":1,"2577":3,"2578":1,"2614":1,"2662":1,"2671":1,"2701":2,"2702":2,"2708":1,"2711":1,"2714":1,"2718":1,"2722":1,"2728":5,"2741":2,"2749":1,"2757":2}}],["newhaven",{"2":{"2136":1}}],["newbs",{"2":{"624":2,"1258":1,"2442":1,"2482":1,"2504":1,"2568":2}}],["newline",{"2":{"1255":1,"1361":2,"1605":1}}],["newlines",{"2":{"282":1,"454":1,"2407":1}}],["newlib",{"2":{"191":1}}],["newly",{"2":{"188":1,"191":1,"266":1,"275":1,"1385":1,"2162":1,"2278":1,"2448":1,"2508":1,"2513":1,"2564":1,"2567":1}}],["newest",{"2":{"163":1,"173":1,"346":1,"349":1,"350":1}}],["newer",{"2":{"10":2,"49":1,"123":1,"133":1,"149":1,"157":1,"236":3,"1932":1,"2230":1,"2701":1}}],["news",{"2":{"133":1,"134":1}}],["new",{"0":{"82":1,"112":1,"130":1,"145":1,"146":1,"385":1,"386":1,"570":1,"1678":1,"2422":1,"2550":1,"2551":1,"2552":1,"2753":1},"1":{"147":1,"148":1,"1679":1,"1680":1,"1681":1,"1682":1,"1683":1,"1684":1,"1685":1,"1686":1,"1687":1,"1688":1,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1695":1,"1696":1,"1697":1,"1698":1,"1699":1,"1700":1,"1701":1,"1702":1,"1703":1,"1704":1,"1705":1,"1706":1,"1707":1,"1708":1,"1709":1,"1710":1,"1711":1,"1712":1,"1713":1},"2":{"1":1,"22":1,"24":1,"25":1,"36":1,"37":2,"38":1,"43":2,"46":1,"49":1,"56":2,"57":1,"58":1,"67":1,"70":4,"82":1,"86":1,"93":1,"99":2,"102":1,"103":1,"112":2,"113":2,"114":3,"118":3,"122":1,"123":1,"125":1,"126":1,"130":1,"132":1,"133":1,"134":4,"143":1,"149":7,"152":1,"153":2,"156":2,"158":1,"159":1,"160":1,"164":1,"167":1,"168":1,"173":2,"176":2,"181":1,"182":5,"183":3,"185":1,"186":1,"191":1,"194":1,"197":1,"199":3,"202":1,"203":1,"207":1,"211":1,"213":1,"217":1,"218":1,"219":1,"221":6,"224":1,"226":1,"228":3,"229":1,"230":2,"234":1,"236":3,"240":1,"241":1,"243":2,"244":1,"249":2,"253":1,"254":1,"265":1,"266":3,"270":1,"271":1,"273":1,"277":1,"291":2,"304":1,"340":2,"341":2,"343":1,"350":2,"352":1,"360":1,"373":1,"384":1,"385":2,"386":2,"389":1,"390":1,"391":3,"426":2,"427":1,"436":1,"481":1,"483":1,"515":2,"554":2,"559":1,"560":2,"564":2,"569":1,"571":1,"592":1,"607":2,"609":2,"613":2,"614":3,"621":1,"622":1,"624":1,"626":1,"627":1,"628":1,"1254":1,"1260":1,"1265":1,"1272":1,"1332":2,"1344":1,"1346":1,"1359":1,"1385":5,"1413":1,"1434":1,"1435":1,"1448":1,"1464":1,"1527":1,"1725":1,"1729":2,"1736":1,"1738":1,"1740":1,"1749":1,"1752":1,"1754":1,"1758":1,"1760":1,"1764":1,"1766":1,"1768":1,"1769":1,"1770":1,"1808":2,"1815":1,"1816":1,"1822":2,"1823":1,"1871":1,"1874":2,"1876":1,"1885":1,"1946":1,"1952":2,"1963":1,"1965":1,"1967":1,"1976":1,"1979":1,"1981":1,"1985":1,"1987":1,"1991":1,"1993":1,"1997":1,"1999":1,"2003":1,"2005":1,"2007":1,"2008":1,"2009":1,"2014":1,"2106":1,"2139":1,"2143":2,"2147":2,"2150":1,"2155":1,"2162":1,"2193":1,"2195":1,"2234":1,"2245":1,"2247":1,"2249":1,"2250":1,"2255":1,"2263":1,"2273":1,"2277":2,"2304":1,"2305":1,"2345":1,"2347":1,"2349":2,"2421":1,"2422":4,"2426":1,"2441":1,"2445":4,"2448":1,"2459":1,"2460":1,"2477":1,"2478":2,"2480":5,"2482":1,"2483":1,"2501":1,"2508":1,"2530":1,"2546":1,"2550":1,"2551":1,"2552":1,"2553":5,"2564":2,"2566":3,"2567":6,"2615":1,"2656":1,"2707":2,"2728":3,"2750":1,"2753":2}}],["nomenclature",{"0":{"2533":1}}],["nomu30",{"2":{"143":2}}],["nose",{"2":{"2266":1,"2273":1}}],["nose2",{"2":{"442":1,"446":2}}],["nos",{"2":{"1403":1,"2279":1}}],["nobody",{"2":{"454":1}}],["nodes",{"2":{"526":1,"1451":5}}],["node",{"2":{"324":1,"402":1,"403":1,"523":1,"526":1,"1438":1,"1451":23,"1452":8,"1921":2}}],["nop",{"2":{"249":1}}],["nopq",{"2":{"249":1}}],["noop",{"2":{"2355":1,"2395":1,"2405":1}}],["noodlepad",{"2":{"249":1}}],["noon",{"2":{"211":1}}],["noxary",{"2":{"211":2}}],["noevent",{"2":{"199":1}}],["noeeprom",{"0":{"1736":1,"1738":1,"1740":1,"1749":1,"1752":1,"1754":1,"1758":1,"1760":1,"1764":1,"1766":1,"1769":1,"1963":1,"1965":1,"1967":1,"1976":1,"1979":1,"1981":1,"1985":1,"1987":1,"1991":1,"1993":1,"1997":1,"1999":1,"2003":1,"2005":1,"2008":1,"2014":1},"1":{"1750":1,"1770":1,"1977":1,"2009":1,"2015":1},"2":{"49":2,"191":1,"582":3,"1332":14,"1960":2,"2052":3,"2053":3,"2054":7,"2055":3,"2058":1}}],["noconfirm",{"2":{"158":1,"2431":1,"2461":1,"2464":1}}],["noci",{"2":{"149":1,"191":1}}],["norwegian",{"2":{"1355":1,"2712":3}}],["north",{"2":{"1268":1,"1915":1}}],["noroadsleft",{"2":{"266":1}}],["norm",{"2":{"191":1,"247":1,"466":1,"1398":4,"1399":6,"1548":1,"2370":6,"2396":6}}],["norman",{"2":{"176":1,"1355":1,"2712":3}}],["normalized",{"2":{"1533":1}}],["normalise",{"2":{"188":9,"191":10,"199":1,"266":1,"277":1}}],["normal",{"2":{"128":1,"152":1,"154":1,"224":1,"278":1,"288":1,"435":1,"511":1,"571":1,"689":1,"692":2,"1243":2,"1271":1,"1300":2,"1329":1,"1332":2,"1338":1,"1359":1,"1360":2,"1411":3,"1416":1,"1431":1,"1435":1,"1448":1,"1516":1,"1548":1,"1559":2,"1673":1,"1674":1,"1675":1,"1676":1,"1915":1,"2102":1,"2118":1,"2126":1,"2128":1,"2129":1,"2130":1,"2226":1,"2262":1,"2414":3,"2441":1,"2445":1,"2477":1,"2490":1,"2513":2,"2526":1,"2543":1,"2566":1,"2573":1,"2576":1,"2577":2,"2720":1,"2740":1,"2752":1}}],["normally",{"2":{"99":1,"164":1,"436":1,"437":1,"510":1,"572":1,"623":1,"1332":1,"1344":1,"1360":1,"1427":1,"1520":1,"1670":2,"1940":1,"1941":1,"2045":1,"2059":1,"2125":1,"2170":1,"2367":1,"2497":1,"2735":1,"2736":1,"2749":1}}],["nor",{"2":{"174":1,"435":1,"578":1,"681":1,"688":1,"690":2,"693":1,"694":2,"1448":1,"2240":1,"2546":1,"2569":1}}],["nordic",{"2":{"5":1,"1492":2}}],["novices",{"2":{"2472":1}}],["novice",{"2":{"2305":1}}],["novelpad",{"2":{"143":2}}],["novelkeys",{"2":{"143":4,"149":1,"211":2}}],["november",{"0":{"115":1,"177":1,"223":1},"1":{"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1},"2":{"339":1}}],["nov",{"0":{"52":1},"1":{"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1},"2":{"55":1,"88":1,"104":1,"127":1,"170":1,"340":5,"351":4}}],["nonus",{"2":{"2355":2,"2388":2}}],["nonactuated",{"2":{"1573":2}}],["nonex",{"2":{"2300":1}}],["none",{"2":{"266":1,"325":1,"335":1,"414":2,"415":2,"417":1,"423":2,"424":2,"425":3,"426":5,"428":1,"475":1,"629":2,"684":1,"685":1,"694":1,"821":2,"850":4,"852":1,"854":2,"888":2,"922":2,"956":2,"990":2,"1021":4,"1023":1,"1024":2,"1055":4,"1057":1,"1058":2,"1092":2,"1121":1,"1177":1,"1241":1,"1435":1,"1464":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"1726":1,"1728":1,"1730":5,"1889":1,"1894":7,"1895":3,"1923":2,"1947":1,"1949":1,"1954":7,"2036":4,"2150":1,"2169":3,"2170":1,"2171":3,"2300":1,"2524":1,"2553":1,"2573":1}}],["non",{"0":{"2307":1,"2549":1,"2619":1},"2":{"28":1,"49":1,"51":1,"70":1,"94":1,"133":1,"134":2,"160":2,"176":2,"199":1,"213":1,"222":1,"249":1,"455":1,"522":1,"659":1,"692":1,"1211":1,"1332":1,"1341":2,"1352":1,"1355":1,"1430":1,"1440":1,"1441":1,"1558":1,"1573":2,"1584":2,"1670":2,"1673":1,"1674":2,"1676":2,"1885":1,"1886":1,"1889":1,"1895":1,"1900":1,"1936":2,"2122":1,"2129":1,"2148":1,"2149":1,"2169":1,"2171":1,"2183":1,"2236":1,"2279":1,"2280":1,"2305":1,"2355":3,"2388":2,"2395":1,"2403":2,"2543":1,"2549":2,"2563":1,"2564":1,"2566":1,"2600":1,"2617":1,"2709":1}}],["noise",{"2":{"17":1,"1325":4,"1326":6,"1329":2,"1917":1,"2231":1,"2238":1}}],["now",{"0":{"90":1,"105":1,"137":1,"273":1},"2":{"10":3,"11":2,"16":1,"18":2,"25":1,"45":1,"49":5,"50":2,"58":1,"69":2,"70":2,"73":1,"74":1,"76":1,"80":1,"83":1,"94":1,"98":1,"99":2,"103":1,"104":1,"105":1,"107":1,"114":1,"118":2,"119":1,"120":2,"124":2,"125":1,"126":2,"127":1,"130":1,"131":1,"134":1,"137":1,"138":1,"141":1,"146":1,"153":1,"172":1,"173":1,"174":1,"182":2,"185":1,"194":1,"195":1,"196":1,"201":3,"206":2,"209":1,"211":1,"214":1,"224":1,"234":2,"235":1,"245":1,"246":1,"248":1,"262":2,"263":1,"273":1,"275":2,"327":1,"330":1,"331":3,"341":1,"343":1,"344":1,"345":1,"346":2,"349":4,"401":1,"414":2,"453":1,"480":1,"481":1,"530":1,"606":1,"661":1,"1234":1,"1284":4,"1298":1,"1332":3,"1361":1,"1385":1,"1436":4,"1498":1,"1510":1,"1521":1,"1565":2,"1630":1,"1675":1,"1683":1,"1684":1,"2042":1,"2043":1,"2102":1,"2106":1,"2107":1,"2108":1,"2130":1,"2150":1,"2154":1,"2162":1,"2167":1,"2169":1,"2171":1,"2255":2,"2275":1,"2311":2,"2343":1,"2347":1,"2353":1,"2405":1,"2420":1,"2421":1,"2441":2,"2446":1,"2449":1,"2469":1,"2470":1,"2474":2,"2475":1,"2476":1,"2477":3,"2479":3,"2480":1,"2501":1,"2502":1,"2508":1,"2512":1,"2523":1,"2553":1,"2567":2,"2708":1,"2728":1}}],["no",{"0":{"141":1,"533":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1425":1,"1522":1,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"2741":1},"2":{"2":2,"5":1,"6":1,"48":1,"50":1,"74":1,"88":2,"92":1,"103":2,"104":2,"112":1,"114":1,"118":1,"124":1,"126":1,"127":2,"130":1,"134":1,"141":1,"149":3,"154":1,"176":1,"189":1,"191":1,"196":1,"199":2,"201":1,"211":2,"213":1,"218":1,"224":1,"231":1,"233":1,"240":1,"245":1,"249":1,"255":1,"262":1,"265":1,"266":4,"268":1,"273":3,"276":1,"286":1,"340":1,"347":1,"349":1,"350":1,"360":1,"375":1,"380":1,"396":1,"400":1,"416":2,"481":1,"503":5,"505":2,"511":1,"515":1,"516":1,"530":1,"537":1,"548":1,"554":1,"556":3,"559":1,"580":2,"616":1,"625":1,"627":1,"663":1,"685":1,"687":1,"702":1,"703":1,"852":1,"1023":1,"1057":1,"1142":1,"1176":1,"1177":3,"1197":1,"1205":1,"1242":1,"1243":1,"1283":1,"1294":1,"1302":1,"1314":1,"1326":1,"1329":7,"1331":1,"1337":1,"1344":1,"1375":1,"1376":1,"1394":1,"1403":1,"1404":1,"1409":1,"1411":3,"1413":1,"1415":2,"1416":1,"1423":5,"1430":1,"1431":1,"1435":2,"1441":4,"1446":2,"1447":1,"1493":1,"1496":6,"1501":1,"1504":1,"1511":1,"1515":1,"1522":1,"1525":1,"1527":2,"1533":1,"1553":1,"1554":2,"1556":1,"1560":1,"1562":1,"1563":2,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"1637":1,"1665":5,"1668":3,"1670":5,"1671":2,"1674":2,"1675":1,"1677":3,"1684":1,"1686":1,"1694":1,"1697":1,"1725":10,"1726":1,"1728":1,"1793":1,"1805":2,"1806":1,"1811":4,"1832":2,"1860":1,"1923":1,"1932":1,"1933":1,"1946":10,"1947":1,"1948":1,"1949":1,"1958":1,"2034":1,"2044":2,"2051":1,"2063":2,"2073":1,"2105":1,"2106":3,"2107":1,"2128":2,"2131":2,"2150":3,"2162":1,"2168":1,"2169":1,"2177":1,"2235":1,"2262":1,"2263":5,"2264":1,"2270":4,"2278":1,"2295":1,"2301":1,"2303":1,"2305":1,"2311":3,"2323":1,"2349":1,"2355":1,"2371":1,"2376":1,"2385":1,"2395":1,"2405":2,"2408":1,"2414":1,"2415":2,"2450":1,"2456":1,"2476":1,"2492":1,"2496":1,"2503":1,"2509":1,"2513":1,"2524":1,"2558":3,"2564":1,"2565":1,"2566":15,"2573":1,"2575":8,"2577":3,"2587":1,"2593":1,"2596":5,"2614":8,"2674":1,"2686":1,"2688":1,"2689":1,"2695":1,"2699":1,"2702":7,"2703":2,"2704":2,"2705":1,"2711":2,"2728":1,"2738":3,"2741":1,"2743":1,"2745":1,"2746":5}}],["noto11",{"2":{"2575":4,"2577":3}}],["notosans",{"2":{"2575":1}}],["notset",{"2":{"433":1}}],["nothing",{"0":{"1243":1},"2":{"373":1,"607":1,"685":1,"1284":3,"1344":2,"1530":1,"1675":1,"1899":1,"1933":1,"2107":1,"2262":1,"2525":1,"2526":1,"2723":1,"2728":1,"2738":2}}],["noting",{"2":{"1511":1,"2161":1}}],["notion",{"2":{"1447":1}}],["notification",{"2":{"290":1,"300":1}}],["noticeably",{"2":{"1821":1}}],["noticeable",{"2":{"513":1,"2735":1}}],["noticed",{"2":{"1563":1,"1821":1}}],["notices",{"0":{"264":1,"274":1},"1":{"265":1,"275":1,"276":1},"2":{"264":1,"274":1}}],["notice",{"0":{"2720":1},"2":{"263":1,"264":1,"274":1,"276":1,"349":1,"1360":2,"1361":1,"2720":1,"2740":1,"2746":2,"2747":1}}],["notably",{"2":{"158":1,"1265":1}}],["notable",{"0":{"79":1,"97":1,"106":1,"117":1,"129":1,"136":1,"144":1,"151":1,"162":1,"171":1,"178":1,"187":1,"198":1,"201":1,"208":1,"213":1,"224":1,"227":1,"238":1,"242":1,"251":1,"261":1,"268":1},"1":{"80":1,"81":1,"82":1,"83":1,"84":1,"98":1,"99":1,"100":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"118":1,"119":1,"120":1,"130":1,"131":1,"132":1,"133":1,"137":1,"138":1,"145":1,"146":1,"147":1,"148":1,"152":1,"153":1,"154":1,"163":1,"164":1,"172":1,"173":1,"174":1,"175":1,"179":1,"188":1,"189":1,"190":1,"202":1,"203":1,"204":1,"209":1,"210":1,"214":1,"215":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"262":1,"263":1},"2":{"224":1,"625":1,"1390":1}}],["notation",{"0":{"111":1},"2":{"111":1,"611":1,"2311":1}}],["noted",{"2":{"103":1,"126":1,"276":1,"1385":1,"1949":1,"2427":1}}],["note",{"0":{"27":1,"2271":1},"2":{"27":1,"132":1,"199":1,"201":1,"213":1,"222":5,"241":1,"253":1,"270":1,"272":1,"273":1,"334":1,"335":1,"361":1,"371":1,"373":1,"380":1,"429":1,"479":1,"506":1,"534":2,"556":1,"597":1,"628":1,"629":1,"635":2,"639":2,"657":1,"698":1,"788":1,"1121":1,"1126":1,"1129":1,"1219":1,"1238":1,"1239":1,"1287":1,"1293":1,"1335":2,"1351":1,"1353":1,"1361":1,"1376":1,"1384":1,"1390":1,"1394":1,"1400":1,"1401":1,"1406":3,"1416":1,"1427":1,"1431":1,"1435":1,"1464":1,"1467":1,"1491":1,"1503":1,"1556":1,"1636":1,"1675":1,"1676":1,"1677":1,"1725":1,"1729":1,"1787":3,"1793":72,"1794":1,"1822":2,"1825":1,"1854":1,"1870":1,"1872":1,"1887":1,"1895":1,"1898":2,"1900":1,"1904":1,"1911":1,"1946":1,"1950":1,"1952":1,"2036":1,"2041":1,"2042":3,"2044":1,"2051":1,"2074":1,"2119":1,"2120":1,"2125":1,"2146":1,"2153":1,"2155":1,"2171":2,"2172":1,"2175":1,"2183":1,"2252":2,"2262":2,"2263":1,"2270":1,"2275":2,"2276":1,"2279":1,"2330":1,"2332":1,"2334":1,"2341":1,"2343":1,"2346":1,"2347":1,"2351":1,"2371":72,"2403":2,"2405":1,"2407":1,"2408":1,"2427":1,"2437":1,"2460":1,"2463":1,"2466":1,"2467":1,"2468":1,"2492":1,"2499":1,"2512":1,"2533":1,"2549":1,"2564":1,"2565":1,"2572":1,"2574":1,"2577":1,"2702":1,"2711":1,"2723":1,"2728":2,"2729":1,"2730":1,"2738":1,"2752":2,"2753":3,"2754":1}}],["notes",{"0":{"660":1,"663":1,"2568":1},"2":{"10":1,"215":1,"347":1,"654":1,"660":1,"1314":1,"1316":1,"1317":1,"1389":1,"1398":2,"1403":1,"1404":1,"1406":1,"1589":1,"1793":2,"1811":1,"1894":1,"1897":1,"2115":1,"2136":1,"2371":2,"2530":1,"2704":1}}],["not",{"0":{"545":1,"1240":1,"1271":1},"2":{"0":1,"5":1,"9":1,"14":1,"19":1,"23":3,"25":1,"28":1,"31":1,"34":1,"39":1,"49":1,"50":1,"52":1,"73":1,"90":1,"92":2,"114":2,"125":1,"134":3,"149":1,"153":2,"154":1,"160":2,"166":1,"176":1,"182":1,"185":1,"194":1,"198":1,"199":4,"201":2,"209":1,"211":1,"214":1,"221":1,"222":1,"232":1,"236":2,"240":2,"241":1,"249":2,"251":1,"253":1,"266":2,"268":1,"270":1,"273":1,"276":1,"277":2,"282":6,"285":2,"303":1,"308":1,"318":1,"334":2,"337":1,"341":3,"352":1,"357":1,"366":1,"374":1,"380":3,"385":2,"405":1,"430":1,"433":1,"435":1,"436":1,"437":1,"440":2,"441":1,"446":2,"452":1,"453":6,"455":3,"457":1,"459":1,"460":2,"465":2,"466":1,"467":1,"469":1,"471":1,"472":1,"473":1,"474":2,"476":1,"479":1,"480":1,"481":1,"483":1,"485":1,"486":1,"487":1,"493":1,"496":1,"497":1,"502":1,"505":3,"509":1,"510":2,"513":1,"515":1,"516":1,"523":1,"529":1,"533":1,"537":2,"538":1,"540":1,"541":1,"545":2,"551":1,"552":1,"554":1,"555":1,"556":5,"559":2,"560":2,"567":1,"574":1,"580":2,"584":1,"588":2,"592":1,"594":1,"597":1,"598":2,"600":1,"609":2,"613":2,"623":1,"625":1,"626":2,"627":1,"628":1,"629":1,"633":2,"635":2,"644":2,"647":1,"654":3,"659":1,"663":3,"666":3,"675":1,"683":1,"684":1,"688":1,"689":4,"690":1,"697":1,"698":1,"702":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"726":2,"731":1,"741":1,"745":1,"749":1,"751":1,"757":5,"768":1,"772":1,"776":1,"778":1,"786":6,"800":1,"804":1,"808":1,"810":1,"818":5,"832":1,"836":1,"840":1,"842":1,"850":5,"867":1,"871":1,"875":1,"877":1,"885":5,"901":1,"905":1,"909":1,"911":1,"919":5,"935":1,"939":1,"943":1,"945":1,"953":5,"969":1,"973":1,"977":1,"979":1,"987":5,"1003":1,"1007":1,"1011":1,"1013":1,"1021":5,"1037":1,"1041":1,"1045":1,"1047":1,"1055":5,"1071":1,"1075":1,"1079":1,"1081":1,"1089":5,"1105":1,"1109":1,"1113":1,"1115":1,"1122":1,"1128":1,"1132":2,"1133":3,"1134":1,"1145":5,"1158":1,"1162":1,"1166":1,"1168":1,"1176":1,"1177":2,"1189":1,"1192":1,"1195":1,"1207":1,"1209":1,"1214":3,"1221":1,"1223":1,"1225":1,"1226":2,"1229":1,"1230":3,"1238":2,"1239":2,"1254":1,"1260":1,"1268":1,"1270":2,"1271":1,"1278":1,"1280":1,"1283":2,"1284":2,"1287":2,"1293":1,"1298":1,"1300":1,"1302":1,"1303":1,"1312":1,"1316":2,"1317":2,"1319":2,"1325":4,"1326":2,"1331":1,"1335":3,"1338":1,"1340":2,"1344":1,"1351":1,"1357":1,"1359":2,"1361":3,"1377":1,"1380":1,"1384":1,"1385":2,"1398":1,"1399":8,"1404":1,"1411":1,"1412":6,"1414":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1423":1,"1430":2,"1431":3,"1432":1,"1446":1,"1447":1,"1448":1,"1451":1,"1455":1,"1457":4,"1463":1,"1469":2,"1471":2,"1491":2,"1493":1,"1496":1,"1499":4,"1501":1,"1511":1,"1515":1,"1521":1,"1523":1,"1525":4,"1531":1,"1534":1,"1551":1,"1554":3,"1558":1,"1560":2,"1567":1,"1570":4,"1572":1,"1573":6,"1579":1,"1582":1,"1589":1,"1591":5,"1594":1,"1633":2,"1635":1,"1637":1,"1659":1,"1661":1,"1665":2,"1666":1,"1668":1,"1670":5,"1671":2,"1673":2,"1674":1,"1675":2,"1676":1,"1677":3,"1684":1,"1715":6,"1716":1,"1725":2,"1729":1,"1736":1,"1738":1,"1740":1,"1749":1,"1752":1,"1754":1,"1758":1,"1760":1,"1764":1,"1766":1,"1769":1,"1787":1,"1788":1,"1791":1,"1794":1,"1802":1,"1803":1,"1805":2,"1807":1,"1808":1,"1817":2,"1819":3,"1820":9,"1821":4,"1822":7,"1824":1,"1825":1,"1827":1,"1828":2,"1830":1,"1857":6,"1859":4,"1861":3,"1863":3,"1864":1,"1865":1,"1866":3,"1870":1,"1872":14,"1873":8,"1876":4,"1880":2,"1885":1,"1887":2,"1889":1,"1900":1,"1902":1,"1904":1,"1911":1,"1912":1,"1921":1,"1933":1,"1934":2,"1938":1,"1946":2,"1948":5,"1952":1,"1954":2,"1960":1,"1963":1,"1965":1,"1967":1,"1976":1,"1979":1,"1981":1,"1985":1,"1987":1,"1991":1,"1993":1,"1997":1,"1999":1,"2003":1,"2005":1,"2008":1,"2014":1,"2032":1,"2034":1,"2035":3,"2036":1,"2037":12,"2038":1,"2041":1,"2045":1,"2051":9,"2052":3,"2053":3,"2054":7,"2055":3,"2063":1,"2065":2,"2072":1,"2074":1,"2106":1,"2107":2,"2114":2,"2118":2,"2123":1,"2125":1,"2126":2,"2128":2,"2131":2,"2132":2,"2141":3,"2143":4,"2146":3,"2152":4,"2153":2,"2161":2,"2162":4,"2169":12,"2170":1,"2171":1,"2172":1,"2175":1,"2177":1,"2181":2,"2183":5,"2184":1,"2220":1,"2226":3,"2228":1,"2231":1,"2238":1,"2240":1,"2242":1,"2243":1,"2252":1,"2254":1,"2256":1,"2259":2,"2260":1,"2262":2,"2263":3,"2264":1,"2268":2,"2270":1,"2272":2,"2273":2,"2274":2,"2276":1,"2277":1,"2279":3,"2294":2,"2295":1,"2299":1,"2305":1,"2309":1,"2311":1,"2315":1,"2316":1,"2319":2,"2320":1,"2327":2,"2328":1,"2330":1,"2332":1,"2334":1,"2335":1,"2342":1,"2343":1,"2344":1,"2345":1,"2346":1,"2347":2,"2348":3,"2350":1,"2351":2,"2353":1,"2355":1,"2356":1,"2377":2,"2384":1,"2393":1,"2397":2,"2407":1,"2408":2,"2410":1,"2411":1,"2417":1,"2422":1,"2423":2,"2425":1,"2427":3,"2429":1,"2431":1,"2432":1,"2433":1,"2436":1,"2450":3,"2451":1,"2454":5,"2455":2,"2457":1,"2459":1,"2460":1,"2462":1,"2463":1,"2464":1,"2466":2,"2468":1,"2473":1,"2474":1,"2475":1,"2477":2,"2479":1,"2480":1,"2485":1,"2490":1,"2498":2,"2499":1,"2501":1,"2506":1,"2513":2,"2514":1,"2516":3,"2517":1,"2519":2,"2524":2,"2525":1,"2526":1,"2529":1,"2530":2,"2532":1,"2533":1,"2542":1,"2543":1,"2544":1,"2546":3,"2548":1,"2549":2,"2553":1,"2556":2,"2564":8,"2565":2,"2566":17,"2567":3,"2569":2,"2570":1,"2572":1,"2573":1,"2574":1,"2575":1,"2576":1,"2577":8,"2587":1,"2589":1,"2596":1,"2601":1,"2603":1,"2605":1,"2611":1,"2615":2,"2616":1,"2617":2,"2620":1,"2625":1,"2667":1,"2671":1,"2673":2,"2686":4,"2687":1,"2699":1,"2702":4,"2703":1,"2704":1,"2705":1,"2706":2,"2707":1,"2710":1,"2711":2,"2712":2,"2718":1,"2719":3,"2726":1,"2728":2,"2729":2,"2734":2,"2735":4,"2736":2,"2738":3,"2740":1,"2742":1,"2746":1,"2752":1,"2756":2,"2757":1}}],["y1",{"2":{"2577":1}}],["y0",{"2":{"2577":1}}],["y+",{"2":{"1860":1}}],["yyyy",{"2":{"349":2,"358":3,"359":3,"360":2,"361":2}}],["yyyyqn",{"2":{"341":1}}],["yynmt",{"2":{"143":2,"149":2}}],["yz",{"2":{"266":1}}],["y",{"0":{"1545":1,"2603":1,"2605":1},"1":{"1546":1,"2604":1,"2606":1},"2":{"249":1,"313":1,"376":2,"530":2,"1341":4,"1533":2,"1537":2,"1545":1,"1546":2,"1636":1,"1637":1,"1638":2,"1655":1,"1725":7,"1730":2,"1802":1,"1822":2,"1857":2,"1859":3,"1860":2,"1863":2,"1864":4,"1870":4,"1872":5,"1873":5,"1876":3,"1879":2,"1880":3,"1882":2,"1883":2,"1900":1,"1911":1,"1914":2,"1933":5,"1946":7,"1954":2,"2143":2,"2317":2,"2355":3,"2386":3,"2407":1,"2431":4,"2464":4,"2468":4,"2559":16,"2576":3,"2577":14,"2603":3,"2605":3,"2615":19,"2620":1,"2686":3,"2688":2,"2695":2}}],["ymlname",{"2":{"2437":1}}],["yml",{"2":{"2435":1,"2437":2,"2438":1,"2439":1,"2440":1}}],["ym68",{"2":{"211":1}}],["ymd96",{"2":{"143":2,"149":1}}],["ymd75",{"2":{"143":2,"149":1,"222":1}}],["ymdk",{"2":{"143":5,"149":5,"159":1,"160":1,"211":5,"222":1,"226":2,"236":1}}],["yttyx",{"2":{"211":1}}],["yum",{"2":{"2431":1,"2464":1}}],["yugo",{"2":{"207":2,"211":1}}],["yurei",{"2":{"143":2}}],["yosino58",{"2":{"176":1}}],["youtube",{"2":{"2040":2}}],["yourgithub",{"2":{"2570":2}}],["yours",{"0":{"2324":1},"2":{"613":1}}],["yourself",{"2":{"336":1,"356":1,"454":1,"483":1,"1293":1,"1337":1,"1527":1,"1630":1,"2061":1,"2150":1,"2346":1,"2404":1,"2417":1}}],["yourkeyboard",{"2":{"201":1}}],["yourkeymap",{"2":{"132":1}}],["yourkb",{"2":{"132":1}}],["your",{"0":{"354":1,"355":1,"450":1,"537":1,"538":1,"539":1,"540":1,"541":1,"542":1,"543":1,"567":1,"1250":1,"1330":1,"1355":1,"1565":1,"1799":1,"2279":1,"2294":1,"2420":1,"2421":1,"2423":1,"2424":1,"2425":1,"2426":1,"2440":1,"2449":1,"2450":1,"2451":1,"2453":1,"2454":1,"2456":1,"2458":1,"2469":1,"2470":1,"2474":1,"2476":1,"2477":1,"2478":1,"2479":1,"2481":1,"2502":1,"2553":1,"2601":1,"2613":1},"1":{"568":1,"1800":1,"1801":1,"2421":1,"2422":1,"2423":1,"2424":1,"2425":1,"2426":1,"2450":1,"2451":1,"2452":2,"2453":2,"2454":1,"2455":1,"2457":1,"2458":1,"2459":2,"2460":2,"2461":2,"2462":2,"2463":2,"2464":2,"2465":2,"2466":2,"2467":2,"2468":1,"2469":1,"2479":1,"2480":1,"2481":1,"2554":1,"2555":1,"2556":1,"2557":1,"2558":1,"2559":1,"2560":1,"2561":1,"2562":1,"2602":1,"2603":1,"2604":1,"2605":1,"2606":1,"2607":1,"2608":1,"2609":1,"2610":1,"2611":1,"2612":1,"2614":1,"2615":1,"2616":1,"2617":1,"2618":1,"2619":1,"2620":1},"2":{"1":1,"14":1,"18":4,"23":1,"25":1,"31":1,"34":1,"36":1,"37":1,"43":1,"45":2,"49":3,"82":1,"87":1,"89":1,"90":1,"107":2,"110":3,"116":1,"119":4,"120":1,"124":3,"132":1,"196":1,"201":1,"202":2,"218":1,"228":1,"233":2,"235":1,"240":1,"241":2,"253":2,"255":2,"256":1,"257":1,"258":1,"259":2,"270":2,"272":2,"273":3,"276":1,"282":3,"291":1,"303":1,"312":1,"314":2,"315":1,"316":1,"319":1,"320":1,"322":1,"324":1,"327":2,"331":3,"334":1,"335":2,"336":2,"341":4,"352":2,"353":1,"354":2,"355":2,"356":2,"358":1,"365":1,"366":2,"367":2,"373":1,"375":1,"376":4,"380":1,"389":1,"390":1,"391":1,"397":1,"399":1,"401":3,"404":1,"417":1,"430":2,"431":1,"432":3,"435":2,"436":1,"446":5,"447":1,"450":1,"453":2,"454":1,"456":1,"460":1,"462":1,"466":2,"478":1,"481":3,"482":1,"502":7,"504":1,"508":1,"515":2,"534":3,"535":3,"536":1,"537":3,"538":1,"540":4,"541":3,"548":1,"550":1,"551":2,"554":9,"556":3,"557":1,"558":1,"559":3,"560":11,"563":1,"564":2,"565":2,"566":2,"567":2,"568":1,"570":4,"573":1,"584":3,"587":1,"588":2,"589":1,"601":1,"607":2,"609":2,"612":1,"613":3,"614":4,"616":2,"617":1,"621":3,"623":2,"624":1,"625":1,"626":3,"627":3,"629":1,"631":2,"638":1,"639":1,"641":4,"643":2,"644":1,"660":2,"661":1,"665":1,"666":1,"667":1,"669":1,"681":1,"684":2,"685":1,"688":1,"689":2,"690":1,"691":1,"692":1,"694":1,"700":2,"701":2,"702":1,"703":3,"707":1,"726":1,"730":1,"731":1,"734":1,"756":1,"757":1,"758":1,"760":1,"785":1,"786":1,"787":1,"788":1,"790":1,"817":1,"818":1,"819":1,"820":1,"821":1,"822":1,"824":1,"849":1,"850":1,"851":1,"852":1,"853":1,"854":1,"855":1,"857":1,"884":1,"885":1,"886":1,"887":1,"888":1,"889":1,"891":1,"918":1,"919":1,"920":1,"921":1,"922":1,"923":1,"925":1,"952":1,"953":1,"954":1,"955":1,"956":1,"957":1,"959":1,"986":1,"987":1,"988":1,"989":1,"990":1,"991":1,"993":1,"1020":1,"1021":1,"1022":1,"1023":1,"1024":1,"1025":1,"1027":1,"1054":1,"1055":1,"1056":1,"1057":1,"1058":1,"1059":1,"1061":1,"1088":1,"1089":1,"1090":1,"1091":1,"1092":1,"1093":1,"1095":1,"1124":2,"1127":4,"1129":1,"1130":4,"1132":5,"1133":6,"1135":1,"1137":1,"1138":1,"1142":1,"1144":1,"1145":1,"1146":1,"1148":1,"1175":2,"1176":1,"1177":3,"1196":2,"1197":1,"1198":2,"1213":2,"1214":1,"1215":1,"1216":2,"1217":1,"1223":1,"1225":1,"1227":2,"1228":1,"1230":1,"1234":1,"1235":1,"1236":2,"1238":2,"1240":3,"1243":2,"1245":4,"1246":1,"1247":1,"1248":1,"1250":2,"1252":1,"1253":1,"1254":2,"1255":1,"1264":1,"1269":1,"1270":2,"1271":1,"1276":2,"1281":1,"1286":2,"1287":3,"1290":1,"1292":1,"1294":1,"1312":2,"1313":1,"1314":1,"1316":1,"1320":1,"1326":2,"1330":2,"1331":3,"1332":2,"1335":3,"1336":2,"1337":1,"1338":4,"1339":2,"1340":3,"1344":1,"1352":1,"1353":1,"1355":2,"1356":2,"1361":1,"1362":2,"1364":1,"1376":3,"1377":5,"1378":2,"1379":1,"1380":4,"1381":1,"1383":9,"1384":6,"1385":7,"1386":2,"1393":4,"1398":5,"1401":3,"1403":6,"1404":3,"1405":4,"1406":1,"1410":1,"1411":1,"1413":2,"1414":1,"1415":1,"1416":3,"1431":1,"1433":1,"1434":3,"1435":5,"1436":1,"1437":1,"1439":1,"1440":1,"1446":1,"1455":1,"1457":2,"1458":1,"1459":1,"1464":1,"1469":2,"1493":1,"1495":2,"1496":1,"1497":2,"1498":1,"1500":3,"1507":1,"1508":2,"1509":1,"1511":2,"1512":1,"1513":1,"1518":1,"1519":1,"1523":1,"1524":1,"1527":4,"1528":2,"1530":1,"1532":1,"1547":2,"1548":3,"1549":1,"1553":3,"1554":1,"1555":2,"1557":4,"1558":1,"1559":4,"1560":2,"1562":1,"1564":1,"1568":1,"1575":1,"1576":2,"1577":2,"1590":1,"1591":1,"1593":1,"1605":1,"1631":2,"1633":1,"1634":1,"1635":2,"1636":1,"1637":2,"1655":3,"1657":2,"1658":1,"1668":1,"1673":1,"1675":1,"1677":2,"1679":2,"1680":1,"1682":1,"1683":2,"1684":13,"1685":1,"1715":2,"1720":1,"1724":1,"1725":3,"1728":1,"1729":3,"1787":1,"1789":1,"1790":1,"1791":1,"1798":1,"1799":1,"1800":1,"1801":1,"1802":1,"1803":2,"1804":1,"1805":1,"1806":4,"1807":4,"1812":2,"1813":3,"1820":1,"1825":1,"1827":1,"1828":1,"1830":4,"1833":1,"1853":1,"1855":1,"1856":1,"1857":1,"1858":1,"1862":1,"1867":1,"1868":1,"1869":1,"1870":2,"1871":1,"1873":1,"1876":1,"1884":1,"1887":1,"1902":1,"1904":1,"1905":1,"1906":1,"1907":1,"1910":1,"1912":1,"1917":1,"1919":1,"1920":1,"1921":5,"1922":1,"1930":2,"1934":1,"1936":1,"1943":1,"1945":1,"1946":3,"1948":1,"1949":2,"1950":1,"1952":2,"2031":2,"2032":6,"2034":1,"2035":2,"2036":1,"2041":2,"2044":1,"2045":1,"2046":1,"2047":1,"2059":1,"2061":2,"2062":1,"2063":3,"2068":1,"2073":1,"2074":1,"2076":1,"2078":1,"2103":2,"2105":1,"2106":2,"2108":1,"2109":2,"2121":1,"2122":1,"2124":1,"2125":4,"2126":1,"2127":2,"2128":1,"2129":1,"2131":1,"2137":5,"2145":3,"2146":2,"2147":1,"2148":1,"2149":5,"2150":7,"2152":1,"2153":1,"2154":2,"2157":1,"2160":1,"2161":3,"2162":1,"2164":4,"2169":6,"2170":4,"2171":5,"2172":1,"2174":2,"2176":2,"2178":1,"2179":1,"2180":2,"2181":6,"2182":5,"2183":4,"2225":1,"2228":1,"2229":2,"2230":1,"2231":1,"2233":1,"2235":1,"2236":1,"2237":2,"2238":2,"2240":1,"2242":1,"2244":1,"2245":1,"2247":1,"2249":1,"2250":2,"2255":13,"2260":3,"2262":1,"2263":17,"2264":4,"2266":1,"2268":3,"2270":3,"2272":3,"2273":4,"2274":2,"2275":2,"2277":5,"2278":3,"2279":3,"2292":1,"2293":2,"2296":2,"2298":1,"2299":2,"2300":2,"2301":3,"2302":6,"2304":3,"2305":4,"2306":4,"2308":1,"2309":7,"2312":1,"2314":1,"2317":1,"2318":1,"2324":1,"2326":1,"2339":1,"2342":1,"2347":1,"2351":2,"2353":1,"2358":1,"2396":2,"2406":1,"2409":1,"2410":1,"2411":1,"2417":7,"2418":2,"2420":5,"2421":4,"2422":4,"2423":5,"2425":3,"2426":2,"2428":3,"2429":2,"2431":1,"2432":1,"2433":1,"2435":1,"2436":4,"2437":1,"2438":2,"2439":2,"2440":2,"2441":4,"2442":1,"2443":5,"2445":4,"2446":5,"2447":2,"2448":4,"2449":1,"2450":10,"2451":2,"2452":4,"2454":6,"2455":4,"2456":1,"2457":1,"2458":1,"2460":1,"2463":1,"2468":4,"2469":2,"2470":2,"2472":3,"2473":3,"2474":5,"2475":5,"2476":3,"2477":14,"2478":4,"2479":8,"2480":10,"2481":3,"2490":2,"2491":2,"2497":2,"2498":2,"2502":1,"2508":2,"2510":1,"2512":1,"2513":5,"2515":1,"2523":2,"2524":2,"2525":2,"2526":2,"2533":2,"2539":1,"2540":1,"2541":3,"2542":1,"2544":1,"2546":1,"2548":1,"2552":1,"2553":10,"2554":3,"2555":1,"2556":2,"2557":3,"2564":8,"2566":3,"2567":2,"2568":10,"2569":2,"2570":3,"2571":3,"2572":1,"2573":1,"2574":1,"2576":10,"2577":6,"2578":1,"2579":1,"2581":1,"2583":1,"2584":3,"2607":3,"2608":1,"2610":1,"2627":1,"2631":1,"2635":1,"2639":1,"2647":1,"2650":1,"2652":2,"2669":2,"2670":1,"2671":3,"2701":1,"2702":3,"2703":3,"2704":2,"2705":1,"2706":2,"2708":3,"2709":1,"2710":3,"2711":2,"2716":1,"2722":1,"2723":2,"2725":1,"2727":3,"2728":9,"2735":2,"2736":2,"2737":3,"2738":5,"2740":2,"2745":2,"2748":1,"2751":1,"2752":1,"2753":1,"2754":2,"2757":1}}],["you",{"0":{"1656":1,"2314":1,"2319":1,"2670":1},"2":{"1":2,"7":2,"16":1,"23":3,"31":5,"34":2,"37":1,"43":1,"45":2,"49":2,"70":1,"82":1,"83":2,"89":1,"90":3,"107":2,"110":2,"112":2,"119":6,"120":2,"124":3,"152":3,"157":2,"158":3,"182":1,"190":1,"194":2,"202":2,"206":3,"218":2,"228":2,"232":3,"233":2,"240":7,"241":2,"245":1,"248":2,"253":2,"254":2,"255":2,"256":2,"259":2,"270":2,"272":2,"291":1,"303":3,"306":1,"311":2,"312":2,"313":2,"315":3,"316":1,"317":1,"319":2,"320":1,"321":2,"322":1,"326":2,"327":2,"331":4,"332":2,"334":1,"336":2,"341":3,"352":1,"353":1,"354":3,"356":2,"358":1,"364":2,"365":2,"366":2,"367":2,"370":3,"371":1,"372":1,"373":1,"374":1,"375":1,"376":2,"377":1,"378":2,"381":1,"383":1,"386":1,"388":1,"393":1,"394":1,"395":2,"396":2,"397":4,"399":2,"401":5,"402":1,"403":1,"405":1,"407":2,"411":2,"415":2,"417":1,"418":2,"423":1,"424":1,"429":4,"430":1,"431":1,"432":4,"433":1,"434":3,"435":4,"436":3,"437":2,"438":1,"439":1,"440":1,"441":1,"442":1,"445":1,"446":5,"447":3,"448":3,"449":1,"450":2,"451":2,"452":2,"453":6,"454":4,"455":2,"456":1,"457":3,"461":1,"462":1,"466":5,"467":1,"468":1,"469":1,"471":1,"474":4,"476":1,"478":2,"479":1,"481":3,"483":1,"485":2,"488":1,"500":3,"502":3,"503":2,"504":2,"505":8,"506":1,"508":1,"509":1,"510":4,"511":4,"513":1,"515":2,"517":2,"520":1,"521":3,"522":1,"532":1,"537":4,"538":1,"539":2,"540":4,"541":4,"542":1,"545":2,"546":1,"551":3,"552":2,"553":2,"554":13,"555":2,"556":6,"557":4,"558":2,"559":4,"560":13,"561":1,"562":3,"566":1,"567":3,"568":1,"570":3,"571":3,"573":1,"574":6,"575":2,"578":1,"581":1,"584":1,"585":2,"586":4,"587":2,"588":1,"601":1,"607":3,"609":4,"610":1,"611":2,"612":1,"613":4,"614":4,"616":1,"618":1,"621":3,"622":1,"623":2,"624":1,"625":3,"626":7,"627":6,"628":2,"629":1,"630":1,"633":1,"641":3,"643":4,"647":1,"657":2,"658":1,"659":2,"660":2,"661":2,"662":1,"665":3,"668":1,"675":1,"684":3,"685":1,"689":1,"694":1,"698":3,"700":3,"701":1,"703":3,"730":3,"733":1,"741":1,"745":1,"749":1,"751":1,"756":3,"759":1,"768":1,"772":1,"776":1,"778":1,"785":3,"789":1,"800":1,"804":1,"808":1,"810":1,"817":3,"822":1,"823":1,"832":1,"836":1,"840":1,"842":1,"849":3,"855":1,"856":1,"867":1,"871":1,"875":1,"877":1,"884":3,"889":1,"890":1,"901":1,"905":1,"909":1,"911":1,"918":3,"923":1,"924":1,"935":1,"939":1,"943":1,"945":1,"952":3,"957":1,"958":1,"969":1,"973":1,"977":1,"979":1,"986":3,"991":1,"992":1,"1003":1,"1007":1,"1011":1,"1013":1,"1020":3,"1025":1,"1026":1,"1037":1,"1041":1,"1045":1,"1047":1,"1054":3,"1059":1,"1060":1,"1071":1,"1075":1,"1079":1,"1081":1,"1088":3,"1093":1,"1094":1,"1105":1,"1109":1,"1113":1,"1115":1,"1124":1,"1127":1,"1129":2,"1130":1,"1132":4,"1133":3,"1136":5,"1137":2,"1138":3,"1144":3,"1147":1,"1158":1,"1162":1,"1166":1,"1168":1,"1175":3,"1176":2,"1177":4,"1196":3,"1198":3,"1201":1,"1212":1,"1213":4,"1216":2,"1226":1,"1227":1,"1228":1,"1230":1,"1234":4,"1235":1,"1236":4,"1237":2,"1238":4,"1239":2,"1241":2,"1242":6,"1243":1,"1245":2,"1250":1,"1254":5,"1258":3,"1259":1,"1260":1,"1261":1,"1262":1,"1264":3,"1265":1,"1266":2,"1267":1,"1269":1,"1270":2,"1271":1,"1275":1,"1276":2,"1279":1,"1280":1,"1281":1,"1284":1,"1286":2,"1287":8,"1288":4,"1289":1,"1290":2,"1291":1,"1294":1,"1299":2,"1300":8,"1301":1,"1302":1,"1312":4,"1313":1,"1316":1,"1320":2,"1325":6,"1326":5,"1330":2,"1331":9,"1332":15,"1333":1,"1334":1,"1335":7,"1336":2,"1338":3,"1339":4,"1340":8,"1341":7,"1344":1,"1348":1,"1351":3,"1352":2,"1353":4,"1354":2,"1355":4,"1356":1,"1359":4,"1360":1,"1361":5,"1362":1,"1363":4,"1364":6,"1367":1,"1368":2,"1370":2,"1375":1,"1376":3,"1377":8,"1378":4,"1379":1,"1380":5,"1381":2,"1383":14,"1384":10,"1385":15,"1386":3,"1393":1,"1395":1,"1396":2,"1398":11,"1399":5,"1401":4,"1403":5,"1404":4,"1405":5,"1406":4,"1409":2,"1411":5,"1412":3,"1413":1,"1414":2,"1415":1,"1416":9,"1423":1,"1430":2,"1433":1,"1435":8,"1436":2,"1439":5,"1440":3,"1442":2,"1445":1,"1446":1,"1447":1,"1448":2,"1450":1,"1454":1,"1455":2,"1457":2,"1458":1,"1459":3,"1464":4,"1469":3,"1470":1,"1492":1,"1495":6,"1496":2,"1497":4,"1498":2,"1499":2,"1500":3,"1501":1,"1506":1,"1508":5,"1509":2,"1511":3,"1512":2,"1514":1,"1515":8,"1516":1,"1518":11,"1519":2,"1521":2,"1523":3,"1524":2,"1526":1,"1527":6,"1528":1,"1529":1,"1530":1,"1533":1,"1534":2,"1547":1,"1553":5,"1555":1,"1556":4,"1557":2,"1558":5,"1559":1,"1560":3,"1562":2,"1563":3,"1568":1,"1572":1,"1573":3,"1575":1,"1630":6,"1633":1,"1635":2,"1636":1,"1637":1,"1655":5,"1657":2,"1658":1,"1662":2,"1666":3,"1668":3,"1670":2,"1671":2,"1674":1,"1675":7,"1676":1,"1677":5,"1678":3,"1680":1,"1682":2,"1683":3,"1684":8,"1685":2,"1686":2,"1715":2,"1719":1,"1723":4,"1725":2,"1728":1,"1730":1,"1733":2,"1787":2,"1791":6,"1798":2,"1799":1,"1801":1,"1803":5,"1804":1,"1805":6,"1806":2,"1812":1,"1815":1,"1816":1,"1820":2,"1821":1,"1822":1,"1824":1,"1825":1,"1826":2,"1828":1,"1830":4,"1853":3,"1854":2,"1857":2,"1859":1,"1863":2,"1870":3,"1871":1,"1872":1,"1873":1,"1876":2,"1879":1,"1880":2,"1884":2,"1897":1,"1902":1,"1904":1,"1905":1,"1907":2,"1908":1,"1910":1,"1911":1,"1912":6,"1913":1,"1914":2,"1918":2,"1921":6,"1922":2,"1934":1,"1940":1,"1944":4,"1946":2,"1948":3,"1949":1,"1950":1,"1952":1,"1954":1,"1957":2,"1959":4,"1960":2,"2031":1,"2032":6,"2034":3,"2035":1,"2036":2,"2037":2,"2040":1,"2041":2,"2042":3,"2044":3,"2045":1,"2046":1,"2047":3,"2059":3,"2060":4,"2061":2,"2062":2,"2063":2,"2064":3,"2076":2,"2102":3,"2106":3,"2107":5,"2108":1,"2109":1,"2110":2,"2116":1,"2117":4,"2118":3,"2120":1,"2121":2,"2124":2,"2125":4,"2126":5,"2127":1,"2128":7,"2131":7,"2133":7,"2134":1,"2137":1,"2139":1,"2140":1,"2143":1,"2145":4,"2146":2,"2149":4,"2150":8,"2152":5,"2153":1,"2154":1,"2157":1,"2161":9,"2162":4,"2169":11,"2170":3,"2171":1,"2174":3,"2180":2,"2181":4,"2182":4,"2183":3,"2226":2,"2228":5,"2229":1,"2233":2,"2235":1,"2238":1,"2240":1,"2241":2,"2242":1,"2244":1,"2250":5,"2252":7,"2255":16,"2256":3,"2259":2,"2261":4,"2262":10,"2263":17,"2264":3,"2266":1,"2267":2,"2268":5,"2270":1,"2271":1,"2272":4,"2273":5,"2274":12,"2275":3,"2276":8,"2277":5,"2279":9,"2280":6,"2286":2,"2292":2,"2293":1,"2295":3,"2298":1,"2299":4,"2300":1,"2301":2,"2302":10,"2305":6,"2306":3,"2309":8,"2310":4,"2311":2,"2312":3,"2313":1,"2314":1,"2315":1,"2318":2,"2319":6,"2320":1,"2322":1,"2325":1,"2326":1,"2327":3,"2328":4,"2329":1,"2333":1,"2335":2,"2341":1,"2342":3,"2346":1,"2347":6,"2348":6,"2349":2,"2351":4,"2353":5,"2354":1,"2396":2,"2398":1,"2400":1,"2401":1,"2402":3,"2404":3,"2405":6,"2406":5,"2408":3,"2409":2,"2410":4,"2411":3,"2417":6,"2418":4,"2419":2,"2420":3,"2421":5,"2422":7,"2423":5,"2424":6,"2425":6,"2427":1,"2429":4,"2430":2,"2431":1,"2432":1,"2433":1,"2436":1,"2438":2,"2440":1,"2441":6,"2442":4,"2443":3,"2444":2,"2445":5,"2446":4,"2447":3,"2448":3,"2449":2,"2450":7,"2451":1,"2452":4,"2453":1,"2454":8,"2455":4,"2456":3,"2457":8,"2458":2,"2459":3,"2460":1,"2462":2,"2463":1,"2464":2,"2466":3,"2468":9,"2469":6,"2470":1,"2472":3,"2473":3,"2474":4,"2475":5,"2476":3,"2477":6,"2478":1,"2479":4,"2480":12,"2490":12,"2491":8,"2494":2,"2495":3,"2496":1,"2497":6,"2498":3,"2499":1,"2501":1,"2504":3,"2506":1,"2508":5,"2510":4,"2511":1,"2512":1,"2513":8,"2524":1,"2525":1,"2529":1,"2530":3,"2533":3,"2540":1,"2541":1,"2548":1,"2552":1,"2553":4,"2554":2,"2555":1,"2556":5,"2557":2,"2559":1,"2561":1,"2563":1,"2564":5,"2566":2,"2567":1,"2568":4,"2570":2,"2571":2,"2573":1,"2574":1,"2576":3,"2577":10,"2578":1,"2583":1,"2584":1,"2601":1,"2602":2,"2603":1,"2605":6,"2606":3,"2607":9,"2608":3,"2610":3,"2611":2,"2639":1,"2645":1,"2647":1,"2649":1,"2652":1,"2654":1,"2661":1,"2662":1,"2663":2,"2671":2,"2686":2,"2701":1,"2702":8,"2703":9,"2704":3,"2705":5,"2706":2,"2707":2,"2708":4,"2709":1,"2710":1,"2711":6,"2712":1,"2714":1,"2716":1,"2722":3,"2723":4,"2724":2,"2725":1,"2726":1,"2727":5,"2728":29,"2735":6,"2736":4,"2737":2,"2738":7,"2740":2,"2742":2,"2743":3,"2744":1,"2745":1,"2746":3,"2750":4,"2752":6,"2753":5,"2754":1,"2755":2,"2756":3,"2757":17}}],["yiancar",{"2":{"149":1}}],["yiancardesigns",{"2":{"143":3,"149":1}}],["yd68",{"2":{"143":2}}],["yd60mq",{"2":{"143":2,"149":1}}],["ydkb",{"2":{"143":3,"149":1,"211":2}}],["yapf",{"0":{"456":1},"2":{"442":1,"445":3,"456":1,"468":3}}],["yarn",{"2":{"402":1,"403":1}}],["yakiimo",{"2":{"211":1}}],["yandrstudio",{"2":{"199":1}}],["yangdigi",{"2":{"149":1}}],["yanghu",{"2":{"134":1}}],["yasui",{"2":{"143":2}}],["yaml",{"2":{"114":1}}],["yellow",{"2":{"331":1,"433":1,"435":1,"1953":2,"1958":1,"2058":2,"2450":1}}],["yet",{"2":{"149":1,"154":1,"209":1,"236":1,"496":1,"523":1,"537":1,"538":1,"574":1,"654":1,"1237":1,"1491":1,"1948":2,"2063":1,"2152":2,"2263":1,"2320":1,"2377":2,"2433":1,"2468":1,"2498":1,"2525":1,"2526":1,"2548":1,"2553":1,"2556":1,"2560":1,"2587":1,"2596":1,"2730":1,"2756":1}}],["yes",{"2":{"10":1,"28":1,"49":1,"74":1,"87":1,"88":3,"103":4,"104":3,"118":1,"119":1,"126":3,"127":3,"202":1,"232":1,"234":7,"235":1,"266":1,"292":1,"508":1,"516":1,"533":1,"566":1,"596":1,"631":1,"643":1,"665":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1175":1,"1196":1,"1213":1,"1245":1,"1291":1,"1359":1,"1377":1,"1384":2,"1385":2,"1386":1,"1412":1,"1413":1,"1439":1,"1455":1,"1493":1,"1495":1,"1500":1,"1508":1,"1528":1,"1532":1,"1547":1,"1548":1,"1553":1,"1557":1,"1559":1,"1560":1,"1570":1,"1590":1,"1631":1,"1635":1,"1657":1,"1679":1,"1729":2,"1787":1,"1800":1,"1812":1,"1825":1,"1830":1,"1833":1,"1853":1,"1904":2,"1905":2,"1906":2,"1907":2,"1919":1,"1930":1,"1952":2,"2032":2,"2044":2,"2063":2,"2068":1,"2073":1,"2102":1,"2109":1,"2121":1,"2137":1,"2145":2,"2146":1,"2147":1,"2148":1,"2149":1,"2150":1,"2154":1,"2155":1,"2161":1,"2164":1,"2172":1,"2178":1,"2181":2,"2182":1,"2225":1,"2263":1,"2264":1,"2300":2,"2573":1,"2576":10,"2579":2,"2702":2,"2728":1}}],["year>",{"2":{"1380":1}}],["years",{"2":{"6":1,"10":1,"213":1,"2309":1}}],["year",{"2":{"0":2,"9":2,"19":2,"39":2,"52":2,"173":1,"1380":1,"2309":3}}],["r=4",{"2":{"2577":1}}],["rbt",{"2":{"2356":1,"2572":1,"2608":1}}],["rbrc",{"2":{"313":1,"530":2,"1932":1,"2355":1,"2388":1,"2407":1}}],["rr",{"2":{"2153":3}}],["rle",{"0":{"2600":1},"2":{"2575":4,"2585":1,"2592":1,"2596":1,"2600":1}}],["rl",{"2":{"2153":3}}],["rj",{"2":{"2118":2}}],["rz",{"2":{"1636":1}}],["ry",{"2":{"1636":1,"2686":1}}],["ryanbaekr",{"2":{"222":1}}],["r09",{"2":{"1496":2}}],["r08",{"2":{"1496":2}}],["r07",{"2":{"1496":2}}],["r06",{"2":{"1496":2}}],["r05",{"2":{"1496":4}}],["r04",{"2":{"1496":2}}],["r03",{"2":{"1496":2}}],["r02",{"2":{"1496":2}}],["r01",{"2":{"1496":2}}],["r|64",{"2":{"1451":1}}],["rw",{"2":{"1591":2}}],["rwin",{"2":{"1361":1,"2355":1,"2373":1,"2374":1,"2390":1,"2410":1}}],["rwx",{"2":{"236":3}}],["rnrm",{"2":{"2370":2,"2396":2}}],["rn",{"0":{"1281":1},"2":{"1281":1,"1491":5}}],["rn42",{"2":{"134":1,"149":1,"191":1,"211":1,"221":2,"515":1,"1491":1,"1493":1,"2678":1}}],["rts",{"2":{"1195":1,"1197":1,"1198":4}}],["rtc",{"2":{"236":1}}],["rm",{"2":{"2474":1}}],["rmod",{"2":{"1948":1,"2377":1}}],["rms",{"2":{"1577":1}}],["rm24c512c",{"2":{"684":2}}],["rmi",{"2":{"197":13,"199":1}}],["rgui",{"2":{"530":2,"1272":1,"1299":1,"1300":1,"1361":1,"1668":5,"2355":1,"2370":4,"2373":1,"2374":1,"2390":1,"2396":4,"2405":1,"2410":2}}],["rght",{"2":{"313":1,"530":2,"1801":1,"1932":2,"2355":1,"2370":1,"2372":1,"2392":1,"2396":1,"2407":1,"2734":4,"2735":3,"2736":2}}],["rgbtest",{"2":{"2034":1,"2376":1}}],["rgb888",{"2":{"199":1,"2575":2,"2576":2}}],["rgbmatrix",{"2":{"191":1}}],["rgb565",{"2":{"191":1,"199":1,"2575":3,"2576":11,"2577":1}}],["rgb+via",{"2":{"176":1}}],["rgb64",{"2":{"143":2}}],["rgbw",{"0":{"1217":1},"2":{"112":1,"134":1,"266":2,"506":2,"1214":2,"1217":2,"2700":2}}],["rgbkb",{"2":{"93":1,"114":2,"149":1,"176":2,"191":1,"211":1,"266":1}}],["rgblight=true",{"2":{"374":1}}],["rgblight",{"0":{"2694":1},"2":{"49":3,"65":1,"70":3,"74":2,"75":1,"111":6,"112":5,"113":1,"114":6,"160":2,"176":2,"191":10,"199":2,"211":3,"221":3,"222":6,"236":5,"249":4,"266":6,"277":1,"292":6,"404":2,"506":10,"515":1,"582":4,"588":11,"609":1,"611":2,"643":1,"1213":1,"1214":1,"1332":16,"1343":5,"1377":2,"1944":2,"1948":1,"2032":2,"2035":15,"2036":14,"2037":12,"2038":12,"2039":6,"2041":1,"2042":18,"2043":4,"2044":16,"2045":1,"2046":2,"2047":1,"2048":2,"2050":1,"2051":16,"2052":7,"2053":6,"2054":14,"2055":6,"2056":2,"2057":6,"2058":3,"2059":4,"2060":6,"2131":2,"2299":9,"2300":3,"2674":1,"2694":3,"2708":11}}],["rgbleds",{"2":{"191":1}}],["rgbled",{"2":{"45":2,"70":1,"191":1,"222":2,"249":2,"506":2,"511":1,"2032":1,"2040":7,"2131":1,"2300":6}}],["rgb",{"0":{"25":1,"45":1,"80":1,"124":1,"214":1,"233":1,"404":1,"506":1,"1232":1,"1944":1,"1949":1,"1950":1,"1951":1,"1952":1,"1960":1,"1962":1,"1963":1,"1964":1,"1965":1,"1966":1,"1967":1,"1968":1,"1970":1,"1972":1,"1974":1,"1976":1,"1978":1,"1979":1,"1980":1,"1981":1,"1982":1,"1984":1,"1985":1,"1986":1,"1987":1,"1988":1,"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2008":1,"2010":1,"2012":1,"2014":1,"2016":1,"2018":1,"2019":1,"2021":1,"2023":1,"2025":1,"2028":1,"2031":1,"2045":1,"2376":1,"2377":1,"2695":1,"2708":1},"1":{"1233":1,"1945":1,"1946":1,"1947":1,"1948":1,"1949":1,"1950":2,"1951":2,"1952":1,"1953":1,"1954":1,"1955":1,"1956":1,"1957":1,"1958":1,"1959":1,"1960":1,"1961":1,"1962":1,"1963":1,"1964":1,"1965":1,"1966":1,"1967":1,"1968":1,"1969":2,"1970":1,"1971":2,"1972":1,"1973":2,"1974":1,"1975":2,"1976":1,"1977":2,"1978":1,"1979":1,"1980":1,"1981":1,"1982":1,"1983":2,"1984":1,"1985":1,"1986":1,"1987":1,"1988":1,"1989":2,"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"1995":2,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2001":2,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2007":2,"2008":1,"2009":2,"2010":1,"2011":2,"2012":1,"2013":1,"2014":1,"2015":2,"2016":1,"2017":2,"2018":1,"2019":1,"2020":2,"2021":1,"2022":2,"2023":1,"2024":2,"2025":1,"2026":1,"2027":1,"2028":1,"2029":1,"2030":1,"2032":1,"2033":1,"2034":1,"2035":1,"2036":1,"2037":1,"2038":1,"2039":1,"2040":1,"2041":1,"2042":1,"2043":1,"2044":1,"2045":1,"2046":1,"2047":1,"2048":1,"2049":1,"2050":1,"2051":1,"2052":1,"2053":1,"2054":1,"2055":1,"2056":1,"2057":1,"2058":1,"2059":1,"2060":1,"2061":1,"2062":1,"2063":1,"2064":1},"2":{"25":7,"32":3,"45":2,"49":4,"63":1,"65":3,"70":1,"73":1,"80":1,"93":5,"94":1,"112":1,"114":27,"124":3,"133":1,"134":9,"143":4,"149":6,"153":2,"160":1,"176":3,"183":14,"185":7,"191":15,"199":2,"201":1,"211":7,"214":2,"221":3,"222":11,"229":1,"231":3,"233":1,"236":13,"238":1,"244":1,"249":31,"266":8,"277":9,"374":3,"404":2,"506":5,"511":1,"530":16,"574":1,"582":2,"588":20,"589":1,"592":1,"593":5,"594":5,"642":1,"643":1,"664":1,"665":1,"671":1,"729":1,"730":2,"736":1,"737":3,"741":1,"743":1,"749":1,"755":1,"756":2,"762":1,"763":3,"768":1,"770":1,"776":1,"784":1,"785":2,"792":1,"793":3,"800":1,"802":1,"808":1,"816":1,"817":2,"826":1,"827":3,"832":1,"834":1,"840":1,"848":1,"849":2,"859":1,"860":3,"867":1,"869":1,"875":1,"883":1,"884":2,"893":1,"894":3,"901":1,"903":1,"909":1,"917":1,"918":2,"927":1,"928":3,"935":1,"937":1,"943":1,"951":1,"952":2,"961":1,"962":3,"969":1,"971":1,"977":1,"985":1,"986":2,"995":1,"996":3,"1003":1,"1005":1,"1011":1,"1019":1,"1020":2,"1029":1,"1030":3,"1037":1,"1039":1,"1045":1,"1053":1,"1054":2,"1063":1,"1064":3,"1071":1,"1073":1,"1079":1,"1087":1,"1088":2,"1097":1,"1098":3,"1105":1,"1107":1,"1113":1,"1143":1,"1144":2,"1150":1,"1151":3,"1158":1,"1160":1,"1166":1,"1212":1,"1213":1,"1214":2,"1215":1,"1216":1,"1217":3,"1232":1,"1233":1,"1316":1,"1317":1,"1331":1,"1332":25,"1343":1,"1376":2,"1377":8,"1378":1,"1454":2,"1523":1,"1560":4,"1723":2,"1731":1,"1826":8,"1868":1,"1944":1,"1945":2,"1946":1,"1948":36,"1949":149,"1950":7,"1951":4,"1952":21,"1953":22,"1954":24,"1957":8,"1958":11,"1959":15,"1960":6,"1962":1,"1963":1,"1964":1,"1965":1,"1966":1,"1967":1,"1968":1,"1969":1,"1971":1,"2019":1,"2020":1,"2031":3,"2032":3,"2033":1,"2034":24,"2035":4,"2036":2,"2037":2,"2041":3,"2042":2,"2044":2,"2045":3,"2047":1,"2051":5,"2052":10,"2058":24,"2061":1,"2063":6,"2129":1,"2131":2,"2134":2,"2280":2,"2288":1,"2289":2,"2290":2,"2376":22,"2377":15,"2566":5,"2567":2,"2573":8,"2575":2,"2577":5,"2610":1,"2672":1,"2674":1,"2675":1,"2694":2,"2695":3,"2703":1,"2708":51,"2724":2,"2749":1}}],["rq",{"0":{"526":1},"2":{"304":2,"305":2,"526":2}}],["rswp",{"2":{"2370":2,"2396":2}}],["rspc",{"2":{"2103":1,"2104":1,"2106":5,"2107":3,"2382":1}}],["rsi",{"2":{"1410":1}}],["rstp",{"2":{"1553":2,"1555":2,"2363":1}}],["rst",{"2":{"1406":1,"1408":1,"1492":1,"1572":1,"1573":1,"1579":2,"1819":3,"2141":1,"2230":1,"2233":1,"2235":1,"2236":1,"2238":1,"2276":1,"2336":1,"2338":1,"2340":1,"2357":1,"2573":10,"2576":4}}],["rsa",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["rsg",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["rs232",{"2":{"1121":1}}],["rs485",{"2":{"1121":1}}],["rs40",{"2":{"211":1}}],["rsft",{"2":{"313":1,"530":2,"1299":1,"1361":1,"1446":4,"1500":1,"1503":1,"2106":9,"2107":1,"2228":1,"2355":1,"2373":1,"2374":1,"2390":1,"2405":1,"2407":1,"2410":2}}],["rs",{"2":{"249":1,"1591":2}}],["rshift",{"2":{"211":1,"260":1,"1300":1}}],["r17",{"2":{"1496":2}}],["r16",{"2":{"1496":2}}],["r15",{"2":{"1496":2}}],["r14",{"2":{"1496":2}}],["r13",{"2":{"1496":2}}],["r12",{"2":{"1496":2}}],["r11",{"2":{"1496":2}}],["r10",{"2":{"1496":2}}],["r1",{"2":{"211":1}}],["r2",{"2":{"207":1,"211":2,"277":1}}],["rxc1",{"2":{"1907":1}}],["rxcie1",{"2":{"1907":1}}],["rxen1",{"2":{"1907":3}}],["rxled",{"2":{"1316":2,"1320":2}}],["rx",{"2":{"191":1,"1127":1,"1129":8,"1130":5,"1134":1,"1140":11,"1141":9,"1142":8,"1197":2,"1198":4,"1314":1,"1636":1,"1907":6,"2530":2,"2541":2,"2543":2,"2686":1}}],["rp",{"2":{"2536":2,"2537":2,"2538":2,"2542":1}}],["rp2",{"2":{"2450":1}}],["rp2040",{"0":{"163":1,"271":1,"636":1,"691":1,"1318":1,"1321":1,"1324":1,"1908":1,"2249":1,"2531":1,"2540":1,"2541":1,"2542":1,"2544":1,"2545":1},"1":{"2532":1,"2533":1,"2534":1,"2535":1,"2536":1,"2537":1,"2538":1,"2539":1,"2540":1,"2541":2,"2542":2,"2543":1,"2544":1,"2545":1},"2":{"163":5,"174":1,"176":11,"191":9,"199":5,"211":3,"236":3,"266":1,"271":6,"277":1,"492":3,"636":2,"663":1,"688":2,"691":3,"1126":1,"1127":2,"1130":2,"1134":2,"1221":1,"1311":2,"1315":3,"1317":1,"1322":2,"1324":1,"1908":1,"2126":1,"2249":4,"2427":1,"2451":1,"2531":1,"2532":1,"2533":3,"2534":2,"2535":1,"2536":1,"2537":1,"2538":1,"2539":5,"2540":1,"2541":3,"2542":3,"2543":1,"2544":6,"2545":1,"2683":1,"2709":1}}],["rprn",{"2":{"2378":1,"2399":1}}],["rpi",{"2":{"2249":1}}],["rpt",{"2":{"1434":1,"1435":2,"1436":1,"2358":1}}],["rpc",{"2":{"176":2,"2130":7}}],["rdesc",{"2":{"134":1}}],["rot",{"2":{"2719":1}}],["rotary",{"2":{"236":1,"630":1,"1234":1,"2684":1,"2697":1}}],["rotates",{"2":{"1821":1,"1872":3,"1873":3}}],["rotate",{"0":{"1915":1},"2":{"1821":1,"1915":4}}],["rotated",{"2":{"31":1,"34":1,"1329":1,"1821":2,"1870":1}}],["rotating",{"2":{"1562":3,"1576":1,"1822":1,"2143":1}}],["rotations",{"2":{"1874":1,"1875":1,"2584":1,"2686":1}}],["rotational",{"2":{"149":1,"1870":2}}],["rotation",{"0":{"1821":1,"1861":1},"2":{"31":5,"34":5,"199":1,"1560":2,"1816":5,"1821":10,"1822":19,"1861":6,"1872":3,"1873":4,"1915":1,"2140":5,"2143":12,"2576":1,"2577":13,"2581":1,"2617":1,"2686":3}}],["road",{"2":{"2308":1}}],["roadmap",{"2":{"88":1,"104":1}}],["roastpotatoes",{"2":{"2268":1,"2281":1}}],["rosin",{"2":{"2266":1,"2273":2}}],["rosaline",{"2":{"211":1}}],["rofl",{"2":{"2182":3}}],["roving",{"2":{"1491":1}}],["robot",{"2":{"701":1}}],["robustness",{"2":{"211":1}}],["robust",{"2":{"76":1}}],["ro",{"2":{"372":1}}],["rooms",{"2":{"2326":1}}],["room",{"2":{"1725":1,"1822":1,"1946":1,"2143":1,"2290":1}}],["root",{"2":{"279":1,"454":1,"513":1,"556":1,"1254":1,"1298":1,"1338":1,"1451":3,"1452":1,"1729":1,"1952":1,"2262":3,"2446":1,"2447":1,"2452":1,"2513":1,"2753":1}}],["rookiebwoy",{"2":{"241":2,"249":2}}],["rogue87",{"2":{"211":1}}],["ropt",{"2":{"176":1,"1299":1,"1361":1,"2355":1,"2373":1,"2374":1,"2390":1,"2410":1}}],["rocketboard",{"2":{"149":1}}],["rollover",{"0":{"2653":1,"2659":1},"2":{"515":2,"1493":1,"1530":1,"2145":1,"2370":3,"2396":3}}],["roll",{"2":{"347":1,"1686":2,"1929":1}}],["rollback",{"2":{"191":1}}],["rolling",{"0":{"2733":1},"2":{"134":1,"2225":1,"2735":3}}],["roles",{"2":{"2161":1,"2697":1}}],["role",{"2":{"114":1,"149":1,"194":1,"505":3,"2417":1,"2728":2,"2729":8,"2735":8,"2736":5,"2737":1}}],["roughly",{"2":{"1807":1}}],["rouge87",{"2":{"211":1}}],["routing",{"2":{"656":1,"2276":1}}],["routine",{"2":{"49":1,"515":2,"563":1,"565":1,"566":5,"1340":1,"1573":1,"2263":2,"2490":1}}],["routines",{"2":{"49":1,"125":1,"185":1,"508":1,"2526":1}}],["route",{"0":{"307":1,"308":1,"309":1,"310":1},"2":{"2274":1}}],["rounded",{"2":{"1181":1,"1221":1}}],["round",{"2":{"133":1,"134":1,"341":1,"537":1,"1391":1}}],["row1",{"2":{"2311":11}}],["row0",{"2":{"2311":12}}],["row2col",{"2":{"111":1,"502":1,"563":1,"580":3,"2557":2,"2689":1}}],["row",{"2":{"92":2,"114":1,"199":1,"222":1,"255":3,"502":1,"511":5,"565":1,"566":4,"573":1,"580":13,"1252":8,"1314":1,"1323":1,"1324":1,"1326":4,"1329":8,"1403":3,"1405":1,"1495":2,"1496":2,"1497":2,"1519":1,"1530":1,"1547":1,"1552":1,"1563":1,"1612":2,"1614":2,"1684":2,"1725":3,"1728":4,"1946":3,"1949":4,"1958":4,"2122":1,"2125":1,"2131":2,"2155":5,"2231":1,"2238":1,"2268":1,"2273":2,"2274":2,"2276":4,"2279":1,"2311":8,"2401":1,"2519":2,"2558":1,"2566":1,"2575":2,"2614":1,"2617":1,"2686":1,"2689":2,"2693":1,"2728":1,"2740":4,"2745":1}}],["rows",{"2":{"63":1,"111":1,"114":1,"211":2,"502":6,"530":1,"566":2,"580":1,"1329":1,"1330":2,"1359":2,"1403":1,"1405":1,"1725":2,"1792":1,"1822":2,"1946":2,"1958":1,"2122":3,"2125":1,"2131":2,"2155":1,"2164":1,"2268":3,"2270":1,"2276":1,"2311":5,"2401":1,"2406":3,"2423":1,"2557":4,"2558":2,"2566":1,"2614":1,"2648":1,"2689":3,"2747":1}}],["romanian",{"2":{"1355":1,"2712":3}}],["rominronin",{"2":{"381":1,"2293":1}}],["roms",{"2":{"273":1}}],["rom",{"0":{"276":1},"2":{"49":1,"273":1,"1605":1,"2327":1,"2350":1,"2757":1}}],["rcag",{"2":{"2374":1,"2410":1}}],["rcpc",{"2":{"2103":1,"2104":1,"2106":1,"2382":1}}],["rcbr",{"2":{"1932":1,"2378":1,"2399":1}}],["rctrl",{"2":{"1300":1}}],["rctl",{"2":{"313":1,"530":2,"1272":1,"1299":1,"1361":1,"1668":3,"2106":2,"2228":1,"2355":1,"2370":2,"2373":1,"2374":1,"2390":1,"2396":2,"2407":1,"2410":2}}],["rcs",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["rcmd",{"2":{"1299":1,"1361":1,"2355":1,"2373":1,"2374":1,"2390":1,"2410":1}}],["rc",{"2":{"49":3,"1325":1,"2524":1}}],["radius",{"2":{"2577":1}}],["rabk",{"2":{"2378":1,"2399":1}}],["rabbit",{"2":{"143":2}}],["rapc",{"2":{"2103":1,"2104":1,"2106":1,"2382":1}}],["rapidly",{"2":{"1406":1,"1454":1,"2160":1}}],["rag",{"2":{"1299":1,"2373":1,"2374":1,"2410":1}}],["rarely",{"2":{"2183":1}}],["rare",{"2":{"337":1,"584":1}}],["rart",{"2":{"211":1}}],["rartlice",{"2":{"211":1}}],["rartand",{"2":{"211":1}}],["rart80",{"2":{"211":2}}],["rart75m",{"2":{"211":1}}],["rart75",{"2":{"211":2}}],["rart67m",{"2":{"211":1}}],["rart67",{"2":{"211":1}}],["rart60",{"2":{"211":1}}],["rart45",{"2":{"211":1}}],["ralt|mod",{"2":{"1336":1}}],["ralt",{"2":{"313":1,"530":2,"1299":1,"1300":1,"1361":1,"1668":2,"1677":1,"1938":1,"2106":2,"2355":1,"2370":2,"2373":1,"2374":1,"2390":1,"2396":2,"2405":1,"2407":1,"2410":2,"2738":1}}],["rastersoft",{"2":{"222":1}}],["raspberry",{"0":{"163":1,"492":1,"2249":1,"2531":1},"1":{"2532":1,"2533":1,"2534":1,"2535":1,"2536":1,"2537":1,"2538":1,"2539":1,"2540":1,"2541":1,"2542":1,"2543":1,"2544":1,"2545":1},"2":{"163":1,"176":1,"1127":1,"1130":1,"1134":1,"1908":1,"2533":1,"2534":1}}],["rand",{"2":{"1815":1,"2139":1}}],["randomly",{"2":{"1949":3}}],["randomness",{"2":{"1406":3}}],["random",{"0":{"2099":1,"2611":1},"2":{"263":1,"548":1,"1325":1,"1573":2,"1815":2,"1949":5,"2139":2,"2577":1,"2611":3}}],["random8",{"2":{"199":2}}],["ran",{"2":{"581":1}}],["ranges",{"0":{"231":1},"2":{"191":1,"199":2,"231":2,"236":1,"317":1,"1446":1,"1814":1,"1857":1,"2040":1,"2042":1,"2138":1}}],["range",{"0":{"1539":1,"1540":1,"2050":1,"2060":1},"2":{"149":1,"176":2,"191":1,"199":3,"231":22,"534":1,"557":1,"570":4,"1344":2,"1359":4,"1375":1,"1385":5,"1534":3,"1537":2,"1539":1,"1540":1,"1577":1,"1637":1,"1725":3,"1792":1,"1830":1,"1855":1,"1856":1,"1857":2,"1867":1,"1869":1,"1870":2,"1879":1,"1880":1,"1889":1,"1899":1,"1935":1,"1943":1,"1946":3,"2038":2,"2048":3,"2050":2,"2051":5,"2053":6,"2054":14,"2058":1,"2060":5,"2072":1,"2075":1,"2107":1,"2385":1,"2395":1,"2571":1,"2574":1,"2577":3,"2626":1,"2710":1,"2728":1}}],["raison",{"2":{"559":1}}],["raises",{"2":{"462":1,"465":1,"1803":1}}],["raised",{"2":{"341":1,"343":1,"350":2,"1805":2,"2567":2}}],["raise",{"2":{"198":1,"265":1,"465":1,"660":1,"1332":1,"1335":1,"1343":1,"1404":1,"1434":1,"1882":2,"2358":1,"2604":7,"2606":3}}],["rainbow",{"2":{"292":1,"1948":2,"1949":9,"2034":2,"2036":4,"2037":4,"2038":2,"2039":1,"2040":4,"2062":1,"2063":2,"2376":2,"2577":3,"2694":1,"2708":5}}],["raindrop",{"2":{"241":2}}],["raindrops",{"2":{"114":1,"222":1,"1949":6,"2708":2}}],["rainkeeb",{"2":{"143":2}}],["rainkeebs",{"2":{"143":3,"149":2}}],["rain",{"2":{"134":1,"160":1,"199":1,"222":2,"1949":6,"2708":2}}],["rampdown",{"2":{"1578":24}}],["rampup",{"2":{"1578":24}}],["ramlord",{"2":{"211":1}}],["rama",{"2":{"199":1,"211":4}}],["ram",{"2":{"176":1,"191":1,"236":1,"659":1,"660":1,"681":1,"688":2,"1326":1,"1553":1,"1594":1,"1918":1,"2524":2,"2525":1,"2528":1,"2550":1,"2574":5,"2576":2,"2718":1}}],["ramonimbao",{"2":{"102":3,"197":13,"199":1}}],["ratio",{"2":{"1454":1,"1817":1}}],["ratio65",{"2":{"211":2}}],["rationale",{"2":{"49":1}}],["rated",{"2":{"1576":1,"1577":1}}],["rates",{"2":{"642":1}}],["rate",{"0":{"137":1},"2":{"65":1,"114":1,"137":1,"143":3,"149":4,"222":1,"236":1,"502":2,"641":2,"659":4,"1201":1,"1253":1,"1326":1,"1329":1,"1397":4,"1803":1,"1807":1,"1817":1,"1863":1,"1910":3,"2064":1,"2141":1,"2150":1,"2225":1,"2584":3,"2745":1}}],["rather",{"2":{"49":1,"50":1,"124":1,"201":1,"230":1,"234":1,"415":1,"453":1,"468":1,"476":1,"502":1,"505":1,"557":1,"560":1,"570":1,"571":1,"596":1,"1121":1,"1331":1,"1368":1,"1393":1,"1683":1,"1685":1,"1895":1,"2033":1,"2241":2,"2243":1,"2286":1,"2460":1,"2474":1,"2551":1,"2564":1,"2566":2,"2577":1,"2608":1,"2654":1,"2737":1}}],["raw",{"0":{"1918":1,"1925":1,"1927":1},"1":{"1919":1,"1920":1,"1921":1,"1922":1,"1923":1,"1924":1,"1925":1,"1926":2,"1927":1,"1928":2},"2":{"17":1,"50":1,"62":1,"114":1,"160":1,"191":1,"222":1,"266":1,"405":1,"516":1,"566":1,"610":1,"612":1,"1330":1,"1332":7,"1815":3,"1822":6,"1874":1,"1875":1,"1916":1,"1918":1,"1920":5,"1921":2,"1922":2,"1923":8,"1925":1,"2139":3,"2143":4,"2529":2,"2530":1,"2575":4,"2577":3,"2615":3,"2686":1}}],["ribbon",{"2":{"2276":1}}],["river",{"2":{"1949":1}}],["riverflow",{"2":{"277":1,"1949":3}}],["rick",{"2":{"1686":2}}],["richly",{"2":{"2565":1}}],["rich",{"2":{"114":1,"248":1}}],["rigid",{"2":{"2270":1}}],["rigor",{"2":{"556":1}}],["right=11",{"2":{"2577":1}}],["righthand",{"2":{"509":1,"510":1}}],["rightmost",{"2":{"55":1,"1533":1,"1612":1,"1614":1}}],["righty",{"2":{"43":2}}],["right",{"2":{"31":1,"34":1,"100":2,"114":2,"119":2,"149":2,"152":1,"160":1,"176":1,"199":2,"202":1,"203":1,"231":2,"249":1,"255":1,"289":1,"291":1,"313":1,"331":3,"335":1,"453":1,"484":1,"502":2,"506":2,"509":7,"510":5,"511":10,"537":1,"592":1,"627":1,"1123":1,"1126":1,"1129":1,"1299":12,"1300":1,"1336":5,"1396":1,"1405":1,"1416":1,"1436":3,"1439":1,"1496":6,"1500":2,"1501":4,"1547":2,"1558":10,"1559":1,"1584":1,"1586":1,"1668":2,"1670":2,"1677":4,"1684":1,"1722":4,"1725":1,"1728":9,"1730":1,"1801":4,"1817":3,"1822":4,"1860":1,"1866":3,"1870":8,"1873":11,"1875":7,"1876":2,"1882":1,"1883":3,"1892":1,"1912":1,"1913":1,"1929":1,"1932":6,"1946":1,"1948":2,"1949":15,"1954":2,"2060":1,"2102":1,"2103":7,"2104":8,"2107":1,"2122":2,"2124":1,"2125":1,"2126":7,"2127":2,"2131":10,"2141":1,"2143":2,"2153":2,"2157":1,"2162":1,"2167":12,"2179":1,"2229":1,"2232":1,"2234":1,"2241":1,"2246":1,"2248":1,"2255":1,"2270":1,"2273":2,"2274":1,"2355":12,"2370":6,"2372":4,"2373":12,"2374":11,"2378":3,"2382":8,"2388":1,"2390":8,"2392":2,"2394":1,"2396":6,"2399":3,"2410":15,"2411":6,"2436":1,"2474":2,"2498":1,"2508":1,"2530":3,"2546":1,"2558":1,"2577":6,"2598":2,"2619":2,"2661":1,"2688":1,"2695":1,"2697":3,"2708":2,"2738":4}}],["rising",{"2":{"1181":2}}],["risky",{"2":{"1287":1}}],["risk",{"2":{"352":1,"515":1,"692":1,"1287":1,"2272":1,"2720":1}}],["risc",{"0":{"494":1},"1":{"495":1},"2":{"130":2,"134":2,"153":1}}],["riot",{"2":{"222":1,"241":2,"266":1}}],["rionlion100",{"2":{"37":1}}],["rider",{"2":{"2034":1,"2376":1}}],["rid",{"2":{"222":4}}],["ringing",{"2":{"1471":1}}],["ring",{"2":{"199":1,"515":1,"1865":1}}],["rip",{"2":{"149":1}}],["ruin",{"2":{"2274":1}}],["russian",{"2":{"236":1,"2711":1,"2712":2}}],["ruled",{"2":{"2671":1}}],["rule",{"2":{"149":1,"199":1,"457":1,"607":1,"614":1}}],["ruler",{"2":{"143":2,"2272":1}}],["rules",{"0":{"512":1,"1239":1,"1377":1,"1493":1,"1570":1,"2263":1,"2300":1,"2702":1},"1":{"513":1,"514":1,"515":1,"516":1,"1378":1},"2":{"32":1,"49":1,"50":2,"70":29,"74":1,"75":1,"76":3,"87":1,"94":1,"103":1,"114":2,"118":2,"119":1,"133":2,"134":5,"141":1,"149":1,"172":1,"176":2,"191":2,"199":1,"202":1,"211":5,"235":1,"262":1,"266":11,"282":1,"286":1,"374":1,"457":1,"496":2,"499":1,"508":1,"564":1,"565":1,"566":1,"596":1,"606":3,"607":1,"608":1,"610":3,"613":2,"614":6,"631":1,"643":1,"665":1,"681":1,"688":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1124":1,"1127":2,"1130":2,"1144":1,"1175":1,"1196":1,"1213":1,"1218":1,"1238":1,"1239":2,"1245":1,"1254":2,"1291":1,"1312":1,"1314":1,"1315":1,"1322":1,"1329":1,"1330":2,"1340":1,"1346":1,"1347":2,"1376":2,"1377":7,"1378":1,"1384":2,"1385":2,"1386":1,"1390":1,"1393":1,"1394":1,"1396":1,"1413":2,"1439":1,"1455":1,"1460":1,"1491":1,"1493":2,"1495":1,"1500":1,"1501":1,"1508":1,"1527":1,"1528":1,"1532":1,"1547":1,"1548":1,"1553":1,"1557":1,"1559":1,"1570":1,"1590":1,"1631":1,"1635":1,"1657":1,"1679":1,"1724":1,"1729":2,"1787":1,"1800":1,"1812":1,"1825":1,"1830":1,"1833":1,"1853":1,"1855":1,"1856":1,"1857":1,"1858":1,"1862":1,"1867":1,"1868":1,"1869":1,"1870":2,"1871":1,"1904":1,"1905":1,"1906":1,"1907":1,"1919":1,"1930":1,"1945":1,"1952":2,"2032":2,"2063":1,"2068":1,"2073":1,"2105":1,"2109":1,"2121":1,"2137":1,"2145":1,"2146":1,"2147":1,"2148":1,"2149":1,"2150":1,"2154":1,"2161":1,"2164":1,"2172":1,"2178":1,"2181":2,"2182":1,"2225":1,"2229":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2245":2,"2247":2,"2249":2,"2259":2,"2260":1,"2262":2,"2264":4,"2295":4,"2296":1,"2300":19,"2342":1,"2417":1,"2435":1,"2438":1,"2486":1,"2513":1,"2530":1,"2541":1,"2542":1,"2562":1,"2564":1,"2566":3,"2573":2,"2576":10,"2577":2,"2579":1,"2671":1,"2702":1,"2704":1,"2725":1,"2728":2,"2749":1,"2753":3,"2755":1}}],["runoff",{"2":{"1725":1,"1946":1}}],["rundown",{"2":{"554":1}}],["runners",{"2":{"2462":1}}],["runner3680",{"2":{"143":20}}],["running",{"0":{"336":1,"524":1,"2754":1},"2":{"11":1,"50":1,"69":2,"108":1,"132":1,"149":1,"249":1,"315":3,"342":1,"522":1,"527":1,"529":3,"539":1,"558":1,"574":1,"582":1,"628":1,"1134":1,"1181":1,"1238":1,"1241":1,"1439":1,"1463":1,"1464":1,"1492":1,"1519":1,"1530":1,"1743":1,"1745":1,"1747":1,"1749":1,"1755":1,"1756":1,"1779":1,"1785":1,"1970":1,"1972":1,"1974":1,"1976":1,"1982":1,"1983":1,"2024":1,"2030":1,"2037":1,"2229":1,"2254":1,"2255":1,"2262":1,"2327":1,"2353":1,"2435":1,"2454":1,"2461":1,"2463":1,"2465":1,"2467":1,"2477":2,"2479":1,"2584":1,"2667":1}}],["run",{"0":{"1436":1,"2468":1},"2":{"51":1,"90":1,"114":1,"158":2,"176":2,"199":1,"254":1,"263":1,"328":1,"396":2,"400":3,"407":3,"411":4,"414":1,"416":1,"426":1,"428":1,"442":1,"446":1,"447":1,"454":2,"483":1,"484":1,"505":1,"515":1,"521":1,"530":1,"586":1,"590":2,"628":2,"1239":1,"1241":2,"1254":3,"1270":1,"1286":1,"1344":1,"1381":1,"1440":1,"1441":1,"1511":1,"1515":1,"1523":1,"1560":1,"1589":1,"1656":1,"1670":1,"1716":1,"1729":3,"1730":1,"1743":1,"1745":1,"1825":1,"1830":1,"1870":1,"1880":1,"1952":3,"1954":1,"1970":1,"1972":1,"2126":2,"2146":1,"2162":1,"2183":2,"2236":1,"2237":1,"2252":1,"2262":3,"2277":1,"2306":1,"2347":2,"2353":3,"2398":1,"2411":1,"2417":2,"2425":1,"2435":1,"2437":2,"2438":1,"2439":1,"2445":1,"2454":2,"2455":1,"2468":6,"2474":6,"2477":3,"2479":2,"2495":1,"2506":1,"2507":1,"2509":1,"2512":1,"2546":1,"2548":1,"2550":1,"2553":1,"2566":1,"2581":1,"2605":1,"2610":1,"2631":1,"2637":1,"2647":1,"2688":1,"2695":1,"2749":1,"2753":1,"2754":5,"2755":2,"2757":1}}],["runtime=",{"2":{"2252":1}}],["runtime",{"0":{"1553":1},"1":{"1554":1,"1555":1,"1556":1},"2":{"24":1,"660":1,"689":1,"1270":1,"1887":1,"1888":1,"2252":2,"2728":2}}],["runs",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"324":1,"407":2,"411":2,"433":1,"486":1,"575":1,"588":3,"1342":1,"1360":1,"1401":1,"1464":3,"1856":1,"1863":1,"1870":1,"1918":1,"2344":1,"2346":1,"2417":1,"2437":1,"2450":1,"2743":1,"2745":3}}],["r",{"0":{"1970":1,"1972":1},"1":{"1971":1,"1973":1},"2":{"32":1,"191":1,"266":2,"313":1,"429":1,"530":2,"669":1,"672":1,"734":1,"737":1,"760":1,"763":1,"790":1,"793":1,"824":1,"827":1,"857":1,"860":1,"891":1,"894":1,"925":1,"928":1,"959":1,"962":1,"993":1,"996":1,"1027":1,"1030":1,"1061":1,"1064":1,"1095":1,"1098":1,"1126":2,"1148":1,"1151":1,"1217":2,"1300":27,"1451":2,"1686":1,"1948":1,"1957":1,"1959":1,"1971":1,"1973":1,"2034":1,"2051":10,"2112":1,"2148":2,"2153":2,"2237":1,"2294":1,"2326":1,"2355":3,"2376":1,"2386":3,"2407":1,"2566":1,"2575":4,"2686":1,"2699":1,"2715":1}}],["req",{"2":{"2069":1}}],["requried",{"2":{"249":1}}],["requesting",{"2":{"331":1}}],["requested",{"2":{"99":1,"164":1,"527":1,"566":1,"726":1,"1822":1,"2143":1}}],["request",{"0":{"352":1,"2656":1},"1":{"353":1,"354":1,"355":1,"356":1},"2":{"45":1,"50":1,"87":1,"103":1,"126":1,"317":1,"352":3,"355":1,"356":1,"537":1,"550":2,"554":9,"558":1,"560":1,"623":1,"726":1,"1261":1,"1263":1,"1330":1,"1381":1,"1923":8,"2069":2,"2071":1,"2255":3,"2326":1,"2355":1,"2392":1,"2473":1,"2475":1,"2513":1,"2569":1,"2656":1,"2670":1,"2757":1}}],["requests",{"2":{"38":1,"69":1,"199":1,"355":1,"519":2,"549":1,"1265":1,"2478":1,"2567":1,"2568":1,"2656":1,"2719":1}}],["requirement",{"2":{"236":1,"656":1,"1581":1,"2551":1,"2564":1}}],["requirements",{"0":{"364":1,"2251":1,"2564":1},"2":{"160":1,"176":1,"364":2,"429":2,"684":1,"1215":1,"1219":1,"1908":1,"2567":1}}],["requires",{"2":{"158":1,"335":1,"364":1,"402":1,"403":2,"504":1,"625":1,"684":1,"685":1,"688":1,"690":1,"692":1,"694":1,"700":1,"1175":1,"1196":1,"1278":1,"1287":1,"1335":1,"1448":1,"1492":1,"1788":1,"1820":1,"1855":1,"1867":1,"1869":1,"1883":1,"1885":1,"1922":1,"2131":1,"2136":1,"2182":1,"2183":1,"2235":1,"2241":2,"2254":2,"2367":1,"2428":1,"2437":1,"2513":1,"2526":1,"2566":2,"2567":1,"2572":1,"2574":2,"2575":4,"2577":3,"2581":1,"2725":1}}],["require",{"0":{"124":1},"2":{"58":1,"132":1,"134":1,"232":1,"318":1,"341":1,"352":1,"355":2,"371":1,"455":1,"516":1,"529":1,"533":1,"587":1,"625":1,"626":1,"659":1,"688":1,"689":2,"692":1,"1240":1,"1431":1,"1573":1,"1670":1,"1676":1,"1714":1,"1863":1,"1871":1,"1958":1,"1959":1,"2044":1,"2129":1,"2170":1,"2177":1,"2233":1,"2271":1,"2311":1,"2344":1,"2440":1,"2550":1,"2566":1,"2567":1,"2574":1,"2576":3,"2577":1,"2705":1,"2708":1,"2716":1,"2723":1}}],["required",{"0":{"23":1,"2117":1},"1":{"2118":1},"2":{"10":2,"24":1,"50":1,"69":1,"70":1,"107":1,"118":1,"211":1,"228":1,"234":9,"262":1,"292":1,"511":1,"516":1,"552":1,"556":1,"566":1,"571":1,"597":1,"598":1,"610":1,"631":1,"643":1,"654":1,"665":1,"683":1,"700":1,"702":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1126":1,"1134":1,"1144":1,"1175":1,"1176":1,"1177":1,"1196":1,"1197":1,"1213":1,"1226":2,"1230":1,"1357":1,"1416":1,"1430":2,"1445":1,"1534":2,"1581":1,"1591":4,"1670":1,"1671":1,"1819":2,"1821":1,"1825":1,"1855":3,"1856":1,"1857":2,"1859":3,"1863":2,"1867":2,"1868":1,"1869":3,"1870":1,"1873":3,"1887":3,"1889":2,"1918":1,"2065":1,"2129":1,"2130":1,"2141":3,"2172":1,"2199":1,"2226":1,"2260":2,"2270":2,"2272":1,"2275":1,"2323":1,"2328":1,"2350":1,"2429":2,"2431":1,"2436":1,"2513":1,"2515":1,"2523":1,"2564":1,"2566":2,"2567":1,"2576":4,"2577":6,"2672":4,"2673":2,"2675":2,"2676":2,"2677":1,"2684":3,"2685":1,"2686":3,"2688":5,"2693":2,"2694":1,"2695":5,"2699":3,"2700":1,"2752":1,"2753":1}}],["requiring",{"0":{"40":1,"53":1,"67":1,"72":1,"85":1,"101":1,"121":1,"139":1,"155":1,"165":1,"180":1,"193":1,"205":1,"216":1,"225":1,"239":1,"252":1,"269":1},"1":{"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"86":1,"87":1,"88":1,"89":1,"90":1,"102":1,"103":1,"104":1,"105":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"140":1,"141":1,"142":1,"143":1,"156":1,"157":1,"158":1,"159":1,"166":1,"167":1,"168":1,"169":1,"170":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"194":1,"195":1,"196":1,"197":1,"206":1,"207":1,"217":1,"218":1,"219":1,"220":1,"221":1,"226":1,"240":1,"241":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"270":1,"271":1,"272":1,"273":1},"2":{"173":1,"234":1,"276":1,"352":2,"556":1,"689":1,"1497":1,"1499":1,"2154":1}}],["reregister",{"2":{"1665":5,"1671":1,"1674":1}}],["reinstall",{"2":{"2497":1}}],["reinstalling",{"2":{"1241":1}}],["reintroduced",{"2":{"2468":1}}],["reinitializes",{"2":{"2356":1,"2572":1}}],["reinitilization",{"2":{"1829":1}}],["reimplementing",{"2":{"388":1}}],["reimplements",{"2":{"134":1}}],["reimplemented",{"2":{"118":1}}],["reusing",{"2":{"600":1}}],["reused",{"2":{"2255":3,"2686":1}}],["reuse",{"2":{"134":1}}],["rekt1800",{"2":{"211":1}}],["reject",{"2":{"191":1,"266":1}}],["rebase",{"2":{"2474":10}}],["rebasing",{"0":{"2474":1}}],["rebuilding",{"2":{"1290":1}}],["rebooted",{"2":{"1553":1,"2633":1}}],["rebooting",{"2":{"592":1,"1816":1}}],["reboots",{"2":{"504":1,"2149":1}}],["reboot",{"0":{"592":1,"595":1},"1":{"593":1,"594":1,"595":1},"2":{"160":1,"176":1,"191":1,"229":1,"511":1,"592":1,"627":1,"2131":1,"2183":1,"2356":1,"2530":1,"2572":1,"2608":1,"2697":1}}],["rebranded",{"2":{"57":1}}],["recalculations",{"2":{"2584":1}}],["recall",{"2":{"1878":1}}],["rect",{"2":{"2577":5}}],["rectangle",{"2":{"2577":1}}],["rectangles",{"2":{"153":1,"2577":2}}],["rectangular",{"0":{"2619":1},"2":{"1405":1,"2617":1,"2619":1}}],["recreate",{"2":{"2277":2}}],["recreated",{"2":{"149":1}}],["recutting",{"2":{"2276":1}}],["recurse",{"2":{"2252":1,"2255":2,"2477":4}}],["recursive",{"2":{"149":1,"1553":1,"2437":1}}],["recv",{"2":{"2130":1}}],["rec2",{"2":{"1553":3,"2363":1}}],["rec1",{"2":{"1553":3,"2363":1}}],["receiving",{"0":{"1922":1},"2":{"1123":1,"1126":1,"1129":2,"2255":1,"2263":1,"2639":1}}],["receives",{"2":{"1716":1,"2311":2,"2614":1}}],["received",{"2":{"526":1,"703":1,"1380":1,"1921":1,"1922":1,"1923":1,"1925":1,"1926":1,"2147":1,"2570":1}}],["receive",{"0":{"711":1,"1191":1,"1208":1,"1925":1},"1":{"712":1,"713":1,"1192":1,"1193":1,"1209":1,"1926":1},"2":{"191":1,"711":1,"1191":1,"1201":1,"1204":1,"1205":1,"1208":1,"1210":1,"1211":1,"1832":1,"1921":1,"1923":1,"2162":1,"2316":1,"2353":1,"2697":1}}],["reception",{"2":{"1121":3}}],["recently",{"2":{"236":1,"1950":1}}],["recent",{"2":{"114":1,"134":2,"149":1,"160":1,"191":1,"199":1,"222":1,"1438":1,"1491":1,"2495":1}}],["recolored",{"2":{"2577":3}}],["recolor",{"2":{"2577":9}}],["recognised",{"2":{"2315":1}}],["recognises",{"2":{"1567":1}}],["recognise",{"2":{"1359":1,"2183":1}}],["recognizes",{"2":{"1283":1,"2355":1}}],["recognized",{"2":{"1273":1,"1278":1,"1280":1,"1438":1,"1514":1}}],["recognize",{"0":{"1254":1},"2":{"176":1,"481":1,"626":1,"2355":1,"2681":1}}],["reconstruct",{"2":{"2474":1}}],["reconfigured",{"2":{"1828":1}}],["reconfigure",{"2":{"1500":1}}],["reconfiguration",{"2":{"692":1}}],["reconnect",{"2":{"62":1}}],["recopy",{"2":{"452":1}}],["recovering",{"0":{"627":1},"2":{"240":1}}],["recover",{"2":{"228":1}}],["recompilation",{"2":{"2320":1}}],["recompile",{"2":{"124":1,"143":4,"149":1,"2149":1}}],["recommeded",{"2":{"2578":1}}],["recommends",{"2":{"554":1}}],["recommendations",{"2":{"2304":1,"2418":1,"2563":1,"2750":1}}],["recommendation",{"2":{"341":1}}],["recommend",{"2":{"160":1,"625":1,"684":1,"1897":1,"2231":1,"2238":1,"2304":1,"2305":2,"2468":1,"2506":1,"2568":1,"2750":1,"2753":1,"2757":1}}],["recommended",{"2":{"3":1,"4":1,"15":1,"292":2,"493":1,"564":1,"684":1,"1122":1,"1239":1,"1273":1,"1326":7,"1359":1,"1376":1,"1377":2,"1658":1,"1677":1,"1683":1,"1725":2,"1807":3,"1823":1,"1894":1,"1902":1,"1904":1,"1946":2,"2118":1,"2130":1,"2183":2,"2230":2,"2233":2,"2235":2,"2236":2,"2237":2,"2240":2,"2242":2,"2243":2,"2244":2,"2254":1,"2267":1,"2274":2,"2341":1,"2345":1,"2443":1,"2459":1,"2478":1,"2479":1,"2480":2,"2549":1,"2564":1,"2567":1,"2568":1,"2738":1}}],["recommanded",{"2":{"1577":1}}],["records",{"2":{"1895":1,"1899":1}}],["recorded",{"2":{"1553":1,"2363":1,"2474":1,"2633":1}}],["recording",{"2":{"222":1,"1403":4,"1553":6,"1554":1,"1555":1,"1556":3,"2363":2}}],["record",{"0":{"203":1,"572":1,"573":1,"1359":1,"1365":1,"1553":1,"2740":1,"2749":1},"1":{"1360":1,"1361":1,"1362":1,"1363":1,"1554":1,"1555":1,"1556":1},"2":{"3":1,"7":1,"15":1,"22":2,"176":1,"194":2,"195":2,"203":7,"211":3,"534":14,"571":2,"572":4,"573":6,"584":1,"588":3,"1252":8,"1302":3,"1303":3,"1332":8,"1335":1,"1344":3,"1359":10,"1360":9,"1365":1,"1375":3,"1384":5,"1385":9,"1416":1,"1423":3,"1430":3,"1445":1,"1446":3,"1450":1,"1511":1,"1519":2,"1553":3,"1555":3,"1556":4,"1559":1,"1581":1,"1638":7,"1791":1,"1792":3,"1830":4,"1878":1,"1879":3,"1880":4,"1890":1,"1891":4,"1892":4,"1895":2,"1899":3,"1901":2,"1935":2,"1937":1,"1938":1,"1939":1,"1940":5,"1941":5,"1943":5,"1948":1,"2034":1,"2044":5,"2078":3,"2152":3,"2162":4,"2168":4,"2171":1,"2301":2,"2306":1,"2363":3,"2413":5,"2414":8,"2415":5,"2440":1,"2566":1,"2604":4,"2727":1,"2728":8,"2735":1,"2736":1,"2737":1,"2738":1,"2740":2,"2748":1,"2749":59}}],["reordering",{"2":{"182":1,"191":1}}],["reorderable",{"2":{"176":1}}],["reordered",{"2":{"98":1}}],["reorg",{"2":{"114":1}}],["regress",{"2":{"2228":2}}],["regression",{"2":{"134":1,"149":2,"211":1,"2226":2,"2228":1}}],["regulated",{"2":{"2529":1}}],["regulator",{"2":{"1857":1,"2133":1}}],["regularly",{"2":{"586":1}}],["regular",{"2":{"89":1,"114":1,"625":1,"1142":1,"1370":1,"1503":2,"1573":1,"1676":1,"2152":1,"2182":1,"2268":1,"2410":1,"2490":1,"2730":1}}],["regex",{"2":{"1347":1}}],["regen",{"2":{"199":4}}],["regenerate",{"2":{"198":1,"199":1,"249":2}}],["region",{"2":{"2353":1,"2576":5}}],["regions",{"2":{"1268":1}}],["registry",{"2":{"2548":1,"2550":1}}],["registrations",{"2":{"601":1}}],["registration",{"0":{"598":1},"2":{"63":1}}],["registered",{"0":{"2312":1},"1":{"2313":1,"2314":1,"2315":1,"2316":1,"2317":1,"2318":1,"2319":1,"2320":1},"2":{"1303":6,"1665":1,"1670":2,"1671":1,"1673":1,"1860":8,"2130":1,"2161":1,"2735":3,"2736":2}}],["registering",{"2":{"505":1,"1303":1,"1368":1,"1370":2,"1674":1,"1821":1}}],["register16",{"0":{"717":1,"723":1},"1":{"718":1,"719":1,"724":1,"725":1},"2":{"244":2}}],["registers",{"0":{"754":1,"782":1,"814":1,"846":1,"881":1,"915":1,"949":1,"983":1,"1017":1,"1051":1,"1085":1,"1119":1,"1172":1},"1":{"783":1,"815":1,"847":1,"882":1,"916":1,"950":1,"984":1,"1018":1,"1052":1,"1086":1,"1120":1,"1173":1},"2":{"134":1,"749":2,"751":2,"776":2,"778":2,"808":2,"810":2,"840":2,"842":2,"875":2,"877":2,"909":2,"911":2,"943":2,"945":2,"977":2,"979":2,"1011":2,"1013":1,"1045":2,"1047":1,"1079":2,"1081":1,"1113":2,"1115":1,"1142":1,"1166":2,"1168":2,"1557":1,"1863":1,"2311":1,"2524":2}}],["register",{"0":{"714":1,"720":1,"739":1,"749":1,"751":1,"766":1,"776":1,"778":1,"796":1,"808":1,"810":1,"830":1,"840":1,"842":1,"863":1,"875":1,"877":1,"897":1,"909":1,"911":1,"931":1,"943":1,"945":1,"965":1,"977":1,"979":1,"999":1,"1011":1,"1013":1,"1033":1,"1045":1,"1047":1,"1067":1,"1079":1,"1081":1,"1101":1,"1113":1,"1115":1,"1154":1,"1166":1,"1168":1,"1243":1,"1366":1,"1370":1,"1646":1,"1841":1,"2199":1,"2209":1,"2223":1},"1":{"715":1,"716":1,"721":1,"722":1,"740":1,"750":1,"752":1,"767":1,"777":1,"779":1,"797":1,"809":1,"811":1,"831":1,"841":1,"843":1,"864":1,"876":1,"878":1,"898":1,"910":1,"912":1,"932":1,"944":1,"946":1,"966":1,"978":1,"980":1,"1000":1,"1012":1,"1014":1,"1034":1,"1046":1,"1048":1,"1068":1,"1080":1,"1082":1,"1102":1,"1114":1,"1116":1,"1155":1,"1167":1,"1169":1,"1647":1,"1842":1,"2200":1,"2210":1,"2224":1},"2":{"114":1,"134":1,"149":1,"190":1,"191":2,"236":3,"244":2,"249":5,"505":1,"671":1,"672":3,"714":1,"715":1,"717":1,"718":1,"720":1,"721":1,"723":1,"724":1,"726":2,"736":1,"737":4,"739":1,"740":1,"754":1,"762":1,"763":4,"766":1,"767":1,"782":1,"790":1,"792":1,"793":4,"796":1,"797":1,"814":1,"824":1,"826":1,"827":4,"830":1,"831":1,"846":1,"857":1,"859":1,"860":4,"863":1,"864":1,"881":1,"891":1,"893":1,"894":4,"897":1,"898":1,"915":1,"925":1,"927":1,"928":4,"931":1,"932":1,"949":1,"953":1,"959":1,"961":1,"962":4,"965":1,"966":1,"983":1,"987":1,"993":1,"995":1,"996":4,"999":1,"1000":1,"1013":1,"1017":1,"1021":1,"1027":1,"1029":1,"1030":4,"1033":1,"1034":1,"1047":1,"1051":1,"1055":1,"1061":1,"1063":1,"1064":4,"1067":1,"1068":1,"1081":1,"1085":1,"1089":1,"1095":1,"1097":1,"1098":4,"1101":1,"1102":1,"1115":1,"1119":1,"1148":1,"1150":1,"1151":4,"1154":1,"1155":1,"1172":1,"1300":1,"1302":2,"1303":1,"1360":2,"1367":1,"1368":1,"1370":1,"1375":3,"1430":3,"1670":2,"1677":1,"1821":1,"1872":1,"2130":1,"2162":1,"2168":2,"2169":5,"2170":3,"2279":1,"2314":2,"2513":1,"2525":1,"2684":1,"2738":1}}],["reg",{"0":{"739":1,"766":1,"796":1,"830":1,"863":1,"897":1,"931":1,"965":1,"999":1,"1033":1,"1067":1,"1101":1,"1154":1},"1":{"740":1,"767":1,"797":1,"831":1,"864":1,"898":1,"932":1,"966":1,"1000":1,"1034":1,"1068":1,"1102":1,"1155":1},"2":{"740":1,"767":1,"797":1,"831":1,"864":1,"898":1,"932":1,"966":1,"1000":1,"1034":1,"1068":1,"1102":1,"1155":1,"2183":2}}],["regaddr",{"0":{"714":1,"717":1,"720":1,"723":1},"1":{"715":1,"716":1,"718":1,"719":1,"721":1,"722":1,"724":1,"725":1},"2":{"715":1,"718":1,"721":1,"724":1}}],["regards",{"2":{"1431":1,"1676":1,"1863":1,"2169":1,"2515":1}}],["regard",{"2":{"698":1}}],["regardless",{"2":{"49":1,"504":1,"562":1,"1303":1,"1921":1,"2063":1,"2120":1,"2478":1,"2568":1}}],["regarding",{"0":{"27":1},"2":{"92":1,"176":1,"191":1,"213":1,"697":1,"1238":1}}],["retirement",{"2":{"2719":1}}],["retn",{"2":{"2355":1,"2392":1}}],["ret",{"2":{"2184":1,"2384":1}}],["retries",{"2":{"2130":1}}],["retrieves",{"2":{"2479":2}}],["retrieve",{"2":{"317":1,"2577":1}}],["retrieved",{"2":{"317":1}}],["retrieval",{"2":{"191":1,"211":1,"580":1}}],["retry",{"2":{"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1,"1287":1}}],["retro",{"0":{"1431":1,"1432":1,"2738":1,"2739":1},"1":{"1432":1,"2739":1},"2":{"63":1,"112":2,"134":2,"222":1,"236":1,"505":4,"1412":1,"1430":5,"1431":11,"1432":3,"2674":2,"2738":7,"2739":3,"2754":2}}],["retaining",{"2":{"1383":1,"2590":1}}],["retained",{"2":{"1331":1,"2126":1,"2440":1,"2607":1}}],["retain",{"0":{"2046":1},"2":{"114":1,"191":1,"199":1,"2046":2}}],["returned",{"2":{"597":1,"598":1,"599":1,"600":1,"630":1,"1500":1,"1621":1,"1719":1,"1933":1,"2046":1,"2576":10,"2745":1}}],["returncode",{"2":{"428":1,"484":1}}],["returns",{"2":{"428":1,"453":1,"462":1,"464":1,"465":2,"597":1,"638":1,"639":1,"696":1,"1449":1,"1505":1,"1525":2,"1526":1,"1560":1,"1659":1,"1718":1,"1805":1,"1822":12,"1825":1,"1857":1,"1874":5,"1875":3,"1876":1,"1894":1,"1900":1,"1940":1,"2056":1,"2143":8,"2158":1,"2171":1,"2227":1,"2306":1,"2474":2,"2577":2}}],["returning",{"2":{"90":1,"105":2,"203":1,"469":1,"592":1,"597":1,"1506":2,"1523":1,"1560":1,"1716":2,"1937":1,"2070":1,"2231":1,"2238":1,"2696":1}}],["return",{"0":{"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"1182":1,"1185":1,"1187":1,"1190":1,"1193":1,"1205":1,"1211":1,"1482":1,"1484":1,"1489":1,"1616":1,"1621":1,"1652":1,"1696":1,"1701":1,"1704":1,"1707":1,"1710":1,"1713":1,"1742":1,"1756":1,"1762":1,"1772":1,"1775":1,"1777":1,"1779":1,"1782":1,"1785":1,"1847":1,"1850":1,"1969":1,"1983":1,"1989":1,"1995":1,"2001":1,"2011":1,"2017":1,"2020":1,"2022":1,"2024":1,"2027":1,"2030":1,"2187":1,"2205":1,"2208":1,"2213":1,"2215":1,"2218":1,"2220":1},"2":{"31":2,"34":2,"50":1,"90":4,"105":7,"125":3,"134":3,"185":3,"191":2,"194":5,"195":4,"199":1,"249":3,"292":1,"324":1,"453":4,"463":2,"464":2,"465":3,"469":1,"475":1,"529":1,"534":8,"556":3,"565":1,"566":2,"571":2,"572":3,"593":2,"594":1,"597":2,"598":1,"1210":2,"1252":1,"1271":1,"1275":1,"1302":3,"1303":4,"1332":6,"1333":1,"1343":1,"1344":4,"1359":3,"1360":2,"1375":1,"1383":2,"1384":1,"1385":2,"1404":3,"1416":3,"1423":4,"1430":2,"1446":12,"1448":5,"1506":3,"1518":12,"1519":2,"1523":2,"1525":4,"1549":6,"1560":4,"1638":6,"1668":1,"1670":2,"1717":1,"1718":1,"1729":3,"1733":3,"1792":2,"1813":1,"1814":1,"1815":1,"1816":4,"1822":1,"1826":2,"1830":2,"1870":1,"1871":2,"1879":2,"1880":3,"1882":2,"1883":1,"1892":4,"1894":7,"1895":2,"1897":1,"1898":1,"1899":1,"1900":2,"1901":1,"1923":2,"1933":7,"1934":6,"1935":4,"1937":2,"1938":1,"1939":2,"1940":2,"1941":4,"1943":5,"1952":3,"1957":3,"1958":3,"1959":2,"2043":3,"2078":2,"2113":5,"2139":1,"2140":3,"2143":1,"2152":3,"2155":1,"2168":1,"2169":11,"2170":6,"2171":6,"2228":5,"2306":1,"2355":3,"2388":1,"2392":2,"2413":3,"2414":10,"2415":2,"2473":1,"2475":1,"2477":1,"2479":1,"2567":1,"2577":1,"2604":3,"2606":3,"2706":3,"2727":3,"2728":4,"2735":2,"2736":2,"2737":2,"2738":2,"2749":1}}],["rewinding",{"2":{"2474":1}}],["rewind",{"2":{"1932":1,"2355":2,"2393":2}}],["rework",{"0":{"196":2},"2":{"114":1,"134":1,"160":2,"176":1,"191":1,"199":1,"222":1,"236":1,"249":1,"277":1,"560":1,"2424":1}}],["reworked",{"2":{"60":1,"86":1,"118":1,"188":1,"191":1}}],["rewritten",{"2":{"107":1,"1270":1,"2707":1}}],["rewrite",{"2":{"31":1,"75":1,"176":2,"191":1,"1287":2}}],["re",{"0":{"2670":1},"2":{"51":1,"107":1,"119":3,"124":1,"132":1,"134":1,"149":1,"157":1,"176":2,"182":1,"188":1,"198":1,"211":1,"224":1,"228":1,"232":1,"240":1,"241":1,"248":1,"253":1,"268":1,"270":1,"272":1,"273":1,"308":2,"317":1,"344":1,"345":1,"453":1,"455":1,"505":2,"540":1,"541":1,"546":1,"551":1,"554":2,"556":1,"559":1,"574":1,"599":1,"602":1,"627":1,"1136":1,"1138":1,"1234":1,"1241":1,"1300":1,"1304":1,"1332":5,"1363":1,"1403":1,"1414":1,"1499":1,"1514":1,"1515":2,"1518":1,"1563":1,"1581":1,"1674":3,"1677":1,"1678":1,"1791":1,"1882":1,"1912":1,"1948":1,"2116":1,"2121":1,"2126":2,"2128":2,"2182":1,"2183":1,"2226":1,"2255":3,"2274":8,"2276":2,"2279":1,"2282":1,"2303":1,"2305":3,"2307":1,"2309":1,"2342":1,"2353":1,"2421":1,"2441":1,"2446":1,"2451":1,"2454":1,"2455":1,"2469":1,"2474":1,"2478":1,"2490":1,"2491":1,"2510":1,"2512":1,"2513":1,"2516":1,"2550":1,"2552":1,"2554":1,"2563":1,"2564":2,"2566":1,"2568":1,"2576":2,"2602":1,"2610":1,"2614":2,"2615":1,"2703":1,"2704":2,"2705":2,"2708":1,"2728":1,"2738":1}}],["rear",{"2":{"2615":1}}],["reasons",{"2":{"563":1,"1314":1}}],["reasonable",{"2":{"560":1,"1883":1,"2726":1}}],["reason",{"2":{"354":1,"466":1,"560":1,"1272":1,"1300":1,"1336":1,"1363":1,"1379":1,"2118":1,"2556":1,"2564":1,"2577":1,"2728":1,"2741":1,"2753":1}}],["reapply",{"2":{"2474":1}}],["reapplying",{"2":{"1303":1}}],["reap",{"2":{"350":1}}],["reacting",{"2":{"2129":1}}],["reactive",{"0":{"1951":1},"2":{"93":1,"124":1,"176":1,"199":1,"249":1,"266":1,"1728":22,"1730":2,"1949":25,"1951":3,"1954":2,"2708":8}}],["react",{"2":{"2129":1,"2688":2,"2695":2}}],["reached",{"2":{"1697":1,"1803":2,"1807":1}}],["reaches",{"2":{"1340":1,"1802":3,"2317":1,"2474":1}}],["reach",{"2":{"356":1,"557":1,"1438":1,"1684":2,"1807":1,"2144":1,"2564":1}}],["reachable",{"2":{"249":1,"1864":5}}],["reaching",{"2":{"188":1,"1410":1,"2226":1,"2744":1}}],["realtime",{"0":{"2714":1}}],["realpath",{"2":{"2443":1,"2444":1}}],["realized",{"2":{"1663":1}}],["realign",{"2":{"211":1}}],["realloc",{"2":{"236":1}}],["reallocate",{"2":{"199":2}}],["really",{"2":{"153":1,"1242":1,"1329":1,"1412":1,"1414":1,"1430":1,"1499":1,"1668":1,"1671":1,"1676":1,"2270":1,"2509":1,"2740":1}}],["real",{"0":{"1284":1},"2":{"49":1,"245":1,"1251":1,"1278":1,"1284":7,"1325":1,"1430":1,"2144":2,"2553":1}}],["reader",{"2":{"1518":1,"1815":7,"1822":1,"2139":7,"2143":1}}],["readers",{"2":{"460":1}}],["readable",{"2":{"1269":1,"2615":1,"2631":1}}],["readability",{"2":{"453":1,"468":1,"479":1,"530":1,"1269":1,"2405":1}}],["read32",{"2":{"588":1,"2130":1,"2564":1,"2577":6}}],["reads",{"2":{"502":2,"509":1,"510":1,"511":1,"580":3,"638":2,"639":3,"685":1,"720":1,"723":1,"1857":1,"1923":1,"2252":1,"2614":1}}],["readily",{"2":{"479":1,"2350":1}}],["readings",{"2":{"234":1}}],["reading",{"0":{"418":1,"437":1,"535":1},"1":{"419":1,"420":1,"421":1,"422":1},"2":{"114":1,"134":1,"149":1,"160":1,"176":1,"441":1,"502":2,"560":1,"567":1,"681":1,"726":1,"1332":1,"1637":1,"1719":1,"2286":1,"2300":1,"2311":1,"2347":4,"2348":1,"2453":1,"2689":1,"2723":1}}],["ready",{"2":{"282":3,"341":1,"1254":1,"1375":1,"1396":1,"1527":1,"1825":1,"1907":1,"2150":1,"2231":1,"2238":1,"2263":1,"2347":1,"2353":1,"2420":1,"2450":1,"2454":1,"2455":1,"2470":1,"2512":1}}],["readreg",{"2":{"244":1}}],["readreg16",{"2":{"134":1,"244":1}}],["readpin",{"2":{"243":1}}],["readport",{"2":{"114":1}}],["readonly",{"2":{"236":1}}],["readd",{"2":{"199":1}}],["readmes",{"2":{"266":1}}],["readme",{"0":{"623":1,"624":1,"1380":2,"2297":1,"2554":1},"2":{"114":3,"134":1,"160":1,"191":1,"211":1,"222":2,"347":1,"349":1,"559":2,"626":1,"1346":3,"1376":1,"2237":1,"2259":1,"2260":1,"2262":1,"2293":1,"2296":1,"2297":1,"2303":1,"2346":1,"2554":3,"2566":1}}],["read",{"0":{"551":1,"720":1,"723":1,"1186":1,"1204":1,"1290":1,"1619":1,"1650":1,"1815":1,"2139":1},"1":{"721":1,"722":1,"724":1,"725":1,"1187":1,"1205":1,"1620":1,"1621":1,"1651":1,"1652":1},"2":{"2":1,"31":3,"49":1,"114":2,"160":2,"194":1,"195":1,"199":1,"206":1,"243":1,"244":2,"249":1,"284":1,"303":2,"414":1,"418":1,"424":1,"481":1,"530":1,"550":1,"580":3,"633":1,"638":1,"639":2,"696":1,"701":1,"712":2,"721":2,"724":2,"726":1,"727":1,"1121":1,"1186":1,"1187":1,"1192":2,"1205":2,"1209":2,"1210":1,"1237":1,"1266":1,"1290":1,"1301":1,"1325":1,"1331":3,"1332":5,"1333":3,"1341":1,"1375":1,"1452":1,"1518":1,"1553":1,"1554":1,"1619":1,"1620":1,"1634":2,"1637":2,"1644":1,"1651":1,"1662":1,"1714":1,"1803":1,"1815":6,"1822":1,"1857":1,"1868":1,"1870":2,"1872":1,"1923":1,"2124":2,"2125":1,"2139":6,"2143":1,"2162":1,"2263":1,"2299":1,"2311":2,"2348":1,"2423":1,"2473":1,"2475":1,"2536":1,"2537":1,"2553":1,"2564":1,"2579":1,"2581":1,"2600":3,"2612":2,"2614":1,"2615":1,"2713":1,"2723":2,"2724":1,"2752":1}}],["reddit",{"2":{"2715":1}}],["redetect",{"2":{"1828":1}}],["redesigning",{"2":{"1290":1}}],["redefined",{"2":{"2566":1}}],["redefine",{"2":{"500":1,"1320":1,"1385":1,"2106":2}}],["redirect",{"2":{"527":1,"602":1,"1304":1,"2282":1,"2477":1}}],["redirected",{"2":{"268":1}}],["redistribution",{"2":{"2549":1,"2564":1}}],["redistributed",{"2":{"2549":1}}],["redistribute",{"2":{"1380":1,"2570":1}}],["redis",{"0":{"526":1},"2":{"304":1,"308":1}}],["redox",{"2":{"241":2,"249":3}}],["redoing",{"2":{"191":1}}],["redo",{"2":{"160":1}}],["red",{"0":{"647":1,"649":1,"675":1,"677":1,"741":1,"743":1,"749":1,"768":1,"770":1,"776":1,"800":1,"802":1,"808":1,"832":1,"834":1,"840":1,"867":1,"869":1,"875":1,"901":1,"903":1,"909":1,"935":1,"937":1,"943":1,"969":1,"971":1,"977":1,"1003":1,"1005":1,"1011":1,"1037":1,"1039":1,"1045":1,"1071":1,"1073":1,"1079":1,"1105":1,"1107":1,"1113":1,"1158":1,"1160":1,"1166":1},"1":{"648":1,"650":1,"676":1,"678":1,"742":1,"744":1,"750":1,"769":1,"771":1,"777":1,"801":1,"803":1,"809":1,"833":1,"835":1,"841":1,"868":1,"870":1,"876":1,"902":1,"904":1,"910":1,"936":1,"938":1,"944":1,"970":1,"972":1,"978":1,"1004":1,"1006":1,"1012":1,"1038":1,"1040":1,"1046":1,"1072":1,"1074":1,"1080":1,"1106":1,"1108":1,"1114":1,"1159":1,"1161":1,"1167":1},"2":{"49":1,"282":3,"341":1,"401":1,"433":2,"435":1,"593":1,"594":2,"648":2,"650":2,"669":1,"672":1,"676":2,"678":2,"734":1,"737":1,"742":2,"744":2,"750":2,"760":1,"763":1,"769":2,"771":2,"777":2,"790":1,"793":1,"801":2,"803":2,"809":2,"824":1,"827":1,"833":2,"835":2,"841":2,"857":1,"860":1,"868":2,"870":2,"876":2,"891":1,"894":1,"902":2,"904":2,"910":2,"925":1,"928":1,"936":2,"938":2,"944":2,"959":1,"962":1,"970":2,"972":2,"978":2,"993":1,"996":1,"1004":2,"1006":2,"1012":2,"1027":1,"1030":1,"1038":2,"1040":2,"1046":2,"1061":1,"1064":1,"1072":2,"1074":2,"1080":2,"1095":1,"1098":1,"1106":2,"1108":2,"1114":2,"1148":1,"1151":1,"1159":2,"1161":2,"1167":2,"1216":1,"1217":1,"1332":1,"1388":1,"1391":3,"1395":2,"1826":1,"1953":2,"1957":2,"1958":1,"1971":1,"1973":1,"2034":1,"2035":1,"2038":1,"2042":3,"2044":1,"2051":1,"2058":2,"2376":1,"2431":1,"2464":1}}],["reducing",{"2":{"69":1,"565":1,"2226":1}}],["reduces",{"2":{"215":1,"265":1,"560":1,"2226":1}}],["reduced",{"2":{"195":1,"1125":1,"1128":1}}],["reduce",{"0":{"55":1,"2039":1},"2":{"17":1,"94":1,"114":2,"134":1,"149":1,"160":1,"191":6,"199":2,"211":4,"213":1,"222":3,"236":1,"266":1,"513":1,"1437":1,"1817":2,"1932":1,"2141":1,"2262":1,"2263":2,"2478":1,"2566":1,"2701":1,"2705":1,"2706":1}}],["reduction",{"2":{"3":1,"15":1,"149":1}}],["redundant",{"2":{"8":1,"94":1,"114":1,"211":1,"249":5,"266":3,"1524":1}}],["renaming",{"0":{"243":1,"245":1},"2":{"182":1,"194":1,"2567":1}}],["renamed",{"0":{"271":1},"2":{"37":1,"50":1,"142":1,"183":1,"186":1,"219":1,"271":1}}],["rename",{"0":{"142":1,"219":1},"2":{"25":1,"65":1,"94":1,"133":1,"134":3,"149":4,"160":2,"176":4,"191":1,"199":1,"211":13,"222":3,"236":4,"243":1,"249":6,"266":3,"277":4,"1265":1}}],["renderers",{"2":{"2686":1}}],["rendered",{"2":{"1387":1,"1776":1,"1778":1,"1780":1,"1783":1,"1821":1,"1822":1,"2021":1,"2023":1,"2025":1,"2028":1,"2143":1,"2576":2,"2577":1,"2619":1,"2620":1}}],["rendering",{"2":{"1217":1,"1226":1,"1733":1,"1820":5,"1821":2,"1822":1,"1957":1,"2142":3,"2143":1,"2596":1}}],["renders",{"2":{"619":1,"620":1,"1816":2,"1821":1,"1822":1,"2140":2,"2143":1}}],["render",{"2":{"31":1,"191":2,"222":1,"230":1,"1397":1,"1814":3,"1816":8,"1817":1,"1822":5,"1823":3,"2138":2,"2140":4,"2143":2,"2348":1,"2578":1}}],["remembered",{"0":{"1938":1},"2":{"1936":1,"1937":2,"1938":5,"1939":1,"1943":1}}],["remembers",{"2":{"1929":1}}],["remembering",{"2":{"504":1}}],["remember",{"2":{"435":2,"454":1,"509":1,"1332":1,"1921":1,"1936":1,"1937":2,"1938":1,"1939":1,"1943":1,"2149":1,"2150":1,"2152":1,"2183":1,"2311":2,"2467":1,"2752":1,"2757":1}}],["remotes",{"2":{"2477":2}}],["remote",{"2":{"222":1,"236":1,"358":1,"359":1,"1910":3,"2130":1,"2255":5,"2398":3,"2411":3,"2438":2,"2477":9,"2479":9,"2490":2}}],["removal",{"0":{"89":1,"103":1,"126":1,"276":1,"2719":1},"1":{"104":1,"127":1,"2720":1,"2721":1},"2":{"114":1,"124":1,"126":1,"134":1,"240":1,"249":6,"688":1,"1886":2,"2719":2,"2720":2}}],["removes",{"2":{"27":1,"49":1,"50":1,"176":1,"394":1,"1302":1,"1332":1,"2262":1}}],["removed",{"0":{"140":1},"2":{"6":1,"8":1,"36":1,"50":6,"67":1,"86":2,"89":1,"128":1,"140":1,"156":1,"157":1,"194":2,"201":1,"206":1,"211":1,"213":1,"218":1,"228":1,"245":1,"249":1,"254":1,"255":1,"256":1,"262":1,"273":1,"276":1,"394":1,"1673":2,"1674":1,"1823":2,"1894":2,"1897":1,"2468":1,"2566":4,"2720":3}}],["remove",{"0":{"8":1,"128":1,"218":1,"220":1,"254":1,"394":1,"1839":1,"2219":1},"1":{"1840":1,"2220":1},"2":{"4":1,"5":1,"31":3,"32":1,"34":3,"36":1,"38":1,"50":1,"64":1,"65":1,"70":1,"72":1,"75":9,"76":1,"86":1,"94":4,"114":17,"133":8,"134":15,"149":10,"160":5,"176":9,"188":15,"191":42,"199":33,"211":23,"222":19,"236":17,"249":22,"255":1,"257":1,"258":1,"259":2,"265":1,"266":22,"275":1,"277":16,"347":1,"354":1,"394":2,"396":2,"411":1,"529":1,"628":1,"1284":1,"1435":1,"1684":1,"1894":3,"1897":3,"1898":2,"1950":1,"2037":1,"2150":1,"2169":1,"2219":1,"2349":1,"2423":1,"2424":1,"2453":1,"2530":1,"2546":1,"2564":2,"2566":1,"2615":1,"2705":1,"2737":1}}],["removing",{"2":{"3":1,"15":1,"50":1,"134":1,"182":1,"259":1,"272":1,"273":1,"1335":1,"1448":1,"1655":1}}],["remnants",{"2":{"211":1}}],["remainder",{"2":{"1822":2,"2143":2}}],["remainders",{"2":{"236":1}}],["remains",{"2":{"1376":1,"1504":1,"1805":1,"1889":1}}],["remain",{"2":{"480":1,"2071":1,"2490":1,"2574":2}}],["remaining",{"2":{"22":1,"87":1,"103":1,"114":2,"126":1,"191":1,"199":2,"211":2,"249":1,"1212":1,"1442":1,"1815":3,"1822":1,"2031":1,"2139":3,"2143":1,"2147":1,"2148":1,"2723":1}}],["remapped",{"2":{"1142":1,"1822":2,"2143":2}}],["remapping",{"2":{"1142":1,"1499":1}}],["remap",{"2":{"182":1,"1127":2,"1130":2,"1142":5,"1405":1,"1821":2,"2694":1}}],["reflashing",{"2":{"1492":1,"2327":1}}],["reflash",{"2":{"1270":1,"1558":1}}],["reflected",{"2":{"1270":1,"2477":1}}],["reflection",{"2":{"479":1}}],["reflects",{"2":{"182":1,"2491":1}}],["reflect",{"2":{"90":1,"114":1,"182":1,"199":1,"262":1,"1303":1,"1570":1,"1714":1,"2309":1,"2556":1,"2566":1}}],["refills",{"2":{"660":4}}],["refill",{"2":{"659":1}}],["refine",{"2":{"74":1,"1830":1}}],["ref",{"2":{"638":3,"1525":11,"1527":2}}],["refreshed",{"2":{"2067":1}}],["refreshes",{"2":{"588":1}}],["refreshing",{"2":{"1329":1}}],["refresh",{"2":{"331":1,"588":5,"642":1,"1803":1,"1807":1,"1821":1,"2355":2,"2393":2}}],["refers",{"2":{"1300":1,"2662":1}}],["referencing",{"2":{"1416":1,"1432":1}}],["referenced",{"0":{"532":1},"2":{"1729":1,"1952":1,"2403":1,"2477":1}}],["reference",{"0":{"1525":1,"1670":1,"1671":1,"2153":1,"2671":1},"1":{"2672":1,"2673":1,"2674":1,"2675":1,"2676":1,"2677":1,"2678":1,"2679":1,"2680":1,"2681":1,"2682":1,"2683":1,"2684":1,"2685":1,"2686":1,"2687":1,"2688":1,"2689":1,"2690":1,"2691":1,"2692":1,"2693":1,"2694":1,"2695":1,"2696":1,"2697":1,"2698":1,"2699":1,"2700":1},"2":{"95":1,"182":1,"191":2,"199":1,"222":1,"453":1,"540":2,"547":2,"638":1,"1227":1,"1303":1,"1332":1,"1338":1,"1346":1,"1446":1,"1525":8,"1527":4,"1658":1,"1670":1,"1791":1,"1796":1,"2298":1,"2324":1,"2354":1,"2568":1,"2616":1,"2725":1}}],["references",{"0":{"1795":1},"1":{"1796":1,"1797":1},"2":{"27":2,"38":1,"64":1,"95":1,"114":1,"133":1,"134":1,"191":4,"211":2,"222":2,"245":1,"266":1,"1823":2,"2477":1}}],["refereed",{"2":{"1129":2}}],["referring",{"2":{"546":1,"692":1}}],["referred",{"2":{"201":1,"1123":1,"1126":1,"2401":1,"2402":1,"2406":1,"2479":1}}],["refer",{"2":{"233":1,"245":1,"446":1,"543":1,"611":1,"626":1,"821":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1129":1,"1138":1,"1176":1,"1251":1,"1271":1,"1284":1,"1321":1,"1469":1,"1576":1,"1577":2,"1605":1,"1622":1,"1884":1,"1902":1,"1921":1,"2122":1,"2152":1,"2182":1,"2328":1,"2405":1,"2427":1,"2533":1,"2534":1,"2535":1,"2719":1,"2751":1}}],["refs",{"2":{"114":2,"149":1,"2474":1,"2479":2}}],["refactoring",{"0":{"125":1,"169":1,"182":1,"183":1,"184":1,"185":1,"186":1,"188":1,"561":1},"1":{"170":1},"2":{"187":1,"188":1,"191":3,"198":1,"199":1,"222":1,"235":1,"236":1,"244":1,"249":1,"266":1,"341":1,"561":1,"2492":1,"2503":1,"2567":1}}],["refactored",{"2":{"49":1}}],["refactor",{"0":{"17":1,"18":1,"32":1,"33":1,"60":1,"87":1,"263":1},"1":{"34":1,"88":1},"2":{"17":1,"32":1,"49":1,"51":1,"72":1,"75":3,"86":1,"93":1,"94":2,"114":4,"134":2,"149":4,"160":5,"176":4,"190":1,"191":6,"199":5,"211":4,"222":10,"236":3,"249":19,"266":8,"277":8,"2564":1}}],["refactors",{"0":{"29":1,"58":1},"1":{"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1},"2":{"16":1,"561":1,"2566":1}}],["reformat",{"2":{"1":1,"114":1}}],["res2",{"2":{"2148":1,"2153":1}}],["res1",{"2":{"2148":1,"2153":1}}],["resd",{"2":{"2112":1}}],["resistant",{"2":{"1325":1,"1326":4,"1329":1}}],["resistance",{"2":{"821":2,"854":2,"888":2,"922":2,"956":2,"990":2,"1024":2,"1058":2,"1092":2,"1326":1,"2120":1}}],["resistors",{"2":{"1236":1,"1471":1,"2117":1,"2120":2}}],["resistor",{"2":{"236":1,"696":2,"818":2,"821":2,"850":2,"854":2,"885":2,"888":2,"919":2,"922":2,"953":2,"956":2,"987":2,"990":2,"1021":2,"1024":2,"1055":2,"1058":2,"1089":2,"1092":2,"1126":3,"1134":1,"1225":2,"1471":2,"2517":3,"2521":1}}],["res",{"2":{"641":2,"1717":3,"2111":9}}],["reschedules",{"2":{"597":1}}],["resynchronize",{"2":{"2477":3,"2568":1}}],["resynchronizing",{"0":{"2475":1,"2477":1},"1":{"2476":1,"2477":1},"2":{"2472":1}}],["resync",{"2":{"502":1,"1276":1,"2674":1,"2703":1}}],["resembles",{"2":{"2614":1}}],["reserves",{"2":{"2546":1}}],["reserved",{"2":{"461":1,"1594":1,"1814":1,"2138":1,"2294":1,"2348":1,"2395":1,"2571":1}}],["reset6",{"2":{"2530":1}}],["resets",{"2":{"505":1,"1406":1,"1408":1,"1442":1,"1822":1,"2143":1,"2161":1,"2356":1,"2357":1,"2530":1,"2572":1,"2576":2}}],["resetting",{"0":{"2608":1},"2":{"230":1,"683":1,"1243":1,"1497":1,"1691":1,"2524":1}}],["reset",{"0":{"156":1,"167":1,"1289":1,"1698":1,"2539":1,"2609":1},"2":{"49":2,"114":2,"149":1,"156":3,"167":2,"176":2,"188":1,"191":4,"199":2,"222":1,"334":2,"335":3,"336":1,"349":1,"361":2,"433":6,"435":3,"592":6,"593":1,"594":1,"624":2,"625":1,"626":2,"1194":1,"1214":1,"1215":1,"1238":1,"1243":3,"1287":1,"1289":1,"1300":2,"1332":3,"1364":2,"1406":1,"1408":1,"1446":1,"1495":2,"1520":1,"1572":2,"1594":1,"1648":1,"1694":1,"1698":1,"1725":1,"1808":5,"1828":2,"1829":2,"1839":1,"1843":1,"1885":1,"1892":1,"1894":1,"1895":2,"1946":1,"2126":4,"2141":1,"2153":2,"2161":2,"2162":5,"2166":1,"2167":3,"2168":2,"2169":3,"2170":3,"2171":4,"2175":1,"2230":3,"2233":3,"2235":2,"2236":2,"2237":1,"2238":2,"2240":5,"2242":5,"2243":2,"2244":2,"2249":3,"2263":1,"2278":2,"2328":1,"2330":4,"2332":5,"2334":4,"2336":1,"2338":1,"2340":1,"2344":1,"2353":3,"2357":1,"2450":2,"2453":1,"2477":1,"2490":1,"2528":1,"2530":2,"2539":5,"2541":1,"2566":1,"2576":10,"2608":2,"2609":2,"2610":3,"2672":1,"2687":1}}],["responds",{"2":{"1923":1}}],["responding",{"2":{"685":1}}],["respond",{"2":{"551":1,"726":1,"1464":1,"1730":1,"1954":1}}],["response",{"2":{"703":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"726":1,"727":1,"1329":3,"1923":10,"2314":1}}],["responses",{"2":{"522":1,"2550":1}}],["responsiveness",{"2":{"1329":1,"1730":2,"1872":1,"1954":2,"2162":1,"2584":1,"2688":1,"2695":1}}],["responsive",{"2":{"355":1,"587":1,"1954":1}}],["responsibility",{"2":{"341":1}}],["responsible",{"2":{"305":1,"559":1,"562":1,"1225":1,"2162":1,"2417":1,"2523":1,"2584":1,"2744":3}}],["respected",{"2":{"2577":1}}],["respecting",{"2":{"2203":1}}],["respectively",{"2":{"589":1,"610":1,"625":1,"734":1,"760":1,"790":1,"821":1,"824":1,"854":1,"857":1,"888":1,"891":1,"922":1,"925":1,"956":1,"959":1,"990":1,"993":1,"1024":1,"1027":1,"1058":1,"1061":1,"1092":1,"1095":1,"1148":1,"1411":1,"1531":1,"1637":1,"1803":1,"2120":1,"2182":1,"2183":1,"2405":1,"2518":1,"2615":1,"2753":1}}],["respective",{"2":{"50":1,"222":1,"233":1,"234":1,"510":1,"701":1,"1127":1,"1130":1,"1227":1,"1361":1,"1724":1,"1805":3,"1945":1,"2075":1,"2183":1,"2401":1,"2466":1,"2574":1,"2577":1,"2593":1,"2601":1}}],["respect",{"2":{"14":1,"98":1,"176":1,"211":1,"222":1,"562":1,"2549":1,"2576":1,"2598":1}}],["resu",{"2":{"2112":1}}],["resume",{"0":{"1298":1},"2":{"222":1,"263":2,"1298":1}}],["results",{"0":{"316":1},"2":{"99":1,"103":1,"126":1,"236":1,"263":1,"304":2,"315":1,"317":1,"374":1,"457":1,"519":1,"1435":1,"1827":1,"2226":1,"2739":1,"2748":2}}],["resulting",{"2":{"25":1,"119":1,"312":1,"521":1,"527":1,"530":1,"1508":1,"1527":1,"1559":1,"2252":1,"2447":1}}],["result",{"2":{"3":2,"8":1,"15":2,"87":1,"156":1,"166":1,"182":1,"315":2,"316":1,"481":1,"598":1,"641":4,"685":1,"690":2,"726":2,"1289":1,"1340":1,"1379":1,"1405":1,"1406":1,"1412":1,"1431":1,"1432":1,"1518":1,"1527":1,"1573":1,"1827":1,"1866":1,"2161":1,"2169":1,"2448":1,"2576":2,"2577":2,"2581":1,"2719":1,"2738":2}}],["resort",{"2":{"1827":1,"2183":1}}],["resonance",{"2":{"1577":2}}],["resonant",{"2":{"1577":1}}],["resources",{"0":{"2134":1,"2416":1,"2419":1,"2482":1,"2483":1,"2484":1,"2485":1,"2486":1},"1":{"2483":1,"2484":1,"2485":1,"2486":1},"2":{"1326":1,"2151":1,"2398":1,"2409":1,"2411":1,"2419":2,"2457":1,"2482":1,"2490":1,"2543":1,"2546":1,"2577":2,"2582":1,"2713":1,"2750":1}}],["resource",{"2":{"123":1,"516":1,"660":1,"1554":1,"2543":1,"2585":1,"2592":1,"2701":1}}],["resolving",{"0":{"2473":1},"1":{"2474":1},"2":{"203":1,"2255":2,"2472":1,"2564":2}}],["resolved",{"2":{"2474":1}}],["resolves",{"2":{"1516":1,"1523":1}}],["resolve",{"2":{"95":1,"191":3,"236":2,"511":1,"554":1,"2474":1}}],["resolution",{"2":{"134":1,"183":2,"211":2,"641":3,"1221":1,"1557":2,"1558":2,"1636":3,"1637":1,"1807":1,"1859":8,"1910":3,"1911":1,"2111":2,"2112":5,"2113":12,"2684":1}}],["resolutions",{"0":{"2111":1},"2":{"63":1,"1557":1,"1558":4,"1859":1,"2576":1}}],["rests",{"2":{"2665":1}}],["resting",{"2":{"1637":1,"1644":1,"1652":1,"2273":1}}],["restricted",{"2":{"2534":1}}],["restriction",{"2":{"2526":1}}],["restrictions",{"2":{"2525":1,"2549":1}}],["restrictive",{"2":{"1441":1}}],["restructuring",{"2":{"133":1,"560":1}}],["restructure",{"0":{"113":1,"133":1},"2":{"113":1,"176":2,"466":1}}],["rest",{"2":{"243":1,"462":1,"689":1,"690":1,"691":1,"1637":2,"1684":3,"1948":1,"2260":1,"2269":1,"2273":1,"2277":1,"2327":1,"2393":1,"2458":1,"2480":1,"2501":1,"2683":1,"2752":2}}],["restarted",{"2":{"1822":1}}],["restart",{"2":{"199":2,"626":1,"1239":1,"1404":1,"2499":2,"2510":1,"2512":1}}],["restarting",{"2":{"191":1}}],["restoration",{"2":{"149":1}}],["restored",{"2":{"2235":1}}],["restore",{"2":{"62":1,"199":1,"211":2,"222":3,"352":1,"1243":1,"1303":1}}],["rev7",{"2":{"277":1}}],["rev6",{"0":{"1243":1},"2":{"211":1,"331":2,"370":2,"393":2,"394":2,"395":1,"396":1,"1243":1,"1405":1,"1440":1,"2252":2}}],["reva",{"2":{"143":2}}],["revamp",{"2":{"74":1,"222":1}}],["reviewing",{"2":{"554":1,"2563":1,"2569":1}}],["reviewed",{"2":{"554":1}}],["reviewer",{"2":{"554":1}}],["reviews",{"2":{"341":1,"2566":1,"2569":2}}],["review",{"0":{"2439":1,"2569":1},"2":{"341":2,"355":1,"1263":1,"2439":2,"2564":1,"2566":1,"2567":1}}],["revisit",{"2":{"480":1,"482":1}}],["revision",{"2":{"10":2,"17":1,"60":1,"86":1,"114":1,"236":3,"383":1,"568":3,"573":1,"577":1,"579":1,"583":1,"586":1,"587":1,"591":1,"595":1,"1333":1,"1345":1,"1351":1,"1716":1,"2262":2,"2295":1}}],["revisions",{"2":{"10":1,"58":1,"114":1,"160":1,"249":1,"262":1,"277":1,"349":1,"498":1,"502":1,"560":2,"688":1,"2295":2,"2523":1}}],["revised",{"2":{"236":1}}],["reviung61",{"2":{"143":2}}],["reviung5",{"2":{"143":2}}],["reviung53",{"2":{"143":2}}],["reviung41",{"2":{"143":2}}],["reviung39",{"2":{"143":2}}],["reviung34",{"2":{"143":2}}],["reviung33",{"2":{"143":2}}],["reviung",{"2":{"143":7,"149":2}}],["rev0",{"2":{"143":2}}],["rev",{"2":{"114":1,"134":3,"211":6,"226":2,"249":1,"253":1,"1921":1,"2474":4}}],["rev5",{"2":{"114":1,"211":1,"378":1,"2425":4,"2452":2}}],["rev4",{"2":{"114":1,"134":1,"222":1,"226":1,"370":2,"414":3,"415":2,"425":1,"426":2,"624":3,"1287":3,"1351":2,"2231":2,"2238":2,"2262":5,"2421":3}}],["reversed",{"2":{"2155":1}}],["reverses",{"2":{"1933":2}}],["reverse",{"0":{"1753":1,"1754":1,"1980":1,"1981":1,"2191":1},"2":{"191":1,"1302":1,"1402":1,"1408":1,"1438":1,"1727":1,"1914":1,"1932":1,"1933":2,"1934":1,"1948":3,"2034":2,"2052":2,"2059":1,"2184":1,"2357":1,"2369":1,"2376":2,"2377":3,"2384":1}}],["reversing",{"2":{"13":1,"2474":1}}],["reverted",{"2":{"176":1}}],["revert",{"2":{"114":2,"134":2,"149":1,"160":1,"176":2,"191":2,"199":5,"206":1,"211":1,"222":3,"236":1,"2066":1,"2067":1,"2069":1,"2728":1}}],["rev3",{"2":{"57":2,"86":4,"102":1,"134":1,"143":2,"191":1,"241":4,"253":1,"266":1,"375":2,"395":1,"396":1,"624":1,"1243":1,"2262":1,"2293":2,"2294":1,"2295":3,"2422":1,"2469":6}}],["rev1+rev2",{"2":{"72":1}}],["rev1",{"2":{"45":1,"55":4,"58":2,"67":3,"86":5,"102":5,"122":3,"143":34,"149":1,"159":2,"191":1,"207":2,"211":5,"222":1,"226":2,"236":2,"241":12,"249":1,"253":14,"266":2,"624":1,"1312":1,"2126":3,"2295":2}}],["revs",{"2":{"45":3}}],["rev2",{"2":{"45":1,"55":29,"57":2,"67":3,"70":24,"72":1,"86":2,"102":6,"114":3,"143":12,"160":1,"176":3,"211":2,"222":1,"226":1,"236":3,"241":6,"277":1,"313":1,"381":1,"624":1,"2293":1,"2295":2}}],["revx",{"2":{"32":1}}],["reliability",{"2":{"2183":1}}],["reliably",{"2":{"2171":1,"2183":1}}],["relies",{"2":{"2440":1}}],["relieves",{"2":{"2152":1}}],["relied",{"2":{"1824":1}}],["relying",{"2":{"1683":1,"1729":1,"1952":1}}],["rely",{"2":{"222":1,"467":1,"2441":1,"2454":1,"2584":1}}],["relay",{"2":{"1573":2}}],["relaxed",{"2":{"505":1,"1520":1,"1521":1,"2564":2}}],["relax",{"2":{"199":1}}],["relates",{"2":{"2666":1}}],["related",{"2":{"2":1,"16":1,"124":1,"131":1,"163":1,"175":1,"187":1,"188":1,"191":2,"199":1,"236":1,"265":2,"282":3,"341":1,"397":1,"578":1,"609":1,"1262":1,"1298":1,"1340":1,"1341":1,"2162":1,"2305":1,"2348":1,"2442":1,"2480":1,"2510":1,"2556":1,"2566":3,"2577":2,"2582":1,"2702":1}}],["relation",{"2":{"2686":1}}],["relating",{"2":{"215":1,"559":1}}],["relatively",{"2":{"306":1,"1441":1,"2350":1,"2478":1}}],["relatives",{"2":{"157":1}}],["relative",{"0":{"1866":1},"2":{"149":1,"176":1,"1400":1,"1451":1,"1531":1,"1863":2,"2347":1,"2421":1,"2446":1,"2469":1,"2595":1}}],["reload",{"0":{"1773":1,"2018":1},"2":{"149":1,"402":1,"1239":2,"1773":1,"2018":1,"2052":2}}],["relocalize",{"2":{"114":1}}],["relocations",{"2":{"238":1}}],["relocating",{"0":{"43":1},"2":{"236":1}}],["relocate",{"2":{"113":1,"114":2,"133":3,"134":3,"149":2,"188":1,"191":1,"199":1,"211":1,"222":1,"236":1,"277":5}}],["relocated",{"0":{"41":1,"54":1},"1":{"42":1,"43":1,"55":1,"56":1,"57":1,"58":1},"2":{"213":1}}],["releasing",{"2":{"505":1,"707":1,"1431":1,"1675":1,"1807":1,"2079":1,"2450":1,"2490":2,"2566":1,"2662":1,"2735":1,"2738":3}}],["releases",{"0":{"1523":1},"2":{"660":1,"1344":1,"1361":2,"1523":1,"2168":1,"2273":1,"2577":2,"2582":1,"2643":1}}],["released",{"2":{"43":1,"57":1,"515":1,"571":1,"1359":4,"1360":2,"1365":1,"1411":2,"1523":1,"1582":2,"1630":1,"1671":1,"1673":1,"1791":1,"1807":1,"1878":1,"1880":1,"1912":1,"2153":1,"2161":3,"2162":1,"2171":2,"2314":1,"2490":5,"2641":1,"2642":1,"2654":1,"2691":1,"2729":3,"2730":1,"2734":1,"2735":2,"2737":1,"2748":1}}],["release",{"2":{"23":1,"56":1,"111":1,"191":1,"213":1,"222":1,"238":1,"249":1,"251":1,"266":1,"268":1,"277":1,"330":1,"340":1,"504":2,"505":1,"572":2,"707":1,"1133":1,"1275":1,"1284":2,"1299":1,"1303":3,"1319":1,"1332":2,"1360":1,"1361":2,"1368":1,"1430":2,"1431":3,"1442":1,"1500":1,"1522":1,"1523":6,"1572":1,"1649":1,"1674":1,"1675":1,"1802":1,"1840":1,"1844":1,"1885":1,"2106":1,"2152":1,"2161":4,"2183":1,"2197":2,"2198":2,"2431":1,"2448":1,"2459":1,"2468":1,"2735":2,"2736":1,"2737":1}}],["relevant",{"2":{"7":1,"31":1,"132":1,"580":1,"621":1,"1806":1,"2272":1,"2523":1,"2524":4,"2564":1,"2567":1,"2574":1,"2753":1}}],["repairing",{"2":{"2273":1}}],["reparenting",{"2":{"479":1}}],["repurposing",{"2":{"1720":1}}],["repetition",{"2":{"1940":1}}],["repetitively",{"2":{"1410":1}}],["repetitive",{"2":{"1353":1}}],["repeating",{"0":{"1932":1},"2":{"1675":1,"1929":1,"1934":1,"1936":2,"1937":1,"1938":1,"1940":1,"1941":5,"1942":3,"2592":1,"2600":1}}],["repeat",{"0":{"202":1,"1424":1,"1425":1,"1675":1,"1929":1,"1930":1,"2381":1},"1":{"1930":1,"1931":1,"1932":1,"1933":1,"1934":1,"1935":1,"1936":1,"1937":1,"1938":1,"1939":1,"1940":1,"1941":1,"1942":1,"1943":1},"2":{"195":3,"202":6,"211":3,"231":1,"331":1,"505":3,"597":2,"627":1,"1411":9,"1675":6,"1807":1,"1929":7,"1930":2,"1931":3,"1932":9,"1933":3,"1934":4,"1935":4,"1937":2,"1940":8,"1941":8,"1942":2,"1943":1,"2044":3,"2381":4,"2737":5}}],["repeatedly",{"2":{"1287":1,"1335":1,"2051":1,"2156":1}}],["repeated",{"0":{"1940":1,"1941":1},"2":{"64":1,"93":1,"191":1,"597":2,"628":1,"1325":1,"1675":1,"1936":2,"1937":1,"1939":1,"1940":4,"1941":1,"1942":4,"1943":1,"2600":2,"2737":1}}],["repeats",{"2":{"63":1,"202":1}}],["replays",{"2":{"1553":1}}],["replay",{"0":{"1553":1},"1":{"1554":1,"1555":1,"1556":1},"2":{"1553":5,"2363":2,"2474":1}}],["replacing",{"0":{"27":1},"2":{"508":1,"515":2,"571":1,"2182":1,"2438":1}}],["replacement",{"0":{"566":1,"1659":1,"1660":1,"1661":1,"1662":1},"2":{"172":1,"189":1,"204":1,"240":1,"1310":1,"1447":1,"1451":1,"1659":1,"1665":1,"1668":1,"1670":5,"1673":2,"1674":1,"2065":1,"2408":1,"2524":1,"2525":1,"2526":1,"2527":1,"2545":1}}],["replacements",{"2":{"172":1,"2709":1}}],["replaced",{"2":{"7":1,"8":1,"27":1,"169":1,"184":1,"195":3,"254":1,"485":1,"627":1,"1303":1,"1383":1,"1874":1,"2279":1,"2566":1,"2720":1}}],["replace",{"2":{"5":1,"7":1,"31":4,"34":1,"50":1,"172":1,"176":1,"191":1,"199":2,"211":1,"240":4,"266":1,"331":1,"510":1,"563":1,"1254":1,"1300":1,"1335":2,"1359":1,"1380":1,"1385":2,"1447":2,"1451":1,"1497":2,"1564":1,"1655":1,"1875":1,"2103":4,"2263":2,"2437":1,"2438":1,"2728":2}}],["replicate",{"2":{"1948":1,"2034":1}}],["replicates",{"2":{"1548":1,"1559":1}}],["replied",{"2":{"352":1}}],["replugging",{"2":{"1403":1}}],["replug",{"2":{"626":1,"1270":1}}],["reply",{"2":{"324":1}}],["reproducing",{"2":{"1390":1}}],["reproduce",{"2":{"263":1}}],["reprimanded",{"2":{"562":1}}],["representing",{"0":{"1507":1},"2":{"1426":1,"1427":1,"1428":1,"1440":1,"1876":4,"2302":1,"2318":1,"2406":1,"2666":1}}],["represented",{"2":{"701":1,"2577":1,"2686":1}}],["represents",{"2":{"262":1,"538":1,"1436":1,"1452":1,"1725":5,"1876":1,"1938":1,"1946":5,"2147":1,"2152":1,"2262":1,"2311":2,"2474":1,"2615":1,"2640":1,"2660":1,"2757":1}}],["representation",{"2":{"199":1,"519":1,"1300":1,"1303":1,"2298":1,"2616":1,"2671":1,"2745":1}}],["represent",{"2":{"160":1,"436":1,"1438":1,"1507":1,"1876":1,"2311":2,"2348":1,"2474":1,"2615":1}}],["rep",{"2":{"202":1,"211":1,"1930":1,"1931":1,"2381":1}}],["reposition",{"2":{"1684":1}}],["repositories",{"2":{"26":1,"1346":2,"2466":1,"2564":1}}],["repository",{"0":{"2433":1,"2443":1},"2":{"21":1,"126":1,"163":1,"182":2,"224":1,"228":3,"233":1,"241":1,"253":1,"265":4,"268":3,"270":1,"275":1,"337":1,"347":1,"349":2,"352":1,"399":1,"517":1,"529":3,"533":1,"535":1,"554":5,"1265":1,"1376":1,"2252":1,"2346":1,"2428":2,"2429":1,"2433":1,"2437":1,"2439":1,"2440":1,"2441":3,"2443":2,"2445":4,"2446":1,"2448":2,"2463":1,"2472":1,"2475":1,"2477":5,"2479":3,"2501":1,"2513":3,"2556":1,"2564":1,"2565":1,"2566":4,"2569":1,"2719":2,"2720":2}}],["reported",{"2":{"1298":1,"1326":1,"1435":1,"1636":1,"2153":1,"2353":1,"2556":1,"2757":1}}],["reporting",{"2":{"505":1,"1326":1,"1910":2,"2653":1}}],["reports",{"0":{"1876":1},"1":{"1877":1,"1878":1,"1879":1,"1880":1,"1881":1,"1882":1,"1883":1},"2":{"149":1,"175":2,"176":2,"222":1,"505":2,"549":1,"587":1,"627":1,"1863":2,"1868":1,"1872":2,"1875":2,"1876":2,"1880":1,"1883":1,"1916":1,"1921":4,"2144":1,"2649":1,"2699":3}}],["report",{"0":{"1849":1,"1851":2},"1":{"1850":1,"1852":2},"2":{"50":4,"74":1,"114":2,"160":3,"190":1,"191":6,"199":3,"211":1,"236":3,"305":1,"376":1,"505":1,"515":1,"1278":2,"1284":2,"1300":2,"1433":1,"1434":2,"1534":1,"1538":1,"1539":1,"1540":1,"1541":1,"1542":1,"1543":1,"1544":1,"1545":1,"1645":1,"1646":1,"1648":1,"1655":1,"1673":3,"1674":3,"1719":1,"1836":1,"1841":1,"1843":1,"1848":1,"1849":1,"1851":1,"1852":1,"1870":15,"1871":5,"1872":4,"1873":2,"1874":18,"1875":18,"1876":16,"1878":5,"1879":11,"1880":12,"1881":1,"1882":10,"1883":13,"1900":4,"1901":4,"1917":2,"1921":2,"1922":1,"1923":13,"1925":1,"1927":1,"2125":1,"2326":1,"2358":2,"2466":1,"2660":1}}],["repo",{"0":{"6":1},"2":{"6":1,"22":1,"77":1,"360":1,"370":1,"389":1,"390":1,"539":1,"556":1,"1346":1,"1398":1,"2114":1,"2126":1,"2238":1,"2303":2,"2474":2,"2479":6,"2480":1,"2566":1}}],["q=is",{"2":{"2566":1}}],["ql",{"2":{"2171":14}}],["qn",{"2":{"358":3,"359":3,"360":2,"361":2}}],["qc60",{"2":{"253":2}}],["q9",{"2":{"249":1}}],["q8",{"2":{"249":1}}],["q7",{"2":{"249":1}}],["q4z",{"2":{"241":2}}],["q4",{"2":{"226":2,"236":1}}],["q0",{"2":{"211":2,"226":4,"236":1}}],["qol",{"2":{"211":1}}],["q5",{"2":{"191":1,"249":1}}],["q6",{"2":{"191":1}}],["q3",{"2":{"191":1,"236":1}}],["qff",{"0":{"2600":1},"2":{"191":1,"266":1,"409":1,"410":1,"2575":6,"2577":6,"2585":2,"2587":8,"2588":12,"2589":2,"2590":1,"2591":1,"2600":1}}],["qgfimagefile",{"2":{"249":1}}],["qgf",{"0":{"2600":1},"2":{"191":1,"266":1,"408":1,"2575":4,"2577":6,"2586":1,"2587":4,"2588":2,"2589":1,"2590":1,"2591":1,"2592":2,"2593":5,"2594":10,"2595":3,"2596":7,"2597":3,"2598":6,"2599":3,"2600":1}}],["q2m3ueu",{"2":{"624":1}}],["q2",{"2":{"176":1,"236":1}}],["qp",{"2":{"160":1,"176":1,"191":2,"199":1,"211":1,"222":1,"236":4,"249":2,"2576":29,"2577":104,"2581":6,"2582":2,"2584":1}}],["qpocket",{"2":{"149":2}}],["qpockets",{"2":{"143":4}}],["q",{"2":{"149":1,"191":1,"266":1,"277":2,"313":1,"380":1,"404":1,"530":2,"1355":1,"1511":1,"1527":1,"2169":1,"2355":3,"2386":3,"2401":1,"2407":1,"2513":1,"2712":3}}],["qaz",{"2":{"143":2}}],["qk100",{"2":{"266":1}}],["qk21",{"2":{"236":1}}],["qk",{"0":{"156":1,"167":1},"2":{"120":8,"156":2,"167":2,"176":3,"188":4,"189":1,"191":8,"194":2,"199":5,"202":6,"231":26,"266":1,"277":1,"313":1,"317":3,"504":1,"530":2,"534":1,"592":2,"626":1,"1270":1,"1287":1,"1344":1,"1354":4,"1355":1,"1398":4,"1399":1,"1402":2,"1403":4,"1406":6,"1408":15,"1434":6,"1443":3,"1446":22,"1456":7,"1494":3,"1500":1,"1512":3,"1518":8,"1553":5,"1564":1,"1565":2,"1566":2,"1572":13,"1630":1,"1631":1,"1632":1,"1639":32,"1669":3,"1679":1,"1686":1,"1687":2,"1727":9,"1793":144,"1801":19,"1834":32,"1930":4,"1931":4,"2034":11,"2044":2,"2069":4,"2104":7,"2112":9,"2149":3,"2152":2,"2156":7,"2168":1,"2171":2,"2173":2,"2184":8,"2228":16,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":2,"2247":2,"2249":2,"2356":7,"2357":15,"2358":6,"2359":3,"2360":7,"2361":3,"2362":1,"2363":5,"2364":2,"2365":32,"2366":1,"2368":1,"2369":9,"2370":35,"2371":144,"2372":19,"2375":3,"2376":11,"2379":3,"2380":32,"2381":4,"2382":7,"2383":7,"2384":8,"2396":35,"2524":1,"2565":1,"2572":8,"2608":2,"2609":2,"2728":3}}],["q11",{"2":{"249":1}}],["q1v1",{"2":{"226":4,"236":1,"266":1}}],["q1",{"2":{"114":1,"191":1,"226":4}}],["qw",{"2":{"1511":4,"1527":1}}],["qwertz",{"0":{"2658":1}}],["qwertlekeys",{"2":{"211":1}}],["qwertyydox",{"2":{"253":2}}],["qwerty",{"0":{"2145":1,"2657":1},"2":{"92":1,"176":2,"257":1,"258":1,"259":2,"572":1,"1332":1,"1335":1,"1338":1,"1339":1,"1355":2,"1362":1,"1398":1,"1524":1,"1525":3,"1527":2,"1813":2,"1934":1,"2137":2,"2145":1,"2154":1,"2317":1,"2318":1,"2319":4,"2402":1,"2406":1,"2607":2,"2712":4}}],["qwiic",{"0":{"128":1},"2":{"74":2,"128":2,"134":6}}],["quokka",{"2":{"249":1}}],["quote",{"2":{"1584":1,"2355":1,"2378":1,"2388":1,"2399":1}}],["quoted",{"2":{"160":1,"612":1}}],["quot",{"0":{"1284":4,"1458":2,"1506":2,"1943":2,"2166":2,"2349":2,"2472":2},"2":{"5":2,"14":2,"75":2,"92":2,"110":8,"114":4,"119":10,"134":4,"152":2,"160":6,"174":2,"175":2,"176":5,"182":4,"187":2,"189":2,"190":2,"191":8,"194":2,"199":6,"201":16,"202":2,"210":2,"211":14,"215":2,"218":2,"222":6,"230":2,"234":2,"236":8,"245":4,"249":10,"263":6,"266":6,"277":2,"282":6,"313":1,"317":4,"341":2,"350":4,"352":2,"374":2,"429":2,"430":2,"457":2,"462":6,"466":2,"502":6,"505":2,"523":2,"524":2,"530":2,"554":6,"557":2,"574":2,"589":2,"597":2,"598":2,"611":4,"612":2,"617":2,"638":2,"639":2,"654":2,"659":2,"681":2,"688":2,"689":2,"690":2,"691":2,"726":2,"852":4,"1023":4,"1057":4,"1127":4,"1129":2,"1130":4,"1143":2,"1212":2,"1214":4,"1215":8,"1219":2,"1224":4,"1250":8,"1254":2,"1270":2,"1272":4,"1273":2,"1284":2,"1287":2,"1325":2,"1329":4,"1331":2,"1332":4,"1338":4,"1340":2,"1346":2,"1351":2,"1357":66,"1359":2,"1361":14,"1368":2,"1384":4,"1385":4,"1391":2,"1397":2,"1399":6,"1402":2,"1416":2,"1417":1,"1419":1,"1428":1,"1447":2,"1448":2,"1457":4,"1458":2,"1463":2,"1495":2,"1499":4,"1501":2,"1503":8,"1506":6,"1508":2,"1511":2,"1522":2,"1534":2,"1539":2,"1540":2,"1559":4,"1567":2,"1573":6,"1610":2,"1685":2,"1686":6,"1715":2,"1817":2,"1830":2,"1866":4,"1876":2,"1912":2,"1923":6,"1929":4,"1932":6,"1933":2,"1934":4,"1935":14,"1936":2,"1938":4,"1941":2,"1943":2,"1950":2,"1957":2,"2031":2,"2034":2,"2038":12,"2078":2,"2114":2,"2126":2,"2131":2,"2141":2,"2154":2,"2169":2,"2171":5,"2172":14,"2173":12,"2174":8,"2175":18,"2177":4,"2182":6,"2183":2,"2231":2,"2238":2,"2255":10,"2259":2,"2268":2,"2272":2,"2278":6,"2281":8,"2326":2,"2331":2,"2339":2,"2347":2,"2349":2,"2355":2,"2376":2,"2378":1,"2388":2,"2397":2,"2398":6,"2399":1,"2406":8,"2407":5,"2411":6,"2413":3,"2424":2,"2439":6,"2452":4,"2460":4,"2467":2,"2468":2,"2476":2,"2479":4,"2480":2,"2490":8,"2513":14,"2543":2,"2545":2,"2550":2,"2559":2,"2564":6,"2565":2,"2566":15,"2567":2,"2575":2,"2576":2,"2577":4,"2581":2,"2585":2,"2592":4,"2600":2,"2606":2,"2615":6,"2617":2,"2672":16,"2673":4,"2677":2,"2683":2,"2686":18,"2688":10,"2689":18,"2692":2,"2693":4,"2694":6,"2695":12,"2696":2,"2697":6,"2698":2,"2699":10,"2700":4,"2727":2,"2730":4,"2740":2,"2744":2,"2750":4,"2751":2,"2752":2,"2753":1,"2757":2}}],["quirky",{"2":{"2576":1}}],["quit",{"2":{"1344":1}}],["quite",{"2":{"119":1,"401":1,"493":1,"1265":1,"1436":1,"1655":1,"1825":1,"2102":1,"2169":1,"2229":1,"2712":1,"2750":1,"2752":2,"2757":1}}],["quickly",{"2":{"1582":2,"1804":1,"1807":1,"2038":1,"2169":2,"2230":1,"2233":1,"2235":1,"2236":1,"2238":1,"2272":2,"2273":2,"2344":1,"2502":1,"2727":1}}],["quicker",{"2":{"1416":1,"2273":1,"2564":2}}],["quickest",{"2":{"124":1}}],["quickstart",{"0":{"1235":1}}],["quick",{"0":{"195":1,"2250":1,"2737":1},"1":{"2251":1,"2252":1,"2253":1,"2254":1},"2":{"112":1,"114":1,"195":8,"199":3,"505":4,"554":1,"1416":1,"2040":1,"2171":1,"2279":1,"2535":1,"2714":1,"2737":13}}],["quad",{"0":{"2169":1},"2":{"2169":1}}],["quadratic",{"2":{"1802":1,"1804":1,"1807":1}}],["quality",{"2":{"659":7,"1265":1,"2719":1}}],["quark",{"2":{"143":2}}],["quarter",{"2":{"133":1,"189":1}}],["quackfire",{"2":{"57":2}}],["quantum",{"0":{"153":1,"232":1,"248":1,"254":1,"560":1,"2321":1,"2356":1,"2571":1,"2573":1,"2574":1,"2575":1,"2576":1,"2577":1,"2578":1,"2580":1,"2581":1,"2582":1},"1":{"2322":1,"2323":1,"2324":1,"2325":1,"2326":1,"2572":1,"2574":1,"2575":1,"2576":1,"2577":1,"2579":1,"2580":1,"2581":2,"2582":2,"2583":1,"2584":1},"2":{"1":1,"74":1,"75":2,"94":1,"113":2,"114":7,"133":1,"134":1,"149":3,"153":5,"158":1,"160":3,"176":2,"191":2,"199":7,"203":2,"211":3,"222":9,"231":1,"232":5,"234":2,"236":1,"248":3,"249":1,"266":4,"404":1,"408":1,"409":1,"410":1,"515":1,"568":1,"1257":1,"1267":1,"1330":1,"1332":1,"1383":2,"1385":1,"1398":7,"1399":2,"1402":1,"1406":1,"1445":2,"1446":1,"1729":1,"1797":7,"1870":1,"1871":1,"1952":1,"2036":1,"2162":2,"2257":1,"2263":3,"2322":1,"2356":1,"2406":1,"2424":1,"2501":1,"2566":2,"2571":3,"2573":18,"2574":12,"2575":4,"2576":24,"2577":4,"2578":2,"2579":4,"2581":1,"2585":1,"2592":1,"2607":1,"2608":1,"2640":1,"2645":1,"2712":1,"2741":1,"2743":1,"2744":1,"2749":4,"2753":1}}],["queried",{"2":{"1438":1}}],["query",{"0":{"2057":1},"2":{"132":1,"134":1,"290":1}}],["queued",{"0":{"523":1},"2":{"263":1,"315":1,"522":1}}],["queue",{"2":{"191":1,"304":1,"315":1,"526":1,"2577":1}}],["ques",{"2":{"134":1,"191":1,"2378":1,"2399":1}}],["questioned",{"2":{"2566":1}}],["questions",{"0":{"1237":1,"1256":1},"1":{"1238":1,"1239":1,"1240":1,"1241":1,"1242":1,"1243":1,"1257":1,"1258":1,"1259":1,"1260":1,"1261":1,"1262":1,"1263":1,"1264":1,"1265":1},"2":{"355":1,"551":4,"554":1,"559":1,"1237":1,"1244":1,"1264":1,"1266":1}}],["question",{"0":{"551":1},"2":{"48":1,"191":1,"529":1,"551":2,"559":1,"1471":1,"2378":1,"2399":1,"2670":2}}],["quefrency",{"2":{"45":1,"114":1,"2131":1}}],["qmkuser",{"2":{"2477":2}}],["qmkurl",{"2":{"1359":4,"2566":1}}],["qmklayer",{"2":{"1446":2}}],["qmkbest",{"2":{"1359":9,"1446":2,"2566":1}}],["qmk+current",{"2":{"49":1}}],["qmk",{"0":{"0":1,"9":1,"19":1,"26":1,"39":1,"51":1,"52":1,"65":1,"66":1,"70":1,"76":1,"78":1,"82":1,"83":1,"95":1,"96":1,"115":1,"135":1,"150":1,"161":1,"164":1,"177":1,"192":1,"200":1,"212":1,"223":1,"237":1,"250":1,"267":1,"303":1,"311":1,"318":1,"362":1,"368":1,"370":1,"371":1,"372":1,"373":1,"374":1,"375":1,"376":1,"377":1,"378":1,"379":1,"380":1,"381":1,"382":1,"383":1,"384":1,"385":1,"386":1,"387":1,"388":1,"389":1,"390":1,"391":1,"393":1,"394":1,"395":1,"396":1,"397":1,"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1,"410":1,"411":1,"412":1,"416":1,"427":1,"448":1,"496":1,"497":1,"517":1,"522":1,"527":1,"528":1,"536":1,"1247":1,"1248":1,"1257":1,"1264":1,"1265":1,"1797":1,"2144":1,"2150":1,"2231":1,"2238":1,"2255":1,"2257":1,"2284":1,"2292":1,"2293":1,"2322":1,"2417":1,"2427":1,"2428":1,"2441":1,"2442":1,"2451":1,"2452":1,"2456":1,"2468":1,"2471":1,"2483":1,"2492":1,"2500":1,"2503":1,"2511":1,"2553":1,"2572":1,"2585":1,"2592":1,"2600":1,"2613":1,"2621":1,"2693":1,"2722":1,"2742":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"319":1,"320":1,"321":1,"363":1,"364":1,"365":1,"366":1,"367":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":1,"423":1,"424":1,"449":1,"450":1,"451":1,"452":1,"497":1,"498":1,"499":1,"500":1,"523":1,"524":1,"525":1,"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"537":1,"538":1,"539":1,"540":1,"541":1,"542":1,"543":1,"2145":1,"2146":1,"2147":1,"2148":1,"2149":1,"2150":1,"2151":1,"2152":1,"2153":1,"2258":1,"2259":1,"2260":1,"2293":1,"2294":1,"2295":1,"2296":1,"2297":1,"2298":1,"2299":1,"2300":1,"2301":1,"2302":1,"2303":1,"2304":1,"2305":1,"2306":1,"2307":1,"2308":1,"2309":1,"2310":1,"2418":1,"2419":1,"2429":1,"2430":1,"2431":1,"2432":1,"2433":1,"2434":1,"2435":1,"2436":1,"2437":1,"2438":1,"2439":1,"2440":1,"2442":1,"2443":1,"2444":1,"2445":1,"2446":1,"2447":1,"2448":1,"2452":1,"2453":1,"2457":1,"2458":1,"2459":1,"2460":1,"2461":1,"2462":1,"2463":1,"2464":1,"2465":1,"2466":1,"2467":1,"2468":1,"2469":1,"2472":1,"2501":1,"2502":1,"2512":1,"2554":1,"2555":1,"2556":1,"2557":1,"2558":1,"2559":1,"2560":1,"2561":1,"2562":1,"2586":1,"2587":1,"2588":1,"2589":1,"2590":1,"2591":1,"2593":1,"2594":1,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1,"2614":1,"2615":1,"2616":1,"2617":1,"2618":1,"2619":1,"2620":1,"2622":1,"2623":1,"2624":1,"2625":1,"2626":1,"2627":1,"2628":1,"2629":1,"2630":1,"2631":1,"2632":1,"2633":1,"2634":1,"2635":1,"2636":1,"2637":1,"2638":1,"2639":1,"2640":1,"2641":1,"2642":1,"2643":1,"2644":1,"2645":1,"2646":1,"2647":1,"2648":1,"2649":1,"2650":1,"2651":1,"2652":1,"2653":1,"2654":1,"2655":1,"2656":1,"2657":1,"2658":1,"2659":1,"2660":1,"2661":1,"2662":1,"2663":1,"2664":1,"2665":1,"2666":1,"2667":1,"2668":1,"2669":1,"2743":1,"2744":1,"2745":1,"2746":1,"2747":1,"2748":1,"2749":1},"2":{"0":3,"1":1,"2":2,"6":1,"9":3,"10":2,"11":1,"12":1,"19":3,"21":4,"23":2,"24":3,"26":1,"38":2,"39":3,"49":2,"50":2,"51":1,"52":3,"65":1,"67":1,"69":2,"70":9,"75":2,"76":1,"82":2,"83":2,"86":2,"87":1,"93":1,"94":2,"95":4,"99":1,"100":1,"102":1,"103":1,"109":1,"110":1,"111":2,"112":3,"113":1,"114":5,"116":4,"118":1,"119":2,"120":3,"122":1,"124":1,"126":1,"128":2,"130":2,"131":2,"132":2,"133":2,"134":5,"143":1,"145":1,"146":1,"152":2,"153":2,"154":1,"156":2,"158":7,"159":1,"160":2,"163":5,"164":4,"166":1,"167":1,"168":1,"169":1,"172":3,"173":9,"174":2,"176":3,"179":1,"181":1,"182":2,"184":1,"189":3,"195":1,"196":1,"197":1,"199":6,"201":3,"202":1,"209":1,"211":10,"213":3,"224":3,"228":4,"230":1,"236":6,"238":1,"240":6,"243":3,"244":1,"249":6,"251":2,"254":1,"262":1,"263":3,"265":5,"266":3,"268":4,"273":3,"275":3,"276":3,"278":1,"279":1,"282":3,"291":1,"292":3,"302":1,"303":1,"304":1,"305":2,"311":2,"313":1,"314":1,"315":1,"317":5,"318":3,"320":1,"331":5,"335":1,"337":5,"341":4,"343":2,"344":2,"345":2,"346":1,"347":3,"349":8,"350":2,"351":1,"352":9,"356":1,"358":4,"359":1,"360":3,"361":4,"363":3,"364":2,"365":8,"366":7,"367":3,"370":18,"371":6,"372":3,"373":3,"374":4,"375":7,"376":4,"377":1,"378":5,"379":2,"380":3,"381":2,"382":2,"383":1,"384":1,"385":1,"386":1,"387":2,"388":4,"389":3,"390":3,"391":4,"393":4,"394":4,"395":2,"396":2,"397":7,"399":1,"400":4,"401":7,"402":1,"403":2,"404":1,"405":4,"406":2,"407":9,"408":1,"411":5,"412":1,"413":1,"414":5,"415":3,"416":1,"417":3,"419":1,"420":1,"421":1,"422":1,"423":3,"424":3,"427":1,"428":2,"429":2,"430":8,"431":1,"433":1,"436":2,"437":1,"440":1,"441":1,"443":1,"444":1,"446":1,"447":1,"448":2,"450":3,"451":4,"452":1,"454":1,"458":5,"483":3,"484":1,"485":2,"486":3,"489":1,"492":1,"496":4,"497":1,"499":1,"511":7,"513":1,"514":1,"516":1,"517":3,"519":4,"520":3,"521":4,"522":5,"523":1,"526":3,"527":3,"528":1,"529":6,"530":4,"532":1,"533":1,"534":1,"535":3,"536":1,"537":1,"539":1,"541":3,"545":2,"549":1,"550":1,"551":3,"552":2,"554":3,"556":2,"557":3,"558":2,"559":1,"560":5,"561":2,"563":1,"567":3,"568":1,"570":1,"571":3,"572":1,"580":2,"585":1,"587":2,"588":1,"596":1,"605":2,"606":6,"607":3,"609":1,"613":2,"614":3,"615":2,"621":1,"622":1,"624":3,"625":2,"626":1,"629":4,"630":1,"636":1,"656":1,"684":1,"685":1,"688":1,"689":1,"690":2,"691":1,"694":1,"695":1,"699":1,"1138":1,"1142":1,"1174":1,"1181":1,"1195":1,"1217":1,"1234":2,"1235":1,"1236":1,"1237":1,"1241":5,"1242":1,"1247":1,"1248":1,"1251":1,"1255":1,"1257":2,"1258":1,"1264":2,"1265":7,"1270":1,"1271":1,"1273":1,"1278":2,"1286":2,"1291":1,"1302":2,"1303":1,"1315":1,"1322":1,"1325":1,"1327":1,"1332":1,"1334":1,"1336":1,"1338":1,"1340":1,"1344":1,"1346":1,"1351":1,"1353":1,"1354":1,"1357":1,"1359":6,"1376":2,"1377":1,"1383":1,"1385":2,"1441":1,"1445":1,"1454":1,"1491":1,"1492":1,"1499":1,"1515":1,"1529":2,"1530":1,"1553":1,"1559":1,"1562":1,"1594":2,"1633":1,"1680":1,"1714":1,"1729":1,"1787":1,"1792":1,"1797":1,"1814":3,"1830":1,"1832":1,"1853":1,"1884":1,"1918":1,"1952":1,"2031":2,"2033":1,"2047":1,"2072":1,"2108":1,"2114":3,"2122":1,"2125":2,"2126":6,"2130":1,"2134":1,"2138":3,"2145":1,"2146":3,"2149":1,"2153":1,"2169":1,"2183":1,"2229":4,"2230":4,"2231":7,"2233":2,"2235":2,"2236":2,"2237":2,"2238":11,"2239":1,"2240":2,"2242":2,"2243":2,"2244":4,"2245":2,"2247":2,"2249":3,"2250":1,"2252":5,"2254":1,"2255":8,"2256":1,"2257":2,"2259":3,"2260":1,"2263":1,"2266":2,"2269":1,"2271":1,"2277":7,"2278":2,"2279":1,"2280":2,"2284":1,"2292":1,"2293":3,"2295":4,"2296":1,"2298":2,"2303":3,"2304":1,"2307":1,"2310":1,"2311":1,"2322":5,"2323":1,"2324":1,"2325":1,"2326":1,"2327":1,"2341":2,"2342":1,"2346":1,"2347":1,"2348":1,"2349":5,"2353":1,"2354":1,"2356":2,"2400":1,"2401":1,"2405":1,"2406":2,"2410":1,"2411":1,"2417":4,"2419":1,"2421":5,"2422":2,"2424":2,"2425":1,"2427":6,"2428":2,"2429":1,"2431":2,"2433":2,"2435":8,"2436":2,"2437":9,"2438":6,"2439":3,"2440":2,"2441":7,"2442":3,"2443":3,"2444":4,"2445":8,"2446":4,"2447":1,"2450":2,"2451":2,"2452":4,"2453":2,"2454":2,"2455":2,"2457":1,"2458":4,"2459":1,"2461":3,"2463":5,"2465":2,"2466":3,"2467":3,"2468":8,"2469":4,"2472":4,"2474":3,"2475":4,"2477":19,"2478":1,"2479":14,"2482":1,"2483":2,"2492":1,"2494":1,"2498":1,"2501":2,"2503":1,"2504":1,"2506":1,"2508":3,"2510":2,"2511":1,"2512":2,"2513":10,"2523":4,"2524":1,"2530":1,"2533":1,"2535":1,"2539":1,"2540":1,"2546":5,"2548":3,"2549":2,"2551":2,"2552":2,"2553":9,"2563":2,"2564":4,"2565":2,"2566":18,"2567":3,"2568":2,"2569":1,"2571":1,"2572":2,"2573":1,"2575":20,"2576":1,"2577":3,"2584":2,"2585":1,"2592":1,"2596":1,"2597":1,"2601":1,"2613":1,"2614":5,"2615":3,"2619":2,"2629":1,"2637":2,"2639":1,"2656":1,"2666":1,"2667":1,"2671":5,"2672":2,"2674":1,"2683":1,"2686":3,"2693":1,"2701":1,"2710":1,"2713":1,"2715":1,"2719":8,"2720":3,"2722":2,"2723":1,"2724":1,"2725":2,"2742":1,"2743":3,"2744":1,"2746":1,"2748":1,"2749":1,"2752":1}}],["fwlink",{"2":{"2513":1}}],["fknraiden",{"2":{"2270":1}}],["fkeys",{"2":{"1530":1}}],["fps",{"2":{"1807":5}}],["f♯",{"2":{"1793":6,"2371":6}}],["fb",{"2":{"1576":3,"1577":3}}],["fdbk",{"2":{"1572":1}}],["f9²",{"2":{"635":1}}],["f9¹",{"2":{"635":1}}],["f9",{"2":{"313":1,"530":2,"2355":2,"2387":2,"2408":1}}],["f8²",{"2":{"635":1}}],["f8¹",{"2":{"635":1}}],["f8",{"2":{"313":1,"530":2,"2355":2,"2387":2,"2408":1}}],["f24",{"2":{"2355":2,"2387":2}}],["f23",{"2":{"1360":2,"2355":2,"2387":2}}],["f21",{"2":{"1360":2,"2355":2,"2387":2}}],["f22",{"2":{"1360":11,"2355":2,"2387":2}}],["f20",{"2":{"1283":1,"2355":2,"2387":2}}],["f2",{"2":{"313":1,"530":2,"633":1,"635":2,"1793":1,"2355":2,"2371":1,"2387":2,"2401":1,"2408":1}}],["fm",{"2":{"279":1,"314":1,"315":1,"317":4,"370":1,"520":1,"521":1,"522":1,"557":1,"624":2,"1235":1,"1236":1,"1359":1,"2280":1,"2303":3,"2322":1,"2553":2,"2672":1}}],["fme",{"2":{"211":1}}],["fg",{"2":{"266":1,"433":5,"435":1,"2577":9}}],["fs5",{"2":{"1793":1,"2371":1}}],["fs4",{"2":{"1793":1,"2371":1}}],["fs3",{"2":{"1793":1,"2371":1}}],["fs2",{"2":{"1793":1,"2371":1}}],["fs1",{"2":{"1793":1,"2371":1}}],["fs",{"2":{"249":1,"1793":1,"2371":1}}],["fc980c",{"2":{"236":1}}],["fc660c",{"2":{"236":1}}],["fx",{"2":{"211":1}}],["fjlabs",{"2":{"211":6,"222":1}}],["ffff",{"2":{"2093":1}}],["ffffffff",{"2":{"2091":1}}],["ff",{"2":{"197":6,"347":3,"349":3,"359":1,"360":1,"2095":1,"2347":1}}],["ffkeebs",{"2":{"134":1}}],["f3²",{"2":{"635":1}}],["f3",{"2":{"191":1,"313":1,"530":2,"633":1,"635":3,"1793":1,"2353":1,"2355":2,"2371":1,"2387":2,"2401":1,"2408":1}}],["f303",{"2":{"49":1,"50":1,"199":1,"2245":1}}],["f5²",{"2":{"635":1}}],["f5f9b992",{"2":{"315":1}}],["f5",{"2":{"111":1,"313":1,"502":2,"511":1,"530":2,"633":2,"1459":1,"1793":1,"2131":1,"2355":2,"2371":1,"2387":2,"2408":1,"2530":1,"2558":1}}],["f4²",{"2":{"635":1}}],["f4xx",{"2":{"176":1}}],["f4x1",{"2":{"160":1,"176":1,"211":1,"2514":1}}],["f466",{"2":{"176":1}}],["f401",{"2":{"253":1,"2245":1,"2514":1}}],["f401xe",{"2":{"131":1,"134":1}}],["f405",{"2":{"130":1,"134":1}}],["f4",{"2":{"111":1,"131":1,"134":1,"191":1,"313":1,"502":2,"511":1,"530":2,"633":2,"635":2,"1793":1,"2131":1,"2355":2,"2371":1,"2387":2,"2408":1,"2530":1}}],["f411",{"2":{"93":1,"2245":2,"2514":2,"2673":1,"2709":1}}],["f072",{"2":{"1226":2}}],["f0",{"2":{"111":1,"502":2,"511":1,"633":2,"635":3,"2131":1,"2353":1,"2558":1}}],["f7²",{"2":{"635":1}}],["f7¹",{"2":{"635":1}}],["f7",{"2":{"111":1,"313":1,"502":2,"511":1,"530":2,"633":2,"1290":1,"2131":1,"2355":2,"2387":2,"2408":1,"2530":1,"2558":1}}],["f6²",{"2":{"635":1}}],["f6¹",{"2":{"635":1}}],["f6",{"2":{"111":1,"313":1,"502":2,"511":1,"530":2,"633":2,"635":1,"638":1,"2131":1,"2355":2,"2387":2,"2408":1,"2530":1,"2558":1}}],["f19",{"2":{"2355":2,"2387":2}}],["f17",{"2":{"2355":2,"2387":2}}],["f16",{"2":{"2355":2,"2387":2}}],["f15",{"2":{"2355":3,"2387":2}}],["f14",{"2":{"2355":2,"2387":2}}],["f14629ed1cd7c7ec9089604d64f29a99981558e8",{"2":{"529":2}}],["f1xx",{"2":{"2353":2}}],["f18",{"2":{"1677":1,"2355":2,"2387":2,"2738":1}}],["f12",{"2":{"313":1,"530":2,"2355":2,"2387":2,"2402":1,"2408":1}}],["f11",{"2":{"313":1,"530":2,"2355":2,"2387":2,"2408":1}}],["f10²",{"2":{"635":1}}],["f10¹",{"2":{"635":1}}],["f10",{"2":{"313":1,"530":2,"635":2,"2355":2,"2387":2,"2408":1}}],["f103",{"2":{"661":1,"2247":1}}],["f103c6",{"2":{"211":1}}],["f103xb",{"2":{"114":1}}],["f13",{"2":{"211":1,"1357":1,"2355":3,"2387":2}}],["f1",{"2":{"111":1,"120":1,"191":1,"313":1,"502":2,"511":1,"530":2,"633":2,"1354":1,"1509":1,"1793":1,"2125":1,"2131":1,"2231":1,"2238":1,"2353":1,"2355":2,"2371":1,"2387":2,"2401":1,"2402":1,"2408":1,"2558":1}}],["f",{"0":{"2387":1},"2":{"111":2,"134":1,"149":1,"191":1,"196":2,"211":1,"266":2,"313":1,"335":1,"374":6,"377":1,"378":1,"384":1,"405":5,"502":1,"514":3,"530":2,"702":1,"1355":1,"1451":3,"1503":1,"1563":1,"1577":1,"1680":2,"1793":19,"1923":2,"1932":1,"2091":1,"2093":1,"2095":1,"2097":2,"2148":1,"2153":1,"2353":2,"2355":3,"2371":19,"2386":3,"2407":3,"2575":8,"2712":3}}],["fantastic",{"2":{"2726":1}}],["fan",{"2":{"2266":1}}],["fancy",{"2":{"479":1,"1377":2}}],["faith",{"2":{"2566":1}}],["fairly",{"2":{"1364":1,"1450":1,"1452":1,"2268":1,"2328":1}}],["fails",{"2":{"1686":1,"2262":1}}],["failed",{"2":{"315":1,"1136":1,"1138":1,"2128":1,"2130":1,"2293":1,"2474":3}}],["failing",{"2":{"190":1,"191":1,"266":1,"556":1,"1287":1,"2293":1}}],["failures",{"2":{"134":1,"149":3,"191":1,"198":1,"199":3,"236":1,"556":1,"660":1,"2130":1}}],["failure",{"2":{"92":1,"149":1,"222":1,"236":3,"263":1,"277":1,"598":2}}],["fail",{"2":{"88":2,"104":2,"126":1,"127":2,"170":1,"206":1,"331":1,"601":1,"626":1,"1445":1,"1686":2,"2436":1,"2437":1}}],["faqs",{"2":{"551":1}}],["faq",{"0":{"1244":1,"1266":1,"1285":1,"2253":1},"1":{"1245":1,"1246":1,"1247":1,"1248":1,"1249":1,"1250":1,"1251":1,"1252":1,"1253":1,"1254":1,"1255":1,"1267":1,"1268":1,"1269":1,"1270":1,"1271":1,"1272":1,"1273":1,"1274":1,"1275":1,"1276":1,"1277":1,"1278":1,"1279":1,"1280":1,"1281":1,"1282":1,"1283":1,"1284":1,"1286":1,"1287":1,"1288":1,"1289":1,"1290":1,"1291":1,"1292":1,"1293":1,"1294":1,"1295":1,"1296":1,"1297":1,"1298":1,"2254":1},"2":{"515":1,"1259":1,"2335":1,"2409":1,"2455":1,"2742":1}}],["famous",{"2":{"428":1,"1949":1}}],["familiarity",{"2":{"2428":1,"2742":1}}],["familiarize",{"2":{"483":1}}],["familiar",{"2":{"470":1,"552":1,"555":1,"1238":1,"2255":1,"2256":2,"2418":1,"2430":1,"2473":1,"2475":1,"2686":1,"2725":1}}],["families",{"0":{"2548":1,"2549":1},"2":{"49":1,"130":1,"688":1,"692":1,"2546":1,"2548":1}}],["family",{"0":{"2550":1,"2551":1,"2552":1},"2":{"191":1,"277":1,"689":1,"2114":1,"2548":1,"2550":4,"2551":1,"2552":1,"2566":1,"2569":1}}],["facing",{"2":{"502":1,"1915":4,"2273":2,"2311":1,"2615":1}}],["face",{"2":{"277":2,"597":1,"2268":1,"2273":2}}],["factor",{"2":{"1406":3,"2615":1,"2673":1}}],["factory",{"2":{"176":3,"1294":1,"2240":1,"2343":1}}],["fact",{"2":{"45":1,"1242":1,"1264":1,"1278":1,"1332":1,"2031":1}}],["fading",{"2":{"249":1,"1728":1,"1949":2}}],["fader",{"2":{"1791":1}}],["fade",{"2":{"93":1,"1815":3,"1817":4,"2139":3}}],["fades",{"2":{"49":1,"1728":11,"1949":16}}],["fault",{"2":{"191":1}}],["fauxclicky",{"2":{"75":1,"188":1,"191":1,"2566":1}}],["fauxpark",{"2":{"38":1,"182":1}}],["fave",{"2":{"266":1}}],["fave84",{"2":{"199":1}}],["fave84h",{"2":{"191":1}}],["favorite",{"0":{"2423":1},"2":{"2437":1}}],["favorites",{"2":{"2355":2,"2393":2}}],["favor",{"0":{"8":1},"2":{"50":1,"94":1,"446":1}}],["favour",{"2":{"3":1,"15":1,"103":1,"169":1,"184":1,"199":1}}],["fake",{"2":{"191":1,"681":1}}],["fastest",{"2":{"641":1,"1805":1,"1822":1}}],["faster",{"2":{"341":1,"479":1,"1857":1,"1929":1,"2062":2,"2112":1,"2113":1,"2226":1,"2411":1}}],["fast",{"2":{"175":1,"457":1,"582":1,"1125":1,"1128":1,"1326":1,"1521":1,"1573":1,"1684":2,"1803":1,"1804":1,"1880":1,"1932":1,"2169":2,"2355":1,"2393":2,"2398":1,"2437":1,"2539":1,"2566":1,"2584":1,"2735":1,"2736":1}}],["fashion",{"2":{"169":1,"2757":1}}],["farther",{"2":{"2423":1}}],["farsi",{"2":{"277":1,"2712":2}}],["far",{"2":{"99":1,"188":1,"263":3,"273":1,"341":1,"569":1,"1684":1,"1865":1,"2108":1,"2144":1,"2305":1,"2529":1}}],["falls",{"2":{"1554":1}}],["fall",{"2":{"430":1,"471":1,"1396":1,"1859":1,"2403":1,"2454":1}}],["fallback",{"0":{"209":1},"2":{"211":2,"1416":1}}],["falling",{"2":{"50":1,"1181":2,"1907":1,"2474":1}}],["falsely",{"2":{"1441":2,"1677":2,"2738":2}}],["false",{"0":{"476":1,"1441":1},"2":{"31":2,"90":2,"105":4,"111":5,"125":3,"185":2,"194":4,"195":2,"199":1,"203":1,"249":1,"453":2,"476":2,"534":6,"565":1,"566":1,"571":1,"572":1,"588":2,"592":2,"593":1,"594":2,"610":3,"641":1,"726":1,"1182":1,"1302":1,"1303":4,"1332":3,"1344":3,"1360":1,"1375":2,"1404":2,"1416":1,"1423":1,"1430":1,"1441":1,"1446":10,"1448":4,"1457":1,"1506":2,"1518":5,"1519":1,"1523":2,"1526":1,"1530":1,"1549":2,"1555":1,"1560":4,"1594":2,"1638":6,"1668":1,"1670":2,"1686":1,"1696":1,"1716":1,"1733":2,"1813":9,"1814":2,"1816":3,"1822":3,"1826":1,"1830":2,"1856":1,"1860":4,"1863":1,"1875":1,"1879":1,"1880":2,"1882":2,"1883":1,"1892":1,"1894":4,"1895":1,"1897":2,"1898":1,"1899":1,"1937":2,"1939":1,"1940":1,"1941":1,"1943":3,"1957":2,"1958":3,"1959":2,"2078":1,"2137":8,"2138":1,"2143":1,"2152":1,"2183":1,"2228":2,"2413":2,"2414":3,"2415":1,"2437":1,"2513":1,"2524":2,"2574":3,"2577":2,"2604":2,"2674":11,"2676":2,"2677":3,"2679":1,"2680":4,"2682":1,"2687":2,"2688":4,"2689":3,"2690":1,"2692":2,"2694":6,"2695":4,"2696":1,"2697":12,"2698":1,"2699":4,"2700":1,"2707":5,"2735":1,"2736":1,"2738":1,"2749":1}}],["flsh",{"2":{"2165":1,"2167":8}}],["fl",{"2":{"1269":1,"2405":2,"2407":3,"2408":2}}],["flick",{"2":{"1872":1}}],["flicker",{"2":{"1463":1}}],["flickering",{"2":{"1228":1}}],["flight",{"2":{"598":1,"2486":1}}],["flipping",{"2":{"1870":1}}],["flipped",{"2":{"160":1,"1557":1,"1816":1,"2044":1,"2124":1,"2140":1,"2240":1}}],["flips",{"2":{"13":1,"31":1,"34":1,"1816":1,"2140":1}}],["flip",{"0":{"13":1},"2":{"13":1,"211":1,"1557":1,"2279":1,"2728":1}}],["flypage",{"2":{"1242":1}}],["flypage=shop",{"2":{"1242":1}}],["fly",{"0":{"2149":1},"2":{"479":1,"515":1,"1271":1,"1393":1,"1401":1,"1512":1,"1553":1,"1918":1,"2149":1,"2628":1,"2728":3}}],["flygone60",{"2":{"241":2}}],["float",{"0":{"1545":2},"1":{"1546":2},"2":{"215":2,"1448":1,"1537":2,"1546":2,"1686":3,"1718":2,"1880":4}}],["floating",{"2":{"215":2,"1225":1}}],["flowing",{"2":{"1949":1}}],["flows",{"2":{"1265":1}}],["flower",{"2":{"236":1,"1949":3,"2708":1}}],["flow",{"2":{"149":1,"322":1,"466":1,"560":1,"1195":1,"1949":4,"2150":1,"2272":1,"2273":1,"2708":1}}],["flux",{"2":{"2272":2}}],["flushed",{"2":{"1776":1,"1778":1,"1780":1,"1783":1,"2021":1,"2023":1,"2025":1,"2028":1}}],["flushes",{"2":{"114":1}}],["flush",{"0":{"230":1,"651":1,"1538":1,"1645":1,"1848":1},"2":{"211":1,"236":2,"647":1,"651":1,"679":1,"753":1,"754":1,"780":1,"782":1,"812":1,"814":1,"844":1,"846":1,"879":1,"881":1,"913":1,"915":1,"947":1,"949":1,"981":1,"983":1,"1015":1,"1017":1,"1049":1,"1051":1,"1083":1,"1085":1,"1117":1,"1119":1,"1170":1,"1172":1,"1534":1,"1539":1,"1540":1,"1541":1,"1542":1,"1543":1,"1544":1,"1545":1,"1646":1,"1648":1,"1730":1,"1823":1,"1841":1,"1843":1,"1954":1,"2048":1,"2574":1,"2576":2,"2577":10,"2688":1,"2695":1}}],["flushing",{"2":{"191":1,"593":1,"594":1,"2574":1}}],["flurry",{"2":{"163":1}}],["flavours",{"2":{"2496":1}}],["flat",{"2":{"1451":1}}],["flatbread60",{"2":{"86":2}}],["flake8",{"2":{"442":1,"447":2}}],["flask",{"2":{"306":1}}],["flasher",{"2":{"2238":1,"2328":1,"2329":1,"2333":1,"2347":2,"2639":1}}],["flashers",{"2":{"371":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":1,"2247":1,"2249":1}}],["flashes",{"2":{"2126":1,"2232":2,"2234":3,"2239":1,"2241":2,"2246":1,"2248":1}}],["flashed",{"0":{"1243":1},"2":{"510":1,"519":1,"623":1,"1491":1,"2042":1,"2126":1,"2150":1,"2229":1,"2234":1,"2249":1,"2277":1,"2279":1,"2327":1,"2335":1,"2347":1,"2718":1}}],["flashable",{"2":{"316":1}}],["flashing",{"0":{"543":1,"1677":1,"2229":1,"2278":1,"2327":1,"2347":1,"2350":1,"2353":1,"2449":1,"2451":1},"1":{"2230":1,"2231":1,"2232":1,"2233":1,"2234":1,"2235":1,"2236":1,"2237":1,"2238":1,"2239":1,"2240":1,"2241":1,"2242":1,"2243":1,"2244":1,"2245":1,"2246":1,"2247":1,"2248":1,"2249":1,"2328":1,"2329":1,"2330":1,"2331":1,"2332":1,"2333":1,"2334":1,"2335":1,"2336":1,"2337":1,"2338":1,"2339":1,"2340":1,"2341":1,"2342":1,"2343":1,"2344":1,"2345":1,"2346":1,"2347":1,"2348":2,"2349":1,"2350":1,"2351":2,"2352":2,"2353":2,"2450":1,"2451":1,"2452":2,"2453":2,"2454":1,"2455":1},"2":{"49":1,"134":2,"191":1,"222":2,"240":3,"371":2,"543":1,"624":1,"629":1,"1239":1,"1241":1,"1243":1,"1259":1,"1385":1,"1491":1,"1573":1,"2126":1,"2229":2,"2230":1,"2231":1,"2233":1,"2234":1,"2235":2,"2236":1,"2237":1,"2238":3,"2240":1,"2242":1,"2243":1,"2244":2,"2245":2,"2247":2,"2249":2,"2252":1,"2262":1,"2279":1,"2328":1,"2329":1,"2331":1,"2333":1,"2339":1,"2341":2,"2342":1,"2349":1,"2356":1,"2418":1,"2425":1,"2426":1,"2450":2,"2451":1,"2454":1,"2469":1,"2491":1,"2517":1,"2522":1,"2572":1,"2655":1,"2664":1,"2672":1}}],["flash",{"0":{"164":1,"371":1,"689":1,"690":1,"693":1,"694":1,"1259":1,"1270":1,"2254":1,"2426":1,"2453":1,"2454":1},"1":{"694":1},"2":{"49":3,"107":1,"113":1,"114":5,"124":1,"134":1,"149":1,"160":1,"164":3,"174":5,"176":4,"199":2,"222":1,"236":1,"240":1,"277":1,"352":1,"371":6,"376":1,"486":1,"488":1,"509":2,"522":1,"592":1,"624":1,"625":1,"626":1,"659":1,"660":1,"681":3,"687":1,"688":6,"689":12,"690":9,"691":6,"692":5,"693":3,"694":15,"1238":2,"1243":1,"1270":2,"1287":2,"1312":2,"1385":8,"1528":1,"1556":1,"1863":1,"2037":1,"2042":1,"2126":7,"2127":2,"2167":2,"2229":3,"2230":3,"2233":3,"2234":1,"2235":2,"2236":2,"2237":1,"2238":1,"2240":1,"2241":4,"2242":1,"2243":1,"2244":2,"2245":2,"2247":2,"2249":2,"2252":3,"2255":1,"2262":3,"2263":1,"2278":1,"2327":4,"2335":1,"2347":8,"2348":1,"2349":1,"2353":18,"2356":1,"2439":1,"2448":1,"2449":1,"2450":1,"2451":3,"2453":4,"2454":8,"2513":2,"2518":1,"2528":1,"2530":1,"2544":10,"2550":1,"2566":3,"2572":1,"2574":1,"2577":2,"2578":1,"2683":4,"2693":1,"2701":1,"2718":1,"2723":1,"2728":1}}],["flagged",{"0":{"352":1},"1":{"353":1,"354":1,"355":1,"356":1},"2":{"199":1,"201":1,"282":3,"341":1,"352":1,"356":1,"1958":1,"2128":1}}],["flag",{"2":{"176":1,"191":1,"249":1,"370":1,"403":1,"405":1,"430":1,"505":3,"628":1,"689":1,"1313":1,"1518":1,"1621":1,"1622":1,"1624":1,"1670":1,"1725":2,"1726":5,"1730":1,"1886":1,"1946":2,"1947":6,"1954":1,"1958":1,"1959":1,"2044":1,"2071":1,"2126":1,"2566":1,"2587":1,"2592":1}}],["flags",{"0":{"1726":1,"1947":1},"2":{"176":1,"191":1,"209":1,"277":1,"448":1,"1319":2,"1726":8,"1730":2,"1821":1,"1822":1,"1947":8,"1954":2,"1958":1,"1959":2,"2143":1,"2416":1,"2530":1,"2587":3,"2596":5,"2688":3,"2695":3}}],["flesh",{"2":{"2723":1}}],["flexible",{"0":{"1666":1},"2":{"479":1,"1129":1,"1134":1,"2534":2,"2543":1}}],["flexibility",{"2":{"6":1,"153":1,"496":1,"630":1,"1716":1,"2107":1,"2181":1,"2728":1}}],["flehrad",{"0":{"43":2},"2":{"43":6,"266":1}}],["frr",{"2":{"2153":1}}],["friction",{"2":{"1807":2,"1872":1}}],["friendly",{"0":{"1666":1},"2":{"377":1,"430":1,"2145":1,"2323":1}}],["friend",{"0":{"1492":1},"2":{"336":1,"1491":3,"1492":4}}],["friends",{"2":{"226":1,"236":1,"2326":1}}],["frustrating",{"2":{"2169":1}}],["frustration",{"2":{"173":1}}],["fruit",{"2":{"1287":1}}],["frood",{"2":{"2545":1}}],["front",{"2":{"1384":1,"2302":1,"2503":1}}],["frontend",{"0":{"520":1},"2":{"520":1,"681":1}}],["fronzlebop",{"2":{"556":2}}],["frob",{"2":{"482":1}}],["from=",{"2":{"176":1}}],["from",{"0":{"5":1,"24":1,"166":1,"441":1,"627":1,"1292":1,"1773":1,"1922":1,"2018":1,"2454":1},"2":{"3":1,"6":2,"12":1,"15":1,"31":2,"34":1,"49":3,"50":1,"62":1,"63":1,"69":1,"70":1,"73":2,"74":1,"75":2,"76":1,"88":3,"90":1,"92":1,"94":1,"104":3,"113":2,"114":8,"116":1,"119":1,"127":3,"128":1,"132":2,"133":1,"134":10,"149":5,"163":1,"170":2,"172":1,"173":2,"174":1,"176":8,"191":9,"199":13,"201":1,"206":1,"211":8,"222":7,"224":1,"228":3,"230":1,"236":4,"240":1,"249":9,"263":1,"266":19,"272":1,"273":1,"275":1,"276":1,"277":5,"304":1,"305":1,"308":1,"323":1,"324":1,"327":1,"328":1,"329":1,"331":1,"345":1,"346":1,"347":1,"351":1,"370":2,"375":2,"379":1,"380":1,"388":2,"394":2,"401":1,"405":1,"411":1,"414":1,"430":3,"437":2,"441":2,"452":1,"453":1,"454":1,"457":3,"458":4,"466":1,"496":1,"502":3,"504":1,"511":3,"519":1,"522":1,"526":1,"529":2,"533":1,"541":1,"556":1,"558":1,"560":2,"569":1,"588":1,"597":1,"606":1,"610":2,"613":1,"616":1,"617":1,"626":1,"628":2,"638":2,"639":4,"644":1,"653":1,"660":1,"662":2,"667":1,"672":1,"688":1,"689":2,"709":1,"711":1,"712":1,"715":1,"718":1,"720":1,"721":2,"723":1,"724":2,"726":1,"727":1,"763":1,"793":1,"822":1,"827":1,"855":1,"860":1,"889":1,"894":1,"923":1,"928":1,"957":1,"962":1,"991":1,"996":1,"1025":1,"1030":1,"1059":1,"1064":1,"1093":1,"1098":1,"1151":1,"1186":1,"1187":1,"1189":1,"1191":1,"1205":1,"1207":1,"1221":1,"1222":1,"1223":1,"1227":1,"1235":1,"1236":1,"1241":1,"1247":1,"1248":1,"1250":1,"1265":3,"1270":2,"1279":1,"1281":1,"1293":1,"1294":1,"1295":1,"1300":1,"1311":1,"1332":1,"1333":1,"1335":1,"1338":3,"1340":1,"1341":1,"1377":1,"1379":1,"1394":1,"1397":1,"1400":1,"1406":1,"1410":1,"1416":1,"1438":1,"1441":1,"1446":2,"1454":1,"1459":1,"1471":1,"1480":1,"1482":1,"1500":1,"1511":1,"1516":1,"1518":1,"1523":1,"1524":4,"1525":7,"1546":2,"1553":1,"1554":1,"1577":1,"1578":1,"1604":1,"1609":1,"1612":1,"1613":1,"1614":1,"1619":1,"1627":1,"1629":1,"1634":1,"1637":2,"1644":1,"1647":1,"1649":1,"1655":1,"1673":2,"1674":1,"1675":2,"1676":1,"1684":1,"1719":2,"1720":1,"1725":1,"1728":4,"1729":1,"1743":1,"1744":1,"1745":1,"1762":1,"1768":1,"1770":1,"1772":1,"1773":1,"1791":2,"1804":2,"1805":1,"1807":1,"1815":2,"1816":1,"1817":2,"1821":1,"1831":1,"1838":1,"1840":1,"1842":1,"1844":1,"1846":1,"1853":1,"1857":1,"1863":1,"1868":1,"1870":4,"1872":2,"1874":1,"1876":5,"1885":1,"1889":1,"1898":1,"1902":1,"1910":1,"1923":1,"1925":1,"1929":1,"1933":1,"1943":1,"1946":1,"1949":4,"1950":1,"1952":1,"1970":1,"1971":1,"1972":1,"1989":1,"1995":1,"2001":1,"2007":1,"2009":1,"2011":1,"2013":3,"2015":3,"2018":1,"2035":1,"2037":1,"2038":1,"2044":2,"2052":2,"2059":1,"2061":1,"2067":1,"2092":1,"2094":1,"2096":1,"2098":1,"2099":1,"2106":1,"2107":1,"2111":1,"2117":1,"2118":1,"2128":2,"2130":2,"2131":1,"2133":2,"2139":2,"2140":1,"2141":1,"2146":1,"2150":1,"2155":1,"2162":1,"2167":2,"2171":1,"2172":1,"2176":1,"2183":2,"2219":1,"2231":1,"2238":2,"2241":1,"2244":1,"2245":1,"2247":1,"2249":1,"2252":1,"2255":1,"2261":1,"2262":2,"2263":1,"2268":5,"2272":1,"2273":3,"2274":1,"2275":1,"2276":1,"2277":2,"2279":1,"2292":1,"2295":1,"2303":1,"2309":1,"2311":5,"2312":1,"2315":1,"2335":1,"2344":1,"2347":1,"2348":2,"2351":1,"2353":2,"2403":1,"2406":1,"2408":2,"2421":1,"2422":1,"2423":1,"2427":1,"2436":1,"2437":1,"2439":1,"2451":2,"2453":2,"2460":1,"2466":2,"2468":1,"2474":3,"2477":1,"2478":1,"2479":2,"2480":1,"2483":1,"2486":1,"2496":1,"2497":1,"2502":2,"2506":1,"2508":1,"2510":1,"2511":1,"2513":1,"2517":1,"2522":1,"2529":1,"2533":1,"2540":1,"2541":1,"2544":1,"2545":1,"2558":1,"2559":1,"2564":2,"2566":5,"2568":2,"2573":2,"2576":11,"2577":5,"2605":2,"2610":1,"2614":4,"2615":4,"2617":1,"2639":1,"2652":1,"2665":1,"2675":1,"2677":2,"2686":1,"2687":1,"2688":3,"2694":2,"2695":3,"2697":2,"2699":1,"2702":2,"2711":1,"2719":2,"2721":1,"2724":1,"2727":3,"2728":2,"2742":1,"2743":1,"2746":1,"2747":2,"2748":3,"2753":2,"2756":1}}],["fr",{"2":{"211":1,"1355":2,"2153":3,"2712":4}}],["frl",{"2":{"211":2}}],["français",{"2":{"2624":1}}],["fram",{"2":{"684":1,"685":1}}],["frames",{"2":{"1807":1,"2575":1,"2592":2,"2595":1}}],["frame",{"0":{"2595":1,"2596":1,"2597":1,"2598":1,"2599":1},"2":{"1215":1,"1743":1,"1745":1,"1776":1,"1778":1,"1780":1,"1783":1,"1807":2,"1822":1,"1970":1,"1972":1,"2021":1,"2023":1,"2025":1,"2028":1,"2577":3,"2585":1,"2587":3,"2590":1,"2591":1,"2592":6,"2594":2,"2595":8,"2596":28,"2597":2,"2598":1,"2599":2}}],["frameworking",{"2":{"160":1}}],["framework",{"2":{"134":1,"303":1,"430":1,"2168":1,"2263":1,"2667":1,"2751":1}}],["framebuffer",{"2":{"93":1,"114":1,"236":1,"1949":1,"2576":3}}],["fragments",{"2":{"262":1}}],["fractal",{"2":{"134":2,"176":1,"222":1,"277":1,"1949":4,"2708":1}}],["fraanrosi",{"2":{"114":1}}],["fr4boards",{"2":{"67":1,"211":1}}],["fr4",{"2":{"67":1,"72":1}}],["freq",{"2":{"1406":5,"1577":1}}],["frequencies",{"2":{"1406":1}}],["frequency",{"0":{"820":1,"853":1,"887":1,"921":1,"955":1,"989":1,"1091":1,"2584":1},"2":{"11":1,"134":1,"160":1,"214":1,"222":2,"236":2,"511":1,"685":1,"694":1,"702":1,"818":3,"820":12,"850":3,"853":9,"885":3,"887":9,"919":3,"921":9,"953":3,"955":8,"987":3,"989":8,"1089":3,"1091":11,"1253":7,"1406":7,"1408":3,"1577":3,"1817":1,"1872":1,"2131":1,"2357":3,"2697":1,"2699":1}}],["frequent",{"2":{"1385":1}}],["frequently",{"0":{"1237":1,"1256":1},"1":{"1238":1,"1239":1,"1240":1,"1241":1,"1242":1,"1243":1,"1257":1,"1258":1,"1259":1,"1260":1,"1261":1,"1262":1,"1263":1,"1264":1,"1265":1},"2":{"308":1,"1730":1,"1954":1,"2106":1,"2169":2,"2293":1,"2564":1,"2688":1,"2695":1,"2718":1,"2728":1}}],["fresh",{"2":{"305":1,"616":1}}],["french",{"2":{"249":1,"1355":3,"2624":1,"2712":16}}],["freyr",{"2":{"143":2}}],["freeman",{"2":{"2750":1}}],["freebsd",{"2":{"2467":1}}],["freely",{"2":{"1265":1}}],["freezing",{"2":{"660":1}}],["freezes",{"2":{"659":1,"660":1}}],["freeze",{"2":{"659":1,"660":1}}],["freeform",{"2":{"606":1}}],["frees",{"2":{"516":1}}],["free",{"2":{"110":1,"123":1,"124":1,"322":1,"401":1,"483":1,"1380":2,"1398":1,"1821":1,"1953":1,"2058":1,"2183":1,"2425":1,"2469":1,"2568":1,"2569":1,"2570":2,"2672":2,"2750":1}}],["freed",{"2":{"45":1,"166":1,"188":1,"191":1}}],["female",{"2":{"2275":1}}],["fe1",{"2":{"1907":1}}],["feather",{"2":{"487":1,"629":1,"1492":2,"2344":1}}],["featuring",{"2":{"236":1}}],["featured",{"2":{"2503":1,"2565":1,"2702":1}}],["features",{"0":{"97":1,"117":1,"136":1,"151":1,"162":1,"178":1,"224":1,"238":1,"251":1,"268":1,"479":1,"503":1,"504":1,"621":1,"1384":1,"1910":1,"2528":1,"2583":1,"2753":1},"1":{"98":1,"99":1,"100":1,"118":1,"119":1,"120":1,"137":1,"138":1,"152":1,"153":1,"154":1,"163":1,"164":1,"179":1},"2":{"3":1,"7":1,"15":1,"25":1,"49":1,"94":1,"111":13,"133":4,"134":5,"173":1,"175":1,"176":2,"191":1,"213":1,"236":2,"249":2,"266":12,"268":1,"336":1,"352":1,"374":3,"430":1,"479":2,"486":2,"503":1,"512":1,"515":1,"516":3,"533":1,"552":1,"556":1,"559":1,"574":1,"578":1,"581":1,"602":1,"606":1,"621":1,"1265":2,"1271":1,"1304":1,"1316":1,"1317":1,"1331":1,"1334":1,"1377":3,"1378":1,"1384":1,"1398":1,"1454":1,"1497":1,"1518":1,"1791":1,"1863":2,"1948":1,"2034":1,"2129":1,"2149":1,"2160":1,"2230":1,"2231":1,"2238":1,"2260":2,"2280":1,"2300":6,"2304":2,"2305":1,"2324":2,"2402":1,"2424":2,"2510":1,"2534":1,"2553":1,"2560":1,"2566":4,"2567":1,"2571":1,"2583":1,"2601":1,"2637":1,"2645":1,"2656":1,"2674":2,"2702":2,"2703":1,"2718":1,"2719":1,"2720":5,"2721":1,"2724":2,"2725":2,"2727":1,"2752":1,"2754":1}}],["feature",{"0":{"28":1,"515":1,"2717":1},"1":{"2718":1,"2719":1,"2720":1,"2721":1},"2":{"3":1,"15":1,"28":1,"32":1,"46":1,"49":3,"63":1,"70":13,"74":1,"75":1,"87":1,"93":1,"99":3,"103":1,"114":3,"118":1,"126":1,"133":2,"134":5,"149":1,"152":1,"160":3,"172":1,"176":4,"179":2,"186":1,"189":1,"190":2,"191":7,"195":1,"196":1,"199":2,"211":1,"222":2,"224":1,"228":2,"236":1,"248":1,"249":2,"266":1,"352":1,"354":1,"404":1,"453":1,"455":1,"482":1,"495":1,"503":1,"504":1,"515":2,"554":3,"556":1,"559":1,"560":7,"563":1,"609":1,"613":1,"614":1,"616":2,"621":8,"643":1,"654":1,"665":1,"700":1,"730":1,"756":1,"785":1,"788":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1121":1,"1124":1,"1144":1,"1175":1,"1196":1,"1213":1,"1245":1,"1276":3,"1277":1,"1278":1,"1282":1,"1316":1,"1317":1,"1318":1,"1319":1,"1321":1,"1328":1,"1331":1,"1376":1,"1377":1,"1378":1,"1384":2,"1386":1,"1393":1,"1397":2,"1398":2,"1402":1,"1405":1,"1406":1,"1408":2,"1416":1,"1434":1,"1437":1,"1438":1,"1443":3,"1454":1,"1459":1,"1467":1,"1495":1,"1498":2,"1501":1,"1508":2,"1512":4,"1526":4,"1528":1,"1531":2,"1556":2,"1563":1,"1634":1,"1657":1,"1666":1,"1675":1,"1723":1,"1731":1,"1798":1,"1803":1,"1808":1,"1812":1,"1820":1,"1821":2,"1824":1,"1853":1,"1872":2,"1885":1,"1887":3,"1888":1,"1889":1,"1893":1,"1897":3,"1899":2,"1912":2,"1918":2,"1944":1,"1948":2,"1954":1,"1955":1,"2034":2,"2035":1,"2041":1,"2062":1,"2063":1,"2065":1,"2072":1,"2074":1,"2105":1,"2108":1,"2121":1,"2129":8,"2136":1,"2137":1,"2142":1,"2160":2,"2161":1,"2169":1,"2177":1,"2180":1,"2225":1,"2226":1,"2258":1,"2263":2,"2280":1,"2287":1,"2305":2,"2347":1,"2357":2,"2358":1,"2359":3,"2396":1,"2402":1,"2440":1,"2441":1,"2539":1,"2543":1,"2555":1,"2564":1,"2566":4,"2601":1,"2628":1,"2645":1,"2649":1,"2652":1,"2663":1,"2676":1,"2677":1,"2678":1,"2679":2,"2680":2,"2681":1,"2682":2,"2684":1,"2685":1,"2687":1,"2688":1,"2690":2,"2692":2,"2694":1,"2695":1,"2696":2,"2697":2,"2698":2,"2703":1,"2704":2,"2706":1,"2718":1,"2719":3,"2727":1,"2728":3,"2735":1,"2736":1,"2737":1,"2738":1,"2753":2,"2754":1,"2757":2}}],["feat",{"2":{"222":2,"236":2}}],["fedora",{"2":{"191":1,"2431":1,"2464":1}}],["feker",{"2":{"176":1}}],["felix",{"2":{"143":2}}],["few",{"0":{"1656":1},"2":{"131":1,"189":1,"213":1,"222":1,"224":1,"238":1,"304":1,"306":1,"353":1,"481":1,"509":1,"556":1,"621":1,"641":1,"659":1,"688":1,"689":1,"1250":1,"1265":1,"1310":1,"1397":1,"1436":2,"1503":1,"1526":1,"1630":1,"1655":1,"1888":1,"2133":1,"2169":1,"2229":1,"2303":1,"2417":1,"2424":1,"2435":1,"2457":2,"2472":1,"2664":1,"2712":1,"2728":2,"2757":1}}],["fewer",{"2":{"24":1,"45":1,"123":1,"2144":1,"2270":1,"2648":1}}],["feed",{"2":{"2615":1}}],["feeding",{"2":{"2274":1}}],["feedback",{"0":{"1569":1,"1570":1,"1575":1,"2180":1},"1":{"1570":1,"1571":1,"1572":1,"1573":1,"1574":1,"1575":1,"1576":2,"1577":2,"1578":1,"1579":1,"1580":1,"1581":1,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"2182":1},"2":{"114":1,"160":1,"188":1,"191":1,"199":1,"228":1,"556":1,"1398":1,"1556":1,"1570":4,"1572":6,"1575":1,"1579":1,"1580":1,"1582":4,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"2129":1,"2697":1}}],["feeling",{"2":{"1518":1}}],["feels",{"2":{"119":1}}],["feel",{"2":{"119":1,"1340":1,"1398":1,"1857":1,"1953":1,"1954":1,"2058":1,"2183":1,"2424":1,"2727":1,"2728":1}}],["ferris",{"2":{"114":1,"249":1}}],["fetch",{"2":{"51":1,"304":1,"349":1,"358":1,"359":1,"360":2,"1815":2,"2139":2,"2474":2,"2477":4,"2479":5}}],["february",{"0":{"66":1,"135":1,"192":1,"237":1},"1":{"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1}}],["feb",{"0":{"9":1,"1243":1},"1":{"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1},"2":{"338":1,"351":5}}],["fumes",{"2":{"2274":1}}],["furthest",{"2":{"2268":1}}],["further",{"0":{"1939":1},"2":{"131":1,"134":1,"138":1,"191":1,"199":1,"203":1,"222":1,"352":1,"374":1,"572":1,"641":1,"702":1,"1302":1,"1326":1,"1329":3,"1332":1,"1344":1,"1560":2,"1662":1,"1876":1,"1899":1,"1939":1,"2263":2,"2271":1,"2311":1,"2413":1,"2477":1,"2491":1,"2749":1,"2757":1}}],["fuzz",{"2":{"1578":1}}],["fulfill",{"2":{"1300":1}}],["fullfilling",{"2":{"2280":1}}],["fullremap",{"2":{"1142":2}}],["fullsize",{"2":{"191":1,"211":1,"236":1,"2268":2}}],["full",{"0":{"103":1,"104":1,"114":1,"126":1,"127":1,"134":1,"149":1,"160":1,"176":1,"191":1,"199":1,"211":1,"222":1,"236":1,"249":1,"266":1,"277":1,"566":1,"1128":1,"2756":1},"1":{"104":1,"127":1,"1129":1,"1130":1},"2":{"87":3,"88":2,"93":1,"103":2,"104":2,"107":2,"114":2,"124":1,"126":2,"127":2,"131":1,"134":1,"149":1,"172":1,"173":1,"176":1,"182":1,"189":1,"202":1,"211":1,"234":1,"236":1,"241":2,"245":1,"316":1,"334":1,"372":1,"417":1,"454":1,"566":1,"606":1,"627":1,"1121":1,"1122":1,"1125":1,"1128":2,"1129":1,"1130":3,"1134":1,"1136":1,"1300":1,"1398":1,"1447":1,"1457":1,"1498":1,"1509":1,"1521":1,"1605":1,"1658":1,"1672":1,"1696":1,"1728":4,"1807":1,"1948":2,"1949":15,"2047":1,"2072":1,"2153":1,"2262":1,"2280":1,"2318":1,"2421":1,"2424":1,"2469":1,"2503":1,"2513":1,"2543":2,"2566":2,"2575":3,"2723":1,"2756":1}}],["fully",{"0":{"263":1},"2":{"23":1,"266":1,"1134":1,"1217":1,"1303":1,"1828":1,"1950":1,"2169":1,"2279":1,"2543":1,"2702":1}}],["fuses",{"0":{"2348":1},"2":{"2342":1,"2347":1,"2348":2}}],["fuse",{"2":{"1294":1,"2341":1,"2348":5}}],["funky",{"2":{"1386":1}}],["fundamentals",{"2":{"2267":1}}],["fundamentally",{"2":{"1326":1}}],["fundamental",{"2":{"567":1}}],["func",{"2":{"94":1,"474":2}}],["function96",{"2":{"86":4}}],["functionally",{"2":{"1551":1}}],["functionallity",{"2":{"1332":1}}],["functionalities",{"2":{"1522":1}}],["functionality",{"0":{"46":1,"209":1,"1407":1},"2":{"3":1,"7":1,"15":1,"24":1,"30":1,"33":1,"87":1,"93":2,"98":1,"99":2,"114":2,"123":1,"124":1,"126":1,"128":1,"133":1,"134":1,"152":1,"154":1,"164":1,"191":2,"206":1,"209":2,"266":2,"282":3,"318":1,"341":1,"350":4,"505":1,"515":1,"516":2,"530":1,"567":1,"571":1,"586":1,"596":1,"597":2,"661":1,"702":1,"1332":1,"1335":1,"1359":2,"1364":2,"1383":2,"1384":1,"1398":1,"1423":1,"1447":1,"1498":1,"1511":1,"1527":1,"1528":1,"1548":1,"1556":1,"1559":1,"1666":1,"1678":1,"1680":1,"1824":1,"1853":1,"1872":1,"1881":1,"1948":1,"2034":1,"2035":1,"2105":2,"2130":1,"2162":1,"2171":2,"2172":1,"2277":1,"2304":1,"2305":2,"2306":1,"2348":1,"2354":1,"2396":1,"2441":1,"2519":1,"2525":1,"2526":1,"2566":3,"2567":2,"2601":1,"2603":1,"2610":1,"2615":1,"2702":1,"2705":1,"2718":1,"2719":2,"2743":1,"2744":1,"2749":1}}],["functional",{"2":{"28":1,"222":1,"276":1,"343":1,"344":1,"345":1,"350":2,"627":1,"692":1,"1376":1,"2466":1}}],["function",{"0":{"140":1,"465":1,"481":1,"573":1,"577":1,"579":1,"580":1,"583":1,"586":1,"591":1,"595":1,"1333":1,"1345":1,"1716":1,"1892":1,"2169":1,"2408":1,"2413":1,"2414":1},"1":{"1717":1,"1718":1},"2":{"22":2,"27":1,"34":1,"46":3,"49":2,"74":1,"90":3,"92":1,"93":2,"114":1,"125":1,"132":1,"133":1,"134":3,"149":4,"158":1,"160":1,"170":1,"176":5,"191":1,"194":1,"195":2,"199":2,"203":1,"222":2,"229":1,"230":2,"236":1,"249":2,"266":1,"273":1,"278":1,"336":1,"374":2,"430":3,"433":1,"457":1,"460":3,"462":2,"463":1,"464":2,"465":2,"473":1,"481":5,"505":2,"568":1,"571":1,"574":2,"580":2,"586":2,"587":2,"588":1,"592":4,"597":2,"598":1,"613":2,"614":2,"636":2,"638":1,"639":3,"646":1,"647":1,"661":4,"663":1,"673":1,"675":1,"698":1,"703":2,"707":4,"726":1,"738":1,"741":1,"745":1,"749":1,"751":1,"764":1,"768":1,"772":1,"776":1,"778":1,"794":1,"800":1,"804":1,"808":1,"810":1,"828":1,"832":1,"836":1,"840":1,"842":1,"861":1,"867":1,"871":1,"875":1,"877":1,"895":1,"901":1,"905":1,"909":1,"911":1,"929":1,"935":1,"939":1,"943":1,"945":1,"963":1,"969":1,"973":1,"977":1,"979":1,"997":1,"1003":1,"1007":1,"1011":1,"1013":1,"1031":1,"1037":1,"1041":1,"1045":1,"1047":1,"1065":1,"1071":1,"1075":1,"1079":1,"1081":1,"1099":1,"1105":1,"1109":1,"1113":1,"1115":1,"1123":1,"1126":1,"1127":1,"1129":1,"1130":1,"1140":1,"1141":1,"1142":3,"1152":1,"1158":1,"1162":1,"1166":1,"1168":1,"1177":3,"1179":1,"1198":4,"1200":1,"1205":1,"1210":1,"1226":2,"1230":1,"1255":2,"1331":1,"1332":4,"1333":1,"1334":1,"1335":2,"1336":1,"1341":3,"1351":1,"1359":2,"1360":2,"1364":1,"1367":1,"1368":1,"1383":3,"1384":1,"1396":1,"1416":1,"1423":1,"1431":1,"1434":2,"1445":4,"1446":1,"1448":1,"1449":1,"1451":1,"1469":1,"1497":2,"1505":1,"1511":1,"1518":1,"1519":1,"1523":2,"1525":3,"1526":1,"1527":3,"1530":1,"1555":1,"1560":4,"1596":1,"1598":1,"1599":1,"1600":1,"1609":1,"1613":1,"1622":1,"1624":1,"1626":1,"1628":1,"1633":1,"1670":3,"1714":1,"1716":1,"1717":1,"1718":1,"1719":1,"1720":1,"1733":2,"1743":1,"1745":1,"1815":2,"1822":2,"1826":2,"1874":3,"1875":2,"1876":2,"1878":1,"1880":3,"1885":1,"1894":1,"1895":1,"1897":1,"1900":5,"1901":2,"1902":1,"1917":1,"1921":1,"1922":1,"1933":1,"1940":1,"1942":1,"1954":1,"1957":2,"1960":1,"1970":1,"1972":1,"2048":1,"2050":1,"2051":1,"2052":1,"2053":1,"2054":1,"2055":1,"2056":1,"2057":1,"2060":1,"2067":1,"2071":1,"2081":1,"2085":1,"2087":1,"2102":1,"2113":1,"2126":1,"2130":2,"2139":2,"2143":4,"2152":3,"2153":1,"2158":1,"2161":5,"2162":3,"2169":3,"2170":1,"2171":3,"2172":2,"2175":1,"2182":1,"2196":1,"2197":1,"2198":1,"2227":1,"2228":1,"2306":2,"2358":2,"2402":1,"2405":2,"2406":1,"2407":1,"2408":1,"2411":1,"2413":1,"2414":5,"2415":3,"2441":1,"2490":1,"2524":7,"2525":5,"2526":4,"2534":1,"2572":1,"2576":9,"2577":18,"2581":1,"2582":1,"2603":3,"2605":2,"2607":1,"2608":1,"2609":1,"2610":1,"2611":1,"2707":1,"2727":1,"2728":4,"2735":1,"2736":1,"2737":6,"2738":2,"2741":1,"2743":4,"2745":2,"2749":2}}],["functions",{"0":{"22":1,"243":1,"637":1,"1139":1,"1341":1,"1364":1,"1383":1,"1444":1,"1505":1,"1874":1,"1875":1,"1894":1,"1895":1,"1942":1,"2047":1,"2048":1,"2049":1,"2055":1,"2056":1,"2071":1,"2113":1,"2158":1,"2175":1,"2227":1,"2534":1,"2601":1,"2706":1,"2740":1,"2741":1},"1":{"638":1,"639":1,"1140":1,"1141":1,"1142":1,"1365":1,"1366":1,"1367":1,"1368":1,"1369":1,"1370":1,"1371":1,"1372":1,"1373":1,"1445":1,"1446":1,"1447":1,"1448":1,"1449":1,"2048":1,"2049":1,"2050":2,"2051":2,"2052":2,"2053":2,"2054":2,"2055":2,"2056":2,"2057":2,"2602":1,"2603":1,"2604":1,"2605":1,"2606":1,"2607":1,"2608":1,"2609":1,"2610":1,"2611":1,"2612":1},"2":{"16":1,"22":1,"31":1,"49":3,"50":1,"62":1,"93":2,"114":2,"125":1,"134":2,"149":2,"160":1,"176":1,"185":1,"190":1,"191":3,"199":4,"203":2,"211":4,"236":2,"240":1,"243":1,"249":2,"266":1,"273":1,"374":1,"446":1,"455":1,"470":1,"475":1,"481":4,"485":1,"533":1,"565":2,"566":1,"568":2,"571":3,"574":1,"580":2,"584":1,"587":1,"588":2,"589":2,"635":1,"656":1,"661":1,"697":1,"698":2,"699":1,"701":2,"707":1,"1127":1,"1129":2,"1130":1,"1174":1,"1179":1,"1195":1,"1200":1,"1250":1,"1300":3,"1301":1,"1332":1,"1335":1,"1340":1,"1341":9,"1344":1,"1364":2,"1370":1,"1377":2,"1383":3,"1385":2,"1397":1,"1400":1,"1411":1,"1423":1,"1430":1,"1445":1,"1449":1,"1505":1,"1518":1,"1526":1,"1549":2,"1560":1,"1596":1,"1633":1,"1671":1,"1714":1,"1716":1,"1733":1,"1806":1,"1822":1,"1825":1,"1871":2,"1875":1,"1876":1,"1888":1,"1893":1,"1894":3,"1895":1,"1897":1,"1901":1,"1910":1,"1939":1,"1948":2,"1953":2,"1954":1,"1957":1,"2034":2,"2035":1,"2047":2,"2051":1,"2058":2,"2075":1,"2143":1,"2152":1,"2158":1,"2161":2,"2162":2,"2169":1,"2170":4,"2171":3,"2263":1,"2301":1,"2306":1,"2410":1,"2440":1,"2491":1,"2534":1,"2564":1,"2566":3,"2571":1,"2576":1,"2577":5,"2601":2,"2602":1,"2605":1,"2702":5,"2706":2,"2724":1,"2740":1,"2741":2,"2744":1,"2748":1,"2749":2}}],["fudge",{"2":{"249":1}}],["future",{"0":{"541":1,"2102":1},"1":{"2103":1,"2104":1,"2105":1,"2106":1,"2107":1},"2":{"6":1,"10":1,"110":1,"142":1,"156":1,"160":1,"182":1,"194":1,"198":1,"213":1,"262":2,"278":1,"352":1,"480":1,"538":1,"541":1,"599":1,"600":1,"1195":1,"1314":1,"1326":1,"2307":1,"2566":1,"2567":1,"2568":1,"2719":1}}],["fn+f",{"2":{"1283":1}}],["fnv",{"2":{"176":1}}],["fn",{"0":{"3":1,"7":1,"15":1,"1278":1},"2":{"3":2,"7":4,"15":2,"16":1,"31":1,"38":1,"49":1,"114":2,"134":1,"532":2,"1269":2,"1278":2,"1383":1,"1655":2,"1668":6,"1813":3,"2043":1,"2137":3,"2148":1,"2153":1,"2161":14,"2162":10,"2166":1,"2167":2,"2168":1,"2169":1,"2170":2,"2171":1,"2407":1}}],["fischl",{"2":{"2337":1}}],["fish",{"2":{"448":1}}],["fiddle",{"2":{"2161":1}}],["fiddling",{"2":{"335":1}}],["fifth",{"2":{"1712":1,"2155":1,"2161":1}}],["fifo",{"2":{"191":1}}],["five",{"0":{"1711":1},"1":{"1712":1,"1713":1},"2":{"1678":1,"2148":1,"2152":1,"2161":1,"2490":1,"2584":1,"2614":1,"2696":1}}],["figuring",{"2":{"1243":1}}],["figure",{"2":{"401":1,"669":1,"790":1,"824":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1326":1,"1451":2,"2169":1,"2423":1,"2455":1}}],["fiuxup",{"2":{"249":1}}],["filthier",{"2":{"1441":1}}],["filterpaper",{"2":{"1453":1}}],["filter=ez",{"2":{"1235":1,"1236":1}}],["filtered",{"2":{"374":1}}],["filtering",{"0":{"1938":1},"2":{"374":1,"505":1,"1239":1,"1917":1,"1921":1,"1923":1,"2226":2,"2753":1}}],["filters",{"2":{"236":1,"374":1}}],["filter",{"2":{"199":1,"374":6,"384":1,"1239":1,"1325":1,"1440":2,"2300":1}}],["fills",{"2":{"2150":1,"2417":1}}],["filled",{"2":{"1949":1,"2577":9}}],["fill",{"2":{"370":1,"371":1,"378":1,"381":1,"383":1,"386":1,"546":1,"1405":1,"1923":1,"2150":1,"2558":1,"2577":3}}],["filen",{"2":{"400":1}}],["filenames",{"2":{"400":1,"460":1,"2564":1}}],["filename",{"2":{"379":1,"380":2,"388":1,"389":1,"390":1,"391":1,"441":2,"460":1,"1287":1,"2347":1,"2353":1,"2452":1}}],["filename>",{"2":{"292":1,"405":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2240":1,"2242":1,"2243":1,"2244":1,"2347":1}}],["file2",{"2":{"400":1,"2480":1}}],["file1",{"2":{"400":1,"2480":1}}],["file>",{"2":{"377":1}}],["fileformat",{"2":{"199":1}}],["filegen",{"2":{"149":1}}],["file",{"0":{"440":1,"501":1,"512":1,"542":1,"545":1,"2261":1,"2452":1,"2615":1},"1":{"502":1,"503":1,"504":1,"505":1,"506":1,"507":1,"508":1,"509":1,"510":1,"511":1,"513":1,"514":1,"515":1,"516":1},"2":{"5":2,"16":1,"25":1,"65":2,"70":1,"73":1,"87":1,"114":2,"120":1,"132":2,"149":2,"164":1,"176":3,"189":1,"191":2,"211":4,"236":2,"249":1,"262":2,"266":1,"286":1,"291":2,"305":1,"309":1,"314":1,"315":1,"331":1,"332":1,"341":1,"347":1,"350":1,"374":1,"377":1,"393":2,"394":2,"399":1,"401":1,"404":2,"405":3,"408":1,"409":1,"410":1,"430":1,"437":1,"441":3,"450":1,"452":2,"453":4,"454":2,"496":1,"501":2,"512":1,"529":2,"530":1,"533":1,"534":1,"541":4,"545":2,"549":1,"554":1,"559":2,"560":3,"564":4,"565":1,"566":1,"601":1,"607":1,"613":1,"621":1,"626":1,"688":1,"1124":2,"1127":3,"1130":3,"1133":1,"1135":1,"1137":1,"1138":1,"1142":1,"1239":1,"1250":1,"1254":1,"1287":5,"1332":1,"1351":2,"1352":1,"1354":1,"1377":2,"1379":4,"1383":1,"1385":3,"1398":3,"1405":2,"1415":2,"1440":6,"1495":1,"1496":2,"1508":1,"1513":1,"1527":2,"1553":1,"1554":1,"1657":1,"1675":1,"1725":1,"1729":2,"1733":1,"1803":1,"1804":1,"1805":1,"1806":1,"1807":1,"1813":1,"1814":2,"1817":1,"1825":1,"1826":1,"1884":1,"1946":1,"1952":2,"1957":1,"2041":1,"2044":1,"2124":2,"2125":1,"2126":2,"2127":2,"2128":1,"2129":1,"2137":1,"2141":1,"2153":1,"2161":1,"2164":1,"2169":2,"2229":1,"2230":1,"2231":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":2,"2240":1,"2242":1,"2243":1,"2244":1,"2245":2,"2247":2,"2249":2,"2252":2,"2255":1,"2259":7,"2261":1,"2262":13,"2263":9,"2264":3,"2277":1,"2278":2,"2279":1,"2295":4,"2297":1,"2298":1,"2299":6,"2300":4,"2301":2,"2302":1,"2309":3,"2312":1,"2342":1,"2347":3,"2349":5,"2353":2,"2400":1,"2404":2,"2405":1,"2406":2,"2407":1,"2409":1,"2420":1,"2422":1,"2423":3,"2425":2,"2436":2,"2437":7,"2439":2,"2440":3,"2446":1,"2449":1,"2452":5,"2469":2,"2474":13,"2478":1,"2480":1,"2491":1,"2501":1,"2506":1,"2508":3,"2511":2,"2513":7,"2539":1,"2541":2,"2542":1,"2544":1,"2548":1,"2550":1,"2555":2,"2557":1,"2564":1,"2566":4,"2575":10,"2577":2,"2583":1,"2585":1,"2587":6,"2591":1,"2592":2,"2594":6,"2595":3,"2607":1,"2614":4,"2615":2,"2616":3,"2617":1,"2620":3,"2671":2,"2752":1,"2753":6,"2757":1}}],["files>",{"2":{"2474":1}}],["filesystem",{"2":{"2463":1}}],["files",{"0":{"5":1,"1797":1,"2303":1,"2435":1,"2438":1,"2712":1},"2":{"1":1,"32":1,"50":4,"69":1,"73":2,"75":1,"86":1,"92":1,"113":1,"114":5,"118":1,"132":1,"133":1,"134":3,"160":2,"176":2,"191":3,"199":7,"201":2,"211":3,"213":2,"220":1,"224":2,"234":2,"236":4,"238":1,"249":3,"262":1,"266":1,"277":1,"282":3,"341":1,"371":1,"374":1,"380":1,"387":1,"396":2,"399":1,"400":5,"401":2,"411":1,"448":1,"453":1,"454":1,"485":2,"496":3,"499":1,"501":1,"509":1,"513":4,"515":1,"520":1,"521":1,"522":2,"530":1,"545":1,"554":2,"606":2,"609":2,"610":1,"613":1,"614":2,"1132":1,"1133":1,"1287":1,"1377":3,"1379":1,"1383":1,"1384":1,"1385":3,"1445":1,"1553":1,"1729":1,"1952":1,"2126":3,"2260":2,"2261":1,"2262":4,"2263":2,"2296":1,"2299":1,"2300":1,"2303":5,"2309":1,"2342":1,"2344":1,"2346":1,"2349":1,"2405":1,"2425":1,"2427":2,"2428":1,"2429":2,"2430":1,"2433":1,"2435":1,"2436":1,"2437":1,"2438":1,"2439":1,"2440":2,"2445":1,"2447":1,"2448":1,"2457":2,"2473":1,"2474":2,"2477":1,"2480":4,"2501":1,"2508":1,"2509":1,"2524":1,"2525":1,"2526":1,"2533":1,"2548":1,"2553":1,"2564":5,"2565":1,"2566":7,"2573":2,"2615":1,"2647":1,"2671":5,"2753":4}}],["finnish",{"2":{"1355":1,"2712":3}}],["finger",{"2":{"1329":1,"1860":3,"1866":1,"1934":3,"2152":1,"2153":1}}],["fingers",{"2":{"1329":1,"1410":1,"1860":1}}],["fingerprintusbhost",{"2":{"1831":1}}],["fingerprint",{"2":{"199":1}}],["finite",{"2":{"516":1}}],["finishing",{"0":{"2280":1},"2":{"505":1}}],["finishes",{"2":{"331":1,"2161":2,"2162":1,"2743":1}}],["finished",{"0":{"316":1,"525":1},"2":{"312":1,"315":1,"316":1,"522":1,"647":1,"675":1,"741":1,"745":1,"749":1,"751":1,"768":1,"772":1,"776":1,"778":1,"800":1,"804":1,"808":1,"810":1,"832":1,"836":1,"840":1,"842":1,"867":1,"871":1,"875":1,"877":1,"901":1,"905":1,"909":1,"911":1,"935":1,"939":1,"943":1,"945":1,"969":1,"973":1,"977":1,"979":1,"1003":1,"1007":1,"1011":1,"1013":1,"1037":1,"1041":1,"1045":1,"1047":1,"1071":1,"1075":1,"1079":1,"1081":1,"1105":1,"1109":1,"1113":1,"1115":1,"1158":1,"1162":1,"1166":1,"1168":1,"1729":2,"1921":1,"1952":2,"2161":2,"2162":5,"2167":2,"2168":3,"2169":3,"2170":3,"2171":4,"2353":1}}],["finish",{"0":{"2197":1,"2221":1},"2":{"331":1,"1553":2,"1555":1,"1683":1,"2363":1,"2501":1}}],["finalize",{"2":{"2255":1}}],["final",{"0":{"2709":1},"2":{"496":1,"499":1,"522":1,"614":1,"1284":4,"1451":1,"2161":1,"2273":1,"2674":1,"2702":1,"2749":1}}],["finally",{"2":{"163":1,"330":1,"626":1,"1325":1,"1359":1,"1923":1,"2106":1,"2162":1,"2171":1,"2181":1,"2351":1,"2530":1,"2557":1}}],["finer",{"2":{"2111":1,"2355":1}}],["fine40",{"2":{"211":1}}],["fine",{"0":{"1911":1},"2":{"176":1,"1260":1,"1405":1,"1430":1,"1676":1,"1912":1,"1940":1,"1941":1,"2118":1,"2150":1,"2425":1,"2469":1,"2498":1,"2506":1,"2566":2,"2569":1,"2737":1,"2740":1}}],["finder",{"2":{"2245":1,"2247":1,"2249":1,"2452":2}}],["finds",{"2":{"1254":1,"1255":1}}],["finding",{"2":{"557":1}}],["find",{"0":{"374":1,"2670":1},"2":{"31":4,"34":1,"124":1,"211":1,"233":1,"236":2,"240":1,"245":1,"248":1,"249":1,"331":1,"335":1,"336":1,"352":3,"356":1,"374":4,"401":1,"430":1,"446":1,"454":1,"481":3,"552":1,"554":1,"557":1,"602":1,"616":1,"627":1,"628":1,"684":1,"1129":1,"1132":1,"1133":1,"1216":1,"1259":1,"1260":1,"1262":1,"1304":1,"1364":1,"1416":2,"1441":1,"1573":1,"1630":1,"1677":1,"1921":1,"2061":1,"2118":1,"2126":1,"2171":1,"2252":1,"2259":2,"2262":1,"2273":1,"2275":1,"2282":1,"2305":1,"2348":1,"2355":2,"2392":2,"2404":1,"2405":2,"2406":1,"2418":1,"2419":1,"2423":3,"2427":1,"2474":2,"2534":1,"2556":1,"2686":1,"2727":1,"2728":2,"2738":1,"2743":1,"2744":1,"2748":1,"2750":1,"2755":1}}],["fields",{"2":{"191":1,"1534":1,"2502":1,"2585":1,"2592":1}}],["field",{"2":{"149":1,"335":1,"350":5,"628":1,"1674":1,"2162":1,"2436":1,"2615":2,"2702":1}}],["fitler",{"2":{"1440":2,"1451":2}}],["fits",{"2":{"1405":1,"2181":1}}],["fitness",{"2":{"1380":1,"2570":1}}],["fit",{"2":{"124":2,"134":1,"352":1,"1336":1,"1554":1,"1822":2,"2143":2,"2553":1,"2701":2}}],["fitting",{"2":{"114":1}}],["firefox",{"2":{"2427":1}}],["fired",{"2":{"2263":1}}],["fire",{"2":{"1518":3,"1573":2,"2162":1}}],["firstly",{"2":{"2103":1,"2353":1}}],["first",{"0":{"2420":1,"2498":1},"1":{"2421":1,"2422":1,"2423":1,"2424":1,"2425":1,"2426":1},"2":{"46":1,"65":1,"90":2,"113":1,"114":1,"120":1,"130":1,"157":1,"213":1,"222":1,"284":1,"358":2,"361":1,"366":1,"430":1,"453":1,"462":1,"465":1,"496":1,"501":1,"505":1,"506":1,"550":1,"556":1,"557":2,"559":1,"560":2,"570":1,"588":1,"597":1,"598":1,"606":1,"627":1,"644":2,"646":1,"656":1,"666":1,"669":1,"673":1,"689":2,"690":1,"734":1,"738":1,"760":1,"764":1,"790":1,"794":1,"824":1,"828":1,"857":1,"861":1,"891":1,"895":1,"925":1,"929":1,"959":1,"963":1,"993":1,"997":1,"1027":1,"1031":1,"1061":1,"1065":1,"1095":1,"1099":1,"1148":1,"1152":1,"1181":1,"1214":1,"1259":1,"1266":1,"1270":1,"1288":1,"1303":2,"1340":1,"1359":2,"1385":1,"1423":1,"1451":3,"1452":1,"1511":1,"1518":1,"1520":1,"1521":1,"1522":1,"1527":1,"1553":1,"1560":2,"1594":2,"1612":1,"1614":1,"1631":1,"1675":2,"1703":1,"1706":1,"1709":1,"1712":1,"1725":1,"1781":1,"1784":1,"1787":1,"1807":1,"1812":1,"1820":1,"1856":1,"1863":1,"1870":1,"1921":1,"1923":2,"1940":1,"1946":1,"1949":1,"2026":1,"2029":1,"2063":1,"2122":1,"2125":1,"2126":1,"2131":1,"2137":1,"2147":1,"2161":4,"2162":3,"2171":1,"2182":2,"2261":1,"2270":1,"2273":1,"2281":1,"2305":1,"2309":2,"2329":1,"2333":1,"2418":1,"2441":1,"2450":1,"2470":1,"2473":1,"2474":3,"2475":1,"2480":1,"2490":1,"2508":1,"2513":1,"2515":1,"2557":1,"2565":2,"2566":1,"2575":2,"2577":1,"2596":8,"2603":1,"2614":1,"2616":1,"2624":1,"2657":1,"2658":1,"2675":2,"2686":1,"2700":1,"2702":1,"2722":1,"2728":1,"2735":1,"2737":1,"2743":1,"2747":1}}],["firmware\`",{"2":{"365":2,"366":2}}],["firmwares",{"2":{"164":1,"173":1,"263":1,"371":1,"2427":1}}],["firmware",{"0":{"31":1,"34":1,"56":1,"164":1,"273":1,"276":1,"542":1,"1259":1,"2121":1,"2277":1,"2278":1,"2279":1,"2315":1,"2318":1,"2321":1,"2322":1,"2342":1,"2349":1,"2420":1,"2425":1,"2426":1,"2635":1,"2674":1},"1":{"2122":1,"2123":1,"2124":1,"2125":1,"2126":1,"2127":1,"2128":1,"2129":1,"2130":1,"2131":1,"2322":1,"2323":1,"2324":1,"2325":1,"2326":1,"2343":1,"2344":1,"2345":1,"2346":1,"2421":1,"2422":1,"2423":1,"2424":1,"2425":1,"2426":1},"2":{"2":1,"3":1,"10":1,"15":1,"21":1,"24":1,"28":2,"30":2,"33":2,"36":1,"37":1,"43":1,"49":1,"70":3,"73":1,"107":1,"112":1,"114":3,"116":1,"124":1,"130":2,"131":1,"132":1,"145":1,"149":4,"164":1,"166":1,"201":1,"213":1,"215":1,"222":2,"224":2,"228":3,"236":1,"238":1,"240":1,"243":1,"249":4,"265":2,"266":2,"268":1,"273":5,"275":1,"276":3,"278":1,"291":1,"292":1,"305":3,"309":1,"310":1,"311":1,"312":3,"313":1,"314":1,"316":5,"332":1,"341":2,"343":2,"344":2,"345":2,"346":1,"347":2,"349":2,"352":2,"360":4,"363":1,"365":1,"366":1,"367":2,"370":6,"371":2,"373":1,"375":1,"382":1,"387":1,"388":2,"391":1,"393":2,"394":2,"397":1,"401":2,"406":1,"430":1,"450":2,"451":1,"458":3,"506":1,"513":3,"515":2,"519":1,"521":2,"527":1,"529":3,"530":2,"533":2,"534":1,"535":1,"536":1,"539":1,"542":1,"543":1,"554":2,"556":1,"557":1,"558":1,"574":2,"592":4,"660":1,"689":1,"1234":1,"1236":1,"1239":1,"1241":1,"1243":1,"1257":1,"1270":1,"1287":2,"1288":1,"1312":1,"1319":1,"1334":1,"1376":1,"1385":2,"1413":1,"1434":1,"1435":1,"1437":1,"1491":2,"1492":2,"1497":1,"1594":1,"1728":1,"1816":1,"1825":2,"1887":1,"1932":1,"1948":1,"1949":2,"2034":1,"2037":1,"2042":1,"2114":2,"2123":1,"2124":1,"2125":2,"2126":2,"2128":1,"2134":1,"2149":2,"2160":1,"2161":1,"2177":1,"2226":1,"2232":2,"2234":3,"2239":1,"2241":4,"2246":2,"2248":2,"2249":1,"2250":1,"2252":3,"2255":4,"2259":1,"2262":2,"2263":1,"2268":2,"2276":2,"2277":7,"2279":1,"2280":1,"2295":2,"2296":1,"2304":1,"2311":5,"2312":1,"2313":1,"2314":1,"2315":3,"2318":1,"2320":1,"2322":1,"2327":1,"2329":1,"2333":1,"2341":1,"2345":1,"2349":6,"2351":1,"2402":1,"2403":2,"2417":1,"2418":3,"2420":2,"2421":1,"2422":1,"2423":1,"2425":3,"2426":2,"2427":1,"2428":1,"2429":1,"2437":4,"2439":3,"2441":7,"2442":1,"2445":1,"2446":1,"2447":2,"2448":1,"2449":1,"2450":2,"2451":1,"2452":6,"2453":1,"2454":2,"2455":1,"2456":1,"2468":1,"2469":5,"2470":1,"2472":1,"2477":10,"2479":6,"2483":1,"2494":1,"2498":1,"2501":1,"2503":1,"2504":1,"2506":1,"2508":1,"2510":1,"2511":1,"2512":1,"2513":6,"2514":1,"2522":1,"2523":1,"2524":1,"2525":1,"2544":1,"2566":5,"2569":1,"2573":1,"2575":6,"2576":11,"2577":2,"2578":1,"2579":1,"2614":2,"2627":1,"2647":1,"2671":3,"2672":1,"2674":1,"2701":1,"2702":2,"2705":2,"2706":1,"2707":1,"2709":1,"2718":1,"2719":4,"2721":1,"2728":1,"2735":1,"2736":1,"2742":1,"2745":2,"2749":1,"2756":1}}],["fixme",{"2":{"482":1}}],["fixmes",{"0":{"482":1},"2":{"482":2}}],["fixups",{"2":{"114":1}}],["fixup",{"2":{"65":1,"92":2,"114":6,"134":3,"149":3,"160":2,"176":9,"191":23,"199":9,"211":13,"222":3,"236":1,"249":7,"266":4,"277":4}}],["fixing",{"0":{"28":1},"2":{"50":1,"114":1,"199":1,"236":1,"557":1,"2568":2}}],["fixed",{"0":{"25":1},"2":{"25":1,"50":1,"73":1,"86":1,"114":1,"149":1,"160":1,"191":1,"199":1,"211":2,"236":1,"266":1,"434":1,"570":1,"1295":1,"2318":1,"2468":1,"2490":1}}],["fixes",{"0":{"48":1,"62":1,"73":1,"92":1},"2":{"5":1,"73":2,"92":1,"114":3,"134":3,"149":8,"160":4,"176":7,"190":2,"191":7,"199":3,"211":2,"222":1,"236":2,"249":1,"266":2,"277":3,"343":1,"2517":1}}],["fix",{"0":{"11":1},"2":{"6":1,"28":1,"32":1,"50":1,"51":1,"62":1,"73":6,"74":1,"75":1,"77":1,"92":8,"94":2,"95":2,"114":68,"133":1,"134":42,"149":32,"160":12,"175":1,"176":40,"190":2,"191":47,"199":25,"211":25,"222":23,"236":17,"249":19,"266":10,"277":5,"352":1,"376":3,"554":2,"560":2,"1241":1,"1261":2,"1270":1,"1403":1,"1501":1,"2299":1,"2319":1,"2398":2,"2411":2,"2454":1,"2468":2,"2472":1,"2490":1,"2564":1}}],["footprint",{"0":{"2039":1},"2":{"2518":1,"2528":1}}],["footnotes",{"2":{"279":1}}],["foo=none",{"2":{"474":1}}],["foo=",{"2":{"474":1}}],["foo",{"2":{"453":6,"457":1,"459":1,"474":2,"475":1,"476":2,"570":2,"572":2,"1332":1}}],["font",{"0":{"409":1,"410":1,"2585":1,"2587":1,"2590":1,"2591":1},"1":{"2586":1,"2587":1,"2588":1,"2589":1,"2590":1,"2591":1},"2":{"409":1,"410":1,"1814":5,"1817":8,"2138":1,"2141":8,"2575":18,"2577":34,"2585":6,"2586":1,"2587":6,"2588":2,"2589":3,"2590":4,"2591":1}}],["fonts",{"2":{"153":2,"248":1,"249":1,"1817":3,"2141":3,"2573":2,"2574":5,"2575":1,"2577":5}}],["fox",{"2":{"211":1}}],["focused",{"2":{"481":1,"2418":1}}],["focuses",{"2":{"278":1}}],["focusing",{"2":{"233":1}}],["focus",{"2":{"182":1,"213":1,"430":1,"1567":1,"1677":1,"2502":1,"2738":1}}],["foundational",{"2":{"2725":1}}],["foundation",{"2":{"1380":1,"2570":1}}],["found",{"0":{"1261":1},"2":{"124":2,"210":1,"316":1,"324":1,"327":1,"335":1,"376":1,"401":1,"430":1,"446":1,"483":1,"484":1,"529":1,"552":1,"684":1,"685":1,"686":1,"696":1,"1272":1,"1340":1,"1398":1,"1438":1,"1445":1,"1452":1,"1491":1,"1634":1,"1816":1,"1921":1,"1923":1,"2140":1,"2144":1,"2145":1,"2146":1,"2242":1,"2257":3,"2260":2,"2263":1,"2271":1,"2280":1,"2318":1,"2353":1,"2393":1,"2421":1,"2441":1,"2443":1,"2468":1,"2469":1,"2522":1,"2533":1,"2549":1,"2575":1,"2577":1,"2655":1,"2723":1,"2743":1,"2757":1}}],["fourth",{"2":{"1406":1,"1709":1,"1712":1,"2152":1,"2161":1,"2167":2}}],["fourier",{"2":{"45":1}}],["four",{"0":{"1708":1},"1":{"1709":1,"1710":1},"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"143":2,"149":1,"453":1,"455":1,"529":1,"664":1,"755":1,"758":1,"784":1,"787":1,"816":1,"819":1,"848":1,"883":1,"917":1,"920":1,"951":1,"954":1,"985":1,"988":1,"1019":1,"1053":1,"1087":1,"1143":1,"1146":1,"1300":1,"1559":1,"1591":1,"2093":1,"2111":1,"2152":2,"2348":1,"2352":1,"2614":1,"2699":2}}],["folks",{"2":{"343":1,"344":1,"345":1,"346":1,"349":1}}],["foldkb",{"2":{"134":1}}],["folder2",{"2":{"1351":1}}],["folder1",{"2":{"1351":1}}],["folder>",{"2":{"1346":3}}],["folder",{"0":{"43":1,"2296":1},"1":{"2297":1,"2298":1,"2299":1,"2300":1,"2301":1,"2302":1},"2":{"70":1,"72":2,"111":1,"113":3,"114":5,"133":1,"134":1,"149":20,"160":2,"176":2,"199":2,"204":1,"211":6,"236":1,"249":10,"266":1,"277":2,"286":1,"291":2,"331":3,"335":1,"370":1,"373":1,"387":1,"497":1,"499":2,"513":4,"558":1,"559":2,"565":1,"566":1,"1346":2,"1347":3,"1351":2,"1376":2,"1379":1,"1385":1,"1398":1,"1413":1,"1415":1,"1440":4,"1729":1,"1952":1,"2257":3,"2258":1,"2259":1,"2260":1,"2262":3,"2294":1,"2295":5,"2296":2,"2299":14,"2300":16,"2303":1,"2307":3,"2425":1,"2435":2,"2436":2,"2438":1,"2440":1,"2452":1,"2468":1,"2469":1,"2497":1,"2498":3,"2508":3,"2511":2,"2566":1,"2615":1,"2753":5,"2755":1}}],["folders",{"0":{"499":1,"2295":1},"2":{"35":1,"37":1,"43":1,"114":1,"149":1,"204":1,"222":1,"496":1,"498":1,"499":3,"1346":1,"2262":3,"2295":3,"2299":1,"2753":1}}],["followed",{"2":{"361":1,"616":1,"1326":1,"1329":3,"1357":1,"1361":2,"1451":2,"1675":3,"2494":1,"2564":2,"2575":1,"2587":1,"2594":1,"2596":2,"2645":1,"2734":1}}],["followup",{"2":{"149":1,"224":1,"2567":1}}],["follow",{"2":{"114":1,"125":1,"185":1,"228":1,"240":1,"367":2,"453":3,"559":1,"560":2,"606":1,"607":1,"609":2,"623":1,"1124":1,"1127":1,"1130":1,"1132":1,"1133":1,"1265":1,"1338":1,"1452":1,"1499":1,"2183":1,"2297":1,"2304":1,"2313":1,"2417":1,"2418":1,"2433":1,"2462":1,"2467":1,"2468":1,"2497":1,"2554":1,"2566":1,"2600":1,"2753":1}}],["following",{"2":{"30":1,"31":2,"33":1,"34":3,"45":1,"67":1,"86":1,"102":1,"118":1,"119":1,"122":1,"125":1,"143":1,"146":1,"158":1,"159":1,"167":1,"168":1,"181":1,"185":1,"194":2,"197":1,"201":1,"206":1,"248":1,"255":2,"256":1,"273":1,"314":1,"317":1,"371":2,"374":1,"416":1,"450":1,"453":1,"462":1,"487":1,"514":1,"516":1,"534":1,"556":1,"565":1,"566":2,"588":2,"598":1,"602":1,"610":1,"615":1,"631":1,"643":1,"644":1,"661":1,"663":1,"666":1,"667":1,"669":1,"696":1,"698":1,"700":1,"702":1,"703":1,"731":1,"734":1,"757":1,"758":1,"760":1,"786":1,"787":1,"788":1,"790":1,"818":1,"819":1,"820":1,"821":1,"822":1,"824":1,"850":1,"851":1,"853":1,"854":1,"855":1,"857":1,"885":1,"886":1,"887":1,"888":1,"889":1,"891":1,"919":1,"920":1,"921":1,"922":1,"923":1,"925":1,"953":1,"954":1,"955":1,"956":1,"957":1,"959":1,"987":1,"988":1,"989":1,"990":1,"991":1,"993":1,"1021":1,"1022":1,"1024":1,"1025":1,"1027":1,"1055":1,"1056":1,"1058":1,"1059":1,"1061":1,"1089":1,"1090":1,"1091":1,"1092":1,"1093":1,"1095":1,"1134":1,"1145":1,"1146":1,"1148":1,"1175":1,"1177":1,"1196":1,"1213":1,"1214":1,"1216":1,"1217":1,"1220":1,"1224":1,"1225":1,"1226":1,"1227":1,"1228":1,"1229":1,"1230":1,"1239":2,"1245":1,"1252":1,"1253":1,"1254":1,"1280":1,"1294":1,"1301":1,"1304":1,"1311":1,"1314":1,"1316":1,"1317":1,"1319":1,"1328":1,"1329":1,"1330":1,"1341":1,"1376":1,"1378":1,"1385":1,"1387":1,"1393":1,"1397":1,"1403":1,"1416":2,"1430":1,"1431":1,"1438":1,"1448":1,"1452":2,"1455":1,"1457":1,"1458":1,"1466":1,"1467":2,"1469":1,"1470":1,"1492":1,"1493":1,"1500":1,"1512":1,"1515":2,"1518":1,"1525":1,"1527":1,"1532":1,"1553":1,"1555":1,"1559":1,"1562":1,"1570":2,"1575":1,"1579":1,"1582":1,"1584":1,"1585":1,"1586":1,"1587":1,"1590":1,"1591":1,"1593":1,"1635":1,"1637":1,"1638":1,"1665":1,"1677":1,"1679":1,"1682":1,"1683":1,"1684":1,"1685":1,"1716":1,"1724":1,"1725":1,"1787":1,"1789":1,"1790":1,"1800":1,"1801":1,"1802":1,"1803":1,"1804":1,"1805":1,"1808":1,"1812":1,"1814":1,"1825":1,"1833":1,"1853":1,"1857":1,"1871":2,"1873":1,"1876":1,"1881":1,"1882":1,"1883":1,"1892":1,"1897":1,"1901":2,"1905":1,"1908":1,"1910":1,"1911":1,"1912":1,"1917":1,"1919":1,"1920":1,"1921":1,"1923":1,"1932":1,"1933":1,"1934":1,"1935":1,"1937":1,"1939":1,"1941":1,"1943":1,"1945":1,"1946":1,"1950":1,"1951":1,"2031":1,"2032":2,"2038":1,"2039":1,"2060":1,"2063":1,"2068":1,"2073":1,"2074":1,"2075":1,"2078":1,"2103":1,"2109":1,"2121":1,"2122":1,"2124":1,"2125":2,"2126":2,"2127":2,"2129":1,"2137":1,"2138":1,"2146":1,"2147":1,"2148":1,"2149":1,"2157":1,"2169":1,"2170":1,"2171":2,"2178":1,"2179":1,"2180":1,"2181":2,"2182":1,"2183":1,"2230":1,"2231":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":2,"2240":1,"2242":1,"2243":1,"2244":1,"2245":2,"2247":2,"2249":2,"2252":1,"2259":1,"2260":1,"2262":2,"2268":1,"2282":1,"2300":2,"2301":1,"2302":1,"2311":3,"2328":1,"2346":1,"2347":1,"2348":1,"2351":1,"2353":3,"2405":1,"2409":1,"2413":1,"2414":1,"2429":1,"2431":2,"2432":1,"2435":1,"2437":1,"2438":2,"2440":1,"2450":1,"2453":1,"2459":1,"2464":1,"2468":4,"2474":1,"2479":2,"2513":3,"2523":2,"2531":1,"2539":1,"2542":1,"2548":3,"2560":1,"2566":1,"2573":1,"2575":2,"2576":31,"2577":2,"2579":1,"2593":1,"2596":1,"2706":2,"2727":4,"2735":2,"2736":2,"2737":3,"2738":4,"2742":1}}],["follows",{"2":{"0":1,"19":1,"31":1,"160":1,"203":1,"231":1,"234":1,"317":1,"455":1,"513":1,"534":1,"1300":1,"1805":1,"1912":1,"1915":1,"2299":2,"2300":1,"2303":1,"2317":1,"2430":1,"2452":1,"2535":1,"2585":1,"2590":1,"2592":1,"2595":1,"2596":2,"2600":1,"2615":1}}],["forum",{"2":{"2715":1}}],["forums",{"2":{"2326":1}}],["forgot",{"2":{"2728":1}}],["forget",{"2":{"1938":3}}],["forgiveness",{"2":{"466":1}}],["forever",{"2":{"2744":1}}],["forever60",{"2":{"389":5}}],["foremost",{"2":{"2702":1}}],["foreground",{"2":{"435":4}}],["foreach",{"2":{"349":1}}],["forth",{"2":{"341":1,"2146":1,"2231":1,"2238":1}}],["forcing",{"2":{"1828":1,"2128":1}}],["forcibly",{"2":{"50":1,"2131":1}}],["forceon",{"2":{"698":4}}],["forced",{"2":{"511":1,"1300":1,"2128":1,"2263":1}}],["forces",{"2":{"504":1,"515":1,"698":1,"1316":1,"1317":1,"2069":1}}],["forcefully",{"2":{"236":1}}],["force",{"0":{"195":1,"230":1},"2":{"112":3,"160":1,"195":4,"199":2,"211":2,"226":2,"236":3,"249":1,"277":1,"349":1,"361":2,"405":2,"504":2,"593":1,"594":1,"1134":1,"1238":1,"1243":1,"1332":1,"1349":3,"1828":1,"1894":2,"1908":1,"2071":1,"2145":1,"2230":2,"2263":1,"2279":1,"2453":1,"2477":2,"2566":1,"2610":1,"2699":3}}],["forming",{"2":{"2689":1}}],["formulas",{"2":{"1857":1}}],["formula",{"2":{"1725":1,"1946":1,"2461":1}}],["formed",{"2":{"1438":1}}],["former",{"2":{"1238":1,"1273":1}}],["formerly",{"2":{"37":1,"1498":2,"1528":1}}],["forms",{"2":{"453":1,"1393":1,"1410":1}}],["formalise",{"2":{"191":1}}],["formats",{"2":{"374":1,"377":1,"399":1,"400":1,"406":1,"2452":1,"2575":1}}],["formatters",{"2":{"114":1}}],["formatted",{"2":{"1":1,"50":1,"76":1,"482":1,"612":1,"1250":2,"2615":1}}],["formatting",{"0":{"1":1,"442":1,"444":1,"445":1,"454":1},"1":{"443":1,"444":1,"445":1,"446":1,"447":1},"2":{"73":1,"149":1,"176":1,"249":2,"432":1,"462":1,"2492":1,"2503":1}}],["format",{"0":{"1":1,"377":1,"399":1,"400":1,"406":1,"454":1,"470":1,"1357":1,"1450":1,"2585":1,"2592":1},"1":{"1451":1,"1452":1,"2586":1,"2587":1,"2588":1,"2589":1,"2590":1,"2591":1,"2593":1,"2594":1,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1},"2":{"1":2,"93":1,"112":1,"114":2,"134":5,"149":1,"160":1,"191":1,"199":1,"211":2,"248":1,"249":1,"277":1,"317":1,"341":2,"374":1,"377":4,"378":1,"384":1,"399":1,"400":7,"406":1,"408":2,"409":2,"410":1,"432":2,"442":2,"444":1,"445":2,"454":9,"462":1,"467":1,"468":2,"470":1,"496":1,"513":2,"529":1,"533":1,"610":1,"1278":1,"1300":1,"1348":1,"1451":3,"1452":1,"2091":1,"2093":1,"2095":1,"2097":1,"2147":1,"2148":1,"2152":1,"2252":1,"2303":2,"2309":1,"2349":1,"2353":1,"2428":1,"2440":1,"2452":1,"2469":1,"2566":1,"2575":21,"2576":12,"2577":2,"2585":5,"2587":4,"2592":6,"2593":1,"2594":1,"2595":1,"2596":6,"2597":2,"2599":1,"2615":1,"2674":2,"2686":1,"2699":1}}],["form",{"2":{"110":1,"393":1,"394":1,"416":1,"417":1,"453":1,"1243":1,"2125":1,"2152":1,"2169":1,"2615":1,"2632":1,"2672":2,"2673":1}}],["forward",{"2":{"36":1,"37":1,"43":1,"113":1,"134":1,"184":1,"254":1,"268":1,"1332":1,"1725":1,"1822":1,"1932":4,"1946":1,"1948":2,"2034":1,"2143":1,"2294":1,"2355":4,"2376":1,"2377":2,"2392":1,"2393":4,"2568":1,"2755":1}}],["forked",{"0":{"2443":1},"2":{"2406":1,"2472":1,"2720":1}}],["forks",{"0":{"26":1},"2":{"349":1,"1265":1,"2719":1}}],["forking",{"2":{"21":1,"2255":1}}],["fork",{"0":{"5":1,"2478":1},"1":{"2479":1,"2480":1,"2481":1},"2":{"26":1,"46":1,"176":1,"228":1,"349":1,"554":1,"556":1,"1257":1,"1265":3,"2230":1,"2231":1,"2238":1,"2255":7,"2257":1,"2428":1,"2441":1,"2443":2,"2446":1,"2468":1,"2472":1,"2473":1,"2475":1,"2477":7,"2479":3,"2480":2,"2481":2,"2548":1,"2549":2,"2568":3}}],["for",{"0":{"11":1,"14":2,"26":1,"35":1,"56":1,"80":1,"138":1,"174":1,"203":1,"231":1,"246":1,"350":1,"356":1,"367":1,"448":1,"450":1,"510":1,"533":1,"534":1,"541":1,"547":1,"553":1,"562":1,"1139":1,"1241":1,"1253":1,"1263":1,"1269":1,"1302":1,"1303":1,"1350":1,"1670":1,"1671":1,"1672":1,"1792":1,"1891":1,"1895":1,"1901":1,"2150":1,"2170":1,"2171":1,"2276":1,"2471":1,"2492":1,"2500":1,"2503":1,"2511":1,"2550":2,"2551":1,"2552":1,"2564":1,"2670":1,"2740":1,"2753":1},"1":{"36":1,"449":1,"450":1,"451":1,"452":1,"1140":1,"1141":1,"1142":1,"1264":1,"1351":1,"1352":1,"1673":1,"1674":1,"1675":1,"1892":1,"2472":1,"2501":1,"2502":1,"2512":1},"2":{"0":1,"8":2,"9":1,"12":1,"13":3,"14":1,"18":3,"19":1,"28":1,"30":3,"31":3,"33":3,"34":1,"35":1,"36":9,"39":1,"45":5,"49":14,"50":10,"51":1,"52":1,"55":2,"63":2,"64":1,"65":4,"69":2,"70":1,"74":7,"75":3,"76":1,"81":1,"82":1,"86":2,"88":1,"89":1,"90":1,"92":4,"93":21,"94":3,"98":2,"99":4,"104":1,"107":2,"108":1,"111":1,"112":1,"114":58,"116":1,"118":5,"119":2,"120":2,"123":2,"125":3,"127":1,"128":1,"130":3,"131":1,"132":1,"133":1,"134":38,"138":2,"142":1,"145":1,"146":1,"149":33,"152":3,"153":6,"154":1,"156":2,"158":1,"160":21,"163":3,"164":1,"166":2,"169":2,"172":4,"173":2,"174":4,"175":5,"176":45,"179":1,"182":4,"183":1,"185":4,"186":2,"188":7,"189":3,"190":3,"191":52,"194":7,"195":2,"196":1,"199":28,"201":7,"202":1,"203":1,"204":1,"206":2,"209":1,"210":2,"211":32,"213":6,"215":1,"222":15,"224":1,"228":5,"229":3,"230":2,"231":2,"232":3,"234":2,"235":1,"236":26,"240":1,"241":1,"243":1,"246":1,"247":2,"248":2,"249":27,"253":1,"255":4,"256":1,"257":1,"258":1,"259":2,"262":1,"263":4,"264":1,"265":1,"266":18,"270":1,"271":1,"272":1,"273":2,"274":1,"276":1,"277":8,"279":2,"282":6,"284":1,"303":1,"304":1,"305":1,"307":1,"310":1,"311":1,"312":2,"315":1,"316":4,"317":3,"318":1,"322":2,"328":1,"331":6,"332":1,"334":3,"335":2,"336":2,"339":1,"340":3,"341":7,"343":4,"344":4,"345":2,"346":2,"347":3,"349":3,"350":10,"352":2,"355":3,"365":1,"366":1,"367":4,"370":4,"371":5,"372":1,"373":1,"374":7,"376":1,"378":3,"383":1,"384":1,"385":1,"393":2,"394":2,"395":1,"400":4,"401":1,"402":1,"403":1,"404":1,"408":1,"409":2,"410":1,"413":2,"415":2,"418":2,"427":1,"430":2,"431":2,"432":3,"433":1,"436":1,"437":3,"441":1,"446":2,"448":1,"453":3,"454":3,"455":2,"457":1,"461":1,"466":3,"470":3,"471":1,"472":1,"473":1,"474":1,"479":1,"480":1,"481":1,"483":1,"485":2,"486":2,"492":1,"493":1,"495":2,"496":4,"498":1,"499":1,"500":1,"502":10,"504":1,"505":21,"506":4,"509":4,"510":1,"511":11,"512":1,"513":1,"515":8,"519":1,"521":1,"522":2,"523":1,"525":1,"528":1,"529":2,"530":3,"532":1,"533":1,"534":1,"535":2,"536":1,"537":1,"540":2,"541":2,"546":2,"550":4,"551":1,"554":6,"556":5,"557":3,"559":5,"560":4,"561":1,"562":2,"564":2,"565":1,"566":3,"567":1,"568":1,"569":1,"571":2,"572":1,"574":5,"575":3,"578":1,"580":2,"586":1,"588":3,"589":1,"592":6,"593":2,"594":2,"597":3,"598":1,"601":1,"602":1,"606":1,"607":1,"608":1,"609":2,"610":3,"611":2,"613":1,"614":4,"615":1,"621":2,"623":1,"624":3,"625":1,"626":5,"627":5,"628":2,"629":1,"630":4,"635":2,"636":1,"638":3,"639":7,"641":5,"642":1,"655":1,"656":4,"657":4,"658":1,"660":1,"661":7,"662":3,"671":1,"672":3,"681":4,"683":1,"684":5,"685":2,"686":1,"687":2,"688":4,"689":3,"690":4,"691":1,"692":2,"697":2,"701":2,"703":9,"704":1,"705":1,"707":3,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"726":3,"727":1,"730":2,"734":2,"736":1,"737":4,"749":1,"751":1,"756":2,"760":2,"762":1,"763":4,"776":1,"778":1,"785":2,"788":1,"790":2,"792":1,"793":4,"798":1,"808":1,"810":1,"817":2,"821":4,"824":2,"826":1,"827":4,"840":1,"841":3,"842":1,"843":1,"849":2,"850":4,"853":1,"854":4,"857":2,"859":1,"860":4,"865":1,"875":1,"877":1,"884":2,"887":1,"888":4,"891":2,"893":1,"894":4,"899":1,"909":1,"911":1,"918":2,"921":1,"922":4,"925":2,"927":1,"928":4,"933":1,"943":1,"945":1,"952":2,"955":1,"956":4,"959":2,"961":1,"962":4,"967":1,"977":1,"979":1,"986":2,"990":4,"993":2,"995":1,"996":4,"1001":1,"1011":1,"1012":3,"1013":1,"1014":1,"1020":2,"1021":4,"1024":4,"1027":2,"1029":1,"1030":4,"1035":1,"1045":1,"1046":3,"1047":1,"1048":1,"1054":2,"1055":4,"1058":4,"1061":2,"1063":1,"1064":4,"1069":1,"1079":1,"1080":3,"1081":1,"1082":1,"1088":2,"1092":4,"1095":2,"1097":1,"1098":4,"1103":1,"1113":1,"1114":3,"1115":1,"1116":1,"1121":3,"1122":1,"1123":3,"1126":5,"1127":5,"1129":6,"1130":6,"1132":3,"1133":2,"1134":1,"1136":1,"1138":1,"1139":1,"1142":2,"1144":2,"1148":2,"1150":1,"1151":4,"1156":1,"1166":1,"1168":1,"1177":9,"1181":1,"1198":11,"1212":1,"1215":1,"1216":1,"1217":1,"1218":1,"1219":1,"1220":1,"1221":1,"1225":5,"1226":4,"1227":2,"1230":5,"1234":1,"1235":1,"1238":1,"1240":1,"1241":2,"1242":2,"1243":1,"1247":1,"1249":1,"1251":1,"1252":2,"1253":1,"1254":3,"1257":2,"1263":1,"1265":2,"1267":1,"1269":3,"1270":2,"1272":1,"1274":1,"1275":1,"1276":1,"1278":2,"1281":1,"1283":1,"1287":2,"1293":2,"1294":1,"1299":3,"1300":9,"1302":1,"1303":1,"1304":1,"1310":1,"1312":2,"1313":1,"1314":2,"1316":1,"1317":1,"1319":1,"1321":2,"1323":1,"1324":1,"1325":4,"1326":6,"1329":5,"1330":1,"1331":4,"1332":7,"1334":3,"1335":4,"1336":4,"1339":3,"1340":2,"1341":10,"1342":1,"1343":1,"1346":2,"1347":1,"1349":1,"1351":2,"1352":3,"1353":1,"1357":4,"1359":4,"1360":1,"1361":3,"1363":1,"1364":3,"1368":2,"1369":1,"1375":1,"1376":1,"1377":3,"1378":2,"1379":4,"1380":2,"1381":2,"1382":2,"1383":2,"1384":5,"1385":6,"1387":2,"1388":3,"1389":1,"1390":1,"1391":3,"1392":1,"1393":1,"1395":1,"1398":1,"1399":5,"1401":2,"1402":1,"1403":2,"1404":1,"1405":4,"1406":5,"1410":2,"1411":3,"1412":4,"1414":3,"1416":5,"1418":1,"1423":1,"1430":5,"1431":4,"1432":1,"1438":1,"1439":1,"1440":1,"1441":2,"1442":2,"1445":4,"1446":5,"1447":2,"1448":2,"1450":1,"1451":6,"1452":3,"1453":2,"1454":1,"1455":1,"1457":4,"1459":1,"1460":1,"1464":1,"1466":1,"1469":4,"1470":1,"1471":1,"1491":3,"1494":1,"1495":2,"1496":2,"1497":1,"1498":1,"1499":5,"1500":1,"1503":2,"1504":2,"1508":2,"1511":1,"1512":2,"1514":3,"1515":2,"1516":1,"1518":6,"1519":1,"1523":1,"1524":5,"1525":4,"1527":2,"1529":1,"1530":1,"1533":2,"1534":1,"1547":1,"1548":1,"1549":1,"1553":1,"1554":2,"1555":1,"1556":1,"1557":2,"1558":4,"1559":1,"1562":2,"1570":3,"1573":8,"1576":4,"1577":6,"1578":1,"1582":1,"1589":1,"1594":1,"1605":1,"1622":2,"1624":1,"1630":3,"1633":1,"1636":1,"1637":2,"1642":1,"1655":1,"1661":1,"1662":3,"1666":1,"1670":5,"1675":4,"1676":1,"1677":2,"1683":1,"1684":2,"1685":1,"1699":1,"1702":1,"1705":1,"1708":1,"1711":1,"1714":1,"1715":2,"1717":2,"1719":2,"1720":1,"1721":1,"1722":2,"1724":2,"1725":5,"1726":2,"1728":1,"1729":4,"1730":1,"1731":1,"1733":1,"1791":2,"1792":1,"1794":1,"1802":2,"1803":2,"1804":4,"1805":1,"1806":2,"1807":2,"1808":1,"1809":1,"1813":3,"1814":1,"1815":3,"1816":1,"1817":6,"1819":5,"1820":14,"1821":7,"1822":8,"1824":2,"1827":1,"1829":1,"1853":3,"1855":1,"1856":4,"1857":8,"1859":5,"1860":2,"1861":3,"1863":7,"1867":1,"1868":3,"1869":1,"1870":4,"1872":7,"1873":3,"1874":4,"1876":1,"1881":1,"1883":2,"1884":1,"1885":2,"1887":1,"1888":1,"1890":1,"1891":2,"1893":2,"1894":7,"1900":1,"1901":2,"1902":3,"1905":4,"1906":3,"1907":2,"1908":3,"1911":1,"1912":1,"1915":4,"1918":1,"1920":1,"1921":5,"1923":2,"1929":2,"1932":2,"1933":2,"1934":6,"1935":1,"1936":1,"1937":1,"1939":2,"1940":3,"1942":1,"1943":1,"1945":2,"1946":5,"1947":3,"1948":3,"1949":1,"1950":1,"1952":4,"1954":1,"1955":1,"1957":1,"1958":5,"1959":2,"2031":1,"2032":6,"2034":2,"2035":1,"2036":2,"2038":7,"2040":7,"2041":2,"2042":1,"2044":3,"2047":2,"2054":12,"2063":2,"2067":1,"2070":1,"2071":1,"2072":1,"2073":1,"2075":5,"2085":1,"2087":1,"2100":1,"2101":1,"2105":1,"2106":2,"2108":1,"2114":3,"2117":1,"2118":6,"2120":1,"2122":1,"2126":1,"2128":5,"2129":5,"2130":5,"2131":6,"2132":1,"2134":1,"2138":1,"2139":3,"2141":4,"2142":4,"2143":5,"2144":1,"2145":1,"2147":1,"2148":2,"2149":3,"2150":5,"2152":1,"2153":1,"2154":2,"2155":1,"2156":1,"2161":7,"2162":3,"2164":3,"2165":1,"2168":1,"2169":14,"2170":6,"2171":7,"2172":2,"2174":4,"2178":1,"2179":1,"2181":4,"2182":3,"2183":6,"2203":2,"2206":1,"2209":1,"2223":1,"2225":2,"2226":3,"2228":2,"2229":3,"2230":2,"2231":2,"2232":1,"2233":2,"2234":2,"2235":1,"2236":1,"2237":3,"2238":5,"2240":2,"2241":1,"2242":2,"2243":2,"2244":4,"2245":5,"2247":5,"2249":5,"2250":2,"2252":5,"2254":1,"2255":1,"2258":4,"2259":7,"2261":1,"2262":14,"2263":8,"2264":1,"2268":2,"2269":2,"2270":1,"2272":3,"2273":2,"2274":1,"2275":1,"2277":2,"2278":1,"2279":2,"2280":2,"2282":1,"2284":2,"2286":1,"2287":2,"2288":2,"2289":2,"2290":3,"2291":2,"2292":1,"2293":1,"2294":1,"2295":2,"2298":1,"2299":4,"2300":4,"2301":1,"2302":4,"2303":1,"2304":2,"2305":1,"2306":3,"2307":1,"2310":2,"2311":2,"2315":1,"2317":1,"2318":1,"2319":1,"2327":1,"2328":2,"2335":2,"2339":1,"2341":1,"2342":1,"2344":3,"2345":3,"2346":1,"2347":6,"2348":3,"2349":2,"2350":1,"2353":1,"2355":2,"2356":1,"2367":1,"2370":2,"2379":2,"2385":1,"2393":1,"2395":1,"2396":2,"2397":1,"2401":1,"2402":2,"2404":1,"2405":5,"2406":2,"2408":1,"2409":3,"2410":1,"2411":4,"2413":1,"2414":3,"2416":1,"2417":4,"2418":3,"2420":1,"2421":1,"2424":1,"2425":2,"2427":4,"2428":2,"2429":2,"2431":1,"2432":1,"2435":1,"2436":1,"2437":1,"2439":1,"2441":1,"2442":1,"2445":1,"2446":2,"2450":2,"2451":2,"2452":2,"2454":2,"2455":1,"2456":1,"2457":1,"2459":1,"2460":1,"2462":1,"2463":1,"2467":1,"2468":1,"2469":4,"2470":1,"2477":2,"2478":1,"2479":2,"2480":1,"2485":1,"2486":1,"2490":4,"2491":5,"2492":6,"2497":4,"2501":1,"2502":1,"2503":3,"2506":9,"2508":2,"2509":1,"2510":2,"2512":1,"2513":11,"2514":3,"2515":1,"2516":2,"2517":2,"2518":1,"2519":2,"2522":2,"2523":2,"2524":6,"2525":1,"2526":2,"2527":1,"2528":1,"2530":2,"2531":1,"2533":4,"2534":1,"2535":1,"2539":2,"2541":1,"2542":1,"2543":1,"2545":1,"2546":3,"2548":3,"2549":2,"2550":4,"2551":1,"2552":2,"2553":7,"2555":2,"2556":1,"2560":1,"2561":3,"2562":3,"2564":6,"2565":4,"2566":20,"2567":5,"2568":4,"2569":3,"2570":2,"2571":2,"2572":1,"2573":3,"2574":2,"2575":3,"2576":26,"2577":19,"2578":1,"2584":2,"2585":3,"2586":1,"2587":3,"2588":1,"2589":1,"2592":3,"2593":3,"2594":1,"2595":1,"2596":2,"2597":3,"2600":2,"2607":2,"2612":1,"2614":5,"2615":3,"2616":1,"2617":1,"2619":1,"2620":1,"2624":1,"2625":1,"2626":1,"2628":1,"2629":1,"2639":1,"2640":2,"2646":1,"2648":1,"2656":1,"2657":2,"2658":1,"2659":1,"2664":1,"2665":1,"2666":1,"2667":1,"2668":1,"2671":2,"2672":3,"2674":2,"2676":1,"2683":1,"2686":4,"2688":2,"2689":1,"2693":1,"2695":2,"2696":1,"2697":3,"2699":3,"2701":1,"2702":2,"2704":1,"2705":2,"2707":1,"2708":2,"2710":4,"2711":2,"2713":1,"2718":1,"2719":3,"2720":2,"2725":1,"2726":1,"2727":6,"2728":6,"2729":3,"2735":5,"2736":4,"2737":2,"2738":4,"2739":1,"2740":3,"2743":5,"2744":3,"2745":4,"2746":2,"2751":2,"2753":9,"2754":2,"2755":1,"2756":2,"2757":3}}],["oxidisation",{"2":{"2272":1}}],["oar",{"2":{"2147":1}}],["oops",{"2":{"1287":1}}],["oob",{"2":{"176":1,"222":2}}],["oemxx",{"2":{"628":2}}],["oj",{"2":{"616":1}}],["oven",{"2":{"523":1}}],["overcrowded",{"2":{"2307":1}}],["overhead",{"2":{"2129":1}}],["overheat",{"2":{"1573":1}}],["overhauls",{"2":{"352":1}}],["overhaul",{"0":{"157":1},"2":{"75":1,"94":1,"133":1,"134":1,"149":1,"160":1,"175":1,"176":2,"182":1,"266":1}}],["overlay",{"0":{"2408":1},"2":{"1863":4,"2042":1,"2402":2,"2406":1,"2408":1,"2443":1,"2444":1,"2445":1}}],["overlap",{"2":{"1510":1,"1528":1,"1808":4,"2042":1,"2567":1}}],["overlapping",{"0":{"1510":1,"1808":1},"2":{"98":1,"114":1,"236":1,"277":1,"1385":1,"1515":1,"1808":3,"2576":1}}],["overlook",{"2":{"473":1}}],["overwritable",{"2":{"1900":1}}],["overwritten",{"2":{"1814":1,"2235":1,"2350":1,"2522":1,"2524":1,"2541":1}}],["overwrites",{"2":{"2126":1}}],["overwrite",{"2":{"405":3,"1300":2,"1445":1,"1743":1,"1745":1,"1970":1,"1972":1,"2327":1,"2583":1,"2706":1}}],["overwriting",{"2":{"70":9,"1900":1,"1901":1}}],["overwhelmed",{"2":{"356":1}}],["overall",{"0":{"279":1},"1":{"280":1,"281":1,"282":1,"283":1,"284":1,"285":1,"286":1},"2":{"374":1,"484":1,"505":1,"657":1,"2033":1,"2573":1,"2718":1}}],["overnumpad",{"2":{"134":1}}],["overrride",{"2":{"703":1}}],["overrun",{"2":{"114":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"1189":1,"1192":1,"1207":1,"1209":1}}],["overridable",{"2":{"211":1,"1822":2,"2143":4}}],["overriding",{"0":{"1442":1,"2045":1},"1":{"1443":1},"2":{"99":1,"160":1,"191":1,"199":1,"277":1,"657":1,"689":2,"1445":1,"2042":1,"2405":1,"2671":1,"2749":1}}],["override",{"0":{"272":1,"1378":1,"1670":1},"2":{"50":1,"74":1,"90":2,"112":1,"114":1,"125":2,"134":1,"185":2,"188":1,"191":2,"199":1,"222":1,"272":7,"277":1,"377":1,"404":1,"500":1,"505":1,"506":1,"515":2,"567":1,"571":1,"580":4,"641":1,"683":1,"684":2,"685":2,"686":1,"689":1,"690":1,"691":1,"694":2,"702":1,"704":1,"705":1,"1132":1,"1133":1,"1177":1,"1198":1,"1398":1,"1416":1,"1446":1,"1560":2,"1568":4,"1655":2,"1657":5,"1658":2,"1659":2,"1660":1,"1661":1,"1662":1,"1663":4,"1665":19,"1666":7,"1668":3,"1669":3,"1670":17,"1671":4,"1672":2,"1673":4,"1674":2,"1675":2,"1676":1,"1716":1,"1822":1,"1933":1,"2045":1,"2076":1,"2109":1,"2143":1,"2261":2,"2477":1,"2523":1,"2524":2,"2525":1,"2567":1,"2576":2,"2673":1,"2711":1,"2737":1,"2749":1}}],["overridescontains",{"2":{"1657":1}}],["overrides",{"0":{"99":1,"580":1,"1309":1,"1655":1,"1656":1,"1658":1},"1":{"1656":1,"1657":1,"1658":1,"1659":2,"1660":2,"1661":2,"1662":2,"1663":1,"1664":1,"1665":1,"1666":1,"1667":1,"1668":1,"1669":1,"1670":1,"1671":1,"1672":1,"1673":1,"1674":1,"1675":1,"1676":1,"1677":1},"2":{"4":1,"50":1,"99":4,"114":2,"125":2,"160":1,"176":1,"185":2,"199":1,"222":1,"272":5,"502":2,"505":1,"511":1,"1303":1,"1309":1,"1655":2,"1657":2,"1658":1,"1663":2,"1665":4,"1666":2,"1668":1,"1669":3,"1670":1,"1672":1,"1673":2,"1675":2,"1676":4,"1677":2,"1876":1,"1894":1,"2042":3,"2261":1,"2523":1,"2558":1,"2724":1}}],["overridden",{"2":{"50":1,"498":1,"689":1,"707":1,"726":1,"1376":1,"1872":1,"1876":2,"2196":1,"2197":1,"2198":1}}],["overview",{"0":{"304":1,"312":1,"363":1,"428":1,"518":1,"552":1,"607":1,"1312":1,"2115":1,"2354":1,"2400":1,"2418":1},"1":{"313":1,"364":1,"365":1,"366":1,"367":1,"429":1,"1313":1,"1314":1,"2355":1,"2356":1,"2357":1,"2358":1,"2359":1,"2360":1,"2361":1,"2362":1,"2363":1,"2364":1,"2365":1,"2366":1,"2367":1,"2368":1,"2369":1,"2370":1,"2371":1,"2372":1,"2373":1,"2374":1,"2375":1,"2376":1,"2377":1,"2378":1,"2379":1,"2380":1,"2381":1,"2382":1,"2383":1,"2384":1,"2401":1,"2402":1,"2403":1,"2404":1,"2405":1,"2406":1,"2407":1,"2408":1},"2":{"112":1,"492":1,"550":1,"1266":1,"1334":1,"1345":1,"2172":1,"2259":1,"2409":1,"2535":1,"2555":1,"2725":1}}],["over",{"2":{"99":1,"114":2,"124":1,"140":1,"191":1,"243":1,"302":1,"317":1,"319":1,"320":1,"381":1,"434":1,"479":1,"501":1,"502":1,"516":1,"540":1,"566":1,"684":1,"685":1,"694":1,"1125":2,"1128":2,"1212":1,"1216":1,"1294":1,"1326":1,"1329":1,"1336":1,"1360":2,"1492":1,"1530":1,"1574":1,"1811":1,"1813":1,"1815":2,"1821":1,"1912":1,"1918":1,"1951":1,"2031":1,"2032":1,"2114":1,"2136":1,"2137":1,"2139":2,"2146":2,"2147":1,"2162":1,"2252":1,"2263":2,"2264":1,"2272":1,"2273":1,"2279":1,"2293":1,"2312":1,"2315":1,"2327":1,"2349":1,"2441":1,"2490":2,"2492":1,"2497":1,"2503":1,"2546":1,"2560":1,"2627":1,"2660":1,"2724":1,"2735":1,"2744":1}}],["overflows",{"2":{"114":1}}],["overflow",{"0":{"11":1},"2":{"11":3,"114":1,"149":1,"236":1}}],["ohm",{"2":{"818":2,"821":18,"850":2,"854":18,"885":2,"888":18,"919":2,"922":18,"953":2,"956":18,"987":2,"990":18,"1021":2,"1024":18,"1055":2,"1058":18,"1089":2,"1092":18}}],["oh",{"0":{"442":1},"1":{"443":1,"444":1,"445":1,"446":1,"447":1}}],["okay",{"2":{"1260":1,"1804":1,"2566":1}}],["ok",{"2":{"331":1,"396":2,"458":1,"472":1,"473":1,"479":1,"482":1,"554":1,"698":1,"1287":2,"1363":2,"1553":1,"2347":1,"2425":4,"2469":4,"2752":1}}],["oq",{"2":{"266":1}}],["o",{"2":{"222":1,"266":1,"277":2,"313":1,"379":1,"380":1,"388":2,"404":1,"433":2,"441":1,"513":2,"530":2,"563":1,"1221":1,"1932":1,"1934":1,"2148":1,"2153":4,"2268":1,"2269":2,"2275":2,"2284":1,"2355":3,"2386":3,"2407":1,"2528":1,"2575":8}}],["odd",{"2":{"1907":1,"2311":1}}],["odelia",{"2":{"211":1}}],["odin",{"2":{"191":1,"211":2}}],["og60",{"2":{"236":1}}],["og",{"2":{"211":1}}],["ogr",{"2":{"211":1}}],["ogurec",{"2":{"143":2}}],["owl8",{"2":{"143":2}}],["owners",{"2":{"2719":1}}],["owned",{"2":{"191":1}}],["owns",{"2":{"2581":1}}],["own",{"0":{"1250":1,"1330":1,"2476":1},"2":{"30":1,"33":1,"37":1,"43":1,"107":1,"113":1,"114":2,"134":1,"172":1,"228":1,"273":1,"318":1,"352":1,"453":1,"499":1,"556":1,"559":1,"563":1,"570":1,"602":1,"641":1,"692":1,"1278":1,"1304":1,"1330":2,"1376":1,"1384":1,"1393":2,"1398":2,"1457":1,"1469":1,"1511":1,"1560":1,"1715":1,"1872":1,"1876":1,"1921":2,"1941":2,"2102":2,"2162":1,"2177":1,"2181":1,"2183":1,"2228":1,"2229":1,"2230":1,"2243":1,"2263":2,"2282":1,"2311":1,"2318":1,"2346":1,"2397":1,"2409":1,"2422":1,"2427":1,"2428":1,"2441":1,"2446":1,"2470":1,"2475":1,"2477":1,"2491":1,"2524":1,"2525":1,"2526":1,"2564":3,"2566":2,"2568":1,"2571":1,"2574":1,"2585":1,"2592":2,"2615":1,"2627":1,"2710":1,"2728":1,"2739":1}}],["o3",{"2":{"114":1}}],["opinions",{"2":{"2750":1}}],["opmode",{"2":{"704":2}}],["opqr",{"2":{"266":1}}],["opcode",{"2":{"222":1}}],["opposed",{"2":{"630":1,"1303":1}}],["opposite",{"2":{"202":1,"1197":1,"1915":1,"2339":1}}],["opportune",{"2":{"263":1}}],["opportunity",{"2":{"203":1}}],["opus",{"2":{"159":2}}],["oper",{"2":{"2355":2,"2392":2}}],["operate",{"2":{"432":1,"1126":2,"1238":1,"1577":1,"2347":1}}],["operates",{"2":{"82":1,"428":1,"641":1,"1219":1,"1804":1,"2122":1,"2584":1,"2711":1}}],["operational",{"2":{"684":1}}],["operation",{"0":{"698":1,"2051":1},"2":{"630":1,"641":1,"1125":1,"1128":1,"1130":1,"1134":1,"1271":1,"1863":1,"2474":1,"2515":1,"2543":2,"2577":1}}],["operations",{"0":{"348":1,"424":1},"1":{"349":1,"350":1},"2":{"266":1,"424":1,"432":1,"698":1,"1821":1,"2432":1,"2573":1,"2576":11,"2577":4,"2581":1}}],["operating",{"0":{"367":1,"2317":1,"2509":1},"2":{"176":1,"367":1,"403":1,"1273":1,"1802":1,"1832":1,"2146":1,"2177":1,"2250":1,"2262":2,"2316":1,"2317":1,"2320":1,"2431":1,"2556":1,"2710":1}}],["operators",{"2":{"1300":2}}],["operator",{"2":{"222":1,"432":1,"470":1,"701":1,"1300":1}}],["opening",{"0":{"616":1},"2":{"453":2,"462":1,"554":1,"558":1,"560":1,"1353":1,"1921":1,"2079":1,"2102":1,"2452":1,"2490":1,"2564":1}}],["opensource",{"2":{"551":1,"1279":2}}],["opens",{"2":{"373":1,"453":2,"2148":1,"2460":1,"2615":1}}],["openocd",{"0":{"328":1},"2":{"322":1,"328":1,"331":1,"335":3,"2351":3,"2353":1}}],["opendeck",{"2":{"277":1}}],["opendrain",{"2":{"134":1,"707":2}}],["opened",{"2":{"275":1,"291":1,"1923":1,"2508":1,"2569":1}}],["open",{"0":{"1225":1,"2423":1},"2":{"149":1,"243":1,"265":1,"322":1,"324":1,"331":3,"352":1,"389":1,"390":1,"391":1,"401":1,"447":1,"485":1,"553":1,"554":1,"559":1,"560":2,"561":1,"585":1,"609":1,"613":1,"624":1,"627":1,"628":2,"696":2,"1126":1,"1225":2,"1260":2,"1261":2,"1263":1,"1264":1,"1300":1,"1830":1,"1921":1,"2103":3,"2104":3,"2107":1,"2144":2,"2263":1,"2277":1,"2279":1,"2286":1,"2311":1,"2322":1,"2326":1,"2347":1,"2349":1,"2355":3,"2382":3,"2393":3,"2398":2,"2404":1,"2411":2,"2420":1,"2423":1,"2437":1,"2452":3,"2454":1,"2460":2,"2468":4,"2473":1,"2474":1,"2479":1,"2480":1,"2492":1,"2498":1,"2502":1,"2503":1,"2508":1,"2511":2,"2512":2,"2553":1,"2566":1,"2578":1,"2670":2,"2709":3,"2716":1,"2728":1}}],["opt",{"0":{"273":1},"2":{"124":3,"199":1,"273":1,"277":1,"514":1,"641":2,"1384":2,"1385":1,"2245":1,"2247":1,"2300":2,"2374":1,"2410":1,"2513":1}}],["optimal",{"2":{"1430":1,"1576":1,"1577":1}}],["optimisation",{"2":{"222":1,"236":1}}],["optimisations",{"2":{"149":1,"2513":2}}],["optimise",{"2":{"191":1}}],["optimized",{"2":{"191":1}}],["optimize",{"2":{"114":1,"134":1,"149":1,"236":1}}],["optimizations",{"0":{"50":1,"64":1,"75":1,"94":1,"214":1,"215":1}}],["optimization",{"2":{"10":2,"50":1,"513":1,"2674":1,"2702":1}}],["optical",{"2":{"114":1,"149":3,"176":1,"199":1,"1856":1,"1870":1}}],["option+right",{"2":{"2183":1}}],["option+left",{"2":{"2183":1}}],["option=com",{"2":{"1242":1}}],["optional",{"0":{"1579":1,"2421":1,"2476":1},"2":{"262":1,"282":1,"349":1,"365":1,"366":1,"370":1,"371":1,"453":2,"454":1,"510":1,"607":1,"610":4,"1376":5,"1464":3,"1518":1,"1676":1,"1730":1,"1856":4,"1857":9,"1859":4,"1860":17,"1861":3,"1863":10,"1864":5,"1865":3,"1866":2,"1868":4,"1870":7,"1872":14,"1873":5,"1889":5,"1954":1,"2032":1,"2231":1,"2238":1,"2266":1,"2457":1,"2466":1,"2501":1,"2506":1,"2510":4,"2513":2,"2539":1,"2575":1,"2585":4,"2592":3,"2723":1}}],["optionally",{"2":{"211":1,"365":1,"366":1,"1134":1,"1380":1,"1387":1,"1390":1,"1392":1,"1558":1,"1908":1,"1930":1,"1932":1,"2066":1,"2150":1,"2161":1,"2181":1,"2230":1,"2240":1,"2513":1,"2570":1}}],["options",{"0":{"425":1,"426":1,"502":1,"507":1,"508":1,"511":1,"513":1,"514":1,"515":1,"1308":1,"1379":1,"1493":1,"1570":1,"1662":2,"1715":1,"1730":1,"1829":1,"1889":1,"1954":1,"2128":1,"2129":1,"2131":1,"2263":1,"2264":1,"2561":1,"2562":1,"2726":1},"1":{"509":1,"510":1,"511":1,"2727":1,"2728":1,"2729":1,"2730":1,"2731":1,"2732":1,"2733":1,"2734":1,"2735":1,"2736":1,"2737":1,"2738":1,"2739":1,"2740":1,"2741":1},"2":{"83":1,"109":1,"114":2,"128":1,"134":1,"138":1,"149":1,"152":1,"194":1,"198":1,"206":1,"222":1,"234":1,"236":2,"249":1,"335":1,"374":1,"393":1,"394":1,"395":1,"396":1,"401":1,"402":1,"403":1,"411":1,"448":1,"498":1,"500":1,"503":1,"504":1,"508":1,"514":1,"515":1,"607":1,"609":2,"626":1,"641":2,"689":1,"690":1,"691":1,"1127":1,"1130":1,"1135":1,"1240":1,"1280":1,"1287":2,"1298":2,"1308":1,"1349":2,"1379":1,"1492":1,"1496":1,"1499":1,"1515":1,"1518":1,"1520":1,"1554":1,"1556":1,"1568":1,"1570":1,"1658":1,"1662":3,"1665":5,"1668":1,"1670":2,"1671":3,"1672":1,"1714":2,"1715":1,"1716":1,"1802":1,"1807":1,"1817":1,"1820":1,"1853":2,"1873":3,"1888":1,"1950":1,"1958":1,"1959":1,"2032":1,"2038":1,"2044":1,"2106":1,"2126":1,"2127":1,"2128":1,"2129":1,"2148":1,"2161":1,"2259":2,"2260":2,"2262":4,"2264":2,"2274":1,"2299":2,"2300":1,"2304":1,"2398":1,"2411":1,"2416":1,"2468":1,"2506":3,"2524":1,"2539":1,"2555":3,"2561":2,"2562":2,"2566":3,"2574":1,"2575":2,"2647":1,"2701":1,"2703":1,"2705":1,"2725":1,"2726":2,"2749":1,"2753":1}}],["option",{"0":{"608":1,"1671":1},"1":{"609":1,"610":1,"611":1,"612":1,"613":1,"614":1},"2":{"14":1,"32":1,"50":1,"74":1,"75":1,"87":1,"103":1,"114":3,"126":1,"132":1,"134":2,"176":1,"191":1,"194":1,"195":1,"211":2,"222":1,"234":1,"236":1,"246":1,"249":2,"266":1,"271":1,"454":1,"505":1,"609":2,"614":1,"1219":1,"1230":1,"1281":1,"1288":1,"1330":1,"1380":1,"1385":1,"1393":1,"1405":1,"1406":1,"1499":1,"1503":2,"1560":1,"1580":1,"1662":1,"1665":5,"1668":1,"1670":1,"1671":6,"1673":1,"1674":2,"1814":1,"1871":1,"1873":4,"1948":1,"2034":1,"2118":1,"2126":2,"2127":3,"2129":1,"2131":5,"2133":1,"2149":1,"2161":5,"2183":1,"2262":4,"2274":1,"2300":8,"2347":1,"2355":2,"2390":2,"2421":1,"2469":1,"2506":4,"2548":1,"2560":1,"2570":1,"2574":1,"2577":2,"2610":1,"2702":1,"2735":5,"2736":3}}],["ould",{"2":{"1943":1}}],["ou",{"2":{"1494":3,"2361":3}}],["ouput",{"2":{"1440":3}}],["our",{"2":{"76":1,"114":2,"130":1,"164":1,"167":1,"323":1,"331":1,"334":1,"352":1,"430":1,"432":1,"433":1,"445":1,"446":2,"447":1,"453":1,"455":3,"457":1,"462":1,"470":2,"479":1,"483":2,"485":1,"530":1,"533":1,"555":2,"557":2,"560":1,"562":3,"572":1,"576":1,"606":1,"624":1,"641":1,"1258":1,"1260":1,"1344":1,"1359":2,"1452":1,"2170":1,"2171":3,"2274":1,"2292":1,"2311":2,"2326":2,"2405":4,"2408":2,"2417":1,"2474":1,"2479":1,"2569":1,"2614":6,"2615":4,"2620":1,"2667":1,"2713":2,"2714":1,"2746":4,"2747":2,"2748":3}}],["outlines",{"2":{"2546":1}}],["outlined",{"2":{"2129":1,"2548":1}}],["outs",{"2":{"2541":1}}],["outside",{"2":{"22":1,"182":1,"434":1,"460":1,"1129":1,"1303":1,"1344":1,"1719":1,"1866":1,"1876":1,"2126":1,"2441":1,"2738":1,"2746":1}}],["outright",{"2":{"2502":1,"2516":1,"2705":1}}],["outbound",{"2":{"2130":1}}],["outer",{"2":{"1684":1,"1865":1,"2033":1,"2400":1,"2686":1}}],["out3",{"2":{"734":2,"760":2}}],["out2",{"2":{"734":2,"760":2}}],["out1",{"2":{"734":3,"760":3}}],["outwardly",{"2":{"198":1}}],["outdated",{"2":{"149":1,"352":1,"606":1,"2719":1}}],["outputted",{"2":{"2566":1}}],["outputting",{"2":{"432":1,"434":1,"554":1}}],["output=",{"2":{"222":1}}],["output+keymap",{"2":{"222":1}}],["outputs",{"2":{"93":1,"580":1,"1230":1,"1387":1,"1494":1,"2262":1,"2273":1,"2707":2}}],["outputselect",{"2":{"50":1,"149":1}}],["output",{"0":{"2439":1},"2":{"10":2,"65":1,"75":1,"92":1,"99":1,"114":5,"119":1,"149":2,"176":1,"188":1,"191":4,"199":3,"203":1,"211":2,"222":1,"236":1,"243":3,"249":1,"316":1,"349":1,"379":1,"380":1,"388":1,"404":1,"432":1,"433":1,"435":2,"441":2,"484":1,"502":1,"506":2,"576":6,"580":1,"586":1,"628":1,"661":3,"669":1,"672":3,"684":1,"696":11,"734":1,"737":4,"760":1,"763":4,"790":1,"793":4,"824":1,"827":4,"857":1,"860":4,"891":1,"894":4,"925":1,"928":4,"959":1,"962":4,"993":1,"996":4,"1027":1,"1030":4,"1061":1,"1064":4,"1095":1,"1098":4,"1138":1,"1148":1,"1151":4,"1225":1,"1230":3,"1245":3,"1252":1,"1253":1,"1255":1,"1385":3,"1390":1,"1394":1,"1404":1,"1440":2,"1461":1,"1462":1,"1466":1,"1494":3,"1527":1,"1529":1,"1562":1,"1564":2,"1565":2,"1567":1,"1634":1,"1635":1,"1817":1,"1822":1,"1856":1,"1884":1,"1915":2,"2059":1,"2060":1,"2125":1,"2141":1,"2143":1,"2150":1,"2181":2,"2229":1,"2231":1,"2238":1,"2262":5,"2263":1,"2273":1,"2347":1,"2353":1,"2361":3,"2422":1,"2425":2,"2439":1,"2453":1,"2469":1,"2474":1,"2519":1,"2528":1,"2574":3,"2575":23,"2615":1,"2674":1,"2693":1,"2728":1,"2730":1,"2734":1,"2756":1}}],["out",{"0":{"123":1,"1697":1,"2455":1,"2475":1,"2701":1},"1":{"2476":1,"2477":1,"2702":1,"2703":1,"2704":1,"2705":1,"2706":1,"2707":1,"2708":1},"2":{"6":1,"10":1,"21":1,"49":1,"50":1,"93":1,"113":1,"114":3,"119":1,"124":1,"133":2,"134":5,"149":2,"160":1,"176":1,"191":4,"194":1,"199":4,"228":1,"236":1,"249":1,"278":1,"321":1,"335":1,"356":1,"358":1,"367":1,"373":1,"401":1,"405":1,"434":1,"440":2,"462":1,"468":1,"482":1,"505":4,"510":1,"527":1,"529":1,"557":1,"561":2,"588":2,"606":2,"617":1,"654":1,"659":1,"681":1,"684":1,"693":1,"1138":1,"1243":1,"1287":2,"1326":1,"1341":3,"1356":1,"1359":2,"1363":2,"1385":1,"1387":1,"1397":1,"1504":1,"1527":1,"1684":1,"1728":13,"1729":1,"1817":4,"1822":3,"1832":1,"1860":1,"1869":1,"1876":1,"1884":1,"1949":20,"1952":1,"1954":1,"2036":1,"2048":1,"2061":1,"2078":1,"2079":1,"2081":1,"2082":1,"2083":1,"2084":1,"2085":1,"2086":1,"2087":1,"2088":1,"2089":1,"2091":1,"2093":1,"2095":1,"2097":1,"2118":1,"2130":3,"2131":1,"2132":1,"2133":1,"2134":1,"2143":3,"2169":1,"2172":1,"2255":4,"2262":3,"2274":1,"2279":1,"2303":1,"2311":1,"2325":1,"2326":1,"2328":1,"2355":2,"2392":2,"2417":1,"2423":1,"2428":1,"2455":2,"2472":1,"2477":1,"2480":3,"2510":1,"2534":1,"2541":1,"2549":1,"2564":2,"2566":3,"2574":1,"2575":2,"2576":1,"2708":2,"2709":2,"2723":1,"2744":1,"2745":1,"2753":3,"2757":1}}],["otype",{"2":{"707":2}}],["otaku",{"2":{"143":4}}],["otg2",{"2":{"2548":1}}],["otg1",{"2":{"176":1,"2548":1}}],["otg",{"2":{"65":1,"191":1}}],["others",{"2":{"114":1,"134":1,"149":1,"160":1,"176":1,"191":1,"199":1,"211":1,"222":1,"236":1,"263":1,"277":1,"474":1,"559":1,"852":1,"1023":1,"1057":1,"1128":1,"1226":2,"1298":1,"1339":1,"1380":1,"1384":1,"1393":1,"1403":1,"1416":1,"1466":1,"2031":1,"2260":1,"2276":1,"2473":1,"2544":1}}],["other",{"0":{"367":1,"511":1,"1277":1,"1816":1,"2140":1,"2281":1,"2416":1,"2509":1,"2736":1},"2":{"30":1,"33":1,"50":1,"98":1,"114":2,"128":1,"134":2,"142":1,"152":2,"153":1,"163":1,"173":1,"174":1,"175":1,"176":2,"191":2,"194":8,"199":1,"201":2,"206":2,"210":1,"213":1,"220":1,"229":1,"234":1,"244":1,"278":2,"317":1,"331":2,"334":1,"341":1,"367":1,"430":1,"446":1,"448":1,"453":1,"470":1,"481":1,"485":1,"498":1,"501":1,"503":1,"505":5,"541":1,"545":1,"548":1,"560":1,"572":1,"586":1,"597":1,"598":1,"606":1,"609":2,"615":1,"628":1,"656":1,"663":1,"681":1,"701":1,"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"1132":1,"1133":1,"1142":1,"1177":1,"1190":1,"1193":1,"1223":1,"1227":1,"1236":2,"1240":1,"1242":2,"1255":1,"1265":2,"1271":1,"1300":6,"1303":1,"1330":1,"1332":2,"1335":2,"1338":2,"1340":2,"1341":3,"1343":1,"1344":1,"1353":1,"1355":1,"1359":5,"1361":1,"1383":2,"1385":1,"1387":1,"1390":1,"1391":1,"1398":1,"1401":1,"1412":2,"1418":1,"1441":1,"1442":1,"1445":1,"1446":2,"1459":2,"1463":1,"1499":3,"1524":1,"1525":2,"1551":1,"1554":1,"1563":1,"1596":1,"1666":1,"1668":1,"1671":1,"1673":1,"1674":1,"1676":1,"1686":1,"1791":1,"1803":1,"1820":1,"1853":2,"1897":1,"1899":2,"1932":1,"1935":1,"1936":1,"1937":1,"1939":1,"1940":1,"1941":1,"1943":1,"2042":2,"2044":1,"2061":1,"2063":1,"2106":2,"2107":1,"2111":1,"2114":1,"2128":1,"2145":1,"2169":1,"2170":1,"2171":1,"2182":1,"2183":1,"2226":1,"2262":1,"2263":2,"2264":1,"2268":1,"2273":1,"2279":1,"2284":1,"2292":1,"2299":1,"2301":1,"2302":1,"2311":2,"2341":1,"2348":1,"2350":1,"2367":1,"2396":1,"2402":3,"2403":1,"2405":1,"2410":1,"2427":1,"2477":1,"2490":1,"2492":2,"2503":1,"2510":1,"2516":1,"2518":1,"2529":1,"2539":1,"2541":1,"2550":1,"2564":3,"2566":2,"2567":5,"2571":1,"2576":10,"2577":1,"2603":1,"2605":1,"2637":1,"2645":1,"2657":1,"2672":1,"2674":2,"2709":1,"2711":1,"2718":1,"2719":2,"2720":1,"2729":6,"2731":2,"2732":3,"2733":2,"2735":3,"2736":7,"2739":1,"2741":1,"2743":4,"2754":1}}],["otherwise",{"2":{"28":1,"31":1,"209":1,"327":1,"349":1,"473":1,"567":1,"568":1,"593":1,"594":1,"597":1,"614":1,"627":1,"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"1190":1,"1193":1,"1341":1,"1471":1,"1525":1,"1553":1,"1621":1,"1670":1,"1743":1,"1745":1,"1933":1,"1949":1,"1970":1,"1972":1,"2045":1,"2131":1,"2152":1,"2161":2,"2182":1,"2237":1,"2240":1,"2242":1,"2263":1,"2353":1,"2450":3,"2596":1,"2603":1,"2737":1}}],["omit",{"2":{"628":1,"689":2,"1530":1,"2347":1}}],["omitted",{"2":{"468":1,"502":2,"511":1,"585":1,"2252":1}}],["omkbd",{"2":{"143":12,"149":2}}],["omrontkl",{"2":{"57":2}}],["omnikey",{"2":{"37":2,"159":2,"160":1}}],["oc7",{"2":{"1793":1,"2371":1}}],["oc6",{"2":{"1793":1,"2371":1}}],["oc5",{"2":{"1793":1,"2371":1}}],["oc4",{"2":{"1793":1,"2371":1}}],["oc3",{"2":{"1793":1,"2371":1}}],["oc2",{"2":{"1793":1,"1794":1,"2371":1}}],["oc1",{"2":{"1793":1,"2371":1}}],["oc0",{"2":{"1793":1,"2371":1}}],["ocn1",{"2":{"1793":1,"2371":1}}],["ocn2",{"2":{"1793":1,"2371":1}}],["ocean",{"2":{"519":1,"527":1}}],["oceanographer",{"2":{"211":1}}],["occupied",{"2":{"1359":1}}],["occupy",{"2":{"1177":1}}],["occupying",{"2":{"701":1}}],["occurrence",{"2":{"2728":1}}],["occurred",{"2":{"315":1,"588":2,"1326":1,"1329":4}}],["occured",{"2":{"588":1}}],["occurs",{"2":{"94":1,"598":1,"689":1,"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"821":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1190":1,"1193":1,"1330":1,"2128":2,"2131":1,"2584":1}}],["occur",{"2":{"11":1,"49":1,"556":1,"580":2,"1572":1,"1876":1,"1878":1,"2129":1,"2130":1,"2441":1,"2539":1,"2577":1}}],["occasionally",{"2":{"1276":1,"1442":1}}],["occasional",{"2":{"597":1}}],["occasion",{"2":{"352":1,"1416":1}}],["ocd",{"2":{"191":1}}],["octet",{"2":{"2600":8}}],["octets",{"2":{"2593":1,"2599":1,"2600":3}}],["octd",{"2":{"1787":1,"1793":1,"2371":1}}],["octu",{"2":{"1787":1,"1793":1,"2371":1}}],["octave",{"2":{"1403":1,"1787":1,"1793":96,"1794":1,"2371":96}}],["octaves",{"2":{"1403":1}}],["octagon",{"2":{"249":1,"266":1}}],["oct",{"2":{"55":2,"340":2}}],["oscillator",{"2":{"1817":1}}],["oses",{"2":{"1673":1,"1674":1,"1675":1}}],["osdn",{"2":{"358":1}}],["osx",{"0":{"1279":1,"1280":1,"1283":1},"2":{"188":2,"191":2,"1279":2,"1280":2,"1281":1,"1283":1,"1355":5}}],["os",{"0":{"1297":1,"1565":1,"1824":1,"1827":1},"1":{"1825":1,"1826":1,"1827":1,"1828":1,"1829":1,"1830":1,"1831":1},"2":{"65":1,"160":2,"199":1,"211":1,"249":3,"324":1,"358":1,"367":2,"1254":1,"1362":1,"1430":1,"1499":2,"1533":1,"1565":1,"1670":1,"1675":1,"1824":4,"1825":10,"1826":14,"1827":1,"1828":1,"1829":3,"1830":4,"2076":1,"2156":1,"2176":1,"2183":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":2,"2245":2,"2247":2,"2249":2,"2263":1,"2311":1,"2313":1,"2320":4,"2379":3,"2383":1,"2393":1,"2429":1,"2457":1,"2490":3,"2523":1,"2666":1,"2697":2,"2710":1}}],["osms",{"2":{"211":1}}],["osm",{"2":{"38":1,"236":1,"1385":3,"1500":1,"1633":1,"2379":1,"2410":1,"2490":5,"2491":1}}],["osl",{"2":{"38":1,"199":1,"236":1,"1335":1,"1886":1,"2367":1,"2379":1,"2490":2,"2491":1}}],["olkb",{"0":{"2602":1,"2715":1},"1":{"2603":1,"2604":1,"2605":1,"2606":1},"2":{"551":1,"624":3,"2172":1,"2230":2,"2280":1,"2326":1,"2715":1}}],["olly",{"2":{"211":1,"249":2}}],["oledunder",{"2":{"55":1}}],["oledback",{"2":{"55":1}}],["oleds",{"2":{"31":1,"34":1,"114":1,"153":1,"229":1,"230":1,"232":1,"248":1,"2576":1,"2703":1}}],["oled",{"0":{"33":1,"125":1,"210":1,"220":1,"230":1,"232":1,"1810":1,"1813":1,"1820":1,"1822":1,"2287":1,"2707":1},"1":{"34":1,"1811":1,"1812":1,"1813":1,"1814":1,"1815":1,"1816":1,"1817":1,"1818":1,"1819":1,"1820":1,"1821":2,"1822":1,"1823":1},"2":{"30":1,"31":11,"33":2,"34":8,"49":1,"55":11,"62":1,"63":1,"92":2,"93":2,"114":4,"125":6,"128":2,"134":7,"153":1,"176":4,"191":3,"210":4,"211":2,"220":3,"221":2,"222":2,"230":4,"232":4,"236":3,"248":2,"249":2,"511":2,"700":1,"1175":1,"1448":2,"1811":2,"1812":1,"1813":15,"1814":5,"1815":6,"1816":15,"1817":28,"1818":2,"1819":10,"1820":29,"1821":12,"1822":77,"1823":17,"2129":6,"2280":1,"2284":1,"2287":2,"2566":1,"2573":5,"2576":1,"2697":2,"2707":5}}],["oldest",{"2":{"515":1}}],["older",{"2":{"157":1,"338":1,"1239":1,"1254":1,"1932":1,"2036":1,"2230":1,"2404":1,"2405":1,"2523":1}}],["old",{"0":{"220":1},"2":{"10":1,"22":1,"37":1,"38":1,"43":1,"46":1,"67":1,"86":1,"102":1,"122":1,"125":1,"134":1,"143":1,"149":2,"156":1,"157":1,"159":1,"168":1,"173":1,"174":1,"181":1,"182":2,"183":3,"185":1,"191":1,"194":1,"195":1,"197":1,"206":1,"207":1,"217":1,"219":1,"220":1,"221":6,"222":3,"226":1,"232":2,"234":1,"236":1,"241":1,"243":1,"244":1,"253":1,"262":1,"270":1,"271":1,"354":2,"453":1,"602":1,"1276":1,"1304":1,"1527":1,"1823":1,"1874":2,"1876":1,"2036":1,"2107":1,"2118":1,"2162":1,"2282":1,"2476":2,"2564":1,"2707":1}}],["obtain",{"2":{"1902":1}}],["obtaining",{"2":{"363":1}}],["objs",{"2":{"2262":1,"2299":1}}],["obj",{"2":{"614":2}}],["objects",{"2":{"374":1,"457":1,"474":2,"1356":2,"1357":1,"2255":8,"2615":1,"2684":1}}],["objective",{"2":{"323":1,"2236":1}}],["object",{"0":{"1357":1},"2":{"73":1,"236":1,"374":1,"396":1,"411":1,"430":2,"433":2,"474":1,"475":1,"479":1,"609":1,"611":1,"1357":1,"1921":1,"2262":2,"2577":2,"2615":7,"2616":2,"2750":1}}],["observe",{"2":{"557":1,"1435":1}}],["obsolete",{"0":{"2107":1},"2":{"3":1,"15":1}}],["obviously",{"2":{"1416":1,"1454":1,"2710":1}}],["obvious",{"2":{"249":3,"453":2,"455":2,"467":1,"560":1,"2305":1,"2311":1}}],["obliterated75",{"2":{"211":1}}],["obfuscate",{"2":{"199":1}}],["obosob",{"2":{"143":2,"149":2}}],["obdev",{"2":{"21":1,"1242":1}}],["onboard",{"2":{"592":1,"681":1,"683":1,"1221":1,"1222":1,"1223":1,"2032":2,"2061":1,"2518":1,"2530":1}}],["onto",{"2":{"459":1,"1258":1,"1287":1,"1445":1,"2270":1,"2274":1,"2277":1,"2329":1,"2333":1,"2342":1,"2349":1,"2718":1,"2728":1}}],["onyx",{"2":{"211":1}}],["online",{"2":{"182":1,"2417":1,"2427":1,"2714":1}}],["only=true",{"2":{"441":3}}],["only",{"0":{"450":1,"532":1,"2286":1,"2444":1},"2":{"4":1,"14":1,"69":1,"83":1,"87":1,"98":1,"103":2,"107":1,"114":1,"116":1,"120":1,"126":2,"134":1,"169":1,"174":1,"184":1,"191":2,"194":3,"201":1,"221":3,"222":1,"233":1,"236":2,"244":1,"266":1,"317":1,"335":1,"340":2,"341":1,"343":1,"344":2,"345":2,"347":2,"349":2,"350":2,"352":1,"354":1,"358":2,"359":1,"360":1,"375":3,"376":1,"400":2,"441":1,"454":1,"479":1,"496":1,"499":1,"505":1,"510":1,"511":2,"516":1,"580":1,"606":1,"617":1,"623":1,"630":1,"635":1,"636":1,"641":2,"655":1,"658":1,"659":1,"660":1,"661":1,"686":1,"692":1,"707":1,"734":1,"737":4,"741":1,"743":1,"745":1,"747":1,"749":1,"751":1,"760":1,"763":4,"768":1,"770":1,"772":1,"774":1,"776":1,"778":1,"790":1,"793":4,"800":1,"802":1,"804":1,"806":1,"808":1,"810":1,"824":1,"827":4,"832":1,"834":1,"836":1,"838":1,"840":1,"842":1,"850":1,"853":1,"857":1,"860":4,"867":1,"869":1,"871":1,"873":1,"875":1,"877":1,"885":1,"887":1,"891":1,"894":4,"901":1,"903":1,"905":1,"907":1,"909":1,"911":1,"919":1,"921":1,"925":1,"928":4,"935":1,"937":1,"939":1,"941":1,"943":1,"945":1,"953":1,"955":1,"959":1,"962":4,"969":1,"971":1,"973":1,"975":1,"977":1,"979":1,"993":1,"996":4,"1003":1,"1005":1,"1007":1,"1009":1,"1011":1,"1013":1,"1027":1,"1030":4,"1037":1,"1039":1,"1041":1,"1043":1,"1045":1,"1047":1,"1061":1,"1064":4,"1071":1,"1073":1,"1075":1,"1077":1,"1079":1,"1081":1,"1095":1,"1098":4,"1105":1,"1107":1,"1109":1,"1111":1,"1113":1,"1115":1,"1123":1,"1126":2,"1127":1,"1130":2,"1133":2,"1134":1,"1148":1,"1151":4,"1158":1,"1160":1,"1162":1,"1164":1,"1166":1,"1168":1,"1179":1,"1200":1,"1219":1,"1220":1,"1221":1,"1222":1,"1223":1,"1224":3,"1225":1,"1226":1,"1227":1,"1229":1,"1230":3,"1236":1,"1239":1,"1250":2,"1254":1,"1265":1,"1273":1,"1278":1,"1300":1,"1302":2,"1312":1,"1316":1,"1319":1,"1320":2,"1326":2,"1329":1,"1331":2,"1332":3,"1335":3,"1336":1,"1338":1,"1357":1,"1360":1,"1376":1,"1384":1,"1390":1,"1394":1,"1396":1,"1397":1,"1401":1,"1416":1,"1431":2,"1440":1,"1441":1,"1445":1,"1454":1,"1459":1,"1466":1,"1467":1,"1469":1,"1470":1,"1471":1,"1491":1,"1492":1,"1494":3,"1495":1,"1503":1,"1510":1,"1517":1,"1518":6,"1521":1,"1524":1,"1525":1,"1548":1,"1558":1,"1559":1,"1562":2,"1596":1,"1633":1,"1670":2,"1671":1,"1673":1,"1677":1,"1685":1,"1725":1,"1731":1,"1743":1,"1745":1,"1787":1,"1802":1,"1805":1,"1808":1,"1821":3,"1854":1,"1865":1,"1872":1,"1873":5,"1874":1,"1875":1,"1876":2,"1878":1,"1880":1,"1883":1,"1887":2,"1900":1,"1908":1,"1938":1,"1946":1,"1948":1,"1955":1,"1958":1,"1970":1,"1972":1,"2036":1,"2042":1,"2072":1,"2075":1,"2108":1,"2112":1,"2113":1,"2128":2,"2129":2,"2130":1,"2133":1,"2149":1,"2150":1,"2152":1,"2161":3,"2182":1,"2183":1,"2226":1,"2228":1,"2233":1,"2235":1,"2245":1,"2247":1,"2249":1,"2260":1,"2268":1,"2270":1,"2276":1,"2294":1,"2301":1,"2302":2,"2306":1,"2309":1,"2311":3,"2315":2,"2319":1,"2344":1,"2354":1,"2361":2,"2411":1,"2417":1,"2421":1,"2441":1,"2451":1,"2456":1,"2458":1,"2477":1,"2480":1,"2492":1,"2506":1,"2512":1,"2519":2,"2523":1,"2529":1,"2530":2,"2535":1,"2541":1,"2543":2,"2549":1,"2550":1,"2556":1,"2564":1,"2566":3,"2567":1,"2569":1,"2574":1,"2575":2,"2576":2,"2585":2,"2590":2,"2596":1,"2603":1,"2615":1,"2616":1,"2649":1,"2673":1,"2677":1,"2697":1,"2700":3,"2711":2,"2719":1,"2729":1,"2738":1,"2741":1,"2748":1,"2749":1,"2753":1,"2754":1}}],["onkey",{"2":{"176":1}}],["ongoing",{"2":{"160":1,"606":1,"2566":1,"2719":1}}],["onces",{"2":{"199":1,"211":1}}],["once",{"2":{"114":1,"119":1,"134":1,"152":1,"231":1,"245":1,"316":1,"331":1,"358":1,"403":2,"430":1,"453":1,"472":1,"515":1,"598":1,"600":1,"688":1,"701":1,"707":1,"1179":1,"1200":1,"1236":1,"1239":1,"1254":1,"1313":1,"1335":1,"1340":1,"1385":3,"1411":1,"1415":1,"1416":1,"1435":1,"1499":1,"1508":1,"1596":1,"1670":1,"1678":1,"1682":1,"1684":1,"1729":1,"1804":1,"1821":2,"1876":1,"1878":1,"1912":1,"1921":2,"1952":1,"2044":1,"2046":1,"2067":1,"2133":1,"2145":1,"2150":1,"2160":1,"2161":4,"2164":1,"2183":1,"2226":1,"2233":1,"2235":2,"2255":2,"2261":2,"2263":1,"2272":1,"2277":1,"2280":1,"2311":1,"2317":1,"2403":1,"2446":1,"2447":2,"2448":1,"2452":1,"2456":1,"2460":1,"2490":1,"2498":1,"2499":1,"2510":1,"2512":1,"2513":1,"2564":1,"2577":2,"2587":1,"2594":1,"2614":2,"2615":1,"2653":1,"2662":1,"2728":1,"2746":1,"2757":1}}],["ones",{"2":{"243":1,"266":1,"371":1,"1276":1,"1398":1,"1402":1,"1521":1,"1527":1,"1656":1,"1870":1,"1948":1,"1953":2,"2058":2,"2072":1,"2075":1,"2278":1,"2279":1,"2307":1,"2319":1,"2508":1,"2571":1,"2577":1,"2710":1,"2757":1}}],["oneshots",{"2":{"2703":1}}],["oneshot",{"0":{"2654":1},"2":{"38":2,"63":2,"112":2,"134":1,"160":1,"188":1,"191":2,"211":1,"266":1,"503":1,"505":4,"511":1,"1300":8,"1385":2,"2129":2,"2228":1,"2490":11,"2491":19,"2691":1,"2703":1}}],["onehand",{"2":{"114":1}}],["onekey",{"2":{"49":1,"191":3,"211":1,"222":1,"2245":1,"2247":1,"2249":1,"2513":2,"2567":1}}],["one",{"0":{"295":1,"296":1,"1234":1,"1274":1,"1307":1,"1699":1,"2167":1,"2379":1,"2490":1,"2691":1},"1":{"296":1,"297":1,"1235":1,"1700":1,"1701":1,"2491":1},"2":{"37":1,"45":1,"50":1,"55":1,"75":1,"82":1,"89":1,"93":2,"98":1,"107":1,"114":1,"154":1,"156":1,"157":1,"160":4,"163":1,"176":1,"188":1,"191":1,"194":3,"196":1,"199":2,"204":1,"211":2,"213":1,"231":1,"241":1,"253":1,"256":1,"262":1,"268":1,"270":1,"276":1,"282":1,"291":1,"295":1,"296":1,"317":1,"341":1,"347":1,"352":1,"370":1,"374":2,"418":1,"453":2,"457":1,"459":1,"462":1,"467":2,"468":1,"493":1,"501":1,"502":7,"503":1,"505":1,"508":1,"509":1,"513":1,"515":3,"516":1,"529":1,"530":2,"537":1,"540":2,"556":1,"557":1,"560":1,"580":1,"612":1,"626":1,"628":2,"638":1,"641":1,"655":3,"656":1,"657":1,"658":1,"659":1,"661":1,"662":1,"701":1,"734":1,"758":1,"760":1,"787":1,"790":1,"819":1,"824":1,"851":1,"852":1,"857":1,"886":1,"891":1,"920":1,"925":1,"954":1,"959":1,"988":1,"993":1,"1022":1,"1023":1,"1027":1,"1056":1,"1057":1,"1061":1,"1090":1,"1095":1,"1121":3,"1123":2,"1126":2,"1137":1,"1146":1,"1148":1,"1176":1,"1216":1,"1221":2,"1234":1,"1236":1,"1238":1,"1274":1,"1276":1,"1278":1,"1287":1,"1290":1,"1300":12,"1303":2,"1307":1,"1316":1,"1320":3,"1326":4,"1329":3,"1334":1,"1335":3,"1336":1,"1338":1,"1339":2,"1346":1,"1353":1,"1357":3,"1359":1,"1360":2,"1376":1,"1377":2,"1378":2,"1387":5,"1390":1,"1391":2,"1392":1,"1393":1,"1394":1,"1395":1,"1396":1,"1397":4,"1399":2,"1413":1,"1414":1,"1415":1,"1416":3,"1431":2,"1432":1,"1438":1,"1446":3,"1451":2,"1452":2,"1457":1,"1459":1,"1471":1,"1500":3,"1503":3,"1515":2,"1523":2,"1524":3,"1551":1,"1553":1,"1558":1,"1562":1,"1573":1,"1633":2,"1636":1,"1637":1,"1670":1,"1671":1,"1674":2,"1676":1,"1680":1,"1684":1,"1686":3,"1697":1,"1716":1,"1731":1,"1803":1,"1820":2,"1821":1,"1822":1,"1825":1,"1853":1,"1854":2,"1859":3,"1869":1,"1873":3,"1875":1,"1885":2,"1886":1,"1897":1,"1907":1,"1955":1,"2067":1,"2102":1,"2103":1,"2114":1,"2118":2,"2125":2,"2127":1,"2128":2,"2130":1,"2131":1,"2147":1,"2152":3,"2153":2,"2154":1,"2156":1,"2160":3,"2162":4,"2167":1,"2169":3,"2171":1,"2181":1,"2182":1,"2231":1,"2238":1,"2245":1,"2247":1,"2249":1,"2252":2,"2262":2,"2263":1,"2267":1,"2268":3,"2270":1,"2273":2,"2274":1,"2277":1,"2278":1,"2302":1,"2311":6,"2319":1,"2327":2,"2328":1,"2335":1,"2342":1,"2348":1,"2351":1,"2367":1,"2379":9,"2383":1,"2406":2,"2408":1,"2411":1,"2417":1,"2424":1,"2431":1,"2432":1,"2433":1,"2442":1,"2452":2,"2464":1,"2474":1,"2476":1,"2477":1,"2490":15,"2491":7,"2508":1,"2530":1,"2544":1,"2548":1,"2550":1,"2553":1,"2566":2,"2574":3,"2577":2,"2595":1,"2597":1,"2603":1,"2614":1,"2615":1,"2661":1,"2673":1,"2674":2,"2676":1,"2677":2,"2678":1,"2683":2,"2688":2,"2689":1,"2691":1,"2692":1,"2694":2,"2695":2,"2697":2,"2698":1,"2700":1,"2707":1,"2708":1,"2710":1,"2711":1,"2720":1,"2737":1,"2740":1,"2749":1,"2752":1,"2753":1}}],["on",{"0":{"14":1,"235":1,"568":1,"660":1,"1238":1,"1240":1,"1255":1,"1278":1,"1282":1,"1283":1,"1458":1,"1503":1,"1539":1,"1541":1,"1543":1,"1600":1,"1792":1,"1845":1,"1897":1,"2045":1,"2149":1,"2164":2,"2167":1,"2168":2,"2254":1,"2264":1,"2271":1,"2443":1,"2476":1,"2736":1},"1":{"1239":1,"1240":1,"1601":1,"1846":1,"1847":1},"2":{"1":1,"2":1,"10":1,"11":3,"14":2,"24":1,"25":2,"28":2,"30":1,"31":1,"33":1,"34":2,"49":8,"50":4,"51":1,"65":3,"69":1,"73":4,"74":1,"77":1,"90":1,"92":2,"93":3,"99":1,"105":6,"107":1,"113":2,"114":23,"118":1,"123":2,"124":2,"131":1,"133":1,"134":15,"138":1,"145":1,"149":2,"152":1,"153":4,"157":1,"158":3,"160":4,"164":1,"169":2,"176":8,"182":2,"190":1,"191":15,"194":10,"195":1,"198":1,"199":7,"201":1,"202":1,"206":4,"209":2,"210":1,"211":7,"213":3,"215":2,"222":7,"228":2,"231":4,"233":1,"236":11,"240":1,"247":2,"249":4,"255":1,"263":1,"266":3,"276":2,"277":4,"278":1,"279":1,"294":1,"303":1,"308":1,"317":2,"321":2,"322":1,"323":1,"331":8,"335":2,"336":1,"337":1,"341":1,"343":1,"344":1,"345":1,"349":2,"350":1,"352":2,"355":1,"356":2,"374":1,"385":1,"386":1,"389":1,"390":1,"391":2,"399":1,"400":2,"408":1,"409":1,"410":1,"430":1,"436":1,"446":1,"453":1,"454":4,"467":1,"468":1,"479":1,"481":1,"485":1,"486":1,"496":1,"502":9,"503":1,"504":3,"505":10,"506":5,"511":8,"515":1,"519":1,"520":1,"521":1,"530":1,"535":1,"540":5,"541":1,"551":3,"553":1,"554":2,"555":1,"556":4,"557":1,"560":8,"562":1,"567":1,"574":1,"578":1,"580":6,"584":1,"585":1,"589":1,"590":1,"597":1,"602":1,"605":1,"606":1,"607":1,"609":1,"613":1,"616":1,"623":1,"624":2,"625":2,"626":3,"627":1,"630":3,"633":1,"635":3,"638":1,"639":2,"641":1,"656":2,"660":3,"661":3,"668":1,"669":5,"681":4,"684":1,"687":1,"688":1,"689":5,"690":1,"691":2,"693":1,"694":1,"696":2,"701":2,"702":1,"703":1,"714":1,"717":1,"720":1,"723":1,"726":1,"733":1,"734":1,"758":1,"759":1,"760":2,"787":1,"788":1,"789":1,"790":3,"819":1,"821":2,"823":1,"824":3,"851":1,"854":2,"856":1,"857":3,"886":1,"888":2,"890":1,"891":3,"920":1,"922":2,"924":1,"925":3,"954":1,"956":2,"958":1,"959":3,"988":1,"990":2,"992":1,"993":3,"1022":1,"1024":2,"1026":1,"1027":3,"1056":1,"1058":2,"1060":1,"1061":3,"1090":1,"1092":2,"1094":1,"1095":3,"1122":1,"1124":2,"1125":1,"1127":1,"1128":1,"1129":2,"1130":2,"1132":3,"1133":4,"1134":2,"1146":1,"1147":1,"1148":3,"1176":1,"1181":4,"1197":1,"1201":1,"1212":1,"1217":1,"1218":1,"1219":1,"1223":3,"1226":1,"1227":1,"1230":2,"1234":1,"1236":1,"1239":1,"1241":1,"1243":2,"1245":1,"1254":1,"1255":1,"1261":1,"1262":1,"1270":2,"1271":1,"1272":1,"1273":2,"1275":2,"1278":1,"1280":4,"1281":1,"1283":3,"1287":2,"1299":1,"1300":3,"1301":1,"1302":1,"1303":1,"1304":1,"1316":4,"1317":3,"1319":1,"1320":1,"1326":3,"1329":10,"1332":3,"1334":1,"1335":5,"1339":1,"1340":3,"1341":24,"1343":1,"1344":6,"1361":2,"1365":2,"1377":2,"1378":2,"1383":1,"1384":2,"1385":6,"1387":4,"1389":1,"1390":1,"1393":1,"1396":3,"1398":5,"1399":6,"1401":1,"1403":4,"1406":4,"1408":10,"1410":1,"1412":2,"1416":2,"1430":1,"1431":3,"1432":1,"1434":3,"1435":1,"1436":1,"1438":3,"1441":1,"1442":1,"1443":3,"1446":1,"1447":1,"1449":2,"1454":2,"1456":3,"1457":4,"1458":4,"1459":2,"1460":1,"1462":1,"1464":2,"1469":3,"1470":1,"1473":1,"1474":1,"1485":1,"1486":1,"1494":1,"1495":2,"1496":2,"1499":1,"1500":5,"1501":2,"1503":4,"1505":4,"1506":1,"1507":1,"1512":5,"1518":1,"1519":5,"1520":2,"1521":1,"1522":1,"1523":3,"1524":1,"1528":1,"1534":2,"1548":2,"1549":10,"1551":1,"1553":1,"1554":1,"1556":1,"1557":1,"1558":1,"1560":3,"1562":2,"1565":1,"1567":1,"1568":2,"1572":8,"1573":5,"1574":1,"1575":1,"1577":1,"1582":1,"1589":1,"1591":2,"1598":1,"1599":1,"1600":2,"1603":1,"1604":2,"1605":1,"1609":1,"1613":1,"1634":2,"1638":1,"1655":1,"1660":1,"1665":1,"1666":3,"1668":4,"1669":3,"1670":1,"1671":1,"1677":1,"1680":1,"1683":1,"1684":1,"1714":1,"1715":2,"1716":1,"1717":3,"1718":4,"1722":4,"1724":2,"1725":3,"1726":1,"1727":4,"1728":2,"1729":1,"1730":2,"1733":1,"1735":1,"1736":1,"1737":1,"1738":1,"1743":1,"1745":1,"1787":1,"1788":1,"1792":4,"1793":3,"1794":1,"1799":1,"1803":1,"1804":2,"1807":3,"1808":1,"1815":1,"1816":1,"1817":1,"1821":5,"1822":17,"1823":2,"1824":3,"1826":1,"1828":1,"1829":1,"1830":2,"1832":2,"1859":1,"1863":2,"1864":4,"1865":1,"1866":2,"1868":1,"1870":3,"1873":3,"1875":1,"1876":2,"1879":1,"1880":2,"1882":2,"1883":4,"1885":3,"1894":1,"1895":2,"1897":1,"1898":1,"1899":3,"1900":1,"1902":1,"1905":1,"1906":1,"1907":3,"1908":1,"1910":1,"1911":1,"1918":2,"1921":8,"1923":3,"1929":1,"1930":1,"1934":1,"1935":1,"1937":1,"1938":1,"1939":4,"1940":2,"1945":2,"1946":3,"1947":1,"1948":1,"1949":6,"1950":1,"1951":1,"1952":1,"1954":5,"1957":1,"1958":3,"1959":2,"1962":1,"1963":1,"1964":1,"1965":1,"1970":1,"1972":1,"2031":3,"2032":2,"2034":1,"2035":1,"2037":1,"2038":1,"2040":1,"2041":1,"2042":2,"2044":4,"2051":4,"2053":6,"2056":3,"2057":1,"2061":1,"2063":3,"2085":1,"2087":1,"2100":1,"2101":1,"2102":2,"2105":1,"2106":1,"2107":1,"2108":1,"2112":2,"2113":5,"2118":1,"2120":1,"2122":1,"2124":1,"2125":1,"2126":1,"2128":1,"2129":9,"2130":2,"2131":7,"2132":2,"2133":1,"2139":1,"2143":18,"2145":2,"2146":1,"2149":1,"2150":2,"2154":1,"2156":7,"2157":1,"2158":4,"2160":1,"2161":14,"2162":12,"2167":7,"2168":1,"2169":3,"2170":1,"2171":7,"2175":1,"2177":1,"2178":1,"2180":1,"2182":3,"2183":3,"2184":1,"2196":1,"2197":1,"2198":1,"2225":1,"2226":1,"2229":1,"2230":3,"2233":1,"2235":2,"2236":2,"2237":1,"2238":1,"2240":2,"2242":1,"2243":1,"2244":1,"2245":3,"2247":3,"2249":4,"2254":2,"2255":5,"2259":1,"2262":1,"2263":3,"2266":1,"2267":1,"2268":4,"2270":2,"2272":6,"2273":6,"2274":3,"2275":2,"2276":5,"2277":2,"2279":4,"2282":1,"2284":1,"2286":1,"2289":1,"2290":1,"2291":2,"2293":1,"2299":1,"2302":1,"2303":1,"2305":2,"2306":1,"2309":1,"2311":1,"2313":2,"2316":1,"2320":1,"2326":1,"2330":4,"2332":4,"2334":4,"2335":1,"2344":1,"2346":2,"2347":2,"2348":2,"2350":2,"2352":3,"2353":1,"2355":2,"2357":10,"2358":3,"2359":3,"2360":3,"2367":7,"2369":4,"2370":11,"2371":3,"2376":1,"2377":1,"2379":3,"2383":6,"2384":1,"2385":1,"2393":2,"2394":1,"2396":11,"2397":1,"2398":3,"2402":2,"2403":4,"2406":2,"2407":1,"2408":1,"2411":3,"2413":2,"2415":2,"2417":1,"2418":2,"2419":1,"2426":1,"2427":1,"2430":1,"2431":1,"2437":3,"2439":1,"2440":1,"2441":1,"2442":1,"2443":1,"2445":1,"2448":1,"2450":5,"2452":1,"2454":4,"2455":1,"2460":1,"2462":1,"2466":1,"2468":2,"2470":1,"2474":4,"2477":3,"2479":2,"2480":3,"2484":1,"2490":5,"2491":3,"2492":2,"2496":1,"2497":2,"2501":2,"2502":1,"2503":1,"2508":2,"2512":1,"2513":2,"2517":2,"2518":4,"2519":1,"2522":1,"2524":1,"2525":1,"2529":3,"2530":4,"2531":1,"2533":3,"2535":1,"2539":1,"2544":1,"2545":1,"2546":3,"2548":2,"2552":1,"2553":1,"2556":1,"2557":1,"2560":1,"2563":1,"2564":4,"2565":1,"2566":6,"2567":2,"2568":1,"2571":1,"2573":1,"2574":5,"2575":3,"2576":5,"2577":18,"2584":1,"2585":1,"2587":1,"2592":2,"2597":1,"2601":1,"2602":1,"2603":4,"2604":2,"2605":1,"2607":1,"2611":1,"2614":1,"2615":3,"2616":1,"2617":1,"2624":1,"2625":1,"2628":1,"2633":1,"2643":1,"2646":1,"2655":1,"2657":1,"2658":1,"2663":1,"2665":1,"2672":1,"2673":2,"2674":2,"2675":2,"2676":4,"2677":4,"2680":3,"2684":1,"2685":3,"2687":1,"2688":3,"2692":2,"2694":2,"2695":3,"2697":2,"2700":1,"2708":1,"2710":3,"2711":1,"2714":1,"2715":1,"2716":1,"2718":1,"2720":3,"2728":4,"2729":1,"2731":2,"2732":3,"2733":2,"2734":2,"2735":5,"2736":9,"2737":2,"2738":1,"2740":2,"2743":1,"2744":1,"2745":1,"2746":1,"2749":1,"2750":1,"2751":1,"2754":1}}],["often",{"0":{"2478":1},"1":{"2479":1,"2480":1,"2481":1},"2":{"99":1,"502":1,"586":1,"587":1,"625":1,"660":1,"1212":1,"1241":1,"1266":1,"1269":1,"1274":1,"1325":3,"1326":1,"1331":1,"1410":1,"1499":2,"1562":1,"1570":1,"1885":1,"2031":1,"2061":1,"2144":1,"2169":1,"2314":1,"2472":1,"2473":1,"2475":1,"2568":1,"2648":1,"2655":2,"2657":1,"2664":1}}],["offending",{"2":{"2566":1}}],["offer",{"2":{"2032":1,"2269":1}}],["offered",{"2":{"1670":1,"1672":1}}],["offers",{"2":{"1303":1,"1397":1,"1463":1,"2514":1}}],["official",{"2":{"1278":1,"1319":1,"2328":1,"2466":1,"2514":1,"2523":1,"2533":1,"2534":1,"2578":1,"2715":1}}],["officially",{"2":{"254":1,"1264":1,"1265":1,"2441":1}}],["offloaded",{"2":{"1125":1,"1128":1}}],["offload",{"2":{"703":1,"1221":1,"1222":1,"1223":1}}],["offset=0",{"2":{"465":1}}],["offsets",{"2":{"222":1,"249":1,"1451":1,"1821":1,"2576":6,"2577":4,"2595":4}}],["offset",{"0":{"2595":1,"2620":1},"2":{"199":1,"211":2,"222":1,"465":4,"689":1,"690":1,"1451":2,"1805":12,"1817":1,"1820":1,"1949":1,"2038":1,"2141":1,"2576":2,"2577":8,"2587":1,"2588":3,"2592":1,"2594":2,"2595":2,"2617":1,"2620":4}}],["offs",{"2":{"114":1}}],["offhand",{"2":{"31":1,"34":1,"1816":1,"2140":1}}],["off",{"0":{"1234":1,"1540":1,"1542":1,"1544":1,"1602":1,"1792":1,"2045":1,"2167":1},"1":{"1235":1},"2":{"25":1,"92":1,"105":4,"114":2,"116":1,"134":1,"149":1,"152":1,"160":1,"195":1,"211":1,"222":1,"236":1,"247":2,"284":1,"347":1,"356":1,"454":1,"502":1,"504":1,"506":3,"511":2,"550":1,"560":1,"588":1,"592":1,"593":2,"594":2,"610":1,"659":1,"660":2,"818":2,"821":14,"1021":2,"1024":14,"1055":2,"1058":14,"1089":2,"1092":14,"1234":1,"1300":1,"1332":1,"1335":1,"1339":1,"1340":1,"1341":7,"1344":2,"1346":1,"1377":1,"1398":6,"1399":5,"1403":3,"1406":2,"1408":8,"1434":3,"1442":1,"1443":3,"1449":1,"1454":1,"1456":4,"1457":1,"1459":1,"1462":1,"1473":1,"1475":1,"1485":1,"1487":1,"1503":1,"1504":1,"1505":2,"1507":1,"1512":4,"1534":1,"1548":2,"1549":7,"1570":1,"1572":6,"1573":1,"1576":2,"1602":1,"1668":1,"1669":3,"1717":1,"1718":4,"1722":4,"1727":4,"1730":2,"1735":1,"1736":1,"1739":1,"1740":1,"1787":1,"1792":4,"1793":4,"1815":1,"1817":1,"1822":8,"1823":2,"1857":1,"1870":1,"1894":7,"1895":1,"1898":4,"1899":4,"1905":1,"1907":1,"1948":1,"1949":3,"1953":2,"1954":2,"1960":3,"1962":1,"1963":1,"1966":1,"1967":1,"2034":1,"2035":1,"2044":3,"2045":2,"2053":4,"2057":1,"2058":2,"2063":1,"2112":2,"2113":3,"2129":4,"2139":2,"2141":1,"2143":10,"2156":6,"2158":2,"2162":1,"2167":8,"2170":1,"2171":5,"2262":2,"2263":3,"2270":1,"2272":1,"2274":1,"2357":8,"2358":3,"2359":3,"2360":4,"2367":2,"2369":4,"2370":5,"2371":4,"2376":1,"2377":1,"2379":3,"2383":5,"2396":5,"2402":2,"2490":2,"2491":5,"2560":1,"2563":1,"2566":2,"2574":1,"2577":2,"2603":1,"2604":2,"2605":1,"2677":1,"2688":1,"2694":1,"2695":1,"2697":2,"2744":1}}],["of",{"0":{"8":1,"28":1,"33":1,"89":1,"123":1,"124":1,"262":1,"265":1,"275":1,"347":1,"361":1,"533":1,"562":1,"571":1,"629":1,"1232":1,"1271":1,"1290":1,"1326":1,"1551":1,"1677":1,"1678":1,"1717":1,"1718":1,"1886":1,"2059":1,"2319":1,"2404":1,"2475":1,"2601":1,"2621":1,"2701":1,"2752":1},"1":{"34":1,"572":1,"573":1,"1233":1,"1679":1,"1680":1,"1681":1,"1682":1,"1683":1,"1684":1,"1685":1,"1686":1,"1687":1,"1688":1,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1695":1,"1696":1,"1697":1,"1698":1,"1699":1,"1700":1,"1701":1,"1702":1,"1703":1,"1704":1,"1705":1,"1706":1,"1707":1,"1708":1,"1709":1,"1710":1,"1711":1,"1712":1,"1713":1,"2405":1,"2406":1,"2407":1,"2408":1,"2476":1,"2477":1,"2602":1,"2603":1,"2604":1,"2605":1,"2606":1,"2607":1,"2608":1,"2609":1,"2610":1,"2611":1,"2612":1,"2622":1,"2623":1,"2624":1,"2625":1,"2626":1,"2627":1,"2628":1,"2629":1,"2630":1,"2631":1,"2632":1,"2633":1,"2634":1,"2635":1,"2636":1,"2637":1,"2638":1,"2639":1,"2640":1,"2641":1,"2642":1,"2643":1,"2644":1,"2645":1,"2646":1,"2647":1,"2648":1,"2649":1,"2650":1,"2651":1,"2652":1,"2653":1,"2654":1,"2655":1,"2656":1,"2657":1,"2658":1,"2659":1,"2660":1,"2661":1,"2662":1,"2663":1,"2664":1,"2665":1,"2666":1,"2667":1,"2668":1,"2669":1,"2702":1,"2703":1,"2704":1,"2705":1,"2706":1,"2707":1,"2708":1},"2":{"0":1,"3":2,"4":1,"5":1,"6":1,"10":1,"15":2,"17":1,"19":1,"21":1,"22":2,"23":1,"25":2,"30":2,"31":3,"32":1,"33":2,"34":1,"37":1,"43":1,"45":3,"49":4,"50":9,"51":1,"55":1,"63":1,"64":1,"65":3,"67":1,"69":1,"70":2,"74":4,"76":3,"83":1,"86":2,"87":2,"88":2,"93":3,"94":3,"95":2,"98":2,"99":2,"103":4,"104":2,"107":3,"109":1,"112":3,"113":4,"114":15,"118":2,"119":4,"123":1,"124":3,"125":1,"126":2,"127":2,"130":2,"131":3,"132":1,"133":2,"134":21,"142":1,"149":11,"152":1,"153":3,"154":1,"156":5,"157":2,"158":1,"160":4,"163":4,"164":1,"166":3,"167":1,"169":3,"172":1,"173":3,"174":3,"175":2,"176":16,"182":4,"183":1,"184":2,"185":1,"186":1,"187":1,"189":3,"190":1,"191":15,"194":8,"195":1,"196":1,"198":4,"199":16,"201":6,"202":4,"203":5,"204":2,"209":2,"210":1,"211":20,"213":4,"214":1,"215":1,"222":10,"224":3,"228":1,"229":1,"231":1,"233":6,"234":2,"236":12,"238":5,"243":1,"245":1,"246":1,"247":1,"248":1,"249":6,"251":2,"254":2,"255":2,"256":2,"259":1,"262":5,"263":3,"265":3,"266":10,"268":2,"272":2,"273":2,"275":2,"276":1,"277":4,"288":1,"290":1,"292":1,"304":2,"305":2,"307":1,"313":2,"316":5,"317":5,"327":1,"331":2,"334":3,"335":1,"336":3,"337":1,"341":5,"345":1,"346":3,"349":2,"350":7,"352":1,"355":1,"363":1,"364":1,"370":2,"371":1,"372":1,"374":3,"375":1,"376":1,"377":1,"393":1,"394":1,"395":1,"396":1,"411":1,"413":1,"430":3,"432":2,"434":2,"435":4,"436":2,"445":1,"446":1,"448":1,"450":1,"451":1,"453":13,"454":2,"455":4,"457":1,"462":1,"463":1,"464":2,"465":5,"466":2,"469":1,"470":2,"471":1,"475":1,"479":2,"481":2,"482":1,"483":2,"484":1,"485":1,"486":1,"488":1,"493":1,"496":5,"500":1,"501":2,"502":18,"504":2,"505":7,"506":9,"509":2,"510":1,"511":6,"513":1,"515":2,"516":1,"517":1,"519":2,"520":2,"521":1,"522":1,"527":1,"529":4,"530":2,"532":1,"533":1,"534":2,"535":1,"540":1,"541":1,"546":1,"548":1,"550":1,"552":1,"554":8,"555":1,"556":3,"557":2,"560":9,"561":1,"562":4,"563":1,"564":1,"567":1,"568":1,"569":1,"570":2,"571":2,"572":1,"574":1,"578":2,"580":8,"584":1,"587":1,"588":2,"589":2,"592":2,"596":1,"597":4,"598":3,"601":3,"602":2,"606":10,"607":1,"612":5,"614":2,"616":2,"617":2,"623":1,"624":1,"625":1,"626":3,"627":3,"628":5,"629":1,"630":2,"631":1,"635":4,"638":1,"639":2,"641":6,"644":3,"647":1,"649":1,"655":1,"657":1,"659":8,"660":1,"661":2,"662":1,"664":1,"672":1,"674":1,"675":1,"677":1,"680":2,"681":3,"683":2,"684":5,"685":4,"686":1,"687":1,"688":5,"689":12,"690":7,"691":7,"692":3,"693":1,"694":4,"696":3,"697":2,"698":4,"699":1,"701":4,"702":1,"703":2,"707":1,"709":3,"712":3,"715":3,"718":3,"721":3,"724":3,"727":1,"731":1,"739":1,"741":1,"743":1,"745":1,"747":1,"755":1,"757":5,"758":1,"763":1,"766":1,"768":1,"770":1,"772":1,"774":1,"784":1,"786":5,"787":1,"793":1,"796":1,"800":1,"802":1,"804":1,"806":1,"816":1,"818":6,"819":1,"821":1,"827":1,"830":1,"832":1,"834":1,"836":1,"838":1,"848":1,"850":6,"851":1,"854":1,"860":1,"863":1,"867":1,"869":1,"871":1,"873":1,"883":1,"885":6,"886":1,"888":1,"894":1,"897":1,"901":1,"903":1,"905":1,"907":1,"917":1,"919":6,"920":1,"922":1,"928":1,"931":1,"935":1,"937":1,"939":1,"941":1,"951":1,"953":7,"954":1,"956":1,"962":1,"965":1,"969":1,"971":1,"973":1,"975":1,"985":1,"987":7,"988":1,"990":1,"996":1,"999":1,"1003":1,"1005":1,"1007":1,"1009":1,"1019":1,"1021":6,"1022":1,"1024":1,"1030":1,"1033":1,"1037":1,"1039":1,"1041":1,"1043":1,"1053":1,"1055":6,"1056":1,"1058":1,"1064":1,"1067":1,"1071":1,"1073":1,"1075":1,"1077":1,"1087":1,"1089":7,"1090":1,"1092":1,"1098":1,"1100":1,"1101":1,"1105":1,"1107":1,"1109":1,"1111":1,"1121":2,"1122":2,"1124":1,"1125":2,"1126":2,"1127":1,"1129":6,"1130":1,"1132":3,"1133":2,"1134":5,"1138":1,"1142":1,"1143":2,"1145":5,"1146":1,"1151":1,"1154":1,"1158":1,"1160":1,"1162":1,"1164":1,"1174":1,"1176":1,"1179":1,"1181":3,"1189":2,"1192":2,"1195":1,"1197":1,"1200":1,"1207":2,"1209":2,"1212":2,"1214":7,"1215":2,"1216":2,"1217":1,"1220":1,"1224":2,"1227":1,"1229":1,"1230":1,"1233":2,"1234":1,"1236":1,"1238":2,"1239":1,"1240":1,"1242":1,"1245":1,"1250":1,"1251":1,"1252":1,"1254":1,"1255":1,"1257":2,"1258":2,"1259":2,"1265":5,"1267":1,"1270":1,"1271":2,"1274":1,"1275":1,"1278":5,"1281":1,"1284":3,"1287":4,"1289":2,"1290":3,"1292":1,"1294":1,"1298":1,"1300":8,"1302":1,"1303":13,"1304":2,"1319":1,"1320":1,"1323":1,"1324":1,"1326":12,"1329":11,"1330":1,"1331":4,"1332":6,"1333":1,"1334":3,"1335":4,"1336":6,"1338":2,"1340":4,"1341":4,"1344":4,"1345":1,"1346":5,"1347":2,"1351":1,"1352":1,"1353":2,"1355":1,"1356":1,"1359":2,"1361":2,"1363":1,"1364":2,"1365":1,"1368":1,"1370":1,"1375":2,"1377":1,"1378":1,"1380":4,"1383":4,"1384":3,"1385":7,"1387":3,"1390":2,"1393":2,"1397":1,"1398":5,"1399":1,"1400":1,"1401":1,"1404":1,"1405":2,"1406":5,"1408":2,"1410":1,"1411":2,"1412":1,"1415":1,"1416":4,"1423":1,"1426":1,"1427":1,"1428":1,"1429":1,"1430":2,"1431":3,"1432":1,"1434":1,"1435":3,"1437":1,"1438":2,"1441":3,"1442":1,"1443":1,"1445":2,"1446":3,"1447":4,"1448":2,"1451":12,"1452":2,"1454":4,"1457":4,"1458":1,"1459":5,"1461":1,"1462":1,"1464":1,"1466":1,"1467":1,"1471":3,"1495":2,"1497":2,"1498":1,"1499":1,"1508":2,"1511":2,"1515":5,"1518":3,"1519":1,"1520":1,"1525":1,"1526":2,"1527":4,"1528":2,"1534":3,"1536":1,"1537":4,"1545":1,"1546":2,"1547":2,"1551":1,"1553":4,"1554":3,"1555":3,"1556":2,"1558":2,"1559":2,"1560":1,"1561":1,"1562":1,"1564":2,"1570":2,"1573":5,"1578":2,"1582":1,"1583":2,"1584":2,"1585":2,"1586":2,"1587":2,"1591":4,"1596":1,"1605":2,"1607":1,"1609":2,"1612":4,"1613":1,"1614":4,"1624":1,"1625":1,"1630":2,"1633":2,"1636":2,"1637":4,"1641":1,"1642":1,"1646":1,"1647":1,"1648":1,"1649":1,"1650":1,"1653":1,"1654":1,"1655":3,"1657":1,"1658":1,"1663":1,"1668":2,"1670":4,"1671":4,"1672":2,"1673":4,"1674":3,"1675":3,"1676":5,"1677":5,"1678":1,"1680":1,"1682":1,"1683":3,"1684":8,"1685":2,"1714":1,"1715":1,"1716":2,"1719":1,"1720":1,"1721":1,"1722":2,"1724":2,"1725":14,"1728":5,"1729":2,"1730":5,"1741":1,"1743":1,"1745":1,"1756":1,"1774":1,"1781":2,"1784":2,"1791":3,"1802":3,"1803":4,"1804":9,"1805":1,"1806":2,"1807":3,"1808":2,"1811":1,"1813":1,"1814":1,"1815":2,"1817":5,"1818":1,"1819":3,"1820":10,"1821":2,"1822":16,"1825":2,"1827":3,"1832":2,"1837":1,"1838":1,"1839":1,"1840":1,"1841":1,"1842":1,"1843":1,"1844":1,"1845":1,"1846":1,"1850":1,"1852":1,"1853":1,"1854":1,"1855":4,"1856":1,"1857":2,"1859":3,"1863":8,"1865":2,"1866":4,"1867":3,"1868":2,"1869":5,"1870":7,"1872":3,"1875":2,"1876":1,"1878":1,"1879":1,"1880":5,"1885":1,"1887":2,"1889":2,"1892":1,"1894":5,"1895":1,"1897":1,"1898":1,"1899":1,"1900":3,"1902":2,"1907":2,"1908":3,"1910":1,"1911":1,"1912":1,"1915":2,"1920":2,"1921":6,"1923":2,"1926":1,"1928":1,"1929":1,"1931":1,"1932":1,"1933":3,"1934":2,"1937":1,"1940":1,"1941":1,"1942":1,"1945":2,"1946":14,"1948":2,"1949":10,"1950":9,"1952":2,"1954":7,"1957":1,"1968":1,"1970":1,"1972":1,"1983":1,"2019":1,"2026":2,"2029":2,"2031":3,"2032":6,"2033":2,"2035":3,"2036":1,"2038":6,"2040":7,"2041":2,"2042":5,"2043":2,"2044":3,"2047":1,"2051":2,"2052":4,"2056":1,"2059":3,"2060":2,"2061":1,"2062":2,"2063":1,"2064":1,"2066":1,"2067":1,"2070":2,"2072":3,"2074":1,"2075":2,"2081":1,"2083":1,"2084":1,"2085":1,"2087":1,"2088":1,"2103":1,"2106":1,"2107":2,"2111":1,"2114":1,"2117":1,"2118":1,"2119":1,"2120":2,"2122":2,"2123":1,"2125":2,"2126":1,"2127":1,"2128":10,"2129":28,"2130":2,"2131":7,"2132":1,"2133":2,"2134":1,"2136":1,"2137":1,"2138":1,"2139":2,"2141":2,"2142":4,"2143":11,"2144":4,"2145":2,"2146":2,"2147":16,"2148":6,"2149":3,"2150":5,"2152":17,"2153":1,"2155":1,"2157":2,"2160":3,"2161":6,"2162":6,"2164":1,"2168":1,"2169":8,"2170":3,"2171":6,"2172":1,"2175":1,"2177":3,"2178":1,"2179":2,"2181":5,"2182":6,"2183":4,"2200":1,"2204":1,"2214":1,"2226":6,"2228":2,"2229":4,"2230":2,"2231":1,"2233":2,"2235":1,"2236":1,"2237":1,"2238":2,"2240":2,"2242":2,"2243":1,"2244":4,"2245":2,"2247":2,"2249":2,"2252":1,"2254":1,"2255":2,"2257":1,"2259":1,"2260":5,"2262":12,"2263":2,"2266":1,"2268":4,"2269":4,"2270":6,"2271":1,"2272":13,"2273":5,"2274":5,"2275":2,"2276":3,"2277":4,"2279":7,"2280":2,"2282":1,"2284":2,"2291":1,"2294":1,"2295":1,"2298":1,"2300":5,"2301":1,"2303":1,"2304":1,"2306":2,"2309":1,"2310":1,"2311":7,"2312":1,"2313":2,"2314":2,"2315":2,"2317":2,"2319":4,"2320":4,"2322":3,"2324":3,"2326":1,"2327":4,"2328":1,"2335":2,"2339":1,"2341":1,"2342":2,"2346":1,"2347":4,"2348":5,"2349":5,"2350":1,"2352":1,"2353":3,"2354":1,"2355":1,"2357":2,"2358":1,"2359":1,"2370":3,"2381":1,"2385":2,"2393":2,"2395":1,"2396":4,"2397":1,"2400":4,"2401":4,"2402":4,"2403":2,"2404":2,"2405":3,"2406":5,"2407":2,"2408":2,"2411":4,"2413":2,"2414":3,"2417":6,"2418":2,"2420":1,"2421":1,"2422":2,"2423":4,"2424":4,"2425":3,"2428":2,"2431":4,"2432":1,"2437":2,"2441":4,"2442":1,"2444":1,"2445":1,"2446":1,"2447":2,"2448":2,"2450":3,"2452":1,"2455":1,"2457":1,"2458":1,"2463":1,"2464":1,"2466":1,"2467":1,"2468":4,"2469":3,"2472":2,"2473":1,"2474":13,"2475":2,"2476":2,"2477":1,"2478":3,"2480":3,"2481":1,"2483":1,"2490":4,"2491":3,"2492":1,"2494":1,"2497":2,"2498":1,"2501":1,"2502":2,"2503":1,"2504":1,"2506":1,"2508":1,"2510":2,"2513":8,"2514":2,"2515":2,"2518":1,"2519":2,"2521":1,"2523":7,"2524":8,"2525":4,"2526":2,"2529":1,"2530":2,"2532":1,"2533":3,"2534":1,"2539":3,"2541":2,"2543":1,"2544":2,"2545":1,"2546":5,"2548":3,"2549":3,"2550":4,"2552":1,"2553":5,"2554":1,"2555":2,"2556":2,"2557":4,"2558":5,"2559":3,"2560":2,"2563":1,"2564":10,"2565":1,"2566":11,"2567":6,"2568":1,"2569":2,"2570":4,"2571":1,"2574":9,"2575":12,"2576":19,"2577":29,"2578":1,"2584":4,"2585":5,"2587":7,"2588":1,"2589":1,"2590":1,"2591":1,"2592":6,"2593":5,"2594":6,"2595":4,"2596":6,"2597":2,"2598":2,"2599":1,"2600":4,"2601":2,"2605":1,"2607":1,"2608":1,"2610":2,"2611":1,"2614":4,"2615":4,"2616":1,"2617":1,"2619":1,"2622":2,"2623":1,"2625":1,"2627":1,"2631":1,"2632":1,"2637":1,"2638":1,"2643":1,"2645":1,"2648":2,"2651":1,"2653":2,"2655":1,"2660":1,"2661":2,"2665":2,"2666":2,"2671":2,"2672":3,"2673":2,"2674":4,"2675":1,"2676":1,"2677":4,"2678":1,"2679":1,"2680":2,"2681":1,"2682":2,"2683":7,"2684":2,"2686":18,"2687":1,"2688":14,"2689":6,"2691":2,"2692":1,"2694":8,"2695":16,"2696":1,"2697":5,"2698":1,"2699":1,"2700":2,"2701":2,"2702":2,"2703":1,"2705":2,"2706":1,"2707":2,"2708":2,"2709":3,"2710":5,"2711":2,"2713":3,"2714":1,"2718":1,"2719":6,"2720":3,"2723":2,"2724":4,"2725":1,"2726":1,"2727":4,"2728":7,"2729":2,"2730":2,"2734":2,"2735":4,"2736":3,"2737":3,"2738":6,"2739":1,"2740":3,"2741":1,"2742":1,"2743":4,"2744":2,"2745":6,"2746":6,"2747":3,"2748":3,"2749":5,"2750":3,"2752":4,"2753":4,"2754":1,"2757":7}}],["ordinarily",{"2":{"1431":1}}],["ordering",{"2":{"50":1,"1908":1,"2566":1}}],["order",{"0":{"1216":1,"1517":1,"1518":1,"2059":1},"2":{"10":1,"49":3,"50":1,"119":1,"124":1,"125":1,"132":1,"133":1,"134":1,"158":2,"174":1,"176":2,"185":1,"186":1,"188":1,"191":2,"211":1,"218":1,"221":1,"234":2,"272":1,"277":1,"278":1,"317":1,"399":1,"424":1,"509":1,"513":1,"516":2,"574":1,"621":1,"625":1,"669":1,"684":1,"685":1,"689":2,"694":1,"734":1,"760":1,"790":1,"824":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1132":1,"1133":1,"1148":1,"1214":3,"1216":7,"1243":1,"1287":1,"1302":1,"1326":1,"1332":1,"1340":1,"1352":2,"1427":1,"1451":1,"1517":2,"1518":7,"1676":1,"1821":1,"1908":1,"1918":1,"1950":1,"2042":1,"2059":5,"2106":1,"2122":1,"2123":1,"2149":1,"2157":1,"2162":1,"2169":1,"2171":1,"2261":1,"2274":1,"2299":1,"2300":1,"2327":1,"2344":1,"2450":2,"2472":1,"2513":2,"2523":1,"2524":2,"2546":1,"2552":1,"2566":1,"2567":1,"2575":1,"2691":1,"2718":1,"2728":1,"2729":1,"2735":1,"2757":1}}],["ored",{"2":{"1284":1}}],["orient",{"2":{"2126":1}}],["orientation",{"2":{"1915":5,"2577":1}}],["oriented",{"2":{"575":1,"1816":1,"2140":1,"2750":1}}],["oring",{"2":{"1451":2,"2410":1}}],["originating",{"2":{"1865":1,"1866":1}}],["original",{"2":{"124":1,"597":1,"1303":1,"1655":1,"1831":1,"2257":1,"2309":1,"2623":1,"2738":1}}],["originally",{"2":{"113":1,"1265":1,"1453":1,"2236":1,"2345":1,"2564":1}}],["origin",{"2":{"349":1,"359":2,"360":1,"361":2,"400":2,"554":1,"2438":3,"2477":6,"2479":4,"2480":1}}],["orange",{"2":{"149":1,"626":1,"1826":1,"1953":2,"2058":3}}],["organise",{"2":{"211":1}}],["organize",{"2":{"114":1,"149":1,"2295":1}}],["organization",{"2":{"21":1,"149":1,"268":1,"286":1,"2255":1,"2295":3}}],["org",{"2":{"149":1,"551":1,"1275":1,"1280":1,"1289":1,"1297":1,"1298":1,"1380":1,"1796":1,"2570":1}}],["orbit",{"2":{"149":1}}],["orthocode",{"2":{"277":1}}],["orthograph",{"2":{"249":1}}],["ortho60",{"2":{"199":1}}],["ortholinear",{"2":{"114":1,"624":1,"1403":1,"2268":1}}],["ortho",{"2":{"70":1,"143":4,"211":3,"249":1,"1349":4,"1352":1,"1405":1,"2270":1,"2294":1,"2559":2,"2566":1,"2672":1}}],["or",{"0":{"1271":1,"1879":1,"2159":1,"2472":1,"2669":1,"2729":1,"2741":1,"2753":1},"1":{"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1,"2730":1,"2731":1,"2732":1,"2733":1,"2734":1,"2735":1,"2736":1},"2":{"0":1,"9":1,"16":1,"19":1,"22":1,"23":1,"32":1,"39":1,"49":1,"52":1,"82":1,"87":1,"88":2,"90":2,"103":2,"104":2,"119":2,"126":2,"127":2,"131":1,"134":1,"138":1,"152":2,"153":2,"158":2,"160":1,"182":1,"191":1,"201":1,"202":1,"203":2,"214":2,"221":1,"222":1,"232":1,"234":4,"240":3,"244":1,"263":1,"268":1,"275":1,"291":1,"308":1,"337":3,"341":1,"352":5,"355":1,"356":2,"364":1,"366":1,"370":7,"371":3,"374":1,"376":1,"377":1,"378":3,"380":1,"381":3,"386":2,"387":1,"388":1,"389":1,"390":1,"391":1,"393":1,"394":1,"395":1,"400":1,"402":1,"403":1,"404":1,"405":3,"418":1,"428":1,"429":1,"433":1,"434":1,"436":1,"437":1,"448":2,"450":1,"453":3,"454":2,"457":1,"460":1,"461":1,"465":2,"469":1,"479":2,"481":1,"482":1,"485":1,"486":2,"497":1,"498":2,"502":6,"505":3,"506":2,"510":1,"511":1,"515":2,"522":1,"532":1,"533":1,"537":1,"538":1,"541":3,"551":2,"553":1,"554":3,"555":1,"557":4,"560":7,"561":1,"562":1,"563":1,"568":1,"569":1,"571":3,"580":4,"585":1,"586":2,"588":2,"589":2,"592":3,"597":1,"598":2,"601":1,"606":1,"607":1,"609":1,"610":1,"613":3,"623":2,"624":1,"626":5,"629":1,"630":2,"635":2,"638":1,"641":3,"643":1,"654":1,"655":4,"659":4,"660":6,"661":1,"663":1,"664":1,"681":1,"683":1,"693":1,"698":2,"700":1,"701":1,"729":1,"730":1,"750":3,"752":1,"755":1,"756":1,"777":3,"779":1,"784":1,"785":1,"809":3,"811":1,"816":1,"817":1,"848":1,"849":1,"876":3,"878":1,"883":1,"884":1,"910":3,"912":1,"917":1,"918":1,"944":3,"946":1,"951":1,"952":1,"978":3,"980":1,"985":1,"986":1,"1019":1,"1020":1,"1053":1,"1054":1,"1087":1,"1088":1,"1123":1,"1124":1,"1125":1,"1126":1,"1127":1,"1129":3,"1130":1,"1134":1,"1136":1,"1143":1,"1144":1,"1167":3,"1169":1,"1175":1,"1182":2,"1185":1,"1187":1,"1196":1,"1213":1,"1214":1,"1216":1,"1218":2,"1219":1,"1223":1,"1225":2,"1234":1,"1236":1,"1238":2,"1239":1,"1241":3,"1245":1,"1252":1,"1264":1,"1265":1,"1268":1,"1273":1,"1274":1,"1275":2,"1284":1,"1298":2,"1299":1,"1300":2,"1303":3,"1315":1,"1325":1,"1326":1,"1329":1,"1332":3,"1334":1,"1335":4,"1336":1,"1338":1,"1339":1,"1340":2,"1341":4,"1342":1,"1343":1,"1352":1,"1353":1,"1355":2,"1357":2,"1359":3,"1361":5,"1365":1,"1370":1,"1377":1,"1378":2,"1379":2,"1380":3,"1383":2,"1384":1,"1385":2,"1386":1,"1390":3,"1391":1,"1393":3,"1394":1,"1395":1,"1396":1,"1398":1,"1399":2,"1401":1,"1403":1,"1405":2,"1406":1,"1411":2,"1412":1,"1414":1,"1416":1,"1430":3,"1435":1,"1437":1,"1438":3,"1440":3,"1441":1,"1442":1,"1445":2,"1447":1,"1450":1,"1451":1,"1454":2,"1455":1,"1456":1,"1457":1,"1458":3,"1459":1,"1460":1,"1471":1,"1473":1,"1485":1,"1493":1,"1496":1,"1497":1,"1499":5,"1500":5,"1501":1,"1503":2,"1507":2,"1508":1,"1511":1,"1514":1,"1515":1,"1518":6,"1519":2,"1523":1,"1525":1,"1526":2,"1527":1,"1528":1,"1530":1,"1537":1,"1547":1,"1549":2,"1553":5,"1554":1,"1560":1,"1562":1,"1563":1,"1564":1,"1565":1,"1566":1,"1570":1,"1572":1,"1577":1,"1578":1,"1579":2,"1580":1,"1589":1,"1600":1,"1604":1,"1618":1,"1620":1,"1633":1,"1634":1,"1636":1,"1637":1,"1644":2,"1652":1,"1655":1,"1656":1,"1665":1,"1670":2,"1671":1,"1674":1,"1677":5,"1683":1,"1686":1,"1717":1,"1718":1,"1722":3,"1725":4,"1727":1,"1729":2,"1733":2,"1735":1,"1736":1,"1743":1,"1745":1,"1791":2,"1802":2,"1803":2,"1805":2,"1807":2,"1811":3,"1813":1,"1815":1,"1816":2,"1817":1,"1821":1,"1822":10,"1824":1,"1826":1,"1832":1,"1853":1,"1862":2,"1863":1,"1870":4,"1873":2,"1880":1,"1882":1,"1885":2,"1886":2,"1887":1,"1889":1,"1894":4,"1900":1,"1902":2,"1904":2,"1905":1,"1910":2,"1915":1,"1916":1,"1918":1,"1921":3,"1932":2,"1933":1,"1936":1,"1938":1,"1939":1,"1940":1,"1942":1,"1946":4,"1948":2,"1952":2,"1957":2,"1962":1,"1963":1,"1970":1,"1972":1,"2034":2,"2037":1,"2041":1,"2044":2,"2056":1,"2064":1,"2105":1,"2106":2,"2107":2,"2110":1,"2112":1,"2113":4,"2114":3,"2118":2,"2125":1,"2126":2,"2129":1,"2130":3,"2131":2,"2132":2,"2133":1,"2137":1,"2139":1,"2140":2,"2143":5,"2145":1,"2146":1,"2147":1,"2150":4,"2152":5,"2153":1,"2156":2,"2161":3,"2162":2,"2169":4,"2170":2,"2171":1,"2175":1,"2181":1,"2182":2,"2183":1,"2184":1,"2217":1,"2226":2,"2228":2,"2230":3,"2233":2,"2235":1,"2236":1,"2238":1,"2240":2,"2242":2,"2243":1,"2245":3,"2247":3,"2249":3,"2251":1,"2252":3,"2255":1,"2256":1,"2262":3,"2263":2,"2266":1,"2268":2,"2271":1,"2272":4,"2273":1,"2274":1,"2276":2,"2277":2,"2278":1,"2279":4,"2280":2,"2289":1,"2290":1,"2294":1,"2295":1,"2299":1,"2300":2,"2301":1,"2310":1,"2311":2,"2315":1,"2319":1,"2327":1,"2328":1,"2331":1,"2347":3,"2353":1,"2356":1,"2360":1,"2364":1,"2367":1,"2369":1,"2376":1,"2377":1,"2383":1,"2384":1,"2398":1,"2402":1,"2403":1,"2405":3,"2406":3,"2410":1,"2411":2,"2422":1,"2423":2,"2424":2,"2425":2,"2427":3,"2441":1,"2445":1,"2446":1,"2450":7,"2451":1,"2452":5,"2454":3,"2455":1,"2458":1,"2466":1,"2478":2,"2480":2,"2490":3,"2491":1,"2495":2,"2498":1,"2501":1,"2502":1,"2508":1,"2510":1,"2513":1,"2515":1,"2518":1,"2524":3,"2530":1,"2531":2,"2534":1,"2542":1,"2546":3,"2548":1,"2550":1,"2553":1,"2557":1,"2560":2,"2563":1,"2564":3,"2565":1,"2566":18,"2567":3,"2568":1,"2569":2,"2570":5,"2572":1,"2573":1,"2574":1,"2575":1,"2576":5,"2577":12,"2584":1,"2587":1,"2589":1,"2590":1,"2592":1,"2596":2,"2601":1,"2603":1,"2605":1,"2606":1,"2607":1,"2608":2,"2609":2,"2610":3,"2611":1,"2612":1,"2614":1,"2617":1,"2625":1,"2628":1,"2633":1,"2639":1,"2645":2,"2654":1,"2661":2,"2669":1,"2672":2,"2674":1,"2686":1,"2688":1,"2694":1,"2695":1,"2702":2,"2705":2,"2706":2,"2707":2,"2708":1,"2711":1,"2716":1,"2719":4,"2720":3,"2723":1,"2728":1,"2729":4,"2730":1,"2735":2,"2736":1,"2738":5,"2741":2,"2748":1,"2749":1,"2755":1}}],["dx",{"2":{"2702":1}}],["dg",{"2":{"2467":1}}],["dgk6x",{"2":{"199":1,"207":2}}],["dqt",{"2":{"2378":1,"2399":1}}],["dquote",{"2":{"462":2}}],["dquo",{"2":{"176":2,"2378":1,"2399":1,"2413":6}}],["dlr",{"2":{"2378":1,"2399":1}}],["d♯",{"2":{"1793":6,"2371":6}}],["ds5",{"2":{"1793":1,"2371":1}}],["ds4",{"2":{"1793":1,"2371":1}}],["ds3",{"2":{"1793":1,"2371":1}}],["ds2",{"2":{"1793":1,"2371":1}}],["ds1",{"2":{"1793":1,"2371":1}}],["ds",{"2":{"1793":1,"2371":1}}],["d♭",{"2":{"1793":6,"2371":6}}],["dwl",{"2":{"1573":1}}],["dwld",{"2":{"1572":1}}],["dwlu",{"2":{"1572":1}}],["dwell",{"2":{"1572":4,"1573":13,"2129":1}}],["dword",{"0":{"2091":1},"1":{"2092":1},"2":{"1331":1,"1333":1}}],["db5",{"2":{"1793":1,"2371":1}}],["db4",{"2":{"1793":1,"2371":1}}],["db3",{"2":{"1793":1,"2371":1}}],["db2",{"2":{"1793":1,"2371":1}}],["db1",{"2":{"1793":1,"2371":1}}],["dbl",{"2":{"1578":2}}],["dblsharp",{"2":{"1578":6}}],["dblclick",{"2":{"1578":14}}],["dbaas",{"2":{"1503":1}}],["db",{"2":{"1245":1,"1793":1,"2044":1,"2356":1,"2371":1,"2572":1}}],["db60",{"2":{"191":1}}],["d9",{"2":{"635":1}}],["d8",{"2":{"635":1,"2347":1}}],["d3",{"2":{"511":1,"1124":1,"1197":3,"1319":1,"1793":1,"2119":1,"2371":1,"2530":1,"2557":1,"2558":1}}],["d2",{"2":{"511":1,"1124":1,"1197":3,"1319":1,"1793":1,"1904":1,"1905":2,"1907":1,"2119":1,"2371":1,"2530":1,"2557":1,"2558":1}}],["d7",{"2":{"502":1,"506":1,"633":1,"1197":1,"1591":1,"2530":1}}],["d6",{"2":{"502":1,"633":1,"1197":1,"2276":1}}],["d4",{"2":{"502":1,"633":1,"1466":1,"1492":1,"1591":1,"1793":1,"2371":1,"2530":1,"2557":1}}],["d5",{"2":{"502":1,"1197":1,"1316":1,"1320":1,"1466":1,"1793":1,"1905":2,"1907":1,"2231":1,"2238":1,"2371":1,"2530":2,"2558":1}}],["dnworks",{"2":{"270":2,"277":2}}],["dpi",{"2":{"1874":2,"1875":1}}],["dprint",{"2":{"1250":1,"2130":1,"2263":2}}],["dprintf",{"2":{"50":1,"1250":1,"2130":1}}],["dp3000",{"2":{"226":2,"236":1}}],["dharma",{"2":{"211":1}}],["dyn",{"2":{"1555":1}}],["dynamically",{"2":{"119":1,"2584":1,"2671":1,"2728":1}}],["dynamic",{"0":{"119":1,"1553":1,"1555":1,"2363":1,"2633":1,"2728":1},"1":{"1554":1,"1555":1,"1556":1},"2":{"119":4,"134":1,"149":2,"176":3,"188":2,"191":4,"199":1,"211":1,"222":3,"236":2,"249":1,"277":2,"479":1,"515":1,"1553":11,"1554":6,"1555":4,"1556":6,"2363":6,"2375":6,"2633":1,"2724":1,"2727":2,"2728":10,"2749":2}}],["dymium65",{"2":{"211":1}}],["dyz",{"2":{"211":1}}],["dclk",{"2":{"2352":1}}],["dc",{"2":{"1819":2,"2576":10}}],["dc60",{"2":{"211":1}}],["dc01",{"2":{"114":2}}],["d",{"2":{"194":1,"196":8,"199":1,"211":1,"249":1,"266":3,"292":1,"313":1,"314":1,"375":3,"432":1,"437":1,"451":1,"452":1,"513":2,"530":2,"551":1,"556":2,"557":1,"559":1,"561":1,"574":1,"1239":2,"1254":1,"1380":1,"1383":1,"1384":2,"1385":1,"1436":1,"1503":2,"1508":2,"1511":1,"1530":1,"1680":8,"1686":1,"1793":19,"1815":1,"1932":1,"1934":2,"2130":1,"2139":1,"2148":1,"2153":1,"2174":1,"2183":1,"2240":2,"2242":2,"2243":2,"2244":1,"2270":1,"2307":1,"2347":1,"2355":3,"2371":19,"2386":3,"2401":1,"2407":1,"2453":1,"2459":1,"2491":1,"2573":10,"2575":2,"2576":4,"2577":4,"2702":1}}],["dvp",{"2":{"1355":1}}],["dv",{"2":{"176":2,"1499":1}}],["dvorak",{"0":{"2632":1},"2":{"92":1,"176":1,"1335":1,"1338":1,"1339":1,"1355":5,"1499":1,"1525":3,"1527":2,"2043":1,"2406":1,"2607":2,"2632":2,"2712":14}}],["ddr",{"2":{"1907":3}}],["ddram",{"0":{"1628":1},"1":{"1629":1},"2":{"1621":2,"1628":1,"1629":1}}],["ddrb",{"2":{"1312":1}}],["dd",{"2":{"176":2,"188":1,"191":10,"199":7,"211":1,"236":2,"277":6,"349":2}}],["djinn",{"2":{"176":1,"266":1}}],["dt40",{"2":{"222":1}}],["dtisaac",{"2":{"122":1}}],["dtisaac01",{"2":{"122":2}}],["dt",{"2":{"119":3,"2375":3,"2728":22}}],["dzr",{"2":{"2153":1}}],["dz60",{"2":{"211":1,"370":2}}],["dz60rgb",{"2":{"114":1,"149":1}}],["dztech",{"2":{"102":1,"149":1,"199":1,"211":1}}],["dribin",{"2":{"2311":1}}],["driving",{"2":{"655":1,"1225":1}}],["drives",{"2":{"176":1,"1390":1}}],["drive",{"2":{"173":1,"502":1,"662":1,"1134":1,"1391":1,"1395":1,"1396":1,"1458":1,"1573":2,"1576":1,"1577":1}}],["driven",{"0":{"109":1,"169":1,"184":1,"605":1},"1":{"110":1,"111":1,"112":1,"170":1,"606":1,"607":1,"608":1,"609":1,"610":1,"611":1,"612":1,"613":1,"614":1},"2":{"76":1,"109":1,"114":1,"149":2,"160":3,"169":1,"176":4,"184":1,"191":2,"199":13,"201":1,"211":26,"222":13,"236":6,"262":1,"266":68,"277":3,"389":1,"390":1,"496":2,"605":1,"661":1,"1225":1,"1316":1,"1317":1,"1387":2,"1458":2,"1471":1,"1723":1,"1821":1,"1853":1,"1856":1,"1857":1,"1870":1,"1944":1,"2299":1,"2519":1,"2555":1,"2560":1,"2566":2,"2671":1,"2750":1}}],["driver",{"0":{"210":1,"221":1,"233":1,"240":1,"244":1,"625":1,"630":1,"642":1,"654":1,"664":1,"681":1,"682":1,"684":1,"685":1,"686":1,"687":1,"689":1,"690":1,"691":1,"692":1,"693":1,"694":1,"699":1,"729":1,"755":1,"784":1,"816":1,"848":1,"852":1,"883":1,"917":1,"951":1,"985":1,"1019":1,"1023":1,"1053":1,"1057":1,"1087":1,"1121":1,"1131":1,"1132":1,"1133":1,"1134":1,"1143":1,"1174":1,"1195":1,"1212":1,"1218":1,"1219":1,"1220":1,"1221":1,"1222":1,"1223":1,"1226":1,"1229":1,"1230":1,"1460":1,"1461":1,"1462":1,"1463":1,"1464":1,"1466":1,"1467":1,"1469":1,"1470":1,"1588":1,"1724":1,"1810":1,"1823":1,"1871":1,"1945":1,"2135":1,"2287":1,"2536":1,"2537":1,"2538":1},"1":{"626":1,"627":1,"628":1,"629":1,"631":1,"632":1,"633":1,"634":1,"635":1,"636":1,"637":1,"638":1,"639":1,"640":1,"641":1,"643":1,"644":1,"645":1,"646":1,"647":1,"648":1,"649":1,"650":1,"651":1,"652":1,"653":1,"655":1,"656":1,"657":1,"658":1,"659":1,"660":1,"661":1,"662":1,"663":1,"665":1,"666":1,"667":1,"668":1,"669":1,"670":1,"671":1,"672":1,"673":1,"674":1,"675":1,"676":1,"677":1,"678":1,"679":1,"680":1,"682":1,"683":2,"684":1,"685":1,"686":1,"687":1,"694":1,"700":1,"701":1,"702":1,"703":1,"704":1,"705":1,"706":1,"707":1,"708":1,"709":1,"710":1,"711":1,"712":1,"713":1,"714":1,"715":1,"716":1,"717":1,"718":1,"719":1,"720":1,"721":1,"722":1,"723":1,"724":1,"725":1,"726":1,"727":1,"728":1,"730":1,"731":1,"732":1,"733":1,"734":1,"735":1,"736":1,"737":1,"738":1,"739":1,"740":1,"741":1,"742":1,"743":1,"744":1,"745":1,"746":1,"747":1,"748":1,"749":1,"750":1,"751":1,"752":1,"753":1,"754":1,"756":1,"757":1,"758":1,"759":1,"760":1,"761":1,"762":1,"763":1,"764":1,"765":1,"766":1,"767":1,"768":1,"769":1,"770":1,"771":1,"772":1,"773":1,"774":1,"775":1,"776":1,"777":1,"778":1,"779":1,"780":1,"781":1,"782":1,"783":1,"785":1,"786":1,"787":1,"788":1,"789":1,"790":1,"791":1,"792":1,"793":1,"794":1,"795":1,"796":1,"797":1,"798":1,"799":1,"800":1,"801":1,"802":1,"803":1,"804":1,"805":1,"806":1,"807":1,"808":1,"809":1,"810":1,"811":1,"812":1,"813":1,"814":1,"815":1,"817":1,"818":1,"819":1,"820":1,"821":1,"822":1,"823":1,"824":1,"825":1,"826":1,"827":1,"828":1,"829":1,"830":1,"831":1,"832":1,"833":1,"834":1,"835":1,"836":1,"837":1,"838":1,"839":1,"840":1,"841":1,"842":1,"843":1,"844":1,"845":1,"846":1,"847":1,"849":1,"850":1,"851":1,"852":1,"853":1,"854":1,"855":1,"856":1,"857":1,"858":1,"859":1,"860":1,"861":1,"862":1,"863":1,"864":1,"865":1,"866":1,"867":1,"868":1,"869":1,"870":1,"871":1,"872":1,"873":1,"874":1,"875":1,"876":1,"877":1,"878":1,"879":1,"880":1,"881":1,"882":1,"884":1,"885":1,"886":1,"887":1,"888":1,"889":1,"890":1,"891":1,"892":1,"893":1,"894":1,"895":1,"896":1,"897":1,"898":1,"899":1,"900":1,"901":1,"902":1,"903":1,"904":1,"905":1,"906":1,"907":1,"908":1,"909":1,"910":1,"911":1,"912":1,"913":1,"914":1,"915":1,"916":1,"918":1,"919":1,"920":1,"921":1,"922":1,"923":1,"924":1,"925":1,"926":1,"927":1,"928":1,"929":1,"930":1,"931":1,"932":1,"933":1,"934":1,"935":1,"936":1,"937":1,"938":1,"939":1,"940":1,"941":1,"942":1,"943":1,"944":1,"945":1,"946":1,"947":1,"948":1,"949":1,"950":1,"952":1,"953":1,"954":1,"955":1,"956":1,"957":1,"958":1,"959":1,"960":1,"961":1,"962":1,"963":1,"964":1,"965":1,"966":1,"967":1,"968":1,"969":1,"970":1,"971":1,"972":1,"973":1,"974":1,"975":1,"976":1,"977":1,"978":1,"979":1,"980":1,"981":1,"982":1,"983":1,"984":1,"986":1,"987":1,"988":1,"989":1,"990":1,"991":1,"992":1,"993":1,"994":1,"995":1,"996":1,"997":1,"998":1,"999":1,"1000":1,"1001":1,"1002":1,"1003":1,"1004":1,"1005":1,"1006":1,"1007":1,"1008":1,"1009":1,"1010":1,"1011":1,"1012":1,"1013":1,"1014":1,"1015":1,"1016":1,"1017":1,"1018":1,"1020":1,"1021":1,"1022":1,"1023":1,"1024":1,"1025":1,"1026":1,"1027":1,"1028":1,"1029":1,"1030":1,"1031":1,"1032":1,"1033":1,"1034":1,"1035":1,"1036":1,"1037":1,"1038":1,"1039":1,"1040":1,"1041":1,"1042":1,"1043":1,"1044":1,"1045":1,"1046":1,"1047":1,"1048":1,"1049":1,"1050":1,"1051":1,"1052":1,"1054":1,"1055":1,"1056":1,"1057":1,"1058":1,"1059":1,"1060":1,"1061":1,"1062":1,"1063":1,"1064":1,"1065":1,"1066":1,"1067":1,"1068":1,"1069":1,"1070":1,"1071":1,"1072":1,"1073":1,"1074":1,"1075":1,"1076":1,"1077":1,"1078":1,"1079":1,"1080":1,"1081":1,"1082":1,"1083":1,"1084":1,"1085":1,"1086":1,"1088":1,"1089":1,"1090":1,"1091":1,"1092":1,"1093":1,"1094":1,"1095":1,"1096":1,"1097":1,"1098":1,"1099":1,"1100":1,"1101":1,"1102":1,"1103":1,"1104":1,"1105":1,"1106":1,"1107":1,"1108":1,"1109":1,"1110":1,"1111":1,"1112":1,"1113":1,"1114":1,"1115":1,"1116":1,"1117":1,"1118":1,"1119":1,"1120":1,"1122":1,"1123":1,"1124":1,"1125":1,"1126":1,"1127":1,"1128":1,"1129":1,"1130":1,"1131":1,"1132":2,"1133":2,"1134":2,"1135":1,"1136":1,"1137":1,"1138":1,"1139":1,"1140":1,"1141":1,"1142":1,"1144":1,"1145":1,"1146":1,"1147":1,"1148":1,"1149":1,"1150":1,"1151":1,"1152":1,"1153":1,"1154":1,"1155":1,"1156":1,"1157":1,"1158":1,"1159":1,"1160":1,"1161":1,"1162":1,"1163":1,"1164":1,"1165":1,"1166":1,"1167":1,"1168":1,"1169":1,"1170":1,"1171":1,"1172":1,"1173":1,"1175":1,"1176":1,"1177":1,"1178":1,"1179":1,"1180":1,"1181":1,"1182":1,"1183":1,"1184":1,"1185":1,"1186":1,"1187":1,"1188":1,"1189":1,"1190":1,"1191":1,"1192":1,"1193":1,"1194":1,"1196":1,"1197":1,"1198":1,"1199":1,"1200":1,"1201":1,"1202":1,"1203":1,"1204":1,"1205":1,"1206":1,"1207":1,"1208":1,"1209":1,"1210":1,"1211":1,"1213":1,"1214":1,"1215":1,"1216":1,"1217":1,"1218":1,"1219":2,"1220":2,"1221":2,"1222":2,"1223":2,"1224":1,"1225":1,"1226":1,"1227":2,"1228":2,"1229":1,"1230":1,"1231":1,"1232":1,"1233":1,"1461":1,"1462":1,"1463":1,"1464":1,"1589":1,"1590":1,"1591":1,"1592":1,"1593":1,"1594":1,"1595":1,"1596":1,"1597":1,"1598":1,"1599":1,"1600":1,"1601":1,"1602":1,"1603":1,"1604":1,"1605":1,"1606":1,"1607":1,"1608":1,"1609":1,"1610":1,"1611":1,"1612":1,"1613":1,"1614":1,"1615":1,"1616":1,"1617":1,"1618":1,"1619":1,"1620":1,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1,"1626":1,"1627":1,"1628":1,"1629":1,"1811":1,"1812":1,"1813":1,"1814":1,"1815":1,"1816":1,"1817":1,"1818":1,"1819":1,"1820":1,"1821":1,"1822":1,"1823":1,"2136":1,"2137":1,"2138":1,"2139":1,"2140":1,"2141":1,"2142":1,"2143":1},"2":{"21":1,"31":5,"34":5,"50":1,"65":4,"75":1,"93":3,"94":2,"107":1,"112":1,"114":12,"118":10,"128":1,"133":2,"134":8,"149":13,"160":3,"174":2,"175":1,"176":13,"183":2,"191":18,"199":4,"210":2,"211":11,"220":2,"221":11,"222":7,"224":1,"232":4,"234":8,"236":25,"240":6,"248":1,"249":11,"266":3,"277":3,"625":1,"626":7,"627":6,"628":4,"629":3,"630":1,"631":2,"635":2,"642":1,"643":4,"646":1,"654":3,"655":2,"656":2,"657":3,"660":3,"661":2,"662":2,"664":1,"665":5,"666":2,"669":3,"672":2,"673":1,"674":1,"679":1,"680":2,"681":13,"684":2,"685":2,"686":1,"687":3,"688":10,"689":3,"690":2,"691":1,"692":4,"693":4,"694":2,"700":4,"701":1,"702":2,"703":3,"707":1,"729":1,"730":5,"731":1,"734":2,"737":4,"738":1,"741":1,"743":1,"745":1,"747":1,"749":1,"751":1,"753":1,"754":1,"755":1,"756":5,"757":4,"758":1,"760":5,"763":6,"764":1,"765":1,"767":1,"768":1,"770":1,"772":1,"774":1,"776":1,"778":1,"780":1,"781":1,"782":1,"783":1,"784":1,"785":5,"786":4,"787":1,"790":5,"793":6,"794":1,"795":1,"797":1,"798":1,"799":1,"800":1,"802":1,"804":1,"806":1,"808":1,"810":1,"812":1,"813":1,"814":1,"815":1,"816":1,"817":5,"818":4,"819":1,"824":5,"827":6,"828":1,"829":1,"831":1,"832":1,"834":1,"836":1,"838":1,"840":1,"842":1,"844":1,"845":1,"846":1,"847":1,"848":1,"849":5,"850":8,"851":1,"852":4,"857":5,"860":6,"861":1,"862":1,"864":1,"865":1,"866":1,"867":1,"869":1,"871":1,"873":1,"875":1,"877":1,"879":1,"880":1,"881":1,"882":1,"883":1,"884":5,"885":4,"886":1,"891":5,"894":6,"895":1,"896":1,"898":1,"899":1,"900":1,"901":1,"903":1,"905":1,"907":1,"909":1,"911":1,"913":1,"914":1,"915":1,"916":1,"917":1,"918":5,"919":4,"920":1,"925":5,"928":6,"929":1,"930":1,"932":1,"933":1,"934":1,"935":1,"937":1,"939":1,"941":1,"943":1,"945":1,"947":1,"948":1,"949":1,"950":1,"951":1,"952":5,"953":4,"954":1,"959":5,"962":6,"963":1,"964":1,"966":1,"967":1,"968":1,"969":1,"971":1,"973":1,"975":1,"977":1,"979":1,"981":1,"982":1,"983":1,"984":1,"985":1,"986":5,"987":4,"988":1,"993":5,"996":6,"997":1,"998":1,"1000":1,"1001":1,"1002":1,"1003":1,"1005":1,"1007":1,"1009":1,"1011":1,"1013":1,"1015":1,"1016":1,"1017":1,"1018":1,"1019":1,"1020":5,"1021":8,"1022":1,"1023":4,"1027":5,"1030":6,"1031":1,"1032":1,"1034":1,"1035":1,"1036":1,"1037":1,"1039":1,"1041":1,"1043":1,"1045":1,"1047":1,"1049":1,"1050":1,"1051":1,"1052":1,"1053":1,"1054":5,"1055":8,"1056":1,"1057":4,"1061":5,"1064":6,"1065":1,"1066":1,"1068":1,"1069":1,"1070":1,"1071":1,"1073":1,"1075":1,"1077":1,"1079":1,"1081":1,"1083":1,"1084":1,"1085":1,"1086":1,"1087":1,"1088":5,"1089":4,"1090":1,"1095":5,"1098":6,"1099":1,"1100":2,"1102":1,"1103":1,"1104":1,"1105":1,"1107":1,"1109":1,"1111":1,"1113":1,"1115":1,"1117":1,"1118":1,"1119":1,"1120":1,"1121":2,"1122":4,"1123":2,"1124":3,"1126":2,"1127":6,"1128":2,"1129":3,"1130":6,"1132":4,"1133":4,"1134":1,"1137":1,"1143":1,"1144":5,"1145":4,"1146":1,"1148":5,"1151":6,"1152":1,"1153":1,"1155":1,"1156":1,"1157":1,"1158":1,"1160":1,"1162":1,"1164":1,"1166":1,"1168":1,"1170":1,"1171":1,"1172":1,"1173":1,"1175":4,"1177":1,"1179":1,"1195":1,"1196":4,"1198":1,"1200":1,"1212":1,"1213":4,"1214":1,"1218":3,"1219":3,"1220":3,"1221":3,"1222":2,"1223":2,"1226":3,"1229":1,"1230":3,"1241":2,"1317":2,"1389":1,"1390":3,"1393":1,"1394":1,"1396":2,"1460":1,"1461":2,"1462":3,"1463":1,"1464":2,"1466":2,"1467":2,"1469":3,"1470":2,"1491":2,"1493":1,"1570":2,"1575":1,"1635":3,"1724":5,"1811":1,"1813":2,"1832":1,"1853":1,"1854":2,"1855":1,"1856":1,"1857":1,"1858":1,"1859":1,"1862":2,"1867":1,"1868":1,"1869":1,"1870":2,"1871":6,"1872":1,"1904":2,"1905":2,"1906":1,"1907":2,"1908":1,"1945":5,"1959":1,"2032":3,"2115":1,"2136":1,"2235":1,"2237":1,"2263":1,"2287":1,"2289":2,"2290":3,"2291":2,"2355":1,"2531":11,"2535":1,"2536":2,"2537":2,"2538":1,"2541":10,"2543":7,"2567":1,"2573":2,"2576":1,"2577":2,"2675":1,"2676":2,"2677":2,"2678":2,"2683":4,"2688":2,"2692":2,"2694":2,"2695":2,"2697":2,"2700":5}}],["drivers",{"0":{"128":1,"146":1,"327":1,"1854":1,"2284":1,"2285":1,"2535":1,"2576":1},"1":{"147":1,"148":1,"1855":1,"1856":1,"1857":1,"1858":1,"1859":1,"1860":1,"1861":1,"1862":1,"1863":1,"1864":1,"1865":1,"1866":1,"1867":1,"1868":1,"1869":1,"1870":1,"1871":1,"2286":1,"2287":1,"2288":1,"2289":1,"2290":1,"2291":1,"2536":1,"2537":1,"2538":1},"2":{"1":1,"33":2,"65":1,"74":2,"93":1,"113":2,"114":4,"128":1,"133":2,"134":11,"175":1,"176":3,"199":1,"211":2,"222":5,"233":2,"234":1,"236":8,"249":21,"266":1,"277":2,"327":2,"625":2,"628":3,"629":1,"664":1,"666":1,"684":1,"685":1,"686":1,"688":1,"699":1,"755":1,"757":1,"784":1,"786":1,"816":1,"818":1,"848":1,"850":1,"852":1,"883":1,"885":1,"917":1,"919":1,"951":1,"953":1,"985":1,"987":1,"1019":1,"1021":1,"1023":1,"1053":1,"1055":1,"1057":1,"1087":1,"1089":1,"1121":1,"1122":2,"1143":1,"1145":1,"1174":1,"1195":1,"1218":1,"1224":2,"1241":1,"1397":1,"1459":1,"1460":2,"1464":1,"1570":1,"1723":1,"1724":1,"1725":1,"1814":1,"1821":1,"1870":2,"1871":2,"1884":1,"1944":1,"1945":1,"1946":1,"2114":1,"2284":1,"2289":1,"2535":1,"2540":1,"2541":1,"2542":2,"2566":1,"2573":14,"2574":1,"2576":11,"2578":1,"2579":3,"2677":1,"2700":1}}],["drgblight",{"2":{"2300":2}}],["dr",{"2":{"2153":3,"2632":1}}],["drum",{"2":{"2108":1}}],["drv",{"2":{"1578":1}}],["drv2605l",{"0":{"1574":1,"1578":1,"1579":1,"1580":1},"1":{"1575":1,"1576":1,"1577":1,"1578":1},"2":{"221":2,"1570":1,"1572":4,"1574":1,"1576":5,"1577":8,"1578":1,"1579":2}}],["drone",{"2":{"616":1,"621":1}}],["drops",{"2":{"2226":1}}],["dropdown",{"2":{"626":1,"1235":1,"1236":1,"2183":1,"2513":2}}],["drop",{"2":{"73":1,"114":1,"119":1,"131":3,"134":1,"172":1,"173":1,"207":2,"211":1,"222":2,"236":1,"537":1,"540":1,"1310":1,"2398":1,"2411":1,"2436":1,"2490":1,"2527":1,"2545":1}}],["dropped",{"0":{"166":1},"2":{"50":1}}],["dry",{"2":{"396":1}}],["drhigsby",{"2":{"143":4,"149":2}}],["drastically",{"2":{"1331":1}}],["drashna",{"2":{"93":1,"114":5,"123":1,"134":1,"175":1,"179":1,"191":1,"1382":1,"1383":1,"1957":1}}],["drags",{"2":{"1809":1}}],["drag",{"0":{"1879":1,"1880":1},"2":{"236":1,"540":1,"1879":3,"1880":10,"1903":1,"2452":1}}],["drawtext",{"2":{"2577":7}}],["drawimage",{"2":{"2577":7}}],["drawing",{"0":{"2577":1},"2":{"125":5,"153":3,"1822":1,"2143":1,"2573":1,"2576":13,"2577":8,"2581":1}}],["draws",{"2":{"2576":1,"2577":1}}],["drawbacks",{"2":{"1265":1}}],["drawn",{"2":{"587":1,"618":1,"2576":2,"2577":3,"2598":1}}],["draw",{"2":{"153":1,"618":1,"2576":3,"2577":34,"2581":2,"2598":4,"2699":1}}],["drain",{"0":{"1225":1},"2":{"149":1,"243":1,"696":2,"1126":1,"1225":2}}],["draculad",{"2":{"114":1}}],["dm",{"2":{"1553":12,"1555":2,"2363":5}}],["dmote",{"2":{"226":2,"236":1}}],["dmq",{"2":{"176":1}}],["dmacros",{"2":{"1384":1}}],["dma1",{"2":{"1230":1}}],["dma",{"2":{"49":1,"50":3,"266":1,"703":4,"1221":2,"1222":1,"1223":1,"1230":4,"2528":1}}],["dmas",{"2":{"49":1}}],["dmamux",{"2":{"49":4,"1230":3}}],["dm9records",{"2":{"37":3}}],["dutch",{"2":{"2712":1}}],["duty",{"2":{"63":1,"704":2,"1454":1,"1457":1,"1459":1}}],["duophony",{"2":{"502":3}}],["duckypad",{"2":{"222":1}}],["ducky",{"2":{"211":1}}],["duckduckgo",{"2":{"196":1,"1680":1}}],["dumbpad",{"2":{"191":1}}],["dummy",{"2":{"191":1,"222":1,"636":1,"1677":4,"2738":4}}],["dumps",{"2":{"2262":3}}],["dump",{"2":{"49":3,"176":1,"211":1,"277":1,"566":1,"2262":5}}],["dubba175",{"2":{"143":2}}],["duplex",{"0":{"1125":1,"1128":1},"1":{"1126":1,"1127":1,"1129":1,"1130":1},"2":{"93":1,"107":3,"114":2,"176":1,"191":1,"277":1,"1121":2,"1122":2,"1125":4,"1126":1,"1127":1,"1128":4,"1129":1,"1130":3,"1134":3,"1136":2,"2543":4}}],["duplicating",{"2":{"2523":1}}],["duplication",{"2":{"4":1,"211":1,"236":3,"606":1,"2523":1,"2566":1}}],["duplicates",{"2":{"236":1}}],["duplicated",{"2":{"75":1,"236":1,"1594":1}}],["duplicate",{"2":{"4":1,"70":2,"75":1,"76":1,"160":1,"176":1,"191":2,"199":3,"211":2,"266":1,"277":1,"610":1,"2279":1,"2476":2,"2595":1,"2671":1}}],["duration",{"2":{"119":1,"120":1,"222":2,"599":1,"1354":1,"1357":2,"1406":3,"1504":1,"1675":1,"1951":1,"2044":2}}],["durgod",{"2":{"86":4,"102":2,"114":2,"149":1,"181":4,"191":1,"199":1,"207":2,"211":1}}],["during",{"2":{"49":1,"103":1,"107":1,"116":1,"118":1,"126":1,"131":1,"149":1,"170":1,"176":1,"191":1,"201":2,"213":1,"236":1,"249":1,"273":1,"396":1,"504":1,"571":1,"575":1,"587":1,"592":1,"658":1,"659":1,"662":1,"684":1,"1292":1,"1399":1,"1435":1,"1459":1,"1554":1,"1573":2,"1579":1,"1815":1,"1824":1,"1825":1,"1885":1,"1887":2,"1888":1,"2042":1,"2130":1,"2139":1,"2279":1,"2524":2,"2566":1,"2576":2,"2584":1,"2595":1,"2596":1,"2679":1,"2721":1,"2749":1}}],["dualbank",{"2":{"176":1}}],["dual",{"2":{"49":3,"114":2,"149":1,"176":1,"194":1,"505":3,"515":1,"1728":4,"1949":15,"2161":1,"2263":1,"2524":8,"2708":2,"2728":2,"2729":8,"2735":8,"2736":5,"2737":1,"2738":1}}],["due",{"2":{"45":1,"114":1,"120":1,"128":1,"134":2,"153":1,"167":1,"199":1,"233":1,"236":1,"273":1,"1128":1,"1217":1,"1219":1,"1221":1,"1230":1,"1241":1,"1243":1,"1270":1,"1289":1,"1403":1,"1416":1,"1437":1,"1447":1,"1725":1,"1894":1,"1946":1,"2031":1,"2146":1,"2182":1,"2183":1,"2343":1,"2349":1,"2401":1,"2406":1,"2468":1,"2514":1,"2521":1,"2549":1,"2564":1,"2566":1,"2573":1,"2664":1,"2718":1,"2719":1,"2746":1}}],["dfsr",{"2":{"2353":1}}],["dflash",{"2":{"1385":1}}],["df11",{"2":{"629":1,"2240":1}}],["df1deb37c163",{"2":{"315":1}}],["df",{"2":{"38":1,"247":2,"1335":1,"1548":2,"1886":1,"2367":1,"2385":1,"2395":1}}],["dfu",{"0":{"1241":1,"2230":1,"2231":1,"2240":1,"2243":1,"2244":1,"2343":1,"2450":1},"1":{"2231":1,"2232":1,"2241":1},"2":{"12":1,"49":2,"111":1,"114":1,"160":1,"199":1,"222":2,"240":5,"509":6,"514":4,"629":17,"1238":3,"1287":4,"1573":1,"2126":6,"2230":11,"2231":1,"2232":5,"2239":1,"2240":6,"2241":6,"2242":4,"2243":3,"2244":4,"2262":4,"2348":1,"2350":2,"2353":1,"2450":1,"2453":5,"2517":1}}],["d14",{"2":{"635":2}}],["d13",{"2":{"635":2}}],["d12",{"2":{"635":2}}],["d11",{"2":{"635":2}}],["d10",{"2":{"635":2}}],["d1",{"2":{"34":1,"511":1,"702":2,"1124":1,"1197":2,"1319":1,"1793":1,"1904":1,"2119":1,"2128":1,"2371":1,"2530":1,"2557":1}}],["d0",{"2":{"34":1,"502":1,"511":2,"702":2,"1124":1,"1197":2,"1293":1,"1319":1,"2119":1,"2125":1,"2128":2,"2530":1}}],["dio",{"2":{"2352":1}}],["dioded",{"2":{"2311":1}}],["diodes",{"0":{"2273":1,"2283":1},"2":{"2117":1,"2266":1,"2270":1,"2272":1,"2273":3,"2274":2,"2557":1,"2648":1,"2689":2}}],["diode",{"2":{"70":2,"111":1,"199":1,"502":2,"1552":1,"2125":2,"2133":3,"2268":4,"2272":1,"2273":12,"2276":2,"2279":2,"2311":4,"2557":1,"2558":1,"2566":1,"2646":1,"2689":1}}],["diameter",{"2":{"1863":3}}],["diagram",{"2":{"1573":1,"2533":1}}],["diagnose",{"2":{"1252":1}}],["dialog",{"2":{"1273":1}}],["die",{"2":{"1217":1}}],["dinterrupt",{"2":{"514":1}}],["ding",{"2":{"120":1,"1354":1}}],["diy",{"2":{"502":2,"2709":3}}],["dimensional",{"2":{"2155":1,"2689":1}}],["dimensions",{"2":{"1859":1}}],["dims",{"2":{"2038":1}}],["dimming",{"2":{"1454":1}}],["dimmer",{"2":{"435":1}}],["dim",{"2":{"435":1}}],["dictated",{"2":{"1400":1}}],["dictionaries",{"0":{"468":1},"2":{"1356":1,"1527":1,"2686":2,"2688":1,"2695":1}}],["dictionary",{"0":{"1527":1},"2":{"196":1,"436":1,"438":1,"439":1,"1440":3,"1441":1,"2144":1,"2674":1,"2686":4,"2688":2,"2694":1,"2695":2}}],["dict",{"2":{"211":1,"611":1,"1442":1}}],["dilemma",{"2":{"176":2,"249":1}}],["dig",{"2":{"1396":1,"2324":1,"2724":1}}],["digest",{"2":{"153":1}}],["digit",{"2":{"1644":3,"2091":1,"2093":1,"2095":1,"2097":1,"2348":1,"2699":2}}],["digital",{"2":{"160":1,"519":1,"527":1,"630":1,"1325":2,"1635":1,"1949":3,"2275":2,"2708":1}}],["digits",{"2":{"134":1,"341":1,"1441":1,"2311":1}}],["digitizers",{"2":{"190":1,"1531":1}}],["digitizer",{"0":{"100":1,"190":1,"1531":1,"1536":1,"1538":1,"1539":1,"1540":1,"1541":1,"1542":1,"1543":1,"1544":1,"1545":1},"1":{"1532":1,"1533":1,"1534":1,"1535":1,"1536":1,"1537":2,"1538":1,"1539":1,"1540":1,"1541":1,"1542":1,"1543":1,"1544":1,"1545":1,"1546":2},"2":{"100":2,"114":1,"190":3,"191":2,"1534":7,"1536":1,"1537":3,"1538":1,"1545":1}}],["dive",{"2":{"2280":1}}],["diverged",{"2":{"1265":1}}],["divergetm2",{"2":{"143":2}}],["diverge3",{"2":{"143":2}}],["dividing",{"0":{"280":1},"2":{"1181":1}}],["divided",{"2":{"1820":1,"2142":1}}],["divide",{"2":{"685":1,"694":1,"1817":1}}],["dividends",{"2":{"198":1}}],["divider",{"2":{"191":1,"1634":1}}],["divine",{"2":{"236":1}}],["division",{"2":{"114":1}}],["divisors",{"2":{"1227":1,"1880":1}}],["divisor",{"0":{"1180":1},"1":{"1181":1,"1182":1},"2":{"114":1,"236":1,"666":2,"685":2,"694":2,"1181":3,"1194":1,"1226":2,"1227":1,"1819":1,"1856":2,"1857":1,"1863":2,"1870":2,"1880":6,"1912":2,"2141":2,"2576":10}}],["diffused",{"2":{"2031":1}}],["diff",{"2":{"149":1,"292":1,"400":1,"556":1,"2039":1,"2620":1}}],["difficulty",{"0":{"1664":1},"1":{"1665":1,"1666":1}}],["difficulties",{"2":{"1514":1}}],["difficult",{"2":{"119":1,"123":1,"125":1,"185":1,"246":1,"481":1,"1684":1,"1803":1,"2269":1,"2270":2,"2273":1,"2274":1,"2568":1}}],["differs",{"2":{"2559":1,"2614":1}}],["difference",{"0":{"1676":1},"2":{"1300":1,"2550":1,"2569":1}}],["differences",{"0":{"1265":1},"2":{"2460":1}}],["differentiating",{"2":{"2148":1}}],["differentiates",{"2":{"592":1}}],["differentiate",{"2":{"468":1}}],["differently",{"2":{"1403":1,"1432":1,"1804":1,"1816":1,"1824":1,"2122":1,"2131":1,"2140":1,"2160":1,"2182":1,"2393":1,"2402":1,"2739":1}}],["different",{"0":{"1898":1,"2159":1},"1":{"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1},"2":{"49":1,"191":1,"204":1,"357":1,"371":1,"481":1,"499":1,"509":1,"511":2,"556":2,"560":3,"567":1,"592":1,"626":2,"635":1,"641":2,"689":1,"695":1,"1215":1,"1216":1,"1234":1,"1250":1,"1293":1,"1319":1,"1326":1,"1334":1,"1339":2,"1346":2,"1355":1,"1363":1,"1378":5,"1385":1,"1398":1,"1402":1,"1403":1,"1406":1,"1411":1,"1416":1,"1451":1,"1454":1,"1496":1,"1498":1,"1508":1,"1524":1,"1558":1,"1575":1,"1577":1,"1655":3,"1673":1,"1676":1,"1798":1,"1802":1,"1805":1,"1811":1,"1816":1,"1824":1,"1857":2,"1870":2,"2038":1,"2040":1,"2042":1,"2059":1,"2076":1,"2106":1,"2114":1,"2131":5,"2140":1,"2147":1,"2148":1,"2229":2,"2259":1,"2275":1,"2280":2,"2284":1,"2327":1,"2342":1,"2408":1,"2427":2,"2450":2,"2501":1,"2503":1,"2508":1,"2564":2,"2566":2,"2576":2,"2585":1,"2591":1,"2592":2,"2708":1,"2711":1,"2729":1,"2735":1,"2743":1,"2745":1,"2750":2,"2753":2}}],["differ",{"2":{"69":1,"656":1,"1863":1,"2162":1,"2342":1,"2474":1}}],["dip",{"0":{"105":1,"247":1,"1547":1,"1548":1,"1551":1,"1552":1,"2682":1},"1":{"1548":1,"1549":1,"1550":1,"1551":1,"1552":1},"2":{"105":13,"114":6,"191":1,"236":3,"247":9,"249":3,"633":1,"1547":7,"1548":10,"1549":6,"1551":1,"1552":1,"2682":3,"2697":2}}],["di",{"2":{"70":1,"201":1,"211":3,"506":2,"644":2,"1214":2,"1223":1,"1225":2,"2032":2,"2675":1,"2700":1}}],["didn",{"2":{"1359":1,"2167":1,"2512":1}}],["did",{"0":{"1253":1},"2":{"31":1,"125":1,"163":1,"185":1,"221":1,"545":1,"1412":2,"1450":1,"1686":4,"2279":1,"2422":1,"2425":1,"2454":1}}],["disk",{"2":{"2245":1,"2247":1,"2249":1}}],["dis",{"0":{"1519":1}}],["distclean",{"2":{"2262":1}}],["distinguish",{"2":{"2169":1,"2662":1}}],["distinction",{"2":{"2408":1}}],["distinct",{"0":{"2731":1},"2":{"1121":1,"1129":1,"1454":1,"1562":1,"1943":1}}],["distance",{"2":{"1860":9,"1870":2,"1950":1,"2276":1}}],["distances",{"2":{"1410":1,"1804":1,"1806":1}}],["distribution",{"2":{"2351":1}}],["distributed",{"2":{"1380":1,"2566":1,"2570":1}}],["distribute",{"2":{"526":1}}],["distros",{"2":{"1254":2,"2183":1,"2466":1}}],["distro",{"2":{"199":1}}],["disputes",{"2":{"2719":1}}],["disposal",{"2":{"2036":1}}],["displacements",{"2":{"1531":1}}],["displaying",{"2":{"2129":2}}],["displayed",{"2":{"424":1,"431":1,"1216":1,"1217":1,"2584":1,"2615":1}}],["displays",{"0":{"1820":1,"2142":1},"1":{"1821":1},"2":{"153":2,"210":1,"232":2,"236":1,"248":2,"249":1,"378":1,"587":1,"629":1,"1604":2,"1733":1,"1816":1,"1817":1,"1820":7,"1821":1,"1957":1,"2140":1,"2152":1,"2262":2,"2287":1,"2566":2,"2573":1,"2574":1,"2576":23}}],["display\\t",{"2":{"31":1,"34":1}}],["display",{"0":{"2576":1},"2":{"30":1,"31":2,"33":1,"34":1,"49":1,"63":1,"64":1,"82":1,"83":1,"92":1,"114":1,"123":1,"125":1,"153":1,"185":1,"211":1,"236":1,"378":1,"418":1,"586":1,"1247":1,"1248":1,"1249":1,"1448":1,"1533":1,"1591":8,"1596":1,"1598":1,"1600":1,"1602":1,"1603":1,"1605":2,"1607":1,"1609":1,"1615":1,"1616":1,"1617":1,"1618":1,"1619":1,"1622":2,"1624":2,"1628":1,"1803":1,"1815":3,"1816":1,"1817":3,"1818":2,"1819":5,"1820":23,"1821":2,"1822":13,"2129":2,"2136":1,"2139":4,"2140":4,"2141":5,"2142":8,"2143":14,"2150":2,"2280":1,"2298":1,"2355":1,"2439":2,"2556":1,"2567":1,"2573":1,"2574":5,"2576":13,"2577":46,"2578":1,"2579":2,"2581":15,"2584":1,"2614":1,"2619":1,"2671":1,"2686":1}}],["dispatched",{"2":{"2744":1}}],["dispatches",{"2":{"2744":1}}],["dispatchconsumerevent",{"2":{"1279":1}}],["dispatch",{"2":{"521":1,"2437":1,"2748":1}}],["disregarding",{"2":{"2720":1}}],["disregarded",{"2":{"282":3,"341":1}}],["disrupting",{"2":{"2041":1}}],["disruption",{"2":{"103":1}}],["discretion",{"2":{"2567":1,"2720":1}}],["disclosure",{"2":{"2566":1}}],["disc",{"2":{"1571":1}}],["discusses",{"2":{"1325":1}}],["discussed",{"2":{"50":1,"560":1,"1346":1}}],["discuss",{"2":{"496":1,"2564":1}}],["discussion",{"2":{"265":1,"2716":1}}],["discarded",{"2":{"176":1,"681":1,"2575":1}}],["discovered",{"2":{"2292":1}}],["discovery",{"2":{"119":1,"191":1,"222":1}}],["discouraged",{"2":{"282":1,"607":1,"2564":1}}],["disconnection",{"2":{"2128":1}}],["disconnect",{"2":{"149":1,"191":2,"1255":1,"2118":1}}],["disconnected",{"2":{"107":1,"134":1,"176":1,"2128":2,"2453":1}}],["discord",{"0":{"350":1},"2":{"49":1,"50":1,"213":1,"228":1,"276":1,"343":1,"344":1,"345":1,"349":1,"350":1,"356":1,"485":1,"551":1,"553":1,"560":1,"585":1,"609":1,"613":1,"1264":1,"2280":1,"2326":1,"2450":1,"2455":1,"2545":1,"2563":1,"2564":2,"2567":1,"2714":1}}],["discharge",{"2":{"49":1}}],["disappearance",{"2":{"2720":1}}],["disappearing",{"2":{"26":1}}],["disadvantages",{"2":{"2320":1}}],["disallows",{"2":{"2319":1}}],["disallow",{"2":{"1519":1}}],["disabling",{"0":{"1684":1,"2043":1,"2583":1},"2":{"28":1,"134":1,"266":1,"486":1,"512":1,"1271":2,"1300":2,"1894":1,"1897":1,"2628":1,"2702":3,"2708":1,"2737":1}}],["disables",{"2":{"114":1,"505":1,"515":1,"1332":1,"1425":1,"1499":2,"1522":1,"1526":1,"1554":1,"1894":1,"1895":1,"1954":1,"2035":1,"2575":4,"2702":3}}],["disabled",{"0":{"503":1},"2":{"50":1,"124":1,"134":2,"236":1,"249":1,"502":1,"560":2,"636":1,"698":2,"1294":1,"1316":1,"1332":1,"1398":1,"1406":1,"1411":2,"1414":1,"1439":1,"1446":3,"1495":1,"1516":1,"1522":1,"1528":1,"1570":2,"1573":1,"1868":1,"1887":2,"1894":1,"1897":1,"1932":1,"2045":1,"2073":1,"2105":1,"2161":1,"2183":1,"2305":1,"2343":4,"2574":1,"2699":1,"2743":1}}],["disable",{"0":{"25":1,"1475":1,"1487":1,"1739":1,"1740":1,"1897":1,"1966":1,"1967":1,"2053":1},"2":{"25":7,"50":1,"77":2,"114":6,"134":4,"158":1,"160":1,"176":1,"183":2,"191":2,"194":1,"195":1,"211":2,"222":2,"232":1,"236":3,"249":2,"335":1,"375":1,"435":1,"503":6,"505":1,"515":1,"592":1,"703":1,"750":3,"752":1,"777":3,"779":1,"809":3,"811":1,"876":3,"878":1,"910":3,"912":1,"944":3,"946":1,"978":3,"980":1,"1167":3,"1169":1,"1177":1,"1294":1,"1298":1,"1300":2,"1328":1,"1332":2,"1384":1,"1403":2,"1446":1,"1449":1,"1500":1,"1501":1,"1512":2,"1519":2,"1526":1,"1553":1,"1576":1,"1577":1,"1668":1,"1684":1,"1803":1,"1817":2,"1880":3,"1882":1,"1894":3,"1897":2,"1899":2,"1910":1,"1912":2,"1948":2,"1954":1,"1960":2,"2034":2,"2035":1,"2037":1,"2039":2,"2042":1,"2043":1,"2053":2,"2056":1,"2070":2,"2107":2,"2110":1,"2112":1,"2113":4,"2128":2,"2141":1,"2150":1,"2183":1,"2263":4,"2347":1,"2370":2,"2396":2,"2437":1,"2461":1,"2506":1,"2513":2,"2516":1,"2575":2,"2674":1,"2688":1,"2694":1,"2695":1,"2696":2,"2699":1,"2702":2,"2703":2,"2704":1,"2708":2,"2728":1}}],["dir=",{"2":{"2443":1,"2444":1,"2445":1}}],["dirty",{"2":{"114":1,"191":2,"199":1,"230":1,"1534":1,"1537":1,"1538":1,"1642":1,"1645":1,"1816":1,"1817":1,"1820":3,"1822":5,"2142":3,"2143":2,"2476":1,"2576":5}}],["dir",{"2":{"114":1}}],["dire",{"2":{"93":1}}],["directives",{"2":{"453":2,"496":1}}],["directive",{"2":{"172":1}}],["directional",{"0":{"259":1},"2":{"236":1,"256":1}}],["directions",{"2":{"201":2,"211":1,"1557":1,"1559":1,"1798":1,"1807":1,"1921":1}}],["direction",{"2":{"13":2,"70":2,"111":1,"191":1,"199":1,"211":2,"502":1,"560":1,"1556":5,"1557":2,"1808":1,"1817":1,"1915":1,"1932":2,"1948":2,"2034":2,"2268":1,"2272":1,"2376":2,"2377":2,"2557":2,"2558":1,"2566":1,"2689":1}}],["directpins",{"2":{"114":1}}],["directors",{"2":{"347":1}}],["directory",{"2":{"36":2,"50":1,"114":1,"132":1,"133":1,"134":3,"149":2,"160":1,"222":1,"236":1,"331":1,"370":9,"371":2,"373":1,"378":2,"381":2,"383":2,"386":2,"387":1,"389":1,"390":1,"391":1,"401":1,"404":1,"405":1,"446":1,"454":1,"529":1,"557":1,"564":1,"1241":1,"1729":2,"1935":1,"1952":2,"2252":1,"2258":1,"2259":1,"2264":1,"2277":1,"2347":1,"2353":1,"2421":1,"2437":2,"2441":1,"2445":3,"2446":1,"2447":1,"2452":1,"2463":1,"2469":1,"2498":3,"2501":2,"2513":2,"2523":1,"2548":1,"2553":2,"2575":6}}],["directories",{"2":{"18":1,"113":1,"114":3,"2564":1,"2566":1}}],["directly",{"2":{"16":1,"50":1,"132":1,"134":1,"164":1,"236":1,"282":3,"341":1,"432":1,"452":1,"506":2,"522":1,"609":1,"633":1,"661":1,"689":1,"1129":1,"1136":1,"1219":1,"1341":2,"1396":1,"1462":1,"1471":1,"1491":1,"1492":1,"1534":1,"1551":1,"1561":1,"1662":1,"1670":1,"1729":1,"1791":2,"1853":1,"1870":1,"1880":1,"1908":1,"1952":1,"2036":1,"2069":1,"2131":2,"2134":1,"2181":1,"2238":1,"2259":2,"2269":1,"2270":1,"2311":1,"2312":1,"2318":1,"2328":1,"2341":1,"2430":1,"2458":1,"2474":1,"2497":1,"2526":1,"2529":1,"2551":1,"2566":2,"2588":1,"2589":1,"2596":1,"2600":1}}],["direct",{"0":{"284":1,"1236":1,"2051":1,"2558":1},"2":{"3":1,"7":1,"15":1,"63":1,"199":2,"222":6,"279":1,"413":1,"502":1,"511":5,"580":3,"1234":9,"1235":3,"1236":3,"1948":1,"2131":2,"2497":1,"2558":3,"2566":2,"2689":2,"2745":1}}],["dirction",{"2":{"13":1}}],["dollars",{"2":{"2664":1}}],["dollar",{"2":{"2378":1,"2399":1}}],["dolor",{"2":{"301":1}}],["dor1",{"2":{"1907":1}}],["doe",{"2":{"1436":3,"1511":2}}],["doesnt",{"2":{"191":1,"515":1}}],["doesn",{"0":{"1270":1,"1281":1,"1288":1,"1291":1,"1292":1},"2":{"114":1,"352":1,"401":1,"515":1,"540":1,"560":1,"621":1,"1241":1,"1271":1,"1286":1,"1288":2,"1303":1,"1340":1,"1383":1,"1385":1,"1406":1,"1438":1,"1442":1,"1515":1,"1518":1,"1820":1,"1873":1,"2064":1,"2145":1,"2262":1,"2263":1,"2274":1,"2279":1,"2286":1,"2307":1,"2454":1,"2455":1,"2513":1,"2542":1,"2746":2,"2748":1,"2753":1}}],["does",{"0":{"562":1,"1243":1,"1411":1,"1438":1,"2316":1,"2317":1},"2":{"23":1,"28":1,"50":1,"134":1,"236":1,"276":1,"285":1,"303":1,"305":1,"307":1,"401":1,"433":1,"436":1,"437":1,"446":1,"462":1,"502":1,"510":1,"527":1,"540":1,"550":1,"556":3,"567":1,"572":1,"584":1,"592":1,"597":1,"625":1,"647":1,"654":1,"663":1,"675":1,"689":1,"697":1,"702":1,"741":1,"745":1,"749":1,"751":1,"768":1,"772":1,"776":1,"778":1,"800":1,"804":1,"808":1,"810":1,"832":1,"836":1,"840":1,"842":1,"867":1,"871":1,"875":1,"877":1,"901":1,"905":1,"909":1,"911":1,"935":1,"939":1,"943":1,"945":1,"969":1,"973":1,"977":1,"979":1,"1003":1,"1007":1,"1011":1,"1013":1,"1037":1,"1041":1,"1045":1,"1047":1,"1071":1,"1075":1,"1079":1,"1081":1,"1105":1,"1109":1,"1113":1,"1115":1,"1132":1,"1133":1,"1158":1,"1162":1,"1166":1,"1168":1,"1195":1,"1284":1,"1287":1,"1326":1,"1340":1,"1341":1,"1357":1,"1361":1,"1397":2,"1410":1,"1412":1,"1423":1,"1431":1,"1491":1,"1499":2,"1527":1,"1558":1,"1633":1,"1635":1,"1676":1,"1822":2,"1828":1,"1921":1,"1938":1,"1948":2,"2065":1,"2123":1,"2153":1,"2169":1,"2171":1,"2181":1,"2256":1,"2272":1,"2273":1,"2305":1,"2315":1,"2319":1,"2320":2,"2348":1,"2351":1,"2355":1,"2356":1,"2377":2,"2408":1,"2429":2,"2454":1,"2457":2,"2501":1,"2530":1,"2544":1,"2546":2,"2549":1,"2556":1,"2564":2,"2566":2,"2572":1,"2589":1,"2615":1,"2617":1,"2699":1,"2719":1,"2729":1,"2742":1,"2746":1}}],["doing",{"2":{"305":1,"435":1,"628":1,"1250":1,"1278":1,"1341":2,"1344":1,"1398":1,"1515":1,"2262":1,"2272":1,"2516":1,"2745":1,"2756":1}}],["doio",{"2":{"176":1,"191":1,"222":1,"249":1}}],["domain",{"2":{"279":1}}],["dogtag",{"2":{"211":1,"277":1,"390":2}}],["doxygen",{"2":{"160":1,"211":1,"2548":1}}],["doubt",{"2":{"656":1,"2418":1}}],["doubled",{"2":{"635":1,"1929":1,"2169":1}}],["double",{"0":{"2164":1,"2539":1},"2":{"152":1,"215":2,"335":1,"461":1,"548":1,"627":1,"628":1,"1336":1,"1500":4,"1929":1,"2122":2,"2161":3,"2164":1,"2167":1,"2169":22,"2170":4,"2171":5,"2245":2,"2247":2,"2249":3,"2275":1,"2280":1,"2348":1,"2378":1,"2399":1,"2411":1,"2498":1,"2539":7,"2541":1,"2680":1,"2702":1}}],["dout",{"2":{"45":1}}],["dozen0",{"2":{"143":2}}],["dozens",{"2":{"112":1}}],["dosa40rgb",{"2":{"134":1}}],["doc",{"2":{"199":1,"1275":1}}],["docker",{"0":{"2250":1},"1":{"2251":1,"2252":1,"2253":1,"2254":1},"2":{"114":1,"149":1,"2250":1,"2251":2,"2252":9,"2254":2}}],["docstring",{"0":{"463":1,"464":1,"465":1},"2":{"462":2}}],["docstrings",{"0":{"462":1},"1":{"463":1,"464":1,"465":1},"2":{"455":1,"462":2}}],["docs",{"0":{"402":1,"403":1},"2":{"114":3,"149":1,"160":1,"176":4,"182":1,"191":4,"199":2,"211":1,"222":1,"236":3,"279":1,"341":1,"350":1,"402":2,"403":3,"557":3,"558":1,"560":1,"607":1,"621":3,"626":1,"1243":1,"1321":1,"2258":1,"2280":1,"2409":1,"2482":1,"2553":2,"2566":1}}],["doctor",{"0":{"376":1,"397":1},"2":{"114":3,"176":1,"199":3,"376":4,"397":1,"2454":1}}],["documenting",{"0":{"621":1},"2":{"2354":1}}],["documented",{"2":{"213":1,"1450":1,"2237":1,"2286":1,"2306":1,"2442":1,"2571":1,"2660":1}}],["documents",{"2":{"32":1,"114":1,"342":1,"622":1,"1310":1,"2354":1,"2401":1,"2723":2,"2724":2,"2742":1}}],["documentation",{"0":{"22":1,"278":1,"416":1,"557":1,"558":1,"573":1,"577":1,"579":1,"580":1,"583":1,"586":1,"591":1,"595":1,"615":1,"622":1,"1333":1,"1345":1},"1":{"279":1,"280":1,"281":1,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":1,"423":1,"424":1,"558":1,"623":1,"624":1},"2":{"13":1,"22":1,"93":1,"99":1,"118":1,"123":1,"124":1,"134":1,"138":1,"149":1,"152":1,"153":1,"172":1,"174":1,"182":1,"195":1,"196":1,"202":1,"222":2,"228":1,"229":1,"232":1,"245":1,"247":1,"277":1,"278":1,"372":1,"403":1,"408":1,"409":1,"410":1,"446":1,"557":5,"611":1,"615":1,"616":1,"621":2,"641":1,"690":1,"1267":1,"1301":1,"1655":1,"1724":1,"1832":1,"1921":1,"1945":1,"2115":1,"2129":1,"2229":1,"2271":1,"2275":1,"2311":1,"2322":1,"2324":1,"2326":1,"2513":1,"2566":1,"2578":1,"2633":1,"2645":1,"2649":1,"2652":1,"2661":1,"2663":1,"2666":1,"2667":1,"2751":1,"2752":1}}],["document",{"0":{"355":1},"2":{"0":1,"76":1,"93":1,"176":1,"199":1,"307":1,"337":1,"341":1,"349":1,"367":1,"412":1,"427":1,"462":1,"482":1,"560":2,"615":1,"1341":1,"1380":1,"2152":1,"2441":1,"2473":2,"2475":2,"2492":1,"2503":1,"2514":1,"2563":1,"2564":2,"2615":2,"2721":1,"2742":1,"2745":1,"2746":1}}],["dots",{"2":{"485":1,"1589":2}}],["dotty",{"2":{"374":1,"611":1}}],["dotted",{"2":{"282":1}}],["dot",{"0":{"111":1},"2":{"111":1,"313":1,"530":2,"611":1,"1423":1,"1430":5,"1584":1,"1935":1,"2355":2,"2388":1,"2394":1,"2407":1}}],["downstream",{"2":{"2566":1}}],["downside",{"2":{"2543":1}}],["downward",{"2":{"1876":2}}],["downloadable",{"2":{"2303":1}}],["downloads",{"2":{"389":1,"390":1,"391":1,"522":2,"525":1,"2277":1,"2479":1}}],["downloaded",{"2":{"331":1,"2351":1,"2353":1,"2437":1,"2513":2}}],["download",{"0":{"309":1,"2497":1},"2":{"158":1,"304":1,"309":1,"310":1,"312":1,"329":1,"527":2,"541":1,"542":1,"1241":2,"2255":1,"2277":1,"2436":1,"2439":1,"2448":1,"2461":1,"2497":1,"2507":1,"2509":1,"2512":1}}],["down",{"0":{"590":1,"1361":1,"2641":1},"2":{"90":2,"119":3,"120":1,"149":1,"209":1,"222":1,"236":1,"255":1,"266":1,"313":1,"530":4,"537":1,"571":1,"589":1,"590":1,"591":2,"623":1,"624":1,"626":1,"684":1,"696":1,"1273":1,"1284":1,"1312":1,"1326":6,"1329":1,"1335":1,"1338":1,"1340":1,"1354":1,"1357":6,"1360":1,"1361":3,"1367":1,"1403":2,"1406":4,"1408":2,"1411":2,"1412":1,"1416":1,"1434":3,"1435":3,"1436":1,"1446":2,"1456":2,"1495":1,"1518":2,"1529":1,"1560":1,"1564":1,"1565":1,"1572":2,"1577":1,"1586":2,"1630":2,"1632":1,"1656":2,"1659":2,"1665":6,"1668":3,"1670":3,"1671":6,"1673":9,"1674":6,"1675":4,"1676":1,"1727":2,"1728":7,"1793":8,"1801":5,"1803":1,"1821":1,"1822":1,"1857":1,"1872":1,"1880":1,"1895":2,"1899":1,"1921":1,"1932":10,"1949":7,"1954":1,"2034":4,"2071":1,"2075":1,"2112":2,"2125":1,"2143":1,"2152":4,"2169":1,"2171":1,"2182":1,"2231":1,"2238":1,"2263":1,"2279":1,"2303":1,"2308":1,"2311":2,"2355":14,"2357":2,"2358":3,"2360":2,"2366":1,"2369":2,"2371":8,"2372":5,"2375":2,"2376":4,"2389":1,"2392":6,"2393":5,"2394":2,"2398":1,"2403":1,"2407":2,"2410":1,"2411":1,"2414":1,"2423":1,"2436":1,"2450":4,"2490":4,"2517":1,"2577":5,"2584":1,"2641":1,"2651":1,"2654":1,"2659":1,"2662":1,"2702":1,"2708":2,"2728":14,"2729":5,"2731":4,"2732":6,"2733":4,"2735":8,"2736":2,"2737":3,"2757":2}}],["downbubble",{"2":{"43":2}}],["dongles",{"2":{"2353":1}}],["dongle",{"2":{"2241":2,"2350":1}}],["donating",{"2":{"551":1}}],["done",{"2":{"104":1,"114":1,"125":1,"127":2,"182":1,"185":2,"224":1,"331":1,"347":1,"358":1,"482":1,"542":1,"546":1,"597":1,"614":1,"627":1,"681":1,"695":1,"701":1,"1129":1,"1177":1,"1237":1,"1300":1,"1303":1,"1332":1,"1344":1,"1385":1,"1415":2,"1450":1,"1451":1,"1804":1,"1821":1,"1827":1,"1876":1,"1898":1,"2133":1,"2147":1,"2230":2,"2235":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2255":8,"2272":1,"2275":1,"2277":1,"2279":1,"2280":1,"2309":2,"2318":1,"2347":1,"2420":1,"2446":1,"2456":1,"2469":1,"2478":1,"2479":1,"2512":1,"2513":1,"2566":1,"2568":2,"2569":1,"2576":20,"2577":1,"2703":1,"2709":1,"2746":1,"2753":1}}],["don",{"0":{"551":1,"1243":1,"1258":1},"2":{"31":1,"34":1,"119":1,"149":2,"166":1,"191":1,"198":1,"199":1,"222":1,"232":1,"277":2,"317":1,"396":1,"430":1,"453":1,"454":1,"455":1,"457":1,"479":1,"551":1,"560":1,"1137":1,"1177":1,"1236":1,"1242":1,"1262":1,"1265":1,"1276":2,"1287":1,"1325":1,"1331":1,"1367":1,"1383":2,"1385":1,"1403":1,"1404":1,"1430":1,"1438":1,"1450":1,"1495":1,"1515":1,"1560":1,"1655":1,"1885":1,"1948":1,"2133":1,"2149":1,"2172":1,"2254":1,"2272":1,"2311":1,"2405":2,"2417":1,"2424":1,"2444":1,"2453":1,"2454":1,"2468":1,"2497":1,"2508":1,"2533":1,"2553":1,"2556":1,"2606":1,"2614":1,"2703":3,"2708":1,"2724":1,"2728":2,"2752":1,"2757":2}}],["do",{"0":{"353":2,"546":2,"554":1,"1286":1,"1409":1,"1413":1,"1439":1,"1500":1,"1930":1,"2159":1,"2740":1},"1":{"354":2,"355":2,"356":2,"1410":1,"1411":1,"1412":1,"1413":1,"1414":1,"1415":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"1423":1,"1424":1,"1425":1,"1426":1,"1427":1,"1428":1,"1429":1,"1430":1,"1431":1,"1432":1,"1433":1,"1434":1,"1435":1,"1436":1,"1501":1,"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1},"2":{"14":1,"92":2,"132":1,"176":1,"194":1,"199":2,"211":1,"231":3,"232":2,"241":1,"253":1,"268":1,"270":1,"318":1,"353":1,"367":1,"381":1,"401":2,"435":1,"440":2,"446":2,"453":4,"454":1,"455":3,"457":1,"459":1,"460":2,"467":1,"469":2,"471":1,"474":1,"481":1,"485":2,"487":1,"516":1,"538":1,"551":2,"556":1,"559":2,"560":4,"562":1,"567":1,"572":2,"574":1,"587":2,"597":1,"623":1,"625":1,"626":1,"635":1,"658":1,"688":1,"701":2,"726":1,"852":1,"1023":1,"1057":1,"1137":1,"1195":1,"1243":2,"1270":2,"1287":1,"1300":1,"1302":3,"1325":1,"1331":1,"1332":2,"1338":1,"1340":1,"1353":2,"1357":1,"1359":1,"1360":1,"1375":1,"1383":1,"1384":2,"1385":2,"1390":1,"1393":1,"1396":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1442":1,"1493":1,"1495":1,"1497":1,"1498":1,"1499":1,"1507":2,"1511":1,"1515":1,"1523":1,"1527":1,"1553":1,"1560":1,"1665":1,"1668":1,"1677":1,"1680":1,"1683":1,"1716":1,"1725":1,"1729":1,"1787":1,"1807":1,"1816":1,"1821":1,"1830":1,"1873":1,"1885":1,"1899":1,"1905":3,"1907":4,"1933":1,"1946":1,"1952":1,"2041":2,"2059":1,"2103":1,"2123":1,"2124":1,"2125":1,"2126":1,"2132":1,"2140":1,"2153":1,"2160":2,"2161":1,"2162":1,"2169":1,"2171":1,"2231":1,"2238":1,"2242":1,"2259":2,"2263":2,"2270":1,"2286":1,"2305":2,"2306":1,"2311":1,"2316":1,"2319":1,"2327":2,"2330":1,"2332":1,"2334":1,"2335":1,"2347":1,"2348":1,"2351":1,"2397":1,"2417":1,"2421":1,"2422":1,"2423":1,"2425":1,"2427":2,"2433":1,"2437":1,"2445":1,"2450":1,"2454":1,"2462":1,"2469":1,"2476":1,"2477":2,"2478":1,"2479":1,"2481":1,"2491":1,"2495":1,"2498":2,"2499":1,"2507":1,"2512":1,"2513":1,"2524":1,"2525":1,"2526":1,"2542":1,"2549":1,"2556":1,"2557":1,"2565":1,"2566":4,"2568":1,"2577":2,"2584":1,"2603":1,"2607":1,"2608":2,"2610":1,"2612":2,"2667":1,"2671":1,"2687":1,"2701":1,"2702":1,"2703":1,"2710":1,"2711":2,"2728":3,"2735":2,"2736":2,"2738":1,"2740":1,"2744":2,"2753":1,"2756":1,"2757":1}}],["dave",{"2":{"2311":1}}],["dazzle",{"2":{"1929":1}}],["damage",{"2":{"1573":1,"2272":1,"2529":1}}],["damnit",{"2":{"290":1}}],["daemon",{"2":{"1239":1}}],["daunting",{"2":{"496":1}}],["dashes",{"2":{"460":1,"461":1}}],["dashed",{"2":{"282":1}}],["daskygit",{"2":{"175":1}}],["dac2",{"2":{"657":1}}],["dac1",{"2":{"657":5,"658":4}}],["dacs",{"2":{"657":1,"658":1}}],["dac",{"0":{"657":1,"658":1,"659":1,"1390":1,"1393":1},"1":{"660":1,"1391":1,"1392":1},"2":{"222":3,"236":2,"249":1,"656":2,"657":6,"658":7,"659":13,"660":6,"663":2,"1390":7,"1391":1,"1393":9,"1394":2,"1397":1,"1401":4,"2528":1,"2676":2}}],["dactyl",{"2":{"114":3,"191":1,"211":1,"217":4,"222":14,"226":1,"236":2,"277":1,"380":2,"2270":2,"2271":1}}],["days",{"0":{"346":1},"2":{"345":1,"346":2,"350":1}}],["day",{"0":{"347":1},"2":{"211":1,"340":1,"343":1,"344":1,"345":2,"350":4,"479":1}}],["daily",{"2":{"2506":1}}],["daily60",{"2":{"211":1}}],["dailycraft",{"2":{"143":7}}],["daisy",{"2":{"102":2}}],["dawn60",{"0":{"58":1},"2":{"58":3}}],["danielggordon",{"2":{"2169":1}}],["danish",{"2":{"1355":1,"2712":3}}],["danger",{"2":{"290":1,"2459":1}}],["dangerous",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"290":1,"337":2}}],["dango40",{"2":{"211":1}}],["dances",{"2":{"191":1,"2167":1,"2168":1,"2169":2,"2171":2}}],["dance",{"0":{"2159":1,"2161":1,"2166":1,"2169":1,"2170":1,"2171":1,"2663":1},"1":{"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1},"2":{"49":4,"176":3,"191":1,"199":1,"222":1,"249":1,"277":1,"503":1,"533":2,"1336":1,"1340":1,"1500":1,"1509":1,"1683":1,"2160":2,"2161":26,"2162":25,"2164":7,"2165":1,"2166":8,"2167":15,"2168":24,"2169":27,"2170":15,"2171":31,"2411":1,"2490":1,"2566":1,"2663":1,"2724":1,"2749":2}}],["datastructure",{"2":{"2404":1,"2745":2}}],["datasheets",{"2":{"701":1,"1129":1}}],["datasheet",{"2":{"149":1,"635":1,"638":1,"639":1,"664":1,"669":1,"684":3,"685":1,"689":1,"694":5,"697":1,"703":1,"729":1,"755":1,"784":1,"790":1,"816":1,"821":1,"824":1,"848":1,"854":1,"857":1,"883":1,"888":1,"891":1,"917":1,"922":1,"925":1,"951":1,"956":1,"959":1,"985":1,"990":1,"993":1,"1019":1,"1024":1,"1027":1,"1053":1,"1058":1,"1061":1,"1087":1,"1092":1,"1095":1,"1127":1,"1130":1,"1143":1,"1148":1,"1177":1,"1198":1,"1469":1,"1576":1,"1577":2,"1578":1,"1605":1,"1622":1,"2328":1,"2533":1,"2534":1}}],["datatypes",{"2":{"215":2,"2577":1}}],["datablock",{"2":{"191":1}}],["database",{"0":{"132":1,"401":1},"2":{"132":3,"134":1,"249":1,"401":4,"2512":2}}],["data",{"0":{"109":1,"169":1,"184":1,"605":1,"708":1,"711":1,"714":1,"717":1,"720":1,"723":1,"739":1,"766":1,"796":1,"830":1,"863":1,"897":1,"931":1,"965":1,"999":1,"1033":1,"1067":1,"1101":1,"1154":1,"1183":1,"1188":1,"1191":1,"1202":1,"1206":1,"1208":1,"1450":1,"1611":1,"1613":1,"1617":1,"1624":2,"1921":1,"1922":1,"1925":1,"1927":1,"2129":1,"2130":1,"2591":1,"2599":1,"2600":1},"1":{"110":1,"111":1,"112":1,"170":1,"606":1,"607":1,"608":1,"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"709":1,"710":1,"712":1,"713":1,"715":1,"716":1,"718":1,"719":1,"721":1,"722":1,"724":1,"725":1,"740":1,"767":1,"797":1,"831":1,"864":1,"898":1,"932":1,"966":1,"1000":1,"1034":1,"1068":1,"1102":1,"1155":1,"1184":1,"1185":1,"1189":1,"1190":1,"1192":1,"1193":1,"1203":1,"1207":1,"1209":1,"1451":1,"1452":1,"1612":1,"1614":1,"1618":1,"1625":2,"1926":1,"1928":1},"2":{"45":2,"76":2,"107":4,"109":1,"114":3,"149":2,"160":3,"169":1,"176":6,"184":1,"191":3,"199":13,"201":2,"211":29,"214":1,"222":13,"236":7,"249":2,"251":1,"262":2,"266":68,"277":3,"282":2,"314":2,"334":1,"374":2,"389":1,"390":1,"405":1,"434":1,"496":2,"511":3,"519":1,"566":1,"605":1,"607":2,"609":1,"610":2,"612":2,"642":1,"656":2,"661":2,"683":1,"703":1,"709":3,"712":2,"715":3,"718":3,"721":1,"724":1,"740":1,"767":1,"797":1,"831":1,"864":1,"898":1,"932":1,"966":1,"1000":1,"1034":1,"1068":1,"1102":1,"1123":1,"1126":1,"1129":3,"1155":1,"1184":1,"1189":3,"1192":2,"1203":1,"1205":1,"1207":3,"1209":2,"1210":2,"1212":1,"1214":1,"1215":1,"1217":1,"1225":1,"1232":1,"1287":1,"1331":1,"1333":1,"1396":1,"1438":2,"1440":3,"1441":1,"1448":1,"1450":2,"1451":4,"1492":1,"1573":1,"1591":1,"1594":1,"1612":2,"1614":2,"1618":2,"1624":2,"1625":2,"1714":1,"1821":3,"1822":22,"1825":1,"1830":2,"1855":1,"1863":2,"1867":1,"1869":1,"1870":1,"1872":3,"1873":4,"1874":7,"1875":3,"1903":2,"1904":1,"1905":3,"1906":2,"1907":6,"1908":2,"1910":2,"1921":3,"1922":2,"1923":8,"1926":2,"1928":2,"1958":2,"1959":1,"2031":1,"2032":3,"2044":1,"2061":1,"2128":3,"2130":17,"2131":1,"2141":1,"2143":11,"2150":1,"2166":1,"2167":3,"2168":6,"2169":4,"2170":4,"2171":4,"2226":1,"2276":1,"2299":1,"2311":4,"2347":3,"2400":1,"2401":1,"2479":1,"2555":1,"2560":1,"2566":3,"2574":1,"2575":2,"2576":2,"2577":5,"2585":3,"2589":1,"2591":2,"2592":3,"2593":1,"2596":1,"2599":6,"2615":7,"2671":2,"2675":2,"2686":2,"2692":2}}],["dates",{"0":{"340":1},"2":{"350":1}}],["date",{"2":{"6":2,"10":1,"157":1,"347":1,"349":1,"350":10,"556":1,"2134":1,"2466":1,"2478":1,"2497":1,"2546":1,"2549":1,"2564":1}}],["deutsche",{"2":{"2658":1}}],["derivatives",{"2":{"2468":1}}],["derive",{"2":{"685":1,"694":1,"1227":1}}],["derived",{"2":{"323":1,"2344":1,"2711":1}}],["dereferencing",{"2":{"1815":1,"2139":1}}],["deghost",{"2":{"786":1,"788":1}}],["degradation",{"2":{"2574":1}}],["degrade",{"2":{"1817":1}}],["degrading",{"2":{"209":1}}],["degree",{"0":{"1821":1},"2":{"1554":1,"1556":1,"1820":2,"1821":3,"1861":3}}],["degrees",{"2":{"31":1,"34":1,"1816":1,"1870":1,"1872":3,"1873":3,"1915":1,"2140":1,"2577":1,"2597":1,"2686":1}}],["denote",{"2":{"2403":1,"2596":2}}],["denoted",{"2":{"1822":1,"2143":1,"2585":1,"2592":1}}],["denotes",{"2":{"689":1,"690":1,"691":1,"758":1,"787":1,"819":1,"851":1,"852":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1023":1,"1056":1,"1057":1,"1090":1,"1146":1,"1215":1,"2595":1,"2596":1,"2683":1}}],["density",{"0":{"1142":1},"2":{"114":1,"2353":2}}],["deeper",{"2":{"1335":1,"2162":1}}],["deeply",{"2":{"611":1}}],["deep",{"2":{"496":1,"499":2,"2295":1}}],["dedicate",{"2":{"1935":1}}],["dedicates",{"2":{"1234":3}}],["dedicated",{"2":{"492":1,"681":1,"1122":1,"1264":1,"1457":1,"1499":1,"1555":1,"1563":1,"1658":1,"1668":2,"1729":1,"1952":1}}],["dedupe",{"2":{"236":1}}],["dekunukem",{"2":{"222":1}}],["demand",{"2":{"2477":2}}],["demo",{"2":{"2040":1,"2131":1}}],["demonstrate",{"2":{"2742":1}}],["demonstrates",{"2":{"2033":1}}],["demonstration",{"2":{"1923":1,"2036":1}}],["demiurge",{"2":{"211":1}}],["demultiplexer",{"2":{"149":1}}],["dead",{"2":{"2490":1,"2654":1,"2711":1}}],["deadline",{"2":{"350":1,"511":1}}],["deadlock",{"2":{"191":2,"199":1}}],["deadlocks",{"2":{"176":1}}],["deaf",{"2":{"2144":1}}],["deactivating",{"2":{"1898":1,"2680":1}}],["deactivation",{"0":{"1674":1},"2":{"1668":1,"1886":2,"1894":1,"1895":1}}],["deactivates",{"2":{"1340":1,"1506":1,"1507":1,"1668":1,"1674":1,"2680":1}}],["deactivate",{"2":{"1337":1,"1506":1,"1671":1,"1885":2,"2112":1,"2113":4,"2146":1}}],["deactivated",{"2":{"1335":1,"1398":1,"1399":2,"1670":2,"1671":1,"1674":1,"1885":1}}],["deassert",{"2":{"1194":1,"1540":1,"1542":1,"1544":1}}],["deals",{"2":{"1270":1,"2557":1}}],["deal",{"2":{"1259":1,"2324":1}}],["dealt",{"2":{"587":1}}],["dealing",{"2":{"11":1,"2267":1}}],["de",{"0":{"788":1,"821":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1},"2":{"134":1,"199":4,"266":1,"788":1,"1335":2,"1934":1,"2355":1,"2712":2}}],["detrimental",{"2":{"276":1}}],["detach",{"0":{"2582":1},"2":{"266":1,"2582":2}}],["detailing",{"2":{"2472":1}}],["detail",{"2":{"176":2,"355":1,"556":1,"1281":1,"1672":1,"2162":1,"2262":1,"2354":1,"2750":1}}],["details",{"0":{"300":1,"445":1,"446":1,"447":1,"2162":1,"2409":1},"2":{"163":1,"195":1,"224":1,"228":1,"229":1,"232":1,"290":2,"303":1,"308":2,"336":1,"371":1,"436":1,"446":1,"470":1,"496":1,"505":3,"626":1,"628":1,"701":1,"1235":1,"1242":1,"1244":1,"1326":1,"1335":1,"1340":1,"1341":1,"1380":1,"1389":1,"1402":1,"1406":1,"1416":1,"1450":1,"1500":1,"1553":1,"1589":1,"1662":1,"1714":1,"1939":1,"1958":1,"1959":1,"2041":1,"2044":1,"2165":1,"2178":1,"2262":1,"2263":2,"2300":1,"2313":1,"2367":1,"2385":1,"2409":1,"2439":1,"2454":1,"2561":1,"2570":1,"2727":1}}],["detailed",{"0":{"71":1,"519":1,"2262":1},"1":{"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"520":1,"521":1,"522":1,"523":1,"524":1,"525":1,"526":1,"527":1,"2263":1,"2264":1},"2":{"14":1,"70":1,"492":1,"1241":1,"1278":1,"1334":1,"1806":1,"2115":1,"2134":1,"2172":1,"2299":1,"2473":1,"2475":1,"2562":1}}],["detent",{"2":{"1557":1,"1562":2}}],["determining",{"2":{"1340":1,"2147":1,"2697":1}}],["deterministically",{"2":{"230":1}}],["determines",{"2":{"370":1,"1181":1,"2126":1,"2697":1,"2727":1}}],["determined",{"2":{"353":1,"430":1,"509":2,"510":2,"689":1,"2402":1}}],["determine",{"2":{"114":1,"119":1,"157":1,"484":1,"509":1,"510":1,"597":1,"685":1,"689":1,"703":1,"1177":1,"1198":1,"1210":1,"1405":1,"1423":1,"1469":1,"2123":1,"2124":1,"2125":2,"2170":2,"2171":1,"2548":2,"2567":1,"2697":1,"2748":1}}],["detects",{"2":{"2311":1}}],["detected",{"0":{"1240":1},"2":{"211":1,"266":1,"505":1,"689":1,"1300":1,"1825":2,"1826":8,"1828":1,"1830":1,"2128":1,"2147":1,"2252":1,"2454":1,"2513":1,"2697":2}}],["detecting",{"2":{"132":1,"511":2,"2131":2,"2132":1,"2234":1,"2417":2,"2509":1,"2584":1,"2587":1,"2593":1,"2594":1,"2744":1,"2745":1}}],["detection",{"0":{"1824":1,"1827":1,"2748":1},"1":{"1825":1,"1826":1,"1827":1,"1828":1,"1829":1,"1830":1,"1831":1},"2":{"114":1,"175":1,"199":4,"249":3,"689":1,"1320":1,"1321":1,"1445":1,"1825":1,"1827":1,"1829":3,"1830":3,"1873":1,"2131":1,"2132":3,"2133":2,"2745":1}}],["detect",{"2":{"112":1,"199":1,"377":1,"511":6,"626":1,"1302":1,"1303":1,"1320":1,"1448":1,"1825":1,"2131":5,"2132":3,"2133":2,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":2,"2247":2,"2249":2,"2311":1,"2513":1,"2566":1,"2648":1,"2697":2,"2757":1}}],["debt",{"2":{"187":1,"198":1,"201":1,"213":1,"224":1,"238":1}}],["debian",{"2":{"114":3,"2431":1,"2464":1,"2468":3}}],["debouncing",{"0":{"1330":1},"2":{"94":1,"222":1,"515":1,"566":2,"1325":3,"1326":12,"1329":6,"1330":2,"1827":2,"1868":1,"2263":1}}],["debouncer",{"2":{"149":1}}],["debounce",{"0":{"1326":1,"1327":1,"1328":1,"1329":1},"1":{"1328":1,"1329":1,"1330":1},"2":{"70":2,"111":1,"112":1,"114":3,"134":1,"149":1,"176":1,"199":3,"222":2,"236":1,"502":1,"515":1,"566":4,"1325":3,"1326":6,"1327":1,"1328":3,"1329":10,"1330":4,"1497":1,"1829":2,"1865":1,"1866":1,"1868":1,"1889":1,"1894":4,"1900":1,"2263":1,"2566":3,"2674":2,"2689":2,"2725":1}}],["debugged",{"2":{"2614":1}}],["debuggers",{"2":{"336":1}}],["debugger",{"0":{"327":1,"334":1,"335":1,"336":1},"2":{"335":1,"1341":2,"2513":2,"2755":1,"2757":1}}],["debugging",{"0":{"322":1,"333":1,"1244":1,"1245":1,"1246":1,"1247":1,"1248":1,"1249":1,"2487":1,"2489":1,"2513":1,"2755":1},"1":{"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":2,"335":2,"336":2,"1245":1,"1246":1,"1247":2,"1248":2,"1249":2,"1250":1,"1251":1,"1252":1,"1253":1,"1254":1,"1255":1,"2488":1,"2489":1},"2":{"82":1,"114":1,"322":1,"328":1,"331":1,"335":1,"336":1,"375":1,"502":1,"503":2,"1138":1,"1251":2,"1255":1,"1294":1,"1530":4,"1884":1,"2263":1,"2492":1,"2503":1,"2508":1,"2513":4,"2530":1,"2574":2,"2616":1,"2639":1,"2716":1}}],["debug=1",{"2":{"249":1,"2755":2}}],["debug",{"0":{"1250":1,"1251":1,"1830":1,"1916":1},"1":{"1252":1,"1253":1},"2":{"24":1,"34":1,"49":1,"50":1,"65":1,"114":2,"176":1,"188":1,"191":2,"199":1,"211":1,"249":2,"277":1,"334":1,"335":2,"336":1,"433":2,"481":1,"503":1,"515":2,"1138":2,"1245":8,"1246":1,"1247":1,"1248":1,"1249":1,"1250":3,"1253":1,"1254":1,"1255":3,"1341":2,"1530":4,"1830":1,"1884":2,"1916":5,"2044":4,"2262":1,"2263":4,"2356":2,"2424":1,"2429":1,"2457":1,"2513":9,"2572":2,"2574":3,"2755":1}}],["devuan",{"2":{"2431":1,"2464":1}}],["devaddr",{"0":{"714":1,"717":1,"720":1,"723":1},"1":{"715":1,"716":1,"718":1,"719":1,"721":1,"722":1,"724":1,"725":1},"2":{"715":1,"718":1,"721":1,"724":1}}],["devastatingtkl",{"2":{"211":1}}],["devised",{"2":{"2319":1}}],["deviation",{"2":{"1860":1}}],["deviate",{"2":{"367":1,"2541":1}}],["device",{"0":{"118":1,"175":1,"190":1,"627":1,"1240":1,"1241":1,"1254":1,"1809":1,"1853":1,"1859":1,"1882":1,"1901":1},"1":{"1854":1,"1855":1,"1856":1,"1857":1,"1858":1,"1859":1,"1860":1,"1861":1,"1862":1,"1863":1,"1864":1,"1865":1,"1866":1,"1867":1,"1868":1,"1869":1,"1870":1,"1871":1,"1872":1,"1873":1,"1874":1,"1875":1},"2":{"63":1,"70":2,"100":2,"111":1,"114":1,"118":13,"134":3,"138":3,"146":1,"149":2,"169":2,"175":4,"176":7,"184":2,"190":3,"191":7,"211":4,"240":2,"249":1,"266":1,"273":2,"331":1,"502":3,"505":1,"625":3,"626":3,"627":4,"628":6,"629":5,"635":1,"683":1,"697":1,"701":1,"708":1,"709":2,"711":1,"712":2,"714":1,"715":2,"717":1,"718":2,"720":1,"721":2,"723":1,"724":2,"727":2,"1125":1,"1128":1,"1181":1,"1183":1,"1186":1,"1187":1,"1188":1,"1191":1,"1197":1,"1201":1,"1238":1,"1239":1,"1240":2,"1252":1,"1254":5,"1255":1,"1292":2,"1315":1,"1322":1,"1325":2,"1531":2,"1570":2,"1634":2,"1791":1,"1792":3,"1797":1,"1809":1,"1813":1,"1827":1,"1829":1,"1832":1,"1853":3,"1854":1,"1855":4,"1856":2,"1857":1,"1858":1,"1859":1,"1862":2,"1863":2,"1865":2,"1866":1,"1867":3,"1868":1,"1869":4,"1870":10,"1871":6,"1872":23,"1873":15,"1874":11,"1875":9,"1876":9,"1878":3,"1879":2,"1880":1,"1882":5,"1883":6,"1884":2,"1885":3,"1887":2,"1889":1,"1900":2,"1901":10,"1902":1,"1915":6,"1921":5,"1923":7,"2071":5,"2129":2,"2177":1,"2229":1,"2230":2,"2232":1,"2233":2,"2234":2,"2235":3,"2236":1,"2237":3,"2238":2,"2239":1,"2240":2,"2241":1,"2242":2,"2243":2,"2244":2,"2245":2,"2247":2,"2249":2,"2299":5,"2344":1,"2346":1,"2347":4,"2350":1,"2407":1,"2450":3,"2453":3,"2513":3,"2556":2,"2566":1,"2576":56,"2577":52,"2581":3,"2646":1,"2655":1,"2669":1,"2692":2,"2699":2}}],["devices",{"0":{"11":1,"138":1,"1883":1},"2":{"11":2,"49":3,"138":1,"149":1,"174":2,"175":1,"190":1,"191":1,"229":1,"263":1,"266":1,"276":1,"331":2,"375":1,"556":2,"626":2,"627":1,"628":3,"629":1,"630":1,"635":4,"689":1,"692":1,"702":1,"726":1,"1176":2,"1216":1,"1219":1,"1224":1,"1227":1,"1240":1,"1255":1,"1326":1,"1390":1,"1401":1,"1491":1,"1609":1,"1613":1,"1824":1,"1829":1,"1830":1,"1875":1,"1902":1,"1921":2,"2085":1,"2087":1,"2100":1,"2101":1,"2129":1,"2240":1,"2284":1,"2322":3,"2328":1,"2350":1,"2451":1,"2513":1,"2518":1,"2523":1,"2546":3,"2548":2,"2549":1,"2556":1,"2566":1,"2573":1,"2576":14,"2725":1}}],["dev",{"2":{"108":1,"325":1,"328":1,"401":1,"429":1,"2347":2,"2430":1,"2431":2,"2464":4,"2480":5,"2481":1,"2513":1}}],["developing",{"2":{"2308":1,"2322":1,"2478":1,"2492":1,"2503":1,"2568":1}}],["developed",{"2":{"2235":1,"2632":1,"2719":1}}],["developer=true",{"2":{"429":1}}],["developer",{"0":{"398":1,"429":1},"1":{"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1,"410":1,"411":1},"2":{"311":1,"319":1,"429":1,"537":1}}],["developers",{"0":{"319":1,"321":1},"2":{"303":1,"322":1,"427":1,"605":1,"2262":1,"2497":2,"2634":1}}],["developments",{"2":{"2478":1}}],["development",{"0":{"302":1,"303":1,"427":1,"2492":1,"2503":1},"2":{"132":1,"160":3,"163":2,"175":1,"176":1,"198":1,"233":1,"266":1,"302":1,"321":1,"495":1,"558":1,"625":1,"1129":1,"2236":1,"2440":1,"2478":2,"2480":1,"2492":2,"2495":1,"2496":1,"2552":1,"2568":1,"2655":1,"2664":1,"2673":5,"2701":1,"2718":1,"2719":1,"2725":3,"2750":1}}],["develop",{"0":{"349":1},"2":{"51":1,"73":1,"76":1,"92":1,"93":1,"94":1,"114":5,"134":4,"149":3,"164":1,"169":1,"176":7,"191":6,"199":1,"211":5,"222":4,"236":2,"251":1,"266":1,"317":2,"337":1,"340":6,"341":3,"343":1,"344":1,"345":1,"346":1,"347":5,"349":7,"350":12,"358":3,"359":3,"360":3,"361":6,"1262":1,"2162":1,"2273":1,"2566":4,"2567":1,"2720":2,"2721":1}}],["declined",{"2":{"2719":1}}],["declares",{"2":{"1825":1}}],["declare",{"2":{"1314":2,"1729":2,"1952":2,"2170":1,"2171":1}}],["declared",{"2":{"1312":1,"1359":1,"1729":1,"1952":1,"2165":1}}],["declarations",{"2":{"222":1,"2164":1}}],["declaration",{"2":{"191":1,"500":1}}],["decryption",{"2":{"2065":1}}],["decreasing",{"2":{"506":3,"1326":1,"1950":1}}],["decrease",{"0":{"1478":1,"1759":1,"1760":1,"1765":1,"1766":1,"1986":1,"1987":1,"1992":1,"1993":1,"1998":1,"1999":1,"2004":1,"2005":1},"2":{"166":1,"1400":1,"1433":1,"1435":1,"1456":1,"1457":1,"1478":1,"1560":2,"1572":2,"1580":1,"1727":2,"1759":1,"1760":1,"1765":1,"1766":1,"1793":4,"1948":8,"1950":3,"1986":1,"1987":1,"1992":1,"1993":1,"1998":1,"1999":1,"2004":1,"2005":1,"2034":8,"2054":12,"2055":2,"2112":1,"2113":3,"2228":1,"2360":1,"2369":2,"2371":4,"2376":8,"2377":8,"2584":1,"2728":1}}],["decreases",{"2":{"119":1,"1406":1,"1408":1,"2055":2,"2357":1,"2375":1,"2728":2}}],["decreased",{"2":{"49":1,"1950":1,"2226":1}}],["decays",{"2":{"2226":1}}],["decay",{"2":{"2064":1}}],["decalartion",{"2":{"149":1}}],["deceptively",{"2":{"2749":1}}],["decelerated",{"2":{"1804":4}}],["decelerates",{"2":{"1802":1}}],["decent",{"2":{"3":1,"15":1}}],["dec",{"2":{"1287":1}}],["decodable",{"2":{"1452":1}}],["decoding",{"0":{"1452":1}}],["decode",{"2":{"1450":1}}],["decoder",{"2":{"563":1,"2600":1}}],["decorators",{"0":{"477":1}}],["decorator",{"2":{"430":2}}],["decorated",{"2":{"428":1}}],["decoupled",{"2":{"174":1}}],["decouple",{"2":{"73":1,"94":1,"191":1,"222":1,"249":1,"277":1}}],["decimal",{"2":{"1287":1}}],["decides",{"2":{"2729":1}}],["decide",{"2":{"1127":1,"1130":1,"1435":2,"1518":3}}],["decided",{"2":{"87":1,"103":1,"126":1,"169":1,"179":1,"184":1,"1265":1}}],["deciding",{"2":{"453":1}}],["decisions",{"2":{"453":1,"455":1}}],["decision",{"0":{"2729":1},"1":{"2730":1,"2731":1,"2732":1,"2733":1,"2734":1,"2735":1,"2736":1},"2":{"203":1,"222":1,"243":1,"1326":1,"2152":1,"2729":3,"2730":2,"2735":1}}],["despite",{"2":{"2576":2,"2664":1}}],["descr",{"2":{"2353":1}}],["describing",{"2":{"307":1,"341":1,"453":1,"455":1,"465":1,"621":1,"2070":1,"2672":4,"2688":1,"2695":1}}],["described",{"2":{"462":1,"562":1,"568":1,"598":1,"613":1,"629":1,"1364":1,"1451":1,"1941":1,"2102":1,"2268":1,"2296":1,"2574":1,"2748":1}}],["describes",{"2":{"311":1,"313":1,"322":1,"337":1,"517":1,"536":1,"605":1,"608":1,"621":1,"1466":1,"1467":1,"1643":1,"2160":1,"2513":1,"2523":1,"2553":1,"2593":1,"2597":1,"2598":1,"2599":1,"2686":1}}],["describe",{"2":{"99":1,"556":1,"2229":1,"2267":1,"2554":1,"2735":2}}],["descriptive",{"2":{"460":1,"554":1,"2480":1,"2513":1}}],["descriptions",{"2":{"684":1,"685":1,"686":1,"2513":1}}],["description",{"0":{"519":1},"1":{"520":1,"521":1,"522":1,"523":1,"524":1,"525":1,"526":1,"527":1},"2":{"119":1,"160":1,"341":1,"350":5,"425":1,"426":1,"435":1,"462":2,"540":1,"554":2,"556":1,"616":1,"623":1,"638":1,"639":1,"641":1,"644":1,"659":1,"666":1,"681":1,"683":1,"684":1,"685":1,"686":1,"688":1,"689":1,"690":1,"691":1,"693":1,"694":1,"696":1,"702":1,"703":2,"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1,"1177":1,"1198":1,"1214":1,"1220":1,"1224":1,"1226":1,"1229":1,"1230":1,"1299":1,"1329":1,"1341":3,"1398":1,"1399":1,"1402":1,"1403":1,"1406":2,"1408":1,"1434":1,"1443":1,"1449":1,"1456":1,"1457":1,"1467":1,"1469":1,"1470":1,"1494":1,"1505":1,"1512":1,"1518":1,"1526":1,"1530":1,"1553":1,"1554":1,"1566":1,"1568":1,"1570":1,"1571":1,"1572":1,"1573":1,"1591":1,"1632":1,"1639":1,"1669":1,"1670":1,"1671":1,"1687":1,"1715":1,"1726":1,"1727":1,"1728":2,"1793":1,"1801":1,"1803":1,"1804":1,"1805":1,"1807":1,"1808":1,"1817":1,"1818":1,"1819":1,"1820":2,"1834":1,"1855":1,"1856":1,"1857":1,"1859":3,"1860":1,"1861":1,"1863":3,"1864":1,"1865":1,"1866":1,"1867":1,"1868":1,"1869":1,"1870":1,"1872":1,"1873":1,"1874":1,"1875":1,"1889":1,"1891":1,"1894":1,"1895":1,"1900":1,"1901":1,"1920":1,"1931":1,"1932":4,"1942":1,"1947":1,"1948":1,"1949":3,"2032":1,"2034":1,"2035":1,"2036":1,"2037":1,"2038":1,"2048":1,"2050":1,"2051":1,"2052":1,"2053":1,"2054":1,"2055":1,"2056":1,"2057":1,"2069":1,"2070":1,"2071":1,"2074":1,"2075":1,"2104":1,"2106":1,"2107":1,"2111":1,"2112":1,"2113":1,"2141":1,"2142":1,"2156":1,"2158":1,"2173":1,"2174":1,"2175":1,"2179":1,"2180":1,"2184":1,"2226":1,"2227":1,"2260":1,"2299":1,"2302":1,"2355":1,"2356":1,"2357":1,"2358":1,"2359":1,"2360":1,"2361":1,"2362":1,"2363":1,"2364":1,"2365":1,"2366":1,"2367":1,"2368":1,"2369":1,"2370":1,"2371":1,"2372":1,"2373":1,"2374":1,"2375":1,"2376":1,"2377":1,"2378":1,"2379":1,"2380":1,"2381":1,"2382":1,"2383":1,"2384":1,"2386":1,"2387":1,"2388":1,"2389":1,"2390":1,"2391":1,"2392":1,"2393":1,"2394":1,"2395":1,"2396":1,"2399":1,"2410":2,"2524":1,"2562":1,"2566":1,"2572":1,"2728":1}}],["descriptors",{"2":{"2":1,"50":1}}],["descriptor",{"0":{"2":1,"2587":1,"2594":1,"2596":1},"2":{"50":1,"114":1,"134":1,"160":1,"1827":1,"2585":1,"2586":1,"2587":5,"2588":1,"2589":1,"2592":2,"2593":1,"2594":4,"2595":2,"2596":3,"2597":1}}],["descendant",{"2":{"2350":1}}],["desktop",{"2":{"1533":1,"2393":1,"2398":3,"2411":3,"2490":2}}],["deskthority",{"2":{"1290":1,"1902":1,"2311":1}}],["deskdaily",{"2":{"211":1}}],["destination",{"2":{"1275":1,"2367":1}}],["destroyed",{"2":{"454":1,"598":1}}],["desirable",{"2":{"1378":1}}],["desire",{"2":{"540":1}}],["desired",{"2":{"312":1,"352":1,"697":1,"1181":1,"1245":1,"1300":1,"1412":1,"1415":1,"1808":1,"2150":1,"2181":1,"2252":1,"2480":1,"2615":1,"2711":1,"2718":1}}],["designing",{"2":{"1457":1,"1469":1,"1715":1,"2267":1}}],["designate",{"2":{"2614":1}}],["designated",{"2":{"852":1,"1023":1,"1057":1,"1431":1,"2231":1,"2238":1,"2693":2}}],["designates",{"2":{"430":1,"2614":1}}],["designs",{"2":{"211":1,"2345":1,"2534":1}}],["design",{"2":{"114":1,"168":1,"211":2,"493":1,"1125":1,"1128":1,"1452":1,"2719":1}}],["designers",{"2":{"125":1,"185":1,"201":1,"221":1,"233":1,"234":1,"1725":1,"1946":1,"2523":1,"2545":1}}],["designer",{"2":{"56":1,"502":2,"511":1,"580":2,"2564":1}}],["designed",{"2":{"37":1,"43":1,"1265":1,"1310":1,"2269":1,"2300":1,"2345":1,"2427":2,"2545":1}}],["depicting",{"2":{"623":1}}],["depths",{"2":{"2576":1}}],["depth",{"2":{"561":1,"641":2}}],["depressed",{"2":{"1411":2}}],["deprecating",{"2":{"94":1}}],["deprecations",{"2":{"352":1,"2721":1}}],["deprecation",{"0":{"87":1,"88":1,"104":1,"127":1,"170":1,"264":1,"274":1,"2719":1,"2721":1},"1":{"88":1,"265":1,"275":1,"276":1,"2720":1,"2721":1},"2":{"184":1,"264":1,"274":1,"688":1,"2719":4,"2720":2}}],["deprecate",{"2":{"87":1,"94":1,"103":1,"126":1,"149":1,"169":1,"176":1,"184":1,"188":7,"191":7,"2546":1}}],["deprecated",{"0":{"27":1,"254":1},"2":{"3":1,"7":1,"15":1,"25":1,"27":1,"38":1,"50":1,"75":2,"114":2,"133":1,"134":1,"140":1,"149":1,"157":2,"176":1,"182":1,"188":1,"191":3,"194":1,"195":1,"199":2,"245":1,"249":1,"254":1,"266":1,"277":1,"502":6,"1498":1,"1714":1,"2034":10,"2037":2,"2376":10,"2396":1,"2702":1,"2721":1}}],["depracted",{"2":{"199":1}}],["depend",{"2":{"703":1,"1201":1,"1326":1,"1377":1,"1605":1,"2355":1}}],["dependent",{"2":{"663":1,"1223":1,"1316":1,"1317":1,"1469":1,"1554":1,"1872":1,"2316":1,"2720":1}}],["dependencies",{"2":{"73":1,"158":1,"160":2,"234":1,"322":1,"324":1,"2431":1,"2458":1,"2461":1,"2466":1}}],["dependency",{"2":{"24":1,"65":1,"328":1}}],["depends",{"2":{"656":1,"1326":1,"1717":1,"1804":1,"1863":1,"2183":1,"2196":1,"2197":1,"2198":1,"2262":1,"2544":1,"2740":1}}],["dependant",{"2":{"578":1}}],["depending",{"2":{"25":1,"30":1,"33":1,"90":1,"209":1,"574":1,"597":1,"668":1,"681":1,"693":1,"733":1,"758":1,"759":1,"787":1,"789":1,"819":1,"823":1,"851":1,"856":1,"886":1,"890":1,"920":1,"924":1,"954":1,"958":1,"988":1,"992":1,"1022":1,"1026":1,"1056":1,"1060":1,"1090":1,"1094":1,"1146":1,"1147":1,"1223":1,"1226":1,"1230":1,"1234":1,"1469":1,"1470":1,"1523":1,"1562":2,"1572":1,"1574":1,"1716":1,"1822":1,"1949":1,"2118":1,"2169":1,"2267":1,"2274":1,"2299":1,"2344":1,"2393":1,"2496":1,"2518":1,"2585":1,"2587":1,"2592":2,"2597":1,"2602":1,"2710":1,"2718":1,"2749":1}}],["def1",{"2":{"1254":2}}],["def",{"2":{"160":2,"430":1,"441":1,"463":1,"464":1,"465":1,"474":2,"475":3,"1527":1,"1923":2}}],["defs",{"2":{"114":1,"134":1,"160":1,"236":1,"514":1,"1384":2,"1385":1,"2300":2,"2566":1,"2753":1}}],["deferred",{"0":{"596":1,"597":1,"598":1,"599":1,"600":1,"601":1},"1":{"597":1,"598":1,"599":1,"600":1,"601":1},"2":{"134":1,"149":1,"341":1,"350":1,"515":3,"596":1,"597":4,"598":4,"599":2,"600":2,"601":3,"1675":1,"2263":3,"2577":4}}],["deferring",{"2":{"125":1,"185":1,"580":2}}],["defer",{"2":{"114":2,"125":1,"149":1,"185":1,"236":1,"597":1,"598":1,"599":1,"600":1,"1326":9,"1329":6,"1933":1,"2674":4}}],["definable",{"2":{"1430":1}}],["defining",{"0":{"570":1,"1933":1,"2042":1},"1":{"1934":1,"1935":1},"2":{"45":1,"49":2,"50":1,"80":1,"120":1,"196":1,"199":1,"467":1,"568":1,"657":1,"659":1,"662":1,"1136":1,"1137":1,"1335":1,"1336":1,"1404":1,"1406":1,"1501":1,"1515":1,"1517":1,"1519":1,"1522":1,"1523":1,"1524":1,"1553":1,"1554":2,"1557":1,"1594":1,"1626":1,"1637":1,"1670":1,"1728":1,"1872":1,"1933":1,"1948":1,"1949":1,"2034":1,"2059":2,"2125":2,"2156":1,"2183":1,"2302":1,"2354":1,"2490":1,"2541":1,"2728":1}}],["definitions",{"0":{"2405":1},"2":{"50":5,"76":1,"77":1,"93":1,"173":1,"176":1,"182":1,"199":1,"201":3,"211":1,"213":1,"222":1,"331":1,"1385":1,"1557":1,"1558":1,"1932":2,"1933":2,"2164":2,"2274":1,"2401":1,"2404":1,"2405":2,"2406":1,"2442":1,"2523":4,"2566":6,"2577":1,"2686":1}}],["definition",{"0":{"1594":1},"2":{"25":2,"36":2,"50":1,"65":1,"90":1,"160":1,"166":1,"191":1,"199":1,"468":1,"511":1,"701":1,"703":2,"1509":1,"1525":1,"1581":1,"1637":1,"2042":1,"2043":1,"2125":1,"2161":1,"2164":1,"2354":1,"2405":1,"2406":2,"2408":1,"2523":1,"2524":1,"2525":1,"2526":1,"2541":1,"2566":1,"2585":1,"2592":1,"2670":1,"2746":4}}],["define\\tsplit",{"2":{"2124":1}}],["defined",{"0":{"2540":1},"1":{"2541":1,"2542":1},"2":{"75":1,"199":4,"247":1,"382":1,"453":5,"505":3,"506":3,"510":2,"538":1,"568":1,"573":1,"598":1,"644":2,"666":3,"684":2,"685":1,"689":1,"707":1,"726":1,"731":1,"757":5,"786":6,"818":5,"850":5,"885":5,"919":5,"953":5,"987":5,"1021":5,"1055":5,"1089":5,"1135":1,"1145":5,"1214":3,"1216":1,"1226":2,"1229":1,"1230":2,"1267":1,"1312":1,"1314":1,"1332":1,"1338":1,"1346":1,"1347":2,"1363":1,"1368":1,"1384":1,"1399":8,"1400":1,"1411":2,"1427":1,"1431":1,"1445":1,"1457":3,"1469":1,"1471":1,"1496":1,"1497":1,"1511":1,"1517":1,"1518":3,"1529":1,"1548":2,"1553":1,"1554":3,"1557":3,"1559":2,"1570":6,"1573":6,"1579":1,"1591":6,"1594":1,"1633":1,"1636":1,"1642":1,"1694":1,"1697":1,"1714":1,"1715":5,"1729":1,"1802":1,"1805":2,"1806":2,"1817":3,"1819":1,"1820":9,"1822":2,"1829":1,"1857":6,"1859":4,"1861":3,"1863":3,"1864":1,"1865":1,"1866":2,"1872":14,"1873":8,"1876":4,"1878":1,"1885":1,"1889":1,"1932":3,"1941":1,"1950":1,"1952":1,"1953":1,"1954":1,"2035":6,"2036":1,"2037":12,"2038":2,"2058":1,"2074":1,"2106":3,"2107":2,"2127":1,"2132":1,"2133":1,"2141":3,"2157":3,"2161":2,"2165":1,"2171":1,"2181":1,"2196":1,"2197":1,"2198":1,"2226":6,"2228":1,"2249":1,"2259":1,"2301":1,"2315":1,"2320":1,"2400":1,"2403":1,"2407":3,"2445":1,"2513":1,"2545":1,"2548":2,"2566":1,"2571":1,"2573":1,"2577":1,"2585":2,"2592":2,"2607":1,"2614":1,"2710":1,"2727":1,"2753":1}}],["defines",{"0":{"510":1,"1579":1},"2":{"50":1,"93":1,"114":4,"133":1,"134":3,"149":1,"175":1,"176":2,"191":11,"199":5,"211":2,"222":1,"233":1,"236":9,"249":3,"266":1,"277":1,"502":4,"510":1,"513":1,"532":1,"572":1,"630":1,"702":1,"758":1,"787":1,"819":1,"851":1,"852":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1023":1,"1056":1,"1057":1,"1090":1,"1142":1,"1146":1,"1215":1,"1220":1,"1224":1,"1226":1,"1229":1,"1230":1,"1392":1,"1393":1,"1397":1,"1402":1,"1411":1,"1467":1,"1469":1,"1470":1,"1492":1,"1557":2,"1594":1,"1622":1,"1657":1,"1660":1,"1661":1,"1663":1,"1665":1,"1728":1,"1820":7,"1821":1,"1859":1,"1872":1,"1874":1,"1875":1,"1911":1,"1912":1,"1935":1,"1941":1,"1943":1,"1949":2,"2035":1,"2037":1,"2106":1,"2107":4,"2111":2,"2142":1,"2174":1,"2226":2,"2231":1,"2238":1,"2405":2,"2423":1,"2512":1,"2513":1,"2540":1,"2544":1,"2548":1,"2550":1,"2558":1,"2559":2,"2565":1,"2566":2,"2708":1,"2743":1,"2753":1}}],["define",{"0":{"540":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"1424":1,"1425":1,"1521":1,"1522":1,"1611":1,"1613":1,"2127":1},"1":{"1612":1,"1614":1},"2":{"13":1,"14":3,"25":2,"28":1,"31":1,"34":1,"49":2,"50":1,"69":1,"75":1,"94":1,"98":1,"107":1,"114":1,"120":3,"134":2,"149":1,"154":1,"157":1,"169":5,"176":2,"184":5,"191":4,"211":1,"222":1,"236":2,"249":2,"266":1,"273":3,"292":3,"317":3,"430":1,"453":1,"496":1,"502":43,"503":6,"504":4,"505":28,"506":13,"507":5,"510":6,"511":25,"571":1,"588":2,"601":2,"607":1,"641":1,"644":1,"657":8,"658":5,"659":2,"661":7,"662":1,"666":1,"667":1,"683":1,"684":15,"685":7,"686":1,"689":6,"690":5,"691":5,"694":7,"701":1,"703":2,"731":1,"757":1,"758":1,"786":1,"787":1,"788":1,"818":1,"819":1,"820":2,"821":4,"822":1,"850":1,"851":1,"852":1,"853":2,"854":4,"855":1,"885":1,"886":1,"887":2,"888":4,"889":1,"919":1,"920":1,"921":2,"922":4,"923":1,"953":1,"954":1,"955":2,"956":4,"957":1,"987":1,"988":1,"989":2,"990":4,"991":1,"1021":1,"1022":1,"1023":1,"1024":4,"1025":1,"1055":1,"1056":1,"1057":1,"1058":4,"1059":1,"1089":1,"1090":1,"1091":2,"1092":4,"1093":1,"1124":2,"1127":3,"1130":6,"1132":3,"1133":3,"1134":2,"1136":1,"1137":1,"1138":1,"1145":1,"1146":1,"1177":7,"1198":10,"1214":1,"1216":1,"1217":1,"1220":1,"1224":1,"1225":1,"1226":3,"1227":1,"1228":1,"1229":1,"1230":3,"1253":1,"1269":5,"1276":2,"1291":1,"1294":1,"1316":1,"1320":1,"1328":1,"1332":1,"1335":1,"1344":3,"1347":1,"1353":1,"1354":2,"1359":2,"1364":1,"1377":1,"1379":1,"1385":1,"1387":9,"1390":4,"1391":1,"1392":3,"1393":6,"1394":1,"1395":3,"1396":4,"1397":2,"1398":2,"1401":1,"1402":2,"1403":2,"1404":1,"1405":1,"1406":1,"1414":2,"1415":2,"1416":1,"1423":1,"1431":2,"1433":1,"1440":3,"1457":1,"1458":1,"1459":2,"1467":1,"1469":3,"1470":3,"1492":3,"1495":2,"1496":3,"1497":1,"1500":2,"1501":1,"1503":1,"1504":1,"1506":1,"1507":2,"1508":1,"1511":2,"1514":1,"1515":8,"1516":2,"1524":1,"1525":1,"1527":1,"1530":2,"1547":4,"1554":2,"1555":1,"1557":10,"1558":10,"1559":1,"1562":4,"1568":2,"1576":5,"1577":8,"1579":3,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"1591":1,"1594":1,"1611":1,"1612":1,"1613":2,"1614":1,"1636":4,"1657":1,"1675":1,"1677":5,"1682":1,"1683":2,"1684":1,"1685":1,"1714":1,"1715":2,"1722":1,"1725":1,"1726":1,"1728":21,"1729":1,"1730":12,"1789":1,"1790":1,"1792":2,"1803":1,"1804":1,"1805":6,"1806":2,"1807":1,"1808":1,"1815":1,"1817":2,"1818":1,"1819":1,"1820":4,"1822":5,"1829":2,"1830":2,"1857":1,"1870":2,"1872":1,"1880":2,"1884":1,"1887":2,"1889":1,"1904":2,"1905":6,"1906":3,"1907":10,"1908":2,"1910":5,"1911":3,"1912":9,"1913":1,"1914":4,"1915":3,"1916":2,"1917":1,"1920":1,"1932":1,"1933":2,"1936":1,"1941":2,"1943":1,"1946":1,"1947":1,"1949":49,"1950":6,"1951":2,"1952":1,"1954":16,"1958":1,"1959":1,"2032":3,"2035":1,"2037":1,"2038":1,"2039":3,"2041":1,"2042":5,"2044":2,"2045":1,"2046":1,"2059":2,"2060":2,"2070":1,"2074":1,"2100":1,"2101":1,"2106":2,"2107":4,"2109":1,"2124":1,"2125":2,"2126":1,"2127":2,"2128":7,"2129":10,"2130":5,"2131":12,"2139":1,"2141":1,"2142":1,"2143":1,"2145":1,"2152":1,"2153":1,"2154":1,"2161":4,"2164":1,"2168":1,"2169":1,"2170":4,"2171":1,"2174":1,"2179":1,"2180":1,"2182":1,"2183":3,"2226":1,"2231":4,"2238":4,"2261":2,"2263":6,"2299":12,"2302":5,"2306":1,"2400":1,"2401":1,"2405":2,"2490":4,"2491":1,"2524":5,"2539":3,"2541":1,"2544":5,"2548":4,"2557":1,"2559":1,"2566":3,"2571":2,"2572":1,"2576":11,"2584":1,"2588":4,"2607":2,"2614":3,"2703":2,"2704":1,"2705":3,"2727":2,"2728":2,"2735":2,"2736":2,"2737":2,"2738":7,"2746":2,"2753":1,"2756":1}}],["default=",{"2":{"430":1}}],["defaults",{"0":{"415":1,"2304":1,"2421":1},"1":{"2305":1},"2":{"69":1,"77":1,"114":1,"134":2,"149":1,"160":2,"176":2,"199":1,"236":4,"249":1,"498":1,"505":4,"506":1,"566":1,"659":1,"703":1,"1177":1,"1198":1,"1316":1,"1317":1,"1393":1,"1469":1,"1820":1,"1855":1,"1856":1,"1863":1,"1867":1,"1869":1,"1870":2,"2127":1,"2299":1,"2421":1,"2425":1,"2575":2,"2726":1,"2727":1}}],["default",{"0":{"137":1,"166":1,"474":1,"497":1,"528":1,"1268":1,"1378":1,"2607":1,"2734":1},"1":{"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1},"2":{"14":1,"28":1,"30":1,"31":1,"33":1,"38":1,"49":1,"50":2,"69":1,"74":1,"77":1,"83":1,"93":2,"114":8,"124":1,"125":1,"134":2,"137":1,"143":2,"149":8,"156":1,"160":2,"164":1,"166":1,"176":10,"183":8,"191":8,"194":5,"195":3,"199":2,"202":1,"206":1,"209":1,"211":5,"222":1,"236":7,"249":4,"266":3,"273":1,"277":2,"331":3,"335":1,"370":2,"371":1,"374":2,"378":1,"380":2,"385":1,"386":1,"389":1,"391":1,"393":2,"394":2,"400":1,"402":1,"403":1,"404":1,"405":1,"414":2,"415":1,"417":3,"423":3,"424":3,"425":2,"426":3,"430":1,"433":2,"435":3,"474":1,"496":1,"497":1,"502":5,"504":1,"509":2,"511":4,"513":2,"516":1,"528":1,"529":7,"530":5,"559":1,"560":2,"563":1,"565":1,"572":1,"580":2,"601":1,"607":1,"610":4,"612":1,"623":2,"624":2,"626":2,"636":1,"641":4,"644":3,"655":1,"657":1,"659":1,"660":1,"666":1,"681":1,"683":2,"684":2,"685":2,"686":2,"689":2,"690":1,"691":1,"692":1,"694":2,"702":1,"703":2,"704":1,"705":1,"731":1,"757":1,"786":1,"818":1,"820":1,"821":2,"822":1,"850":1,"853":1,"854":2,"855":1,"885":1,"887":1,"888":2,"889":1,"919":1,"921":1,"922":2,"923":1,"953":1,"955":1,"956":2,"957":1,"987":1,"989":1,"990":2,"991":1,"1021":1,"1024":4,"1025":1,"1055":1,"1058":4,"1059":1,"1089":1,"1091":1,"1092":3,"1093":1,"1122":1,"1127":1,"1130":1,"1132":2,"1133":2,"1134":2,"1136":2,"1137":2,"1142":2,"1145":1,"1177":1,"1198":1,"1214":1,"1216":1,"1218":1,"1219":1,"1220":1,"1224":1,"1225":1,"1226":1,"1229":1,"1230":1,"1243":1,"1245":1,"1265":1,"1281":1,"1283":1,"1288":1,"1294":1,"1312":1,"1316":1,"1319":1,"1320":1,"1321":1,"1328":1,"1329":1,"1331":1,"1332":13,"1335":7,"1338":1,"1341":16,"1343":2,"1344":1,"1346":5,"1362":1,"1368":2,"1377":1,"1378":1,"1385":1,"1397":1,"1398":1,"1399":4,"1400":2,"1402":1,"1403":1,"1404":2,"1405":1,"1406":7,"1408":1,"1414":1,"1416":3,"1423":3,"1430":4,"1439":2,"1441":1,"1445":1,"1455":1,"1457":5,"1460":1,"1461":1,"1467":1,"1469":2,"1470":1,"1495":2,"1496":1,"1499":2,"1501":1,"1503":1,"1504":1,"1506":2,"1514":1,"1515":2,"1516":2,"1518":5,"1525":10,"1527":1,"1528":1,"1529":1,"1530":15,"1554":2,"1557":3,"1559":1,"1560":2,"1562":1,"1567":1,"1570":1,"1572":1,"1573":4,"1579":1,"1591":1,"1635":1,"1636":1,"1637":1,"1671":2,"1673":1,"1674":1,"1675":1,"1677":2,"1682":1,"1685":1,"1715":1,"1722":1,"1725":3,"1730":10,"1794":1,"1802":3,"1803":2,"1804":1,"1805":3,"1807":2,"1808":1,"1813":4,"1814":2,"1817":2,"1818":1,"1819":3,"1820":4,"1822":3,"1827":1,"1854":1,"1855":1,"1856":1,"1857":2,"1859":2,"1860":1,"1861":1,"1863":5,"1864":1,"1865":1,"1866":1,"1867":1,"1868":1,"1869":1,"1870":2,"1872":5,"1873":1,"1876":1,"1880":4,"1882":1,"1885":1,"1887":4,"1889":3,"1890":1,"1892":1,"1897":1,"1898":7,"1900":2,"1908":1,"1910":3,"1912":2,"1920":2,"1932":3,"1933":3,"1936":1,"1940":1,"1946":3,"1948":1,"1950":1,"1954":14,"1958":1,"2032":2,"2034":1,"2035":12,"2037":1,"2038":1,"2042":1,"2043":1,"2070":1,"2073":1,"2074":2,"2076":1,"2105":1,"2106":2,"2107":1,"2109":1,"2123":1,"2124":1,"2126":2,"2128":2,"2130":1,"2131":1,"2137":2,"2138":1,"2141":2,"2142":2,"2143":1,"2145":1,"2149":2,"2150":1,"2156":1,"2161":1,"2169":3,"2170":2,"2171":2,"2174":5,"2175":1,"2179":1,"2180":1,"2182":1,"2183":1,"2226":2,"2228":2,"2230":1,"2231":2,"2238":2,"2245":1,"2247":1,"2249":1,"2252":3,"2259":2,"2260":1,"2262":4,"2263":7,"2277":1,"2295":2,"2300":1,"2302":5,"2304":1,"2305":3,"2311":1,"2342":1,"2343":1,"2344":2,"2355":1,"2357":1,"2367":2,"2375":2,"2402":7,"2404":1,"2405":1,"2421":3,"2422":1,"2425":4,"2428":1,"2429":1,"2444":1,"2452":2,"2453":1,"2457":1,"2463":1,"2469":7,"2480":1,"2498":1,"2501":1,"2502":2,"2506":3,"2513":2,"2524":2,"2525":1,"2526":1,"2539":1,"2540":1,"2541":2,"2544":2,"2553":3,"2556":1,"2565":3,"2566":10,"2567":4,"2574":2,"2575":2,"2576":10,"2584":1,"2607":6,"2610":1,"2615":1,"2673":1,"2674":14,"2675":2,"2676":8,"2677":14,"2679":2,"2680":5,"2681":1,"2682":1,"2683":1,"2684":1,"2685":1,"2686":3,"2687":3,"2688":19,"2689":6,"2690":1,"2692":3,"2694":24,"2695":25,"2696":3,"2697":16,"2698":2,"2699":8,"2700":4,"2702":1,"2704":1,"2708":1,"2710":1,"2711":1,"2727":1,"2728":4,"2729":4,"2731":2,"2732":3,"2733":2,"2735":3,"2736":3,"2737":5,"2738":3,"2757":1}}],["delkey",{"2":{"1303":5}}],["delegation",{"2":{"2132":1}}],["delegating",{"2":{"511":1}}],["delegates",{"2":{"2131":1}}],["delegated",{"2":{"2131":1}}],["delegate",{"2":{"2131":1}}],["deleting",{"0":{"423":1,"439":1},"2":{"460":1}}],["deleted",{"2":{"16":1,"387":1,"2240":1}}],["delete",{"0":{"1303":1},"2":{"8":1,"31":1,"34":1,"99":1,"152":1,"211":1,"222":1,"255":1,"266":1,"347":1,"423":1,"439":1,"627":1,"628":3,"1303":4,"1499":1,"1586":1,"1656":1,"1663":3,"1823":2,"1932":1,"2075":1,"2226":1,"2355":4,"2388":1,"2392":2,"2394":1,"2757":2}}],["delimited",{"2":{"2575":1}}],["delimiter",{"2":{"2575":1}}],["delivered",{"2":{"616":1,"621":1}}],["deliberately",{"2":{"440":1,"585":1}}],["delilah",{"2":{"143":2}}],["delikeeb",{"2":{"86":8}}],["delayed",{"2":{"1361":1,"1406":1,"2729":1}}],["delays",{"2":{"515":1,"597":1,"1361":1,"1802":1,"2263":1,"2524":1,"2525":1,"2526":1}}],["delay",{"0":{"1369":2,"1370":2,"1675":1,"2083":1,"2087":1,"2101":1},"1":{"2084":1,"2088":1},"2":{"74":3,"112":6,"114":4,"120":1,"149":2,"176":5,"191":1,"222":2,"236":1,"249":2,"266":2,"502":4,"505":5,"507":2,"597":2,"598":1,"599":1,"660":1,"1354":1,"1357":3,"1361":4,"1368":2,"1369":1,"1399":2,"1406":1,"1554":1,"1559":3,"1675":6,"1676":1,"1803":5,"1804":2,"1807":4,"1822":1,"1889":2,"1895":1,"1900":1,"1910":1,"1950":3,"2075":1,"2081":1,"2083":1,"2085":1,"2087":2,"2100":2,"2101":2,"2179":1,"2411":1,"2524":3,"2564":3,"2596":2,"2674":5,"2689":1,"2690":2,"2699":1,"2729":2}}],["del",{"0":{"8":1},"2":{"8":1,"63":1,"120":1,"313":1,"439":2,"530":2,"1299":2,"1300":3,"1303":9,"1354":1,"1357":1,"1506":1,"1663":1,"1932":1,"2075":1,"2228":2,"2355":1,"2392":1,"2408":1}}],["deltas",{"2":{"1863":1,"2255":2,"2575":1}}],["delta",{"0":{"2598":1},"2":{"100":1,"211":1,"222":1,"1803":2,"1804":1,"1807":2,"1808":4,"1870":2,"2255":5,"2575":1,"2587":1,"2592":2,"2596":8,"2598":9}}],["delt",{"0":{"8":1},"2":{"8":1,"188":1,"191":1}}],["u8",{"2":{"2707":2}}],["u80",{"2":{"211":1}}],["u03a8",{"2":{"2672":2}}],["u32",{"2":{"2595":1}}],["udr1",{"2":{"1907":1}}],["udevadm",{"2":{"1239":2}}],["udev",{"0":{"1239":1},"2":{"199":2,"1238":2,"1239":1,"1254":1,"2262":1}}],["ubrr1l",{"2":{"1907":1}}],["ubrr1h",{"2":{"1907":1}}],["ubuntu",{"2":{"454":1,"2431":1,"2437":1,"2464":1,"2468":3,"2492":1,"2503":1}}],["ug",{"2":{"1559":10,"2034":11,"2045":1,"2376":11}}],["ugfx",{"0":{"10":1},"2":{"10":1,"114":1,"134":1}}],["ultra",{"2":{"1340":1}}],["ultimately",{"2":{"2571":1}}],["ultimate",{"2":{"457":1}}],["ukrainian",{"2":{"2712":2}}],["ukr",{"2":{"2182":1}}],["uk",{"2":{"701":1,"1355":1,"1499":1,"2319":1,"2712":3}}],["uz",{"2":{"450":1}}],["uzu42",{"2":{"176":2}}],["urls",{"2":{"316":3}}],["url",{"2":{"316":3,"527":1,"609":1,"2477":1,"2479":1,"2566":1,"2615":1,"2672":2}}],["urbanvanilla",{"2":{"211":1}}],["u",{"2":{"266":1,"313":1,"385":2,"530":2,"1252":3,"1932":1,"1934":1,"2148":1,"2152":1,"2153":4,"2179":1,"2196":1,"2233":1,"2236":1,"2270":3,"2347":1,"2348":3,"2355":3,"2386":3,"2407":1,"2438":1,"2480":2,"2575":4}}],["uvwxyz",{"2":{"266":1}}],["uefi",{"0":{"1298":1},"2":{"263":1}}],["umsel10",{"2":{"1907":1}}],["um",{"2":{"219":1,"2181":3,"2184":1,"2263":1,"2384":1}}],["um70",{"2":{"114":1}}],["u16",{"2":{"191":1}}],["u+ffff",{"2":{"2183":2}}],["u+10ffff",{"2":{"2181":1}}],["u+",{"2":{"2181":1}}],["u+7fff",{"2":{"2181":1}}],["u+exxx",{"2":{"191":1}}],["u+axxx",{"2":{"191":1}}],["utc",{"2":{"463":1,"464":1,"465":2}}],["utf",{"2":{"211":1}}],["ut472",{"2":{"159":2}}],["ut47",{"2":{"149":1}}],["utilised",{"2":{"2719":2}}],["utilise",{"2":{"2566":1}}],["utilises",{"2":{"2546":1}}],["utilising",{"2":{"1125":1,"2546":1}}],["utilisation",{"2":{"516":1}}],["utilize",{"2":{"496":1,"2686":1}}],["utilized",{"2":{"496":1,"1134":1}}],["utilities",{"2":{"133":1,"134":1,"149":1}}],["utility",{"2":{"49":1,"199":1,"266":1,"625":1,"1385":1,"2241":2,"2244":1}}],["utils",{"2":{"249":1}}],["util",{"2":{"114":1,"211":1,"236":2,"266":1,"360":1,"450":1,"451":1,"452":1,"509":2,"1241":1,"1816":1,"2126":2,"2140":1,"2240":3,"2241":6,"2242":3,"2243":3,"2252":6,"2262":2,"2350":1,"2353":1,"2564":1}}],["uaccess",{"2":{"1254":3}}],["ua62",{"2":{"143":2}}],["uart1",{"2":{"2538":2}}],["uart0",{"2":{"2538":2}}],["uart",{"0":{"1195":1,"1200":1,"1202":1,"1204":1,"1206":1,"1208":1,"1210":1,"2538":1},"1":{"1196":1,"1197":1,"1198":1,"1199":1,"1200":1,"1201":2,"1202":1,"1203":2,"1204":1,"1205":2,"1206":1,"1207":2,"1208":1,"1209":2,"1210":1,"1211":2},"2":{"50":1,"73":1,"75":1,"133":2,"134":2,"149":4,"191":1,"199":1,"234":2,"236":2,"249":1,"1121":1,"1195":1,"1196":3,"1197":1,"1198":12,"1200":1,"1210":1,"1319":2,"1491":2,"1492":1,"2276":1,"2531":1,"2534":1,"2538":1,"2541":4,"2543":2}}],["ucpol1",{"2":{"1907":1}}],["ucsr1b",{"2":{"1907":3}}],["ucsr1a",{"2":{"1907":3}}],["ucsr1c",{"2":{"1907":2}}],["ucsz10",{"2":{"1907":1}}],["ucis",{"0":{"2211":1,"2212":1,"2214":1,"2216":1,"2219":1,"2221":1,"2222":1,"2223":1},"1":{"2213":1,"2215":1,"2217":1,"2218":1,"2220":1,"2224":1},"2":{"199":1,"222":1,"2182":12,"2212":1,"2213":1,"2223":1,"2224":1,"2263":1,"2749":1}}],["uc",{"2":{"134":1,"188":1,"191":1,"2181":3,"2183":2,"2184":9,"2263":1,"2384":9}}],["ui",{"2":{"120":1,"191":1,"521":1}}],["uint24",{"2":{"2587":1,"2588":1,"2589":2,"2593":1,"2594":1}}],["uintptr",{"2":{"1668":2}}],["uint",{"2":{"134":1}}],["uint32",{"0":{"1200":1,"1849":1,"1851":1,"2091":1,"2199":1,"2206":1},"1":{"1201":1,"1850":1,"1852":1,"2092":1,"2200":1,"2207":1,"2208":1},"2":{"105":4,"114":1,"176":1,"588":1,"597":1,"962":5,"1201":1,"1332":1,"1333":4,"1549":2,"1852":1,"2092":1,"2130":1,"2181":1,"2182":1,"2200":1,"2577":7,"2587":2,"2594":2,"2595":2}}],["uint8",{"0":{"647":3,"649":3,"652":1,"675":3,"677":3,"679":1,"708":2,"711":2,"714":3,"717":2,"720":3,"723":2,"726":1,"739":2,"741":3,"743":3,"745":1,"747":1,"749":1,"751":1,"764":1,"766":3,"768":3,"770":3,"772":1,"774":1,"776":1,"778":1,"780":1,"782":1,"794":1,"796":3,"798":2,"800":3,"802":3,"804":1,"806":1,"808":1,"810":1,"812":1,"814":1,"828":1,"830":3,"832":3,"834":3,"836":1,"838":1,"840":4,"842":2,"844":1,"846":1,"861":1,"863":3,"865":2,"867":3,"869":3,"871":1,"873":1,"875":1,"877":1,"879":1,"881":1,"895":1,"897":3,"899":2,"901":3,"903":3,"905":1,"907":1,"909":1,"911":1,"913":1,"915":1,"929":1,"931":3,"933":2,"935":3,"937":3,"939":1,"941":1,"943":1,"945":1,"947":1,"949":1,"963":1,"965":3,"967":2,"969":3,"971":3,"973":1,"975":1,"977":1,"979":1,"981":1,"983":1,"997":1,"999":3,"1001":2,"1003":3,"1005":3,"1007":1,"1009":1,"1011":4,"1013":2,"1015":1,"1017":1,"1031":1,"1033":3,"1035":2,"1037":3,"1039":3,"1041":1,"1043":1,"1045":4,"1047":2,"1049":1,"1051":1,"1065":1,"1067":3,"1069":2,"1071":3,"1073":3,"1075":1,"1077":1,"1079":4,"1081":2,"1083":1,"1085":1,"1099":1,"1101":3,"1103":2,"1105":3,"1107":3,"1109":1,"1111":1,"1113":4,"1115":2,"1117":1,"1119":1,"1152":1,"1154":3,"1156":2,"1158":3,"1160":3,"1162":1,"1164":1,"1166":1,"1168":1,"1170":1,"1172":1,"1180":1,"1183":1,"1188":1,"1191":1,"1202":1,"1204":1,"1206":1,"1479":1,"1481":1,"1603":2,"1611":2,"1613":2,"1617":1,"1619":1,"1622":1,"1624":1,"1626":1,"1628":1,"1646":1,"1648":1,"1650":1,"1653":1,"1743":2,"1745":1,"1747":1,"1749":1,"1755":1,"1761":1,"1767":1,"1769":1,"1771":1,"1780":2,"1783":2,"1837":1,"1839":1,"1841":1,"1843":1,"1845":1,"1925":2,"1927":2,"1970":4,"1972":3,"1974":1,"1976":1,"1982":1,"1988":1,"1994":1,"2000":1,"2006":1,"2008":1,"2010":1,"2012":3,"2014":3,"2025":2,"2028":2,"2083":1,"2087":1,"2095":1,"2097":1,"2186":1,"2188":1,"2192":1,"2194":1,"2203":1,"2206":1,"2209":1,"2214":1},"1":{"648":3,"650":3,"653":1,"676":3,"678":3,"680":1,"709":2,"710":2,"712":2,"713":2,"715":3,"716":3,"718":2,"719":2,"721":3,"722":3,"724":2,"725":2,"727":1,"728":1,"740":2,"742":3,"744":3,"746":1,"748":1,"750":1,"752":1,"765":1,"767":3,"769":3,"771":3,"773":1,"775":1,"777":1,"779":1,"781":1,"783":1,"795":1,"797":3,"799":2,"801":3,"803":3,"805":1,"807":1,"809":1,"811":1,"813":1,"815":1,"829":1,"831":3,"833":3,"835":3,"837":1,"839":1,"841":4,"843":2,"845":1,"847":1,"862":1,"864":3,"866":2,"868":3,"870":3,"872":1,"874":1,"876":1,"878":1,"880":1,"882":1,"896":1,"898":3,"900":2,"902":3,"904":3,"906":1,"908":1,"910":1,"912":1,"914":1,"916":1,"930":1,"932":3,"934":2,"936":3,"938":3,"940":1,"942":1,"944":1,"946":1,"948":1,"950":1,"964":1,"966":3,"968":2,"970":3,"972":3,"974":1,"976":1,"978":1,"980":1,"982":1,"984":1,"998":1,"1000":3,"1002":2,"1004":3,"1006":3,"1008":1,"1010":1,"1012":4,"1014":2,"1016":1,"1018":1,"1032":1,"1034":3,"1036":2,"1038":3,"1040":3,"1042":1,"1044":1,"1046":4,"1048":2,"1050":1,"1052":1,"1066":1,"1068":3,"1070":2,"1072":3,"1074":3,"1076":1,"1078":1,"1080":4,"1082":2,"1084":1,"1086":1,"1100":1,"1102":3,"1104":2,"1106":3,"1108":3,"1110":1,"1112":1,"1114":4,"1116":2,"1118":1,"1120":1,"1153":1,"1155":3,"1157":2,"1159":3,"1161":3,"1163":1,"1165":1,"1167":1,"1169":1,"1171":1,"1173":1,"1181":1,"1182":1,"1184":1,"1185":1,"1189":1,"1190":1,"1192":1,"1193":1,"1203":1,"1205":1,"1207":1,"1480":1,"1482":1,"1604":2,"1612":2,"1614":2,"1618":1,"1620":1,"1621":1,"1623":1,"1625":1,"1627":1,"1629":1,"1647":1,"1649":1,"1651":1,"1652":1,"1654":1,"1744":2,"1746":1,"1748":1,"1750":1,"1756":1,"1762":1,"1768":1,"1770":1,"1772":1,"1838":1,"1840":1,"1842":1,"1844":1,"1846":1,"1847":1,"1926":2,"1928":2,"1971":4,"1973":3,"1975":1,"1977":1,"1983":1,"1989":1,"1995":1,"2001":1,"2007":1,"2009":1,"2011":1,"2015":3,"2084":1,"2088":1,"2096":1,"2098":1,"2187":1,"2189":1,"2193":1,"2195":1,"2204":1,"2205":1,"2207":1,"2208":1,"2210":1,"2215":1},"2":{"46":1,"90":4,"105":4,"211":1,"566":2,"573":2,"580":3,"588":1,"648":3,"650":3,"653":1,"672":4,"676":3,"678":3,"680":1,"709":2,"712":2,"715":3,"718":2,"721":2,"724":1,"727":1,"737":4,"740":2,"742":3,"744":3,"746":1,"748":1,"750":1,"752":1,"763":5,"765":1,"767":3,"769":3,"771":3,"773":1,"775":1,"777":1,"779":1,"781":1,"783":1,"793":5,"795":1,"797":3,"799":2,"801":3,"803":3,"805":1,"807":1,"809":1,"811":1,"813":1,"815":1,"827":5,"829":1,"831":3,"833":3,"835":3,"837":1,"839":1,"841":4,"843":2,"845":1,"847":1,"860":5,"862":1,"864":3,"866":2,"868":3,"870":3,"872":1,"874":1,"876":1,"878":1,"880":1,"882":1,"894":5,"896":1,"898":3,"900":2,"902":3,"904":3,"906":1,"908":1,"910":1,"912":1,"914":1,"916":1,"928":5,"930":1,"932":3,"934":2,"936":3,"938":3,"940":1,"942":1,"944":1,"946":1,"948":1,"950":1,"964":1,"966":3,"968":2,"970":3,"972":3,"974":1,"976":1,"978":1,"980":1,"982":1,"984":1,"996":5,"998":1,"1000":3,"1002":2,"1004":3,"1006":3,"1008":1,"1010":1,"1012":4,"1014":2,"1016":1,"1018":1,"1030":5,"1032":1,"1034":3,"1036":2,"1038":3,"1040":3,"1042":1,"1044":1,"1046":4,"1048":2,"1050":1,"1052":1,"1064":5,"1066":1,"1068":3,"1070":2,"1072":3,"1074":3,"1076":1,"1078":1,"1080":4,"1082":2,"1084":1,"1086":1,"1098":5,"1100":2,"1102":3,"1104":2,"1106":3,"1108":3,"1110":1,"1112":1,"1114":4,"1116":2,"1118":1,"1120":1,"1151":5,"1153":1,"1155":3,"1157":2,"1159":3,"1161":3,"1163":1,"1165":1,"1167":1,"1169":1,"1171":1,"1173":1,"1181":1,"1184":1,"1189":1,"1192":1,"1203":1,"1207":1,"1209":1,"1303":1,"1332":1,"1344":2,"1360":1,"1385":2,"1400":3,"1405":2,"1440":1,"1445":2,"1446":2,"1447":1,"1448":3,"1464":1,"1480":1,"1518":1,"1523":2,"1525":2,"1549":2,"1560":2,"1594":1,"1604":1,"1612":2,"1614":2,"1618":1,"1623":1,"1625":1,"1627":1,"1629":1,"1642":1,"1647":1,"1649":1,"1651":1,"1654":1,"1668":3,"1670":3,"1714":2,"1718":1,"1722":5,"1729":3,"1733":2,"1744":2,"1746":1,"1748":1,"1750":1,"1768":1,"1770":1,"1781":2,"1784":2,"1815":2,"1821":1,"1822":15,"1838":1,"1840":1,"1842":1,"1844":1,"1846":1,"1874":1,"1876":1,"1889":1,"1894":3,"1921":2,"1923":3,"1926":2,"1928":2,"1933":2,"1934":1,"1935":1,"1937":1,"1938":1,"1939":1,"1941":1,"1943":3,"1952":3,"1957":2,"1958":12,"1959":5,"1971":4,"1973":3,"1975":1,"1977":1,"2007":1,"2009":1,"2013":3,"2015":3,"2026":2,"2029":2,"2035":1,"2040":7,"2084":1,"2088":1,"2096":1,"2098":1,"2113":11,"2130":6,"2139":2,"2143":6,"2152":2,"2157":1,"2189":1,"2193":1,"2195":1,"2207":1,"2210":1,"2224":1,"2228":2,"2406":1,"2491":6,"2576":3,"2577":34,"2587":6,"2593":2,"2594":1,"2596":4,"2597":7,"2599":1,"2706":2}}],["uint16",{"0":{"647":1,"708":2,"711":2,"714":2,"717":3,"720":2,"723":3,"726":1,"1180":1,"1188":1,"1191":1,"1206":1,"1208":1,"1232":1,"1694":1,"1699":1,"1702":2,"1705":3,"1708":4,"1711":5,"2093":1,"2203":1,"2216":1},"1":{"648":1,"709":2,"710":2,"712":2,"713":2,"715":2,"716":2,"718":3,"719":3,"721":2,"722":2,"724":3,"725":3,"727":1,"728":1,"1181":1,"1182":1,"1189":1,"1190":1,"1192":1,"1193":1,"1207":1,"1209":1,"1233":1,"1695":1,"1696":1,"1700":1,"1701":1,"1703":2,"1704":2,"1706":3,"1707":3,"1709":4,"1710":4,"1712":5,"1713":5,"2094":1,"2204":1,"2205":1,"2217":1,"2218":1},"2":{"22":6,"46":2,"194":2,"195":2,"247":1,"530":1,"534":2,"572":1,"573":3,"588":1,"648":1,"709":2,"712":2,"715":2,"718":3,"721":2,"724":3,"727":1,"1181":1,"1189":1,"1192":1,"1207":1,"1209":1,"1233":1,"1252":1,"1302":1,"1303":1,"1332":2,"1344":1,"1359":4,"1360":2,"1375":2,"1384":1,"1385":2,"1393":1,"1404":1,"1416":1,"1423":2,"1430":3,"1445":1,"1446":1,"1506":2,"1508":2,"1509":2,"1510":2,"1511":7,"1518":10,"1519":4,"1523":5,"1548":1,"1559":1,"1581":1,"1638":3,"1644":3,"1670":2,"1695":1,"1700":1,"1703":2,"1706":3,"1709":4,"1712":5,"1792":2,"1815":1,"1820":1,"1822":7,"1830":1,"1871":2,"1874":1,"1875":1,"1879":1,"1880":1,"1891":2,"1892":1,"1894":3,"1899":1,"1901":1,"1933":2,"1934":1,"1935":3,"1937":1,"1938":1,"1939":1,"1940":1,"1941":2,"1943":4,"2044":2,"2078":1,"2094":1,"2139":1,"2142":1,"2143":4,"2152":2,"2164":1,"2168":4,"2171":2,"2204":1,"2217":1,"2228":4,"2301":1,"2401":1,"2406":1,"2413":1,"2414":1,"2415":1,"2423":1,"2576":38,"2577":39,"2587":1,"2594":3,"2596":1,"2598":4,"2604":1,"2612":1,"2706":2,"2727":1,"2728":2,"2735":1,"2736":1,"2737":1,"2738":1,"2747":1,"2749":38}}],["uf2boot",{"0":{"2247":1},"1":{"2248":1},"2":{"236":1,"2247":5}}],["uf2conv",{"2":{"211":1,"222":1}}],["uf2",{"0":{"2249":1,"2522":1},"2":{"93":1,"114":1,"160":1,"176":2,"199":3,"211":1,"2126":2,"2245":1,"2246":2,"2247":1,"2248":2,"2249":1,"2437":1,"2539":1,"2674":1}}],["unknowingly",{"2":{"2305":1}}],["unknown",{"0":{"1241":1},"2":{"111":1,"315":1,"2169":2,"2170":2,"2171":2,"2300":1,"2353":1}}],["unblink",{"2":{"2044":4}}],["unwanted",{"2":{"1675":1,"2065":1}}],["unnecessarily",{"2":{"1177":1,"1344":1}}],["unnecessary",{"2":{"134":1,"236":1,"266":1,"277":1,"556":1,"2405":1}}],["unpressed",{"2":{"1325":1}}],["unpredictable",{"2":{"684":1}}],["unplugged",{"2":{"1553":1,"2633":1}}],["unplugging",{"2":{"1332":1,"1337":1,"1403":1,"2118":1}}],["unplug",{"2":{"626":1,"1270":1,"1528":1,"1553":1,"2353":1,"2450":3,"2607":1}}],["unpacking",{"2":{"467":1}}],["unparsed",{"2":{"249":1}}],["unquoted",{"2":{"612":1}}],["unusable",{"0":{"2516":1},"2":{"1243":1}}],["unusual",{"2":{"466":1,"623":1,"1495":1,"2746":1}}],["unuseful",{"2":{"266":1}}],["unused",{"0":{"1552":1},"2":{"50":1,"75":1,"149":1,"176":1,"191":1,"199":8,"540":1,"1223":1,"1242":1,"1320":1,"1547":1,"1777":1,"1782":1,"2022":1,"2027":1,"2061":2,"2125":3,"2131":1,"2263":1,"2566":1,"2689":1}}],["unfiltered",{"2":{"2226":2}}],["unfamiliar",{"2":{"460":1}}],["unfortunately",{"2":{"173":1,"537":1,"1219":1,"1412":1,"1441":1,"2398":1,"2514":1,"2711":1,"2750":1}}],["uncle",{"2":{"2750":1}}],["unclear",{"2":{"453":1,"458":1,"560":1}}],["uncapitalizing",{"2":{"1503":1}}],["uncomment",{"2":{"1518":1}}],["uncommon",{"2":{"11":1,"1441":1}}],["uncombined",{"2":{"516":1}}],["uncovered",{"2":{"191":1}}],["unconditionally",{"2":{"49":1,"114":1}}],["unavoidable",{"2":{"2566":1}}],["unavailable",{"2":{"635":1,"696":2,"1394":1,"1907":1,"2560":1}}],["unaffected",{"2":{"1499":1}}],["unannotated",{"2":{"480":1}}],["unambiguous",{"2":{"467":1}}],["unable",{"2":{"337":1,"352":1,"2316":1,"2319":1,"2701":1}}],["unassigned",{"2":{"236":1,"446":1}}],["unxmaal",{"2":{"236":1}}],["unshifted",{"2":{"2397":1}}],["unswap",{"2":{"2370":20,"2396":20}}],["unsplit",{"2":{"1870":1}}],["unscrewing",{"2":{"1287":1}}],["unsucessful",{"2":{"726":1}}],["unsupported",{"2":{"638":1,"639":1,"1822":1,"2114":1}}],["unsure",{"2":{"626":1,"628":1,"1825":1,"1826":1,"2276":1,"2279":1,"2421":1,"2469":1}}],["unsigned",{"2":{"222":1,"1290":1,"1820":1,"2091":1,"2093":1,"2142":1}}],["unsent",{"2":{"1904":1}}],["unset",{"2":{"160":1,"689":2,"2574":2}}],["unselect",{"2":{"114":3,"502":1}}],["unmergeable",{"2":{"2566":1}}],["unmerged",{"2":{"221":1,"341":1}}],["unmod",{"2":{"1805":4}}],["unmodified",{"2":{"1677":1,"1805":7,"2738":1}}],["unmaintained",{"2":{"114":1}}],["unrecoverable",{"2":{"2348":1}}],["unresponsive",{"2":{"1553":1,"1803":1,"1804":1}}],["unregistered",{"2":{"597":1,"1375":1,"1523":1,"1670":1}}],["unregister",{"0":{"1367":1,"1370":1,"1648":1,"1843":1},"1":{"1649":1,"1844":1},"2":{"505":1,"1275":1,"1300":1,"1302":1,"1303":1,"1360":1,"1368":2,"1369":1,"1375":2,"1430":3,"1523":2,"1668":1,"1670":1,"1671":1,"1677":1,"2168":1,"2169":5,"2170":3,"2738":1}}],["unrelated",{"2":{"191":1,"279":1,"282":3,"341":1}}],["unreferenced",{"2":{"133":1,"134":1}}],["unloaded",{"2":{"2577":2}}],["unlocking",{"2":{"2066":1,"2071":1}}],["unlock",{"0":{"2066":1},"2":{"2066":1,"2069":6,"2070":3,"2071":6,"2353":2,"2696":4}}],["unlocked",{"2":{"340":1,"349":1,"2067":1,"2070":1,"2071":3,"2696":1}}],["unlk",{"2":{"2069":1}}],["unlike",{"2":{"1278":1,"1531":1,"2428":1,"2686":1,"2741":1}}],["unlikely",{"2":{"154":1,"502":1,"1278":1,"2550":1}}],["unlimited",{"2":{"396":1,"411":1}}],["unless",{"2":{"191":1,"435":1,"457":1,"469":1,"477":1,"566":2,"1275":1,"1278":1,"1287":1,"1300":1,"1341":2,"1411":1,"1457":1,"1469":1,"1715":1,"1898":1,"1949":1,"2262":1,"2279":1,"2318":1,"2367":1,"2541":1,"2546":1,"2564":1,"2566":4,"2577":1}}],["unexplainable",{"2":{"2262":1}}],["unexpectedly",{"2":{"1290":1}}],["unexpected",{"2":{"87":1,"337":1,"1499":1,"1666":1}}],["unecessary",{"2":{"160":1}}],["uno",{"0":{"2331":1},"1":{"2332":1},"2":{"159":2,"160":2,"2331":2,"2332":3}}],["un",{"2":{"149":1,"191":1,"266":1,"502":1,"1368":1,"1934":1}}],["ungodly",{"2":{"114":2}}],["unterminated",{"2":{"134":1}}],["untested",{"2":{"49":1,"483":1,"1589":1,"1811":1,"1817":1,"2141":1,"2263":2}}],["until",{"2":{"114":1,"160":1,"199":1,"522":1,"588":1,"598":1,"627":1,"703":1,"1273":1,"1316":1,"1317":1,"1325":1,"1335":2,"1367":1,"1404":1,"1405":1,"1416":1,"1438":1,"1500":1,"1504":1,"1630":1,"1632":1,"1675":3,"1730":1,"1802":3,"1803":2,"1807":1,"1822":1,"1827":2,"1868":1,"1886":1,"1954":1,"2156":1,"2232":1,"2234":1,"2239":1,"2241":1,"2277":1,"2366":1,"2367":1,"2383":1,"2420":1,"2474":1,"2490":2,"2564":1,"2566":2,"2577":1,"2654":1,"2728":1,"2729":1,"2737":2}}],["universal",{"2":{"2668":1}}],["union",{"2":{"1332":2}}],["uninsulated",{"2":{"2270":1}}],["uninstallation",{"0":{"628":1},"2":{"628":1}}],["uninstall",{"2":{"627":1,"628":4,"629":1}}],["unintentional",{"2":{"191":1,"2270":1}}],["unix",{"2":{"249":1,"277":1,"399":1,"2256":1,"2457":1,"2458":1,"2484":1,"2506":2,"2620":1}}],["unix60",{"2":{"67":1,"72":1,"211":1}}],["uniform",{"2":{"222":1}}],["unify",{"0":{"22":1},"2":{"113":1,"114":2,"149":1,"222":1}}],["uni",{"2":{"197":2,"199":2}}],["uniquely",{"2":{"1335":1,"1885":1}}],["unique",{"2":{"160":1,"199":1,"570":2,"606":1,"1242":2,"2274":1}}],["unikeyboard",{"2":{"143":3,"149":2}}],["unicorne",{"2":{"134":1,"249":1}}],["unicodemap",{"0":{"219":1,"2203":1,"2206":1,"2209":1},"1":{"2204":1,"2205":1,"2207":1,"2208":1,"2210":1},"2":{"219":1,"222":2,"2263":1,"2749":1}}],["unicode",{"0":{"186":1,"2176":1,"2186":1,"2188":1,"2190":1,"2191":1,"2192":1,"2194":1,"2196":1,"2197":1,"2198":1,"2199":1,"2201":1,"2320":1,"2384":1,"2589":1,"2666":1},"1":{"2177":1,"2178":1,"2179":1,"2180":1,"2181":1,"2182":1,"2183":1,"2184":1,"2185":1,"2186":1,"2187":2,"2188":1,"2189":2,"2190":1,"2191":1,"2192":1,"2193":2,"2194":1,"2195":2,"2196":1,"2197":1,"2198":1,"2199":1,"2200":2,"2201":1,"2202":2,"2203":1,"2204":1,"2205":1,"2206":1,"2207":1,"2208":1,"2209":1,"2210":1,"2211":1,"2212":1,"2213":1,"2214":1,"2215":1,"2216":1,"2217":1,"2218":1,"2219":1,"2220":1,"2221":1,"2222":1,"2223":1,"2224":1},"2":{"70":1,"94":1,"111":1,"134":1,"149":2,"160":1,"186":3,"188":3,"191":6,"199":2,"211":1,"222":2,"411":1,"433":1,"515":2,"533":1,"1277":1,"1440":1,"2072":2,"2176":1,"2177":2,"2178":1,"2179":11,"2180":5,"2181":6,"2182":6,"2183":21,"2184":12,"2186":1,"2187":1,"2188":1,"2190":1,"2191":1,"2196":4,"2197":2,"2198":2,"2199":1,"2201":1,"2203":1,"2204":1,"2205":1,"2206":1,"2207":1,"2208":1,"2209":1,"2210":1,"2263":5,"2319":1,"2320":2,"2384":13,"2575":18,"2585":2,"2587":3,"2589":6,"2590":2,"2666":3,"2672":2,"2711":1,"2725":1,"2749":2}}],["units",{"2":{"506":3,"556":1,"654":1,"1326":2,"1878":1,"1889":3,"2596":1,"2615":2,"2686":4}}],["unit|integration>",{"2":{"446":1}}],["unit",{"0":{"485":1,"2667":1,"2750":1},"1":{"2751":1,"2752":1,"2753":1,"2754":1,"2755":1,"2756":1},"2":{"114":1,"134":1,"191":1,"198":1,"199":2,"249":1,"411":1,"446":2,"483":1,"485":1,"560":1,"658":1,"703":2,"1326":1,"1393":1,"1554":1,"2263":1,"2567":3,"2650":1,"2667":2,"2750":2,"2751":1,"2753":2,"2756":1}}],["unite",{"2":{"114":1}}],["undone",{"2":{"2480":1}}],["undo",{"2":{"1527":1,"1878":1,"2355":2,"2392":2,"2474":1}}],["undocumented",{"2":{"8":1,"482":1}}],["unds",{"2":{"176":1,"1499":1,"1506":1,"2378":1,"2399":1}}],["undesired",{"2":{"1677":1,"2738":1}}],["undesirable",{"2":{"1676":1}}],["undef",{"2":{"45":1,"292":3,"500":1,"657":5,"658":3,"661":1,"703":1,"1132":1,"1133":1,"1177":1,"1198":1,"1226":1,"1230":1,"1320":1,"1469":1,"1470":1,"2039":4,"2261":2,"2703":2,"2708":55}}],["undefined",{"2":{"510":1,"1329":1,"1804":1,"1807":1,"1808":1,"1813":1,"1817":1,"1819":1,"2137":1,"2226":1,"2541":1}}],["undefine",{"2":{"45":1,"500":1,"1320":1}}],["underneath",{"2":{"1454":1}}],["undertake",{"2":{"554":1}}],["underlight",{"0":{"2665":1},"2":{"515":1}}],["underlying",{"2":{"234":1,"378":1,"416":1,"430":1,"687":1,"689":2,"690":1,"691":2,"1518":1,"1724":1,"1945":1,"2523":1,"2683":1}}],["undergoing",{"2":{"203":1}}],["undergoes",{"2":{"203":1}}],["underglowx",{"2":{"2300":1}}],["underglow",{"2":{"32":1,"49":1,"266":1,"277":3,"574":1,"582":1,"1332":2,"1343":1,"1454":1,"1947":2,"2031":1,"2034":11,"2041":1,"2061":1,"2280":1,"2300":3,"2376":11,"2610":1,"2708":1}}],["underside",{"2":{"626":1,"2450":1,"2665":1}}],["understood",{"2":{"479":1}}],["understands",{"0":{"2614":1},"2":{"1212":1,"2031":1,"2146":1,"2614":1}}],["understandable",{"2":{"556":1}}],["understandability",{"2":{"457":1,"479":2}}],["understanding",{"0":{"2742":1},"1":{"2743":1,"2744":1,"2745":1,"2746":1,"2747":1,"2748":1,"2749":1},"2":{"249":1,"303":1,"355":1,"474":1,"477":1,"479":1,"560":2,"567":1,"1340":1,"1672":1,"2162":1,"2482":1,"2614":2,"2722":1,"2725":1,"2742":1}}],["understand",{"2":{"2":1,"306":1,"432":1,"457":1,"469":1,"471":1,"567":1,"585":1,"606":1,"615":1,"623":1,"1331":1,"1442":1,"1673":1,"1674":1,"2312":1,"2614":2,"2742":1}}],["underscores",{"2":{"485":1,"2405":1,"2614":1}}],["underscore",{"2":{"461":1,"1441":1,"2294":2,"2378":1,"2399":1}}],["underscore33",{"2":{"143":4}}],["under",{"2":{"32":1,"55":13,"120":1,"134":1,"149":1,"204":1,"211":1,"222":1,"249":1,"265":1,"268":1,"331":1,"335":1,"341":1,"349":1,"370":1,"436":1,"554":1,"606":1,"611":1,"689":1,"692":1,"1243":1,"1273":1,"1354":1,"1380":1,"1406":1,"1729":1,"1897":2,"1921":1,"1952":1,"2128":1,"2169":1,"2183":3,"2278":2,"2310":1,"2347":1,"2424":1,"2439":1,"2440":1,"2513":3,"2543":1,"2567":1,"2570":1,"2576":1,"2577":1,"2655":1,"2671":1,"2719":2}}],["upgrading",{"2":{"2566":1}}],["upgrades",{"2":{"10":1,"114":1}}],["upgrade",{"0":{"24":1,"357":1,"361":1},"1":{"358":1,"359":1,"360":1,"361":1},"2":{"10":3,"65":2,"158":3,"2545":1,"2627":1}}],["upgraded",{"2":{"10":1}}],["uprint",{"2":{"2263":4}}],["uprintf",{"2":{"1250":1,"1252":1}}],["uppr",{"2":{"2173":1}}],["upper",{"0":{"2182":1},"2":{"191":1,"623":1,"659":1,"701":1,"1435":2,"1573":1,"1857":1,"1864":2,"1866":1,"2153":3,"2172":2,"2173":3,"2174":2,"2175":6,"2182":2,"2255":1,"2407":1}}],["uppercase",{"2":{"191":1,"1313":1,"2182":3,"2564":2}}],["updir",{"2":{"1935":3}}],["updater",{"2":{"360":1,"2244":3}}],["updated",{"0":{"44":1,"59":1,"86":1,"102":1,"122":1,"143":1,"159":1,"168":1,"181":1,"197":1,"207":1,"217":1,"226":1,"241":1,"253":1,"270":1},"1":{"45":1,"60":1},"2":{"10":1,"14":1,"69":1,"83":1,"86":2,"108":1,"114":2,"126":1,"134":1,"149":1,"160":1,"182":2,"195":1,"220":1,"230":1,"241":1,"244":1,"253":1,"262":1,"270":1,"317":2,"349":1,"357":1,"587":2,"1714":1,"2478":1,"2479":1,"2480":2,"2566":1,"2568":3}}],["updates",{"0":{"190":1,"248":1,"255":1,"256":1},"1":{"257":1,"258":1,"259":1,"260":1},"2":{"5":1,"12":2,"22":1,"30":1,"33":1,"64":1,"114":2,"134":2,"149":2,"160":2,"176":3,"190":1,"191":2,"199":1,"211":3,"222":1,"236":3,"249":5,"266":3,"277":1,"343":2,"344":2,"345":2,"346":1,"349":2,"352":1,"358":1,"452":1,"657":1,"658":1,"1270":1,"1901":1,"2446":1,"2479":1,"2506":1,"2566":1}}],["update",{"0":{"4":1,"6":1,"10":1,"12":1,"45":1,"56":1,"69":1,"77":1,"679":1,"753":1,"754":1,"780":1,"782":1,"812":1,"814":1,"844":1,"846":1,"879":1,"881":1,"913":1,"915":1,"947":1,"949":1,"981":1,"983":1,"1015":1,"1017":1,"1049":1,"1051":1,"1083":1,"1085":1,"1117":1,"1119":1,"1170":1,"1172":1,"1270":1,"1716":1,"1717":1,"1718":1,"1720":1,"2478":1,"2603":1,"2605":1},"1":{"680":1,"781":1,"783":1,"813":1,"815":1,"845":1,"847":1,"880":1,"882":1,"914":1,"916":1,"948":1,"950":1,"982":1,"984":1,"1016":1,"1018":1,"1050":1,"1052":1,"1084":1,"1086":1,"1118":1,"1120":1,"1171":1,"1173":1,"1717":1,"1718":1,"2479":1,"2480":1,"2481":1,"2604":1,"2606":1},"2":{"10":3,"21":1,"24":1,"31":1,"32":1,"46":1,"49":1,"63":1,"65":1,"75":1,"76":1,"89":1,"90":8,"93":3,"95":1,"105":12,"114":9,"131":2,"133":1,"134":8,"149":5,"158":1,"160":3,"176":15,"191":17,"194":1,"199":5,"211":8,"218":1,"222":8,"230":1,"236":11,"240":2,"249":12,"255":1,"256":1,"266":9,"277":8,"349":1,"350":1,"360":3,"361":2,"559":1,"588":1,"593":1,"594":1,"647":1,"656":2,"675":2,"741":2,"745":2,"749":2,"751":2,"768":2,"772":2,"776":2,"778":2,"800":2,"804":2,"808":2,"810":2,"832":2,"836":2,"840":2,"842":2,"867":2,"871":2,"875":2,"877":2,"901":2,"905":2,"909":2,"911":2,"935":2,"939":2,"943":2,"945":2,"969":2,"973":2,"977":2,"979":2,"1003":2,"1007":2,"1011":2,"1013":2,"1037":2,"1041":2,"1045":2,"1047":2,"1071":2,"1075":2,"1079":2,"1081":2,"1105":2,"1109":2,"1113":2,"1115":2,"1158":2,"1162":2,"1166":2,"1168":2,"1239":1,"1303":1,"1331":2,"1332":4,"1333":2,"1341":3,"1383":1,"1435":1,"1527":1,"1549":6,"1560":3,"1637":1,"1714":2,"1716":4,"1717":2,"1718":1,"1719":1,"1720":1,"1730":1,"1817":3,"1863":1,"1880":1,"1889":1,"1948":1,"1954":1,"2034":1,"2043":1,"2141":1,"2301":1,"2309":1,"2351":1,"2472":1,"2473":1,"2475":2,"2477":2,"2479":1,"2566":3,"2568":1,"2584":1,"2603":1,"2604":4,"2605":1,"2606":3,"2607":1,"2688":1,"2695":1,"2728":1,"2749":1}}],["updating",{"0":{"349":1,"360":1,"2479":1},"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"107":1,"194":1,"199":1,"249":1,"337":1,"352":1,"354":1,"358":1,"359":1,"1817":1,"2042":1,"2141":1,"2263":1,"2564":1}}],["upe1",{"2":{"1907":1}}],["upm10",{"2":{"1907":1}}],["upward",{"2":{"1876":2}}],["upwards",{"2":{"1405":1}}],["uploading",{"2":{"527":1}}],["uploaded",{"2":{"276":2,"521":1,"2262":1,"2566":1}}],["uploads",{"2":{"273":1,"277":1,"1293":2,"2262":1,"2428":1,"2479":1}}],["upload",{"0":{"273":1},"2":{"149":1,"273":4,"304":1,"305":1,"541":1,"623":1,"1434":1,"1435":1,"2260":1,"2262":1,"2350":1,"2437":1}}],["upon",{"2":{"65":1,"545":1,"1265":1,"1385":1,"1457":3,"1673":1,"1828":1,"1829":1,"2035":6,"2473":1,"2475":1,"2535":1,"2540":1,"2546":1}}],["ups",{"0":{"50":1,"64":1,"75":1,"94":1},"2":{"50":1,"176":1,"266":1,"1134":1,"2120":1}}],["upstreaming",{"2":{"2552":1}}],["upstreamed",{"2":{"2546":1,"2550":1,"2552":1}}],["upstream",{"2":{"10":1,"12":1,"26":1,"167":1,"211":1,"222":1,"347":3,"349":2,"359":2,"360":1,"556":1,"1376":1,"2474":8,"2477":6,"2479":8,"2480":4,"2546":1,"2551":1,"2564":2,"2719":1,"2720":2}}],["up",{"0":{"350":1,"354":1,"1361":1,"1891":1,"2275":1,"2277":1,"2280":1,"2442":1,"2456":1,"2476":1,"2492":1,"2503":1,"2504":1,"2642":1},"1":{"1892":1,"2276":1,"2457":1,"2458":1,"2459":1,"2460":1,"2461":1,"2462":1,"2463":1,"2464":1,"2465":1,"2466":1,"2467":1,"2468":1,"2469":1,"2505":1,"2506":1,"2507":1,"2508":1,"2509":1,"2510":1},"2":{"6":1,"13":1,"23":1,"28":1,"45":1,"50":1,"62":1,"73":3,"77":1,"90":3,"93":1,"94":3,"100":1,"114":13,"119":2,"120":3,"123":1,"124":2,"130":2,"131":1,"133":2,"134":6,"145":1,"149":5,"153":1,"156":1,"160":1,"163":1,"166":1,"173":1,"182":1,"188":1,"191":8,"198":2,"199":6,"206":1,"209":1,"210":1,"211":55,"219":1,"222":8,"224":1,"228":1,"231":2,"232":1,"236":4,"248":1,"249":1,"251":1,"266":3,"291":1,"292":1,"300":1,"313":1,"321":1,"331":1,"347":1,"365":1,"366":1,"370":1,"387":1,"453":2,"481":2,"496":1,"499":1,"502":1,"506":2,"515":2,"516":1,"523":1,"526":1,"529":1,"530":4,"554":1,"555":1,"556":1,"558":1,"571":2,"574":1,"576":1,"578":2,"580":2,"582":1,"589":1,"597":1,"624":1,"625":1,"627":1,"628":1,"635":1,"660":2,"664":1,"683":1,"684":3,"696":1,"703":1,"729":1,"755":1,"784":1,"816":1,"848":1,"883":1,"917":1,"951":1,"985":1,"1019":1,"1053":1,"1087":1,"1126":2,"1134":1,"1143":1,"1177":1,"1181":1,"1198":1,"1230":3,"1236":1,"1261":1,"1263":1,"1294":1,"1326":8,"1329":2,"1332":2,"1338":1,"1354":2,"1357":6,"1360":1,"1361":2,"1385":1,"1386":1,"1387":1,"1398":1,"1399":1,"1403":2,"1406":4,"1408":2,"1412":1,"1434":3,"1435":2,"1436":2,"1439":1,"1440":1,"1451":1,"1456":2,"1469":1,"1518":1,"1560":1,"1572":2,"1577":1,"1586":2,"1594":1,"1634":1,"1656":2,"1665":6,"1671":1,"1677":1,"1678":1,"1686":2,"1716":1,"1727":2,"1728":7,"1793":8,"1801":5,"1832":1,"1857":1,"1863":2,"1880":1,"1892":1,"1895":1,"1899":2,"1902":3,"1932":10,"1935":1,"1949":9,"1950":2,"1959":1,"2034":4,"2038":2,"2042":1,"2075":1,"2106":1,"2107":1,"2110":1,"2112":2,"2117":1,"2120":1,"2126":1,"2131":1,"2134":1,"2148":1,"2150":1,"2161":2,"2167":1,"2171":1,"2181":2,"2182":2,"2183":2,"2184":2,"2254":1,"2255":1,"2261":1,"2263":5,"2272":1,"2277":1,"2279":1,"2289":2,"2290":1,"2295":1,"2308":1,"2311":1,"2341":1,"2346":1,"2355":13,"2357":2,"2358":3,"2360":2,"2369":2,"2371":8,"2372":5,"2375":2,"2376":4,"2384":2,"2392":7,"2393":4,"2394":2,"2402":1,"2403":1,"2407":1,"2420":1,"2424":2,"2442":1,"2445":1,"2448":1,"2454":1,"2456":1,"2458":1,"2466":1,"2469":1,"2472":1,"2478":1,"2490":1,"2492":2,"2497":1,"2502":1,"2503":1,"2504":2,"2508":3,"2513":4,"2517":2,"2519":2,"2521":2,"2529":1,"2539":1,"2546":1,"2548":1,"2564":1,"2566":1,"2567":1,"2568":1,"2577":1,"2581":1,"2600":2,"2662":1,"2696":1,"2699":2,"2705":2,"2707":1,"2708":2,"2722":1,"2728":11,"2731":4,"2732":6,"2733":4,"2735":7,"2736":2,"2737":2,"2738":1,"2740":1,"2747":1}}],["usd",{"2":{"2514":1,"2709":1}}],["us=yes",{"2":{"1319":1}}],["usr",{"2":{"1239":1,"2508":1}}],["usually",{"2":{"228":1,"335":1,"377":1,"474":1,"515":1,"564":1,"598":1,"624":1,"625":1,"626":1,"630":1,"689":3,"1129":1,"1137":1,"1219":1,"1270":2,"1286":1,"1326":1,"1329":1,"1401":1,"1454":1,"1459":1,"1464":2,"1495":1,"1564":1,"1873":1,"2032":2,"2046":1,"2073":1,"2144":1,"2237":1,"2262":1,"2263":1,"2314":1,"2328":1,"2346":1,"2348":1,"2352":1,"2402":1,"2450":2,"2455":1,"2490":1,"2498":1,"2513":1,"2550":1,"2614":1,"2686":1,"2714":1,"2718":1,"2757":1}}],["usual",{"2":{"77":1,"438":1,"439":1,"571":1,"1302":1,"1303":1,"1395":1,"1582":2,"1900":1,"1935":1,"1940":1,"2728":1}}],["usability",{"2":{"211":1}}],["usable",{"2":{"107":1,"114":1,"156":1,"209":1,"231":1,"408":1,"435":1,"656":1,"689":2,"690":1,"691":1,"1332":1,"1394":1,"2114":1,"2276":1,"2403":1,"2516":3,"2575":1,"2576":1,"2683":1}}],["usart4",{"2":{"1141":1}}],["usart2",{"2":{"1140":1,"1141":1,"1142":3,"1198":4}}],["usart3",{"2":{"1132":1,"1133":1,"1140":1,"1141":1,"1142":5,"1198":1}}],["usartn",{"2":{"1132":2,"1133":2}}],["usart1",{"2":{"1127":1,"1130":1,"1140":1,"1141":1,"1142":3,"1198":2,"1907":1}}],["usart",{"0":{"1125":1,"1128":1,"1907":1},"1":{"1126":1,"1127":1,"1129":1,"1130":1},"2":{"74":1,"107":1,"176":1,"266":1,"277":1,"1121":3,"1125":1,"1126":2,"1127":5,"1128":2,"1129":5,"1130":10,"1132":5,"1133":5,"1136":1,"1137":2,"1139":1,"1142":3,"1198":1,"1902":1,"1904":1,"1907":11,"2114":1,"2528":1,"2541":4,"2692":1,"2697":1}}],["usages",{"2":{"75":1,"118":1,"128":1,"140":1,"149":1,"156":1,"157":1,"167":1,"199":4,"249":1,"1279":2,"1832":1,"2492":1}}],["usage",{"0":{"631":1,"643":1,"665":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1175":1,"1196":1,"1213":1,"1455":1,"1529":1,"1532":1,"1564":1,"1590":1,"1631":1,"1635":1,"1679":1,"1787":1,"1812":1,"1825":1,"1833":1,"1919":1,"2032":1,"2039":1,"2063":1,"2068":1,"2073":1,"2103":1,"2137":1,"2178":1,"2252":1,"2515":1,"2518":1,"2519":1},"1":{"1788":1,"1789":1,"1790":1,"1791":1,"1792":1,"1793":1,"1794":1,"1795":1,"1796":1,"1797":1,"2033":1,"2516":1,"2517":1,"2518":1,"2519":1},"2":{"45":1,"118":1,"156":1,"160":1,"176":1,"199":1,"211":1,"231":1,"236":1,"249":3,"266":2,"370":5,"371":3,"372":1,"373":1,"374":1,"375":1,"376":1,"377":1,"378":1,"379":1,"380":1,"381":1,"382":1,"383":1,"384":1,"385":1,"386":1,"387":1,"388":1,"389":2,"390":2,"391":2,"393":1,"394":1,"395":1,"396":1,"400":4,"401":1,"402":2,"403":2,"404":1,"405":1,"406":1,"407":1,"411":1,"660":2,"1125":1,"1128":1,"1134":1,"1273":1,"1326":1,"1329":2,"1515":1,"1725":1,"1832":1,"1863":1,"1908":1,"1918":1,"1920":6,"1921":3,"1923":8,"1946":1,"2385":1,"2393":1,"2401":1,"2406":1,"2445":1,"2496":1,"2517":1,"2523":1,"2543":1,"2575":6,"2614":1,"2660":1,"2699":1,"2719":1}}],["us",{"0":{"2378":1,"2397":1},"1":{"2398":1,"2399":1},"2":{"6":1,"74":1,"99":1,"114":2,"149":1,"176":2,"188":1,"191":1,"213":1,"228":1,"245":1,"315":1,"324":1,"356":1,"436":1,"479":1,"485":1,"550":1,"554":1,"560":3,"585":1,"606":2,"684":3,"1214":1,"1303":2,"1355":1,"1362":1,"1410":1,"1499":2,"1584":2,"1683":1,"1821":1,"2076":1,"2106":1,"2311":1,"2319":3,"2355":2,"2378":1,"2388":2,"2397":1,"2418":1,"2455":1,"2474":5,"2569":2,"2637":1,"2667":1,"2710":1,"2711":1,"2712":7,"2730":1,"2746":1,"2748":1}}],["using",{"0":{"322":1,"365":1,"366":1,"1293":1,"1346":1,"1354":1,"1358":1,"1433":1,"1792":1,"2170":1,"2171":1,"2448":1},"1":{"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1,"336":1,"1347":1,"1348":1,"1349":1,"1350":1,"1351":1,"1352":1,"1355":1,"1356":1,"1357":1,"1359":1,"1360":1,"1361":1,"1362":1,"1363":1,"1364":1,"1365":1,"1366":1,"1367":1,"1368":1,"1369":1,"1370":1,"1371":1,"1372":1,"1373":1,"1374":1,"1375":1,"1434":1,"1435":1,"1436":1},"2":{"5":1,"7":1,"14":1,"16":2,"45":1,"49":2,"50":1,"65":2,"73":1,"76":1,"83":1,"103":1,"111":2,"114":4,"126":1,"132":1,"149":1,"157":1,"158":1,"176":2,"191":1,"199":1,"220":1,"232":1,"234":1,"236":1,"240":2,"241":2,"244":1,"248":1,"253":2,"255":1,"270":2,"271":1,"272":1,"311":1,"315":1,"319":2,"322":2,"324":1,"325":1,"326":1,"327":1,"331":1,"334":1,"352":1,"367":1,"374":3,"380":1,"391":1,"400":2,"428":1,"431":1,"432":1,"436":1,"440":1,"441":1,"448":1,"453":1,"455":1,"457":2,"462":1,"466":1,"467":2,"470":2,"479":1,"480":1,"502":2,"503":1,"504":1,"505":1,"510":3,"511":14,"519":1,"521":1,"532":1,"534":1,"554":3,"559":1,"584":1,"592":1,"598":1,"606":1,"626":1,"627":1,"628":1,"630":1,"643":1,"659":1,"665":1,"683":2,"690":1,"698":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1122":2,"1129":2,"1134":1,"1142":1,"1144":1,"1175":1,"1196":1,"1212":2,"1213":1,"1215":1,"1230":1,"1234":1,"1236":1,"1238":1,"1242":1,"1255":1,"1262":1,"1269":1,"1294":1,"1300":2,"1326":5,"1331":2,"1332":5,"1335":2,"1336":1,"1341":1,"1343":1,"1351":1,"1375":1,"1385":1,"1396":1,"1401":1,"1416":1,"1430":3,"1432":1,"1451":1,"1457":1,"1464":2,"1469":1,"1495":1,"1499":1,"1500":1,"1501":2,"1515":2,"1525":3,"1527":1,"1554":1,"1555":1,"1558":1,"1559":1,"1560":1,"1562":3,"1563":1,"1578":1,"1579":1,"1589":1,"1635":1,"1637":1,"1665":1,"1676":1,"1677":1,"1725":2,"1729":1,"1787":1,"1791":1,"1798":1,"1803":1,"1804":1,"1806":1,"1811":2,"1816":1,"1821":3,"1824":1,"1854":1,"1859":1,"1860":1,"1863":2,"1871":1,"1872":1,"1873":2,"1875":2,"1885":2,"1901":1,"1908":1,"1912":1,"1918":1,"1923":1,"1946":2,"1952":1,"1959":1,"1960":1,"2031":1,"2037":1,"2042":3,"2044":1,"2060":1,"2063":1,"2067":1,"2076":1,"2107":1,"2114":1,"2116":2,"2118":1,"2121":1,"2126":3,"2128":2,"2131":5,"2136":1,"2140":1,"2150":1,"2157":2,"2176":1,"2183":3,"2184":1,"2225":1,"2226":1,"2230":2,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":2,"2247":2,"2249":2,"2255":1,"2256":1,"2262":1,"2263":3,"2270":1,"2273":1,"2274":4,"2275":1,"2277":3,"2289":1,"2291":1,"2293":1,"2295":1,"2299":1,"2300":1,"2305":1,"2309":1,"2319":1,"2325":1,"2331":1,"2353":1,"2384":1,"2398":1,"2407":2,"2411":1,"2418":1,"2424":1,"2427":1,"2428":2,"2430":2,"2439":1,"2441":2,"2445":1,"2446":2,"2447":1,"2451":1,"2454":1,"2462":1,"2468":1,"2474":1,"2492":1,"2503":1,"2510":1,"2512":1,"2513":3,"2515":1,"2529":1,"2531":4,"2543":1,"2552":1,"2564":2,"2566":5,"2568":1,"2570":1,"2576":3,"2577":7,"2581":1,"2614":1,"2638":1,"2639":1,"2666":1,"2703":1,"2704":2,"2705":2,"2706":2,"2707":1,"2708":1,"2711":1,"2712":1,"2725":2,"2728":3,"2738":1,"2740":2,"2749":1,"2751":1}}],["usbmodemxxxxxx",{"2":{"2347":1}}],["usbtiny",{"2":{"2335":1}}],["usbtinyisp",{"0":{"2335":1},"1":{"2336":1},"2":{"371":1,"2335":3}}],["usbs1",{"2":{"1907":1}}],["usbser",{"2":{"629":12}}],["usb2adb",{"2":{"1279":1}}],["usb2422",{"2":{"134":1}}],["usbisactive",{"2":{"266":1}}],["usbc",{"2":{"207":2}}],["usbasploader",{"0":{"2236":1,"2346":1},"2":{"371":1,"514":1,"626":1,"629":1,"2236":3,"2346":1}}],["usbasp",{"0":{"2337":1},"1":{"2338":1},"2":{"134":1,"191":1,"371":1,"629":1,"2236":4,"2337":2,"2346":1}}],["usbpd",{"2":{"74":1}}],["usbdrv",{"0":{"21":1}}],["usb",{"0":{"2":1,"21":1,"137":1,"169":1,"184":1,"235":1,"263":1,"516":1,"1242":1,"1295":1,"1828":1,"2668":1,"2669":1,"2699":1},"1":{"170":1,"1243":1},"2":{"2":1,"21":2,"31":1,"34":1,"49":3,"50":5,"62":2,"65":1,"70":3,"73":2,"75":1,"94":2,"111":3,"112":9,"113":1,"114":7,"134":5,"137":1,"149":4,"160":6,"169":3,"170":2,"176":8,"184":4,"191":9,"199":5,"211":1,"222":9,"236":5,"240":1,"249":3,"263":2,"266":4,"334":1,"486":1,"487":3,"488":1,"502":5,"509":4,"511":7,"514":1,"515":6,"516":2,"575":1,"587":1,"626":1,"628":1,"629":1,"1123":1,"1126":1,"1129":1,"1240":3,"1279":1,"1295":2,"1316":4,"1317":4,"1399":1,"1494":5,"1788":2,"1824":2,"1827":1,"1828":4,"1829":1,"1830":2,"1876":4,"1921":2,"1923":1,"1948":1,"2034":1,"2114":1,"2118":4,"2127":3,"2131":9,"2132":4,"2133":2,"2146":1,"2150":3,"2230":1,"2236":2,"2237":1,"2238":1,"2240":1,"2242":1,"2245":1,"2247":1,"2249":3,"2269":2,"2275":1,"2299":4,"2312":1,"2313":1,"2314":1,"2315":2,"2319":1,"2327":2,"2335":1,"2337":1,"2339":1,"2343":1,"2344":1,"2345":1,"2346":2,"2347":1,"2349":1,"2350":2,"2353":1,"2361":4,"2401":1,"2406":1,"2514":1,"2516":3,"2526":1,"2528":1,"2529":1,"2548":2,"2556":8,"2566":1,"2571":1,"2627":1,"2660":2,"2669":1,"2672":2,"2697":3,"2699":7,"2743":1}}],["useful",{"0":{"2601":1},"1":{"2602":1,"2603":1,"2604":1,"2605":1,"2606":1,"2607":1,"2608":1,"2609":1,"2610":1,"2611":1,"2612":1},"2":{"427":1,"455":1,"502":1,"515":1,"550":1,"578":1,"581":1,"592":1,"630":1,"662":1,"689":1,"1176":1,"1250":1,"1252":1,"1253":1,"1269":1,"1331":1,"1342":1,"1360":1,"1364":2,"1368":2,"1378":1,"1380":1,"1403":1,"1441":1,"1459":1,"1495":1,"1499":1,"1507":1,"1512":1,"1518":3,"1562":1,"1719":1,"1806":2,"1817":1,"1822":1,"1872":3,"1874":2,"1878":1,"1918":1,"1929":2,"1935":1,"1938":1,"2044":1,"2060":1,"2106":1,"2118":1,"2131":1,"2143":1,"2170":1,"2182":1,"2226":1,"2228":1,"2234":1,"2262":1,"2266":1,"2272":1,"2316":1,"2402":1,"2495":1,"2564":1,"2570":1,"2601":1,"2603":1,"2606":1,"2712":1,"2741":1}}],["useless",{"2":{"199":1,"211":1,"266":2}}],["used",{"2":{"25":1,"49":1,"50":1,"60":1,"110":1,"120":1,"157":1,"174":1,"176":2,"203":1,"209":1,"215":1,"240":1,"243":1,"278":1,"279":1,"317":2,"324":1,"334":2,"341":1,"370":1,"374":2,"385":1,"415":1,"416":1,"435":1,"466":2,"467":1,"470":1,"493":1,"497":1,"502":1,"504":1,"512":1,"513":3,"521":1,"529":5,"530":1,"534":1,"541":1,"557":1,"559":1,"568":1,"575":1,"586":1,"588":1,"597":1,"598":3,"599":1,"600":1,"602":2,"606":1,"635":4,"639":2,"657":2,"661":1,"662":1,"683":1,"685":1,"687":1,"688":5,"689":3,"690":4,"691":2,"692":1,"694":1,"697":2,"698":1,"699":1,"702":1,"703":1,"1121":3,"1123":1,"1125":1,"1126":1,"1127":1,"1129":2,"1132":2,"1133":1,"1134":1,"1174":1,"1177":2,"1195":1,"1198":1,"1220":1,"1225":1,"1226":1,"1243":1,"1247":1,"1248":1,"1249":1,"1293":1,"1300":1,"1303":1,"1304":2,"1319":2,"1334":1,"1335":1,"1336":2,"1349":1,"1354":1,"1360":1,"1361":1,"1378":1,"1385":1,"1390":1,"1393":1,"1423":1,"1431":1,"1451":1,"1458":1,"1467":1,"1494":1,"1500":1,"1515":1,"1555":1,"1570":1,"1573":1,"1626":1,"1628":1,"1657":1,"1660":1,"1663":1,"1665":1,"1666":2,"1670":2,"1671":1,"1676":1,"1731":1,"1807":1,"1808":1,"1809":1,"1815":1,"1817":1,"1819":3,"1820":2,"1822":3,"1856":1,"1857":5,"1858":1,"1862":1,"1863":1,"1868":2,"1870":1,"1872":2,"1873":1,"1876":1,"1878":1,"1885":1,"1887":1,"1894":2,"1898":2,"1899":1,"1906":1,"1908":3,"1923":1,"1933":1,"1935":1,"1940":3,"1941":2,"1942":1,"1948":2,"1955":1,"2034":2,"2038":2,"2046":1,"2047":1,"2076":1,"2106":1,"2107":2,"2114":1,"2118":2,"2119":1,"2125":1,"2126":1,"2128":2,"2132":1,"2136":1,"2139":1,"2143":2,"2144":1,"2148":1,"2149":2,"2153":1,"2161":2,"2165":1,"2169":6,"2170":1,"2171":3,"2172":1,"2178":1,"2183":1,"2226":1,"2230":1,"2236":1,"2242":1,"2252":1,"2259":1,"2263":4,"2276":1,"2280":1,"2282":2,"2284":1,"2294":2,"2298":1,"2299":1,"2300":1,"2302":1,"2314":1,"2331":1,"2350":1,"2398":1,"2403":1,"2405":2,"2408":1,"2411":3,"2413":2,"2414":1,"2448":1,"2454":1,"2479":1,"2480":1,"2492":1,"2512":1,"2515":1,"2516":5,"2517":2,"2518":4,"2519":4,"2530":1,"2535":1,"2548":2,"2553":3,"2564":2,"2566":8,"2571":1,"2573":1,"2576":10,"2577":12,"2581":1,"2587":2,"2593":1,"2594":1,"2596":2,"2597":2,"2600":1,"2614":1,"2616":2,"2636":1,"2640":2,"2644":1,"2646":1,"2647":1,"2664":1,"2671":1,"2672":2,"2683":1,"2688":1,"2693":1,"2695":1,"2711":1,"2721":1,"2749":1,"2756":1}}],["uses",{"2":{"8":1,"36":1,"46":1,"50":1,"89":1,"100":1,"114":1,"163":1,"218":1,"401":1,"403":1,"430":1,"436":1,"495":1,"510":1,"526":1,"529":1,"530":1,"554":1,"635":2,"657":3,"661":2,"662":1,"681":1,"687":1,"1134":3,"1221":1,"1234":1,"1240":1,"1265":1,"1268":2,"1283":1,"1315":1,"1322":1,"1332":3,"1336":2,"1362":1,"1401":1,"1405":3,"1492":1,"1527":2,"1803":1,"1804":1,"1813":2,"1821":1,"1855":1,"1856":1,"1857":1,"1867":1,"1869":1,"1879":1,"1905":1,"1906":1,"1908":1,"1917":1,"1948":2,"1950":1,"1959":1,"2033":1,"2106":1,"2114":3,"2125":1,"2225":2,"2233":1,"2238":1,"2295":3,"2307":1,"2342":1,"2406":1,"2411":2,"2414":1,"2437":3,"2454":1,"2479":1,"2506":1,"2510":1,"2523":1,"2533":2,"2546":1,"2585":1,"2592":1,"2596":1,"2614":1,"2616":1,"2705":1,"2707":1,"2737":1}}],["user\`",{"2":{"1344":1}}],["username>",{"2":{"446":1,"1380":1,"2421":1,"2422":2,"2477":3,"2479":2}}],["username",{"2":{"385":2,"425":1,"482":3,"554":2,"1376":1,"1380":2,"2421":1,"2435":1,"2436":2,"2437":2,"2438":5,"2468":1,"2553":1,"2672":1}}],["user",{"0":{"40":1,"53":1,"67":1,"72":1,"85":1,"101":1,"121":1,"139":1,"155":1,"165":1,"180":1,"193":1,"203":1,"205":1,"216":1,"225":1,"239":1,"252":1,"269":1,"369":1,"415":1,"425":1,"431":1,"450":1,"572":1,"576":1,"582":1,"588":1,"590":2,"594":1,"1359":1,"1444":1,"1526":1,"1555":1,"1556":1,"1689":1,"1690":1,"1718":1,"1778":1,"1783":1,"2023":1,"2028":1,"2192":1,"2741":1},"1":{"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"86":1,"87":1,"88":1,"89":1,"90":1,"102":1,"103":1,"104":1,"105":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"140":1,"141":1,"142":1,"143":1,"156":1,"157":1,"158":1,"159":1,"166":1,"167":1,"168":1,"169":1,"170":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"194":1,"195":1,"196":1,"197":1,"206":1,"207":1,"217":1,"218":1,"219":1,"220":1,"221":1,"226":1,"240":1,"241":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"270":1,"271":1,"272":1,"273":1,"370":1,"371":1,"372":1,"373":1,"374":1,"375":1,"376":1,"377":1,"378":1,"379":1,"380":1,"381":1,"382":1,"383":1,"384":1,"385":1,"386":1,"387":1,"388":1,"389":1,"390":1,"391":1,"432":1,"433":1,"434":1,"435":1,"1360":1,"1361":1,"1362":1,"1363":1,"1445":1,"1446":1,"1447":1,"1448":1,"1449":1,"1779":1,"2024":1,"2193":1},"2":{"3":1,"4":1,"7":1,"15":1,"28":1,"31":5,"34":3,"49":3,"70":3,"75":3,"90":4,"93":1,"105":8,"114":1,"125":4,"134":1,"149":3,"154":1,"158":1,"167":1,"176":6,"182":2,"185":4,"191":4,"195":2,"196":3,"199":1,"203":5,"211":4,"213":2,"220":1,"222":1,"228":2,"229":1,"231":3,"238":1,"249":7,"277":2,"352":4,"367":1,"385":1,"415":5,"422":1,"425":4,"429":1,"430":6,"431":2,"433":3,"435":3,"440":1,"511":1,"530":1,"534":3,"556":1,"566":4,"568":4,"571":1,"572":1,"573":1,"574":1,"576":1,"577":1,"579":1,"582":1,"583":1,"586":2,"587":1,"588":4,"590":2,"591":2,"592":2,"593":1,"594":1,"595":1,"606":1,"616":1,"1245":1,"1252":1,"1302":1,"1303":1,"1331":3,"1332":35,"1333":3,"1335":1,"1341":2,"1343":1,"1344":2,"1345":1,"1359":4,"1360":4,"1375":2,"1378":1,"1379":1,"1383":5,"1384":2,"1385":2,"1398":1,"1400":1,"1404":2,"1430":4,"1437":1,"1440":1,"1445":5,"1446":2,"1449":1,"1506":2,"1507":2,"1511":1,"1549":4,"1553":1,"1554":2,"1555":2,"1556":4,"1560":4,"1593":1,"1594":1,"1637":2,"1638":1,"1678":1,"1680":2,"1686":2,"1689":1,"1690":1,"1714":1,"1716":2,"1717":1,"1718":1,"1729":3,"1733":4,"1791":1,"1792":1,"1806":1,"1813":1,"1814":1,"1815":1,"1816":3,"1820":1,"1822":5,"1823":2,"1826":3,"1830":1,"1870":3,"1874":4,"1875":2,"1879":3,"1880":3,"1882":2,"1883":2,"1887":1,"1891":2,"1892":1,"1897":1,"1898":2,"1899":3,"1917":1,"1932":1,"1933":3,"1934":1,"1935":2,"1936":1,"1937":2,"1938":1,"1939":1,"1940":2,"1941":3,"1943":2,"1948":2,"1949":3,"1951":1,"1952":3,"1957":4,"1958":3,"1959":2,"1960":1,"2034":2,"2042":1,"2043":3,"2044":5,"2065":1,"2066":1,"2069":1,"2070":1,"2071":2,"2078":1,"2130":14,"2137":1,"2139":1,"2140":2,"2143":9,"2152":3,"2158":1,"2161":2,"2162":1,"2166":1,"2167":3,"2168":7,"2169":4,"2170":4,"2171":4,"2183":1,"2192":1,"2196":1,"2197":1,"2198":1,"2228":2,"2243":1,"2245":1,"2247":1,"2249":1,"2255":4,"2258":1,"2261":1,"2263":4,"2299":2,"2300":2,"2305":1,"2306":3,"2313":1,"2323":1,"2413":2,"2414":2,"2415":1,"2421":2,"2427":1,"2435":1,"2438":1,"2440":2,"2441":1,"2443":1,"2444":1,"2445":1,"2465":1,"2468":2,"2483":2,"2491":5,"2513":1,"2518":1,"2522":1,"2543":1,"2565":1,"2566":6,"2567":2,"2573":1,"2574":1,"2576":2,"2577":10,"2604":1,"2606":2,"2614":1,"2616":2,"2696":1,"2706":2,"2710":1,"2728":1,"2737":1,"2741":1,"2749":3,"2757":1}}],["userspace",{"0":{"228":1,"392":1,"393":1,"394":1,"395":1,"396":1,"397":1,"1376":1,"1378":1,"2258":1,"2428":1,"2441":1,"2443":1,"2444":1,"2446":1,"2447":1},"1":{"393":1,"394":1,"395":1,"396":1,"397":1,"1377":1,"1378":1,"1379":1,"1380":1,"1381":1,"1382":1,"1383":1,"1384":1,"1385":1,"2429":1,"2430":1,"2431":1,"2432":1,"2433":1,"2434":1,"2435":1,"2436":1,"2437":1,"2438":1,"2439":1,"2440":1,"2442":1,"2443":1,"2444":1,"2445":1,"2446":1,"2447":1,"2448":1},"2":{"74":2,"76":1,"134":1,"176":1,"191":3,"199":1,"211":1,"213":2,"222":1,"224":1,"228":4,"236":3,"241":2,"249":1,"253":2,"265":2,"268":2,"270":2,"275":1,"393":6,"394":6,"395":4,"396":3,"397":8,"556":1,"1376":2,"1377":2,"1378":1,"1382":1,"1383":2,"1384":3,"1385":2,"1398":1,"1729":2,"1952":2,"2258":1,"2261":1,"2428":1,"2437":1,"2440":1,"2441":5,"2442":1,"2443":3,"2444":3,"2445":2,"2446":5,"2447":5,"2448":1,"2565":1,"2566":1,"2724":1}}],["users",{"0":{"1339":1,"1340":1,"1672":1},"1":{"1673":1,"1674":1,"1675":1},"2":{"0":1,"9":1,"13":1,"19":1,"39":1,"52":1,"62":1,"70":1,"114":1,"118":1,"131":1,"154":1,"156":1,"166":2,"173":1,"201":1,"221":2,"228":1,"234":1,"243":2,"263":1,"276":1,"309":1,"310":1,"322":1,"337":1,"352":5,"388":1,"401":1,"414":1,"415":1,"417":1,"423":1,"424":1,"435":1,"450":1,"451":1,"496":1,"519":1,"527":1,"559":1,"575":1,"606":1,"609":1,"697":1,"1238":1,"1265":1,"1337":1,"1340":1,"1341":2,"1346":2,"1376":4,"1377":1,"1382":2,"1383":1,"1447":1,"1499":1,"1555":1,"1670":1,"1685":1,"2183":1,"2258":2,"2261":1,"2299":1,"2300":1,"2304":1,"2305":4,"2306":1,"2435":1,"2437":2,"2440":1,"2441":2,"2459":2,"2463":1,"2477":1,"2478":1,"2566":2,"2573":1,"2577":1,"2656":1,"2718":3,"2719":1}}],["use",{"0":{"6":1,"17":1,"30":1,"32":1,"33":1,"164":1,"1267":1,"1435":1,"1656":1,"1809":1,"1892":1,"1899":1,"2161":1,"2255":1,"2293":1,"2752":1},"1":{"31":1,"34":1,"1436":1},"2":{"1":1,"7":1,"17":1,"25":1,"30":1,"31":1,"32":1,"33":1,"34":1,"36":1,"37":1,"43":1,"45":1,"49":2,"70":1,"74":1,"76":1,"80":1,"87":1,"89":1,"93":1,"94":3,"95":1,"99":1,"103":1,"107":1,"114":5,"118":1,"119":3,"126":1,"133":2,"134":9,"149":5,"160":3,"166":1,"167":1,"174":1,"176":15,"179":1,"190":1,"191":15,"194":2,"199":10,"206":1,"211":11,"215":1,"218":1,"220":2,"222":2,"232":1,"236":8,"240":1,"249":4,"256":1,"260":1,"266":2,"277":3,"305":1,"311":1,"313":1,"318":1,"330":1,"331":1,"334":1,"342":1,"349":1,"357":1,"371":1,"378":1,"395":1,"401":1,"402":1,"403":1,"405":2,"430":3,"432":4,"435":1,"440":1,"442":2,"445":2,"446":1,"447":1,"453":6,"454":3,"455":2,"456":1,"457":2,"460":3,"461":1,"462":2,"466":1,"467":1,"469":2,"470":1,"471":1,"472":1,"473":1,"474":1,"475":1,"477":1,"479":3,"481":1,"483":1,"484":1,"487":2,"488":1,"500":1,"502":11,"505":2,"508":1,"509":3,"510":1,"511":1,"515":1,"516":2,"522":1,"529":1,"532":1,"537":1,"540":1,"541":1,"545":1,"554":2,"557":1,"563":2,"566":2,"568":1,"570":2,"571":1,"573":1,"574":1,"586":1,"588":2,"592":1,"597":1,"606":2,"611":2,"612":1,"613":1,"616":1,"621":1,"622":1,"623":1,"625":1,"626":1,"629":1,"631":1,"633":1,"635":1,"641":2,"643":2,"655":1,"657":12,"658":8,"659":2,"661":5,"665":2,"666":2,"669":1,"681":1,"683":1,"689":2,"692":1,"697":1,"698":1,"700":1,"702":1,"703":6,"707":1,"726":1,"730":2,"734":1,"756":2,"760":1,"785":2,"790":1,"817":2,"824":1,"849":2,"857":1,"884":2,"891":1,"918":2,"925":1,"952":2,"959":1,"986":2,"993":1,"1020":2,"1027":1,"1054":2,"1061":1,"1088":2,"1095":1,"1121":1,"1122":1,"1124":3,"1127":1,"1129":1,"1130":1,"1132":5,"1133":5,"1134":1,"1142":2,"1144":2,"1148":1,"1175":1,"1176":1,"1177":8,"1181":1,"1182":1,"1196":1,"1198":7,"1213":2,"1225":1,"1226":7,"1228":1,"1229":2,"1230":7,"1236":1,"1238":2,"1239":1,"1242":3,"1245":2,"1250":1,"1268":3,"1269":1,"1270":1,"1273":1,"1276":2,"1280":1,"1286":1,"1288":1,"1290":2,"1291":1,"1300":2,"1301":1,"1303":1,"1310":2,"1312":1,"1313":1,"1326":2,"1329":1,"1330":1,"1331":1,"1332":9,"1334":1,"1335":1,"1336":2,"1340":1,"1341":3,"1344":2,"1346":1,"1351":2,"1352":2,"1353":2,"1355":1,"1359":3,"1361":2,"1363":1,"1364":1,"1367":1,"1370":2,"1376":1,"1377":1,"1378":2,"1379":1,"1380":1,"1383":7,"1384":1,"1385":4,"1386":1,"1393":3,"1396":2,"1404":1,"1405":2,"1430":2,"1439":1,"1442":1,"1445":2,"1448":2,"1450":1,"1451":1,"1453":1,"1457":1,"1466":1,"1467":1,"1469":6,"1470":4,"1491":1,"1492":1,"1495":2,"1496":1,"1499":1,"1500":2,"1501":2,"1509":1,"1511":1,"1512":1,"1515":1,"1518":1,"1524":1,"1526":1,"1527":1,"1528":2,"1529":1,"1554":1,"1556":1,"1562":1,"1573":1,"1574":1,"1635":1,"1655":3,"1658":1,"1668":2,"1670":3,"1671":1,"1673":1,"1674":1,"1677":4,"1723":4,"1725":1,"1729":2,"1733":2,"1791":1,"1799":1,"1801":1,"1805":2,"1806":1,"1807":1,"1813":1,"1814":1,"1817":2,"1819":1,"1820":10,"1824":1,"1826":1,"1855":1,"1856":1,"1857":4,"1858":1,"1862":1,"1867":1,"1868":1,"1869":1,"1870":5,"1872":1,"1873":1,"1876":2,"1879":1,"1881":1,"1889":1,"1895":1,"1904":1,"1905":1,"1906":1,"1907":3,"1908":1,"1910":3,"1911":2,"1912":1,"1917":1,"1918":1,"1921":1,"1930":1,"1933":3,"1934":1,"1941":2,"1943":1,"1944":4,"1946":1,"1952":2,"1954":1,"1957":2,"1959":2,"1960":1,"2032":1,"2035":6,"2037":1,"2039":1,"2041":1,"2042":1,"2044":2,"2060":1,"2106":1,"2107":1,"2108":1,"2114":2,"2117":2,"2118":2,"2120":2,"2125":1,"2127":1,"2128":3,"2129":6,"2132":1,"2133":1,"2137":1,"2138":1,"2141":2,"2142":1,"2146":1,"2149":2,"2150":1,"2152":1,"2153":1,"2161":2,"2162":2,"2168":1,"2169":3,"2170":2,"2171":4,"2181":3,"2182":2,"2226":2,"2229":3,"2230":1,"2231":2,"2233":1,"2238":3,"2243":1,"2244":1,"2252":2,"2254":1,"2258":1,"2259":2,"2260":1,"2262":6,"2263":3,"2273":1,"2274":3,"2276":1,"2279":2,"2280":1,"2299":1,"2302":3,"2311":2,"2320":1,"2323":2,"2326":1,"2329":1,"2333":1,"2335":1,"2345":1,"2347":1,"2355":1,"2395":2,"2396":1,"2405":4,"2411":1,"2414":1,"2421":1,"2424":1,"2427":1,"2431":1,"2436":2,"2438":1,"2441":3,"2442":1,"2443":1,"2444":1,"2445":3,"2446":1,"2450":1,"2452":1,"2455":1,"2467":1,"2468":2,"2469":1,"2474":1,"2477":1,"2480":6,"2483":1,"2485":1,"2490":1,"2491":3,"2498":1,"2506":4,"2512":1,"2513":2,"2514":1,"2515":1,"2521":1,"2524":1,"2526":1,"2530":4,"2533":1,"2534":1,"2536":2,"2537":2,"2538":2,"2541":2,"2549":1,"2550":1,"2554":1,"2556":2,"2558":2,"2564":2,"2566":8,"2568":1,"2574":1,"2575":3,"2576":3,"2577":3,"2578":3,"2602":1,"2605":3,"2607":4,"2608":1,"2609":1,"2610":2,"2611":1,"2614":1,"2615":3,"2673":2,"2674":1,"2676":2,"2677":2,"2678":1,"2683":2,"2688":1,"2689":2,"2692":1,"2694":1,"2695":1,"2697":3,"2698":1,"2700":1,"2702":3,"2708":1,"2711":1,"2719":1,"2720":2,"2723":2,"2728":4,"2738":4,"2740":1,"2743":1,"2746":3,"2747":1,"2757":1}}],["hkcu",{"2":{"2183":1}}],["hrl",{"2":{"2153":1}}],["hl",{"2":{"2153":3}}],["hwdb",{"2":{"2316":1}}],["hw",{"2":{"1863":1}}],["hfuse",{"2":{"2348":2}}],["hf",{"2":{"1572":13,"1573":2,"1579":2}}],["hfdkb",{"2":{"217":1}}],["hm",{"2":{"1491":1}}],["hc",{"2":{"1491":1,"2299":2}}],["hz",{"2":{"702":1,"818":1,"820":11,"850":1,"853":6,"885":1,"887":6,"919":1,"921":6,"953":1,"955":6,"987":1,"989":6,"1089":1,"1091":10,"2699":1}}],["h>",{"2":{"657":2,"658":2,"661":2,"1132":1,"1133":1,"2577":1}}],["h1",{"2":{"616":1,"617":3}}],["hyper",{"2":{"2254":2,"2410":1}}],["hyphen",{"2":{"1499":1}}],["hypr",{"2":{"1299":1,"2373":2,"2374":1,"2410":2}}],["hypothetical",{"2":{"597":1}}],["hysteresis",{"2":{"114":1}}],["h87a",{"2":{"530":5}}],["h87g2",{"2":{"249":1}}],["hurt",{"2":{"2279":1}}],["hurry",{"2":{"1412":1}}],["hundreds",{"2":{"1825":1}}],["hungarian",{"2":{"1355":1,"2712":3}}],["huge",{"2":{"1527":1}}],["hum5",{"2":{"1578":1}}],["hum4",{"2":{"1578":1}}],["hum3",{"2":{"1578":1}}],["hum2",{"2":{"1578":1}}],["hum1",{"2":{"1578":1}}],["hum",{"2":{"1578":6}}],["humbert",{"2":{"624":1,"1265":1}}],["humans",{"2":{"530":1}}],["human",{"2":{"377":1,"436":1,"2411":1,"2615":1,"2631":1}}],["hui",{"2":{"530":2,"1948":1,"2377":1}}],["hud",{"2":{"530":2,"1948":2,"2377":1}}],["hub",{"0":{"1297":1},"2":{"249":1}}],["hub20",{"2":{"241":2}}],["hub16",{"2":{"241":2}}],["hues",{"2":{"1949":2,"1951":2,"2040":1}}],["hueu",{"2":{"1559":1,"2034":1,"2376":1}}],["hued",{"2":{"1559":1,"2034":1,"2376":1}}],["hue",{"0":{"1984":1,"1985":1,"1986":1,"1987":1,"1988":1,"2054":1},"1":{"1989":1},"2":{"49":1,"111":1,"183":2,"222":3,"292":1,"506":2,"1560":4,"1948":4,"1949":44,"1954":2,"1984":1,"1985":1,"1986":1,"1987":1,"1988":1,"1989":1,"2012":1,"2013":1,"2014":1,"2015":1,"2016":1,"2033":2,"2034":6,"2035":4,"2039":1,"2054":12,"2057":2,"2299":2,"2376":6,"2377":4,"2577":13,"2597":1,"2694":4,"2695":4,"2708":3}}],["h2",{"2":{"211":1,"617":2}}],["hjson",{"2":{"191":1,"199":1,"222":1,"610":2,"2566":1}}],["hpp",{"2":{"160":1}}],["hnahkb",{"2":{"143":3,"149":1}}],["http",{"2":{"315":1,"358":1,"402":1,"522":1,"551":1,"558":1,"1380":1,"1527":1,"2570":1}}],["https",{"2":{"2":1,"21":1,"196":1,"236":1,"314":1,"315":1,"317":4,"359":1,"370":1,"515":1,"520":1,"521":1,"551":1,"554":1,"557":1,"623":1,"624":5,"684":7,"685":1,"701":1,"1235":1,"1236":1,"1242":3,"1274":1,"1275":3,"1279":2,"1280":1,"1281":3,"1283":1,"1289":2,"1290":1,"1293":2,"1297":1,"1298":2,"1359":1,"1680":1,"2040":1,"2252":1,"2255":4,"2303":2,"2431":1,"2438":2,"2443":1,"2444":1,"2462":1,"2477":8,"2479":5,"2506":1,"2513":1,"2553":2,"2566":3,"2672":1}}],["html",{"2":{"279":1,"551":1,"1242":1,"1280":1,"1290":1,"2303":1}}],["ht32",{"2":{"130":1,"134":1}}],["hd44780u",{"2":{"1589":1}}],["hd44780",{"0":{"1588":1,"1596":1,"1598":1,"1599":1,"1600":1,"1602":1,"1603":1,"1605":1,"1607":1,"1609":1,"1611":1,"1613":1,"1615":1,"1617":1,"1619":1,"1622":1,"1624":1,"1626":1,"1628":1},"1":{"1589":1,"1590":1,"1591":1,"1592":1,"1593":1,"1594":1,"1595":1,"1596":1,"1597":2,"1598":1,"1599":1,"1600":1,"1601":2,"1602":1,"1603":1,"1604":2,"1605":1,"1606":2,"1607":1,"1608":2,"1609":1,"1610":2,"1611":1,"1612":2,"1613":1,"1614":2,"1615":1,"1616":2,"1617":1,"1618":2,"1619":1,"1620":2,"1621":2,"1622":1,"1623":2,"1624":1,"1625":2,"1626":1,"1627":2,"1628":1,"1629":2},"2":{"64":1,"160":1,"1591":7,"1593":2,"1594":4,"1609":1,"1613":1,"1622":1,"2566":2}}],["hs60v2",{"0":{"1243":1}}],["hs60",{"2":{"277":1}}],["hs",{"2":{"211":1,"266":1}}],["hsv888",{"2":{"2597":1}}],["hsvs",{"2":{"191":1}}],["hsv",{"0":{"2016":2},"1":{"2017":2},"2":{"49":1,"114":1,"149":1,"1332":7,"1950":1,"1953":22,"1959":11,"1960":1,"2017":2,"2042":5,"2044":2,"2051":7,"2054":2,"2058":24,"2577":1,"2597":3,"2694":1,"2695":1}}],["hsgw",{"2":{"37":2}}],["hierarchies",{"2":{"2492":1,"2503":1}}],["hierarchy",{"2":{"176":1,"568":1}}],["hich",{"2":{"1943":1}}],["hiragana",{"2":{"1280":1,"2391":2}}],["himself",{"2":{"1265":1}}],["his",{"2":{"1265":1,"2270":1,"2281":1}}],["history",{"0":{"606":1},"2":{"2401":1,"2474":1}}],["historically",{"2":{"172":1,"189":1,"273":1,"276":1,"606":1,"2566":1}}],["historical",{"2":{"126":1,"127":1,"241":1,"245":1,"253":1,"270":1,"688":1,"2441":1}}],["hint",{"0":{"618":1},"1":{"619":1,"620":1},"2":{"618":1,"2474":1}}],["hineybush",{"2":{"530":4}}],["hinder",{"2":{"474":1}}],["hi",{"2":{"266":1,"1722":1}}],["hillside48",{"2":{"176":1}}],["hillside",{"2":{"149":1,"168":2,"181":6,"191":1}}],["hits",{"2":{"1329":1,"1728":4,"1949":5}}],["hitting",{"2":{"626":2,"1508":1,"2169":1,"2226":1,"2263":1,"2479":1,"2490":1,"2608":1,"2738":1}}],["hit",{"2":{"114":1,"152":1,"291":1,"505":1,"627":1,"1270":1,"1329":1,"1406":1,"1412":1,"1508":4,"1630":1,"1678":1,"1684":1,"1686":1,"1728":5,"1821":1,"1949":7,"2145":1,"2153":1,"2160":3,"2169":4,"2182":1,"2234":1,"2508":1,"2718":1}}],["highest",{"2":{"496":1,"659":1,"1329":1,"1332":1,"1338":1,"1341":2,"1343":1,"1344":1,"1406":1,"1451":1,"1452":1,"1525":1,"1722":1,"1813":1,"1880":1,"1882":1,"1897":2,"1898":2,"1958":3,"2137":1,"2172":1,"2403":1,"2605":1,"2644":1}}],["higher",{"2":{"114":1,"125":1,"185":1,"341":1,"502":1,"505":1,"659":1,"1136":1,"1335":1,"1338":2,"1340":1,"1821":1,"1863":1,"2170":1,"2401":2,"2403":4,"2406":1,"2564":2,"2574":1,"2576":1,"2605":1,"2720":1,"2737":1}}],["highlight",{"2":{"435":1}}],["highlights",{"2":{"381":1}}],["highlighted",{"2":{"272":1}}],["highly",{"2":{"182":1,"663":1,"1377":1,"2108":1,"2341":1,"2478":1,"2568":1}}],["high",{"2":{"49":2,"92":1,"114":1,"243":2,"279":1,"352":1,"502":3,"509":1,"510":2,"517":1,"556":1,"659":4,"683":1,"696":5,"1126":1,"1134":1,"1214":2,"1215":1,"1225":1,"1331":1,"1399":1,"1406":1,"1451":2,"1457":1,"1458":1,"1557":1,"1562":1,"1576":2,"1577":2,"1637":3,"1683":1,"1715":1,"1717":2,"1803":2,"2124":1,"2150":1,"2311":1,"2343":1,"2344":1,"2345":1,"2346":1,"2348":2,"2401":1,"2406":1,"2530":1,"2548":1,"2577":1,"2619":1,"2676":1,"2677":1,"2685":1,"2720":1,"2735":1,"2736":1,"2742":1}}],["hidden",{"2":{"2601":1,"2749":1}}],["hid4java",{"2":{"1921":1}}],["hidapi",{"2":{"1921":1}}],["hidraw",{"2":{"1254":1}}],["hidbootflash",{"2":{"2237":1}}],["hidboot",{"2":{"629":1}}],["hidusb",{"2":{"240":1,"626":1,"627":2,"629":4}}],["hides",{"2":{"2407":1}}],["hide",{"2":{"199":1,"1384":1}}],["hid",{"0":{"1249":1,"1254":1,"1918":1,"1925":1,"1927":1,"2238":1,"2639":1},"1":{"1919":1,"1920":1,"1921":1,"1922":1,"1923":1,"1924":1,"1925":1,"1926":2,"1927":1,"1928":2},"2":{"2":1,"34":1,"49":2,"50":1,"114":3,"143":2,"149":2,"199":2,"222":2,"236":1,"266":1,"371":1,"503":1,"516":1,"625":2,"629":1,"1249":1,"1254":4,"1255":1,"1272":1,"1273":1,"1278":1,"1491":1,"1677":1,"1714":1,"1832":2,"1870":3,"1876":4,"1916":1,"1918":2,"1920":4,"1921":7,"1922":2,"1923":11,"1925":1,"1927":1,"1948":1,"2034":1,"2235":1,"2237":1,"2238":6,"2239":1,"2263":2,"2314":1,"2315":1,"2355":1,"2385":1,"2401":1,"2406":1,"2566":1,"2571":1,"2639":1,"2649":1,"2660":2,"2710":1,"2738":1}}],["h7",{"2":{"49":1}}],["hhkbs",{"2":{"36":2}}],["hhkb",{"0":{"35":1,"36":1,"257":1,"258":1},"1":{"36":1},"2":{"35":3,"36":8,"211":2,"256":2,"257":1,"258":1,"1283":1}}],["hebrew",{"2":{"2712":2}}],["heir",{"2":{"1943":1}}],["heights",{"2":{"1820":1}}],["height",{"2":{"111":1,"114":1,"1817":2,"1820":3,"1821":3,"1822":1,"1859":2,"2141":2,"2142":3,"2576":13,"2577":9,"2587":2,"2594":1,"2615":1,"2686":1}}],["henkan",{"2":{"1280":1,"2391":1}}],["hence",{"2":{"656":1,"1329":1,"1401":1}}],["hey",{"2":{"343":1,"344":1,"345":1,"346":1,"349":1}}],["her",{"2":{"1565":1}}],["hertz",{"2":{"659":1}}],["herringbone",{"2":{"197":4}}],["here",{"0":{"1260":1},"2":{"31":1,"213":1,"233":1,"264":1,"274":1,"307":1,"316":1,"323":1,"324":2,"327":1,"329":1,"330":1,"331":1,"334":1,"335":2,"336":1,"391":1,"453":1,"485":1,"501":1,"515":1,"534":1,"554":5,"560":2,"562":1,"565":2,"566":2,"570":1,"586":1,"609":1,"614":1,"621":1,"629":1,"659":1,"683":1,"1235":1,"1236":1,"1242":1,"1262":1,"1268":1,"1271":1,"1287":1,"1297":1,"1300":1,"1331":1,"1332":1,"1346":1,"1351":1,"1359":2,"1377":2,"1379":1,"1383":1,"1405":1,"1430":1,"1431":1,"1450":1,"1453":1,"1464":2,"1497":1,"1518":4,"1523":1,"1530":1,"1562":1,"1668":1,"1725":1,"1853":1,"1876":1,"1880":1,"1897":1,"1898":1,"1921":2,"1923":1,"1943":1,"1946":1,"1959":1,"2040":1,"2041":1,"2119":1,"2126":1,"2160":1,"2161":1,"2164":1,"2169":2,"2170":2,"2171":1,"2181":1,"2242":1,"2255":2,"2261":1,"2262":1,"2263":1,"2268":1,"2272":1,"2275":1,"2277":2,"2278":1,"2279":1,"2298":1,"2311":2,"2313":1,"2314":1,"2318":1,"2348":2,"2351":1,"2367":1,"2374":1,"2407":1,"2410":1,"2424":1,"2431":1,"2441":1,"2443":1,"2459":1,"2473":1,"2474":1,"2475":1,"2477":1,"2488":1,"2489":1,"2506":1,"2508":1,"2513":1,"2522":1,"2555":1,"2566":1,"2568":2,"2601":1,"2612":1,"2670":1,"2707":1,"2711":1,"2721":1,"2725":1,"2728":1,"2739":1,"2741":2,"2746":1,"2748":1,"2750":1}}],["heated",{"2":{"2272":1}}],["heat",{"2":{"1950":1,"2270":1,"2272":3}}],["heating",{"2":{"1950":1,"2272":1,"2521":1}}],["heatmap",{"0":{"1950":1},"2":{"160":1,"176":2,"211":1,"1949":3,"1950":8,"2708":1}}],["heavily",{"2":{"1257":1,"1316":1,"1317":1,"1733":1,"1957":1}}],["heavy",{"2":{"149":1,"249":1,"251":1,"1219":1,"2454":1}}],["healthy",{"2":{"627":1}}],["headings",{"0":{"617":1},"2":{"617":3}}],["heading",{"2":{"616":3}}],["headroom",{"2":{"134":2}}],["head",{"2":{"99":1,"302":1,"319":1,"320":1,"347":1,"1259":1,"1264":1,"2474":6,"2504":1,"2507":1,"2509":1}}],["headers",{"2":{"94":1,"160":1,"199":1,"211":3,"249":2,"282":3,"294":1,"341":1,"559":1,"1825":1,"2564":2,"2710":1,"2711":1,"2712":1}}],["header",{"0":{"2570":1,"2586":1,"2593":1,"2712":1},"2":{"4":1,"134":1,"176":1,"191":6,"211":1,"222":2,"249":1,"277":1,"404":1,"453":1,"501":1,"534":1,"1554":1,"2309":1,"2328":1,"2339":2,"2352":1,"2450":1,"2564":4,"2585":2,"2586":2,"2587":3,"2588":3,"2589":2,"2592":2,"2593":8,"2594":3,"2595":2,"2596":3,"2597":2,"2598":2,"2599":2,"2710":1,"2711":3,"2712":4}}],["hecomi",{"2":{"143":2}}],["hexnumpad",{"2":{"2196":1,"2197":1,"2198":1}}],["hexadecimal",{"2":{"2091":1,"2093":1,"2095":1,"2097":1,"2181":1,"2699":2}}],["hex6c",{"2":{"211":1}}],["hex",{"2":{"94":1,"160":1,"199":1,"371":1,"387":1,"513":1,"612":2,"1238":1,"1287":6,"1385":1,"1923":1,"2075":1,"2183":2,"2229":1,"2230":1,"2231":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":2,"2252":1,"2262":3,"2263":4,"2277":1,"2278":1,"2346":1,"2347":6,"2348":1,"2349":4,"2425":3,"2427":1,"2437":1,"2452":3,"2453":1,"2469":3,"2674":1}}],["helios",{"0":{"1321":1},"2":{"199":1,"1311":2,"1315":4,"1322":4,"1635":1,"2545":1,"2709":1}}],["helix",{"0":{"55":1},"2":{"55":52,"114":1,"133":1,"134":1,"149":1,"160":1,"211":1,"266":1,"1814":1}}],["held",{"2":{"160":1,"194":3,"623":1,"1273":1,"1284":1,"1300":1,"1303":1,"1335":1,"1367":1,"1368":1,"1412":2,"1414":1,"1431":1,"1442":1,"1446":2,"1503":1,"1518":2,"1564":1,"1566":1,"1582":3,"1630":1,"1633":1,"1670":1,"1674":2,"1675":1,"1802":1,"1803":1,"1806":2,"1807":1,"1880":1,"1885":1,"1886":1,"1933":2,"1948":10,"2034":10,"2102":1,"2104":7,"2105":1,"2106":9,"2107":1,"2125":1,"2152":1,"2156":5,"2161":4,"2168":1,"2169":3,"2170":1,"2171":2,"2236":1,"2263":1,"2314":1,"2355":2,"2356":2,"2364":1,"2367":1,"2374":22,"2376":10,"2377":10,"2382":7,"2383":5,"2393":1,"2407":1,"2410":23,"2414":1,"2479":1,"2490":1,"2572":2,"2651":1,"2654":1,"2659":1,"2729":5,"2730":1,"2731":1,"2732":2,"2733":1,"2734":2,"2738":1}}],["helped",{"2":{"2476":1}}],["helper",{"2":{"49":1,"2130":1,"2269":1}}],["helpers",{"0":{"231":1},"2":{"49":1,"199":2,"211":1,"236":1}}],["helping",{"2":{"2266":1,"2418":1}}],["helpful",{"2":{"620":2,"1431":1,"1683":1,"1897":1,"2037":1,"2131":1,"2273":1,"2404":1,"2405":1,"2419":1,"2714":1}}],["help=",{"2":{"430":1,"441":2}}],["helps",{"2":{"173":1,"380":1,"477":1,"511":1,"1265":1,"1817":2,"2141":1,"2182":1,"2272":3,"2274":1,"2510":1,"2667":1,"2722":1}}],["help",{"0":{"356":1,"553":1,"2325":1,"2713":1},"1":{"2714":1,"2715":1,"2716":1},"2":{"132":1,"173":1,"228":1,"324":1,"393":2,"394":2,"395":2,"396":2,"402":2,"403":2,"411":2,"446":1,"485":1,"550":2,"553":1,"554":1,"556":1,"557":1,"567":1,"585":1,"613":1,"615":2,"623":1,"1337":1,"1340":1,"1353":1,"1406":1,"1416":1,"1437":1,"1530":4,"1733":1,"1957":1,"2123":1,"2176":1,"2250":1,"2262":1,"2267":1,"2268":1,"2273":1,"2280":1,"2286":2,"2311":1,"2322":1,"2325":1,"2326":1,"2355":2,"2392":2,"2400":1,"2450":1,"2455":1,"2468":1,"2474":3,"2510":2,"2521":1,"2564":1,"2566":1,"2568":1,"2575":6,"2637":1,"2702":1,"2703":1,"2713":1,"2714":1,"2727":1}}],["hello",{"0":{"1593":1,"2078":1},"2":{"23":1,"120":1,"426":1,"430":10,"432":1,"470":1,"1354":1,"1355":1,"1436":3,"1593":1,"1610":1,"2078":3,"2154":1,"2577":1}}],["hobbyist",{"2":{"2417":1}}],["hop",{"2":{"1258":1,"2748":1}}],["hopefully",{"2":{"560":1,"2752":1}}],["hope",{"2":{"245":1,"446":1,"1380":1,"2570":1}}],["hover",{"2":{"540":1,"2513":1}}],["housings",{"2":{"2272":1}}],["housekeeping",{"0":{"587":1,"588":1},"1":{"588":1},"2":{"75":1,"92":1,"277":1,"587":2,"588":2,"2130":2,"2577":7}}],["hours",{"2":{"358":1,"551":1}}],["home=",{"2":{"365":1,"366":1}}],["homebrew",{"0":{"365":1},"2":{"365":1,"2238":1,"2431":1,"2461":1,"2462":1}}],["home",{"0":{"1599":1},"2":{"277":1,"367":1,"373":1,"388":1,"393":1,"394":1,"397":4,"530":2,"1361":7,"1511":1,"1519":1,"1586":1,"1594":1,"1599":1,"1684":2,"1932":3,"2169":1,"2254":1,"2355":5,"2392":2,"2393":2,"2394":1,"2408":1,"2422":1,"2463":1,"2468":2,"2566":1,"2575":6,"2740":1}}],["hood",{"2":{"436":1,"611":1}}],["hoodrowg",{"2":{"211":1}}],["hooking",{"2":{"584":1,"585":1,"1902":1}}],["hooks",{"0":{"1556":1},"2":{"277":1,"567":1,"1556":1,"1723":1,"1944":1,"2067":1,"2150":1,"2152":2}}],["hook",{"0":{"1519":1,"1917":1},"2":{"199":1,"272":1,"584":1,"1386":1,"1525":1,"1902":2,"2529":1}}],["hooked",{"2":{"198":1,"506":1}}],["horizontally",{"2":{"1821":1,"1878":1,"1949":1}}],["horizontal",{"2":{"1807":1,"1821":1,"1857":1,"1865":1,"1876":1,"2577":1,"2686":1,"2688":1,"2695":1}}],["horrortroll",{"2":{"199":1}}],["horn",{"2":{"176":1}}],["hole",{"2":{"2266":1,"2528":1}}],["holiday",{"2":{"176":1}}],["holds",{"2":{"195":1,"1430":2,"1431":3,"1565":2,"1630":1,"2162":1,"2169":1,"2401":2,"2406":2,"2490":1,"2737":1}}],["holdings",{"2":{"211":1}}],["holding",{"0":{"1518":1},"2":{"152":2,"626":2,"1303":1,"1385":2,"1411":1,"1416":1,"1430":1,"1431":1,"1432":1,"1674":1,"1675":1,"1802":5,"1860":1,"1885":1,"1886":1,"2152":1,"2182":1,"2231":1,"2238":1,"2305":1,"2355":1,"2401":1,"2654":1,"2728":1,"2738":2,"2739":1}}],["hold",{"0":{"22":1,"195":1,"1308":1,"1432":1,"2168":1,"2414":1,"2415":1,"2726":1,"2729":1,"2735":1,"2736":1},"1":{"2727":1,"2728":1,"2729":1,"2730":2,"2731":2,"2732":2,"2733":2,"2734":2,"2735":2,"2736":2,"2737":1,"2738":1,"2739":1,"2740":1,"2741":1},"2":{"22":1,"112":4,"114":1,"134":2,"149":2,"176":2,"191":2,"194":8,"195":5,"199":3,"203":1,"206":3,"249":1,"505":18,"624":1,"626":2,"1270":1,"1284":1,"1299":19,"1308":1,"1335":1,"1353":1,"1368":2,"1409":1,"1411":1,"1412":2,"1414":1,"1416":1,"1423":1,"1431":5,"1432":2,"1446":2,"1495":1,"1500":1,"1516":3,"1518":5,"1522":1,"1529":1,"1630":1,"1632":1,"1633":1,"1670":1,"1673":3,"1674":2,"1675":2,"1805":1,"1806":1,"1860":3,"1885":2,"1892":1,"2106":1,"2168":33,"2169":16,"2170":4,"2171":6,"2179":2,"2196":2,"2237":1,"2249":2,"2263":1,"2269":1,"2272":2,"2366":1,"2373":19,"2379":1,"2410":1,"2414":4,"2415":3,"2416":1,"2450":4,"2490":2,"2498":1,"2566":2,"2674":4,"2691":1,"2724":1,"2726":2,"2727":1,"2728":1,"2729":10,"2730":1,"2731":4,"2732":6,"2733":4,"2735":19,"2736":14,"2737":2,"2740":1,"2754":4}}],["honor",{"2":{"176":1,"2441":1}}],["honeycomb",{"2":{"159":2}}],["hot",{"2":{"1949":1,"1950":1,"2118":1,"2133":1,"2267":1,"2273":2,"2280":1}}],["hotkey",{"2":{"1932":1}}],["hotkeys",{"2":{"1442":1,"1929":1,"1932":1}}],["hotdox76v2",{"2":{"191":1}}],["hotswap",{"2":{"122":1,"149":1,"191":1,"199":1,"207":2,"211":8,"222":1,"241":4,"266":1,"424":1}}],["hotfix",{"2":{"114":1,"134":1}}],["hosts",{"2":{"2637":1}}],["hosting",{"2":{"623":1,"2303":1,"2566":1}}],["host",{"0":{"1355":1,"1719":1,"2669":2},"2":{"113":1,"114":1,"134":1,"149":2,"182":1,"190":2,"191":3,"195":1,"199":2,"211":1,"222":1,"263":2,"334":1,"511":1,"515":1,"625":1,"1292":1,"1316":2,"1317":2,"1355":2,"1537":2,"1538":1,"1642":1,"1645":1,"1670":1,"1714":3,"1719":4,"1807":1,"1813":3,"1824":1,"1825":1,"1826":4,"1830":1,"1832":1,"1848":1,"1874":1,"1876":4,"1879":1,"1910":2,"1912":1,"1917":1,"1918":2,"1922":1,"1923":2,"1925":1,"1958":1,"1959":2,"2035":1,"2072":1,"2075":1,"2129":2,"2137":3,"2177":1,"2183":1,"2263":1,"2341":1,"2417":1,"2429":1,"2433":1,"2554":1,"2611":1,"2669":1,"2688":1,"2694":1,"2695":1,"2699":2,"2729":1,"2735":2,"2736":1,"2743":1}}],["hosted",{"2":{"93":1}}],["hostname",{"2":{"70":3}}],["however",{"2":{"493":1,"496":1,"575":1,"584":1,"625":1,"630":1,"633":1,"643":1,"665":1,"689":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1175":1,"1196":1,"1213":1,"1217":1,"1225":1,"1273":1,"1278":1,"1325":1,"1331":1,"1383":1,"1385":1,"1405":2,"1416":1,"1431":1,"1458":1,"1463":1,"1492":1,"1499":1,"1562":1,"1564":1,"1582":3,"1685":1,"1806":1,"1820":1,"1821":2,"1897":1,"1920":1,"1921":1,"2073":1,"2107":1,"2118":2,"2126":1,"2128":1,"2134":1,"2169":1,"2172":1,"2178":1,"2182":1,"2183":1,"2243":1,"2327":1,"2328":1,"2344":1,"2350":1,"2408":1,"2451":1,"2454":1,"2497":2,"2507":1,"2516":1,"2517":1,"2518":1,"2541":1,"2564":1,"2591":1,"2701":1,"2710":1,"2735":1,"2746":1,"2750":1,"2756":1}}],["how",{"0":{"550":1,"554":1,"567":1,"1253":1,"1259":1,"1269":1,"1286":1,"1411":1,"1413":1,"1438":1,"1439":1,"1500":1,"1887":1,"1888":1,"1930":1,"1940":1,"1941":1,"2161":1,"2255":1,"2283":1,"2311":1,"2312":1,"2320":1,"2472":1,"2614":1,"2616":1,"2720":1,"2721":1},"1":{"551":1,"568":1,"1501":1,"1889":1,"1890":1,"1891":1,"1892":1,"2313":1,"2314":1,"2315":1,"2316":1,"2317":1,"2318":1,"2319":1,"2320":1},"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"70":1,"76":1,"77":1,"90":1,"123":1,"153":2,"186":1,"188":1,"194":1,"263":1,"322":1,"337":1,"412":1,"430":1,"431":1,"453":1,"502":1,"505":6,"528":1,"545":1,"551":2,"554":1,"557":1,"561":2,"567":1,"588":1,"605":1,"606":1,"609":1,"611":1,"613":1,"641":1,"758":1,"787":1,"819":1,"821":1,"851":1,"854":1,"886":1,"888":1,"920":1,"922":1,"954":1,"956":1,"988":1,"990":1,"1022":1,"1024":1,"1056":1,"1058":1,"1090":1,"1092":1,"1146":1,"1236":1,"1243":2,"1261":1,"1262":1,"1270":1,"1332":1,"1334":1,"1340":2,"1341":2,"1343":1,"1344":1,"1356":1,"1360":2,"1361":1,"1377":1,"1405":1,"1416":1,"1438":1,"1450":2,"1557":1,"1573":4,"1663":1,"1668":1,"1672":1,"1673":1,"1674":1,"1675":1,"1716":1,"1724":1,"1730":1,"1807":2,"1820":1,"1863":1,"1881":1,"1894":1,"1932":1,"1940":1,"1941":1,"1945":1,"1949":3,"1950":1,"1954":1,"2033":1,"2038":3,"2040":6,"2041":1,"2105":1,"2118":1,"2126":2,"2128":1,"2131":2,"2160":1,"2162":1,"2169":1,"2172":1,"2226":2,"2260":1,"2268":1,"2274":2,"2280":1,"2281":1,"2283":1,"2289":1,"2290":1,"2291":1,"2305":1,"2311":2,"2312":1,"2325":1,"2409":1,"2417":1,"2418":1,"2423":1,"2424":2,"2426":1,"2454":1,"2456":1,"2468":1,"2472":1,"2474":1,"2483":1,"2492":1,"2503":2,"2522":1,"2553":1,"2556":1,"2564":1,"2566":1,"2568":1,"2576":2,"2577":3,"2578":1,"2613":1,"2614":2,"2663":1,"2671":1,"2688":1,"2695":1,"2723":1,"2724":1,"2725":2,"2728":1,"2740":1,"2742":2,"2746":1,"2747":2,"2751":1,"2753":2}}],["h",{"0":{"501":1,"1379":1,"1730":1,"1823":1,"1889":1,"1954":1,"2012":1,"2014":1,"2261":1,"2299":1,"2302":1,"2703":1},"1":{"502":1,"503":1,"504":1,"505":1,"506":1,"507":1,"508":1,"509":1,"510":1,"511":1,"2015":1},"2":{"4":2,"5":4,"14":1,"25":1,"28":1,"31":2,"34":2,"49":1,"50":8,"65":3,"70":12,"73":2,"74":1,"75":2,"76":1,"86":2,"94":1,"114":6,"119":1,"134":1,"149":3,"169":2,"170":2,"173":3,"176":12,"184":2,"191":3,"199":12,"201":4,"211":10,"220":1,"222":13,"236":7,"246":1,"249":1,"266":12,"273":1,"277":2,"282":1,"313":1,"314":1,"374":1,"384":1,"389":1,"390":1,"391":1,"393":2,"394":2,"395":2,"396":2,"401":1,"402":2,"403":2,"404":1,"411":2,"453":2,"496":2,"499":1,"501":2,"530":3,"534":1,"559":1,"588":1,"601":1,"606":3,"607":1,"608":1,"610":3,"613":2,"614":4,"631":1,"641":1,"643":1,"644":1,"657":2,"658":2,"661":4,"666":1,"667":1,"683":1,"684":3,"685":3,"686":2,"689":2,"690":2,"691":2,"694":2,"696":1,"697":1,"700":1,"702":1,"703":4,"704":1,"705":1,"731":1,"757":1,"758":1,"786":1,"787":1,"788":1,"818":1,"819":1,"820":1,"821":1,"822":1,"850":1,"851":1,"852":1,"853":1,"854":1,"855":1,"885":1,"886":1,"887":1,"888":1,"889":1,"919":1,"920":1,"921":1,"922":1,"923":1,"953":1,"954":1,"955":1,"956":1,"957":1,"987":1,"988":1,"989":1,"990":1,"991":1,"1021":1,"1022":1,"1023":1,"1024":1,"1025":1,"1055":1,"1056":1,"1057":1,"1058":1,"1059":1,"1089":1,"1090":1,"1091":1,"1092":1,"1093":1,"1124":2,"1127":1,"1130":1,"1132":5,"1133":5,"1134":1,"1135":1,"1137":1,"1138":1,"1142":1,"1145":1,"1146":1,"1175":1,"1177":6,"1196":1,"1198":2,"1213":1,"1214":1,"1215":1,"1216":1,"1217":1,"1225":1,"1226":2,"1227":1,"1228":1,"1230":3,"1242":1,"1250":2,"1253":1,"1255":1,"1267":1,"1276":1,"1290":1,"1294":1,"1316":1,"1320":1,"1326":1,"1328":1,"1332":1,"1340":1,"1346":1,"1347":2,"1351":4,"1362":1,"1376":3,"1377":1,"1379":7,"1384":1,"1385":6,"1387":1,"1390":1,"1391":1,"1392":1,"1393":2,"1394":1,"1395":1,"1396":1,"1397":1,"1398":4,"1401":1,"1402":2,"1403":2,"1404":1,"1405":1,"1406":2,"1414":1,"1415":2,"1416":1,"1431":1,"1435":2,"1440":1,"1446":1,"1457":1,"1458":1,"1459":1,"1469":2,"1470":2,"1492":1,"1495":1,"1496":2,"1500":2,"1501":1,"1503":1,"1504":1,"1513":1,"1524":1,"1527":4,"1530":2,"1547":1,"1553":2,"1554":1,"1555":1,"1557":1,"1558":1,"1559":1,"1568":1,"1570":1,"1575":1,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"1591":1,"1622":1,"1636":1,"1675":1,"1677":2,"1682":1,"1683":1,"1684":1,"1685":1,"1714":1,"1715":1,"1725":1,"1728":1,"1789":1,"1790":1,"1792":1,"1797":3,"1803":1,"1804":1,"1805":1,"1806":1,"1807":1,"1814":1,"1816":1,"1817":2,"1830":2,"1855":1,"1856":1,"1857":1,"1866":1,"1867":1,"1868":1,"1870":2,"1876":2,"1878":3,"1879":1,"1880":9,"1882":1,"1883":1,"1884":1,"1887":2,"1888":1,"1899":1,"1900":1,"1904":1,"1905":1,"1906":2,"1907":1,"1908":1,"1910":1,"1912":1,"1913":1,"1914":3,"1920":1,"1932":2,"1946":1,"1949":1,"1953":1,"2013":1,"2015":1,"2032":1,"2035":1,"2036":1,"2041":1,"2042":1,"2044":1,"2045":1,"2046":1,"2047":1,"2051":8,"2054":4,"2058":1,"2059":2,"2060":1,"2074":1,"2106":1,"2109":1,"2124":2,"2125":1,"2126":1,"2127":2,"2128":1,"2129":1,"2140":1,"2141":1,"2145":1,"2148":1,"2153":2,"2161":1,"2171":1,"2174":2,"2179":1,"2180":1,"2182":1,"2183":1,"2231":2,"2238":2,"2259":3,"2260":1,"2261":6,"2263":5,"2279":1,"2296":2,"2299":21,"2347":1,"2355":3,"2386":3,"2402":1,"2405":1,"2407":2,"2435":2,"2438":1,"2468":1,"2490":1,"2491":1,"2524":1,"2530":1,"2536":1,"2537":1,"2538":1,"2539":1,"2541":1,"2544":1,"2548":1,"2550":1,"2561":1,"2564":3,"2565":1,"2566":6,"2572":1,"2574":1,"2575":10,"2576":10,"2577":7,"2583":1,"2584":1,"2597":1,"2607":2,"2614":4,"2615":7,"2671":1,"2686":1,"2703":3,"2704":1,"2705":1,"2708":2,"2711":1,"2712":120,"2725":1,"2727":2,"2728":3,"2735":2,"2736":2,"2737":2,"2738":4}}],["hazards",{"0":{"2617":1},"1":{"2618":1,"2619":1,"2620":1}}],["hat",{"2":{"2431":1,"2464":1}}],["hate",{"2":{"401":1}}],["hamming",{"2":{"2152":1}}],["hammer",{"2":{"332":1}}],["habit",{"2":{"1416":1,"1437":1}}],["habits",{"2":{"195":1}}],["hargett",{"2":{"2753":1}}],["harmful",{"2":{"2273":1,"2274":1}}],["harming",{"2":{"481":1}}],["harr",{"2":{"1932":49}}],["harvest",{"2":{"1902":1}}],["hardwired",{"2":{"2271":1}}],["hardware",{"0":{"14":1,"502":1,"661":1,"1396":1,"1491":1,"1550":1,"1561":1,"1571":1,"1589":1,"1811":1,"2061":1,"2116":1,"2117":1,"2131":1,"2132":1,"2136":1,"2284":1,"2303":1,"2328":1,"2524":1,"2525":1,"2535":1,"2556":1,"2673":1},"1":{"1492":1,"1551":1,"1552":1,"2117":1,"2118":2,"2119":1,"2120":1,"2133":1,"2329":1,"2330":1,"2331":1,"2332":1,"2333":1,"2334":1,"2335":1,"2336":1,"2337":1,"2338":1,"2339":1,"2340":1,"2536":1,"2537":1,"2538":1},"2":{"14":2,"113":1,"114":1,"133":1,"156":1,"160":1,"163":2,"176":1,"191":4,"215":1,"236":1,"249":1,"277":1,"352":1,"493":1,"499":1,"511":1,"563":1,"565":1,"566":3,"574":2,"575":2,"578":2,"624":2,"627":1,"654":2,"655":1,"656":2,"661":2,"663":1,"681":1,"684":1,"685":1,"693":1,"703":2,"1122":1,"1125":1,"1127":1,"1128":1,"1130":1,"1195":1,"1289":1,"1325":1,"1396":4,"1459":1,"1461":1,"1463":1,"1466":1,"1492":1,"1573":2,"1720":1,"1729":1,"1788":1,"1811":1,"1821":1,"1853":1,"1861":3,"1871":2,"1873":1,"1874":3,"1902":1,"1952":1,"2031":1,"2065":1,"2115":1,"2131":1,"2133":1,"2146":1,"2230":1,"2284":2,"2300":1,"2301":2,"2303":1,"2304":1,"2329":1,"2333":1,"2346":1,"2347":1,"2348":1,"2407":1,"2515":1,"2523":1,"2524":2,"2525":3,"2530":1,"2535":1,"2543":1,"2546":1,"2553":1,"2555":1,"2566":4,"2567":2,"2578":1,"2638":1,"2676":1,"2718":1,"2719":1,"2725":1,"2743":1}}],["hardline",{"2":{"2270":1}}],["hardcoding",{"2":{"684":1}}],["hardcoded",{"2":{"191":1,"1401":1}}],["harder",{"2":{"606":1,"2323":1,"2424":1}}],["hard",{"2":{"49":1,"92":1,"263":1,"349":1,"361":2,"457":1,"481":3,"560":1,"1684":1,"2042":1,"2292":1,"2305":2,"2417":1,"2477":1}}],["haierwangwei2005",{"2":{"149":1}}],["hacks",{"2":{"479":1}}],["hacking",{"2":{"321":1}}],["hackpad",{"2":{"222":1}}],["hacked",{"2":{"218":1}}],["hacky",{"2":{"160":1}}],["hack",{"2":{"114":2,"149":1}}],["happened",{"2":{"484":1,"560":1,"2071":1,"2734":1,"2757":1}}],["happen",{"2":{"373":1,"452":1,"593":1,"594":1,"627":1,"707":1,"1278":1,"1325":1,"1344":1,"2152":1,"2167":1,"2327":1,"2628":1}}],["happens",{"2":{"349":1,"520":1,"574":3,"588":1,"592":2,"1359":1,"1376":1,"1441":1,"1676":1,"2130":1,"2311":1,"2314":1,"2473":1,"2641":1,"2642":1,"2728":1,"2729":3,"2735":1}}],["happening",{"2":{"113":1,"592":1,"1514":1,"2231":1,"2238":1,"2738":2}}],["happy",{"2":{"119":1,"336":1,"1435":1,"2255":1,"2307":2,"2420":1}}],["haptics",{"2":{"221":1,"1523":1}}],["haptic",{"0":{"1569":1,"1570":1,"1572":1,"1580":1,"1581":1,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1},"1":{"1570":1,"1571":1,"1572":1,"1573":2,"1574":2,"1575":2,"1576":2,"1577":2,"1578":2,"1579":2,"1580":2,"1581":1,"1582":2,"1583":2,"1584":2,"1585":2,"1586":2,"1587":2},"2":{"64":1,"114":2,"134":3,"160":1,"188":1,"191":1,"199":1,"211":1,"221":2,"222":2,"266":1,"592":1,"1570":14,"1572":21,"1579":1,"1580":1,"1581":3,"1582":4,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"2129":2,"2697":3,"2749":1}}],["hankaku",{"2":{"2391":1}}],["hanja",{"2":{"2391":1}}],["hangul",{"2":{"2391":1}}],["hang",{"2":{"303":1}}],["hangs",{"2":{"236":1}}],["hannah65",{"2":{"102":1}}],["handwiring",{"2":{"2269":1,"2725":1}}],["handwire",{"2":{"2268":2,"2280":1}}],["handwired",{"0":{"2307":1},"2":{"43":3,"49":1,"67":1,"72":1,"102":1,"114":2,"120":1,"122":1,"134":1,"149":2,"168":2,"181":3,"191":5,"199":3,"207":1,"211":7,"217":14,"222":1,"226":2,"241":1,"249":1,"253":6,"266":1,"277":3,"380":2,"1354":1,"1355":1,"2245":1,"2247":1,"2249":1,"2259":1,"2281":1,"2307":2,"2513":1,"2514":1,"2566":1,"2567":1}}],["hand88",{"2":{"211":1}}],["handful",{"2":{"130":1,"134":1,"149":1,"198":1,"211":2,"222":1,"606":1,"2240":1,"2549":1,"2730":1}}],["hand",{"0":{"2265":1},"1":{"2266":1,"2267":1,"2268":1,"2269":1,"2270":1,"2271":1,"2272":1,"2273":1,"2274":1,"2275":1,"2276":1,"2277":1,"2278":1,"2279":1,"2280":1,"2281":1},"2":{"114":1,"149":1,"176":1,"249":2,"277":1,"331":2,"509":1,"510":8,"1300":1,"1336":2,"1412":1,"1496":1,"1684":2,"2124":3,"2125":3,"2126":1,"2154":1,"2155":3,"2156":6,"2157":1,"2267":2,"2268":1,"2270":1,"2272":1,"2281":2,"2370":2,"2383":6,"2396":2,"2402":1,"2664":1}}],["handedness",{"0":{"509":1,"510":1,"2123":1,"2124":1,"2125":1,"2126":1,"2127":1},"1":{"510":1,"2124":1,"2125":1,"2126":1,"2127":1},"2":{"134":1,"176":1,"236":1,"509":2,"510":3,"1496":1,"1873":2,"2124":1,"2125":2,"2126":4,"2127":1,"2232":1,"2234":1,"2241":1,"2246":1,"2248":1,"2697":3}}],["handed",{"2":{"107":1,"199":1,"2154":1,"2411":2}}],["handy",{"2":{"99":1,"571":1,"1935":1,"2405":1,"2458":1,"2716":1}}],["hands",{"0":{"2154":1,"2383":1},"1":{"2155":1,"2156":1,"2157":1,"2158":1},"2":{"94":1,"191":1,"199":2,"211":2,"231":3,"249":1,"509":1,"510":2,"1446":4,"1496":1,"1684":4,"1873":1,"2126":1,"2154":3,"2156":9,"2157":1,"2158":9,"2266":1,"2370":4,"2383":8,"2396":4,"2417":1}}],["handles",{"2":{"436":1,"654":1,"1220":1,"1279":1,"1495":1,"1901":1,"1941":1,"2407":1}}],["handle",{"0":{"1940":1,"1941":1},"2":{"134":1,"160":1,"190":1,"191":3,"199":2,"203":1,"222":1,"231":1,"236":1,"341":1,"430":1,"466":2,"573":1,"586":1,"587":1,"1258":1,"1325":1,"1384":1,"1416":1,"1445":1,"1446":1,"1673":1,"1674":1,"1853":1,"1870":1,"1874":2,"1880":3,"1901":1,"1921":1,"1940":1,"2157":1,"2162":2,"2170":1,"2573":1,"2576":10,"2577":18,"2744":1,"2746":1,"2749":1}}],["handled",{"2":{"105":2,"196":1,"502":2,"511":1,"571":1,"1344":1,"1379":1,"1430":1,"1675":1,"1827":1,"1832":1,"1866":1,"1885":1,"1922":1,"2152":1,"2160":1,"2566":1,"2577":1,"2749":1}}],["handlers",{"2":{"191":1,"277":1,"1940":1,"1941":1}}],["handler",{"2":{"73":1,"191":1,"1134":1,"1221":1,"1462":1,"1822":1,"2130":4,"2143":1,"2584":1}}],["handling",{"0":{"16":1,"1895":1},"2":{"11":1,"50":2,"98":1,"114":1,"134":2,"149":1,"191":2,"199":2,"236":3,"266":4,"277":1,"344":1,"345":1,"505":8,"571":1,"1342":1,"1447":1,"1448":1,"1497":1,"1511":1,"1549":1,"1559":1,"1675":1,"1720":1,"1897":1,"2567":1,"2692":1,"2744":1}}],["halve",{"2":{"1130":1,"2126":1}}],["halves",{"2":{"32":1,"45":1,"506":1,"510":1,"511":2,"1121":2,"1496":1,"2116":1,"2117":1,"2120":2,"2129":2,"2130":1,"2131":1,"2694":1}}],["halt",{"2":{"203":1,"2353":2,"2749":1}}],["hal",{"2":{"174":1,"641":1,"657":2,"658":2,"661":2,"703":1,"1132":1,"1133":1,"1177":1,"1226":1,"1230":1,"1469":1,"1470":1,"2523":1}}],["halberd",{"2":{"143":2}}],["halconf",{"2":{"50":2,"86":1,"657":2,"658":2,"661":2,"703":1,"1124":1,"1132":1,"1133":1,"1177":1,"1226":1,"1230":1,"1469":1,"1470":1,"1906":1}}],["halfs",{"2":{"1949":1}}],["halfkay",{"0":{"2235":1},"2":{"371":1,"514":1,"625":1,"629":1,"2235":3,"2237":1,"2238":1,"2664":1}}],["half",{"0":{"1125":1},"1":{"1126":1,"1127":1},"2":{"45":3,"107":2,"114":2,"149":1,"176":2,"191":2,"211":1,"236":1,"277":1,"506":5,"509":8,"510":2,"511":4,"515":1,"1121":1,"1122":1,"1125":3,"1126":1,"1127":1,"1128":2,"1129":4,"1134":2,"1136":1,"1496":3,"1558":3,"1714":1,"1730":1,"1806":1,"1807":1,"1866":1,"1870":3,"1949":2,"1954":1,"1959":1,"2032":1,"2044":1,"2117":1,"2120":1,"2122":2,"2126":1,"2131":2,"2225":1,"2271":1,"2370":2,"2396":2,"2543":2,"2614":1,"2688":1,"2694":1,"2695":1,"2697":14,"2747":1}}],["having",{"2":{"23":1,"149":1,"234":1,"356":1,"505":2,"546":1,"596":1,"684":1,"1136":1,"1138":1,"1241":1,"1254":1,"1303":1,"1338":1,"1368":1,"1385":1,"1416":1,"1514":1,"1527":1,"1528":1,"1729":1,"1884":1,"1935":2,"1952":1,"2128":1,"2149":1,"2182":1,"2319":1,"2441":1,"2490":1,"2510":1,"2530":1,"2566":1,"2571":1,"2605":1,"2610":1,"2649":1,"2757":1}}],["haven",{"2":{"164":1,"537":1,"1237":1,"1266":1,"2457":1,"2504":1}}],["have",{"0":{"551":1,"1260":1,"1263":1},"1":{"1264":1},"2":{"0":1,"1":1,"4":1,"7":1,"8":1,"9":1,"10":1,"14":2,"16":1,"19":1,"28":1,"36":1,"38":1,"39":1,"43":1,"45":1,"49":3,"50":1,"52":1,"57":1,"67":2,"69":1,"83":1,"86":1,"94":1,"98":1,"102":1,"114":1,"118":1,"122":1,"124":3,"128":1,"134":2,"140":2,"143":1,"157":2,"159":1,"168":1,"169":1,"172":1,"173":1,"175":1,"181":1,"182":5,"183":1,"189":1,"191":1,"195":1,"197":1,"198":1,"201":3,"203":1,"209":1,"211":1,"213":1,"218":1,"219":1,"220":1,"221":1,"224":1,"228":1,"231":1,"238":1,"240":1,"254":1,"255":1,"262":1,"268":1,"276":1,"277":1,"327":1,"332":1,"337":1,"341":1,"349":1,"352":4,"356":1,"363":1,"365":1,"366":2,"367":1,"399":2,"429":1,"430":1,"431":1,"433":1,"435":1,"436":2,"440":1,"453":1,"454":1,"457":1,"468":1,"470":1,"478":1,"479":1,"487":1,"488":1,"496":1,"499":2,"502":1,"506":1,"508":1,"515":1,"530":2,"538":1,"540":1,"545":1,"554":2,"555":1,"556":2,"557":1,"558":1,"559":1,"560":1,"561":2,"568":1,"575":1,"578":1,"584":1,"587":4,"597":1,"602":1,"606":5,"614":1,"616":1,"617":1,"618":1,"621":2,"623":1,"624":1,"625":2,"626":1,"627":1,"635":2,"642":1,"654":1,"663":1,"688":1,"697":1,"699":1,"703":1,"734":1,"760":1,"790":1,"824":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1129":1,"1148":1,"1174":1,"1176":1,"1177":1,"1195":1,"1198":1,"1215":1,"1216":1,"1227":1,"1234":1,"1236":1,"1238":1,"1244":1,"1245":1,"1262":1,"1264":2,"1265":1,"1266":1,"1275":1,"1276":2,"1281":1,"1287":1,"1288":1,"1289":1,"1290":1,"1293":1,"1300":1,"1304":1,"1325":1,"1326":1,"1329":3,"1330":1,"1331":1,"1338":1,"1339":1,"1340":1,"1346":1,"1355":1,"1357":1,"1360":1,"1375":1,"1377":3,"1378":1,"1380":1,"1383":2,"1384":2,"1385":3,"1390":1,"1394":1,"1396":1,"1398":1,"1403":1,"1405":1,"1411":2,"1412":3,"1416":2,"1430":1,"1435":3,"1440":1,"1446":1,"1451":1,"1455":2,"1459":2,"1495":3,"1497":1,"1503":1,"1508":1,"1515":2,"1518":2,"1525":1,"1527":2,"1533":1,"1553":1,"1558":1,"1563":1,"1572":1,"1575":1,"1633":1,"1635":1,"1670":1,"1671":1,"1682":1,"1684":3,"1815":1,"1816":1,"1820":1,"1821":1,"1824":1,"1830":1,"1832":1,"1870":1,"1871":1,"1872":1,"1907":1,"1948":2,"1949":1,"2031":1,"2034":1,"2036":1,"2038":1,"2114":1,"2118":1,"2120":1,"2125":1,"2126":1,"2131":3,"2133":2,"2139":1,"2140":1,"2145":1,"2150":1,"2152":1,"2160":1,"2162":4,"2169":3,"2172":1,"2180":1,"2181":1,"2182":3,"2230":1,"2233":1,"2235":1,"2238":1,"2240":1,"2250":1,"2252":1,"2254":1,"2255":2,"2262":4,"2264":1,"2267":1,"2273":2,"2274":3,"2276":2,"2277":1,"2279":1,"2280":2,"2282":1,"2293":1,"2295":1,"2297":1,"2299":1,"2302":4,"2305":3,"2307":1,"2309":2,"2311":1,"2315":1,"2317":1,"2319":2,"2320":1,"2327":1,"2328":1,"2342":1,"2344":1,"2346":1,"2351":1,"2353":1,"2397":1,"2403":1,"2405":2,"2406":1,"2407":1,"2408":2,"2409":2,"2410":1,"2417":2,"2418":1,"2420":1,"2421":1,"2422":1,"2425":2,"2427":1,"2431":1,"2438":2,"2441":1,"2445":3,"2446":1,"2447":1,"2448":1,"2450":2,"2452":2,"2454":3,"2458":1,"2462":1,"2463":1,"2464":1,"2469":1,"2472":3,"2473":2,"2474":2,"2475":1,"2476":1,"2477":2,"2478":1,"2480":2,"2494":2,"2496":1,"2497":2,"2504":1,"2508":1,"2513":1,"2515":1,"2519":1,"2521":2,"2524":1,"2526":1,"2529":1,"2535":1,"2544":1,"2546":1,"2548":1,"2549":1,"2553":2,"2556":1,"2559":1,"2560":1,"2565":1,"2566":5,"2569":2,"2570":1,"2571":2,"2574":1,"2576":3,"2577":1,"2592":1,"2603":1,"2606":1,"2607":2,"2612":2,"2615":1,"2703":1,"2710":1,"2711":1,"2719":1,"2724":1,"2726":1,"2728":1,"2741":1,"2742":1,"2746":5,"2752":1,"2757":1}}],["had60",{"2":{"211":1}}],["hadron",{"2":{"134":1}}],["hades",{"2":{"114":1,"207":2,"211":1}}],["had",{"2":{"7":1,"67":1,"86":1,"102":1,"116":1,"122":1,"124":1,"125":1,"143":1,"153":1,"159":1,"168":1,"172":1,"174":1,"181":1,"182":1,"185":1,"197":1,"233":1,"243":1,"245":1,"537":1,"1265":1,"1338":1,"1441":1,"2107":1,"2150":1,"2279":1,"2564":1}}],["hashbrowns",{"2":{"616":1}}],["hash",{"2":{"316":1,"349":3,"453":1,"530":1,"610":1,"612":1,"1584":1,"2355":1,"2378":1,"2388":1,"2399":1}}],["hasn",{"2":{"153":1,"214":1,"505":1,"537":1}}],["has",{"0":{"338":1},"2":{"1":1,"3":1,"7":1,"8":1,"14":2,"15":1,"25":1,"28":1,"31":1,"34":1,"49":3,"56":1,"57":1,"60":1,"67":1,"70":3,"82":1,"84":1,"86":3,"87":1,"90":1,"98":1,"99":1,"103":1,"109":1,"113":1,"114":2,"118":2,"123":2,"124":1,"126":1,"132":1,"137":1,"142":1,"146":1,"153":2,"154":1,"156":1,"160":1,"163":1,"164":1,"166":1,"167":1,"169":1,"172":1,"174":1,"175":3,"182":2,"184":1,"194":3,"196":1,"198":2,"199":1,"201":2,"202":1,"206":1,"213":1,"214":1,"215":1,"218":1,"221":1,"228":1,"230":1,"232":1,"233":3,"240":2,"243":2,"249":1,"262":2,"265":1,"271":1,"273":2,"277":1,"312":1,"315":3,"316":1,"317":1,"341":1,"349":1,"357":1,"375":1,"400":1,"427":1,"465":1,"470":1,"479":1,"495":1,"497":1,"502":2,"505":1,"510":1,"513":1,"516":2,"522":1,"523":1,"524":1,"525":1,"529":1,"537":2,"540":1,"560":1,"565":2,"567":1,"575":1,"578":1,"582":1,"585":1,"587":1,"588":5,"596":1,"598":1,"600":1,"606":1,"626":2,"627":1,"629":1,"635":2,"636":1,"641":1,"669":1,"688":1,"695":1,"701":1,"758":1,"787":1,"819":1,"851":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1056":1,"1090":1,"1129":3,"1137":1,"1146":1,"1216":1,"1230":1,"1234":1,"1236":1,"1240":1,"1265":1,"1270":1,"1271":1,"1278":1,"1283":1,"1287":1,"1316":2,"1317":1,"1319":2,"1320":1,"1329":2,"1331":1,"1332":1,"1340":1,"1353":1,"1357":1,"1359":1,"1360":1,"1383":1,"1394":1,"1416":1,"1451":1,"1452":1,"1491":1,"1515":1,"1518":1,"1558":1,"1562":1,"1574":1,"1577":1,"1645":1,"1658":1,"1666":1,"1674":1,"1675":2,"1682":1,"1697":1,"1726":6,"1730":5,"1805":1,"1813":1,"1827":1,"1874":2,"1876":4,"1894":1,"1900":1,"1918":1,"1925":1,"1940":1,"1942":1,"1947":6,"1954":7,"1959":1,"2031":1,"2032":1,"2044":2,"2071":1,"2108":2,"2109":1,"2114":1,"2117":1,"2122":1,"2128":3,"2134":1,"2137":1,"2144":2,"2152":4,"2157":1,"2162":1,"2169":3,"2183":2,"2249":1,"2262":1,"2264":2,"2272":1,"2292":1,"2295":2,"2300":1,"2311":4,"2317":1,"2324":1,"2347":1,"2396":1,"2401":1,"2402":1,"2417":1,"2418":1,"2442":1,"2454":1,"2455":1,"2456":1,"2479":2,"2492":1,"2508":1,"2513":1,"2517":1,"2523":1,"2525":2,"2530":2,"2539":1,"2544":1,"2548":3,"2553":1,"2566":5,"2571":1,"2576":3,"2577":3,"2578":1,"2585":1,"2587":2,"2591":1,"2592":1,"2614":1,"2615":2,"2616":1,"2633":1,"2689":1,"2718":1,"2729":1,"2734":1,"2739":1,"2743":1,"2746":1,"2748":1,"2750":1,"2752":1,"2753":1}}],["c♯",{"2":{"1793":6,"2371":6}}],["cx",{"2":{"1725":1,"1946":1}}],["cx60",{"2":{"211":1}}],["cjoystick",{"2":{"1637":1,"1638":1}}],["c\\tuint16",{"2":{"1555":1}}],["cgram",{"0":{"1626":1},"1":{"1627":1},"2":{"1594":1,"1626":1,"1627":1}}],["cg",{"2":{"1300":1,"1398":4,"1399":4,"2370":7,"2396":7}}],["cédille",{"0":{"1277":1}}],["c8",{"0":{"1142":1}}],["c3²",{"2":{"635":2}}],["c3¹",{"2":{"635":2}}],["c3",{"2":{"633":1,"635":5,"1793":1,"1794":1,"2371":1,"2557":1}}],["c39",{"2":{"143":2}}],["c2²",{"2":{"635":2}}],["c2¹",{"2":{"635":2}}],["c2",{"2":{"633":1,"635":5,"1793":1,"2371":1,"2557":1,"2689":1}}],["c2json",{"0":{"380":1},"2":{"236":1,"380":3,"407":1}}],["c15",{"2":{"2519":1}}],["c14",{"2":{"2519":1}}],["c12832a1z",{"2":{"2136":1}}],["c13",{"2":{"1316":1,"1394":1,"2518":1,"2519":1,"2530":2}}],["c1²",{"2":{"635":2}}],["c1¹",{"2":{"635":2}}],["c1",{"2":{"633":1,"635":5,"702":1,"790":4,"1793":1,"2371":1,"2557":1,"2689":1}}],["c1ed",{"2":{"375":2}}],["c0²",{"2":{"635":2}}],["c0¹",{"2":{"635":2}}],["c0",{"2":{"633":1,"635":5,"639":2,"702":1,"2689":1}}],["ck",{"2":{"1406":6,"1408":6,"2357":6}}],["ckeyrecord",{"2":{"573":1}}],["ckled2001",{"2":{"149":1,"176":1,"221":4,"236":2,"1143":1}}],["c6",{"2":{"502":3,"655":2,"1387":1,"1466":1,"2231":1,"2238":1,"2263":1,"2530":1,"2558":1}}],["c5²",{"2":{"635":1}}],["c5¹",{"2":{"635":1}}],["c5",{"2":{"502":3,"633":1,"635":4,"655":2,"702":1,"1387":1,"1466":1,"1793":1,"2074":1,"2371":1}}],["c7",{"2":{"502":2,"511":1,"2131":1,"2558":1}}],["cdt",{"0":{"2497":1},"2":{"2496":1,"2497":2}}],["cdigitizer",{"2":{"1534":2}}],["cdeferred",{"2":{"598":1,"2577":1}}],["cd",{"0":{"373":1},"2":{"349":1,"360":5,"370":4,"373":1,"401":1,"2252":1,"2438":1,"2575":2}}],["cdc",{"2":{"50":1,"2344":1}}],["cfloat",{"2":{"1398":1}}],["cfgr",{"2":{"641":1}}],["cfgr1",{"2":{"641":1}}],["cfg",{"2":{"335":2,"445":1,"456":1,"2353":2}}],["cformat",{"2":{"1":1,"51":1,"65":1,"199":1}}],["csprintf",{"2":{"2702":1}}],["cs5",{"2":{"1793":1,"2371":1}}],["cs4",{"2":{"1793":1,"2371":1}}],["csr",{"2":{"1491":1}}],["csend",{"2":{"1361":4,"2079":2}}],["csg",{"2":{"1300":1}}],["csag",{"2":{"1300":1}}],["csa",{"2":{"1300":1,"1665":1,"2712":1}}],["cs3",{"2":{"669":2,"824":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1793":1,"2371":1}}],["cs2",{"2":{"669":2,"824":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1793":1,"2371":1}}],["cs1",{"2":{"669":2,"824":3,"857":3,"891":3,"925":3,"959":3,"993":3,"1027":3,"1061":3,"1095":3,"1793":1,"2371":1}}],["csx",{"2":{"667":1,"818":1,"821":4,"822":1,"850":1,"854":1,"855":1,"885":1,"888":1,"889":1,"919":1,"922":1,"923":1,"953":1,"956":1,"957":1,"987":1,"990":1,"991":1,"1021":1,"1024":1,"1055":1,"1058":1,"1089":1,"1092":1}}],["cstatic",{"2":{"588":1,"1360":1,"1814":1,"2138":1,"2576":1,"2577":2,"2581":1,"2612":1}}],["css",{"0":{"288":1}}],["cs",{"0":{"673":1,"679":1},"1":{"674":1,"680":1},"2":{"266":1,"666":2,"674":1,"680":1,"818":3,"821":15,"850":1,"854":2,"885":1,"888":2,"919":1,"922":2,"953":1,"956":2,"987":1,"990":2,"1021":2,"1024":6,"1055":2,"1058":6,"1089":2,"1092":6,"1300":2,"1492":1,"1665":2,"1793":1,"1819":2,"1855":2,"1856":2,"1863":2,"1869":2,"1870":16,"1872":3,"2371":1,"2576":4}}],["csy",{"2":{"236":1,"1024":3,"1025":1,"1058":3,"1059":1,"1092":3,"1093":1}}],["cccb1608",{"2":{"2255":1}}],["cc80",{"2":{"1792":3}}],["ccw",{"2":{"1559":8}}],["ccopyright",{"2":{"2309":3}}],["ccombo",{"2":{"1525":1}}],["cconst",{"2":{"272":2,"669":1,"734":2,"760":2,"790":2,"824":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1148":2,"1405":1,"1508":1,"1509":1,"1510":1,"1594":1,"1663":1,"1665":1,"2044":1,"2155":1,"2182":2,"2406":1,"2423":1,"2747":1}}],["cchar",{"2":{"1363":2}}],["cc",{"0":{"1791":1},"2":{"222":3,"1293":2,"1791":1,"1792":7}}],["ccase",{"2":{"1878":1}}],["ccar",{"2":{"176":1}}],["ccache",{"2":{"133":1,"134":2}}],["cbbrowne",{"2":{"1287":3}}],["cb1",{"2":{"1148":5}}],["cb1800",{"2":{"211":1}}],["cb",{"0":{"1142":1},"2":{"597":2,"598":1,"2347":1}}],["cb87v2",{"2":{"211":1}}],["cb87rgb",{"2":{"211":1}}],["cb65",{"2":{"211":1}}],["cbool",{"2":{"90":1,"105":1,"125":2,"185":2,"194":2,"195":1,"534":1,"572":1,"593":1,"594":1,"1252":1,"1302":1,"1375":1,"1384":1,"1423":2,"1430":1,"1446":1,"1448":1,"1506":1,"1519":1,"1549":4,"1560":2,"1717":1,"1719":1,"1733":1,"1826":1,"1901":1,"1937":1,"1938":1,"1939":1,"1940":1,"1957":2,"1958":3,"1959":2,"2043":1,"2078":1,"2130":1,"2152":3,"2228":1,"2413":1,"2414":1,"2415":1,"2576":1,"2577":14,"2581":1,"2604":1,"2735":1,"2736":1,"2738":1}}],["cypress",{"2":{"2622":1}}],["cypher",{"2":{"211":2}}],["cycling",{"2":{"1728":1,"1949":2,"2036":1,"2040":1,"2175":1,"2179":1}}],["cycled",{"2":{"2183":1}}],["cycles",{"0":{"1298":1},"2":{"126":1,"145":1,"213":1,"224":1,"238":1,"687":1,"1298":1,"1326":7,"1402":2,"1403":1,"1408":3,"1594":1,"1821":1,"1868":2,"2033":1,"2357":3}}],["cycle",{"0":{"350":1,"1344":1},"2":{"63":1,"103":2,"105":1,"107":1,"116":1,"131":1,"149":1,"156":1,"163":1,"167":1,"172":1,"182":1,"184":1,"187":1,"190":1,"198":1,"201":1,"206":1,"211":1,"213":1,"224":1,"230":1,"233":1,"251":1,"262":1,"265":1,"268":1,"273":1,"275":1,"341":2,"343":1,"344":1,"345":1,"350":4,"502":1,"684":1,"704":2,"1215":1,"1287":1,"1344":12,"1375":1,"1397":1,"1454":1,"1456":1,"1457":1,"1459":1,"1476":1,"1567":1,"1727":2,"1728":9,"1733":1,"1948":4,"1949":21,"1954":1,"1957":1,"2034":2,"2035":1,"2128":1,"2179":1,"2183":1,"2184":2,"2347":1,"2360":1,"2369":2,"2376":2,"2377":2,"2384":2,"2677":1,"2688":1,"2695":1,"2708":7,"2720":2}}],["cyan",{"2":{"433":1,"435":1,"582":1,"1332":4,"1953":2,"2042":2,"2058":2}}],["cyberstar",{"2":{"211":1}}],["cncl",{"2":{"2355":1,"2392":1}}],["cname",{"2":{"279":1}}],["cn",{"2":{"199":1}}],["cmsis",{"2":{"2513":1}}],["cmt",{"2":{"2410":1}}],["cmousekey",{"2":{"1800":1}}],["cmu",{"2":{"1796":1}}],["cmd=",{"2":{"2262":1}}],["cmd=yes",{"2":{"2262":2}}],["cmd",{"2":{"628":1,"1565":1,"1686":1,"1822":2,"2374":1,"2410":1}}],["cmatrix",{"2":{"566":1}}],["cmp",{"2":{"199":1,"1341":1,"2043":3}}],["cm",{"2":{"191":1,"1512":3}}],["cwd",{"2":{"2513":2}}],["cw",{"2":{"188":1,"191":1,"1500":1,"1559":8,"2362":1}}],["cz",{"2":{"176":4}}],["czech",{"2":{"48":1,"266":1,"1355":1,"2712":9}}],["c4²",{"2":{"635":1}}],["c4¹",{"2":{"635":1}}],["c4",{"0":{"1320":1},"2":{"176":1,"189":1,"191":1,"502":3,"633":1,"635":4,"655":2,"702":1,"1311":1,"1315":6,"1320":1,"1387":1,"1466":1,"1793":1,"2371":1,"2557":1}}],["c++",{"0":{"2752":1},"2":{"176":1,"322":1,"331":4,"454":1,"552":1,"1921":1,"2496":1,"2497":2,"2502":1,"2510":1,"2752":3,"2753":1}}],["ct",{"2":{"2165":3,"2166":1,"2167":3,"2168":2}}],["ctypedef",{"2":{"1332":1,"2130":1,"2168":1,"2169":1,"2587":1,"2589":1,"2593":1,"2594":1,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1}}],["cts",{"2":{"1195":1,"1197":1,"1198":4}}],["ctl",{"2":{"505":1,"2165":1,"2169":3,"2370":3,"2374":1,"2396":3,"2410":1}}],["ctpc",{"2":{"160":2,"191":1,"199":2}}],["ctrl+g",{"2":{"2198":1}}],["ctrl+x",{"2":{"2196":1}}],["ctrl+y",{"2":{"1656":1}}],["ctrl+z",{"2":{"1508":1}}],["ctrl+delete",{"2":{"1303":1}}],["ctrl+shift+i",{"2":{"2566":1}}],["ctrl+shift+z",{"2":{"1656":1}}],["ctrl+shift+a",{"2":{"1414":2}}],["ctrl+shift+backspace",{"2":{"1303":1}}],["ctrl+shift+enter",{"2":{"628":1}}],["ctrl+c",{"2":{"196":1,"1680":1,"2079":1,"2234":1}}],["ctrl+alt+del",{"2":{"1303":1}}],["ctrl+alt+shift+backspace",{"2":{"1303":1}}],["ctrl+a",{"2":{"196":1,"1414":2,"1680":1,"2079":1}}],["ctrl",{"2":{"131":2,"134":2,"149":1,"199":1,"231":2,"291":1,"623":1,"1271":1,"1300":8,"1357":3,"1361":1,"1385":1,"1442":1,"1499":1,"1501":5,"1523":1,"1568":1,"1656":2,"1665":8,"1666":1,"1670":3,"1676":1,"1677":3,"1929":3,"1932":5,"1933":8,"2079":1,"2104":2,"2228":1,"2355":2,"2370":1,"2382":2,"2390":2,"2396":1,"2414":3,"2415":2,"2491":4,"2508":1,"2512":2,"2651":1,"2702":1,"2738":3}}],["cease",{"2":{"2719":1}}],["ce10f7642b0459e409839b23cc91498945119b4d",{"2":{"2255":1}}],["ceil",{"2":{"1857":1}}],["cells",{"2":{"1466":1}}],["celebrate",{"2":{"554":1}}],["centroid",{"2":{"2688":1,"2695":1}}],["centrally",{"2":{"1265":1}}],["centos",{"2":{"2431":1,"2464":1}}],["centered",{"2":{"1637":1,"1817":1,"2322":1}}],["center",{"2":{"191":1,"404":1,"1725":4,"1728":1,"1946":4,"1948":1,"1949":4,"2038":1,"2133":2,"2688":2,"2695":2}}],["cenum",{"2":{"532":1,"534":2,"557":1,"570":1,"1359":2,"1511":2,"1523":1,"1728":1,"1825":1,"1830":1,"1879":1,"1880":1,"1935":1,"1943":1,"1949":1,"2181":1,"2728":1}}],["certainly",{"2":{"276":1,"1853":1,"2328":1,"2564":1,"2567":1}}],["certain",{"0":{"1897":1,"1936":1},"1":{"1937":1,"1938":1,"1939":1},"2":{"149":1,"487":1,"512":1,"515":1,"516":1,"581":1,"592":1,"630":1,"656":1,"1177":1,"1243":1,"1294":1,"1368":1,"1384":2,"1454":1,"1725":2,"1794":1,"1814":1,"1897":1,"1938":1,"1946":2,"2138":1,"2147":1,"2150":1,"2152":1,"2228":1,"2595":1,"2601":1,"2688":1,"2695":1,"2711":2,"2756":1}}],["ce",{"2":{"134":1,"199":1,"266":1,"271":1,"1311":2,"1315":4,"1322":4,"1934":1,"2251":1}}],["cest73",{"2":{"114":1,"211":1}}],["cpainter",{"2":{"2576":9,"2577":3}}],["cpnl",{"2":{"2355":1,"2393":1}}],["cplay",{"2":{"1398":2}}],["cp",{"2":{"452":1}}],["cpp",{"2":{"380":1,"1279":1,"2753":1}}],["cpi",{"2":{"236":1,"249":1,"1855":2,"1856":2,"1859":2,"1863":1,"1867":2,"1869":2,"1870":8,"1871":3,"1874":4,"1875":2,"1882":2,"1883":4}}],["cpus",{"2":{"2262":2}}],["cpu",{"2":{"114":1,"514":2,"659":1,"1122":1,"1125":1,"1128":1,"1219":1,"1221":1,"1222":1,"1223":1,"1918":1,"2262":1,"2745":1}}],["cpuclock",{"2":{"114":1}}],["cptc",{"2":{"92":1}}],["crux",{"2":{"2727":1}}],["cryptographically",{"2":{"2611":1}}],["cryptographic",{"2":{"2550":2}}],["crystal",{"2":{"2521":1}}],["crsl",{"2":{"2355":1,"2392":1}}],["crsel",{"2":{"2355":2,"2392":2}}],["crgblight",{"2":{"2044":2,"2051":1,"2058":1}}],["crgb",{"2":{"1952":1}}],["credentials",{"2":{"2506":1}}],["credential",{"2":{"2506":1}}],["credits",{"0":{"1453":1,"1831":1}}],["credit",{"2":{"1353":1,"1453":1}}],["cream|",{"2":{"621":1}}],["cream||order",{"2":{"621":1}}],["cream",{"2":{"621":1}}],["creative",{"2":{"1340":1}}],["creating",{"0":{"1658":1,"2349":1,"2470":1},"1":{"1659":1,"1660":1,"1661":1,"1662":1},"2":{"363":1,"441":1,"559":1,"570":1,"1254":1,"1287":1,"1355":1,"1658":1,"1876":1,"1921":1,"2032":1,"2154":1,"2182":1,"2183":1,"2292":1,"2409":1,"2417":1,"2425":1,"2445":1,"2469":1,"2478":1,"2563":1,"2576":10,"2577":1}}],["creator",{"2":{"114":1}}],["creates",{"2":{"379":1,"380":1,"385":1,"386":1,"391":1,"401":1,"430":1,"1454":1,"2480":1,"2497":1}}],["created",{"2":{"114":1,"251":1,"315":1,"1265":1,"1303":1,"1332":2,"1337":1,"1553":1,"1899":1,"2160":1,"2277":1,"2278":1,"2309":1,"2422":1,"2446":1,"2448":1,"2474":3,"2483":1,"2513":2,"2553":1,"2566":1,"2577":3,"2753":1}}],["create",{"0":{"141":1,"2422":1,"2433":1,"2435":1},"2":{"76":1,"132":1,"134":2,"149":1,"172":1,"173":1,"175":1,"176":1,"249":1,"313":1,"341":1,"347":1,"350":1,"367":2,"441":1,"519":1,"529":1,"537":1,"538":1,"554":1,"569":1,"607":1,"614":1,"621":2,"623":1,"1234":1,"1272":1,"1278":1,"1332":1,"1376":1,"1384":1,"1385":1,"1398":1,"1399":1,"1413":1,"1415":1,"1440":1,"1525":1,"1553":1,"1656":1,"1662":1,"1670":1,"1729":2,"1899":1,"1952":2,"2150":2,"2169":1,"2170":1,"2181":1,"2182":1,"2255":3,"2276":1,"2318":1,"2351":1,"2400":1,"2415":1,"2417":1,"2422":2,"2433":1,"2435":2,"2436":1,"2445":2,"2470":1,"2475":1,"2476":1,"2480":1,"2553":1,"2576":2,"2577":1,"2578":1,"2581":1,"2603":1,"2616":1,"2671":1,"2723":1,"2725":1,"2753":2,"2757":1}}],["cribbit",{"2":{"2270":1,"2281":1}}],["criteria",{"2":{"341":1,"374":1,"1894":1,"2169":1,"2546":1}}],["critical",{"2":{"340":1,"345":1,"350":1,"433":1,"479":1,"628":1,"1471":1,"1824":1,"2566":1,"2567":2}}],["crin",{"2":{"211":1}}],["croatian",{"2":{"1355":1,"2712":3}}],["crossing",{"2":{"660":1}}],["cross",{"2":{"331":1,"1728":3,"1949":3,"2708":1}}],["cropped",{"2":{"114":1}}],["cradio",{"2":{"191":1}}],["craftwalk",{"2":{"134":1,"266":1}}],["crc8",{"2":{"114":1}}],["crc",{"2":{"107":1,"114":3,"176":1,"191":1}}],["crkbd",{"2":{"86":3,"94":1,"176":1,"211":1,"2126":3,"2440":1}}],["cvoid",{"2":{"34":1,"90":1,"105":1,"125":1,"185":1,"196":1,"565":1,"576":1,"582":1,"590":1,"698":1,"707":1,"1245":1,"1332":2,"1400":1,"1464":1,"1497":1,"1507":1,"1593":1,"1680":1,"1733":1,"1816":1,"1871":1,"1883":1,"1910":1,"1917":1,"1921":1,"1923":1,"1960":1,"2044":1,"2130":1,"2166":1,"2491":4,"2524":1,"2525":1,"2526":1,"2577":10,"2582":1,"2757":1}}],["c",{"0":{"272":1,"400":1,"411":1,"453":1,"1140":1,"1316":1,"1318":1,"1322":1,"1358":1,"1392":1,"1605":1,"1797":1,"2301":1,"2404":1,"2423":1,"2527":1,"2629":1},"1":{"1323":1,"1324":1,"1359":1,"1360":1,"1361":1,"1362":1,"1363":1,"1364":1,"1365":1,"1366":1,"1367":1,"1368":1,"1369":1,"1370":1,"1371":1,"1372":1,"1373":1,"1374":1,"1375":1,"1606":1,"2405":1,"2406":1,"2407":1,"2408":1,"2528":1,"2529":1,"2530":1},"2":{"28":1,"31":2,"34":3,"49":3,"50":6,"63":1,"64":1,"65":1,"74":1,"75":2,"77":1,"86":2,"92":1,"98":1,"105":2,"114":4,"134":5,"149":2,"153":1,"160":2,"169":1,"172":2,"176":3,"184":1,"189":3,"191":1,"196":1,"199":3,"211":4,"220":1,"231":2,"234":9,"236":2,"247":1,"249":1,"266":6,"272":1,"277":1,"292":2,"305":1,"313":1,"316":1,"318":1,"322":1,"331":4,"370":2,"371":2,"379":1,"380":4,"396":2,"400":5,"404":1,"411":9,"441":1,"453":3,"454":1,"470":1,"489":1,"501":1,"502":6,"509":1,"513":6,"529":2,"530":4,"532":1,"533":1,"534":2,"552":1,"555":2,"559":1,"564":3,"565":1,"566":2,"570":1,"588":3,"599":1,"600":1,"601":1,"607":1,"610":1,"631":1,"635":1,"657":3,"658":2,"660":1,"661":4,"662":1,"663":1,"665":1,"667":1,"669":1,"701":1,"703":3,"730":2,"734":1,"756":2,"760":1,"785":2,"788":1,"790":1,"817":2,"820":1,"821":1,"822":1,"824":1,"849":2,"853":1,"854":1,"855":1,"857":1,"884":2,"887":1,"888":1,"889":1,"891":1,"918":2,"921":1,"922":1,"923":1,"925":1,"952":2,"955":1,"956":1,"957":1,"959":1,"986":2,"989":1,"990":1,"991":1,"993":1,"1020":2,"1024":1,"1025":1,"1027":1,"1054":2,"1058":1,"1059":1,"1061":1,"1088":2,"1091":1,"1092":1,"1093":1,"1095":1,"1124":1,"1127":2,"1129":2,"1130":2,"1132":3,"1133":3,"1134":1,"1136":1,"1137":1,"1138":1,"1144":2,"1148":1,"1177":3,"1198":2,"1216":1,"1217":1,"1225":1,"1226":2,"1227":1,"1228":1,"1230":2,"1234":1,"1250":1,"1252":1,"1253":1,"1269":1,"1270":1,"1276":1,"1279":1,"1290":1,"1294":1,"1299":2,"1300":1,"1303":1,"1311":7,"1312":2,"1313":3,"1314":2,"1315":12,"1316":3,"1319":1,"1320":1,"1322":1,"1330":2,"1332":2,"1344":1,"1346":1,"1347":1,"1351":2,"1352":1,"1359":2,"1362":1,"1365":1,"1366":1,"1375":1,"1376":2,"1377":6,"1383":6,"1384":1,"1385":5,"1392":2,"1397":2,"1398":13,"1399":16,"1400":1,"1401":1,"1402":1,"1403":2,"1404":4,"1405":2,"1406":1,"1414":1,"1415":1,"1416":1,"1431":2,"1440":1,"1445":2,"1448":1,"1458":1,"1459":1,"1469":3,"1470":2,"1495":1,"1496":2,"1501":1,"1503":1,"1504":1,"1508":3,"1510":1,"1512":1,"1525":1,"1527":4,"1530":1,"1547":2,"1548":3,"1549":4,"1553":1,"1554":1,"1557":6,"1558":2,"1559":4,"1560":2,"1561":1,"1576":1,"1577":1,"1579":2,"1581":1,"1593":1,"1606":1,"1636":1,"1637":1,"1657":1,"1666":1,"1668":1,"1670":1,"1677":2,"1680":1,"1682":1,"1683":8,"1684":1,"1685":1,"1686":2,"1718":1,"1729":1,"1730":1,"1733":1,"1789":1,"1790":1,"1792":1,"1793":19,"1794":1,"1797":3,"1805":10,"1806":1,"1813":2,"1814":1,"1815":1,"1816":1,"1817":2,"1821":1,"1822":1,"1826":1,"1830":2,"1857":1,"1870":3,"1871":1,"1882":1,"1884":1,"1886":1,"1887":2,"1892":2,"1897":2,"1898":2,"1899":2,"1904":1,"1905":1,"1906":2,"1907":1,"1908":1,"1910":1,"1911":1,"1912":6,"1913":1,"1914":2,"1915":3,"1916":1,"1921":2,"1932":1,"1933":3,"1934":1,"1936":1,"1950":5,"1951":1,"1952":1,"1954":1,"1957":1,"2040":1,"2042":3,"2059":1,"2060":2,"2064":1,"2075":1,"2078":1,"2109":1,"2124":2,"2125":2,"2126":3,"2127":2,"2128":6,"2129":10,"2130":3,"2131":10,"2137":2,"2139":1,"2140":1,"2141":1,"2143":1,"2148":1,"2153":1,"2157":1,"2161":1,"2164":2,"2165":1,"2167":1,"2169":3,"2170":2,"2171":4,"2174":1,"2181":3,"2182":1,"2183":1,"2184":3,"2228":1,"2231":1,"2232":1,"2233":1,"2236":1,"2238":1,"2241":1,"2255":1,"2256":1,"2259":1,"2260":2,"2262":15,"2263":1,"2266":1,"2268":1,"2269":3,"2288":1,"2296":1,"2300":1,"2302":1,"2317":2,"2347":1,"2353":18,"2355":3,"2371":19,"2373":1,"2374":1,"2384":3,"2386":3,"2400":1,"2404":1,"2405":1,"2407":3,"2408":1,"2410":1,"2414":7,"2415":4,"2422":1,"2423":2,"2435":3,"2438":1,"2440":2,"2490":1,"2496":1,"2497":2,"2502":1,"2508":1,"2510":1,"2513":5,"2514":1,"2527":1,"2528":1,"2529":2,"2530":7,"2539":1,"2545":1,"2548":3,"2564":1,"2566":6,"2571":2,"2573":10,"2575":4,"2576":17,"2577":12,"2584":1,"2588":1,"2600":4,"2607":1,"2614":2,"2629":1,"2634":1,"2673":1,"2702":1,"2703":3,"2704":1,"2705":3,"2706":4,"2707":3,"2708":2,"2709":2,"2710":1,"2711":1,"2727":2,"2735":2,"2736":2,"2737":2,"2738":4,"2742":1,"2743":4,"2744":1,"2746":3,"2752":4,"2753":1}}],["cif",{"2":{"1683":1}}],["cint16",{"2":{"2577":2}}],["cint",{"2":{"292":1}}],["cipulot",{"2":{"249":1}}],["city42",{"2":{"222":1}}],["ciruitry",{"2":{"1573":1}}],["circ",{"2":{"2378":1,"2399":1}}],["circle",{"2":{"2033":1,"2577":4}}],["circles",{"2":{"153":1,"2577":2}}],["circumflex",{"2":{"2378":1,"2399":1}}],["circumstances",{"2":{"221":1,"689":2,"692":1,"1243":1,"1897":1,"2128":1,"2131":1,"2255":1,"2513":1,"2543":1,"2576":1,"2577":1}}],["circular",{"0":{"1228":1},"2":{"93":1,"175":2,"176":2,"236":1,"641":2,"1226":2,"1228":3,"1865":1,"2573":1}}],["circuitry",{"0":{"1903":1},"2":{"1902":1}}],["circuits",{"2":{"1458":1}}],["circuit",{"0":{"1289":1},"2":{"49":4,"1289":2,"1293":1,"1325":1,"1458":1,"1573":1,"2240":1,"2242":1,"2279":1,"2311":4,"2524":1,"2676":1,"2677":1}}],["cirque",{"0":{"1862":1},"1":{"1863":1,"1864":1,"1865":1,"1866":1},"2":{"118":4,"175":2,"176":7,"190":1,"191":4,"249":3,"1862":4,"1863":20,"1864":5,"1865":3,"1866":3,"1880":1,"1900":1}}],["cie1931",{"2":{"84":1,"93":1}}],["cie",{"2":{"49":1,"2577":1}}],["ci",{"2":{"17":1,"51":1,"76":1,"134":1,"149":1,"164":1,"199":1,"211":2,"249":2,"447":1,"556":1,"644":2,"2032":1,"2675":1}}],["caddy",{"2":{"2280":1}}],["cadence",{"2":{"337":1}}],["cadet",{"0":{"2102":1,"2382":1,"2661":1},"1":{"2103":1,"2104":1,"2105":1,"2106":1,"2107":1},"2":{"49":1,"188":1,"191":2,"249":1,"1500":1,"2102":1,"2104":7,"2105":1,"2106":3,"2107":3,"2382":8,"2661":1,"2702":1,"2749":1}}],["cag",{"2":{"1300":1}}],["ca",{"2":{"1300":1,"1527":1,"1665":1}}],["ca4",{"2":{"790":1}}],["ca3",{"2":{"790":1,"1148":2}}],["ca2",{"2":{"790":1,"1148":2}}],["ca1",{"2":{"790":1,"1148":3}}],["caveats",{"0":{"531":1,"1336":1,"1567":1,"1633":1,"1788":1,"2105":1,"2177":1,"2398":1,"2411":1},"1":{"532":1,"533":1,"534":1},"2":{"2515":1,"2566":1,"2605":1}}],["came",{"2":{"437":1,"504":1,"2686":1}}],["camps",{"2":{"173":1}}],["caution",{"2":{"541":1}}],["caught",{"2":{"356":1}}],["causing",{"2":{"156":1,"1398":1,"2343":1,"2516":1,"2584":1}}],["causes",{"2":{"556":1,"660":1,"1122":1,"1216":1,"1384":1,"1576":1,"2480":1}}],["caused",{"2":{"114":1,"134":1,"199":1,"222":1,"337":1,"1675":1}}],["cause",{"2":{"73":1,"88":2,"104":2,"127":2,"170":1,"201":1,"352":2,"556":1,"659":2,"1219":1,"1298":1,"1332":2,"1336":1,"1340":1,"1410":1,"1464":1,"1821":1,"1892":1,"1894":1,"1912":2,"1954":1,"2153":1,"2231":1,"2238":1,"2276":1,"2308":1,"2411":2,"2517":1,"2518":1,"2702":1,"2726":1}}],["cached",{"2":{"308":1}}],["cathodes",{"2":{"734":1,"760":1,"790":1,"824":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1}}],["cat24c512",{"2":{"684":2}}],["catb",{"2":{"551":1}}],["catch",{"2":{"466":1,"597":1,"1451":1}}],["catching",{"2":{"466":1}}],["caticorn",{"2":{"222":1}}],["category",{"2":{"1312":1}}],["categories",{"2":{"352":1}}],["categorize",{"2":{"110":1}}],["catered",{"2":{"322":1}}],["cater",{"2":{"182":1,"236":1,"1121":1}}],["caterina",{"0":{"2233":1,"2344":1},"1":{"2234":1},"2":{"70":1,"509":1,"514":1,"625":1,"629":11,"2126":1,"2233":3,"2234":1,"2347":5,"2348":1}}],["cain",{"2":{"211":1}}],["caffeinated",{"2":{"211":1}}],["cables",{"2":{"1129":1,"2118":6}}],["cable",{"2":{"211":1,"626":1,"1123":1,"1126":1,"1129":1,"1869":1,"2114":1,"2117":3,"2118":1,"2119":1,"2120":1,"2127":3,"2131":1,"2249":2,"2271":1,"2275":1,"2276":1}}],["casual",{"2":{"470":1}}],["cassini",{"2":{"211":1}}],["cassette42",{"2":{"143":2}}],["cases",{"2":{"25":1,"75":1,"176":1,"182":3,"194":1,"214":1,"234":1,"236":1,"246":1,"380":1,"452":1,"457":1,"483":1,"504":1,"584":1,"609":2,"610":1,"613":1,"643":1,"700":1,"1175":1,"1196":1,"1213":1,"1445":1,"1515":1,"1527":1,"1673":1,"1674":1,"1871":1,"1918":1,"1934":1,"2149":1,"2161":3,"2303":1,"2571":1,"2718":1,"2736":1}}],["case",{"0":{"2182":1},"2":{"11":1,"105":2,"160":1,"194":3,"195":2,"202":1,"222":1,"231":4,"273":1,"335":1,"478":1,"534":6,"538":1,"572":2,"573":1,"598":2,"626":2,"707":1,"726":1,"1177":1,"1258":1,"1276":1,"1290":1,"1300":1,"1302":1,"1303":2,"1326":1,"1332":8,"1343":4,"1344":1,"1359":5,"1360":4,"1375":1,"1384":2,"1385":1,"1404":2,"1414":1,"1416":5,"1423":6,"1430":3,"1435":2,"1440":1,"1446":15,"1450":1,"1458":1,"1495":1,"1506":6,"1511":2,"1515":1,"1518":7,"1519":1,"1523":3,"1525":3,"1528":1,"1549":4,"1562":1,"1638":5,"1673":1,"1792":1,"1813":3,"1826":5,"1827":1,"1830":2,"1871":1,"1878":1,"1880":1,"1882":1,"1892":2,"1897":1,"1898":1,"1899":1,"1933":3,"1934":5,"1935":4,"1937":1,"1938":1,"1940":2,"1941":2,"1943":14,"1958":2,"1959":1,"2031":1,"2044":5,"2078":1,"2108":1,"2137":3,"2162":2,"2167":4,"2168":1,"2169":12,"2170":6,"2171":7,"2182":1,"2252":2,"2263":1,"2267":1,"2270":1,"2275":1,"2294":1,"2311":1,"2327":1,"2350":1,"2413":1,"2414":3,"2415":1,"2454":1,"2474":1,"2529":1,"2564":1,"2604":2,"2703":1,"2727":2,"2728":7,"2735":1,"2736":1,"2737":1,"2738":1}}],["carries",{"2":{"2118":1}}],["carryover",{"2":{"2106":1}}],["carefully",{"2":{"2273":1,"2752":1}}],["careful",{"2":{"474":1,"584":1,"586":1,"628":1,"1404":1,"2273":1,"2274":1,"2423":1}}],["care",{"2":{"236":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"1189":1,"1192":1,"1207":1,"1209":1,"1337":1,"1450":1,"1676":1,"2565":1,"2748":1}}],["carbo65",{"2":{"211":1}}],["car",{"2":{"211":1}}],["carve",{"2":{"113":1,"114":1,"133":1,"134":1}}],["card",{"2":{"111":2,"143":4,"1353":1}}],["captioning",{"2":{"2144":1}}],["capture",{"2":{"143":2,"194":1,"203":2,"1404":1}}],["cap",{"2":{"1813":1,"2137":1}}],["capitalized",{"2":{"1499":2}}],["capitalization",{"2":{"176":1,"1938":1}}],["capitals",{"2":{"1499":1}}],["capital",{"2":{"211":1,"1412":2,"2490":1,"2614":1}}],["capacitors",{"2":{"1589":1}}],["capacity",{"2":{"160":1}}],["capability",{"2":{"164":1,"277":1,"402":1,"1461":1,"1491":1,"2566":1}}],["capabilities",{"0":{"278":1,"279":1},"1":{"279":1,"280":2,"281":2,"282":2,"283":2,"284":2,"285":2,"286":2,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1},"2":{"160":1,"278":1,"1121":1,"2566":1,"2718":1}}],["capable",{"2":{"49":1,"153":2,"486":1,"655":1,"1125":1,"1294":1,"1387":1,"1390":1,"1466":1,"1634":1,"2240":1,"2327":1,"2350":1,"2543":1,"2566":4,"2585":1,"2592":1,"2653":1}}],["capswrd",{"2":{"188":1,"191":1}}],["caps",{"0":{"152":1,"1499":1,"1500":1,"1502":1,"1507":1,"2164":1,"2362":1,"2680":1},"1":{"1500":1,"1501":2,"1502":1,"1503":2,"1504":2,"1505":2,"1506":2,"1507":2},"2":{"149":2,"152":2,"160":2,"176":5,"188":2,"191":3,"199":2,"211":2,"222":2,"231":2,"249":1,"313":1,"505":2,"506":1,"511":1,"530":2,"1269":3,"1271":1,"1276":1,"1368":3,"1446":1,"1457":2,"1459":4,"1499":18,"1500":9,"1501":2,"1503":6,"1504":6,"1505":9,"1506":8,"1507":6,"1509":1,"1530":1,"1585":1,"1630":2,"1714":1,"1715":2,"1717":1,"1718":13,"1719":3,"1733":1,"1813":1,"1816":1,"1957":1,"1958":2,"1959":4,"2041":1,"2042":2,"2043":1,"2129":1,"2137":1,"2140":1,"2164":5,"2165":1,"2167":2,"2182":1,"2184":1,"2355":5,"2362":3,"2370":17,"2384":1,"2389":5,"2396":17,"2407":1,"2674":1,"2677":2,"2680":7,"2685":2,"2744":1,"2749":1}}],["capsunlocked",{"2":{"143":3,"149":1,"217":4,"222":1,"249":1}}],["capslock",{"2":{"112":1,"149":1,"152":1,"1234":2,"2042":2,"2674":1}}],["calc",{"2":{"2355":1,"2393":1}}],["calculator",{"2":{"2348":1,"2355":2,"2393":2}}],["calculate",{"2":{"1725":4,"1821":1,"1880":1,"1946":4,"2038":1,"2229":1}}],["calculated",{"2":{"684":1,"689":2,"1181":1,"1642":1,"1821":1,"2226":2,"2576":1}}],["calculating",{"2":{"211":1,"1290":1,"2226":2}}],["calculation",{"0":{"2225":1},"1":{"2226":1,"2227":1,"2228":1},"2":{"50":1,"114":1,"222":3,"1859":2,"2226":1,"2228":2}}],["calibrating",{"2":{"1864":1}}],["calibration",{"2":{"249":1,"1864":1}}],["california",{"2":{"211":1,"378":1}}],["calice",{"2":{"211":1}}],["caller",{"2":{"1359":1}}],["called",{"2":{"49":1,"94":1,"187":1,"194":1,"203":1,"308":1,"335":1,"564":1,"566":2,"568":1,"571":2,"572":1,"574":1,"578":1,"584":1,"586":1,"587":2,"589":1,"592":1,"646":1,"673":1,"707":2,"738":1,"764":1,"794":1,"828":1,"861":1,"895":1,"929":1,"963":1,"997":1,"1031":1,"1065":1,"1099":1,"1152":1,"1179":2,"1200":2,"1212":1,"1254":1,"1272":1,"1325":1,"1332":1,"1341":3,"1359":1,"1464":1,"1497":1,"1506":1,"1562":1,"1578":1,"1596":2,"1598":1,"1599":1,"1600":1,"1668":1,"1670":1,"1714":1,"1716":1,"1822":2,"1894":2,"1897":1,"1900":1,"1937":1,"2031":2,"2143":6,"2144":1,"2152":4,"2161":1,"2162":8,"2182":1,"2183":1,"2264":2,"2311":2,"2327":1,"2405":1,"2422":1,"2473":1,"2490":1,"2491":1,"2548":1,"2553":1,"2605":1,"2739":1,"2744":1,"2749":2,"2751":1}}],["calling",{"2":{"149":1,"613":1,"636":1,"1335":1,"1368":1,"1500":1,"1633":1,"1815":1,"1822":1,"1885":1,"1887":2,"2139":1,"2143":1,"2162":2,"2576":1,"2577":3}}],["callback",{"0":{"185":1,"203":1,"601":1,"1444":1,"1892":1},"1":{"1445":1,"1446":1,"1447":1,"1448":1,"1449":1},"2":{"149":1,"185":1,"191":1,"196":1,"203":2,"211":1,"596":1,"597":4,"598":8,"658":1,"662":1,"1221":1,"1341":6,"1394":1,"1445":2,"1446":1,"1448":1,"1449":1,"1506":4,"1549":1,"1560":1,"1689":1,"1690":1,"1743":1,"1745":1,"1776":1,"1778":1,"1779":1,"1780":1,"1783":1,"1785":1,"1873":1,"1874":5,"1875":2,"1879":1,"1891":3,"1925":1,"1933":1,"1937":1,"1939":1,"1941":1,"1970":1,"1972":1,"2021":1,"2023":1,"2024":1,"2025":1,"2028":1,"2030":1,"2158":1,"2168":1,"2192":1,"2194":1,"2440":1,"2491":5}}],["callbacks",{"0":{"90":1,"105":1,"229":1,"597":1,"1526":1,"1549":1,"1560":1,"1680":1,"1732":1,"1826":1,"1874":1,"1875":1,"1891":1,"1956":1,"2228":1,"2491":1},"1":{"1733":1,"1892":1,"1957":1,"1958":1,"1959":1,"1960":1},"2":{"93":1,"105":1,"114":2,"149":2,"191":4,"229":1,"236":2,"249":1,"277":3,"515":1,"566":1,"597":1,"601":1,"662":1,"1124":2,"1341":2,"1507":1,"1680":1,"1716":1,"1720":1,"1875":1,"1906":1,"2263":1,"2491":1,"2567":2}}],["call",{"0":{"1555":1},"2":{"114":1,"134":2,"176":1,"191":1,"249":2,"266":1,"315":1,"340":1,"343":1,"344":1,"515":1,"534":1,"539":1,"568":1,"574":1,"576":1,"582":1,"588":1,"597":1,"614":1,"643":1,"647":1,"675":1,"700":1,"701":1,"741":1,"745":1,"749":1,"751":1,"768":1,"772":1,"776":1,"778":1,"800":1,"804":1,"808":1,"810":1,"832":1,"836":1,"840":1,"842":1,"867":1,"871":1,"875":1,"877":1,"901":1,"905":1,"909":1,"911":1,"935":1,"939":1,"943":1,"945":1,"969":1,"973":1,"977":1,"979":1,"1003":1,"1007":1,"1011":1,"1013":1,"1037":1,"1041":1,"1045":1,"1047":1,"1071":1,"1075":1,"1079":1,"1081":1,"1105":1,"1109":1,"1113":1,"1115":1,"1158":1,"1162":1,"1166":1,"1168":1,"1175":1,"1196":1,"1210":1,"1213":1,"1272":1,"1332":1,"1341":1,"1506":1,"1553":1,"1554":2,"1555":1,"1556":1,"1714":1,"1720":1,"1729":1,"1813":1,"1822":2,"1825":1,"1894":2,"1910":1,"1922":1,"1952":1,"2051":2,"2130":1,"2137":1,"2143":2,"2302":1,"2306":1,"2318":1,"2490":3,"2491":1,"2492":1,"2503":1,"2577":3,"2614":1,"2707":1,"2744":2,"2757":3}}],["calls",{"2":{"50":1,"114":1,"133":1,"134":1,"191":2,"199":1,"266":2,"277":1,"474":1,"587":1,"2051":1,"2081":1,"2161":2,"2306":1,"2584":1,"2749":1,"2757":4}}],["cannot",{"2":{"629":1,"635":3,"690":1,"702":1,"1416":1,"1498":1,"1516":1,"1527":1,"1615":1,"1670":1,"1807":1,"1822":2,"1872":1,"1948":1,"2034":1,"2235":1,"2240":1,"2254":1,"2327":1,"2341":1,"2350":1,"2398":1,"2413":1,"2427":1,"2440":1,"2515":1,"2516":2,"2518":1,"2577":2,"2605":1,"2711":1,"2728":3}}],["cannonkeys",{"2":{"191":1,"199":1,"211":22}}],["candidate",{"2":{"341":1,"397":1,"2566":1}}],["candidates",{"2":{"341":1}}],["candybar",{"2":{"43":4}}],["canonical",{"2":{"317":1}}],["canada",{"2":{"2712":1}}],["canadian",{"2":{"149":1,"249":1,"1355":1,"2712":5}}],["canary60rgb",{"2":{"253":2}}],["canary",{"2":{"253":2}}],["canceling",{"2":{"1303":1}}],["cancelled",{"2":{"1303":1,"1633":1}}],["cancelling",{"0":{"600":1},"2":{"1446":1}}],["canceled",{"2":{"600":1}}],["cancel",{"0":{"2198":1,"2222":1},"2":{"149":1,"598":1,"600":3,"1633":2,"2198":1,"2222":1,"2355":2,"2392":2,"2490":2}}],["can",{"0":{"503":1,"504":1,"505":1,"532":1,"553":1,"1238":1,"1254":1,"1255":1,"1259":1,"1267":1,"1269":1,"1290":1,"2159":1,"2254":1,"2319":1},"1":{"1239":1,"1240":1,"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1},"2":{"0":1,"1":1,"9":1,"19":1,"39":1,"45":1,"49":1,"50":2,"52":1,"60":1,"70":3,"73":1,"74":1,"80":1,"83":1,"98":1,"112":2,"119":2,"120":2,"124":1,"138":1,"152":1,"173":1,"179":1,"191":1,"194":1,"195":2,"199":1,"203":2,"206":1,"210":1,"228":1,"231":1,"233":1,"240":1,"262":1,"263":1,"291":1,"311":1,"312":1,"313":2,"315":1,"317":1,"318":2,"322":1,"324":1,"327":2,"331":4,"334":3,"335":1,"337":1,"340":1,"341":1,"352":1,"353":1,"354":1,"355":1,"365":1,"366":1,"370":2,"371":2,"374":5,"376":1,"377":1,"378":1,"384":1,"400":1,"401":1,"402":1,"403":1,"414":1,"415":1,"417":1,"418":2,"423":1,"424":1,"429":1,"430":1,"432":2,"433":1,"435":3,"436":1,"437":1,"438":1,"439":1,"440":1,"441":1,"442":1,"445":1,"446":4,"448":1,"449":1,"450":1,"451":1,"452":1,"453":3,"454":1,"455":1,"456":1,"474":1,"479":1,"481":1,"483":2,"484":1,"485":1,"488":1,"498":1,"499":1,"500":2,"501":1,"502":2,"503":1,"504":1,"506":2,"509":1,"510":1,"511":2,"513":1,"516":6,"519":2,"520":1,"521":2,"522":1,"533":1,"534":1,"541":1,"546":1,"551":1,"553":1,"554":1,"557":1,"558":1,"559":1,"560":1,"561":1,"566":1,"568":1,"570":1,"571":1,"586":2,"587":2,"589":2,"592":1,"597":1,"598":3,"599":1,"600":1,"601":2,"606":2,"609":1,"610":1,"611":1,"612":1,"613":4,"614":1,"616":1,"618":1,"621":1,"623":1,"626":2,"627":3,"628":1,"630":2,"633":1,"635":1,"639":1,"641":3,"643":1,"655":1,"657":1,"659":3,"660":4,"661":2,"662":1,"681":1,"683":1,"684":2,"685":2,"686":1,"693":1,"694":1,"697":1,"698":1,"700":1,"701":1,"702":1,"703":1,"707":2,"726":1,"820":1,"852":1,"853":1,"887":1,"921":1,"955":1,"989":1,"1023":1,"1057":1,"1091":1,"1125":1,"1126":1,"1127":1,"1130":1,"1132":1,"1133":1,"1134":2,"1135":1,"1136":2,"1137":1,"1138":1,"1142":1,"1175":1,"1176":1,"1177":2,"1179":1,"1181":1,"1196":1,"1198":1,"1200":1,"1212":2,"1213":1,"1215":1,"1217":1,"1218":1,"1225":2,"1228":1,"1234":1,"1235":1,"1236":2,"1239":2,"1241":1,"1242":2,"1243":1,"1245":1,"1247":1,"1248":1,"1249":1,"1250":1,"1252":1,"1253":1,"1254":2,"1260":1,"1262":1,"1265":2,"1270":2,"1275":1,"1276":1,"1279":1,"1280":1,"1286":1,"1287":1,"1288":1,"1290":1,"1293":1,"1295":1,"1299":1,"1300":6,"1301":1,"1302":1,"1303":1,"1310":1,"1312":2,"1313":1,"1316":1,"1317":1,"1320":2,"1328":1,"1329":1,"1331":5,"1332":5,"1335":3,"1336":2,"1338":1,"1340":4,"1341":4,"1342":1,"1344":1,"1346":2,"1347":1,"1349":1,"1351":2,"1353":1,"1354":2,"1355":1,"1359":1,"1360":1,"1361":6,"1363":2,"1364":2,"1365":1,"1368":1,"1376":2,"1377":2,"1378":2,"1380":2,"1381":1,"1383":7,"1384":3,"1385":4,"1386":3,"1387":2,"1390":1,"1393":1,"1394":2,"1395":1,"1396":1,"1397":1,"1398":6,"1400":1,"1401":2,"1402":1,"1403":2,"1404":2,"1405":1,"1406":1,"1411":1,"1412":1,"1413":1,"1414":1,"1415":2,"1416":3,"1430":1,"1431":1,"1439":2,"1440":1,"1441":1,"1442":1,"1445":1,"1446":1,"1448":1,"1451":2,"1454":1,"1463":1,"1464":2,"1467":1,"1471":1,"1492":2,"1494":1,"1497":2,"1499":1,"1500":1,"1506":1,"1511":2,"1512":1,"1513":1,"1514":1,"1515":3,"1516":3,"1518":2,"1519":1,"1523":2,"1525":1,"1526":1,"1527":2,"1530":1,"1534":2,"1547":1,"1549":1,"1553":4,"1554":1,"1556":2,"1557":6,"1558":2,"1559":1,"1560":1,"1562":2,"1568":1,"1578":2,"1579":1,"1594":1,"1596":1,"1630":1,"1633":2,"1634":3,"1635":1,"1636":1,"1637":2,"1655":2,"1659":1,"1666":2,"1668":2,"1670":2,"1673":2,"1676":2,"1677":1,"1680":1,"1682":1,"1683":1,"1684":3,"1717":1,"1719":1,"1723":1,"1725":3,"1728":2,"1729":2,"1733":1,"1743":1,"1745":1,"1798":1,"1801":1,"1803":3,"1804":1,"1805":2,"1806":2,"1807":1,"1808":1,"1809":1,"1814":2,"1815":2,"1816":1,"1820":2,"1821":1,"1822":2,"1824":1,"1825":1,"1826":1,"1827":1,"1828":1,"1830":2,"1832":1,"1853":2,"1854":1,"1857":2,"1859":1,"1863":2,"1865":3,"1866":1,"1870":2,"1872":3,"1874":3,"1875":2,"1876":4,"1884":1,"1885":1,"1887":2,"1890":1,"1894":1,"1897":2,"1900":1,"1905":1,"1906":1,"1908":1,"1910":1,"1911":1,"1912":1,"1913":1,"1914":2,"1920":1,"1921":3,"1922":1,"1929":1,"1934":2,"1935":1,"1937":1,"1938":1,"1939":1,"1940":1,"1943":1,"1944":1,"1946":3,"1948":1,"1949":3,"1951":1,"1952":2,"1953":1,"1957":1,"1959":2,"1960":1,"1970":1,"1972":1,"2031":1,"2034":1,"2035":1,"2036":1,"2037":1,"2040":1,"2041":2,"2042":3,"2043":1,"2044":2,"2058":1,"2059":2,"2060":3,"2066":1,"2067":1,"2075":1,"2076":1,"2105":1,"2106":2,"2107":1,"2108":1,"2109":1,"2110":1,"2114":1,"2117":1,"2118":1,"2124":2,"2125":2,"2126":3,"2127":1,"2128":3,"2129":1,"2130":4,"2131":2,"2132":1,"2133":1,"2139":2,"2140":1,"2143":2,"2144":1,"2145":2,"2146":3,"2147":1,"2149":1,"2150":2,"2152":1,"2153":1,"2156":1,"2157":1,"2160":2,"2168":1,"2169":2,"2170":1,"2171":2,"2174":1,"2176":1,"2178":1,"2180":1,"2181":2,"2182":4,"2183":3,"2196":1,"2197":1,"2198":1,"2228":1,"2237":1,"2242":1,"2245":1,"2247":1,"2249":1,"2252":2,"2255":5,"2257":1,"2259":2,"2262":4,"2263":5,"2267":1,"2268":3,"2270":2,"2271":1,"2272":2,"2274":4,"2275":2,"2276":2,"2277":3,"2280":2,"2284":1,"2286":1,"2290":1,"2295":1,"2298":1,"2299":3,"2300":3,"2301":1,"2303":1,"2305":1,"2306":1,"2308":1,"2309":1,"2311":4,"2312":2,"2314":2,"2315":2,"2318":2,"2319":1,"2320":1,"2325":1,"2326":1,"2327":1,"2328":1,"2331":1,"2346":1,"2347":2,"2348":2,"2349":1,"2350":1,"2351":1,"2353":3,"2367":1,"2401":2,"2402":2,"2404":1,"2405":6,"2406":1,"2410":2,"2411":3,"2413":2,"2414":1,"2417":3,"2418":1,"2421":4,"2422":2,"2424":1,"2425":1,"2429":1,"2430":1,"2440":2,"2441":3,"2443":3,"2444":1,"2445":2,"2447":1,"2448":2,"2450":1,"2452":1,"2454":1,"2455":1,"2456":1,"2457":1,"2466":2,"2468":2,"2469":2,"2474":4,"2475":1,"2476":1,"2477":1,"2479":4,"2480":7,"2490":3,"2491":2,"2497":2,"2501":1,"2508":2,"2512":1,"2513":4,"2516":1,"2517":4,"2518":4,"2519":1,"2521":1,"2522":1,"2524":2,"2525":1,"2530":3,"2533":1,"2534":2,"2539":1,"2540":1,"2541":1,"2542":1,"2544":1,"2548":2,"2549":1,"2550":3,"2553":1,"2555":1,"2557":2,"2560":1,"2564":1,"2565":1,"2566":6,"2567":2,"2568":1,"2569":2,"2570":1,"2573":1,"2574":4,"2575":2,"2576":34,"2577":13,"2583":1,"2584":2,"2587":1,"2594":1,"2602":1,"2607":2,"2608":2,"2610":2,"2611":1,"2631":1,"2639":1,"2654":1,"2671":1,"2672":2,"2693":1,"2702":2,"2703":3,"2704":1,"2705":3,"2707":3,"2708":2,"2710":1,"2711":1,"2716":1,"2718":2,"2719":1,"2723":1,"2727":5,"2728":7,"2735":3,"2736":3,"2737":2,"2738":3,"2743":2,"2746":2,"2748":1,"2749":2,"2750":1,"2752":2,"2753":2,"2754":2,"2755":2,"2757":8}}],["chunks",{"2":{"2143":1}}],["chunder",{"2":{"292":1}}],["chnu",{"2":{"1793":1,"2371":1}}],["chnd",{"2":{"1793":1,"2371":1}}],["ch9",{"2":{"1793":1,"2371":1}}],["ch8",{"2":{"1793":1,"2371":1}}],["ch7",{"2":{"1793":1,"2371":1}}],["ch6",{"2":{"1793":1,"2371":1}}],["ch5",{"2":{"1793":1,"2371":1}}],["ch4",{"2":{"661":1,"1793":1,"2371":1}}],["ch3",{"2":{"661":1,"1469":1,"1793":1,"2371":1}}],["chyn",{"2":{"661":1,"1230":2}}],["chy",{"2":{"661":1,"1396":1}}],["ch2",{"2":{"657":2,"658":2,"661":1,"1793":1,"2371":1}}],["ch16",{"2":{"1793":1,"2371":1}}],["ch15",{"2":{"1793":1,"2371":1}}],["ch14",{"2":{"1793":1,"2371":1}}],["ch13",{"2":{"1793":1,"2371":1}}],["ch12",{"2":{"1793":1,"2371":1}}],["ch11",{"2":{"1793":1,"2371":1}}],["ch10",{"2":{"1793":1,"2371":1}}],["ch1",{"2":{"656":2,"657":2,"658":2,"661":1,"662":1,"1396":1,"1793":1,"2371":1}}],["ch",{"2":{"199":1,"222":1,"559":1,"1355":2}}],["chrome",{"2":{"2427":1}}],["chromeos",{"2":{"191":1}}],["chromatic",{"2":{"1398":2,"1399":3,"1403":5}}],["chromatonemini",{"2":{"236":1}}],["christmas",{"2":{"49":2,"143":2,"181":2,"2034":1,"2036":2,"2037":2,"2038":4,"2376":1,"2708":1}}],["chose",{"2":{"1272":1,"1395":1,"2429":1,"2457":1}}],["chosen",{"2":{"703":1,"1126":1,"1128":1,"1133":1,"1177":1,"1198":1,"1572":1,"1805":2,"2129":1,"2260":1,"2541":1,"2542":1,"2544":2,"2664":1}}],["choosing",{"0":{"1131":1,"2546":1},"1":{"1132":1,"1133":1,"1134":1,"2547":1,"2548":1,"2549":1,"2550":1,"2551":1,"2552":1},"2":{"1122":1,"1127":1,"1130":1,"2506":1}}],["chooses",{"2":{"1325":1}}],["choose",{"2":{"453":2,"455":1,"538":1,"566":1,"641":1,"1125":1,"1128":1,"1177":1,"1325":1,"1393":1,"1677":1,"1805":1,"2181":1,"2255":1,"2310":2,"2436":1,"2445":1,"2491":1,"2495":1,"2497":1,"2540":1,"2718":1,"2735":1,"2738":1}}],["chord",{"2":{"1357":1,"1511":1,"1518":3,"1521":1,"1527":1,"2150":1,"2152":12}}],["chorded",{"2":{"1303":1,"2144":1,"2152":1}}],["chording",{"2":{"515":1,"1302":1,"1508":1}}],["chords",{"2":{"505":1,"1397":1,"1939":1,"2149":1,"2150":1,"2152":1}}],["chore",{"2":{"160":1,"211":1,"249":1}}],["choc",{"2":{"143":2}}],["choco60",{"2":{"143":2}}],["choices",{"2":{"560":1,"2417":1,"2418":1,"2686":1}}],["choice",{"2":{"74":1,"124":1,"1467":1,"1519":1,"1668":1,"1921":1,"2107":1,"2149":1,"2152":1,"2169":1,"2497":1,"2498":1,"2514":1,"2515":1,"2546":1,"2553":2}}],["children",{"2":{"1451":1}}],["child",{"2":{"1451":5,"2567":1}}],["chili",{"2":{"143":2,"211":1}}],["chime",{"2":{"592":1,"1399":1}}],["chimera",{"2":{"143":8,"149":1,"2294":1}}],["chiffre",{"2":{"143":2,"222":1,"236":1}}],["chidori",{"2":{"143":2}}],["chipid",{"2":{"2353":2}}],["chip",{"2":{"130":1,"276":1,"488":1,"560":2,"663":1,"666":2,"674":1,"680":1,"681":2,"1293":1,"1491":2,"1492":3,"1573":1,"1817":1,"1820":1,"1855":1,"1856":1,"1863":1,"1870":4,"2031":1,"2276":1,"2291":1,"2347":2,"2450":1,"2518":3,"2544":2,"2567":1,"2574":1,"2576":10,"2638":1}}],["chipsets",{"2":{"1493":1}}],["chipset",{"2":{"1492":1}}],["chips",{"2":{"123":1,"560":1,"681":4,"684":2,"685":2,"693":1,"694":1,"1243":1,"1319":1,"1491":1,"2236":1,"2335":2,"2544":1,"2550":1}}],["chibios",{"0":{"10":2,"11":1,"69":1,"77":1,"263":1,"357":1,"358":1,"359":1,"361":2,"668":1,"703":1,"733":1,"759":1,"789":1,"823":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1147":1,"1177":1,"1198":1,"1224":1,"1468":1,"1906":1,"2523":1},"1":{"358":1,"359":1,"360":1,"361":1,"704":1,"705":1,"1225":1,"1226":1,"1227":1,"1228":1,"1229":1,"1230":1,"1469":1,"1470":1,"2524":1,"2525":1,"2526":1},"2":{"10":6,"11":1,"24":1,"49":5,"50":5,"65":4,"69":4,"73":1,"74":1,"77":1,"93":1,"108":2,"113":1,"114":9,"133":1,"134":8,"149":6,"160":4,"163":1,"176":11,"191":7,"199":6,"211":2,"222":6,"236":6,"249":3,"266":3,"277":1,"349":5,"357":3,"358":2,"359":8,"360":7,"488":1,"495":1,"552":1,"635":1,"636":1,"641":1,"656":2,"661":2,"663":1,"668":1,"697":1,"726":1,"733":1,"759":1,"789":1,"823":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1124":1,"1125":1,"1128":1,"1132":2,"1133":2,"1147":1,"1226":1,"1230":2,"1469":1,"1470":1,"1824":1,"1906":1,"2131":1,"2132":1,"2255":2,"2262":1,"2310":1,"2523":4,"2524":2,"2525":2,"2526":3,"2535":2,"2536":1,"2537":1,"2546":10,"2548":4,"2549":3,"2550":1,"2551":2,"2552":2,"2564":1,"2566":5,"2673":1,"2743":1}}],["chevron",{"2":{"1949":4,"2708":1}}],["cherry",{"2":{"2703":1}}],["cherryb",{"2":{"211":4}}],["chere",{"2":{"2508":1}}],["cherish",{"2":{"176":1}}],["cheap",{"2":{"114":1,"134":1,"2350":1}}],["checkmark",{"2":{"2569":1}}],["checklist",{"2":{"2563":1}}],["checklists",{"0":{"342":1,"2563":1},"1":{"343":1,"344":1,"345":1,"346":1,"347":1,"2564":1,"2565":1,"2566":1,"2567":1,"2568":1,"2569":1,"2570":1}}],["checkbox",{"2":{"2498":1}}],["checker",{"2":{"2279":1}}],["checkerboards",{"2":{"143":3,"149":1,"211":1}}],["checked",{"2":{"349":1,"367":1,"447":1,"1431":1,"1524":1,"1898":1,"1900":1,"2126":1,"2255":4,"2480":2,"2605":1}}],["checkout",{"2":{"305":1,"347":2,"349":3,"359":2,"360":4,"361":2,"554":1,"1334":1,"1382":2,"2437":4,"2479":1,"2480":3,"2506":1}}],["checking",{"0":{"315":1,"1300":1},"1":{"1301":1,"1302":1,"1303":1},"2":{"176":1,"199":2,"476":1,"484":1,"527":1,"529":1,"1303":1,"1364":1,"1939":2,"2147":1,"2171":1,"2425":1,"2453":2,"2469":1,"2548":1,"2563":1,"2740":1}}],["check",{"2":{"49":1,"87":1,"112":1,"114":2,"134":2,"160":2,"163":1,"176":6,"199":3,"211":2,"214":1,"222":2,"234":1,"236":1,"249":3,"254":1,"266":1,"277":2,"282":3,"304":1,"312":1,"315":2,"316":1,"321":1,"341":1,"376":3,"381":1,"515":2,"548":1,"556":2,"588":7,"626":1,"627":1,"628":1,"635":1,"689":1,"1227":1,"1238":1,"1255":1,"1260":1,"1286":1,"1292":2,"1293":1,"1300":2,"1341":2,"1344":3,"1359":1,"1364":1,"1377":1,"1381":1,"1384":1,"1430":1,"1438":1,"1441":1,"1455":1,"1524":1,"1526":1,"1527":1,"1699":1,"1700":1,"1702":1,"1703":2,"1705":1,"1706":3,"1708":1,"1709":4,"1711":1,"1712":5,"1729":3,"1846":1,"1863":2,"1876":1,"1880":1,"1882":1,"1898":1,"1952":3,"2032":1,"2036":1,"2071":3,"2128":2,"2162":1,"2171":2,"2172":1,"2262":2,"2279":7,"2293":5,"2303":1,"2311":1,"2325":1,"2347":1,"2348":1,"2353":2,"2454":1,"2455":1,"2477":1,"2479":1,"2506":1,"2519":1,"2523":1,"2603":1,"2605":1,"2679":1,"2699":2,"2702":1,"2753":1}}],["checksum",{"2":{"176":1,"2262":1,"2353":2}}],["checks",{"2":{"36":2,"149":1,"199":1,"236":1,"263":1,"282":3,"304":1,"341":1,"381":1,"400":1,"588":1,"1302":1,"1341":3,"1438":1,"1897":1,"2162":2,"2169":1,"2232":1,"2234":1,"2239":1,"2437":1,"2480":1}}],["chconf",{"2":{"50":2,"86":1}}],["challenge",{"2":{"606":1,"1355":1}}],["chatter",{"0":{"1325":1},"1":{"1326":1,"1327":1,"1328":1,"1329":1,"1330":1},"2":{"1325":1}}],["chat",{"0":{"2714":1},"2":{"553":1,"560":1,"585":1,"2326":1,"2455":1}}],["chains",{"2":{"1219":1,"1451":2,"2528":1}}],["chained",{"2":{"1212":1,"2031":1}}],["chain",{"2":{"331":1,"644":2,"648":1,"651":1,"1214":2,"1232":1,"1299":1,"1451":7,"1452":1,"2313":1,"2675":2,"2694":1,"2700":1,"2735":1,"2749":2}}],["chapter1",{"2":{"266":1}}],["charging",{"2":{"2524":1}}],["charge",{"2":{"49":2}}],["charlieplex",{"2":{"2289":1}}],["charlieplexed",{"2":{"784":1}}],["chartreuse",{"2":{"1953":2,"2058":2}}],["chars",{"2":{"249":1,"266":1,"1822":2,"2143":2}}],["character",{"0":{"1594":1},"2":{"453":1,"461":1,"1255":1,"1399":1,"1409":1,"1440":1,"1499":1,"1565":2,"1594":3,"1605":4,"1606":1,"1611":1,"1612":2,"1613":1,"1614":2,"1618":1,"1620":1,"1621":1,"1817":2,"1822":5,"2072":1,"2074":2,"2075":1,"2083":1,"2084":1,"2087":1,"2088":1,"2089":1,"2090":1,"2099":1,"2141":2,"2143":5,"2169":1,"2176":1,"2181":1,"2182":4,"2183":1,"2199":1,"2200":1,"2219":1,"2263":1,"2294":1,"2317":2,"2490":1,"2575":2,"2611":1,"2710":1,"2711":2}}],["characters",{"0":{"1277":1,"2319":1,"2320":1},"2":{"211":1,"556":1,"1359":2,"1412":2,"1418":1,"1421":1,"1428":1,"1440":1,"1441":1,"1448":2,"1591":2,"1594":3,"1607":1,"1609":1,"1626":1,"1628":1,"1675":2,"1814":1,"1822":1,"2072":1,"2075":1,"2076":1,"2081":1,"2083":1,"2085":1,"2087":1,"2138":1,"2143":1,"2181":1,"2182":5,"2183":1,"2201":1,"2214":1,"2228":2,"2263":4,"2279":1,"2315":1,"2319":1,"2320":1,"2397":1,"2398":1,"2411":1,"2564":1,"2588":1,"2589":2,"2666":1,"2672":2,"2676":1,"2710":1,"2711":4,"2728":1}}],["charactermatrix",{"2":{"31":1,"1823":1}}],["charon",{"2":{"211":1}}],["charue",{"2":{"211":2}}],["charybdis",{"2":{"176":2}}],["char",{"0":{"1208":1,"1605":1,"1607":1,"1609":1,"1611":1,"1613":1,"2081":1,"2083":1,"2085":1,"2087":1,"2089":2,"2201":1},"1":{"1209":1,"1606":1,"1608":1,"1610":1,"1612":1,"1614":1,"2082":1,"2084":1,"2086":1,"2088":1,"2090":2,"2202":1},"2":{"114":1,"134":1,"462":1,"1447":3,"1448":6,"1594":1,"1606":1,"1608":1,"1610":1,"1613":1,"1814":1,"1815":4,"1822":12,"1823":6,"2082":1,"2084":1,"2086":1,"2088":1,"2090":1,"2138":1,"2139":4,"2143":12,"2183":1,"2202":1,"2565":1,"2577":4,"2707":1}}],["chance",{"2":{"537":1,"1242":1,"1521":1,"2315":1,"2564":1}}],["chances",{"2":{"537":1,"2417":1,"2478":1,"2703":1}}],["changing",{"0":{"2059":1,"2413":1,"2414":1,"2415":1,"2584":1},"2":{"194":1,"214":1,"233":1,"236":1,"502":1,"539":1,"598":1,"1325":1,"1332":2,"1894":1,"2033":3,"2042":1,"2226":1,"2312":1,"2320":1,"2324":1,"2576":11}}],["changelist",{"0":{"114":1,"134":1,"149":1,"160":1,"176":1,"191":1,"199":1,"211":1,"222":1,"236":1,"249":1,"266":1,"277":1}}],["changelogs",{"2":{"266":1,"351":1}}],["changelog",{"0":{"9":1,"19":1,"39":1,"52":1,"66":1,"78":1,"96":1,"115":1,"135":1,"150":1,"161":1,"177":1,"192":1,"200":1,"212":1,"223":1,"237":1,"250":1,"267":1},"1":{"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1},"2":{"99":1,"149":2,"341":3,"347":1,"355":2,"2721":1}}],["changed",{"2":{"14":1,"90":1,"114":1,"156":1,"160":1,"169":1,"176":1,"182":1,"186":1,"191":1,"199":1,"214":1,"215":1,"240":1,"256":1,"341":1,"400":4,"440":1,"554":2,"565":2,"566":4,"1127":1,"1130":1,"1134":1,"1328":1,"1332":1,"1342":1,"1514":1,"1567":1,"1636":1,"1668":1,"1725":1,"1819":1,"1822":2,"1874":2,"1876":4,"1885":1,"1920":1,"1946":1,"2126":1,"2156":1,"2180":1,"2182":1,"2192":1,"2194":1,"2255":1,"2408":1,"2480":3,"2491":7,"2728":2,"2757":3}}],["changesets",{"2":{"182":1}}],["changes",{"0":{"5":1,"20":1,"40":1,"46":1,"47":1,"53":1,"61":1,"66":1,"67":1,"68":1,"72":1,"78":1,"79":1,"85":1,"91":1,"96":1,"101":1,"106":1,"115":1,"121":1,"129":1,"131":1,"135":1,"139":1,"144":1,"150":1,"155":1,"161":1,"165":1,"171":1,"177":1,"180":1,"187":1,"192":1,"193":1,"194":1,"198":1,"200":1,"201":1,"205":1,"206":1,"208":1,"212":1,"213":1,"216":1,"223":1,"225":1,"227":1,"237":1,"239":1,"240":1,"242":1,"244":1,"250":1,"252":1,"261":1,"267":1,"269":1,"337":1,"338":1,"341":1,"351":1,"352":1,"355":1,"541":1,"2474":1,"2476":1,"2480":1,"2481":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"48":1,"49":1,"50":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"62":1,"63":1,"64":1,"67":1,"68":1,"69":2,"70":2,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"79":1,"80":2,"81":2,"82":2,"83":2,"84":2,"85":1,"86":2,"87":2,"88":2,"89":2,"90":2,"91":1,"92":2,"93":2,"94":2,"95":2,"97":1,"98":1,"99":1,"100":1,"101":1,"102":2,"103":2,"104":2,"105":2,"106":1,"107":2,"108":2,"109":2,"110":2,"111":2,"112":2,"113":2,"114":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":2,"123":2,"124":2,"125":2,"126":2,"127":2,"128":2,"129":1,"130":2,"131":2,"132":2,"133":2,"134":1,"136":1,"137":1,"138":1,"139":1,"140":2,"141":2,"142":2,"143":2,"144":1,"145":2,"146":2,"147":2,"148":2,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":2,"157":2,"158":2,"159":2,"160":1,"162":1,"163":1,"164":1,"165":1,"166":2,"167":2,"168":2,"169":2,"170":2,"171":1,"172":2,"173":2,"174":2,"175":2,"176":1,"178":1,"179":1,"180":1,"181":2,"182":2,"183":2,"184":2,"185":2,"186":2,"187":1,"188":2,"189":2,"190":2,"191":1,"193":1,"194":2,"195":2,"196":2,"197":2,"198":1,"199":1,"201":1,"202":2,"203":2,"204":2,"205":1,"206":2,"207":2,"208":1,"209":2,"210":2,"211":1,"213":1,"214":2,"215":2,"216":1,"217":2,"218":2,"219":2,"220":2,"221":2,"222":1,"224":1,"225":1,"226":2,"227":1,"228":2,"229":2,"230":2,"231":2,"232":2,"233":2,"234":2,"235":2,"236":1,"238":1,"239":1,"240":2,"241":2,"242":1,"243":2,"244":2,"245":2,"246":2,"247":2,"248":2,"249":1,"251":1,"252":1,"253":2,"254":2,"255":2,"256":2,"257":2,"258":2,"259":2,"260":2,"261":1,"262":2,"263":2,"264":1,"265":1,"266":1,"268":1,"269":1,"270":2,"271":2,"272":2,"273":2,"274":1,"275":1,"276":1,"277":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"349":1,"350":1,"353":1,"354":1,"355":1,"356":1},"2":{"0":3,"2":1,"9":2,"19":3,"22":1,"25":1,"28":1,"31":4,"32":1,"34":4,"36":1,"39":2,"45":1,"52":2,"67":1,"74":1,"86":1,"87":1,"103":2,"105":1,"107":1,"114":2,"116":1,"125":1,"126":2,"131":2,"133":1,"134":2,"149":1,"156":1,"163":2,"167":1,"172":1,"175":1,"176":3,"182":1,"184":1,"185":1,"187":2,"188":1,"191":4,"198":2,"199":1,"201":3,"206":1,"211":1,"213":3,"222":2,"224":3,"231":1,"233":3,"236":2,"238":2,"247":1,"251":1,"254":1,"262":1,"263":1,"265":3,"272":1,"273":1,"275":1,"276":1,"337":1,"338":1,"341":5,"342":1,"343":3,"344":3,"345":3,"346":2,"349":3,"350":4,"351":1,"352":9,"354":2,"355":1,"407":1,"411":1,"474":1,"505":1,"521":1,"550":1,"554":6,"556":1,"558":1,"560":4,"561":1,"581":1,"607":1,"627":1,"657":1,"658":1,"661":1,"1326":1,"1329":5,"1341":1,"1403":3,"1557":1,"1573":1,"1716":1,"1787":2,"1820":6,"1880":1,"1949":4,"2043":1,"2128":1,"2131":1,"2175":3,"2226":1,"2250":1,"2255":4,"2263":1,"2309":1,"2424":1,"2425":1,"2431":1,"2440":1,"2441":1,"2448":1,"2473":2,"2474":8,"2476":1,"2477":2,"2478":1,"2480":6,"2481":1,"2491":2,"2564":1,"2566":2,"2567":5,"2568":1,"2577":1,"2620":1,"2628":1,"2667":1,"2719":1,"2720":2,"2721":1,"2728":3,"2744":1,"2748":1,"2757":2}}],["change",{"0":{"0":1,"9":1,"19":1,"39":1,"52":1,"57":1,"71":1,"272":1,"339":1,"603":1,"1342":1,"1791":1,"2052":1,"2054":1,"2748":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"340":1,"1343":1,"1344":1,"1345":1},"2":{"0":3,"9":2,"19":2,"23":1,"31":2,"39":2,"45":1,"49":1,"52":2,"64":2,"87":1,"90":2,"93":1,"94":1,"95":1,"105":3,"114":4,"118":1,"133":1,"134":3,"149":2,"160":2,"176":2,"182":1,"188":1,"191":7,"198":2,"199":4,"201":1,"211":2,"213":1,"215":1,"249":4,"255":1,"257":1,"258":1,"259":2,"262":1,"263":4,"266":5,"271":1,"272":2,"277":2,"282":6,"317":1,"337":5,"339":1,"341":4,"347":1,"349":1,"352":1,"353":1,"354":1,"355":1,"435":1,"440":1,"453":2,"454":1,"485":1,"498":1,"554":1,"556":2,"569":1,"603":1,"626":1,"641":1,"657":1,"662":1,"798":1,"865":1,"899":1,"933":1,"967":1,"1001":1,"1035":1,"1069":1,"1103":1,"1124":1,"1127":2,"1130":2,"1136":1,"1137":1,"1156":1,"1216":1,"1271":1,"1284":1,"1326":4,"1329":9,"1332":14,"1335":1,"1341":1,"1362":1,"1397":1,"1400":2,"1403":1,"1404":1,"1415":1,"1457":1,"1464":1,"1469":1,"1492":1,"1511":2,"1515":1,"1523":1,"1528":1,"1530":1,"1534":2,"1558":2,"1635":1,"1656":1,"1666":2,"1675":1,"1677":1,"1682":1,"1685":1,"1715":1,"1805":1,"1822":1,"1880":1,"1885":1,"1894":3,"1898":2,"1911":1,"1932":1,"1936":1,"1950":1,"1951":1,"2032":1,"2047":2,"2052":4,"2105":1,"2112":2,"2113":2,"2128":2,"2174":2,"2190":1,"2191":1,"2228":1,"2261":1,"2327":1,"2398":1,"2402":3,"2411":1,"2424":2,"2480":1,"2490":1,"2491":2,"2502":2,"2508":1,"2513":1,"2530":1,"2556":2,"2564":2,"2567":1,"2605":2,"2728":2,"2738":1,"2757":1}}],["channels",{"0":{"632":1},"1":{"633":1,"634":1,"635":1,"636":1},"2":{"633":1,"635":2,"641":2,"734":1,"760":1,"790":1,"824":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1,"1217":1,"2276":1}}],["channel",{"2":{"14":2,"228":1,"633":1,"635":2,"636":1,"639":5,"656":1,"657":1,"661":2,"669":1,"672":3,"734":1,"737":3,"750":3,"760":1,"763":3,"777":3,"790":1,"793":3,"809":3,"824":1,"827":3,"841":3,"857":1,"860":3,"876":3,"891":1,"894":3,"910":3,"925":1,"928":3,"944":3,"959":1,"962":3,"978":3,"993":1,"996":3,"1012":3,"1027":1,"1030":3,"1046":3,"1061":1,"1064":3,"1080":3,"1095":1,"1098":3,"1114":3,"1148":1,"1151":3,"1167":3,"1217":1,"1230":4,"1390":2,"1396":1,"1458":2,"1469":2,"1471":1,"1787":1,"1792":2,"1793":36,"1794":1,"2371":36}}],["cumbersome",{"2":{"1527":1}}],["cuint32",{"2":{"597":1}}],["cuint16",{"2":{"195":1,"1416":1,"1518":1,"1933":2,"1934":1,"1941":1,"2577":4,"2727":1,"2728":1,"2737":1}}],["cu80",{"2":{"143":2,"149":1,"217":4,"222":1,"249":1}}],["cu75",{"2":{"143":2,"149":1}}],["cu24",{"2":{"143":2,"149":1}}],["cutters",{"2":{"2266":1,"2273":1}}],["cutoff",{"2":{"1857":1}}],["cut",{"2":{"116":1,"1399":1,"1857":1,"2133":1,"2276":1,"2355":2,"2392":2,"2414":1}}],["currency",{"2":{"2319":1}}],["currentreport",{"2":{"1878":8}}],["currently",{"2":{"7":1,"65":1,"103":1,"203":1,"221":1,"262":1,"315":1,"317":1,"382":1,"511":2,"630":1,"655":1,"684":1,"685":2,"688":1,"690":1,"692":2,"694":2,"1195":1,"1300":1,"1314":2,"1315":1,"1316":1,"1317":1,"1319":1,"1322":1,"1326":1,"1336":1,"1346":1,"1357":1,"1371":1,"1372":1,"1373":1,"1394":1,"1396":1,"1449":1,"1491":2,"1492":1,"1493":1,"1494":1,"1505":1,"1531":1,"1553":1,"1570":1,"1589":1,"1615":1,"1728":1,"1731":1,"1743":1,"1745":1,"1747":1,"1749":1,"1755":1,"1756":1,"1775":1,"1777":1,"1782":1,"1822":2,"1827":1,"1832":1,"1865":1,"1870":1,"1900":1,"1921":1,"1948":2,"1949":1,"1955":1,"1970":1,"1972":1,"1974":1,"1976":1,"1982":1,"1983":1,"2020":1,"2022":1,"2027":1,"2031":1,"2041":1,"2046":1,"2063":1,"2064":1,"2065":1,"2071":3,"2113":1,"2114":2,"2129":1,"2143":1,"2152":1,"2158":1,"2161":1,"2169":1,"2183":1,"2187":1,"2196":1,"2197":1,"2198":1,"2212":1,"2231":1,"2235":1,"2238":2,"2245":1,"2247":1,"2341":1,"2363":1,"2411":1,"2442":1,"2450":1,"2451":1,"2463":1,"2480":1,"2573":2,"2617":1,"2686":3,"2745":1}}],["current",{"0":{"4":1,"667":1,"822":1,"855":1,"889":1,"923":1,"957":1,"991":1,"1025":1,"1059":1,"1093":1},"2":{"30":1,"33":1,"49":1,"50":1,"88":1,"104":1,"114":1,"119":3,"176":2,"199":1,"266":1,"273":1,"341":1,"343":1,"350":3,"370":1,"395":1,"401":1,"405":1,"416":1,"483":1,"504":1,"506":1,"511":4,"515":1,"533":1,"560":1,"565":1,"566":1,"580":6,"599":1,"641":1,"666":2,"667":2,"798":1,"818":2,"822":2,"850":2,"855":2,"865":1,"885":2,"889":2,"899":1,"919":2,"923":2,"933":1,"953":2,"957":2,"967":1,"987":2,"991":2,"1001":1,"1021":2,"1025":2,"1035":1,"1055":2,"1059":2,"1069":1,"1089":2,"1093":2,"1103":1,"1156":1,"1194":1,"1300":4,"1303":1,"1335":1,"1340":2,"1341":2,"1344":4,"1355":1,"1385":1,"1434":1,"1436":1,"1446":1,"1452":1,"1471":1,"1481":1,"1482":1,"1483":1,"1488":1,"1506":1,"1507":1,"1511":1,"1525":3,"1529":1,"1530":1,"1537":1,"1570":1,"1573":2,"1620":1,"1621":2,"1642":1,"1741":1,"1761":1,"1762":1,"1771":1,"1772":1,"1774":1,"1776":1,"1778":1,"1780":1,"1783":1,"1815":3,"1816":1,"1822":10,"1874":3,"1876":1,"1880":1,"1885":1,"1886":1,"1890":1,"1894":4,"1939":1,"1949":2,"1968":1,"1988":1,"1989":1,"1994":1,"1995":1,"2000":1,"2001":1,"2010":1,"2011":1,"2016":1,"2017":1,"2019":1,"2021":1,"2023":1,"2025":1,"2028":1,"2036":1,"2057":6,"2106":1,"2113":2,"2129":4,"2139":3,"2140":1,"2143":9,"2147":3,"2152":1,"2170":1,"2171":1,"2175":3,"2179":1,"2186":1,"2215":1,"2227":4,"2268":1,"2311":2,"2327":1,"2355":1,"2358":1,"2375":3,"2393":1,"2402":1,"2417":1,"2452":1,"2474":10,"2479":1,"2481":1,"2491":1,"2497":1,"2509":1,"2519":3,"2531":1,"2567":1,"2573":1,"2577":2,"2596":1,"2697":1,"2699":2,"2702":1,"2707":3,"2728":6,"2745":1,"2748":2}}],["cur",{"2":{"2169":3,"2170":3,"2171":4}}],["curious",{"2":{"1450":1}}],["curly",{"2":{"2079":1,"2170":1,"2378":2,"2399":2,"2508":1}}],["curl",{"2":{"314":1,"315":1,"317":3}}],["cursorstyle",{"2":{"2508":1}}],["cursor",{"0":{"1596":1,"1600":1,"1603":1},"1":{"1597":1,"1601":1,"1604":1},"2":{"62":1,"114":1,"175":1,"176":2,"1531":1,"1534":1,"1593":1,"1594":1,"1597":3,"1599":1,"1600":1,"1601":3,"1603":1,"1605":1,"1620":2,"1628":1,"1801":8,"1802":8,"1803":10,"1804":14,"1805":12,"1806":6,"1807":8,"1808":2,"1816":1,"1822":19,"1865":1,"1872":5,"1879":2,"1932":2,"2079":1,"2143":19,"2263":1,"2372":8,"2652":1}}],["curved",{"2":{"1863":3}}],["curves",{"2":{"84":1,"1807":1}}],["curve",{"2":{"49":1,"74":1,"93":1,"1802":1,"1804":1,"1807":1,"2038":1,"2577":1}}],["customer",{"2":{"549":1}}],["customarily",{"2":{"255":1}}],["customary",{"2":{"179":1,"255":1}}],["custommk",{"2":{"102":3,"1315":1}}],["customising",{"0":{"2440":1},"2":{"2440":1}}],["customise",{"2":{"1245":1,"1445":1,"2436":1}}],["customisations",{"2":{"24":1}}],["customize",{"0":{"567":1,"1888":1,"1900":1,"2424":1},"1":{"568":1,"1889":1,"1890":1,"1891":1,"1892":1},"2":{"496":1,"537":1,"567":1,"584":1,"1659":1,"1662":1,"1673":1,"2306":1,"2492":1,"2553":1,"2706":1}}],["customized",{"0":{"1383":1},"2":{"45":2,"49":1,"1385":1,"1439":1,"1733":1,"1900":1,"1957":1}}],["customizing",{"0":{"1440":1,"1502":1,"2264":1},"1":{"1441":1,"1503":1,"1504":1,"1505":1,"1506":1,"1507":1},"2":{"236":1,"1359":1,"2306":1}}],["customizability",{"2":{"1430":1,"2491":1}}],["customizable",{"0":{"1523":1},"2":{"160":1}}],["customization",{"0":{"1554":1},"1":{"1555":1,"1556":1},"2":{"191":1,"574":1,"592":1,"1335":1,"1554":1,"1556":1,"1662":1,"1666":1,"1670":1,"1876":1,"2571":1,"2740":1}}],["custom",{"0":{"533":1,"534":1,"563":1,"569":1,"1269":1,"1384":1,"1430":1,"1464":1,"1594":1,"1729":1,"1820":1,"1871":1,"1878":1,"1895":1,"1899":1,"1901":1,"1952":1,"2130":1,"2142":1,"2306":1},"1":{"564":1,"565":1,"566":1,"570":1,"571":1,"572":1,"573":1,"1821":1},"2":{"3":1,"7":1,"15":1,"49":1,"76":1,"80":1,"112":2,"114":2,"134":1,"149":4,"160":2,"176":2,"191":3,"211":3,"236":2,"265":1,"266":2,"277":2,"312":1,"318":1,"479":1,"508":2,"511":2,"515":3,"519":1,"534":21,"564":1,"565":3,"567":1,"570":3,"572":1,"586":2,"659":1,"689":1,"1218":1,"1250":1,"1257":1,"1269":2,"1300":1,"1303":1,"1330":2,"1332":1,"1342":1,"1344":1,"1359":7,"1364":1,"1375":1,"1385":2,"1398":1,"1423":3,"1430":1,"1440":1,"1446":3,"1460":1,"1464":2,"1492":2,"1500":1,"1508":1,"1511":4,"1523":1,"1530":1,"1556":1,"1594":3,"1611":1,"1612":1,"1613":1,"1614":1,"1626":1,"1655":2,"1656":2,"1668":1,"1670":3,"1676":1,"1678":1,"1680":1,"1716":1,"1729":10,"1733":1,"1791":1,"1792":1,"1817":3,"1820":3,"1826":1,"1830":2,"1832":2,"1853":1,"1854":1,"1857":1,"1871":3,"1878":1,"1879":1,"1880":1,"1899":3,"1900":1,"1901":3,"1933":1,"1935":2,"1940":2,"1941":1,"1943":1,"1948":1,"1952":10,"1957":1,"2034":1,"2078":1,"2121":2,"2141":3,"2149":1,"2161":3,"2170":1,"2171":1,"2182":1,"2183":1,"2243":1,"2259":1,"2263":6,"2267":1,"2270":1,"2301":1,"2306":3,"2405":2,"2407":1,"2413":1,"2414":2,"2415":1,"2417":1,"2420":1,"2429":1,"2449":1,"2450":1,"2455":1,"2457":1,"2491":1,"2501":1,"2565":1,"2566":8,"2571":2,"2573":1,"2610":1,"2619":1,"2674":1,"2677":1,"2678":1,"2683":2,"2688":1,"2689":4,"2694":1,"2695":1,"2697":1,"2700":1,"2724":1,"2725":1,"2728":2}}],["cl",{"2":{"2370":5,"2396":5,"2405":2,"2408":1}}],["cln",{"2":{"2165":1,"2168":2}}],["clk",{"2":{"1903":2,"2141":1,"2340":1,"2692":1}}],["cled",{"2":{"1725":1,"1729":1,"1946":1}}],["clearpageremainder",{"2":{"1822":1,"2143":1}}],["clears",{"2":{"1341":1,"1526":1,"1822":1,"2143":1,"2577":1}}],["clearing",{"2":{"1271":1,"1430":1,"1457":3,"2035":6}}],["cleared",{"2":{"592":1,"2524":1,"2525":1}}],["clearer",{"2":{"16":1}}],["clear",{"0":{"1371":1,"1372":1,"1373":1,"1598":1,"1836":1},"2":{"149":2,"188":1,"191":5,"199":1,"231":1,"561":1,"592":1,"1270":3,"1298":1,"1300":2,"1341":1,"1371":1,"1372":1,"1373":1,"1385":2,"1511":6,"1530":2,"1598":1,"1622":1,"1624":1,"1816":1,"1822":1,"1823":3,"1836":1,"1880":1,"2112":1,"2143":1,"2353":1,"2355":5,"2356":1,"2389":1,"2392":4,"2490":2,"2546":1,"2566":1,"2572":1,"2577":2,"2752":1}}],["cleaner",{"2":{"2281":1}}],["cleaned",{"2":{"198":1}}],["cleaning",{"2":{"224":1,"251":1,"2272":1,"2502":1}}],["clean",{"0":{"50":1,"64":1,"75":1,"94":1,"387":1},"2":{"94":1,"114":3,"133":1,"134":2,"160":1,"191":6,"199":2,"211":5,"222":2,"236":3,"249":1,"387":1,"396":1,"401":1,"411":1,"559":1,"1325":1,"2262":3,"2502":1,"2566":1,"2750":1}}],["cleans",{"2":{"13":1,"387":1,"2262":1}}],["cleanups",{"2":{"2":1,"50":1,"149":1,"191":2,"211":3,"222":7,"236":10,"249":1,"277":1}}],["cleanup",{"0":{"2":1,"25":1,"27":1,"113":1,"133":1,"229":1,"233":1},"2":{"12":1,"25":1,"64":2,"94":1,"114":3,"149":1,"187":1,"191":2,"198":1,"199":1,"201":1,"211":4,"213":1,"224":1,"233":1,"235":1,"236":2,"249":2,"268":1,"277":1,"592":1,"2749":1}}],["clr",{"2":{"1270":1,"1332":1,"1527":1,"2126":1,"2355":1,"2356":1,"2392":1,"2572":1,"2610":1}}],["clunker",{"2":{"236":1}}],["clutter",{"2":{"2497":1}}],["cluttered",{"2":{"204":1}}],["cluttering",{"2":{"28":1}}],["club",{"2":{"114":1,"143":4,"149":1,"236":2,"2243":2}}],["cluecard",{"2":{"111":1,"2749":1}}],["clueboards",{"2":{"2230":1}}],["clueboard",{"0":{"1243":1},"2":{"111":3,"149":1,"286":1,"313":1,"370":2,"375":2,"378":1,"395":1,"396":1,"414":2,"415":1,"425":1,"426":2,"623":3,"2259":2,"2293":2,"2294":1,"2295":6,"2404":1,"2407":1,"2421":2,"2422":1,"2469":7,"2565":1,"2671":4,"2672":3}}],["clag",{"2":{"2355":1,"2392":1}}],["clayer",{"2":{"1332":1,"1343":1,"2606":2}}],["classname",{"2":{"460":1}}],["class",{"2":{"457":1,"475":1,"2441":1}}],["classic",{"2":{"210":1,"1290":1,"1491":1,"2728":1}}],["clarification",{"2":{"149":1,"191":1}}],["clarify",{"2":{"134":1,"2172":1}}],["claw44",{"2":{"143":2}}],["clawsome",{"2":{"102":3}}],["clangd",{"2":{"2510":1,"2512":4}}],["clang",{"0":{"1":1,"454":1},"2":{"1":1,"114":1,"132":2,"134":2,"149":1,"400":1,"454":8}}],["clogged",{"2":{"2574":1}}],["cloning",{"2":{"2255":2,"2445":1}}],["cloned",{"2":{"2463":1,"2501":1,"2504":1,"2511":1}}],["clones",{"2":{"271":2,"487":1,"2233":1,"2331":1,"2344":1,"2655":1}}],["clone",{"2":{"93":1,"359":1,"365":1,"366":1,"554":2,"1346":1,"2233":1,"2250":1,"2252":1,"2255":3,"2440":1,"2443":2,"2444":2,"2463":1,"2468":1}}],["closing",{"2":{"453":2,"2079":1,"2102":1,"2279":1}}],["closely",{"2":{"2133":1}}],["closest",{"2":{"1451":1}}],["closes",{"2":{"341":2}}],["closed",{"2":{"340":1,"341":1,"343":1,"344":1,"345":2,"346":2,"350":2,"2144":1,"2235":1,"2311":1,"2566":1}}],["close",{"2":{"331":2,"335":1,"1537":1,"1921":1,"1923":1,"2103":3,"2104":3,"2382":3,"2460":1,"2577":6}}],["cloudline",{"2":{"211":1}}],["clocks",{"2":{"2523":1,"2524":1,"2525":1}}],["clock",{"2":{"114":1,"334":1,"502":1,"685":3,"694":3,"702":1,"704":1,"1181":5,"1223":1,"1227":1,"1817":2,"1855":1,"1856":2,"1863":2,"1867":1,"1869":1,"1870":2,"1904":1,"1905":3,"1906":2,"1907":5,"1908":2,"2032":2,"2141":1,"2348":2,"2675":1,"2692":1}}],["clockwise",{"2":{"13":2,"90":10,"588":1,"1557":1,"1560":9,"1915":1}}],["clipping",{"0":{"2060":1},"2":{"2048":3,"2060":5}}],["client",{"2":{"307":2,"1220":1,"2345":1,"2431":1,"2450":1}}],["clients",{"2":{"304":1}}],["click4",{"2":{"1578":1}}],["click3",{"2":{"1578":2}}],["click2",{"2":{"1578":2}}],["click1",{"2":{"1578":2}}],["clicking",{"2":{"540":3,"2255":2,"2326":1}}],["clicks",{"2":{"266":1,"1406":3,"1408":2,"1431":1,"1809":1,"2263":1,"2357":2}}],["clicky",{"2":{"236":1,"1398":1,"1406":18,"1408":9,"1549":2,"2357":9,"2676":2,"2749":2}}],["click",{"0":{"1406":1},"2":{"149":1,"291":2,"331":3,"335":2,"537":1,"557":1,"626":1,"627":2,"1300":1,"1406":3,"1578":15,"1857":1,"1860":3,"1865":1,"1866":2,"1878":1,"2150":3,"2255":1,"2278":1,"2398":1,"2411":1,"2452":1,"2453":1,"2498":3,"2501":2,"2508":2,"2511":2,"2513":1,"2615":1,"2652":1,"2693":1}}],["cli",{"0":{"173":1,"362":1,"368":1,"412":1,"416":1,"427":1,"433":1,"434":1,"1248":1,"2575":1},"1":{"363":1,"364":1,"365":1,"366":1,"367":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":1,"423":1,"424":1},"2":{"1":1,"94":1,"95":1,"114":6,"132":1,"134":4,"149":1,"153":1,"158":2,"160":2,"164":1,"173":1,"176":5,"191":1,"199":7,"211":3,"222":1,"236":3,"249":2,"266":1,"277":1,"282":2,"292":1,"363":1,"364":1,"372":1,"407":2,"413":1,"428":2,"429":1,"430":18,"431":1,"432":3,"433":7,"434":2,"436":3,"437":6,"438":2,"439":2,"440":1,"441":8,"448":1,"466":1,"470":4,"484":3,"485":1,"606":1,"607":2,"609":1,"613":1,"614":3,"1248":1,"2229":1,"2230":1,"2235":1,"2237":1,"2238":2,"2241":2,"2244":3,"2245":2,"2247":2,"2249":2,"2353":1,"2422":1,"2431":1,"2437":1,"2442":1,"2454":1,"2458":1,"2461":2,"2463":1,"2465":1,"2466":1,"2467":1,"2468":1,"2573":1,"2577":4,"2723":1,"2725":2}}],["coating",{"2":{"2272":1}}],["coarser",{"2":{"2111":1}}],["coarse",{"2":{"102":2,"217":1}}],["coil",{"2":{"1573":1,"1577":1}}],["coworkers",{"2":{"1401":1,"1406":1}}],["cowfish",{"2":{"191":1}}],["coffee|",{"2":{"621":1}}],["coffee||make",{"2":{"621":1}}],["coffee",{"2":{"616":1,"621":1}}],["coseyfannitutti",{"2":{"2346":1}}],["cosmetic",{"2":{"2129":3}}],["cosmo",{"2":{"1279":1}}],["costing",{"2":{"1451":1,"2664":1}}],["cost",{"2":{"479":1,"1553":1,"1872":1,"2226":1,"2655":1,"2664":1,"2750":1}}],["cospad",{"2":{"102":2}}],["coding",{"0":{"453":1,"455":1,"555":1},"2":{"352":1,"454":1,"550":1,"555":2,"560":1,"1921":1,"2510":1,"2725":2}}],["coders",{"2":{"2750":1}}],["codepoints",{"2":{"2666":1}}],["code16",{"0":{"1370":4},"2":{"149":1,"176":1,"196":1,"1370":1,"1430":4,"1511":3,"1680":1,"1948":1,"2034":1,"2168":4,"2170":5,"2413":1,"2414":3,"2415":2}}],["codes",{"0":{"1891":1},"1":{"1892":1},"2":{"32":1,"176":1,"1332":3,"1385":2,"1406":1,"1792":1,"2106":1,"2183":1,"2263":1,"2398":2,"2440":1,"2490":1,"2710":1}}],["codebases",{"0":{"44":1,"59":1,"86":1,"102":1,"122":1,"143":1,"159":1,"168":1,"181":1,"197":1,"207":1,"217":1,"226":1,"241":1,"253":1,"270":1},"1":{"45":1,"60":1},"2":{"2752":1}}],["codebase",{"0":{"18":1,"113":1,"133":1},"2":{"18":1,"21":1,"35":1,"60":1,"86":1,"262":1,"455":1,"479":1,"483":1,"2564":2,"2719":1,"2754":1,"2757":1}}],["code",{"0":{"1":1,"4":1,"27":1,"33":1,"218":1,"220":1,"292":1,"480":1,"533":1,"562":1,"574":1,"575":1,"578":1,"581":1,"584":1,"589":1,"592":1,"603":1,"613":1,"614":1,"1330":1,"1342":1,"1366":1,"1367":1,"1368":1,"1369":1,"1376":1,"1792":1,"2089":1,"2152":1,"2199":1,"2206":1,"2434":1,"2503":1,"2504":1,"2507":1,"2511":1,"2512":1,"2513":1,"2742":1},"1":{"34":1,"575":1,"576":2,"577":2,"578":1,"579":2,"580":2,"581":1,"582":2,"583":2,"585":1,"586":1,"590":1,"591":1,"593":1,"594":1,"595":1,"1343":1,"1344":1,"1345":1,"1377":1,"1378":1,"1379":1,"1380":1,"1381":1,"1382":1,"1383":1,"1384":1,"1385":1,"2090":1,"2200":1,"2207":1,"2208":1,"2435":1,"2436":1,"2437":1,"2438":1,"2439":1,"2505":1,"2506":1,"2507":1,"2508":2,"2509":1,"2510":1,"2512":1,"2743":1,"2744":1,"2745":1,"2746":1,"2747":1,"2748":1,"2749":1},"2":{"2":1,"3":1,"10":1,"15":1,"21":1,"22":1,"24":1,"25":1,"28":1,"31":1,"49":2,"50":4,"57":2,"64":1,"65":1,"70":1,"74":2,"75":1,"76":1,"90":13,"92":1,"93":2,"94":2,"105":6,"112":1,"113":3,"114":11,"123":1,"125":7,"132":1,"133":5,"134":10,"149":6,"160":2,"173":1,"174":1,"175":3,"176":8,"185":7,"190":2,"191":5,"194":2,"199":2,"201":1,"206":1,"211":1,"215":1,"218":1,"220":1,"222":4,"229":1,"231":1,"236":5,"243":1,"245":1,"249":1,"266":4,"268":1,"272":1,"282":1,"291":1,"292":4,"303":2,"312":1,"316":1,"318":1,"331":1,"354":2,"384":1,"388":1,"400":3,"406":1,"407":1,"411":1,"430":1,"442":1,"445":2,"446":2,"447":2,"453":5,"454":2,"456":1,"457":1,"466":1,"469":1,"473":1,"478":1,"479":3,"480":1,"481":3,"482":4,"483":1,"496":1,"503":1,"504":1,"505":3,"517":1,"550":1,"556":2,"557":1,"560":1,"562":3,"563":1,"565":1,"567":1,"569":1,"574":1,"576":1,"582":1,"584":2,"586":1,"588":1,"590":2,"603":1,"607":1,"613":2,"614":1,"631":1,"643":2,"665":1,"688":1,"689":1,"691":1,"692":1,"700":2,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1175":2,"1196":2,"1213":2,"1245":1,"1250":1,"1252":1,"1253":1,"1263":1,"1265":1,"1270":1,"1279":1,"1283":1,"1300":1,"1302":2,"1303":3,"1312":1,"1313":3,"1316":1,"1317":1,"1326":2,"1332":1,"1341":1,"1342":1,"1344":1,"1351":1,"1353":1,"1360":3,"1364":1,"1367":1,"1368":4,"1369":1,"1375":4,"1376":1,"1380":1,"1384":2,"1385":1,"1399":1,"1400":1,"1445":1,"1446":1,"1447":1,"1448":2,"1453":1,"1497":2,"1499":1,"1500":1,"1523":1,"1559":1,"1560":5,"1573":1,"1605":1,"1634":1,"1637":1,"1656":1,"1716":2,"1717":1,"1791":1,"1814":1,"1817":1,"1821":1,"1857":1,"1870":1,"1874":2,"1875":2,"1880":1,"1892":1,"1897":1,"1898":1,"1899":4,"1901":3,"1921":1,"1948":1,"1954":1,"2034":1,"2035":1,"2047":1,"2060":1,"2090":1,"2130":1,"2134":1,"2138":1,"2141":1,"2149":3,"2152":1,"2157":1,"2169":11,"2170":1,"2171":4,"2181":4,"2182":3,"2183":7,"2184":3,"2196":1,"2197":1,"2198":1,"2200":2,"2206":1,"2208":1,"2209":1,"2223":1,"2226":1,"2242":1,"2257":1,"2258":1,"2259":1,"2260":1,"2261":2,"2263":7,"2286":1,"2295":1,"2301":2,"2306":1,"2309":2,"2384":3,"2401":6,"2406":1,"2408":1,"2411":1,"2413":1,"2414":2,"2418":1,"2430":1,"2433":1,"2440":1,"2485":2,"2492":5,"2501":2,"2503":8,"2506":2,"2507":1,"2509":1,"2510":4,"2512":5,"2513":6,"2524":2,"2525":1,"2553":1,"2566":8,"2567":1,"2569":1,"2577":1,"2581":2,"2589":2,"2605":1,"2629":2,"2631":2,"2656":1,"2706":2,"2707":3,"2713":1,"2718":1,"2719":1,"2723":1,"2728":1,"2729":1,"2743":1,"2744":2,"2751":1,"2752":1,"2757":5}}],["copper",{"2":{"2270":1}}],["copied",{"2":{"513":1,"2564":1}}],["copies",{"2":{"249":1,"1359":1}}],["copying",{"2":{"2425":1,"2469":1,"2576":1}}],["copyrighted",{"2":{"1398":1}}],["copyrights",{"2":{"559":1}}],["copyright",{"0":{"2309":1},"2":{"352":1,"1380":1,"2309":2,"2553":2,"2570":2,"2719":1}}],["copypasta",{"2":{"114":1,"1353":1}}],["copy",{"0":{"452":1},"2":{"31":1,"114":1,"191":1,"305":1,"452":1,"554":1,"1270":1,"1380":1,"1445":1,"2245":2,"2247":2,"2249":2,"2252":2,"2255":1,"2355":2,"2392":2,"2414":1,"2415":1,"2422":1,"2440":1,"2441":1,"2442":1,"2443":1,"2444":1,"2445":1,"2452":1,"2564":1,"2566":1,"2570":1,"2576":1,"2615":2}}],["covered",{"0":{"1260":1},"2":{"1234":1,"2348":1}}],["cover",{"2":{"683":1,"1258":1,"1804":1,"2263":1,"2560":1}}],["covers",{"2":{"528":1,"616":1,"1237":1,"1264":1,"1266":1,"1445":1,"1802":1,"2134":1,"2181":1,"2263":1,"2503":1,"2613":1}}],["covering",{"2":{"222":1,"556":1,"2483":1}}],["coverage",{"2":{"134":2,"236":1}}],["co",{"2":{"211":1,"701":1,"1958":1,"2672":1}}],["cocoa40",{"2":{"143":2}}],["coordinate",{"2":{"1537":2,"1725":1,"1946":1,"2577":2}}],["coordinates",{"2":{"100":2,"114":1,"176":1,"277":1,"1531":1,"1533":2,"1534":1,"1822":1,"1863":1,"2143":1,"2576":1}}],["cooperating",{"2":{"684":1}}],["cooler",{"2":{"2102":1}}],["cool",{"2":{"616":1,"621":5,"1376":2,"1377":2,"1729":10,"1952":10,"2102":1,"2272":1,"2273":2}}],["cook",{"2":{"143":2,"211":1}}],["coexist",{"2":{"98":1}}],["cozykeys",{"2":{"56":3}}],["col1",{"2":{"2311":13}}],["col0",{"2":{"2311":14}}],["col2row",{"2":{"502":3,"563":1,"580":3,"2231":2,"2238":2,"2519":2,"2557":1,"2689":1,"2693":2}}],["colons",{"2":{"2754":1}}],["colon",{"0":{"285":2},"2":{"2160":1,"2169":1,"2378":1,"2399":1}}],["coloured",{"2":{"1454":1}}],["colour",{"2":{"222":1,"1454":1}}],["color=false",{"2":{"2262":2}}],["colored",{"2":{"626":1}}],["colorizing",{"0":{"435":1},"2":{"432":1}}],["colorize",{"2":{"431":1,"432":1,"435":1}}],["colors",{"0":{"1953":1,"2058":1},"2":{"149":1,"214":1,"435":3,"1216":1,"1523":1,"1953":1,"1960":1,"2033":1,"2038":1,"2042":1,"2058":1,"2574":1,"2575":4,"2577":1,"2596":4}}],["color",{"0":{"647":1,"649":1,"675":1,"677":1,"741":1,"743":1,"768":1,"770":1,"800":1,"802":1,"832":1,"834":1,"867":1,"869":1,"901":1,"903":1,"935":1,"937":1,"969":1,"971":1,"1003":1,"1005":1,"1037":1,"1039":1,"1071":1,"1073":1,"1105":1,"1107":1,"1158":1,"1160":1,"1970":1,"1972":1,"2033":1},"1":{"648":1,"650":1,"676":1,"678":1,"742":1,"744":1,"769":1,"771":1,"801":1,"803":1,"833":1,"835":1,"868":1,"870":1,"902":1,"904":1,"936":1,"938":1,"970":1,"972":1,"1004":1,"1006":1,"1038":1,"1040":1,"1072":1,"1074":1,"1106":1,"1108":1,"1159":1,"1161":1,"1971":1,"1973":1},"2":{"114":1,"191":1,"199":1,"236":1,"435":10,"582":1,"593":2,"594":2,"647":1,"649":1,"664":1,"675":1,"677":1,"729":1,"730":1,"734":1,"737":1,"741":1,"743":1,"745":1,"747":1,"751":1,"755":1,"756":1,"760":1,"763":1,"768":1,"770":1,"772":1,"774":1,"778":1,"784":1,"785":1,"790":1,"793":1,"800":1,"802":1,"804":1,"806":1,"810":1,"816":1,"817":1,"824":1,"827":1,"832":1,"834":1,"836":1,"838":1,"842":1,"848":1,"849":1,"857":1,"860":1,"867":1,"869":1,"871":1,"873":1,"877":1,"883":1,"884":1,"891":1,"894":1,"901":1,"903":1,"905":1,"907":1,"911":1,"917":1,"918":1,"925":1,"928":1,"935":1,"937":1,"939":1,"941":1,"945":1,"951":1,"952":1,"959":1,"962":1,"969":1,"971":1,"973":1,"975":1,"979":1,"985":1,"986":1,"993":1,"996":1,"1003":1,"1005":1,"1007":1,"1009":1,"1013":1,"1019":1,"1020":1,"1027":1,"1030":1,"1037":1,"1039":1,"1041":1,"1043":1,"1047":1,"1053":1,"1054":1,"1061":1,"1064":1,"1071":1,"1073":1,"1075":1,"1077":1,"1081":1,"1087":1,"1088":1,"1095":1,"1098":1,"1105":1,"1107":1,"1109":1,"1111":1,"1115":1,"1143":1,"1144":1,"1148":1,"1151":1,"1158":1,"1160":1,"1162":1,"1164":1,"1168":1,"1212":2,"1216":2,"1217":1,"1332":3,"1826":4,"1944":1,"1949":2,"1950":1,"1951":2,"1952":2,"1953":1,"1957":3,"1958":4,"1959":4,"1960":1,"1970":1,"1972":1,"2018":1,"2031":2,"2033":2,"2036":3,"2040":1,"2047":1,"2052":1,"2058":1,"2262":2,"2289":1,"2574":2,"2575":6,"2576":11,"2577":7,"2597":1,"2695":1}}],["col",{"0":{"1603":1},"1":{"1604":1},"2":{"199":1,"222":1,"502":1,"511":3,"573":1,"580":4,"1252":8,"1547":1,"1552":1,"1604":1,"1725":3,"1822":1,"1946":3,"1958":4,"2131":2,"2143":1,"2155":1,"2231":1,"2238":1,"2689":2}}],["colemak",{"0":{"2630":1},"2":{"191":1,"370":2,"401":2,"1338":1,"1355":2,"1362":2,"1524":1,"2402":1,"2406":1,"2607":2,"2712":3}}],["coled",{"2":{"31":1,"34":1}}],["coln",{"2":{"176":3,"2168":1,"2378":1,"2399":1}}],["collectively",{"2":{"2479":1}}],["collection",{"2":{"1251":1}}],["collected",{"2":{"2419":1}}],["collect",{"2":{"1830":1}}],["collaborator",{"2":{"521":1,"561":1,"2563":1,"2567":1}}],["collaborators",{"2":{"163":1,"201":1,"341":2,"2322":1,"2563":1,"2564":2,"2567":2,"2569":1}}],["collisions",{"2":{"156":1,"167":1,"1344":1}}],["collision",{"2":{"134":1,"186":1,"689":1,"1242":1}}],["cols",{"2":{"111":1,"114":2,"502":1,"530":1,"580":2,"1290":1,"1359":2,"1405":1,"1591":1,"1725":2,"1792":1,"1946":2,"1958":1,"2155":1,"2164":1,"2401":1,"2406":3,"2423":1,"2519":1,"2557":3,"2558":1,"2566":1,"2689":1,"2747":1}}],["columnn",{"2":{"1496":1}}],["columner",{"2":{"241":2}}],["columns",{"0":{"2274":1},"2":{"211":1,"249":1,"453":1,"455":1,"502":3,"511":1,"1290":1,"1329":1,"1403":1,"1405":1,"2122":1,"2131":2,"2268":2,"2274":1,"2276":1,"2279":1,"2311":4,"2557":1,"2558":1,"2614":1,"2648":1,"2689":2}}],["column",{"0":{"1290":1},"2":{"55":1,"222":1,"266":1,"289":2,"580":2,"1495":2,"1496":1,"1497":1,"1604":1,"1612":1,"1614":1,"1728":4,"1817":1,"1822":2,"1949":4,"2122":1,"2141":1,"2143":2,"2155":4,"2268":1,"2274":5,"2276":2,"2279":2,"2311":16,"2401":1,"2519":2,"2558":1,"2614":1,"2686":1,"2693":1,"2730":1,"2745":1}}],["court",{"2":{"2144":1}}],["courtesy",{"2":{"562":1}}],["course",{"2":{"120":1,"123":1,"546":1,"1668":1,"2327":1,"2757":1}}],["couldn",{"0":{"2670":1}}],["could",{"0":{"1656":1},"2":{"211":1,"352":1,"374":1,"401":1,"414":1,"481":2,"628":1,"639":1,"641":1,"1329":1,"1336":1,"1338":1,"1370":1,"1383":1,"1384":2,"1395":1,"1447":1,"1451":1,"1511":1,"1519":1,"1523":1,"1562":2,"1803":1,"1869":1,"1899":2,"1923":1,"1939":1,"2118":1,"2280":1,"2319":1,"2409":1,"2411":2,"2475":1,"2491":1,"2577":1,"2605":2,"2670":1,"2735":2,"2740":1,"2746":1}}],["couple",{"2":{"145":1,"346":1,"1271":1,"1361":1,"1398":1,"1442":1,"1935":1,"2128":1,"2146":1,"2273":1,"2276":1,"2605":1}}],["coupled",{"2":{"48":1,"119":1,"131":1}}],["count=6",{"2":{"2300":1}}],["count=30",{"2":{"2300":1}}],["counting",{"2":{"2255":2,"2614":1}}],["countries",{"2":{"1339":1}}],["counts",{"2":{"236":2,"277":1,"1870":1,"1940":1,"2162":1}}],["counteract",{"2":{"1677":1,"2738":1}}],["counterparts",{"2":{"1370":1}}],["counterpart",{"2":{"1336":1}}],["counters",{"2":{"461":1,"1329":1}}],["counter",{"2":{"114":1,"336":1,"1469":1,"1560":1,"2162":1}}],["count",{"0":{"2214":1},"1":{"2215":1},"2":{"49":2,"70":1,"111":1,"112":1,"166":1,"183":6,"191":4,"199":1,"222":3,"236":4,"249":4,"292":2,"506":1,"611":2,"669":1,"684":1,"685":1,"689":1,"690":3,"734":2,"760":2,"790":2,"824":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1148":2,"1214":1,"1252":8,"1326":1,"1446":2,"1451":1,"1500":1,"1636":2,"1637":1,"1638":1,"1642":1,"1730":1,"1744":1,"1815":1,"1820":3,"1868":1,"1886":2,"1894":2,"1940":5,"1941":3,"1942":2,"1954":1,"1971":1,"2032":1,"2038":1,"2039":2,"2051":4,"2059":1,"2060":1,"2139":1,"2142":2,"2156":1,"2161":1,"2168":1,"2226":1,"2228":4,"2413":1,"2414":3,"2415":1,"2474":2,"2577":4,"2594":1,"2688":2,"2694":3,"2695":2}}],["corp",{"2":{"2450":1,"2453":2}}],["coral",{"2":{"1953":2,"2058":2}}],["corrupted",{"2":{"2327":1}}],["corruption",{"2":{"249":1,"2757":1}}],["corresponds",{"2":{"1451":1,"1794":1,"2150":1,"2169":1,"2347":1}}],["correspond",{"2":{"669":1,"790":1,"824":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1,"1637":1,"2354":1,"2397":1,"2686":1}}],["corresponding",{"2":{"118":1,"166":1,"430":1,"641":1,"661":1,"1129":1,"1268":1,"1300":1,"1431":1,"1451":1,"1529":1,"1817":1,"2147":1,"2263":1,"2268":1,"2278":1,"2311":1,"2567":1,"2575":1,"2596":2,"2599":1,"2600":1,"2711":1,"2735":1,"2736":1}}],["corrected",{"2":{"399":1,"1447":1,"1448":2,"2577":1}}],["correctness",{"2":{"263":1,"2567":1}}],["corrections",{"2":{"199":1,"266":1,"1440":2}}],["correction",{"2":{"49":1,"222":1,"236":1,"249":2,"1440":3,"1451":1,"1452":1}}],["correct",{"2":{"11":1,"114":2,"132":1,"134":1,"149":1,"176":4,"194":1,"199":2,"211":2,"222":2,"236":1,"249":2,"428":1,"537":1,"538":1,"566":2,"626":1,"627":1,"629":1,"661":1,"684":1,"1129":1,"1132":1,"1133":1,"1243":1,"1331":1,"1385":1,"1405":1,"1430":1,"1437":1,"1438":1,"1441":2,"1447":2,"1448":3,"1451":1,"1496":1,"1670":1,"1824":1,"1873":1,"1908":1,"1948":1,"2126":1,"2183":1,"2311":1,"2436":1,"2458":1,"2508":1,"2512":1,"2513":1,"2522":1,"2550":1,"2566":1,"2577":2}}],["correctly",{"2":{"11":1,"31":1,"34":1,"48":1,"73":1,"132":1,"191":2,"199":1,"263":2,"277":2,"323":1,"332":1,"377":1,"684":1,"1252":1,"1303":1,"1330":1,"1441":1,"1560":1,"1830":1,"2150":1,"2279":2,"2398":1,"2411":1,"2438":1,"2441":1,"2445":1,"2507":1,"2513":3,"2566":1,"2567":1,"2576":4}}],["cor65",{"2":{"249":1}}],["cor",{"2":{"211":1}}],["corner",{"2":{"1866":1,"2686":2}}],["corne",{"2":{"86":1,"92":1,"93":1,"191":1,"211":1}}],["cortex",{"2":{"50":1,"134":1,"191":1,"222":1,"2513":4,"2528":1}}],["cored",{"2":{"2266":1,"2274":2}}],["cores",{"2":{"1906":1}}],["core",{"0":{"1":1,"20":1,"46":1,"47":1,"61":1,"68":1,"91":1,"106":1,"129":1,"144":1,"171":1,"187":1,"198":1,"208":1,"227":1,"242":1,"261":1,"560":1,"568":1,"2567":1,"2601":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"48":1,"49":1,"50":1,"62":1,"63":1,"64":1,"69":1,"70":1,"92":1,"93":1,"94":1,"95":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"130":1,"131":1,"132":1,"133":1,"145":1,"146":1,"147":1,"148":1,"172":1,"173":1,"174":1,"175":1,"188":1,"189":1,"190":1,"209":1,"210":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"262":1,"263":1,"2602":1,"2603":1,"2604":1,"2605":1,"2606":1,"2607":1,"2608":1,"2609":1,"2610":1,"2611":1,"2612":1},"2":{"1":2,"75":2,"113":5,"114":7,"118":1,"130":1,"133":3,"134":6,"140":1,"146":1,"149":3,"160":5,"176":3,"179":1,"187":1,"191":2,"198":1,"199":4,"211":3,"213":1,"222":2,"236":2,"249":2,"266":1,"277":1,"341":2,"354":1,"400":3,"556":1,"559":1,"560":2,"568":1,"607":1,"654":1,"657":1,"1275":1,"1287":1,"1329":1,"1397":1,"1560":1,"1729":1,"1952":1,"2178":1,"2257":1,"2310":1,"2322":1,"2546":1,"2564":2,"2566":5,"2567":5,"2725":1,"2743":2,"2745":1}}],["congrats",{"2":{"2455":1}}],["congratulations",{"2":{"545":1}}],["conjunction",{"2":{"2171":1}}],["conu",{"2":{"1572":1}}],["conducted",{"2":{"2272":1}}],["conductors",{"2":{"1123":1,"1126":1,"1129":1}}],["conduct",{"0":{"562":1},"2":{"550":1,"562":2,"2713":1}}],["cond",{"2":{"473":1,"1572":1}}],["conditions",{"0":{"1939":1},"2":{"684":1,"1519":1,"1562":1,"1900":2,"1939":1,"2169":1}}],["conditional",{"0":{"473":1,"1313":1},"2":{"473":1}}],["condition",{"2":{"211":1,"277":1,"453":4,"1300":1,"1315":1,"1322":1,"2729":1}}],["concurrent",{"2":{"2574":1}}],["concurrently",{"2":{"2478":1}}],["concept",{"2":{"2523":1}}],["conceptually",{"2":{"2408":1}}],["concepts",{"2":{"113":1,"552":1,"2312":1,"2457":1,"2473":1,"2475":1,"2686":1,"2722":1,"2742":1}}],["conceived",{"2":{"2160":1}}],["concerns",{"2":{"2720":1}}],["concerning",{"2":{"1346":1}}],["concern",{"2":{"479":1,"2404":1,"2569":1}}],["concerned",{"2":{"263":1}}],["concrete",{"2":{"234":1}}],["confuse",{"2":{"2304":1,"2617":1}}],["confused",{"2":{"1359":1}}],["confusion",{"2":{"271":1,"1560":1,"2614":1}}],["confusingly",{"2":{"1273":1}}],["confusing",{"2":{"243":1,"347":1,"474":1,"482":1,"556":1,"2155":1,"2710":1}}],["conforms",{"2":{"2575":1}}],["conform",{"2":{"244":1,"560":1,"2292":1,"2305":1,"2559":1}}],["conf",{"2":{"134":1,"360":1,"1239":1,"2583":1}}],["conflicted",{"2":{"2474":1}}],["conflicting",{"0":{"1349":1},"2":{"2474":7}}],["conflicts",{"0":{"2473":1},"1":{"2474":1},"2":{"191":1,"341":2,"1383":1,"2150":1,"2472":1,"2474":1,"2478":1,"2564":4,"2566":1}}],["conflict",{"2":{"92":1,"191":1,"367":1,"455":1,"1467":1,"1501":1,"2105":1,"2473":2,"2474":7}}],["confirm",{"2":{"347":1,"626":1,"627":1,"635":1,"689":1,"2548":1}}],["confirmed",{"2":{"32":1,"2280":1}}],["confident",{"2":{"337":1,"2667":1}}],["confidence",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"182":1,"337":1,"2548":1,"2567":1}}],["conficts",{"2":{"114":1}}],["configparser",{"2":{"436":2}}],["configuring",{"0":{"331":1,"335":1,"496":1,"1415":1,"1802":1,"2150":1,"2512":1},"1":{"497":1,"498":1,"499":1,"500":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"1423":1,"1424":1,"1425":1,"1426":1,"1427":1,"1428":1,"1429":1,"1803":1,"1804":1,"1805":1,"1806":1,"1807":1,"1808":1},"2":{"580":1,"798":1,"865":1,"899":1,"933":1,"967":1,"1001":1,"1035":1,"1069":1,"1103":1,"1156":1,"1462":1,"2122":1,"2559":1,"2723":1}}],["configures",{"2":{"1399":2,"1504":1,"1570":2,"1573":3,"1637":1,"1861":3,"2128":1,"2675":1,"2676":1,"2677":1,"2678":1,"2679":1,"2680":1,"2681":1,"2682":1,"2683":1,"2684":1,"2685":1,"2687":1,"2688":1,"2690":1,"2691":1,"2692":1,"2694":1,"2695":1,"2696":1,"2697":1,"2698":1,"2700":1}}],["configured",{"0":{"505":1},"2":{"134":1,"236":1,"255":1,"256":1,"266":1,"433":1,"468":1,"502":1,"566":2,"606":1,"655":1,"656":1,"660":1,"684":1,"852":3,"1023":3,"1057":3,"1126":2,"1129":1,"1142":1,"1194":1,"1214":1,"1218":1,"1225":1,"1275":1,"1376":1,"1387":1,"1391":1,"1400":1,"1460":1,"1498":1,"1516":1,"1570":1,"1637":2,"1665":2,"1827":1,"1910":1,"1912":1,"1934":1,"1949":1,"1958":1,"2035":1,"2043":1,"2046":1,"2066":1,"2067":1,"2070":1,"2128":1,"2402":1,"2422":1,"2432":1,"2448":1,"2454":1,"2477":3,"2507":1,"2524":2,"2525":1,"2539":1,"2540":1,"2542":1,"2560":1,"2566":1,"2576":12,"2581":1,"2710":1,"2728":1,"2737":1,"2743":1}}],["configure",{"0":{"1506":1,"2421":1,"2500":1,"2511":1},"1":{"2501":1,"2502":1,"2512":1},"2":{"76":1,"112":2,"124":1,"154":1,"186":1,"195":1,"211":1,"221":1,"372":1,"515":1,"564":1,"565":1,"566":1,"661":1,"668":1,"702":1,"733":1,"749":1,"751":1,"758":1,"759":1,"776":1,"778":1,"787":1,"789":1,"808":1,"810":1,"819":1,"823":1,"840":1,"842":1,"851":1,"856":1,"875":1,"877":1,"886":1,"890":1,"909":1,"911":1,"920":1,"924":1,"943":1,"945":1,"954":1,"958":1,"977":1,"979":1,"988":1,"992":1,"1011":1,"1013":1,"1022":1,"1026":1,"1045":1,"1047":1,"1056":1,"1060":1,"1079":1,"1081":1,"1090":1,"1094":1,"1113":1,"1115":1,"1124":1,"1127":1,"1130":1,"1146":1,"1147":1,"1166":1,"1168":1,"1225":2,"1331":1,"1332":2,"1397":1,"1406":1,"1458":1,"1459":1,"1464":1,"1496":1,"1499":1,"1501":1,"1504":1,"1506":1,"1515":3,"1518":1,"1559":1,"1655":1,"1668":1,"1684":1,"1715":1,"1724":1,"1870":1,"1873":1,"1912":1,"1936":1,"1945":1,"2124":1,"2125":1,"2131":1,"2150":2,"2180":1,"2260":1,"2299":1,"2300":2,"2421":1,"2422":1,"2425":1,"2454":2,"2503":1,"2536":1,"2537":1,"2542":1,"2555":1,"2558":1,"2579":1,"2607":1,"2724":1,"2725":1,"2726":1,"2728":2}}],["configurability",{"2":{"1666":1}}],["configurables",{"2":{"124":1,"201":1,"213":1}}],["configurable",{"2":{"74":1,"109":1,"134":1,"152":1,"176":1,"198":1,"210":1,"211":1,"246":1,"496":1,"657":1,"683":1,"686":1,"689":1,"690":1,"691":1,"1499":1,"1866":1,"1951":1,"2524":1,"2566":1,"2574":1,"2577":2}}],["configuratorexport",{"2":{"370":1,"371":1}}],["configurator",{"0":{"517":1,"520":1,"528":1,"536":1,"544":1,"1234":1,"2427":1,"2613":1,"2614":1,"2616":1},"1":{"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"537":1,"538":1,"539":1,"540":1,"541":1,"542":1,"543":1,"545":1,"546":1,"547":1,"548":1,"549":1,"1235":1,"2614":1,"2615":1,"2616":1,"2617":1,"2618":1,"2619":1,"2620":1},"2":{"35":1,"114":1,"120":2,"154":1,"209":1,"349":1,"370":1,"371":2,"379":1,"388":1,"393":2,"394":2,"405":1,"441":2,"517":3,"519":2,"520":3,"521":1,"523":1,"524":1,"528":1,"529":3,"530":1,"532":1,"533":2,"534":1,"535":2,"536":1,"537":1,"541":1,"545":2,"549":1,"1234":1,"1258":1,"1286":1,"1354":1,"2259":2,"2279":1,"2295":1,"2298":1,"2322":1,"2323":1,"2427":6,"2436":1,"2437":1,"2455":1,"2549":1,"2566":2,"2613":1,"2614":4,"2615":3,"2616":3,"2617":1,"2619":1,"2671":1,"2686":1}}],["configurations",{"0":{"1432":1},"2":{"76":1,"265":1,"335":1,"374":1,"436":1,"495":1,"499":1,"560":1,"635":2,"655":1,"656":1,"684":1,"685":1,"694":1,"1432":1,"1811":1,"1857":1,"1862":1,"1874":1,"1875":1,"2168":2,"2284":1,"2513":1,"2519":1,"2543":1,"2718":1,"2739":1,"2754":4}}],["configuration",{"0":{"28":1,"112":1,"183":1,"412":1,"417":1,"418":1,"419":1,"423":1,"425":1,"426":1,"436":1,"437":1,"438":1,"439":1,"440":1,"441":1,"506":1,"604":1,"605":1,"640":1,"644":1,"666":1,"668":1,"681":1,"682":1,"683":1,"684":1,"685":1,"686":1,"687":1,"688":1,"689":1,"690":1,"691":1,"692":1,"693":1,"694":1,"702":1,"703":1,"731":1,"733":1,"757":1,"759":1,"786":1,"789":1,"818":1,"823":1,"850":1,"856":1,"885":1,"890":1,"919":1,"924":1,"953":1,"958":1,"987":1,"992":1,"1021":1,"1026":1,"1055":1,"1060":1,"1089":1,"1094":1,"1123":1,"1126":1,"1129":1,"1135":1,"1145":1,"1147":1,"1176":1,"1177":1,"1197":1,"1198":1,"1214":1,"1218":1,"1224":1,"1308":1,"1313":1,"1331":1,"1379":1,"1457":1,"1460":1,"1465":1,"1468":1,"1513":1,"1530":1,"1568":1,"1591":1,"1636":1,"1681":1,"1715":1,"1724":1,"1725":1,"1794":1,"1817":1,"1818":1,"1819":1,"1829":1,"1872":1,"1873":1,"1920":1,"1945":1,"1946":1,"2035":1,"2064":1,"2070":1,"2074":1,"2106":1,"2107":1,"2116":1,"2121":1,"2131":1,"2141":1,"2155":1,"2174":1,"2179":1,"2226":1,"2556":1,"2557":1,"2560":1,"2561":1,"2574":1,"2673":1,"2674":1,"2726":1},"1":{"419":1,"420":1,"421":1,"422":1,"437":1,"438":1,"439":1,"440":1,"441":1,"606":1,"607":1,"608":1,"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"667":1,"682":1,"683":2,"684":1,"685":1,"686":1,"687":1,"689":1,"690":1,"691":1,"692":1,"694":1,"704":1,"705":1,"732":1,"758":1,"787":1,"788":1,"819":1,"820":1,"821":1,"822":1,"851":1,"852":1,"853":1,"854":1,"855":1,"886":1,"887":1,"888":1,"889":1,"920":1,"921":1,"922":1,"923":1,"954":1,"955":1,"956":1,"957":1,"988":1,"989":1,"990":1,"991":1,"1022":1,"1023":1,"1024":1,"1025":1,"1056":1,"1057":1,"1058":1,"1059":1,"1090":1,"1091":1,"1092":1,"1093":1,"1136":1,"1137":1,"1146":1,"1215":1,"1216":1,"1217":1,"1219":1,"1220":1,"1221":1,"1222":1,"1223":1,"1225":1,"1226":1,"1227":1,"1228":1,"1229":1,"1230":1,"1332":1,"1333":1,"1458":1,"1459":1,"1461":1,"1462":1,"1463":1,"1464":1,"1466":1,"1467":1,"1469":1,"1470":1,"1514":1,"1515":1,"1516":1,"1517":1,"1518":1,"1519":1,"1520":1,"1521":1,"1522":1,"1523":1,"1524":1,"1525":1,"1637":1,"1638":1,"1682":1,"1683":1,"1684":1,"1685":1,"1818":1,"1819":1,"2117":1,"2118":1,"2119":1,"2120":1,"2122":1,"2123":1,"2124":1,"2125":1,"2126":1,"2127":1,"2128":1,"2129":1,"2130":1,"2131":1,"2180":1,"2558":1,"2561":1,"2562":1,"2727":1,"2728":1,"2729":1,"2730":1,"2731":1,"2732":1,"2733":1,"2734":1,"2735":1,"2736":1,"2737":1,"2738":1,"2739":1,"2740":1,"2741":1},"2":{"28":1,"45":1,"50":1,"65":1,"69":1,"74":1,"83":2,"114":2,"118":1,"134":2,"138":1,"141":1,"149":2,"176":1,"183":4,"194":3,"198":1,"199":1,"206":1,"211":1,"233":1,"236":3,"238":1,"251":1,"262":2,"335":2,"372":1,"401":1,"413":1,"414":2,"415":1,"416":3,"417":2,"418":2,"423":2,"424":1,"430":2,"436":4,"437":1,"438":1,"439":1,"440":3,"441":1,"445":1,"454":2,"496":4,"499":1,"505":1,"511":1,"515":1,"582":1,"604":1,"605":1,"606":1,"607":1,"657":1,"661":2,"663":1,"668":1,"684":2,"685":2,"687":3,"689":1,"690":1,"692":1,"694":2,"703":2,"704":1,"705":1,"733":1,"759":1,"789":1,"823":1,"850":4,"856":1,"890":1,"924":1,"953":2,"958":1,"987":2,"992":1,"1021":6,"1026":1,"1055":6,"1060":1,"1089":2,"1094":1,"1100":1,"1122":1,"1123":1,"1126":1,"1127":1,"1129":2,"1130":1,"1135":1,"1142":1,"1147":1,"1177":2,"1198":1,"1225":1,"1226":1,"1230":2,"1308":1,"1316":1,"1317":1,"1379":1,"1398":1,"1415":1,"1463":1,"1469":1,"1470":1,"1513":1,"1518":2,"1560":1,"1562":2,"1714":1,"1716":1,"1725":1,"1773":1,"1794":2,"1802":1,"1814":1,"1817":1,"1863":2,"1873":4,"1946":1,"1949":1,"2018":1,"2032":1,"2052":1,"2064":1,"2106":1,"2129":1,"2131":1,"2155":1,"2169":1,"2277":1,"2299":1,"2416":1,"2454":1,"2468":1,"2507":1,"2513":2,"2522":1,"2541":1,"2542":1,"2543":1,"2548":1,"2555":1,"2560":1,"2566":12,"2671":2,"2688":1,"2695":1,"2724":1,"2728":1}}],["configs",{"2":{"50":1,"77":1,"191":1,"199":1,"249":2,"360":1,"1872":3}}],["config",{"0":{"69":1,"77":1,"83":1,"372":1,"416":1,"501":1,"659":1,"1379":1,"1399":1,"1643":1,"1730":1,"1889":1,"1954":1,"2261":1,"2299":1,"2703":1},"1":{"417":1,"418":1,"419":1,"420":1,"421":1,"422":1,"423":1,"424":1,"502":1,"503":1,"504":1,"505":1,"506":1,"507":1,"508":1,"509":1,"510":1,"511":1,"660":1,"1644":1},"2":{"4":2,"14":1,"25":1,"28":1,"31":2,"34":2,"49":1,"50":1,"70":12,"74":1,"75":1,"76":1,"77":2,"83":2,"92":1,"93":2,"95":2,"114":5,"119":1,"133":2,"134":3,"149":1,"160":4,"169":2,"170":2,"176":4,"183":6,"184":2,"191":10,"199":21,"201":1,"211":16,"222":3,"224":1,"236":10,"246":1,"249":27,"262":2,"266":5,"273":1,"277":2,"282":1,"335":3,"370":2,"372":5,"401":1,"412":1,"413":1,"414":1,"415":1,"416":1,"417":2,"419":1,"420":1,"421":1,"422":1,"423":1,"424":1,"429":1,"430":4,"436":4,"437":5,"438":2,"439":2,"440":2,"456":1,"496":2,"498":1,"499":1,"501":2,"520":1,"588":1,"601":1,"606":3,"607":2,"608":1,"610":4,"613":4,"614":4,"644":1,"657":1,"658":1,"661":2,"666":1,"667":1,"683":1,"684":2,"685":2,"686":1,"689":2,"690":2,"691":2,"694":2,"702":1,"703":1,"704":1,"705":1,"731":1,"757":1,"758":1,"786":1,"787":1,"788":1,"818":1,"819":1,"820":1,"821":1,"822":1,"850":1,"851":1,"852":1,"853":1,"854":1,"855":1,"885":1,"886":1,"887":1,"888":1,"889":1,"919":1,"920":1,"921":1,"922":1,"923":1,"953":1,"954":1,"955":1,"956":1,"957":1,"987":1,"988":1,"989":1,"990":1,"991":1,"1021":1,"1022":1,"1023":1,"1024":1,"1025":1,"1055":1,"1056":1,"1057":1,"1058":1,"1059":1,"1089":1,"1090":1,"1091":1,"1092":1,"1093":1,"1124":1,"1127":1,"1130":1,"1132":1,"1133":1,"1134":1,"1135":1,"1137":1,"1138":1,"1142":1,"1145":1,"1146":1,"1177":3,"1198":1,"1214":1,"1215":1,"1216":1,"1217":1,"1225":1,"1227":1,"1228":1,"1235":1,"1236":1,"1240":1,"1242":1,"1253":1,"1276":1,"1294":1,"1316":1,"1320":1,"1326":1,"1328":1,"1332":21,"1346":1,"1376":1,"1379":3,"1387":1,"1390":1,"1391":1,"1392":1,"1393":2,"1394":1,"1395":1,"1396":1,"1397":1,"1398":1,"1400":1,"1401":1,"1402":1,"1403":2,"1404":1,"1405":1,"1406":1,"1414":1,"1415":2,"1416":1,"1431":1,"1435":2,"1457":1,"1458":1,"1459":1,"1492":1,"1495":1,"1496":1,"1500":2,"1501":1,"1503":1,"1504":1,"1513":1,"1518":1,"1524":1,"1530":2,"1547":1,"1553":1,"1554":1,"1555":1,"1557":1,"1558":1,"1559":1,"1568":1,"1570":1,"1572":1,"1575":1,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"1591":1,"1636":1,"1637":1,"1638":1,"1675":1,"1677":2,"1682":1,"1683":1,"1684":1,"1685":1,"1714":1,"1715":2,"1725":4,"1728":1,"1789":1,"1790":1,"1792":2,"1794":1,"1803":1,"1804":1,"1805":1,"1806":1,"1807":1,"1817":1,"1830":1,"1855":1,"1856":1,"1857":1,"1866":1,"1867":1,"1868":1,"1870":2,"1872":2,"1884":1,"1887":2,"1888":1,"1899":1,"1904":1,"1905":1,"1906":1,"1907":1,"1908":1,"1913":1,"1914":2,"1920":1,"1932":1,"1946":4,"1949":1,"1950":1,"1958":2,"1959":1,"2032":1,"2035":1,"2041":1,"2042":1,"2044":2,"2045":1,"2046":1,"2059":2,"2060":1,"2074":1,"2106":1,"2109":1,"2124":2,"2125":2,"2126":1,"2127":2,"2128":1,"2129":1,"2145":1,"2153":1,"2154":1,"2155":3,"2157":1,"2161":1,"2171":1,"2174":3,"2179":1,"2180":1,"2182":1,"2183":1,"2231":2,"2238":2,"2259":2,"2260":1,"2261":7,"2263":5,"2296":1,"2299":23,"2402":1,"2421":3,"2435":1,"2437":1,"2438":1,"2443":1,"2444":1,"2445":1,"2490":1,"2491":1,"2524":1,"2530":1,"2533":1,"2539":1,"2541":1,"2544":1,"2561":2,"2562":1,"2566":4,"2572":1,"2574":1,"2576":10,"2577":2,"2584":1,"2607":1,"2671":1,"2697":4,"2703":3,"2704":1,"2705":1,"2706":2,"2708":2,"2725":1,"2727":2,"2728":3,"2735":2,"2736":2,"2737":2,"2738":4}}],["connector",{"2":{"2118":1,"2339":1}}],["connects",{"0":{"1551":1},"2":{"1547":1,"2311":1}}],["connectivity",{"2":{"2513":1,"2516":1}}],["connecting",{"0":{"334":1},"2":{"334":1,"852":1,"1023":1,"1057":1,"1236":1,"2118":1,"2272":2,"2328":1,"2432":1}}],["connection",{"2":{"92":1,"511":1,"515":1,"1121":1,"1122":1,"1126":1,"1491":1,"1819":3,"2059":2,"2114":1,"2118":2,"2128":4,"2131":1,"2132":1,"2270":1,"2398":2,"2411":2,"2490":1,"2516":1,"2517":1,"2697":3}}],["connected",{"2":{"92":1,"149":1,"182":1,"249":1,"502":1,"506":1,"644":2,"656":1,"661":1,"666":3,"674":1,"680":1,"731":1,"734":1,"757":1,"758":1,"760":1,"786":1,"787":1,"790":1,"818":1,"819":1,"824":1,"850":1,"851":1,"857":1,"885":1,"886":1,"891":1,"919":1,"920":1,"925":1,"953":1,"954":1,"959":1,"987":1,"988":1,"993":1,"1021":1,"1022":1,"1027":1,"1055":1,"1056":1,"1061":1,"1089":1,"1090":1,"1095":1,"1129":2,"1145":1,"1146":1,"1148":1,"1176":1,"1214":1,"1223":1,"1236":1,"1378":1,"1387":1,"1388":1,"1399":3,"1458":1,"1459":1,"1471":2,"1492":1,"1551":1,"1573":2,"1574":1,"1591":4,"1730":1,"1819":1,"1855":3,"1856":1,"1863":3,"1867":2,"1869":3,"1870":4,"1954":1,"2032":6,"2061":1,"2114":1,"2120":1,"2125":1,"2127":3,"2128":2,"2131":1,"2141":3,"2237":1,"2268":1,"2311":4,"2353":1,"2450":1,"2453":1,"2518":1,"2521":1,"2526":1,"2529":2,"2534":1,"2557":1,"2558":1,"2559":1,"2675":2,"2676":2,"2677":2,"2682":1,"2684":2,"2685":5,"2689":3,"2692":2,"2693":4,"2697":1,"2700":1}}],["connect",{"0":{"1552":1},"2":{"82":1,"92":1,"375":2,"702":1,"1176":1,"1197":1,"1234":1,"1236":1,"1491":1,"1547":1,"1552":1,"2116":1,"2119":1,"2120":1,"2273":1,"2274":1,"2275":2,"2279":1,"2328":1,"2330":1,"2332":1,"2334":1,"2339":1,"2352":1,"2353":1}}],["cons",{"2":{"2181":1,"2270":1}}],["consecutive",{"2":{"1860":5,"2172":1}}],["consequence",{"2":{"1336":1,"1441":1,"1499":1}}],["consequently",{"2":{"598":1}}],["consult",{"2":{"327":1,"641":1,"656":1,"689":1,"697":1,"2567":1}}],["consulted",{"2":{"157":1}}],["consuming",{"2":{"2428":1}}],["consumes",{"2":{"1821":1}}],["consume",{"2":{"1287":1,"1326":1}}],["consumed",{"2":{"529":1}}],["consumer",{"2":{"231":1,"236":1,"1273":1,"1279":1,"2136":1,"2393":1}}],["consumer2rn42",{"2":{"50":1}}],["consumer2bluefruit",{"2":{"50":1}}],["consumption",{"2":{"134":1,"211":1,"502":1,"589":1,"2299":3}}],["consist",{"2":{"2148":1}}],["consisting",{"2":{"1356":1,"2294":1}}],["consists",{"2":{"304":1,"413":1,"2301":1,"2686":1}}],["consistency",{"2":{"50":1,"114":2,"160":1,"183":1,"233":1,"453":1,"462":1,"470":1,"557":1,"564":1,"2564":2}}],["consistently",{"2":{"94":1,"176":2,"190":1,"191":1,"1216":1}}],["consistent",{"2":{"49":1,"191":1,"199":1,"453":1,"502":1,"597":1,"615":1,"2576":1,"2674":1}}],["considers",{"2":{"2735":1}}],["considering",{"2":{"1503":1,"2596":1}}],["considerations",{"0":{"1287":1,"2118":1,"2132":1},"1":{"2133":1},"2":{"2515":1}}],["considerably",{"2":{"113":1}}],["consider",{"0":{"354":1},"2":{"354":1,"391":1,"481":1,"554":1,"560":1,"1330":1,"1527":1,"2276":1,"2277":1,"2305":1,"2523":1,"2524":1,"2525":1,"2551":1,"2552":1,"2709":1}}],["considered",{"2":{"241":1,"253":1,"270":1,"350":2,"510":1,"600":1,"1325":1,"1326":1,"1506":1,"1630":1,"1857":3,"1865":2,"1915":1,"2228":1,"2295":1,"2569":1,"2577":1,"2592":1,"2596":1,"2735":1,"2736":1}}],["construction",{"2":{"2576":2}}],["constructed",{"2":{"1923":1}}],["constraint",{"2":{"2718":1}}],["constraints",{"0":{"2718":1},"2":{"123":1,"134":1,"153":1,"660":1,"1227":1,"2182":1,"2701":1,"2718":2,"2719":1}}],["constraining",{"2":{"1340":1}}],["constrain",{"2":{"176":1,"374":1,"1441":1,"1870":3}}],["constrained",{"2":{"123":1,"2585":1,"2592":1,"2701":1}}],["const",{"0":{"1188":1,"1206":1,"1607":1,"1609":1,"1613":1,"2081":1,"2083":1,"2085":1,"2087":1,"2201":1},"1":{"1189":1,"1190":1,"1207":1,"1608":1,"1610":1,"1614":1,"2082":1,"2084":1,"2086":1,"2088":1,"2202":1},"2":{"247":1,"272":1,"530":1,"1189":1,"1207":1,"1359":2,"1440":1,"1447":1,"1448":2,"1508":1,"1509":1,"1510":1,"1511":6,"1523":1,"1548":1,"1559":1,"1608":1,"1610":1,"1614":1,"1657":1,"1663":1,"1665":6,"1666":3,"1668":1,"1792":1,"1814":1,"1815":1,"1822":13,"2040":7,"2042":6,"2044":3,"2082":1,"2084":1,"2086":1,"2088":1,"2130":5,"2138":1,"2139":1,"2143":10,"2157":1,"2164":1,"2181":1,"2202":1,"2401":1,"2406":1,"2577":7}}],["constantly",{"2":{"2147":1}}],["constant",{"0":{"1805":1},"2":{"191":1,"198":1,"460":1,"1363":1,"1411":1,"1499":1,"1802":3,"1803":2,"1805":2,"1806":1,"1807":1,"2587":2,"2594":2,"2728":1}}],["constants",{"0":{"317":1},"2":{"76":1,"188":1,"191":1,"317":10,"641":1,"1336":1,"1499":1,"1677":1,"2738":1}}],["constellation",{"2":{"102":3,"114":1,"211":1}}],["consoles",{"2":{"82":1,"375":1}}],["console",{"0":{"82":1,"375":1,"1255":1},"2":{"50":1,"70":1,"82":2,"93":1,"111":1,"114":4,"119":2,"134":3,"249":1,"277":1,"375":9,"515":2,"516":1,"566":1,"1138":1,"1245":1,"1248":1,"1252":2,"1254":2,"1255":2,"1287":1,"1298":1,"1341":2,"1448":1,"1498":1,"1529":1,"1530":7,"1830":1,"1864":1,"1884":1,"2263":1,"2574":2,"2755":1}}],["consolidating",{"2":{"251":1}}],["consolidation",{"0":{"42":1,"221":1},"2":{"50":2,"198":1,"224":1,"233":1,"266":1,"2567":1}}],["consolidated",{"0":{"1385":1},"2":{"220":1}}],["consolidate",{"0":{"204":1},"2":{"191":1,"199":1,"204":1,"211":1,"222":1,"236":1,"249":1,"1385":1}}],["consolidates",{"2":{"50":1}}],["contiguous",{"2":{"2060":1}}],["continous",{"2":{"1572":2}}],["continually",{"2":{"1287":1}}],["continuations",{"2":{"199":1}}],["continuing",{"2":{"347":1}}],["continued",{"2":{"238":1,"262":1}}],["continues",{"2":{"133":1,"251":1,"1503":1,"1506":1,"1872":1,"2152":1,"2474":1,"2701":1}}],["continue",{"2":{"64":1,"160":1,"240":1,"246":1,"354":1,"1359":1,"1506":2,"1779":1,"1785":1,"1808":1,"2024":1,"2030":1,"2107":1,"2183":1,"2437":1,"2474":2,"2566":1}}],["continuously",{"2":{"1876":1}}],["continuous",{"0":{"1580":1},"2":{"32":1,"1572":4,"1580":1,"1872":1,"2051":2}}],["cont",{"2":{"1572":1}}],["contoller",{"2":{"1126":1}}],["contacts",{"2":{"1326":1,"2274":1,"2279":1,"2311":1}}],["contact",{"0":{"1325":2},"1":{"1326":2,"1327":2,"1328":2,"1329":2,"1330":2},"2":{"537":1,"1325":5,"1537":4,"1545":1,"1546":2,"1872":1,"2272":1,"2273":3,"2311":1}}],["contained",{"2":{"428":1,"609":1,"1729":1,"1952":1,"2671":1}}],["container",{"2":{"211":1,"627":1,"628":1,"2252":1,"2437":1,"2440":1,"2589":1,"2597":1}}],["contains",{"2":{"374":3,"496":2,"498":1,"500":1,"573":1,"671":1,"736":1,"762":1,"792":1,"826":1,"859":1,"893":1,"927":1,"961":1,"995":1,"1029":1,"1063":1,"1097":1,"1150":1,"1210":1,"1212":1,"1284":4,"1346":3,"1536":1,"1641":1,"1655":1,"1870":1,"2031":1,"2148":1,"2152":1,"2272":1,"2298":1,"2347":1,"2441":1,"2480":1,"2491":1,"2566":1,"2585":2,"2588":1,"2589":1,"2590":2,"2592":2,"2597":1,"2599":1,"2615":3,"2671":2,"2686":2,"2688":1,"2695":1}}],["contain",{"2":{"236":1,"268":1,"485":1,"522":1,"529":3,"641":1,"661":1,"1346":1,"1493":1,"1573":1,"1697":1,"1923":1,"2181":1,"2297":1,"2438":1,"2556":1,"2564":2,"2589":1,"2754":1}}],["containing",{"0":{"361":1},"2":{"156":1,"191":2,"211":1,"265":1,"316":1,"416":1,"505":1,"1612":1,"1614":1,"1642":1,"1921":1,"1922":1,"1923":1,"2170":1,"2201":1,"2319":1,"2423":1,"2448":1,"2566":1,"2567":1,"2585":1,"2592":1,"2599":1,"2711":1,"2753":1}}],["context",{"2":{"597":1,"1121":1,"1668":1,"1670":4,"2355":2,"2392":1,"2404":1}}],["contexts",{"2":{"481":1}}],["content",{"0":{"2282":1},"1":{"2283":1},"2":{"149":1,"266":1,"295":1,"296":1,"297":1,"298":1,"299":5,"300":1,"314":1,"335":1,"684":1,"1254":1,"1385":1,"1814":1,"1816":2,"1908":1,"2140":2,"2282":1,"2435":1,"2437":1,"2474":1,"2508":1,"2584":2}}],["contents",{"2":{"50":1,"230":1,"554":2,"616":1,"617":2,"1680":1,"1822":3,"2042":1,"2059":1,"2143":1,"2349":1,"2406":1,"2474":1,"2564":1,"2576":2,"2587":1,"2594":1,"2595":1,"2615":2}}],["contrast",{"2":{"1678":1,"2036":1,"2136":1,"2141":2}}],["control+click",{"2":{"2508":1}}],["control+shift",{"2":{"1677":1,"2738":1}}],["control+shift+escape",{"2":{"1568":1}}],["control+a",{"2":{"1361":1}}],["control+alt+delete",{"2":{"1299":1}}],["control+right",{"2":{"626":1}}],["controls",{"0":{"1665":1},"2":{"515":1,"630":1,"667":1,"822":1,"855":1,"889":1,"923":1,"957":1,"991":1,"1025":1,"1059":1,"1093":1,"1136":1,"1312":1,"1416":1,"1457":1,"1459":1,"1518":3,"1634":1,"1715":5,"1900":1,"1949":2,"2128":1,"2423":1,"2574":2,"2577":1,"2635":1}}],["controllable",{"2":{"430":1,"1459":1}}],["controlling",{"2":{"166":1,"664":1,"755":1,"784":1,"816":1,"848":1,"883":1,"917":1,"951":1,"985":1,"1019":1,"1053":1,"1087":1,"1143":1,"1670":1,"1671":1,"1888":1}}],["controlled",{"2":{"45":1,"589":1,"601":1,"1574":1,"1675":1,"1872":1,"1951":1,"2063":1,"2490":1,"2577":4}}],["controllerwords",{"2":{"191":1}}],["controllerworks",{"2":{"191":1}}],["controllers",{"2":{"50":1,"134":1,"211":1,"506":1,"661":1,"1126":1,"1310":1,"1315":1,"1322":1,"1788":1,"1821":1,"1858":1,"2032":1,"2042":1,"2114":2,"2116":1,"2118":2,"2126":5,"2131":1,"2275":1,"2545":1}}],["controller",{"0":{"1903":1,"2275":1},"1":{"2276":1},"2":{"36":2,"50":1,"92":1,"93":1,"114":1,"134":1,"176":2,"204":1,"210":1,"211":2,"222":2,"659":1,"1128":1,"1234":1,"1238":1,"1331":1,"1378":1,"1403":1,"1554":1,"1634":1,"1791":1,"1817":1,"1820":1,"1828":2,"1859":1,"1862":1,"1870":1,"1902":1,"1903":1,"2118":1,"2124":2,"2125":1,"2126":6,"2131":2,"2134":1,"2175":1,"2249":1,"2268":1,"2269":2,"2271":1,"2275":1,"2276":5,"2278":1,"2280":1,"2311":2,"2330":1,"2332":1,"2334":1,"2427":2,"2514":1,"2518":2,"2521":2,"2576":2,"2577":1,"2700":1,"2701":1,"2709":1}}],["control",{"0":{"265":1,"275":1,"667":1,"695":1,"749":1,"751":1,"754":1,"776":1,"778":1,"782":1,"808":1,"810":1,"814":1,"822":1,"855":1,"875":1,"877":1,"881":1,"889":1,"909":1,"911":1,"915":1,"923":1,"943":1,"945":1,"949":1,"957":1,"977":1,"979":1,"983":1,"991":1,"1025":1,"1059":1,"1093":1,"1166":1,"1168":1,"1172":1,"1291":1,"1791":1,"1808":1,"1893":1,"1894":1,"1896":1,"1899":1,"1911":1},"1":{"696":1,"697":1,"698":1,"750":1,"752":1,"777":1,"779":1,"783":1,"809":1,"811":1,"815":1,"876":1,"878":1,"882":1,"910":1,"912":1,"916":1,"944":1,"946":1,"950":1,"978":1,"980":1,"984":1,"1167":1,"1169":1,"1173":1,"1894":1,"1895":1,"1896":1,"1897":2,"1898":2,"1899":1},"2":{"63":1,"114":1,"149":1,"195":1,"199":2,"231":1,"236":3,"249":1,"265":1,"268":1,"275":1,"277":1,"430":1,"431":1,"435":2,"466":1,"514":1,"515":2,"566":1,"610":1,"626":2,"630":1,"666":1,"695":2,"696":1,"749":2,"751":2,"754":1,"776":2,"778":2,"782":1,"808":2,"810":2,"814":1,"818":1,"821":1,"850":1,"854":1,"875":2,"877":2,"881":1,"885":1,"888":1,"909":2,"911":2,"915":1,"919":1,"922":1,"943":2,"945":2,"949":1,"953":1,"956":1,"977":2,"979":2,"983":1,"987":1,"990":1,"1021":1,"1024":1,"1055":1,"1058":1,"1089":1,"1092":1,"1166":2,"1168":2,"1172":1,"1195":1,"1212":1,"1230":1,"1234":1,"1239":1,"1291":2,"1299":7,"1300":3,"1332":1,"1356":1,"1361":2,"1370":1,"1377":1,"1385":1,"1399":4,"1404":1,"1411":1,"1416":1,"1423":1,"1454":1,"1459":1,"1464":1,"1498":1,"1568":1,"1582":1,"1665":1,"1716":1,"1723":1,"1791":1,"1808":2,"1853":1,"1857":1,"1888":1,"1893":1,"1897":1,"1899":1,"1912":1,"1944":1,"1954":3,"2031":2,"2035":2,"2040":1,"2062":1,"2063":1,"2102":1,"2103":4,"2104":2,"2150":1,"2161":1,"2169":1,"2170":1,"2171":1,"2183":1,"2226":2,"2263":2,"2272":1,"2290":1,"2305":1,"2348":1,"2355":7,"2356":1,"2370":17,"2373":9,"2374":9,"2382":2,"2390":2,"2393":4,"2396":17,"2410":15,"2411":2,"2450":1,"2490":1,"2556":1,"2572":1,"2652":1,"2676":1,"2699":1,"2702":2,"2706":1,"2727":1,"2735":1,"2736":1,"2737":1,"2738":1}}],["contributor",{"2":{"2617":1}}],["contributors",{"2":{"163":1,"550":2,"2566":1}}],["contribution",{"0":{"554":1},"2":{"550":1,"554":1,"2552":1}}],["contributions",{"2":{"550":1,"554":1,"556":1}}],["contributing",{"2":{"354":1,"557":1,"2255":1,"2472":2,"2568":1}}],["contribute",{"0":{"550":1},"1":{"551":1},"2":{"284":1,"374":1,"429":1,"483":1,"550":1,"552":1,"556":1,"2183":1,"2292":1,"2326":2}}],["contributed",{"2":{"123":1,"2160":1,"2303":1}}],["contrib",{"0":{"10":1,"359":1,"361":1},"2":{"10":2,"69":1,"108":1,"114":2,"134":2,"160":1,"163":1,"176":4,"191":2,"199":1,"222":1,"249":1,"349":1,"357":1,"359":2,"360":1,"495":1,"2255":1,"2546":3,"2549":1,"2552":2}}],["convenience",{"2":{"2075":1,"2410":1,"2577":1}}],["convenient",{"2":{"1503":1,"1721":1,"1872":1,"1932":1,"2492":1,"2503":1}}],["conveniently",{"2":{"1451":1}}],["convention",{"2":{"249":1,"532":1,"1326":5,"2479":1,"2535":1,"2565":1}}],["conventions",{"0":{"4":1,"453":1,"455":1,"555":1},"2":{"134":2,"243":1,"352":1,"454":1,"550":1,"555":2,"557":1,"560":1,"1326":2,"2510":1,"2725":2}}],["convey",{"2":{"188":1,"435":1}}],["conversation",{"2":{"485":1,"609":1}}],["conversions",{"2":{"65":1,"77":1,"189":1,"266":25,"1314":1}}],["conversion",{"0":{"1823":1,"2530":1},"2":{"49":1,"172":1,"211":3,"636":1,"657":1,"658":1,"1217":1}}],["converts",{"2":{"167":1,"408":1,"409":1,"410":1,"1959":1,"2575":3,"2615":1}}],["converters",{"0":{"172":1,"189":1,"1310":1,"1311":1},"1":{"1311":1,"1312":1,"1313":1,"1314":1,"1315":1,"1316":1,"1317":1,"1318":1,"1319":1,"1320":1,"1321":1,"1322":1,"1323":1,"1324":1},"2":{"160":2,"172":1,"176":2,"189":4,"191":2,"199":1,"1311":1,"2427":1}}],["converter",{"0":{"271":1},"2":{"114":1,"133":1,"134":1,"160":2,"176":4,"181":2,"189":2,"191":3,"199":3,"207":3,"211":1,"249":1,"271":1,"277":1,"630":1,"1312":1,"1313":1,"1315":1,"1316":1,"1317":1,"1322":1,"1570":1,"1589":1,"2576":1,"2615":1,"2617":1}}],["converted",{"2":{"22":1,"50":1,"201":1,"249":1,"384":1,"388":1,"611":1,"1332":1,"1492":1,"2440":1,"2566":1,"2575":1,"2620":1}}],["convert",{"0":{"408":1,"410":1},"2":{"93":1,"114":1,"134":1,"149":4,"153":1,"160":3,"172":1,"176":1,"211":2,"236":3,"266":3,"277":2,"405":1,"1217":1,"1312":4,"1313":2,"1315":39,"1316":1,"1322":15,"1336":1,"2076":1,"2530":2,"2573":1,"2575":4,"2577":2,"2615":2,"2707":1}}],["converting",{"0":{"21":1},"2":{"153":1,"189":1,"251":1,"409":1,"1310":1,"1453":1,"2575":2}}],["com4",{"2":{"2513":1}}],["comx",{"2":{"2347":1}}],["com>",{"2":{"2309":4}}],["comfortably",{"2":{"1684":1}}],["comfortable",{"2":{"613":1,"1929":1,"2169":1,"2255":1,"2727":1}}],["comformable",{"2":{"606":1}}],["coming",{"2":{"228":1,"1234":4,"1518":1,"1831":1,"2311":1}}],["come",{"2":{"479":1,"1294":1,"2031":1,"2152":1,"2178":1,"2240":1,"2242":1,"2243":1,"2272":1,"2320":1}}],["comet46",{"2":{"143":2,"149":1,"176":1}}],["comes",{"2":{"99":1,"233":1,"435":1,"458":1,"623":1,"1392":1,"1412":1,"1578":1,"1672":1,"2130":1,"2230":1,"2235":1,"2279":1,"2429":1,"2457":1,"2496":1,"2577":1}}],["comb",{"2":{"231":1,"1527":5}}],["combination",{"2":{"483":1,"484":1,"502":1,"606":1,"626":1,"639":2,"1336":1,"1501":3,"1508":1,"1529":1,"1530":1,"1559":1,"1655":1,"1659":1,"1670":2,"1676":1,"1870":1,"2502":1}}],["combinations",{"2":{"99":1,"656":1,"698":1,"1312":1,"1568":1,"1655":2,"1676":1,"1811":1,"1932":1,"1939":1,"2228":1,"2262":1,"2410":1,"2490":1}}],["combining",{"2":{"176":1,"516":1,"1300":1,"1431":1,"2231":1,"2238":1,"2711":1}}],["combines",{"2":{"1429":1,"1515":1}}],["combinedmap",{"2":{"2153":1}}],["combined",{"0":{"1806":1,"1883":1},"2":{"176":1,"496":1,"516":3,"1335":1,"1553":1,"1802":1,"1806":3,"1807":1,"1873":2,"1875":9,"1883":2,"1885":1,"1929":1,"2031":1,"2153":2,"2270":1,"2344":1,"2349":1,"2671":2}}],["combinedkeys",{"2":{"114":1}}],["combine",{"2":{"64":1,"249":1,"424":1,"459":1,"606":1,"1299":1,"1361":1,"1875":2,"1883":1,"1912":1,"2042":1,"2410":1}}],["combo\`",{"2":{"1519":1}}],["combo2",{"2":{"1508":2,"1509":1,"1510":2}}],["combo1",{"2":{"1508":2,"1509":1,"1510":2}}],["combos",{"0":{"1508":1,"1510":1,"1516":1,"1524":1,"1676":1},"1":{"1509":1,"1510":1,"1511":1,"1512":1,"1513":1,"1514":1,"1515":1,"1516":1,"1517":1,"1518":1,"1519":1,"1520":1,"1521":1,"1522":1,"1523":1,"1524":1,"1525":2,"1526":1,"1527":1},"2":{"46":1,"98":3,"114":2,"176":1,"211":1,"505":2,"1508":1,"1509":1,"1510":3,"1511":5,"1514":2,"1515":10,"1516":1,"1517":1,"1518":5,"1519":3,"1520":1,"1521":2,"1522":1,"1523":2,"1524":3,"1527":6,"1676":3,"1678":1,"1824":1,"2724":1}}],["combo",{"0":{"98":1,"1514":1,"1518":1,"1519":1,"1520":1,"1521":1,"1522":1,"1525":1,"2681":1},"1":{"1521":1,"1522":1},"2":{"46":7,"98":3,"112":2,"114":1,"149":2,"160":1,"188":1,"191":1,"199":2,"203":1,"211":3,"222":1,"505":20,"515":2,"1500":1,"1508":9,"1509":3,"1510":6,"1511":36,"1512":7,"1514":2,"1515":5,"1516":7,"1517":1,"1518":63,"1519":12,"1520":1,"1521":2,"1522":1,"1523":19,"1524":1,"1525":16,"1526":9,"1527":7,"2263":1,"2446":1,"2566":1,"2575":2,"2681":3,"2749":1}}],["compensating",{"2":{"1915":1}}],["compensated",{"2":{"2569":1}}],["compensate",{"2":{"1326":1,"1406":1,"1915":4}}],["comprising",{"2":{"2496":1,"2686":1,"2696":1}}],["comprise",{"2":{"2423":1}}],["comprises",{"2":{"334":1}}],["compression",{"2":{"2255":1,"2585":1,"2587":3,"2592":1,"2596":4}}],["compressing",{"2":{"2255":2}}],["comprehensions",{"0":{"471":1},"2":{"471":1,"472":1}}],["comprehensive",{"2":{"446":1,"483":1}}],["composite",{"2":{"1902":1}}],["composed",{"2":{"1515":1}}],["compose",{"2":{"222":1,"1300":1,"1714":1,"1715":2,"1717":1,"2685":2}}],["component",{"2":{"1533":2,"2597":3,"2694":1,"2695":1,"2751":1}}],["components",{"2":{"130":1,"1216":1,"1236":1,"2272":1,"2567":1}}],["computationally",{"2":{"1329":1}}],["computed",{"2":{"2225":1}}],["compute",{"2":{"191":1,"2225":1}}],["computers",{"0":{"2312":1},"1":{"2313":1,"2314":1,"2315":1,"2316":1,"2317":1,"2318":1,"2319":1,"2320":1}}],["computer",{"2":{"62":1,"541":1,"567":1,"627":1,"1292":1,"1355":1,"1356":1,"1359":1,"1366":1,"1367":1,"1406":1,"1436":3,"1530":1,"1655":1,"1677":1,"1719":1,"1806":1,"1807":1,"1830":1,"1876":2,"1918":1,"1949":1,"2125":1,"2255":4,"2263":1,"2322":1,"2355":2,"2393":2,"2398":1,"2411":1,"2417":4,"2428":1,"2435":1,"2477":1,"2479":1,"2490":2,"2611":1,"2633":1,"2666":1,"2669":1,"2737":1,"2738":1,"2743":1,"2748":1,"2754":1}}],["computing",{"2":{"143":9,"149":1,"181":2,"270":2,"277":1}}],["companies",{"2":{"2622":1}}],["companying",{"2":{"1519":1}}],["company",{"0":{"42":1},"2":{"43":1}}],["compact",{"2":{"479":1,"624":1,"1340":1,"2410":1}}],["comparing",{"2":{"2147":1,"2748":1}}],["comparisons",{"2":{"211":1}}],["comparison",{"0":{"2730":1},"1":{"2731":1,"2732":1,"2733":1},"2":{"190":1,"191":2,"248":1}}],["compares",{"2":{"1874":1,"2748":1}}],["compared",{"2":{"1863":1,"2454":1,"2566":1,"2736":1}}],["compare",{"2":{"51":1,"349":1,"2479":1,"2730":1}}],["compatible",{"0":{"486":1},"1":{"487":1,"488":1,"489":1,"490":1,"491":1,"492":1,"493":1,"494":1,"495":1},"2":{"132":3,"134":1,"149":1,"172":1,"199":1,"304":1,"322":1,"486":1,"495":1,"519":2,"1212":1,"1247":1,"1314":1,"1315":1,"1380":1,"1557":1,"1811":1,"1862":1,"2114":2,"2116":1,"2126":4,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":1,"2247":1,"2249":1,"2266":1,"2350":1,"2427":1,"2519":1,"2529":1,"2544":3,"2545":1,"2548":2,"2553":2,"2564":1,"2576":10,"2673":1,"2709":1,"2725":1}}],["compatiblitly",{"2":{"75":1}}],["compatibility",{"0":{"1295":1,"1296":1,"1314":1,"2115":1},"1":{"1297":1},"2":{"31":1,"34":1,"98":1,"114":1,"176":1,"249":1,"262":1,"273":1,"276":1,"455":1,"457":1,"516":1,"660":1,"1312":1,"1314":4,"1463":1,"2107":1,"2183":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2245":1,"2247":1,"2249":1,"2546":1,"2548":1,"2564":1,"2566":2}}],["compilable",{"2":{"2295":6}}],["compilation",{"0":{"132":1,"401":1},"2":{"36":1,"88":2,"104":2,"114":2,"127":2,"132":3,"134":6,"149":4,"170":1,"176":6,"191":2,"199":2,"211":5,"222":5,"236":2,"249":1,"254":1,"266":1,"315":3,"370":3,"401":3,"479":1,"513":2,"522":1,"527":1,"542":1,"564":2,"2262":2,"2448":1,"2512":1,"2721":1}}],["compiling",{"0":{"2447":1},"2":{"58":1,"73":2,"92":1,"134":1,"312":2,"315":1,"363":1,"370":4,"396":1,"411":1,"512":1,"513":1,"524":1,"533":1,"539":1,"556":1,"1259":1,"1319":1,"1377":1,"1385":2,"1812":1,"2063":1,"2137":1,"2149":1,"2256":1,"2262":7,"2423":1,"2577":2}}],["compiledfirmware",{"2":{"371":1}}],["compiledb",{"2":{"132":1,"134":1}}],["compiled",{"2":{"50":1,"182":1,"211":2,"309":1,"371":1,"375":1,"513":1,"520":1,"530":1,"533":1,"1351":1,"1385":1,"2277":1,"2279":1,"2418":1,"2425":1,"2439":1,"2513":2,"2701":1,"2702":1,"2724":1,"2743":2,"2754":1}}],["compiles",{"2":{"49":1,"176":1,"199":1,"396":1,"556":1,"1381":1,"1385":1,"2262":1,"2425":1,"2753":1}}],["compile",{"0":{"307":1,"308":1,"309":1,"310":1,"314":1,"370":1,"396":1,"523":1,"524":1,"525":1,"542":1,"548":1,"2631":1},"2":{"24":1,"28":1,"36":2,"37":1,"43":1,"73":1,"114":8,"120":1,"132":2,"134":3,"149":1,"160":1,"176":2,"191":1,"199":3,"291":1,"304":4,"307":1,"311":1,"314":3,"315":1,"316":2,"318":1,"322":1,"360":1,"370":16,"371":1,"389":1,"390":1,"391":1,"396":2,"401":4,"414":8,"420":1,"421":1,"422":2,"424":5,"426":2,"437":2,"458":3,"504":1,"519":3,"522":4,"527":1,"529":1,"534":1,"542":1,"560":3,"1288":1,"1312":1,"1319":1,"1354":1,"1379":1,"1413":1,"1416":1,"1434":1,"1435":1,"1501":1,"2149":1,"2238":1,"2244":1,"2252":1,"2255":1,"2259":1,"2262":7,"2277":3,"2346":1,"2356":1,"2425":3,"2428":1,"2437":1,"2441":1,"2445":1,"2447":3,"2454":1,"2456":1,"2469":2,"2494":1,"2508":1,"2512":2,"2513":1,"2522":1,"2553":1,"2572":2,"2647":2,"2671":1,"2723":1,"2756":1}}],["compiler",{"0":{"303":1,"527":1},"2":{"21":1,"73":1,"149":1,"191":1,"199":1,"303":1,"305":1,"320":1,"523":1,"526":2,"527":1,"1359":1,"1383":1,"2300":1,"2428":1,"2752":1,"2754":1}}],["comply",{"2":{"522":1,"2310":1}}],["complicated",{"2":{"481":1,"1331":2,"1336":1,"1382":1,"1405":1,"1511":1,"2161":1,"2268":1,"2408":1,"2411":1,"2450":1}}],["compliance",{"2":{"222":1,"263":1}}],["compliant",{"2":{"24":1}}],["compliation",{"2":{"114":1}}],["complaints",{"2":{"154":1}}],["complements",{"2":{"1934":1}}],["complementary",{"2":{"93":1,"249":1,"661":2,"1230":4}}],["completing",{"2":{"2273":1,"2279":1}}],["completion",{"0":{"448":1},"1":{"449":1,"450":1,"451":1,"452":1},"2":{"448":1,"449":1,"451":1,"698":1,"2492":1,"2503":1}}],["completes",{"2":{"1686":1,"2311":1,"2729":1,"2748":1}}],["completed",{"2":{"522":1,"525":1,"1215":1,"1310":1,"2255":2,"2273":1,"2438":1,"2448":1,"2460":1,"2513":1,"2526":1,"2641":1,"2721":1}}],["complete",{"0":{"127":1},"2":{"70":1,"126":1,"236":2,"263":1,"282":3,"305":1,"315":2,"341":1,"448":1,"450":1,"451":3,"452":2,"613":1,"624":1,"688":1,"1134":1,"1137":1,"1177":1,"1265":1,"1405":1,"1447":1,"1678":1,"1682":1,"2171":1,"2197":1,"2221":1,"2273":1,"2275":1,"2353":1,"2424":1,"2425":1,"2442":1,"2473":1,"2498":1,"2502":1,"2555":1,"2564":1,"2566":1,"2687":1}}],["completely",{"2":{"49":1,"195":2,"262":1,"266":1,"505":1,"1335":1,"1398":1,"1403":1,"1435":1,"1522":1,"1553":1,"1655":2,"1668":1,"2267":1,"2273":1,"2347":1,"2402":1,"2424":1,"2466":1}}],["complex",{"0":{"464":1,"1269":1,"2165":1},"1":{"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1},"2":{"134":1,"471":1,"567":1,"612":1,"1332":1,"1364":1,"1508":1,"1549":1,"1670":1,"1729":5,"1918":1,"1952":5,"2165":1,"2268":1}}],["complexity",{"2":{"3":1,"15":1,"153":1,"211":1,"471":1,"2573":1}}],["commercial",{"2":{"2244":1,"2546":1,"2566":2}}],["commenting",{"2":{"355":1}}],["commented",{"2":{"199":1,"2566":2}}],["comment",{"2":{"92":1,"149":2,"191":2,"356":1,"367":1,"453":1,"455":1,"2566":1}}],["comments",{"2":{"77":1,"114":1,"176":1,"211":1,"355":1,"446":1,"453":2,"455":2,"562":1,"1553":1,"1554":1,"1794":1,"2566":2}}],["comm",{"2":{"313":1,"530":2,"1499":1,"2355":1,"2388":1,"2407":1}}],["committee",{"2":{"2545":1}}],["committed",{"2":{"2255":1,"2439":1,"2475":1,"2480":1}}],["committing",{"2":{"556":1,"2568":1}}],["commits",{"2":{"560":1,"2474":5,"2475":1,"2477":2,"2480":1,"2506":1}}],["commit",{"0":{"2434":1,"2438":1,"2478":1},"1":{"2435":1,"2436":1,"2437":1,"2438":1,"2439":1,"2479":1,"2480":1,"2481":1},"2":{"199":1,"347":1,"349":4,"360":1,"520":1,"529":3,"530":2,"554":1,"556":2,"2255":2,"2428":1,"2430":1,"2431":1,"2433":1,"2438":3,"2439":1,"2440":1,"2446":1,"2472":1,"2473":1,"2474":9,"2475":1,"2478":1,"2480":5,"2506":1,"2568":2}}],["comms",{"2":{"176":1,"191":2,"2573":1}}],["comma",{"2":{"467":1,"468":3,"612":2,"1441":1,"1584":1,"2130":1,"2169":1,"2179":1,"2355":2,"2388":1,"2394":1,"2423":1,"2508":1}}],["commas",{"2":{"160":1,"211":1,"2423":1,"2565":1}}],["command+option+escape",{"2":{"1568":1}}],["command+",{"2":{"286":1,"1567":1}}],["commands",{"0":{"368":1,"369":1,"392":1,"398":1,"2392":1,"2575":1},"1":{"370":1,"371":1,"372":1,"373":1,"374":1,"375":1,"376":1,"377":1,"378":1,"379":1,"380":1,"381":1,"382":1,"383":1,"384":1,"385":1,"386":1,"387":1,"388":1,"389":1,"390":1,"391":1,"393":1,"394":1,"395":1,"396":1,"397":1,"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1,"410":1,"411":1},"2":{"55":1,"93":1,"114":2,"132":2,"134":1,"149":1,"153":1,"158":1,"173":1,"199":1,"347":2,"349":1,"363":1,"396":1,"401":3,"407":2,"415":2,"440":1,"484":2,"502":1,"515":2,"1239":1,"1255":1,"1385":1,"1441":1,"1622":1,"1821":1,"1822":1,"2144":1,"2262":2,"2263":2,"2294":1,"2300":1,"2348":1,"2431":1,"2435":2,"2438":1,"2442":1,"2452":1,"2457":1,"2464":1,"2479":1,"2484":2,"2512":2,"2577":2}}],["command",{"0":{"82":1,"83":1,"173":1,"1501":1,"1528":1,"1622":2,"2305":1,"2454":1,"2484":1},"1":{"1529":1,"1530":1,"1623":2},"2":{"1":1,"10":2,"18":2,"65":1,"70":3,"82":1,"83":1,"93":1,"111":1,"114":1,"158":1,"160":1,"173":1,"176":1,"199":1,"211":2,"291":1,"292":2,"325":1,"331":3,"363":1,"366":1,"370":2,"371":3,"372":1,"373":1,"374":1,"375":1,"376":1,"378":1,"381":1,"382":1,"383":2,"384":1,"385":1,"386":2,"387":1,"388":1,"389":1,"390":1,"391":1,"393":1,"394":1,"395":1,"396":1,"397":1,"399":1,"400":2,"401":2,"402":2,"403":2,"404":1,"405":1,"406":1,"407":1,"408":2,"409":2,"410":2,"411":1,"414":2,"415":2,"416":1,"424":1,"430":1,"437":2,"454":1,"484":1,"502":1,"515":1,"530":1,"558":1,"626":2,"628":1,"703":1,"1238":2,"1245":1,"1248":1,"1271":1,"1288":2,"1312":1,"1348":1,"1381":1,"1385":2,"1498":2,"1500":1,"1501":7,"1528":3,"1529":3,"1530":6,"1622":2,"1623":2,"2105":3,"2126":1,"2141":1,"2154":1,"2183":1,"2230":2,"2233":1,"2235":2,"2236":1,"2237":1,"2240":1,"2242":1,"2243":1,"2244":1,"2252":1,"2255":2,"2262":7,"2263":1,"2305":4,"2347":2,"2348":1,"2353":3,"2355":2,"2390":2,"2410":2,"2421":1,"2422":1,"2425":1,"2427":1,"2438":1,"2441":1,"2445":2,"2446":1,"2447":1,"2451":2,"2454":3,"2457":1,"2468":5,"2469":1,"2474":2,"2479":2,"2480":1,"2484":1,"2492":1,"2494":1,"2503":1,"2508":1,"2512":4,"2566":1,"2575":5,"2636":1,"2702":1,"2753":1,"2757":2}}],["communicate",{"2":{"1176":1,"1239":1,"1918":1,"2117":1,"2233":1,"2351":1}}],["communicates",{"2":{"453":1,"2147":1}}],["communicated",{"0":{"2721":1},"2":{"352":1,"2720":1,"2721":1}}],["communicating",{"2":{"244":1,"1201":1,"1589":1,"1811":1,"1921":1,"2136":1,"2271":1}}],["communications",{"2":{"2128":1}}],["communication",{"0":{"2128":1},"2":{"30":1,"352":1,"508":1,"511":3,"1121":3,"1125":1,"1126":1,"1127":1,"1128":1,"1134":1,"1136":2,"1137":1,"1138":2,"1215":1,"1319":2,"1813":2,"1855":1,"1856":1,"1859":1,"1863":2,"1867":1,"1868":1,"1869":1,"1870":1,"1918":1,"2114":1,"2118":2,"2121":1,"2128":8,"2129":1,"2131":4,"2132":1,"2263":2,"2697":1}}],["community",{"0":{"1321":1,"1324":1,"2466":1,"2545":1},"2":{"70":2,"116":1,"160":1,"176":1,"199":1,"201":1,"211":25,"213":1,"236":3,"249":1,"266":2,"352":1,"370":1,"455":1,"559":1,"1265":4,"1321":1,"1324":1,"1346":4,"1349":1,"2160":1,"2292":1,"2322":3,"2326":1,"2466":1,"2482":1,"2545":1,"2566":3,"2569":1,"2672":1,"2686":2,"2713":1}}],["commonly",{"2":{"69":1,"187":1,"232":1,"467":1,"2031":1,"2047":1,"2118":1,"2169":1,"2268":1,"2664":1}}],["common",{"0":{"30":1,"32":1,"33":1,"80":1,"1725":1,"1863":1,"1872":1,"1946":1,"2269":1},"1":{"31":1,"34":1},"2":{"5":1,"8":1,"30":2,"32":1,"74":3,"75":1,"86":1,"92":1,"93":1,"94":3,"107":1,"113":1,"114":5,"133":4,"134":5,"149":2,"160":1,"176":2,"191":1,"199":2,"201":1,"204":1,"211":2,"222":1,"236":2,"248":1,"381":1,"502":1,"505":1,"515":1,"532":1,"569":1,"597":1,"654":1,"699":1,"1174":1,"1195":1,"1201":1,"1244":1,"1255":1,"1259":1,"1287":1,"1337":1,"1353":1,"1359":1,"1383":1,"1410":1,"1416":1,"1518":1,"1521":1,"1561":1,"1816":1,"1820":1,"1873":2,"1879":1,"1932":1,"1943":1,"2132":1,"2140":1,"2169":1,"2178":1,"2263":1,"2278":1,"2284":1,"2300":4,"2305":1,"2311":1,"2353":15,"2410":1,"2454":1,"2479":1,"2553":1,"2566":1,"2575":1,"2626":1,"2628":1,"2646":1,"2668":1,"2671":1,"2743":1,"2749":1,"2753":1}}],["com",{"2":{"2":1,"21":1,"196":1,"211":1,"236":1,"358":1,"359":2,"515":1,"541":1,"551":1,"554":1,"623":1,"624":5,"684":7,"685":1,"1242":2,"1274":1,"1275":2,"1279":2,"1281":3,"1283":1,"1298":1,"1511":2,"1680":1,"1820":10,"2040":1,"2234":1,"2252":1,"2255":3,"2303":1,"2347":1,"2351":1,"2438":3,"2443":1,"2444":1,"2477":8,"2479":5,"2513":2,"2566":3,"2715":1}}],["4bpp",{"2":{"2596":2}}],["4+i",{"2":{"2577":2}}],["4t",{"2":{"2111":1}}],["4=25",{"2":{"1822":1}}],["4×",{"2":{"1557":1}}],["49",{"2":{"1440":1,"1578":1,"1857":1}}],["470ω",{"2":{"1471":1}}],["47",{"2":{"1405":1,"1578":1}}],["479b",{"2":{"315":1}}],["43",{"2":{"1405":1,"1578":1,"1857":1}}],["432",{"2":{"1403":1}}],["4352",{"2":{"554":1}}],["44",{"2":{"1405":1,"1440":1,"1578":1,"1857":1}}],["440",{"2":{"1403":1,"1406":1}}],["44100u",{"2":{"659":1}}],["42",{"0":{"1281":1},"2":{"1281":1,"1396":1,"1405":1,"1440":1,"1491":5,"1578":1,"2148":1}}],["4226",{"2":{"49":1}}],["4kib",{"2":{"2039":1}}],["4k2",{"2":{"853":1,"887":1,"921":1}}],["4k",{"2":{"820":1,"821":2,"854":2,"888":2,"922":2,"956":2,"990":2,"1024":2,"1058":2,"1092":2}}],["4key",{"2":{"143":2}}],["451",{"2":{"2160":1}}],["453",{"2":{"1091":2}}],["45",{"2":{"816":1,"1405":1,"1578":1,"1821":1,"1945":1}}],["45pm",{"2":{"350":1}}],["412",{"2":{"2294":1}}],["41",{"2":{"1405":1,"1578":1,"1857":1}}],["4173",{"2":{"403":1}}],["4198",{"2":{"93":1}}],["4a7b",{"2":{"314":1,"315":1}}],["4pplet",{"2":{"211":3}}],["460800",{"2":{"1136":1}}],["46",{"2":{"181":2,"1405":1,"1578":1,"1857":1,"2269":1}}],["4800",{"2":{"1201":1}}],["48",{"2":{"168":1,"181":2,"211":1,"236":1,"784":1,"917":1,"1053":1,"1578":1,"1725":2,"1794":1,"1804":1,"1857":1,"1945":3,"1946":2,"2130":2,"2688":1,"2695":1}}],["4871",{"2":{"2":1}}],["40kb",{"2":{"2528":1}}],["400",{"2":{"1804":1,"1867":2,"2299":1,"2355":1,"2394":1}}],["400000",{"2":{"702":1}}],["400000l",{"2":{"502":1}}],["4000",{"2":{"606":1}}],["40ms",{"2":{"1514":1}}],["403",{"2":{"1281":2}}],["4095u",{"2":{"659":2,"1401":2}}],["4096",{"2":{"131":1,"134":1}}],["40percentclub",{"2":{"266":1}}],["40",{"2":{"149":1,"176":1,"211":1,"481":1,"624":1,"1405":1,"1514":1,"1578":5,"1803":1,"1805":1,"1807":1,"1857":1,"1863":1,"1950":1,"2038":1,"2533":1,"2584":1}}],["401",{"2":{"114":1}}],["4x4",{"2":{"1349":3,"2559":2,"2566":1}}],["4x5",{"2":{"222":1}}],["4x8",{"2":{"143":2}}],["4x7",{"2":{"143":2}}],["4x6",{"2":{"143":2,"149":1,"222":1}}],["4x",{"2":{"114":1,"1576":1,"1577":1,"1863":3}}],["4x12",{"2":{"70":1,"1349":3,"1352":1,"1405":1}}],["4",{"0":{"108":1,"343":1,"540":1,"2169":1,"2317":1,"2469":1},"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"70":1,"93":1,"108":1,"111":1,"114":5,"134":2,"188":1,"191":3,"211":2,"222":1,"236":1,"249":1,"266":2,"286":1,"292":2,"313":1,"350":4,"358":5,"360":1,"448":1,"453":2,"455":1,"511":1,"530":2,"633":1,"635":22,"636":1,"659":1,"666":1,"694":1,"703":2,"707":2,"757":1,"786":1,"818":1,"820":1,"821":2,"850":2,"853":2,"854":2,"885":1,"887":2,"888":2,"919":1,"921":2,"922":2,"953":1,"956":2,"987":1,"990":2,"1021":2,"1024":2,"1055":2,"1058":2,"1089":1,"1092":2,"1136":1,"1145":1,"1176":1,"1181":1,"1227":1,"1331":1,"1336":2,"1344":1,"1363":2,"1366":1,"1405":1,"1451":1,"1496":4,"1515":2,"1530":2,"1557":2,"1558":2,"1573":1,"1576":1,"1577":1,"1578":1,"1589":1,"1594":2,"1639":3,"1725":5,"1730":1,"1793":31,"1794":1,"1801":2,"1805":1,"1821":2,"1822":1,"1834":3,"1857":3,"1860":1,"1903":3,"1946":5,"1954":1,"2036":3,"2038":1,"2042":4,"2059":1,"2060":3,"2092":1,"2093":1,"2111":1,"2117":2,"2118":3,"2120":3,"2128":1,"2141":1,"2147":1,"2148":2,"2153":1,"2155":5,"2167":2,"2169":1,"2255":3,"2261":1,"2295":2,"2299":3,"2300":2,"2311":1,"2352":1,"2355":9,"2365":3,"2371":31,"2372":2,"2380":3,"2386":2,"2391":2,"2394":2,"2407":1,"2411":1,"2468":2,"2534":1,"2571":1,"2574":2,"2575":2,"2577":3,"2585":1,"2592":1,"2596":2,"2615":4,"2684":1,"2686":4,"2694":1,"2696":1,"2707":1,"2745":1,"2757":2}}],["p>need",{"2":{"2474":2}}],["p>",{"2":{"2474":3}}],["p>for",{"2":{"2474":1}}],["p9",{"2":{"2355":1,"2394":1,"2747":1}}],["p7",{"2":{"2355":1,"2394":1,"2747":1}}],["p5",{"2":{"2355":1,"2394":1,"2747":1}}],["p3",{"2":{"2355":1,"2394":1,"2747":1}}],["p3d",{"0":{"255":1},"2":{"211":1,"241":5,"249":1,"266":1}}],["ppls",{"2":{"2355":1,"2394":1,"2747":1}}],["pp",{"2":{"2169":1}}],["p6",{"2":{"1638":1,"2355":1,"2394":1,"2747":1}}],["p4",{"2":{"1638":1,"2355":1,"2394":1,"2747":1}}],["p2",{"2":{"1638":1,"2355":1,"2394":1,"2747":1}}],["p8",{"2":{"1638":1,"2355":1,"2394":1,"2747":1}}],["p0",{"2":{"1638":2,"2355":1,"2394":1,"2747":1}}],["p1",{"2":{"2355":1,"2394":1,"2747":1}}],["p146279",{"2":{"1290":1}}],["p1800fl",{"2":{"102":2,"114":1}}],["pqrs",{"2":{"1280":1}}],["pbr",{"2":{"2153":1}}],["pb",{"2":{"1834":32,"2380":32}}],["pb11",{"2":{"1140":1,"1141":1,"1142":1}}],["pb10",{"2":{"1140":1,"1141":1,"1142":1}}],["pb4",{"2":{"1140":1}}],["pb3",{"2":{"1140":1}}],["pb7",{"2":{"1140":1,"1141":1,"1142":1}}],["pb6",{"2":{"1140":1,"1141":1,"1142":1}}],["pdot",{"2":{"2355":1,"2394":1,"2747":1}}],["pd3",{"2":{"2119":1}}],["pd1",{"2":{"2119":1,"2120":1}}],["pd0",{"2":{"1293":1,"2119":1,"2120":1}}],["pdfs",{"2":{"1503":1}}],["pdf",{"2":{"1289":1,"1293":2}}],["pd9",{"2":{"1140":1,"1141":1,"1142":1}}],["pd8",{"2":{"1140":1,"1141":1,"1142":1}}],["pd6",{"2":{"1140":1,"1142":1}}],["pd5",{"2":{"1140":1,"1142":1,"1907":1}}],["pdr",{"2":{"850":1,"854":8,"885":1,"888":9,"919":1,"922":9,"953":1,"956":9,"987":1,"990":9,"1021":1,"1024":9,"1055":1,"1058":9,"1089":1,"1092":9}}],["pd2",{"2":{"191":1,"1907":1,"2119":1}}],["pnp",{"2":{"1458":1}}],["pnputil",{"2":{"628":2}}],["png",{"2":{"623":1,"2573":1,"2575":4}}],["photos",{"2":{"2450":1}}],["phonetic",{"2":{"2144":1}}],["phone",{"2":{"2118":1}}],["phrases",{"2":{"1353":1,"1359":1}}],["phpshop",{"2":{"1242":1}}],["php",{"2":{"1242":1,"1275":1,"1289":1,"1297":1,"1298":1}}],["physically",{"2":{"1216":1,"1378":1,"2302":1,"2679":1,"2730":1}}],["physical",{"0":{"1721":1,"2746":1},"1":{"1722":1},"2":{"540":2,"624":1,"1216":1,"1284":3,"1326":1,"1346":2,"1347":1,"1495":1,"1721":1,"1725":7,"1946":7,"1950":1,"2131":1,"2152":1,"2270":1,"2302":1,"2407":1,"2450":1,"2559":3,"2614":3,"2615":2,"2643":1,"2686":1,"2730":1,"2731":2,"2732":3,"2733":2,"2746":2,"2747":1}}],["phapbgs",{"2":{"2147":1,"2148":1}}],["phantagom",{"2":{"211":1}}],["phantom",{"2":{"211":1}}],["phase",{"2":{"191":1,"1181":1,"1214":3,"1224":2}}],["pjrc",{"2":{"487":2,"491":4,"625":1,"1249":1,"2235":1,"2238":1,"2333":1,"2639":1}}],["pwl",{"2":{"2153":1}}],["pwr",{"2":{"1273":1,"1903":1,"2148":1,"2153":1,"2355":1,"2393":1}}],["pw88",{"2":{"222":1,"241":2}}],["pwmd4",{"2":{"1469":1}}],["pwmd2",{"2":{"1230":1}}],["pwmd1",{"2":{"661":1,"662":1,"1396":1}}],["pwmd11tim1",{"2":{"656":1}}],["pwm3360",{"2":{"149":1}}],["pwm",{"0":{"14":1,"661":1,"662":1,"679":1,"753":1,"780":1,"812":1,"820":1,"844":1,"853":1,"879":1,"887":1,"913":1,"921":1,"947":1,"955":1,"981":1,"989":1,"1015":1,"1049":1,"1083":1,"1091":1,"1117":1,"1170":1,"1222":1,"1230":1,"1394":1,"1396":1,"1461":1,"1466":1,"1469":1},"1":{"680":1,"781":1,"813":1,"845":1,"880":1,"914":1,"948":1,"982":1,"1016":1,"1050":1,"1084":1,"1118":1,"1171":1,"1395":1},"2":{"14":4,"49":1,"50":1,"93":1,"134":3,"160":1,"176":3,"191":2,"222":1,"236":4,"249":8,"266":1,"593":1,"594":1,"651":1,"655":2,"656":5,"661":10,"662":2,"663":2,"671":1,"672":3,"675":1,"679":1,"736":1,"737":4,"741":1,"745":1,"753":1,"762":1,"763":4,"768":1,"772":1,"780":1,"792":1,"793":4,"800":1,"804":1,"812":1,"818":3,"820":11,"826":1,"827":4,"832":1,"836":1,"844":1,"850":3,"853":8,"859":1,"860":4,"867":1,"871":1,"879":1,"885":3,"887":8,"893":1,"894":4,"901":1,"905":1,"913":1,"919":3,"921":8,"927":1,"928":4,"935":1,"939":1,"947":1,"953":3,"955":7,"961":1,"962":4,"969":1,"973":1,"981":1,"987":3,"989":7,"995":1,"996":4,"1003":1,"1007":1,"1015":1,"1029":1,"1030":4,"1037":1,"1041":1,"1049":1,"1063":1,"1064":4,"1071":1,"1075":1,"1083":1,"1089":3,"1091":10,"1097":1,"1098":4,"1105":1,"1109":1,"1117":1,"1150":1,"1151":4,"1158":1,"1162":1,"1170":1,"1218":1,"1222":2,"1230":16,"1316":1,"1317":1,"1387":2,"1394":3,"1396":7,"1454":2,"1459":2,"1460":1,"1461":2,"1462":2,"1463":1,"1466":2,"1467":1,"1469":11,"2276":1,"2528":1,"2534":1,"2676":2,"2677":3,"2700":2}}],["pt",{"2":{"222":3}}],["pmns",{"2":{"2355":1,"2394":1,"2747":1}}],["pmeg2005eh",{"2":{"2133":1}}],["pm2040",{"2":{"176":2,"277":1,"1311":1,"1315":5}}],["pmw3320",{"0":{"1869":1},"2":{"211":1,"1869":6}}],["pmw33xx",{"0":{"273":1,"276":1},"2":{"175":2,"176":3,"199":1,"236":1,"249":1,"273":3,"276":1,"277":1,"1870":23}}],["pmw3389",{"2":{"149":2,"199":1,"1870":1}}],["pmw3360",{"2":{"114":3,"118":1,"149":4,"160":1,"1870":1,"1872":1,"2566":1}}],["pmw",{"0":{"1870":2},"2":{"118":1,"1870":6}}],["pcmm",{"2":{"2355":1,"2394":1}}],["pcint",{"2":{"1905":1}}],["pc",{"2":{"1280":3}}],["pc13",{"2":{"2353":1}}],["pc11",{"2":{"1140":1,"1141":1,"1142":1}}],["pc10",{"2":{"1140":1,"1141":1,"1142":1}}],["pc5",{"2":{"1140":1,"1141":1}}],["pc4",{"2":{"1140":1,"1141":1}}],["pca9505",{"2":{"176":1}}],["pca9555",{"2":{"149":1}}],["pcba",{"2":{"2709":3}}],["pcbheaven",{"2":{"2311":1}}],["pcb1",{"2":{"2249":2}}],["pcb",{"2":{"18":2,"114":1,"134":2,"176":2,"211":2,"222":2,"624":2,"1125":1,"1129":1,"1252":1,"1287":1,"2230":1,"2233":1,"2235":1,"2236":2,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":2,"2247":2,"2249":2,"2267":1,"2302":1,"2303":1,"2328":1,"2450":4,"2529":1,"2534":1,"2566":1,"2614":1,"2665":1,"2672":1}}],["pcbs",{"2":{"18":1,"37":2,"114":1,"249":1,"2230":1,"2529":3}}],["pseudocode",{"2":{"2600":1}}],["pseudorandomly",{"2":{"2611":1}}],["pseudorandom",{"2":{"2099":1}}],["pste",{"2":{"2355":1,"2392":1}}],["pstr",{"2":{"1448":1,"1593":1,"1594":1,"1610":1,"1813":11,"1816":2,"2100":1,"2101":1,"2137":11,"2707":2}}],["psls",{"2":{"2355":1,"2394":1,"2747":1}}],["psi",{"2":{"1594":3}}],["pscr",{"2":{"313":1,"530":2,"2355":1,"2392":1,"2408":1}}],["ps",{"0":{"1289":1,"1809":1,"1902":1,"1910":1,"2692":1},"1":{"1903":1,"1904":1,"1905":1,"1906":1,"1907":1,"1908":1,"1909":1,"1910":1,"1911":1,"1912":1,"1913":1,"1914":1,"1915":1,"1916":1,"1917":1},"2":{"133":1,"134":1,"175":1,"176":1,"191":1,"211":3,"236":1,"266":1,"1809":1,"1902":2,"1910":1,"2692":6}}],["psp",{"2":{"118":1}}],["ps2avrgb",{"0":{"2345":1},"2":{"235":1,"1220":1,"2237":1,"2345":1,"2450":1}}],["ps2",{"2":{"114":2,"133":1,"134":1,"149":1,"222":1,"1904":5,"1905":9,"1906":5,"1907":17,"1908":3,"1910":17,"1911":4,"1912":10,"1913":1,"1914":4,"1915":3,"1916":2,"1917":1,"2692":1}}],["punctuation",{"0":{"1584":1,"2388":1},"2":{"1499":1,"1584":1,"2228":1}}],["pulsing",{"2":{"1578":6,"1949":2}}],["pulses",{"2":{"1557":2,"1728":9,"1949":2}}],["pulse",{"2":{"1215":3,"1454":1,"1578":1,"1949":10,"1951":1}}],["pulled",{"2":{"1573":1,"2231":1,"2238":1,"2519":1}}],["pulldown",{"2":{"818":3,"821":12,"850":2,"854":3,"885":2,"888":3,"919":2,"922":3,"953":2,"956":3,"987":2,"990":3,"1021":2,"1024":3,"1055":2,"1058":3,"1089":2,"1092":3,"1471":1}}],["pulls",{"2":{"305":1,"308":1,"2566":1}}],["pullup",{"2":{"134":1,"236":1,"707":2,"818":3,"821":12,"850":2,"854":3,"885":2,"888":3,"919":2,"922":3,"953":2,"956":3,"987":2,"990":3,"1021":2,"1024":3,"1055":2,"1058":3,"1089":2,"1092":3,"1225":3}}],["pulling",{"2":{"10":1,"24":1,"49":1,"1225":1,"2564":1}}],["pull",{"0":{"352":1,"1225":1,"2656":1},"1":{"353":1,"354":1,"355":1,"356":1},"2":{"2":1,"38":1,"45":1,"69":1,"87":1,"103":1,"126":1,"243":1,"347":2,"349":2,"352":3,"355":1,"356":1,"359":1,"360":1,"537":1,"550":2,"554":9,"558":1,"560":1,"623":1,"684":1,"696":5,"1126":2,"1134":2,"1142":1,"1225":2,"1236":1,"1261":1,"1263":1,"1265":1,"1330":1,"1381":1,"2117":1,"2120":2,"2255":3,"2326":1,"2473":1,"2475":2,"2478":1,"2479":2,"2480":2,"2517":3,"2519":1,"2521":1,"2530":1,"2568":1,"2569":1,"2656":1,"2670":1,"2719":1,"2757":1}}],["pupdr",{"2":{"707":2}}],["puzzle",{"2":{"614":1}}],["pumps",{"2":{"1559":1}}],["pumpkinpad",{"2":{"241":1}}],["pumpkin",{"2":{"191":1,"241":1,"249":1}}],["pumkinpad",{"2":{"249":1}}],["public",{"0":{"2227":1},"2":{"249":1,"1380":3,"2310":1,"2570":3}}],["publishing",{"0":{"2481":1}}],["published",{"2":{"182":2,"317":1,"628":1,"1380":1,"2297":1,"2570":1,"2660":1}}],["publish",{"2":{"176":1,"188":1,"191":2,"199":1,"317":1,"2481":1}}],["pushed",{"2":{"520":1,"701":1,"1329":4,"1559":1,"2577":1}}],["pushbutton",{"2":{"255":1}}],["push",{"0":{"1225":1},"2":{"243":1,"262":1,"340":1,"347":3,"349":3,"358":2,"359":2,"360":2,"361":2,"554":2,"696":3,"1142":1,"1225":1,"1391":1,"2255":2,"2273":1,"2431":1,"2437":1,"2438":2,"2441":1,"2446":1,"2448":2,"2477":6,"2479":4,"2480":5,"2481":2}}],["putc",{"0":{"1605":1},"1":{"1606":1}}],["puts",{"0":{"1607":1,"1609":1},"1":{"1608":1,"1610":1},"2":{"1593":1,"1594":1,"1609":1,"2356":1,"2572":1}}],["putting",{"2":{"417":1,"2263":1,"2304":1,"2319":1,"2672":1}}],["put",{"0":{"2450":1},"2":{"134":1,"182":1,"184":1,"450":1,"526":1,"540":1,"550":1,"556":1,"560":1,"574":1,"586":1,"626":2,"1397":1,"1913":1,"1914":2,"2152":1,"2167":1,"2169":2,"2182":1,"2258":1,"2279":1,"2356":1,"2417":1,"2450":1,"2566":1,"2569":1,"2571":1,"2572":1,"2615":1}}],["puca",{"2":{"134":1}}],["purely",{"2":{"2178":1}}],["purejavahidapi",{"2":{"1921":1}}],["purchased",{"2":{"2350":1}}],["purchase",{"2":{"2145":1}}],["purple",{"2":{"1953":2,"2042":2,"2058":2,"2460":2}}],["purposes",{"2":{"821":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1815":1,"1923":1,"2139":1,"2295":1,"2349":1,"2513":1,"2615":1,"2644":1}}],["purpose",{"2":{"355":2,"432":1,"1230":1,"1380":1,"1470":1,"2129":8,"2492":1,"2503":1,"2570":1,"2574":1}}],["pur",{"2":{"850":1,"854":10,"885":1,"888":9,"919":1,"922":9,"953":1,"956":9,"987":1,"990":9,"1021":1,"1024":9,"1055":1,"1058":9,"1089":1,"1092":9}}],["purge",{"2":{"134":1,"238":1}}],["pursuit40",{"2":{"143":2}}],["pursuit",{"2":{"109":1}}],["peer",{"2":{"2626":2}}],["peej",{"2":{"211":1}}],["peql",{"2":{"2355":1,"2394":1}}],["pepper",{"2":{"2169":3}}],["pep8",{"2":{"455":1}}],["pent",{"2":{"2355":1,"2394":1,"2747":1}}],["penalize",{"2":{"2228":1}}],["pendulum",{"2":{"1949":3,"2708":1}}],["pending",{"2":{"599":1,"600":1}}],["pen",{"2":{"1863":1}}],["pedal",{"2":{"1793":1,"2371":1}}],["peaks",{"2":{"2272":1}}],["peak",{"2":{"1576":1,"1577":2}}],["pearl",{"2":{"211":5}}],["pe1",{"2":{"1140":1}}],["pe0",{"2":{"1140":1}}],["pegasushoof",{"2":{"199":2}}],["petruziamini",{"2":{"266":1}}],["pet",{"2":{"191":1}}],["people",{"2":{"119":2,"164":2,"172":2,"173":1,"221":1,"231":1,"244":2,"367":1,"446":1,"481":1,"482":1,"556":1,"559":1,"560":1,"567":1,"574":1,"602":1,"606":2,"615":1,"623":1,"1244":1,"1257":1,"1266":1,"1269":1,"1298":1,"1304":1,"1334":1,"1340":1,"1410":1,"2250":1,"2263":1,"2280":1,"2282":1,"2292":2,"2302":1,"2326":1,"2408":1,"2421":2,"2427":1,"2473":1,"2568":1,"2655":1,"2714":1,"2726":1,"2727":1,"2740":1,"2756":1}}],["peiorisboards",{"2":{"102":1}}],["perpetually",{"2":{"2719":1}}],["perhaps",{"2":{"1668":1}}],["permitted",{"2":{"1677":1,"2564":1,"2565":1,"2738":1}}],["permissions",{"2":{"1238":1}}],["permission",{"2":{"199":1}}],["permissive",{"0":{"2735":1},"2":{"112":2,"176":1,"505":4,"1432":1,"2168":1,"2169":1,"2674":2,"2729":1,"2731":2,"2732":3,"2733":2,"2735":11,"2736":2}}],["permanently",{"2":{"1582":1}}],["perks",{"2":{"1303":1}}],["perfectly",{"2":{"481":1,"2455":1}}],["perfect",{"2":{"228":1,"554":1,"1416":1}}],["perform",{"2":{"580":2,"636":1,"1508":1,"1655":1,"1676":1,"1815":1,"1826":1,"1880":1,"1931":1,"1934":1,"2066":1,"2069":1,"2070":1,"2133":1,"2139":1,"2250":1,"2328":1,"2381":1,"2491":1,"2513":1,"2524":1,"2576":11,"2696":1,"2735":2,"2736":2}}],["performed",{"2":{"515":1,"592":1,"690":1,"691":1,"1637":1,"2347":1}}],["performs",{"2":{"169":1,"428":1,"527":1,"689":1,"690":1,"691":1,"692":1,"1929":2,"1932":2,"2231":1,"2238":1,"2743":1}}],["performing",{"2":{"134":1,"2069":2}}],["performance",{"2":{"93":1,"175":1,"176":1,"215":1,"236":1,"479":1,"584":2,"585":1,"1253":1,"1326":3,"1329":1,"1464":1,"1817":1,"1821":1,"1872":1,"2032":1,"2574":1}}],["perceptible",{"2":{"2745":1}}],["percent",{"2":{"470":1,"2378":1,"2399":1}}],["perc",{"2":{"176":2,"2378":1,"2399":1}}],["person",{"2":{"1416":1,"2710":1}}],["personal",{"2":{"160":1,"191":1,"1242":1,"1274":1,"2255":1,"2305":1,"2428":2,"2432":1,"2433":1,"2438":1,"2468":1,"2470":1,"2506":1,"2565":1}}],["perspective",{"2":{"331":6,"336":1,"2483":1,"2546":1}}],["persisted",{"2":{"1794":1}}],["persistence",{"2":{"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1}}],["persistent",{"0":{"604":1,"1331":1,"2607":1,"2610":1},"1":{"1332":1,"1333":1},"2":{"131":1,"604":1,"1331":1,"1335":2,"1341":2,"1399":1,"1439":1,"1594":1,"1830":1,"2126":1,"2175":1,"2356":1,"2572":1,"2574":1,"2607":2,"2610":1,"2728":1}}],["persists",{"2":{"1335":1}}],["persist",{"2":{"134":1,"474":1,"501":1,"1876":1,"2179":2,"2183":1,"2263":1}}],["perimeter",{"2":{"1865":1}}],["periodic",{"2":{"2314":1}}],["periodically",{"2":{"312":1,"452":1,"522":1,"1464":1,"2162":1}}],["periods",{"2":{"2169":1,"2226":3}}],["period",{"2":{"112":1,"199":1,"236":1,"264":1,"265":1,"274":1,"337":2,"350":1,"413":1,"502":1,"596":1,"710":1,"713":1,"716":1,"719":1,"722":1,"725":1,"728":1,"1185":1,"1187":1,"1190":1,"1193":1,"1411":2,"1430":1,"1441":1,"1457":1,"1469":2,"1514":1,"1573":1,"1630":1,"2226":1,"2490":1,"2584":1,"2677":1}}],["peripherals",{"0":{"2535":1},"1":{"2536":1,"2537":1,"2538":1},"2":{"118":2,"146":1,"163":1,"211":1,"229":2,"234":3,"244":1,"656":1,"688":1,"703":1,"1129":1,"1134":1,"1139":1,"1142":1,"1177":1,"1198":1,"1390":1,"1853":1,"2523":1,"2531":1,"2534":1,"2535":1,"2567":1}}],["peripheral",{"0":{"234":1},"2":{"49":1,"176":1,"191":2,"199":1,"234":1,"654":1,"656":1,"685":1,"690":3,"691":1,"694":1,"703":3,"1122":1,"1126":1,"1128":1,"1132":3,"1133":3,"1134":5,"1142":1,"1177":3,"1182":1,"1198":3,"1222":1,"1223":2,"1229":1,"1230":1,"1390":1,"1908":4,"2534":1,"2536":1,"2537":1,"2538":1,"2546":2,"2550":2}}],["per",{"0":{"1423":1,"1518":1,"1683":1,"1792":1,"2225":1,"2264":1,"2740":1},"1":{"2226":1,"2227":1,"2228":1},"2":{"0":1,"9":1,"19":1,"22":1,"39":1,"52":1,"63":2,"92":1,"93":1,"112":6,"114":2,"149":1,"176":1,"184":1,"191":1,"194":3,"195":2,"198":1,"199":4,"201":1,"211":1,"213":1,"224":1,"238":1,"457":1,"459":1,"468":1,"505":16,"529":1,"562":1,"584":1,"657":1,"684":1,"703":1,"1177":2,"1198":1,"1212":2,"1236":1,"1255":1,"1326":8,"1329":10,"1359":1,"1384":1,"1388":1,"1390":1,"1397":1,"1400":1,"1411":2,"1416":1,"1431":2,"1454":1,"1500":1,"1518":5,"1557":1,"1562":1,"1683":3,"1730":1,"1733":1,"1803":1,"1804":3,"1805":8,"1807":1,"1817":1,"1870":3,"1954":1,"1957":1,"2031":1,"2111":6,"2128":1,"2157":1,"2161":2,"2171":2,"2225":1,"2566":1,"2575":1,"2577":3,"2585":1,"2589":1,"2592":1,"2674":4,"2688":1,"2695":1,"2708":1,"2710":1,"2720":1,"2727":1,"2728":2,"2735":1,"2736":1,"2737":1,"2738":1,"2740":1,"2745":2}}],["pkg",{"2":{"2467":1}}],["pk",{"2":{"94":1,"114":1,"199":1,"1326":1,"1329":3,"2674":3}}],["pgm",{"2":{"160":1,"1518":1}}],["pgup",{"2":{"90":2,"209":1,"313":2,"530":2,"1560":2,"1932":1,"2355":1,"2392":1,"2407":1,"2408":1}}],["pgdn",{"2":{"90":2,"120":1,"209":1,"313":2,"530":2,"1354":1,"1560":2,"1932":1,"2355":1,"2392":1,"2407":1,"2408":1}}],["pywinusb",{"2":{"1921":1}}],["pyhidapi",{"2":{"1921":1,"1923":1}}],["pytest",{"0":{"407":1},"2":{"277":1,"407":5,"442":1,"443":1,"447":1,"483":1}}],["pythonimport",{"2":{"1923":1}}],["pythonistas",{"2":{"455":1}}],["pythonfrom",{"2":{"292":1}}],["python3",{"2":{"158":1,"366":1,"429":1,"1441":1,"2464":4}}],["python",{"0":{"23":1,"406":1,"455":1},"2":{"23":1,"70":2,"76":1,"149":1,"158":1,"160":2,"282":3,"364":1,"366":1,"406":2,"407":2,"430":4,"432":1,"442":1,"444":1,"446":2,"455":2,"457":1,"461":1,"466":1,"479":1,"483":1,"484":1,"485":2,"555":2,"607":3,"613":2,"614":3,"1441":1,"1921":1,"1923":1,"2238":1,"2461":1,"2464":4,"2575":1}}],["pyformat",{"2":{"199":1}}],["py",{"2":{"76":1,"114":1,"222":1,"282":3,"430":1,"460":1,"484":1,"485":1,"607":3,"613":1,"614":3,"2467":2}}],["pirate",{"0":{"2339":1},"1":{"2340":1},"2":{"2339":2,"2340":1}}],["piezos",{"2":{"1391":1}}],["piezo",{"2":{"656":2,"662":1,"1388":1,"1391":1,"1392":1,"1395":2}}],["piece",{"2":{"481":1,"614":1,"1300":1,"2279":1,"2317":1}}],["pieces",{"2":{"249":1,"481":1,"2272":2,"2457":1,"2750":1}}],["pitch",{"2":{"231":1,"1403":3,"1793":4,"2371":4}}],["pi50",{"2":{"211":2}}],["piantor",{"2":{"211":1}}],["piggy60",{"2":{"207":4,"211":2}}],["pizza65",{"2":{"191":1}}],["pizzakeyboards",{"2":{"191":1}}],["pi60",{"2":{"191":1,"236":1}}],["pio0",{"2":{"1134":1,"1229":1,"1908":1}}],["pio1",{"2":{"249":1,"1134":2,"1229":2,"1908":2}}],["pio",{"0":{"1134":1,"1221":1,"1229":1,"1908":1},"2":{"176":2,"191":3,"211":1,"249":1,"1126":1,"1127":3,"1130":3,"1134":7,"1221":2,"1224":2,"1229":2,"1317":2,"1908":4,"2531":2,"2543":4}}],["pi",{"0":{"163":1,"492":1,"1321":1,"2249":1,"2531":1},"1":{"2532":1,"2533":1,"2534":1,"2535":1,"2536":1,"2537":1,"2538":1,"2539":1,"2540":1,"2541":1,"2542":1,"2543":1,"2544":1,"2545":1},"2":{"163":1,"176":1,"189":1,"191":1,"199":1,"1127":1,"1130":1,"1134":1,"1311":2,"1315":6,"1322":6,"1908":1,"2533":1,"2534":1,"2545":1,"2709":1}}],["pipe",{"2":{"1677":1,"2378":1,"2399":1,"2738":1}}],["pipes",{"2":{"334":1}}],["pipeline",{"2":{"198":1,"1559":1,"2567":1}}],["pip",{"0":{"366":1},"2":{"158":2,"366":2,"429":1,"1441":1,"2464":6,"2465":1}}],["pillow",{"0":{"158":1},"2":{"158":2,"160":1,"2575":1}}],["pistachio",{"2":{"134":1,"143":6,"222":1}}],["picture",{"2":{"2566":1}}],["picro",{"2":{"2545":1}}],["pic",{"2":{"2339":1}}],["picks",{"2":{"2261":1}}],["picky",{"2":{"455":1}}],["picking",{"2":{"156":1}}],["picked",{"2":{"130":2,"145":1,"163":1,"210":1,"232":1,"248":1,"523":1,"1440":1}}],["pick",{"2":{"120":1,"428":1,"435":1,"453":1,"526":1,"555":1,"627":1,"639":1,"1242":1,"1396":1,"1496":1,"1631":1,"1859":2,"1873":3,"1930":1,"2553":1,"2556":1,"2718":1}}],["picolibc",{"2":{"134":1}}],["pico",{"2":{"55":15,"163":1,"191":1,"199":1,"236":1,"241":4,"691":1,"2249":1,"2533":2}}],["pimoroni",{"0":{"1868":1},"2":{"114":2,"118":2,"176":1,"1868":9}}],["pixdata",{"2":{"2574":1,"2577":3}}],["pixels",{"2":{"1804":2,"1807":2,"1815":3,"1817":1,"1822":5,"1860":5,"2139":3,"2141":1,"2143":5,"2577":9,"2587":2,"2594":2,"2596":2}}],["pixel",{"2":{"134":1,"149":1,"176":1,"199":1,"222":2,"248":1,"277":1,"1804":1,"1822":2,"1949":9,"2143":2,"2574":1,"2575":2,"2576":5,"2577":7,"2585":2,"2592":2,"2596":8,"2598":4,"2708":3}}],["pix",{"2":{"74":2}}],["pid>",{"2":{"375":1}}],["pid",{"0":{"1242":1},"1":{"1243":1},"2":{"70":1,"111":1,"169":1,"176":1,"184":1,"249":2,"266":1,"375":1,"502":1,"628":1,"629":1,"1242":1,"1278":1,"2299":1,"2556":3,"2566":1,"2699":1}}],["pink",{"2":{"1953":2,"2058":2}}],["pinky",{"2":{"1410":1}}],["pinwheels",{"2":{"1949":3,"2708":1}}],["pinwheel",{"2":{"1728":4,"1948":2,"1949":12,"2708":3}}],["pings",{"2":{"726":1}}],["ping",{"0":{"726":1},"1":{"727":1,"728":1},"2":{"726":1,"2566":1}}],["pintomux",{"2":{"199":1,"638":1,"639":1}}],["pinouts",{"2":{"1319":1,"1558":1,"2269":1,"2353":1}}],["pinout",{"2":{"176":1,"511":2,"633":1,"1321":1,"1558":1,"2269":1,"2275":1,"2352":1,"2533":1,"2545":2}}],["pinnacle",{"2":{"118":2,"175":1,"176":2,"191":1,"1862":3,"1863":19,"1864":5,"1865":3,"1866":3,"1900":1}}],["pinxx",{"2":{"114":1}}],["pins>",{"2":{"2131":2}}],["pins",{"0":{"1459":1,"2516":1,"2517":1},"2":{"49":1,"70":1,"111":2,"112":2,"114":2,"134":1,"176":2,"191":2,"199":2,"211":1,"236":2,"249":1,"277":1,"334":2,"502":14,"511":12,"563":1,"575":1,"576":2,"580":11,"606":1,"609":1,"630":1,"633":1,"635":4,"655":1,"661":1,"662":1,"663":1,"666":1,"667":1,"702":2,"703":2,"707":1,"734":1,"757":1,"760":1,"786":1,"790":1,"818":1,"821":1,"822":1,"824":1,"850":1,"851":1,"852":1,"854":1,"855":1,"857":1,"885":1,"886":1,"888":1,"889":1,"891":1,"919":1,"922":1,"923":1,"925":1,"953":1,"956":1,"957":1,"959":1,"987":1,"990":1,"991":1,"993":1,"1021":1,"1022":1,"1023":1,"1024":1,"1025":1,"1027":1,"1055":1,"1056":1,"1057":1,"1058":1,"1059":1,"1061":1,"1089":1,"1090":1,"1092":1,"1093":1,"1095":1,"1125":1,"1127":1,"1129":2,"1130":2,"1139":1,"1142":4,"1145":1,"1148":1,"1176":2,"1177":3,"1195":1,"1197":2,"1198":2,"1223":1,"1234":1,"1294":1,"1314":1,"1319":1,"1323":1,"1324":1,"1387":2,"1390":1,"1391":1,"1394":1,"1395":1,"1399":1,"1459":3,"1464":1,"1466":1,"1471":2,"1492":1,"1547":3,"1557":5,"1558":7,"1562":9,"1573":4,"1574":1,"1591":3,"1715":1,"1717":1,"1820":7,"1870":8,"1906":1,"1908":1,"2061":3,"2125":1,"2131":9,"2237":1,"2268":1,"2272":1,"2275":2,"2276":3,"2278":1,"2286":1,"2328":3,"2352":1,"2353":1,"2450":1,"2514":1,"2515":1,"2516":2,"2518":2,"2519":5,"2521":1,"2525":1,"2529":2,"2530":1,"2532":1,"2533":2,"2534":1,"2540":1,"2542":2,"2543":1,"2557":5,"2558":7,"2566":1,"2576":2,"2638":1,"2648":1,"2676":1,"2677":2,"2682":2,"2684":1,"2689":6,"2697":3}}],["pin",{"0":{"243":1,"673":2,"679":2,"1123":1,"1126":1,"1129":1,"1180":1,"1236":1,"1314":1,"1551":1,"2124":1,"2125":1,"2515":1,"2533":1,"2558":1},"1":{"674":2,"680":2,"1181":1,"1182":1,"2516":1,"2517":1,"2518":1,"2519":1},"2":{"28":2,"45":1,"70":2,"93":1,"111":1,"112":2,"114":5,"134":1,"149":1,"160":4,"172":1,"175":1,"176":2,"190":1,"191":1,"199":4,"201":3,"211":8,"222":1,"236":1,"243":33,"249":3,"266":1,"277":10,"495":1,"502":26,"506":4,"509":3,"510":7,"511":1,"576":5,"580":3,"635":1,"636":1,"638":5,"639":9,"644":6,"656":1,"661":5,"662":4,"666":8,"674":3,"680":3,"684":5,"685":2,"694":2,"695":1,"696":34,"703":4,"707":2,"731":3,"757":2,"758":1,"786":2,"787":1,"790":1,"818":2,"819":1,"824":1,"850":2,"857":1,"885":2,"891":1,"919":2,"920":1,"925":1,"953":2,"954":1,"959":1,"987":2,"988":1,"993":1,"1021":2,"1027":1,"1055":2,"1061":1,"1089":2,"1095":1,"1122":1,"1123":3,"1124":2,"1126":5,"1127":3,"1129":12,"1130":7,"1134":2,"1140":2,"1141":2,"1142":6,"1145":2,"1146":1,"1148":1,"1176":3,"1177":13,"1181":3,"1194":1,"1198":8,"1214":3,"1223":2,"1225":4,"1226":4,"1230":1,"1234":13,"1235":4,"1236":5,"1293":2,"1312":1,"1314":3,"1319":2,"1320":2,"1325":1,"1378":1,"1386":1,"1387":10,"1388":2,"1390":4,"1391":3,"1392":3,"1393":2,"1394":5,"1395":4,"1396":5,"1399":9,"1457":4,"1458":2,"1459":4,"1462":2,"1466":1,"1467":1,"1469":2,"1471":3,"1492":4,"1496":1,"1547":1,"1551":1,"1562":1,"1570":5,"1573":8,"1591":6,"1634":1,"1635":1,"1637":4,"1644":3,"1715":11,"1717":9,"1819":7,"1820":3,"1855":12,"1856":3,"1857":6,"1863":3,"1867":8,"1869":12,"1870":11,"1872":16,"1902":1,"1903":2,"1904":2,"1905":4,"1906":2,"1907":2,"1908":3,"2032":11,"2061":2,"2119":2,"2120":2,"2124":4,"2125":3,"2128":2,"2131":1,"2141":6,"2231":2,"2238":2,"2263":3,"2276":1,"2330":3,"2332":3,"2334":3,"2339":2,"2344":1,"2352":1,"2516":3,"2517":4,"2518":4,"2521":1,"2524":2,"2529":1,"2530":1,"2533":2,"2534":2,"2539":1,"2541":15,"2543":2,"2558":4,"2566":1,"2576":64,"2673":1,"2675":4,"2676":3,"2677":2,"2684":6,"2685":5,"2689":1,"2692":4,"2693":4,"2697":4,"2700":2}}],["pliers",{"2":{"2266":1,"2273":1}}],["pl",{"2":{"2153":3}}],["ply2",{"2":{"1553":2,"2363":1}}],["ply1",{"2":{"1553":2,"2363":1}}],["plywrks",{"2":{"211":1}}],["plover",{"0":{"2145":1,"2146":1},"1":{"2147":1,"2148":1,"2149":1},"2":{"1332":1,"1343":1,"1549":4,"2144":1,"2145":5,"2146":6,"2150":2,"2151":2,"2712":4}}],["ploopyco",{"2":{"266":1}}],["ploopy",{"2":{"134":1,"199":1}}],["plump",{"2":{"2279":1}}],["plunger",{"2":{"1573":1}}],["pluggable",{"2":{"2118":1}}],["plugging",{"2":{"1270":1,"1495":1,"2114":1,"2118":1,"2237":1,"2305":2,"2450":1,"2556":1}}],["plugged",{"2":{"509":4,"626":1,"1254":1,"2177":1,"2669":1}}],["plug",{"2":{"624":1,"626":1,"1300":1,"1553":1,"2278":1,"2347":1,"2353":1,"2450":2}}],["plugins",{"0":{"2496":1,"2499":1},"1":{"2497":1,"2498":1,"2499":1},"2":{"2496":1,"2499":1}}],["plugin",{"2":{"445":1,"454":1,"2249":2,"2492":1,"2497":1,"2499":1,"2513":1}}],["plus",{"2":{"143":2,"176":2,"211":2,"222":1,"226":1,"241":4,"1822":1,"2143":1,"2268":1,"2355":1,"2378":1,"2394":1,"2399":1}}],["plenty",{"2":{"488":1,"1684":1}}],["plexus75",{"2":{"143":2}}],["pleased",{"2":{"224":1}}],["please",{"2":{"14":1,"16":1,"37":1,"43":1,"49":1,"195":1,"196":1,"228":1,"240":1,"273":1,"276":1,"329":1,"367":1,"446":2,"453":1,"455":1,"479":1,"485":1,"535":1,"540":1,"543":1,"547":1,"548":1,"549":1,"551":2,"556":1,"557":1,"560":3,"585":1,"623":1,"641":1,"1129":1,"1219":1,"1260":2,"1261":1,"1330":1,"1376":1,"1380":1,"1501":1,"1553":1,"1554":1,"1576":1,"1577":1,"1677":1,"1830":1,"1902":1,"1904":1,"1921":1,"2032":1,"2042":1,"2183":1,"2260":1,"2286":1,"2297":1,"2300":1,"2306":1,"2409":1,"2417":1,"2427":1,"2453":1,"2466":1,"2473":1,"2475":1,"2535":1,"2536":1,"2537":1,"2553":2,"2554":2,"2565":1,"2569":1,"2578":1,"2579":1,"2581":1,"2713":1,"2738":1,"2751":1}}],["plastic",{"2":{"2274":1}}],["placing",{"2":{"2035":1,"2311":1}}],["placement",{"2":{"2120":1,"2169":1}}],["placeholder",{"2":{"1383":1,"2706":2}}],["placed",{"2":{"314":1,"481":1,"1454":1,"1471":1,"1531":1,"1817":1,"2120":1,"2133":1,"2279":1,"2299":1,"2300":1,"2311":1,"2440":1,"2447":1,"2555":1,"2566":2}}],["place",{"2":{"114":1,"176":2,"182":1,"194":1,"249":1,"404":1,"452":1,"453":1,"474":1,"575":1,"621":2,"631":1,"1239":1,"1270":2,"1275":1,"1278":1,"1344":1,"1380":1,"1398":1,"1440":1,"1459":1,"1509":1,"2126":1,"2133":1,"2164":1,"2169":1,"2245":1,"2247":1,"2249":1,"2258":1,"2267":1,"2270":1,"2273":3,"2275":1,"2276":1,"2280":1,"2313":1,"2405":2,"2480":1,"2554":1,"2620":1,"2707":1,"2710":1,"2714":1,"2728":1,"2757":1}}],["places",{"2":{"111":1,"331":1,"470":1,"557":1,"610":1,"1527":1,"1534":1,"2169":1,"2350":1,"2614":1,"2746":1}}],["plates",{"2":{"2303":1}}],["plate",{"2":{"2266":2,"2267":4,"2270":1}}],["plat",{"2":{"133":1,"134":1}}],["platforms",{"2":{"50":1,"93":1,"137":1,"156":1,"160":1,"176":1,"191":1,"222":1,"455":1,"560":1,"695":1,"696":1,"1122":1,"1124":1,"1247":1,"2743":2}}],["platform",{"2":{"50":2,"65":1,"75":1,"111":1,"113":4,"114":4,"123":1,"133":5,"134":5,"149":1,"160":1,"163":2,"189":1,"191":1,"199":7,"211":1,"654":1,"696":1,"1121":1,"1463":1,"1469":1,"1811":1,"2576":2,"2623":1,"2743":4,"2754":1}}],["plans",{"2":{"2756":1}}],["planning",{"0":{"2268":1},"1":{"2269":1},"2":{"2267":1,"2271":1,"2276":1,"2277":1}}],["planned",{"2":{"88":1,"560":1,"2063":1,"2266":1,"2270":1}}],["plan",{"2":{"143":2,"561":1,"617":1,"2268":2,"2456":1}}],["planck",{"0":{"17":1,"1243":1},"2":{"17":1,"270":2,"277":2,"331":2,"370":2,"378":1,"383":1,"393":2,"394":2,"395":1,"396":1,"624":7,"1243":1,"1265":1,"1287":4,"1343":1,"1351":4,"1352":2,"1376":2,"1393":2,"1405":2,"1440":1,"1921":1,"2108":1,"2145":1,"2146":1,"2155":1,"2231":2,"2238":2,"2252":2,"2255":1,"2262":8,"2268":2,"2281":1,"2294":1,"2425":4,"2440":1,"2452":2}}],["plain",{"2":{"1500":1,"1948":2,"2034":1,"2376":1,"2407":1,"2429":2,"2457":2,"2492":1,"2503":1}}],["plain60",{"2":{"57":2}}],["plaid",{"2":{"37":2,"249":1}}],["player",{"2":{"2355":1,"2393":1}}],["played",{"2":{"659":2,"1400":1,"1578":2}}],["plays",{"2":{"1398":12,"1399":16}}],["playback",{"2":{"1357":1,"1403":2,"2112":1,"2113":1,"2355":1}}],["playing",{"2":{"572":1,"654":1,"659":1,"1397":1,"1403":2,"1436":3,"1507":1,"2113":1}}],["play",{"0":{"27":2},"2":{"27":2,"222":1,"336":1,"479":1,"572":2,"1332":2,"1357":1,"1386":1,"1398":3,"1403":1,"1416":1,"1448":2,"1511":1,"1549":2,"1553":2,"1556":2,"1665":9,"1672":1,"1686":5,"1718":3,"2074":1,"2180":6,"2355":2,"2363":2,"2393":2,"2513":2,"2607":1,"2676":1,"2750":1}}],["p",{"0":{"1609":1,"1613":1,"2085":1,"2087":1},"1":{"1610":1,"1614":1,"2086":1,"2088":1},"2":{"14":1,"211":1,"266":3,"292":1,"313":1,"374":4,"530":2,"633":2,"702":1,"788":1,"821":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1176":1,"1197":1,"1448":3,"1451":1,"1452":1,"1458":1,"1466":1,"1467":1,"1503":1,"1593":1,"1594":2,"1813":8,"1814":1,"1816":2,"1822":7,"1823":6,"1932":1,"1948":1,"2034":1,"2100":1,"2101":1,"2137":8,"2138":1,"2143":3,"2148":2,"2153":2,"2169":2,"2233":2,"2236":1,"2347":3,"2355":3,"2376":1,"2386":3,"2407":1,"2435":1,"2512":4,"2707":2}}],["paper",{"2":{"2150":2}}],["paw",{"0":{"1867":1},"2":{"1867":2}}],["paw3204",{"2":{"176":1,"1867":3}}],["pam8302",{"2":{"1399":1}}],["pa0",{"2":{"1141":1}}],["pa3",{"2":{"1140":1,"1141":1,"1142":1}}],["pa2",{"2":{"1140":1,"1141":1,"1142":1}}],["pa1",{"2":{"1141":1}}],["pa15",{"2":{"1140":1,"1141":1}}],["pa14",{"2":{"1140":1,"1141":1}}],["pa11",{"2":{"661":1}}],["pa10",{"2":{"661":1,"1140":1,"1141":1,"1142":1}}],["pa9",{"2":{"661":1,"1140":1,"1141":1,"1142":1}}],["pa8",{"2":{"661":1,"1396":2}}],["pasted",{"2":{"2566":1}}],["paste",{"2":{"2255":1,"2349":1,"2355":2,"2392":2,"2414":1,"2415":1,"2437":1,"2566":1,"2615":1}}],["past",{"0":{"338":1,"351":1},"2":{"1414":1,"2355":1,"2394":1,"2739":1,"2747":1}}],["password",{"2":{"2438":1}}],["passwords",{"2":{"1353":1,"2611":1}}],["passes",{"2":{"1341":1,"1447":1,"2031":1}}],["passed",{"2":{"194":1,"374":2,"385":1,"387":1,"396":2,"411":3,"588":2,"597":1,"598":1,"1176":1,"1177":1,"1212":1,"1430":1,"1445":2,"1670":1,"1675":2,"1822":2,"1874":1,"1875":1,"1953":1,"2058":1,"2128":1,"2143":2,"2162":2,"2293":1,"2311":1,"2612":2}}],["passing",{"2":{"506":1,"1822":1,"1875":1,"2143":1,"2170":1,"2293":1,"2417":1}}],["pass",{"2":{"22":1,"114":1,"130":1,"134":1,"149":2,"282":3,"341":1,"400":1,"432":2,"441":1,"447":1,"454":1,"474":1,"476":4,"1335":1,"1403":1,"1451":1,"1452":1,"2311":2,"2353":1,"2577":1,"2711":1}}],["pauses",{"2":{"660":1}}],["pause",{"2":{"336":1,"502":1,"1357":1,"1586":1,"1665":8,"2355":4,"2392":2,"2393":2,"2450":1}}],["paus",{"2":{"313":1,"530":2,"2355":1,"2392":1,"2408":1}}],["pay",{"2":{"2125":1}}],["payloads",{"2":{"1921":1}}],["payload",{"0":{"313":1},"2":{"313":1,"314":1,"1921":1}}],["paying",{"2":{"198":1}}],["pain",{"2":{"2276":1}}],["painter",{"0":{"153":1,"232":1,"248":1,"408":1,"409":1,"410":1,"2573":1,"2574":1,"2575":1,"2576":1,"2577":1,"2578":1,"2580":1,"2581":1,"2582":1},"1":{"2574":1,"2575":1,"2576":1,"2577":1,"2579":1,"2580":1,"2581":2,"2582":2,"2583":1,"2584":1},"2":{"153":5,"158":1,"160":1,"176":1,"199":2,"211":2,"232":5,"248":3,"249":1,"408":1,"409":1,"410":1,"2573":19,"2574":12,"2575":11,"2576":41,"2577":44,"2578":2,"2579":5,"2581":3}}],["paid",{"2":{"551":1,"2569":1}}],["pairs",{"0":{"2182":1},"2":{"529":1,"612":1,"1547":1,"1934":1,"2183":1,"2671":1}}],["pair",{"2":{"202":1,"1562":1,"1908":1,"2199":1,"2203":1}}],["pachi",{"2":{"211":2,"277":1}}],["packaging",{"0":{"367":1},"2":{"2272":1}}],["package",{"2":{"324":1,"358":2,"367":2,"460":1,"461":1,"1241":1,"1441":1,"2351":1,"2466":2,"2467":1,"2496":1,"2497":2,"2498":1,"2546":1,"2549":1,"2647":1}}],["packages",{"0":{"2466":1},"2":{"167":1,"331":1,"364":1,"2351":1,"2462":1,"2466":1,"2509":1,"2546":1}}],["pack",{"2":{"331":1,"2255":1,"2510":2}}],["packs",{"2":{"331":3,"2131":1}}],["packed",{"2":{"236":2,"1642":1,"1677":2,"2585":1,"2587":1,"2588":1,"2589":2,"2592":1,"2593":1,"2594":1,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1,"2738":2}}],["packets",{"2":{"263":1,"1830":2,"2147":2,"2148":2,"2152":1}}],["packet",{"2":{"236":2,"263":1,"502":1,"2147":5,"2148":3,"2152":2,"2699":1}}],["packing",{"2":{"199":1}}],["packrat",{"2":{"143":2}}],["pacman",{"2":{"160":1,"2351":1,"2431":1,"2464":1,"2466":1}}],["pal2",{"2":{"2575":3}}],["pal256",{"2":{"2575":3}}],["pal4",{"2":{"2575":3}}],["pal16",{"2":{"2575":3}}],["palsetpadmode",{"2":{"707":2}}],["palettes",{"2":{"2574":1}}],["palette",{"0":{"2590":1,"2597":1},"2":{"160":1,"249":1,"2512":2,"2574":1,"2575":6,"2585":2,"2587":1,"2590":3,"2592":3,"2596":14,"2597":8}}],["paladinpad",{"2":{"134":1}}],["paladin64",{"2":{"122":2,"211":1}}],["pal",{"2":{"133":1,"134":1,"211":1,"661":2,"697":1,"703":2,"707":6,"1124":2,"1127":1,"1129":2,"1130":1,"1177":3,"1198":4,"1226":2,"1230":1,"1320":1,"1396":1,"1469":1,"1906":1}}],["patience",{"2":{"2569":1}}],["patient",{"2":{"551":1}}],["patching",{"2":{"2474":1}}],["patch",{"2":{"211":1,"2474":3}}],["patterns",{"2":{"381":1,"606":2,"1943":1,"2292":1}}],["pattern",{"2":{"118":1,"125":1,"185":1,"198":1,"428":1,"2648":1,"2728":1}}],["path=",{"2":{"2468":1}}],["path=raw",{"2":{"1923":1}}],["pathlib",{"2":{"292":1}}],["paths",{"2":{"132":1,"134":1,"149":1,"176":1,"199":1,"331":1,"554":1,"2509":1}}],["path",{"2":{"6":1,"50":1,"114":1,"211":1,"292":3,"331":2,"335":1,"393":1,"394":1,"405":1,"407":1,"425":1,"426":2,"450":1,"665":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1376":2,"1438":1,"1923":1,"2252":1,"2255":4,"2262":4,"2277":1,"2347":1,"2353":3,"2421":1,"2435":1,"2437":2,"2445":1,"2446":1,"2468":2,"2469":1,"2480":3,"2508":3,"2513":7,"2575":1}}],["padding",{"2":{"2585":1,"2592":1,"2702":1}}],["paddlegame",{"2":{"114":1}}],["pads",{"2":{"624":1,"1562":1,"2133":2}}],["pad",{"0":{"2394":1},"2":{"114":2,"191":1,"236":1,"241":5,"249":2,"266":1,"1177":1,"1385":1,"1557":2,"1900":1,"2131":1,"2133":3,"2272":1}}],["pans",{"2":{"1822":1,"2143":1}}],["pan",{"2":{"211":1,"1822":1,"2143":1}}],["panel",{"2":{"153":1,"248":1,"1813":2,"2183":1,"2355":2,"2393":2,"2573":2,"2576":29,"2577":4}}],["panels",{"2":{"123":1,"153":2,"248":1,"2567":1,"2576":3,"2577":3}}],["pandora",{"2":{"114":1,"211":1}}],["pancake",{"2":{"37":2}}],["paren",{"2":{"2378":2,"2399":2}}],["parens",{"2":{"2170":1}}],["parenthesis",{"2":{"2102":1,"2103":6,"2104":6,"2382":6}}],["parentheses",{"0":{"469":1},"2":{"469":2,"2106":1,"2170":1}}],["parent",{"2":{"72":1,"149":1,"249":1,"266":1,"373":1,"559":1,"2498":1}}],["parity",{"2":{"1907":1,"2150":1}}],["paryz",{"2":{"199":1}}],["parse",{"2":{"149":1,"612":1}}],["parsing",{"2":{"76":1,"92":1,"176":1,"191":1,"199":1,"211":1,"236":1,"380":1,"430":1,"436":1,"2509":1,"2587":1,"2593":1,"2594":1}}],["paragraph",{"2":{"616":2}}],["params",{"2":{"199":1,"1729":11,"1952":11}}],["parameter",{"2":{"191":1,"460":1,"598":1,"1215":1,"1326":1,"1369":1,"1716":1,"2126":2,"2252":1,"2577":2}}],["parameters",{"2":{"70":1,"249":1,"1182":1,"1287":1,"2252":3,"2402":1,"2566":1}}],["parallel",{"2":{"114":1,"134":1,"236":1,"370":3,"396":5,"411":5,"1367":1,"1471":1,"2273":1,"2576":1}}],["participating",{"2":{"2713":1}}],["particularly",{"2":{"467":1,"552":1,"609":1,"2131":1}}],["particular",{"0":{"1898":1},"2":{"453":1,"455":1,"460":1,"500":1,"559":3,"635":2,"707":1,"726":1,"1288":1,"1341":1,"1344":1,"1380":1,"1398":1,"1451":1,"1469":1,"1605":1,"1882":1,"1897":1,"1941":1,"2172":1,"2228":1,"2264":2,"2274":2,"2313":1,"2348":1,"2351":1,"2423":1,"2494":1,"2548":1,"2570":1,"2640":1}}],["parties",{"2":{"2546":1}}],["partialremap",{"2":{"1142":2}}],["partially",{"2":{"176":1,"199":1,"236":2,"663":1}}],["partial",{"2":{"49":1,"1316":1,"1317":1,"1447":1,"2226":1,"2576":1}}],["party",{"2":{"317":1,"457":1,"550":1,"2183":1,"2302":1,"2720":1}}],["parts",{"0":{"2266":1},"2":{"172":1,"304":1,"482":1,"552":1,"703":1,"1177":1,"1198":1,"1880":2,"2274":1,"2348":2,"2473":1,"2753":1}}],["part",{"2":{"67":1,"76":1,"86":1,"114":2,"134":1,"160":1,"176":2,"188":5,"191":5,"199":1,"211":8,"236":1,"262":1,"266":32,"292":1,"454":1,"469":1,"470":1,"560":1,"574":1,"602":1,"613":1,"623":1,"641":1,"1138":1,"1254":1,"1304":1,"1331":1,"1340":1,"1364":1,"1383":2,"1385":1,"1404":1,"1438":1,"1445":1,"1446":1,"1459":1,"1553":1,"1685":1,"1725":2,"1946":2,"2072":1,"2128":5,"2131":1,"2149":1,"2228":1,"2255":1,"2277":1,"2279":2,"2282":1,"2328":1,"2393":1,"2406":2,"2431":2,"2472":3,"2474":2,"2478":1,"2490":1,"2507":1,"2513":1,"2523":1,"2548":1,"2608":1,"2660":1,"2743":1,"2753":1}}],["page=shop",{"2":{"1242":1}}],["pagesize",{"2":{"2353":1}}],["pages",{"2":{"277":1,"279":1,"520":1,"602":1,"1304":1,"2303":2,"2353":3,"2419":1,"2535":1}}],["page",{"0":{"616":1,"798":2,"865":2,"899":2,"933":2,"967":2,"1001":2,"1035":2,"1069":2,"1103":2,"1156":2},"1":{"799":2,"866":2,"900":2,"934":2,"968":2,"1002":2,"1036":2,"1070":2,"1104":2,"1157":2},"2":{"13":1,"124":1,"163":1,"164":1,"194":1,"206":1,"210":1,"249":1,"278":2,"279":1,"303":1,"311":1,"322":1,"330":1,"351":1,"492":1,"496":2,"517":1,"519":1,"528":1,"536":1,"557":2,"567":1,"602":2,"605":1,"615":1,"616":4,"617":1,"621":3,"622":1,"669":1,"684":2,"685":2,"694":2,"704":1,"705":1,"790":1,"798":1,"799":2,"824":1,"857":1,"865":1,"866":2,"891":1,"899":1,"900":2,"925":1,"933":1,"934":2,"959":1,"967":1,"968":2,"993":1,"1001":1,"1002":2,"1027":1,"1035":1,"1036":2,"1061":1,"1069":1,"1070":2,"1095":1,"1103":1,"1104":2,"1148":1,"1156":1,"1157":2,"1237":1,"1244":1,"1259":1,"1264":2,"1266":1,"1273":2,"1279":2,"1300":1,"1301":1,"1304":2,"1310":1,"1325":1,"1586":2,"1589":1,"1821":2,"1822":7,"1832":1,"1902":1,"1920":3,"1921":1,"1923":4,"1932":2,"2143":7,"2255":1,"2256":1,"2263":4,"2282":3,"2287":1,"2288":1,"2289":1,"2290":1,"2291":1,"2298":1,"2325":1,"2326":1,"2335":1,"2353":8,"2354":2,"2355":6,"2385":1,"2392":4,"2393":3,"2394":2,"2439":1,"2460":1,"2492":1,"2503":1,"2523":1,"2546":1,"2553":1,"2555":1,"2561":1,"2562":1,"2564":1,"2571":1,"2601":1,"2613":1,"2671":1,"2672":3,"2722":1}}],["pong",{"2":{"2566":1}}],["podman",{"2":{"2251":2,"2252":3}}],["poop",{"2":{"2182":1}}],["poor",{"2":{"2169":1,"2719":2}}],["pop",{"2":{"2279":1}}],["populated",{"2":{"2746":1}}],["populates",{"2":{"2122":1}}],["populate",{"2":{"1332":1,"2553":1,"2746":1}}],["popularity",{"2":{"2630":1}}],["popular",{"2":{"236":1,"263":1,"1953":1,"2058":1,"2514":1,"2634":1,"2709":1}}],["popping",{"2":{"236":1}}],["policies",{"0":{"2717":1},"1":{"2718":1,"2719":1,"2720":1,"2721":1}}],["policy",{"0":{"2719":1},"1":{"2720":1,"2721":1},"2":{"1239":1,"2720":1}}],["policy=default",{"2":{"1239":1}}],["polish",{"2":{"2712":2}}],["polilla",{"2":{"253":2}}],["polarity",{"2":{"1181":1,"2524":1}}],["polaris",{"2":{"211":1,"388":4}}],["pololu",{"2":{"629":1,"2233":1,"2344":1}}],["polled",{"2":{"176":1,"1872":1}}],["poll",{"2":{"176":1,"511":2,"522":1,"1907":1,"2131":2,"2699":1}}],["polling",{"0":{"137":1},"2":{"112":1,"114":1,"137":1,"149":2,"502":2,"1872":1,"2697":2,"2699":1}}],["potentiometer",{"2":{"630":1,"1634":1,"1791":1}}],["potential",{"2":{"21":1,"142":1,"149":1,"262":1,"376":1,"397":1,"1918":1,"1921":1}}],["potentially",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"130":1,"337":1,"587":1,"628":1,"1331":1,"1336":1,"1499":1,"1921":1,"1929":1,"2118":1,"2226":1,"2411":1,"2711":1}}],["potato65s",{"2":{"211":1}}],["pocketavr",{"0":{"2335":1},"1":{"2336":1},"2":{"2335":3}}],["pocket",{"2":{"226":1,"236":1}}],["pockettype",{"2":{"57":2}}],["poc",{"2":{"176":1}}],["poker",{"2":{"122":1}}],["port>",{"2":{"2347":1}}],["portmento",{"2":{"1793":1,"2371":1}}],["portc",{"2":{"1387":1}}],["portuguese",{"2":{"1355":2,"2712":7}}],["portb",{"2":{"1312":1,"1387":1}}],["porting",{"2":{"1252":1,"2551":1,"2566":1}}],["portions",{"2":{"1685":1}}],["portion",{"2":{"228":1,"2263":1,"2530":1,"2686":1}}],["portamento",{"2":{"1793":1,"2371":1}}],["portability",{"2":{"699":1,"1174":1,"1195":1}}],["portal",{"2":{"122":2}}],["port",{"2":{"114":1,"134":2,"402":1,"403":1,"509":3,"625":1,"1295":2,"1793":1,"2146":3,"2150":2,"2234":1,"2329":1,"2331":1,"2333":1,"2335":1,"2337":1,"2339":1,"2344":1,"2347":2,"2371":1,"2513":3,"2516":1,"2528":1}}],["ports",{"0":{"1720":1},"2":{"114":1,"191":2,"1464":1,"2347":1,"2528":1,"2548":1}}],["powering",{"2":{"1471":1}}],["powerful",{"2":{"1334":1,"2168":1,"2323":1,"2417":1,"2514":1}}],["powers",{"2":{"1121":1,"2553":1,"2650":1}}],["powered",{"2":{"334":1,"537":1,"1573":1,"2540":1}}],["poweron",{"2":{"249":1}}],["poweroff",{"2":{"211":1}}],["power",{"0":{"479":1,"590":1,"1273":1,"1298":1},"2":{"70":1,"112":1,"134":3,"211":1,"222":1,"231":1,"262":1,"266":1,"502":2,"589":2,"590":1,"591":2,"606":1,"638":1,"660":1,"681":1,"684":2,"1181":1,"1225":1,"1273":3,"1292":1,"1298":1,"1331":1,"1335":1,"1399":5,"1471":1,"1570":1,"1594":1,"2061":1,"2153":1,"2175":2,"2183":1,"2263":1,"2299":4,"2355":4,"2392":2,"2393":2,"2417":1,"2529":1,"2566":1,"2577":7,"2676":2,"2699":1}}],["pose",{"2":{"1225":1}}],["possibility",{"2":{"1935":1,"2145":1,"2279":1}}],["possibilities",{"2":{"1655":1,"1662":1,"1725":1,"1946":1,"2280":1}}],["possibly",{"2":{"28":1,"50":1,"1226":2}}],["possible",{"2":{"11":1,"98":1,"99":1,"140":1,"224":1,"282":3,"315":1,"341":1,"355":1,"370":1,"466":1,"483":1,"496":2,"529":1,"551":1,"584":1,"587":1,"588":1,"655":1,"656":1,"660":1,"688":1,"758":1,"787":1,"819":1,"851":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1056":1,"1090":1,"1128":1,"1146":1,"1223":1,"1230":1,"1238":1,"1278":1,"1337":1,"1341":1,"1346":2,"1353":1,"1416":1,"1491":2,"1508":1,"1510":1,"1511":1,"1518":1,"1525":1,"1528":1,"1553":1,"1555":1,"1568":1,"1722":1,"1791":2,"1803":1,"1804":1,"1806":1,"1832":1,"1863":1,"1872":1,"1902":1,"1904":1,"1912":1,"1936":1,"1943":1,"1950":1,"1960":1,"2042":1,"2114":1,"2120":1,"2128":2,"2152":1,"2161":1,"2162":1,"2168":1,"2169":1,"2170":1,"2181":1,"2182":1,"2183":3,"2229":1,"2261":1,"2263":2,"2268":1,"2273":1,"2274":1,"2302":2,"2306":1,"2327":1,"2349":1,"2411":1,"2417":1,"2458":1,"2468":1,"2497":1,"2506":1,"2513":1,"2524":1,"2525":1,"2549":1,"2566":6,"2596":3,"2612":1,"2686":1,"2718":1,"2719":1,"2721":1,"2751":1,"2756":1,"2757":1}}],["possess",{"2":{"702":1,"1217":1,"1220":1,"2350":1}}],["possesses",{"2":{"633":1}}],["positive",{"2":{"465":2,"1822":1,"2143":1}}],["positives",{"2":{"199":1,"1416":1}}],["positioning",{"0":{"1533":1},"2":{"2577":1}}],["positional",{"2":{"393":1,"394":1}}],["positions",{"2":{"176":1,"211":1,"222":1,"1524":1,"1594":1,"1725":2,"1857":2,"1946":2,"2302":1,"2566":2,"2614":1,"2686":1,"2704":1}}],["position",{"0":{"1252":1,"1545":1},"1":{"1546":1},"2":{"62":1,"211":1,"1252":1,"1275":1,"1452":1,"1533":2,"1534":1,"1545":1,"1546":2,"1557":1,"1562":1,"1599":1,"1603":1,"1620":1,"1684":2,"1725":9,"1815":1,"1822":9,"1857":1,"1863":3,"1946":9,"1950":1,"2139":1,"2143":9,"2145":1,"2273":1,"2559":2,"2679":1,"2686":5,"2688":3,"2695":3,"2697":1,"2745":1}}],["pos",{"2":{"176":1,"1557":1,"2048":1,"2050":1}}],["postage",{"2":{"2269":2}}],["postprocess",{"2":{"176":1}}],["post",{"0":{"307":1,"348":1,"581":1,"582":1,"583":1,"2525":1},"1":{"349":1,"350":1,"582":1,"583":1},"2":{"74":1,"133":2,"134":3,"176":3,"266":2,"307":1,"312":1,"314":2,"343":1,"344":1,"574":2,"582":2,"583":2,"588":3,"1245":1,"1332":3,"1360":2,"1593":1,"1594":1,"1883":1,"1960":1,"2042":1,"2044":4,"2130":1,"2152":1,"2299":10,"2300":8,"2477":2,"2525":2,"2566":1,"2568":1,"2576":2,"2577":4,"2581":1,"2749":6}}],["posted",{"2":{"49":1,"2567":1}}],["points",{"2":{"453":1,"1451":1,"1670":1,"2152":1,"2162":1,"2181":3,"2182":3,"2183":5,"2263":3,"2279":1,"2523":1}}],["pointer",{"2":{"709":1,"712":1,"715":1,"718":1,"1189":1,"1192":1,"1207":1,"1209":1,"1233":1,"1448":1,"1798":1,"1815":5,"1822":1,"1853":1,"1857":1,"1921":1,"1922":1,"1926":1,"1928":1,"2139":5,"2143":1,"2162":2}}],["pointers",{"2":{"114":1,"222":1,"522":1,"1657":1}}],["pointed",{"2":{"21":1}}],["point",{"0":{"2199":1,"2206":1},"1":{"2200":1,"2207":1,"2208":1},"2":{"94":2,"215":2,"236":1,"340":1,"347":1,"349":1,"350":1,"581":1,"598":1,"602":1,"626":1,"627":2,"1270":1,"1304":1,"1430":1,"1441":1,"1451":1,"1515":1,"1562":1,"1652":1,"1725":2,"1885":1,"1946":2,"2125":1,"2162":2,"2169":1,"2171":1,"2181":1,"2183":1,"2184":3,"2200":2,"2206":1,"2208":1,"2209":1,"2223":1,"2263":1,"2276":1,"2282":1,"2307":1,"2384":3,"2408":1,"2443":1,"2474":2,"2477":1,"2513":2,"2524":1,"2553":1,"2557":1,"2576":1,"2589":2,"2688":1,"2695":1,"2701":1,"2730":1,"2743":1}}],["pointless",{"2":{"50":1,"94":1,"211":1,"236":1,"277":1}}],["pointing",{"0":{"118":1,"138":1,"175":1,"190":1,"1809":1,"1853":1,"1882":1,"1883":1,"1901":1},"1":{"1854":1,"1855":1,"1856":1,"1857":1,"1858":1,"1859":1,"1860":1,"1861":1,"1862":1,"1863":1,"1864":1,"1865":1,"1866":1,"1867":1,"1868":1,"1869":1,"1870":1,"1871":1,"1872":1,"1873":1,"1874":1,"1875":1},"2":{"6":1,"63":1,"118":12,"134":3,"138":4,"149":4,"175":5,"176":8,"190":4,"191":6,"211":3,"249":1,"266":1,"273":1,"505":1,"1531":1,"1809":1,"1853":2,"1854":1,"1855":3,"1856":1,"1863":2,"1865":2,"1866":1,"1867":2,"1869":3,"1870":7,"1871":5,"1872":22,"1873":16,"1874":11,"1875":11,"1876":9,"1878":3,"1879":2,"1880":1,"1881":1,"1882":5,"1883":6,"1884":2,"1885":3,"1887":2,"1889":1,"1900":2,"1901":10,"2129":5,"2284":1,"2689":1,"2725":1}}],["pryce",{"2":{"2750":1}}],["prune",{"2":{"359":1,"360":2}}],["pr12345",{"2":{"341":1}}],["practical",{"2":{"2311":1,"2414":1,"2719":1,"2720":1}}],["practically",{"2":{"337":1,"2176":1,"2348":1}}],["practice",{"2":{"1300":1,"1412":1,"1436":1,"2308":1,"2577":1}}],["practices",{"0":{"615":1,"2471":1},"1":{"2472":1},"2":{"352":1,"367":1,"455":1,"615":1,"2564":1,"2568":1}}],["pragma",{"2":{"134":1,"199":1,"211":1,"453":1,"1385":1,"1415":1,"1729":1,"1952":1,"2261":2,"2564":1,"2614":2}}],["pr20584",{"2":{"211":1}}],["pristine",{"2":{"2566":2}}],["private",{"2":{"2566":1}}],["privileged",{"2":{"2262":1}}],["privileges",{"2":{"1239":1,"1254":1}}],["price",{"2":{"2514":1}}],["prir",{"2":{"2355":1,"2392":1}}],["principle",{"2":{"734":1,"760":1,"790":1,"824":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1,"1802":1,"2552":1}}],["println",{"2":{"2491":12}}],["printed",{"2":{"1138":1,"1884":1,"1923":1,"2263":1,"2280":1,"2352":1,"2467":1,"2533":1,"2710":1}}],["printedpad",{"2":{"277":1}}],["printer",{"2":{"191":1}}],["prints",{"2":{"160":1,"1255":1,"1341":2,"2574":1}}],["print",{"2":{"75":2,"114":1,"119":1,"149":1,"199":1,"249":1,"374":6,"378":1,"434":1,"470":1,"503":1,"566":2,"1250":9,"1252":1,"1255":3,"1363":1,"1530":5,"1586":1,"1605":1,"1606":1,"1607":1,"1608":1,"1609":1,"1610":1,"1830":4,"1923":7,"2263":13,"2355":2,"2375":1,"2392":2,"2728":1,"2757":1}}],["printing",{"0":{"432":1,"434":1},"1":{"433":1,"434":1,"435":1},"2":{"49":1,"211":1,"432":1,"503":1,"1498":1,"1628":1}}],["printf",{"0":{"24":1},"2":{"160":1,"176":4,"334":1,"432":1,"467":1,"470":1,"1239":1,"1448":1,"2702":1}}],["prioritized",{"2":{"341":1}}],["priority",{"2":{"236":1,"496":2,"703":4,"2403":1}}],["prior",{"2":{"251":1,"552":1,"2355":2,"2392":2}}],["primitives",{"2":{"2573":1}}],["primarily",{"2":{"575":1,"1128":1,"1268":2,"2345":1}}],["primary",{"2":{"191":1,"656":1,"1388":1,"1531":1,"1811":1,"2129":1,"2136":1,"2250":1,"2697":2}}],["primekb",{"2":{"211":1}}],["primus75",{"2":{"211":1}}],["prnt",{"2":{"119":1,"2375":1,"2728":3}}],["preamble",{"0":{"2283":1}}],["prerequisite",{"2":{"2251":1}}],["prerequisites",{"0":{"564":1,"2429":1,"2457":1,"2459":1,"2460":1,"2462":1,"2464":1,"2493":1,"2506":1},"1":{"2494":1,"2495":1},"2":{"402":1,"403":1}}],["preloaded",{"2":{"1578":1,"2240":1}}],["pregenerated",{"2":{"659":1}}],["precompiled",{"2":{"2346":1}}],["precomputed",{"2":{"1401":1}}],["precalculated",{"2":{"1820":2,"1821":3,"2142":1}}],["precedence",{"0":{"2403":1},"2":{"509":1,"2042":2,"2123":1,"2264":1,"2401":2,"2644":1,"2735":1}}],["precision",{"2":{"222":2,"630":1,"1573":1,"1638":12}}],["precisely",{"2":{"1658":1}}],["precise",{"2":{"134":1,"1804":1,"1807":1,"1808":1}}],["pretty=oneline",{"2":{"529":1,"530":1}}],["pretty",{"2":{"378":1,"453":1,"555":1,"560":1,"1250":1,"1262":1,"1264":1,"1286":1,"1383":1,"1906":1,"2270":1,"2311":1,"2454":1,"2455":1}}],["pretend",{"2":{"100":1}}],["predetermined",{"2":{"1496":1}}],["predefined",{"0":{"1426":1,"1427":1,"1428":1,"1429":1},"2":{"231":1,"659":1,"1393":1,"1426":1,"1427":1,"1428":1,"1429":1,"1832":1,"1933":1,"2607":1}}],["predicted",{"2":{"337":1}}],["preonic",{"2":{"211":1,"1243":1}}],["preflashed",{"2":{"2235":1}}],["preformatted",{"2":{"292":1}}],["preferring",{"2":{"2566":1}}],["preferred",{"2":{"116":1,"389":1,"390":1,"391":1,"2252":1,"2277":1,"2303":1,"2468":2,"2548":1,"2553":1,"2565":2,"2566":2,"2584":1,"2614":1}}],["prefers",{"2":{"2556":1}}],["preference",{"2":{"2436":1,"2566":2,"2729":1}}],["preferences",{"2":{"291":1,"435":1,"1567":1,"2183":1,"2508":1}}],["preferable",{"2":{"1326":1,"1573":1,"1895":1}}],["preferably",{"2":{"522":1,"1347":1,"2498":1,"2566":1}}],["prefer",{"2":{"282":3,"341":1,"432":1,"434":1,"440":1,"453":1,"457":2,"468":1,"470":1,"476":1,"479":1,"480":1,"481":1,"1248":1,"1326":1,"2444":1,"2565":1,"2566":2,"2750":1}}],["prefix=",{"2":{"358":1}}],["prefixed",{"2":{"236":1,"435":2,"1335":1,"1357":1,"2396":1,"2407":1,"2410":1,"2710":1}}],["prefix",{"2":{"199":3,"236":1,"249":1,"266":1,"1357":1,"1361":1,"1530":1,"2075":1,"2181":1,"2753":1}}],["prebuilt",{"0":{"164":1},"2":{"164":2,"1249":1,"2242":1}}],["preinstalled",{"2":{"2031":1}}],["preinstall",{"2":{"160":1}}],["preprocess",{"2":{"2162":1,"2749":1}}],["preprocessor",{"2":{"211":1,"453":3,"496":1,"1359":1,"2262":2,"2571":1}}],["prepend",{"2":{"1729":1,"1952":1}}],["prep",{"2":{"114":1,"149":1,"236":1}}],["preparing",{"2":{"396":1,"1381":1}}],["prepare",{"0":{"2458":1},"1":{"2459":1,"2460":1,"2461":1,"2462":1,"2463":1,"2464":1,"2465":1,"2466":1,"2467":1},"2":{"149":1,"222":1,"249":1,"346":1,"2060":1,"2183":1,"2270":1,"2458":1}}],["prepared",{"2":{"134":1,"560":1}}],["prepares",{"2":{"56":1}}],["preparation",{"2":{"86":1,"142":1,"1822":1,"2143":1}}],["presumably",{"2":{"1242":1}}],["presc",{"2":{"705":1}}],["presence",{"2":{"249":1,"1300":1,"1863":1,"2300":1}}],["presents",{"2":{"522":1,"625":1,"1355":1,"2235":1,"2237":1}}],["present",{"2":{"34":1,"201":2,"206":1,"228":1,"229":1,"236":1,"374":2,"387":1,"405":1,"462":1,"508":1,"535":1,"548":1,"633":1,"635":1,"681":1,"689":1,"693":1,"1326":1,"1378":1,"2146":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":2,"2242":2,"2245":1,"2247":1,"2249":1,"2319":1,"2450":1,"2474":1,"2548":2,"2556":1,"2566":3,"2586":1,"2593":1,"2597":1,"2711":1}}],["presets",{"2":{"160":3,"659":1,"1820":3}}],["pressure",{"2":{"1531":1,"1863":1}}],["presses",{"2":{"505":1,"567":2,"660":1,"1344":1,"1361":2,"1438":1,"1515":1,"1565":2,"1638":1,"1676":1,"1801":1,"1809":1,"1874":1,"1951":1,"2125":1,"2129":1,"2169":1,"2314":2,"2417":2,"2643":1,"2645":1,"2653":1,"2710":1}}],["pressed",{"0":{"1365":1},"2":{"46":2,"98":1,"194":2,"199":1,"202":1,"222":1,"505":1,"515":2,"534":6,"571":1,"572":5,"573":1,"588":1,"1252":9,"1299":1,"1302":1,"1303":1,"1325":2,"1332":6,"1335":2,"1344":1,"1359":8,"1360":4,"1365":2,"1371":1,"1372":1,"1373":1,"1375":1,"1384":2,"1385":1,"1403":1,"1411":1,"1412":1,"1430":1,"1451":1,"1497":1,"1499":1,"1503":1,"1504":2,"1510":1,"1511":3,"1517":1,"1518":4,"1521":1,"1564":1,"1566":1,"1568":4,"1579":1,"1582":1,"1632":2,"1638":5,"1655":1,"1656":2,"1659":2,"1661":1,"1663":1,"1665":1,"1670":4,"1671":4,"1673":5,"1674":3,"1675":4,"1676":2,"1680":1,"1682":1,"1683":1,"1791":1,"1792":1,"1808":1,"1830":2,"1847":1,"1874":1,"1878":1,"1879":1,"1880":3,"1885":4,"1886":2,"1889":1,"1892":1,"1895":3,"1899":2,"1912":1,"1929":1,"1931":1,"1932":1,"1933":1,"1940":4,"1941":5,"1943":2,"1950":2,"2044":1,"2078":2,"2106":1,"2145":1,"2147":1,"2152":6,"2153":1,"2154":1,"2161":3,"2162":3,"2168":1,"2169":4,"2172":1,"2279":1,"2311":6,"2314":1,"2364":1,"2366":2,"2367":2,"2381":1,"2413":1,"2414":3,"2415":2,"2417":1,"2490":3,"2524":1,"2604":2,"2641":1,"2649":1,"2680":1,"2689":3,"2728":4,"2729":4,"2736":3,"2745":2,"2748":2}}],["press",{"0":{"1517":1,"1518":1,"2314":1,"2736":1},"2":{"99":1,"114":1,"134":1,"191":2,"194":7,"199":1,"202":2,"206":2,"235":1,"266":1,"331":1,"336":2,"505":9,"541":1,"542":2,"572":1,"573":1,"588":1,"624":2,"628":1,"1270":1,"1286":1,"1287":1,"1299":19,"1300":1,"1325":1,"1332":1,"1359":1,"1361":1,"1368":1,"1398":5,"1399":5,"1411":2,"1414":1,"1430":2,"1431":1,"1435":3,"1436":3,"1438":1,"1442":1,"1506":3,"1517":1,"1518":4,"1520":2,"1521":1,"1529":2,"1553":4,"1630":2,"1647":1,"1655":1,"1675":1,"1676":1,"1685":1,"1798":1,"1805":1,"1838":1,"1842":1,"1857":1,"1860":2,"1868":1,"1929":2,"1935":1,"1937":1,"1950":1,"2125":1,"2145":1,"2149":1,"2152":2,"2156":1,"2162":1,"2169":2,"2171":2,"2182":1,"2230":2,"2233":2,"2235":2,"2236":2,"2238":2,"2243":1,"2244":1,"2278":1,"2305":1,"2311":4,"2314":1,"2316":1,"2373":19,"2383":1,"2408":1,"2450":3,"2455":1,"2512":2,"2566":1,"2611":1,"2654":2,"2663":1,"2672":1,"2674":2,"2728":1,"2729":1,"2731":2,"2732":3,"2733":2,"2734":1,"2735":6,"2736":9,"2737":3}}],["pressing",{"2":{"73":1,"99":1,"202":2,"211":1,"332":1,"540":1,"541":1,"626":1,"1255":1,"1292":1,"1303":1,"1325":1,"1353":1,"1431":1,"1499":1,"1500":3,"1503":1,"1514":1,"1656":2,"1803":2,"1804":1,"1807":1,"1879":1,"1885":1,"1929":1,"1936":1,"1940":1,"1941":1,"2305":1,"2311":1,"2490":3,"2491":2,"2654":1,"2659":1,"2662":1,"2680":2,"2729":1,"2735":1,"2738":2}}],["pre",{"0":{"203":1,"575":1,"576":1,"577":1,"2524":1,"2540":1},"1":{"576":1,"577":1,"2541":1,"2542":1},"2":{"34":2,"176":1,"194":1,"203":4,"211":2,"266":1,"371":1,"380":1,"574":1,"576":2,"577":2,"684":1,"685":1,"1319":1,"2268":1,"2274":1,"2315":1,"2524":2,"2525":1,"2540":1,"2542":1,"2566":4,"2746":1,"2749":3}}],["prev",{"2":{"1402":1,"1408":1,"1559":1,"1572":1,"1665":2,"1727":1,"2034":1,"2183":1,"2184":1,"2355":1,"2357":1,"2369":1,"2376":1,"2384":1,"2393":2}}],["preview",{"2":{"558":1,"2510":2,"2566":2}}],["previewing",{"0":{"558":1}}],["previous",{"2":{"24":2,"56":1,"57":1,"58":1,"98":1,"107":1,"124":1,"126":1,"145":1,"149":1,"191":1,"206":1,"231":1,"344":1,"349":2,"351":1,"500":1,"628":1,"629":1,"1275":1,"1303":1,"1402":1,"1408":1,"1572":2,"1665":1,"1727":1,"1753":1,"1754":1,"1923":1,"1932":2,"1980":1,"1981":1,"2034":1,"2052":2,"2053":2,"2147":1,"2161":1,"2171":1,"2184":1,"2191":1,"2261":2,"2273":1,"2296":1,"2311":1,"2355":2,"2357":1,"2369":1,"2376":1,"2384":1,"2393":2,"2421":1,"2437":1,"2439":1,"2474":1,"2566":1,"2577":1,"2748":1}}],["previously",{"2":{"14":1,"50":1,"166":1,"169":1,"170":1,"182":1,"184":1,"234":1,"276":1,"692":1,"2066":1,"2125":1,"2147":1,"2557":1,"2577":1}}],["prevention",{"2":{"786":1}}],["preventing",{"2":{"190":2,"191":1,"229":1,"1886":1,"1894":2}}],["prevent",{"2":{"186":1,"191":2,"199":1,"211":1,"222":1,"249":1,"347":1,"505":1,"516":1,"533":1,"597":1,"617":1,"689":1,"698":1,"1674":1,"1886":1,"1899":1,"2065":1,"2107":1,"2150":1,"2263":1,"2423":1,"2517":1,"2522":1,"2564":1,"2614":1,"2711":1}}],["prevented",{"2":{"103":1}}],["prevents",{"2":{"6":1,"1368":1,"1675":1,"1876":1,"2728":1}}],["pros",{"2":{"2181":1,"2270":1}}],["professional",{"2":{"2144":1}}],["profiles",{"2":{"1859":1,"2508":1}}],["profile",{"2":{"450":1,"451":1,"452":1}}],["profiler",{"2":{"211":1}}],["proficient",{"2":{"352":1,"2722":1}}],["prone",{"2":{"1338":1,"1437":1,"1516":1,"1520":1}}],["providing",{"2":{"557":1,"614":1,"1393":1,"2302":1,"2306":1,"2506":1,"2523":1,"2550":1,"2578":1}}],["provided",{"2":{"70":1,"125":1,"164":1,"185":1,"363":1,"385":1,"430":2,"511":7,"681":2,"688":1,"692":3,"1227":1,"1249":1,"1265":1,"1359":1,"1441":1,"1573":1,"1634":1,"1637":2,"1670":1,"1859":2,"1870":1,"1871":1,"2130":1,"2150":1,"2152":1,"2293":1,"2348":1,"2482":1,"2550":1,"2566":3,"2567":1}}],["provides",{"2":{"24":1,"45":1,"69":1,"164":1,"174":1,"318":1,"402":1,"495":1,"559":1,"563":1,"565":1,"570":1,"642":1,"663":1,"1123":1,"1126":1,"1129":1,"1212":1,"1634":1,"1683":1,"1714":1,"1725":1,"1807":1,"1872":3,"1922":1,"1946":1,"2047":1,"2144":1,"2458":1,"2492":1,"2503":1,"2506":1,"2510":1,"2637":1,"2710":1}}],["provide",{"2":{"4":1,"160":1,"199":1,"213":1,"234":1,"436":1,"456":1,"516":1,"566":1,"696":1,"1314":1,"1316":1,"1317":1,"1430":1,"1439":1,"1440":1,"1573":1,"1637":1,"1714":1,"1716":1,"1721":1,"1722":1,"1791":1,"1872":1,"2118":1,"2263":1,"2305":1,"2351":1,"2540":1,"2542":1,"2546":1,"2571":1}}],["proves",{"2":{"481":1}}],["probe",{"2":{"2353":1,"2513":5}}],["probability",{"2":{"2038":1}}],["probably",{"2":{"233":1,"331":1,"472":1,"626":1,"1283":1,"1287":1,"1678":1,"1825":1,"2262":1,"2274":2,"2279":1,"2347":1,"2497":1,"2501":1,"2756":1}}],["problem",{"0":{"1298":1,"1677":1},"2":{"1242":1,"1274":1,"1281":1,"1293":1,"1340":1,"1383":1,"1410":1,"1416":1,"1499":1,"2305":1,"2311":1,"2752":1}}],["problems",{"0":{"549":1},"2":{"211":1,"254":1,"337":1,"376":4,"381":1,"397":1,"541":1,"554":1,"1295":1,"1337":1,"1398":1,"2262":1,"2293":1,"2424":1,"2454":1,"2466":1,"2516":1,"2755":1}}],["problematic",{"2":{"123":1,"254":1}}],["proceed",{"2":{"626":1,"2433":1}}],["procedures",{"2":{"2418":1}}],["procedure",{"0":{"357":1},"1":{"358":1,"359":1,"360":1,"361":1},"2":{"176":1,"191":1,"2122":1,"2130":1,"2566":1}}],["processes",{"2":{"342":1}}],["processed",{"2":{"114":1,"1338":1,"1359":2,"1377":1,"1379":1,"1404":2,"1518":1,"1832":1,"2152":2,"2172":1,"2406":1,"2605":1,"2643":1}}],["processors",{"2":{"552":1,"2150":1,"2310":2,"2743":1}}],["processor=stm32f411",{"2":{"374":3}}],["processor",{"2":{"70":1,"111":2,"191":1,"199":1,"380":1,"609":1,"1804":1,"2417":2,"2528":1,"2650":1,"2673":1}}],["processing",{"0":{"98":1,"1685":1},"2":{"4":1,"98":1,"112":1,"125":1,"185":1,"191":1,"199":1,"203":3,"249":1,"505":1,"571":1,"572":1,"587":1,"588":1,"698":1,"1221":1,"1222":1,"1223":1,"1332":1,"1385":1,"1446":2,"1448":1,"1515":1,"1516":1,"1559":1,"1615":1,"1685":1,"1853":1,"1886":1,"1899":1,"1901":1,"2152":2,"2299":1,"2403":1,"2413":1,"2414":3,"2584":2,"2687":1,"2749":1}}],["process",{"0":{"16":1,"23":1,"203":1,"572":1,"573":1,"1359":1,"1445":1,"1446":1,"2569":1,"2749":1},"1":{"1360":1,"1361":1,"1362":1,"1363":1,"1446":1},"2":{"0":1,"1":1,"3":1,"7":1,"9":1,"15":1,"19":1,"39":1,"46":3,"52":1,"76":1,"94":1,"114":1,"156":1,"176":2,"201":1,"203":6,"211":3,"222":3,"235":1,"236":1,"266":1,"277":1,"337":1,"342":1,"351":1,"353":1,"354":1,"355":1,"513":1,"534":5,"550":1,"560":1,"571":3,"572":2,"573":2,"574":3,"581":1,"584":1,"588":1,"592":1,"594":1,"607":2,"627":1,"628":1,"698":2,"1252":1,"1302":3,"1303":2,"1310":2,"1332":4,"1335":1,"1344":2,"1359":4,"1360":5,"1375":1,"1384":2,"1385":5,"1398":6,"1399":12,"1431":1,"1440":1,"1445":4,"1446":2,"1511":3,"1523":3,"1527":1,"1553":2,"1555":2,"1559":1,"1560":1,"1573":1,"1638":1,"1650":1,"1730":2,"1791":1,"1792":1,"1797":2,"1817":1,"1826":4,"1827":1,"1830":1,"1879":1,"1880":1,"1895":1,"1899":1,"1901":2,"1917":1,"1935":1,"1940":2,"1941":1,"1943":5,"1948":1,"1954":2,"2034":1,"2044":3,"2078":1,"2130":1,"2152":3,"2162":5,"2168":2,"2177":1,"2243":1,"2273":2,"2274":1,"2286":1,"2301":1,"2306":1,"2311":1,"2403":1,"2413":2,"2414":1,"2415":1,"2418":1,"2436":1,"2440":2,"2442":1,"2450":1,"2459":2,"2462":1,"2463":1,"2472":1,"2553":1,"2560":1,"2566":1,"2567":1,"2604":1,"2631":1,"2688":2,"2695":2,"2697":1,"2728":1,"2745":1,"2748":1,"2749":45}}],["props",{"2":{"2355":1,"2392":1}}],["proposed",{"2":{"282":3,"341":1,"352":1}}],["prophet",{"2":{"211":1}}],["property",{"2":{"475":1,"1292":1,"2577":2}}],["properties",{"0":{"475":1},"2":{"331":2,"475":1,"628":1,"1600":1,"1876":1,"2502":1,"2686":2}}],["properly",{"2":{"191":1,"222":1,"249":1,"502":1,"505":1,"1275":1,"1521":1,"1684":1,"1822":1,"1948":1,"1954":1,"2133":1,"2150":1,"2315":1,"2335":1,"2343":1,"2490":1,"2501":1,"2613":1}}],["proper",{"2":{"174":1,"399":1,"1238":1,"1239":1,"2437":1,"2515":1,"2517":1,"2550":1}}],["propagated",{"2":{"441":1}}],["propagate",{"2":{"149":1}}],["prologues",{"2":{"160":1}}],["prompts",{"2":{"2468":4}}],["prompt",{"2":{"376":1,"385":2,"628":1,"2347":1,"2355":1,"2438":1,"2460":1,"2506":1}}],["prompted",{"2":{"172":1,"2498":1}}],["promote",{"2":{"199":1}}],["prominent",{"2":{"2617":1}}],["prominently",{"2":{"131":1}}],["promicro",{"0":{"2286":1,"2655":1},"2":{"153":1,"222":1,"271":2,"277":1,"380":2,"1236":1,"1311":13,"1314":2,"2286":1,"2673":2}}],["promethium",{"2":{"114":1}}],["programatically",{"2":{"2149":1}}],["programs",{"0":{"2616":1},"2":{"1677":2,"1932":1,"2420":1,"2543":1,"2738":2,"2743":1}}],["program",{"0":{"1238":1},"1":{"1239":1,"1240":1},"2":{"336":1,"430":1,"432":2,"481":1,"560":1,"606":1,"689":1,"1134":1,"1221":1,"1234":1,"1380":3,"1499":1,"1511":1,"1918":1,"2110":1,"2144":1,"2263":1,"2277":1,"2417":2,"2429":3,"2457":3,"2570":3,"2627":1,"2743":3,"2754":1}}],["programmed",{"2":{"2455":1}}],["programmer>",{"2":{"2347":1}}],["programmers",{"2":{"470":1,"2335":1,"2347":1,"2353":1}}],["programmer",{"0":{"327":1},"2":{"327":1,"1238":3,"1436":3,"1796":1,"2230":4,"2233":1,"2236":2,"2262":1,"2329":1,"2331":1,"2333":1,"2335":1,"2337":1,"2339":1,"2347":2,"2418":1,"2453":3,"2712":3}}],["programmatically",{"2":{"1637":1,"1729":1,"1952":1,"2178":1}}],["programmatic",{"2":{"1578":1}}],["programmable",{"0":{"1832":1,"1836":1,"1837":1,"1839":1,"1841":1,"1843":1,"1845":1,"1848":1,"1849":1,"1851":1,"2380":1},"1":{"1833":1,"1834":1,"1835":1,"1836":1,"1837":1,"1838":2,"1839":1,"1840":2,"1841":1,"1842":2,"1843":1,"1844":2,"1845":1,"1846":2,"1847":2,"1848":1,"1849":1,"1850":2,"1851":1,"1852":2},"2":{"134":4,"149":1,"188":1,"190":1,"191":3,"231":3,"1221":1,"1832":2,"1834":64,"1836":1,"1848":1,"1849":1,"1850":1,"1851":1,"1852":1,"2305":1,"2380":65,"2543":1,"2749":1}}],["programming",{"0":{"571":1,"2306":1},"1":{"572":1,"573":1},"2":{"552":1,"1918":1,"1921":1,"2323":1,"2348":1,"2417":1,"2427":1,"2453":1,"2503":1,"2629":1,"2638":2,"2742":1}}],["progressively",{"2":{"213":1}}],["progress",{"2":{"113":1,"315":1,"654":1,"2071":1}}],["progressed",{"2":{"109":1}}],["progmem",{"2":{"94":1,"114":1,"149":1,"247":1,"530":1,"669":1,"734":2,"760":2,"790":2,"824":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1148":2,"1359":2,"1440":1,"1448":1,"1453":1,"1508":2,"1509":2,"1510":2,"1511":6,"1523":1,"1548":1,"1559":1,"1594":1,"1609":1,"1610":1,"1613":1,"1614":1,"1792":1,"1814":1,"1822":3,"2040":7,"2042":5,"2044":3,"2085":1,"2087":1,"2138":1,"2143":3,"2155":1,"2157":1,"2164":1,"2181":1,"2182":1,"2401":1,"2406":2,"2423":1,"2747":1}}],["pro",{"0":{"271":1,"1315":1,"1318":2,"2329":1,"2541":1},"1":{"1316":1,"1317":1,"1318":1,"1319":1,"1320":1,"1321":1,"2330":1},"2":{"77":1,"86":2,"102":3,"114":12,"134":2,"143":2,"149":2,"159":4,"160":2,"163":1,"172":1,"176":4,"189":1,"191":2,"197":2,"199":1,"222":3,"236":2,"271":2,"487":1,"509":1,"625":1,"629":2,"1240":1,"1311":1,"1313":1,"1315":8,"1320":1,"1323":1,"1324":1,"2114":1,"2116":1,"2119":1,"2120":1,"2126":2,"2132":1,"2233":1,"2234":1,"2266":1,"2268":1,"2269":2,"2329":2,"2330":3,"2331":1,"2344":3,"2348":1,"2427":1,"2527":1,"2529":1,"2530":6,"2539":2,"2541":2,"2542":1,"2545":1,"2655":1,"2709":3,"2712":4}}],["producing",{"2":{"93":1,"2031":1}}],["production",{"0":{"2307":1,"2349":1},"2":{"2231":3,"2238":3,"2307":1,"2349":2}}],["products",{"2":{"142":1,"684":3,"1242":1,"2671":1}}],["product",{"2":{"70":1,"134":2,"169":2,"184":2,"191":2,"502":2,"629":1,"684":4,"685":1,"1242":4,"1254":1,"1921":2,"1923":5,"2231":2,"2238":2,"2299":1,"2328":1,"2566":1,"2672":2,"2699":1}}],["produces",{"2":{"1393":1,"1503":2,"1684":1,"1935":2,"1943":2}}],["produced",{"2":{"371":1,"502":1,"1935":2,"2243":1,"2244":1,"2622":1,"2623":1}}],["produce",{"2":{"49":1,"170":1,"209":1,"266":1,"661":1,"1431":3,"1440":1,"1508":1,"1794":1,"2274":1,"2319":1,"2427":1}}],["protozoa",{"2":{"211":2}}],["prototypist",{"2":{"143":2,"149":1,"211":3,"222":2}}],["prototypes",{"2":{"133":1,"134":1,"2307":1,"2566":1}}],["prototype",{"2":{"114":1,"191":1,"2307":1,"2564":1}}],["proto",{"2":{"114":1,"134":1,"253":1}}],["protocol=serial",{"2":{"266":1,"277":1}}],["protocols",{"0":{"2149":1},"2":{"133":1,"134":1,"1491":1,"2146":2,"2149":3,"2150":1}}],["protocol",{"0":{"2146":1},"1":{"2147":1,"2148":1,"2149":1},"2":{"50":1,"75":1,"111":2,"112":1,"113":1,"114":1,"133":3,"134":3,"160":1,"176":2,"191":1,"199":2,"222":1,"236":2,"249":1,"263":1,"265":1,"266":1,"334":1,"511":1,"516":1,"1212":1,"1215":1,"1491":1,"1574":1,"1855":1,"1867":1,"1869":1,"1910":1,"2031":1,"2129":1,"2146":1,"2147":2,"2148":2,"2149":6,"2150":2,"2152":4,"2233":1,"2243":1,"2314":1,"2626":2,"2697":4,"2698":2,"2743":2,"2744":1}}],["proton",{"0":{"1140":1,"1316":1,"1392":1,"2527":1},"1":{"2528":1,"2529":1,"2530":1},"2":{"49":3,"50":2,"77":1,"134":2,"160":1,"172":2,"189":2,"489":1,"509":1,"663":1,"703":1,"1129":2,"1177":1,"1198":1,"1234":1,"1311":1,"1313":2,"1315":4,"1316":2,"1319":1,"1392":1,"1469":1,"2126":1,"2241":1,"2266":1,"2268":1,"2269":1,"2513":2,"2527":1,"2529":2,"2530":6,"2709":1}}],["protected",{"2":{"2627":1}}],["protect",{"2":{"26":1,"684":1,"2311":1}}],["project¹",{"2":{"2501":1}}],["projectcain",{"2":{"249":1}}],["projects",{"0":{"1234":1,"2307":1},"1":{"1235":1},"2":{"204":1,"502":2,"606":1,"2229":1,"2257":1,"2297":1,"2299":1,"2497":1,"2498":1}}],["project",{"0":{"42":1,"552":1,"2259":1,"2294":1,"2501":1},"2":{"211":2,"213":1,"291":1,"331":1,"352":1,"460":1,"501":1,"550":1,"554":1,"562":1,"1234":1,"1265":1,"1831":1,"2144":1,"2250":2,"2256":1,"2257":2,"2259":2,"2279":1,"2307":3,"2309":1,"2498":1,"2501":5,"2502":6,"2553":2,"2637":1}}],["pr",{"0":{"354":1,"361":1,"2563":1},"1":{"2564":1,"2565":1,"2566":1,"2567":1,"2568":1,"2569":1,"2570":1},"2":{"1":1,"14":1,"32":1,"36":1,"49":1,"130":1,"134":1,"149":2,"191":1,"198":1,"199":1,"229":1,"236":1,"255":1,"256":1,"265":1,"273":1,"275":1,"282":12,"341":11,"344":1,"345":1,"346":1,"347":1,"354":1,"360":1,"446":1,"447":2,"556":2,"559":1,"560":2,"1326":1,"1329":3,"1346":1,"1511":1,"2149":1,"2153":3,"2564":8,"2566":8,"2567":6,"2569":2,"2674":2}}],["prs",{"0":{"38":1,"2564":1,"2565":1,"2566":1,"2567":1},"2":{"1":1,"21":1,"134":1,"188":1,"199":1,"213":1,"224":1,"233":1,"251":2,"265":1,"268":2,"275":1,"337":1,"340":4,"341":4,"343":3,"344":1,"345":1,"350":9,"399":1,"556":1,"560":1,"2563":1,"2564":1,"2565":1,"2566":4,"2567":3,"2568":1,"2569":3}}],["tft",{"2":{"2284":1,"2576":1}}],["tbd",{"2":{"2238":1}}],["tbk",{"2":{"277":1}}],["tsr",{"2":{"2153":1}}],["tsangan",{"2":{"211":2}}],["tl",{"2":{"2153":3,"2173":2}}],["td",{"2":{"1509":2,"2161":1,"2164":4,"2165":1,"2167":1,"2168":1,"2169":41,"2170":26,"2171":25}}],["tps65",{"2":{"1858":1,"1859":2}}],["tps43",{"2":{"1858":1,"1859":2}}],["tpyo",{"2":{"1447":1}}],["tpm754",{"2":{"1289":2}}],["t6181",{"2":{"1290":1}}],["t1l",{"2":{"1224":1}}],["t1h",{"2":{"1214":1,"1215":1,"1224":1}}],["tmpu",{"2":{"2112":1}}],["tmpd",{"2":{"2112":1}}],["tm023023",{"2":{"1862":1}}],["tm035035",{"2":{"1862":1}}],["tm040040",{"2":{"1862":1}}],["tm1812",{"2":{"1216":1}}],["tmk",{"0":{"560":1,"1265":1},"2":{"1":1,"38":1,"49":1,"75":2,"113":4,"114":5,"133":3,"134":3,"176":1,"199":1,"222":2,"515":2,"1242":2,"1257":1,"1265":6,"1274":2,"1275":4,"1281":2,"1283":2,"1287":1,"1293":1,"1298":2,"1491":1,"2257":3,"2401":1,"2406":1,"2450":1,"2623":1,"2743":1}}],["t0l",{"2":{"293":1,"1224":1}}],["t0h",{"2":{"293":1,"1214":1,"1215":1,"1224":1}}],["tty",{"2":{"2347":1}}],["ttyacmx",{"2":{"2347":1}}],["ttf",{"2":{"409":1,"2573":1,"2575":3,"2577":1}}],["tt",{"2":{"194":1,"505":1,"1335":2,"1582":1,"1886":1,"2156":2,"2367":1,"2383":1,"2737":1}}],["txbolt",{"2":{"2147":1,"2698":1}}],["txen1",{"2":{"1907":1}}],["txled",{"2":{"1316":1,"1320":1}}],["tx",{"0":{"2147":1},"2":{"277":1,"1126":4,"1127":3,"1129":8,"1130":6,"1134":1,"1140":11,"1141":9,"1142":8,"1197":2,"1198":4,"1314":1,"2146":1,"2147":3,"2148":1,"2150":1,"2153":4,"2530":2,"2541":3,"2543":2}}],["txt",{"2":{"191":1,"364":1,"405":2,"429":1,"1440":1,"1442":1,"2474":4}}],["txuu",{"2":{"143":2}}],["tube",{"2":{"2270":1}}],["tuning",{"2":{"1940":1,"2737":1}}],["tuned",{"2":{"1863":1,"2560":1}}],["tunes",{"2":{"1386":1}}],["tune",{"2":{"176":2,"1658":1,"1676":1,"1941":1,"2607":1,"2740":1}}],["tuple",{"2":{"467":2,"469":1}}],["tuples",{"0":{"467":1},"2":{"467":1}}],["tutorial",{"0":{"2417":1},"1":{"2418":1,"2419":1},"2":{"327":1,"701":1,"2427":1,"2428":2,"2484":1,"2486":1,"2494":1,"2723":2}}],["tuv",{"2":{"266":1}}],["tuvw",{"2":{"249":1}}],["turquoise",{"2":{"1953":2,"2058":2}}],["turing",{"2":{"1894":2}}],["turkish",{"2":{"134":1,"1355":2,"2712":6}}],["turnaround",{"2":{"265":1,"2442":1}}],["turn",{"0":{"2167":1},"2":{"92":1,"124":1,"152":1,"222":1,"347":1,"588":1,"610":1,"615":1,"658":1,"1124":1,"1136":1,"1217":1,"1245":1,"1398":1,"1456":2,"1458":1,"1462":1,"1474":1,"1475":1,"1486":1,"1487":1,"1572":2,"1600":1,"1602":1,"1669":2,"1722":2,"1727":2,"1730":1,"1737":1,"1738":1,"1739":1,"1740":1,"1793":2,"1815":1,"1822":2,"1899":1,"1949":3,"1954":1,"1964":1,"1965":1,"1966":1,"1967":1,"2044":2,"2053":4,"2063":1,"2108":1,"2139":1,"2143":2,"2145":1,"2156":5,"2167":2,"2263":1,"2305":1,"2360":2,"2367":3,"2369":2,"2371":2,"2383":5,"2408":1,"2543":1,"2566":1,"2605":1,"2676":1,"2677":1,"2685":1,"2688":1,"2694":1,"2695":1,"2744":1}}],["turned",{"2":{"77":1,"504":3,"560":2,"1404":1,"1459":1,"1534":1,"1562":1,"1718":1,"2044":1,"2182":1,"2560":1}}],["turns",{"2":{"31":1,"34":1,"152":1,"502":1,"1332":1,"1341":10,"1398":2,"1403":2,"1406":2,"1408":6,"1434":2,"1443":2,"1449":2,"1499":1,"1500":4,"1501":2,"1503":1,"1504":1,"1505":2,"1507":1,"1512":2,"1717":2,"1730":1,"1816":1,"1817":1,"1822":3,"1954":1,"2141":1,"2143":4,"2158":2,"2161":1,"2262":2,"2357":6,"2358":2,"2359":2,"2367":2,"2379":2,"2490":2,"2575":1,"2603":2,"2680":2}}],["turning",{"2":{"13":1,"25":1,"134":1,"195":1,"592":1,"1398":1,"1815":1,"1898":1,"2139":1,"2263":1,"2631":1,"2744":1}}],["tzarc",{"2":{"174":1,"176":1}}],["typ65+",{"2":{"211":1}}],["typists",{"2":{"1326":1,"2735":1,"2736":1}}],["typically",{"2":{"613":1,"1217":1,"1265":1,"1268":1,"1338":1,"1411":1,"1637":1,"1819":1,"2169":1,"2263":1,"2301":2,"2406":1,"2625":1,"2627":1,"2665":1,"2745":1,"2746":1}}],["typical",{"2":{"194":1,"430":1,"1335":1,"1471":1,"1499":1,"2406":1}}],["typing",{"0":{"1935":1,"1950":1},"2":{"152":1,"195":1,"211":1,"246":1,"586":1,"1338":1,"1406":1,"1435":1,"1442":2,"1448":1,"1503":2,"1683":1,"1684":2,"1885":1,"1929":1,"1935":2,"1943":2,"1949":3,"1950":6,"2062":1,"2084":1,"2088":1,"2144":1,"2154":1,"2169":5,"2183":1,"2226":5,"2279":1,"2512":2,"2651":1,"2708":1,"2740":1,"2754":1}}],["typographic",{"2":{"199":1}}],["typos",{"2":{"134":2,"249":1,"1437":1,"1438":3,"1440":1,"1441":2,"1445":1}}],["typo",{"2":{"114":4,"134":4,"149":3,"176":1,"191":1,"249":1,"1438":3,"1440":3,"1441":4,"1442":2,"1445":2,"1446":4,"1447":4,"1448":4,"1451":4,"1452":1}}],["typeid",{"2":{"2585":2,"2587":1,"2588":1,"2589":1,"2590":2,"2591":2,"2592":2,"2594":1,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1}}],["typed",{"2":{"1356":2,"1436":1,"1437":1,"1530":1,"1673":1,"1674":1,"1675":9,"1934":2,"1935":1,"2169":1,"2182":1,"2728":1}}],["typedef",{"2":{"236":1,"1821":1,"1822":1,"2130":1,"2143":1,"2169":1,"2170":1,"2171":2,"2588":1}}],["typewriter",{"2":{"236":1}}],["typenames",{"2":{"176":1}}],["types",{"0":{"612":1,"1326":1},"2":{"114":2,"119":1,"149":1,"191":1,"196":2,"236":1,"496":2,"556":1,"612":1,"1570":1,"1680":2,"1820":1,"1929":1,"1935":1,"2078":1,"2079":2,"2229":2,"2375":1,"2575":2,"2661":1,"2728":1}}],["type",{"0":{"480":1,"1813":1},"2":{"49":2,"111":1,"112":1,"114":2,"132":1,"143":2,"149":1,"152":2,"160":1,"199":1,"211":1,"222":1,"236":4,"249":3,"273":1,"277":1,"314":1,"324":1,"373":1,"445":1,"480":1,"496":1,"515":1,"541":1,"556":1,"580":1,"610":1,"627":2,"628":1,"641":1,"1290":2,"1325":1,"1326":1,"1329":2,"1330":1,"1353":1,"1355":2,"1357":1,"1359":2,"1385":1,"1403":1,"1406":1,"1435":2,"1442":2,"1451":1,"1452":2,"1491":1,"1499":2,"1508":1,"1521":1,"1534":1,"1630":1,"1655":2,"1657":1,"1684":2,"1725":3,"1820":4,"1821":1,"1855":1,"1867":1,"1869":1,"1870":1,"1871":1,"1894":1,"1895":1,"1900":1,"1946":3,"2062":1,"2081":1,"2082":1,"2083":1,"2084":1,"2085":1,"2086":1,"2087":1,"2088":1,"2089":1,"2090":1,"2091":1,"2092":1,"2093":1,"2094":1,"2095":1,"2096":1,"2097":1,"2098":1,"2099":1,"2126":1,"2142":3,"2154":2,"2155":1,"2169":4,"2170":2,"2171":1,"2179":1,"2182":1,"2262":1,"2263":1,"2294":1,"2300":6,"2313":1,"2347":1,"2450":1,"2490":3,"2513":1,"2514":1,"2573":1,"2576":1,"2585":1,"2587":2,"2588":2,"2589":2,"2592":1,"2593":4,"2594":2,"2595":2,"2596":2,"2597":2,"2598":2,"2599":2,"2661":1,"2674":1,"2688":1,"2695":1,"2740":1,"2754":1}}],["tweezers",{"2":{"2266":1,"2273":1}}],["tweak",{"2":{"119":1,"1950":1,"2038":1,"2416":1}}],["tweaks",{"0":{"2707":1},"2":{"94":1,"149":1,"277":1,"2515":1}}],["tw40",{"2":{"241":2}}],["tw",{"2":{"93":1,"2034":1,"2376":1}}],["twisting",{"2":{"2272":1}}],["twinkling",{"2":{"2038":1}}],["twinkle",{"2":{"74":1,"93":1,"114":1,"231":1,"2034":2,"2036":2,"2037":2,"2038":3,"2040":2,"2376":2,"2708":1}}],["twi",{"2":{"249":1}}],["twig50",{"2":{"191":1}}],["twice",{"2":{"92":1,"1411":1,"2111":1,"2160":1,"2161":1,"2164":1,"2233":1,"2344":1,"2680":1}}],["two",{"0":{"297":1,"298":1,"1702":1},"1":{"1703":1,"1704":1},"2":{"18":1,"31":1,"34":1,"35":1,"49":1,"114":1,"149":1,"196":2,"203":1,"222":1,"255":1,"277":1,"282":1,"297":1,"298":1,"334":1,"414":1,"432":1,"479":1,"496":1,"556":1,"560":1,"572":1,"589":1,"606":1,"614":2,"625":1,"633":1,"655":2,"662":1,"1121":3,"1129":2,"1181":1,"1273":1,"1300":1,"1303":2,"1319":1,"1326":1,"1335":1,"1346":1,"1359":1,"1377":1,"1387":1,"1391":1,"1395":1,"1399":1,"1416":1,"1430":1,"1451":3,"1452":1,"1515":1,"1520":1,"1523":1,"1548":1,"1553":1,"1559":1,"1562":3,"1589":1,"1636":1,"1637":1,"1638":1,"1680":2,"1686":1,"1787":1,"1791":1,"1812":1,"1816":1,"1821":2,"1858":1,"1860":3,"1901":1,"1903":1,"1906":1,"1922":1,"1943":1,"1949":1,"2039":1,"2042":1,"2061":1,"2063":1,"2079":1,"2095":1,"2114":3,"2116":2,"2119":1,"2120":1,"2140":1,"2147":2,"2152":1,"2153":1,"2162":1,"2169":2,"2272":3,"2305":1,"2402":1,"2411":1,"2452":1,"2474":1,"2478":1,"2513":1,"2530":1,"2540":1,"2543":1,"2569":1,"2600":1,"2706":1,"2735":2,"2750":2,"2757":1}}],["tgr",{"2":{"122":2,"134":1}}],["tg",{"2":{"38":1,"1335":2,"1886":3,"1899":2,"2161":1,"2171":3,"2367":1}}],["tkm",{"2":{"114":1,"211":1}}],["tkc",{"2":{"43":4,"211":3}}],["tkc1800",{"0":{"33":1,"34":1},"1":{"34":1},"2":{"33":2,"34":1,"43":2,"2617":1}}],["tkl87",{"2":{"270":1,"277":1}}],["tklfrlnrlmlao",{"2":{"211":1}}],["tkl",{"2":{"18":2,"110":1,"197":6,"211":5,"226":2,"236":1,"253":2,"2153":1,"2445":1,"2553":1,"2566":1}}],["tate",{"2":{"1943":1}}],["talking",{"2":{"560":1,"2114":1}}],["talk",{"2":{"554":1,"560":2,"561":1,"1181":1,"2255":1,"2353":1}}],["tandem",{"2":{"357":1}}],["tag+=",{"2":{"1254":1}}],["tagging",{"2":{"358":1}}],["tagged",{"2":{"340":1}}],["tag",{"2":{"211":1,"228":1,"292":1,"347":2,"349":1,"358":2,"359":1,"559":1,"2513":1,"2514":1}}],["tags",{"0":{"110":1},"2":{"110":5,"358":2,"359":1,"360":2,"2479":1,"2615":1,"2672":2}}],["tabbing",{"2":{"1302":1}}],["tabs",{"0":{"294":1},"1":{"295":1,"296":1,"297":1,"298":1,"299":1},"2":{"294":1,"453":1,"455":1,"2277":1,"2565":1}}],["tabsification",{"2":{"191":1}}],["tab",{"0":{"295":1,"298":1,"299":1,"448":1,"1302":1,"1418":1},"1":{"296":1,"297":1,"449":1,"450":1,"451":1,"452":1},"2":{"222":1,"294":1,"313":1,"331":3,"335":1,"448":2,"449":1,"450":1,"451":4,"452":2,"520":1,"521":1,"530":2,"628":1,"1269":3,"1292":1,"1302":4,"1375":14,"1417":1,"1418":1,"1423":2,"1429":1,"1510":1,"1511":3,"1527":2,"1933":9,"2075":2,"2150":2,"2169":2,"2228":1,"2355":2,"2388":2,"2398":1,"2401":1,"2407":1,"2411":1,"2439":1,"2490":1,"2502":2,"2615":1}}],["tables",{"0":{"289":1},"2":{"2076":1,"2535":1,"2660":1,"2711":1}}],["tablet",{"2":{"100":1,"1334":1}}],["table",{"0":{"404":1,"2588":1,"2589":1},"2":{"55":1,"160":1,"191":1,"199":1,"247":1,"404":3,"616":1,"617":2,"621":1,"628":1,"635":1,"659":3,"663":1,"1127":1,"1130":1,"1393":1,"1466":1,"1467":1,"1725":1,"1885":1,"1946":1,"2036":1,"2155":1,"2181":2,"2182":7,"2224":1,"2263":2,"2272":1,"2317":1,"2531":1,"2544":1,"2577":2,"2587":6,"2588":4,"2589":3}}],["taking",{"2":{"284":1,"352":1,"550":1,"1943":1,"2042":1,"2313":1,"2474":1,"2502":1,"2735":1}}],["takashicompany",{"2":{"249":2,"390":2}}],["takashiski",{"2":{"143":4,"149":2}}],["takai",{"2":{"149":1}}],["taken",{"2":{"352":1,"430":1,"1337":1,"1534":1,"2161":1,"2324":1}}],["take",{"0":{"1253":1},"2":{"134":1,"191":2,"194":1,"222":1,"236":1,"331":1,"335":1,"358":1,"415":1,"513":1,"551":1,"560":1,"606":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"1189":1,"1192":1,"1207":1,"1209":1,"1273":1,"1361":1,"1672":1,"1675":1,"1676":1,"1822":1,"2042":1,"2063":1,"2122":1,"2171":1,"2264":1,"2273":1,"2306":1,"2417":1,"2462":1,"2546":1,"2569":1,"2578":1,"2702":1,"2718":1,"2747":1,"2753":1,"2757":1}}],["takes",{"2":{"49":1,"415":1,"683":1,"1278":1,"1294":1,"1325":1,"1524":1,"1573":1,"1660":1,"1661":1,"1662":1,"1675":1,"1825":1,"2149":1,"2161":1,"2169":1,"2255":1,"2407":1,"2473":1,"2644":1,"2707":1}}],["taurus",{"2":{"114":1}}],["ta65",{"2":{"57":2}}],["taro",{"2":{"143":2}}],["targeted",{"2":{"2550":1}}],["targetted",{"2":{"2132":1}}],["target2initiator",{"2":{"2130":4}}],["targets",{"0":{"2232":1,"2234":1,"2239":1,"2241":1,"2246":1,"2248":1,"2446":1,"2447":1},"2":{"173":1,"176":1,"199":1,"204":1,"213":1,"236":1,"374":5,"393":2,"394":2,"395":2,"396":1,"552":1,"2126":1,"2132":1,"2262":1,"2446":1,"2447":2,"2448":1,"2513":3,"2567":1}}],["targeting",{"2":{"149":1,"350":3,"1125":1,"1128":1,"2551":1,"2565":1,"2566":1}}],["target",{"0":{"1886":1,"1894":1,"1898":1,"1900":1},"2":{"49":2,"94":1,"114":3,"149":1,"160":1,"198":1,"236":1,"240":1,"266":23,"292":1,"361":4,"371":1,"374":2,"396":1,"455":1,"661":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"727":1,"1127":1,"1130":1,"1227":1,"1312":2,"1313":1,"1315":2,"1322":2,"1340":1,"1385":1,"1820":4,"1885":6,"1886":12,"1887":1,"1889":1,"1892":1,"1894":8,"1895":1,"1897":4,"1898":6,"1899":1,"1900":3,"1901":1,"2230":1,"2231":2,"2233":1,"2235":1,"2236":1,"2237":1,"2238":2,"2240":1,"2242":1,"2243":1,"2244":1,"2252":4,"2262":5,"2300":1,"2320":1,"2328":2,"2339":1,"2347":1,"2353":1,"2454":2,"2496":1,"2502":2,"2513":3,"2564":1,"2567":1,"2576":3}}],["tartan",{"2":{"37":2}}],["tasks",{"2":{"76":1,"149":1,"363":1,"515":1,"592":1,"1463":1,"1508":1,"2743":1}}],["task",{"0":{"125":1,"588":1,"1901":1,"2584":1},"2":{"31":2,"34":1,"49":1,"64":1,"84":1,"93":1,"113":1,"114":1,"125":4,"134":5,"149":2,"211":1,"266":2,"277":1,"569":1,"581":1,"587":2,"588":2,"597":1,"1316":1,"1317":1,"1464":1,"1730":1,"1813":2,"1814":1,"1815":1,"1816":1,"1822":5,"1823":4,"1863":1,"1870":2,"1872":2,"1874":2,"1875":3,"1876":2,"1879":2,"1880":1,"1882":1,"1883":1,"1900":1,"1901":8,"1954":1,"2130":2,"2137":2,"2139":1,"2140":1,"2143":4,"2162":1,"2418":1,"2472":1,"2574":4,"2577":7,"2584":5,"2688":1,"2695":1,"2744":3}}],["tapdance",{"2":{"2170":11}}],["tape",{"2":{"2150":2,"2270":2,"2280":2}}],["tapped",{"2":{"505":1,"1303":1,"1335":1,"1336":1,"1375":1,"1446":2,"1500":1,"1518":2,"1582":3,"1886":1,"2104":7,"2106":7,"2107":3,"2156":2,"2160":1,"2161":4,"2169":2,"2170":3,"2355":1,"2367":2,"2374":22,"2382":7,"2383":2,"2393":1,"2410":23,"2411":1,"2490":1,"2729":1,"2735":3}}],["tapping",{"0":{"119":1,"195":1,"1518":1,"2375":1,"2727":1,"2728":1,"2738":1},"1":{"2728":1,"2739":1},"2":{"22":2,"49":1,"63":1,"112":11,"119":11,"134":2,"149":1,"160":1,"176":1,"188":1,"191":1,"194":1,"195":6,"199":3,"203":1,"222":3,"503":2,"505":12,"515":2,"1335":2,"1379":1,"1411":1,"1412":2,"1416":1,"1431":6,"1432":1,"1435":1,"1446":2,"1451":1,"1500":6,"1516":1,"1582":1,"1677":2,"1865":3,"1866":1,"1886":2,"1889":1,"1929":2,"2106":1,"2156":2,"2161":9,"2162":4,"2169":4,"2170":1,"2171":7,"2236":1,"2375":9,"2490":1,"2661":1,"2674":1,"2703":2,"2727":9,"2728":50,"2729":6,"2730":2,"2734":6,"2735":6,"2736":4,"2737":8,"2738":11,"2739":2,"2749":1}}],["taps",{"0":{"2166":1,"2412":1,"2731":1},"1":{"2413":1,"2414":1,"2415":1},"2":{"98":1,"176":1,"191":1,"194":7,"211":1,"505":2,"660":1,"1335":2,"1368":1,"1431":2,"1432":1,"1500":2,"1677":1,"1683":1,"1685":2,"1863":2,"2079":1,"2156":1,"2161":1,"2162":1,"2168":1,"2169":2,"2398":2,"2566":1,"2728":2,"2738":1}}],["tap",{"0":{"15":1,"22":1,"194":1,"195":1,"206":1,"1306":1,"1308":1,"1361":1,"1368":1,"1369":1,"1370":2,"1432":1,"2099":1,"2159":1,"2161":1,"2164":2,"2168":1,"2169":1,"2170":3,"2171":1,"2374":1,"2410":1,"2413":1,"2415":1,"2539":1,"2611":1,"2662":1,"2663":1,"2726":1,"2729":1,"2732":1,"2737":1},"1":{"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1,"2411":1,"2412":1,"2413":1,"2414":1,"2415":1,"2416":1,"2727":1,"2728":1,"2729":1,"2730":2,"2731":2,"2732":2,"2733":2,"2734":2,"2735":2,"2736":2,"2737":1,"2738":1,"2739":1,"2740":1,"2741":1},"2":{"22":3,"38":1,"49":3,"74":1,"90":8,"112":5,"120":3,"134":1,"149":4,"152":2,"176":7,"191":4,"194":14,"195":10,"196":1,"199":6,"203":3,"206":3,"211":3,"222":3,"249":1,"266":1,"277":1,"317":1,"365":1,"503":1,"505":18,"533":2,"626":1,"1306":1,"1308":1,"1335":2,"1336":1,"1340":1,"1354":3,"1357":4,"1361":7,"1363":1,"1368":3,"1369":1,"1375":2,"1385":1,"1409":2,"1411":2,"1412":2,"1423":1,"1430":4,"1431":6,"1432":1,"1445":1,"1446":11,"1448":1,"1451":1,"1500":4,"1503":1,"1509":2,"1511":3,"1516":1,"1518":16,"1559":1,"1560":4,"1582":5,"1630":1,"1677":1,"1680":1,"1683":1,"1685":1,"1805":3,"1860":8,"1865":4,"1866":5,"1885":4,"1886":2,"1929":1,"1948":1,"2034":1,"2075":1,"2079":1,"2102":2,"2106":4,"2107":2,"2149":2,"2156":4,"2160":1,"2161":30,"2162":21,"2164":8,"2165":1,"2166":5,"2167":12,"2168":58,"2169":53,"2170":23,"2171":49,"2179":1,"2196":4,"2197":3,"2198":3,"2228":8,"2237":1,"2240":2,"2242":2,"2243":1,"2244":1,"2245":4,"2247":4,"2249":5,"2374":1,"2383":1,"2410":3,"2411":3,"2413":4,"2414":7,"2415":5,"2416":2,"2461":1,"2490":4,"2491":2,"2539":7,"2541":1,"2566":1,"2611":1,"2645":1,"2662":1,"2663":1,"2674":4,"2680":1,"2687":3,"2691":2,"2703":2,"2724":2,"2726":2,"2727":1,"2728":7,"2729":4,"2730":2,"2734":1,"2735":10,"2736":4,"2737":14,"2738":2,"2740":1,"2749":2,"2754":4}}],["ti",{"2":{"2622":1}}],["tie",{"2":{"2614":1}}],["tied",{"2":{"357":1,"2320":1,"2616":1}}],["tin",{"2":{"2272":1}}],["tiny",{"0":{"2522":1}}],["tinyuf2",{"0":{"2245":1},"1":{"2246":1},"2":{"93":1,"176":1,"199":1,"277":1,"2245":5,"2522":2}}],["tinyprintf",{"0":{"24":1}}],["tion",{"2":{"1943":2}}],["tilde",{"2":{"1666":2,"2378":1,"2399":1,"2711":1}}],["tild",{"2":{"1336":1,"2378":1,"2399":1,"2411":1}}],["tips",{"0":{"620":1,"1350":1},"1":{"1351":1,"1352":1},"2":{"1803":1,"1804":1,"1807":1,"2272":1,"2274":1}}],["tip",{"0":{"1541":1,"1542":1},"2":{"290":2,"317":1,"445":1,"496":1,"537":1,"539":1,"540":1,"592":1,"597":1,"620":4,"627":1,"657":1,"684":1,"702":1,"1121":1,"1138":1,"1230":1,"1312":1,"1328":1,"1329":2,"1341":1,"1359":1,"1364":1,"1385":1,"1416":1,"1441":1,"1445":1,"1446":1,"1447":1,"1448":1,"1496":1,"1531":2,"1533":1,"1537":2,"1541":1,"1542":1,"1548":1,"1553":1,"1559":2,"1560":1,"1636":1,"1714":1,"1728":1,"1729":1,"1814":1,"1825":1,"1832":1,"1859":1,"1884":1,"1939":1,"1948":1,"1949":2,"1952":1,"1958":1,"1959":1,"2032":1,"2034":1,"2041":1,"2065":1,"2072":1,"2119":1,"2126":2,"2127":1,"2131":2,"2255":1,"2299":1,"2300":1,"2302":1,"2344":1,"2348":1,"2393":1,"2421":1,"2424":1,"2430":1,"2435":1,"2438":1,"2440":1,"2441":1,"2451":1,"2457":1,"2462":1,"2463":1,"2468":2,"2469":1,"2473":1,"2475":1,"2479":1,"2480":2,"2508":1,"2541":1,"2556":1,"2559":1,"2576":1,"2577":5,"2578":1,"2607":1,"2611":1,"2614":1,"2615":1,"2719":1,"2727":1,"2735":1,"2737":1}}],["tiger80",{"2":{"211":1}}],["tiger910",{"2":{"143":2}}],["tighter",{"2":{"1949":2,"2441":1}}],["tight",{"2":{"191":1,"1219":1}}],["ticking",{"2":{"2231":1,"2238":1}}],["tick3",{"2":{"1578":1}}],["tick2",{"2":{"1578":1}}],["tick1",{"2":{"1578":1}}],["tick",{"2":{"160":2,"588":1,"627":1,"1578":6}}],["ticks",{"2":{"25":1,"64":1,"176":1,"1469":1,"2582":1}}],["title",{"2":{"149":1,"279":1,"294":1,"554":2,"616":1}}],["tidy",{"2":{"50":1,"114":3,"131":1,"133":1,"134":3,"149":2,"199":3,"211":3,"222":1,"249":1,"266":3,"2270":1,"2276":1}}],["tim4",{"2":{"1469":3}}],["tim2",{"2":{"1230":2}}],["timx",{"2":{"661":2,"1230":5,"1396":1}}],["tim8",{"2":{"657":3,"663":1}}],["tim7",{"2":{"657":3}}],["tim6",{"2":{"657":3,"658":3}}],["tim15",{"2":{"1470":2}}],["tim1",{"2":{"656":1,"661":6,"662":1,"1396":1}}],["timingr",{"2":{"705":5}}],["timings",{"2":{"191":1,"1125":1,"1128":1,"1518":1}}],["timing",{"0":{"1215":1,"1518":1},"2":{"11":1,"74":1,"112":1,"134":2,"149":1,"211":1,"505":4,"597":1,"690":1,"1214":1,"1215":1,"1219":1,"1224":2,"1562":1,"1676":1,"1683":3,"2525":1,"2564":2,"2574":1,"2577":1,"2687":1,"2727":1,"2737":2}}],["timeframe",{"2":{"2162":1}}],["timely",{"2":{"2130":1}}],["timeline",{"2":{"127":1,"2567":1}}],["timed",{"0":{"1697":1},"2":{"515":1,"588":1,"2263":1}}],["time80",{"2":{"211":1}}],["timeout=1000",{"2":{"1923":1}}],["timeouts",{"2":{"25":1,"199":1,"2129":1}}],["timeout",{"0":{"25":1,"708":1,"711":1,"714":1,"717":1,"720":1,"723":1,"726":1,"1137":1,"1416":1,"1504":1,"1682":1,"1683":1,"1684":1},"1":{"709":1,"710":1,"712":1,"713":1,"715":1,"716":1,"718":1,"719":1,"721":1,"722":1,"724":1,"725":1,"727":1,"728":1},"2":{"25":7,"49":1,"74":1,"93":1,"112":2,"134":2,"152":1,"158":1,"160":1,"176":4,"183":4,"191":3,"211":1,"505":5,"511":7,"588":17,"703":1,"709":1,"710":2,"712":1,"713":2,"715":1,"716":2,"718":1,"719":2,"721":1,"722":2,"724":1,"725":2,"727":1,"728":2,"731":2,"757":2,"786":2,"818":2,"850":2,"885":2,"919":2,"953":2,"987":2,"1021":2,"1055":2,"1089":2,"1137":2,"1145":2,"1185":2,"1187":2,"1190":2,"1193":2,"1220":2,"1411":3,"1414":1,"1415":1,"1416":5,"1425":1,"1431":1,"1433":1,"1434":3,"1435":5,"1436":1,"1504":4,"1514":2,"1518":1,"1682":1,"1683":4,"1684":3,"1694":1,"1697":2,"1730":1,"1817":5,"1822":1,"1859":2,"1863":2,"1868":2,"1894":6,"1954":1,"2067":2,"2070":4,"2128":1,"2131":6,"2141":1,"2143":1,"2169":1,"2358":3,"2461":1,"2490":1,"2539":2,"2574":2,"2680":1,"2687":2,"2688":3,"2691":1,"2695":3,"2696":4,"2697":2,"2700":2,"2739":1}}],["timer1",{"2":{"655":1,"2263":1}}],["timer3",{"2":{"655":1}}],["timer",{"0":{"11":1,"1462":1,"1467":1,"1470":1,"1520":1,"1521":1,"1522":1,"1698":1},"1":{"1521":1,"1522":1},"2":{"11":1,"49":1,"74":1,"114":4,"134":1,"149":2,"191":1,"199":3,"222":1,"505":5,"588":7,"657":5,"658":2,"661":3,"662":2,"1230":1,"1326":4,"1329":4,"1375":6,"1387":2,"1394":1,"1396":2,"1411":1,"1459":1,"1460":1,"1462":2,"1466":22,"1467":8,"1470":2,"1519":1,"1520":2,"1521":2,"1522":2,"1691":1,"1694":1,"1698":1,"1815":1,"1885":1,"1892":1,"1895":1,"2130":2,"2139":1,"2162":1,"2564":3,"2577":12,"2612":5,"2677":2}}],["timers",{"0":{"2612":1},"2":{"10":1,"11":1,"596":1,"657":1,"661":1,"1230":2,"1467":3,"1470":1,"2526":1,"2612":1}}],["time",{"0":{"1328":1,"2167":1},"2":{"10":2,"25":1,"28":1,"49":2,"50":1,"73":1,"112":1,"123":1,"124":1,"134":1,"140":1,"152":1,"153":1,"173":1,"174":1,"176":3,"182":1,"191":1,"222":1,"228":1,"243":1,"265":2,"284":1,"317":1,"327":1,"330":1,"331":2,"352":1,"358":1,"414":1,"430":1,"434":1,"452":2,"454":1,"463":2,"464":2,"465":3,"483":1,"485":1,"507":1,"513":2,"520":1,"521":1,"550":1,"551":1,"571":1,"573":1,"587":1,"588":5,"596":1,"597":6,"598":1,"599":1,"606":1,"684":2,"703":1,"707":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"727":1,"821":6,"1024":6,"1058":6,"1092":6,"1121":1,"1137":1,"1221":1,"1252":8,"1300":1,"1311":1,"1325":3,"1326":7,"1328":1,"1329":2,"1341":1,"1342":1,"1368":1,"1379":1,"1385":2,"1390":1,"1397":3,"1398":1,"1399":1,"1406":1,"1411":5,"1414":1,"1416":1,"1435":2,"1438":1,"1446":1,"1459":1,"1500":2,"1501":1,"1504":1,"1514":1,"1516":1,"1518":1,"1554":1,"1559":1,"1562":1,"1564":1,"1572":2,"1573":8,"1630":1,"1675":1,"1676":1,"1682":1,"1683":1,"1684":4,"1731":1,"1803":8,"1804":1,"1805":8,"1807":4,"1808":1,"1815":1,"1817":1,"1821":4,"1822":1,"1825":2,"1827":1,"1829":1,"1854":1,"1860":9,"1865":2,"1870":1,"1885":1,"1889":4,"1897":1,"1900":2,"1910":1,"1921":1,"1948":1,"1949":1,"1951":1,"1955":1,"2034":1,"2044":1,"2084":1,"2088":1,"2105":1,"2126":1,"2128":1,"2139":1,"2141":1,"2144":2,"2146":1,"2149":1,"2161":4,"2162":2,"2169":1,"2171":2,"2179":1,"2225":1,"2226":3,"2259":1,"2273":1,"2275":1,"2311":2,"2314":1,"2320":1,"2347":1,"2428":1,"2441":1,"2442":2,"2446":1,"2450":1,"2454":1,"2466":1,"2473":1,"2474":1,"2477":1,"2480":1,"2490":2,"2502":1,"2524":1,"2564":2,"2566":2,"2569":4,"2573":1,"2574":5,"2577":3,"2584":1,"2596":1,"2605":1,"2612":1,"2671":1,"2674":1,"2680":1,"2681":1,"2687":1,"2689":2,"2690":1,"2691":1,"2697":2,"2699":1,"2702":1,"2709":1,"2720":1,"2727":1,"2730":1,"2731":2,"2732":3,"2733":2,"2743":1,"2745":1}}],["timestamp",{"2":{"1326":6}}],["timestamps",{"2":{"199":1,"211":1,"375":1,"2129":1,"2697":1}}],["times",{"2":{"0":2,"9":2,"19":2,"39":2,"52":2,"222":1,"234":1,"374":2,"396":1,"411":2,"505":3,"584":1,"590":1,"628":1,"683":1,"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1,"1325":1,"1326":1,"1431":1,"1436":2,"1451":2,"1573":1,"1582":1,"1802":2,"1940":1,"1942":1,"2044":3,"2111":5,"2160":2,"2169":1,"2262":1,"2367":1,"2490":2,"2491":1,"2595":1,"2600":1,"2661":1,"2663":1,"2691":1,"2728":2,"2745":3}}],["tedious",{"2":{"2254":1,"2421":1}}],["telephony",{"2":{"1832":1}}],["tells",{"2":{"1357":1,"1383":1,"1725":1,"1946":1,"2107":1,"2315":1,"2474":2,"2480":1,"2614":2,"2748":1}}],["tell",{"2":{"105":2,"233":1,"263":1,"433":1,"529":1,"540":1,"559":1,"1830":1,"2125":2,"2263":1,"2411":1,"2475":1,"2757":1}}],["tekezo",{"2":{"1281":2}}],["tee",{"2":{"1239":1}}],["teensys",{"2":{"625":1,"2235":1,"2262":1}}],["teensy++",{"2":{"487":1,"2133":1,"2268":1,"2269":1}}],["teensy2",{"2":{"207":2}}],["teensypp",{"2":{"207":2}}],["teensy",{"0":{"81":1,"108":1,"2133":1,"2276":1,"2333":1,"2664":1},"1":{"2334":1},"2":{"81":1,"93":1,"108":1,"114":4,"131":1,"134":1,"149":2,"176":1,"199":1,"207":2,"292":4,"487":1,"491":4,"511":1,"624":1,"1234":1,"2133":3,"2235":5,"2238":1,"2262":2,"2266":1,"2268":1,"2269":1,"2275":1,"2276":1,"2279":2,"2333":2,"2334":3,"2664":1}}],["ten",{"2":{"1943":1}}],["tend",{"2":{"341":1,"1451":1,"2576":1}}],["tentative",{"0":{"88":1},"2":{"176":1}}],["tegic",{"2":{"253":2}}],["technology",{"2":{"1325":1}}],["technologies",{"2":{"1325":1}}],["technique",{"2":{"1325":1,"1454":1,"1677":1,"2270":1,"2738":1}}],["techniques",{"2":{"479":1,"2270":1}}],["technically",{"2":{"1278":1,"1325":1,"2132":1}}],["technical",{"0":{"529":1,"1821":1},"2":{"70":1,"201":1,"213":1,"224":1,"238":1,"551":1,"701":1,"1265":1,"1389":1}}],["tech",{"2":{"187":1,"191":1,"198":1,"199":1,"211":23,"279":1,"2566":3}}],["teach",{"2":{"2457":1,"2472":1}}],["teaching",{"2":{"176":1}}],["teal",{"2":{"582":1,"1953":2,"2058":2}}],["team",{"0":{"265":1,"275":1},"2":{"116":1,"265":3,"268":1,"273":1,"275":2,"276":1,"356":1,"1265":1,"2719":3,"2720":1}}],["team0110",{"2":{"102":1}}],["tempo",{"0":{"1400":1},"2":{"1400":10,"1406":1,"1950":1,"2111":1,"2112":4,"2113":10}}],["temporarily",{"2":{"273":1,"334":1,"1288":1,"1303":1,"1433":1,"1434":1,"1512":1,"2263":1,"2328":1,"2728":1}}],["temporary",{"2":{"114":1,"249":1,"396":1,"1284":1,"1335":1,"1553":1}}],["temperature",{"2":{"636":2,"1950":3,"2272":1}}],["temp",{"2":{"396":1,"1385":7}}],["templates",{"0":{"622":1},"1":{"623":1,"624":1},"2":{"266":1,"277":1,"318":1,"385":1,"622":1}}],["template",{"0":{"623":1,"624":1,"2435":1},"2":{"50":1,"277":1,"318":1,"559":1,"621":1,"1380":1,"1383":1,"1717":1,"2297":1,"2435":1,"2554":1,"2566":1}}],["textwidth",{"2":{"2577":4}}],["text",{"0":{"399":1,"432":1,"435":1,"2423":1,"2485":1},"1":{"433":1,"434":1,"435":1},"2":{"110":1,"111":2,"153":1,"199":1,"236":1,"279":1,"300":1,"389":1,"390":1,"391":1,"399":3,"431":1,"432":4,"434":1,"435":7,"618":1,"1287":1,"1353":1,"1440":2,"1441":1,"1451":1,"1860":1,"2182":1,"2263":1,"2277":1,"2279":1,"2349":1,"2420":1,"2423":1,"2429":3,"2437":1,"2457":3,"2460":1,"2474":2,"2480":1,"2485":2,"2492":1,"2502":1,"2503":1,"2553":1,"2577":4,"2615":1,"2672":2,"2711":1}}],["terry",{"2":{"176":1}}],["terrazzo",{"2":{"92":2}}],["term\`",{"2":{"2169":1}}],["terms",{"0":{"2621":1},"1":{"2622":1,"2623":1,"2624":1,"2625":1,"2626":1,"2627":1,"2628":1,"2629":1,"2630":1,"2631":1,"2632":1,"2633":1,"2634":1,"2635":1,"2636":1,"2637":1,"2638":1,"2639":1,"2640":1,"2641":1,"2642":1,"2643":1,"2644":1,"2645":1,"2646":1,"2647":1,"2648":1,"2649":1,"2650":1,"2651":1,"2652":1,"2653":1,"2654":1,"2655":1,"2656":1,"2657":1,"2658":1,"2659":1,"2660":1,"2661":1,"2662":1,"2663":1,"2664":1,"2665":1,"2666":1,"2667":1,"2668":1,"2669":1},"2":{"1326":1,"1380":1,"1431":1,"2171":1,"2181":1,"2570":1,"2585":1,"2592":1,"2728":1}}],["terminated",{"2":{"1451":3,"1508":1}}],["terminator",{"2":{"272":1,"1594":1}}],["terminals",{"2":{"2460":1}}],["terminal",{"2":{"176":1,"191":1,"291":5,"324":2,"433":1,"435":1,"1248":1,"1448":1,"1567":1,"2074":1,"2169":1,"2279":1,"2347":1,"2420":1,"2425":1,"2454":1,"2458":1,"2460":3,"2468":3,"2508":9}}],["terminology",{"2":{"249":2}}],["term",{"0":{"119":1,"195":1,"1514":1,"2375":1,"2670":1,"2727":1,"2728":1,"2737":1},"1":{"2728":1},"2":{"22":2,"49":1,"112":3,"114":1,"119":9,"134":2,"160":1,"176":1,"188":1,"191":1,"194":1,"195":9,"199":3,"222":2,"262":1,"505":18,"515":2,"1379":1,"1411":1,"1431":1,"1432":1,"1500":4,"1508":1,"1514":1,"1516":2,"1518":7,"1520":1,"1521":1,"1865":3,"1866":1,"1889":1,"2161":9,"2162":4,"2169":3,"2170":1,"2171":6,"2375":9,"2546":1,"2625":1,"2653":1,"2659":1,"2665":1,"2670":1,"2674":2,"2681":1,"2716":1,"2727":9,"2728":50,"2729":6,"2730":1,"2734":6,"2735":6,"2736":4,"2737":17,"2738":2,"2749":1}}],["testgroup",{"2":{"2753":1}}],["testlist",{"2":{"2753":3}}],["tester",{"2":{"2279":2}}],["testers",{"2":{"340":1,"343":1,"344":1}}],["tested",{"2":{"49":3,"273":1,"285":1,"663":1,"1365":1,"1811":1,"2108":1,"2169":1,"2295":1,"2492":1}}],["testing",{"0":{"442":1,"443":1,"446":1,"483":1,"663":1,"2279":1,"2487":1,"2488":1,"2667":1,"2750":1},"1":{"443":1,"444":1,"445":1,"446":1,"447":1,"484":1,"485":1,"2488":1,"2489":1,"2751":1,"2752":1,"2753":1,"2754":1,"2755":1,"2756":1},"2":{"337":1,"340":1,"349":1,"352":1,"397":1,"483":1,"1253":1,"1286":1,"1436":1,"1821":1,"2263":1,"2455":1,"2546":1,"2667":2,"2750":2,"2751":1,"2753":1,"2756":1}}],["test",{"0":{"411":1,"1286":1,"2455":1,"2469":1,"2751":1},"2":{"49":1,"134":3,"149":2,"191":1,"199":3,"211":2,"236":3,"249":3,"266":1,"277":1,"292":2,"407":9,"411":16,"442":1,"446":1,"483":1,"484":1,"485":1,"1286":1,"1287":1,"1452":1,"1508":4,"1509":2,"1510":4,"1549":4,"2034":1,"2036":2,"2037":2,"2150":1,"2279":2,"2294":1,"2376":1,"2455":2,"2567":1,"2708":1,"2750":1,"2751":3,"2752":3,"2753":4,"2754":5,"2755":2,"2756":2}}],["tests",{"0":{"484":1,"485":1,"2753":1,"2754":1,"2755":1,"2756":1},"2":{"1":1,"114":1,"134":3,"149":1,"160":1,"174":1,"176":1,"191":1,"196":1,"198":1,"199":2,"222":1,"263":1,"407":3,"411":2,"442":1,"446":8,"483":5,"484":2,"485":4,"560":1,"1435":1,"2567":3,"2667":1,"2750":1,"2751":1,"2753":7,"2754":4,"2755":3,"2756":1}}],["t",{"0":{"548":1,"551":1,"647":4,"649":3,"652":1,"671":1,"673":1,"675":3,"677":3,"679":2,"708":5,"711":5,"714":6,"717":6,"720":6,"723":6,"726":3,"736":1,"739":2,"741":3,"743":3,"745":1,"747":1,"749":1,"751":1,"762":1,"764":1,"766":3,"768":3,"770":3,"772":1,"774":1,"776":1,"778":1,"780":1,"782":1,"792":1,"794":1,"796":3,"798":2,"800":3,"802":3,"804":1,"806":1,"808":1,"810":1,"812":1,"814":1,"826":1,"828":1,"830":3,"832":3,"834":3,"836":1,"838":1,"840":4,"842":2,"844":1,"846":1,"859":1,"861":1,"863":3,"865":2,"867":3,"869":3,"871":1,"873":1,"875":1,"877":1,"879":1,"881":1,"893":1,"895":1,"897":3,"899":2,"901":3,"903":3,"905":1,"907":1,"909":1,"911":1,"913":1,"915":1,"927":1,"929":1,"931":3,"933":2,"935":3,"937":3,"939":1,"941":1,"943":1,"945":1,"947":1,"949":1,"961":1,"963":1,"965":3,"967":2,"969":3,"971":3,"973":1,"975":1,"977":1,"979":1,"981":1,"983":1,"995":1,"997":1,"999":3,"1001":2,"1003":3,"1005":3,"1007":1,"1009":1,"1011":4,"1013":2,"1015":1,"1017":1,"1029":1,"1031":1,"1033":3,"1035":2,"1037":3,"1039":3,"1041":1,"1043":1,"1045":4,"1047":2,"1049":1,"1051":1,"1063":1,"1065":1,"1067":3,"1069":2,"1071":3,"1073":3,"1075":1,"1077":1,"1079":4,"1081":2,"1083":1,"1085":1,"1097":1,"1099":1,"1101":3,"1103":2,"1105":3,"1107":3,"1109":1,"1111":1,"1113":4,"1115":2,"1117":1,"1119":1,"1150":1,"1152":1,"1154":3,"1156":2,"1158":3,"1160":3,"1162":1,"1164":1,"1166":1,"1168":1,"1170":1,"1172":1,"1180":3,"1183":2,"1186":1,"1188":3,"1191":3,"1200":1,"1202":1,"1204":1,"1206":2,"1208":1,"1232":2,"1238":1,"1243":1,"1254":1,"1255":1,"1258":1,"1260":1,"1270":1,"1272":1,"1273":1,"1281":1,"1288":1,"1290":1,"1291":1,"1292":1,"1479":1,"1481":1,"1536":1,"1603":2,"1611":2,"1613":2,"1617":1,"1619":1,"1622":1,"1624":1,"1626":1,"1628":1,"1641":1,"1643":1,"1646":1,"1648":1,"1650":2,"1653":2,"1670":1,"1671":1,"1694":1,"1699":1,"1702":2,"1705":3,"1708":4,"1711":5,"1743":2,"1745":1,"1747":1,"1749":1,"1755":1,"1761":1,"1767":1,"1769":1,"1771":1,"1780":2,"1783":2,"1837":1,"1839":1,"1841":1,"1843":1,"1845":1,"1849":1,"1851":1,"1925":2,"1927":2,"1970":4,"1972":3,"1974":1,"1976":1,"1982":1,"1988":1,"1994":1,"2000":1,"2006":1,"2008":1,"2010":1,"2012":3,"2014":3,"2025":2,"2028":2,"2083":1,"2087":1,"2091":1,"2093":1,"2095":1,"2097":1,"2186":1,"2188":1,"2192":1,"2194":1,"2199":1,"2203":2,"2206":2,"2209":1,"2214":1,"2216":1,"2254":1,"2670":1},"1":{"648":4,"650":3,"653":1,"672":1,"674":1,"676":3,"678":3,"680":2,"709":5,"710":5,"712":5,"713":5,"715":6,"716":6,"718":6,"719":6,"721":6,"722":6,"724":6,"725":6,"727":3,"728":3,"737":1,"740":2,"742":3,"744":3,"746":1,"748":1,"750":1,"752":1,"763":1,"765":1,"767":3,"769":3,"771":3,"773":1,"775":1,"777":1,"779":1,"781":1,"783":1,"793":1,"795":1,"797":3,"799":2,"801":3,"803":3,"805":1,"807":1,"809":1,"811":1,"813":1,"815":1,"827":1,"829":1,"831":3,"833":3,"835":3,"837":1,"839":1,"841":4,"843":2,"845":1,"847":1,"860":1,"862":1,"864":3,"866":2,"868":3,"870":3,"872":1,"874":1,"876":1,"878":1,"880":1,"882":1,"894":1,"896":1,"898":3,"900":2,"902":3,"904":3,"906":1,"908":1,"910":1,"912":1,"914":1,"916":1,"928":1,"930":1,"932":3,"934":2,"936":3,"938":3,"940":1,"942":1,"944":1,"946":1,"948":1,"950":1,"962":1,"964":1,"966":3,"968":2,"970":3,"972":3,"974":1,"976":1,"978":1,"980":1,"982":1,"984":1,"996":1,"998":1,"1000":3,"1002":2,"1004":3,"1006":3,"1008":1,"1010":1,"1012":4,"1014":2,"1016":1,"1018":1,"1030":1,"1032":1,"1034":3,"1036":2,"1038":3,"1040":3,"1042":1,"1044":1,"1046":4,"1048":2,"1050":1,"1052":1,"1064":1,"1066":1,"1068":3,"1070":2,"1072":3,"1074":3,"1076":1,"1078":1,"1080":4,"1082":2,"1084":1,"1086":1,"1098":1,"1100":1,"1102":3,"1104":2,"1106":3,"1108":3,"1110":1,"1112":1,"1114":4,"1116":2,"1118":1,"1120":1,"1151":1,"1153":1,"1155":3,"1157":2,"1159":3,"1161":3,"1163":1,"1165":1,"1167":1,"1169":1,"1171":1,"1173":1,"1181":3,"1182":3,"1184":2,"1185":2,"1187":1,"1189":3,"1190":3,"1192":3,"1193":3,"1201":1,"1203":1,"1205":1,"1207":2,"1209":1,"1233":2,"1239":1,"1240":1,"1480":1,"1482":1,"1537":1,"1604":2,"1612":2,"1614":2,"1618":1,"1620":1,"1621":1,"1623":1,"1625":1,"1627":1,"1629":1,"1642":1,"1644":1,"1647":1,"1649":1,"1651":2,"1652":2,"1654":2,"1695":1,"1696":1,"1700":1,"1701":1,"1703":2,"1704":2,"1706":3,"1707":3,"1709":4,"1710":4,"1712":5,"1713":5,"1744":2,"1746":1,"1748":1,"1750":1,"1756":1,"1762":1,"1768":1,"1770":1,"1772":1,"1838":1,"1840":1,"1842":1,"1844":1,"1846":1,"1847":1,"1850":1,"1852":1,"1926":2,"1928":2,"1971":4,"1973":3,"1975":1,"1977":1,"1983":1,"1989":1,"1995":1,"2001":1,"2007":1,"2009":1,"2011":1,"2015":3,"2084":1,"2088":1,"2092":1,"2094":1,"2096":1,"2098":1,"2187":1,"2189":1,"2193":1,"2195":1,"2200":1,"2204":2,"2205":2,"2207":2,"2208":2,"2210":1,"2215":1,"2217":1,"2218":1},"2":{"22":9,"31":3,"34":3,"46":3,"90":4,"94":2,"105":8,"114":4,"119":1,"149":3,"153":1,"164":1,"166":1,"173":2,"176":1,"188":1,"191":2,"194":9,"195":6,"198":1,"199":2,"211":3,"214":1,"221":1,"222":1,"232":1,"247":1,"249":1,"266":1,"272":3,"277":2,"291":1,"313":1,"317":1,"349":1,"352":2,"375":2,"385":1,"396":3,"401":1,"407":4,"411":2,"430":1,"453":1,"454":2,"455":1,"457":1,"474":1,"479":1,"498":1,"501":1,"505":1,"515":1,"530":3,"534":4,"537":2,"538":1,"540":1,"551":1,"557":1,"560":4,"565":1,"566":3,"572":2,"573":10,"575":1,"578":1,"580":7,"586":1,"588":4,"597":2,"606":1,"613":1,"621":1,"648":4,"650":3,"653":1,"660":2,"669":1,"672":4,"674":1,"676":3,"678":3,"680":2,"709":4,"712":4,"715":5,"718":5,"721":4,"724":4,"727":2,"734":2,"737":4,"740":2,"742":3,"744":3,"746":1,"748":1,"750":1,"752":1,"760":2,"763":5,"765":1,"767":3,"769":3,"771":3,"773":1,"775":1,"777":1,"779":1,"781":1,"783":1,"790":2,"793":5,"795":1,"797":3,"799":2,"801":3,"803":3,"805":1,"807":1,"809":1,"811":1,"813":1,"815":1,"824":2,"827":5,"829":1,"831":3,"833":3,"835":3,"837":1,"839":1,"841":4,"843":2,"845":1,"847":1,"857":2,"860":5,"862":1,"864":3,"866":2,"868":3,"870":3,"872":1,"874":1,"876":1,"878":1,"880":1,"882":1,"891":2,"894":5,"896":1,"898":3,"900":2,"902":3,"904":3,"906":1,"908":1,"910":1,"912":1,"914":1,"916":1,"925":2,"928":5,"930":1,"932":3,"934":2,"936":3,"938":3,"940":1,"942":1,"944":1,"946":1,"948":1,"950":1,"959":2,"962":5,"964":1,"966":3,"968":2,"970":3,"972":3,"974":1,"976":1,"978":1,"980":1,"982":1,"984":1,"993":2,"996":5,"998":1,"1000":3,"1002":2,"1004":3,"1006":3,"1008":1,"1010":1,"1012":4,"1014":2,"1016":1,"1018":1,"1027":2,"1030":5,"1032":1,"1034":3,"1036":2,"1038":3,"1040":3,"1042":1,"1044":1,"1046":4,"1048":2,"1050":1,"1052":1,"1061":2,"1064":5,"1066":1,"1068":3,"1070":2,"1072":3,"1074":3,"1076":1,"1078":1,"1080":4,"1082":2,"1084":1,"1086":1,"1095":2,"1098":5,"1100":2,"1102":3,"1104":2,"1106":3,"1108":3,"1110":1,"1112":1,"1114":4,"1116":2,"1118":1,"1120":1,"1125":1,"1126":1,"1137":1,"1148":2,"1151":5,"1153":1,"1155":3,"1157":2,"1159":3,"1161":3,"1163":1,"1165":1,"1167":1,"1169":1,"1171":1,"1173":1,"1177":1,"1181":3,"1184":1,"1189":2,"1192":2,"1201":1,"1203":1,"1207":2,"1209":2,"1233":2,"1236":1,"1237":1,"1241":1,"1242":1,"1252":2,"1254":1,"1260":1,"1262":1,"1265":1,"1266":1,"1271":1,"1276":2,"1286":1,"1287":3,"1288":2,"1290":1,"1302":3,"1303":5,"1312":1,"1325":1,"1331":1,"1332":9,"1333":4,"1336":1,"1340":1,"1341":4,"1343":2,"1344":4,"1345":4,"1359":8,"1360":5,"1361":1,"1363":1,"1367":1,"1375":3,"1378":2,"1379":1,"1383":8,"1384":2,"1385":8,"1393":1,"1398":1,"1400":3,"1403":2,"1404":2,"1405":2,"1406":1,"1416":3,"1423":4,"1430":8,"1438":2,"1439":1,"1440":1,"1442":1,"1445":5,"1446":4,"1447":1,"1448":3,"1450":1,"1451":5,"1464":1,"1480":1,"1495":1,"1506":2,"1508":3,"1509":3,"1510":5,"1511":9,"1515":2,"1518":22,"1519":8,"1522":1,"1523":10,"1525":2,"1527":1,"1534":1,"1548":1,"1549":4,"1555":1,"1556":5,"1558":1,"1559":1,"1560":3,"1581":2,"1594":1,"1604":1,"1612":2,"1614":2,"1618":1,"1623":1,"1625":1,"1627":1,"1629":1,"1637":1,"1638":6,"1642":2,"1644":4,"1647":1,"1649":1,"1651":1,"1654":2,"1655":1,"1657":3,"1658":2,"1659":1,"1662":2,"1663":2,"1665":7,"1666":3,"1668":6,"1670":9,"1672":1,"1683":1,"1686":1,"1695":1,"1700":1,"1703":2,"1706":3,"1709":4,"1712":5,"1714":3,"1716":2,"1717":1,"1718":2,"1719":1,"1722":5,"1725":2,"1729":7,"1733":2,"1744":2,"1746":1,"1748":1,"1750":1,"1768":1,"1770":1,"1781":2,"1784":2,"1792":3,"1813":1,"1815":4,"1816":2,"1820":2,"1821":2,"1822":30,"1824":1,"1825":2,"1826":1,"1830":2,"1838":1,"1840":1,"1842":1,"1844":1,"1846":1,"1852":1,"1870":4,"1871":5,"1873":1,"1874":5,"1875":3,"1876":5,"1878":1,"1879":4,"1880":10,"1882":4,"1883":3,"1885":1,"1889":1,"1891":4,"1892":2,"1894":10,"1897":2,"1898":2,"1899":2,"1900":1,"1901":4,"1910":2,"1917":1,"1921":2,"1923":3,"1926":2,"1928":2,"1933":6,"1934":3,"1935":5,"1937":3,"1938":3,"1939":3,"1940":2,"1941":5,"1943":15,"1946":2,"1948":1,"1952":7,"1957":2,"1958":13,"1959":5,"1971":4,"1973":3,"1975":1,"1977":1,"2007":1,"2009":1,"2013":3,"2015":3,"2026":2,"2029":2,"2032":1,"2034":1,"2040":7,"2042":6,"2043":5,"2044":7,"2064":1,"2075":1,"2078":2,"2084":1,"2088":1,"2092":1,"2094":1,"2096":1,"2098":1,"2112":1,"2113":13,"2125":2,"2128":1,"2130":20,"2133":1,"2137":1,"2139":4,"2140":2,"2142":1,"2143":16,"2145":1,"2148":2,"2149":1,"2152":9,"2153":2,"2155":2,"2156":1,"2157":1,"2164":2,"2166":2,"2167":5,"2168":17,"2169":14,"2170":11,"2171":16,"2172":1,"2181":1,"2182":2,"2183":1,"2189":1,"2193":1,"2195":1,"2200":1,"2204":1,"2207":1,"2210":1,"2217":1,"2224":1,"2228":6,"2244":1,"2254":1,"2255":1,"2262":1,"2263":1,"2272":1,"2273":1,"2274":4,"2279":2,"2286":1,"2301":3,"2307":1,"2311":2,"2335":1,"2355":3,"2374":40,"2376":1,"2383":1,"2386":3,"2401":1,"2403":1,"2405":2,"2406":3,"2407":1,"2410":40,"2411":1,"2413":3,"2414":2,"2415":2,"2417":2,"2423":1,"2424":1,"2444":1,"2453":1,"2454":2,"2455":1,"2457":1,"2468":1,"2474":2,"2491":6,"2497":1,"2504":1,"2506":1,"2508":2,"2512":1,"2513":1,"2533":1,"2542":1,"2546":1,"2553":1,"2556":1,"2566":1,"2569":1,"2576":89,"2577":131,"2581":2,"2587":16,"2588":7,"2589":5,"2593":7,"2594":13,"2595":5,"2596":11,"2597":10,"2598":9,"2599":4,"2603":1,"2604":2,"2606":5,"2612":1,"2614":1,"2702":1,"2703":3,"2706":4,"2708":1,"2710":1,"2724":2,"2727":4,"2728":9,"2730":2,"2731":5,"2732":8,"2733":5,"2734":3,"2735":2,"2736":2,"2737":9,"2738":2,"2741":1,"2746":2,"2747":1,"2748":1,"2749":81,"2750":1,"2752":1,"2753":1,"2757":3}}],["tr6",{"2":{"1793":1,"2371":1}}],["tr5",{"2":{"1793":1,"2371":1}}],["tr4",{"2":{"1793":1,"2371":1}}],["tr3",{"2":{"1793":1,"2371":1}}],["tr2",{"2":{"1793":1,"2371":1}}],["tr1",{"2":{"1793":1,"2371":1}}],["tr0",{"2":{"1793":1,"2371":1}}],["trn1",{"2":{"1793":1,"2371":1}}],["trn2",{"2":{"1793":1,"2371":1}}],["trn3",{"2":{"1793":1,"2371":1}}],["trn4",{"2":{"1793":1,"2371":1}}],["trn5",{"2":{"1793":1,"2371":1}}],["trn6",{"2":{"1793":1,"2371":1}}],["trns",{"2":{"313":118,"530":152,"1275":1,"1335":1,"1340":2,"1933":3,"1934":1,"1935":1,"1941":1,"1958":1,"2106":3,"2107":1,"2355":1,"2367":1,"2385":1,"2395":1,"2403":4,"2405":2,"2408":1,"2614":1}}],["trp",{"2":{"1578":1}}],["trrs",{"2":{"1129":1,"2114":1,"2116":1,"2117":2,"2118":2,"2119":1,"2120":1,"2131":1,"2271":1}}],["trsu",{"2":{"1793":1,"2371":1}}],["trsd",{"2":{"1793":1,"2371":1}}],["trst",{"2":{"1214":1,"1215":1}}],["trs",{"2":{"1123":1,"1126":1,"2119":1}}],["troubleshoot",{"2":{"2250":1}}],["troubleshooting",{"0":{"544":1,"1138":1,"1501":1,"1884":1},"1":{"545":1,"546":1,"547":1,"548":1,"549":1},"2":{"1138":1,"1244":1,"1251":1,"1884":1,"2134":1,"2428":1}}],["trouble",{"2":{"555":1,"1287":1,"2279":1}}],["tronguylabs",{"2":{"114":1,"207":4}}],["trk1",{"2":{"277":1}}],["trkeyboard",{"2":{"277":1}}],["trying",{"2":{"554":1,"1416":1,"1832":1,"2125":1,"2169":2,"2286":1,"2469":1}}],["try",{"2":{"228":1,"364":1,"461":1,"466":2,"477":1,"541":1,"551":1,"557":1,"560":1,"561":1,"626":1,"707":1,"1254":2,"1255":1,"1280":1,"1288":1,"1298":1,"1338":1,"1346":1,"1390":1,"1923":1,"2169":1,"2274":1,"2279":1,"2335":1,"2353":2,"2450":1,"2454":1,"2466":1,"2501":1,"2513":1,"2566":1,"2605":1,"2728":1,"2753":1}}],["treated",{"2":{"1886":4,"1890":1,"1892":1,"2308":1,"2355":1}}],["treating",{"2":{"562":1,"2370":1,"2396":1}}],["treat",{"2":{"176":1,"612":1,"1339":1,"2060":1,"2370":1,"2396":1,"2745":1}}],["treadstone48",{"2":{"143":4}}],["treadstone32",{"2":{"143":2}}],["tree",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"143":2,"181":2,"191":1,"199":2,"337":1,"436":1,"1227":1,"1338":1,"1438":1,"2428":2,"2474":1}}],["truth",{"2":{"606":2}}],["trunk",{"2":{"134":1}}],["truetype",{"2":{"2575":1}}],["true",{"0":{"258":1,"476":1},"2":{"13":1,"90":3,"105":6,"111":8,"185":1,"194":3,"195":1,"230":1,"249":1,"256":1,"258":1,"314":1,"397":1,"453":1,"476":2,"534":1,"571":1,"572":2,"588":1,"592":1,"593":1,"609":1,"610":3,"641":1,"657":7,"658":5,"661":3,"681":1,"703":3,"1124":1,"1129":1,"1132":2,"1133":2,"1177":3,"1181":1,"1182":1,"1198":1,"1211":1,"1226":2,"1230":3,"1252":1,"1302":2,"1303":4,"1332":4,"1344":1,"1359":3,"1360":1,"1375":2,"1384":1,"1385":1,"1404":1,"1423":2,"1430":1,"1446":2,"1448":2,"1449":1,"1457":1,"1469":2,"1470":2,"1484":1,"1489":1,"1505":1,"1506":3,"1518":6,"1519":1,"1523":1,"1526":1,"1530":2,"1534":2,"1549":4,"1560":2,"1593":2,"1616":1,"1621":1,"1638":1,"1670":2,"1686":2,"1696":1,"1701":1,"1704":1,"1707":1,"1710":1,"1713":1,"1716":1,"1718":2,"1726":2,"1730":1,"1733":1,"1742":1,"1775":1,"1779":1,"1785":1,"1792":2,"1816":1,"1822":16,"1826":1,"1847":1,"1860":3,"1874":1,"1875":1,"1879":1,"1880":1,"1882":1,"1883":1,"1887":2,"1892":2,"1894":3,"1895":2,"1897":2,"1900":3,"1906":1,"1908":2,"1916":1,"1935":1,"1937":2,"1938":1,"1939":1,"1940":1,"1941":1,"1943":2,"1947":2,"1954":1,"1957":1,"1969":1,"2020":1,"2024":1,"2030":1,"2035":1,"2043":1,"2056":1,"2078":1,"2143":12,"2152":3,"2158":1,"2162":1,"2168":1,"2169":2,"2171":2,"2179":1,"2213":1,"2218":1,"2220":1,"2228":2,"2306":1,"2413":1,"2414":7,"2415":1,"2437":1,"2548":5,"2577":5,"2604":1,"2674":1,"2676":2,"2677":1,"2688":3,"2694":3,"2695":3,"2699":1,"2728":1,"2735":1,"2736":1,"2738":1,"2743":1}}],["tr",{"2":{"134":1,"2153":3}}],["trim",{"2":{"2273":1}}],["tried",{"2":{"2458":1,"2726":1}}],["trie",{"0":{"1450":1},"1":{"1451":1,"1452":1},"2":{"1438":4,"1440":1,"1450":1,"1451":4,"1452":1}}],["tries",{"2":{"502":1,"1451":1,"2417":1,"2452":1}}],["triangle",{"2":{"1393":1}}],["tricker",{"2":{"1340":1}}],["tricky",{"2":{"1338":1,"1438":1,"2255":1,"2757":1}}],["triplet",{"2":{"1217":1,"2577":1}}],["triple",{"2":{"462":2,"2169":5}}],["trinity",{"2":{"211":1}}],["tri",{"0":{"2172":1,"2602":1,"2603":1,"2605":1},"1":{"2173":1,"2174":1,"2175":1,"2603":1,"2604":2,"2605":1,"2606":2},"2":{"199":2,"211":1,"1341":3,"1383":3,"2172":1,"2173":2,"2174":4,"2175":7,"2566":2,"2603":1,"2604":4,"2605":1,"2606":4}}],["triggered",{"2":{"505":1,"592":1,"658":1,"1556":4,"1582":3,"1670":1,"1894":1}}],["triggers",{"0":{"1441":1},"2":{"195":1,"1431":1,"1670":1,"1677":1,"1678":1,"1865":2,"1954":1,"2738":1}}],["triggering",{"2":{"98":1,"505":1,"1573":1,"2106":1,"2129":1,"2305":1}}],["trigger",{"2":{"95":1,"98":1,"114":1,"191":1,"198":1,"505":1,"521":1,"586":1,"592":1,"597":4,"657":2,"658":1,"1239":1,"1300":1,"1302":1,"1303":1,"1441":3,"1495":1,"1496":1,"1497":1,"1519":3,"1554":1,"1573":1,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"1655":1,"1665":7,"1668":2,"1670":4,"1671":6,"1673":8,"1674":6,"1675":1,"1677":1,"1828":1,"1865":1,"1866":1,"1894":1,"1895":1,"1900":1,"1954":1,"2437":1,"2439":1,"2440":1,"2524":1,"2605":1,"2728":2,"2737":2,"2738":1}}],["trivial",{"2":{"95":1,"266":1,"1670":1,"2309":1,"2401":1}}],["tranlates",{"2":{"2704":1}}],["transcription",{"2":{"2144":1}}],["translucent",{"2":{"2031":1}}],["translating",{"2":{"2490":1}}],["translation",{"2":{"413":1,"2144":1}}],["translatable",{"2":{"1359":1}}],["translated",{"2":{"1832":1}}],["translates",{"2":{"638":1,"639":1,"2302":1}}],["translate",{"2":{"99":1,"1576":1,"2571":1}}],["transmitted",{"2":{"1492":1,"2574":1,"2729":1}}],["transmitting",{"2":{"1123":1,"1126":1,"1129":2,"2129":5}}],["transmit",{"0":{"708":1,"1188":1,"1206":1},"1":{"709":1,"710":1,"1189":1,"1190":1,"1207":1},"2":{"684":1,"685":1,"709":1,"715":1,"718":1,"1201":1,"1202":1,"1206":1,"2697":1}}],["transmissions",{"2":{"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1}}],["transmission",{"2":{"214":1,"263":1,"1121":3,"1181":1,"1225":1}}],["transistor",{"2":{"1458":4,"1471":1}}],["transitions",{"2":{"278":1,"1325":2,"1386":1,"2684":1}}],["transitioned",{"2":{"268":1}}],["transition",{"2":{"236":1,"265":1,"1325":1,"1578":60}}],["transient",{"0":{"686":1},"2":{"149":1,"681":2,"686":3,"2683":1}}],["transparency",{"0":{"2403":1},"2":{"2403":1,"2587":2,"2596":3}}],["transparent",{"2":{"231":1,"1335":1,"1677":1,"2107":1,"2355":2,"2395":2,"2403":4,"2405":1,"2587":1,"2596":3,"2738":1}}],["transposition",{"2":{"1793":15,"1794":1,"2371":15}}],["transpose",{"2":{"222":1,"1793":15,"2371":15}}],["transported",{"2":{"74":1}}],["transport",{"0":{"107":1},"2":{"74":1,"75":1,"111":1,"112":3,"114":1,"134":1,"160":1,"176":1,"266":1,"277":1,"508":1,"511":9,"1730":1,"1813":2,"1872":1,"1954":1,"2115":1,"2121":2,"2128":1,"2129":1,"2130":2,"2263":2,"2506":1,"2573":1,"2697":3}}],["transformation",{"2":{"1910":1,"2728":1}}],["transformations",{"2":{"169":1,"176":1,"185":1}}],["transform",{"2":{"1870":1,"1915":1}}],["transferring",{"2":{"1821":1,"2576":1}}],["transfers",{"2":{"160":1}}],["transfer",{"2":{"107":1,"703":1,"2128":1,"2130":1,"2149":1,"2314":1,"2576":2,"2577":2}}],["transactions",{"2":{"1136":1,"2130":1}}],["transaction",{"2":{"149":1,"176":1,"191":2,"266":1,"511":2,"1180":1,"1194":1,"2130":12,"2574":1}}],["travel",{"2":{"1860":7,"2038":1,"2268":1}}],["travis",{"2":{"1":1,"17":1}}],["trapezoid",{"2":{"1393":1}}],["trailing",{"2":{"211":2,"461":1,"467":1,"468":3,"1181":2}}],["traditional",{"2":{"2441":1}}],["traditionally",{"2":{"125":1,"185":1,"240":1,"2407":1}}],["tradestation",{"2":{"43":2}}],["tracing",{"0":{"2757":1},"2":{"2263":1,"2757":3}}],["trace=x",{"2":{"2757":1}}],["traced",{"2":{"2480":1,"2757":5}}],["trace",{"2":{"2133":1,"2263":1,"2757":4}}],["traceability",{"2":{"341":1}}],["tractyl",{"2":{"114":1,"149":2}}],["tracked",{"2":{"1807":1}}],["tracker++",{"2":{"1360":1}}],["tracker",{"2":{"1360":3,"1894":5}}],["tracks",{"0":{"2110":1},"2":{"1802":1,"2110":2,"2474":1,"2757":2}}],["trackpoints",{"2":{"1902":1}}],["trackpoint",{"0":{"1289":1,"1903":1},"2":{"266":1,"1902":4,"1912":1}}],["trackpad",{"0":{"1858":1,"1862":1},"1":{"1859":1,"1860":1,"1861":1,"1863":1,"1864":1,"1865":1,"1866":1},"2":{"176":2,"249":1,"1858":1,"1859":3,"1862":1,"1863":6,"1866":4,"1880":1}}],["trackpads",{"2":{"176":1,"1858":1,"1862":1}}],["tracking",{"2":{"134":1,"654":1,"1856":1,"1870":1,"1936":1,"2637":1}}],["trackball",{"0":{"1868":1},"2":{"114":3,"118":2,"176":1,"199":1,"246":1,"1868":11}}],["track",{"2":{"74":2,"1303":2,"1665":6,"1863":5,"1900":1,"1932":1,"2112":1,"2113":19,"2147":1,"2152":1,"2272":1,"2355":10,"2393":12,"2576":1,"2757":3}}],["tolerant",{"2":{"2519":1,"2532":1}}],["toward",{"2":{"2273":1}}],["towards",{"2":{"111":1,"191":1,"194":1,"262":1,"322":1,"606":1,"1471":1,"2171":2,"2665":1}}],["to=michi",{"2":{"1315":2}}],["to=imera",{"2":{"1315":2}}],["to=liatris",{"2":{"1315":2,"1322":2}}],["to=helios",{"2":{"1315":2,"1322":2}}],["to=elite",{"2":{"1315":2,"1322":2}}],["to=rp2040",{"2":{"1315":2,"1322":2}}],["to=stemcell",{"2":{"1315":2,"1322":2}}],["to=sparkfun",{"2":{"1315":2}}],["to=bonsai",{"2":{"1315":2}}],["to=bit",{"2":{"1315":2}}],["to=blok",{"2":{"1315":2}}],["to=kb2040",{"2":{"1315":2}}],["to=proton",{"2":{"1312":1,"1315":2,"2530":1}}],["to=",{"2":{"1312":2}}],["tour",{"2":{"560":1}}],["touching",{"2":{"2273":1}}],["touchdown",{"2":{"1900":1}}],["touch",{"2":{"176":1,"211":44,"222":4,"266":1,"273":1,"276":1,"1862":1,"1863":1,"1865":4,"1866":1,"2273":2,"2279":1,"2435":2,"2563":1}}],["touchpads",{"2":{"190":1,"191":1,"244":1,"1902":1,"1911":1}}],["touchpad",{"2":{"118":2,"1863":1,"1910":1}}],["todo",{"2":{"446":1,"565":2,"566":4}}],["today",{"2":{"343":1,"344":1,"345":1}}],["token",{"2":{"598":4,"599":3,"600":5,"2432":1,"2438":1,"2506":1,"2577":6}}],["tokens",{"2":{"416":1,"432":2,"435":1}}],["tokenn",{"2":{"372":1}}],["token2",{"2":{"372":1}}],["token1",{"2":{"372":1}}],["tokyokeyboard",{"2":{"102":1,"114":1}}],["tokyo60",{"2":{"102":2,"114":2}}],["tones",{"2":{"659":6,"1387":1,"1390":1,"1397":1,"1399":1}}],["tone",{"0":{"1397":1},"2":{"222":1,"572":3,"615":1,"1332":2,"1390":1,"1397":5,"1399":1}}],["tofujr",{"2":{"236":1}}],["tofu60",{"2":{"236":2}}],["tofu",{"2":{"199":1}}],["totally",{"2":{"1878":1}}],["total",{"2":{"191":4,"684":1,"685":1,"686":1,"694":1,"1214":1,"1215":1,"1553":1,"2120":1,"2229":1,"2255":2,"2276":1,"2424":1,"2577":2,"2587":4,"2594":4,"2705":1}}],["tominabox1",{"2":{"143":5,"149":2,"222":1,"236":1}}],["tops",{"2":{"2273":1}}],["topmost",{"2":{"1338":1,"1612":1,"1614":1}}],["topic=41989",{"2":{"1298":1}}],["topic=14290",{"2":{"1297":1}}],["topic=50176",{"2":{"1289":1}}],["topic=57008",{"2":{"1275":1}}],["topics",{"0":{"602":1,"1304":1,"2723":1,"2724":1,"2725":1},"1":{"603":1,"604":1,"1305":1,"1306":1,"1307":1,"1308":1,"1309":1},"2":{"2455":1,"2723":1,"2724":2}}],["topic",{"2":{"350":5,"1300":1,"2348":1}}],["top",{"2":{"100":1,"149":1,"255":1,"349":1,"502":1,"512":1,"545":1,"609":1,"614":2,"624":1,"631":1,"681":1,"1250":1,"1270":1,"1332":1,"1335":1,"1340":2,"1398":1,"1496":2,"1533":1,"1560":1,"1684":1,"1724":1,"1725":1,"1728":1,"1822":1,"1897":1,"1921":1,"1934":1,"1945":1,"1946":1,"1949":2,"2122":1,"2143":1,"2148":1,"2169":1,"2178":1,"2273":1,"2295":1,"2299":13,"2300":13,"2309":1,"2348":1,"2405":1,"2406":2,"2423":1,"2450":1,"2474":1,"2498":1,"2508":1,"2513":2,"2554":1,"2556":1,"2566":1,"2575":1,"2577":5,"2598":3,"2614":1,"2615":1,"2616":1,"2679":1,"2686":2,"2710":1}}],["too",{"2":{"94":1,"105":1,"134":1,"153":1,"188":1,"211":1,"233":1,"471":1,"473":1,"477":1,"515":1,"555":1,"592":1,"598":1,"617":1,"626":1,"659":4,"660":3,"1243":1,"1287":2,"1325":1,"1331":1,"1332":1,"1336":1,"1364":1,"1385":1,"1401":1,"1406":1,"1410":1,"1438":1,"1508":1,"1684":1,"1803":6,"1804":1,"1880":1,"2133":2,"2157":1,"2169":1,"2171":1,"2263":1,"2272":1,"2273":1,"2274":1,"2306":1,"2411":1,"2441":1,"2491":1,"2555":1,"2564":2,"2566":2,"2709":1,"2728":1,"2757":1}}],["tool",{"2":{"182":1,"317":1,"324":1,"327":1,"331":1,"401":1,"430":1,"519":1,"541":1,"1281":1,"2183":1,"2293":1,"2329":1,"2331":1,"2333":1,"2427":1,"2566":1,"2615":1}}],["toolchains",{"2":{"331":1,"2462":1}}],["toolchain",{"0":{"325":1},"2":{"134":1,"325":1,"352":1,"2501":1,"2513":1}}],["toolbox",{"0":{"1247":1,"2451":1,"2452":1},"1":{"2452":1,"2453":1},"2":{"82":1,"119":1,"131":1,"164":2,"240":3,"292":1,"519":1,"626":1,"629":1,"1241":1,"1247":1,"1255":1,"1529":1,"2126":2,"2229":1,"2230":2,"2233":1,"2235":1,"2236":1,"2237":1,"2240":1,"2242":1,"2243":1,"2244":2,"2254":1,"2278":2,"2322":1,"2341":1,"2353":1,"2429":1,"2439":1,"2450":1,"2451":3,"2452":2,"2453":1,"2457":1}}],["tooling",{"2":{"70":1,"198":1,"317":1,"606":1,"2302":1,"2496":1}}],["tools",{"0":{"326":1,"1246":1},"1":{"1247":1,"1248":1,"1249":1},"2":{"49":1,"182":1,"318":1,"322":1,"325":1,"326":1,"328":1,"331":1,"431":2,"541":2,"606":2,"624":1,"1246":1,"1257":1,"1287":1,"1814":1,"2126":1,"2150":2,"2229":1,"2241":1,"2267":1,"2341":1,"2427":1,"2492":2,"2497":1,"2503":2,"2504":1,"2510":1,"2723":1}}],["tog",{"2":{"188":1,"191":1,"231":1,"530":2,"1948":1,"2377":1}}],["togg",{"2":{"188":2,"191":3,"235":1,"530":2,"1245":1,"1398":1,"1403":1,"1406":1,"1408":3,"1434":1,"1439":1,"1442":1,"1443":1,"1456":1,"1500":1,"1512":1,"1572":1,"1669":1,"1727":1,"1793":1,"2034":1,"2044":2,"2045":1,"2063":1,"2069":1,"2112":1,"2156":2,"2356":1,"2357":3,"2358":1,"2359":1,"2360":1,"2362":1,"2369":1,"2370":7,"2371":1,"2376":1,"2379":1,"2383":1,"2396":7,"2490":1,"2572":1}}],["toggling",{"0":{"1335":1},"1":{"1336":1},"2":{"49":1,"1219":1,"1331":1,"1880":1,"1885":1,"1894":1,"1895":1,"1960":1,"2044":1,"2171":1,"2263":1,"2525":1,"2702":1}}],["toggles",{"0":{"2037":1},"2":{"661":1,"1332":1,"1335":1,"1341":1,"1394":1,"1398":1,"1403":1,"1406":1,"1408":3,"1434":1,"1443":1,"1449":1,"1505":1,"1512":1,"1526":1,"2063":1,"2158":1,"2161":1,"2357":3,"2358":1,"2359":1,"2362":1,"2367":1,"2370":1,"2379":1,"2396":1,"2490":1,"2491":1,"2737":1}}],["toggled",{"2":{"506":1,"662":1,"684":1,"1335":1,"2491":1,"2524":1,"2566":1}}],["toggleterminal",{"2":{"291":1,"2508":1}}],["togglepin",{"2":{"243":1}}],["toggle",{"0":{"1473":1,"1485":1,"1735":1,"1736":1,"1962":1,"1963":1,"2171":1},"2":{"38":1,"49":2,"93":1,"112":2,"114":1,"149":1,"160":1,"211":1,"222":1,"231":3,"243":1,"505":6,"662":1,"696":1,"1288":1,"1331":1,"1335":4,"1398":1,"1403":1,"1406":1,"1408":3,"1434":1,"1442":1,"1443":1,"1446":1,"1449":1,"1456":3,"1473":1,"1485":1,"1500":1,"1505":1,"1512":2,"1526":1,"1530":6,"1572":8,"1582":3,"1668":1,"1669":2,"1727":2,"1735":1,"1736":1,"1793":2,"1879":1,"1880":1,"1885":2,"1886":2,"1894":4,"1895":4,"1899":4,"1948":1,"1962":1,"1963":1,"2034":2,"2044":2,"2053":4,"2069":2,"2112":3,"2113":7,"2156":9,"2158":1,"2161":1,"2171":1,"2240":1,"2263":1,"2356":2,"2357":3,"2358":1,"2359":1,"2360":3,"2362":1,"2367":1,"2369":2,"2370":13,"2371":2,"2376":2,"2377":1,"2379":1,"2383":4,"2396":13,"2490":2,"2491":2,"2524":1,"2525":1,"2572":2,"2674":1,"2691":1,"2737":1}}],["together",{"2":{"72":1,"322":1,"457":1,"516":1,"550":1,"609":1,"852":1,"1023":1,"1057":1,"1122":1,"1212":1,"1284":1,"1509":1,"1511":1,"1817":1,"1912":1,"1932":1,"2031":1,"2060":1,"2133":1,"2167":1,"2261":1,"2272":2,"2304":1,"2349":1,"2410":1,"2450":1,"2566":1}}],["to",{"0":{"3":1,"4":1,"5":1,"6":1,"7":1,"15":1,"16":1,"17":1,"21":1,"24":1,"25":1,"26":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"43":1,"46":1,"57":1,"142":1,"164":1,"166":1,"173":1,"263":1,"265":1,"275":1,"461":1,"528":1,"550":1,"551":1,"567":1,"608":1,"609":1,"613":1,"614":1,"627":1,"1253":1,"1258":1,"1263":1,"1264":1,"1344":1,"1412":1,"1519":1,"1551":1,"1552":1,"1656":2,"1676":1,"1677":1,"1799":1,"1887":1,"1888":1,"1892":2,"1894":1,"1899":1,"1921":1,"2039":1,"2161":1,"2255":1,"2281":1,"2318":1,"2320":1,"2424":1,"2438":1,"2446":1,"2472":1,"2517":1,"2553":1,"2601":1,"2609":1,"2746":1},"1":{"31":1,"34":1,"36":1,"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"551":1,"568":1,"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"1264":1,"1800":1,"1801":1,"1889":1,"1890":1,"1891":1,"1892":1,"2554":1,"2555":1,"2556":1,"2557":1,"2558":1,"2559":1,"2560":1,"2561":1,"2562":1,"2602":1,"2603":1,"2604":1,"2605":1,"2606":1,"2607":1,"2608":1,"2609":1,"2610":1,"2611":1,"2612":1},"2":{"0":1,"1":2,"2":3,"3":1,"4":2,"5":3,"6":4,"7":1,"9":1,"10":9,"12":1,"14":4,"15":1,"16":2,"17":1,"19":1,"21":2,"22":2,"23":2,"24":3,"25":3,"26":1,"27":1,"28":5,"30":3,"31":5,"32":3,"33":3,"34":5,"36":2,"37":2,"38":1,"39":1,"43":2,"45":6,"46":3,"48":1,"49":21,"50":9,"51":2,"52":1,"56":2,"58":1,"62":1,"63":4,"64":4,"65":4,"69":2,"70":6,"72":1,"73":3,"74":8,"75":2,"76":5,"77":3,"82":5,"83":1,"87":3,"88":2,"89":1,"90":6,"92":3,"93":14,"94":5,"95":2,"98":2,"99":5,"100":2,"103":2,"104":2,"105":3,"107":5,"109":1,"110":3,"112":2,"113":6,"114":48,"116":1,"118":4,"119":8,"120":2,"123":4,"124":6,"125":9,"126":3,"127":2,"128":2,"130":3,"131":1,"132":3,"133":8,"134":38,"137":1,"140":1,"142":1,"149":60,"152":3,"153":11,"154":4,"156":2,"157":2,"158":4,"160":27,"163":2,"164":4,"166":1,"167":4,"169":2,"170":1,"172":5,"173":5,"174":4,"175":1,"176":32,"179":1,"182":6,"184":2,"185":9,"186":2,"187":1,"188":3,"189":4,"191":40,"194":8,"195":7,"198":3,"199":36,"201":4,"202":4,"203":3,"204":1,"206":4,"209":3,"211":64,"213":5,"214":1,"215":2,"218":3,"220":3,"221":2,"222":28,"224":2,"228":7,"230":3,"231":3,"232":4,"233":5,"234":4,"235":4,"236":33,"240":7,"241":1,"243":1,"244":3,"245":2,"246":1,"247":1,"249":38,"253":1,"255":4,"256":1,"257":1,"258":1,"259":2,"262":2,"263":4,"265":5,"266":87,"268":4,"270":1,"271":1,"272":5,"273":5,"275":3,"276":5,"277":24,"278":2,"279":4,"282":21,"284":1,"291":2,"292":1,"302":2,"303":3,"304":1,"305":4,"309":1,"310":1,"311":1,"312":1,"313":2,"314":2,"315":2,"317":6,"318":2,"319":1,"320":2,"322":1,"323":1,"324":2,"325":1,"326":1,"327":1,"330":2,"331":8,"334":2,"335":4,"336":1,"337":1,"340":4,"341":19,"343":2,"344":2,"345":3,"346":2,"349":8,"350":10,"351":1,"352":14,"353":1,"354":4,"355":1,"356":1,"357":2,"358":2,"360":3,"361":1,"363":1,"364":2,"367":4,"370":3,"371":5,"373":1,"374":4,"375":3,"376":3,"378":2,"384":2,"388":2,"389":1,"390":1,"391":1,"393":6,"394":4,"396":3,"397":2,"399":3,"400":3,"401":3,"402":1,"403":4,"404":1,"405":5,"407":1,"408":1,"409":2,"410":1,"411":4,"414":1,"415":2,"416":2,"417":1,"418":1,"423":2,"424":1,"426":1,"427":1,"428":2,"429":4,"430":6,"431":2,"432":4,"433":3,"434":1,"435":9,"436":4,"437":1,"440":3,"441":5,"442":2,"445":2,"446":3,"447":1,"450":4,"451":2,"452":3,"453":7,"454":4,"455":5,"456":1,"457":6,"460":1,"462":1,"465":1,"466":3,"468":4,"469":2,"470":1,"471":2,"472":1,"473":2,"474":2,"477":1,"478":1,"479":6,"481":5,"482":3,"483":3,"484":2,"485":1,"488":1,"493":2,"496":6,"498":1,"499":2,"500":2,"502":13,"504":2,"505":19,"506":11,"507":1,"509":8,"510":4,"511":3,"512":1,"513":6,"515":6,"516":4,"519":3,"520":1,"521":2,"522":2,"526":2,"527":2,"528":2,"529":5,"530":4,"532":2,"533":1,"534":4,"535":1,"537":7,"538":1,"541":3,"542":1,"543":1,"545":1,"546":2,"548":1,"550":4,"551":7,"552":2,"554":17,"555":1,"556":6,"557":5,"558":1,"559":2,"560":13,"561":3,"562":1,"563":2,"564":3,"565":2,"566":5,"567":4,"568":1,"569":2,"570":7,"571":3,"573":1,"574":4,"580":4,"581":2,"582":2,"584":2,"585":1,"586":1,"587":3,"588":7,"592":5,"593":3,"594":3,"595":2,"596":3,"597":5,"598":5,"599":1,"600":1,"601":1,"602":3,"605":1,"606":10,"607":7,"608":1,"609":7,"610":8,"611":5,"612":1,"613":4,"614":5,"615":2,"616":2,"617":1,"618":2,"621":7,"622":1,"623":4,"624":2,"625":2,"626":9,"627":4,"628":3,"629":3,"630":3,"631":2,"633":2,"635":1,"636":3,"638":2,"639":2,"641":4,"642":1,"643":2,"644":4,"648":3,"650":3,"651":1,"653":2,"654":1,"655":1,"656":1,"657":4,"658":4,"659":1,"660":7,"661":6,"662":2,"664":1,"665":2,"666":6,"667":3,"668":1,"669":4,"672":1,"674":2,"676":3,"678":3,"679":1,"680":1,"681":4,"683":3,"684":5,"685":5,"687":1,"688":7,"689":12,"690":5,"691":3,"692":2,"693":1,"694":3,"695":2,"698":5,"699":1,"700":2,"701":5,"702":2,"703":8,"707":3,"708":1,"709":5,"712":5,"714":1,"715":7,"717":1,"718":7,"721":4,"724":4,"726":2,"727":1,"729":1,"730":2,"731":3,"733":1,"734":4,"740":1,"742":3,"744":3,"746":1,"748":1,"753":1,"754":1,"755":1,"756":2,"757":3,"758":2,"759":1,"760":4,"763":1,"767":1,"769":3,"771":3,"773":1,"775":1,"780":1,"782":1,"784":1,"785":2,"786":3,"787":2,"788":2,"789":1,"790":5,"793":1,"797":1,"799":1,"801":3,"803":3,"805":1,"807":1,"812":1,"814":1,"816":1,"817":2,"818":3,"819":2,"820":1,"821":3,"822":3,"823":1,"824":5,"827":1,"831":1,"833":3,"835":3,"837":1,"839":1,"844":1,"846":1,"848":1,"849":2,"850":3,"851":2,"852":1,"853":1,"854":3,"855":3,"856":1,"857":5,"860":1,"864":1,"866":1,"868":3,"870":3,"872":1,"874":1,"879":1,"881":1,"883":1,"884":2,"885":3,"886":2,"887":1,"888":3,"889":3,"890":1,"891":5,"894":1,"898":1,"900":1,"902":3,"904":3,"906":1,"908":1,"913":1,"915":1,"917":1,"918":2,"919":3,"920":2,"921":1,"922":3,"923":3,"924":1,"925":5,"928":1,"932":1,"934":1,"936":3,"938":3,"940":1,"942":1,"947":1,"949":1,"951":1,"952":2,"953":3,"954":2,"955":1,"956":3,"957":3,"958":1,"959":5,"962":1,"966":1,"968":1,"970":3,"972":3,"974":1,"976":1,"981":1,"983":1,"985":1,"986":2,"987":3,"988":2,"989":1,"990":3,"991":3,"992":1,"993":5,"996":1,"1000":1,"1002":1,"1004":3,"1006":3,"1008":1,"1010":1,"1015":1,"1017":1,"1019":1,"1020":2,"1021":3,"1022":2,"1023":1,"1024":3,"1025":3,"1026":1,"1027":5,"1030":1,"1034":1,"1036":1,"1038":3,"1040":3,"1042":1,"1044":1,"1049":1,"1051":1,"1053":1,"1054":2,"1055":3,"1056":2,"1057":1,"1058":3,"1059":3,"1060":1,"1061":5,"1064":1,"1068":1,"1070":1,"1072":3,"1074":3,"1076":1,"1078":1,"1083":1,"1085":1,"1087":1,"1088":2,"1089":3,"1090":2,"1091":1,"1092":3,"1093":3,"1094":1,"1095":5,"1098":1,"1102":1,"1104":1,"1106":3,"1108":3,"1110":1,"1112":1,"1117":1,"1119":1,"1121":1,"1123":2,"1124":3,"1125":2,"1126":6,"1127":5,"1128":3,"1129":9,"1130":6,"1132":2,"1133":3,"1134":1,"1136":1,"1137":2,"1138":3,"1142":2,"1143":1,"1144":2,"1145":3,"1146":2,"1147":1,"1148":5,"1151":1,"1155":1,"1157":1,"1159":3,"1161":3,"1163":1,"1165":1,"1170":1,"1172":1,"1174":1,"1175":2,"1176":5,"1177":12,"1181":6,"1183":1,"1184":1,"1188":1,"1189":4,"1192":4,"1195":1,"1196":2,"1197":1,"1198":9,"1201":1,"1203":1,"1205":1,"1207":4,"1209":4,"1210":1,"1212":1,"1213":2,"1214":2,"1215":1,"1216":3,"1217":7,"1219":1,"1220":1,"1221":3,"1222":1,"1223":2,"1224":1,"1225":5,"1226":6,"1227":3,"1228":2,"1229":1,"1230":7,"1232":1,"1233":1,"1234":6,"1235":4,"1236":4,"1238":2,"1239":1,"1240":1,"1241":2,"1242":1,"1243":5,"1245":4,"1246":1,"1247":1,"1248":1,"1249":1,"1250":1,"1251":1,"1252":4,"1253":3,"1254":2,"1258":1,"1259":2,"1260":1,"1261":1,"1262":3,"1264":5,"1265":3,"1267":2,"1268":1,"1269":2,"1270":5,"1271":4,"1272":1,"1273":1,"1275":3,"1276":1,"1278":4,"1279":1,"1280":1,"1281":2,"1284":1,"1286":1,"1287":8,"1288":4,"1289":1,"1290":2,"1291":2,"1292":1,"1294":2,"1295":1,"1298":2,"1299":1,"1300":13,"1302":4,"1303":7,"1304":3,"1310":3,"1311":1,"1312":4,"1313":2,"1314":4,"1315":13,"1316":4,"1318":1,"1319":4,"1320":4,"1321":2,"1322":5,"1323":1,"1324":1,"1325":8,"1326":4,"1328":1,"1329":1,"1330":3,"1331":8,"1332":27,"1333":2,"1334":2,"1335":13,"1336":10,"1337":3,"1338":3,"1339":1,"1340":3,"1341":8,"1343":1,"1344":4,"1346":7,"1347":2,"1348":1,"1349":2,"1351":3,"1352":4,"1353":6,"1354":1,"1355":5,"1356":2,"1359":12,"1360":5,"1361":2,"1362":1,"1363":2,"1364":3,"1365":1,"1366":1,"1367":2,"1368":2,"1370":3,"1375":1,"1376":3,"1377":5,"1378":2,"1379":1,"1380":3,"1381":1,"1383":5,"1384":9,"1385":18,"1386":4,"1387":2,"1388":2,"1390":2,"1391":6,"1392":1,"1393":7,"1394":1,"1395":5,"1396":6,"1397":3,"1398":7,"1399":7,"1400":3,"1401":1,"1402":2,"1403":10,"1404":2,"1405":10,"1406":7,"1408":1,"1410":1,"1411":2,"1412":3,"1413":1,"1414":1,"1415":1,"1416":9,"1423":3,"1430":3,"1431":7,"1433":2,"1435":11,"1437":4,"1438":6,"1439":4,"1440":2,"1441":7,"1442":3,"1445":4,"1446":2,"1447":4,"1448":6,"1449":1,"1450":4,"1451":17,"1452":9,"1453":3,"1454":1,"1456":1,"1457":4,"1458":4,"1459":7,"1462":4,"1464":5,"1467":2,"1469":8,"1470":3,"1471":6,"1480":2,"1482":1,"1491":3,"1492":4,"1493":1,"1495":9,"1496":4,"1497":6,"1498":4,"1499":6,"1500":5,"1501":2,"1504":2,"1505":1,"1506":3,"1507":2,"1508":5,"1509":1,"1510":1,"1511":3,"1512":1,"1514":3,"1515":5,"1516":2,"1518":12,"1519":1,"1520":1,"1521":1,"1523":1,"1524":2,"1525":2,"1526":2,"1527":7,"1528":4,"1529":4,"1530":9,"1531":2,"1532":1,"1533":2,"1534":4,"1537":4,"1538":1,"1546":2,"1547":4,"1548":2,"1551":3,"1552":1,"1553":8,"1554":4,"1555":3,"1556":3,"1557":2,"1558":2,"1559":4,"1560":3,"1561":2,"1563":1,"1564":1,"1567":3,"1568":1,"1570":3,"1572":4,"1573":13,"1574":2,"1576":1,"1577":4,"1579":2,"1580":1,"1582":4,"1589":1,"1590":1,"1591":6,"1593":1,"1594":2,"1597":2,"1599":1,"1601":2,"1603":1,"1604":5,"1605":3,"1606":1,"1607":1,"1608":1,"1609":1,"1610":1,"1612":2,"1614":2,"1617":1,"1618":2,"1620":1,"1622":3,"1623":1,"1624":2,"1625":1,"1627":3,"1628":1,"1629":3,"1630":2,"1633":1,"1634":1,"1635":1,"1636":1,"1637":5,"1642":2,"1644":1,"1645":1,"1647":2,"1649":2,"1651":1,"1654":2,"1655":8,"1657":6,"1658":2,"1659":1,"1661":1,"1662":1,"1663":1,"1665":3,"1666":3,"1668":4,"1670":23,"1671":2,"1672":2,"1673":3,"1674":4,"1675":3,"1676":4,"1677":11,"1678":3,"1679":2,"1682":2,"1683":5,"1684":11,"1685":5,"1686":1,"1694":1,"1695":1,"1700":1,"1703":2,"1706":3,"1709":4,"1712":5,"1714":3,"1715":2,"1716":1,"1718":2,"1720":2,"1722":3,"1723":3,"1724":3,"1725":14,"1726":2,"1728":6,"1729":8,"1730":6,"1733":3,"1736":1,"1738":1,"1740":1,"1744":2,"1746":1,"1748":2,"1749":1,"1750":2,"1751":1,"1752":2,"1753":1,"1754":2,"1758":1,"1760":1,"1762":1,"1764":1,"1766":1,"1768":2,"1769":1,"1770":2,"1772":1,"1776":1,"1778":1,"1779":1,"1780":1,"1783":1,"1785":1,"1787":3,"1789":2,"1790":2,"1791":5,"1793":49,"1794":2,"1798":1,"1799":2,"1800":2,"1801":5,"1802":3,"1803":7,"1804":4,"1805":9,"1806":7,"1807":11,"1808":1,"1812":3,"1813":1,"1814":2,"1815":5,"1816":4,"1817":10,"1819":1,"1820":11,"1821":9,"1822":31,"1825":2,"1826":1,"1827":1,"1828":3,"1830":5,"1832":6,"1833":1,"1838":2,"1840":2,"1842":2,"1844":2,"1846":2,"1848":1,"1853":4,"1854":2,"1855":6,"1856":4,"1857":11,"1858":2,"1859":3,"1860":5,"1862":2,"1863":9,"1864":1,"1865":3,"1866":2,"1867":5,"1868":3,"1869":7,"1870":18,"1871":3,"1872":7,"1873":1,"1874":7,"1875":3,"1876":15,"1878":2,"1879":5,"1880":8,"1881":1,"1883":3,"1884":4,"1885":4,"1886":2,"1887":1,"1888":1,"1889":3,"1890":2,"1892":1,"1894":4,"1895":3,"1897":3,"1898":5,"1899":2,"1901":1,"1902":5,"1903":1,"1907":4,"1910":4,"1911":1,"1912":9,"1913":1,"1914":2,"1915":1,"1916":2,"1917":2,"1918":3,"1919":1,"1920":1,"1921":11,"1922":4,"1923":1,"1926":1,"1928":2,"1929":2,"1932":4,"1933":5,"1934":3,"1935":2,"1936":4,"1938":2,"1941":4,"1942":5,"1943":1,"1944":3,"1945":3,"1946":14,"1947":2,"1948":3,"1949":21,"1950":7,"1951":1,"1952":8,"1953":5,"1954":10,"1957":3,"1958":1,"1959":7,"1960":2,"1963":1,"1965":1,"1967":1,"1971":4,"1973":3,"1975":2,"1976":1,"1977":2,"1978":1,"1979":2,"1980":1,"1981":2,"1985":1,"1987":1,"1989":1,"1991":1,"1993":1,"1995":1,"1997":1,"1999":1,"2001":1,"2003":1,"2005":1,"2007":2,"2008":1,"2009":2,"2011":1,"2013":6,"2014":1,"2015":6,"2021":1,"2023":1,"2024":1,"2025":1,"2028":1,"2030":1,"2031":6,"2032":9,"2033":1,"2034":1,"2035":11,"2037":2,"2038":12,"2039":1,"2040":6,"2041":3,"2042":11,"2044":6,"2045":2,"2046":2,"2047":3,"2048":1,"2051":20,"2052":7,"2053":3,"2054":9,"2055":3,"2058":5,"2059":2,"2060":3,"2061":6,"2063":3,"2064":3,"2065":1,"2066":3,"2067":1,"2068":1,"2069":1,"2070":4,"2072":2,"2073":1,"2074":2,"2075":2,"2076":3,"2078":1,"2079":1,"2082":1,"2084":2,"2086":1,"2088":2,"2090":1,"2092":2,"2094":2,"2096":2,"2098":2,"2100":1,"2101":1,"2105":1,"2106":2,"2107":11,"2108":2,"2109":1,"2110":2,"2111":1,"2112":3,"2113":4,"2114":1,"2116":2,"2117":2,"2118":3,"2119":1,"2120":3,"2121":3,"2122":2,"2123":2,"2124":6,"2125":14,"2126":9,"2127":6,"2128":11,"2129":19,"2130":20,"2131":10,"2133":6,"2134":3,"2137":4,"2138":2,"2139":5,"2140":2,"2141":9,"2142":2,"2143":26,"2145":14,"2146":10,"2147":5,"2148":4,"2149":8,"2150":10,"2152":13,"2153":4,"2154":1,"2155":2,"2156":1,"2157":3,"2158":1,"2161":10,"2162":10,"2164":2,"2167":3,"2168":2,"2169":25,"2170":4,"2171":21,"2172":6,"2174":4,"2175":1,"2177":1,"2178":2,"2179":7,"2180":7,"2181":10,"2182":9,"2183":17,"2184":7,"2189":1,"2190":1,"2191":1,"2200":1,"2202":1,"2204":1,"2216":1,"2217":1,"2221":1,"2225":2,"2226":7,"2227":1,"2228":5,"2229":5,"2230":4,"2231":7,"2233":7,"2234":2,"2235":4,"2236":3,"2237":3,"2238":11,"2240":5,"2241":2,"2242":5,"2243":3,"2244":2,"2245":8,"2247":8,"2249":8,"2250":3,"2252":8,"2254":3,"2255":14,"2256":3,"2257":1,"2258":1,"2260":2,"2261":4,"2262":21,"2263":34,"2264":1,"2267":2,"2268":10,"2269":2,"2270":5,"2272":9,"2273":16,"2274":12,"2275":7,"2276":12,"2277":5,"2278":1,"2279":8,"2280":2,"2281":1,"2282":2,"2284":2,"2286":2,"2289":4,"2290":2,"2291":1,"2292":5,"2295":4,"2297":2,"2298":1,"2299":2,"2300":3,"2301":1,"2302":4,"2303":2,"2304":3,"2305":6,"2306":2,"2307":3,"2309":5,"2310":1,"2311":18,"2312":1,"2314":1,"2315":4,"2316":2,"2317":3,"2318":1,"2319":5,"2320":3,"2323":1,"2324":2,"2325":1,"2326":5,"2327":7,"2328":9,"2329":2,"2330":2,"2331":1,"2332":2,"2333":2,"2334":2,"2335":1,"2339":1,"2341":1,"2343":2,"2344":2,"2346":1,"2347":8,"2348":5,"2349":3,"2350":2,"2351":3,"2352":1,"2353":12,"2354":3,"2357":1,"2360":1,"2367":1,"2371":49,"2372":3,"2379":1,"2384":7,"2395":1,"2396":3,"2397":1,"2398":3,"2400":1,"2401":2,"2402":5,"2403":5,"2404":2,"2405":4,"2406":1,"2407":4,"2408":3,"2409":1,"2410":1,"2411":11,"2413":3,"2414":7,"2415":3,"2417":7,"2418":4,"2420":1,"2421":5,"2422":2,"2423":3,"2424":8,"2425":7,"2426":4,"2427":3,"2428":4,"2429":5,"2430":1,"2431":2,"2432":1,"2433":3,"2435":1,"2436":4,"2437":1,"2438":1,"2439":5,"2440":4,"2441":8,"2442":5,"2443":3,"2444":2,"2445":6,"2446":8,"2447":2,"2448":3,"2449":1,"2450":6,"2451":3,"2452":4,"2453":4,"2454":9,"2455":3,"2456":3,"2457":5,"2458":4,"2459":2,"2460":1,"2462":2,"2464":1,"2466":2,"2467":2,"2468":12,"2469":6,"2470":2,"2472":8,"2473":2,"2474":16,"2475":4,"2476":5,"2477":13,"2478":4,"2479":14,"2480":22,"2481":4,"2482":1,"2483":1,"2485":2,"2486":1,"2490":11,"2491":6,"2492":3,"2494":1,"2495":4,"2496":1,"2497":8,"2498":3,"2499":1,"2501":1,"2502":3,"2503":3,"2504":3,"2506":4,"2507":3,"2508":11,"2509":1,"2510":5,"2512":7,"2513":28,"2514":3,"2515":2,"2518":2,"2519":1,"2521":4,"2522":2,"2523":3,"2524":17,"2525":5,"2526":2,"2529":2,"2530":6,"2533":5,"2534":3,"2535":2,"2536":1,"2537":1,"2539":5,"2540":1,"2541":3,"2542":3,"2544":4,"2545":1,"2546":7,"2548":11,"2549":4,"2550":1,"2551":1,"2552":3,"2553":8,"2554":2,"2555":1,"2556":3,"2557":2,"2558":4,"2559":4,"2560":2,"2564":9,"2565":6,"2566":39,"2567":8,"2568":5,"2569":6,"2571":2,"2572":1,"2573":7,"2574":7,"2575":15,"2576":40,"2577":61,"2578":7,"2579":4,"2581":6,"2582":1,"2584":6,"2586":1,"2587":2,"2590":1,"2591":1,"2594":2,"2595":3,"2597":3,"2598":7,"2599":1,"2600":3,"2601":1,"2603":2,"2605":6,"2606":3,"2607":4,"2608":3,"2609":2,"2610":5,"2611":3,"2612":1,"2613":1,"2614":13,"2615":10,"2616":3,"2617":1,"2619":1,"2620":2,"2626":1,"2627":2,"2628":1,"2643":1,"2644":2,"2645":2,"2647":2,"2648":2,"2651":1,"2653":1,"2656":3,"2661":1,"2662":2,"2663":1,"2664":1,"2666":2,"2671":4,"2672":3,"2674":2,"2675":3,"2676":4,"2677":7,"2678":1,"2679":2,"2681":1,"2682":1,"2683":4,"2684":3,"2685":6,"2686":5,"2687":1,"2688":10,"2689":6,"2690":1,"2691":2,"2692":3,"2693":6,"2694":7,"2695":10,"2696":7,"2697":17,"2698":1,"2699":4,"2700":2,"2701":7,"2702":6,"2703":5,"2704":2,"2705":2,"2706":6,"2708":4,"2709":2,"2710":3,"2711":7,"2714":2,"2718":5,"2719":9,"2720":1,"2722":3,"2723":3,"2724":3,"2725":2,"2726":1,"2727":8,"2728":20,"2729":3,"2730":2,"2734":2,"2735":5,"2736":5,"2737":11,"2738":15,"2739":1,"2740":2,"2741":2,"2742":2,"2743":1,"2744":3,"2745":3,"2746":11,"2747":4,"2748":4,"2749":7,"2750":2,"2751":3,"2752":3,"2753":6,"2754":2,"2755":4,"2756":3,"2757":17}}],["th",{"2":{"1527":1}}],["th+tl",{"2":{"1214":1}}],["thus",{"2":{"341":1,"1134":1,"1217":1,"1290":1,"1300":1,"1375":1,"1414":1,"1499":1,"1677":1,"2122":1,"2171":1,"2235":1,"2315":1,"2320":1,"2474":1,"2535":1,"2542":1,"2711":1,"2728":1,"2735":1,"2738":1}}],["thumb",{"2":{"199":1}}],["threads",{"2":{"2255":1}}],["threading",{"0":{"478":1}}],["threshold",{"0":{"246":1},"2":{"246":2,"249":1,"1889":1}}],["three",{"0":{"299":1,"1705":1},"1":{"1706":1,"1707":1},"2":{"98":1,"191":1,"196":1,"282":1,"299":1,"462":1,"496":1,"546":1,"574":1,"580":1,"1273":1,"1416":1,"1433":1,"1434":1,"1451":1,"1510":2,"1562":2,"1673":2,"1680":1,"1683":1,"1714":1,"1802":1,"1813":1,"1822":1,"1902":1,"2044":1,"2111":2,"2137":2,"2152":2,"2160":1,"2162":3,"2169":1,"2182":1,"2311":1,"2355":1,"2727":1,"2728":2,"2729":1}}],["throttling",{"2":{"2128":1}}],["throttled",{"2":{"2130":1}}],["throttle",{"2":{"149":1,"511":1,"1863":1,"1872":2,"2128":1,"2574":1,"2577":6}}],["throtting",{"2":{"587":1}}],["thrown",{"2":{"516":1}}],["throw",{"2":{"114":1,"1287":1}}],["throughout",{"2":{"1655":1}}],["through",{"0":{"1344":1},"2":{"110":1,"160":1,"166":1,"224":1,"232":1,"315":1,"354":2,"374":1,"502":1,"529":1,"534":1,"574":1,"580":1,"606":1,"630":1,"661":1,"1242":1,"1265":1,"1327":1,"1335":1,"1344":1,"1346":1,"1375":1,"1385":1,"1393":1,"1396":1,"1397":2,"1402":2,"1403":2,"1408":3,"1420":1,"1421":1,"1426":1,"1427":2,"1445":1,"1454":1,"1456":1,"1471":1,"1476":1,"1498":1,"1500":1,"1559":2,"1573":2,"1637":2,"1727":2,"1897":1,"1948":2,"1949":1,"1951":1,"2034":2,"2035":1,"2091":1,"2093":1,"2095":1,"2097":1,"2111":1,"2161":1,"2162":1,"2179":1,"2183":1,"2184":2,"2233":1,"2255":1,"2266":1,"2268":1,"2272":1,"2274":1,"2277":1,"2286":1,"2303":1,"2311":3,"2315":1,"2319":1,"2324":1,"2351":1,"2357":3,"2360":1,"2369":2,"2376":2,"2377":2,"2384":2,"2403":1,"2404":1,"2459":1,"2472":1,"2501":1,"2513":1,"2528":1,"2546":1,"2548":1,"2551":2,"2566":3,"2568":1,"2571":1,"2577":3,"2625":1,"2699":2,"2719":1,"2743":1}}],["thomas",{"2":{"2337":1,"2483":1}}],["thoughts",{"0":{"2709":1}}],["thought",{"2":{"482":1,"2275":1,"2417":1}}],["though",{"2":{"50":1,"334":1,"1293":1,"1302":1,"1377":1,"1390":1,"1411":1,"1441":1,"1454":1,"1670":1,"1674":1,"1675":1,"2269":1,"2272":1,"2274":1,"2480":1}}],["those",{"2":{"33":1,"49":1,"113":1,"175":1,"263":1,"265":1,"276":1,"304":1,"317":1,"430":1,"454":1,"479":1,"519":1,"541":2,"557":1,"643":1,"665":1,"688":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1129":1,"1144":1,"1213":1,"1271":1,"1273":1,"1280":1,"1383":1,"1385":1,"1386":1,"1403":1,"1416":1,"1435":1,"1677":1,"1683":1,"1716":1,"1733":1,"1821":1,"1907":1,"1957":1,"2152":1,"2181":1,"2255":1,"2276":1,"2314":1,"2406":1,"2418":1,"2435":1,"2441":1,"2508":1,"2529":1,"2548":1,"2557":1,"2571":1,"2576":1,"2601":1,"2610":1,"2701":1,"2702":1,"2719":1,"2728":1,"2738":1,"2740":2,"2746":2,"2753":2,"2755":1}}],["thickness",{"2":{"2267":1}}],["thicker",{"2":{"1863":1}}],["thiers",{"2":{"1441":1}}],["thier",{"2":{"1440":3,"1441":8}}],["thing",{"0":{"551":1},"2":{"213":1,"484":1,"509":1,"1260":1,"1300":1,"1312":1,"1331":1,"1359":3,"2169":1,"2319":1,"2557":1,"2711":1,"2740":1,"2752":1}}],["things",{"0":{"2159":1},"1":{"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1},"2":{"50":1,"113":1,"119":1,"158":1,"230":1,"278":1,"305":1,"352":1,"353":1,"389":1,"390":1,"391":1,"454":1,"455":1,"462":1,"501":1,"551":1,"560":2,"561":1,"567":1,"572":1,"574":1,"607":1,"630":1,"1262":1,"1287":1,"1360":1,"1363":1,"1403":1,"1404":1,"1416":1,"1498":1,"1787":1,"1903":1,"2129":2,"2133":1,"2152":2,"2169":1,"2178":1,"2231":1,"2238":1,"2255":1,"2262":1,"2273":2,"2277":1,"2279":2,"2299":1,"2311":1,"2318":1,"2348":1,"2407":1,"2408":1,"2417":2,"2450":1,"2472":2,"2504":1,"2507":1,"2524":1,"2553":1,"2569":1,"2702":1}}],["thinkpad",{"2":{"1290":1,"1902":1}}],["thinking",{"2":{"243":1}}],["thinks",{"2":{"182":1}}],["think",{"2":{"119":1,"228":1,"453":1,"455":1,"481":1,"554":1,"560":1,"1242":1,"1412":2,"1630":1,"2305":1,"2311":1,"2564":1,"2710":1,"2743":1,"2757":1}}],["third",{"2":{"49":1,"317":1,"550":1,"598":1,"657":1,"1406":1,"1675":1,"1706":1,"1709":1,"1712":1,"2155":2,"2161":1,"2169":1,"2172":1,"2183":1,"2566":1,"2720":1}}],["this",{"0":{"551":1,"1252":1},"2":{"0":1,"3":1,"5":1,"6":2,"10":1,"11":2,"14":2,"15":1,"16":1,"21":1,"23":1,"28":1,"30":1,"31":1,"32":1,"33":1,"34":1,"36":3,"45":2,"49":6,"50":2,"69":1,"70":2,"87":1,"88":1,"90":2,"99":3,"103":1,"104":1,"107":1,"111":1,"116":1,"119":1,"120":1,"123":1,"125":3,"126":2,"127":1,"131":1,"132":2,"133":1,"143":2,"149":1,"152":2,"154":1,"156":1,"163":1,"164":1,"172":2,"173":1,"182":2,"185":3,"187":1,"189":1,"190":1,"194":4,"198":1,"201":2,"209":1,"211":1,"213":3,"214":1,"215":2,"218":2,"221":1,"224":1,"228":2,"229":1,"230":2,"231":1,"233":1,"240":1,"243":1,"244":1,"251":1,"255":2,"256":1,"262":1,"263":5,"265":1,"268":1,"271":1,"273":4,"275":1,"276":2,"278":1,"279":1,"284":1,"286":1,"288":1,"290":6,"291":1,"292":1,"293":2,"300":1,"303":2,"304":1,"307":1,"308":1,"309":1,"310":1,"311":2,"312":1,"315":1,"316":2,"319":1,"322":3,"323":1,"324":1,"326":1,"327":1,"328":1,"331":4,"334":1,"335":2,"337":3,"340":1,"341":3,"342":1,"343":1,"344":1,"345":1,"349":3,"350":5,"351":1,"352":2,"355":1,"358":1,"365":1,"366":2,"370":2,"371":3,"372":1,"373":1,"374":1,"375":1,"376":1,"377":1,"378":2,"380":1,"381":1,"382":1,"383":2,"384":1,"385":1,"386":2,"387":1,"388":1,"389":1,"390":1,"391":1,"393":2,"394":2,"395":2,"396":2,"397":1,"399":1,"400":1,"401":2,"402":3,"403":3,"404":2,"405":1,"406":1,"407":2,"408":2,"409":2,"410":2,"411":3,"412":1,"413":1,"415":1,"427":1,"429":1,"430":5,"433":1,"434":1,"435":1,"436":3,"440":1,"446":2,"447":1,"448":1,"450":2,"453":2,"457":1,"464":1,"465":2,"466":1,"467":1,"470":1,"478":1,"480":1,"481":1,"482":2,"483":1,"484":1,"485":2,"493":1,"495":1,"496":1,"497":1,"498":2,"500":1,"501":1,"502":1,"504":1,"505":3,"508":1,"510":2,"511":1,"512":1,"513":2,"515":2,"516":3,"517":1,"520":1,"521":2,"523":2,"524":2,"525":1,"528":1,"529":8,"532":1,"533":1,"534":6,"535":1,"536":1,"539":2,"541":4,"550":2,"554":1,"556":1,"557":1,"558":1,"560":3,"563":1,"564":2,"565":1,"566":3,"567":1,"570":2,"572":2,"574":2,"575":4,"576":1,"578":2,"580":5,"581":3,"582":1,"585":2,"586":2,"587":1,"588":1,"589":3,"592":5,"596":1,"597":2,"598":4,"599":1,"600":1,"601":1,"602":3,"605":1,"606":3,"608":1,"609":3,"610":4,"611":1,"613":3,"614":1,"615":1,"616":4,"619":2,"620":2,"621":1,"622":1,"623":1,"624":2,"626":2,"627":6,"628":5,"629":1,"630":2,"631":2,"635":4,"639":2,"641":2,"642":1,"646":1,"647":1,"657":1,"659":1,"661":3,"662":2,"665":1,"667":1,"669":2,"673":1,"675":1,"681":2,"684":1,"685":1,"687":2,"688":4,"689":4,"690":1,"691":1,"692":3,"695":1,"697":1,"701":3,"702":1,"703":2,"704":1,"705":1,"707":2,"726":2,"727":1,"730":1,"734":2,"738":1,"741":1,"745":1,"749":1,"751":1,"756":1,"758":1,"760":2,"764":1,"768":1,"772":1,"776":1,"778":1,"785":1,"787":1,"788":2,"790":2,"794":1,"800":1,"804":1,"808":1,"810":1,"817":1,"819":1,"821":1,"822":1,"824":2,"828":1,"832":1,"836":1,"840":1,"842":1,"849":1,"851":1,"852":1,"854":1,"855":1,"857":2,"861":1,"867":1,"871":1,"875":1,"877":1,"884":1,"886":1,"888":1,"889":1,"891":2,"895":1,"901":1,"905":1,"909":1,"911":1,"918":1,"920":1,"922":1,"923":1,"925":2,"929":1,"935":1,"939":1,"943":1,"945":1,"952":1,"954":1,"956":1,"957":1,"959":2,"963":1,"969":1,"973":1,"977":1,"979":1,"986":1,"988":1,"990":1,"991":1,"993":2,"997":1,"1003":1,"1007":1,"1011":1,"1013":1,"1020":1,"1022":1,"1023":1,"1024":1,"1025":1,"1027":2,"1031":1,"1037":1,"1041":1,"1045":1,"1047":1,"1054":1,"1056":1,"1057":1,"1058":1,"1059":1,"1061":2,"1065":1,"1071":1,"1075":1,"1079":1,"1081":1,"1088":1,"1090":1,"1092":1,"1093":1,"1095":2,"1099":1,"1105":1,"1109":1,"1113":1,"1115":1,"1121":1,"1122":2,"1123":2,"1126":2,"1128":1,"1129":5,"1132":1,"1133":1,"1134":2,"1137":2,"1143":1,"1144":1,"1146":1,"1148":2,"1152":1,"1158":1,"1162":1,"1166":1,"1168":1,"1176":1,"1177":1,"1179":1,"1181":1,"1194":1,"1195":1,"1200":1,"1201":1,"1205":1,"1210":1,"1212":2,"1219":2,"1221":3,"1222":1,"1223":2,"1225":2,"1226":1,"1230":1,"1235":1,"1236":1,"1237":1,"1238":2,"1239":1,"1242":2,"1243":5,"1244":1,"1252":1,"1253":1,"1254":3,"1258":1,"1264":2,"1266":1,"1269":1,"1270":5,"1271":1,"1272":1,"1274":1,"1276":5,"1278":3,"1279":1,"1281":2,"1283":1,"1287":1,"1288":1,"1290":1,"1292":1,"1300":1,"1302":3,"1303":4,"1304":3,"1310":2,"1311":1,"1312":2,"1314":2,"1316":1,"1325":2,"1326":1,"1328":1,"1329":3,"1331":5,"1332":16,"1334":1,"1335":6,"1336":4,"1338":2,"1340":1,"1341":1,"1342":2,"1343":1,"1344":2,"1347":1,"1348":1,"1351":1,"1354":1,"1355":3,"1357":1,"1359":2,"1360":5,"1361":3,"1362":1,"1363":1,"1365":2,"1366":1,"1367":2,"1368":3,"1371":1,"1372":1,"1373":1,"1375":3,"1376":3,"1377":4,"1378":2,"1379":2,"1380":5,"1381":1,"1383":3,"1384":6,"1385":11,"1386":1,"1392":1,"1393":1,"1397":1,"1398":6,"1401":1,"1403":6,"1404":4,"1405":5,"1406":7,"1411":3,"1412":1,"1415":1,"1416":7,"1423":2,"1431":3,"1433":1,"1437":1,"1439":1,"1440":3,"1441":3,"1442":2,"1445":1,"1446":1,"1447":1,"1448":3,"1450":3,"1451":6,"1452":1,"1453":1,"1454":1,"1458":2,"1459":3,"1461":1,"1462":1,"1463":1,"1464":1,"1467":1,"1469":1,"1470":1,"1471":2,"1492":1,"1494":2,"1495":4,"1497":3,"1499":2,"1500":3,"1501":1,"1503":2,"1507":1,"1508":2,"1511":2,"1512":1,"1514":1,"1515":3,"1516":1,"1518":2,"1520":1,"1522":1,"1525":3,"1527":2,"1528":2,"1529":1,"1531":1,"1533":1,"1534":1,"1547":2,"1548":2,"1553":2,"1554":3,"1555":1,"1556":1,"1557":3,"1558":1,"1559":2,"1560":2,"1562":3,"1564":1,"1567":1,"1568":2,"1573":2,"1575":1,"1577":2,"1579":1,"1580":1,"1581":1,"1589":1,"1594":2,"1596":1,"1598":1,"1599":1,"1600":1,"1609":1,"1613":1,"1622":1,"1624":1,"1626":1,"1628":1,"1633":1,"1634":1,"1635":1,"1636":1,"1655":2,"1657":1,"1659":2,"1661":1,"1663":2,"1665":2,"1668":3,"1670":16,"1671":1,"1672":2,"1673":1,"1674":1,"1675":7,"1677":2,"1682":2,"1683":4,"1684":3,"1685":4,"1686":1,"1717":3,"1718":1,"1719":1,"1720":1,"1723":1,"1725":6,"1726":2,"1733":2,"1743":1,"1745":1,"1781":2,"1784":2,"1794":1,"1803":3,"1804":2,"1805":1,"1806":7,"1807":2,"1808":1,"1813":1,"1814":1,"1815":2,"1816":1,"1817":2,"1820":1,"1821":4,"1824":1,"1825":2,"1827":1,"1828":1,"1830":1,"1832":2,"1853":1,"1855":1,"1856":1,"1857":3,"1858":2,"1862":2,"1865":3,"1866":2,"1867":1,"1868":1,"1869":1,"1870":4,"1872":4,"1876":14,"1878":2,"1879":2,"1880":2,"1885":1,"1894":1,"1897":1,"1900":2,"1904":1,"1908":1,"1912":2,"1918":2,"1921":1,"1929":1,"1933":1,"1935":1,"1936":1,"1938":2,"1939":1,"1940":1,"1941":1,"1944":1,"1946":6,"1947":2,"1950":3,"1953":1,"1954":2,"1957":2,"1959":4,"1960":1,"1970":1,"1972":1,"2026":2,"2029":2,"2031":2,"2033":1,"2036":3,"2042":2,"2044":1,"2054":12,"2058":1,"2059":1,"2060":1,"2066":1,"2072":1,"2074":1,"2079":2,"2081":1,"2085":1,"2087":1,"2100":1,"2101":1,"2106":1,"2107":1,"2108":1,"2109":1,"2114":1,"2116":1,"2118":2,"2123":1,"2124":4,"2125":2,"2126":5,"2127":3,"2128":13,"2129":19,"2130":4,"2131":17,"2136":1,"2137":1,"2138":1,"2139":2,"2140":1,"2141":2,"2142":1,"2146":2,"2149":1,"2150":1,"2152":10,"2155":1,"2160":1,"2161":8,"2162":5,"2165":2,"2168":1,"2169":6,"2170":1,"2171":8,"2172":3,"2174":1,"2177":2,"2181":1,"2182":3,"2183":8,"2196":1,"2197":1,"2198":1,"2225":2,"2226":5,"2228":1,"2229":1,"2230":1,"2231":1,"2232":1,"2233":1,"2234":2,"2235":1,"2236":1,"2237":2,"2238":3,"2240":1,"2241":1,"2242":2,"2243":2,"2244":2,"2245":3,"2247":3,"2249":3,"2250":3,"2252":2,"2254":2,"2255":5,"2256":1,"2258":1,"2259":4,"2261":1,"2262":3,"2263":21,"2267":2,"2268":2,"2270":1,"2272":4,"2273":5,"2274":1,"2276":2,"2279":1,"2280":2,"2282":3,"2286":2,"2289":1,"2295":3,"2296":1,"2298":1,"2299":2,"2300":2,"2301":3,"2302":4,"2305":4,"2309":1,"2311":14,"2312":1,"2313":1,"2314":3,"2315":1,"2316":1,"2318":1,"2319":1,"2322":1,"2326":1,"2327":3,"2335":1,"2344":2,"2345":1,"2346":2,"2347":2,"2348":3,"2349":2,"2350":2,"2351":1,"2353":2,"2354":2,"2355":1,"2395":1,"2398":3,"2400":1,"2402":1,"2404":1,"2405":1,"2406":5,"2407":1,"2408":4,"2409":1,"2410":2,"2411":7,"2415":1,"2417":2,"2418":3,"2419":1,"2420":1,"2421":1,"2422":2,"2423":3,"2424":1,"2425":2,"2427":1,"2428":4,"2433":1,"2440":1,"2441":1,"2442":1,"2445":1,"2446":2,"2448":1,"2450":5,"2452":2,"2454":9,"2456":1,"2459":1,"2460":1,"2466":1,"2468":5,"2469":2,"2472":3,"2473":2,"2474":4,"2475":1,"2477":4,"2479":5,"2480":3,"2481":1,"2490":6,"2491":1,"2492":2,"2497":2,"2498":1,"2502":1,"2503":2,"2506":6,"2507":1,"2508":3,"2510":4,"2512":1,"2513":5,"2514":1,"2517":2,"2518":1,"2519":1,"2521":1,"2522":1,"2523":2,"2524":8,"2525":5,"2526":4,"2529":3,"2530":1,"2533":1,"2534":2,"2539":1,"2541":1,"2542":2,"2543":1,"2546":2,"2548":3,"2550":1,"2551":2,"2553":2,"2554":1,"2557":1,"2559":1,"2563":2,"2564":5,"2565":2,"2566":4,"2567":2,"2568":2,"2569":1,"2570":3,"2571":2,"2573":1,"2574":3,"2575":8,"2576":1,"2577":7,"2584":3,"2585":1,"2587":1,"2589":1,"2592":1,"2593":1,"2594":1,"2595":3,"2596":5,"2597":1,"2598":1,"2599":1,"2603":4,"2605":5,"2606":1,"2607":5,"2611":2,"2613":1,"2614":5,"2615":3,"2655":1,"2671":1,"2672":2,"2679":1,"2686":3,"2699":1,"2702":8,"2703":3,"2704":3,"2707":5,"2709":1,"2710":3,"2711":2,"2716":1,"2718":1,"2719":1,"2722":1,"2723":1,"2727":6,"2728":2,"2729":6,"2730":1,"2734":1,"2735":7,"2736":5,"2737":2,"2738":4,"2742":1,"2743":2,"2744":3,"2745":3,"2746":5,"2747":2,"2748":3,"2749":4,"2752":1,"2753":1,"2757":4}}],["thank",{"2":{"2347":1}}],["thanks",{"2":{"235":1,"284":1,"550":1,"2255":1,"2292":1,"2317":1,"2568":1}}],["thankyou",{"2":{"116":1}}],["than",{"0":{"1277":1},"2":{"24":1,"46":1,"49":1,"50":1,"63":1,"112":1,"124":1,"152":1,"153":1,"166":1,"176":1,"194":1,"201":2,"213":1,"230":1,"234":1,"251":1,"278":1,"367":1,"415":1,"418":1,"453":3,"455":1,"468":1,"476":1,"482":1,"502":1,"505":1,"511":2,"513":1,"556":1,"560":1,"567":2,"570":1,"571":1,"596":1,"628":1,"689":1,"1121":2,"1128":1,"1176":1,"1225":1,"1287":1,"1290":1,"1329":1,"1336":1,"1338":1,"1339":1,"1340":3,"1355":1,"1359":1,"1368":1,"1376":1,"1383":1,"1403":1,"1404":1,"1411":1,"1412":1,"1416":2,"1431":2,"1442":1,"1445":1,"1446":2,"1451":1,"1499":2,"1515":1,"1562":1,"1573":1,"1655":1,"1670":1,"1683":1,"1685":1,"1791":1,"1821":2,"1822":1,"1854":1,"1895":1,"1897":1,"2033":1,"2036":1,"2060":1,"2107":1,"2128":1,"2145":1,"2147":1,"2161":4,"2162":1,"2170":1,"2241":2,"2243":1,"2262":2,"2263":1,"2272":1,"2286":1,"2311":1,"2335":1,"2344":1,"2403":1,"2411":2,"2427":1,"2442":1,"2460":1,"2474":1,"2490":1,"2516":1,"2551":1,"2565":1,"2566":2,"2567":1,"2571":1,"2577":1,"2605":1,"2608":1,"2612":1,"2654":1,"2729":4,"2734":2,"2737":2,"2757":1}}],["that",{"0":{"503":1,"504":1,"505":1,"1260":1,"1263":1,"1381":1,"1886":1},"1":{"1264":1},"2":{"0":3,"5":1,"6":2,"9":3,"13":2,"14":1,"19":3,"23":1,"24":1,"28":1,"31":2,"34":1,"36":2,"38":1,"39":3,"45":1,"46":1,"49":2,"50":3,"52":3,"70":1,"73":2,"75":1,"87":1,"90":1,"94":2,"95":1,"98":1,"99":1,"103":1,"110":1,"112":1,"114":3,"123":2,"124":2,"125":1,"126":1,"131":1,"132":2,"149":4,"152":2,"153":1,"154":1,"156":1,"163":1,"166":1,"175":1,"176":5,"179":2,"182":4,"185":1,"191":2,"194":1,"195":1,"199":3,"203":3,"209":1,"218":1,"224":1,"230":1,"233":1,"240":2,"243":1,"255":1,"256":1,"262":1,"263":1,"268":1,"275":1,"276":1,"278":1,"300":1,"303":1,"305":1,"307":1,"312":1,"315":1,"317":3,"318":2,"324":2,"331":1,"334":1,"337":5,"341":3,"344":1,"345":2,"346":1,"347":1,"349":3,"350":2,"352":5,"353":1,"354":3,"355":1,"361":1,"366":1,"370":2,"373":1,"384":1,"385":1,"399":1,"400":1,"414":1,"415":2,"428":1,"431":1,"434":1,"435":4,"436":1,"437":1,"446":1,"452":1,"453":5,"454":1,"457":1,"460":1,"465":1,"466":1,"467":2,"471":1,"473":1,"474":2,"479":2,"480":1,"481":3,"482":2,"483":1,"488":1,"493":1,"495":1,"496":1,"497":2,"498":1,"499":1,"500":1,"501":1,"502":1,"506":2,"509":3,"512":2,"519":2,"520":1,"523":1,"524":1,"525":1,"529":5,"530":2,"533":2,"534":2,"537":1,"538":3,"540":1,"551":1,"554":3,"556":6,"559":2,"560":4,"562":2,"564":1,"567":2,"568":1,"570":2,"571":2,"574":2,"575":1,"578":1,"584":2,"586":1,"587":2,"592":2,"597":2,"598":2,"599":1,"601":1,"602":2,"606":4,"609":1,"611":1,"614":1,"616":1,"621":1,"623":1,"625":1,"626":1,"627":2,"628":1,"629":2,"635":2,"636":3,"639":2,"641":2,"659":3,"661":1,"662":1,"663":1,"684":1,"685":1,"688":1,"689":1,"691":2,"694":1,"698":3,"726":1,"1121":2,"1125":1,"1126":1,"1127":1,"1129":1,"1132":3,"1133":3,"1135":1,"1138":1,"1142":1,"1212":1,"1219":1,"1220":1,"1235":1,"1236":1,"1238":1,"1239":1,"1241":1,"1250":1,"1258":3,"1260":1,"1264":2,"1265":1,"1270":1,"1271":1,"1272":1,"1278":2,"1287":3,"1293":1,"1294":1,"1299":1,"1300":3,"1302":1,"1303":4,"1304":2,"1312":2,"1313":1,"1325":3,"1326":2,"1329":6,"1331":4,"1332":11,"1333":1,"1334":1,"1335":4,"1336":1,"1337":1,"1340":5,"1341":3,"1342":1,"1346":1,"1351":2,"1353":1,"1359":5,"1360":1,"1361":2,"1362":1,"1364":1,"1365":1,"1368":1,"1377":6,"1379":1,"1380":2,"1383":8,"1384":4,"1385":14,"1390":1,"1394":1,"1397":2,"1398":4,"1399":1,"1400":1,"1404":1,"1405":4,"1410":2,"1412":1,"1413":1,"1414":2,"1415":1,"1416":4,"1423":1,"1427":1,"1429":1,"1430":1,"1431":1,"1435":1,"1436":1,"1437":1,"1439":1,"1440":2,"1441":2,"1445":1,"1446":3,"1451":2,"1452":1,"1455":1,"1457":1,"1458":1,"1464":1,"1467":1,"1471":1,"1492":1,"1494":1,"1495":5,"1496":1,"1497":3,"1498":2,"1499":2,"1503":1,"1506":3,"1511":1,"1518":2,"1521":1,"1526":1,"1528":1,"1537":1,"1553":3,"1554":2,"1556":3,"1558":2,"1563":2,"1573":4,"1576":1,"1578":1,"1579":1,"1634":1,"1636":1,"1658":1,"1660":1,"1661":1,"1662":1,"1665":1,"1670":5,"1673":1,"1674":1,"1675":2,"1676":3,"1677":4,"1683":2,"1684":1,"1714":1,"1715":5,"1717":1,"1725":3,"1728":2,"1787":1,"1791":1,"1798":1,"1802":2,"1805":1,"1816":1,"1820":2,"1821":1,"1822":3,"1825":1,"1832":1,"1854":2,"1856":2,"1857":2,"1863":1,"1865":2,"1870":3,"1871":1,"1872":4,"1873":1,"1874":2,"1876":1,"1878":3,"1880":1,"1884":1,"1885":4,"1893":1,"1894":2,"1895":1,"1897":2,"1898":1,"1899":4,"1900":3,"1912":1,"1918":1,"1921":1,"1929":1,"1933":1,"1934":3,"1936":1,"1938":2,"1946":3,"1948":1,"1949":4,"1950":2,"1951":1,"2031":1,"2032":2,"2040":1,"2042":1,"2051":1,"2062":1,"2063":1,"2064":1,"2069":1,"2071":1,"2072":1,"2075":1,"2105":1,"2107":1,"2114":1,"2116":1,"2117":1,"2118":3,"2119":1,"2120":1,"2123":1,"2125":5,"2126":1,"2128":3,"2129":1,"2130":1,"2131":8,"2132":1,"2133":2,"2134":1,"2140":1,"2142":1,"2143":3,"2144":1,"2146":1,"2147":3,"2148":1,"2149":1,"2150":3,"2152":1,"2153":1,"2155":1,"2160":2,"2161":5,"2162":6,"2169":12,"2170":1,"2171":5,"2172":1,"2181":1,"2183":1,"2226":1,"2228":2,"2229":1,"2230":3,"2231":1,"2235":1,"2238":1,"2240":2,"2250":2,"2252":2,"2254":1,"2255":3,"2256":1,"2258":1,"2259":3,"2260":1,"2262":9,"2263":3,"2264":1,"2267":1,"2268":1,"2269":1,"2270":1,"2272":2,"2273":6,"2274":1,"2275":3,"2276":3,"2279":4,"2280":1,"2282":2,"2284":1,"2292":2,"2297":1,"2299":2,"2300":1,"2302":5,"2304":1,"2305":4,"2306":4,"2307":1,"2308":1,"2309":2,"2311":13,"2316":1,"2319":3,"2327":1,"2329":1,"2330":1,"2332":1,"2333":1,"2334":1,"2341":1,"2343":1,"2346":2,"2347":1,"2348":1,"2353":2,"2354":2,"2363":1,"2397":1,"2403":1,"2404":1,"2406":1,"2407":1,"2408":2,"2410":1,"2411":1,"2416":1,"2417":4,"2418":1,"2420":1,"2421":1,"2422":2,"2423":6,"2424":2,"2425":1,"2427":3,"2429":4,"2430":1,"2431":1,"2436":1,"2437":2,"2439":1,"2441":1,"2449":1,"2450":1,"2454":3,"2455":1,"2457":4,"2460":1,"2463":1,"2464":1,"2466":1,"2468":3,"2469":3,"2470":1,"2473":2,"2474":9,"2475":2,"2476":1,"2477":2,"2479":4,"2480":9,"2490":2,"2491":1,"2492":2,"2496":1,"2497":1,"2498":1,"2503":1,"2504":1,"2506":2,"2507":1,"2508":1,"2509":2,"2510":3,"2511":1,"2512":1,"2513":2,"2515":2,"2518":1,"2523":1,"2524":2,"2525":1,"2526":2,"2529":1,"2533":1,"2534":2,"2540":1,"2541":1,"2544":1,"2545":1,"2546":1,"2548":4,"2549":1,"2550":1,"2555":2,"2556":2,"2559":2,"2560":1,"2564":1,"2565":1,"2566":6,"2567":5,"2569":6,"2570":1,"2574":6,"2575":1,"2576":2,"2577":5,"2578":1,"2585":1,"2587":1,"2592":1,"2596":1,"2600":1,"2601":3,"2602":1,"2603":1,"2605":2,"2607":3,"2608":2,"2611":1,"2614":4,"2615":3,"2616":1,"2617":1,"2623":1,"2625":1,"2627":2,"2628":1,"2630":1,"2634":1,"2635":1,"2637":2,"2640":1,"2641":1,"2642":1,"2645":1,"2647":1,"2648":1,"2649":1,"2650":1,"2651":2,"2652":1,"2653":2,"2654":1,"2660":2,"2663":1,"2664":1,"2665":1,"2667":1,"2672":1,"2686":1,"2702":4,"2703":4,"2704":1,"2705":2,"2706":1,"2708":1,"2711":3,"2718":2,"2719":2,"2723":1,"2724":1,"2726":1,"2727":1,"2728":13,"2729":2,"2730":1,"2734":1,"2735":2,"2736":1,"2737":2,"2738":4,"2740":3,"2742":1,"2743":3,"2745":4,"2746":4,"2748":2,"2749":1,"2751":1,"2752":3,"2753":9,"2754":1,"2756":5,"2757":3}}],["theory",{"2":{"2516":1}}],["theories",{"2":{"2148":1}}],["thekey",{"2":{"207":4,"211":1}}],["thermal",{"2":{"191":1}}],["theres",{"2":{"2131":1}}],["thereafter",{"2":{"1804":1}}],["thereby",{"2":{"69":1}}],["therefore",{"2":{"28":1,"380":1,"635":2,"698":2,"1122":1,"1125":1,"1128":1,"1134":1,"1573":1,"1821":1,"1827":1,"1908":1,"2237":1,"2752":1}}],["there",{"0":{"546":1,"1265":1,"1412":1,"2741":1},"2":{"28":1,"99":1,"123":1,"131":1,"152":1,"154":1,"163":1,"166":1,"175":1,"189":1,"198":1,"201":1,"213":1,"224":1,"233":1,"238":1,"268":1,"276":1,"286":1,"291":1,"306":1,"315":1,"337":1,"341":1,"349":1,"353":1,"360":1,"414":1,"428":1,"432":1,"435":1,"449":1,"454":1,"485":1,"493":1,"496":1,"505":1,"509":1,"522":1,"525":1,"534":1,"537":1,"538":1,"548":1,"560":3,"574":1,"592":1,"598":1,"601":1,"609":1,"625":1,"630":1,"654":1,"655":1,"659":1,"684":1,"685":3,"687":1,"690":1,"734":1,"760":1,"790":1,"824":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1135":1,"1148":1,"1234":1,"1258":3,"1259":3,"1268":1,"1272":1,"1273":1,"1287":2,"1300":2,"1319":1,"1325":2,"1331":2,"1341":2,"1357":1,"1361":1,"1364":1,"1375":1,"1394":1,"1397":1,"1398":1,"1400":1,"1411":2,"1415":1,"1416":2,"1423":2,"1430":1,"1431":1,"1435":2,"1437":1,"1442":1,"1451":1,"1499":1,"1518":1,"1521":1,"1525":1,"1526":1,"1528":1,"1533":1,"1554":2,"1556":1,"1563":1,"1568":1,"1573":1,"1577":1,"1676":1,"1714":1,"1733":1,"1787":1,"1791":1,"1805":2,"1812":1,"1820":1,"1822":1,"1832":1,"1853":1,"1854":1,"1857":1,"1871":1,"1873":1,"1888":1,"1893":1,"1900":1,"1902":1,"1908":1,"1943":1,"1957":1,"2032":1,"2036":1,"2051":1,"2063":1,"2064":1,"2073":1,"2114":1,"2123":1,"2125":1,"2128":1,"2129":1,"2131":1,"2133":1,"2137":1,"2143":1,"2147":1,"2152":1,"2161":1,"2162":1,"2168":1,"2169":1,"2177":2,"2178":1,"2228":1,"2229":1,"2252":1,"2255":1,"2261":1,"2263":1,"2267":1,"2269":1,"2270":1,"2272":1,"2273":1,"2276":1,"2278":1,"2280":1,"2284":1,"2295":1,"2326":1,"2327":1,"2344":1,"2404":1,"2417":2,"2418":2,"2419":1,"2423":1,"2424":1,"2439":1,"2441":1,"2452":1,"2455":1,"2457":2,"2491":5,"2496":1,"2498":1,"2501":1,"2507":1,"2508":2,"2510":1,"2515":1,"2522":1,"2549":1,"2555":1,"2560":1,"2563":1,"2564":1,"2567":1,"2568":1,"2573":1,"2576":1,"2577":1,"2600":1,"2601":1,"2602":2,"2605":1,"2607":1,"2608":1,"2614":1,"2701":1,"2702":2,"2703":1,"2705":1,"2706":1,"2709":3,"2711":1,"2712":1,"2713":1,"2714":3,"2719":1,"2741":1,"2745":1,"2750":3,"2752":1,"2753":2,"2755":1,"2756":1}}],["thedogkeyboard",{"2":{"143":2,"211":1}}],["they",{"2":{"124":1,"125":2,"185":2,"188":1,"196":1,"198":1,"203":1,"243":1,"265":1,"273":2,"276":1,"304":1,"308":2,"334":1,"352":1,"367":1,"413":1,"416":1,"424":1,"430":1,"432":1,"435":1,"446":1,"453":1,"455":1,"466":1,"516":1,"519":1,"529":1,"538":1,"559":1,"574":1,"581":1,"602":1,"633":1,"642":1,"660":1,"698":1,"1177":1,"1273":1,"1300":2,"1304":1,"1332":1,"1340":1,"1361":2,"1427":1,"1445":2,"1446":4,"1455":1,"1491":1,"1503":1,"1517":1,"1518":1,"1522":1,"1553":2,"1554":1,"1557":1,"1676":1,"1677":1,"1725":2,"1832":2,"1870":1,"1885":1,"1892":1,"1912":2,"1920":1,"1936":1,"1946":2,"1948":1,"2034":1,"2044":1,"2114":1,"2118":1,"2131":1,"2152":2,"2160":2,"2162":2,"2169":1,"2172":1,"2183":1,"2242":1,"2258":1,"2274":2,"2279":1,"2282":1,"2299":1,"2303":1,"2305":4,"2311":1,"2344":1,"2347":1,"2397":1,"2405":1,"2409":1,"2414":1,"2427":1,"2441":2,"2445":1,"2516":1,"2519":2,"2530":1,"2550":1,"2556":1,"2564":2,"2566":4,"2567":2,"2571":1,"2576":4,"2577":2,"2603":1,"2614":1,"2616":1,"2620":1,"2702":2,"2711":1,"2726":1,"2728":1,"2738":1,"2745":1,"2754":1}}],["the60",{"2":{"102":3}}],["then",{"0":{"2167":1},"2":{"49":1,"70":1,"120":2,"152":1,"235":1,"291":1,"304":1,"321":1,"331":1,"352":1,"354":1,"366":1,"432":1,"500":1,"505":1,"506":1,"510":1,"527":1,"534":1,"540":2,"541":1,"559":1,"588":1,"597":1,"601":1,"607":1,"613":1,"628":1,"631":1,"641":1,"643":1,"660":1,"684":1,"698":1,"700":1,"703":1,"1175":1,"1177":2,"1196":1,"1213":1,"1225":1,"1241":1,"1254":1,"1258":1,"1260":2,"1261":1,"1270":1,"1287":1,"1299":2,"1300":1,"1325":1,"1326":1,"1331":1,"1332":2,"1335":1,"1359":1,"1361":2,"1368":1,"1370":1,"1375":1,"1377":1,"1383":2,"1384":2,"1385":1,"1395":1,"1398":1,"1405":2,"1411":5,"1412":1,"1413":1,"1416":2,"1438":1,"1440":1,"1452":2,"1500":3,"1504":1,"1508":1,"1520":1,"1527":2,"1529":1,"1534":1,"1548":1,"1553":1,"1558":1,"1559":1,"1570":2,"1573":3,"1630":1,"1631":1,"1634":1,"1657":1,"1670":1,"1673":2,"1674":3,"1675":3,"1676":1,"1679":1,"1728":9,"1733":1,"1807":1,"1813":1,"1826":1,"1830":2,"1854":1,"1857":1,"1872":1,"1878":1,"1885":2,"1886":1,"1922":1,"1923":2,"1929":1,"1930":1,"1937":1,"1940":1,"1949":15,"1950":1,"1957":1,"1959":1,"2032":1,"2063":1,"2075":1,"2079":2,"2107":1,"2121":1,"2122":1,"2124":1,"2125":1,"2130":2,"2131":1,"2137":1,"2152":2,"2161":2,"2162":3,"2164":1,"2167":1,"2169":2,"2171":3,"2181":2,"2182":2,"2183":3,"2196":4,"2232":1,"2234":1,"2239":1,"2240":1,"2241":1,"2242":1,"2255":1,"2261":2,"2262":2,"2263":1,"2272":2,"2277":1,"2302":1,"2305":1,"2311":1,"2319":1,"2328":1,"2349":1,"2353":1,"2406":1,"2454":1,"2458":1,"2472":1,"2473":1,"2474":4,"2475":1,"2477":1,"2479":1,"2480":2,"2481":1,"2490":2,"2502":1,"2508":3,"2513":1,"2519":1,"2543":1,"2566":2,"2576":10,"2577":3,"2603":2,"2610":2,"2611":1,"2620":1,"2654":1,"2702":1,"2709":1,"2727":1,"2728":2,"2729":2,"2735":3,"2736":2,"2737":2,"2738":1,"2740":1,"2743":1,"2750":1,"2753":1,"2757":3}}],["themself",{"2":{"352":1}}],["themselves",{"2":{"233":1,"352":1,"529":1,"1525":1,"1527":1,"2441":1,"2542":1,"2614":1}}],["theme",{"2":{"233":1}}],["them",{"2":{"2":1,"154":1,"164":1,"186":1,"202":1,"204":1,"221":1,"234":2,"272":1,"273":1,"304":1,"334":1,"376":2,"453":2,"455":2,"469":1,"471":1,"479":1,"502":1,"527":1,"537":1,"546":1,"549":1,"554":1,"570":2,"617":1,"621":1,"661":1,"1176":1,"1291":1,"1299":1,"1320":1,"1326":1,"1338":1,"1339":1,"1340":1,"1341":1,"1361":1,"1370":1,"1375":1,"1376":1,"1383":1,"1384":1,"1385":1,"1398":1,"1416":1,"1454":1,"1469":1,"1500":1,"1503":1,"1512":1,"1518":1,"1519":1,"1553":1,"1568":1,"1722":1,"1791":2,"1803":1,"1832":1,"1863":1,"1890":1,"1912":1,"1921":1,"1935":1,"1943":1,"2031":2,"2042":2,"2106":2,"2107":1,"2114":1,"2118":1,"2150":1,"2167":1,"2171":1,"2177":1,"2182":1,"2229":3,"2255":1,"2263":2,"2271":1,"2272":1,"2273":1,"2274":1,"2280":1,"2292":1,"2303":2,"2305":1,"2306":1,"2307":1,"2308":1,"2328":1,"2343":1,"2348":1,"2396":1,"2405":1,"2410":1,"2411":1,"2419":1,"2424":1,"2427":2,"2438":1,"2440":1,"2447":1,"2450":2,"2464":1,"2466":1,"2467":1,"2472":1,"2474":3,"2477":1,"2480":2,"2509":1,"2515":1,"2530":2,"2541":1,"2567":1,"2577":1,"2620":1,"2702":1,"2706":1,"2708":1,"2710":1,"2719":1,"2726":1,"2735":1,"2741":1,"2750":1,"2753":1,"2757":1}}],["the",{"0":{"23":1,"42":1,"56":1,"315":1,"323":1,"324":1,"325":1,"334":1,"335":1,"336":1,"339":1,"349":1,"350":1,"440":1,"501":1,"512":1,"547":1,"558":1,"562":1,"571":1,"609":1,"1132":1,"1133":1,"1134":1,"1227":1,"1259":1,"1268":1,"1272":1,"1551":3,"1552":2,"1677":1,"1678":1,"1886":1,"1892":1,"1903":1,"1921":1,"1922":1,"2059":2,"2102":1,"2109":1,"2149":1,"2152":1,"2261":1,"2267":1,"2268":1,"2270":1,"2273":1,"2274":1,"2275":1,"2276":1,"2278":1,"2315":1,"2316":1,"2317":1,"2318":1,"2347":1,"2348":1,"2417":1,"2424":1,"2446":1,"2452":1,"2454":1,"2476":1,"2499":1,"2501":1,"2584":1,"2607":1,"2608":1,"2610":1,"2614":1,"2615":1,"2616":1,"2670":1,"2701":1,"2740":2,"2744":1,"2754":1,"2755":1},"1":{"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"340":1,"502":1,"503":1,"504":1,"505":1,"506":1,"507":1,"508":1,"509":1,"510":1,"511":1,"513":1,"514":1,"515":1,"516":1,"572":1,"573":1,"1679":1,"1680":1,"1681":1,"1682":1,"1683":1,"1684":1,"1685":1,"1686":1,"1687":1,"1688":1,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1695":1,"1696":1,"1697":1,"1698":1,"1699":1,"1700":1,"1701":1,"1702":1,"1703":1,"1704":1,"1705":1,"1706":1,"1707":1,"1708":1,"1709":1,"1710":1,"1711":1,"1712":1,"1713":1,"2103":1,"2104":1,"2105":1,"2106":1,"2107":1,"2269":1,"2271":1,"2272":1,"2273":1,"2274":1,"2276":1,"2348":1,"2418":1,"2419":1,"2702":1,"2703":1,"2704":1,"2705":1,"2706":1,"2707":1,"2708":1,"2745":1,"2746":1,"2747":1,"2748":1,"2749":1},"2":{"0":1,"1":1,"2":1,"3":2,"4":2,"5":3,"6":3,"7":3,"8":1,"10":3,"11":1,"12":1,"13":3,"14":5,"15":2,"16":3,"18":1,"19":1,"21":4,"22":3,"23":2,"24":2,"25":4,"27":2,"28":5,"30":4,"31":13,"32":1,"33":3,"34":12,"35":1,"36":7,"37":1,"43":3,"45":7,"46":2,"49":24,"50":18,"51":1,"55":5,"56":3,"58":1,"60":1,"62":3,"65":3,"67":4,"69":2,"70":17,"73":3,"74":3,"76":1,"83":3,"86":5,"87":4,"88":2,"90":4,"92":1,"93":2,"94":2,"99":4,"100":1,"102":1,"103":6,"104":2,"105":3,"107":4,"110":1,"112":1,"113":3,"114":13,"116":3,"118":5,"119":8,"120":3,"122":1,"123":3,"124":8,"125":8,"126":5,"127":2,"128":2,"130":1,"131":4,"132":2,"134":5,"137":1,"138":1,"140":1,"142":1,"143":3,"146":1,"149":10,"152":5,"153":4,"154":1,"156":6,"157":6,"158":4,"159":1,"160":6,"163":6,"164":4,"166":4,"167":2,"168":1,"169":3,"172":2,"173":4,"174":5,"175":6,"176":12,"181":1,"182":13,"184":3,"185":9,"186":2,"187":1,"188":1,"189":4,"191":10,"194":23,"195":6,"196":6,"197":2,"198":3,"199":7,"201":8,"202":7,"203":6,"204":3,"206":5,"209":5,"210":3,"211":11,"213":6,"215":1,"218":3,"219":1,"220":2,"221":2,"222":9,"224":3,"228":6,"229":2,"230":4,"231":1,"232":4,"233":5,"234":5,"235":3,"236":3,"238":1,"240":9,"243":4,"244":1,"245":4,"246":3,"247":1,"248":3,"249":4,"251":5,"254":6,"255":16,"256":3,"257":1,"258":1,"259":4,"262":6,"263":7,"264":1,"265":14,"266":4,"268":3,"271":6,"272":4,"273":7,"274":1,"275":4,"276":4,"277":2,"278":2,"279":1,"282":16,"284":1,"286":1,"291":4,"292":1,"294":1,"302":1,"303":2,"304":6,"305":7,"306":1,"307":5,"308":3,"309":1,"310":1,"311":1,"312":3,"313":3,"314":3,"315":8,"316":6,"317":8,"318":2,"319":1,"320":2,"321":2,"322":2,"323":3,"324":4,"325":2,"327":2,"330":3,"331":24,"332":2,"334":11,"335":10,"336":6,"337":4,"339":1,"341":20,"342":1,"346":3,"347":4,"349":8,"350":13,"351":1,"352":6,"353":1,"354":4,"355":2,"356":1,"357":2,"360":3,"361":5,"363":2,"364":3,"365":1,"366":1,"367":3,"370":7,"371":9,"372":2,"373":2,"374":11,"375":1,"377":2,"378":3,"380":1,"382":1,"383":1,"384":2,"385":2,"387":2,"388":2,"389":2,"390":2,"391":1,"393":3,"394":3,"395":1,"396":3,"399":1,"400":1,"401":4,"402":1,"403":5,"404":2,"405":2,"407":1,"408":2,"409":2,"410":2,"411":3,"413":2,"414":1,"415":1,"416":4,"417":2,"418":1,"423":1,"425":3,"426":5,"428":5,"429":1,"430":23,"431":3,"432":3,"433":7,"434":2,"435":14,"436":6,"437":5,"438":1,"439":1,"440":3,"441":2,"442":1,"445":1,"446":1,"448":2,"450":2,"451":3,"452":3,"453":32,"454":7,"455":2,"457":4,"458":1,"462":9,"463":1,"464":1,"465":2,"466":2,"467":1,"468":2,"470":3,"471":1,"472":1,"474":1,"476":1,"479":1,"480":1,"481":3,"482":1,"483":6,"484":1,"485":3,"487":2,"492":2,"493":3,"495":2,"496":9,"497":2,"498":1,"499":1,"500":1,"501":3,"502":31,"503":1,"504":4,"505":25,"506":14,"508":1,"509":17,"510":11,"511":35,"512":2,"513":11,"514":1,"515":17,"516":9,"517":4,"519":3,"520":4,"521":5,"522":11,"523":1,"524":1,"525":2,"526":2,"527":5,"529":19,"530":13,"532":2,"533":5,"534":9,"535":2,"536":1,"537":6,"538":3,"539":1,"540":6,"541":5,"542":3,"545":3,"546":2,"548":1,"550":3,"551":1,"552":1,"554":30,"556":13,"557":6,"558":2,"559":8,"560":11,"561":1,"562":4,"563":3,"564":1,"565":2,"566":8,"568":7,"569":3,"570":2,"571":7,"572":2,"573":3,"574":8,"575":3,"576":2,"578":3,"580":13,"581":2,"582":3,"584":2,"586":2,"587":5,"588":6,"589":2,"592":15,"596":1,"597":18,"598":18,"599":3,"600":2,"601":3,"602":1,"606":4,"607":5,"609":1,"610":5,"611":1,"612":1,"613":1,"614":5,"616":3,"617":2,"621":1,"622":1,"623":8,"624":11,"625":10,"626":27,"627":13,"628":18,"629":7,"630":2,"631":2,"633":2,"635":14,"636":5,"638":8,"639":12,"641":12,"642":1,"643":6,"644":11,"646":1,"647":2,"648":5,"649":1,"650":3,"651":2,"652":1,"653":1,"654":7,"655":1,"656":5,"657":8,"658":5,"659":9,"660":11,"661":15,"662":6,"663":2,"665":4,"666":11,"667":3,"668":2,"669":4,"671":1,"672":8,"673":1,"674":3,"675":2,"676":6,"677":1,"678":3,"679":2,"680":5,"681":10,"683":3,"684":22,"685":10,"686":3,"687":5,"688":7,"689":29,"690":17,"691":13,"692":7,"693":4,"694":18,"696":3,"697":4,"698":11,"699":1,"700":4,"701":11,"702":6,"703":15,"704":1,"705":1,"707":3,"708":1,"709":7,"710":1,"711":1,"712":7,"713":1,"714":1,"715":8,"716":1,"717":1,"718":8,"719":1,"720":1,"721":7,"722":1,"723":1,"724":7,"725":1,"726":2,"727":5,"728":1,"730":4,"731":5,"732":1,"733":2,"734":7,"736":1,"737":8,"738":1,"739":2,"740":2,"741":2,"742":6,"743":1,"744":3,"745":2,"746":4,"747":1,"748":1,"749":2,"750":6,"751":2,"752":4,"753":2,"754":2,"756":4,"757":9,"758":5,"759":2,"760":7,"762":1,"763":10,"764":1,"765":1,"766":2,"767":3,"768":2,"769":6,"770":1,"771":3,"772":2,"773":4,"774":1,"775":1,"776":2,"777":6,"778":2,"779":4,"780":2,"781":1,"782":2,"783":1,"785":4,"786":9,"787":5,"788":3,"789":2,"790":10,"792":1,"793":10,"794":1,"795":1,"796":2,"797":3,"798":2,"799":2,"800":2,"801":6,"802":1,"803":3,"804":2,"805":4,"806":1,"807":1,"808":2,"809":6,"810":2,"811":4,"812":2,"813":1,"814":2,"815":1,"817":4,"818":14,"819":5,"820":2,"821":6,"822":4,"823":2,"824":10,"826":1,"827":10,"828":1,"829":1,"830":2,"831":3,"832":2,"833":6,"834":1,"835":3,"836":2,"837":4,"838":1,"839":1,"840":2,"841":9,"842":2,"843":5,"844":2,"845":1,"846":2,"847":1,"849":4,"850":18,"851":5,"852":5,"853":2,"854":6,"855":5,"856":2,"857":10,"859":1,"860":10,"861":1,"862":1,"863":2,"864":3,"865":2,"866":2,"867":2,"868":6,"869":1,"870":3,"871":2,"872":4,"873":1,"874":1,"875":2,"876":6,"877":2,"878":4,"879":2,"880":1,"881":2,"882":1,"884":4,"885":14,"886":5,"887":2,"888":6,"889":5,"890":2,"891":10,"893":1,"894":10,"895":1,"896":1,"897":2,"898":3,"899":2,"900":2,"901":2,"902":6,"903":1,"904":3,"905":2,"906":4,"907":1,"908":1,"909":2,"910":6,"911":2,"912":4,"913":2,"914":1,"915":2,"916":1,"918":4,"919":14,"920":5,"921":2,"922":6,"923":5,"924":2,"925":10,"927":1,"928":10,"929":1,"930":1,"931":2,"932":3,"933":2,"934":2,"935":2,"936":6,"937":1,"938":3,"939":2,"940":4,"941":1,"942":1,"943":2,"944":6,"945":2,"946":4,"947":2,"948":1,"949":2,"950":1,"952":4,"953":16,"954":5,"955":2,"956":6,"957":5,"958":2,"959":10,"961":1,"962":10,"963":1,"964":1,"965":2,"966":3,"967":2,"968":2,"969":2,"970":6,"971":1,"972":3,"973":2,"974":4,"975":1,"976":1,"977":2,"978":6,"979":2,"980":4,"981":2,"982":1,"983":2,"984":1,"986":4,"987":16,"988":5,"989":2,"990":6,"991":5,"992":2,"993":10,"995":1,"996":10,"997":1,"998":1,"999":2,"1000":3,"1001":2,"1002":2,"1003":2,"1004":6,"1005":1,"1006":3,"1007":2,"1008":4,"1009":1,"1010":1,"1011":2,"1012":9,"1013":2,"1014":5,"1015":2,"1016":1,"1017":2,"1018":1,"1020":4,"1021":18,"1022":5,"1023":5,"1024":6,"1025":5,"1026":2,"1027":10,"1029":1,"1030":10,"1031":1,"1032":1,"1033":2,"1034":3,"1035":2,"1036":2,"1037":2,"1038":6,"1039":1,"1040":3,"1041":2,"1042":4,"1043":1,"1044":1,"1045":2,"1046":9,"1047":2,"1048":5,"1049":2,"1050":1,"1051":2,"1052":1,"1054":4,"1055":18,"1056":5,"1057":5,"1058":6,"1059":5,"1060":2,"1061":10,"1063":1,"1064":10,"1065":1,"1066":1,"1067":2,"1068":3,"1069":2,"1070":2,"1071":2,"1072":6,"1073":1,"1074":3,"1075":2,"1076":4,"1077":1,"1078":1,"1079":2,"1080":9,"1081":2,"1082":5,"1083":2,"1084":1,"1085":2,"1086":1,"1088":4,"1089":16,"1090":5,"1091":2,"1092":6,"1093":5,"1094":2,"1095":10,"1097":1,"1098":10,"1099":1,"1100":2,"1101":2,"1102":3,"1103":2,"1104":2,"1105":2,"1106":6,"1107":1,"1108":3,"1109":2,"1110":4,"1111":1,"1112":1,"1113":2,"1114":9,"1115":2,"1116":5,"1117":2,"1118":1,"1119":2,"1120":1,"1121":4,"1122":5,"1123":3,"1124":5,"1125":1,"1126":8,"1127":10,"1128":3,"1129":23,"1130":10,"1132":11,"1133":13,"1134":13,"1136":4,"1137":1,"1138":4,"1142":3,"1144":4,"1145":9,"1146":5,"1147":2,"1148":10,"1150":1,"1151":10,"1152":1,"1153":1,"1154":2,"1155":3,"1156":2,"1157":2,"1158":2,"1159":6,"1160":1,"1161":3,"1162":2,"1163":4,"1164":1,"1165":1,"1166":2,"1167":6,"1168":2,"1169":4,"1170":2,"1171":1,"1172":2,"1173":1,"1174":1,"1175":4,"1176":4,"1177":14,"1179":2,"1181":11,"1182":2,"1183":1,"1184":1,"1185":1,"1186":1,"1187":3,"1188":1,"1189":3,"1190":1,"1191":1,"1192":3,"1193":1,"1194":3,"1195":2,"1196":4,"1197":3,"1198":12,"1200":2,"1201":2,"1203":1,"1205":3,"1207":3,"1209":3,"1210":1,"1211":1,"1212":4,"1213":6,"1214":13,"1215":7,"1216":8,"1217":7,"1219":4,"1220":6,"1221":6,"1222":2,"1223":6,"1224":3,"1225":15,"1226":10,"1227":5,"1228":2,"1229":3,"1230":12,"1232":1,"1233":3,"1234":3,"1235":4,"1236":5,"1237":1,"1238":3,"1239":3,"1241":7,"1242":1,"1243":3,"1245":5,"1248":1,"1250":1,"1252":2,"1253":3,"1254":4,"1257":1,"1258":2,"1259":1,"1260":3,"1261":1,"1263":1,"1265":5,"1268":2,"1270":15,"1271":3,"1272":3,"1273":4,"1274":4,"1275":1,"1277":1,"1278":8,"1281":1,"1282":1,"1283":1,"1284":9,"1286":1,"1287":14,"1288":1,"1289":1,"1292":1,"1294":8,"1298":1,"1299":4,"1300":24,"1301":2,"1302":7,"1303":23,"1304":1,"1310":1,"1311":1,"1312":6,"1313":1,"1314":2,"1315":1,"1316":4,"1317":1,"1319":2,"1320":3,"1321":1,"1322":1,"1323":1,"1324":1,"1325":10,"1326":17,"1328":1,"1329":9,"1330":2,"1331":9,"1332":39,"1333":5,"1334":3,"1335":16,"1336":13,"1337":1,"1338":6,"1339":2,"1340":10,"1341":18,"1342":1,"1343":4,"1344":9,"1345":4,"1346":13,"1347":8,"1348":1,"1349":1,"1351":3,"1352":3,"1354":1,"1355":3,"1357":3,"1359":19,"1360":7,"1361":8,"1363":1,"1364":3,"1365":1,"1366":2,"1367":3,"1368":4,"1369":1,"1370":2,"1373":1,"1375":6,"1376":8,"1377":10,"1378":8,"1379":7,"1380":9,"1383":10,"1384":7,"1385":20,"1387":3,"1388":5,"1389":1,"1390":5,"1391":2,"1392":1,"1393":5,"1394":4,"1395":4,"1396":4,"1397":6,"1398":13,"1399":12,"1400":5,"1401":5,"1402":3,"1403":9,"1404":1,"1405":16,"1406":18,"1408":5,"1410":3,"1411":11,"1412":6,"1413":1,"1414":2,"1415":2,"1416":12,"1417":1,"1418":1,"1422":1,"1423":3,"1427":1,"1430":10,"1431":9,"1432":1,"1434":6,"1435":9,"1436":3,"1438":11,"1439":2,"1440":13,"1441":4,"1442":7,"1443":4,"1445":4,"1446":6,"1447":10,"1448":8,"1450":4,"1451":42,"1452":14,"1453":1,"1454":6,"1455":1,"1456":5,"1457":16,"1458":9,"1459":11,"1461":3,"1462":4,"1463":2,"1464":4,"1466":4,"1467":7,"1469":9,"1470":5,"1471":11,"1473":1,"1474":1,"1475":1,"1477":1,"1478":1,"1479":1,"1480":1,"1481":1,"1482":1,"1483":1,"1484":1,"1488":1,"1491":2,"1492":11,"1493":2,"1495":11,"1496":9,"1497":5,"1498":3,"1499":12,"1500":7,"1501":4,"1503":3,"1504":2,"1506":7,"1507":1,"1508":5,"1509":2,"1510":2,"1511":4,"1512":3,"1514":4,"1515":10,"1516":5,"1517":3,"1518":22,"1519":3,"1520":6,"1521":5,"1522":3,"1523":5,"1524":5,"1525":17,"1526":9,"1527":14,"1528":2,"1529":6,"1530":27,"1531":3,"1532":1,"1533":11,"1534":8,"1536":2,"1537":13,"1538":2,"1539":2,"1540":2,"1541":2,"1542":2,"1543":2,"1544":2,"1545":3,"1546":4,"1547":6,"1548":2,"1549":1,"1551":5,"1552":3,"1553":19,"1554":17,"1555":6,"1556":2,"1557":3,"1558":11,"1559":8,"1560":7,"1561":4,"1562":4,"1563":1,"1564":4,"1565":1,"1567":2,"1570":7,"1573":41,"1574":2,"1575":1,"1576":2,"1577":8,"1578":1,"1579":3,"1580":1,"1581":3,"1582":6,"1583":2,"1584":2,"1585":2,"1586":2,"1587":2,"1590":1,"1591":13,"1593":1,"1594":6,"1596":2,"1597":2,"1598":1,"1599":2,"1600":2,"1601":2,"1602":1,"1603":3,"1604":2,"1605":9,"1606":1,"1607":1,"1608":1,"1609":1,"1610":1,"1612":8,"1614":8,"1615":1,"1616":1,"1617":1,"1618":3,"1619":1,"1620":3,"1621":5,"1622":6,"1623":1,"1624":4,"1625":1,"1626":1,"1627":1,"1628":3,"1629":1,"1630":1,"1631":1,"1632":2,"1633":5,"1634":3,"1635":4,"1636":2,"1637":16,"1638":1,"1641":2,"1642":4,"1644":5,"1645":2,"1646":2,"1647":2,"1648":2,"1649":2,"1650":2,"1651":1,"1652":1,"1653":2,"1654":3,"1655":5,"1657":2,"1658":2,"1660":1,"1663":1,"1665":4,"1666":2,"1668":4,"1670":27,"1671":10,"1672":1,"1673":17,"1674":12,"1675":13,"1676":3,"1677":9,"1678":1,"1679":2,"1680":7,"1682":4,"1683":3,"1684":17,"1685":5,"1686":3,"1687":1,"1689":1,"1690":1,"1691":2,"1692":1,"1693":1,"1694":4,"1695":1,"1696":2,"1697":3,"1698":1,"1699":2,"1700":1,"1701":1,"1702":2,"1703":2,"1704":1,"1705":2,"1706":3,"1707":1,"1708":2,"1709":4,"1710":1,"1711":2,"1712":5,"1713":1,"1714":6,"1715":15,"1716":6,"1717":6,"1719":6,"1720":4,"1721":2,"1722":5,"1723":3,"1724":5,"1725":34,"1726":3,"1727":4,"1728":5,"1729":10,"1730":8,"1731":2,"1733":4,"1741":1,"1743":3,"1744":2,"1745":3,"1746":1,"1747":1,"1748":1,"1749":1,"1750":1,"1751":1,"1752":1,"1753":1,"1754":1,"1755":1,"1756":2,"1757":1,"1758":1,"1759":1,"1760":1,"1761":1,"1762":1,"1763":1,"1764":1,"1765":1,"1766":1,"1767":1,"1768":1,"1769":1,"1770":1,"1771":1,"1772":1,"1773":1,"1774":1,"1775":1,"1776":1,"1778":1,"1779":1,"1780":1,"1781":4,"1783":1,"1784":4,"1785":1,"1787":2,"1789":1,"1790":1,"1791":4,"1794":3,"1798":1,"1800":1,"1801":1,"1802":10,"1803":12,"1804":23,"1805":13,"1806":7,"1807":11,"1808":4,"1812":2,"1813":5,"1814":5,"1815":18,"1816":3,"1817":17,"1818":2,"1819":14,"1820":28,"1821":18,"1822":84,"1824":2,"1825":3,"1826":4,"1827":5,"1828":6,"1829":2,"1830":1,"1832":6,"1833":1,"1836":1,"1837":1,"1838":2,"1839":1,"1840":2,"1841":2,"1842":2,"1843":2,"1844":2,"1845":1,"1846":2,"1847":1,"1848":2,"1849":1,"1850":1,"1851":1,"1853":4,"1854":1,"1855":12,"1856":11,"1857":14,"1858":3,"1859":8,"1862":4,"1863":25,"1864":8,"1865":2,"1866":4,"1867":9,"1868":12,"1869":12,"1870":26,"1871":4,"1872":13,"1873":12,"1874":12,"1875":11,"1876":23,"1878":4,"1879":7,"1880":15,"1881":3,"1882":2,"1883":2,"1884":3,"1885":16,"1886":2,"1887":4,"1888":1,"1890":1,"1892":3,"1893":1,"1894":19,"1895":1,"1897":8,"1898":4,"1899":4,"1900":7,"1901":3,"1902":3,"1903":3,"1905":1,"1906":3,"1907":1,"1908":9,"1910":9,"1911":4,"1912":13,"1913":1,"1914":2,"1915":6,"1916":2,"1917":3,"1918":5,"1919":1,"1920":7,"1921":23,"1922":6,"1923":15,"1925":1,"1926":3,"1928":3,"1929":10,"1930":2,"1931":2,"1932":10,"1933":17,"1934":4,"1935":7,"1936":1,"1937":5,"1938":3,"1939":3,"1940":8,"1941":5,"1942":5,"1943":1,"1944":3,"1945":5,"1946":34,"1947":4,"1948":14,"1949":9,"1950":17,"1951":3,"1952":10,"1953":4,"1954":11,"1955":2,"1957":5,"1959":6,"1960":1,"1968":1,"1970":3,"1971":4,"1972":3,"1973":3,"1974":1,"1975":1,"1976":1,"1977":1,"1978":1,"1979":1,"1980":1,"1981":1,"1982":1,"1983":2,"1984":1,"1985":1,"1986":1,"1987":1,"1988":1,"1989":1,"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"1995":1,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2001":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2007":1,"2008":1,"2009":1,"2010":1,"2011":1,"2012":1,"2013":3,"2014":1,"2015":3,"2016":1,"2017":1,"2018":1,"2019":1,"2020":1,"2021":1,"2023":1,"2024":1,"2025":1,"2026":4,"2028":1,"2029":4,"2030":1,"2031":12,"2032":20,"2033":10,"2034":7,"2035":23,"2036":3,"2037":1,"2038":21,"2039":1,"2040":9,"2041":1,"2042":15,"2043":4,"2044":12,"2045":1,"2046":1,"2047":3,"2051":18,"2052":15,"2054":14,"2055":6,"2058":4,"2059":10,"2060":8,"2061":4,"2062":6,"2063":4,"2064":3,"2065":1,"2066":2,"2067":5,"2068":1,"2069":1,"2070":2,"2071":5,"2072":7,"2073":1,"2074":6,"2075":10,"2076":1,"2078":2,"2079":3,"2082":1,"2084":3,"2086":1,"2088":3,"2090":1,"2091":1,"2092":1,"2093":1,"2094":1,"2095":1,"2096":1,"2097":1,"2098":1,"2099":1,"2102":3,"2103":4,"2105":3,"2106":20,"2107":13,"2108":2,"2109":2,"2110":3,"2111":6,"2112":12,"2113":26,"2114":6,"2115":1,"2117":1,"2118":9,"2119":4,"2120":9,"2121":2,"2122":13,"2123":1,"2124":7,"2125":13,"2126":24,"2127":8,"2128":18,"2129":45,"2130":11,"2131":31,"2132":1,"2133":15,"2134":4,"2137":5,"2138":3,"2139":18,"2140":3,"2141":19,"2142":10,"2143":69,"2144":3,"2145":7,"2146":5,"2147":23,"2148":8,"2149":11,"2150":18,"2151":1,"2152":22,"2153":4,"2154":3,"2155":5,"2157":6,"2160":6,"2161":44,"2162":31,"2164":1,"2165":2,"2167":4,"2168":2,"2169":25,"2170":8,"2171":30,"2172":7,"2173":6,"2174":9,"2175":9,"2177":3,"2178":2,"2179":9,"2180":13,"2181":12,"2182":17,"2183":15,"2186":1,"2187":1,"2188":1,"2189":1,"2190":1,"2191":1,"2192":1,"2193":1,"2194":1,"2195":1,"2196":3,"2197":3,"2198":3,"2199":1,"2200":2,"2202":1,"2203":3,"2204":2,"2205":1,"2206":3,"2207":2,"2209":3,"2210":2,"2211":1,"2214":2,"2215":1,"2216":2,"2217":1,"2218":1,"2219":2,"2220":1,"2221":1,"2222":1,"2223":2,"2224":2,"2225":4,"2226":11,"2227":2,"2228":7,"2229":9,"2230":11,"2231":13,"2232":3,"2233":13,"2234":5,"2235":10,"2236":13,"2237":10,"2238":27,"2239":1,"2240":11,"2241":7,"2242":11,"2243":11,"2244":11,"2245":22,"2246":2,"2247":22,"2248":2,"2249":28,"2250":3,"2251":1,"2252":15,"2255":6,"2256":2,"2257":6,"2258":2,"2259":11,"2260":6,"2261":7,"2262":57,"2263":27,"2264":1,"2266":1,"2267":4,"2268":21,"2269":2,"2270":7,"2271":1,"2272":25,"2273":45,"2274":18,"2275":10,"2276":24,"2277":11,"2278":4,"2279":28,"2280":4,"2282":1,"2284":1,"2286":3,"2287":1,"2288":1,"2289":2,"2290":2,"2291":3,"2294":1,"2295":4,"2296":2,"2297":3,"2298":3,"2299":10,"2300":17,"2301":2,"2302":8,"2303":6,"2304":3,"2305":4,"2306":5,"2307":3,"2308":1,"2309":11,"2310":3,"2311":44,"2312":1,"2313":2,"2314":5,"2315":5,"2316":3,"2317":3,"2318":3,"2319":5,"2320":5,"2322":2,"2323":1,"2324":1,"2325":1,"2326":4,"2327":10,"2328":14,"2330":8,"2331":1,"2332":8,"2334":8,"2335":5,"2339":5,"2341":4,"2342":7,"2343":2,"2344":8,"2345":1,"2346":3,"2347":16,"2348":17,"2349":12,"2350":6,"2351":5,"2352":7,"2353":17,"2354":2,"2355":7,"2356":4,"2357":5,"2358":6,"2359":4,"2360":5,"2363":1,"2366":2,"2367":2,"2369":4,"2370":8,"2375":3,"2381":2,"2385":4,"2393":9,"2395":2,"2396":11,"2397":2,"2398":7,"2400":3,"2401":8,"2402":7,"2403":10,"2404":3,"2405":6,"2406":11,"2407":13,"2408":5,"2409":1,"2410":2,"2411":12,"2413":3,"2414":2,"2416":1,"2417":5,"2418":2,"2419":1,"2420":1,"2421":8,"2422":5,"2423":7,"2424":5,"2425":5,"2427":4,"2428":3,"2429":2,"2430":2,"2431":6,"2432":1,"2435":3,"2436":9,"2437":5,"2438":5,"2439":8,"2440":7,"2441":11,"2442":1,"2443":1,"2444":1,"2445":12,"2446":4,"2447":5,"2448":2,"2450":16,"2451":7,"2452":8,"2453":2,"2454":14,"2455":2,"2457":2,"2458":3,"2459":3,"2460":5,"2461":2,"2462":3,"2463":5,"2464":1,"2465":1,"2466":4,"2467":3,"2468":13,"2469":6,"2472":3,"2473":3,"2474":60,"2475":1,"2476":2,"2477":5,"2478":2,"2479":18,"2480":14,"2481":2,"2482":3,"2483":1,"2485":1,"2490":18,"2491":8,"2492":5,"2494":4,"2495":3,"2496":3,"2497":6,"2498":14,"2501":13,"2502":9,"2503":3,"2504":2,"2506":9,"2507":2,"2508":15,"2509":5,"2510":4,"2511":1,"2512":6,"2513":50,"2514":2,"2515":2,"2517":3,"2518":10,"2519":6,"2521":4,"2522":3,"2523":7,"2524":15,"2525":8,"2526":5,"2527":2,"2529":8,"2530":10,"2531":2,"2532":2,"2533":14,"2534":4,"2535":2,"2536":2,"2537":2,"2539":10,"2541":7,"2542":3,"2543":8,"2544":4,"2545":2,"2546":8,"2548":15,"2549":2,"2550":9,"2551":1,"2552":2,"2553":8,"2554":3,"2555":3,"2556":14,"2557":9,"2558":7,"2559":8,"2560":2,"2561":1,"2562":1,"2563":1,"2564":15,"2565":2,"2566":51,"2567":14,"2569":5,"2570":8,"2571":3,"2572":4,"2573":6,"2574":17,"2575":40,"2576":104,"2577":129,"2578":3,"2579":3,"2581":9,"2582":2,"2584":3,"2585":7,"2586":2,"2587":12,"2588":3,"2589":6,"2590":8,"2591":3,"2592":8,"2593":5,"2594":4,"2595":9,"2596":12,"2597":6,"2598":11,"2599":5,"2600":3,"2603":2,"2605":7,"2606":1,"2607":7,"2608":2,"2609":1,"2610":4,"2611":2,"2613":1,"2614":17,"2615":36,"2616":12,"2617":6,"2619":2,"2620":6,"2623":1,"2624":3,"2625":1,"2627":1,"2628":1,"2631":1,"2632":2,"2633":3,"2635":1,"2636":1,"2637":2,"2638":1,"2644":1,"2645":1,"2646":1,"2647":1,"2648":2,"2650":1,"2651":1,"2654":4,"2657":3,"2658":3,"2659":1,"2660":2,"2661":1,"2663":1,"2665":6,"2666":1,"2668":1,"2669":1,"2670":2,"2671":9,"2672":12,"2673":8,"2674":5,"2675":9,"2676":9,"2677":14,"2678":2,"2679":5,"2680":3,"2681":2,"2682":4,"2683":8,"2684":6,"2685":13,"2686":39,"2687":4,"2688":26,"2689":9,"2690":2,"2691":4,"2692":8,"2693":6,"2694":19,"2695":31,"2696":6,"2697":35,"2698":3,"2699":14,"2700":8,"2701":2,"2702":7,"2703":2,"2704":2,"2705":4,"2706":3,"2708":1,"2709":2,"2710":16,"2711":7,"2714":1,"2715":1,"2718":5,"2719":12,"2720":8,"2722":2,"2723":5,"2724":3,"2726":2,"2727":9,"2728":45,"2729":34,"2730":5,"2734":10,"2735":41,"2736":22,"2737":20,"2738":15,"2739":2,"2740":5,"2741":1,"2742":2,"2743":13,"2744":8,"2745":7,"2746":13,"2747":4,"2748":10,"2749":5,"2751":3,"2752":5,"2753":20,"2754":7,"2755":5,"2756":3,"2757":25}}],["theirs",{"2":{"2309":1}}],["their",{"2":{"0":2,"9":2,"19":2,"39":2,"52":2,"58":1,"67":1,"83":1,"86":1,"102":1,"107":1,"114":1,"122":1,"123":1,"124":1,"125":1,"134":1,"143":1,"154":1,"157":1,"159":1,"166":1,"168":1,"172":1,"175":2,"179":1,"181":1,"182":1,"185":1,"197":1,"222":1,"228":2,"233":1,"234":1,"251":1,"263":1,"275":1,"307":1,"310":1,"318":1,"337":2,"349":1,"352":4,"374":1,"375":1,"388":1,"433":1,"435":1,"440":1,"453":1,"484":1,"496":2,"510":1,"519":3,"527":1,"551":1,"556":1,"559":1,"562":1,"587":1,"602":1,"629":1,"654":1,"656":1,"697":1,"734":2,"760":2,"790":2,"824":2,"857":2,"891":2,"925":2,"959":2,"993":2,"1027":2,"1061":2,"1095":2,"1148":2,"1216":1,"1244":1,"1265":2,"1298":1,"1304":1,"1336":1,"1370":1,"1430":1,"1440":2,"1441":1,"1518":1,"1525":1,"1533":1,"1718":1,"1722":1,"1725":2,"1805":1,"1872":1,"1943":1,"1946":2,"2046":1,"2053":2,"2075":1,"2177":1,"2181":1,"2183":1,"2229":1,"2230":2,"2233":1,"2243":1,"2286":2,"2305":4,"2309":2,"2346":1,"2354":1,"2397":1,"2421":1,"2427":1,"2441":1,"2466":1,"2468":2,"2477":1,"2533":1,"2535":1,"2549":1,"2564":3,"2566":2,"2568":1,"2574":2,"2577":1,"2578":1,"2592":1,"2601":1,"2617":1,"2655":1,"2710":1,"2726":1}}],["these",{"2":{"0":1,"7":1,"9":1,"16":1,"19":1,"21":1,"28":1,"37":1,"38":1,"39":1,"52":1,"67":1,"86":1,"120":2,"124":1,"182":1,"188":1,"202":2,"254":1,"268":2,"273":1,"276":1,"317":1,"337":1,"364":1,"367":2,"414":1,"431":1,"432":1,"441":2,"442":1,"453":1,"470":1,"473":1,"479":3,"485":1,"496":1,"503":1,"504":1,"509":1,"515":1,"516":1,"520":1,"522":1,"529":1,"530":1,"551":2,"559":1,"560":1,"571":4,"573":1,"574":1,"580":1,"584":1,"587":3,"606":3,"610":1,"611":1,"612":1,"614":1,"615":1,"633":1,"635":1,"660":1,"661":1,"669":1,"689":1,"790":1,"821":1,"824":1,"854":1,"857":1,"888":1,"891":1,"922":1,"925":1,"956":1,"959":1,"990":1,"993":1,"1024":1,"1027":1,"1058":1,"1061":1,"1092":1,"1095":1,"1124":1,"1127":1,"1129":1,"1130":1,"1132":1,"1133":1,"1138":1,"1148":1,"1212":1,"1245":1,"1265":3,"1267":1,"1268":1,"1273":1,"1281":1,"1299":1,"1300":1,"1320":1,"1331":1,"1332":1,"1335":2,"1338":1,"1341":1,"1351":1,"1353":1,"1354":1,"1361":1,"1370":1,"1383":1,"1385":1,"1392":1,"1398":1,"1402":1,"1406":1,"1423":1,"1427":1,"1430":1,"1435":1,"1437":1,"1446":2,"1454":1,"1469":2,"1471":1,"1495":2,"1496":2,"1509":1,"1513":1,"1515":1,"1518":1,"1530":1,"1533":1,"1553":1,"1568":1,"1573":1,"1574":1,"1578":1,"1589":1,"1655":1,"1658":1,"1673":1,"1680":1,"1715":1,"1716":1,"1725":1,"1728":2,"1733":1,"1794":1,"1817":1,"1820":3,"1821":1,"1832":1,"1862":1,"1871":1,"1876":1,"1880":1,"1884":1,"1910":1,"1921":2,"1929":1,"1932":2,"1946":1,"1948":1,"1949":3,"1953":2,"1957":1,"2031":1,"2032":1,"2034":2,"2035":1,"2037":1,"2040":1,"2041":1,"2042":1,"2044":1,"2058":2,"2072":1,"2075":1,"2107":1,"2111":1,"2118":1,"2125":1,"2128":1,"2129":1,"2130":1,"2146":1,"2149":1,"2152":1,"2153":2,"2169":1,"2172":1,"2174":1,"2175":1,"2181":1,"2182":1,"2183":1,"2231":1,"2244":1,"2262":2,"2263":2,"2269":1,"2270":1,"2275":1,"2279":2,"2305":1,"2308":1,"2335":1,"2342":1,"2343":1,"2350":1,"2393":2,"2395":1,"2397":1,"2398":2,"2403":1,"2405":3,"2409":1,"2410":1,"2411":1,"2418":1,"2423":1,"2445":1,"2457":1,"2466":1,"2468":1,"2477":1,"2482":1,"2490":2,"2516":1,"2523":1,"2530":1,"2533":2,"2535":1,"2540":1,"2541":2,"2544":1,"2545":1,"2548":1,"2549":1,"2556":1,"2559":1,"2560":1,"2563":1,"2565":1,"2566":3,"2569":1,"2571":1,"2576":6,"2577":2,"2639":1,"2660":1,"2665":1,"2671":1,"2702":1,"2703":1,"2705":1,"2708":3,"2710":1,"2712":1,"2723":1,"2724":3,"2726":1,"2728":1,"2747":1,"2750":1}}],["w25x10cl",{"2":{"2544":2}}],["w25q080",{"2":{"2544":2}}],["wmp",{"2":{"2355":1}}],["wm",{"2":{"2355":1}}],["w^wr^sd",{"2":{"2154":1}}],["wfav",{"2":{"2355":1,"2393":1}}],["wfwd",{"2":{"1932":1,"2355":1,"2393":1}}],["wfi",{"2":{"222":1}}],["www",{"2":{"551":1,"624":1,"684":7,"685":1,"701":1,"1242":2,"1289":1,"1380":1,"2040":1,"2169":1,"2355":7,"2393":7,"2570":1}}],["wt",{"2":{"236":1,"249":2,"2566":2}}],["wt80",{"2":{"211":2}}],["wt75",{"2":{"211":3}}],["wt70",{"2":{"211":1}}],["wt69",{"2":{"211":1}}],["wt65",{"2":{"211":8}}],["wt60",{"2":{"199":1,"211":8}}],["w1",{"2":{"211":1,"241":2,"249":1}}],["wk",{"2":{"211":1}}],["wkl",{"2":{"149":1}}],["wl",{"2":{"176":2,"2153":3}}],["wbak",{"2":{"1932":1,"2355":1,"2393":1}}],["wbg7",{"2":{"176":1}}],["wb32fq95xx",{"2":{"490":1}}],["wb32fq95",{"2":{"160":1}}],["wb32f3g71xx",{"2":{"490":1}}],["wb32f3g71",{"2":{"134":1}}],["wb32",{"0":{"490":1,"2244":1},"2":{"160":1,"176":4,"191":4,"199":2,"222":1,"236":1,"2244":4}}],["wstp",{"2":{"2355":1,"2393":1}}],["wsch",{"2":{"2355":1,"2393":1}}],["ws2811",{"2":{"1212":1,"2031":1,"2288":1}}],["ws2812s",{"2":{"1216":1}}],["ws2812c",{"2":{"1212":1,"2031":1}}],["ws2812b",{"2":{"1212":1,"1216":2,"2031":1}}],["ws2812",{"0":{"1212":1,"1232":1,"2288":1,"2700":1},"1":{"1213":1,"1214":1,"1215":1,"1216":1,"1217":1,"1218":1,"1219":1,"1220":1,"1221":1,"1222":1,"1223":1,"1224":1,"1225":1,"1226":1,"1227":1,"1228":1,"1229":1,"1230":1,"1231":1,"1232":1,"1233":2},"2":{"49":1,"50":2,"93":2,"134":2,"149":1,"176":4,"191":3,"199":1,"201":2,"211":7,"221":4,"222":1,"234":2,"236":1,"249":3,"266":2,"506":3,"642":1,"1122":2,"1212":1,"1213":4,"1214":10,"1215":2,"1216":3,"1217":2,"1218":2,"1219":1,"1220":3,"1221":1,"1224":6,"1225":1,"1226":6,"1227":1,"1228":1,"1229":1,"1230":7,"1232":1,"1945":1,"1959":1,"2031":1,"2032":4,"2288":1,"2528":1,"2531":1,"2694":2,"2695":1,"2700":3}}],["wsl",{"2":{"158":1,"1241":1,"1385":1,"2463":3}}],["w64",{"2":{"158":1,"2351":2,"2461":1}}],["w",{"2":{"134":1,"199":1,"201":2,"211":1,"241":1,"249":1,"266":4,"313":1,"375":1,"530":2,"1212":1,"1217":4,"1499":2,"1511":1,"1527":1,"1655":1,"1805":8,"1932":1,"1943":6,"2148":1,"2153":1,"2169":1,"2233":1,"2236":1,"2347":1,"2348":3,"2355":3,"2386":3,"2401":1,"2407":1,"2575":4,"2615":3,"2686":2}}],["wc",{"2":{"116":1}}],["wp",{"2":{"114":1,"684":5}}],["wpm",{"0":{"2225":1},"1":{"2226":1,"2227":1,"2228":1},"2":{"93":1,"114":1,"134":1,"149":1,"191":2,"199":1,"511":2,"1683":1,"1949":1,"2129":3,"2144":1,"2225":4,"2226":24,"2227":4,"2228":9,"2697":2,"2702":2,"2707":12,"2749":1}}],["wref",{"2":{"2355":1,"2393":1}}],["wraps",{"2":{"1822":3,"2054":4,"2143":3}}],["wrapping",{"2":{"1361":1}}],["wrapped",{"2":{"249":1,"436":1}}],["wrappers",{"2":{"176":1}}],["wrap",{"2":{"199":1,"453":3,"454":1,"455":3,"1398":1,"1591":2,"2170":1}}],["wrote",{"2":{"174":1,"388":1,"405":1,"414":1,"415":1,"417":1,"423":1,"424":1,"2728":1}}],["wrongly",{"2":{"1274":1}}],["wrong",{"0":{"28":1,"627":1},"2":{"5":1,"25":1,"92":1,"176":1,"240":1,"249":1,"433":1,"557":1,"1216":1,"1241":1,"1287":1,"1447":1,"2455":1}}],["written",{"2":{"164":1,"230":1,"440":1,"552":2,"1331":1,"1332":1,"1736":1,"1738":1,"1740":1,"1749":1,"1752":1,"1754":1,"1758":1,"1760":1,"1764":1,"1766":1,"1769":1,"1963":1,"1965":1,"1967":1,"1976":1,"1979":1,"1981":1,"1985":1,"1987":1,"1991":1,"1993":1,"1997":1,"1999":1,"2003":1,"2005":1,"2008":1,"2014":1,"2036":1,"2051":9,"2052":3,"2053":3,"2054":7,"2055":3,"2134":1,"2300":1,"2347":1,"2353":2,"2407":1,"2450":1,"2453":1,"2577":1,"2627":1,"2629":1,"2752":2}}],["writing",{"0":{"440":1},"2":{"65":1,"70":1,"112":1,"134":1,"174":1,"182":1,"317":1,"388":1,"401":1,"430":2,"434":1,"441":1,"483":2,"485":1,"615":1,"681":4,"684":1,"688":1,"693":1,"1331":1,"1364":1,"1438":1,"1578":1,"1822":6,"2143":6,"2144":1,"2182":1,"2255":1,"2300":1,"2347":2,"2466":1,"2524":1,"2554":1,"2575":4,"2577":1,"2751":1,"2756":1}}],["writereg16",{"2":{"244":1}}],["writereg",{"2":{"244":1,"249":1}}],["writepinlow",{"2":{"243":1}}],["writepinhigh",{"2":{"243":1}}],["writepin",{"2":{"160":1,"243":1}}],["writes",{"2":{"114":1,"689":1,"690":1,"691":1,"692":1,"714":1,"717":1,"1331":1,"1332":1,"1341":1,"1720":1,"1822":9,"2143":9,"2525":1,"2575":2}}],["write",{"0":{"714":1,"717":1,"739":1,"766":1,"796":1,"830":1,"863":1,"897":1,"931":1,"965":1,"999":1,"1033":1,"1067":1,"1101":1,"1154":1,"1183":1,"1202":1,"1617":1},"1":{"715":1,"716":1,"718":1,"719":1,"740":1,"767":1,"797":1,"831":1,"864":1,"898":1,"932":1,"966":1,"1000":1,"1034":1,"1068":1,"1102":1,"1155":1,"1184":1,"1185":1,"1203":1,"1618":1},"2":{"31":4,"62":1,"114":2,"149":1,"174":1,"243":3,"244":2,"249":5,"424":1,"427":1,"440":1,"441":1,"446":2,"453":1,"455":1,"485":1,"559":1,"560":1,"585":1,"613":1,"614":1,"623":1,"684":2,"688":1,"689":2,"690":3,"691":3,"696":3,"701":1,"709":1,"715":2,"718":2,"727":1,"1183":1,"1184":1,"1189":2,"1203":1,"1207":2,"1287":2,"1331":1,"1332":5,"1333":1,"1361":1,"1364":1,"1448":1,"1527":1,"1617":1,"1717":6,"1813":9,"1814":1,"1815":1,"1816":2,"1822":17,"1823":18,"1832":1,"1868":1,"1918":1,"1923":1,"2137":9,"2138":1,"2139":1,"2143":11,"2301":2,"2353":4,"2426":1,"2525":1,"2553":1,"2600":2,"2707":5,"2751":1,"2752":2,"2753":1}}],["wont",{"2":{"1385":1}}],["wonder",{"2":{"2319":1,"2757":1}}],["wondering",{"2":{"554":1,"2740":1}}],["wonderland",{"2":{"57":2}}],["won",{"0":{"548":1},"2":{"221":1,"349":1,"498":1,"560":1,"1363":1,"1379":1,"1383":1,"1403":1,"1683":1,"2032":1,"2274":1,"2335":1,"2474":1,"2569":1,"2603":1,"2710":1,"2724":1,"2728":1,"2750":1}}],["woodkeys",{"2":{"143":6,"149":2}}],["wootpatoot",{"2":{"70":1}}],["worse",{"2":{"1278":1,"2118":1}}],["worrying",{"0":{"2472":1}}],["worry",{"2":{"1262":1}}],["worth",{"2":{"539":1,"1511":1,"2161":1,"2589":1,"2753":1}}],["worldsemi",{"2":{"1212":1}}],["world",{"0":{"1593":1,"2078":1},"2":{"430":4,"432":1,"470":1,"1251":1,"1268":1,"1325":2,"1355":1,"1436":3,"1593":1,"2078":2,"2154":1,"2666":1}}],["world1",{"2":{"120":1,"1354":1}}],["wordtypo",{"2":{"1447":1}}],["wordtpyo",{"2":{"1447":1}}],["words",{"2":{"1359":1,"1437":1,"1438":1,"1441":8,"1447":3,"1686":1,"1932":1,"2144":2,"2169":1,"2182":1,"2225":1,"2410":1,"2729":1}}],["word",{"0":{"152":1,"568":1,"1499":1,"1500":1,"1502":1,"1506":1,"1507":1,"2093":1,"2225":1,"2362":1,"2680":1},"1":{"1500":1,"1501":2,"1502":1,"1503":2,"1504":2,"1505":2,"1506":2,"1507":2,"2094":1,"2226":1,"2227":1,"2228":1},"2":{"152":3,"160":3,"176":2,"188":1,"191":2,"199":1,"211":3,"222":1,"249":1,"460":1,"1303":1,"1440":1,"1441":3,"1445":1,"1446":1,"1447":2,"1499":14,"1500":10,"1501":2,"1503":8,"1504":7,"1505":9,"1506":11,"1507":6,"1518":1,"1929":1,"1932":2,"2169":2,"2226":2,"2228":1,"2302":1,"2326":1,"2362":3,"2680":7,"2749":1}}],["workman",{"2":{"1355":3,"2712":6}}],["worked",{"2":{"606":1,"2413":1,"2457":1}}],["worker",{"2":{"305":1}}],["workers",{"0":{"305":1},"2":{"304":1,"305":1}}],["workbench",{"2":{"291":1,"2498":2,"2508":1}}],["workarounds",{"0":{"2618":1},"1":{"2619":1,"2620":1}}],["workaround",{"0":{"218":1},"2":{"149":1,"160":5,"199":2,"218":2,"222":1,"249":2,"1397":1,"1431":1,"1960":1}}],["workflows",{"2":{"262":1,"1314":1,"2435":2,"2437":1,"2438":1,"2448":1}}],["workflow",{"0":{"2437":1,"2439":1},"2":{"134":1,"164":1,"176":1,"191":1,"199":1,"213":1,"361":1,"521":1,"557":1,"2250":1,"2428":2,"2437":3,"2439":3,"2440":4}}],["workings",{"0":{"1672":1},"1":{"1673":1,"1674":1,"1675":1},"2":{"1884":1}}],["working",{"0":{"545":1,"1271":1,"1272":1,"1273":1,"1337":1,"2471":1},"1":{"1338":1,"1339":1,"1340":1,"2472":1},"2":{"114":1,"158":1,"321":1,"363":1,"370":1,"389":1,"390":1,"391":1,"399":1,"481":2,"516":1,"554":1,"560":1,"606":2,"684":1,"685":1,"690":1,"694":1,"1243":1,"1281":1,"1298":1,"1325":1,"1455":1,"1811":2,"1903":1,"2032":1,"2128":1,"2171":1,"2183":1,"2251":1,"2277":2,"2279":2,"2280":1,"2293":1,"2305":1,"2353":1,"2409":1,"2421":1,"2429":1,"2431":1,"2455":1,"2492":1,"2497":1,"2502":1,"2513":2,"2553":2,"2564":1}}],["workshop",{"2":{"1290":1}}],["workspaceroot",{"2":{"2513":2}}],["workspace",{"2":{"291":1,"2498":1,"2508":1,"2509":1,"2510":2,"2511":1}}],["works",{"0":{"2283":1,"2311":1},"2":{"100":1,"176":1,"199":1,"211":4,"263":2,"285":1,"375":1,"412":1,"481":1,"510":1,"532":1,"605":1,"663":1,"1122":1,"1215":1,"1236":1,"1239":1,"1243":1,"1283":1,"1334":1,"1401":1,"1403":1,"1411":1,"1416":1,"1442":1,"1447":1,"1450":1,"1499":1,"1500":2,"1503":1,"1577":1,"1672":1,"1865":1,"1866":1,"1900":1,"1940":1,"2033":1,"2118":1,"2122":1,"2126":1,"2162":1,"2171":3,"2172":1,"2182":1,"2183":4,"2249":1,"2270":1,"2283":1,"2311":1,"2331":1,"2349":1,"2403":1,"2427":1,"2502":1,"2513":1,"2725":1,"2742":1,"2757":1}}],["work",{"0":{"1281":1,"1288":1,"1291":1,"1292":1,"1411":1,"1438":1},"2":{"10":1,"23":2,"28":1,"49":1,"50":2,"114":1,"131":1,"134":1,"142":1,"160":1,"182":2,"189":2,"191":3,"194":1,"199":2,"222":1,"236":1,"251":2,"266":1,"277":1,"317":1,"336":1,"349":1,"354":1,"358":1,"380":1,"435":1,"452":1,"488":1,"515":2,"534":1,"541":1,"551":1,"554":2,"560":3,"605":1,"606":1,"698":1,"726":1,"1126":1,"1132":1,"1133":1,"1236":1,"1238":1,"1241":1,"1271":1,"1288":2,"1290":1,"1303":2,"1312":1,"1332":2,"1335":1,"1340":2,"1363":1,"1370":1,"1375":1,"1385":3,"1403":4,"1416":3,"1432":1,"1435":1,"1522":1,"1524":1,"1568":1,"1572":1,"1676":2,"1787":1,"1788":1,"1822":1,"1824":1,"1869":1,"1873":1,"1882":1,"1887":2,"1894":1,"1948":2,"2034":1,"2041":1,"2045":1,"2114":1,"2145":1,"2150":1,"2153":1,"2162":1,"2169":1,"2177":1,"2181":1,"2238":1,"2240":1,"2254":1,"2256":1,"2262":1,"2276":1,"2279":1,"2292":2,"2299":1,"2309":2,"2311":1,"2312":1,"2320":1,"2341":1,"2344":1,"2398":1,"2411":1,"2424":1,"2445":1,"2455":1,"2457":1,"2473":1,"2474":1,"2476":1,"2490":1,"2501":1,"2513":1,"2517":1,"2524":1,"2577":1,"2725":1,"2735":1,"2736":1,"2742":1,"2746":1}}],["wouldn",{"2":{"1522":1,"2757":1}}],["would",{"2":{"11":1,"73":1,"98":1,"164":1,"194":3,"263":1,"320":1,"331":1,"367":1,"479":1,"480":1,"485":1,"505":1,"529":1,"530":1,"532":1,"554":1,"611":1,"643":1,"660":4,"661":2,"665":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1132":1,"1133":1,"1144":1,"1181":1,"1213":1,"1226":1,"1230":1,"1264":1,"1294":1,"1300":2,"1325":1,"1334":1,"1336":3,"1338":1,"1361":4,"1366":1,"1391":1,"1392":1,"1405":1,"1430":2,"1432":1,"1441":2,"1451":2,"1469":1,"1470":1,"1492":1,"1508":1,"1510":1,"1514":1,"1530":1,"1560":1,"1577":1,"1670":1,"1676":1,"1729":1,"1731":1,"1791":1,"1804":1,"1878":1,"1895":1,"1897":2,"1899":2,"1912":1,"1943":1,"1952":1,"1955":1,"1959":1,"2039":1,"2044":1,"2045":1,"2046":1,"2064":1,"2152":3,"2154":1,"2155":1,"2162":1,"2169":2,"2183":1,"2228":1,"2268":1,"2311":2,"2396":1,"2403":2,"2410":1,"2411":4,"2421":1,"2469":2,"2506":1,"2533":1,"2551":1,"2566":1,"2577":3,"2607":2,"2614":1,"2719":1,"2734":2,"2735":1,"2736":1,"2752":1,"2756":3}}],["whlr",{"2":{"1801":1,"1932":1,"2372":1}}],["whll",{"2":{"1801":1,"1932":1,"2372":1}}],["whld",{"2":{"1559":1,"1801":1,"1932":1,"2372":1}}],["whlu",{"2":{"1559":1,"1801":1,"1932":1,"2372":1}}],["wh",{"2":{"209":2}}],["why",{"0":{"1409":1,"1410":1,"2254":1,"2283":1,"2740":1,"2741":1},"1":{"1410":1,"1411":1,"1412":1,"1413":1,"1414":1,"1415":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"1423":1,"1424":1,"1425":1,"1426":1,"1427":1,"1428":1,"1429":1,"1430":1,"1431":1,"1432":1,"1433":1,"1434":1,"1435":1,"1436":1},"2":{"173":1,"367":1,"453":1,"455":1,"482":1,"821":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1300":1,"1340":1,"2319":1,"2671":1,"2740":1,"2757":1}}],["whom",{"2":{"2355":1,"2393":1}}],["whoeveryouare",{"2":{"2255":3}}],["whose",{"2":{"430":1,"2149":1,"2728":1}}],["who",{"2":{"119":2,"164":1,"166":1,"173":3,"209":1,"221":1,"231":1,"234":1,"470":1,"479":1,"502":1,"559":1,"605":1,"606":1,"1353":1,"1729":1,"1952":1,"2183":1,"2292":1,"2297":1,"2305":2,"2418":2}}],["whole",{"0":{"420":1,"551":1},"2":{"116":1,"263":1,"457":1,"498":1,"501":1,"1264":1,"1303":1,"1441":1,"1451":1,"1573":1,"1821":1,"2226":1,"2274":1,"2279":1,"2311":1,"2729":1,"2740":1,"2756":1}}],["whatever",{"2":{"502":3,"573":1,"1272":1,"1338":1,"1351":1,"1815":1,"2036":1,"2130":1,"2139":1,"2429":1,"2457":1,"2480":1,"2669":1,"2728":2}}],["what",{"0":{"338":1,"341":1,"353":1,"546":1,"547":1,"562":1,"1257":1,"1260":1,"1261":1,"1264":1,"1265":1,"1267":1,"1268":1,"1284":1,"1565":1,"2315":1,"2316":1,"2317":1,"2322":1},"1":{"354":1,"355":1,"356":1},"2":{"50":1,"99":1,"119":2,"182":1,"228":1,"246":1,"251":1,"254":1,"303":1,"435":1,"446":1,"462":1,"474":2,"516":1,"527":1,"539":1,"540":1,"550":1,"556":1,"567":1,"574":2,"586":1,"602":1,"606":1,"616":1,"629":1,"661":1,"1258":1,"1283":1,"1287":1,"1304":1,"1316":1,"1317":1,"1334":1,"1340":2,"1341":2,"1357":1,"1359":1,"1397":1,"1450":1,"1451":1,"1515":1,"1579":1,"1670":2,"1675":1,"1678":1,"1725":3,"1821":1,"1830":1,"1936":1,"1946":3,"2041":1,"2126":1,"2152":1,"2160":1,"2161":1,"2162":1,"2169":1,"2171":1,"2255":1,"2268":1,"2270":1,"2275":1,"2282":1,"2297":1,"2299":1,"2311":3,"2312":1,"2313":1,"2315":2,"2318":1,"2342":2,"2348":1,"2405":1,"2425":1,"2454":1,"2455":1,"2468":1,"2473":1,"2478":1,"2480":1,"2552":1,"2553":1,"2563":1,"2566":2,"2568":1,"2577":1,"2602":1,"2615":1,"2686":1,"2727":2,"2746":1,"2752":1}}],["wheatfield",{"2":{"159":2}}],["wheel",{"2":{"112":1,"222":1,"507":1,"1801":8,"1803":12,"1804":12,"1805":1,"1807":1,"1808":3,"1932":2,"1951":1,"2033":2,"2372":8,"2690":1}}],["whereas",{"2":{"592":1,"635":2,"660":1,"1533":1,"2728":1}}],["wherever",{"2":{"496":1,"1528":1,"2686":1,"2719":1,"2721":1}}],["where",{"0":{"553":1,"1258":1},"2":{"94":1,"99":1,"134":1,"140":1,"191":1,"194":1,"199":1,"211":1,"231":1,"249":1,"266":1,"304":1,"374":4,"446":1,"458":1,"482":1,"484":1,"500":1,"502":2,"511":1,"526":1,"557":2,"574":2,"578":1,"684":1,"758":1,"787":1,"819":1,"851":1,"852":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1023":1,"1056":1,"1057":1,"1090":1,"1125":1,"1128":2,"1132":1,"1133":1,"1146":1,"1216":1,"1225":1,"1300":1,"1302":1,"1303":1,"1329":2,"1341":1,"1406":1,"1438":1,"1451":1,"1523":1,"1577":1,"1612":1,"1614":1,"1634":1,"1652":1,"1672":1,"1725":2,"1733":1,"1830":1,"1871":1,"1880":1,"1932":2,"1946":2,"1957":1,"2051":9,"2054":2,"2065":1,"2152":2,"2181":2,"2182":1,"2259":2,"2262":1,"2266":1,"2274":2,"2275":1,"2277":1,"2279":1,"2297":1,"2300":1,"2301":1,"2311":1,"2348":1,"2353":1,"2367":1,"2406":1,"2407":1,"2423":2,"2445":1,"2452":1,"2478":2,"2501":1,"2533":1,"2554":1,"2555":1,"2558":1,"2564":1,"2566":5,"2567":1,"2568":1,"2577":2,"2595":1,"2597":1,"2598":1,"2614":2,"2701":1,"2742":1,"2744":2,"2746":1,"2756":1,"2757":1}}],["whether",{"2":{"49":1,"214":1,"234":1,"354":1,"437":1,"481":1,"580":2,"592":1,"681":1,"693":1,"698":1,"1210":1,"1230":1,"1300":1,"1412":1,"1430":1,"1438":2,"1457":1,"1537":1,"1597":2,"1601":2,"1615":1,"1618":1,"1620":1,"1642":1,"1670":1,"1693":1,"1697":1,"1717":1,"1725":1,"1805":1,"1946":1,"2113":3,"2125":1,"2129":1,"2152":1,"2162":2,"2169":1,"2171":1,"2179":1,"2212":1,"2348":1,"2524":1,"2574":1,"2576":1,"2577":1,"2587":1,"2677":1,"2689":3}}],["whenver",{"2":{"1558":1}}],["whenever",{"2":{"263":1,"282":3,"341":2,"572":1,"584":1,"588":1,"592":1,"613":1,"690":1,"691":1,"1132":1,"1359":1,"1442":1,"1878":1,"1897":1,"1950":1,"2043":1,"2047":1,"2128":1,"2154":1,"2226":1,"2313":1,"2314":1,"2403":1,"2441":1,"2448":1,"2491":1,"2577":1,"2749":1}}],["when",{"0":{"339":1,"361":1,"1270":1,"1898":1},"1":{"340":1},"2":{"11":1,"28":1,"49":1,"50":1,"58":1,"65":2,"74":1,"92":2,"93":1,"94":1,"107":1,"111":1,"114":6,"133":1,"134":2,"149":1,"160":1,"176":2,"191":5,"195":1,"199":7,"211":3,"222":5,"230":1,"233":1,"234":2,"236":3,"240":1,"241":1,"246":1,"247":1,"249":4,"253":1,"263":1,"266":1,"270":1,"305":1,"312":1,"331":1,"337":1,"341":1,"342":1,"361":1,"364":1,"367":2,"393":2,"394":2,"416":2,"426":1,"431":1,"433":1,"435":1,"436":1,"440":1,"441":1,"447":2,"453":3,"457":2,"459":1,"465":1,"467":2,"468":2,"474":1,"477":1,"479":1,"481":1,"482":1,"496":1,"502":2,"505":1,"506":4,"510":2,"511":16,"513":2,"522":1,"526":1,"527":1,"529":1,"539":1,"541":1,"542":1,"556":1,"557":1,"559":1,"560":1,"565":1,"566":1,"568":1,"570":1,"571":1,"572":3,"578":1,"586":1,"589":2,"592":1,"606":1,"607":1,"609":2,"610":1,"615":1,"622":1,"623":1,"625":1,"627":1,"628":2,"639":1,"659":2,"681":1,"684":1,"698":1,"1122":1,"1133":1,"1176":1,"1214":1,"1225":1,"1238":1,"1239":2,"1241":1,"1250":2,"1252":2,"1253":1,"1254":1,"1265":2,"1267":1,"1272":1,"1284":1,"1288":2,"1290":1,"1299":1,"1303":1,"1325":2,"1326":1,"1329":4,"1332":4,"1335":4,"1336":1,"1337":1,"1338":1,"1339":2,"1340":2,"1349":1,"1353":1,"1355":1,"1357":1,"1359":6,"1368":1,"1376":1,"1377":1,"1381":2,"1397":1,"1398":13,"1399":17,"1410":1,"1411":2,"1412":1,"1425":1,"1430":2,"1432":1,"1441":2,"1446":4,"1448":1,"1457":1,"1458":1,"1459":1,"1463":1,"1471":1,"1494":1,"1495":1,"1496":1,"1499":1,"1501":1,"1503":1,"1506":1,"1507":3,"1508":1,"1510":1,"1517":1,"1518":2,"1519":1,"1527":2,"1530":1,"1553":1,"1554":1,"1556":3,"1557":1,"1562":1,"1564":2,"1566":2,"1573":4,"1576":1,"1577":1,"1579":1,"1582":6,"1626":1,"1628":1,"1635":1,"1637":1,"1655":1,"1656":4,"1659":1,"1663":1,"1665":1,"1666":1,"1668":1,"1670":1,"1671":4,"1673":1,"1674":2,"1675":2,"1680":2,"1686":2,"1689":1,"1690":1,"1715":1,"1716":2,"1720":1,"1730":1,"1802":1,"1803":1,"1805":2,"1806":1,"1808":1,"1812":1,"1817":2,"1821":1,"1822":2,"1826":1,"1828":1,"1857":1,"1863":1,"1872":1,"1873":1,"1875":1,"1876":2,"1878":1,"1880":2,"1885":4,"1886":4,"1894":1,"1895":1,"1897":1,"1898":1,"1899":1,"1900":4,"1901":1,"1912":1,"1915":1,"1925":1,"1932":1,"1938":2,"1940":1,"1941":1,"1942":2,"1948":10,"1954":1,"1959":1,"2031":1,"2034":10,"2035":1,"2037":1,"2038":1,"2042":5,"2044":1,"2045":2,"2063":2,"2074":1,"2078":1,"2102":2,"2104":14,"2105":1,"2106":17,"2107":4,"2114":1,"2125":1,"2126":2,"2127":1,"2129":1,"2131":7,"2132":1,"2137":1,"2143":4,"2146":1,"2152":2,"2156":4,"2157":1,"2160":1,"2161":10,"2162":4,"2169":4,"2170":4,"2171":1,"2177":1,"2179":3,"2180":6,"2182":2,"2192":1,"2194":1,"2226":6,"2231":1,"2238":1,"2250":1,"2252":1,"2262":5,"2267":1,"2270":1,"2272":1,"2273":3,"2276":1,"2279":2,"2300":1,"2302":2,"2304":1,"2305":1,"2308":1,"2311":6,"2314":1,"2320":1,"2347":1,"2348":1,"2354":1,"2355":2,"2364":2,"2367":3,"2374":44,"2376":10,"2377":10,"2382":14,"2383":4,"2393":2,"2398":1,"2402":1,"2405":1,"2410":48,"2411":1,"2414":1,"2417":2,"2423":1,"2425":1,"2440":1,"2445":1,"2454":1,"2460":1,"2469":1,"2473":3,"2474":1,"2478":1,"2491":6,"2498":2,"2509":1,"2512":2,"2522":1,"2524":1,"2539":1,"2554":1,"2560":1,"2563":1,"2566":3,"2568":2,"2573":1,"2575":4,"2576":4,"2577":1,"2584":2,"2596":1,"2616":2,"2633":1,"2641":1,"2642":1,"2680":1,"2688":1,"2689":1,"2694":2,"2695":1,"2697":1,"2710":1,"2711":1,"2716":1,"2719":1,"2720":1,"2721":1,"2728":3,"2729":4,"2735":2,"2736":2,"2737":1,"2743":2,"2745":1,"2748":2,"2757":1}}],["whistles",{"2":{"2566":1}}],["whitefacemountain",{"2":{"277":1}}],["whitefox",{"2":{"143":2,"236":1}}],["white",{"2":{"266":1,"433":1,"435":2,"530":1,"1217":5,"1332":1,"1826":1,"1953":2,"2051":1,"2058":3,"2596":4}}],["whitespace",{"2":{"211":4,"453":1,"454":1,"556":1,"616":1,"1440":1,"2407":1}}],["whilst",{"2":{"198":1,"402":1,"2549":1}}],["while",{"2":{"21":1,"37":1,"49":1,"73":1,"191":1,"194":3,"199":2,"203":1,"331":1,"346":1,"496":1,"505":1,"559":1,"568":1,"590":1,"606":1,"626":3,"654":1,"663":1,"1265":1,"1270":1,"1273":1,"1284":2,"1303":1,"1319":1,"1325":3,"1329":2,"1331":1,"1353":1,"1356":1,"1364":1,"1383":1,"1403":1,"1441":1,"1442":1,"1446":1,"1463":1,"1498":1,"1499":2,"1503":2,"1506":2,"1518":1,"1553":1,"1556":1,"1570":1,"1573":1,"1594":1,"1655":1,"1670":1,"1673":3,"1674":1,"1677":1,"1803":1,"1804":1,"1805":1,"1806":1,"1807":1,"1822":7,"1827":1,"1880":1,"1882":1,"1886":1,"1890":1,"1892":1,"1899":1,"1905":3,"1907":4,"1929":1,"1937":1,"1953":1,"2058":1,"2063":1,"2066":1,"2070":1,"2106":1,"2111":1,"2125":1,"2128":1,"2143":5,"2148":2,"2152":1,"2156":3,"2169":1,"2171":1,"2236":1,"2237":1,"2249":2,"2255":1,"2262":2,"2263":1,"2279":1,"2284":1,"2293":1,"2305":2,"2383":3,"2400":1,"2407":2,"2408":1,"2419":1,"2424":1,"2425":1,"2450":3,"2515":1,"2574":1,"2584":1,"2600":1,"2640":1,"2651":1,"2654":1,"2659":1,"2671":1,"2696":1,"2726":1,"2729":3,"2738":1,"2743":1,"2745":1,"2754":1}}],["whichever",{"2":{"1405":1,"1922":1,"2152":1}}],["which",{"0":{"1252":1,"1506":1},"2":{"0":1,"9":1,"19":1,"27":1,"30":1,"33":1,"39":1,"45":1,"49":3,"50":1,"52":1,"69":1,"108":1,"118":1,"119":1,"134":1,"149":1,"154":1,"158":1,"173":1,"191":1,"194":1,"201":1,"209":1,"215":2,"233":1,"236":1,"246":1,"265":1,"313":1,"317":2,"327":1,"331":1,"334":2,"337":1,"341":1,"358":1,"401":1,"402":1,"415":1,"416":1,"430":1,"433":1,"453":1,"467":1,"470":1,"474":1,"487":1,"496":3,"503":1,"504":2,"505":2,"510":1,"513":1,"529":3,"540":1,"556":1,"560":1,"574":1,"586":1,"589":1,"615":1,"623":1,"626":1,"635":3,"654":1,"655":1,"660":3,"661":2,"688":1,"695":1,"700":1,"703":1,"726":1,"1122":1,"1129":1,"1136":1,"1137":1,"1138":1,"1175":1,"1177":2,"1196":1,"1198":1,"1215":1,"1216":1,"1217":1,"1220":1,"1243":1,"1253":1,"1270":1,"1271":2,"1279":1,"1284":1,"1287":3,"1290":1,"1300":1,"1301":1,"1303":1,"1312":1,"1325":1,"1326":2,"1336":1,"1349":1,"1357":1,"1359":2,"1361":3,"1392":1,"1393":1,"1394":1,"1396":1,"1397":1,"1400":2,"1404":3,"1411":1,"1414":1,"1416":1,"1417":1,"1419":1,"1421":1,"1423":1,"1428":1,"1432":1,"1436":1,"1448":1,"1459":2,"1461":1,"1495":2,"1499":1,"1501":1,"1506":2,"1516":1,"1523":1,"1527":1,"1531":1,"1548":1,"1549":1,"1551":2,"1556":1,"1557":1,"1559":1,"1562":2,"1572":1,"1575":1,"1634":1,"1657":1,"1659":1,"1660":1,"1661":1,"1662":1,"1670":3,"1673":1,"1675":1,"1676":1,"1677":1,"1678":1,"1722":1,"1803":2,"1804":3,"1807":1,"1815":1,"1816":1,"1821":3,"1822":1,"1824":2,"1825":2,"1859":1,"1862":1,"1863":2,"1876":3,"1885":1,"1912":1,"1922":1,"1923":1,"1929":1,"1932":1,"1941":1,"1943":1,"2040":1,"2041":1,"2063":1,"2078":1,"2111":1,"2123":2,"2131":2,"2139":1,"2140":1,"2155":1,"2161":4,"2169":1,"2171":2,"2177":1,"2178":1,"2181":2,"2226":1,"2235":1,"2236":1,"2238":1,"2252":3,"2254":1,"2255":1,"2262":2,"2263":1,"2272":3,"2276":2,"2293":1,"2299":1,"2300":1,"2302":1,"2303":2,"2311":3,"2315":1,"2344":1,"2349":2,"2350":1,"2367":1,"2402":1,"2406":1,"2407":1,"2411":2,"2443":1,"2448":1,"2454":1,"2461":1,"2468":1,"2475":1,"2477":3,"2479":3,"2480":2,"2485":1,"2513":1,"2517":1,"2523":1,"2529":1,"2534":2,"2535":1,"2539":3,"2541":1,"2542":1,"2543":1,"2546":1,"2548":1,"2557":1,"2566":1,"2567":1,"2571":2,"2573":1,"2576":2,"2577":4,"2584":1,"2587":1,"2596":2,"2614":4,"2615":4,"2633":2,"2643":1,"2661":1,"2664":1,"2677":1,"2686":1,"2688":2,"2689":1,"2694":2,"2695":2,"2697":1,"2699":1,"2702":1,"2707":2,"2710":1,"2712":1,"2718":1,"2728":1,"2729":2,"2737":1,"2738":1,"2740":1,"2743":1,"2744":1,"2745":1,"2746":1,"2749":1,"2750":1,"2752":1,"2757":3}}],["waz",{"2":{"2147":1,"2148":1}}],["warranty",{"2":{"1380":2,"2570":2}}],["warn",{"2":{"114":1,"160":1,"610":1,"2353":1}}],["warnings",{"0":{"2308":1,"2529":1},"2":{"95":1,"160":1,"170":1,"191":1,"211":1,"236":2,"352":1,"2262":1,"2308":2,"2721":1}}],["warning",{"2":{"23":1,"50":1,"107":1,"114":1,"134":1,"149":1,"153":1,"154":1,"160":1,"176":2,"182":1,"199":3,"228":1,"236":4,"266":1,"290":3,"317":1,"433":1,"537":1,"538":1,"540":1,"541":1,"574":1,"610":1,"619":2,"626":1,"628":1,"683":1,"685":1,"688":1,"689":1,"690":1,"694":1,"1122":1,"1126":1,"1353":1,"1376":2,"1398":1,"1448":1,"1495":1,"1527":1,"1558":1,"1560":1,"1677":1,"1714":1,"1820":1,"1822":2,"1871":1,"1872":2,"1873":1,"1921":1,"1948":1,"2034":1,"2037":1,"2044":1,"2108":1,"2114":2,"2118":1,"2129":1,"2130":1,"2146":1,"2150":1,"2161":1,"2175":1,"2183":1,"2254":1,"2330":1,"2332":1,"2334":1,"2335":1,"2339":1,"2348":2,"2423":1,"2427":1,"2436":1,"2437":1,"2441":1,"2442":2,"2445":1,"2454":2,"2460":1,"2477":1,"2490":1,"2513":1,"2532":1,"2565":1,"2572":1,"2573":1,"2576":4,"2577":3,"2581":1,"2614":2,"2718":1,"2737":1,"2738":1}}],["watch",{"2":{"1287":1,"2040":1,"2427":1,"2750":1}}],["watchdog",{"2":{"191":1,"222":2,"511":3,"2131":5,"2697":2}}],["waffling60",{"2":{"236":1}}],["waffling80",{"2":{"211":1}}],["waveshare",{"2":{"2576":3}}],["wavetable",{"2":{"1393":1}}],["waveforms",{"2":{"1578":1}}],["waveform",{"0":{"1578":1},"2":{"249":1,"1393":5,"1401":2,"1572":2,"1578":2}}],["wave",{"2":{"222":1,"266":1,"661":1,"1393":3,"1576":1,"1728":8,"1949":5,"2708":1}}],["walk",{"2":{"2255":1,"2404":1,"2459":1,"2472":1,"2568":1}}],["walter",{"2":{"191":1}}],["wallaby",{"2":{"143":2}}],["wako",{"2":{"1265":1,"2257":1}}],["waka60",{"2":{"266":1}}],["wakizashi40",{"2":{"211":1}}],["wakizashi",{"2":{"149":1}}],["wakes",{"2":{"589":1}}],["wakeup",{"0":{"590":1},"2":{"112":1,"114":1,"176":1,"199":2,"222":3,"236":1,"502":2,"515":1,"588":2,"589":1,"590":2,"591":2,"2577":1,"2699":2}}],["wake",{"0":{"589":1,"591":1,"1292":1,"1298":1},"1":{"590":1,"591":1},"2":{"62":1,"73":1,"231":1,"502":1,"515":1,"1273":1,"1292":2,"2355":3,"2393":3}}],["wanted",{"2":{"1384":1,"1385":1,"1412":1,"2174":1}}],["wanten",{"2":{"143":2}}],["wanting",{"2":{"1181":1,"2169":1,"2276":1,"2545":1,"2601":1}}],["wants",{"2":{"222":1,"1431":1,"2418":1,"2476":1,"2748":1}}],["want",{"0":{"551":1,"1263":1,"1264":1},"1":{"1264":1},"2":{"125":1,"173":1,"185":1,"194":1,"232":1,"341":1,"376":1,"415":1,"451":1,"452":1,"457":1,"474":1,"479":1,"481":1,"502":3,"505":3,"511":2,"537":1,"538":1,"539":1,"541":1,"550":1,"554":1,"567":1,"571":1,"574":5,"581":1,"586":1,"605":1,"609":1,"657":1,"658":1,"698":1,"1136":1,"1137":1,"1242":1,"1287":1,"1300":3,"1316":1,"1320":1,"1331":2,"1332":7,"1333":1,"1338":2,"1339":1,"1340":1,"1351":1,"1353":1,"1359":2,"1360":1,"1361":1,"1362":1,"1364":1,"1368":1,"1380":1,"1381":2,"1383":2,"1384":1,"1385":5,"1396":1,"1405":2,"1411":1,"1438":1,"1442":1,"1448":1,"1464":2,"1495":2,"1518":4,"1524":1,"1529":1,"1555":1,"1655":1,"1677":1,"1685":1,"1723":1,"1725":2,"1729":1,"1730":1,"1733":1,"1791":1,"1803":1,"1805":1,"1815":1,"1822":1,"1826":1,"1830":1,"1863":1,"1897":1,"1912":1,"1944":1,"1946":2,"1952":1,"1954":1,"1957":1,"1959":1,"1960":1,"2036":1,"2042":1,"2044":2,"2059":1,"2060":1,"2064":1,"2107":1,"2110":1,"2117":1,"2133":1,"2139":1,"2143":1,"2145":2,"2149":1,"2152":1,"2153":1,"2161":4,"2162":1,"2169":4,"2183":1,"2228":2,"2252":1,"2255":1,"2262":2,"2263":1,"2264":1,"2268":1,"2270":1,"2272":1,"2274":1,"2275":2,"2276":1,"2280":1,"2305":1,"2306":1,"2319":1,"2327":1,"2341":1,"2402":1,"2404":1,"2422":1,"2444":1,"2445":1,"2446":1,"2449":1,"2452":1,"2468":4,"2475":1,"2476":1,"2477":1,"2480":1,"2490":2,"2504":1,"2510":1,"2513":1,"2529":1,"2533":1,"2541":1,"2569":1,"2574":1,"2603":1,"2606":2,"2607":2,"2608":1,"2611":1,"2703":2,"2711":1,"2728":1,"2738":1,"2750":1,"2753":1,"2757":2}}],["waits",{"2":{"515":1,"599":1,"1326":1,"1368":2,"1622":1,"1624":1,"2241":1,"2729":1}}],["waiting",{"2":{"176":1,"191":1,"230":1,"315":1,"511":1,"523":1,"1252":1,"1254":2,"1368":1,"1554":1,"2131":1,"2132":1,"2442":1}}],["wait",{"2":{"92":1,"94":2,"112":1,"113":1,"114":4,"149":1,"176":3,"222":2,"263":1,"266":1,"336":1,"515":2,"554":1,"588":1,"598":1,"707":2,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"727":1,"1177":1,"1326":1,"1375":1,"1497":1,"1730":1,"1910":1,"1954":1,"2038":1,"2040":6,"2075":1,"2084":1,"2088":1,"2161":1,"2167":4,"2169":1,"2179":1,"2230":1,"2233":2,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":4,"2247":4,"2249":4,"2450":1,"2564":1,"2574":1,"2689":1,"2697":2,"2699":3,"2737":1}}],["waaffle",{"2":{"86":4}}],["wasn",{"2":{"1518":1,"2730":1}}],["wasting",{"2":{"430":1}}],["wasdat",{"2":{"57":4,"160":1}}],["was",{"0":{"352":1},"1":{"353":1,"354":1,"355":1,"356":1},"2":{"6":1,"8":1,"10":1,"11":1,"113":1,"125":1,"174":1,"179":1,"185":1,"189":2,"194":1,"214":1,"215":1,"243":1,"245":1,"251":1,"255":1,"263":1,"271":1,"285":1,"324":1,"327":1,"352":1,"361":2,"472":1,"505":1,"529":1,"545":1,"556":2,"606":1,"663":1,"1133":1,"1265":1,"1272":2,"1332":1,"1438":1,"1448":1,"1523":2,"1670":1,"1673":1,"1675":1,"1696":1,"1821":2,"1822":7,"1830":1,"1898":1,"1929":1,"1933":4,"2134":2,"2143":4,"2147":1,"2162":2,"2171":1,"2218":1,"2220":1,"2274":1,"2309":1,"2311":1,"2406":1,"2437":1,"2468":1,"2474":4,"2480":1,"2524":1,"2545":1,"2575":1,"2623":1}}],["ways",{"2":{"337":1,"432":1,"437":1,"438":1,"439":1,"449":1,"509":1,"540":1,"557":1,"560":1,"624":1,"1270":1,"1325":2,"1331":1,"1335":1,"1336":1,"1340":1,"1353":1,"1442":1,"1499":1,"1714":1,"1888":1,"2123":1,"2267":2,"2280":1,"2305":1,"2326":1,"2403":1,"2450":1,"2472":2}}],["way",{"2":{"0":1,"9":1,"19":1,"39":1,"50":1,"52":1,"120":1,"124":1,"154":2,"194":2,"222":1,"254":1,"337":1,"354":1,"377":1,"433":1,"436":2,"483":1,"534":1,"560":2,"584":1,"636":1,"685":1,"1212":1,"1234":1,"1235":1,"1331":1,"1335":1,"1337":1,"1346":1,"1377":1,"1383":1,"1385":2,"1391":1,"1404":1,"1447":1,"1451":2,"1454":1,"1495":1,"1528":1,"1655":1,"1675":1,"1677":1,"1684":1,"1725":1,"1803":1,"1872":1,"1876":1,"1880":1,"1922":1,"1935":1,"1946":1,"2031":1,"2130":1,"2150":1,"2183":1,"2226":1,"2238":1,"2270":1,"2272":1,"2311":3,"2326":1,"2344":1,"2349":1,"2403":1,"2406":1,"2445":1,"2451":1,"2474":2,"2476":1,"2480":1,"2502":1,"2529":1,"2539":1,"2564":1,"2569":1,"2614":1,"2615":1,"2689":1,"2711":1,"2719":1,"2738":1,"2753":1,"2756":1}}],["wikipedia",{"2":{"1300":1,"1803":1,"2311":1}}],["wiki",{"2":{"515":1,"1902":1,"2151":1}}],["wipe",{"2":{"2610":1}}],["wiper",{"2":{"1634":1}}],["wip",{"2":{"277":1}}],["wiping",{"0":{"2610":1},"2":{"191":1,"2272":1}}],["witf",{"2":{"211":1}}],["withe",{"2":{"1138":1}}],["withing",{"2":{"1573":1}}],["within",{"2":{"31":1,"34":1,"50":1,"67":1,"75":1,"86":1,"94":1,"102":1,"122":1,"124":1,"126":1,"132":1,"133":1,"134":1,"141":2,"143":1,"149":2,"159":1,"168":1,"181":1,"190":1,"191":1,"195":1,"197":1,"199":1,"201":1,"222":1,"231":1,"236":2,"254":1,"266":1,"317":1,"337":1,"360":1,"373":1,"432":1,"435":1,"460":1,"486":1,"511":1,"580":2,"610":1,"611":1,"684":1,"685":1,"690":1,"1250":1,"1336":1,"1344":1,"1364":1,"1397":1,"1400":1,"1411":1,"1441":2,"1496":1,"1503":1,"1508":1,"1518":1,"1520":1,"1521":1,"1527":1,"1537":1,"1729":1,"1743":1,"1745":1,"1827":1,"1859":1,"1940":1,"1948":1,"1952":1,"1970":1,"1972":1,"2034":1,"2115":1,"2120":1,"2131":1,"2162":1,"2169":1,"2170":1,"2233":1,"2258":1,"2259":2,"2263":1,"2302":1,"2320":1,"2355":1,"2393":1,"2403":1,"2428":1,"2445":1,"2502":1,"2550":2,"2559":1,"2566":2,"2571":2,"2592":1,"2595":1,"2710":1,"2719":1,"2720":3,"2725":1,"2735":3,"2736":2,"2737":1,"2744":1,"2745":1,"2749":1}}],["without",{"0":{"1960":1},"2":{"23":1,"49":2,"70":1,"80":1,"112":1,"125":1,"152":2,"164":1,"173":1,"176":1,"185":1,"194":1,"228":1,"273":2,"276":1,"290":1,"352":1,"370":1,"388":1,"414":1,"430":1,"470":1,"481":1,"500":1,"511":1,"515":1,"550":1,"560":1,"582":3,"585":1,"698":1,"727":1,"1289":1,"1300":4,"1337":1,"1380":2,"1385":1,"1398":1,"1416":1,"1431":4,"1442":1,"1457":1,"1463":1,"1506":1,"1528":1,"1555":1,"1666":1,"1683":2,"1729":1,"1806":1,"1832":1,"1869":1,"1872":1,"1885":1,"1935":1,"1952":1,"1960":1,"2041":1,"2065":1,"2069":2,"2079":1,"2125":1,"2128":1,"2131":1,"2132":1,"2144":1,"2146":1,"2149":1,"2154":1,"2183":2,"2237":1,"2250":1,"2252":1,"2262":2,"2263":1,"2305":1,"2311":1,"2316":1,"2348":1,"2441":1,"2480":1,"2490":1,"2516":1,"2530":1,"2566":1,"2570":2,"2571":1,"2577":4,"2605":1,"2620":1,"2726":1,"2738":3,"2744":1,"2757":1}}],["with",{"0":{"1":1,"27":1,"454":1,"625":1,"1247":1,"1248":1,"1249":1,"1264":1,"1281":1,"1337":1,"1346":1,"1660":1,"1661":1,"1662":1,"1809":1,"2083":1,"2087":1,"2145":1,"2146":1,"2152":1,"2255":1,"2428":1,"2451":1,"2471":1,"2513":1},"1":{"626":1,"627":1,"628":1,"629":1,"1338":1,"1339":1,"1340":1,"1347":1,"1348":1,"1349":1,"1350":1,"1351":1,"1352":1,"2084":1,"2088":1,"2147":1,"2148":1,"2149":1,"2429":1,"2430":1,"2431":1,"2432":1,"2433":1,"2434":1,"2435":1,"2436":1,"2437":1,"2438":1,"2439":1,"2440":1,"2452":1,"2453":1,"2472":1},"2":{"1":1,"5":1,"6":2,"7":2,"8":1,"11":1,"25":1,"27":1,"30":2,"31":5,"33":2,"34":2,"36":1,"49":3,"50":1,"60":1,"69":1,"72":1,"77":1,"83":1,"84":1,"86":1,"92":1,"93":1,"98":4,"100":1,"107":1,"111":1,"114":11,"119":2,"123":1,"124":1,"126":1,"131":2,"134":6,"138":1,"149":7,"153":1,"154":1,"156":1,"157":1,"160":4,"163":2,"166":1,"167":1,"172":1,"173":3,"175":2,"176":9,"182":5,"186":1,"189":1,"190":1,"191":6,"194":2,"195":1,"196":1,"198":1,"199":7,"201":1,"211":9,"218":1,"221":1,"222":5,"230":2,"231":2,"236":1,"240":3,"241":1,"243":1,"244":1,"249":8,"253":1,"254":1,"263":1,"264":1,"265":1,"266":4,"268":1,"270":1,"273":3,"274":1,"276":1,"277":1,"282":1,"291":1,"292":2,"294":1,"304":1,"317":2,"322":1,"324":1,"331":2,"340":1,"341":4,"347":1,"349":1,"350":1,"352":1,"357":1,"360":1,"361":2,"363":1,"366":1,"367":1,"370":7,"371":2,"374":1,"375":1,"377":1,"380":2,"389":1,"390":1,"391":1,"400":3,"416":3,"428":1,"430":1,"431":1,"435":2,"437":1,"453":2,"455":3,"462":2,"468":2,"472":1,"473":1,"477":1,"479":2,"481":2,"483":2,"485":1,"486":3,"488":1,"489":1,"493":1,"495":1,"502":7,"505":1,"508":1,"509":3,"510":1,"511":2,"514":1,"515":2,"522":2,"541":2,"545":1,"546":1,"551":1,"552":2,"554":6,"555":2,"556":4,"559":2,"560":3,"562":1,"563":1,"568":1,"584":1,"585":1,"587":1,"606":1,"610":1,"611":1,"613":2,"616":2,"621":1,"624":1,"625":2,"626":2,"627":2,"628":2,"629":2,"633":1,"635":1,"643":1,"654":1,"656":4,"657":1,"659":1,"661":2,"662":2,"665":1,"689":3,"692":1,"696":3,"714":1,"717":1,"720":1,"723":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1121":1,"1122":1,"1126":1,"1129":4,"1132":1,"1133":2,"1134":2,"1136":1,"1139":1,"1144":1,"1176":1,"1201":1,"1213":1,"1215":2,"1217":2,"1234":1,"1235":1,"1238":4,"1239":2,"1241":1,"1242":2,"1254":3,"1255":2,"1257":1,"1258":1,"1261":1,"1264":1,"1265":2,"1270":2,"1281":1,"1284":1,"1287":1,"1288":1,"1290":1,"1293":1,"1294":1,"1299":2,"1300":8,"1302":1,"1303":2,"1313":1,"1319":1,"1323":1,"1324":1,"1325":2,"1326":1,"1328":1,"1329":2,"1330":1,"1331":1,"1332":1,"1335":4,"1337":1,"1338":2,"1344":1,"1346":2,"1348":1,"1351":1,"1352":1,"1359":1,"1361":1,"1362":1,"1363":1,"1368":1,"1369":1,"1370":1,"1375":1,"1376":3,"1377":1,"1378":3,"1380":3,"1385":3,"1387":1,"1388":2,"1390":2,"1391":2,"1392":1,"1393":3,"1395":2,"1397":1,"1398":1,"1399":2,"1403":3,"1411":2,"1412":1,"1413":1,"1416":3,"1431":2,"1435":4,"1436":3,"1438":1,"1440":2,"1445":1,"1448":1,"1451":14,"1452":2,"1466":1,"1467":2,"1491":2,"1492":3,"1495":1,"1498":1,"1500":2,"1501":1,"1503":3,"1506":1,"1508":2,"1509":1,"1510":1,"1511":2,"1515":2,"1516":3,"1518":2,"1521":1,"1524":1,"1525":1,"1527":1,"1530":6,"1531":1,"1537":1,"1548":1,"1552":1,"1554":1,"1556":1,"1557":2,"1558":1,"1559":1,"1563":2,"1564":1,"1570":1,"1573":1,"1576":1,"1578":1,"1580":1,"1581":1,"1582":2,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"1589":1,"1635":3,"1636":1,"1637":1,"1638":1,"1655":2,"1659":1,"1665":5,"1666":1,"1668":2,"1670":2,"1671":1,"1675":2,"1676":3,"1677":1,"1683":2,"1719":1,"1722":3,"1725":1,"1729":2,"1731":1,"1733":1,"1787":1,"1802":1,"1804":1,"1808":2,"1809":1,"1813":2,"1814":2,"1815":1,"1817":1,"1820":7,"1821":2,"1822":2,"1830":1,"1857":1,"1858":1,"1859":1,"1863":2,"1867":1,"1868":2,"1870":1,"1872":3,"1873":1,"1880":2,"1882":1,"1884":1,"1885":3,"1888":1,"1893":1,"1894":1,"1908":1,"1912":1,"1915":1,"1918":1,"1921":2,"1923":3,"1929":2,"1932":3,"1933":1,"1935":1,"1938":1,"1939":1,"1940":3,"1943":1,"1946":1,"1948":2,"1949":2,"1951":2,"1952":2,"1955":1,"1957":1,"1958":2,"1960":1,"2031":2,"2032":1,"2034":1,"2040":1,"2042":4,"2045":1,"2059":1,"2062":1,"2063":1,"2072":2,"2075":2,"2081":1,"2083":1,"2085":1,"2087":2,"2100":2,"2101":2,"2103":7,"2105":2,"2106":8,"2107":3,"2108":1,"2110":1,"2117":1,"2120":1,"2125":1,"2126":9,"2127":2,"2128":1,"2130":4,"2131":4,"2132":1,"2133":1,"2139":1,"2142":1,"2143":1,"2144":2,"2145":1,"2146":1,"2150":2,"2153":1,"2160":1,"2161":5,"2162":1,"2168":2,"2169":3,"2171":6,"2176":1,"2178":1,"2179":3,"2182":3,"2183":2,"2229":1,"2230":2,"2231":2,"2232":1,"2233":3,"2234":2,"2235":1,"2236":2,"2237":1,"2238":3,"2240":3,"2241":1,"2242":2,"2243":1,"2244":1,"2245":1,"2247":1,"2249":3,"2252":1,"2255":5,"2256":4,"2257":1,"2262":3,"2263":4,"2267":1,"2268":2,"2269":1,"2270":4,"2272":2,"2273":1,"2276":1,"2277":1,"2279":2,"2290":1,"2294":1,"2295":1,"2301":2,"2302":1,"2303":1,"2310":1,"2311":1,"2314":1,"2316":1,"2318":1,"2320":1,"2322":1,"2327":1,"2328":1,"2331":1,"2335":2,"2341":2,"2344":1,"2349":1,"2350":1,"2351":2,"2367":1,"2385":1,"2396":1,"2397":1,"2401":1,"2402":2,"2404":1,"2406":1,"2407":2,"2410":1,"2413":2,"2414":1,"2415":1,"2420":1,"2421":3,"2422":1,"2425":1,"2427":2,"2428":4,"2429":1,"2430":1,"2431":1,"2432":1,"2435":1,"2437":5,"2438":2,"2441":1,"2443":1,"2451":1,"2452":1,"2455":2,"2457":3,"2468":2,"2469":2,"2473":2,"2474":5,"2475":1,"2477":4,"2479":1,"2480":1,"2490":1,"2491":1,"2492":1,"2494":1,"2498":1,"2501":2,"2508":1,"2510":1,"2513":3,"2517":1,"2518":3,"2519":1,"2521":1,"2523":1,"2524":1,"2526":1,"2529":1,"2530":2,"2544":4,"2546":2,"2548":1,"2549":1,"2550":1,"2552":1,"2553":3,"2557":1,"2563":2,"2564":6,"2565":1,"2566":6,"2567":1,"2568":1,"2570":1,"2573":1,"2575":1,"2576":22,"2577":12,"2578":3,"2581":2,"2584":1,"2587":1,"2595":1,"2596":1,"2598":1,"2599":1,"2600":3,"2610":1,"2615":1,"2616":1,"2619":1,"2634":1,"2637":1,"2647":1,"2648":1,"2655":1,"2670":2,"2671":2,"2674":1,"2686":1,"2688":1,"2695":1,"2703":2,"2706":3,"2709":1,"2710":1,"2711":1,"2713":1,"2714":1,"2719":1,"2720":1,"2722":1,"2725":1,"2726":1,"2728":5,"2730":1,"2735":1,"2736":1,"2737":2,"2738":2,"2740":1,"2742":1,"2743":1,"2746":3,"2747":1,"2754":1,"2755":3,"2757":3}}],["wild",{"2":{"2160":1}}],["wildcard",{"2":{"411":1}}],["wildcards",{"2":{"374":1}}],["wilba",{"2":{"191":1,"199":1,"211":23,"2566":3}}],["willing",{"2":{"2569":1}}],["willoucom",{"2":{"222":1}}],["will",{"0":{"341":1,"2720":1,"2721":1},"2":{"0":1,"5":1,"7":1,"9":1,"10":1,"14":1,"19":1,"21":1,"22":1,"23":3,"39":1,"45":1,"49":1,"52":1,"70":1,"88":3,"89":1,"90":3,"103":1,"104":3,"105":2,"107":1,"110":2,"120":1,"126":1,"127":3,"132":3,"152":1,"153":1,"156":1,"170":3,"182":2,"195":2,"198":1,"201":1,"203":2,"206":1,"209":3,"213":3,"218":1,"220":1,"228":1,"230":1,"240":2,"255":1,"256":1,"262":1,"263":2,"265":3,"272":1,"273":1,"275":1,"276":1,"291":1,"303":1,"316":1,"322":1,"331":3,"334":2,"336":1,"337":2,"341":1,"345":1,"350":5,"355":1,"358":2,"364":1,"365":1,"366":1,"370":2,"371":1,"373":1,"377":1,"378":1,"381":1,"383":1,"385":2,"386":1,"387":1,"405":1,"415":1,"424":1,"429":2,"430":4,"431":1,"433":1,"435":2,"441":1,"446":2,"447":1,"448":1,"450":2,"452":1,"454":3,"468":2,"474":2,"478":1,"487":1,"496":1,"497":1,"501":1,"502":1,"503":1,"504":2,"506":2,"512":1,"515":2,"519":1,"522":2,"525":1,"526":1,"527":1,"530":1,"533":1,"534":1,"537":1,"538":1,"540":1,"541":2,"542":1,"554":2,"556":1,"560":2,"562":1,"567":1,"568":1,"570":1,"571":3,"574":1,"580":4,"584":1,"586":1,"588":1,"590":2,"592":3,"593":1,"594":1,"597":1,"598":3,"599":1,"600":1,"606":1,"607":1,"613":1,"615":2,"616":2,"617":1,"625":1,"626":2,"628":2,"639":3,"641":2,"661":1,"663":1,"681":4,"684":1,"685":1,"689":3,"692":1,"701":3,"726":1,"727":1,"1132":1,"1133":1,"1138":2,"1181":1,"1194":1,"1205":1,"1210":1,"1217":1,"1221":1,"1227":1,"1235":1,"1238":1,"1242":1,"1243":1,"1245":1,"1252":1,"1254":2,"1258":1,"1269":1,"1270":4,"1287":2,"1288":1,"1289":1,"1290":1,"1299":2,"1302":1,"1312":2,"1325":4,"1326":2,"1328":1,"1332":6,"1335":2,"1336":2,"1338":2,"1340":3,"1344":1,"1346":1,"1353":1,"1359":1,"1361":1,"1367":1,"1371":1,"1372":1,"1373":1,"1375":5,"1376":1,"1377":2,"1378":1,"1379":2,"1380":1,"1383":1,"1385":7,"1396":1,"1398":2,"1403":2,"1404":2,"1405":2,"1406":4,"1411":2,"1412":3,"1414":1,"1416":4,"1431":5,"1433":1,"1435":1,"1439":1,"1440":3,"1441":1,"1445":2,"1446":2,"1448":2,"1457":1,"1459":1,"1495":2,"1499":2,"1508":1,"1509":1,"1510":1,"1511":1,"1515":1,"1525":5,"1527":1,"1533":1,"1548":1,"1553":1,"1558":2,"1559":1,"1560":3,"1562":1,"1563":1,"1564":2,"1565":3,"1567":1,"1568":1,"1570":1,"1572":1,"1573":4,"1577":1,"1579":4,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"1591":1,"1605":1,"1621":2,"1630":2,"1633":1,"1665":7,"1670":5,"1671":3,"1673":2,"1674":1,"1675":3,"1677":3,"1684":1,"1685":1,"1686":2,"1714":1,"1716":3,"1718":1,"1719":1,"1730":2,"1743":1,"1745":1,"1787":2,"1791":1,"1794":1,"1803":3,"1804":3,"1808":2,"1815":2,"1817":1,"1821":1,"1822":2,"1825":1,"1863":2,"1866":1,"1871":1,"1872":3,"1873":1,"1875":1,"1876":3,"1880":3,"1882":1,"1884":2,"1885":3,"1886":3,"1887":2,"1892":1,"1894":2,"1898":1,"1900":4,"1910":1,"1912":4,"1918":1,"1921":1,"1938":1,"1940":1,"1948":2,"1950":1,"1951":3,"1954":2,"1958":1,"1959":1,"1960":1,"1970":1,"1972":1,"2034":1,"2035":1,"2041":1,"2042":4,"2044":3,"2061":1,"2062":1,"2063":2,"2066":1,"2067":1,"2072":1,"2074":1,"2075":1,"2106":1,"2108":1,"2114":1,"2117":2,"2121":1,"2124":1,"2125":3,"2126":2,"2128":2,"2129":1,"2130":1,"2131":4,"2133":1,"2139":2,"2141":1,"2143":2,"2146":2,"2149":1,"2150":1,"2152":3,"2153":2,"2156":1,"2161":6,"2169":3,"2171":1,"2175":1,"2177":1,"2181":4,"2182":3,"2183":3,"2199":1,"2225":1,"2226":5,"2229":3,"2230":2,"2231":1,"2234":1,"2237":1,"2238":2,"2244":1,"2250":1,"2252":3,"2255":1,"2260":1,"2261":1,"2262":6,"2263":7,"2264":1,"2266":1,"2267":1,"2268":3,"2271":1,"2272":3,"2273":7,"2274":1,"2276":1,"2279":1,"2280":1,"2293":1,"2295":2,"2299":1,"2301":2,"2302":1,"2303":1,"2305":2,"2308":1,"2311":5,"2312":1,"2316":2,"2327":1,"2328":1,"2329":1,"2333":1,"2335":1,"2342":2,"2346":1,"2347":1,"2351":3,"2352":1,"2355":1,"2398":1,"2404":1,"2405":1,"2408":2,"2411":2,"2413":1,"2418":1,"2420":1,"2423":1,"2425":2,"2427":2,"2428":2,"2431":2,"2432":1,"2433":1,"2435":1,"2436":1,"2437":1,"2438":1,"2439":2,"2440":2,"2441":2,"2442":2,"2443":1,"2446":1,"2447":2,"2448":2,"2450":3,"2451":1,"2452":1,"2453":1,"2454":2,"2455":2,"2457":1,"2459":2,"2460":1,"2461":1,"2462":2,"2463":1,"2464":1,"2468":5,"2472":1,"2474":1,"2475":1,"2477":3,"2480":1,"2481":1,"2490":5,"2491":1,"2495":1,"2496":2,"2497":1,"2498":2,"2501":1,"2502":2,"2504":1,"2506":1,"2508":2,"2513":5,"2522":1,"2529":1,"2543":1,"2546":1,"2548":4,"2550":1,"2552":1,"2553":1,"2556":3,"2563":1,"2564":5,"2565":2,"2566":6,"2567":3,"2568":1,"2569":1,"2570":1,"2571":2,"2573":2,"2574":4,"2575":1,"2576":1,"2577":7,"2581":1,"2601":1,"2605":3,"2607":1,"2615":4,"2633":1,"2662":1,"2672":2,"2686":1,"2688":1,"2695":1,"2702":6,"2706":1,"2716":1,"2719":2,"2720":4,"2721":2,"2723":1,"2728":3,"2729":1,"2734":2,"2735":6,"2736":3,"2737":7,"2738":7,"2743":4,"2744":2,"2745":1,"2746":1,"2748":1,"2749":1,"2753":1,"2754":2,"2757":3}}],["wise",{"2":{"691":1,"703":1,"1177":1,"1198":1}}],["wisdom",{"2":{"179":1}}],["wished",{"2":{"530":1}}],["wishing",{"2":{"427":1}}],["wish",{"2":{"1":1,"152":1,"206":1,"231":1,"232":1,"265":1,"401":1,"500":1,"1380":1,"1560":1,"1666":1,"1922":1,"1948":1,"2034":1,"2120":1,"2149":1,"2261":2,"2441":1,"2442":2,"2443":1,"2451":1,"2524":1,"2525":1,"2542":1}}],["widht",{"2":{"1440":2}}],["width",{"2":{"111":1,"114":1,"617":1,"689":1,"690":1,"691":1,"1440":2,"1454":1,"1807":1,"1817":2,"1820":3,"1821":3,"1822":1,"1859":2,"2141":2,"2142":3,"2576":13,"2577":8,"2588":4,"2594":1,"2615":1,"2686":1,"2702":1}}],["widely",{"2":{"2492":1,"2548":1}}],["wider",{"2":{"352":1,"453":1,"455":2}}],["widen",{"2":{"191":1}}],["wide",{"0":{"451":1,"452":1},"2":{"77":1,"188":1,"617":1,"1728":3,"1949":3,"2502":1,"2544":1,"2577":3,"2619":1,"2708":1,"2710":1}}],["winc",{"2":{"2179":1,"2180":1,"2184":1,"2196":1,"2384":1}}],["wincompose",{"2":{"191":1,"2179":1,"2180":1,"2183":4,"2184":2,"2196":1,"2197":1,"2198":1,"2384":2}}],["window",{"2":{"331":3,"350":2,"628":1,"1137":1,"1516":2,"1518":2,"1567":1,"1803":1,"2347":1,"2404":1,"2420":1,"2425":1,"2454":1,"2502":1,"2508":2,"2539":1}}],["windows",{"0":{"240":1,"326":1,"2254":1,"2505":1},"1":{"2506":1,"2507":1,"2508":1},"2":{"73":1,"158":1,"240":1,"326":2,"331":1,"399":1,"454":1,"625":1,"627":1,"629":1,"1241":1,"1249":1,"1273":1,"1283":1,"1292":1,"1375":1,"1567":1,"1568":1,"1673":1,"1825":1,"1826":1,"1832":1,"1921":1,"2180":1,"2183":5,"2184":3,"2237":1,"2245":1,"2247":1,"2249":1,"2254":6,"2343":1,"2347":2,"2351":1,"2355":4,"2384":3,"2390":2,"2392":1,"2398":1,"2410":2,"2411":1,"2429":1,"2435":2,"2451":1,"2452":1,"2457":1,"2463":1,"2503":1,"2506":3,"2508":2,"2513":4,"2556":1}}],["winusb",{"2":{"240":2,"629":12}}],["wings",{"2":{"211":2,"266":1}}],["wings42",{"2":{"143":6}}],["winkeyless",{"2":{"211":1}}],["winkeys",{"2":{"211":1}}],["winni",{"2":{"211":1}}],["winry315",{"2":{"277":1}}],["winry",{"2":{"143":1,"149":1}}],["winry25tc",{"2":{"143":2,"149":1}}],["wins",{"2":{"70":13}}],["win",{"2":{"70":1,"134":1,"266":1,"1565":1,"2180":1,"2184":1,"2374":1,"2384":1,"2410":1}}],["wired",{"2":{"506":2,"1236":1,"1392":1,"1459":1,"1471":1,"1551":1,"1561":2,"1857":1,"2118":1,"2131":1,"2274":1,"2330":1,"2332":1,"2334":1,"2664":1,"2668":1,"2740":1}}],["wires",{"2":{"334":1,"1121":1,"1129":1,"2117":2,"2118":4,"2119":1,"2120":1,"2272":1,"2274":5,"2275":1,"2276":4,"2279":2,"2328":2}}],["wireless",{"2":{"241":1,"2566":10,"2626":2}}],["wire",{"2":{"45":2,"114":1,"334":1,"1121":5,"1123":1,"1126":1,"1212":2,"1216":1,"1319":1,"2031":2,"2061":1,"2134":1,"2266":3,"2267":1,"2268":3,"2270":9,"2272":1,"2273":2,"2274":5,"2279":1,"2281":1,"2311":3,"2313":1}}],["wiring",{"0":{"45":1,"1388":1,"1391":1,"1395":1,"2119":1,"2120":1,"2265":1,"2270":1,"2275":1,"2330":1,"2332":1,"2334":1,"2336":1,"2338":1,"2340":1,"2352":1},"1":{"1392":1,"2266":1,"2267":1,"2268":1,"2269":1,"2270":1,"2271":2,"2272":2,"2273":2,"2274":2,"2275":1,"2276":2,"2277":1,"2278":1,"2279":1,"2280":1,"2281":1},"2":{"45":3,"134":1,"656":1,"1391":1,"1395":1,"1573":1,"1822":2,"1870":1,"1949":1,"2143":2,"2267":1,"2270":1,"2272":1,"2274":1,"2279":1,"2281":1,"2328":1,"2353":1,"2513":1,"2559":1,"2648":1}}],["welcomed",{"2":{"2569":1}}],["welcome",{"2":{"2498":1}}],["well",{"2":{"49":1,"50":2,"90":1,"107":1,"131":1,"132":1,"152":1,"153":1,"173":1,"198":1,"201":1,"213":1,"215":1,"224":1,"229":1,"232":1,"243":1,"249":1,"263":1,"265":1,"272":1,"331":1,"336":1,"374":2,"435":1,"512":1,"552":1,"560":1,"606":1,"629":1,"639":1,"691":1,"1127":1,"1130":1,"1303":1,"1334":1,"1347":1,"1385":1,"1396":1,"1403":1,"1411":1,"1416":1,"1447":1,"1453":1,"1500":1,"1573":1,"1675":1,"1676":1,"1716":1,"1722":1,"1870":1,"1900":1,"1939":1,"1950":1,"2102":2,"2114":1,"2150":1,"2162":1,"2169":1,"2181":1,"2231":1,"2238":1,"2252":1,"2263":2,"2267":1,"2292":1,"2306":1,"2347":1,"2353":1,"2367":1,"2442":1,"2546":1,"2571":1,"2573":2,"2708":1,"2740":1}}],["wetting",{"2":{"2272":1}}],["wet",{"2":{"2272":1}}],["wete",{"2":{"197":4}}],["west",{"2":{"1915":1}}],["westberrytech",{"0":{"490":1},"2":{"130":1,"134":1}}],["week",{"0":{"345":1},"2":{"350":1}}],["weeks",{"0":{"343":1,"344":1},"2":{"228":1,"350":7}}],["webhost",{"2":{"2474":3}}],["webpage",{"2":{"1238":1}}],["web",{"2":{"302":1,"318":1,"517":1,"557":1,"602":1,"1304":1,"2169":1,"2282":1,"2430":1}}],["website",{"2":{"70":1,"2270":1,"2277":1,"2279":1,"2281":1,"2297":1,"2637":1}}],["weighting",{"2":{"1857":1}}],["weight",{"2":{"1576":2,"1577":3,"2152":1}}],["weights",{"2":{"249":1,"1857":6}}],["weird",{"2":{"1403":1,"2610":1}}],["weirdo",{"2":{"143":7,"149":2,"211":1}}],["werror=array",{"2":{"160":1}}],["weren",{"2":{"199":1}}],["were",{"2":{"98":1,"128":1,"131":1,"166":1,"175":1,"186":1,"188":1,"204":1,"229":1,"234":2,"244":1,"251":1,"254":1,"256":1,"263":2,"268":1,"272":1,"273":1,"453":1,"455":1,"1338":1,"1412":1,"1430":1,"1451":1,"1498":1,"1510":1,"1675":1,"1882":1,"1912":1,"1929":1,"1933":1,"1940":1,"1941":1,"2036":1,"2133":1,"2427":1,"2474":2,"2575":1,"2620":1,"2708":1,"2735":1}}],["went",{"2":{"125":1,"185":1,"1821":1}}],["wealthier",{"2":{"1441":2}}],["weact",{"0":{"2514":1},"1":{"2515":1,"2516":1,"2517":1,"2518":1,"2519":1,"2520":1,"2521":1,"2522":1},"2":{"489":2,"2514":3,"2522":1,"2709":1}}],["wear",{"0":{"174":1,"687":1,"688":1,"689":1,"690":1,"691":1,"692":1},"1":{"689":1,"690":1,"691":1,"692":1},"2":{"114":1,"174":1,"176":4,"191":1,"211":1,"236":5,"249":1,"277":1,"681":2,"687":3,"688":6,"689":8,"690":7,"691":5,"2683":3}}],["weakly",{"2":{"707":1,"726":1,"1497":1,"2196":1,"2197":1,"2198":1}}],["weak",{"0":{"1284":1},"2":{"65":1,"93":1,"114":1,"149":2,"191":1,"222":1,"511":1,"566":4,"1284":7,"1383":2,"1385":1,"1430":2,"1445":1,"1506":2,"1581":1,"1822":2,"2129":1,"2143":4,"2228":3,"2566":1,"2706":1}}],["we",{"0":{"1409":1,"2283":1,"2740":1},"1":{"1410":1,"1411":1,"1412":1,"1413":1,"1414":1,"1415":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"1423":1,"1424":1,"1425":1,"1426":1,"1427":1,"1428":1,"1429":1,"1430":1,"1431":1,"1432":1,"1433":1,"1434":1,"1435":1,"1436":1},"2":{"0":1,"9":1,"19":1,"39":1,"50":2,"51":1,"52":1,"83":1,"89":1,"92":1,"93":1,"111":1,"112":1,"172":1,"188":2,"194":2,"213":1,"224":1,"228":1,"245":2,"263":1,"273":1,"277":1,"314":1,"322":1,"331":7,"334":3,"337":3,"342":1,"344":1,"345":1,"346":1,"363":1,"364":1,"367":1,"430":6,"433":1,"436":1,"440":1,"442":1,"445":1,"446":2,"447":1,"453":6,"454":1,"455":5,"456":1,"457":4,"459":1,"462":1,"468":1,"470":3,"471":1,"478":1,"479":2,"480":2,"481":1,"483":1,"484":1,"485":1,"496":1,"512":1,"530":2,"537":1,"549":1,"550":2,"551":1,"556":2,"557":1,"559":1,"560":3,"561":2,"562":1,"568":2,"602":1,"606":4,"611":2,"612":1,"625":1,"641":4,"661":1,"1236":1,"1243":1,"1257":1,"1262":1,"1263":1,"1264":2,"1304":1,"1320":1,"1326":1,"1332":5,"1337":1,"1344":2,"1359":8,"1360":1,"1375":1,"1385":1,"1412":7,"1431":1,"1438":4,"1441":1,"1451":7,"1452":1,"1527":1,"1528":1,"1549":1,"1553":1,"1815":2,"1820":1,"1821":2,"1827":1,"1882":2,"1923":1,"2042":4,"2043":1,"2044":2,"2114":1,"2139":2,"2162":3,"2168":2,"2171":4,"2231":1,"2238":1,"2255":1,"2267":1,"2274":1,"2276":2,"2282":1,"2286":1,"2292":2,"2293":2,"2303":1,"2304":1,"2305":2,"2307":3,"2311":9,"2404":1,"2405":1,"2407":1,"2408":1,"2409":1,"2417":1,"2418":1,"2419":1,"2420":1,"2458":1,"2468":1,"2472":2,"2474":4,"2479":1,"2496":1,"2502":2,"2506":1,"2507":1,"2508":1,"2512":1,"2519":1,"2566":1,"2568":1,"2569":3,"2571":1,"2614":3,"2615":3,"2616":1,"2656":1,"2726":1,"2735":2,"2740":2,"2746":5,"2747":2,"2748":3,"2749":1}}],["i+7",{"2":{"2577":1}}],["i+=8",{"2":{"2577":3}}],["i++",{"2":{"1729":2,"1815":1,"1816":1,"1952":2,"1958":2,"1959":1,"2139":1}}],["i2s",{"2":{"2528":1}}],["i2c0",{"2":{"2536":2}}],["i2cv2",{"0":{"705":1},"2":{"705":1}}],["i2cv1",{"0":{"704":1},"2":{"704":1}}],["i2cd0",{"2":{"2536":1}}],["i2cd1",{"2":{"703":2,"2536":1,"2541":1}}],["i2cd2",{"2":{"199":1,"703":1}}],["i2c3",{"2":{"703":1}}],["i2c2",{"2":{"703":4}}],["i2c1",{"2":{"703":6,"704":3,"705":5,"2536":2,"2541":2}}],["i2c",{"0":{"244":1,"684":1,"699":1,"701":1,"707":1,"708":2,"711":2,"714":2,"717":2,"720":2,"723":2,"726":2,"1220":1,"1818":1,"2120":1,"2291":1,"2536":1},"1":{"700":1,"701":1,"702":1,"703":1,"704":1,"705":1,"706":1,"707":1,"708":1,"709":3,"710":3,"711":1,"712":3,"713":3,"714":1,"715":3,"716":3,"717":1,"718":3,"719":3,"720":1,"721":3,"722":3,"723":1,"724":3,"725":3,"726":1,"727":3,"728":3},"2":{"30":1,"33":2,"45":1,"75":1,"92":1,"114":1,"118":2,"134":4,"149":1,"176":5,"191":1,"199":2,"211":1,"232":1,"234":4,"236":4,"244":9,"249":7,"266":1,"293":1,"502":2,"511":3,"681":2,"684":19,"699":1,"700":3,"701":4,"702":3,"703":14,"704":1,"707":4,"708":1,"709":1,"710":3,"711":1,"712":1,"713":3,"714":1,"715":1,"716":3,"717":1,"718":1,"719":3,"720":1,"721":1,"722":3,"723":1,"724":1,"725":3,"726":2,"727":1,"728":3,"730":1,"731":2,"732":1,"756":1,"757":6,"758":5,"785":1,"786":6,"787":5,"817":1,"818":6,"819":5,"849":1,"850":6,"851":17,"884":1,"885":6,"886":17,"918":1,"919":6,"920":5,"952":1,"953":6,"954":5,"986":1,"987":6,"988":5,"1020":1,"1021":6,"1022":17,"1054":1,"1055":6,"1056":17,"1088":1,"1089":6,"1090":17,"1144":1,"1145":6,"1146":5,"1214":1,"1218":1,"1220":6,"1319":1,"1574":1,"1811":1,"1813":3,"1818":1,"1821":1,"1859":3,"1862":2,"1863":3,"1868":3,"2114":2,"2115":1,"2117":1,"2128":4,"2276":1,"2289":1,"2291":1,"2528":1,"2531":2,"2534":1,"2536":4,"2541":3,"2564":1,"2573":6,"2576":10,"2683":1,"2697":1,"2700":5}}],["ipad",{"2":{"2299":1}}],["iphone",{"2":{"2299":1}}],["ipsum",{"2":{"301":1}}],["ignoring",{"0":{"1936":1,"1937":1},"1":{"1937":1,"1938":1,"1939":1},"2":{"1897":1}}],["ignores",{"2":{"1281":1,"1283":1,"1937":1,"1939":1,"2729":1}}],["ignored",{"2":{"393":2,"394":2,"1326":1,"1440":1,"1446":1,"1857":1,"1885":1,"1936":2,"1937":1,"2042":1,"2066":1,"2348":1,"2398":1,"2587":1}}],["ignore",{"0":{"194":1,"206":1},"2":{"22":2,"112":2,"160":1,"194":11,"199":2,"206":2,"211":1,"249":1,"331":1,"334":1,"1894":1,"1937":1,"1939":1,"1943":1,"2042":1,"2125":1,"2355":1,"2395":1,"2413":1,"2468":1}}],["iqs572",{"2":{"1858":1}}],["iqs550",{"2":{"1858":1}}],["iqs525",{"2":{"1858":1}}],["iqs5xx",{"0":{"1858":1},"1":{"1859":1,"1860":1,"1861":1},"2":{"236":1,"1858":2,"1859":9,"1860":17,"1861":3}}],["icsp",{"2":{"2339":1}}],["ics",{"2":{"1811":1,"2230":1}}],["ice",{"2":{"1807":1}}],["icelandic",{"2":{"1355":1,"2712":3}}],["ic",{"2":{"1143":1,"1464":1,"1589":2,"1811":1,"1817":5,"1820":3,"2136":2}}],["icon",{"2":{"336":1,"2460":2}}],["i²c",{"0":{"732":1,"758":1,"787":1,"819":1,"851":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1056":1,"1090":1,"1146":1},"2":{"729":1,"731":2,"732":1,"733":1,"755":1,"757":6,"758":1,"759":1,"784":1,"786":6,"787":1,"789":1,"816":1,"818":6,"819":1,"823":1,"848":1,"850":6,"851":1,"856":1,"883":1,"885":6,"886":1,"890":1,"917":1,"919":6,"920":1,"924":1,"951":1,"953":6,"954":1,"958":1,"985":1,"987":6,"988":1,"992":1,"1019":1,"1021":6,"1022":1,"1026":1,"1053":1,"1055":6,"1056":1,"1060":1,"1087":1,"1089":6,"1090":1,"1094":1,"1143":1,"1145":6,"1146":1,"1147":1,"2700":2}}],["ie",{"2":{"676":1,"727":1,"742":1,"746":1,"750":1,"752":1,"769":1,"773":1,"777":1,"779":1,"801":1,"805":1,"809":1,"811":1,"833":1,"837":1,"841":1,"843":1,"868":1,"872":1,"876":1,"878":1,"902":1,"906":1,"910":1,"912":1,"936":1,"940":1,"944":1,"946":1,"970":1,"974":1,"978":1,"980":1,"1004":1,"1008":1,"1012":1,"1014":1,"1038":1,"1042":1,"1046":1,"1048":1,"1072":1,"1076":1,"1080":1,"1082":1,"1106":1,"1110":1,"1114":1,"1116":1,"1159":1,"1163":1,"1167":1,"1169":1,"1205":1,"1219":1,"1537":1,"1573":1,"1610":1,"2463":1}}],["ijk",{"2":{"266":1}}],["ii",{"2":{"199":1,"211":1}}],["iie",{"2":{"181":2}}],["i64",{"2":{"191":1}}],["ireland",{"2":{"2712":1}}],["irene",{"2":{"211":1}}],["iron",{"2":{"2266":1,"2272":5,"2273":1,"2274":1}}],["irony",{"2":{"2181":2}}],["iron180",{"2":{"211":2,"249":1}}],["ir",{"2":{"1870":1}}],["irregular",{"2":{"563":1}}],["irrelevant",{"2":{"244":1}}],["irq",{"2":{"191":1,"236":1,"703":1,"1492":1}}],["irqs",{"2":{"176":1}}],["irish",{"2":{"2712":1}}],["iris60",{"2":{"211":1}}],["iris",{"2":{"45":1,"134":1,"199":1,"211":2,"266":2,"277":1}}],["ik75",{"2":{"176":1}}],["imagine",{"2":{"1684":1,"1725":1,"1946":1,"2614":1}}],["image",{"0":{"409":1,"410":1,"2303":1},"2":{"410":1,"623":4,"786":1,"1243":1,"2268":1,"2270":1,"2544":1,"2554":1,"2566":3,"2575":14,"2577":55,"2592":1,"2594":2,"2596":2,"2598":5,"2599":1}}],["images",{"0":{"281":1},"2":{"153":3,"408":1,"623":1,"1264":1,"2260":1,"2554":1,"2566":2,"2573":2,"2574":2,"2575":2,"2577":5,"2585":1,"2592":1}}],["imcompatible",{"2":{"1125":1}}],["imgur",{"2":{"623":2,"624":1,"2260":1,"2303":1,"2554":1,"2566":4}}],["imera",{"2":{"249":1,"1311":1,"1315":4,"2709":1}}],["immediate",{"2":{"559":1,"1329":3}}],["immediately",{"2":{"230":1,"259":1,"349":1,"592":1,"647":1,"675":1,"741":1,"745":1,"749":1,"751":1,"768":1,"772":1,"776":1,"778":1,"800":1,"804":1,"808":1,"810":1,"832":1,"836":1,"840":1,"842":1,"867":1,"871":1,"875":1,"877":1,"901":1,"905":1,"909":1,"911":1,"935":1,"939":1,"943":1,"945":1,"969":1,"973":1,"977":1,"979":1,"1003":1,"1007":1,"1011":1,"1013":1,"1037":1,"1041":1,"1045":1,"1047":1,"1071":1,"1075":1,"1079":1,"1081":1,"1105":1,"1109":1,"1113":1,"1115":1,"1158":1,"1162":1,"1166":1,"1168":1,"1210":1,"1273":1,"1300":2,"1326":1,"1332":3,"1411":1,"1451":1,"1518":1,"1675":1,"2162":1,"2490":2,"2577":1,"2595":1,"2596":2,"2606":1,"2711":1,"2728":1,"2729":3,"2735":1,"2736":1}}],["immutable",{"2":{"474":1}}],["immune",{"2":{"231":1}}],["impossible",{"2":{"1287":1,"1336":1,"1683":1,"2302":1}}],["imported",{"2":{"389":1,"390":1,"391":1,"2268":1,"2277":1,"2564":1}}],["importer",{"2":{"176":1}}],["important",{"0":{"340":1,"619":1},"2":{"433":1,"453":1,"467":1,"537":1,"560":2,"568":1,"619":2,"1300":1,"1338":1,"1375":1,"1435":1,"1448":1,"1525":1,"1533":1,"1959":1,"2226":1,"2436":1,"2450":1,"2711":1,"2728":1}}],["imports",{"0":{"457":1},"1":{"458":1},"2":{"236":1,"389":1,"390":1,"457":1}}],["importing",{"0":{"2501":1},"2":{"173":1,"389":1,"390":1,"391":1,"457":2,"2277":1,"2501":1}}],["import",{"0":{"173":1,"389":1,"390":1,"391":1,"458":1},"2":{"173":4,"176":1,"292":1,"331":2,"389":2,"390":2,"391":2,"430":2,"457":8,"458":4,"479":1,"1923":1,"2277":3,"2427":1,"2566":1}}],["impedance",{"2":{"696":1}}],["impls",{"2":{"1729":2,"1952":2}}],["impls\`",{"2":{"1729":1,"1952":1}}],["impliments",{"2":{"2289":1}}],["implied",{"2":{"1380":1,"2570":1}}],["implies",{"2":{"1236":1,"1397":1,"2131":1}}],["implicitly",{"2":{"506":1}}],["implicit",{"2":{"467":1,"476":1,"2711":1}}],["implications",{"2":{"352":2,"355":1}}],["implementing",{"0":{"1330":1},"2":{"277":2,"560":1,"564":1,"565":1,"587":1,"630":1,"1121":1,"1453":1,"1523":1,"1871":1,"2302":1,"2566":1}}],["implemented",{"2":{"74":1,"149":1,"176":1,"215":2,"534":1,"580":1,"1265":1,"1316":1,"1317":1,"1531":1,"1581":1,"1675":1,"1676":1,"1717":1,"1791":1,"1804":1,"1901":1,"1921":1,"2168":1,"2183":1,"2184":1,"2384":1,"2548":1,"2566":2,"2587":1,"2596":1,"2686":3,"2719":1}}],["implement",{"2":{"50":1,"74":1,"93":1,"114":1,"131":1,"134":1,"149":1,"160":1,"176":1,"191":1,"199":2,"211":1,"236":5,"259":1,"277":2,"516":1,"560":1,"565":1,"566":2,"1265":1,"1326":1,"1330":2,"1344":1,"1393":1,"1405":1,"1464":1,"1680":1,"1714":1,"1725":1,"1791":1,"1813":1,"1820":1,"1853":1,"1854":1,"1918":1,"1921":1,"1946":1,"2065":1,"2137":1,"2228":1,"2300":1,"2491":1,"2524":1,"2525":1,"2526":1,"2571":1}}],["implementations",{"2":{"149":3,"175":1,"211":1,"214":1,"277":6,"1121":1,"1721":1,"1722":1,"2114":1,"2566":1,"2567":1,"2702":1,"2743":1}}],["implementation",{"0":{"572":1,"576":1,"582":1,"585":1,"588":1,"590":1,"593":1,"594":1,"1332":1,"1343":1,"1717":1,"1718":1,"2162":1},"2":{"49":1,"75":1,"114":1,"125":1,"163":1,"176":1,"185":1,"233":1,"236":1,"277":1,"560":1,"565":1,"568":1,"635":2,"641":3,"692":1,"1127":1,"1130":1,"1134":2,"1221":1,"1393":2,"1406":1,"1442":1,"1450":2,"1491":1,"1499":1,"1511":1,"1573":1,"1821":1,"1857":1,"1879":1,"1908":2,"2114":2,"2153":1,"2263":2,"2300":1,"2367":1,"2524":1,"2525":1,"2526":1,"2689":2,"2702":1}}],["implements",{"2":{"49":1,"1531":1,"1900":1,"1943":1,"2415":1}}],["improving",{"2":{"402":1,"403":1}}],["improvement",{"2":{"114":1,"175":1}}],["improvements",{"0":{"84":1,"98":1,"107":1,"109":1,"175":1,"210":1},"1":{"110":1,"111":1,"112":1},"2":{"45":1,"107":1,"114":2,"134":1,"149":1,"176":1,"190":1,"191":2,"211":3,"222":1,"236":1,"1453":1,"2719":1}}],["improve",{"0":{"229":1},"2":{"93":1,"114":5,"134":1,"175":1,"176":4,"191":2,"211":3,"214":1,"222":1,"236":4,"249":1,"516":1,"550":1,"554":1,"1326":1,"1329":1,"1817":1,"2141":1,"2226":1,"2409":1,"2719":2}}],["improved",{"0":{"83":1},"2":{"10":2,"50":1,"74":1,"84":1,"174":1,"196":1,"561":1,"1226":1}}],["improper",{"2":{"249":1,"1289":1}}],["impact",{"2":{"194":1,"584":1,"2129":1,"2162":1,"2578":1,"2719":1,"2720":1,"2737":1}}],["impacts",{"2":{"14":1}}],["ivy",{"2":{"143":2}}],["ibus",{"2":{"2183":3}}],["ibnuda",{"2":{"143":3,"149":2}}],["ibm122m",{"2":{"207":2}}],["ibm4704",{"2":{"133":1,"134":1}}],["ibm",{"2":{"114":1,"204":1,"207":11,"217":1,"222":1}}],["ixora",{"2":{"102":2}}],["illusion",{"2":{"1454":1}}],["illustrious",{"2":{"123":1}}],["illustrate",{"2":{"99":1,"194":1,"2730":1}}],["ill",{"2":{"355":1}}],["ili9341",{"2":{"2573":2,"2576":7}}],["ili9163",{"2":{"2573":2,"2576":7}}],["ili9486",{"2":{"248":1,"249":1,"2573":2,"2576":8}}],["ili9488",{"2":{"176":1,"2573":2,"2576":7}}],["ili9xxx",{"2":{"222":1}}],["ilumkb",{"2":{"102":1,"114":1}}],["ios",{"2":{"1491":2,"1825":1,"1826":1,"2299":5}}],["iohidconsumer",{"2":{"1279":2}}],["iohidfamily",{"2":{"1279":6}}],["io",{"2":{"74":1,"112":1,"502":1,"697":1,"2437":1,"2543":1,"2689":1}}],["iota",{"2":{"31":3,"34":2,"1823":10}}],["i",{"0":{"353":1,"546":1,"551":2,"553":1,"554":1,"1243":1,"1258":1,"1259":2,"1260":1,"1261":1,"1263":2,"1264":1,"1267":1,"1269":1,"1270":1,"1286":1,"1413":1,"1439":1,"1500":1,"1930":1,"2254":1,"2472":1},"1":{"354":1,"355":1,"356":1,"1264":2,"1501":1},"2":{"65":1,"105":2,"108":1,"114":1,"219":4,"249":2,"266":2,"279":1,"313":1,"331":1,"335":1,"408":1,"414":1,"530":2,"537":1,"556":2,"563":1,"611":1,"623":1,"624":1,"703":1,"1177":1,"1198":1,"1221":1,"1242":1,"1274":1,"1338":1,"1359":1,"1363":1,"1436":3,"1448":2,"1450":1,"1451":4,"1518":2,"1553":1,"1670":2,"1729":6,"1733":1,"1815":3,"1816":3,"1885":1,"1902":1,"1923":4,"1932":1,"1943":6,"1952":6,"1957":1,"1958":8,"1959":4,"2056":4,"2139":3,"2171":2,"2181":2,"2182":4,"2184":4,"2233":1,"2236":1,"2262":3,"2268":2,"2269":2,"2275":2,"2284":1,"2347":1,"2355":3,"2384":4,"2386":3,"2407":1,"2427":1,"2501":1,"2528":1,"2564":1,"2565":1,"2566":3,"2575":6,"2577":19,"2600":2,"2750":2,"2757":1}}],["idx",{"2":{"1518":3}}],["idproduct",{"2":{"1254":1}}],["idvendor",{"2":{"1254":1}}],["id=92",{"2":{"1242":1}}],["id=some",{"2":{"279":1}}],["idling",{"0":{"589":1},"1":{"590":1,"591":1}}],["idled",{"2":{"589":2}}],["idle",{"0":{"1504":1},"2":{"149":1,"211":1,"222":1,"236":2,"588":1,"1499":1,"1504":3,"2070":1,"2680":1,"2696":1}}],["idb",{"2":{"217":3}}],["idb60",{"2":{"211":1}}],["ids",{"0":{"169":1,"184":1},"1":{"170":1},"2":{"169":1,"176":1,"184":1,"222":1,"317":1,"511":2,"629":1,"1921":1,"2130":4}}],["id75",{"2":{"143":1,"149":3,"199":1,"211":2}}],["idobo",{"2":{"143":1,"149":1}}],["idobao",{"2":{"143":6,"149":6,"168":4,"176":4,"266":1}}],["id87v2",{"2":{"176":1}}],["id87",{"2":{"143":2,"149":1}}],["id80v1",{"2":{"176":1}}],["id80v3",{"2":{"176":1}}],["id80",{"2":{"143":2,"149":4,"168":4}}],["id67",{"2":{"143":4,"149":1,"176":1}}],["ides",{"2":{"2723":1}}],["identical",{"2":{"1318":1,"1319":1,"1321":1,"1323":1,"1324":1,"1406":1,"1806":1,"2128":1,"2161":1,"2533":1,"2541":1,"2550":1,"2576":1,"2586":1,"2590":1,"2591":1}}],["identity",{"2":{"562":1}}],["identified",{"2":{"1451":1}}],["identifier",{"2":{"157":2,"461":1,"1336":1,"2411":1,"2570":2}}],["identifiers",{"2":{"110":1,"266":1,"1441":1,"1499":1}}],["identifying",{"2":{"2616":1}}],["identify",{"2":{"70":1,"110":1,"1451":1,"1452":1,"1496":1,"1902":1,"2172":1,"2749":1}}],["ideally",{"2":{"1376":1,"1871":1,"1889":3,"2133":1,"2550":1}}],["ideal",{"2":{"1325":1,"1381":1,"2120":1,"2232":1,"2234":1,"2241":1}}],["idea",{"2":{"473":1,"560":1,"561":1,"1238":1,"1353":1,"1416":1,"1451":1,"1831":1,"1921":1,"2273":1,"2274":2,"2552":1}}],["ide",{"0":{"330":1},"2":{"132":1,"322":1,"323":1,"330":1,"331":1,"401":1,"2492":2,"2497":2,"2634":1}}],["id",{"0":{"308":1,"309":1,"310":1},"2":{"50":1,"70":2,"160":1,"169":2,"184":2,"191":2,"211":1,"277":1,"314":1,"315":1,"341":1,"502":2,"1230":1,"1242":4,"1254":1,"1920":3,"1921":3,"1923":6,"2130":3,"2147":2,"2343":1,"2344":1,"2345":1,"2346":1,"2406":1,"2556":1,"2587":2,"2588":2,"2589":2,"2593":3,"2594":2,"2595":2,"2596":2,"2597":2,"2598":2,"2599":2,"2699":2}}],["iwrap",{"2":{"50":1}}],["itunes",{"2":{"2355":1}}],["ition",{"2":{"1943":1}}],["ith",{"2":{"1670":1}}],["italian",{"2":{"1355":3,"2712":9}}],["iterates",{"2":{"1821":1}}],["iterate",{"2":{"580":1}}],["iterators",{"2":{"461":1}}],["iterations",{"2":{"556":1}}],["iteration",{"2":{"65":1,"437":1,"587":1}}],["itemid=1",{"2":{"1242":1}}],["item",{"0":{"183":1},"2":{"268":1,"467":2,"468":1,"686":1,"2164":1}}],["items",{"2":{"83":1,"112":1,"134":1,"183":1,"210":1,"236":2,"264":1,"274":1,"282":3,"341":1,"473":1}}],["it",{"0":{"27":1,"548":1,"609":1,"613":1,"614":1,"1243":2,"1253":1,"1264":1,"1270":1,"1411":1,"1438":1,"2324":1,"2455":1},"2":{"5":1,"6":1,"8":1,"14":2,"21":2,"23":1,"27":1,"31":2,"45":2,"50":1,"82":1,"89":1,"94":1,"98":1,"99":1,"105":2,"114":2,"116":2,"119":1,"123":1,"130":2,"133":1,"134":1,"149":1,"153":2,"154":1,"166":1,"173":1,"174":2,"176":1,"179":3,"182":2,"194":2,"195":2,"198":1,"199":1,"203":1,"213":1,"214":1,"228":2,"233":1,"235":1,"246":1,"251":2,"254":1,"259":1,"278":1,"282":5,"303":1,"305":1,"308":1,"315":1,"324":1,"325":1,"327":1,"328":1,"329":1,"331":3,"334":2,"341":5,"347":1,"352":2,"353":1,"354":1,"355":1,"370":3,"371":1,"375":1,"376":2,"378":1,"381":1,"383":1,"384":1,"385":1,"386":1,"400":3,"401":1,"403":1,"405":3,"416":1,"423":1,"430":3,"432":1,"435":2,"436":1,"437":1,"440":1,"453":2,"454":7,"455":1,"458":1,"466":1,"467":1,"469":1,"470":2,"472":1,"473":2,"474":1,"477":1,"479":2,"481":4,"482":1,"493":1,"495":1,"500":2,"504":2,"505":3,"509":1,"510":2,"512":1,"513":1,"515":2,"516":1,"526":2,"527":1,"534":1,"537":2,"539":2,"541":2,"551":2,"552":1,"554":2,"560":8,"564":1,"565":1,"566":1,"568":1,"571":2,"572":3,"574":1,"575":2,"578":1,"584":2,"586":2,"587":1,"589":3,"592":4,"597":5,"598":2,"599":2,"600":2,"605":1,"607":3,"613":1,"618":1,"621":2,"623":2,"624":1,"626":3,"627":1,"628":2,"629":1,"639":2,"641":2,"660":1,"661":1,"663":1,"667":1,"683":1,"689":2,"690":1,"696":4,"698":1,"700":1,"707":1,"726":1,"822":1,"855":1,"889":1,"923":1,"957":1,"991":1,"1025":1,"1059":1,"1093":1,"1122":3,"1124":1,"1125":1,"1127":1,"1128":1,"1130":1,"1132":1,"1133":2,"1134":1,"1175":1,"1196":1,"1219":1,"1225":1,"1235":1,"1250":1,"1252":2,"1253":1,"1254":1,"1260":1,"1261":1,"1263":2,"1265":1,"1269":2,"1270":3,"1272":1,"1273":1,"1276":1,"1278":4,"1283":1,"1286":2,"1287":3,"1294":1,"1300":1,"1302":3,"1303":1,"1313":1,"1316":2,"1320":2,"1325":1,"1326":2,"1328":1,"1331":2,"1332":17,"1335":7,"1336":2,"1337":1,"1338":3,"1340":2,"1341":3,"1346":1,"1347":1,"1351":1,"1353":2,"1359":2,"1360":4,"1362":1,"1367":1,"1368":2,"1375":1,"1377":4,"1380":4,"1383":3,"1384":1,"1385":3,"1386":1,"1398":5,"1403":1,"1405":2,"1406":2,"1409":1,"1411":4,"1412":3,"1413":1,"1430":2,"1431":1,"1435":1,"1438":2,"1439":3,"1440":2,"1441":5,"1442":1,"1445":2,"1450":3,"1451":1,"1454":2,"1455":2,"1459":1,"1463":1,"1471":2,"1491":2,"1492":3,"1495":1,"1496":1,"1498":2,"1499":4,"1503":1,"1508":2,"1510":1,"1511":2,"1515":2,"1518":6,"1525":3,"1526":1,"1528":2,"1534":2,"1538":1,"1551":2,"1553":3,"1554":2,"1555":1,"1556":1,"1557":2,"1560":1,"1564":1,"1565":2,"1567":1,"1573":2,"1621":1,"1630":3,"1631":1,"1633":2,"1635":1,"1645":1,"1658":1,"1666":1,"1670":2,"1674":1,"1675":4,"1683":1,"1686":3,"1717":2,"1718":1,"1720":1,"1722":1,"1723":2,"1725":2,"1731":2,"1743":1,"1745":1,"1776":1,"1778":1,"1780":1,"1783":1,"1802":3,"1803":4,"1804":1,"1807":1,"1816":1,"1820":1,"1821":1,"1822":5,"1824":3,"1825":4,"1827":2,"1830":1,"1832":1,"1853":2,"1854":1,"1857":1,"1866":1,"1869":2,"1871":1,"1874":1,"1876":1,"1878":1,"1879":1,"1886":1,"1887":1,"1888":1,"1894":1,"1895":1,"1897":1,"1899":1,"1900":2,"1912":2,"1917":1,"1921":4,"1922":1,"1923":1,"1930":1,"1932":2,"1933":1,"1934":2,"1936":2,"1937":1,"1938":1,"1940":1,"1943":1,"1944":2,"1946":2,"1950":2,"1955":2,"1960":2,"1970":1,"1972":1,"2021":1,"2023":1,"2025":1,"2028":1,"2032":2,"2037":1,"2041":2,"2042":1,"2051":2,"2063":3,"2072":1,"2073":1,"2102":2,"2105":1,"2108":1,"2118":1,"2120":1,"2122":2,"2123":1,"2124":4,"2125":3,"2126":1,"2128":3,"2130":3,"2131":5,"2132":1,"2134":1,"2140":1,"2143":4,"2144":1,"2145":5,"2147":1,"2149":1,"2150":1,"2152":3,"2154":1,"2157":1,"2160":3,"2161":2,"2162":8,"2169":2,"2170":1,"2171":2,"2172":1,"2178":1,"2180":1,"2181":1,"2182":1,"2183":9,"2226":1,"2230":1,"2231":1,"2233":2,"2235":2,"2236":1,"2237":2,"2238":2,"2243":1,"2250":1,"2252":2,"2254":3,"2255":9,"2256":1,"2259":1,"2260":1,"2262":6,"2263":4,"2267":3,"2268":4,"2272":6,"2273":13,"2274":8,"2275":3,"2276":1,"2277":1,"2279":5,"2280":1,"2292":1,"2293":1,"2295":4,"2297":3,"2298":1,"2300":1,"2302":2,"2304":1,"2305":2,"2306":1,"2307":1,"2311":5,"2314":2,"2317":1,"2320":1,"2326":1,"2327":4,"2329":1,"2333":1,"2341":2,"2342":1,"2345":1,"2346":2,"2347":1,"2348":1,"2349":2,"2353":4,"2367":1,"2402":1,"2403":1,"2404":1,"2405":2,"2406":1,"2407":1,"2408":3,"2410":2,"2411":4,"2413":2,"2417":3,"2418":1,"2423":1,"2424":1,"2425":1,"2427":1,"2428":1,"2431":1,"2436":1,"2437":1,"2441":1,"2443":3,"2446":1,"2450":5,"2452":1,"2454":3,"2455":3,"2458":1,"2463":2,"2464":1,"2468":2,"2469":1,"2473":1,"2474":4,"2475":1,"2476":1,"2477":1,"2478":2,"2479":2,"2480":5,"2490":3,"2491":6,"2492":1,"2495":1,"2497":7,"2498":1,"2501":1,"2506":3,"2508":1,"2509":3,"2510":1,"2512":5,"2513":5,"2514":1,"2517":2,"2518":1,"2521":1,"2522":1,"2529":1,"2530":1,"2533":1,"2539":2,"2541":1,"2542":1,"2544":1,"2546":1,"2548":1,"2549":2,"2552":2,"2553":1,"2556":2,"2559":1,"2564":4,"2566":3,"2567":1,"2568":3,"2569":2,"2570":3,"2571":1,"2573":1,"2574":1,"2576":2,"2577":9,"2578":2,"2582":1,"2584":2,"2585":1,"2587":1,"2590":1,"2592":1,"2594":1,"2596":1,"2603":2,"2605":4,"2607":1,"2612":1,"2614":1,"2615":2,"2616":2,"2619":1,"2637":1,"2654":1,"2663":1,"2666":2,"2671":1,"2686":1,"2691":1,"2697":1,"2701":1,"2704":3,"2709":1,"2710":2,"2711":4,"2720":1,"2723":2,"2728":2,"2737":3,"2738":2,"2739":3,"2740":3,"2742":2,"2743":5,"2744":3,"2745":4,"2746":1,"2747":2,"2748":2,"2750":1,"2751":1,"2752":1,"2753":4,"2756":1,"2757":7}}],["itsybitsy",{"2":{"629":2,"2344":2}}],["itself",{"2":{"152":1,"321":1,"517":1,"529":1,"580":2,"605":1,"625":1,"627":1,"628":1,"654":1,"1376":1,"1435":1,"1442":1,"1448":1,"1499":2,"2146":1,"2235":1,"2237":1,"2262":1,"2273":1,"2275":1,"2327":1,"2351":1,"2397":1,"2523":1,"2546":1,"2615":1,"2710":1,"2749":1}}],["its",{"0":{"2496":1},"1":{"2497":1,"2498":1,"2499":1},"2":{"3":1,"7":1,"8":1,"15":1,"30":1,"33":1,"113":2,"114":1,"120":1,"133":1,"157":1,"174":1,"175":1,"195":1,"330":1,"331":1,"349":1,"352":1,"499":1,"529":1,"627":1,"661":1,"669":1,"686":1,"689":1,"690":1,"691":2,"697":1,"1128":1,"1236":1,"1238":1,"1240":1,"1278":1,"1293":1,"1312":1,"1314":1,"1327":1,"1329":1,"1401":1,"1409":2,"1430":1,"1431":1,"1451":1,"1452":3,"1471":2,"1508":1,"1511":1,"1518":4,"1519":1,"1634":1,"1637":1,"1666":1,"1802":4,"1814":1,"1821":1,"1872":1,"1902":1,"1941":3,"1950":2,"1951":1,"2102":2,"2152":1,"2171":1,"2183":1,"2259":2,"2272":1,"2282":1,"2300":1,"2311":4,"2318":1,"2402":1,"2403":1,"2406":2,"2428":1,"2435":1,"2439":2,"2440":1,"2501":1,"2559":1,"2566":1,"2576":1,"2585":1,"2592":1,"2615":1,"2619":1,"2627":1,"2664":1,"2671":1,"2683":1,"2719":1,"2734":1,"2735":2,"2736":2,"2737":2,"2739":1,"2743":1}}],["ifeq",{"2":{"2300":2}}],["ifnormation",{"2":{"179":1}}],["ifndef",{"2":{"134":1,"453":1,"1385":1,"1423":5,"1446":1,"2168":1,"2299":4,"2564":1,"2706":2}}],["ify",{"2":{"176":1}}],["ifdefs",{"2":{"114":1,"191":1,"211":1,"266":1,"1313":1}}],["ifdef",{"2":{"31":4,"34":4,"134":1,"211":1,"249":2,"453":1,"496":1,"588":3,"607":1,"1252":1,"1313":1,"1315":13,"1322":5,"1351":3,"1384":3,"1398":2,"1423":1,"1446":2,"1448":4,"1549":2,"1686":3,"1718":2,"1729":2,"1813":1,"1816":1,"1870":1,"1904":1,"1905":1,"1907":1,"1952":2,"2137":1,"2140":1,"2299":1}}],["if",{"0":{"141":1,"1260":1,"1261":1,"1264":1},"2":{"1":1,"7":1,"14":1,"16":1,"18":2,"21":1,"23":2,"31":4,"34":4,"37":1,"43":1,"45":1,"49":2,"50":2,"62":1,"87":1,"89":1,"90":9,"98":1,"105":6,"107":1,"114":2,"119":1,"125":2,"149":1,"152":1,"157":1,"158":2,"160":1,"182":1,"185":2,"194":3,"196":4,"198":1,"199":2,"201":1,"202":1,"206":1,"209":2,"214":1,"215":1,"218":1,"221":1,"222":1,"228":1,"230":1,"232":2,"233":1,"236":2,"240":3,"241":1,"245":1,"247":1,"248":1,"253":1,"254":1,"255":1,"256":1,"259":1,"266":1,"270":1,"272":1,"273":2,"276":1,"277":2,"282":6,"291":1,"308":2,"311":1,"312":1,"313":1,"317":1,"319":1,"320":1,"321":1,"326":1,"327":1,"331":2,"332":1,"334":1,"336":1,"341":4,"349":1,"352":1,"353":1,"354":1,"356":1,"361":2,"365":1,"366":1,"367":1,"370":1,"371":1,"373":1,"375":1,"376":1,"377":1,"378":1,"381":1,"383":1,"385":1,"386":1,"387":1,"399":1,"405":1,"407":1,"411":1,"429":1,"430":2,"433":2,"434":1,"435":1,"446":2,"448":1,"450":1,"451":1,"453":16,"454":2,"455":3,"459":1,"462":2,"465":2,"466":3,"471":1,"473":2,"474":3,"476":5,"478":1,"481":3,"484":1,"485":1,"497":1,"500":1,"501":1,"502":9,"503":1,"504":2,"505":10,"506":4,"509":2,"510":3,"511":4,"513":1,"515":1,"516":2,"517":1,"521":1,"529":1,"530":1,"534":7,"537":3,"539":1,"540":2,"541":1,"545":2,"546":1,"551":2,"552":1,"553":1,"554":3,"555":1,"556":1,"557":2,"558":1,"559":1,"560":5,"561":1,"562":1,"571":2,"572":2,"575":1,"580":1,"581":1,"585":1,"586":1,"587":1,"588":10,"589":1,"592":3,"593":2,"594":1,"597":5,"598":3,"601":1,"609":1,"612":1,"613":2,"614":2,"621":2,"624":1,"625":1,"626":6,"627":3,"628":1,"629":1,"630":1,"638":1,"639":2,"641":2,"643":2,"656":1,"660":2,"661":1,"665":2,"683":2,"684":3,"685":1,"689":2,"698":3,"700":2,"701":1,"703":1,"707":1,"710":2,"713":2,"716":2,"719":2,"722":2,"725":2,"726":1,"728":2,"730":2,"756":2,"785":2,"817":2,"822":1,"849":2,"855":1,"884":2,"889":1,"918":2,"923":1,"952":2,"957":1,"986":2,"991":1,"1020":2,"1025":1,"1054":2,"1059":1,"1088":2,"1093":1,"1125":1,"1127":1,"1128":1,"1129":1,"1130":2,"1132":2,"1133":2,"1136":2,"1138":1,"1144":2,"1175":2,"1177":2,"1181":1,"1182":1,"1185":1,"1187":1,"1190":2,"1193":2,"1195":1,"1196":2,"1205":1,"1210":1,"1211":1,"1213":2,"1215":1,"1216":1,"1228":1,"1230":1,"1237":1,"1238":3,"1240":1,"1241":1,"1243":1,"1245":1,"1252":2,"1254":1,"1258":2,"1260":2,"1261":1,"1264":1,"1266":1,"1270":1,"1271":1,"1284":1,"1286":1,"1287":1,"1294":1,"1300":3,"1302":3,"1303":3,"1312":1,"1315":1,"1316":1,"1320":2,"1322":1,"1325":2,"1326":3,"1329":1,"1330":1,"1331":2,"1332":21,"1335":3,"1336":1,"1338":2,"1339":1,"1340":1,"1341":4,"1344":5,"1351":1,"1355":1,"1357":1,"1359":6,"1360":4,"1361":2,"1362":2,"1363":2,"1364":1,"1365":2,"1367":1,"1368":3,"1375":6,"1376":2,"1377":2,"1378":2,"1380":2,"1383":2,"1384":3,"1385":4,"1386":1,"1394":1,"1395":1,"1396":1,"1398":1,"1401":2,"1403":3,"1406":1,"1411":5,"1413":1,"1415":2,"1416":1,"1430":3,"1431":5,"1432":1,"1435":5,"1438":1,"1441":1,"1445":1,"1446":9,"1448":1,"1449":1,"1451":1,"1452":2,"1455":2,"1457":1,"1459":2,"1464":1,"1484":1,"1489":1,"1492":1,"1495":1,"1496":1,"1497":2,"1499":2,"1500":2,"1504":1,"1505":1,"1507":1,"1508":1,"1509":1,"1511":3,"1512":1,"1514":2,"1515":3,"1516":1,"1518":19,"1519":1,"1521":1,"1524":2,"1525":6,"1527":1,"1528":1,"1530":1,"1533":1,"1534":1,"1538":1,"1548":1,"1549":9,"1553":1,"1554":1,"1555":1,"1556":1,"1557":3,"1558":3,"1559":1,"1560":14,"1563":1,"1565":3,"1567":1,"1568":4,"1570":3,"1573":6,"1578":1,"1579":2,"1591":1,"1597":1,"1601":1,"1616":1,"1621":1,"1633":2,"1638":1,"1645":1,"1655":1,"1659":1,"1668":1,"1670":4,"1671":5,"1673":2,"1674":1,"1675":3,"1677":2,"1678":1,"1680":4,"1684":2,"1685":1,"1686":5,"1694":2,"1696":2,"1697":1,"1701":1,"1704":1,"1707":1,"1710":1,"1713":1,"1717":1,"1718":2,"1723":1,"1725":2,"1726":7,"1729":1,"1730":6,"1733":2,"1742":1,"1775":1,"1791":2,"1792":1,"1803":1,"1804":1,"1805":1,"1808":1,"1815":3,"1816":4,"1817":1,"1819":1,"1820":2,"1821":2,"1822":24,"1826":2,"1828":1,"1830":4,"1847":1,"1854":1,"1857":1,"1859":1,"1863":1,"1870":3,"1871":1,"1872":3,"1873":2,"1874":3,"1875":1,"1876":1,"1878":1,"1879":2,"1880":4,"1882":5,"1884":1,"1885":1,"1886":1,"1887":2,"1894":4,"1897":1,"1898":5,"1899":2,"1900":2,"1904":1,"1907":1,"1912":2,"1915":1,"1918":1,"1920":1,"1922":1,"1923":6,"1929":1,"1932":1,"1933":4,"1938":1,"1939":1,"1940":4,"1941":7,"1943":2,"1944":1,"1946":2,"1947":8,"1948":2,"1952":1,"1954":9,"1957":2,"1958":4,"1959":6,"1960":1,"1969":1,"2020":1,"2032":2,"2034":2,"2035":3,"2036":1,"2038":1,"2042":1,"2044":2,"2045":1,"2046":1,"2047":1,"2052":2,"2056":1,"2059":1,"2060":1,"2061":1,"2064":1,"2071":3,"2073":1,"2074":1,"2076":1,"2078":1,"2106":3,"2107":2,"2117":1,"2120":1,"2121":1,"2124":2,"2125":1,"2126":1,"2127":3,"2128":5,"2130":5,"2131":4,"2139":3,"2140":3,"2143":19,"2145":3,"2147":2,"2149":2,"2150":2,"2152":4,"2153":1,"2154":1,"2157":2,"2158":1,"2161":5,"2162":7,"2166":1,"2167":2,"2168":4,"2169":13,"2170":3,"2171":11,"2172":1,"2173":2,"2174":1,"2180":1,"2181":1,"2182":1,"2183":3,"2184":1,"2199":1,"2213":1,"2218":1,"2220":1,"2226":6,"2228":10,"2229":1,"2230":2,"2231":2,"2233":1,"2235":1,"2238":3,"2240":1,"2242":1,"2244":1,"2249":1,"2252":1,"2255":3,"2260":1,"2261":1,"2262":5,"2263":2,"2264":1,"2267":1,"2268":1,"2271":1,"2272":2,"2273":3,"2274":7,"2275":1,"2276":2,"2277":1,"2278":1,"2279":5,"2280":2,"2286":1,"2295":2,"2297":1,"2299":2,"2301":1,"2302":4,"2305":4,"2306":2,"2307":1,"2309":4,"2310":2,"2311":1,"2317":1,"2319":1,"2328":1,"2335":1,"2342":1,"2347":3,"2348":2,"2351":1,"2353":4,"2356":2,"2384":1,"2402":1,"2408":1,"2409":1,"2411":2,"2413":1,"2414":3,"2415":2,"2417":4,"2418":2,"2421":1,"2422":2,"2423":1,"2424":1,"2425":1,"2430":1,"2431":1,"2432":1,"2436":2,"2438":2,"2439":1,"2441":1,"2442":2,"2443":1,"2444":1,"2445":1,"2446":3,"2448":1,"2450":3,"2451":1,"2452":1,"2454":3,"2455":2,"2457":1,"2459":1,"2462":1,"2463":1,"2464":1,"2466":1,"2468":2,"2469":1,"2473":1,"2474":1,"2475":2,"2476":2,"2477":1,"2480":2,"2490":4,"2491":14,"2495":1,"2497":2,"2498":2,"2501":1,"2504":1,"2508":3,"2510":1,"2512":1,"2513":3,"2516":1,"2517":1,"2521":1,"2523":1,"2524":2,"2525":1,"2530":1,"2533":1,"2541":1,"2546":1,"2548":3,"2550":2,"2551":1,"2553":1,"2556":2,"2563":1,"2564":4,"2566":17,"2567":5,"2568":1,"2570":1,"2571":1,"2572":2,"2574":5,"2575":4,"2576":2,"2577":22,"2581":1,"2584":1,"2585":2,"2587":1,"2588":1,"2589":2,"2590":3,"2593":1,"2595":1,"2596":6,"2600":1,"2603":4,"2604":2,"2605":1,"2606":2,"2607":3,"2608":1,"2610":2,"2611":1,"2612":3,"2614":1,"2617":1,"2620":1,"2654":1,"2660":1,"2673":4,"2686":1,"2693":2,"2697":1,"2701":1,"2702":3,"2703":3,"2704":1,"2705":3,"2706":2,"2708":2,"2709":1,"2711":1,"2712":1,"2714":1,"2720":1,"2723":1,"2724":1,"2728":12,"2729":5,"2735":7,"2736":4,"2737":3,"2738":3,"2740":2,"2743":1,"2746":1,"2750":3,"2752":2,"2753":2,"2755":1,"2757":2}}],["innovation",{"2":{"2719":1}}],["inner",{"0":{"1672":1},"1":{"1673":1,"1674":1,"1675":1},"2":{"300":1,"1823":1,"1884":1,"2033":1,"2400":1}}],["inbound",{"2":{"2130":1}}],["inoperable",{"2":{"1287":1}}],["inheriting",{"2":{"2686":1}}],["inheritance",{"2":{"479":1}}],["inherently",{"2":{"1676":1}}],["inherent",{"2":{"1217":1}}],["injection",{"0":{"2079":1}}],["injected",{"2":{"2075":1}}],["inject",{"2":{"567":1,"1527":1}}],["inactivity",{"2":{"1817":2,"2141":1}}],["inactive",{"2":{"1335":1,"1900":1}}],["inappropriate",{"2":{"562":1}}],["inaugural",{"2":{"0":1}}],["ini",{"2":{"414":1,"415":1,"417":1,"423":1,"424":1,"430":1}}],["initiator2target",{"2":{"2130":4}}],["initiated",{"2":{"1804":1}}],["initiative",{"2":{"213":1}}],["initially",{"2":{"2402":1}}],["initial",{"0":{"1684":1,"2434":1},"1":{"2435":1,"2436":1,"2437":1,"2438":1,"2439":1},"2":{"93":1,"130":1,"134":2,"149":2,"188":1,"191":1,"199":2,"266":1,"1400":1,"1804":5,"1860":5,"1935":2,"2402":1,"2438":1,"2567":2,"2675":1,"2734":1}}],["initializing",{"2":{"575":1,"654":1,"1910":1,"2126":1,"2523":1,"2743":1}}],["initializers",{"2":{"1658":1,"1670":1}}],["initialized",{"2":{"574":1,"575":2,"578":2,"581":1,"582":1,"636":1,"1452":1,"1497":1,"1822":1,"2143":1,"2347":1,"2396":1,"2525":1}}],["initialize",{"2":{"565":1,"566":1,"646":1,"673":1,"674":1,"707":1,"738":1,"764":1,"794":1,"828":1,"861":1,"895":1,"929":1,"963":1,"997":1,"1031":1,"1065":1,"1099":1,"1152":1,"1179":1,"1200":1,"1303":2,"1596":1,"1822":1,"2143":1,"2171":1,"2301":1,"2526":1}}],["initializes",{"2":{"49":1}}],["initialization",{"0":{"574":1,"575":1,"578":1,"581":1,"2523":1},"1":{"575":1,"576":2,"577":2,"578":1,"579":2,"580":2,"581":1,"582":2,"583":2,"2524":1,"2525":1,"2526":1},"2":{"149":1,"176":2,"236":1,"249":1,"279":2,"358":1,"359":1,"574":2,"575":1,"581":1,"592":1,"1289":1,"1341":2,"1828":1,"1874":2,"1887":1,"2523":2,"2525":1,"2526":1,"2566":1}}],["initialised",{"2":{"176":1}}],["initialise",{"2":{"65":1,"580":1,"2577":2,"2581":1}}],["initialisation",{"2":{"49":1,"73":1,"77":1,"94":2,"580":3,"2524":1,"2566":1,"2577":4,"2581":1}}],["initilization",{"2":{"149":1}}],["init",{"0":{"576":1,"577":1,"579":1,"582":1,"583":1,"590":1,"646":1,"673":1,"707":1,"738":1,"764":1,"794":1,"828":1,"861":1,"895":1,"929":1,"963":1,"997":1,"1031":1,"1065":1,"1099":1,"1152":1,"1179":1,"1200":1,"1596":1,"2524":1,"2525":1,"2526":1},"1":{"674":1,"765":1,"795":1,"829":1,"862":1,"896":1,"930":1,"964":1,"998":1,"1032":1,"1066":1,"1100":1,"1153":1,"1201":1,"1597":1},"2":{"31":2,"34":4,"49":1,"50":1,"65":1,"114":2,"134":1,"149":2,"176":3,"191":7,"199":1,"236":3,"249":6,"266":2,"277":1,"358":1,"475":1,"565":1,"566":7,"574":4,"576":2,"577":2,"579":2,"580":1,"582":2,"583":2,"589":1,"590":1,"591":2,"707":1,"1245":1,"1331":2,"1332":6,"1333":2,"1399":1,"1464":1,"1593":2,"1594":2,"1598":1,"1599":1,"1600":1,"1729":3,"1816":1,"1822":5,"1823":2,"1870":3,"1871":1,"1874":2,"1876":1,"1883":1,"1887":1,"1905":1,"1907":1,"1910":1,"1952":3,"1960":2,"2042":1,"2044":1,"2126":1,"2130":1,"2140":1,"2143":4,"2301":1,"2353":1,"2438":1,"2524":4,"2525":4,"2526":2,"2566":8,"2576":3,"2577":8,"2581":3,"2610":1,"2757":1}}],["inexpensively",{"2":{"2655":1}}],["inefficient",{"2":{"2051":1,"2577":1}}],["inett",{"2":{"249":1}}],["inertia",{"0":{"1807":1},"2":{"190":2,"191":2,"1802":1,"1807":3}}],["inertial",{"2":{"175":1,"176":1,"1808":1,"1872":2}}],["inland",{"2":{"217":1,"2244":1}}],["inline",{"2":{"50":1,"199":1,"292":2}}],["insulate",{"2":{"2274":1}}],["insulation",{"2":{"2270":3,"2274":2}}],["inspected",{"2":{"2569":1}}],["inspect",{"2":{"2273":1}}],["inspiration",{"2":{"1655":1,"1729":1,"1943":1,"1952":1,"2566":1}}],["insensitive",{"2":{"1440":1}}],["insertion",{"2":{"2255":1}}],["inserting",{"2":{"626":1}}],["inserted",{"2":{"1549":1,"1560":1,"2182":3}}],["inserts",{"2":{"304":1}}],["insert",{"2":{"249":1,"266":1,"554":2,"1555":1,"1586":1,"1853":1,"2183":1,"2355":3,"2392":2,"2394":1}}],["insights",{"2":{"1138":1,"1884":1}}],["inside",{"2":{"169":1,"184":1,"241":1,"253":1,"270":1,"430":1,"485":1,"570":1,"1129":1,"1335":1,"1445":2,"1729":1,"1948":1,"1952":1,"2034":1,"2280":1,"2296":1,"2400":1,"2417":2,"2423":1,"2441":1,"2463":1,"2512":2,"2523":1,"2548":3,"2577":4,"2753":1}}],["ins",{"2":{"530":2,"2355":1,"2392":1}}],["instructs",{"2":{"2577":1}}],["instruct",{"2":{"367":1,"2125":1,"2472":1}}],["instruction",{"2":{"1618":1,"2615":1}}],["instructions",{"0":{"2229":1,"2262":1,"2276":1},"1":{"2230":1,"2231":1,"2232":1,"2233":1,"2234":1,"2235":1,"2236":1,"2237":1,"2238":1,"2239":1,"2240":1,"2241":1,"2242":1,"2243":1,"2244":1,"2245":1,"2246":1,"2247":1,"2248":1,"2249":1,"2263":1,"2264":1},"2":{"36":1,"112":1,"240":1,"323":1,"324":1,"401":1,"535":1,"624":1,"626":1,"1134":1,"1221":1,"1237":1,"1238":1,"1615":1,"1921":1,"2347":1,"2431":1,"2441":2,"2445":1,"2450":1,"2462":1,"2467":1,"2468":1,"2522":1,"2544":1,"2566":1,"2568":1,"2577":3,"2615":1,"2634":1,"2672":2,"2744":1}}],["instructing",{"2":{"23":1,"2477":1}}],["instant",{"2":{"2169":1}}],["instances",{"2":{"277":1,"2478":1}}],["instance",{"2":{"31":3,"34":1,"152":1,"282":3,"341":1,"460":1,"574":1,"657":1,"662":1,"1132":1,"1133":1,"1352":1,"1360":1,"1378":1,"1383":1,"1384":1,"1385":1,"1440":1,"1441":1,"1442":1,"1459":1,"1497":1,"1499":1,"1504":1,"1508":1,"1514":1,"1637":1,"1894":1,"1934":1,"1937":1,"1940":1,"2154":1,"2169":1,"2170":1,"2228":1,"2463":1,"2533":1,"2550":1,"2566":1,"2702":1,"2707":1,"2728":1,"2734":1,"2738":1,"2740":1}}],["installs",{"2":{"2341":1,"2510":1}}],["installer",{"2":{"454":1,"1241":1,"2506":1,"2507":2,"2509":2}}],["installed",{"2":{"23":1,"65":1,"323":1,"364":1,"365":1,"366":2,"402":1,"403":1,"625":1,"627":1,"1241":1,"1441":1,"1560":1,"2031":1,"2183":1,"2255":1,"2431":1,"2460":1,"2497":1,"2499":1,"2508":1,"2510":1}}],["installing",{"0":{"323":1,"2507":1},"1":{"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"2508":1},"2":{"606":1,"2237":1,"2267":1,"2499":1,"2509":1}}],["install",{"0":{"365":1,"366":1,"2431":1,"2496":1,"2497":1,"2499":1},"1":{"2497":1,"2498":1,"2499":1},"2":{"158":2,"160":2,"191":1,"322":1,"323":1,"325":2,"326":2,"327":1,"328":1,"330":1,"331":2,"358":1,"364":2,"365":2,"366":3,"367":1,"429":2,"454":1,"625":1,"626":2,"1241":1,"1413":1,"1441":2,"1454":1,"2183":1,"2238":1,"2251":1,"2278":1,"2351":2,"2431":7,"2456":1,"2458":1,"2459":2,"2460":1,"2461":2,"2462":1,"2463":2,"2464":7,"2465":2,"2466":1,"2467":2,"2495":1,"2496":1,"2497":2,"2510":1,"2513":1}}],["installation",{"0":{"158":1,"625":1,"626":1,"627":1,"2461":1,"2463":1,"2465":1,"2467":1},"1":{"626":1,"627":1,"628":1,"629":1},"2":{"158":2,"173":1,"191":1,"240":1,"324":3,"628":1,"1241":2,"2177":1,"2460":1,"2462":1,"2463":1,"2467":1,"2497":1,"2498":2,"2512":1,"2513":1}}],["instability",{"2":{"73":1}}],["instead",{"2":{"5":1,"17":1,"25":1,"30":1,"33":1,"45":2,"65":1,"70":1,"87":1,"88":1,"95":1,"104":1,"127":1,"128":1,"149":3,"164":1,"184":1,"188":1,"191":1,"195":1,"196":1,"199":1,"202":1,"206":1,"211":1,"215":1,"218":1,"232":2,"234":1,"240":2,"265":1,"268":1,"375":1,"391":1,"414":1,"452":1,"457":2,"465":1,"475":1,"487":1,"502":1,"504":1,"505":2,"506":1,"511":1,"515":1,"529":1,"534":2,"556":1,"580":2,"601":1,"613":1,"624":1,"626":2,"627":1,"639":1,"643":1,"659":1,"662":1,"665":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1122":1,"1125":1,"1144":1,"1212":1,"1213":1,"1225":1,"1229":1,"1255":1,"1270":1,"1273":1,"1274":1,"1276":1,"1290":1,"1300":1,"1303":1,"1316":1,"1320":1,"1330":1,"1335":1,"1351":1,"1352":1,"1363":1,"1364":1,"1368":1,"1370":1,"1385":1,"1431":2,"1440":1,"1447":1,"1451":1,"1458":1,"1459":2,"1462":1,"1471":1,"1508":1,"1518":1,"1527":2,"1528":1,"1557":1,"1564":1,"1637":1,"1658":1,"1666":1,"1675":1,"1677":1,"1678":1,"1723":1,"1730":1,"1804":1,"1821":2,"1870":1,"1872":1,"1879":1,"1880":1,"1898":2,"1910":1,"1912":1,"1929":1,"1937":1,"1944":1,"1948":1,"1954":1,"1959":1,"2031":1,"2034":1,"2072":1,"2075":1,"2122":1,"2134":1,"2149":1,"2161":1,"2181":2,"2182":1,"2183":1,"2226":1,"2230":1,"2240":1,"2254":1,"2259":2,"2269":1,"2277":1,"2279":1,"2291":1,"2327":1,"2339":1,"2341":1,"2349":1,"2355":1,"2402":1,"2406":1,"2417":1,"2428":1,"2444":1,"2463":1,"2474":1,"2478":1,"2491":1,"2498":1,"2502":1,"2523":1,"2556":1,"2558":1,"2564":2,"2566":2,"2568":1,"2570":1,"2575":2,"2576":3,"2577":2,"2584":1,"2607":1,"2666":1,"2680":1,"2688":1,"2695":1,"2705":1,"2710":1,"2734":1,"2735":1,"2736":1,"2737":1,"2738":2,"2740":1,"2745":1,"2750":1}}],["instituted",{"2":{"1":1}}],["invalid",{"2":{"222":1,"236":2,"249":3,"598":1,"600":1,"1182":1,"2302":1}}],["invited",{"2":{"194":1,"206":1}}],["invisible",{"2":{"176":1,"2270":1}}],["invented",{"2":{"1272":1}}],["inversion",{"2":{"222":1}}],["inversely",{"2":{"662":1}}],["inverse",{"2":{"222":1,"509":1}}],["inverts",{"2":{"211":1,"1341":1,"1503":1,"1822":6,"1872":2,"1873":2,"2143":6}}],["inverted",{"2":{"199":1,"1717":1,"1822":1,"2143":1}}],["invert",{"0":{"1503":1,"1913":1,"1914":1},"2":{"114":3,"190":1,"191":1,"211":1,"222":1,"696":1,"1341":1,"1503":2,"1637":1,"1822":13,"1872":2,"1873":3,"1874":1,"1875":1,"1913":2,"1914":5,"2143":9,"2680":2}}],["investigations",{"2":{"134":1}}],["invoking",{"2":{"1940":1,"2130":1,"2311":1,"2508":1}}],["invoke",{"2":{"588":1,"2130":1,"2182":1,"2577":1,"2743":1}}],["invoked",{"2":{"92":1,"515":1,"587":1,"597":1,"598":2,"599":2,"600":1,"1680":1,"1689":1,"1690":1,"1776":1,"1778":1,"1780":1,"1783":1,"1925":1,"2021":1,"2023":1,"2025":1,"2028":1,"2161":1,"2192":1,"2194":1,"2263":1,"2576":1,"2577":1}}],["involve",{"2":{"2177":1,"2267":1}}],["involves",{"2":{"564":1}}],["involved",{"2":{"551":1,"628":1,"2552":1}}],["involving",{"2":{"99":1,"635":1,"1939":1,"2730":1}}],["invocation",{"2":{"176":1,"236":1,"597":1}}],["inputting",{"2":{"1520":1,"1521":1,"2182":1,"2263":1}}],["inputs",{"2":{"580":1,"635":2,"1281":1,"1326":1,"1904":1,"2273":1,"2584":2}}],["input",{"0":{"1277":1,"2181":1,"2183":1,"2186":1,"2188":1,"2190":1,"2191":1,"2192":2,"2194":2,"2196":1,"2197":1,"2198":1,"2316":1},"1":{"2182":1,"2187":1,"2189":1,"2193":2,"2195":2},"2":{"94":1,"114":1,"143":4,"149":1,"176":1,"199":2,"203":2,"236":2,"243":3,"249":2,"385":1,"502":1,"506":1,"515":1,"580":2,"696":6,"707":2,"1142":1,"1329":4,"1355":1,"1445":3,"1491":1,"1591":1,"1634":2,"1637":1,"1644":1,"1673":1,"1674":1,"1675":2,"1676":1,"1901":1,"1907":1,"2066":1,"2125":1,"2146":1,"2162":1,"2176":1,"2177":2,"2179":5,"2180":6,"2182":2,"2183":17,"2184":7,"2186":1,"2187":1,"2188":1,"2189":1,"2190":1,"2191":1,"2192":1,"2193":2,"2194":1,"2195":2,"2196":2,"2197":2,"2198":2,"2199":2,"2211":1,"2214":1,"2215":1,"2216":1,"2219":1,"2221":1,"2222":1,"2231":1,"2237":1,"2238":1,"2243":2,"2252":2,"2273":1,"2320":1,"2322":2,"2347":3,"2384":7,"2519":1,"2566":1,"2574":1,"2575":16,"2615":1,"2684":1,"2689":2,"2693":1,"2711":1,"2756":1}}],["induced",{"2":{"1677":1,"2738":1}}],["industry",{"2":{"149":1}}],["indisinguishable",{"2":{"2576":1}}],["indirect",{"2":{"2183":1}}],["individually",{"2":{"1176":1,"2289":1}}],["individual",{"2":{"485":1,"1217":1,"1218":1,"1377":1,"1416":2,"1454":1,"1460":1,"1655":1,"1722":2,"2031":1,"2171":1,"2262":1,"2290":1,"2533":1}}],["indicated",{"2":{"1451":1,"1822":1,"2143":1,"2147":1,"2148":1,"2567":1}}],["indicate",{"2":{"1359":1,"1386":1,"1451":1,"1959":1,"2423":1,"2491":1}}],["indicates",{"2":{"506":1,"523":1,"524":1,"525":1,"592":2,"1537":1,"1556":1,"1615":1,"1937":1,"2402":1,"2423":1}}],["indicative",{"2":{"2169":1}}],["indication",{"2":{"1331":1,"1332":6,"1342":1,"1726":1,"1733":1,"1947":1,"1957":1}}],["indicating",{"2":{"701":1,"1670":1}}],["indicator",{"0":{"185":1,"1958":1},"1":{"1959":1,"1960":1},"2":{"114":1,"185":1,"191":2,"199":1,"266":1,"511":1,"1457":1,"1534":1,"1539":1,"1540":1,"1715":1,"1717":1,"1720":2,"1726":1,"1733":3,"1743":1,"1745":1,"1947":1,"1957":3,"1958":3,"1959":2,"1970":1,"1972":1,"2518":1,"2566":2,"2677":1,"2697":1}}],["indicators",{"0":{"1714":1,"1733":1,"1776":1,"1778":1,"1780":1,"1783":1,"1957":1,"1960":1,"2021":1,"2023":1,"2025":1,"2028":1,"2685":1},"1":{"1715":1,"1716":1,"1717":1,"1718":1,"1719":1,"1720":1,"1721":1,"1722":1,"1777":1,"1779":1,"2022":1,"2024":1},"2":{"63":1,"93":1,"114":1,"149":1,"185":4,"191":1,"211":1,"222":2,"530":1,"609":1,"630":1,"1714":1,"1715":1,"1733":6,"1957":6,"1958":3,"1959":3,"1960":1,"2041":2,"2646":1,"2685":2,"2697":1}}],["indices",{"2":{"149":1,"790":1,"824":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1,"2155":1,"2181":1,"2182":1,"2694":1}}],["indefinite",{"2":{"1894":1}}],["indefinitely",{"2":{"1504":1,"2574":1,"2577":1}}],["indeed",{"2":{"587":1}}],["indenting",{"2":{"453":1}}],["indent",{"2":{"290":1,"453":2,"455":1,"462":1}}],["indented",{"0":{"290":1},"2":{"292":2,"462":1}}],["indentation",{"2":{"249":1,"453":2,"2437":1}}],["independently",{"2":{"1516":1,"1807":1,"1870":1,"2042":1,"2120":1,"2320":1}}],["independent",{"0":{"1524":1},"1":{"1525":1},"2":{"113":1,"114":1,"176":1,"1335":1,"2110":1,"2519":1,"2675":1}}],["indexes",{"2":{"2157":1}}],["indexed",{"2":{"635":2,"639":1,"2401":1,"2501":1,"2596":5}}],["index>",{"2":{"375":1}}],["index",{"0":{"647":1,"675":1,"679":1,"741":1,"745":1,"749":1,"751":1,"764":1,"766":1,"768":1,"772":1,"776":1,"778":1,"780":1,"782":1,"794":1,"796":1,"798":1,"800":1,"804":1,"808":1,"810":1,"812":1,"814":1,"828":1,"830":1,"832":1,"836":1,"840":1,"842":1,"844":1,"846":1,"861":1,"863":1,"865":1,"867":1,"871":1,"875":1,"877":1,"879":1,"881":1,"895":1,"897":1,"899":1,"901":1,"905":1,"909":1,"911":1,"913":1,"915":1,"929":1,"931":1,"933":1,"935":1,"939":1,"943":1,"945":1,"947":1,"949":1,"963":1,"965":1,"967":1,"969":1,"973":1,"977":1,"979":1,"981":1,"983":1,"997":1,"999":1,"1001":1,"1003":1,"1007":1,"1011":1,"1013":1,"1015":1,"1017":1,"1031":1,"1033":1,"1035":1,"1037":1,"1041":1,"1045":1,"1047":1,"1049":1,"1051":1,"1065":1,"1067":1,"1069":1,"1071":1,"1075":1,"1079":1,"1081":1,"1083":1,"1085":1,"1099":1,"1101":1,"1103":1,"1105":1,"1109":1,"1113":1,"1115":1,"1117":1,"1119":1,"1152":1,"1154":1,"1156":1,"1158":1,"1162":1,"1166":1,"1168":1,"1170":1,"1172":1,"1611":1,"1613":1,"1743":1,"1837":1,"1839":1,"1841":1,"1843":1,"1845":1,"1970":1,"2203":1,"2206":1,"2209":1},"1":{"648":1,"676":1,"680":1,"742":1,"746":1,"750":1,"752":1,"765":1,"767":1,"769":1,"773":1,"777":1,"779":1,"781":1,"783":1,"795":1,"797":1,"799":1,"801":1,"805":1,"809":1,"811":1,"813":1,"815":1,"829":1,"831":1,"833":1,"837":1,"841":1,"843":1,"845":1,"847":1,"862":1,"864":1,"866":1,"868":1,"872":1,"876":1,"878":1,"880":1,"882":1,"896":1,"898":1,"900":1,"902":1,"906":1,"910":1,"912":1,"914":1,"916":1,"930":1,"932":1,"934":1,"936":1,"940":1,"944":1,"946":1,"948":1,"950":1,"964":1,"966":1,"968":1,"970":1,"974":1,"978":1,"980":1,"982":1,"984":1,"998":1,"1000":1,"1002":1,"1004":1,"1008":1,"1012":1,"1014":1,"1016":1,"1018":1,"1032":1,"1034":1,"1036":1,"1038":1,"1042":1,"1046":1,"1048":1,"1050":1,"1052":1,"1066":1,"1068":1,"1070":1,"1072":1,"1076":1,"1080":1,"1082":1,"1084":1,"1086":1,"1100":1,"1102":1,"1104":1,"1106":1,"1110":1,"1114":1,"1116":1,"1118":1,"1120":1,"1153":1,"1155":1,"1157":1,"1159":1,"1163":1,"1167":1,"1169":1,"1171":1,"1173":1,"1612":1,"1614":1,"1744":1,"1838":1,"1840":1,"1842":1,"1844":1,"1846":1,"1847":1,"1971":1,"2204":1,"2205":1,"2207":1,"2208":1,"2210":1},"2":{"46":3,"90":10,"105":8,"160":1,"279":1,"532":1,"554":2,"588":1,"636":1,"648":2,"669":2,"672":1,"676":3,"680":2,"690":1,"734":2,"742":3,"746":3,"750":3,"752":3,"758":1,"760":2,"763":1,"765":2,"767":2,"769":3,"773":3,"777":3,"779":3,"781":2,"783":2,"787":1,"790":2,"793":1,"795":2,"797":2,"799":2,"801":3,"805":3,"809":3,"811":3,"813":2,"815":2,"819":1,"824":2,"827":1,"829":2,"831":2,"833":3,"837":3,"841":3,"843":3,"845":2,"847":2,"851":1,"852":1,"857":2,"860":1,"862":2,"864":2,"866":2,"868":3,"872":3,"876":3,"878":3,"880":2,"882":2,"886":1,"891":2,"894":1,"896":2,"898":2,"900":2,"902":3,"906":3,"910":3,"912":3,"914":2,"916":2,"920":1,"925":2,"928":1,"930":2,"932":2,"934":2,"936":3,"940":3,"944":3,"946":3,"948":2,"950":2,"954":1,"959":2,"962":1,"964":2,"966":2,"968":2,"970":3,"974":3,"978":3,"980":3,"982":2,"984":2,"988":1,"993":2,"996":1,"998":2,"1000":2,"1002":2,"1004":3,"1008":3,"1012":3,"1014":3,"1016":2,"1018":2,"1022":1,"1023":1,"1027":2,"1030":1,"1032":2,"1034":2,"1036":2,"1038":3,"1042":3,"1046":3,"1048":3,"1050":2,"1052":2,"1056":1,"1057":1,"1061":2,"1064":1,"1066":2,"1068":2,"1070":2,"1072":3,"1076":3,"1080":3,"1082":3,"1084":2,"1086":2,"1090":1,"1095":2,"1098":1,"1100":2,"1102":2,"1104":2,"1106":3,"1110":3,"1114":3,"1116":3,"1118":2,"1120":2,"1146":1,"1148":2,"1151":1,"1153":2,"1155":2,"1157":2,"1159":3,"1163":3,"1167":3,"1169":3,"1171":2,"1173":2,"1242":1,"1267":1,"1275":1,"1289":1,"1297":1,"1298":1,"1511":2,"1518":13,"1519":3,"1523":5,"1549":4,"1560":7,"1612":2,"1614":2,"1647":1,"1649":1,"1722":2,"1725":7,"1733":2,"1744":2,"1756":1,"1781":2,"1784":2,"1815":2,"1817":2,"1821":1,"1822":4,"1838":2,"1840":2,"1842":2,"1844":2,"1846":2,"1870":1,"1887":2,"1889":1,"1894":1,"1946":7,"1957":2,"1958":5,"1971":2,"1983":1,"2026":2,"2029":2,"2051":4,"2139":2,"2141":2,"2143":4,"2161":1,"2168":1,"2181":1,"2184":2,"2203":1,"2204":1,"2205":1,"2206":1,"2207":2,"2209":1,"2210":2,"2223":1,"2224":2,"2263":1,"2384":2,"2474":1,"2587":3,"2596":3,"2686":1}}],["inf",{"2":{"628":4}}],["infrequently",{"2":{"214":1}}],["infrastructure",{"0":{"51":1,"65":1,"70":1,"76":1,"95":1},"2":{"2250":1}}],["influence",{"2":{"203":1,"574":1,"2729":1}}],["infers",{"2":{"2558":1}}],["inferior",{"2":{"1326":1}}],["infer",{"2":{"133":1,"134":1,"236":1,"266":1,"2557":1}}],["infinity87",{"2":{"211":3}}],["infinity60",{"2":{"143":2,"236":1}}],["infinity",{"2":{"114":3,"134":1,"143":2,"2136":1,"2262":2}}],["infinitely",{"2":{"496":1}}],["infinite",{"2":{"93":1,"179":1,"1684":1}}],["infomation",{"2":{"2553":2}}],["informing",{"2":{"2417":1,"2425":1}}],["informs",{"2":{"597":1}}],["inform",{"2":{"276":1,"685":1,"694":1}}],["informed",{"2":{"275":1}}],["information",{"0":{"529":1,"2229":1,"2520":1},"1":{"2230":1,"2231":1,"2232":1,"2233":1,"2234":1,"2235":1,"2236":1,"2237":1,"2238":1,"2239":1,"2240":1,"2241":1,"2242":1,"2243":1,"2244":1,"2245":1,"2246":1,"2247":1,"2248":1,"2249":1,"2521":1,"2522":1},"2":{"2":1,"14":1,"70":1,"118":1,"132":1,"152":1,"153":1,"169":1,"170":2,"174":1,"182":1,"184":2,"194":1,"196":1,"206":1,"213":1,"247":1,"316":1,"317":1,"378":3,"408":1,"409":1,"410":1,"427":1,"431":1,"435":1,"502":2,"511":2,"512":1,"515":1,"573":1,"597":1,"606":2,"613":1,"624":1,"638":1,"639":1,"661":1,"687":1,"690":1,"701":1,"788":1,"821":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1121":1,"1138":1,"1218":1,"1241":1,"1245":1,"1251":1,"1278":1,"1300":1,"1321":1,"1346":1,"1353":2,"1460":1,"1471":1,"1498":2,"1714":1,"1724":1,"1830":1,"1853":1,"1876":1,"1884":1,"1902":1,"1921":1,"1945":1,"1959":1,"2031":1,"2032":1,"2129":1,"2134":1,"2162":1,"2229":1,"2256":1,"2258":1,"2259":2,"2262":1,"2263":4,"2271":1,"2287":1,"2288":1,"2289":1,"2290":1,"2291":1,"2297":1,"2298":2,"2299":1,"2347":1,"2401":1,"2417":1,"2427":1,"2450":1,"2454":1,"2455":1,"2460":1,"2482":1,"2513":1,"2551":1,"2565":1,"2574":1,"2576":2,"2577":3,"2589":1,"2671":5,"2672":1,"2739":1,"2751":1,"2757":1}}],["info",{"0":{"378":1,"608":1,"611":1,"2298":1,"2555":1,"2671":1},"1":{"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"2556":1,"2557":1,"2558":1,"2559":1,"2672":1,"2673":1,"2674":1,"2675":1,"2676":1,"2677":1,"2678":1,"2679":1,"2680":1,"2681":1,"2682":1,"2683":1,"2684":1,"2685":1,"2686":1,"2687":1,"2688":1,"2689":1,"2690":1,"2691":1,"2692":1,"2693":1,"2694":1,"2695":1,"2696":1,"2697":1,"2698":1,"2699":1,"2700":1},"2":{"70":33,"73":1,"76":4,"99":1,"109":1,"110":1,"111":2,"112":1,"114":5,"134":1,"141":1,"149":1,"160":1,"169":2,"176":3,"184":3,"191":4,"198":1,"199":4,"201":5,"211":22,"213":2,"222":2,"224":2,"232":1,"236":8,"238":1,"249":26,"262":1,"266":3,"277":1,"282":1,"290":2,"374":4,"377":1,"378":4,"384":2,"389":1,"405":3,"430":1,"432":1,"433":2,"434":1,"437":1,"441":1,"470":1,"496":3,"606":3,"607":2,"608":1,"609":1,"610":5,"611":2,"613":2,"614":3,"624":1,"1218":1,"1243":1,"1258":1,"1259":1,"1298":1,"1380":1,"1385":1,"1908":2,"1921":1,"2105":1,"2146":1,"2153":1,"2169":1,"2244":1,"2259":1,"2296":1,"2299":1,"2353":17,"2374":1,"2406":1,"2410":1,"2467":1,"2474":1,"2555":1,"2556":1,"2557":1,"2560":1,"2566":5,"2615":3,"2616":1,"2617":1,"2671":4,"2686":2,"2725":1}}],["int9",{"2":{"2355":1,"2391":1}}],["int7",{"2":{"2355":1,"2391":1}}],["int6",{"2":{"2355":1,"2391":1}}],["int3",{"2":{"2355":1,"2391":1}}],["int2",{"2":{"1905":3,"2355":1,"2391":1}}],["int8",{"2":{"1556":4,"1880":4,"1894":2,"2130":3,"2152":1,"2355":1,"2391":1}}],["intimidates",{"2":{"2417":1}}],["intimidated",{"2":{"356":1,"481":1}}],["intimidating",{"0":{"1262":1}}],["intimate",{"2":{"692":1}}],["int4",{"2":{"313":1,"2355":1,"2391":1,"2407":1}}],["int5",{"2":{"313":1,"2355":1,"2391":1,"2407":1}}],["int16",{"0":{"1650":1,"1653":1},"1":{"1651":1,"1652":1,"1654":1},"2":{"1638":1,"1642":1,"1654":1,"2577":2}}],["int1",{"2":{"313":1,"2355":1,"2391":1,"2407":1}}],["intrinsics",{"2":{"236":1}}],["introducing",{"2":{"2722":1}}],["introduction",{"0":{"262":1,"413":1,"2160":1,"2256":1},"1":{"414":1,"415":1,"2257":1,"2258":1,"2259":1,"2260":1},"2":{"2485":1,"2742":1}}],["introduced",{"2":{"191":1,"211":1,"236":1,"606":1,"2468":1}}],["introduce",{"2":{"191":1,"199":1,"303":1,"1728":1,"1949":2}}],["introspection",{"2":{"176":1,"191":1,"211":1,"222":1,"249":1,"272":1,"277":2}}],["int",{"0":{"675":1,"741":1,"745":1,"768":1,"772":1,"800":1,"804":1,"832":1,"836":1,"867":1,"871":1,"901":1,"905":1,"935":1,"939":1,"969":1,"973":1,"1003":1,"1007":1,"1037":1,"1041":1,"1071":1,"1075":1,"1105":1,"1109":1,"1158":1,"1162":1},"1":{"676":1,"742":1,"746":1,"769":1,"773":1,"801":1,"805":1,"833":1,"837":1,"868":1,"872":1,"902":1,"906":1,"936":1,"940":1,"970":1,"974":1,"1004":1,"1008":1,"1038":1,"1042":1,"1072":1,"1076":1,"1106":1,"1110":1,"1159":1,"1163":1},"2":{"211":1,"453":1,"463":1,"464":1,"465":1,"612":2,"641":4,"676":1,"742":1,"746":1,"769":1,"773":1,"801":1,"805":1,"833":1,"837":1,"868":1,"872":1,"902":1,"906":1,"936":1,"940":1,"970":1,"974":1,"1004":1,"1008":1,"1038":1,"1042":1,"1072":1,"1076":1,"1106":1,"1110":1,"1159":1,"1163":1,"1252":7,"1290":1,"1816":1,"1876":4,"1905":5,"1907":1,"2130":2,"2576":10,"2577":5}}],["intel",{"2":{"2349":1}}],["intelligent",{"2":{"2492":1,"2503":1}}],["intelligently",{"2":{"612":1}}],["intellisense",{"2":{"1866":1,"2509":1,"2510":1,"2513":1}}],["intensity",{"2":{"2033":1}}],["intend",{"2":{"429":1,"474":1,"568":1,"1412":1,"1918":1,"2495":1}}],["intended",{"2":{"240":1,"597":2,"1335":1,"1341":1,"1853":1,"2524":1,"2525":1,"2526":1,"2721":1,"2728":1}}],["intention",{"2":{"1435":1,"2566":1}}],["intent",{"2":{"331":1,"453":1,"2719":1}}],["integral",{"2":{"435":1}}],["integrates",{"2":{"2578":1}}],["integrated",{"2":{"1134":1,"1908":1,"2492":1,"2508":4,"2573":1}}],["integrate",{"2":{"133":1,"609":1,"1872":1}}],["integration",{"0":{"484":1,"2578":1,"2756":1},"1":{"2579":1,"2580":1,"2581":1,"2582":1,"2583":1,"2584":1},"2":{"118":1,"142":1,"199":1,"446":3,"483":1,"484":1,"2441":1,"2578":1,"2579":1,"2637":1,"2756":1}}],["integrations",{"2":{"24":1,"156":1}}],["integers",{"2":{"612":1,"630":1}}],["integer",{"2":{"114":1,"176":1,"191":1,"222":1,"464":1,"465":2,"612":1,"1406":1,"1652":1,"1820":1,"1880":2,"2142":1,"2169":1,"2571":1,"2585":1,"2592":1,"2728":1}}],["interpolation",{"2":{"2596":3}}],["interprets",{"2":{"1499":2}}],["interpret",{"2":{"1451":1,"1677":1,"1832":1,"2300":1,"2738":1}}],["interpreted",{"0":{"2312":1},"1":{"2313":1,"2314":1,"2315":1,"2316":1,"2317":1,"2318":1,"2319":1,"2320":1},"2":{"215":1,"1562":1,"2300":1,"2734":1}}],["intervention",{"2":{"2065":1,"2577":1}}],["intervals",{"2":{"597":1,"1369":1,"1802":1,"2040":6}}],["interval",{"0":{"2083":1,"2087":1,"2101":1},"1":{"2084":1,"2088":1},"2":{"49":1,"63":1,"93":1,"112":2,"502":1,"505":1,"507":1,"660":3,"1221":2,"1794":1,"1803":4,"1804":4,"1805":8,"1807":2,"1808":2,"1817":3,"1857":2,"1912":3,"2038":1,"2084":1,"2087":1,"2088":1,"2101":2,"2141":2,"2690":1,"2697":1,"2699":1}}],["inter",{"2":{"1943":1}}],["intercepting",{"0":{"2412":1},"1":{"2413":1,"2414":1,"2415":1},"2":{"2413":1}}],["interceptable",{"2":{"2150":1,"2152":1}}],["intercept",{"2":{"1874":2,"1875":2,"1879":1,"2413":1,"2414":4,"2415":2}}],["interchangeable",{"2":{"1872":1}}],["interfacing",{"0":{"2152":1}}],["interfaces",{"2":{"502":1,"627":1,"1314":1,"1923":6,"2323":1}}],["interface",{"2":{"49":2,"114":1,"363":1,"654":1,"1177":1,"1294":1,"1397":1,"1918":1,"1920":3,"1921":1,"1923":11,"2301":1,"2353":1,"2427":1,"2479":1,"2576":1,"2639":1,"2668":1}}],["interfere",{"2":{"1284":1,"2740":1}}],["internet",{"2":{"701":1,"2750":1}}],["internally",{"2":{"1866":1,"2107":1,"2576":2,"2577":4}}],["internal",{"2":{"174":1,"211":1,"231":1,"235":1,"638":1,"654":1,"683":1,"1128":1,"1236":1,"1279":1,"1284":1,"1300":1,"1448":1,"1515":1,"1791":1,"1863":1,"2395":1,"2517":1,"2534":1,"2544":1,"2574":2,"2577":2,"2582":1}}],["internals",{"0":{"25":1,"51":1,"65":1,"70":1,"76":1,"95":1},"2":{"263":1,"479":1,"585":1,"1553":1}}],["international",{"0":{"2391":1},"2":{"74":1,"188":1,"191":1,"1355":1,"2182":1,"2319":1,"2355":18,"2391":12,"2712":5}}],["intermittently",{"2":{"556":1,"2518":1}}],["intermediates=yes",{"2":{"211":1}}],["intermediate",{"0":{"1339":1,"1664":1,"2724":1},"1":{"1665":1,"1666":1},"2":{"211":1,"222":1,"409":1,"410":1,"1451":1,"1827":1,"1830":1,"2428":1,"2575":2,"2723":1}}],["intersections",{"0":{"1552":1},"2":{"1547":1,"2125":2}}],["intersection",{"2":{"510":2,"2125":4}}],["interacting",{"2":{"431":1}}],["interaction",{"0":{"431":1},"1":{"432":1,"433":1,"434":1,"435":1},"2":{"307":1,"1534":1,"1676":1,"1893":1,"2065":1}}],["interactions",{"2":{"133":1,"134":1,"431":1}}],["interact",{"2":{"304":1,"416":1,"430":1,"437":1,"2130":1,"2544":1}}],["interacts",{"2":{"263":1}}],["interoperate",{"2":{"218":1}}],["interoperation",{"2":{"182":1}}],["interesting",{"2":{"2262":1,"2407":1,"2408":1}}],["interested",{"2":{"319":1,"321":1,"517":1,"554":1,"1450":1,"2577":1}}],["interest",{"2":{"175":1}}],["interrupter",{"2":{"2160":1}}],["interrupted",{"2":{"505":1,"1252":1,"2160":1,"2162":1,"2169":5}}],["interrupting",{"2":{"1431":1}}],["interruptions",{"2":{"698":1,"2162":1}}],["interruption",{"2":{"505":1}}],["interrupts",{"2":{"698":3,"1902":1,"2729":1}}],["interrupt",{"0":{"194":1,"206":1,"1905":1,"1906":1},"2":{"22":2,"73":1,"112":2,"114":1,"194":10,"199":1,"206":2,"211":2,"698":1,"703":1,"1134":1,"1221":1,"1462":1,"1904":1,"1905":2,"1906":2,"1907":1,"2450":1,"2692":1}}],["into",{"0":{"2450":1,"2452":1},"2":{"18":1,"21":1,"35":1,"36":1,"50":2,"65":2,"72":1,"73":1,"75":1,"99":1,"113":1,"114":7,"119":1,"131":1,"133":1,"134":4,"149":27,"160":3,"173":1,"176":1,"179":1,"188":1,"191":1,"198":2,"201":3,"211":1,"213":1,"218":1,"222":2,"224":1,"236":1,"238":1,"249":11,"254":1,"265":1,"266":1,"272":1,"277":1,"303":1,"304":1,"314":2,"337":1,"344":1,"345":1,"347":1,"349":1,"350":4,"352":1,"373":1,"389":2,"390":2,"391":1,"417":1,"424":1,"436":1,"450":1,"452":1,"481":1,"486":1,"499":1,"509":4,"516":2,"520":1,"526":1,"539":1,"556":1,"560":1,"584":2,"585":1,"592":1,"597":1,"606":1,"609":1,"621":1,"626":1,"628":1,"654":1,"676":1,"712":1,"742":1,"746":1,"750":1,"752":1,"769":1,"773":1,"777":1,"779":1,"801":1,"805":1,"809":1,"811":1,"833":1,"837":1,"841":1,"843":1,"868":1,"872":1,"876":1,"878":1,"902":1,"906":1,"910":1,"912":1,"936":1,"940":1,"944":1,"946":1,"970":1,"974":1,"978":1,"980":1,"1004":1,"1008":1,"1012":1,"1014":1,"1038":1,"1042":1,"1046":1,"1048":1,"1072":1,"1076":1,"1080":1,"1082":1,"1106":1,"1110":1,"1114":1,"1116":1,"1159":1,"1163":1,"1167":1,"1169":1,"1192":1,"1209":1,"1239":1,"1270":3,"1287":2,"1329":1,"1337":1,"1346":2,"1385":1,"1396":1,"1398":1,"1404":1,"1451":1,"1495":2,"1515":2,"1527":1,"1549":1,"1560":1,"1576":1,"1672":1,"1723":1,"1816":1,"1820":1,"1822":2,"1872":1,"1880":1,"1913":1,"1914":2,"1944":1,"2042":1,"2106":1,"2108":1,"2114":1,"2142":1,"2143":2,"2144":1,"2148":1,"2161":2,"2177":1,"2181":1,"2203":1,"2205":1,"2207":1,"2210":1,"2224":1,"2230":1,"2235":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":1,"2247":1,"2255":2,"2277":1,"2279":1,"2280":1,"2302":1,"2303":1,"2306":1,"2327":1,"2349":1,"2356":2,"2398":1,"2408":1,"2411":1,"2417":1,"2436":1,"2438":1,"2439":1,"2440":2,"2450":1,"2452":2,"2453":1,"2458":1,"2463":1,"2475":1,"2513":1,"2523":1,"2546":1,"2552":1,"2553":2,"2566":4,"2571":2,"2572":2,"2573":2,"2576":1,"2577":2,"2579":1,"2585":1,"2615":4,"2631":1,"2669":1,"2672":1,"2701":1,"2702":1,"2704":1,"2707":1,"2721":1,"2724":1,"2748":1,"2757":1}}],["inclination",{"2":{"2546":1}}],["inclusive",{"2":{"1725":1,"1946":1,"2577":1}}],["inclusions",{"2":{"236":1}}],["inclusion",{"2":{"50":1,"74":1,"134":1,"176":2,"234":1,"236":1,"341":1}}],["including",{"2":{"30":1,"33":1,"49":1,"174":1,"234":1,"235":1,"248":1,"277":1,"435":1,"501":1,"643":1,"700":1,"1130":1,"1175":1,"1196":1,"1213":1,"1250":1,"1379":1,"1445":1,"1933":1,"2041":1,"2044":1,"2134":1,"2148":1,"2170":1,"2181":1,"2252":1,"2307":1,"2431":1,"2479":1,"2526":1,"2565":1,"2566":3,"2586":1,"2593":1,"2711":1,"2743":1}}],["include=",{"2":{"2262":2}}],["included",{"0":{"338":1,"341":1},"2":{"10":2,"114":1,"160":1,"273":1,"341":1,"344":1,"345":1,"468":1,"470":1,"501":2,"512":1,"617":1,"643":1,"665":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1175":1,"1196":1,"1213":1,"1351":1,"1376":2,"1377":1,"1398":1,"1439":1,"1908":1,"2051":2,"2228":1,"2262":2,"2263":1,"2405":1,"2509":1,"2567":4,"2585":2,"2587":1,"2601":1,"2718":1,"2749":1,"2753":1}}],["includes",{"0":{"1351":1},"2":{"5":1,"10":2,"12":1,"25":1,"94":1,"114":3,"191":6,"194":1,"211":1,"222":7,"266":4,"337":1,"341":1,"352":1,"515":1,"1271":1,"1314":2,"1455":1,"1733":1,"1957":1,"2032":1,"2228":1,"2250":1,"2263":1,"2315":1,"2410":1,"2512":1,"2546":2,"2573":1,"2585":1,"2592":1,"2704":1,"2711":1,"2751":1,"2752":1}}],["include",{"0":{"2740":1},"2":{"4":1,"12":1,"22":1,"50":1,"73":1,"114":3,"132":1,"133":2,"134":5,"149":2,"176":4,"199":1,"211":1,"222":1,"236":2,"265":1,"276":1,"277":1,"349":1,"374":1,"401":2,"446":1,"453":3,"454":1,"455":1,"467":1,"530":1,"559":2,"563":1,"623":1,"631":2,"657":2,"658":2,"661":2,"1132":2,"1133":2,"1240":1,"1250":1,"1287":1,"1325":1,"1351":3,"1357":1,"1362":2,"1376":1,"1377":2,"1380":1,"1385":6,"1392":1,"1417":1,"1419":1,"1421":1,"1428":1,"1527":2,"1553":1,"1633":1,"1792":1,"1825":1,"1830":1,"1917":1,"1932":1,"2047":1,"2171":3,"2181":1,"2261":1,"2263":6,"2270":1,"2282":1,"2284":1,"2405":1,"2435":1,"2506":1,"2564":2,"2565":1,"2566":8,"2575":1,"2577":4,"2651":1,"2659":1,"2672":2,"2702":1,"2710":1,"2711":2,"2718":1,"2740":1,"2753":2}}],["inch",{"2":{"1870":1}}],["inc",{"2":{"1729":2,"1952":2,"2753":1}}],["incredibly",{"2":{"1683":2,"2601":1}}],["increasing",{"2":{"506":1,"688":1,"1804":1,"1817":1,"1872":1,"2042":1,"2226":2,"2411":1,"2524":1,"2729":1}}],["increase",{"0":{"1477":1,"1757":1,"1758":1,"1763":1,"1764":1,"1984":1,"1985":1,"1990":1,"1991":1,"1996":1,"1997":1,"2002":1,"2003":1},"2":{"134":2,"149":1,"211":2,"504":1,"505":1,"506":1,"601":1,"1245":1,"1400":1,"1433":1,"1435":2,"1456":1,"1477":1,"1515":1,"1553":1,"1554":1,"1560":2,"1572":2,"1580":1,"1727":2,"1728":1,"1757":1,"1758":1,"1763":1,"1764":1,"1793":4,"1821":1,"1872":1,"1948":8,"1949":2,"1950":1,"1984":1,"1985":1,"1990":1,"1991":1,"1996":1,"1997":1,"2002":1,"2003":1,"2034":8,"2042":1,"2054":12,"2055":2,"2064":1,"2112":1,"2113":3,"2272":1,"2360":1,"2369":2,"2371":4,"2376":8,"2377":8,"2584":1,"2728":1}}],["increases",{"2":{"119":1,"215":1,"1406":1,"1408":1,"1730":2,"1950":2,"1954":2,"2055":2,"2357":1,"2375":1,"2524":1,"2688":1,"2695":1,"2728":2}}],["increased",{"2":{"70":1,"175":1,"262":1,"352":1,"598":1,"642":1,"690":2,"1950":1,"2032":1,"2171":1,"2577":2}}],["incrementms",{"2":{"2375":2,"2728":2}}],["incremented",{"2":{"1594":1,"2162":1}}],["incremental",{"2":{"358":1}}],["incrementing",{"2":{"347":1,"1815":1,"2139":1}}],["increments",{"2":{"160":1,"1855":1,"1856":1,"1869":1,"1870":2}}],["increment",{"2":{"114":1,"1452":2,"1815":1,"2035":2,"2139":1,"2728":2}}],["inception",{"2":{"113":1}}],["inconsistencies",{"2":{"2563":1}}],["inconsistent",{"2":{"453":1,"1217":1,"1289":1}}],["incoming",{"2":{"1445":1}}],["incomplete",{"2":{"557":1,"1718":1}}],["incompatible",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"337":1}}],["incorporated",{"2":{"436":1,"499":1}}],["incorporates",{"2":{"352":1,"2648":1}}],["incorrect",{"2":{"114":1,"160":1,"191":2,"198":1,"211":1,"249":1,"629":1,"1557":1,"1562":1,"2066":1,"2348":1,"2353":1,"2437":1}}],["incorrectly",{"2":{"11":1,"689":1,"1437":1,"1830":1,"2279":1}}],["in",{"0":{"3":1,"7":1,"8":1,"15":1,"23":1,"120":1,"218":1,"273":1,"338":1,"546":1,"1234":1,"1240":1,"1279":1,"1280":1,"1298":1,"1354":1,"1358":1,"1363":1,"1416":1,"1539":1,"1540":1,"1551":1,"1552":2,"1553":1,"2102":1,"2144":1,"2423":1,"2613":1},"1":{"1235":1,"1355":1,"1356":1,"1357":1,"1359":1,"1360":1,"1361":1,"1362":1,"1363":1,"1364":1,"1365":1,"1366":1,"1367":1,"1368":1,"1369":1,"1370":1,"1371":1,"1372":1,"1373":1,"1374":1,"1375":1,"1554":1,"1555":1,"1556":1,"2103":1,"2104":1,"2105":1,"2106":1,"2107":1,"2145":1,"2146":1,"2147":1,"2148":1,"2149":1,"2150":1,"2151":1,"2152":1,"2153":1,"2614":1,"2615":1,"2616":1,"2617":1,"2618":1,"2619":1,"2620":1},"2":{"0":1,"3":3,"5":2,"6":1,"9":1,"10":3,"11":1,"15":3,"16":2,"17":1,"19":1,"25":3,"28":1,"31":1,"33":1,"39":1,"48":1,"49":9,"50":5,"52":1,"55":1,"62":1,"64":1,"70":33,"73":2,"74":4,"75":3,"76":2,"77":1,"86":2,"87":1,"92":4,"94":1,"95":2,"99":3,"103":3,"108":1,"109":1,"110":2,"111":1,"113":1,"114":13,"118":1,"119":5,"120":4,"123":2,"124":4,"125":2,"126":1,"132":1,"133":1,"134":13,"142":1,"149":10,"154":2,"156":3,"158":3,"160":3,"169":3,"170":2,"172":2,"174":1,"175":2,"176":21,"179":1,"182":10,"184":3,"185":2,"186":1,"188":1,"189":1,"190":1,"191":13,"194":7,"195":1,"196":2,"199":11,"201":4,"202":2,"204":1,"206":2,"211":9,"213":1,"214":1,"215":2,"218":2,"221":2,"222":10,"228":3,"231":1,"232":1,"233":2,"234":4,"236":4,"240":2,"246":2,"248":1,"249":7,"251":1,"254":1,"262":1,"263":3,"264":1,"265":2,"266":7,"268":1,"272":1,"273":2,"274":1,"276":2,"277":2,"278":1,"282":5,"291":1,"292":1,"314":1,"315":1,"317":5,"319":2,"320":1,"321":1,"322":1,"331":2,"334":1,"335":3,"336":1,"337":4,"341":6,"343":1,"344":1,"345":1,"349":3,"352":3,"354":1,"357":2,"358":1,"364":1,"367":1,"370":10,"371":2,"373":1,"377":1,"378":3,"380":1,"381":2,"382":1,"383":2,"385":2,"386":2,"387":1,"388":1,"389":1,"390":1,"391":1,"393":1,"394":1,"399":2,"404":2,"405":1,"406":1,"424":1,"430":4,"432":3,"436":2,"437":3,"438":1,"439":1,"445":1,"446":3,"452":1,"453":2,"454":2,"455":1,"456":1,"457":2,"460":1,"461":2,"462":2,"469":1,"470":1,"473":2,"474":2,"476":1,"479":1,"480":1,"481":3,"482":1,"483":1,"484":1,"485":1,"496":2,"497":1,"498":1,"502":9,"505":2,"506":3,"508":1,"509":1,"510":3,"511":1,"516":3,"517":1,"521":1,"525":1,"529":5,"530":2,"532":2,"533":2,"534":3,"535":2,"536":1,"537":2,"538":2,"539":1,"540":3,"541":1,"551":1,"552":4,"554":3,"556":3,"557":4,"559":4,"560":6,"561":2,"562":1,"565":2,"566":2,"567":1,"573":1,"574":2,"580":1,"581":1,"584":2,"588":3,"596":1,"597":2,"598":2,"601":1,"607":3,"609":6,"610":3,"613":1,"614":2,"615":1,"616":1,"617":2,"621":1,"623":2,"624":4,"625":1,"626":5,"627":3,"628":3,"629":3,"630":1,"635":3,"636":2,"641":2,"643":2,"644":2,"648":1,"654":1,"656":1,"657":2,"658":2,"659":1,"660":1,"662":1,"669":3,"681":2,"683":1,"684":6,"685":6,"686":2,"688":1,"689":7,"690":3,"691":1,"692":1,"694":11,"696":1,"698":1,"699":1,"700":2,"701":1,"702":1,"703":2,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"726":1,"727":1,"731":1,"734":2,"757":1,"758":1,"760":2,"786":1,"787":1,"790":3,"818":1,"819":1,"821":6,"824":3,"850":1,"851":1,"852":1,"857":3,"885":1,"886":1,"891":3,"919":1,"920":1,"925":3,"953":1,"954":1,"959":3,"987":1,"988":1,"993":3,"1021":1,"1022":1,"1023":1,"1024":6,"1027":3,"1055":1,"1056":1,"1057":1,"1058":6,"1061":3,"1089":1,"1090":1,"1092":6,"1095":3,"1121":2,"1123":1,"1124":2,"1126":2,"1127":2,"1129":2,"1130":2,"1132":5,"1133":5,"1134":2,"1135":1,"1136":1,"1137":3,"1142":7,"1145":1,"1146":1,"1148":3,"1174":1,"1175":2,"1177":4,"1182":1,"1195":2,"1196":2,"1212":1,"1213":2,"1214":6,"1215":1,"1216":1,"1217":1,"1218":2,"1220":1,"1221":1,"1224":2,"1225":1,"1230":1,"1234":1,"1239":1,"1241":1,"1242":2,"1243":1,"1245":2,"1254":2,"1260":1,"1264":1,"1265":2,"1267":1,"1268":1,"1269":1,"1270":4,"1272":1,"1273":3,"1276":2,"1278":2,"1279":1,"1287":3,"1288":4,"1290":4,"1291":2,"1292":2,"1298":2,"1300":7,"1301":1,"1302":2,"1303":2,"1310":2,"1313":1,"1315":1,"1319":1,"1322":1,"1325":4,"1326":9,"1328":1,"1329":1,"1330":2,"1331":2,"1332":6,"1335":2,"1336":1,"1338":2,"1340":5,"1341":4,"1344":1,"1345":1,"1346":3,"1347":3,"1348":1,"1352":3,"1354":2,"1355":1,"1357":1,"1359":1,"1360":2,"1361":3,"1362":1,"1364":3,"1376":3,"1377":6,"1378":1,"1379":4,"1380":1,"1381":1,"1383":9,"1384":5,"1385":3,"1387":1,"1390":1,"1393":2,"1394":3,"1395":1,"1396":3,"1397":1,"1398":6,"1400":2,"1401":2,"1402":2,"1403":1,"1404":4,"1405":3,"1406":2,"1408":1,"1412":2,"1413":1,"1414":1,"1415":1,"1416":3,"1427":1,"1431":2,"1432":1,"1434":1,"1435":1,"1436":1,"1438":3,"1439":2,"1440":3,"1446":3,"1448":1,"1450":3,"1451":9,"1452":2,"1454":1,"1457":1,"1458":1,"1459":1,"1460":1,"1463":1,"1464":1,"1469":1,"1471":2,"1491":1,"1492":1,"1495":2,"1496":1,"1497":3,"1499":3,"1500":3,"1501":2,"1503":1,"1504":1,"1507":1,"1508":1,"1509":2,"1511":3,"1512":1,"1513":1,"1515":2,"1517":3,"1518":13,"1524":1,"1525":1,"1526":1,"1527":4,"1528":1,"1530":1,"1534":6,"1537":2,"1539":1,"1540":1,"1547":3,"1553":3,"1554":4,"1558":2,"1559":1,"1560":1,"1562":2,"1564":1,"1567":1,"1568":1,"1570":2,"1573":5,"1574":1,"1575":1,"1581":1,"1582":1,"1583":1,"1584":1,"1585":1,"1586":1,"1587":1,"1589":1,"1594":2,"1630":1,"1631":2,"1633":1,"1636":1,"1637":3,"1655":2,"1657":1,"1659":1,"1665":2,"1666":2,"1670":1,"1671":2,"1672":1,"1673":3,"1674":1,"1675":4,"1676":2,"1677":3,"1678":1,"1680":1,"1684":3,"1686":1,"1714":2,"1715":1,"1716":2,"1717":1,"1722":1,"1725":1,"1727":1,"1728":5,"1729":5,"1730":2,"1733":2,"1775":1,"1781":2,"1784":2,"1787":1,"1791":1,"1794":1,"1798":1,"1801":1,"1802":2,"1803":3,"1804":3,"1805":2,"1806":1,"1807":5,"1808":2,"1813":1,"1814":1,"1815":3,"1816":2,"1817":4,"1820":3,"1821":7,"1822":4,"1825":2,"1826":1,"1827":2,"1828":1,"1829":1,"1830":5,"1832":1,"1853":1,"1855":1,"1856":1,"1857":1,"1858":1,"1859":3,"1860":8,"1862":1,"1863":5,"1864":1,"1865":3,"1866":4,"1868":1,"1869":1,"1870":9,"1871":1,"1876":6,"1878":3,"1880":3,"1884":1,"1885":1,"1886":1,"1887":4,"1892":1,"1894":2,"1897":1,"1898":3,"1899":2,"1900":1,"1901":3,"1904":2,"1905":2,"1906":3,"1907":2,"1908":1,"1912":1,"1915":1,"1917":2,"1918":1,"1921":3,"1922":1,"1923":1,"1926":1,"1928":1,"1929":1,"1930":2,"1932":4,"1933":1,"1934":2,"1936":2,"1937":1,"1940":2,"1941":1,"1943":2,"1946":1,"1948":2,"1949":11,"1950":2,"1952":5,"1953":1,"1954":2,"1957":2,"2020":1,"2026":2,"2029":2,"2031":1,"2032":2,"2034":2,"2035":1,"2036":1,"2038":2,"2040":6,"2041":1,"2042":5,"2044":1,"2047":2,"2052":4,"2058":1,"2059":4,"2060":1,"2063":1,"2071":1,"2072":1,"2075":1,"2084":1,"2088":1,"2103":2,"2105":1,"2106":4,"2107":1,"2109":1,"2114":1,"2117":1,"2118":2,"2120":1,"2122":2,"2123":1,"2125":2,"2126":4,"2128":2,"2129":1,"2130":4,"2131":2,"2137":1,"2138":1,"2139":3,"2140":2,"2141":2,"2142":1,"2143":3,"2144":2,"2145":5,"2146":3,"2147":1,"2148":1,"2149":3,"2150":4,"2152":5,"2153":2,"2154":2,"2155":1,"2157":1,"2160":2,"2161":9,"2162":5,"2164":3,"2165":1,"2168":1,"2169":12,"2170":3,"2171":6,"2174":1,"2177":1,"2179":1,"2181":5,"2182":6,"2183":5,"2184":2,"2196":1,"2197":1,"2198":1,"2206":1,"2209":1,"2214":1,"2226":3,"2228":1,"2229":2,"2230":3,"2232":1,"2233":2,"2234":1,"2235":2,"2236":3,"2237":4,"2238":2,"2240":2,"2241":1,"2242":2,"2243":1,"2244":1,"2245":1,"2246":1,"2247":1,"2248":1,"2249":3,"2252":3,"2255":2,"2257":3,"2260":1,"2261":1,"2262":2,"2263":12,"2264":1,"2267":2,"2268":3,"2270":1,"2271":1,"2272":2,"2273":5,"2274":5,"2275":1,"2276":4,"2277":2,"2278":2,"2279":2,"2280":4,"2284":1,"2294":1,"2295":1,"2296":2,"2299":8,"2300":4,"2301":2,"2302":1,"2303":3,"2305":6,"2306":1,"2307":1,"2308":1,"2309":3,"2311":8,"2312":1,"2313":1,"2314":1,"2318":2,"2319":1,"2320":2,"2327":4,"2335":1,"2342":2,"2343":1,"2344":2,"2345":1,"2346":2,"2347":3,"2348":2,"2349":1,"2350":2,"2353":3,"2354":2,"2355":2,"2357":1,"2369":1,"2375":1,"2376":1,"2377":1,"2384":2,"2385":1,"2393":2,"2395":2,"2398":3,"2401":4,"2402":2,"2403":2,"2404":2,"2405":3,"2406":2,"2407":2,"2408":2,"2410":2,"2411":2,"2413":1,"2421":1,"2422":2,"2423":1,"2424":1,"2428":3,"2435":2,"2436":2,"2437":1,"2438":1,"2439":2,"2440":4,"2442":1,"2445":4,"2446":1,"2447":1,"2448":2,"2450":9,"2452":4,"2453":1,"2454":2,"2460":1,"2463":1,"2468":4,"2469":2,"2472":3,"2473":2,"2474":8,"2475":1,"2477":2,"2478":1,"2479":1,"2480":1,"2482":2,"2490":5,"2491":2,"2492":1,"2494":1,"2496":1,"2503":1,"2506":1,"2508":4,"2510":1,"2512":1,"2513":8,"2515":2,"2516":1,"2519":2,"2523":1,"2524":3,"2525":1,"2526":1,"2527":1,"2529":2,"2530":2,"2533":1,"2534":1,"2539":3,"2541":2,"2543":2,"2544":1,"2545":1,"2546":3,"2548":2,"2549":1,"2550":2,"2552":1,"2553":2,"2555":1,"2556":5,"2558":2,"2559":1,"2563":1,"2564":6,"2566":19,"2567":4,"2568":2,"2569":4,"2570":1,"2571":1,"2572":1,"2573":1,"2574":5,"2575":3,"2576":35,"2577":14,"2578":2,"2581":1,"2583":1,"2585":2,"2587":5,"2588":1,"2590":1,"2591":2,"2592":2,"2593":2,"2594":4,"2595":2,"2596":3,"2597":2,"2598":1,"2600":1,"2601":1,"2607":2,"2613":1,"2614":4,"2615":7,"2616":4,"2619":1,"2620":4,"2629":1,"2630":1,"2632":1,"2638":1,"2660":1,"2662":1,"2666":2,"2670":1,"2671":2,"2673":2,"2674":2,"2675":2,"2676":1,"2677":1,"2680":1,"2681":1,"2682":1,"2686":10,"2687":1,"2688":5,"2689":2,"2691":2,"2694":1,"2695":5,"2697":3,"2699":2,"2700":2,"2702":1,"2703":1,"2705":1,"2708":3,"2710":3,"2711":3,"2712":1,"2713":1,"2718":3,"2719":1,"2721":1,"2723":2,"2724":1,"2727":1,"2728":12,"2729":5,"2730":3,"2734":2,"2735":4,"2736":1,"2737":1,"2738":5,"2739":1,"2740":1,"2743":3,"2744":3,"2746":2,"2749":2,"2750":2,"2752":2,"2753":5,"2754":1,"2755":1,"2756":1,"2757":4}}],["is25lp080",{"2":{"2544":2}}],["isc20",{"2":{"1905":1}}],["isc21",{"2":{"1905":1}}],["isdata",{"0":{"1617":1,"1619":1},"1":{"1618":1,"1620":1,"1621":1},"2":{"1618":1,"1620":1,"1621":1}}],["is=yes",{"2":{"1319":1}}],["isp",{"0":{"2327":1,"2329":1,"2331":1,"2333":1,"2638":1},"1":{"2328":1,"2329":1,"2330":2,"2331":1,"2332":2,"2333":1,"2334":2,"2335":1,"2336":1,"2337":1,"2338":1,"2339":1,"2340":1,"2341":1,"2342":1,"2343":1,"2344":1,"2345":1,"2346":1,"2347":1,"2348":1,"2349":1,"2350":1,"2351":1,"2352":1,"2353":1},"2":{"371":1,"629":1,"2235":1,"2236":1,"2327":2,"2328":3,"2329":2,"2331":2,"2333":2,"2336":1,"2338":1,"2339":1,"2341":2,"2342":1,"2347":2,"2349":1}}],["isn",{"0":{"1260":1,"1272":1},"2":{"291":1,"538":1,"578":1,"586":1,"1126":1,"1303":1,"1378":1,"1398":1,"1430":1,"1871":1,"2125":1,"2274":1,"2311":1,"2506":1,"2508":1,"2702":1,"2741":1}}],["ish",{"0":{"288":1},"2":{"160":2,"211":1,"2171":1}}],["issi",{"2":{"114":2,"134":3,"176":1,"211":1,"236":4,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1}}],["issuing",{"2":{"49":1}}],["issued",{"2":{"2721":1}}],["issuecomment",{"2":{"1281":1}}],["issues",{"0":{"2521":1,"2617":1,"2716":1},"1":{"2618":1,"2619":1,"2620":1},"2":{"24":1,"25":1,"86":1,"114":7,"134":8,"149":2,"160":1,"176":3,"199":1,"211":2,"240":1,"263":1,"266":1,"273":1,"276":1,"352":1,"505":2,"539":1,"554":1,"1122":1,"1136":1,"1138":1,"1238":1,"1241":1,"1242":1,"1252":1,"1253":1,"1259":1,"1260":1,"1274":1,"1275":1,"1278":1,"1281":3,"1283":1,"1298":1,"1332":1,"1336":1,"1368":1,"1379":1,"1399":1,"1403":1,"1464":1,"1515":1,"1880":1,"1884":1,"2125":1,"2128":1,"2150":1,"2183":1,"2250":1,"2398":1,"2411":2,"2441":1,"2474":1,"2475":1,"2480":1,"2490":1,"2501":1,"2510":1,"2514":1,"2517":1,"2521":1,"2610":1,"2726":2}}],["issue",{"0":{"1260":1},"2":{"5":1,"6":1,"73":1,"92":1,"114":2,"149":2,"176":4,"191":2,"199":3,"211":3,"236":1,"249":1,"352":1,"485":1,"511":1,"545":1,"553":1,"554":6,"559":1,"560":1,"561":1,"585":1,"609":1,"613":1,"1225":1,"1241":1,"1255":1,"1258":1,"1260":1,"1261":1,"1264":1,"1278":1,"1346":1,"1830":1,"1897":1,"2286":1,"2299":1,"2335":1,"2398":1,"2409":1,"2411":1,"2478":1,"2490":1,"2517":1,"2521":1,"2529":1,"2543":1,"2563":1,"2565":1,"2568":1,"2637":1,"2670":1,"2716":2}}],["is31flcommon",{"2":{"249":1}}],["is31fl3236",{"0":{"755":1,"762":1,"764":1,"766":1,"768":1,"770":1,"772":1,"774":1,"776":1,"778":1,"780":1,"782":1},"1":{"756":1,"757":1,"758":1,"759":1,"760":1,"761":1,"762":1,"763":2,"764":1,"765":2,"766":1,"767":2,"768":1,"769":2,"770":1,"771":2,"772":1,"773":2,"774":1,"775":2,"776":1,"777":2,"778":1,"779":2,"780":1,"781":2,"782":1,"783":2},"2":{"266":1,"755":1,"756":4,"757":7,"758":6,"760":6,"768":1,"769":1,"772":1,"773":1,"776":1,"777":1,"778":1,"779":1,"1724":1,"1945":1,"2695":1}}],["is31fl3218",{"0":{"729":1,"736":1,"738":1,"739":1,"741":1,"743":1,"745":1,"747":1,"749":1,"751":1,"753":1,"754":1},"1":{"730":1,"731":1,"732":1,"733":1,"734":1,"735":1,"736":1,"737":2,"738":1,"739":1,"740":2,"741":1,"742":2,"743":1,"744":2,"745":1,"746":2,"747":1,"748":2,"749":1,"750":2,"751":1,"752":2,"753":1,"754":1},"2":{"236":3,"729":1,"730":4,"731":3,"732":2,"734":6,"741":1,"742":1,"745":1,"746":1,"749":1,"750":1,"751":1,"752":1,"1724":2,"1945":2,"2688":1,"2695":1}}],["is31fl3729",{"0":{"816":1,"826":1,"828":1,"830":1,"832":1,"834":1,"836":1,"838":1,"840":1,"842":1,"844":1,"846":1},"1":{"817":1,"818":1,"819":1,"820":1,"821":1,"822":1,"823":1,"824":1,"825":1,"826":1,"827":2,"828":1,"829":2,"830":1,"831":2,"832":1,"833":2,"834":1,"835":2,"836":1,"837":2,"838":1,"839":2,"840":1,"841":2,"842":1,"843":2,"844":1,"845":2,"846":1,"847":2},"2":{"249":2,"816":1,"817":4,"818":14,"819":6,"820":10,"821":22,"822":1,"824":6,"832":1,"833":1,"836":1,"837":1,"840":1,"841":1,"842":1,"843":1,"1724":1,"1945":1,"2695":1}}],["is31fl3741a",{"2":{"951":1,"953":1,"955":1}}],["is31fl3741",{"0":{"951":1,"961":1,"963":1,"965":1,"967":1,"969":1,"971":1,"973":1,"975":1,"977":1,"979":1,"981":1,"983":1},"1":{"952":1,"953":1,"954":1,"955":1,"956":1,"957":1,"958":1,"959":1,"960":1,"961":1,"962":2,"963":1,"964":2,"965":1,"966":2,"967":1,"968":2,"969":1,"970":2,"971":1,"972":2,"973":1,"974":2,"975":1,"976":2,"977":1,"978":2,"979":1,"980":2,"981":1,"982":2,"983":1,"984":2},"2":{"221":2,"236":2,"249":1,"952":4,"953":15,"954":6,"955":6,"956":22,"957":1,"959":6,"969":1,"970":1,"973":1,"974":1,"977":1,"978":1,"979":1,"980":1,"1724":1,"1945":1,"2688":1,"2695":1}}],["is31fl3746a",{"0":{"1087":1,"1097":1,"1099":1,"1101":1,"1103":1,"1105":1,"1107":1,"1109":1,"1111":1,"1113":1,"1115":1,"1117":1,"1119":1},"1":{"1088":1,"1089":1,"1090":1,"1091":1,"1092":1,"1093":1,"1094":1,"1095":1,"1096":1,"1097":1,"1098":2,"1099":1,"1100":2,"1101":1,"1102":2,"1103":1,"1104":2,"1105":1,"1106":2,"1107":1,"1108":2,"1109":1,"1110":2,"1111":1,"1112":2,"1113":1,"1114":2,"1115":1,"1116":2,"1117":1,"1118":2,"1119":1,"1120":2},"2":{"147":1,"149":1,"221":4,"249":1,"1087":1,"1088":4,"1089":15,"1090":18,"1091":9,"1092":22,"1093":1,"1095":6,"1105":1,"1106":1,"1109":1,"1110":1,"1113":1,"1114":1,"1115":1,"1116":1,"1724":1,"1945":1,"2688":1,"2695":1}}],["is31fl3745",{"0":{"1053":1,"1063":1,"1065":1,"1067":1,"1069":1,"1071":1,"1073":1,"1075":1,"1077":1,"1079":1,"1081":1,"1083":1,"1085":1},"1":{"1054":1,"1055":1,"1056":1,"1057":1,"1058":1,"1059":1,"1060":1,"1061":1,"1062":1,"1063":1,"1064":2,"1065":1,"1066":2,"1067":1,"1068":2,"1069":1,"1070":2,"1071":1,"1072":2,"1073":1,"1074":2,"1075":1,"1076":2,"1077":1,"1078":2,"1079":1,"1080":2,"1081":1,"1082":2,"1083":1,"1084":2,"1085":1,"1086":2},"2":{"147":1,"149":1,"221":4,"249":1,"1053":1,"1054":4,"1055":21,"1056":18,"1057":5,"1058":22,"1059":1,"1061":6,"1071":1,"1072":1,"1075":1,"1076":1,"1079":1,"1080":1,"1081":1,"1082":1,"1724":1,"1945":1,"2688":1,"2695":1}}],["is31fl3743a",{"0":{"1019":1,"1029":1,"1031":1,"1033":1,"1035":1,"1037":1,"1039":1,"1041":1,"1043":1,"1045":1,"1047":1,"1049":1,"1051":1},"1":{"1020":1,"1021":1,"1022":1,"1023":1,"1024":1,"1025":1,"1026":1,"1027":1,"1028":1,"1029":1,"1030":2,"1031":1,"1032":2,"1033":1,"1034":2,"1035":1,"1036":2,"1037":1,"1038":2,"1039":1,"1040":2,"1041":1,"1042":2,"1043":1,"1044":2,"1045":1,"1046":2,"1047":1,"1048":2,"1049":1,"1050":2,"1051":1,"1052":2},"2":{"147":1,"149":1,"221":4,"249":1,"1019":1,"1020":4,"1021":21,"1022":18,"1023":5,"1024":22,"1025":1,"1027":6,"1037":1,"1038":1,"1041":1,"1042":1,"1045":1,"1046":1,"1047":1,"1048":1,"1724":1,"1945":1,"2688":1,"2695":1}}],["is31fl3742a",{"0":{"985":1,"995":1,"997":1,"999":1,"1001":1,"1003":1,"1005":1,"1007":1,"1009":1,"1011":1,"1013":1,"1015":1,"1017":1},"1":{"986":1,"987":1,"988":1,"989":1,"990":1,"991":1,"992":1,"993":1,"994":1,"995":1,"996":2,"997":1,"998":2,"999":1,"1000":2,"1001":1,"1002":2,"1003":1,"1004":2,"1005":1,"1006":2,"1007":1,"1008":2,"1009":1,"1010":2,"1011":1,"1012":2,"1013":1,"1014":2,"1015":1,"1016":2,"1017":1,"1018":2},"2":{"147":1,"149":1,"221":4,"249":1,"985":1,"986":4,"987":15,"988":6,"989":6,"990":22,"991":1,"993":6,"1003":1,"1004":1,"1007":1,"1008":1,"1011":1,"1012":1,"1013":1,"1014":1,"1724":1,"1945":1,"2688":1,"2695":1}}],["is31fl3731",{"0":{"784":1,"792":1,"794":1,"796":1,"798":1,"800":1,"802":1,"804":1,"806":1,"808":1,"810":1,"812":1,"814":1,"2289":1},"1":{"785":1,"786":1,"787":1,"788":1,"789":1,"790":1,"791":1,"792":1,"793":2,"794":1,"795":2,"796":1,"797":2,"798":1,"799":2,"800":1,"801":2,"802":1,"803":2,"804":1,"805":2,"806":1,"807":2,"808":1,"809":2,"810":1,"811":2,"812":1,"813":2,"814":1,"815":2},"2":{"221":4,"236":1,"784":1,"785":4,"786":8,"787":6,"788":2,"790":6,"800":1,"801":1,"804":1,"805":1,"808":1,"809":1,"810":1,"811":1,"1724":1,"1945":1,"2688":1,"2695":1}}],["is31fl3736b",{"2":{"885":1,"887":1}}],["is31fl3736",{"0":{"883":1,"893":1,"895":1,"897":1,"899":1,"901":1,"903":1,"905":1,"907":1,"909":1,"911":1,"913":1,"915":1},"1":{"884":1,"885":1,"886":1,"887":1,"888":1,"889":1,"890":1,"891":1,"892":1,"893":1,"894":2,"895":1,"896":2,"897":1,"898":2,"899":1,"900":2,"901":1,"902":2,"903":1,"904":2,"905":1,"906":2,"907":1,"908":2,"909":1,"910":2,"911":1,"912":2,"913":1,"914":2,"915":1,"916":2},"2":{"211":3,"221":2,"236":2,"249":1,"883":1,"884":4,"885":14,"886":18,"887":7,"888":22,"889":1,"891":6,"901":1,"902":1,"905":1,"906":1,"909":1,"910":1,"911":1,"912":1,"1724":1,"1945":1,"2688":1,"2695":1}}],["is31fl3737b",{"2":{"160":1,"919":1,"921":1}}],["is31fl3737",{"0":{"917":1,"927":1,"929":1,"931":1,"933":1,"935":1,"937":1,"939":1,"941":1,"943":1,"945":1,"947":1,"949":1},"1":{"918":1,"919":1,"920":1,"921":1,"922":1,"923":1,"924":1,"925":1,"926":1,"927":1,"928":2,"929":1,"930":2,"931":1,"932":2,"933":1,"934":2,"935":1,"936":2,"937":1,"938":2,"939":1,"940":2,"941":1,"942":2,"943":1,"944":2,"945":1,"946":2,"947":1,"948":2,"949":1,"950":2},"2":{"114":2,"176":1,"191":1,"221":2,"236":2,"917":1,"918":4,"919":14,"920":6,"921":7,"922":22,"923":1,"925":6,"935":1,"936":1,"939":1,"940":1,"943":1,"944":1,"945":1,"946":1,"1724":1,"1945":1,"2688":1,"2695":1}}],["is31fl3733b",{"2":{"134":1,"850":1,"853":1}}],["is31fl3733",{"0":{"848":1,"859":1,"861":1,"863":1,"865":1,"867":1,"869":1,"871":1,"873":1,"875":1,"877":1,"879":1,"881":1,"2290":1},"1":{"849":1,"850":1,"851":1,"852":1,"853":1,"854":1,"855":1,"856":1,"857":1,"858":1,"859":1,"860":2,"861":1,"862":2,"863":1,"864":2,"865":1,"866":2,"867":1,"868":2,"869":1,"870":2,"871":1,"872":2,"873":1,"874":2,"875":1,"876":2,"877":1,"878":2,"879":1,"880":2,"881":1,"882":2},"2":{"93":1,"149":1,"221":2,"236":2,"249":2,"848":1,"849":4,"850":22,"851":18,"852":5,"853":7,"854":22,"855":1,"857":6,"867":1,"868":1,"871":1,"872":1,"875":1,"876":1,"877":1,"878":1,"1724":1,"1945":1,"2688":1,"2695":1}}],["is31common",{"2":{"249":4}}],["is31",{"2":{"114":1}}],["isolated",{"2":{"2592":1}}],["isolation",{"2":{"241":2}}],["iso",{"2":{"102":3,"114":2,"122":3,"143":2,"149":2,"159":2,"168":2,"191":1,"199":1,"211":5,"217":2,"226":4,"236":2,"266":2,"277":1,"370":2,"385":1,"1268":3,"1347":1,"1355":2,"1378":2,"2268":1,"2302":5,"2553":1,"2617":1,"2619":2,"2686":5,"2712":18}}],["is",{"0":{"141":1,"339":1,"545":1,"547":1,"1240":1,"1252":1,"1257":1,"1483":1,"1488":1,"1741":1,"1845":1,"1898":1,"1940":1,"1941":1,"1968":1,"2322":1},"1":{"340":1,"1484":1,"1489":1,"1742":1,"1846":1,"1847":1,"1969":1},"2":{"0":2,"3":1,"7":1,"9":2,"10":2,"13":2,"14":1,"15":1,"18":4,"19":2,"23":2,"24":1,"25":1,"28":2,"30":1,"31":3,"34":2,"36":1,"39":2,"45":2,"48":1,"49":4,"50":3,"52":2,"70":23,"76":1,"88":1,"90":1,"94":1,"98":1,"103":1,"104":1,"113":2,"114":1,"118":1,"120":2,"123":1,"126":1,"127":1,"130":1,"134":3,"141":1,"149":4,"152":1,"153":3,"154":3,"156":3,"160":2,"166":1,"176":3,"179":1,"191":3,"194":4,"195":4,"196":1,"199":5,"201":2,"202":1,"203":2,"204":1,"206":1,"209":3,"211":2,"213":2,"218":1,"222":1,"224":3,"228":1,"230":1,"232":2,"233":3,"234":1,"235":2,"236":3,"238":1,"240":1,"244":1,"246":2,"249":4,"251":1,"262":2,"263":1,"266":2,"268":1,"273":1,"276":2,"282":3,"286":1,"288":1,"290":5,"292":1,"293":2,"300":1,"303":1,"304":1,"306":1,"307":1,"308":1,"312":1,"313":1,"315":4,"316":1,"317":2,"322":1,"323":1,"324":2,"325":1,"328":1,"329":1,"331":3,"334":1,"335":1,"336":1,"337":3,"339":1,"340":6,"341":10,"343":2,"344":2,"345":2,"346":3,"347":1,"349":2,"350":5,"352":2,"353":2,"354":1,"355":2,"366":1,"370":2,"371":5,"374":4,"378":1,"380":1,"381":1,"383":1,"385":2,"386":1,"387":1,"391":1,"393":2,"394":2,"402":1,"403":1,"405":1,"413":1,"416":1,"428":2,"430":6,"431":1,"433":1,"434":1,"435":1,"436":1,"437":1,"440":2,"445":1,"453":6,"454":2,"455":1,"457":2,"458":1,"462":1,"466":2,"467":3,"468":2,"469":1,"470":2,"471":1,"472":1,"474":3,"479":4,"481":1,"482":4,"483":2,"484":2,"493":3,"495":1,"496":2,"497":2,"501":2,"502":17,"505":6,"506":5,"509":11,"510":8,"511":8,"512":3,"513":5,"515":3,"516":2,"519":1,"520":2,"521":1,"522":1,"526":1,"527":1,"529":7,"532":1,"533":1,"534":9,"537":2,"540":2,"541":1,"542":1,"546":1,"551":1,"552":2,"554":3,"555":1,"556":2,"557":3,"560":4,"562":1,"564":2,"566":1,"567":2,"568":1,"569":2,"570":2,"571":2,"572":2,"573":2,"574":5,"575":2,"578":4,"580":2,"581":2,"584":1,"586":1,"588":6,"589":3,"590":1,"592":10,"597":4,"598":7,"599":1,"600":1,"602":1,"605":1,"606":2,"607":1,"609":3,"610":2,"612":1,"614":2,"619":2,"620":2,"621":2,"623":2,"624":1,"626":3,"627":1,"628":1,"629":2,"630":1,"635":2,"636":3,"638":1,"639":1,"641":1,"643":1,"654":1,"655":2,"656":1,"659":3,"660":1,"661":1,"662":2,"665":1,"681":5,"683":1,"684":5,"685":2,"686":1,"687":1,"688":5,"689":4,"690":3,"691":1,"692":5,"693":1,"694":1,"695":2,"696":4,"697":2,"698":4,"700":1,"701":1,"702":1,"703":4,"707":1,"726":2,"730":1,"732":1,"734":2,"756":1,"758":1,"760":2,"785":1,"787":1,"790":2,"817":1,"819":1,"822":1,"824":2,"849":1,"855":1,"857":2,"884":1,"889":1,"891":2,"918":1,"920":1,"923":1,"925":2,"952":1,"954":1,"957":1,"959":2,"986":1,"988":1,"991":1,"993":2,"1020":1,"1025":1,"1027":2,"1054":1,"1059":1,"1061":2,"1088":1,"1093":1,"1095":2,"1121":2,"1122":3,"1123":3,"1125":3,"1126":5,"1127":1,"1128":4,"1129":4,"1130":1,"1132":3,"1133":4,"1134":4,"1137":1,"1142":4,"1143":1,"1144":1,"1146":1,"1148":2,"1175":1,"1176":2,"1177":2,"1181":1,"1182":1,"1196":1,"1197":1,"1205":1,"1211":1,"1212":1,"1213":1,"1214":1,"1215":1,"1216":1,"1217":1,"1219":2,"1221":2,"1222":1,"1223":2,"1225":6,"1230":2,"1235":1,"1236":1,"1238":3,"1243":1,"1245":1,"1250":3,"1251":1,"1252":2,"1253":1,"1254":3,"1257":1,"1258":2,"1259":1,"1260":1,"1270":3,"1271":1,"1272":3,"1273":2,"1275":1,"1276":1,"1278":4,"1283":2,"1284":6,"1286":1,"1287":5,"1290":1,"1293":2,"1294":1,"1298":1,"1300":6,"1302":1,"1303":6,"1304":1,"1310":1,"1312":1,"1313":1,"1314":1,"1316":3,"1317":2,"1318":1,"1320":1,"1321":2,"1325":3,"1326":14,"1328":1,"1329":18,"1330":1,"1331":5,"1332":8,"1333":1,"1334":1,"1335":9,"1336":4,"1338":1,"1339":1,"1340":5,"1341":8,"1344":6,"1345":1,"1346":1,"1351":1,"1353":2,"1355":1,"1356":2,"1357":1,"1359":16,"1360":6,"1361":1,"1365":3,"1368":3,"1375":7,"1377":3,"1378":1,"1379":2,"1380":3,"1381":1,"1383":3,"1384":2,"1388":1,"1390":1,"1391":1,"1392":1,"1393":1,"1394":1,"1398":6,"1399":11,"1400":4,"1401":1,"1403":4,"1404":1,"1405":2,"1406":3,"1410":1,"1411":9,"1414":3,"1415":3,"1416":6,"1423":3,"1425":1,"1427":1,"1430":7,"1431":5,"1435":1,"1436":3,"1438":5,"1439":3,"1440":3,"1441":6,"1442":1,"1445":6,"1446":3,"1448":2,"1449":2,"1450":5,"1451":11,"1452":2,"1454":2,"1455":1,"1457":1,"1458":3,"1459":4,"1460":1,"1461":1,"1462":2,"1463":3,"1464":1,"1469":1,"1471":4,"1484":1,"1489":1,"1491":3,"1492":3,"1494":1,"1495":5,"1496":3,"1497":4,"1499":9,"1500":1,"1501":3,"1503":2,"1504":2,"1505":2,"1506":5,"1507":1,"1508":1,"1510":1,"1511":3,"1512":1,"1514":1,"1516":1,"1518":5,"1519":2,"1520":2,"1521":4,"1522":1,"1524":2,"1525":5,"1526":1,"1527":1,"1528":4,"1529":2,"1530":2,"1531":1,"1533":4,"1534":3,"1537":1,"1538":1,"1551":1,"1553":3,"1554":2,"1555":1,"1556":3,"1560":2,"1562":1,"1563":2,"1567":2,"1568":4,"1570":4,"1573":14,"1574":1,"1576":2,"1577":4,"1579":2,"1581":1,"1582":5,"1594":3,"1598":1,"1599":1,"1600":1,"1609":1,"1612":2,"1613":1,"1614":2,"1615":1,"1616":1,"1618":1,"1621":1,"1626":1,"1628":1,"1632":1,"1633":1,"1634":2,"1635":1,"1636":1,"1637":4,"1642":1,"1652":1,"1655":1,"1656":2,"1657":1,"1658":2,"1660":1,"1663":1,"1665":3,"1666":1,"1668":2,"1670":10,"1671":5,"1672":1,"1673":7,"1674":7,"1675":18,"1678":1,"1680":2,"1682":2,"1683":2,"1684":4,"1693":1,"1694":3,"1696":1,"1697":1,"1714":1,"1715":1,"1716":1,"1717":2,"1718":2,"1719":1,"1722":2,"1724":2,"1725":13,"1726":3,"1728":1,"1730":1,"1731":1,"1733":1,"1736":1,"1738":1,"1740":1,"1742":1,"1749":1,"1752":1,"1754":1,"1758":1,"1760":1,"1764":1,"1766":1,"1769":1,"1775":1,"1776":2,"1778":2,"1780":2,"1783":2,"1794":1,"1798":1,"1802":1,"1803":6,"1804":4,"1805":7,"1806":3,"1807":3,"1808":1,"1809":1,"1814":1,"1815":1,"1816":5,"1817":2,"1819":1,"1820":3,"1821":6,"1822":16,"1824":1,"1825":2,"1826":1,"1827":4,"1828":1,"1830":1,"1831":1,"1832":2,"1847":1,"1853":1,"1855":1,"1856":2,"1857":3,"1860":8,"1862":1,"1863":4,"1865":1,"1867":1,"1868":2,"1869":1,"1870":6,"1871":1,"1872":6,"1873":2,"1876":13,"1878":4,"1879":1,"1880":7,"1885":6,"1886":1,"1887":1,"1889":1,"1890":1,"1891":2,"1892":2,"1894":4,"1895":1,"1897":1,"1898":4,"1900":3,"1901":1,"1903":1,"1904":1,"1908":2,"1910":1,"1912":2,"1915":1,"1917":1,"1921":4,"1923":6,"1929":3,"1932":5,"1933":4,"1934":2,"1935":2,"1936":1,"1937":3,"1939":2,"1940":8,"1941":3,"1943":1,"1945":2,"1946":13,"1947":4,"1948":10,"1949":2,"1950":3,"1954":2,"1955":1,"1957":1,"1959":2,"1960":1,"1963":1,"1965":1,"1967":1,"1969":1,"1976":1,"1979":1,"1981":1,"1985":1,"1987":1,"1991":1,"1993":1,"1997":1,"1999":1,"2003":1,"2005":1,"2008":1,"2014":1,"2020":1,"2021":2,"2023":2,"2025":2,"2028":2,"2031":1,"2032":3,"2034":10,"2035":1,"2036":3,"2037":1,"2038":1,"2040":1,"2041":2,"2042":4,"2044":3,"2045":2,"2051":4,"2055":2,"2056":3,"2057":1,"2060":1,"2062":1,"2063":3,"2065":1,"2066":1,"2071":6,"2072":2,"2073":3,"2074":3,"2076":1,"2085":1,"2087":1,"2091":1,"2093":1,"2095":1,"2097":1,"2105":1,"2106":2,"2107":3,"2108":1,"2113":6,"2114":4,"2118":2,"2119":1,"2120":1,"2123":1,"2124":2,"2125":7,"2126":4,"2127":3,"2128":4,"2129":10,"2130":5,"2131":12,"2132":4,"2133":1,"2134":1,"2139":1,"2140":5,"2142":2,"2143":9,"2144":1,"2145":1,"2147":5,"2148":3,"2149":4,"2150":1,"2152":13,"2154":2,"2155":3,"2156":1,"2158":2,"2161":15,"2162":22,"2167":1,"2168":1,"2169":24,"2170":2,"2171":16,"2173":2,"2177":2,"2180":6,"2181":3,"2182":1,"2183":6,"2184":1,"2192":1,"2194":1,"2196":1,"2197":1,"2198":1,"2212":1,"2213":1,"2226":6,"2228":4,"2229":1,"2230":2,"2232":2,"2233":1,"2234":4,"2235":3,"2236":3,"2237":3,"2238":1,"2239":1,"2240":2,"2241":2,"2242":3,"2243":3,"2244":3,"2245":3,"2247":3,"2249":2,"2251":1,"2252":4,"2254":1,"2255":1,"2257":1,"2258":2,"2259":4,"2260":1,"2262":6,"2263":9,"2266":1,"2267":1,"2268":2,"2269":1,"2270":2,"2272":2,"2273":5,"2274":2,"2275":1,"2276":3,"2277":3,"2278":1,"2279":3,"2280":1,"2282":1,"2284":2,"2294":1,"2295":3,"2297":1,"2298":1,"2299":2,"2300":3,"2301":1,"2302":4,"2303":1,"2305":3,"2308":1,"2309":1,"2310":1,"2311":17,"2313":2,"2314":3,"2315":1,"2316":1,"2317":2,"2318":3,"2319":1,"2322":1,"2326":1,"2327":2,"2328":2,"2335":1,"2339":1,"2341":1,"2342":1,"2344":3,"2345":2,"2346":1,"2347":5,"2348":2,"2349":2,"2350":4,"2353":5,"2354":1,"2356":1,"2363":1,"2366":1,"2367":2,"2376":10,"2377":10,"2384":1,"2400":3,"2402":4,"2403":1,"2405":1,"2406":4,"2407":5,"2408":1,"2411":4,"2413":1,"2414":1,"2417":2,"2418":2,"2421":1,"2422":1,"2423":2,"2424":1,"2425":1,"2427":3,"2428":3,"2429":1,"2431":1,"2432":1,"2436":2,"2441":2,"2442":2,"2446":2,"2448":1,"2450":4,"2451":2,"2452":1,"2454":4,"2455":1,"2459":2,"2460":2,"2463":2,"2468":3,"2469":4,"2473":2,"2474":4,"2475":1,"2476":2,"2477":1,"2478":2,"2479":3,"2480":6,"2481":1,"2490":5,"2491":7,"2492":2,"2495":1,"2496":1,"2497":4,"2498":3,"2501":1,"2503":2,"2506":4,"2507":2,"2509":1,"2510":2,"2513":2,"2514":1,"2515":2,"2516":3,"2517":1,"2518":4,"2519":3,"2521":1,"2522":1,"2523":4,"2524":6,"2525":5,"2526":4,"2527":1,"2529":2,"2530":2,"2539":2,"2541":5,"2543":2,"2544":2,"2545":1,"2546":2,"2548":7,"2549":1,"2550":1,"2551":1,"2554":1,"2555":1,"2556":1,"2557":1,"2558":1,"2559":1,"2560":1,"2563":1,"2564":9,"2566":12,"2567":2,"2568":2,"2569":5,"2570":2,"2572":1,"2573":4,"2574":3,"2575":5,"2576":36,"2577":29,"2578":3,"2581":1,"2584":3,"2585":4,"2586":2,"2587":2,"2590":3,"2591":2,"2592":4,"2593":2,"2594":1,"2595":2,"2596":6,"2597":6,"2603":4,"2605":2,"2606":1,"2607":1,"2608":1,"2611":6,"2614":4,"2615":3,"2616":1,"2619":2,"2625":1,"2627":1,"2629":1,"2630":1,"2633":1,"2634":1,"2641":3,"2642":1,"2647":1,"2651":1,"2654":2,"2659":1,"2660":1,"2664":2,"2666":1,"2669":2,"2671":2,"2673":2,"2677":2,"2680":1,"2686":3,"2688":1,"2689":1,"2691":1,"2694":2,"2695":1,"2701":3,"2702":1,"2707":1,"2709":2,"2710":3,"2711":4,"2714":2,"2715":1,"2716":1,"2718":3,"2719":6,"2720":2,"2721":1,"2727":5,"2728":7,"2729":11,"2734":4,"2735":11,"2736":7,"2737":6,"2738":1,"2739":1,"2740":4,"2743":5,"2744":6,"2745":6,"2746":3,"2747":1,"2748":1,"2749":6,"2750":1,"2752":2,"2753":1,"2757":4}}],["bndu",{"2":{"1793":1,"2371":1}}],["bndd",{"2":{"1793":1,"2371":1}}],["bn009",{"2":{"207":1,"211":1}}],["bn009r2",{"2":{"207":1}}],["bn006",{"2":{"191":1}}],["b♭",{"2":{"1793":6,"2371":6}}],["bb5",{"2":{"1793":1,"2371":1}}],["bb4",{"2":{"1793":1,"2371":1}}],["bb3",{"2":{"1793":1,"2371":1}}],["bb2",{"2":{"1793":1,"2371":1}}],["bb1",{"2":{"1793":1,"2371":1}}],["bb",{"2":{"1793":1,"2371":1}}],["bbs",{"2":{"266":1}}],["b9",{"2":{"1547":1,"2530":1}}],["b8",{"2":{"1469":1,"2524":1,"2530":1}}],["b87",{"2":{"211":2}}],["b3",{"2":{"576":2,"1176":3,"1562":6,"1591":1,"1717":1,"1793":1,"2330":1,"2332":2,"2334":1,"2371":1,"2530":2,"2558":1}}],["b2",{"2":{"576":2,"635":1,"1176":3,"1320":1,"1395":2,"1459":1,"1466":1,"1562":6,"1591":1,"1717":1,"1793":1,"2330":1,"2332":2,"2334":1,"2371":1,"2516":1,"2530":2,"2558":1,"2689":2}}],["b11",{"2":{"2530":1}}],["b10",{"2":{"2530":1}}],["b15",{"2":{"635":1,"1177":1,"2530":1}}],["b15288fb87",{"2":{"95":1}}],["b14",{"2":{"635":1,"1177":1,"1547":1,"2530":1}}],["b12",{"2":{"635":1,"1557":1,"1558":1,"2530":1}}],["b13",{"2":{"635":1,"1177":1,"1557":1,"1558":1,"2530":1}}],["b1²",{"2":{"635":1}}],["b1¹",{"2":{"635":1}}],["b1",{"2":{"576":2,"635":4,"1176":2,"1395":2,"1466":1,"1562":6,"1591":1,"1717":1,"1793":1,"2330":1,"2332":1,"2334":1,"2371":1,"2450":1,"2530":2,"2558":1,"2689":2}}],["b7",{"2":{"502":5,"510":2,"655":2,"703":1,"707":2,"1130":1,"1176":1,"1197":1,"1387":2,"1466":1,"2124":1,"2263":1,"2530":1,"2558":1}}],["b0²",{"2":{"635":1}}],["b0¹",{"2":{"635":1}}],["b007",{"2":{"629":1,"2243":1}}],["b0",{"2":{"502":2,"511":1,"576":2,"635":4,"1176":2,"1316":1,"1320":3,"1717":1,"2131":1,"2237":1,"2334":2,"2530":3,"2558":1,"2689":2}}],["b6",{"2":{"502":5,"633":1,"703":1,"707":2,"1127":1,"1130":1,"1176":1,"1387":2,"1466":1,"1591":1,"1870":1,"2330":1,"2332":1,"2530":2,"2558":1}}],["b5",{"2":{"502":5,"633":1,"655":2,"1176":2,"1387":2,"1466":1,"1793":1,"1870":1,"2332":1,"2371":1,"2519":1,"2530":2,"2558":1,"2697":1}}],["bgr",{"2":{"1216":1}}],["bg",{"2":{"433":1,"435":1,"2577":9}}],["bdfc",{"2":{"314":1,"315":1}}],["bdn9",{"2":{"149":1,"1312":1}}],["bc417",{"2":{"1491":1}}],["bcat",{"2":{"222":1}}],["bc",{"2":{"211":1}}],["bcd",{"2":{"149":1,"2699":1}}],["bx",{"2":{"211":2}}],["bsd",{"2":{"2180":2,"2183":2,"2184":3,"2384":3}}],["bspace",{"2":{"1530":1}}],["bspc",{"2":{"195":1,"313":1,"530":4,"1303":6,"1448":1,"1506":1,"1511":5,"1527":1,"1663":1,"1932":1,"1937":1,"2228":2,"2355":1,"2388":1,"2407":1,"2735":1,"2736":1}}],["bssl",{"2":{"1527":1}}],["bss",{"2":{"1287":1}}],["bsls",{"2":{"313":1,"530":2,"2355":1,"2388":1,"2407":1}}],["bs",{"2":{"191":3,"259":2,"266":1,"2075":1,"2370":3,"2396":3}}],["bépo",{"2":{"176":1,"2712":1}}],["bpm",{"2":{"1400":1}}],["bp",{"2":{"176":1}}],["bpp",{"2":{"160":1,"236":1}}],["bpiphany",{"2":{"143":2,"149":2}}],["bkf",{"2":{"143":2}}],["b4",{"2":{"111":1,"502":1,"576":2,"633":1,"655":2,"1176":2,"1181":1,"1492":1,"1717":1,"1793":1,"2332":1,"2371":1,"2530":2}}],["bmpgdbserialport",{"2":{"2513":2}}],["bmp",{"2":{"2513":1}}],["bm",{"2":{"134":1,"266":1}}],["bm68hsrgb",{"2":{"122":1,"143":2,"149":1}}],["bm68rgb",{"2":{"102":2,"122":1}}],["bm65hsrgb",{"2":{"122":1,"143":2,"149":1}}],["bm65iso",{"2":{"122":1}}],["bm60hsrgb",{"2":{"122":3}}],["bm60rgb",{"2":{"102":4,"122":2}}],["bm60poker",{"2":{"102":2,"122":1}}],["bm43a",{"2":{"102":2}}],["bm40hsrgb",{"2":{"102":2,"226":2,"236":1}}],["bm16s",{"2":{"102":2}}],["bm16a",{"2":{"102":2,"199":1}}],["b",{"0":{"1970":1,"1972":1},"1":{"1971":1,"1973":1},"2":{"98":2,"199":1,"211":5,"249":1,"266":1,"289":1,"292":1,"299":2,"313":1,"359":1,"360":1,"371":1,"400":2,"502":3,"513":2,"530":2,"554":1,"669":1,"672":1,"734":1,"737":1,"760":1,"763":1,"790":1,"793":1,"824":1,"827":1,"857":1,"860":1,"891":1,"894":1,"925":1,"928":1,"959":1,"962":1,"993":1,"996":1,"1027":1,"1030":1,"1061":1,"1064":1,"1095":1,"1098":1,"1148":1,"1151":1,"1217":2,"1503":1,"1508":3,"1509":1,"1510":2,"1511":1,"1523":2,"1527":1,"1530":1,"1549":3,"1557":4,"1558":3,"1561":1,"1562":2,"1673":2,"1674":2,"1675":2,"1793":13,"1870":2,"1923":2,"1932":2,"1948":1,"1957":1,"1959":1,"1971":1,"1973":1,"2034":1,"2051":10,"2075":1,"2130":2,"2131":1,"2148":2,"2153":2,"2169":1,"2288":1,"2317":2,"2355":3,"2371":13,"2376":1,"2386":3,"2407":1,"2450":2,"2480":3,"2684":2,"2730":1,"2731":10,"2732":29,"2733":17}}],["btn",{"2":{"1912":8}}],["btn8",{"2":{"1801":1,"2372":1}}],["btn7",{"2":{"1801":1,"2372":1}}],["btn6",{"2":{"1801":1,"2372":1}}],["btn5",{"2":{"1801":1,"2372":1}}],["btn4",{"2":{"1801":1,"2372":1}}],["btn3",{"2":{"1801":1,"2372":1}}],["btn2",{"2":{"1801":1,"2372":1}}],["btn1",{"2":{"1801":1,"1878":2,"2372":1}}],["bt",{"2":{"75":1,"134":1,"1494":1,"2361":1}}],["bfo",{"2":{"45":1}}],["bh",{"2":{"37":3,"159":6,"160":3}}],["baart",{"2":{"2483":1}}],["bay",{"2":{"2272":1}}],["ball",{"2":{"1868":1,"2735":1}}],["balance",{"2":{"211":1}}],["baud",{"0":{"1200":1},"1":{"1201":1},"2":{"1136":12,"1201":2,"2150":1}}],["baudrate",{"0":{"1136":1,"1227":1},"2":{"93":1,"1136":4,"1226":1,"1227":2}}],["baking",{"2":{"524":1}}],["bakingpy",{"2":{"515":1,"2263":1}}],["bakeneko",{"2":{"211":1}}],["bakeneko80",{"2":{"143":2}}],["bakeneko60",{"2":{"143":2}}],["bakeneko65",{"2":{"102":3,"114":1,"143":4}}],["baz",{"2":{"453":1}}],["bare",{"2":{"2270":1,"2548":1,"2566":2}}],["barring",{"2":{"1900":1}}],["barrel",{"0":{"1543":1,"1544":1},"2":{"1531":1,"1537":2,"1543":1,"1544":1}}],["bar",{"2":{"453":2,"459":1,"475":8,"476":2,"546":1,"570":2,"1677":1,"2145":1,"2153":12,"2183":1,"2738":1}}],["barleycorn",{"2":{"143":2}}],["bamfk",{"2":{"266":1}}],["bamfk1",{"2":{"222":1}}],["babyv",{"2":{"236":1}}],["badly",{"2":{"557":1}}],["bad",{"2":{"149":1,"453":1,"458":1,"474":1,"476":1,"1353":1,"1448":1,"2272":2,"2279":1,"2308":1,"2566":1}}],["battery",{"2":{"630":1,"2131":1}}],["bat43",{"2":{"143":4}}],["batch",{"2":{"133":1,"346":1,"349":1,"350":1,"1781":2,"1784":2,"2026":2,"2029":2}}],["bang",{"2":{"2181":3}}],["banging",{"2":{"1122":1,"1219":1}}],["banger",{"2":{"143":2,"149":1}}],["bandwidth",{"2":{"2546":1}}],["band",{"2":{"1728":10,"1949":20,"2708":6}}],["bandana",{"2":{"211":1}}],["bandominedoni",{"2":{"134":1}}],["bank",{"2":{"49":4,"176":1,"2524":8}}],["basing",{"2":{"2274":1}}],["basis",{"0":{"2264":1},"2":{"1255":1,"1725":1,"1946":1}}],["basics",{"0":{"1356":1},"1":{"1357":1},"2":{"2483":2,"2722":1,"2723":1}}],["basically",{"2":{"586":1,"1822":1,"2143":1,"2568":1}}],["basic",{"0":{"644":1,"657":1,"666":1,"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1145":1,"1214":1,"1390":1,"1457":1,"1591":1,"1659":1,"1681":1,"1789":1,"1817":1,"1920":1,"2074":1,"2141":1,"2179":1,"2257":1,"2277":1,"2355":1,"2385":1},"1":{"667":1,"732":1,"758":1,"787":1,"788":1,"819":1,"820":1,"821":1,"822":1,"851":1,"852":1,"853":1,"854":1,"855":1,"886":1,"887":1,"888":1,"889":1,"920":1,"921":1,"922":1,"923":1,"954":1,"955":1,"956":1,"957":1,"988":1,"989":1,"990":1,"991":1,"1022":1,"1023":1,"1024":1,"1025":1,"1056":1,"1057":1,"1058":1,"1059":1,"1090":1,"1091":1,"1092":1,"1093":1,"1146":1,"1215":1,"1216":1,"1217":1,"1391":1,"1392":1,"1458":1,"1459":1,"1682":1,"1683":1,"1684":1,"1685":1,"1818":1,"1819":1,"2180":1,"2258":1,"2259":1,"2260":1,"2386":1,"2387":1,"2388":1,"2389":1,"2390":1,"2391":1,"2392":1,"2393":1,"2394":1,"2395":1},"2":{"133":1,"134":1,"211":1,"222":1,"231":4,"248":1,"249":2,"307":1,"317":1,"378":1,"381":1,"391":1,"411":1,"540":1,"547":1,"560":1,"607":1,"621":1,"656":1,"660":1,"663":1,"696":1,"1278":1,"1336":1,"1357":1,"1390":2,"1393":1,"1445":1,"1446":1,"1557":1,"1633":1,"1663":1,"1665":1,"1666":2,"1677":1,"1787":2,"1789":2,"1918":1,"2072":1,"2075":1,"2149":1,"2161":1,"2170":1,"2181":1,"2256":1,"2268":1,"2277":1,"2323":1,"2355":1,"2385":1,"2409":1,"2411":1,"2413":1,"2424":1,"2443":1,"2457":1,"2484":1,"2566":2,"2571":2,"2573":1,"2585":1,"2592":1,"2640":1,"2676":1,"2723":1,"2738":1,"2742":2}}],["bashcompinit",{"2":{"450":3}}],["bashrc",{"2":{"450":1,"2468":2}}],["bash",{"2":{"448":1,"2468":2,"2506":1,"2508":1}}],["bastard",{"2":{"249":1}}],["bastardkb",{"2":{"114":1,"176":2,"266":1,"277":1,"2545":1}}],["base64",{"0":{"2099":1},"2":{"2611":2}}],["bases",{"2":{"560":2}}],["base",{"0":{"2407":1},"2":{"125":1,"163":1,"174":1,"185":1,"217":2,"221":1,"226":1,"270":2,"516":1,"532":1,"683":1,"684":4,"691":1,"1314":1,"1335":1,"1338":1,"1339":4,"1446":3,"1458":1,"1519":1,"1524":1,"1804":4,"2302":1,"2367":1,"2402":3,"2406":1,"2407":1,"2408":1,"2443":1,"2474":2,"2480":2,"2492":1,"2540":1,"2542":1,"2546":1,"2553":1,"2564":1,"2567":1}}],["based",{"0":{"25":1,"1387":1,"1389":1},"1":{"1388":1,"1390":1,"1391":1,"1392":1,"1393":1,"1394":1,"1395":1,"1396":1},"2":{"25":1,"49":1,"50":1,"65":2,"74":1,"93":1,"113":1,"114":2,"123":1,"153":1,"160":1,"163":1,"164":1,"172":1,"191":1,"199":1,"210":1,"235":1,"236":1,"248":1,"263":2,"294":1,"349":1,"374":1,"385":1,"386":1,"391":1,"436":1,"508":1,"557":1,"580":6,"655":1,"656":1,"681":2,"689":1,"694":1,"1125":1,"1128":1,"1243":1,"1248":1,"1316":1,"1317":1,"1319":1,"1326":10,"1332":1,"1341":7,"1343":1,"1384":1,"1385":2,"1387":1,"1390":1,"1491":2,"1492":1,"1575":1,"1634":1,"1638":1,"1680":1,"1725":1,"1807":1,"1811":1,"1821":1,"1822":1,"1824":1,"1859":1,"1868":1,"1880":2,"1897":1,"1939":1,"1946":1,"1959":1,"2053":2,"2056":1,"2065":1,"2131":1,"2143":1,"2155":1,"2160":1,"2183":1,"2226":1,"2229":2,"2232":1,"2234":1,"2241":1,"2263":1,"2277":1,"2287":1,"2291":1,"2327":1,"2346":1,"2385":1,"2418":1,"2430":1,"2441":1,"2446":1,"2454":1,"2466":1,"2514":2,"2523":1,"2527":1,"2543":2,"2545":1,"2573":1,"2576":2,"2577":4,"2585":1,"2590":1,"2592":1,"2611":1,"2663":1,"2673":1,"2720":1}}],["backtick",{"2":{"1565":1,"1567":1}}],["backticks",{"2":{"292":1}}],["backlit",{"2":{"1454":1}}],["backlightx",{"2":{"2300":1}}],["backlighting",{"0":{"1454":1,"2360":1},"1":{"1455":1,"1456":1,"1457":1,"1458":1,"1459":1,"1460":1,"1461":1,"1462":1,"1463":1,"1464":1,"1465":1,"1466":1,"1467":1,"1468":1,"1469":1,"1470":1,"1471":1,"1472":1,"1473":1,"1474":1,"1475":1,"1476":1,"1477":1,"1478":1,"1479":1,"1480":1,"1481":1,"1482":1,"1483":1,"1484":1,"1485":1,"1486":1,"1487":1,"1488":1,"1489":1},"2":{"1455":1,"1723":1,"2161":1,"2263":1,"2300":1,"2360":1,"2610":1}}],["backlights",{"2":{"589":1,"1556":1}}],["backlight|led",{"2":{"176":1}}],["backlight",{"0":{"7":1,"14":2,"16":1,"1459":1,"1473":1,"1474":1,"1475":1,"1476":1,"1477":1,"1478":1,"1479":1,"1481":1,"1483":1,"1485":1,"1486":1,"1487":1,"1488":1,"2625":1,"2677":1},"1":{"1480":1,"1482":1,"1484":1,"1489":1},"2":{"14":4,"16":4,"32":1,"49":1,"50":1,"63":1,"70":1,"73":1,"93":1,"94":1,"110":1,"111":1,"112":4,"114":1,"134":4,"149":1,"160":1,"188":1,"191":4,"198":1,"199":6,"222":4,"231":3,"236":2,"249":3,"266":3,"502":7,"1234":2,"1316":1,"1317":1,"1456":14,"1457":21,"1458":4,"1459":10,"1460":1,"1461":1,"1463":1,"1464":5,"1466":1,"1467":1,"1469":4,"1470":1,"1471":3,"1473":1,"1474":1,"1475":1,"1476":1,"1477":1,"1478":1,"1479":1,"1480":1,"1481":1,"1482":2,"1483":1,"1484":1,"1485":1,"1486":1,"1487":1,"1488":1,"1489":1,"1723":1,"1726":1,"1947":1,"2263":3,"2264":3,"2300":3,"2360":14,"2531":1,"2566":2,"2577":11,"2625":1,"2677":9,"2724":1,"2749":1}}],["backslash",{"2":{"1271":1,"1584":2,"1677":1,"2355":2,"2370":3,"2388":2,"2396":3,"2706":1,"2738":1}}],["backspaced",{"2":{"2182":1}}],["backspaces",{"2":{"1447":2,"1448":3,"1451":1,"1452":1}}],["backspace",{"0":{"1303":1},"2":{"99":1,"152":1,"211":1,"255":1,"540":1,"546":1,"1271":1,"1303":2,"1451":3,"1499":1,"1511":1,"1584":1,"1656":1,"1663":1,"1932":1,"1937":4,"2075":1,"2226":1,"2355":2,"2370":6,"2388":2,"2396":6,"2706":1}}],["backgrounds",{"2":{"435":1}}],["background",{"2":{"435":5,"597":1,"2577":3}}],["backup",{"2":{"388":2}}],["backing",{"0":{"2476":1},"2":{"236":1,"688":1,"689":3,"690":3,"691":4,"2683":1}}],["backwards",{"2":{"114":1,"249":1,"262":1,"2107":1}}],["backward",{"2":{"75":1,"1932":2}}],["back",{"0":{"2318":1,"2326":1},"2":{"50":1,"55":13,"124":1,"134":1,"152":1,"331":1,"341":1,"430":1,"471":1,"529":1,"592":1,"621":1,"624":1,"1396":1,"1435":2,"1554":1,"1555":1,"1556":1,"1684":1,"1859":1,"1922":1,"1932":1,"1949":3,"2066":1,"2067":1,"2069":1,"2130":2,"2133":1,"2146":2,"2231":1,"2238":1,"2255":1,"2273":1,"2274":1,"2279":1,"2348":2,"2355":2,"2393":2,"2425":1,"2454":1,"2474":2,"2518":1,"2567":1,"2672":1,"2708":1,"2728":1,"2745":1}}],["backend",{"0":{"321":1},"2":{"49":1,"2506":1,"2683":1}}],["backport",{"0":{"5":1},"2":{"74":1}}],["bidirectional",{"2":{"1918":1}}],["bioses",{"2":{"516":1}}],["bios",{"0":{"1298":1},"2":{"263":1,"1288":1,"1292":1,"1298":1}}],["bioi",{"2":{"211":4,"236":1}}],["biacco42",{"2":{"143":3,"149":2}}],["bigram",{"2":{"1934":5}}],["bigrams",{"2":{"1934":2}}],["bigseries",{"2":{"143":8}}],["bigswitch",{"2":{"43":2,"266":1}}],["big",{"2":{"94":2,"349":1,"470":1,"545":1,"717":1,"723":1,"2263":1,"2578":1}}],["bigger",{"2":{"46":1,"515":1,"2311":1,"2424":1,"2757":1}}],["binding",{"2":{"2263":1}}],["bindings",{"2":{"1435":1,"2355":1,"2566":2}}],["bind",{"2":{"1677":1,"2738":1}}],["bin|hex",{"2":{"371":1}}],["binary",{"0":{"1450":1},"1":{"1451":1,"1452":1},"2":{"304":1,"316":1,"371":1,"522":2,"525":1,"527":2,"1303":1,"2262":1,"2303":1,"2351":1,"2353":1,"2462":1,"2566":1,"2674":1,"2757":1}}],["binaries",{"0":{"164":1},"2":{"93":1,"164":1,"176":1,"199":1,"519":1,"1249":1,"2242":1,"2310":2,"2549":1}}],["binepad",{"2":{"207":2,"211":1}}],["bin",{"2":{"23":1,"94":2,"95":2,"133":1,"134":1,"332":1,"371":1,"387":1,"513":1,"2240":1,"2242":1,"2243":1,"2244":1,"2252":1,"2262":1,"2353":2,"2427":1,"2437":1,"2452":2,"2468":2,"2508":1,"2513":3,"2674":1}}],["bit|status",{"2":{"2402":1}}],["bitmap",{"2":{"1821":1}}],["bitmask",{"2":{"1300":2,"1345":1,"1660":1,"1661":1,"1662":1,"1670":1,"1725":1,"1850":1,"1852":1,"1946":1,"2596":1}}],["bitfield",{"2":{"1671":1,"2688":1,"2695":1}}],["bitwise",{"2":{"701":1,"1300":2,"1335":1,"1451":1,"1821":1}}],["bits",{"2":{"316":1,"701":3,"1300":1,"1332":2,"1336":4,"1341":6,"1451":3,"1452":1,"1636":1,"1637":1,"1726":4,"1876":2,"1947":4,"2147":4,"2150":2,"2152":2,"2311":1,"2348":2,"2401":2,"2402":1,"2411":3,"2588":6}}],["bitbanging",{"2":{"1125":1,"1128":1}}],["bitbang",{"0":{"1122":1,"1219":1},"1":{"1123":1,"1124":1},"2":{"249":1,"1121":1,"1122":3,"1123":1,"1124":3,"1125":1,"1136":1,"1218":1,"1219":1,"1224":2,"2032":1,"2697":2,"2700":3}}],["bit",{"0":{"11":1,"1318":1},"2":{"11":2,"63":1,"114":1,"130":1,"134":1,"166":1,"176":2,"199":2,"211":1,"630":1,"641":4,"659":2,"660":1,"701":2,"709":1,"712":1,"714":1,"715":1,"717":1,"718":1,"720":1,"721":1,"723":1,"724":1,"727":2,"732":1,"758":1,"787":1,"819":1,"851":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1056":1,"1090":1,"1121":1,"1122":1,"1146":1,"1181":1,"1214":3,"1215":3,"1219":1,"1224":2,"1265":2,"1290":1,"1300":5,"1302":1,"1311":1,"1315":4,"1329":1,"1332":2,"1333":1,"1336":3,"1341":2,"1406":1,"1430":1,"1436":1,"1445":4,"1451":2,"1452":1,"1506":2,"1549":1,"1589":1,"1612":2,"1614":2,"1636":2,"1642":1,"1652":1,"1668":6,"1670":2,"1677":12,"1815":2,"1876":2,"1880":1,"1907":4,"1938":1,"2091":1,"2093":1,"2095":1,"2125":2,"2139":2,"2148":2,"2170":2,"2311":1,"2367":1,"2401":1,"2402":1,"2405":6,"2406":2,"2411":3,"2413":1,"2450":1,"2455":1,"2460":2,"2490":1,"2528":1,"2552":1,"2576":1,"2585":1,"2592":1,"2593":1,"2596":8,"2601":1,"2622":1,"2623":1,"2719":1,"2738":12,"2750":1}}],["bob",{"2":{"2750":1}}],["bout",{"2":{"1943":1}}],["bounce",{"0":{"1325":1},"1":{"1326":1,"1327":1,"1328":1,"1329":1,"1330":1},"2":{"1325":4,"2420":1}}],["bounce75",{"2":{"211":1}}],["bound",{"2":{"236":1,"1677":1,"2718":1,"2738":1}}],["boundary",{"2":{"191":1}}],["bounds",{"2":{"114":1,"160":1,"1822":3,"2143":3,"2292":1}}],["bounded",{"2":{"31":1,"34":1}}],["bold",{"2":{"288":1,"545":1,"1142":1}}],["bolt",{"0":{"2147":1},"2":{"231":1,"2146":1,"2147":3,"2148":1,"2149":2,"2150":1,"2152":2,"2153":4}}],["boy",{"2":{"211":1}}],["bocc",{"2":{"211":1}}],["bonsai",{"0":{"1320":1},"2":{"176":1,"189":1,"191":1,"1311":1,"1315":4,"1320":1,"2709":1}}],["boston",{"2":{"134":1,"211":1}}],["bodges",{"2":{"199":1}}],["bodge",{"2":{"114":1,"134":1,"149":1,"266":1}}],["box",{"2":{"114":1,"290":1,"537":1,"2132":1,"2133":1,"2272":1,"2452":1,"2745":1}}],["boilerplate",{"2":{"114":1,"565":1,"2261":2}}],["bottom",{"2":{"100":1,"149":1,"255":1,"502":1,"557":1,"1287":1,"1314":1,"1323":1,"1324":1,"1405":1,"1446":1,"1533":1,"1725":1,"1728":1,"1946":1,"1949":2,"2031":1,"2122":1,"2148":1,"2169":1,"2171":1,"2270":1,"2305":1,"2326":1,"2450":1,"2498":1,"2564":1,"2577":6,"2598":2,"2614":1,"2665":1}}],["both",{"0":{"2415":1},"2":{"35":1,"45":1,"58":1,"70":14,"98":1,"107":1,"114":1,"134":1,"152":1,"163":1,"173":1,"175":1,"190":1,"229":1,"232":1,"233":1,"236":1,"249":1,"304":1,"349":1,"388":1,"432":1,"435":1,"446":2,"453":1,"483":1,"505":1,"506":1,"511":1,"533":1,"540":1,"550":1,"570":1,"610":1,"630":1,"681":1,"1122":1,"1265":2,"1300":2,"1303":1,"1312":1,"1320":1,"1326":1,"1341":2,"1349":1,"1352":1,"1368":1,"1383":1,"1391":1,"1431":1,"1446":1,"1454":1,"1491":1,"1494":1,"1499":2,"1500":3,"1501":3,"1510":1,"1557":1,"1558":1,"1572":1,"1670":1,"1716":1,"1805":1,"1813":1,"1862":1,"1866":1,"1870":3,"1873":1,"1876":1,"1888":1,"1921":1,"1948":2,"2034":2,"2042":2,"2105":1,"2114":1,"2115":1,"2120":1,"2127":2,"2129":2,"2130":1,"2131":1,"2146":1,"2153":2,"2172":1,"2177":1,"2182":1,"2183":1,"2273":3,"2279":2,"2295":2,"2302":1,"2341":1,"2353":1,"2355":1,"2370":6,"2396":6,"2429":1,"2450":2,"2457":1,"2464":1,"2472":1,"2474":1,"2477":1,"2490":1,"2541":1,"2543":1,"2546":1,"2576":1,"2577":1,"2600":1,"2603":4,"2662":1,"2680":2,"2684":1,"2702":1,"2706":1,"2708":1,"2725":1,"2735":1,"2757":1}}],["boardinit",{"2":{"2526":1,"2566":2}}],["board",{"0":{"172":1,"189":1,"2526":1,"2542":1},"2":{"50":5,"76":1,"77":2,"113":1,"114":3,"134":1,"160":3,"167":1,"176":3,"182":1,"189":3,"191":1,"199":1,"211":2,"222":1,"233":1,"236":2,"248":1,"266":2,"277":1,"335":2,"493":1,"495":1,"502":2,"506":1,"529":1,"587":1,"589":2,"592":1,"625":1,"626":2,"627":1,"657":1,"658":1,"668":1,"691":1,"703":2,"733":1,"759":1,"789":1,"823":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1129":1,"1147":1,"1177":2,"1198":1,"1226":1,"1230":1,"1270":5,"1294":1,"1315":2,"1316":1,"1320":1,"1322":1,"1332":1,"1378":1,"1384":1,"1392":1,"1401":1,"1405":1,"1464":1,"1469":1,"1470":1,"1491":1,"1492":1,"1725":1,"1821":1,"1827":1,"1868":1,"1873":1,"1946":1,"2114":2,"2118":1,"2128":1,"2131":2,"2180":1,"2255":1,"2266":1,"2269":4,"2270":1,"2274":1,"2275":2,"2278":1,"2305":1,"2328":1,"2339":1,"2342":3,"2346":1,"2427":1,"2450":2,"2454":2,"2513":1,"2523":4,"2524":1,"2525":1,"2526":3,"2530":1,"2533":2,"2539":1,"2541":2,"2542":3,"2546":1,"2549":1,"2564":2,"2565":1,"2566":16,"2567":1,"2578":1,"2607":2,"2608":1,"2655":1,"2664":1,"2665":1,"2673":7,"2708":1,"2728":1}}],["boardsource",{"2":{"176":4,"249":1,"277":2,"2541":1}}],["boards",{"0":{"43":1,"235":1,"1387":1,"1389":1,"1722":1,"2133":1,"2269":1,"2540":1},"1":{"1388":1,"1390":1,"1391":1,"1392":1,"1393":1,"1394":1,"1395":1,"1396":1,"2541":1,"2542":1},"2":{"8":1,"10":1,"28":1,"45":1,"57":1,"72":1,"80":1,"93":1,"108":1,"114":7,"131":1,"134":3,"149":25,"153":2,"160":3,"163":1,"172":3,"185":1,"189":1,"191":4,"199":2,"211":8,"221":1,"222":4,"235":1,"249":1,"263":1,"266":1,"277":1,"496":1,"505":1,"509":3,"515":1,"626":1,"655":2,"656":1,"657":1,"663":1,"1125":1,"1128":1,"1220":1,"1235":1,"1242":1,"1316":1,"1317":1,"1383":1,"1384":3,"1385":4,"1387":1,"1405":1,"1491":2,"1495":1,"1497":1,"1635":1,"1722":1,"1954":1,"2118":1,"2132":3,"2133":1,"2230":2,"2233":1,"2237":1,"2240":1,"2242":1,"2243":1,"2263":1,"2269":1,"2328":1,"2346":1,"2417":2,"2514":1,"2523":1,"2539":1,"2540":2,"2541":2,"2545":1,"2546":1,"2551":1,"2552":1,"2566":4,"2567":1,"2573":1,"2672":1,"2709":1}}],["books",{"2":{"2750":1}}],["boost",{"2":{"1570":1,"2567":1}}],["bootstrap",{"2":{"2553":1}}],["bootsel",{"2":{"2249":2}}],["boot1",{"2":{"2516":1}}],["booted",{"2":{"1825":1}}],["bootable",{"2":{"689":1}}],["booting",{"2":{"689":1,"1816":1,"2402":1}}],["boot\`",{"2":{"624":1}}],["bootlader",{"2":{"236":1}}],["bootloadhid",{"0":{"2237":1,"2345":1},"1":{"2238":1,"2239":1},"2":{"114":1,"191":1,"514":1,"629":1,"2237":6,"2262":1}}],["bootloader>",{"2":{"371":2,"2353":1}}],["bootloaders",{"0":{"629":1},"2":{"49":1,"149":1,"160":1,"199":1,"371":3,"375":1,"626":1,"689":1,"1270":1,"2229":2,"2252":1,"2262":1,"2327":1,"2343":2,"2566":1}}],["bootloader",{"0":{"141":1,"625":1,"1240":1,"1241":1,"2229":1,"2342":1,"2347":1,"2350":1,"2450":1,"2521":1,"2544":1,"2609":1,"2627":1,"2693":1},"1":{"626":1,"627":1,"628":1,"629":1,"2230":1,"2231":1,"2232":1,"2233":1,"2234":1,"2235":1,"2236":1,"2237":1,"2238":1,"2239":1,"2240":1,"2241":1,"2242":1,"2243":1,"2244":1,"2245":1,"2246":1,"2247":1,"2248":1,"2249":1,"2343":1,"2344":1,"2345":1,"2346":1,"2348":1,"2351":1,"2352":1,"2353":1},"2":{"49":4,"50":1,"65":1,"70":1,"74":1,"93":2,"111":1,"112":1,"114":3,"141":3,"149":8,"176":8,"191":4,"199":6,"211":1,"230":2,"231":1,"236":1,"240":3,"371":4,"375":1,"489":1,"509":3,"514":1,"592":4,"593":4,"594":3,"595":2,"624":2,"625":3,"626":6,"627":2,"628":2,"629":8,"1239":1,"1241":2,"1270":2,"1287":1,"1293":1,"1385":7,"1495":3,"1497":2,"1530":4,"1573":2,"1816":5,"2126":10,"2229":1,"2230":6,"2231":8,"2233":5,"2235":6,"2236":5,"2237":5,"2238":15,"2240":5,"2241":1,"2242":6,"2243":4,"2244":3,"2245":7,"2247":7,"2249":7,"2327":6,"2335":1,"2341":1,"2342":1,"2344":4,"2345":1,"2346":2,"2347":2,"2348":2,"2349":3,"2350":5,"2351":1,"2353":2,"2356":4,"2450":1,"2454":6,"2517":2,"2521":1,"2522":3,"2524":9,"2530":2,"2539":5,"2544":2,"2566":2,"2572":4,"2609":2,"2664":1,"2672":1,"2673":2,"2693":3}}],["boot20",{"2":{"2353":1}}],["boot2",{"2":{"236":1}}],["bootmapper",{"2":{"235":1,"1220":1,"2345":1,"2450":1}}],["bootmagic",{"0":{"87":1,"103":1,"104":1,"126":1,"127":1,"245":2,"1495":1,"1497":1,"2628":1,"2679":1},"1":{"88":1,"104":1,"127":1,"1496":1,"1497":1,"1498":1},"2":{"70":1,"87":8,"88":8,"93":2,"94":1,"103":3,"104":8,"111":1,"114":2,"126":3,"127":8,"134":1,"176":3,"199":3,"222":1,"245":4,"249":2,"515":3,"592":1,"624":1,"626":3,"1243":2,"1270":1,"1287":1,"1332":1,"1495":5,"1496":3,"1497":6,"1498":1,"1528":1,"1916":1,"2231":1,"2238":1,"2263":1,"2305":2,"2396":1,"2566":1,"2610":1,"2679":3,"2697":2,"2725":1}}],["boot",{"0":{"156":1,"167":1,"2539":1},"2":{"149":1,"156":2,"167":2,"176":1,"191":2,"199":1,"266":1,"277":1,"313":1,"515":1,"516":2,"530":2,"626":3,"689":1,"1287":1,"1398":1,"1399":1,"1816":2,"2230":1,"2233":1,"2235":1,"2236":2,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":2,"2247":2,"2249":2,"2356":1,"2458":1,"2524":1,"2539":1,"2541":1,"2566":1,"2572":1,"2609":1}}],["boot0",{"2":{"49":4,"2240":3,"2242":3}}],["boolean",{"0":{"90":1,"105":1},"2":{"93":1,"114":1,"134":1,"203":1,"588":1,"1303":3,"1332":1,"1365":1,"1719":1}}],["bool",{"0":{"749":3,"751":1,"776":3,"778":1,"808":3,"810":1,"875":3,"877":1,"909":3,"911":1,"943":3,"945":1,"977":3,"979":1,"1166":3,"1168":1,"1180":2,"1210":1,"1483":1,"1488":1,"1596":2,"1600":2,"1615":1,"1617":1,"1619":1,"1693":1,"1694":1,"1697":1,"1698":1,"1699":1,"1702":1,"1705":1,"1708":1,"1711":1,"1741":1,"1774":1,"1776":1,"1778":1,"1780":1,"1783":1,"1845":1,"1968":1,"2019":1,"2021":1,"2023":1,"2025":1,"2028":1,"2212":1,"2216":1,"2219":1},"1":{"750":3,"752":1,"777":3,"779":1,"809":3,"811":1,"876":3,"878":1,"910":3,"912":1,"944":3,"946":1,"978":3,"980":1,"1167":3,"1169":1,"1181":2,"1182":2,"1211":1,"1484":1,"1489":1,"1597":2,"1601":2,"1616":1,"1618":1,"1620":1,"1621":1,"1695":1,"1696":1,"1700":1,"1701":1,"1703":1,"1704":1,"1706":1,"1707":1,"1709":1,"1710":1,"1712":1,"1713":1,"1742":1,"1775":1,"1777":1,"1779":1,"1846":1,"1847":1,"1969":1,"2020":1,"2022":1,"2024":1,"2213":1,"2217":1,"2218":1,"2220":1},"2":{"22":2,"46":2,"90":6,"105":8,"114":1,"125":2,"185":2,"230":1,"534":1,"565":2,"566":1,"573":3,"588":2,"593":1,"594":1,"595":4,"597":1,"641":1,"750":3,"752":1,"777":3,"779":1,"809":3,"811":1,"876":3,"878":1,"910":3,"912":1,"944":3,"946":1,"978":3,"980":1,"1167":3,"1169":1,"1181":1,"1303":2,"1332":3,"1344":1,"1359":2,"1360":1,"1375":1,"1385":2,"1404":1,"1430":2,"1445":1,"1448":1,"1507":2,"1511":1,"1518":6,"1519":1,"1523":2,"1537":4,"1549":2,"1560":2,"1581":1,"1597":2,"1601":2,"1604":1,"1618":1,"1620":1,"1638":2,"1642":1,"1668":2,"1670":3,"1686":1,"1716":2,"1717":1,"1718":1,"1729":3,"1792":1,"1813":1,"1814":1,"1816":4,"1822":26,"1830":1,"1875":1,"1879":2,"1880":2,"1882":1,"1891":2,"1892":1,"1894":5,"1895":3,"1899":4,"1900":1,"1933":1,"1935":1,"1941":1,"1943":2,"1952":3,"2056":1,"2113":6,"2130":2,"2143":16,"2168":1,"2169":1,"2171":1,"2228":2,"2301":2,"2567":1,"2576":1,"2577":5,"2587":1,"2728":1,"2749":34}}],["buflen",{"2":{"2130":2}}],["buff",{"2":{"1815":4,"2139":4}}],["buffered",{"2":{"515":1}}],["buffers",{"0":{"679":1,"753":1,"780":1,"812":1,"844":1,"879":1,"913":1,"947":1,"981":1,"1015":1,"1049":1,"1083":1,"1117":1,"1170":1},"1":{"680":1,"781":1,"813":1,"845":1,"880":1,"914":1,"948":1,"982":1,"1016":1,"1050":1,"1084":1,"1118":1,"1171":1},"2":{"93":1,"249":2,"593":1,"594":1,"675":1,"741":1,"745":1,"768":1,"772":1,"800":1,"804":1,"832":1,"836":1,"867":1,"871":1,"901":1,"905":1,"935":1,"939":1,"969":1,"973":1,"1003":1,"1007":1,"1037":1,"1041":1,"1071":1,"1075":1,"1105":1,"1109":1,"1158":1,"1162":1,"1515":5,"2048":1,"2060":2,"2226":1}}],["buffer",{"0":{"660":1,"1228":1,"1515":1,"1815":1,"2139":1},"2":{"49":1,"93":1,"114":1,"176":1,"199":1,"211":1,"249":3,"641":3,"659":3,"660":8,"712":1,"1192":1,"1205":2,"1209":1,"1210":1,"1211":1,"1226":2,"1228":3,"1401":1,"1438":4,"1445":1,"1446":6,"1515":2,"1526":1,"1554":3,"1680":1,"1685":2,"1691":1,"1694":2,"1696":1,"1697":1,"1699":1,"1701":1,"1702":1,"1704":1,"1705":1,"1707":1,"1708":1,"1710":1,"1711":1,"1713":1,"1815":7,"1820":3,"1821":2,"1822":16,"1921":1,"1922":1,"1923":1,"1926":1,"1928":1,"2059":1,"2130":10,"2139":7,"2142":1,"2143":17,"2214":1,"2215":1,"2216":1,"2219":1,"2574":1,"2576":9,"2577":2}}],["bundled",{"2":{"2244":1}}],["bundle",{"2":{"2106":1,"2431":3,"2458":1}}],["bunch",{"2":{"254":1,"1259":1,"1331":1,"1383":1,"1384":1,"1385":1,"2311":1,"2510":1,"2707":1,"2714":1,"2740":1}}],["buzz",{"2":{"1572":3,"1573":12,"1578":7,"2129":1}}],["buzzer",{"2":{"1388":1}}],["burst",{"2":{"1870":1}}],["burnout",{"2":{"2569":1}}],["burns",{"2":{"2270":1}}],["burn",{"2":{"1287":1,"1817":2,"2141":1}}],["burden",{"2":{"213":1,"2566":1}}],["buy",{"2":{"624":1,"1242":1}}],["bumblebee",{"2":{"277":1}}],["bump",{"2":{"76":1,"114":2,"160":1,"236":1,"360":2,"1578":3}}],["buspirate",{"2":{"2339":1}}],["bus",{"0":{"2339":1},"1":{"2340":1},"2":{"191":2,"266":1,"277":1,"726":1,"2339":2,"2340":1,"2668":1}}],["busywait",{"0":{"1904":1},"1":{"1905":1,"1906":1,"1907":1,"1908":1},"2":{"1902":1,"1904":2,"2692":2}}],["busy",{"0":{"1615":1},"1":{"1616":1},"2":{"191":1,"703":1,"1463":1,"1616":1,"1621":1,"1622":1,"1624":1}}],["business",{"2":{"143":4}}],["bulk",{"2":{"182":1,"2162":1,"2234":1}}],["bullseye",{"2":{"114":1}}],["bugging",{"2":{"2424":1}}],["buggy",{"2":{"1406":1}}],["bug17281",{"2":{"199":1}}],["bugfix",{"2":{"176":1,"222":1,"236":1,"266":1,"340":1,"350":3}}],["bugfixes",{"2":{"10":2,"196":1,"340":1,"344":2,"345":2,"2656":1}}],["bugs",{"0":{"549":1},"2":{"114":1,"134":1,"149":1,"160":1,"176":1,"191":2,"199":1,"211":1,"222":1,"236":2,"249":1,"266":1,"277":1,"481":1,"1666":3}}],["bug",{"0":{"1261":1},"2":{"62":1,"73":1,"149":1,"160":2,"236":1,"315":1,"336":1,"483":1,"545":1,"549":1,"554":1,"560":2,"2326":1,"2343":1,"2468":3,"2513":1,"2757":1}}],["builtin",{"2":{"588":1,"696":2,"1254":2,"1392":1,"2150":1}}],["built",{"0":{"1259":1,"2102":1},"1":{"2103":1,"2104":1,"2105":1,"2106":1,"2107":1},"2":{"33":1,"49":1,"191":1,"228":1,"337":1,"403":2,"432":1,"588":1,"629":1,"655":1,"1134":1,"1326":1,"1398":1,"1406":1,"1729":1,"1870":1,"1952":1,"2126":1,"2144":1,"2183":2,"2233":1,"2259":1,"2262":1,"2284":1,"2417":1,"2428":1,"2440":1,"2447":1,"2449":1,"2549":1,"2573":1,"2579":1,"2616":1}}],["builder",{"2":{"391":1,"2267":1,"2268":1,"2277":2}}],["builddefs",{"2":{"149":1}}],["building",{"0":{"332":1,"1348":1,"2420":1,"2428":1,"2615":1},"1":{"1349":1,"2421":1,"2422":1,"2423":1,"2424":1,"2425":1,"2426":1,"2429":1,"2430":1,"2431":1,"2432":1,"2433":1,"2434":1,"2435":1,"2436":1,"2437":1,"2438":1,"2439":1,"2440":1},"2":{"114":2,"133":1,"134":1,"145":1,"199":1,"213":1,"224":1,"233":1,"305":1,"331":1,"363":1,"370":1,"513":1,"515":2,"536":1,"560":1,"1234":1,"1237":1,"1254":1,"1257":1,"1492":1,"2252":2,"2281":1,"2405":1,"2418":1,"2420":1,"2442":1,"2445":1,"2470":1,"2502":1,"2576":2}}],["builds",{"2":{"28":1,"49":1,"94":1,"114":3,"130":1,"134":4,"149":2,"153":1,"160":3,"176":1,"198":1,"209":1,"211":3,"241":1,"253":1,"270":1,"273":1,"393":3,"394":3,"1265":1,"1312":1,"1385":1,"2262":2,"2447":1,"2448":1,"2473":1,"2475":1,"2502":1,"2513":1,"2535":1,"2567":2,"2616":1,"2664":1}}],["build",{"0":{"23":1,"55":1,"141":1,"326":1,"513":1,"1234":1,"1237":1,"1381":1,"2267":1,"2421":1,"2425":1,"2446":1,"2447":1,"2458":1,"2469":1,"2494":1,"2502":1,"2562":1},"1":{"1235":1,"1238":1,"1239":1,"1240":1,"1241":1,"1242":1,"1243":1,"2459":1,"2460":1,"2461":1,"2462":1,"2463":1,"2464":1,"2465":1,"2466":1,"2467":1},"2":{"23":1,"55":3,"65":1,"70":1,"73":1,"92":2,"112":3,"114":6,"118":1,"126":1,"132":1,"133":1,"134":3,"149":7,"160":2,"164":1,"170":1,"176":2,"189":2,"191":4,"199":6,"201":2,"204":1,"206":1,"211":2,"222":1,"228":1,"234":3,"236":1,"249":1,"262":1,"266":23,"277":2,"292":1,"305":2,"326":1,"331":6,"332":1,"360":1,"365":1,"366":1,"374":1,"376":1,"387":1,"389":1,"390":1,"391":1,"393":4,"394":4,"395":2,"396":5,"401":4,"496":1,"516":1,"538":1,"540":1,"614":3,"624":3,"660":1,"1236":1,"1237":1,"1287":2,"1288":1,"1298":1,"1348":1,"1349":1,"1376":1,"1377":1,"1381":1,"1573":1,"2178":1,"2244":2,"2250":3,"2252":8,"2261":1,"2262":3,"2270":1,"2277":1,"2281":2,"2299":1,"2300":2,"2302":2,"2308":1,"2346":1,"2408":2,"2417":1,"2418":1,"2420":1,"2421":1,"2422":1,"2425":3,"2428":3,"2429":1,"2435":1,"2436":1,"2437":6,"2438":1,"2439":4,"2440":2,"2441":4,"2442":1,"2446":2,"2447":2,"2448":2,"2454":1,"2456":2,"2462":1,"2469":6,"2472":1,"2492":1,"2494":1,"2502":2,"2503":1,"2504":1,"2513":4,"2553":1,"2566":1,"2614":1,"2615":2,"2674":1,"2722":1,"2753":1,"2755":1}}],["butterstick",{"2":{"143":2}}],["button",{"0":{"1646":2,"1648":2,"1832":1,"1836":1,"1837":1,"1839":1,"1841":1,"1843":1,"1845":1,"1848":1,"1849":1,"1851":1,"1912":1,"2380":1},"1":{"1647":2,"1649":2,"1833":1,"1834":1,"1835":1,"1836":1,"1837":1,"1838":2,"1839":1,"1840":2,"1841":1,"1842":2,"1843":1,"1844":2,"1845":1,"1846":2,"1847":2,"1848":1,"1849":1,"1850":2,"1851":1,"1852":2},"2":{"49":1,"63":1,"134":1,"188":1,"190":1,"191":3,"231":5,"332":1,"334":1,"541":2,"542":2,"567":2,"624":2,"626":2,"1236":1,"1270":1,"1287":1,"1359":3,"1385":1,"1406":1,"1495":1,"1553":1,"1636":2,"1639":64,"1642":2,"1646":1,"1647":2,"1648":1,"1649":2,"1801":16,"1809":2,"1832":1,"1833":1,"1834":64,"1836":1,"1837":1,"1838":1,"1839":1,"1840":1,"1841":1,"1842":1,"1843":1,"1844":1,"1845":1,"1846":1,"1847":1,"1848":1,"1849":1,"1850":1,"1851":1,"1852":1,"1860":6,"1874":2,"1876":4,"1880":1,"1885":1,"1912":5,"2126":1,"2150":2,"2230":1,"2233":1,"2235":1,"2236":3,"2238":1,"2240":3,"2242":3,"2243":1,"2244":1,"2245":2,"2247":2,"2249":4,"2255":3,"2277":1,"2278":3,"2365":64,"2372":16,"2380":65,"2417":2,"2450":1,"2453":1,"2498":2,"2508":1,"2513":2,"2518":1,"2528":1,"2615":1,"2672":1,"2749":1}}],["buttons",{"0":{"1913":1},"2":{"49":1,"74":1,"114":1,"134":4,"149":1,"190":1,"222":1,"1531":1,"1634":1,"1636":1,"1642":1,"1798":1,"1832":1,"1863":2,"1874":2,"1876":1,"1878":3,"1885":1,"1900":1,"1912":4,"1913":2}}],["but",{"0":{"1262":1,"1373":1},"2":{"11":1,"49":1,"50":1,"99":1,"100":1,"120":1,"124":1,"125":2,"153":1,"156":1,"160":1,"170":1,"174":1,"185":2,"194":1,"202":1,"233":1,"251":1,"262":1,"273":2,"317":1,"334":1,"336":1,"341":1,"352":1,"355":1,"364":1,"371":1,"377":1,"401":1,"432":1,"446":1,"453":2,"458":1,"469":1,"471":1,"472":1,"473":1,"474":1,"479":1,"499":1,"504":1,"513":1,"515":1,"516":1,"529":1,"530":1,"532":1,"537":1,"540":1,"556":1,"557":1,"560":1,"567":1,"574":1,"578":2,"623":1,"626":1,"641":1,"642":1,"684":1,"685":1,"687":1,"688":1,"689":1,"690":1,"734":1,"760":1,"790":1,"822":1,"824":1,"855":1,"857":1,"889":1,"891":1,"923":1,"925":1,"957":1,"959":1,"991":1,"993":1,"1025":1,"1027":1,"1059":1,"1061":1,"1093":1,"1095":1,"1128":1,"1137":1,"1148":1,"1195":1,"1234":4,"1245":1,"1250":2,"1260":1,"1265":1,"1271":1,"1276":1,"1283":2,"1298":1,"1300":3,"1325":1,"1326":1,"1332":1,"1335":2,"1336":1,"1340":1,"1341":1,"1347":1,"1361":2,"1363":1,"1369":1,"1370":1,"1380":1,"1383":2,"1384":2,"1393":1,"1396":2,"1400":1,"1403":3,"1409":1,"1412":4,"1416":1,"1418":1,"1439":1,"1440":1,"1446":1,"1448":1,"1450":2,"1455":1,"1462":1,"1491":1,"1492":1,"1516":1,"1520":1,"1521":1,"1534":1,"1548":1,"1553":1,"1559":1,"1630":1,"1635":1,"1666":1,"1673":1,"1682":1,"1684":2,"1725":1,"1776":1,"1778":1,"1780":1,"1783":1,"1802":1,"1811":1,"1822":1,"1825":1,"1832":1,"1853":1,"1869":1,"1871":1,"1876":1,"1885":1,"1886":1,"1908":1,"1946":1,"1948":1,"2021":1,"2023":1,"2025":1,"2028":1,"2044":2,"2047":1,"2063":1,"2075":2,"2106":1,"2109":1,"2114":1,"2118":1,"2132":1,"2143":1,"2145":1,"2149":1,"2152":3,"2162":3,"2169":2,"2171":1,"2172":1,"2181":1,"2183":1,"2229":1,"2232":1,"2234":2,"2241":1,"2243":1,"2246":1,"2248":1,"2256":1,"2262":1,"2263":2,"2266":1,"2268":2,"2272":1,"2273":1,"2274":3,"2276":1,"2277":1,"2305":1,"2307":1,"2309":1,"2311":2,"2315":1,"2323":1,"2341":1,"2344":1,"2346":1,"2348":1,"2351":1,"2355":2,"2393":1,"2397":1,"2403":1,"2407":1,"2408":1,"2410":1,"2411":1,"2413":1,"2441":2,"2455":1,"2463":1,"2464":1,"2475":1,"2477":1,"2478":1,"2479":2,"2491":1,"2492":1,"2506":3,"2513":3,"2517":2,"2518":1,"2519":1,"2529":1,"2530":1,"2533":1,"2539":1,"2544":1,"2546":1,"2548":1,"2566":3,"2568":1,"2570":1,"2571":1,"2577":1,"2603":1,"2608":1,"2611":1,"2625":1,"2641":1,"2655":1,"2686":2,"2702":3,"2703":1,"2704":1,"2712":1,"2724":1,"2726":1,"2728":1,"2729":1,"2734":1,"2736":1,"2739":1,"2740":1,"2742":1,"2743":2,"2745":1,"2746":1,"2748":1,"2749":1,"2750":1,"2752":1,"2757":2}}],["blurb",{"0":{"2309":1},"2":{"540":1}}],["bluesmirf",{"2":{"1491":1}}],["blue",{"0":{"647":1,"649":1,"675":1,"677":1,"741":1,"743":1,"749":1,"768":1,"770":1,"776":1,"800":1,"802":1,"808":1,"832":1,"834":1,"840":1,"867":1,"869":1,"875":1,"901":1,"903":1,"909":1,"935":1,"937":1,"943":1,"969":1,"971":1,"977":1,"1003":1,"1005":1,"1011":1,"1037":1,"1039":1,"1045":1,"1071":1,"1073":1,"1079":1,"1105":1,"1107":1,"1113":1,"1158":1,"1160":1,"1166":1},"1":{"648":1,"650":1,"676":1,"678":1,"742":1,"744":1,"750":1,"769":1,"771":1,"777":1,"801":1,"803":1,"809":1,"833":1,"835":1,"841":1,"868":1,"870":1,"876":1,"902":1,"904":1,"910":1,"936":1,"938":1,"944":1,"970":1,"972":1,"978":1,"1004":1,"1006":1,"1012":1,"1038":1,"1040":1,"1046":1,"1072":1,"1074":1,"1080":1,"1106":1,"1108":1,"1114":1,"1159":1,"1161":1,"1167":1},"2":{"433":1,"435":1,"648":2,"650":2,"669":1,"672":1,"676":2,"678":2,"734":1,"737":1,"742":2,"744":2,"750":2,"760":1,"763":1,"769":2,"771":2,"777":2,"790":1,"793":1,"801":2,"803":2,"809":2,"824":1,"827":1,"833":2,"835":2,"841":2,"857":1,"860":1,"868":2,"870":2,"876":2,"891":1,"894":1,"902":2,"904":2,"910":2,"925":1,"928":1,"936":2,"938":2,"944":2,"959":1,"962":1,"970":2,"972":2,"978":2,"993":1,"996":1,"1004":2,"1006":2,"1012":2,"1027":1,"1030":1,"1038":2,"1040":2,"1046":2,"1061":1,"1064":1,"1072":2,"1074":2,"1080":2,"1095":1,"1098":1,"1106":2,"1108":2,"1114":2,"1148":1,"1151":1,"1159":2,"1161":2,"1167":2,"1217":1,"1826":1,"1953":2,"1957":2,"1958":1,"1971":1,"1973":1,"2034":1,"2058":2,"2376":1,"2460":1}}],["bluefruit",{"2":{"221":1,"515":1,"1491":4,"1492":6,"1493":1,"2678":1}}],["bluefruitle",{"0":{"142":1},"2":{"149":1,"221":1}}],["bluepill70",{"2":{"67":1}}],["bluepill",{"2":{"67":1,"72":1,"160":2,"191":1,"207":2,"489":1,"663":1,"2247":1,"2350":1,"2352":2,"2353":3}}],["bluetooth",{"0":{"1281":1,"1490":1,"1491":1,"1493":1,"1494":1,"2361":1,"2626":1,"2678":1},"1":{"1491":1,"1492":2,"1493":1,"1494":1},"2":{"50":2,"51":1,"70":1,"75":1,"111":1,"112":2,"133":1,"134":2,"142":1,"188":1,"191":4,"211":1,"221":4,"222":1,"515":1,"630":1,"1491":9,"1492":1,"1493":2,"1494":4,"2284":1,"2361":4,"2566":4,"2678":2}}],["blade",{"2":{"1728":1,"1949":2}}],["blank",{"2":{"262":1,"462":2,"540":1,"2252":1,"2301":1,"2558":1}}],["black",{"2":{"435":2,"502":1,"1388":1,"1391":3,"1395":2,"1815":1,"1953":2,"2058":2,"2268":1,"2273":1,"2311":2,"2513":5,"2596":4,"2745":1}}],["blackio83",{"2":{"253":2,"266":1}}],["blackpills",{"2":{"2114":1,"2514":2}}],["blackpill",{"0":{"2514":1},"1":{"2515":1,"2516":1,"2517":1,"2518":1,"2519":1,"2520":1,"2521":1,"2522":1},"2":{"93":1,"114":1,"160":2,"176":1,"191":2,"207":2,"253":1,"489":2,"2114":1,"2126":1,"2245":1,"2514":2,"2515":1,"2522":1,"2673":1,"2709":1}}],["blackheart",{"2":{"37":3}}],["blog",{"2":{"2483":2}}],["blowing",{"2":{"2273":1}}],["blow",{"2":{"2273":1}}],["blob",{"2":{"1275":1,"2585":2,"2592":2,"2593":2,"2596":1,"2597":1,"2599":1}}],["blobs",{"2":{"276":2}}],["blooming",{"2":{"236":1,"1949":3,"2708":1}}],["blok",{"0":{"1318":1},"2":{"176":1,"211":1,"1311":1,"1315":4,"2541":1,"2709":1}}],["bloat",{"2":{"114":1,"2263":1}}],["blocked",{"2":{"1403":1}}],["blocked65",{"2":{"159":2}}],["blocker",{"2":{"211":2}}],["blocks",{"0":{"292":1,"618":1},"1":{"619":1,"620":1},"2":{"191":2,"211":1,"231":1,"466":1,"618":1,"690":1,"1817":1,"1820":1,"1821":2,"1822":1,"2142":1,"2566":1,"2585":2,"2586":1,"2592":2,"2593":1}}],["block",{"0":{"2586":1,"2587":1,"2590":1,"2591":1,"2593":1,"2594":1,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1},"2":{"16":1,"31":3,"34":3,"134":1,"176":1,"188":1,"191":1,"290":1,"453":2,"534":1,"570":1,"573":1,"614":1,"689":1,"690":7,"694":2,"698":8,"1205":1,"1287":1,"1338":1,"1519":1,"1729":1,"1820":6,"1821":6,"1952":1,"2128":1,"2133":1,"2142":6,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2245":1,"2247":1,"2249":1,"2585":9,"2586":2,"2587":5,"2588":4,"2589":4,"2590":4,"2591":3,"2592":10,"2593":10,"2594":5,"2595":8,"2596":13,"2597":2,"2598":2,"2599":2,"2619":1,"2746":1}}],["bling",{"2":{"114":1}}],["blinks",{"2":{"2539":1}}],["blinked",{"2":{"2044":1}}],["blink",{"0":{"1596":1,"1600":1,"2044":1},"1":{"1597":1,"1601":1},"2":{"112":1,"506":2,"1556":1,"1597":2,"1601":2,"2044":9,"2161":1,"2518":1,"2694":1}}],["blinking",{"2":{"93":1,"160":1,"1554":1,"1593":1,"2044":3,"2694":1}}],["blindassassin111",{"2":{"37":2}}],["blend",{"2":{"2182":1}}],["ble",{"0":{"1492":1},"2":{"50":1,"133":1,"134":2,"142":1,"1491":2,"1492":1}}],["bl",{"0":{"7":1},"2":{"7":1,"313":1,"371":3,"530":6,"1456":7,"2126":3,"2360":7,"2405":2,"2407":1,"2408":1}}],["brmu",{"2":{"2355":1,"2392":1}}],["brmd",{"2":{"2355":1,"2389":1}}],["brk",{"2":{"2355":1,"2392":1}}],["brtg",{"2":{"1456":1,"2360":1}}],["brushing",{"2":{"246":1}}],["brutal",{"2":{"211":2}}],["brazilian",{"2":{"2712":2}}],["brazil",{"2":{"2712":1}}],["brass",{"2":{"2270":1}}],["brackets",{"2":{"2508":1}}],["bracket",{"2":{"1584":2,"2355":2,"2378":2,"2388":2,"2399":2}}],["braces",{"2":{"453":2,"454":1,"2079":1,"2170":1,"2661":1}}],["brace",{"2":{"453":5,"2378":2,"2399":2}}],["braking",{"2":{"1576":1,"1577":1}}],["brakefactor",{"2":{"1576":1,"1577":1}}],["brands",{"2":{"2244":1}}],["branding",{"2":{"1264":1}}],["brand",{"0":{"1264":1},"2":{"502":1,"624":1}}],["branching",{"2":{"1451":5,"1452":1}}],["branch",{"0":{"349":1,"2475":1,"2476":1,"2477":1,"2479":1},"1":{"2476":1,"2477":1},"2":{"51":2,"73":1,"76":1,"92":1,"94":1,"114":2,"251":1,"337":2,"346":1,"349":5,"357":1,"360":1,"361":2,"400":4,"520":1,"527":1,"529":1,"535":1,"554":3,"1451":2,"2438":1,"2472":1,"2473":2,"2474":12,"2475":3,"2476":5,"2477":3,"2478":4,"2479":3,"2480":19,"2481":1,"2564":7,"2566":1,"2567":1,"2568":7,"2720":2}}],["branches",{"2":{"51":1,"199":1,"347":1,"1451":1,"1452":1,"2478":1,"2479":1,"2568":3}}],["brauner",{"2":{"211":1}}],["brew",{"2":{"158":1,"365":1,"2238":1,"2351":1,"2431":1,"2462":1}}],["breadth",{"2":{"2567":1}}],["breath",{"2":{"502":1,"1457":1,"2263":1,"2273":1}}],["breathe",{"0":{"404":1},"2":{"404":2,"1948":2,"2034":1,"2038":2,"2376":1}}],["breathing",{"0":{"1485":1,"1486":1,"1487":1,"1488":1},"1":{"1489":1},"2":{"74":1,"93":1,"112":2,"134":1,"160":2,"199":1,"231":1,"404":1,"502":3,"582":2,"1456":2,"1457":5,"1463":1,"1485":1,"1486":1,"1487":1,"1488":1,"1489":1,"1728":3,"1948":1,"1949":7,"2034":1,"2036":2,"2037":2,"2038":2,"2040":2,"2063":2,"2360":2,"2376":1,"2677":6,"2688":1,"2694":1,"2695":1,"2708":3}}],["breakout",{"2":{"1868":1}}],["breaks",{"2":{"516":1,"654":1}}],["breakpoints",{"2":{"2513":2}}],["breakpoint",{"2":{"347":1,"349":2}}],["breakage",{"2":{"114":1}}],["break",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"105":2,"114":1,"236":1,"249":1,"337":1,"466":1,"468":1,"1332":6,"1343":5,"1359":4,"1360":2,"1375":1,"1384":2,"1385":1,"1430":2,"1440":1,"1441":1,"1446":2,"1511":2,"1523":2,"1549":4,"1568":1,"1813":3,"1826":4,"1878":1,"1880":2,"1882":2,"1897":2,"1898":3,"1935":2,"1938":1,"1943":10,"1958":3,"2044":3,"2061":1,"2137":3,"2167":3,"2169":12,"2170":8,"2171":4,"2413":1,"2472":1,"2667":1,"2728":4}}],["breaking",{"0":{"0":1,"9":1,"19":1,"39":1,"52":1,"66":1,"78":1,"96":1,"115":1,"135":1,"150":1,"161":1,"177":1,"192":1,"200":1,"212":1,"223":1,"237":1,"250":1,"267":1,"337":1,"338":1,"339":1,"351":1,"352":1,"1506":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1,"191":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"338":1,"339":1,"340":2,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"349":1,"350":1,"353":1,"354":1,"355":1,"356":1},"2":{"0":3,"9":2,"19":2,"23":1,"28":1,"39":2,"52":2,"103":1,"105":1,"107":1,"114":1,"116":1,"126":1,"131":1,"156":1,"163":1,"167":1,"172":1,"176":1,"182":1,"184":1,"187":1,"198":1,"201":1,"206":1,"213":2,"224":1,"238":1,"251":1,"254":1,"262":1,"265":2,"273":1,"275":1,"276":1,"337":3,"338":1,"339":1,"341":4,"342":1,"343":3,"344":3,"345":3,"346":1,"347":1,"349":3,"350":4,"351":1,"352":1,"353":1,"354":2,"481":1,"1503":1,"1504":1,"1506":2,"2567":1,"2720":2,"2721":1}}],["bridge",{"2":{"2240":2,"2242":2}}],["brid",{"2":{"1665":1,"1727":1,"1932":1,"2355":1,"2369":1,"2393":1}}],["briu",{"2":{"1665":1,"1727":1,"1932":1,"2355":1,"2369":1,"2393":1}}],["briefs",{"2":{"2144":1}}],["brief",{"2":{"1382":1,"1725":1,"1946":1,"2259":1}}],["briefly",{"2":{"624":1}}],["brick",{"2":{"199":1,"1287":1}}],["brightens",{"2":{"2038":1}}],["brighter",{"2":{"435":1}}],["bright",{"2":{"435":1}}],["brightness",{"0":{"652":2,"1665":1,"2046":1},"1":{"653":2},"2":{"111":1,"114":1,"160":1,"176":1,"191":2,"506":1,"644":2,"652":1,"653":2,"745":1,"746":1,"747":1,"748":1,"772":1,"773":1,"774":1,"775":1,"804":1,"805":1,"806":1,"807":1,"836":1,"837":1,"838":1,"839":1,"871":1,"872":1,"873":1,"874":1,"905":1,"906":1,"907":1,"908":1,"939":1,"940":1,"941":1,"942":1,"973":1,"974":1,"975":1,"976":1,"1007":1,"1008":1,"1009":1,"1010":1,"1041":1,"1042":1,"1043":1,"1044":1,"1075":1,"1076":1,"1077":1,"1078":1,"1109":1,"1110":1,"1111":1,"1112":1,"1162":1,"1163":1,"1164":1,"1165":1,"1454":1,"1456":1,"1457":2,"1459":1,"1656":1,"1665":7,"1722":5,"1727":4,"1728":4,"1730":4,"1743":1,"1744":1,"1745":1,"1746":1,"1757":1,"1758":1,"1759":1,"1760":1,"1761":1,"1762":1,"1773":1,"1817":3,"1822":4,"1932":1,"1948":2,"1949":7,"1954":5,"1959":1,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2001":1,"2012":1,"2013":1,"2014":1,"2015":1,"2016":1,"2033":1,"2034":4,"2035":3,"2038":1,"2046":2,"2355":6,"2360":1,"2369":4,"2376":4,"2377":2,"2389":1,"2392":1,"2393":4,"2577":1,"2596":3,"2675":2,"2677":6,"2688":5,"2694":5,"2695":4}}],["brigthness",{"2":{"176":1}}],["bringing",{"2":{"606":1}}],["brings",{"2":{"251":1,"268":1}}],["bring",{"2":{"114":1,"291":1,"1677":1,"2508":1,"2738":1}}],["brownfox",{"2":{"2270":1,"2281":1}}],["brown",{"2":{"684":1}}],["browsed",{"2":{"2501":1}}],["browser",{"2":{"522":1,"1932":1,"2355":7,"2393":7,"2404":1}}],["browse",{"2":{"331":1,"2455":1,"2743":1}}],["browsing",{"2":{"110":1,"402":1,"403":1}}],["brought",{"2":{"108":1}}],["broken",{"2":{"73":1,"93":1,"114":2,"134":2,"149":1,"176":1,"191":1,"199":1,"236":1,"277":1,"315":1,"352":1,"481":1,"560":1,"1312":1,"2328":1}}],["br",{"2":{"5":1,"282":1,"1355":1,"2152":1,"2153":3}}],["bypasses",{"2":{"2071":1}}],["bypassed",{"2":{"4":1}}],["bytecode",{"2":{"479":1}}],["byte",{"0":{"1216":1,"2095":1},"1":{"2096":1},"2":{"191":1,"684":1,"685":1,"689":1,"691":1,"701":1,"726":1,"1181":1,"1183":1,"1184":1,"1186":1,"1187":1,"1202":1,"1203":1,"1204":1,"1205":1,"1214":3,"1216":5,"1300":1,"1450":1,"1451":8,"1452":5,"1515":1,"1594":1,"1612":2,"1614":2,"1617":1,"1618":2,"1619":1,"1621":1,"1624":1,"1625":1,"1815":4,"1821":3,"1822":2,"1856":1,"1863":1,"1922":1,"1923":2,"2139":4,"2143":2,"2147":7,"2148":1,"2348":1,"2406":2,"2571":1,"2576":3,"2640":1,"2660":1}}],["bytes",{"2":{"25":1,"131":1,"134":1,"215":1,"222":1,"236":1,"641":1,"683":1,"684":3,"685":3,"686":1,"689":2,"690":2,"691":4,"692":11,"694":5,"708":1,"709":1,"711":1,"712":1,"715":1,"718":1,"721":1,"724":1,"1188":1,"1189":1,"1191":1,"1192":1,"1206":1,"1207":1,"1208":1,"1209":1,"1216":1,"1331":1,"1451":2,"1452":1,"1612":1,"1614":1,"1815":3,"1921":1,"1923":2,"1926":1,"1928":1,"2128":1,"2130":1,"2139":3,"2147":1,"2148":2,"2226":1,"2229":1,"2255":1,"2341":1,"2347":4,"2348":1,"2353":2,"2425":1,"2453":4,"2469":1,"2577":2,"2587":1,"2588":1,"2593":1,"2594":1,"2596":1,"2598":1,"2599":1,"2683":2,"2702":1,"2757":1}}],["by",{"0":{"27":1,"43":1,"532":1,"536":1,"1525":1,"2124":1,"2125":1,"2126":1,"2127":1,"2312":1},"1":{"537":1,"538":1,"539":1,"540":1,"541":1,"542":1,"543":1,"2313":1,"2314":1,"2315":1,"2316":1,"2317":1,"2318":1,"2319":1,"2320":1},"2":{"3":1,"7":1,"15":1,"21":1,"25":2,"28":1,"31":1,"34":1,"37":6,"38":2,"43":2,"45":1,"49":2,"50":2,"58":1,"74":1,"82":1,"94":1,"114":6,"118":2,"119":2,"120":1,"124":1,"125":1,"134":5,"149":2,"154":2,"164":1,"169":1,"173":1,"174":1,"175":1,"176":5,"179":1,"182":1,"184":1,"185":1,"191":4,"194":1,"195":3,"199":4,"201":1,"209":3,"211":1,"215":1,"222":3,"233":1,"248":1,"263":1,"273":1,"278":1,"282":3,"285":1,"292":1,"317":2,"318":1,"321":1,"329":1,"331":1,"340":1,"341":3,"352":2,"370":1,"371":2,"374":1,"405":1,"408":1,"413":1,"415":1,"417":1,"423":1,"428":2,"430":4,"435":1,"441":1,"447":1,"454":1,"460":1,"461":1,"462":1,"470":1,"479":1,"481":1,"485":1,"492":1,"493":1,"498":1,"502":3,"504":1,"505":1,"510":1,"511":1,"512":1,"513":2,"516":3,"520":1,"521":1,"522":1,"523":1,"527":1,"529":4,"530":1,"533":1,"537":1,"541":1,"554":1,"558":1,"559":1,"560":3,"569":1,"571":1,"572":1,"580":2,"581":1,"584":1,"589":2,"597":1,"598":1,"599":1,"600":1,"601":1,"610":1,"612":1,"613":1,"614":2,"616":2,"624":1,"626":3,"627":1,"628":1,"636":2,"641":3,"643":1,"656":1,"657":1,"659":1,"660":1,"661":1,"662":1,"663":1,"664":1,"667":1,"669":1,"681":3,"684":2,"687":1,"688":2,"689":2,"690":3,"691":1,"692":1,"700":1,"701":3,"726":1,"729":1,"734":1,"755":1,"760":1,"784":1,"790":1,"816":1,"820":1,"822":2,"824":1,"848":1,"852":1,"853":1,"855":2,"857":1,"883":1,"887":1,"889":2,"891":1,"917":1,"921":1,"923":2,"925":1,"951":1,"955":1,"957":2,"959":1,"985":1,"989":1,"991":2,"993":1,"1019":1,"1023":1,"1025":2,"1027":1,"1053":1,"1057":1,"1059":2,"1061":1,"1087":1,"1091":1,"1093":2,"1095":1,"1122":1,"1128":1,"1129":1,"1132":1,"1133":2,"1134":2,"1136":1,"1137":1,"1143":1,"1148":1,"1175":1,"1181":2,"1194":1,"1196":1,"1213":1,"1215":1,"1216":1,"1219":1,"1225":1,"1227":1,"1236":2,"1245":1,"1249":1,"1250":1,"1254":1,"1255":1,"1265":4,"1270":1,"1273":1,"1276":1,"1281":1,"1283":1,"1288":1,"1294":1,"1295":1,"1300":4,"1303":1,"1312":2,"1316":1,"1320":2,"1321":1,"1325":1,"1326":2,"1329":4,"1332":5,"1335":2,"1336":1,"1340":1,"1346":2,"1353":1,"1354":1,"1357":2,"1359":2,"1361":3,"1362":1,"1368":1,"1378":1,"1380":1,"1383":1,"1385":1,"1387":2,"1393":2,"1398":1,"1400":2,"1402":1,"1403":1,"1404":2,"1405":1,"1406":4,"1414":3,"1415":1,"1423":1,"1430":1,"1431":2,"1435":1,"1438":1,"1439":2,"1441":1,"1451":5,"1452":2,"1454":3,"1455":1,"1458":1,"1471":1,"1492":1,"1495":2,"1496":1,"1499":5,"1500":5,"1501":3,"1503":2,"1507":1,"1514":1,"1516":1,"1517":1,"1518":4,"1519":1,"1522":1,"1523":3,"1527":2,"1528":1,"1529":2,"1547":1,"1553":2,"1554":1,"1557":3,"1558":1,"1559":1,"1567":1,"1573":2,"1577":1,"1631":1,"1633":1,"1634":2,"1635":1,"1636":1,"1637":1,"1655":1,"1665":1,"1670":1,"1671":1,"1672":1,"1674":1,"1675":6,"1677":2,"1682":1,"1685":1,"1722":2,"1723":1,"1725":2,"1728":1,"1729":1,"1787":1,"1794":1,"1802":1,"1804":3,"1815":3,"1816":2,"1820":3,"1821":2,"1822":7,"1832":1,"1854":2,"1857":1,"1865":1,"1866":1,"1871":1,"1872":5,"1873":4,"1874":1,"1875":1,"1876":2,"1879":1,"1880":1,"1885":1,"1887":2,"1890":1,"1900":2,"1908":1,"1910":1,"1912":1,"1920":2,"1921":3,"1923":1,"1929":1,"1932":7,"1934":1,"1935":2,"1936":1,"1940":1,"1943":1,"1944":1,"1946":2,"1948":2,"1949":3,"1950":1,"1952":1,"1954":1,"2032":1,"2034":2,"2035":4,"2038":2,"2041":1,"2042":2,"2044":1,"2046":1,"2059":2,"2060":1,"2063":1,"2067":1,"2073":1,"2074":1,"2076":1,"2106":3,"2109":1,"2114":3,"2119":1,"2123":1,"2124":2,"2125":1,"2126":1,"2129":1,"2130":1,"2131":1,"2132":1,"2136":1,"2139":3,"2140":2,"2143":9,"2144":2,"2147":3,"2148":1,"2152":1,"2156":2,"2157":1,"2160":1,"2161":2,"2162":1,"2169":2,"2171":1,"2182":3,"2183":5,"2199":1,"2225":1,"2226":1,"2228":1,"2229":1,"2230":2,"2234":1,"2235":1,"2236":1,"2243":1,"2246":1,"2248":1,"2252":5,"2255":2,"2261":1,"2263":7,"2267":1,"2272":1,"2273":1,"2275":1,"2277":1,"2279":1,"2280":2,"2281":1,"2286":1,"2292":1,"2298":1,"2300":1,"2305":3,"2309":1,"2311":4,"2314":2,"2315":1,"2318":1,"2319":1,"2324":1,"2326":1,"2343":1,"2344":1,"2346":1,"2350":1,"2351":1,"2353":1,"2375":4,"2401":1,"2402":1,"2405":1,"2410":1,"2411":1,"2413":2,"2417":1,"2427":1,"2452":1,"2454":3,"2461":1,"2463":2,"2465":1,"2466":1,"2467":1,"2469":1,"2473":1,"2474":1,"2477":2,"2478":1,"2479":2,"2480":4,"2490":4,"2491":3,"2502":1,"2506":1,"2513":1,"2516":1,"2518":1,"2524":1,"2525":1,"2539":3,"2541":2,"2543":1,"2544":3,"2545":1,"2546":1,"2548":4,"2551":1,"2552":1,"2556":3,"2564":1,"2566":5,"2567":1,"2570":1,"2574":1,"2575":3,"2576":21,"2577":7,"2578":2,"2585":1,"2587":2,"2592":1,"2594":1,"2596":2,"2615":1,"2617":1,"2619":1,"2622":1,"2623":1,"2632":1,"2645":1,"2660":1,"2661":1,"2671":2,"2680":2,"2683":1,"2686":3,"2702":2,"2703":1,"2704":3,"2707":1,"2708":3,"2710":1,"2711":1,"2718":1,"2719":1,"2720":1,"2721":1,"2722":1,"2727":1,"2728":10,"2734":1,"2735":6,"2736":5,"2737":2,"2738":2,"2743":2,"2745":1,"2746":1,"2750":2,"2754":1,"2757":4}}],["beware",{"2":{"1573":1}}],["beat",{"2":{"2111":7}}],["beats",{"2":{"1400":1,"2111":2}}],["beacon",{"2":{"1728":3,"1949":6,"2708":2}}],["bear65",{"2":{"72":1}}],["bear",{"2":{"67":2,"277":2,"2268":1,"2275":1}}],["bespoke",{"2":{"2546":1}}],["besides",{"2":{"1373":1,"1393":1,"1939":1,"2262":1,"2725":1}}],["best",{"0":{"615":1,"2471":1},"1":{"2472":1},"2":{"233":1,"367":1,"453":1,"538":1,"546":1,"560":2,"562":1,"575":1,"615":1,"726":1,"1336":1,"1359":3,"1403":1,"1447":1,"1824":1,"1902":1,"1950":1,"2169":1,"2181":1,"2274":1,"2411":1,"2427":1,"2450":1,"2472":1,"2546":1,"2552":1,"2563":1,"2564":1,"2568":1,"2577":1,"2714":1}}],["bepo",{"2":{"1355":1,"2712":2}}],["beyond",{"0":{"1290":1},"2":{"690":1,"1290":1,"1941":1,"2419":1}}],["beneath",{"2":{"2276":1}}],["beneficial",{"2":{"690":1,"2584":1}}],["benefits",{"2":{"350":1,"1655":1,"2114":1}}],["benefit",{"2":{"215":1,"560":1,"1376":1,"2292":1}}],["bent",{"2":{"2273":2,"2274":1}}],["bends",{"2":{"2272":1}}],["bending",{"2":{"2270":1,"2272":1}}],["bend",{"2":{"231":1,"1793":4,"2272":1,"2371":4}}],["beck",{"2":{"2750":1}}],["becom",{"2":{"1938":1}}],["become",{"2":{"315":1,"1527":1,"2245":2,"2247":2,"2249":2,"2273":1,"2311":1,"2411":2}}],["becomes",{"2":{"213":1,"231":1,"505":1,"1499":1,"2307":1,"2327":1}}],["because",{"2":{"28":1,"352":1,"454":1,"537":1,"635":3,"1134":1,"1212":1,"1216":1,"1272":1,"1302":1,"1326":2,"1335":1,"1336":1,"1338":1,"1383":1,"1442":1,"1445":1,"1451":1,"1499":3,"1675":1,"1791":1,"1821":2,"1878":1,"1887":1,"1921":1,"1959":1,"1960":1,"2031":1,"2044":1,"2126":1,"2128":1,"2132":1,"2145":1,"2152":2,"2161":2,"2162":1,"2171":1,"2177":1,"2226":1,"2319":1,"2327":1,"2348":1,"2398":1,"2411":2,"2413":1,"2414":1,"2462":1,"2474":1,"2516":1,"2519":1,"2568":1,"2576":1,"2577":1,"2584":1,"2605":1,"2728":1,"2729":1,"2735":1,"2744":1,"2756":1}}],["bebol",{"2":{"211":1}}],["beekeeb",{"2":{"211":1}}],["beeps",{"2":{"1386":1}}],["beep",{"2":{"120":1,"1354":1,"1357":3,"1386":1,"2074":1,"2676":2}}],["been",{"0":{"338":1},"2":{"1":2,"3":1,"7":1,"8":2,"10":1,"14":2,"15":1,"16":1,"25":1,"36":1,"38":1,"49":2,"60":1,"67":2,"69":1,"70":3,"82":1,"84":1,"86":3,"90":1,"98":1,"114":2,"118":2,"123":1,"124":1,"125":1,"126":1,"128":1,"132":1,"137":1,"140":2,"142":1,"154":1,"157":1,"163":1,"164":1,"166":1,"167":1,"169":1,"175":2,"182":5,"183":1,"185":1,"194":2,"196":1,"198":2,"201":4,"202":1,"203":1,"206":1,"209":1,"213":2,"215":1,"218":1,"219":1,"220":1,"221":1,"224":1,"228":2,"230":1,"231":1,"233":2,"238":1,"243":1,"254":1,"262":3,"265":1,"271":1,"273":1,"349":1,"375":1,"400":1,"510":1,"523":1,"537":1,"575":1,"578":2,"585":1,"587":4,"598":1,"600":1,"606":2,"626":1,"663":1,"1316":1,"1317":1,"1359":1,"1360":2,"1452":1,"1495":1,"1645":1,"1674":1,"1682":1,"1730":5,"1805":1,"1827":1,"1894":1,"1925":1,"1940":1,"1942":1,"1949":1,"1954":7,"2044":1,"2108":1,"2118":1,"2128":2,"2152":2,"2160":1,"2162":1,"2169":2,"2249":1,"2305":1,"2311":1,"2347":1,"2424":1,"2445":1,"2450":1,"2454":1,"2455":1,"2473":1,"2479":1,"2480":1,"2492":1,"2494":1,"2525":2,"2566":2,"2576":1,"2577":2,"2601":1,"2633":1,"2719":1,"2734":1,"2743":1,"2748":1}}],["belgium",{"2":{"2712":2}}],["belgian",{"2":{"1355":1,"2712":4}}],["bel",{"2":{"2074":1,"2676":1}}],["belong",{"2":{"1132":1,"1133":1,"1412":1,"2566":2}}],["below",{"2":{"43":1,"55":1,"182":1,"196":2,"204":1,"224":1,"432":1,"462":1,"568":1,"597":1,"598":1,"602":1,"610":2,"623":1,"628":1,"656":1,"681":3,"693":1,"701":1,"707":1,"1127":1,"1130":1,"1132":1,"1133":1,"1179":1,"1200":1,"1218":1,"1238":1,"1251":1,"1304":1,"1335":1,"1416":1,"1430":1,"1460":1,"1496":1,"1499":2,"1500":1,"1510":1,"1572":1,"1637":1,"1658":1,"1662":1,"1670":1,"1680":2,"1683":1,"1724":1,"1820":1,"1822":1,"1853":1,"1875":1,"1885":2,"1898":1,"1899":1,"1906":1,"1932":1,"1945":1,"1949":1,"2032":1,"2033":1,"2059":1,"2075":1,"2119":1,"2147":1,"2148":1,"2161":1,"2162":1,"2169":1,"2170":2,"2178":1,"2262":2,"2268":1,"2282":1,"2385":1,"2423":2,"2544":1,"2566":1,"2573":1,"2577":3,"2585":1,"2587":3,"2592":1,"2596":3,"2710":1,"2711":1,"2725":1,"2749":2,"2753":1}}],["believe",{"2":{"352":1}}],["belt",{"2":{"199":1}}],["bells",{"2":{"2566":1}}],["bella",{"2":{"211":1}}],["bell",{"2":{"114":1,"1357":1,"1399":1,"2074":2}}],["began",{"2":{"2226":1}}],["begining",{"2":{"2143":2}}],["begins",{"2":{"1451":1,"1680":1,"1689":1,"2152":1,"2226":2,"2368":1,"2406":1,"2423":1}}],["beginner",{"2":{"1340":1}}],["beginners",{"0":{"1338":1}}],["beginning",{"0":{"2723":1},"2":{"203":1,"336":1,"453":1,"1375":1,"1451":3,"1555":1,"1804":1,"1822":2,"2147":1,"2148":1,"2162":1,"2171":1,"2179":3,"2274":1,"2474":1,"2614":1}}],["begin",{"2":{"94":1,"113":1,"114":1,"133":1,"134":1,"249":1,"1442":1,"1687":1,"1691":1,"1822":2,"2071":1,"2196":1,"2211":1,"2294":1,"2443":1,"2452":1,"2757":1}}],["begun",{"2":{"50":1}}],["bet",{"2":{"233":1,"1447":1,"2450":1}}],["beta",{"2":{"143":2,"211":1,"228":1}}],["better",{"0":{"2601":1},"1":{"2602":1,"2603":1,"2604":1,"2605":1,"2606":1,"2607":1,"2608":1,"2609":1,"2610":1,"2611":1,"2612":1},"2":{"50":1,"98":1,"149":1,"160":1,"191":2,"263":1,"458":1,"467":1,"482":1,"589":1,"1857":1,"1902":1,"2286":1,"2312":1,"2409":1,"2491":1,"2497":2,"2506":1,"2509":1,"2584":1,"2670":1,"2719":1,"2730":1,"2735":1,"2736":1,"2757":1}}],["between",{"0":{"1265":1,"1376":1,"1903":1,"2130":1},"1":{"1377":1,"1378":1,"1379":1,"1380":1,"1381":1,"1382":1,"1383":1,"1384":1,"1385":1},"2":{"32":1,"45":1,"49":2,"64":1,"76":1,"107":1,"114":1,"211":2,"249":1,"257":1,"258":1,"259":2,"266":1,"271":1,"276":1,"341":1,"413":1,"415":1,"453":1,"462":1,"468":1,"474":1,"502":2,"505":2,"511":3,"563":1,"592":1,"630":1,"656":1,"660":3,"699":1,"1121":1,"1174":1,"1195":1,"1217":1,"1225":1,"1265":1,"1272":1,"1288":1,"1300":1,"1302":2,"1325":1,"1339":2,"1340":1,"1341":6,"1376":1,"1377":1,"1385":1,"1451":1,"1471":1,"1494":2,"1496":1,"1500":1,"1528":1,"1533":1,"1557":1,"1559":1,"1567":1,"1587":1,"1637":1,"1677":1,"1717":1,"1803":4,"1804":2,"1805":8,"1807":3,"1808":1,"1822":1,"1830":1,"1857":1,"1879":1,"1902":1,"1903":1,"1918":1,"1936":1,"2033":1,"2036":1,"2038":1,"2040":6,"2051":13,"2053":2,"2054":2,"2055":2,"2069":1,"2079":1,"2083":1,"2087":1,"2113":1,"2117":1,"2118":2,"2119":1,"2120":1,"2126":1,"2129":3,"2130":1,"2131":1,"2133":1,"2146":1,"2148":1,"2149":1,"2157":1,"2161":1,"2169":1,"2179":1,"2217":1,"2225":1,"2227":2,"2231":1,"2238":1,"2258":1,"2271":1,"2272":1,"2295":1,"2342":1,"2349":1,"2361":1,"2420":1,"2474":2,"2495":1,"2508":1,"2571":2,"2574":1,"2584":1,"2585":1,"2592":1,"2611":1,"2614":1,"2662":1,"2674":2,"2689":1,"2694":1,"2729":1,"2735":1,"2737":1,"2738":1,"2757":1}}],["behind",{"2":{"49":1,"198":1,"201":1,"213":1,"224":1,"238":1,"251":1,"517":1,"2162":1,"2719":2}}],["behave",{"2":{"529":1,"1302":1,"1503":1,"1676":1,"1885":1,"1940":1,"2160":1,"2393":1,"2567":1,"2735":1}}],["behaves",{"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"337":1,"567":1,"1941":1,"2423":1}}],["behavioral",{"2":{"1271":1}}],["behaviors",{"0":{"505":1}}],["behavior",{"0":{"567":1,"571":1},"1":{"568":1,"572":1,"573":1},"2":{"4":1,"49":1,"64":1,"87":2,"88":1,"103":1,"104":1,"126":1,"127":1,"176":1,"194":2,"331":1,"352":3,"372":1,"430":2,"435":1,"481":1,"484":1,"511":1,"562":1,"566":2,"569":1,"571":2,"572":1,"589":1,"1271":1,"1403":1,"1415":1,"1528":1,"1554":1,"1555":1,"1655":1,"1659":1,"1662":1,"1666":1,"1670":1,"1671":1,"1673":1,"1674":1,"1675":1,"1676":1,"1716":1,"1717":1,"1824":1,"1876":2,"1941":1,"2131":1,"2170":1,"2172":1,"2196":1,"2197":1,"2198":1,"2306":1,"2311":1,"2416":1,"2490":1,"2502":1,"2539":2,"2541":1,"2628":1,"2726":1,"2729":2}}],["behaviours",{"2":{"198":1}}],["behaviour",{"0":{"194":1,"206":1,"1886":1},"2":{"2":1,"113":1,"114":1,"134":1,"149":2,"191":2,"206":1,"211":2,"587":1,"597":1,"1245":1,"1303":1,"1344":1,"1432":1,"1499":1,"1520":1,"1560":2,"1685":1,"1886":1,"1918":1,"1948":1,"2034":1,"2124":1,"2558":1}}],["being",{"2":{"6":1,"92":1,"114":1,"124":1,"176":1,"182":1,"234":1,"355":1,"493":1,"560":1,"659":2,"660":1,"685":1,"694":1,"1253":1,"1303":1,"1312":1,"1329":1,"1346":1,"1351":1,"1363":1,"1365":1,"1376":2,"1384":1,"1412":1,"1437":1,"1442":1,"1459":1,"1471":1,"1500":1,"1515":1,"1553":1,"1556":3,"1655":1,"1675":3,"1827":1,"1858":1,"1940":2,"2031":1,"2037":1,"2152":2,"2161":2,"2169":3,"2263":2,"2268":2,"2279":1,"2311":14,"2363":1,"2407":1,"2425":1,"2450":1,"2454":1,"2478":1,"2479":1,"2490":2,"2495":1,"2522":1,"2548":1,"2568":1,"2576":3,"2617":1,"2709":1,"2721":1,"2725":1,"2739":1}}],["be",{"0":{"25":1,"263":1,"341":1,"503":1,"504":1,"505":1,"532":1,"2517":1,"2720":1,"2721":1},"2":{"5":1,"10":2,"11":1,"16":1,"22":1,"23":1,"24":1,"25":1,"28":1,"45":1,"49":2,"50":2,"58":1,"60":1,"63":2,"64":1,"70":1,"74":4,"88":2,"93":1,"100":1,"103":2,"104":2,"107":1,"109":1,"110":1,"118":1,"124":2,"125":1,"126":1,"127":2,"131":1,"134":4,"137":1,"138":1,"153":2,"154":1,"156":1,"157":1,"160":1,"164":1,"176":1,"184":1,"185":2,"191":2,"194":3,"195":2,"201":5,"203":1,"209":3,"210":1,"213":2,"220":1,"221":1,"228":3,"230":2,"231":1,"236":1,"249":1,"254":1,"262":2,"263":1,"265":3,"266":1,"268":1,"271":1,"273":1,"275":2,"276":2,"282":3,"291":1,"315":1,"316":1,"317":1,"324":1,"327":1,"331":3,"334":3,"335":1,"337":1,"340":1,"341":8,"343":2,"344":2,"345":3,"349":1,"350":10,"352":5,"357":2,"358":2,"361":1,"370":3,"371":2,"374":5,"384":1,"385":1,"387":1,"396":3,"400":1,"402":1,"403":2,"411":3,"414":1,"415":1,"416":1,"417":1,"424":1,"430":2,"433":1,"434":1,"435":2,"441":3,"446":1,"447":1,"450":1,"452":1,"453":1,"455":1,"457":1,"460":1,"462":1,"465":1,"466":2,"472":1,"473":1,"474":3,"478":1,"479":2,"481":3,"482":2,"483":1,"484":1,"486":1,"497":1,"498":1,"501":2,"502":4,"504":4,"505":1,"506":3,"509":3,"510":2,"511":3,"512":1,"515":2,"516":4,"519":2,"525":1,"529":4,"530":2,"532":1,"533":1,"534":1,"535":1,"537":2,"538":1,"539":1,"542":1,"546":1,"550":1,"551":1,"554":2,"556":2,"560":5,"561":1,"566":2,"567":1,"568":3,"570":1,"571":2,"574":1,"575":1,"580":1,"581":1,"584":2,"586":2,"588":1,"589":2,"592":2,"597":4,"598":9,"599":1,"600":2,"601":1,"602":1,"613":1,"617":1,"621":3,"626":4,"627":3,"628":4,"629":2,"630":1,"635":5,"636":2,"638":1,"639":3,"641":2,"646":1,"659":1,"660":5,"661":2,"663":1,"669":1,"673":1,"681":3,"683":1,"684":4,"685":1,"686":1,"688":1,"689":5,"690":5,"691":2,"693":1,"698":2,"701":4,"702":1,"703":1,"707":3,"726":1,"727":1,"734":1,"738":1,"760":1,"764":1,"790":1,"794":1,"820":1,"824":1,"828":1,"852":2,"853":1,"857":1,"861":1,"887":1,"891":1,"895":1,"921":1,"925":1,"929":1,"955":1,"959":1,"963":1,"989":1,"993":1,"997":1,"1023":2,"1027":1,"1031":1,"1057":2,"1061":1,"1065":1,"1091":1,"1095":1,"1099":1,"1121":1,"1125":1,"1127":1,"1128":1,"1129":4,"1130":1,"1132":2,"1133":2,"1134":2,"1135":1,"1138":1,"1142":1,"1148":1,"1152":1,"1176":1,"1177":4,"1179":2,"1181":2,"1198":1,"1200":2,"1212":1,"1215":1,"1216":2,"1217":2,"1218":1,"1221":1,"1223":3,"1228":1,"1230":1,"1236":1,"1242":1,"1243":3,"1247":1,"1248":1,"1249":1,"1252":1,"1253":1,"1254":1,"1265":1,"1270":3,"1273":1,"1275":1,"1293":2,"1294":1,"1295":1,"1298":1,"1299":2,"1300":4,"1303":1,"1304":1,"1310":2,"1314":1,"1319":1,"1325":1,"1326":3,"1328":1,"1329":1,"1331":3,"1332":2,"1335":4,"1336":2,"1337":1,"1338":2,"1339":1,"1340":4,"1341":1,"1342":1,"1346":2,"1347":4,"1348":1,"1349":1,"1351":1,"1353":1,"1359":3,"1360":1,"1361":2,"1364":1,"1365":1,"1366":1,"1367":1,"1368":2,"1375":2,"1376":2,"1377":5,"1378":1,"1379":2,"1380":1,"1383":2,"1384":1,"1385":2,"1387":2,"1390":1,"1391":1,"1393":1,"1394":2,"1396":1,"1398":5,"1400":1,"1402":1,"1403":1,"1404":2,"1406":1,"1411":1,"1414":1,"1415":1,"1416":1,"1423":1,"1430":1,"1431":7,"1435":1,"1436":1,"1440":2,"1441":1,"1445":1,"1446":2,"1447":1,"1451":2,"1459":2,"1467":1,"1492":2,"1494":1,"1495":1,"1497":1,"1500":1,"1501":1,"1506":2,"1511":1,"1513":1,"1514":2,"1515":4,"1516":3,"1518":8,"1525":2,"1528":1,"1530":1,"1531":1,"1533":2,"1534":3,"1537":1,"1548":2,"1549":1,"1551":2,"1553":1,"1557":4,"1558":1,"1559":2,"1560":1,"1561":2,"1562":4,"1570":1,"1573":5,"1574":1,"1577":1,"1578":2,"1579":2,"1589":1,"1594":2,"1596":2,"1621":2,"1630":2,"1633":2,"1634":3,"1636":1,"1637":3,"1642":1,"1657":1,"1659":1,"1661":1,"1663":1,"1665":2,"1666":1,"1668":1,"1670":13,"1671":3,"1672":1,"1673":2,"1674":1,"1676":2,"1677":2,"1684":1,"1685":1,"1716":1,"1717":1,"1725":3,"1729":2,"1731":1,"1743":1,"1745":1,"1787":1,"1804":2,"1806":1,"1807":1,"1808":2,"1809":1,"1811":1,"1814":2,"1815":2,"1817":1,"1819":1,"1821":1,"1822":4,"1824":1,"1825":1,"1827":1,"1828":1,"1832":2,"1853":2,"1854":1,"1857":3,"1860":1,"1863":3,"1865":4,"1866":2,"1869":1,"1870":3,"1871":2,"1872":3,"1874":1,"1876":4,"1880":3,"1884":2,"1885":5,"1886":1,"1887":3,"1890":1,"1892":1,"1894":3,"1895":1,"1897":4,"1898":2,"1899":2,"1900":2,"1901":2,"1906":1,"1907":1,"1908":2,"1910":1,"1912":3,"1915":1,"1920":1,"1921":3,"1922":2,"1928":2,"1929":1,"1932":1,"1933":1,"1934":3,"1935":1,"1936":2,"1937":1,"1938":3,"1939":1,"1941":1,"1942":3,"1943":1,"1946":3,"1948":2,"1951":1,"1952":2,"1953":1,"1955":1,"1959":2,"1970":1,"1972":1,"2031":1,"2032":1,"2034":2,"2035":2,"2036":1,"2037":2,"2042":3,"2044":2,"2058":1,"2061":2,"2063":1,"2065":1,"2066":2,"2067":1,"2072":2,"2075":2,"2108":1,"2114":1,"2118":2,"2120":2,"2124":2,"2125":3,"2126":2,"2128":3,"2129":1,"2130":6,"2131":2,"2132":1,"2139":2,"2143":2,"2145":1,"2146":2,"2147":1,"2150":1,"2152":7,"2153":2,"2156":1,"2161":4,"2162":1,"2168":1,"2169":6,"2170":1,"2171":6,"2172":1,"2174":1,"2175":1,"2176":1,"2178":1,"2182":6,"2183":2,"2196":1,"2197":1,"2198":1,"2199":1,"2217":1,"2225":1,"2226":4,"2228":1,"2229":2,"2230":2,"2235":2,"2237":3,"2238":1,"2240":3,"2242":2,"2243":2,"2244":1,"2245":1,"2247":1,"2249":1,"2254":2,"2255":3,"2257":3,"2259":1,"2260":2,"2262":5,"2263":7,"2268":2,"2269":1,"2270":2,"2271":1,"2272":2,"2273":7,"2274":3,"2275":2,"2276":2,"2277":2,"2279":4,"2280":1,"2282":1,"2284":1,"2286":1,"2294":1,"2295":2,"2296":3,"2299":2,"2300":2,"2301":1,"2303":2,"2305":1,"2307":1,"2308":1,"2309":2,"2311":4,"2312":1,"2315":1,"2316":1,"2318":1,"2327":1,"2328":1,"2330":1,"2331":1,"2332":1,"2334":1,"2335":1,"2342":1,"2344":1,"2346":1,"2347":3,"2348":2,"2349":1,"2350":2,"2351":3,"2352":1,"2353":1,"2355":1,"2367":1,"2398":1,"2401":2,"2402":1,"2403":2,"2405":3,"2409":1,"2411":3,"2413":4,"2414":1,"2421":1,"2423":3,"2427":2,"2428":2,"2431":2,"2439":1,"2440":4,"2441":1,"2443":1,"2447":2,"2448":2,"2450":4,"2451":1,"2452":1,"2454":1,"2456":1,"2457":1,"2466":2,"2468":1,"2469":2,"2476":1,"2477":1,"2479":1,"2480":4,"2490":2,"2491":2,"2495":1,"2497":1,"2498":1,"2501":3,"2506":2,"2508":1,"2512":1,"2513":12,"2514":1,"2515":1,"2516":3,"2517":5,"2518":5,"2519":4,"2521":1,"2522":1,"2524":6,"2525":1,"2526":1,"2529":1,"2530":1,"2533":1,"2534":1,"2535":1,"2539":1,"2541":1,"2542":1,"2543":1,"2544":2,"2545":1,"2546":1,"2548":6,"2549":3,"2550":2,"2551":1,"2552":2,"2553":1,"2555":1,"2557":1,"2560":2,"2563":1,"2564":11,"2565":6,"2566":32,"2567":13,"2569":2,"2570":1,"2571":1,"2573":2,"2574":5,"2575":4,"2576":39,"2577":30,"2579":1,"2584":1,"2587":2,"2588":2,"2589":1,"2592":1,"2593":1,"2594":2,"2595":1,"2596":3,"2598":2,"2600":1,"2601":1,"2605":4,"2614":2,"2633":1,"2667":1,"2670":1,"2672":2,"2673":1,"2674":2,"2676":1,"2677":1,"2678":1,"2679":1,"2683":3,"2686":1,"2688":2,"2689":1,"2692":1,"2693":1,"2694":2,"2695":2,"2697":2,"2698":1,"2699":1,"2700":1,"2701":1,"2702":1,"2707":1,"2708":1,"2711":1,"2714":1,"2718":2,"2719":3,"2720":7,"2721":2,"2722":1,"2723":1,"2725":1,"2728":5,"2729":1,"2734":2,"2735":5,"2736":3,"2737":5,"2738":2,"2740":2,"2743":1,"2745":1,"2749":3,"2752":3,"2753":2,"2754":1,"2755":1,"2756":1,"2757":2}}],["beforehand",{"2":{"2450":1}}],["before",{"0":{"343":1,"344":1,"345":1,"346":1},"2":{"1":1,"25":1,"45":1,"49":1,"55":1,"73":1,"90":1,"105":1,"160":2,"176":1,"191":1,"199":1,"203":2,"211":1,"234":1,"240":1,"246":1,"259":1,"263":1,"300":1,"307":1,"341":1,"345":1,"347":1,"350":9,"396":1,"409":1,"411":1,"447":1,"478":1,"505":7,"515":3,"554":1,"556":2,"558":1,"560":4,"568":1,"571":1,"574":1,"575":1,"578":1,"585":1,"587":1,"592":2,"598":2,"599":1,"600":1,"636":1,"698":2,"707":1,"1179":1,"1200":1,"1326":1,"1359":1,"1360":4,"1368":1,"1369":1,"1403":1,"1411":1,"1416":1,"1431":2,"1440":1,"1441":1,"1442":1,"1445":1,"1451":1,"1497":1,"1510":1,"1527":1,"1570":1,"1596":1,"1622":1,"1624":1,"1670":1,"1714":1,"1725":1,"1776":1,"1778":1,"1780":1,"1783":1,"1807":1,"1816":1,"1821":1,"1860":8,"1879":1,"1882":1,"1885":1,"1887":2,"1894":2,"1897":2,"1910":1,"1912":1,"1917":1,"1946":1,"2021":1,"2023":1,"2025":1,"2028":1,"2070":1,"2084":1,"2088":1,"2106":2,"2107":1,"2118":1,"2128":2,"2134":1,"2152":2,"2160":1,"2162":1,"2169":1,"2262":1,"2263":1,"2270":1,"2272":1,"2274":1,"2276":1,"2300":1,"2311":1,"2348":1,"2418":1,"2441":1,"2450":1,"2456":1,"2457":1,"2474":1,"2490":1,"2494":1,"2504":1,"2524":3,"2551":1,"2552":1,"2564":1,"2566":2,"2569":1,"2575":1,"2605":1,"2641":1,"2680":1,"2686":1,"2691":1,"2696":1,"2699":1,"2713":1,"2720":1,"2729":1,"2734":1,"2735":1}}],["m4",{"2":{"2528":1}}],["m32u4",{"2":{"2347":1}}],["m3n3van",{"2":{"143":2}}],["mrwd",{"2":{"1932":1,"2355":1,"2393":1}}],["mrelax",{"2":{"160":1}}],["mhz",{"2":{"1181":2}}],["mb85rs64v",{"2":{"685":2}}],["mb85rc256v",{"2":{"684":2}}],["mnt",{"2":{"2463":1}}],["mnemonic",{"2":{"2182":2,"2263":1}}],["mnxt",{"2":{"530":2,"1665":1,"1932":1,"2355":1,"2393":1}}],["mnk50",{"2":{"241":2}}],["mnk75",{"2":{"211":1,"241":2}}],["mnk1800s",{"2":{"211":1,"241":2}}],["mnk65",{"2":{"211":1}}],["mm",{"2":{"349":2,"1859":4,"1863":1,"2699":1}}],["mmcu=",{"2":{"292":1,"2235":1}}],["mmoskal",{"2":{"199":1}}],["m2s",{"2":{"2130":7}}],["m256ws",{"2":{"277":1}}],["m256wh",{"2":{"277":1}}],["m20add",{"2":{"114":1}}],["mj65",{"2":{"253":2}}],["mj6xy",{"2":{"211":1}}],["mfa",{"2":{"2506":1}}],["mffd",{"2":{"1932":1,"2355":1,"2393":1}}],["mf34",{"2":{"226":1,"236":1}}],["mf17",{"2":{"226":1,"236":1}}],["m60",{"2":{"199":1}}],["m65",{"2":{"114":1,"211":2}}],["msel",{"2":{"2355":1,"2393":1}}],["msecs",{"2":{"1361":1}}],["mstp",{"2":{"2355":1,"2393":1}}],["msb",{"2":{"2148":2}}],["msbs",{"2":{"2147":1}}],["msg1967778",{"2":{"1298":2}}],["msg1884034",{"2":{"1297":2}}],["msg1127447",{"2":{"1289":2}}],["msg1492604",{"2":{"1275":2}}],["msystem",{"2":{"2508":1}}],["msys2",{"0":{"2508":1},"2":{"158":1,"160":1,"625":1,"1241":1,"2347":1,"2351":1,"2431":1,"2458":1,"2459":1,"2460":1,"2508":2}}],["msys",{"2":{"158":1,"160":1,"240":1,"2244":1,"2347":1,"2431":1,"2435":1,"2458":1,"2459":1,"2460":3,"2468":1,"2508":2,"2513":4}}],["ms",{"0":{"1416":1},"2":{"149":1,"160":1,"209":2,"222":2,"231":2,"502":1,"505":1,"511":1,"588":2,"707":1,"1326":2,"1357":1,"1497":1,"1554":1,"1559":2,"1573":4,"1683":1,"1801":19,"1805":22,"1806":6,"1807":1,"1817":1,"1859":1,"1860":2,"1863":1,"1872":2,"1878":1,"1889":6,"1900":1,"1932":8,"1950":2,"2075":2,"2128":1,"2141":1,"2167":4,"2344":1,"2372":19,"2490":1,"2539":1,"2564":2,"2674":2,"2681":1,"2687":1,"2689":1,"2697":1,"2699":1,"2700":1}}],["mschwingen",{"2":{"149":1,"207":2}}],["mctl",{"2":{"2355":1,"2393":1}}],["mcselec",{"2":{"1242":1}}],["mcmuffin",{"2":{"616":1}}],["mc",{"2":{"211":1}}],["mcall",{"2":{"160":1}}],["mcp23018",{"2":{"148":1,"149":2,"191":2}}],["mcu>",{"2":{"292":1,"2230":3,"2233":1,"2235":1,"2236":1,"2347":1}}],["mcuconf",{"2":{"50":2,"657":2,"658":2,"661":2,"703":2,"1132":4,"1133":4,"1177":2,"1198":1,"1226":1,"1230":2,"1469":1,"1470":1,"2536":1,"2537":1,"2538":1}}],["mcus",{"0":{"1139":1,"2513":1},"1":{"1140":1,"1141":1,"1142":1},"2":{"49":1,"76":1,"114":1,"149":1,"174":1,"191":1,"249":1,"322":1,"331":1,"334":1,"336":1,"486":1,"487":1,"630":1,"641":1,"654":1,"656":1,"688":1,"689":1,"699":1,"1127":3,"1129":4,"1130":4,"1132":2,"1133":2,"1174":1,"1195":1,"1227":1,"1294":1,"1390":1,"1636":2,"1821":1,"2126":1,"2240":1,"2346":1,"2524":5,"2531":1,"2549":1,"2550":3,"2567":1,"2576":1,"2622":1,"2623":1}}],["mcu",{"0":{"130":1,"145":1,"330":1,"514":1,"1551":1,"2546":1,"2547":1,"2550":1,"2552":1,"2650":1},"1":{"2547":1,"2548":2,"2549":2,"2550":1,"2551":1,"2552":1},"2":{"10":2,"73":1,"93":1,"114":1,"130":2,"134":1,"145":1,"149":1,"174":2,"176":5,"191":1,"199":4,"211":1,"236":1,"285":1,"322":1,"323":1,"326":1,"331":5,"334":1,"335":1,"512":1,"514":1,"515":2,"563":1,"586":1,"587":1,"638":1,"639":1,"654":1,"656":2,"661":1,"663":1,"681":1,"687":1,"688":2,"689":9,"692":3,"702":2,"703":3,"1121":1,"1125":1,"1127":1,"1129":3,"1130":1,"1132":4,"1133":5,"1134":1,"1176":2,"1177":1,"1181":2,"1197":2,"1198":1,"1223":3,"1225":2,"1227":1,"1230":1,"1235":1,"1236":2,"1294":1,"1331":1,"1394":1,"1469":1,"1471":3,"1492":1,"1547":1,"1551":1,"1561":1,"1573":1,"1574":1,"1908":1,"2061":1,"2114":1,"2231":1,"2237":1,"2238":1,"2263":1,"2284":1,"2328":2,"2342":1,"2343":1,"2344":1,"2345":1,"2346":2,"2347":1,"2348":1,"2513":5,"2524":2,"2529":2,"2530":4,"2533":1,"2546":8,"2548":3,"2550":1,"2552":1,"2553":1,"2557":1,"2566":3,"2567":1,"2574":3,"2578":1,"2627":2,"2631":1,"2635":1,"2648":1,"2682":1}}],["mprv",{"2":{"1665":1,"1932":1,"2355":1,"2393":1}}],["mply",{"2":{"530":2,"1665":6,"2355":1,"2393":1}}],["mp",{"2":{"143":2}}],["mpaland",{"0":{"24":1},"2":{"176":1}}],["m0",{"2":{"134":1}}],["m0lly",{"2":{"43":2,"211":1}}],["md5",{"2":{"2262":2,"2353":1}}],["mdash",{"2":{"2149":1,"2478":2,"2479":2,"2480":1,"2617":2}}],["mdbt40",{"2":{"1492":1}}],["mdloader",{"2":{"134":1}}],["md",{"0":{"623":1,"624":1,"1380":1,"2297":1,"2554":1},"2":{"114":1,"134":1,"176":2,"222":1,"341":1,"347":1,"349":1,"350":1,"559":2,"607":1,"621":2,"1275":1,"1346":3,"1376":1,"2259":1,"2260":1,"2293":1,"2296":1,"2297":1,"2303":2,"2554":2,"2566":1}}],["m122",{"2":{"114":1,"207":8}}],["m12og",{"2":{"102":3}}],["mün",{"2":{"114":1}}],["mycoolkeeb",{"2":{"2553":4}}],["mycm",{"2":{"2355":1,"2393":1}}],["myusername",{"2":{"2443":1}}],["mylayout",{"2":{"1378":3}}],["mykeyboard",{"2":{"169":2,"184":2}}],["my",{"0":{"352":1,"442":1,"545":1,"546":1,"1243":1,"1270":1,"1271":1,"1286":1},"1":{"353":1,"354":1,"355":1,"356":1,"443":1,"444":1,"445":1,"446":1,"447":1},"2":{"114":1,"120":2,"272":4,"313":1,"331":1,"335":1,"414":1,"463":1,"464":1,"465":1,"474":2,"557":4,"570":1,"597":3,"598":3,"599":2,"600":2,"616":2,"621":5,"701":1,"1274":1,"1340":1,"1354":2,"1355":2,"1359":4,"1363":4,"1377":2,"1398":3,"1436":3,"1525":4,"1729":10,"1940":4,"1941":5,"1952":10,"2042":10,"2170":2,"2171":14,"2255":2,"2261":2,"2281":1,"2355":2,"2393":2,"2441":5,"2446":1,"2454":2,"2480":1,"2556":1,"2575":10,"2576":5,"2577":29}}],["mx",{"2":{"2266":1,"2703":1}}],["mx25l4006e",{"2":{"694":1}}],["mxss",{"2":{"211":2,"236":1}}],["mx1062",{"2":{"108":1}}],["mx5160",{"2":{"57":2,"211":1}}],["m",{"2":{"93":1,"102":1,"114":1,"158":2,"191":1,"204":2,"207":14,"211":1,"217":1,"222":1,"249":1,"266":5,"313":1,"347":1,"349":1,"358":2,"359":1,"366":1,"371":2,"378":2,"404":1,"429":1,"530":2,"554":1,"1441":1,"1511":2,"1530":1,"1935":6,"1948":4,"2034":10,"2255":1,"2348":3,"2355":3,"2376":10,"2386":3,"2407":1,"2438":2,"2465":1,"2474":1,"2480":1,"2699":1}}],["mumbo",{"0":{"1821":1}}],["mu",{"2":{"1403":4,"1408":4,"2357":4}}],["muhenkan",{"2":{"1280":1,"2391":1}}],["mux",{"2":{"638":4,"639":2}}],["mutually",{"2":{"1339":1}}],["mutable",{"2":{"474":1}}],["mute",{"2":{"231":1,"255":1,"2355":5,"2392":2,"2393":3}}],["mutex",{"2":{"160":1}}],["murcielago",{"2":{"253":2}}],["musical",{"2":{"1398":1,"1406":2}}],["music",{"0":{"1403":1,"1404":1,"1405":1},"1":{"1404":1,"1405":1},"2":{"191":1,"211":1,"592":1,"1397":1,"1398":15,"1399":20,"1403":13,"1404":6,"1405":6,"1408":8,"1549":2,"2357":8,"2704":2,"2749":1}}],["must",{"2":{"88":2,"104":2,"127":2,"141":1,"184":1,"194":1,"268":1,"331":1,"370":2,"399":1,"417":1,"465":1,"466":1,"474":1,"505":3,"508":1,"511":2,"515":1,"532":1,"535":1,"566":2,"609":1,"624":1,"629":1,"636":1,"638":1,"669":1,"690":1,"707":1,"734":1,"760":1,"790":1,"824":1,"852":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1023":1,"1027":1,"1057":1,"1061":1,"1095":1,"1124":1,"1129":1,"1148":1,"1179":1,"1200":1,"1223":2,"1230":1,"1254":1,"1273":1,"1325":1,"1336":1,"1337":1,"1347":4,"1359":1,"1431":3,"1440":1,"1458":1,"1466":1,"1493":1,"1495":1,"1516":2,"1517":1,"1518":9,"1522":1,"1528":1,"1530":1,"1533":1,"1562":1,"1589":1,"1594":1,"1635":1,"1636":1,"1637":2,"1670":2,"1677":2,"1697":1,"1799":1,"1805":1,"1806":1,"1866":1,"1887":1,"1897":1,"1901":1,"1908":1,"1912":2,"1921":2,"1928":2,"1954":1,"2031":1,"2032":2,"2035":1,"2061":1,"2066":1,"2114":1,"2131":1,"2133":1,"2171":1,"2182":1,"2217":1,"2240":1,"2261":1,"2263":2,"2310":1,"2351":1,"2355":1,"2440":2,"2445":1,"2450":1,"2484":1,"2490":1,"2494":2,"2546":1,"2559":1,"2564":4,"2565":1,"2566":7,"2567":2,"2575":1,"2576":3,"2587":2,"2588":2,"2589":1,"2593":1,"2594":2,"2596":1,"2598":1,"2614":1,"2673":1,"2674":2,"2676":1,"2677":1,"2678":1,"2683":2,"2688":2,"2689":1,"2692":1,"2694":2,"2695":2,"2697":2,"2698":1,"2700":1,"2711":1,"2737":1,"2738":2}}],["multitude",{"2":{"2523":1}}],["multiarch",{"2":{"2513":1}}],["multimeter",{"2":{"2279":1}}],["multisplash",{"2":{"1728":3,"1949":6,"2708":2}}],["multinexus",{"2":{"1728":3,"1949":3,"2708":1}}],["multicross",{"2":{"1728":3,"1949":3,"2708":1}}],["multiwide",{"2":{"1728":3,"1949":3,"2708":1}}],["multilingual",{"2":{"1355":1,"2712":3}}],["multiprocessing",{"0":{"478":1}}],["multiplier",{"2":{"1819":1,"1868":1,"1911":3}}],["multiplicative",{"2":{"1406":1}}],["multiplication",{"2":{"191":1}}],["multiples",{"2":{"1802":1}}],["multiplexing",{"0":{"1397":1},"2":{"1397":4,"1399":2,"2534":1}}],["multiplexer",{"2":{"563":1}}],["multiple",{"0":{"422":1,"424":1,"1346":1,"1459":1,"1562":1},"1":{"1347":1,"1348":1,"1349":1,"1350":1,"1351":1,"1352":1},"2":{"75":1,"114":1,"160":3,"211":1,"234":2,"236":1,"249":1,"313":1,"374":2,"396":1,"411":2,"415":2,"418":1,"424":1,"453":1,"468":1,"590":1,"617":1,"628":2,"639":1,"689":1,"690":1,"691":1,"697":1,"698":1,"703":1,"708":1,"711":1,"852":1,"1023":1,"1057":1,"1176":1,"1177":1,"1188":1,"1191":1,"1198":1,"1206":1,"1208":1,"1325":2,"1327":1,"1335":1,"1339":1,"1346":1,"1349":1,"1353":1,"1357":3,"1378":1,"1385":1,"1399":1,"1430":1,"1435":1,"1451":1,"1454":1,"1459":2,"1494":1,"1508":1,"1521":1,"1524":1,"1533":1,"1534":1,"1557":1,"1562":1,"1573":1,"1676":1,"1683":1,"1728":4,"1804":1,"1805":1,"1870":4,"1872":3,"1921":1,"1949":5,"2042":1,"2044":1,"2066":1,"2145":1,"2279":1,"2302":2,"2320":1,"2367":1,"2401":1,"2422":1,"2425":1,"2440":1,"2454":1,"2473":1,"2480":1,"2513":1,"2564":1,"2566":2,"2567":1,"2595":1,"2606":1,"2644":1,"2649":1,"2663":1,"2676":1,"2683":1}}],["multiply",{"2":{"25":1}}],["multi",{"0":{"852":1,"1023":1,"1057":1},"2":{"191":1,"211":1}}],["multibuild",{"2":{"149":1,"199":1}}],["mun",{"2":{"114":1}}],["much",{"0":{"2720":1},"2":{"98":1,"100":1,"123":1,"153":1,"163":1,"174":1,"175":1,"189":1,"244":1,"247":1,"248":1,"251":1,"263":1,"355":1,"477":1,"529":1,"555":1,"692":1,"1264":1,"1334":1,"1383":1,"1406":1,"1423":1,"1438":1,"1471":1,"1655":1,"1676":1,"1806":1,"1807":1,"1863":1,"1906":1,"1949":2,"2182":1,"2226":1,"2237":1,"2250":1,"2273":1,"2274":1,"2311":1,"2442":1,"2506":1,"2508":1,"2509":1,"2525":1,"2534":1,"2543":1,"2565":1,"2710":1}}],["mv",{"2":{"70":1}}],["med",{"2":{"1578":22}}],["medium",{"0":{"1142":1},"2":{"1576":1,"1577":1,"1578":5,"2353":2}}],["media",{"0":{"1665":1,"2393":1},"2":{"73":1,"176":1,"266":1,"502":1,"532":1,"1665":1,"1921":1,"1932":3,"2355":9,"2393":13,"2402":1,"2702":1}}],["meh",{"2":{"1299":1,"2373":2,"2374":1,"2410":3}}],["menu",{"0":{"1272":1},"2":{"628":1,"1272":1,"1677":2,"2126":1,"2183":1,"2355":3,"2392":3,"2460":1,"2738":2}}],["mentioned",{"2":{"228":1,"276":1,"692":1,"1268":1,"1663":1,"1725":1,"1946":1,"2162":1,"2335":1,"2350":1}}],["messing",{"2":{"1287":1}}],["messages",{"0":{"1250":1,"1791":1},"2":{"82":1,"160":1,"191":2,"199":2,"222":1,"375":5,"433":1,"556":1,"1138":3,"1247":1,"1248":1,"1249":1,"1250":1,"1787":1,"1791":1,"1864":1,"1884":2,"2263":10,"2279":1,"2480":1,"2639":2,"2755":1}}],["message",{"0":{"1255":1},"2":{"49":1,"93":1,"149":1,"236":1,"343":1,"344":1,"345":1,"349":1,"393":1,"394":1,"395":1,"396":1,"402":1,"403":1,"411":1,"545":1,"554":2,"1254":2,"1501":1,"1816":1,"2450":1,"2468":1,"2474":1,"2480":1,"2564":1,"2575":3,"2577":1}}],["mesh",{"2":{"560":1}}],["meck",{"2":{"253":2}}],["mechanics",{"2":{"2162":1}}],["mechanical",{"0":{"1276":1,"2321":1},"1":{"2322":1,"2323":1,"2324":1,"2325":1,"2326":1},"2":{"502":1,"624":1,"1257":1,"1276":2,"1325":1,"2314":1,"2322":1,"2417":1}}],["mechanism",{"2":{"160":1,"563":1,"569":1,"1572":1,"2539":1}}],["mechanisms",{"2":{"152":1,"606":1}}],["mechmerlin",{"2":{"370":2}}],["mechmini",{"2":{"143":4}}],["mechwild",{"2":{"211":1,"236":1,"266":2}}],["mechkeys",{"0":{"256":1},"1":{"257":1,"258":1,"259":1,"260":1},"2":{"143":5,"149":2,"266":1}}],["mechloving",{"2":{"134":1}}],["mechlovin9",{"2":{"102":3,"114":1,"211":1}}],["mechlovin",{"2":{"102":3,"134":1,"191":1,"211":9,"222":1,"249":1,"266":2}}],["meant",{"2":{"1364":1,"2517":1,"2605":1}}],["meantime",{"2":{"341":1}}],["mean",{"0":{"562":1},"2":{"263":1,"550":1,"1278":1,"2405":1,"2564":1,"2566":1}}],["means",{"2":{"251":1,"263":1,"324":1,"337":1,"352":1,"396":1,"411":1,"502":1,"554":1,"562":1,"570":1,"613":1,"659":1,"1290":1,"1300":1,"1360":2,"1398":1,"1404":1,"1458":1,"1500":1,"1554":1,"1670":1,"1685":1,"1802":1,"1832":1,"1937":1,"2118":1,"2146":1,"2147":1,"2162":1,"2169":4,"2177":1,"2254":1,"2262":2,"2271":1,"2272":1,"2300":1,"2311":1,"2319":2,"2454":1,"2468":1,"2534":1,"2569":1,"2581":1,"2605":1,"2666":1,"2671":1,"2711":1,"2730":1}}],["meaningful",{"2":{"2569":1}}],["meaning",{"2":{"245":1,"707":1,"726":1,"1225":1,"1302":1,"1325":1,"1336":1,"1438":1,"1533":1,"1787":1,"1832":1,"1933":1,"2272":1,"2311":1,"2411":1,"2575":1}}],["measure",{"2":{"630":1,"1863":1}}],["measured",{"2":{"214":1,"1326":1,"1400":1,"1675":1,"2161":1,"2577":1}}],["measurement",{"2":{"199":1,"2226":1,"2524":1,"2577":1}}],["merchantability",{"2":{"1380":1,"2570":1}}],["mercutio",{"2":{"211":1}}],["merits",{"2":{"1265":1}}],["meridian",{"2":{"211":1}}],["merely",{"2":{"498":1,"2145":1}}],["merges",{"2":{"337":1,"340":1,"344":2,"345":1,"346":1,"350":3}}],["merged",{"2":{"114":1,"134":1,"340":4,"341":2,"343":1,"344":1,"345":1,"349":2,"350":4,"352":1,"399":1,"554":1,"2564":1,"2566":2,"2567":1,"2569":1}}],["merge",{"0":{"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"2473":1},"1":{"349":1,"350":1,"2474":1},"2":{"0":1,"1":1,"75":1,"114":2,"158":1,"176":1,"191":1,"199":2,"201":1,"211":1,"222":2,"275":1,"276":1,"282":3,"337":1,"340":1,"341":3,"345":1,"346":1,"347":2,"349":1,"350":17,"361":2,"478":1,"537":1,"1263":1,"1870":2,"2472":1,"2473":1,"2474":6,"2478":1,"2564":4,"2566":1,"2567":1,"2568":1,"2569":1,"2721":1}}],["merging",{"0":{"361":1},"2":{"0":1,"9":1,"19":1,"39":1,"52":1,"73":1,"191":1,"361":1,"2474":1,"2564":2}}],["metrics",{"2":{"1918":1,"2719":1}}],["met",{"2":{"1562":1}}],["meta",{"2":{"2355":2,"2390":2,"2410":2}}],["metal",{"2":{"2272":1}}],["metaclasses",{"2":{"479":1}}],["metadata",{"0":{"521":1,"2672":1},"2":{"188":1,"191":1,"266":1,"305":2,"317":3,"496":1,"519":2,"521":1,"2298":1,"2498":1,"2671":1}}],["meticulously",{"2":{"201":1}}],["methods=",{"0":{"307":1,"308":1,"309":1,"310":1}}],["methods",{"2":{"140":1,"432":2,"1238":1,"1271":1,"1325":2,"1329":1,"1500":1,"1714":1,"1721":1,"1729":2,"1952":2,"2130":1,"2229":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":2,"2245":2,"2247":2,"2249":2,"2270":1,"2418":1,"2513":1}}],["method",{"0":{"1329":1},"2":{"49":1,"169":1,"184":1,"236":1,"309":1,"310":1,"460":1,"510":1,"1325":1,"1500":2,"1729":1,"1952":1,"2114":1,"2121":1,"2126":2,"2144":1,"2177":1,"2182":1,"2183":2,"2229":1,"2320":1,"2605":1,"2611":1,"2638":1}}],["me",{"0":{"562":1},"2":{"169":2,"184":2,"199":1,"502":1,"550":1,"1274":1,"1332":1,"2171":1,"2417":1,"2422":1,"2428":1}}],["mem",{"2":{"2577":9}}],["memset",{"2":{"1923":2}}],["members",{"0":{"672":1,"737":1,"763":1,"793":1,"827":1,"860":1,"894":1,"928":1,"962":1,"996":1,"1030":1,"1064":1,"1098":1,"1151":1,"1537":1,"1642":1,"1644":1},"2":{"1670":2,"2322":1,"2466":1,"2482":1}}],["member",{"2":{"352":1,"1670":1,"1672":1,"1673":1,"2569":1}}],["memory",{"0":{"1363":1,"2039":1},"2":{"160":1,"236":1,"560":1,"684":2,"685":1,"687":1,"1270":1,"1287":1,"1329":1,"1332":1,"1341":1,"1403":1,"1438":1,"1439":1,"1515":2,"1524":1,"1554":1,"1820":3,"1821":5,"1830":1,"2149":1,"2230":1,"2327":1,"2347":2,"2348":1,"2353":1,"2356":1,"2453":3,"2544":3,"2572":1,"2576":1,"2577":2,"2757":3}}],["memcmp",{"2":{"114":1}}],["melt",{"2":{"2272":1,"2274":1}}],["melting",{"2":{"2272":1}}],["melodies",{"2":{"222":1}}],["melody96",{"2":{"159":2,"160":1,"226":2,"236":1}}],["melgeek",{"2":{"134":1,"253":10}}],["meishi",{"2":{"143":2}}],["meishi2",{"2":{"143":2}}],["meira",{"2":{"143":2}}],["meetup",{"2":{"134":1}}],["mtb60",{"2":{"211":1}}],["mtbkeys",{"2":{"211":1}}],["mt980",{"2":{"159":2}}],["mt84",{"2":{"159":2,"277":1}}],["mt64rgb",{"2":{"159":2,"211":1}}],["mt40",{"2":{"159":2}}],["mt",{"2":{"38":1,"159":6,"160":1,"277":1,"505":2,"1582":1,"2170":1,"2374":1,"2410":1,"2411":1,"2413":2}}],["mkand",{"2":{"2753":1}}],["mkdir",{"2":{"2435":1}}],["mkmakeifeq",{"2":{"2300":1}}],["mkmake",{"2":{"2300":1}}],["mk64fx512",{"2":{"491":1}}],["mk66fx1m0",{"2":{"133":1,"134":1,"491":1}}],["mk66f18",{"2":{"81":1,"93":2,"133":1,"134":1}}],["mk20dx256",{"2":{"491":1}}],["mk20dx128",{"2":{"491":1}}],["mkl26z64",{"2":{"491":1}}],["mk0",{"2":{"199":1}}],["mkiirgb",{"2":{"217":1}}],["mkii",{"2":{"114":1}}],["mk",{"0":{"512":1,"1377":1,"1493":1,"1570":1,"2263":1,"2300":1,"2702":1},"1":{"513":1,"514":1,"515":1,"516":1,"1378":1},"2":{"32":1,"49":1,"50":1,"70":29,"74":1,"76":1,"87":1,"94":1,"103":1,"114":2,"118":2,"119":1,"133":5,"134":8,"141":1,"149":2,"172":1,"191":3,"199":1,"202":1,"211":5,"235":1,"262":1,"266":11,"282":1,"286":1,"374":1,"496":2,"499":1,"508":1,"564":1,"565":1,"566":1,"596":1,"606":3,"607":1,"608":1,"610":2,"613":2,"614":5,"631":1,"643":1,"665":1,"681":1,"688":1,"700":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1124":1,"1127":2,"1130":2,"1144":1,"1175":1,"1196":1,"1213":1,"1218":1,"1245":1,"1291":1,"1312":1,"1314":1,"1315":1,"1322":1,"1329":1,"1330":2,"1346":1,"1347":2,"1376":2,"1377":7,"1378":1,"1384":2,"1385":2,"1386":1,"1390":1,"1393":1,"1394":1,"1396":1,"1413":2,"1439":1,"1455":1,"1460":1,"1491":1,"1493":2,"1495":1,"1500":1,"1501":1,"1508":1,"1527":1,"1528":1,"1532":1,"1547":1,"1548":1,"1553":1,"1557":1,"1559":1,"1570":1,"1590":1,"1631":1,"1635":1,"1657":1,"1679":1,"1724":1,"1729":2,"1787":1,"1800":1,"1804":1,"1805":22,"1806":2,"1812":1,"1825":1,"1830":1,"1833":1,"1853":1,"1855":1,"1856":1,"1857":1,"1858":1,"1862":1,"1867":1,"1868":1,"1869":1,"1870":2,"1871":1,"1904":1,"1905":1,"1906":1,"1907":1,"1919":1,"1930":1,"1945":1,"1952":2,"2032":2,"2063":1,"2068":1,"2073":1,"2105":1,"2109":1,"2121":1,"2137":1,"2145":1,"2146":1,"2147":1,"2148":1,"2149":1,"2150":1,"2154":1,"2161":1,"2164":1,"2172":1,"2178":1,"2181":2,"2182":1,"2225":1,"2229":1,"2230":1,"2233":1,"2235":1,"2236":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2245":2,"2247":2,"2249":2,"2259":2,"2260":1,"2262":1,"2264":4,"2295":4,"2296":1,"2300":22,"2342":1,"2435":1,"2438":1,"2513":1,"2530":1,"2541":1,"2542":1,"2562":1,"2564":2,"2566":4,"2573":2,"2576":10,"2577":2,"2579":1,"2671":1,"2702":1,"2704":1,"2725":1,"2728":2,"2749":1,"2753":6,"2755":1}}],["mib",{"2":{"2255":2}}],["mimic",{"2":{"2169":1,"2171":1}}],["mi",{"2":{"1787":2,"1793":174,"1794":2,"2263":2,"2371":174}}],["mikrocontroller",{"2":{"1289":1}}],["mike1808",{"2":{"114":1}}],["might",{"2":{"335":1,"341":1,"358":1,"401":1,"502":1,"626":2,"684":2,"1287":2,"1325":2,"1326":6,"1335":1,"1340":1,"1359":1,"1376":1,"1442":1,"1496":1,"1501":1,"1521":1,"1524":1,"1791":1,"1857":1,"1863":1,"2146":1,"2161":1,"2258":1,"2260":1,"2279":1,"2302":1,"2501":1,"2549":1,"2752":1,"2757":1}}],["migrator",{"2":{"65":1}}],["migrations",{"2":{"77":1,"134":1,"199":1,"266":3}}],["migration",{"0":{"38":1,"69":1,"77":1,"265":1,"275":1},"2":{"70":1,"77":1,"113":1,"114":1,"134":2,"149":1,"188":1,"191":1,"199":3,"201":1,"213":1,"238":1,"265":1}}],["migrating",{"0":{"3":1,"7":1,"15":1,"30":1,"36":1},"1":{"31":1},"2":{"167":1,"232":1,"2566":1}}],["migrated",{"2":{"118":1,"126":1,"128":1,"140":1,"209":1,"262":1,"2560":1,"2566":2}}],["migrate",{"0":{"31":1,"34":1,"384":1},"2":{"75":1,"113":1,"114":4,"133":2,"134":6,"149":3,"176":1,"199":7,"211":1,"228":1,"236":9,"249":27,"266":66,"277":11,"384":1,"529":1}}],["mixture",{"2":{"2144":1}}],["mixing",{"2":{"2114":1}}],["mix",{"2":{"1217":1,"1332":1,"1336":1,"2411":1}}],["mixed",{"2":{"282":1,"357":1,"453":1,"560":1,"1412":1}}],["mixup",{"2":{"199":1}}],["mitchsplit",{"0":{"260":1},"2":{"256":1}}],["mitigates",{"2":{"1274":1}}],["mitigated",{"2":{"263":1,"2411":1}}],["mitigate",{"2":{"211":1,"1325":2,"2720":1}}],["mitigation",{"2":{"191":1}}],["miiiw",{"2":{"253":2,"266":1}}],["mice",{"2":{"1910":1,"2284":1,"2322":1}}],["michi",{"0":{"1318":1},"2":{"199":1,"1311":1,"1315":4,"2709":1}}],["micdrop",{"2":{"163":1}}],["microcontrol",{"2":{"2650":1}}],["microcontroller>",{"2":{"371":1}}],["microcontroller",{"0":{"2269":1},"2":{"81":1,"371":2,"486":2,"493":1,"495":1,"516":1,"641":1,"660":1,"695":1,"697":1,"1461":1,"1471":1,"1634":1,"2126":1,"2266":1,"2275":3,"2278":1,"2311":1,"2327":2,"2339":1,"2347":1,"2348":1,"2566":1,"2673":2,"2718":1}}],["microcontrollers",{"0":{"486":1},"1":{"487":1,"488":1,"489":1,"490":1,"491":1,"492":1,"493":1,"494":1,"495":1},"2":{"69":1,"215":2,"263":1,"493":1,"495":2,"1811":1,"2237":1,"2243":1,"2327":2,"2553":2,"2725":1}}],["microchip",{"2":{"684":3,"1212":1,"2031":1,"2343":1}}],["microsoft",{"2":{"1272":1,"2513":1}}],["micros",{"2":{"509":1,"625":1,"2119":1,"2120":1,"2331":1,"2539":1,"2545":1,"2655":1}}],["microseconds",{"2":{"502":1,"1214":1,"2689":1}}],["microdox",{"2":{"176":2}}],["micronucleus",{"2":{"149":1}}],["micro",{"0":{"271":1,"1315":1,"1318":1,"2329":1,"2331":1,"2541":1},"1":{"1316":1,"1317":1,"1318":1,"1319":1,"1320":1,"1321":1,"2330":1,"2332":1},"2":{"77":1,"86":2,"93":1,"163":1,"172":1,"176":1,"189":1,"271":2,"487":1,"629":4,"1240":1,"1293":2,"1313":1,"1315":2,"1320":1,"1323":1,"1324":1,"1804":1,"2114":1,"2116":1,"2126":2,"2132":1,"2233":1,"2234":1,"2266":1,"2268":1,"2269":3,"2329":2,"2330":3,"2331":2,"2332":3,"2344":4,"2347":5,"2348":1,"2427":1,"2514":1,"2527":1,"2529":1,"2530":6,"2539":1,"2541":2,"2542":1,"2709":3}}],["mio",{"2":{"143":2}}],["mirrored",{"2":{"2154":1}}],["mirrors",{"2":{"511":1,"2129":1,"2171":3,"2441":1,"2566":1}}],["mirroring",{"2":{"114":1,"126":1,"2566":1}}],["mirror",{"2":{"76":1,"114":1,"149":1,"511":1,"1730":1,"1954":1,"2129":1,"2697":10}}],["minted",{"2":{"2448":1}}],["minus",{"2":{"1584":1,"2355":2,"2388":1,"2394":1}}],["minute",{"0":{"2225":1},"1":{"2226":1,"2227":1,"2228":1},"2":{"1400":1,"2225":1,"2696":1}}],["minutes",{"2":{"1234":1,"2273":1}}],["mine",{"2":{"1383":1,"2255":1}}],["mind",{"2":{"453":1,"479":1,"551":1,"556":1,"560":1,"616":1,"1302":1,"1331":1,"1364":1,"1497":1,"1558":1,"1820":1,"2106":1,"2142":1,"2161":1,"2268":1,"2273":1,"2275":1,"2279":1,"2305":1,"2306":1,"2308":1,"2311":1,"2578":1,"2719":1}}],["mins",{"2":{"313":1,"530":2,"1499":2,"1506":1,"2355":1,"2388":1,"2407":1}}],["mino",{"2":{"222":1,"241":6}}],["minor",{"2":{"49":1,"51":1,"64":1,"86":1,"114":1,"149":1,"176":1,"191":1,"222":2,"1406":1}}],["min",{"0":{"1780":1,"1783":1,"2025":1,"2028":1},"2":{"211":1,"1217":1,"1406":2,"1440":1,"1573":3,"1636":3,"1644":1,"1729":4,"1733":1,"1781":1,"1784":1,"1857":2,"1952":4,"1957":1,"1958":6,"1959":3,"2026":1,"2029":1}}],["mingw64",{"2":{"2460":1,"2508":1,"2513":3}}],["mingw",{"2":{"158":1,"2351":2,"2460":2,"2461":1}}],["minizone",{"2":{"249":1}}],["miniaxe",{"2":{"241":2,"249":1}}],["minitkl",{"2":{"222":1}}],["minitomic",{"2":{"57":2}}],["mini36",{"2":{"191":1}}],["mini42",{"2":{"191":1}}],["minidox",{"2":{"143":2,"149":1,"217":1,"236":1,"277":1}}],["mini",{"2":{"134":1,"143":4,"149":1,"211":3,"1571":1,"2269":1}}],["minimize",{"2":{"556":1}}],["minimise",{"2":{"103":1,"687":1,"689":1,"2575":1,"2718":1}}],["minim",{"2":{"143":2}}],["minimally",{"2":{"2130":1,"2566":1}}],["minimal",{"2":{"128":1,"160":1,"176":1,"215":1,"2162":1,"2304":1,"2576":1,"2702":1,"2719":1,"2720":1}}],["minimum",{"2":{"70":1,"134":1,"222":1,"659":2,"660":1,"683":1,"1637":1,"1644":1,"1860":5,"1864":2,"2032":1,"2054":6,"2226":1,"2548":1,"2566":2,"2594":1,"2753":1}}],["midpoint",{"2":{"1644":1}}],["midway",{"2":{"574":1}}],["midway60",{"2":{"211":1}}],["mid",{"2":{"505":1,"1644":1,"1652":1}}],["middle",{"2":{"50":1,"222":1,"331":1,"698":1,"1361":1,"1534":1,"1912":2,"2748":1}}],["mididevice",{"2":{"1792":1}}],["midi",{"0":{"1407":1,"1786":1,"1789":1,"1790":1,"1792":1,"1796":1,"2371":1},"1":{"1787":1,"1788":1,"1789":1,"1790":1,"1791":2,"1792":2,"1793":1,"1794":1,"1795":1,"1796":1,"1797":1},"2":{"50":1,"63":1,"70":1,"75":1,"111":1,"114":1,"188":1,"191":2,"199":3,"222":1,"231":3,"249":1,"266":1,"515":2,"516":1,"592":1,"1399":4,"1407":1,"1787":4,"1788":1,"1789":2,"1790":2,"1791":3,"1792":15,"1793":147,"1794":1,"1796":2,"1797":9,"2108":1,"2263":3,"2322":1,"2371":148,"2566":2,"2749":1}}],["millimeters",{"2":{"1859":2,"1863":1}}],["millisecond",{"2":{"597":1,"1326":1,"1683":1}}],["milliseconds",{"2":{"25":1,"119":1,"195":1,"502":2,"505":2,"506":1,"597":1,"598":2,"703":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"727":1,"731":1,"757":1,"786":1,"818":1,"850":1,"885":1,"919":1,"953":1,"987":1,"1021":1,"1055":1,"1089":1,"1137":1,"1145":1,"1220":1,"1326":1,"1328":1,"1329":7,"1357":1,"1361":1,"1368":2,"1500":1,"1504":1,"1682":1,"1730":2,"1802":1,"1803":1,"1804":2,"1807":1,"1808":1,"1825":1,"1827":1,"1829":1,"1857":1,"1859":1,"1863":1,"1868":1,"1950":1,"1954":2,"2038":1,"2040":6,"2044":1,"2075":1,"2084":1,"2088":1,"2128":3,"2161":1,"2162":1,"2179":1,"2233":1,"2375":1,"2574":2,"2584":1,"2596":1,"2674":2,"2680":1,"2681":1,"2687":1,"2688":2,"2689":1,"2691":1,"2695":2,"2697":3,"2699":1,"2700":1,"2727":1,"2728":1,"2737":1}}],["mild",{"2":{"211":1}}],["milc",{"2":{"65":2,"95":1,"430":3,"431":1}}],["milk",{"2":{"37":2}}],["misfires",{"2":{"1514":1,"1516":1,"1520":1,"1521":1}}],["miso",{"2":{"1176":2,"1177":5,"2328":1,"2330":1,"2332":2,"2334":1,"2336":2,"2338":2,"2340":2,"2518":1,"2541":1}}],["misterknife",{"2":{"211":3}}],["mistaken",{"2":{"2118":1}}],["mistakenly",{"2":{"243":1}}],["mistake",{"2":{"92":1}}],["mishandling",{"2":{"199":1}}],["mis",{"2":{"199":1,"211":1}}],["mismatch",{"2":{"191":1,"349":1}}],["mismatched",{"2":{"149":1}}],["miss",{"2":{"545":1,"2398":1,"2411":1}}],["mission",{"2":{"199":2,"2355":2,"2393":2}}],["missing",{"2":{"28":1,"73":1,"92":1,"93":1,"134":4,"149":4,"160":1,"176":2,"182":1,"191":3,"199":2,"201":1,"211":4,"236":2,"249":1,"2293":1,"2423":1,"2564":1,"2584":1}}],["missed",{"2":{"149":1,"160":1,"236":1}}],["miscellaneous",{"0":{"1285":1},"1":{"1286":1,"1287":1,"1288":1,"1289":1,"1290":1,"1291":1,"1292":1,"1293":1,"1294":1,"1295":1,"1296":1,"1297":1,"1298":1},"2":{"211":1,"222":1,"266":3}}],["misc",{"2":{"149":1,"249":2,"266":3,"277":1,"1932":1}}],["misconfigured",{"2":{"28":1}}],["misplaced",{"2":{"134":1}}],["mocks",{"2":{"2751":1}}],["mock",{"0":{"2751":1},"2":{"2751":1}}],["mocking",{"2":{"485":1,"2753":2}}],["moff",{"2":{"2156":1,"2383":1}}],["mood",{"2":{"2036":1,"2037":2,"2040":1,"2063":1,"2694":1,"2708":1}}],["moonlander",{"2":{"191":1,"199":1,"241":2,"249":1,"277":2}}],["mounting",{"2":{"2275":1}}],["mount",{"2":{"2266":1,"2269":1}}],["mounted",{"2":{"2031":1,"2528":1}}],["mousing",{"2":{"1883":1}}],["mousereport",{"2":{"1876":6}}],["mouse=true",{"2":{"1245":1}}],["mousekey",{"2":{"63":1,"70":1,"75":1,"111":1,"114":1,"188":1,"191":2,"209":1,"222":1,"236":1,"507":5,"515":1,"516":2,"1287":1,"1803":16,"1804":12,"1807":13,"1808":7,"2063":1,"2263":1,"2702":1}}],["mousekeysaccel",{"2":{"1803":1}}],["mousekeys",{"0":{"2652":1},"2":{"48":1,"160":1,"176":1,"191":1,"505":1,"1853":1,"2652":1}}],["mouse",{"0":{"246":1,"507":1,"1289":1,"1798":1,"1799":1,"1800":1,"1801":1,"1802":1,"1808":1,"1809":1,"1876":1,"1878":1,"1879":1,"1885":1,"1890":1,"1891":1,"1892":1,"1894":1,"1897":1,"1899":1,"1901":1,"1902":1,"1910":1,"1913":1,"1914":1,"1915":1,"2372":1,"2690":1},"1":{"1799":1,"1800":2,"1801":2,"1802":1,"1803":2,"1804":2,"1805":2,"1806":2,"1807":2,"1808":2,"1809":1,"1877":1,"1878":1,"1879":1,"1880":1,"1881":1,"1882":1,"1883":1,"1886":1,"1887":1,"1888":1,"1889":1,"1890":1,"1891":2,"1892":3,"1893":1,"1894":1,"1895":1,"1896":1,"1897":1,"1898":1,"1899":1,"1900":1,"1901":1,"1903":1,"1904":1,"1905":1,"1906":1,"1907":1,"1908":1,"1909":1,"1910":1,"1911":1,"1912":1,"1913":1,"1914":1,"1915":1,"1916":1,"1917":1},"2":{"48":1,"74":3,"100":1,"112":7,"114":5,"133":1,"134":1,"149":1,"160":3,"175":5,"176":4,"190":6,"191":7,"211":2,"222":3,"231":1,"236":2,"246":3,"249":1,"266":2,"277":3,"502":1,"505":1,"515":1,"516":4,"540":1,"1431":1,"1491":1,"1530":2,"1531":2,"1798":2,"1799":3,"1800":1,"1801":39,"1802":1,"1804":5,"1805":2,"1807":1,"1808":4,"1809":3,"1860":6,"1870":8,"1871":4,"1872":3,"1874":14,"1875":9,"1876":13,"1878":4,"1879":12,"1880":17,"1881":1,"1882":10,"1883":3,"1885":7,"1886":7,"1887":15,"1888":1,"1889":9,"1890":5,"1891":4,"1892":3,"1893":1,"1894":33,"1895":11,"1897":10,"1898":16,"1899":10,"1900":8,"1901":10,"1902":1,"1904":1,"1905":1,"1906":1,"1907":1,"1908":1,"1910":18,"1911":5,"1912":12,"1913":1,"1914":4,"1915":3,"1916":5,"1917":4,"1921":1,"1932":4,"2146":1,"2150":1,"2372":39,"2424":1,"2652":1,"2690":3,"2692":2,"2699":2,"2744":1}}],["motivations",{"2":{"2719":1}}],["motion",{"2":{"190":1,"191":1,"1807":1,"1857":1,"1870":3,"1872":7,"1885":1}}],["motions",{"2":{"175":1}}],["motors",{"2":{"1575":1,"1576":1}}],["motor",{"0":{"1575":1},"1":{"1576":1,"1577":1},"2":{"1571":1,"1575":1,"1576":2,"1577":2}}],["momokai",{"2":{"266":1}}],["moment",{"2":{"211":2,"1675":5,"2490":1,"2492":1,"2615":1,"2748":1}}],["momentarily",{"2":{"73":1,"1335":4,"1806":1,"2173":2,"2367":3,"2490":1,"2728":1}}],["momentary",{"0":{"3":1,"2171":1},"2":{"199":1,"1275":1,"1335":1,"1518":5,"1582":2,"1655":1,"1668":3,"1805":8,"2156":4,"2172":1,"2383":4,"2490":1}}],["mojo75",{"2":{"253":2}}],["mojo68",{"2":{"253":2}}],["morgan65",{"2":{"211":2}}],["moreover",{"2":{"2114":1}}],["more",{"0":{"1656":1,"2262":1},"1":{"2263":1,"2264":1},"2":{"2":1,"6":2,"8":1,"10":2,"14":1,"16":1,"24":1,"46":1,"49":1,"76":1,"82":1,"93":1,"99":2,"107":1,"109":1,"111":1,"112":1,"114":6,"118":1,"133":2,"134":4,"149":6,"152":1,"153":2,"160":1,"166":1,"172":1,"174":1,"176":4,"179":1,"182":1,"190":3,"191":4,"194":2,"195":1,"196":1,"198":1,"199":6,"206":1,"211":6,"213":1,"222":2,"224":1,"228":2,"229":1,"231":1,"232":1,"236":3,"245":1,"247":1,"248":1,"249":1,"251":1,"265":1,"266":1,"318":1,"334":1,"341":1,"355":2,"363":1,"367":1,"371":1,"408":1,"409":1,"410":1,"418":1,"446":1,"453":1,"455":1,"462":1,"470":2,"479":1,"481":1,"482":1,"496":1,"502":2,"506":1,"511":2,"513":1,"515":2,"516":1,"540":1,"554":1,"556":1,"566":1,"567":3,"612":1,"615":1,"624":2,"626":2,"628":1,"630":2,"638":1,"639":1,"660":1,"687":1,"690":1,"701":2,"788":1,"821":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1121":1,"1128":1,"1176":1,"1217":1,"1235":1,"1241":1,"1267":1,"1269":1,"1290":1,"1298":1,"1300":2,"1301":1,"1321":1,"1326":1,"1335":1,"1338":1,"1339":1,"1340":3,"1357":2,"1359":1,"1376":1,"1380":1,"1382":1,"1389":1,"1390":1,"1404":1,"1405":2,"1411":1,"1414":1,"1416":2,"1423":1,"1430":1,"1451":1,"1471":1,"1491":1,"1498":1,"1508":1,"1511":1,"1515":1,"1516":1,"1520":1,"1524":1,"1549":1,"1554":1,"1562":1,"1589":1,"1655":1,"1662":2,"1666":1,"1670":1,"1683":1,"1685":1,"1714":1,"1725":2,"1729":1,"1787":1,"1791":1,"1802":1,"1803":1,"1808":1,"1821":1,"1854":1,"1880":1,"1885":1,"1893":1,"1901":1,"1902":1,"1918":1,"1929":1,"1934":1,"1946":2,"1952":1,"1954":1,"1958":1,"1959":1,"2032":1,"2044":1,"2060":1,"2145":1,"2148":1,"2151":1,"2152":1,"2161":2,"2162":1,"2169":2,"2178":1,"2183":1,"2226":2,"2229":1,"2258":1,"2259":2,"2262":4,"2263":4,"2268":2,"2269":2,"2270":2,"2272":1,"2273":1,"2274":1,"2282":1,"2287":1,"2288":1,"2289":1,"2290":1,"2291":1,"2297":1,"2298":1,"2299":1,"2300":1,"2311":2,"2313":1,"2323":1,"2335":1,"2344":1,"2347":1,"2348":1,"2354":1,"2374":1,"2385":1,"2406":2,"2408":3,"2409":1,"2410":2,"2440":1,"2450":1,"2454":1,"2455":1,"2460":1,"2478":1,"2480":1,"2482":1,"2490":1,"2495":1,"2510":1,"2513":1,"2543":1,"2551":1,"2552":1,"2553":3,"2561":1,"2565":2,"2567":1,"2568":1,"2569":1,"2570":1,"2574":3,"2577":2,"2578":1,"2612":1,"2614":1,"2615":2,"2661":1,"2664":1,"2671":3,"2708":1,"2710":1,"2724":1,"2727":2,"2728":1,"2735":1,"2736":2,"2737":1,"2738":1,"2739":1,"2754":1,"2757":1}}],["mobile",{"2":{"149":1,"160":1}}],["monsgeek",{"2":{"2244":1}}],["monstargear",{"2":{"211":1}}],["mon",{"2":{"2156":1,"2383":1}}],["monitor",{"2":{"1807":1}}],["monitors",{"2":{"1533":1}}],["month",{"2":{"337":1,"2569":1}}],["months",{"2":{"251":1,"481":1,"2720":1}}],["montex",{"2":{"143":2,"149":1}}],["mono1bpp",{"2":{"2576":1}}],["mono16",{"2":{"2575":4}}],["mono2",{"2":{"2575":3,"2576":1}}],["mono256",{"2":{"2575":3}}],["mono4",{"2":{"2575":4}}],["monochrome",{"2":{"2573":4,"2576":1,"2577":3}}],["mono",{"2":{"249":2,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1}}],["monokei",{"2":{"241":3,"249":1}}],["monksoffunk",{"2":{"149":1}}],["mona",{"2":{"102":3,"197":6}}],["movable",{"2":{"1634":1}}],["movements",{"2":{"1353":1,"1802":1,"1803":4,"1804":15,"1805":4,"1806":1,"1807":3,"1808":1,"2263":1}}],["movement",{"0":{"1917":1},"2":{"48":1,"74":1,"175":2,"246":1,"249":1,"1802":5,"1803":4,"1804":5,"1805":5,"1807":2,"1808":1,"1857":5,"1876":3,"1879":2,"1880":1,"1889":1,"1900":1,"1904":1,"1910":1,"1917":1}}],["moved",{"2":{"43":1,"50":1,"56":1,"57":1,"67":1,"72":1,"86":1,"102":1,"114":1,"122":1,"143":1,"149":1,"159":1,"168":1,"181":1,"197":1,"198":1,"201":2,"204":1,"222":1,"279":1,"602":1,"1304":1,"1917":1,"2282":1,"2488":1,"2489":1,"2566":1,"2701":1}}],["moves",{"0":{"37":1},"2":{"337":1,"1802":2,"1822":2,"2033":1,"2143":2,"2161":1,"2407":1,"2566":1}}],["move",{"2":{"21":1,"36":1,"37":1,"50":1,"72":1,"75":1,"94":1,"100":2,"113":6,"114":14,"133":7,"134":9,"149":58,"156":1,"160":11,"167":1,"176":6,"188":1,"191":7,"199":11,"211":38,"222":16,"236":6,"241":1,"249":12,"253":1,"255":2,"266":2,"270":1,"277":3,"388":1,"1341":1,"1344":1,"1405":1,"1567":1,"1599":1,"1603":1,"1604":2,"1605":1,"1627":1,"1629":1,"1751":1,"1752":1,"1753":1,"1754":1,"1793":2,"1798":1,"1802":1,"1803":1,"1804":3,"1807":4,"1808":2,"1978":1,"1979":1,"1980":1,"1981":1,"2079":1,"2161":1,"2273":1,"2276":1,"2307":1,"2371":2,"2426":1,"2450":1,"2470":1,"2566":2,"2615":1}}],["movings",{"2":{"304":1}}],["moving",{"0":{"16":1},"2":{"36":1,"37":1,"43":1,"111":1,"113":1,"191":1,"275":1,"453":1,"1336":1,"1684":1,"1806":1,"1821":1,"1822":2,"1853":1,"1865":1,"1872":1,"1879":1,"1912":1,"1949":3,"2143":2,"2270":1,"2273":1,"2411":1,"2568":1,"2708":1}}],["mosy",{"2":{"2268":1}}],["mosi",{"2":{"1176":2,"1177":5,"1223":1,"1226":2,"2328":1,"2330":1,"2332":2,"2334":1,"2336":2,"2338":2,"2340":2,"2518":1,"2541":1,"2576":2}}],["most",{"0":{"2701":1},"1":{"2702":1,"2703":1,"2704":1,"2705":1,"2706":1,"2707":1,"2708":1},"2":{"70":1,"118":1,"124":1,"131":1,"158":1,"182":2,"194":1,"214":1,"215":2,"221":1,"233":1,"234":1,"249":2,"251":1,"263":2,"308":1,"336":1,"432":1,"433":1,"434":1,"440":1,"453":1,"454":1,"455":1,"488":1,"498":1,"499":1,"502":2,"529":1,"555":1,"560":1,"569":1,"574":3,"575":1,"592":1,"610":1,"613":1,"623":2,"643":1,"689":1,"700":1,"1175":1,"1196":1,"1213":1,"1216":1,"1241":1,"1242":1,"1265":1,"1272":1,"1276":1,"1278":1,"1334":2,"1337":1,"1338":1,"1340":1,"1346":1,"1359":1,"1360":1,"1375":1,"1390":1,"1397":1,"1441":2,"1445":1,"1455":1,"1458":1,"1459":1,"1564":1,"1573":1,"1577":1,"1636":1,"1684":1,"1685":1,"1802":1,"1807":1,"1856":1,"1863":2,"1897":1,"1911":1,"2047":1,"2114":1,"2118":1,"2134":1,"2144":1,"2148":1,"2149":2,"2181":2,"2182":1,"2255":1,"2262":2,"2263":1,"2272":1,"2284":1,"2305":1,"2324":1,"2327":1,"2328":1,"2350":1,"2400":1,"2401":1,"2418":1,"2421":2,"2468":4,"2548":2,"2553":1,"2566":1,"2576":1,"2610":1,"2626":1,"2629":1,"2637":1,"2646":1,"2668":1,"2702":2,"2704":1,"2709":1,"2711":1,"2718":1,"2729":1,"2743":2,"2750":1}}],["mostly",{"2":{"8":1,"199":1,"377":1,"1265":1,"2114":1,"2344":1,"2508":1}}],["mosfet",{"2":{"14":2,"1458":2,"1471":2,"1573":1}}],["modu",{"2":{"1793":1,"2371":1}}],["modulation",{"2":{"1454":1,"1787":1,"1793":6,"1794":1,"2371":6}}],["modular",{"2":{"16":1}}],["modules",{"2":{"93":1,"479":2,"684":1,"685":1,"1491":1,"1589":2,"1811":2,"2136":1,"2284":1}}],["module",{"2":{"6":1,"428":1,"457":5,"460":1,"461":1,"470":2,"485":1,"684":1,"685":1,"1281":1,"1589":1,"1868":2,"1902":3,"1903":1,"2136":1,"2575":1,"2576":1}}],["modd",{"2":{"1793":1,"2371":1}}],["modded",{"2":{"176":1,"1370":1,"2228":2}}],["modtaps",{"2":{"1300":1}}],["modifer",{"2":{"2106":2,"2129":1}}],["modifying",{"2":{"453":1,"481":2,"626":1,"1338":1,"1450":1,"2309":1,"2315":1,"2324":1}}],["modify",{"2":{"125":1,"185":1,"211":1,"221":1,"236":1,"481":1,"529":1,"703":2,"1177":2,"1198":1,"1300":1,"1335":1,"1360":1,"1380":1,"1400":1,"1534":1,"1720":1,"1874":2,"1875":2,"1879":1,"1880":1,"2032":1,"2040":1,"2042":1,"2152":1,"2315":1,"2441":1,"2566":1,"2570":1,"2651":1,"2726":1}}],["modifiable",{"2":{"1853":1}}],["modification",{"0":{"2061":1},"2":{"65":1,"479":1,"1278":1,"1949":1,"2031":1,"2757":2}}],["modifications",{"2":{"21":1,"282":3,"341":1,"455":1,"1271":1,"2257":1,"2513":2,"2550":1,"2564":1,"2567":1}}],["modifiers",{"0":{"1284":1,"1414":1,"1659":1,"1660":1,"1661":1,"1662":1,"1668":1,"1677":1,"2373":1,"2390":1},"1":{"1673":1,"1674":1,"1675":1},"2":{"99":1,"112":1,"160":1,"222":1,"503":1,"505":1,"623":1,"1284":3,"1300":15,"1303":2,"1335":2,"1336":5,"1364":1,"1366":1,"1386":1,"1414":3,"1430":1,"1431":1,"1508":1,"1523":3,"1633":1,"1655":4,"1659":3,"1661":1,"1665":1,"1670":7,"1671":4,"1673":5,"1674":1,"1676":1,"1728":1,"1937":1,"1959":1,"2106":1,"2398":1,"2410":1,"2411":2,"2413":1,"2490":2,"2697":1,"2706":1}}],["modifier",{"0":{"1274":1,"1275":1,"1299":1,"1300":1,"1516":1,"1678":1,"2651":1,"2654":1},"1":{"1301":1,"1302":1,"1303":1,"1679":1,"1680":1,"1681":1,"1682":1,"1683":1,"1684":1,"1685":1,"1686":1,"1687":1,"1688":1,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1695":1,"1696":1,"1697":1,"1698":1,"1699":1,"1700":1,"1701":1,"1702":1,"1703":1,"1704":1,"1705":1,"1706":1,"1707":1,"1708":1,"1709":1,"1710":1,"1711":1,"1712":1,"1713":1},"2":{"74":1,"99":1,"194":2,"211":1,"231":4,"511":1,"1275":3,"1284":5,"1299":3,"1300":15,"1302":1,"1303":4,"1335":1,"1336":1,"1360":2,"1361":2,"1364":1,"1430":1,"1431":1,"1442":1,"1445":2,"1516":1,"1555":1,"1582":2,"1633":1,"1638":1,"1655":3,"1659":1,"1666":1,"1668":1,"1670":7,"1671":2,"1673":3,"1674":2,"1675":2,"1676":2,"1677":4,"1726":2,"1885":1,"1936":2,"1939":1,"1947":2,"1959":1,"2106":6,"2107":7,"2129":1,"2373":1,"2410":2,"2411":1,"2491":2,"2654":1,"2697":1,"2728":1,"2738":3}}],["modified",{"2":{"2":1,"8":1,"74":1,"149":1,"221":2,"453":1,"474":1,"1143":1,"1257":1,"1341":1,"1675":1,"1806":1,"1938":1,"2170":1,"2240":1,"2343":1,"2468":1,"2564":1,"2566":1,"2568":1,"2728":1,"2735":1,"2757":1}}],["modifies",{"2":{"0":1,"9":1,"19":1,"30":1,"33":1,"39":1,"52":1,"337":1,"1949":2,"2757":1}}],["moderate",{"2":{"2279":1}}],["modern",{"2":{"1129":1,"1272":1,"1276":1,"1499":1,"2181":1,"2263":1,"2270":1,"2277":1,"2281":1}}],["modernize",{"2":{"222":1,"236":2}}],["modernise",{"2":{"222":2}}],["modemmanager",{"2":{"1239":4}}],["mode=guest",{"2":{"624":1}}],["modelled",{"2":{"2130":1}}],["models",{"2":{"1329":1}}],["modelh",{"2":{"217":2}}],["modelm101",{"2":{"207":2}}],["modelm",{"0":{"204":1},"2":{"149":1,"207":3}}],["model",{"2":{"125":1,"143":2,"149":1,"185":1,"204":2,"207":12,"217":1,"222":2,"1859":1,"2566":1,"2756":1}}],["model01",{"2":{"37":2}}],["modes",{"0":{"124":1,"2183":1,"2729":1},"1":{"2730":1,"2731":1,"2732":1,"2733":1,"2734":1,"2735":1,"2736":1},"2":{"114":1,"124":2,"134":1,"186":2,"235":1,"1134":1,"1403":2,"1408":1,"1728":1,"1802":2,"1863":1,"1902":1,"1948":3,"1949":2,"2034":2,"2036":1,"2037":2,"2040":2,"2131":1,"2179":2,"2183":6,"2184":2,"2357":1,"2376":2,"2377":2,"2384":2,"2600":1,"2729":2,"2730":1}}],["mode",{"0":{"186":1,"429":1,"1180":1,"1240":1,"1403":1,"1580":1,"1747":2,"1749":2,"1755":1,"1803":1,"1804":1,"1805":1,"1806":1,"1807":1,"1864":1,"1865":1,"1866":1,"1974":2,"1976":2,"1982":1,"2052":1,"2053":1,"2186":1,"2188":2,"2190":1,"2191":1,"2192":2,"2194":2,"2450":1,"2734":1},"1":{"1181":1,"1182":1,"1404":1,"1405":1,"1748":2,"1750":2,"1756":1,"1975":2,"1977":2,"1983":1,"2187":1,"2189":2,"2193":2,"2195":2},"2":{"49":3,"93":1,"118":2,"134":1,"160":2,"175":1,"176":8,"183":4,"190":1,"191":2,"211":3,"230":1,"231":1,"240":2,"266":1,"429":1,"582":3,"626":4,"627":1,"629":1,"638":1,"661":1,"666":2,"696":2,"703":4,"707":2,"1126":1,"1127":1,"1129":2,"1130":2,"1140":1,"1141":1,"1142":1,"1177":10,"1181":3,"1194":1,"1198":8,"1225":2,"1226":2,"1230":1,"1239":1,"1245":2,"1250":2,"1270":2,"1283":1,"1286":1,"1287":2,"1288":2,"1332":10,"1396":1,"1397":1,"1398":7,"1399":8,"1401":1,"1403":13,"1404":1,"1405":2,"1406":3,"1408":7,"1463":1,"1469":1,"1572":3,"1573":2,"1579":3,"1580":1,"1589":1,"1727":2,"1729":2,"1730":2,"1748":1,"1750":1,"1773":1,"1803":2,"1804":3,"1805":3,"1806":5,"1807":6,"1808":2,"1816":1,"1819":2,"1821":1,"1856":2,"1863":10,"1865":2,"1866":2,"1881":1,"1882":7,"1910":5,"1948":15,"1951":3,"1952":2,"1954":2,"1960":1,"1975":1,"1977":1,"2018":1,"2034":22,"2035":3,"2036":15,"2037":10,"2038":1,"2052":9,"2057":2,"2126":1,"2129":1,"2145":1,"2146":1,"2149":4,"2152":8,"2179":4,"2180":6,"2183":22,"2184":8,"2186":1,"2187":1,"2188":1,"2189":2,"2190":1,"2191":1,"2192":1,"2193":2,"2194":1,"2195":2,"2196":1,"2197":1,"2198":1,"2199":1,"2230":1,"2235":1,"2237":1,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2255":1,"2263":1,"2344":1,"2356":3,"2357":7,"2369":2,"2376":22,"2377":2,"2384":8,"2450":3,"2455":1,"2517":1,"2524":2,"2530":1,"2566":1,"2572":3,"2576":10,"2672":1,"2704":2,"2729":9,"2730":1,"2735":4,"2736":6}}],["mods",{"0":{"1372":1,"1373":1,"1661":1,"1662":1,"1936":1,"1938":1,"2132":1},"1":{"1937":1,"1938":1,"1939":1,"2133":1},"2":{"38":5,"63":2,"149":1,"191":1,"199":2,"222":3,"266":1,"317":1,"502":1,"505":1,"511":2,"1284":4,"1300":40,"1302":1,"1303":3,"1364":1,"1371":1,"1372":1,"1373":1,"1385":5,"1403":1,"1430":2,"1445":1,"1446":5,"1501":1,"1506":2,"1516":2,"1523":5,"1530":1,"1661":1,"1668":2,"1670":5,"1671":2,"1673":2,"1674":2,"1677":5,"1728":3,"1929":3,"1932":1,"1933":6,"1934":1,"1935":1,"1936":1,"1937":1,"1938":7,"1939":4,"1941":1,"1942":5,"1943":5,"1949":3,"2106":1,"2129":1,"2170":2,"2228":6,"2367":2,"2405":2,"2411":2,"2490":3,"2491":30,"2566":1,"2688":1,"2695":1,"2708":1,"2738":4}}],["mod",{"0":{"194":1,"206":1,"1306":1,"1582":1,"2170":1,"2374":1,"2410":1,"2412":1},"1":{"2411":1,"2412":1,"2413":2,"2414":2,"2415":2,"2416":1},"2":{"22":2,"38":11,"98":1,"112":2,"134":1,"176":1,"191":1,"194":17,"199":3,"203":2,"206":2,"211":4,"317":1,"502":1,"505":5,"530":2,"1300":29,"1302":1,"1303":7,"1306":1,"1335":5,"1336":8,"1361":1,"1364":1,"1370":1,"1385":6,"1430":1,"1431":1,"1432":1,"1445":1,"1446":10,"1500":3,"1501":1,"1503":1,"1506":2,"1509":1,"1518":5,"1523":2,"1530":1,"1582":4,"1633":1,"1638":2,"1663":1,"1665":9,"1666":2,"1668":7,"1670":4,"1671":3,"1677":18,"1685":1,"1793":1,"1885":6,"1886":1,"1932":11,"1933":2,"1938":2,"1939":1,"1948":1,"2106":13,"2107":2,"2133":1,"2170":2,"2228":5,"2367":4,"2371":1,"2374":3,"2377":1,"2379":2,"2398":1,"2405":1,"2410":16,"2411":1,"2413":1,"2416":1,"2490":7,"2491":9,"2566":1,"2654":2,"2687":1,"2703":1,"2706":3,"2728":2,"2730":1,"2734":1,"2738":19}}],["mo",{"0":{"3":1},"2":{"313":5,"530":2,"532":2,"573":1,"1265":1,"1335":4,"1511":1,"1518":1,"1555":1,"1582":1,"1886":1,"2171":3,"2172":1,"2367":3,"2407":2,"2408":2,"2490":1,"2566":2}}],["mail",{"2":{"2355":2,"2393":2}}],["mainstream",{"2":{"1675":1}}],["mainly",{"2":{"198":1,"201":1,"213":1,"224":1,"238":2,"278":1,"1220":1,"1300":1}}],["maintenance",{"2":{"198":1,"213":1,"236":1,"238":1,"251":1,"268":1,"606":2,"2546":1,"2566":1}}],["maintenence",{"2":{"24":1}}],["maintains",{"2":{"559":1,"609":1,"1265":1,"1438":1,"2231":1,"2238":1,"2322":1,"2431":1,"2458":1,"2461":1}}],["maintained",{"2":{"262":1,"559":2,"610":1,"1265":2,"2466":1,"2556":1,"2672":1}}],["maintainers",{"0":{"320":1},"2":{"124":1,"173":1,"204":1,"265":1,"282":3,"318":1,"341":3,"529":1,"550":1,"1729":1,"1952":1,"2466":1,"2552":1,"2719":1}}],["maintainer",{"2":{"70":1,"111":1,"554":3,"559":1,"609":1,"624":1,"2553":2,"2556":1,"2566":1,"2615":1,"2671":1,"2672":2}}],["maintainability",{"2":{"262":1,"457":1,"468":1}}],["maintain",{"2":{"70":1,"114":1,"228":1,"367":1,"429":1,"462":1,"561":1,"606":1,"1385":1,"1398":1,"1718":1,"2263":2,"2441":2,"2546":1,"2719":1}}],["maintaining",{"2":{"70":1,"1949":1,"2292":1,"2725":1}}],["main",{"0":{"2744":1},"1":{"2745":1,"2746":1,"2747":1,"2748":1,"2749":1},"2":{"22":1,"49":1,"50":1,"65":1,"112":1,"113":1,"114":1,"191":1,"199":1,"228":2,"236":1,"306":1,"307":1,"323":1,"336":1,"428":1,"432":1,"496":1,"560":1,"574":1,"1293":2,"1303":1,"1406":1,"1464":1,"1822":1,"1923":1,"2129":2,"2143":1,"2162":1,"2251":1,"2307":2,"2316":1,"2404":1,"2406":1,"2418":1,"2438":2,"2441":1,"2445":2,"2450":1,"2566":1,"2697":1,"2719":1,"2743":6,"2744":2}}],["male",{"2":{"2275":1}}],["ma",{"2":{"502":1,"2699":1}}],["magnet",{"2":{"1577":1,"2270":1}}],["magenta",{"2":{"435":1,"1332":1,"1953":2,"2058":2}}],["magic+n",{"2":{"2263":1}}],["magic+d",{"2":{"1255":1,"2263":1}}],["magic",{"0":{"2305":1,"2370":1,"2396":1,"2706":1},"2":{"114":1,"149":1,"199":4,"226":2,"231":3,"236":2,"477":1,"502":1,"505":2,"515":2,"626":1,"1255":1,"1271":1,"1288":1,"1399":4,"1498":4,"1527":2,"1528":2,"1530":31,"2263":4,"2305":1,"2370":36,"2396":37,"2513":5,"2566":1,"2587":1,"2594":1,"2702":3,"2706":4,"2749":1}}],["making",{"0":{"1350":1,"2480":1},"1":{"1351":1,"1352":1},"2":{"130":1,"194":2,"282":3,"341":1,"401":1,"556":1,"559":1,"1287":1,"1326":1,"1330":1,"1385":1,"1430":1,"2118":1,"2231":2,"2238":2,"2274":1,"2405":1,"2417":1,"2491":2,"2577":2,"2709":1,"2744":1,"2746":2}}],["makemusic",{"2":{"2704":1}}],["makemidi",{"2":{"1787":1}}],["makelto",{"2":{"2702":1}}],["makeled",{"2":{"1724":1}}],["makeleader",{"2":{"1679":1}}],["makequantum",{"2":{"2573":1,"2576":10,"2579":1}}],["makeucis",{"2":{"2182":1}}],["makeunicodemap",{"2":{"2181":1}}],["makeunicode",{"2":{"2178":1,"2181":1}}],["makeuart",{"2":{"1196":1}}],["maketri",{"2":{"2172":1}}],["makeps2",{"2":{"1904":1,"1905":1,"1907":1}}],["makepointing",{"2":{"1853":1,"1855":1,"1856":1,"1857":1,"1858":1,"1862":2,"1867":1,"1868":1,"1869":1,"1870":2,"1871":1}}],["makeprogrammable",{"2":{"1833":1}}],["makeos",{"2":{"1825":1}}],["makeoled",{"2":{"1812":1,"1813":2}}],["makejoystick",{"2":{"1635":2}}],["makehd44780",{"2":{"1590":1}}],["makehaptic",{"2":{"1570":1}}],["makeencoder",{"2":{"1557":1,"1559":1}}],["makedip",{"2":{"1548":1}}],["makedigitizer",{"2":{"1532":1}}],["makeboard",{"2":{"2542":1}}],["makebootmagic",{"2":{"1495":1}}],["makebluetooth",{"2":{"1493":1}}],["makebacklight",{"2":{"1455":1,"1461":1,"1462":1,"1463":1,"1464":1}}],["makeifdef",{"2":{"1377":1}}],["makeifeq",{"2":{"1377":1,"1384":1,"1385":1}}],["makei2c",{"2":{"700":1}}],["makews2812",{"2":{"1213":1,"1219":1,"1220":1,"1221":1,"1222":1,"1223":1}}],["makeconsole",{"2":{"1830":1,"2702":1}}],["makecommand",{"2":{"1501":1,"1528":1,"2105":1}}],["makecommon",{"2":{"665":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1}}],["makecaps",{"2":{"1500":1}}],["makecustom",{"2":{"565":1,"566":1}}],["makeavr",{"2":{"2702":1}}],["makeautocorrect",{"2":{"1439":1}}],["makeaudio",{"2":{"655":1}}],["makeapa102",{"2":{"643":1}}],["makeanalog",{"2":{"631":1}}],["makergblight",{"2":{"2032":2}}],["makergb",{"2":{"1945":1}}],["makeraw",{"2":{"1919":1}}],["makers",{"2":{"496":1}}],["makerepeat",{"2":{"202":1,"1930":1}}],["maker",{"0":{"1234":1},"1":{"1235":1},"2":{"114":1,"1234":2,"1235":1,"1236":2,"2295":1,"2297":1}}],["makefilepin",{"2":{"1314":1}}],["makefileifeq",{"2":{"292":1}}],["makefiles",{"2":{"222":2,"559":1}}],["makefile",{"0":{"2264":1},"2":{"49":1,"133":2,"134":2,"149":3,"198":1,"199":2,"291":1,"331":1,"512":1,"1254":1,"1287":1,"1288":1,"1298":1,"2262":1,"2501":1,"2513":1}}],["makesteno",{"2":{"2146":1,"2147":1,"2148":1,"2149":1}}],["makest7565",{"2":{"2137":1}}],["makespace",{"2":{"2702":1}}],["makesplit",{"2":{"2121":2}}],["makespi",{"2":{"1175":1}}],["makesequencer",{"2":{"2109":1}}],["makesend",{"2":{"2073":1}}],["makesecure",{"2":{"2068":1}}],["makeserial",{"2":{"1124":1,"1127":2,"1130":2}}],["makesrc",{"2":{"564":1,"2577":2}}],["makes",{"2":{"17":1,"123":1,"363":1,"453":1,"481":1,"496":1,"505":1,"513":1,"1265":1,"1299":1,"1302":1,"1432":1,"1499":1,"1516":1,"1803":2,"1804":1,"1807":1,"1824":1,"1857":1,"1894":1,"1897":1,"1932":1,"1936":1,"1954":1,"2128":1,"2225":1,"2250":1,"2300":1,"2311":1,"2408":1,"2418":1,"2508":1,"2510":1,"2565":1,"2577":1,"2664":1,"2735":2,"2736":1}}],["make",{"0":{"409":1,"554":1,"1269":1,"1659":1,"1660":1,"1661":1,"1662":1,"2232":1,"2234":1,"2239":1,"2241":1,"2246":1,"2248":1,"2262":1,"2324":1,"2601":1,"2647":1},"1":{"2263":1,"2264":1,"2602":1,"2603":1,"2604":1,"2605":1,"2606":1,"2607":1,"2608":1,"2609":1,"2610":1,"2611":1,"2612":1},"2":{"2":1,"10":1,"18":4,"21":1,"24":1,"31":1,"36":2,"49":2,"55":1,"65":2,"70":1,"76":1,"94":2,"107":1,"114":7,"119":1,"131":1,"133":2,"134":4,"149":2,"160":1,"175":1,"176":8,"189":1,"191":2,"199":3,"211":5,"236":2,"249":2,"265":1,"305":1,"322":1,"331":1,"334":1,"355":1,"360":2,"370":4,"396":2,"401":1,"407":1,"411":3,"432":1,"435":3,"455":2,"466":1,"469":1,"470":1,"474":1,"478":1,"479":1,"504":1,"508":1,"512":1,"529":4,"530":1,"537":2,"548":1,"550":1,"554":2,"556":9,"560":3,"561":1,"581":1,"588":1,"606":1,"609":1,"616":1,"621":1,"624":5,"626":1,"627":1,"657":1,"658":1,"661":1,"1237":1,"1238":2,"1240":2,"1242":1,"1243":1,"1260":1,"1262":1,"1281":1,"1286":1,"1287":2,"1303":1,"1325":1,"1332":2,"1335":1,"1336":1,"1348":1,"1349":2,"1375":1,"1376":2,"1381":2,"1385":5,"1386":2,"1406":2,"1430":2,"1441":1,"1515":1,"1521":1,"1530":11,"1554":1,"1655":1,"1659":1,"1663":1,"1665":6,"1666":2,"1670":1,"1671":1,"1684":1,"1733":1,"1803":3,"1807":2,"1881":1,"1885":1,"1902":1,"1939":1,"1957":1,"2041":1,"2059":1,"2061":1,"2105":1,"2118":1,"2131":1,"2145":2,"2169":1,"2178":1,"2182":1,"2230":3,"2231":2,"2233":2,"2235":2,"2236":2,"2237":2,"2238":4,"2240":2,"2242":2,"2245":2,"2247":2,"2249":2,"2252":1,"2255":1,"2256":1,"2259":1,"2262":23,"2263":1,"2264":1,"2273":2,"2274":1,"2275":1,"2276":1,"2279":2,"2292":1,"2294":1,"2295":5,"2300":1,"2302":1,"2306":2,"2348":1,"2353":1,"2356":1,"2405":1,"2410":1,"2421":1,"2423":1,"2424":2,"2429":1,"2436":1,"2455":1,"2457":1,"2458":1,"2472":1,"2474":2,"2475":1,"2477":1,"2480":6,"2502":2,"2504":1,"2510":1,"2530":1,"2568":1,"2572":2,"2575":3,"2576":23,"2577":1,"2581":1,"2614":1,"2615":1,"2647":1,"2702":1,"2711":1,"2724":1,"2728":2,"2747":1,"2753":1,"2754":4,"2755":1,"2757":2}}],["majority",{"2":{"156":1,"166":1,"245":1,"248":1,"1132":1,"1258":1,"1495":1,"1497":1,"2727":1}}],["major",{"2":{"116":1,"199":1,"550":1,"1273":1,"1398":2,"1399":3,"1403":2,"2250":1}}],["macca",{"2":{"616":1}}],["mac",{"0":{"1279":1,"1280":1,"1283":1,"1296":1},"1":{"1297":1},"2":{"266":1,"1281":1,"1283":1,"2179":1,"2180":1,"2184":1,"2196":1,"2197":1,"2198":1,"2384":1,"2712":18}}],["machines",{"2":{"1134":1,"1828":1,"2146":1}}],["machine",{"2":{"263":1,"322":1,"323":1,"554":1,"1221":1,"2108":1,"2146":1,"2150":2,"2183":1,"2254":1,"2255":1,"2442":1,"2443":1,"2445":1,"2462":1,"2631":1}}],["mach80",{"2":{"134":1}}],["macos",{"0":{"365":1,"1278":1,"1666":1,"2254":1},"2":{"114":1,"149":1,"158":1,"176":1,"199":1,"236":1,"266":1,"505":2,"1249":1,"1273":2,"1368":1,"1567":1,"1568":1,"1666":3,"1673":1,"1825":1,"1826":1,"1832":1,"1921":1,"2179":1,"2180":1,"2183":3,"2184":2,"2196":1,"2197":1,"2198":1,"2245":1,"2247":1,"2249":1,"2254":1,"2347":1,"2351":1,"2355":3,"2384":2,"2389":1,"2392":1,"2393":1,"2429":1,"2451":1,"2452":1,"2457":1,"2512":2,"2513":2,"2556":1,"2712":11}}],["macro2",{"2":{"1384":1}}],["macro30",{"2":{"1832":1}}],["macro3",{"2":{"241":2,"249":1}}],["macro1",{"2":{"241":2,"1384":1}}],["macro0",{"2":{"199":1}}],["macropad",{"2":{"120":1,"176":3,"211":1,"236":1,"1354":1,"1355":1}}],["macros=",{"2":{"2262":2}}],["macros",{"0":{"17":1,"120":1,"696":1,"1353":1,"1354":1,"1358":1,"1360":1,"1385":1,"1553":2,"2363":1,"2559":1},"1":{"1354":1,"1355":2,"1356":2,"1357":2,"1358":1,"1359":2,"1360":2,"1361":2,"1362":2,"1363":2,"1364":2,"1365":2,"1366":2,"1367":2,"1368":2,"1369":2,"1370":2,"1371":2,"1372":2,"1373":2,"1374":2,"1375":2,"1554":2,"1555":2,"1556":2},"2":{"16":1,"17":1,"38":1,"50":1,"89":1,"114":1,"120":5,"134":2,"140":1,"176":2,"191":3,"196":1,"201":1,"211":2,"236":2,"249":1,"266":3,"277":1,"313":1,"388":1,"454":1,"567":1,"696":1,"1301":1,"1341":1,"1344":2,"1353":3,"1354":4,"1355":2,"1359":1,"1361":1,"1364":1,"1384":7,"1385":3,"1511":1,"1525":2,"1527":2,"1553":5,"1554":2,"1555":1,"1637":1,"1670":1,"1935":1,"1940":1,"1941":1,"1943":1,"2075":1,"2262":2,"2302":2,"2363":1,"2566":4,"2614":3,"2676":1,"2702":1,"2724":3,"2746":1}}],["macro",{"0":{"27":1,"140":1,"1356":1,"1364":1,"1555":1,"2122":1,"2633":1,"2649":1},"1":{"1357":1,"1365":1,"1366":1,"1367":1,"1368":1,"1369":1,"1370":1,"1371":1,"1372":1,"1373":1},"2":{"3":1,"7":1,"15":1,"27":1,"50":1,"75":1,"89":1,"114":3,"120":8,"134":1,"140":2,"149":2,"160":2,"188":2,"191":4,"199":3,"211":75,"222":3,"231":3,"236":1,"249":1,"255":2,"257":1,"258":1,"259":1,"277":2,"313":2,"529":2,"530":1,"570":1,"696":1,"698":1,"1301":1,"1326":1,"1340":1,"1352":1,"1354":4,"1355":1,"1356":2,"1357":1,"1359":9,"1364":3,"1375":1,"1384":2,"1385":1,"1405":1,"1529":1,"1553":22,"1554":12,"1555":6,"1556":14,"1578":1,"1675":1,"1729":2,"1733":1,"1832":1,"1935":3,"1940":7,"1941":6,"1952":2,"1957":1,"2042":2,"2047":1,"2059":1,"2072":1,"2075":1,"2100":1,"2101":1,"2149":1,"2161":3,"2169":1,"2183":1,"2299":1,"2302":4,"2363":10,"2400":1,"2407":3,"2490":1,"2559":3,"2566":2,"2608":2,"2610":2,"2614":1,"2615":1,"2616":2,"2633":2,"2649":1,"2676":1,"2728":3,"2746":6,"2747":2,"2749":1}}],["max660",{"2":{"1589":1}}],["maxfitlerouput",{"2":{"1441":1}}],["maxing",{"2":{"505":1}}],["maximus",{"2":{"222":1}}],["maximum",{"2":{"28":1,"166":2,"370":2,"502":2,"506":1,"511":2,"601":1,"664":1,"755":1,"784":1,"816":1,"848":1,"855":1,"883":1,"889":1,"917":1,"923":1,"951":1,"957":1,"985":1,"991":1,"1019":1,"1025":1,"1053":1,"1059":1,"1087":1,"1093":1,"1143":1,"1287":1,"1326":1,"1457":3,"1463":1,"1500":1,"1636":1,"1637":1,"1644":1,"1725":2,"1730":3,"1802":3,"1803":4,"1804":2,"1806":2,"1807":2,"1822":2,"1857":1,"1860":5,"1864":2,"1946":2,"1954":4,"2035":1,"2038":1,"2042":1,"2054":6,"2128":2,"2130":1,"2131":2,"2143":2,"2161":1,"2170":1,"2574":3,"2576":10,"2577":1,"2587":1,"2593":1,"2594":1,"2677":1,"2688":1,"2694":2,"2695":1,"2699":1,"2737":1}}],["max",{"0":{"1780":1,"1783":1,"2025":1,"2028":1},"2":{"112":4,"134":1,"160":1,"166":1,"176":1,"191":1,"194":1,"211":2,"231":1,"404":1,"502":1,"506":1,"507":2,"601":2,"659":4,"660":4,"666":2,"667":1,"1401":3,"1406":2,"1440":1,"1446":8,"1456":1,"1518":4,"1573":1,"1636":3,"1644":1,"1724":1,"1728":1,"1729":6,"1733":1,"1781":1,"1784":1,"1803":7,"1807":4,"1822":6,"1857":3,"1889":1,"1945":1,"1949":1,"1952":6,"1957":1,"1958":6,"1959":3,"2026":1,"2029":1,"2035":1,"2038":1,"2042":2,"2128":2,"2143":6,"2152":2,"2171":1,"2182":1,"2228":6,"2229":1,"2299":3,"2360":1,"2677":2,"2688":2,"2690":2,"2694":3,"2695":2,"2699":1,"2757":1}}],["maps",{"2":{"282":1,"607":1,"1279":1,"1403":1,"1405":1,"1820":1,"2710":1,"2746":1}}],["mapped",{"2":{"182":1,"209":2,"502":1,"624":1,"630":1,"669":1,"734":1,"760":1,"790":1,"824":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1,"1316":2,"1320":2,"1435":3,"1459":1,"1567":1,"1948":3,"2075":1,"2316":1,"2319":1,"2577":3,"2597":3,"2643":1,"2734":2,"2735":2,"2736":1}}],["mappings",{"2":{"191":1,"211":1,"236":2,"610":2,"1824":1,"2566":1}}],["mapping",{"0":{"154":1,"247":1,"610":1,"669":1,"734":1,"760":1,"790":1,"824":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1,"1801":1,"2157":1},"1":{"611":1,"612":1,"2158":1},"2":{"49":1,"114":1,"149":1,"154":1,"160":2,"191":6,"209":1,"211":1,"231":1,"236":1,"247":2,"266":1,"282":1,"607":1,"610":5,"612":1,"613":1,"1283":1,"1548":2,"1559":3,"1820":2,"2157":1,"2181":2,"2182":4,"2263":2,"2316":1,"2319":1,"2407":1,"2558":1,"2686":1,"2711":1,"2735":1,"2736":1}}],["maple",{"2":{"143":9,"149":1,"181":2,"270":2,"277":1,"629":1,"2350":1}}],["map",{"0":{"1405":1,"1548":1,"1559":1,"2746":1},"2":{"76":1,"134":1,"160":1,"176":2,"191":1,"199":2,"201":3,"209":1,"211":6,"218":1,"222":2,"247":2,"249":1,"277":1,"1287":1,"1405":4,"1434":1,"1533":1,"1548":3,"1559":5,"1560":1,"1799":1,"1801":1,"1820":2,"1821":1,"1857":1,"2059":3,"2060":2,"2153":2,"2155":1,"2157":1,"2181":4,"2182":3,"2184":1,"2203":1,"2204":1,"2205":1,"2206":1,"2207":1,"2209":1,"2210":1,"2263":1,"2384":1,"2566":2,"2614":1,"2694":1,"2746":2,"2747":2,"2749":2}}],["manjaro",{"2":{"2431":1,"2464":1}}],["manipulating",{"0":{"1876":1},"1":{"1877":1,"1878":1,"1879":1,"1880":1,"1881":1,"1882":1,"1883":1},"2":{"1363":1,"2442":1}}],["manipulation",{"2":{"243":1,"334":1,"580":1,"1134":1}}],["manipulations",{"2":{"64":1}}],["manipulate",{"2":{"1341":1,"1449":1,"1498":1,"1505":1,"1876":1,"1881":1,"2158":1}}],["man",{"2":{"1238":1,"2347":1}}],["manner",{"2":{"502":2,"511":1,"1527":1}}],["mango",{"2":{"226":1,"236":1}}],["mandatory",{"2":{"201":2,"2566":1}}],["managed",{"2":{"1265":1}}],["management",{"0":{"1527":1},"2":{"1265":1,"1292":1,"1822":1,"2143":1}}],["manager",{"0":{"324":1},"2":{"324":1,"358":1,"627":1,"628":1,"629":2,"1292":1,"1921":1,"2347":1,"2351":1,"2420":1,"2450":1,"2506":1}}],["manageable",{"2":{"251":1,"481":1}}],["manage",{"2":{"182":1,"554":1,"596":1,"1303":1}}],["manual",{"0":{"2530":1},"2":{"149":1,"160":1,"234":1,"249":2,"1227":1,"1238":1}}],["manually",{"2":{"134":1,"234":1,"244":1,"334":1,"366":1,"454":1,"521":1,"596":1,"1241":1,"1448":1,"1658":1,"1720":1,"1820":1,"1822":2,"1854":1,"1876":1,"2126":1,"2143":2,"2252":2,"2413":1,"2445":1,"2459":1,"2463":1,"2474":1,"2498":1,"2566":1,"2573":1,"2577":2,"2757":1}}],["manufacture",{"2":{"2259":1}}],["manufacturers",{"2":{"684":1,"1132":1,"1133":1}}],["manufacturer",{"2":{"70":3,"76":1,"111":1,"169":2,"184":2,"191":4,"213":1,"327":1,"502":1,"537":1,"681":1,"1923":3,"2231":1,"2238":1,"2556":3,"2565":1,"2566":1,"2671":1,"2672":3}}],["manuform",{"2":{"114":3,"149":2,"211":1,"217":2,"222":8,"226":1,"236":1,"2270":1}}],["manyboard",{"2":{"114":1}}],["many",{"2":{"30":1,"198":1,"265":1,"376":1,"430":1,"445":1,"479":1,"505":2,"578":1,"598":1,"602":1,"659":2,"1212":1,"1254":1,"1304":1,"1325":2,"1368":1,"1405":1,"1410":1,"1416":1,"1430":1,"1454":1,"1501":1,"1557":1,"1658":1,"1791":1,"1807":1,"1817":1,"1918":1,"2042":1,"2114":1,"2131":1,"2132":1,"2141":1,"2148":1,"2170":1,"2171":1,"2181":1,"2226":3,"2229":1,"2230":1,"2262":2,"2267":1,"2280":1,"2300":1,"2348":2,"2408":1,"2418":1,"2427":1,"2429":1,"2456":1,"2457":1,"2479":1,"2480":1,"2492":2,"2503":3,"2555":1,"2566":1,"2577":1,"2634":1,"2663":1,"2686":1,"2710":1,"2711":1,"2718":1,"2741":1,"2745":2,"2750":3,"2757":1}}],["maarten",{"0":{"57":1}}],["maartenwut",{"0":{"57":1},"2":{"57":23}}],["mario",{"2":{"1686":1}}],["mary",{"2":{"1565":2}}],["mar",{"2":{"55":1}}],["marked",{"2":{"656":1,"1142":1,"1466":1,"1538":1,"1645":1,"1728":1,"2344":1,"2474":1,"2672":1}}],["marker",{"2":{"290":1,"2349":1,"2600":8}}],["markers",{"2":{"266":22}}],["markdown",{"2":{"278":2,"341":1,"462":1,"621":1,"1346":1,"2510":2}}],["mark",{"2":{"48":1,"176":1,"191":1,"234":1,"236":1,"502":1,"2221":1,"2474":1,"2741":1}}],["marksard",{"2":{"143":3,"149":2}}],["marks",{"2":{"0":1,"2466":1,"2474":2}}],["matias",{"2":{"2266":1}}],["materials",{"2":{"2270":1,"2274":1}}],["material",{"2":{"2267":1}}],["mate",{"2":{"1491":1}}],["math",{"2":{"469":1,"1857":1}}],["matt",{"2":{"2753":1}}],["matte",{"2":{"2273":1}}],["matters",{"2":{"2042":1,"2408":1}}],["matter",{"2":{"194":1,"556":1,"1383":1,"1551":1,"2274":1,"2408":1,"2456":1,"2614":1}}],["matt3o",{"2":{"2270":2,"2281":1}}],["matthewdias",{"2":{"143":4,"149":2}}],["matrices",{"2":{"176":1,"1495":1,"1723":1,"1944":1,"2131":1,"2289":1,"2311":2}}],["matrix=true",{"2":{"374":1,"1245":1}}],["matrix",{"0":{"80":1,"84":1,"124":1,"214":1,"218":1,"563":1,"578":1,"579":1,"580":1,"584":1,"585":1,"586":1,"1252":1,"1290":1,"1552":1,"1723":1,"1728":1,"1729":1,"1735":1,"1736":1,"1737":1,"1738":1,"1739":1,"1740":1,"1741":1,"1743":1,"1745":1,"1747":1,"1749":1,"1751":1,"1752":1,"1753":1,"1754":1,"1755":1,"1757":1,"1758":1,"1759":1,"1760":1,"1761":1,"1763":1,"1764":1,"1765":1,"1766":1,"1767":1,"1769":1,"1771":1,"1773":1,"1774":1,"1776":1,"1778":1,"1780":1,"1783":1,"1944":1,"1949":1,"1950":1,"1951":1,"1952":1,"1960":1,"1962":1,"1963":1,"1964":1,"1965":1,"1966":1,"1967":1,"1968":1,"1970":1,"1972":1,"1974":1,"1976":1,"1978":1,"1979":1,"1980":1,"1981":1,"1982":1,"1984":1,"1985":1,"1986":1,"1987":1,"1988":1,"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2008":1,"2010":1,"2012":1,"2014":1,"2016":1,"2018":1,"2019":1,"2021":1,"2023":1,"2025":1,"2028":1,"2125":1,"2268":1,"2270":1,"2283":1,"2311":1,"2369":1,"2377":1,"2557":1,"2558":1,"2648":1,"2688":1,"2689":1,"2695":1,"2745":1,"2746":1},"1":{"564":1,"565":1,"566":1,"579":1,"580":1,"585":1,"586":1,"1724":1,"1725":1,"1726":1,"1727":1,"1728":1,"1729":1,"1730":1,"1731":1,"1732":1,"1733":1,"1734":1,"1735":1,"1736":1,"1737":1,"1738":1,"1739":1,"1740":1,"1741":1,"1742":2,"1743":1,"1744":2,"1745":1,"1746":2,"1747":1,"1748":2,"1749":1,"1750":2,"1751":1,"1752":1,"1753":1,"1754":1,"1755":1,"1756":2,"1757":1,"1758":1,"1759":1,"1760":1,"1761":1,"1762":2,"1763":1,"1764":1,"1765":1,"1766":1,"1767":1,"1768":2,"1769":1,"1770":2,"1771":1,"1772":2,"1773":1,"1774":1,"1775":2,"1776":1,"1777":2,"1778":1,"1779":2,"1780":1,"1781":1,"1782":1,"1783":1,"1784":1,"1785":1,"1945":1,"1946":1,"1947":1,"1948":1,"1949":1,"1950":2,"1951":2,"1952":1,"1953":1,"1954":1,"1955":1,"1956":1,"1957":1,"1958":1,"1959":1,"1960":1,"1961":1,"1962":1,"1963":1,"1964":1,"1965":1,"1966":1,"1967":1,"1968":1,"1969":2,"1970":1,"1971":2,"1972":1,"1973":2,"1974":1,"1975":2,"1976":1,"1977":2,"1978":1,"1979":1,"1980":1,"1981":1,"1982":1,"1983":2,"1984":1,"1985":1,"1986":1,"1987":1,"1988":1,"1989":2,"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"1995":2,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2001":2,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2007":2,"2008":1,"2009":2,"2010":1,"2011":2,"2012":1,"2013":1,"2014":1,"2015":2,"2016":1,"2017":2,"2018":1,"2019":1,"2020":2,"2021":1,"2022":2,"2023":1,"2024":2,"2025":1,"2026":1,"2027":1,"2028":1,"2029":1,"2030":1,"2269":1,"2271":1,"2272":1,"2273":1,"2274":1,"2558":1,"2746":1,"2747":1,"2748":1,"2749":1},"2":{"17":1,"31":8,"49":3,"63":2,"64":1,"65":4,"70":1,"74":4,"76":1,"80":2,"84":1,"92":4,"93":14,"94":5,"102":3,"111":2,"112":7,"113":1,"114":36,"124":2,"133":1,"134":11,"149":13,"160":4,"176":4,"183":22,"185":9,"191":16,"196":1,"199":7,"201":1,"211":14,"214":1,"218":1,"221":6,"222":18,"236":12,"238":1,"249":33,"266":10,"277":11,"334":1,"374":2,"378":2,"502":18,"510":4,"511":9,"515":2,"530":2,"563":2,"564":4,"565":10,"566":21,"574":1,"575":1,"578":1,"579":2,"580":18,"584":1,"586":4,"587":2,"588":2,"593":3,"594":3,"609":1,"624":1,"643":1,"659":1,"660":1,"664":1,"665":1,"669":1,"730":2,"756":2,"784":1,"785":2,"816":1,"817":2,"848":1,"849":2,"883":1,"884":2,"917":1,"918":2,"951":1,"952":2,"985":1,"986":2,"1019":1,"1020":2,"1053":1,"1054":2,"1087":1,"1088":2,"1143":1,"1144":2,"1213":1,"1214":1,"1252":1,"1253":8,"1290":1,"1294":1,"1326":3,"1329":1,"1330":2,"1332":1,"1336":1,"1359":4,"1375":1,"1405":5,"1454":1,"1496":2,"1497":3,"1530":2,"1547":2,"1560":4,"1573":1,"1723":1,"1724":3,"1725":5,"1727":12,"1728":64,"1729":23,"1730":15,"1731":1,"1733":8,"1735":1,"1736":1,"1737":1,"1738":1,"1739":1,"1740":1,"1741":1,"1742":1,"1744":1,"1774":1,"1775":1,"1792":2,"1817":1,"1820":3,"1823":8,"1826":4,"1944":1,"1945":3,"1946":5,"1948":4,"1949":148,"1950":7,"1951":1,"1952":23,"1954":19,"1955":1,"1957":8,"1958":10,"1959":7,"1960":4,"1962":1,"1963":1,"1964":1,"1965":1,"1966":1,"1967":1,"1968":1,"1969":1,"1971":1,"2019":1,"2020":1,"2034":1,"2041":2,"2070":1,"2117":1,"2122":3,"2125":11,"2129":2,"2131":4,"2141":1,"2142":2,"2155":3,"2164":2,"2231":1,"2238":1,"2259":1,"2263":3,"2267":1,"2268":4,"2275":1,"2276":1,"2277":2,"2283":1,"2284":1,"2289":1,"2290":1,"2299":1,"2301":3,"2302":4,"2311":6,"2369":13,"2377":1,"2401":3,"2406":6,"2407":1,"2411":1,"2423":2,"2437":3,"2440":1,"2519":1,"2557":7,"2558":6,"2559":20,"2566":10,"2567":1,"2577":3,"2584":1,"2614":5,"2648":1,"2674":1,"2679":2,"2682":3,"2686":3,"2688":6,"2689":8,"2695":6,"2696":1,"2697":7,"2704":1,"2708":46,"2724":2,"2725":2,"2740":1,"2744":2,"2745":8,"2746":6,"2747":4,"2748":4,"2757":1}}],["matched",{"2":{"374":2,"1431":1,"1446":1,"1686":1}}],["matches",{"2":{"341":1,"349":1,"628":1,"1132":1,"1133":1,"1405":1,"1441":9,"1452":2,"1559":1,"1701":1,"1704":1,"1707":1,"1710":1,"1713":1,"1863":1,"2348":1,"2445":2,"2513":1,"2575":1,"2577":2,"2746":1}}],["matchstickworks",{"2":{"226":2,"236":1}}],["match",{"2":{"65":1,"77":1,"105":1,"134":1,"149":1,"182":1,"191":1,"195":1,"349":1,"354":1,"374":5,"453":1,"540":1,"628":1,"703":1,"1177":1,"1198":1,"1278":1,"1300":2,"1332":1,"1336":1,"1347":2,"1351":1,"1355":1,"1438":1,"1445":1,"1525":1,"1820":1,"2157":1,"2221":1,"2317":1,"2348":1,"2411":1,"2533":2,"2575":1,"2584":1,"2587":1,"2614":1,"2615":1,"2747":1}}],["matchingsubstring",{"2":{"2754":2}}],["matching",{"2":{"50":1,"149":1,"243":1,"374":1,"411":1,"702":1,"1132":1,"1133":1,"1176":1,"1221":1,"1300":1,"1341":6,"1441":2,"2317":1,"2352":1,"2542":1,"2566":1,"2710":1,"2754":1}}],["masquerade",{"2":{"2550":1}}],["masked",{"2":{"1445":1,"2125":2,"2413":1}}],["mask",{"0":{"1404":1},"2":{"105":6,"114":1,"502":1,"1300":21,"1303":2,"1336":2,"1341":12,"1364":1,"1385":2,"1404":6,"1446":4,"1501":1,"1523":2,"1530":1,"1549":4,"1663":1,"1665":11,"1666":2,"1668":1,"1670":3,"1677":3,"1815":1,"1910":2,"1912":5,"1933":2,"1938":2,"1939":1,"2125":1,"2139":1,"2228":1,"2491":8,"2588":2,"2738":3}}],["masks",{"2":{"49":1,"1300":1,"1677":1,"1815":2,"2139":2,"2588":1,"2738":1}}],["massive",{"2":{"163":1}}],["massively",{"2":{"70":1}}],["mass",{"2":{"93":1,"199":1,"360":1,"1576":1,"2252":1,"2349":1,"2539":1}}],["massdrop",{"2":{"73":1,"114":1,"131":1,"134":1,"207":2,"493":2,"624":3}}],["masterzen",{"2":{"2281":1}}],["master",{"0":{"699":1,"1174":1,"2476":1,"2478":1,"2479":1},"1":{"700":1,"701":1,"702":1,"703":1,"704":1,"705":1,"706":1,"707":1,"708":1,"709":1,"710":1,"711":1,"712":1,"713":1,"714":1,"715":1,"716":1,"717":1,"718":1,"719":1,"720":1,"721":1,"722":1,"723":1,"724":1,"725":1,"726":1,"727":1,"728":1,"1175":1,"1176":1,"1177":1,"1178":1,"1179":1,"1180":1,"1181":1,"1182":1,"1183":1,"1184":1,"1185":1,"1186":1,"1187":1,"1188":1,"1189":1,"1190":1,"1191":1,"1192":1,"1193":1,"1194":1,"2479":1,"2480":1,"2481":1},"2":{"31":3,"34":1,"45":1,"51":1,"74":1,"114":1,"134":2,"149":1,"169":1,"176":4,"191":1,"234":4,"236":1,"277":1,"317":2,"337":1,"340":4,"345":1,"346":3,"347":2,"349":8,"350":5,"361":4,"400":2,"509":4,"510":4,"511":7,"515":1,"520":1,"529":1,"530":2,"535":1,"684":3,"685":1,"694":1,"699":1,"700":2,"702":1,"852":3,"1023":3,"1057":3,"1129":2,"1130":1,"1174":1,"1175":2,"1275":1,"1816":3,"1865":1,"1900":1,"2051":4,"2127":3,"2128":4,"2129":3,"2130":18,"2131":6,"2132":1,"2140":3,"2225":1,"2255":3,"2370":2,"2396":2,"2472":1,"2473":1,"2474":8,"2475":4,"2476":6,"2477":4,"2478":2,"2479":7,"2480":1,"2564":3,"2566":2,"2567":1,"2568":4,"2576":3,"2721":1}}],["made",{"2":{"10":1,"73":1,"116":1,"124":1,"134":1,"172":1,"201":1,"243":1,"246":1,"263":1,"271":1,"272":1,"273":1,"315":1,"327":1,"428":1,"453":1,"455":1,"519":1,"554":5,"606":1,"624":1,"726":1,"1403":1,"1527":1,"2132":1,"2297":1,"2303":1,"2309":1,"2409":1,"2454":1,"2473":2,"2474":3,"2476":1,"2485":1,"2513":1,"2719":1,"2728":1}}],["maybe",{"0":{"2320":1}}],["may",{"0":{"19":1,"78":1,"150":1,"200":1,"250":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1},"2":{"10":1,"14":1,"24":1,"31":2,"34":1,"73":1,"88":1,"104":1,"124":2,"127":1,"157":1,"166":1,"182":1,"194":1,"240":1,"248":1,"251":1,"259":1,"282":3,"338":1,"341":1,"343":1,"344":1,"345":1,"351":5,"352":7,"355":2,"356":1,"374":3,"380":1,"396":1,"411":2,"452":2,"461":1,"466":1,"480":1,"481":1,"486":3,"502":2,"504":1,"505":4,"511":1,"539":2,"551":1,"556":1,"574":1,"578":1,"589":1,"624":1,"626":3,"627":2,"628":1,"629":1,"635":1,"659":4,"663":1,"668":1,"687":1,"688":1,"689":2,"690":2,"733":1,"759":1,"789":1,"823":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1147":1,"1176":1,"1177":2,"1195":1,"1201":1,"1216":3,"1219":1,"1223":2,"1226":1,"1227":1,"1230":1,"1240":1,"1241":2,"1243":2,"1254":1,"1270":2,"1278":1,"1293":1,"1294":1,"1329":1,"1331":1,"1335":1,"1355":2,"1361":1,"1364":2,"1377":3,"1384":1,"1385":2,"1398":1,"1406":1,"1412":1,"1431":1,"1440":1,"1447":1,"1467":1,"1469":1,"1470":1,"1495":1,"1499":1,"1500":2,"1515":2,"1533":1,"1548":1,"1553":1,"1559":1,"1562":2,"1573":5,"1605":1,"1630":1,"1661":1,"1662":1,"1666":1,"1670":1,"1673":1,"1676":1,"1677":1,"1684":2,"1685":1,"1714":1,"1788":1,"1803":1,"1811":1,"1815":1,"1817":1,"1819":1,"1824":1,"1825":1,"1828":1,"1830":1,"1832":1,"1871":1,"1880":1,"1885":1,"1899":1,"1904":1,"1908":1,"1921":2,"1932":1,"1933":1,"1934":1,"1938":1,"1941":1,"1950":1,"1954":1,"2061":2,"2107":1,"2120":1,"2125":1,"2129":1,"2131":1,"2133":1,"2139":1,"2145":2,"2150":1,"2161":1,"2169":1,"2177":1,"2181":1,"2182":1,"2183":2,"2230":1,"2233":1,"2235":1,"2237":1,"2238":2,"2240":3,"2242":1,"2243":1,"2244":1,"2245":1,"2247":1,"2252":1,"2255":1,"2257":2,"2260":1,"2262":1,"2263":1,"2267":1,"2269":1,"2272":2,"2273":3,"2276":1,"2279":3,"2294":2,"2305":1,"2306":1,"2310":1,"2319":1,"2327":1,"2341":1,"2342":1,"2346":1,"2348":4,"2351":1,"2353":1,"2393":1,"2398":2,"2401":1,"2405":2,"2411":1,"2419":1,"2423":2,"2441":1,"2450":1,"2452":1,"2466":1,"2491":1,"2495":1,"2506":1,"2510":2,"2513":1,"2514":1,"2516":1,"2517":1,"2518":1,"2521":1,"2524":2,"2529":3,"2564":5,"2567":1,"2571":1,"2576":4,"2577":2,"2584":2,"2592":1,"2593":1,"2601":1,"2605":1,"2701":1,"2702":2,"2711":1,"2718":1,"2719":1,"2720":3,"2723":1,"2726":1,"2728":1,"2729":2,"2738":1,"2740":3}}],["aabb",{"0":{"2731":1}}],["aa",{"2":{"2575":1}}],["aaron",{"2":{"1938":2}}],["ao",{"2":{"2153":1}}],["aoff",{"2":{"1793":1,"2371":1}}],["aozora",{"2":{"122":2}}],["a♯",{"2":{"1793":6,"2371":6}}],["a♭",{"2":{"1793":6,"2371":6}}],["a\`",{"2":{"1519":1}}],["azure",{"2":{"1953":2,"2058":2}}],["azerty",{"0":{"2624":1},"2":{"1355":1,"2712":2}}],["azoteq",{"0":{"1858":1},"1":{"1859":1,"1860":1,"1861":1},"2":{"236":1,"249":1,"1858":2,"1859":10,"1860":17,"1861":3}}],["a9",{"2":{"1198":1,"1906":2,"2517":1,"2530":1}}],["a8",{"2":{"656":2,"661":2,"1396":1,"1906":2,"2530":1}}],["a7²",{"2":{"635":1}}],["a7¹",{"2":{"635":1}}],["a7",{"2":{"633":1,"635":4,"2518":2,"2530":1}}],["a6²",{"2":{"635":1}}],["a6¹",{"2":{"635":1}}],["a6",{"2":{"633":1,"635":4,"2518":2,"2530":1}}],["a54",{"2":{"2530":1}}],["a5+dacd2",{"2":{"656":6}}],["a5²",{"2":{"635":1}}],["a5¹",{"2":{"635":1}}],["a5",{"2":{"633":1,"635":4,"656":1,"657":1,"1390":3,"1391":3,"1392":1,"1393":1,"1793":1,"2371":1,"2518":2,"2530":1}}],["a43",{"2":{"2530":1}}],["a4+a5",{"2":{"1392":1}}],["a4+dacd1",{"2":{"656":6}}],["a4²",{"2":{"635":1}}],["a4¹",{"2":{"635":1}}],["a4",{"2":{"633":1,"635":4,"656":1,"657":1,"1390":3,"1391":3,"1392":1,"1393":1,"1637":2,"1793":1,"2371":1,"2518":2,"2530":1}}],["a3²",{"2":{"635":2}}],["a3¹",{"2":{"635":2}}],["a3",{"2":{"633":1,"635":4,"1236":1,"1793":1,"2371":1}}],["a2²",{"2":{"635":2}}],["a2¹",{"2":{"635":2}}],["a2",{"2":{"633":1,"635":4,"1793":1,"2371":1,"2530":1,"2689":2}}],["a14",{"2":{"2530":1}}],["a145",{"2":{"2530":1}}],["a135",{"2":{"2530":1}}],["a13",{"2":{"1573":1,"2530":1}}],["a15",{"2":{"1547":1,"2530":1}}],["a12",{"2":{"1198":1,"2516":1}}],["a11",{"2":{"1198":1,"2516":1}}],["a10",{"2":{"1198":1,"1547":1,"2517":1,"2521":1,"2530":1}}],["a1²",{"2":{"635":2}}],["a1¹",{"2":{"635":2}}],["a1",{"2":{"633":1,"635":4,"1793":1,"2371":1,"2530":1,"2689":2,"2697":1}}],["a0²",{"2":{"635":2}}],["a0¹",{"2":{"635":2}}],["a0",{"2":{"633":1,"635":4,"639":1,"2141":2,"2237":1,"2518":1,"2519":1,"2530":1,"2689":2}}],["akko",{"2":{"2244":1}}],["akemipad",{"2":{"211":1}}],["akis",{"2":{"211":1}}],["akira",{"2":{"211":1}}],["akb",{"2":{"211":2}}],["aka",{"2":{"149":1,"194":1,"1401":1,"1402":1,"1499":2,"1677":1,"2119":1,"2120":1,"2152":1,"2738":1}}],["air",{"2":{"2133":1}}],["aim",{"2":{"2229":1}}],["aims",{"2":{"1853":1,"2065":1,"2472":1}}],["aiming",{"2":{"1791":1}}],["aimed",{"2":{"251":1,"605":1,"1733":1,"1957":1,"2482":1}}],["ain",{"2":{"454":1}}],["aids",{"2":{"2272":1}}],["aid",{"2":{"278":1,"468":1}}],["aide",{"2":{"249":1,"1864":1}}],["aidansmithdotdev",{"2":{"211":1}}],["ai03",{"2":{"149":1,"211":2,"388":1,"2267":1}}],["ae",{"2":{"2182":2}}],["aegis",{"2":{"211":1}}],["aeroboard",{"2":{"222":1}}],["aero",{"2":{"211":1}}],["aella",{"2":{"211":1}}],["aelith",{"2":{"197":2}}],["aeboards",{"0":{"60":1},"2":{"102":3,"114":1,"191":1,"211":3}}],["axis",{"0":{"1650":2,"1653":2},"1":{"1651":2,"1652":2,"1654":2},"2":{"183":2,"236":1,"1325":1,"1571":1,"1577":1,"1636":3,"1637":12,"1638":9,"1642":1,"1643":1,"1644":1,"1650":1,"1651":2,"1653":1,"1654":2,"1857":10,"1872":2,"1873":2,"1876":2,"2615":2,"2686":4,"2688":2,"2695":2}}],["axes",{"0":{"1637":1,"1638":1,"1914":1,"1915":1},"1":{"1638":1},"2":{"49":1,"183":2,"1634":3,"1636":1,"1637":4,"1638":2,"1642":1,"1900":1,"1914":2}}],["ajisai74",{"2":{"143":2}}],["awinic",{"2":{"664":1}}],["awesome",{"2":{"196":1,"313":1,"463":1,"464":1,"465":1,"1263":1,"1375":1,"1680":1,"2556":1}}],["awake",{"2":{"1876":1}}],["awaiting",{"2":{"1816":1}}],["awaited",{"2":{"131":1}}],["aware",{"2":{"370":1,"371":1,"378":1,"381":1,"383":1,"386":1,"452":1,"1515":1,"2355":1}}],["away",{"2":{"3":1,"15":1,"134":3,"176":1,"266":1,"388":1,"1439":1,"1684":1,"1728":4,"1815":1,"1949":6,"2139":1,"2171":1,"2268":1,"2273":1,"2311":1,"2665":1}}],["aw20216s",{"0":{"664":1,"671":1,"673":1,"675":1,"677":1,"679":1},"1":{"665":1,"666":1,"667":1,"668":1,"669":1,"670":1,"671":1,"672":2,"673":1,"674":2,"675":1,"676":2,"677":1,"678":2,"679":1,"680":2},"2":{"236":1,"249":1,"664":1,"665":3,"666":7,"667":1,"669":3,"675":1,"676":1,"1945":1,"2695":1}}],["aw20216",{"2":{"114":3,"176":1,"211":1,"221":2,"236":1}}],["ammount",{"2":{"1949":3}}],["amtel",{"2":{"2126":1}}],["amt",{"2":{"1870":4}}],["among",{"2":{"1568":1,"2348":1}}],["amounts",{"2":{"1334":1,"2574":1,"2576":1,"2577":1}}],["amount",{"2":{"107":1,"688":1,"689":1,"1245":1,"1336":1,"1368":1,"1515":2,"1554":1,"1559":1,"1682":1,"1684":1,"1827":2,"1889":1,"1915":1,"2044":1,"2084":1,"2088":1,"2128":1,"2149":1,"2160":1,"2179":1,"2272":3,"2279":1,"2304":1,"2411":1,"2491":1,"2514":1,"2564":1,"2574":3,"2576":1,"2680":1,"2681":1,"2687":1,"2689":1,"2691":1,"2697":2,"2699":1,"2718":1}}],["amazing",{"2":{"1264":1}}],["amag23",{"2":{"211":1}}],["am",{"2":{"360":1,"1436":3,"1899":2,"2474":1}}],["america",{"2":{"1268":1,"1355":1,"2712":3}}],["amet",{"2":{"301":1}}],["amended",{"2":{"2564":1}}],["amending",{"2":{"229":1}}],["amend",{"2":{"222":2}}],["amendment",{"2":{"222":1}}],["ambiguous",{"2":{"457":1,"460":1}}],["ambiguity",{"2":{"273":1,"2564":1}}],["amber80",{"2":{"211":1}}],["amux",{"2":{"249":1}}],["amj84",{"2":{"222":1}}],["amj",{"2":{"160":1}}],["amjpad",{"2":{"159":2}}],["amj96",{"2":{"159":2}}],["amj60",{"2":{"159":2}}],["amjkeyboard",{"2":{"159":4,"160":1,"222":1}}],["amj40",{"2":{"159":2}}],["ampr",{"2":{"2378":1,"2399":1}}],["ampersand",{"2":{"277":1,"2378":1,"2399":1}}],["amp",{"0":{"25":1,"471":1,"1298":1,"1359":1,"1665":1,"1820":1,"2719":1},"1":{"1360":1,"1361":1,"1362":1,"1363":1,"1821":1,"2720":1,"2721":1},"2":{"63":1,"72":1,"93":1,"114":5,"134":1,"149":1,"160":1,"190":1,"191":1,"199":2,"211":2,"249":1,"266":1,"636":1,"1242":4,"1300":2,"1364":1,"1399":1,"1447":2,"1467":2,"1557":1,"1670":1,"1725":2,"1820":1,"1913":1,"1946":2,"1949":1,"2267":1,"2347":1,"2355":1,"2356":1,"2378":1,"2386":1,"2399":1,"2468":2,"2572":1,"2753":1}}],["ahead",{"2":{"76":1,"453":1,"455":1,"2443":1,"2475":1}}],["apt",{"2":{"454":1,"2431":1,"2464":1}}],["apart",{"2":{"2117":1,"2272":1,"2279":1}}],["apa",{"2":{"222":1}}],["apa102",{"0":{"642":1,"646":1,"647":1,"649":1,"651":1,"652":1,"2675":1},"1":{"643":1,"644":1,"645":1,"646":1,"647":1,"648":2,"649":1,"650":2,"651":1,"652":1,"653":2},"2":{"75":1,"201":2,"211":1,"221":2,"234":2,"236":2,"249":2,"277":1,"642":1,"643":4,"644":3,"647":1,"648":1,"1945":1,"2031":1,"2032":7,"2675":2,"2694":1}}],["apm32",{"0":{"2240":1},"1":{"2241":1},"2":{"211":1,"222":1,"629":2,"2240":2}}],["apm32f103",{"2":{"134":1}}],["ap2",{"2":{"176":1}}],["aplyard",{"2":{"67":2,"72":1}}],["aplx6",{"2":{"67":3,"72":1}}],["apis",{"2":{"153":1,"236":1,"244":1,"643":1,"665":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1213":1,"2523":2,"2564":1,"2576":2,"2577":3}}],["api",{"0":{"220":1,"244":1,"306":1,"311":1,"318":1,"522":1,"645":1,"670":1,"706":1,"735":1,"761":1,"791":1,"825":1,"858":1,"892":1,"926":1,"960":1,"994":1,"1028":1,"1062":1,"1096":1,"1149":1,"1178":1,"1199":1,"1231":1,"1472":1,"1535":1,"1595":1,"1640":1,"1688":1,"1734":1,"1822":1,"1835":1,"1924":1,"1961":1,"2080":1,"2143":1,"2185":1,"2577":1,"2580":1},"1":{"307":1,"308":1,"309":1,"310":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"319":1,"320":1,"321":1,"523":1,"524":1,"525":1,"646":1,"647":1,"648":1,"649":1,"650":1,"651":1,"652":1,"653":1,"671":1,"672":1,"673":1,"674":1,"675":1,"676":1,"677":1,"678":1,"679":1,"680":1,"707":1,"708":1,"709":1,"710":1,"711":1,"712":1,"713":1,"714":1,"715":1,"716":1,"717":1,"718":1,"719":1,"720":1,"721":1,"722":1,"723":1,"724":1,"725":1,"726":1,"727":1,"728":1,"736":1,"737":1,"738":1,"739":1,"740":1,"741":1,"742":1,"743":1,"744":1,"745":1,"746":1,"747":1,"748":1,"749":1,"750":1,"751":1,"752":1,"753":1,"754":1,"762":1,"763":1,"764":1,"765":1,"766":1,"767":1,"768":1,"769":1,"770":1,"771":1,"772":1,"773":1,"774":1,"775":1,"776":1,"777":1,"778":1,"779":1,"780":1,"781":1,"782":1,"783":1,"792":1,"793":1,"794":1,"795":1,"796":1,"797":1,"798":1,"799":1,"800":1,"801":1,"802":1,"803":1,"804":1,"805":1,"806":1,"807":1,"808":1,"809":1,"810":1,"811":1,"812":1,"813":1,"814":1,"815":1,"826":1,"827":1,"828":1,"829":1,"830":1,"831":1,"832":1,"833":1,"834":1,"835":1,"836":1,"837":1,"838":1,"839":1,"840":1,"841":1,"842":1,"843":1,"844":1,"845":1,"846":1,"847":1,"859":1,"860":1,"861":1,"862":1,"863":1,"864":1,"865":1,"866":1,"867":1,"868":1,"869":1,"870":1,"871":1,"872":1,"873":1,"874":1,"875":1,"876":1,"877":1,"878":1,"879":1,"880":1,"881":1,"882":1,"893":1,"894":1,"895":1,"896":1,"897":1,"898":1,"899":1,"900":1,"901":1,"902":1,"903":1,"904":1,"905":1,"906":1,"907":1,"908":1,"909":1,"910":1,"911":1,"912":1,"913":1,"914":1,"915":1,"916":1,"927":1,"928":1,"929":1,"930":1,"931":1,"932":1,"933":1,"934":1,"935":1,"936":1,"937":1,"938":1,"939":1,"940":1,"941":1,"942":1,"943":1,"944":1,"945":1,"946":1,"947":1,"948":1,"949":1,"950":1,"961":1,"962":1,"963":1,"964":1,"965":1,"966":1,"967":1,"968":1,"969":1,"970":1,"971":1,"972":1,"973":1,"974":1,"975":1,"976":1,"977":1,"978":1,"979":1,"980":1,"981":1,"982":1,"983":1,"984":1,"995":1,"996":1,"997":1,"998":1,"999":1,"1000":1,"1001":1,"1002":1,"1003":1,"1004":1,"1005":1,"1006":1,"1007":1,"1008":1,"1009":1,"1010":1,"1011":1,"1012":1,"1013":1,"1014":1,"1015":1,"1016":1,"1017":1,"1018":1,"1029":1,"1030":1,"1031":1,"1032":1,"1033":1,"1034":1,"1035":1,"1036":1,"1037":1,"1038":1,"1039":1,"1040":1,"1041":1,"1042":1,"1043":1,"1044":1,"1045":1,"1046":1,"1047":1,"1048":1,"1049":1,"1050":1,"1051":1,"1052":1,"1063":1,"1064":1,"1065":1,"1066":1,"1067":1,"1068":1,"1069":1,"1070":1,"1071":1,"1072":1,"1073":1,"1074":1,"1075":1,"1076":1,"1077":1,"1078":1,"1079":1,"1080":1,"1081":1,"1082":1,"1083":1,"1084":1,"1085":1,"1086":1,"1097":1,"1098":1,"1099":1,"1100":1,"1101":1,"1102":1,"1103":1,"1104":1,"1105":1,"1106":1,"1107":1,"1108":1,"1109":1,"1110":1,"1111":1,"1112":1,"1113":1,"1114":1,"1115":1,"1116":1,"1117":1,"1118":1,"1119":1,"1120":1,"1150":1,"1151":1,"1152":1,"1153":1,"1154":1,"1155":1,"1156":1,"1157":1,"1158":1,"1159":1,"1160":1,"1161":1,"1162":1,"1163":1,"1164":1,"1165":1,"1166":1,"1167":1,"1168":1,"1169":1,"1170":1,"1171":1,"1172":1,"1173":1,"1179":1,"1180":1,"1181":1,"1182":1,"1183":1,"1184":1,"1185":1,"1186":1,"1187":1,"1188":1,"1189":1,"1190":1,"1191":1,"1192":1,"1193":1,"1194":1,"1200":1,"1201":1,"1202":1,"1203":1,"1204":1,"1205":1,"1206":1,"1207":1,"1208":1,"1209":1,"1210":1,"1211":1,"1232":1,"1233":1,"1473":1,"1474":1,"1475":1,"1476":1,"1477":1,"1478":1,"1479":1,"1480":1,"1481":1,"1482":1,"1483":1,"1484":1,"1485":1,"1486":1,"1487":1,"1488":1,"1489":1,"1536":1,"1537":1,"1538":1,"1539":1,"1540":1,"1541":1,"1542":1,"1543":1,"1544":1,"1545":1,"1546":1,"1596":1,"1597":1,"1598":1,"1599":1,"1600":1,"1601":1,"1602":1,"1603":1,"1604":1,"1605":1,"1606":1,"1607":1,"1608":1,"1609":1,"1610":1,"1611":1,"1612":1,"1613":1,"1614":1,"1615":1,"1616":1,"1617":1,"1618":1,"1619":1,"1620":1,"1621":1,"1622":1,"1623":1,"1624":1,"1625":1,"1626":1,"1627":1,"1628":1,"1629":1,"1641":1,"1642":1,"1643":1,"1644":1,"1645":1,"1646":1,"1647":1,"1648":1,"1649":1,"1650":1,"1651":1,"1652":1,"1653":1,"1654":1,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1695":1,"1696":1,"1697":1,"1698":1,"1699":1,"1700":1,"1701":1,"1702":1,"1703":1,"1704":1,"1705":1,"1706":1,"1707":1,"1708":1,"1709":1,"1710":1,"1711":1,"1712":1,"1713":1,"1735":1,"1736":1,"1737":1,"1738":1,"1739":1,"1740":1,"1741":1,"1742":1,"1743":1,"1744":1,"1745":1,"1746":1,"1747":1,"1748":1,"1749":1,"1750":1,"1751":1,"1752":1,"1753":1,"1754":1,"1755":1,"1756":1,"1757":1,"1758":1,"1759":1,"1760":1,"1761":1,"1762":1,"1763":1,"1764":1,"1765":1,"1766":1,"1767":1,"1768":1,"1769":1,"1770":1,"1771":1,"1772":1,"1773":1,"1774":1,"1775":1,"1776":1,"1777":1,"1778":1,"1779":1,"1780":1,"1781":1,"1782":1,"1783":1,"1784":1,"1785":1,"1836":1,"1837":1,"1838":1,"1839":1,"1840":1,"1841":1,"1842":1,"1843":1,"1844":1,"1845":1,"1846":1,"1847":1,"1848":1,"1849":1,"1850":1,"1851":1,"1852":1,"1925":1,"1926":1,"1927":1,"1928":1,"1962":1,"1963":1,"1964":1,"1965":1,"1966":1,"1967":1,"1968":1,"1969":1,"1970":1,"1971":1,"1972":1,"1973":1,"1974":1,"1975":1,"1976":1,"1977":1,"1978":1,"1979":1,"1980":1,"1981":1,"1982":1,"1983":1,"1984":1,"1985":1,"1986":1,"1987":1,"1988":1,"1989":1,"1990":1,"1991":1,"1992":1,"1993":1,"1994":1,"1995":1,"1996":1,"1997":1,"1998":1,"1999":1,"2000":1,"2001":1,"2002":1,"2003":1,"2004":1,"2005":1,"2006":1,"2007":1,"2008":1,"2009":1,"2010":1,"2011":1,"2012":1,"2013":1,"2014":1,"2015":1,"2016":1,"2017":1,"2018":1,"2019":1,"2020":1,"2021":1,"2022":1,"2023":1,"2024":1,"2025":1,"2026":1,"2027":1,"2028":1,"2029":1,"2030":1,"2081":1,"2082":1,"2083":1,"2084":1,"2085":1,"2086":1,"2087":1,"2088":1,"2089":1,"2090":1,"2091":1,"2092":1,"2093":1,"2094":1,"2095":1,"2096":1,"2097":1,"2098":1,"2099":1,"2100":1,"2101":1,"2186":1,"2187":1,"2188":1,"2189":1,"2190":1,"2191":1,"2192":1,"2193":1,"2194":1,"2195":1,"2196":1,"2197":1,"2198":1,"2199":1,"2200":1,"2201":1,"2202":1,"2203":1,"2204":1,"2205":1,"2206":1,"2207":1,"2208":1,"2209":1,"2210":1,"2211":1,"2212":1,"2213":1,"2214":1,"2215":1,"2216":1,"2217":1,"2218":1,"2219":1,"2220":1,"2221":1,"2222":1,"2223":1,"2224":1,"2581":1,"2582":1},"2":{"51":1,"95":2,"113":1,"114":3,"133":3,"134":4,"149":2,"160":2,"176":1,"182":1,"188":1,"191":5,"196":1,"199":3,"211":2,"218":1,"222":2,"230":1,"236":1,"244":2,"248":1,"249":2,"266":3,"277":2,"304":4,"306":1,"307":2,"311":2,"312":2,"314":1,"315":1,"317":1,"318":2,"319":2,"320":1,"321":2,"519":1,"522":4,"526":1,"527":1,"529":1,"533":1,"598":1,"606":1,"636":1,"643":1,"700":1,"1175":1,"1196":1,"1213":1,"1327":1,"1464":1,"1724":1,"1822":1,"1823":2,"1945":1,"2072":2,"2178":1,"2298":1,"2524":1,"2525":1,"2573":1,"2576":9,"2577":1,"2578":1,"2614":1,"2616":1,"2671":1,"2694":1,"2725":2}}],["apps",{"2":{"2183":2}}],["approvals",{"2":{"2569":1}}],["approximately",{"2":{"1807":1,"2226":1}}],["approaching",{"2":{"2551":1,"2552":1,"2701":1}}],["approaches",{"2":{"1265":1}}],["approach",{"2":{"660":1,"1303":1}}],["approachable",{"2":{"455":1,"479":1}}],["appropriately",{"2":{"562":1,"617":1,"684":1,"1894":1,"1897":1}}],["appropriate",{"2":{"36":2,"49":1,"191":1,"232":1,"331":1,"434":1,"477":1,"481":1,"554":1,"607":1,"609":1,"621":1,"1127":1,"1130":1,"1142":1,"1240":1,"1329":1,"1462":1,"1820":1,"1894":2,"1901":1,"2061":1,"2133":1,"2152":1,"2161":1,"2346":1,"2452":1,"2513":1,"2564":1,"2566":1,"2573":1,"2710":1,"2728":1}}],["appreciated",{"2":{"355":1}}],["app",{"0":{"307":1,"308":1,"309":1,"310":1,"319":1},"2":{"319":1,"1270":1,"1272":1,"2355":1,"2392":1,"2450":1,"2468":2}}],["apparently",{"2":{"293":2,"1491":1}}],["appearance",{"2":{"2270":1}}],["appear",{"2":{"317":1,"332":1,"625":1,"1427":1,"2615":1}}],["appears",{"2":{"50":1,"625":1,"626":1,"627":1,"629":1,"1273":1,"2344":1,"2347":1,"2512":2,"2529":1,"2556":1,"2566":1}}],["appended",{"2":{"2231":1,"2238":1}}],["appendix",{"0":{"1450":1},"1":{"1451":1,"1452":1}}],["appending",{"2":{"1312":1,"2309":1}}],["append",{"2":{"211":1,"2566":1,"2752":1}}],["apple",{"2":{"1278":3,"1279":2,"1283":2,"2462":1}}],["applies",{"2":{"454":1,"505":1,"1432":1,"1531":1,"1670":1,"1675":1,"1802":2,"1863":1,"1870":2,"1874":1,"1875":1,"1910":1,"2490":1,"2514":1,"2552":1,"2565":1,"2653":1}}],["applied",{"2":{"233":1,"341":2,"597":1,"1303":1,"1370":1,"1431":1,"1506":1,"1558":1,"1577":1,"1808":1,"2272":1,"2474":1,"2576":2,"2577":1,"2620":1,"2728":1}}],["applicable",{"2":{"199":1,"628":1,"1330":1,"1677":1,"2297":1,"2566":3,"2673":2,"2738":1}}],["application",{"2":{"182":1,"306":1,"311":1,"314":1,"319":1,"414":1,"415":1,"417":1,"423":1,"424":1,"519":1,"788":1,"1272":1,"1802":1,"2230":1,"2231":1,"2235":1,"2237":1,"2238":2,"2240":1,"2242":1,"2243":1,"2244":1,"2245":1,"2247":1,"2249":1,"2327":1,"2351":1,"2355":2,"2392":2,"2452":1,"2495":1}}],["applications",{"2":{"182":1,"1302":2,"1677":1,"2311":1,"2513":1,"2738":1}}],["apply",{"0":{"1447":1,"1448":1},"1":{"1448":1},"2":{"92":1,"199":1,"222":1,"285":1,"331":2,"335":1,"498":1,"663":1,"1220":1,"1224":1,"1226":1,"1229":1,"1230":1,"1302":1,"1326":2,"1336":1,"1346":1,"1412":1,"1431":1,"1447":1,"1448":3,"1464":1,"1467":1,"1469":1,"1470":1,"1506":1,"1518":1,"1942":2,"2046":1,"2106":1,"2107":2,"2272":2,"2411":1,"2525":1,"2566":1}}],["applying",{"2":{"21":1,"2107":1,"2272":1,"2474":3}}],["adherence",{"2":{"2719":1}}],["adhere",{"2":{"2440":1}}],["adheres",{"2":{"2272":1}}],["adhlns",{"2":{"134":1}}],["adequate",{"2":{"2266":1}}],["adelie",{"2":{"211":1}}],["adelais",{"2":{"134":6,"191":1}}],["adj",{"2":{"1813":3,"2137":3}}],["adjusting",{"2":{"1406":1,"1634":1,"1804":1}}],["adjusts",{"2":{"1401":1,"1638":1,"2038":2,"2145":1}}],["adjusted",{"2":{"820":1,"853":1,"887":1,"921":1,"955":1,"989":1,"1091":1,"2617":1}}],["adjustments",{"2":{"2728":1}}],["adjustment",{"0":{"1215":1},"2":{"236":1,"1897":1,"2038":1,"2136":1,"2688":2,"2694":3,"2695":4}}],["adjustable",{"2":{"134":1}}],["adjust",{"2":{"105":4,"149":2,"191":3,"198":1,"211":1,"266":1,"450":1,"556":1,"667":1,"821":1,"822":1,"854":1,"888":1,"922":1,"956":1,"990":1,"1024":1,"1058":1,"1092":1,"1226":1,"1227":1,"1332":1,"1343":1,"1401":1,"1549":2,"1803":1,"1804":1,"1805":1,"1874":1,"1875":1,"1880":1,"1897":1,"1899":1,"1950":1,"2043":1,"2064":2,"2145":1,"2172":2,"2173":2,"2174":4,"2175":6,"2541":1,"2604":4,"2606":2,"2728":1}}],["ad",{"2":{"758":1,"787":1,"819":1}}],["administrator",{"2":{"628":1,"2183":1}}],["adm42",{"2":{"226":2,"236":1}}],["advice",{"2":{"2564":1}}],["advised",{"2":{"1125":1,"1128":1,"1398":1,"2497":1}}],["adventurous",{"2":{"1518":1}}],["advertised",{"2":{"537":1}}],["advantageous",{"2":{"2584":1}}],["advantages",{"2":{"1125":1,"1128":1,"2492":1,"2503":1,"2508":1}}],["advantage",{"2":{"93":1,"606":1,"1672":1,"2324":1}}],["advances",{"2":{"1822":8,"2143":8}}],["advanced",{"0":{"602":1,"697":1,"1135":1,"1304":1,"1340":1,"1360":1,"1364":1,"1374":1,"1497":1,"1509":1,"1513":1,"1667":1,"1672":1,"1780":1,"1783":1,"1790":1,"1880":1,"1893":1,"1896":1,"2025":1,"2028":1,"2170":1,"2725":1},"1":{"603":1,"604":1,"1136":1,"1137":1,"1305":1,"1306":1,"1307":1,"1308":1,"1309":1,"1365":1,"1366":1,"1367":1,"1368":1,"1369":1,"1370":1,"1371":1,"1372":1,"1373":1,"1375":1,"1514":1,"1515":1,"1516":1,"1517":1,"1518":1,"1519":1,"1520":1,"1521":1,"1522":1,"1523":1,"1524":1,"1525":1,"1668":1,"1673":1,"1674":1,"1675":1,"1791":1,"1792":1,"1894":1,"1895":1,"1896":1,"1897":2,"1898":2,"1899":1},"2":{"49":1,"63":1,"93":1,"149":1,"249":1,"504":1,"505":1,"540":1,"547":1,"697":2,"1135":1,"1230":2,"1265":1,"1301":1,"1303":1,"1340":1,"1364":1,"1404":1,"1509":2,"1670":1,"1733":2,"1787":2,"1790":2,"1863":1,"1880":1,"1893":1,"1957":2,"1958":3,"1959":2,"2161":3,"2162":1,"2167":1,"2169":3,"2170":2,"2171":1,"2277":1,"2323":1,"2348":1,"2459":1,"2523":1,"2543":1,"2566":1,"2571":1,"2723":1,"2724":1,"2725":2,"2753":1}}],["advance",{"0":{"2720":1},"2":{"30":1,"33":1,"322":1,"334":1,"1822":3,"2143":3,"2720":1}}],["adopted",{"2":{"470":1}}],["adoption",{"2":{"128":1}}],["adkb96",{"2":{"253":2}}],["adpenrose",{"2":{"211":2}}],["ad65",{"2":{"211":1}}],["adns9800",{"0":{"273":1,"276":1},"2":{"118":1,"149":1,"273":3,"276":1,"277":1,"1856":6}}],["adns",{"0":{"1855":1,"1856":1},"2":{"118":2,"1855":2,"1856":2}}],["adns5050",{"2":{"118":1,"1855":4}}],["adcconfig",{"2":{"1863":5}}],["adc6",{"2":{"638":1}}],["adcrpenablets",{"2":{"636":1}}],["adcd1",{"2":{"636":2}}],["adc3",{"2":{"635":3}}],["adc2",{"2":{"635":2}}],["adc1",{"2":{"635":1,"639":1}}],["adcv3",{"2":{"635":1}}],["adcv1",{"2":{"635":1}}],["adcs",{"2":{"635":2,"639":2}}],["adc",{"0":{"630":1},"1":{"631":1,"632":1,"633":1,"634":1,"635":1,"636":1,"637":1,"638":1,"639":1,"640":1,"641":1},"2":{"93":1,"191":2,"234":2,"249":1,"630":1,"633":2,"635":7,"636":3,"638":5,"639":11,"641":12,"1634":2,"1635":1,"1636":1,"1637":2,"1857":1,"1863":5,"2531":1}}],["adb",{"2":{"75":1,"1279":2}}],["adalyn",{"2":{"143":2}}],["adafruitble",{"0":{"142":1},"2":{"142":1,"149":1}}],["adafruit",{"0":{"1317":1,"1492":1},"2":{"50":2,"133":1,"134":2,"142":1,"163":1,"176":3,"487":1,"629":3,"684":1,"685":1,"1315":1,"1318":1,"1321":1,"1491":1,"1492":4,"1573":1,"2335":1,"2339":1,"2344":3,"2541":1,"2566":1,"2709":1}}],["adapting",{"2":{"2309":1}}],["adapter",{"2":{"322":1,"2299":1}}],["adapted",{"2":{"179":1}}],["adapt",{"2":{"32":1,"191":1}}],["addenda",{"0":{"1498":1}}],["added",{"2":{"14":1,"49":8,"63":1,"67":1,"72":2,"74":1,"81":1,"82":1,"86":1,"93":1,"112":1,"114":2,"132":1,"134":1,"149":4,"153":1,"154":1,"158":1,"160":1,"173":1,"175":2,"176":8,"189":1,"191":2,"196":1,"201":1,"202":1,"203":1,"211":1,"222":2,"230":1,"231":1,"234":3,"236":3,"243":1,"249":2,"266":2,"277":1,"341":1,"393":1,"435":1,"450":1,"513":1,"554":1,"621":1,"1133":1,"1239":1,"1347":1,"1361":1,"1376":1,"1377":3,"1379":1,"1398":1,"1431":1,"1446":1,"1455":1,"1548":1,"1554":1,"1559":1,"1674":2,"1685":2,"1696":1,"1820":1,"1871":1,"1890":1,"2035":1,"2134":1,"2218":1,"2270":1,"2284":1,"2447":2,"2479":1,"2508":1,"2564":1,"2567":2,"2670":1}}],["addr2",{"2":{"851":1,"886":1,"1022":1,"1056":1,"1090":1}}],["addr1",{"2":{"851":1,"886":1,"1022":1,"1056":1,"1090":1}}],["addr",{"2":{"236":1,"684":1,"920":1,"954":1,"988":1,"1146":1,"1863":1,"2353":8}}],["addressed",{"2":{"685":1,"694":1}}],["addresses",{"2":{"236":1,"249":1,"671":1,"701":2,"736":1,"758":1,"762":1,"787":1,"792":1,"819":1,"826":1,"851":1,"859":1,"886":1,"893":1,"920":1,"927":1,"954":1,"961":1,"988":1,"995":1,"1022":1,"1029":1,"1056":1,"1063":1,"1090":1,"1097":1,"1146":1,"1150":1,"1934":1}}],["addressable",{"2":{"642":1,"1212":2,"2031":2}}],["addressing",{"0":{"701":1,"732":1,"758":1,"787":1,"819":1,"851":1,"886":1,"920":1,"954":1,"988":1,"1022":1,"1056":1,"1090":1,"1146":1},"2":{"198":1,"201":1,"213":1,"224":1,"238":1,"554":1,"701":1,"1821":1,"2059":1,"2286":1}}],["address",{"0":{"708":1,"711":1,"726":2,"1626":2,"1628":2},"1":{"709":1,"710":1,"712":1,"713":1,"727":2,"728":2,"1627":2,"1629":2},"2":{"50":1,"73":1,"114":2,"191":1,"236":1,"520":1,"521":1,"522":1,"554":1,"611":2,"672":3,"684":9,"685":1,"688":1,"694":2,"701":4,"709":2,"712":2,"714":1,"715":2,"717":1,"718":2,"720":1,"721":2,"723":1,"724":2,"726":2,"727":2,"732":2,"737":4,"740":1,"757":8,"758":5,"763":4,"767":1,"786":8,"787":5,"793":4,"797":1,"818":8,"819":5,"827":4,"831":1,"850":8,"851":17,"860":4,"864":1,"885":8,"886":17,"894":4,"898":1,"919":8,"920":5,"928":4,"932":1,"953":8,"954":5,"962":4,"966":1,"987":8,"988":5,"996":4,"1000":1,"1021":8,"1022":17,"1030":4,"1034":1,"1055":8,"1056":17,"1064":4,"1068":1,"1089":8,"1090":17,"1098":4,"1102":1,"1145":8,"1146":5,"1151":4,"1155":1,"1220":2,"1355":1,"1621":2,"1626":1,"1627":2,"1628":1,"1629":2,"1818":2,"1821":1,"1859":2,"1863":1,"1868":2,"2289":1,"2351":1,"2353":1,"2533":1,"2576":2,"2700":2}}],["additive",{"0":{"658":1,"1393":1},"2":{"222":3,"236":2,"249":1,"656":1,"660":2,"663":1,"1390":1,"1393":2,"1397":1,"2676":1}}],["addition",{"2":{"114":1,"176":1,"194":1,"211":34,"249":1,"1300":1,"1341":1,"1360":1,"1526":1,"1666":1,"1722":1,"1733":1,"1957":1,"2060":1,"2106":1,"2146":1,"2161":1,"2276":1,"2395":1,"2721":1,"2729":2}}],["additionally",{"2":{"67":1,"86":1,"175":1,"209":1,"262":1,"529":1,"592":1,"657":1,"658":1,"1262":1,"1331":1,"1332":1,"1379":1,"1380":1,"1398":1,"1412":1,"1439":1,"1442":1,"1447":1,"1495":1,"1549":1,"1556":1,"1557":1,"1558":1,"1567":1,"1660":1,"1661":1,"1662":1,"1791":1,"1865":1,"1876":1,"1885":1,"2171":1,"2228":1,"2231":1,"2238":1,"2351":1,"2398":1,"2411":1,"2441":1,"2490":1,"2569":1,"2617":1}}],["additional",{"0":{"535":1,"1730":1,"1891":1,"1909":1,"1943":1,"1954":1,"2134":1,"2419":1,"2520":1,"2560":1},"1":{"1892":1,"1910":1,"1911":1,"1912":1,"1913":1,"1914":1,"1915":1,"1916":1,"1917":1,"2521":1,"2522":1,"2561":1,"2562":1},"2":{"50":1,"86":2,"94":1,"114":1,"134":1,"176":1,"189":1,"191":3,"198":1,"201":1,"210":1,"211":1,"213":1,"236":1,"429":1,"496":1,"564":1,"641":1,"1138":1,"1142":1,"1251":1,"1262":1,"1319":1,"1323":1,"1324":1,"1325":1,"1335":1,"1341":1,"1364":1,"1377":2,"1447":1,"1449":1,"1453":1,"1497":3,"1554":1,"1556":1,"1589":1,"1659":1,"1662":1,"1728":1,"1808":1,"1820":1,"1855":1,"1867":1,"1869":1,"1874":2,"1884":1,"1885":1,"1890":1,"1895":1,"1898":1,"1929":1,"1933":1,"1936":1,"1943":1,"1949":2,"2032":1,"2036":1,"2037":1,"2114":1,"2128":1,"2129":1,"2170":1,"2177":1,"2178":1,"2230":1,"2235":1,"2238":1,"2262":1,"2280":1,"2284":1,"2299":1,"2302":3,"2416":1,"2564":1,"2606":1,"2702":1,"2703":1,"2749":1,"2753":2}}],["additions",{"0":{"49":1,"63":1,"74":1,"93":1},"2":{"149":1,"211":147,"222":1,"236":1,"249":1,"2257":1}}],["adding",{"0":{"14":1,"528":1,"608":1,"1799":1,"1890":1,"2445":1,"2446":1,"2550":1,"2551":1,"2552":1,"2553":1,"2753":1},"1":{"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"1800":1,"1801":1,"1891":1,"1892":1,"2554":1,"2555":1,"2556":1,"2557":1,"2558":1,"2559":1,"2560":1,"2561":1,"2562":1},"2":{"74":1,"86":1,"99":1,"114":1,"173":1,"201":1,"213":1,"236":1,"249":1,"266":1,"277":1,"370":1,"441":1,"533":1,"537":1,"570":1,"608":1,"609":1,"613":1,"669":1,"688":1,"734":1,"760":1,"790":1,"820":1,"824":1,"853":1,"857":1,"887":1,"891":1,"921":1,"925":1,"955":1,"959":1,"989":1,"993":1,"1027":1,"1061":1,"1091":1,"1095":1,"1148":1,"1216":1,"1264":1,"1265":1,"1276":1,"1320":1,"1329":1,"1335":1,"1359":2,"1393":1,"1414":1,"1430":1,"1446":1,"1501":1,"1503":1,"1508":1,"1527":1,"1547":1,"1554":1,"1557":1,"1682":1,"1787":1,"1813":1,"1871":1,"1890":1,"1891":2,"1895":1,"1917":1,"1920":1,"1932":1,"2031":1,"2124":1,"2125":1,"2129":1,"2137":1,"2161":1,"2182":1,"2225":1,"2255":2,"2263":1,"2280":1,"2443":1,"2480":1,"2491":1,"2513":1,"2544":1,"2546":1,"2550":2,"2566":1,"2567":2,"2576":10,"2703":1,"2704":2,"2727":1,"2735":1,"2736":1,"2753":1,"2757":2}}],["add",{"0":{"35":1,"163":1,"173":1,"393":1,"609":1,"610":1,"613":1,"614":1,"1263":1,"1694":1,"1837":1,"1892":1,"2216":1,"2436":1,"2437":1},"1":{"36":1,"611":1,"612":1,"1264":1,"1695":1,"1696":1,"1838":1,"2217":1,"2218":1},"2":{"28":1,"31":1,"32":2,"34":2,"49":4,"63":5,"65":4,"70":1,"74":5,"76":2,"77":2,"92":1,"93":24,"110":2,"114":38,"119":1,"123":1,"130":2,"133":2,"134":26,"149":21,"160":21,"175":1,"176":33,"189":4,"190":1,"191":27,"199":25,"202":2,"211":25,"221":1,"222":18,"235":1,"236":30,"249":23,"266":15,"273":1,"277":7,"282":6,"341":1,"349":1,"358":1,"359":1,"393":2,"436":1,"446":1,"450":1,"451":1,"453":1,"481":1,"513":2,"528":1,"530":1,"534":1,"537":1,"554":4,"564":2,"565":2,"566":2,"588":2,"607":6,"609":1,"610":1,"613":1,"614":1,"621":2,"631":1,"643":1,"644":1,"665":1,"666":1,"667":1,"700":1,"730":1,"731":1,"756":1,"757":1,"785":1,"786":1,"788":1,"817":1,"818":1,"821":1,"822":1,"849":1,"850":1,"854":1,"855":1,"884":1,"885":1,"888":1,"889":1,"918":1,"919":1,"922":1,"923":1,"952":1,"953":1,"956":1,"957":1,"986":1,"987":1,"990":1,"991":1,"1020":1,"1021":1,"1024":1,"1025":1,"1054":1,"1055":1,"1058":1,"1059":1,"1088":1,"1089":1,"1092":1,"1093":1,"1124":1,"1132":2,"1133":2,"1138":1,"1142":1,"1144":1,"1145":1,"1175":1,"1196":1,"1213":1,"1214":1,"1217":1,"1225":1,"1227":1,"1228":1,"1234":1,"1245":1,"1252":1,"1253":1,"1278":1,"1284":1,"1294":1,"1300":3,"1312":1,"1314":1,"1316":1,"1330":1,"1332":4,"1344":1,"1355":1,"1359":1,"1375":1,"1377":4,"1378":1,"1379":1,"1383":3,"1384":2,"1385":7,"1386":1,"1390":1,"1391":1,"1397":1,"1398":1,"1403":2,"1405":2,"1406":1,"1413":1,"1416":3,"1423":1,"1430":1,"1431":1,"1435":1,"1439":1,"1447":1,"1457":1,"1458":1,"1459":1,"1493":1,"1495":1,"1496":1,"1497":1,"1500":3,"1506":2,"1508":1,"1511":1,"1527":1,"1532":1,"1548":1,"1553":1,"1555":1,"1556":1,"1559":2,"1590":1,"1591":1,"1593":1,"1635":1,"1657":1,"1679":2,"1683":1,"1684":1,"1685":1,"1694":1,"1695":1,"1724":1,"1729":2,"1789":1,"1790":1,"1800":1,"1812":1,"1825":1,"1830":2,"1833":1,"1853":1,"1855":1,"1856":1,"1857":1,"1858":1,"1862":1,"1867":1,"1868":1,"1869":1,"1870":2,"1884":1,"1895":1,"1916":1,"1919":1,"1930":1,"1932":1,"1933":1,"1945":1,"1951":1,"1952":2,"1953":1,"2032":1,"2037":1,"2045":1,"2046":1,"2058":1,"2068":1,"2073":1,"2074":1,"2078":1,"2109":1,"2121":2,"2124":1,"2125":2,"2126":1,"2127":2,"2129":1,"2130":1,"2131":1,"2133":1,"2137":1,"2145":2,"2146":1,"2147":1,"2148":1,"2149":1,"2164":3,"2169":3,"2170":2,"2171":1,"2172":1,"2174":1,"2178":1,"2179":1,"2180":1,"2181":4,"2182":1,"2183":3,"2216":1,"2217":1,"2231":1,"2238":1,"2255":3,"2262":2,"2276":1,"2309":1,"2348":1,"2414":1,"2423":1,"2424":1,"2437":1,"2438":2,"2446":4,"2474":2,"2477":2,"2479":3,"2480":5,"2508":1,"2539":1,"2542":1,"2566":1,"2573":1,"2574":1,"2577":4,"2579":1,"2584":1,"2601":1,"2606":2,"2608":1,"2702":1,"2703":2,"2706":2,"2708":1,"2711":1,"2727":2,"2728":1,"2735":2,"2736":2,"2737":3,"2738":3,"2753":2,"2755":1,"2757":7}}],["adds",{"2":{"13":1,"35":1,"49":2,"50":1,"74":1,"107":1,"114":1,"173":1,"222":1,"229":1,"249":1,"277":1,"384":1,"393":1,"506":1,"1385":1,"1406":1,"1451":1,"2130":1,"2145":1,"2161":1,"2230":1,"2480":1,"2513":1}}],["agin",{"2":{"2355":1,"2392":1}}],["age",{"2":{"1325":1}}],["ag",{"2":{"1300":1,"1398":4,"1399":8,"2370":7,"2396":7}}],["agaim",{"2":{"592":1}}],["again",{"2":{"114":1,"134":1,"149":1,"340":1,"504":1,"537":1,"627":2,"1243":1,"1375":1,"1396":1,"1411":1,"1439":1,"1452":1,"1524":1,"1534":1,"1553":2,"1630":2,"1632":1,"1665":1,"1671":1,"1674":1,"1675":1,"1886":1,"1937":1,"1940":2,"2044":1,"2128":1,"2161":1,"2162":1,"2234":1,"2261":1,"2311":1,"2353":1,"2355":4,"2366":1,"2392":4,"2467":1,"2490":1,"2566":1}}],["against",{"2":{"26":1,"49":1,"51":1,"134":1,"176":1,"251":1,"263":1,"265":2,"275":1,"343":1,"349":1,"350":1,"400":2,"435":1,"530":1,"684":1,"1441":1,"2259":1,"2272":1,"2347":1,"2474":1,"2563":1,"2568":1,"2667":1,"2719":1,"2748":1}}],["agreed",{"2":{"204":1,"2546":1}}],["agnostic",{"0":{"1350":1},"1":{"1351":1,"1352":1},"2":{"17":1,"114":1,"695":1,"1352":1}}],["abab",{"0":{"2733":1}}],["abba",{"0":{"2732":1}}],["abbreviate",{"2":{"460":1}}],["abbreviations",{"2":{"460":1,"1499":1}}],["abbreviation",{"2":{"460":1,"2533":1}}],["abuse",{"2":{"2566":1}}],["abuser",{"2":{"562":1}}],["ab5",{"2":{"1793":1,"2371":1}}],["ab4",{"2":{"1793":1,"2371":1}}],["ab3",{"2":{"1793":1,"2371":1}}],["ab375d3",{"2":{"74":1}}],["ab2",{"2":{"1793":1,"2371":1}}],["ab1",{"2":{"1793":1,"2371":1}}],["ab",{"2":{"1511":4,"1523":5,"1527":1,"1793":1,"2371":1,"2731":6,"2732":1,"2733":4}}],["abcd",{"2":{"266":1,"1254":2}}],["abcminiuser",{"2":{"12":1}}],["abort",{"2":{"2474":2}}],["aborted",{"2":{"703":1}}],["above",{"2":{"228":1,"233":1,"266":1,"276":1,"317":1,"349":1,"352":1,"366":1,"432":1,"454":1,"458":1,"530":1,"532":1,"560":1,"588":1,"597":1,"598":1,"613":1,"694":1,"698":2,"1215":1,"1255":1,"1271":1,"1287":1,"1332":5,"1335":1,"1338":1,"1363":1,"1385":1,"1416":2,"1451":4,"1464":1,"1518":1,"1573":1,"1715":1,"1794":1,"1859":1,"1864":1,"1871":1,"1873":1,"1875":1,"1897":1,"1899":1,"1932":1,"1941":1,"2043":1,"2044":1,"2051":1,"2107":2,"2128":1,"2133":1,"2155":1,"2161":1,"2170":1,"2171":4,"2181":1,"2183":1,"2230":1,"2261":1,"2268":2,"2299":1,"2303":1,"2350":1,"2353":1,"2403":1,"2421":1,"2438":1,"2450":1,"2469":1,"2513":2,"2521":1,"2548":1,"2553":1,"2559":1,"2566":1,"2567":1,"2576":2,"2577":4,"2588":1,"2589":1,"2728":1,"2734":3,"2735":3,"2736":1,"2746":1,"2747":1,"2748":1}}],["about",{"2":{"49":1,"50":1,"93":1,"110":1,"114":1,"160":1,"176":1,"240":1,"251":1,"315":1,"347":1,"352":1,"378":2,"481":2,"492":1,"511":6,"512":1,"519":1,"551":2,"554":2,"560":1,"561":1,"567":2,"573":1,"585":1,"606":1,"701":1,"1237":1,"1244":1,"1264":1,"1266":1,"1301":1,"1312":1,"1335":1,"1450":1,"1553":1,"1803":1,"1821":2,"1830":2,"1863":1,"1943":1,"2039":1,"2114":1,"2128":6,"2152":3,"2255":1,"2267":1,"2276":1,"2305":1,"2355":1,"2407":1,"2418":1,"2440":1,"2509":1,"2513":1,"2566":2,"2578":1,"2671":2,"2672":1,"2723":1,"2724":1,"2748":2}}],["abstracted",{"2":{"2523":1}}],["abstracting",{"2":{"2263":2}}],["abstraction",{"2":{"249":1,"277":1,"695":1,"697":1,"1724":1,"1945":1,"2546":1,"2564":1,"2644":1}}],["abstractions",{"2":{"244":1,"2564":2}}],["absence",{"2":{"657":1,"1122":1}}],["absent",{"2":{"374":2,"2688":1,"2694":1,"2695":1}}],["absinthe",{"2":{"159":2}}],["absolutely",{"2":{"2276":1,"2566":1}}],["absolute",{"0":{"1864":1,"1865":1},"2":{"100":1,"114":1,"405":1,"1531":1,"1545":1,"1863":4,"2111":1,"2347":1,"2686":4}}],["abelx",{"2":{"134":1}}],["ability",{"2":{"49":2,"65":1,"93":1,"100":1,"114":1,"131":1,"134":1,"153":1,"160":1,"164":1,"173":1,"174":1,"176":1,"199":1,"506":1,"596":1,"703":1,"1130":1,"1302":2,"1334":1,"1554":1,"2031":1,"2035":1,"2130":1,"2131":1,"2513":1,"2718":1,"2719":1,"2737":3}}],["able",{"2":{"23":1,"50":1,"114":1,"153":2,"228":1,"350":1,"441":1,"537":1,"542":1,"554":1,"560":1,"567":1,"570":1,"627":1,"1243":1,"1326":1,"1331":1,"1348":1,"1353":1,"1376":1,"1454":1,"1573":2,"1633":1,"1655":1,"1672":1,"1684":1,"1787":1,"1880":1,"1912":1,"1921":1,"2032":1,"2061":1,"2146":1,"2150":1,"2157":1,"2162":1,"2171":1,"2228":1,"2229":1,"2245":1,"2247":1,"2249":1,"2255":1,"2312":1,"2450":1,"2457":1,"2469":1,"2494":1,"2495":1,"2513":1,"2548":2,"2549":1,"2576":1,"2605":1,"2710":1,"2723":1,"2725":1,"2755":1}}],["abnt2",{"2":{"5":1,"1355":1,"2712":2}}],["acl2",{"2":{"1801":1,"1805":7,"1806":2,"2372":1}}],["acl1",{"2":{"1801":1,"1805":8,"1806":2,"2372":1}}],["acl0",{"2":{"1801":1,"1805":7,"1806":2,"2372":1}}],["achievable",{"2":{"2718":1}}],["achieved",{"2":{"1821":1,"2577":1,"2710":1}}],["achieve",{"2":{"1666":1,"2064":1,"2169":1,"2268":1,"2270":1,"2576":1}}],["acheron",{"2":{"211":2}}],["acm=y",{"2":{"1240":1}}],["acm",{"2":{"1240":1}}],["acknowledge",{"2":{"506":1,"2044":1}}],["acquire",{"2":{"277":1,"2252":1}}],["ac",{"2":{"236":1,"1359":1,"1439":1,"1442":1,"1443":3,"2079":1,"2359":3}}],["acid",{"2":{"211":1}}],["acid3",{"2":{"143":13,"149":2}}],["acr60",{"0":{"256":1},"1":{"257":1,"258":1,"259":1,"260":1},"2":{"143":2,"256":1,"266":1}}],["across",{"2":{"31":1,"34":1,"118":1,"128":1,"137":1,"138":1,"167":1,"246":1,"262":1,"695":1,"1451":1,"1594":1,"2177":1,"2735":1}}],["accident",{"2":{"2728":1}}],["accidental",{"2":{"246":1,"1368":1,"1514":1,"1520":1}}],["accidentally",{"2":{"194":1,"198":1,"627":1,"1921":1,"2305":1}}],["accumulates",{"2":{"2044":1}}],["accumulate",{"2":{"1880":1}}],["accumulated",{"2":{"1880":13}}],["accuracy",{"2":{"1806":1,"2144":1}}],["accurately",{"2":{"1725":1,"1946":1,"2556":1}}],["accurate",{"2":{"10":1,"1125":1,"1128":1,"1217":1,"2226":1,"2311":1}}],["accomidate",{"2":{"1399":1}}],["accompanying",{"2":{"2567":1}}],["accompanied",{"2":{"118":1,"1414":1,"2721":1}}],["accomplish",{"2":{"1312":1,"1336":1,"2162":1,"2411":1,"2418":1}}],["accomplished",{"2":{"540":1}}],["accommodate",{"2":{"149":1,"1515":1}}],["accounted",{"2":{"1215":1}}],["account",{"2":{"149":1,"211":1,"222":1,"554":2,"2255":2,"2306":1,"2351":1,"2429":2,"2432":1,"2443":1,"2472":2}}],["according",{"2":{"134":2,"638":1,"639":1,"1832":1,"1950":1,"2300":1,"2436":1,"2454":1}}],["accordingly",{"2":{"126":1,"220":1,"278":1,"852":1,"1023":1,"1057":1,"2171":1,"2299":1,"2541":1,"2550":1}}],["accented",{"2":{"2711":1}}],["accel",{"2":{"1805":3}}],["accelerating",{"2":{"1804":1}}],["acceleration",{"2":{"48":2,"1801":6,"1802":1,"1803":4,"1804":3,"1805":1,"1806":4,"1807":1,"1808":4,"1917":1,"2372":6}}],["accelerate",{"2":{"2273":1,"2749":1}}],["accelerates",{"2":{"1802":4,"1807":1}}],["accelerated",{"0":{"1803":1},"2":{"1802":1,"1803":1,"1804":5,"1806":2,"1807":1}}],["accel2",{"2":{"231":1}}],["accessor",{"2":{"2577":2}}],["accessible",{"2":{"1270":1,"2276":1}}],["accessing",{"2":{"317":1,"1300":1,"2463":1,"2577":2}}],["accessed",{"2":{"501":1,"1300":1}}],["accesses",{"2":{"114":1}}],["access",{"2":{"222":1,"240":1,"328":1,"430":2,"433":1,"436":4,"441":1,"479":1,"597":1,"611":2,"633":1,"695":1,"1254":1,"1331":1,"1353":1,"1555":1,"1668":1,"1791":1,"2262":4,"2396":1,"2432":1,"2438":2,"2506":1,"2510":2,"2566":1,"2605":2,"2728":2}}],["acceptable",{"2":{"2564":1,"2566":1}}],["acceptance",{"2":{"341":1}}],["accepts",{"2":{"340":1,"374":1,"405":1,"522":1,"2575":1,"2577":2}}],["accepted",{"2":{"201":1,"265":1,"341":1,"550":1,"556":1,"1376":1,"2565":1,"2566":3}}],["accepting",{"2":{"199":1,"213":1,"224":1,"549":1,"1265":1,"2303":1,"2551":1,"2552":1}}],["accept",{"2":{"173":1,"453":1,"1335":1,"1615":1,"2075":1,"2255":1,"2263":1,"2307":1,"2347":1,"2410":1,"2566":1}}],["acts",{"2":{"2367":1,"2410":1,"2654":1}}],["actor",{"2":{"2437":3}}],["acto",{"2":{"2133":1}}],["act",{"2":{"681":1,"1300":1,"1499":1,"1895":1,"1932":1,"2168":1,"2311":1,"2479":1,"2490":2}}],["actuators",{"2":{"1577":1}}],["actuated",{"2":{"1573":4,"2279":1}}],["actuation",{"2":{"236":1,"1573":1}}],["actual",{"2":{"305":1,"335":1,"571":1,"573":1,"592":1,"1293":1,"1302":1,"1720":1,"1815":1,"1863":1,"1921":1,"2060":1,"2139":1,"2152":1,"2315":1,"2317":1,"2327":1,"2341":1,"2699":1,"2745":1,"2751":1}}],["actually",{"2":{"13":1,"28":1,"51":1,"83":1,"182":1,"396":1,"484":1,"527":1,"556":1,"635":1,"685":1,"689":1,"1260":1,"1267":1,"1272":1,"1278":1,"1283":1,"1325":1,"1336":1,"1383":1,"1384":1,"1442":1,"1821":1,"1876":1,"2072":1,"2075":1,"2118":1,"2119":1,"2152":1,"2169":1,"2279":2,"2315":1,"2318":2,"2348":1,"2550":1,"2602":1,"2614":1,"2710":2,"2728":1,"2740":1,"2757":1}}],["activating",{"2":{"246":1,"1335":1,"1671":3,"1885":1,"1917":1,"2535":1,"2737":1}}],["activation",{"0":{"246":1,"1519":1,"1673":1,"1900":1},"2":{"152":1,"246":1,"1302":1,"1303":1,"1368":1,"1500":1,"1573":2,"1668":1,"1670":1,"1671":3,"1673":1,"1889":2,"1894":2,"1900":6,"1901":1,"2113":2}}],["activates",{"2":{"1335":6,"1340":1,"1359":1,"1507":1,"1659":1,"1668":1,"1872":1,"2172":1,"2367":1,"2407":1,"2539":1}}],["activate",{"0":{"1886":1},"2":{"194":2,"211":1,"556":1,"1124":1,"1127":1,"1130":1,"1132":2,"1133":2,"1235":1,"1335":1,"1340":1,"1386":1,"1499":1,"1500":6,"1501":1,"1510":2,"1517":1,"1518":2,"1519":1,"1521":1,"1523":1,"1530":1,"1582":2,"1655":1,"1661":1,"1665":2,"1670":3,"1671":1,"1673":4,"1885":3,"1900":1,"2113":3,"2146":1,"2183":1,"2408":1,"2410":1,"2490":1,"2539":1,"2605":1,"2645":1,"2680":2,"2728":1,"2737":1}}],["activated",{"2":{"73":1,"236":1,"1335":4,"1340":1,"1359":1,"1398":1,"1399":2,"1459":1,"1501":1,"1515":1,"1522":1,"1523":1,"1573":1,"1670":3,"1673":1,"1805":1,"1900":1,"2046":1,"2311":1,"2539":1,"2541":1}}],["actively",{"2":{"2409":1}}],["active",{"0":{"1693":1,"1898":1,"2212":1},"1":{"2213":1},"2":{"105":8,"149":1,"191":1,"199":1,"249":1,"537":1,"1300":3,"1302":2,"1303":2,"1335":4,"1338":1,"1340":2,"1341":2,"1345":1,"1364":1,"1375":5,"1397":1,"1446":2,"1499":1,"1504":1,"1506":1,"1507":3,"1524":1,"1549":7,"1570":4,"1573":3,"1579":1,"1582":1,"1670":3,"1693":1,"1805":2,"1872":3,"1880":2,"1885":1,"1889":1,"1892":1,"1894":2,"1897":2,"1900":2,"1901":1,"1929":1,"1933":1,"2041":1,"2042":4,"2112":1,"2113":4,"2129":1,"2131":1,"2162":2,"2171":3,"2187":1,"2212":1,"2213":1,"2367":1,"2403":2,"2408":1,"2414":1,"2490":1,"2491":1,"2644":1,"2699":1}}],["activity",{"2":{"74":2,"211":2,"249":1,"588":5,"2067":1,"2071":2,"2129":3,"2518":1,"2688":1,"2695":1,"2697":2}}],["acting",{"2":{"14":1,"2610":1}}],["actioned",{"2":{"16":1}}],["actions",{"0":{"3":1,"7":1,"15":1,"1801":1,"2448":1},"2":{"3":2,"7":3,"15":2,"16":1,"38":1,"114":2,"134":2,"247":1,"340":1,"347":1,"355":1,"515":1,"520":1,"521":1,"1275":1,"1325":1,"1332":1,"1357":1,"1464":1,"1508":1,"1511":1,"1655":2,"1670":2,"1677":1,"1799":1,"1801":1,"1826":1,"2066":1,"2161":3,"2164":1,"2166":1,"2167":1,"2168":2,"2169":1,"2170":1,"2171":3,"2313":1,"2402":1,"2429":1,"2437":3,"2439":1,"2440":1,"2441":1,"2442":1,"2446":1,"2448":1,"2462":1,"2502":1,"2571":1,"2729":1,"2738":1}}],["action",{"0":{"3":1,"7":1,"15":1,"40":1,"53":1,"67":1,"72":1,"85":1,"101":1,"121":1,"139":1,"140":1,"155":1,"165":1,"180":1,"193":1,"205":1,"216":1,"225":1,"239":1,"252":1,"269":1,"2154":1,"2437":1},"1":{"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"86":1,"87":1,"88":1,"89":1,"90":1,"102":1,"103":1,"104":1,"105":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"140":1,"141":1,"142":1,"143":1,"156":1,"157":1,"158":1,"159":1,"166":1,"167":1,"168":1,"169":1,"170":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"194":1,"195":1,"196":1,"197":1,"206":1,"207":1,"217":1,"218":1,"219":1,"220":1,"221":1,"226":1,"240":1,"241":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"270":1,"271":1,"272":1,"273":1,"2155":1,"2156":1,"2157":1,"2158":1},"2":{"16":1,"38":9,"49":1,"75":2,"120":7,"140":1,"149":2,"199":6,"203":1,"211":1,"291":1,"352":3,"428":1,"503":3,"505":1,"506":1,"520":1,"529":1,"546":1,"627":1,"1340":1,"1354":7,"1357":9,"1385":1,"1431":2,"1446":3,"1508":1,"1511":3,"1527":2,"1633":1,"1668":1,"1670":2,"1676":1,"1677":2,"1802":1,"1803":1,"1805":4,"1929":1,"1932":1,"1934":1,"2044":1,"2154":2,"2161":12,"2162":2,"2164":2,"2166":2,"2167":4,"2168":9,"2169":6,"2170":2,"2171":4,"2401":5,"2406":1,"2428":1,"2508":1,"2651":1,"2702":2,"2703":2,"2705":1,"2729":6,"2735":7,"2736":5,"2738":2,"2749":1}}],["averages",{"2":{"2569":1}}],["average",{"2":{"2225":1,"2226":2,"2727":1}}],["avail",{"2":{"2450":1}}],["availability",{"2":{"624":1,"2566":1}}],["available",{"0":{"1210":1,"2285":1},"1":{"1211":1,"2286":1,"2287":1,"2288":1,"2289":1,"2290":1,"2291":1},"2":{"10":1,"73":1,"83":1,"124":2,"153":1,"160":1,"164":1,"186":1,"189":1,"202":1,"210":1,"211":1,"213":1,"232":2,"235":1,"308":1,"315":1,"317":1,"349":1,"371":1,"375":1,"385":1,"411":3,"429":1,"451":1,"497":1,"511":4,"516":1,"519":1,"526":1,"556":1,"606":1,"609":1,"624":1,"641":1,"654":1,"656":1,"684":1,"685":1,"689":2,"732":1,"1121":1,"1125":1,"1130":1,"1134":1,"1140":1,"1141":1,"1142":1,"1195":1,"1234":1,"1246":1,"1249":1,"1265":1,"1267":2,"1270":1,"1311":1,"1319":1,"1325":1,"1355":1,"1377":1,"1384":1,"1397":1,"1398":2,"1402":1,"1403":2,"1406":1,"1445":1,"1512":1,"1570":2,"1662":1,"1728":1,"1824":1,"1871":1,"1873":1,"1875":1,"1902":1,"1908":1,"1912":1,"1949":1,"2063":1,"2149":1,"2225":2,"2229":1,"2230":1,"2232":1,"2233":1,"2234":1,"2235":1,"2238":1,"2239":1,"2241":1,"2244":1,"2245":2,"2247":2,"2249":2,"2262":2,"2272":1,"2278":1,"2295":1,"2297":1,"2303":1,"2319":1,"2327":1,"2346":1,"2354":1,"2451":1,"2459":1,"2468":1,"2514":1,"2526":1,"2543":1,"2555":1,"2561":1,"2562":1,"2566":1,"2577":6,"2706":1,"2711":1}}],["avalon",{"2":{"211":1}}],["avoids",{"2":{"1344":1,"2428":1}}],["avoided",{"0":{"2517":1},"2":{"472":1,"473":1,"478":1,"617":1,"2517":3,"2521":1,"2577":1}}],["avoiding",{"0":{"1441":1},"2":{"282":3,"341":1,"1340":1}}],["avoid",{"0":{"461":1},"2":{"34":1,"114":2,"176":1,"191":1,"195":1,"271":1,"435":1,"457":1,"469":1,"477":1,"556":1,"606":1,"616":1,"1254":1,"1331":1,"1337":1,"1341":2,"1398":1,"1471":1,"1499":1,"1560":1,"1594":1,"1822":1,"1876":1,"1894":1,"1898":2,"1921":1,"2226":1,"2276":3,"2428":1,"2497":1,"2745":1}}],["avrisp",{"2":{"2329":1,"2333":1,"2347":1}}],["avr109",{"2":{"2233":3}}],["avr8",{"2":{"514":1}}],["avrdudess",{"2":{"2233":1,"2236":1}}],["avrdude",{"2":{"236":1,"509":2,"1385":1,"2126":3,"2233":3,"2234":6,"2236":2,"2262":1,"2329":2,"2331":2,"2333":2,"2335":3,"2337":2,"2339":2,"2341":2,"2347":19,"2348":2}}],["avrs",{"2":{"160":1,"2230":1,"2702":1}}],["avr",{"0":{"123":1,"487":1,"514":1,"633":1,"638":1,"655":1,"702":1,"1176":1,"1197":1,"1387":1,"1465":1,"1905":1,"2286":1,"2623":1,"2701":1},"1":{"1388":1,"1466":1,"1467":1,"2702":1,"2703":1,"2704":1,"2705":1,"2706":1,"2707":1,"2708":1},"2":{"2":1,"28":2,"74":1,"111":1,"113":1,"114":5,"123":2,"130":1,"134":3,"149":3,"153":2,"160":4,"166":1,"172":1,"176":5,"191":2,"199":1,"211":1,"215":2,"222":2,"266":2,"486":3,"511":2,"552":1,"560":1,"630":2,"655":1,"681":2,"696":2,"697":2,"1121":1,"1177":1,"1219":2,"1290":1,"1312":2,"1316":1,"1317":1,"1491":1,"1492":1,"1636":1,"1811":4,"1821":1,"1822":2,"2114":2,"2115":1,"2126":3,"2128":1,"2229":1,"2236":1,"2237":1,"2263":1,"2286":1,"2310":1,"2327":1,"2335":1,"2341":1,"2347":2,"2348":3,"2462":1,"2492":1,"2496":1,"2501":1,"2539":1,"2573":1,"2623":1,"2638":1,"2655":1,"2664":1,"2701":2,"2718":1,"2724":1,"2743":2}}],["aur",{"2":{"2466":1}}],["aurora",{"2":{"191":2}}],["auxiliary",{"2":{"2301":1}}],["au",{"2":{"1398":3,"1402":2,"1408":5,"2357":5}}],["audience",{"2":{"470":1}}],["audio",{"0":{"28":1,"215":1,"654":1,"1291":1,"1386":1,"1399":1,"1401":1,"1406":1,"1408":1,"2180":1,"2357":1,"2676":1,"2704":1},"1":{"655":1,"656":1,"657":1,"658":1,"659":1,"660":1,"661":1,"662":1,"663":1,"1387":1,"1388":1,"1389":1,"1390":1,"1391":1,"1392":1,"1393":1,"1394":1,"1395":1,"1396":1,"1397":1,"1398":1,"1399":1,"1400":1,"1401":1,"1402":1,"1403":1,"1404":1,"1405":1,"1406":1,"1407":1,"1408":1,"2182":1},"2":{"28":6,"70":1,"74":1,"75":1,"105":4,"111":1,"112":2,"114":1,"133":1,"134":1,"149":1,"188":1,"191":3,"215":1,"222":6,"231":4,"236":1,"249":2,"266":3,"502":26,"515":3,"592":1,"654":2,"656":3,"657":4,"658":1,"659":12,"660":4,"661":5,"662":5,"1291":1,"1316":1,"1357":1,"1378":1,"1386":1,"1387":10,"1388":2,"1389":1,"1390":6,"1391":3,"1392":3,"1393":7,"1394":2,"1395":4,"1396":5,"1397":3,"1398":17,"1399":10,"1400":3,"1401":2,"1402":8,"1406":18,"1408":19,"1448":2,"1467":1,"1549":4,"1686":3,"1718":2,"2074":1,"2180":1,"2263":4,"2355":3,"2357":20,"2393":3,"2531":1,"2607":2,"2610":1,"2676":5,"2703":1,"2704":1,"2724":1,"2749":1}}],["austin",{"2":{"211":1}}],["authentication",{"0":{"2432":1}}],["authenticated",{"2":{"527":1,"2432":1}}],["author",{"2":{"2309":1,"2564":1}}],["authored",{"2":{"38":1}}],["authorship",{"2":{"1380":1}}],["authors",{"2":{"32":1}}],["autoload",{"2":{"450":1}}],["auto+retro",{"2":{"236":1}}],["autocorrected",{"2":{"1442":1,"1448":1}}],["autocorrection",{"0":{"1439":1},"2":{"1439":1,"1441":1,"1442":1,"1447":1,"1448":3,"1450":1,"1451":1}}],["autocorrect",{"0":{"179":1,"1437":1,"1440":1,"1442":1,"1445":1,"1446":1,"1447":1,"1448":1,"1449":1,"2359":1},"1":{"1438":1,"1439":1,"1440":1,"1441":2,"1442":1,"1443":2,"1444":1,"1445":1,"1446":2,"1447":1,"1448":2,"1449":1,"1450":1,"1451":1,"1452":1,"1453":1},"2":{"179":2,"188":1,"191":2,"211":1,"222":2,"1439":1,"1440":6,"1441":1,"1442":2,"1443":6,"1445":6,"1446":6,"1447":1,"1448":6,"1449":9,"1450":1,"1451":1,"2359":7}}],["automation",{"2":{"2492":1,"2503":1}}],["automatically",{"2":{"173":1,"201":1,"246":1,"347":1,"364":1,"370":1,"371":1,"376":1,"378":1,"381":1,"383":1,"386":1,"435":1,"436":1,"445":2,"454":2,"560":1,"597":1,"626":1,"643":1,"655":1,"665":1,"689":2,"700":1,"727":1,"730":1,"756":1,"785":1,"817":1,"849":1,"884":1,"918":1,"952":1,"986":1,"1020":1,"1054":1,"1088":1,"1144":1,"1175":1,"1196":1,"1213":1,"1214":1,"1217":1,"1376":3,"1377":1,"1385":1,"1398":2,"1425":1,"1437":1,"1438":1,"1440":1,"1494":1,"1499":1,"1504":1,"1525":2,"1730":1,"1825":1,"1832":1,"1857":1,"1885":1,"1917":1,"1950":1,"1951":1,"1954":1,"2051":1,"2072":1,"2132":1,"2145":2,"2183":1,"2229":1,"2230":2,"2231":1,"2233":1,"2235":1,"2237":1,"2238":2,"2240":1,"2242":1,"2243":1,"2244":1,"2252":1,"2261":1,"2341":1,"2361":1,"2439":1,"2441":1,"2448":1,"2461":1,"2576":1,"2680":1}}],["automatic",{"0":{"246":1,"1885":1,"2067":1},"1":{"1886":1,"1887":1,"1888":1,"1889":1,"1890":1,"1891":1,"1892":1,"1893":1,"1894":1,"1895":1,"1896":1,"1897":1,"1898":1,"1899":1,"1900":1,"1901":1},"2":{"134":1,"190":2,"191":1,"246":1,"689":1,"1316":1,"1317":1,"1412":1,"1901":1}}],["automata02",{"2":{"222":1}}],["automate",{"2":{"199":1}}],["automated",{"2":{"10":1,"198":1,"606":1,"1310":1,"2667":1}}],["autoshifted",{"2":{"1423":1}}],["autoshift",{"2":{"93":1,"191":1,"1416":4,"1430":3}}],["auto",{"0":{"454":1,"1409":1,"1410":1,"1412":1,"1413":1,"1415":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"1423":1,"1424":1,"1425":2,"1426":1,"1427":1,"1428":1,"1429":1,"1433":1,"1894":1,"1897":1,"1899":1,"1901":1,"2358":1},"1":{"1410":1,"1411":1,"1412":1,"1413":1,"1414":1,"1415":1,"1416":2,"1417":2,"1418":2,"1419":2,"1420":2,"1421":2,"1422":2,"1423":2,"1424":2,"1425":2,"1426":2,"1427":2,"1428":2,"1429":2,"1430":1,"1431":1,"1432":1,"1433":1,"1434":2,"1435":2,"1436":2},"2":{"49":1,"63":1,"134":3,"176":1,"188":1,"191":1,"195":3,"211":3,"222":2,"246":1,"249":1,"266":1,"689":1,"1410":1,"1411":14,"1412":2,"1413":2,"1414":4,"1415":3,"1416":7,"1417":1,"1418":2,"1419":1,"1420":1,"1421":1,"1422":1,"1423":15,"1425":1,"1429":1,"1430":4,"1431":3,"1433":1,"1434":12,"1435":4,"1436":1,"1448":1,"1494":2,"1857":2,"1880":3,"1885":1,"1886":2,"1887":10,"1888":1,"1889":7,"1893":1,"1894":33,"1895":7,"1897":10,"1898":11,"1899":10,"1900":3,"1901":5,"2358":13,"2361":2,"2474":1,"2513":1,"2737":5,"2739":2,"2749":1}}],["august",{"0":{"96":1,"161":1,"267":1},"1":{"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1},"2":{"254":1,"268":1,"2632":1}}],["aug",{"0":{"0":1,"39":1,"212":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1},"2":{"88":1,"104":1,"127":1,"170":1,"315":2,"338":1,"340":1,"351":6}}],["aforementioned",{"2":{"1675":1}}],["aforementionned",{"2":{"1336":1}}],["af2",{"2":{"1469":1}}],["afnor",{"2":{"1355":1,"2712":3}}],["africa",{"2":{"1268":1}}],["afpp",{"2":{"1142":7}}],["afio",{"2":{"1142":1}}],["af4",{"2":{"1141":4}}],["af0",{"2":{"1141":4}}],["af1",{"2":{"1141":10}}],["af7",{"2":{"1140":22}}],["affecting",{"2":{"1300":4,"2033":1,"2279":1,"2305":1,"2567":1}}],["affect",{"2":{"221":1,"233":1,"435":2,"560":1,"1312":1,"2567":2,"2615":1,"2728":1,"2739":1}}],["affects",{"2":{"45":1,"49":1,"244":1,"1243":1,"1326":1,"2161":1,"2574":1}}],["affected",{"2":{"3":1,"4":1,"10":1,"14":1,"15":1,"221":1,"254":1,"1558":1,"1573":1,"2130":1,"2529":1,"2735":2,"2736":1}}],["afterwards",{"2":{"202":1,"1270":1,"2273":1,"2468":1}}],["aftermath",{"2":{"176":1}}],["after",{"0":{"25":1,"2166":1},"2":{"10":1,"11":1,"23":1,"24":1,"25":5,"49":1,"90":1,"105":1,"114":2,"134":4,"149":1,"157":1,"176":4,"191":3,"195":1,"199":5,"211":2,"222":1,"255":2,"259":1,"263":1,"315":1,"324":1,"340":1,"341":1,"344":1,"345":1,"349":1,"350":3,"453":1,"485":1,"502":2,"505":2,"510":1,"513":2,"515":1,"554":1,"559":1,"570":1,"575":1,"578":1,"582":1,"588":2,"596":1,"599":1,"624":1,"647":1,"660":1,"675":1,"689":1,"698":1,"741":1,"745":1,"749":1,"751":1,"768":1,"772":1,"776":1,"778":1,"800":1,"804":1,"808":1,"810":1,"832":1,"836":1,"840":1,"842":1,"867":1,"871":1,"875":1,"877":1,"901":1,"905":1,"909":1,"911":1,"935":1,"939":1,"943":1,"945":1,"969":1,"973":1,"977":1,"979":1,"1003":1,"1007":1,"1011":1,"1013":1,"1037":1,"1041":1,"1045":1,"1047":1,"1071":1,"1075":1,"1079":1,"1081":1,"1105":1,"1109":1,"1113":1,"1115":1,"1158":1,"1162":1,"1166":1,"1168":1,"1243":1,"1250":1,"1265":1,"1276":1,"1287":1,"1298":1,"1303":3,"1330":1,"1331":1,"1332":2,"1346":1,"1360":4,"1377":1,"1403":1,"1411":1,"1440":1,"1441":1,"1451":3,"1523":1,"1665":1,"1671":1,"1675":2,"1683":1,"1684":2,"1729":1,"1776":1,"1778":1,"1780":1,"1783":1,"1802":1,"1805":1,"1807":2,"1817":2,"1825":1,"1872":1,"1885":1,"1889":2,"1908":1,"1910":1,"1912":1,"1929":1,"1952":1,"2021":1,"2023":1,"2025":1,"2028":1,"2031":1,"2042":1,"2044":1,"2067":1,"2128":2,"2141":1,"2150":1,"2152":1,"2161":3,"2162":2,"2169":1,"2234":1,"2255":1,"2262":1,"2270":1,"2273":3,"2276":1,"2277":1,"2311":1,"2353":1,"2396":1,"2402":1,"2406":1,"2445":1,"2479":1,"2480":1,"2490":2,"2491":1,"2499":1,"2524":1,"2525":1,"2526":1,"2548":1,"2556":1,"2564":1,"2567":1,"2568":1,"2574":1,"2577":1,"2581":1,"2588":1,"2589":1,"2600":1,"2602":1,"2607":1,"2615":1,"2649":1,"2699":2,"2711":1,"2723":1,"2728":1,"2734":1,"2737":1,"2749":2}}],["arbitrary",{"2":{"318":1,"374":1,"1361":1,"1369":1,"1450":1,"1666":1,"2130":1,"2479":1,"2524":1}}],["arises",{"2":{"2311":1}}],["arise",{"2":{"273":1,"2424":1}}],["arrangement",{"2":{"2559":2}}],["arranged",{"2":{"2311":2,"2614":1}}],["arrange",{"2":{"1338":1}}],["arrays",{"2":{"191":1,"374":2,"530":1,"1677":2,"1821":2,"2148":1,"2400":3,"2557":1,"2738":2}}],["array",{"0":{"27":1},"2":{"27":1,"176":1,"249":1,"266":1,"529":2,"612":5,"676":1,"742":1,"746":1,"750":1,"752":1,"769":1,"773":1,"777":1,"779":1,"801":1,"805":1,"809":1,"811":1,"833":1,"837":1,"841":1,"843":1,"868":1,"872":1,"876":1,"878":1,"902":1,"906":1,"910":1,"912":1,"936":1,"940":1,"944":1,"946":1,"970":1,"974":1,"978":1,"980":1,"1004":1,"1008":1,"1012":1,"1014":1,"1038":1,"1042":1,"1046":1,"1048":1,"1072":1,"1076":1,"1080":1,"1082":1,"1106":1,"1110":1,"1114":1,"1116":1,"1159":1,"1163":1,"1167":1,"1169":1,"1233":2,"1279":1,"1352":1,"1356":1,"1359":1,"1451":3,"1511":1,"1517":1,"1518":3,"1557":1,"1573":1,"1591":1,"1612":1,"1614":1,"1637":1,"1642":2,"1657":2,"1820":2,"1857":2,"2042":4,"2070":1,"2125":1,"2155":2,"2157":1,"2161":2,"2181":2,"2203":1,"2205":1,"2206":1,"2207":1,"2209":1,"2210":1,"2302":1,"2400":4,"2401":1,"2558":1,"2595":1,"2597":1,"2599":1,"2625":1,"2643":1,"2746":2}}],["arrowmechanics",{"2":{"266":1}}],["arrow",{"2":{"255":2,"259":2,"266":1,"626":2,"1586":4,"1892":1,"1929":1,"1932":5,"1937":2,"2079":1,"2355":8,"2392":4,"2394":4,"2617":1,"2620":2}}],["arg",{"2":{"441":3,"597":2,"598":1,"1938":1}}],["args",{"2":{"176":1,"441":3,"462":1,"465":1,"1933":1,"2508":1}}],["arguments",{"0":{"436":1,"441":1,"465":1,"648":1,"650":1,"653":1,"674":1,"676":1,"678":1,"680":1,"709":1,"712":1,"715":1,"718":1,"721":1,"724":1,"727":1,"740":1,"742":1,"744":1,"746":1,"748":1,"750":1,"752":1,"765":1,"767":1,"769":1,"771":1,"773":1,"775":1,"777":1,"779":1,"781":1,"783":1,"795":1,"797":1,"799":1,"801":1,"803":1,"805":1,"807":1,"809":1,"811":1,"813":1,"815":1,"829":1,"831":1,"833":1,"835":1,"837":1,"839":1,"841":1,"843":1,"845":1,"847":1,"862":1,"864":1,"866":1,"868":1,"870":1,"872":1,"874":1,"876":1,"878":1,"880":1,"882":1,"896":1,"898":1,"900":1,"902":1,"904":1,"906":1,"908":1,"910":1,"912":1,"914":1,"916":1,"930":1,"932":1,"934":1,"936":1,"938":1,"940":1,"942":1,"944":1,"946":1,"948":1,"950":1,"964":1,"966":1,"968":1,"970":1,"972":1,"974":1,"976":1,"978":1,"980":1,"982":1,"984":1,"998":1,"1000":1,"1002":1,"1004":1,"1006":1,"1008":1,"1010":1,"1012":1,"1014":1,"1016":1,"1018":1,"1032":1,"1034":1,"1036":1,"1038":1,"1040":1,"1042":1,"1044":1,"1046":1,"1048":1,"1050":1,"1052":1,"1066":1,"1068":1,"1070":1,"1072":1,"1074":1,"1076":1,"1078":1,"1080":1,"1082":1,"1084":1,"1086":1,"1100":1,"1102":1,"1104":1,"1106":1,"1108":1,"1110":1,"1112":1,"1114":1,"1116":1,"1118":1,"1120":1,"1153":1,"1155":1,"1157":1,"1159":1,"1161":1,"1163":1,"1165":1,"1167":1,"1169":1,"1171":1,"1173":1,"1181":1,"1184":1,"1189":1,"1192":1,"1201":1,"1203":1,"1207":1,"1209":1,"1233":1,"1480":1,"1546":1,"1597":1,"1601":1,"1604":1,"1606":1,"1608":1,"1610":1,"1612":1,"1614":1,"1618":1,"1620":1,"1623":1,"1625":1,"1627":1,"1629":1,"1647":1,"1649":1,"1651":1,"1654":1,"1695":1,"1700":1,"1703":1,"1706":1,"1709":1,"1712":1,"1744":1,"1746":1,"1748":1,"1750":1,"1768":1,"1770":1,"1781":1,"1784":1,"1838":1,"1840":1,"1842":1,"1844":1,"1846":1,"1852":1,"1926":1,"1928":1,"1971":1,"1973":1,"1975":1,"1977":1,"2007":1,"2009":1,"2013":1,"2015":1,"2026":1,"2029":1,"2082":1,"2084":1,"2086":1,"2088":1,"2090":1,"2092":1,"2094":1,"2096":1,"2098":1,"2189":1,"2193":1,"2195":1,"2200":1,"2202":1,"2204":1,"2207":1,"2210":1,"2217":1,"2224":1},"1":{"437":1,"438":1,"439":1,"440":1,"441":1,"1782":1,"1785":1,"2027":1,"2030":1},"2":{"114":1,"385":1,"393":1,"394":1,"400":1,"401":1,"413":1,"414":1,"416":1,"432":2,"441":2,"462":1,"473":1,"1347":1,"1922":1,"2149":1,"2162":1,"2348":1,"2480":1,"2575":3,"2747":1}}],["argument",{"0":{"474":1},"2":{"46":1,"194":2,"199":1,"236":1,"266":1,"370":2,"371":1,"413":1,"415":2,"416":1,"430":6,"436":5,"441":3,"474":1,"573":2,"597":3,"598":1,"1177":1,"1300":1,"1315":1,"1322":1,"1336":4,"1349":1,"2152":2,"2347":1,"2411":1,"2480":1,"2491":1,"2575":7}}],["artifact",{"2":{"2437":1}}],["artifacts",{"2":{"114":1,"2439":1,"2581":1}}],["article",{"2":{"2229":1,"2311":2}}],["art",{"2":{"176":2}}],["archive",{"2":{"2437":1}}],["architecture",{"0":{"517":1},"2":{"517":2,"697":1}}],["arch",{"2":{"143":2,"176":1,"514":1,"2431":1,"2464":1,"2466":1}}],["arabica37",{"2":{"134":1}}],["arya",{"2":{"134":1}}],["arduinoisp",{"2":{"2331":1}}],["arduino",{"0":{"243":1,"1293":1,"2331":1},"1":{"2332":1},"2":{"113":1,"114":1,"133":1,"134":1,"243":2,"552":2,"629":4,"1293":8,"2233":1,"2286":1,"2331":2,"2344":4}}],["armtoolchainpath",{"2":{"2513":3}}],["arm",{"0":{"322":1,"325":1,"488":1,"634":1,"639":1,"641":1,"656":1,"668":1,"703":1,"733":1,"759":1,"789":1,"823":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1147":1,"1177":1,"1198":1,"1224":1,"1243":1,"1389":1,"1401":1,"1468":1,"1906":1,"2513":1,"2523":1,"2546":1,"2622":1},"1":{"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1,"336":1,"489":1,"490":1,"491":1,"492":1,"635":1,"636":1,"657":1,"658":1,"659":1,"660":1,"661":1,"662":1,"663":1,"704":1,"705":1,"1225":1,"1226":1,"1227":1,"1228":1,"1229":1,"1230":1,"1390":1,"1391":1,"1392":1,"1393":1,"1394":1,"1395":1,"1396":1,"1469":1,"1470":1,"2524":1,"2525":1,"2526":1,"2547":1,"2548":1,"2549":1,"2550":1,"2551":1,"2552":1},"2":{"11":1,"24":1,"69":1,"75":1,"92":1,"93":3,"107":2,"114":3,"123":1,"130":1,"134":2,"153":1,"160":2,"174":1,"191":1,"215":2,"248":1,"263":3,"277":1,"322":2,"325":2,"331":2,"334":1,"336":1,"486":2,"488":1,"508":1,"509":1,"511":2,"552":1,"556":1,"560":1,"630":3,"641":1,"656":1,"657":1,"681":1,"1121":1,"1122":1,"1124":1,"1125":1,"1128":1,"1222":1,"1223":1,"1224":1,"1243":1,"1312":1,"1316":2,"1317":2,"1397":1,"1401":1,"1609":1,"1613":1,"1635":2,"1811":5,"1822":2,"1906":1,"2032":1,"2085":1,"2087":1,"2100":1,"2101":1,"2114":3,"2115":1,"2126":2,"2131":1,"2132":3,"2143":2,"2263":1,"2310":1,"2327":1,"2462":1,"2513":3,"2523":1,"2527":1,"2536":1,"2537":1,"2546":2,"2566":1,"2673":1,"2709":2}}],["around",{"2":{"8":1,"191":2,"198":1,"201":1,"213":1,"222":1,"224":1,"266":1,"358":1,"618":1,"655":1,"1238":1,"1268":1,"1287":2,"1290":1,"1403":1,"1406":1,"1568":1,"1728":1,"1853":1,"1948":1,"1949":4,"2033":1,"2054":4,"2272":1,"2311":1,"2322":1,"2413":1,"2702":1,"2750":1,"2752":1,"2757":1}}],["aref",{"2":{"2276":1}}],["arep",{"2":{"202":1,"1930":1,"1931":1,"2381":1}}],["area",{"2":{"182":1,"585":1,"1822":1,"1950":1,"2480":2,"2576":2,"2577":1,"2627":1,"2719":1}}],["areas",{"2":{"113":1,"213":1,"341":1,"2567":2,"2719":2}}],["aren",{"0":{"1273":1},"2":{"173":1,"188":1,"211":1,"557":1,"560":1,"606":1,"1287":1,"1558":1,"1870":1,"2255":1,"2274":1,"2279":1,"2403":1,"2546":1,"2576":2}}],["are",{"0":{"90":1,"105":1,"546":1,"1262":1,"1265":1,"1268":1,"1271":1,"1284":1,"1412":1,"1506":1,"2312":1,"2741":1},"1":{"2313":1,"2314":1,"2315":1,"2316":1,"2317":1,"2318":1,"2319":1,"2320":1},"2":{"3":1,"4":1,"11":1,"15":1,"16":2,"27":1,"31":3,"33":1,"34":2,"37":1,"55":1,"69":1,"70":1,"73":1,"75":1,"92":1,"94":1,"110":1,"111":1,"114":1,"119":1,"123":2,"124":1,"132":1,"152":1,"163":1,"176":1,"182":1,"187":1,"191":1,"194":1,"196":2,"201":2,"203":1,"206":1,"209":1,"210":1,"215":2,"221":1,"222":1,"231":1,"234":1,"241":1,"253":1,"254":1,"262":1,"263":2,"264":1,"268":1,"270":1,"274":1,"275":1,"282":6,"294":1,"305":1,"306":1,"311":1,"315":1,"317":4,"319":1,"321":1,"323":1,"324":1,"326":1,"331":2,"334":2,"337":2,"341":3,"349":2,"350":1,"352":2,"353":1,"354":2,"360":1,"364":1,"367":1,"370":1,"371":1,"373":1,"374":2,"378":1,"381":1,"383":1,"385":1,"386":1,"388":1,"399":2,"414":1,"416":3,"430":1,"432":1,"433":1,"434":1,"435":2,"448":1,"449":1,"453":2,"454":1,"457":1,"460":1,"465":1,"466":2,"467":2,"469":1,"470":1,"473":2,"480":1,"481":3,"482":1,"483":1,"484":1,"485":1,"488":1,"496":4,"498":1,"499":1,"502":2,"506":2,"509":1,"510":2,"511":1,"515":4,"516":3,"517":1,"520":1,"521":2,"522":2,"530":1,"537":1,"539":1,"548":1,"549":1,"551":1,"552":1,"554":2,"555":1,"556":2,"559":3,"560":7,"561":1,"562":3,"567":1,"571":3,"574":2,"587":2,"589":1,"592":1,"598":1,"601":1,"606":3,"609":4,"610":1,"611":1,"613":2,"614":1,"623":1,"625":1,"626":2,"627":1,"628":1,"629":1,"630":1,"633":2,"635":5,"639":1,"641":1,"642":1,"643":1,"647":1,"655":1,"656":4,"658":1,"659":2,"661":2,"665":1,"675":1,"684":1,"685":1,"689":1,"694":1,"696":1,"698":3,"700":1,"730":1,"741":1,"745":1,"749":1,"751":1,"756":1,"768":1,"772":1,"776":1,"778":1,"785":1,"800":1,"804":1,"808":1,"810":1,"817":1,"820":1,"821":2,"832":1,"836":1,"840":1,"842":1,"849":1,"851":1,"853":1,"854":2,"867":1,"871":1,"875":1,"877":1,"884":1,"886":1,"887":1,"888":2,"901":1,"905":1,"909":1,"911":1,"918":1,"921":1,"922":2,"935":1,"939":1,"943":1,"945":1,"952":1,"955":1,"956":2,"969":1,"973":1,"977":1,"979":1,"986":1,"989":1,"990":2,"1003":1,"1007":1,"1011":1,"1013":1,"1020":1,"1022":1,"1024":2,"1037":1,"1041":1,"1045":1,"1047":1,"1054":1,"1056":1,"1058":2,"1071":1,"1075":1,"1079":1,"1081":1,"1088":1,"1090":1,"1091":1,"1092":2,"1105":1,"1109":1,"1113":1,"1115":1,"1121":2,"1125":1,"1126":1,"1128":1,"1129":4,"1134":1,"1135":1,"1142":1,"1144":1,"1158":1,"1162":1,"1166":1,"1168":1,"1175":1,"1182":1,"1196":1,"1201":2,"1212":1,"1213":1,"1216":1,"1218":1,"1227":1,"1230":1,"1234":1,"1236":1,"1238":1,"1241":1,"1243":1,"1246":1,"1249":1,"1265":2,"1267":1,"1268":2,"1273":2,"1279":1,"1280":1,"1284":2,"1287":2,"1288":1,"1300":3,"1303":2,"1311":1,"1312":1,"1314":1,"1315":1,"1316":1,"1317":1,"1319":1,"1320":1,"1322":1,"1325":5,"1326":4,"1329":2,"1331":3,"1332":1,"1335":2,"1336":2,"1338":2,"1339":1,"1341":5,"1344":1,"1346":1,"1351":1,"1356":1,"1357":2,"1359":2,"1364":2,"1368":1,"1376":1,"1383":1,"1385":1,"1394":1,"1396":1,"1397":1,"1398":2,"1400":2,"1401":1,"1404":3,"1406":2,"1411":2,"1412":2,"1416":3,"1423":1,"1427":1,"1430":1,"1431":2,"1435":3,"1436":1,"1437":2,"1438":1,"1440":2,"1441":1,"1442":1,"1445":2,"1446":5,"1447":1,"1451":4,"1457":1,"1458":1,"1460":1,"1464":1,"1466":1,"1469":2,"1471":2,"1495":1,"1496":1,"1497":1,"1499":1,"1500":1,"1503":2,"1504":1,"1506":1,"1508":1,"1509":1,"1511":1,"1512":1,"1514":1,"1517":2,"1518":6,"1521":1,"1522":1,"1523":1,"1524":2,"1526":1,"1533":1,"1547":1,"1553":2,"1554":1,"1556":1,"1557":2,"1558":1,"1560":1,"1562":1,"1564":1,"1566":1,"1568":1,"1570":2,"1573":2,"1594":1,"1636":1,"1637":2,"1655":2,"1659":2,"1663":1,"1665":1,"1670":2,"1673":6,"1674":3,"1675":2,"1676":3,"1677":4,"1680":1,"1684":1,"1685":1,"1714":1,"1715":1,"1717":1,"1725":2,"1728":2,"1730":1,"1733":2,"1787":1,"1791":2,"1794":2,"1802":2,"1804":2,"1805":1,"1806":1,"1807":4,"1811":1,"1812":1,"1814":1,"1816":1,"1817":1,"1820":4,"1821":5,"1822":2,"1832":3,"1853":1,"1854":2,"1857":2,"1859":2,"1862":2,"1863":2,"1866":1,"1870":1,"1871":1,"1873":2,"1875":1,"1876":2,"1884":1,"1885":3,"1888":1,"1890":1,"1892":1,"1893":1,"1897":2,"1900":1,"1902":1,"1907":1,"1908":1,"1912":1,"1918":1,"1920":1,"1921":3,"1923":2,"1929":1,"1932":1,"1933":1,"1936":3,"1938":1,"1940":1,"1946":2,"1948":5,"1949":2,"1950":1,"1953":2,"1954":1,"1957":2,"2031":1,"2032":2,"2034":1,"2037":2,"2038":3,"2040":1,"2042":1,"2044":1,"2045":1,"2051":11,"2052":2,"2054":2,"2058":2,"2059":1,"2063":2,"2072":2,"2075":3,"2076":1,"2105":1,"2107":1,"2114":2,"2115":1,"2116":1,"2118":3,"2122":1,"2123":1,"2127":1,"2128":4,"2130":1,"2131":4,"2137":1,"2138":1,"2140":1,"2142":1,"2143":1,"2144":1,"2146":1,"2147":2,"2149":1,"2150":2,"2152":1,"2155":3,"2157":1,"2161":5,"2162":1,"2165":1,"2169":4,"2171":1,"2172":4,"2175":1,"2177":1,"2178":1,"2181":1,"2182":2,"2183":1,"2229":1,"2231":2,"2238":2,"2252":3,"2256":2,"2260":2,"2261":1,"2262":3,"2263":5,"2267":3,"2268":1,"2269":2,"2271":1,"2272":4,"2273":3,"2274":1,"2275":1,"2276":4,"2280":1,"2284":1,"2286":1,"2294":2,"2295":1,"2299":1,"2300":1,"2301":1,"2302":1,"2303":5,"2305":1,"2306":1,"2309":1,"2310":2,"2311":4,"2315":1,"2319":2,"2324":1,"2326":1,"2327":1,"2328":1,"2342":1,"2343":2,"2344":1,"2346":1,"2347":1,"2348":1,"2353":1,"2354":1,"2356":1,"2364":1,"2385":1,"2393":3,"2395":1,"2396":1,"2397":2,"2398":1,"2400":1,"2401":2,"2404":1,"2405":3,"2406":1,"2407":2,"2409":1,"2410":1,"2411":2,"2414":1,"2417":4,"2418":3,"2419":1,"2420":2,"2424":2,"2425":2,"2429":1,"2430":1,"2439":1,"2445":2,"2452":2,"2454":1,"2455":1,"2457":2,"2462":1,"2466":1,"2470":1,"2473":1,"2474":2,"2475":1,"2477":2,"2480":2,"2482":1,"2490":3,"2491":3,"2498":1,"2499":1,"2502":1,"2507":1,"2508":1,"2509":1,"2510":1,"2513":1,"2515":2,"2516":1,"2518":2,"2519":2,"2524":2,"2525":1,"2530":1,"2532":1,"2533":1,"2534":1,"2543":3,"2545":1,"2548":2,"2549":2,"2550":1,"2555":1,"2556":1,"2557":1,"2559":1,"2560":1,"2563":1,"2564":1,"2565":1,"2566":10,"2567":2,"2568":2,"2569":4,"2571":4,"2572":1,"2574":2,"2576":8,"2577":6,"2585":4,"2587":1,"2592":2,"2595":2,"2600":1,"2601":4,"2602":1,"2603":3,"2605":2,"2607":1,"2610":1,"2614":2,"2616":2,"2617":1,"2640":2,"2643":1,"2653":1,"2655":1,"2660":1,"2671":2,"2686":3,"2688":1,"2689":1,"2694":1,"2695":1,"2701":1,"2702":6,"2703":2,"2705":2,"2706":3,"2709":2,"2710":1,"2711":1,"2712":4,"2713":1,"2714":1,"2720":1,"2721":1,"2726":2,"2728":1,"2729":2,"2735":1,"2738":4,"2741":1,"2745":3,"2750":2,"2754":2,"2755":1,"2756":3,"2757":1}}],["al",{"2":{"2735":2,"2736":1}}],["albeit",{"2":{"2181":1}}],["alps",{"2":{"1276":1}}],["alphabet",{"2":{"2711":1}}],["alphabetical",{"2":{"1435":1}}],["alphanumeric",{"2":{"1958":1,"2619":1}}],["alphas",{"2":{"1728":3,"1949":3,"2688":1,"2695":1,"2708":1}}],["alpha",{"0":{"1421":1,"1426":1,"1583":1},"2":{"143":8,"1416":2,"1421":1,"1423":2,"1441":1,"1583":2}}],["alone",{"2":{"606":1,"1249":1}}],["alongside",{"2":{"113":1,"114":1}}],["along",{"2":{"69":1,"83":1,"113":1,"149":1,"166":1,"196":1,"230":1,"502":3,"1217":1,"1376":1,"1380":1,"1589":1,"1670":1,"1807":1,"1865":1,"1923":1,"1949":1,"2072":1,"2229":1,"2274":1,"2276":2,"2341":1,"2450":1,"2564":1,"2570":1}}],["alvicstep",{"2":{"211":1}}],["alf",{"2":{"211":2}}],["alcor",{"2":{"191":1}}],["al1",{"2":{"160":1}}],["alu84",{"2":{"143":2}}],["aleblazer",{"2":{"222":1}}],["alexa",{"2":{"211":1}}],["aleth42",{"2":{"143":2}}],["alerts",{"2":{"376":1,"397":1}}],["alert",{"2":{"28":1,"1578":2}}],["alisaie",{"2":{"222":1}}],["alice",{"2":{"211":1,"2746":1}}],["alicia",{"2":{"143":2,"211":1}}],["aligns",{"2":{"2270":1}}],["aligned",{"2":{"137":1,"2273":1,"2619":2}}],["alignment",{"2":{"114":1,"133":1,"134":1,"191":1,"266":1,"2275":1,"2565":1,"2577":1}}],["align",{"2":{"113":1,"114":3,"133":1,"134":3,"149":4,"176":2,"188":3,"191":3,"199":4,"222":1,"249":4,"266":4,"277":1}}],["aliasing",{"2":{"2575":1}}],["aliases",{"2":{"92":1,"111":1,"182":1,"188":1,"191":1,"222":4,"266":1,"1299":1,"1341":1,"1398":1,"1402":1,"1403":1,"1406":1,"1408":1,"1434":1,"1443":1,"1456":1,"1494":1,"1512":1,"1566":1,"1572":1,"1639":1,"1669":1,"1687":1,"1727":1,"1793":1,"1801":1,"1834":1,"1894":1,"1931":1,"1948":1,"2034":1,"2069":1,"2104":1,"2112":1,"2156":1,"2184":1,"2355":1,"2356":1,"2357":1,"2358":1,"2359":1,"2360":1,"2361":1,"2362":1,"2363":1,"2364":1,"2365":1,"2369":1,"2370":1,"2371":1,"2372":1,"2373":1,"2374":1,"2375":1,"2376":1,"2377":1,"2378":1,"2379":1,"2380":1,"2381":1,"2382":1,"2383":1,"2384":1,"2388":1,"2389":1,"2390":1,"2391":1,"2392":1,"2393":1,"2394":1,"2395":1,"2396":1,"2399":1,"2410":1,"2566":1,"2572":1,"2686":2,"2710":1,"2728":1}}],["alias",{"0":{"8":1},"2":{"8":2,"133":1,"134":1,"188":1,"191":2,"199":3,"211":1,"236":1,"249":1,"696":1,"1500":1,"1553":1,"1609":1,"1613":1,"1822":1,"1930":2,"2085":1,"2087":1,"2173":1,"2403":2,"2413":1,"2480":1}}],["almost",{"2":{"77":1,"83":1,"163":1,"268":1,"276":1,"327":1,"693":1,"694":1,"701":1,"1676":1,"2183":1,"2229":1,"2242":1,"2564":1,"2567":1,"2576":1,"2614":1,"2718":1,"2752":1}}],["already",{"0":{"2547":1},"1":{"2548":1,"2549":1},"2":{"75":1,"105":2,"118":1,"125":1,"169":2,"182":3,"185":1,"199":1,"221":1,"228":1,"232":1,"233":1,"241":1,"253":1,"270":1,"291":1,"373":1,"405":2,"539":1,"552":1,"588":1,"625":1,"1129":1,"1142":1,"1182":1,"1272":1,"1302":1,"1344":1,"1383":1,"1446":1,"1573":1,"1673":3,"1870":1,"1898":2,"1900":1,"2143":2,"2162":1,"2171":3,"2267":1,"2277":1,"2327":2,"2350":1,"2418":1,"2431":1,"2445":1,"2464":1,"2468":1,"2476":1,"2497":1,"2504":1,"2508":2,"2509":1,"2512":1,"2548":2,"2566":1,"2567":1,"2576":2,"2581":1,"2659":1,"2719":1,"2753":1}}],["algr",{"2":{"1299":1,"1361":1,"2355":1,"2373":1,"2374":1,"2390":1,"2410":1}}],["algorithm>",{"2":{"1329":1}}],["algorithms",{"0":{"1326":1,"1327":1},"1":{"1328":1,"1329":1,"1330":1},"2":{"114":1,"176":1,"222":1,"1325":1,"1326":6,"1327":1}}],["algorithm",{"2":{"74":1,"174":1,"176":1,"687":1,"689":1,"690":3,"691":1,"1326":10,"1329":4,"1330":2,"1803":1,"2600":1,"2674":1,"2683":1}}],["algernon",{"2":{"37":1,"2160":2,"2262":2}}],["altlp",{"2":{"2170":6}}],["altrep",{"2":{"1943":1}}],["altrep3",{"2":{"1943":12}}],["altrep2",{"2":{"1943":12}}],["alt↯tab",{"0":{"1375":1}}],["altered",{"2":{"2130":1}}],["altering",{"2":{"1454":1,"1527":1}}],["alter",{"2":{"1359":1,"1520":1,"1523":1,"1560":1,"2152":1,"2355":1}}],["alternating",{"2":{"2036":2,"2037":2,"2708":1}}],["alternatives",{"2":{"2418":1,"2719":1}}],["alternative",{"0":{"1362":1},"2":{"515":1,"1226":2,"1230":1,"1287":1,"1315":1,"1322":1,"1336":1,"1391":1,"1394":1,"1469":1,"1499":1,"1870":1,"2150":1,"2263":1,"2418":1,"2566":1,"2630":1,"2632":1}}],["alternatively",{"2":{"31":1,"454":1,"626":1,"684":1,"685":1,"1136":1,"1241":1,"1303":1,"1377":1,"1398":1,"1503":1,"1921":1,"2117":1,"2445":1,"2497":1,"2524":1,"2606":1,"2755":1}}],["alternate0",{"2":{"661":1}}],["alternate",{"0":{"1139":1,"1932":1,"1933":1,"1941":1,"1943":1,"2534":1},"1":{"1140":1,"1141":1,"1142":1,"1934":1,"1935":1},"2":{"36":1,"114":1,"202":2,"502":3,"511":1,"656":1,"661":5,"703":2,"707":2,"1122":1,"1127":2,"1129":2,"1130":2,"1137":1,"1142":2,"1177":3,"1198":4,"1396":1,"1527":1,"1530":3,"1931":1,"1932":7,"1933":6,"1934":2,"1935":1,"1936":1,"1940":2,"1941":10,"1942":2,"1943":1,"2355":2,"2381":1,"2392":2,"2539":1,"2566":2}}],["although",{"2":{"1336":1,"1635":1,"1675":1,"1863":1,"2145":1,"2150":1,"2402":1}}],["alt+escape",{"2":{"1302":1}}],["alt+shift+esc",{"2":{"1302":1}}],["alt+right",{"2":{"291":1,"1336":1}}],["altogether",{"2":{"660":1,"2128":1,"2705":1}}],["altgr+escape",{"2":{"1302":1}}],["altgr",{"2":{"160":1,"1299":1,"1938":1,"2355":1,"2373":2,"2374":2,"2390":1,"2410":2}}],["alt",{"0":{"1302":2},"2":{"73":1,"114":1,"131":2,"134":2,"160":1,"202":2,"231":1,"266":1,"502":3,"623":1,"656":1,"662":2,"1269":2,"1271":1,"1299":10,"1300":8,"1302":5,"1370":1,"1375":10,"1387":3,"1388":1,"1390":2,"1391":2,"1392":2,"1395":2,"1399":2,"1442":1,"1530":3,"1568":2,"1582":1,"1656":1,"1665":7,"1668":1,"1677":6,"1820":2,"1930":1,"1931":1,"1932":3,"1933":3,"1934":2,"1935":3,"1941":3,"1942":1,"2102":1,"2103":4,"2104":4,"2169":1,"2170":3,"2179":2,"2183":2,"2196":1,"2197":1,"2198":1,"2305":1,"2355":4,"2370":10,"2373":12,"2374":12,"2381":1,"2382":4,"2390":4,"2396":10,"2410":16,"2491":4,"2651":1,"2702":1,"2738":6}}],["always",{"2":{"14":1,"50":1,"156":1,"176":1,"191":1,"201":1,"235":1,"249":1,"277":1,"417":1,"430":1,"432":1,"453":1,"460":1,"462":1,"464":1,"465":1,"467":1,"474":1,"475":1,"509":1,"522":1,"549":1,"560":1,"698":1,"1142":2,"1225":1,"1335":1,"1339":2,"1383":1,"1385":2,"1404":1,"1412":1,"1430":2,"1495":1,"1524":1,"1567":1,"1568":4,"1670":1,"1824":1,"1887":1,"1921":1,"1922":1,"1926":2,"1928":2,"1936":1,"2036":1,"2118":1,"2125":1,"2127":3,"2152":1,"2280":1,"2299":1,"2402":1,"2414":1,"2452":1,"2567":1,"2587":1,"2594":1,"2595":1,"2614":1,"2625":1,"2662":1,"2718":2,"2729":1,"2737":1,"2754":1}}],["also",{"0":{"1243":1},"2":{"10":1,"16":1,"28":1,"50":1,"67":1,"86":1,"98":1,"125":1,"130":1,"153":1,"154":1,"156":1,"160":1,"166":1,"167":1,"176":1,"185":1,"194":1,"195":1,"231":1,"244":1,"337":1,"341":1,"352":1,"364":1,"371":3,"374":2,"387":1,"403":1,"418":1,"430":2,"435":1,"437":1,"470":1,"488":1,"516":2,"554":1,"557":1,"559":1,"560":2,"566":1,"586":1,"606":1,"635":1,"657":1,"661":2,"662":1,"690":1,"1143":1,"1217":1,"1223":1,"1242":1,"1249":1,"1265":1,"1270":1,"1292":1,"1299":1,"1300":1,"1302":1,"1312":1,"1325":2,"1336":1,"1341":1,"1359":1,"1361":3,"1364":1,"1378":1,"1383":1,"1385":2,"1397":1,"1400":1,"1411":1,"1430":1,"1446":1,"1448":1,"1471":1,"1498":2,"1499":1,"1500":1,"1501":1,"1509":1,"1515":1,"1520":1,"1522":1,"1523":1,"1534":1,"1553":1,"1557":3,"1577":1,"1582":2,"1636":1,"1655":1,"1659":1,"1666":1,"1673":2,"1674":2,"1676":1,"1697":1,"1722":1,"1730":1,"1805":1,"1830":1,"1863":1,"1870":1,"1876":1,"1880":1,"1899":2,"1910":1,"1911":1,"1912":1,"1921":2,"1923":1,"1929":1,"1932":1,"1939":1,"1940":1,"1950":1,"1954":1,"2032":1,"2036":1,"2040":1,"2042":1,"2044":1,"2061":1,"2063":1,"2075":1,"2108":1,"2120":1,"2121":1,"2126":1,"2145":2,"2146":1,"2150":1,"2157":1,"2173":2,"2177":1,"2178":1,"2182":1,"2183":1,"2226":1,"2229":1,"2230":1,"2232":1,"2234":1,"2240":1,"2241":1,"2246":1,"2248":1,"2250":1,"2252":2,"2262":3,"2263":1,"2267":1,"2269":1,"2272":3,"2276":1,"2281":1,"2295":1,"2297":1,"2298":1,"2299":1,"2300":1,"2306":1,"2328":1,"2331":1,"2342":1,"2344":1,"2347":1,"2355":1,"2356":1,"2357":1,"2358":1,"2359":1,"2360":1,"2361":1,"2362":1,"2363":1,"2364":1,"2365":1,"2366":1,"2367":1,"2368":1,"2369":1,"2370":1,"2371":1,"2372":1,"2373":1,"2374":1,"2375":1,"2376":1,"2377":1,"2378":1,"2379":1,"2380":1,"2381":1,"2382":1,"2383":1,"2384":1,"2405":3,"2411":2,"2414":1,"2421":1,"2450":1,"2458":1,"2466":1,"2490":1,"2491":3,"2497":1,"2498":1,"2508":1,"2513":2,"2521":1,"2530":2,"2546":2,"2556":1,"2559":1,"2566":2,"2573":1,"2575":2,"2576":1,"2577":1,"2578":1,"2585":1,"2592":1,"2615":1,"2654":1,"2671":1,"2693":1,"2702":1,"2705":1,"2712":1,"2734":2,"2735":3,"2736":1,"2737":1,"2739":1,"2746":1,"2750":1,"2751":1,"2753":1,"2754":2,"2757":3}}],["alleviate",{"2":{"1410":1,"1527":1}}],["allocation",{"2":{"2543":1}}],["allocate",{"2":{"1820":1,"2142":1,"2576":1}}],["allocated",{"2":{"689":1,"2576":1}}],["allowing",{"2":{"64":1,"82":1,"98":1,"103":1,"107":1,"109":1,"125":1,"126":1,"185":1,"229":1,"234":1,"496":1,"592":1,"606":1,"681":1,"1335":1,"1375":1,"1684":1,"1725":1,"1885":1,"1893":1,"1946":1,"2031":1,"2129":1,"2263":1,"2441":2,"2577":3,"2593":1,"2737":1}}],["allowed",{"2":{"28":1,"173":1,"189":1,"459":1,"659":1,"1670":1,"1673":1,"2128":1,"2161":1,"2595":1,"2737":1}}],["allows",{"2":{"24":1,"30":1,"33":1,"46":1,"49":3,"50":1,"99":1,"105":2,"107":2,"152":1,"153":1,"154":1,"164":1,"166":2,"172":1,"228":2,"230":2,"231":2,"246":1,"247":1,"262":1,"265":1,"309":1,"310":1,"328":1,"370":1,"374":1,"403":1,"405":1,"413":1,"502":1,"505":1,"508":1,"511":1,"515":3,"519":1,"597":2,"611":1,"660":1,"689":1,"1217":1,"1331":1,"1332":1,"1334":1,"1364":1,"1377":1,"1385":1,"1405":1,"1423":1,"1447":1,"1454":1,"1457":1,"1459":1,"1494":1,"1498":2,"1556":1,"1563":1,"1573":1,"1581":1,"1662":1,"1670":1,"1678":1,"1723":1,"1787":1,"1798":1,"1804":2,"1807":1,"1821":1,"1857":1,"1870":1,"1872":2,"1879":1,"1918":1,"1944":1,"1959":1,"2072":1,"2130":1,"2131":3,"2154":1,"2162":1,"2226":1,"2228":1,"2241":2,"2263":8,"2289":1,"2311":1,"2327":1,"2349":1,"2355":1,"2429":1,"2457":1,"2490":1,"2492":1,"2510":1,"2523":1,"2534":1,"2559":1,"2566":1,"2575":1,"2577":2,"2627":1,"2628":1,"2645":1,"2672":1,"2737":1,"2753":1}}],["allow",{"0":{"164":1,"1519":1},"2":{"6":2,"10":1,"45":1,"49":1,"63":4,"65":2,"70":1,"74":5,"90":2,"93":2,"99":1,"110":1,"113":1,"114":7,"118":1,"125":3,"142":1,"149":1,"160":5,"172":1,"176":7,"185":3,"189":1,"191":6,"199":5,"202":1,"203":1,"211":2,"213":1,"222":2,"234":1,"236":6,"249":2,"277":1,"334":1,"429":1,"431":2,"499":1,"505":1,"560":2,"567":1,"606":1,"695":1,"699":1,"1129":1,"1174":1,"1195":1,"1269":1,"1271":1,"1287":1,"1292":1,"1299":1,"1335":2,"1340":1,"1353":1,"1356":1,"1370":1,"1385":1,"1445":1,"1448":1,"1459":1,"1519":2,"1531":1,"1549":1,"1554":1,"1560":1,"1655":1,"1658":1,"1671":3,"1716":2,"1718":1,"1874":2,"1893":1,"2145":1,"2169":1,"2170":1,"2226":1,"2228":1,"2250":1,"2305":1,"2311":1,"2396":1,"2398":1,"2403":1,"2411":1,"2490":1,"2491":1,"2564":1,"2567":1,"2571":1,"2577":2,"2644":1,"2648":1,"2661":1,"2746":1}}],["alls",{"2":{"211":2}}],["all|txbolt|geminipr",{"2":{"176":1}}],["allison",{"2":{"143":4,"211":1}}],["all",{"0":{"426":1,"649":1,"677":1,"743":1,"747":1,"770":1,"774":1,"802":1,"806":1,"834":1,"838":1,"869":1,"873":1,"903":1,"907":1,"937":1,"941":1,"971":1,"975":1,"1005":1,"1009":1,"1039":1,"1043":1,"1073":1,"1077":1,"1107":1,"1111":1,"1160":1,"1164":1,"1381":1,"1745":1,"1972":1,"2564":1},"1":{"650":1,"678":1,"744":1,"748":1,"771":1,"775":1,"803":1,"807":1,"835":1,"839":1,"870":1,"874":1,"904":1,"908":1,"938":1,"942":1,"972":1,"976":1,"1006":1,"1010":1,"1040":1,"1044":1,"1074":1,"1078":1,"1108":1,"1112":1,"1161":1,"1165":1,"1746":1,"1973":1},"2":{"1":1,"3":1,"4":1,"7":1,"8":1,"14":1,"15":1,"16":1,"22":1,"25":1,"26":1,"32":1,"36":1,"49":3,"57":1,"65":1,"69":1,"77":1,"83":1,"98":1,"111":2,"113":1,"114":4,"120":1,"124":1,"126":1,"134":1,"149":1,"160":1,"163":2,"176":2,"182":1,"191":2,"194":2,"199":2,"204":1,"211":14,"249":1,"255":1,"265":2,"266":1,"268":3,"277":1,"313":2,"317":1,"318":1,"322":1,"331":1,"336":2,"349":2,"351":1,"352":1,"359":1,"360":2,"370":2,"374":2,"375":2,"382":1,"383":1,"387":1,"396":1,"400":3,"401":1,"429":1,"433":6,"435":1,"437":1,"451":1,"455":2,"462":1,"466":1,"482":1,"483":2,"496":2,"500":1,"505":1,"515":1,"530":4,"533":1,"538":1,"540":1,"546":1,"556":2,"557":1,"560":1,"572":2,"580":1,"587":1,"593":2,"594":2,"597":1,"612":1,"626":1,"627":2,"635":1,"649":1,"654":1,"661":1,"677":1,"688":1,"693":1,"694":2,"701":2,"734":1,"743":1,"747":1,"760":1,"770":1,"774":1,"790":1,"802":1,"806":1,"824":1,"834":1,"838":1,"857":1,"869":1,"873":1,"891":1,"903":1,"907":1,"925":1,"937":1,"941":1,"959":1,"971":1,"975":1,"993":1,"1005":1,"1009":1,"1027":1,"1039":1,"1043":1,"1061":1,"1073":1,"1077":1,"1095":1,"1107":1,"1111":1,"1128":1,"1148":1,"1160":1,"1164":1,"1215":1,"1223":1,"1241":1,"1255":1,"1265":2,"1270":1,"1271":1,"1273":1,"1300":2,"1312":1,"1325":1,"1326":3,"1329":1,"1332":2,"1335":1,"1336":1,"1338":1,"1341":5,"1346":3,"1354":1,"1355":1,"1357":1,"1359":2,"1371":1,"1372":1,"1373":1,"1376":1,"1377":1,"1381":3,"1383":1,"1385":5,"1394":1,"1398":3,"1403":1,"1404":1,"1405":1,"1410":1,"1416":1,"1431":1,"1432":1,"1451":2,"1459":1,"1471":1,"1497":1,"1499":1,"1510":1,"1518":4,"1522":1,"1524":1,"1525":2,"1530":1,"1560":1,"1570":1,"1572":1,"1573":1,"1630":1,"1657":1,"1659":1,"1663":1,"1665":2,"1670":2,"1671":1,"1672":1,"1673":2,"1674":1,"1686":2,"1722":2,"1725":2,"1726":3,"1730":1,"1745":1,"1791":2,"1793":2,"1806":1,"1820":1,"1822":3,"1823":2,"1826":4,"1863":1,"1876":1,"1878":1,"1885":1,"1890":1,"1892":1,"1900":1,"1921":1,"1936":1,"1946":2,"1947":3,"1948":2,"1949":4,"1954":1,"1958":1,"1972":1,"2037":1,"2041":1,"2044":3,"2063":1,"2066":1,"2072":1,"2075":1,"2106":2,"2107":1,"2112":4,"2113":7,"2128":1,"2132":1,"2142":1,"2145":1,"2148":1,"2149":3,"2155":1,"2162":4,"2165":2,"2167":1,"2168":1,"2171":1,"2177":1,"2181":1,"2182":1,"2183":4,"2229":1,"2230":1,"2235":1,"2240":1,"2252":2,"2255":1,"2260":1,"2262":13,"2263":4,"2270":1,"2272":1,"2273":1,"2275":1,"2276":1,"2279":2,"2280":1,"2294":2,"2295":1,"2297":1,"2299":1,"2302":4,"2305":1,"2308":1,"2311":3,"2319":1,"2320":1,"2322":1,"2344":1,"2347":1,"2353":2,"2355":1,"2367":1,"2371":2,"2374":1,"2401":1,"2405":1,"2410":1,"2411":1,"2420":1,"2424":1,"2431":1,"2438":1,"2447":2,"2448":1,"2450":1,"2458":1,"2461":1,"2468":5,"2474":1,"2477":1,"2478":1,"2480":1,"2499":1,"2502":3,"2504":1,"2506":1,"2514":1,"2521":1,"2526":1,"2529":1,"2530":1,"2534":1,"2541":1,"2542":1,"2546":1,"2548":2,"2553":1,"2564":2,"2566":7,"2567":1,"2568":1,"2571":1,"2574":1,"2576":11,"2577":5,"2585":2,"2586":1,"2592":2,"2593":1,"2647":1,"2656":1,"2671":1,"2686":1,"2698":2,"2703":1,"2705":2,"2708":1,"2709":1,"2722":1,"2724":1,"2727":1,"2728":1,"2735":3,"2736":3,"2740":1,"2744":1,"2747":1,"2749":1,"2752":1,"2754":3,"2755":1,"2757":2}}],["ast1109mltrq",{"2":{"2528":1}}],["astr",{"2":{"2378":1,"2399":1}}],["astro65",{"2":{"114":1}}],["asterisk",{"2":{"2355":1,"2378":1,"2394":1,"2399":1}}],["asian",{"2":{"2181":1}}],["aside",{"2":{"1300":1,"2319":1}}],["as5",{"2":{"1793":1,"2371":1}}],["as400",{"2":{"2355":1,"2394":1}}],["as4",{"2":{"1793":1,"2371":1}}],["as3",{"2":{"1793":1,"2371":1}}],["as2",{"2":{"1793":1,"2371":1}}],["as1",{"2":{"1793":1,"2371":1}}],["asd",{"2":{"1684":2}}],["asdf2",{"2":{"390":5}}],["ask",{"0":{"356":1},"2":{"466":1,"551":3,"559":1,"560":1,"2252":1,"2255":1,"2292":1,"2418":1,"2450":1,"2512":1,"2568":1,"2745":1}}],["asked",{"0":{"1237":1,"1256":1},"1":{"1238":1,"1239":1,"1240":1,"1241":1,"1242":1,"1243":1,"1257":1,"1258":1,"1259":1,"1260":1,"1261":1,"1262":1,"1263":1,"1264":1,"1265":1},"2":{"265":1,"275":1,"626":1,"2351":1,"2450":1,"2567":1}}],["aspects",{"2":{"313":1,"1346":1,"1498":1}}],["asynchronously",{"2":{"334":1}}],["asynchronous",{"2":{"312":1,"318":1}}],["asyncusb",{"2":{"266":1}}],["async",{"0":{"263":1},"2":{"266":1,"277":1}}],["asymmetric",{"2":{"160":1,"1326":2}}],["asym",{"2":{"114":1,"1326":5,"1329":1,"2674":1}}],["ashpil",{"2":{"207":2}}],["ascii",{"0":{"1277":1,"2089":1,"2588":1},"1":{"2090":1},"2":{"176":2,"1359":1,"1451":1,"1923":2,"2072":1,"2074":1,"2075":1,"2076":1,"2081":1,"2083":1,"2085":1,"2087":1,"2089":1,"2090":1,"2575":8,"2585":2,"2587":3,"2588":6,"2589":3,"2590":2,"2672":2,"2676":1,"2711":3}}],["asst",{"2":{"2355":1,"2393":1}}],["associate",{"2":{"2171":1}}],["associated",{"2":{"175":1,"240":1,"317":1,"503":1,"504":1,"554":2,"1451":1,"2147":1,"2148":1,"2171":3,"2311":1,"2535":1,"2567":1,"2599":1,"2600":3,"2688":1,"2695":1}}],["assistance",{"2":{"2450":1}}],["assistant",{"2":{"2355":2,"2393":2}}],["assist",{"2":{"1264":1,"2047":1}}],["assigns",{"2":{"2315":1,"2616":1}}],["assigned",{"2":{"629":1,"1525":1,"1874":1,"1875":1}}],["assigning",{"2":{"570":1,"2277":1,"2524":1}}],["assignment",{"0":{"2747":1},"2":{"133":1,"134":2,"473":1,"2564":1,"2686":1}}],["assignments",{"2":{"17":1,"114":1,"1530":2,"2530":1,"2576":2}}],["assign",{"2":{"48":1,"235":1,"629":1,"1235":1,"1236":1,"1557":1,"1631":1,"1724":1,"1880":1,"1930":1,"1945":1,"2042":1,"2319":2,"2396":1,"2663":1,"2710":1}}],["assembled",{"2":{"1827":1}}],["assembler",{"2":{"134":1}}],["assertion",{"2":{"335":1}}],["assert",{"2":{"334":1,"1181":1,"1539":1,"1541":1,"1543":1,"2587":1,"2588":1,"2593":1,"2594":1,"2596":1,"2598":1}}],["assuming",{"2":{"696":4,"1959":1,"2149":1,"2169":1,"2577":2}}],["assume",{"2":{"334":1,"567":1,"587":1,"2256":1,"2445":1,"2742":1}}],["assumes",{"2":{"322":1,"1122":1,"1362":1,"1813":1,"2076":1,"2106":1,"2116":1,"2124":1,"2128":1,"2131":2,"2137":1,"2169":1,"2255":1,"2256":1,"2472":1,"2541":1,"2711":1,"2742":2}}],["assumed",{"2":{"14":1,"141":1,"201":1,"278":1,"416":1,"509":1,"1314":1,"1332":1,"1731":1,"1955":1,"2124":1,"2152":1,"2267":1,"2513":1,"2544":1}}],["assumptions",{"2":{"149":1,"191":1}}],["as",{"0":{"6":1,"285":1,"1668":1,"1792":1,"1891":1,"2308":1,"2329":1,"2331":1,"2333":1},"1":{"1673":1,"1674":1,"1675":1,"1892":1,"2330":1,"2332":1,"2334":1},"2":{"6":1,"8":1,"31":2,"37":1,"49":3,"50":5,"55":1,"56":1,"57":1,"65":1,"67":1,"69":1,"76":1,"86":1,"87":1,"90":1,"99":1,"103":2,"107":2,"114":2,"116":1,"118":1,"120":1,"123":1,"124":2,"125":1,"126":2,"131":1,"132":4,"149":1,"152":2,"153":3,"156":2,"160":2,"163":1,"166":1,"169":1,"170":1,"173":2,"175":1,"176":3,"179":1,"184":2,"185":1,"189":1,"191":2,"194":2,"198":5,"199":2,"201":3,"211":1,"213":4,"215":3,"224":5,"228":1,"229":3,"230":1,"231":1,"232":3,"233":1,"234":3,"235":1,"236":1,"238":1,"240":3,"243":3,"244":1,"246":1,"249":2,"254":1,"262":1,"263":7,"265":2,"266":1,"272":2,"273":1,"275":1,"276":3,"278":1,"292":1,"303":1,"313":2,"317":1,"331":3,"334":1,"335":1,"341":1,"352":3,"363":1,"371":1,"374":5,"385":1,"401":1,"402":1,"403":1,"404":1,"414":1,"430":2,"432":3,"445":2,"453":4,"454":1,"455":3,"457":1,"461":1,"462":1,"466":2,"468":1,"472":2,"473":1,"479":1,"483":2,"487":1,"493":1,"505":4,"511":3,"512":2,"513":2,"515":1,"516":1,"523":1,"524":1,"529":5,"533":1,"534":1,"539":1,"551":2,"554":1,"557":1,"560":2,"562":1,"568":1,"571":1,"575":2,"576":2,"581":2,"584":1,"586":4,"587":4,"592":5,"598":1,"606":4,"607":1,"610":1,"612":2,"619":1,"620":1,"625":3,"626":2,"628":3,"629":4,"630":2,"635":3,"639":1,"641":1,"654":1,"656":3,"660":2,"662":1,"669":1,"681":1,"684":5,"685":2,"689":1,"690":2,"691":2,"692":1,"694":6,"696":8,"700":1,"701":1,"703":1,"732":1,"790":1,"824":1,"852":4,"857":1,"891":1,"925":1,"959":1,"993":1,"1023":4,"1027":1,"1057":4,"1061":1,"1095":1,"1121":1,"1122":2,"1123":2,"1126":4,"1127":1,"1129":3,"1130":1,"1134":1,"1143":1,"1148":1,"1175":1,"1177":4,"1181":1,"1198":2,"1216":1,"1217":1,"1218":2,"1225":1,"1234":1,"1236":1,"1240":1,"1242":1,"1254":1,"1258":1,"1265":1,"1283":1,"1287":2,"1294":2,"1298":1,"1300":2,"1302":1,"1303":2,"1331":1,"1332":4,"1335":6,"1336":2,"1338":3,"1339":1,"1340":2,"1341":1,"1343":1,"1344":1,"1345":1,"1346":1,"1347":1,"1354":1,"1359":3,"1361":1,"1364":1,"1366":1,"1368":1,"1376":1,"1377":2,"1378":2,"1379":2,"1380":2,"1385":3,"1387":1,"1391":2,"1392":1,"1395":1,"1396":2,"1398":1,"1399":2,"1403":1,"1405":2,"1411":1,"1412":1,"1414":2,"1416":1,"1427":1,"1430":1,"1431":3,"1432":1,"1434":6,"1435":6,"1436":3,"1440":2,"1441":2,"1445":2,"1446":1,"1447":2,"1451":8,"1453":2,"1454":2,"1459":2,"1462":1,"1492":1,"1496":1,"1498":2,"1499":4,"1500":3,"1503":1,"1509":1,"1511":2,"1512":1,"1515":1,"1517":1,"1518":4,"1522":1,"1525":1,"1527":3,"1528":1,"1538":1,"1551":1,"1552":1,"1553":1,"1560":1,"1562":2,"1573":3,"1577":1,"1579":1,"1581":1,"1582":1,"1594":1,"1630":1,"1633":2,"1634":2,"1635":1,"1637":1,"1638":1,"1642":1,"1645":1,"1666":2,"1668":1,"1670":5,"1675":2,"1676":1,"1677":1,"1683":1,"1685":1,"1714":1,"1716":2,"1719":1,"1720":1,"1722":2,"1723":1,"1725":3,"1728":1,"1729":1,"1733":1,"1788":2,"1791":1,"1793":1,"1802":2,"1803":2,"1805":1,"1807":3,"1814":1,"1815":1,"1820":1,"1821":1,"1822":1,"1824":1,"1829":1,"1863":2,"1870":3,"1874":1,"1875":1,"1885":6,"1886":7,"1887":1,"1889":1,"1890":1,"1892":1,"1894":1,"1895":1,"1897":2,"1898":1,"1899":1,"1900":2,"1901":1,"1902":1,"1907":1,"1912":1,"1915":1,"1918":2,"1933":3,"1934":1,"1935":1,"1939":2,"1940":2,"1941":4,"1944":1,"1946":3,"1948":1,"1950":4,"1952":1,"1957":2,"2017":1,"2034":1,"2041":1,"2042":2,"2046":1,"2059":1,"2060":1,"2063":2,"2072":1,"2075":1,"2102":4,"2106":1,"2107":2,"2112":1,"2113":1,"2114":3,"2118":1,"2122":1,"2125":1,"2126":1,"2128":4,"2129":1,"2130":1,"2131":3,"2133":2,"2134":1,"2139":1,"2143":1,"2146":2,"2147":1,"2148":1,"2149":3,"2150":4,"2152":2,"2153":1,"2155":1,"2157":2,"2161":1,"2162":1,"2168":3,"2169":2,"2170":4,"2171":4,"2181":2,"2182":3,"2183":4,"2221":1,"2227":1,"2228":1,"2229":2,"2230":1,"2231":4,"2232":1,"2234":2,"2235":1,"2236":1,"2237":1,"2238":4,"2240":1,"2241":1,"2242":1,"2245":1,"2247":1,"2249":1,"2250":1,"2252":3,"2254":1,"2262":5,"2263":5,"2267":4,"2268":2,"2269":1,"2270":1,"2272":1,"2273":1,"2274":1,"2275":2,"2276":6,"2277":1,"2279":1,"2280":1,"2292":1,"2294":2,"2295":1,"2296":1,"2297":1,"2299":3,"2300":1,"2302":1,"2303":3,"2305":1,"2306":2,"2308":1,"2311":6,"2317":1,"2318":1,"2322":1,"2329":1,"2331":1,"2333":1,"2341":1,"2344":1,"2347":1,"2348":3,"2349":1,"2350":1,"2353":1,"2355":2,"2358":6,"2367":1,"2370":6,"2371":1,"2394":1,"2396":7,"2397":1,"2401":2,"2402":1,"2405":1,"2406":2,"2408":2,"2410":1,"2421":1,"2427":1,"2441":1,"2442":1,"2443":1,"2445":3,"2448":2,"2458":2,"2460":1,"2463":1,"2466":1,"2468":1,"2474":1,"2477":2,"2479":2,"2483":1,"2490":5,"2491":1,"2492":3,"2501":2,"2503":3,"2506":3,"2508":1,"2511":1,"2513":1,"2514":1,"2519":2,"2523":2,"2524":2,"2525":1,"2526":1,"2533":1,"2542":1,"2543":1,"2544":1,"2546":5,"2548":2,"2549":1,"2550":3,"2552":1,"2553":1,"2554":1,"2556":1,"2564":2,"2566":13,"2567":4,"2568":1,"2569":2,"2570":1,"2571":2,"2573":6,"2574":1,"2575":6,"2576":1,"2577":10,"2584":1,"2585":1,"2589":1,"2592":1,"2601":1,"2607":1,"2608":1,"2614":3,"2615":2,"2616":2,"2619":2,"2620":3,"2622":1,"2628":1,"2654":2,"2660":1,"2666":1,"2671":1,"2672":2,"2677":2,"2686":3,"2699":2,"2701":2,"2706":2,"2708":1,"2710":1,"2711":4,"2718":2,"2719":2,"2720":1,"2728":6,"2734":2,"2735":8,"2736":3,"2737":3,"2738":1,"2741":1,"2743":2,"2745":2,"2749":1,"2752":1,"2757":2}}],["at25sf128a",{"2":{"2544":2}}],["ation",{"2":{"1943":1}}],["atm32u4dfu",{"2":{"629":1}}],["atm16u4",{"2":{"629":1}}],["atmel",{"0":{"487":1,"493":1,"2230":1,"2343":1},"1":{"2231":1,"2232":1},"2":{"111":1,"240":3,"493":1,"514":2,"629":7,"2230":2,"2343":1,"2348":1,"2450":1,"2453":2,"2622":1,"2623":1}}],["atmega16",{"2":{"633":1,"702":2,"1176":1,"1197":2,"1466":2,"1467":2}}],["atmega16u4",{"2":{"487":1,"2343":1}}],["atmega16u2",{"2":{"64":1,"92":1,"487":1,"629":1}}],["atmega32a",{"2":{"235":1,"487":1,"633":1,"702":1,"1176":1,"1197":1,"1466":1,"1467":1,"2345":1,"2346":2}}],["atmega32u4",{"0":{"1905":1},"2":{"70":1,"111":1,"385":1,"487":1,"514":1,"638":1,"655":1,"663":1,"1238":4,"1240":1,"1293":1,"1387":1,"1821":1,"1907":1,"2114":1,"2269":5,"2343":1,"2344":1,"2347":1,"2450":1,"2453":5,"2545":1,"2553":1,"2718":1,"2743":1}}],["atmega32u2",{"2":{"63":1,"64":1,"487":1,"629":1}}],["atmega328p",{"2":{"64":1,"487":1,"2236":1,"2346":2}}],["atmega328",{"2":{"64":1,"487":1,"633":2,"702":1,"1176":1,"1197":1,"1466":1,"1467":1}}],["atlas",{"2":{"211":1}}],["atsamd51j18a",{"2":{"493":1}}],["atsam",{"0":{"493":1},"2":{"75":1,"114":4,"134":1,"160":1,"277":1,"493":1,"696":1}}],["atop",{"2":{"69":1}}],["atomically",{"2":{"698":1}}],["atomic",{"0":{"698":1},"2":{"64":1,"277":1,"698":5}}],["atom47",{"2":{"57":4,"114":1}}],["at90usb1286",{"2":{"2269":1}}],["at90usb128",{"2":{"487":1,"629":1,"2335":2,"2343":2}}],["at90usb162",{"2":{"74":1,"487":1,"1466":1,"1467":1}}],["at90usb64",{"2":{"487":1,"629":1,"633":1,"702":1,"1176":1,"1197":1,"1466":1,"1467":1,"2343":2}}],["at90usb",{"2":{"63":1}}],["attain",{"2":{"2566":1}}],["attacking",{"2":{"1406":1}}],["attach",{"0":{"2581":1},"2":{"2581":4}}],["attachment",{"2":{"1289":1,"2581":1}}],["attaching",{"2":{"82":1,"2581":1}}],["attached",{"2":{"49":1,"1462":1,"1533":1,"1576":2,"1577":1,"1870":1,"2031":1,"2125":1,"2268":3,"2311":1}}],["attribution",{"2":{"2553":2}}],["attribute",{"2":{"436":1,"438":1,"439":1,"566":4,"1383":2,"1385":1,"1581":1,"2228":1,"2587":1,"2588":1,"2589":2,"2593":1,"2594":1,"2595":1,"2596":1,"2597":1,"2598":1,"2599":1,"2706":1}}],["attributes",{"2":{"110":1,"435":1,"2513":2}}],["attractive",{"2":{"2270":1}}],["attrs",{"2":{"1254":2}}],["attiny85",{"2":{"1220":2}}],["attenuate",{"2":{"1863":5}}],["attenuation",{"2":{"176":1,"191":1,"1863":6}}],["attention",{"2":{"341":1,"618":1,"2125":1,"2355":1,"2392":1}}],["attempted",{"2":{"263":1,"1312":1,"2450":1}}],["attempts",{"2":{"87":1,"303":1,"660":1,"2066":1,"2128":2,"2256":1,"2742":1}}],["attempting",{"2":{"51":1,"123":1,"240":1,"1252":1,"2130":1,"2353":1,"2453":1,"2524":1}}],["attempt",{"2":{"51":1,"123":1,"182":1,"726":2,"1385":1,"2128":3,"2221":1,"2234":1,"2270":1,"2454":1}}],["at101",{"2":{"37":2,"159":2,"160":1}}],["at",{"0":{"2167":1},"2":{"4":1,"11":1,"21":1,"25":1,"28":1,"65":2,"73":1,"75":1,"114":1,"124":1,"134":2,"149":2,"152":1,"156":1,"157":1,"191":2,"199":1,"203":1,"211":1,"222":1,"229":2,"231":1,"241":2,"249":3,"251":1,"265":3,"266":2,"277":1,"315":2,"336":1,"341":1,"349":1,"350":1,"352":1,"414":1,"430":2,"433":1,"453":5,"462":2,"465":1,"470":1,"482":1,"483":2,"485":1,"496":2,"497":1,"508":1,"515":1,"517":2,"533":2,"534":2,"545":2,"549":1,"557":1,"567":1,"568":3,"574":1,"576":1,"584":1,"586":1,"587":2,"588":1,"597":1,"598":2,"605":1,"614":1,"624":1,"626":1,"627":2,"631":1,"635":1,"660":1,"668":1,"684":1,"689":3,"692":1,"698":1,"726":1,"733":1,"759":1,"789":1,"823":1,"856":1,"890":1,"924":1,"958":1,"992":1,"1026":1,"1060":1,"1094":1,"1121":1,"1127":1,"1130":1,"1147":1,"1181":2,"1201":1,"1226":1,"1230":1,"1241":1,"1242":1,"1250":1,"1253":1,"1270":1,"1300":1,"1311":1,"1312":1,"1329":2,"1335":1,"1336":2,"1380":1,"1383":1,"1385":1,"1390":1,"1394":1,"1397":3,"1398":1,"1400":1,"1405":1,"1416":2,"1440":1,"1441":1,"1446":1,"1451":2,"1452":2,"1459":2,"1469":1,"1470":1,"1471":1,"1499":2,"1501":1,"1508":1,"1514":1,"1522":1,"1530":1,"1531":1,"1533":2,"1548":1,"1553":1,"1555":1,"1559":1,"1562":2,"1577":1,"1581":1,"1589":1,"1620":1,"1621":1,"1636":1,"1675":1,"1676":1,"1697":1,"1731":1,"1733":1,"1798":1,"1799":1,"1802":2,"1803":1,"1804":6,"1805":1,"1806":1,"1807":3,"1814":1,"1815":1,"1821":1,"1822":12,"1824":1,"1854":1,"1856":1,"1863":1,"1870":3,"1872":1,"1885":1,"1907":1,"1921":1,"1948":1,"1949":7,"1955":1,"1957":1,"1959":1,"2032":1,"2034":1,"2036":1,"2040":1,"2044":1,"2051":5,"2054":12,"2058":1,"2105":1,"2106":1,"2111":1,"2117":2,"2120":2,"2125":4,"2130":1,"2139":1,"2143":11,"2145":1,"2146":1,"2150":2,"2151":1,"2152":2,"2162":1,"2169":2,"2171":1,"2181":1,"2184":2,"2226":3,"2243":1,"2245":1,"2247":1,"2249":1,"2255":1,"2262":1,"2263":3,"2270":1,"2272":1,"2273":3,"2274":1,"2279":1,"2302":2,"2303":2,"2307":1,"2309":1,"2311":4,"2316":1,"2320":1,"2326":1,"2349":1,"2353":9,"2378":1,"2384":2,"2399":1,"2401":1,"2404":1,"2405":1,"2411":2,"2417":1,"2422":1,"2423":1,"2432":1,"2438":1,"2443":1,"2447":1,"2450":1,"2454":1,"2466":1,"2467":1,"2468":1,"2474":4,"2477":1,"2480":1,"2482":1,"2490":1,"2497":1,"2498":3,"2513":5,"2521":1,"2523":1,"2524":2,"2525":1,"2526":1,"2529":1,"2554":1,"2556":1,"2564":1,"2566":7,"2567":1,"2570":1,"2573":1,"2574":3,"2575":1,"2576":2,"2577":8,"2578":1,"2587":2,"2594":2,"2636":1,"2653":1,"2662":1,"2671":2,"2699":1,"2705":1,"2710":1,"2720":3,"2728":2,"2730":1,"2743":1,"2745":1,"2746":2,"2747":1,"2748":2,"2749":3,"2753":1,"2756":1,"2757":1}}],["atreus",{"0":{"4":1},"2":{"176":1,"277":1}}],["ancient",{"2":{"2549":1}}],["anchors",{"2":{"279":3}}],["anchor",{"2":{"222":1,"279":1}}],["analysis",{"2":{"2492":1}}],["analogue",{"2":{"2275":1}}],["analogreference",{"2":{"638":1}}],["analogreadpinadc",{"2":{"639":1}}],["analogreadpin",{"2":{"50":1,"638":1,"639":1}}],["analogread",{"2":{"50":1,"133":1,"134":1}}],["analog",{"0":{"1857":1},"2":{"49":1,"74":1,"118":2,"149":1,"191":1,"199":2,"234":6,"236":1,"249":1,"630":1,"631":1,"638":1,"1634":2,"1635":2,"1637":1,"1642":1,"1644":4,"1650":1,"1791":1,"1857":22}}],["anatomy",{"0":{"2404":1},"1":{"2405":1,"2406":1,"2407":1,"2408":1}}],["anodes",{"2":{"734":1,"760":1,"790":1,"824":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1148":1}}],["another",{"2":{"95":1,"149":2,"194":1,"233":1,"251":1,"268":1,"341":1,"450":1,"505":2,"623":1,"1320":1,"1340":1,"1359":2,"1375":1,"1391":1,"1393":1,"1396":1,"1411":1,"1431":1,"1446":1,"1451":1,"1501":1,"1515":1,"1519":1,"1524":2,"1554":1,"1573":1,"1671":1,"1674":1,"1929":1,"1930":1,"1933":1,"2118":1,"2150":1,"2152":2,"2162":1,"2169":1,"2177":1,"2235":1,"2245":1,"2247":1,"2249":1,"2309":1,"2327":1,"2348":1,"2404":1,"2474":1,"2497":1,"2498":1,"2508":1,"2566":2,"2576":2,"2651":1,"2654":1,"2729":3,"2735":4,"2736":4,"2738":3,"2751":1}}],["answer",{"2":{"465":1,"551":2,"2468":4}}],["ansi",{"0":{"35":1,"2378":1,"2397":1},"1":{"36":1,"2398":1,"2399":1},"2":{"35":1,"36":4,"99":1,"102":1,"114":1,"149":1,"159":2,"168":2,"176":1,"188":1,"191":1,"207":1,"211":4,"217":2,"226":6,"259":2,"260":1,"266":2,"277":1,"370":3,"385":1,"435":1,"1268":3,"1346":3,"1347":3,"1355":1,"1378":2,"2076":1,"2106":1,"2302":5,"2378":1,"2397":1,"2445":1,"2553":1,"2566":1,"2686":4,"2710":1,"2711":1,"2712":10}}],["anti",{"2":{"381":1,"2575":1,"2689":1}}],["anticipation",{"2":{"86":1}}],["anticipated",{"2":{"2":1,"1412":1}}],["annotation",{"2":{"480":1}}],["annotated",{"0":{"480":1}}],["announce",{"2":{"224":1,"345":1,"346":1,"349":1}}],["annepro2",{"2":{"191":1,"249":1,"266":2}}],["anim",{"2":{"2577":4}}],["animtion",{"2":{"191":1}}],["animate",{"2":{"2040":1,"2577":9}}],["animated",{"2":{"153":1,"2311":1,"2573":1,"2575":1,"2577":1}}],["animation",{"0":{"2037":1,"2038":1,"2040":1},"2":{"49":2,"160":1,"191":5,"222":1,"236":1,"249":1,"404":1,"1727":2,"1728":1,"1730":3,"1743":1,"1745":1,"1776":1,"1778":1,"1780":1,"1783":1,"1817":2,"1948":2,"1949":3,"1954":3,"1970":1,"1972":1,"2021":1,"2023":1,"2025":1,"2028":1,"2034":10,"2036":1,"2037":11,"2038":10,"2040":6,"2052":4,"2055":4,"2369":2,"2376":10,"2577":6,"2584":1,"2595":1,"2688":4,"2694":2,"2695":4}}],["animations",{"0":{"2036":1,"2049":1},"1":{"2037":1,"2038":1,"2039":1,"2040":1,"2050":1,"2051":1,"2052":1,"2053":1,"2054":1,"2055":1,"2056":1,"2057":1},"2":{"32":1,"124":5,"153":1,"176":1,"191":1,"199":1,"211":1,"222":1,"236":1,"1725":2,"1727":2,"1729":1,"1946":2,"1952":1,"2037":4,"2038":1,"2039":2,"2040":6,"2041":1,"2052":6,"2369":2,"2566":1,"2573":1,"2574":4,"2575":1,"2577":1,"2596":1,"2688":3,"2694":2,"2695":3,"2708":4}}],["angle65",{"2":{"211":1}}],["angle",{"2":{"176":2,"1870":2,"2378":2,"2399":2,"2686":1}}],["angel64",{"2":{"143":4}}],["angel17",{"2":{"143":2}}],["an",{"0":{"361":1,"608":1,"1260":1,"1436":1,"1552":1,"2475":1,"2546":1,"2547":1,"2550":1},"1":{"609":1,"610":1,"611":1,"612":1,"613":1,"614":1,"2476":1,"2477":1,"2547":1,"2548":2,"2549":2,"2550":1,"2551":1,"2552":1},"2":{"5":1,"6":1,"14":1,"49":1,"50":1,"73":2,"99":3,"103":1,"126":1,"132":1,"149":1,"158":1,"172":1,"176":1,"182":1,"194":2,"201":1,"203":2,"234":1,"248":1,"249":1,"268":1,"290":1,"304":1,"311":1,"312":1,"318":1,"319":1,"322":2,"327":2,"388":1,"405":1,"409":1,"410":1,"413":1,"414":1,"417":1,"418":1,"428":1,"430":2,"432":1,"436":1,"437":1,"453":1,"454":1,"461":1,"464":1,"465":3,"466":1,"479":1,"485":1,"500":1,"502":2,"506":1,"511":1,"515":1,"519":1,"523":1,"532":1,"540":2,"545":1,"553":1,"554":4,"559":1,"560":2,"561":2,"564":1,"569":1,"570":1,"571":1,"585":2,"606":1,"609":2,"612":1,"613":1,"616":2,"623":2,"627":1,"628":1,"629":1,"636":1,"638":1,"639":1,"641":2,"654":1,"655":1,"657":1,"663":1,"669":1,"683":1,"684":1,"685":1,"687":1,"688":1,"689":2,"690":1,"696":4,"701":1,"703":3,"714":1,"720":1,"734":1,"760":1,"790":1,"824":1,"857":1,"891":1,"925":1,"959":1,"993":1,"1027":1,"1061":1,"1095":1,"1126":1,"1128":1,"1132":1,"1133":1,"1134":2,"1137":1,"1148":1,"1177":1,"1180":1,"1181":2,"1198":1,"1217":1,"1220":1,"1225":1,"1234":1,"1238":1,"1243":1,"1254":1,"1258":1,"1261":1,"1264":1,"1267":1,"1278":1,"1287":1,"1300":1,"1322":1,"1325":2,"1332":2,"1343":1,"1351":1,"1356":1,"1357":1,"1359":3,"1365":1,"1391":1,"1393":1,"1394":1,"1405":1,"1406":1,"1411":1,"1412":1,"1430":2,"1431":1,"1440":1,"1441":2,"1458":1,"1462":1,"1471":1,"1492":2,"1499":2,"1507":1,"1511":1,"1518":1,"1523":1,"1547":1,"1557":1,"1558":1,"1559":1,"1561":1,"1565":1,"1573":1,"1589":1,"1591":1,"1609":1,"1612":1,"1613":1,"1618":1,"1634":3,"1642":1,"1666":1,"1668":2,"1670":1,"1673":1,"1674":2,"1677":1,"1683":1,"1684":1,"1714":1,"1718":1,"1724":2,"1729":1,"1730":2,"1733":1,"1743":1,"1745":1,"1793":2,"1804":2,"1821":1,"1830":1,"1855":1,"1856":1,"1857":2,"1867":1,"1868":1,"1869":1,"1872":1,"1873":1,"1885":1,"1908":1,"1918":1,"1923":1,"1927":1,"1933":1,"1934":1,"1941":1,"1945":2,"1952":1,"1954":2,"1957":1,"1970":1,"1972":1,"2017":1,"2041":2,"2042":2,"2061":2,"2071":2,"2074":1,"2075":1,"2085":1,"2087":1,"2089":1,"2091":1,"2102":1,"2107":2,"2114":1,"2120":1,"2125":1,"2129":2,"2131":1,"2133":1,"2144":2,"2145":1,"2146":1,"2150":1,"2152":1,"2157":2,"2161":1,"2169":4,"2181":2,"2182":1,"2183":1,"2205":1,"2226":1,"2231":1,"2235":1,"2237":1,"2238":1,"2241":3,"2255":1,"2263":1,"2268":1,"2274":2,"2280":1,"2286":1,"2291":1,"2294":1,"2302":4,"2303":2,"2311":2,"2317":1,"2322":1,"2328":1,"2329":1,"2331":2,"2333":1,"2347":1,"2349":1,"2350":1,"2351":1,"2353":1,"2371":2,"2400":1,"2403":1,"2404":1,"2407":1,"2408":1,"2409":1,"2417":1,"2427":2,"2428":3,"2445":1,"2462":1,"2468":1,"2472":1,"2480":2,"2491":1,"2492":3,"2497":1,"2502":1,"2503":1,"2517":1,"2518":2,"2524":1,"2527":1,"2529":1,"2530":1,"2539":1,"2544":2,"2545":1,"2546":2,"2548":1,"2549":1,"2550":4,"2552":1,"2554":2,"2560":1,"2563":1,"2564":3,"2566":8,"2567":2,"2573":1,"2575":3,"2576":2,"2577":5,"2578":2,"2581":1,"2585":1,"2587":2,"2592":1,"2594":1,"2595":1,"2596":1,"2597":1,"2599":1,"2610":2,"2612":1,"2615":2,"2620":1,"2625":1,"2630":1,"2632":1,"2634":1,"2638":1,"2639":1,"2641":1,"2642":1,"2643":1,"2644":1,"2670":1,"2684":1,"2686":1,"2688":2,"2693":1,"2695":2,"2709":1,"2711":1,"2716":1,"2718":1,"2735":1,"2736":1,"2738":1,"2746":1,"2748":1}}],["anding",{"2":{"1300":1}}],["andrebrait",{"2":{"114":2,"191":1}}],["andc",{"2":{"49":1}}],["and",{"0":{"22":1,"35":2,"49":1,"50":1,"51":1,"58":1,"63":1,"64":1,"65":1,"69":1,"70":1,"74":1,"75":1,"76":1,"77":1,"87":1,"93":1,"94":1,"95":1,"113":1,"133":1,"140":1,"190":1,"229":1,"233":1,"273":1,"276":1,"436":1,"442":2,"443":1,"468":1,"478":1,"549":1,"590":1,"1225":1,"1242":1,"1243":1,"1262":1,"1265":1,"1282":1,"1284":1,"1297":1,"1318":1,"1321":1,"1335":1,"1361":1,"1370":1,"1432":1,"1515":1,"1518":1,"1553":1,"1661":1,"1662":1,"1809":1,"1828":1,"1870":1,"1874":1,"1875":1,"1894":1,"1903":1,"1914":1,"1936":1,"2036":1,"2037":1,"2038":1,"2043":1,"2049":1,"2132":1,"2170":1,"2171":1,"2182":1,"2229":1,"2283":1,"2305":1,"2312":1,"2386":1,"2401":1,"2403":1,"2406":1,"2415":1,"2472":1,"2487":1,"2496":1,"2497":1,"2535":1,"2617":1,"2751":1},"1":{"36":2,"88":1,"437":1,"438":1,"439":1,"440":1,"441":1,"443":2,"444":2,"445":2,"446":2,"447":2,"1243":1,"1336":1,"1554":1,"1555":1,"1556":1,"1937":1,"1938":1,"1939":1,"2037":1,"2038":1,"2039":1,"2040":1,"2050":1,"2051":1,"2052":1,"2053":1,"2054":1,"2055":1,"2056":1,"2057":1,"2133":1,"2230":1,"2231":1,"2232":1,"2233":1,"2234":1,"2235":1,"2236":1,"2237":1,"2238":1,"2239":1,"2240":1,"2241":1,"2242":1,"2243":1,"2244":1,"2245":1,"2246":1,"2247":1,"2248":1,"2249":1,"2313":1,"2314":1,"2315":1,"2316":1,"2317":1,"2318":1,"2319":1,"2320":1,"2402":1,"2403":1,"2407":1,"2408":1,"2488":1,"2489":1,"2497":1,"2498":1,"2499":1,"2536":1,"2537":1,"2538":1,"2618":1,"2619":1,"2620":1},"2":{"1":1,"2":2,"3":4,"4":1,"5":2,"6":1,"7":3,"8":1,"10":2,"11":1,"14":2,"15":4,"16":1,"17":1,"18":1,"21":2,"22":1,"24":2,"25":2,"28":2,"30":1,"31":3,"32":5,"33":2,"34":2,"35":1,"36":1,"37":1,"38":1,"43":1,"45":4,"49":12,"50":7,"57":1,"58":1,"63":1,"64":2,"65":3,"67":1,"69":1,"70":19,"72":1,"73":3,"74":2,"75":2,"76":1,"77":1,"84":1,"86":2,"87":2,"90":1,"92":1,"93":5,"94":3,"99":1,"103":1,"107":2,"108":1,"110":2,"113":4,"114":26,"116":1,"118":1,"119":1,"120":2,"124":3,"126":2,"128":1,"130":2,"132":2,"133":1,"134":9,"140":1,"149":10,"152":2,"153":6,"157":2,"160":6,"163":3,"169":1,"172":1,"173":2,"174":2,"175":5,"176":20,"179":1,"182":3,"185":1,"186":1,"187":1,"188":4,"189":1,"190":1,"191":23,"194":6,"195":2,"196":2,"198":6,"199":11,"201":2,"202":2,"203":2,"206":2,"210":2,"211":53,"213":3,"214":1,"218":1,"220":2,"221":1,"222":12,"224":1,"228":6,"229":2,"230":1,"231":3,"232":3,"233":3,"234":1,"235":3,"236":14,"240":2,"244":1,"245":2,"249":14,"251":2,"255":1,"256":1,"257":1,"258":1,"259":4,"262":1,"263":4,"265":2,"266":6,"268":1,"271":1,"273":2,"276":2,"277":6,"282":4,"284":1,"285":1,"288":1,"291":1,"304":5,"305":2,"307":1,"312":2,"313":1,"315":4,"316":1,"318":1,"322":3,"324":3,"328":1,"331":11,"332":1,"334":4,"335":3,"336":2,"340":1,"341":7,"349":1,"350":1,"352":2,"354":1,"355":3,"357":2,"363":4,"365":2,"366":2,"367":1,"370":2,"371":3,"374":7,"375":2,"376":4,"378":2,"381":4,"383":1,"384":1,"385":1,"386":1,"388":1,"389":1,"390":1,"391":1,"393":1,"394":1,"395":1,"396":1,"397":1,"401":3,"402":3,"403":3,"411":1,"413":3,"414":1,"424":2,"428":2,"429":1,"430":4,"431":4,"432":2,"435":2,"436":3,"441":1,"442":3,"446":2,"447":1,"448":1,"453":5,"454":4,"455":1,"457":5,"460":2,"461":1,"462":2,"465":1,"466":1,"468":1,"470":2,"471":1,"472":1,"474":1,"475":1,"479":5,"480":1,"481":5,"483":3,"484":3,"485":1,"486":1,"487":1,"495":3,"496":2,"498":2,"499":2,"501":2,"502":8,"503":1,"505":11,"506":1,"509":3,"510":2,"511":2,"512":1,"513":1,"515":6,"516":1,"519":2,"521":1,"522":3,"525":1,"527":2,"529":1,"533":1,"534":2,"537":2,"540":2,"546":1,"549":1,"550":5,"551":1,"552":3,"554":3,"556":3,"557":1,"558":1,"559":2,"560":5,"561":1,"562":2,"563":2,"564":1,"565":1,"566":3,"567":2,"570":2,"571":2,"572":1,"576":1,"578":1,"580":4,"584":1,"587":1,"588":4,"589":2,"591":2,"592":5,"597":2,"598":1,"606":9,"607":1,"609":4,"610":4,"613":3,"614":1,"615":1,"616":4,"617":2,"621":4,"622":1,"623":1,"624":4,"625":4,"626":5,"627":3,"628":5,"629":5,"630":2,"633":1,"635":4,"636":1,"639":4,"641":1,"642":1,"643":1,"654":1,"656":4,"657":3,"659":3,"660":1,"661":3,"662":1,"663":3,"665":1,"668":1,"669":1,"681":4,"684":1,"685":1,"686":1,"688":2,"689":8,"690":2,"691":2,"692":3,"696":2,"701":3,"702":2,"730":1,"733":1,"734":3,"756":1,"759":1,"760":3,"785":1,"789":1,"790":3,"817":1,"821":3,"823":1,"824":3,"849":1,"851":1,"852":1,"854":3,"856":1,"857":3,"884":1,"886":1,"888":3,"890":1,"891":3,"918":1,"922":3,"924":1,"925":3,"952":1,"956":3,"958":1,"959":3,"986":1,"990":3,"992":1,"993":3,"1020":1,"1022":1,"1023":1,"1024":3,"1026":1,"1027":3,"1054":1,"1056":1,"1057":1,"1058":3,"1060":1,"1061":3,"1088":1,"1090":1,"1092":3,"1094":1,"1095":3,"1121":4,"1122":2,"1123":1,"1125":2,"1126":1,"1127":1,"1128":1,"1129":6,"1130":2,"1132":1,"1133":1,"1134":4,"1136":1,"1144":1,"1147":1,"1148":3,"1176":2,"1194":2,"1195":1,"1197":1,"1201":2,"1212":3,"1213":1,"1215":2,"1216":1,"1217":1,"1219":1,"1221":3,"1222":2,"1223":4,"1224":2,"1225":2,"1226":2,"1227":2,"1230":2,"1235":1,"1236":1,"1237":1,"1238":1,"1240":1,"1241":2,"1243":2,"1249":1,"1252":1,"1254":2,"1258":1,"1259":1,"1261":1,"1262":2,"1263":1,"1264":2,"1265":9,"1268":3,"1269":1,"1270":5,"1271":1,"1272":2,"1273":2,"1275":1,"1276":3,"1278":1,"1279":1,"1283":1,"1284":1,"1286":1,"1287":2,"1288":2,"1290":1,"1291":1,"1293":2,"1294":1,"1298":2,"1299":30,"1300":8,"1303":4,"1310":1,"1312":1,"1314":1,"1316":2,"1317":1,"1319":1,"1320":3,"1325":3,"1326":11,"1328":1,"1329":2,"1331":8,"1332":18,"1333":3,"1334":1,"1335":6,"1336":7,"1338":2,"1339":1,"1340":4,"1341":16,"1344":2,"1346":4,"1347":2,"1349":1,"1351":1,"1352":2,"1353":2,"1354":1,"1356":1,"1359":4,"1360":3,"1361":6,"1363":1,"1364":2,"1366":2,"1368":2,"1370":1,"1371":1,"1375":1,"1376":1,"1377":2,"1378":4,"1379":2,"1380":3,"1383":3,"1384":6,"1385":10,"1386":1,"1387":2,"1388":2,"1390":1,"1391":6,"1393":2,"1394":1,"1396":3,"1397":2,"1398":4,"1402":2,"1403":2,"1404":3,"1405":5,"1406":4,"1409":2,"1411":2,"1412":2,"1413":1,"1416":3,"1417":1,"1419":1,"1423":1,"1428":1,"1429":1,"1430":2,"1431":4,"1433":1,"1434":1,"1435":5,"1436":1,"1438":3,"1439":1,"1440":6,"1441":3,"1442":1,"1445":3,"1446":3,"1447":4,"1448":5,"1450":1,"1451":8,"1452":1,"1453":1,"1454":2,"1458":1,"1459":3,"1462":1,"1463":1,"1471":1,"1492":1,"1494":2,"1495":3,"1499":4,"1500":3,"1501":1,"1503":4,"1506":3,"1508":7,"1509":1,"1511":4,"1512":2,"1515":1,"1516":1,"1518":5,"1519":2,"1520":1,"1522":1,"1523":2,"1524":2,"1525":1,"1526":1,"1528":1,"1531":2,"1533":3,"1539":1,"1540":1,"1541":1,"1542":1,"1543":1,"1544":1,"1545":2,"1547":2,"1551":1,"1552":1,"1553":6,"1555":1,"1556":2,"1557":1,"1558":1,"1559":2,"1560":3,"1561":1,"1562":1,"1563":1,"1565":1,"1568":1,"1570":1,"1573":6,"1574":2,"1576":1,"1577":3,"1578":1,"1582":4,"1587":1,"1594":1,"1600":1,"1612":1,"1614":1,"1615":1,"1621":1,"1622":2,"1628":1,"1630":2,"1631":1,"1633":1,"1634":1,"1636":2,"1637":6,"1638":1,"1646":1,"1648":1,"1650":1,"1655":2,"1659":2,"1662":1,"1665":6,"1666":2,"1668":3,"1670":7,"1671":1,"1673":4,"1674":2,"1675":4,"1676":4,"1677":5,"1680":1,"1684":1,"1685":1,"1691":1,"1717":4,"1722":1,"1725":4,"1728":4,"1729":5,"1773":1,"1787":4,"1788":1,"1791":1,"1794":1,"1798":1,"1799":1,"1802":3,"1803":3,"1804":3,"1805":4,"1806":4,"1807":6,"1809":2,"1813":2,"1814":2,"1815":2,"1816":1,"1820":2,"1821":8,"1822":9,"1824":2,"1825":1,"1828":1,"1830":6,"1832":1,"1841":1,"1843":1,"1853":3,"1855":1,"1857":1,"1858":2,"1859":1,"1860":2,"1862":2,"1863":2,"1865":1,"1866":1,"1867":2,"1869":1,"1870":4,"1871":1,"1872":6,"1873":4,"1874":5,"1875":6,"1876":5,"1878":2,"1879":2,"1880":7,"1881":1,"1882":2,"1883":1,"1885":4,"1886":2,"1887":1,"1888":1,"1890":1,"1892":2,"1894":2,"1895":1,"1897":1,"1899":1,"1900":2,"1901":1,"1902":2,"1903":2,"1905":2,"1906":2,"1907":1,"1908":1,"1911":1,"1912":1,"1914":1,"1917":1,"1918":1,"1920":2,"1921":7,"1922":1,"1923":7,"1929":1,"1930":1,"1932":1,"1933":5,"1934":1,"1935":2,"1936":3,"1937":1,"1939":2,"1940":1,"1941":2,"1943":3,"1946":4,"1948":3,"1949":10,"1951":1,"1952":5,"1959":1,"1960":1,"2012":1,"2014":1,"2016":1,"2018":1,"2032":2,"2033":2,"2034":1,"2036":1,"2037":1,"2038":1,"2039":1,"2042":5,"2043":1,"2044":2,"2051":19,"2052":1,"2053":2,"2054":2,"2055":2,"2060":2,"2061":1,"2063":1,"2064":1,"2065":1,"2069":1,"2071":1,"2078":1,"2079":1,"2099":1,"2102":3,"2103":3,"2106":6,"2110":1,"2113":1,"2114":6,"2115":1,"2116":1,"2117":4,"2118":5,"2119":1,"2120":5,"2122":2,"2124":1,"2125":2,"2126":5,"2127":2,"2128":4,"2129":3,"2130":3,"2131":7,"2132":1,"2133":4,"2134":1,"2137":1,"2139":2,"2140":1,"2142":1,"2143":7,"2144":5,"2145":1,"2146":5,"2147":1,"2148":3,"2149":2,"2150":4,"2152":3,"2154":1,"2155":2,"2157":1,"2160":3,"2161":11,"2162":8,"2164":1,"2169":11,"2170":4,"2171":6,"2172":3,"2175":2,"2177":1,"2178":1,"2181":4,"2182":10,"2183":11,"2196":1,"2197":1,"2198":1,"2217":2,"2221":1,"2225":2,"2226":3,"2228":2,"2229":4,"2230":1,"2231":5,"2232":2,"2233":3,"2234":2,"2235":2,"2236":1,"2237":2,"2238":6,"2239":1,"2240":2,"2241":2,"2242":2,"2243":2,"2244":1,"2245":1,"2246":1,"2247":1,"2248":1,"2249":1,"2250":2,"2252":3,"2254":2,"2255":11,"2259":2,"2260":2,"2261":2,"2262":6,"2263":18,"2264":1,"2266":2,"2267":3,"2268":5,"2269":2,"2270":5,"2271":1,"2272":8,"2273":12,"2274":6,"2275":2,"2276":3,"2277":3,"2278":3,"2279":9,"2280":1,"2281":1,"2284":4,"2286":2,"2292":3,"2293":1,"2294":3,"2295":3,"2296":1,"2297":1,"2299":4,"2300":5,"2301":1,"2302":3,"2303":3,"2304":1,"2305":5,"2306":2,"2307":1,"2308":2,"2309":1,"2311":12,"2312":1,"2313":1,"2314":2,"2316":1,"2319":1,"2322":2,"2324":2,"2326":2,"2327":3,"2328":2,"2331":1,"2335":3,"2341":1,"2342":1,"2343":2,"2344":3,"2345":1,"2346":2,"2347":1,"2348":4,"2349":2,"2350":2,"2351":2,"2353":5,"2355":61,"2361":1,"2367":1,"2370":25,"2373":32,"2374":13,"2385":1,"2386":36,"2388":13,"2389":1,"2391":2,"2393":2,"2394":10,"2396":26,"2397":1,"2398":1,"2401":2,"2402":2,"2403":1,"2405":7,"2406":4,"2407":2,"2408":1,"2410":19,"2411":7,"2414":2,"2415":1,"2417":3,"2418":3,"2419":1,"2420":2,"2421":1,"2423":3,"2425":2,"2428":2,"2429":4,"2430":1,"2431":2,"2435":1,"2436":2,"2437":1,"2438":1,"2439":1,"2440":4,"2441":3,"2442":1,"2443":2,"2444":1,"2445":1,"2446":1,"2447":1,"2448":2,"2450":10,"2451":1,"2452":1,"2454":5,"2455":2,"2456":1,"2457":4,"2458":1,"2460":1,"2461":2,"2462":1,"2464":1,"2468":10,"2472":3,"2473":1,"2474":16,"2475":1,"2477":2,"2478":2,"2479":4,"2480":6,"2490":11,"2492":2,"2496":1,"2497":3,"2498":2,"2501":2,"2502":3,"2503":1,"2504":1,"2506":2,"2507":1,"2508":4,"2509":3,"2510":3,"2512":4,"2513":9,"2514":2,"2516":3,"2517":1,"2518":6,"2519":5,"2522":1,"2523":3,"2524":2,"2525":6,"2526":1,"2529":2,"2530":2,"2533":1,"2535":2,"2540":1,"2541":3,"2542":2,"2543":4,"2544":1,"2546":1,"2548":1,"2549":3,"2550":1,"2553":2,"2555":1,"2556":5,"2557":3,"2558":4,"2559":2,"2562":1,"2564":10,"2565":1,"2566":23,"2567":3,"2568":1,"2569":4,"2570":1,"2571":4,"2573":1,"2574":2,"2575":6,"2576":11,"2577":20,"2578":3,"2581":1,"2582":1,"2584":1,"2585":4,"2586":1,"2587":2,"2590":1,"2591":1,"2592":6,"2594":1,"2596":1,"2603":2,"2605":4,"2607":2,"2608":1,"2611":3,"2612":1,"2614":4,"2615":8,"2616":3,"2619":1,"2622":1,"2625":1,"2633":1,"2637":1,"2638":1,"2643":1,"2648":1,"2651":1,"2652":1,"2654":1,"2656":1,"2657":1,"2659":1,"2662":3,"2665":1,"2670":1,"2671":4,"2674":2,"2677":1,"2683":2,"2686":4,"2687":1,"2689":2,"2697":2,"2700":1,"2701":1,"2702":6,"2703":1,"2704":1,"2707":1,"2708":1,"2709":1,"2710":2,"2711":2,"2714":1,"2718":3,"2719":4,"2720":2,"2721":1,"2722":1,"2723":1,"2724":1,"2725":1,"2727":3,"2728":14,"2729":5,"2730":1,"2734":1,"2735":12,"2736":4,"2737":3,"2738":7,"2740":1,"2743":3,"2744":3,"2745":2,"2746":1,"2747":1,"2748":2,"2749":1,"2750":2,"2751":1,"2752":4,"2753":3,"2756":2,"2757":5}}],["anymore",{"2":{"1511":1}}],["anything",{"2":{"352":1,"568":1,"574":1,"659":1,"660":1,"1260":1,"1336":1,"1353":1,"1383":1,"1404":1,"1933":1,"2145":1,"2263":1,"2316":1,"2348":1,"2405":1,"2411":1,"2480":1,"2513":1,"2516":1,"2521":1,"2526":1,"2567":1,"2667":1,"2737":1}}],["anyways",{"2":{"1137":1}}],["anyway",{"2":{"215":1,"505":1}}],["anywhere",{"2":{"201":1,"327":1,"2169":1,"2183":2,"2276":1}}],["anyone",{"2":{"123":1,"1353":1,"1450":1,"2250":1}}],["any",{"0":{"533":1,"571":1},"1":{"572":1,"573":1},"2":{"0":1,"5":1,"9":1,"19":1,"21":1,"22":1,"28":1,"36":1,"39":1,"43":1,"46":1,"49":1,"52":1,"70":1,"73":1,"99":1,"103":1,"124":1,"126":1,"131":1,"142":1,"152":1,"173":1,"175":1,"182":2,"194":1,"215":1,"245":2,"257":1,"258":1,"259":2,"265":2,"268":1,"275":3,"276":2,"290":1,"311":1,"317":2,"318":1,"337":3,"350":1,"370":1,"376":1,"385":1,"387":1,"388":1,"395":1,"415":1,"453":1,"455":1,"461":1,"466":1,"480":1,"485":1,"486":1,"488":1,"515":2,"533":1,"541":1,"554":3,"556":3,"562":1,"567":1,"571":1,"588":1,"592":1,"609":1,"621":2,"623":1,"626":1,"628":1,"635":1,"656":2,"707":1,"1134":1,"1142":1,"1177":1,"1179":1,"1200":1,"1221":1,"1236":1,"1240":1,"1242":2,"1243":1,"1264":1,"1292":1,"1300":4,"1326":2,"1329":5,"1332":3,"1338":1,"1343":1,"1347":1,"1359":2,"1379":1,"1380":2,"1383":1,"1385":4,"1394":1,"1398":1,"1401":1,"1414":1,"1430":1,"1431":1,"1435":1,"1440":2,"1446":1,"1457":1,"1459":1,"1466":1,"1467":1,"1495":1,"1499":1,"1500":1,"1516":1,"1518":1,"1525":1,"1563":1,"1573":1,"1596":1,"1633":1,"1637":1,"1659":1,"1671":1,"1673":2,"1676":1,"1726":2,"1729":1,"1830":1,"1872":1,"1885":2,"1894":1,"1895":1,"1897":2,"1900":2,"1905":2,"1906":1,"1908":1,"1929":1,"1933":2,"1947":2,"1952":1,"2041":1,"2042":1,"2063":1,"2064":1,"2073":1,"2103":1,"2107":1,"2114":1,"2117":1,"2130":2,"2131":1,"2144":1,"2145":1,"2152":1,"2169":2,"2170":1,"2171":2,"2176":1,"2183":1,"2228":1,"2230":1,"2233":2,"2235":1,"2236":1,"2237":2,"2238":1,"2240":1,"2242":1,"2243":1,"2244":1,"2245":3,"2247":3,"2249":3,"2250":1,"2252":1,"2261":1,"2262":1,"2264":1,"2274":1,"2276":1,"2303":1,"2307":1,"2311":1,"2347":1,"2396":1,"2398":1,"2405":1,"2418":1,"2423":1,"2424":1,"2433":1,"2442":1,"2448":1,"2460":1,"2474":1,"2477":1,"2478":1,"2479":1,"2480":2,"2491":4,"2510":1,"2517":1,"2541":1,"2542":1,"2543":1,"2544":1,"2563":1,"2566":4,"2567":2,"2568":1,"2569":1,"2570":2,"2574":2,"2575":5,"2577":8,"2590":1,"2605":1,"2653":1,"2666":1,"2708":1,"2713":1,"2720":1,"2734":1,"2743":2,"2749":1,"2750":1,"2752":2,"2754":1,"2755":1,"2757":1}}],["a",{"0":{"6":1,"21":1,"141":1,"314":1,"361":1,"551":1,"554":1,"568":1,"570":1,"599":1,"600":1,"610":1,"1131":1,"1253":1,"1261":1,"1263":1,"1282":1,"1346":1,"1347":1,"1348":1,"1381":1,"1409":1,"1519":1,"1656":1,"1678":1,"1898":1,"1937":1,"1940":1,"1941":1,"2159":1,"2167":1,"2264":1,"2271":1,"2283":1,"2311":1,"2314":1,"2349":1,"2404":1,"2422":1,"2433":1,"2436":1,"2437":1,"2445":1,"2550":1,"2551":1,"2552":1},"1":{"611":1,"612":1,"1132":1,"1133":1,"1134":1,"1264":1,"1347":1,"1348":1,"1349":2,"1350":1,"1351":1,"1352":1,"1410":1,"1411":1,"1412":1,"1413":1,"1414":1,"1415":1,"1416":1,"1417":1,"1418":1,"1419":1,"1420":1,"1421":1,"1422":1,"1423":1,"1424":1,"1425":1,"1426":1,"1427":1,"1428":1,"1429":1,"1430":1,"1431":1,"1432":1,"1433":1,"1434":1,"1435":1,"1436":1,"1679":1,"1680":1,"1681":1,"1682":1,"1683":1,"1684":1,"1685":1,"1686":1,"1687":1,"1688":1,"1689":1,"1690":1,"1691":1,"1692":1,"1693":1,"1694":1,"1695":1,"1696":1,"1697":1,"1698":1,"1699":1,"1700":1,"1701":1,"1702":1,"1703":1,"1704":1,"1705":1,"1706":1,"1707":1,"1708":1,"1709":1,"1710":1,"1711":1,"1712":1,"1713":1,"2160":1,"2161":1,"2162":1,"2163":1,"2164":1,"2165":1,"2166":1,"2167":1,"2168":1,"2169":1,"2170":1,"2171":1,"2405":1,"2406":1,"2407":1,"2408":1},"2":{"0":5,"1":1,"3":1,"6":2,"8":2,"9":4,"10":3,"11":1,"14":1,"15":1,"16":2,"18":2,"19":4,"21":1,"23":1,"24":1,"25":2,"28":3,"39":4,"49":11,"50":2,"52":4,"62":1,"65":3,"70":4,"73":1,"76":1,"80":1,"82":1,"83":1,"84":1,"86":1,"89":1,"90":1,"94":1,"95":1,"98":4,"99":1,"100":4,"107":1,"110":1,"112":2,"114":8,"116":1,"118":1,"120":1,"125":2,"130":2,"131":2,"132":3,"134":3,"138":3,"145":1,"149":9,"152":2,"153":3,"154":1,"156":2,"157":1,"160":2,"163":3,"164":2,"166":2,"169":2,"172":3,"173":4,"174":4,"175":1,"176":3,"179":2,"182":5,"183":1,"185":2,"187":1,"189":3,"190":1,"191":7,"194":10,"195":2,"196":3,"198":3,"199":1,"201":1,"202":1,"203":1,"209":1,"211":11,"213":1,"218":1,"222":7,"224":2,"228":3,"229":1,"230":1,"231":2,"233":1,"234":1,"236":1,"238":2,"246":2,"247":2,"248":1,"249":3,"251":1,"254":1,"255":1,"262":2,"263":2,"265":2,"266":6,"272":1,"273":2,"282":7,"289":1,"290":4,"291":1,"292":2,"299":2,"302":1,"303":1,"304":1,"305":6,"306":2,"307":2,"313":5,"314":2,"315":4,"316":4,"317":4,"321":1,"324":3,"331":2,"332":1,"334":1,"337":4,"340":1,"341":12,"347":1,"349":4,"352":9,"353":2,"354":2,"355":3,"357":1,"358":2,"359":1,"360":1,"363":1,"367":4,"370":4,"371":3,"373":1,"377":2,"378":6,"379":2,"380":2,"381":3,"383":2,"385":1,"386":3,"387":1,"388":3,"389":2,"390":2,"391":3,"393":6,"394":6,"396":1,"400":2,"401":4,"402":1,"404":1,"405":1,"408":1,"409":1,"411":1,"413":4,"415":2,"418":1,"423":1,"424":1,"428":2,"430":5,"432":1,"433":3,"435":1,"436":2,"441":2,"445":1,"446":1,"447":2,"451":1,"452":1,"453":5,"454":2,"455":2,"456":1,"457":5,"459":1,"460":2,"462":3,"465":1,"466":4,"467":3,"468":5,"469":2,"470":1,"471":1,"473":1,"474":1,"478":1,"479":3,"481":4,"483":2,"484":1,"485":1,"492":1,"493":1,"496":1,"497":1,"500":1,"501":1,"502":6,"504":1,"505":6,"506":3,"508":1,"509":2,"511":2,"512":1,"513":8,"515":4,"516":5,"517":1,"519":2,"520":2,"521":2,"522":1,"523":1,"526":2,"528":2,"529":4,"530":4,"532":2,"534":2,"537":3,"538":1,"540":4,"541":1,"545":1,"552":1,"554":11,"556":4,"557":1,"558":1,"559":7,"560":9,"561":2,"563":1,"564":1,"565":2,"566":1,"567":3,"568":3,"569":2,"570":3,"571":3,"572":3,"573":1,"584":1,"585":1,"586":2,"588":1,"589":2,"592":4,"596":2,"597":3,"598":6,"599":2,"600":2,"601":1,"602":2,"606":11,"607":3,"608":1,"609":3,"610":3,"611":1,"612":6,"613":2,"614":3,"615":1,"616":1,"620":2,"621":6,"623":2,"624":1,"625":4,"626":4,"627":2,"628":2,"629":2,"630":3,"635":1,"636":2,"638":2,"639":3,"641":3,"647":1,"654":1,"655":1,"657":1,"658":1,"659":4,"660":3,"661":2,"662":1,"664":1,"671":1,"675":1,"681":1,"684":2,"685":1,"688":2,"689":4,"690":7,"691":2,"694":1,"695":1,"699":1,"700":1,"703":2,"707":1,"709":2,"712":2,"714":1,"715":2,"717":2,"718":2,"720":1,"721":1,"723":2,"724":1,"726":5,"727":1,"736":1,"741":1,"745":1,"749":1,"751":1,"755":1,"762":1,"768":1,"772":1,"776":1,"778":1,"784":1,"792":1,"800":1,"804":1,"808":1,"810":1,"816":1,"826":1,"832":1,"836":1,"840":1,"842":1,"848":1,"859":1,"867":1,"871":1,"875":1,"877":1,"883":1,"893":1,"901":1,"905":1,"909":1,"911":1,"917":1,"927":1,"935":1,"939":1,"943":1,"945":1,"951":1,"961":1,"969":1,"973":1,"977":1,"979":1,"985":1,"995":1,"1003":1,"1007":1,"1011":1,"1013":1,"1019":1,"1029":1,"1037":1,"1041":1,"1045":1,"1047":1,"1053":1,"1063":1,"1071":1,"1075":1,"1079":1,"1081":1,"1087":1,"1097":1,"1105":1,"1109":1,"1113":1,"1115":1,"1121":1,"1122":2,"1123":1,"1125":1,"1126":2,"1127":1,"1129":3,"1130":1,"1132":1,"1133":1,"1134":2,"1136":1,"1137":1,"1142":1,"1143":2,"1150":1,"1158":1,"1162":1,"1166":1,"1168":1,"1174":1,"1175":1,"1177":4,"1183":1,"1186":1,"1189":1,"1192":1,"1195":1,"1196":1,"1197":6,"1198":1,"1202":1,"1204":1,"1207":1,"1209":1,"1212":5,"1214":3,"1215":6,"1216":1,"1217":2,"1220":1,"1224":2,"1225":2,"1226":1,"1228":1,"1230":2,"1233":1,"1234":10,"1235":1,"1236":4,"1238":3,"1242":2,"1248":1,"1250":5,"1251":1,"1252":1,"1254":1,"1255":2,"1257":2,"1258":2,"1259":2,"1260":1,"1261":1,"1263":1,"1264":1,"1265":8,"1271":1,"1272":2,"1273":1,"1278":2,"1284":1,"1287":3,"1290":1,"1293":1,"1295":2,"1299":6,"1300":9,"1303":2,"1304":2,"1310":1,"1313":1,"1314":1,"1315":2,"1322":1,"1325":4,"1326":6,"1329":9,"1330":1,"1331":3,"1332":7,"1333":1,"1334":3,"1335":3,"1336":5,"1337":1,"1338":3,"1340":7,"1341":3,"1344":4,"1346":5,"1347":3,"1348":1,"1349":2,"1352":2,"1353":4,"1354":2,"1355":3,"1357":5,"1359":8,"1360":5,"1361":11,"1362":2,"1363":1,"1364":3,"1365":1,"1368":1,"1369":1,"1376":2,"1377":1,"1378":1,"1380":5,"1381":2,"1382":2,"1383":5,"1384":3,"1385":6,"1386":2,"1387":2,"1388":1,"1390":3,"1393":2,"1394":2,"1397":6,"1398":7,"1399":2,"1400":1,"1401":2,"1402":1,"1403":6,"1404":1,"1405":6,"1406":8,"1409":2,"1410":1,"1411":7,"1412":4,"1414":2,"1415":1,"1416":10,"1421":1,"1423":2,"1426":2,"1427":1,"1428":1,"1429":1,"1430":1,"1431":7,"1432":1,"1436":6,"1437":1,"1438":12,"1439":3,"1440":4,"1441":7,"1442":3,"1445":6,"1446":3,"1447":2,"1448":3,"1451":23,"1452":2,"1454":4,"1458":2,"1459":2,"1462":1,"1464":3,"1466":1,"1469":1,"1471":4,"1492":3,"1495":3,"1496":1,"1497":2,"1499":7,"1500":3,"1501":1,"1503":2,"1504":1,"1506":2,"1507":1,"1508":7,"1509":1,"1510":2,"1511":4,"1512":1,"1515":3,"1516":2,"1518":4,"1519":2,"1521":1,"1523":5,"1525":4,"1526":1,"1527":2,"1528":2,"1531":2,"1534":2,"1548":1,"1549":3,"1552":1,"1553":3,"1554":3,"1555":1,"1556":4,"1557":5,"1558":6,"1559":1,"1561":1,"1562":5,"1563":2,"1565":2,"1567":1,"1570":3,"1571":1,"1573":7,"1576":2,"1577":9,"1578":1,"1579":1,"1581":1,"1582":5,"1583":2,"1584":1,"1585":1,"1586":1,"1587":1,"1591":1,"1605":1,"1607":1,"1609":1,"1611":1,"1613":1,"1614":1,"1617":1,"1619":1,"1622":1,"1624":1,"1630":3,"1631":1,"1634":3,"1636":1,"1637":2,"1638":1,"1642":1,"1643":1,"1646":1,"1648":1,"1652":1,"1655":5,"1657":1,"1658":1,"1659":2,"1660":1,"1661":1,"1662":2,"1665":1,"1666":1,"1668":3,"1670":11,"1671":3,"1672":1,"1673":5,"1674":3,"1675":21,"1676":1,"1677":7,"1678":3,"1680":3,"1682":1,"1683":1,"1684":1,"1685":5,"1716":1,"1717":1,"1718":1,"1720":1,"1725":7,"1726":3,"1728":5,"1729":6,"1731":1,"1733":1,"1743":1,"1791":4,"1793":19,"1794":1,"1798":2,"1802":2,"1803":2,"1804":3,"1807":8,"1808":1,"1814":1,"1815":3,"1816":2,"1817":1,"1820":1,"1821":4,"1822":13,"1824":1,"1827":2,"1829":1,"1832":1,"1837":1,"1839":1,"1841":1,"1843":1,"1845":1,"1852":1,"1853":2,"1854":2,"1855":1,"1857":1,"1858":1,"1860":1,"1863":3,"1865":4,"1866":1,"1867":1,"1868":1,"1869":1,"1870":1,"1871":2,"1872":8,"1873":3,"1874":5,"1875":5,"1876":6,"1878":2,"1879":1,"1880":1,"1881":1,"1882":1,"1883":2,"1885":9,"1886":3,"1888":1,"1894":1,"1899":2,"1900":1,"1901":1,"1902":5,"1903":1,"1908":1,"1910":2,"1912":3,"1915":1,"1917":1,"1918":1,"1921":3,"1922":2,"1923":5,"1925":1,"1926":1,"1928":1,"1929":2,"1930":1,"1932":1,"1935":3,"1936":1,"1938":1,"1940":4,"1941":1,"1943":6,"1946":7,"1947":3,"1948":1,"1949":14,"1950":2,"1952":6,"1955":1,"1957":1,"1959":3,"1970":1,"2031":6,"2032":1,"2036":3,"2040":1,"2041":1,"2042":2,"2044":2,"2047":2,"2051":4,"2062":1,"2065":2,"2066":1,"2067":1,"2069":3,"2070":1,"2074":2,"2075":3,"2076":1,"2078":1,"2081":1,"2083":2,"2085":1,"2087":2,"2093":1,"2095":1,"2097":1,"2099":3,"2106":3,"2107":2,"2108":2,"2114":4,"2117":1,"2118":2,"2121":1,"2122":2,"2124":1,"2125":6,"2126":4,"2128":5,"2130":12,"2131":9,"2133":4,"2134":1,"2138":1,"2139":3,"2140":1,"2143":11,"2144":2,"2145":1,"2146":8,"2147":5,"2148":4,"2149":2,"2150":5,"2152":6,"2153":5,"2154":2,"2155":1,"2156":1,"2157":2,"2160":3,"2161":8,"2162":13,"2164":3,"2168":1,"2169":18,"2170":5,"2171":4,"2172":3,"2176":1,"2179":4,"2180":5,"2181":2,"2182":6,"2183":6,"2199":2,"2201":1,"2208":1,"2217":1,"2225":1,"2226":3,"2227":1,"2228":1,"2229":1,"2230":1,"2231":5,"2232":1,"2233":4,"2234":2,"2235":2,"2236":3,"2237":2,"2238":7,"2239":1,"2240":6,"2242":4,"2243":2,"2244":1,"2245":1,"2246":1,"2247":1,"2248":1,"2249":1,"2250":3,"2251":1,"2252":2,"2255":6,"2256":1,"2257":1,"2258":2,"2259":4,"2260":2,"2261":2,"2262":3,"2263":8,"2264":2,"2266":2,"2267":3,"2268":8,"2269":4,"2271":4,"2272":14,"2273":5,"2274":5,"2275":2,"2276":5,"2277":5,"2279":9,"2280":3,"2281":1,"2282":2,"2283":1,"2284":3,"2288":1,"2290":1,"2293":1,"2294":2,"2295":7,"2297":1,"2298":1,"2299":4,"2300":6,"2301":1,"2302":5,"2305":4,"2306":1,"2307":3,"2308":1,"2311":21,"2313":1,"2314":2,"2315":5,"2316":2,"2317":5,"2318":2,"2319":8,"2320":4,"2322":1,"2324":1,"2326":3,"2327":4,"2329":3,"2331":1,"2333":3,"2341":1,"2343":1,"2344":3,"2346":4,"2347":2,"2348":4,"2349":4,"2350":2,"2354":3,"2355":10,"2367":2,"2368":1,"2370":2,"2371":19,"2373":1,"2386":3,"2396":2,"2397":2,"2400":4,"2401":1,"2402":2,"2403":5,"2404":1,"2405":4,"2406":2,"2407":2,"2408":2,"2409":1,"2410":4,"2411":4,"2413":1,"2415":1,"2417":7,"2418":3,"2421":1,"2422":3,"2423":3,"2424":4,"2425":2,"2427":3,"2428":3,"2429":3,"2431":2,"2433":1,"2435":2,"2436":2,"2438":1,"2440":1,"2441":1,"2442":3,"2443":2,"2444":1,"2445":3,"2446":4,"2448":1,"2449":1,"2450":4,"2452":1,"2454":2,"2455":1,"2457":4,"2458":2,"2460":1,"2461":1,"2468":1,"2469":6,"2472":3,"2473":4,"2474":6,"2475":2,"2476":3,"2477":4,"2478":3,"2479":2,"2480":4,"2483":2,"2485":1,"2490":10,"2491":7,"2492":2,"2495":1,"2498":2,"2501":2,"2502":1,"2503":3,"2508":4,"2510":2,"2513":6,"2514":5,"2515":3,"2516":3,"2517":2,"2521":2,"2523":5,"2524":4,"2525":2,"2526":1,"2530":5,"2535":1,"2539":2,"2541":1,"2542":1,"2543":1,"2544":2,"2545":3,"2546":2,"2548":3,"2549":1,"2550":1,"2551":1,"2552":2,"2553":6,"2555":2,"2556":2,"2558":2,"2559":2,"2560":1,"2562":1,"2563":2,"2564":12,"2565":1,"2566":26,"2567":7,"2568":2,"2569":3,"2570":2,"2571":2,"2575":8,"2576":20,"2577":26,"2578":3,"2581":1,"2584":3,"2585":4,"2587":1,"2589":1,"2591":1,"2592":3,"2593":3,"2594":1,"2595":1,"2596":7,"2597":1,"2600":2,"2601":2,"2605":3,"2607":3,"2608":2,"2610":1,"2611":6,"2614":3,"2615":6,"2616":4,"2617":1,"2619":2,"2620":1,"2622":2,"2623":1,"2625":2,"2626":2,"2627":2,"2628":1,"2629":1,"2632":1,"2633":1,"2638":1,"2640":2,"2641":2,"2642":1,"2643":1,"2644":1,"2645":2,"2646":1,"2648":2,"2649":2,"2651":1,"2652":1,"2653":1,"2654":3,"2655":1,"2656":1,"2657":1,"2659":2,"2660":3,"2661":1,"2662":3,"2663":1,"2664":3,"2665":1,"2666":1,"2667":1,"2668":1,"2670":1,"2671":1,"2672":5,"2674":1,"2676":2,"2677":2,"2681":1,"2682":2,"2683":1,"2684":3,"2686":8,"2687":1,"2688":2,"2689":6,"2693":2,"2694":1,"2695":2,"2696":1,"2697":1,"2699":4,"2701":2,"2702":1,"2703":1,"2706":1,"2707":2,"2708":1,"2709":1,"2710":2,"2711":5,"2712":2,"2713":1,"2714":1,"2719":2,"2720":1,"2721":1,"2723":1,"2725":3,"2727":4,"2728":13,"2730":4,"2731":8,"2732":8,"2733":5,"2734":11,"2735":14,"2736":6,"2737":11,"2738":8,"2740":2,"2741":2,"2742":2,"2743":2,"2745":7,"2746":6,"2747":1,"2748":3,"2749":5,"2750":2,"2752":1,"2753":12,"2754":1,"2755":1,"2756":3,"2757":9}}]],"serializationVersion":2}`; export { _localSearchIndexroot as default }; diff --git a/assets/chunks/VPLocalSearchBox.BqX9KCf2.js b/assets/chunks/VPLocalSearchBox.ItLbR52d.js similarity index 99% rename from assets/chunks/VPLocalSearchBox.BqX9KCf2.js rename to assets/chunks/VPLocalSearchBox.ItLbR52d.js index 67d6cd0322e..f4848559471 100644 --- a/assets/chunks/VPLocalSearchBox.BqX9KCf2.js +++ b/assets/chunks/VPLocalSearchBox.ItLbR52d.js @@ -4,9 +4,9 @@ var __publicField = (obj, key, value) => { __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); return value; }; -import { Y as __vitePreload, j as ref, x as watch, an as unrefElement, ao as tryOnScopeDispose, d as defineComponent, G as shallowRef, ap as computedAsync, h as computed, aq as useSessionStorage, ar as useLocalStorage, y as watchEffect, as as watchDebounced, k as onMounted, S as nextTick, R as onKeyStroke, a6 as useRouter, at as useEventListener, Z as useScrollLock, V as inBrowser, au as onBeforeUnmount, o as openBlock, b as createBlock, l as createBaseVNode, a2 as withModifiers, m as unref, av as withDirectives, aw as vModelText, ax as isRef, c as createElementBlock, n as normalizeClass, e as createCommentVNode, E as renderList, F as Fragment, a as createTextVNode, t as toDisplayString, ay as Teleport, p as pushScopeId, q as popScopeId, az as markRaw, aA as createApp, ac as dataSymbol, ai as pathToFile, aB as escapeRegExp, _ as _export_sfc } from "./framework.DyMmIvSC.js"; -import { u as useData, c as createSearchTranslate } from "./theme.DAZguuVX.js"; -const localSearchIndex = { "root": () => __vitePreload(() => import("./@localSearchIndexroot.IZbmEDha.js"), true ? [] : void 0) }; +import { Y as __vitePreload, j as ref, x as watch, an as unrefElement, ao as tryOnScopeDispose, d as defineComponent, G as shallowRef, ap as computedAsync, h as computed, aq as useSessionStorage, ar as useLocalStorage, y as watchEffect, as as watchDebounced, k as onMounted, S as nextTick, R as onKeyStroke, a6 as useRouter, at as useEventListener, Z as useScrollLock, V as inBrowser, au as onBeforeUnmount, o as openBlock, b as createBlock, l as createBaseVNode, a2 as withModifiers, m as unref, av as withDirectives, aw as vModelText, ax as isRef, c as createElementBlock, n as normalizeClass, e as createCommentVNode, E as renderList, F as Fragment, a as createTextVNode, t as toDisplayString, ay as Teleport, p as pushScopeId, q as popScopeId, az as markRaw, aA as createApp, ac as dataSymbol, ai as pathToFile, aB as escapeRegExp, _ as _export_sfc } from "./framework.Clpp4x2N.js"; +import { u as useData, c as createSearchTranslate } from "./theme.BXuOQ_O6.js"; +const localSearchIndex = { "root": () => __vitePreload(() => import("./@localSearchIndexroot.CQZaIZyy.js"), true ? [] : void 0) }; /*! * tabbable 6.2.0 * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE @@ -4856,10 +4856,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({ try { if (!file) throw new Error(`Cannot find file for id: ${id}`); - return { id, mod: await __vitePreload(() => import( + return { id, mod: await import( /*@vite-ignore*/ file - ), true ? [] : void 0) }; + ) }; } catch (e) { console.error(e); return { id, mod: {} }; diff --git a/assets/chunks/framework.DyMmIvSC.js b/assets/chunks/framework.Clpp4x2N.js similarity index 100% rename from assets/chunks/framework.DyMmIvSC.js rename to assets/chunks/framework.Clpp4x2N.js index 164452da315..679a6b3879b 100644 --- a/assets/chunks/framework.DyMmIvSC.js +++ b/assets/chunks/framework.Clpp4x2N.js @@ -7582,63 +7582,6 @@ const _export_sfc = (sfc, props) => { } return target; }; -const scriptRel = "modulepreload"; -const assetsURL = function(dep) { - return "/" + dep; -}; -const seen = {}; -const __vitePreload = function preload(baseModule, deps, importerUrl) { - let promise = Promise.resolve(); - if (deps && deps.length > 0) { - const links = document.getElementsByTagName("link"); - const cspNonceMeta = document.querySelector("meta[property=csp-nonce]"); - const cspNonce = (cspNonceMeta == null ? void 0 : cspNonceMeta.nonce) || (cspNonceMeta == null ? void 0 : cspNonceMeta.getAttribute("nonce")); - promise = Promise.all(deps.map((dep) => { - dep = assetsURL(dep); - if (dep in seen) - return; - seen[dep] = true; - const isCss = dep.endsWith(".css"); - const cssSelector = isCss ? '[rel="stylesheet"]' : ""; - const isBaseRelative = !!importerUrl; - if (isBaseRelative) { - for (let i = links.length - 1; i >= 0; i--) { - const link3 = links[i]; - if (link3.href === dep && (!isCss || link3.rel === "stylesheet")) { - return; - } - } - } else if (document.querySelector(`link[href="${dep}"]${cssSelector}`)) { - return; - } - const link2 = document.createElement("link"); - link2.rel = isCss ? "stylesheet" : scriptRel; - if (!isCss) { - link2.as = "script"; - link2.crossOrigin = ""; - } - link2.href = dep; - if (cspNonce) { - link2.setAttribute("nonce", cspNonce); - } - document.head.appendChild(link2); - if (isCss) { - return new Promise((res, rej) => { - link2.addEventListener("load", res); - link2.addEventListener("error", () => rej(new Error(`Unable to preload CSS for ${dep}`))); - }); - } - })); - } - return promise.then(() => baseModule()).catch((err) => { - const e = new Event("vite:preloadError", { cancelable: true }); - e.payload = err; - window.dispatchEvent(e); - if (!e.defaultPrevented) { - throw err; - } - }); -}; const siteData = window.__VP_SITE_DATA__; function tryOnScopeDispose(fn) { if (getCurrentScope()) { @@ -8925,6 +8868,63 @@ const Content = /* @__PURE__ */ defineComponent({ ]); } }); +const scriptRel = "modulepreload"; +const assetsURL = function(dep) { + return "/" + dep; +}; +const seen = {}; +const __vitePreload = function preload(baseModule, deps, importerUrl) { + let promise = Promise.resolve(); + if (deps && deps.length > 0) { + const links = document.getElementsByTagName("link"); + const cspNonceMeta = document.querySelector("meta[property=csp-nonce]"); + const cspNonce = (cspNonceMeta == null ? void 0 : cspNonceMeta.nonce) || (cspNonceMeta == null ? void 0 : cspNonceMeta.getAttribute("nonce")); + promise = Promise.all(deps.map((dep) => { + dep = assetsURL(dep); + if (dep in seen) + return; + seen[dep] = true; + const isCss = dep.endsWith(".css"); + const cssSelector = isCss ? '[rel="stylesheet"]' : ""; + const isBaseRelative = !!importerUrl; + if (isBaseRelative) { + for (let i = links.length - 1; i >= 0; i--) { + const link3 = links[i]; + if (link3.href === dep && (!isCss || link3.rel === "stylesheet")) { + return; + } + } + } else if (document.querySelector(`link[href="${dep}"]${cssSelector}`)) { + return; + } + const link2 = document.createElement("link"); + link2.rel = isCss ? "stylesheet" : scriptRel; + if (!isCss) { + link2.as = "script"; + link2.crossOrigin = ""; + } + link2.href = dep; + if (cspNonce) { + link2.setAttribute("nonce", cspNonce); + } + document.head.appendChild(link2); + if (isCss) { + return new Promise((res, rej) => { + link2.addEventListener("load", res); + link2.addEventListener("error", () => rej(new Error(`Unable to preload CSS for ${dep}`))); + }); + } + })); + } + return promise.then(() => baseModule()).catch((err) => { + const e = new Event("vite:preloadError", { cancelable: true }); + e.payload = err; + window.dispatchEvent(e); + if (!e.defaultPrevented) { + throw err; + } + }); +}; const ClientOnly = /* @__PURE__ */ defineComponent({ setup(_, { slots }) { const show = ref(false); diff --git a/assets/chunks/theme.DAZguuVX.js b/assets/chunks/theme.BXuOQ_O6.js similarity index 99% rename from assets/chunks/theme.DAZguuVX.js rename to assets/chunks/theme.BXuOQ_O6.js index 68eeb0e5858..c4aa41de014 100644 --- a/assets/chunks/theme.DAZguuVX.js +++ b/assets/chunks/theme.BXuOQ_O6.js @@ -1,5 +1,5 @@ -const __vite__fileDeps=["assets/chunks/VPLocalSearchBox.BqX9KCf2.js","assets/chunks/framework.DyMmIvSC.js"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]); -import { d as defineComponent, o as openBlock, c as createElementBlock, r as renderSlot, n as normalizeClass, a as createTextVNode, t as toDisplayString, b as createBlock, w as withCtx, e as createCommentVNode, T as Transition, _ as _export_sfc, u as useData$1, i as isExternal, f as treatAsHtml, g as withBase, h as computed, j as ref, k as onMounted, l as createBaseVNode, m as unref, p as pushScopeId, q as popScopeId, s as isActive, v as useMediaQuery, x as watch, y as watchEffect, z as onUnmounted, A as watchPostEffect, B as onUpdated, C as getScrollOffset, D as resolveComponent, F as Fragment, E as renderList, G as shallowRef, H as onContentUpdated, I as createVNode, J as resolveDynamicComponent, K as EXTERNAL_URL_RE, L as useRoute, M as mergeProps, N as inject, O as useWindowSize, P as normalizeStyle, Q as onClickOutside, R as onKeyStroke, S as nextTick, U as useWindowScroll, V as inBrowser, W as readonly, X as defineAsyncComponent, Y as __vitePreload, Z as useScrollLock, $ as provide, a0 as toHandlers, a1 as withKeys, a2 as withModifiers, a3 as useSlots, a4 as reactive, a5 as toRef, a6 as useRouter, a7 as onBeforeMount } from "./framework.DyMmIvSC.js"; +const __vite__fileDeps=["assets/chunks/VPLocalSearchBox.ItLbR52d.js","assets/chunks/framework.Clpp4x2N.js"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]); +import { d as defineComponent, o as openBlock, c as createElementBlock, r as renderSlot, n as normalizeClass, a as createTextVNode, t as toDisplayString, b as createBlock, w as withCtx, e as createCommentVNode, T as Transition, _ as _export_sfc, u as useData$1, i as isExternal, f as treatAsHtml, g as withBase, h as computed, j as ref, k as onMounted, l as createBaseVNode, m as unref, p as pushScopeId, q as popScopeId, s as isActive, v as useMediaQuery, x as watch, y as watchEffect, z as onUnmounted, A as watchPostEffect, B as onUpdated, C as getScrollOffset, D as resolveComponent, F as Fragment, E as renderList, G as shallowRef, H as onContentUpdated, I as createVNode, J as resolveDynamicComponent, K as EXTERNAL_URL_RE, L as useRoute, M as mergeProps, N as inject, O as useWindowSize, P as normalizeStyle, Q as onClickOutside, R as onKeyStroke, S as nextTick, U as useWindowScroll, V as inBrowser, W as readonly, X as defineAsyncComponent, Y as __vitePreload, Z as useScrollLock, $ as provide, a0 as toHandlers, a1 as withKeys, a2 as withModifiers, a3 as useSlots, a4 as reactive, a5 as toRef, a6 as useRouter, a7 as onBeforeMount } from "./framework.Clpp4x2N.js"; const _sfc_main$Z = /* @__PURE__ */ defineComponent({ __name: "VPBadge", props: { @@ -2225,7 +2225,7 @@ const _hoisted_3$6 = { const _sfc_main$l = /* @__PURE__ */ defineComponent({ __name: "VPNavBarSearch", setup(__props) { - const VPLocalSearchBox = defineAsyncComponent(() => __vitePreload(() => import("./VPLocalSearchBox.BqX9KCf2.js"), true ? __vite__mapDeps([0,1]) : void 0)); + const VPLocalSearchBox = defineAsyncComponent(() => __vitePreload(() => import("./VPLocalSearchBox.ItLbR52d.js"), true ? __vite__mapDeps([0,1]) : void 0)); const VPAlgoliaSearchBox = () => null; const { theme: theme2 } = useData(); const loaded = ref(false); diff --git a/assets/cli.md.BLzAdA6l.js b/assets/cli.md.BmxhRPcP.js similarity index 98% rename from assets/cli.md.BLzAdA6l.js rename to assets/cli.md.BmxhRPcP.js index 1d1bc157bae..1a46388686b 100644 --- a/assets/cli.md.BLzAdA6l.js +++ b/assets/cli.md.BmxhRPcP.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK CLI","description":"","frontmatter":{},"headers":[],"relativePath":"cli.md","filePath":"cli.md"}'); const _sfc_main = { name: "cli.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK CLI

Overview

The QMK CLI (command line interface) makes building and working with QMK keyboards easier. We have provided a number of commands to simplify and streamline tasks such as obtaining and compiling the QMK firmware, creating keymaps, and more.

Requirements

QMK requires Python 3.7 or greater. We try to keep the number of requirements small but you will also need to install the packages listed in requirements.txt. These are installed automatically when you install the QMK CLI.

Install Using Homebrew (macOS, some Linux)

If you have installed Homebrew you can tap and install QMK:

brew install qmk/qmk/qmk\nexport QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware`\nqmk setup  # This will clone `qmk/qmk_firmware` and optionally set up your build environment

Install Using pip

If your system is not listed above you can install QMK manually. First ensure that you have Python 3.7 (or later) installed and have installed pip. Then install QMK with this command:

python3 -m pip install qmk\nexport QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware`\nqmk setup  # This will clone `qmk/qmk_firmware` and optionally set up your build environment

Packaging For Other Operating Systems

We are looking for people to create and maintain a qmk package for more operating systems. If you would like to create a package for your OS please follow these guidelines:

', 14); diff --git a/assets/cli.md.BLzAdA6l.lean.js b/assets/cli.md.BmxhRPcP.lean.js similarity index 90% rename from assets/cli.md.BLzAdA6l.lean.js rename to assets/cli.md.BmxhRPcP.lean.js index aebdac1132d..eb7d272a056 100644 --- a/assets/cli.md.BLzAdA6l.lean.js +++ b/assets/cli.md.BmxhRPcP.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK CLI","description":"","frontmatter":{},"headers":[],"relativePath":"cli.md","filePath":"cli.md"}'); const _sfc_main = { name: "cli.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 14); diff --git a/assets/cli_commands.md.DGx-qNiE.js b/assets/cli_commands.md.bKM86b65.js similarity index 99% rename from assets/cli_commands.md.DGx-qNiE.js rename to assets/cli_commands.md.bKM86b65.js index 2b3802f8dcd..b24e064095a 100644 --- a/assets/cli_commands.md.DGx-qNiE.js +++ b/assets/cli_commands.md.bKM86b65.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK CLI Commands","description":"","frontmatter":{},"headers":[],"relativePath":"cli_commands.md","filePath":"cli_commands.md"}'); const _sfc_main = { name: "cli_commands.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK CLI Commands

User Commands

qmk compile

This command allows you to compile firmware from any directory. You can compile JSON exports from https://config.qmk.fm, compile keymaps in the repo, or compile the keyboard in the current working directory.

This command is directory aware. It will automatically fill in KEYBOARD and/or KEYMAP if you are in a keyboard or keymap directory.

Usage for Configurator Exports:

qmk compile [-c] <configuratorExport.json>

Usage for Keymaps:

qmk compile [-c] [-e <var>=<value>] [-j <num_jobs>] -kb <keyboard_name> -km <keymap_name>

Usage in Keyboard Directory:

Must be in keyboard directory with a default keymap, or in keymap directory for keyboard, or supply one with --keymap <keymap_name>

qmk compile

Usage for building all keyboards that support a specific keymap:

qmk compile -kb all -km <keymap_name>

Example:

$ qmk config compile.keymap=default\n$ cd ~/qmk_firmware/keyboards/planck/rev6\n$ qmk compile\nΨ Compiling keymap with make planck/rev6:default\n...

or with optional keymap argument

$ cd ~/qmk_firmware/keyboards/clueboard/66/rev4\n$ qmk compile -km 66_iso\nΨ Compiling keymap with make clueboard/66/rev4:66_iso\n...

or in keymap directory

$ cd ~/qmk_firmware/keyboards/gh60/satan/keymaps/colemak\n$ qmk compile\nΨ Compiling keymap with make gh60/satan:colemak\n...

Usage in Layout Directory:

Must be under qmk_firmware/layouts/, and in a keymap folder.

qmk compile -kb <keyboard_name>

Example:

$ cd ~/qmk_firmware/layouts/community/60_ansi/mechmerlin-ansi\n$ qmk compile -kb dz60\nΨ Compiling keymap with make dz60:mechmerlin-ansi\n...

Parallel Compilation:

It is possible to speed up compilation by adding the -j/--parallel flag.

qmk compile -j <num_jobs> -kb <keyboard_name>

The num_jobs argument determines the maximum number of jobs that can be used. Setting it to zero will enable parallel compilation without limiting the maximum number of jobs.

qmk compile -j 0 -kb <keyboard_name>

qmk flash

This command is similar to qmk compile, but can also target a bootloader. The bootloader is optional, and is set to :flash by default. To specify a different bootloader, use -bl <bootloader>. Visit the Flashing Firmware guide for more details of the available bootloaders.

This command is directory aware. It will automatically fill in KEYBOARD and/or KEYMAP if you are in a keyboard or keymap directory.

This command can also flash binary firmware files (hex or bin) such as the ones produced by Configurator.

Usage for Configurator Exports:

qmk flash [-bl <bootloader>] [-c] [-e <var>=<value>] [-j <num_jobs>] <configuratorExport.json>

Usage for Keymaps:

qmk flash -kb <keyboard_name> -km <keymap_name> [-bl <bootloader>] [-c] [-e <var>=<value>] [-j <num_jobs>]

Usage for pre-compiled firmwares:

Note: The microcontroller needs to be specified (-m argument) for keyboards with the following bootloaders:

ISP flashing is also supported with the following flashers and require the microcontroller to be specified:

qmk flash [-m <microcontroller>] <compiledFirmware.[bin|hex]>

Listing the Bootloaders

qmk flash -b

qmk config

This command lets you configure the behavior of QMK. For the full qmk config documentation see CLI Configuration.

Usage:

qmk config [-ro] [config_token1] [config_token2] [...] [config_tokenN]

qmk cd

This command opens a new shell in your qmk_firmware directory.

Note that if you are already somewhere within QMK_HOME (for example, the keyboards/ folder), nothing will happen.

To exit out into the parent shell, simply type exit.

Usage:

qmk cd

qmk find

This command allows for searching through keyboard/keymap targets, filtering by specific criteria. info.json and rules.mk files contribute to the search data, as well as keymap configurations, and the results can be filtered using "dotty" syntax matching the overall info.json file format.

For example, one could search for all keyboards using STM32F411:

qmk find -f 'processor=STM32F411'

...and one can further constrain the list to keyboards using STM32F411 as well as rgb_matrix support:

qmk find -f 'processor=STM32F411' -f 'features.rgb_matrix=true'

The following filter expressions are also supported:

You can also list arbitrary values for each matched target with --print:

qmk find -f 'processor=STM32F411' -p 'keyboard_name' -p 'features.rgb_matrix'

Usage:

qmk find [-h] [-km KEYMAP] [-p PRINT] [-f FILTER]\n\noptions:\n  -km KEYMAP, --keymap KEYMAP\n                        The keymap name to build. Default is 'default'.\n  -p PRINT, --print PRINT\n                        For each matched target, print the value of the supplied info.json key. May be passed multiple times.\n  -f FILTER, --filter FILTER\n                        Filter the list of keyboards based on their info.json data. Accepts the formats key=value, function(key), or function(key,value), eg. 'features.rgblight=true'. Valid functions are 'absent', 'contains', 'exists' and 'length'. May be passed multiple times; all filters need to match. Value may include wildcards such as '*' and '?'.

qmk console

This command lets you connect to keyboard consoles to get debugging messages. It only works if your keyboard firmware has been compiled with CONSOLE_ENABLE=yes.

Usage:

qmk console [-d <pid>:<vid>[:<index>]] [-l] [-n] [-t] [-w <seconds>]

Examples:

Connect to all available keyboards and show their console messages:

qmk console

List all devices:

qmk console -l

Show only messages from clueboard/66/rev3 keyboards:

qmk console -d C1ED:2370

Show only messages from the second clueboard/66/rev3:

qmk console -d C1ED:2370:2

Show timestamps and VID:PID instead of names:

qmk console -n -t

Disable bootloader messages:

qmk console --no-bootloaders

qmk doctor

This command examines your environment and alerts you to potential build or flash problems. It can fix many of them if you want it to.

Usage:

qmk doctor [-y] [-n]

Examples:

Check your environment for problems and prompt to fix them:

qmk doctor

Check your environment and automatically fix any problems found:

qmk doctor -y

Check your environment and report problems only:

qmk doctor -n

qmk format-json

Formats a JSON file in a (mostly) human-friendly way. Will usually correctly detect the format of the JSON (info.json or keymap.json) but you can override this with --format if necessary.

Usage:

qmk format-json [-f FORMAT] <json_file>

qmk info

Displays information about keyboards and keymaps in QMK. You can use this to get information about a keyboard, show the layouts, display the underlying key matrix, or to pretty-print JSON keymaps.

Usage:

qmk info [-f FORMAT] [-m] [-l] [-km KEYMAP] [-kb KEYBOARD]

This command is directory aware. It will automatically fill in KEYBOARD and/or KEYMAP if you are in a keyboard or keymap directory.

Examples:

Show basic information for a keyboard:

qmk info -kb planck/rev5

Show the matrix for a keyboard:

qmk info -kb ergodox_ez -m

Show a JSON keymap for a keyboard:

qmk info -kb clueboard/california -km default

qmk json2c

Creates a keymap.c from a QMK Configurator export.

Usage:

qmk json2c [-o OUTPUT] filename

qmk c2json

Creates a keymap.json from a keymap.c.

Note: Parsing C source files is not easy, therefore this subcommand may not work with your keymap. In some cases not using the C pre-processor helps.

Usage:

qmk c2json -km KEYMAP -kb KEYBOARD [-q] [--no-cpp] [-o OUTPUT] filename

Examples:

qmk c2json -km default -kb handwired/dactyl_promicro

or with filename:

qmk c2json keyboards/handwired/dactyl_promicro/keymaps/default/keymap.c

qmk lint

Checks over a keyboard and/or keymap and highlights common errors, problems, and anti-patterns.

Usage:

qmk lint [-km KEYMAP] [-kb KEYBOARD] [--strict]

This command is directory aware. It will automatically fill in KEYBOARD and/or KEYMAP if you are in a keyboard or keymap directory.

Examples:

Do a basic lint check:

qmk lint -kb rominronin/katana60/rev2

qmk list-keyboards

This command lists all the keyboards currently defined in qmk_firmware

Usage:

qmk list-keyboards

qmk list-keymaps

This command lists all the keymaps for a specified keyboard (and revision).

This command is directory aware. It will automatically fill in KEYBOARD if you are in a keyboard directory.

Usage:

qmk list-keymaps -kb planck/ez

qmk migrate

This command searches for legacy code that can be converted to the new info.json format and adds it to the specified keyboard's info.json.

Usage:

qmk migrate [-h] -kb KEYBOARD [-f FILTER]

qmk new-keyboard

This command creates a new keyboard based on available templates.

Any arguments that are not provided will prompt for input. If -u is not passed and user.name is set in .gitconfig, it will be used as the default username in the prompt.

Usage:

qmk new-keyboard [-kb KEYBOARD] [-t {atmega32u4,STM32F303,etc}] [-l {60_ansi,75_iso,etc}] -u USERNAME

qmk new-keymap

This command creates a new keymap based on a keyboard's existing default keymap.

This command is directory aware. It will automatically fill in KEYBOARD and/or KEYMAP if you are in a keyboard or keymap directory.

Usage:

qmk new-keymap [-kb KEYBOARD] [-km KEYMAP]

qmk clean

This command cleans up the .build folder. If --all is passed, any .hex or .bin files present in the qmk_firmware directory will also be deleted.

Usage:

qmk clean [-a]

qmk via2json

This command an generate a keymap.json from a VIA keymap backup. Both the layers and the macros are converted, enabling users to easily move away from a VIA-enabled firmware without writing any code or reimplementing their keymaps in QMK Configurator.

Usage:

qmk via2json -kb KEYBOARD [-l LAYOUT] [-km KEYMAP] [-o OUTPUT] filename

Example:

$ qmk via2json -kb ai03/polaris -o polaris_keymap.json polaris_via_backup.json\nΨ Wrote keymap to /home/you/qmk_firmware/polaris_keymap.json

qmk import-keyboard

This command imports a data-driven info.json keyboard into the repo.

Usage:

usage: qmk import-keyboard [-h] filename

Example:

$ qmk import-keyboard ~/Downloads/forever60.json\nΨ Importing forever60.json.\n\nΨ Imported a new keyboard named forever60.\nΨ To start working on things, `cd` into keyboards/forever60,\nΨ or open the directory in your preferred text editor.\nΨ And build with qmk compile -kb forever60 -km default.

qmk import-keymap

This command imports a data-driven keymap.json keymap into the repo.

Usage:

usage: qmk import-keymap [-h] filename

Example:

qmk import-keymap ~/Downloads/asdf2.json\nΨ Importing asdf2.json.\n\nΨ Imported a new keymap named asdf2.\nΨ To start working on things, `cd` into keyboards/takashicompany/dogtag/keymaps/asdf2,\nΨ or open the directory in your preferred text editor.\nΨ And build with qmk compile -kb takashicompany/dogtag -km asdf2.

qmk import-kbfirmware

This command creates a new keyboard based on a Keyboard Firmware Builder export.

Usage:

usage: qmk import-kbfirmware [-h] filename

Example:

$ qmk import-kbfirmware ~/Downloads/gh62.json\nΨ Importing gh62.json.\n\n⚠ Support here is basic - Consider using 'qmk new-keyboard' instead\nΨ Imported a new keyboard named gh62.\nΨ To start working on things, `cd` into keyboards/gh62,\nΨ or open the directory in your preferred text editor.\nΨ And build with qmk compile -kb gh62 -km default.

External Userspace Commands

qmk userspace-add

This command adds a keyboard/keymap to the External Userspace build targets.

Usage:

qmk userspace-add [-h] [-km KEYMAP] [-kb KEYBOARD] [builds ...]\n\npositional arguments:\n  builds                List of builds in form <keyboard>:<keymap>, or path to a keymap JSON file.\n\noptions:\n  -h, --help            show this help message and exit\n  -km KEYMAP, --keymap KEYMAP\n                        The keymap to build a firmware for. Ignored when a configurator export is supplied.\n  -kb KEYBOARD, --keyboard KEYBOARD\n                        The keyboard to build a firmware for. Ignored when a configurator export is supplied.

Example:

$ qmk userspace-add -kb planck/rev6 -km default\nΨ Added planck/rev6:default to userspace build targets\nΨ Saved userspace file to /home/you/qmk_userspace/qmk.json

qmk userspace-remove

This command removes a keyboard/keymap from the External Userspace build targets.

Usage:

qmk userspace-remove [-h] [-km KEYMAP] [-kb KEYBOARD] [builds ...]\n\npositional arguments:\n  builds                List of builds in form <keyboard>:<keymap>, or path to a keymap JSON file.\n\noptions:\n  -h, --help            show this help message and exit\n  -km KEYMAP, --keymap KEYMAP\n                        The keymap to build a firmware for. Ignored when a configurator export is supplied.\n  -kb KEYBOARD, --keyboard KEYBOARD\n                        The keyboard to build a firmware for. Ignored when a configurator export is supplied.

Example:

$ qmk userspace-remove -kb planck/rev6 -km default\nΨ Removed planck/rev6:default from userspace build targets\nΨ Saved userspace file to /home/you/qmk_userspace/qmk.json

qmk userspace-list

This command lists the External Userspace build targets.

Usage:

qmk userspace-list [-h] [-e]\n\noptions:\n  -h, --help    show this help message and exit\n  -e, --expand  Expands any use of `all` for either keyboard or keymap.

Example:

$ qmk userspace-list\nΨ Current userspace build targets:\nΨ Keyboard: planck/rev6, keymap: you\nΨ Keyboard: clueboard/66/rev3, keymap: you

qmk userspace-compile

This command compiles all the External Userspace build targets.

Usage:

qmk userspace-compile [-h] [-e ENV] [-n] [-c] [-j PARALLEL] [-t]\n\noptions:\n  -h, --help            show this help message and exit\n  -e ENV, --env ENV     Set a variable to be passed to make. May be passed multiple times.\n  -n, --dry-run         Don't actually build, just show the commands to be run.\n  -c, --clean           Remove object files before compiling.\n  -j PARALLEL, --parallel PARALLEL\n                        Set the number of parallel make jobs; 0 means unlimited.\n  -t, --no-temp         Remove temporary files during build.

Example:

$ qmk userspace-compile\nΨ Preparing target list...\nBuild planck/rev6:you                                                  [OK]\nBuild clueboard/66/rev3:you                                            [OK]

qmk userspace-doctor

This command examines your environment and alerts you to potential problems related to External Userspace.

Example:

% qmk userspace-doctor\nΨ QMK home: /home/you/qmk_userspace/qmk_firmware\nΨ Testing userspace candidate: /home/you/qmk_userspace -- Valid `qmk.json`\nΨ QMK userspace: /home/you/qmk_userspace\nΨ Userspace enabled: True

Developer Commands

qmk format-text

This command formats text files to have proper line endings.

Every text file in the repository needs to have Unix (LF) line ending. If you are working on Windows, you must ensure that line endings are corrected in order to get your PRs merged.

qmk format-text

qmk format-c

This command formats C code using clang-format.

Run it with no arguments to format all core code that has been changed. Default checks origin/master with git diff, branch can be changed using -b <branch_name>

Run it with -a to format all core code, or pass filenames on the command line to run it on specific files.

Usage for specified files:

qmk format-c [file1] [file2] [...] [fileN]

Usage for all core files:

qmk format-c -a

Usage for only changed files against origin/master:

qmk format-c

Usage for only changed files against branch_name:

qmk format-c -b branch_name

qmk generate-compilation-database

Usage:

qmk generate-compilation-database [-kb KEYBOARD] [-km KEYMAP]

Creates a compile_commands.json file.

Does your IDE/editor use a language server but doesn't quite find all the necessary include files? Do you hate red squigglies? Do you wish your editor could figure out #include QMK_KEYBOARD_H? You might need a compilation database! The qmk tool can build this for you.

This command needs to know which keyboard and keymap to build. It uses the same configuration options as the qmk compile command: arguments, current directory, and config files.

Example:

$ cd ~/qmk_firmware/keyboards/gh60/satan/keymaps/colemak\n$ qmk generate-compilation-database\nΨ Making clean\nΨ Gathering build instructions from make -n gh60/satan:colemak\nΨ Found 50 compile commands\nΨ Writing build database to /Users/you/src/qmk_firmware/compile_commands.json

Now open your dev environment and live a squiggly-free life.

qmk docs

This command starts a local HTTP server which you can use for browsing or improving the docs. Default port is 5173.

This command requires node and yarn to be installed as prerequisites, and provides live reload capability whilst editing.

Usage:

usage: qmk docs [-h]\n\noptions:\n  -h, --help  show this help message and exit

qmk generate-docs

This command allows you to generate QMK documentation locally. It can be uses for general browsing or improving the docs. Use the -s/--serve flag to also serve the static site once built. Default port is 4173.

This command requires node and yarn to be installed as prerequisites, and requires the operating system to support symlinks.

Usage:

usage: qmk generate-docs [-h] [-s]\n\noptions:\n  -h, --help   show this help message and exit\n  -s, --serve  Serves the generated docs once built.

qmk generate-rgb-breathe-table

This command generates a lookup table (LUT) header file for the RGB Lighting feature's breathing animation. Place this file in your keyboard or keymap directory as rgblight_breathe_table.h to override the default LUT in quantum/rgblight/.

Usage:

qmk generate-rgb-breathe-table [-q] [-o OUTPUT] [-m MAX] [-c CENTER]

qmk kle2json

This command allows you to convert from raw KLE data to QMK Configurator JSON. It accepts either an absolute file path, or a file name in the current directory. By default it will not overwrite info.json if it is already present. Use the -f or --force flag to overwrite.

Usage:

qmk kle2json [-f] <filename>

Examples:

$ qmk kle2json kle.txt\n☒ File info.json already exists, use -f or --force to overwrite.
$ qmk kle2json -f kle.txt -f\nΨ Wrote out to info.json

qmk format-python

This command formats python code in qmk_firmware.

Usage:

qmk format-python

qmk pytest

This command runs the python test suite. If you make changes to python code you should ensure this runs successfully.

Usage:

qmk pytest [-t TEST]

Examples:

Run entire test suite:

qmk pytest

Run test group:

qmk pytest -t qmk.tests.test_cli_commands

Run single test:

qmk pytest -t qmk.tests.test_cli_commands.test_c2json\nqmk pytest -t qmk.tests.test_qmk_path

qmk painter-convert-graphics

This command converts images to a format usable by QMK, i.e. the QGF File Format. See the Quantum Painter documentation for more information on this command.

qmk painter-make-font-image

This command converts a TTF font to an intermediate format for editing, before converting to the QFF File Format. See the Quantum Painter documentation for more information on this command.

qmk painter-convert-font-image

This command converts an intermediate font image to the QFF File Format. See the Quantum Painter documentation for more information on this command.

qmk test-c

This command runs the C unit test suite. If you make changes to C code you should ensure this runs successfully.

Usage:

qmk test-c [-h] [-t TEST] [-l] [-c] [-e ENV] [-j PARALLEL]\n\noptions:\n  -h, --help            show this help message and exit\n  -t TEST, --test TEST  Test to run from the available list. Supports wildcard globs. May be passed multiple times.\n  -l, --list            List available tests.\n  -c, --clean           Remove object files before compiling.\n  -e ENV, --env ENV     Set a variable to be passed to make. May be passed multiple times.\n  -j PARALLEL, --parallel PARALLEL\n                        Set the number of parallel make jobs; 0 means unlimited.

Examples:

Run entire test suite:

qmk test-c

List available tests:

qmk test-c --list

Run matching test:

qmk test-c --test unicode*

Run single test:

qmk test-c --test basic
', 296); diff --git a/assets/cli_commands.md.DGx-qNiE.lean.js b/assets/cli_commands.md.bKM86b65.lean.js similarity index 91% rename from assets/cli_commands.md.DGx-qNiE.lean.js rename to assets/cli_commands.md.bKM86b65.lean.js index 0e871073452..77cb42774ab 100644 --- a/assets/cli_commands.md.DGx-qNiE.lean.js +++ b/assets/cli_commands.md.bKM86b65.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK CLI Commands","description":"","frontmatter":{},"headers":[],"relativePath":"cli_commands.md","filePath":"cli_commands.md"}'); const _sfc_main = { name: "cli_commands.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 296); diff --git a/assets/cli_configuration.md.CGSB128P.js b/assets/cli_configuration.md.CY0YDFkc.js similarity index 99% rename from assets/cli_configuration.md.CGSB128P.js rename to assets/cli_configuration.md.CY0YDFkc.js index ac2b69b48d7..f01c0630e45 100644 --- a/assets/cli_configuration.md.CGSB128P.js +++ b/assets/cli_configuration.md.CY0YDFkc.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK CLI Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"cli_configuration.md","filePath":"cli_configuration.md"}'); const _sfc_main = { name: "cli_configuration.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK CLI Configuration

This document explains how qmk config works.

Introduction

Configuration for the QMK CLI is a key/value system. Each key consists of a subcommand and an argument name separated by a period. This allows for a straightforward and direct translation between config keys and the arguments they set.

Simple Example

As an example let's look at the command qmk compile --keyboard clueboard/66/rev4 --keymap default.

There are two command line arguments that could be read from configuration instead:

Let's set these now:

$ qmk config compile.keyboard=clueboard/66/rev4 compile.keymap=default\ncompile.keyboard: None -> clueboard/66/rev4\ncompile.keymap: None -> default\nΨ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'

Now I can run qmk compile without specifying my keyboard and keymap each time.

Setting User Defaults

Sometimes you want to share a setting between multiple commands. For example, multiple commands take the argument --keyboard. Rather than setting this value for every command you can set a user value which will be used by any command that takes that argument.

Example:

$ qmk config user.keyboard=clueboard/66/rev4 user.keymap=default\nuser.keyboard: None -> clueboard/66/rev4\nuser.keymap: None -> default\nΨ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'

CLI Documentation (qmk config)

The qmk config command is used to interact with the underlying configuration. When run with no argument it shows the current configuration. When arguments are supplied they are assumed to be configuration tokens, which are strings containing no spaces with the following form:

<subcommand|general|default>[.<key>][=<value>]

Setting Configuration Values

You can set configuration values by putting an equal sign (=) into your config key. The key must always be the full <section>.<key> form.

Example:

$ qmk config default.keymap=default\ndefault.keymap: None -> default\nΨ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'

Reading Configuration Values

You can read configuration values for the entire configuration, a single key, or for an entire section. You can also specify multiple keys to display more than one value.

Entire Configuration Example

qmk config

Whole Section Example

qmk config compile

Single Key Example

qmk config compile.keyboard

Multiple Keys Example

qmk config user compile.keyboard compile.keymap

Deleting Configuration Values

You can delete a configuration value by setting it to the special string None.

Example:

$ qmk config default.keymap=None\ndefault.keymap: default -> None\nΨ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'

Multiple Operations

You can combine multiple read and write operations into a single command. They will be executed and displayed in order:

$ qmk config compile default.keymap=default compile.keymap=None\ncompile.keymap=skully\ncompile.keyboard=clueboard/66_hotswap/gen1\ndefault.keymap: None -> default\ncompile.keymap: skully -> None\nΨ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'

User Configuration Options

KeyDefault ValueDescription
user.keyboardNoneThe keyboard path (Example: clueboard/66/rev4)
user.keymapNoneThe keymap name (Example: default)
user.nameNoneThe user's GitHub username.

All Configuration Options

KeyDefault ValueDescription
compile.keyboardNoneThe keyboard path (Example: clueboard/66/rev4)
compile.keymapNoneThe keymap name (Example: default)
hello.nameNoneThe name to greet when run.
new_keyboard.keyboardNoneThe keyboard path (Example: clueboard/66/rev4)
new_keyboard.keymapNoneThe keymap name (Example: default)
', 43); diff --git a/assets/cli_configuration.md.CGSB128P.lean.js b/assets/cli_configuration.md.CY0YDFkc.lean.js similarity index 91% rename from assets/cli_configuration.md.CGSB128P.lean.js rename to assets/cli_configuration.md.CY0YDFkc.lean.js index 798f1d26389..76045da4665 100644 --- a/assets/cli_configuration.md.CGSB128P.lean.js +++ b/assets/cli_configuration.md.CY0YDFkc.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK CLI Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"cli_configuration.md","filePath":"cli_configuration.md"}'); const _sfc_main = { name: "cli_configuration.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 43); diff --git a/assets/cli_development.md.3xFA2OvS.js b/assets/cli_development.md.DHT__02d.js similarity index 99% rename from assets/cli_development.md.3xFA2OvS.js rename to assets/cli_development.md.DHT__02d.js index 5c3d7919e5a..639174778f7 100644 --- a/assets/cli_development.md.3xFA2OvS.js +++ b/assets/cli_development.md.DHT__02d.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK CLI Development","description":"","frontmatter":{},"headers":[],"relativePath":"cli_development.md","filePath":"cli_development.md"}'); const _sfc_main = { name: "cli_development.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK CLI Development

This document has useful information for developers wishing to write new qmk subcommands.

Overview

The QMK CLI operates using the subcommand pattern made famous by git. The main qmk script is simply there to setup the environment and pick the correct entrypoint to run. Each subcommand is a self-contained module with an entrypoint (decorated by @cli.subcommand()) that performs some action and returns a shell returncode, or None.

Developer mode:

If you intend to maintain keyboards and/or contribute to QMK, you can enable the CLI's "Developer" mode:

qmk config user.developer=True

This will allow you to see all available subcommands.
Note: You will have to install additional requirements:

python3 -m pip install -r requirements-dev.txt

Subcommands

MILC is the CLI framework qmk uses to handle argument parsing, configuration, logging, and many other features. It lets you focus on writing your tool without wasting your time writing glue code.

Subcommands in the local CLI are always found in qmk_firmware/lib/python/qmk/cli.

Let's start by looking at an example subcommand. This is lib/python/qmk/cli/hello.py:

python
"""QMK Python Hello World\n\nThis is an example QMK CLI script.\n"""\nfrom milc import cli\n\n\n@cli.argument('-n', '--name', default='World', help='Name to greet.')\n@cli.subcommand('QMK Hello World.')\ndef hello(cli):\n    """Log a friendly greeting.\n    """\n    cli.log.info('Hello, %s!', cli.config.hello.name)

First we import the cli object from milc. This is how we interact with the user and control the script's behavior. We use @cli.argument() to define a command line flag, --name. This also creates a configuration variable named hello.name (and the corresponding user.name) which the user can set so they don't have to specify the argument. The cli.subcommand() decorator designates this function as a subcommand. The name of the subcommand will be taken from the name of the function.

Once inside our function we find a typical "Hello, World!" program. We use cli.log to access the underlying Logger Object, whose behavior is user controllable. We also access the value for name supplied by the user as cli.config.hello.name. The value for cli.config.hello.name will be determined by looking at the --name argument supplied by the user, if not provided it will use the value in the qmk.ini config file, and if neither of those is provided it will fall back to the default supplied in the cli.argument() decorator.

User Interaction

MILC and the QMK CLI have several nice tools for interacting with the user. Using these standard tools will allow you to colorize your text for easier interactions, and allow the user to control when and how that information is displayed and stored.

Printing Text

There are two main methods for outputting text in a subcommand- cli.log and cli.echo(). They operate in similar ways but you should prefer to use cli.log.info() for most general purpose printing.

You can use special tokens to colorize your text, to make it easier to understand the output of your program. See Colorizing Text below.

Both of these methods support built-in string formatting using python's printf style string format operations. You can use tokens such as %s and %d within your text strings then pass the values as arguments. See our Hello, World program above for an example.

You should never use the format operator (%) directly, always pass values as arguments.

Logging (cli.log)

The cli.log object gives you access to a Logger Object. We have configured our log output to show the user a nice emoji for each log level (or the log level name if their terminal does not support unicode.) This way the user can tell at a glance which messages are most important when something goes wrong.

The default log level is INFO. If the user runs qmk -v <subcommand> the default log level will be set to DEBUG.

FunctionEmoji
cli.log.critical{bg_red}{fg_white}¬_¬{style_reset_all}
cli.log.error{fg_red}☒{style_reset_all}
cli.log.warning{fg_yellow}⚠{style_reset_all}
cli.log.info{fg_blue}Ψ{style_reset_all}
cli.log.debug{fg_cyan}☐{style_reset_all}
cli.log.notset{style_reset_all}¯\\\\_(o_o)_/¯

Printing (cli.echo)

Sometimes you simply need to print text outside of the log system. This is appropriate if you are outputting fixed data or writing out something that should never be logged. Most of the time you should prefer cli.log.info() over cli.echo.

Colorizing Text

You can colorize the output of your text by including color tokens within text. Use color to highlight, not to convey information. Remember that the user can disable color, and your subcommand should still be usable if they do.

You should generally avoid setting the background color, unless it's integral to what you are doing. Remember that users have a lot of preferences when it comes to their terminal color, so you should pick colors that work well against both black and white backgrounds.

Colors prefixed with 'fg' will affect the foreground (text) color. Colors prefixed with 'bg' will affect the background color.

', 33); diff --git a/assets/cli_development.md.3xFA2OvS.lean.js b/assets/cli_development.md.DHT__02d.lean.js similarity index 99% rename from assets/cli_development.md.3xFA2OvS.lean.js rename to assets/cli_development.md.DHT__02d.lean.js index a2b45a8f3ea..f034edb270a 100644 --- a/assets/cli_development.md.3xFA2OvS.lean.js +++ b/assets/cli_development.md.DHT__02d.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK CLI Development","description":"","frontmatter":{},"headers":[],"relativePath":"cli_development.md","filePath":"cli_development.md"}'); const _sfc_main = { name: "cli_development.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 33); diff --git a/assets/cli_tab_complete.md.ChaxfzYo.js b/assets/cli_tab_complete.md.NVbK-H31.js similarity index 98% rename from assets/cli_tab_complete.md.ChaxfzYo.js rename to assets/cli_tab_complete.md.NVbK-H31.js index ed93d2438e0..3ae60e1d936 100644 --- a/assets/cli_tab_complete.md.ChaxfzYo.js +++ b/assets/cli_tab_complete.md.NVbK-H31.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Tab Completion for QMK","description":"","frontmatter":{},"headers":[],"relativePath":"cli_tab_complete.md","filePath":"cli_tab_complete.md"}'); const _sfc_main = { name: "cli_tab_complete.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Tab Completion for QMK

If you are using Bash 4.2 or later, Zsh, or FiSH you can enable Tab Completion for the QMK CLI. This will let you tab complete the names of flags, keyboards, files, and other qmk options.

Setup

There are several ways you can setup tab completion.

For Your User Only

Add this to the end of your .profile or .bashrc:

source ~/qmk_firmware/util/qmk_tab_complete.sh

If you put qmk_firmware into another location you will need to adjust this path.

Zsh users will need to load bashcompinit. The following can be added to ~/.zshrc file:

autoload -Uz bashcompinit && bashcompinit

If you want the tab completion available to all users of the system you can add a symlink to the qmk_tab_complete.sh script:

ln -s ~/qmk_firmware/util/qmk_tab_complete.sh /etc/profile.d/qmk_tab_complete.sh

System Wide Copy

In some cases a symlink may not work. Instead you can copy the file directly into place. Be aware that updates to the tab complete script may happen from time to time, you will want to recopy the file periodically.

cp util/qmk_tab_complete.sh /etc/profile.d
', 16); diff --git a/assets/cli_tab_complete.md.ChaxfzYo.lean.js b/assets/cli_tab_complete.md.NVbK-H31.lean.js similarity index 91% rename from assets/cli_tab_complete.md.ChaxfzYo.lean.js rename to assets/cli_tab_complete.md.NVbK-H31.lean.js index 000e833e3dc..d063264e7c8 100644 --- a/assets/cli_tab_complete.md.ChaxfzYo.lean.js +++ b/assets/cli_tab_complete.md.NVbK-H31.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Tab Completion for QMK","description":"","frontmatter":{},"headers":[],"relativePath":"cli_tab_complete.md","filePath":"cli_tab_complete.md"}'); const _sfc_main = { name: "cli_tab_complete.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 16); diff --git a/assets/coding_conventions_c.md.DdrpXBEh.js b/assets/coding_conventions_c.md.DpXNhaZf.js similarity index 99% rename from assets/coding_conventions_c.md.DdrpXBEh.js rename to assets/coding_conventions_c.md.DpXNhaZf.js index 3e227e4df55..1eaf8df7156 100644 --- a/assets/coding_conventions_c.md.DdrpXBEh.js +++ b/assets/coding_conventions_c.md.DpXNhaZf.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Coding Conventions (C)","description":"","frontmatter":{},"headers":[],"relativePath":"coding_conventions_c.md","filePath":"coding_conventions_c.md"}'); const _sfc_main = { name: "coding_conventions_c.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Coding Conventions (C)

Most of our style is pretty easy to pick up on, but right now it's not entirely consistent. You should match the style of the code surrounding your change, but if that code is inconsistent or unclear use the following guidelines:

Here is an example for easy reference:

c
/* Enums for foo */\nenum foo_state {\n    FOO_BAR,\n    FOO_BAZ,\n};\n\n/* Returns a value */\nint foo(void) {\n    if (some_condition) {\n        return FOO_BAR;\n    } else {\n        return -1;\n    }\n}

Auto-formatting with clang-format

Clang-format is part of LLVM and can automatically format your code for you, because ain't nobody got time to do it manually. We supply a configuration file for it that applies most of the coding conventions listed above. It will only change whitespace and newlines, so you will still have to remember to include optional braces yourself.

Use the full LLVM installer to get clang-format on Windows, or use sudo apt install clang-format on Ubuntu.

If you run it from the command-line, pass -style=file as an option and it will automatically find the .clang-format configuration file in the QMK root directory.

If you use VSCode, the standard C/C++ plugin supports clang-format, alternatively there is a separate extension for it.

Some things (like LAYOUT macros) are destroyed by clang-format, so either don't run it on those files, or wrap the sensitive code in // clang-format off and // clang-format on.

', 11); diff --git a/assets/coding_conventions_c.md.DdrpXBEh.lean.js b/assets/coding_conventions_c.md.DpXNhaZf.lean.js similarity index 91% rename from assets/coding_conventions_c.md.DdrpXBEh.lean.js rename to assets/coding_conventions_c.md.DpXNhaZf.lean.js index 59b3111dfb7..7e8636c5648 100644 --- a/assets/coding_conventions_c.md.DdrpXBEh.lean.js +++ b/assets/coding_conventions_c.md.DpXNhaZf.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Coding Conventions (C)","description":"","frontmatter":{},"headers":[],"relativePath":"coding_conventions_c.md","filePath":"coding_conventions_c.md"}'); const _sfc_main = { name: "coding_conventions_c.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 11); diff --git a/assets/coding_conventions_python.md.BV-OK1s5.js b/assets/coding_conventions_python.md.CssZF_dh.js similarity index 99% rename from assets/coding_conventions_python.md.BV-OK1s5.js rename to assets/coding_conventions_python.md.CssZF_dh.js index 477013b8eb4..ae9d2adb1ef 100644 --- a/assets/coding_conventions_python.md.BV-OK1s5.js +++ b/assets/coding_conventions_python.md.CssZF_dh.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Coding Conventions (Python)","description":"","frontmatter":{},"headers":[],"relativePath":"coding_conventions_python.md","filePath":"coding_conventions_python.md"}'); const _sfc_main = { name: "coding_conventions_python.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Coding Conventions (Python)

Most of our style follows PEP8 with some local modifications to make things less nit-picky.

YAPF

You can use yapf to style your code. We provide a config in setup.cfg.

Imports

We don't have a hard and fast rule for when to use import ... vs from ... import .... Understandability and maintainability is our ultimate goal.

Generally we prefer to import specific function and class names from a module to keep code shorter and easier to understand. Sometimes this results in a name that is ambiguous, and in such cases we prefer to import the module instead. You should avoid using the "as" keyword when importing, unless you are importing a compatibility module.

Imports should be one line per module. We group import statements together using the standard python rules- system, 3rd party, local.

Do not use from foo import *. Supply a list of objects you want to import instead, or import the whole module.

Import Examples

Good:

from qmk import effects\n\neffects.echo()

Bad:

from qmk.effects import echo\n\necho()  # It's unclear where echo comes from

Good:

from qmk.keymap import compile_firmware\n\ncompile_firmware()

OK, but the above is better:

import qmk.keymap\n\nqmk.keymap.compile_firmware()

Statements

One statement per line.

Even when allowed (EG if foo: bar) we do not combine 2 statements onto a single line.

Naming

module_name, package_name, ClassName, method_name, ExceptionName, function_name, GLOBAL_CONSTANT_NAME, global_var_name, instance_var_name, function_parameter_name, local_var_name.

Function names, variable names, and filenames should be descriptive; eschew abbreviation. In particular, do not use abbreviations that are ambiguous or unfamiliar to readers outside your project, and do not abbreviate by deleting letters within a word.

Always use a .py filename extension. Never use dashes.

Names to Avoid

Docstrings

To maintain consistency with our docstrings we've set out the following guidelines.

Simple docstring example

def my_awesome_function():\n    """Return the number of seconds since 1970 Jan 1 00:00 UTC.\n    """\n    return int(time.time())

Complex docstring example

def my_awesome_function():\n    """Return the number of seconds since 1970 Jan 1 00:00 UTC.\n\n    This function always returns an integer number of seconds.\n    """\n    return int(time.time())

Function arguments docstring example

def my_awesome_function(start=None, offset=0):\n    """Return the number of seconds since 1970 Jan 1 00:00 UTC.\n\n    This function always returns an integer number of seconds.\n\n\n    Args:\n        start\n            The time to start at instead of 1970 Jan 1 00:00 UTC\n\n        offset\n            Return an answer that has this number of seconds subtracted first\n\n    Returns:\n        An integer describing a number of seconds.\n\n    Raises:\n        ValueError\n            When `start` or `offset` are not positive numbers\n    """\n    if start < 0 or offset < 0:\n        raise ValueError('start and offset must be positive numbers.')\n\n    if not start:\n        start = time.time()\n\n    return int(start - offset)

Exceptions

Exceptions are used to handle exceptional situations. They should not be used for flow control. This is a break from the python norm of "ask for forgiveness." If you are catching an exception it should be to handle a situation that is unusual.

If you use a catch-all exception for any reason you must log the exception and stacktrace using cli.log.

Make your try/except blocks as short as possible. If you need a lot of try statements you may need to restructure your code.

Tuples

When defining one-item tuples always include a trailing comma so that it is obvious you are using a tuple. Do not rely on implicit one-item tuple unpacking. Better still use a list which is unambiguous.

This is particularly important when using the printf-style format strings that are commonly used.

Lists and Dictionaries

We have configured YAPF to differentiate between sequence styles with a trailing comma. When a trailing comma is omitted YAPF will format the sequence as a single line. When a trailing comma is included YAPF will format the sequence with one item per line.

You should generally prefer to keep short definition on a single line. Break out to multiple lines sooner rather than later to aid readability and maintainability.

Parentheses

Avoid excessive parentheses, but do use parentheses to make code easier to understand. Do not use them in return statements unless you are explicitly returning a tuple, or it is part of a math expression.

Format Strings

We generally prefer printf-style format strings. Example:

name = 'World'\nprint('Hello, %s!' % (name,))

This style is used by the logging module, which we make use of extensively, and we have adopted it in other places for consistency. It is also more familiar to C programmers, who are a big part of our casual audience.

Our included CLI module has support for using these without using the percent (%) operator. Look at cli.echo() and the various cli.log functions (EG, cli.log.info()) for more details.

Comprehensions & Generator Expressions

We encourage the liberal use of comprehensions and generators, but do not let them get too complex. If you need complexity fall back to a for loop that is easier to understand.

Lambdas

OK to use but probably should be avoided. With comprehensions and generators the need for lambdas is not as strong as it once was.

Conditional Expressions

OK in variable assignment, but otherwise should be avoided.

Conditional expressions are if statements that are in line with code. For example:

x = 1 if cond else 2

It's generally not a good idea to use these as function arguments, sequence items, etc. It's too easy to overlook.

Default Argument Values

Encouraged, but values must be immutable objects.

When specifying default values in argument lists always be careful to specify objects that can't be modified in place. If you use a mutable object the changes you make will persist between calls, which is usually not what you want. Even if that is what you intend to do it is confusing for others and will hinder understanding.

Bad:

def my_func(foo={}):\n    pass

Good:

def my_func(foo=None):\n    if not foo:\n        foo = {}

Properties

Always use properties instead of getter and setter functions.

class Foo(object):\n    def __init__(self):\n        self._bar = None\n\n    @property\n    def bar(self):\n        return self._bar\n\n    @bar.setter\n    def bar(self, bar):\n        self._bar = bar

True/False Evaluations

You should generally prefer the implicit True/False evaluation in if statements, rather than checking equivalency.

Bad:

if foo == True:\n    pass\n\nif bar == False:\n    pass

Good:

if foo:\n    pass\n\nif not bar:\n    pass

Decorators

Use when appropriate. Try to avoid too much magic unless it helps with understanding.

Threading and Multiprocessing

Should be avoided. If you need this you will have to make a strong case before we merge your code.

Power Features

Python is an extremely flexible language and gives you many fancy features such as custom metaclasses, access to bytecode, on-the-fly compilation, dynamic inheritance, object reparenting, import hacks, reflection, modification of system internals, etc.

Don't use these.

Performance is not a critical concern for us, and code understandability is. We want our codebase to be approachable by someone who only has a day or two to play with it. These features generally come with a cost to easy understanding, and we would prefer to have code that can be readily understood over faster or more compact code.

Note that some standard library modules use these techniques and it is ok to make use of those modules. But please keep readability and understandability in mind when using them.

Type Annotated Code

For now we are not using any type annotation system, and would prefer that code remain unannotated. We may revisit this in the future.

Function length

Prefer small and focused functions.

We recognize that long functions are sometimes appropriate, so no hard limit is placed on function length. If a function exceeds about 40 lines, think about whether it can be broken up without harming the structure of the program.

Even if your long function works perfectly now, someone modifying it in a few months may add new behavior. This could result in bugs that are hard to find. Keeping your functions short and simple makes it easier for other people to read and modify your code.

You could find long and complicated functions when working with some code. Do not be intimidated by modifying existing code: if working with such a function proves to be difficult, you find that errors are hard to debug, or you want to use a piece of it in several different contexts, consider breaking up the function into smaller and more manageable pieces.

FIXMEs

It is OK to leave FIXMEs in code. Why? Encouraging people to at least document parts of code that need to be thought out more (or that are confusing) is better than leaving this code undocumented.

All FIXMEs should be formatted like:

FIXME(username): Revisit this code when the frob feature is done.

...where username is your GitHub username.

Testing

We use a combination of Integration and Unit testing to ensure that the our code is as bug-free as possible. All the tests can be found in lib/python/qmk/tests/. You can run all the tests with qmk pytest.

At the time of this writing our tests are not very comprehensive. Looking at the current tests and writing new test cases for untested situations is a great way to both familiarize yourself with the codebase and contribute to QMK.

Integration Tests

Integration tests can be found in lib/python/qmk/tests/test_cli_commands.py. This is where CLI commands are actually run and their overall behavior is verified. We use subprocess to launch each CLI command and a combination of checking output and returncode to determine if the right thing happened.

Unit Tests

The other test_*.py files in lib/python/qmk/tests/ contain unit tests. You can write tests for individual functions inside lib/python/qmk/ here. Generally these files are named after the module, with dots replaced by underscores.

At the time of this writing we do not do any mocking for our tests. If you would like to help us change this please open an issue or join #cli on Discord and start a conversation there.

', 108); diff --git a/assets/coding_conventions_python.md.BV-OK1s5.lean.js b/assets/coding_conventions_python.md.CssZF_dh.lean.js similarity index 92% rename from assets/coding_conventions_python.md.BV-OK1s5.lean.js rename to assets/coding_conventions_python.md.CssZF_dh.lean.js index 9fcd9266332..fe17089dd7c 100644 --- a/assets/coding_conventions_python.md.BV-OK1s5.lean.js +++ b/assets/coding_conventions_python.md.CssZF_dh.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Coding Conventions (Python)","description":"","frontmatter":{},"headers":[],"relativePath":"coding_conventions_python.md","filePath":"coding_conventions_python.md"}'); const _sfc_main = { name: "coding_conventions_python.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 108); diff --git a/assets/compatible_microcontrollers.md.6HA6FJZJ.js b/assets/compatible_microcontrollers.md.BgEcnKTp.js similarity index 99% rename from assets/compatible_microcontrollers.md.6HA6FJZJ.js rename to assets/compatible_microcontrollers.md.BgEcnKTp.js index f16afcb91f5..9fc7c46c062 100644 --- a/assets/compatible_microcontrollers.md.6HA6FJZJ.js +++ b/assets/compatible_microcontrollers.md.BgEcnKTp.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Compatible Microcontrollers","description":"","frontmatter":{},"headers":[],"relativePath":"compatible_microcontrollers.md","filePath":"compatible_microcontrollers.md"}'); const _sfc_main = { name: "compatible_microcontrollers.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Compatible Microcontrollers

QMK runs on any USB-capable AVR or ARM microcontroller with enough flash space - generally 32kB+ for AVR, and 64kB+ for ARM. With significant disabling of features, QMK may just squeeze into 16kB AVR MCUs.

Features within QMK may or may not be compatible with every microcontroller.

Atmel AVR

The following use LUFA as the USB stack:

Certain MCUs which do not have native USB will use V-USB instead:

ARM

You can also use any ARM chip with USB that ChibiOS supports. Most have plenty of flash. Known to work are:

STMicroelectronics (STM32)

WestBerryTech (WB32)

NXP (Kinetis)

Raspberry Pi

For a detailed overview about the RP2040 support by QMK see the dedicated RP2040 page.

Atmel ATSAM

There is limited support for one of Atmel's ATSAM microcontrollers, that being the ATSAMD51J18A used by the Massdrop keyboards. However, it is not recommended to design a board with this microcontroller as the support is quite specialized to Massdrop hardware.

RISC-V

GigaDevice

ChibiOS-Contrib has support for the GigaDevice GD32VF103 series microcontrollers and provides configurations for the SiPeed Longan Nano development board that uses this microcontroller. It is largely pin and feature compatible with STM32F103 and STM32F303 microcontrollers.

', 24); diff --git a/assets/compatible_microcontrollers.md.6HA6FJZJ.lean.js b/assets/compatible_microcontrollers.md.BgEcnKTp.lean.js similarity index 92% rename from assets/compatible_microcontrollers.md.6HA6FJZJ.lean.js rename to assets/compatible_microcontrollers.md.BgEcnKTp.lean.js index 961fe94cd6f..d05424b16d1 100644 --- a/assets/compatible_microcontrollers.md.6HA6FJZJ.lean.js +++ b/assets/compatible_microcontrollers.md.BgEcnKTp.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Compatible Microcontrollers","description":"","frontmatter":{},"headers":[],"relativePath":"compatible_microcontrollers.md","filePath":"compatible_microcontrollers.md"}'); const _sfc_main = { name: "compatible_microcontrollers.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 24); diff --git a/assets/config_options.md.CMZF-afl.js b/assets/config_options.md.B6nk2VgQ.js similarity index 99% rename from assets/config_options.md.CMZF-afl.js rename to assets/config_options.md.B6nk2VgQ.js index 06d226e86f6..37300914906 100644 --- a/assets/config_options.md.CMZF-afl.js +++ b/assets/config_options.md.B6nk2VgQ.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Configuring QMK","description":"","frontmatter":{},"headers":[],"relativePath":"config_options.md","filePath":"config_options.md"}'); const _sfc_main = { name: "config_options.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Configuring QMK

QMK is nearly infinitely configurable. Wherever possible we err on the side of allowing users to customize their keyboard, even at the expense of code size. That level of flexibility makes for a daunting configuration experience, however.

There are three main types of configuration files in QMK:

This page will only discuss the first two types, config.h and rules.mk.

TIP

While not all settings have data-driven equivalents yet, keyboard makers are encouraged to utilize the info.json file to set the metadata for their boards when possible. See the info.json Format page for more details.

These files exist at various levels in QMK and all files of the same type are combined to build the final configuration. The levels, from lowest priority to highest priority, are:

QMK Default

Every available setting in QMK has a default. If that setting is not set at the Keyboard, Folder, or Keymap level this is the setting that will be used.

Keyboard

This level contains config options that should apply to the whole keyboard. Some settings won't change in revisions, or most keymaps. Other settings are merely defaults for this keyboard and can be overridden by folders and/or keymaps.

Folders

Some keyboards have folders and sub-folders to allow for different hardware configurations. Most keyboards only go 1 folder deep, but QMK supports structures up to 5 folders deep. Each folder can have its own config.h and rules.mk files that are incorporated into the final configuration.

Keymap

This level contains all of the options for that particular keymap. If you wish to override a previous declaration, you can use #undef <variable> to undefine it, where you can then redefine it without an error.

The config.h File

This is a C header file that is one of the first things included, and will persist over the whole project (if included). Lots of variables can be set here and accessed elsewhere. The config.h file shouldn't be including other config.h files.

Hardware Options

Features That Can Be Disabled

If you define these options you will disable the associated feature, which can save on code size.

Features That Can Be Enabled

If you define these options you will enable the associated feature, which may increase your code size.

Behaviors That Can Be Configured

RGB Light Configuration

Mouse Key Options

Split Keyboard Options

Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk

Setting Handedness

One thing to remember, the side that the USB port is plugged into is always the master half. The side not plugged into USB is the slave.

There are a few different ways to set handedness for split keyboards (listed in order of precedence):

  1. Set SPLIT_HAND_PIN: Reads a pin to determine handedness. If pin is high, it's the left side, if low, the half is determined to be the right side
  2. Set EE_HANDS and flash eeprom-lefthand.eep/eeprom-righthand.eep to each half
  3. Set MASTER_RIGHT: Half that is plugged into the USB port is determined to be the master and right half (inverse of the default)
  4. Default: The side that is plugged into the USB port is the master half and is assumed to be the left half. The slave side is the right half

Defines for handedness

Other Options

The rules.mk File

This is a make file that is included by the top-level Makefile. It is used to set some information about the MCU that we will be compiling for as well as enabling and disabling certain features.

Build Options

AVR MCU Options

Feature Options

Use these to enable or disable building certain features. The more you have enabled the bigger your firmware will be, and you run the risk of building a firmware too large for your MCU.

USB Endpoint Limitations

In order to provide services over USB, QMK has to use USB endpoints. These are a finite resource: each microcontroller has only a certain number. This limits what features can be enabled together. If the available endpoints are exceeded, a build error is thrown.

The following features can require separate endpoints:

In order to improve utilisation of the endpoints, the HID features can be combined to use a single endpoint. By default, MOUSEKEY, EXTRAKEY, and NKRO are combined into a single endpoint.

The base keyboard functionality can also be combined into the endpoint, by setting KEYBOARD_SHARED_EP = yes. This frees up one more endpoint, but it can prevent the keyboard working in some BIOSes, as they do not implement Boot Keyboard protocol switching.

Combining the mouse also breaks Boot Mouse compatibility. The mouse can be uncombined by setting MOUSE_SHARED_EP = no if this functionality is required.

', 59); diff --git a/assets/config_options.md.CMZF-afl.lean.js b/assets/config_options.md.B6nk2VgQ.lean.js similarity index 91% rename from assets/config_options.md.CMZF-afl.lean.js rename to assets/config_options.md.B6nk2VgQ.lean.js index 5b983e0ebeb..9af9241b49f 100644 --- a/assets/config_options.md.CMZF-afl.lean.js +++ b/assets/config_options.md.B6nk2VgQ.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Configuring QMK","description":"","frontmatter":{},"headers":[],"relativePath":"config_options.md","filePath":"config_options.md"}'); const _sfc_main = { name: "config_options.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 59); diff --git a/assets/configurator_architecture.md.DEFTvTlS.js b/assets/configurator_architecture.md.CmFDpVLe.js similarity index 99% rename from assets/configurator_architecture.md.DEFTvTlS.js rename to assets/configurator_architecture.md.CmFDpVLe.js index f9b6cce5458..7b612092024 100644 --- a/assets/configurator_architecture.md.DEFTvTlS.js +++ b/assets/configurator_architecture.md.CmFDpVLe.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const _imports_0 = "/assets/configurator_diagram.CbZon-ao.svg"; const __pageData = JSON.parse('{"title":"QMK Configurator Architecture","description":"","frontmatter":{},"headers":[],"relativePath":"configurator_architecture.md","filePath":"configurator_architecture.md"}'); const _sfc_main = { name: "configurator_architecture.md" }; diff --git a/assets/configurator_architecture.md.DEFTvTlS.lean.js b/assets/configurator_architecture.md.CmFDpVLe.lean.js similarity index 92% rename from assets/configurator_architecture.md.DEFTvTlS.lean.js rename to assets/configurator_architecture.md.CmFDpVLe.lean.js index 279a767c209..105f2d02070 100644 --- a/assets/configurator_architecture.md.DEFTvTlS.lean.js +++ b/assets/configurator_architecture.md.CmFDpVLe.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const _imports_0 = "/assets/configurator_diagram.CbZon-ao.svg"; const __pageData = JSON.parse('{"title":"QMK Configurator Architecture","description":"","frontmatter":{},"headers":[],"relativePath":"configurator_architecture.md","filePath":"configurator_architecture.md"}'); const _sfc_main = { name: "configurator_architecture.md" }; diff --git a/assets/configurator_default_keymaps.md.B3v8dlHd.js b/assets/configurator_default_keymaps.md.Db0fQLFV.js similarity index 99% rename from assets/configurator_default_keymaps.md.B3v8dlHd.js rename to assets/configurator_default_keymaps.md.Db0fQLFV.js index 19ff8a3bf2c..ce66fc883c2 100644 --- a/assets/configurator_default_keymaps.md.B3v8dlHd.js +++ b/assets/configurator_default_keymaps.md.Db0fQLFV.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Adding Default Keymaps to QMK Configurator","description":"","frontmatter":{},"headers":[],"relativePath":"configurator_default_keymaps.md","filePath":"configurator_default_keymaps.md"}'); const _sfc_main = { name: "configurator_default_keymaps.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Adding Default Keymaps to QMK Configurator

This page covers how to add a default keymap for a keyboard to QMK Configurator.

Technical Information

QMK Configurator uses JSON as its native file format for keymaps. As much as possible, these should be kept such that they behave the same as running make <keyboard>:default from qmk_firmware.

Keymaps in this directory require four key-value pairs:

Additionally, most keymaps contain a commit key. This key is not consumed by the API that back-stops QMK Configurator, but is used by Configurator's maintainers to tell which version of a keymap was used to create the JSON keymap in this repository. The value is the SHA of the last commit to modify a board's default keymap.c in the qmk_firmware repository. The SHA is found by checking out the master branch of the qmk/qmk_firmware repository and running git log -1 --pretty=oneline -- keyboards/<keyboard>/keymaps/default/keymap.c (use keymap.json if the keyboard in question has this file instead), which should return something similar to:

f14629ed1cd7c7ec9089604d64f29a99981558e8 Remove/migrate action_get_macro()s from default keymaps (#5625)

In this example, f14629ed1cd7c7ec9089604d64f29a99981558e8 is the value that should be used for commit.

Example

If one wished to add a default keymap for the H87a by Hineybush, one would run the git log command above against the H87a's default keymap in qmk_firmware:

user ~/qmk_firmware (master)\n$ git log -1 --pretty=oneline master -- keyboards/hineybush/h87a/keymaps/default/keymap.c\nef8878fba5d3786e3f9c66436da63a560cd36ac9 Hineybush h87a lock indicators (#8237)

Now that we have the commit hash, we need the keymap (edited for readability):

c
...\n#include QMK_KEYBOARD_H\n\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n\n  [0] = LAYOUT_all(\n    KC_ESC,           KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,              KC_PSCR, KC_SCRL, KC_PAUS,\n    KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, KC_BSPC,    KC_INS,  KC_HOME, KC_PGUP,\n    KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,             KC_DEL,  KC_END,  KC_PGDN,\n    KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,\n    KC_LSFT, KC_NUBS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, KC_TRNS,                      KC_UP,\n    KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             KC_RALT, MO(1),   KC_RGUI, KC_RCTL,             KC_LEFT, KC_DOWN, KC_RGHT),\n\n  [1] = LAYOUT_all(\n    KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI,             BL_TOGG, BL_DOWN, BL_UP,\n    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS, KC_TRNS, KC_VOLU,\n    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,             KC_MPLY, KC_MNXT, KC_VOLD,\n    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\n    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                      KC_TRNS,\n    KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,             KC_TRNS, KC_TRNS, KC_TRNS),\n\n};

The default keymap uses the LAYOUT_all macro, so that will be the value of the layout key. Compiled to a QMK Configurator JSON keymap, our resulting file should be:

json
{\n  "keyboard": "hineybush/h87a",\n  "keymap": "default",\n  "commit": "ef8878fba5d3786e3f9c66436da63a560cd36ac9",\n  "layout": "LAYOUT_all",\n  "layers": [\n    [\n      "KC_ESC",             "KC_F1",   "KC_F2",   "KC_F3",   "KC_F4",   "KC_F5",   "KC_F6",   "KC_F7",   "KC_F8",   "KC_F9",   "KC_F10",  "KC_F11",  "KC_F12",                "KC_PSCR", "KC_SCRL", "KC_PAUS",\n      "KC_GRV",  "KC_1",    "KC_2",    "KC_3",    "KC_4",    "KC_5",    "KC_6",    "KC_7",    "KC_8",    "KC_9",    "KC_0",    "KC_MINS", "KC_EQL",  "KC_BSPC", "KC_BSPC",    "KC_INS",  "KC_HOME", "KC_PGUP",\n      "KC_TAB",  "KC_Q",    "KC_W",    "KC_E",    "KC_R",    "KC_T",    "KC_Y",    "KC_U",    "KC_I",    "KC_O",    "KC_P",    "KC_LBRC", "KC_RBRC", "KC_BSLS",               "KC_DEL",  "KC_END",  "KC_PGDN",\n      "KC_CAPS", "KC_A",    "KC_S",    "KC_D",    "KC_F",    "KC_G",    "KC_H",    "KC_J",    "KC_K",    "KC_L",    "KC_SCLN", "KC_QUOT", "KC_NUHS", "KC_ENT",\n      "KC_LSFT", "KC_NUBS", "KC_Z",    "KC_X",    "KC_C",    "KC_V",    "KC_B",    "KC_N",    "KC_M",    "KC_COMM", "KC_DOT",  "KC_SLSH", "KC_RSFT", "KC_TRNS",                          "KC_UP",\n      "KC_LCTL", "KC_LGUI", "KC_LALT",                                  "KC_SPC",                                   "KC_RALT", "MO(1)",   "KC_RGUI", "KC_RCTL",               "KC_LEFT", "KC_DOWN", "KC_RGHT"\n    ],\n    [\n      "KC_TRNS",            "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_TOG", "RGB_MOD", "RGB_HUD", "RGB_HUI", "RGB_SAD", "RGB_SAI", "RGB_VAD", "RGB_VAI",               "BL_TOGG", "BL_DOWN", "BL_UP",\n      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",    "KC_TRNS", "KC_TRNS", "KC_VOLU",\n      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "QK_BOOT", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",               "KC_MPLY", "KC_MNXT", "KC_VOLD",\n      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",\n      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",                          "KC_TRNS",\n      "KC_TRNS", "KC_TRNS", "KC_TRNS",                                  "KC_TRNS",                                  "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",               "KC_TRNS", "KC_TRNS", "KC_TRNS"\n    ]\n  ]\n}

The white space in the layers arrays have no effect on the functionality of the keymap, but are used to make these files easier for humans to read.

Caveats

Layers can only be referenced by number

A common QMK convention is to name layers using a series of #defines, or an enum statement:

c
enum layer_names {\n    _BASE,\n    _MEDIA,\n    _FN\n};

This works in C, but for Configurator, you must use the layer's numeric index – MO(_FN) would need to be MO(2) in the above example.

No support for custom code of any kind

Features that require adding functions to the keymap.c file, such as Tap Dance or Unicode, can not be compiled in Configurator at all. Even setting TAP_DANCE_ENABLE = yes in the qmk_firmware repository at the keyboard level will prevent Configurator from compiling any firmware for that keyboard. This is limited both by the API and the current spec of our JSON keymap format.

Limited Support for Custom keycodes

There is a way to support custom keycodes: if the logic for a custom keycode is implemented at the keyboard level instead of the keymap level in qmk_firmware, that keycode can be used in Configurator and it will compile and work. Instead of using the following in your keymap.c:

c
enum custom_keycodes {\n    CUSTOM_1 = SAFE_RANGE,\n    CUSTOM_2,\n    CUSTOM_3\n};\n...\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n    switch(keycode) {\n        case CUSTOM_1:\n            if (record->event.pressed) {\n                SEND_STRING("This is custom keycode #1.");\n            }\n            return false;\n        case CUSTOM_2:\n            if (record->event.pressed) {\n                SEND_STRING("This is custom keycode #2.");\n            }\n            return false;\n        case CUSTOM_3:\n            if (record->event.pressed) {\n                SEND_STRING("This is custom keycode #3.");\n            }\n            return false;\n    }\n    return true;\n};

... add the keycode enum block to your keyboard's header file (<keyboard>.h) as follows (note that the enum is named keyboard_keycodes here):

c
enum keyboard_keycodes {\n    CUSTOM_1 = QK_KB_0,\n    CUSTOM_2,\n    CUSTOM_3,\n};

... then the logic to your <keyboard>.c through process_record_kb():

c
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {\n    switch(keycode) {\n        case CUSTOM_1:\n            if (record->event.pressed) {\n                SEND_STRING("This is custom keycode #1.");\n            }\n            return false;\n        case CUSTOM_2:\n            if (record->event.pressed) {\n                SEND_STRING("This is custom keycode #2.");\n            }\n            return false;\n        case CUSTOM_3:\n            if (record->event.pressed) {\n                SEND_STRING("This is custom keycode #3.");\n            }\n            return false;\n    }\n    return process_record_user(keycode, record);\n};

Note the call to process_record_user() at the end.

Additional Reading

For QMK Configurator to support your keyboard, your keyboard must be present in the master branch of the qmk_firmware repository. For instructions on this, please see Supporting Your Keyboard in QMK Configurator.

', 34); diff --git a/assets/configurator_default_keymaps.md.B3v8dlHd.lean.js b/assets/configurator_default_keymaps.md.Db0fQLFV.lean.js similarity index 92% rename from assets/configurator_default_keymaps.md.B3v8dlHd.lean.js rename to assets/configurator_default_keymaps.md.Db0fQLFV.lean.js index 7b22010df54..a02366cd4e3 100644 --- a/assets/configurator_default_keymaps.md.B3v8dlHd.lean.js +++ b/assets/configurator_default_keymaps.md.Db0fQLFV.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Adding Default Keymaps to QMK Configurator","description":"","frontmatter":{},"headers":[],"relativePath":"configurator_default_keymaps.md","filePath":"configurator_default_keymaps.md"}'); const _sfc_main = { name: "configurator_default_keymaps.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 34); diff --git a/assets/configurator_step_by_step.md.CB5U_ksW.js b/assets/configurator_step_by_step.md.CQWwPq1x.js similarity index 98% rename from assets/configurator_step_by_step.md.CB5U_ksW.js rename to assets/configurator_step_by_step.md.CQWwPq1x.js index 4895ab25ffc..96da7ace8a3 100644 --- a/assets/configurator_step_by_step.md.CB5U_ksW.js +++ b/assets/configurator_step_by_step.md.CQWwPq1x.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Configurator: Step by Step","description":"","frontmatter":{},"headers":[],"relativePath":"configurator_step_by_step.md","filePath":"configurator_step_by_step.md"}'); const _sfc_main = { name: "configurator_step_by_step.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Configurator: Step by Step

This page describes the steps for building your firmware in QMK Configurator.

Step 1: Select Your Keyboard

Click the drop down box and select the keyboard you want to create a keymap for.

TIP

If your keyboard has several versions, make sure you select the correct one.

I'll say that again because it's important:

WARNING

MAKE SURE YOU SELECT THE RIGHT VERSION!

Unfortunately if your keyboard has been advertised to be powered by QMK but is not in the list, you will not be able to use Configurator to customize your keyboard.

Chances are a developer hasn't gotten round to adding support or we haven't had a chance to merge it in yet. If there is no active Pull Request, contact the manufacturer and encourage them to add support.

Step 2: Select Your Keyboard Layout

Choose the layout that best represents the keymap you want to create. Some keyboards do not have enough layouts or correct layouts defined yet. They will be supported in the future.

WARNING

Sometimes there isn't a layout that supports your exact build. In that case select LAYOUT_all.

Step 3: Name Your Keymap

Call this keymap what you want.

TIP

If you are running into issues when compiling, it may be worth changing this name, as it may already exist in the QMK Firmware repo.

Step 4: Define Your Keymap

Keycode Entry is accomplished in one of 3 ways:

  1. Drag and drop
  2. Clicking on an empty spot on the layout, then clicking the keycode you desire
  3. Clicking on an empty spot on the layout, then pressing the physical key on your keyboard

TIP

Hover your mouse over a key and a short blurb will tell you what that keycode does. For a more verbose description please see:

WARNING

If your selected layout doesn't match your physical build leave the unused keys blank. If you're not sure which key is in use, for example you have a one backspace key but LAYOUT_all has 2 keys, put the same keycode in both locations.

Step 5: Save Your Keymap for Future Changes

When you're satisfied with your keymap or just want to work on it later, press the Download this QMK Keymap JSON File button. It will save your keymap to your computer. You can then load this .json file in the future by pressing the Upload a QMK Keymap JSON File button.

WARNING

CAUTION: This is not the same type of .json file used for kbfirmware.com or any other tool. If you try to use this for those tools, or the .json from those tools with QMK Configurator, you will encounter problems.

Step 6: Compile Your Firmware File

Press the green Compile button.

When the compilation is done, you will be able to press the green Download Firmware button.

Next steps: Flashing Your Keyboard

Please refer to Flashing Firmware.

', 29); diff --git a/assets/configurator_step_by_step.md.CB5U_ksW.lean.js b/assets/configurator_step_by_step.md.CQWwPq1x.lean.js similarity index 92% rename from assets/configurator_step_by_step.md.CB5U_ksW.lean.js rename to assets/configurator_step_by_step.md.CQWwPq1x.lean.js index 86e3f3b2d38..4bfebc3c887 100644 --- a/assets/configurator_step_by_step.md.CB5U_ksW.lean.js +++ b/assets/configurator_step_by_step.md.CQWwPq1x.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Configurator: Step by Step","description":"","frontmatter":{},"headers":[],"relativePath":"configurator_step_by_step.md","filePath":"configurator_step_by_step.md"}'); const _sfc_main = { name: "configurator_step_by_step.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 29); diff --git a/assets/configurator_troubleshooting.md.BxGLPT8G.js b/assets/configurator_troubleshooting.md.DRmoLxtC.js similarity index 97% rename from assets/configurator_troubleshooting.md.BxGLPT8G.js rename to assets/configurator_troubleshooting.md.DRmoLxtC.js index ae4513de1cb..7c8c143d073 100644 --- a/assets/configurator_troubleshooting.md.BxGLPT8G.js +++ b/assets/configurator_troubleshooting.md.DRmoLxtC.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Configurator Troubleshooting","description":"","frontmatter":{},"headers":[],"relativePath":"configurator_troubleshooting.md","filePath":"configurator_troubleshooting.md"}'); const _sfc_main = { name: "configurator_troubleshooting.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Configurator Troubleshooting

My .json file is not working

If the .json file was generated with QMK Configurator, congratulations you have stumbled upon a bug. File an issue at qmk_configurator.

If not... how did you miss the big bold message at the top saying not to use other .json files?

There are extra spaces in my layout? What do I do?

If you're referring to having three spots for space bar, the best course of action is to just fill them all with Space. The same can be done for Backspace and Shift keys.

What is the keycode for...

Please see:

It won't compile

Please double check the other layers of your keymap to make sure there are no random keys present.

Problems and Bugs

We are always accepting customer requests and bug reports. Please file them at qmk_configurator.

', 13); diff --git a/assets/configurator_troubleshooting.md.BxGLPT8G.lean.js b/assets/configurator_troubleshooting.md.DRmoLxtC.lean.js similarity index 92% rename from assets/configurator_troubleshooting.md.BxGLPT8G.lean.js rename to assets/configurator_troubleshooting.md.DRmoLxtC.lean.js index f4c14192ce4..3ca6c38da30 100644 --- a/assets/configurator_troubleshooting.md.BxGLPT8G.lean.js +++ b/assets/configurator_troubleshooting.md.DRmoLxtC.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Configurator Troubleshooting","description":"","frontmatter":{},"headers":[],"relativePath":"configurator_troubleshooting.md","filePath":"configurator_troubleshooting.md"}'); const _sfc_main = { name: "configurator_troubleshooting.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 13); diff --git a/assets/contributing.md.CgMx5YLW.js b/assets/contributing.md.C-zh8zuX.js similarity index 99% rename from assets/contributing.md.CgMx5YLW.js rename to assets/contributing.md.C-zh8zuX.js index 138245a0b15..9fb4f660488 100644 --- a/assets/contributing.md.CgMx5YLW.js +++ b/assets/contributing.md.C-zh8zuX.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"How to Contribute","description":"","frontmatter":{},"headers":[],"relativePath":"contributing.md","filePath":"contributing.md"}'); const _sfc_main = { name: "contributing.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

How to Contribute

👍🎉 First off, thanks for taking the time to read this and contribute! 🎉👍

Third-party contributions help us grow and improve QMK. We want to make the pull request and contribution process useful and easy for both contributors and maintainers. To this end we've put together some guidelines for contributors to help your pull request be accepted without major changes.

I Don't Want to Read This Whole Thing! I Just Have a Question!

If you'd like to ask questions about QMK you can do so on the OLKB Subreddit or on Discord.

Please keep these things in mind:

Project Overview

QMK is largely written in C, with specific features and parts written in C++. It targets embedded processors found in keyboards, particularly AVR (LUFA) and ARM (ChibiOS). If you are already well versed in Arduino programming you'll find a lot of the concepts and limitations familiar. Prior experience with Arduino is not required to successfully contribute to QMK.

Where Can I Go for Help?

If you need help you can open an issue or chat on Discord.

How Do I Make a Contribution?

Never made an open source contribution before? Wondering how contributions work in QMK? Here's a quick rundown!

  1. Sign up for a GitHub account.
  2. Find an issue you are interested in addressing, or a feature you would like to add.
  3. Fork the repository associated with the issue to your GitHub account. This means that you will have a copy of the repository under your-GitHub-username/qmk_firmware.
  4. Clone the repository to your local machine using git clone https://github.com/github-username/repository-name.git.
  5. If you're working on a new feature consider opening an issue to talk with us about the work you're about to undertake.
  6. Create a new branch for your fix using git checkout -b branch-name-here.
  7. Make the appropriate changes for the issue you are trying to address or the feature that you want to add.
  8. Use git add insert-paths-of-changed-files-here to add the file contents of the changed files to the "snapshot" git uses to manage the state of the project, also known as the index.
  9. Use git commit -m "Insert a short message of the changes made here" to store the contents of the index with a descriptive message.
  10. Push the changes to your repository on GitHub using git push origin branch-name-here.
  11. Submit a pull request to QMK Firmware.
  12. Title the pull request with a short description of the changes made and the issue or bug number associated with your change. For example, you can title an issue like so "Added more log outputting to resolve #4352".
  13. In the description of the pull request explain the changes that you made, any issues you think exist with the pull request you made, and any questions you have for the maintainer. It's OK if your pull request is not perfect (no pull request is), the reviewer will be able to help you fix any problems and improve it!
  14. Wait for the pull request to be reviewed by a maintainer.
  15. Make changes to the pull request if the reviewing maintainer recommends them.
  16. Celebrate your success after your pull request is merged!

Coding Conventions

Most of our style is pretty easy to pick up on. If you are familiar with either C or Python you should not have too much trouble with our local styles.

General Guidelines

We have a few different types of changes in QMK, each requiring a different level of rigor. We'd like you to keep the following guidelines in mind no matter what type of change you're making.

Adjust the fronzlebop for the kerpleplork\n\nThe kerpleplork was intermittently failing with error code 23. The root cause was the fronzlebop setting, which causes the kerpleplork to activate every N iterations.\n\nLimited experimentation on the devices I have available shows that 7 is high enough to avoid confusing the kerpleplork, but I'd like to get some feedback from people with ARM devices to be sure.

Documentation

Documentation is one of the easiest ways to get started contributing to QMK. Finding places where the documentation is wrong or incomplete and fixing those is easy! We also very badly need someone to edit our documentation, so if you have editing skills but aren't sure where or how to jump in please reach out for help!

You'll find all our documentation in the qmk_firmware/docs directory, or if you'd rather use a web based workflow you can click the "Edit this page" link at the bottom of each page on https://docs.qmk.fm/.

When providing code examples in your documentation, try to observe naming conventions used elsewhere in the docs. For example, standardizing enums as my_layers or my_keycodes for consistency:

c
enum my_layers {\n  _FIRST_LAYER,\n  _SECOND_LAYER\n};\n\nenum my_keycodes {\n  FIRST_LAYER = SAFE_RANGE,\n  SECOND_LAYER\n};

Previewing the Documentation

Before opening a pull request, you can preview your changes if you have set up the development environment by running this command from the qmk_firmware/ folder:

qmk docs

and navigating to http://localhost:5173/.

Keyboards

Keyboards are the raison d'être for QMK. Some keyboards are community maintained, while others are maintained by the people responsible for making a particular keyboard. The readme.md should tell you who maintains a particular keyboard. If you have questions relating to a particular keyboard you can Open An Issue and tag the maintainer in your question.

We also ask that you follow these guidelines:

Quantum/TMK Core

Before you put a lot of work into building your new feature you should make sure you are implementing it in the best way. You can get a basic understanding of QMK by reading Understanding QMK, which will take you on a tour of the QMK program flow. From here you should talk to us to get a sense of the best way to implement your idea. There are two main ways to do this:

Feature and Bug Fix PRs affect all keyboards. We are also in the process of restructuring QMK. For this reason it is especially important for significant changes to be discussed before implementation has happened. If you open a PR without talking to us first please be prepared to do some significant rework if your choices do not mesh well with our planned direction.

Here are some things to keep in mind when working on your feature or bug fix.

We also ask that you follow these guidelines:

Refactoring

To maintain a clear vision of how things are laid out in QMK we try to plan out refactors in-depth and have a collaborator make the changes. If you have an idea for refactoring, or suggestions, open an issue, we'd love to talk about how QMK can be improved.

What Does the Code of Conduct Mean for Me?

Our Code of Conduct means that you are responsible for treating everyone on the project with respect and courtesy regardless of their identity. If you are the victim of any inappropriate behavior or comments as described in our Code of Conduct, we are here for you and will do the best to ensure that the abuser is reprimanded appropriately, per our code.

', 47); diff --git a/assets/contributing.md.CgMx5YLW.lean.js b/assets/contributing.md.C-zh8zuX.lean.js similarity index 91% rename from assets/contributing.md.CgMx5YLW.lean.js rename to assets/contributing.md.C-zh8zuX.lean.js index 47df07adc1d..b5501a49658 100644 --- a/assets/contributing.md.CgMx5YLW.lean.js +++ b/assets/contributing.md.C-zh8zuX.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"How to Contribute","description":"","frontmatter":{},"headers":[],"relativePath":"contributing.md","filePath":"contributing.md"}'); const _sfc_main = { name: "contributing.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 47); diff --git a/assets/custom_matrix.md.DMnRw_5l.js b/assets/custom_matrix.md.BaJLCNe_.js similarity index 99% rename from assets/custom_matrix.md.DMnRw_5l.js rename to assets/custom_matrix.md.BaJLCNe_.js index 340694f6802..4b46a2c3158 100644 --- a/assets/custom_matrix.md.DMnRw_5l.js +++ b/assets/custom_matrix.md.BaJLCNe_.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Custom Matrix","description":"","frontmatter":{},"headers":[],"relativePath":"custom_matrix.md","filePath":"custom_matrix.md"}'); const _sfc_main = { name: "custom_matrix.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Custom Matrix

QMK provides a mechanism to supplement or replace the default matrix scanning routine with your own code.

The reasons to use this feature include:

Prerequisites

Implementing custom matrix usually involves compilation of an additional source file. It is recommended that for consistency, this file is called matrix.c.

Add a new file to your keyboard directory:

keyboards/<keyboard>/matrix.c

And to configure compilation for the new file, add this to your rules.mk:

make
SRC += matrix.c

'lite'

Provides a default implementation for various scanning functions, reducing the boilerplate code when implementing custom matrix. To configure it, add this to your rules.mk:

make
CUSTOM_MATRIX = lite

And implement the following functions in a matrix.c file in your keyboard folder:

c
void matrix_init_custom(void) {\n    // TODO: initialize hardware here\n}\n\nbool matrix_scan_custom(matrix_row_t current_matrix[]) {\n    bool matrix_has_changed = false;\n\n    // TODO: add matrix scanning routine here\n\n    return matrix_has_changed;\n}

Full Replacement

When more control over the scanning routine is required, you can choose to implement the full scanning routine. To configure it, add this to your rules.mk:

make
CUSTOM_MATRIX = yes

And implement the following functions in a matrix.c file in your keyboard folder:

c
matrix_row_t matrix_get_row(uint8_t row) {\n    // TODO: return the requested row data\n}\n\nvoid matrix_print(void) {\n    // TODO: use print() to dump the current matrix state to console\n}\n\nvoid matrix_init(void) {\n    // TODO: initialize hardware and global matrix state here\n\n    // Unless hardware debouncing - Init the configured debounce routine\n    debounce_init(MATRIX_ROWS);\n\n    // This *must* be called for correct keyboard behavior\n    matrix_init_kb();\n}\n\nuint8_t matrix_scan(void) {\n    bool changed = false;\n\n    // TODO: add matrix scanning routine here\n\n    // Unless hardware debouncing - use the configured debounce routine\n    changed = debounce(raw_matrix, matrix, MATRIX_ROWS, changed);\n\n    // This *must* be called for correct keyboard behavior\n    matrix_scan_kb();\n\n    return changed;\n}

And also provide defaults for the following callbacks:

c
__attribute__((weak)) void matrix_init_kb(void) { matrix_init_user(); }\n\n__attribute__((weak)) void matrix_scan_kb(void) { matrix_scan_user(); }\n\n__attribute__((weak)) void matrix_init_user(void) {}\n\n__attribute__((weak)) void matrix_scan_user(void) {}
', 22); diff --git a/assets/custom_matrix.md.DMnRw_5l.lean.js b/assets/custom_matrix.md.BaJLCNe_.lean.js similarity index 91% rename from assets/custom_matrix.md.DMnRw_5l.lean.js rename to assets/custom_matrix.md.BaJLCNe_.lean.js index e59fb2bd2da..ec1d43f5711 100644 --- a/assets/custom_matrix.md.DMnRw_5l.lean.js +++ b/assets/custom_matrix.md.BaJLCNe_.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Custom Matrix","description":"","frontmatter":{},"headers":[],"relativePath":"custom_matrix.md","filePath":"custom_matrix.md"}'); const _sfc_main = { name: "custom_matrix.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 22); diff --git a/assets/custom_quantum_functions.md.Br1xUGGa.js b/assets/custom_quantum_functions.md.DtIuNxTQ.js similarity index 99% rename from assets/custom_quantum_functions.md.Br1xUGGa.js rename to assets/custom_quantum_functions.md.DtIuNxTQ.js index 949c0471775..ae018e94371 100644 --- a/assets/custom_quantum_functions.md.Br1xUGGa.js +++ b/assets/custom_quantum_functions.md.DtIuNxTQ.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse(`{"title":"How to Customize Your Keyboard's Behavior","description":"","frontmatter":{},"headers":[],"relativePath":"custom_quantum_functions.md","filePath":"custom_quantum_functions.md"}`); const _sfc_main = { name: "custom_quantum_functions.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

How to Customize Your Keyboard's Behavior

For a lot of people a custom keyboard is about more than sending button presses to your computer. You want to be able to do things that are more complex than simple button presses and macros. QMK has hooks that allow you to inject code, override functionality, and otherwise customize how your keyboard behaves in different situations.

This page does not assume any special knowledge about QMK, but reading Understanding QMK will help you understand what is going on at a more fundamental level.

A Word on Core vs Keyboards vs Keymap

We have structured QMK as a hierarchy:

Each of the functions described below can be defined with a _kb() suffix or a _user() suffix. We intend for you to use the _kb() suffix at the Keyboard/Revision level, while the _user() suffix should be used at the Keymap level.

When defining functions at the Keyboard/Revision level it is important that your _kb() implementation call _user() before executing anything else- otherwise the keymap level function will never be called.

Custom Keycodes

By far the most common task is to change the behavior of an existing keycode or to create a new keycode. From a code standpoint the mechanism for each is very similar.

Defining a New Keycode

The first step to creating your own custom keycode(s) is to enumerate them. This means both naming them and assigning a unique number to that keycode. Rather than limit custom keycodes to a fixed range of numbers QMK provides the SAFE_RANGE macro. You can use SAFE_RANGE when enumerating your custom keycodes to guarantee that you get a unique number.

Here is an example of enumerating 2 keycodes. After adding this block to your keymap.c you will be able to use FOO and BAR inside your keymap.

c
enum my_keycodes {\n  FOO = SAFE_RANGE,\n  BAR\n};

Programming the Behavior of Any Keycode

When you want to override the behavior of an existing key, or define the behavior for a new key, you should use the process_record_kb() and process_record_user() functions. These are called by QMK during key processing before the actual key event is handled. If these functions return true QMK will process the keycodes as usual. That can be handy for extending the functionality of a key rather than replacing it. If these functions return false QMK will skip the normal key handling, and it will be up to you to send any key up or down events that are required.

These function are called every time a key is pressed or released.

Example process_record_user() Implementation

This example does two things. It defines the behavior for a custom keycode called FOO, and it supplements our Enter key by playing a tone whenever it is pressed.

c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {\n  switch (keycode) {\n    case FOO:\n      if (record->event.pressed) {\n        // Do something when pressed\n      } else {\n        // Do something else when release\n      }\n      return false; // Skip all further processing of this key\n    case KC_ENTER:\n      // Play a tone when enter is pressed\n      if (record->event.pressed) {\n        PLAY_SONG(tone_qwerty);\n      }\n      return true; // Let QMK send the enter press/release events\n    default:\n      return true; // Process all other keycodes normally\n  }\n}

process_record_* Function Documentation

The keycode argument is whatever is defined in your keymap, eg MO(1), KC_L, etc. You should use a switch...case block to handle these events.

The record argument contains information about the actual press:

c
keyrecord_t record {\n  keyevent_t event {\n    keypos_t key {\n      uint8_t col\n      uint8_t row\n    }\n    bool     pressed\n    uint16_t time\n  }\n}

Keyboard Initialization Code

There are several steps in the keyboard initialization process. Depending on what you want to do, it will influence which function you should use.

These are the three main initialization functions, listed in the order that they're called.

WARNING

For most people, the keyboard_post_init_user function is what you want to call. For instance, this is where you want to set up things for RGB Underglow.

Keyboard Pre Initialization code

This runs very early during startup, even before the USB has been started.

Shortly after this, the matrix is initialized.

For most users, this shouldn't be used, as it's primarily for hardware oriented initialization.

However, if you have hardware stuff that you need initialized, this is the best place for it (such as initializing LED pins).

Example keyboard_pre_init_user() Implementation

This example, at the keyboard level, sets up B0, B1, B2, B3, and B4 as LED pins.

c
void keyboard_pre_init_user(void) {\n  // Call the keyboard pre init code.\n\n  // Set our LED pins as output\n  gpio_set_pin_output(B0);\n  gpio_set_pin_output(B1);\n  gpio_set_pin_output(B2);\n  gpio_set_pin_output(B3);\n  gpio_set_pin_output(B4);\n}

keyboard_pre_init_* Function Documentation

Matrix Initialization Code

This is called when the matrix is initialized, and after some of the hardware has been set up, but before many of the features have been initialized.

This is useful for setting up stuff that you may need elsewhere, but isn't hardware related nor is dependant on where it's started.

matrix_init_* Function Documentation

Low-level Matrix Overrides Function Documentation

Keyboard Post Initialization code

This is ran as the very last task in the keyboard initialization process. This is useful if you want to make changes to certain features, as they should be initialized by this point.

Example keyboard_post_init_user() Implementation

This example, running after everything else has initialized, sets up the rgb underglow configuration.

c
void keyboard_post_init_user(void) {\n  // Call the post init code.\n  rgblight_enable_noeeprom(); // enables Rgb, without saving settings\n  rgblight_sethsv_noeeprom(180, 255, 255); // sets the color to teal/cyan without saving\n  rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3); // sets mode to Fast breathing without saving\n}

keyboard_post_init_* Function Documentation

Matrix Scanning Code

Whenever possible you should customize your keyboard by using process_record_*() and hooking into events that way, to ensure that your code does not have a negative performance impact on your keyboard. However, in rare cases it is necessary to hook into the matrix scanning. Be extremely careful with the performance of code in these functions, as it will be called at least 10 times per second.

Example matrix_scan_* Implementation

This example has been deliberately omitted. You should understand enough about QMK internals to write this without an example before hooking into such a performance sensitive area. If you need help please open an issue or chat with us on Discord.

matrix_scan_* Function Documentation

This function gets called at every matrix scan, which is basically as often as the MCU can handle. Be careful what you put here, as it will get run a lot.

You should use this function if you need custom matrix scanning code. It can also be used for custom status output (such as LEDs or a display) or other functionality that you want to trigger regularly even when the user isn't typing.

Keyboard housekeeping

This function gets called at the end of all QMK processing, before starting the next iteration. You can safely assume that QMK has dealt with the last matrix scan at the time that these functions are invoked -- layer states have been updated, USB reports have been sent, LEDs have been updated, and displays have been drawn.

Similar to matrix_scan_*, these are called as often as the MCU can handle. To keep your board responsive, it's suggested to do as little as possible during these function calls, potentially throtting their behaviour if you do indeed require implementing something special.

Example void housekeeping_task_user(void) implementation

This example will show you how to use void housekeeping_task_user(void) to turn off RGB Light. For RGB Matrix, the builtin RGB_MATRIX_TIMEOUT should be used.

First, add the following lines to your keymap's config.h:

c
#define RGBLIGHT_SLEEP  // enable rgblight_suspend() and rgblight_wakeup() in keymap.c\n#define RGBLIGHT_TIMEOUT 900000  // ms to wait until rgblight time out, 900K ms is 15min.

Next, add the following code to your keymap.c:

c
static uint32_t key_timer;           // timer for last keyboard activity, use 32bit value and function to make longer idle time possible\nstatic void refresh_rgb(void);       // refreshes the activity timer and RGB, invoke whenever any activity happens\nstatic void check_rgb_timeout(void); // checks if enough time has passed for RGB to timeout\nbool is_rgb_timeout = false;         // store if RGB has timed out or not in a boolean\n\nvoid refresh_rgb(void) {\n    key_timer = timer_read32(); // store time of last refresh\n    if (is_rgb_timeout)\n    {\n        is_rgb_timeout = false;\n        rgblight_wakeup();\n    }\n}\nvoid check_rgb_timeout(void) {\n    if (!is_rgb_timeout && timer_elapsed32(key_timer) > RGBLIGHT_TIMEOUT) // check if RGB has already timeout and if enough time has passed\n    {\n        rgblight_suspend();\n        is_rgb_timeout = true;\n    }\n}\n/* Then, call the above functions from QMK's built in post processing functions like so */\n/* Runs at the end of each scan loop, check if RGB timeout has occured or not */\nvoid housekeeping_task_user(void) {\n#ifdef RGBLIGHT_TIMEOUT\n    check_rgb_timeout();\n#endif\n}\n/* Runs after each key press, check if activity occurred */\nvoid post_process_record_user(uint16_t keycode, keyrecord_t *record) {\n#ifdef RGBLIGHT_TIMEOUT\n    if (record->event.pressed)\n        refresh_rgb();\n#endif\n}\n/* Runs after each encoder tick, check if activity occurred */\nvoid post_encoder_update_user(uint8_t index, bool clockwise) {\n#ifdef RGBLIGHT_TIMEOUT\n    refresh_rgb();\n#endif\n}

Keyboard Idling/Wake Code

If the board supports it, it can be "idled", by stopping a number of functions. A good example of this is RGB lights or backlights. This can save on power consumption, or may be better behavior for your keyboard.

This is controlled by two functions: suspend_power_down_* and suspend_wakeup_init_*, which are called when the system board is idled and when it wakes up, respectively.

Example suspend_power_down_user() and suspend_wakeup_init_user() Implementation

c
void suspend_power_down_user(void) {\n    // code will run multiple times while keyboard is suspended\n}\n\nvoid suspend_wakeup_init_user(void) {\n    // code will run on keyboard wakeup\n}

Keyboard suspend/wake Function Documentation

Keyboard Shutdown/Reboot Code

This function gets called whenever the firmware is reset, whether it's a soft reset or reset to the bootloader. This is the spot to use for any sort of cleanup, as this happens right before the actual reset. And it can be useful for turning off different systems (such as RGB, onboard screens, etc).

Additionally, it differentiates between the soft reset (eg, rebooting back into the firmware) or jumping to the bootloader.

Certain tasks are performed during shutdown too. The keyboard is cleared, music and midi is stopped (if enabled), the shutdown chime is triggered (if audio is enabled), and haptic is stopped.

If jump_to_bootloader is set to true, this indicates that the board will be entering the bootloader for a new firmware flash, whereas false indicates that this is happening for a soft reset and will load the firmware agaim immediately (such as when using QK_REBOOT or QK_CLEAR_EEPROM).

As there is a keyboard and user level function, returning false for the user function will disable the keyboard level function, allowing for customization.

TIP

Bootmagic does not trigger shutdown_*() as it happens before most of the initialization process.

Example shutdown_kb() Implementation

c
bool shutdown_kb(bool jump_to_bootloader) {\n    if (!shutdown_user(jump_to_bootloader)) {\n        return false;\n    }\n    \n    if (jump_to_bootloader) {\n        // red for bootloader\n        rgb_matrix_set_color_all(RGB_OFF);\n    } else {\n        // off for soft reset\n        rgb_matrix_set_color_all(RGB_GREEN);\n    }\n    // force flushing -- otherwise will never happen\n    rgb_matrix_update_pwm_buffers();\n    return true;\n}

Example shutdown_user() Implementation

c
bool shutdown_user(bool jump_to_bootloader) {\n    if (jump_to_bootloader) {\n        // red for bootloader\n        rgb_matrix_set_color_all(RGB_RED);\n    } else {\n        // off for soft reset\n        rgb_matrix_set_color_all(RGB_OFF);\n    }\n    // force flushing -- otherwise will never happen\n    rgb_matrix_update_pwm_buffers();\n    // false to not process kb level\n    return false;\n}

Keyboard shutdown/reboot Function Documentation

Deferred Execution

QMK has the ability to execute a callback after a specified period of time, rather than having to manually manage timers. To enable this functionality, set DEFERRED_EXEC_ENABLE = yes in rules.mk.

Deferred executor callbacks

All deferred executor callbacks have a common function signature and look like:

c
uint32_t my_callback(uint32_t trigger_time, void *cb_arg) {\n    /* do something */\n    bool repeat = my_deferred_functionality();\n    return repeat ? 500 : 0;\n}

The first argument trigger_time is the intended time of execution. If other delays prevent executing at the exact trigger time, this allows for "catch-up" or even skipping intervals, depending on the required behaviour.

The second argument cb_arg is the same argument passed into defer_exec() below, and can be used to access state information from the original call context.

The return value is the number of milliseconds to use if the function should be repeated -- if the callback returns 0 then it's automatically unregistered. In the example above, a hypothetical my_deferred_functionality() is invoked to determine if the callback needs to be repeated -- if it does, it reschedules for a 500 millisecond delay, otherwise it informs the deferred execution background task that it's done, by returning 0.

TIP

Note that the returned delay will be applied to the intended trigger time, not the time of callback invocation. This allows for generally consistent timing even in the face of occasional late execution.

Deferred executor registration

Once a callback has been defined, it can be scheduled using the following API:

c
deferred_token my_token = defer_exec(1500, my_callback, NULL);

The first argument is the number of milliseconds to wait until executing my_callback -- in the case above, 1500 milliseconds, or 1.5 seconds.

The third parameter is the cb_arg that gets passed to the callback at the point of execution. This value needs to be valid at the time the callback is invoked -- a local function value will be destroyed before the callback is executed and should not be used. If this is not required, NULL should be used.

The return value is a deferred_token that can consequently be used to cancel the deferred executor callback before it's invoked. If a failure occurs, the returned value will be INVALID_DEFERRED_TOKEN. Usually this will be as a result of supplying 0 to the delay, or a NULL for the callback. The other failure case is if there are too many deferred executions "in flight" -- this can be increased by changing the limit, described below.

Extending a deferred execution

The deferred_token returned by defer_exec() can be used to extend a the duration a pending execution waits before it gets invoked:

c
// This will re-delay my_token's future execution such that it is invoked 800ms after the current time\nextend_deferred_exec(my_token, 800);

Cancelling a deferred execution

The deferred_token returned by defer_exec() can be used to cancel a pending execution before it gets invoked:

c
// This will cancel my_token's future execution\ncancel_deferred_exec(my_token);

Once a token has been canceled, it should be considered invalid. Reusing the same token is not supported.

Deferred callback limits

There are a maximum number of deferred callbacks that can be scheduled, controlled by the value of the define MAX_DEFERRED_EXECUTORS.

If registrations fail, then you can increase this value in your keyboard or keymap config.h file, for example to 16 instead of the default 8:

c
#define MAX_DEFERRED_EXECUTORS 16

Advanced topics

This page used to encompass a large set of features. We have moved many sections that used to be part of this page to their own pages. Everything below this point is simply a redirect so that people following old links on the web find what they're looking for.

Layer Change Code

Layer change code

Persistent Configuration (EEPROM)

Persistent Configuration (EEPROM)

', 124); diff --git a/assets/custom_quantum_functions.md.Br1xUGGa.lean.js b/assets/custom_quantum_functions.md.DtIuNxTQ.lean.js similarity index 92% rename from assets/custom_quantum_functions.md.Br1xUGGa.lean.js rename to assets/custom_quantum_functions.md.DtIuNxTQ.lean.js index 27a7d5eecca..a110aa066b8 100644 --- a/assets/custom_quantum_functions.md.Br1xUGGa.lean.js +++ b/assets/custom_quantum_functions.md.DtIuNxTQ.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse(`{"title":"How to Customize Your Keyboard's Behavior","description":"","frontmatter":{},"headers":[],"relativePath":"custom_quantum_functions.md","filePath":"custom_quantum_functions.md"}`); const _sfc_main = { name: "custom_quantum_functions.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 124); diff --git a/assets/data_driven_config.md.BvLQ7P20.js b/assets/data_driven_config.md.3iL4-P4O.js similarity index 99% rename from assets/data_driven_config.md.BvLQ7P20.js rename to assets/data_driven_config.md.3iL4-P4O.js index 33611a8394a..be6df980bf6 100644 --- a/assets/data_driven_config.md.BvLQ7P20.js +++ b/assets/data_driven_config.md.3iL4-P4O.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Data Driven Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"data_driven_config.md","filePath":"data_driven_config.md"}'); const _sfc_main = { name: "data_driven_config.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Data Driven Configuration

This page describes how QMK's data driven JSON configuration system works. It is aimed at developers who want to work on QMK itself.

History

Historically QMK has been configured through a combination of two mechanisms- rules.mk and config.h. While this worked well when QMK was only a handful of keyboards we've grown to encompass nearly 4000 supported keyboards. That extrapolates out to 6000 configuration files under keyboards/ alone! The freeform nature of these files and the unique patterns people have used to avoid duplication have made ongoing maintenance a challenge, and a large number of our keyboards follow patterns that are outdated and sometimes harder to understand.

We have also been working on bringing the power of QMK to people who aren't comformable with a CLI, and other projects such as VIA are working to make using QMK as easy as installing a program. These tools need information about how a keyboard is laid out or what pins and features are available so that users can take full advantage of QMK. We introduced info.json as a first step towards this. The QMK API is an effort to combine these 3 sources of information- config.h, rules.mk, and info.json- into a single source of truth that end-user tools can use.

Now we have support for generating rules.mk and config.h values from info.json, allowing us to have a single source of truth. This will allow us to use automated tooling to maintain keyboards saving a lot of time and maintenance work.

Overview

On the C side of things nothing changes. When you need to create a new rule or define you follow the same process:

  1. Add it to docs/config_options.md
  2. Set a default in the appropriate core file
  3. Add your ifdef statements as needed

You will then need to add support for your new configuration to info.json. The basic process is:

  1. Add it to the schema in data/schemas/keyboards.jsonschema
  2. Add a mapping in data/maps
  3. (optional and discouraged) Add code to extract/generate it to:

Adding an option to info.json

This section describes adding support for a config.h/rules.mk value to info.json.

Add it to the schema

QMK maintains jsonschema files in data/schemas. The values that go into keyboard-specific info.json files are kept in keyboard.jsonschema. Any value you want to make available to end users to edit must go in here.

In some cases you can simply add a new top-level key. Some examples to follow are keyboard_name, maintainer, processor, and url. This is appropriate when your option is self-contained and not directly related to other options.

In other cases you should group like options together in an object. This is particularly true when adding support for a feature. Some examples to follow for this are indicators, matrix_pins, and rgblight. If you are not sure how to integrate your new option(s) open an issue or join #cli on Discord and start a conversation there.

Add a mapping

In most cases you can add a simple mapping. These are maintained as JSON files in data/mappings/info_config.hjson and data/mappings/info_rules.hjson, and control mapping for config.h and rules.mk, respectively. Each mapping is keyed by the config.h or rules.mk variable, and the value is a hash with the following keys:

Info Key

We use JSON dot notation to address variables within info.json. For example, to access info_json["rgblight"]["split_count"] I would specify rgblight.split_count. This allows you to address deeply nested keys with a simple string.

Under the hood we use Dotty Dict, you can refer to that documentation for how these strings are converted to object access.

Value Types

By default we treat all values as unquoted "raw" data. If your value is more complex you can use one of these types to intelligently parse the data:

Add code to extract it

Most use cases can be solved by the mapping files described above. If yours can't you can instead write code to extract your config values.

Whenever QMK generates a complete info.json it extracts information from config.h and rules.mk. You will need to add code for your new config value to lib/python/qmk/info.py. Typically this means adding a new _extract_<feature>() function and then calling your function in either _extract_config_h() or _extract_rules_mk().

If you are not sure how to edit this file or are not comfortable with Python open an issue or join #cli on Discord and someone can help you with this part.

Add code to generate it

The final piece of the puzzle is providing your new option to the build system. This is done by generating two files:

These two files are generated by the code here:

For config.h values you'll need to write a function for your rule(s) and call that function in generate_config_h().

If you have a new top-level info.json key for rules.mk you can simply add your keys to info_to_rules at the top of lib/python/qmk/cli/generate/rules_mk.py. Otherwise you'll need to create a new if block for your feature in generate_rules_mk().

', 38); diff --git a/assets/data_driven_config.md.BvLQ7P20.lean.js b/assets/data_driven_config.md.3iL4-P4O.lean.js similarity index 91% rename from assets/data_driven_config.md.BvLQ7P20.lean.js rename to assets/data_driven_config.md.3iL4-P4O.lean.js index 59a19fed7b7..c61f88145ae 100644 --- a/assets/data_driven_config.md.BvLQ7P20.lean.js +++ b/assets/data_driven_config.md.3iL4-P4O.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Data Driven Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"data_driven_config.md","filePath":"data_driven_config.md"}'); const _sfc_main = { name: "data_driven_config.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 38); diff --git a/assets/documentation_best_practices.md.BtEjePaZ.js b/assets/documentation_best_practices.md.CsnEVROI.js similarity index 99% rename from assets/documentation_best_practices.md.BtEjePaZ.js rename to assets/documentation_best_practices.md.CsnEVROI.js index a801d1eb900..6453077add2 100644 --- a/assets/documentation_best_practices.md.BtEjePaZ.js +++ b/assets/documentation_best_practices.md.CsnEVROI.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Documentation Best Practices","description":"","frontmatter":{},"headers":[],"relativePath":"documentation_best_practices.md","filePath":"documentation_best_practices.md"}'); const _sfc_main = { name: "documentation_best_practices.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Documentation Best Practices

This page exists to document best practices when writing documentation for QMK. Following these guidelines will help to keep a consistent tone and style, which will in turn help other people more easily understand QMK.

Page Opening

Your documentation page should generally start with an H1 heading, followed by a 1 paragraph description of what the user will find on this page. Keep in mind that this heading and paragraph will sit next to the Table of Contents, so keep the heading short and avoid long strings with no whitespace.

Example:

# My Page Title\n\nThis page covers my super cool feature. You can use this feature to make coffee, squeeze fresh oj, and have an egg mcmuffin and hashbrowns delivered from your local macca's by drone.

Headings

Your page should generally have multiple "H1" headings. Only H1 and H2 headings will included in the Table of Contents, so plan them out appropriately. Excess width should be avoided in H1 and H2 headings to prevent the Table of Contents from getting too wide.

Styled Hint Blocks

You can have styled hint blocks drawn around text to draw attention to it.

Important

::: warning\nThis is important\n:::

Renders as:

WARNING

This is important

General Tips

::: tip\nThis is a helpful tip.\n:::

Renders as:

TIP

This is a helpful tip.

Documenting Features

If you create a new feature for QMK, create a documentation page for it. It doesn't have to be very long, a few sentences describing your feature and a table listing any relevant keycodes is enough. Here is a basic template:

markdown
# My Cool Feature\n\nThis page describes my cool feature. You can use my cool feature to make coffee and order cream and sugar to be delivered via drone.\n\n## My Cool Feature Keycodes\n\n|Long Name|Short Name|Description|\n|---------|----------|-----------|\n|KC_COFFEE||Make Coffee|\n|KC_CREAM||Order Cream|\n|KC_SUGAR||Order Sugar|

Place your documentation into docs/features/<my_cool_feature>.md, and add that file to the appropriate place in docs/_sidebar.json. If you have added any keycodes be sure to add them to docs/keycodes.md with a link back to your feature page.

', 22); diff --git a/assets/documentation_best_practices.md.BtEjePaZ.lean.js b/assets/documentation_best_practices.md.CsnEVROI.lean.js similarity index 92% rename from assets/documentation_best_practices.md.BtEjePaZ.lean.js rename to assets/documentation_best_practices.md.CsnEVROI.lean.js index 3ac07b87bd1..dd423b64830 100644 --- a/assets/documentation_best_practices.md.BtEjePaZ.lean.js +++ b/assets/documentation_best_practices.md.CsnEVROI.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Documentation Best Practices","description":"","frontmatter":{},"headers":[],"relativePath":"documentation_best_practices.md","filePath":"documentation_best_practices.md"}'); const _sfc_main = { name: "documentation_best_practices.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 22); diff --git a/assets/documentation_templates.md.Bhkum0wD.js b/assets/documentation_templates.md.Bzrbq1wQ.js similarity index 98% rename from assets/documentation_templates.md.Bhkum0wD.js rename to assets/documentation_templates.md.Bzrbq1wQ.js index b85d3540a36..439b28fae14 100644 --- a/assets/documentation_templates.md.Bhkum0wD.js +++ b/assets/documentation_templates.md.Bzrbq1wQ.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Documentation Templates","description":"","frontmatter":{},"headers":[],"relativePath":"documentation_templates.md","filePath":"documentation_templates.md"}'); const _sfc_main = { name: "documentation_templates.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Documentation Templates

This page documents the templates you should use when submitting new Keymaps and Keyboards to QMK.

Keymap readme.md Template

Most keymaps have an image depicting the layout. You can use Keyboard Layout Editor to create an image. Upload it to Imgur or another hosting service, please do not include images in your Pull Request.

Below the image you should write a short description to help people understand your keymap.

![Clueboard Layout Image](https://i.imgur.com/7Capi8W.png)\n\n# Default Clueboard Layout\n\nThis is the default layout that comes flashed on every Clueboard. For the most\npart it's a straightforward and easy to follow layout. The only unusual key is\nthe key in the upper left, which sends Escape normally, but Grave when any of\nthe Ctrl, Alt, or GUI modifiers are held down.

Keyboard readme.md Template

# Planck\n\n![Planck](https://i.imgur.com/q2M3uEU.jpg)\n\nA compact 40% (12x4) ortholinear keyboard kit made and sold by OLKB and Massdrop. [More info on qmk.fm](https://qmk.fm/planck/)\n\n* Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)\n* Hardware Supported: Planck PCB rev1, rev2, rev3, rev4, Teensy 2.0\n* Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.massdrop.com/buy/planck-mechanical-keyboard?mode=guest_open)\n\nMake example for this keyboard (after setting up your build environment):\n\n    make planck/rev4:default\n\nFlashing example for this keyboard:\n\n    make planck/rev4:default:flash\n\nSee the [build environment setup](getting_started_build_tools) and the [make instructions](getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](newbs).\n\n## Bootloader\n\nEnter the bootloader in 3 ways:\n\n* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard\n* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead\n* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
', 8); diff --git a/assets/documentation_templates.md.Bhkum0wD.lean.js b/assets/documentation_templates.md.Bzrbq1wQ.lean.js similarity index 91% rename from assets/documentation_templates.md.Bhkum0wD.lean.js rename to assets/documentation_templates.md.Bzrbq1wQ.lean.js index cc768d88415..e3a225b7c06 100644 --- a/assets/documentation_templates.md.Bhkum0wD.lean.js +++ b/assets/documentation_templates.md.Bzrbq1wQ.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Documentation Templates","description":"","frontmatter":{},"headers":[],"relativePath":"documentation_templates.md","filePath":"documentation_templates.md"}'); const _sfc_main = { name: "documentation_templates.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 8); diff --git a/assets/driver_installation_zadig.md.BFgx-Q1o.js b/assets/driver_installation_zadig.md.Dy2kYHSK.js similarity index 99% rename from assets/driver_installation_zadig.md.BFgx-Q1o.js rename to assets/driver_installation_zadig.md.Dy2kYHSK.js index 155a87ffa2c..a3e08ae47a1 100644 --- a/assets/driver_installation_zadig.md.BFgx-Q1o.js +++ b/assets/driver_installation_zadig.md.Dy2kYHSK.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Bootloader Driver Installation with Zadig","description":"","frontmatter":{},"headers":[],"relativePath":"driver_installation_zadig.md","filePath":"driver_installation_zadig.md"}'); const _sfc_main = { name: "driver_installation_zadig.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Bootloader Driver Installation with Zadig

QMK presents itself to the host as a regular HID keyboard device, and as such requires no special drivers. However, in order to flash your keyboard on Windows, the bootloader device that appears when you reset the board often does.

There are two notable exceptions: the Caterina bootloader, usually seen on Pro Micros, and the HalfKay bootloader shipped with PJRC Teensys, appear as a serial port and a generic HID device respectively, and so do not require a driver.

We recommend the use of the Zadig utility. If you have set up the development environment with MSYS2, the qmk_install.sh script will have already installed the drivers for you.

Installation

Put your keyboard into bootloader mode, either by hitting the QK_BOOT keycode (which may be on a different layer), or by pressing the reset switch that's usually located on the underside of the board. If your keyboard has neither, try holding Escape or Space+B as you plug it in (see the Bootmagic docs for more details). Some boards use Command instead of Bootmagic; in this case, you can enter bootloader mode by hitting Left Shift+Right Shift+B or Left Shift+Right Shift+Escape at any point while the keyboard is plugged in. Some keyboards may have specific instructions for entering the bootloader. For example, the Bootmagic key (default: Escape) might be on a different key, e.g. Left Control; or the magic combination for Command (default: Left Shift+Right Shift) might require you to hold something else, e.g. Left Control+Right Control. Refer to the board's README file if you are unsure.

To put a device in bootloader mode with USBaspLoader, tap the RESET button while holding down the BOOT button. Alternatively, hold BOOT while inserting the USB cable.

Zadig should automatically detect the bootloader device, but you may sometimes need to check Options → List All Devices and select the device from the dropdown instead.

WARNING

If Zadig lists one or more devices with the HidUsb driver, your keyboard is probably not in bootloader mode. The arrow will be colored orange and you will be asked to confirm modifying a system driver. Do not proceed if this is the case!

If the arrow appears green, select the driver, and click Install Driver. See the list of known bootloaders for the correct driver to install.

Zadig with a bootloader driver correctly installed

Finally, unplug and replug the keyboard to make sure the new driver has been loaded. If you are using the QMK Toolbox to flash, exit and restart it too, as it can sometimes fail to recognize the driver change.

Recovering from Installation to Wrong Device

If you find that you can no longer type with the keyboard, you may have accidentally replaced the driver for the keyboard itself instead of for the bootloader. This can happen when the keyboard is not in the bootloader mode. You can easily confirm this in Zadig - a healthy keyboard has the HidUsb driver installed on all of its interfaces:

A healthy keyboard as seen by Zadig

Open the Device Manager, select View → Devices by container, and look for an entry with your keyboard's name.

The board with the wrong driver installed, in Device Manager

Right-click each entry and hit Uninstall device. Make sure to tick Delete the driver software for this device first if it appears.

The Device Uninstall dialog, with the "delete driver" checkbox ticked

Click Action → Scan for hardware changes. At this point, you should be able to type again. Double check in Zadig that the keyboard device(s) are using the HidUsb driver. If so, you're all done, and your board should be functional again! Otherwise, repeat this process until Zadig reports the correct driver.

TIP

A full reboot of your computer may sometimes be necessary at this point, to get Windows to pick up the new driver.

Uninstallation

Uninstallation of bootloader devices is a little more involved than installation.

Open the Device Manager, select View → Devices by container, and look for the bootloader device. Match up the USB VID and PID in Zadig with one from the table below.

Find the Inf name value in the Details tab of the device properties. This should generally be something like oemXX.inf:

Device properties showing the Inf name value

Then, open a new Command Prompt window as an Administrator (type in cmd into the Start menu and press Ctrl+Shift+Enter). Run pnputil /enum-drivers to verify the Inf name matches the Published Name field of one of the entries:

pnputil output with matching driver highlighted

Run pnputil /delete-driver oemXX.inf /uninstall. This will delete the driver and remove it from any devices using it. Note that this will not uninstall the device itself.

As with the previous section, this process may need to be repeated multiple times, as multiple drivers can be applicable to the same device.

WARNING

Be extremely careful when doing this! You could potentially uninstall the driver for some other critical device. If you are unsure, double check the output of /enum-drivers, and omit the /uninstall flag when running /delete-driver.

List of Known Bootloaders

This is a list of known bootloader devices and their USB vendor and product IDs, as well as the correct driver to assign for flashing with QMK. Note that the usbser and HidUsb drivers are built in to Windows, and cannot be assigned with Zadig - if your device has an incorrect driver, you must use the Device Manager to uninstall it as described in the previous section.

The device name here is the name that appears in Zadig, and may not be what the Device Manager or QMK Toolbox displays.

BootloaderDevice NameVID/PIDDriver
atmel-dfuATmega16u2 DFU03EB:2FEFWinUSB
atmel-dfuATmega32U2 DFU03EB:2FF0WinUSB
atmel-dfuATm16U4 DFU V1.0.203EB:2FF3WinUSB
atmel-dfuATm32U4DFU03EB:2FF4WinUSB
atmel-dfunone (AT90USB64)03EB:2FF9WinUSB
atmel-dfuAT90USB128 DFU03EB:2FFBWinUSB
qmk-dfu(keyboard name) BootloaderAs atmel-dfuWinUSB
halfkaynone16C0:0478HidUsb
caterinaPro Micro 3.3V1B4F:9203usbser
caterinaPro Micro 5V1B4F:9205usbser
caterinaLilyPadUSB1B4F:9207usbser
caterinaPololu A-Star 32U4 Bootloader1FFB:0101usbser
caterinaArduino Leonardo2341:0036usbser
caterinaArduino Micro2341:0037usbser
caterinaAdafruit Feather 32u4239A:000Cusbser
caterinaAdafruit ItsyBitsy 32u4 3V239A:000Dusbser
caterinaAdafruit ItsyBitsy 32u4 5V239A:000Eusbser
caterinaArduino Leonardo2A03:0036usbser
caterinaArduino Micro2A03:0037usbser
bootloadhidHIDBoot16C0:05DFHidUsb
usbasploaderUSBasp16C0:05DClibusbK
apm32-dfuAPM32 DFU ISP Mode314B:0106WinUSB
stm32-dfuSTM32 BOOTLOADER0483:DF11WinUSB
gd32v-dfuGD32V BOOTLOADER28E9:0189WinUSB
kiibohdKiibohd DFU Bootloader1C11:B007WinUSB
stm32duinoMaple 0031EAF:0003WinUSB
qmk-hid(keyboard name) Bootloader03EB:2067HidUsb
', 35); diff --git a/assets/driver_installation_zadig.md.BFgx-Q1o.lean.js b/assets/driver_installation_zadig.md.Dy2kYHSK.lean.js similarity index 92% rename from assets/driver_installation_zadig.md.BFgx-Q1o.lean.js rename to assets/driver_installation_zadig.md.Dy2kYHSK.lean.js index c29dc90f9b8..059a36be048 100644 --- a/assets/driver_installation_zadig.md.BFgx-Q1o.lean.js +++ b/assets/driver_installation_zadig.md.Dy2kYHSK.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Bootloader Driver Installation with Zadig","description":"","frontmatter":{},"headers":[],"relativePath":"driver_installation_zadig.md","filePath":"driver_installation_zadig.md"}'); const _sfc_main = { name: "driver_installation_zadig.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 35); diff --git a/assets/drivers_adc.md.DzU8txf8.js b/assets/drivers_adc.md.B7GhN9cb.js similarity index 99% rename from assets/drivers_adc.md.DzU8txf8.js rename to assets/drivers_adc.md.B7GhN9cb.js index ecb061812ea..9f9863034f9 100644 --- a/assets/drivers_adc.md.DzU8txf8.js +++ b/assets/drivers_adc.md.B7GhN9cb.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"ADC Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/adc.md","filePath":"drivers/adc.md"}'); const _sfc_main = { name: "drivers/adc.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

ADC Driver

QMK can leverage the Analog-to-Digital Converter (ADC) on supported MCUs to measure voltages on certain pins. This can be useful for implementing things such as battery level indicators for Bluetooth keyboards, or volume controls using a potentiometer, as opposed to a rotary encoder.

This driver currently supports both AVR and a limited selection of ARM devices. The values returned are 10-bit integers (0-1023) mapped between 0V and VCC (usually 5V or 3.3V for AVR, 3.3V only for ARM), however on ARM there is more flexibility in control of operation through #defines if you need more precision.

Usage

To use this driver, add the following to your rules.mk:

make
ANALOG_DRIVER_REQUIRED = yes

Then place this include at the top of your code:

c
#include "analog.h"

Channels

AVR

ChannelAT90USB64/128ATmega16/32U4ATmega32AATmega328/P
0F0F0A0C0
1F1F1A1C1
2F2A2C2
3F3A3C3
4F4F4A4C4
5F5F5A5C5
6F6F6A6*
7F7F7A7*
8D4
9D6
10D7
11B4
12B5
13B6

* The ATmega328/P possesses two extra ADC channels; however, they are not present on the DIP pinout, and are not shared with GPIO pins. You can use adc_read() directly to gain access to these.

ARM

STM32

Note that some of these pins are doubled-up on ADCs with the same channel. This is because the pins can be used for either ADC.

Also note that the F0 and F3 use different numbering schemes. The F0 has a single ADC and the channels are 0-indexed, whereas the F3 has 4 ADCs and the channels are 1-indexed. This is because the F0 uses the ADCv1 implementation of the ADC, whereas the F3 uses the ADCv3 implementation.

ADCChannelSTM32F0xxSTM32F1xxSTM32F3xxSTM32F4xx
10A0A0A0
11A1A1A0A1
12A2A2A1A2
13A3A3A2A3
14A4A4A3A4
15A5A5F4A5
16A6A6C0A6
17A7A7C1A7
18B0B0C2B0
19B1B1C3B1
110C0C0F2C0
111C1C1C1
112C2C2C2
113C3C3C3
114C4C4C4
115C5C5C5
116
20A0¹A0²
21A1¹A4A1²
22A2¹A5A2²
23A3¹A6A3²
24A4¹A7A4²
25A5¹C4A5²
26A6¹C0A6²
27A7¹C1A7²
28B0¹C2B0²
29B1¹C3B1²
210C0¹F2C0²
211C1¹C5C1²
212C2¹B2C2²
213C3¹C3²
214C4¹C4²
215C5¹C5²
216
30A0¹A0²
31A1¹B1A1²
32A2¹E9A2²
33A3¹E13A3²
34F6¹F6²
35F7¹B13F7²
36F8¹E8F8²
37F9¹D10F9²
38F10¹D11F10²
39D12F3²
310C0¹D13C0²
311C1¹D14C1²
312C2¹B0C2²
313C3¹E7C3²
314E10F4²
315E11F5²
316E12
41E14
42E15
43B12
44B14
45B15
46E8
47D10
48D11
49D12
410D13
411D14
412D8
413D9
414
415
416

¹ As of ChibiOS 20.3.4, the ADC driver for STM32F1xx devices supports only ADC1, therefore any configurations involving ADC2 or ADC3 cannot actually be used. In particular, pins F6F10, which are present at least on some STM32F103x[C-G] devices, cannot be used as ADC inputs because of this driver limitation.

² Not all STM32F4xx devices have ADC2 and/or ADC3, therefore some configurations shown in this table may be unavailable; in particular, pins F4F10 cannot be used as ADC inputs on devices which do not have ADC3. Check the device datasheet to confirm which pin functions are supported.

RP2040

RP2040 has only a single ADC (ADCD1 in ChibiOS); in the QMK API the index for that ADC is 0.

ChannelPin
0GP26
1GP27
2GP28
3GP29
4Temperature sensor*

* The temperature sensor is disabled by default and needs to be enabled by the RP2040-specific function: adcRPEnableTS(&ADCD1). The ADC must be initialized before calling that function; an easy way to ensure that is to perform a dummy conversion.

Functions

AVR

FunctionDescription
analogReference(mode)Sets the analog voltage reference source. Must be one of ADC_REF_EXTERNAL, ADC_REF_POWER or ADC_REF_INTERNAL.
analogReadPin(pin)Reads the value from the specified pin, eg. F6 for ADC6 on the ATmega32U4.
pinToMux(pin)Translates a given pin to a mux value. If an unsupported pin is given, returns the mux value for "0V (GND)".
adc_read(mux)Reads the value from the ADC according to the specified mux. See your MCU's datasheet for more information.

ARM

FunctionDescription
analogReadPin(pin)Reads the value from the specified pin, eg. A0 for channel 0 on the STM32F0 and ADC1 channel 1 on the STM32F3. Note that if a pin can be used for multiple ADCs, it will pick the lower numbered ADC for this function. eg. C0 will be channel 6 of ADC 1 when it could be used for ADC 2 as well.
analogReadPinAdc(pin, adc)Reads the value from the specified pin and ADC, eg. C0, 1 will read from channel 6, ADC 2 instead of ADC 1. Note that the ADCs are 0-indexed for this function.
pinToMux(pin)Translates a given pin to a channel and ADC combination. If an unsupported pin is given, returns the mux value for "0V (GND)".
adc_read(mux)Reads the value from the ADC according to the specified pin and ADC combination. See your MCU's datasheet for more information.

Configuration

ARM

The ARM implementation of the ADC has a few additional options that you can override in your own keyboards and keymaps to change how it operates. Please consult the corresponding hal_adc_lld.h in ChibiOS for your specific microcontroller for further documentation on your available options.

#defineTypeDefaultDescription
ADC_CIRCULAR_BUFFERboolfalseIf true, then the implementation will use a circular buffer.
ADC_NUM_CHANNELSint1Sets the number of channels that will be scanned as part of an ADC operation. The current implementation only supports 1.
ADC_BUFFER_DEPTHint2Sets the depth of each result. Since we are only getting a 10-bit result by default, we set this to 2 bytes so we can contain our one value. This could be set to 1 if you opt for an 8-bit or lower result.
ADC_SAMPLING_RATEintADC_SMPR_SMP_1P5Sets the sampling rate of the ADC. By default, it is set to the fastest setting.
ADC_RESOLUTIONintADC_CFGR1_RES_10BIT or ADC_CFGR_RES_10BITSThe resolution of your result. We choose 10 bit by default, but you can opt for 12, 10, 8, or 6 bit. Different MCUs use slightly different names for the resolution constants.
', 32); diff --git a/assets/drivers_adc.md.DzU8txf8.lean.js b/assets/drivers_adc.md.B7GhN9cb.lean.js similarity index 90% rename from assets/drivers_adc.md.DzU8txf8.lean.js rename to assets/drivers_adc.md.B7GhN9cb.lean.js index d0e58a97793..8cefdc2a57c 100644 --- a/assets/drivers_adc.md.DzU8txf8.lean.js +++ b/assets/drivers_adc.md.B7GhN9cb.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"ADC Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/adc.md","filePath":"drivers/adc.md"}'); const _sfc_main = { name: "drivers/adc.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 32); diff --git a/assets/drivers_apa102.md.Cl7Xer3S.js b/assets/drivers_apa102.md.DRKqdW0M.js similarity index 98% rename from assets/drivers_apa102.md.Cl7Xer3S.js rename to assets/drivers_apa102.md.DRKqdW0M.js index b1fc0d15ff3..b39ababcdee 100644 --- a/assets/drivers_apa102.md.Cl7Xer3S.js +++ b/assets/drivers_apa102.md.DRKqdW0M.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"APA102 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/apa102.md","filePath":"drivers/apa102.md"}'); const _sfc_main = { name: "drivers/apa102.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

APA102 Driver

This driver provides support for APA102 addressable RGB LEDs. They are similar to the WS2812 LEDs, but have increased data and refresh rates.

Usage

In most cases, the APA102 driver code is automatically included if you are using either the RGBLight or RGB Matrix feature with the apa102 driver set, and you would use those APIs instead.

However, if you need to use the driver standalone, add the following to your rules.mk:

make
APA102_DRIVER_REQUIRED = yes

You can then call the APA102 API by including apa102.h in your code.

Basic Configuration

Add the following to your config.h:

DefineDefaultDescription
APA102_DI_PINNot definedThe GPIO pin connected to the DI pin of the first LED in the chain
APA102_CI_PINNot definedThe GPIO pin connected to the CI pin of the first LED in the chain
APA102_DEFAULT_BRIGHTNESS31The default global brightness level of the LEDs, from 0 to 31

API

void apa102_init(void)

Initialize the LED driver. This function should be called first.


void apa102_set_color(uint16_t index, uint8_t red, uint8_t green, uint8_t blue)

Set the color of a single LED. This function does not immediately update the LEDs; call apa102_flush() after you are finished.

Arguments


void apa102_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

Set the color of all LEDs.

Arguments


void apa102_flush(void)

Flush the PWM values to the LED chain.


void apa102_set_brightness(uint8_t brightness)

Set the global brightness.

Arguments

', 31); diff --git a/assets/drivers_apa102.md.Cl7Xer3S.lean.js b/assets/drivers_apa102.md.DRKqdW0M.lean.js similarity index 91% rename from assets/drivers_apa102.md.Cl7Xer3S.lean.js rename to assets/drivers_apa102.md.DRKqdW0M.lean.js index a584bda3fb0..db767770038 100644 --- a/assets/drivers_apa102.md.Cl7Xer3S.lean.js +++ b/assets/drivers_apa102.md.DRKqdW0M.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"APA102 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/apa102.md","filePath":"drivers/apa102.md"}'); const _sfc_main = { name: "drivers/apa102.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 31); diff --git a/assets/drivers_audio.md.mqaz6p5N.js b/assets/drivers_audio.md.DhIIBUNW.js similarity index 99% rename from assets/drivers_audio.md.mqaz6p5N.js rename to assets/drivers_audio.md.DhIIBUNW.js index e6e2736adcf..892253e67e1 100644 --- a/assets/drivers_audio.md.mqaz6p5N.js +++ b/assets/drivers_audio.md.DhIIBUNW.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Audio Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/audio.md","filePath":"drivers/audio.md"}'); const _sfc_main = { name: "drivers/audio.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Audio Driver

The Audio feature breaks the hardware specifics out into separate, exchangeable driver units, with a common interface to the audio-"core" - which itself handles playing songs and notes while tracking their progress in an internal state, initializing/starting/stopping the driver as needed.

Not all MCUs support every available driver, either the platform-support is not there (yet?) or the MCU simply does not have the required hardware peripheral.

AVR

Boards built around an Atmega32U4 can use two sets of PWM capable pins, each driving a separate speaker. The possible configurations are:

Timer3Timer1
one speakerC4,C5 or C6
one speakerB4, B5 or B7
two speakersC4,C5 or C6B4, B5 or B7

Currently there is only one/default driver for AVR based boards, which is automatically configured to:

make
AUDIO_DRIVER = pwm_hardware

ARM

For Arm based boards, QMK depends on ChibiOS - hence any MCU supported by the later is likely usable, as long as certain hardware peripherals are available.

Supported wiring configurations, with their ChibiOS/MCU peripheral requirement are listed below; piezo speakers are marked with 1️⃣ for the first/primary and 2️⃣ for the secondary.

driverGPTD6
Tim6
GPTD7
Tim7
GPTD8
Tim8
PWMD11
Tim1_Ch1
dac_basicA4+DACD1 = 1️⃣A5+DACD2 = 1️⃣state
A4+DACD1 = 1️⃣ + GndA5+DACD2 = 2️⃣ + Gndstate
A4+DACD1 = 2️⃣ + GndA5+DACD2 = 1️⃣ + Gndstate
A4+DACD1 = 1️⃣ + Gndstate
A5+DACD2 = 1️⃣ + Gndstate
dac_additiveA4+DACD1 = 1️⃣ + Gnd
A5+DACD2 = 1️⃣ + Gnd
A4+DACD1 + A5+DACD2 = 1️⃣ 2
pwm_softwarestate-updateany = 1️⃣
pwm hardwarestate-updateA8 = 1️⃣ 3

1: the routing and alternate functions for PWM differ sometimes between STM32 MCUs, if in doubt consult the data-sheet
2: one piezo connected to A4 and A5, with AUDIO_PIN_ALT_AS_NEGATIVE set
3: TIM1_CH1 = A8 on STM32F103C8, other combinations are possible, see Data-sheet. configured with: AUDIO_PWM_DRIVER and AUDIO_PWM_CHANNEL

DAC basic

The default driver for ARM boards, in absence of an overriding configuration. This driver needs one Timer per enabled/used DAC channel, to trigger conversion; and a third timer to trigger state updates with the audio-core.

Additionally, in the board config, you'll want to make changes to enable the DACs, GPT for Timers 6, 7 and 8:

c
//halconf.h:\n#define HAL_USE_DAC                 TRUE\n#define HAL_USE_GPT                 TRUE\n#include_next <halconf.h>
c
// mcuconf.h:\n#include_next <mcuconf.h>\n#undef STM32_DAC_USE_DAC1_CH1\n#define STM32_DAC_USE_DAC1_CH1              TRUE\n#undef STM32_DAC_USE_DAC1_CH2\n#define STM32_DAC_USE_DAC1_CH2              TRUE\n#undef STM32_GPT_USE_TIM6\n#define STM32_GPT_USE_TIM6                  TRUE\n#undef STM32_GPT_USE_TIM7\n#define STM32_GPT_USE_TIM7                  TRUE\n#undef STM32_GPT_USE_TIM8\n#define STM32_GPT_USE_TIM8                  TRUE

TIP

Note: DAC1 (A4) uses TIM6, DAC2 (A5) uses TIM7, and the audio state timer uses TIM8 (configurable).

You can also change the timer used for the overall audio state by defining the driver. For instance:

c
#define AUDIO_STATE_TIMER GPTD9

DAC additive

only needs one timer (GPTD6, Tim6) to trigger the DAC unit to do a conversion; the audio state updates are in turn triggered during the DAC callback.

Additionally, in the board config, you'll want to make changes to enable the DACs, GPT for Timer 6:

c
//halconf.h:\n#define HAL_USE_DAC                 TRUE\n#define HAL_USE_GPT                 TRUE\n#include_next <halconf.h>
c
// mcuconf.h:\n#include_next <mcuconf.h>\n#undef STM32_DAC_USE_DAC1_CH1\n#define STM32_DAC_USE_DAC1_CH1              TRUE\n#undef STM32_DAC_USE_DAC1_CH2\n#define STM32_DAC_USE_DAC1_CH2              TRUE\n#undef STM32_GPT_USE_TIM6\n#define STM32_GPT_USE_TIM6                  TRUE

DAC Config

DefineDefaultsDescription
AUDIO_DAC_SAMPLE_MAX4095UHighest value allowed. Lower value means lower volume. And 4095U is the upper limit, since this is limited to a 12 bit value. Only effects non-pregenerated samples.
AUDIO_DAC_OFF_VALUEAUDIO_DAC_SAMPLE_MAX / 2The value of the DAC when not playing anything. Some setups may require a high (AUDIO_DAC_SAMPLE_MAX) or low (0) value here.
AUDIO_MAX_SIMULTANEOUS_TONESsee next tableThe number of tones that can be played simultaneously. A value that is too high may freeze the controller or glitch out when too many tones are being played.
AUDIO_DAC_SAMPLE_RATEsee next tableEffective bit rate of the DAC (in hertz), higher limits simultaneous tones, and lower sacrifices quality.
AUDIO_DAC_BUFFER_SIZEsee next tableNumber of samples generated every refill. Too few may cause excessive CPU load; too many may cause freezes, RAM or flash exhaustion or lags during matrix scanning.

There are a number of predefined quality settings that you can use, with "sane minimum" being the default. You can use custom values by simply defining the sample rate, number of simultaneous tones and buffer size, instead of using one of the listed presets.

DefineSample RateSimultaneous tonesBuffer size
AUDIO_DAC_QUALITY_VERY_LOW11025U864U
AUDIO_DAC_QUALITY_LOW22050U4128U
AUDIO_DAC_QUALITY_HIGH44100U2256U
AUDIO_DAC_QUALITY_VERY_HIGH88200U1256U
AUDIO_DAC_QUALITY_SANE_MINIMUM16384U864U

Notes on buffer size

By default, the buffer size attempts to keep to these constraints:

You can lower the buffer size if you need a bit more space in your firmware, or raise it if your keyboard freezes up.

c
        /* zero crossing (or approach, whereas zero == DAC_OFF_VALUE, which can be configured to anything from 0 to DAC_SAMPLE_MAX)\n         * ============================*=*========================== AUDIO_DAC_SAMPLE_MAX\n         *                          *       *\n         *                        *           *\n         * ---------------------------------------------------------\n         *                     *                 *                  } AUDIO_DAC_SAMPLE_MAX/100\n         * --------------------------------------------------------- AUDIO_DAC_OFF_VALUE\n         *                  *                       *               } AUDIO_DAC_SAMPLE_MAX/100\n         * ---------------------------------------------------------\n         *               *\n         * *           *\n         *   *       *\n         * =====*=*================================================= 0x0\n         */

PWM hardware

This driver uses the ChibiOS-PWM system to produce a square-wave on specific output pins that are connected to the PWM hardware. The hardware directly toggles the pin via its alternate function. See your MCU's data-sheet for which pin can be driven by what timer - looking for TIMx_CHy and the corresponding alternate function.

A configuration example for the STM32F103C8 would be:

c
//halconf.h:\n#define HAL_USE_PWM                 TRUE\n#define HAL_USE_PAL                 TRUE\n#include_next <halconf.h>
c
// mcuconf.h:\n#include_next <mcuconf.h>\n#undef STM32_PWM_USE_TIM1\n#define STM32_PWM_USE_TIM1                  TRUE

If we now target pin A8, looking through the data-sheet of the STM32F103C8, for the timers and alternate functions

with all this information, the configuration would contain these lines:

c
//config.h:\n#define AUDIO_PIN A8\n#define AUDIO_PWM_DRIVER PWMD1\n#define AUDIO_PWM_CHANNEL 1

ChibiOS uses GPIOv1 for the F103, which only knows of one alternate function. On 'larger' STM32s, GPIOv2 or GPIOv3 are used; with them it is also necessary to configure AUDIO_PWM_PAL_MODE to the correct alternate function for the selected pin, timer and timer-channel.

You can also use the Complementary output (TIMx_CHyN) for PWM on supported controllers. To enable this functionality, you will need to make the following changes:

c
// config.h:\n#define AUDIO_PWM_COMPLEMENTARY_OUTPUT

PWM software

This driver uses the PWM callbacks from PWMD1 with TIM1_CH1 to toggle the selected AUDIO_PIN in software. During the same callback, with AUDIO_PIN_ALT_AS_NEGATIVE set, the AUDIO_PIN_ALT is toggled inversely to AUDIO_PIN. This is useful for setups that drive a piezo from two pins (instead of one and Gnd).

You can also change the timer used for software PWM by defining the driver. For instance:

c
#define AUDIO_STATE_TIMER GPTD8

Testing Notes

While not an exhaustive list, the following table provides the scenarios that have been partially validated:

DAC basicDAC additivePWM hardwarePWM software
Atmega32U4✔️
RP2040✔️?
STM32F103C8 (bluepill)✔️✔️
STM32F303CCT6 (proton-c)✔️✔️?✔️
STM32F405VG✔️✔️✔️✔️
L0xx❌ (no Tim8)???

✔️ : works and was tested
⭕ : does not apply
❌ : not supported by MCU

Other supported ChibiOS boards and/or pins may function, it will be highly chip and configuration dependent.

', 56); diff --git a/assets/drivers_audio.md.mqaz6p5N.lean.js b/assets/drivers_audio.md.DhIIBUNW.lean.js similarity index 91% rename from assets/drivers_audio.md.mqaz6p5N.lean.js rename to assets/drivers_audio.md.DhIIBUNW.lean.js index 3278038cf0c..a8d9603b073 100644 --- a/assets/drivers_audio.md.mqaz6p5N.lean.js +++ b/assets/drivers_audio.md.DhIIBUNW.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Audio Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/audio.md","filePath":"drivers/audio.md"}'); const _sfc_main = { name: "drivers/audio.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 56); diff --git a/assets/drivers_aw20216s.md.CgKehEzB.js b/assets/drivers_aw20216s.md.BIfeX9RQ.js similarity index 99% rename from assets/drivers_aw20216s.md.CgKehEzB.js rename to assets/drivers_aw20216s.md.BIfeX9RQ.js index 4eb13d197db..7e610f8ef5d 100644 --- a/assets/drivers_aw20216s.md.CgKehEzB.js +++ b/assets/drivers_aw20216s.md.BIfeX9RQ.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"AW20216S Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/aw20216s.md","filePath":"drivers/aw20216s.md"}'); const _sfc_main = { name: "drivers/aw20216s.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

AW20216S Driver

SPI 18x12 LED matrix driver by Awinic. Supports a maximum of four drivers, each controlling up to 216 single-color LEDs, or 72 RGB LEDs.

AW20216S Datasheet

Usage

The AW20216S driver code is automatically included if you are using the RGB Matrix feature with the aw20216s driver set, and you would use those APIs instead.

However, if you need to use the driver standalone, add this to your rules.mk:

make
COMMON_VPATH += $(DRIVER_PATH)/led\nSRC += aw20216s.c\nSPI_DRIVER_REQUIRED = yes

Basic Configuration

Add the following to your config.h:

DefineDefaultDescription
AW20216S_CS_PIN_1Not definedThe GPIO pin connected to the first driver's Chip Select pin
AW20216S_CS_PIN_2Not definedThe GPIO pin connected to the second driver's Chip Select pin
AW20216S_EN_PINNot definedThe GPIO pin connected to the drivers' Enable pins
AW20216S_SPI_MODE0The SPI mode to use
AW20216S_SPI_DIVISOR4The SPI divisor to use
AW20216S_SCALING_MAX150The scaling value
AW20216S_GLOBAL_CURRENT_MAX150The global current control value

Global Current Control

This setting controls the current sunk by the CSx pins, from 0 to 255. To adjust it, add the following to your config.h:

c
#define AW20216S_GLOBAL_CURRENT_MAX 150

ARM/ChibiOS Configuration

Depending on the ChibiOS board configuration, you may need to enable and configure SPI at the keyboard level.

LED Mapping

In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:

c
const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = {\n/* Driver\n *   |  R          G          B */\n    {0, SW1_CS1,   SW1_CS2,   SW1_CS3},\n    // etc...\n};

In this example, the first LED index on driver 0 has its red channel on SW1_CS1, green on SW1_CS2 and blue on SW1_CS3.

These values correspond to the matrix locations as shown in the datasheet on page 16, figure 16.

API

struct aw20216s_led_t

Contains the PWM register addresses for a single RGB LED.

Members


void aw20216s_init(pin_t cs_pin)

Initialize the LED driver. This function should be called first.

Arguments


void aw20216s_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

Set the color of a single LED. This function does not immediately update the LEDs; call aw20216s_update_pwm_buffers() after you are finished.

Arguments


void aw20216s_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

Set the color of all LEDs.

Arguments


void aw20216s_update_pwm_buffers(pin_t cs_pin, uint8_t index)

Flush the PWM values to the LED driver.

Arguments

', 45); diff --git a/assets/drivers_aw20216s.md.CgKehEzB.lean.js b/assets/drivers_aw20216s.md.BIfeX9RQ.lean.js similarity index 91% rename from assets/drivers_aw20216s.md.CgKehEzB.lean.js rename to assets/drivers_aw20216s.md.BIfeX9RQ.lean.js index ebb051862ac..83dc226c789 100644 --- a/assets/drivers_aw20216s.md.CgKehEzB.lean.js +++ b/assets/drivers_aw20216s.md.BIfeX9RQ.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"AW20216S Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/aw20216s.md","filePath":"drivers/aw20216s.md"}'); const _sfc_main = { name: "drivers/aw20216s.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 45); diff --git a/assets/drivers_eeprom.md.DMr_G_5d.js b/assets/drivers_eeprom.md.Cops4y84.js similarity index 99% rename from assets/drivers_eeprom.md.DMr_G_5d.js rename to assets/drivers_eeprom.md.Cops4y84.js index 08b0a38ee1f..86c46a3f831 100644 --- a/assets/drivers_eeprom.md.DMr_G_5d.js +++ b/assets/drivers_eeprom.md.Cops4y84.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"EEPROM Driver Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/eeprom.md","filePath":"drivers/eeprom.md"}'); const _sfc_main = { name: "drivers/eeprom.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

EEPROM Driver Configuration

The EEPROM driver can be swapped out depending on the needs of the keyboard, or whether extra hardware is present.

Selecting the EEPROM driver is done in your keyboard's rules.mk:

DriverDescription
EEPROM_DRIVER = vendor (default)Uses the on-chip driver provided by the chip manufacturer. For AVR, this is provided by avr-libc. This is supported on ARM for a subset of chips -- STM32F3xx, STM32F1xx, and STM32F072xB will be emulated by writing to flash. STM32L0xx and STM32L1xx will use the onboard dedicated true EEPROM. Other chips will generally act as "transient" below.
EEPROM_DRIVER = i2cSupports writing to I2C-based 24xx EEPROM chips. See the driver section below.
EEPROM_DRIVER = spiSupports writing to SPI-based 25xx EEPROM chips. See the driver section below.
EEPROM_DRIVER = transientFake EEPROM driver -- supports reading/writing to RAM, and will be discarded when power is lost.
EEPROM_DRIVER = wear_levelingFrontend driver for the wear_leveling system, allowing for EEPROM emulation on top of flash -- both in-MCU and external SPI NOR flash.

Vendor Driver Configuration

STM32 L0/L1 Configuration

WARNING

Resetting EEPROM using an STM32L0/L1 device takes up to 1 second for every 1kB of internal EEPROM used.

config.h overrideDescriptionDefault Value
#define STM32_ONBOARD_EEPROM_SIZEThe size of the EEPROM to use, in bytes. Erase times can be high, so it's configurable here, if not using the default value.Minimum required to cover base eeconfig data, or 1024 if VIA is enabled.

I2C Driver Configuration

Currently QMK supports 24xx-series chips over I2C. As such, requires a working i2c_master driver configuration. You can override the driver configuration via your config.h:

config.h overrideDescriptionDefault Value
#define EXTERNAL_EEPROM_I2C_BASE_ADDRESSBase I2C address for the EEPROM -- shifted left by 1 as per i2c_master requirements0b10100000
#define EXTERNAL_EEPROM_I2C_ADDRESS(addr)Calculated I2C address for the EEPROM(EXTERNAL_EEPROM_I2C_BASE_ADDRESS)
#define EXTERNAL_EEPROM_BYTE_COUNTTotal size of the EEPROM in bytes8192
#define EXTERNAL_EEPROM_PAGE_SIZEPage size of the EEPROM in bytes, as specified in the datasheet32
#define EXTERNAL_EEPROM_ADDRESS_SIZEThe number of bytes to transmit for the memory location within the EEPROM2
#define EXTERNAL_EEPROM_WRITE_TIMEWrite cycle time of the EEPROM, as specified in the datasheet5
#define EXTERNAL_EEPROM_WP_PINIf defined the WP pin will be toggled appropriately when writing to the EEPROM.none

Some I2C EEPROM manufacturers explicitly recommend against hardcoding the WP pin to ground. This is in order to protect the eeprom memory content during power-up/power-down/brown-out conditions at low voltage where the eeprom is still operational, but the i2c master output might be unpredictable. If a WP pin is configured, then having an external pull-up on the WP pin is recommended.

Default values and extended descriptions can be found in drivers/eeprom/eeprom_i2c.h.

Alternatively, there are pre-defined hardware configurations for available chips/modules:

ModuleEquivalent #defineSource
CAT24C512 EEPROM#define EEPROM_I2C_CAT24C512https://www.sparkfun.com/products/14764
RM24C512C EEPROM#define EEPROM_I2C_RM24C512Chttps://www.sparkfun.com/products/14764
24LC32A EEPROM#define EEPROM_I2C_24LC32Ahttps://www.microchip.com/en-us/product/24LC32A
24LC64 EEPROM#define EEPROM_I2C_24LC64https://www.microchip.com/en-us/product/24LC64
24LC128 EEPROM#define EEPROM_I2C_24LC128https://www.microchip.com/en-us/product/24LC128
24LC256 EEPROM#define EEPROM_I2C_24LC256https://www.sparkfun.com/products/525
MB85RC256V FRAM#define EEPROM_I2C_MB85RC256Vhttps://www.adafruit.com/product/1895

TIP

If you find that the EEPROM is not cooperating, ensure you've correctly shifted up your EEPROM address by 1. For example, the datasheet might state the address as 0b01010000 -- the correct value of EXTERNAL_EEPROM_I2C_BASE_ADDRESS needs to be 0b10100000.

SPI Driver Configuration

Currently QMK supports 25xx-series chips over SPI. As such, requires a working spi_master driver configuration. You can override the driver configuration via your config.h:

config.h overrideDefault ValueDescription
#define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PINnoneSPI Slave select pin in order to inform that the EEPROM is currently being addressed
#define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR64Clock divisor used to divide the peripheral clock to derive the SPI frequency
#define EXTERNAL_EEPROM_BYTE_COUNT8192Total size of the EEPROM in bytes
#define EXTERNAL_EEPROM_PAGE_SIZE32Page size of the EEPROM in bytes, as specified in the datasheet
#define EXTERNAL_EEPROM_ADDRESS_SIZE2The number of bytes to transmit for the memory location within the EEPROM

Default values and extended descriptions can be found in drivers/eeprom/eeprom_spi.h.

Alternatively, there are pre-defined hardware configurations for available chips/modules:

ModuleEquivalent #defineSource
MB85RS64V FRAMdefine EEPROM_SPI_MB85RS64Vhttps://www.adafruit.com/product/1897

WARNING

There's no way to determine if there is an SPI EEPROM actually responding. Generally, this will result in reads of nothing but zero.

Transient Driver configuration

The only configurable item for the transient EEPROM driver is its size:

config.h overrideDescriptionDefault Value
#define TRANSIENT_EEPROM_SIZETotal size of the EEPROM storage in bytes64

Default values and extended descriptions can be found in drivers/eeprom/eeprom_transient.h.

Wear-leveling Driver Configuration

The wear-leveling driver uses an algorithm to minimise the number of erase cycles on the underlying MCU flash memory.

There is no specific configuration for this driver, but the wear-leveling system used by this driver may need configuration. See the wear-leveling configuration section for more information.

Wear-leveling Configuration

The wear-leveling driver has a few possible backing stores that may be used by adding to your keyboard's rules.mk file:

DriverDescription
WEAR_LEVELING_DRIVER = embedded_flashThis driver is used for emulating EEPROM by writing to embedded flash on the MCU.
WEAR_LEVELING_DRIVER = spi_flashThis driver is used to address external SPI NOR Flash peripherals.
WEAR_LEVELING_DRIVER = rp2040_flashThis driver is used to write to the same storage the RP2040 executes code from.
WEAR_LEVELING_DRIVER = legacyThis driver is the "legacy" emulated EEPROM provided in historical revisions of QMK. Currently used for STM32F0xx and STM32F4x1, but slated for deprecation and removal once embedded_flash support for those MCU families is complete.

WARNING

All wear-leveling drivers require an amount of RAM equivalent to the selected logical EEPROM size. Increasing the size to 32kB of EEPROM requires 32kB of RAM, which a significant number of MCUs simply do not have.

Wear-leveling Embedded Flash Driver Configuration

This driver performs writes to the embedded flash storage embedded in the MCU. In most circumstances, the last few of sectors of flash are used in order to minimise the likelihood of collision with program code.

Configurable options in your keyboard's config.h:

config.h overrideDefaultDescription
#define WEAR_LEVELING_EFL_FIRST_SECTORunsetThe first sector on the MCU to use. By default this is not defined and calculated at runtime based on the MCU. However, different flash sizes on MCUs may require custom configuration.
#define WEAR_LEVELING_EFL_FLASH_SIZEunsetAllows overriding the flash size available for use for wear-leveling. Under normal circumstances this is automatically calculated and should not need to be overridden. Specifying a size larger than the amount actually available in flash will usually prevent the MCU from booting.
#define WEAR_LEVELING_EFL_OMIT_LAST_SECTOR_COUNT0Number of sectors to omit at the end of the flash. These sectors will not be allocated to the driver and the usable flash block will be offset, but keeping the set flash size. Useful on devices with bootloaders requiring a check flag at the end of flash to be present in order to confirm a valid, bootable firmware.
#define WEAR_LEVELING_LOGICAL_SIZE(backing_size/2)Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM.
#define WEAR_LEVELING_BACKING_SIZE2048Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size.
#define BACKING_STORE_WRITE_SIZEautomaticThe byte width of the underlying write used on the MCU, and is usually automatically determined from the selected MCU family. If an error occurs in the auto-detection, you'll need to consult the MCU's datasheet and determine this value, specifying it directly.

WARNING

If your MCU does not boot after swapping to the EFL wear-leveling driver, it's likely that the flash size is incorrectly detected, usually as an MCU with larger flash and may require overriding.

Wear-leveling SPI Flash Driver Configuration

This driver performs writes to an external SPI NOR Flash peripheral. It also requires a working configuration for the SPI NOR Flash peripheral -- see the flash driver documentation for more information.

Configurable options in your keyboard's config.h:

config.h overrideDefaultDescription
#define WEAR_LEVELING_EXTERNAL_FLASH_BLOCK_COUNT1Number of blocks in the external flash used by the wear-leveling algorithm.
#define WEAR_LEVELING_EXTERNAL_FLASH_BLOCK_OFFSET0The index first block in the external flash used by the wear-leveling algorithm.
#define WEAR_LEVELING_LOGICAL_SIZE((block_count*block_size)/2)Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM. Result must be <= 64kB.
#define WEAR_LEVELING_BACKING_SIZE(block_count*block_size)Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size.
#define BACKING_STORE_WRITE_SIZE8The write width used whenever a write is performed on the external flash peripheral.

WARNING

There is currently a limit of 64kB for the EEPROM subsystem within QMK, so using a larger flash is not going to be beneficial as the logical size cannot be increased beyond 65536. The backing size may be increased to a larger value, but erase timing may suffer as a result.

Wear-leveling RP2040 Driver Configuration

This driver performs writes to the same underlying storage that the RP2040 executes its code.

Configurable options in your keyboard's config.h:

config.h overrideDefaultDescription
#define WEAR_LEVELING_RP2040_FLASH_SIZEPICO_FLASH_SIZE_BYTESNumber of bytes of flash on the board.
#define WEAR_LEVELING_RP2040_FLASH_BASE(flash_size-sector_size)The byte-wise location that the backing storage should be located.
#define WEAR_LEVELING_LOGICAL_SIZE(backing_size/2)Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM.
#define WEAR_LEVELING_BACKING_SIZE8192Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size as well as the sector size.
#define BACKING_STORE_WRITE_SIZE2The write width used whenever a write is performed on the external flash peripheral.

Wear-leveling Legacy EEPROM Emulation Driver Configuration

This driver performs writes to the embedded flash storage embedded in the MCU much like the normal Embedded Flash Driver, and is only for use with STM32F0xx and STM32F4x1 devices. This flash implementation is still currently provided as the EFL driver is currently non-functional for the previously mentioned families.

By default, 1024 bytes of emulated EEPROM is provided:

MCUEEPROM ProvidedFlash Used
STM32F0421024 bytes2048 bytes
STM32F0701024 bytes2048 bytes
STM32F0721024 bytes2048 bytes
STM32F4011024 bytes16384 bytes
STM32F4111024 bytes16384 bytes

Under normal circumstances configuration of this driver requires intimate knowledge of the MCU's flash structure -- reconfiguration is at your own risk and will require referring to the code.

', 53); diff --git a/assets/drivers_eeprom.md.DMr_G_5d.lean.js b/assets/drivers_eeprom.md.Cops4y84.lean.js similarity index 91% rename from assets/drivers_eeprom.md.DMr_G_5d.lean.js rename to assets/drivers_eeprom.md.Cops4y84.lean.js index a80bb2d4b3c..b18eaab4527 100644 --- a/assets/drivers_eeprom.md.DMr_G_5d.lean.js +++ b/assets/drivers_eeprom.md.Cops4y84.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"EEPROM Driver Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/eeprom.md","filePath":"drivers/eeprom.md"}'); const _sfc_main = { name: "drivers/eeprom.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 53); diff --git a/assets/drivers_flash.md.DhWcHp8S.js b/assets/drivers_flash.md.NiyC5VbL.js similarity index 98% rename from assets/drivers_flash.md.DhWcHp8S.js rename to assets/drivers_flash.md.NiyC5VbL.js index 4fc5709a5ff..f0b96e5bf7c 100644 --- a/assets/drivers_flash.md.DhWcHp8S.js +++ b/assets/drivers_flash.md.NiyC5VbL.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"FLASH Driver Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/flash.md","filePath":"drivers/flash.md"}'); const _sfc_main = { name: "drivers/flash.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

FLASH Driver Configuration

The FLASH driver can be swapped out depending on the needs of the keyboard, or whether extra hardware is present.

DriverDescription
FLASH_DRIVER = spiSupports writing to almost all NOR Flash chips. See the driver section below.

SPI FLASH Driver Configuration

Currently QMK supports almost all NOR Flash chips over SPI. As such, requires a working spi_master driver configuration. You can override the driver configuration via your config.h:

config.h overrideDescriptionDefault Value
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PINSPI Slave select pin in order to inform that the FLASH is currently being addressednone
#define EXTERNAL_FLASH_SPI_CLOCK_DIVISORClock divisor used to divide the peripheral clock to derive the SPI frequency8
#define EXTERNAL_FLASH_PAGE_SIZEThe Page size of the FLASH in bytes, as specified in the datasheet256
#define EXTERNAL_FLASH_SECTOR_SIZEThe sector size of the FLASH in bytes, as specified in the datasheet(4 * 1024)
#define EXTERNAL_FLASH_BLOCK_SIZEThe block size of the FLASH in bytes, as specified in the datasheet(64 * 1024)
#define EXTERNAL_FLASH_SIZEThe total size of the FLASH in bytes, as specified in the datasheet(512 * 1024)
#define EXTERNAL_FLASH_ADDRESS_SIZEThe Flash address size in bytes, as specified in datasheet3

WARNING

All the above default configurations are based on MX25L4006E NOR Flash.

', 7); diff --git a/assets/drivers_flash.md.DhWcHp8S.lean.js b/assets/drivers_flash.md.NiyC5VbL.lean.js similarity index 91% rename from assets/drivers_flash.md.DhWcHp8S.lean.js rename to assets/drivers_flash.md.NiyC5VbL.lean.js index 9336e19e7d8..40d926a5a8e 100644 --- a/assets/drivers_flash.md.DhWcHp8S.lean.js +++ b/assets/drivers_flash.md.NiyC5VbL.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"FLASH Driver Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/flash.md","filePath":"drivers/flash.md"}'); const _sfc_main = { name: "drivers/flash.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 7); diff --git a/assets/drivers_gpio.md.C5PvyJVh.js b/assets/drivers_gpio.md.C81HQm2y.js similarity index 98% rename from assets/drivers_gpio.md.C5PvyJVh.js rename to assets/drivers_gpio.md.C81HQm2y.js index 22118c79d0b..d1d8f4da201 100644 --- a/assets/drivers_gpio.md.C5PvyJVh.js +++ b/assets/drivers_gpio.md.C81HQm2y.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"GPIO Control","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/gpio.md","filePath":"drivers/gpio.md"}'); const _sfc_main = { name: "drivers/gpio.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

GPIO Control

QMK has a GPIO control abstraction layer which is microcontroller agnostic. This is done to allow easy access to pin control across different platforms.

Macros

The following macros provide basic control of GPIOs and are found in platforms/<platform>/gpio.h.

MacroDescription
gpio_set_pin_input(pin)Set pin as input with high impedance (High-Z)
gpio_set_pin_input_high(pin)Set pin as input with builtin pull-up resistor
gpio_set_pin_input_low(pin)Set pin as input with builtin pull-down resistor (unavailable on AVR)
gpio_set_pin_output(pin)Set pin as output (alias of gpio_set_pin_output_push_pull)
gpio_set_pin_output_push_pull(pin)Set pin as output, push/pull mode
gpio_set_pin_output_open_drain(pin)Set pin as output, open-drain mode (unavailable on AVR and ATSAM)
gpio_write_pin_high(pin)Set pin level as high, assuming it is an output
gpio_write_pin_low(pin)Set pin level as low, assuming it is an output
gpio_write_pin(pin, level)Set pin level, assuming it is an output
gpio_read_pin(pin)Returns the level of the pin
gpio_toggle_pin(pin)Invert pin level, assuming it is an output

Advanced Settings

Each microcontroller can have multiple advanced settings regarding its GPIO. This abstraction layer does not limit the use of architecture-specific functions. Advanced users should consult the datasheet of their desired device. For AVR, the standard avr/io.h library is used; for STM32, the ChibiOS PAL library is used.

Atomic Operation

The above functions are not always guaranteed to work atomically. Therefore, if you want to prevent interruptions in the middle of operations when using multiple combinations of the above functions, use the following ATOMIC_BLOCK_FORCEON macro.

eg.

c
void some_function(void) {\n     // some process\n     ATOMIC_BLOCK_FORCEON {\n        // Atomic Processing\n     }\n     // some process\n}

ATOMIC_BLOCK_FORCEON forces interrupts to be disabled before the block is executed, without regard to whether they are enabled or disabled. Then, after the block is executed, the interrupt is enabled.

Note that ATOMIC_BLOCK_FORCEON can therefore be used if you know that interrupts are enabled before the execution of the block, or if you know that it is OK to enable interrupts at the completion of the block.

', 13); diff --git a/assets/drivers_gpio.md.C5PvyJVh.lean.js b/assets/drivers_gpio.md.C81HQm2y.lean.js similarity index 91% rename from assets/drivers_gpio.md.C5PvyJVh.lean.js rename to assets/drivers_gpio.md.C81HQm2y.lean.js index 0be9a95f17d..12ffed1cbb3 100644 --- a/assets/drivers_gpio.md.C5PvyJVh.lean.js +++ b/assets/drivers_gpio.md.C81HQm2y.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"GPIO Control","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/gpio.md","filePath":"drivers/gpio.md"}'); const _sfc_main = { name: "drivers/gpio.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 13); diff --git a/assets/drivers_i2c.md.Cuj87reB.js b/assets/drivers_i2c.md.Dr29Qpwd.js similarity index 99% rename from assets/drivers_i2c.md.Cuj87reB.js rename to assets/drivers_i2c.md.Dr29Qpwd.js index 5584dc96f8d..356d8eb93ec 100644 --- a/assets/drivers_i2c.md.Cuj87reB.js +++ b/assets/drivers_i2c.md.Dr29Qpwd.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"I2C Master Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/i2c.md","filePath":"drivers/i2c.md"}'); const _sfc_main = { name: "drivers/i2c.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

I2C Master Driver

The I2C Master drivers used in QMK have a set of common functions to allow portability between MCUs.

Usage

In most cases, the I2C Master driver code is automatically included if you are using a feature or driver which requires it, such as OLED.

However, if you need to use the driver standalone, add the following to your rules.mk:

make
I2C_DRIVER_REQUIRED = yes

You can then call the I2C API by including i2c_master.h in your code.

I2C Addressing

All of the addresses expected by this driver should be pushed to the upper 7 bits of the address byte. Setting the lower bit (indicating read/write) will be done by the respective functions. Almost all I2C addresses listed on datasheets and the internet will be represented as 7 bits occupying the lower 7 bits and will need to be shifted to the left (more significant) by one bit. This is easy to do via the bitwise shift operator << 1.

You can either do this on each call to the functions below, or once in your definition of the address. For example, if your device has an address of 0x18:

c
#define MY_I2C_ADDRESS (0x18 << 1)

See https://www.robot-electronics.co.uk/i2c-tutorial for more information about I2C addressing and other technical details.

AVR Configuration

The following defines can be used to configure the I2C master driver:

config.h OverrideDescriptionDefault
F_SCLClock frequency in Hz400000

No further setup is required - just connect the SDA and SCL pins of your I2C devices to the matching pins on the MCU:

MCUSCLSDA
ATmega16/32U4D0D1
AT90USB64/128D0D1
ATmega32AC0C1
ATmega328/PC5C4

TIP

The ATmega16/32U2 does not possess I2C functionality, and so cannot use this driver.

ChibiOS/ARM Configuration

You'll need to determine which pins can be used for I2C -- a an example, STM32 parts generally have multiple I2C peripherals, labeled I2C1, I2C2, I2C3 etc.

To enable I2C, modify your board's halconf.h to enable I2C:

c
#define HAL_USE_I2C TRUE

Then, modify your board's mcuconf.h to enable the peripheral you've chosen, for example:

c
#undef STM32_I2C_USE_I2C2\n#define STM32_I2C_USE_I2C2 TRUE
mcuconf.h SettingDescriptionDefault
STM32_I2C_BUSY_TIMEOUTTime in milliseconds until the I2C command is aborted if no response is received50
STM32_I2C_XXX_IRQ_PRIORITYInterrupt priority for hardware driver XXX (THIS IS AN EXPERT SETTING)10
STM32_I2C_USE_DMAEnable/Disable the ability of the MCU to offload the data transfer to the DMA unitTRUE
STM32_I2C_XXX_DMA_PRIORITYPriority of DMA unit for hardware driver XXX (THIS IS AN EXPERT SETTING)1

Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303.

config.h OverrrideDescriptionDefault
I2C_DRIVERI2C peripheral to use - I2C1 -> I2CD1, I2C2 -> I2CD2 etc.I2CD1
I2C1_SCL_PINThe pin definition for SCLB6
I2C1_SCL_PAL_MODEThe alternate function mode for SCL4
I2C1_SDA_PINThe pin definition for SDAB7
I2C1_SDA_PAL_MODEThe alternate function mode for SDA4

The following configuration values depend on the specific MCU in use.

I2Cv1

See this page for the I2Cv1 configuration structure.

config.h OverrideDefault
I2C1_OPMODEOPMODE_I2C
I2C1_CLOCK_SPEED100000
I2C1_DUTY_CYCLESTD_DUTY_CYCLE

I2Cv2

See this page for the I2Cv2 configuration structure.

config.h OverrideDefault
I2C1_TIMINGR_PRESC0U
I2C1_TIMINGR_SCLDEL7U
I2C1_TIMINGR_SDADEL0U
I2C1_TIMINGR_SCLH38U
I2C1_TIMINGR_SCLL129U

API

void i2c_init(void)

Initialize the I2C driver. This function must be called only once, before any of the below functions can be called.

This function is weakly defined, meaning it can be overridden if necessary for your particular use case:

c
void i2c_init(void) {\n    gpio_set_pin_input(B6); // Try releasing special pins for a short time\n    gpio_set_pin_input(B7);\n    wait_ms(10); // Wait for the release to happen\n\n    palSetPadMode(GPIOB, 6, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP); // Set B6 to I2C function\n    palSetPadMode(GPIOB, 7, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP); // Set B7 to I2C function\n}

i2c_status_t i2c_transmit(uint8_t address, uint8_t *data, uint16_t length, uint16_t timeout)

Send multiple bytes to the selected I2C device.

Arguments

Return Value

I2C_STATUS_TIMEOUT if the timeout period elapses, I2C_STATUS_ERROR if some other error occurs, otherwise I2C_STATUS_SUCCESS.


i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout)

Receive multiple bytes from the selected I2C device.

Arguments

Return Value

I2C_STATUS_TIMEOUT if the timeout period elapses, I2C_STATUS_ERROR if some other error occurs, otherwise I2C_STATUS_SUCCESS.


i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)

Writes to a register with an 8-bit address on the I2C device.

Arguments

Return Value

I2C_STATUS_TIMEOUT if the timeout period elapses, I2C_STATUS_ERROR if some other error occurs, otherwise I2C_STATUS_SUCCESS.


i2c_status_t i2c_write_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)

Writes to a register with a 16-bit address (big endian) on the I2C device.

Arguments

Return Value

I2C_STATUS_TIMEOUT if the timeout period elapses, I2C_STATUS_ERROR if some other error occurs, otherwise I2C_STATUS_SUCCESS.


i2c_status_t i2c_read_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)

Reads from a register with an 8-bit address on the I2C device.

Arguments

Return Value

I2C_STATUS_TIMEOUT if the timeout period elapses, I2C_STATUS_ERROR if some other error occurs, otherwise I2C_STATUS_SUCCESS.


i2c_status_t i2c_read_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)

Reads from a register with a 16-bit address (big endian) on the I2C device.

Arguments

Return Value

I2C_STATUS_TIMEOUT if the timeout period elapses, I2C_STATUS_ERROR if some other error occurs, otherwise I2C_STATUS_SUCCESS.


i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout)

Pings the I2C bus for a specific address.

On ChibiOS a "best effort" attempt is made by reading a single byte from register 0 at the requested address. This should generally work except for I2C devices that do not not respond to a register 0 read request, which will result in a false negative result (unsucessful response to ping attempt).

This function is weakly defined, meaning it can be overridden if necessary for your particular use case:

Arguments

Return Value

I2C_STATUS_TIMEOUT if the timeout period elapses, I2C_STATUS_ERROR if some other error occurs, otherwise I2C_STATUS_SUCCESS.

', 92); diff --git a/assets/drivers_i2c.md.Cuj87reB.lean.js b/assets/drivers_i2c.md.Dr29Qpwd.lean.js similarity index 91% rename from assets/drivers_i2c.md.Cuj87reB.lean.js rename to assets/drivers_i2c.md.Dr29Qpwd.lean.js index 6b6ac215dfe..3d9a38292a2 100644 --- a/assets/drivers_i2c.md.Cuj87reB.lean.js +++ b/assets/drivers_i2c.md.Dr29Qpwd.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"I2C Master Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/i2c.md","filePath":"drivers/i2c.md"}'); const _sfc_main = { name: "drivers/i2c.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 92); diff --git a/assets/drivers_is31fl3218.md.C7Rok4l6.js b/assets/drivers_is31fl3218.md.CbXgZf0f.js similarity index 99% rename from assets/drivers_is31fl3218.md.C7Rok4l6.js rename to assets/drivers_is31fl3218.md.CbXgZf0f.js index ca3e7a3999c..76ad79e3a5a 100644 --- a/assets/drivers_is31fl3218.md.C7Rok4l6.js +++ b/assets/drivers_is31fl3218.md.CbXgZf0f.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3218 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3218.md","filePath":"drivers/is31fl3218.md"}'); const _sfc_main = { name: "drivers/is31fl3218.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

IS31FL3218 Driver

I²C LED driver by Lumissil. Supports up to 18 single-color LEDs, or 6 RGB LEDs.

IS31FL3218 Datasheet

Usage

The IS31FL3218 driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3218 driver set, and you would use those APIs instead.

However, if you need to use the driver standalone, add this to your rules.mk:

make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3218-mono.c # For single-color\nSRC += is31fl3218.c # For RGB\nI2C_DRIVER_REQUIRED = yes

Basic Configuration

Add the following to your config.h:

DefineDefaultDescription
IS31FL3218_SDB_PINNot definedThe GPIO pin connected to the driver's shutdown pin
IS31FL3218_I2C_TIMEOUT100The I²C timeout in milliseconds
IS31FL3218_I2C_PERSISTENCE0The number of times to retry I²C transmissions

I²C Addressing

The IS31FL3218's 7-bit I²C address is 0x54, available as IS31FL3218_I2C_ADDRESS.

ARM/ChibiOS Configuration

Depending on the ChibiOS board configuration, you may need to enable and configure I²C at the keyboard level.

LED Mapping

In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:

c
const is31fl3218_led_t PROGMEM g_is31fl3218_leds[IS31FL3218_LED_COUNT] = {\n/*   R     G     B */\n    {OUT1, OUT2, OUT3},\n    // etc...\n};

In this example, the red, green and blue channels for the first LED index all have their anodes connected to VCC, and their cathodes on the OUT1, OUT2 and OUT3 pins respectively.

For the single-color driver, the principle is the same, but there is only one channel:

c
const is31fl3218_led_t PROGMEM g_is31fl3218_leds[IS31FL3218_LED_COUNT] = {\n/*   V */\n    {OUT1},\n    // etc...\n};

API

struct is31fl3218_led_t

Contains the PWM register addresses for a single RGB LED.

Members


void is31fl3218_init(void)

Initialize the LED driver. This function should be called first.


void is31fl3218_write_register(uint8_t reg, uint8_t data)

Set the value of the given register.

Arguments


void is31fl3218_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3218_update_pwm_buffers() after you are finished.

Arguments


void is31fl3218_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

Set the color of all LEDs (RGB driver only).

Arguments


void is31fl3218_set_value(int index, uint8_t value)

Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3218_update_pwm_buffers() after you are finished.

Arguments


void is31fl3218_set_value_all(uint8_t value)

Set the brightness of all LEDs (single-color driver only).

Arguments


void is31fl3218_set_led_control_register(uint8_t index, bool red, bool green, bool blue)

Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3218_update_led_control_registers() after you are finished.

Arguments


void is31fl3218_set_led_control_register(uint8_t index, bool value)

Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3218_update_led_control_registers() after you are finished.

Arguments


void is31fl3218_update_pwm_buffers(void)

Flush the PWM values to the LED driver.


void is31fl3218_update_led_control_registers(void)

Flush the LED control register values to the LED driver.

', 69); diff --git a/assets/drivers_is31fl3218.md.C7Rok4l6.lean.js b/assets/drivers_is31fl3218.md.CbXgZf0f.lean.js similarity index 91% rename from assets/drivers_is31fl3218.md.C7Rok4l6.lean.js rename to assets/drivers_is31fl3218.md.CbXgZf0f.lean.js index 9b415d06d7e..85c5149138a 100644 --- a/assets/drivers_is31fl3218.md.C7Rok4l6.lean.js +++ b/assets/drivers_is31fl3218.md.CbXgZf0f.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3218 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3218.md","filePath":"drivers/is31fl3218.md"}'); const _sfc_main = { name: "drivers/is31fl3218.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 69); diff --git a/assets/drivers_is31fl3236.md.BsbsN_Nu.js b/assets/drivers_is31fl3236.md.DB6z91iZ.js similarity index 99% rename from assets/drivers_is31fl3236.md.BsbsN_Nu.js rename to assets/drivers_is31fl3236.md.DB6z91iZ.js index 860fb082aea..d9a62536c82 100644 --- a/assets/drivers_is31fl3236.md.BsbsN_Nu.js +++ b/assets/drivers_is31fl3236.md.DB6z91iZ.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3236 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3236.md","filePath":"drivers/is31fl3236.md"}'); const _sfc_main = { name: "drivers/is31fl3236.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

IS31FL3236 Driver

I²C LED driver by Lumissil. Supports a maximum of four drivers, each controlling up to 36 single-color LEDs, or 12 RGB LEDs.

IS31FL3236 Datasheet

Usage

The IS31FL3236 driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3236 driver set, and you would use those APIs instead.

However, if you need to use the driver standalone, add this to your rules.mk:

make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3236-mono.c # For single-color\nSRC += is31fl3236.c # For RGB\nI2C_DRIVER_REQUIRED = yes

Basic Configuration

Add the following to your config.h:

DefineDefaultDescription
IS31FL3236_SDB_PINNot definedThe GPIO pin connected to the drivers' shutdown pins
IS31FL3236_I2C_TIMEOUT100The I²C timeout in milliseconds
IS31FL3236_I2C_PERSISTENCE0The number of times to retry I²C transmissions
IS31FL3236_I2C_ADDRESS_1Not definedThe I²C address of driver 0
IS31FL3236_I2C_ADDRESS_2Not definedThe I²C address of driver 1
IS31FL3236_I2C_ADDRESS_3Not definedThe I²C address of driver 2
IS31FL3236_I2C_ADDRESS_4Not definedThe I²C address of driver 3

I²C Addressing

The IS31FL3236 has four possible 7-bit I²C addresses, depending on how the AD pin is connected.

To configure this, set the IS31FL3236_I2C_ADDRESS_n defines to one of the following in your config.h, where n denotes the driver index:

DefineValue
IS31FL3236_I2C_ADDRESS_GND0x3C
IS31FL3236_I2C_ADDRESS_SCL0x3D
IS31FL3236_I2C_ADDRESS_SDA0x3E
IS31FL3236_I2C_ADDRESS_VCC0x3F

ARM/ChibiOS Configuration

Depending on the ChibiOS board configuration, you may need to enable and configure I²C at the keyboard level.

LED Mapping

In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:

c
const is31fl3236_led_t PROGMEM g_is31fl3236_leds[IS31FL3236_LED_COUNT] = {\n/* Driver\n     |  R     G     B */\n    {0, OUT1, OUT2, OUT3},\n    // etc...\n};

In this example, the red, green and blue channels for the first LED index on driver 0 all have their anodes connected to VCC, and their cathodes on the OUT1, OUT2 and OUT3 pins respectively.

For the single-color driver, the principle is the same, but there is only one channel:

c
const is31fl3236_led_t PROGMEM g_is31fl3236_leds[IS31FL3236_LED_COUNT] = {\n/* Driver\n     |  V */\n    {0, OUT1},\n    // etc...\n};

API

struct is31fl3236_led_t

Contains the PWM register addresses for a single RGB LED.

Members


void is31fl3236_init(uint8_t index)

Initialize the LED driver. This function should be called first.

Arguments


void is31fl3236_write_register(uint8_t index, uint8_t reg, uint8_t data)

Set the value of the given register.

Arguments


void is31fl3236_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3236_update_pwm_buffers() after you are finished.

Arguments


void is31fl3236_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

Set the color of all LEDs (RGB driver only).

Arguments


void is31fl3236_set_value(int index, uint8_t value)

Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3236_update_pwm_buffers() after you are finished.

Arguments


void is31fl3236_set_value_all(uint8_t value)

Set the brightness of all LEDs (single-color driver only).

Arguments


void is31fl3236_set_led_control_register(uint8_t index, bool red, bool green, bool blue)

Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3236_update_led_control_registers() after you are finished.

Arguments


void is31fl3236_set_led_control_register(uint8_t index, bool value)

Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3236_update_led_control_registers() after you are finished.

Arguments


void is31fl3236_update_pwm_buffers(uint8_t index)

Flush the PWM values to the LED driver.

Arguments


void is31fl3236_update_led_control_registers(uint8_t index)

Flush the LED control register values to the LED driver.

Arguments

', 77); diff --git a/assets/drivers_is31fl3236.md.BsbsN_Nu.lean.js b/assets/drivers_is31fl3236.md.DB6z91iZ.lean.js similarity index 91% rename from assets/drivers_is31fl3236.md.BsbsN_Nu.lean.js rename to assets/drivers_is31fl3236.md.DB6z91iZ.lean.js index 33de32c2a89..386bc1e8328 100644 --- a/assets/drivers_is31fl3236.md.BsbsN_Nu.lean.js +++ b/assets/drivers_is31fl3236.md.DB6z91iZ.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3236 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3236.md","filePath":"drivers/is31fl3236.md"}'); const _sfc_main = { name: "drivers/is31fl3236.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 77); diff --git a/assets/drivers_is31fl3729.md.uZAm-59P.js b/assets/drivers_is31fl3729.md.D51u1Zj1.js similarity index 99% rename from assets/drivers_is31fl3729.md.uZAm-59P.js rename to assets/drivers_is31fl3729.md.D51u1Zj1.js index 39bd6c26da3..55aa8b2dfad 100644 --- a/assets/drivers_is31fl3729.md.uZAm-59P.js +++ b/assets/drivers_is31fl3729.md.D51u1Zj1.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3729 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3729.md","filePath":"drivers/is31fl3729.md"}'); const _sfc_main = { name: "drivers/is31fl3729.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

IS31FL3729 Driver

I²C 16x8/15x9 LED matrix driver by Lumissil. Supports a maximum of four drivers, each controlling up to 135 single-color LEDs, or 45 RGB LEDs.

IS31FL3729 Datasheet

Usage

The IS31FL3729 driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3729 driver set, and you would use those APIs instead.

However, if you need to use the driver standalone, add this to your rules.mk:

make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3729-mono.c # For single-color\nSRC += is31fl3729.c # For RGB\nI2C_DRIVER_REQUIRED = yes

Basic Configuration

Add the following to your config.h:

DefineDefaultDescription
IS31FL3729_SDB_PINNot definedThe GPIO pin connected to the drivers' shutdown pins
IS31FL3729_I2C_TIMEOUT100The I²C timeout in milliseconds
IS31FL3729_I2C_PERSISTENCE0The number of times to retry I²C transmissions
IS31FL3729_I2C_ADDRESS_1Not definedThe I²C address of driver 0
IS31FL3729_I2C_ADDRESS_2Not definedThe I²C address of driver 1
IS31FL3729_I2C_ADDRESS_3Not definedThe I²C address of driver 2
IS31FL3729_I2C_ADDRESS_4Not definedThe I²C address of driver 3
IS31FL3729_PWM_FREQUENCYIS31FL3729_PWM_FREQUENCY_32K_HZThe PWM frequency of the LEDs
IS31FL3729_SW_PULLDOWNIS31FL3729_SW_PULLDOWN_2K_OHM_SW_OFFThe SWx pullup resistor value
IS31FL3729_CS_PULLUPIS31FL3729_CS_PULLUP_2K_OHM_CS_OFFThe CSx pulldown resistor value
IS31FL3729_GLOBAL_CURRENT0x40The global current control value

I²C Addressing

The IS31FL3729 has four possible 7-bit I²C addresses, depending on how the AD pin is connected.

To configure this, set the IS31FL3729_I2C_ADDRESS_n defines to one of the following in your config.h, where n denotes the driver index:

DefineValue
IS31FL3729_I2C_ADDRESS_GND0x34
IS31FL3729_I2C_ADDRESS_SCL0x35
IS31FL3729_I2C_ADDRESS_SDA0x36
IS31FL3729_I2C_ADDRESS_VCC0x37

PWM Frequency

The PWM frequency can be adjusted by adding the following to your config.h:

c
#define IS31FL3729_PWM_FREQUENCY IS31FL3729_PWM_FREQUENCY_32K_HZ

Valid values are:

DefineFrequency
IS31FL3729_PWM_FREQUENCY_55K_HZ55 kHz
IS31FL3729_PWM_FREQUENCY_32K_HZ32 kHz (default)
IS31FL3729_PWM_FREQUENCY_4K_HZ4 kHz
IS31FL3729_PWM_FREQUENCY_2K_HZ2 kHz
IS31FL3729_PWM_FREQUENCY_1K_HZ1 kHz
IS31FL3729_PWM_FREQUENCY_500_HZ500 Hz
IS31FL3729_PWM_FREQUENCY_250_HZ250 Hz
IS31FL3729_PWM_FREQUENCY_80K_HZ80 kHz

De-Ghosting

These settings control the pulldown and pullup resistor values on the SWy and CSx pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 18) for more information on how and why this occurs.

To adjust the resistor values, add the following to your config.h:

c
#define IS31FL3729_SW_PULLDOWN IS31FL3729_SW_PULLDOWN_2K_OHM_SW_OFF\n#define IS31FL3729_CS_PULLUP IS31FL3729_CS_PULLUP_2K_OHM_CS_OFF

Valid values for IS31FL3729_SW_PULLDOWN are:

DefineResistance
IS31FL3729_SW_PULLDOWN_0_OHMNone
IS31FL3729_SW_PULLDOWN_0K5_OHM_SW_OFF0.5 kΩ in SWy off time
IS31FL3729_SW_PULLDOWN_1K_OHM_SW_OFF1 kΩ in SWy off time
IS31FL3729_SW_PULLDOWN_2K_OHM_SW_OFF2 kΩ in SWy off time (default)
IS31FL3729_SW_PULLDOWN_1K_OHM1 kΩ
IS31FL3729_SW_PULLDOWN_2K_OHM2 kΩ
IS31FL3729_SW_PULLDOWN_4K_OHM4 kΩ
IS31FL3729_SW_PULLDOWN_8K_OHM8 kΩ

Valid values for IS31FL3729_CS_PULLUP are:

DefineResistance
IS31FL3729_CS_PULLUP_0_OHMNone
IS31FL3729_CS_PULLUP_0K5_OHM_CS_OFF0.5 kΩ in CSx off time
IS31FL3729_CS_PULLUP_1K_OHM_CS_OFF1 kΩ in CSx off time
IS31FL3729_CS_PULLUP_2K_OHM_CS_OFF2 kΩ in CSx off time (default)
IS31FL3729_CS_PULLUP_1K_OHM1 kΩ
IS31FL3729_CS_PULLUP_2K_OHM2 kΩ
IS31FL3729_CS_PULLUP_4K_OHM4 kΩ
IS31FL3729_CS_PULLUP_8K_OHM8 kΩ

Global Current Control

This setting controls the current sunk by the CSx pins, from 0 to 255. By default, the value is 64, but if you need to adjust it, add the following to your config.h:

c
#define IS31FL3729_GLOBAL_CURRENT 0x40

ARM/ChibiOS Configuration

Depending on the ChibiOS board configuration, you may need to enable and configure I²C at the keyboard level.

LED Mapping

In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:

c
const is31fl3729_led_t PROGMEM g_is31fl3729_leds[IS31FL3729_LED_COUNT] = {\n/* Driver\n *   |  R        G        B */\n    {0, SW1_CS1, SW1_CS2, SW1_CS3},\n    // etc...\n};

In this example, the red, green and blue channels for the first LED index on driver 0 all have their anodes connected to the SW1 pin, and their cathodes on the CS1, CS2 and CS3 pins respectively.

For the single-color driver, the principle is the same, but there is only one channel:

c
const is31fl3729_led_t PROGMEM g_is31fl3729_leds[IS31FL3729_LED_COUNT] = {\n/* Driver\n *   |  V */\n    {0, SW1_CS1},\n    // etc...\n};

These values correspond to the register indices as shown in the datasheet on page 12, figure 9.

API

struct is31fl3729_led_t

Contains the PWM register addresses for a single RGB LED.

Members


void is31fl3729_init(uint8_t index)

Initialize the LED driver. This function should be called first.

Arguments


void is31fl3729_write_register(uint8_t index, uint8_t reg, uint8_t data)

Set the value of the given register.

Arguments


void is31fl3729_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3729_update_pwm_buffers() after you are finished.

Arguments


void is31fl3729_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

Set the color of all LEDs (RGB driver only).

Arguments


void is31fl3729_set_value(int index, uint8_t value)

Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3729_update_pwm_buffers() after you are finished.

Arguments


void is31fl3729_set_value_all(uint8_t value)

Set the brightness of all LEDs (single-color driver only).

Arguments


void is31fl3729_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)

Configure the scaling registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3729_update_scaling_registers() after you are finished.

Arguments


void is31fl3729_set_scaling_register(uint8_t index, uint8_t value)

Configure the scaling registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3729_update_scaling_registers() after you are finished.

Arguments


void is31fl3729_update_pwm_buffers(uint8_t index)

Flush the PWM values to the LED driver.

Arguments


void is31fl3729_update_scaling_registers(uint8_t index)

Flush the scaling register values to the LED driver.

Arguments

', 94); diff --git a/assets/drivers_is31fl3729.md.uZAm-59P.lean.js b/assets/drivers_is31fl3729.md.D51u1Zj1.lean.js similarity index 91% rename from assets/drivers_is31fl3729.md.uZAm-59P.lean.js rename to assets/drivers_is31fl3729.md.D51u1Zj1.lean.js index ee483bbf754..9efd32f2df7 100644 --- a/assets/drivers_is31fl3729.md.uZAm-59P.lean.js +++ b/assets/drivers_is31fl3729.md.D51u1Zj1.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3729 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3729.md","filePath":"drivers/is31fl3729.md"}'); const _sfc_main = { name: "drivers/is31fl3729.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 94); diff --git a/assets/drivers_is31fl3731.md._mTT68lh.js b/assets/drivers_is31fl3731.md.BAADR_YT.js similarity index 99% rename from assets/drivers_is31fl3731.md._mTT68lh.js rename to assets/drivers_is31fl3731.md.BAADR_YT.js index 9a3c17f0a1f..e4b0dbaf867 100644 --- a/assets/drivers_is31fl3731.md._mTT68lh.js +++ b/assets/drivers_is31fl3731.md.BAADR_YT.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3731 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3731.md","filePath":"drivers/is31fl3731.md"}'); const _sfc_main = { name: "drivers/is31fl3731.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

IS31FL3731 Driver

I²C Charlieplexed 16x9 LED matrix driver by Lumissil. Supports a maximum of four drivers, each controlling up to 144 single-color LEDs, or 48 RGB LEDs.

IS31FL3731 Datasheet

Usage

The IS31FL3731 driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3731 driver set, and you would use those APIs instead.

However, if you need to use the driver standalone, add this to your rules.mk:

make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3731-mono.c # For single-color\nSRC += is31fl3731.c # For RGB\nI2C_DRIVER_REQUIRED = yes

Basic Configuration

Add the following to your config.h:

DefineDefaultDescription
IS31FL3731_SDB_PINNot definedThe GPIO pin connected to the drivers' shutdown pins
IS31FL3731_I2C_TIMEOUT100The I²C timeout in milliseconds
IS31FL3731_I2C_PERSISTENCE0The number of times to retry I²C transmissions
IS31FL3731_I2C_ADDRESS_1Not definedThe I²C address of driver 0
IS31FL3731_I2C_ADDRESS_2Not definedThe I²C address of driver 1
IS31FL3731_I2C_ADDRESS_3Not definedThe I²C address of driver 2
IS31FL3731_I2C_ADDRESS_4Not definedThe I²C address of driver 3
IS31FL3731_DEGHOSTNot definedEnable ghost image prevention

I²C Addressing

The IS31FL3731 has four possible 7-bit I²C addresses, depending on how the AD pin is connected.

To configure this, set the IS31FL3731_I2C_ADDRESS_n defines to one of the following in your config.h, where n denotes the driver index:

DefineValue
IS31FL3731_I2C_ADDRESS_GND0x74
IS31FL3731_I2C_ADDRESS_SCL0x75
IS31FL3731_I2C_ADDRESS_SDA0x76
IS31FL3731_I2C_ADDRESS_VCC0x77

De-Ghosting

This setting enables the de-ghosting feature on the IS31FL3731. See this Application Note (p. 15) for more information.

To enable, add the following to your config.h:

c
#define IS31FL3731_DEGHOST

ARM/ChibiOS Configuration

Depending on the ChibiOS board configuration, you may need to enable and configure I²C at the keyboard level.

LED Mapping

In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:

c
const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {\n/* Driver\n *   |  R     G     B */\n    {0, C1_1, C1_2, C1_3},\n    // etc...\n};

In this example, the red, green and blue channels for the first LED index on driver 0 all have their cathodes connected to the CA1 pin, and their anodes on the CA2, CA3 and CA4 pins respectively.

For the single-color driver, the principle is the same, but there is only one channel:

c
const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {\n/* Driver\n *   |  V */\n    {0, C1_1},\n    // etc...\n};

These values correspond to the register indices as shown in the datasheet on page 11, figure 8.

API

struct is31fl3731_led_t

Contains the PWM register addresses for a single RGB LED.

Members


void is31fl3731_init(uint8_t index)

Initialize the LED driver. This function should be called first.

Arguments


void is31fl3731_write_register(uint8_t index, uint8_t reg, uint8_t data)

Set the value of the given register.

Arguments


void is31fl3731_select_page(uint8_t index, uint8_t page)

Change the current page for configuring the LED driver.

Arguments


void is31fl3731_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3731_update_pwm_buffers() after you are finished.

Arguments


void is31fl3731_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

Set the color of all LEDs (RGB driver only).

Arguments


void is31fl3731_set_value(int index, uint8_t value)

Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3731_update_pwm_buffers() after you are finished.

Arguments


void is31fl3731_set_value_all(uint8_t value)

Set the brightness of all LEDs (single-color driver only).

Arguments


void is31fl3731_set_led_control_register(uint8_t index, bool red, bool green, bool blue)

Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3731_update_led_control_registers() after you are finished.

Arguments


void is31fl3731_set_led_control_register(uint8_t index, bool value)

Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3731_update_led_control_registers() after you are finished.

Arguments


void is31fl3731_update_pwm_buffers(uint8_t index)

Flush the PWM values to the LED driver.

Arguments


void is31fl3731_update_led_control_registers(uint8_t index)

Flush the LED control register values to the LED driver.

Arguments

', 87); diff --git a/assets/drivers_is31fl3731.md._mTT68lh.lean.js b/assets/drivers_is31fl3731.md.BAADR_YT.lean.js similarity index 91% rename from assets/drivers_is31fl3731.md._mTT68lh.lean.js rename to assets/drivers_is31fl3731.md.BAADR_YT.lean.js index 308a13c4f8b..9da8663ad7b 100644 --- a/assets/drivers_is31fl3731.md._mTT68lh.lean.js +++ b/assets/drivers_is31fl3731.md.BAADR_YT.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3731 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3731.md","filePath":"drivers/is31fl3731.md"}'); const _sfc_main = { name: "drivers/is31fl3731.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 87); diff --git a/assets/drivers_is31fl3733.md.B2SurzgJ.js b/assets/drivers_is31fl3733.md.DkzQC1rk.js similarity index 99% rename from assets/drivers_is31fl3733.md.B2SurzgJ.js rename to assets/drivers_is31fl3733.md.DkzQC1rk.js index c6a62c1941c..f730d5964eb 100644 --- a/assets/drivers_is31fl3733.md.B2SurzgJ.js +++ b/assets/drivers_is31fl3733.md.DkzQC1rk.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3733 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3733.md","filePath":"drivers/is31fl3733.md"}'); const _sfc_main = { name: "drivers/is31fl3733.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

IS31FL3733 Driver

I²C 12x16 LED matrix driver by Lumissil. Supports a maximum of four drivers, each controlling up to 192 single-color LEDs, or 64 RGB LEDs.

IS31FL3733 Datasheet

Usage

The IS31FL3733 driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3733 driver set, and you would use those APIs instead.

However, if you need to use the driver standalone, add this to your rules.mk:

make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3733-mono.c # For single-color\nSRC += is31fl3733.c # For RGB\nI2C_DRIVER_REQUIRED = yes

Basic Configuration

Add the following to your config.h:

DefineDefaultDescription
IS31FL3733_SDB_PINNot definedThe GPIO pin connected to the drivers' shutdown pins
IS31FL3733_I2C_TIMEOUT100The I²C timeout in milliseconds
IS31FL3733_I2C_PERSISTENCE0The number of times to retry I²C transmissions
IS31FL3733_I2C_ADDRESS_1Not definedThe I²C address of driver 0
IS31FL3733_I2C_ADDRESS_2Not definedThe I²C address of driver 1
IS31FL3733_I2C_ADDRESS_3Not definedThe I²C address of driver 2
IS31FL3733_I2C_ADDRESS_4Not definedThe I²C address of driver 3
IS31FL3733_SYNC_1IS31FL3733_SYNC_NONEThe sync configuration for driver 0
IS31FL3733_SYNC_2IS31FL3733_SYNC_NONEThe sync configuration for driver 1
IS31FL3733_SYNC_3IS31FL3733_SYNC_NONEThe sync configuration for driver 2
IS31FL3733_SYNC_4IS31FL3733_SYNC_NONEThe sync configuration for driver 3
IS31FL3733_PWM_FREQUENCYIS31FL3733_PWM_FREQUENCY_8K4_HZThe PWM frequency of the LEDs (IS31FL3733B only)
IS31FL3733_SW_PULLUPIS31FL3733_PUR_0_OHMThe SWx pullup resistor value
IS31FL3733_CS_PULLDOWNIS31FL3733_PDR_0_OHMThe CSx pulldown resistor value
IS31FL3733_GLOBAL_CURRENT0xFFThe global current control value

I²C Addressing

The IS31FL3733 has 16 possible 7-bit I²C addresses, depending on how the ADDR1 and ADDR2 pins are connected.

To configure this, set the IS31FL3733_I2C_ADDRESS_n defines to one of the following in your config.h, where n denotes the driver index:

DefineValue
IS31FL3733_I2C_ADDRESS_GND_GND0x50
IS31FL3733_I2C_ADDRESS_GND_SCL0x51
IS31FL3733_I2C_ADDRESS_GND_SDA0x52
IS31FL3733_I2C_ADDRESS_GND_VCC0x53
IS31FL3733_I2C_ADDRESS_SCL_GND0x54
IS31FL3733_I2C_ADDRESS_SCL_SCL0x55
IS31FL3733_I2C_ADDRESS_SCL_SDA0x56
IS31FL3733_I2C_ADDRESS_SCL_VCC0x57
IS31FL3733_I2C_ADDRESS_SDA_GND0x58
IS31FL3733_I2C_ADDRESS_SDA_SCL0x59
IS31FL3733_I2C_ADDRESS_SDA_SDA0x5A
IS31FL3733_I2C_ADDRESS_SDA_VCC0x5B
IS31FL3733_I2C_ADDRESS_VCC_GND0x5C
IS31FL3733_I2C_ADDRESS_VCC_SCL0x5D
IS31FL3733_I2C_ADDRESS_VCC_SDA0x5E
IS31FL3733_I2C_ADDRESS_VCC_VCC0x5F

Multi-Driver Synchronization

Multiple IS31FL3733 drivers can be synchronized by connecting the SYNC pins together. One driver must be designated as the "master", and the others configured as "slave".

To do this, set the IS31FL3733_SYNC_n defines accordingly in your config.h, where n denotes the driver index:

DefineValue
IS31FL3733_SYNC_NONENo synchronization
IS31FL3733_SYNC_MASTERDriver configured as master
IS31FL3733_SYNC_SLAVEDriver configured as slave

PWM Frequency

The PWM frequency can be adjusted (for IS31FL3733B only) by adding the following to your config.h:

c
#define IS31FL3733_PWM_FREQUENCY IS31FL3733_PWM_FREQUENCY_8K4_HZ

Valid values are:

DefineFrequency
IS31FL3733_PWM_FREQUENCY_8K4_HZ8.4 kHz (default)
IS31FL3733_PWM_FREQUENCY_4K2_HZ4.2 kHz
IS31FL3733_PWM_FREQUENCY_26K7_HZ26.7 kHz
IS31FL3733_PWM_FREQUENCY_2K1_HZ2.1 kHz
IS31FL3733_PWM_FREQUENCY_1K05_HZ1.05 kHz

De-Ghosting

These settings control the pullup and pulldown resistor values on the SWy and CSx pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 23) for more information on how and why this occurs.

To adjust the resistor values, add the following to your config.h:

c
#define IS31FL3733_SW_PULLUP IS31FL3733_PUR_0_OHM\n#define IS31FL3733_CS_PULLDOWN IS31FL3733_PUR_0_OHM

Valid values for IS31FL3733_SW_PULLUP are:

DefineResistance
IS31FL3733_PUR_0_OHMNone (default)
IS31FL3733_PUR_0K5_OHM0.5 kΩ
IS31FL3733_PUR_1K_OHM1 kΩ
IS31FL3733_PUR_2K_OHM2 kΩ
IS31FL3733_PUR_4K_OHM4 kΩ
IS31FL3733_PUR_8K_OHM8 kΩ
IS31FL3733_PUR_16K_OHM16 kΩ
IS31FL3733_PUR_32K_OHM32 kΩ

Valid values for IS31FL3733_CS_PULLDOWN are:

DefineResistance
IS31FL3733_PDR_0_OHMNone (default)
IS31FL3733_PDR_0K5_OHM0.5 kΩ
IS31FL3733_PDR_1K_OHM1 kΩ
IS31FL3733_PDR_2K_OHM2 kΩ
IS31FL3733_PDR_4K_OHM4 kΩ
IS31FL3733_PDR_8K_OHM8 kΩ
IS31FL3733_PDR_16K_OHM16 kΩ
IS31FL3733_PDR_32K_OHM32 kΩ

Global Current Control

This setting controls the current sunk by the CSx pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your config.h:

c
#define IS31FL3733_GLOBAL_CURRENT 0xFF

ARM/ChibiOS Configuration

Depending on the ChibiOS board configuration, you may need to enable and configure I²C at the keyboard level.

LED Mapping

In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:

c
const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {\n/* Driver\n *   |  R         G         B */\n    {0, SW1_CS1,  SW1_CS2,  SW1_CS3},\n    // etc...\n};

In this example, the red, green and blue channels for the first LED index on driver 0 all have their cathodes connected to the SW1 pin, and their anodes on the CS1, CS2 and CS3 pins respectively.

For the single-color driver, the principle is the same, but there is only one channel:

c
const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {\n/* Driver\n *   |  V */\n    {0, SW1_CS1},\n    // etc...\n};

These values correspond to the register indices as shown in the datasheet on page 15, figure 9.

API

struct is31fl3733_led_t

Contains the PWM register addresses for a single RGB LED.

Members


void is31fl3733_init(uint8_t index)

Initialize the LED driver. This function should be called first.

Arguments


void is31fl3733_write_register(uint8_t index, uint8_t reg, uint8_t data)

Set the value of the given register.

Arguments


void is31fl3733_select_page(uint8_t index, uint8_t page)

Change the current page for configuring the LED driver.

Arguments


void is31fl3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3733_update_pwm_buffers() after you are finished.

Arguments


void is31fl3733_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

Set the color of all LEDs (RGB driver only).

Arguments


void is31fl3733_set_value(int index, uint8_t value)

Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3733_update_pwm_buffers() after you are finished.

Arguments


void is31fl3733_set_value_all(uint8_t value)

Set the brightness of all LEDs (single-color driver only).

Arguments


void is31fl3733_set_led_control_register(uint8_t index, bool red, bool green, bool blue)

Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3733_update_led_control_registers() after you are finished.

Arguments


void is31fl3733_set_led_control_register(uint8_t index, bool value)

Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3733_update_led_control_registers() after you are finished.

Arguments


void is31fl3733_update_pwm_buffers(uint8_t index)

Flush the PWM values to the LED driver.

Arguments


void is31fl3733_update_led_control_registers(uint8_t index)

Flush the LED control register values to the LED driver.

Arguments

', 103); diff --git a/assets/drivers_is31fl3733.md.B2SurzgJ.lean.js b/assets/drivers_is31fl3733.md.DkzQC1rk.lean.js similarity index 91% rename from assets/drivers_is31fl3733.md.B2SurzgJ.lean.js rename to assets/drivers_is31fl3733.md.DkzQC1rk.lean.js index 79b7b73444a..c000b0ed484 100644 --- a/assets/drivers_is31fl3733.md.B2SurzgJ.lean.js +++ b/assets/drivers_is31fl3733.md.DkzQC1rk.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3733 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3733.md","filePath":"drivers/is31fl3733.md"}'); const _sfc_main = { name: "drivers/is31fl3733.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 103); diff --git a/assets/drivers_is31fl3736.md.Cr5SQU0k.js b/assets/drivers_is31fl3736.md.D-ShjYav.js similarity index 99% rename from assets/drivers_is31fl3736.md.Cr5SQU0k.js rename to assets/drivers_is31fl3736.md.D-ShjYav.js index 80fb0c34297..de6906c1a4b 100644 --- a/assets/drivers_is31fl3736.md.Cr5SQU0k.js +++ b/assets/drivers_is31fl3736.md.D-ShjYav.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3736 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3736.md","filePath":"drivers/is31fl3736.md"}'); const _sfc_main = { name: "drivers/is31fl3736.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

IS31FL3736 Driver

I²C 12x8 LED matrix driver by Lumissil. Supports a maximum of four drivers, each controlling up to 96 single-color LEDs, or 32 RGB LEDs.

IS31FL3736 Datasheet

Usage

The IS31FL3736 driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3736 driver set, and you would use those APIs instead.

However, if you need to use the driver standalone, add this to your rules.mk:

make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3736-mono.c # For single-color\nSRC += is31fl3736.c # For RGB\nI2C_DRIVER_REQUIRED = yes

Basic Configuration

Add the following to your config.h:

DefineDefaultDescription
IS31FL3736_SDB_PINNot definedThe GPIO pin connected to the drivers' shutdown pins
IS31FL3736_I2C_TIMEOUT100The I²C timeout in milliseconds
IS31FL3736_I2C_PERSISTENCE0The number of times to retry I²C transmissions
IS31FL3736_I2C_ADDRESS_1Not definedThe I²C address of driver 0
IS31FL3736_I2C_ADDRESS_2Not definedThe I²C address of driver 1
IS31FL3736_I2C_ADDRESS_3Not definedThe I²C address of driver 2
IS31FL3736_I2C_ADDRESS_4Not definedThe I²C address of driver 3
IS31FL3736_PWM_FREQUENCYIS31FL3736_PWM_FREQUENCY_8K4_HZThe PWM frequency of the LEDs (IS31FL3736B only)
IS31FL3736_SW_PULLUPIS31FL3736_PUR_0_OHMThe SWx pullup resistor value
IS31FL3736_CS_PULLDOWNIS31FL3736_PDR_0_OHMThe CSx pulldown resistor value
IS31FL3736_GLOBAL_CURRENT0xFFThe global current control value

I²C Addressing

The IS31FL3736 has 16 possible 7-bit I²C addresses, depending on how the ADDR1 and ADDR2 pins are connected.

To configure this, set the IS31FL3736_I2C_ADDRESS_n defines to one of the following in your config.h, where n denotes the driver index:

DefineValue
IS31FL3736_I2C_ADDRESS_GND_GND0x50
IS31FL3736_I2C_ADDRESS_GND_SCL0x51
IS31FL3736_I2C_ADDRESS_GND_SDA0x52
IS31FL3736_I2C_ADDRESS_GND_VCC0x53
IS31FL3736_I2C_ADDRESS_SCL_GND0x54
IS31FL3736_I2C_ADDRESS_SCL_SCL0x55
IS31FL3736_I2C_ADDRESS_SCL_SDA0x56
IS31FL3736_I2C_ADDRESS_SCL_VCC0x57
IS31FL3736_I2C_ADDRESS_SDA_GND0x58
IS31FL3736_I2C_ADDRESS_SDA_SCL0x59
IS31FL3736_I2C_ADDRESS_SDA_SDA0x5A
IS31FL3736_I2C_ADDRESS_SDA_VCC0x5B
IS31FL3736_I2C_ADDRESS_VCC_GND0x5C
IS31FL3736_I2C_ADDRESS_VCC_SCL0x5D
IS31FL3736_I2C_ADDRESS_VCC_SDA0x5E
IS31FL3736_I2C_ADDRESS_VCC_VCC0x5F

PWM Frequency

The PWM frequency can be adjusted (for IS31FL3736B only) by adding the following to your config.h:

c
#define IS31FL3736_PWM_FREQUENCY IS31FL3736_PWM_FREQUENCY_8K4_HZ

Valid values are:

DefineFrequency
IS31FL3736_PWM_FREQUENCY_8K4_HZ8.4 kHz (default)
IS31FL3736_PWM_FREQUENCY_4K2_HZ4.2 kHz
IS31FL3736_PWM_FREQUENCY_26K7_HZ26.7 kHz
IS31FL3736_PWM_FREQUENCY_2K1_HZ2.1 kHz
IS31FL3736_PWM_FREQUENCY_1K05_HZ1.05 kHz

De-Ghosting

These settings control the pullup and pulldown resistor values on the SWy and CSx pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 25) for more information on how and why this occurs.

To adjust the resistor values, add the following to your config.h:

c
#define IS31FL3736_SW_PULLUP IS31FL3736_PUR_0_OHM\n#define IS31FL3736_CS_PULLDOWN IS31FL3736_PDR_0_OHM

Valid values for IS31FL3736_SW_PULLUP are:

DefineResistance
IS31FL3736_PUR_0_OHMNone (default)
IS31FL3736_PUR_0K5_OHM0.5 kΩ
IS31FL3736_PUR_1K_OHM1 kΩ
IS31FL3736_PUR_2K_OHM2 kΩ
IS31FL3736_PUR_4K_OHM4 kΩ
IS31FL3736_PUR_8K_OHM8 kΩ
IS31FL3736_PUR_16K_OHM16 kΩ
IS31FL3736_PUR_32K_OHM32 kΩ

Valid values for IS31FL3736_CS_PULLDOWN are:

DefineResistance
IS31FL3736_PDR_0_OHMNone (default)
IS31FL3736_PDR_0K5_OHM0.5 kΩ
IS31FL3736_PDR_1K_OHM1 kΩ
IS31FL3736_PDR_2K_OHM2 kΩ
IS31FL3736_PDR_4K_OHM4 kΩ
IS31FL3736_PDR_8K_OHM8 kΩ
IS31FL3736_PDR_16K_OHM16 kΩ
IS31FL3736_PDR_32K_OHM32 kΩ

Global Current Control

This setting controls the current sunk by the CSx pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your config.h:

c
#define IS31FL3736_GLOBAL_CURRENT 0xFF

ARM/ChibiOS Configuration

Depending on the ChibiOS board configuration, you may need to enable and configure I²C at the keyboard level.

LED Mapping

In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:

c
const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT] = {\n/* Driver\n *   |  R         G         B */\n    {0, SW1_CS1,  SW1_CS2,  SW1_CS3},\n    // etc...\n};

In this example, the red, green and blue channels for the first LED index on driver 0 all have their cathodes connected to the SW1 pin, and their anodes on the CS1, CS2 and CS3 pins respectively.

For the single-color driver, the principle is the same, but there is only one channel:

c
const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT] = {\n/* Driver\n *   |  V */\n    {0, SW1_CS1},\n    // etc...\n};

These values correspond to the register indices as shown in the datasheet on page 16, figure 9.

API

struct is31fl3736_led_t

Contains the PWM register addresses for a single RGB LED.

Members


void is31fl3736_init(uint8_t index)

Initialize the LED driver. This function should be called first.

Arguments


void is31fl3736_write_register(uint8_t index, uint8_t reg, uint8_t data)

Set the value of the given register.

Arguments


void is31fl3736_select_page(uint8_t index, uint8_t page)

Change the current page for configuring the LED driver.

Arguments


void is31fl3736_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3736_update_pwm_buffers() after you are finished.

Arguments


void is31fl3736_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

Set the color of all LEDs (RGB driver only).

Arguments


void is31fl3736_set_value(int index, uint8_t value)

Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3736_update_pwm_buffers() after you are finished.

Arguments


void is31fl3736_set_value_all(uint8_t value)

Set the brightness of all LEDs (single-color driver only).

Arguments


void is31fl3736_set_led_control_register(uint8_t index, bool red, bool green, bool blue)

Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3736_update_led_control_registers() after you are finished.

Arguments


void is31fl3736_set_led_control_register(uint8_t index, bool value)

Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3736_update_led_control_registers() after you are finished.

Arguments


void is31fl3736_update_pwm_buffers(uint8_t index)

Flush the PWM values to the LED driver.

Arguments


void is31fl3736_update_led_control_registers(uint8_t index)

Flush the LED control register values to the LED driver.

Arguments

', 99); diff --git a/assets/drivers_is31fl3736.md.Cr5SQU0k.lean.js b/assets/drivers_is31fl3736.md.D-ShjYav.lean.js similarity index 91% rename from assets/drivers_is31fl3736.md.Cr5SQU0k.lean.js rename to assets/drivers_is31fl3736.md.D-ShjYav.lean.js index ef0e7283108..c01486f70ff 100644 --- a/assets/drivers_is31fl3736.md.Cr5SQU0k.lean.js +++ b/assets/drivers_is31fl3736.md.D-ShjYav.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3736 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3736.md","filePath":"drivers/is31fl3736.md"}'); const _sfc_main = { name: "drivers/is31fl3736.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 99); diff --git a/assets/drivers_is31fl3737.md.BgIEmU0V.js b/assets/drivers_is31fl3737.md.BqpmIJMQ.js similarity index 99% rename from assets/drivers_is31fl3737.md.BgIEmU0V.js rename to assets/drivers_is31fl3737.md.BqpmIJMQ.js index d3490c794af..95f628e52ac 100644 --- a/assets/drivers_is31fl3737.md.BgIEmU0V.js +++ b/assets/drivers_is31fl3737.md.BqpmIJMQ.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3737 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3737.md","filePath":"drivers/is31fl3737.md"}'); const _sfc_main = { name: "drivers/is31fl3737.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

IS31FL3737 Driver

I²C 12x12 LED matrix driver by Lumissil. Supports a maximum of four drivers, each controlling up to 144 single-color LEDs, or 48 RGB LEDs.

IS31FL3737 Datasheet

Usage

The IS31FL3737 driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3737 driver set, and you would use those APIs instead.

However, if you need to use the driver standalone, add this to your rules.mk:

make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3737-mono.c # For single-color\nSRC += is31fl3737.c # For RGB\nI2C_DRIVER_REQUIRED = yes

Basic Configuration

Add the following to your config.h:

DefineDefaultDescription
IS31FL3737_SDB_PINNot definedThe GPIO pin connected to the drivers' shutdown pins
IS31FL3737_I2C_TIMEOUT100The I²C timeout in milliseconds
IS31FL3737_I2C_PERSISTENCE0The number of times to retry I²C transmissions
IS31FL3737_I2C_ADDRESS_1Not definedThe I²C address of driver 0
IS31FL3737_I2C_ADDRESS_2Not definedThe I²C address of driver 1
IS31FL3737_I2C_ADDRESS_3Not definedThe I²C address of driver 2
IS31FL3737_I2C_ADDRESS_4Not definedThe I²C address of driver 3
IS31FL3737_PWM_FREQUENCYIS31FL3737_PWM_FREQUENCY_8K4_HZThe PWM frequency of the LEDs (IS31FL3737B only)
IS31FL3737_SW_PULLUPIS31FL3737_PUR_0_OHMThe SWx pullup resistor value
IS31FL3737_CS_PULLDOWNIS31FL3737_PDR_0_OHMThe CSx pulldown resistor value
IS31FL3737_GLOBAL_CURRENT0xFFThe global current control value

I²C Addressing

The IS31FL3737 has four possible 7-bit I²C addresses, depending on how the ADDR pin is connected.

To configure this, set the IS31FL3737_I2C_ADDRESS_n defines to one of the following in your config.h, where n denotes the driver index:

DefineValue
IS31FL3737_I2C_ADDRESS_GND0x50
IS31FL3737_I2C_ADDRESS_SCL0x55
IS31FL3737_I2C_ADDRESS_SDA0x5A
IS31FL3737_I2C_ADDRESS_VCC0x5F

PWM Frequency

The PWM frequency can be adjusted (for IS31FL3737B only) by adding the following to your config.h:

c
#define IS31FL3737_PWM_FREQUENCY IS31FL3737_PWM_FREQUENCY_8K4_HZ

Valid values are:

DefineFrequency
IS31FL3737_PWM_FREQUENCY_8K4_HZ8.4 kHz (default)
IS31FL3737_PWM_FREQUENCY_4K2_HZ4.2 kHz
IS31FL3737_PWM_FREQUENCY_26K7_HZ26.7 kHz
IS31FL3737_PWM_FREQUENCY_2K1_HZ2.1 kHz
IS31FL3737_PWM_FREQUENCY_1K05_HZ1.05 kHz

De-Ghosting

These settings control the pullup and pulldown resistor values on the SWy and CSx pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 23) for more information on how and why this occurs.

To adjust the resistor values, add the following to your config.h:

c
#define IS31FL3737_SW_PULLUP IS31FL3737_PUR_0_OHM\n#define IS31FL3737_CS_PULLDOWN IS31FL3737_PDR_0_OHM

Valid values for IS31FL3737_SW_PULLUP are:

DefineResistance
IS31FL3737_PUR_0_OHMNone (default)
IS31FL3737_PUR_0K5_OHM0.5 kΩ
IS31FL3737_PUR_1K_OHM1 kΩ
IS31FL3737_PUR_2K_OHM2 kΩ
IS31FL3737_PUR_4K_OHM4 kΩ
IS31FL3737_PUR_8K_OHM8 kΩ
IS31FL3737_PUR_16K_OHM16 kΩ
IS31FL3737_PUR_32K_OHM32 kΩ

Valid values for IS31FL3737_CS_PULLDOWN are:

DefineResistance
IS31FL3737_PDR_0_OHMNone (default)
IS31FL3737_PDR_0K5_OHM0.5 kΩ
IS31FL3737_PDR_1K_OHM1 kΩ
IS31FL3737_PDR_2K_OHM2 kΩ
IS31FL3737_PDR_4K_OHM4 kΩ
IS31FL3737_PDR_8K_OHM8 kΩ
IS31FL3737_PDR_16K_OHM16 kΩ
IS31FL3737_PDR_32K_OHM32 kΩ

Global Current Control

This setting controls the current sunk by the CSx pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your config.h:

c
#define IS31FL3737_GLOBAL_CURRENT 0xFF

ARM/ChibiOS Configuration

Depending on the ChibiOS board configuration, you may need to enable and configure I²C at the keyboard level.

LED Mapping

In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:

c
const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT] = {\n/* Driver\n *   |  R         G         B */\n    {0, SW1_CS1,  SW1_CS2,  SW1_CS3},\n    // etc...\n};

In this example, the red, green and blue channels for the first LED index on driver 0 all have their cathodes connected to the SW1 pin, and their anodes on the CS1, CS2 and CS3 pins respectively.

For the single-color driver, the principle is the same, but there is only one channel:

c
const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT] = {\n/* Driver\n *   |  V */\n    {0, SW1_CS1},\n    // etc...\n};

These values correspond to the register indices as shown in the datasheet on page 15, figure 9.

API

struct is31fl3737_led_t

Contains the PWM register addresses for a single RGB LED.

Members


void is31fl3737_init(uint8_t index)

Initialize the LED driver. This function should be called first.

Arguments


void is31fl3737_write_register(uint8_t index, uint8_t reg, uint8_t data)

Set the value of the given register.

Arguments


void is31fl3737_select_page(uint8_t index, uint8_t page)

Change the current page for configuring the LED driver.

Arguments


void is31fl3737_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3737_update_pwm_buffers() after you are finished.

Arguments


void is31fl3737_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

Set the color of all LEDs (RGB driver only).

Arguments


void is31fl3737_set_value(int index, uint8_t value)

Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3737_update_pwm_buffers() after you are finished.

Arguments


void is31fl3737_set_value_all(uint8_t value)

Set the brightness of all LEDs (single-color driver only).

Arguments


void is31fl3737_set_led_control_register(uint8_t index, bool red, bool green, bool blue)

Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3737_update_led_control_registers() after you are finished.

Arguments


void is31fl3737_set_led_control_register(uint8_t index, bool value)

Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3737_update_led_control_registers() after you are finished.

Arguments


void is31fl3737_update_pwm_buffers(uint8_t index)

Flush the PWM values to the LED driver.

Arguments


void is31fl3737_update_led_control_registers(uint8_t index)

Flush the LED control register values to the LED driver.

Arguments

', 99); diff --git a/assets/drivers_is31fl3737.md.BgIEmU0V.lean.js b/assets/drivers_is31fl3737.md.BqpmIJMQ.lean.js similarity index 91% rename from assets/drivers_is31fl3737.md.BgIEmU0V.lean.js rename to assets/drivers_is31fl3737.md.BqpmIJMQ.lean.js index e82aba444b4..2c02eff2f18 100644 --- a/assets/drivers_is31fl3737.md.BgIEmU0V.lean.js +++ b/assets/drivers_is31fl3737.md.BqpmIJMQ.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3737 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3737.md","filePath":"drivers/is31fl3737.md"}'); const _sfc_main = { name: "drivers/is31fl3737.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 99); diff --git a/assets/drivers_is31fl3741.md.DzsuNWJt.js b/assets/drivers_is31fl3741.md.9e7jzvwW.js similarity index 99% rename from assets/drivers_is31fl3741.md.DzsuNWJt.js rename to assets/drivers_is31fl3741.md.9e7jzvwW.js index e5eddbb7ddb..b52737c231f 100644 --- a/assets/drivers_is31fl3741.md.DzsuNWJt.js +++ b/assets/drivers_is31fl3741.md.9e7jzvwW.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3741 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3741.md","filePath":"drivers/is31fl3741.md"}'); const _sfc_main = { name: "drivers/is31fl3741.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

IS31FL3741 Driver

I²C 39x9 LED matrix driver by Lumissil. Supports a maximum of four drivers, each controlling up to 351 single-color LEDs, or 117 RGB LEDs.

IS31FL3741A Datasheet

Usage

The IS31FL3741 driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3741 driver set, and you would use those APIs instead.

However, if you need to use the driver standalone, add this to your rules.mk:

make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3741-mono.c # For single-color\nSRC += is31fl3741.c # For RGB\nI2C_DRIVER_REQUIRED = yes

Basic Configuration

Add the following to your config.h:

DefineDefaultDescription
IS31FL3741_SDB_PINNot definedThe GPIO pin connected to the drivers' shutdown pins
IS31FL3741_I2C_TIMEOUT100The I²C timeout in milliseconds
IS31FL3741_I2C_PERSISTENCE0The number of times to retry I²C transmissions
IS31FL3741_I2C_ADDRESS_1Not definedThe I²C address of driver 0
IS31FL3741_I2C_ADDRESS_2Not definedThe I²C address of driver 1
IS31FL3741_I2C_ADDRESS_3Not definedThe I²C address of driver 2
IS31FL3741_I2C_ADDRESS_4Not definedThe I²C address of driver 3
IS31FL3741_CONFIGURATION1The value of the configuration register
IS31FL3741_PWM_FREQUENCYIS31FL3741_PWM_FREQUENCY_29K_HZThe PWM frequency of the LEDs (IS31FL3741A only)
IS31FL3741_SW_PULLUPIS31FL3741_PUR_32K_OHMThe SWx pullup resistor value
IS31FL3741_CS_PULLDOWNIS31FL3741_PDR_32K_OHMThe CSx pulldown resistor value
IS31FL3741_GLOBAL_CURRENT0xFFThe global current control value

I²C Addressing

The IS31FL3741 has four possible 7-bit I²C addresses, depending on how the ADDR pin is connected.

To configure this, set the IS31FL3741_I2C_ADDRESS_n defines to one of the following in your config.h, where n denotes the driver index:

DefineValue
IS31FL3741_I2C_ADDRESS_GND0x30
IS31FL3741_I2C_ADDRESS_SCL0x31
IS31FL3741_I2C_ADDRESS_SDA0x32
IS31FL3741_I2C_ADDRESS_VCC0x33

PWM Frequency

The PWM frequency can be adjusted (for IS31FL3741A only) by adding the following to your config.h:

c
#define IS31FL3741_PWM_FREQUENCY IS31FL3741_PWM_FREQUENCY_29K_HZ

Valid values are:

DefineFrequency
IS31FL3741_PWM_FREQUENCY_29K_HZ29 kHz (default)
IS31FL3741_PWM_FREQUENCY_3K6_HZ3.6 kHz
IS31FL3741_PWM_FREQUENCY_1K8_HZ1.8 kHz
IS31FL3741_PWM_FREQUENCY_900_HZ900 Hz

De-Ghosting

These settings control the pullup and pulldown resistor values on the CSx and SWy pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 18) for more information on how and why this occurs.

To adjust the resistor values, add the following to your config.h:

c
#define IS31FL3741_SW_PULLUP IS31FL3741_PUR_32K_OHM\n#define IS31FL3741_CS_PULLDOWN IS31FL3741_PDR_32K_OHM

Valid values for IS31FL3741_SW_PULLUP are:

DefineResistance
IS31FL3741_PUR_0_OHMNone
IS31FL3741_PUR_0K5_OHM0.5 kΩ
IS31FL3741_PUR_1K_OHM1 kΩ
IS31FL3741_PUR_2K_OHM2 kΩ
IS31FL3741_PUR_4K_OHM4 kΩ
IS31FL3741_PUR_8K_OHM8 kΩ
IS31FL3741_PUR_16K_OHM16 kΩ
IS31FL3741_PUR_32K_OHM32 kΩ (default)

Valid values for IS31FL3741_CS_PULLDOWN are:

DefineResistance
IS31FL3741_PDR_0_OHMNone
IS31FL3741_PDR_0K5_OHM0.5 kΩ
IS31FL3741_PDR_1K_OHM1 kΩ
IS31FL3741_PDR_2K_OHM2 kΩ
IS31FL3741_PDR_4K_OHM4 kΩ
IS31FL3741_PDR_8K_OHM8 kΩ
IS31FL3741_PDR_16K_OHM16 kΩ
IS31FL3741_PDR_32K_OHM32 kΩ (default)

Global Current Control

This setting controls the current sunk by the CSx pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your config.h:

c
#define IS31FL3741_GLOBAL_CURRENT 0xFF

ARM/ChibiOS Configuration

Depending on the ChibiOS board configuration, you may need to enable and configure I²C at the keyboard level.

LED Mapping

In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:

c
const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {\n/* Driver\n *   |  R         G         B */\n    {0, SW1_CS1,  SW1_CS2,  SW1_CS3},\n    // etc...\n};

In this example, the red, green and blue channels for the first LED index on driver 0 all have their anodes connected to the SW1 pin, and their cathodes on the CS1, CS2 and CS3 pins respectively.

For the single-color driver, the principle is the same, but there is only one channel:

c
const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {\n/* Driver\n *   |  V */\n    {0, SW1_CS1},\n    // etc...\n};

These values correspond to the register indices as shown in the datasheet on page 12, figure 8.

API

struct is31fl3741_led_t

Contains the PWM register addresses for a single RGB LED.

Members


void is31fl3741_init(uint8_t index)

Initialize the LED driver. This function should be called first.

Arguments


void is31fl3741_write_register(uint8_t index, uint8_t reg, uint8_t data)

Set the value of the given register.

Arguments


void is31fl3741_select_page(uint8_t index, uint8_t page)

Change the current page for configuring the LED driver.

Arguments


void is31fl3741_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3741_update_pwm_buffers() after you are finished.

Arguments


void is31fl3741_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

Set the color of all LEDs (RGB driver only).

Arguments


void is31fl3741_set_value(int index, uint8_t value)

Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3741_update_pwm_buffers() after you are finished.

Arguments


void is31fl3741_set_value_all(uint8_t value)

Set the brightness of all LEDs (single-color driver only).

Arguments


void is31fl3741_set_led_control_register(uint8_t index, bool red, bool green, bool blue)

Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3741_update_led_control_registers() after you are finished.

Arguments


void is31fl3741_set_led_control_register(uint8_t index, bool value)

Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3741_update_led_control_registers() after you are finished.

Arguments


void is31fl3741_update_pwm_buffers(uint8_t index)

Flush the PWM values to the LED driver.

Arguments


void is31fl3741_update_led_control_registers(uint8_t index)

Flush the LED control register values to the LED driver.

Arguments

', 99); diff --git a/assets/drivers_is31fl3741.md.DzsuNWJt.lean.js b/assets/drivers_is31fl3741.md.9e7jzvwW.lean.js similarity index 91% rename from assets/drivers_is31fl3741.md.DzsuNWJt.lean.js rename to assets/drivers_is31fl3741.md.9e7jzvwW.lean.js index 90964f205a3..5e3c38a832f 100644 --- a/assets/drivers_is31fl3741.md.DzsuNWJt.lean.js +++ b/assets/drivers_is31fl3741.md.9e7jzvwW.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3741 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3741.md","filePath":"drivers/is31fl3741.md"}'); const _sfc_main = { name: "drivers/is31fl3741.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 99); diff --git a/assets/drivers_is31fl3742a.md.CKPjB5T1.js b/assets/drivers_is31fl3742a.md.Cjvb_b-G.js similarity index 99% rename from assets/drivers_is31fl3742a.md.CKPjB5T1.js rename to assets/drivers_is31fl3742a.md.Cjvb_b-G.js index ad83f75dde0..4014e2695cd 100644 --- a/assets/drivers_is31fl3742a.md.CKPjB5T1.js +++ b/assets/drivers_is31fl3742a.md.Cjvb_b-G.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3742A Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3742a.md","filePath":"drivers/is31fl3742a.md"}'); const _sfc_main = { name: "drivers/is31fl3742a.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

IS31FL3742A Driver

I²C 30x6 LED matrix driver by Lumissil. Supports a maximum of four drivers, each controlling up to 180 single-color LEDs, or 60 RGB LEDs.

IS31FL3742A Datasheet

Usage

The IS31FL3742A driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3742a driver set, and you would use those APIs instead.

However, if you need to use the driver standalone, add this to your rules.mk:

make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3742a-mono.c # For single-color\nSRC += is31fl3742a.c # For RGB\nI2C_DRIVER_REQUIRED = yes

Basic Configuration

Add the following to your config.h:

DefineDefaultDescription
IS31FL3742A_SDB_PINNot definedThe GPIO pin connected to the drivers' shutdown pins
IS31FL3742A_I2C_TIMEOUT100The I²C timeout in milliseconds
IS31FL3742A_I2C_PERSISTENCE0The number of times to retry I²C transmissions
IS31FL3742A_I2C_ADDRESS_1Not definedThe I²C address of driver 0
IS31FL3742A_I2C_ADDRESS_2Not definedThe I²C address of driver 1
IS31FL3742A_I2C_ADDRESS_3Not definedThe I²C address of driver 2
IS31FL3742A_I2C_ADDRESS_4Not definedThe I²C address of driver 3
IS31FL3742A_CONFIGURATION0x31The value of the configuration register
IS31FL3742A_PWM_FREQUENCYIS31FL3742A_PWM_FREQUENCY_29K_HZThe PWM frequency of the LEDs
IS31FL3742A_SW_PULLDOWNIS31FL3742A_PDR_8K_OHMThe SWx pulldown resistor value
IS31FL3742A_CS_PULLUPIS31FL3742A_PUR_8K_OHMThe CSx pullup resistor value
IS31FL3742A_GLOBAL_CURRENT0xFFThe global current control value

I²C Addressing

The IS31FL3742A has four possible 7-bit I²C addresses, depending on how the ADDR pin is connected.

To configure this, set the IS31FL3742A_I2C_ADDRESS_n defines to one of the following in your config.h, where n denotes the driver index:

DefineValue
IS31FL3742A_I2C_ADDRESS_GND0x30
IS31FL3742A_I2C_ADDRESS_SCL0x31
IS31FL3742A_I2C_ADDRESS_SDA0x32
IS31FL3742A_I2C_ADDRESS_VCC0x33

PWM Frequency

The PWM frequency can be adjusted by adding the following to your config.h:

c
#define IS31FL3742A_PWM_FREQUENCY IS31FL3742A_PWM_FREQUENCY_29K_HZ

Valid values are:

DefineFrequency
IS31FL3742A_PWM_FREQUENCY_29K_HZ29 kHz (default)
IS31FL3742A_PWM_FREQUENCY_3K6_HZ3.6 kHz
IS31FL3742A_PWM_FREQUENCY_1K8_HZ1.8 kHz
IS31FL3742A_PWM_FREQUENCY_900_HZ900 Hz

De-Ghosting

These settings control the pulldown and pullup resistor values on the SWy and CSx pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 23) for more information on how and why this occurs.

To adjust the resistor values, add the following to your config.h:

c
#define IS31FL3742A_SW_PULLDOWN IS31FL3742A_PDR_8K_OHM\n#define IS31FL3742A_CS_PULLUP IS31FL3742A_PUR_8K_OHM

Valid values for IS31FL3742A_SW_PULLDOWN are:

DefineResistance
IS31FL3742A_PDR_0_OHMNone
IS31FL3742A_PDR_0K5_OHM0.5 kΩ
IS31FL3742A_PDR_1K_OHM1 kΩ
IS31FL3742A_PDR_2K_OHM2 kΩ
IS31FL3742A_PDR_4K_OHM4 kΩ
IS31FL3742A_PDR_8K_OHM8 kΩ (default)
IS31FL3742A_PDR_16K_OHM16 kΩ
IS31FL3742A_PDR_32K_OHM32 kΩ

Valid values for IS31FL3742A_CS_PULLUP are:

DefineResistance
IS31FL3742A_PUR_0_OHMNone
IS31FL3742A_PUR_0K5_OHM0.5 kΩ
IS31FL3742A_PUR_1K_OHM1 kΩ
IS31FL3742A_PUR_2K_OHM2 kΩ
IS31FL3742A_PUR_4K_OHM4 kΩ
IS31FL3742A_PUR_8K_OHM8 kΩ (default)
IS31FL3742A_PUR_16K_OHM16 kΩ
IS31FL3742A_PUR_32K_OHM32 kΩ

Global Current Control

This setting controls the current sunk by the CSx pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your config.h:

c
#define IS31FL3742A_GLOBAL_CURRENT 0xFF

ARM/ChibiOS Configuration

Depending on the ChibiOS board configuration, you may need to enable and configure I²C at the keyboard level.

LED Mapping

In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:

c
const is31fl3742a_led_t PROGMEM g_is31fl3742a_leds[IS31FL3742A_LED_COUNT] = {\n/* Driver\n *   |  R         G         B */\n    {0, SW1_CS1,  SW1_CS2,  SW1_CS3},\n    // etc...\n};

In this example, the red, green and blue channels for the first LED index on driver 0 all have their anodes connected to the SW1 pin, and their cathodes on the CS1, CS2 and CS3 pins respectively.

For the single-color driver, the principle is the same, but there is only one channel:

c
const is31fl3742a_led_t PROGMEM g_is31fl3742a_leds[IS31FL3742A_LED_COUNT] = {\n/* Driver\n *   |  V */\n    {0, SW1_CS1},\n    // etc...\n};

These values correspond to the register indices as shown in the datasheet on page 12, figure 8.

API

struct is31fl3742a_led_t

Contains the PWM register addresses for a single RGB LED.

Members


void is31fl3742a_init(uint8_t index)

Initialize the LED driver. This function should be called first.

Arguments


void is31fl3742a_write_register(uint8_t index, uint8_t reg, uint8_t data)

Set the value of the given register.

Arguments


void is31fl3742a_select_page(uint8_t index, uint8_t page)

Change the current page for configuring the LED driver.

Arguments


void is31fl3742a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3742a_update_pwm_buffers() after you are finished.

Arguments


void is31fl3742a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

Set the color of all LEDs (RGB driver only).

Arguments


void is31fl3742a_set_value(int index, uint8_t value)

Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3742a_update_pwm_buffers() after you are finished.

Arguments


void is31fl3742a_set_value_all(uint8_t value)

Set the brightness of all LEDs (single-color driver only).

Arguments


void is31fl3742a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)

Configure the scaling registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3742a_update_scaling_registers() after you are finished.

Arguments


void is31fl3742a_set_scaling_register(uint8_t index, uint8_t value)

Configure the scaling register for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3742a_update_scaling_registers() after you are finished.

Arguments


void is31fl3742a_update_pwm_buffers(uint8_t index)

Flush the PWM values to the LED driver.

Arguments


void is31fl3742a_update_scaling_registers(uint8_t index)

Flush the scaling register values to the LED driver.

Arguments

', 99); diff --git a/assets/drivers_is31fl3742a.md.CKPjB5T1.lean.js b/assets/drivers_is31fl3742a.md.Cjvb_b-G.lean.js similarity index 91% rename from assets/drivers_is31fl3742a.md.CKPjB5T1.lean.js rename to assets/drivers_is31fl3742a.md.Cjvb_b-G.lean.js index 6b812d9ddd7..55683efc026 100644 --- a/assets/drivers_is31fl3742a.md.CKPjB5T1.lean.js +++ b/assets/drivers_is31fl3742a.md.Cjvb_b-G.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3742A Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3742a.md","filePath":"drivers/is31fl3742a.md"}'); const _sfc_main = { name: "drivers/is31fl3742a.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 99); diff --git a/assets/drivers_is31fl3743a.md.9TiNS_bm.js b/assets/drivers_is31fl3743a.md.C7TkCrlE.js similarity index 99% rename from assets/drivers_is31fl3743a.md.9TiNS_bm.js rename to assets/drivers_is31fl3743a.md.C7TkCrlE.js index 26b158135fc..a188f59bb6f 100644 --- a/assets/drivers_is31fl3743a.md.9TiNS_bm.js +++ b/assets/drivers_is31fl3743a.md.C7TkCrlE.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3743A Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3743a.md","filePath":"drivers/is31fl3743a.md"}'); const _sfc_main = { name: "drivers/is31fl3743a.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

IS31FL3743A Driver

I²C 18x11 LED matrix driver by Lumissil. Supports a maximum of four drivers, each controlling up to 198 single-color LEDs, or 66 RGB LEDs.

IS31FL3743A Datasheet

Usage

The IS31FL3743A driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3743a driver set, and you would use those APIs instead.

However, if you need to use the driver standalone, add this to your rules.mk:

make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3743a-mono.c # For single-color\nSRC += is31fl3743a.c # For RGB\nI2C_DRIVER_REQUIRED = yes

Basic Configuration

Add the following to your config.h:

DefineDefaultDescription
IS31FL3743A_SDB_PINNot definedThe GPIO pin connected to the drivers' shutdown pins
IS31FL3743A_I2C_TIMEOUT100The I²C timeout in milliseconds
IS31FL3743A_I2C_PERSISTENCE0The number of times to retry I²C transmissions
IS31FL3743A_I2C_ADDRESS_1Not definedThe I²C address of driver 0
IS31FL3743A_I2C_ADDRESS_2Not definedThe I²C address of driver 1
IS31FL3743A_I2C_ADDRESS_3Not definedThe I²C address of driver 2
IS31FL3743A_I2C_ADDRESS_4Not definedThe I²C address of driver 3
IS31FL3743A_SYNC_1IS31FL3743A_SYNC_NONEThe sync configuration for driver 0
IS31FL3743A_SYNC_2IS31FL3743A_SYNC_NONEThe sync configuration for driver 1
IS31FL3743A_SYNC_3IS31FL3743A_SYNC_NONEThe sync configuration for driver 2
IS31FL3743A_SYNC_4IS31FL3743A_SYNC_NONEThe sync configuration for driver 3
IS31FL3743A_CONFIGURATION0x01The value of the configuration register
IS31FL3743A_SW_PULLDOWNIS31FL3743A_PDR_2K_OHM_SW_OFFThe SWx pulldown resistor value
IS31FL3743A_CS_PULLUPIS31FL3743A_PUR_2K_OHM_CS_OFFThe CSx pullup resistor value
IS31FL3743A_GLOBAL_CURRENT0xFFThe global current control value

I²C Addressing

The IS31FL3743A has 16 possible 7-bit I²C addresses, depending on how the ADDR1 and ADDR2 pins are connected.

To configure this, set the IS31FL3743A_I2C_ADDRESS_n defines to one of the following in your config.h, where n denotes the driver index:

DefineValue
IS31FL3743A_I2C_ADDRESS_GND_GND0x20
IS31FL3743A_I2C_ADDRESS_GND_SCL0x21
IS31FL3743A_I2C_ADDRESS_GND_SDA0x22
IS31FL3743A_I2C_ADDRESS_GND_VCC0x23
IS31FL3743A_I2C_ADDRESS_SCL_GND0x24
IS31FL3743A_I2C_ADDRESS_SCL_SCL0x25
IS31FL3743A_I2C_ADDRESS_SCL_SDA0x26
IS31FL3743A_I2C_ADDRESS_SCL_VCC0x27
IS31FL3743A_I2C_ADDRESS_SDA_GND0x28
IS31FL3743A_I2C_ADDRESS_SDA_SCL0x29
IS31FL3743A_I2C_ADDRESS_SDA_SDA0x2A
IS31FL3743A_I2C_ADDRESS_SDA_VCC0x2B
IS31FL3743A_I2C_ADDRESS_VCC_GND0x2C
IS31FL3743A_I2C_ADDRESS_VCC_SCL0x2D
IS31FL3743A_I2C_ADDRESS_VCC_SDA0x2E
IS31FL3743A_I2C_ADDRESS_VCC_VCC0x2F

Multi-Driver Synchronization

Multiple IS31FL3743A drivers can be synchronized by connecting the SYNC pins together. One driver must be designated as the "master", and the others configured as "slave".

To do this, set the IS31FL3743A_SYNC_n defines accordingly in your config.h, where n denotes the driver index:

DefineValue
IS31FL3743A_SYNC_NONENo synchronization
IS31FL3743A_SYNC_MASTERDriver configured as master
IS31FL3743A_SYNC_SLAVEDriver configured as slave

De-Ghosting

These settings control the pulldown and pullup resistor values on the SWy and CSx pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 23) for more information on how and why this occurs.

To adjust the resistor values, add the following to your config.h:

c
#define IS31FL3743A_SW_PULLDOWN IS31FL3743A_PDR_2K_OHM_SW_OFF\n#define IS31FL3743A_CS_PULLUP IS31FL3743A_PUR_2K_OHM_CS_OFF

Valid values for IS31FL3743A_SW_PULLDOWN are:

DefineResistance
IS31FL3743A_PDR_0_OHMNone (default)
IS31FL3743A_PDR_0K5_OHM_SW_OFF0.5 kΩ in SWx off time
IS31FL3743A_PDR_1K_OHM_SW_OFF1 kΩ in SWx off time
IS31FL3743A_PDR_2K_OHM_SW_OFF2 kΩ in SWx off time (default)
IS31FL3743A_PDR_1K_OHM1 kΩ
IS31FL3743A_PDR_2K_OHM2 kΩ
IS31FL3743A_PDR_4K_OHM4 kΩ
IS31FL3743A_PDR_8K_OHM8 kΩ

Valid values for IS31FL3743A_CS_PULLUP are:

DefineResistance
IS31FL3743A_PUR_0_OHMNone (default)
IS31FL3743A_PUR_0K5_OHM_CS_OFF0.5 kΩ in CSy off time
IS31FL3743A_PUR_1K_OHM_CS_OFF1 kΩ in CSy off time
IS31FL3743A_PUR_2K_OHM_CS_OFF2 kΩ in CSy off time (default)
IS31FL3743A_PUR_1K_OHM1 kΩ
IS31FL3743A_PUR_2K_OHM2 kΩ
IS31FL3743A_PUR_4K_OHM4 kΩ
IS31FL3743A_PUR_8K_OHM8 kΩ

Global Current Control

This setting controls the current sunk by the CSy pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your config.h:

c
#define IS31FL3743A_GLOBAL_CURRENT 0xFF

ARM/ChibiOS Configuration

Depending on the ChibiOS board configuration, you may need to enable and configure I²C at the keyboard level.

LED Mapping

In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:

c
const is31fl3743a_led_t PROGMEM g_is31fl3743a_leds[IS31FL3743A_LED_COUNT] = {\n/* Driver\n *   |  R         G         B */\n    {0, SW1_CS1,  SW1_CS2,  SW1_CS3},\n    // etc...\n};

In this example, the red, green and blue channels for the first LED index on driver 0 all have their anodes connected to the SW1 pin, and their cathodes on the CS1, CS2 and CS3 pins respectively.

For the single-color driver, the principle is the same, but there is only one channel:

c
const is31fl3743a_led_t PROGMEM g_is31fl3743a_leds[IS31FL3743A_LED_COUNT] = {\n/* Driver\n *   |  V */\n    {0, SW1_CS1},\n    // etc...\n};

These values correspond to the register indices as shown in the datasheet on page 12, figure 8.

API

struct is31fl3743a_led_t

Contains the PWM register addresses for a single RGB LED.

Members


void is31fl3743a_init(uint8_t index)

Initialize the LED driver. This function should be called first.

Arguments


void is31fl3743a_write_register(uint8_t index, uint8_t reg, uint8_t data)

Set the value of the given register.

Arguments


void is31fl3743a_select_page(uint8_t index, uint8_t page)

Change the current page for configuring the LED driver.

Arguments


void is31fl3743a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3743a_update_pwm_buffers() after you are finished.

Arguments


void is31fl3743a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

Set the color of all LEDs (RGB driver only).

Arguments


void is31fl3743a_set_value(int index, uint8_t value)

Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3743a_update_pwm_buffers() after you are finished.

Arguments


void is31fl3743a_set_value_all(uint8_t value)

Set the brightness of all LEDs (single-color driver only).

Arguments


void is31fl3743a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)

Configure the scaling registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3743a_update_scaling_registers() after you are finished.

Arguments


void is31fl3743a_set_scaling_register(uint8_t index, uint8_t value)

Configure the scaling register for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3743a_update_scaling_registers() after you are finished.

Arguments


void is31fl3743a_update_pwm_buffers(uint8_t index)

Flush the PWM values to the LED driver.

Arguments


void is31fl3743a_update_scaling_registers(uint8_t index)

Flush the scaling register values to the LED driver.

Arguments

', 98); diff --git a/assets/drivers_is31fl3743a.md.9TiNS_bm.lean.js b/assets/drivers_is31fl3743a.md.C7TkCrlE.lean.js similarity index 91% rename from assets/drivers_is31fl3743a.md.9TiNS_bm.lean.js rename to assets/drivers_is31fl3743a.md.C7TkCrlE.lean.js index 7517ffa7083..436da4506a3 100644 --- a/assets/drivers_is31fl3743a.md.9TiNS_bm.lean.js +++ b/assets/drivers_is31fl3743a.md.C7TkCrlE.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3743A Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3743a.md","filePath":"drivers/is31fl3743a.md"}'); const _sfc_main = { name: "drivers/is31fl3743a.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 98); diff --git a/assets/drivers_is31fl3745.md.CpCpR0Np.js b/assets/drivers_is31fl3745.md.D5R_sxfC.js similarity index 99% rename from assets/drivers_is31fl3745.md.CpCpR0Np.js rename to assets/drivers_is31fl3745.md.D5R_sxfC.js index 4e5c1dbd162..cc5163acdcf 100644 --- a/assets/drivers_is31fl3745.md.CpCpR0Np.js +++ b/assets/drivers_is31fl3745.md.D5R_sxfC.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3745 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3745.md","filePath":"drivers/is31fl3745.md"}'); const _sfc_main = { name: "drivers/is31fl3745.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

IS31FL3745 Driver

I²C 18x8 LED matrix driver by Lumissil. Supports a maximum of four drivers, each controlling up to 144 single-color LEDs, or 48 RGB LEDs.

IS31FL3745 Datasheet

Usage

The IS31FL3745 driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3745 driver set, and you would use those APIs instead.

However, if you need to use the driver standalone, add this to your rules.mk:

make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3745-mono.c # For single-color\nSRC += is31fl3745.c # For RGB\nI2C_DRIVER_REQUIRED = yes

Basic Configuration

Add the following to your config.h:

DefineDefaultDescription
IS31FL3745_SDB_PINNot definedThe GPIO pin connected to the drivers' shutdown pins
IS31FL3745_I2C_TIMEOUT100The I²C timeout in milliseconds
IS31FL3745_I2C_PERSISTENCE0The number of times to retry I²C transmissions
IS31FL3745_I2C_ADDRESS_1Not definedThe I²C address of driver 0
IS31FL3745_I2C_ADDRESS_2Not definedThe I²C address of driver 1
IS31FL3745_I2C_ADDRESS_3Not definedThe I²C address of driver 2
IS31FL3745_I2C_ADDRESS_4Not definedThe I²C address of driver 3
IS31FL3745_SYNC_1IS31FL3745_SYNC_NONEThe sync configuration for driver 0
IS31FL3745_SYNC_2IS31FL3745_SYNC_NONEThe sync configuration for driver 1
IS31FL3745_SYNC_3IS31FL3745_SYNC_NONEThe sync configuration for driver 2
IS31FL3745_SYNC_4IS31FL3745_SYNC_NONEThe sync configuration for driver 3
IS31FL3745_CONFIGURATION0x31The value of the configuration register
IS31FL3745_SW_PULLDOWNIS31FL3745_PDR_2K_OHM_SW_OFFThe SWx pulldown resistor value
IS31FL3745_CS_PULLUPIS31FL3745_PUR_2K_OHM_CS_OFFThe CSx pullup resistor value
IS31FL3745_GLOBAL_CURRENT0xFFThe global current control value

I²C Addressing

The IS31FL3745 has 16 possible 7-bit I²C addresses, depending on how the ADDR1 and ADDR2 pins are connected.

To configure this, set the IS31FL3745_I2C_ADDRESS_n defines to one of the following in your config.h, where n denotes the driver index:

DefineValue
IS31FL3745_I2C_ADDRESS_GND_GND0x20
IS31FL3745_I2C_ADDRESS_GND_SCL0x21
IS31FL3745_I2C_ADDRESS_GND_SDA0x22
IS31FL3745_I2C_ADDRESS_GND_VCC0x23
IS31FL3745_I2C_ADDRESS_SCL_GND0x24
IS31FL3745_I2C_ADDRESS_SCL_SCL0x25
IS31FL3745_I2C_ADDRESS_SCL_SDA0x26
IS31FL3745_I2C_ADDRESS_SCL_VCC0x27
IS31FL3745_I2C_ADDRESS_SDA_GND0x28
IS31FL3745_I2C_ADDRESS_SDA_SCL0x29
IS31FL3745_I2C_ADDRESS_SDA_SDA0x2A
IS31FL3745_I2C_ADDRESS_SDA_VCC0x2B
IS31FL3745_I2C_ADDRESS_VCC_GND0x2C
IS31FL3745_I2C_ADDRESS_VCC_SCL0x2D
IS31FL3745_I2C_ADDRESS_VCC_SDA0x2E
IS31FL3745_I2C_ADDRESS_VCC_VCC0x2F

Multi-Driver Synchronization

Multiple IS31FL3745 drivers can be synchronized by connecting the SYNC pins together. One driver must be designated as the "master", and the others configured as "slave".

To do this, set the IS31FL3745_SYNC_n defines accordingly in your config.h, where n denotes the driver index:

DefineValue
IS31FL3745_SYNC_NONENo synchronization
IS31FL3745_SYNC_MASTERDriver configured as master
IS31FL3745_SYNC_SLAVEDriver configured as slave

De-Ghosting

These settings control the pulldown and pullup resistor values on the SWy and CSx pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 23) for more information on how and why this occurs.

To adjust the resistor values, add the following to your config.h:

c
#define IS31FL3745_SW_PULLDOWN IS31FL3745_PDR_2K_OHM_SW_OFF\n#define IS31FL3745_CS_PULLUP IS31FL3745_PUR_2K_OHM_CS_OFF

Valid values for IS31FL3745_SW_PULLDOWN are:

DefineResistance
IS31FL3745_PDR_0_OHMNone (default)
IS31FL3745_PDR_0K5_OHM_SW_OFF0.5 kΩ in SWx off time
IS31FL3745_PDR_1K_OHM_SW_OFF1 kΩ in SWx off time
IS31FL3745_PDR_2K_OHM_SW_OFF2 kΩ in SWx off time (default)
IS31FL3745_PDR_1K_OHM1 kΩ
IS31FL3745_PDR_2K_OHM2 kΩ
IS31FL3745_PDR_4K_OHM4 kΩ
IS31FL3745_PDR_8K_OHM8 kΩ

Valid values for IS31FL3745_CS_PULLUP are:

DefineResistance
IS31FL3745_PUR_0_OHMNone (default)
IS31FL3745_PUR_0K5_OHM_CS_OFF0.5 kΩ in CSy off time
IS31FL3745_PUR_1K_OHM_CS_OFF1 kΩ in CSy off time
IS31FL3745_PUR_2K_OHM_CS_OFF2 kΩ in CSy off time (default)
IS31FL3745_PUR_1K_OHM1 kΩ
IS31FL3745_PUR_2K_OHM2 kΩ
IS31FL3745_PUR_4K_OHM4 kΩ
IS31FL3745_PUR_8K_OHM8 kΩ

Global Current Control

This setting controls the current sunk by the CSy pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your config.h:

c
#define IS31FL3745_GLOBAL_CURRENT 0xFF

ARM/ChibiOS Configuration

Depending on the ChibiOS board configuration, you may need to enable and configure I²C at the keyboard level.

LED Mapping

In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:

c
const is31fl3745_led_t PROGMEM g_is31fl3745_leds[IS31FL3745_LED_COUNT] = {\n/* Driver\n *   |  R         G         B */\n    {0, SW1_CS1,  SW1_CS2,  SW1_CS3},\n    // etc...\n};

In this example, the red, green and blue channels for the first LED index on driver 0 all have their anodes connected to the SW1 pin, and their cathodes on the CS1, CS2 and CS3 pins respectively.

For the single-color driver, the principle is the same, but there is only one channel:

c
const is31fl3745_led_t PROGMEM g_is31fl3745_leds[IS31FL3745_LED_COUNT] = {\n/* Driver\n *   |  V */\n    {0, SW1_CS1},\n    // etc...\n};

These values correspond to the register indices as shown in the datasheet on page 12, figure 9.

API

struct is31fl3745_led_t

Contains the PWM register addresses for a single RGB LED.

Members


void is31fl3745_init(uint8_t index)

Initialize the LED driver. This function should be called first.

Arguments


void is31fl3745_write_register(uint8_t index, uint8_t reg, uint8_t data)

Set the value of the given register.

Arguments


void is31fl3745_select_page(uint8_t index, uint8_t page)

Change the current page for configuring the LED driver.

Arguments


void is31fl3745_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3745_update_pwm_buffers() after you are finished.

Arguments


void is31fl3745_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

Set the color of all LEDs (RGB driver only).

Arguments


void is31fl3745_set_value(int index, uint8_t value)

Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3745_update_pwm_buffers() after you are finished.

Arguments


void is31fl3745_set_value_all(uint8_t value)

Set the brightness of all LEDs (single-color driver only).

Arguments


void is31fl3745_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)

Configure the scaling registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3745_update_scaling_registers() after you are finished.

Arguments


void is31fl3745_set_scaling_register(uint8_t index, uint8_t value)

Configure the scaling register for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3745_update_scaling_registers() after you are finished.

Arguments


void is31fl3745_update_pwm_buffers(uint8_t index)

Flush the PWM values to the LED driver.

Arguments


void is31fl3745_update_scaling_registers(uint8_t index)

Flush the scaling register values to the LED driver.

Arguments

', 98); diff --git a/assets/drivers_is31fl3745.md.CpCpR0Np.lean.js b/assets/drivers_is31fl3745.md.D5R_sxfC.lean.js similarity index 91% rename from assets/drivers_is31fl3745.md.CpCpR0Np.lean.js rename to assets/drivers_is31fl3745.md.D5R_sxfC.lean.js index 7dcafec73c1..a502f0bd758 100644 --- a/assets/drivers_is31fl3745.md.CpCpR0Np.lean.js +++ b/assets/drivers_is31fl3745.md.D5R_sxfC.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3745 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3745.md","filePath":"drivers/is31fl3745.md"}'); const _sfc_main = { name: "drivers/is31fl3745.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 98); diff --git a/assets/drivers_is31fl3746a.md.BFczK5c-.js b/assets/drivers_is31fl3746a.md.BGP2PAJT.js similarity index 99% rename from assets/drivers_is31fl3746a.md.BFczK5c-.js rename to assets/drivers_is31fl3746a.md.BGP2PAJT.js index b8c1bf19fd4..96c2ef0c920 100644 --- a/assets/drivers_is31fl3746a.md.BFczK5c-.js +++ b/assets/drivers_is31fl3746a.md.BGP2PAJT.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3746A Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3746a.md","filePath":"drivers/is31fl3746a.md"}'); const _sfc_main = { name: "drivers/is31fl3746a.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

IS31FL3746A Driver

I²C 18x4 LED matrix driver by Lumissil. Supports a maximum of four drivers, each controlling up to 72 single-color LEDs, or 24 RGB LEDs.

IS31FL3746A Datasheet

Usage

The IS31FL3746A driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the is31fl3746a driver set, and you would use those APIs instead.

However, if you need to use the driver standalone, add this to your rules.mk:

make
COMMON_VPATH += $(DRIVER_PATH)/led/issi\nSRC += is31fl3746a-mono.c # For single-color\nSRC += is31fl3746a.c # For RGB\nI2C_DRIVER_REQUIRED = yes

Basic Configuration

Add the following to your config.h:

DefineDefaultDescription
IS31FL3746A_SDB_PINNot definedThe GPIO pin connected to the drivers' shutdown pins
IS31FL3746A_I2C_TIMEOUT100The I²C timeout in milliseconds
IS31FL3746A_I2C_PERSISTENCE0The number of times to retry I²C transmissions
IS31FL3746A_I2C_ADDRESS_1Not definedThe I²C address of driver 0
IS31FL3746A_I2C_ADDRESS_2Not definedThe I²C address of driver 1
IS31FL3746A_I2C_ADDRESS_3Not definedThe I²C address of driver 2
IS31FL3746A_I2C_ADDRESS_4Not definedThe I²C address of driver 3
IS31FL3746A_CONFIGURATION0x01The value of the configuration register
IS31FL3746A_PWM_FREQUENCYIS31FL3746A_PWM_FREQUENCY_29K_HZThe PWM frequency of the LEDs
IS31FL3746A_SW_PULLDOWNIS31FL3746A_PDR_2K_OHM_SW_OFFThe SWx pulldown resistor value
IS31FL3746A_CS_PULLUPIS31FL3746A_PUR_2K_OHM_CS_OFFThe CSx pullup resistor value
IS31FL3746A_GLOBAL_CURRENT0xFFThe global current control value

I²C Addressing

The IS31FL3746A has 16 possible 7-bit I²C addresses, depending on how the ADDR1 and ADDR2 pins are connected.

To configure this, set the IS31FL3746A_I2C_ADDRESS_n defines to one of the following in your config.h, where n denotes the driver index:

DefineValue
IS31FL3746A_I2C_ADDRESS_GND_GND0x60
IS31FL3746A_I2C_ADDRESS_GND_SCL0x61
IS31FL3746A_I2C_ADDRESS_GND_SDA0x62
IS31FL3746A_I2C_ADDRESS_GND_VCC0x63
IS31FL3746A_I2C_ADDRESS_SCL_GND0x64
IS31FL3746A_I2C_ADDRESS_SCL_SCL0x65
IS31FL3746A_I2C_ADDRESS_SCL_SDA0x66
IS31FL3746A_I2C_ADDRESS_SCL_VCC0x67
IS31FL3746A_I2C_ADDRESS_SDA_GND0x68
IS31FL3746A_I2C_ADDRESS_SDA_SCL0x69
IS31FL3746A_I2C_ADDRESS_SDA_SDA0x6A
IS31FL3746A_I2C_ADDRESS_SDA_VCC0x6B
IS31FL3746A_I2C_ADDRESS_VCC_GND0x6C
IS31FL3746A_I2C_ADDRESS_VCC_SCL0x6D
IS31FL3746A_I2C_ADDRESS_VCC_SDA0x6E
IS31FL3746A_I2C_ADDRESS_VCC_VCC0x6F

PWM Frequency

The PWM frequency can be adjusted by adding the following to your config.h:

c
#define IS31FL3746A_PWM_FREQUENCY IS31FL3746A_PWM_FREQUENCY_29K_HZ

Valid values are:

DefineFrequency
IS31FL3746A_PWM_FREQUENCY_29K_HZ29 kHz (default)
IS31FL3746A_PWM_FREQUENCY_14K5_HZ14.5 kHz
IS31FL3746A_PWM_FREQUENCY_7K25_HZ7.25 kHz
IS31FL3746A_PWM_FREQUENCY_3K63_HZ3.63 kHz
IS31FL3746A_PWM_FREQUENCY_1K81_HZ1.81 kHz
IS31FL3746A_PWM_FREQUENCY_906_HZ906 Hz
IS31FL3746A_PWM_FREQUENCY_453_HZ453 Hz

De-Ghosting

These settings control the pulldown and pullup resistor values on the SWy and CSx pins respectively, for the purposes of eliminating ghosting. Refer to the datasheet (p. 23) for more information on how and why this occurs.

To adjust the resistor values, add the following to your config.h:

c
#define IS31FL3746A_SW_PULLDOWN IS31FL3746A_PDR_2K_OHM_SW_OFF\n#define IS31FL3746A_CS_PULLUP IS31FL3746A_PUR_2K_OHM_CS_OFF

Valid values for IS31FL3746A_SW_PULLDOWN are:

DefineResistance
IS31FL3746A_PDR_0_OHMNone
IS31FL3746A_PDR_0K5_OHM_SW_OFF0.5 kΩ in SWx off time
IS31FL3746A_PDR_1K_OHM_SW_OFF1 kΩ in SWx off time
IS31FL3746A_PDR_2K_OHM_SW_OFF2 kΩ in SWx off time (default)
IS31FL3746A_PDR_1K_OHM1 kΩ
IS31FL3746A_PDR_2K_OHM2 kΩ
IS31FL3746A_PDR_4K_OHM4 kΩ
IS31FL3746A_PDR_8K_OHM8 kΩ

Valid values for IS31FL3746A_CS_PULLUP are:

DefineResistance
IS31FL3746A_PUR_0_OHMNone (default)
IS31FL3746A_PUR_0K5_OHM_CS_OFF0.5 kΩ in CSy off time
IS31FL3746A_PUR_1K_OHM_CS_OFF1 kΩ in CSy off time
IS31FL3746A_PUR_2K_OHM_CS_OFF2 kΩ in CSy off time (default)
IS31FL3746A_PUR_1K_OHM1 kΩ
IS31FL3746A_PUR_2K_OHM2 kΩ
IS31FL3746A_PUR_4K_OHM4 kΩ
IS31FL3746A_PUR_8K_OHM8 kΩ

Global Current Control

This setting controls the current sunk by the CSy pins, from 0 to 255. By default, the value is the maximum (255), but if you need to lower it, add the following to your config.h:

c
#define IS31FL3746A_GLOBAL_CURRENT 0xFF

ARM/ChibiOS Configuration

Depending on the ChibiOS board configuration, you may need to enable and configure I²C at the keyboard level.

LED Mapping

In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:

c
const is31fl3746a_led_t PROGMEM g_is31fl3746a_leds[IS31FL3746A_LED_COUNT] = {\n/* Driver\n *   |  R         G         B */\n    {0, SW1_CS1,  SW1_CS2,  SW1_CS3},\n    // etc...\n};

In this example, the red, green and blue channels for the first LED index on driver 0 all have their anodes connected to the SW1 pin, and their cathodes on the CS1, CS2 and CS3 pins respectively.

For the single-color driver, the principle is the same, but there is only one channel:

c
const is31fl3746a_led_t PROGMEM g_is31fl3746a_leds[IS31FL3746A_LED_COUNT] = {\n/* Driver\n *   |  V */\n    {0, SW1_CS1},\n    // etc...\n};

These values correspond to the register indices as shown in the datasheet on page 13, figure 8.

API

struct is31fl3746a_led_t

Contains the PWM register addresses for a single RGB LED.

Members


void is31fl3746a_init(uint8_t index)

Initialize the LED driver. This function should be called first.

Arguments


void is31fl3746a_write_register(uint8_t index, uint8_t reg, uint8_t data)

Set the value of the given register.

Arguments


void is31fl3746a_select_page(uint8_t index, uint8_t page)

Change the current page for configuring the LED driver.

Arguments


void is31fl3746a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3746a_update_pwm_buffers() after you are finished.

Arguments


void is31fl3746a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

Set the color of all LEDs (RGB driver only).

Arguments


void is31fl3746a_set_value(int index, uint8_t value)

Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3746a_update_pwm_buffers() after you are finished.

Arguments


void is31fl3746a_set_value_all(uint8_t value)

Set the brightness of all LEDs (single-color driver only).

Arguments


void is31fl3746a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)

Configure the scaling registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3746a_update_scaling_registers() after you are finished.

Arguments


void is31fl3746a_set_scaling_register(uint8_t index, uint8_t value)

Configure the scaling register for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3746a_update_scaling_registers() after you are finished.

Arguments


void is31fl3746a_update_pwm_buffers(uint8_t index)

Flush the PWM values to the LED driver.

Arguments


void is31fl3746a_update_scaling_registers(uint8_t index)

Flush the scaling register values to the LED driver.

Arguments

', 99); diff --git a/assets/drivers_is31fl3746a.md.BFczK5c-.lean.js b/assets/drivers_is31fl3746a.md.BGP2PAJT.lean.js similarity index 91% rename from assets/drivers_is31fl3746a.md.BFczK5c-.lean.js rename to assets/drivers_is31fl3746a.md.BGP2PAJT.lean.js index 5b4968e197f..7f0f389d608 100644 --- a/assets/drivers_is31fl3746a.md.BFczK5c-.lean.js +++ b/assets/drivers_is31fl3746a.md.BGP2PAJT.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"IS31FL3746A Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/is31fl3746a.md","filePath":"drivers/is31fl3746a.md"}'); const _sfc_main = { name: "drivers/is31fl3746a.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 99); diff --git a/assets/drivers_serial.md.CnlLG_H1.js b/assets/drivers_serial.md.CDjOJdNt.js similarity index 99% rename from assets/drivers_serial.md.CnlLG_H1.js rename to assets/drivers_serial.md.CDjOJdNt.js index 826f83593c0..558b34e8e63 100644 --- a/assets/drivers_serial.md.CnlLG_H1.js +++ b/assets/drivers_serial.md.CDjOJdNt.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse(`{"title":"'serial' Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/serial.md","filePath":"drivers/serial.md"}`); const _sfc_main = { name: "drivers/serial.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

'serial' Driver

The Serial driver powers the Split Keyboard feature. Several implementations are available that cater to the platform and capabilities of MCU in use. Note that none of the drivers support split keyboards with more than two halves.

DriverAVRARMConnection between halves
Bitbang✔️✔️Single wire communication. One wire is used for reception and transmission.
USART Half-duplex✔️Efficient single wire communication. One wire is used for reception and transmission.
USART Full-duplex✔️Efficient two wire communication. Two distinct wires are used for reception and transmission.

TIP

Serial in this context should be read as sending information one bit at a time, rather than implementing UART/USART/RS485/RS232 standards.


Bitbang

This is the Default driver, absence of configuration assumes this driver. It works by bit banging a GPIO pin using the CPU. It is therefore not as efficient as a dedicated hardware peripheral, which the Half-duplex and Full-duplex drivers use.

WARNING

On ARM platforms the bitbang driver causes connection issues when using it together with the bitbang WS2812 driver. Choosing alternate drivers for both serial and WS2812 (instead of bitbang) is strongly recommended.

Pin configuration

  LEFT                      RIGHT\n+-------+      SERIAL     +-------+\n|   SSP |-----------------| SSP   |\n|       |       VDD       |       |\n|       |-----------------|       |\n|       |       GND       |       |\n|       |-----------------|       |\n+-------+                 +-------+

One GPIO pin is needed for the bitbang driver, as only one wire is used for receiving and transmitting data. This pin is referred to as the SOFT_SERIAL_PIN (SSP) in the configuration. A TRS or USB cable provides enough conductors for this driver to function.

Setup

To use the bitbang driver follow these steps to activate it.

  1. Change the SERIAL_DRIVER to bitbang in your keyboards rules.mk file:
make
SERIAL_DRIVER = bitbang
  1. Configure the GPIO pin of your keyboard via the config.h file:
c
#define SOFT_SERIAL_PIN D0  // or D1, D2, D3, E6
  1. On ARM platforms you must turn on ChibiOS PAL_USE_CALLBACKS feature:

USART Half-duplex

Targeting ARM boards based on ChibiOS, where communication is offloaded to a USART hardware device that supports Half-duplex operation. The advantages over bitbanging are fast, accurate timings and reduced CPU usage. Therefore it is advised to choose Half-duplex over Bitbang if MCU is capable of utilising Half-duplex, and Full-duplex can't be used instead (e.g. lack of available GPIO pins, or imcompatible PCB design).

Pin configuration

  LEFT                      RIGHT  \n+-------+  |           |  +-------+\n|       |  R           R  |       |\n|       |  |   SERIAL  |  |       |\n|    TX |-----------------| TX    |\n|       |       VDD       |       |\n|       |-----------------|       |\n|       |       GND       |       |\n|       |-----------------|       |\n+-------+                 +-------+

Only one GPIO pin is needed for the Half-duplex driver, as only one wire is used for receiving and transmitting data. This pin is referred to as the SERIAL_USART_TX_PIN in the configuration. Ensure that the pin chosen for split communication can operate as the TX pin of the contoller's USART peripheral. A TRS or USB cable provides enough conductors for this driver to function. As the split connection is configured to operate in open-drain mode, an external pull-up resistor is needed to keep the line high. Resistor values of 1.5kΩ to 8.2kΩ are known to work.

WARNING

Note: A pull-up resistor isn't required for RP2040 controllers configured with PIO subsystem.

Setup

To use the Half-duplex driver follow these steps to activate it. If you target the Raspberry Pi RP2040 PIO implementation, start at step 2.

  1. Change the SERIAL_DRIVER to usart in your keyboards rules.mk file:
make
SERIAL_DRIVER = usart

Skip to step 3.

  1. (RP2040 + PIO only!) Change the SERIAL_DRIVER to vendor in your keyboards rules.mk file:
make
SERIAL_DRIVER = vendor
  1. Configure the hardware of your keyboard via the config.h file:
c
#define SERIAL_USART_TX_PIN B6     // The GPIO pin that is used split communication.

For STM32 MCUs several GPIO configuration options can be changed as well. See the section "Alternate Functions for selected STM32 MCUs".

c
#define USART1_REMAP               // Remap USART TX and RX pins on STM32F103 MCUs, see table below.\n#define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
  1. Decide either for SERIAL, SIO, or PIO subsystem. See section "Choosing a driver subsystem".

USART Full-duplex

Targeting ARM boards based on ChibiOS where communication is offloaded to an USART hardware device. The advantages over bitbanging are fast, accurate timings and reduced CPU usage; therefore it is advised to choose this driver over all others where possible. Due to its internal design Full-duplex is slightly more efficient than the Half-duplex driver, but Full-duplex should be primarily chosen if Half-duplex operation is not supported by the controller's USART peripheral.

Pin configuration

  LEFT                      RIGHT\n+-------+                 +-------+\n|       |      SERIAL     |       |\n|    TX |-----------------| RX    |\n|       |      SERIAL     |       |\n|    RX |-----------------| TX    |\n|       |       VDD       |       |\n|       |-----------------|       |\n|       |       GND       |       |\n|       |-----------------|       |\n+-------+                 +-------+

Two GPIO pins are needed for the Full-duplex driver, as two distinct wires are used for receiving and transmitting data. The pin transmitting data is the TX pin and refereed to as the SERIAL_USART_TX_PIN, the pin receiving data is the RX pin and refereed to as the SERIAL_USART_RX_PIN in this configuration. Please note that TX pin of the master half has to be connected with the RX pin of the slave half and the RX pin of the master half has to be connected with the TX pin of the slave half! Usually this pin swap has to be done outside of the MCU e.g. with cables or on the PCB. Some MCUs like the STM32F303 used on the Proton-C allow this pin swap directly inside the MCU. A TRRS or USB cable provides enough conductors for this driver to function.

To use this driver the USART peripherals TX and RX pins must be configured with the correct Alternate-functions. If you are using a Proton-C development board everything is already setup, same is true for STM32F103 MCUs. For MCUs which are using a modern flexible GPIO configuration you have to specify these by setting SERIAL_USART_TX_PAL_MODE and SERIAL_USART_RX_PAL_MODE. Refer to the corresponding datasheets of your MCU or find those settings in the section "Alternate Functions for selected STM32 MCUs".

Setup

To use the Full-duplex driver follow these steps to activate it. If you target the Raspberry Pi RP2040 PIO implementation, start at step 2

  1. Change the SERIAL_DRIVER to usart in your keyboards rules.mk file:
make
SERIAL_DRIVER = usart

Skip to step 3

  1. (RP2040 + PIO only!) Change the SERIAL_DRIVER to vendor in your keyboards rules.mk file:
make
SERIAL_DRIVER = vendor
  1. Configure the hardware of your keyboard via the config.h file:
c
#define SERIAL_USART_FULL_DUPLEX   // Enable full duplex operation mode.\n#define SERIAL_USART_TX_PIN B6     // USART TX pin\n#define SERIAL_USART_RX_PIN B7     // USART RX pin

For STM32 MCUs several GPIO configuration options, including the ability for TX to RX pin swapping, can be changed as well. See the section "Alternate Functions for selected STM32 MCUs".

c
#define SERIAL_USART_PIN_SWAP      // Swap TX and RX pins if keyboard is master halve. (Only available on some MCUs)\n#define USART1_REMAP               // Remap USART TX and RX pins on STM32F103 MCUs, see table below.\n#define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
  1. Decide either for SERIAL, SIO, or PIO subsystem. See section "Choosing a driver subsystem".

Choosing a driver subsystem

The SERIAL driver

The SERIAL Subsystem is supported for the majority of ChibiOS MCUs and should be used whenever supported. Follow these steps in order to activate it:

  1. In your keyboards halconf.h add:
c
#define HAL_USE_SERIAL TRUE
  1. In your keyboards mcuconf.h: activate the USART peripheral that is used on your MCU. The shown example is for an STM32 MCU, so this will not work on MCUs by other manufacturers. You can find the correct names in the mcuconf.h files of your MCU that ship with ChibiOS.

Just below #include_next <mcuconf.h> add:

c
#include_next <mcuconf.h>\n\n#undef STM32_SERIAL_USE_USARTn\n#define STM32_SERIAL_USE_USARTn TRUE

Where 'n' matches the peripheral number of your selected USART on the MCU.

  1. In you keyboards config.h: override the default USART SERIAL driver if you use a USART peripheral that does not belong to the default selected SD1 driver. For instance, if you selected STM32_SERIAL_USE_USART3 the matching driver would be SD3.
c
 #define SERIAL_USART_DRIVER SD3

The SIO driver

The SIO Subsystem was added to ChibiOS with the 21.11 release and is only supported on selected MCUs. It should only be chosen when the SERIAL subsystem is not supported by your MCU.

Follow these steps in order to activate it:

  1. In your keyboards halconf.h add:
c
#define HAL_USE_SIO TRUE
  1. In your keyboards mcuconf.h: activate the USART peripheral that is used on your MCU. The shown example is for an STM32 MCU, so this will not work on MCUs by other manufacturers. You can find the correct names in the mcuconf.h files of your MCU that ship with ChibiOS.

Just below #include_next <mcuconf.h> add:

c
#include_next <mcuconf.h>\n\n#undef STM32_SIO_USE_USARTn\n#define STM32_SIO_USE_USARTn TRUE

Where 'n' matches the peripheral number of your selected USART on the MCU.

  1. In the keyboard's config.h file: override the default USART SIO driver if you use a USART peripheral that does not belong to the default selected SIOD1 driver. For instance, if you selected STM32_SERIAL_USE_USART3 the matching driver would be SIOD3.
c
 #define SERIAL_USART_DRIVER SIOD3

The PIO driver

The PIO subsystem is a Raspberry Pi RP2040 specific implementation, using an integrated PIO peripheral and is therefore only available on this MCU. Because of the flexible nature of PIO peripherals, any GPIO pin can be used as a TX or RX pin. Half-duplex and Full-duplex operation modes are fully supported with this driver. Half-duplex uses the built-in pull-ups and GPIO manipulation of the RP2040 to drive the line high by default, thus an external pull-up resistor is not required.

Optionally, the PIO peripheral utilized for split communication can be changed with the following define in config.h:

c
#define SERIAL_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the Serial implementation uses the PIO0 peripheral

The Serial PIO program uses 2 state machines, 13 instructions and the complete interrupt handler of the PIO peripheral it is running on.


Advanced Configuration

There are several advanced configuration options that can be defined in your keyboards config.h file:

Baudrate

If you're having issues or need a higher baudrate with serial communication, you can change the baudrate which in turn controls the communication speed for serial. You want to lower the baudrate if you experience failed transactions.

c
#define SELECT_SOFT_SERIAL_SPEED {#}
SpeedBitbangHalf-duplex and Full-duplex
0189000 baud (experimental)460800 baud
1137000 baud (default)230400 baud (default)
275000 baud115200 baud
339000 baud57600 baud
426000 baud38400 baud
520000 baud19200 baud

Alternatively you can specify the baudrate directly by defining SERIAL_USART_SPEED.

Timeout

This is the default time window in milliseconds in which a successful communication has to complete. Usually you don't want to change this value. But you can do so anyways by defining an alternate one in your keyboards config.h file:

c
#define SERIAL_USART_TIMEOUT 20    // USART driver timeout. default 20

Troubleshooting

If you're having issues withe serial communication, you can enable debug messages that will give you insights which part of the communication failed. The enable these messages add to your keyboards config.h file:

c
#define SERIAL_DEBUG

TIP

The messages will be printed out to the CONSOLE output. For additional information, refer to Debugging/Troubleshooting QMK.

Alternate Functions for selected STM32 MCUs

Pins for USART Peripherals with

STM32F303 / Proton-C Datasheet

Pin Swap available: ✔️

PinFunctionMode
USART1
PA9TXAF7
PA10RXAF7
PB6TXAF7
PB7RXAF7
PC4TXAF7
PC5RXAF7
PE0TXAF7
PE1RXAF7
USART2
PA2TXAF7
PA3RXAF7
PA14TXAF7
PA15RXAF7
PB3TXAF7
PB4RXAF7
PD5TXAF7
PD6RXAF7
USART3
PB10TXAF7
PB11RXAF7
PC10TXAF7
PC11RXAF7
PD8TXAF7
PD9RXAF7

STM32F072 Datasheet

Pin Swap available: ✔️

PinFunctionMode
USART1
PA9TXAF1
PA10RXAF1
PB6TXAF0
PB7RXAF0
USART2
PA2TXAF1
PA3RXAF1
PA14TXAF1
PA15RXAF1
USART3
PB10TXAF4
PB11RXAF4
PC4TXAF1
PC5RXAF1
PC10TXAF1
PC11RXAF1
PD8TXAF0
PD9RXAF0
USART4
PA0TXAF4
PA1RXAF4

STM32F103 Medium Density (C8-CB) Datasheet

Pin Swap available: N/A

TX Pin is always Alternate Function Push-Pull, RX Pin is always regular input pin for any USART peripheral. For STM32F103 no additional Alternate Function configuration is necessary. QMK is already configured.

Pin remapping:

The pins of USART Peripherals use default Pins that can be remapped to use other pins using the AFIO registers. Default pins are marked bold. Add the appropriate defines to your config.h file.

PinFunctionModeUSART_REMAP
USART1
PA9TXAFPP
PA10RXIN
PB6TXAFPPUSART1_REMAP
PB7RXINUSART1_REMAP
USART2
PA2TXAFPP
PA3RXIN
PD5TXAFPPUSART2_REMAP
PD6RXINUSART2_REMAP
USART3
PB10TXAFPP
PB11RXIN
PC10TXAFPPUSART3_PARTIALREMAP
PC11RXINUSART3_PARTIALREMAP
PD8TXAFPPUSART3_FULLREMAP
PD9RXINUSART3_FULLREMAP
', 115); diff --git a/assets/drivers_serial.md.CnlLG_H1.lean.js b/assets/drivers_serial.md.CDjOJdNt.lean.js similarity index 91% rename from assets/drivers_serial.md.CnlLG_H1.lean.js rename to assets/drivers_serial.md.CDjOJdNt.lean.js index 3704de79d3e..301cf91a5dc 100644 --- a/assets/drivers_serial.md.CnlLG_H1.lean.js +++ b/assets/drivers_serial.md.CDjOJdNt.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse(`{"title":"'serial' Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/serial.md","filePath":"drivers/serial.md"}`); const _sfc_main = { name: "drivers/serial.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 115); diff --git a/assets/drivers_snled27351.md.Cq725B0_.js b/assets/drivers_snled27351.md.C9JHnKgK.js similarity index 99% rename from assets/drivers_snled27351.md.Cq725B0_.js rename to assets/drivers_snled27351.md.C9JHnKgK.js index 6b519f31da0..087746c4e82 100644 --- a/assets/drivers_snled27351.md.Cq725B0_.js +++ b/assets/drivers_snled27351.md.C9JHnKgK.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"SNLED27351 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/snled27351.md","filePath":"drivers/snled27351.md"}'); const _sfc_main = { name: "drivers/snled27351.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

SNLED27351 Driver

I²C 16x12 LED matrix driver by Sonix. Supports a maximum of four drivers, each controlling up to 192 single-color LEDs, or 64 RGB LEDs.

A slightly modified version of this IC is also known as "CKLED2001".

SNLED27351 Datasheet

Usage

The SNLED27351 driver code is automatically included if you are using the LED Matrix or RGB Matrix feature with the snled27351 driver set, and you would use those APIs instead.

However, if you need to use the driver standalone, add this to your rules.mk:

make
COMMON_VPATH += $(DRIVER_PATH)/led\nSRC += snled27351-mono.c # For single-color\nSRC += snled27351.c # For RGB\nI2C_DRIVER_REQUIRED = yes

Basic Configuration

Add the following to your config.h:

DefineDefaultDescription
SNLED27351_SDB_PINNot definedThe GPIO pin connected to the drivers' shutdown pins
SNLED27351_I2C_TIMEOUT100The I²C timeout in milliseconds
SNLED27351_I2C_PERSISTENCE0The number of times to retry I²C transmissions
SNLED27351_I2C_ADDRESS_1Not definedThe I²C address of driver 0
SNLED27351_I2C_ADDRESS_2Not definedThe I²C address of driver 1
SNLED27351_I2C_ADDRESS_3Not definedThe I²C address of driver 2
SNLED27351_I2C_ADDRESS_4Not definedThe I²C address of driver 3

I²C Addressing

The SNLED27351 has four possible 7-bit I²C addresses, depending on how the ADDR pin is connected.

To configure this, set the SNLED27351_I2C_ADDRESS_n defines to one of the following in your config.h, where n denotes the driver index:

DefineValue
SNLED27351_I2C_ADDRESS_GND0x74
SNLED27351_I2C_ADDRESS_SCL0x75
SNLED27351_I2C_ADDRESS_SDA0x76
SNLED27351_I2C_ADDRESS_VDDIO0x77

ARM/ChibiOS Configuration

Depending on the ChibiOS board configuration, you may need to enable and configure I²C at the keyboard level.

LED Mapping

In order to use this driver, each output must be mapped to an LED index, by adding the following to your <keyboardname>.c:

c
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {\n/* Driver\n *   |  R         G         B */\n    {0, CB1_CA1,  CB1_CA2,  CB1_CA3},\n    // etc...\n};

In this example, the red, green and blue channels for the first LED index on driver 0 all have their cathodes connected to the CB1 pin, and their anodes on the CA1, CA2 and CA3 pins respectively.

For the single-color driver, the principle is the same, but there is only one channel:

c
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {\n/* Driver\n *   |  V */\n    {0, CB1_CA1},\n    // etc...\n};

These values correspond to the register indices as shown in the datasheet on page 13.

API

struct snled27351_led_t

Contains the PWM register addresses for a single RGB LED.

Members


void snled27351_init(uint8_t index)

Initialize the LED driver. This function should be called first.

Arguments


void snled27351_write_register(uint8_t index, uint8_t reg, uint8_t data)

Set the value of the given register.

Arguments


void snled27351_select_page(uint8_t index, uint8_t page)

Change the current page for configuring the LED driver.

Arguments


void snled27351_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call snled27351_update_pwm_buffers() after you are finished.

Arguments


void snled27351_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

Set the color of all LEDs (RGB driver only).

Arguments


void snled27351_set_value(int index, uint8_t value)

Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call snled27351_update_pwm_buffers() after you are finished.

Arguments


void snled27351_set_value_all(uint8_t value)

Set the brightness of all LEDs (single-color driver only).

Arguments


void snled27351_set_led_control_register(uint8_t index, bool red, bool green, bool blue)

Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call snled27351_update_led_control_registers() after you are finished.

Arguments


void snled27351_set_led_control_register(uint8_t index, bool value)

Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call snled27351_update_led_control_registers() after you are finished.

Arguments


void snled27351_update_pwm_buffers(uint8_t index)

Flush the PWM values to the LED driver.

Arguments


void snled27351_update_led_control_registers(uint8_t index)

Flush the LED control register values to the LED driver.

Arguments

', 84); diff --git a/assets/drivers_snled27351.md.Cq725B0_.lean.js b/assets/drivers_snled27351.md.C9JHnKgK.lean.js similarity index 91% rename from assets/drivers_snled27351.md.Cq725B0_.lean.js rename to assets/drivers_snled27351.md.C9JHnKgK.lean.js index 3889981fb37..7bd342a46e1 100644 --- a/assets/drivers_snled27351.md.Cq725B0_.lean.js +++ b/assets/drivers_snled27351.md.C9JHnKgK.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"SNLED27351 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/snled27351.md","filePath":"drivers/snled27351.md"}'); const _sfc_main = { name: "drivers/snled27351.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 84); diff --git a/assets/drivers_spi.md.tJVeIT7e.js b/assets/drivers_spi.md.DoCZg1iV.js similarity index 99% rename from assets/drivers_spi.md.tJVeIT7e.js rename to assets/drivers_spi.md.DoCZg1iV.js index c6299e36696..344ed1be6ce 100644 --- a/assets/drivers_spi.md.tJVeIT7e.js +++ b/assets/drivers_spi.md.DoCZg1iV.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"SPI Master Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/spi.md","filePath":"drivers/spi.md"}'); const _sfc_main = { name: "drivers/spi.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

SPI Master Driver

The SPI Master drivers used in QMK have a set of common functions to allow portability between MCUs.

Usage

In most cases, the SPI Master driver code is automatically included if you are using a feature or driver which requires it, such as OLED.

However, if you need to use the driver standalone, add the following to your rules.mk:

make
SPI_DRIVER_REQUIRED = yes

You can then call the SPI API by including spi_master.h in your code.

AVR Configuration

No special setup is required - just connect the SS, SCK, MOSI and MISO pins of your SPI devices to the matching pins on the MCU:

MCUSSSCKMOSIMISO
ATmega16/32U2/4B0B1B2B3
AT90USB64/128/162B0B1B2B3
ATmega32AB4B7B5B6
ATmega328/PB2B5B3B4

You may use more than one slave select pin, not just the SS pin. This is useful when you have multiple devices connected and need to communicate with them individually. SPI_SS_PIN can be passed to spi_start() to refer to SS.

ChibiOS/ARM Configuration

You'll need to determine which pins can be used for SPI -- as an example, STM32 parts generally have multiple SPI peripherals, labeled SPI1, SPI2, SPI3 etc.

To enable SPI, modify your board's halconf.h to enable SPI:

c
#define HAL_USE_SPI TRUE\n#define SPI_USE_WAIT TRUE\n#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD

Then, modify your board's mcuconf.h to enable the peripheral you've chosen, for example:

c
#undef STM32_SPI_USE_SPI2\n#define STM32_SPI_USE_SPI2 TRUE

Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303.

config.h OverrideDescriptionDefault
SPI_DRIVERSPI peripheral to use - SPI1 -> SPID1, SPI2 -> SPID2 etc.SPID2
SPI_SCK_PINThe pin to use for SCKB13
SPI_SCK_PAL_MODEThe alternate function mode for SCK5
SPI_MOSI_PINThe pin to use for MOSIB15
SPI_MOSI_PAL_MODEThe alternate function mode for MOSI5
SPI_MISO_PINThe pin to use for MISOB14
SPI_MISO_PAL_MODEThe alternate function mode for MISO5

As per the AVR configuration, you may choose any other standard GPIO as a slave select pin, which should be supplied to spi_start().

If a complete SPI interface is not required, then the following can be done to disable certain SPI pins, so they don't occupy a GPIO unnecessarily:

API

void spi_init(void)

Initialize the SPI driver. This function must be called only once, before any of the below functions can be called.


bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor)

Start an SPI transaction.

Arguments

Return Value

false if the supplied parameters are invalid or the SPI peripheral is already in use, or true.


spi_status_t spi_write(uint8_t data)

Write a byte to the selected SPI device.

Arguments

Return Value

SPI_STATUS_TIMEOUT if the timeout period elapses, or SPI_STATUS_SUCCESS.


spi_status_t spi_read(void)

Read a byte from the selected SPI device.

Return Value

SPI_STATUS_TIMEOUT if the timeout period elapses, or the byte read from the device.


spi_status_t spi_transmit(const uint8_t *data, uint16_t length)

Send multiple bytes to the selected SPI device.

Arguments

Return Value

SPI_STATUS_TIMEOUT if the timeout period elapses, SPI_STATUS_ERROR if some other error occurs, otherwise SPI_STATUS_SUCCESS.


spi_status_t spi_receive(uint8_t *data, uint16_t length)

Receive multiple bytes from the selected SPI device.

Arguments

Return Value

SPI_STATUS_TIMEOUT if the timeout period elapses, SPI_STATUS_ERROR if some other error occurs, otherwise SPI_STATUS_SUCCESS.


void spi_stop(void)

End the current SPI transaction. This will deassert the slave select pin and reset the endianness, mode and divisor configured by spi_start().

', 61); diff --git a/assets/drivers_spi.md.tJVeIT7e.lean.js b/assets/drivers_spi.md.DoCZg1iV.lean.js similarity index 91% rename from assets/drivers_spi.md.tJVeIT7e.lean.js rename to assets/drivers_spi.md.DoCZg1iV.lean.js index 8d50721ae7e..8fd979909ee 100644 --- a/assets/drivers_spi.md.tJVeIT7e.lean.js +++ b/assets/drivers_spi.md.DoCZg1iV.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"SPI Master Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/spi.md","filePath":"drivers/spi.md"}'); const _sfc_main = { name: "drivers/spi.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 61); diff --git a/assets/drivers_uart.md.BNBs-m3h.js b/assets/drivers_uart.md.gh92qK6t.js similarity index 99% rename from assets/drivers_uart.md.BNBs-m3h.js rename to assets/drivers_uart.md.gh92qK6t.js index dd4dae5e3f4..d53bc4cb02b 100644 --- a/assets/drivers_uart.md.BNBs-m3h.js +++ b/assets/drivers_uart.md.gh92qK6t.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"UART Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/uart.md","filePath":"drivers/uart.md"}'); const _sfc_main = { name: "drivers/uart.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

UART Driver

The UART drivers used in QMK have a set of common functions to allow portability between MCUs.

Currently, this driver does not support enabling hardware flow control (the RTS and CTS pins) if available, but may do so in future.

Usage

In most cases, the UART driver code is automatically included if you are using a feature or driver which requires it.

However, if you need to use the driver standalone, add the following to your rules.mk:

make
UART_DRIVER_REQUIRED = yes

You can then call the UART API by including uart.h in your code.

AVR Configuration

No special setup is required - just connect the RX and TX pins of your UART device to the opposite pins on the MCU:

MCUTXRXCTSRTS
ATmega16/32U2D3D2D7D6
ATmega16/32U4D3D2D5B7
AT90USB64/128D3D2n/an/a
ATmega32AD1D0n/an/a
ATmega328/PD1D0n/an/a

ChibiOS/ARM Configuration

You'll need to determine which pins can be used for UART -- as an example, STM32 parts generally have multiple UART peripherals, labeled USART1, USART2, USART3 etc.

To enable UART, modify your board's mcuconf.h to enable the peripheral you've chosen, for example:

c
#undef STM32_SERIAL_USE_USART2\n#define STM32_SERIAL_USE_USART2 TRUE

Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303.

config.h overrideDescriptionDefault Value
#define UART_DRIVERUSART peripheral to use - USART1 -> SD1, USART2 -> SD2 etc.SD1
#define UART_TX_PINThe pin to use for TXA9
#define UART_TX_PAL_MODEThe alternate function mode for TX7
#define UART_RX_PINThe pin to use for RXA10
#define UART_RX_PAL_MODEThe alternate function mode for RX7
#define UART_CTS_PINThe pin to use for CTSA11
#define UART_CTS_PAL_MODEThe alternate function mode for CTS7
#define UART_RTS_PINThe pin to use for RTSA12
#define UART_RTS_PAL_MODEThe alternate function mode for RTS7

API

void uart_init(uint32_t baud)

Initialize the UART driver. This function must be called only once, before any of the below functions can be called.

Arguments


void uart_write(uint8_t data)

Transmit a single byte.

Arguments


uint8_t uart_read(void)

Receive a single byte.

Return Value

The byte read from the receive buffer. This function will block if the buffer is empty (ie. no data to read).


void uart_transmit(const uint8_t *data, uint16_t length)

Transmit multiple bytes.

Arguments


void uart_receive(char *data, uint16_t length)

Receive multiple bytes.

Arguments


bool uart_available(void)

Return whether the receive buffer contains data. Call this function to determine if uart_read() will return data immediately.

Return Value

true if the receive buffer length is non-zero.

', 47); diff --git a/assets/drivers_uart.md.BNBs-m3h.lean.js b/assets/drivers_uart.md.gh92qK6t.lean.js similarity index 90% rename from assets/drivers_uart.md.BNBs-m3h.lean.js rename to assets/drivers_uart.md.gh92qK6t.lean.js index 626b1bc5e71..7b86adc6e4f 100644 --- a/assets/drivers_uart.md.BNBs-m3h.lean.js +++ b/assets/drivers_uart.md.gh92qK6t.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"UART Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/uart.md","filePath":"drivers/uart.md"}'); const _sfc_main = { name: "drivers/uart.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 47); diff --git a/assets/drivers_ws2812.md.D9E3Wb-Y.js b/assets/drivers_ws2812.md.C97W5Kwr.js similarity index 99% rename from assets/drivers_ws2812.md.D9E3Wb-Y.js rename to assets/drivers_ws2812.md.C97W5Kwr.js index 13ac1f7cca8..a7e609db91e 100644 --- a/assets/drivers_ws2812.md.D9E3Wb-Y.js +++ b/assets/drivers_ws2812.md.C97W5Kwr.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"WS2812 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/ws2812.md","filePath":"drivers/ws2812.md"}'); const _sfc_main = { name: "drivers/ws2812.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

WS2812 Driver

This driver provides support for WorldSemi addressable RGB(W) LEDs, and compatible equivalents:

These LEDs are often called "addressable" because instead of using a wire per color (and per LED), each LED contains a small microchip that understands a special protocol sent over a single wire. The LEDs can be chained together, and the remaining data is passed on to the next. In this way, you can easily control the color of many LEDs using a single GPIO.

Usage

In most cases, the WS2812 driver code is automatically included if you are using either the RGBLight or RGB Matrix feature with the ws2812 driver set, and you would use those APIs instead.

However, if you need to use the driver standalone, add the following to your rules.mk:

make
WS2812_DRIVER_REQUIRED = yes

You can then call the WS2812 API by including ws2812.h in your code.

Basic Configuration

Add the following to your config.h:

DefineDefaultDescription
WS2812_DI_PINNot definedThe GPIO pin connected to the DI pin of the first LED in the chain
WS2812_LED_COUNTNot definedNumber of LEDs in the WS2812 chain - automatically set when RGBLight or RGB Matrix is configured
WS2812_TIMING1250The total length of a bit (TH+TL) in nanoseconds
WS2812_T1H900The length of a "1" bit's high phase in nanoseconds
WS2812_T0H350The length of a "0" bit's high phase in nanoseconds
WS2812_TRST_US280The length of the reset phase in microseconds
WS2812_BYTE_ORDERWS2812_BYTE_ORDER_GRBThe byte order of the RGB data
WS2812_RGBWNot definedEnables RGBW support (except i2c driver)

Timing Adjustment

The WS2812 LED communication protocol works by encoding a "1" bit with a long high pulse (T1H), and a "0" bit with a shorter pulse (T0H). The total cycle length of a bit is the same. The "reset" pulse (TRST) latches the sent RGB data to all of the LEDs and denotes a completed "frame".

Some WS2812 variants have slightly different timing parameter requirements, which can be accounted for if necessary using the above #defines in your config.h.

Byte Order

Some WS2812 variants may have their color components in a different physical or logical order. For example, the WS2812B-2020 has physically swapped red and green LEDs, which causes the wrong color to be displayed, because the default order of the bytes sent over the wire is defined as GRB. If you find your LED colors are consistently swapped, you may need to change the byte order by adding the following to your config.h:

c
#define WS2812_BYTE_ORDER WS2812_BYTE_ORDER_GRB

Where the byte order may be one of:

Byte OrderKnown Devices
GRBMost WS2812s, SK6812, SK6805
RGBWS2812B-2020
BGRTM1812

RGBW Support

Rendering the color white with RGB LEDs is typically inconsistent due to inherent variations between each individual LED die. However, some WS2812 variants (such as SK6812RGBW) also possess a white LED along with the red, green, and blue channels, which allows for a more accurate white to be displayed.

QMK can automatically convert the RGB data to be sent to the LEDs to mix in the white channel:

w = min(r, g, b)\nr -= w\ng -= w\nb -= w

Thus, an RGB triplet of 255,255,255 will simply turn on the white LED fully (0,0,0,255).

To enable RGBW conversion, add the following to your config.h:

c
#define WS2812_RGBW

Driver Configuration

Driver selection can be configured in rules.mk as WS2812_DRIVER, or in info.json as ws2812.driver. Valid values are bitbang (default), i2c, spi, pwm, vendor, or custom. See below for information on individual drivers.

Bitbang Driver

This is the default WS2812 driver. It operates by "bit-banging" ie. directly toggling the GPIO.

Please note that on AVR devices, due to the tight timing requirements longer chains and/or heavy CPU loads may cause visible lag. Unfortunately this driver is usually the only option for AVR.

make
WS2812_DRIVER = bitbang

I2C Driver

A specialized driver mainly used for PS2AVRGB (Bootmapper Client) boards, which possess an ATtiny85 that handles the WS2812 LEDs.

make
WS2812_DRIVER = i2c

The following #defines apply only to the i2c driver:

DefineDefaultDescription
WS2812_I2C_ADDRESS0xB0The I2C address of the ATtiny85.
WS2812_I2C_TIMEOUT100The I2C timeout, in milliseconds.

PIO Driver

This driver is RP2040-only, and leverages the onboard PIO (programmable I/O) system and DMA to offload processing from the CPU.

The WS2812 PIO program uses one state machine, six instructions and one DMA interrupt handler callback. Due to the implementation the time resolution for this driver is 50 ns - any value not specified in this interval will be rounded to the next matching interval.

make
WS2812_DRIVER = vendor

PWM Driver

This driver is ARM-only, and leverages the onboard PWM peripheral and DMA to offload processing from the CPU.

make
WS2812_DRIVER = pwm

SPI Driver

This driver is ARM-only, and leverages the onboard SPI peripheral and DMA to offload processing from the CPU. The DI pin must be connected to the MOSI pin on the MCU, and all other SPI pins must be left unused. This is also very dependent on your MCU's SPI peripheral clock speed, and may or may not be possible depending on the MCU selected.

make
WS2812_DRIVER = spi

ChibiOS/ARM Configuration

The following defines apply only to ARM devices:

DefineDefaultDescription
WS2812_T1L(WS2812_TIMING - WS2812_T1H)The length of a "1" bit's low phase in nanoseconds (bitbang and PIO drivers only)
WS2812_T0L(WS2812_TIMING - WS2812_T0H)The length of a "0" bit's low phase in nanoseconds (bitbang and PIO drivers only)

Push-Pull and Open Drain

By default, the GPIO used for data transmission is configured as a push-pull output, meaning the pin is effectively always driven either to VCC or to ground.

For situations where the logic level voltage is lower than the power supply voltage, however, this can pose an issue. The solution is to configure the pin for open drain mode instead, and use a pullup resistor between the DI pin and VCC. In this mode, the MCU can only pull the GPIO low, or leave it floating. The pullup resistor is then responsible for pulling the line high, when the MCU is not driving the GPIO.

To configure the DI pin for open drain configuration, add the following to your config.h:

c
#define WS2812_EXTERNAL_PULLUP

SPI Driver

Depending on the ChibiOS board configuration, you may need to enable SPI at the keyboard level. For STM32, this would look like:

halconf.h:

c
#define HAL_USE_SPI TRUE

mcuconf.h:

c
#undef STM32_SPI_USE_SPI1\n#define STM32_SPI_USE_SPI1 TRUE

The following defines apply only to the spi driver:

DefineDefaultDescription
WS2812_SPI_DRIVERSPID1The SPI driver to use
WS2812_SPI_MOSI_PAL_MODE5The MOSI pin alternative function to use
WS2812_SPI_SCK_PINNot definedThe SCK pin - required for F072 and possibly others
WS2812_SPI_SCK_PAL_MODE5The SCK pin alternative function to use - required for F072 and possibly others
WS2812_SPI_DIVISOR16The divisor used to adjust the baudrate
WS2812_SPI_USE_CIRCULAR_BUFFERNot definedEnable a circular buffer for improved rendering

Setting the Baudrate

To adjust the SPI baudrate, you will need to derive the target baudrate from the clock tree provided by STM32CubeMX, and add the following to your config.h:

c
#define WS2812_SPI_DIVISOR 16

Only divisors of 2, 4, 8, 16, 32, 64, 128 and 256 are supported on STM32 devices. Other MCUs may have similar constraints -- check the reference manual for your respective MCU for specifics.

Circular Buffer

A circular buffer can be enabled if you experience flickering.

To enable the circular buffer, add the following to your config.h:

c
#define WS2812_SPI_USE_CIRCULAR_BUFFER

PIO Driver

The following #defines apply only to the PIO driver:

DefineDefaultDescription
WS2812_PIO_USE_PIO1Not definedUse the PIO1 peripheral instead of PIO0

PWM Driver

Depending on the ChibiOS board configuration, you may need to enable PWM at the keyboard level. For STM32, this would look like:

halconf.h:

c
#define HAL_USE_PWM TRUE

mcuconf.h:

c
#undef STM32_PWM_USE_TIM2\n#define STM32_PWM_USE_TIM2 TRUE

The following #defines apply only to the pwm driver:

DefineDefaultDescription
WS2812_PWM_DRIVERPWMD2The PWM driver to use
WS2812_PWM_CHANNEL2The PWM channel to use
WS2812_PWM_PAL_MODE2The pin alternative function to use
WS2812_PWM_DMA_STREAMSTM32_DMA1_STREAM2The DMA Stream for TIMx_UP
WS2812_PWM_DMA_CHANNEL2The DMA Channel for TIMx_UP
WS2812_PWM_DMAMUX_IDNot definedThe DMAMUX configuration for TIMx_UP - only required if your MCU has a DMAMUX peripheral
WS2812_PWM_COMPLEMENTARY_OUTPUTNot definedWhether the PWM output is complementary (TIMx_CHyN)

TIP

Using a complementary timer output (TIMx_CHyN) is possible only for advanced-control timers (1, 8 and 20 on STM32), and the STM32_PWM_USE_ADVANCED option in mcuconf.h must be set to TRUE. Complementary outputs of general-purpose timers are not supported due to ChibiOS limitations.

API

void ws2812_setleds(rgb_led_t *ledarray, uint16_t number_of_leds)

Send RGB data to the WS2812 LED chain.

Arguments

', 89); diff --git a/assets/drivers_ws2812.md.D9E3Wb-Y.lean.js b/assets/drivers_ws2812.md.C97W5Kwr.lean.js similarity index 91% rename from assets/drivers_ws2812.md.D9E3Wb-Y.lean.js rename to assets/drivers_ws2812.md.C97W5Kwr.lean.js index 0bc8f32744d..5749887cfe8 100644 --- a/assets/drivers_ws2812.md.D9E3Wb-Y.lean.js +++ b/assets/drivers_ws2812.md.C97W5Kwr.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"WS2812 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"drivers/ws2812.md","filePath":"drivers/ws2812.md"}'); const _sfc_main = { name: "drivers/ws2812.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 89); diff --git a/assets/easy_maker.md.DAfbIK4w.js b/assets/easy_maker.md.CW6jlMO-.js similarity index 98% rename from assets/easy_maker.md.DAfbIK4w.js rename to assets/easy_maker.md.CW6jlMO-.js index 483d078df5d..cbe1e4a9a2c 100644 --- a/assets/easy_maker.md.DAfbIK4w.js +++ b/assets/easy_maker.md.CW6jlMO-.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Easy Maker - Build One-Off Projects In Configurator","description":"","frontmatter":{},"headers":[],"relativePath":"easy_maker.md","filePath":"easy_maker.md"}'); const _sfc_main = { name: "easy_maker.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Easy Maker - Build One-Off Projects In Configurator

Have you ever needed an easy way to program a controller, such as a Proton C or Teensy 2.0, for a one-off project you're building? QMK has you covered with the Easy Maker. Now you can create a firmware in minutes using QMK Configurator.

There are different styles of Easy Maker available depending on your needs:

Quickstart

The easiest way to get started is with the Direct Pin boards. This will assign a single key to each pin and you can short that pin to ground to activate it. Select your MCU from the Keyboard dropdown here:

For more details see the Direct Pin section.

Direct Pin

As its name implies Direct Pin works by connecting one switch per pin. The other side of the switch should be connected to ground (VSS or GND.) You don't need any other components, your MCU has internal pull-up resistors so that the switch sensing can work.

Here is a schematic showing how we connect a single button to pin A3 on a ProMicro:

Schematic diagram showing a ProMicro with a wire coming out of A3, connecting to the left side of a switch. Another wire comes out of the right side of the switch to connect to the Ground Plane.

Once you have wired your switches you can assign keycodes to each pin and build a firmware by selecting the MCU you are using from the Keyboard dropdown. Use this link to show only Easy Maker Direct Pin:

', 14); diff --git a/assets/easy_maker.md.DAfbIK4w.lean.js b/assets/easy_maker.md.CW6jlMO-.lean.js similarity index 91% rename from assets/easy_maker.md.DAfbIK4w.lean.js rename to assets/easy_maker.md.CW6jlMO-.lean.js index a651629a0b8..c877ce55d8c 100644 --- a/assets/easy_maker.md.DAfbIK4w.lean.js +++ b/assets/easy_maker.md.CW6jlMO-.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Easy Maker - Build One-Off Projects In Configurator","description":"","frontmatter":{},"headers":[],"relativePath":"easy_maker.md","filePath":"easy_maker.md"}'); const _sfc_main = { name: "easy_maker.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 14); diff --git a/assets/faq_build.md.DL_WezA1.js b/assets/faq_build.md.DgVYb8Zh.js similarity index 99% rename from assets/faq_build.md.DL_WezA1.js rename to assets/faq_build.md.DgVYb8Zh.js index d2603f123de..bf3c6419abf 100644 --- a/assets/faq_build.md.DL_WezA1.js +++ b/assets/faq_build.md.DgVYb8Zh.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Frequently Asked Build Questions","description":"","frontmatter":{},"headers":[],"relativePath":"faq_build.md","filePath":"faq_build.md"}'); const _sfc_main = { name: "faq_build.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Frequently Asked Build Questions

This page covers questions about building QMK. If you haven't yet done so, you should read the Build Environment Setup and Make Instructions guides.

Can't Program on Linux

You will need proper permissions to operate a device. For Linux users, see the instructions regarding udev rules, below. If you have issues with udev, a work-around is to use the sudo command. If you are not familiar with this command, check its manual with man sudo or see this webpage.

An example of using sudo, when your controller is ATMega32u4:

$ sudo dfu-programmer atmega32u4 erase --force\n$ sudo dfu-programmer atmega32u4 flash your.hex\n$ sudo dfu-programmer atmega32u4 reset\n

or just:

$ sudo make <keyboard>:<keymap>:flash\n

Note that running make with sudo is generally not a good idea, and you should use one of the former methods, if possible.

Linux udev Rules

On Linux, you'll need proper privileges to communicate with the bootloader device. You can either use sudo when flashing firmware (not recommended), or place this file into /etc/udev/rules.d/.

Once added, run the following:

sudo udevadm control --reload-rules\nsudo udevadm trigger

Note: With older versions of ModemManager (< 1.12), filtering only works when not in strict mode. The following commands can update that setting:

printf '[Service]\\nExecStart=\\nExecStart=/usr/sbin/ModemManager --filter-policy=default' | sudo tee /etc/systemd/system/ModemManager.service.d/policy.conf\nsudo systemctl daemon-reload\nsudo systemctl restart ModemManager

Serial device is not detected in bootloader mode on Linux

Make sure your kernel has appropriate support for your device. If your device uses USB ACM, such as Pro Micro (Atmega32u4), make sure to include CONFIG_USB_ACM=y. Other devices may require USB_SERIAL and any of its sub options.

Unknown Device for DFU Bootloader

Issues encountered when flashing keyboards on Windows are most often due to having the wrong drivers installed for the bootloader, or none at all.

Re-running the QMK installation script (./util/qmk_install.sh from the qmk_firmware directory in MSYS2 or WSL) or reinstalling the QMK Toolbox may fix the issue. Alternatively, you can download and run the qmk_driver_installer package manually.

If that doesn't work, then you may need to download and run Zadig. See Bootloader Driver Installation with Zadig for more detailed information.

USB VID and PID

You can use any ID you want with editing config.h. Using any presumably unused ID will be no problem in fact except for very low chance of collision with other product.

Most boards in QMK use 0xFEED as the vendor ID. You should look through other keyboards to make sure you pick a unique Product ID.

Also see this. https://github.com/tmk/tmk_keyboard/issues/150

You can buy a really unique VID:PID here. I don't think you need this for personal use.

I just flashed my keyboard and it does nothing/keypresses don't register - it's also ARM (rev6 planck, clueboard 60, hs60v2, etc...) (Feb 2019)

Due to how EEPROM works on ARM based chips, saved settings may no longer be valid. This affects the default layers, and may, under certain circumstances we are still figuring out, make the keyboard unusable. Resetting the EEPROM will correct this.

Planck rev6 reset EEPROM can be used to force an eeprom reset. After flashing this image, flash your normal firmware again which should restore your keyboard to normal working order. Preonic rev3 reset EEPROM

If bootmagic is enabled in any form, you should be able to do this too (see Bootmagic docs and keyboard info for specifics on how to do this).

', 31); diff --git a/assets/faq_build.md.DL_WezA1.lean.js b/assets/faq_build.md.DgVYb8Zh.lean.js similarity index 91% rename from assets/faq_build.md.DL_WezA1.lean.js rename to assets/faq_build.md.DgVYb8Zh.lean.js index dfb08cef079..72e098b405e 100644 --- a/assets/faq_build.md.DL_WezA1.lean.js +++ b/assets/faq_build.md.DgVYb8Zh.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Frequently Asked Build Questions","description":"","frontmatter":{},"headers":[],"relativePath":"faq_build.md","filePath":"faq_build.md"}'); const _sfc_main = { name: "faq_build.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 31); diff --git a/assets/faq_debug.md.DuThValw.js b/assets/faq_debug.md.BDXERRoT.js similarity index 99% rename from assets/faq_debug.md.DuThValw.js rename to assets/faq_debug.md.BDXERRoT.js index 939188e3128..297b4091e12 100644 --- a/assets/faq_debug.md.DuThValw.js +++ b/assets/faq_debug.md.BDXERRoT.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Debugging FAQ","description":"","frontmatter":{},"headers":[],"relativePath":"faq_debug.md","filePath":"faq_debug.md"}'); const _sfc_main = { name: "faq_debug.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Debugging FAQ

This page details various common questions people have about troubleshooting their keyboards.

Debugging

Your keyboard will output debug information if you have CONSOLE_ENABLE = yes in your rules.mk. By default the output is very limited, but you can turn on debug mode to increase the amount of debug output. Use the DB_TOGG keycode in your keymap, use the Command feature to enable debug mode, or add the following code to your keymap.

c
void keyboard_post_init_user(void) {\n  // Customise these values to desired behaviour\n  debug_enable=true;\n  debug_matrix=true;\n  //debug_keyboard=true;\n  //debug_mouse=true;\n}

Debugging Tools

Various tools are available to debug your keyboard.

Debugging With QMK Toolbox

For compatible platforms, QMK Toolbox can be used to display debug messages from your keyboard.

Debugging with QMK CLI

Prefer a terminal based solution? The QMK CLI console command can be used to display debug messages from your keyboard.

Debugging With hid_listen

Something stand-alone? hid_listen, provided by PJRC, can also be used to display debug messages. Prebuilt binaries for Windows,Linux,and MacOS are available.

Sending Your Own Debug Messages

Sometimes it's useful to print debug messages from within your custom code. Doing so is pretty simple. Start by including print.h at the top of your file:

c
#include "print.h"

After that you can use a few different print functions:

Debug Examples

Below is a collection of real world debugging examples. For additional information, refer to Debugging/Troubleshooting QMK.

Which matrix position is this keypress?

When porting, or when attempting to diagnose pcb issues, it can be useful to know if a keypress is scanned correctly. To enable logging for this scenario, add the following code to your keymaps keymap.c

c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {\n  // If console is enabled, it will print the matrix position and status of each key pressed\n#ifdef CONSOLE_ENABLE\n    uprintf("KL: kc: 0x%04X, col: %2u, row: %2u, pressed: %u, time: %5u, int: %u, count: %u\\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count);\n#endif \n  return true;\n}

Example output

Waiting for device:.......\nListening:\nKL: kc: 169, col: 0, row: 0, pressed: 1, time: 15505, int: 0, count: 0\nKL: kc: 169, col: 0, row: 0, pressed: 0, time: 15510, int: 0, count: 0\nKL: kc: 174, col: 1, row: 0, pressed: 1, time: 15703, int: 0, count: 0\nKL: kc: 174, col: 1, row: 0, pressed: 0, time: 15843, int: 0, count: 0\nKL: kc: 172, col: 2, row: 0, pressed: 1, time: 16303, int: 0, count: 0\nKL: kc: 172, col: 2, row: 0, pressed: 0, time: 16411, int: 0, count: 0

How long did it take to scan for a keypress?

When testing performance issues, it can be useful to know the frequency at which the switch matrix is being scanned. To enable logging for this scenario, add the following code to your keymaps config.h

c
#define DEBUG_MATRIX_SCAN_RATE

Example output

  > matrix scan frequency: 315\n  > matrix scan frequency: 313\n  > matrix scan frequency: 316\n  > matrix scan frequency: 316\n  > matrix scan frequency: 316\n  > matrix scan frequency: 316

hid_listen Can't Recognize Device

When debug console of your device is not ready you will see like this:

Waiting for device:.........

Once the device is plugged in then hid_listen finds it you will get this message:

Waiting for new device:.........................\nListening:

If you can't get this 'Listening:' message try building with CONSOLE_ENABLE=yes in [Makefile]

You may need privileges to access the device an OS like Linux. Try sudo hid_listen.

On many Linux distros you can avoid having to run hid_listen as root by creating a file called /etc/udev/rules.d/70-hid-listen.rules with the following content:

SUBSYSTEM=="hidraw", ATTRS{idVendor}=="abcd", ATTRS{idProduct}=="def1", TAG+="uaccess", RUN{builtin}+="uaccess"

Replace abcd and def1 with your keyboard's vendor and product id, letters must be lowercase. The RUN{builtin}+="uaccess" part is only needed for older distros.

Can't Get Message on Console

Check:

', 43); diff --git a/assets/faq_debug.md.DuThValw.lean.js b/assets/faq_debug.md.BDXERRoT.lean.js similarity index 91% rename from assets/faq_debug.md.DuThValw.lean.js rename to assets/faq_debug.md.BDXERRoT.lean.js index 0f4c56a3e5f..63f2af2ca44 100644 --- a/assets/faq_debug.md.DuThValw.lean.js +++ b/assets/faq_debug.md.BDXERRoT.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Debugging FAQ","description":"","frontmatter":{},"headers":[],"relativePath":"faq_debug.md","filePath":"faq_debug.md"}'); const _sfc_main = { name: "faq_debug.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 43); diff --git a/assets/faq_general.md.BOlGsWSk.js b/assets/faq_general.md.BRXTvqDs.js similarity index 99% rename from assets/faq_general.md.BOlGsWSk.js rename to assets/faq_general.md.BRXTvqDs.js index 4fcecf30589..4befc424192 100644 --- a/assets/faq_general.md.BOlGsWSk.js +++ b/assets/faq_general.md.BRXTvqDs.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Frequently Asked Questions","description":"","frontmatter":{},"headers":[],"relativePath":"faq_general.md","filePath":"faq_general.md"}'); const _sfc_main = { name: "faq_general.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Frequently Asked Questions

What is QMK?

QMK, short for Quantum Mechanical Keyboard, is a group of people building tools for custom keyboards. We started with the QMK firmware, a heavily modified fork of TMK.

I don't know where to start!

If this is the case, then you should start with our Newbs Guide. There is a lot of great info there, and that should cover everything you need to get started.

If that's an issue, hop onto the QMK Configurator, as that will handle a majority of what you need there.

How can I flash the firmware I built?

First, head to the Compiling/Flashing FAQ Page. There is a good deal of info there, and you'll find a bunch of solutions to common issues there.

What if I have an issue that isn't covered here?

Okay, that's fine. Then please check the open issues in our GitHub to see if somebody is experiencing the same thing (make sure it's not just similar, but actually the same).

If you can't find anything, then please open a new issue!

What if I found a bug?

Then please open an issue, and if you know how to fix it, open up a Pull Request on GitHub with the fix.

But git and GitHub are intimidating!

Don't worry, we have some pretty nice Guidelines on how to start using git and GitHub to make things easier to develop.

Additionally, you can find additional git and GitHub related links here.

I have a Keyboard that I want to add support for

Awesome! Open up a Pull Request for it. We'll review the code, and merge it!

What if I want to brand it with QMK?

That's amazing! We would love to assist you with that!

In fact, we have a whole page dedicated to adding QMK Branding to your page and keyboard. This covers pretty much everything you need (knowledge and images) to officially support QMK.

If you have any questions about this, open an issue or head to Discord.

What Differences Are There Between QMK and TMK?

TMK was originally designed and implemented by Jun Wako. QMK started as Jack Humbert's fork of TMK for the Planck. After a while Jack's fork had diverged quite a bit from TMK, and in 2015 Jack decided to rename his fork to QMK.

From a technical standpoint QMK builds upon TMK by adding several new features. Most notably QMK has expanded the number of available keycodes and uses these to implement advanced features like S(), LCTL(), and MO(). You can see a complete list of these keycodes in Keycodes.

From a project and community management standpoint TMK maintains all the officially supported keyboards by himself, with a bit of community support. Separate community maintained forks exist or can be created for other keyboards. Only a few keymaps are provided by default, so users typically don't share keymaps with each other. QMK encourages sharing of both keyboards and keymaps through a centrally managed repository, accepting all pull requests that follow the quality standards. These are mostly community maintained, but the QMK team also helps when necessary.

Both approaches have their merits and their drawbacks, and code flows freely between TMK and QMK when it makes sense.

', 27); diff --git a/assets/faq_general.md.BOlGsWSk.lean.js b/assets/faq_general.md.BRXTvqDs.lean.js similarity index 91% rename from assets/faq_general.md.BOlGsWSk.lean.js rename to assets/faq_general.md.BRXTvqDs.lean.js index 1e924162192..34ab22ff579 100644 --- a/assets/faq_general.md.BOlGsWSk.lean.js +++ b/assets/faq_general.md.BRXTvqDs.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Frequently Asked Questions","description":"","frontmatter":{},"headers":[],"relativePath":"faq_general.md","filePath":"faq_general.md"}'); const _sfc_main = { name: "faq_general.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 27); diff --git a/assets/faq_keymap.md.DFMTHq2V.js b/assets/faq_keymap.md.DIjgUAJ7.js similarity index 99% rename from assets/faq_keymap.md.DFMTHq2V.js rename to assets/faq_keymap.md.DIjgUAJ7.js index df550c76ef7..6136e2f7c73 100644 --- a/assets/faq_keymap.md.DFMTHq2V.js +++ b/assets/faq_keymap.md.DIjgUAJ7.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Keymap FAQ","description":"","frontmatter":{},"headers":[],"relativePath":"faq_keymap.md","filePath":"faq_keymap.md"}'); const _sfc_main = { name: "faq_keymap.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Keymap FAQ

This page covers questions people often have about keymaps. If you haven't you should read Keymap Overview first.

What Keycodes Can I Use?

See Keycodes for an index of keycodes available to you. These link to more extensive documentation when available.

Keycodes are actually defined in quantum/keycode.h.

What Are the Default Keycodes?

There are 3 standard keyboard layouts in use around the world- ANSI, ISO, and JIS. North America primarily uses ANSI, Europe and Africa primarily use ISO, and Japan uses JIS. Regions not mentioned typically use either ANSI or ISO. The keycodes corresponding to these layouts are shown here:

Keyboard Layout Image

How Can I Make Custom Names For Complex Keycodes?

Sometimes, for readability's sake, it's useful to define custom names for some keycodes. People often define custom names using #define. For example:

c
#define FN_CAPS LT(_FL, KC_CAPS)\n#define ALT_TAB LALT(KC_TAB)

This will allow you to use FN_CAPS and ALT_TAB in your keymap, keeping it more readable.

My Keymap Doesn't Update When I Flash It

This is usually due to VIA, and has to do with how it deals with keymaps.

On first run, the VIA code in the firmware will copy the keymap from flash memory into EEPROM so that it can be rewritten at runtime by the VIA app. From this point QMK will use the keymap stored in EEPROM instead of flash, and so updates to your keymap.c will not be reflected.

The simple fix for this is to clear the EEPROM. You can do this in several ways:

Some Of My Keys Are Swapped Or Not Working

QMK has a couple of features which allow you to change the behavior of your keyboard on the fly. This includes, but is not limited to, swapping Ctrl/Caps, disabling GUI, swapping Alt/GUI, swapping Backspace/Backslash, disabling all keys, and other behavioral modifications.

Refer to the EEPROM clearing methods above, which should return those keys to normal operation. If that doesn't work, look here:

The Menu Key Isn't Working

The key found on most modern keyboards that is located between KC_RGUI and KC_RCTL is actually called KC_APP. This is because when the key was invented, there was already a key named "Menu" in the HID specification, so for whatever reason, Microsoft chose to create a new key and call it "Application".

Power Keys Aren't Working

Somewhat confusingly, there are two "Power" keycodes in QMK: KC_KB_POWER in the Keyboard/Keypad HID usage page, and KC_SYSTEM_POWER (or KC_PWR) in the Consumer page.

The former is only recognized on macOS, while the latter, KC_SLEP and KC_WAKE are supported by all three major operating systems, so it is recommended to use those instead. Under Windows, these keys take effect immediately, however on macOS they must be held down until a dialog appears.

One Shot Modifier

Solves my personal 'the' problem. I often got 'the' or 'THe' wrongly instead of 'The'. One Shot Shift mitigates this for me. https://github.com/tmk/tmk_keyboard/issues/67

Modifier/Layer Stuck

Modifier keys or layers can be stuck unless layer switching is configured properly. For Modifier keys and layer actions you have to place KC_TRNS on same position of destination layer to unregister the modifier key or return to previous layer on release event.

Mechanical Lock Switch Support

This feature is for mechanical lock switch like this Alps one. You can enable it by adding this to your config.h:

c
#define LOCKING_SUPPORT_ENABLE\n#define LOCKING_RESYNC_ENABLE

After enabling this feature use keycodes KC_LCAP, KC_LNUM and KC_LSCR in your keymap instead.

Old vintage mechanical keyboards occasionally have lock switches but modern ones don't have. You don't need this feature in most case and just use keycodes KC_CAPS, KC_NUM and KC_SCRL.

Input Special Characters Other Than ASCII like Cédille 'Ç'

See the Unicode feature.

Fn Key on macOS

Unlike most Fn keys, the one on Apple keyboards actually has its own keycode... sort of. It takes the place of the sixth keycode in a basic 6KRO HID report -- so an Apple keyboard is in fact only 5KRO.

It is technically possible to get QMK to send this key. However, doing so requires modification of the report format to add the state of the Fn key. Even worse, it is not recognized unless the keyboard's VID and PID match that of a real Apple keyboard. The legal issues that official QMK support for this feature may create mean it is unlikely to happen.

See this issue for detailed information.

Keys Supported in Mac OSX?

You can know which keycodes are supported in OSX from this source code.

usb_2_adb_keymap array maps Keyboard/Keypad Page usages to ADB scancodes(OSX internal keycodes).

https://opensource.apple.com/source/IOHIDFamily/IOHIDFamily-606.1.7/IOHIDFamily/Cosmo_USB2ADB.c

And IOHIDConsumer::dispatchConsumerEvent handles Consumer page usages.

https://opensource.apple.com/source/IOHIDFamily/IOHIDFamily-606.1.7/IOHIDFamily/IOHIDConsumer.cpp

JIS Keys in Mac OSX

Japanese JIS keyboard specific keys like 無変換(Muhenkan), 変換(Henkan), ひらがな(hiragana) are not recognized on OSX. You can use Seil to enable those keys, try following options.

https://pqrs.org/osx/karabiner/seil.html

RN-42 Bluetooth Doesn't Work with Karabiner

Karabiner - Keymapping tool on Mac OSX - ignores inputs from RN-42 module by default. You have to enable this option to make Karabiner working with your keyboard. https://github.com/tekezo/Karabiner/issues/403#issuecomment-102559237

See these for the detail of this problem. https://github.com/tmk/tmk_keyboard/issues/213https://github.com/tekezo/Karabiner/issues/403

Esc and ` on a Single Key

See the Grave Escape feature.

Eject on Mac OSX

KC_EJCT keycode works on OSX. https://github.com/tmk/tmk_keyboard/issues/250 It seems Windows 10 ignores the code and Linux/Xorg recognizes but has no mapping by default.

Not sure what keycode Eject is on genuine Apple keyboard actually. HHKB uses F20 for Eject key(Fn+F) on Mac mode but this is not same as Apple Eject keycode probably.

What are "Real" and "Weak" modifiers?

Real modifiers refer to the state of the real/physical modifier keys, while weak modifiers are the state of "virtual" or temporary modifiers which should not interfere with the internal state of the real modifier keys.

The real and weak modifier states are ORed together when the keyboard report is sent, so if you release a weak modifier while the same real modifier is still held, the report does not change:

  1. Hold down physical Left Shift: Real mods now contains Left Shift, final state is Left Shift
  2. Add weak Left Shift: Weak mods now contains Left Shift, final state is Left Shift
  3. Remove weak Left Shift: Weak mods now contains nothing, final state is Left Shift
  4. Release physical Left Shift: Real mods now contains nothing, final state is nothing
', 64); diff --git a/assets/faq_keymap.md.DFMTHq2V.lean.js b/assets/faq_keymap.md.DIjgUAJ7.lean.js similarity index 91% rename from assets/faq_keymap.md.DFMTHq2V.lean.js rename to assets/faq_keymap.md.DIjgUAJ7.lean.js index fb345061768..4669f2c0350 100644 --- a/assets/faq_keymap.md.DFMTHq2V.lean.js +++ b/assets/faq_keymap.md.DIjgUAJ7.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Keymap FAQ","description":"","frontmatter":{},"headers":[],"relativePath":"faq_keymap.md","filePath":"faq_keymap.md"}'); const _sfc_main = { name: "faq_keymap.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 64); diff --git a/assets/faq_misc.md.qGrhOTu4.js b/assets/faq_misc.md.CrAryH8S.js similarity index 99% rename from assets/faq_misc.md.qGrhOTu4.js rename to assets/faq_misc.md.CrAryH8S.js index a193bbd8312..e50f88e43fe 100644 --- a/assets/faq_misc.md.qGrhOTu4.js +++ b/assets/faq_misc.md.CrAryH8S.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Miscellaneous FAQ","description":"","frontmatter":{},"headers":[],"relativePath":"faq_misc.md","filePath":"faq_misc.md"}'); const _sfc_main = { name: "faq_misc.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Miscellaneous FAQ

How do I test my keyboard?

Testing your keyboard is usually pretty straightforward. Press every single key and make sure it sends the keys you expect. You can use QMK Configurator's test mode to check your keyboard, even if it doesn't run QMK.

Safety Considerations

You probably don't want to "brick" your keyboard, making it impossible to rewrite firmware onto it. Here are some of the parameters to show what things are (and likely aren't) too risky.

Linking: .build/planck_rev4_cbbrowne.elf                                                            [OK]\nCreating load file for Flash: .build/planck_rev4_cbbrowne.hex                                       [OK]\n\nSize after:\n   text    data     bss     dec     hex filename\n      0   22396       0   22396    577c planck_rev4_cbbrowne.hex

NKRO Doesn't work

First you have to compile firmware with the build option NKRO_ENABLE in Makefile.

Try Magic N command(LShift+RShift+N by default) when NKRO still doesn't work. You can use this command to toggle between NKRO and 6KRO mode temporarily. In some situations NKRO doesn't work and you will need to switch to 6KRO mode, in particular when you are in BIOS.

TrackPoint Needs Reset Circuit (PS/2 Mouse Support)

Without reset circuit you will have inconsistent result due to improper initialization of the hardware. See circuit schematic of TPM754:

Can't Read Column of Matrix Beyond 16

Use 1UL<<16 instead of 1<<16 in read_cols() in [matrix.h] when your columns goes beyond 16.

In C 1 means one of [int] type which is [16 bit] in case of AVR, so you can't shift left more than 15. Thus, calculating 1<<16 will unexpectedly equal zero. To work around this, you have to use [unsigned long] type with 1UL.

https://deskthority.net/workshop-f7/rebuilding-and-redesigning-a-classic-thinkpad-keyboard-t6181-60.html#p146279

Special Extra Key Doesn't Work (System, Audio Control Keys)

You need to define EXTRAKEY_ENABLE in rules.mk to use them in QMK.

EXTRAKEY_ENABLE = yes          # Audio control and System control

Wake from Sleep Doesn't Work

In Windows check Allow this device to wake the computer setting in Power Management property tab of Device Manager. Also check your BIOS settings. Pressing any key during sleep should wake host.

Using Arduino?

Note that Arduino pin naming is different from actual chip. For example, Arduino pin D0 is not PD0. Check circuit with its schematics yourself.

Arduino Leonardo and micro have ATMega32U4 and can be used for TMK, though Arduino bootloader may be a problem.

Enabling JTAG

By default, the JTAG debugging interface is disabled as soon as the keyboard starts up. JTAG-capable MCUs come from the factory with the JTAGEN fuse set, and it takes over certain pins of the MCU that the board may be using for the switch matrix, LEDs, etc.

If you would like to keep JTAG enabled, just add the following to your config.h:

c
#define NO_JTAG_DISABLE

USB 3 Compatibility

Some problems can be fixed by switching from a USB 3.x port to a USB 2.0 port.

Mac Compatibility

OS X 10.11 and Hub

See here: https://geekhack.org/index.php?topic=14290.msg1884034#msg1884034

Problem in BIOS (UEFI) Setup/Resume (Sleep & Wake)/Power Cycles

Some people reported their keyboard stops working in BIOS and/or after resume(power cycles).

As of now the root cause is not clear, but some build options seem to be related. In Makefile, try to disable options like CONSOLE_ENABLE, NKRO_ENABLE, SLEEP_LED_ENABLE and/or others.

More info:

', 41); diff --git a/assets/faq_misc.md.qGrhOTu4.lean.js b/assets/faq_misc.md.CrAryH8S.lean.js similarity index 91% rename from assets/faq_misc.md.qGrhOTu4.lean.js rename to assets/faq_misc.md.CrAryH8S.lean.js index edb7c030703..fa008938c80 100644 --- a/assets/faq_misc.md.qGrhOTu4.lean.js +++ b/assets/faq_misc.md.CrAryH8S.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Miscellaneous FAQ","description":"","frontmatter":{},"headers":[],"relativePath":"faq_misc.md","filePath":"faq_misc.md"}'); const _sfc_main = { name: "faq_misc.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 41); diff --git a/assets/feature_advanced_keycodes.md.CX8dJkY-.js b/assets/feature_advanced_keycodes.md.BI-acvLB.js similarity index 99% rename from assets/feature_advanced_keycodes.md.CX8dJkY-.js rename to assets/feature_advanced_keycodes.md.BI-acvLB.js index ecc8c150816..a0d584f9826 100644 --- a/assets/feature_advanced_keycodes.md.CX8dJkY-.js +++ b/assets/feature_advanced_keycodes.md.BI-acvLB.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Modifier Keys","description":"","frontmatter":{},"headers":[],"relativePath":"feature_advanced_keycodes.md","filePath":"feature_advanced_keycodes.md"}'); const _sfc_main = { name: "feature_advanced_keycodes.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Modifier Keys

These allow you to combine a modifier with a keycode. When pressed, the keydown event for the modifier, then kc will be sent. On release, the keyup event for kc, then the modifier will be sent.

KeyAliasesDescription
LCTL(kc)C(kc)Hold Left Control and press kc
LSFT(kc)S(kc)Hold Left Shift and press kc
LALT(kc)A(kc), LOPT(kc)Hold Left Alt and press kc
LGUI(kc)G(kc), LCMD(kc), LWIN(kc)Hold Left GUI and press kc
RCTL(kc)Hold Right Control and press kc
RSFT(kc)Hold Right Shift and press kc
RALT(kc)ROPT(kc), ALGR(kc)Hold Right Alt and press kc
RGUI(kc)RCMD(kc), LWIN(kc)Hold Right GUI and press kc
LSG(kc)SGUI(kc), SCMD(kc), SWIN(kc)Hold Left Shift and GUI and press kc
LAG(kc)Hold Left Alt and Left GUI and press kc
RSG(kc)Hold Right Shift and Right GUI and press kc
RAG(kc)Hold Right Alt and Right GUI and press kc
LCA(kc)Hold Left Control and Alt and press kc
LSA(kc)Hold Left Shift and Left Alt and press kc
RSA(kc)SAGR(kc)Hold Right Shift and Right Alt (AltGr) and press kc
RCS(kc)Hold Right Control and Right Shift and press kc
LCAG(kc)Hold Left Control, Alt and GUI and press kc
MEH(kc)Hold Left Control, Shift and Alt and press kc
HYPR(kc)Hold Left Control, Shift, Alt and GUI and press kc

You can also chain them, for example LCTL(LALT(KC_DEL)) or C(A(KC_DEL)) makes a key that sends Control+Alt+Delete with a single keypress.

Checking Modifier State

The current modifier state can mainly be accessed with two functions: get_mods() for normal modifiers and modtaps and get_oneshot_mods() for one-shot modifiers (unless they're held, in which case they act like normal modifier keys).

The presence of one or more specific modifiers in the current modifier state can be detected by ANDing the modifier state with a mod mask corresponding to the set of modifiers you want to match for. The reason why bitwise operators are used is that the modifier state is stored as a single byte in the format (GASC)R(GASC)L.

Thus, to give an example, 01000010 would be the internal representation of LShift+RAlt. For more information on bitwise operators in C, click here to open the Wikipedia page on the topic.

In practice, this means that you can check whether a given modifier is active with get_mods() & MOD_BIT(KC_<modifier>) (see the list of modifier keycodes) or with get_mods() & MOD_MASK_<modifier> if the difference between left and right hand modifiers is not important and you want to match both. Same thing can be done for one-shot modifiers if you replace get_mods() with get_oneshot_mods().

To check that only a specific set of mods is active at a time, use a simple equality operator: get_mods() == <mod mask>.

For example, let's say you want to trigger a piece of custom code if one-shot left control and one-shot left shift are on but every other one-shot mods are off. To do so, you can compose the desired mod mask by combining the mod bits for left control and shift with (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT)) and then plug it in: get_oneshot_mods() == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT)). Using MOD_MASK_CS instead for the mod bitmask would have forced you to press four modifier keys (both versions of control and shift) to fulfill the condition.

The full list of mod masks is as follows:

Mod Mask NameMatching Modifiers
MOD_MASK_CTRLLCTRL , RCTRL
MOD_MASK_SHIFTLSHIFT , RSHIFT
MOD_MASK_ALTLALT , RALT
MOD_MASK_GUILGUI , RGUI
MOD_MASK_CSCTRL , SHIFT
MOD_MASK_CA(L/R)CTRL , (L/R)ALT
MOD_MASK_CG(L/R)CTRL , (L/R)GUI
MOD_MASK_SA(L/R)SHIFT , (L/R)ALT
MOD_MASK_SG(L/R)SHIFT , (L/R)GUI
MOD_MASK_AG(L/R)ALT , (L/R)GUI
MOD_MASK_CSA(L/R)CTRL , (L/R)SHIFT , (L/R)ALT
MOD_MASK_CSG(L/R)CTRL , (L/R)SHIFT , (L/R)GUI
MOD_MASK_CAG(L/R)CTRL , (L/R)ALT , (L/R)GUI
MOD_MASK_SAG(L/R)SHIFT , (L/R)ALT , (L/R)GUI
MOD_MASK_CSAG(L/R)CTRL , (L/R)SHIFT , (L/R)ALT , (L/R)GUI

Aside from accessing the currently active modifiers using get_mods(), there exists some other functions you can use to modify the modifier state, where the mods argument refers to the modifiers bitmask.

Similarly, in addition to get_oneshot_mods(), there also exists these functions for one-shot mods:

Examples

The following examples use advanced macro functions which you can read more about in the documentation page on macros.

Alt + Escape for Alt + Tab

Simple example where chording Left Alt with KC_ESC makes it behave like KC_TAB for alt-tabbing between applications. This example strictly checks if only Left Alt is active, meaning you can't do Alt+Shift+Esc to switch between applications in reverse order. Also keep in mind that this removes the ability to trigger the actual Alt+Escape keyboard shortcut, though it keeps the ability to do AltGr+Escape.

c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {\n    switch (keycode) {\n\n    case KC_ESC:\n        // Detect the activation of only Left Alt\n        if (get_mods() == MOD_BIT(KC_LALT)) {\n            if (record->event.pressed) {\n                // No need to register KC_LALT because it's already active.\n                // The Alt modifier will apply on this KC_TAB.\n                register_code(KC_TAB);\n            } else {\n                unregister_code(KC_TAB);\n            }\n            // Do not let QMK process the keycode further\n            return false;\n        }\n        // Else, let QMK process the KC_ESC keycode as usual\n        return true;\n\n    }\n    return true;\n};

Shift + Backspace for Delete

Advanced example where the original behaviour of shift is cancelled when chorded with KC_BSPC and is instead fully replaced by KC_DEL. Two main variables are created to make this work well: mod_state and delkey_registered. The first one stores the modifier state and is used to restore it after registering KC_DEL. The second variable is a boolean variable (true or false) which keeps track of the status of KC_DEL to manage the release of the whole Backspace/Delete key correctly.

As opposed to the previous example, this doesn't use strict modifier checking. Pressing KC_BSPC while one or two shifts are active is enough to trigger this custom code, regardless of the state of other modifiers. That approach offers some perks: Ctrl+Shift+Backspace lets us delete the next word (Ctrl+Delete) and Ctrl+Alt+Shift+Backspace lets us execute the Ctrl+Alt+Del keyboard shortcut.

c
// Initialize variable holding the binary\n// representation of active modifiers.\nuint8_t mod_state;\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n    // Store the current modifier state in the variable for later reference\n    mod_state = get_mods();\n    switch (keycode) {\n\n    case KC_BSPC:\n        {\n        // Initialize a boolean variable that keeps track\n        // of the delete key status: registered or not?\n        static bool delkey_registered;\n        if (record->event.pressed) {\n            // Detect the activation of either shift keys\n            if (mod_state & MOD_MASK_SHIFT) {\n                // First temporarily canceling both shifts so that\n                // shift isn't applied to the KC_DEL keycode\n                del_mods(MOD_MASK_SHIFT);\n                register_code(KC_DEL);\n                // Update the boolean variable to reflect the status of KC_DEL\n                delkey_registered = true;\n                // Reapplying modifier state so that the held shift key(s)\n                // still work even after having tapped the Backspace/Delete key.\n                set_mods(mod_state);\n                return false;\n            }\n        } else { // on release of KC_BSPC\n            // In case KC_DEL is still being sent even after the release of KC_BSPC\n            if (delkey_registered) {\n                unregister_code(KC_DEL);\n                delkey_registered = false;\n                return false;\n            }\n        }\n        // Let QMK process the KC_BSPC keycode as usual outside of shift\n        return true;\n    }\n\n    }\n    return true;\n};

Alternatively, this can be done with Key Overrides.

Advanced topics

This page used to encompass a large set of features. We have moved many sections that used to be part of this page to their own pages. Everything below this point is simply a redirect so that people following old links on the web find what they're looking for.

Layers

Mod-Tap

One Shot Keys

Tap-Hold Configuration Options

Key Overrides

', 39); diff --git a/assets/feature_advanced_keycodes.md.CX8dJkY-.lean.js b/assets/feature_advanced_keycodes.md.BI-acvLB.lean.js similarity index 91% rename from assets/feature_advanced_keycodes.md.CX8dJkY-.lean.js rename to assets/feature_advanced_keycodes.md.BI-acvLB.lean.js index be8af23b45b..2c40c87e357 100644 --- a/assets/feature_advanced_keycodes.md.CX8dJkY-.lean.js +++ b/assets/feature_advanced_keycodes.md.BI-acvLB.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Modifier Keys","description":"","frontmatter":{},"headers":[],"relativePath":"feature_advanced_keycodes.md","filePath":"feature_advanced_keycodes.md"}'); const _sfc_main = { name: "feature_advanced_keycodes.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 39); diff --git a/assets/feature_converters.md.DcwmzUcD.js b/assets/feature_converters.md.CYAeZ-4u.js similarity index 99% rename from assets/feature_converters.md.DcwmzUcD.js rename to assets/feature_converters.md.CYAeZ-4u.js index 9d103e9a470..927bcf1b17d 100644 --- a/assets/feature_converters.md.DcwmzUcD.js +++ b/assets/feature_converters.md.CYAeZ-4u.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Converters","description":"","frontmatter":{},"headers":[],"relativePath":"feature_converters.md","filePath":"feature_converters.md"}'); const _sfc_main = { name: "feature_converters.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Converters

This page documents the automated process for converting keyboards to use drop-in replacement controllers. This process is designed to be easy to use and can be completed in a few simple steps.

Supported Converters

The following converters are available at this time:

FromTo
promicroproton_c
promicrokb2040
promicrosparkfun_pm2040
promicroblok
promicrobit_c_pro
promicrostemcell
promicrobonsai_c4
promicrorp2040_ce
promicroelite_pi
promicrohelios
promicroliatris
promicroimera
promicromichi
elite_cstemcell
elite_crp2040_ce
elite_celite_pi
elite_chelios
elite_cliatris

Overview

Each converter category is broken down by its declared pin compatibility. This ensures that only valid combinations are attempted. You can generate the firmware by appending -e CONVERT_TO=<target> to your compile/flash command. For example:

sh
qmk flash -c -kb keebio/bdn9/rev1 -km default -e CONVERT_TO=proton_c

You can also add the same CONVERT_TO=<target> to your keymap's rules.mk, which will accomplish the same thing.

TIP

If you get errors about PORTB/DDRB, etc not being defined, you'll need to convert the keyboard's code to use the GPIO Controls that will work for both ARM and AVR. This shouldn't affect the AVR builds at all.

Conditional Configuration

Once a converter is enabled, it exposes the CONVERT_TO_<target_uppercase> flag that you can use in your code with #ifdefs, For example:

c
#ifdef CONVERT_TO_PROTON_C\n    // Proton C code\n#else\n    // Pro Micro code\n#endif

Pin Compatibility

To ensure compatibility, provide validation, and enable future workflows, a keyboard should declare its pin compatibility. For legacy reasons, this is currently assumed to be promicro. The following pin compatibility interfaces are currently defined:

Pin CompatibilityNotes
promicroIncludes RX/TX LEDs
elite_cIncludes bottom row pins, no LEDs

To declare the base for conversions, add this line to your keyboard's rules.mk:

makefile
PIN_COMPATIBLE = elite_c

Pro Micro

If a board currently supported in QMK uses a Pro Micro (or compatible board), the supported alternative controllers are:

DeviceTarget
Proton Cproton_c
Adafruit KB2040kb2040
SparkFun Pro Micro - RP2040sparkfun_pm2040
Blokblok
Bit-C PRObit_c_pro
STeMCellstemcell
customMK Bonsai C4bonsai_c4
Elite-Pielite_pi
0xCB Helioshelios
Liatrisliatris
Imeraimera
Michimichi

Converter summary:

TargetArgumentrules.mkCondition
proton_c-e CONVERT_TO=proton_cCONVERT_TO=proton_c#ifdef CONVERT_TO_PROTON_C
kb2040-e CONVERT_TO=kb2040CONVERT_TO=kb2040#ifdef CONVERT_TO_KB2040
sparkfun_pm2040-e CONVERT_TO=sparkfun_pm2040CONVERT_TO=sparkfun_pm2040#ifdef CONVERT_TO_SPARKFUN_PM2040
blok-e CONVERT_TO=blokCONVERT_TO=blok#ifdef CONVERT_TO_BLOK
bit_c_pro-e CONVERT_TO=bit_c_proCONVERT_TO=bit_c_pro#ifdef CONVERT_TO_BIT_C_PRO
stemcell-e CONVERT_TO=stemcellCONVERT_TO=stemcell#ifdef CONVERT_TO_STEMCELL
bonsai_c4-e CONVERT_TO=bonsai_c4CONVERT_TO=bonsai_c4#ifdef CONVERT_TO_BONSAI_C4
rp2040_ce-e CONVERT_TO=rp2040_ceCONVERT_TO=rp2040_ce#ifdef CONVERT_TO_RP2040_CE
elite_pi-e CONVERT_TO=elite_piCONVERT_TO=elite_pi#ifdef CONVERT_TO_ELITE_PI
helios-e CONVERT_TO=heliosCONVERT_TO=helios#ifdef CONVERT_TO_HELIOS
liatris-e CONVERT_TO=liatrisCONVERT_TO=liatris#ifdef CONVERT_TO_LIATRIS
imera-e CONVERT_TO=imeraCONVERT_TO=imera#ifdef CONVERT_TO_IMERA
michi-e CONVERT_TO=michiCONVERT_TO=michi#ifdef CONVERT_TO_MICHI

Proton C

The Proton C only has one on-board LED (C13), and by default, the TXLED (D5) is mapped to it. If you want the RXLED (B0) mapped to it instead, add this line to your config.h:

c
#define CONVERT_TO_PROTON_C_RXLED

The following defaults are based on what has been implemented for STM32 boards.

FeatureNotes
AudioEnabled
RGB LightingDisabled
BacklightForces task driven PWM until ARM can provide automatic configuration
USB Host (e.g. USB-USB converter)Not supported (USB host code is AVR specific and is not currently supported on ARM)
Split keyboardsPartial - heavily dependent on enabled features

Adafruit KB2040

The following defaults are based on what has been implemented for RP2040 boards.

FeatureNotes
RGB LightingEnabled via PIO vendor driver
BacklightForces task driven PWM until ARM can provide automatic configuration
USB Host (e.g. USB-USB converter)Not supported (USB host code is AVR specific and is not currently supported on ARM)
Split keyboardsPartial via PIO vendor driver - heavily dependent on enabled features

SparkFun Pro Micro - RP2040, Blok, Bit-C PRO and Michi

Feature set is identical to Adafruit KB2040.

STeMCell

Feature set currently identical to Proton C. There are two versions of STeMCell available, with different pinouts:

STeMCell has support to swap UART and I2C pins to enable single-wire uart communication in STM chips. The following additional flags has to be used while compiling, based on the pin used for split communication:

Split PinCompile flags
D3-e STMC_US=yes
D2Not needed
D1-e STMC_IS=yes
D0Not needed

Bonsai C4

The Bonsai C4 only has one on-board LED (B2), and by default, both the Pro Micro TXLED (D5) and RXLED (B0) are mapped to it. If you want only one of them mapped, you can undefine one and redefine it to another pin by adding these line to your config.h:

c
#undef B0\n// If VBUS detection is unused, we can send RXLED to the Vbus detect pin instead\n#define B0 PAL_LINE(GPIOA, 9)

RP2040 Community Edition - Elite-Pi, Helios, and Liatris

Feature set is identical to Adafruit KB2040. VBUS detection is enabled by default for superior split keyboard support. For more information, refer to the Community Edition pinout docs.

Elite-C

If a board currently supported in QMK uses an Elite-C, the supported alternative controllers are:

DeviceTarget
STeMCellstemcell
Elite-Pielite_pi
0xCB Helioshelios
Liatrisliatris

Converter summary:

TargetArgumentrules.mkCondition
stemcell-e CONVERT_TO=stemcellCONVERT_TO=stemcell#ifdef CONVERT_TO_STEMCELL
rp2040_ce-e CONVERT_TO=rp2040_ceCONVERT_TO=rp2040_ce#ifdef CONVERT_TO_RP2040_CE
elite_pi-e CONVERT_TO=elite_piCONVERT_TO=elite_pi#ifdef CONVERT_TO_ELITE_PI
helios-e CONVERT_TO=heliosCONVERT_TO=helios#ifdef CONVERT_TO_HELIOS
liatris-e CONVERT_TO=liatrisCONVERT_TO=liatris#ifdef CONVERT_TO_LIATRIS

STeMCell {#stemcell}_elite

Identical to Pro Micro - STeMCell with support for the additional bottom row of pins.

RP2040 Community Edition

Identical to Pro Micro - RP2040 Community Edition with support for the additional bottom row of pins.

', 52); diff --git a/assets/feature_converters.md.DcwmzUcD.lean.js b/assets/feature_converters.md.CYAeZ-4u.lean.js similarity index 91% rename from assets/feature_converters.md.DcwmzUcD.lean.js rename to assets/feature_converters.md.CYAeZ-4u.lean.js index 0775a5c4df4..86f5158eadb 100644 --- a/assets/feature_converters.md.DcwmzUcD.lean.js +++ b/assets/feature_converters.md.CYAeZ-4u.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Converters","description":"","frontmatter":{},"headers":[],"relativePath":"feature_converters.md","filePath":"feature_converters.md"}'); const _sfc_main = { name: "feature_converters.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 52); diff --git a/assets/feature_debounce_type.md.CUrSp0Iy.js b/assets/feature_debounce_type.md.DBjOROev.js similarity index 99% rename from assets/feature_debounce_type.md.CUrSp0Iy.js rename to assets/feature_debounce_type.md.DBjOROev.js index 2e33ee2a029..045883b3e08 100644 --- a/assets/feature_debounce_type.md.CUrSp0Iy.js +++ b/assets/feature_debounce_type.md.DBjOROev.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Contact bounce / contact chatter","description":"","frontmatter":{},"headers":[],"relativePath":"feature_debounce_type.md","filePath":"feature_debounce_type.md"}'); const _sfc_main = { name: "feature_debounce_type.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Contact bounce / contact chatter

Mechanical switches often don't have a clean single transition between pressed and unpressed states.

In an ideal world, when you press a switch, you would expect the digital pin to see something like this: (X axis showing time

voltage                   +----------------------\n ^                        |\n |                        |\n |      ------------------+\n          ----> time

However in the real world you will actually see contact bounce, which will look like multiple 1->0 and 0->1 transitions, until the value finally settles.

                  +-+ +--+ +-------------\n                  | | |  | |\n                  | | |  | |\n+-----------------+ +-+  +-+

The time it takes for the switch to settle might vary with switch type, age, and even pressing technique.

If the device chooses not to mitigate contact bounce, then often actions that happen when the switch is pressed are repeated multiple times.

There are many ways to handle contact bounce ("Debouncing"). Some include employing additional hardware, for example an RC filter, while there are various ways to do debouncing in software too, often called debounce algorithms. This page discusses software debouncing methods available in QMK.

While technically not considered contact bounce/contact chatter, some switch technologies are susceptible to noise, meaning, while the key is not changing state, sometimes short random 0->1 or 1->0 transitions might be read by the digital circuit, for example:

                  +-+\n                  | |\n                  | |\n+-----------------+ +--------------------

Many debounce methods (but not all) will also make the device resistant to noise. If you are working with a technology that is susceptible to noise, you must choose a debounce method that will also mitigate noise for you.

Types of debounce algorithms

  1. Unit of time: Timestamp (milliseconds) vs Cycles (scans)

  2. Symmetric vs Asymmetric

  3. Eager vs Defer

  4. Global vs Per-Key vs Per-Row

Supported Debounce Algorithms

QMK supports multiple algorithms through its debounce API.

Debounce Time

Default debounce time is 5 milliseconds and it can be changed with the following line in config.h:

#define DEBOUNCE 10

TIP

Setting DEBOUNCE to 0 will disable this feature.

Debounce Method

Keyboards may select one of the core debounce methods by adding the following line into rules.mk:

DEBOUNCE_TYPE = <name of algorithm>

Name of algorithm is one of:

AlgorithmDescription
sym_defer_gDebouncing per keyboard. On any state change, a global timer is set. When DEBOUNCE milliseconds of no changes has occurred, all input changes are pushed. This is the highest performance algorithm with lowest memory usage and is noise-resistant.
sym_defer_prDebouncing per row. On any state change, a per-row timer is set. When DEBOUNCE milliseconds of no changes have occurred on that row, the entire row is pushed. This can improve responsiveness over sym_defer_g while being less susceptible to noise than per-key algorithm.
sym_defer_pkDebouncing per key. On any state change, a per-key timer is set. When DEBOUNCE milliseconds of no changes have occurred on that key, the key status change is pushed.
sym_eager_prDebouncing per row. On any state change, response is immediate, followed by DEBOUNCE milliseconds of no further input for that row.
sym_eager_pkDebouncing per key. On any state change, response is immediate, followed by DEBOUNCE milliseconds of no further input for that key.
asym_eager_defer_pkDebouncing per key. On a key-down state change, response is immediate, followed by DEBOUNCE milliseconds of no further input for that key. On a key-up state change, a per-key timer is set. When DEBOUNCE milliseconds of no changes have occurred on that key, the key-up status change is pushed.

TIP

sym_defer_g is the default if DEBOUNCE_TYPE is undefined.

TIP

sym_eager_pr is suitable for use in keyboards where refreshing NUM_KEYS 8-bit counters is computationally expensive or has low scan rate while fingers usually hit one row at a time. This could be appropriate for the ErgoDox models where the matrix is rotated 90°. Hence its "rows" are really columns and each finger only hits a single "row" at a time with normal usage.

Implementing your own debouncing code

You have the option to implement you own debouncing algorithm with the following steps:

', 30); diff --git a/assets/feature_debounce_type.md.CUrSp0Iy.lean.js b/assets/feature_debounce_type.md.DBjOROev.lean.js similarity index 91% rename from assets/feature_debounce_type.md.CUrSp0Iy.lean.js rename to assets/feature_debounce_type.md.DBjOROev.lean.js index 3f4b6126c1e..fa61bf1db68 100644 --- a/assets/feature_debounce_type.md.CUrSp0Iy.lean.js +++ b/assets/feature_debounce_type.md.DBjOROev.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Contact bounce / contact chatter","description":"","frontmatter":{},"headers":[],"relativePath":"feature_debounce_type.md","filePath":"feature_debounce_type.md"}'); const _sfc_main = { name: "feature_debounce_type.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 30); diff --git a/assets/feature_eeprom.md.D2OTc7H8.js b/assets/feature_eeprom.md.tGEc5qB_.js similarity index 99% rename from assets/feature_eeprom.md.D2OTc7H8.js rename to assets/feature_eeprom.md.tGEc5qB_.js index 9022ff65936..98b23558af1 100644 --- a/assets/feature_eeprom.md.D2OTc7H8.js +++ b/assets/feature_eeprom.md.tGEc5qB_.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Persistent Configuration (EEPROM)","description":"","frontmatter":{},"headers":[],"relativePath":"feature_eeprom.md","filePath":"feature_eeprom.md"}'); const _sfc_main = { name: "feature_eeprom.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Persistent Configuration (EEPROM)

This allows you to configure persistent settings for your keyboard. These settings are stored in the EEPROM of your controller, and are retained even after power loss. The settings can be read with eeconfig_read_kb and eeconfig_read_user, and can be written to using eeconfig_update_kb and eeconfig_update_user. This is useful for features that you want to be able to toggle (like toggling rgb layer indication). Additionally, you can use eeconfig_init_kb and eeconfig_init_user to set the default values for the EEPROM.

The complicated part here, is that there are a bunch of ways that you can store and access data via EEPROM, and there is no "correct" way to do this. However, you only have a DWORD (4 bytes) for each function.

Keep in mind that EEPROM has a limited number of writes. While this is very high, it's not the only thing writing to the EEPROM, and if you write too often, you can potentially drastically shorten the life of your MCU.

Example Implementation

This is an example of how to add settings, and read and write it. We're using the user keymap for the example here. This is a complex function, and has a lot going on. In fact, it uses a lot of the above functions to work!

In your keymap.c file, add this to the top:

c
typedef union {\n  uint32_t raw;\n  struct {\n    bool     rgb_layer_change :1;\n  };\n} user_config_t;\n\nuser_config_t user_config;

This sets up a 32 bit structure that we can store settings with in memory, and write to the EEPROM. Using this removes the need to define variables, since they're defined in this structure. Remember that bool (boolean) values use 1 bit, uint8_t uses 8 bits, uint16_t uses up 16 bits. You can mix and match, but changing the order can cause issues, as it will change the values that are read and written.

We're using rgb_layer_change, for the layer_state_set_* function, and use keyboard_post_init_user and process_record_user to configure everything.

Now, using the keyboard_post_init_user code above, you want to add eeconfig_read_user() to it, to populate the structure you've just created. And you can then immediately use this structure to control functionality in your keymap. And It should look like:

c
void keyboard_post_init_user(void) {\n  // Call the keymap level matrix init.\n\n  // Read the user config from EEPROM\n  user_config.raw = eeconfig_read_user();\n\n  // Set default layer, if enabled\n  if (user_config.rgb_layer_change) {\n    rgblight_enable_noeeprom();\n    rgblight_sethsv_noeeprom(HSV_CYAN);\n    rgblight_mode_noeeprom(1);\n  }\n}

The above function will use the EEPROM config immediately after reading it, to set the default layer's RGB color. The "raw" value of it is converted in a usable structure based on the "union" that you created above.

c
layer_state_t layer_state_set_user(layer_state_t state) {\n    switch (get_highest_layer(state)) {\n    case _RAISE:\n        if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_MAGENTA); rgblight_mode_noeeprom(1); }\n        break;\n    case _LOWER:\n        if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_RED); rgblight_mode_noeeprom(1); }\n        break;\n    case _PLOVER:\n        if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_GREEN); rgblight_mode_noeeprom(1); }\n        break;\n    case _ADJUST:\n        if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_WHITE); rgblight_mode_noeeprom(1); }\n        break;\n    default: //  for any other layers, or the default layer\n        if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_CYAN); rgblight_mode_noeeprom(1); }\n        break;\n    }\n  return state;\n}

This will cause the RGB underglow to be changed ONLY if the value was enabled. Now to configure this value, create a new keycode for process_record_user called RGB_LYR. Additionally, we want to make sure that if you use the normal RGB codes, that it turns off Using the example above, make it look this:

c
\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n  switch (keycode) {\n    case FOO:\n      if (record->event.pressed) {\n        // Do something when pressed\n      } else {\n        // Do something else when release\n      }\n      return false; // Skip all further processing of this key\n    case KC_ENTER:\n        // Play a tone when enter is pressed\n        if (record->event.pressed) {\n            PLAY_SONG(tone_qwerty);\n        }\n        return true; // Let QMK send the enter press/release events\n    case RGB_LYR:  // This allows me to use underglow as layer indication, or as normal\n        if (record->event.pressed) {\n            user_config.rgb_layer_change ^= 1; // Toggles the status\n            eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM\n            if (user_config.rgb_layer_change) { // if layer state indication is enabled,\n                layer_state_set(layer_state);   // then immediately update the layer color\n            }\n        }\n        return false;\n    case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // For any of the RGB codes (see quantum_keycodes.h, L400 for reference)\n        if (record->event.pressed) { //This disables layer indication, as it's assumed that if you're changing this ... you want that disabled\n            if (user_config.rgb_layer_change) {        // only if this is enabled\n                user_config.rgb_layer_change = false;  // disable it, and\n                eeconfig_update_user(user_config.raw); // write the setings to EEPROM\n            }\n        }\n        return true; break;\n    default:\n      return true; // Process all other keycodes normally\n  }\n}

And lastly, you want to add the eeconfig_init_user function, so that when the EEPROM is reset, you can specify default values, and even custom actions. To force an EEPROM reset, use the EE_CLR keycode or Bootmagic functionallity. For example, if you want to set rgb layer indication by default, and save the default valued.

c
void eeconfig_init_user(void) {  // EEPROM is getting reset!\n  user_config.raw = 0;\n  user_config.rgb_layer_change = true; // We want this enabled by default\n  eeconfig_update_user(user_config.raw); // Write default value to EEPROM now\n\n  // use the non noeeprom versions, to write these values to EEPROM too\n  rgblight_enable(); // Enable RGB by default\n  rgblight_sethsv(HSV_CYAN);  // Set it to CYAN by default\n  rgblight_mode(1); // set to solid by default\n}

And you're done. The RGB layer indication will only work if you want it to. And it will be saved, even after unplugging the board. And if you use any of the RGB codes, it will disable the layer indication, so that it stays on the mode and color that you set it to.

'EECONFIG' Function Documentation

The val is the value of the data that you want to write to EEPROM. And the eeconfig_read_* function return a 32 bit (DWORD) value from the EEPROM.

', 23); diff --git a/assets/feature_eeprom.md.D2OTc7H8.lean.js b/assets/feature_eeprom.md.tGEc5qB_.lean.js similarity index 91% rename from assets/feature_eeprom.md.D2OTc7H8.lean.js rename to assets/feature_eeprom.md.tGEc5qB_.lean.js index 399e0f151f0..f04ba056d66 100644 --- a/assets/feature_eeprom.md.D2OTc7H8.lean.js +++ b/assets/feature_eeprom.md.tGEc5qB_.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Persistent Configuration (EEPROM)","description":"","frontmatter":{},"headers":[],"relativePath":"feature_eeprom.md","filePath":"feature_eeprom.md"}'); const _sfc_main = { name: "feature_eeprom.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 23); diff --git a/assets/feature_layers.md.8GwBUTZN.js b/assets/feature_layers.md.CTvZ1vMr.js similarity index 99% rename from assets/feature_layers.md.8GwBUTZN.js rename to assets/feature_layers.md.CTvZ1vMr.js index 9a22a1b7b6a..823d4911ffc 100644 --- a/assets/feature_layers.md.8GwBUTZN.js +++ b/assets/feature_layers.md.CTvZ1vMr.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Layers","description":"","frontmatter":{},"headers":[],"relativePath":"feature_layers.md","filePath":"feature_layers.md"}'); const _sfc_main = { name: "feature_layers.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Layers

One of the most powerful and well used features of QMK Firmware is the ability to use layers. For most people, this amounts to a function key that allows for different keys, much like what you would see on a laptop or tablet keyboard.

For a detailed explanation of how the layer stack works, checkout Keymap Overview.

Switching and Toggling Layers

These functions allow you to activate layers in various ways. Note that layers are not generally independent layouts -- multiple layers can be activated at once, and it's typical for layers to use KC_TRNS to allow keypresses to pass through to lower layers. When using momentary layer switching with MO(), LM(), TT(), or LT(), make sure to leave the key on the above layers transparent or it may not work as intended.

Caveats

Currently, the layer argument of LT() is limited to layers 0-15, and the kc argument to the Basic Keycode set, meaning you can't use keycodes like LCTL(), KC_TILD, or anything greater than 0xFF. This is because QMK uses 16-bit keycodes, of which 4 bits are used for the function identifier and 4 bits for the layer, leaving only 8 bits for the keycode.

For a similar reason, the layer argument of LM() is also limited to layers 0-15 and the mod argument must fit within 5 bits. As a consequence, although left and right modifiers are supported by LM(), it is impossible to mix and match left and right modifiers. Specifying at least one right-hand modifier in a combination such as MOD_RALT|MOD_LSFT will convert all the listed modifiers to their right-hand counterpart. So, using the aforementionned mod-mask will actually send Right Alt+Right Shift. Make sure to use the MOD_xxx constants over alternative ways of specifying modifiers when defining your layer-mod key.

LM(1,KC_LSFT)LM(1,MOD_MASK_SHIFT)LM(1,MOD_BIT(KC_LSFT))LM(1,MOD_LSFT)

Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, Tap Dance can be used to accomplish this.

Working with Layers

Care must be taken when switching layers, it's possible to lock yourself into a layer with no way to deactivate that layer (without unplugging your keyboard.) We've created some guidelines to help users avoid the most common problems.

Beginners

If you are just getting started with QMK you will want to keep everything simple. Follow these guidelines when setting up your layers:

Intermediate Users

Sometimes you need more than one base layer. For example, if you want to switch between QWERTY and Dvorak, switch between layouts for different countries, or switch your layout for different videogames. Your base layers should always be the lowest numbered layers. When you have multiple base layers you should always treat them as mutually exclusive. When one base layer is on the others are off.

Advanced Users

Once you have a good feel for how layers work and what you can do, you can get more creative. The rules listed in the beginner section will help you be successful by avoiding some of the tricker details but they can be constraining, especially for ultra-compact keyboard users. Understanding how layers work will allow you to use them in more advanced ways.

Layers stack on top of each other in numerical order. When determining what a keypress does, QMK scans the layers from the top down, stopping when it reaches the first active layer that is not set to KC_TRNS. As a result if you activate a layer that is numerically lower than your current layer, and your current layer (or another layer that is active and higher than your target layer) has something other than KC_TRNS, that is the key that will be sent, not the key on the layer you just activated. This is the cause of most people's "why doesn't my layer get switched" problem.

Sometimes, you might want to switch between layers in a macro or as part of a tap dance routine. layer_on activates a layer, and layer_off deactivates it. More layer-related functions can be found in action_layer.h.

Functions

There are a number of functions (and variables) related to how you can use or manipulate the layers.

FunctionDescription
layer_state_set(layer_mask)Directly sets the layer state (avoid unless you know what you are doing).
layer_clear()Clears all layers (turns them all off).
layer_move(layer)Turns specified layer on, and all other layers off.
layer_on(layer)Turns specified layer on, leaves all other layers in existing state.
layer_off(layer)Turns specified layer off, leaves all other layers in existing state.
layer_invert(layer)Inverts/toggles the state of the specified layer
layer_or(layer_mask)Turns on layers based on matching bits between specifed layer and existing layer state.
layer_and(layer_mask)Turns on layers based on matching enabled bits between specifed layer and existing layer state.
layer_xor(layer_mask)Turns on layers based on non-matching bits between specifed layer and existing layer state.
layer_debug(layer_mask)Prints out the current bit mask and highest active layer to debugger console.
default_layer_set(layer_mask)Directly sets the default layer state (avoid unless you know what you are doing).
default_layer_or(layer_mask)Turns on layers based on matching bits between specifed layer and existing default layer state.
default_layer_and(layer_mask)Turns on layers based on matching enabled bits between specifed layer and existing default layer state.
default_layer_xor(layer_mask)Turns on layers based on non-matching bits between specifed layer and existing default layer state.
default_layer_debug(layer_mask)Prints out the current bit mask and highest active default layer to debugger console.
set_single_persistent_default_layer(layer)Sets the default layer and writes it to persistent memory (EEPROM).
update_tri_layer(x, y, z)Checks if layers x and y are both on, and sets z based on that (on if both on, otherwise off).
update_tri_layer_state(state, x, y, z)Does the same as update_tri_layer(x, y, z), but from layer_state_set_* functions.

In addition to the functions that you can call, there are a number of callback functions that get called every time the layer changes. This passes the layer state to the function, where it can be read or modified.

CallbackDescription
layer_state_set_kb(layer_state_t state)Callback for layer functions, for keyboard.
layer_state_set_user(layer_state_t state)Callback for layer functions, for users.
default_layer_state_set_kb(layer_state_t state)Callback for default layer functions, for keyboard. Called on keyboard initialization.
default_layer_state_set_user(layer_state_t state)Callback for default layer functions, for users. Called on keyboard initialization.

TIP

For additional details on how you can use these callbacks, check out the Layer Change Code document.

It is also possible to check the state of a particular layer using the following functions and macros.

FunctionDescriptionAliases
layer_state_is(layer)Checks if the specified layer is enabled globally.IS_LAYER_ON(layer), IS_LAYER_OFF(layer)
layer_state_cmp(state, layer)Checks state to see if the specified layer is enabled. Intended for use in layer callbacks.IS_LAYER_ON_STATE(state, layer), IS_LAYER_OFF_STATE(state, layer)

Layer Change Code

This runs code every time that the layers get changed. This can be useful for layer indication, or custom layer handling.

Example layer_state_set_* Implementation

This example shows how to set the RGB Underglow lights based on the layer, using the Planck as an example.

c
layer_state_t layer_state_set_user(layer_state_t state) {\n    switch (get_highest_layer(state)) {\n    case _RAISE:\n        rgblight_setrgb (0x00,  0x00, 0xFF);\n        break;\n    case _LOWER:\n        rgblight_setrgb (0xFF,  0x00, 0x00);\n        break;\n    case _PLOVER:\n        rgblight_setrgb (0x00,  0xFF, 0x00);\n        break;\n    case _ADJUST:\n        rgblight_setrgb (0x7A,  0x00, 0xFF);\n        break;\n    default: //  for any other layers, or the default layer\n        rgblight_setrgb (0x00,  0xFF, 0xFF);\n        break;\n    }\n  return state;\n}

Example: Keycode to cycle through layers

This example shows how to implement a custom keycode to cycle through a range of layers.

c
// Define the keycode, `QK_USER` avoids collisions with existing keycodes\nenum keycodes {\n  KC_CYCLE_LAYERS = QK_USER,\n};\n\n// 1st layer on the cycle\n#define LAYER_CYCLE_START 0\n// Last layer on the cycle\n#define LAYER_CYCLE_END   4\n\n// Add the behaviour of this new keycode\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n  switch (keycode) {\n    case KC_CYCLE_LAYERS:\n      // Our logic will happen on presses, nothing is done on releases\n      if (!record->event.pressed) { \n        // We've already handled the keycode (doing nothing), let QMK know so no further code is run unnecessarily\n        return false;\n      }\n\n      uint8_t current_layer = get_highest_layer(layer_state);\n\n      // Check if we are within the range, if not quit\n      if (current_layer > LAYER_CYCLE_END || current_layer < LAYER_CYCLE_START) {\n        return false;\n      }\n\n      uint8_t next_layer = current_layer + 1;\n      if (next_layer > LAYER_CYCLE_END) {\n          next_layer = LAYER_CYCLE_START;\n      }\n      layer_move(next_layer);\n      return false;\n\n    // Process other keycodes normally\n    default:\n      return true;\n  }\n}\n\n// Place `KC_CYCLE_LAYERS` as a keycode in your keymap

Use the IS_LAYER_ON_STATE(state, layer) and IS_LAYER_OFF_STATE(state, layer) macros to check the status of a particular layer.

Outside of layer_state_set_* functions, you can use the IS_LAYER_ON(layer) and IS_LAYER_OFF(layer) macros to check global layer state.

layer_state_set_* Function Documentation

The state is the bitmask of the active layers, as explained in the Keymap Overview

', 43); diff --git a/assets/feature_layers.md.8GwBUTZN.lean.js b/assets/feature_layers.md.CTvZ1vMr.lean.js similarity index 91% rename from assets/feature_layers.md.8GwBUTZN.lean.js rename to assets/feature_layers.md.CTvZ1vMr.lean.js index d8d56de7162..a1ddab4d658 100644 --- a/assets/feature_layers.md.8GwBUTZN.lean.js +++ b/assets/feature_layers.md.CTvZ1vMr.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Layers","description":"","frontmatter":{},"headers":[],"relativePath":"feature_layers.md","filePath":"feature_layers.md"}'); const _sfc_main = { name: "feature_layers.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 43); diff --git a/assets/feature_layouts.md.qcy8hNMO.js b/assets/feature_layouts.md.Cjp6pYRh.js similarity index 99% rename from assets/feature_layouts.md.qcy8hNMO.js rename to assets/feature_layouts.md.Cjp6pYRh.js index 496b3ebd377..29f86ad90bc 100644 --- a/assets/feature_layouts.md.qcy8hNMO.js +++ b/assets/feature_layouts.md.Cjp6pYRh.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Layouts: Using a Keymap with Multiple Keyboards","description":"","frontmatter":{},"headers":[],"relativePath":"feature_layouts.md","filePath":"feature_layouts.md"}'); const _sfc_main = { name: "feature_layouts.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Layouts: Using a Keymap with Multiple Keyboards

The layouts/ folder contains different physical key layouts that can apply to different keyboards.

layouts/\n+ default/\n| + 60_ansi/\n| | + readme.md\n| | + layout.json\n| | + a_good_keymap/\n| | | + keymap.c\n| | | + readme.md\n| | | + config.h\n| | | + rules.mk\n| | + <keymap folder>/\n| | + ...\n| + <layout folder>/\n+ community/\n| + <layout folder>/\n| + ...

The layouts/default/ and layouts/community/ are two examples of layout "repositories" - currently default will contain all of the information concerning the layout, and one default keymap named default_<layout>, for users to use as a reference. community contains all of the community keymaps, with the eventual goal of being split-off into a separate repo for users to clone into layouts/. QMK searches through all folders in layouts/, so it's possible to have multiple repositories here.

Each layout folder is named ([a-z0-9_]) after the physical aspects of the layout, in the most generic way possible, and contains a readme.md with the layout to be defined by the keyboard:

markdown
# 60_ansi\n\n   LAYOUT_60_ansi

New names should try to stick to the standards set by existing layouts, and can be discussed in the PR/Issue.

Supporting a Layout

For a keyboard to support a layout, the variable must be defined in it's <keyboard>.h, and match the number of arguments/keys (and preferably the physical layout):

c
#define LAYOUT_60_ansi KEYMAP_ANSI

The name of the layout must match this regex: [a-z0-9_]+

The folder name must be added to the keyboard's rules.mk:

LAYOUTS = 60_ansi

LAYOUTS can be set in any keyboard folder level's rules.mk:

LAYOUTS = 60_iso

but the LAYOUT_<layout> variable must be defined in <folder>.h as well.

Building a Keymap

You should be able to build the keyboard keymap with a command in this format:

make <keyboard>:<layout>

Conflicting layouts

When a keyboard supports multiple layout options,

LAYOUTS = ortho_4x4 ortho_4x12

And a layout exists for both options,

layouts/\n+ community/\n| + ortho_4x4/\n| | + <layout>/\n| | | + ...\n| + ortho_4x12/\n| | + <layout>/\n| | | + ...\n| + ...

The FORCE_LAYOUT argument can be used to specify which layout to build

make <keyboard>:<layout> FORCE_LAYOUT=ortho_4x4\nmake <keyboard>:<layout> FORCE_LAYOUT=ortho_4x12

Tips for Making Layouts Keyboard-Agnostic

Includes

Instead of using #include "planck.h", you can use this line to include whatever <keyboard>.h (<folder>.h should not be included here) file that is being compiled:

c
#include QMK_KEYBOARD_H

If you want to keep some keyboard-specific code, you can use these variables to escape it with an #ifdef statement:

For example:

c
#ifdef KEYBOARD_planck\n    #ifdef KEYBOARD_planck_rev4\n        planck_rev4_function();\n    #endif\n#endif

Note that the names are lowercase and match the folder/file names for the keyboard/revision exactly.

Keymaps

In order to support both split and non-split keyboards with the same layout, you need to use the keyboard agnostic LAYOUT_<layout name> macro in your keymap. For instance, in order for a Let's Split and Planck to share the same layout file, you need to use LAYOUT_ortho_4x12 instead of LAYOUT_planck_grid or just {} for a C array.

', 37); diff --git a/assets/feature_layouts.md.qcy8hNMO.lean.js b/assets/feature_layouts.md.Cjp6pYRh.lean.js similarity index 91% rename from assets/feature_layouts.md.qcy8hNMO.lean.js rename to assets/feature_layouts.md.Cjp6pYRh.lean.js index d48a490634f..69569f8686a 100644 --- a/assets/feature_layouts.md.qcy8hNMO.lean.js +++ b/assets/feature_layouts.md.Cjp6pYRh.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Layouts: Using a Keymap with Multiple Keyboards","description":"","frontmatter":{},"headers":[],"relativePath":"feature_layouts.md","filePath":"feature_layouts.md"}'); const _sfc_main = { name: "feature_layouts.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 37); diff --git a/assets/feature_macros.md.By1M5R8G.js b/assets/feature_macros.md.DxDpi-Vz.js similarity index 99% rename from assets/feature_macros.md.By1M5R8G.js rename to assets/feature_macros.md.DxDpi-Vz.js index cacb8965a1f..f4fe769865b 100644 --- a/assets/feature_macros.md.By1M5R8G.js +++ b/assets/feature_macros.md.DxDpi-Vz.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Macros","description":"","frontmatter":{},"headers":[],"relativePath":"feature_macros.md","filePath":"feature_macros.md"}'); const _sfc_main = { name: "feature_macros.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Macros

Macros allow you to send multiple keystrokes when pressing just one key. QMK has a number of ways to define and use macros. These can do anything you want: type common phrases for you, copypasta, repetitive game movements, or even help you code.

WARNING

Security Note: While it is possible to use macros to send passwords, credit card numbers, and other sensitive information it is a supremely bad idea to do so. Anyone who gets a hold of your keyboard will be able to access that information by opening a text editor.

Using Macros In JSON Keymaps

You can define up to 32 macros in a keymap.json file, as used by Configurator, and qmk compile. You can define these macros in a list under the macros keyword, like this:

json
{\n    "keyboard": "handwired/my_macropad",\n    "keymap": "my_keymap",\n    "macros": [\n        [\n            {"action":"down", "keycodes": ["LSFT"]},\n            "hello world1",\n            {"action": "up","keycodes": ["LSFT"]}\n        ],\n        [\n            {"action":"tap", "keycodes": ["LCTL", "LALT", "DEL"]}\n        ],\n        [\n            "ding!",\n            {"action":"beep"}\n        ],\n        [\n            {"action":"tap", "keycodes": ["F1"]},\n            {"action":"delay", "duration": 1000},\n            {"action":"tap", "keycodes": ["PGDN"]}\n        ]\n    ],\n    "layout": "LAYOUT_all",\n    "layers": [\n        ["QK_MACRO_0", "QK_MACRO_1", "QK_MACRO_2", "QK_MACRO_3"]\n    ]\n}

Selecting Your Host Keyboard Layout

If you type in a language other than English, or use a non-QWERTY layout like Colemak, Dvorak, or Workman, you may have set your computer's input language to match this layout. This presents a challenge when creating macros - you may need to type different keys to get the same letters! To address this you can add the host_language key to your keymap.json, like so:

json
{\n    "keyboard": "handwired/my_macropad",\n    "keymap": "my_keymap",\n    "host_language": "dvorak",\n    "macros": [\n        ["Hello, World!"]\n    ],\n    "layout": "LAYOUT_all",\n    "layers": [\n        ["QK_MACRO_0"]\n    ]\n}

The current list of available languages is:

belgianbepobr_abnt2canadian_multilingual
colemakcroatianczechdanish
dvorak_frdvorakdvpestonian
finnishfr_chfrench_afnorfrench
french_osxgerman_chgermangerman_osx
hungarianicelandicitalianitalian_osx_ansi
italian_osx_isojislatvianlithuanian_azerty
lithuanian_qwertynormannorwegianportuguese
portuguese_osx_isoromanianserbian_latinslovak
slovenianspanish_dvorakspanish_latin_americaspanish
swedishturkish_fturkish_quk
us_internationalworkmanworkman_zxcvm

Macro Basics

Each macro is an array consisting of strings and objects (dictionaries). Strings are typed to your computer while objects allow you to control how your macro is typed out.

Object Format

All objects have one required key: action. This tells QMK what the object does. There are currently 5 actions: beep, delay, down, tap, up

Only basic keycodes (prefixed by KC_) are supported. Do not include the KC_ prefix when listing keycodes.

Using Macros in C Keymaps

SEND_STRING() & process_record_user

See also: Send String

Sometimes you want a key to type out words or phrases. For the most common situations, we've provided SEND_STRING(), which will type out a string (i.e. a sequence of characters) for you. All ASCII characters that are easily translatable to a keycode are supported (e.g. qmk 123\\n\\t).

Here is an example keymap.c for a two-key keyboard:

c
enum custom_keycodes {\n    QMKBEST = SAFE_RANGE,\n};\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n    switch (keycode) {\n    case QMKBEST:\n        if (record->event.pressed) {\n            // when keycode QMKBEST is pressed\n            SEND_STRING("QMK is the best thing ever!");\n        } else {\n            // when keycode QMKBEST is released\n        }\n        break;\n    }\n    return true;\n};\n\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n    [0] = {\n        {QMKBEST, KC_ESC},\n        // ...\n    },\n};

What happens here is this: We first define a new custom keycode in the range not occupied by any other keycodes. Then we use the process_record_user function, which is called whenever a key is pressed or released, to check if our custom keycode has been activated. If yes, we send the string "QMK is the best thing ever!" to the computer via the SEND_STRING macro (this is a C preprocessor macro, not to be confused with QMK macros). We return true to indicate to the caller that the key press we just processed should continue to be processed as normal (as we didn't replace or alter the functionality). Finally, we define the keymap so that the first button activates our macro and the second button is just an escape button.

?>It is recommended to use the SAFE_RANGE macro as per Customizing Functionality.

You might want to add more than one macro. You can do that by adding another keycode and adding another case to the switch statement, like so:

c
enum custom_keycodes {\n    QMKBEST = SAFE_RANGE,\n    QMKURL,\n    MY_OTHER_MACRO,\n};\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n    switch (keycode) {\n    case QMKBEST:\n        if (record->event.pressed) {\n            // when keycode QMKBEST is pressed\n            SEND_STRING("QMK is the best thing ever!");\n        } else {\n            // when keycode QMKBEST is released\n        }\n        break;\n\n    case QMKURL:\n        if (record->event.pressed) {\n            // when keycode QMKURL is pressed\n            SEND_STRING("https://qmk.fm/\\n");\n        } else {\n            // when keycode QMKURL is released\n        }\n        break;\n\n    case MY_OTHER_MACRO:\n        if (record->event.pressed) {\n           SEND_STRING(SS_LCTL("ac")); // selects all and copies\n        }\n        break;\n    }\n    return true;\n};\n\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n    [0] = {\n        {MY_CUSTOM_MACRO, MY_OTHER_MACRO},\n        // ...\n    },\n};

TIP

An enumerated list of custom keycodes (enum custom_keycodes) must be declared before keymaps[] array, process_record_user() and any other function that use the list for the compiler to recognise it.

Advanced Macros

In addition to the process_record_user() function, is the post_process_record_user() function. This runs after process_record and can be used to do things after a keystroke has been sent. This is useful if you want to have a key pressed before and released after a normal key, for instance.

In this example, we modify most normal keypresses so that F22 is pressed before the keystroke is normally sent, and release it only after it's been released.

c
static uint8_t f22_tracker;\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n  switch (keycode) {\n    case KC_A ... KC_F21: //notice how it skips over F22\n    case KC_F23 ... KC_EXSEL: //exsel is the last one before the modifier keys\n      if (record->event.pressed) {\n        register_code(KC_F22); //this means to send F22 down\n        f22_tracker++;\n        register_code(keycode);\n        return false;\n      }\n      break;\n  }\n  return true;\n}\n\nvoid post_process_record_user(uint16_t keycode, keyrecord_t *record) {\n  switch (keycode) {\n    case KC_A ... KC_F21: //notice how it skips over F22\n    case KC_F23 ... KC_EXSL: //exsel is the last one before the modifier keys\n      if (!record->event.pressed) {\n        f22_tracker--;\n        if (!f22_tracker) {\n            unregister_code(KC_F22); //this means to send F22 up\n        }\n      }\n      break;\n  }\n}

TAP, DOWN and UP

You may want to use keys in your macros that you can't write down, such as Ctrl or Home. You can send arbitrary keycodes by wrapping them in:

For example:

c
SEND_STRING(SS_TAP(X_HOME));

Would tap KC_HOME - note how the prefix is now X_, and not KC_. You can also combine this with other strings, like this:

c
SEND_STRING("VE"SS_TAP(X_HOME)"LO");

Which would send "VE" followed by a KC_HOME tap, and "LO" (spelling "LOVE" if on a newline).

Delays can be also added to the string:

For example:

c
SEND_STRING("VE" SS_DELAY(1000) SS_TAP(X_HOME) "LO");

Which would send "VE" followed by a 1-second delay, then a KC_HOME tap, and "LO" (spelling "LOVE" if on a newline, but delayed in the middle).

There's also a couple of mod shortcuts you can use:

These press the respective modifier, send the supplied string and then release the modifier. They can be used like this:

c
SEND_STRING(SS_LCTL("a"));

Which would send Left Control+a (Left Control down, a, Left Control up) - notice that they take strings (eg "k"), and not the X_K keycodes.

Alternative Keymaps

By default, it assumes a US keymap with a QWERTY layout; if you want to change that (e.g. if your OS uses software Colemak), include this somewhere in your keymap:

c
#include "sendstring_colemak.h"

Strings in Memory

If for some reason you're manipulating strings and need to print out something you just generated (instead of being a literal, constant string), you can use send_string(), like this:

c
char my_str[4] = "ok.";\nsend_string(my_str);

The shortcuts defined above won't work with send_string(), but you can separate things out to different lines if needed:

c
char my_str[4] = "ok.";\nSEND_STRING("I said: ");\nsend_string(my_str);\nSEND_STRING(".."SS_TAP(X_END));

Advanced Macro Functions

There are some functions you may find useful in macro-writing. Keep in mind that while you can write some fairly advanced code within a macro, if your functionality gets too complex you may want to define a custom keycode instead. Macros are meant to be simple.

TIP

You can also use the functions described in Useful function and Checking modifier state for additional functionality. For example, reset_keyboard() allows you to reset the keyboard as part of a macro and get_mods() & MOD_MASK_SHIFT lets you check for the existence of active shift modifiers.

record->event.pressed

This is a boolean value that can be tested to see if the switch is being pressed or released. An example of this is

c
    if (record->event.pressed) {\n        // on keydown\n    } else {\n        // on keyup\n    }

register_code(<kc>);

This sends the <kc> keydown event to the computer. Some examples would be KC_ESC, KC_C, KC_4, and even modifiers such as KC_LSFT and KC_LGUI.

unregister_code(<kc>);

Parallel to register_code function, this sends the <kc> keyup event to the computer. If you don't use this, the key will be held down until it's sent.

tap_code(<kc>);

Sends register_code(<kc>) and then unregister_code(<kc>). This is useful if you want to send both the press and release events ("tap" the key, rather than hold it).

If TAP_CODE_DELAY is defined (default 0), this function waits that many milliseconds before calling unregister_code(<kc>). This can be useful when you are having issues with taps (un)registering.

If the keycode is KC_CAPS, it waits TAP_HOLD_CAPS_DELAY milliseconds instead (default 80), as macOS prevents accidental Caps Lock activation by waiting for the key to be held for a certain amount of time.

tap_code_delay(<kc>, <delay>);

Like tap_code(<kc>), but with a delay parameter for specifying arbitrary intervals before sending the unregister event.

register_code16(<kc>);, unregister_code16(<kc>);, tap_code16(<kc>); and tap_code16_delay(<kc>, <delay>);

These functions work similar to their regular counterparts, but allow you to use modded keycodes (with Shift, Alt, Control, and/or GUI applied to them).

Eg, you could use register_code16(S(KC_5)); instead of registering the mod, then registering the keycode.

clear_keyboard();

This will clear all mods and keys currently pressed.

clear_mods();

This will clear all mods currently pressed.

clear_keyboard_but_mods();

This will clear all keys besides the mods currently pressed.

Advanced Example:

Super ALT↯TAB

This macro will register KC_LALT and tap KC_TAB, then wait for 1000ms. If the key is tapped again, it will send another KC_TAB; if there is no tap, KC_LALT will be unregistered, thus allowing you to cycle through windows.

c
bool is_alt_tab_active = false; // ADD this near the beginning of keymap.c\nuint16_t alt_tab_timer = 0;     // we will be using them soon.\n\nenum custom_keycodes {          // Make sure have the awesome keycode ready\n  ALT_TAB = SAFE_RANGE,\n};\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n  switch (keycode) { // This will do most of the grunt work with the keycodes.\n    case ALT_TAB:\n      if (record->event.pressed) {\n        if (!is_alt_tab_active) {\n          is_alt_tab_active = true;\n          register_code(KC_LALT);\n        }\n        alt_tab_timer = timer_read();\n        register_code(KC_TAB);\n      } else {\n        unregister_code(KC_TAB);\n      }\n      break;\n  }\n  return true;\n}\n\nvoid matrix_scan_user(void) { // The very important timer.\n  if (is_alt_tab_active) {\n    if (timer_elapsed(alt_tab_timer) > 1000) {\n      unregister_code(KC_LALT);\n      is_alt_tab_active = false;\n    }\n  }\n}
', 87); diff --git a/assets/feature_macros.md.By1M5R8G.lean.js b/assets/feature_macros.md.DxDpi-Vz.lean.js similarity index 91% rename from assets/feature_macros.md.By1M5R8G.lean.js rename to assets/feature_macros.md.DxDpi-Vz.lean.js index 2802e42fc22..f206ea812b1 100644 --- a/assets/feature_macros.md.By1M5R8G.lean.js +++ b/assets/feature_macros.md.DxDpi-Vz.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Macros","description":"","frontmatter":{},"headers":[],"relativePath":"feature_macros.md","filePath":"feature_macros.md"}'); const _sfc_main = { name: "feature_macros.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 87); diff --git a/assets/feature_userspace.md.BsmY9yWw.js b/assets/feature_userspace.md.BWBTJPLX.js similarity index 99% rename from assets/feature_userspace.md.BsmY9yWw.js rename to assets/feature_userspace.md.BWBTJPLX.js index daafe30be11..6c9b74cbf2a 100644 --- a/assets/feature_userspace.md.BsmY9yWw.js +++ b/assets/feature_userspace.md.BWBTJPLX.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Userspace: Sharing Code Between Keymaps","description":"","frontmatter":{},"headers":[],"relativePath":"feature_userspace.md","filePath":"feature_userspace.md"}'); const _sfc_main = { name: "feature_userspace.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Userspace: Sharing Code Between Keymaps

WARNING

Please note, userspace submissions to the upstream qmk/qmk_firmware repository are no longer being accepted. The userspace feature itself remains functional and can be configured locally.

If you use more than one keyboard with a similar keymap, you might see the benefit in being able to share code between them. Create your own folder in users/ named the same as your keymap (ideally your GitHub username, <name>) with the following structure:

All this only happens when you build a keymap named <name>, like this:

make planck:<name>\n

For example,

make planck:jack\n

Will include the /users/jack/ folder in the path, along with /users/jack/rules.mk.

WARNING

This name can be overridden, if needed.

Rules.mk

The rules.mk is one of the two files that gets processed automatically. This is how you add additional source files (such as <name>.c) will be added when compiling.

It's highly recommended that you use <name>.c as the default source file to be added. And to add it, you need to add it the SRC in rules.mk like this:

SRC += <name>.c\n

Additional files may be added in the same way - it's recommended you have one named <name>.c/.h to start off with, though.

The /users/<name>/rules.mk file will be included in the build after the rules.mk from your keymap. This allows you to have features in your userspace rules.mk that depend on individual QMK features that may or may not be available on a specific keyboard.

For example, if you have RGB control features shared between all your keyboards that support RGB lighting, you can add support for that if the RGBLIGHT feature is enabled:

make
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)\n  # Include my fancy rgb functions source here\n  SRC += cool_rgb_stuff.c\nendif

Alternatively, you can define RGB_ENABLE in your keymap's rules.mk and then check for the variable in your userspace's rules.mk like this:

make
ifdef RGB_ENABLE\n  # Include my fancy rgb functions source here\n  SRC += cool_rgb_stuff.c\nendif

Override default userspace

By default the userspace used will be the same as the keymap name. In some situations this isn't desirable. For instance, if you use the layout feature you can't use the same name for different keymaps (e.g. ANSI and ISO). You can name your layouts mylayout-ansi and mylayout-iso and add the following line to your layout's rules.mk:

USER_NAME := mylayout

This is also useful if you have multiple different keyboards with different features physically present on the board (such as one with RGB Lights, and one with Audio, or different number of LEDs, or connected to a different PIN on the controller).

Configuration Options (config.h)

Additionally, config.h here will be processed like the same file in your keymap folder. This is handled separately from the <name>.h file.

The reason for this, is that <name>.h won't be added in time to add settings (such as #define TAPPING_TERM 100), and including the <name.h> file in any config.h files will result in compile issues.

!>You should use the config.h for configuration options, and the <name>.h file for user or keymap specific settings (such as the enum for layer or keycodes)

Readme (readme.md)

Please include authorship (your name, GitHub username, email), and optionally a license that's GPL compatible.

You can use this as a template:

Copyright <year> <name> <email> @<github_username>\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 2 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program.  If not, see <http://www.gnu.org/licenses/>.

You'd want to replace the year, name, email and GitHub username with your info.

Additionally, this is a good place to document your code, if you wish to share it with others.

Build All Keyboards That Support a Specific Keymap

Want to check all your keymaps build in a single command? You can run:

make all:<name>\n

For example,

make all:jack\n

This is ideal for when you want ensure everything compiles successfully when preparing a Pull request.

Examples

For a brief example, checkout /users/_example/.
For a more complicated example, checkout /users/drashna/'s userspace.

Customized Functions

QMK has a bunch of functions that have _quantum, _kb, and _user versions that you can use. You will pretty much always want to use the user version of these functions. But the problem is that if you use them in your userspace, then you don't have a version that you can use in your keymap.

However, you can actually add support for keymap version, so that you can use it in both your userspace and your keymap!

For instance, let's look at the layer_state_set_user() function. You can enable the Tri Layer State functionality on all of your boards, while also retaining the Tri Layer functionality in your keymap.c files.

In your <name.c> file, you'd want to add this:

c
__attribute__ ((weak))\nlayer_state_t layer_state_set_keymap (layer_state_t state) {\n  return state;\n}\n\nlayer_state_t layer_state_set_user (layer_state_t state) {\n  state = update_tri_layer_state(state, 2, 3, 5);\n  return layer_state_set_keymap (state);\n}

The __attribute__ ((weak)) part tells the compiler that this is a placeholder function that can then be replaced by a version in your keymap.c. That way, you don't need to add it to your keymap.c, but if you do, you won't get any conflicts because the function is the same name.

The _keymap part here doesn't matter, it just needs to be something other than _quantum, _kb, or _user, since those are already in use. So you could use layer_state_set_mine, layer_state_set_fn, or anything else.

You can see a list of this and other common functions in template.c in users/drashna.

Custom Features

Since the Userspace feature can support a staggering number of boards, you may have boards that you want to enable certain functionality for, but not for others. And you can actually create "features" that you can enable or disable in your own userspace.

For instance, if you wanted to have a bunch of macros available, but only on certain boards (to save space), you could "hide" them being a #ifdef MACROS_ENABLED, and then enable it per board. To do this, add this to your rules.mk

make
ifeq ($(strip $(MACROS_ENABLED)), yes)\n    OPT_DEFS += -DMACROS_ENABLED\nendif

The OPT_DEFS setting causes MACROS_ENABLED to be defined for your keyboards (note the -D in front of the name), and you could use #ifdef MACROS_ENABLED to check the status in your c/h files, and handle that code based on that.

Then you add MACROS_ENABLED = yes to the rules.mk for you keymap to enable this feature and the code in your userspace.

And in your process_record_user function, you'd do something like this:

c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {\n  switch (keycode) {\n#ifdef MACROS_ENABLED\n  case MACRO1:\n    if (!record->event.pressed) {\n      SEND_STRING("This is macro 1!");\n    }\n    break;\n  case MACRO2:\n    if (!record->event.pressed) {\n      SEND_STRING("This is macro 2!");\n    }\n    break;\n#endif\n  }\n  return true;\n}

Consolidated Macros

If you wanted to consolidate macros and other functions into your userspace for all of your keymaps, you can do that. This builds upon the Customized Functions example above. This lets you maintain a bunch of macros that are shared between the different keyboards, and allow for keyboard specific macros, too.

First, you'd want to go through all of your keymap.c files and replace process_record_user with process_record_keymap instead. This way, you can still use keyboard specific codes on those boards, and use your custom "global" keycodes as well. You'll also want to replace SAFE_RANGE with NEW_SAFE_RANGE so that you wont have any overlapping keycodes

Then add #include "<name>.h" to all of your keymap.c files. This allows you to use these new keycodes without having to redefine them in each keymap.

Once you've done that, you'll want to set the keycode definitions that you need to the <name>.h file. For instance:

c
#pragma once\n\n#include "quantum.h"\n#include "action.h"\n#include "version.h"\n\n// Define all of\nenum custom_keycodes {\n  KC_MAKE = SAFE_RANGE,\n  NEW_SAFE_RANGE  //use "NEW_SAFE_RANGE" for keymap specific codes\n};

Now you want to create the <name>.c file, and add this content to it:

c
#include "<name>.h"\n\n__attribute__ ((weak))\nbool process_record_keymap(uint16_t keycode, keyrecord_t *record) {\n  return true;\n}\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n  switch (keycode) {\n    case KC_MAKE:  // Compiles the firmware, and adds the flash command based on keyboard bootloader\n            if (!record->event.pressed) {\n            uint8_t temp_mod = get_mods();\n            uint8_t temp_osm = get_oneshot_mods();\n            clear_mods(); clear_oneshot_mods();\n            SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP);\n    #ifndef FLASH_BOOTLOADER\n            if ((temp_mod | temp_osm) & MOD_MASK_SHIFT)\n    #endif\n            {\n                SEND_STRING(":flash");\n            }\n            if ((temp_mod | temp_osm) & MOD_MASK_CTRL) {\n                SEND_STRING(" -j8 --output-sync");\n            }\n            tap_code(KC_ENT);\n            set_mods(temp_mod);\n        }\n        break;\n\n  }\n  return process_record_keymap(keycode, record);\n}

For boards that may not have a shift button (such as on a macro pad), we need a way to always include the bootloader option. To do that, add the following to the rules.mk in your userspace folder:

make
ifeq ($(strip $(FLASH_BOOTLOADER)), yes)\n    OPT_DEFS += -DFLASH_BOOTLOADER\nendif

This will add a new KC_MAKE keycode that can be used in any of your keymaps. And this keycode will output make <keyboard>:<keymap>, making frequent compiling easier. And this will work with any keyboard and any keymap as it will output the current boards info, so that you don't have to type this out every time.

Also, holding Shift will add the flash target (:flash) to the command. Holding Control will add some commands that will speed up compiling time by processing multiple files at once.

And for the boards that lack a shift key, or that you want to always attempt the flashing part, you can add FLASH_BOOTLOADER = yes to the rules.mk of that keymap.

TIP

This should flash the newly compiled firmware automatically, using the correct utility, based on the bootloader settings (or default to just generating the HEX file). However, it should be noted that this may not work on all systems. AVRDUDE doesn't work on WSL, namely.

', 73); diff --git a/assets/feature_userspace.md.BsmY9yWw.lean.js b/assets/feature_userspace.md.BWBTJPLX.lean.js similarity index 91% rename from assets/feature_userspace.md.BsmY9yWw.lean.js rename to assets/feature_userspace.md.BWBTJPLX.lean.js index a976c53854c..80fdcd9d29f 100644 --- a/assets/feature_userspace.md.BsmY9yWw.lean.js +++ b/assets/feature_userspace.md.BWBTJPLX.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Userspace: Sharing Code Between Keymaps","description":"","frontmatter":{},"headers":[],"relativePath":"feature_userspace.md","filePath":"feature_userspace.md"}'); const _sfc_main = { name: "feature_userspace.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 73); diff --git a/assets/features_audio.md.DWNYte3W.js b/assets/features_audio.md.Dy0ToeLW.js similarity index 99% rename from assets/features_audio.md.DWNYte3W.js rename to assets/features_audio.md.Dy0ToeLW.js index f58e0a040c9..2f2b251ae24 100644 --- a/assets/features_audio.md.DWNYte3W.js +++ b/assets/features_audio.md.Dy0ToeLW.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Audio","description":"","frontmatter":{},"headers":[],"relativePath":"features/audio.md","filePath":"features/audio.md"}'); const _sfc_main = { name: "features/audio.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Audio

Your keyboard can make sounds! If you've got a spare pin you can hook up a simple speaker and make it beep. You can use those beeps to indicate layer transitions, modifiers, special keys, or just to play some funky 8bit tunes.

To activate this feature, add AUDIO_ENABLE = yes to your rules.mk.

AVR based boards

On Atmega32U4 based boards, up to two simultaneous tones can be rendered. With one speaker connected to a PWM capable pin on PORTC driven by timer 3 and the other on one of the PWM pins on PORTB driven by timer 1.

The following pins can be configured as audio outputs in config.h - for one speaker set either one out of:

and optionally, for a second speaker, one of:

Wiring

per speaker is - for example with a piezo buzzer - the black lead to Ground, and the red lead connected to the selected AUDIO_PIN for the primary; and similarly with AUDIO_PIN_ALT for the secondary.

ARM based boards

for more technical details, see the notes on Audio driver.

DAC (basic)

Most STM32 MCUs have DAC peripherals, with a notable exception of the STM32F1xx series. Generally, the DAC peripheral drives pins A4 or A5. To enable DAC-based audio output on STM32 devices, add AUDIO_DRIVER = dac_basic to rules.mk and set in config.h either:

#define AUDIO_PIN A4 or #define AUDIO_PIN A5

the other DAC channel can optionally be used with a secondary speaker, just set:

#define AUDIO_PIN_ALT A4 or #define AUDIO_PIN_ALT A5

Do note though that the dac_basic driver is only capable of reproducing one tone per speaker/channel at a time, for more tones simultaneously, try the dac_additive driver.

Wiring:

for two piezos, for example configured as AUDIO_PIN A4 and AUDIO_PIN_ALT A5 would be: red lead to A4 and black to Ground, and similarly with the second one: A5 = red, and Ground = black

another alternative is to drive one piezo with both DAC pins - for an extra "push". wiring red to A4 and black to A5 (or the other way round) and add #define AUDIO_PIN_ALT_AS_NEGATIVE to config.h

Proton-C Example:

The Proton-C comes (optionally) with one 'builtin' piezo, which is wired to A4+A5. For this board config.h would include these defines:

c
#define AUDIO_PIN A5\n#define AUDIO_PIN_ALT A4\n#define AUDIO_PIN_ALT_AS_NEGATIVE

DAC (additive)

Another option, besides dac_basic (which produces sound through a square-wave), is to use the DAC to do additive wave synthesis. With a number of predefined wave-forms or by providing your own implementation to generate samples on the fly. To use this feature set AUDIO_DRIVER = dac_additive in your rules.mk, and select in config.h EITHER #define AUDIO_PIN A4 or #define AUDIO_PIN A5.

The used waveform defaults to sine, but others can be selected by adding one of the following defines to config.h:

Should you rather choose to generate and use your own sample-table with the DAC unit, implement uint16_t dac_value_generate(void) with your keyboard - for an example implementation see keyboards/planck/keymaps/synth_sample or keyboards/planck/keymaps/synth_wavetable

PWM (software)

if the DAC pins are unavailable (or the MCU has no usable DAC at all, like STM32F1xx); PWM can be an alternative. Note that there is currently only one speaker/pin supported.

set in rules.mk:

AUDIO_DRIVER = pwm_software and in config.h: #define AUDIO_PIN C13 (can be any pin) to have the selected pin output a pwm signal, generated from a timer callback which toggles the pin in software.

Wiring

the usual piezo wiring: red goes to the selected AUDIO_PIN, black goes to ground.

OR if you can chose to drive one piezo with two pins, for example #define AUDIO_PIN B1, #define AUDIO_PIN_ALT B2 in config.h, with #define AUDIO_PIN_ALT_AS_NEGATIVE - then the red lead could go to B1, the black to B2.

PWM (hardware)

STM32F1xx have to fall back to using PWM, but can do so in hardware; but again on currently only one speaker/pin.

AUDIO_DRIVER = pwm_hardware in rules.mk, and in config.h: #define AUDIO_PIN A8#define AUDIO_PWM_DRIVER PWMD1#define AUDIO_PWM_CHANNEL 1 (as well as #define AUDIO_PWM_PAL_MODE 42 if you are on STM32F2 or larger) which will use Timer 1 to directly drive pin PA8 through the PWM hardware (TIM1_CH1 = PA8). Should you want to use the pwm-hardware on another pin and timer - be ready to dig into the STM32 data-sheet to pick the right TIMx_CHy and pin-alternate function.

Tone Multiplexing

Since most drivers can only render one tone per speaker at a time (with the one exception: arm dac-additive) there also exists a "workaround-feature" that does time-slicing/multiplexing - which does what the name implies: cycle through a set of active tones (e.g. when playing chords in Music Mode) at a given rate, and put one tone at a time out through the one/few speakers that are available.

To enable this feature, and configure a starting-rate, add the following defines to config.h:

c
#define AUDIO_ENABLE_TONE_MULTIPLEXING\n#define AUDIO_TONE_MULTIPLEXING_RATE_DEFAULT 10

The audio core offers interface functions to get/set/change the tone multiplexing rate from within keymap.c.

Songs

There's a couple of different sounds that will automatically be enabled without any other configuration:

STARTUP_SONG // plays when the keyboard starts up (audio.c)\nGOODBYE_SONG // plays when you press the QK_BOOT key (quantum.c)\nAG_NORM_SONG // plays when you press AG_NORM (quantum.c)\nAG_SWAP_SONG // plays when you press AG_SWAP (quantum.c)\nCG_NORM_SONG // plays when you press CG_NORM (quantum.c)\nCG_SWAP_SONG // plays when you press CG_SWAP (quantum.c)\nMUSIC_ON_SONG // plays when music mode is activated (process_music.c)\nMUSIC_OFF_SONG // plays when music mode is deactivated (process_music.c)\nCHROMATIC_SONG // plays when the chromatic music mode is selected (process_music.c)\nGUITAR_SONG // plays when the guitar music mode is selected (process_music.c)\nVIOLIN_SONG // plays when the violin music mode is selected (process_music.c)\nMAJOR_SONG // plays when the major music mode is selected (process_music.c)

You can override the default songs by doing something like this in your config.h:

c
#ifdef AUDIO_ENABLE\n# define STARTUP_SONG SONG(STARTUP_SOUND)\n#endif

A full list of sounds can be found in quantum/audio/song_list.h - feel free to add your own to this list! All available notes can be seen in quantum/audio/musical_notes.h.

Additionally, if you with to maintain your own list of songs (such as ones that may be copyrighted) and not have them added to the repo, you can create a user_song_list.h file and place it in your keymap (or userspace) folder. This file will be automatically included, it just needs to exist.

To play a custom sound at a particular time, you can define a song like this (near the top of the file):

c
float my_song[][2] = SONG(QWERTY_SOUND);

And then play your song like this:

c
PLAY_SONG(my_song);

Alternatively, you can play it in a loop like this:

c
PLAY_LOOP(my_song);

It's advised that you wrap all audio features in #ifdef AUDIO_ENABLE / #endif to avoid causing problems when audio isn't built into the keyboard.

The available keycodes for audio are:

KeyAliasesDescription
QK_AUDIO_ONAU_ONTurns on Audio Feature
QK_AUDIO_OFFAU_OFFTurns off Audio Feature
QK_AUDIO_TOGGLEAU_TOGGToggles Audio state

WARNING

These keycodes turn all of the audio functionality on and off. Turning it off means that audio feedback, audio clicky, music mode, etc. are disabled, completely.

Audio Config

SettingsDefaultDescription
AUDIO_PINNot definedConfigures the pin that the speaker is connected to.
AUDIO_PIN_ALTNot definedConfigures the pin for a second speaker or second pin connected to one speaker.
AUDIO_PIN_ALT_AS_NEGATIVENot definedEnables support for one speaker connected to two pins.
AUDIO_INIT_DELAYNot definedEnables delay during startup song to accomidate for USB startup issues.
AUDIO_ENABLE_TONE_MULTIPLEXINGNot definedEnables time splicing/multiplexing to create multiple tones simutaneously.
AUDIO_POWER_CONTROL_PINNot definedEnables power control code to enable or cut off power to speaker (such as with PAM8302 amp).
AUDIO_POWER_CONTROL_PIN_ON_STATE1The state of the audio power control pin when audio is "on" - 1 for high, 0 for low.
STARTUP_SONGSTARTUP_SOUNDPlays when the keyboard starts up (audio.c)
GOODBYE_SONGGOODBYE_SOUNDPlays when you press the QK_BOOT key (quantum.c)
AG_NORM_SONGAG_NORM_SOUNDPlays when you press AG_NORM (process_magic.c)
AG_SWAP_SONGAG_SWAP_SOUNDPlays when you press AG_SWAP (process_magic.c)
CG_NORM_SONGAG_NORM_SOUNDPlays when you press CG_NORM (process_magic.c)
CG_SWAP_SONGAG_SWAP_SOUNDPlays when you press CG_SWAP (process_magic.c)
MUSIC_ON_SONGMUSIC_ON_SOUNDPlays when music mode is activated (process_music.c)
MUSIC_OFF_SONGMUSIC_OFF_SOUNDPlays when music mode is deactivated (process_music.c)
MIDI_ON_SONGMUSIC_ON_SOUNDPlays when midi mode is activated (process_music.c)
MIDI_OFF_SONGMUSIC_OFF_SOUNDPlays when midi mode is deactivated (process_music.c)
CHROMATIC_SONGCHROMATIC_SOUNDPlays when the chromatic music mode is selected (process_music.c)
GUITAR_SONGGUITAR_SOUNDPlays when the guitar music mode is selected (process_music.c)
VIOLIN_SONGVIOLIN_SOUNDPlays when the violin music mode is selected (process_music.c)
MAJOR_SONGMAJOR_SOUNDPlays when the major music mode is selected (process_music.c)
DEFAULT_LAYER_SONGSNot definedPlays song when switched default layers with set_single_persistent_default_layer(layer)(quantum.c).
SENDSTRING_BELLNot definedPlays chime when the "enter" ("\\a") character is sent (send_string.c)

Tempo

the 'speed' at which SONGs are played is dictated by the set Tempo, which is measured in beats-per-minute. Note lengths are defined relative to that. The initial/default tempo is set to 120 bpm, but can be configured by setting TEMPO_DEFAULT in config.c. There is also a set of functions to modify the tempo from within the user/keymap code:

c
void audio_set_tempo(uint8_t tempo);\nvoid audio_increase_tempo(uint8_t tempo_change);\nvoid audio_decrease_tempo(uint8_t tempo_change);

ARM Audio Volume

For ARM devices, you can adjust the DAC sample values. If your board is too loud for you or your coworkers, you can set the max using AUDIO_DAC_SAMPLE_MAX in your config.h:

c
#define AUDIO_DAC_SAMPLE_MAX 4095U

the DAC usually runs in 12Bit mode, hence a volume of 100% = 4095U

Note: this only adjusts the volume aka 'works' if you stick to WAVEFORM_SQUARE, since its samples are generated on the fly - any other waveform uses a hardcoded/precomputed sample-buffer.

Voices

Aka "audio effects", different ones can be enabled by setting in config.h these defines: #define AUDIO_VOICES to enable the feature, and #define AUDIO_VOICE_DEFAULT something to select a specific effect for details see quantum/audio/voices.h and .c

Keycodes available:

KeyAliasesDescription
QK_AUDIO_VOICE_NEXTAU_NEXTCycles through the audio voices
QK_AUDIO_VOICE_PREVIOUSAU_PREVCycles through the audio voices in reverse

Music Mode

The music mode maps your columns to a chromatic scale, and your rows to octaves. This works best with ortholinear keyboards, but can be made to work with others. All keycodes less than 0xFF get blocked, so you won't type while playing notes - if you have special keys/mods, those will still work. A work-around for this is to jump to a different layer with KC_NOs before (or after) enabling music mode.

Recording is experimental due to some memory issues - if you experience some weird behavior, unplugging/replugging your keyboard will fix things.

Keycodes available:

KeyAliasesDescription
QK_MUSIC_ONMU_ONTurns on Music Mode
QK_MUSIC_OFFMU_OFFTurns off Music Mode
QK_MUSIC_TOGGLEMU_TOGGToggles Music Mode
QK_MUSIC_MODE_NEXTMU_NEXTCycles through the music modes

Available Modes:

In music mode, the following keycodes work differently, and don't pass through:

The pitch standard (PITCH_STANDARD_A) is 440.0f by default - to change this, add something like this to your config.h:

c
#define PITCH_STANDARD_A 432.0f

You can completely disable Music Mode as well. This is useful, if you're pressed for space on your controller. To disable it, add this to your config.h:

c
#define NO_MUSIC_MODE

Music Mask

By default, MUSIC_MASK is set to keycode < 0xFF which means keycodes less than 0xFF are turned into notes, and don't output anything. You can change this by defining this in your config.h like this:

c
#define MUSIC_MASK keycode != KC_NO

Which will capture all keycodes - be careful, this will get you stuck in music mode until you restart your keyboard!

For a more advanced way to control which keycodes should still be processed, you can use music_mask_kb(keycode) in <keyboard>.c and music_mask_user(keycode) in your keymap.c:

c
  bool music_mask_user(uint16_t keycode) {\n    switch (keycode) {\n      case RAISE:\n      case LOWER:\n        return false;\n      default:\n        return true;\n    }\n  }

Things that return false are not part of the mask, and are always processed.

Music Map

By default, the Music Mode uses the columns and row to determine the scale for the keys. For a board that uses a rectangular matrix that matches the keyboard layout, this is just fine. However, for boards that use a more complicated matrix (such as the Planck Rev6, or many split keyboards) this would result in a very skewed experience.

However, the Music Map option allows you to remap the scaling for the music mode, so it fits the layout, and is more natural.

To enable this feature, add #define MUSIC_MAP to your config.h file, and then you will want to add a uint8_t music_map to your keyboard's c file, or your keymap.c.

c
const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = LAYOUT_ortho_4x12(\n	36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n	24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,\n	12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,\n	 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11\n);

You will want to use whichever LAYOUT macro that your keyboard uses here. This maps it to the correct key location. Start in the bottom left of the keyboard layout, and move to the right, and then upwards. Fill in all the entries until you have a complete matrix.

You can look at the Planck Keyboard as an example of how to implement this.

Audio Click

This adds a click sound each time you hit a button, to simulate click sounds from the keyboard. And the sounds are slightly different for each keypress, so it doesn't sound like a single long note, if you type rapidly.

Keycodes available:

KeyAliasesDescription
QK_AUDIO_CLICKY_TOGGLECK_TOGGToggles Audio clicky mode
QK_AUDIO_CLICKY_ONCK_ONTurns on Audio clicky mode
QK_AUDIO_CLICKY_OFFCK_OFFTurns on Audio clicky mode
QK_AUDIO_CLICKY_UPCK_UPIncreases frequency of the clicks
QK_AUDIO_CLICKY_DOWNCK_DOWNDecreases frequency of the clicks
QK_AUDIO_CLICKY_RESETCK_RSTResets frequency to default

The feature is disabled by default, to save space. To enable it, add this to your config.h:

c
#define AUDIO_CLICKY

You can configure the default, min and max frequencies, the stepping and built in randomness by defining these values:

OptionDefault ValueDescription
AUDIO_CLICKY_FREQ_DEFAULT440.0fSets the default/starting audio frequency for the clicky sounds.
AUDIO_CLICKY_FREQ_MIN65.0fSets the lowest frequency (under 60f are a bit buggy).
AUDIO_CLICKY_FREQ_MAX1500.0fSets the highest frequency. Too high may result in coworkers attacking you.
AUDIO_CLICKY_FREQ_FACTOR1.18921fSets the stepping of UP/DOWN key codes. This is a multiplicative factor. The default steps the frequency up/down by a musical minor third.
AUDIO_CLICKY_FREQ_RANDOMNESS0.05fSets a factor of randomness for the clicks, Setting this to 0f will make each click identical, and 1.0f will make this sound much like the 90's computer screen scrolling/typing effect.
AUDIO_CLICKY_DELAY_DURATION1An integer note duration where 1 is 1/16th of the tempo, or a sixty-fourth note (see quantum/audio/musical_notes.h for implementation details). The main clicky effect will be delayed by this duration. Adjusting this to values around 6-12 will help compensate for loud switches.

MIDI Functionality

See MIDI

Audio Keycodes

KeyAliasesDescription
QK_AUDIO_ONAU_ONTurns on Audio Feature
QK_AUDIO_OFFAU_OFFTurns off Audio Feature
QK_AUDIO_TOGGLEAU_TOGGToggles Audio state
QK_AUDIO_CLICKY_TOGGLECK_TOGGToggles Audio clicky mode
QK_AUDIO_CLICKY_ONCK_ONTurns on Audio clicky mode
QK_AUDIO_CLICKY_OFFCK_OFFTurns on Audio clicky mode
QK_AUDIO_CLICKY_UPCK_UPIncreases frequency of the clicks
QK_AUDIO_CLICKY_DOWNCK_DOWNDecreases frequency of the clicks
QK_AUDIO_CLICKY_RESETCK_RSTResets frequency to default
QK_MUSIC_ONMU_ONTurns on Music Mode
QK_MUSIC_OFFMU_OFFTurns off Music Mode
QK_MUSIC_TOGGLEMU_TOGGToggles Music Mode
QK_MUSIC_MODE_NEXTMU_NEXTCycles through the music modes
QK_AUDIO_VOICE_NEXTAU_NEXTCycles through the audio voices
QK_AUDIO_VOICE_PREVIOUSAU_PREVCycles through the audio voices in reverse
', 115); diff --git a/assets/features_audio.md.DWNYte3W.lean.js b/assets/features_audio.md.Dy0ToeLW.lean.js similarity index 91% rename from assets/features_audio.md.DWNYte3W.lean.js rename to assets/features_audio.md.Dy0ToeLW.lean.js index 5ac1d02f6a7..40a8a0e1cc2 100644 --- a/assets/features_audio.md.DWNYte3W.lean.js +++ b/assets/features_audio.md.Dy0ToeLW.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Audio","description":"","frontmatter":{},"headers":[],"relativePath":"features/audio.md","filePath":"features/audio.md"}'); const _sfc_main = { name: "features/audio.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 115); diff --git a/assets/features_auto_shift.md.B9HLt3QM.js b/assets/features_auto_shift.md.jwKJBlE4.js similarity index 99% rename from assets/features_auto_shift.md.B9HLt3QM.js rename to assets/features_auto_shift.md.jwKJBlE4.js index 616a749ae23..fdb00b0977c 100644 --- a/assets/features_auto_shift.md.B9HLt3QM.js +++ b/assets/features_auto_shift.md.jwKJBlE4.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Auto Shift: Why Do We Need a Shift Key?","description":"","frontmatter":{},"headers":[],"relativePath":"features/auto_shift.md","filePath":"features/auto_shift.md"}'); const _sfc_main = { name: "features/auto_shift.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Auto Shift: Why Do We Need a Shift Key?

Tap a key and you get its character. Tap a key, but hold it slightly longer and you get its shifted state. Voilà! No shift key needed!

Why Auto Shift?

Many people suffer from various forms of RSI. A common cause is stretching your fingers repetitively long distances. For us on the keyboard, the pinky does that all too often when reaching for the shift key. Auto Shift looks to alleviate that problem.

How Does It Work?

When you tap a key, it stays depressed for a short period of time before it is then released. This depressed time is a different length for everyone. Auto Shift defines a constant AUTO_SHIFT_TIMEOUT which is typically set to twice your normal pressed state time. When you press a key, a timer starts, and if you have not released the key after the AUTO_SHIFT_TIMEOUT period, then a shifted version of the key is emitted. If the time is less than the AUTO_SHIFT_TIMEOUT time, or you press another key, then the normal state is emitted.

If AUTO_SHIFT_REPEAT is defined, there is keyrepeat support. Holding the key down will repeat the shifted key, though this can be disabled with AUTO_SHIFT_NO_AUTO_REPEAT. If you want to repeat the normal key, then tap it once then immediately (within TAPPING_TERM) hold it down again (this works with the shifted value as well if auto-repeat is disabled).

There are also the get_auto_shift_repeat and get_auto_shift_no_auto_repeat functions for more granular control. Neither will have an effect unless AUTO_SHIFT_REPEAT_PER_KEY or AUTO_SHIFT_NO_AUTO_REPEAT_PER_KEY respectively are defined.

Are There Limitations to Auto Shift?

Yes, unfortunately.

  1. You will have characters that are shifted when you did not intend on shifting, and other characters you wanted shifted, but were not. This simply comes down to practice. As we get in a hurry, we think we have hit the key long enough for a shifted version, but we did not. On the other hand, we may think we are tapping the keys, but really we have held it for a little longer than anticipated.
  2. Additionally, with keyrepeat the desired shift state can get mixed up. It will always 'belong' to the last key pressed. For example, keyrepeating a capital and then tapping something lowercase (whether or not it's an Auto Shift key) will result in the capital's key still being held, but shift not.
  3. Auto Shift does not apply to Tap Hold keys. For automatic shifting of Tap Hold keys see Retro Shift.

How Do I Enable Auto Shift?

Add to your rules.mk in the keymap folder:

AUTO_SHIFT_ENABLE = yes

If no rules.mk exists, you can create one.

Then compile and install your new firmware with Auto Key enabled! That's it!

Modifiers

By default, Auto Shift is disabled for any key press that is accompanied by one or more modifiers. Thus, Ctrl+A that you hold for a really long time is not the same as Ctrl+Shift+A.

You can re-enable Auto Shift for modifiers by adding a define to your config.h

c
#define AUTO_SHIFT_MODIFIERS

In which case, Ctrl+A held past the AUTO_SHIFT_TIMEOUT will be sent as Ctrl+Shift+A

Configuring Auto Shift

If desired, there is some configuration that can be done to change the behavior of Auto Shift. This is done by setting various variables the config.h file located in your keymap folder. If no config.h file exists, you can create one.

A sample is

c
#pragma once\n\n#define AUTO_SHIFT_TIMEOUT 150\n#define NO_AUTO_SHIFT_SPECIAL

AUTO_SHIFT_TIMEOUT (Value in ms)

This controls how long you have to hold a key before you get the shifted state. Obviously, this is different for everyone. For the common person, a setting of 135 to 150 works great. However, one should start with a value of at least 175, which is the default value. Then work down from there. The idea is to have the shortest time required to get the shifted state without having false positives.

Play with this value until things are perfect. Many find that all will work well at a given value, but one or two keys will still emit the shifted state on occasion. This is simply due to habit and holding some keys a little longer than others. Once you find this value, work on tapping your problem keys a little quicker than normal and you will be set.

TIP

Auto Shift has three special keys that can help you get this value right very quick. See "Auto Shift Setup" for more details!

For more granular control of this feature, you can add the following to your config.h:

c
#define AUTO_SHIFT_TIMEOUT_PER_KEY

You can then add the following function to your keymap:

c
uint16_t get_autoshift_timeout(uint16_t keycode, keyrecord_t *record) {\n    switch(keycode) {\n        case AUTO_SHIFT_NUMERIC:\n            return 2 * get_generic_autoshift_timeout();\n        case AUTO_SHIFT_SPECIAL:\n            return get_generic_autoshift_timeout() + 50;\n        case AUTO_SHIFT_ALPHA:\n        default:\n            return get_generic_autoshift_timeout();\n    }\n}

Note that you cannot override individual keys that are in one of those groups if you are using them; trying to add a case for KC_A in the above example will not compile as AUTO_SHIFT_ALPHA is there. A possible solution is a second switch above to handle individual keys with no default case and only referencing the groups in the below fallback switch.

NO_AUTO_SHIFT_SPECIAL (simple define)

Do not Auto Shift special keys, which include -_, =+, [{, ]}, ;:, '", ,<, .>, /?, and the KC_TAB.

NO_AUTO_SHIFT_TAB (simple define)

Do not Auto Shift KC_TAB but leave Auto Shift enabled for the other special characters.

NO_AUTO_SHIFT_SYMBOLS (simple define)

Do not Auto Shift symbol keys, which include -_, =+, [{, ]}, ;:, '", ,<, .>, and /?.

NO_AUTO_SHIFT_NUMERIC (simple define)

Do not Auto Shift numeric keys, zero through nine.

NO_AUTO_SHIFT_ALPHA (simple define)

Do not Auto Shift alpha characters, which include A through Z.

AUTO_SHIFT_ENTER (simple define)

Auto Shift the enter key.

Auto Shift Per Key

There are functions that allows you to determine which keys should be autoshifted, much like the tap-hold keys.

The first of these, used to simply add a key to Auto Shift, is get_custom_auto_shifted_key:

c
bool get_custom_auto_shifted_key(uint16_t keycode, keyrecord_t *record) {\n    switch(keycode) {\n        case KC_DOT:\n            return true;\n        default:\n            return false;\n    }\n}

For more granular control, there is get_auto_shifted_key. The default function looks like this:

c
bool get_auto_shifted_key(uint16_t keycode, keyrecord_t *record) {\n    switch (keycode) {\n# ifndef NO_AUTO_SHIFT_ALPHA\n        case AUTO_SHIFT_ALPHA:\n# endif\n# ifndef NO_AUTO_SHIFT_NUMERIC\n        case AUTO_SHIFT_NUMERIC:\n# endif\n# ifndef NO_AUTO_SHIFT_SPECIAL\n# ifndef NO_AUTO_SHIFT_TAB\n        case KC_TAB:\n#        endif\n# ifndef NO_AUTO_SHIFT_SYMBOLS\n        case AUTO_SHIFT_SYMBOLS:\n#        endif\n# endif\n# ifdef AUTO_SHIFT_ENTER\n        case KC_ENT:\n# endif\n            return true;\n    }\n    return get_custom_auto_shifted_key(keycode, record);\n}

This functionality is enabled by default, and does not need a define.

AUTO_SHIFT_REPEAT (simple define)

Enables keyrepeat.

AUTO_SHIFT_NO_AUTO_REPEAT (simple define)

Disables automatically keyrepeating when AUTO_SHIFT_TIMEOUT is exceeded.

AUTO_SHIFT_ALPHA (predefined key group)

A predefined group of keys representing A through Z.

AUTO_SHIFT_NUMERIC (predefined key group)

A predefined group of keys representing 0 through 9. Note, these are defined as 1 through 0 since that is the order they normally appear in.

AUTO_SHIFT_SYMBOLS (predefined key group)

A predefined group of keys representing symbolic characters which include -_, =+, [{, ]}, ;:, '", ,<, .>, and /?.

AUTO_SHIFT_SPECIAL (predefined key group)

A predefined group of keys that combines AUTO_SHIFT_SYMBOLS and KC_TAB.

Custom Shifted Values

Especially on small keyboards, the default shifted value for many keys is not optimal. To provide more customizability, there are two user-definable functions, autoshift_press/release_user. These register or unregister the correct value for the passed key. Below is an example adding period to Auto Shift and making its shifted value exclamation point. Make sure to use weak mods - setting real would make any keys following it use their shifted values as if you were holding the key. Clearing of modifiers is handled by Auto Shift, and the OS-sent shift value if keyrepeating multiple keys is always that of the last key pressed (whether or not it's an Auto Shift key).

You can also have non-shifted keys for the shifted values (or even no shifted value), just don't set a shift modifier!

c
bool get_custom_auto_shifted_key(uint16_t keycode, keyrecord_t *record) {\n    switch(keycode) {\n        case KC_DOT:\n            return true;\n        default:\n            return false;\n    }\n}\n\nvoid autoshift_press_user(uint16_t keycode, bool shifted, keyrecord_t *record) {\n    switch(keycode) {\n        case KC_DOT:\n            register_code16((!shifted) ? KC_DOT : KC_EXLM);\n            break;\n        default:\n            if (shifted) {\n                add_weak_mods(MOD_BIT(KC_LSFT));\n            }\n            // & 0xFF gets the Tap key for Tap Holds, required when using Retro Shift\n            register_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode);\n    }\n}\n\nvoid autoshift_release_user(uint16_t keycode, bool shifted, keyrecord_t *record) {\n    switch(keycode) {\n        case KC_DOT:\n            unregister_code16((!shifted) ? KC_DOT : KC_EXLM);\n            break;\n        default:\n            // & 0xFF gets the Tap key for Tap Holds, required when using Retro Shift\n            // The IS_RETRO check isn't really necessary here, always using\n            // keycode & 0xFF would be fine.\n            unregister_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode);\n    }\n}

Retro Shift

Holding and releasing a Tap Hold key without pressing another key will ordinarily result in only the hold. With retro shift enabled this action will instead produce a shifted version of the tap keycode on release.

It does not require Retro Tapping to be enabled, and if both are enabled the state of retro tapping will only apply if the tap keycode is not matched by Auto Shift. RETRO_TAPPING_PER_KEY and its corresponding function, however, are checked before retro shift is applied.

To enable retro shift, add the following to your config.h:

c
#define RETRO_SHIFT

If RETRO_SHIFT is defined to a value, hold times greater than that value will not produce a tap on release for Mod Taps, and instead triggers the hold action. This enables modifiers to be held for combining with mouse clicks without generating taps on release. For example:

c
#define RETRO_SHIFT 500

Without a value set, holds of any length without an interrupting key will produce the shifted value.

This value (if set) must be greater than one's TAPPING_TERM, as the key press must be designated as a 'hold' by process_tapping before we send the modifier. Per-key tapping terms can be used as a workaround. There is no such limitation in regards to AUTO_SHIFT_TIMEOUT for normal keys.

Note: Tap Holds must be added to Auto Shift, see here.IS_RETRO may be helpful if one wants all Tap Holds retro shifted.

Retro Shift and Tap Hold Configurations

Tap Hold Configurations work a little differently when using Retro Shift. Referencing TAPPING_TERM makes little sense, as holding longer would result in shifting one of the keys.

RETRO_SHIFT enables PERMISSIVE_HOLD-like behaviour (even if not explicitly enabled) on all mod-taps for which RETRO_SHIFT applies.

Using Auto Shift Setup

This will enable you to define three keys temporarily to increase, decrease and report your AUTO_SHIFT_TIMEOUT.

Setup

Map three keys temporarily in your keymap:

KeycodeAliasesDescription
QK_AUTO_SHIFT_DOWNAS_DOWNLower the Auto Shift timeout variable (down)
QK_AUTO_SHIFT_UPAS_UPRaise the Auto Shift timeout variable (up)
QK_AUTO_SHIFT_REPORTAS_RPTReport your current Auto Shift timeout value
QK_AUTO_SHIFT_ONAS_ONTurns on the Auto Shift Function
QK_AUTO_SHIFT_OFFAS_OFFTurns off the Auto Shift Function
QK_AUTO_SHIFT_TOGGLEAS_TOGGToggles the state of the Auto Shift feature

Compile and upload your new firmware.

Use

It is important to note that during these tests, you should be typing completely normal and with no intention of shifted keys.

  1. Type multiple sentences of alphabetical letters.
  2. Observe any upper case letters.
  3. If there are none, press the key you have mapped to AS_DOWN to decrease time Auto Shift timeout value and go back to step 1.
  4. If there are some upper case letters, decide if you need to work on tapping those keys with less down time, or if you need to increase the timeout.
  5. If you decide to increase the timeout, press the key you have mapped to AS_UP and go back to step 1.
  6. Once you are happy with your results, press the key you have mapped to AS_RPT. The keyboard will type by itself the value of your AUTO_SHIFT_TIMEOUT.
  7. Update AUTO_SHIFT_TIMEOUT in your config.h with the value reported.
  8. Add AUTO_SHIFT_NO_SETUP to your config.h.
  9. Remove the key bindings AS_DOWN, AS_UP and AS_RPT.
  10. Compile and upload your new firmware.

An Example Run

hello world. my name is john doe. i am a computer programmer playing with\nkeyboards right now.\n\n[PRESS AS_DOWN quite a few times]\n\nheLLo woRLd. mY nAMe is JOHn dOE. i AM A compUTeR proGRaMMER PlAYiNG witH\nKEYboArDS RiGHT NOw.\n\n[PRESS AS_UP a few times]\n\nhello world. my name is john Doe. i am a computer programmer playing with\nkeyboarDs right now.\n\n[PRESS AS_RPT]\n\n115

The keyboard typed 115 which represents your current AUTO_SHIFT_TIMEOUT value. You are now set! Practice on the D key a little bit that showed up in the testing and you'll be golden.

', 94); diff --git a/assets/features_auto_shift.md.B9HLt3QM.lean.js b/assets/features_auto_shift.md.jwKJBlE4.lean.js similarity index 91% rename from assets/features_auto_shift.md.B9HLt3QM.lean.js rename to assets/features_auto_shift.md.jwKJBlE4.lean.js index c1ea626c143..a11cd1d9831 100644 --- a/assets/features_auto_shift.md.B9HLt3QM.lean.js +++ b/assets/features_auto_shift.md.jwKJBlE4.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Auto Shift: Why Do We Need a Shift Key?","description":"","frontmatter":{},"headers":[],"relativePath":"features/auto_shift.md","filePath":"features/auto_shift.md"}'); const _sfc_main = { name: "features/auto_shift.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 94); diff --git a/assets/features_autocorrect.md.DHRDcuho.js b/assets/features_autocorrect.md.CrKw5pKP.js similarity index 99% rename from assets/features_autocorrect.md.DHRDcuho.js rename to assets/features_autocorrect.md.CrKw5pKP.js index 7a272b51b7d..e3bd079eb3e 100644 --- a/assets/features_autocorrect.md.DHRDcuho.js +++ b/assets/features_autocorrect.md.CrKw5pKP.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Autocorrect","description":"","frontmatter":{},"headers":[],"relativePath":"features/autocorrect.md","filePath":"features/autocorrect.md"}'); const _sfc_main = { name: "features/autocorrect.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Autocorrect

There are a lot of words that are prone to being typed incorrectly, due to habit, sequence or just user error. This feature leverages your firmware to automatically correct these errors, to help reduce typos.

How does it work?

The feature maintains a small buffer of recent key presses. On each key press, it checks whether the buffer ends in a recognized typo, and if so, automatically sends keystrokes to correct it.

The tricky part is how to efficiently check the buffer for typos. We don’t want to spend too much memory or time on storing or searching the typos. A good solution is to represent the typos with a trie data structure. A trie is a tree data structure where each node is a letter, and words are formed by following a path to one of the leaves.

An example trie

Since we search whether the buffer ends in a typo, we store the trie writing in reverse. The trie is queried starting from the last letter, then second to last letter, and so on, until either a letter doesn’t match or we reach a leaf, meaning a typo was found.

How do I enable Autocorrection

In your rules.mk, add this:

make
AUTOCORRECT_ENABLE = yes

Additionally, you will need a library for autocorrection. A small sample library is included by default, so that you can get up and running right away, but you can provide a customized library.

By default, autocorrect is disabled. To enable it, you need to use the AC_TOGG keycode to enable it. The status is stored in persistent memory, so you shouldn't need to enabled it again.

Customizing autocorrect library

To provide a custom library, you need to create a text file with the corrections. For instance:

text
:thier        -> their\nfitler        -> filter\nlenght        -> length\nouput         -> output\nwidht         -> width

The syntax is typo -> correction. Typos and corrections are case insensitive, and any whitespace before or after the typo and correction is ignored. The typo must be only the letters a–z, or the special character : representing a word break. The correction may have any non-unicode characters.

Then, run:

sh
qmk generate-autocorrect-data autocorrect_dictionary.txt

This will process the file and produce an autocorrect_data.h file with the trie library, in the folder that you are at. You can specify the keyboard and keymap (eg -kb planck/rev6 -km jackhumbert), and it will place the file in that folder instead. But as long as the file is located in your keymap folder, or user folder, it should be picked up automatically.

This file will look like this:

c
// :thier        -> their\n// fitler        -> filter\n// lenght        -> length\n// ouput         -> output\n// widht         -> width\n\n#define AUTOCORRECT_MIN_LENGTH 5  // "ouput"\n#define AUTOCORRECT_MAX_LENGTH 6  // ":thier"\n\n#define DICTIONARY_SIZE 74\n\nstatic const uint8_t autocorrect_data[DICTIONARY_SIZE] PROGMEM = {85, 7, 0, 23, 35, 0, 0, 8, 0, 76, 16, 0, 15, 25, 0, 0,\n    11, 23, 44, 0, 130, 101, 105, 114, 0, 23, 12, 9, 0, 131, 108, 116, 101, 114, 0, 75, 42, 0, 24, 64, 0, 0, 71, 49, 0,\n    10, 56, 0, 0, 12, 26, 0, 129, 116, 104, 0, 17, 8, 15, 0, 129, 116, 104, 0, 19, 24, 18, 0, 130, 116, 112, 117, 116,\n    0};

Avoiding false triggers

By default, typos are searched within words, to find typos within longer identifiers like maxFitlerOuput. While this is useful, a consequence is that autocorrection will falsely trigger when a typo happens to be a substring of a correctly-spelled word. For instance, if we had thier -> their as an entry, it would falsely trigger on (correct, though relatively uncommon) words like “wealthier” and “filthier.”

The solution is to set a word break : before and/or after the typo to constrain matching. : matches space, period, comma, underscore, digits, and most other non-alpha characters.

Textthier:thierthier::thier:
see thier typomatchesmatchesmatchesmatches
it’s thiersmatchesmatchesnono
wealthier wordsmatchesnomatchesno

:thier: is most restrictive, matching only when thier is a whole word.

The qmk generate-autocorrect-data commands can make an effort to check for entries that would false trigger as substrings of correct words. It searches each typo against a dictionary of 25K English words from the english_words Python package, provided it’s installed. (run python3 -m pip install english_words to install it.)

TIP

Unfortunately, this is limited to just english words, at this point.

Overriding Autocorrect

Occasionally you might actually want to type a typo (for instance, while editing autocorrect_dict.txt) without being autocorrected. There are a couple of ways to do this:

  1. Begin typing the typo.
  2. Before typing the last letter, press and release the Ctrl or Alt key.
  3. Type the remaining letters.

This works because the autocorrection implementation doesn’t understand hotkeys, so it resets itself whenever a modifier other than shift is held.

Additionally, you can use the AC_TOGG keycode to toggle the on/off status for Autocorrect.

Keycodes

KeycodeAliasesDescription
QK_AUTOCORRECT_ONAC_ONTurns on the Autocorrect feature.
QK_AUTOCORRECT_OFFAC_OFFTurns off the Autocorrect feature.
QK_AUTOCORRECT_TOGGLEAC_TOGGToggles the status of the Autocorrect feature.

User Callback Functions

Process Autocorrect

Callback function bool process_autocorrect_user(uint16_t *keycode, keyrecord_t *record, uint8_t *typo_buffer_size, uint8_t *mods) is available to customise incoming keycodes and handle exceptions. You can use this function to sanitise input before they are passed onto the autocorrect engine

TIP

Sanitisation of input is required because autocorrect will only match 8-bit basic keycodes for typos. If valid modifier keys or 16-bit keycodes that are part of a user's word input (such as Shift + A) is passed through, they will fail typo letter detection. For example a Mod-Tap key such as LCTL_T(KC_A) is 16-bit and should be masked for the 8-bit KC_A.

The default user callback function is found inside quantum/process_keycode/process_autocorrect.c. It covers most use-cases for QMK special functions and quantum keycodes, including overriding autocorrect with a modifier other than shift. The process_autocorrect_user function is weak defined to allow user's copy inside keymap.c (or code files) to overwrite it.

Process Autocorrect Example

If you have a custom keycode QMKBEST that should be ignored as part of a word, and another custom keycode QMKLAYER that should override autocorrect, both can be added to the bottom of the process_autocorrect_user switch statement in your source code:

c
bool process_autocorrect_user(uint16_t *keycode, keyrecord_t *record, uint8_t *typo_buffer_size, uint8_t *mods) {\n    // See quantum_keycodes.h for reference on these matched ranges.\n    switch (*keycode) {\n        // Exclude these keycodes from processing.\n        case KC_LSFT:\n        case KC_RSFT:\n        case KC_CAPS:\n        case QK_TO ... QK_ONE_SHOT_LAYER_MAX:\n        case QK_LAYER_TAP_TOGGLE ... QK_LAYER_MOD_MAX:\n        case QK_ONE_SHOT_MOD ... QK_ONE_SHOT_MOD_MAX:\n            return false;\n\n        // Mask for base keycode from shifted keys.\n        case QK_LSFT ... QK_LSFT + 255:\n        case QK_RSFT ... QK_RSFT + 255:\n            if (*keycode >= QK_LSFT && *keycode <= (QK_LSFT + 255)) {\n                *mods |= MOD_LSFT;\n            } else {\n                *mods |= MOD_RSFT;\n            }\n            *keycode &= 0xFF; // Get the basic keycode.\n            return true;\n#ifndef NO_ACTION_TAPPING\n        // Exclude tap-hold keys when they are held down\n        // and mask for base keycode when they are tapped.\n        case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:\n# ifdef NO_ACTION_LAYER\n            // Exclude Layer Tap, if layers are disabled\n            // but action tapping is still enabled.\n            return false;\n# endif\n        case QK_MOD_TAP ... QK_MOD_TAP_MAX:\n            // Exclude hold if mods other than Shift is not active\n            if (!record->tap.count) {\n                return false;\n            }\n            *keycode &= 0xFF;\n            break;\n#else\n        case QK_MOD_TAP ... QK_MOD_TAP_MAX:\n        case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:\n            // Exclude if disabled\n            return false;\n#endif\n        // Exclude swap hands keys when they are held down\n        // and mask for base keycode when they are tapped.\n        case QK_SWAP_HANDS ... QK_SWAP_HANDS_MAX:\n#ifdef SWAP_HANDS_ENABLE\n            if (*keycode >= 0x56F0 || !record->tap.count) {\n                return false;\n            }\n            *keycode &= 0xFF;\n            break;\n#else\n            // Exclude if disabled\n            return false;\n#endif\n        // Handle custom keycodes\n        case QMKBEST:\n            return false;\n        case QMKLAYER:\n            *typo_buffer_size = 0;\n            return false;\n    }\n\n    // Disable autocorrect while a mod other than shift is active.\n    if ((*mods & ~MOD_MASK_SHIFT) != 0) {\n        *typo_buffer_size = 0;\n        return false;\n    }\n\n    return true;\n}

TIP

In this callback function, return false will skip processing of that keycode for autocorrect. Adding *typo_buffer_size = 0 will also reset the autocorrect buffer at the same time, cancelling any current letters already stored in the buffer.

Apply Autocorrect

Additionally, apply_autocorrect(uint8_t backspaces, const char *str, char *typo, char *correct) allows for users to add additional handling to the autocorrection, or replace the functionality entirely. This passes on the number of backspaces needed to replace the words, as well as the replacement string (partial word, not the full word), and the typo and corrected strings (complete words).

TIP

Due to the way code works (no notion of words, just a stream of letters), the typo and correct strings are a best bet and could be "wrong". For example you may get wordtpyo & wordtypo instead of the expected tpyo & typo.

Apply Autocorrect Example

This following example will play a sound when a typo is autocorrected and execute the autocorrection itself:

c
#ifdef AUDIO_ENABLE\nfloat autocorrect_song[][2] = SONG(TERMINAL_SOUND);\n#endif\n\nbool apply_autocorrect(uint8_t backspaces, const char *str, char *typo, char *correct) {\n#ifdef AUDIO_ENABLE\n    PLAY_SONG(autocorrect_song);\n#endif\n    for (uint8_t i = 0; i < backspaces; ++i) {\n        tap_code(KC_BSPC);\n    }\n    send_string_P(str);\n    return false;\n}

TIP

In this callback function, return false will stop the normal processing of autocorrect, which requires manually handling of removing the "bad" characters and typing the new characters.

WARNING

IMPORTANT: str is a pointer to PROGMEM data for the autocorrection. If you return false, and want to send the string, this needs to use send_string_P and not send_string nor SEND_STRING.

You can also use apply_autocorrect to detect and display the event but allow internal code to execute the autocorrection with return true:

c
bool apply_autocorrect(uint8_t backspaces, const char *str, char *typo, char *correct) {\n#ifdef OLED_ENABLE\n    oled_write_P(PSTR("Auto-corrected"), false);\n#endif\n#ifdef CONSOLE_ENABLE\n    printf("'%s' was corrected to '%s'\\n", typo, correct);\n#endif\n    return true;\n}

Autocorrect Status

Additional user callback functions to manipulate Autocorrect:

FunctionDescription
autocorrect_enable()Turns Autocorrect on.
autocorrect_disable()Turns Autocorrect off.
autocorrect_toggle()Toggles Autocorrect.
autocorrect_is_enabled()Returns true if Autocorrect is currently on.

Appendix: Trie binary data format

This section details how the trie is serialized to byte data in autocorrect_data. You don’t need to care about this to use this autocorrection implementation. But it is documented for the record in case anyone is interested in modifying the implementation, or just curious how it works.

What I did here is fairly arbitrary, but it is simple to decode and gets the job done.

Encoding

All autocorrection data is stored in a single flat array autocorrect_data. Each trie node is associated with a byte offset into this array, where data for that node is encoded, beginning with root at offset 0. There are three kinds of nodes. The highest two bits of the first byte of the node indicate what kind:

An example trie

Branching node. Each branch is encoded with one byte for the keycode (KC_A–KC_Z) followed by a link to the child node. Links between nodes are 16-bit byte offsets relative to the beginning of the array, serialized in little endian order.

All branches are serialized this way, one after another, and terminated with a zero byte. As described above, the node is identified as a branch by setting the two high bits of the first byte to 01, done by bitwise ORing the first keycode with 64. keycode. The root node for the above figure would be serialized like:

+-------+-------+-------+-------+-------+-------+-------+\n| R|64  |    node 2     |   T   |    node 3     |   0   |\n+-------+-------+-------+-------+-------+-------+-------+

Chain node. Tries tend to have long chains of single-child nodes, as seen in the example above with f-i-t-l in fitler. So to save space, we use a different format to encode chains than branching nodes. A chain is encoded as a string of keycodes, beginning with the node closest to the root, and terminated with a zero byte. The child of the last node in the chain is encoded immediately after. That child could be either a branching node or a leaf.

In the figure above, the f-i-t-l chain is encoded as

+-------+-------+-------+-------+-------+\n|   L   |   T   |   I   |   F   |   0   |\n+-------+-------+-------+-------+-------+

If we were to encode this chain using the same format used for branching nodes, we would encode a 16-bit node link with every node, costing 8 more bytes in this example. Across the whole trie, this adds up. Conveniently, we can point to intermediate points in the chain and interpret the bytes in the same way as before. E.g. starting at the i instead of the l, and the subchain has the same format.

Leaf node. A leaf node corresponds to a particular typo and stores data to correct the typo. The leaf begins with a byte for the number of backspaces to type, and is followed by a null-terminated ASCII string of the replacement text. The idea is, after tapping backspace the indicated number of times, we can simply pass this string to the send_string_P function. For fitler, we need to tap backspace 3 times (not 4, because we catch the typo as the final ‘r’ is pressed) and replace it with lter. To identify the node as a leaf, the two high bits are set to 10 by ORing the backspace count with 128:

+-------+-------+-------+-------+-------+-------+\n| 3|128 |  'l'  |  't'  |  'e'  |  'r'  |   0   |\n+-------+-------+-------+-------+-------+-------+

Decoding

This format is by design decodable with fairly simple logic. A 16-bit variable state represents our current position in the trie, initialized with 0 to start at the root node. Then, for each keycode, test the highest two bits in the byte at state to identify the kind of node.

Credits

Credit goes to getreuer for originally implementing this here. As well as to filterpaper for converting the code to use PROGMEM, and additional improvements.

', 78); diff --git a/assets/features_autocorrect.md.DHRDcuho.lean.js b/assets/features_autocorrect.md.CrKw5pKP.lean.js similarity index 91% rename from assets/features_autocorrect.md.DHRDcuho.lean.js rename to assets/features_autocorrect.md.CrKw5pKP.lean.js index d08b04127c2..c6f195ed95d 100644 --- a/assets/features_autocorrect.md.DHRDcuho.lean.js +++ b/assets/features_autocorrect.md.CrKw5pKP.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Autocorrect","description":"","frontmatter":{},"headers":[],"relativePath":"features/autocorrect.md","filePath":"features/autocorrect.md"}'); const _sfc_main = { name: "features/autocorrect.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 78); diff --git a/assets/features_backlight.md.D7R4FkYo.js b/assets/features_backlight.md.ySwz01AJ.js similarity index 99% rename from assets/features_backlight.md.D7R4FkYo.js rename to assets/features_backlight.md.ySwz01AJ.js index 92ce4383c2c..6b82768e3a1 100644 --- a/assets/features_backlight.md.D7R4FkYo.js +++ b/assets/features_backlight.md.ySwz01AJ.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Backlighting","description":"","frontmatter":{},"headers":[],"relativePath":"features/backlight.md","filePath":"features/backlight.md"}'); const _sfc_main = { name: "features/backlight.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Backlighting

Many keyboards support backlit keys by way of individual LEDs placed through or underneath the keyswitches. This feature is distinct from both the RGB Underglow and RGB Matrix features as it usually allows for only a single colour per switch, though you can obviously install multiple different single coloured LEDs on a keyboard.

QMK is able to control the brightness of these LEDs by switching them on and off rapidly in a certain ratio, a technique known as Pulse Width Modulation, or PWM. By altering the duty cycle of the PWM signal, it creates the illusion of dimming.

Usage

Most keyboards have backlighting enabled by default if they support it, but if it is not working for you (or you have added support), check that your rules.mk includes the following:

make
BACKLIGHT_ENABLE = yes

Keycodes

KeyAliasesDescription
QK_BACKLIGHT_TOGGLEBL_TOGGTurn the backlight on or off
QK_BACKLIGHT_STEPBL_STEPCycle through backlight levels
QK_BACKLIGHT_ONBL_ONSet the backlight to max brightness
QK_BACKLIGHT_OFFBL_OFFTurn the backlight off
QK_BACKLIGHT_UPBL_UPIncrease the backlight level
QK_BACKLIGHT_DOWNBL_DOWNDecrease the backlight level
QK_BACKLIGHT_TOGGLE_BREATHINGBL_BRTGToggle backlight breathing

Basic Configuration

Add the following to your config.h:

DefineDefaultDescription
BACKLIGHT_PINNot definedThe pin that controls the LEDs
BACKLIGHT_LEVELS3The number of brightness levels (maximum 31 excluding off)
BACKLIGHT_CAPS_LOCKNot definedEnable Caps Lock indicator using backlight (for keyboards without dedicated LED)
BACKLIGHT_BREATHINGNot definedEnable backlight breathing, if supported
BREATHING_PERIOD6The length of one backlight "breath" in seconds
BACKLIGHT_ON_STATE1The state of the backlight pin when the backlight is "on" - 1 for high, 0 for low
BACKLIGHT_LIMIT_VAL255The maximum duty cycle of the backlight -- 255 allows for full brightness, any lower will decrease the maximum.
BACKLIGHT_DEFAULT_ONtrueEnable backlight upon clearing the EEPROM
BACKLIGHT_DEFAULT_BREATHINGfalseWhether to enable backlight breathing upon clearing the EEPROM
BACKLIGHT_DEFAULT_LEVELBACKLIGHT_LEVELSThe default backlight level to use upon clearing the EEPROM

Unless you are designing your own keyboard, you generally should not need to change the BACKLIGHT_PIN or BACKLIGHT_ON_STATE.

"On" State

Most backlight circuits are driven by an N-channel MOSFET or NPN transistor. This means that to turn the transistor on and light the LEDs, you must drive the backlight pin, connected to the gate or base, high. Sometimes, however, a P-channel MOSFET, or a PNP transistor is used. In this case, when the transistor is on, the pin is driven low instead.

To configure the "on" state of the backlight circuit, add the following to your config.h:

c
#define BACKLIGHT_ON_STATE 0

Multiple Backlight Pins

Most keyboards have only one backlight pin which controls all backlight LEDs (especially if the backlight is connected to a hardware PWM pin). The timer and software drivers allow you to define multiple backlight pins, which will be turned on and off at the same time during the PWM duty cycle.

This feature allows to set, for instance, the Caps Lock LED's (or any other controllable LED) brightness at the same level as the other LEDs of the backlight. This is useful if you have mapped Control in place of Caps Lock and you need the Caps Lock LED to be part of the backlight instead of being activated when Caps Lock is on, as it is usually wired to a separate pin from the backlight.

To configure multiple backlight pins, add something like this to your config.h, instead of BACKLIGHT_PIN:

c
#define BACKLIGHT_PINS { F5, B2 }

Driver Configuration

Backlight driver selection is configured in rules.mk. Valid drivers are pwm (default), timer, software, or custom. See below for information on individual drivers.

PWM Driver

This is the default backlight driver, which leverages the hardware PWM output capability of the microcontroller.

make
BACKLIGHT_DRIVER = pwm

Timer Driver

This driver is similar to the PWM driver, but instead of directly configuring the pin to output a PWM signal, an interrupt handler is attached to the timer to turn the pin on and off as appropriate.

make
BACKLIGHT_DRIVER = timer

Software Driver

In this mode, PWM is "emulated" while running other keyboard tasks. It offers maximum hardware compatibility without extra platform configuration. However, breathing is not supported, and the backlight can flicker when the keyboard is busy.

make
BACKLIGHT_DRIVER = software

Custom Driver

If none of the above drivers apply to your board (for example, you are using a separate IC to control the backlight), you can implement a custom backlight driver using a simple API.

make
BACKLIGHT_DRIVER = custom
c
void backlight_init_ports(void) {\n    // Optional - runs on startup\n    //   Usually you want to configure pins here\n}\nvoid backlight_set(uint8_t level) {\n    // Optional - runs on level change\n    //   Usually you want to respond to the new value\n}\n\nvoid backlight_task(void) {\n    // Optional - runs periodically\n    //   Note that this is called in the main keyboard loop,\n    //   so long running actions here can cause performance issues\n}

AVR Configuration

PWM Driver

The following table describes the supported pins for the PWM driver. Only cells marked with a timer number are capable of hardware PWM output; any others must use the timer driver.

Backlight PinAT90USB64/128AT90USB162ATmega16/32U4ATmega16/32U2ATmega32AATmega328/P
B1Timer 1
B2Timer 1
B5Timer 1Timer 1
B6Timer 1Timer 1
B7Timer 1Timer 1Timer 1Timer 1
C4Timer 3
C5Timer 3Timer 1Timer 1
C6Timer 3Timer 1Timer 3Timer 1
D4Timer 1
D5Timer 1

Timer Driver

Any GPIO pin can be used with this driver. The following table describes the supported timers:

AT90USB64/128AT90USB162ATmega16/32U4ATmega16/32U2ATmega32AATmega328/P
Timers 1 & 3Timer 1Timers 1 & 3Timer 1Timer 1Timer 1

The following #defines apply only to the timer driver:

DefineDefaultDescription
BACKLIGHT_PWM_TIMER1The timer to use

Note that the choice of timer may conflict with the Audio feature.

ChibiOS/ARM Configuration

PWM Driver

Depending on the ChibiOS board configuration, you may need to enable PWM at the keyboard level. For STM32, this would look like:

halconf.h:

c
#define HAL_USE_PWM TRUE

mcuconf.h:

c
#undef STM32_PWM_USE_TIM4\n#define STM32_PWM_USE_TIM4 TRUE

The following #defines apply only to the pwm driver:

DefineDefaultDescription
BACKLIGHT_PWM_DRIVERPWMD4The PWM driver to use
BACKLIGHT_PWM_CHANNEL3The PWM channel to use
BACKLIGHT_PAL_MODE2The pin alternative function to use
BACKLIGHT_PWM_PERIODNot definedThe PWM period in counter ticks - Default is platform dependent

Refer to the ST datasheet for your particular MCU to determine these values. For example, these defaults are set up for pin B8 on a Proton-C (STM32F303) using TIM4_CH3 on AF2. Unless you are designing your own keyboard, you generally should not need to change them.

Timer Driver

Depending on the ChibiOS board configuration, you may need to enable general-purpose timers at the keyboard level. For STM32, this would look like:

halconf.h:

c
#define HAL_USE_GPT TRUE

mcuconf.h:

c
#undef STM32_GPT_USE_TIM15\n#define STM32_GPT_USE_TIM15 TRUE

The following #defines apply only to the timer driver:

DefineDefaultDescription
BACKLIGHT_GPT_DRIVERGPTD15The timer to use

Example Schematic

Since the MCU can only supply so much current to its GPIO pins, instead of powering the backlight directly from the MCU, the backlight pin is connected to a transistor or MOSFET that switches the power to the LEDs.

In this typical example, the backlight LEDs are all connected in parallel towards an N-channel MOSFET. Its gate pin is wired to one of the microcontroller's GPIO pins through a 470Ω resistor to avoid ringing. A pulldown resistor is also placed between the gate pin and ground to keep it at a defined state when it is not otherwise being driven by the MCU. The values of these resistors are not critical - see this Electronics StackExchange question for more information.

Backlight example circuit

API

void backlight_toggle(void)

Toggle the backlight on or off.


void backlight_enable(void)

Turn the backlight on.


void backlight_disable(void)

Turn the backlight off.


void backlight_step(void)

Cycle through backlight levels.


void backlight_increase(void)

Increase the backlight level.


void backlight_decrease(void)

Decrease the backlight level.


void backlight_level(uint8_t level)

Set the backlight level.

Arguments


uint8_t get_backlight_level(void)

Get the current backlight level.

Return Value

The current backlight level, from 0 to BACKLIGHT_LEVELS.


bool is_backlight_enabled(void)

Get the current backlight state.

Return Value

true if the backlight is enabled.


void backlight_toggle_breathing(void)

Toggle backlight breathing on or off.


void backlight_enable_breathing(void)

Turn backlight breathing on.


void backlight_disable_breathing(void)

Turn backlight breathing off.


bool is_backlight_breathing(void)

Get the current backlight breathing state.

Return Value

true if backlight breathing is enabled.

', 115); diff --git a/assets/features_backlight.md.D7R4FkYo.lean.js b/assets/features_backlight.md.ySwz01AJ.lean.js similarity index 91% rename from assets/features_backlight.md.D7R4FkYo.lean.js rename to assets/features_backlight.md.ySwz01AJ.lean.js index ad88fd84149..f451b7a0d80 100644 --- a/assets/features_backlight.md.D7R4FkYo.lean.js +++ b/assets/features_backlight.md.ySwz01AJ.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Backlighting","description":"","frontmatter":{},"headers":[],"relativePath":"features/backlight.md","filePath":"features/backlight.md"}'); const _sfc_main = { name: "features/backlight.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 115); diff --git a/assets/features_bluetooth.md.CiAjl875.js b/assets/features_bluetooth.md.Bs2LdUw_.js similarity index 98% rename from assets/features_bluetooth.md.CiAjl875.js rename to assets/features_bluetooth.md.Bs2LdUw_.js index 97aa021d266..f20bdd58b52 100644 --- a/assets/features_bluetooth.md.CiAjl875.js +++ b/assets/features_bluetooth.md.Bs2LdUw_.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Bluetooth","description":"","frontmatter":{},"headers":[],"relativePath":"features/bluetooth.md","filePath":"features/bluetooth.md"}'); const _sfc_main = { name: "features/bluetooth.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Bluetooth

Bluetooth Known Supported Hardware

Currently Bluetooth support is limited to AVR based chips. For Bluetooth 2.1, QMK has support for RN-42 modules. For more recent BLE protocols, currently only the Adafruit Bluefruit SPI Friend is directly supported. BLE is needed to connect to iOS devices. Note iOS does not support mouse input.

BoardBluetooth ProtocolConnection Typerules.mkBluetooth Chip
Roving Networks RN-42 (Sparkfun Bluesmirf)Bluetooth ClassicUARTBLUETOOTH_DRIVER = rn42RN-42
Bluefruit LE SPI FriendBluetooth Low EnergySPIBLUETOOTH_DRIVER = bluefruit_lenRF51822

Not Supported Yet but possible:

Adafruit BLE SPI Friend

Currently The only bluetooth chipset supported by QMK is the Adafruit Bluefruit SPI Friend. It's a Nordic nRF51822 based chip running Adafruit's custom firmware. Data is transmitted via Adafruit's SDEP over Hardware SPI. The Feather 32u4 Bluefruit LE is supported as it's an AVR mcu connected via SPI to the Nordic BLE chip with Adafruit firmware. If Building a custom board with the SPI friend it would be easiest to just use the pin selection that the 32u4 feather uses but you can change the pins in the config.h options with the following defines:

A Bluefruit UART friend can be converted to an SPI friend, however this requires some reflashing and soldering directly to the MDBT40 chip.

Bluetooth Rules.mk Options

The currently supported Bluetooth chipsets do not support N-Key Rollover (NKRO), so rules.mk must contain NKRO_ENABLE = no.

Add the following to your rules.mk:

make
BLUETOOTH_ENABLE = yes\nBLUETOOTH_DRIVER = bluefruit_le # or rn42

Bluetooth Keycodes

This is used when multiple keyboard outputs can be selected. Currently this only allows for switching between USB and Bluetooth on keyboards that support both.

KeyAliasesDescription
QK_OUTPUT_AUTOOU_AUTOAutomatically switch between USB and Bluetooth
QK_OUTPUT_USBOU_USBUSB only
QK_OUTPUT_BLUETOOTHOU_BTBluetooth only
', 17); diff --git a/assets/features_bluetooth.md.CiAjl875.lean.js b/assets/features_bluetooth.md.Bs2LdUw_.lean.js similarity index 91% rename from assets/features_bluetooth.md.CiAjl875.lean.js rename to assets/features_bluetooth.md.Bs2LdUw_.lean.js index a5019cafbbd..aaab6836ada 100644 --- a/assets/features_bluetooth.md.CiAjl875.lean.js +++ b/assets/features_bluetooth.md.Bs2LdUw_.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Bluetooth","description":"","frontmatter":{},"headers":[],"relativePath":"features/bluetooth.md","filePath":"features/bluetooth.md"}'); const _sfc_main = { name: "features/bluetooth.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 17); diff --git a/assets/features_bootmagic.md.CeNSUsBQ.js b/assets/features_bootmagic.md.DIHkTTz1.js similarity index 99% rename from assets/features_bootmagic.md.CeNSUsBQ.js rename to assets/features_bootmagic.md.DIHkTTz1.js index 34ebdbcacc1..039ebfb81ed 100644 --- a/assets/features_bootmagic.md.CeNSUsBQ.js +++ b/assets/features_bootmagic.md.DIHkTTz1.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Bootmagic","description":"","frontmatter":{},"headers":[],"relativePath":"features/bootmagic.md","filePath":"features/bootmagic.md"}'); const _sfc_main = { name: "features/bootmagic.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Bootmagic

The Bootmagic feature that only handles jumping into the bootloader. This is great for boards that don't have a physical reset button, giving you a way to jump into the bootloader

On some keyboards Bootmagic is disabled by default. If this is the case, it must be explicitly enabled in your rules.mk with:

make
BOOTMAGIC_ENABLE = yes

Additionally, you may want to specify which key to use. This is especially useful for keyboards that have unusual matrices. To do so, you need to specify the row and column of the key that you want to use. Add these entries to your config.h file:

c
#define BOOTMAGIC_ROW 0\n#define BOOTMAGIC_COLUMN 1

By default, these are set to 0 and 0, which is usually the "ESC" key on a majority of keyboards.

And to trigger the bootloader, you hold this key down when plugging the keyboard in. Just the single key.

WARNING

Using Bootmagic will always reset the EEPROM, so you will lose any settings that have been saved.

Split Keyboards

When handedness is predetermined via options like SPLIT_HAND_PIN or EE_HANDS, you might need to configure a different key between halves. To identify the correct key for the right half, examine the split key matrix defined in the <keyboard>.h file, e.g.:

c
#define LAYOUT_split_3x5_2( \\\n        L01, L02, L03, L04, L05,   R01, R02, R03, R04, R05, \\\n        L06, L07, L08, L09, L10,   R06, R07, R08, R09, R10, \\\n        L11, L12, L13, L14, L15,   R11, R12, R13, R14, R15, \\\n                       L16, L17,   R16, R17                 \\\n    ) \\\n    { \\\n        { L01, L02, L03, L04, L05 }, \\\n        { L06, L07, L08, L09, L10 }, \\\n        { L11, L12, L13, L14, L15 }, \\\n        { L16, L17, KC_NO, KC_NO, KC_NO }, \\\n        { R01, R02, R03, R04, R05 }, \\\n        { R06, R07, R08, R09, R10 }, \\\n        { R11, R12, R13, R14, R15 }, \\\n        { R16, R17, KC_NO, KC_NO, KC_NO }  \\\n    }

If you pick the top right key for the right half, it is R05 on the top layout. Within the key matrix below, R05 is located on row 4 columnn 4. To use that key as the right half's Bootmagic trigger, add these entries to your config.h file:

c
#define BOOTMAGIC_ROW_RIGHT 4\n#define BOOTMAGIC_COLUMN_RIGHT 4

TIP

These values are not set by default.

Advanced Bootmagic

The bootmagic_scan function is defined weakly, so that you can replace this in your code, if you need. A great example of this is the Zeal60 boards that have some additional handling needed.

To replace the function, all you need to do is add something like this to your code:

c
void bootmagic_scan(void) {\n    matrix_scan();\n    wait_ms(DEBOUNCE * 2);\n    matrix_scan();\n\n    if (matrix_get_row(BOOTMAGIC_ROW) & (1 << BOOTMAGIC_COLUMN)) {\n      // Jump to bootloader.\n      bootloader_jump();\n    }\n}

You can define additional logic here. For instance, resetting the EEPROM or requiring additional keys to be pressed to trigger Bootmagic. Keep in mind that bootmagic_scan is called before a majority of features are initialized in the firmware.

Addenda

To manipulate settings that were formerly configured through the now-deprecated full Bootmagic feature, see Magic Keycodes.

The Command feature, formerly known as Magic, also allows you to control different aspects of your keyboard. While it shares some functionality with Magic Keycodes, it also allows you to do things that Magic Keycodes cannot, such as printing version information to the console. For more information, see Command.

', 23); diff --git a/assets/features_bootmagic.md.CeNSUsBQ.lean.js b/assets/features_bootmagic.md.DIHkTTz1.lean.js similarity index 91% rename from assets/features_bootmagic.md.CeNSUsBQ.lean.js rename to assets/features_bootmagic.md.DIHkTTz1.lean.js index e3952513a3e..d40b9c614f0 100644 --- a/assets/features_bootmagic.md.CeNSUsBQ.lean.js +++ b/assets/features_bootmagic.md.DIHkTTz1.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Bootmagic","description":"","frontmatter":{},"headers":[],"relativePath":"features/bootmagic.md","filePath":"features/bootmagic.md"}'); const _sfc_main = { name: "features/bootmagic.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 23); diff --git a/assets/features_caps_word.md.BDQGM0-x.js b/assets/features_caps_word.md.C0fpUfY4.js similarity index 99% rename from assets/features_caps_word.md.BDQGM0-x.js rename to assets/features_caps_word.md.C0fpUfY4.js index ec4b740183a..89394b69143 100644 --- a/assets/features_caps_word.md.BDQGM0-x.js +++ b/assets/features_caps_word.md.C0fpUfY4.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Caps Word","description":"","frontmatter":{},"headers":[],"relativePath":"features/caps_word.md","filePath":"features/caps_word.md"}'); const _sfc_main = { name: "features/caps_word.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Caps Word

It is often useful to type a single word in all capitals, for instance abbreviations like "QMK", or in code, identifiers like KC_SPC. "Caps Word" is a modern alternative to Caps Lock:

How do I enable Caps Word

In your rules.mk, add:

make
CAPS_WORD_ENABLE = yes

Next, use one the following methods to activate Caps Word:

Troubleshooting: Command

When using BOTH_SHIFTS_TURNS_ON_CAPS_WORD, you might see a compile message "BOTH_SHIFTS_TURNS_ON_CAPS_WORD and Command should not be enabled at the same time, since both use the Left Shift + Right Shift key combination."

Many keyboards enable the Command feature, which by default is also activated using the Left Shift + Right Shift key combination. To fix this conflict, please disable Command by adding in rules.mk:

make
COMMAND_ENABLE = no

Or configure Command to use another key combination like Left Ctrl + Right Ctrl by defining IS_COMMAND() in config.h:

c
// Activate Command with Left Ctrl + Right Ctrl.\n#define IS_COMMAND() (get_mods() == MOD_MASK_CTRL)

Customizing Caps Word

Invert on shift

By default, Caps Word turns off when Shift keys are pressed, considering them as word-breaking. Alternatively with the CAPS_WORD_INVERT_ON_SHIFT option, pressing the Shift key continues Caps Word and inverts the shift state. This is convenient for uncapitalizing one or a few letters within a word, for example with Caps Word on, typing "D, B, Shift+A, Shift+A, S" produces "DBaaS", or typing "P, D, F, Shift+S" produces "PDFs".

Enable it by adding in config.h

c
#define CAPS_WORD_INVERT_ON_SHIFT

This option works with regular Shift keys KC_LSFT and KC_RSFT, mod-tap Shift keys, and one-shot Shift keys. Note that while Caps Word is on, one-shot Shift keys behave like regular Shift keys, and have effect only while they are held.

Idle timeout

Caps Word turns off automatically if no keys are pressed for CAPS_WORD_IDLE_TIMEOUT milliseconds. The default is 5000 (5 seconds). Configure the timeout duration in config.h, for instance

c
#define CAPS_WORD_IDLE_TIMEOUT 3000  // 3 seconds.

Setting CAPS_WORD_IDLE_TIMEOUT to 0 configures Caps Word to never time out. Caps Word then remains active indefinitely until a word breaking key is pressed.

Functions

Functions to manipulate Caps Word:

FunctionDescription
caps_word_on()Turns Caps Word on.
caps_word_off()Turns Caps Word off.
caps_word_toggle()Toggles Caps Word.
is_caps_word_on()Returns true if Caps Word is currently on.

Configure which keys are "word breaking"

You can define the caps_word_press_user(uint16_t keycode) callback to configure which keys should be shifted and which keys are considered "word breaking" and stop Caps Word.

The callback is called on every key press while Caps Word is active. When the key should be shifted (that is, a letter key), the callback should call add_weak_mods(MOD_BIT(KC_LSFT)) to shift the key. Returning true continues the current "word," while returning false is "word breaking" and deactivates Caps Word. The default callback is

c
bool caps_word_press_user(uint16_t keycode) {\n    switch (keycode) {\n        // Keycodes that continue Caps Word, with shift applied.\n        case KC_A ... KC_Z:\n        case KC_MINS:\n            add_weak_mods(MOD_BIT(KC_LSFT));  // Apply shift to next key.\n            return true;\n\n        // Keycodes that continue Caps Word, without shifting.\n        case KC_1 ... KC_0:\n        case KC_BSPC:\n        case KC_DEL:\n        case KC_UNDS:\n            return true;\n\n        default:\n            return false;  // Deactivate Caps Word.\n    }\n}

Representing Caps Word state

Define caps_word_set_user(bool active) to get callbacks when Caps Word turns on or off. This is useful to represent the current Caps Word state, e.g. by setting an LED or playing a sound. In your keymap, define

c
void caps_word_set_user(bool active) {\n    if (active) {\n        // Do something when Caps Word activates.\n    } else {\n        // Do something when Caps Word deactivates.\n    }\n}
', 34); diff --git a/assets/features_caps_word.md.BDQGM0-x.lean.js b/assets/features_caps_word.md.C0fpUfY4.lean.js similarity index 91% rename from assets/features_caps_word.md.BDQGM0-x.lean.js rename to assets/features_caps_word.md.C0fpUfY4.lean.js index 09742cb3ef8..df4aa9fae43 100644 --- a/assets/features_caps_word.md.BDQGM0-x.lean.js +++ b/assets/features_caps_word.md.C0fpUfY4.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Caps Word","description":"","frontmatter":{},"headers":[],"relativePath":"features/caps_word.md","filePath":"features/caps_word.md"}'); const _sfc_main = { name: "features/caps_word.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 34); diff --git a/assets/features_combo.md.C-GfDyXJ.js b/assets/features_combo.md.CC9QZAP7.js similarity index 99% rename from assets/features_combo.md.C-GfDyXJ.js rename to assets/features_combo.md.CC9QZAP7.js index 082e980a1f2..c0fdcf09ec3 100644 --- a/assets/features_combo.md.C-GfDyXJ.js +++ b/assets/features_combo.md.CC9QZAP7.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Combos","description":"","frontmatter":{},"headers":[],"relativePath":"features/combo.md","filePath":"features/combo.md"}'); const _sfc_main = { name: "features/combo.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Combos

The Combo feature is a chording type solution for adding custom actions. It lets you hit multiple keys at once and produce a different effect. For instance, hitting A and B within the combo term would hit ESC instead, or have it perform even more complex tasks.

To enable this feature, you need to add COMBO_ENABLE = yes to your rules.mk.

Then, in your keymap.c file, you'll need to define a sequence of keys, terminated with COMBO_END, and a structure to list the combination of keys, and its resulting action.

c
const uint16_t PROGMEM test_combo1[] = {KC_A, KC_B, COMBO_END};\nconst uint16_t PROGMEM test_combo2[] = {KC_C, KC_D, COMBO_END};\ncombo_t key_combos[] = {\n    COMBO(test_combo1, KC_ESC),\n    COMBO(test_combo2, LCTL(KC_Z)), // keycodes with modifiers are possible too!\n};

This will send "Escape" if you hit the A and B keys, and Ctrl+Z when you hit the C and D keys.

Advanced Keycodes Support

Advanced keycodes, such as Mod-Tap and Tap Dance are also supported together with combos. If you use these advanced keycodes in your keymap, you will need to place the full keycode in the combo definition, e.g.:

c
const uint16_t PROGMEM test_combo1[] = {LSFT_T(KC_A), LT(1, KC_B), COMBO_END};\nconst uint16_t PROGMEM test_combo2[] = {TD(TD_ESC_CAPS), KC_F1, COMBO_END};

Overlapping Combos

It is possible to overlap combos. Before, with the example below both combos would activate when all three keys were pressed. Now only the three key combo will activate.

c
const uint16_t PROGMEM test_combo1[] = {LSFT_T(KC_A), LT(1, KC_B), COMBO_END};\nconst uint16_t PROGMEM test_combo2[] = {LSFT_T(KC_A), LT(1, KC_B), KC_C, COMBO_END};\ncombo_t key_combos[] = {\n    COMBO(test_combo1, KC_ESC)\n    COMBO(test_combo2, KC_TAB)\n};

Examples

A long list of combos can be defined in an enum list:

c
enum combos {\n  AB_ESC,\n  JK_TAB,\n  QW_SFT,\n  SD_LAYER\n};\n\nconst uint16_t PROGMEM ab_combo[] = {KC_A, KC_B, COMBO_END};\nconst uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END};\nconst uint16_t PROGMEM qw_combo[] = {KC_Q, KC_W, COMBO_END};\nconst uint16_t PROGMEM sd_combo[] = {KC_S, KC_D, COMBO_END};\n\ncombo_t key_combos[] = {\n  [AB_ESC] = COMBO(ab_combo, KC_ESC),\n  [JK_TAB] = COMBO(jk_combo, KC_TAB),\n  [QW_SFT] = COMBO(qw_combo, KC_LSFT),\n  [SD_LAYER] = COMBO(sd_combo, MO(_LAYER)),\n};

For a more complicated implementation, you can use the process_combo_event function to add custom handling.

c
enum combo_events {\n  EM_EMAIL,\n  BSPC_LSFT_CLEAR,\n};\n\nconst uint16_t PROGMEM email_combo[] = {KC_E, KC_M, COMBO_END};\nconst uint16_t PROGMEM clear_line_combo[] = {KC_BSPC, KC_LSFT, COMBO_END};\n\ncombo_t key_combos[] = {\n  [EM_EMAIL] = COMBO_ACTION(email_combo),\n  [BSPC_LSFT_CLEAR] = COMBO_ACTION(clear_line_combo),\n};\n/* COMBO_ACTION(x) is same as COMBO(x, KC_NO) */\n\nvoid process_combo_event(uint16_t combo_index, bool pressed) {\n  switch(combo_index) {\n    case EM_EMAIL:\n      if (pressed) {\n        SEND_STRING("john.doe@example.com");\n      }\n      break;\n    case BSPC_LSFT_CLEAR:\n      if (pressed) {\n        tap_code16(KC_END);\n        tap_code16(S(KC_HOME));\n        tap_code16(KC_BSPC);\n      }\n      break;\n  }\n}

This will send "john.doe@example.com" if you chord E and M together, and clear the current line with Backspace and Left-Shift. You could change this to do stuff like play sounds or change settings.

It is worth noting that COMBO_ACTIONs are not needed anymore. As of PR#8591, it is possible to run your own custom keycodes from combos. Just define the custom keycode, program its functionality in process_record_user, and define a combo with COMBO(<key_array>, <your_custom_keycode>). See the first example in Macros.

Keycodes

You can enable, disable and toggle the Combo feature on the fly. This is useful if you need to disable them temporarily, such as for a game. The following keycodes are available for use in your keymap.c

KeycodeAliasesDescription
QK_COMBO_ONCM_ONTurns on Combo feature
QK_COMBO_OFFCM_OFFTurns off Combo feature
QK_COMBO_TOGGLECM_TOGGToggles Combo feature on and off

Advanced Configuration

These configuration settings can be set in your config.h file.

Combo Term

By default, the timeout for the Combos to be recognized is set to 50ms. This can be changed if accidental combo misfires are happening or if you're having difficulties pressing keys at the same time. For instance, #define COMBO_TERM 40 would set the timeout period for combos to 40ms.

Buffer and state sizes

If you're using long combos, or you have a lot of overlapping combos, you may run into issues with this, as the buffers may not be large enough to accommodate what you're doing. In this case, you can configure the sizes of the buffers used. Be aware, larger combo sizes and larger buffers will increase memory usage!

To configure the amount of keys a combo can be composed of, change the following:

KeysDefine to be set
6#define EXTRA_SHORT_COMBOS
8QMK Default
16#define EXTRA_LONG_COMBOS
32#define EXTRA_EXTRA_LONG_COMBOS

Defining EXTRA_SHORT_COMBOS combines a combo's internal state into just one byte. This can, in some cases, save some memory. If it doesn't, no point using it. If you do, you also have to make sure you don't define combos with more than 6 keys.

Processing combos has two buffers, one for the key presses, another for the combos being activated. Use the following options to configure the sizes of these buffers:

DefineDefault
#define COMBO_KEY_BUFFER_LENGTH 88 (the key amount (EXTRA_)EXTRA_LONG_COMBOS gives)
#define COMBO_BUFFER_LENGTH 44

Modifier Combos

If a combo resolves to a Modifier, the window for processing the combo can be extended independently from normal combos. By default, this is disabled but can be enabled with #define COMBO_MUST_HOLD_MODS, and the time window can be configured with #define COMBO_HOLD_TERM 150 (default: TAPPING_TERM). With COMBO_MUST_HOLD_MODS, you cannot tap the combo any more which makes the combo less prone to misfires.

Strict key press order

By defining COMBO_MUST_PRESS_IN_ORDER combos only activate when the keys are pressed in the same order as they are defined in the key array.

Per Combo Timing, Holding, Tapping and Key Press Order

For each combo, it is possible to configure the time window it has to pressed in, if it needs to be held down, if it needs to be tapped, or if its keys need to be pressed in order.

For example, tap-only combos are useful if any (or all) of the underlying keys are mod-tap or layer-tap keys. When you tap the combo, you get the combo result. When you press the combo and hold it down, the combo doesn't activate. Instead the keys are processed separately as if the combo wasn't even there.

In order to use these features, the following configuration options and functions need to be defined. Coming up with useful timings and configuration is left as an exercise for the reader.

Config FlagFunctionDescription
COMBO_TERM_PER_COMBOuint16_t get_combo_term(uint16_t index, combo_t *combo)Optional per-combo timeout window. (default: COMBO_TERM)
COMBO_MUST_HOLD_PER_COMBObool get_combo_must_hold(uint16_t index, combo_t *combo)Controls if a given combo should fire immediately on tap or if it needs to be held. (default: false)
COMBO_MUST_TAP_PER_COMBObool get_combo_must_tap(uint16_t index, combo_t *combo)Controls if a given combo should fire only if tapped within COMBO_HOLD_TERM. (default: false)
COMBO_MUST_PRESS_IN_ORDER_PER_COMBObool get_combo_must_press_in_order(uint16_t index, combo_t *combo)Controls if a given combo should fire only if its keys are pressed in order. (default: true)

Examples:

c
uint16_t get_combo_term(uint16_t index, combo_t *combo) {\n    // decide by combo->keycode\n    switch (combo->keycode) {\n        case KC_X:\n            return 50;\n    }\n\n    // or with combo index, i.e. its name from enum.\n    switch (index) {\n        case COMBO_NAME_HERE:\n            return 9001;\n    }\n\n    // And if you're feeling adventurous, you can even decide by the keys in the chord,\n    // i.e. the exact array of keys you defined for the combo.\n    // This can be useful if your combos have a common key and you want to apply the\n    // same combo term for all of them.\n    if (combo->keys[0] == KC_ENT) { // if first key in the array is Enter\n        return 150;\n    }\n\n    return COMBO_TERM;\n}\n\nbool get_combo_must_hold(uint16_t index, combo_t *combo) {\n    // Same as above, decide by keycode, the combo index, or by the keys in the chord.\n\n    if (KEYCODE_IS_MOD(combo->keycode) || \n        (combo->keycode >= QK_MOMENTARY && combo->keycode <= QK_MOMENTARY_MAX) // MO(kc) keycodes\n        ) {\n        return true;\n    }\n\n    switch (index) {\n        case COMBO_NAME_HERE:\n            return true;\n    }\n\n    return false;\n}\n\nbool get_combo_must_tap(uint16_t index, combo_t *combo) {\n    // If you want all combos to be tap-only, just uncomment the next line\n    // return true\n\n    // If you want *all* combos, that have Mod-Tap/Layer-Tap/Momentary keys in its chord, to be tap-only, this is for you:\n    uint16_t key;\n    uint8_t idx = 0;\n    while ((key = pgm_read_word(&combo->keys[idx])) != COMBO_END) {\n        switch (key) {\n            case QK_MOD_TAP...QK_MOD_TAP_MAX:\n            case QK_LAYER_TAP...QK_LAYER_TAP_MAX:\n            case QK_MOMENTARY...QK_MOMENTARY_MAX:\n                return true;\n        }\n        idx += 1;\n    }\n    return false;\n\n}\n\nbool get_combo_must_press_in_order(uint16_t combo_index, combo_t *combo) {\n    switch (combo_index) {\n        /* List combos here that you want to only activate if their keys\n         * are pressed in the same order as they are defined in the combo's key\n         * array. */\n        case COMBO_NAME_HERE:\n            return true;\n        default:\n            return false;\n    }\n}

Generic hook to (dis)allow a combo activation

By defining COMBO_SHOULD_TRIGGER and its companying function bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode, keyrecord_t *record) you can block or allow combos to activate on the conditions of your choice. For example, you could disallow some combos on the base layer and allow them on another. Or disable combos on the home row when a timer is running.

Examples:

c
bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode, keyrecord_t *record) {\n    /* Disable combo `SOME_COMBO` on layer `_LAYER_A` */\n    switch (combo_index) {\n        case SOME_COMBO:\n            if (layer_state_is(_LAYER_A)) {\n                return false;\n            }\n    }\n\n    return true;\n}

Combo timer

Normally, the timer is started on the first key press and then reset on every subsequent key press within the COMBO_TERM. Inputting combos is relaxed like this, but also slightly more prone to accidental misfires.

The next two options alter the behaviour of the timer.

#define COMBO_STRICT_TIMER

With COMBO_STRICT_TIMER, the timer is started only on the first key press. Inputting combos is now less relaxed; you need to make sure the full chord is pressed within the COMBO_TERM. Misfires are less common but if you type multiple combos fast, there is a chance that the latter ones might not activate properly.

#define COMBO_NO_TIMER

By defining COMBO_NO_TIMER, the timer is disabled completely and combos are activated on the first key release. This also disables the "must hold" functionalities as they just wouldn't work at all.

Customizable key releases

By defining COMBO_PROCESS_KEY_RELEASE and implementing the function bool process_combo_key_release(uint16_t combo_index, combo_t *combo, uint8_t key_index, uint16_t keycode), you can run your custom code on each key release after a combo was activated. For example you could change the RGB colors, activate haptics, or alter the modifiers.

You can also release a combo early by returning true from the function.

Here's an example where a combo resolves to two modifiers, and on key releases the modifiers are unregistered one by one, depending on which key was released.

c
enum combos {\n  AB_MODS\n};\n\nconst uint16_t PROGMEM ab_combo[] = {KC_A, KC_B, COMBO_END};\n\ncombo_t key_combos[] = {\n  [AB_MODS] = COMBO(ab_combo, LCTL(KC_LSFT)),\n};\n\nbool process_combo_key_release(uint16_t combo_index, combo_t *combo, uint8_t key_index, uint16_t keycode) {\n    switch (combo_index) {\n        case AB_MODS:\n            switch(keycode) {\n                case KC_A:\n                    unregister_mods(MOD_MASK_CTRL);\n                    break;\n                case KC_B:\n                    unregister_mods(MOD_MASK_SHIFT);\n                    break;\n            }\n            return false; // do not release combo\n    }\n    return false;\n}

Layer independent combos

If you, for example, use multiple base layers for different key layouts, one for QWERTY, and another one for Colemak, you might want your combos to work from the same key positions on all layers. Defining the same combos again for another layout is redundant and takes more memory. The solution is to just check the keycodes from one layer.

With #define COMBO_ONLY_FROM_LAYER 0 in config.h, the combos' keys are always checked from layer 0, even if other layers are active.

Combo reference layers by layer.

If not using COMBO_ONLY_FROM_LAYER it is possible to specify a combo reference layer for any layer using the combo_ref_from_layer hook. The combo macros automatically create this function from the COMBO_REF_LAYER() entries given.

This function returns the assigned reference layer for the current layer. if there is no match, it returns the default reference layer if set, or the current layer otherwise. A default layer can be set with DEFAULT_REF_LAYER(_MY_COMBO_REF_LAYER)

If not set, the default reference layer selection from the automatically generated combo-ref-from-layer() will be the current layer.

The following combo_ref_from_layer function will give a reference layer of _QWERTY for the _DVORAK layer and will give the _NAV layer as a reference to it's self. All other layers will have the default for their combo reference layer. If the default is not set, all other layers will reference themselves.

c
#define COMBO_REF_DEFAULT _MY_COMBO_LAYER\n\nuint8_t combo_ref_from_layer(uint8_t layer){\n    switch (get_highest_layer(layer_state)){\n        case _DVORAK: return _QWERTY;\n        case _NAV: return _NAV;\n        default: return _MY_COMBO_LAYER;\n    }\n    return layer;  // important if default is not in case.\n}

The equivalent definition using the combo macros is this:

c
COMBO_REF_LAYER(_DVORAK, _QWERTY)\nCOMBO_REF_LAYER(_NAV, _NAV)\nDEFAULT_REF_LAYER(_MY_COMBO_LAYER).

User callbacks

In addition to the keycodes, there are a few functions that you can use to set the status, or check it:

FunctionDescription
combo_enable()Enables the combo feature
combo_disable()Disables the combo feature, and clears the combo buffer
combo_toggle()Toggles the state of the combo feature
is_combo_enabled()Returns the status of the combo feature state (true or false)

Dictionary Management

Having 3 places to update when adding new combos or altering old ones does become cumbersome when you have a lot of combos. We can alleviate this with some magic! ... If you consider C macros magic. First, you need to add VPATH += keyboards/gboards to your rules.mk. Next, include the file g/keymap_combo.h in your keymap.c.

WARNING

This functionality uses the same process_combo_event function as COMBO_ACTION macros do, so you cannot use the function yourself in your keymap. Instead, you have to define the cases of the switch statement by themselves within inject.h, which g/keymap_combo.h will then include into the function.

Then, write your combos in combos.def file in the following manner:

c
// Alternate reference layers by layer\n//               Layer     Reference layer\nCOMBO_REF_LAYER(_DVORAK, _QWERTY)  // reference the qwerty layer for dvorak.\nCOMBO_REF_LAYER(_NAV, _NAV) // explicit reference to self instead of the default.\n\n//   name     result    chord keys\nCOMB(AB_ESC,   KC_ESC,   KC_A, KC_B)\nCOMB(JK_TAB,   KC_TAB,   KC_J, KC_K)\nCOMB(JKL_SPC,  KC_SPC,   KC_J, KC_K, KC_L)\nCOMB(BSSL_CLR, KC_NO,    KC_BSPC, KC_LSFT) // using KC_NO as the resulting keycode is the same as COMBO_ACTION before.\nCOMB(QW_UNDO,  C(KC_Z),  KC_Q, KC_W)\nSUBS(TH_THE,   "the",    KC_T, KC_H) // SUBS uses SEND_STRING to output the given string.\n...

For small to huge ready made dictionaries of combos, you can check out http://combos.gboards.ca/.

', 80); diff --git a/assets/features_combo.md.C-GfDyXJ.lean.js b/assets/features_combo.md.CC9QZAP7.lean.js similarity index 91% rename from assets/features_combo.md.C-GfDyXJ.lean.js rename to assets/features_combo.md.CC9QZAP7.lean.js index a205217cd50..f4ba7156fee 100644 --- a/assets/features_combo.md.C-GfDyXJ.lean.js +++ b/assets/features_combo.md.CC9QZAP7.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Combos","description":"","frontmatter":{},"headers":[],"relativePath":"features/combo.md","filePath":"features/combo.md"}'); const _sfc_main = { name: "features/combo.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 80); diff --git a/assets/features_command.md.DgkId4it.js b/assets/features_command.md.B4mE21dh.js similarity index 98% rename from assets/features_command.md.DgkId4it.js rename to assets/features_command.md.B4mE21dh.js index 118aa45b55f..cfbea8573a8 100644 --- a/assets/features_command.md.DgkId4it.js +++ b/assets/features_command.md.B4mE21dh.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Command","description":"","frontmatter":{},"headers":[],"relativePath":"features/command.md","filePath":"features/command.md"}'); const _sfc_main = { name: "features/command.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Command

Command, formerly known as Magic, is a way to change your keyboard's behavior without having to flash or unplug it to use Bootmagic. There is a lot of overlap between this functionality and the Magic Keycodes. Wherever possible we encourage you to use that feature instead of Command.

On some keyboards Command is disabled by default. If this is the case, it must be explicitly enabled in your rules.mk:

make
COMMAND_ENABLE = yes

Usage

To use Command, hold down the key combination defined by the IS_COMMAND() macro. By default this is Left Shift+Right Shift. Then, press the key corresponding to the command you want. For example, to output the current QMK version to the QMK Toolbox console, press Left Shift+Right Shift+V.

Configuration

If you would like to change the key assignments for Command, #define these in your config.h at either the keyboard or keymap level. All keycode assignments here must omit the KC_ prefix.

DefineDefaultDescription
IS_COMMAND()(get_mods() == MOD_MASK_SHIFT)The key combination to activate Command
MAGIC_KEY_SWITCH_LAYER_WITH_FKEYStrueSet default layer with the Function row
MAGIC_KEY_SWITCH_LAYER_WITH_NKEYStrueSet default layer with the number keys
MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOMfalseSet default layer with MAGIC_KEY_LAYER0..9
MAGIC_KEY_DEBUGDToggle debugging over serial
MAGIC_KEY_DEBUG_MATRIXXToggle key matrix debugging
MAGIC_KEY_DEBUG_KBDKToggle keyboard debugging
MAGIC_KEY_DEBUG_MOUSEMToggle mouse debugging
MAGIC_KEY_CONSOLECEnable the Command console
MAGIC_KEY_VERSIONVPrint the running QMK version to the console
MAGIC_KEY_STATUSSPrint the current keyboard status to the console
MAGIC_KEY_HELPHPrint Command help to the console
MAGIC_KEY_HELP_ALTSLASHPrint Command help to the console (alternate)
MAGIC_KEY_LAYER00Make layer 0 the default layer
MAGIC_KEY_LAYER0_ALTGRAVEMake layer 0 the default layer (alternate)
MAGIC_KEY_LAYER11Make layer 1 the default layer
MAGIC_KEY_LAYER22Make layer 2 the default layer
MAGIC_KEY_LAYER33Make layer 3 the default layer
MAGIC_KEY_LAYER44Make layer 4 the default layer
MAGIC_KEY_LAYER55Make layer 5 the default layer
MAGIC_KEY_LAYER66Make layer 6 the default layer
MAGIC_KEY_LAYER77Make layer 7 the default layer
MAGIC_KEY_LAYER88Make layer 8 the default layer
MAGIC_KEY_LAYER99Make layer 9 the default layer
MAGIC_KEY_BOOTLOADERBJump to bootloader
MAGIC_KEY_BOOTLOADER_ALTESCJump to bootloader (alternate)
MAGIC_KEY_LOCKCAPSLock the keyboard so nothing can be typed
MAGIC_KEY_EEPROMEPrint stored EEPROM config to the console
MAGIC_KEY_EEPROM_CLEARBSPACEClear the EEPROM
MAGIC_KEY_NKRONToggle N-Key Rollover (NKRO)
MAGIC_KEY_SLEEP_LEDZToggle LED when computer is sleeping
', 9); diff --git a/assets/features_command.md.DgkId4it.lean.js b/assets/features_command.md.B4mE21dh.lean.js similarity index 91% rename from assets/features_command.md.DgkId4it.lean.js rename to assets/features_command.md.B4mE21dh.lean.js index 86a9d130220..1e1575be1c4 100644 --- a/assets/features_command.md.DgkId4it.lean.js +++ b/assets/features_command.md.B4mE21dh.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Command","description":"","frontmatter":{},"headers":[],"relativePath":"features/command.md","filePath":"features/command.md"}'); const _sfc_main = { name: "features/command.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 9); diff --git a/assets/features_digitizer.md.DGIGZFVx.js b/assets/features_digitizer.md.DBSZvpwE.js similarity index 99% rename from assets/features_digitizer.md.DGIGZFVx.js rename to assets/features_digitizer.md.DBSZvpwE.js index 8fb4d344340..bc08a3a8c43 100644 --- a/assets/features_digitizer.md.DGIGZFVx.js +++ b/assets/features_digitizer.md.DBSZvpwE.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Digitizer","description":"","frontmatter":{},"headers":[],"relativePath":"features/digitizer.md","filePath":"features/digitizer.md"}'); const _sfc_main = { name: "features/digitizer.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Digitizer

Digitizers allow the mouse cursor to be placed at absolute coordinates, unlike the Pointing Device feature which applies relative displacements.

This feature implements a stylus device with a tip switch and barrel switch (generally equivalent to the primary and secondary mouse buttons respectively). Tip pressure is not currently implemented.

Usage

Add the following to your rules.mk:

make
DIGITIZER_ENABLE = yes

Positioning

The X and Y coordinates are normalized, meaning their value must be set between 0 and 1. For the X component, the value 0 is the leftmost position, whereas the value 1 is the rightmost position. Similarly for the Y component, 0 is at the top and 1 at the bottom.

TIP

Since there is no display attached, the OS will likely map these coordinates to the virtual desktop. This may be important to know if you have multiple monitors.

Examples

This example simply places the cursor in the middle of the screen:

c
digitizer_in_range_on();\ndigitizer_set_position(0.5, 0.5);

The "in range" indicator is required to be on for the change in coordinates to be taken. It can then be turned off again to signal the end of the digitizer interaction, but it is not strictly required.

You can also modify the digitizer state directly, if you need to change multiple fields in a single report:

c
digitizer_state.in_range = true;\ndigitizer_state.dirty = true;\ndigitizer_flush();

digitizer_state is a struct of type digitizer_t.

API

struct digitizer_t

Contains the state of the digitizer.

Members


void digitizer_flush(void)

Send the digitizer report to the host if it is marked as dirty.


void digitizer_in_range_on(void)

Assert the "in range" indicator, and flush the report.


void digitizer_in_range_off(void)

Deassert the "in range" indicator, and flush the report.


void digitizer_tip_switch_on(void)

Assert the tip switch, and flush the report.


void digitizer_tip_switch_off(void)

Deassert the tip switch, and flush the report.


void digitizer_barrel_switch_on(void)

Assert the barrel switch, and flush the report.


void digitizer_barrel_switch_off(void)

Deassert the barrel switch, and flush the report.


void digitizer_set_position(float x, float y)

Set the absolute X and Y position of the digitizer contact, and flush the report.

Arguments

', 47); diff --git a/assets/features_digitizer.md.DGIGZFVx.lean.js b/assets/features_digitizer.md.DBSZvpwE.lean.js similarity index 91% rename from assets/features_digitizer.md.DGIGZFVx.lean.js rename to assets/features_digitizer.md.DBSZvpwE.lean.js index c270d6e8a6a..7532952bc2c 100644 --- a/assets/features_digitizer.md.DGIGZFVx.lean.js +++ b/assets/features_digitizer.md.DBSZvpwE.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Digitizer","description":"","frontmatter":{},"headers":[],"relativePath":"features/digitizer.md","filePath":"features/digitizer.md"}'); const _sfc_main = { name: "features/digitizer.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 47); diff --git a/assets/features_dip_switch.md.DtBOdc98.js b/assets/features_dip_switch.md.CfJ3EvxZ.js similarity index 99% rename from assets/features_dip_switch.md.DtBOdc98.js rename to assets/features_dip_switch.md.CfJ3EvxZ.js index de2b0f8ce34..b676bb43cd3 100644 --- a/assets/features_dip_switch.md.DtBOdc98.js +++ b/assets/features_dip_switch.md.CfJ3EvxZ.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"DIP Switches","description":"","frontmatter":{},"headers":[],"relativePath":"features/dip_switch.md","filePath":"features/dip_switch.md"}'); const _sfc_main = { name: "features/dip_switch.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

DIP Switches

DIP switches are supported by adding this to your rules.mk:

DIP_SWITCH_ENABLE = yes\n

and this to your config.h:

c
// Connects each switch in the dip switch to the GPIO pin of the MCU\n#define DIP_SWITCH_PINS { B14, A15, A10, B9 }\n// For split keyboards, you can separately define the right side pins\n#define DIP_SWITCH_PINS_RIGHT { ... }

or

c
// Connect each switch in the DIP switch to an unused intersections in the key matrix.\n#define DIP_SWITCH_MATRIX_GRID { {0,6}, {1,6}, {2,6} } // List of row and col pairs

DIP Switch map

DIP Switch mapping may be added to your keymap.c, which replicates the normal keyswitch functionality, but with dip switches. Add this to your keymap's rules.mk:

make
DIP_SWITCH_MAP_ENABLE = yes

Your keymap.c will then need a dip switch mapping defined (for two dip switches):

c
#if defined(DIP_SWITCH_MAP_ENABLE)\nconst uint16_t PROGMEM dip_switch_map[NUM_DIP_SWITCHES][NUM_DIP_STATES] = {\n    DIP_SWITCH_OFF_ON(DF(0), DF(1)),\n    DIP_SWITCH_OFF_ON(EC_NORM, EC_SWAP)\n};\n#endif

TIP

This should only be enabled at the keymap level.

Callbacks

The callback functions can be inserted into your <keyboard>.c:

c
bool dip_switch_update_kb(uint8_t index, bool active) { \n    if (!dip_switch_update_user(index, active)) { return false; }\n    return true;\n}

or keymap.c:

c
bool dip_switch_update_user(uint8_t index, bool active) { \n    switch (index) {\n        case 0:\n            if(active) { audio_on(); } else { audio_off(); }\n            break;\n        case 1:\n            if(active) { clicky_on(); } else { clicky_off(); }\n            break;\n        case 2:\n            if(active) { music_on(); } else { music_off(); }\n            break;\n        case 3:\n            if (active) {\n                #ifdef AUDIO_ENABLE\n                    PLAY_SONG(plover_song);\n                #endif\n                layer_on(_PLOVER);\n            } else {\n                #ifdef AUDIO_ENABLE\n                    PLAY_SONG(plover_gb_song);\n                #endif\n                layer_off(_PLOVER);\n            }\n            break;\n    }\n    return true;\n}

Additionally, we support bit mask functions which allow for more complex handling.

c
bool dip_switch_update_mask_kb(uint32_t state) { \n    if (!dip_switch_update_mask_user(state)) { return false; }\n    return true;\n}

or keymap.c:

c
bool dip_switch_update_mask_user(uint32_t state) { \n    if (state & (1UL<<0) && state & (1UL<<1)) {\n        layer_on(_ADJUST); // C on esc\n    } else {\n        layer_off(_ADJUST);\n    }\n    if (state & (1UL<<0)) {\n        layer_on(_TEST_A); // A on ESC\n    } else {\n        layer_off(_TEST_A);\n    }\n    if (state & (1UL<<1)) {\n        layer_on(_TEST_B); // B on esc\n    } else {\n        layer_off(_TEST_B);\n    }\n    return true;\n}

Hardware

Connects each switch in the dip switch to the GPIO pin of the MCU

One side of the DIP switch should be wired directly to the pin on the MCU, and the other side to ground. It should not matter which side is connected to which, as it should be functionally the same.

Connect each switch in the DIP switch to an unused intersections in the key matrix.

As with the keyswitch, a diode and DIP switch connect the ROW line to the COL line.

', 27); diff --git a/assets/features_dip_switch.md.DtBOdc98.lean.js b/assets/features_dip_switch.md.CfJ3EvxZ.lean.js similarity index 91% rename from assets/features_dip_switch.md.DtBOdc98.lean.js rename to assets/features_dip_switch.md.CfJ3EvxZ.lean.js index dbff3e90c6e..471687abcca 100644 --- a/assets/features_dip_switch.md.DtBOdc98.lean.js +++ b/assets/features_dip_switch.md.CfJ3EvxZ.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"DIP Switches","description":"","frontmatter":{},"headers":[],"relativePath":"features/dip_switch.md","filePath":"features/dip_switch.md"}'); const _sfc_main = { name: "features/dip_switch.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 27); diff --git a/assets/features_dynamic_macros.md.CrJ1vhBA.js b/assets/features_dynamic_macros.md.ZTtIhM8T.js similarity index 99% rename from assets/features_dynamic_macros.md.CrJ1vhBA.js rename to assets/features_dynamic_macros.md.ZTtIhM8T.js index 0b7bb5710c4..8180add99b3 100644 --- a/assets/features_dynamic_macros.md.CrJ1vhBA.js +++ b/assets/features_dynamic_macros.md.ZTtIhM8T.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Dynamic Macros: Record and Replay Macros in Runtime","description":"","frontmatter":{},"headers":[],"relativePath":"features/dynamic_macros.md","filePath":"features/dynamic_macros.md"}'); const _sfc_main = { name: "features/dynamic_macros.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Dynamic Macros: Record and Replay Macros in Runtime

QMK supports temporary macros created on the fly. We call these Dynamic Macros. They are defined by the user from the keyboard and are lost when the keyboard is unplugged or otherwise rebooted.

You can store one or two macros and they may have a combined total of 128 keypresses. You can increase this size at the cost of RAM.

To enable them, first include DYNAMIC_MACRO_ENABLE = yes in your rules.mk. Then, add the following keys to your keymap:

KeyAliasDescription
QK_DYNAMIC_MACRO_RECORD_START_1DM_REC1Start recording Macro 1
QK_DYNAMIC_MACRO_RECORD_START_2DM_REC2Start recording Macro 2
QK_DYNAMIC_MACRO_PLAY_1DM_PLY1Replay Macro 1
QK_DYNAMIC_MACRO_PLAY_2DM_PLY2Replay Macro 2
QK_DYNAMIC_MACRO_RECORD_STOPDM_RSTPFinish the macro that is currently being recorded.

That should be everything necessary.

To start recording the macro, press either DM_REC1 or DM_REC2.

To finish the recording, press the DM_RSTP layer button. You can also press DM_REC1 or DM_REC2 again to stop the recording.

To replay the macro, press either DM_PLY1 or DM_PLY2.

It is possible to replay a macro as part of a macro. It's ok to replay macro 2 while recording macro 1 and vice versa but never create recursive macros i.e. macro 1 that replays macro 1. If you do so and the keyboard will get unresponsive, unplug the keyboard and plug it again. You can disable this completely by defining DYNAMIC_MACRO_NO_NESTING in your config.h file.

TIP

For the details about the internals of the dynamic macros, please read the comments in the process_dynamic_macro.h and process_dynamic_macro.c files.

Customization

There are a number of options added that should allow some additional degree of customization

DefineDefaultDescription
DYNAMIC_MACRO_SIZE128Sets the amount of memory that Dynamic Macros can use. This is a limited resource, dependent on the controller.
DYNAMIC_MACRO_USER_CALLNot definedDefining this falls back to using the user keymap.c file to trigger the macro behavior.
DYNAMIC_MACRO_NO_NESTINGNot DefinedDefining this disables the ability to call a macro from another macro (nested macros).
DYNAMIC_MACRO_DELAYNot DefinedSets the waiting time (ms unit) when sending each key.

If the LEDs start blinking during the recording with each keypress, it means there is no more space for the macro in the macro buffer. To fit the macro in, either make the other macro shorter (they share the same buffer) or increase the buffer size by adding the DYNAMIC_MACRO_SIZE define in your config.h (default value: 128; please read the comments for it in the header).

DYNAMIC_MACRO_USER_CALL

For users of the earlier versions of dynamic macros: It is still possible to finish the macro recording using just the layer modifier used to access the dynamic macro keys, without a dedicated DM_RSTP key. If you want this behavior back, add #define DYNAMIC_MACRO_USER_CALL to your config.h and insert the following snippet at the beginning of your process_record_user() function:

c
	uint16_t macro_kc = (keycode == MO(_DYN) ? DM_RSTP : keycode);\n\n	if (!process_record_dynamic_macro(macro_kc, record)) {\n		return false;\n	}

User Hooks

There are a number of hooks that you can use to add custom functionality and feedback options to Dynamic Macro feature. This allows for some additional degree of customization.

Note, that direction indicates which macro it is, with 1 being Macro 1, -1 being Macro 2, and 0 being no macro.

Additionally, you can call dynamic_macro_led_blink() to flash the backlights if that feature is enabled.

', 23); diff --git a/assets/features_dynamic_macros.md.CrJ1vhBA.lean.js b/assets/features_dynamic_macros.md.ZTtIhM8T.lean.js similarity index 92% rename from assets/features_dynamic_macros.md.CrJ1vhBA.lean.js rename to assets/features_dynamic_macros.md.ZTtIhM8T.lean.js index 158bf5f02c9..2e57b09d37f 100644 --- a/assets/features_dynamic_macros.md.CrJ1vhBA.lean.js +++ b/assets/features_dynamic_macros.md.ZTtIhM8T.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Dynamic Macros: Record and Replay Macros in Runtime","description":"","frontmatter":{},"headers":[],"relativePath":"features/dynamic_macros.md","filePath":"features/dynamic_macros.md"}'); const _sfc_main = { name: "features/dynamic_macros.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 23); diff --git a/assets/features_encoders.md.BY--6WYQ.js b/assets/features_encoders.md.CugXBk-4.js similarity index 99% rename from assets/features_encoders.md.BY--6WYQ.js rename to assets/features_encoders.md.CugXBk-4.js index ebf6e60063b..ff95959a52a 100644 --- a/assets/features_encoders.md.BY--6WYQ.js +++ b/assets/features_encoders.md.CugXBk-4.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Encoders","description":"","frontmatter":{},"headers":[],"relativePath":"features/encoders.md","filePath":"features/encoders.md"}'); const _sfc_main = { name: "features/encoders.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Encoders

Basic (EC11 compatible) encoders are supported by adding this to your rules.mk:

make
ENCODER_ENABLE = yes

and this to your config.h:

c
#define ENCODER_A_PINS { B12 }\n#define ENCODER_B_PINS { B13 }

Each PAD_A/B variable defines an array so multiple encoders can be defined, e.g.:

c
#define ENCODER_A_PINS { encoder1a, encoder2a }\n#define ENCODER_B_PINS { encoder1b, encoder2b }

If your encoder's clockwise directions are incorrect, you can swap the A & B pad definitions. They can also be flipped with a define:

c
#define ENCODER_DIRECTION_FLIP

Additionally, the resolution, which defines how many pulses the encoder registers between each detent, can be defined with:

c
#define ENCODER_RESOLUTION 4

It can also be defined per-encoder, by instead defining:

c
#define ENCODER_RESOLUTIONS { 4, 2 }

For 4× encoders you also can assign default position if encoder skips pulses when it changes direction. For example, if your encoder send high level on both pins by default, define this:

c
#define ENCODER_DEFAULT_POS 0x3

Split Keyboards

If you are using different pinouts for the encoders on each half of a split keyboard, you can define the pinout (and optionally, resolutions) for the right half like this:

c
#define ENCODER_A_PINS_RIGHT { encoder1a, encoder2a }\n#define ENCODER_B_PINS_RIGHT { encoder1b, encoder2b }\n#define ENCODER_RESOLUTIONS_RIGHT { 2, 4 }

If the _RIGHT definitions aren't specified in your config.h, then the non-_RIGHT versions will be applied to both sides of the split.

Additionally, if one side does not have an encoder, you can specify {} for the pins/resolution -- for example, a split keyboard with only a right-side encoder:

c
#define ENCODER_A_PINS { }\n#define ENCODER_B_PINS { }\n#define ENCODER_RESOLUTIONS { }\n#define ENCODER_A_PINS_RIGHT { B12 }\n#define ENCODER_B_PINS_RIGHT { B13 }\n#define ENCODER_RESOLUTIONS_RIGHT { 4 }

WARNING

Keep in mind that whenver you change the encoder resolution, you will need to reflash the half that has the encoder affected by the change.

Encoder map

Encoder mapping may be added to your keymap.c, which replicates the normal keyswitch layer handling functionality, but with encoders. Add this to your keymap's rules.mk:

make
ENCODER_MAP_ENABLE = yes

Your keymap.c will then need an encoder mapping defined (for four layers and two encoders):

c
#if defined(ENCODER_MAP_ENABLE)\nconst uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {\n    [0] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD),  ENCODER_CCW_CW(KC_VOLD, KC_VOLU)  },\n    [1] = { ENCODER_CCW_CW(UG_HUED, UG_HUEU),  ENCODER_CCW_CW(UG_SATD, UG_SATU)  },\n    [2] = { ENCODER_CCW_CW(UG_VALD, UG_VALU),  ENCODER_CCW_CW(UG_SPDD, UG_SPDU)  },\n    [3] = { ENCODER_CCW_CW(UG_PREV, UG_NEXT),  ENCODER_CCW_CW(KC_RIGHT, KC_LEFT) },\n};\n#endif

TIP

This should only be enabled at the keymap level.

Using encoder mapping pumps events through the normal QMK keycode processing pipeline, resulting in a keydown/keyup combination pushed through process_record_xxxxx(). To configure the amount of time between the encoder "keyup" and "keydown", you can add the following to your config.h:

c
#define ENCODER_MAP_KEY_DELAY 10

TIP

By default, the encoder map delay matches the value of TAP_CODE_DELAY.

Callbacks

TIP

Default Behaviour: all encoders installed will function as volume up (KC_VOLU) on clockwise rotation and volume down (KC_VOLD) on counter-clockwise rotation. If you do not wish to override this, no further configuration is necessary.

If you would like the alter the default behaviour, and are not using ENCODER_MAP_ENABLE = yes, the callback functions can be inserted into your <keyboard>.c:

c
bool encoder_update_kb(uint8_t index, bool clockwise) {\n    if (!encoder_update_user(index, clockwise)) {\n      return false; /* Don't process further events if user function exists and returns false */\n    }\n    if (index == 0) { /* First encoder */\n        if (clockwise) {\n            tap_code(KC_PGDN);\n        } else {\n            tap_code(KC_PGUP);\n        }\n    } else if (index == 1) { /* Second encoder */\n        if (clockwise) {\n            rgb_matrix_increase_hue();\n        } else {\n            rgb_matrix_decrease_hue();\n        }\n    }\n    return true;\n}

or keymap.c:

c
bool encoder_update_user(uint8_t index, bool clockwise) {\n    if (index == 0) { /* First encoder */\n        if (clockwise) {\n            tap_code(KC_PGDN);\n        } else {\n            tap_code(KC_PGUP);\n        }\n    } else if (index == 1) { /* Second encoder */\n        if (clockwise) {\n            rgb_matrix_increase_hue();\n        } else {\n            rgb_matrix_decrease_hue();\n        }\n    }\n    return false;\n}

WARNING

If you return true in the keymap level _user function, it will allow the keyboard/core level encoder code to run on top of your own. Returning false will override the keyboard level function, if setup correctly. This is generally the safest option to avoid confusion.

Hardware

The A an B lines of the encoders should be wired directly to the MCU, and the C/common lines should be wired to ground.

Multiple Encoders

Multiple encoders may share pins so long as each encoder has a distinct pair of pins when the following conditions are met:

For example you can support two encoders using only 3 pins like this

#define ENCODER_A_PINS { B1, B1 }\n#define ENCODER_B_PINS { B2, B3 }

You could even support three encoders using only three pins (one per encoder) however in this configuration, rotating two encoders which share pins simultaneously will often generate incorrect output. For example:

#define ENCODER_A_PINS { B1, B1, B2 }\n#define ENCODER_B_PINS { B2, B3, B3 }

Here rotating Encoder 0 B1 B2 and Encoder 1 B1 B3 could be interpreted as rotating Encoder 2 B2 B3 or B3 B2 depending on the timing. This may still be a useful configuration depending on your use case

', 48); diff --git a/assets/features_encoders.md.BY--6WYQ.lean.js b/assets/features_encoders.md.CugXBk-4.lean.js similarity index 91% rename from assets/features_encoders.md.BY--6WYQ.lean.js rename to assets/features_encoders.md.CugXBk-4.lean.js index 2634a71a5cb..354bd946fbc 100644 --- a/assets/features_encoders.md.BY--6WYQ.lean.js +++ b/assets/features_encoders.md.CugXBk-4.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Encoders","description":"","frontmatter":{},"headers":[],"relativePath":"features/encoders.md","filePath":"features/encoders.md"}'); const _sfc_main = { name: "features/encoders.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 48); diff --git a/assets/features_grave_esc.md.mUNEjUYS.js b/assets/features_grave_esc.md.DTvs6396.js similarity index 98% rename from assets/features_grave_esc.md.mUNEjUYS.js rename to assets/features_grave_esc.md.DTvs6396.js index 23771fa7d0a..5e2b38bb6f8 100644 --- a/assets/features_grave_esc.md.mUNEjUYS.js +++ b/assets/features_grave_esc.md.DTvs6396.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Grave Escape","description":"","frontmatter":{},"headers":[],"relativePath":"features/grave_esc.md","filePath":"features/grave_esc.md"}'); const _sfc_main = { name: "features/grave_esc.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Grave Escape

If you're using a 60% keyboard, or any other layout with no F-row, you will have noticed that there is no dedicated Escape key. Grave Escape is a feature that allows you to share the grave key (` and ~) with Escape.

Usage

Replace the KC_GRV key in your keymap (usually to the left of the 1 key) with QK_GESC. Most of the time this key will output KC_ESC when pressed. However, when Shift or GUI are held down it will output KC_GRV instead.

What Your OS Sees

If Mary presses QK_GESC on her keyboard, the OS will see an KC_ESC character. Now if Mary holds Shift down and presses QK_GESC it will output ~, or a shifted backtick. Now if she holds GUI/CMD/WIN, it will output a simple ` character.

Keycodes

KeyAliasesDescription
QK_GRAVE_ESCAPEQK_GESCEscape when pressed, ` when Shift or GUI are held

Caveats

On macOS, Command+` is by default mapped to "Move focus to next window" so it will not output a backtick. Additionally, Terminal always recognises this shortcut to cycle between windows, even if the shortcut is changed in the Keyboard preferences.

Configuration

There are several possible key combinations this will break, among them Control+Shift+Escape on Windows and Command+Option+Escape on macOS. To work around this, you can #define these options in your config.h:

DefineDescription
GRAVE_ESC_ALT_OVERRIDEAlways send Escape if Alt is pressed
GRAVE_ESC_CTRL_OVERRIDEAlways send Escape if Control is pressed
GRAVE_ESC_GUI_OVERRIDEAlways send Escape if GUI is pressed
GRAVE_ESC_SHIFT_OVERRIDEAlways send Escape if Shift is pressed
', 13); diff --git a/assets/features_grave_esc.md.mUNEjUYS.lean.js b/assets/features_grave_esc.md.DTvs6396.lean.js similarity index 91% rename from assets/features_grave_esc.md.mUNEjUYS.lean.js rename to assets/features_grave_esc.md.DTvs6396.lean.js index ced06c11ff6..d99ae944004 100644 --- a/assets/features_grave_esc.md.mUNEjUYS.lean.js +++ b/assets/features_grave_esc.md.DTvs6396.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Grave Escape","description":"","frontmatter":{},"headers":[],"relativePath":"features/grave_esc.md","filePath":"features/grave_esc.md"}'); const _sfc_main = { name: "features/grave_esc.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 13); diff --git a/assets/features_haptic_feedback.md.DS8CmC7e.js b/assets/features_haptic_feedback.md.DVUdhF3q.js similarity index 99% rename from assets/features_haptic_feedback.md.DS8CmC7e.js rename to assets/features_haptic_feedback.md.DVUdhF3q.js index 2ae2cab8be3..0310dfe791b 100644 --- a/assets/features_haptic_feedback.md.DS8CmC7e.js +++ b/assets/features_haptic_feedback.md.DVUdhF3q.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Haptic Feedback","description":"","frontmatter":{},"headers":[],"relativePath":"features/haptic_feedback.md","filePath":"features/haptic_feedback.md"}'); const _sfc_main = { name: "features/haptic_feedback.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Haptic Feedback

Haptic feedback rules.mk options

The following options are currently available for haptic feedback in rules.mk:

make
HAPTIC_ENABLE = yes\n\nHAPTIC_DRIVER = drv2605l\n# or\nHAPTIC_DRIVER = solenoid

The following config.h settings are available for all types of haptic feedback:

SettingsDefaultDescription
HAPTIC_ENABLE_PINNot definedConfigures a pin to enable a boost converter for some haptic solution, often used with solenoid drivers.
HAPTIC_ENABLE_PIN_ACTIVE_LOWNot definedIf defined then the haptic enable pin is active-low.
HAPTIC_ENABLE_STATUS_LEDNot definedConfigures a pin to reflect the current enabled/disabled status of haptic feedback.
HAPTIC_ENABLE_STATUS_LED_ACTIVE_LOWNot definedIf defined then the haptic status led will be active-low.
HAPTIC_OFF_IN_LOW_POWER0If set to 1, haptic feedback is disabled before the device is configured, and while the device is suspended.

Known Supported Hardware

NameDescription
LV061228B-L65-Az-axis 2v LRA
Mini Motor Discsmall 2-5v ERM

Haptic Keycodes

Not all keycodes below will work depending on which haptic mechanism you have chosen.

KeyAliasesDescription
QK_HAPTIC_ONHF_ONTurn haptic feedback on
QK_HAPTIC_OFFHF_OFFTurn haptic feedback off
QK_HAPTIC_TOGGLEHF_TOGGToggle haptic feedback on/off
QK_HAPTIC_RESETHF_RSTReset haptic feedback config to default
QK_HAPTIC_FEEDBACK_TOGGLEHF_FDBKToggle feedback to occur on keypress, release or both
QK_HAPTIC_BUZZ_TOGGLEHF_BUZZToggle solenoid buzz on/off
QK_HAPTIC_MODE_NEXTHF_NEXTGo to next DRV2605L waveform
QK_HAPTIC_MODE_PREVIOUSHF_PREVGo to previous DRV2605L waveform
QK_HAPTIC_CONTINUOUS_TOGGLEHF_CONTToggle continuous haptic mode on/off
QK_HAPTIC_CONTINUOUS_UPHF_CONUIncrease DRV2605L continous haptic strength
QK_HAPTIC_CONTINUOUS_DOWNHF_CONDDecrease DRV2605L continous haptic strength
QK_HAPTIC_DWELL_UPHF_DWLUIncrease Solenoid dwell time
QK_HAPTIC_DWELL_DOWNHF_DWLDDecrease Solenoid dwell time

Solenoids

The solenoid code supports relay switches, and similar hardware, as well as solenoids.

For a regular solenoid, you will need a build a circuit to drive the solenoid through a mosfet as most MCU will not be able to provide the current needed to drive the coil in the solenoid.

Wiring diagram provided by Adafruit

For relay switches, the hardware may already contain all of that ciruitry, and just require VCC, GND and a data pin.

SettingsDefaultDescription
SOLENOID_PINNot definedConfigures the pin that the switch is connected to.
SOLENOID_PIN_ACTIVE_LOWNot definedIf defined then the switch trigger pin is active low.
SOLENOID_PINSNot definedConfigures an array of pins to be used for switch activation.
SOLENOID_PINS_ACTIVE_LOWNot definedAllows you to specify how each pin is pulled for activation.
SOLENOID_RANDOM_FIRENot definedWhen there are multiple solenoids, will select a random one to fire.
SOLENOID_DEFAULT_DWELL12 msConfigures the default dwell time for the switch.
SOLENOID_MIN_DWELL4 msSets the lower limit for the dwell.
SOLENOID_MAX_DWELL100 msSets the upper limit for the dwell.
SOLENOID_DWELL_STEP_SIZE1 msThe step size to use when HF_DWL* keycodes are sent.
SOLENOID_DEFAULT_BUZZ0 (disabled)On HF_RST buzz is set "on" if this is "1"
SOLENOID_BUZZ_ACTUATEDSOLENOID_MIN_DWELLActuated-time when the switch is in buzz mode.
SOLENOID_BUZZ_NONACTUATEDSOLENOID_MIN_DWELLNon-Actuated-time when the switch is in buzz mode.

Beware that some pins may be powered during bootloader (ie. A13 on the STM32F303 chip) and will result in the solenoid kept in the on state through the whole flashing process. This may overheat and damage the solenoid. If you find that the pin the solenoid is connected to is triggering the solenoid during bootloader/DFU, select another pin.

DRV2605L

DRV2605L is controlled over i2c protocol, and has to be connected to the SDA and SCL pins, these varies depending on the MCU in use.

Feedback motor setup

This driver supports 2 different feedback motors. Set the following in your config.h based on which motor you have selected.

ERM

Eccentric Rotating Mass vibration motors (ERM) is motor with a off-set weight attached so when drive signal is attached, the off-set weight spins and causes a sinusoidal wave that translate into vibrations.

c
#define DRV2605L_FB_ERM_LRA 0\n#define DRV2605L_FB_BRAKEFACTOR 3 /* For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 */\n#define DRV2605L_FB_LOOPGAIN 1 /* For  Low:0, Medium:1, High:2, Very High:3 */\n\n/* Please refer to your datasheet for the optimal setting for your specific motor. */\n#define DRV2605L_RATED_VOLTAGE 3\n#define DRV2605L_V_PEAK 5
LRA

Linear resonant actuators (LRA, also know as a linear vibrator) works different from a ERM. A LRA has a weight and magnet suspended by springs and a voice coil. When the drive signal is applied, the weight would be vibrate on a single axis (side to side or up and down). Since the weight is attached to a spring, there is a resonance effect at a specific frequency. This frequency is where the LRA will operate the most efficiently. Refer to the motor's datasheet for the recommanded range for this frequency.

c
#define DRV2605L_FB_ERM_LRA 1\n#define DRV2605L_FB_BRAKEFACTOR 3 /* For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 */\n#define DRV2605L_FB_LOOPGAIN 1 /* For  Low:0, Medium:1, High:2, Very High:3 */\n\n/* Please refer to your datasheet for the optimal setting for your specific motor. */\n#define DRV2605L_RATED_VOLTAGE 2\n#define DRV2605L_V_PEAK 2.8\n#define DRV2605L_V_RMS 2.0 \n#define DRV2605L_V_PEAK 2.1\n#define DRV2605L_F_LRA 205 /* resonance freq */

DRV2605L waveform library

DRV2605L comes with preloaded library of various waveform sequences that can be called and played. If writing a macro, these waveforms can be played using DRV_pulse(*sequence name or number*)

List of waveform sequences from the datasheet:

seq#Sequence nameseq#Sequence nameseq#Sequence name
1strong_click43lg_dblclick_med_6085transition_rampup_med_smooth2
2strong_click_6044lg_dblsharp_tick86transition_rampup_short_smooth1
3strong_click_3045lg_dblsharp_tick_8087transition_rampup_short_smooth2
4sharp_click46lg_dblsharp_tick_6088transition_rampup_long_sharp1
5sharp_click_6047buzz89transition_rampup_long_sharp2
6sharp_click_3048buzz_8090transition_rampup_med_sharp1
7soft_bump49buzz_6091transition_rampup_med_sharp2
8soft_bump_6050buzz_4092transition_rampup_short_sharp1
9soft_bump_3051buzz_2093transition_rampup_short_sharp2
10dbl_click52pulsing_strong94transition_rampdown_long_smooth1_50
11dbl_click_6053pulsing_strong_8095transition_rampdown_long_smooth2_50
12trp_click54pulsing_medium96transition_rampdown_med_smooth1_50
13soft_fuzz55pulsing_medium_8097transition_rampdown_med_smooth2_50
14strong_buzz56pulsing_sharp98transition_rampdown_short_smooth1_50
15alert_750ms57pulsing_sharp_8099transition_rampdown_short_smooth2_50
16alert_1000ms58transition_click100transition_rampdown_long_sharp1_50
17strong_click159transition_click_80101transition_rampdown_long_sharp2_50
18strong_click2_8060transition_click_60102transition_rampdown_med_sharp1_50
19strong_click3_6061transition_click_40103transition_rampdown_med_sharp2_50
20strong_click4_3062transition_click_20104transition_rampdown_short_sharp1_50
21medium_click163transition_click_10105transition_rampdown_short_sharp2_50
22medium_click2_8064transition_hum106transition_rampup_long_smooth1_50
23medium_click3_6065transition_hum_80107transition_rampup_long_smooth2_50
24sharp_tick166transition_hum_60108transition_rampup_med_smooth1_50
25sharp_tick2_8067transition_hum_40109transition_rampup_med_smooth2_50
26sharp_tick3_6068transition_hum_20110transition_rampup_short_smooth1_50
27sh_dblclick_str69transition_hum_10111transition_rampup_short_smooth2_50
28sh_dblclick_str_8070transition_rampdown_long_smooth1112transition_rampup_long_sharp1_50
29sh_dblclick_str_6071transition_rampdown_long_smooth2113transition_rampup_long_sharp2_50
30sh_dblclick_str_3072transition_rampdown_med_smooth1114transition_rampup_med_sharp1_50
31sh_dblclick_med73transition_rampdown_med_smooth2115transition_rampup_med_sharp2_50
32sh_dblclick_med_8074transition_rampdown_short_smooth1116transition_rampup_short_sharp1_50
33sh_dblclick_med_6075transition_rampdown_short_smooth2117transition_rampup_short_sharp2_50
34sh_dblsharp_tick76transition_rampdown_long_sharp1118long_buzz_for_programmatic_stopping
35sh_dblsharp_tick_8077transition_rampdown_long_sharp2119smooth_hum1_50
36sh_dblsharp_tick_6078transition_rampdown_med_sharp1120smooth_hum2_40
37lg_dblclick_str79transition_rampdown_med_sharp2121smooth_hum3_30
38lg_dblclick_str_8080transition_rampdown_short_sharp1122smooth_hum4_20
39lg_dblclick_str_6081transition_rampdown_short_sharp2123smooth_hum5_10
40lg_dblclick_str_3082transition_rampup_long_smooth1
41lg_dblclick_med83transition_rampup_long_smooth2
42lg_dblclick_med_8084transition_rampup_med_smooth1

Optional DRV2605L defines

c
#define DRV2605L_GREETING *sequence name or number*

If haptic feedback is enabled, the keyboard will vibrate to a specific sequence during startup. That can be selected using the following define:

c
#define DRV2605L_DEFAULT_MODE *sequence name or number*

This will set what sequence HF_RST will set as the active mode. If not defined, mode will be set to 1 when HF_RST is pressed.

DRV2605L Continuous Haptic Mode

This mode sets continuous haptic feedback with the option to increase or decrease strength.

Haptic Key Exclusion

The Haptic Exclusion is implemented as __attribute__((weak)) bool get_haptic_enabled_key(uint16_t keycode, keyrecord_t *record) in haptic.c. This allows a re-definition at the required level with the specific requirement / exclusion.

NO_HAPTIC_MOD

With the entry of #define NO_HAPTIC_MOD in config.h, the following keys will not trigger feedback:

NO_HAPTIC_ALPHA

With the entry of #define NO_HAPTIC_ALPHA in config.h, none of the alpha keys (A ... Z) will trigger a feedback.

NO_HAPTIC_PUNCTUATION

With the entry of #define NO_HAPTIC_PUNCTUATION in config.h, none of the following keys will trigger a feedback: Enter, ESC, Backspace, Space, Minus, Equal, Left Bracket, Right Bracket, Backslash, Non-US Hash, Semicolon, Quote, Grave, Comma, Slash, Dot, Non-US Backslash.

NO_HAPTIC_LOCKKEYS

With the entry of #define NO_HAPTIC_LOCKKEYS in config.h, none of the following keys will trigger a feedback: Caps Lock, Scroll Lock, Num Lock.

NO_HAPTIC_NAV

With the entry of #define NO_HAPTIC_NAV in config.h, none of the following keys will trigger a feedback: Print Screen, Pause, Insert, Delete, Page Down, Page Up, Left Arrow, Up Arrow, Right Arrow, Down Arrow, End, Home.

NO_HAPTIC_NUMERIC

With the entry of #define NO_HAPTIC_NUMERIC in config.h, none of the following keys between 0 and 9 (KC_1 ... KC_0) will trigger a feedback.

', 55); diff --git a/assets/features_haptic_feedback.md.DS8CmC7e.lean.js b/assets/features_haptic_feedback.md.DVUdhF3q.lean.js similarity index 91% rename from assets/features_haptic_feedback.md.DS8CmC7e.lean.js rename to assets/features_haptic_feedback.md.DVUdhF3q.lean.js index 0ec1580810b..eb4d360dd0d 100644 --- a/assets/features_haptic_feedback.md.DS8CmC7e.lean.js +++ b/assets/features_haptic_feedback.md.DVUdhF3q.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Haptic Feedback","description":"","frontmatter":{},"headers":[],"relativePath":"features/haptic_feedback.md","filePath":"features/haptic_feedback.md"}'); const _sfc_main = { name: "features/haptic_feedback.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 55); diff --git a/assets/features_hd44780.md.15K40o_e.js b/assets/features_hd44780.md.kUIf1-0D.js similarity index 99% rename from assets/features_hd44780.md.15K40o_e.js rename to assets/features_hd44780.md.kUIf1-0D.js index 24f4cac13dd..9d87e74fa80 100644 --- a/assets/features_hd44780.md.15K40o_e.js +++ b/assets/features_hd44780.md.kUIf1-0D.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"HD44780 LCD Driver","description":"","frontmatter":{},"headers":[],"relativePath":"features/hd44780.md","filePath":"features/hd44780.md"}'); const _sfc_main = { name: "features/hd44780.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

HD44780 LCD Driver

Supported Hardware

LCD modules using HD44780U IC or equivalent, communicating in 4-bit mode.

ModuleSizeNotes
1602A16x2, 5x8 dots
2004A20x4, 5x8 dotsUntested, not currently supported

To run these modules at 3.3V, an additional MAX660 voltage converter IC must be soldered on, along with two 10µF capacitors. See this page for more details.

Usage

Add the following to your rules.mk:

make
HD44780_ENABLE = yes

Basic Configuration

Add the following to your config.h:

DefineDefaultDescription
HD44780_DATA_PINSNot defined(Required) An array of four GPIO pins connected to the display's D4-D7 pins, eg. { B1, B3, B2, B6 }
HD44780_RS_PINNot defined(Required) The GPIO connected to the display's RS pin
HD44780_RW_PINNot defined(Required) The GPIO connected to the display's RW pin
HD44780_E_PINNot defined(Required) The GPIO connected to the display's E pin
HD44780_DISPLAY_COLS16The number of visible characters on a single line of the display
HD44780_DISPLAY_LINES2The number of visible lines on the display
HD44780_WRAP_LINESNot definedIf defined, input characters will wrap to the next line

Examples

Hello World

Add the following to your keymap.c:

c
void keyboard_post_init_user(void) {\n    hd44780_init(true, true); // Show blinking cursor\n    hd44780_puts_P(PSTR("Hello, world!\\n"));\n}

Custom Character Definition

Up to eight custom characters can be defined. This data is stored in the Character Generator RAM (CGRAM), and is not persistent across power cycles.

This example defines the QMK Psi as the first custom character. The first 16 positions in the character set are reserved for the eight custom characters duplicated.

Byte |      16 8 4 2 1\n   1 | x x x ■ □ ■ □ ■\n   2 | x x x ■ □ ■ □ ■\n   3 | x x x ■ □ ■ □ ■\n   4 | x x x □ ■ ■ ■ □\n   5 | x x x □ □ ■ □ □\n   6 | x x x □ □ ■ □ □\n   7 | x x x □ □ ■ □ □\n   8 | x x x □ □ □ □ □
c
const uint8_t PROGMEM psi[8] = { 0x15, 0x15, 0x15, 0x0E, 0x04, 0x04, 0x04, 0x00 };\n\nvoid keyboard_post_init_user(void) {\n    hd44780_init(false, false);\n    hd44780_define_char_P(0, psi);\n    // Cursor is incremented while defining characters so must be reset\n    hd44780_home();\n    // 0x08 to avoid null terminator\n    hd44780_puts_P(PSTR("\\x08 QMK Firmware"));\n}

API

void hd44780_init(bool cursor, bool blink)

Initialize the display.

This function should be called only once, before any of the other functions can be called.

Arguments


void hd44780_clear(void)

Clear the display.

This function is called on init.


void hd44780_home(void)

Move the cursor to the home position.

This function is called on init.


void hd44780_on(bool cursor, bool blink)

Turn the display on, and/or set the cursor properties.

This function is called on init.

Arguments


void hd44780_off(void)

Turn the display off.


void hd44780_set_cursor(uint8_t col, uint8_t line)

Move the cursor to the specified position on the display.

Arguments


void hd44780_putc(char c)

Print a character to the display. The newline character \\n will move the cursor to the start of the next line.

The exact character shown may depend on the ROM code of your particular display - refer to the datasheet for the full character set.

Arguments


void hd44780_puts(const char *s)

Print a string of characters to the display.

Arguments


void hd44780_puts_P(const char *s)

Print a string of characters from PROGMEM to the display.

On ARM devices, this function is simply an alias of hd44780_puts().

Arguments


void hd44780_define_char(uint8_t index, uint8_t *data)

Define a custom character.

Arguments


void hd44780_define_char_P(uint8_t index, const uint8_t *data)

Define a custom character from PROGMEM.

On ARM devices, this function is simply an alias of hd44780_define_char().

Arguments


bool hd44780_busy(void)

Indicates whether the display is currently processing, and cannot accept instructions.

Return Value

true if the display is busy.


void hd44780_write(uint8_t data, bool isData)

Write a byte to the display.

Arguments


uint8_t hd44780_read(bool isData)

Read a byte from the display.

Arguments

Return Value

If isData is true, the returned byte will be the character at the current DDRAM address. Otherwise, it will be the current DDRAM address and the busy flag.


void hd44780_command(uint8_t command)

Send a command to the display. Refer to the datasheet and hd44780.h for the valid commands and defines.

This function waits for the display to clear the busy flag before sending the command.

Arguments


void hd44780_data(uint8_t data)

Send a byte of data to the display.

This function waits for the display to clear the busy flag before sending the data.

Arguments


void hd44780_set_cgram_address(uint8_t address)

Set the CGRAM address.

This function is used when defining custom characters.

Arguments


void hd44780_set_ddram_address(uint8_t address)

Set the DDRAM address.

This function is used when printing characters to the display, and setting the cursor.

Arguments

', 117); diff --git a/assets/features_hd44780.md.15K40o_e.lean.js b/assets/features_hd44780.md.kUIf1-0D.lean.js similarity index 91% rename from assets/features_hd44780.md.15K40o_e.lean.js rename to assets/features_hd44780.md.kUIf1-0D.lean.js index f6752f961a4..0a596461d25 100644 --- a/assets/features_hd44780.md.15K40o_e.lean.js +++ b/assets/features_hd44780.md.kUIf1-0D.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"HD44780 LCD Driver","description":"","frontmatter":{},"headers":[],"relativePath":"features/hd44780.md","filePath":"features/hd44780.md"}'); const _sfc_main = { name: "features/hd44780.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 117); diff --git a/assets/features_joystick.md.RJK1oKqh.js b/assets/features_joystick.md.D4eaz8gV.js similarity index 99% rename from assets/features_joystick.md.RJK1oKqh.js rename to assets/features_joystick.md.D4eaz8gV.js index bd85f0bef06..6d8123e6ccb 100644 --- a/assets/features_joystick.md.RJK1oKqh.js +++ b/assets/features_joystick.md.D4eaz8gV.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Joystick","description":"","frontmatter":{},"headers":[],"relativePath":"features/joystick.md","filePath":"features/joystick.md"}'); const _sfc_main = { name: "features/joystick.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Joystick

This feature provides game controller input as a joystick device supporting up to 6 axes and 32 buttons. Axes can be read either from an ADC-capable input pin, or can be virtual, so that its value is provided by your code.

An analog device such as a potentiometer found on an analog joystick's axes is based on a voltage divider, where adjusting the movable wiper controls the output voltage which can then be read by the microcontroller's ADC.

Usage

Add the following to your rules.mk:

make
JOYSTICK_ENABLE = yes

By default the joystick driver is analog, but you can change this with:

make
JOYSTICK_DRIVER = digital

When using analog with ARM, you must use 3.3v with your Joystick. Although ARM boards such as the Helios have 5v pin output, the ADC driver does not support it.

Configuration

By default, two axes and eight buttons are defined, with a reported resolution of 8 bits (-127 to +127). This can be changed in your config.h:

c
// Min 0, max 32\n#define JOYSTICK_BUTTON_COUNT 16\n// Min 0, max 6: X, Y, Z, Rx, Ry, Rz\n#define JOYSTICK_AXIS_COUNT 3\n// Min 8, max 16\n#define JOYSTICK_AXIS_RESOLUTION 10

TIP

You must define at least one button or axis. Also note that the maximum ADC resolution of the supported AVR MCUs is 10-bit, and 12-bit for most STM32 MCUs.

Axes

When defining axes for your joystick, you must provide a definition array typically in your keymap.c.

For instance, the below example configures two axes. The X axis is read from the A4 pin. With the default axis resolution of 8 bits, the range of values between 900 and 575 are scaled to -127 through 0, and values 575 to 285 are scaled to 0 through 127. The Y axis is configured as a virtual axis, and its value is not read from any pin. Instead, the user must update the axis value programmatically.

c
joystick_config_t joystick_axes[JOYSTICK_AXIS_COUNT] = {\n    JOYSTICK_AXIS_IN(A4, 900, 575, 285),\n    JOYSTICK_AXIS_VIRTUAL\n};

Axes can be configured using one of the following macros:

The low and high values can be swapped to effectively invert the axis.

Virtual Axes

The following example adjusts two virtual axes (X and Y) based on keypad presses, with KC_P0 as a precision modifier:

c
joystick_config_t joystick_axes[JOYSTICK_AXIS_COUNT] = {\n    JOYSTICK_AXIS_VIRTUAL, // x\n    JOYSTICK_AXIS_VIRTUAL  // y\n};\n\nstatic bool precision = false;\nstatic uint16_t precision_mod = 64;\nstatic uint16_t axis_val = 127;\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n    int16_t precision_val = axis_val;\n    if (precision) {\n        precision_val -= precision_mod;\n    }\n\n    switch (keycode) {\n        case KC_P8:\n            joystick_set_axis(1, record->event.pressed ? -precision_val : 0);\n            return false;\n        case KC_P2:\n            joystick_set_axis(1, record->event.pressed ? precision_val : 0);\n            return false;\n        case KC_P4:\n            joystick_set_axis(0, record->event.pressed ? -precision_val : 0);\n            return false;\n        case KC_P6:\n            joystick_set_axis(0, record->event.pressed ? precision_val : 0);\n            return false;\n        case KC_P0:\n            precision = record->event.pressed;\n            return false;\n    }\n    return true;\n}

Keycodes

KeyAliasesDescription
QK_JOYSTICK_BUTTON_0JS_0Button 0
QK_JOYSTICK_BUTTON_1JS_1Button 1
QK_JOYSTICK_BUTTON_2JS_2Button 2
QK_JOYSTICK_BUTTON_3JS_3Button 3
QK_JOYSTICK_BUTTON_4JS_4Button 4
QK_JOYSTICK_BUTTON_5JS_5Button 5
QK_JOYSTICK_BUTTON_6JS_6Button 6
QK_JOYSTICK_BUTTON_7JS_7Button 7
QK_JOYSTICK_BUTTON_8JS_8Button 8
QK_JOYSTICK_BUTTON_9JS_9Button 9
QK_JOYSTICK_BUTTON_10JS_10Button 10
QK_JOYSTICK_BUTTON_11JS_11Button 11
QK_JOYSTICK_BUTTON_12JS_12Button 12
QK_JOYSTICK_BUTTON_13JS_13Button 13
QK_JOYSTICK_BUTTON_14JS_14Button 14
QK_JOYSTICK_BUTTON_15JS_15Button 15
QK_JOYSTICK_BUTTON_16JS_16Button 16
QK_JOYSTICK_BUTTON_17JS_17Button 17
QK_JOYSTICK_BUTTON_18JS_18Button 18
QK_JOYSTICK_BUTTON_19JS_19Button 19
QK_JOYSTICK_BUTTON_20JS_20Button 20
QK_JOYSTICK_BUTTON_21JS_21Button 21
QK_JOYSTICK_BUTTON_22JS_22Button 22
QK_JOYSTICK_BUTTON_23JS_23Button 23
QK_JOYSTICK_BUTTON_24JS_24Button 24
QK_JOYSTICK_BUTTON_25JS_25Button 25
QK_JOYSTICK_BUTTON_26JS_26Button 26
QK_JOYSTICK_BUTTON_27JS_27Button 27
QK_JOYSTICK_BUTTON_28JS_28Button 28
QK_JOYSTICK_BUTTON_29JS_29Button 29
QK_JOYSTICK_BUTTON_30JS_30Button 30
QK_JOYSTICK_BUTTON_31JS_31Button 31

API

struct joystick_t

Contains the state of the joystick.

Members


struct joystick_config_t

Describes a single axis.

Members


void joystick_flush(void)

Send the joystick report to the host, if it has been marked as dirty.


void register_joystick_button(uint8_t button)

Set the state of a button, and flush the report.

Arguments


void unregister_joystick_button(uint8_t button)

Reset the state of a button, and flush the report.

Arguments


int16_t joystick_read_axis(uint8_t axis)

Sample and process the analog value of the given axis.

Arguments

Return Value

A signed 16-bit integer, where 0 is the resting or mid point.

void joystick_set_axis(uint8_t axis, int16_t value)

Set the value of the given axis.

Arguments

', 59); diff --git a/assets/features_joystick.md.RJK1oKqh.lean.js b/assets/features_joystick.md.D4eaz8gV.lean.js similarity index 91% rename from assets/features_joystick.md.RJK1oKqh.lean.js rename to assets/features_joystick.md.D4eaz8gV.lean.js index a83c3cf42f1..628e407a360 100644 --- a/assets/features_joystick.md.RJK1oKqh.lean.js +++ b/assets/features_joystick.md.D4eaz8gV.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Joystick","description":"","frontmatter":{},"headers":[],"relativePath":"features/joystick.md","filePath":"features/joystick.md"}'); const _sfc_main = { name: "features/joystick.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 59); diff --git a/assets/features_key_lock.md.IjFq9dYs.js b/assets/features_key_lock.md.CXEQ5-MN.js similarity index 97% rename from assets/features_key_lock.md.IjFq9dYs.js rename to assets/features_key_lock.md.CXEQ5-MN.js index 365d5b702ab..38ff4f09c2e 100644 --- a/assets/features_key_lock.md.IjFq9dYs.js +++ b/assets/features_key_lock.md.CXEQ5-MN.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Key Lock","description":"","frontmatter":{},"headers":[],"relativePath":"features/key_lock.md","filePath":"features/key_lock.md"}'); const _sfc_main = { name: "features/key_lock.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Key Lock

Sometimes you may find yourself needing to hold down a specific key for a long period of time. Key Lock holds down the next key you press for you. Press it again, and it will be released.

Let's say you need to type in ALL CAPS for a few sentences. Hit QK_LOCK, and then Shift. Now, Shift will be considered held until you tap it again. You can think of Key Lock as Caps Lock, but supercharged.

Usage

First, enable Key Lock by setting KEY_LOCK_ENABLE = yes in your rules.mk. Then pick a key in your keymap and assign it the keycode QK_LOCK.

Keycodes

KeycodeDescription
QK_LOCKHold down the next key pressed, until the key is pressed again

Caveats

Key Lock is only able to hold standard action keys and One Shot modifier keys (for example, if you have your Shift defined as OSM(MOD_LSFT)). This does not include any of the QMK special functions (except One Shot modifiers), or shifted versions of keys such as KC_LPRN. If it's in the Basic Keycodes list, it can be held.

Switching layers will not cancel the Key Lock. The Key Lock can be cancelled by calling the cancel_key_lock() function.

', 10); diff --git a/assets/features_key_lock.md.IjFq9dYs.lean.js b/assets/features_key_lock.md.CXEQ5-MN.lean.js similarity index 91% rename from assets/features_key_lock.md.IjFq9dYs.lean.js rename to assets/features_key_lock.md.CXEQ5-MN.lean.js index 91a373c012e..4cf724c0aed 100644 --- a/assets/features_key_lock.md.IjFq9dYs.lean.js +++ b/assets/features_key_lock.md.CXEQ5-MN.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Key Lock","description":"","frontmatter":{},"headers":[],"relativePath":"features/key_lock.md","filePath":"features/key_lock.md"}'); const _sfc_main = { name: "features/key_lock.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 10); diff --git a/assets/features_key_overrides.md.C02U5_E5.js b/assets/features_key_overrides.md.CPs_0RSS.js similarity index 99% rename from assets/features_key_overrides.md.C02U5_E5.js rename to assets/features_key_overrides.md.CPs_0RSS.js index 9ea4ddad668..2095c9baffa 100644 --- a/assets/features_key_overrides.md.C02U5_E5.js +++ b/assets/features_key_overrides.md.CPs_0RSS.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Key Overrides","description":"","frontmatter":{},"headers":[],"relativePath":"features/key_overrides.md","filePath":"features/key_overrides.md"}'); const _sfc_main = { name: "features/key_overrides.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Key Overrides

Key overrides allow you to override modifier-key combinations to send a different modifier-key combination or perform completely custom actions. Don't want shift + 1 to type ! on your computer? Use a key override to make your keyboard type something different when you press shift + 1. The general behavior is like this: If modifiers w + key x are pressed, replace these keys with modifiers y + key z in the keyboard report.

You can use key overrides in a similar way to momentary layer/fn keys to activate custom keycodes/shortcuts, with a number of benefits: You completely keep the original use of the modifier keys, while being able to save space by removing fn keys from your keyboard. You can also easily configure combinations of modifiers to trigger different actions than individual modifiers, and much more. The possibilities are quite vast and this documentation contains a few examples for inspiration throughout.

A few more examples to get started: You could use key overrides to...

Setup

To enable this feature, you need to add KEY_OVERRIDE_ENABLE = yes to your rules.mk.

Then, in your keymap.c file, you'll need to define the array key_overrides, which defines all key overrides to be used. Each override is a value of type key_override_t. The array key_overridescontains pointers to key_override_t values (const key_override_t **).

Creating Key Overrides

The key_override_t struct has many options that allow you to precisely tune your overrides. The full reference is shown below. Instead of manually creating a key_override_t value, it is recommended to use these dedicated initializers:

ko_make_basic(modifiers, key, replacement)

Returns a key_override_t, which sends replacement (can be a key-modifier combination), when key and modifiers are all pressed down. This override still activates if any additional modifiers not specified in modifiers are also pressed down. See ko_make_with_layers_and_negmods to customize this behavior.

ko_make_with_layers(modifiers, key, replacement, layers)

Additionally takes a bitmask layers that defines on which layers the override is used.

ko_make_with_layers_and_negmods(modifiers, key, replacement, layers, negative_mods)

Additionally takes a bitmask negative_mods that defines which modifiers may not be pressed for this override to activate.

ko_make_with_layers_negmods_and_options(modifiers, key, replacement, layers, negative_mods, options)

Additionally takes a bitmask options that specifies additional options. See ko_option_t for available options.

For more customization possibilities, you may directly create a key_override_t, which allows you to customize even more behavior. Read further below for details and examples.

Simple Example

This shows how the mentioned example of sending delete when shift + backspace are pressed is realized:

c
const key_override_t delete_key_override = ko_make_basic(MOD_MASK_SHIFT, KC_BSPC, KC_DEL);\n\n// This globally defines all key overrides to be used\nconst key_override_t *key_overrides[] = {\n	&delete_key_override\n};

Intermediate Difficulty Examples

Media Controls & Screen Brightness

In this example a single key is configured to control media, volume and screen brightness by using key overrides.

The following key overrides will be configured:

c
const key_override_t next_track_override = \n	ko_make_with_layers_negmods_and_options(\n   		MOD_MASK_CTRL,       // Trigger modifiers: ctrl\n    	KC_MPLY,             // Trigger key: play/pause\n    	KC_MNXT,             // Replacement key\n    	~0,                  // Activate on all layers\n    	MOD_MASK_SA,         // Do not activate when shift or alt are pressed\n    	ko_option_no_reregister_trigger); // Specifies that the play key is not registered again after lifting ctrl\n    \nconst key_override_t prev_track_override = ko_make_with_layers_negmods_and_options(MOD_MASK_CS, KC_MPLY,\n											KC_MPRV, ~0, MOD_MASK_ALT, ko_option_no_reregister_trigger);\n\nconst key_override_t vol_up_override = ko_make_with_layers_negmods_and_options(MOD_MASK_ALT, KC_MPLY,\n											KC_VOLU, ~0, MOD_MASK_CS, ko_option_no_reregister_trigger);\n\nconst key_override_t vol_down_override = ko_make_with_layers_negmods_and_options(MOD_MASK_SA, KC_MPLY,\n											KC_VOLD, ~0, MOD_MASK_CTRL, ko_option_no_reregister_trigger);\n\nconst key_override_t brightness_up_override = ko_make_with_layers_negmods_and_options(MOD_MASK_CA, KC_MPLY,\n											KC_BRIU, ~0, MOD_MASK_SHIFT, ko_option_no_reregister_trigger);\n\nconst key_override_t brightness_down_override = ko_make_basic(MOD_MASK_CSA, KC_MPLY, KC_BRID);\n\n// This globally defines all key overrides to be used\nconst key_override_t *key_overrides[] = {\n	&next_track_override,\n	&prev_track_override,\n	&vol_up_override,\n	&vol_down_override,\n	&brightness_up_override,\n	&brightness_down_override\n};

Flexible macOS-friendly Grave Escape

The Grave Escape feature is limited in its configurability and has bugs when used on macOS. Key overrides can be used to achieve a similar functionality as Grave Escape, but with more customization and without bugs on macOS.

c
// Shift + esc = ~\nconst key_override_t tilde_esc_override = ko_make_basic(MOD_MASK_SHIFT, KC_ESC, S(KC_GRV));\n\n// GUI + esc = `\nconst key_override_t grave_esc_override = ko_make_basic(MOD_MASK_GUI, KC_ESC, KC_GRV);\n\nconst key_override_t *key_overrides[] = {\n	&tilde_esc_override,\n	&grave_esc_override\n};

In addition to not encountering unexpected bugs on macOS, you can also change the behavior as you wish. Instead setting GUI + ESC = ` you may change it to an arbitrary other modifier, for example Ctrl + ESC = `.

Advanced Examples

Modifiers as Layer Keys

Do you really need a dedicated key to toggle your fn layer? With key overrides, perhaps not. This example shows how you can configure to use rGUI + rAlt (right GUI and right alt) to access a momentary layer like an fn layer. With this you completely eliminate the need to use a dedicated layer key. Of course the choice of modifier keys can be changed as needed, rGUI + rAlt is just an example here.

c
// This is called when the override activates and deactivates. Enable the fn layer on activation and disable on deactivation\nbool momentary_layer(bool key_down, void *layer) {\n    if (key_down) {\n        layer_on((uint8_t)(uintptr_t)layer);\n    } else {\n        layer_off((uint8_t)(uintptr_t)layer);\n    }\n\n    return false;\n}\n\nconst key_override_t fn_override = {.trigger_mods          = MOD_BIT(KC_RGUI) | MOD_BIT(KC_RCTL),                       //\n                                   .layers                 = ~(1 << LAYER_FN),                                          //\n                                   .suppressed_mods        = MOD_BIT(KC_RGUI) | MOD_BIT(KC_RCTL),                       //\n                                   .options                = ko_option_no_unregister_on_other_key_down,                 //\n                                   .negative_mod_mask      = (uint8_t) ~(MOD_BIT(KC_RGUI) | MOD_BIT(KC_RCTL)),          //\n                                   .custom_action          = momentary_layer,                                           //\n                                   .context                = (void *)LAYER_FN,                                          //\n                                   .trigger                = KC_NO,                                                     //\n                                   .replacement            = KC_NO,                                                     //\n                                   .enabled                = NULL};

Keycodes

KeycodeAliasesDescription
QK_KEY_OVERRIDE_TOGGLEKO_TOGGToggle key overrides
QK_KEY_OVERRIDE_ONKO_ONTurn on key overrides
QK_KEY_OVERRIDE_OFFKO_OFFTurn off key overrides

Reference for key_override_t

Advanced users may need more customization than what is offered by the simple ko_make initializers. For this, directly create a key_override_t value and set all members. Below is a reference for all members of key_override_t.

MemberDescription
uint16_t triggerThe non-modifier keycode that triggers the override. This keycode, and the necessary modifiers (trigger_mods) must be pressed to activate this override. Set this to the keycode of the key that should activate the override. Set to KC_NO to require only the necessary modifiers to be pressed and no non-modifier.
uint8_t trigger_modsWhich mods need to be down for activation. If both sides of a modifier are set (e.g. left ctrl and right ctrl) then only one is required to be pressed (e.g. left ctrl suffices). Use the MOD_MASK_XXX and MOD_BIT() macros for this.
layer_state_t layersThis is a BITMASK (!), defining which layers this override applies to. To use this override on layer i set the ith bit (1 << i).
uint8_t negative_mod_maskWhich modifiers cannot be down. It must hold that (active_modifiers & negative_mod_mask) == 0, otherwise the key override will not be activated. An active override will be deactivated once this is no longer true.
uint8_t suppressed_modsModifiers to 'suppress' while the override is active. To suppress a modifier means that even though the modifier key is held down, the host OS sees the modifier as not pressed. Can be used to suppress the trigger modifiers, as a trivial example.
uint16_t replacementThe complex keycode to send as replacement when this override is triggered. This can be a simple keycode, a key-modifier combination (e.g. C(KC_A)), or KC_NO (to register no replacement keycode). Use in combination with suppressed_mods to get the correct modifiers to be sent.
ko_option_t optionsOptions controlling the behavior of the override, such as what actions are allowed to activate the override.
bool (*custom_action)(bool activated, void *context)If not NULL, this function will be called right before the replacement key is registered, along with the provided context and a flag indicating whether the override was activated or deactivated. This function allows you to run some custom actions for specific key overrides. If you return false, the replacement key is not registered/unregistered as it would normally. Return true to register and unregister the override normally.
void *contextA context that will be passed to the custom action function.
bool *enabledIf this points to false this override will not be used. Set to NULL to always have this override enabled.

Reference for ko_option_t

Bitfield with various options controlling the behavior of a key override.

ValueDescription
ko_option_activation_trigger_downAllow activating when the trigger key is pressed down.
ko_option_activation_required_mod_downAllow activating when a necessary modifier is pressed down.
ko_option_activation_negative_mod_upAllow activating when a negative modifier is released.
ko_option_one_modIf set, any of the modifiers in trigger_mods will be enough to activate the override (logical OR of modifiers). If not set, all the modifiers in trigger_mods have to be pressed (logical AND of modifiers).
ko_option_no_unregister_on_other_key_downIf set, the override will not deactivate when another key is pressed down. Use only if you really know you need this.
ko_option_no_reregister_triggerIf set, the trigger key will never be registered again after the override is deactivated.
ko_options_defaultThe default options used by the ko_make_xxx functions

For Advanced Users: Inner Workings

This section explains how a key override works in detail, explaining where each member of key_override_t comes into play. Understanding this is essential to be able to take full advantage of all the options offered by key overrides.

Activation

When the necessary keys are pressed (trigger_mods + trigger), the override is 'activated' and the replacement key is registered in the keyboard report (replacement), while the trigger key is removed from the keyboard report. The trigger modifiers may also be removed from the keyboard report upon activation of an override (suppressed_mods). The override will not activate if any of the negative_modifiers are pressed.

Overrides can activate in three different cases:

  1. The trigger key is pressed down and necessary modifiers are already down.
  2. A necessary modifier is pressed down, while the trigger key and other necessary modifiers are already down.
  3. A negative modifier is released, while all necessary modifiers and the trigger key are already down.

Use the option member to customize which of these events are allowed to activate your overrides (default: all three).

In any case, a key override can only activate if the trigger key is the last non-modifier key that was pressed down. This emulates the behavior of how standard OSes (macOS, Windows, Linux) handle normal key input (to understand: Hold down a, then also hold down b, then hold down shift; B will be typed but not A).

Deactivation

An override is 'deactivated' when one of the trigger keys (trigger_mods, trigger) is lifted, another non-modifier key is pressed down, or one of the negative_modifiers is pressed down. When an override deactivates, the replacement key is removed from the keyboard report, while the suppressed_mods that are still held down are re-added to the keyboard report. By default, the trigger key is re-added to the keyboard report if it is still held down and no other non-modifier key has been pressed since. This again emulates the behavior of how standard OSes handle normal key input (To understand: hold down a, then also hold down b, then also shift, then release b; A will not be typed even though you are holding the a and shift keys). Use the option field ko_option_no_reregister_trigger to prevent re-registering the trigger key in all cases.

Key Repeat Delay

A third way in which standard OS-handling of modifier-key input is emulated in key overrides is with a 'key repeat delay'. To explain what this is, let's look at how normal keyboard input is handled by mainstream OSes again: If you hold down a, followed by shift, you will see the letter a is first typed, then for a short moment nothing is typed and then repeating As are typed. Take note that, although shift is pressed down just after a is pressed, it takes a moment until A is typed. This is caused by the aforementioned key repeat delay, and it is a feature that prevents unwanted repeated characters from being typed.

This applies equally to releasing a modifier: When you hold shift, then press a, the letter A is typed. Now if you release shift first, followed by a shortly after, you will not see the letter a being typed, even though for a short moment of time you were just holding down the key a. This is because no modified characters are typed until the key repeat delay has passed.

This exact behavior is implemented in key overrides as well: If a key override for shift + a = b exists, and a is pressed and held, followed by shift, you will not immediately see the letter b being typed. Instead, this event is deferred for a short moment, until the key repeat delay has passed, measured from the moment when the trigger key (a) was pressed down.

The duration of the key repeat delay is controlled with the KEY_OVERRIDE_REPEAT_DELAY macro. Define this value in your config.h file to change it. It is 500ms by default.

Difference to Combos

Note that key overrides are very different from combos. Combos require that you press down several keys almost at the same time and can work with any combination of non-modifier keys. Key overrides work like keyboard shortcuts (e.g. ctrl + z): They take combinations of multiple modifiers and one non-modifier key to then perform some custom action. Key overrides are implemented with much care to behave just like normal keyboard shortcuts would in regards to the order of pressed keys, timing, and interaction with other pressed keys. There are a number of optional settings that can be used to really fine-tune the behavior of each key override as well. Using key overrides also does not delay key input for regular key presses, which inherently happens in combos and may be undesirable.

Solution to the problem of flashing modifiers

If the programs you use bind an action to taps of modifier keys (e.g. tapping left GUI to bring up the applications menu or tapping left Alt to focus the menu bar), you may find that using key overrides with suppressed mods falsely triggers those actions. To counteract this, you can define a DUMMY_MOD_NEUTRALIZER_KEYCODE in config.h that will get sent in between the register and unregister events of a suppressed modifier. That way, the programs on your computer will no longer interpret the mod suppression induced by key overrides as a lone tap of a modifier key and will thus not falsely trigger the undesired action.

Naturally, for this technique to be effective, you must choose a DUMMY_MOD_NEUTRALIZER_KEYCODE for which no keyboard shortcuts are bound to. Recommended values are: KC_RIGHT_CTRL or KC_F18. Please note that DUMMY_MOD_NEUTRALIZER_KEYCODE must be a basic, unmodified, HID keycode so values like KC_NO, KC_TRANSPARENT or KC_PIPE aka S(KC_BACKSLASH) are not permitted.

By default, only left Alt and left GUI are neutralized. If you want to change the list of applicable modifier masks, use the following in your config.h:

c
#define MODS_TO_NEUTRALIZE { <mod_mask_1>, <mod_mask_2>, ... }

Examples:

c
#define DUMMY_MOD_NEUTRALIZER_KEYCODE KC_RIGHT_CTRL\n\n// Neutralize left alt and left GUI (Default value)\n#define MODS_TO_NEUTRALIZE { MOD_BIT(KC_LEFT_ALT), MOD_BIT(KC_LEFT_GUI) }\n\n// Neutralize left alt, left GUI, right GUI and left Control+Shift\n#define MODS_TO_NEUTRALIZE { MOD_BIT(KC_LEFT_ALT), MOD_BIT(KC_LEFT_GUI), MOD_BIT(KC_RIGHT_GUI), MOD_BIT(KC_LEFT_CTRL)|MOD_BIT(KC_LEFT_SHIFT) }

WARNING

Do not use MOD_xxx constants like MOD_LSFT or MOD_RALT, since they're 5-bit packed bit-arrays while MODS_TO_NEUTRALIZE expects a list of 8-bit packed bit-arrays. Use MOD_BIT(<kc>) or MOD_MASK_xxx instead.

', 70); diff --git a/assets/features_key_overrides.md.C02U5_E5.lean.js b/assets/features_key_overrides.md.CPs_0RSS.lean.js similarity index 91% rename from assets/features_key_overrides.md.C02U5_E5.lean.js rename to assets/features_key_overrides.md.CPs_0RSS.lean.js index 4e8a3c5df6e..7c44bf69500 100644 --- a/assets/features_key_overrides.md.C02U5_E5.lean.js +++ b/assets/features_key_overrides.md.CPs_0RSS.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Key Overrides","description":"","frontmatter":{},"headers":[],"relativePath":"features/key_overrides.md","filePath":"features/key_overrides.md"}'); const _sfc_main = { name: "features/key_overrides.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 70); diff --git a/assets/features_leader_key.md.DBQTnBRh.js b/assets/features_leader_key.md.Nmog5Zz4.js similarity index 99% rename from assets/features_leader_key.md.DBQTnBRh.js rename to assets/features_leader_key.md.Nmog5Zz4.js index 15e8829f047..e66324fe5a6 100644 --- a/assets/features_leader_key.md.DBQTnBRh.js +++ b/assets/features_leader_key.md.Nmog5Zz4.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"The Leader Key: A New Kind of Modifier","description":"","frontmatter":{},"headers":[],"relativePath":"features/leader_key.md","filePath":"features/leader_key.md"}'); const _sfc_main = { name: "features/leader_key.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

The Leader Key: A New Kind of Modifier

If you're a Vim user, you probably know what a Leader key is. In contrast to Combos, the Leader key allows you to hit a sequence of up to five keys instead, which triggers some custom functionality once complete.

Usage

Add the following to your rules.mk:

make
LEADER_ENABLE = yes

Then add the QK_LEAD keycode to your keymap.

Callbacks

These callbacks are invoked when the leader sequence begins and ends. In the latter you can implement your custom functionality based on the contents of the sequence buffer.

c
void leader_start_user(void) {\n    // Do something when the leader key is pressed\n}\n\nvoid leader_end_user(void) {\n    if (leader_sequence_one_key(KC_F)) {\n        // Leader, f => Types the below string\n        SEND_STRING("QMK is awesome.");\n    } else if (leader_sequence_two_keys(KC_D, KC_D)) {\n        // Leader, d, d => Ctrl+A, Ctrl+C\n        SEND_STRING(SS_LCTL("a") SS_LCTL("c"));\n    } else if (leader_sequence_three_keys(KC_D, KC_D, KC_S)) {\n        // Leader, d, d, s => Types the below string\n        SEND_STRING("https://start.duckduckgo.com\\n");\n    } else if (leader_sequence_two_keys(KC_A, KC_S)) {\n        // Leader, a, s => GUI+S\n        tap_code16(LGUI(KC_S));\n    }\n}

Basic Configuration

Timeout

This is the amount of time you have to complete a sequence once the leader key has been pressed. The default value is 300 milliseconds, but you can change this by adding the following to your config.h:

c
#define LEADER_TIMEOUT 350

Per-Key Timeout

Rather than relying on an incredibly high timeout for long leader key strings or those of us without 200 wpm typing skills, you can enable per-key timing to ensure that each key pressed provides you with more time to finish the sequence. This is incredibly helpful with leader key emulation of tap dance (such as multiple taps of the same key like C, C, C).

To enable this, add the following to your config.h:

c
#define LEADER_PER_KEY_TIMING

After this, it's recommended that you lower your timeout below 300 ms:

c
#define LEADER_TIMEOUT 250

Now, something like this won't seem impossible to do without a 1000 millisecond timeout:

c
if (leader_sequence_three_keys(KC_C, KC_C, KC_C)) {\n    SEND_STRING("Per key timing is great!!!");\n}

Disabling Initial Timeout

Sometimes your leader key may be too far away from the rest of the keys in the sequence. Imagine that your leader key is one of your outer top right keys - you may need to reposition your hand just to reach your leader key. This can make typing the entire sequence on time hard difficult if you are able to type most of the sequence fast. For example, if your sequence is Leader + asd, typing asd fast is very easy once you have your hands in your home row, but starting the sequence in time after moving your hand out of the home row to reach the leader key and back is not.

To remove the stress this situation produces to your hands, you can disable the timeout just for the leader key. Add the following to your config.h:

c
#define LEADER_NO_TIMEOUT

Now, after you hit the leader key, you will have an infinite amount of time to start the rest of the sequence, allowing you to properly position your hands to type the rest of the sequence comfortably. This way you can configure a very short LEADER_TIMEOUT, but still have plenty of time to position your hands.

Strict Key Processing

By default, only the "tap keycode" portions of Mod-Taps and Layer Taps are added to the sequence buffer. This means if you press eg. LT(3, KC_A) as part of a sequence, KC_A will be added to the buffer, rather than the entire LT(3, KC_A) keycode.

This gives a more expected behaviour for most users, however you may want to change this.

To enable this, add the following to your config.h:

c
#define LEADER_KEY_STRICT_KEY_PROCESSING

Example

This example will play the Mario "One Up" sound when you hit QK_LEAD to start the leader sequence. When the sequence ends, it will play "All Star" if it completes successfully or "Rick Roll" you if it fails (in other words, no sequence matched).

c
#ifdef AUDIO_ENABLE\nfloat leader_start_song[][2] = SONG(ONE_UP_SOUND);\nfloat leader_succeed_song[][2] = SONG(ALL_STAR);\nfloat leader_fail_song[][2] = SONG(RICK_ROLL);\n#endif\n\nvoid leader_start_user(void) {\n#ifdef AUDIO_ENABLE\n    PLAY_SONG(leader_start_song);\n#endif\n}\n\nvoid leader_end_user(void) {\n    bool did_leader_succeed = false;\n\n    if (leader_sequence_one_key(KC_E)) {\n        SEND_STRING(SS_LCTL(SS_LSFT("t")));\n        did_leader_succeed = true;\n    } else if (leader_sequence_two_keys(KC_E, KC_D)) {\n        SEND_STRING(SS_LGUI("r") "cmd\\n" SS_LCTL("c"));\n        did_leader_succeed = true;\n    }\n\n#ifdef AUDIO_ENABLE\n    if (did_leader_succeed) {\n        PLAY_SONG(leader_succeed_song);\n    } else {\n        PLAY_SONG(leader_fail_song);\n    }\n#endif\n}

Keycodes

KeyAliasesDescription
QK_LEADERQK_LEADBegin the leader sequence

API

void leader_start_user(void)

User callback, invoked when the leader sequence begins.


void leader_end_user(void)

User callback, invoked when the leader sequence ends.


void leader_start(void)

Begin the leader sequence, resetting the buffer and timer.


void leader_end(void)

End the leader sequence.


bool leader_sequence_active(void)

Whether the leader sequence is active.


bool leader_sequence_add(uint16_t keycode)

Add the given keycode to the sequence buffer.

If LEADER_NO_TIMEOUT is defined, the timer is reset if the buffer is empty.

Arguments

Return Value

true if the keycode was added, false if the buffer is full.


bool leader_sequence_timed_out(void)

Whether the leader sequence has reached the timeout.

If LEADER_NO_TIMEOUT is defined, the buffer must also contain at least one key.


bool leader_reset_timer(void)

Reset the leader sequence timer.


bool leader_sequence_one_key(uint16_t kc)

Check the sequence buffer for the given keycode.

Arguments

Return Value

true if the sequence buffer matches.


bool leader_sequence_two_keys(uint16_t kc1, uint16_t kc2)

Check the sequence buffer for the given keycodes.

Arguments

Return Value

true if the sequence buffer matches.


bool leader_sequence_three_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3)

Check the sequence buffer for the given keycodes.

Arguments

Return Value

true if the sequence buffer matches.


bool leader_sequence_four_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3, uint16_t kc4)

Check the sequence buffer for the given keycodes.

Arguments

Return Value

true if the sequence buffer matches.


bool leader_sequence_five_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3, uint16_t kc4, uint16_t kc5)

Check the sequence buffer for the given keycodes.

Arguments

Return Value

true if the sequence buffer matches.

', 101); diff --git a/assets/features_leader_key.md.DBQTnBRh.lean.js b/assets/features_leader_key.md.Nmog5Zz4.lean.js similarity index 91% rename from assets/features_leader_key.md.DBQTnBRh.lean.js rename to assets/features_leader_key.md.Nmog5Zz4.lean.js index 91a8a063d76..3bbf8315529 100644 --- a/assets/features_leader_key.md.DBQTnBRh.lean.js +++ b/assets/features_leader_key.md.Nmog5Zz4.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"The Leader Key: A New Kind of Modifier","description":"","frontmatter":{},"headers":[],"relativePath":"features/leader_key.md","filePath":"features/leader_key.md"}'); const _sfc_main = { name: "features/leader_key.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 101); diff --git a/assets/features_led_indicators.md.BI857zKH.js b/assets/features_led_indicators.md.Cnu82Paw.js similarity index 99% rename from assets/features_led_indicators.md.BI857zKH.js rename to assets/features_led_indicators.md.Cnu82Paw.js index 1b9160775a9..7b7b1b3df8c 100644 --- a/assets/features_led_indicators.md.BI857zKH.js +++ b/assets/features_led_indicators.md.Cnu82Paw.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"LED Indicators","description":"","frontmatter":{},"headers":[],"relativePath":"features/led_indicators.md","filePath":"features/led_indicators.md"}'); const _sfc_main = { name: "features/led_indicators.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

LED Indicators

TIP

LED indicators on split keyboards will require state information synced to the slave half (e.g. #define SPLIT_LED_STATE_ENABLE). See data sync options for more details.

QMK provides methods to read 5 of the LEDs defined in the HID spec:

There are three ways to get the lock LED state:

WARNING

The host_keyboard_led_state() may reflect an updated state before led_update_user() is called.

Deprecated functions that provide the LED state as uint8_t:

Configuration Options

To configure the indicators, #define these in your config.h:

DefineDefaultDescription
LED_NUM_LOCK_PINNot definedThe pin that controls the Num Lock LED
LED_CAPS_LOCK_PINNot definedThe pin that controls the Caps Lock LED
LED_SCROLL_LOCK_PINNot definedThe pin that controls the Scroll Lock LED
LED_COMPOSE_PINNot definedThe pin that controls the Compose LED
LED_KANA_PINNot definedThe pin that controls the Kana LED
LED_PIN_ON_STATE1The state of the indicator pins when the LED is "on" - 1 for high, 0 for low

Unless you are designing your own keyboard, you generally should not need to change the above config options.

LED update function

When the configuration options do not provide enough flexibility, the following callbacks allow custom control of the LED behavior. These functions will be called when one of those 5 LEDs changes state:

Both receives LED state as a struct parameter. Returning true in led_update_user() will allow the keyboard level code in led_update_kb() to run as well. Returning false will override the keyboard level code, depending on how the keyboard level function is set up.

Example of keyboard LED update implementation

This is a template indicator function that can be implemented on keyboard level code:

c
bool led_update_kb(led_t led_state) {\n    bool res = led_update_user(led_state);\n    if(res) {\n        // gpio_write_pin sets the pin high for 1 and low for 0.\n        // In this example the pins are inverted, setting\n        // it low/0 turns it on, and high/1 turns the LED off.\n        // This behavior depends on whether the LED is between the pin\n        // and VCC or the pin and GND.\n        gpio_write_pin(B0, !led_state.num_lock);\n        gpio_write_pin(B1, !led_state.caps_lock);\n        gpio_write_pin(B2, !led_state.scroll_lock);\n        gpio_write_pin(B3, !led_state.compose);\n        gpio_write_pin(B4, !led_state.kana);\n    }\n    return res;\n}

Example of user LED update implementation

This is an incomplete example will play a sound if Caps Lock is turned on or off. It returns true to allow keyboard LED function to maintain their state.

c
#ifdef AUDIO_ENABLE\n  float caps_on[][2] = SONG(CAPS_LOCK_ON_SOUND);\n  float caps_off[][2] = SONG(CAPS_LOCK_OFF_SOUND);\n#endif\n\nbool led_update_user(led_t led_state) {\n    #ifdef AUDIO_ENABLE\n    static uint8_t caps_state = 0;\n    if (caps_state != led_state.caps_lock) {\n        led_state.caps_lock ? PLAY_SONG(caps_on) : PLAY_SONG(caps_off);\n        caps_state = led_state.caps_lock;\n    }\n    #endif\n    return true;\n}

Host keyboard LED state

The host_keyboard_led_state() function will report the LED state returned from the host computer as led_t. This is useful for reading the LED state outside led_update_*. For example, you can get the boolean state of Caps Lock from the host with:

c
bool caps = host_keyboard_led_state().caps_lock;

led_update_ports()

This function writes the LED state to the actual hardware. Call it manually from your led_update_*() callbacks to modify the handling of the standard keyboard LEDs. For example when repurposing a standard LED indicator as layer indicator.

Setting Physical LED State

Some keyboard implementations provide convenient methods for setting the state of the physical LEDs.

Ergodox Boards

The Ergodox implementations provide ergodox_right_led_1/2/3_on/off() to turn individual LEDs on or off, as well as ergodox_right_led_on/off(uint8_t led) to turn them on or off by their index.

In addition, it is possible to specify the brightness level of all LEDs with ergodox_led_all_set(uint8_t n); of individual LEDs with ergodox_right_led_1/2/3_set(uint8_t n); or by index with ergodox_right_led_set(uint8_t led, uint8_t n).

Ergodox boards also define LED_BRIGHTNESS_LO for the lowest brightness and LED_BRIGHTNESS_HI for the highest brightness (which is the default).

', 34); diff --git a/assets/features_led_indicators.md.BI857zKH.lean.js b/assets/features_led_indicators.md.Cnu82Paw.lean.js similarity index 91% rename from assets/features_led_indicators.md.BI857zKH.lean.js rename to assets/features_led_indicators.md.Cnu82Paw.lean.js index c98aa167c33..3521b159ba2 100644 --- a/assets/features_led_indicators.md.BI857zKH.lean.js +++ b/assets/features_led_indicators.md.Cnu82Paw.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"LED Indicators","description":"","frontmatter":{},"headers":[],"relativePath":"features/led_indicators.md","filePath":"features/led_indicators.md"}'); const _sfc_main = { name: "features/led_indicators.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 34); diff --git a/assets/features_led_matrix.md.BTOvgNVe.js b/assets/features_led_matrix.md.DZ4KDZN-.js similarity index 99% rename from assets/features_led_matrix.md.BTOvgNVe.js rename to assets/features_led_matrix.md.DZ4KDZN-.js index 5f3838b19b3..a793b7a2b3a 100644 --- a/assets/features_led_matrix.md.BTOvgNVe.js +++ b/assets/features_led_matrix.md.DZ4KDZN-.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"LED Matrix Lighting","description":"","frontmatter":{},"headers":[],"relativePath":"features/led_matrix.md","filePath":"features/led_matrix.md"}'); const _sfc_main = { name: "features/led_matrix.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

LED Matrix Lighting

This feature allows you to use LED matrices driven by external drivers. It hooks into the backlight system so you can use the same keycodes as backlighting to control it.

If you want to use RGB LED's you should use the RGB Matrix Subsystem instead.

Driver Configuration

LED Matrix is an abstraction layer on top of an underlying LED driver API. The list of supported LED drivers is below; see the respective documentation for information on how to configure the driver.

DriverMax LEDs
IS31FL321818
IS31FL323636
IS31FL3729135
IS31FL3731144
IS31FL3733192
IS31FL373696
IS31FL3737144
IS31FL3741351
IS31FL3742A180
IS31FL3743A198
IS31FL3745144
IS31FL3746A72
SNLED27351192

To assign the LED Matrix driver, add the following to your rules.mk, for example:

make
LED_MATRIX_DRIVER = is31fl3218

Common Configuration

From this point forward the configuration is the same for all the drivers. The led_config_t struct provides a key electrical matrix to led index lookup table, what the physical position of each LED is on the board, and what type of key or usage the LED if the LED represents. Here is a brief example:

c
led_config_t g_led_config = { {\n  // Key Matrix to LED Index\n  {   5, NO_LED, NO_LED,   0 },\n  { NO_LED, NO_LED, NO_LED, NO_LED },\n  {   4, NO_LED, NO_LED,   1 },\n  {   3, NO_LED, NO_LED,   2 }\n}, {\n  // LED Index to Physical Position\n  { 188,  16 }, { 187,  48 }, { 149,  64 }, { 112,  64 }, {  37,  48 }, {  38,  16 }\n}, {\n  // LED Index to Flag\n  1, 4, 4, 4, 4, 1\n} };

The first part, // Key Matrix to LED Index, tells the system what key this LED represents by using the key's electrical matrix row & col. The second part, // LED Index to Physical Position represents the LED's physical { x, y } position on the keyboard. The default expected range of values for { x, y } is the inclusive range { 0..224, 0..64 }. This default expected range is due to effects that calculate the center of the keyboard for their animations. The easiest way to calculate these positions is imagine your keyboard is a grid, and the top left of the keyboard represents { x, y } coordinate { 0, 0 } and the bottom right of your keyboard represents { 224, 64 }. Using this as a basis, you can use the following formula to calculate the physical position:

c
x = 224 / (NUMBER_OF_COLS - 1) * COL_POSITION\ny =  64 / (NUMBER_OF_ROWS - 1) * ROW_POSITION

Where NUMBER_OF_COLS, NUMBER_OF_ROWS, COL_POSITION, & ROW_POSITION are all based on the physical layout of your keyboard, not the electrical layout.

As mentioned earlier, the center of the keyboard by default is expected to be { 112, 32 }, but this can be changed if you want to more accurately calculate the LED's physical { x, y } positions. Keyboard designers can implement #define LED_MATRIX_CENTER { 112, 32 } in their config.h file with the new center point of the keyboard, or where they want it to be allowing more possibilities for the { x, y } values. Do note that the maximum value for x or y is 255, and the recommended maximum is 224 as this gives animations runoff room before they reset.

// LED Index to Flag is a bitmask, whether or not a certain LEDs is of a certain type. It is recommended that LEDs are set to only 1 type.

Flags

DefineValueDescription
HAS_FLAGS(bits, flags)n/aEvaluates to true if bits has all flags set
HAS_ANY_FLAGS(bits, flags)n/aEvaluates to true if bits has any flags set
LED_FLAG_NONE0x00If this LED has no flags
LED_FLAG_ALL0xFFIf this LED has all flags
LED_FLAG_MODIFIER0x01If the LED is on a modifier key
LED_FLAG_KEYLIGHT0x04If the LED is for key backlight
LED_FLAG_INDICATOR0x08If the LED is for keyboard state indication

Keycodes

KeyAliasesDescription
QK_LED_MATRIX_ONLM_ONTurn on LED Matrix
QK_LED_MATRIX_OFFLM_OFFTurn off LED Matrix
QK_LED_MATRIX_TOGGLELM_TOGGToggle LED Matrix on or off
QK_LED_MATRIX_MODE_NEXTLM_NEXTCycle through animations
QK_LED_MATRIX_MODE_PREVIOUSLM_PREVCycle through animations in reverse
QK_LED_MATRIX_BRIGHTNESS_UPLM_BRIUIncrease the brightness level
QK_LED_MATRIX_BRIGHTNESS_DOWNLM_BRIDDecrease the brightness level
QK_LED_MATRIX_SPEED_UPLM_SPDUIncrease the animation speed
QK_LED_MATRIX_SPEED_DOWNLM_SPDDDecrease the animation speed

LED Matrix Effects

These are the effects that are currently available:

c
enum led_matrix_effects {\n    LED_MATRIX_NONE = 0,\n    LED_MATRIX_SOLID = 1,           // Static single val, no speed support\n    LED_MATRIX_ALPHAS_MODS,         // Static dual val, speed is val for LEDs marked as modifiers\n    LED_MATRIX_BREATHING,           // Cycling brightness animation\n    LED_MATRIX_BAND,                // Band fading brightness scrolling left to right\n    LED_MATRIX_BAND_PINWHEEL,       // 3 blade spinning pinwheel fades brightness\n    LED_MATRIX_BAND_SPIRAL,         // Spinning spiral fades brightness\n    LED_MATRIX_CYCLE_LEFT_RIGHT,    // Full gradient scrolling left to right\n    LED_MATRIX_CYCLE_UP_DOWN,       // Full gradient scrolling top to bottom\n    LED_MATRIX_CYCLE_OUT_IN,        // Full gradient scrolling out to in\n    LED_MATRIX_DUAL_BEACON,         // Full gradient spinning around center of keyboard\n    LED_MATRIX_SOLID_REACTIVE_SIMPLE,   // Pulses keys hit then fades out\n    LED_MATRIX_SOLID_REACTIVE_WIDE,       // Value pulses near a single key hit then fades out\n    LED_MATRIX_SOLID_REACTIVE_MULTIWIDE,  // Value pulses near multiple key hits then fades out\n    LED_MATRIX_SOLID_REACTIVE_CROSS,      // Value pulses the same column and row of a single key hit then fades out\n    LED_MATRIX_SOLID_REACTIVE_MULTICROSS, // Value pulses the same column and row of multiple key hits then fades out\n    LED_MATRIX_SOLID_REACTIVE_NEXUS,      // Value pulses away on the same column and row of a single key hit then fades out\n    LED_MATRIX_SOLID_REACTIVE_MULTINEXUS, // Value pulses away on the same column and row of multiple key hits then fades out\n    LED_MATRIX_SOLID_SPLASH,             // Value pulses away from a single key hit then fades out\n    LED_MATRIX_SOLID_MULTISPLASH,        // Value pulses away from multiple key hits then fades out\n    LED_MATRIX_WAVE_LEFT_RIGHT,           // Sine wave scrolling from left to right\n    LED_MATRIX_WAVE_UP_DOWN,              // Sine wave scrolling from up to down\n    LED_MATRIX_EFFECT_MAX\n};

You can enable a single effect by defining ENABLE_[EFFECT_NAME] in your config.h:

DefineDescription
#define ENABLE_LED_MATRIX_ALPHAS_MODSEnables LED_MATRIX_ALPHAS_MODS
#define ENABLE_LED_MATRIX_BREATHINGEnables LED_MATRIX_BREATHING
#define ENABLE_LED_MATRIX_BANDEnables LED_MATRIX_BAND
#define ENABLE_LED_MATRIX_BAND_PINWHEELEnables LED_MATRIX_BAND_PINWHEEL
#define ENABLE_LED_MATRIX_BAND_SPIRALEnables LED_MATRIX_BAND_SPIRAL
#define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHTEnables LED_MATRIX_CYCLE_LEFT_RIGHT
#define ENABLE_LED_MATRIX_CYCLE_UP_DOWNEnables LED_MATRIX_CYCLE_UP_DOWN
#define ENABLE_LED_MATRIX_CYCLE_OUT_INEnables LED_MATRIX_CYCLE_OUT_IN
#define ENABLE_LED_MATRIX_DUAL_BEACONEnables LED_MATRIX_DUAL_BEACON
#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHTEnables LED_MATRIX_WAVE_LEFT_RIGHT
#define ENABLE_LED_MATRIX_WAVE_UP_DOWNEnables LED_MATRIX_WAVE_UP_DOWN
Reactive DefinesDescription
#define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLEEnables LED_MATRIX_SOLID_REACTIVE_SIMPLE
#define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDEEnables LED_MATRIX_SOLID_REACTIVE_WIDE
#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDEEnables LED_MATRIX_SOLID_REACTIVE_MULTIWIDE
#define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSSEnables LED_MATRIX_SOLID_REACTIVE_CROSS
#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSSEnables LED_MATRIX_SOLID_REACTIVE_MULTICROSS
#define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUSEnables LED_MATRIX_SOLID_REACTIVE_NEXUS
#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUSEnables LED_MATRIX_SOLID_REACTIVE_MULTINEXUS
#define ENABLE_LED_MATRIX_SOLID_SPLASHEnables LED_MATRIX_SOLID_SPLASH
#define ENABLE_LED_MATRIX_SOLID_MULTISPLASHEnables LED_MATRIX_SOLID_MULTISPLASH

TIP

These modes introduce additional logic that can increase firmware size.

Custom LED Matrix Effects

By setting LED_MATRIX_CUSTOM_USER = yes in rules.mk, new effects can be defined directly from your keymap or userspace, without having to edit any QMK core files. To declare new effects, create a led_matrix_user.inc file in the user keymap directory or userspace folder.

TIP

Hardware maintainers who want to limit custom effects to a specific keyboard can create a led_matrix_kb.inc file in the root of the keyboard directory, and add LED_MATRIX_CUSTOM_KB = yes to the keyboard level rules.mk.

c
// !!! DO NOT ADD #pragma once !!! //\n\n// Step 1.\n// Declare custom effects using the LED_MATRIX_EFFECT macro\n// (note the lack of semicolon after the macro!)\nLED_MATRIX_EFFECT(my_cool_effect)\nLED_MATRIX_EFFECT(my_cool_effect2)\n\n// Step 2.\n// Define effects inside the `LED_MATRIX_CUSTOM_EFFECT_IMPLS` ifdef block\n#ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS\n\n// e.g: A simple effect, self-contained within a single method\nstatic bool my_cool_effect(effect_params_t* params) {\n  LED_MATRIX_USE_LIMITS(led_min, led_max);\n  for (uint8_t i = led_min; i < led_max; i++) {\n    led_matrix_set_value(i, 0xFF);\n  }\n  return led_matrix_check_finished_leds(led_max);\n}\n\n// e.g: A more complex effect, relying on external methods and state, with\n// dedicated init and run methods\nstatic uint8_t some_global_state;\nstatic void my_cool_effect2_complex_init(effect_params_t* params) {\n  some_global_state = 1;\n}\nstatic bool my_cool_effect2_complex_run(effect_params_t* params) {\n  LED_MATRIX_USE_LIMITS(led_min, led_max);\n  for (uint8_t i = led_min; i < led_max; i++) {\n    led_matrix_set_value(i, some_global_state++);\n  }\n  return led_matrix_check_finished_leds(led_max);\n}\nstatic bool my_cool_effect2(effect_params_t* params) {\n  if (params->init) my_cool_effect2_complex_init(params);\n  return my_cool_effect2_complex_run(params);\n}\n\n#endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS

To switch to your custom effect programmatically, simply call led_matrix_mode() and prepend LED_MATRIX_CUSTOM_ to the effect name your specified in LED_MATRIX_EFFECT(). For example, an effect declared as LED_MATRIX_EFFECT(my_cool_effect) would be referenced with:

c
led_matrix_mode(LED_MATRIX_CUSTOM_my_cool_effect);

For inspiration and examples, check out the built-in effects under quantum/led_matrix/animations/.

Additional config.h Options

c
#define LED_MATRIX_KEYRELEASES // reactive effects respond to keyreleases (instead of keypresses)\n#define LED_MATRIX_TIMEOUT 0 // number of milliseconds to wait until led automatically turns off\n#define LED_MATRIX_SLEEP // turn off effects when suspended\n#define LED_MATRIX_LED_PROCESS_LIMIT (LED_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)\n#define LED_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)\n#define LED_MATRIX_MAXIMUM_BRIGHTNESS 255 // limits maximum brightness of LEDs\n#define LED_MATRIX_DEFAULT_ON true // Sets the default enabled state, if none has been set\n#define LED_MATRIX_DEFAULT_MODE LED_MATRIX_SOLID // Sets the default mode, if none has been set\n#define LED_MATRIX_DEFAULT_VAL LED_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set\n#define LED_MATRIX_DEFAULT_SPD 127 // Sets the default animation speed, if none has been set\n#define LED_MATRIX_DEFAULT_FLAGS LED_FLAG_ALL // Sets the default LED flags, if none has been set\n#define LED_MATRIX_SPLIT { X, Y }   // (Optional) For split keyboards, the number of LEDs connected on each half. X = left, Y = Right.\n                                    // If reactive effects are enabled, you also will want to enable SPLIT_TRANSPORT_MIRROR

EEPROM storage

The EEPROM for it is currently shared with the RGB Matrix system (it's generally assumed only one feature would be used at a time).

Callbacks

Indicators

If you want to set custom indicators, such as an LED for Caps Lock, or layer indication, then you can use the led_matrix_indicators_kb function on the keyboard level source file, or led_matrix_indicators_user function in the user keymap.c.

c
bool led_matrix_indicators_kb(void) {\n    if (!led_matrix_indicators_user()) {\n        return false;\n    }\n    led_matrix_set_value(index, value);\n    return true;\n}

In addition, there are the advanced indicator functions. These are aimed at those with heavily customized displays, where rendering every LED per cycle is expensive. This includes a special macro to help make this easier to use: LED_MATRIX_INDICATOR_SET_VALUE(i, v).

c
void led_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {\n    LED_MATRIX_INDICATOR_SET_VALUE(index, value);\n    return false;\n}

API

void led_matrix_toggle(void)

Toggle LED Matrix on or off.


void led_matrix_toggle_noeeprom(void)

Toggle LED Matrix on or off. New state is not written to EEPROM.


void led_matrix_enable(void)

Turn LED Matrix on.


void led_matrix_enable_noeeprom(void)

Turn LED Matrix on. New state is not written to EEPROM.


void led_matrix_disable(void)

Turn LED Matrix off.


void led_matrix_disable_noeeprom(void)

Turn LED Matrix off. New state is not written to EEPROM.


bool led_matrix_is_enabled(void)

Get the current enabled state of LED Matrix.

Return Value

true if LED Matrix is enabled.


void led_matrix_set_value(uint8_t index, uint8_t v)

Set the brightness of a single LED.

This function can only be run from within an effect or indicator callback, otherwise the currently running animation will simply overwrite it on the next frame.

Arguments


void led_matrix_set_value_all(uint8_t v)

Set the brightness of all LEDs.

This function can only be run from within an effect or indicator callback, otherwise the currently running animation will simply overwrite it on the next frame.

Arguments


void led_matrix_mode(uint8_t mode)

Set the currently running effect.

Arguments


void led_matrix_mode_noeeprom(uint8_t mode)

Set the currently running effect. New state is not written to EEPROM.

Arguments


void led_matrix_step(void)

Move to the next enabled effect.


void led_matrix_step_noeeprom(void)

Move to the next enabled effect. New state is not written to EEPROM.


void led_matrix_step_reverse(void)

Move to the previous enabled effect.


void led_matrix_step_reverse_noeeprom(void)

Move to the previous enabled effect. New state is not written to EEPROM.


uint8_t led_matrix_get_mode(void)

Get the currently running effect.

Return Value

The index of the currently running effect.


void val_matrix_increase_val(void)

Increase the global effect brightness.


void led_matrix_increase_val_noeeprom(void)

Increase the global effect brightness. New state is not written to EEPROM.


void led_matrix_decrease_val(void)

Decrease the global effect brightness.


void led_matrix_decrease_val_noeeprom(void)

Decrease the global effect brightness. New state is not written to EEPROM.


uint8_t led_matrix_get_val(void)

Get the current global effect brightness.

Return Value

The current brightness value, from 0 to 255.


void led_matrix_increase_speed(void)

Increase the effect speed.


void led_matrix_increase_speed_noeeprom(void)

Increase the effect speed. New state is not written to EEPROM.


void led_matrix_decrease_speed(void)

Decrease the effect speed.


void led_matrix_decrease_speed_noeeprom(void)

Decrease the effect speed. New state is not written to EEPROM.


void led_matrix_set_speed(uint8_t speed)

Set the effect speed.

Arguments


void led_matrix_set_speed_noeeprom(uint8_t speed)

Set the effect speed. New state is not written to EEPROM.

Arguments


uint8_t led_matrix_get_speed(void)

Get the current effect speed.

Return Value

The current effect speed, from 0 to 255.


void led_matrix_reload_from_eeprom(void)

Reload the effect configuration (enabled, mode and brightness) from EEPROM.


bool led_matrix_get_suspend_state(void)

Get the current suspend state of LED Matrix.

Return Value

true if LED Matrix is currently in the suspended state.


bool led_matrix_indicators_kb(void)

Keyboard-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.

Return Value

Currently unused.


bool led_matrix_indicators_user(void)

Keymap-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.

Return Value

true to continue running the keyboard-level callback.


bool led_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max)

Keyboard-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.

Arguments

Return Value

Currently unused.


bool led_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max)

Keymap-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.

Arguments

Return Value

true to continue running the keyboard-level callback.

', 182); diff --git a/assets/features_led_matrix.md.BTOvgNVe.lean.js b/assets/features_led_matrix.md.DZ4KDZN-.lean.js similarity index 91% rename from assets/features_led_matrix.md.BTOvgNVe.lean.js rename to assets/features_led_matrix.md.DZ4KDZN-.lean.js index 14a92f5d616..bacdc29fbe9 100644 --- a/assets/features_led_matrix.md.BTOvgNVe.lean.js +++ b/assets/features_led_matrix.md.DZ4KDZN-.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"LED Matrix Lighting","description":"","frontmatter":{},"headers":[],"relativePath":"features/led_matrix.md","filePath":"features/led_matrix.md"}'); const _sfc_main = { name: "features/led_matrix.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 182); diff --git a/assets/features_midi.md.u3tHPteB.js b/assets/features_midi.md.DwmZ8GrG.js similarity index 99% rename from assets/features_midi.md.u3tHPteB.js rename to assets/features_midi.md.DwmZ8GrG.js index 9f606556009..a52c7e464b1 100644 --- a/assets/features_midi.md.u3tHPteB.js +++ b/assets/features_midi.md.DwmZ8GrG.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"MIDI","description":"","frontmatter":{},"headers":[],"relativePath":"features/midi.md","filePath":"features/midi.md"}'); const _sfc_main = { name: "features/midi.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

MIDI

Usage

First, enable MIDI by adding the following to your rules.mk:

make
MIDI_ENABLE = yes

There are two MIDI systems in QMK: basic and advanced. With basic MIDI you will only be able to send Note On and Note Off messages using the note keycodes, meaning that keycodes like MI_OCTU and MI_OCTD will not work. Advanced MIDI allows you to do things like octave shifts, channel changes, velocity changes, modulation, and more.

Caveats

MIDI requires 2 USB endpoints and as such may not work on some hardware such as V-USB controllers.

Basic MIDI

To enable basic MIDI, add the following to your config.h:

c
#define MIDI_BASIC

Advanced MIDI

To enable advanced MIDI, add the following to your config.h:

c
#define MIDI_ADVANCED

Sending Control Change (CC) Messages

If you're aiming to emulate the features of something like a Launchpad or other MIDI controller you'll need to access the internal MIDI device directly.

Because there are so many possible CC messages, not all of them are implemented as keycodes. Additionally, you might need to provide more than just two values that you would get from a keycode (pressed and released) - for example, the analog values from a fader or a potentiometer. So, you will need to implement custom keycodes if you want to use them in your keymap directly using process_record_user().

For reference of all the possible control code numbers see MIDI Specification

Example code for using Generic On Off Switches as per MIDI Specification.

c
#include QMK_KEYBOARD_H\n\nextern MidiDevice midi_device;\n\n// MIDI CC codes for generic on/off switches (80, 81, 82, 83)\n// Off: 0-63\n// On:  64-127\n\n#define MIDI_CC_OFF 0\n#define MIDI_CC_ON  127\n\nenum custom_keycodes {\n    MIDI_CC80 = SAFE_RANGE,\n};\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n    switch (keycode) {\n        case MIDI_CC80:\n            if (record->event.pressed) {\n                midi_send_cc(&midi_device, midi_config.channel, 80, MIDI_CC_ON);\n            } else {\n                midi_send_cc(&midi_device, midi_config.channel, 80, MIDI_CC_OFF);\n            }\n            return true;\n    }\n    return true;\n};\n\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n    LAYOUT(\n        // ...\n        MIDI_CC80,\n        // ...\n    )\n};

Keycodes

KeycodeAliasesDescription
QK_MIDI_ONMI_ONTurn MIDI on
QK_MIDI_OFFMI_OFFTurn MIDI off
QK_MIDI_TOGGLEMI_TOGGToggle MIDI enabled
QK_MIDI_NOTE_C_0MI_CC octave 0
QK_MIDI_NOTE_C_SHARP_0MI_Cs, MI_DbC♯/D♭ octave 0
QK_MIDI_NOTE_D_0MI_DD octave 0
QK_MIDI_NOTE_D_SHARP_0MI_Ds, MI_EbD♯/E♭ octave 0
QK_MIDI_NOTE_E_0MI_EE octave 0
QK_MIDI_NOTE_F_0MI_FF octave 0
QK_MIDI_NOTE_F_SHARP_0MI_Fs, MI_GbF♯/G♭ octave 0
QK_MIDI_NOTE_G_0MI_GG octave 0
QK_MIDI_NOTE_G_SHARP_0MI_Gs, MI_AbG♯/A♭ octave 0
QK_MIDI_NOTE_A_0MI_AA octave 0
QK_MIDI_NOTE_A_SHARP_0MI_As, MI_BbA♯/B♭ octave 0
QK_MIDI_NOTE_B_0MI_BB octave 0
QK_MIDI_NOTE_C_1MI_C1C octave 1
QK_MIDI_NOTE_C_SHARP_1MI_Cs1, MI_Db1C♯/D♭ octave 1
QK_MIDI_NOTE_D_1MI_D1D octave 1
QK_MIDI_NOTE_D_SHARP_1MI_Ds1, MI_Eb1D♯/E♭ octave 1
QK_MIDI_NOTE_E_1MI_E1E octave 1
QK_MIDI_NOTE_F_1MI_F1F octave 1
QK_MIDI_NOTE_F_SHARP_1MI_Fs1, MI_Gb1F♯/G♭ octave 1
QK_MIDI_NOTE_G_1MI_G1G octave 1
QK_MIDI_NOTE_G_SHARP_1MI_Gs1, MI_Ab1G♯/A♭ octave 1
QK_MIDI_NOTE_A_1MI_A1A octave 1
QK_MIDI_NOTE_A_SHARP_1MI_As1, MI_Bb1A♯/B♭ octave 1
QK_MIDI_NOTE_B_1MI_B1B octave 1
QK_MIDI_NOTE_C_2MI_C2C octave 2
QK_MIDI_NOTE_C_SHARP_2MI_Cs2, MI_Db2C♯/D♭ octave 2
QK_MIDI_NOTE_D_2MI_D2D octave 2
QK_MIDI_NOTE_D_SHARP_2MI_Ds2, MI_Eb2D♯/E♭ octave 2
QK_MIDI_NOTE_E_2MI_E2E octave 2
QK_MIDI_NOTE_F_2MI_F2F octave 2
QK_MIDI_NOTE_F_SHARP_2MI_Fs2, MI_Gb2F♯/G♭ octave 2
QK_MIDI_NOTE_G_2MI_G2G octave 2
QK_MIDI_NOTE_G_SHARP_2MI_Gs2, MI_Ab2G♯/A♭ octave 2
QK_MIDI_NOTE_A_2MI_A2A octave 2
QK_MIDI_NOTE_A_SHARP_2MI_As2, MI_Bb2A♯/B♭ octave 2
QK_MIDI_NOTE_B_2MI_B2B octave 2
QK_MIDI_NOTE_C_3MI_C3C octave 3
QK_MIDI_NOTE_C_SHARP_3MI_Cs3, MI_Db3C♯/D♭ octave 3
QK_MIDI_NOTE_D_3MI_D3D octave 3
QK_MIDI_NOTE_D_SHARP_3MI_Ds3, MI_Eb3D♯/E♭ octave 3
QK_MIDI_NOTE_E_3MI_E3E octave 3
QK_MIDI_NOTE_F_3MI_F3F octave 3
QK_MIDI_NOTE_F_SHARP_3MI_Fs3, MI_Gb3F♯/G♭ octave 3
QK_MIDI_NOTE_G_3MI_G3G octave 3
QK_MIDI_NOTE_G_SHARP_3MI_Gs3, MI_Ab3G♯/A♭ octave 3
QK_MIDI_NOTE_A_3MI_A3A octave 3
QK_MIDI_NOTE_A_SHARP_3MI_As3, MI_Bb3A♯/B♭ octave 3
QK_MIDI_NOTE_B_3MI_B3B octave 3
QK_MIDI_NOTE_C_4MI_C4C octave 4
QK_MIDI_NOTE_C_SHARP_4MI_Cs4, MI_Db4C♯/D♭ octave 4
QK_MIDI_NOTE_D_4MI_D4D octave 4
QK_MIDI_NOTE_D_SHARP_4MI_Ds4, MI_Eb4D♯/E♭ octave 4
QK_MIDI_NOTE_E_4MI_E4E octave 4
QK_MIDI_NOTE_F_4MI_F4F octave 4
QK_MIDI_NOTE_F_SHARP_4MI_Fs4, MI_Gb4F♯/G♭ octave 4
QK_MIDI_NOTE_G_4MI_G4G octave 4
QK_MIDI_NOTE_G_SHARP_4MI_Gs4, MI_Ab4G♯/A♭ octave 4
QK_MIDI_NOTE_A_4MI_A4A octave 4
QK_MIDI_NOTE_A_SHARP_4MI_As4, MI_Bb4A♯/B♭ octave 4
QK_MIDI_NOTE_B_4MI_B4B octave 4
QK_MIDI_NOTE_C_5MI_C5C octave 5
QK_MIDI_NOTE_C_SHARP_5MI_Cs5, MI_Db5C♯/D♭ octave 5
QK_MIDI_NOTE_D_5MI_D5D octave 5
QK_MIDI_NOTE_D_SHARP_5MI_Ds5, MI_Eb5D♯/E♭ octave 5
QK_MIDI_NOTE_E_5MI_E5E octave 5
QK_MIDI_NOTE_F_5MI_F5F octave 5
QK_MIDI_NOTE_F_SHARP_5MI_Fs5, MI_Gb5F♯/G♭ octave 5
QK_MIDI_NOTE_G_5MI_G5G octave 5
QK_MIDI_NOTE_G_SHARP_5MI_Gs5, MI_Ab5G♯/A♭ octave 5
QK_MIDI_NOTE_A_5MI_A5A octave 5
QK_MIDI_NOTE_A_SHARP_5MI_As5, MI_Bb5A♯/B♭ octave 5
QK_MIDI_NOTE_B_5MI_B5B octave 5
QK_MIDI_OCTAVE_N2MI_OCN2Set octave to -2
QK_MIDI_OCTAVE_N1MI_OCN1Set octave to -1
QK_MIDI_OCTAVE_0MI_OC0Set octave to 0
QK_MIDI_OCTAVE_1MI_OC1Set octave to 1
QK_MIDI_OCTAVE_2MI_OC2Set octave to 2
QK_MIDI_OCTAVE_3MI_OC3Set octave to 3
QK_MIDI_OCTAVE_4MI_OC4Set octave to 4
QK_MIDI_OCTAVE_5MI_OC5Set octave to 5
QK_MIDI_OCTAVE_6MI_OC6Set octave to 6
QK_MIDI_OCTAVE_7MI_OC7Set octave to 7
QK_MIDI_OCTAVE_DOWNMI_OCTDMove down an octave
QK_MIDI_OCTAVE_UPMI_OCTUMove up an octave
QK_MIDI_TRANSPOSE_N6MI_TRN6Set transposition to -6 semitones
QK_MIDI_TRANSPOSE_N5MI_TRN5Set transposition to -5 semitones
QK_MIDI_TRANSPOSE_N4MI_TRN4Set transposition to -4 semitones
QK_MIDI_TRANSPOSE_N3MI_TRN3Set transposition to -3 semitones
QK_MIDI_TRANSPOSE_N2MI_TRN2Set transposition to -2 semitones
QK_MIDI_TRANSPOSE_N1MI_TRN1Set transposition to -1 semitone
QK_MIDI_TRANSPOSE_0MI_TR0No transposition
QK_MIDI_TRANSPOSE_1MI_TR1Set transposition to +1 semitone
QK_MIDI_TRANSPOSE_2MI_TR2Set transposition to +2 semitones
QK_MIDI_TRANSPOSE_3MI_TR3Set transposition to +3 semitones
QK_MIDI_TRANSPOSE_4MI_TR4Set transposition to +4 semitones
QK_MIDI_TRANSPOSE_5MI_TR5Set transposition to +5 semitones
QK_MIDI_TRANSPOSE_6MI_TR6Set transposition to +6 semitones
QK_MIDI_TRANSPOSE_DOWNMI_TRSDDecrease transposition
QK_MIDI_TRANSPOSE_UPMI_TRSUIncrease transposition
QK_MIDI_VELOCITY_0MI_VL0Set velocity to 0
QK_MIDI_VELOCITY_1MI_VL1Set velocity to 12
QK_MIDI_VELOCITY_2MI_VL2Set velocity to 25
QK_MIDI_VELOCITY_3MI_VL3Set velocity to 38
QK_MIDI_VELOCITY_4MI_VL4Set velocity to 51
QK_MIDI_VELOCITY_5MI_VL5Set velocity to 64
QK_MIDI_VELOCITY_6MI_VL6Set velocity to 76
QK_MIDI_VELOCITY_7MI_VL7Set velocity to 89
QK_MIDI_VELOCITY_8MI_VL8Set velocity to 102
QK_MIDI_VELOCITY_9MI_VL9Set velocity to 114
QK_MIDI_VELOCITY_10MI_VL10Set velocity to 127
QK_MIDI_VELOCITY_DOWNMI_VELDDecrease velocity
QK_MIDI_VELOCITY_UPMI_VELUIncrease velocity
QK_MIDI_CHANNEL_1MI_CH1Set channel to 1
QK_MIDI_CHANNEL_2MI_CH2Set channel to 2
QK_MIDI_CHANNEL_3MI_CH3Set channel to 3
QK_MIDI_CHANNEL_4MI_CH4Set channel to 4
QK_MIDI_CHANNEL_5MI_CH5Set channel to 5
QK_MIDI_CHANNEL_6MI_CH6Set channel to 6
QK_MIDI_CHANNEL_7MI_CH7Set channel to 7
QK_MIDI_CHANNEL_8MI_CH8Set channel to 8
QK_MIDI_CHANNEL_9MI_CH9Set channel to 9
QK_MIDI_CHANNEL_10MI_CH10Set channel to 10
QK_MIDI_CHANNEL_11MI_CH11Set channel to 11
QK_MIDI_CHANNEL_12MI_CH12Set channel to 12
QK_MIDI_CHANNEL_13MI_CH13Set channel to 13
QK_MIDI_CHANNEL_14MI_CH14Set channel to 14
QK_MIDI_CHANNEL_15MI_CH15Set channel to 15
QK_MIDI_CHANNEL_16MI_CH16Set channel to 16
QK_MIDI_CHANNEL_DOWNMI_CHNDDecrease channel
QK_MIDI_CHANNEL_UPMI_CHNUIncrease channel
QK_MIDI_ALL_NOTES_OFFMI_AOFFStop all notes
QK_MIDI_SUSTAINMI_SUSTSustain
QK_MIDI_PORTAMENTOMI_PORTPortmento
QK_MIDI_SOSTENUTOMI_SOSTSostenuto
QK_MIDI_SOFTMI_SOFTSoft Pedal
QK_MIDI_LEGATOMI_LEGLegato
QK_MIDI_MODULATIONMI_MODModulation
QK_MIDI_MODULATION_SPEED_DOWNMI_MODDDecrease modulation speed
QK_MIDI_MODULATION_SPEED_UPMI_MODUIncrease modulation speed
QK_MIDI_PITCH_BEND_DOWNMI_BNDDBend pitch down
QK_MIDI_PITCH_BEND_UPMI_BNDUBend pitch up

Configuration

Certain values are stored in the midi_config struct. This configuration is not persisted to EEPROM. By default, these values are:

ConfigurationValueComments
Octave4Corresponds to MI_OC2
Transposition0
Velocity127
Channel0
Modulation Interval8

For the above, the MI_C keycode will produce a C3 (note number 48), and so on.

References

MIDI Specification

QMK C Files

', 30); diff --git a/assets/features_midi.md.u3tHPteB.lean.js b/assets/features_midi.md.DwmZ8GrG.lean.js similarity index 90% rename from assets/features_midi.md.u3tHPteB.lean.js rename to assets/features_midi.md.DwmZ8GrG.lean.js index 783ee9de890..ec974726c5d 100644 --- a/assets/features_midi.md.u3tHPteB.lean.js +++ b/assets/features_midi.md.DwmZ8GrG.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"MIDI","description":"","frontmatter":{},"headers":[],"relativePath":"features/midi.md","filePath":"features/midi.md"}'); const _sfc_main = { name: "features/midi.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 30); diff --git a/assets/features_mouse_keys.md.DIChRnuA.js b/assets/features_mouse_keys.md.CifbxWOs.js similarity index 99% rename from assets/features_mouse_keys.md.DIChRnuA.js rename to assets/features_mouse_keys.md.CifbxWOs.js index 461ce851fb3..df362a84da6 100644 --- a/assets/features_mouse_keys.md.DIChRnuA.js +++ b/assets/features_mouse_keys.md.CifbxWOs.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Mouse keys","description":"","frontmatter":{},"headers":[],"relativePath":"features/mouse_keys.md","filePath":"features/mouse_keys.md"}'); const _sfc_main = { name: "features/mouse_keys.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Mouse keys

Mouse keys is a feature that allows you to emulate a mouse using your keyboard. You can move the pointer at different speeds, press 5 buttons and scroll in 8 directions.

Adding mouse keys to your keyboard

To use mouse keys, you must at least enable mouse keys support and map mouse actions to keys on your keyboard.

Enabling mouse keys

To enable mouse keys, add the following line to your keymap’s rules.mk:

c
MOUSEKEY_ENABLE = yes

Mapping mouse actions

In your keymap you can use the following keycodes to map key presses to mouse actions:

KeyAliasesDescription
QK_MOUSE_CURSOR_UPMS_UPMouse cursor up
QK_MOUSE_CURSOR_DOWNMS_DOWNMouse cursor down
QK_MOUSE_CURSOR_LEFTMS_LEFTMouse cursor left
QK_MOUSE_CURSOR_RIGHTMS_RGHTMouse cursor right
QK_MOUSE_BUTTON_1MS_BTN1Mouse button 1
QK_MOUSE_BUTTON_2MS_BTN2Mouse button 2
QK_MOUSE_BUTTON_3MS_BTN3Mouse button 3
QK_MOUSE_BUTTON_4MS_BTN4Mouse button 4
QK_MOUSE_BUTTON_5MS_BTN5Mouse button 5
QK_MOUSE_BUTTON_6MS_BTN6Mouse button 6
QK_MOUSE_BUTTON_7MS_BTN7Mouse button 7
QK_MOUSE_BUTTON_8MS_BTN8Mouse button 8
QK_MOUSE_WHEEL_UPMS_WHLUMouse wheel up
QK_MOUSE_WHEEL_DOWNMS_WHLDMouse wheel down
QK_MOUSE_WHEEL_LEFTMS_WHLLMouse wheel left
QK_MOUSE_WHEEL_RIGHTMS_WHLRMouse wheel right
QK_MOUSE_ACCELERATION_0MS_ACL0Set mouse acceleration to 0
QK_MOUSE_ACCELERATION_1MS_ACL1Set mouse acceleration to 1
QK_MOUSE_ACCELERATION_2MS_ACL2Set mouse acceleration to 2

Configuring mouse keys

Mouse keys supports three different modes to move the cursor:

The same principle applies to scrolling, in most modes.

Configuration options that are times, intervals or delays are given in milliseconds. Scroll speed is given as multiples of the default scroll step. For example, a scroll speed of 8 means that each scroll action covers 8 times the length of the default scroll step as defined by your operating system or application.

Accelerated mode

This is the default mode. You can adjust the cursor and scrolling acceleration using the following settings in your keymap’s config.h file:

DefineDefaultDescription
MOUSEKEY_DELAY10Delay between pressing a movement key and cursor movement
MOUSEKEY_INTERVAL20Time between cursor movements in milliseconds
MOUSEKEY_MOVE_DELTA8Step size
MOUSEKEY_MAX_SPEED10Maximum cursor speed at which acceleration stops
MOUSEKEY_TIME_TO_MAX30Time until maximum cursor speed is reached
MOUSEKEY_WHEEL_DELAY10Delay between pressing a wheel key and wheel movement
MOUSEKEY_WHEEL_INTERVAL80Time between wheel movements
MOUSEKEY_WHEEL_DELTA1Wheel movement step size
MOUSEKEY_WHEEL_MAX_SPEED8Maximum number of scroll steps per scroll action
MOUSEKEY_WHEEL_TIME_TO_MAX40Time until maximum scroll speed is reached

Tips:

Cursor acceleration uses the same algorithm as the X Window System MouseKeysAccel feature. You can read more about it on Wikipedia.

Kinetic Mode

This is an extension of the accelerated mode. The kinetic mode uses a quadratic curve on the cursor speed which allows precise movements at the beginning and allows to cover large distances by increasing cursor speed quickly thereafter. You can adjust the cursor and scrolling acceleration using the following settings in your keymap’s config.h file:

DefineDefaultDescription
MK_KINETIC_SPEEDundefinedEnable kinetic mode
MOUSEKEY_DELAY5Delay between pressing a movement key and cursor movement
MOUSEKEY_INTERVAL10Time between cursor movements in milliseconds
MOUSEKEY_MOVE_DELTA16Step size for accelerating from initial to base speed
MOUSEKEY_INITIAL_SPEED100Initial speed of the cursor in pixel per second
MOUSEKEY_BASE_SPEED5000Maximum cursor speed at which acceleration stops
MOUSEKEY_DECELERATED_SPEED400Decelerated cursor speed
MOUSEKEY_ACCELERATED_SPEED3000Accelerated cursor speed
MOUSEKEY_WHEEL_INITIAL_MOVEMENTS16Initial number of movements of the mouse wheel
MOUSEKEY_WHEEL_BASE_MOVEMENTS32Maximum number of movements at which acceleration stops
MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS48Accelerated wheel movements
MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS8Decelerated wheel movements

Tips:

Constant mode

In this mode you can define multiple different speeds for both the cursor and the mouse wheel. There is no acceleration. MS_ACL0, MS_ACL1 and MS_ACL2 change the cursor and scroll speed to their respective setting.

You can choose whether speed selection is momentary or tap-to-select:

The default speeds from slowest to fastest are as follows:

To use constant speed mode, you must at least define MK_3_SPEED in your keymap’s config.h file:

c
#define MK_3_SPEED

To enable momentary mode, also define MK_MOMENTARY_ACCEL:

c
#define MK_MOMENTARY_ACCEL

Use the following settings if you want to adjust cursor movement or scrolling:

DefineDefaultDescription
MK_3_SPEEDNot definedEnable constant cursor speeds
MK_MOMENTARY_ACCELNot definedEnable momentary speed selection
MK_C_OFFSET_UNMOD16Cursor offset per movement (unmodified)
MK_C_INTERVAL_UNMOD16Time between cursor movements (unmodified)
MK_C_OFFSET_01Cursor offset per movement (MS_ACL0)
MK_C_INTERVAL_032Time between cursor movements (MS_ACL0)
MK_C_OFFSET_14Cursor offset per movement (MS_ACL1)
MK_C_INTERVAL_116Time between cursor movements (MS_ACL1)
MK_C_OFFSET_232Cursor offset per movement (MS_ACL2)
MK_C_INTERVAL_216Time between cursor movements (MS_ACL2)
MK_W_OFFSET_UNMOD1Scroll steps per scroll action (unmodified)
MK_W_INTERVAL_UNMOD40Time between scroll steps (unmodified)
MK_W_OFFSET_01Scroll steps per scroll action (MS_ACL0)
MK_W_INTERVAL_0360Time between scroll steps (MS_ACL0)
MK_W_OFFSET_11Scroll steps per scroll action (MS_ACL1)
MK_W_INTERVAL_1120Time between scroll steps (MS_ACL1)
MK_W_OFFSET_21Scroll steps per scroll action (MS_ACL2)
MK_W_INTERVAL_220Time between scroll steps (MS_ACL2)

Combined mode

This mode functions like Accelerated mode, however, you can hold MS_ACL0, MS_ACL1 and MS_ACL2 to momentarily (while held) set the cursor and scroll speeds to constant speeds. When no acceleration keys are held, this mode is identical to Accelerated mode, and can be modified using all of the relevant settings.

To use combined speed mode, you must at least define MK_COMBINED in your keymap’s config.h file:

c
#define MK_COMBINED

Inertia mode

This mode provides smooth motion, like sliding on ice. The cursor accelerates along a quadratic curve while a key is held, then glides to a stop after the key is released. Vertical and horizontal movements are tracked independently, so the cursor can move in many directions and make curves.

Cannot be used at the same time as Kinetic mode, Constant mode, or Combined mode.

Recommended settings in your keymap’s config.h file:

DefineDefaultDescription
MOUSEKEY_INERTIAundefinedEnable Inertia mode
MOUSEKEY_DELAY150Delay between pressing a movement key and cursor movement
MOUSEKEY_INTERVAL16Time between cursor movements in milliseconds (16 = 60fps)
MOUSEKEY_MAX_SPEED32Maximum cursor speed at which acceleration stops
MOUSEKEY_TIME_TO_MAX32Number of frames until maximum cursor speed is reached
MOUSEKEY_FRICTION24How quickly the cursor stops after releasing a key
MOUSEKEY_MOVE_DELTA1How much to move on first frame (1 strongly recommended)

Tips:

Overlapping mouse key control

When additional overlapping mouse key is pressed, the mouse cursor will continue in a new direction with the same acceleration. The following settings can be used to reset the acceleration with new overlapping keys for more precise control if desired:

DefineDefaultDescription
MOUSEKEY_OVERLAP_RESETundefinedEnables overlapping mouse key control
MOUSEKEY_OVERLAP_MOVE_DELTAMOUSEKEY_MOVE_DELTAStep size of reset movement acceleration
MOUSEKEY_OVERLAP_WHEEL_DELTAMOUSEKEY_WHEEL_DELTAStep size of reset mouse wheel acceleration
MOUSEKEY_OVERLAP_INTERVALMOUSEKEY_INTERVALReset time between cursor movements in milliseconds (Kinetic mode only)

?> This feature will not be applied on Inertial mode

Use with PS/2 Mouse and Pointing Device

Mouse keys button state is shared with PS/2 mouse and pointing device so mouse keys button presses can be used for clicks and drags.

', 56); diff --git a/assets/features_mouse_keys.md.DIChRnuA.lean.js b/assets/features_mouse_keys.md.CifbxWOs.lean.js similarity index 91% rename from assets/features_mouse_keys.md.DIChRnuA.lean.js rename to assets/features_mouse_keys.md.CifbxWOs.lean.js index fa6ca3fd8f1..48fc9fdfc10 100644 --- a/assets/features_mouse_keys.md.DIChRnuA.lean.js +++ b/assets/features_mouse_keys.md.CifbxWOs.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Mouse keys","description":"","frontmatter":{},"headers":[],"relativePath":"features/mouse_keys.md","filePath":"features/mouse_keys.md"}'); const _sfc_main = { name: "features/mouse_keys.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 56); diff --git a/assets/features_oled_driver.md.D9wJVdL1.js b/assets/features_oled_driver.md.CGlp2h0e.js similarity index 99% rename from assets/features_oled_driver.md.D9wJVdL1.js rename to assets/features_oled_driver.md.CGlp2h0e.js index 358d6dfdec2..9251ed6be76 100644 --- a/assets/features_oled_driver.md.D9wJVdL1.js +++ b/assets/features_oled_driver.md.CGlp2h0e.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"OLED Driver","description":"","frontmatter":{},"headers":[],"relativePath":"features/oled_driver.md","filePath":"features/oled_driver.md"}'); const _sfc_main = { name: "features/oled_driver.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

OLED Driver

Supported Hardware

OLED modules using SSD1306, SH1106 or SH1107 driver ICs, communicating over I2C or SPI. Tested combinations:

ICSizePlatformNotes
SSD1306128x32AVRPrimary support
SSD1306128x64AVRVerified working
SSD1306128x32Arm
SSD1306128x64ArmVerified working
SH1106128x64AVRNo scrolling
SH110764x128AVRNo scrolling
SH110764x128ArmNo scrolling
SH1107128x128ArmNo scrolling

Hardware configurations using Arm-based microcontrollers or different sizes of OLED modules may be compatible, but are untested.

Usage

To enable the OLED feature, there are two steps. First, when compiling your keyboard, you'll need to add the following to your rules.mk:

make
OLED_ENABLE = yes

OLED type

OLED DriverSupported Device
ssd1306 (default)For both SSD1306, SH1106, and SH1107

e.g.

make
OLED_DRIVER = ssd1306
OLED Transport
i2c (default)Uses I2C for communication with the OLED panel
spiUses SPI for communication with the OLED panel

e.g.

make
OLED_TRANSPORT = i2c

Then in your keymap.c file, implement the OLED task call. This example assumes your keymap has three layers named _QWERTY, _FN and _ADJ:

c
#ifdef OLED_ENABLE\nbool oled_task_user(void) {\n    // Host Keyboard Layer Status\n    oled_write_P(PSTR("Layer: "), false);\n\n    switch (get_highest_layer(layer_state)) {\n        case _QWERTY:\n            oled_write_P(PSTR("Default\\n"), false);\n            break;\n        case _FN:\n            oled_write_P(PSTR("FN\\n"), false);\n            break;\n        case _ADJ:\n            oled_write_P(PSTR("ADJ\\n"), false);\n            break;\n        default:\n            // Or use the write_ln shortcut over adding '\\n' to the end of your string\n            oled_write_ln_P(PSTR("Undefined"), false);\n    }\n\n    // Host Keyboard LED Status\n    led_t led_state = host_keyboard_led_state();\n    oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR("    "), false);\n    oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR("    "), false);\n    oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR("    "), false);\n    \n    return false;\n}\n#endif

Logo Example

In the default font, certain ranges of characters are reserved for a QMK logo. To render this logo to the OLED screen, use the following code example:

c
static void render_logo(void) {\n    static const char PROGMEM qmk_logo[] = {\n        0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,\n        0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,\n        0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00\n    };\n\n    oled_write_P(qmk_logo, false);\n}\n\nbool oled_task_user(void) {\n    render_logo();\n    return false;\n}

TIP

The default font file is located at drivers/oled/glcdfont.c and its location can be overwritten with the OLED_FONT_H configuration option. Font file content can be edited with external tools such as Helix Font Editor and Logo Editor.

Buffer Read Example

For some purposes, you may need to read the current state of the OLED display buffer. The oled_read_raw function can be used to safely read bytes from the buffer.

In this example, calling fade_display in the oled_task_user function will slowly fade away whatever is on the screen by turning random pixels black over time.

c
//Setup some mask which can be or'd with bytes to turn off pixels\nconst uint8_t single_bit_masks[8] = {127, 191, 223, 239, 247, 251, 253, 254};\n\nstatic void fade_display(void) {\n    //Define the reader structure\n    oled_buffer_reader_t reader;\n    uint8_t buff_char;\n    if (random() % 30 == 0) {\n        srand(timer_read());\n        // Fetch a pointer for the buffer byte at index 0. The return structure\n        // will have the pointer and the number of bytes remaining from this\n        // index position if we want to perform a sequential read by\n        // incrementing the buffer pointer\n        reader = oled_read_raw(0);\n        //Loop over the remaining buffer and erase pixels as we go\n        for (uint16_t i = 0; i < reader.remaining_element_count; i++) {\n            //Get the actual byte in the buffer by dereferencing the pointer\n            buff_char = *reader.current_element;\n            if (buff_char != 0) {\n                oled_write_raw_byte(buff_char & single_bit_masks[rand() % 8], i);\n            }\n            //increment the pointer to fetch a new byte during the next loop\n            reader.current_element++;\n        }\n    }\n}

Other Examples

In split keyboards, it is very common to have two OLED displays that each render different content and are oriented or flipped differently. You can do this by switching which content to render by using the return value from is_keyboard_master() or is_keyboard_left() found in split_util.h, e.g:

c
#ifdef OLED_ENABLE\noled_rotation_t oled_init_user(oled_rotation_t rotation) {\n    if (!is_keyboard_master()) {\n        return OLED_ROTATION_180;  // flips the display 180 degrees if offhand\n    }\n\n    return rotation;\n}\n\nbool oled_task_user(void) {\n    if (is_keyboard_master()) {\n        render_status();  // Renders the current keyboard state (layer, lock, caps, scroll, etc)\n    } else {\n        render_logo();  // Renders a static logo\n        oled_scroll_left();  // Turns on scrolling\n    }\n    return false;\n}\n#endif

Render a message before booting into bootloader mode.

c
void oled_render_boot(bool bootloader) {\n    oled_clear();\n    for (int i = 0; i < 16; i++) {\n        oled_set_cursor(0, i);\n        if (bootloader) {\n            oled_write_P(PSTR("Awaiting New Firmware "), false);\n        } else {\n            oled_write_P(PSTR("Rebooting "), false);\n        }\n    }\n\n    oled_render_dirty(true);\n}\n\nbool shutdown_user(bool jump_to_bootloader) {\n    oled_render_boot(jump_to_bootloader);\n}

Basic Configuration

These configuration options should be placed in config.h. Example:

c
#define OLED_BRIGHTNESS 128
DefineDefaultDescription
OLED_BRIGHTNESS255The default brightness level of the OLED, from 0 to 255.
OLED_COLUMN_OFFSET0Shift output to the right this many pixels.
Useful for 128x64 displays centered on a 132x64 SH1106 IC.
OLED_DISPLAY_CLOCK0x80Set the display clock divide ratio/oscillator frequency.
OLED_FONT_H"glcdfont.c"The font code file to use for custom fonts
OLED_FONT_START0The starting character index for custom fonts
OLED_FONT_END223The ending character index for custom fonts
OLED_FONT_WIDTH6The font width
OLED_FONT_HEIGHT8The font height (untested)
OLED_ICOLED_IC_SSD1306Set to OLED_IC_SH1106 or OLED_IC_SH1107 if the corresponding controller chip is used.
OLED_FADE_OUTNot definedEnables fade out animation. Use together with OLED_TIMEOUT.
OLED_FADE_OUT_INTERVAL0The speed of fade out animation, from 0 to 15. Larger values are slower.
OLED_SCROLL_TIMEOUT0Scrolls the OLED screen after 0ms of OLED inactivity. Helps reduce OLED Burn-in. Set to 0 to disable.
OLED_SCROLL_TIMEOUT_RIGHTNot definedScroll timeout direction is right when defined, left when undefined.
OLED_TIMEOUT60000Turns off the OLED screen after 60000ms of screen update inactivity. Helps reduce OLED Burn-in. Set to 0 to disable.
OLED_UPDATE_INTERVAL0 (50 for split keyboards)Set the time interval for updating the OLED display in ms. This will improve the matrix scan rate.
OLED_UPDATE_PROCESS_LIMIT1Set the number of dirty blocks to render per loop. Increasing may degrade performance.

I2C Configuration

DefineDefaultDescription
OLED_DISPLAY_ADDRESS0x3CThe i2c address of the OLED Display

SPI Configuration

DefineDefaultDescription
OLED_DC_PINRequiredThe pin used for the DC connection of the OLED Display.
OLED_CS_PINRequiredThe pin used for the CS connection of the OLED Display.
OLED_RST_PINNot definedThe pin used for the RST connection of the OLED Display (may be left undefined if the RST pin is not connected).
OLED_SPI_MODE3 (default)The SPI Mode for the OLED Display (not typically changed).
OLED_SPI_DIVISOR2 (default)The SPI Multiplier to use for the OLED Display.

128x64 & Custom sized OLED Displays

The default display size for this feature is 128x32, and the defaults are set with that in mind. However, there are a number of additional presets for common sizes that we have added. You can define one of these values to use the presets. If your display doesn't match one of these presets, you can define OLED_DISPLAY_CUSTOM to manually specify all of the values.

DefineDefaultDescription
OLED_DISPLAY_128X64Not definedChanges the display defines for use with 128x64 displays.
OLED_DISPLAY_64X32Not definedChanges the display defines for use with 64x32 displays.
OLED_DISPLAY_64X48Not definedChanges the display defines for use with 64x48 displays.
OLED_DISPLAY_64X128Not definedChanges the display defines for use with 64x128 displays.
OLED_DISPLAY_128X128Not definedChanges the display defines for use with 128x128 displays.
OLED_DISPLAY_CUSTOMNot definedChanges the display defines for use with custom displays.
Requires user to implement the below defines.

WARNING

64x128 and 128x128 displays default to the SH1107 IC type, as these heights are not supported by the other IC types.

DefineDefaultDescription
OLED_DISPLAY_WIDTH128The width of the OLED display.
OLED_DISPLAY_HEIGHT32The height of the OLED display.
OLED_MATRIX_SIZE512The local buffer size to allocate.
(OLED_DISPLAY_HEIGHT / 8 * OLED_DISPLAY_WIDTH).
OLED_BLOCK_TYPEuint16_tThe unsigned integer type to use for dirty rendering.
OLED_BLOCK_COUNT16The number of blocks the display is divided into for dirty rendering.
(sizeof(OLED_BLOCK_TYPE) * 8).
OLED_BLOCK_SIZE32The size of each block for dirty rendering
(OLED_MATRIX_SIZE / OLED_BLOCK_COUNT).
OLED_COM_PINSCOM_PINS_SEQHow the SSD1306 chip maps it's memory to display.
Options are COM_PINS_SEQ, COM_PINS_ALT, COM_PINS_SEQ_LR, & COM_PINS_ALT_LR.
OLED_COM_PIN_COUNTNot definedNumber of COM pins supported by the controller.
If not defined, the value appropriate for the defined OLED_IC is used.
OLED_COM_PIN_OFFSET0Number of the first COM pin used by the OLED matrix.
OLED_SOURCE_MAP{ 0, ... N }Precalculated source array to use for mapping source buffer to target OLED memory in 90 degree rendering.
OLED_TARGET_MAP{ 24, ... N }Precalculated target array to use for mapping source buffer to target OLED memory in 90 degree rendering.

90 Degree Rotation - Technical Mumbo Jumbo

c
// OLED Rotation enum values are flags\ntypedef enum {\n    OLED_ROTATION_0   = 0,\n    OLED_ROTATION_90  = 1,\n    OLED_ROTATION_180 = 2,\n    OLED_ROTATION_270 = 3, // OLED_ROTATION_90 | OLED_ROTATION_180\n} oled_rotation_t;

OLED displays driven by SSD1306, SH1106 or SH1107 drivers only natively support in hardware 0 degree and 180 degree rendering. This feature is done in software and not free. Using this feature will increase the time to calculate what data to send over i2c to the OLED. If you are strapped for cycles, this can cause keycodes to not register. In testing however, the rendering time on an ATmega32U4 board only went from 2ms to 5ms and keycodes not registering was only noticed once we hit 15ms.

90 degree rotation is achieved by using bitwise operations to rotate each 8 block of memory and uses two precalculated arrays to remap buffer memory to OLED memory. The memory map defines are precalculated for remap performance and are calculated based on the display height, width, and block size. For example, in the 128x32 implementation with a uint8_t block type, we have a 64 byte block size. This gives us eight 8 byte blocks that need to be rotated and rendered. The OLED renders horizontally two 8 byte blocks before moving down a page, e.g:

01
23
45
67

However the local buffer is stored as if it was Height x Width display instead of Width x Height, e.g:

37
26
15
04

So those precalculated arrays just index the memory offsets in the order in which each one iterates its data.

Rotation on SH1106 and SH1107 is noticeably less efficient than on SSD1306, because these controllers do not support the “horizontal addressing mode”, which allows transferring the data for the whole rotated block at once; instead, separate address setup commands for every page in the block are required. The screen refresh time for SH1107 is therefore about 45% higher than for a same size screen with SSD1306 when using STM32 MCUs (on AVR the slowdown is about 20%, because the code which actually rotates the bitmap consumes more time).

OLED API

c
// OLED Rotation enum values are flags\ntypedef enum {\n    OLED_ROTATION_0   = 0,\n    OLED_ROTATION_90  = 1,\n    OLED_ROTATION_180 = 2,\n    OLED_ROTATION_270 = 3, // OLED_ROTATION_90 | OLED_ROTATION_180\n} oled_rotation_t;\n\n// Initialize the oled display, rotating the rendered output based on the define passed in.\n// Returns true if the OLED was initialized successfully\nbool oled_init(oled_rotation_t rotation);\n\n// Called at the start of oled_init, weak function overridable by the user\n// rotation - the value passed into oled_init\n// Return new oled_rotation_t if you want to override default rotation\noled_rotation_t oled_init_kb(oled_rotation_t rotation);\noled_rotation_t oled_init_user(oled_rotation_t rotation);\n\n// Send commands/data to screen\nbool oled_send_cmd(const uint8_t *data, uint16_t size);\nbool oled_send_cmd_P(const uint8_t *data, uint16_t size);\nbool oled_send_data(const uint8_t *data, uint16_t size);\n\n// Clears the display buffer, resets cursor position to 0, and sets the buffer to dirty for rendering\nvoid oled_clear(void);\n\n// Alias to oled_render_dirty to avoid a change in api.\n#define oled_render() oled_render_dirty(false)\n\n// Renders all dirty blocks to the display at one time or a subset depending on the value of\n// all.\nvoid oled_render_dirty(bool all);\n\n// Moves cursor to character position indicated by column and line, wraps if out of bounds\n// Max column denoted by 'oled_max_chars()' and max lines by 'oled_max_lines()' functions\nvoid oled_set_cursor(uint8_t col, uint8_t line);\n\n// Advances the cursor to the next page, writing ' ' if true\n// Wraps to the beginning when out of bounds\nvoid oled_advance_page(bool clearPageRemainder);\n\n// Moves the cursor forward 1 character length\n// Advance page if there is not enough room for the next character\n// Wraps to the beginning when out of bounds\nvoid oled_advance_char(void);\n\n// Writes a single character to the buffer at current cursor position\n// Advances the cursor while writing, inverts the pixels if true\n// Main handler that writes character data to the display buffer\nvoid oled_write_char(const char data, bool invert);\n\n// Writes a string to the buffer at current cursor position\n// Advances the cursor while writing, inverts the pixels if true\nvoid oled_write(const char *data, bool invert);\n\n// Writes a string to the buffer at current cursor position\n// Advances the cursor while writing, inverts the pixels if true\n// Advances the cursor to the next page, wiring ' ' to the remainder of the current page\nvoid oled_write_ln(const char *data, bool invert);\n\n// Pans the buffer to the right (or left by passing true) by moving contents of the buffer\n// Useful for moving the screen in preparation for new drawing\nvoid oled_pan(bool left);\n\n// Returns a pointer to the requested start index in the buffer plus remaining\n// buffer length as struct\noled_buffer_reader_t oled_read_raw(uint16_t start_index);\n\n// Writes a string to the buffer at current cursor position\nvoid oled_write_raw(const char *data, uint16_t size);\n\n// Writes a single byte into the buffer at the specified index\nvoid oled_write_raw_byte(const char data, uint16_t index);\n\n// Sets a specific pixel on or off\n// Coordinates start at top-left and go right and down for positive x and y\nvoid oled_write_pixel(uint8_t x, uint8_t y, bool on);\n\n#if defined(__AVR__)\n// Writes a PROGMEM string to the buffer at current cursor position\n// Advances the cursor while writing, inverts the pixels if true\n// Remapped to call 'void oled_write(const char *data, bool invert);' on ARM\nvoid oled_write_P(const char *data, bool invert);\n\n// Writes a PROGMEM string to the buffer at current cursor position\n// Advances the cursor while writing, inverts the pixels if true\n// Advances the cursor to the next page, wiring ' ' to the remainder of the current page\n// Remapped to call 'void oled_write_ln(const char *data, bool invert);' on ARM\nvoid oled_write_ln_P(const char *data, bool invert);\n\n// Writes a PROGMEM string to the buffer at current cursor position\nvoid oled_write_raw_P(const char *data, uint16_t size);\n#else\n# define oled_write_P(data, invert) oled_write(data, invert)\n# define oled_write_ln_P(data, invert) oled_write_ln(data, invert)\n# define oled_write_raw_P(data, size) oled_write_raw(data, size)\n#endif // defined(__AVR__)\n\n// Can be used to manually turn on the screen if it is off\n// Returns true if the screen was on or turns on\nbool oled_on(void);\n\n// Can be used to manually turn off the screen if it is on\n// Returns true if the screen was off or turns off\nbool oled_off(void);\n\n// Returns true if the oled is currently on, false if it is\n// not\nbool is_oled_on(void);\n\n// Sets the brightness level of the display\nuint8_t oled_set_brightness(uint8_t level);\n\n// Gets the current brightness level of the display\nuint8_t oled_get_brightness(void);\n\n// Basically it's oled_render, but with timeout management and oled_task_user calling!\nvoid oled_task(void);\n\n// Called at the start of oled_task, weak function overridable by the user\nbool oled_task_kb(void);\nbool oled_task_user(void);\n\n// Set the specific 8 lines rows of the screen to scroll.\n// 0 is the default for start, and 7 for end, which is the entire\n// height of the screen.  For 128x32 screens, rows 4-7 are not used.\nvoid oled_scroll_set_area(uint8_t start_line, uint8_t end_line);\n\n// Sets scroll speed, 0-7, fastest to slowest. Default is three.\n// Does not take effect until scrolling is either started or restarted\n// the ssd1306 supports 8 speeds with the delay\n// listed below between each frame of the scrolling effect\n// 0=2, 1=3, 2=4, 3=5, 4=25, 5=64, 6=128, 7=256\nvoid oled_scroll_set_speed(uint8_t speed);\n\n// Begin scrolling the entire display right\n// Returns true if the screen was scrolling or starts scrolling\n// NOTE: display contents cannot be changed while scrolling\nbool oled_scroll_right(void);\n\n// Begin scrolling the entire display left\n// Returns true if the screen was scrolling or starts scrolling\n// NOTE: display contents cannot be changed while scrolling\nbool oled_scroll_left(void);\n\n// Turns off display scrolling\n// Returns true if the screen was not scrolling or stops scrolling\nbool oled_scroll_off(void);\n\n// Returns true if the oled is currently scrolling, false if it is\n// not\nbool is_oled_scrolling(void);\n\n// Inverts the display\n// Returns true if the screen was or is inverted\nbool oled_invert(bool invert);\n\n// Returns the maximum number of characters that will fit on a line\nuint8_t oled_max_chars(void);\n\n// Returns the maximum number of lines that will fit on the OLED\nuint8_t oled_max_lines(void);

WARNING

Scrolling is unsupported on the SH1106 and SH1107.

WARNING

Scrolling does not work properly on the SSD1306 if the display width is smaller than 128.

SSD1306.h Driver Conversion Guide

Old APIRecommended New API
struct CharacterMatrixremoved - delete all references
iota_gfx_initoled_init
iota_gfx_onoled_on
iota_gfx_offoled_off
iota_gfx_flusholed_render
iota_gfx_write_charoled_write_char
iota_gfx_writeoled_write
iota_gfx_write_Poled_write_P
iota_gfx_clear_screenoled_clear
matrix_clearremoved - delete all references
matrix_write_char_inneroled_write_char
matrix_write_charoled_write_char
matrix_writeoled_write
matrix_write_lnoled_write_ln
matrix_write_Poled_write_P
matrix_write_ln_Poled_write_ln_P
matrix_renderoled_render
iota_gfx_taskoled_task
iota_gfx_task_useroled_task_user
', 58); diff --git a/assets/features_oled_driver.md.D9wJVdL1.lean.js b/assets/features_oled_driver.md.CGlp2h0e.lean.js similarity index 91% rename from assets/features_oled_driver.md.D9wJVdL1.lean.js rename to assets/features_oled_driver.md.CGlp2h0e.lean.js index 7e6b97b2c90..ba4e2e9126e 100644 --- a/assets/features_oled_driver.md.D9wJVdL1.lean.js +++ b/assets/features_oled_driver.md.CGlp2h0e.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"OLED Driver","description":"","frontmatter":{},"headers":[],"relativePath":"features/oled_driver.md","filePath":"features/oled_driver.md"}'); const _sfc_main = { name: "features/oled_driver.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 58); diff --git a/assets/features_os_detection.md.DZKTWvSd.js b/assets/features_os_detection.md.DX1dyQDp.js similarity index 99% rename from assets/features_os_detection.md.DZKTWvSd.js rename to assets/features_os_detection.md.DX1dyQDp.js index 274abbfd0a4..bca07d2bde6 100644 --- a/assets/features_os_detection.md.DZKTWvSd.js +++ b/assets/features_os_detection.md.DX1dyQDp.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"OS Detection","description":"","frontmatter":{},"headers":[],"relativePath":"features/os_detection.md","filePath":"features/os_detection.md"}'); const _sfc_main = { name: "features/os_detection.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

OS Detection

This feature makes a best guess at the host OS based on OS specific behavior during USB setup. It may not always get the correct OS, and shouldn't be relied on as for critical functionality.

Using it you can have OS specific key mappings or combos which work differently on different devices.

It is available for keyboards which use ChibiOS, LUFA and V-USB.

Usage

In your rules.mk add:

make
OS_DETECTION_ENABLE = yes

It will automatically include the required headers file. It declares os_variant_t detected_host_os(void); which you can call to get detected OS.

It returns one of the following values:

c
enum {\n    OS_UNSURE,\n    OS_LINUX,\n    OS_WINDOWS,\n    OS_MACOS,\n    OS_IOS,\n} os_variant_t;

TIP

Note that it takes some time after firmware is booted to detect the OS.

This time is quite short, probably hundreds of milliseconds, but this data may be not ready in keyboard and layout setup functions which run very early during firmware startup.

Callbacks

If you want to perform custom actions when the OS is detected, then you can use the process_detected_host_os_kb function on the keyboard level source file, or process_detected_host_os_user function in the user keymap.c.

c
bool process_detected_host_os_kb(os_variant_t detected_os) {\n    if (!process_detected_host_os_user(detected_os)) {\n        return false;\n    }\n    switch (detected_os) {\n        case OS_MACOS:\n        case OS_IOS:\n            rgb_matrix_set_color_all(RGB_WHITE);\n            break;\n        case OS_WINDOWS:\n            rgb_matrix_set_color_all(RGB_BLUE);\n            break;\n        case OS_LINUX:\n            rgb_matrix_set_color_all(RGB_ORANGE);\n            break;\n        case OS_UNSURE:\n            rgb_matrix_set_color_all(RGB_RED);\n            break;\n    }\n    \n    return true;\n}

OS detection stability

The OS detection is currently handled while the USB device descriptor is being assembled. The process is done in steps, generating a number of intermediate results until it stabilizes. We therefore resort to debouncing the result until it has been stable for a given amount of milliseconds. This amount can be configured, in case your board is not stable within the default debouncing time of 200ms.

KVM and USB switches

Some KVM and USB switches may not trigger the USB controller on the keyboard to fully reset upon switching machines. If your keyboard does not redetect the OS in this situation, you can force the keyboard to reset when the USB initialization event is detected, forcing the USB controller to be reconfigured.

Configuration Options

Debug

If OS is guessed incorrectly, you may want to collect data about USB setup packets to refine the detection logic.

To do so in your config.h add:

c
#define OS_DETECTION_DEBUG_ENABLE

And in your rules.mk add:

make
CONSOLE_ENABLE = yes

And also include "os_detection.h" in your keymap.c.

Then you can define custom keycodes to store data about USB setup packets in EEPROM (persistent memory) and to print it later on host where you can run qmk console:

c
enum custom_keycodes {\n    STORE_SETUPS = SAFE_RANGE,\n    PRINT_SETUPS,\n};\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n    switch (keycode) {\n        case STORE_SETUPS:\n            if (record->event.pressed) {\n                store_setups_in_eeprom();\n            }\n            return false;\n        case PRINT_SETUPS:\n            if (record->event.pressed) {\n                print_stored_setups();\n            }\n            return false;\n    }\n}

Then please open an issue on Github with this information and tell what OS was not detected correctly and if you have any intermediate devices between keyboard and your computer.

Credits

Original idea is coming from FingerprintUSBHost project.

', 33); diff --git a/assets/features_os_detection.md.DZKTWvSd.lean.js b/assets/features_os_detection.md.DX1dyQDp.lean.js similarity index 91% rename from assets/features_os_detection.md.DZKTWvSd.lean.js rename to assets/features_os_detection.md.DX1dyQDp.lean.js index 15f9ff3c542..0f6fd786d1d 100644 --- a/assets/features_os_detection.md.DZKTWvSd.lean.js +++ b/assets/features_os_detection.md.DX1dyQDp.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"OS Detection","description":"","frontmatter":{},"headers":[],"relativePath":"features/os_detection.md","filePath":"features/os_detection.md"}'); const _sfc_main = { name: "features/os_detection.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 33); diff --git a/assets/features_pointing_device.md.DP6-XwL6.js b/assets/features_pointing_device.md.Birc1w-6.js similarity index 99% rename from assets/features_pointing_device.md.DP6-XwL6.js rename to assets/features_pointing_device.md.Birc1w-6.js index 86273d9bb2f..d352ea6bfc1 100644 --- a/assets/features_pointing_device.md.DP6-XwL6.js +++ b/assets/features_pointing_device.md.Birc1w-6.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Pointing Device","description":"","frontmatter":{},"headers":[],"relativePath":"features/pointing_device.md","filePath":"features/pointing_device.md"}'); const _sfc_main = { name: "features/pointing_device.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Pointing Device

Pointing Device is a generic name for a feature intended to be generic: moving the system pointer around. There are certainly other options for it - like mousekeys - but this aims to be easily modifiable and hardware driven. You can implement custom keys to control functionality, or you can gather information from other peripherals and insert it directly here - let QMK handle the processing for you.

To enable Pointing Device, add the following line in your rules.mk and specify one of the driver options below.

make
POINTING_DEVICE_ENABLE = yes

Sensor Drivers

There are a number of sensors that are supported by default. Note that only one sensor can be enabled by POINTING_DEVICE_DRIVER at a time. If you need to enable more than one sensor, then you need to implement it manually, using the custom driver.

ADNS 5050 Sensor

To use the ADNS 5050 sensor, add this to your rules.mk

make
POINTING_DEVICE_DRIVER = adns5050

The ADNS 5050 sensor uses a serial type protocol for communication, and requires an additional light source.

Setting (config.h)DescriptionDefault
ADNS5050_SCLK_PIN(Required) The pin connected to the clock pin of the sensor.POINTING_DEVICE_SCLK_PIN
ADNS5050_SDIO_PIN(Required) The pin connected to the data pin of the sensor.POINTING_DEVICE_SDIO_PIN
ADNS5050_CS_PIN(Required) The pin connected to the Chip Select pin of the sensor.POINTING_DEVICE_CS_PIN

The CPI range is 125-1375, in increments of 125. Defaults to 500 CPI.

ADNS 9800 Sensor

To use the ADNS 9800 sensor, add this to your rules.mk

make
POINTING_DEVICE_DRIVER = adns9800

The ADNS 9800 is an SPI driven optical sensor, that uses laser output for surface tracking.

Setting (config.h)DescriptionDefault
ADNS9800_CLOCK_SPEED(Optional) Sets the clock speed that the sensor runs at.2000000
ADNS9800_SPI_LSBFIRST(Optional) Sets the Least/Most Significant Byte First setting for SPI.false
ADNS9800_SPI_MODE(Optional) Sets the SPI Mode for the sensor.3
ADNS9800_SPI_DIVISOR(Optional) Sets the SPI Divisor used for SPI communication.varies
ADNS9800_CS_PIN(Required) Sets the Chip Select pin connected to the sensor.POINTING_DEVICE_CS_PIN

The CPI range is 800-8200, in increments of 200. Defaults to 1800 CPI.

Analog Joystick

To use an analog joystick to control the pointer, add this to your rules.mk

make
POINTING_DEVICE_DRIVER = analog_joystick

The Analog Joystick is an analog (ADC) driven sensor. There are a variety of joysticks that you can use for this.

Setting (config.h)DescriptionDefault
ANALOG_JOYSTICK_X_AXIS_PIN(Required) The pin used for the vertical/X axis.not defined
ANALOG_JOYSTICK_Y_AXIS_PIN(Required) The pin used for the horizontal/Y axis.not defined
ANALOG_JOYSTICK_AXIS_MIN(Optional) Sets the lower range to be considered movement.0
ANALOG_JOYSTICK_AXIS_MAX(Optional) Sets the upper range to be considered movement.1023
ANALOG_JOYSTICK_AUTO_AXIS(Optional) Sets ranges to be considered movement automatically.not defined
ANALOG_JOYSTICK_SPEED_REGULATOR(Optional) The divisor used to slow down movement. (lower makes it faster)20
ANALOG_JOYSTICK_READ_INTERVAL(Optional) The interval in milliseconds between reads.10
ANALOG_JOYSTICK_SPEED_MAX(Optional) The maximum value used for motion.2
ANALOG_JOYSTICK_CLICK_PIN(Optional) The pin wired up to the press switch of the analog stick.not defined
ANALOG_JOYSTICK_WEIGHTS(Optional) Use custom weights for lever positions.not defined
ANALOG_JOYSTICK_CUTOFF(Optional) Cut off movement when joystick returns to start position.not defined

If ANALOG_JOYSTICK_AUTO_AXIS is used, then ANALOG_JOYSTICK_AXIS_MIN and ANALOG_JOYSTICK_AXIS_MAX are ignored.

By default analog joystick implementation uses x^2 weighting for lever positions. ANALOG_JOYSTICK_WEIGHTS allows to experiment with different configurations that might feel better.

E.g. This is weights for ((x-0.4)^3+0.064)/0.282:

c
#define ANALOG_JOYSTICK_WEIGHTS {0,2,4,5,7,8,9,10,12,13,14,15,15,16,17,18,18,19,19,20,20,21,21,21,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,25,25,25,26,26,26,27,28,28,29,29,30,31,32,33,34,35,36,37,38,40,41,43,44,46,48,49,51,53,56,58,60,62,65,68,70,73,76,79,82,85,89,92,96,100}

You can use following JS code to generate weights for different formulas:

js
JSON.stringify(Array.from(Array(101).keys()).map(x => Math.ceil((((x/100-0.4)**3+0.064)/0.282*100))))

Azoteq IQS5XX Trackpad

To use a Azoteq IQS5XX trackpad, add this to your rules.mk:

make
POINTING_DEVICE_DRIVER = azoteq_iqs5xx

This supports the IQS525, IQS550 and IQS572 controllers, with the latter two being used in the TPS43 and TPS65 trackpads.

Device settings

Specific device profiles are provided which set the required values for dimensions and resolution.

SettingDescription
AZOTEQ_IQS5XX_TPS43(Pick One) Sets resolution/mm to TPS43 specifications.
AZOTEQ_IQS5XX_TPS65(Pick One) Sets resolution/mm to TPS65 specifications.

TIP

If using one of the above defines you can skip to gesture settings.

SettingDescriptionDefault
AZOTEQ_IQS5XX_WIDTH_MM(Required) Width of the trackpad sensor in millimeters.not defined
AZOTEQ_IQS5XX_HEIGHT_MM(Required) Height of the trackpad sensor in millimeters.not defined
AZOTEQ_IQS5XX_RESOLUTION_X(Optional) Specify X resolution for CPI calculation.not defined
AZOTEQ_IQS5XX_RESOLUTION_Y(Optional) Specify Y resolution for CPI calculation.not defined

AZOTEQ_IQS5XX_RESOLUTION_X/Y fall back resolutions are provided within the driver based on controller model.

I2C SettingDescriptionDefault
AZOTEQ_IQS5XX_ADDRESS(Optional) Sets the I2C Address for the Azoteq trackpad0xE8
AZOTEQ_IQS5XX_TIMEOUT_MS(Optional) The timeout for i2c communication with in milliseconds.10

Gesture settings

SettingDescriptionDefault
AZOTEQ_IQS5XX_TAP_ENABLE(Optional) Enable single finger tap. (Left click)true
AZOTEQ_IQS5XX_TWO_FINGER_TAP_ENABLE(Optional) Enable two finger tap. (Right click)true
AZOTEQ_IQS5XX_PRESS_AND_HOLD_ENABLE(Optional) Emulates holding left click to select text.false
AZOTEQ_IQS5XX_SWIPE_X_ENABLE(Optional) Enable swipe gestures X+ (Mouse Button 5) / X- (Mouse Button 4)false
AZOTEQ_IQS5XX_SWIPE_Y_ENABLE(Optional) Enable swipe gestures Y+ (Mouse Button 3) / Y- (Mouse Button 6)false
AZOTEQ_IQS5XX_ZOOM_ENABLE(Optional) Enable zoom gestures Zoom Out (Mouse Button 7) / Zoom In (Mouse Button 8)false
AZOTEQ_IQS5XX_SCROLL_ENABLE(Optional) Enable scrolling using two fingers.true
AZOTEQ_IQS5XX_TAP_TIME(Optional) Maximum time in ms for tap to be registered.150
AZOTEQ_IQS5XX_TAP_DISTANCE(Optional) Maximum deviation in pixels before single tap is no longer valid.25
AZOTEQ_IQS5XX_HOLD_TIME(Optional) Minimum time in ms for press and hold.300
AZOTEQ_IQS5XX_SWIPE_INITIAL_TIME(Optional) Maximum time to travel initial distance before swipe is registered.150
AZOTEQ_IQS5XX_SWIPE_INITIAL_DISTANCE(Optional) Minimum travel in pixels before swipe is registered.300
AZOTEQ_IQS5XX_SWIPE_CONSECUTIVE_TIME(Optional) Maximum time to travel consecutive distance before swipe is registered.0
AZOTEQ_IQS5XX_SWIPE_CONSECUTIVE_DISTANCE(Optional) Minimum travel in pixels before a consecutive swipe is registered.2000
AZOTEQ_IQS5XX_SCROLL_INITIAL_DISTANCE(Optional) Minimum travel in pixels before scroll is registered.50
AZOTEQ_IQS5XX_ZOOM_INITIAL_DISTANCE(Optional) Minimum travel in pixels before zoom is registered.50
AZOTEQ_IQS5XX_ZOOM_CONSECUTIVE_DISTANCE(Optional) Maximum time to travel zoom distance before zoom is registered.25

Rotation settings

SettingDescriptionDefault
AZOTEQ_IQS5XX_ROTATION_90(Optional) Configures hardware for 90 degree rotation.not defined
AZOTEQ_IQS5XX_ROTATION_180(Optional) Configures hardware for 180 degree rotation.not defined
AZOTEQ_IQS5XX_ROTATION_270(Optional) Configures hardware for 270 degree rotation.not defined

Cirque Trackpad

To use the Cirque Trackpad sensor, add this to your rules.mk:

make
POINTING_DEVICE_DRIVER = cirque_pinnacle_i2c

or

make
POINTING_DEVICE_DRIVER = cirque_pinnacle_spi

This supports the Cirque Pinnacle 1CA027 Touch Controller, which is used in the TM040040, TM035035 and the TM023023 trackpads. These are I2C or SPI compatible, and both configurations are supported.

Common settings

SettingDescriptionDefault
CIRQUE_PINNACLE_DIAMETER_MM(Optional) Diameter of the trackpad sensor in millimeters.40
CIRQUE_PINNACLE_ATTENUATION(Optional) Sets the attenuation of the sensor data.EXTREG__TRACK_ADCCONFIG__ADC_ATTENUATE_4X
CIRQUE_PINNACLE_CURVED_OVERLAY(Optional) Applies settings tuned for curved overlay.not defined
CIRQUE_PINNACLE_POSITION_MODE(Optional) Mode of operation.not defined
CIRQUE_PINNACLE_SKIP_SENSOR_CHECK(Optional) Skips sensor presence checknot defined

CIRQUE_PINNACLE_ATTENUATION is a measure of how much data is suppressed in regards to sensitivity. The higher the attenuation, the less sensitive the touchpad will be.

Default attenuation is set to 4X, although if you are using a thicker overlay (such as the curved overlay) you will want a lower attenuation such as 2X. The possible values are:

CIRQUE_PINNACLE_POSITION_MODE can be CIRQUE_PINNACLE_ABSOLUTE_MODE or CIRQUE_PINNACLE_RELATIVE_MODE. Modes differ in supported features/gestures.

I2C SettingDescriptionDefault
CIRQUE_PINNACLE_ADDR(Required) Sets the I2C Address for the Cirque Trackpad0x2A
CIRQUE_PINNACLE_TIMEOUT(Optional) The timeout for i2c communication with the trackpad in milliseconds.20
SPI SettingDescriptionDefault
CIRQUE_PINNACLE_CLOCK_SPEED(Optional) Sets the clock speed that the sensor runs at.1000000
CIRQUE_PINNACLE_SPI_LSBFIRST(Optional) Sets the Least/Most Significant Byte First setting for SPI.false
CIRQUE_PINNACLE_SPI_MODE(Optional) Sets the SPI Mode for the sensor.1
CIRQUE_PINNACLE_SPI_DIVISOR(Optional) Sets the SPI Divisor used for SPI communication.varies
CIRQUE_PINNACLE_SPI_CS_PIN(Required) Sets the Chip Select pin connected to the sensor.POINTING_DEVICE_CS_PIN

Default Scaling is 1024. Actual CPI depends on trackpad diameter.

Also see the POINTING_DEVICE_TASK_THROTTLE_MS, which defaults to 10ms when using Cirque Pinnacle, which matches the internal update rate of the position registers (in standard configuration). Advanced configuration for pen/stylus usage might require lower values.

Absolute mode settings

SettingDescriptionDefault
CIRQUE_PINNACLE_X_LOWER(Optional) The minimum reachable X value on the sensor.127
CIRQUE_PINNACLE_X_UPPER(Optional) The maximum reachable X value on the sensor.1919
CIRQUE_PINNACLE_Y_LOWER(Optional) The minimum reachable Y value on the sensor.63
CIRQUE_PINNACLE_Y_UPPER(Optional) The maximum reachable Y value on the sensor.1471
CIRQUE_PINNACLE_REACHABLE_CALIBRATION(Optional) Enable console messages to aide in calibrating above values.not defined

Absolute mode gestures

Gesture SettingDescriptionDefault
CIRQUE_PINNACLE_TAP_ENABLE(Optional) Enable tap to click. This currently only works on the master side.not defined
CIRQUE_PINNACLE_TAPPING_TERM(Optional) Length of time that a touch can be to be considered a tap.TAPPING_TERM/200
CIRQUE_PINNACLE_TOUCH_DEBOUNCE(Optional) Length of time that a touch can be to be considered a tap.TAPPING_TERM/200

POINTING_DEVICE_GESTURES_SCROLL_ENABLE in this mode enables circular scroll. Touch originating in outer ring can trigger scroll by moving along the perimeter. Near side triggers vertical scroll and far side triggers horizontal scroll.

Additionally, POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE is supported in this mode.

Relative mode gestures

Gesture Setting (config.h)DescriptionDefault
CIRQUE_PINNACLE_TAP_ENABLE(Optional) Enable tap to "left click". Works on both sides of a split keyboard.not defined
CIRQUE_PINNACLE_SECONDARY_TAP_ENABLE(Optional) Tap in upper right corner (half of the finger needs to be outside of the trackpad) of the trackpad will result in "right click". CIRQUE_PINNACLE_TAP_ENABLE must be enabled.not defined

Tapping term and debounce are not configurable in this mode since it's handled by trackpad internally.

POINTING_DEVICE_GESTURES_SCROLL_ENABLE in this mode enables side scroll. Touch originating on the right side can trigger vertical scroll (IntelliSense trackpad style).

PAW 3204 Sensor

To use the paw 3204 sensor, add this to your rules.mk

make
POINTING_DEVICE_DRIVER = paw3204

The paw 3204 sensor uses a serial type protocol for communication, and requires an additional light source.

Setting (config.h)DescriptionDefault
PAW3204_SCLK_PIN(Required) The pin connected to the clock pin of the sensor.POINTING_DEVICE_SCLK_PIN
PAW3204_SDIO_PIN(Required) The pin connected to the data pin of the sensor.POINTING_DEVICE_SDIO_PIN

The CPI range is 400-1600, with supported values of (400, 500, 600, 800, 1000, 1200 and 1600). Defaults to 1000 CPI.

Pimoroni Trackball

To use the Pimoroni Trackball module, add this to your rules.mk:

make
POINTING_DEVICE_DRIVER = pimoroni_trackball

The Pimoroni Trackball module is a I2C based breakout board with an RGB enable trackball.

Setting (config.h)DescriptionDefault
PIMORONI_TRACKBALL_ADDRESS(Required) Sets the I2C Address for the Pimoroni Trackball.0x0A
PIMORONI_TRACKBALL_TIMEOUT(Optional) The timeout for i2c communication with the trackball in milliseconds.100
PIMORONI_TRACKBALL_SCALE(Optional) The multiplier used to generate reports from the sensor.5
PIMORONI_TRACKBALL_DEBOUNCE_CYCLES(Optional) The number of scan cycles used for debouncing on the ball press.20
PIMORONI_TRACKBALL_ERROR_COUNT(Optional) Specifies the number of read/write errors until the sensor is disabled.10

PMW3320 Sensor

To use the PMW3320 sensor, add this to your rules.mk

make
POINTING_DEVICE_DRIVER = pmw3320

The PMW3320 sensor uses a serial type protocol for communication, and requires an additional light source (it could work without one, but expect it to be out of service early).

SettingDescriptionDefault
PMW3320_SCLK_PIN(Required) The pin connected to the clock pin of the sensor.POINTING_DEVICE_SCLK_PIN
PMW3320_SDIO_PIN(Required) The pin connected to the data pin of the sensor.POINTING_DEVICE_SDIO_PIN
PMW3320_CS_PIN(Required) The pin connected to the cable select pin of the sensor.POINTING_DEVICE_CS_PIN

The CPI range is 500-3500, in increments of 250. Defaults to 1000 CPI.

PMW 3360 and PMW 3389 Sensor

This drivers supports both the PMW 3360 and PMW 3389 sensor as well as multiple sensors of the same type per controller, so 2 can be attached at the same side for split keyboards (or unsplit keyboards).

To use the PMW 3360 sensor, add this to your rules.mk

make
POINTING_DEVICE_DRIVER = pmw3360

The CPI range is 100-12000, in increments of 100. Defaults to 1600 CPI.

To use the PMW 3389 sensor, add this to your rules.mk

make
POINTING_DEVICE_DRIVER = pmw3389

The CPI range is 50-16000, in increments of 50. Defaults to 2000 CPI.

Both PMW 3360 and PMW 3389 are SPI driven optical sensors, that use a built in IR LED for surface tracking. If you have different CS wiring on each half you can use PMW33XX_CS_PIN_RIGHT or PMW33XX_CS_PINS_RIGHT in combination with PMW33XX_CS_PIN or PMW33XX_CS_PINS to configure both sides independently. If _RIGHT values aren't provided, they default to be the same as the left ones.

Setting (config.h)DescriptionDefault
PMW33XX_CS_PIN(Required) Sets the Chip Select pin connected to the sensor.POINTING_DEVICE_CS_PIN
PMW33XX_CS_PINS(Alternative) Sets the Chip Select pins connected to multiple sensors.{PMW33XX_CS_PIN}
PMW33XX_CS_PIN_RIGHT(Optional) Sets the Chip Select pin connected to the sensor on the right half.PMW33XX_CS_PIN
PMW33XX_CS_PINS_RIGHT(Optional) Sets the Chip Select pins connected to multiple sensors on the right half.{PMW33XX_CS_PIN_RIGHT}
PMW33XX_CPI(Optional) Sets counts per inch sensitivity of the sensor.varies
PMW33XX_CLOCK_SPEED(Optional) Sets the clock speed that the sensor runs at.2000000
PMW33XX_SPI_DIVISOR(Optional) Sets the SPI Divisor used for SPI communication.varies
PMW33XX_LIFTOFF_DISTANCE(Optional) Sets the lift off distance at run time0x02
ROTATIONAL_TRANSFORM_ANGLE(Optional) Allows for the sensor data to be rotated +/- 127 degrees directly in the sensor.0

To use multiple sensors, instead of setting PMW33XX_CS_PIN you need to set PMW33XX_CS_PINS and also handle and merge the read from this sensor in user code. Note that different (per sensor) values of CPI, speed liftoff, rotational angle or flipping of X/Y is not currently supported.

c
// in config.h:\n#define PMW33XX_CS_PINS { B5, B6 }\n// in keyboard.c:\n#ifdef POINTING_DEVICE_ENABLE\nvoid pointing_device_init_kb(void) {\n    pmw33xx_init(1);         // index 1 is the second device.\n    pmw33xx_set_cpi(0, 800); // applies to first sensor\n    pmw33xx_set_cpi(1, 800); // applies to second sensor\n    pointing_device_init_user();\n}\n\n// Contains report from sensor #0 already, need to merge in from sensor #1\nreport_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {\n    pmw33xx_report_t report = pmw33xx_read_burst(1);\n    if (!report.motion.b.is_lifted && report.motion.b.is_motion) {\n// From quantum/pointing_device_drivers.c\n#define constrain_hid(amt) ((amt) < -127 ? -127 : ((amt) > 127 ? 127 : (amt)))\n        mouse_report.x = constrain_hid(mouse_report.x + report.delta_x);\n        mouse_report.y = constrain_hid(mouse_report.y + report.delta_y);\n    }\n    return pointing_device_task_user(mouse_report);\n}\n#endif

Custom Driver

If you have a sensor type that isn't supported above, a custom option is available by adding the following to your rules.mk

make
POINTING_DEVICE_DRIVER = custom

Using the custom driver will require implementing the following functions:

c
void           pointing_device_driver_init(void) {}\nreport_mouse_t pointing_device_driver_get_report(report_mouse_t mouse_report) { return mouse_report; }\nuint16_t       pointing_device_driver_get_cpi(void) { return 0; }\nvoid           pointing_device_driver_set_cpi(uint16_t cpi) {}

WARNING

Ideally, new sensor hardware should be added to drivers/sensors/ and quantum/pointing_device_drivers.c, but there may be cases where it's very specific to the hardware. So these functions are provided, just in case.

Common Configuration

SettingDescriptionDefault
MOUSE_EXTENDED_REPORT(Optional) Enables support for extended mouse reports. (-32767 to 32767, instead of just -127 to 127).not defined
POINTING_DEVICE_ROTATION_90(Optional) Rotates the X and Y data by 90 degrees.not defined
POINTING_DEVICE_ROTATION_180(Optional) Rotates the X and Y data by 180 degrees.not defined
POINTING_DEVICE_ROTATION_270(Optional) Rotates the X and Y data by 270 degrees.not defined
POINTING_DEVICE_INVERT_X(Optional) Inverts the X axis report.not defined
POINTING_DEVICE_INVERT_Y(Optional) Inverts the Y axis report.not defined
POINTING_DEVICE_MOTION_PIN(Optional) If supported, will only read from sensor if pin is active.not defined
POINTING_DEVICE_MOTION_PIN_ACTIVE_LOW(Optional) If defined then the motion pin is active-low.varies
POINTING_DEVICE_TASK_THROTTLE_MS(Optional) Limits the frequency that the sensor is polled for motion.not defined
POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE(Optional) Enable inertial cursor. Cursor continues moving after a flick gesture and slows down by kinetic friction.not defined
POINTING_DEVICE_GESTURES_SCROLL_ENABLE(Optional) Enable scroll gesture. The gesture that activates the scroll is device dependent.not defined
POINTING_DEVICE_CS_PIN(Optional) Provides a default CS pin, useful for supporting multiple sensor configs.not defined
POINTING_DEVICE_SDIO_PIN(Optional) Provides a default SDIO pin, useful for supporting multiple sensor configs.not defined
POINTING_DEVICE_SCLK_PIN(Optional) Provides a default SCLK pin, useful for supporting multiple sensor configs.not defined

WARNING

When using SPLIT_POINTING_ENABLE the POINTING_DEVICE_MOTION_PIN functionality is not supported and POINTING_DEVICE_TASK_THROTTLE_MS will default to 1. Increasing this value will increase transport performance at the cost of possible mouse responsiveness.

The POINTING_DEVICE_CS_PIN, POINTING_DEVICE_SDIO_PIN, and POINTING_DEVICE_SCLK_PIN provide a convenient way to define a single pin that can be used for an interchangeable sensor config. This allows you to have a single config, without defining each device. Each sensor allows for this to be overridden with their own defines.

WARNING

Any pointing device with a lift/contact status can integrate inertial cursor feature into its driver, controlled by POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE. e.g. PMW3360 can use Lift_Stat from Motion register. Note that POINTING_DEVICE_MOTION_PIN cannot be used with this feature; continuous polling of get_report() is needed to generate glide reports.

Split Keyboard Configuration

The following configuration options are only available when using SPLIT_POINTING_ENABLE see data sync options. The rotation and invert *_RIGHT options are only used with POINTING_DEVICE_COMBINED. If using POINTING_DEVICE_LEFT or POINTING_DEVICE_RIGHT use the common configuration above to configure your pointing device.

SettingDescriptionDefault
POINTING_DEVICE_LEFTPointing device on the left side (Required - pick one only)not defined
POINTING_DEVICE_RIGHTPointing device on the right side (Required - pick one only)not defined
POINTING_DEVICE_COMBINEDPointing device on both sides (Required - pick one only)not defined
POINTING_DEVICE_ROTATION_90_RIGHT(Optional) Rotates the X and Y data by 90 degrees.not defined
POINTING_DEVICE_ROTATION_180_RIGHT(Optional) Rotates the X and Y data by 180 degrees.not defined
POINTING_DEVICE_ROTATION_270_RIGHT(Optional) Rotates the X and Y data by 270 degrees.not defined
POINTING_DEVICE_INVERT_X_RIGHT(Optional) Inverts the X axis report.not defined
POINTING_DEVICE_INVERT_Y_RIGHT(Optional) Inverts the Y axis report.not defined

WARNING

If there is a _RIGHT configuration option or callback, the common configuration option will work for the left. For correct left/right detection you should setup a handedness option, EE_HANDS is usually a good option for an existing board that doesn't do handedness by hardware.

Callbacks and Functions

FunctionDescription
pointing_device_init_kb(void)Callback to allow for keyboard level initialization. Useful for additional hardware sensors.
pointing_device_init_user(void)Callback to allow for user level initialization. Useful for additional hardware sensors.
pointing_device_task_kb(mouse_report)Callback that sends sensor data, so keyboard code can intercept and modify the data. Returns a mouse report.
pointing_device_task_user(mouse_report)Callback that sends sensor data, so user code can intercept and modify the data. Returns a mouse report.
pointing_device_handle_buttons(buttons, pressed, button)Callback to handle hardware button presses. Returns a uint8_t.
pointing_device_get_cpi(void)Gets the current CPI/DPI setting from the sensor, if supported.
pointing_device_set_cpi(uint16_t)Sets the CPI/DPI, if supported.
pointing_device_get_report(void)Returns the current mouse report (as a report_mouse_t data structure).
pointing_device_set_report(mouse_report)Sets the mouse report to the assigned report_mouse_t data structured passed to the function.
pointing_device_send(void)Sends the current mouse report to the host system. Function can be replaced.
has_mouse_report_changed(new_report, old_report)Compares the old and new report_mouse_t data and returns true only if it has changed.
pointing_device_adjust_by_defines(mouse_report)Applies rotations and invert configurations to a raw mouse report.

Split Keyboard Callbacks and Functions

The combined functions below are only available when using SPLIT_POINTING_ENABLE and POINTING_DEVICE_COMBINED. The 2 callbacks pointing_device_task_combined_* replace the single sided equivalents above. See the combined pointing devices example

FunctionDescription
pointing_device_set_shared_report(mouse_report)Sets the shared mouse report to the assigned report_mouse_t data structured passed to the function.
pointing_device_set_cpi_on_side(bool, uint16_t)Sets the CPI/DPI of one side, if supported. Passing true will set the left and false the right
pointing_device_combine_reports(left_report, right_report)Returns a combined mouse_report of left_report and right_report (as a report_mouse_t data structure)
pointing_device_task_combined_kb(left_report, right_report)Callback, so keyboard code can intercept and modify the data. Returns a combined mouse report.
pointing_device_task_combined_user(left_report, right_report)Callback, so user code can intercept and modify. Returns a combined mouse report using pointing_device_combine_reports
pointing_device_adjust_by_defines_right(mouse_report)Applies right side rotations and invert configurations to a raw mouse report.

Manipulating Mouse Reports

The report_mouse_t (here "mouseReport") has the following properties:

To manually manipulate the mouse reports outside of the pointing_device_task_* functions, you can use:

When the mouse report is sent, the x, y, v, and h values are set to 0 (this is done in pointing_device_send(), which can be overridden to avoid this behavior). This way, button states persist, but movement will only occur once. For further customization, both pointing_device_init and pointing_device_task can be overridden.

Additionally, by default, pointing_device_send() will only send a report when the report has actually changed. This prevents it from continuously sending mouse reports, which will keep the host system awake. This behavior can be changed by creating your own pointing_device_send() function.

Also, you use the has_mouse_report_changed(new_report, old_report) function to check to see if the report has changed.

Examples

Custom Mouse Keycode

In this example, a custom key is used to click the mouse and scroll 127 units vertically and horizontally, then undo all of that when released - because that's a totally useful function.

c
case MS_SPECIAL:\n    report_mouse_t currentReport = pointing_device_get_report();\n    if (record->event.pressed) {\n        currentReport.v = 127;\n        currentReport.h = 127;\n        currentReport.buttons |= MOUSE_BTN1;  // this is defined in report.h\n    } else {\n        currentReport.v = -127;\n        currentReport.h = -127;\n        currentReport.buttons &= ~MOUSE_BTN1;\n    }\n    pointing_device_set_report(currentReport);\n    pointing_device_send();\n    break;

Recall that the mouse report is set to zero (except the buttons) whenever it is sent, so the scrolling would only occur once in each case.

Drag Scroll or Mouse Scroll

A very common implementation is to use the mouse movement to scroll instead of moving the cursor on the system. This uses the pointing_device_task_user callback to intercept and modify the mouse report before it's sent to the host system.

c
enum custom_keycodes {\n    DRAG_SCROLL = SAFE_RANGE,\n};\n\nbool set_scrolling = false;\n\nreport_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {\n    if (set_scrolling) {\n        mouse_report.h = mouse_report.x;\n        mouse_report.v = mouse_report.y;\n        mouse_report.x = 0;\n        mouse_report.y = 0;\n    }\n    return mouse_report;\n}\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n    if (keycode == DRAG_SCROLL && record->event.pressed) {\n        set_scrolling = !set_scrolling;\n    }\n    return true;\n}

This allows you to toggle between scrolling and cursor movement by pressing the DRAG_SCROLL key.

Advanced Drag Scroll

Sometimes, like with the Cirque trackpad, you will run into issues where the scrolling may be too fast.

Here is a slightly more advanced example of drag scrolling. You will be able to change the scroll speed based on the values in set in SCROLL_DIVISOR_H and SCROLL_DIVISOR_V. This bit of code is also set up so that instead of toggling the scrolling state with set_scrolling = !set_scrolling, the set_scrolling variable is set directly to record->event.pressed. This way, the drag scrolling will only be active while the DRAG_SCROLL button is held down.

c
enum custom_keycodes {\n    DRAG_SCROLL = SAFE_RANGE,\n};\n\nbool set_scrolling = false;\n\n// Modify these values to adjust the scrolling speed\n#define SCROLL_DIVISOR_H 8.0\n#define SCROLL_DIVISOR_V 8.0\n\n// Variables to store accumulated scroll values\nfloat scroll_accumulated_h = 0;\nfloat scroll_accumulated_v = 0;\n\n// Function to handle mouse reports and perform drag scrolling\nreport_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {\n    // Check if drag scrolling is active\n    if (set_scrolling) {\n        // Calculate and accumulate scroll values based on mouse movement and divisors\n        scroll_accumulated_h += (float)mouse_report.x / SCROLL_DIVISOR_H;\n        scroll_accumulated_v += (float)mouse_report.y / SCROLL_DIVISOR_V;\n\n        // Assign integer parts of accumulated scroll values to the mouse report\n        mouse_report.h = (int8_t)scroll_accumulated_h;\n        mouse_report.v = (int8_t)scroll_accumulated_v;\n\n        // Update accumulated scroll values by subtracting the integer parts\n        scroll_accumulated_h -= (int8_t)scroll_accumulated_h;\n        scroll_accumulated_v -= (int8_t)scroll_accumulated_v;\n\n        // Clear the X and Y values of the mouse report\n        mouse_report.x = 0;\n        mouse_report.y = 0;\n    }\n    return mouse_report;\n}\n\n// Function to handle key events and enable/disable drag scrolling\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n    switch (keycode) {\n        case DRAG_SCROLL:\n            // Toggle set_scrolling when DRAG_SCROLL key is pressed or released\n            set_scrolling = record->event.pressed;\n            break;\n        default:\n            break;\n    }\n    return true;\n}\n\n// Function to handle layer changes and disable drag scrolling when not in AUTO_MOUSE_DEFAULT_LAYER\nlayer_state_t layer_state_set_user(layer_state_t state) {\n    // Disable set_scrolling if the current layer is not the AUTO_MOUSE_DEFAULT_LAYER\n    if (get_highest_layer(state) != AUTO_MOUSE_DEFAULT_LAYER) {\n        set_scrolling = false;\n    }\n    return state;\n}

Split Examples

The following examples make use the SPLIT_POINTING_ENABLE functionality and show how to manipulate the mouse report for a scrolling mode.

Single Pointing Device

The following example will work with either POINTING_DEVICE_LEFT or POINTING_DEVICE_RIGHT and enables scrolling mode while on a particular layer.

c
\nstatic bool scrolling_mode = false;\n\nlayer_state_t layer_state_set_user(layer_state_t state) {\n    switch (get_highest_layer(state)) {\n        case _RAISE:  // If we're on the _RAISE layer enable scrolling mode\n            scrolling_mode = true;\n            pointing_device_set_cpi(2000);\n            break;\n        default:\n            if (scrolling_mode) {  // check if we were scrolling before and set disable if so\n                scrolling_mode = false;\n                pointing_device_set_cpi(8000);\n            }\n            break;\n    }\n    return state;\n}\n\nreport_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {\n    if (scrolling_mode) {\n        mouse_report.h = mouse_report.x;\n        mouse_report.v = mouse_report.y;\n        mouse_report.x = 0;\n        mouse_report.y = 0;\n    }\n    return mouse_report;\n}

Combined Pointing Devices

The following example requires POINTING_DEVICE_COMBINED and sets the left side pointing device to scroll only.

c
void keyboard_post_init_user(void) {\n    pointing_device_set_cpi_on_side(true, 1000); //Set cpi on left side to a low value for slower scrolling.\n    pointing_device_set_cpi_on_side(false, 8000); //Set cpi on right side to a reasonable value for mousing.\n}\n\nreport_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {\n    left_report.h = left_report.x;\n    left_report.v = left_report.y;\n    left_report.x = 0;\n    left_report.y = 0;\n    return pointing_device_combine_reports(left_report, right_report);\n}

Troubleshooting

If you are having issues with pointing device drivers debug messages can be enabled that will give you insights in the inner workings. To enable these add to your keyboards config.h file:

c
#define POINTING_DEVICE_DEBUG

TIP

The messages will be printed out to the CONSOLE output. For additional information, refer to Debugging/Troubleshooting QMK.


Automatic Mouse Layer

When using a pointing device combined with a keyboard the mouse buttons are often kept on a separate layer from the default keyboard layer, which requires pressing or holding a key to change layers before using the mouse. To make this easier and more efficient an additional pointing device feature may be enabled that will automatically activate a target layer as soon as the pointing device is active (in motion, mouse button pressed etc.) and deactivate the target layer after a set time.

Additionally if any key that is defined as a mouse key is pressed then the layer will be held as long as the key is pressed and the timer will be reset on key release. When a non-mouse key is pressed then the layer is deactivated early (with some exceptions see below). Mod, mod tap, and one shot mod keys are ignored (i.e. don't hold or activate layer but do not deactivate the layer either) when sending a modifier keycode (e.g. hold for mod tap) allowing for mod keys to be used with the mouse without activating the target layer when typing.

All of the standard layer keys (tap toggling, toggle, toggle on, one_shot, layer tap, layer mod) that activate the current target layer are uniquely handled to ensure they behave as expected (see layer key table below). The target layer that can be changed at any point during by calling the set_auto_mouse_layer(<new_target_layer>); function.

Behaviour of Layer keys that activate the target layer

Layer key as in keymap.cAuto Mouse specific behaviour
MO(<target_layer>)Treated as a mouse key holding the layer while pressed
LT(<target_layer>)When tapped will be treated as non mouse key and mouse key when held
LM(<target_layer>)Treated as a mouse key
TG(<target_layer>)Will set flag preventing target layer deactivation or removal until pressed again
TO(<target_layer>)Same as TG(<target_layer>)
TT(<target_layer>)Treated as a mouse key when tap.count < TAPPING_TOGGLE and as TG when tap.count == TAPPING_TOGGLE
DF(<target_layer>)Skips auto mouse key processing similar to mod keys
OSL(<target_layer>)Skips, but if current one shot layer is the target layer then it will prevent target layer deactivation or removal

How to enable:

c
// in config.h:\n#define POINTING_DEVICE_AUTO_MOUSE_ENABLE\n// only required if not setting mouse layer elsewhere\n#define AUTO_MOUSE_DEFAULT_LAYER <index of your mouse layer>\n\n// in keymap.c:\nvoid pointing_device_init_user(void) {\n    set_auto_mouse_layer(<mouse_layer>); // only required if AUTO_MOUSE_DEFAULT_LAYER is not set to index of <mouse_layer>\n    set_auto_mouse_enable(true);         // always required before the auto mouse feature will work\n}

Because the auto mouse feature can be disabled/enabled during runtime and starts as disabled by default it must be enabled by calling set_auto_mouse_enable(true); somewhere in firmware before the feature will work.
Note: for setting the target layer during initialization either setting AUTO_MOUSE_DEFAULT_LAYER in config.h or calling set_auto_mouse_layer(<mouse_layer>) can be used.

How to Customize:

There are a few ways to control the auto mouse feature with both config.h options and functions for controlling it during runtime.

config.h Options:

DefineDescriptionRangeUnitsDefault
POINTING_DEVICE_AUTO_MOUSE_ENABLE(Required) Enables auto mouse layer featureNoneNot defined
AUTO_MOUSE_DEFAULT_LAYER(Optional) Index of layer to use as default target layer0 - LAYER_MAXuint8_t1
AUTO_MOUSE_TIME(Optional) Time layer remains active after activationideally (250-1000)ms650 ms
AUTO_MOUSE_DELAY(Optional) Lockout time after non-mouse key is pressedideally (100-1000)msTAPPING_TERM or 200 ms
AUTO_MOUSE_DEBOUNCE(Optional) Time delay from last activation to next updateideally (10 - 100)ms25 ms
AUTO_MOUSE_THRESHOLD(Optional) Amount of mouse movement required to switch layers0 -units10 units

Adding mouse keys

While all default mouse keys and layer keys(for current mouse layer) are treated as mouse keys, additional Keyrecords can be added to mouse keys by adding them to the is_mouse_record_* stack.

Callbacks for setting up additional key codes as mouse keys:

CallbackDescription
bool is_mouse_record_kb(uint16_t keycode, keyrecord_t* record)keyboard level callback for adding mouse keys
bool is_mouse_record_user(uint16_t keycode, keyrecord_t* record)user/keymap level callback for adding mouse keys
To use the callback function to add mouse keys:

The following code will cause the enter key and all of the arrow keys to be treated as mouse keys (hold target layer while they are pressed and reset active layer timer).

c
\n// in <keyboard>.c:\nbool is_mouse_record_kb(uint16_t keycode, keyrecord_t* record) {\n    switch(keycode) {\n        case KC_ENT:\n            return true;\n        case KC_RIGHT ... KC_UP:\n            return true;\n        default:\n            return false;\n    }\n    return  is_mouse_record_user(keycode, record);\n}

Advanced control

There are several functions that allow for more advanced interaction with the auto mouse feature allowing for greater control.

Functions to control auto mouse enable and target layer:

FunctionDescriptionAliasesReturn type
set_auto_mouse_enable(bool enable)Enable or disable auto mouse (true:enable, false:disable)void(None)
get_auto_mouse_enable(void)Return auto mouse enable state (true:enabled, false:disabled)AUTO_MOUSE_ENABLEDbool
set_auto_mouse_layer(uint8_t LAYER)Change/set the target layer for auto mousevoid(None)
get_auto_mouse_layer(void)Return auto mouse target layer indexAUTO_MOUSE_TARGET_LAYERuint8_t
remove_auto_mouse_layer(layer_state_t state, bool force)Return state with target layer removed if appropriate (ignore criteria if force)layer_state_t
auto_mouse_layer_off(void)Disable target layer if appropriate will call (makes call to layer_state_set)void(None)
auto_mouse_toggle(void)Toggle on/off target toggle state (disables layer deactivation when true)void(None)
get_auto_mouse_toggle(void)Return value of toggling state variablebool
set_auto_mouse_timeout(uint16_t timeout)Change/set the timeout for turing off the layervoid(None)
get_auto_mouse_timeout(void)Return the current timeout for turing off the layeruint16_t
set_auto_mouse_debounce(uint16_t timeout)Change/set the debounce for preventing layer activationvoid(None)
get_auto_mouse_debounce(void)Return the current debounce for preventing layer activationuint8_t
is_auto_mouse_active(void)Returns the active state of the auto mouse layer (eg if the layer has been triggered)bool
get_auto_mouse_key_tracker(void)Gets the current count for the auto mouse key tracker.int8_t
set_auto_mouse_key_tracker(int8_t key_tracker)Sets/Overrides the current count for the auto mouse key tracker.void(None)

NOTES:
- Due to the nature of how some functions work, the auto_mouse_trigger_reset, and auto_mouse_layer_off functions should never be called in the layer_state_set_* stack as this can cause indefinite loops.
- It is recommended that remove_auto_mouse_layer is used in the layer_state_set_* stack of functions and auto_mouse_layer_off is used everywhere else
- remove_auto_mouse_layer(state, false) or auto_mouse_layer_off() should be called before any instance of set_auto_mouse_enabled(false) or set_auto_mouse_layer(layer) to ensure that the target layer will be removed appropriately before disabling auto mouse or changing target to avoid a stuck layer

Functions for handling custom key events:

FunctionDescriptionReturn type
auto_mouse_keyevent(bool pressed)Auto mouse mouse key event (true: key down, false: key up)void(None)
auto_mouse_trigger_reset(bool pressed)Reset auto mouse status on key down and start delay timer (non-mouse key event)void(None)
auto_mouse_toggle(void)Toggle on/off target toggle state (disables layer deactivation when true)void(None)
get_auto_mouse_toggle(void)Return value of toggling state variablebool
NOTE: Generally it would be preferable to use the is_mouse_record_* functions to add any additional keys that should act as mouse keys rather than adding auto_mouse_keyevent(record.event->pressed) to process_records_*

Advanced control examples

Disable auto mouse on certain layers:

The auto mouse feature can be disabled any time and this can be helpful if you want to disable the auto mouse feature under certain circumstances such as when particular layers are active. One issue however is the handling of the target layer, it needs to be removed appropriately before disabling auto mouse (see notes under control functions above). The following function would disable the auto_mouse feature whenever the layers _LAYER5 through _LAYER7 are active as the top most layer (ignoring target layer).

c
// in keymap.c:\nlayer_state_t layer_state_set_user(layer_state_t state) {\n    // checks highest layer other than target layer\n    switch(get_highest_layer(remove_auto_mouse_layer(state, true))) {\n        case _LAYER5 ... _LAYER7:\n            // remove_auto_mouse_target must be called to adjust state *before* setting enable\n            state = remove_auto_mouse_layer(state, false);\n            set_auto_mouse_enable(false);\n            break;\n        default:\n            set_auto_mouse_enable(true);\n            break;\n    }\n    // recommend that any code that makes adjustment based on auto mouse layer state would go here\n    return state;\n}

Set different target layer when a particular layer is active:

The below code will change the auto mouse layer target to _MOUSE_LAYER_2 when _DEFAULT_LAYER_2 is highest default layer state.

NOTE: that auto_mouse_layer_off is used here instead of remove_auto_mouse_layer as default_layer_state_set_* stack is separate from the layer_state_set_* stack, if something similar was to be done in layer_state_set_user, state = remove_auto_mouse_layer(state, false) should be used instead.

ADDITIONAL NOTE: AUTO_MOUSE_TARGET_LAYER is checked if already set to avoid deactivating the target layer unless needed.

c
// in keymap.c\nlayer_state_t default_layer_state_set_user(layer_state_t state) {\n    // switch on change in default layer need to check if target layer already set to avoid turning off layer needlessly\n    switch(get_highest_layer(state)) {\n        case _DEFAULT_LAYER_2:\n            if ((AUTO_MOUSE_TARGET_LAYER) == _MOUSE_LAYER_2) break;\n            auto_mouse_layer_off();\n            set_auto_mouse_layer(_MOUSE_LAYER_2);\n            break;\n        \n        default:\n            if((AUTO_MOUSE_TARGET_LAYER) == _MOUSE_LAYER_1) break;\n            auto_mouse_layer_off();\n            set_auto_mouse_layer(_MOUSE_LAYER_1);\n    }\n    return state;\n}

Use custom keys to control auto mouse:

Custom key records could also be created that control the auto mouse feature.
The code example below would create a custom key that would toggle the auto mouse feature on and off when pressed while also setting a bool that could be used to disable other code that may turn it on such as the layer code above.

c
// in config.h:\nenum user_custom_keycodes {\n    AM_Toggle = SAFE_RANGE\n};\n\n// in keymap.c:\n// set up global bool to adjust other user code\nbool auto_mouse_tg_off = !AUTO_MOUSE_ENABLED;\n\nbool process_record_user(uint16_t keycode, keyrecord_t* record) {\n    switch (keycode) {\n        // toggle auto mouse enable key\n        case AM_Toggle:\n            if(record->event.pressed) { // key down\n                auto_mouse_layer_off(); // disable target layer if needed\n                set_auto_mouse_enabled((AUTO_MOUSE_ENABLED) ^ 1);\n                auto_mouse_tg_off = !get_auto_mouse_enabled();\n            } // do nothing on key up\n            return false; // prevent further processing of keycode\n    }\n}

Customize Target Layer Activation

Layer activation can be customized by overwriting the auto_mouse_activation function. This function is checked every time pointing_device_task is called when inactive and every AUTO_MOUSE_DEBOUNCE ms when active, and will evaluate pointing device level conditions that trigger target layer activation. When it returns true, the target layer will be activated barring the usual exceptions (e.g. delay time has not expired).

By default it will return true if any of the mouse_report axes x,y,h,v are non zero, or if there is any mouse buttons active in mouse_report. Note: The Cirque pinnacle track pad already implements a custom activation function that will activate on touchdown as well as movement all of the default conditions, currently this only works for the master side of split keyboards.

FunctionDescriptionReturn type
auto_mouse_activation(report_mouse_t mouse_report)Overwritable function that controls target layer activation (when true)bool

Auto Mouse for Custom Pointing Device Task

When using a custom pointing device (overwriting pointing_device_task) the following code should be somewhere in the pointing_device_task_* stack:

c
bool pointing_device_task(void) {\n    //...Custom pointing device task code\n    \n    // handle automatic mouse layer (needs report_mouse_t as input)\n    pointing_device_task_auto_mouse(local_mouse_report);\n    \n    //...More custom pointing device task code\n    \n    return pointing_device_send();\n}

In general the following two functions must be implemented in appropriate locations for auto mouse to function:

FunctionDescriptionSuggested location
pointing_device_task_auto_mouse(report_mouse_t mouse_report)handles target layer activation and is_active status updatespointing_device_task stack
process_auto_mouse(uint16_t keycode, keyrecord_t* record)Keycode processing for auto mouseprocess_record stack
', 202); diff --git a/assets/features_pointing_device.md.DP6-XwL6.lean.js b/assets/features_pointing_device.md.Birc1w-6.lean.js similarity index 91% rename from assets/features_pointing_device.md.DP6-XwL6.lean.js rename to assets/features_pointing_device.md.Birc1w-6.lean.js index 8c70de2c475..9945f07c253 100644 --- a/assets/features_pointing_device.md.DP6-XwL6.lean.js +++ b/assets/features_pointing_device.md.Birc1w-6.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Pointing Device","description":"","frontmatter":{},"headers":[],"relativePath":"features/pointing_device.md","filePath":"features/pointing_device.md"}'); const _sfc_main = { name: "features/pointing_device.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 202); diff --git a/assets/features_programmable_button.md.D332w_PT.js b/assets/features_programmable_button.md.C7mT83XS.js similarity index 99% rename from assets/features_programmable_button.md.D332w_PT.js rename to assets/features_programmable_button.md.C7mT83XS.js index 1630a26d687..2b070c63317 100644 --- a/assets/features_programmable_button.md.D332w_PT.js +++ b/assets/features_programmable_button.md.C7mT83XS.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Programmable Button","description":"","frontmatter":{},"headers":[],"relativePath":"features/programmable_button.md","filePath":"features/programmable_button.md"}'); const _sfc_main = { name: "features/programmable_button.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Programmable Button

Programmable Buttons are keys that have no predefined meaning. This means they can be processed on the host side by custom software without the operating system trying to interpret them.

The keycodes are emitted according to the HID Telephony Device page (0x0B), Programmable Button usage (0x09). On Linux (> 5.14) they are handled automatically and translated to KEY_MACRO# keycodes (up to KEY_MACRO30).

TIP

Currently there is no known support in Windows or macOS. It may be possible to write a custom HID driver to receive these usages, but this is out of the scope of the QMK documentation.

Usage

Add the following to your rules.mk:

make
PROGRAMMABLE_BUTTON_ENABLE = yes

Keycodes

KeyAliasesDescription
QK_PROGRAMMABLE_BUTTON_1PB_1Programmable button 1
QK_PROGRAMMABLE_BUTTON_2PB_2Programmable button 2
QK_PROGRAMMABLE_BUTTON_3PB_3Programmable button 3
QK_PROGRAMMABLE_BUTTON_4PB_4Programmable button 4
QK_PROGRAMMABLE_BUTTON_5PB_5Programmable button 5
QK_PROGRAMMABLE_BUTTON_6PB_6Programmable button 6
QK_PROGRAMMABLE_BUTTON_7PB_7Programmable button 7
QK_PROGRAMMABLE_BUTTON_8PB_8Programmable button 8
QK_PROGRAMMABLE_BUTTON_9PB_9Programmable button 9
QK_PROGRAMMABLE_BUTTON_10PB_10Programmable button 10
QK_PROGRAMMABLE_BUTTON_11PB_11Programmable button 11
QK_PROGRAMMABLE_BUTTON_12PB_12Programmable button 12
QK_PROGRAMMABLE_BUTTON_13PB_13Programmable button 13
QK_PROGRAMMABLE_BUTTON_14PB_14Programmable button 14
QK_PROGRAMMABLE_BUTTON_15PB_15Programmable button 15
QK_PROGRAMMABLE_BUTTON_16PB_16Programmable button 16
QK_PROGRAMMABLE_BUTTON_17PB_17Programmable button 17
QK_PROGRAMMABLE_BUTTON_18PB_18Programmable button 18
QK_PROGRAMMABLE_BUTTON_19PB_19Programmable button 19
QK_PROGRAMMABLE_BUTTON_20PB_20Programmable button 20
QK_PROGRAMMABLE_BUTTON_21PB_21Programmable button 21
QK_PROGRAMMABLE_BUTTON_22PB_22Programmable button 22
QK_PROGRAMMABLE_BUTTON_23PB_23Programmable button 23
QK_PROGRAMMABLE_BUTTON_24PB_24Programmable button 24
QK_PROGRAMMABLE_BUTTON_25PB_25Programmable button 25
QK_PROGRAMMABLE_BUTTON_26PB_26Programmable button 26
QK_PROGRAMMABLE_BUTTON_27PB_27Programmable button 27
QK_PROGRAMMABLE_BUTTON_28PB_28Programmable button 28
QK_PROGRAMMABLE_BUTTON_29PB_29Programmable button 29
QK_PROGRAMMABLE_BUTTON_30PB_30Programmable button 30
QK_PROGRAMMABLE_BUTTON_31PB_31Programmable button 31
QK_PROGRAMMABLE_BUTTON_32PB_32Programmable button 32

API

void programmable_button_clear(void)

Clear the programmable button report.


void programmable_button_add(uint8_t index)

Set the state of a button.

Arguments


void programmable_button_remove(uint8_t index)

Reset the state of a button.

Arguments


void programmable_button_register(uint8_t index)

Set the state of a button, and flush the report.

Arguments


void programmable_button_unregister(uint8_t index)

Reset the state of a button, and flush the report.

Arguments


bool programmable_button_is_on(uint8_t index)

Get the state of a button.

Arguments

Return Value

true if the button is pressed.


void programmable_button_flush(void)

Send the programmable button report to the host.


uint32_t programmable_button_get_report(void)

Get the programmable button report.

Return Value

The bitmask of programmable button states.


void programmable_button_set_report(uint32_t report)

Set the programmable button report.

Arguments

', 52); diff --git a/assets/features_programmable_button.md.D332w_PT.lean.js b/assets/features_programmable_button.md.C7mT83XS.lean.js similarity index 91% rename from assets/features_programmable_button.md.D332w_PT.lean.js rename to assets/features_programmable_button.md.C7mT83XS.lean.js index 079cf190b5a..dbd2d530973 100644 --- a/assets/features_programmable_button.md.D332w_PT.lean.js +++ b/assets/features_programmable_button.md.C7mT83XS.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Programmable Button","description":"","frontmatter":{},"headers":[],"relativePath":"features/programmable_button.md","filePath":"features/programmable_button.md"}'); const _sfc_main = { name: "features/programmable_button.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 52); diff --git a/assets/features_ps2_mouse.md.CL_pA9sk.js b/assets/features_ps2_mouse.md.CR0p8T4u.js similarity index 99% rename from assets/features_ps2_mouse.md.CL_pA9sk.js rename to assets/features_ps2_mouse.md.CR0p8T4u.js index 7bde3855310..9b58fb4b9c0 100644 --- a/assets/features_ps2_mouse.md.CL_pA9sk.js +++ b/assets/features_ps2_mouse.md.CR0p8T4u.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"PS/2 Mouse Support","description":"","frontmatter":{},"headers":[],"relativePath":"features/ps2_mouse.md","filePath":"features/ps2_mouse.md"}'); const _sfc_main = { name: "features/ps2_mouse.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

PS/2 Mouse Support

Its possible to hook up a PS/2 mouse (for example touchpads or trackpoints) to your keyboard as a composite device.

To hook up a Trackpoint, you need to obtain a Trackpoint module (i.e. harvest from a Thinkpad keyboard), identify the function of each pin of the module, and make the necessary circuitry between controller and Trackpoint module. For more information, please refer to Trackpoint Hardware page on Deskthority Wiki.

There are three available modes for hooking up PS/2 devices: USART (best), interrupts (better) or busywait (not recommended).

The Circuitry between Trackpoint and Controller

To get the things working, a 4.7K drag is needed between the two lines DATA and CLK and the line 5+.

\n          DATA ----------+--------- PIN\n                         |\n                        4.7K\n                         |\nMODULE    5+  --------+--+--------- PWR   CONTROLLER\n                      |\n                     4.7K\n                      |    \n          CLK   ------+------------ PIN

Busywait Version

Note: This is not recommended, you may encounter jerky movement or unsent inputs. Please use interrupt or USART version if possible.

In rules.mk:

make
PS2_MOUSE_ENABLE = yes\nPS2_ENABLE = yes\nPS2_DRIVER = busywait

In your keyboard config.h:

c
#ifdef PS2_DRIVER_BUSYWAIT\n# define PS2_CLOCK_PIN   D1\n# define PS2_DATA_PIN    D2\n#endif

Interrupt Version (AVR/ATMega32u4)

The following example uses D2 for clock and D5 for data. You can use any INT or PCINT pin for clock, and any pin for data.

In rules.mk:

make
PS2_MOUSE_ENABLE = yes\nPS2_ENABLE = yes\nPS2_DRIVER = interrupt

In your keyboard config.h:

c
#ifdef PS2_DRIVER_INTERRUPT\n#define PS2_CLOCK_PIN   D2\n#define PS2_DATA_PIN    D5\n\n#define PS2_INT_INIT()  do {    \\\n    EICRA |= ((1<<ISC21) |      \\\n              (0<<ISC20));      \\\n} while (0)\n#define PS2_INT_ON()  do {      \\\n    EIMSK |= (1<<INT2);         \\\n} while (0)\n#define PS2_INT_OFF() do {      \\\n    EIMSK &= ~(1<<INT2);        \\\n} while (0)\n#define PS2_INT_VECT   INT2_vect\n#endif

Interrupt Version (ARM chibios)

Pretty much any two pins can be used for the (software) interrupt variant on ARM cores. The example below uses A8 for clock, and A9 for data.

In rules.mk:

PS2_MOUSE_ENABLE = yes\nPS2_ENABLE = yes\nPS2_DRIVER = interrupt

In your keyboard config.h:

c
#define PS2_CLOCK_PIN A8\n#define PS2_DATA_PIN  A9

And in the chibios specifig halconf.h:

c
#define PAL_USE_CALLBACKS TRUE

USART Version

To use USART on the ATMega32u4, you have to use PD5 for clock and PD2 for data. If one of those are unavailable, you need to use interrupt version.

In rules.mk:

make
PS2_MOUSE_ENABLE = yes\nPS2_ENABLE = yes\nPS2_DRIVER = usart

In your keyboard config.h:

c
#ifdef PS2_DRIVER_USART\n#define PS2_CLOCK_PIN   D5\n#define PS2_DATA_PIN    D2\n\n/* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */\n/* set DDR of CLOCK as input to be slave */\n#define PS2_USART_INIT() do {   \\\n    PS2_CLOCK_DDR &= ~(1<<PS2_CLOCK_BIT);   \\\n    PS2_DATA_DDR &= ~(1<<PS2_DATA_BIT);     \\\n    UCSR1C = ((1 << UMSEL10) |  \\\n              (3 << UPM10)   |  \\\n              (0 << USBS1)   |  \\\n              (3 << UCSZ10)  |  \\\n              (0 << UCPOL1));   \\\n    UCSR1A = 0;                 \\\n    UBRR1H = 0;                 \\\n    UBRR1L = 0;                 \\\n} while (0)\n#define PS2_USART_RX_INT_ON() do {  \\\n    UCSR1B = ((1 << RXCIE1) |       \\\n              (1 << RXEN1));        \\\n} while (0)\n#define PS2_USART_RX_POLL_ON() do { \\\n    UCSR1B = (1 << RXEN1);          \\\n} while (0)\n#define PS2_USART_OFF() do {    \\\n    UCSR1C = 0;                 \\\n    UCSR1B &= ~((1 << RXEN1) |  \\\n                (1 << TXEN1));  \\\n} while (0)\n#define PS2_USART_RX_READY      (UCSR1A & (1<<RXC1))\n#define PS2_USART_RX_DATA       UDR1\n#define PS2_USART_ERROR         (UCSR1A & ((1<<FE1) | (1<<DOR1) | (1<<UPE1)))\n#define PS2_USART_RX_VECT       USART1_RX_vect\n#endif

RP2040 PIO Version

The PIO subsystem is a Raspberry Pi RP2040 specific implementation, using the integrated PIO peripheral and is therefore only available on this MCU.

There are strict requirements for pin ordering but any pair of GPIO pins can be used. The GPIO used for clock must be directly after data, see the included info.json snippet for an example of correct order.

You may optionally switch the PIO peripheral used with the following define in config.h:

c
#define PS2_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the PS2 implementation uses the PIO0 peripheral

Example info.json content:

json
    "ps2": {\n        "clock_pin": "GP1",\n        "data_pin": "GP0",\n        "driver": "vendor",\n        "enabled": true,\n        "mouse_enabled": true\n    }

Additional Settings

PS/2 Mouse Features

These enable settings supported by the PS/2 mouse protocol.

c
/* Use remote mode instead of the default stream mode (see link) */\n#define PS2_MOUSE_USE_REMOTE_MODE\n\n/* Enable the scrollwheel or scroll gesture on your mouse or touchpad */\n#define PS2_MOUSE_ENABLE_SCROLLING\n\n/* Some mice will need a scroll mask to be configured. The default is 0xFF. */\n#define PS2_MOUSE_SCROLL_MASK 0x0F\n\n/* Applies a transformation to the movement before sending to the host (see link) */\n#define PS2_MOUSE_USE_2_1_SCALING\n\n/* The time to wait after initializing the ps2 host */\n#define PS2_MOUSE_INIT_DELAY 1000 /* Default */

You can also call the following functions from ps2_mouse.h

c
void ps2_mouse_disable_data_reporting(void);\n\nvoid ps2_mouse_enable_data_reporting(void);\n\nvoid ps2_mouse_set_remote_mode(void);\n\nvoid ps2_mouse_set_stream_mode(void);\n\nvoid ps2_mouse_set_scaling_2_1(void);\n\nvoid ps2_mouse_set_scaling_1_1(void);\n\nvoid ps2_mouse_set_resolution(ps2_mouse_resolution_t resolution);\n\nvoid ps2_mouse_set_sample_rate(ps2_mouse_sample_rate_t sample_rate);

Fine Control

Use the following defines to change the sensitivity and speed of the mouse. Note: you can also use ps2_mouse_set_resolution for the same effect (not supported on most touchpads).

c
#define PS2_MOUSE_X_MULTIPLIER 3\n#define PS2_MOUSE_Y_MULTIPLIER 3\n#define PS2_MOUSE_V_MULTIPLIER 1

Scroll Button

If you're using a trackpoint, you will likely want to be able to use it for scrolling. It's possible to enable a "scroll button/s" that when pressed will cause the mouse to scroll instead of moving. To enable the feature, you must set a scroll button mask as follows:

c
#define PS2_MOUSE_SCROLL_BTN_MASK (1<<PS2_MOUSE_BTN_MIDDLE) /* Default */

To disable the scroll button feature:

c
#define PS2_MOUSE_SCROLL_BTN_MASK 0

The available buttons are:

c
#define PS2_MOUSE_BTN_LEFT      0\n#define PS2_MOUSE_BTN_RIGHT     1\n#define PS2_MOUSE_BTN_MIDDLE    2

You can also combine buttons in the mask by |ing them together.

Once you've configured your scroll button mask, you must configure the scroll button send interval. This is the interval before which if the scroll buttons were released they would be sent to the host. After this interval, they will cause the mouse to scroll and will not be sent.

c
#define PS2_MOUSE_SCROLL_BTN_SEND 300 /* Default */

To disable sending the scroll buttons:

c
#define PS2_MOUSE_SCROLL_BTN_SEND 0

Fine control over the scrolling is supported with the following defines:

c
#define PS2_MOUSE_SCROLL_DIVISOR_H 2\n#define PS2_MOUSE_SCROLL_DIVISOR_V 2

Invert Mouse buttons

To invert the left & right buttons you can put:

c
#define PS2_MOUSE_INVERT_BUTTONS

into config.h.

Invert Mouse and Scroll Axes

To invert the X and Y axes you can put:

c
#define PS2_MOUSE_INVERT_X\n#define PS2_MOUSE_INVERT_Y

into config.h.

To reverse the scroll axes you can put:

c
#define PS2_MOUSE_INVERT_H\n#define PS2_MOUSE_INVERT_V

into config.h.

Rotate Mouse Axes

Transform the output of the device with a clockwise rotation of 90, 180, or 270 degrees.

When compensating for device orientation, rotate the output the same amount in the opposite direction. E.g. if the normal device orientation is considered to be North-facing, compensate as follows:

c
#define PS2_MOUSE_ROTATE 270 /* Compensate for East-facing device orientation. */
c
#define PS2_MOUSE_ROTATE 180 /* Compensate for South-facing device orientation. */
c
#define PS2_MOUSE_ROTATE 90 /* Compensate for West-facing device orientation. */

Debug Settings

To debug the mouse, add debug_mouse = true or enable via bootmagic.

c
/* To debug the mouse reports */\n#define PS2_MOUSE_DEBUG_HID\n#define PS2_MOUSE_DEBUG_RAW

Movement Hook

Process mouse movement in the keymap before it is sent to the host. Example uses include filtering noise, adding acceleration, and automatically activating a layer. To use, define the following function in your keymap:

c
void ps2_mouse_moved_user(report_mouse_t *mouse_report);
', 86); diff --git a/assets/features_ps2_mouse.md.CL_pA9sk.lean.js b/assets/features_ps2_mouse.md.CR0p8T4u.lean.js similarity index 91% rename from assets/features_ps2_mouse.md.CL_pA9sk.lean.js rename to assets/features_ps2_mouse.md.CR0p8T4u.lean.js index beafbeedfcc..269fafc2766 100644 --- a/assets/features_ps2_mouse.md.CL_pA9sk.lean.js +++ b/assets/features_ps2_mouse.md.CR0p8T4u.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"PS/2 Mouse Support","description":"","frontmatter":{},"headers":[],"relativePath":"features/ps2_mouse.md","filePath":"features/ps2_mouse.md"}'); const _sfc_main = { name: "features/ps2_mouse.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 86); diff --git a/assets/features_rawhid.md.bKKG3KCa.js b/assets/features_rawhid.md.a2O7n8yI.js similarity index 99% rename from assets/features_rawhid.md.bKKG3KCa.js rename to assets/features_rawhid.md.a2O7n8yI.js index e9a8105c6f0..46244f4eb37 100644 --- a/assets/features_rawhid.md.bKKG3KCa.js +++ b/assets/features_rawhid.md.a2O7n8yI.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Raw HID","description":"","frontmatter":{},"headers":[],"relativePath":"features/rawhid.md","filePath":"features/rawhid.md"}'); const _sfc_main = { name: "features/rawhid.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Raw HID

The Raw HID feature allows for bidirectional communication between QMK and the host computer over an HID interface. This has many potential use cases, such as switching keymaps on the fly or sending useful metrics like CPU/RAM usage.

In order to communicate with the keyboard using this feature, you will need to write a program that runs on the host. As such, some basic programming skills are required - more if you intend to implement complex behaviour.

Usage

Add the following to your rules.mk:

make
RAW_ENABLE = yes

Basic Configuration

By default, the HID Usage Page and Usage ID for the Raw HID interface are 0xFF60 and 0x61. However, they can be changed if necessary by adding the following to your config.h:

DefineDefaultDescription
RAW_USAGE_PAGE0xFF60The usage page of the Raw HID interface
RAW_USAGE_ID0x61The usage ID of the Raw HID interface

Sending Data to the Keyboard

To send data to the keyboard, you must first find a library for communicating with HID devices in the programming language of your choice. Here are some examples:

Please refer to these libraries' own documentation for instructions on usage. Remember to close the device once you are finished with it!

Next, you will need to know the USB Vendor and Product IDs of the device. These can easily be found by looking at your keyboard's info.json, under the usb object (alternatively, you can also use Device Manager on Windows, System Information on macOS, or lsusb on Linux). For example, the Vendor ID for the Planck Rev 6 is 0x03A8, and the Product ID is 0xA4F9.

It's also a good idea to narrow down the list of potential HID devices the library may give you by filtering on the usage page and usage ID, to avoid accidentally opening the interface on the same device for the keyboard, or mouse, or media keys, etc.

Once you are able to open the HID device and send reports to it, it's time to handle them on the keyboard side. Implement the following function in your keymap.c and start coding:

c
void raw_hid_receive(uint8_t *data, uint8_t length) {\n    // Your code goes here\n    // `data` is a pointer to the buffer containing the received HID report\n    // `length` is the length of the report - always `RAW_EPSIZE`\n}

WARNING

Because the HID specification does not support variable length reports, all reports in both directions must be exactly RAW_EPSIZE (currently 32) bytes long, regardless of actual payload length. However, variable length payloads can potentially be implemented on top of this by creating your own data structure that may span multiple reports.

Receiving Data from the Keyboard

If you need the keyboard to send data back to the host, simply call the raw_hid_send() function. It requires two arguments - a pointer to a 32-byte buffer containing the data you wish to send, and the length (which should always be RAW_EPSIZE).

The received report can then be handled in whichever way your HID library provides.

Simple Example

The following example reads the first byte of the received report from the host, and if it is an ASCII "A", responds with "B". memset() is used to fill the response buffer (which could still contain the previous response) with null bytes.

c
void raw_hid_receive(uint8_t *data, uint8_t length) {\n    uint8_t response[length];\n    memset(response, 0, length);\n    response[0] = 'B';\n\n    if(data[0] == 'A') {\n        raw_hid_send(response, length);\n    }\n}

On the host side (here we are using Python and the pyhidapi library), the HID device is opened by enumerating the interfaces on the USB device, then filtering on the usage page and usage ID. Then, a report containing a single ASCII "A" (hex 0x41) is constructed and sent.

For demonstration purposes, the manufacturer and product strings of the device, along with the request and response, are also printed.

python
import sys\nimport hid\n\nvendor_id     = 0x4335\nproduct_id    = 0x0002\n\nusage_page    = 0xFF60\nusage         = 0x61\nreport_length = 32\n\ndef get_raw_hid_interface():\n    device_interfaces = hid.enumerate(vendor_id, product_id)\n    raw_hid_interfaces = [i for i in device_interfaces if i['usage_page'] == usage_page and i['usage'] == usage]\n\n    if len(raw_hid_interfaces) == 0:\n        return None\n\n    interface = hid.Device(path=raw_hid_interfaces[0]['path'])\n\n    print(f"Manufacturer: {interface.manufacturer}")\n    print(f"Product: {interface.product}")\n\n    return interface\n\ndef send_raw_report(data):\n    interface = get_raw_hid_interface()\n\n    if interface is None:\n        print("No device found")\n        sys.exit(1)\n\n    request_data = [0x00] * (report_length + 1) # First byte is Report ID\n    request_data[1:len(data) + 1] = data\n    request_report = bytes(request_data)\n\n    print("Request:")\n    print(request_report)\n\n    try:\n        interface.write(request_report)\n\n        response_report = interface.read(report_length, timeout=1000)\n\n        print("Response:")\n        print(response_report)\n    finally:\n        interface.close()\n\nif __name__ == '__main__':\n    send_raw_report([\n        0x41\n    ])

API

void raw_hid_receive(uint8_t *data, uint8_t length)

Callback, invoked when a raw HID report has been received from the host.

Arguments


void raw_hid_send(uint8_t *data, uint8_t length)

Send an HID report.

Arguments

', 37); diff --git a/assets/features_rawhid.md.bKKG3KCa.lean.js b/assets/features_rawhid.md.a2O7n8yI.lean.js similarity index 91% rename from assets/features_rawhid.md.bKKG3KCa.lean.js rename to assets/features_rawhid.md.a2O7n8yI.lean.js index 406ec187c58..c9f4e2bcb86 100644 --- a/assets/features_rawhid.md.bKKG3KCa.lean.js +++ b/assets/features_rawhid.md.a2O7n8yI.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Raw HID","description":"","frontmatter":{},"headers":[],"relativePath":"features/rawhid.md","filePath":"features/rawhid.md"}'); const _sfc_main = { name: "features/rawhid.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 37); diff --git a/assets/features_repeat_key.md.2ulQYjgy.js b/assets/features_repeat_key.md.CuNkA6hM.js similarity index 99% rename from assets/features_repeat_key.md.2ulQYjgy.js rename to assets/features_repeat_key.md.CuNkA6hM.js index 220db2f467e..75a54d06055 100644 --- a/assets/features_repeat_key.md.2ulQYjgy.js +++ b/assets/features_repeat_key.md.CuNkA6hM.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Repeat Key","description":"","frontmatter":{},"headers":[],"relativePath":"features/repeat_key.md","filePath":"features/repeat_key.md"}'); const _sfc_main = { name: "features/repeat_key.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Repeat Key

The Repeat Key performs the action of the last pressed key. Tapping the Repeat Key after tapping the Z key types another "z." This is useful for typing doubled letters, like the z in "dazzle": a double tap on Z can instead be a roll from Z to Repeat, which is potentially faster and more comfortable. The Repeat Key is also useful for hotkeys, like repeating Ctrl + Shift + Right Arrow to select by word.

Repeat Key remembers mods that were active with the last key press. These mods are combined with any additional mods while pressing the Repeat Key. If the last press key was Ctrl + Z, then Shift + Repeat performs Ctrl + Shift + Z.

How do I enable Repeat Key

In your rules.mk, add:

make
REPEAT_KEY_ENABLE = yes

Then pick a key in your keymap and assign it the keycode QK_REPEAT_KEY (short alias QK_REP). Optionally, use the keycode QK_ALT_REPEAT_KEY (short alias QK_AREP) on another key.

Keycodes

KeycodeAliasesDescription
QK_REPEAT_KEYQK_REPRepeat the last pressed key
QK_ALT_REPEAT_KEYQK_AREPPerform alternate of the last key

Alternate Repeating

The Alternate Repeat Key performs the "alternate" action of the last pressed key if it is defined. By default, Alternate Repeat is defined for navigation keys to act in the reverse direction. When the last key is the common "select by word" hotkey Ctrl + Shift + Right Arrow, the Alternate Repeat Key performs Ctrl + Shift + Left Arrow, which together with the Repeat Key enables convenient selection by words in either direction.

Alternate Repeat is enabled with the Repeat Key by default. Optionally, to reduce firmware size, Alternate Repeat may be disabled by adding in config.h:

c
#define NO_ALT_REPEAT_KEY

The following alternate keys are defined by default. See get_alt_repeat_key_keycode_user() below for how to change or add to these definitions. Where it makes sense, these definitions also include combinations with mods, like Ctrl + Left ↔ Ctrl + Right Arrow.

Navigation

KeycodesDescription
KC_LEFTKC_RGHTLeft ↔ Right Arrow
KC_UPKC_DOWNUp ↔ Down Arrow
KC_HOMEKC_ENDHome ↔ End
KC_PGUPKC_PGDNPage Up ↔ Page Down
MS_LEFTMS_RGHTMouse Cursor Left ↔ Right
MS_UPMS_DOWNMouse Cursor Up ↔ Down
MS_WHLLMS_WHLRMouse Wheel Left ↔ Right
MS_WHLUMS_WHLDMouse Wheel Up ↔ Down

Misc

KeycodesDescription
KC_BSPCKC_DELBackspace ↔ Delete
KC_LBRCKC_RBRC[]
KC_LCBRKC_RCBR{}

Media

KeycodesDescription
KC_WBAKKC_WFWDBrowser Back ↔ Forward
KC_MNXTKC_MPRVNext ↔ Previous Media Track
KC_MFFDKC_MRWDFast Forward ↔ Rewind Media
KC_VOLUKC_VOLDVolume Up ↔ Down
KC_BRIUKC_BRIDBrightness Up ↔ Down

Hotkeys in Vim, Emacs, and other programs

KeycodesDescription
mod + KC_F ↔ mod + KC_BForward ↔ Backward
mod + KC_D ↔ mod + KC_UDown ↔ Up
mod + KC_N ↔ mod + KC_PNext ↔ Previous
mod + KC_A ↔ mod + KC_EHome ↔ End
mod + KC_O ↔ mod + KC_IVim jump list Older ↔ Newer
KC_JKC_KDown ↔ Up
KC_HKC_LLeft ↔ Right
KC_WKC_BForward ↔ Backward by Word

(where above, "mod" is Ctrl, Alt, or GUI)

Defining alternate keys

Use the get_alt_repeat_key_keycode_user() callback to define the "alternate" for additional keys or override the default definitions. For example, to define Ctrl + Y as the alternate of Ctrl + Z, and vice versa, add the following in keymap.c:

c
uint16_t get_alt_repeat_key_keycode_user(uint16_t keycode, uint8_t mods) {\n    if ((mods & MOD_MASK_CTRL)) {  // Was Ctrl held?\n        switch (keycode) {\n            case KC_Y: return C(KC_Z);  // Ctrl + Y reverses to Ctrl + Z.\n            case KC_Z: return C(KC_Y);  // Ctrl + Z reverses to Ctrl + Y.\n        }\n    }\n\n    return KC_TRNS;  // Defer to default definitions.\n}

The keycode and mods args are the keycode and mods that were active with the last pressed key. The meaning of the return value from this function is:

Another example, defining Shift + Tab as the alternate of Tab, and vice versa:

c
uint16_t get_alt_repeat_key_keycode_user(uint16_t keycode, uint8_t mods) {\n    bool shifted = (mods & MOD_MASK_SHIFT);  // Was Shift held?\n    switch (keycode) {\n        case KC_TAB:\n            if (shifted) {        // If the last key was Shift + Tab,\n                return KC_TAB;    // ... the reverse is Tab.\n            } else {              // Otherwise, the last key was Tab,\n                return S(KC_TAB); // ... and the reverse is Shift + Tab.\n            }\n    }\n\n    return KC_TRNS;\n}

Eliminating SFBs

Alternate Repeat can be configured more generally to perform an action that "complements" the last key. Alternate Repeat is not limited to reverse repeating, and it need not be symmetric. You can use it to eliminate cases of same-finger bigrams in your layout, that is, pairs of letters typed by the same finger. The following addresses the top 5 same-finger bigrams in English on QWERTY, so that for instance "ed" may be typed as E, Alt Repeat.

c
uint16_t get_alt_repeat_key_keycode_user(uint16_t keycode, uint8_t mods) {\n    switch (keycode) {\n        case KC_E: return KC_D;  // For "ED" bigram.\n        case KC_D: return KC_E;  // For "DE" bigram.\n        case KC_C: return KC_E;  // For "CE" bigram.\n        case KC_L: return KC_O;  // For "LO" bigram.\n        case KC_U: return KC_N;  // For "UN" bigram.\n    }\n\n    return KC_TRNS;\n}

Typing shortcuts

A useful possibility is having Alternate Repeat press a macro. This way macros can be used without having to dedicate keys to them. The following defines a couple shortcuts.

c
enum custom_keycodes {\n    M_KEYBOARD = SAFE_RANGE,\n    M_UPDIR,\n    // Other custom keys...\n};\n\nuint16_t get_alt_repeat_key_keycode_user(uint16_t keycode, uint8_t mods) {\n    switch (keycode) {\n        case KC_K: return M_KEYBOARD;\n        case KC_DOT: return M_UPDIR;\n    }\n\n    return KC_TRNS;\n}\n\nbool process_record_user(uint16_t keycode, keyrecord_t* record) {\n    switch (keycode) {\n        case M_KEYBOARD: SEND_STRING(/*k*/"eyboard"); break;\n        case M_UPDIR: SEND_STRING(/*.*/"./"); break;\n    }\n    return true;\n}

Ignoring certain keys and mods

In tracking what is "the last key" to be repeated or alternate repeated, modifier and layer switch keys are always ignored. This makes it possible to set some mods and change layers between pressing a key and repeating it. By default, all other (non-modifier, non-layer switch) keys are remembered so that they are eligible for repeating. To configure additional keys to be ignored, define remember_last_key_user() in your keymap.c.

Ignoring a key

The following ignores the Backspace key:

c
bool remember_last_key_user(uint16_t keycode, keyrecord_t* record,\n                            uint8_t* remembered_mods) {\n    switch (keycode) {\n        case KC_BSPC:\n            return false;  // Ignore backspace.\n    }\n\n    return true;  // Other keys can be repeated.\n}

Then for instance, the Repeat key in Left Arrow, Backspace, Repeat sends Left Arrow again instead of repeating Backspace.

The remember_last_key_user() callback is called on every key press excluding modifiers and layer switches. Returning true indicates the key is remembered, while false means it is ignored.

Filtering remembered mods

The remembered_mods arg represents the mods that will be remembered with this key. It can be modified to forget certain mods. This may be useful to forget capitalization when repeating shifted letters, so that "Aaron" does not becom "AAron":

c
bool remember_last_key_user(uint16_t keycode, keyrecord_t* record,\n                            uint8_t* remembered_mods) {\n    // Forget Shift on letter keys when Shift or AltGr are the only mods.\n    switch (keycode) {\n        case KC_A ... KC_Z:\n            if ((*remembered_mods & ~(MOD_MASK_SHIFT | MOD_BIT(KC_RALT))) == 0) {\n                *remembered_mods &= ~MOD_MASK_SHIFT;\n            }\n            break;\n    }\n\n    return true;\n}

Further conditions

Besides checking the keycode, this callback could also make conditions based on the current layer state (with IS_LAYER_ON(layer)) or mods (get_mods()). For example, the following ignores keys on layer 2 as well as key combinations involving GUI:

c
bool remember_last_key_user(uint16_t keycode, keyrecord_t* record,\n                            uint8_t* remembered_mods) {\n    if (IS_LAYER_ON(2) || (get_mods() & MOD_MASK_GUI)) {\n        return false;  // Ignore layer 2 keys and GUI chords.\n    }\n\n    return true;  // Other keys can be repeated.\n}

TIP

See Layer Functions and Checking Modifier State for further details.

Handle how a key is repeated

By default, pressing the Repeat Key will simply behave as if the last key were pressed again. This also works with macro keys with custom handlers, invoking the macro again. In case fine-tuning is needed for sensible repetition, you can handle how a key is repeated with get_repeat_key_count() within process_record_user().

The get_repeat_key_count() function returns a signed count of times the key has been repeated or alternate repeated. When a key is pressed as usual, get_repeat_key_count() is 0. On the first repeat, it is 1, then the second repeat, 2, and so on. Negative counts are used similarly for alternate repeating. For instance supposing MY_MACRO is a custom keycode used in the layout:

c
bool process_record_user(uint16_t keycode, keyrecord_t* record) {\n    switch (keycode) {\n        case MY_MACRO:\n            if (get_repeat_key_count() > 0) {\n                // MY_MACRO is being repeated!\n                if (record->event.pressed) {\n                    SEND_STRING("repeat!");    \n                }\n            } else {                          \n                // MY_MACRO is being used normally.\n                if (record->event.pressed) {  \n                    SEND_STRING("macro");\n                }\n            }\n            return false;\n     \n        // Other macros...\n    }\n    return true;\n}

Handle how a key is alternate repeated

Pressing the Alternate Repeat Key behaves as if the "alternate" of the last pressed key were pressed, if an alternate is defined. To define how a particular key is alternate repeated, use the get_alt_repeat_key_keycode_user() callback as described above to define which keycode to use as its alternate. Beyond this, get_repeat_key_count() may be used in custom handlers to fine-tune behavior when alternate repeating.

The following example defines MY_MACRO as its own alternate, and specially handles repeating and alternate repeating:

c
uint16_t get_alt_repeat_key_keycode_user(uint16_t keycode, uint8_t mods) {\n    switch (keycode) {\n        case MY_MACRO: return MY_MACRO;  // MY_MACRO is its own alternate.\n    }\n    return KC_TRNS;\n}\n\nbool process_record_user(uint16_t keycode, keyrecord_t* record) {\n    switch (keycode) {\n        case MY_MACRO:\n            if (get_repeat_key_count() > 0) {        // Repeating.\n                if (record->event.pressed) {\n                    SEND_STRING("repeat!");    \n                }\n            } else if (get_repeat_key_count() < 0) { // Alternate repeating.\n                if (record->event.pressed) {\n                    SEND_STRING("alt repeat!");\n                }\n            } else {                                 // Used normally.\n                if (record->event.pressed) {  \n                    SEND_STRING("macro");\n                }\n            }\n            return false;\n     \n        // Other macros...\n    }\n    return true;\n}

Functions

FunctionDescription
get_last_keycode()The last key's keycode, the key to be repeated.
get_last_mods()Mods to apply when repeating.
set_last_keycode(kc)Set the keycode to be repeated.
set_last_mods(mods)Set the mods to apply when repeating.
get_repeat_key_count()Signed count of times the key has been repeated or alternate repeated.
get_alt_repeat_key_keycode()Keycode to be used for alternate repeating.

Additional "Alternate" keys

By leveraging get_last_keycode() in macros, it is possible to define additional, distinct "Alternate Repeat"-like keys. The following defines two keys ALTREP2 and ALTREP3 and implements ten shortcuts with them for common English 5-gram letter patterns, taking inspiration from Stenotype:

TypingProducesTypingProduces
A, ALTREP2ationA, ALTREP3about
I, ALTREP2itionI, ALTREP3inter
S, ALTREP2ssionS, ALTREP3state
T, ALTREP2theirT, ALTREP3there
W, ALTREP2whichW, ALTREP3would
c
enum custom_keycodes {\n    ALTREP2 = SAFE_RANGE,\n    ALTREP3,\n};\n\n// Use ALTREP2 and ALTREP3 in your layout...\n\nbool remember_last_key_user(uint16_t keycode, keyrecord_t* record,\n                            uint8_t* remembered_mods) {\n    switch (keycode) {\n        case ALTREP2:\n        case ALTREP3:\n            return false;  // Ignore ALTREP keys.\n    }\n\n    return true;  // Other keys can be repeated.\n}\n\nstatic void process_altrep2(uint16_t keycode, uint8_t mods) {\n    switch (keycode) {\n        case KC_A: SEND_STRING(/*a*/"tion"); break;\n        case KC_I: SEND_STRING(/*i*/"tion"); break;\n        case KC_S: SEND_STRING(/*s*/"sion"); break;\n        case KC_T: SEND_STRING(/*t*/"heir"); break;\n        case KC_W: SEND_STRING(/*w*/"hich"); break;\n    }\n}\n\nstatic void process_altrep3(uint16_t keycode, uint8_t mods) {\n    switch (keycode) {\n        case KC_A: SEND_STRING(/*a*/"bout"); break;\n        case KC_I: SEND_STRING(/*i*/"nter"); break;\n        case KC_S: SEND_STRING(/*s*/"tate"); break;\n        case KC_T: SEND_STRING(/*t*/"here"); break;\n        case KC_W: SEND_STRING(/*w*/"ould"); break;\n    }\n}\n\nbool process_record_user(uint16_t keycode, keyrecord_t* record) {\n    switch (keycode) {\n        case ALTREP2: \n            if (record->event.pressed) {\n                process_altrep2(get_last_keycode(), get_last_mods());\n            }\n            return false;\n\n        case ALTREP3:\n            if (record->event.pressed) {\n                process_altrep3(get_last_keycode(), get_last_mods());\n            }\n            return false;\n    }\n\n    return true;\n}
', 65); diff --git a/assets/features_repeat_key.md.2ulQYjgy.lean.js b/assets/features_repeat_key.md.CuNkA6hM.lean.js similarity index 91% rename from assets/features_repeat_key.md.2ulQYjgy.lean.js rename to assets/features_repeat_key.md.CuNkA6hM.lean.js index 3e6b778f4a4..03e67953233 100644 --- a/assets/features_repeat_key.md.2ulQYjgy.lean.js +++ b/assets/features_repeat_key.md.CuNkA6hM.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Repeat Key","description":"","frontmatter":{},"headers":[],"relativePath":"features/repeat_key.md","filePath":"features/repeat_key.md"}'); const _sfc_main = { name: "features/repeat_key.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 65); diff --git a/assets/features_rgb_matrix.md.BE6vKO90.js b/assets/features_rgb_matrix.md.C0kYzT0E.js similarity index 99% rename from assets/features_rgb_matrix.md.BE6vKO90.js rename to assets/features_rgb_matrix.md.C0kYzT0E.js index 66aeffbe528..84d6d50db79 100644 --- a/assets/features_rgb_matrix.md.BE6vKO90.js +++ b/assets/features_rgb_matrix.md.C0kYzT0E.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"RGB Matrix Lighting","description":"","frontmatter":{},"headers":[],"relativePath":"features/rgb_matrix.md","filePath":"features/rgb_matrix.md"}'); const _sfc_main = { name: "features/rgb_matrix.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

RGB Matrix Lighting

This feature allows you to use RGB LED matrices driven by external drivers. It hooks into the RGBLIGHT system so you can use the same keycodes as RGBLIGHT to control it.

If you want to use single color LED's you should use the LED Matrix Subsystem instead.

Driver Configuration

RGB Matrix is an abstraction layer on top of an underlying LED driver API. The list of supported LED drivers is below; see the respective documentation for information on how to configure the driver.

DriverMax LEDs
APA102?
AW20216S72
IS31FL32186
IS31FL323612
IS31FL372945
IS31FL373148
IS31FL373364
IS31FL373632
IS31FL373748
IS31FL3741117
IS31FL3742A60
IS31FL3743A66
IS31FL374548
IS31FL3746A24
SNLED2735164
WS2812?

To assign the RGB Matrix driver, add the following to your rules.mk, for example:

make
RGB_MATRIX_DRIVER = is31fl3218

Common Configuration

From this point forward the configuration is the same for all the drivers. The led_config_t struct provides a key electrical matrix to led index lookup table, what the physical position of each LED is on the board, and what type of key or usage the LED if the LED represents. Here is a brief example:

c
led_config_t g_led_config = { {\n  // Key Matrix to LED Index\n  {   5, NO_LED, NO_LED,   0 },\n  { NO_LED, NO_LED, NO_LED, NO_LED },\n  {   4, NO_LED, NO_LED,   1 },\n  {   3, NO_LED, NO_LED,   2 }\n}, {\n  // LED Index to Physical Position\n  { 188,  16 }, { 187,  48 }, { 149,  64 }, { 112,  64 }, {  37,  48 }, {  38,  16 }\n}, {\n  // LED Index to Flag\n  1, 4, 4, 4, 4, 1\n} };

The first part, // Key Matrix to LED Index, tells the system what key this LED represents by using the key's electrical matrix row & col. The second part, // LED Index to Physical Position represents the LED's physical { x, y } position on the keyboard. The default expected range of values for { x, y } is the inclusive range { 0..224, 0..64 }. This default expected range is due to effects that calculate the center of the keyboard for their animations. The easiest way to calculate these positions is imagine your keyboard is a grid, and the top left of the keyboard represents { x, y } coordinate { 0, 0 } and the bottom right of your keyboard represents { 224, 64 }. Using this as a basis, you can use the following formula to calculate the physical position:

c
x = 224 / (NUMBER_OF_COLS - 1) * COL_POSITION\ny =  64 / (NUMBER_OF_ROWS - 1) * ROW_POSITION

Where NUMBER_OF_COLS, NUMBER_OF_ROWS, COL_POSITION, & ROW_POSITION are all based on the physical layout of your keyboard, not the electrical layout.

As mentioned earlier, the center of the keyboard by default is expected to be { 112, 32 }, but this can be changed if you want to more accurately calculate the LED's physical { x, y } positions. Keyboard designers can implement #define RGB_MATRIX_CENTER { 112, 32 } in their config.h file with the new center point of the keyboard, or where they want it to be allowing more possibilities for the { x, y } values. Do note that the maximum value for x or y is 255, and the recommended maximum is 224 as this gives animations runoff room before they reset.

// LED Index to Flag is a bitmask, whether or not a certain LEDs is of a certain type. It is recommended that LEDs are set to only 1 type.

Flags

DefineValueDescription
HAS_FLAGS(bits, flags)n/aEvaluates to true if bits has all flags set
HAS_ANY_FLAGS(bits, flags)n/aEvaluates to true if bits has any flags set
LED_FLAG_NONE0x00If this LED has no flags
LED_FLAG_ALL0xFFIf this LED has all flags
LED_FLAG_MODIFIER0x01If the LED is on a modifier key
LED_FLAG_UNDERGLOW0x02If the LED is for underglow
LED_FLAG_KEYLIGHT0x04If the LED is for key backlight
LED_FLAG_INDICATOR0x08If the LED is for keyboard state indication

Keycodes

All RGB keycodes are currently shared with the RGBLIGHT system:

KeyAliasesDescription
RGB_TOGToggle RGB lighting on or off
RGB_MODE_FORWARDRGB_MODCycle through modes, reverse direction when Shift is held
RGB_MODE_REVERSERGB_RMODCycle through modes in reverse, forward direction when Shift is held
RGB_HUIIncrease hue, decrease hue when Shift is held
RGB_HUDDecrease hue, increase hue when Shift is held
RGB_SAIIncrease saturation, decrease saturation when Shift is held
RGB_SADDecrease saturation, increase saturation when Shift is held
RGB_VAIIncrease value (brightness), decrease value when Shift is held
RGB_VADDecrease value (brightness), increase value when Shift is held
RGB_SPIIncrease effect speed (does not support eeprom yet), decrease speed when Shift is held
RGB_SPDDecrease effect speed (does not support eeprom yet), increase speed when Shift is held
RGB_MODE_PLAINRGB_M_PStatic (no animation) mode
RGB_MODE_BREATHERGB_M_BBreathing animation mode
RGB_MODE_RAINBOWRGB_M_RFull gradient scrolling left to right (uses the RGB_MATRIX_CYCLE_LEFT_RIGHT mode)
RGB_MODE_SWIRLRGB_M_SWFull gradient spinning pinwheel around center of keyboard (uses RGB_MATRIX_CYCLE_PINWHEEL mode)

RGB_MODE_PLAIN, RGB_MODE_BREATHE, RGB_MODE_RAINBOW, and RGB_MODE_SWIRL are the only ones that are mapped properly. The rest don't have a direct equivalent, and are not mapped.

TIP

RGB_* keycodes cannot be used with functions like tap_code16(RGB_HUD) as they're not USB HID keycodes. If you wish to replicate similar behaviour in custom code within your firmware (e.g. inside encoder_update_user() or process_record_user()), the equivalent RGB functions should be used instead.

WARNING

By default, if you have both the RGB Light and the RGB Matrix feature enabled, these keycodes will work for both features, at the same time. You can disable the keycode functionality by defining the *_DISABLE_KEYCODES option for the specific feature.

RGB Matrix Effects

All effects have been configured to support current configuration values (Hue, Saturation, Value, & Speed) unless otherwise noted below. These are the effects that are currently available:

c
enum rgb_matrix_effects {\n    RGB_MATRIX_NONE = 0,\n    RGB_MATRIX_SOLID_COLOR = 1,     // Static single hue, no speed support\n    RGB_MATRIX_ALPHAS_MODS,         // Static dual hue, speed is hue for secondary hue\n    RGB_MATRIX_GRADIENT_UP_DOWN,    // Static gradient top to bottom, speed controls how much gradient changes\n    RGB_MATRIX_GRADIENT_LEFT_RIGHT,    // Static gradient left to right, speed controls how much gradient changes\n    RGB_MATRIX_BREATHING,           // Single hue brightness cycling animation\n    RGB_MATRIX_BAND_SAT,        // Single hue band fading saturation scrolling left to right\n    RGB_MATRIX_BAND_VAL,        // Single hue band fading brightness scrolling left to right\n    RGB_MATRIX_BAND_PINWHEEL_SAT,   // Single hue 3 blade spinning pinwheel fades saturation\n    RGB_MATRIX_BAND_PINWHEEL_VAL,   // Single hue 3 blade spinning pinwheel fades brightness\n    RGB_MATRIX_BAND_SPIRAL_SAT,     // Single hue spinning spiral fades saturation\n    RGB_MATRIX_BAND_SPIRAL_VAL,     // Single hue spinning spiral fades brightness\n    RGB_MATRIX_CYCLE_ALL,           // Full keyboard solid hue cycling through full gradient\n    RGB_MATRIX_CYCLE_LEFT_RIGHT,    // Full gradient scrolling left to right\n    RGB_MATRIX_CYCLE_UP_DOWN,       // Full gradient scrolling top to bottom\n    RGB_MATRIX_CYCLE_OUT_IN,        // Full gradient scrolling out to in\n    RGB_MATRIX_CYCLE_OUT_IN_DUAL,   // Full dual gradients scrolling out to in\n    RGB_MATRIX_RAINBOW_MOVING_CHEVRON,  // Full gradient Chevron shapped scrolling left to right\n    RGB_MATRIX_CYCLE_PINWHEEL,      // Full gradient spinning pinwheel around center of keyboard\n    RGB_MATRIX_CYCLE_SPIRAL,        // Full gradient spinning spiral around center of keyboard\n    RGB_MATRIX_DUAL_BEACON,         // Full gradient spinning around center of keyboard\n    RGB_MATRIX_RAINBOW_BEACON,      // Full tighter gradient spinning around center of keyboard\n    RGB_MATRIX_RAINBOW_PINWHEELS,   // Full dual gradients spinning two halfs of keyboard\n    RGB_MATRIX_FLOWER_BLOOMING,     // Full tighter gradient of first half scrolling left to right and second half scrolling right to left\n    RGB_MATRIX_RAINDROPS,           // Randomly changes a single key's hue\n    RGB_MATRIX_JELLYBEAN_RAINDROPS, // Randomly changes a single key's hue and saturation\n    RGB_MATRIX_HUE_BREATHING,       // Hue shifts up a slight ammount at the same time, then shifts back\n    RGB_MATRIX_HUE_PENDULUM,        // Hue shifts up a slight ammount in a wave to the right, then back to the left\n    RGB_MATRIX_HUE_WAVE,            // Hue shifts up a slight ammount and then back down in a wave to the right\n    RGB_MATRIX_PIXEL_FRACTAL,       // Single hue fractal filled keys pulsing horizontally out to edges\n    RGB_MATRIX_PIXEL_FLOW,          // Pulsing RGB flow along LED wiring with random hues\n    RGB_MATRIX_PIXEL_RAIN,          // Randomly light keys with random hues\n    RGB_MATRIX_TYPING_HEATMAP,      // How hot is your WPM!\n    RGB_MATRIX_DIGITAL_RAIN,        // That famous computer simulation\n    RGB_MATRIX_SOLID_REACTIVE_SIMPLE,   // Pulses keys hit to hue & value then fades value out\n    RGB_MATRIX_SOLID_REACTIVE,      // Static single hue, pulses keys hit to shifted hue then fades to current hue\n    RGB_MATRIX_SOLID_REACTIVE_WIDE,       // Hue & value pulse near a single key hit then fades value out\n    RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE,  // Hue & value pulse near multiple key hits then fades value out\n    RGB_MATRIX_SOLID_REACTIVE_CROSS,      // Hue & value pulse the same column and row of a single key hit then fades value out\n    RGB_MATRIX_SOLID_REACTIVE_MULTICROSS, // Hue & value pulse the same column and row of multiple key hits then fades value out\n    RGB_MATRIX_SOLID_REACTIVE_NEXUS,      // Hue & value pulse away on the same column and row of a single key hit then fades value out\n    RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS, // Hue & value pulse away on the same column and row of multiple key hits then fades value out\n    RGB_MATRIX_SPLASH,              // Full gradient & value pulse away from a single key hit then fades value out\n    RGB_MATRIX_MULTISPLASH,         // Full gradient & value pulse away from multiple key hits then fades value out\n    RGB_MATRIX_SOLID_SPLASH,        // Hue & value pulse away from a single key hit then fades value out\n    RGB_MATRIX_SOLID_MULTISPLASH,   // Hue & value pulse away from multiple key hits then fades value out\n    RGB_MATRIX_STARLIGHT,           // LEDs turn on and off at random at varying brightness, maintaining user set color\n    RGB_MATRIX_STARLIGHT_DUAL_HUE,  // LEDs turn on and off at random at varying brightness, modifies user set hue by +- 30\n    RGB_MATRIX_STARLIGHT_DUAL_SAT,  // LEDs turn on and off at random at varying brightness, modifies user set saturation by +- 30\n    RGB_MATRIX_RIVERFLOW,           // Modification to breathing animation, offset's animation depending on key location to simulate a river flowing\n    RGB_MATRIX_EFFECT_MAX\n};

You can enable a single effect by defining ENABLE_[EFFECT_NAME] in your config.h:

DefineDescription
#define ENABLE_RGB_MATRIX_ALPHAS_MODSEnables RGB_MATRIX_ALPHAS_MODS
#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWNEnables RGB_MATRIX_GRADIENT_UP_DOWN
#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHTEnables RGB_MATRIX_GRADIENT_LEFT_RIGHT
#define ENABLE_RGB_MATRIX_BREATHINGEnables RGB_MATRIX_BREATHING
#define ENABLE_RGB_MATRIX_BAND_SATEnables RGB_MATRIX_BAND_SAT
#define ENABLE_RGB_MATRIX_BAND_VALEnables RGB_MATRIX_BAND_VAL
#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SATEnables RGB_MATRIX_BAND_PINWHEEL_SAT
#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VALEnables RGB_MATRIX_BAND_PINWHEEL_VAL
#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SATEnables RGB_MATRIX_BAND_SPIRAL_SAT
#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VALEnables RGB_MATRIX_BAND_SPIRAL_VAL
#define ENABLE_RGB_MATRIX_CYCLE_ALLEnables RGB_MATRIX_CYCLE_ALL
#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHTEnables RGB_MATRIX_CYCLE_LEFT_RIGHT
#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWNEnables RGB_MATRIX_CYCLE_UP_DOWN
#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRONEnables RGB_MATRIX_RAINBOW_MOVING_CHEVRON
#define ENABLE_RGB_MATRIX_CYCLE_OUT_INEnables RGB_MATRIX_CYCLE_OUT_IN
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUALEnables RGB_MATRIX_CYCLE_OUT_IN_DUAL
#define ENABLE_RGB_MATRIX_CYCLE_PINWHEELEnables RGB_MATRIX_CYCLE_PINWHEEL
#define ENABLE_RGB_MATRIX_CYCLE_SPIRALEnables RGB_MATRIX_CYCLE_SPIRAL
#define ENABLE_RGB_MATRIX_DUAL_BEACONEnables RGB_MATRIX_DUAL_BEACON
#define ENABLE_RGB_MATRIX_RAINBOW_BEACONEnables RGB_MATRIX_RAINBOW_BEACON
#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELSEnables RGB_MATRIX_RAINBOW_PINWHEELS
#define ENABLE_RGB_MATRIX_FLOWER_BLOOMINGEnables RGB_MATRIX_FLOWER_BLOOMING
#define ENABLE_RGB_MATRIX_RAINDROPSEnables RGB_MATRIX_RAINDROPS
#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPSEnables RGB_MATRIX_JELLYBEAN_RAINDROPS
#define ENABLE_RGB_MATRIX_HUE_BREATHINGEnables RGB_MATRIX_HUE_BREATHING
#define ENABLE_RGB_MATRIX_HUE_PENDULUMEnables RGB_MATRIX_HUE_PENDULUM
#define ENABLE_RGB_MATRIX_HUE_WAVEEnables RGB_MATRIX_HUE_WAVE
#define ENABLE_RGB_MATRIX_PIXEL_FRACTALEnables RGB_MATRIX_PIXEL_FRACTAL
#define ENABLE_RGB_MATRIX_PIXEL_FLOWEnables RGB_MATRIX_PIXEL_FLOW
#define ENABLE_RGB_MATRIX_PIXEL_RAINEnables RGB_MATRIX_PIXEL_RAIN
#define ENABLE_RGB_MATRIX_STARLIGHTEnables RGB_MATRIX_STARLIGHT
#define ENABLE_RGB_MATRIX_STARLIGHT_DUAL_HUEEnables RGB_MATRIX_STARLIGHT_DUAL_HUE
#define ENABLE_RGB_MATRIX_STARLIGHT_DUAL_SATEnables RGB_MATRIX_STARLIGHT_DUAL_SAT
#define ENABLE_RGB_MATRIX_RIVERFLOWEnables RGB_MATRIX_RIVERFLOW
Framebuffer DefinesDescription
#define ENABLE_RGB_MATRIX_TYPING_HEATMAPEnables RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAINEnables RGB_MATRIX_DIGITAL_RAIN

TIP

These modes introduce additional logic that can increase firmware size.

Reactive DefinesDescription
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLEEnables RGB_MATRIX_SOLID_REACTIVE_SIMPLE
#define ENABLE_RGB_MATRIX_SOLID_REACTIVEEnables RGB_MATRIX_SOLID_REACTIVE
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDEEnables RGB_MATRIX_SOLID_REACTIVE_WIDE
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDEEnables RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSSEnables RGB_MATRIX_SOLID_REACTIVE_CROSS
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSSEnables RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUSEnables RGB_MATRIX_SOLID_REACTIVE_NEXUS
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUSEnables RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
#define ENABLE_RGB_MATRIX_SPLASHEnables RGB_MATRIX_SPLASH
#define ENABLE_RGB_MATRIX_MULTISPLASHEnables RGB_MATRIX_MULTISPLASH
#define ENABLE_RGB_MATRIX_SOLID_SPLASHEnables RGB_MATRIX_SOLID_SPLASH
#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASHEnables RGB_MATRIX_SOLID_MULTISPLASH

TIP

These modes introduce additional logic that can increase firmware size.

RGB Matrix Effect Typing Heatmap

This effect will color the RGB matrix according to a heatmap of recently pressed keys. Whenever a key is pressed its "temperature" increases as well as that of its neighboring keys. The temperature of each key is then decreased automatically every 25 milliseconds by default.

In order to change the delay of temperature decrease define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS:

c
#define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 50

As heatmap uses the physical position of the leds set in the g_led_config, you may need to tweak the following options to get the best effect for your keyboard. Note the size of this grid is 224x64.

Limit the distance the effect spreads to surrounding keys.

c
#define RGB_MATRIX_TYPING_HEATMAP_SPREAD 40

Limit how hot surrounding keys get from each press.

c
#define RGB_MATRIX_TYPING_HEATMAP_AREA_LIMIT 16

Remove the spread effect entirely.

c
#define RGB_MATRIX_TYPING_HEATMAP_SLIM

It's also possible to adjust the tempo of heating up. It's defined as the number of shades that are increased on the HSV scale. Decreasing this value increases the number of keystrokes needed to fully heat up the key.

c
#define RGB_MATRIX_TYPING_HEATMAP_INCREASE_STEP 32

RGB Matrix Effect Solid Reactive

Solid reactive effects will pulse RGB light on key presses with user configurable hues. To enable gradient mode that will automatically change reactive color, add the following define:

c
#define RGB_MATRIX_SOLID_REACTIVE_GRADIENT_MODE

Gradient mode will loop through the color wheel hues over time and its duration can be controlled with the effect speed keycodes (RGB_SPI/RGB_SPD).

Custom RGB Matrix Effects

By setting RGB_MATRIX_CUSTOM_USER = yes in rules.mk, new effects can be defined directly from your keymap or userspace, without having to edit any QMK core files. To declare new effects, create a rgb_matrix_user.inc file in the user keymap directory or userspace folder.

TIP

Hardware maintainers who want to limit custom effects to a specific keyboard can create a rgb_matrix_kb.inc file in the root of the keyboard directory, and add RGB_MATRIX_CUSTOM_KB = yes to the keyboard level rules.mk.

c
// !!! DO NOT ADD #pragma once !!! //\n\n// Step 1.\n// Declare custom effects using the RGB_MATRIX_EFFECT macro\n// (note the lack of semicolon after the macro!)\nRGB_MATRIX_EFFECT(my_cool_effect)\nRGB_MATRIX_EFFECT(my_cool_effect2)\n\n// Step 2.\n// Define effects inside the `RGB_MATRIX_CUSTOM_EFFECT_IMPLS` ifdef block\n#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS\n\n// e.g: A simple effect, self-contained within a single method\nstatic bool my_cool_effect(effect_params_t* params) {\n  RGB_MATRIX_USE_LIMITS(led_min, led_max);\n  for (uint8_t i = led_min; i < led_max; i++) {\n    rgb_matrix_set_color(i, 0xff, 0xff, 0x00);\n  }\n  return rgb_matrix_check_finished_leds(led_max);\n}\n\n// e.g: A more complex effect, relying on external methods and state, with\n// dedicated init and run methods\nstatic uint8_t some_global_state;\nstatic void my_cool_effect2_complex_init(effect_params_t* params) {\n  some_global_state = 1;\n}\nstatic bool my_cool_effect2_complex_run(effect_params_t* params) {\n  RGB_MATRIX_USE_LIMITS(led_min, led_max);\n  for (uint8_t i = led_min; i < led_max; i++) {\n    rgb_matrix_set_color(i, 0xff, some_global_state++, 0xff);\n  }\n  return rgb_matrix_check_finished_leds(led_max);\n}\nstatic bool my_cool_effect2(effect_params_t* params) {\n  if (params->init) my_cool_effect2_complex_init(params);\n  return my_cool_effect2_complex_run(params);\n}\n\n#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS

To switch to your custom effect programmatically, simply call rgb_matrix_mode() and prepend RGB_MATRIX_CUSTOM_ to the effect name you specified in RGB_MATRIX_EFFECT(). For example, an effect declared as RGB_MATRIX_EFFECT(my_cool_effect) would be referenced with:

c
rgb_matrix_mode(RGB_MATRIX_CUSTOM_my_cool_effect);

For inspiration and examples, check out the built-in effects under quantum/rgb_matrix/animations/.

Colors

These are shorthands to popular colors. The RGB ones can be passed to the setrgb functions, while the HSV ones to the sethsv functions.

RGBHSV
RGB_AZUREHSV_AZURE
RGB_BLACK/RGB_OFFHSV_BLACK/HSV_OFF
RGB_BLUEHSV_BLUE
RGB_CHARTREUSEHSV_CHARTREUSE
RGB_CORALHSV_CORAL
RGB_CYANHSV_CYAN
RGB_GOLDHSV_GOLD
RGB_GOLDENRODHSV_GOLDENROD
RGB_GREENHSV_GREEN
RGB_MAGENTAHSV_MAGENTA
RGB_ORANGEHSV_ORANGE
RGB_PINKHSV_PINK
RGB_PURPLEHSV_PURPLE
RGB_REDHSV_RED
RGB_SPRINGGREENHSV_SPRINGGREEN
RGB_TEALHSV_TEAL
RGB_TURQUOISEHSV_TURQUOISE
RGB_WHITEHSV_WHITE
RGB_YELLOWHSV_YELLOW

These are defined in color.h. Feel free to add to this list!

Additional config.h Options

c
#define RGB_MATRIX_KEYRELEASES // reactive effects respond to keyreleases (instead of keypresses)\n#define RGB_MATRIX_TIMEOUT 0 // number of milliseconds to wait until rgb automatically turns off\n#define RGB_MATRIX_SLEEP // turn off effects when suspended\n#define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)\n#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)\n#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255\n#define RGB_MATRIX_DEFAULT_ON true // Sets the default enabled state, if none has been set\n#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set\n#define RGB_MATRIX_DEFAULT_HUE 0 // Sets the default hue value, if none has been set\n#define RGB_MATRIX_DEFAULT_SAT 255 // Sets the default saturation value, if none has been set\n#define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set\n#define RGB_MATRIX_DEFAULT_SPD 127 // Sets the default animation speed, if none has been set\n#define RGB_MATRIX_DEFAULT_FLAGS LED_FLAG_ALL // Sets the default LED flags, if none has been set\n#define RGB_MATRIX_DISABLE_KEYCODES // disables control of rgb matrix by keycodes (must use code functions to control the feature)\n#define RGB_MATRIX_SPLIT { X, Y } 	// (Optional) For split keyboards, the number of LEDs connected on each half. X = left, Y = Right.\n                              		// If reactive effects are enabled, you also will want to enable SPLIT_TRANSPORT_MIRROR\n#define RGB_TRIGGER_ON_KEYDOWN      // Triggers RGB keypress events on key down. This makes RGB control feel more responsive. This may cause RGB to not function properly on some boards

EEPROM storage

The EEPROM for it is currently shared with the LED Matrix system (it's generally assumed only one feature would be used at a time).

Callbacks

Indicators

If you want to set custom indicators, such as an LED for Caps Lock, or layer indication, then you can use the rgb_matrix_indicators_kb function on the keyboard level source file, or rgb_matrix_indicators_user function in the user keymap.c.

c
bool rgb_matrix_indicators_kb(void) {\n    if (!rgb_matrix_indicators_user()) {\n        return false;\n    }\n    rgb_matrix_set_color(index, red, green, blue);\n    return true;\n}

In addition, there are the advanced indicator functions. These are aimed at those with heavily customized displays, where rendering every LED per cycle is expensive. Such as some of the "drashna" layouts. This includes a special macro to help make this easier to use: RGB_MATRIX_INDICATOR_SET_COLOR(i, r, g, b).

c
bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {\n    RGB_MATRIX_INDICATOR_SET_COLOR(index, red, green, blue);\n    return false;\n}

Indicator Examples

Caps Lock indicator on alphanumeric flagged keys:

c
bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {\n    if (host_keyboard_led_state().caps_lock) {\n        for (uint8_t i = led_min; i < led_max; i++) {\n            if (g_led_config.flags[i] & LED_FLAG_KEYLIGHT) {\n                rgb_matrix_set_color(i, RGB_RED);\n            }\n        }\n    }\n    return false;\n}

Layer indicator on all keys:

c
bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {\n    for (uint8_t i = led_min; i < led_max; i++) {\n        switch(get_highest_layer(layer_state|default_layer_state)) {\n            case 2:\n                rgb_matrix_set_color(i, RGB_BLUE);\n                break;\n            case 1:\n                rgb_matrix_set_color(i, RGB_YELLOW);\n                break;\n            default:\n                break;\n        }\n    }\n    return false;\n}

Layer indicator only on keys with configured keycodes:

c
bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {\n    if (get_highest_layer(layer_state) > 0) {\n        uint8_t layer = get_highest_layer(layer_state);\n\n        for (uint8_t row = 0; row < MATRIX_ROWS; ++row) {\n            for (uint8_t col = 0; col < MATRIX_COLS; ++col) {\n                uint8_t index = g_led_config.matrix_co[row][col];\n\n                if (index >= led_min && index < led_max && index != NO_LED &&\n                keymap_key_to_keycode(layer, (keypos_t){col,row}) > KC_TRNS) {\n                    rgb_matrix_set_color(index, RGB_GREEN);\n                }\n            }\n        }\n    }\n    return false;\n}

TIP

Split keyboards will require layer state data syncing with #define SPLIT_LAYER_STATE_ENABLE. See Data Sync Options for more details.

Examples

This example sets the modifiers to be a specific color based on the layer state. You can use a switch case here, instead, if you would like. This uses HSV and then converts to RGB, because this allows the brightness to be limited (important when using the WS2812 driver).

c
bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {\n    HSV hsv = {0, 255, 255};\n\n    if (layer_state_is(layer_state, 2)) {\n        hsv = (HSV){130, 255, 255};\n    } else {\n        hsv = (HSV){30, 255, 255};\n    }\n\n    if (hsv.v > rgb_matrix_get_val()) {\n        hsv.v = rgb_matrix_get_val();\n    }\n    RGB rgb = hsv_to_rgb(hsv);\n\n    for (uint8_t i = led_min; i < led_max; i++) {\n        if (HAS_FLAGS(g_led_config.flags[i], 0x01)) { // 0x01 == LED_FLAG_MODIFIER\n            rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);\n        }\n    }\n    return false;\n}

If you want to indicate a Host LED status (caps lock, num lock, etc), you can use something like this to light up the caps lock key:

c
bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {\n    if (host_keyboard_led_state().caps_lock) {\n        RGB_MATRIX_INDICATOR_SET_COLOR(5, 255, 255, 255); // assuming caps lock is at led #5\n    } else {\n        RGB_MATRIX_INDICATOR_SET_COLOR(5, 0, 0, 0);\n    }\n    return false;\n}

TIP

RGB indicators on split keyboards will require state information synced to the slave half (e.g. #define SPLIT_LAYER_STATE_ENABLE). See data sync options for more details.

Indicators without RGB Matrix Effect

If you want to just use RGB indicators without RGB matrix effect, it is not possible to disable the latter because toggling RGB off will disable everything. You can workaround it with solid effect and colors off using this init function:

c
void keyboard_post_init_user(void) {\n    rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);\n    rgb_matrix_sethsv_noeeprom(HSV_OFF);\n}

API

void rgb_matrix_toggle(void)

Toggle RGB Matrix on or off.


void rgb_matrix_toggle_noeeprom(void)

Toggle RGB Matrix on or off. New state is not written to EEPROM.


void rgb_matrix_enable(void)

Turn RGB Matrix on.


void rgb_matrix_enable_noeeprom(void)

Turn RGB Matrix on. New state is not written to EEPROM.


void rgb_matrix_disable(void)

Turn RGB Matrix off.


void rgb_matrix_disable_noeeprom(void)

Turn RGB Matrix off. New state is not written to EEPROM.


bool rgb_matrix_is_enabled(void)

Get the current enabled state of RGB Matrix.

Return Value

true if RGB Matrix is enabled.


void rgb_matrix_set_color(uint8_t index, uint8_t r, uint8_t g, uint8_t b)

Set the color of a single LED.

This function can only be run from within an effect or indicator callback, otherwise the currently running animation will simply overwrite it on the next frame.

Arguments


void rgb_matrix_set_color_all(uint8_t r, uint8_t g, uint8_t b)

Set the color of all LEDs.

This function can only be run from within an effect or indicator callback, otherwise the currently running animation will simply overwrite it on the next frame.

Arguments


void rgb_matrix_mode(uint8_t mode)

Set the currently running effect.

Arguments


void rgb_matrix_mode_noeeprom(uint8_t mode)

Set the currently running effect. New state is not written to EEPROM.

Arguments


void rgb_matrix_step(void)

Move to the next enabled effect.


void rgb_matrix_step_noeeprom(void)

Move to the next enabled effect. New state is not written to EEPROM.


void rgb_matrix_step_reverse(void)

Move to the previous enabled effect.


void rgb_matrix_step_reverse_noeeprom(void)

Move to the previous enabled effect. New state is not written to EEPROM.


uint8_t rgb_matrix_get_mode(void)

Get the currently running effect.

Return Value

The index of the currently running effect.


void rgb_matrix_increase_hue(void)

Increase the global effect hue.


void rgb_matrix_increase_hue_noeeprom(void)

Increase the global effect hue. New state is not written to EEPROM.


void rgb_matrix_decrease_hue(void)

Decrease the global effect hue.


void rgb_matrix_decrease_hue_noeeprom(void)

Decrease the global effect hue. New state is not written to EEPROM.


uint8_t rgb_matrix_get_hue(void)

Get the current global effect hue.

Return Value

The current hue value, from 0 to 255.


void rgb_matrix_increase_sat(void)

Increase the global effect saturation.


void rgb_matrix_increase_sat_noeeprom(void)

Increase the global effect saturation. New state is not written to EEPROM.


void rgb_matrix_decrease_sat(void)

Decrease the global effect saturation.


void rgb_matrix_decrease_sat_noeeprom(void)

Decrease the global effect saturation. New state is not written to EEPROM.


uint8_t rgb_matrix_get_sat(void)

Get the current global effect saturation.

Return Value

The current saturation value, from 0 to 255.


void rgb_matrix_increase_val(void)

Increase the global effect value (brightness).


void rgb_matrix_increase_val_noeeprom(void)

Increase the global effect value (brightness). New state is not written to EEPROM.


void rgb_matrix_decrease_val(void)

Decrease the global effect value (brightness).


void rgb_matrix_decrease_val_noeeprom(void)

Decrease the global effect value (brightness). New state is not written to EEPROM.


uint8_t rgb_matrix_get_val(void)

Get the current global effect value (brightness).

Return Value

The current brightness value, from 0 to 255.


void rgb_matrix_increase_speed(void)

Increase the effect speed.


void rgb_matrix_increase_speed_noeeprom(void)

Increase the effect speed. New state is not written to EEPROM.


void rgb_matrix_decrease_speed(void)

Decrease the effect speed.


void rgb_matrix_decrease_speed_noeeprom(void)

Decrease the effect speed. New state is not written to EEPROM.


void rgb_matrix_set_speed(uint8_t speed)

Set the effect speed.

Arguments


void rgb_matrix_set_speed_noeeprom(uint8_t speed)

Set the effect speed. New state is not written to EEPROM.

Arguments


uint8_t rgb_matrix_get_speed(void)

Get the current effect speed.

Return Value

The current effect speed, from 0 to 255.


void rgb_matrix_sethsv(uint8_t h, uint8_t s, uint8_t v)

Set the global effect hue, saturation, and value (brightness).

Arguments


void rgb_matrix_sethsv_noeeprom(uint8_t h, uint8_t s, uint8_t v)

Set the global effect hue, saturation, and value (brightness). New state is not written to EEPROM.

Arguments


HSV rgb_matrix_get_hsv(void)

Get the current global effect hue, saturation, and value (brightness).

Return Value

The current effect HSV as an HSV struct.


void rgb_matrix_reload_from_eeprom(void)

Reload the effect configuration (enabled, mode and color) from EEPROM.


bool rgb_matrix_get_suspend_state(void)

Get the current suspend state of RGB Matrix.

Return Value

true if RGB Matrix is currently in the suspended state.


bool rgb_matrix_indicators_kb(void)

Keyboard-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.

Return Value

Currently unused.


bool rgb_matrix_indicators_user(void)

Keymap-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.

Return Value

true to continue running the keyboard-level callback.


bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max)

Keyboard-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.

Arguments

Return Value

Currently unused.


bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max)

Keymap-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.

Arguments

Return Value

true to continue running the keyboard-level callback.

', 276); diff --git a/assets/features_rgb_matrix.md.BE6vKO90.lean.js b/assets/features_rgb_matrix.md.C0kYzT0E.lean.js similarity index 91% rename from assets/features_rgb_matrix.md.BE6vKO90.lean.js rename to assets/features_rgb_matrix.md.C0kYzT0E.lean.js index ad0147b14ca..8a086e96654 100644 --- a/assets/features_rgb_matrix.md.BE6vKO90.lean.js +++ b/assets/features_rgb_matrix.md.C0kYzT0E.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"RGB Matrix Lighting","description":"","frontmatter":{},"headers":[],"relativePath":"features/rgb_matrix.md","filePath":"features/rgb_matrix.md"}'); const _sfc_main = { name: "features/rgb_matrix.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 276); diff --git a/assets/features_rgblight.md.O1OG9fO_.js b/assets/features_rgblight.md.Caa29UD3.js similarity index 99% rename from assets/features_rgblight.md.O1OG9fO_.js rename to assets/features_rgblight.md.Caa29UD3.js index f980cf25b33..cc0ff0c12bd 100644 --- a/assets/features_rgblight.md.O1OG9fO_.js +++ b/assets/features_rgblight.md.Caa29UD3.js @@ -1,5 +1,5 @@ import { _ as _imports_0 } from "./chunks/color-wheel.DIUCmfNZ.js"; -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"RGB Lighting","description":"","frontmatter":{},"headers":[],"relativePath":"features/rgblight.md","filePath":"features/rgblight.md"}'); const _sfc_main = { name: "features/rgblight.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

RGB Lighting

QMK has the ability to control RGB LEDs attached to your keyboard. This is commonly called underglow, due to the LEDs often being mounted on the bottom of the keyboard, producing a nice diffused effect when combined with a translucent case.

Planck with RGB Underglow

Some keyboards come with RGB LEDs preinstalled. Others must have them installed after the fact. See the Hardware Modification section for information on adding RGB lighting to your keyboard.

Currently QMK supports the following addressable LEDs:

These LEDs are called "addressable" because instead of using a wire per color, each LED contains a small microchip that understands a special protocol sent over a single wire. The chip passes on the remaining data to the next LED, allowing them to be chained together. In this way, you can easily control the color of the individual LEDs.

Usage

On keyboards with onboard RGB LEDs, it is usually enabled by default. If it is not working for you, check that your rules.mk includes the following:

make
RGBLIGHT_ENABLE = yes

TIP

There are additional configuration options for ARM controllers that offer increased performance over the default WS2812 bitbang driver. Please see WS2812 Driver for more information.

For APA102 LEDs, add the following to your rules.mk:

make
RGBLIGHT_ENABLE = yes\nRGBLIGHT_DRIVER = apa102

At minimum you must define the data pin your LED strip is connected to, and the number of LEDs in the strip, in your config.h. For APA102 LEDs, you must also define the clock pin. If your keyboard has onboard RGB LEDs, and you are simply creating a keymap, you usually won't need to modify these.

DefineDescription
WS2812_DI_PINThe pin connected to the data pin of the LEDs (WS2812)
APA102_DI_PINThe pin connected to the data pin of the LEDs (APA102)
APA102_CI_PINThe pin connected to the clock pin of the LEDs (APA102)
RGBLIGHT_LED_COUNTThe number of LEDs connected
RGBLED_SPLIT(Optional) For split keyboards, the number of LEDs connected on each half

Then you should be able to use the keycodes below to change the RGB lighting to your liking.

Color Selection

QMK uses Hue, Saturation, and Value to select colors rather than RGB. The color wheel below demonstrates how this works.

HSV Color Wheel

Changing the Hue cycles around the circle.
Changing the Saturation moves between the inner and outer sections of the wheel, affecting the intensity of the color.
Changing the Value sets the overall brightness.

QMK Color Wheel with HSV Values

Keycodes

KeyAliasesDescription
QK_UNDERGLOW_TOGGLEUG_TOGGToggle RGB lighting on or off
QK_UNDERGLOW_MODE_NEXTUG_NEXTCycle through modes, reverse direction when Shift is held
QK_UNDERGLOW_MODE_PREVIOUSUG_PREVCycle through modes in reverse, forward direction when Shift is held
QK_UNDERGLOW_HUE_UPUG_HUEUIncrease hue, decrease hue when Shift is held
QK_UNDERGLOW_HUE_DOWNUG_HUEDDecrease hue, increase hue when Shift is held
QK_UNDERGLOW_SATURATION_UPUG_SATUIncrease saturation, decrease saturation when Shift is held
QK_UNDERGLOW_SATURATION_DOWNUG_SATDDecrease saturation, increase saturation when Shift is held
QK_UNDERGLOW_VALUE_UPUG_VALUIncrease value (brightness), decrease value when Shift is held
QK_UNDERGLOW_VALUE_DOWNUG_VALDDecrease value (brightness), increase value when Shift is held
QK_UNDERGLOW_SPEED_UPUG_SPDUIncrease effect speed (brightness), decrease speed when Shift is held
QK_UNDERGLOW_SPEED_DOWNUG_SPDDDecrease effect speed (brightness), increase speed when Shift is held
RGB_MODE_PLAINRGB_M_P Static (no animation) mode (deprecated)
RGB_MODE_BREATHERGB_M_BBreathing animation mode (deprecated)
RGB_MODE_RAINBOWRGB_M_RRainbow animation mode (deprecated)
RGB_MODE_SWIRLRGB_M_SWSwirl animation mode (deprecated)
RGB_MODE_SNAKERGB_M_SNSnake animation mode (deprecated)
RGB_MODE_KNIGHTRGB_M_K"Knight Rider" animation mode (deprecated)
RGB_MODE_XMASRGB_M_XChristmas animation mode (deprecated)
RGB_MODE_GRADIENTRGB_M_GStatic gradient animation mode (deprecated)
RGB_MODE_RGBTESTRGB_M_TRed, Green, Blue test animation mode (deprecated)
RGB_MODE_TWINKLERGB_M_TWTwinkle animation mode (deprecated)

TIP

These keycodes cannot be used with functions like tap_code16() as they are not USB HID keycodes. If you wish to replicate similar behaviour in custom code within your firmware (e.g. inside encoder_update_user() or process_record_user()), the equivalent RGB functions should be used instead.

WARNING

By default, if you have both the RGB Light and the RGB Matrix feature enabled, these keycodes will work for both features, at the same time. You can disable the keycode functionality by defining the *_DISABLE_KEYCODES option for the specific feature.

Configuration

Your RGB lighting can be configured by placing these #defines in your config.h:

DefineDefaultDescription
RGBLIGHT_HUE_STEP8The number of steps to cycle through the hue by
RGBLIGHT_SAT_STEP17The number of steps to increment the saturation by
RGBLIGHT_VAL_STEP17The number of steps to increment the brightness by
RGBLIGHT_LIMIT_VAL255The maximum brightness level
RGBLIGHT_SLEEPNot definedIf defined, the RGB lighting will be switched off when the host goes to sleep
RGBLIGHT_SPLITNot definedIf defined, synchronization functionality for split keyboards is added
RGBLIGHT_DISABLE_KEYCODESNot definedIf defined, disables the ability to control RGB Light from the keycodes. You must use code functions to control the feature
RGBLIGHT_DEFAULT_MODERGBLIGHT_MODE_STATIC_LIGHTThe default mode to use upon clearing the EEPROM
RGBLIGHT_DEFAULT_HUE0 (red)The default hue to use upon clearing the EEPROM
RGBLIGHT_DEFAULT_SATUINT8_MAX (255)The default saturation to use upon clearing the EEPROM
RGBLIGHT_DEFAULT_VALRGBLIGHT_LIMIT_VALThe default value (brightness) to use upon clearing the EEPROM
RGBLIGHT_DEFAULT_SPD0The default speed to use upon clearing the EEPROM
RGBLIGHT_DEFAULT_ONtrueEnable RGB lighting upon clearing the EEPROM

Effects and Animations

Not only can this lighting be whatever color you want, if RGBLIGHT_EFFECT_xxxx is defined, you also have a number of animation modes at your disposal:

Mode number symbolAdditional numberDescription
RGBLIGHT_MODE_STATIC_LIGHTNoneSolid color (this mode is always enabled)
RGBLIGHT_MODE_BREATHING0,1,2,3Solid color breathing
RGBLIGHT_MODE_RAINBOW_MOOD0,1,2Cycling rainbow
RGBLIGHT_MODE_RAINBOW_SWIRL0,1,2,3,4,5Swirling rainbow
RGBLIGHT_MODE_SNAKE0,1,2,3,4,5Snake
RGBLIGHT_MODE_KNIGHT0,1,2Knight
RGBLIGHT_MODE_CHRISTMASNoneChristmas
RGBLIGHT_MODE_STATIC_GRADIENT0,1,..,9Static gradient
RGBLIGHT_MODE_RGB_TESTNoneRGB Test
RGBLIGHT_MODE_ALTERNATINGNoneAlternating
RGBLIGHT_MODE_TWINKLE0,1,2,3,4,5Twinkle

Check out this video for a demonstration.

Note: For versions older than 0.6.117, The mode numbers were written directly. In quantum/rgblight/rgblight.h there is a contrast table between the old mode number and the current symbol.

Effect and Animation Toggles

Use these defines to add or remove animations from the firmware. When you are running low on flash space, it can be helpful to disable animations you are not using.

DefineDefaultDescription
RGBLIGHT_ANIMATIONSNot definedEnable all additional animation modes. (deprecated)
RGBLIGHT_EFFECT_ALTERNATINGNot definedEnable alternating animation mode.
RGBLIGHT_EFFECT_BREATHINGNot definedEnable breathing animation mode.
RGBLIGHT_EFFECT_CHRISTMASNot definedEnable christmas animation mode.
RGBLIGHT_EFFECT_KNIGHTNot definedEnable knight animation mode.
RGBLIGHT_EFFECT_RAINBOW_MOODNot definedEnable rainbow mood animation mode.
RGBLIGHT_EFFECT_RAINBOW_SWIRLNot definedEnable rainbow swirl animation mode.
RGBLIGHT_EFFECT_RGB_TESTNot definedEnable RGB test animation mode.
RGBLIGHT_EFFECT_SNAKENot definedEnable snake animation mode.
RGBLIGHT_EFFECT_STATIC_GRADIENTNot definedEnable static gradient mode.
RGBLIGHT_EFFECT_TWINKLENot definedEnable twinkle animation mode.

WARNING

RGBLIGHT_ANIMATIONS is being deprecated and animation modes should be explicitly defined.

Effect and Animation Settings

The following options are used to tweak the various animations:

DefineDefaultDescription
RGBLIGHT_EFFECT_BREATHE_CENTERNot definedIf defined, used to calculate the curve for the breathing animation. Valid values are 1.0 to 2.7
RGBLIGHT_EFFECT_BREATHE_MAX255The maximum brightness for the breathing mode. Valid values are 1 to 255
RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL40How long (in milliseconds) to wait between animation steps for the "Christmas" animation
RGBLIGHT_EFFECT_CHRISTMAS_STEP2The number of LEDs to group the red/green colors by for the "Christmas" animation
RGBLIGHT_EFFECT_KNIGHT_LED_NUMRGBLIGHT_LED_COUNTThe number of LEDs to have the "Knight" animation travel
RGBLIGHT_EFFECT_KNIGHT_LENGTH3The number of LEDs to light up for the "Knight" animation
RGBLIGHT_EFFECT_KNIGHT_OFFSET0The number of LEDs to start the "Knight" animation from the start of the strip by
RGBLIGHT_RAINBOW_SWIRL_RANGE255Range adjustment for the rainbow swirl effect to get different swirls
RGBLIGHT_EFFECT_SNAKE_LENGTH4The number of LEDs to light up for the "Snake" animation
RGBLIGHT_EFFECT_TWINKLE_LIFE200Adjusts how quickly each LED brightens and dims when twinkling (in animation steps)
RGBLIGHT_EFFECT_TWINKLE_PROBABILITY1/127Adjusts how likely each LED is to twinkle (on each animation step)

Example Usage to Reduce Memory Footprint

  1. Use #undef to selectively disable animations. The following would disable two animations and save about 4KiB:
diff
 #undef RGBLIGHT_LED_COUNT\n+#undef RGBLIGHT_EFFECT_STATIC_GRADIENT\n+#undef RGBLIGHT_EFFECT_RAINBOW_SWIRL\n #define RGBLIGHT_LED_COUNT 12\n #define RGBLIGHT_HUE_STEP 8\n #define RGBLIGHT_SAT_STEP 8

Animation Speed

You can also modify the speeds that the different modes animate at:

Here is a quick demo on Youtube (with NPKC KC60) (https://www.youtube.com/watch?v=VKrpPAHlisY).

c
// How long (in milliseconds) to wait between animation steps for each of the "Solid color breathing" animations\nconst uint8_t RGBLED_BREATHING_INTERVALS[] PROGMEM = {30, 20, 10, 5};\n\n// How long (in milliseconds) to wait between animation steps for each of the "Cycling rainbow" animations\nconst uint8_t RGBLED_RAINBOW_MOOD_INTERVALS[] PROGMEM = {120, 60, 30};\n\n// How long (in milliseconds) to wait between animation steps for each of the "Swirling rainbow" animations\nconst uint8_t RGBLED_RAINBOW_SWIRL_INTERVALS[] PROGMEM = {100, 50, 20};\n\n// How long (in milliseconds) to wait between animation steps for each of the "Snake" animations\nconst uint8_t RGBLED_SNAKE_INTERVALS[] PROGMEM = {100, 50, 20};\n\n// How long (in milliseconds) to wait between animation steps for each of the "Knight" animations\nconst uint8_t RGBLED_KNIGHT_INTERVALS[] PROGMEM = {127, 63, 31};\n\n// How long (in milliseconds) to wait between animation steps for each of the "Twinkle" animations\nconst uint8_t RGBLED_TWINKLE_INTERVALS[] PROGMEM = {50, 25, 10};\n\n// These control which hues are selected for each of the "Static gradient" modes\nconst uint8_t RGBLED_GRADIENT_RANGES[] PROGMEM = {255, 170, 127, 85, 64};

Lighting Layers

TIP

Note: Lighting Layers is an RGB Light feature, it will not work for RGB Matrix. See RGB Matrix Indicators for details on how to do so.

By including #define RGBLIGHT_LAYERS in your config.h file you can enable lighting layers. These make it easy to use your underglow LEDs as status indicators to show which keyboard layer is currently active, or the state of caps lock, all without disrupting any animations. Here's a video showing an example of what you can do.

Defining Lighting Layers

By default, 8 layers are possible. This can be expanded to as many as 32 by overriding the definition of RGBLIGHT_MAX_LAYERS in config.h (e.g. #define RGBLIGHT_MAX_LAYERS 32). Please note, if you use a split keyboard, you will need to flash both sides of the split after changing this. Also, increasing the maximum will increase the firmware size, and will slow sync on split keyboards.

To define a layer, we modify keymap.c to list the LED ranges and the colors we want to overlay on them using an array of rgblight_segment_t using the RGBLIGHT_LAYER_SEGMENTS macro. We can define multiple layers and enable/disable them independently:

c
// Light LEDs 6 to 9 and 12 to 15 red when caps lock is active. Hard to ignore!\nconst rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(\n    {6, 4, HSV_RED},       // Light 4 LEDs, starting with LED 6\n    {12, 4, HSV_RED}       // Light 4 LEDs, starting with LED 12\n);\n// Light LEDs 9 & 10 in cyan when keyboard layer 1 is active\nconst rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(\n    {9, 2, HSV_CYAN}\n);\n// Light LEDs 11 & 12 in purple when keyboard layer 2 is active\nconst rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS(\n    {11, 2, HSV_PURPLE}\n);\n// Light LEDs 13 & 14 in green when keyboard layer 3 is active\nconst rgblight_segment_t PROGMEM my_layer3_layer[] = RGBLIGHT_LAYER_SEGMENTS(\n    {13, 2, HSV_GREEN}\n);\n// etc..

We combine these layers into an array using the RGBLIGHT_LAYERS_LIST macro, and assign it to the rgblight_layers variable during keyboard setup. Note that you can only define up to 8 lighting layers. Any extra layers will be ignored. Since the different lighting layers overlap, the order matters in the array, with later layers taking precedence:

c
// Now define the array of layers. Later layers take precedence\nconst rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(\n    my_capslock_layer,\n    my_layer1_layer,    // Overrides caps lock layer\n    my_layer2_layer,    // Overrides other layers\n    my_layer3_layer     // Overrides other layers\n);\n\nvoid keyboard_post_init_user(void) {\n    // Enable the LED layers\n    rgblight_layers = my_rgb_layers;\n}

Note: For split keyboards with two controllers, both sides need to be flashed when updating the contents of rgblight_layers.

Enabling and disabling lighting layers

Everything above just configured the definition of each lighting layer. We can now enable and disable the lighting layers whenever the state of the keyboard changes:

c
bool led_update_user(led_t led_state) {\n    rgblight_set_layer_state(0, led_state.caps_lock);\n    return true;\n}\n\nlayer_state_t default_layer_state_set_user(layer_state_t state) {\n    rgblight_set_layer_state(1, layer_state_cmp(state, _DVORAK));\n    return state;\n}\n\nlayer_state_t layer_state_set_user(layer_state_t state) {\n    rgblight_set_layer_state(2, layer_state_cmp(state, _FN));\n    rgblight_set_layer_state(3, layer_state_cmp(state, _ADJUST));\n    return state;\n}

By including #define RGBLIGHT_LAYER_BLINK in your config.h file you can turn a lighting layer on for a specified duration. Once the specified number of milliseconds has elapsed the layer will be turned off. This is useful, e.g., if you want to acknowledge some action (e.g. toggling some setting):

c
const rgblight_segment_t PROGMEM _yes_layer[] = RGBLIGHT_LAYER_SEGMENTS( {9, 6, HSV_GREEN} );\nconst rgblight_segment_t PROGMEM _no_layer[] = RGBLIGHT_LAYER_SEGMENTS( {9, 6, HSV_RED} );\n\nconst rgblight_segment_t* const PROGMEM _rgb_layers[] =\n    RGBLIGHT_LAYERS_LIST( _yes_layer, _no_layer );\n\nvoid keyboard_post_init_user(void) {\n    rgblight_layers = _rgb_layers;\n}\n\n// Note we user post_process_record_user because we want the state\n// after the flag has been flipped...\nvoid post_process_record_user(uint16_t keycode, keyrecord_t *record) {\n    switch (keycode) {\n        case QK_DEBUG_TOGGLE:\n            rgblight_blink_layer(debug_enable ? 0 : 1, 500);\n            break;\n\n        case NK_TOGG:\n        case NK_ON:\n        case NK_OFF:\n            rgblight_blink_layer(keymap_config.nkro ? 0 : 1, 500);\n            break;\n    }\n}

You can also use rgblight_blink_layer_repeat to specify the amount of times the layer is supposed to blink. Using the layers from above,

c
void post_process_record_user(uint16_t keycode, keyrecord_t *record) {\n    switch (keycode) {\n        case QK_DEBUG_TOGGLE:\n            rgblight_blink_layer_repeat(debug_enable ? 0 : 1, 200, 3);\n            break;\n    }\n}

would turn the layer 0 (or 1) on and off again three times when DB_TOGG is pressed.

Blinking accumulates layers so if multiple layers are set blinking at the same time they will all blink for the duration and repeat times of the last layer to be blinked. To stop these other layers from blinking use rgblight_unblink_layer or rgblight_unblink_all_but_layer:

c
rgblight_blink_layer(1, 500);\nrgblight_unblink_all_but_layer(1);
c
rgblight_unblink_layer(3);\nrgblight_blink_layer(2, 500);

WARNING

Lighting layers on split keyboards will require layer state synced to the slave half (e.g. #define SPLIT_LAYER_STATE_ENABLE). See data sync options for more details.

Overriding RGB Lighting on/off status

Normally lighting layers are not shown when RGB Lighting is disabled (e.g. with UG_TOGG keycode). If you would like lighting layers to work even when the RGB Lighting is otherwise off, add #define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF to your config.h.

Retain brightness

Usually lighting layers apply their configured brightness once activated. If you would like lighting layers to retain the currently used brightness (as returned by rgblight_get_val()), add #define RGBLIGHT_LAYERS_RETAIN_VAL to your config.h.

Functions

If you need to change your RGB lighting in code, for example in a macro to change the color whenever you switch layers, QMK provides a set of functions to assist you. See rgblight.h for the full list, but the most commonly used functions include:

Low level Functions

FunctionDescription
rgblight_set()Flush out led buffers to LEDs
rgblight_set_clipping_range(pos, num)Set clipping Range. see Clipping Range

Effects and Animations Functions

effect range setting

FunctionDescription
rgblight_set_effect_range(pos, num)Set Effects Range

direct operation

FunctionDescription
rgblight_setrgb_at(r, g, b, index)Set a single LED to the given RGB value, where r/g/b are between 0 and 255 and index is between 0 and RGBLIGHT_LED_COUNT (not written to EEPROM)
rgblight_sethsv_at(h, s, v, index)Set a single LED to the given HSV value, where h/s/v are between 0 and 255, and index is between 0 and RGBLIGHT_LED_COUNT (not written to EEPROM)
rgblight_setrgb_range(r, g, b, start, end)Set a continuous range of LEDs to the given RGB value, where r/g/b are between 0 and 255 and start(included) and stop(excluded) are between 0 and RGBLIGHT_LED_COUNT (not written to EEPROM)
rgblight_sethsv_range(h, s, v, start, end)Set a continuous range of LEDs to the given HSV value, where h/s/v are between 0 and 255, and start(included) and stop(excluded) are between 0 and RGBLIGHT_LED_COUNT (not written to EEPROM)
rgblight_setrgb(r, g, b)Set effect range LEDs to the given RGB value where r/g/b are between 0 and 255 (not written to EEPROM)
rgblight_setrgb_master(r, g, b)Set the LEDs on the master side to the given RGB value, where r/g/b are between 0 and 255 (not written to EEPROM)
rgblight_setrgb_slave(r, g, b)Set the LEDs on the slave side to the given RGB value, where r/g/b are between 0 and 255 (not written to EEPROM)
rgblight_sethsv_master(h, s, v)Set the LEDs on the master side to the given HSV value, where h/s/v are between 0 and 255 (not written to EEPROM)
rgblight_sethsv_slave(h, s, v)Set the LEDs on the slave side to the given HSV value, where h/s/v are between 0 and 255 (not written to EEPROM)

Example:

c
rgblight_sethsv_at(HSV_WHITE, 0); // led 0\nrgblight_sethsv_at(HSV_RED,   1); // led 1\nrgblight_sethsv_at(HSV_GREEN, 2); // led 2\n// The above functions automatically calls rgblight_set(), so there is no need to call it explicitly.\n// Note that it is inefficient to call repeatedly.

effect mode change

FunctionDescription
rgblight_mode(x)Set the mode, if RGB animations are enabled
rgblight_mode_noeeprom(x)Set the mode, if RGB animations are enabled (not written to EEPROM)
rgblight_step()Change the mode to the next RGB animation in the list of enabled RGB animations
rgblight_step_noeeprom()Change the mode to the next RGB animation in the list of enabled RGB animations (not written to EEPROM)
rgblight_step_reverse()Change the mode to the previous RGB animation in the list of enabled RGB animations
rgblight_step_reverse_noeeprom()Change the mode to the previous RGB animation in the list of enabled RGB animations (not written to EEPROM)
rgblight_reload_from_eeprom()Reload the effect configuration (enabled, mode and color) from EEPROM

effects mode disable/enable

FunctionDescription
rgblight_toggle()Toggle effect range LEDs between on and off
rgblight_toggle_noeeprom()Toggle effect range LEDs between on and off (not written to EEPROM)
rgblight_enable()Turn effect range LEDs on, based on their previous state
rgblight_enable_noeeprom()Turn effect range LEDs on, based on their previous state (not written to EEPROM)
rgblight_disable()Turn effect range LEDs off
rgblight_disable_noeeprom()Turn effect range LEDs off (not written to EEPROM)

hue, sat, val change

FunctionDescription
rgblight_increase_hue()Increase the hue for effect range LEDs. This wraps around at maximum hue
rgblight_increase_hue_noeeprom()Increase the hue for effect range LEDs. This wraps around at maximum hue (not written to EEPROM)
rgblight_decrease_hue()Decrease the hue for effect range LEDs. This wraps around at minimum hue
rgblight_decrease_hue_noeeprom()Decrease the hue for effect range LEDs. This wraps around at minimum hue (not written to EEPROM)
rgblight_increase_sat()Increase the saturation for effect range LEDs. This stops at maximum saturation
rgblight_increase_sat_noeeprom()Increase the saturation for effect range LEDs. This stops at maximum saturation (not written to EEPROM)
rgblight_decrease_sat()Decrease the saturation for effect range LEDs. This stops at minimum saturation
rgblight_decrease_sat_noeeprom()Decrease the saturation for effect range LEDs. This stops at minimum saturation (not written to EEPROM)
rgblight_increase_val()Increase the value for effect range LEDs. This stops at maximum value
rgblight_increase_val_noeeprom()Increase the value for effect range LEDs. This stops at maximum value (not written to EEPROM)
rgblight_decrease_val()Decrease the value for effect range LEDs. This stops at minimum value
rgblight_decrease_val_noeeprom()Decrease the value for effect range LEDs. This stops at minimum value (not written to EEPROM)
rgblight_sethsv(h, s, v)Set effect range LEDs to the given HSV value where h/s/v are between 0 and 255
rgblight_sethsv_noeeprom(h, s, v)Set effect range LEDs to the given HSV value where h/s/v are between 0 and 255 (not written to EEPROM)

Speed functions

FunctionDescription
rgblight_increase_speed()Increases the animation speed
rgblight_increase_speed_noeeprom()Increases the animation speed (not written to EEPROM)
rgblight_decrease_speed()Decreases the animation speed
rgblight_decrease_speed_noeeprom()Decreases the animation speed (not written to EEPROM)
rgblight_set_speed()Sets the speed. Value is between 0 and 255
rgblight_set_speed_noeeprom()Sets the speed. Value is between 0 and 255 (not written to EEPROM)

layer functions

FunctionDescription
rgblight_get_layer_state(i)Returns true if lighting layer i is enabled
rgblight_set_layer_state(i, is_on)Enable or disable lighting layer i based on value of bool is_on

query

FunctionDescription
rgblight_is_enabled()Gets current on/off status
rgblight_get_mode()Gets current mode
rgblight_get_hue()Gets current hue
rgblight_get_sat()Gets current sat
rgblight_get_val()Gets current val
rgblight_get_speed()Gets current speed

Colors

These are shorthands to popular colors. The RGB ones can be passed to the setrgb functions, while the HSV ones to the sethsv functions.

RGBHSV
RGB_AZUREHSV_AZURE
RGB_BLACK/RGB_OFFHSV_BLACK/HSV_OFF
RGB_BLUEHSV_BLUE
RGB_CHARTREUSEHSV_CHARTREUSE
RGB_CORALHSV_CORAL
RGB_CYANHSV_CYAN
RGB_GOLDHSV_GOLD
RGB_GOLDENRODHSV_GOLDENROD
RGB_GREENHSV_GREEN
RGB_MAGENTAHSV_MAGENTA
RGB_ORANGEHSV_ORANGE
RGB_PINKHSV_PINK
RGB_PURPLEHSV_PURPLE
RGB_REDHSV_RED
RGB_SPRINGGREENHSV_SPRINGGREEN
RGB_TEALHSV_TEAL
RGB_TURQUOISEHSV_TURQUOISE
RGB_WHITEHSV_WHITE
RGB_YELLOWHSV_YELLOW
c
rgblight_setrgb(RGB_ORANGE);\nrgblight_sethsv_noeeprom(HSV_GREEN);\nrgblight_setrgb_at(RGB_GOLD, 3);\nrgblight_sethsv_range(HSV_WHITE, 0, 6);

These are defined in color.h. Feel free to add to this list!

Changing the order of the LEDs

If you want to make the logical order of LEDs different from the electrical connection order, you can do this by defining the RGBLIGHT_LED_MAP macro in your config.h.

Normally, the contents of the LED buffer are output to the LEDs in the same order. simple dicrect

By defining RGBLIGHT_LED_MAP as in the example below, you can specify the LED with addressing in reverse order of the electrical connection order.

c
// config.h\n\n#define RGBLIGHT_LED_COUNT 4\n#define RGBLIGHT_LED_MAP { 3, 2, 1, 0 }
simple mapped

Clipping Range

Using the rgblight_set_clipping_range() function, you can prepare more buffers than the actual number of LEDs, and output some of the buffers to the LEDs. This is useful if you want the split keyboard to treat left and right LEDs as logically contiguous.

You can set the Clipping Range by executing the following code.

c
// some source\nrgblight_set_clipping_range(3, 4);
clip direct

In addition to setting the Clipping Range, you can use RGBLIGHT_LED_MAP together.

c
// config.h\n#define RGBLIGHT_LED_COUNT 8\n#define RGBLIGHT_LED_MAP { 7, 6, 5, 4, 3, 2, 1, 0 }\n\n// some source\nrgblight_set_clipping_range(3, 4);
clip mapped

Hardware Modification

If your keyboard lacks onboard underglow LEDs, you may often be able to solder on an RGB LED strip yourself. You will need to find an unused pin to wire to the data pin of your LED strip. Some keyboards may break out unused pins from the MCU to make soldering easier. The other two pins, VCC and GND, must also be connected to the appropriate power pins.

Velocikey

Velocikey is a feature that lets you control the speed of lighting effects (like the Rainbow Swirl effect) with the speed of your typing. The faster you type, the faster the lights will go!

Usage

For Velocikey to take effect, there are two steps. First, when compiling your keyboard, you'll need to set VELOCIKEY_ENABLE=yes in rules.mk, e.g.:

MOUSEKEY_ENABLE = no\nSTENO_ENABLE = no\nEXTRAKEY_ENABLE = yes\nVELOCIKEY_ENABLE = yes

Then, while using your keyboard, you need to also turn it on with the VK_TOGG keycode, which toggles the feature on and off.

The following light effects will all be controlled by Velocikey when it is enabled:

Support for LED breathing effects is planned but not available yet.

As long as Velocikey is enabled, it will control the speed regardless of any other speed setting that your RGB lights are currently on.

Configuration

Velocikey doesn't currently support any configuration via keyboard settings. If you want to adjust something like the speed increase or decay rate, you would need to edit velocikey.c and adjust the values there to achieve the kinds of speeds that you like.

', 130); diff --git a/assets/features_rgblight.md.O1OG9fO_.lean.js b/assets/features_rgblight.md.Caa29UD3.lean.js similarity index 92% rename from assets/features_rgblight.md.O1OG9fO_.lean.js rename to assets/features_rgblight.md.Caa29UD3.lean.js index 073d777e49d..9a7d7bf9dd6 100644 --- a/assets/features_rgblight.md.O1OG9fO_.lean.js +++ b/assets/features_rgblight.md.Caa29UD3.lean.js @@ -1,5 +1,5 @@ import { _ as _imports_0 } from "./chunks/color-wheel.DIUCmfNZ.js"; -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"RGB Lighting","description":"","frontmatter":{},"headers":[],"relativePath":"features/rgblight.md","filePath":"features/rgblight.md"}'); const _sfc_main = { name: "features/rgblight.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 130); diff --git a/assets/features_secure.md.BX7jFvW5.js b/assets/features_secure.md.C1VgkmKA.js similarity index 98% rename from assets/features_secure.md.BX7jFvW5.js rename to assets/features_secure.md.C1VgkmKA.js index e3fb3a28d90..5a910f101c6 100644 --- a/assets/features_secure.md.BX7jFvW5.js +++ b/assets/features_secure.md.C1VgkmKA.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Secure","description":"","frontmatter":{},"headers":[],"relativePath":"features/secure.md","filePath":"features/secure.md"}'); const _sfc_main = { name: "features/secure.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Secure

The secure feature aims to prevent unwanted interaction without user intervention.

TIP

Secure does not currently implement encryption/decryption/etc and should not be a replacement where a strong hardware/software based solution is required.

Unlock sequence

To unlock, the user must perform a set of actions. This can optionally be configured to be multiple keys.

Automatic Locking

Once unlocked, the keyboard will revert back to a locked state after the configured timeout. The timeout can be refreshed by using the secure_activity_event function, for example from one of the various hooks.

Usage

Add the following to your rules.mk:

make
SECURE_ENABLE = yes

Keycodes

KeyAliasesDescription
QK_SECURE_LOCKSE_LOCKRevert back to a locked state
QK_SECURE_UNLOCKSE_UNLKForces unlock without performing a unlock sequence
QK_SECURE_TOGGLESE_TOGGToggle directly between locked and unlock without performing a unlock sequence
QK_SECURE_REQUESTSE_REQRequest that user perform the unlock sequence

Configuration

DefineDefaultDescription
SECURE_UNLOCK_TIMEOUT5000Timeout for the user to perform the configured unlock sequence - 0 to disable
SECURE_IDLE_TIMEOUT60000Timeout while unlocked before returning to locked - 0 to disable
SECURE_UNLOCK_SEQUENCE{ { 0, 0 } }Array of matrix locations describing a sequential sequence of keypresses

Functions

FunctionDescription
secure_is_locked()Check if the device is currently locked
secure_is_unlocking()Check if an unlock sequence is currently in progress
secure_is_unlocked()Check if the device is currently unlocked
secure_lock()Lock down the device
secure_unlock()Force unlock the device - bypasses user unlock sequence
secure_request_unlock()Begin listening for an unlock sequence
secure_activity_event()Flag that user activity has happened and the device should remain unlocked
', 17); diff --git a/assets/features_secure.md.BX7jFvW5.lean.js b/assets/features_secure.md.C1VgkmKA.lean.js similarity index 91% rename from assets/features_secure.md.BX7jFvW5.lean.js rename to assets/features_secure.md.C1VgkmKA.lean.js index 7d8d3a06946..783f4bd2a45 100644 --- a/assets/features_secure.md.BX7jFvW5.lean.js +++ b/assets/features_secure.md.C1VgkmKA.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Secure","description":"","frontmatter":{},"headers":[],"relativePath":"features/secure.md","filePath":"features/secure.md"}'); const _sfc_main = { name: "features/secure.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 17); diff --git a/assets/features_send_string.md.vM68un4v.js b/assets/features_send_string.md.CgbdP6B4.js similarity index 99% rename from assets/features_send_string.md.vM68un4v.js rename to assets/features_send_string.md.CgbdP6B4.js index 916162776d0..6aa5df5508d 100644 --- a/assets/features_send_string.md.vM68un4v.js +++ b/assets/features_send_string.md.CgbdP6B4.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Send String","description":"","frontmatter":{},"headers":[],"relativePath":"features/send_string.md","filePath":"features/send_string.md"}'); const _sfc_main = { name: "features/send_string.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Send String

The Send String API is part of QMK's macro system. It allows for sequences of keystrokes to be sent automatically.

The full ASCII character set is supported, along with all of the keycodes in the Basic Keycode range (as these are the only ones that will actually be sent to the host).

TIP

Unicode characters are not supported with this API -- see the Unicode feature instead.

Usage

Send String is enabled by default, so there is usually no need for any special setup. However, if it is disabled, add the following to your rules.mk:

make
SEND_STRING_ENABLE = yes

Basic Configuration

Add the following to your config.h:

DefineDefaultDescription
SENDSTRING_BELLNot definedIf the Audio feature is enabled, the \\a character (ASCII BEL) will beep the speaker.
BELL_SOUNDTERMINAL_SOUNDThe song to play when the \\a character is encountered. By default, this is an eighth note of C5.

Keycodes

The Send String functions accept C string literals, but specific keycodes can be injected with the below macros. All of the keycodes in the Basic Keycode range are supported (as these are the only ones that will actually be sent to the host), but with an X_ prefix instead of KC_.

MacroDescription
SS_TAP(x)Send a keydown, then keyup, event for the given Send String keycode
SS_DOWN(x)Send a keydown event for the given Send String keycode
SS_UP(x)Send a keyup event for the given Send String keycode
SS_DELAY(ms)Wait for ms milliseconds

The following characters are also mapped to their respective keycodes for convenience:

CharacterHexASCIIKeycode
\\b\\x08BSKC_BACKSPACE
\\e\\x09ESCKC_ESCAPE
\\n\\x0ALFKC_ENTER
\\t\\x1BTABKC_TAB
\\x7FDELKC_DELETE

Language Support

By default, Send String assumes your OS keyboard layout is set to US ANSI. If you are using a different keyboard layout, you can override the lookup tables used to convert ASCII characters to keystrokes.

Examples

Hello World

A simple custom keycode which types out "Hello, world!" and the Enter key when pressed.

Add the following to your keymap.c:

c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {\n    switch (keycode) {\n        case SS_HELLO:\n            if (record->event.pressed) {\n                SEND_STRING("Hello, world!\\n");\n            }\n            return false;\n    }\n\n    return true;\n}

Keycode Injection

This example types out opening and closing curly braces, then taps the left arrow key to move the cursor between the two.

c
SEND_STRING("{}" SS_TAP(X_LEFT));

This example types Ctrl+A, then Ctrl+C, without releasing Ctrl.

c
SEND_STRING(SS_LCTL("ac"));

API

void send_string(const char *string)

Type out a string of ASCII characters.

This function simply calls send_string_with_delay(string, 0).

Arguments


void send_string_with_delay(const char *string, uint8_t interval)

Type out a string of ASCII characters, with a delay between each character.

Arguments


void send_string_P(const char *string)

Type out a PROGMEM string of ASCII characters.

On ARM devices, this function is simply an alias for send_string_with_delay(string, 0).

Arguments


void send_string_with_delay_P(const char *string, uint8_t interval)

Type out a PROGMEM string of ASCII characters, with a delay between each character.

On ARM devices, this function is simply an alias for send_string_with_delay(string, interval).

Arguments


void send_char(char ascii_code)

Type out an ASCII character.

Arguments


void send_dword(uint32_t number)

Type out an eight digit (unsigned 32-bit) hexadecimal value.

The format is [0-9a-f]{8}, eg. 00000000 through ffffffff.

Arguments


void send_word(uint16_t number)

Type out a four digit (unsigned 16-bit) hexadecimal value.

The format is [0-9a-f]{4}, eg. 0000 through ffff.

Arguments


void send_byte(uint8_t number)

Type out a two digit (8-bit) hexadecimal value.

The format is [0-9a-f]{2}, eg. 00 through ff.

Arguments


void send_nibble(uint8_t number)

Type out a single hexadecimal digit.

The format is [0-9a-f]{1}, eg. 0 through f.

Arguments


void tap_random_base64(void)

Type a pseudorandom character from the set A-Z, a-z, 0-9, + and /.


SEND_STRING(string)

Shortcut macro for send_string_with_delay_P(PSTR(string), 0).

On ARM devices, this define evaluates to send_string_with_delay(string, 0).


SEND_STRING_DELAY(string, interval)

Shortcut macro for send_string_with_delay_P(PSTR(string), interval).

On ARM devices, this define evaluates to send_string_with_delay(string, interval).

', 90); diff --git a/assets/features_send_string.md.vM68un4v.lean.js b/assets/features_send_string.md.CgbdP6B4.lean.js similarity index 91% rename from assets/features_send_string.md.vM68un4v.lean.js rename to assets/features_send_string.md.CgbdP6B4.lean.js index aabaa456fc1..aff379f0ef0 100644 --- a/assets/features_send_string.md.vM68un4v.lean.js +++ b/assets/features_send_string.md.CgbdP6B4.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Send String","description":"","frontmatter":{},"headers":[],"relativePath":"features/send_string.md","filePath":"features/send_string.md"}'); const _sfc_main = { name: "features/send_string.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 90); diff --git a/assets/features_sequencer.md.DkgqNCsQ.js b/assets/features_sequencer.md.F43NF6hh.js similarity index 99% rename from assets/features_sequencer.md.DkgqNCsQ.js rename to assets/features_sequencer.md.F43NF6hh.js index 2efbc0312ee..df49d5b60d1 100644 --- a/assets/features_sequencer.md.DkgqNCsQ.js +++ b/assets/features_sequencer.md.F43NF6hh.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Sequencer","description":"","frontmatter":{},"headers":[],"relativePath":"features/sequencer.md","filePath":"features/sequencer.md"}'); const _sfc_main = { name: "features/sequencer.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Sequencer

Since QMK has experimental support for MIDI, you can now turn your keyboard into a step sequencer!

WARNING

This feature is highly experimental, it has only been tested on a Planck EZ so far. Also, the scope will be limited to support the drum machine use-case to start with.

Enable the step sequencer

Add the following line to your rules.mk:

make
SEQUENCER_ENABLE = yes

By default the sequencer has 16 steps, but you can override this setting in your config.h:

c
#define SEQUENCER_STEPS 32

Tracks

You can program up to 8 independent tracks with the step sequencer. Select the tracks you want to edit, enable or disable some steps, and start the sequence!

Resolutions

While the tempo defines the absolute speed at which the sequencer goes through the steps, the resolution defines the granularity of these steps (from coarser to finer).

ResolutionDescription
SQ_RES_2Every other beat
SQ_RES_2TEvery 1.5 beats
SQ_RES_4Every beat
SQ_RES_4TThree times per 2 beats
SQ_RES_8Twice per beat
SQ_RES_8TThree times per beat
SQ_RES_16Four times per beat
SQ_RES_16TSix times per beat
SQ_RES_32Eight times per beat

Keycodes

KeyAliasesDescription
QK_SEQUENCER_ONSQ_ONStart the step sequencer
QK_SEQUENCER_OFFSQ_OFFStop the step sequencer
QK_SEQUENCER_TOGGLESQ_TOGGToggle the step sequencer playback
QK_SEQUENCER_STEPS_ALLSQ_SALLEnable all the steps
QK_SEQUENCER_STEPS_CLEARSQ_SCLRDisable all the steps
QK_SEQUENCER_TEMPO_DOWNSQ_TMPDDecrease the tempo
QK_SEQUENCER_TEMPO_UPSQ_TMPUIncrease the tempo
QK_SEQUENCER_RESOLUTION_DOWNSQ_RESDChange to the slower resolution
QK_SEQUENCER_RESOLUTION_UPSQ_RESUChange to the faster resolution
SQ_S(n)Toggle the step n
SQ_R(n)Set the resolution to n
SQ_T(n)Set n as the only active track or deactivate all

Functions

FunctionDescription
bool is_sequencer_on(void);Return whether the sequencer is playing
void sequencer_toggle(void);Toggle the step sequencer playback
void sequencer_on(void);Start the step sequencer
void sequencer_off(void);Stop the step sequencer
bool is_sequencer_step_on(uint8_t step);Return whether the step is currently enabled
void sequencer_set_step(uint8_t step, bool value);Enable or disable the step
void sequencer_set_step_on();Enable the step
void sequencer_set_step_off();Disable the step
void sequencer_toggle_step(uint8_t step);Toggle the step
void sequencer_set_all_steps(bool value);Enable or disable all the steps
void sequencer_set_all_steps_on();Enable all the steps
void sequencer_set_all_steps_off();Disable all the steps
uint8_t sequencer_get_tempo(void);Return the current tempo
void sequencer_set_tempo(uint8_t tempo);Set the tempo to tempo (between 1 and 255)
void sequencer_increase_tempo(void);Increase the tempo
void sequencer_decrease_tempo(void);Decrease the tempo
sequencer_resolution_t sequencer_get_resolution(void);Return the current resolution
void sequencer_set_resolution(sequencer_resolution_t resolution);Set the resolution to resolution
void sequencer_increase_resolution(void);Change to the faster resolution
void sequencer_decrease_resolution(void);Change to the slower resolution
bool is_sequencer_track_active(uint8_t track);Return whether the track is active
void sequencer_set_track_activation(uint8_t track, bool value);Activate or deactivate the track
void sequencer_toggle_track_activation(uint8_t track);Toggle the track
void sequencer_activate_track(uint8_t track);Activate the track
void sequencer_deactivate_track(uint8_t track);Deactivate the track
void sequencer_toggle_single_active_track(uint8_t track);Set track as the only active track or deactivate all
', 17); diff --git a/assets/features_sequencer.md.DkgqNCsQ.lean.js b/assets/features_sequencer.md.F43NF6hh.lean.js similarity index 91% rename from assets/features_sequencer.md.DkgqNCsQ.lean.js rename to assets/features_sequencer.md.F43NF6hh.lean.js index 5dcae4afc1d..9ba6999d63a 100644 --- a/assets/features_sequencer.md.DkgqNCsQ.lean.js +++ b/assets/features_sequencer.md.F43NF6hh.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Sequencer","description":"","frontmatter":{},"headers":[],"relativePath":"features/sequencer.md","filePath":"features/sequencer.md"}'); const _sfc_main = { name: "features/sequencer.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 17); diff --git a/assets/features_space_cadet.md.DmNfYRVJ.js b/assets/features_space_cadet.md.D3jhCzMk.js similarity index 99% rename from assets/features_space_cadet.md.DmNfYRVJ.js rename to assets/features_space_cadet.md.D3jhCzMk.js index a7795152d77..952457e1714 100644 --- a/assets/features_space_cadet.md.DmNfYRVJ.js +++ b/assets/features_space_cadet.md.D3jhCzMk.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Space Cadet: The Future, Built In","description":"","frontmatter":{},"headers":[],"relativePath":"features/space_cadet.md","filePath":"features/space_cadet.md"}'); const _sfc_main = { name: "features/space_cadet.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Space Cadet: The Future, Built In

Steve Losh described the Space Cadet Shift quite well. Essentially, when you tap Left Shift on its own, you get an opening parenthesis; tap Right Shift on its own and you get the closing one. When held, the Shift keys function as normal. Yes, it's as cool as it sounds, and now even cooler supporting Control and Alt as well!

Usage

Firstly, in your keymap, do one of the following:

Keycodes

KeycodeAliasesDescription
QK_SPACE_CADET_LEFT_CTRL_PARENTHESIS_OPENSC_LCPOLeft Control when held, ( when tapped
QK_SPACE_CADET_RIGHT_CTRL_PARENTHESIS_CLOSESC_RCPCRight Control when held, ) when tapped
QK_SPACE_CADET_LEFT_SHIFT_PARENTHESIS_OPENSC_LSPOLeft Shift when held, ( when tapped
QK_SPACE_CADET_RIGHT_SHIFT_PARENTHESIS_CLOSESC_RSPCRight Shift when held, ) when tapped
QK_SPACE_CADET_LEFT_ALT_PARENTHESIS_OPENSC_LAPOLeft Alt when held, ( when tapped
QK_SPACE_CADET_RIGHT_ALT_PARENTHESIS_CLOSESC_RAPCRight Alt when held, ) when tapped
QK_SPACE_CADET_RIGHT_SHIFT_ENTERSC_SENTRight Shift when held, Enter when tapped

Caveats

Space Cadet's functionality can conflict with the default Command functionality when both Shift keys are held at the same time. See the Command feature for info on how to change it, or make sure that Command is disabled in your rules.mk with:

make
COMMAND_ENABLE = no

Configuration

By default Space Cadet assumes a US ANSI layout, but if your layout uses different keys for parentheses, you can redefine them in your config.h. In addition, you can redefine the modifier to send on tap, or even send no modifier at all. The new configuration defines bundle all options up into a single define of 3 key codes in this order: the Modifier when held or when used with other keys, the Tap Modifer sent when tapped (no modifier if KC_TRNS), finally the Keycode sent when tapped. Now keep in mind, mods from other keys will still apply to the Keycode if say KC_RSFT is held while tapping SC_LSPO key with KC_TRNS as the Tap Modifer.

DefineDefaultDescription
LSPO_KEYSKC_LSFT, LSPO_MOD, LSPO_KEYSend KC_LSFT when held, the mod and key defined by LSPO_MOD and LSPO_KEY.
RSPC_KEYSKC_RSFT, RSPC_MOD, RSPC_KEYSend KC_RSFT when held, the mod and key defined by RSPC_MOD and RSPC_KEY.
LCPO_KEYSKC_LCTL, KC_LSFT, KC_9Send KC_LCTL when held, the mod KC_LSFT with the key KC_9 when tapped.
RCPC_KEYSKC_RCTL, KC_RSFT, KC_0Send KC_RCTL when held, the mod KC_RSFT with the key KC_0 when tapped.
LAPO_KEYSKC_LALT, KC_LSFT, KC_9Send KC_LALT when held, the mod KC_LSFT with the key KC_9 when tapped.
RAPC_KEYSKC_RALT, KC_RSFT, KC_0Send KC_RALT when held, the mod KC_RSFT with the key KC_0 when tapped.
SFTENT_KEYSKC_RSFT, KC_TRNS, SFTENT_KEYSend KC_RSFT when held, no mod with the key SFTENT_KEY when tapped.
SPACE_CADET_MODIFIER_CARRYOVERNot definedStore current modifiers before the hold mod is pressed and use them with the tap mod and keycode. Useful for when you frequently release a modifier before triggering Space Cadet.

Obsolete Configuration

These defines are used in the above defines internally to support backwards compatibility, so you may continue to use them, however the above defines open up a larger range of flexibility than before. As an example, say you want to not send any modifier when you tap just SC_LSPO, with the old defines you had an all or nothing choice of using the DISABLE_SPACE_CADET_MODIFIER define. Now you can define that key as: #define LSPO_KEYS KC_LSFT, KC_TRNS, KC_9. This tells the system to set Left Shift if held or used with other keys, then on tap send no modifier (transparent) with the KC_9.

DefineDefaultDescription
LSPO_KEYKC_9The keycode to send when Left Shift is tapped
RSPC_KEYKC_0The keycode to send when Right Shift is tapped
LSPO_MODKC_LSFTThe modifier to apply to LSPO_KEY
RSPC_MODKC_RSFTThe modifier to apply to RSPC_KEY
SFTENT_KEYKC_ENTThe keycode to send when the Shift key is tapped
DISABLE_SPACE_CADET_MODIFIERNot definedIf defined, prevent the Space Cadet from applying a modifier
', 16); diff --git a/assets/features_space_cadet.md.DmNfYRVJ.lean.js b/assets/features_space_cadet.md.D3jhCzMk.lean.js similarity index 91% rename from assets/features_space_cadet.md.DmNfYRVJ.lean.js rename to assets/features_space_cadet.md.D3jhCzMk.lean.js index 8bbc6ca3296..64ccb866955 100644 --- a/assets/features_space_cadet.md.DmNfYRVJ.lean.js +++ b/assets/features_space_cadet.md.D3jhCzMk.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Space Cadet: The Future, Built In","description":"","frontmatter":{},"headers":[],"relativePath":"features/space_cadet.md","filePath":"features/space_cadet.md"}'); const _sfc_main = { name: "features/space_cadet.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 16); diff --git a/assets/features_split_keyboard.md.C-blnyD_.js b/assets/features_split_keyboard.md.CNVf0IPB.js similarity index 99% rename from assets/features_split_keyboard.md.C-blnyD_.js rename to assets/features_split_keyboard.md.CNVf0IPB.js index 387e680866e..2cec8ad7927 100644 --- a/assets/features_split_keyboard.md.C-blnyD_.js +++ b/assets/features_split_keyboard.md.CNVf0IPB.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Split Keyboard","description":"","frontmatter":{},"headers":[],"relativePath":"features/split_keyboard.md","filePath":"features/split_keyboard.md"}'); const _sfc_main = { name: "features/split_keyboard.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Split Keyboard

Many keyboards in the QMK Firmware repo are "split" keyboards. They use two controllers—one plugging into USB, and the second connected by a serial or an I2C connection over a TRRS or similar cable.

Split keyboards can have a lot of benefits, but there is some additional work needed to get them enabled.

QMK Firmware has a generic implementation that is usable by any board, as well as numerous board specific implementations.

For this, we will mostly be talking about the generic implementation used by the Let's Split and other keyboards.

WARNING

ARM split supports most QMK subsystems when using the 'serial' and 'serial_usart' drivers. I2C slave is currently unsupported.

WARNING

Both sides must use the same MCU family, for eg two Pro Micro-compatible controllers or two Blackpills. Currently, mixing AVR and ARM is not possible as ARM vs AVR uses different method for serial communication, and are not compatible. Moreover Blackpill's uses 3.3v logic, and atmega32u4 uses 5v logic.

Compatibility Overview

TransportAVRARM
'serial'✔️1
I2C✔️

Notes:

  1. Both hardware and software limitations are detailed within the driver documentation.

Hardware Configuration

This assumes that you're using two Pro Micro-compatible controllers, and are using TRRS jacks to connect to two halves.

Required Hardware

Apart from diodes and key switches for the keyboard matrix in each half, you will need 2x TRRS sockets and 1x TRRS cable.

Alternatively, you can use any sort of cable and socket that has at least 3 wires.

If you want to use I2C to communicate between halves, you will need a cable with at least 4 wires and 2x 4.7kΩ pull-up resistors.

Considerations

The most commonly used connection is a TRRS cable and jacks. These provide 4 wires, making them very useful for split keyboards, and are easy to find.

However, since one of the wires carries VCC, this means that the boards are not hot pluggable. You should always disconnect the board from USB before unplugging and plugging in TRRS cables, or you can short the controller, or worse.

Another option is to use phone cables (as in, old school RJ-11/RJ-14 cables). Make sure that you use one that actually supports 4 wires/lanes.

However, USB cables, SATA cables, and even just 4 wires have been known to be used for communication between the controllers.

WARNING

Using USB cables for communication between the controllers works just fine, but the connector could be mistaken for a normal USB connection and potentially short out the keyboard, depending on how it's wired. For this reason, they are not recommended for connecting split keyboards.

Serial Wiring

The 3 wires of the TRS/TRRS cable need to connect GND, VCC, and D0/D1/D2/D3 (aka PD0/PD1/PD2/PD3) between the two Pro Micros.

TIP

Note that the pin used here is actually set by SOFT_SERIAL_PIN below.

sk-pd0-connection-monosk-pd2-connection-mono

I2C Wiring

The 4 wires of the TRRS cable need to connect GND, VCC, and SCL and SDA (aka PD0/pin 3 and PD1/pin 2, respectively) between the two Pro Micros.

The pull-up resistors may be placed on either half. If you wish to use the halves independently, it is also possible to use 4 resistors and have the pull-ups in both halves. Note that the total resistance for the connected system should be within spec at 2.2k-10kOhm, with an 'ideal' at 4.7kOhm, regardless of the placement and number.

sk-i2c-connection-mono

Firmware Configuration

To enable the split keyboard feature, add the following to your rules.mk:

make
SPLIT_KEYBOARD = yes

If you're using a custom transport (communication method), then you will also need to add:

make
SPLIT_TRANSPORT = custom

Layout Macro

Configuring your layout in a split keyboard works slightly differently to a non-split keyboard. Take for example the following layout. The top left numbers refer to the matrix row and column, and the bottom right are the order of the keys in the layout:

Physical layout

Since the matrix scanning procedure operates on entire rows, it first populates the left half's rows, then the right half's. Thus, the matrix as QMK views it has double the rows instead of double the columns:

Matrix

Setting Handedness

By default, the firmware does not know which side is which; it needs some help to determine that. There are several ways to do this, listed in order of precedence.

Handedness by Pin

You can configure the firmware to read a pin on the controller to determine handedness. To do this, add the following to your config.h file:

c
#define SPLIT_HAND_PIN B7

This will read the specified pin. By default, if it's high, then the controller assumes it is the left hand, and if it's low, it's assumed to be the right side.

This behaviour can be flipped by adding this to you config.h file:

c
#define	SPLIT_HAND_PIN_LOW_IS_LEFT

Handedness by Matrix Pin

You can configure the firmware to read key matrix pins on the controller to determine handedness. To do this, add the following to your config.h file:

c
#define SPLIT_HAND_MATRIX_GRID D0, F1

The first pin is the output pin and the second is the input pin.

Some keyboards have unused intersections in the key matrix. This setting uses one of these unused intersections to determine the handedness.

Normally, when a diode is connected to an intersection, it is judged to be right. If you add the following definition, it will be judged to be left.

c
#define SPLIT_HAND_MATRIX_GRID_LOW_IS_LEFT

Note that adding a diode at a previously unused intersection will effectively tell the firmware that there is a key held down at that point. You can instruct qmk to ignore that intersection by defining MATRIX_MASKED and then defining a matrix_row_t matrix_mask[MATRIX_ROWS] array in your keyboard config. Each bit of a single value (starting form the least-significant bit) is used to tell qmk whether or not to pay attention to key presses at that intersection.

While MATRIX_MASKED isn't necessary to use SPLIT_HAND_MATRIX_GRID successfully, without it you may experience issues trying to suspend your computer with your keyboard attached as the matrix will always report at least one key-press.

Handedness by EEPROM

This method sets the keyboard's handedness by setting a flag in the persistent storage (EEPROM). This is checked when the controller first starts up, and determines what half the keyboard is, and how to orient the keyboard layout.

To enable this method, add the following to your config.h file:

c
#define EE_HANDS

Next, you will have to flash the correct handedness option to the controller on each halve. You can do this manually with the following bootloader targets using qmk flash -kb <keyboard> -km <keymap> -bl <bootloader> command to flash:

Microcontroller TypeBootloader Parameter
AVR controllers with Caterina bootloader
(e.g. Pro Micro)
avrdude-split-left
avrdude-split-right
AVR controllers with the stock Amtel DFU or DFU compatible bootloader
(e.g. Elite-C)
dfu-split-left
dfu-split-right
ARM controllers with a DFU compatible bootloader
(e.g. Proton-C)
dfu-util-split-left
dfu-util-split-right
ARM controllers with a UF2 compatible bootloader
(e.g. RP2040)
uf2-split-left
uf2-split-right

Example for crkbd/rev1 keyboard with normal AVR Pro Micro MCUs, reset the left controller and run:

qmk flash -kb crkbd/rev1 -km default -bl avrdude-split-left

Reset the right controller and run:

qmk flash -kb crkbd/rev1 -km default -bl avrdude-split-right

TIP

Some controllers (e.g. Blackpill with DFU compatible bootloader) will need to be flashed with handedness bootloader parameter every time because it is not retained between flashes.

TIP

QMK Toolbox can also be used to flash EEPROM handedness files. Place the controller in bootloader mode and select menu option Tools -> EEPROM -> Set Left/Right Hand

This setting is not changed when re-initializing the EEPROM using the EE_CLR key, or using the eeconfig_init() function. However, if you reset the EEPROM outside of the firmware's built in options (such as flashing a file that overwrites the EEPROM, like how the QMK Toolbox's "Reset EEPROM" button works), you'll need to re-flash the controller with the EEPROM files.

You can find the EEPROM files in the QMK firmware repo, here.

Handedness by #define

You can use this option when USB cable is always connected to just one side of the split keyboard.

If the USB cable is always connected to the right side, add the following to your config.h file and flash both sides with this option:

c
#define MASTER_RIGHT

If the USB cable is always connected to the left side, add the following to your config.h file and flash both sides with this option:

c
#define MASTER_LEFT

TIP

If neither options are defined, the handedness defaults to MASTER_LEFT.

Communication Options

Because not every split keyboard is identical, there are a number of additional options that can be configured in your config.h file.

c
#define USE_I2C

This configures the use of I2C support for split keyboard transport (AVR only).

c
#define SOFT_SERIAL_PIN D0

This sets the pin to be used for serial communication. If you're not using serial, you shouldn't need to define this.

However, if you are using serial and I2C on the board, you will need to set this, and to something other than D0 and D1 (as these are used for I2C communication).

c
#define SELECT_SOFT_SERIAL_SPEED {#}

If you're having issues with serial communication, you can change this value, as it controls the communication speed for serial. The default is 1, and the possible values are:

c
#define FORCED_SYNC_THROTTLE_MS 100

This sets the maximum number of milliseconds before forcing a synchronization of data from master to slave. Under normal circumstances this sync occurs whenever the data changes, for safety a data transfer occurs after this number of milliseconds if no change has been detected since the last sync.

c
#define SPLIT_MAX_CONNECTION_ERRORS 10

This sets the maximum number of failed communication attempts (one per scan cycle) from the master part before it assumes that no slave part is connected. This makes it possible to use a master part without the slave part connected.

Set to 0 to disable the disconnection check altogether.

c
#define SPLIT_CONNECTION_CHECK_TIMEOUT 500

How long (in milliseconds) the master part should block all connection attempts to the slave after the communication has been flagged as disconnected (see SPLIT_MAX_CONNECTION_ERRORS above).

One communication attempt will be allowed everytime this amount of time has passed since the last attempt. If that attempt succeeds, the communication is seen as working again.

Set to 0 to disable this throttling of communications while disconnected. This can save you a couple of bytes of firmware size.

Data Sync Options

The following sync options add overhead to the split communication protocol and may negatively impact the matrix scan speed when enabled. These can be enabled by adding the chosen option(s) to your config.h file.

c
#define SPLIT_TRANSPORT_MIRROR

This mirrors the master side matrix to the slave side for features that react or require knowledge of master side key presses on the slave side. The purpose of this feature is to support cosmetic use of key events (e.g. RGB reacting to keypresses).

c
#define SPLIT_LAYER_STATE_ENABLE

This enables syncing of the layer state between both halves of the split keyboard. The main purpose of this feature is to enable support for use of things like OLED display of the currently active layer.

c
#define SPLIT_LED_STATE_ENABLE

This enables syncing of the Host LED status (caps lock, num lock, etc) between both halves of the split keyboard. The main purpose of this feature is to enable support for use of things like OLED display of the Host LED status.

c
#define SPLIT_MODS_ENABLE

This enables transmitting modifier state (normal, weak, oneshot and oneshot locked) to the non primary side of the split keyboard. The purpose of this feature is to support cosmetic use of modifer state (e.g. displaying status on an OLED screen).

c
#define SPLIT_WPM_ENABLE

This enables transmitting the current WPM to the slave side of the split keyboard. The purpose of this feature is to support cosmetic use of WPM (e.g. displaying the current value on an OLED screen).

c
#define SPLIT_OLED_ENABLE

This enables transmitting the current OLED on/off status to the slave side of the split keyboard. The purpose of this feature is to support state (on/off state only) syncing.

c
#define SPLIT_ST7565_ENABLE

This enables transmitting the current ST7565 on/off status to the slave side of the split keyboard. The purpose of this feature is to support state (on/off state only) syncing.

c
#define SPLIT_POINTING_ENABLE

This enables transmitting the pointing device status to the master side of the split keyboard. The purpose of this feature is to enable use pointing devices on the slave side.

WARNING

There is additional required configuration for SPLIT_POINTING_ENABLE outlined in the pointing device documentation.

c
#define SPLIT_HAPTIC_ENABLE

This enables the triggering of haptic feedback on the slave side of the split keyboard. This will send information to the slave side such as the mode, dwell, and whether buzz is enabled.

c
#define SPLIT_ACTIVITY_ENABLE

This synchronizes the activity timestamps between sides of the split keyboard, allowing for activity timeouts to occur.

Custom data sync between sides

QMK's split transport allows for arbitrary data transactions at both the keyboard and user levels. This is modelled on a remote procedure call, with the master invoking a function on the slave side, with the ability to send data from master to slave, process it slave side, and send data back from slave to master.

To leverage this, a keyboard or user/keymap can define a comma-separated list of transaction IDs:

c
// for keyboard-level data sync:\n#define SPLIT_TRANSACTION_IDS_KB KEYBOARD_SYNC_A, KEYBOARD_SYNC_B\n// or, for user:\n#define SPLIT_TRANSACTION_IDS_USER USER_SYNC_A, USER_SYNC_B, USER_SYNC_C

These transaction IDs then need a slave-side handler function to be registered with the split transport, for example:

c
typedef struct _master_to_slave_t {\n    int m2s_data;\n} master_to_slave_t;\n\ntypedef struct _slave_to_master_t {\n    int s2m_data;\n} slave_to_master_t;\n\nvoid user_sync_a_slave_handler(uint8_t in_buflen, const void* in_data, uint8_t out_buflen, void* out_data) {\n    const master_to_slave_t *m2s = (const master_to_slave_t*)in_data;\n    slave_to_master_t *s2m = (slave_to_master_t*)out_data;\n    s2m->s2m_data = m2s->m2s_data + 5; // whatever comes in, add 5 so it can be sent back\n}\n\nvoid keyboard_post_init_user(void) {\n    transaction_register_rpc(USER_SYNC_A, user_sync_a_slave_handler);\n}

The master side can then invoke the slave-side handler - for normal keyboard functionality to be minimally affected, any keyboard- or user-level code attempting to sync data should be throttled:

c
void housekeeping_task_user(void) {\n    if (is_keyboard_master()) {\n        // Interact with slave every 500ms\n        static uint32_t last_sync = 0;\n        if (timer_elapsed32(last_sync) > 500) {\n            master_to_slave_t m2s = {6};\n            slave_to_master_t s2m = {0};\n            if(transaction_rpc_exec(USER_SYNC_A, sizeof(m2s), &m2s, sizeof(s2m), &s2m)) {\n                last_sync = timer_read32();\n                dprintf("Slave value: %d\\n", s2m.s2m_data); // this will now be 11, as the slave adds 5\n            } else {\n                dprint("Slave sync failed!\\n");\n            }\n        }\n    }\n}

WARNING

It is recommended that any data sync between halves happens during the master side's housekeeping task. This ensures timely retries should failures occur.

If only one-way data transfer is needed, helper methods are provided:

c
bool transaction_rpc_exec(int8_t transaction_id, uint8_t initiator2target_buffer_size, const void *initiator2target_buffer, uint8_t target2initiator_buffer_size, void *target2initiator_buffer);\nbool transaction_rpc_send(int8_t transaction_id, uint8_t initiator2target_buffer_size, const void *initiator2target_buffer);\nbool transaction_rpc_recv(int8_t transaction_id, uint8_t target2initiator_buffer_size, void *target2initiator_buffer);

By default, the inbound and outbound data is limited to a maximum of 32 bytes each. The sizes can be altered if required:

c
// Master to slave:\n#define RPC_M2S_BUFFER_SIZE 48\n// Slave to master:\n#define RPC_S2M_BUFFER_SIZE 48

Hardware Configuration Options

There are some settings that you may need to configure, based on how the hardware is set up.

c
#define MATRIX_ROW_PINS_RIGHT { <row pins> }\n#define MATRIX_COL_PINS_RIGHT { <col pins> }

This allows you to specify a different set of pins for the matrix on the right side. This is useful if you have a board with differently-shaped halves that requires a different configuration (such as Keebio's Quefrency). The number of pins in the right and left matrices must be the same, if you have a board with a different number of rows or columns on one side, pad out the extra spaces with NO_PIN and make sure you add the unused rows or columns to your matrix.

c
#define DIRECT_PINS_RIGHT { { F1, F0, B0, C7 }, { F4, F5, F6, F7 } }

This allows you to specify a different set of direct pins for the right side.

c
#define ENCODER_A_PINS_RIGHT { encoder1a, encoder2a }\n#define ENCODER_B_PINS_RIGHT { encoder1b, encoder2b }

This allows you to specify a different set of encoder pins for the right side.

c
#define RGBLIGHT_SPLIT

This option enables synchronization of the RGB Light modes between the controllers of the split keyboard. This is for keyboards that have RGB LEDs that are directly wired to the controller (that is, they are not using the "extra data" option on the TRRS cable).

c
#define RGBLED_SPLIT { 6, 6 }

This sets how many LEDs are directly connected to each controller. The first number is the left side, and the second number is the right side.

TIP

This setting implies that RGBLIGHT_SPLIT is enabled, and will forcibly enable it, if it's not.

c
#define SPLIT_USB_DETECT

Enabling this option changes the startup behavior to listen for an active USB communication to delegate which part is master and which is slave. With this option enabled and theres's USB communication, then that half assumes it is the master, otherwise it assumes it is the slave.

Without this option, the master is the half that can detect voltage on the physical USB connection (VBUS detection).

Enabled by default on ChibiOS/ARM.

TIP

This setting will stop the ability to demo using battery packs.

c
#define SPLIT_USB_TIMEOUT 2000

This sets the maximum timeout when detecting master/slave when using SPLIT_USB_DETECT.

c
#define SPLIT_USB_TIMEOUT_POLL 10

This sets the poll frequency when detecting master/slave when using SPLIT_USB_DETECT

c
#define SPLIT_WATCHDOG_ENABLE

This will enable a software watchdog on any side delegated as slave and will reboot the keyboard if no successful communication occurs within SPLIT_WATCHDOG_TIMEOUT. This can be particularly helpful when SPLIT_USB_DETECT delegates both sides as slave in some circumstances.

c
#define SPLIT_WATCHDOG_TIMEOUT 3000

This set the maximum slave timeout when waiting for communication from master when using SPLIT_WATCHDOG_ENABLE

Hardware Considerations and Mods

Master/slave delegation is made either by detecting voltage on VBUS connection or waiting for USB communication (SPLIT_USB_DETECT). Pro Micro boards can use VBUS detection out of the box and be used with or without SPLIT_USB_DETECT.

Many ARM boards, but not all, do not support VBUS detection. Because it is common that ARM boards lack VBUS detection, SPLIT_USB_DETECT is automatically defined on ARM targets (technically when ChibiOS is targetted).

Teensy boards

Teensy boards lack VBUS detection out of the box and must have SPLIT_USB_DETECT defined. With the Teensy 2.0 and Teensy++ 2.0, there is a simple hardware mod that you can perform to add VBUS detection, so you don't need the SPLIT_USB_DETECT option.

You'll only need a few things:

You'll need to cut the small trace between the 5V and center pads on the back of the Teensy.

Once you have done that, you will want to solder the diode from the 5V pad to the center pad.

You may need to use the 5V pad from the regulator block above as the pads were too small and placed too closely together to place the Schottky diode properly.

Teensy++ 2.0

Additional Resources

Nicinabox has a very nice and detailed guide for the Let's Split keyboard, that covers most everything you need to know, including troubleshooting information.

However, the RGB Light section is out of date, as it was written long before the RGB Split code was added to QMK Firmware. Instead, wire each strip up directly to the controller.

', 175); diff --git a/assets/features_split_keyboard.md.C-blnyD_.lean.js b/assets/features_split_keyboard.md.CNVf0IPB.lean.js similarity index 91% rename from assets/features_split_keyboard.md.C-blnyD_.lean.js rename to assets/features_split_keyboard.md.CNVf0IPB.lean.js index 3266fd0b8d9..76370415e50 100644 --- a/assets/features_split_keyboard.md.C-blnyD_.lean.js +++ b/assets/features_split_keyboard.md.CNVf0IPB.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Split Keyboard","description":"","frontmatter":{},"headers":[],"relativePath":"features/split_keyboard.md","filePath":"features/split_keyboard.md"}'); const _sfc_main = { name: "features/split_keyboard.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 175); diff --git a/assets/features_st7565.md.MoajNurJ.js b/assets/features_st7565.md.DeApZTVP.js similarity index 99% rename from assets/features_st7565.md.MoajNurJ.js rename to assets/features_st7565.md.DeApZTVP.js index feeb9af8501..d9792a894a3 100644 --- a/assets/features_st7565.md.MoajNurJ.js +++ b/assets/features_st7565.md.DeApZTVP.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"ST7565 LCD Driver","description":"","frontmatter":{},"headers":[],"relativePath":"features/st7565.md","filePath":"features/st7565.md"}'); const _sfc_main = { name: "features/st7565.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

ST7565 LCD Driver

Supported Hardware

LCD modules using ST7565 driver IC, communicating over SPI.

ModuleICSizeNotes
Newhaven Display NHD-C12832A1ZST7565R128x32Used by Ergodox Infinity; primary consumer of this feature
Zolentech ZLE12864BST7565P128x64Requires contrast adjustment

Usage

To enable the feature, there are three steps. First, when compiling your keyboard, you'll need to add the following to your rules.mk:

make
ST7565_ENABLE = yes

Then in your keymap.c file, implement the ST7565 task call. This example assumes your keymap has three layers named _QWERTY, _FN and _ADJ:

c
#ifdef ST7565_ENABLE\nvoid st7565_task_user(void) {\n    // Host Keyboard Layer Status\n    st7565_write_P(PSTR("Layer: "), false);\n\n    switch (get_highest_layer(layer_state)) {\n        case _QWERTY:\n            st7565_write_P(PSTR("Default\\n"), false);\n            break;\n        case _FN:\n            st7565_write_P(PSTR("FN\\n"), false);\n            break;\n        case _ADJ:\n            st7565_write_P(PSTR("ADJ\\n"), false);\n            break;\n        default:\n            // Or use the write_ln shortcut over adding '\\n' to the end of your string\n            st7565_write_ln_P(PSTR("Undefined"), false);\n    }\n\n    // Host Keyboard LED Status\n    led_t led_state = host_keyboard_led_state();\n    st7565_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR("    "), false);\n    st7565_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR("    "), false);\n    st7565_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR("    "), false);\n}\n#endif

Logo Example

In the default font, certain ranges of characters are reserved for a QMK logo. To render this logo to the screen, use the following code example:

c
static void render_logo(void) {\n    static const char PROGMEM qmk_logo[] = {\n        0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,\n        0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,\n        0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00\n    };\n\n    st7565_write_P(qmk_logo, false);\n}

Buffer Read Example

For some purposes, you may need to read the current state of the display buffer. The st7565_read_raw function can be used to safely read bytes from the buffer.

In this example, calling fade_display in the st7565_task_user function will slowly fade away whatever is on the screen by turning random pixels off over time.

c
//Setup some mask which can be or'd with bytes to turn off pixels\nconst uint8_t single_bit_masks[8] = {127, 191, 223, 239, 247, 251, 253, 254};\n\nstatic void fade_display(void) {\n    //Define the reader structure\n    display_buffer_reader_t reader;\n    uint8_t buff_char;\n    if (random() % 30 == 0) {\n        srand(timer_read());\n        // Fetch a pointer for the buffer byte at index 0. The return structure\n        // will have the pointer and the number of bytes remaining from this\n        // index position if we want to perform a sequential read by\n        // incrementing the buffer pointer\n        reader = st7565_read_raw(0);\n        //Loop over the remaining buffer and erase pixels as we go\n        for (uint16_t i = 0; i < reader.remaining_element_count; i++) {\n            //Get the actual byte in the buffer by dereferencing the pointer\n            buff_char = *reader.current_element;\n            if (buff_char != 0) {\n                st7565_write_raw_byte(buff_char & single_bit_masks[rand() % 8], i);\n            }\n            //increment the pointer to fetch a new byte during the next loop\n            reader.current_element++;\n        }\n    }\n}

Other Examples

In split keyboards, it is very common to have two displays that each render different content and are oriented or flipped differently. You can do this by switching which content to render by using the return value from is_keyboard_master() or is_keyboard_left() found in split_util.h, e.g:

c
#ifdef ST7565_ENABLE\ndisplay_rotation_t st7565_init_user(display_rotation_t rotation) {\n    if (!is_keyboard_master()) {\n        return DISPLAY_ROTATION_180;  // flips the display 180 degrees if offhand\n    }\n\n    return rotation;\n}\n\nvoid st7565_task_user(void) {\n    if (is_keyboard_master()) {\n        render_status();  // Renders the current keyboard state (layer, lock, caps, scroll, etc)\n    } else {\n        render_logo();  // Renders a static logo\n    }\n}\n#endif

Basic Configuration

DefineDefaultDescription
ST7565_A0_PINNot defined(Required) The GPIO connected to the display's A0 (data/command) pin
ST7565_RST_PINNot defined(Required) The GPIO connected to the display's reset pin
ST7565_SS_PINNot defined(Required) The GPIO connected to the display's slave select pin
ST7565_SPI_CLK_DIVISOR4The SPI clock divisor to use
ST7565_FONT_H"glcdfont.c"The font code file to use for custom fonts
ST7565_FONT_START0The starting character index for custom fonts
ST7565_FONT_END223The ending character index for custom fonts
ST7565_FONT_WIDTH6The font width
ST7565_FONT_HEIGHT8The font height (untested)
ST7565_TIMEOUT60000Turns off the screen after 60000ms of keyboard inactivity. Helps reduce burn-in. Set to 0 to disable.
ST7565_COLUMN_OFFSET0Shift output to the right this many pixels.
ST7565_CONTRAST32The default contrast level of the display, from 0 to 255.
ST7565_UPDATE_INTERVAL0Set the time interval for updating the display in ms. This will improve the matrix scan rate.

Custom sized displays

The default display size for this feature is 128x32 and all necessary defines are precalculated with that in mind.

DefineDefaultDescription
ST7565_DISPLAY_WIDTH128The width of the display.
ST7565_DISPLAY_HEIGHT32The height of the display.
ST7565_MATRIX_SIZE512The local buffer size to allocate.
(ST7565_DISPLAY_HEIGHT / 8 * ST7565_DISPLAY_WIDTH).
ST7565_BLOCK_TYPEuint16_tThe unsigned integer type to use for dirty rendering.
ST7565_BLOCK_COUNT16The number of blocks the display is divided into for dirty rendering.
(sizeof(ST7565_BLOCK_TYPE) * 8).
ST7565_BLOCK_SIZE32The size of each block for dirty rendering
(ST7565_MATRIX_SIZE / ST7565_BLOCK_COUNT).

API

c
// Rotation enum values are flags\ntypedef enum {\n    DISPLAY_ROTATION_0,\n    DISPLAY_ROTATION_180\n} display_rotation_t;\n\n// Initialize the display, rotating the rendered output based on the define passed in.\n// Returns true if the was initialized successfully\nbool st7565_init(display_rotation_t rotation);\n\n// Called at the start of st7565_init, weak function overridable by the user\n// rotation - the value passed into st7565_init\n// Return new display_rotation_t if you want to override default rotation\ndisplay_rotation_t st7565_init_user(display_rotation_t rotation);\n\n// Clears the display buffer, resets cursor position to 0, and sets the buffer to dirty for rendering\nvoid st7565_clear(void);\n\n// Renders the dirty chunks of the buffer to display\nvoid st7565_render(void);\n\n// Moves cursor to character position indicated by column and line, wraps if out of bounds\n// Max column denoted by 'st7565_max_chars()' and max lines by 'st7565_max_lines()' functions\nvoid st7565_set_cursor(uint8_t col, uint8_t line);\n\n// Advances the cursor to the next page, writing ' ' if true\n// Wraps to the begining when out of bounds\nvoid st7565_advance_page(bool clearPageRemainder);\n\n// Moves the cursor forward 1 character length\n// Advance page if there is not enough room for the next character\n// Wraps to the begining when out of bounds\nvoid st7565_advance_char(void);\n\n// Writes a single character to the buffer at current cursor position\n// Advances the cursor while writing, inverts the pixels if true\n// Main handler that writes character data to the display buffer\nvoid st7565_write_char(const char data, bool invert);\n\n// Writes a string to the buffer at current cursor position\n// Advances the cursor while writing, inverts the pixels if true\nvoid st7565_write(const char *data, bool invert);\n\n// Writes a string to the buffer at current cursor position\n// Advances the cursor while writing, inverts the pixels if true\n// Advances the cursor to the next page, wiring ' ' to the remainder of the current page\nvoid st7565_write_ln(const char *data, bool invert);\n\n// Pans the buffer to the right (or left by passing true) by moving contents of the buffer\n// Useful for moving the screen in preparation for new drawing\nvoid st7565_pan(bool left);\n\n// Returns a pointer to the requested start index in the buffer plus remaining\n// buffer length as struct\ndisplay_buffer_reader_t st7565_read_raw(uint16_t start_index);\n\n// Writes a string to the buffer at current cursor position\nvoid st7565_write_raw(const char *data, uint16_t size);\n\n// Writes a single byte into the buffer at the specified index\nvoid st7565_write_raw_byte(const char data, uint16_t index);\n\n// Sets a specific pixel on or off\n// Coordinates start at top-left and go right and down for positive x and y\nvoid st7565_write_pixel(uint8_t x, uint8_t y, bool on);\n\n// Writes a PROGMEM string to the buffer at current cursor position\n// Advances the cursor while writing, inverts the pixels if true\n// Remapped to call 'void st7565_write(const char *data, bool invert);' on ARM\nvoid st7565_write_P(const char *data, bool invert);\n\n// Writes a PROGMEM string to the buffer at current cursor position\n// Advances the cursor while writing, inverts the pixels if true\n// Advances the cursor to the next page, wiring ' ' to the remainder of the current page\n// Remapped to call 'void st7565_write_ln(const char *data, bool invert);' on ARM\nvoid st7565_write_ln_P(const char *data, bool invert);\n\n// Writes a PROGMEM string to the buffer at current cursor position\nvoid st7565_write_raw_P(const char *data, uint16_t size);\n\n// Can be used to manually turn on the screen if it is off\n// Returns true if the screen was on or turns on\nbool st7565_on(void);\n\n// Called when st7565_on() turns on the screen, weak function overridable by the user\n// Not called if the screen is already on\nvoid st7565_on_user(void);\n\n// Can be used to manually turn off the screen if it is on\n// Returns true if the screen was off or turns off\nbool st7565_off(void);\n\n// Called when st7565_off() turns off the screen, weak function overridable by the user\n// Not called if the screen is already off\nvoid st7565_off_user(void);\n\n// Returns true if the screen is currently on, false if it is\n// not\nbool st7565_is_on(void);\n\n// Basically it's st7565_render, but with timeout management and st7565_task_user calling!\nvoid st7565_task(void);\n\n// Called at the start of st7565_task, weak function overridable by the user\nvoid st7565_task_user(void);\n\n// Inverts the display\n// Returns true if the screen was or is inverted\nbool st7565_invert(bool invert);\n\n// Returns the maximum number of characters that will fit on a line\nuint8_t st7565_max_chars(void);\n\n// Returns the maximum number of lines that will fit on the display\nuint8_t st7565_max_lines(void);
', 26); diff --git a/assets/features_st7565.md.MoajNurJ.lean.js b/assets/features_st7565.md.DeApZTVP.lean.js similarity index 91% rename from assets/features_st7565.md.MoajNurJ.lean.js rename to assets/features_st7565.md.DeApZTVP.lean.js index 86b2f560092..46aad4600df 100644 --- a/assets/features_st7565.md.MoajNurJ.lean.js +++ b/assets/features_st7565.md.DeApZTVP.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"ST7565 LCD Driver","description":"","frontmatter":{},"headers":[],"relativePath":"features/st7565.md","filePath":"features/st7565.md"}'); const _sfc_main = { name: "features/st7565.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 26); diff --git a/assets/features_stenography.md.Bb_IhUGl.js b/assets/features_stenography.md.BmdUwUEg.js similarity index 99% rename from assets/features_stenography.md.Bb_IhUGl.js rename to assets/features_stenography.md.BmdUwUEg.js index 8989ff83c60..55009d6f3b4 100644 --- a/assets/features_stenography.md.Bb_IhUGl.js +++ b/assets/features_stenography.md.BmdUwUEg.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Stenography in QMK","description":"","frontmatter":{},"headers":[],"relativePath":"features/stenography.md","filePath":"features/stenography.md"}'); const _sfc_main = { name: "features/stenography.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Stenography in QMK

Stenography is a method of writing most often used by court reports, closed-captioning, and real-time transcription for the deaf. In stenography words are chorded syllable by syllable with a mixture of spelling, phonetic, and shortcut (briefs) strokes. Professional stenographers can reach 200-300 WPM without any of the strain usually found in standard typing and with far fewer errors (>99.9% accuracy).

The Open Steno Project has built an open-source program called Plover that provides real-time translation of steno strokes into words and commands. It has an established dictionary and supports

Plover with QWERTY Keyboard

Plover can work with any standard QWERTY keyboard, although it is more efficient if the keyboard supports NKRO (n-key rollover) to allow Plover to see all the pressed keys at once. An example keymap for Plover can be found in planck/keymaps/default. Switching to the PLOVER layer adjusts the position of the keyboard to support the number bar.

To enable NKRO, add NKRO_ENABLE = yes in your rules.mk and make sure to press NK_ON to turn it on because NKRO_ENABLE = yes merely adds the possibility of switching to NKRO mode but it doesn't automatically switch to it. If you want to automatically switch, add #define FORCE_NKRO in your config.h.

You may also need to adjust your layout, either in QMK or in Plover, if you have anything other than a standard layout. You may also want to purchase some steno-friendly keycaps to make it easier to hit multiple keys.

Plover with Steno Protocol

Plover also understands the language of several steno machines. QMK can speak a couple of these languages: TX Bolt and GeminiPR. An example layout can be found in planck/keymaps/steno.

When QMK speaks to Plover over a steno protocol, Plover will not use the keyboard as input. This means that you can switch back and forth between a standard keyboard and your steno keyboard, or even switch layers from Plover to standard and back without needing to activate/deactivate Plover.

In this mode, Plover expects to speak with a steno machine over a serial port so QMK will present itself to the operating system as a virtual serial port in addition to a keyboard.

INFO

Note: Due to hardware limitations, you might not be able to run both a virtual serial port and mouse emulation at the same time.

WARNING

Serial stenography protocols are not supported on V-USB keyboards.

To enable stenography protocols, add the following lines to your rules.mk:

make
STENO_ENABLE = yes

TX Bolt

TX Bolt communicates the status of 24 keys over a simple protocol in variable-sized (1–4 bytes) packets.

To select TX Bolt, add the following lines to your rules.mk:

make
STENO_ENABLE = yes\nSTENO_PROTOCOL = txbolt

Each byte of the packet represents a different group of steno keys. Determining the group of a certain byte of the packet is done by checking the first two bits, the remaining bits are set if the corresponding steno key was pressed for the stroke. The last set of keys (as indicated by leading 11) needs to keep track of less keys than there are bits so one of the bits is constantly 0.

The start of a new packet can be detected by comparing the group “ID” (the two MSBs) of the current byte to that of the previously received byte. If the group “ID” of the current byte is smaller or equal to that of the previous byte, it means that the current byte is the beginning of a new packet.

The format of TX Bolt packets is shown below.

00HWPKTS 01UE*OAR 10GLBPRF 110#ZDST

Examples of steno strokes and the associated packet:

GeminiPR

GeminiPR encodes 42 keys into a 6-byte packet. While TX Bolt contains everything that is necessary for standard stenography, GeminiPR opens up many more options, including differentiating between top and bottom S-, and supporting non-English theories.

To select GeminiPR, add the following lines to your rules.mk:

make
STENO_ENABLE = yes\nSTENO_PROTOCOL = geminipr

All packets in the GeminiPR protocol consist of exactly six bytes, used as bit-arrays for different groups of keys. The beginning of a packet is indicated by setting the most significant bit (MSB) to 1 while setting the MSB of the remaining five bytes to 0.

The format of GeminiPR packets is shown below.

1 Fn  #1  #2 #3 #4 #5   #6\n0 S1- S2- T- K- P- W-   H-\n0 R-  A-  O- *1 *2 res1 res2\n0 pwr *3  *4 -E -U -F   -R\n0 -P  -B  -L -G -T -S   -D\n0 #7  #8  #9 #A #B #C   -Z

Examples of steno strokes and the associated packet:

Switching protocols on the fly

If you wish to switch the serial protocol used to transfer the steno chords without having to recompile your keyboard firmware every time, you can press the QK_STENO_BOLT and QK_STENO_GEMINI keycodes in order to switch protocols on the fly.

To enable these special keycodes, add the following lines to your rules.mk:

make
STENO_ENABLE = yes\nSTENO_PROTOCOL = all

If you want to switch protocols programatically, as part of a custom macro for example, don't use tap_code(QK_STENO_*), as tap_code only supports basic keycodes. Instead, you should use steno_set_mode(STENO_MODE_*), whose valid arguments are STENO_MODE_BOLT and STENO_MODE_GEMINI.

The default protocol is Gemini PR but the last protocol used is stored in non-volatile memory so QMK will remember your choice between reboots of your keyboard — assuming that your keyboard features (emulated) EEPROM.

Naturally, this option takes the most amount of firmware space as it needs to compile the code for all the available stenography protocols. In most cases, compiling a single stenography protocol is sufficient.

The default value for STENO_PROTOCOL is all.

Configuring QMK for Steno

After enabling stenography and optionally selecting a protocol, you may also need disable mouse keys, extra keys, or another USB endpoint to prevent conflicts. The builtin USB stack for some processors only supports a certain number of USB endpoints and the virtual serial port needed for steno fills 3 of them.

WARNING

If you had explicitly set VIRSTER_ENABLE = no, none of the serial stenography protocols (GeminiPR, TX Bolt) will work properly. You are expected to either set it to yes, remove the line from your rules.mk or send the steno chords yourself in an alternative way using the provided interceptable hooks.

In your keymap, create a new layer for Plover, that you can fill in with the steno keycodes. Remember to create a key to switch to the layer as well as a key for exiting the layer.

Once you have your keyboard flashed, launch Plover. Click the 'Configure...' button. In the 'Machine' tab, select the Stenotype Machine that corresponds to your desired protocol. Click the 'Configure...' button on this tab and enter the serial port or click 'Scan'. Baud rate is fine at 9600 (although you should be able to set as high as 115200 with no issues). Use the default settings for everything else (Data Bits: 8, Stop Bits: 1, Parity: N, no flow control).

To test your keymap, you can chord keys on your keyboard and either look at the output of the 'paper tape' (Tools > Paper Tape) or that of the 'layout display' (Tools > Layout Display). If your strokes correctly show up, you are now ready to steno!

Learning Stenography

Interfacing with the code

The steno code has three interceptable hooks. If you define these functions, they will be called at certain points in processing; if they return true, processing continues, otherwise it's assumed you handled things.

c
bool send_steno_chord_user(steno_mode_t mode, uint8_t chord[MAX_STROKE_SIZE]);

This function is called when a chord is about to be sent. Mode will be one of STENO_MODE_BOLT or STENO_MODE_GEMINI. This represents the actual chord that would be sent via whichever protocol. You can modify the chord provided to alter what gets sent. Remember to return true if you want the regular sending process to happen.

c
bool process_steno_user(uint16_t keycode, keyrecord_t *record) { return true; }

This function is called when a keypress has come in, before it is processed. The keycode should be one of QK_STENO_BOLT, QK_STENO_GEMINI, or one of the STN_* key values.

c
bool post_process_steno_user(uint16_t keycode, keyrecord_t *record, steno_mode_t mode, uint8_t chord[MAX_STROKE_SIZE], int8_t n_pressed_keys);

This function is called after a key has been processed, but before any decision about whether or not to send a chord. This is where to put hooks for things like, say, live displays of steno chords or keys.

If record->event.pressed is false, and n_pressed_keys is 0 or 1, the chord will be sent shortly, but has not yet been sent. This relieves you of the need of keeping track of where a packet ends and another begins.

The chord argument contains the packet of the current chord as specified by the protocol in use. This is NOT simply a list of chorded steno keys of the form [STN_E, STN_U, STN_BR, STN_GR]. Refer to the appropriate protocol section of this document to learn more about the format of the packets in your steno protocol/mode of choice.

The n_pressed_keys argument is the number of physical keys actually being held down. This is not always equal to the number of bits set to 1 (aka the Hamming weight) in chord because it is possible to simultaneously press down four keys, then release three of those four keys and then press yet another key while the fourth finger is still holding down its key. At the end of this scenario given as an example, chord would have five bits set to 1 but n_pressed_keys would be set to 2 because there are only two keys currently being pressed down.

Keycode Reference

INFO

Note: TX Bolt does not support the full set of keys. The TX Bolt implementation in QMK will map the GeminiPR keys to the nearest TX Bolt key so that one key map will work for both.

GeminiPRTX BoltSteno Key
STN_N1STN_NUMNumber bar #1
STN_N2STN_NUMNumber bar #2
STN_N3STN_NUMNumber bar #3
STN_N4STN_NUMNumber bar #4
STN_N5STN_NUMNumber bar #5
STN_N6STN_NUMNumber bar #6
STN_N7STN_NUMNumber bar #7
STN_N8STN_NUMNumber bar #8
STN_N9STN_NUMNumber bar #9
STN_NASTN_NUMNumber bar #A
STN_NBSTN_NUMNumber bar #B
STN_NCSTN_NUMNumber bar #C
STN_S1STN_SLS- upper
STN_S2STN_SLS- lower
STN_TLSTN_TLT-
STN_KLSTN_KLK-
STN_PLSTN_PLP-
STN_WLSTN_WLW-
STN_HLSTN_HLH-
STN_RLSTN_RLR-
STN_ASTN_AA vowel
STN_OSTN_OO vowel
STN_ST1STN_STR* upper-left
STN_ST2STN_STR* lower-left
STN_ST3STN_STR* upper-right
STN_ST4STN_STR* lower-right
STN_ESTN_EE vowel
STN_USTN_UU vowel
STN_FRSTN_FR-F
STN_RRSTN_RR-R
STN_PRSTN_PR-P
STN_BRSTN_BR-B
STN_LRSTN_LR-L
STN_GRSTN_GR-G
STN_TRSTN_TR-T
STN_SRSTN_SR-S
STN_DRSTN_DR-D
STN_ZRSTN_ZR-Z
STN_FN(Function)
STN_RES1(Reset 1)
STN_RES2(Reset 2)
STN_PWR(Power)

If you do not want to hit two keys with one finger combined keycodes can be used. These cause both keys to be reported as pressed or released. To use these keycodes define STENO_COMBINEDMAP in your config.h file.

Combined keyKey1Key 2
STN_S3STN_S1STN_S2
STN_TKLSTN_TLSTN_KL
STN_PWLSTN_PLSTN_WL
STN_HRLSTN_HLSTN_RL
STN_FRRSTN_FRSTN_RR
STN_PBRSTN_PRSTN_BR
STN_LGRSTN_LRSTN_GR
STN_TSRSTN_TRSTN_SR
STN_DZRSTN_DRSTN_ZR
STN_AOSTN_ASTN_O
STN_EUSTN_ESTN_U
', 66); diff --git a/assets/features_stenography.md.Bb_IhUGl.lean.js b/assets/features_stenography.md.BmdUwUEg.lean.js similarity index 91% rename from assets/features_stenography.md.Bb_IhUGl.lean.js rename to assets/features_stenography.md.BmdUwUEg.lean.js index 04694bba36a..00de877ea0a 100644 --- a/assets/features_stenography.md.Bb_IhUGl.lean.js +++ b/assets/features_stenography.md.BmdUwUEg.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Stenography in QMK","description":"","frontmatter":{},"headers":[],"relativePath":"features/stenography.md","filePath":"features/stenography.md"}'); const _sfc_main = { name: "features/stenography.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 66); diff --git a/assets/features_swap_hands.md.DOhgGQf9.js b/assets/features_swap_hands.md.ChjoVx_w.js similarity index 99% rename from assets/features_swap_hands.md.DOhgGQf9.js rename to assets/features_swap_hands.md.ChjoVx_w.js index 74c5a7e6695..e494f765128 100644 --- a/assets/features_swap_hands.md.DOhgGQf9.js +++ b/assets/features_swap_hands.md.ChjoVx_w.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Swap-Hands Action","description":"","frontmatter":{},"headers":[],"relativePath":"features/swap_hands.md","filePath":"features/swap_hands.md"}'); const _sfc_main = { name: "features/swap_hands.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Swap-Hands Action

The swap-hands action allows support for one-handed typing without requiring a separate layer. Set SWAP_HANDS_ENABLE = yes in your keymap's rules.mk (creating it if needed), and define a hand_swap_config entry in your keymap. Now whenever the ACTION_SWAP_HANDS command key is pressed the keyboard is mirrored. For instance, to type "Hello, World" on QWERTY you would type ^Ge^s^s^w^c W^wr^sd

Configuration

The configuration table is a simple 2-dimensional array to map from column/row to new column/row. Example hand_swap_config for Planck:

c
const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {\n  {{11, 0}, {10, 0}, {9, 0}, {8, 0}, {7, 0}, {6, 0}, {5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},\n  {{11, 1}, {10, 1}, {9, 1}, {8, 1}, {7, 1}, {6, 1}, {5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},\n  {{11, 2}, {10, 2}, {9, 2}, {8, 2}, {7, 2}, {6, 2}, {5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},\n  {{11, 3}, {10, 3}, {9, 3}, {8, 3}, {7, 3}, {6, 3}, {5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}},\n};

Note that the array indices are reversed same as the matrix and the values are of type keypos_t which is {col, row} and all values are zero-based. In the example above, hand_swap_config[2][4] (third row, fifth column) would return {7, 2} (third row, eighth column). Yes, this is confusing.

Swap Keycodes

KeyAliasesDescription
SH_T(kc)Momentary swap when held, kc when tapped
QK_SWAP_HANDS_ONSH_ONTurn on hand swap
QK_SWAP_HANDS_OFFSH_OFFTurn off hand swap
QK_SWAP_HANDS_MOMENTARY_ONSH_MONTurn on hand swap while held
QK_SWAP_HANDS_MOMENTARY_OFFSH_MOFFTurn off hand swap while held
QK_SWAP_HANDS_TOGGLESH_TOGGToggle hand swap
QK_SWAP_HANDS_TAP_TOGGLESH_TTMomentary swap when held, toggle when tapped
QK_SWAP_HANDS_ONE_SHOTSH_OSTurn on hand swap while held or until next key press

SH_TT swap-hands tap-toggle key is similar to layer tap-toggle. Tapping repeatedly (5 taps by default) will toggle swap-hands on or off, like SH_TOGG. Tap-toggle count can be changed by defining a value for TAPPING_TOGGLE.

Encoder Mapping

When using an encoder mapping, it's also able to handle swapping encoders between sides, too.

Encoder indexes are defined as left-to-right, and the extent of the array needs to match the number of encoders on the keyboard.

As an example, if a split keyboard has a single encoder per side, you can swap the order by using the following code in your keymap:

c
#if defined(SWAP_HANDS_ENABLE) && defined(ENCODER_MAP_ENABLE)\nconst uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = { 1, 0 };\n#endif

Functions

User callback functions to manipulate Swap-Hands:

FunctionDescription
swap_hands_on()Turns Swap-Hands on.
swap_hands_off()Turns Swap-Hands off.
swap_hands_toggle()Toggles Swap-Hands.
is_swap_hands_on()Returns true if Swap-Hands is currently on.
', 17); diff --git a/assets/features_swap_hands.md.DOhgGQf9.lean.js b/assets/features_swap_hands.md.ChjoVx_w.lean.js similarity index 91% rename from assets/features_swap_hands.md.DOhgGQf9.lean.js rename to assets/features_swap_hands.md.ChjoVx_w.lean.js index 6fa004c9397..e5c6be5f3b4 100644 --- a/assets/features_swap_hands.md.DOhgGQf9.lean.js +++ b/assets/features_swap_hands.md.ChjoVx_w.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Swap-Hands Action","description":"","frontmatter":{},"headers":[],"relativePath":"features/swap_hands.md","filePath":"features/swap_hands.md"}'); const _sfc_main = { name: "features/swap_hands.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 17); diff --git a/assets/features_tap_dance.md.Bfnmm10t.js b/assets/features_tap_dance.md.C1QbVbkm.js similarity index 99% rename from assets/features_tap_dance.md.Bfnmm10t.js rename to assets/features_tap_dance.md.C1QbVbkm.js index 8b14838d748..280641e4f2a 100644 --- a/assets/features_tap_dance.md.Bfnmm10t.js +++ b/assets/features_tap_dance.md.C1QbVbkm.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","description":"","frontmatter":{},"headers":[],"relativePath":"features/tap_dance.md","filePath":"features/tap_dance.md"}'); const _sfc_main = { name: "features/tap_dance.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things

Introduction

Hit the semicolon key once, send a semicolon. Hit it twice, rapidly -- send a colon. Hit it three times, and your keyboard's LEDs do a wild dance. That's just one example of what Tap Dance can do. It's one of the nicest community-contributed features in the firmware, conceived and created by algernon in #451. Here's how algernon describes the feature:

With this feature one can specify keys that behave differently, based on the amount of times they have been tapped, and when interrupted, they get handled before the interrupter.

How to Use Tap Dance

First, you will need TAP_DANCE_ENABLE = yes in your rules.mk, because the feature is disabled by default. This adds a little less than 1k to the firmware size.

Optionally, you might want to set a custom TAPPING_TERM time by adding something like this in your config.h file:

c
#define TAPPING_TERM 175\n#define TAPPING_TERM_PER_KEY

The TAPPING_TERM time is the maximum time allowed between taps of your Tap Dance key, and is measured in milliseconds. For example, if you used the above #define statement and set up a Tap Dance key that sends Space on single-tap and Enter on double-tap, then this key will send ENT only if you tap this key twice in less than 175ms. If you tap the key, wait more than 175ms, and tap the key again you'll end up sending SPC SPC instead. The TAPPING_TERM_PER_KEY definition is only needed if you control the tapping term through a custom get_tapping_term function, which may be needed because TAPPING_TERM affects not just tap-dance keys.

Next, you will want to define some tap-dance keys, which is easiest to do with the TD() macro. That macro takes a number which will later be used as an index into the tap_dance_actions array and turns it into a tap-dance keycode.

After this, you'll want to use the tap_dance_actions array to specify what actions shall be taken when a tap-dance key is in action. Currently, there are five possible options:

The first option is enough for a lot of cases, that just want dual roles. For example, ACTION_TAP_DANCE_DOUBLE(KC_SPC, KC_ENT) will result in Space being sent on single-tap, Enter otherwise.

WARNING

Keep in mind that only basic keycodes are supported here. Custom keycodes are not supported.

Similar to the first option, the second and third option are good for simple layer-switching cases.

For more complicated cases, like blink the LEDs, fiddle with the backlighting, and so on, use the fourth or fifth option. Examples of each are listed below.

Implementation Details

Well, that's the bulk of it! You should now be able to work through the examples below, and to develop your own Tap Dance functionality. But if you want a deeper understanding of what's going on behind the scenes, then read on for the explanation of how it all works!

Let's go over the three functions mentioned in ACTION_TAP_DANCE_FN_ADVANCED in a little more detail. They all receive the same two arguments: a pointer to a structure that holds all dance related state information, and a pointer to a use case specific state variable. The three functions differ in when they are called. The first, on_each_tap_fn(), is called every time the tap dance key is pressed. Before it is called, the counter is incremented and the timer is reset. The second function, on_dance_finished_fn(), is called when the tap dance is interrupted or ends because TAPPING_TERM milliseconds have passed since the last tap. When the finished field of the dance state structure is set to true, the on_dance_finished_fn() is skipped. After on_dance_finished_fn() was called or would have been called, but no sooner than when the tap dance key is released, on_dance_reset_fn() is called. It is possible to end a tap dance immediately, skipping on_dance_finished_fn(), but not on_dance_reset_fn, by calling reset_tap_dance(state).

To accomplish this logic, the tap dance mechanics use three entry points. The main entry point is process_tap_dance(), called from process_record_quantum() after process_record_kb() and process_record_user(). This function is responsible for calling on_each_tap_fn() and on_dance_reset_fn(). In order to handle interruptions of a tap dance, another entry point, preprocess_tap_dance() is run right at the beginning of process_record_quantum(). This function checks whether the key pressed is a tap-dance key. If it is not, and a tap-dance was in action, we handle that first, and enqueue the newly pressed key. If it is a tap-dance key, then we check if it is the same as the already active one (if there's one active, that is). If it is not, we fire off the old one first, then register the new one. Finally, tap_dance_task() periodically checks whether TAPPING_TERM has passed since the last key press and finishes a tap dance if that is the case.

This means that you have TAPPING_TERM time to tap the key again; you do not have to input all the taps within a single TAPPING_TERM timeframe. This allows for longer tap counts, with minimal impact on responsiveness.

Examples

Simple Example: Send ESC on Single Tap, CAPS_LOCK on Double Tap

Here's a simple example for a single definition:

  1. In your rules.mk, add TAP_DANCE_ENABLE = yes
  2. In your keymap.c file, define the variables and definitions, then add to your keymap:
c
// Tap Dance declarations\nenum {\n    TD_ESC_CAPS,\n};\n\n// Tap Dance definitions\ntap_dance_action_t tap_dance_actions[] = {\n    // Tap once for Escape, twice for Caps Lock\n    [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),\n};\n\n// Add tap dance item to your keymap in place of a keycode\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n    // ...\n    TD(TD_ESC_CAPS)\n    // ...\n};

Complex Examples

This section details several complex tap dance examples. All the enums used in the examples are declared like this:

c
// Enums defined for all examples:\nenum {\n    TD_ESC_CAPS,\n    CT_EGG,\n    CT_FLSH,\n    CT_CLN,\n    X_CTL,\n};

Example 1: Send "Safety Dance!" After 100 Taps

c
void dance_egg(tap_dance_state_t *state, void *user_data) {\n    if (state->count >= 100) {\n        SEND_STRING("Safety dance!");\n        reset_tap_dance(state);\n    }\n}\n\ntap_dance_action_t tap_dance_actions[] = {\n    [CT_EGG] = ACTION_TAP_DANCE_FN(dance_egg),\n};

Example 2: Turn LED Lights On Then Off, One at a Time

c
// On each tap, light up one LED, from right to left\n// On the fourth tap, turn them off from right to left\nvoid dance_flsh_each(tap_dance_state_t *state, void *user_data) {\n    switch (state->count) {\n        case 1:\n            ergodox_right_led_3_on();\n            break;\n        case 2:\n            ergodox_right_led_2_on();\n            break;\n        case 3:\n            ergodox_right_led_1_on();\n            break;\n        case 4:\n            ergodox_right_led_3_off();\n            wait_ms(50);\n            ergodox_right_led_2_off();\n            wait_ms(50);\n            ergodox_right_led_1_off();\n    }\n}\n\n// On the fourth tap, set the keyboard on flash state\nvoid dance_flsh_finished(tap_dance_state_t *state, void *user_data) {\n    if (state->count >= 4) {\n        reset_keyboard();\n    }\n}\n\n// If the flash state didn't happen, then turn off LEDs, left to right\nvoid dance_flsh_reset(tap_dance_state_t *state, void *user_data) {\n    ergodox_right_led_1_off();\n    wait_ms(50);\n    ergodox_right_led_2_off();\n    wait_ms(50);\n    ergodox_right_led_3_off();\n}\n\n// All tap dances now put together. Example 2 is "CT_FLSH"\ntap_dance_action_t tap_dance_actions[] = {\n    [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),\n    [CT_EGG] = ACTION_TAP_DANCE_FN(dance_egg),\n    [CT_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED(dance_flsh_each, dance_flsh_finished, dance_flsh_reset)\n};

Example 3: Send : on Tap, ; on Hold

With a little effort, powerful tap-hold configurations can be implemented as tap dances. To emit taps as early as possible, we need to act on releases of the tap dance key. There is no callback for this in the tap dance framework, so we use process_record_user().

c
typedef struct {\n    uint16_t tap;\n    uint16_t hold;\n    uint16_t held;\n} tap_dance_tap_hold_t;\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n    tap_dance_action_t *action;\n\n    switch (keycode) {\n        case TD(CT_CLN):  // list all tap dance keycodes with tap-hold configurations\n            action = &tap_dance_actions[QK_TAP_DANCE_GET_INDEX(keycode)];\n            if (!record->event.pressed && action->state.count && !action->state.finished) {\n                tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)action->user_data;\n                tap_code16(tap_hold->tap);\n            }\n    }\n    return true;\n}\n\nvoid tap_dance_tap_hold_finished(tap_dance_state_t *state, void *user_data) {\n    tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)user_data;\n\n    if (state->pressed) {\n        if (state->count == 1\n#ifndef PERMISSIVE_HOLD\n            && !state->interrupted\n#endif\n        ) {\n            register_code16(tap_hold->hold);\n            tap_hold->held = tap_hold->hold;\n        } else {\n            register_code16(tap_hold->tap);\n            tap_hold->held = tap_hold->tap;\n        }\n    }\n}\n\nvoid tap_dance_tap_hold_reset(tap_dance_state_t *state, void *user_data) {\n    tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)user_data;\n\n    if (tap_hold->held) {\n        unregister_code16(tap_hold->held);\n        tap_hold->held = 0;\n    }\n}\n\n#define ACTION_TAP_DANCE_TAP_HOLD(tap, hold) \\\n    { .fn = {NULL, tap_dance_tap_hold_finished, tap_dance_tap_hold_reset}, .user_data = (void *)&((tap_dance_tap_hold_t){tap, hold, 0}), }\n\ntap_dance_action_t tap_dance_actions[] = {\n    [CT_CLN] = ACTION_TAP_DANCE_TAP_HOLD(KC_COLN, KC_SCLN),\n};

Example 4: 'Quad Function Tap-Dance'

By DanielGGordon

Allow one key to have 4 (or more) functions, depending on number of presses, and if the key is held or tapped. Below is a specific example:

You will need a few things that can be used for 'Quad Function Tap-Dance'.

You'll need to add these to the top of your keymap.c file, before your keymap.

c
typedef enum {\n    TD_NONE,\n    TD_UNKNOWN,\n    TD_SINGLE_TAP,\n    TD_SINGLE_HOLD,\n    TD_DOUBLE_TAP,\n    TD_DOUBLE_HOLD,\n    TD_DOUBLE_SINGLE_TAP, // Send two single taps\n    TD_TRIPLE_TAP,\n    TD_TRIPLE_HOLD\n} td_state_t;\n\ntypedef struct {\n    bool is_press_action;\n    td_state_t state;\n} td_tap_t;\n\n// Tap dance enums\nenum {\n    X_CTL,\n    SOME_OTHER_DANCE\n};\n\ntd_state_t cur_dance(tap_dance_state_t *state);\n\n// For the x tap dance. Put it here so it can be used in any keymap\nvoid x_finished(tap_dance_state_t *state, void *user_data);\nvoid x_reset(tap_dance_state_t *state, void *user_data);

Now, at the bottom of your keymap.c file, you'll need to add the following:

c
/* Return an integer that corresponds to what kind of tap dance should be executed.\n *\n * How to figure out tap dance state: interrupted and pressed.\n *\n * Interrupted: If the state of a dance is "interrupted", that means that another key has been hit\n *  under the tapping term. This is typically indicative that you are trying to "tap" the key.\n *\n * Pressed: Whether or not the key is still being pressed. If this value is true, that means the tapping term\n *  has ended, but the key is still being pressed down. This generally means the key is being "held".\n *\n * One thing that is currently not possible with qmk software in regards to tap dance is to mimic the "permissive hold"\n *  feature. In general, advanced tap dances do not work well if they are used with commonly typed letters.\n *  For example "A". Tap dances are best used on non-letter keys that are not hit while typing letters.\n *\n * Good places to put an advanced tap dance:\n *  z,q,x,j,k,v,b, any function key, home/end, comma, semi-colon\n *\n * Criteria for "good placement" of a tap dance key:\n *  Not a key that is hit frequently in a sentence\n *  Not a key that is used frequently to double tap, for example 'tab' is often double tapped in a terminal, or\n *    in a web form. So 'tab' would be a poor choice for a tap dance.\n *  Letters used in common words as a double. For example 'p' in 'pepper'. If a tap dance function existed on the\n *    letter 'p', the word 'pepper' would be quite frustrating to type.\n *\n * For the third point, there does exist the 'TD_DOUBLE_SINGLE_TAP', however this is not fully tested\n *\n */\ntd_state_t cur_dance(tap_dance_state_t *state) {\n    if (state->count == 1) {\n        if (state->interrupted || !state->pressed) return TD_SINGLE_TAP;\n        // Key has not been interrupted, but the key is still held. Means you want to send a 'HOLD'.\n        else return TD_SINGLE_HOLD;\n    } else if (state->count == 2) {\n        // TD_DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap\n        // action when hitting 'pp'. Suggested use case for this return value is when you want to send two\n        // keystrokes of the key, and not the 'double tap' action/macro.\n        if (state->interrupted) return TD_DOUBLE_SINGLE_TAP;\n        else if (state->pressed) return TD_DOUBLE_HOLD;\n        else return TD_DOUBLE_TAP;\n    }\n\n    // Assumes no one is trying to type the same letter three times (at least not quickly).\n    // If your tap dance key is 'KC_W', and you want to type "www." quickly - then you will need to add\n    // an exception here to return a 'TD_TRIPLE_SINGLE_TAP', and define that enum just like 'TD_DOUBLE_SINGLE_TAP'\n    if (state->count == 3) {\n        if (state->interrupted || !state->pressed) return TD_TRIPLE_TAP;\n        else return TD_TRIPLE_HOLD;\n    } else return TD_UNKNOWN;\n}\n\n// Create an instance of 'td_tap_t' for the 'x' tap dance.\nstatic td_tap_t xtap_state = {\n    .is_press_action = true,\n    .state = TD_NONE\n};\n\nvoid x_finished(tap_dance_state_t *state, void *user_data) {\n    xtap_state.state = cur_dance(state);\n    switch (xtap_state.state) {\n        case TD_SINGLE_TAP: register_code(KC_X); break;\n        case TD_SINGLE_HOLD: register_code(KC_LCTL); break;\n        case TD_DOUBLE_TAP: register_code(KC_ESC); break;\n        case TD_DOUBLE_HOLD: register_code(KC_LALT); break;\n        // Last case is for fast typing. Assuming your key is `f`:\n        // For example, when typing the word `buffer`, and you want to make sure that you send `ff` and not `Esc`.\n        // In order to type `ff` when typing fast, the next character will have to be hit within the `TAPPING_TERM`, which by default is 200ms.\n        case TD_DOUBLE_SINGLE_TAP: tap_code(KC_X); register_code(KC_X); break;\n        default: break;\n    }\n}\n\nvoid x_reset(tap_dance_state_t *state, void *user_data) {\n    switch (xtap_state.state) {\n        case TD_SINGLE_TAP: unregister_code(KC_X); break;\n        case TD_SINGLE_HOLD: unregister_code(KC_LCTL); break;\n        case TD_DOUBLE_TAP: unregister_code(KC_ESC); break;\n        case TD_DOUBLE_HOLD: unregister_code(KC_LALT); break;\n        case TD_DOUBLE_SINGLE_TAP: unregister_code(KC_X); break;\n        default: break;\n    }\n    xtap_state.state = TD_NONE;\n}\n\ntap_dance_action_t tap_dance_actions[] = {\n    [X_CTL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, x_finished, x_reset)\n};

And then simply use TD(X_CTL) anywhere in your keymap.

INFO

In this configuration "hold" takes place after tap dance timeout. To achieve instant hold, remove state->interrupted checks in conditions. As a result you may use comfortable longer tapping periods to have more time for taps and not to wait too long for holds (try starting with doubled TAPPING_TERM).

Example 5: Using tap dance for advanced mod-tap and layer-tap keys

Tap dance can be used to emulate MT() and LT() behavior when the tapped code is not a basic keycode. This is useful to send tapped keycodes that normally require Shift, such as parentheses or curly braces—or other modified keycodes, such as Control + X.

Below your layers and custom keycodes, add the following:

c
// Tap Dance keycodes\nenum td_keycodes {\n    ALT_LP // Our example key: `LALT` when held, `(` when tapped. Add additional keycodes for each tapdance.\n};\n\n// Define a type containing as many tapdance states as you need\ntypedef enum {\n    TD_NONE,\n    TD_UNKNOWN,\n    TD_SINGLE_TAP,\n    TD_SINGLE_HOLD,\n    TD_DOUBLE_SINGLE_TAP\n} td_state_t;\n\n// Create a global instance of the tapdance state type\nstatic td_state_t td_state;\n\n// Declare your tapdance functions:\n\n// Function to determine the current tapdance state\ntd_state_t cur_dance(tap_dance_state_t *state);\n\n// `finished` and `reset` functions for each tapdance keycode\nvoid altlp_finished(tap_dance_state_t *state, void *user_data);\nvoid altlp_reset(tap_dance_state_t *state, void *user_data);

Below your LAYOUT, define each of the tapdance functions:

c
// Determine the tapdance state to return\ntd_state_t cur_dance(tap_dance_state_t *state) {\n    if (state->count == 1) {\n        if (state->interrupted || !state->pressed) return TD_SINGLE_TAP;\n        else return TD_SINGLE_HOLD;\n    }\n\n    if (state->count == 2) return TD_DOUBLE_SINGLE_TAP;\n    else return TD_UNKNOWN; // Any number higher than the maximum state value you return above\n}\n\n// Handle the possible states for each tapdance keycode you define:\n\nvoid altlp_finished(tap_dance_state_t *state, void *user_data) {\n    td_state = cur_dance(state);\n    switch (td_state) {\n        case TD_SINGLE_TAP:\n            register_code16(KC_LPRN);\n            break;\n        case TD_SINGLE_HOLD:\n            register_mods(MOD_BIT(KC_LALT)); // For a layer-tap key, use `layer_on(_MY_LAYER)` here\n            break;\n        case TD_DOUBLE_SINGLE_TAP: // Allow nesting of 2 parens `((` within tapping term\n            tap_code16(KC_LPRN);\n            register_code16(KC_LPRN);\n            break;\n        default:\n            break;\n    }\n}\n\nvoid altlp_reset(tap_dance_state_t *state, void *user_data) {\n    switch (td_state) {\n        case TD_SINGLE_TAP:\n            unregister_code16(KC_LPRN);\n            break;\n        case TD_SINGLE_HOLD:\n            unregister_mods(MOD_BIT(KC_LALT)); // For a layer-tap key, use `layer_off(_MY_LAYER)` here\n            break;\n        case TD_DOUBLE_SINGLE_TAP:\n            unregister_code16(KC_LPRN);\n            break;\n        default:\n            break;\n    }\n}\n\n// Define `ACTION_TAP_DANCE_FN_ADVANCED()` for each tapdance keycode, passing in `finished` and `reset` functions\ntap_dance_action_t tap_dance_actions[] = {\n    [ALT_LP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altlp_finished, altlp_reset)\n};

Wrap each tapdance keycode in TD() when including it in your keymap, e.g. TD(ALT_LP).

Example 6: Using tap dance for momentary-layer-switch and layer-toggle keys

Tap Dance can be used to mimic MO(layer) and TG(layer) functionality. For this example, we will set up a key to function as KC_QUOT on single-tap, as MO(_MY_LAYER) on single-hold, and TG(_MY_LAYER) on double-tap.

The first step is to include the following code towards the beginning of your keymap.c:

c
// Define a type for as many tap dance states as you need\ntypedef enum {\n    TD_NONE,\n    TD_UNKNOWN,\n    TD_SINGLE_TAP,\n    TD_SINGLE_HOLD,\n    TD_DOUBLE_TAP\n} td_state_t;\n\ntypedef struct {\n    bool is_press_action;\n    td_state_t state;\n} td_tap_t;\n\nenum {\n    QUOT_LAYR, // Our custom tap dance key; add any other tap dance keys to this enum \n};\n\n// Declare the functions to be used with your tap dance key(s)\n\n// Function associated with all tap dances\ntd_state_t cur_dance(tap_dance_state_t *state);\n\n// Functions associated with individual tap dances\nvoid ql_finished(tap_dance_state_t *state, void *user_data);\nvoid ql_reset(tap_dance_state_t *state, void *user_data);

Towards the bottom of your keymap.c, include the following code:

c
// Determine the current tap dance state\ntd_state_t cur_dance(tap_dance_state_t *state) {\n    if (state->count == 1) {\n        if (!state->pressed) return TD_SINGLE_TAP;\n        else return TD_SINGLE_HOLD;\n    } else if (state->count == 2) return TD_DOUBLE_TAP;\n    else return TD_UNKNOWN;\n}\n\n// Initialize tap structure associated with example tap dance key\nstatic td_tap_t ql_tap_state = {\n    .is_press_action = true,\n    .state = TD_NONE\n};\n\n// Functions that control what our tap dance key does\nvoid ql_finished(tap_dance_state_t *state, void *user_data) {\n    ql_tap_state.state = cur_dance(state);\n    switch (ql_tap_state.state) {\n        case TD_SINGLE_TAP:\n            tap_code(KC_QUOT);\n            break;\n        case TD_SINGLE_HOLD:\n            layer_on(_MY_LAYER);\n            break;\n        case TD_DOUBLE_TAP:\n            // Check to see if the layer is already set\n            if (layer_state_is(_MY_LAYER)) {\n                // If already set, then switch it off\n                layer_off(_MY_LAYER);\n            } else {\n                // If not already set, then switch the layer on\n                layer_on(_MY_LAYER);\n            }\n            break;\n        default:\n            break;\n    }\n}\n\nvoid ql_reset(tap_dance_state_t *state, void *user_data) {\n    // If the key was held down and now is released then switch off the layer\n    if (ql_tap_state.state == TD_SINGLE_HOLD) {\n        layer_off(_MY_LAYER);\n    }\n    ql_tap_state.state = TD_NONE;\n}\n\n// Associate our tap dance key with its functionality\ntap_dance_action_t tap_dance_actions[] = {\n    [QUOT_LAYR] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ql_finished, ql_reset)\n};\n\n// Set a long-ish tapping term for tap-dance keys\nuint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {\n    switch (keycode) {\n        case QK_TAP_DANCE ... QK_TAP_DANCE_MAX:\n            return 275;\n        default:\n            return TAPPING_TERM;\n    }\n}

The above code is similar to that used in previous examples. The one point to note is that we need to be able to check which layers are active at any time so we can toggle them if needed. To do this we use the layer_state_is(layer) function which returns true if the given layer is active.

The use of cur_dance() and ql_tap_state mirrors the above examples.

The case: TD_SINGLE_TAP in ql_finished is similar to the above examples. The TD_SINGLE_HOLD case works in conjunction with ql_reset() to switch to _MY_LAYER while the tap dance key is held, and to switch away from _MY_LAYER when the key is released. This mirrors the use of MO(_MY_LAYER). The TD_DOUBLE_TAP case works by checking whether _MY_LAYER is the active layer, and toggling it on or off accordingly. This mirrors the use of TG(_MY_LAYER).

tap_dance_actions[] works similar to the above examples. Note that, additionally, I set a longer tapping term for the tap dance keys. This is because I like my TAPPING_TERM to be short (~175ms) for my non-tap-dance keys but find that this is too quick for me to reliably complete tap dance actions - thus the increased time of 275ms here. In order for the per-key tapping terms to take effect, TAPPING_TERM_PER_KEY must be defined in your config.h.

Finally, to get this tap dance key working, be sure to include TD(QUOT_LAYR) in your keymaps[].

', 65); diff --git a/assets/features_tap_dance.md.Bfnmm10t.lean.js b/assets/features_tap_dance.md.C1QbVbkm.lean.js similarity index 91% rename from assets/features_tap_dance.md.Bfnmm10t.lean.js rename to assets/features_tap_dance.md.C1QbVbkm.lean.js index 3835cdb7ace..f755a9aeb30 100644 --- a/assets/features_tap_dance.md.Bfnmm10t.lean.js +++ b/assets/features_tap_dance.md.C1QbVbkm.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things","description":"","frontmatter":{},"headers":[],"relativePath":"features/tap_dance.md","filePath":"features/tap_dance.md"}'); const _sfc_main = { name: "features/tap_dance.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 65); diff --git a/assets/features_tri_layer.md.DdnBVinw.js b/assets/features_tri_layer.md.BMkcUufJ.js similarity index 98% rename from assets/features_tri_layer.md.DdnBVinw.js rename to assets/features_tri_layer.md.BMkcUufJ.js index 7c779ee57f8..c8f217cc02d 100644 --- a/assets/features_tri_layer.md.DdnBVinw.js +++ b/assets/features_tri_layer.md.BMkcUufJ.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Tri Layers","description":"","frontmatter":{},"headers":[],"relativePath":"features/tri_layer.md","filePath":"features/tri_layer.md"}'); const _sfc_main = { name: "features/tri_layer.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Tri Layers

This enables support for the OLKB style "Tri Layer" keycodes. These function similar to the MO (momentary) function key, but if both the "Lower" and "Upper" keys are pressed, it activates a third "Adjust" layer. To enable this functionality, add this line to your rules.mk:

make
TRI_LAYER_ENABLE = yes

Note that the "upper", "lower" and "adjust" names don't have a particular significance, they are just used to identify and clarify the behavior. Layers are processed from highest numeric value to lowest, however the values are not required to be consecutive.

For a detailed explanation of how the layer stack works, check out Keymap Overview.

Keycodes

KeycodeAliasDescription
QK_TRI_LAYER_LOWERTL_LOWRMomentarily enables the "lower" layer. Enables the "adjust" layer if the "upper" layer is also enabled.
QK_TRI_LAYER_UPPERTL_UPPRMomentarily enables the "upper" layer. Enables the "adjust" layer if the "lower" layer is also enabled.

Configuration

To change the default values for the layers, you can change these defines, in your config.h

Config nameDefaultDescription
TRI_LAYER_LOWER_LAYER1Sets the default for the "lower" layer.
TRI_LAYER_UPPER_LAYER2Sets the default for the "upper" layer.
TRI_LAYER_ADJUST_LAYER3Sets the default for the "adjust" layer.

Eg, if you wanted to set the "Adjust" layer to be layer 5, you'd add this to your config.h:

c
#define TRI_LAYER_ADJUST_LAYER 5

Functions

Function nameDescription
set_tri_layer_lower_layer(layer)Changes the "lower" layer*.
set_tri_layer_upper_layer(layer)Changes the "upper" layer*.
set_tri_layer_adjust_layer(layer)Changes the "adjust" layer*.
set_tri_layer_layers(lower, upper, adjust)Sets the "lower", "upper" and "adjust" layers*.
get_tri_layer_lower_layer()Gets the current "lower" layer.
get_tri_layer_upper_layer()Gets the current "upper" layer.
get_tri_layer_adjust_layer()Gets the current "adjust" layer.

WARNING

Note: these settings are not persistent, and will be reset to the default on power loss or power cycling of the controller.

', 15); diff --git a/assets/features_tri_layer.md.DdnBVinw.lean.js b/assets/features_tri_layer.md.BMkcUufJ.lean.js similarity index 91% rename from assets/features_tri_layer.md.DdnBVinw.lean.js rename to assets/features_tri_layer.md.BMkcUufJ.lean.js index aea99bb0325..68f10790e9a 100644 --- a/assets/features_tri_layer.md.DdnBVinw.lean.js +++ b/assets/features_tri_layer.md.BMkcUufJ.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Tri Layers","description":"","frontmatter":{},"headers":[],"relativePath":"features/tri_layer.md","filePath":"features/tri_layer.md"}'); const _sfc_main = { name: "features/tri_layer.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 15); diff --git a/assets/features_unicode.md.CsON-fJH.js b/assets/features_unicode.md.DmKG_Y8h.js similarity index 99% rename from assets/features_unicode.md.CsON-fJH.js rename to assets/features_unicode.md.DmKG_Y8h.js index dbab79478cd..a50cad6e4e8 100644 --- a/assets/features_unicode.md.CsON-fJH.js +++ b/assets/features_unicode.md.DmKG_Y8h.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, o as openBlock, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, o as openBlock, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Unicode","description":"","frontmatter":{},"headers":[],"relativePath":"features/unicode.md","filePath":"features/unicode.md"}'); const _sfc_main = { name: "features/unicode.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Unicode

With a little help from your OS, practically any Unicode character can be input using your keyboard.

Caveats

There are some limitations to this feature. Because there is no "standard" method of Unicode input across all operating systems, each of them require their own setup process on both the host and in the firmware, which may involve installation of additional software. This also means Unicode input will not "just work" when the keyboard is plugged into another device.

Usage

The core Unicode API can be used purely programmatically. However, there are also additional subsystems which build on top of it and come with keycodes to make things easier. See below for more details.

Add the following to your keymap's rules.mk:

make
UNICODE_COMMON = yes

Basic Configuration

Add the following to your config.h:

DefineDefaultDescription
UNICODE_KEY_MACKC_LEFT_ALTThe key to hold when beginning a Unicode sequence with the macOS input mode
UNICODE_KEY_LNXLCTL(LSFT(KC_U))The key to tap when beginning a Unicode sequence with the Linux input mode
UNICODE_KEY_WINCKC_RIGHT_ALTThe key to hold when beginning a Unicode sequence with the WinCompose input mode
UNICODE_SELECTED_MODES-1A comma separated list of input modes for cycling through
UNICODE_CYCLE_PERSISTtrueWhether to persist the current Unicode input mode to EEPROM
UNICODE_TYPE_DELAY10The amount of time to wait, in milliseconds, between Unicode sequence keystrokes

Audio Feedback

If you have the Audio feature enabled on your board, you can configure it to play sounds when the input mode is changed.

Add the following to your config.h:

DefineDefaultDescription
UNICODE_SONG_MACn/aThe song to play when the macOS input mode is selected
UNICODE_SONG_LNXn/aThe song to play when the Linux input mode is selected
UNICODE_SONG_BSDn/aThe song to play when the BSD input mode is selected
UNICODE_SONG_WINn/aThe song to play when the Windows input mode is selected
UNICODE_SONG_WINCn/aThe song to play when the WinCompose input mode is selected

Input Subsystems

Each of these subsystems have their own pros and cons in terms of flexibility and ease of use. Choose the one that best fits your needs.

', 17); diff --git a/assets/features_unicode.md.CsON-fJH.lean.js b/assets/features_unicode.md.DmKG_Y8h.lean.js similarity index 99% rename from assets/features_unicode.md.CsON-fJH.lean.js rename to assets/features_unicode.md.DmKG_Y8h.lean.js index 2d3a1241d18..897b8124e73 100644 --- a/assets/features_unicode.md.CsON-fJH.lean.js +++ b/assets/features_unicode.md.DmKG_Y8h.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, o as openBlock, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, o as openBlock, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Unicode","description":"","frontmatter":{},"headers":[],"relativePath":"features/unicode.md","filePath":"features/unicode.md"}'); const _sfc_main = { name: "features/unicode.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 17); diff --git a/assets/features_wpm.md.BYf-Xc1H.js b/assets/features_wpm.md.ClHUqqGQ.js similarity index 99% rename from assets/features_wpm.md.BYf-Xc1H.js rename to assets/features_wpm.md.ClHUqqGQ.js index 1fc90ef8886..f811626aad0 100644 --- a/assets/features_wpm.md.BYf-Xc1H.js +++ b/assets/features_wpm.md.ClHUqqGQ.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Word Per Minute (WPM) Calculation","description":"","frontmatter":{},"headers":[],"relativePath":"features/wpm.md","filePath":"features/wpm.md"}'); const _sfc_main = { name: "features/wpm.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Word Per Minute (WPM) Calculation

The WPM feature uses time between keystrokes to compute a rolling average words per minute rate and makes this available for various uses.

Enable the WPM system by adding this to your rules.mk:

WPM_ENABLE = yes\n

For split keyboards using soft serial, the computed WPM score will be available on the master AND slave half.

Configuration

DefineDefaultDescription
WPM_ESTIMATED_WORD_SIZE5This is the value used when estimating average word size (for regression and normal use)
WPM_ALLOW_COUNT_REGRESSIONNot definedIf defined allows the WPM to be decreased when hitting Delete or Backspace
WPM_UNFILTEREDNot definedIf undefined (the default), WPM values will be smoothed to avoid sudden changes in value
WPM_SAMPLE_SECONDS5This defines how many seconds of typing to average, when calculating WPM
WPM_SAMPLE_PERIODS25This defines how many sampling periods to use when calculating WPM
WPM_LAUNCH_CONTROLNot definedIf defined, WPM values will be calculated using partial buffers when typing begins

'WPM_UNFILTERED' is potentially useful if you're filtering data in some other way (and also because it reduces the code required for the WPM feature), or if reducing measurement latency to a minimum is important for you.

Increasing 'WPM_SAMPLE_SECONDS' will give more smoothly changing WPM values at the expense of slightly more latency to the WPM calculation.

Increasing 'WPM_SAMPLE_PERIODS' will improve the smoothness at which WPM decays once typing stops, at a cost of approximately this many bytes of firmware space.

If 'WPM_LAUNCH_CONTROL' is defined, whenever WPM drops to zero, the next time typing begins WPM will be calculated based only on the time since that typing began, instead of the whole period of time specified by WPM_SAMPLE_SECONDS. This results in reaching an accurate WPM value much faster, even when filtering is enabled and a large WPM_SAMPLE_SECONDS value is specified.

Public Functions

FunctionDescription
get_current_wpm(void)Returns the current WPM as a value between 0-255
set_current_wpm(x)Sets the current WPM to x (between 0-255)

Callbacks

By default, the WPM score only includes letters, numbers, space and some punctuation. If you want to change the set of characters considered as part of the WPM calculation, you can implement your own bool wpm_keycode_user(uint16_t keycode) and return true for any characters you would like included in the calculation, or false to not count that particular keycode.

For instance, the default is:

c
bool wpm_keycode_user(uint16_t keycode) {\n    if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) || (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) {\n        keycode = keycode & 0xFF;\n    } else if (keycode > 0xFF) {\n        keycode = 0;\n    }\n    if ((keycode >= KC_A && keycode <= KC_0) || (keycode >= KC_TAB && keycode <= KC_SLSH)) {\n        return true;\n    }\n\n    return false;\n}

Additionally, if WPM_ALLOW_COUNT_REGRESSION is defined, there is the uint8_t wpm_regress_count(uint16_t keycode) function that allows you to decrease the WPM. This is useful if you want to be able to penalize certain keycodes (or even combinations).

c
__attribute__((weak)) uint8_t wpm_regress_count(uint16_t keycode) {\n    bool weak_modded = (keycode >= QK_LCTL && keycode < QK_LSFT) || (keycode >= QK_RCTL && keycode < QK_RSFT);\n    \n    if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) || (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) {\n        keycode = keycode & 0xFF;\n    } else if (keycode > 0xFF) {\n        keycode = 0;\n    }\n    if (((get_mods() | get_oneshot_mods()) & MOD_MASK_CTRL} || weak_modded) && (keycode == KC_DEL || keycode == KC_BSPC)) {\n        return WPM_ESTIMATED_WORD_SIZE;\n    }\n    if (keycode == KC_DEL || keycode == KC_BSPC) {\n        return 1;\n    }\n}
', 19); diff --git a/assets/features_wpm.md.BYf-Xc1H.lean.js b/assets/features_wpm.md.ClHUqqGQ.lean.js similarity index 91% rename from assets/features_wpm.md.BYf-Xc1H.lean.js rename to assets/features_wpm.md.ClHUqqGQ.lean.js index 1ce4dff3be5..165776cecf2 100644 --- a/assets/features_wpm.md.BYf-Xc1H.lean.js +++ b/assets/features_wpm.md.ClHUqqGQ.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Word Per Minute (WPM) Calculation","description":"","frontmatter":{},"headers":[],"relativePath":"features/wpm.md","filePath":"features/wpm.md"}'); const _sfc_main = { name: "features/wpm.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 19); diff --git a/assets/flashing.md.DgCsCUGk.js b/assets/flashing.md.CK6oObIF.js similarity index 99% rename from assets/flashing.md.DgCsCUGk.js rename to assets/flashing.md.CK6oObIF.js index 494cb66091b..0059d4de517 100644 --- a/assets/flashing.md.DgCsCUGk.js +++ b/assets/flashing.md.CK6oObIF.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Flashing Instructions and Bootloader Information","description":"","frontmatter":{},"headers":[],"relativePath":"flashing.md","filePath":"flashing.md"}'); const _sfc_main = { name: "flashing.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Flashing Instructions and Bootloader Information

There are quite a few different types of bootloaders that keyboards use, and almost all of them use their own flashing method and tools. Luckily, projects like the QMK Toolbox aim to support as many of them as possible, but this article will describe the different types of bootloaders, and available methods for flashing them.

For AVR-based keyboards, QMK will automatically calculate if your .hex file is the right size to be flashed to the device based on the BOOTLOADER value set in rules.mk, and output the total size in bytes (along with the max).

You will also be able to use the CLI to flash your keyboard, by running:

$ qmk flash -kb <keyboard> -km <keymap>

See the qmk flash documentation for more information.

Atmel DFU

Atmel's DFU bootloader comes on all USB AVRs by default (except for 16/32U4RC), and is used by many keyboards that have their own ICs on their PCBs (older OLKB boards, Clueboards). Some keyboards may also use LUFA's DFU bootloader, or QMK's fork of it (newer OLKB boards), that adds in additional features specific to that hardware.

To ensure compatibility with the DFU bootloader, make sure this block is present in your rules.mk (optionally with lufa-dfu or qmk-dfu instead):

make
# Bootloader selection\nBOOTLOADER = atmel-dfu

Compatible flashers:

Flashing sequence:

  1. Enter the bootloader using any of the following methods:
  2. Wait for the OS to detect the device
  3. Erase the flash memory (will be done automatically if using the Toolbox or CLI/make command)
  4. Flash a .hex file
  5. Reset the device into application mode (will be done automatically as above)

QMK DFU

QMK maintains a fork of the LUFA DFU bootloader that additionally performs a simple matrix scan for exiting the bootloader and returning to the application, as well as flashing an LED/making a ticking noise with a speaker when things are happening. To enable these features, add the following defines to your config.h:

c
#define QMK_ESC_OUTPUT F1  // COL pin if COL2ROW\n#define QMK_ESC_INPUT  D5  // ROW pin if COL2ROW\n// Optional:\n//#define QMK_LED E6\n//#define QMK_SPEAKER C6

Currently we do not recommend making QMK_ESC the same key as the one designated for Bootmagic, as holding it down will cause the MCU to loop back and forth between entering and exiting the bootloader.

The manufacturer and product strings are automatically pulled from config.h, with " Bootloader" appended to the product string.

To generate this bootloader, use the bootloader target, eg. make planck/rev4:default:bootloader. To generate a production-ready .hex file (combining QMK and the bootloader), use the production target, eg. make planck/rev4:default:production.

make Targets

Caterina

Arduino boards and their clones use the Caterina bootloader or a variant of it (any keyboard built with a Pro Micro or clone, and the Pololu A-Star), and uses the AVR109 protocol to communicate through virtual serial.

To ensure compatibility with the Caterina bootloader, make sure this block is present in your rules.mk:

make
# Bootloader selection\nBOOTLOADER = caterina

Compatible flashers:

Flashing sequence:

  1. Enter the bootloader using any of the following methods (you only have 7 seconds to flash once it enters; some variants may require you to reset twice within 750 milliseconds):
  2. Wait for the OS to detect the device
  3. Flash a .hex file
  4. Wait for the device to reset automatically

make Targets

HalfKay

HalfKay is a super-slim bootloader developed by PJRC that presents itself as an HID device (which requires no additional driver), and comes preflashed on all Teensys, namely the 2.0. It is currently closed-source, and thus once overwritten (eg. via ISP flashing another bootloader), cannot be restored.

To ensure compatibility with the Halfkay bootloader, make sure this block is present in your rules.mk:

make
# Bootloader selection\nBOOTLOADER = halfkay

Compatible flashers:

Flashing sequence:

  1. Enter the bootloader using any of the following methods (you only have 7 seconds to flash once it enters):
  2. Wait for the OS to detect the device
  3. Flash a .hex file
  4. Reset the device into application mode (may be done automatically)

USBasploader

USBasploader is a bootloader originally by Objective Development. It emulates a USBasp ISP programmer and is used in some non-USB AVR chips such as the ATmega328P, which run V-USB.

To ensure compatibility with the USBasploader bootloader, make sure this block is present in your rules.mk:

make
# Bootloader selection\nBOOTLOADER = usbasploader

Compatible flashers:

Flashing sequence:

  1. Enter the bootloader using any of the following methods:
  2. Wait for the OS to detect the device
  3. Flash a .hex file
  4. Press the RESET button on the PCB or short RST to GND

BootloadHID

BootloadHID is a USB bootloader for AVR microcontrollers. It presents itself as an HID input device, much like HalfKay, and can therefore be run without installing any driver on Windows.

To ensure compatibility with the bootloadHID bootloader, make sure this block is present in your rules.mk:

make
# Bootloader selection\nBOOTLOADER = bootloadhid

Compatible flashers:

Flashing sequence:

  1. Enter the bootloader using any of the following methods:
  2. Wait for the OS to detect the device
  3. Flash a .hex file
  4. Reset the device into application mode (may be done automatically)

QMK HID

QMK maintains a fork of the LUFA HID bootloader, which uses a USB HID Endpoint for flashing in the way that the PJRC's Teensy Loader flasher and HalfKay bootloader work. Additionally, it performs a simple matrix scan for exiting the bootloader and returning to the application, as well as flashing an LED/making a ticking noise with a speaker when things are happening.

To ensure compatibility with the QMK HID bootloader, make sure this block is present in your rules.mk:

make
# Bootloader selection\nBOOTLOADER = qmk-hid

To enable the additional features, add the following defines to your config.h:

c
#define QMK_ESC_OUTPUT F1  // COL pin if COL2ROW\n#define QMK_ESC_INPUT  D5  // ROW pin if COL2ROW\n// Optional:\n//#define QMK_LED E6\n//#define QMK_SPEAKER C6

Currently we do not recommend making QMK_ESC the same key as the one designated for Bootmagic, as holding it down will cause the MCU to loop back and forth between entering and exiting the bootloader.

The manufacturer and product strings are automatically pulled from config.h, with " Bootloader" appended to the product string.

To generate this bootloader, use the bootloader target, eg. make planck/rev4:default:bootloader. To generate a production-ready .hex file (combining QMK and the bootloader), use the production target, eg. make planck/rev4:default:production.

Compatible flashers:

Flashing sequence:

  1. Enter the bootloader using any of the following methods:
  2. Wait for the OS to detect the device
  3. Flash a .hex file
  4. Reset the device into application mode (may be done automatically)

make Targets

STM32/APM32 DFU

All USB-capable STM32 and APM32 MCUs, except for a small handful (such as STM32F103 -- see the STM32duino section) come preloaded with a factory bootloader that cannot be modified nor deleted.

To ensure compatibility with the STM32-DFU bootloader, make sure this block is present in your rules.mk (optionally with apm32-dfu instead):

make
# Bootloader selection\nBOOTLOADER = stm32-dfu

Compatible flashers:

Flashing sequence:

  1. Enter the bootloader using any of the following methods:
  2. Wait for the OS to detect the device
  3. Flash a .bin file
  4. Reset the device into application mode (may be done automatically)

make Targets

STM32duino

This bootloader is used almost exclusively for STM32F103 boards, as they do not come with a USB DFU bootloader. The source code and prebuilt binaries can be found here.

To ensure compatibility with the STM32duino bootloader, make sure this block is present in your rules.mk:

make
# Bootloader selection\nBOOTLOADER = stm32duino

Compatible flashers:

Flashing sequence:

  1. Enter the bootloader using any of the following methods:
  2. Wait for the OS to detect the device
  3. Flash a .bin file
  4. Reset the device into application mode (may be done automatically)

Kiibohd DFU

Keyboards produced by Input Club use NXP Kinetis microcontrollers rather than STM32, and come with their own custom bootloader, however the process and protocol is largely the same.

The rules.mk setting for this bootloader is kiibohd, but since this bootloader is limited to Input Club boards, it should not be necessary to set at keymap or user level.

Compatible flashers:

Flashing sequence:

  1. Enter the bootloader using any of the following methods:
  2. Wait for the OS to detect the device
  3. Flash a .bin file
  4. Reset the device into application mode (may be done automatically)

WB32 DFU

Some keyboards produced for several commercial brands (GMMK, Akko, MonsGeek, Inland) use this bootloader. The wb32-dfu-updater utility is bundled with QMK MSYS and Glorious's build of QMK Toolbox. If neither of these flashing methods is available for your OS, you will likely need to compile the CLI version from source.

The info.json setting for this bootloader is wb32-dfu.

Compatible flashers:

Flashing sequence:

  1. Enter the bootloader using any of the following methods:
  2. Wait for the OS to detect the device
  3. Flash a .bin file
  4. Reset the device into application mode (may be done automatically)

tinyuf2

Keyboards may opt into supporting the tinyuf2 bootloader. This is currently only supported on F303/F401/F411.

The rules.mk setting for this bootloader is tinyuf2, and can be specified at the keymap or user level.

To ensure compatibility with the tinyuf2 bootloader, make sure this block is present in your rules.mk:

make
# Bootloader selection\nBOOTLOADER = tinyuf2

Compatible flashers:

Flashing sequence:

  1. Enter the bootloader using any of the following methods:
  2. Wait for the OS to detect the device
  3. Copy the .uf2 file to the new USB disk
  4. Wait for the keyboard to become available

or

CLI Flashing sequence:

  1. Enter the bootloader using any of the following methods:
  2. Wait for the OS to detect the device
  3. Flash via QMK CLI eg. qmk flash --keyboard handwired/onekey/blackpill_f411_tinyuf2 --keymap default
  4. Wait for the keyboard to become available

make Targets

uf2boot

Keyboards may opt into supporting the uf2boot bootloader. This is currently only supported on F103.

The rules.mk setting for this bootloader is uf2boot, and can be specified at the keymap or user level.

To ensure compatibility with the uf2boot bootloader, make sure this block is present in your rules.mk:

make
# Bootloader selection\nBOOTLOADER = uf2boot

Compatible flashers:

Flashing sequence:

  1. Enter the bootloader using any of the following methods:
  2. Wait for the OS to detect the device
  3. Copy the .uf2 file to the new USB disk
  4. Wait for the keyboard to become available

or

CLI Flashing sequence:

  1. Enter the bootloader using any of the following methods:
  2. Wait for the OS to detect the device
  3. Flash via QMK CLI eg. qmk flash --keyboard handwired/onekey/bluepill_uf2boot --keymap default
  4. Wait for the keyboard to become available

make Targets

Raspberry Pi RP2040 UF2

The rules.mk setting for this bootloader is rp2040, and can be specified at the keymap or user level.

To ensure compatibility with the rp2040 bootloader, make sure this block is present in your rules.mk:

make
# Bootloader selection\nBOOTLOADER = rp2040

Compatible flashers:

Flashing sequence:

  1. Enter the bootloader using any of the following methods:
  2. Wait for the OS to detect the device
  3. Copy the .uf2 file to the new USB disk
  4. Wait for the keyboard to become available

or

CLI Flashing sequence:

  1. Enter the bootloader using any of the following methods:
  2. Wait for the OS to detect the device
  3. Flash via QMK CLI eg. qmk flash --keyboard handwired/onekey/rpi_pico --keymap default
  4. Wait for the keyboard to become available

1: This works only if the controller has been flashed with QMK Firmware with RP2040_BOOTLOADER_DOUBLE_TAP_RESET defined.

', 143); diff --git a/assets/flashing.md.DgCsCUGk.lean.js b/assets/flashing.md.CK6oObIF.lean.js similarity index 91% rename from assets/flashing.md.DgCsCUGk.lean.js rename to assets/flashing.md.CK6oObIF.lean.js index e72d367d55f..ccf6bc6dd58 100644 --- a/assets/flashing.md.DgCsCUGk.lean.js +++ b/assets/flashing.md.CK6oObIF.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Flashing Instructions and Bootloader Information","description":"","frontmatter":{},"headers":[],"relativePath":"flashing.md","filePath":"flashing.md"}'); const _sfc_main = { name: "flashing.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 143); diff --git a/assets/getting_started_docker.md.fkGRxQyI.js b/assets/getting_started_docker.md.dHxmuSds.js similarity index 98% rename from assets/getting_started_docker.md.fkGRxQyI.js rename to assets/getting_started_docker.md.dHxmuSds.js index 2137edd8860..0ab3648463d 100644 --- a/assets/getting_started_docker.md.fkGRxQyI.js +++ b/assets/getting_started_docker.md.dHxmuSds.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Docker Quick Start","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started_docker.md","filePath":"getting_started_docker.md"}'); const _sfc_main = { name: "getting_started_docker.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Docker Quick Start

This project includes a Docker workflow that will allow you to build a new firmware for your keyboard very easily without major changes to your primary operating system. This also ensures that when you clone the project and perform a build, you have the exact same environment as anyone else and the QMK build infrastructure. This makes it much easier for people to help you troubleshoot any issues you encounter.

Requirements

The main prerequisite is a working docker or podman install.

Usage

Acquire a local copy of the QMK's repository (including submodules):

git clone --recurse-submodules https://github.com/qmk/qmk_firmware.git\ncd qmk_firmware

Run the following command to build a keymap:

util/docker_build.sh <keyboard>:<keymap>\n# For example: util/docker_build.sh planck/rev6:default

This will compile the desired keyboard/keymap and leave the resulting .hex or .bin file in the QMK directory for you to flash. If :keymap is omitted, all keymaps are used. Note that the parameter format is the same as when building with make.

There is also support for building and flashing the keyboard straight from Docker by specifying the target as well:

util/docker_build.sh keyboard:keymap:target\n# For example: util/docker_build.sh planck/rev6:default:flash

Note that mass storage bootloaders are not supported by the flash target. In this case you will have to manually copy the firmware file to the keyboard.

You can also start the script without any parameters, in which case it will ask you to input the build parameters one by one, which you may find easier to use:

util/docker_build.sh\n# Reads parameters as input (leave blank for all keyboards/keymaps)

You can manually set which container runtime you want to use by setting the RUNTIME environment variable to it's name or path. By default docker or podman are automatically detected and docker is preferred over podman.

RUNTIME="podman" util/docker_build.sh keyboard:keymap:target

FAQ

Why can't I flash on Windows/macOS

On Windows and macOS, it requires Docker Machine to be running. This is tedious to set up, so it's not recommended; use QMK Toolbox instead.

WARNING

Docker for Windows requires Hyper-V to be enabled. This means that it cannot work on versions of Windows which don't have Hyper-V, such as Windows 7, Windows 8 and Windows 10 Home.

', 22); diff --git a/assets/getting_started_docker.md.fkGRxQyI.lean.js b/assets/getting_started_docker.md.dHxmuSds.lean.js similarity index 91% rename from assets/getting_started_docker.md.fkGRxQyI.lean.js rename to assets/getting_started_docker.md.dHxmuSds.lean.js index a16534fc89b..967b2a7843b 100644 --- a/assets/getting_started_docker.md.fkGRxQyI.lean.js +++ b/assets/getting_started_docker.md.dHxmuSds.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Docker Quick Start","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started_docker.md","filePath":"getting_started_docker.md"}'); const _sfc_main = { name: "getting_started_docker.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 22); diff --git a/assets/getting_started_github.md.OYq7IT7B.js b/assets/getting_started_github.md.EVx9Hm-S.js similarity index 98% rename from assets/getting_started_github.md.OYq7IT7B.js rename to assets/getting_started_github.md.EVx9Hm-S.js index 76743247cf7..a731b20b7af 100644 --- a/assets/getting_started_github.md.OYq7IT7B.js +++ b/assets/getting_started_github.md.EVx9Hm-S.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"How to Use GitHub with QMK","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started_github.md","filePath":"getting_started_github.md"}'); const _sfc_main = { name: "getting_started_github.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

How to Use GitHub with QMK

GitHub can be a little tricky to those that aren't familiar with it - this guide will walk through each step of forking, cloning, and submitting a pull request with QMK.

TIP

This guide assumes you're somewhat comfortable with running things at the command line, and have git installed on your system.

Start on the QMK GitHub page, and you'll see a button in the upper right that says "Fork":

Fork on GitHub

If you're a part of an organization, you'll need to choose which account to fork it to. In most circumstances, you'll want to fork it to your personal account. Once your fork is completed (sometimes this takes a little while), click the "Clone or Download" button:

Download from GitHub

And be sure to select "HTTPS", and select the link and copy it:

HTTPS link

From here, enter git clone --recurse-submodules into the command line, and then paste your link:

user@computer:~$ git clone --recurse-submodules https://github.com/whoeveryouare/qmk_firmware.git\nCloning into 'qmk_firmware'...\nremote: Enumerating objects: 9, done.\nremote: Counting objects: 100% (9/9), done.\nremote: Compressing objects: 100% (5/5), done.\nremote: Total 183883 (delta 5), reused 4 (delta 4), pack-reused 183874\nReceiving objects: 100% (183883/183883), 132.90 MiB | 9.57 MiB/s, done.\nResolving deltas: 100% (119972/119972), done.\n...\nSubmodule path 'lib/chibios': checked out '587968d6cbc2b0e1c7147540872f2a67e59ca18b'\nSubmodule path 'lib/chibios-contrib': checked out 'ede48346eee4b8d6847c19bc01420bee76a5e486'\nSubmodule path 'lib/googletest': checked out 'ec44c6c1675c25b9827aacd08c02433cccde7780'\nSubmodule path 'lib/lufa': checked out 'ce10f7642b0459e409839b23cc91498945119b4d'

You now have your QMK fork on your local machine, and you can add your keymap, compile it and flash it to your board. Once you're happy with your changes, you can add, commit, and push them to your fork like this:

user@computer:~$ git add .\nuser@computer:~$ git commit -m "adding my keymap"\n[master cccb1608] adding my keymap\n 1 file changed, 1 insertion(+)\n create mode 100644 keyboards/planck/keymaps/mine/keymap.c\nuser@computer:~$ git push\nCounting objects: 1, done.\nDelta compression using up to 4 threads.\nCompressing objects: 100% (1/1), done.\nWriting objects: 100% (1/1), 1.64 KiB | 0 bytes/s, done.\nTotal 1 (delta 1), reused 0 (delta 0)\nremote: Resolving deltas: 100% (1/1), completed with 1 local objects.\nTo https://github.com/whoeveryouare/qmk_firmware.git\n + 20043e64...7da94ac5 master -> master

Your changes now exist on your fork on GitHub - if you go back there (https://github.com/<whoeveryouare>/qmk_firmware), you can create a "New Pull Request" by clicking this button:

New Pull Request

Here you'll be able to see exactly what you've committed - if it all looks good, you can finalize it by clicking "Create Pull Request":

Create Pull Request

After submitting, we may talk to you about your changes, ask that you make changes, and eventually accept it! Thanks for contributing to QMK 😃

', 18); diff --git a/assets/getting_started_github.md.OYq7IT7B.lean.js b/assets/getting_started_github.md.EVx9Hm-S.lean.js similarity index 91% rename from assets/getting_started_github.md.OYq7IT7B.lean.js rename to assets/getting_started_github.md.EVx9Hm-S.lean.js index 3074b561f81..9d76072c771 100644 --- a/assets/getting_started_github.md.OYq7IT7B.lean.js +++ b/assets/getting_started_github.md.EVx9Hm-S.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"How to Use GitHub with QMK","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started_github.md","filePath":"getting_started_github.md"}'); const _sfc_main = { name: "getting_started_github.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 18); diff --git a/assets/getting_started_introduction.md.BOJreqSs.js b/assets/getting_started_introduction.md.BTOrKqLL.js similarity index 98% rename from assets/getting_started_introduction.md.BOJreqSs.js rename to assets/getting_started_introduction.md.BTOrKqLL.js index e8857cdd0c2..444c58327e2 100644 --- a/assets/getting_started_introduction.md.BOJreqSs.js +++ b/assets/getting_started_introduction.md.BTOrKqLL.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started_introduction.md","filePath":"getting_started_introduction.md"}'); const _sfc_main = { name: "getting_started_introduction.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Introduction

This page attempts to explain the basic information you need to know to work with the QMK project. It assumes that you are familiar with navigating a Unix shell, but does not assume you are familiar with C or with compiling using make.

Basic QMK Structure

QMK is a fork of Jun Wako's tmk_keyboard project. The original TMK code, with modifications, can be found in the tmk_core folder. The QMK additions to the project may be found in the quantum folder. Keyboard projects may be found in the keyboards folder.

Userspace Structure

Within the folder users is a directory for each user. This is a place for users to put code that they might use between keyboards. See the docs for Userspace feature for more information.

Keyboard Project Structure

Within the folder keyboards, its subfolder handwired and its vendor and manufacture subdirectories e.g. clueboard is a directory for each keyboard project, for example qmk_firmware/keyboards/clueboard/2x1800. Within it, you'll find the following structure:

For more information on project structure, see QMK Keyboard Guidelines.

Keymap Structure

In every keymap folder, the following files may be found. Only keymap.c is required, and if the rest of the files are not found the default options will be chosen.

The config.h File

There are 3 possible config.h locations:

The build system automatically picks up the config files in the above order. If you wish to override any setting set by a previous config.h you will need to first include some boilerplate code for the settings you wish to change.

#pragma once

Then to override a setting from the previous config.h file you must #undef and then #define the setting again.

The boilerplate code and setting look like this together:

#pragma once\n\n// overrides go here!\n#undef MY_SETTING\n#define MY_SETTING 4
', 21); diff --git a/assets/getting_started_introduction.md.BOJreqSs.lean.js b/assets/getting_started_introduction.md.BTOrKqLL.lean.js similarity index 92% rename from assets/getting_started_introduction.md.BOJreqSs.lean.js rename to assets/getting_started_introduction.md.BTOrKqLL.lean.js index b68bb05ac49..e1385df7c6d 100644 --- a/assets/getting_started_introduction.md.BOJreqSs.lean.js +++ b/assets/getting_started_introduction.md.BTOrKqLL.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started_introduction.md","filePath":"getting_started_introduction.md"}'); const _sfc_main = { name: "getting_started_introduction.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 21); diff --git a/assets/getting_started_make_guide.md.BjUuEnSh.js b/assets/getting_started_make_guide.md.snyKLkVb.js similarity index 99% rename from assets/getting_started_make_guide.md.BjUuEnSh.js rename to assets/getting_started_make_guide.md.snyKLkVb.js index c8583ef8882..323a5ef78c0 100644 --- a/assets/getting_started_make_guide.md.BjUuEnSh.js +++ b/assets/getting_started_make_guide.md.snyKLkVb.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"More Detailed make Instructions","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started_make_guide.md","filePath":"getting_started_make_guide.md"}'); const _sfc_main = { name: "getting_started_make_guide.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

More Detailed make Instructions

The full syntax of the make command is <keyboard_folder>:<keymap>:<target>, where:

The <target> means the following

The following targets are for developers:

You can also add extra options at the end of the make command line, after the target

The make command itself also has some additional options, type make --help for more information. The most useful is probably -jx, which specifies that you want to compile using more than one CPU, the x represents the number of CPUs that you want to use. Setting that can greatly reduce the compile times, especially if you are compiling many keyboards/keymaps. I usually set it to one less than the number of CPUs that I have, so that I have some left for doing other things while it's compiling. Note that not all operating systems and make versions supports that option.

Here are some examples commands

rules.mk Options

Set these variables to no to disable them, and yes to enable them.

BOOTMAGIC_ENABLE

This allows you to hold a key (usually Escape by default) to reset the EEPROM settings that persist over power loss and ready your keyboard to accept new firmware.

MOUSEKEY_ENABLE

This gives you control over cursor movements and clicks via keycodes/custom functions.

EXTRAKEY_ENABLE

This allows you to use the system and audio control key codes.

CONSOLE_ENABLE

This allows you to print messages that can be read using hid_listen.

By default, all debug (dprint) print (print, xprintf), and user print (uprint) messages will be enabled. This will eat up a significant portion of the flash and may make the keyboard .hex file too big to program.

To disable debug messages (dprint) and reduce the .hex file size, include #define NO_DEBUG in your config.h file.

To disable print messages (print, xprintf) and user print messages (uprint) and reduce the .hex file size, include #define NO_PRINT in your config.h file.

To disable print messages (print, xprintf) and KEEP user print messages (uprint), include #define USER_PRINT in your config.h file (do not also include #define NO_PRINT in this case).

To see the text, open hid_listen and enjoy looking at your printed messages.

NOTE: Do not include uprint messages in anything other than your keymap code. It must not be used within the QMK system framework. Otherwise, you will bloat other people's .hex files.

COMMAND_ENABLE

This enables magic commands, typically fired with the default magic key combo LSHIFT+RSHIFT+KEY. Magic commands include turning on debugging messages (MAGIC+D) or temporarily toggling NKRO (MAGIC+N).

SLEEP_LED_ENABLE

Enables your LED to breath while your computer is sleeping. Timer1 is being used here. This feature is largely unused and untested, and needs updating/abstracting.

NKRO_ENABLE

This allows the keyboard to tell the host OS that up to 248 keys are held down at once (default without NKRO is 6). NKRO is off by default, even if NKRO_ENABLE is set. NKRO can be forced by adding #define FORCE_NKRO to your config.h or by binding MAGIC_TOGGLE_NKRO to a key and then hitting the key.

BACKLIGHT_ENABLE

This enables the in-switch LED backlighting. You can specify the backlight pin by putting this in your config.h:

#define BACKLIGHT_PIN B7\n

MIDI_ENABLE

This enables MIDI sending and receiving with your keyboard. To enter MIDI send mode, you can use the keycode MI_ON, and MI_OFF to turn it off. This is a largely untested feature, but more information can be found in the quantum/quantum.c file.

UNICODE_ENABLE

This allows you to send Unicode characters using UC(<code point>) in your keymap. Code points up to 0x7FFF are supported. This covers characters for most modern languages, as well as symbols, but it doesn't cover emoji.

UNICODEMAP_ENABLE

This allows you to send Unicode characters using UM(<map index>) in your keymap. You will need to maintain a mapping table in your keymap file. All possible code points (up to 0x10FFFF) are supported.

UCIS_ENABLE

This allows you to send Unicode characters by inputting a mnemonic corresponding to the character you want to send. You will need to maintain a mapping table in your keymap file. All possible code points (up to 0x10FFFF) are supported.

For further details, as well as limitations, see the Unicode page.

AUDIO_ENABLE

This allows you output audio on the C6 pin (needs abstracting). See the audio page for more information.

VARIABLE_TRACE

Use this to debug changes to variable values, see the tracing variables section of the Unit Testing page for more information.

KEY_LOCK_ENABLE

This enables key lock.

SPLIT_KEYBOARD

This enables split keyboard support (dual MCU like the let's split and bakingpy's boards) and includes all necessary files located at quantum/split_common

SPLIT_TRANSPORT

As there is no standard split communication driver for ARM-based split keyboards yet, SPLIT_TRANSPORT = custom must be used for these. It will prevent the standard split keyboard communication code (which is AVR-specific) from being included, allowing a custom implementation to be used.

CUSTOM_MATRIX

Lets you replace the default matrix scanning routine with your own code. For further details, see the Custom Matrix page.

DEBOUNCE_TYPE

Lets you replace the default key debouncing routine with an alternative one. If custom you will need to provide your own implementation.

DEFERRED_EXEC_ENABLE

Enables deferred executor support -- timed delays before callbacks are invoked. See deferred execution for more information.

Customizing Makefile Options on a Per-Keymap Basis

If your keymap directory has a file called rules.mk any options you set in that file will take precedence over other rules.mk options for your particular keyboard.

So let's say your keyboard's rules.mk has BACKLIGHT_ENABLE = yes. You want your particular keyboard to not have the backlight, so you make a file called rules.mk and specify BACKLIGHT_ENABLE = no.

', 65); diff --git a/assets/getting_started_make_guide.md.BjUuEnSh.lean.js b/assets/getting_started_make_guide.md.snyKLkVb.lean.js similarity index 92% rename from assets/getting_started_make_guide.md.BjUuEnSh.lean.js rename to assets/getting_started_make_guide.md.snyKLkVb.lean.js index 8d24991baf8..6ed9a88d371 100644 --- a/assets/getting_started_make_guide.md.BjUuEnSh.lean.js +++ b/assets/getting_started_make_guide.md.snyKLkVb.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"More Detailed make Instructions","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started_make_guide.md","filePath":"getting_started_make_guide.md"}'); const _sfc_main = { name: "getting_started_make_guide.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 65); diff --git a/assets/hand_wire.md.GiNX60kU.js b/assets/hand_wire.md.B69NBeYw.js similarity index 99% rename from assets/hand_wire.md.GiNX60kU.js rename to assets/hand_wire.md.B69NBeYw.js index 2cb0c3f954a..e41f147b5d9 100644 --- a/assets/hand_wire.md.GiNX60kU.js +++ b/assets/hand_wire.md.B69NBeYw.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Hand-Wiring Guide","description":"","frontmatter":{},"headers":[],"relativePath":"hand_wire.md","filePath":"hand_wire.md"}'); const _sfc_main = { name: "hand_wire.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Hand-Wiring Guide

Parts list

You will need: (where x is the number of keys on your planned keyboard)

Optional but useful:

Starting the build

There are many ways to hand wire a PCB matrix, this guide will describe the fundamentals as well as some recommended ways to go about it.

As we are dealing with hand wiring, it is assumed that you already have a plate. If you are planning a completely custom layout, tools such as ai03 Plate Generator and Swillkb Plate & Case Builder can help when designing one.

Start by installing the switches and stabilisers in the plate. Depending on the thickness and material this may also involve hot gluing it in place.

Planning the matrix

If you are following a pre-existing handwire guide (e.g. for the keyboards in the handwire firmware section you can skip this step, just ensure you wire the matrix as described.

What you want to achieve is one leg from each switch being attached to the corresponding switches next to it (rows) and the other leg being attached to the switches above and below it (columns) and a diode to one of the legs, mosy commonly this will be the leg attached to the rows, and the diode will face away from it (Column to Row) i.e. with the wire furthest from the black line on the diode connected to the switch (as current will only travel in one direction through a diode).

It is fairly simple to plan for an ortholinear keyboard (like a Planck).

Example Planck matrix Image from RoastPotatoes' "How to hand wire a Planck"

But the larger and more complicated your keyboard, the more complex the matrix. Keyboard Firmware Builder can help you plan your matrix layout (shown here with a basic fullsize ISO keyboard imported from Keyboard Layout Editor.

Example ISO matrix

Bear in mind that the number of rows plus the number of columns can not exceed the number of I/O pins on your controller. So the fullsize matrix shown above would be possible on a Proton C or Teensy++, but not on a regular Teensy or Pro Micro.

Common Microcontroller Boards

BoardController# I/OPinout
Pro Micro*ATmega32u420link
Teensy 2.0ATmega32u425link
QMK Proton CSTM32F303xC36link 1, 2
Teensy++ 2.0AT90USB128646link

*Elite C is essentially the same as a Pro Micro with a USB-C instead of Micro-USB

There are also a number of boards designed specifically for handwiring that mount directly to a small number of switches and offer pinouts for the rest. Though these are generally more expensive and may be more difficult to get hold of.

Postage board mini mounted in place
BoardController# I/O
Swiss helperATmega32u420
Postage boardATmega32u425
Postage board miniATmega32u425

Wiring the matrix

There is no one right way to do this. What you want to achieve is good connection at all of the joints planned and no unintentional shorts.

Established materials and techniques include:

TechniqueExamplesProsConsImage
Lengths of wire with stripped segmentsSasha Solomon's Dactyl and Cribbit's modern hand wireNeat and tidySome effort in stripping the wireStripped wire
Short lengths of wireu/xicolinguada's ortho buildEasier to strip the wireMore difficult to placeindividual wire lengths
Magnet/Enamelled wirefknraiden's custom boardCan be directly soldered onto (insulation burns off with heat)Appearance?Magnet wire
Bending the legs of the diodes for the rowsMatt3o's BrownfoxFewer solder joints requiredUninsulatedBent diode legs
Using rigid wiring (e.g. brass tube)u/d_stilgar's invisible hardline and u/jonasfasler's first attemptVery prettyMore difficult. No physical insulationHardline hand wire
Bare wire with insulation added after (e.g. kapton tape)Matt3o's 65% on his websiteEasier (no wire stripping required)Not as attractiveBare wire
Copper tapeManuForm DactylVery easyOnly really works when your plate/case aligns with the bottom of your switchesCopper tape

Note that these methods can be combined. Prepare your lengths of wire before moving on to soldering.

A note on split keyboards

If you are planning a split keyboard (e.g. Dactyl) each half will require a controller and a means of communicating between them (like a TRRS or hardwired cable). Further information can be found in the QMK split keyboard documentation.

Soldering

There are a lot of soldering guides and tips available elsewhere but here are some of the most useful and relevant for hand wiring:

To ensure a strong solder joint you want a good amount of contact between the solder and the two pieces of metal you are connecting. A good way of doing this (though not required) is looping around pins or twisting wires together before applying solder.

Looped around rod Looped diode leg

If your diodes are on a packaging strip and need a bend in them (either the start of a loop or for connecting to its neighbour) this can easily done by bending it over something straight like the edge of a box, table, or ruler. This also helps keep track of the direction of the diode as all the bends will be on the same side.

Bent diode legs

If your iron has temperature control, set it to 315ºC (600ºF).

Once heated, tin your soldering iron - this means melting a small amount of solder on the end of the iron and then quickly wiping it off on a wet sponge or wire cleaning pad, leaving a shiny silvery coating on the end which helps keep oxidisation at bay and helps solder to flow.

When you come to apply the solder, hold the soldering iron against the two surfaces for a second to heat it, then apply a small amount of solder to join the two pieces together. Heating the surfaces ensures that the solder adheres to it and that it does not cool too quickly.

Don't hold the iron on the solder/joint longer than necessary. Heat will be conducted through the surfaces and can damage components (melt switch housings etc.). Also, solder contains flux, which aids in "wetting". The longer heat is applied to the solder the more flux will evaporate meaning you may end up with a bad solder joint with peaks which, apart from looking bad, may also increase the risk of electrical shorts.

Soldering the Diodes

Starting at the top-left switch, place the diode (with tweezers if you have them) on the switch so that the diode itself is vertically aligned, and the black line is facing toward you. Make sure the diodes are soldered in parallel (diode outputs shouldn't connect to diode inputs). The input lead of the diode should be touching the left contact on the switch, and the bent, output end should be facing to the right and resting on the switch there, like this:

soldering-diodes-01.png

Letting the diode rest, grab your solder, and touch both it and the soldering iron to the left contact at the same time - the rosin in the solder should make it easy for the solder to flow over both the diode and the keyswitch contact. The diode may move a little, and if it does, carefully position it back it place by grabbing the bent end of the diode - the other end will become hot very quickly. If you find that it's moving too much, using needle-nose pliers of some sort may help to keep the diode still when soldering.

The smoke that the rosin releases is harmful, so be careful not to breath it or get it in your eyes/face.

After soldering things in place, it may be helpful to blow on the joint to push the smoke away from your face, and cool the solder quicker. You should see the solder develop a matte (not shiny) surface as it solidifies. Keep in mind that it will still be very hot afterwards, and will take a couple minutes to be cool to touch. Blowing on it will accelerate this process.

When the first diode is complete, the next one will need to be soldered to both the keyswitch, and the previous diode at the new elbow. That will look something like this:

soldering-diodes-02.png

After completing a row, use the wire cutters to trim the excess wire from the tops of the diodes, and from the right side on the final switch. This process will need to completed for each row you have.

When all of the diodes are completely soldered, it's a good idea to quickly inspect each one to ensure that your solder joints are solid and sturdy - repairing things after this is possible, but more difficult.

Soldering the Columns

You'll have some options in the next process - it's a good idea to insulate the column wires (since the diodes aren't), but if you're careful enough, you can use exposed wires for the columns - it's not recommended, though. If you're using single-cored wire, stripping the plastic off of the whole wire and feeding it back on is probably the best option, but can be difficult depending on the size and materials. You'll want to leave parts of the wire exposed where you're going to be solder it onto the keyswitch.

If you're using stranded wire, it's probably easiest to just use a lot of small wires to connect each keyswitch along the column. It's possible to use one and melt through the insulation, but this isn't recommended, will produce even more harmful fumes, and can ruin your soldering iron.

Before beginning to solder, it helps to have your wire pre-bent (if using single-cored), or at least have an idea of how you're going to route the column (especially if you're making a staggered board). Where you go in particular doesn't matter too much, as we'll be basing our keymap definitions on how it was wired - just make sure every key in a particular row is in a unique column, and that they're in order from left to right.

If you're not using any insulation, you can try to keep the column wires elevated, and solder them near the tips of the keyswitch contacts - if the wires are sturdy enough, they won't short out to the row wiring an diodes.

Wiring up the controller

Now that the matrix itself is complete, it's time to connect what you've done to the microcontroller board.

Place the microcontroller where you want it to be located, give thought to mounting and case alignment. Bear in mind that the location of the USB socket can be different from the controller by using a short male to female cable if required,.

Find the pinout/documentation for your microcontroller board (links here) and make a note of all the digital I/O pins on it (note that on some controllers, like the teensy, analogue I/O can double as digital) as these are the pins you want to connect your wires to.


Specific instructions for the Teensy 2.0

There are some pins on the Teensy that are special, like D6 (the LED on the chip), or some of the UART, SPI, I2C, or PWM channels, but only avoid those if you're planning something in addition to a keyboard. If you're unsure about wanting to add something later, you should have enough pins in total to avoid a couple.

The pins you'll absolutely have to avoid, as with any controller, are: GND, VCC, AREF, and RST - all the others are usable and accessible in the firmware.


Cut wires to the length of the distance from the a point on each column/row to the controller. You can solder anywhere along the row, as long as it's after the diode - soldering before the diode (on the keyswitch side) will cause that row not to work.

Ribbon cable can be used to keep this extra tidy. You may also want to consider routing the wires beneath the exisiting columns/rows.

Ribbon Cable

As you solder the wires to the controller make a note of which row/column is going to which pin on the controller as we'll use this data to setup the matrix when we create the firmware.

As you move along, be sure that the controller is staying in place - recutting and soldering the wires is a pain!

Getting Some Basic Firmware Set Up

From here, you should have a working keyboard once you program a firmware.

Simple firmware can be created easily using the Keyboard Firmware Builder website. Recreate your layout using Keyboard Layout Editor, import it and recreate the matrix (if not already done as part of planning the matrix).

Go through the rest of the tabs, assigning keys until you get to the last one where you can compile and download your firmware. The .hex file can be flashed straight onto your keyboard, or for advanced functionality, compiled locally after Setting up Your Environment.

The source given by Keyboard Firmware Builder is QMK, but is based on a version of QMK from early 2017. To compile the firmware in a modern version of QMK Firmware, you'll need to export via the Save Configuration button, then run:

qmk import-kbfirmware /path/to/export.json

For example:

$ qmk import-kbfirmware ~/Downloads/gh62.json \nΨ Importing gh62.json.\n\n⚠ Support here is basic - Consider using 'qmk new-keyboard' instead\nΨ Imported a new keyboard named gh62.\nΨ To start working on things, `cd` into keyboards/gh62,\nΨ or open the directory in your preferred text editor.\nΨ And build with qmk compile -kb gh62 -km default.

Flashing the Firmware

Install QMK Toolbox.

QMK Toolbox

Under "Local File" navigate to your newly created .hex file. Under "Microcontroller", select the corresponding one for your controller board (common ones available here).

Plug in your keyboard and press the reset button (or short the Reset and Ground pins if there is no button) and click the "Flash" button in QMK toolbox.

Testing Your Firmware

Use a website such as QMK Configurator's Keyboard Tester, Keyboard Tester, or Keyboard Checker or just open a text editor and try typing - you should get the characters that you put into your keymap. Test each key, and make a note of the ones that aren't working. Here's a quick trouble-shooting guide for non-working keys:

  1. Flip the keyboard back over and short the keyswitch's contacts with a piece wire - this will eliminate the possibility of the keyswitch being bad and needing to be replaced.
  2. Check the solder points on the keyswitch - these need to be plump and whole. If you touch it with a moderate amount of force and it comes apart, it's not strong enough.
  3. Check the solder joints on the diode - if the diode is loose, part of your row may register, while the other may not.
  4. Check the solder joints on the columns - if your column wiring is loose, part or all of the column may not work.
  5. Check the solder joints on both sides of the wires going to/from the Teensy - the wires need to be fully soldered and connect to both sides.
  6. Check the <project_name>.h file for errors and incorrectly placed KC_NOs - if you're unsure where they should be, instead duplicate a kxy variable.
  7. Check to make sure you actually compiled the firmware and flashed the Teensy correctly. Unless you got error messages in the terminal, or a pop-up during flashing, you probably did everything correctly.
  8. Use a multimeter to check that the switch is actually closing when actuated (completing the circuit when pressed down).

If you've done all of these things, keep in mind that sometimes you might have had multiple things affecting the keyswitch, so it doesn't hurt to test the keyswitch by shorting it out at the end.

Finishing up

Once you have confirmed that the keyboard is working, if you have used a seperate (non handwire specific) controller you will want to secure it in place. This can be done in many different ways e.g. hot glue, double sided sticky tape, 3D printed caddy, electrical tape.

If you found this fullfilling you could experiment by adding additional features such as in switch LEDs, in switch RGB, RGB underglow or even an OLED display!

There are a lot of possibilities inside the firmware - explore docs.qmk.fm for a full feature list, and dive into the different keyboards to see how people use all of them. You can always stop by the OLKB subreddit or QMK Discord for help!

Legacy Content

This page used to include more content. We have moved a section that used to be part of this page its own page. Everything below this point is simply a redirect so that people following old links on the web find what they're looking for.

Preamble: How a Keyboard Matrix Works (and why we need diodes)

', 97); diff --git a/assets/hand_wire.md.GiNX60kU.lean.js b/assets/hand_wire.md.B69NBeYw.lean.js similarity index 91% rename from assets/hand_wire.md.GiNX60kU.lean.js rename to assets/hand_wire.md.B69NBeYw.lean.js index 7063aded3f2..7beab9f360d 100644 --- a/assets/hand_wire.md.GiNX60kU.lean.js +++ b/assets/hand_wire.md.B69NBeYw.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Hand-Wiring Guide","description":"","frontmatter":{},"headers":[],"relativePath":"hand_wire.md","filePath":"hand_wire.md"}'); const _sfc_main = { name: "hand_wire.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 97); diff --git a/assets/hardware_drivers.md.BUnx48D9.js b/assets/hardware_drivers.md.DA73-xWQ.js similarity index 98% rename from assets/hardware_drivers.md.BUnx48D9.js rename to assets/hardware_drivers.md.DA73-xWQ.js index f55fb719f7b..0c173e1807f 100644 --- a/assets/hardware_drivers.md.BUnx48D9.js +++ b/assets/hardware_drivers.md.DA73-xWQ.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Hardware Drivers","description":"","frontmatter":{},"headers":[],"relativePath":"hardware_drivers.md","filePath":"hardware_drivers.md"}'); const _sfc_main = { name: "hardware_drivers.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Hardware Drivers

QMK is used on a lot of different hardware. While support for the most common MCU's and matrix configurations is built-in there are a number of drivers that can be added to a keyboard to support additional hardware. Examples include mice and other pointing devices, i/o expanders for split keyboards, bluetooth modules, and LCD, OLED, and TFT screens.

Available Drivers

ProMicro (AVR Only)

Support for addressing pins on the ProMicro by their Arduino name rather than their AVR name. This needs to be better documented, if you are trying to do this and reading the code doesn't help please open an issue and we can help you through the process.

SSD1306 OLED Driver

Support for SSD1306 based OLED displays. For more information see the OLED Driver Feature page.

WS2812

Support for WS2811/WS2812{a,b,c} LED's. For more information see the RGB Light page.

IS31FL3731

Support for up to 2 drivers. Each driver impliments 2 charlieplex matrices to individually address LEDs using I2C. This allows up to 144 same color LEDs or 32 RGB LEDs. For more information on how to setup the driver see the RGB Matrix page.

IS31FL3733

Support for up to a single driver with room for expansion. Each driver can control 192 individual LEDs or 64 RGB LEDs. For more information on how to setup the driver see the RGB Matrix page.

24xx series external I2C EEPROM

Support for an external I2C-based EEPROM instead of using the on-chip EEPROM. For more information on how to setup the driver see the EEPROM Driver page.

', 15); diff --git a/assets/hardware_drivers.md.BUnx48D9.lean.js b/assets/hardware_drivers.md.DA73-xWQ.lean.js similarity index 91% rename from assets/hardware_drivers.md.BUnx48D9.lean.js rename to assets/hardware_drivers.md.DA73-xWQ.lean.js index f63337faf3d..cfb9ff1db65 100644 --- a/assets/hardware_drivers.md.BUnx48D9.lean.js +++ b/assets/hardware_drivers.md.DA73-xWQ.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Hardware Drivers","description":"","frontmatter":{},"headers":[],"relativePath":"hardware_drivers.md","filePath":"hardware_drivers.md"}'); const _sfc_main = { name: "hardware_drivers.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 15); diff --git a/assets/hardware_keyboard_guidelines.md.CJevsanE.js b/assets/hardware_keyboard_guidelines.md.M0UlpwHv.js similarity index 99% rename from assets/hardware_keyboard_guidelines.md.CJevsanE.js rename to assets/hardware_keyboard_guidelines.md.M0UlpwHv.js index 374e554fa23..536e5727c97 100644 --- a/assets/hardware_keyboard_guidelines.md.CJevsanE.js +++ b/assets/hardware_keyboard_guidelines.md.M0UlpwHv.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Keyboard Guidelines","description":"","frontmatter":{},"headers":[],"relativePath":"hardware_keyboard_guidelines.md","filePath":"hardware_keyboard_guidelines.md"}'); const _sfc_main = { name: "hardware_keyboard_guidelines.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Keyboard Guidelines

Since starting, QMK has grown by leaps and bounds thanks to people like you who contribute to creating and maintaining our community keyboards. As we've grown we've discovered some patterns that work well, and ask that you conform to them to make it easier for other people to benefit from your hard work.

Use QMK Lint

We have provided a tool, qmk lint, which will let you check over your keyboard for problems. We suggest using it frequently while working on your keyboard and keymap.

Example passing check:

$ qmk lint -kb rominronin/katana60/rev2\nΨ Lint check passed!

Example failing check:

$ qmk lint -kb clueboard/66/rev3\n☒ Missing keyboards/clueboard/66/rev3/readme.md\n☒ Lint check failed!

Naming Your Keyboard/Project

All keyboard names are in lower case, consisting only of letters, numbers, and underscore (_). Names may not begin with an underscore. Forward slash (/) is used as a sub-folder separation character.

The names test, keyboard, and all are reserved for make commands and may not be used as a keyboard or subfolder name.

Valid Examples:

Sub-folders

QMK uses sub-folders both for organization and to share code between revisions of the same keyboard. You can nest folders up to 4 levels deep:

qmk_firmware/keyboards/top_folder/sub_1/sub_2/sub_3/sub_4

If a sub-folder has a rules.mk file it will be considered a compilable keyboard. It will be available in QMK Configurator and tested with make all. If you are using a folder to organize several keyboards from the same maker you should not have a rules.mk file.

Example:

Clueboard uses sub-folders for both purposes, organization and keyboard revisions.

Keyboard Folder Structure

Your keyboard should be located in qmk_firmware/keyboards/ and the folder name should be your keyboard's name as described in the previous section. Inside this folder should be several files:

readme.md

All projects need to have a readme.md file that explains what the keyboard is, who made it and where it's available. If applicable, it should also contain links to more information, such as the maker's website. Please follow the published template.

info.json

This file is used by the QMK API. It contains the information QMK Configurator needs to display a representation of your keyboard. You can also set metadata here. For more information see the reference page.

config.h

All projects need to have a config.h file that sets things like the matrix size, product name, USB VID/PID, description and other settings. In general, use this file to set essential information and defaults for your keyboard that will always work.

The config.h files can also be placed in sub-folders, and the order in which they are read is as follows:

The post_config.h file can be used for additional post-processing, depending on what is specified in the config.h file. For example, if you define the IOS_DEVICE_ENABLE macro in your keymap-level config.h file as follows, you can configure more detailed settings accordingly in the post_config.h file:

TIP

If you define options using post_config.h as in the above example, you should not define the same options in the keyboard- or user-level config.h.

rules.mk

The presence of this file means that the folder is a keyboard target and can be used in make commands. This is where you setup the build environment for your keyboard and configure the default set of features.

The rules.mk file can also be placed in a sub-folder, and its reading order is as follows:

Many of the settings written in the rules.mk file are interpreted by common_features.mk, which sets the necessary source files and compiler options.

The post_rules.mk file can interpret features of a keyboard-level before common_features.mk. For example, when your designed keyboard has the option to implement backlighting or underglow using rgblight.c, writing the following in the post_rules.mk makes it easier for the user to configure the rules.mk.

TIP

See build_keyboard.mk and common_features.mk for more details.

<keyboard_name.c>

This is where you will write custom code for your keyboard. Typically you will write code to initialize and interface with the hardware in your keyboard. If your keyboard consists of only a key matrix with no LEDs, speakers, or other auxiliary hardware this file can be blank.

The following functions are typically defined in this file:

<keyboard_name.h>

This file is used to define the matrix for your keyboard. You should define at least one C macro which translates an array into a matrix representing the physical switch matrix for your keyboard. If it's possible to build your keyboard with multiple layouts you should define additional macros.

If you have only a single layout you should call this macro LAYOUT.

When defining multiple layouts you should have a base layout, named LAYOUT_all, that supports all possible switch positions on your matrix, even if that layout is impossible to build physically. This is the macro you should use in your default keymap. You should then have additional keymaps named default_<layout> that use your other layout macros. This will make it easier for people to use the layouts you define.

Layout macro names are entirely lowercase, except for the word LAYOUT at the front.

As an example, if you have a 60% PCB that supports ANSI and ISO you might define the following layouts and keymaps:

Layout NameKeymap NameDescription
LAYOUT_alldefaultA layout that supports both ISO and ANSI
LAYOUT_ansidefault_ansiAn ANSI layout
LAYOUT_isodefault_isoAn ISO layout

TIP

Providing only LAYOUT_all is invalid - especially when implementing the additional layouts within 3rd party tooling.

Image/Hardware Files

In an effort to keep the repo size down we're no longer accepting binary files of any format, with few exceptions. Hosting them elsewhere (such as https://imgur.com) and linking them in the readme.md is preferred.

Hardware files (such as plates, cases, pcb) can be contributed to the qmk.fm repo and they will be made available on qmk.fm. Downloadable files are stored in /<keyboard>/ (name follows the same format as above) which are served at https://qmk.fm/<keyboard>/, and pages are generated from /_pages/<keyboard>/ which are served at the same location (.md files are generated into .html files through Jekyll). Check out the lets_split folder for an example.

Keyboard Defaults

Given the amount of functionality that QMK exposes it's very easy to confuse new users. When putting together the default firmware for your keyboard we recommend limiting your enabled features and options to the minimal set needed to support your hardware. Recommendations for specific features follow.

Magic Keycodes and Command

Magic Keycodes and Command are two related features that allow a user to control their keyboard in non-obvious ways. We recommend you think long and hard about if you're going to enable either feature, and how you will expose this functionality. Keep in mind that users who want this functionality can enable it in their personal keymaps without affecting all the novice users who may be using your keyboard as their first programmable board.

By far the most common problem new users encounter is accidentally triggering Bootmagic while they're plugging in their keyboard. They're holding the keyboard by the bottom, unknowingly pressing in alt and spacebar, and then they find that these keys have been swapped on them. We recommend leaving this feature disabled by default, but if you do turn it on consider setting BOOTMAGIC_KEY_SALT to a key that is hard to press while plugging your keyboard in.

If your keyboard does not have 2 shift keys you should provide a working default for IS_COMMAND, even when you have set COMMAND_ENABLE = no. This will give your users a default to conform to if they do enable Command.

Custom Keyboard Programming

As documented on Customizing Functionality you can define custom functions for your keyboard. Please keep in mind that your users may want to customize that behavior as well, and make it possible for them to do that. If you are providing a custom function, for example process_record_kb(), make sure that your function calls the _user() version of the call too. You should also take into account the return value of the _user() version, and only run your custom code if the user returns true.

Non-Production/Handwired Projects

We're happy to accept any project that uses QMK, including prototypes and handwired ones, but we have a separate /keyboards/handwired/ folder for them, so the main /keyboards/ folder doesn't get overcrowded. If a prototype project becomes a production project at some point in the future, we'd be happy to move it to the main /keyboards/ folder!

Warnings as Errors

When developing your keyboard, keep in mind that all warnings will be treated as errors - these small warnings can build-up and cause larger errors down the road (and keeping them is generally a bad practice).

If you're adapting your keyboard's setup from another project, but not using the same code, be sure to update the copyright header at the top of the files to show your name, in this format:

c
Copyright 2017 Your Name <your@email.com>

If you are modifying someone else's code and have made only trivial changes you should leave their name in the copyright statement. If you have done significant work on the file you should add your name to theirs, like so:

c
Copyright 2017 Their Name <original_author@example.com> Your Name <you@example.com>

The year should be the first year the file is created. If work was done to that file in later years you can reflect that by appending the second year to the first, like so:

c
Copyright 2015-2017 Your Name <you@example.com>

License

The core of QMK is licensed under the GNU General Public License. If you are shipping binaries for AVR processors you may choose either GPLv2 or GPLv3. If you are shipping binaries for ARM processors you must choose GPL Version 3 to comply with the ChibiOS GPLv3 license.

', 78); diff --git a/assets/hardware_keyboard_guidelines.md.CJevsanE.lean.js b/assets/hardware_keyboard_guidelines.md.M0UlpwHv.lean.js similarity index 92% rename from assets/hardware_keyboard_guidelines.md.CJevsanE.lean.js rename to assets/hardware_keyboard_guidelines.md.M0UlpwHv.lean.js index 5fbe2036d24..e59163e7575 100644 --- a/assets/hardware_keyboard_guidelines.md.CJevsanE.lean.js +++ b/assets/hardware_keyboard_guidelines.md.M0UlpwHv.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Keyboard Guidelines","description":"","frontmatter":{},"headers":[],"relativePath":"hardware_keyboard_guidelines.md","filePath":"hardware_keyboard_guidelines.md"}'); const _sfc_main = { name: "hardware_keyboard_guidelines.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 78); diff --git a/assets/how_a_matrix_works.md.JINKbCuX.js b/assets/how_a_matrix_works.md.CaVS4G-x.js similarity index 99% rename from assets/how_a_matrix_works.md.JINKbCuX.js rename to assets/how_a_matrix_works.md.CaVS4G-x.js index ea5ffe5bc81..c25dde36d4f 100644 --- a/assets/how_a_matrix_works.md.JINKbCuX.js +++ b/assets/how_a_matrix_works.md.CaVS4G-x.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"How a Keyboard Matrix Works","description":"","frontmatter":{},"headers":[],"relativePath":"how_a_matrix_works.md","filePath":"how_a_matrix_works.md"}'); const _sfc_main = { name: "how_a_matrix_works.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

How a Keyboard Matrix Works

Keyboard switch matrices are arranged in rows and columns. Without a matrix circuit, each switch would require its own wire directly to the controller.

When the circuit is arranged in rows and columns, if a key is pressed, a column wire makes contact with a row wire and completes a circuit. The keyboard controller detects this closed circuit and registers it as a key press.

The microcontroller will be set up via the firmware to send a logical 1 to the columns, one at a time, and read from the rows, all at once - this process is called matrix scanning. The matrix is a bunch of open switches that, by default, don't allow any current to pass through - the firmware will read this as no keys being pressed. As soon as you press one key down, the logical 1 that was coming from the column the keyswitch is attached to gets passed through the switch and to the corresponding row - check out the following 2x2 example:

        Column 0 being scanned     Column 1 being scanned\n                  x                                   x\n                 col0     col1              col0     col1\n                  |        |                 |        |\n        row0 ---(key0)---(key1)    row0 ---(key0)---(key1)\n                  |        |                 |        |\n        row1 ---(key2)---(key3)    row1 ---(key2)---(key3)

The x represents that the column/row associated has a value of 1, or is HIGH. Here, we see that no keys are being pressed, so no rows get an x. For one keyswitch, keep in mind that one side of the contacts is connected to its row, and the other, its column.

When we press key0, col0 gets connected to row0, so the values that the firmware receives for that row is 0b01 (the 0b here means that this is a bit value, meaning all of the following digits are bits - 0 or 1 - and represent the keys in that column). We'll use this notation to show when a keyswitch has been pressed, to show that the column and row are being connected:

        Column 0 being scanned     Column 1 being scanned\n                  x                                   x\n                 col0     col1              col0     col1\n                  |        |                 |        |\n      x row0 ---(-+-0)---(key1)    row0 ---(-+-0)---(key1)\n                  |        |                 |        |\n        row1 ---(key2)---(key3)    row1 ---(key2)---(key3)

We can now see that row0 has an x, so has the value of 1. As a whole, the data the firmware receives when key0 is pressed is:

col0: 0b01\ncol1: 0b00\n        │└row0\n        └row1

A problem arises when you start pressing more than one key at a time. Looking at our matrix again, it should become pretty obvious:

        Column 0 being scanned     Column 1 being scanned\n                  x                                   x\n                 col0     col1              col0     col1\n                  |        |                 |        |\n      x row0 ---(-+-0)---(-+-1)  x row0 ---(-+-0)---(-+-1)\n                  |        |                 |        |\n      x row1 ---(key2)---(-+-3)  x row1 ---(key2)---(-+-3)\n\n      Remember that this ^ is still connected to row1

The data we get from that is:

col0: 0b11\ncol1: 0b11\n        │└row0\n        └row1

Which isn't accurate, since we only have 3 keys pressed down, not all 4. This behavior is called ghosting, and only happens in odd scenarios like this, but can be much more common on a bigger keyboard. The way we can get around this is by placing a diode after the keyswitch, but before it connects to its row. A diode only allows current to pass through one way, which will protect our other columns/rows from being activated in the previous example. We'll represent a dioded matrix like this;

        Column 0 being scanned     Column 1 being scanned\n                    x                                   x\n                  col0      col1              col0     col1\n                    │        │                 |        │\n                 (key0)   (key1)            (key0)   (key1)\n                  ! │      ! │               ! |      ! │\n        row0 ─────┴────────┘ │     row0 ─────┴────────┘ │\n                    │        │                 |        │\n                 (key2)   (key3)            (key2)   (key3)\n                  !        !                 !        !\n        row1 ─────┴────────┘       row1 ─────┴────────┘

In practical applications, the black line of the diode will be placed facing the row, and away from the keyswitch - the ! in this case is the diode, where the gap represents the black line. A good way to remember this is to think of this symbol: >|

Now when we press the three keys, invoking what would be a ghosting scenario:

        Column 0 being scanned     Column 1 being scanned\n                    x                                   x\n                  col0      col1              col0     col1\n                    │        │                 │        │\n                 (┌─┤0)   (┌─┤1)            (┌─┤0)   (┌─┤1)\n                  ! │      ! │               ! │      ! │\n      x row0 ─────┴────────┘ │   x row0 ─────┴────────┘ │\n                    │        │                 │        │\n                 (key2)   (┌─┘3)            (key2)   (┌─┘3)\n                  !        !                 !        !\n        row1 ─────┴────────┘     x row1 ─────┴────────┘

Things act as they should! Which will get us the following data:

col0: 0b01\ncol1: 0b11\n        │└row0\n        └row1

The firmware can then use this correct data to detect what it should do, and eventually, what signals it needs to send to the OS.

Further reading:

', 24); diff --git a/assets/how_a_matrix_works.md.JINKbCuX.lean.js b/assets/how_a_matrix_works.md.CaVS4G-x.lean.js similarity index 91% rename from assets/how_a_matrix_works.md.JINKbCuX.lean.js rename to assets/how_a_matrix_works.md.CaVS4G-x.lean.js index fd498c8555c..541a28f465c 100644 --- a/assets/how_a_matrix_works.md.JINKbCuX.lean.js +++ b/assets/how_a_matrix_works.md.CaVS4G-x.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"How a Keyboard Matrix Works","description":"","frontmatter":{},"headers":[],"relativePath":"how_a_matrix_works.md","filePath":"how_a_matrix_works.md"}'); const _sfc_main = { name: "how_a_matrix_works.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 24); diff --git a/assets/how_keyboards_work.md.CB7z8ocb.js b/assets/how_keyboards_work.md.DEm83W7w.js similarity index 99% rename from assets/how_keyboards_work.md.CB7z8ocb.js rename to assets/how_keyboards_work.md.DEm83W7w.js index aa2edf0ed85..196402217a6 100644 --- a/assets/how_keyboards_work.md.CB7z8ocb.js +++ b/assets/how_keyboards_work.md.DEm83W7w.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"How Keys Are Registered, and Interpreted by Computers","description":"","frontmatter":{},"headers":[],"relativePath":"how_keyboards_work.md","filePath":"how_keyboards_work.md"}'); const _sfc_main = { name: "how_keyboards_work.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

How Keys Are Registered, and Interpreted by Computers

In this file, you can will learn the concepts of how keyboards work over USB, and you'll be able to better understand what you can expect from changing your firmware directly.

Schematic View

Whenever you type on 1 particular key, here is the chain of actions taking place:

+------+         +-----+       +----------+      +----------+     +----+\n| User |-------->| Key |------>| Firmware |----->| USB wire |---->| OS |\n+------+         +-----+       +----------+      +----------+     +----+

This scheme is a very simple view of what's going on, and more details follow in the next sections.

1. You Press a Key

Whenever you press a key, the firmware of your keyboard can register this event. It can register when the key is pressed, held and released.

This usually happens with a periodic scan of key presses. This speed often is limited by the mechanical key response time, the protocol to transfer those key presses (here USB HID), and by the software it is used in.

2. What the Firmware Sends

The HID specification tells what a keyboard can actually send through USB to have a chance to be properly recognised. This includes a pre-defined list of scancodes which are simple numbers from 0x00 to 0xE7. The firmware assigns a scancode to each key of the keyboard.

The firmware does not send actual letters or characters, but only scancodes. Thus, by modifying the firmware, you can only modify what scancode is sent over USB for a given key.

3. What the Event Input/Kernel Does

The scancode is mapped to a keycode dependent on the keyboard 60-keyboard.hwdb at Main. Without this mapping, the operating system will not receive a valid keycode and will be unable to do anything useful with that key press.

4. What the Operating System Does

Once the keycode reaches the operating system, a piece of software has to have it match an actual character thanks to a keyboard layout. For example, if your layout is set to QWERTY, a sample of the matching table is as follows:

keycodecharacter
0x04a/A
0x05b/B
0x06c/C
......
0x1Cy/Y
0x1Dz/Z
......

Back to the Firmware

As the layout is generally fixed (unless you create your own), the firmware can actually call a keycode by its layout name directly to ease things for you. This is exactly what is done here with KC_A actually representing 0x04 in QWERTY. The full list can be found in keycodes.

List of Characters You Can Send

Putting aside shortcuts, having a limited set of keycodes mapped to a limited layout means that the list of characters you can assign to a given key are only the ones present in the layout.

For example, this means that if you have a QWERTY US layout, and you want to assign one key to produce (euro currency symbol), you are unable to do so, because the QWERTY US layout does not have such mapping. You could fix that by using a QWERTY UK layout, or a QWERTY US International.

You may wonder why a keyboard layout containing all of Unicode is not devised then? The limited number of keycodes available through USB simply disallows such a thing.

How to (Maybe) Enter Unicode Characters

You can have the firmware send sequences of keys to use the software Unicode Input Method of the target operating system, thus effectively entering characters independently of the layout defined in the OS.

Yet, it does come with multiple disadvantages:

', 27); diff --git a/assets/how_keyboards_work.md.CB7z8ocb.lean.js b/assets/how_keyboards_work.md.DEm83W7w.lean.js similarity index 91% rename from assets/how_keyboards_work.md.CB7z8ocb.lean.js rename to assets/how_keyboards_work.md.DEm83W7w.lean.js index e2c111c0544..c2400ae04d2 100644 --- a/assets/how_keyboards_work.md.CB7z8ocb.lean.js +++ b/assets/how_keyboards_work.md.DEm83W7w.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"How Keys Are Registered, and Interpreted by Computers","description":"","frontmatter":{},"headers":[],"relativePath":"how_keyboards_work.md","filePath":"how_keyboards_work.md"}'); const _sfc_main = { name: "how_keyboards_work.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 27); diff --git a/assets/index.md.BFvlZFTs.js b/assets/index.md.CE4UOGjJ.js similarity index 98% rename from assets/index.md.BFvlZFTs.js rename to assets/index.md.CE4UOGjJ.js index d9fb31ce366..1c1103d6d89 100644 --- a/assets/index.md.BFvlZFTs.js +++ b/assets/index.md.CE4UOGjJ.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Quantum Mechanical Keyboard Firmware","description":"","frontmatter":{},"headers":[],"relativePath":"index.md","filePath":"index.md"}'); const _sfc_main = { name: "index.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Quantum Mechanical Keyboard Firmware

What is QMK Firmware?

QMK (Quantum Mechanical Keyboard) is an open source community centered around developing computer input devices. The community encompasses all sorts of input devices, such as keyboards, mice, and MIDI devices. A core group of collaborators maintains QMK Firmware, QMK Configurator, QMK Toolbox, qmk.fm, and this documentation with the help of community members like you.

Get Started

Basic

QMK Configurator

User friendly graphical interfaces, no programming knowledge required.

Advanced

Use The Source

More powerful, but harder to use.

Make It Yours

QMK has lots of features to explore, and a good deal of reference documentation to dig through. Most features are taken advantage of by modifying your keymap, and changing the keycodes.

Need help?

Check out the support page to see how you can get help using QMK.

Give Back

There are a lot of ways you can contribute to the QMK Community. The easiest way to get started is to use it and spread the word to your friends.

', 13); diff --git a/assets/index.md.BFvlZFTs.lean.js b/assets/index.md.CE4UOGjJ.lean.js similarity index 91% rename from assets/index.md.BFvlZFTs.lean.js rename to assets/index.md.CE4UOGjJ.lean.js index 4889c17ffe2..12dbbe42471 100644 --- a/assets/index.md.BFvlZFTs.lean.js +++ b/assets/index.md.CE4UOGjJ.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Quantum Mechanical Keyboard Firmware","description":"","frontmatter":{},"headers":[],"relativePath":"index.md","filePath":"index.md"}'); const _sfc_main = { name: "index.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 13); diff --git a/assets/isp_flashing_guide.md.BiuBpOKX.js b/assets/isp_flashing_guide.md.BCLez560.js similarity index 99% rename from assets/isp_flashing_guide.md.BiuBpOKX.js rename to assets/isp_flashing_guide.md.BCLez560.js index 3376a59154e..038c6f7aa55 100644 --- a/assets/isp_flashing_guide.md.BiuBpOKX.js +++ b/assets/isp_flashing_guide.md.BCLez560.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"ISP Flashing Guide","description":"","frontmatter":{},"headers":[],"relativePath":"isp_flashing_guide.md","filePath":"isp_flashing_guide.md"}'); const _sfc_main = { name: "isp_flashing_guide.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

ISP Flashing Guide

In order to flash a microcontroller over USB, it needs something called a bootloader. This bootloader lives in a specific section of the flash memory, and allows you to load the actual application firmware (in this case, QMK) into the rest of the flash.

However, it can sometimes happen that the bootloader becomes corrupted and needs reflashing, or you may want to change the bootloader to another one. It's not possible to do this with the existing bootloader, because, of course, it is already running, and cannot overwrite itself. Instead, you will need to ISP flash the microcontroller.

There are several different kinds of bootloaders available for AVR microcontrollers. Most STM32 ARM-based microcontrollers already have a USB-capable bootloader in ROM, so generally do not need to be ISP flashed. The one current exception is the STM32F103.

Hardware

One of the following devices is required to perform the ISP flashing. The product links are to the official versions, however you can certainly source them elsewhere.

You'll also need some jumper wires to connect the ISP flasher and the target board. Some boards have an ISP header with the necessary pins broken out. If not, then you will need to temporarily solder the wires to the PCB -- usually to switch pins or directly to the MCU. The wiring is fairly straightforward; for the most part, you'll be connecting like to like. Refer to the target MCU's datasheet for the exact RESET, SCLK, MOSI and MISO pins.

Pro Micro as ISP

SparkFun Pro Micro

To use a 5V/16MHz Pro Micro as an ISP flashing tool, you will first need to load a special firmware onto it that emulates a hardware ISP flasher.

AVRDUDE Programmer: avrisp
AVRDUDE Port: Serial

Wiring

Pro MicroKeyboard
VCCVCC
GNDGND
10 (B6)RESET
15 (B1)SCLK
16 (B2)MOSI
14 (B3)MISO

WARNING

Note that the 10 pin on the Pro Micro should be wired to the RESET pin on the keyboard's controller. DO NOT connect the RESET pin on the Pro Micro to the RESET on the keyboard.

Arduino Uno / Micro as ISP

Arduino UnoArduino Micro

A standard Uno or Micro can be used as an ISP flashing tool using the example "ArduinoISP" sketch to emulate an STK500 ISP. Also works with Sparkfun Pro Micros and clones.

AVRDUDE Programmer: stk500v1
AVRDUDE Port: Serial

Wiring

UnoKeyboard
5VVCC
GNDGND
10 (B2)RESET
13 (B5)SCLK
11 (B3)MOSI
12 (B4)MISO
MicroKeyboard
5VVCC
GNDGND
10 (B6)RESET
15 (B1)SCLK
16 (B2)MOSI
14 (B3)MISO

WARNING

Note that the 10 pin on the Uno/Micro should be wired to the RESET pin on the keyboard's controller. DO NOT connect the RESET pin on the Uno/Micro to the RESET on the keyboard.

Teensy 2.0 as ISP

PJRC Teensy 2.0

To use a Teensy 2.0 as an ISP flashing tool, you will first need to load a special firmware onto it that emulates a hardware ISP flasher.

AVRDUDE Programmer: avrisp
AVRDUDE Port: Serial

Wiring

TeensyKeyboard
VCCVCC
GNDGND
B0RESET
B1SCLK
B2MOSI
B3MISO

WARNING

Note that the B0 pin on the Teensy should be wired to the RESET pin on the keyboard's controller. DO NOT connect the RESET pin on the Teensy to the RESET on the keyboard.

SparkFun PocketAVR / USBtinyISP

SparkFun PocketAVR
Adafruit USBtinyISP

WARNING

SparkFun PocketAVR and USBtinyISP DO NOT support AVR chips with more than 64 KiB of flash (e.g., the AT90USB128 series). This limitation is mentioned on the shop page for SparkFun PocketAVR and in the FAQ for USBtinyISP. If you try to use one of these programmers with AT90USB128 chips, you will get verification errors from avrdude, and the bootloader won't be flashed properly (e.g., see the issue #3286).

AVRDUDE Programmer: usbtiny
AVRDUDE Port: usb

Wiring

ISPKeyboard
VCCVCC
GNDGND
RSTRESET
SCLKSCLK
MOSIMOSI
MISOMISO

USBasp

Thomas Fischl's USBasp

AVRDUDE Programmer: usbasp
AVRDUDE Port: usb

Wiring

ISPKeyboard
VCCVCC
GNDGND
RSTRESET
SCLKSCLK
MOSIMOSI
MISOMISO

Bus Pirate

Adafruit Bus Pirate

WARNING

The 5-pin "ICSP" header is for ISP flashing the PIC microcontroller of the Bus Pirate. Connect your target board to the 10-pin header opposite the USB connector instead.

AVRDUDE Programmer: buspirate
AVRDUDE Port: Serial

Wiring

Bus PirateKeyboard
+5VVCC
GNDGND
RSTRESET
CLKSCLK
MOSIMOSI
MISOMISO

Software

QMK Toolbox supports flashing both the ISP firmware and bootloader, but note that it cannot (currently) set the AVR fuse bytes for the actual ISP flashing step, so you may want to work with avrdude directly instead.

Setting up the QMK environment is highly recommended, as it automatically installs avrdude along with a host of other tools.

Bootloader Firmware

One of these files is what you will be ISP flashing onto the board. The default fuses are also listed.

If you're not sure what your board uses, look in the rules.mk file for the keyboard in QMK. The MCU and BOOTLOADER lines will have the values you need. It may differ between different versions of the board.

Atmel DFU

These are the factory default bootloaders shipped by Atmel (now Microchip). Note that the AT90USB64 and AT90USB128 bootloaders are slightly modified, due to a bug causing them to not enumerate properly in Windows 8 and later.

MCULowHighExtendedUSB ID
ATmega16U40x5E0x99 / 0xD9 (JTAG disabled)0xF303EB:2FF3
ATmega32U40x5E0x99 / 0xD9 (JTAG disabled)0xF303EB:2FF4
AT90USB640x5E0x9B / 0xDB (JTAG disabled)0xF303EB:2FF9
AT90USB1280x5E0x99 / 0xD9 (JTAG disabled)0xF303EB:2FFB

Caterina

This is the default Arduino-style bootloader derived from the LUFA CDC bootloader, and is only for the ATmega32U4.

There are several variants depending on the vendor, but they all mostly work the same way. The SparkFun variants, for example, require the RESET pin to be grounded twice quickly in order to stay in bootloader mode for more than 750 ms.

MCULowHighExtendedUSB ID
SparkFun Pro Micro (3V3/8MHz)0xFF0xD80xFE1B4F:9203
SparkFun Pro Micro (5V/16MHz)0xFF0xD80xFB1B4F:9205
SparkFun LilyPadUSB (and some Pro Micro clones)0xFF0xD80xFE1B4F:9207
Pololu A-Star 32U4*0xFF0xD00xF81FFB:0101
Adafruit Feather 32U40xFF0xD80xFB239A:000C
Adafruit ItsyBitsy 32U4 (3V3/8MHz)*0xFF0xD80xFB239A:000D
Adafruit ItsyBitsy 32U4 (5V/16MHz)0xFF0xD80xFB239A:000E
Arduino Leonardo*0xFF0xD80xFB2341:0036
Arduino Micro*0xFF0xD80xFB2341:0037

TIP

Files marked with a * have combined Arduino sketches, which runs by default and also appears as a serial port. However, this is not the bootloader device.

BootloadHID (PS2AVRGB)

This bootloader is primarily for keyboards originally designed for the PS2AVRGB firmware and Bootmapper Client. It is not recommended for use in new designs.

MCULowHighUSB ID
ATmega32A0x0F0xD016C0:05DF

USBaspLoader

USBaspLoader is a bootloader based on V-USB that emulates a hardware USBasp device. It runs on ATmega32A and ATmega328P MCUs.

Precompiled .hex files are generally not available, but you can compile it yourself by setting up the QMK environment and following Coseyfannitutti's guide for the appropriate MCU:

MCULowHighExtendedUSB ID
ATmega32A0x1F0xC0n/a16C0:05DC
ATmega328P0xD70xD00x0416C0:05DC

Note that some boards may have their own specialized build of this bootloader in a separate repository. This will usually be linked to in the board's readme.

Flashing the Bootloader

Open a new Terminal window - if you are on Windows, use MSYS2 or QMK MSYS, not the Command Prompt. Navigate to the directory your bootloader .hex is in. Now it's time to run the avrdude command.

The syntax of avrdude is:

avrdude -c <programmer> -P <port> -p <mcu> -U flash:w:<filename>:i

You can also run man avrdude for more information.

If all goes well, you should get output similar to the following:

avrdude: AVR device initialized and ready to accept instructions\n\nReading | ################################################## | 100% 0.00s\n\navrdude: Device signature = 0x1e9587 (probably m32u4)\navrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed\n         To disable this feature, specify the -D option.\navrdude: erasing chip\navrdude: reading input file "Caterina-Micro.hex"\navrdude: writing flash (32730 bytes):\n\nWriting | ################################################## | 100% 11.58s\n\navrdude: 32730 bytes of flash written\navrdude: verifying flash memory against Caterina-Micro.hex:\navrdude: load data flash data from input file Caterina-Micro.hex:\navrdude: input file Caterina-Micro.hex contains 32730 bytes\navrdude: reading on-chip flash data:\n\nReading | ################################################## | 100% 10.33s\n\navrdude: verifying ...\navrdude: 32730 bytes of flash verified\n\navrdude: safemode: Fuses OK (E:CB, H:D8, L:FF)\n\navrdude done.  Thank you.

Setting the Fuses

This is a slightly more advanced topic, but may be necessary if you are switching from one bootloader to another (for example, Caterina to Atmel/QMK DFU on a Pro Micro). Fuses control some of the low-level functionality of the AVR microcontroller, such as clock speed, whether JTAG is enabled, and the size of the section of flash memory reserved for the bootloader, among other things. You can find a fuse calculator for many AVR parts here.

WARNING

Setting incorrect fuse values, in particular the clock-related bits, may render the MCU practically unrecoverable without high voltage programming (not covered here)! Make sure to double check the commands you enter before you execute them.

To set the fuses, add the following to the avrdude command:

-U lfuse:w:0xXX:m -U hfuse:w:0xXX:m -U efuse:w:0xXX:m

where the lfuse, hfuse and efuse arguments represent the low, high and extended fuse bytes as listed in the Hardware section.

TIP

You may get a warning from avrdude that the extended fuse byte does not match what you provided when reading it back. If the second hex digit matches, this can usually be safely ignored, because the top four bits of this fuse do not actually exist on many AVR parts, and may read back as anything.

Creating a "Production" Firmware

For mass production purposes, it is possible to join the bootloader and QMK firmware together into a single file, due to the way the Intel Hex format works:

  1. Open the QMK firmware and bootloader .hex files in a text editor.
  2. Remove the last line of the QMK firmware (which should be :00000001FF - this is just an "end of file" marker).
  3. Paste the contents of the bootloader .hex file onto a new line at the end of the QMK firmware file, with no empty lines between.
  4. Save it as a new file, for example <keyboard>_<keymap>_production.hex.

You can then ISP flash this combined firmware instead, which allows you to skip the extra step of flashing the QMK firmware over USB.

Flashing STM32Duino Bootloader

As mentioned above, most supported STM32 devices already possess a USB DFU bootloader which cannot be overwritten, however the ROM bootloader in the STM32F103 used on the Bluepill is not USB capable. In this case an ST-Link V2 dongle is required to upload the STM32Duino bootloader to the device. These can be readily purchased for relatively cheap on eBay and other places.

This bootloader is a descendant of the Maple bootloader by Leaflabs, and is compatible with dfu-util.

Software

To communicate with the ST-Link, you must install the following packages:

Additionally, you may need to update the ST-Link's firmware with the STSW-LINK007 application. Note you will be asked to provide your name and email address if you do not have an ST.com account (this does not create one).

Finally, the bootloader binary itself can be downloaded from here.

Wiring

Connect the four-pin header on the end of the Bluepill to the matching pins on the ST-Link (the pinout will usually be printed on the side):

ST-LinkBluepill
GND (6)GND
SWCLK (2)DCLK
SWDIO (4)DIO
3.3V (8)3.3

Flashing

Firstly, make sure both jumpers on the Bluepill are set to 0.

Check that the ST-Link can talk to the Bluepill by running st-info --probe:

Found 1 stlink programmers\n  version:    V2J37S7\n  serial:     2C1219002B135937334D4E00\n  flash:      65536 (pagesize: 1024)\n  sram:       20480\n  chipid:     0x0410\n  descr:      F1xx Medium-density

If the reported chipid is 0x0410, everything is working. If it is 0x0000, check your wiring, and try swapping the SWDIO and SWCLK pins, as some ST-Link dongles may have incorrect pinouts.

Next, run the following command:

st-flash --reset --format binary write <path-to-bootloader> 0x08000000

where <path-to-bootloader> is the path to the bootloader .bin file above. You can run this command from the directory you downloaded it to, so that you can simply pass in the filename.

If all goes well, you should get output similar to the following:

st-flash 1.7.0\n2022-03-08T12:16:30 INFO common.c: F1xx Medium-density: 20 KiB SRAM, 64 KiB flash in at least 1 KiB pages.\nfile generic_boot20_pc13.bin md5 checksum: 333c30605e739ce9bedee5999fdaf81b, stlink checksum: 0x0008e534\n2022-03-08T12:16:30 INFO common.c: Attempting to write 7172 (0x1c04) bytes to stm32 address: 134217728 (0x8000000)\n2022-03-08T12:16:30 INFO common.c: Flash page at addr: 0x08000000 erased\n2022-03-08T12:16:30 INFO common.c: Flash page at addr: 0x08000400 erased\n2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08000800 erased\n2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08000c00 erased\n2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08001000 erased\n2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08001400 erased\n2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08001800 erased\n2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08001c00 erased\n2022-03-08T12:16:31 INFO common.c: Finished erasing 8 pages of 1024 (0x400) bytes\n2022-03-08T12:16:31 INFO common.c: Starting Flash write for VL/F0/F3/F1_XL\n2022-03-08T12:16:31 INFO flash_loader.c: Successfully loaded flash loader in sram\n2022-03-08T12:16:31 INFO flash_loader.c: Clear DFSR\n  8/  8 pages written\n2022-03-08T12:16:31 INFO common.c: Starting verification of write complete\n2022-03-08T12:16:31 INFO common.c: Flash written and verified! jolly good!\n2022-03-08T12:16:31 WARN common.c: NRST is not connected

Otherwise, if you receive an Unknown memory region error, run the following command to unlock the STM32F103:

openocd -f interface/stlink.cfg -f target/stm32f1x.cfg -c "init; reset halt; stm32f1x unlock 0; reset halt; exit"

Then re-plug the ST-Link and try again.

After all of this, unplug the Bluepill from the ST-Link and connect it to USB. It should now be ready to flash using dfu-util, the QMK CLI or Toolbox.

', 112); diff --git a/assets/isp_flashing_guide.md.BiuBpOKX.lean.js b/assets/isp_flashing_guide.md.BCLez560.lean.js similarity index 91% rename from assets/isp_flashing_guide.md.BiuBpOKX.lean.js rename to assets/isp_flashing_guide.md.BCLez560.lean.js index fd646a6ad88..84d9fd9c2fa 100644 --- a/assets/isp_flashing_guide.md.BiuBpOKX.lean.js +++ b/assets/isp_flashing_guide.md.BCLez560.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"ISP Flashing Guide","description":"","frontmatter":{},"headers":[],"relativePath":"isp_flashing_guide.md","filePath":"isp_flashing_guide.md"}'); const _sfc_main = { name: "isp_flashing_guide.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 112); diff --git a/assets/keycodes.md.CDjPwWHi.js b/assets/keycodes.md.W0MSIHjb.js similarity index 99% rename from assets/keycodes.md.CDjPwWHi.js rename to assets/keycodes.md.W0MSIHjb.js index ace60591df3..07392ebe288 100644 --- a/assets/keycodes.md.CDjPwWHi.js +++ b/assets/keycodes.md.W0MSIHjb.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Keycodes Overview","description":"","frontmatter":{},"headers":[],"relativePath":"keycodes.md","filePath":"keycodes.md"}'); const _sfc_main = { name: "keycodes.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Keycodes Overview

When defining a keymap each key needs a valid key definition. This page documents the symbols that correspond to keycodes that are available to you in QMK.

This is a reference only. Each group of keys links to the page documenting their functionality in more detail.

Basic Keycodes

See also: Basic Keycodes

KeyAliasesDescriptionWindowsmacOSLinux1
KC_NOXXXXXXXIgnore this key (NOOP)N/AN/AN/A
KC_TRANSPARENTKC_TRNS, _______Use the next lowest non-transparent keyN/AN/AN/A
KC_Aa and A
KC_Bb and B
KC_Cc and C
KC_Dd and D
KC_Ee and E
KC_Ff and F
KC_Gg and G
KC_Hh and H
KC_Ii and I
KC_Jj and J
KC_Kk and K
KC_Ll and L
KC_Mm and M
KC_Nn and N
KC_Oo and O
KC_Pp and P
KC_Qq and Q
KC_Rr and R
KC_Ss and S
KC_Tt and T
KC_Uu and U
KC_Vv and V
KC_Ww and W
KC_Xx and X
KC_Yy and Y
KC_Zz and Z
KC_11 and !
KC_22 and @
KC_33 and #
KC_44 and $
KC_55 and %
KC_66 and ^
KC_77 and &
KC_88 and *
KC_99 and (
KC_00 and )
KC_ENTERKC_ENTReturn (Enter)
KC_ESCAPEKC_ESCEscape
KC_BACKSPACEKC_BSPCDelete (Backspace)
KC_TABTab
KC_SPACEKC_SPCSpacebar
KC_MINUSKC_MINS- and _
KC_EQUALKC_EQL= and +
KC_LEFT_BRACKETKC_LBRC[ and {
KC_RIGHT_BRACKETKC_RBRC] and }
KC_BACKSLASHKC_BSLS\\ and |
KC_NONUS_HASHKC_NUHSNon-US # and ~
KC_SEMICOLONKC_SCLN; and :
KC_QUOTEKC_QUOT' and "
KC_GRAVEKC_GRV` and ~
KC_COMMAKC_COMM, and <
KC_DOT. and >
KC_SLASHKC_SLSH/ and ?
KC_CAPS_LOCKKC_CAPSCaps Lock
KC_F1F1
KC_F2F2
KC_F3F3
KC_F4F4
KC_F5F5
KC_F6F6
KC_F7F7
KC_F8F8
KC_F9F9
KC_F10F10
KC_F11F11
KC_F12F12
KC_PRINT_SCREENKC_PSCRPrint Screen2
KC_SCROLL_LOCKKC_SCRL, KC_BRMDScroll Lock, Brightness Down (macOS)2
KC_PAUSEKC_PAUS, KC_BRK, KC_BRMUPause, Brightness Up (macOS)2
KC_INSERTKC_INSInsert
KC_HOMEHome
KC_PAGE_UPKC_PGUPPage Up
KC_DELETEKC_DELForward Delete
KC_ENDEnd
KC_PAGE_DOWNKC_PGDNPage Down
KC_RIGHTKC_RGHTRight Arrow
KC_LEFTLeft Arrow
KC_DOWNDown Arrow
KC_UPUp Arrow
KC_NUM_LOCKKC_NUMKeypad Num Lock and Clear
KC_KP_SLASHKC_PSLSKeypad /
KC_KP_ASTERISKKC_PASTKeypad *
KC_KP_MINUSKC_PMNSKeypad -
KC_KP_PLUSKC_PPLSKeypad +
KC_KP_ENTERKC_PENTKeypad Enter
KC_KP_1KC_P1Keypad 1 and End
KC_KP_2KC_P2Keypad 2 and Down Arrow
KC_KP_3KC_P3Keypad 3 and Page Down
KC_KP_4KC_P4Keypad 4 and Left Arrow
KC_KP_5KC_P5Keypad 5
KC_KP_6KC_P6Keypad 6 and Right Arrow
KC_KP_7KC_P7Keypad 7 and Home
KC_KP_8KC_P8Keypad 8 and Up Arrow
KC_KP_9KC_P9Keypad 9 and Page Up
KC_KP_0KC_P0Keypad 0 and Insert
KC_KP_DOTKC_PDOTKeypad . and Delete
KC_NONUS_BACKSLASHKC_NUBSNon-US \\ and |
KC_APPLICATIONKC_APPApplication (Windows Context Menu Key)
KC_KB_POWERSystem Power3
KC_KP_EQUALKC_PEQLKeypad =
KC_F13F13
KC_F14F14
KC_F15F15
KC_F16F16
KC_F17F17
KC_F18F18
KC_F19F19
KC_F20F20
KC_F21F21
KC_F22F22
KC_F23F23
KC_F24F24
KC_EXECUTEKC_EXECExecute
KC_HELPHelp
KC_MENUMenu
KC_SELECTKC_SLCTSelect
KC_STOPStop
KC_AGAINKC_AGINAgain
KC_UNDOUndo
KC_CUTCut
KC_COPYCopy
KC_PASTEKC_PSTEPaste
KC_FINDFind
KC_KB_MUTEMute
KC_KB_VOLUME_UPVolume Up
KC_KB_VOLUME_DOWNVolume Down
KC_LOCKING_CAPS_LOCKKC_LCAPLocking Caps Lock
KC_LOCKING_NUM_LOCKKC_LNUMLocking Num Lock
KC_LOCKING_SCROLL_LOCKKC_LSCRLocking Scroll Lock
KC_KP_COMMAKC_PCMMKeypad ,
KC_KP_EQUAL_AS400Keypad = on AS/400 keyboards
KC_INTERNATIONAL_1KC_INT1International 1
KC_INTERNATIONAL_2KC_INT2International 2
KC_INTERNATIONAL_3KC_INT3International 3
KC_INTERNATIONAL_4KC_INT4International 4
KC_INTERNATIONAL_5KC_INT5International 5
KC_INTERNATIONAL_6KC_INT6International 6
KC_INTERNATIONAL_7KC_INT7International 7
KC_INTERNATIONAL_8KC_INT8International 8
KC_INTERNATIONAL_9KC_INT9International 9
KC_LANGUAGE_1KC_LNG1Language 1
KC_LANGUAGE_2KC_LNG2Language 2
KC_LANGUAGE_3KC_LNG3Language 3
KC_LANGUAGE_4KC_LNG4Language 4
KC_LANGUAGE_5KC_LNG5Language 5
KC_LANGUAGE_6KC_LNG6Language 6
KC_LANGUAGE_7KC_LNG7Language 7
KC_LANGUAGE_8KC_LNG8Language 8
KC_LANGUAGE_9KC_LNG9Language 9
KC_ALTERNATE_ERASEKC_ERASAlternate Erase
KC_SYSTEM_REQUESTKC_SYRQSysReq/Attention
KC_CANCELKC_CNCLCancel
KC_CLEARKC_CLRClear
KC_PRIORKC_PRIRPrior
KC_RETURNKC_RETNReturn
KC_SEPARATORKC_SEPRSeparator
KC_OUTOut
KC_OPEROper
KC_CLEAR_AGAINKC_CLAGClear/Again
KC_CRSELKC_CRSLCrSel/Props
KC_EXSELKC_EXSLExSel
KC_LEFT_CTRLKC_LCTLLeft Control
KC_LEFT_SHIFTKC_LSFTLeft Shift
KC_LEFT_ALTKC_LALT, KC_LOPTLeft Alt (Option)
KC_LEFT_GUIKC_LGUI, KC_LCMD, KC_LWINLeft GUI (Windows/Command/Meta key)
KC_RIGHT_CTRLKC_RCTLRight Control
KC_RIGHT_SHIFTKC_RSFTRight Shift
KC_RIGHT_ALTKC_RALT, KC_ROPT, KC_ALGRRight Alt (Option/AltGr)
KC_RIGHT_GUIKC_RGUI, KC_RCMD, KC_RWINRight GUI (Windows/Command/Meta key)
KC_SYSTEM_POWERKC_PWRSystem Power Down3
KC_SYSTEM_SLEEPKC_SLEPSystem Sleep3
KC_SYSTEM_WAKEKC_WAKESystem Wake3
KC_AUDIO_MUTEKC_MUTEMute
KC_AUDIO_VOL_UPKC_VOLUVolume Up4
KC_AUDIO_VOL_DOWNKC_VOLDVolume Down4
KC_MEDIA_NEXT_TRACKKC_MNXTNext Track5
KC_MEDIA_PREV_TRACKKC_MPRVPrevious Track5
KC_MEDIA_STOPKC_MSTPStop Track
KC_MEDIA_PLAY_PAUSEKC_MPLYPlay/Pause Track
KC_MEDIA_SELECTKC_MSELLaunch Media Player
KC_MEDIA_EJECTKC_EJCTEject
KC_MAILLaunch Mail
KC_CALCULATORKC_CALCLaunch Calculator
KC_MY_COMPUTERKC_MYCMLaunch My Computer
KC_WWW_SEARCHKC_WSCHBrowser Search
KC_WWW_HOMEKC_WHOMBrowser Home
KC_WWW_BACKKC_WBAKBrowser Back
KC_WWW_FORWARDKC_WFWDBrowser Forward
KC_WWW_STOPKC_WSTPBrowser Stop
KC_WWW_REFRESHKC_WREFBrowser Refresh
KC_WWW_FAVORITESKC_WFAVBrowser Favorites
KC_MEDIA_FAST_FORWARDKC_MFFDNext Track5
KC_MEDIA_REWINDKC_MRWDPrevious Track65
KC_BRIGHTNESS_UPKC_BRIUBrightness Up
KC_BRIGHTNESS_DOWNKC_BRIDBrightness Down
KC_CONTROL_PANELKC_CPNLOpen Control Panel
KC_ASSISTANTKC_ASSTLaunch Context-Aware Assistant
KC_MISSION_CONTROLKC_MCTLOpen Mission Control
KC_LAUNCHPADKC_LPADOpen Launchpad

1. The Linux kernel HID driver recognizes nearly all keycodes, but the default bindings depend on the DE/WM.
2. Treated as F13-F15.
3. Must be held for about three seconds, and will display a prompt instead.
4. Holding Shift+Option allows for finer control of volume level.
5. Skips the entire track in iTunes when tapped, seeks within the current track when held.
6. WMP does not recognize the Rewind key, but both alter playback speed in VLC.

Quantum Keycodes

See also: Quantum Keycodes

KeyAliasesDescription
QK_BOOTLOADERQK_BOOTPut the keyboard into bootloader mode for flashing
QK_DEBUG_TOGGLEDB_TOGGToggle debug mode
QK_CLEAR_EEPROMEE_CLRReinitializes the keyboard's EEPROM (persistent memory)
QK_MAKESends qmk compile -kb (keyboard) -km (keymap), or qmk flash if shift is held. Puts keyboard into bootloader mode if shift & control are held
QK_REBOOTQK_RBTResets the keyboard. Does not load the bootloader

Audio Keys

See also: Audio

KeyAliasesDescription
QK_AUDIO_ONAU_ONTurns on Audio Feature
QK_AUDIO_OFFAU_OFFTurns off Audio Feature
QK_AUDIO_TOGGLEAU_TOGGToggles Audio state
QK_AUDIO_CLICKY_TOGGLECK_TOGGToggles Audio clicky mode
QK_AUDIO_CLICKY_ONCK_ONTurns on Audio clicky mode
QK_AUDIO_CLICKY_OFFCK_OFFTurns on Audio clicky mode
QK_AUDIO_CLICKY_UPCK_UPIncreases frequency of the clicks
QK_AUDIO_CLICKY_DOWNCK_DOWNDecreases frequency of the clicks
QK_AUDIO_CLICKY_RESETCK_RSTResets frequency to default
QK_MUSIC_ONMU_ONTurns on Music Mode
QK_MUSIC_OFFMU_OFFTurns off Music Mode
QK_MUSIC_TOGGLEMU_TOGGToggles Music Mode
QK_MUSIC_MODE_NEXTMU_NEXTCycles through the music modes
QK_AUDIO_VOICE_NEXTAU_NEXTCycles through the audio voices
QK_AUDIO_VOICE_PREVIOUSAU_PREVCycles through the audio voices in reverse

Auto Shift

See also: Auto Shift

KeyAliasesDescription
QK_AUTO_SHIFT_DOWNAS_DOWNLower the Auto Shift timeout variable (down)
QK_AUTO_SHIFT_UPAS_UPRaise the Auto Shift timeout variable (up)
QK_AUTO_SHIFT_REPORTAS_RPTReport your current Auto Shift timeout value
QK_AUTO_SHIFT_ONAS_ONTurns on the Auto Shift Function
QK_AUTO_SHIFT_OFFAS_OFFTurns off the Auto Shift Function
QK_AUTO_SHIFT_TOGGLEAS_TOGGToggles the state of the Auto Shift feature

Autocorrect

See also: Autocorrect

KeyAliasesDescription
QK_AUTOCORRECT_ONAC_ONTurns on the Autocorrect feature.
QK_AUTOCORRECT_OFFAC_OFFTurns off the Autocorrect feature.
QK_AUTOCORRECT_TOGGLEAC_TOGGToggles the status of the Autocorrect feature.

Backlighting

See also: Backlighting

KeyAliasesDescription
QK_BACKLIGHT_TOGGLEBL_TOGGTurn the backlight on or off
QK_BACKLIGHT_STEPBL_STEPCycle through backlight levels
QK_BACKLIGHT_ONBL_ONSet the backlight to max brightness
QK_BACKLIGHT_OFFBL_OFFTurn the backlight off
QK_BACKLIGHT_UPBL_UPIncrease the backlight level
QK_BACKLIGHT_DOWNBL_DOWNDecrease the backlight level
QK_BACKLIGHT_TOGGLE_BREATHINGBL_BRTGToggle backlight breathing

Bluetooth

See also: Bluetooth

KeyAliasesDescription
QK_OUTPUT_AUTOOU_AUTOAutomatically switch between USB and Bluetooth
QK_OUTPUT_USBOU_USBUSB only
QK_OUTPUT_BLUETOOTHOU_BTBluetooth only

Caps Word

See also: Caps Word

KeyAliasesDescription
QK_CAPS_WORD_TOGGLECW_TOGGToggles Caps Word

Dynamic Macros

See also: Dynamic Macros

KeyAliasesDescription
QK_DYNAMIC_MACRO_RECORD_START_1DM_REC1Start recording Macro 1
QK_DYNAMIC_MACRO_RECORD_START_2DM_REC2Start recording Macro 2
QK_DYNAMIC_MACRO_PLAY_1DM_PLY1Replay Macro 1
QK_DYNAMIC_MACRO_PLAY_2DM_PLY2Replay Macro 2
QK_DYNAMIC_MACRO_RECORD_STOPDM_RSTPFinish the macro that is currently being recorded.

Grave Escape

See also: Grave Escape

KeyAliasesDescription
QK_GRAVE_ESCAPEQK_GESCEscape when pressed, ` when Shift or GUI are held

Joystick

See also: Joystick

KeyAliasesDescription
QK_JOYSTICK_BUTTON_0JS_0Button 0
QK_JOYSTICK_BUTTON_1JS_1Button 1
QK_JOYSTICK_BUTTON_2JS_2Button 2
QK_JOYSTICK_BUTTON_3JS_3Button 3
QK_JOYSTICK_BUTTON_4JS_4Button 4
QK_JOYSTICK_BUTTON_5JS_5Button 5
QK_JOYSTICK_BUTTON_6JS_6Button 6
QK_JOYSTICK_BUTTON_7JS_7Button 7
QK_JOYSTICK_BUTTON_8JS_8Button 8
QK_JOYSTICK_BUTTON_9JS_9Button 9
QK_JOYSTICK_BUTTON_10JS_10Button 10
QK_JOYSTICK_BUTTON_11JS_11Button 11
QK_JOYSTICK_BUTTON_12JS_12Button 12
QK_JOYSTICK_BUTTON_13JS_13Button 13
QK_JOYSTICK_BUTTON_14JS_14Button 14
QK_JOYSTICK_BUTTON_15JS_15Button 15
QK_JOYSTICK_BUTTON_16JS_16Button 16
QK_JOYSTICK_BUTTON_17JS_17Button 17
QK_JOYSTICK_BUTTON_18JS_18Button 18
QK_JOYSTICK_BUTTON_19JS_19Button 19
QK_JOYSTICK_BUTTON_20JS_20Button 20
QK_JOYSTICK_BUTTON_21JS_21Button 21
QK_JOYSTICK_BUTTON_22JS_22Button 22
QK_JOYSTICK_BUTTON_23JS_23Button 23
QK_JOYSTICK_BUTTON_24JS_24Button 24
QK_JOYSTICK_BUTTON_25JS_25Button 25
QK_JOYSTICK_BUTTON_26JS_26Button 26
QK_JOYSTICK_BUTTON_27JS_27Button 27
QK_JOYSTICK_BUTTON_28JS_28Button 28
QK_JOYSTICK_BUTTON_29JS_29Button 29
QK_JOYSTICK_BUTTON_30JS_30Button 30
QK_JOYSTICK_BUTTON_31JS_31Button 31

Key Lock

See also: Key Lock

KeyDescription
QK_LOCKHold down the next key pressed, until the key is pressed again

Layer Switching

See also: Layer Switching

KeyDescription
DF(layer)Set the base (default) layer
MO(layer)Momentarily turn on layer when pressed (requires KC_TRNS on destination layer)
OSL(layer)Momentarily activates layer until a key is pressed. See One Shot Keys for details.
LM(layer, mod)Momentarily turn on layer (like MO) with mod active as well. Where mod is a mods_bit. Mods can be viewed here. Example Implementation: LM(LAYER_1, MOD_LALT)
LT(layer, kc)Turn on layer when held, kc when tapped
TG(layer)Toggle layer on or off
TO(layer)Turns on layer and turns off all other layers, except the default layer
TT(layer)Normally acts like MO unless it's tapped multiple times, which toggles layer on

Leader Key

See also: Leader Key

KeyDescription
QK_LEADBegins a leader sequence

LED Matrix

See also: LED Matrix

KeyAliasesDescription
QK_LED_MATRIX_ONLM_ONTurn on LED Matrix
QK_LED_MATRIX_OFFLM_OFFTurn off LED Matrix
QK_LED_MATRIX_TOGGLELM_TOGGToggle LED Matrix on or off
QK_LED_MATRIX_MODE_NEXTLM_NEXTCycle through animations
QK_LED_MATRIX_MODE_PREVIOUSLM_PREVCycle through animations in reverse
QK_LED_MATRIX_BRIGHTNESS_UPLM_BRIUIncrease the brightness level
QK_LED_MATRIX_BRIGHTNESS_DOWNLM_BRIDDecrease the brightness level
QK_LED_MATRIX_SPEED_UPLM_SPDUIncrease the animation speed
QK_LED_MATRIX_SPEED_DOWNLM_SPDDDecrease the animation speed

Magic Keycodes

See also: Magic Keycodes

KeyAliasesDescription
QK_MAGIC_SWAP_CONTROL_CAPS_LOCKCL_SWAPSwap Caps Lock and Left Control
QK_MAGIC_UNSWAP_CONTROL_CAPS_LOCKCL_NORMUnswap Caps Lock and Left Control
QK_MAGIC_TOGGLE_CONTROL_CAPS_LOCKCL_TOGGToggle Caps Lock and Left Control swap
QK_MAGIC_CAPS_LOCK_AS_CONTROL_ONCL_CTRLTreat Caps Lock as Control
QK_MAGIC_CAPS_LOCK_AS_CONTROL_OFFCL_CAPSStop treating Caps Lock as Control
QK_MAGIC_SWAP_ESCAPE_CAPS_LOCKEC_SWAPSwap Caps Lock and Escape
QK_MAGIC_UNSWAP_ESCAPE_CAPS_LOCKEC_NORMUnswap Caps Lock and Escape
QK_MAGIC_TOGGLE_ESCAPE_CAPS_LOCKEC_TOGGToggle Caps Lock and Escape swap
QK_MAGIC_SWAP_LCTL_LGUICG_LSWPSwap Left Control and GUI
QK_MAGIC_UNSWAP_LCTL_LGUICG_LNRMUnswap Left Control and GUI
QK_MAGIC_SWAP_RCTL_RGUICG_RSWPSwap Right Control and GUI
QK_MAGIC_UNSWAP_RCTL_RGUICG_RNRMUnswap Right Control and GUI
QK_MAGIC_SWAP_CTL_GUICG_SWAPSwap Control and GUI on both sides
QK_MAGIC_UNSWAP_CTL_GUICG_NORMUnswap Control and GUI on both sides
QK_MAGIC_TOGGLE_CTL_GUICG_TOGGToggle Control and GUI swap on both sides
QK_MAGIC_SWAP_LALT_LGUIAG_LSWPSwap Left Alt and GUI
QK_MAGIC_UNSWAP_LALT_LGUIAG_LNRMUnswap Left Alt and GUI
QK_MAGIC_SWAP_RALT_RGUIAG_RSWPSwap Right Alt and GUI
QK_MAGIC_UNSWAP_RALT_RGUIAG_RNRMUnswap Right Alt and GUI
QK_MAGIC_SWAP_ALT_GUIAG_SWAPSwap Alt and GUI on both sides
QK_MAGIC_UNSWAP_ALT_GUIAG_NORMUnswap Alt and GUI on both sides
QK_MAGIC_TOGGLE_ALT_GUIAG_TOGGToggle Alt and GUI swap on both sides
QK_MAGIC_GUI_OFFGU_OFFDisable the GUI keys
QK_MAGIC_GUI_ONGU_ONEnable the GUI keys
QK_MAGIC_TOGGLE_GUIGU_TOGGToggles the status of the GUI keys
QK_MAGIC_SWAP_GRAVE_ESCGE_SWAPSwap ` and Escape
QK_MAGIC_UNSWAP_GRAVE_ESCGE_NORMUnswap ` and Escape
QK_MAGIC_SWAP_BACKSLASH_BACKSPACEBS_SWAPSwap \\ and Backspace
QK_MAGIC_UNSWAP_BACKSLASH_BACKSPACEBS_NORMUnswap \\ and Backspace
QK_MAGIC_TOGGLE_BACKSLASH_BACKSPACEBS_TOGGToggle \\ and Backspace swap state
QK_MAGIC_NKRO_ONNK_ONEnable N-key rollover
QK_MAGIC_NKRO_OFFNK_OFFDisable N-key rollover
QK_MAGIC_TOGGLE_NKRONK_TOGGToggle N-key rollover
QK_MAGIC_EE_HANDS_LEFTEH_LEFTSet the master half of a split keyboard as the left hand (for EE_HANDS)
QK_MAGIC_EE_HANDS_RIGHTEH_RGHTSet the master half of a split keyboard as the right hand (for EE_HANDS)

MIDI

See also: MIDI

KeyAliasesDescription
QK_MIDI_ONMI_ONTurn MIDI on
QK_MIDI_OFFMI_OFFTurn MIDI off
QK_MIDI_TOGGLEMI_TOGGToggle MIDI enabled
QK_MIDI_NOTE_C_0MI_CC octave 0
QK_MIDI_NOTE_C_SHARP_0MI_Cs, MI_DbC♯/D♭ octave 0
QK_MIDI_NOTE_D_0MI_DD octave 0
QK_MIDI_NOTE_D_SHARP_0MI_Ds, MI_EbD♯/E♭ octave 0
QK_MIDI_NOTE_E_0MI_EE octave 0
QK_MIDI_NOTE_F_0MI_FF octave 0
QK_MIDI_NOTE_F_SHARP_0MI_Fs, MI_GbF♯/G♭ octave 0
QK_MIDI_NOTE_G_0MI_GG octave 0
QK_MIDI_NOTE_G_SHARP_0MI_Gs, MI_AbG♯/A♭ octave 0
QK_MIDI_NOTE_A_0MI_AA octave 0
QK_MIDI_NOTE_A_SHARP_0MI_As, MI_BbA♯/B♭ octave 0
QK_MIDI_NOTE_B_0MI_BB octave 0
QK_MIDI_NOTE_C_1MI_C1C octave 1
QK_MIDI_NOTE_C_SHARP_1MI_Cs1, MI_Db1C♯/D♭ octave 1
QK_MIDI_NOTE_D_1MI_D1D octave 1
QK_MIDI_NOTE_D_SHARP_1MI_Ds1, MI_Eb1D♯/E♭ octave 1
QK_MIDI_NOTE_E_1MI_E1E octave 1
QK_MIDI_NOTE_F_1MI_F1F octave 1
QK_MIDI_NOTE_F_SHARP_1MI_Fs1, MI_Gb1F♯/G♭ octave 1
QK_MIDI_NOTE_G_1MI_G1G octave 1
QK_MIDI_NOTE_G_SHARP_1MI_Gs1, MI_Ab1G♯/A♭ octave 1
QK_MIDI_NOTE_A_1MI_A1A octave 1
QK_MIDI_NOTE_A_SHARP_1MI_As1, MI_Bb1A♯/B♭ octave 1
QK_MIDI_NOTE_B_1MI_B1B octave 1
QK_MIDI_NOTE_C_2MI_C2C octave 2
QK_MIDI_NOTE_C_SHARP_2MI_Cs2, MI_Db2C♯/D♭ octave 2
QK_MIDI_NOTE_D_2MI_D2D octave 2
QK_MIDI_NOTE_D_SHARP_2MI_Ds2, MI_Eb2D♯/E♭ octave 2
QK_MIDI_NOTE_E_2MI_E2E octave 2
QK_MIDI_NOTE_F_2MI_F2F octave 2
QK_MIDI_NOTE_F_SHARP_2MI_Fs2, MI_Gb2F♯/G♭ octave 2
QK_MIDI_NOTE_G_2MI_G2G octave 2
QK_MIDI_NOTE_G_SHARP_2MI_Gs2, MI_Ab2G♯/A♭ octave 2
QK_MIDI_NOTE_A_2MI_A2A octave 2
QK_MIDI_NOTE_A_SHARP_2MI_As2, MI_Bb2A♯/B♭ octave 2
QK_MIDI_NOTE_B_2MI_B2B octave 2
QK_MIDI_NOTE_C_3MI_C3C octave 3
QK_MIDI_NOTE_C_SHARP_3MI_Cs3, MI_Db3C♯/D♭ octave 3
QK_MIDI_NOTE_D_3MI_D3D octave 3
QK_MIDI_NOTE_D_SHARP_3MI_Ds3, MI_Eb3D♯/E♭ octave 3
QK_MIDI_NOTE_E_3MI_E3E octave 3
QK_MIDI_NOTE_F_3MI_F3F octave 3
QK_MIDI_NOTE_F_SHARP_3MI_Fs3, MI_Gb3F♯/G♭ octave 3
QK_MIDI_NOTE_G_3MI_G3G octave 3
QK_MIDI_NOTE_G_SHARP_3MI_Gs3, MI_Ab3G♯/A♭ octave 3
QK_MIDI_NOTE_A_3MI_A3A octave 3
QK_MIDI_NOTE_A_SHARP_3MI_As3, MI_Bb3A♯/B♭ octave 3
QK_MIDI_NOTE_B_3MI_B3B octave 3
QK_MIDI_NOTE_C_4MI_C4C octave 4
QK_MIDI_NOTE_C_SHARP_4MI_Cs4, MI_Db4C♯/D♭ octave 4
QK_MIDI_NOTE_D_4MI_D4D octave 4
QK_MIDI_NOTE_D_SHARP_4MI_Ds4, MI_Eb4D♯/E♭ octave 4
QK_MIDI_NOTE_E_4MI_E4E octave 4
QK_MIDI_NOTE_F_4MI_F4F octave 4
QK_MIDI_NOTE_F_SHARP_4MI_Fs4, MI_Gb4F♯/G♭ octave 4
QK_MIDI_NOTE_G_4MI_G4G octave 4
QK_MIDI_NOTE_G_SHARP_4MI_Gs4, MI_Ab4G♯/A♭ octave 4
QK_MIDI_NOTE_A_4MI_A4A octave 4
QK_MIDI_NOTE_A_SHARP_4MI_As4, MI_Bb4A♯/B♭ octave 4
QK_MIDI_NOTE_B_4MI_B4B octave 4
QK_MIDI_NOTE_C_5MI_C5C octave 5
QK_MIDI_NOTE_C_SHARP_5MI_Cs5, MI_Db5C♯/D♭ octave 5
QK_MIDI_NOTE_D_5MI_D5D octave 5
QK_MIDI_NOTE_D_SHARP_5MI_Ds5, MI_Eb5D♯/E♭ octave 5
QK_MIDI_NOTE_E_5MI_E5E octave 5
QK_MIDI_NOTE_F_5MI_F5F octave 5
QK_MIDI_NOTE_F_SHARP_5MI_Fs5, MI_Gb5F♯/G♭ octave 5
QK_MIDI_NOTE_G_5MI_G5G octave 5
QK_MIDI_NOTE_G_SHARP_5MI_Gs5, MI_Ab5G♯/A♭ octave 5
QK_MIDI_NOTE_A_5MI_A5A octave 5
QK_MIDI_NOTE_A_SHARP_5MI_As5, MI_Bb5A♯/B♭ octave 5
QK_MIDI_NOTE_B_5MI_B5B octave 5
QK_MIDI_OCTAVE_N2MI_OCN2Set octave to -2
QK_MIDI_OCTAVE_N1MI_OCN1Set octave to -1
QK_MIDI_OCTAVE_0MI_OC0Set octave to 0
QK_MIDI_OCTAVE_1MI_OC1Set octave to 1
QK_MIDI_OCTAVE_2MI_OC2Set octave to 2
QK_MIDI_OCTAVE_3MI_OC3Set octave to 3
QK_MIDI_OCTAVE_4MI_OC4Set octave to 4
QK_MIDI_OCTAVE_5MI_OC5Set octave to 5
QK_MIDI_OCTAVE_6MI_OC6Set octave to 6
QK_MIDI_OCTAVE_7MI_OC7Set octave to 7
QK_MIDI_OCTAVE_DOWNMI_OCTDMove down an octave
QK_MIDI_OCTAVE_UPMI_OCTUMove up an octave
QK_MIDI_TRANSPOSE_N6MI_TRN6Set transposition to -6 semitones
QK_MIDI_TRANSPOSE_N5MI_TRN5Set transposition to -5 semitones
QK_MIDI_TRANSPOSE_N4MI_TRN4Set transposition to -4 semitones
QK_MIDI_TRANSPOSE_N3MI_TRN3Set transposition to -3 semitones
QK_MIDI_TRANSPOSE_N2MI_TRN2Set transposition to -2 semitones
QK_MIDI_TRANSPOSE_N1MI_TRN1Set transposition to -1 semitone
QK_MIDI_TRANSPOSE_0MI_TR0No transposition
QK_MIDI_TRANSPOSE_1MI_TR1Set transposition to +1 semitone
QK_MIDI_TRANSPOSE_2MI_TR2Set transposition to +2 semitones
QK_MIDI_TRANSPOSE_3MI_TR3Set transposition to +3 semitones
QK_MIDI_TRANSPOSE_4MI_TR4Set transposition to +4 semitones
QK_MIDI_TRANSPOSE_5MI_TR5Set transposition to +5 semitones
QK_MIDI_TRANSPOSE_6MI_TR6Set transposition to +6 semitones
QK_MIDI_TRANSPOSE_DOWNMI_TRSDDecrease transposition
QK_MIDI_TRANSPOSE_UPMI_TRSUIncrease transposition
QK_MIDI_VELOCITY_0MI_VL0Set velocity to 0
QK_MIDI_VELOCITY_1MI_VL1Set velocity to 12
QK_MIDI_VELOCITY_2MI_VL2Set velocity to 25
QK_MIDI_VELOCITY_3MI_VL3Set velocity to 38
QK_MIDI_VELOCITY_4MI_VL4Set velocity to 51
QK_MIDI_VELOCITY_5MI_VL5Set velocity to 64
QK_MIDI_VELOCITY_6MI_VL6Set velocity to 76
QK_MIDI_VELOCITY_7MI_VL7Set velocity to 89
QK_MIDI_VELOCITY_8MI_VL8Set velocity to 102
QK_MIDI_VELOCITY_9MI_VL9Set velocity to 114
QK_MIDI_VELOCITY_10MI_VL10Set velocity to 127
QK_MIDI_VELOCITY_DOWNMI_VELDDecrease velocity
QK_MIDI_VELOCITY_UPMI_VELUIncrease velocity
QK_MIDI_CHANNEL_1MI_CH1Set channel to 1
QK_MIDI_CHANNEL_2MI_CH2Set channel to 2
QK_MIDI_CHANNEL_3MI_CH3Set channel to 3
QK_MIDI_CHANNEL_4MI_CH4Set channel to 4
QK_MIDI_CHANNEL_5MI_CH5Set channel to 5
QK_MIDI_CHANNEL_6MI_CH6Set channel to 6
QK_MIDI_CHANNEL_7MI_CH7Set channel to 7
QK_MIDI_CHANNEL_8MI_CH8Set channel to 8
QK_MIDI_CHANNEL_9MI_CH9Set channel to 9
QK_MIDI_CHANNEL_10MI_CH10Set channel to 10
QK_MIDI_CHANNEL_11MI_CH11Set channel to 11
QK_MIDI_CHANNEL_12MI_CH12Set channel to 12
QK_MIDI_CHANNEL_13MI_CH13Set channel to 13
QK_MIDI_CHANNEL_14MI_CH14Set channel to 14
QK_MIDI_CHANNEL_15MI_CH15Set channel to 15
QK_MIDI_CHANNEL_16MI_CH16Set channel to 16
QK_MIDI_CHANNEL_DOWNMI_CHNDDecrease channel
QK_MIDI_CHANNEL_UPMI_CHNUIncrease channel
QK_MIDI_ALL_NOTES_OFFMI_AOFFStop all notes
QK_MIDI_SUSTAINMI_SUSTSustain
QK_MIDI_PORTAMENTOMI_PORTPortmento
QK_MIDI_SOSTENUTOMI_SOSTSostenuto
QK_MIDI_SOFTMI_SOFTSoft Pedal
QK_MIDI_LEGATOMI_LEGLegato
QK_MIDI_MODULATIONMI_MODModulation
QK_MIDI_MODULATION_SPEED_DOWNMI_MODDDecrease modulation speed
QK_MIDI_MODULATION_SPEED_UPMI_MODUIncrease modulation speed
QK_MIDI_PITCH_BEND_DOWNMI_BNDDBend pitch down
QK_MIDI_PITCH_BEND_UPMI_BNDUBend pitch up

Mouse Keys

See also: Mouse Keys

KeyAliasesDescription
QK_MOUSE_CURSOR_UPMS_UPMouse cursor up
QK_MOUSE_CURSOR_DOWNMS_DOWNMouse cursor down
QK_MOUSE_CURSOR_LEFTMS_LEFTMouse cursor left
QK_MOUSE_CURSOR_RIGHTMS_RGHTMouse cursor right
QK_MOUSE_BUTTON_1MS_BTN1Mouse button 1
QK_MOUSE_BUTTON_2MS_BTN2Mouse button 2
QK_MOUSE_BUTTON_3MS_BTN3Mouse button 3
QK_MOUSE_BUTTON_4MS_BTN4Mouse button 4
QK_MOUSE_BUTTON_5MS_BTN5Mouse button 5
QK_MOUSE_BUTTON_6MS_BTN6Mouse button 6
QK_MOUSE_BUTTON_7MS_BTN7Mouse button 7
QK_MOUSE_BUTTON_8MS_BTN8Mouse button 8
QK_MOUSE_WHEEL_UPMS_WHLUMouse wheel up
QK_MOUSE_WHEEL_DOWNMS_WHLDMouse wheel down
QK_MOUSE_WHEEL_LEFTMS_WHLLMouse wheel left
QK_MOUSE_WHEEL_RIGHTMS_WHLRMouse wheel right
QK_MOUSE_ACCELERATION_0MS_ACL0Set mouse acceleration to 0
QK_MOUSE_ACCELERATION_1MS_ACL1Set mouse acceleration to 1
QK_MOUSE_ACCELERATION_2MS_ACL2Set mouse acceleration to 2

Modifiers

See also: Modifier Keys

KeyAliasesDescription
LCTL(kc)C(kc)Hold Left Control and press kc
LSFT(kc)S(kc)Hold Left Shift and press kc
LALT(kc)A(kc), LOPT(kc)Hold Left Alt and press kc
LGUI(kc)G(kc), LCMD(kc), LWIN(kc)Hold Left GUI and press kc
RCTL(kc)Hold Right Control and press kc
RSFT(kc)Hold Right Shift and press kc
RALT(kc)ROPT(kc), ALGR(kc)Hold Right Alt (AltGr) and press kc
RGUI(kc)RCMD(kc), RWIN(kc)Hold Right GUI and press kc
LSG(kc)SGUI(kc), SCMD(kc), SWIN(kc)Hold Left Shift and Left GUI and press kc
LAG(kc)Hold Left Alt and Left GUI and press kc
RSG(kc)Hold Right Shift and Right GUI and press kc
RAG(kc)Hold Right Alt and Right GUI and press kc
LCA(kc)Hold Left Control and Alt and press kc
LSA(kc)Hold Left Shift and Left Alt and press kc
RSA(kc)SAGR(kc)Hold Right Shift and Right Alt (AltGr) and press kc
RCS(kc)Hold Right Control and Right Shift and press kc
LCAG(kc)Hold Left Control, Alt and GUI and press kc
MEH(kc)Hold Left Control, Shift and Alt and press kc
HYPR(kc)Hold Left Control, Shift, Alt and GUI and press kc
KC_MEHLeft Control, Shift and Alt
KC_HYPRLeft Control, Shift, Alt and GUI

Mod-Tap Keys

See also: Mod-Tap

KeyAliasesDescription
MT(mod, kc)mod when held, kc when tapped
LCTL_T(kc)CTL_T(kc)Left Control when held, kc when tapped
LSFT_T(kc)SFT_T(kc)Left Shift when held, kc when tapped
LALT_T(kc)LOPT_T(kc), ALT_T(kc), OPT_T(kc)Left Alt when held, kc when tapped
LGUI_T(kc)LCMD_T(kc), LWIN_T(kc), GUI_T(kc), CMD_T(kc), WIN_T(kc)Left GUI when held, kc when tapped
RCTL_T(kc)Right Control when held, kc when tapped
RSFT_T(kc)Right Shift when held, kc when tapped
RALT_T(kc)ROPT_T(kc), ALGR_T(kc)Right Alt (AltGr) when held, kc when tapped
RGUI_T(kc)RCMD_T(kc), RWIN_T(kc)Right GUI when held, kc when tapped
LSG_T(kc)SGUI_T(kc), SCMD_T(kc), SWIN_T(kc)Left Shift and GUI when held, kc when tapped
LAG_T(kc)Left Alt and GUI when held, kc when tapped
RSG_T(kc)Right Shift and GUI when held, kc when tapped
RAG_T(kc)Right Alt and GUI when held, kc when tapped
LCA_T(kc)Left Control and Alt when held, kc when tapped
LSA_T(kc)Left Shift and Left Alt when held, kc when tapped
RSA_T(kc)SAGR_T(kc)Right Shift and Right Alt (AltGr) when held, kc when tapped
RCS_T(kc)Right Control and Right Shift when held, kc when tapped
LCAG_T(kc)Left Control, Alt and GUI when held, kc when tapped
RCAG_T(kc)Right Control, Alt and GUI when held, kc when tapped
C_S_T(kc)Left Control and Shift when held, kc when tapped
MEH_T(kc)Left Control, Shift and Alt when held, kc when tapped
HYPR_T(kc)ALL_T(kc)Left Control, Shift, Alt and GUI when held, kc when tapped - more info here

Tapping Term Keys

See also: Dynamic Tapping Term

KeyAliasesDescription
QK_DYNAMIC_TAPPING_TERM_PRINTDT_PRNTTypes the current tapping term, in milliseconds
QK_DYNAMIC_TAPPING_TERM_UPDT_UPIncreases the current tapping term by DYNAMIC_TAPPING_TERM_INCREMENTms (5ms by default)
QK_DYNAMIC_TAPPING_TERM_DOWNDT_DOWNDecreases the current tapping term by DYNAMIC_TAPPING_TERM_INCREMENTms (5ms by default)

RGB Lighting

See also: RGB Lighting

KeyAliasesDescription
QK_UNDERGLOW_TOGGLEUG_TOGGToggle RGB lighting on or off
QK_UNDERGLOW_MODE_NEXTUG_NEXTCycle through modes, reverse direction when Shift is held
QK_UNDERGLOW_MODE_PREVIOUSUG_PREVCycle through modes in reverse, forward direction when Shift is held
QK_UNDERGLOW_HUE_UPUG_HUEUIncrease hue, decrease hue when Shift is held
QK_UNDERGLOW_HUE_DOWNUG_HUEDDecrease hue, increase hue when Shift is held
QK_UNDERGLOW_SATURATION_UPUG_SATUIncrease saturation, decrease saturation when Shift is held
QK_UNDERGLOW_SATURATION_DOWNUG_SATDDecrease saturation, increase saturation when Shift is held
QK_UNDERGLOW_VALUE_UPUG_VALUIncrease value (brightness), decrease value when Shift is held
QK_UNDERGLOW_VALUE_DOWNUG_VALDDecrease value (brightness), increase value when Shift is held
QK_UNDERGLOW_SPEED_UPUG_SPDUIncrease effect speed (brightness), decrease speed when Shift is held
QK_UNDERGLOW_SPEED_DOWNUG_SPDDDecrease effect speed (brightness), increase speed when Shift is held
RGB_MODE_PLAINRGB_M_P Static (no animation) mode (deprecated)
RGB_MODE_BREATHERGB_M_BBreathing animation mode (deprecated)
RGB_MODE_RAINBOWRGB_M_RRainbow animation mode (deprecated)
RGB_MODE_SWIRLRGB_M_SWSwirl animation mode (deprecated)
RGB_MODE_SNAKERGB_M_SNSnake animation mode (deprecated)
RGB_MODE_KNIGHTRGB_M_K"Knight Rider" animation mode (deprecated)
RGB_MODE_XMASRGB_M_XChristmas animation mode (deprecated)
RGB_MODE_GRADIENTRGB_M_GStatic gradient animation mode (deprecated)
RGB_MODE_RGBTESTRGB_M_TRed, Green, Blue test animation mode (deprecated)
RGB_MODE_TWINKLERGB_M_TWTwinkle animation mode (deprecated)

RGB Matrix Lighting

See also: RGB Matrix Lighting

KeyAliasesDescription
RGB_TOGToggle RGB lighting on or off
RGB_MODE_FORWARDRGB_MODCycle through modes, reverse direction when Shift is held
RGB_MODE_REVERSERGB_RMODCycle through modes in reverse, forward direction when Shift is held
RGB_HUIIncrease hue, decrease hue when Shift is held
RGB_HUDDecrease hue, increase hue when Shift is held
RGB_SAIIncrease saturation, decrease saturation when Shift is held
RGB_SADDecrease saturation, increase saturation when Shift is held
RGB_VAIIncrease value (brightness), decrease value when Shift is held
RGB_VADDecrease value (brightness), increase value when Shift is held
RGB_SPIIncrease effect speed (does not support eeprom yet), decrease speed when Shift is held
RGB_SPDDecrease effect speed (does not support eeprom yet), increase speed when Shift is held

US ANSI Shifted Symbols

See also: US ANSI Shifted Symbols

KeyAliasesDescription
KC_TILDEKC_TILD~
KC_EXCLAIMKC_EXLM!
KC_AT@
KC_HASH#
KC_DOLLARKC_DLR$
KC_PERCENTKC_PERC%
KC_CIRCUMFLEXKC_CIRC^
KC_AMPERSANDKC_AMPR&
KC_ASTERISKKC_ASTR*
KC_LEFT_PARENKC_LPRN(
KC_RIGHT_PARENKC_RPRN)
KC_UNDERSCOREKC_UNDS_
KC_PLUS+
KC_LEFT_CURLY_BRACEKC_LCBR{
KC_RIGHT_CURLY_BRACEKC_RCBR}
KC_PIPE|
KC_COLONKC_COLN:
KC_DOUBLE_QUOTEKC_DQUO, KC_DQT"
KC_LEFT_ANGLE_BRACKETKC_LABK, KC_LT<
KC_RIGHT_ANGLE_BRACKETKC_RABK, KC_GT>
KC_QUESTIONKC_QUES?

One Shot Keys

See also: One Shot Keys

KeyAliasesDescription
OSM(mod)Hold mod for one keypress
OSL(layer)Switch to layer for one keypress
QK_ONE_SHOT_TOGGLEOS_TOGGToggles One Shot keys status
QK_ONE_SHOT_ONOS_ONTurns One Shot keys on
QK_ONE_SHOT_OFFOS_OFFTurns One Shot keys off

Programmable Button Support

See also: Programmable Button

KeyAliasesDescription
QK_PROGRAMMABLE_BUTTON_1PB_1Programmable button 1
QK_PROGRAMMABLE_BUTTON_2PB_2Programmable button 2
QK_PROGRAMMABLE_BUTTON_3PB_3Programmable button 3
QK_PROGRAMMABLE_BUTTON_4PB_4Programmable button 4
QK_PROGRAMMABLE_BUTTON_5PB_5Programmable button 5
QK_PROGRAMMABLE_BUTTON_6PB_6Programmable button 6
QK_PROGRAMMABLE_BUTTON_7PB_7Programmable button 7
QK_PROGRAMMABLE_BUTTON_8PB_8Programmable button 8
QK_PROGRAMMABLE_BUTTON_9PB_9Programmable button 9
QK_PROGRAMMABLE_BUTTON_10PB_10Programmable button 10
QK_PROGRAMMABLE_BUTTON_11PB_11Programmable button 11
QK_PROGRAMMABLE_BUTTON_12PB_12Programmable button 12
QK_PROGRAMMABLE_BUTTON_13PB_13Programmable button 13
QK_PROGRAMMABLE_BUTTON_14PB_14Programmable button 14
QK_PROGRAMMABLE_BUTTON_15PB_15Programmable button 15
QK_PROGRAMMABLE_BUTTON_16PB_16Programmable button 16
QK_PROGRAMMABLE_BUTTON_17PB_17Programmable button 17
QK_PROGRAMMABLE_BUTTON_18PB_18Programmable button 18
QK_PROGRAMMABLE_BUTTON_19PB_19Programmable button 19
QK_PROGRAMMABLE_BUTTON_20PB_20Programmable button 20
QK_PROGRAMMABLE_BUTTON_21PB_21Programmable button 21
QK_PROGRAMMABLE_BUTTON_22PB_22Programmable button 22
QK_PROGRAMMABLE_BUTTON_23PB_23Programmable button 23
QK_PROGRAMMABLE_BUTTON_24PB_24Programmable button 24
QK_PROGRAMMABLE_BUTTON_25PB_25Programmable button 25
QK_PROGRAMMABLE_BUTTON_26PB_26Programmable button 26
QK_PROGRAMMABLE_BUTTON_27PB_27Programmable button 27
QK_PROGRAMMABLE_BUTTON_28PB_28Programmable button 28
QK_PROGRAMMABLE_BUTTON_29PB_29Programmable button 29
QK_PROGRAMMABLE_BUTTON_30PB_30Programmable button 30
QK_PROGRAMMABLE_BUTTON_31PB_31Programmable button 31
QK_PROGRAMMABLE_BUTTON_32PB_32Programmable button 32

Repeat Key

See also: Repeat Key

KeycodeAliasesDescription
QK_REPEAT_KEYQK_REPRepeat the last pressed key
QK_ALT_REPEAT_KEYQK_AREPPerform alternate of the last key

Space Cadet

See also: Space Cadet

KeyAliasesDescription
QK_SPACE_CADET_LEFT_CTRL_PARENTHESIS_OPENSC_LCPOLeft Control when held, ( when tapped
QK_SPACE_CADET_RIGHT_CTRL_PARENTHESIS_CLOSESC_RCPCRight Control when held, ) when tapped
QK_SPACE_CADET_LEFT_SHIFT_PARENTHESIS_OPENSC_LSPOLeft Shift when held, ( when tapped
QK_SPACE_CADET_RIGHT_SHIFT_PARENTHESIS_CLOSESC_RSPCRight Shift when held, ) when tapped
QK_SPACE_CADET_LEFT_ALT_PARENTHESIS_OPENSC_LAPOLeft Alt when held, ( when tapped
QK_SPACE_CADET_RIGHT_ALT_PARENTHESIS_CLOSESC_RAPCRight Alt when held, ) when tapped
QK_SPACE_CADET_RIGHT_SHIFT_ENTERSC_SENTRight Shift when held, Enter when tapped

Swap Hands

See also: Swap Hands

KeyAliasesDescription
SH_T(kc)Momentary swap when held, kc when tapped
QK_SWAP_HANDS_ONSH_ONTurn on hand swap
QK_SWAP_HANDS_OFFSH_OFFTurn off hand swap
QK_SWAP_HANDS_MOMENTARY_ONSH_MONTurn on hand swap while held
QK_SWAP_HANDS_MOMENTARY_OFFSH_MOFFTurn off hand swap while held
QK_SWAP_HANDS_TOGGLESH_TOGGToggle hand swap
QK_SWAP_HANDS_TAP_TOGGLESH_TTMomentary swap when held, toggle when tapped
QK_SWAP_HANDS_ONE_SHOTSH_OSTurn on hand swap while held or until next key press

Unicode Support

See also: Unicode Support

KeyAliasesDescription
UC(c)Send Unicode code point c, up to 0x7FFF
UM(i)Send Unicode code point at index i in unicode_map
UP(i, j)Send Unicode code point at index i, or j if Shift/Caps is on
QK_UNICODE_MODE_NEXTUC_NEXTCycle through selected input modes
QK_UNICODE_MODE_PREVIOUSUC_PREVCycle through selected input modes in reverse
QK_UNICODE_MODE_MACOSUC_MACSwitch to macOS input
QK_UNICODE_MODE_LINUXUC_LINXSwitch to Linux input
QK_UNICODE_MODE_WINDOWSUC_WINSwitch to Windows input
QK_UNICODE_MODE_BSDUC_BSDSwitch to BSD input (not implemented)
QK_UNICODE_MODE_WINCOMPOSEUC_WINCSwitch to Windows input using WinCompose
QK_UNICODE_MODE_EMACSUC_EMACSwitch to emacs (C-x-8 RET)
', 94); diff --git a/assets/keycodes.md.CDjPwWHi.lean.js b/assets/keycodes.md.W0MSIHjb.lean.js similarity index 91% rename from assets/keycodes.md.CDjPwWHi.lean.js rename to assets/keycodes.md.W0MSIHjb.lean.js index 701dd94a654..30e03a9b91a 100644 --- a/assets/keycodes.md.CDjPwWHi.lean.js +++ b/assets/keycodes.md.W0MSIHjb.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Keycodes Overview","description":"","frontmatter":{},"headers":[],"relativePath":"keycodes.md","filePath":"keycodes.md"}'); const _sfc_main = { name: "keycodes.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 94); diff --git a/assets/keycodes_basic.md.CHIeCvwn.js b/assets/keycodes_basic.md.B_iSDgm4.js similarity index 99% rename from assets/keycodes_basic.md.CHIeCvwn.js rename to assets/keycodes_basic.md.B_iSDgm4.js index e35379d5134..4dcfba5fa55 100644 --- a/assets/keycodes_basic.md.CHIeCvwn.js +++ b/assets/keycodes_basic.md.B_iSDgm4.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Basic Keycodes","description":"","frontmatter":{},"headers":[],"relativePath":"keycodes_basic.md","filePath":"keycodes_basic.md"}'); const _sfc_main = { name: "keycodes_basic.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Basic Keycodes

The basic set of keycodes are based on the HID Keyboard/Keypad Usage Page (0x07) with the exception of KC_NO, KC_TRNS and keycodes in the 0xA5-DF range. See below for more details.

Letters and Numbers

KeyDescription
KC_Aa and A
KC_Bb and B
KC_Cc and C
KC_Dd and D
KC_Ee and E
KC_Ff and F
KC_Gg and G
KC_Hh and H
KC_Ii and I
KC_Jj and J
KC_Kk and K
KC_Ll and L
KC_Mm and M
KC_Nn and N
KC_Oo and O
KC_Pp and P
KC_Qq and Q
KC_Rr and R
KC_Ss and S
KC_Tt and T
KC_Uu and U
KC_Vv and V
KC_Ww and W
KC_Xx and X
KC_Yy and Y
KC_Zz and Z
KC_11 and !
KC_22 and @
KC_33 and #
KC_44 and $
KC_55 and %
KC_66 and ^
KC_77 and &
KC_88 and *
KC_99 and (
KC_00 and )

F Keys

KeyDescription
KC_F1F1
KC_F2F2
KC_F3F3
KC_F4F4
KC_F5F5
KC_F6F6
KC_F7F7
KC_F8F8
KC_F9F9
KC_F10F10
KC_F11F11
KC_F12F12
KC_F13F13
KC_F14F14
KC_F15F15
KC_F16F16
KC_F17F17
KC_F18F18
KC_F19F19
KC_F20F20
KC_F21F21
KC_F22F22
KC_F23F23
KC_F24F24

Punctuation

KeyAliasesDescription
KC_ENTERKC_ENTReturn (Enter)
KC_ESCAPEKC_ESCEscape
KC_BACKSPACEKC_BSPCDelete (Backspace)
KC_TABTab
KC_SPACEKC_SPCSpacebar
KC_MINUSKC_MINS- and _
KC_EQUALKC_EQL= and +
KC_LEFT_BRACKETKC_LBRC[ and {
KC_RIGHT_BRACKETKC_RBRC] and }
KC_BACKSLASHKC_BSLS\\ and |
KC_NONUS_HASHKC_NUHSNon-US # and ~
KC_SEMICOLONKC_SCLN; and :
KC_QUOTEKC_QUOT' and "
KC_GRAVEKC_GRV` and ~
KC_COMMAKC_COMM, and <
KC_DOT. and >
KC_SLASHKC_SLSH/ and ?
KC_NONUS_BACKSLASHKC_NUBSNon-US \\ and |

Lock Keys

KeyAliasesDescription
KC_CAPS_LOCKKC_CAPSCaps Lock
KC_SCROLL_LOCKKC_SCRL, KC_BRMDScroll Lock, Brightness Down (macOS)
KC_NUM_LOCKKC_NUMKeypad Num Lock and Clear
KC_LOCKING_CAPS_LOCKKC_LCAPLocking Caps Lock
KC_LOCKING_NUM_LOCKKC_LNUMLocking Num Lock
KC_LOCKING_SCROLL_LOCKKC_LSCRLocking Scroll Lock

Modifiers

KeyAliasesDescription
KC_LEFT_CTRLKC_LCTLLeft Control
KC_LEFT_SHIFTKC_LSFTLeft Shift
KC_LEFT_ALTKC_LALT, KC_LOPTLeft Alt (Option)
KC_LEFT_GUIKC_LGUI, KC_LCMD, KC_LWINLeft GUI (Windows/Command/Meta key)
KC_RIGHT_CTRLKC_RCTLRight Control
KC_RIGHT_SHIFTKC_RSFTRight Shift
KC_RIGHT_ALTKC_RALT, KC_ROPT, KC_ALGRRight Alt (Option/AltGr)
KC_RIGHT_GUIKC_RGUI, KC_RCMD, KC_RWINRight GUI (Windows/Command/Meta key)

International

KeyAliasesDescription
KC_INTERNATIONAL_1KC_INT1JIS \\ and _
KC_INTERNATIONAL_2KC_INT2JIS Katakana/Hiragana
KC_INTERNATIONAL_3KC_INT3JIS ¥ and |
KC_INTERNATIONAL_4KC_INT4JIS Henkan
KC_INTERNATIONAL_5KC_INT5JIS Muhenkan
KC_INTERNATIONAL_6KC_INT6JIS Numpad ,
KC_INTERNATIONAL_7KC_INT7International 7
KC_INTERNATIONAL_8KC_INT8International 8
KC_INTERNATIONAL_9KC_INT9International 9
KC_LANGUAGE_1KC_LNG1Hangul/English
KC_LANGUAGE_2KC_LNG2Hanja
KC_LANGUAGE_3KC_LNG3JIS Katakana
KC_LANGUAGE_4KC_LNG4JIS Hiragana
KC_LANGUAGE_5KC_LNG5JIS Zenkaku/Hankaku
KC_LANGUAGE_6KC_LNG6Language 6
KC_LANGUAGE_7KC_LNG7Language 7
KC_LANGUAGE_8KC_LNG8Language 8
KC_LANGUAGE_9KC_LNG9Language 9

Commands

KeyAliasesDescription
KC_PRINT_SCREENKC_PSCRPrint Screen
KC_PAUSEKC_PAUS, KC_BRK, KC_BRMUPause, Brightness Up (macOS)
KC_INSERTKC_INSInsert
KC_HOMEHome
KC_PAGE_UPKC_PGUPPage Up
KC_DELETEKC_DELForward Delete
KC_ENDEnd
KC_PAGE_DOWNKC_PGDNPage Down
KC_RIGHTKC_RGHTRight Arrow
KC_LEFTLeft Arrow
KC_DOWNDown Arrow
KC_UPUp Arrow
KC_APPLICATIONKC_APPApplication (Windows Context Menu Key)
KC_KB_POWERSystem Power
KC_EXECUTEKC_EXECExecute
KC_HELPHelp
KC_MENUMenu
KC_SELECTKC_SLCTSelect
KC_STOPStop
KC_AGAINKC_AGINAgain
KC_UNDOUndo
KC_CUTCut
KC_COPYCopy
KC_PASTEKC_PSTEPaste
KC_FINDFind
KC_KB_MUTEMute
KC_KB_VOLUME_UPVolume Up
KC_KB_VOLUME_DOWNVolume Down
KC_ALTERNATE_ERASEKC_ERASAlternate Erase
KC_SYSTEM_REQUESTKC_SYRQSysReq/Attention
KC_CANCELKC_CNCLCancel
KC_CLEARKC_CLRClear
KC_PRIORKC_PRIRPrior
KC_RETURNKC_RETNReturn
KC_SEPARATORKC_SEPRSeparator
KC_OUTOut
KC_OPEROper
KC_CLEAR_AGAINKC_CLAGClear/Again
KC_CRSELKC_CRSLCrSel/Props
KC_EXSELKC_EXSLExSel

Media Keys

These keycodes are not part of the Keyboard/Keypad usage page. The SYSTEM_ keycodes are found in the Generic Desktop page, and the rest are located in the Consumer page.

TIP

Some of these keycodes may behave differently depending on the OS. For example, on macOS, the keycodes KC_MEDIA_FAST_FORWARD, KC_MEDIA_REWIND, KC_MEDIA_NEXT_TRACK and KC_MEDIA_PREV_TRACK skip within the current track when held, but skip the entire track when tapped.

KeyAliasesDescription
KC_SYSTEM_POWERKC_PWRSystem Power Down
KC_SYSTEM_SLEEPKC_SLEPSystem Sleep
KC_SYSTEM_WAKEKC_WAKESystem Wake
KC_AUDIO_MUTEKC_MUTEMute
KC_AUDIO_VOL_UPKC_VOLUVolume Up
KC_AUDIO_VOL_DOWNKC_VOLDVolume Down
KC_MEDIA_NEXT_TRACKKC_MNXTNext Track
KC_MEDIA_PREV_TRACKKC_MPRVPrevious Track
KC_MEDIA_STOPKC_MSTPStop Track
KC_MEDIA_PLAY_PAUSEKC_MPLYPlay/Pause Track
KC_MEDIA_SELECTKC_MSELLaunch Media Player
KC_MEDIA_EJECTKC_EJCTEject
KC_MAILLaunch Mail
KC_CALCULATORKC_CALCLaunch Calculator
KC_MY_COMPUTERKC_MYCMLaunch My Computer
KC_WWW_SEARCHKC_WSCHBrowser Search
KC_WWW_HOMEKC_WHOMBrowser Home
KC_WWW_BACKKC_WBAKBrowser Back
KC_WWW_FORWARDKC_WFWDBrowser Forward
KC_WWW_STOPKC_WSTPBrowser Stop
KC_WWW_REFRESHKC_WREFBrowser Refresh
KC_WWW_FAVORITESKC_WFAVBrowser Favorites
KC_MEDIA_FAST_FORWARDKC_MFFDNext Track
KC_MEDIA_REWINDKC_MRWDPrevious Track
KC_BRIGHTNESS_UPKC_BRIUBrightness Up
KC_BRIGHTNESS_DOWNKC_BRIDBrightness Down
KC_CONTROL_PANELKC_CPNLOpen Control Panel
KC_ASSISTANTKC_ASSTLaunch Assistant
KC_MISSION_CONTROLKC_MCTLOpen Mission Control
KC_LAUNCHPADKC_LPADOpen Launchpad

Number Pad

KeyAliasesDescription
KC_KP_SLASHKC_PSLSKeypad /
KC_KP_ASTERISKKC_PASTKeypad *
KC_KP_MINUSKC_PMNSKeypad -
KC_KP_PLUSKC_PPLSKeypad +
KC_KP_ENTERKC_PENTKeypad Enter
KC_KP_1KC_P1Keypad 1 and End
KC_KP_2KC_P2Keypad 2 and Down Arrow
KC_KP_3KC_P3Keypad 3 and Page Down
KC_KP_4KC_P4Keypad 4 and Left Arrow
KC_KP_5KC_P5Keypad 5
KC_KP_6KC_P6Keypad 6 and Right Arrow
KC_KP_7KC_P7Keypad 7 and Home
KC_KP_8KC_P8Keypad 8 and Up Arrow
KC_KP_9KC_P9Keypad 9 and Page Up
KC_KP_0KC_P0Keypad 0 and Insert
KC_KP_DOTKC_PDOTKeypad . and Delete
KC_KP_EQUALKC_PEQLKeypad =
KC_KP_COMMAKC_PCMMKeypad ,
KC_KP_EQUAL_AS400Keypad = on AS/400 keyboards

Special Keys

In addition to these, keycodes in the range of 0xA5-DF are reserved for internal use.

KeyAliasesDescription
KC_NOXXXXXXXIgnore this key (NOOP)
KC_TRANSPARENTKC_TRNS, _______Use the next lowest non-transparent key
', 25); diff --git a/assets/keycodes_basic.md.CHIeCvwn.lean.js b/assets/keycodes_basic.md.B_iSDgm4.lean.js similarity index 91% rename from assets/keycodes_basic.md.CHIeCvwn.lean.js rename to assets/keycodes_basic.md.B_iSDgm4.lean.js index c133b138047..6ccfe39925d 100644 --- a/assets/keycodes_basic.md.CHIeCvwn.lean.js +++ b/assets/keycodes_basic.md.B_iSDgm4.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Basic Keycodes","description":"","frontmatter":{},"headers":[],"relativePath":"keycodes_basic.md","filePath":"keycodes_basic.md"}'); const _sfc_main = { name: "keycodes_basic.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 25); diff --git a/assets/keycodes_magic.md.CGO3hgMm.js b/assets/keycodes_magic.md.LOQRAy94.js similarity index 98% rename from assets/keycodes_magic.md.CGO3hgMm.js rename to assets/keycodes_magic.md.LOQRAy94.js index e346f225302..f3033a0be54 100644 --- a/assets/keycodes_magic.md.CGO3hgMm.js +++ b/assets/keycodes_magic.md.LOQRAy94.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Magic Keycodes","description":"","frontmatter":{},"headers":[],"relativePath":"keycodes_magic.md","filePath":"keycodes_magic.md"}'); const _sfc_main = { name: "keycodes_magic.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Magic Keycodes

Magic Keycodes are prefixed with MAGIC_, and allow you to access the functionality of the deprecated Bootmagic feature after your keyboard has initialized. To use the keycodes, assign them to your keymap as you would any other keycode.

KeyAliasesDescription
QK_MAGIC_SWAP_CONTROL_CAPS_LOCKCL_SWAPSwap Caps Lock and Left Control
QK_MAGIC_UNSWAP_CONTROL_CAPS_LOCKCL_NORMUnswap Caps Lock and Left Control
QK_MAGIC_TOGGLE_CONTROL_CAPS_LOCKCL_TOGGToggle Caps Lock and Left Control swap
QK_MAGIC_CAPS_LOCK_AS_CONTROL_ONCL_CTRLTreat Caps Lock as Control
QK_MAGIC_CAPS_LOCK_AS_CONTROL_OFFCL_CAPSStop treating Caps Lock as Control
QK_MAGIC_SWAP_ESCAPE_CAPS_LOCKEC_SWAPSwap Caps Lock and Escape
QK_MAGIC_UNSWAP_ESCAPE_CAPS_LOCKEC_NORMUnswap Caps Lock and Escape
QK_MAGIC_TOGGLE_ESCAPE_CAPS_LOCKEC_TOGGToggle Caps Lock and Escape swap
QK_MAGIC_SWAP_LCTL_LGUICG_LSWPSwap Left Control and GUI
QK_MAGIC_UNSWAP_LCTL_LGUICG_LNRMUnswap Left Control and GUI
QK_MAGIC_SWAP_RCTL_RGUICG_RSWPSwap Right Control and GUI
QK_MAGIC_UNSWAP_RCTL_RGUICG_RNRMUnswap Right Control and GUI
QK_MAGIC_SWAP_CTL_GUICG_SWAPSwap Control and GUI on both sides
QK_MAGIC_UNSWAP_CTL_GUICG_NORMUnswap Control and GUI on both sides
QK_MAGIC_TOGGLE_CTL_GUICG_TOGGToggle Control and GUI swap on both sides
QK_MAGIC_SWAP_LALT_LGUIAG_LSWPSwap Left Alt and GUI
QK_MAGIC_UNSWAP_LALT_LGUIAG_LNRMUnswap Left Alt and GUI
QK_MAGIC_SWAP_RALT_RGUIAG_RSWPSwap Right Alt and GUI
QK_MAGIC_UNSWAP_RALT_RGUIAG_RNRMUnswap Right Alt and GUI
QK_MAGIC_SWAP_ALT_GUIAG_SWAPSwap Alt and GUI on both sides
QK_MAGIC_UNSWAP_ALT_GUIAG_NORMUnswap Alt and GUI on both sides
QK_MAGIC_TOGGLE_ALT_GUIAG_TOGGToggle Alt and GUI swap on both sides
QK_MAGIC_GUI_OFFGU_OFFDisable the GUI keys
QK_MAGIC_GUI_ONGU_ONEnable the GUI keys
QK_MAGIC_TOGGLE_GUIGU_TOGGToggles the status of the GUI keys
QK_MAGIC_SWAP_GRAVE_ESCGE_SWAPSwap ` and Escape
QK_MAGIC_UNSWAP_GRAVE_ESCGE_NORMUnswap ` and Escape
QK_MAGIC_SWAP_BACKSLASH_BACKSPACEBS_SWAPSwap \\ and Backspace
QK_MAGIC_UNSWAP_BACKSLASH_BACKSPACEBS_NORMUnswap \\ and Backspace
QK_MAGIC_TOGGLE_BACKSLASH_BACKSPACEBS_TOGGToggle \\ and Backspace swap state
QK_MAGIC_NKRO_ONNK_ONEnable N-key rollover
QK_MAGIC_NKRO_OFFNK_OFFDisable N-key rollover
QK_MAGIC_TOGGLE_NKRONK_TOGGToggle N-key rollover
QK_MAGIC_EE_HANDS_LEFTEH_LEFTSet the master half of a split keyboard as the left hand (for EE_HANDS)
QK_MAGIC_EE_HANDS_RIGHTEH_RGHTSet the master half of a split keyboard as the right hand (for EE_HANDS)
', 3); diff --git a/assets/keycodes_magic.md.CGO3hgMm.lean.js b/assets/keycodes_magic.md.LOQRAy94.lean.js similarity index 91% rename from assets/keycodes_magic.md.CGO3hgMm.lean.js rename to assets/keycodes_magic.md.LOQRAy94.lean.js index 88aaaae8120..49a95190c7b 100644 --- a/assets/keycodes_magic.md.CGO3hgMm.lean.js +++ b/assets/keycodes_magic.md.LOQRAy94.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Magic Keycodes","description":"","frontmatter":{},"headers":[],"relativePath":"keycodes_magic.md","filePath":"keycodes_magic.md"}'); const _sfc_main = { name: "keycodes_magic.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 3); diff --git a/assets/keycodes_us_ansi_shifted.md.Cs78SDfM.js b/assets/keycodes_us_ansi_shifted.md.72mjMG-4.js similarity index 98% rename from assets/keycodes_us_ansi_shifted.md.Cs78SDfM.js rename to assets/keycodes_us_ansi_shifted.md.72mjMG-4.js index 1d87c1ae33f..81fd8ec1ad7 100644 --- a/assets/keycodes_us_ansi_shifted.md.Cs78SDfM.js +++ b/assets/keycodes_us_ansi_shifted.md.72mjMG-4.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"US ANSI Shifted Symbols","description":"","frontmatter":{},"headers":[],"relativePath":"keycodes_us_ansi_shifted.md","filePath":"keycodes_us_ansi_shifted.md"}'); const _sfc_main = { name: "keycodes_us_ansi_shifted.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

US ANSI Shifted Symbols

These keycodes correspond to characters that are "shifted" on a standard US ANSI keyboard. They do not have keycodes of their own but are simply shortcuts for LSFT(kc), and as such send a Left Shift with the unshifted keycode, not the symbol itself.

Caveats

Unfortunately, these keycodes cannot be used in Mod-Taps or Layer-Taps, since any modifiers specified in the keycode are ignored.

Additionally, you may run into issues when using Remote Desktop Connection on Windows. Because these codes send shift very fast, Remote Desktop may miss the codes.

To fix this, open Remote Desktop Connection, click on "Show Options", open the "Local Resources" tab. In the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly.

Keycodes

KeyAliasesDescription
KC_TILDEKC_TILD~
KC_EXCLAIMKC_EXLM!
KC_AT@
KC_HASH#
KC_DOLLARKC_DLR$
KC_PERCENTKC_PERC%
KC_CIRCUMFLEXKC_CIRC^
KC_AMPERSANDKC_AMPR&
KC_ASTERISKKC_ASTR*
KC_LEFT_PARENKC_LPRN(
KC_RIGHT_PARENKC_RPRN)
KC_UNDERSCOREKC_UNDS_
KC_PLUS+
KC_LEFT_CURLY_BRACEKC_LCBR{
KC_RIGHT_CURLY_BRACEKC_RCBR}
KC_PIPE|
KC_COLONKC_COLN:
KC_DOUBLE_QUOTEKC_DQUO, KC_DQT"
KC_LEFT_ANGLE_BRACKETKC_LABK, KC_LT<
KC_RIGHT_ANGLE_BRACKETKC_RABK, KC_GT>
KC_QUESTIONKC_QUES?
', 8); diff --git a/assets/keycodes_us_ansi_shifted.md.Cs78SDfM.lean.js b/assets/keycodes_us_ansi_shifted.md.72mjMG-4.lean.js similarity index 91% rename from assets/keycodes_us_ansi_shifted.md.Cs78SDfM.lean.js rename to assets/keycodes_us_ansi_shifted.md.72mjMG-4.lean.js index facedf0e231..dd59f1ccb82 100644 --- a/assets/keycodes_us_ansi_shifted.md.Cs78SDfM.lean.js +++ b/assets/keycodes_us_ansi_shifted.md.72mjMG-4.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"US ANSI Shifted Symbols","description":"","frontmatter":{},"headers":[],"relativePath":"keycodes_us_ansi_shifted.md","filePath":"keycodes_us_ansi_shifted.md"}'); const _sfc_main = { name: "keycodes_us_ansi_shifted.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 8); diff --git a/assets/keymap.md.Y4Fei1Ty.js b/assets/keymap.md.C4xC8DKs.js similarity index 99% rename from assets/keymap.md.Y4Fei1Ty.js rename to assets/keymap.md.C4xC8DKs.js index 961dac7151d..1c4cb688b1a 100644 --- a/assets/keymap.md.Y4Fei1Ty.js +++ b/assets/keymap.md.C4xC8DKs.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Keymap Overview","description":"","frontmatter":{},"headers":[],"relativePath":"keymap.md","filePath":"keymap.md"}'); const _sfc_main = { name: "keymap.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Keymap Overview

QMK keymaps are defined inside a C source file. The data structure is an array of arrays. The outer array is a list of layer arrays while the inner layer array is a list of keys. Most keyboards define a LAYOUT() macro to help you create this array of arrays.

Keymap and Layers

In QMK, const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] holds multiple layers of keymap information in 16 bit data holding the action code. You can define 32 layers at most.

For trivial key definitions, the higher 8 bits of the action code are all 0 and the lower 8 bits holds the USB HID usage code generated by the key as keycode.

Respective layers can be validated simultaneously. Layers are indexed with 0 to 31 and higher layer has precedence.

Keymap: 32 Layers                   Layer: action code matrix\n-----------------                   ---------------------\nstack of layers                     array_of_action_code[row][column]\n       ____________ precedence               _______________________\n      /           / | high                  / ESC / F1  / F2  / F3   ....\n  31 /___________// |                      /-----/-----/-----/-----\n  30 /___________// |                     / TAB /  Q  /  W  /  E   ....\n  29 /___________/  |                    /-----/-----/-----/-----\n   :   _:_:_:_:_:__ |               :   /LCtrl/  A  /  S  /  D   ....\n   :  / : : : : : / |               :  /  :     :     :     :\n   2 /___________// |               2 `--------------------------\n   1 /___________// |               1 `--------------------------\n   0 /___________/  V low           0 `--------------------------

Sometimes, the action code stored in keymap may be referred as keycode in some documents due to the TMK history.

Keymap Layer Status

The state of the Keymap layer is determined by two 32 bit parameters:

Keymap layer '0' is usually the default_layer, with other layers initially off after booting up the firmware, although this can configured differently in config.h. It is useful to change default_layer when you completely switch a key layout, for example, if you want to switch to Colemak instead of Qwerty.

Initial state of Keymap          Change base layout\n-----------------------          ------------------\n\n  31                               31\n  30                               30\n  29                               29\n   :                                :\n   :                                :   ____________\n   2   ____________                 2  /           /\n   1  /           /              ,->1 /___________/\n,->0 /___________/               |  0\n|                                |\n`--- default_layer = 0           `--- default_layer = 1\n     layer_state   = 0x00000001       layer_state   = 0x00000002

On the other hand, you can change layer_state to overlay the base layer with other layers for features such as navigation keys, function keys (F1-F12), media keys, and/or special actions.

Overlay feature layer\n---------------------      bit|status\n       ____________        ---+------\n  31  /           /        31 |   0\n  30 /___________// -----> 30 |   1\n  29 /___________/  -----> 29 |   1\n   :                        : |   :\n   :   ____________         : |   :\n   2  /           /         2 |   0\n,->1 /___________/  ----->  1 |   1\n|  0                        0 |   0\n|                                 +\n`--- default_layer = 1            |\n     layer_state   = 0x60000002 <-'

Layer Precedence and Transparency

Note that higher layers have higher priority within the stack of layers. The firmware works its way down from the highest active layers to look up keycodes. Once the firmware locates a keycode other than KC_TRNS (transparent) on an active layer, it stops searching, and lower layers aren't referenced.

   ____________\n  /           /  <--- Higher layer\n /  KC_TRNS  //\n/___________//   <--- Lower layer (KC_A)\n/___________/

In the above scenario, the non-transparent keys on the higher layer would be usable, but whenever KC_TRNS (or equivalent) is defined, the keycode (KC_A) on the lower level would be used.

Note: Valid ways to denote transparency on a given layer:

These keycodes allow the processing to fall through to lower layers in search of a non-transparent keycode to process.

Anatomy of a keymap.c

For this example we will walk through an older version of the default Clueboard 66% keymap. You'll find it helpful to open that file in another browser window so you can look at everything in context.

There are 2 main sections of a keymap.c file you'll want to concern yourself with:

Definitions

At the top of the file you'll find this:

c
#include QMK_KEYBOARD_H\n\n// Helpful defines\n#define GRAVE_MODS  (MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n    *  You can use _______ in place for KC_TRNS (transparent)   *\n    *  Or you can use XXXXXXX for KC_NO (NOOP)                  *\n    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n// Each layer gets a name for readability.\n// The underscores don't mean anything - you can\n// have a layer called STUFF or any other name.\n// Layer names don't all need to be of the same\n// length, and you can also skip them entirely\n// and just use numbers.\nenum layer_names {\n    _BL,\n    _FL,\n    _CL,\n};

These are some handy definitions we can use when building our keymap and our custom function. The GRAVE_MODS definition will be used later in our custom function, and the following _BL, _FL, and _CL defines make it easier to refer to each of our layers.

Note: You may also find some older keymap files may also have a define(s) for _______ and/or XXXXXXX. These can be used in place for KC_TRNS and KC_NO respectively, making it easier to see what keys a layer is overriding. These definitions are now unnecessary, as they are included by default.

Layers and Keymaps

The main part of this file is the keymaps[] definition. This is where you list your layers and the contents of those layers. This part of the file begins with this definition:

c
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

After this you'll find the layer definitions. Typically you'll have one or more "base layers" (such as QWERTY, Dvorak, or Colemak) and then you'll layer on top of that one or more "function" layers. Due to the way layers are processed you can't overlay a "lower" layer on top of a "higher" layer.

keymaps[][MATRIX_ROWS][MATRIX_COLS] in QMK holds the 16 bit action code (sometimes referred as the quantum keycode) in it. For the keycode representing typical keys, its high byte is 0 and its low byte is the USB HID usage ID for keyboard.

INFO

TMK from which QMK was forked uses const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] instead and holds the 8 bit keycode.

Base Layer

Here is an example of the Clueboard's base layer:

c
[_BL] = LAYOUT(\n    F(0),    KC_1,    KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,    KC_0,     KC_MINS,  KC_EQL,   KC_GRV,  KC_BSPC,          KC_PGUP,\n    KC_TAB,  KC_Q,    KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,    KC_P,     KC_LBRC,  KC_RBRC,  KC_BSLS,                   KC_PGDN,\n    KC_CAPS, KC_A,    KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,    KC_SCLN,  KC_QUOT,  KC_NUHS,  KC_ENT,\n    KC_LSFT, KC_NUBS, KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM, KC_DOT,   KC_SLSH,  KC_INT1,  KC_RSFT,          KC_UP,\n    KC_LCTL, KC_LGUI, KC_LALT, KC_INT5,          KC_SPC,KC_SPC,                        KC_INT4,  KC_RALT,  KC_RCTL,  MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT\n),

Some interesting things to note about this:

Function Overlay Layer

Our function layer is, from a code point of view, no different from the base layer. Conceptually, however, you will build that layer as an overlay, not a replacement. For many people this distinction does not matter, but as you build more complicated layering setups it matters more and more.

c
[_FL] = LAYOUT(\n    KC_GRV,  KC_F1,   KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F6,  KC_F7,  KC_F8,  KC_F9,   KC_F10,   KC_F11,   KC_F12,   _______, KC_DEL,           BL_STEP,\n    _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SCRL, KC_PAUS,  _______,  _______,  _______,                   _______,\n    _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______,  _______,  _______,  _______,\n    _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______,  _______,  _______,  _______,          KC_PGUP,\n    _______, _______, _______, _______,        _______,_______,                        _______,  _______,  _______,  MO(_FL), KC_HOME, KC_PGDN, KC_END\n),

Some interesting things to note:

Nitty Gritty Details

This should have given you a basic overview for creating your own keymap. For more details see the following resources:

We are actively working to improve these docs. If you have suggestions for how they could be made better please file an issue!

', 51); diff --git a/assets/keymap.md.Y4Fei1Ty.lean.js b/assets/keymap.md.C4xC8DKs.lean.js similarity index 90% rename from assets/keymap.md.Y4Fei1Ty.lean.js rename to assets/keymap.md.C4xC8DKs.lean.js index afc110ee3c6..a64d0930a1a 100644 --- a/assets/keymap.md.Y4Fei1Ty.lean.js +++ b/assets/keymap.md.C4xC8DKs.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Keymap Overview","description":"","frontmatter":{},"headers":[],"relativePath":"keymap.md","filePath":"keymap.md"}'); const _sfc_main = { name: "keymap.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 51); diff --git a/assets/mod_tap.md.C7wRKLcf.js b/assets/mod_tap.md.B5t5NSBO.js similarity index 99% rename from assets/mod_tap.md.C7wRKLcf.js rename to assets/mod_tap.md.B5t5NSBO.js index cac7071b9dd..f00736ddc66 100644 --- a/assets/mod_tap.md.C7wRKLcf.js +++ b/assets/mod_tap.md.B5t5NSBO.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Mod-Tap","description":"","frontmatter":{},"headers":[],"relativePath":"mod_tap.md","filePath":"mod_tap.md"}'); const _sfc_main = { name: "mod_tap.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Mod-Tap

The Mod-Tap key MT(mod, kc) acts like a modifier when held, and a regular keycode when tapped. In other words, you can have a key that sends Escape when you tap it, but functions as a Control or Shift key when you hold it down.

The modifiers this keycode and OSM() accept are prefixed with MOD_, not KC_:

ModifierDescription
MOD_LCTLLeft Control
MOD_LSFTLeft Shift
MOD_LALTLeft Alt
MOD_LGUILeft GUI (Windows/Command/Meta key)
MOD_RCTLRight Control
MOD_RSFTRight Shift
MOD_RALTRight Alt (AltGr)
MOD_RGUIRight GUI (Windows/Command/Meta key)
MOD_HYPRHyper (Left Control, Shift, Alt and GUI)
MOD_MEHMeh (Left Control, Shift, and Alt)

You can combine these by ORing them together like so:

c
MT(MOD_LCTL | MOD_LSFT, KC_ESC)

This key would activate Left Control and Left Shift when held, and send Escape when tapped.

For convenience, QMK includes some Mod-Tap shortcuts to make common combinations more compact in your keymap:

KeyAliasesDescription
LCTL_T(kc)CTL_T(kc)Left Control when held, kc when tapped
LSFT_T(kc)SFT_T(kc)Left Shift when held, kc when tapped
LALT_T(kc)LOPT_T(kc), ALT_T(kc), OPT_T(kc)Left Alt when held, kc when tapped
LGUI_T(kc)LCMD_T(kc), LWIN_T(kc), GUI_T(kc), CMD_T(kc), WIN_T(kc)Left GUI when held, kc when tapped
RCTL_T(kc)Right Control when held, kc when tapped
RSFT_T(kc)Right Shift when held, kc when tapped
RALT_T(kc)ROPT_T(kc), ALGR_T(kc)Right Alt when held, kc when tapped
RGUI_T(kc)RCMD_T(kc), RWIN_T(kc)Right GUI when held, kc when tapped
LSG_T(kc)SGUI_T(kc), SCMD_T(kc), SWIN_T(kc)Left Shift and GUI when held, kc when tapped
LAG_T(kc)Left Alt and GUI when held, kc when tapped
RSG_T(kc)Right Shift and GUI when held, kc when tapped
RAG_T(kc)Right Alt and GUI when held, kc when tapped
LCA_T(kc)Left Control and Alt when held, kc when tapped
LSA_T(kc)Left Shift and Alt when held, kc when tapped
RSA_T(kc)SAGR_T(kc)Right Shift and Right Alt (AltGr) when held, kc when tapped
RCS_T(kc)Right Control and Right Shift when held, kc when tapped
LCAG_T(kc)Left Control, Alt and GUI when held, kc when tapped
RCAG_T(kc)Right Control, Alt and GUI when held, kc when tapped
C_S_T(kc)Left Control and Shift when held, kc when tapped
MEH_T(kc)Left Control, Shift and Alt when held, kc when tapped
HYPR_T(kc)ALL_T(kc)Left Control, Shift, Alt and GUI when held, kc when tapped - more info here

Caveats

Currently, the kc argument of MT() is limited to the Basic Keycode set, meaning you can't use keycodes like LCTL(), KC_TILD, or anything greater than 0xFF. This is because QMK uses 16-bit keycodes, of which 3 bits are used for the function identifier, 1 bit for selecting right or left mods, and 4 bits to tell which mods are used, leaving only 8 bits for the keycode. Additionally, if at least one right-handed modifier is specified in a Mod-Tap, it will cause all modifiers specified to become right-handed, so it is not possible to mix and match the two - for example, Left Control and Right Shift would become Right Control and Right Shift.

Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, Tap Dance can be used to accomplish this.

You may also run into issues when using Remote Desktop Connection on Windows. Because these keycodes send key events faster than a human, Remote Desktop could miss them. To fix this, open Remote Desktop Connection, click on "Show Options", open the "Local Resources" tab, and in the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly. It can also be mitigated by increasing TAP_CODE_DELAY.

Intercepting Mod-Taps

Changing tap function

The basic keycode limitation with Mod-Tap can be worked around by intercepting it in process_record_user. For example, shifted keycode KC_DQUO cannot be used with MT() because it is a 16-bit keycode alias of LSFT(KC_QUOT). Modifiers on KC_DQUO will be masked by MT(). But the following custom code can be used to intercept the "tap" function to manually send KC_DQUO:

c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {\n    switch (keycode) {\n        case LCTL_T(KC_DQUO):\n            if (record->tap.count && record->event.pressed) {\n                tap_code16(KC_DQUO); // Send KC_DQUO on tap\n                return false;        // Return false to ignore further processing of key\n            }\n            break;\n    }\n    return true;\n}

Changing hold function

Likewise, similar custom code can also be used to intercept the hold function to send custom user key code. The following example uses LT(0, kc) (layer-tap key with no practical use because layer 0 is always active) to add cut, copy and paste function to X,C and V keys when they are held down:

c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {\n    switch (keycode) {\n        case LT(0,KC_X):\n            if (!record->tap.count && record->event.pressed) {\n                tap_code16(C(KC_X)); // Intercept hold function to send Ctrl-X\n                return false;\n            }\n            return true;             // Return true for normal processing of tap keycode\n        case LT(0,KC_C):\n            if (!record->tap.count && record->event.pressed) {\n                tap_code16(C(KC_C)); // Intercept hold function to send Ctrl-C\n                return false;\n            }\n            return true;             // Return true for normal processing of tap keycode\n        case LT(0,KC_V):\n            if (!record->tap.count && record->event.pressed) {\n                tap_code16(C(KC_V)); // Intercept hold function to send Ctrl-V\n                return false;\n            }\n            return true;             // Return true for normal processing of tap keycode\n    }\n    return true;\n}

Changing both tap and hold

This last example implements custom tap and hold function with LT(0,KC_NO) to create a single copy-on-tap, paste-on-hold key:

c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {\n    switch (keycode) {\n        case LT(0,KC_NO):\n            if (record->tap.count && record->event.pressed) {\n                tap_code16(C(KC_C)); // Intercept tap function to send Ctrl-C\n            } else if (record->event.pressed) {\n                tap_code16(C(KC_V)); // Intercept hold function to send Ctrl-V\n            }\n            return false;\n    }\n    return true;\n}

Other Resources

See the Tap-Hold Configuration Options for additional flags that tweak Mod-Tap behavior.

', 25); diff --git a/assets/mod_tap.md.C7wRKLcf.lean.js b/assets/mod_tap.md.B5t5NSBO.lean.js similarity index 90% rename from assets/mod_tap.md.C7wRKLcf.lean.js rename to assets/mod_tap.md.B5t5NSBO.lean.js index 1dc4b73d9a5..0edef8f375f 100644 --- a/assets/mod_tap.md.C7wRKLcf.lean.js +++ b/assets/mod_tap.md.B5t5NSBO.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Mod-Tap","description":"","frontmatter":{},"headers":[],"relativePath":"mod_tap.md","filePath":"mod_tap.md"}'); const _sfc_main = { name: "mod_tap.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 25); diff --git a/assets/newbs.md.-YYNd3dT.js b/assets/newbs.md.BD3QefyC.js similarity index 98% rename from assets/newbs.md.-YYNd3dT.js rename to assets/newbs.md.BD3QefyC.js index eb3002eba11..7ffa827c02e 100644 --- a/assets/newbs.md.-YYNd3dT.js +++ b/assets/newbs.md.BD3QefyC.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"The QMK Tutorial","description":"","frontmatter":{},"headers":[],"relativePath":"newbs.md","filePath":"newbs.md"}'); const _sfc_main = { name: "newbs.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

The QMK Tutorial

Your computer keyboard has a processor inside of it, similar to the one inside your computer. This processor runs software that is responsible for detecting button presses and informing the computer when keys are pressed. QMK Firmware fills the role of that software, detecting button presses and passing that information on to the host computer. When you build your custom keymap, you are creating an executable program for your keyboard.

QMK tries to put a lot of power into your hands by making easy things easy, and hard things possible. You don't have to know how to program to create powerful keymaps — you only have to follow a few simple syntax rules.

Not sure if your keyboard can run QMK? If it's a mechanical keyboard you built yourself chances are good it can. We support a large number of hobbyist boards. If your current keyboard can't run QMK there are a lot of choices out there for boards that do.

Is This Guide For Me?

If the thought of programming intimidates you, please take a look at our online GUI instead.

Overview

This guide is suitable for everyone who wants to build a keyboard firmware using the source code. If you are already a programmer you will find the process very familiar and easier to follow. There are 3 main sections to this guide:

  1. Setup Your Environment
  2. Building Your First Firmware
  3. Flashing Firmware

This guide is focused on helping someone who has never compiled software before. It makes choices and recommendations based on that viewpoint. There are alternative methods for many of these procedures, and we support most of those alternatives. If you have any doubt about how to accomplish a task you can ask us for guidance.

Additional Resources

Beyond this guide there are several resources you may find helpful while you learn QMK. We've collected them on the Syllabus and Learning Resources pages.

', 11); diff --git a/assets/newbs.md.-YYNd3dT.lean.js b/assets/newbs.md.BD3QefyC.lean.js similarity index 90% rename from assets/newbs.md.-YYNd3dT.lean.js rename to assets/newbs.md.BD3QefyC.lean.js index 567705687a8..aa1590de2d1 100644 --- a/assets/newbs.md.-YYNd3dT.lean.js +++ b/assets/newbs.md.BD3QefyC.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"The QMK Tutorial","description":"","frontmatter":{},"headers":[],"relativePath":"newbs.md","filePath":"newbs.md"}'); const _sfc_main = { name: "newbs.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 11); diff --git a/assets/newbs_building_firmware.md.DnVUK9it.js b/assets/newbs_building_firmware.md.CybovRdt.js similarity index 99% rename from assets/newbs_building_firmware.md.DnVUK9it.js rename to assets/newbs_building_firmware.md.CybovRdt.js index ba39a9253e8..ef2d3c65641 100644 --- a/assets/newbs_building_firmware.md.DnVUK9it.js +++ b/assets/newbs_building_firmware.md.CybovRdt.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Building Your First Firmware","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_building_firmware.md","filePath":"newbs_building_firmware.md"}'); const _sfc_main = { name: "newbs_building_firmware.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Building Your First Firmware

Now that you have set up your build environment you are ready to start building custom firmware. For this section of the guide we will bounce between 3 programs- your file manager, your text editor, and your terminal window. Keep all 3 open until you are done and happy with your keyboard firmware.

Configure Your Build Environment Defaults (Optional)

You can configure your build environment to set the defaults and make working with QMK less tedious. Let's do that now!

Most people new to QMK only have 1 keyboard. You can set this keyboard as your default with the qmk config command. For example, to set your default keyboard to clueboard/66/rev4:

sh
qmk config user.keyboard=clueboard/66/rev4

TIP

The keyboard option is the path relative to the keyboard directory, the above example would be found in qmk_firmware/keyboards/clueboard/66/rev4. If you're unsure you can view a full list of supported keyboards with qmk list-keyboards.

You can also set your default keymap name. Most people use their GitHub username like the keymap name from the previous steps:

sh
qmk config user.keymap=<github_username>

Create a New Keymap

To create your own keymap you'll want to create a copy of the default keymap. If you configured your build environment in the last step you can do that easily with the QMK CLI:

sh
qmk new-keymap

If you did not configure your environment, or you have multiple keyboards, you can specify a keyboard name:

sh
qmk new-keymap -kb <keyboard_name>

Look at the output from that command, you should see something like this:

Ψ Created a new keymap called <github_username> in: /home/me/qmk_firmware/keyboards/clueboard/66/rev3/keymaps/<github_username>.

This is the location of your new keymap.c file.

Open keymap.c In Your Favorite Text Editor

Open your keymap.c file in your text editor. Inside this file you'll find the structure that controls how your keyboard behaves. At the top of keymap.c there may be some defines and enums that make the keymap easier to read. Farther down you'll find a line that looks like this:

c
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

This line indicates where the list of Layers begins. Below that you'll find lines containing LAYOUT, and these lines indicate the start of a layer. Below that line is the list of keys that comprise a particular layer.

WARNING

When editing your keymap file be careful not to add or remove any commas. If you do, you will prevent your firmware from compiling and it may not be easy to figure out where the extra, or missing, comma is.

Customize The Layout To Your Liking

How to complete this step is entirely up to you. Make the one change that's been bugging you, or completely rework everything. You can remove layers if you don't need all of them, or add layers up to a total of 32. There are a lot of features in QMK, explore the sidebar to the left under "Using QMK" to see the full list. To get you started here are a few of the easier to use features:

TIP

While you get a feel for how keymaps work, keep each change small. Bigger changes make it harder to debug any problems that arise.

Build Your Firmware

When your changes to the keymap are complete you will need to build the firmware. To do so go back to your terminal window and run the compile command:

sh
qmk compile

If you did not configure defaults for your environment, or you have multiple keyboards, you can specify a keyboard and/or keymap:

sh
qmk compile -kb <keyboard> -km <keymap>

While this compiles you will have a lot of output going to the screen informing you of what files are being compiled. It should end with output that looks similar to this:

Linking: .build/planck_rev5_default.elf                                                             [OK]\nCreating load file for flashing: .build/planck_rev5_default.hex                                     [OK]\nCopying planck_rev5_default.hex to qmk_firmware folder                                              [OK]\nChecking file size of planck_rev5_default.hex                                                       [OK]\n * The firmware size is fine - 27312/28672 (95%, 1360 bytes free)

Flash Your Firmware

Move on to Flashing Firmware to learn how to write your new firmware to your keyboard.

', 35); diff --git a/assets/newbs_building_firmware.md.DnVUK9it.lean.js b/assets/newbs_building_firmware.md.CybovRdt.lean.js similarity index 91% rename from assets/newbs_building_firmware.md.DnVUK9it.lean.js rename to assets/newbs_building_firmware.md.CybovRdt.lean.js index 90eb278e782..f3f1a7ded50 100644 --- a/assets/newbs_building_firmware.md.DnVUK9it.lean.js +++ b/assets/newbs_building_firmware.md.CybovRdt.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Building Your First Firmware","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_building_firmware.md","filePath":"newbs_building_firmware.md"}'); const _sfc_main = { name: "newbs_building_firmware.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 35); diff --git a/assets/newbs_building_firmware_configurator.md.yyo-1QDE.js b/assets/newbs_building_firmware_configurator.md.BwSLgipx.js similarity index 97% rename from assets/newbs_building_firmware_configurator.md.yyo-1QDE.js rename to assets/newbs_building_firmware_configurator.md.BwSLgipx.js index 7664d393082..9b4c02b772c 100644 --- a/assets/newbs_building_firmware_configurator.md.yyo-1QDE.js +++ b/assets/newbs_building_firmware_configurator.md.BwSLgipx.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Configurator","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_building_firmware_configurator.md","filePath":"newbs_building_firmware_configurator.md"}'); const _sfc_main = { name: "newbs_building_firmware_configurator.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Configurator

QMK Configurator Screenshot

The QMK Configurator is an online graphical user interface that generates QMK Firmware .hex or .bin files.

It should be noted that Configurator cannot produce firmwares for keyboards using a different controller than they were designed for, i.e. an RP2040 controller on a board designed for pro micro. You will have to use the command line converters for this.

Watch the Video Tutorial. Many people find that is enough information to start programming their own keyboard.

The QMK Configurator works best with Chrome or Firefox.

WARNING

Note: Files from other tools such as Keyboard Layout Editor (KLE), or kbfirmware will not be compatible with QMK Configurator. Do not load them, do not import them. QMK Configurator is a DIFFERENT tool.

Please refer to QMK Configurator: Step by Step.

', 8); diff --git a/assets/newbs_building_firmware_configurator.md.yyo-1QDE.lean.js b/assets/newbs_building_firmware_configurator.md.BwSLgipx.lean.js similarity index 92% rename from assets/newbs_building_firmware_configurator.md.yyo-1QDE.lean.js rename to assets/newbs_building_firmware_configurator.md.BwSLgipx.lean.js index 6c071940b2e..44be60e1740 100644 --- a/assets/newbs_building_firmware_configurator.md.yyo-1QDE.lean.js +++ b/assets/newbs_building_firmware_configurator.md.BwSLgipx.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Configurator","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_building_firmware_configurator.md","filePath":"newbs_building_firmware_configurator.md"}'); const _sfc_main = { name: "newbs_building_firmware_configurator.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 8); diff --git a/assets/newbs_building_firmware_workflow.md.DpLVwA7x.js b/assets/newbs_building_firmware_workflow.md.CiP7v8Cc.js similarity index 99% rename from assets/newbs_building_firmware_workflow.md.DpLVwA7x.js rename to assets/newbs_building_firmware_workflow.md.CiP7v8Cc.js index b9e2ed5fb20..955ae7cd12a 100644 --- a/assets/newbs_building_firmware_workflow.md.DpLVwA7x.js +++ b/assets/newbs_building_firmware_workflow.md.CiP7v8Cc.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, o as openBlock, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, o as openBlock, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Building QMK with GitHub Userspace","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_building_firmware_workflow.md","filePath":"newbs_building_firmware_workflow.md"}'); const _sfc_main = { name: "newbs_building_firmware_workflow.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Building QMK with GitHub Userspace

This is an intermediate QMK tutorial to setup an out-of-tree build environment with a personal GitHub repository. It avoids using a fork of the QMK firmware to store and build your keymap within its source tree. Keymap files will instead be stored in your own personal GitHub repository, in Userspace format, and built with an action workflow. Unlike the default tutorial, this guide requires some familiarity with using Git.

Is This Guide For Me?

This is a lean setup to avoid space-consuming local build environment in your computer. Troubleshooting compile-time errors will be slower with commit uploads to GitHub for the compiler workflow.

Prerequisites

The following are required to get started:

Environment Setup

TIP

If you are familiar with using github.dev, you can skip to step 2 and commit the code files that follows directly on GitHub using the web-based VSCode editor.

1. Install Git

A working Git client is required for your local operating system to commit and push changes to GitHub.

', 10); diff --git a/assets/newbs_building_firmware_workflow.md.DpLVwA7x.lean.js b/assets/newbs_building_firmware_workflow.md.CiP7v8Cc.lean.js similarity index 99% rename from assets/newbs_building_firmware_workflow.md.DpLVwA7x.lean.js rename to assets/newbs_building_firmware_workflow.md.CiP7v8Cc.lean.js index e47b0dbeea9..75fdfd25e28 100644 --- a/assets/newbs_building_firmware_workflow.md.DpLVwA7x.lean.js +++ b/assets/newbs_building_firmware_workflow.md.CiP7v8Cc.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, o as openBlock, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, o as openBlock, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Building QMK with GitHub Userspace","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_building_firmware_workflow.md","filePath":"newbs_building_firmware_workflow.md"}'); const _sfc_main = { name: "newbs_building_firmware_workflow.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 10); diff --git a/assets/newbs_external_userspace.md.pD9Lc-a5.js b/assets/newbs_external_userspace.md.BMYQp9mN.js similarity index 99% rename from assets/newbs_external_userspace.md.pD9Lc-a5.js rename to assets/newbs_external_userspace.md.BMYQp9mN.js index a37f66e99ba..96eb46e402a 100644 --- a/assets/newbs_external_userspace.md.pD9Lc-a5.js +++ b/assets/newbs_external_userspace.md.BMYQp9mN.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"External QMK Userspace","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_external_userspace.md","filePath":"newbs_external_userspace.md"}'); const _sfc_main = { name: "newbs_external_userspace.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

External QMK Userspace

QMK Firmware now officially supports storing user keymaps outside of the normal QMK Firmware repository, allowing users to maintain their own keymaps without having to fork, modify, and maintain a copy of QMK Firmware themselves.

External Userspace mirrors the structure of the main QMK Firmware repository, but only contains the keymaps that you wish to build. You can still use keyboards/<my keyboard>/keymaps/<my keymap> to store your keymaps, or you can use the layouts/<my layout>/<my keymap> system as before -- they're just stored external to QMK Firmware.

The build system will still honor the use of users/<my keymap> if you rely on the traditional QMK Firmware userspace feature -- it's now supported externally too, using the same location inside the External Userspace directory.

Additionally, there is first-class support for using GitHub Actions to build your keymaps, allowing you to automatically compile your keymaps whenever you push changes to your External Userspace repository.

WARNING

External Userspace is new functionality and may have issues. Tighter integration with the qmk command will occur over time.

TIP

Historical keymap.json and GitHub-based firmware build instructions can be found here. This document supersedes those instructions, but they should still function correctly.

Setting up QMK Locally

If you wish to build on your local machine, you will need to set up QMK locally. This is a one-time process, and is documented in the newbs setup guide.

WARNING

If you wish to use any QMK CLI commands related to manipulating External Userspace definitions, you will currently need a copy of QMK Firmware as well.

WARNING

Building locally has a much shorter turnaround time than waiting for GitHub Actions to complete.

External Userspace Repository Setup (forked on GitHub)

A basic skeleton External Userspace repository can be found here. If you wish to keep your keymaps on GitHub (strongly recommended!), you can fork the repository and use it as a base:

Userspace Fork

Going ahead with your fork will copy it to your account, at which point you can clone it to your local machine and begin adding your keymaps:

Userspace Clone

sh
cd $HOME\ngit clone https://github.com/{myusername}/qmk_userspace.git\nqmk config user.overlay_dir="$(realpath qmk_userspace)"

External Userspace Setup (locally stored only)

If you don't want to use GitHub and prefer to keep everything local, you can clone a copy of the default External Userspace locally instead:

sh
cd $HOME\ngit clone https://github.com/qmk/qmk_userspace.git\nqmk config user.overlay_dir="$(realpath qmk_userspace)"

Adding a Keymap

These instructions assume you have already set up QMK locally, and have a copy of the QMK Firmware repository on your machine.

Keymaps within External Userspace are defined in the same way as they are in the main QMK repository. You can either use the qmk new-keymap command to create a new keymap, or manually create a new directory in the keyboards directory.

Alternatively, you can use the layouts directory to store your keymaps, using the same layout system as the main QMK repository -- if you choose to do so you'll want to use the path layouts/<layout name>/<keymap name>/keymap.* to store your keymap files, where layout name matches an existing layout in QMK, such as tkl_ansi.

After creating your new keymap, building the keymap matches normal QMK usage:

sh
qmk compile -kb <keyboard> -km <keymap>

WARNING

The qmk config user.overlay_dir=... command must have been run when cloning the External Userspace repository for this to work correctly.

Adding the keymap to External Userspace build targets

Once you have created your keymap, if you want to use GitHub Actions to build your firmware, you will need to add it to the External Userspace build targets. This is done using the qmk userspace-add command:

sh
# for a keyboard/keymap combo:\nqmk userspace-add -kb <keyboard> -km <keymap>\n# or, for a json-based keymap (if kept "loose"):\nqmk userspace-add <relative/path/to/my/keymap.json>

This updates the qmk.json file in the root of your External Userspace directory. If you're using a git repository to store your keymaps, now is a great time to commit and push to your own fork.

Compiling External Userspace build targets

Once you have added your keymaps to the External Userspace build targets, you can compile all of them at once using the qmk userspace-compile command:

sh
qmk userspace-compile

All firmware builds you've added to the External Userspace build targets will be built, and the resulting firmware files will be placed in the root of your External Userspace directory.

Using GitHub Actions

GitHub Actions can be used to automatically build your keymaps whenever you push changes to your External Userspace repository. If you have set up your list of build targets, this is as simple as enabling workflows in the GitHub repository settings:

Repo Settings

Any push will result in compilation of all configured builds, and once completed a new release containing the newly-minted firmware files will be created on GitHub, which you can subsequently download and flash to your keyboard:

Releases

', 40); diff --git a/assets/newbs_external_userspace.md.pD9Lc-a5.lean.js b/assets/newbs_external_userspace.md.BMYQp9mN.lean.js similarity index 91% rename from assets/newbs_external_userspace.md.pD9Lc-a5.lean.js rename to assets/newbs_external_userspace.md.BMYQp9mN.lean.js index cf0e666fb70..da2ac212055 100644 --- a/assets/newbs_external_userspace.md.pD9Lc-a5.lean.js +++ b/assets/newbs_external_userspace.md.BMYQp9mN.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"External QMK Userspace","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_external_userspace.md","filePath":"newbs_external_userspace.md"}'); const _sfc_main = { name: "newbs_external_userspace.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 40); diff --git a/assets/newbs_flashing.md.u-7lrNOy.js b/assets/newbs_flashing.md.BxrsbpFT.js similarity index 99% rename from assets/newbs_flashing.md.u-7lrNOy.js rename to assets/newbs_flashing.md.BxrsbpFT.js index e2ff224aaa4..a4282c5bdee 100644 --- a/assets/newbs_flashing.md.u-7lrNOy.js +++ b/assets/newbs_flashing.md.BxrsbpFT.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, o as openBlock, l as createBaseVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, o as openBlock, l as createBaseVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Flashing Your Keyboard","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_flashing.md","filePath":"newbs_flashing.md"}'); const _sfc_main = { name: "newbs_flashing.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Flashing Your Keyboard

Now that you've built a custom firmware file you'll want to flash your keyboard.

Put Your Keyboard into DFU (Bootloader) Mode

In order to flash your custom firmware you must first put your keyboard into a special flashing mode. While it is in this mode you will not be able to type or otherwise use your keyboard. It is very important that you do not unplug the keyboard or otherwise interrupt the flashing process while the firmware is being written.

Different keyboards have different ways to enter this special mode. If your PCB currently runs QMK, TMK, or PS2AVRGB (Bootmapper Client) and you have not been given specific instructions, try the following, in order:

If you've attempted all of the above to no avail, and the main chip on the board says STM32 or RP2-B1 on it, this may be a bit more complicated. Generally your best bet is to ask on Discord for assistance. It's likely some photos of the board will be asked for -- if you can get them ready beforehand it'll help move things along!

Otherwise, you should see a message in yellow, similar to this in QMK Toolbox:

*** DFU device connected: Atmel Corp. ATmega32U4 (03EB:2FF4:0000)

and this bootloader device will also be present in Device Manager, System Information.app, or lsusb.

Flashing Your Keyboard with QMK Toolbox

The simplest way to flash your keyboard will be with the QMK Toolbox.

However, the Toolbox is currently only available for Windows and macOS. If you're using Linux (or just wish to flash the firmware from the command line), skip to the Flash your Keyboard from the Command Line section.

TIP

QMK Toolbox is not necessary for flashing RP2040 devices.

Load the File into QMK Toolbox

Begin by opening the QMK Toolbox application. You'll want to locate the firmware file in Finder or Explorer. Your keyboard firmware may be in one of two formats- .hex or .bin. QMK tries to copy the appropriate one for your keyboard into the root qmk_firmware directory.

If you are on Windows or macOS, there are commands you can use to easily open the current folder in Explorer or Finder.

', 17); diff --git a/assets/newbs_flashing.md.u-7lrNOy.lean.js b/assets/newbs_flashing.md.BxrsbpFT.lean.js similarity index 99% rename from assets/newbs_flashing.md.u-7lrNOy.lean.js rename to assets/newbs_flashing.md.BxrsbpFT.lean.js index c842533b50b..7d86217519c 100644 --- a/assets/newbs_flashing.md.u-7lrNOy.lean.js +++ b/assets/newbs_flashing.md.BxrsbpFT.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, o as openBlock, l as createBaseVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, o as openBlock, l as createBaseVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Flashing Your Keyboard","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_flashing.md","filePath":"newbs_flashing.md"}'); const _sfc_main = { name: "newbs_flashing.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 17); diff --git a/assets/newbs_getting_started.md.DD4a5qPC.js b/assets/newbs_getting_started.md.CpbFaJqI.js similarity index 99% rename from assets/newbs_getting_started.md.DD4a5qPC.js rename to assets/newbs_getting_started.md.CpbFaJqI.js index 82d162e3c07..04f6f7e460f 100644 --- a/assets/newbs_getting_started.md.DD4a5qPC.js +++ b/assets/newbs_getting_started.md.CpbFaJqI.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, l as createBaseVNode, a as createTextVNode, o as openBlock } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, l as createBaseVNode, a as createTextVNode, o as openBlock } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Setting Up Your QMK Environment","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_getting_started.md","filePath":"newbs_getting_started.md"}'); const _sfc_main = { name: "newbs_getting_started.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Setting Up Your QMK Environment

Before you can build keymaps, you need to install some software and set up your build environment. This only has to be done once no matter how many keyboards you plan to compile firmware for.

1. Prerequisites

There are a few pieces of software you'll need to get started.

TIP

If you haven't worked with the Linux/Unix command line before, there are a few basic concepts and commands you should learn. These resources will teach you enough to be able to work with QMK.

2. Prepare Your Build Environment

We've tried to make QMK as easy to set up as possible. You only have to prepare your Linux or Unix environment, then let QMK install the rest.

', 8); diff --git a/assets/newbs_getting_started.md.DD4a5qPC.lean.js b/assets/newbs_getting_started.md.CpbFaJqI.lean.js similarity index 99% rename from assets/newbs_getting_started.md.DD4a5qPC.lean.js rename to assets/newbs_getting_started.md.CpbFaJqI.lean.js index 3b3c03c589a..98379d89a8f 100644 --- a/assets/newbs_getting_started.md.DD4a5qPC.lean.js +++ b/assets/newbs_getting_started.md.CpbFaJqI.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, l as createBaseVNode, a as createTextVNode, o as openBlock } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, l as createBaseVNode, a as createTextVNode, o as openBlock } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Setting Up Your QMK Environment","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_getting_started.md","filePath":"newbs_getting_started.md"}'); const _sfc_main = { name: "newbs_getting_started.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 8); diff --git a/assets/newbs_git_best_practices.md.BI2-EVI5.js b/assets/newbs_git_best_practices.md.BQEFeFMK.js similarity index 97% rename from assets/newbs_git_best_practices.md.BI2-EVI5.js rename to assets/newbs_git_best_practices.md.BQEFeFMK.js index 50282831811..c8e28c36dd2 100644 --- a/assets/newbs_git_best_practices.md.BI2-EVI5.js +++ b/assets/newbs_git_best_practices.md.BQEFeFMK.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Best Git Practices for Working with QMK","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_git_best_practices.md","filePath":"newbs_git_best_practices.md"}'); const _sfc_main = { name: "newbs_git_best_practices.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Best Git Practices for Working with QMK

Or, "How I Learned to Stop Worrying and Love Git."

This section aims to instruct novices in the best ways to have a smooth experience in contributing to QMK. We will walk through the process of contributing to QMK, detailing some ways to make this task easier, and then later we'll break some things in order to teach you how to fix them.

This section assumes a few things:

  1. You have a GitHub account, and have forked the qmk_firmware repository to your account.
  2. You've set up both your build environment and QMK.

', 7); diff --git a/assets/newbs_git_best_practices.md.BI2-EVI5.lean.js b/assets/newbs_git_best_practices.md.BQEFeFMK.lean.js similarity index 92% rename from assets/newbs_git_best_practices.md.BI2-EVI5.lean.js rename to assets/newbs_git_best_practices.md.BQEFeFMK.lean.js index e19f3380e46..07bd475bec1 100644 --- a/assets/newbs_git_best_practices.md.BI2-EVI5.lean.js +++ b/assets/newbs_git_best_practices.md.BQEFeFMK.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Best Git Practices for Working with QMK","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_git_best_practices.md","filePath":"newbs_git_best_practices.md"}'); const _sfc_main = { name: "newbs_git_best_practices.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 7); diff --git a/assets/newbs_git_resolving_merge_conflicts.md.72w3BRmm.js b/assets/newbs_git_resolving_merge_conflicts.md.CbGBcgDe.js similarity index 99% rename from assets/newbs_git_resolving_merge_conflicts.md.72w3BRmm.js rename to assets/newbs_git_resolving_merge_conflicts.md.CbGBcgDe.js index 0e0366f3a0f..9e761be71bb 100644 --- a/assets/newbs_git_resolving_merge_conflicts.md.72w3BRmm.js +++ b/assets/newbs_git_resolving_merge_conflicts.md.CbGBcgDe.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Resolving Merge Conflicts","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_git_resolving_merge_conflicts.md","filePath":"newbs_git_resolving_merge_conflicts.md"}'); const _sfc_main = { name: "newbs_git_resolving_merge_conflicts.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Resolving Merge Conflicts

Sometimes when your work in a branch takes a long time to complete, changes that have been made by others conflict with changes you have made to your branch when you open a pull request. This is called a merge conflict, and is what happens when multiple people edit the same parts of the same files.

TIP

This document builds upon the concepts detailed in Your Fork's Master: Update Often, Commit Never. If you are not familiar with that document, please read it first, then return here.

Rebasing Your Changes

A rebase is Git's way of taking changes that were applied at one point in the commit history, reversing them, and then applying the same changes at another point. In the case of a merge conflict, you can rebase your branch to grab the changes that were made between when you created your branch and the present time.

To start, run the following:

git fetch upstream\ngit rev-list --left-right --count HEAD...upstream/master

The git rev-list command entered here returns the number of commits that differ between the current branch and QMK's master branch. We run git fetch first to make sure we have the refs that represent the current state of the upstream repo. The output of the git rev-list command entered returns two numbers:

$ git rev-list --left-right --count HEAD...upstream/master\n7       35

The first number represents the number of commits on the current branch since it was created, and the second number is the number of commits made to upstream/master since the current branch was created, and thus, the changes that are not recorded in the current branch.

Now that the current states of both the current branch and the upstream repo are known, we can start a rebase operation:

git rebase upstream/master

This tells Git to undo the commits on the current branch, and then reapply them against QMK's master branch.

$ git rebase upstream/master\nFirst, rewinding head to replay your work on top of it...\nApplying: Commit #1\nUsing index info to reconstruct a base tree...\nM       conflicting_file_1.txt\nFalling back to patching base and 3-way merge...\nAuto-merging conflicting_file_1.txt\nCONFLICT (content): Merge conflict in conflicting_file_1.txt\nerror: Failed to merge in the changes.\nhint: Use 'git am --show-current-patch' to see the failed patch\nPatch failed at 0001 Commit #1\n\nResolve all conflicts manually, mark them as resolved with\n"git add/rm <conflicted_files>", then run "git rebase --continue".\nYou can instead skip this commit: run "git rebase --skip".\nTo abort and get back to the state before "git rebase", run "git rebase --abort".

This tells us that we have a merge conflict, and gives the name of the file with the conflict. Open the conflicting file in your text editor, and somewhere in the file, you'll find something like this:

<<<<<<< HEAD\n<p>For help with any issues, email us at support@webhost.us.</p>\n=======\n<p>Need help? Email support@webhost.us.</p>\n>>>>>>> Commit #1

The line <<<<<<< HEAD marks the beginning of a merge conflict, and the >>>>>>> Commit #1 line marks the end, with the conflicting sections separated by =======. The part on the HEAD side is from the QMK master version of the file, and the part marked with the commit message is from the current branch and commit.

Because Git tracks changes to files rather than the contents of the files directly, if Git can't find the text that was in the file previous to the commit that was made, it won't know how to edit the file. Re-editing the file will solve the conflict. Make your changes, and then save the file.

<p>Need help? Email support@webhost.us.</p>

Now run:

git add conflicting_file_1.txt\ngit rebase --continue

Git logs the changes to the conflicting file, and continues applying the commits from our branch until it reaches the end.

', 22); diff --git a/assets/newbs_git_resolving_merge_conflicts.md.72w3BRmm.lean.js b/assets/newbs_git_resolving_merge_conflicts.md.CbGBcgDe.lean.js similarity index 92% rename from assets/newbs_git_resolving_merge_conflicts.md.72w3BRmm.lean.js rename to assets/newbs_git_resolving_merge_conflicts.md.CbGBcgDe.lean.js index 812b08d5ddb..75bbb034045 100644 --- a/assets/newbs_git_resolving_merge_conflicts.md.72w3BRmm.lean.js +++ b/assets/newbs_git_resolving_merge_conflicts.md.CbGBcgDe.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Resolving Merge Conflicts","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_git_resolving_merge_conflicts.md","filePath":"newbs_git_resolving_merge_conflicts.md"}'); const _sfc_main = { name: "newbs_git_resolving_merge_conflicts.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 22); diff --git a/assets/newbs_git_resynchronize_a_branch.md.YGDefQFx.js b/assets/newbs_git_resynchronize_a_branch.md.DK2XHvqc.js similarity index 99% rename from assets/newbs_git_resynchronize_a_branch.md.YGDefQFx.js rename to assets/newbs_git_resynchronize_a_branch.md.DK2XHvqc.js index d4764aca987..2642b73120b 100644 --- a/assets/newbs_git_resynchronize_a_branch.md.YGDefQFx.js +++ b/assets/newbs_git_resynchronize_a_branch.md.DK2XHvqc.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Resynchronizing an Out-of-Sync Git Branch","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_git_resynchronize_a_branch.md","filePath":"newbs_git_resynchronize_a_branch.md"}'); const _sfc_main = { name: "newbs_git_resynchronize_a_branch.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Resynchronizing an Out-of-Sync Git Branch

Suppose you have committed to your master branch, and now need to update your QMK repository. You could git pull QMK's master branch into your own, but GitHub will tell you that your branch is a number of commits ahead of qmk:master, which can create issues if you want to make a pull request to QMK.

TIP

This document builds upon the concepts detailed in Your Fork's Master: Update Often, Commit Never. If you are not familiar with that document, please read it first, then return here.

Backing Up the Changes on Your Own Master Branch (Optional)

No one wants to lose work if it can be helped. If you want to save the changes you've already made to your master branch, the simplest way to do so is to simply create a duplicate of your "dirty" master branch:

git branch old_master master

Now you have a branch named old_master that is a duplicate of your master branch.

Resynchronizing Your Branch

Now it's time to resynchronize your master branch. For this step, you'll want to have QMK's repository configured as a remote in Git. To check your configured remotes, run git remote -v, which should return something similar to:

QMKuser ~/qmk_firmware (master)\n$ git remote -v\norigin  https://github.com/<your_username>/qmk_firmware.git (fetch)\norigin  https://github.com/<your_username>/qmk_firmware.git (push)\nupstream        https://github.com/qmk/qmk_firmware.git (fetch)\nupstream        https://github.com/qmk/qmk_firmware.git (push)

If you only see one fork referenced:

QMKuser ~/qmk_firmware (master)\n$ git remote -v\norigin  https://github.com/qmk/qmk_firmware.git (fetch)\norigin  https://github.com/qmk/qmk_firmware.git (push)

add a new remote with:

git remote add upstream https://github.com/qmk/qmk_firmware.git

Then, redirect the origin remote to your own fork with:

git remote set-url origin https://github.com/<your_username>/qmk_firmware.git

Now that you have both remotes configured, you need to update the references for the upstream repository, which is QMK's, by running:

git fetch --recurse-submodules upstream

At this point, resynchronize your branch to QMK's by running:

git reset --recurse-submodules --hard upstream/master

These steps will update the repository on your computer, but your GitHub fork will still be out of sync. To resynchronize your fork on GitHub, you need to push to your fork, instructing Git to override any remote changes that are not reflected in your local repository. To do this, run:

git push --recurse-submodules=on-demand --force-with-lease

WARNING

DO NOT run git push --recurse-submodules=on-demand --force-with-lease on a fork to which other users post commits. This will erase their commits.

Now your GitHub fork, your local files, and QMK's repository are all the same. From here you can make further needed changes (use a branch!) and post them as normal.

', 24); diff --git a/assets/newbs_git_resynchronize_a_branch.md.YGDefQFx.lean.js b/assets/newbs_git_resynchronize_a_branch.md.DK2XHvqc.lean.js similarity index 92% rename from assets/newbs_git_resynchronize_a_branch.md.YGDefQFx.lean.js rename to assets/newbs_git_resynchronize_a_branch.md.DK2XHvqc.lean.js index 07bf7a94fb8..9636bc6ee0a 100644 --- a/assets/newbs_git_resynchronize_a_branch.md.YGDefQFx.lean.js +++ b/assets/newbs_git_resynchronize_a_branch.md.DK2XHvqc.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Resynchronizing an Out-of-Sync Git Branch","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_git_resynchronize_a_branch.md","filePath":"newbs_git_resynchronize_a_branch.md"}'); const _sfc_main = { name: "newbs_git_resynchronize_a_branch.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 24); diff --git a/assets/newbs_git_using_your_master_branch.md.B9DxZCl8.js b/assets/newbs_git_using_your_master_branch.md.CK4m9Sny.js similarity index 99% rename from assets/newbs_git_using_your_master_branch.md.B9DxZCl8.js rename to assets/newbs_git_using_your_master_branch.md.CK4m9Sny.js index 8d035936f0d..b2c57b0b5ce 100644 --- a/assets/newbs_git_using_your_master_branch.md.B9DxZCl8.js +++ b/assets/newbs_git_using_your_master_branch.md.CK4m9Sny.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse(`{"title":"Your Fork's Master: Update Often, Commit Never","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_git_using_your_master_branch.md","filePath":"newbs_git_using_your_master_branch.md"}`); const _sfc_main = { name: "newbs_git_using_your_master_branch.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Your Fork's Master: Update Often, Commit Never

It is highly recommended for QMK development, regardless of what is being done or where, to keep your master branch updated, but never commit to it. Instead, do all your changes in a development branch and issue pull requests from your branches when you're developing.

To reduce the chances of merge conflicts — instances where two or more users have edited the same part of a file concurrently — keep your master branch relatively up-to-date, and start any new developments by creating a new branch.

Updating your master branch

To keep your master branch updated, it is recommended to add the QMK Firmware repository ("repo") as a remote repository in git. To do this, open your Git command line interface and enter:

git remote add upstream https://github.com/qmk/qmk_firmware.git

TIP

The name upstream is arbitrary, but a common convention; you can give the QMK remote any name that suits you. Git's remote command uses the syntax git remote add <name> <url>, <name> being shorthand for the remote repo. This name can be used with many Git commands, including but not limited to fetch, pull and push, to specify the remote repo on which to act.

To verify that the repository has been added, run git remote -v, which should return the following:

$ git remote -v\norigin  https://github.com/<your_username>/qmk_firmware.git (fetch)\norigin  https://github.com/<your_username>/qmk_firmware.git (push)\nupstream        https://github.com/qmk/qmk_firmware.git (fetch)\nupstream        https://github.com/qmk/qmk_firmware.git (push)

Now that this is done, you can check for updates to the repo by running git fetch upstream. This retrieves the branches and tags — collectively referred to as "refs" — from the QMK repo, which now has the nickname upstream. We can now compare the data on our fork origin to that held by QMK.

To update your fork's master, run the following, hitting the Enter key after each line:

git checkout master\ngit fetch upstream\ngit pull upstream master\ngit push origin master

This switches you to your master branch, retrieves the refs from the QMK repo, downloads the current QMK master branch to your computer, and then uploads it to your fork.

Making Changes

To make changes, create a new branch by entering:

git checkout -b dev_branch\ngit push --set-upstream origin dev_branch

This creates a new branch named dev_branch, checks it out, and then saves the new branch to your fork. The --set-upstream argument tells git to use your fork and the dev_branch branch every time you use git push or git pull from this branch. It only needs to be used on the first push; after that, you can safely use git push or git pull, without the rest of the arguments.

TIP

With git push, you can use -u in place of --set-upstream-u is an alias for --set-upstream.

You can name your branch nearly anything you want, though it is recommended to name it something related to the changes you are going to make.

By default git checkout -b will base your new branch on the branch that is currently checked out. You can base your new branch on an existing branch that is not checked out by adding the name of the existing branch to the command:

git checkout -b dev_branch master

Now that you have a development branch, open your text editor and make whatever changes you need to make. It is recommended to make many small commits to your branch; that way, any change that causes issues can be more easily traced and undone if needed. To make your changes, edit and save any files that need to be updated, add them to Git's staging area, and then commit them to your branch:

git add path/to/updated_file\ngit commit -m "My commit message."

git add adds files that have been changed to Git's staging area, which is Git's "loading zone." This contains the changes that are going to be committed by git commit, which saves the changes to the repo. Use descriptive commit messages so you can know what was changed at a glance.

TIP

If you've changed multiple files, you can use git add -- path/to/file1 path/to/file2 ... to add all your desired files.

Publishing Your Changes

The last step is to push your changes to your fork. To do this, enter git push. Git will then publish the current state of dev_branch to your fork.

', 27); diff --git a/assets/newbs_git_using_your_master_branch.md.B9DxZCl8.lean.js b/assets/newbs_git_using_your_master_branch.md.CK4m9Sny.lean.js similarity index 92% rename from assets/newbs_git_using_your_master_branch.md.B9DxZCl8.lean.js rename to assets/newbs_git_using_your_master_branch.md.CK4m9Sny.lean.js index 387b41e3375..c7b577823ac 100644 --- a/assets/newbs_git_using_your_master_branch.md.B9DxZCl8.lean.js +++ b/assets/newbs_git_using_your_master_branch.md.CK4m9Sny.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse(`{"title":"Your Fork's Master: Update Often, Commit Never","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_git_using_your_master_branch.md","filePath":"newbs_git_using_your_master_branch.md"}`); const _sfc_main = { name: "newbs_git_using_your_master_branch.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 27); diff --git a/assets/newbs_learn_more_resources.md.Dj1s2BDG.js b/assets/newbs_learn_more_resources.md.DJeo5kRX.js similarity index 98% rename from assets/newbs_learn_more_resources.md.Dj1s2BDG.js rename to assets/newbs_learn_more_resources.md.DJeo5kRX.js index 6462ca8c87f..3808b5a5d4a 100644 --- a/assets/newbs_learn_more_resources.md.Dj1s2BDG.js +++ b/assets/newbs_learn_more_resources.md.DJeo5kRX.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Learning Resources","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_learn_more_resources.md","filePath":"newbs_learn_more_resources.md"}'); const _sfc_main = { name: "newbs_learn_more_resources.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Learning Resources

These resources are aimed at giving new members in the QMK community more understanding to the information provided in the Newbs docs.

QMK resources

Command Line resources

Text Editor resources

Not sure which text editor to use?

Editors specifically made for code:

Git resources

', 13); diff --git a/assets/newbs_learn_more_resources.md.Dj1s2BDG.lean.js b/assets/newbs_learn_more_resources.md.DJeo5kRX.lean.js similarity index 92% rename from assets/newbs_learn_more_resources.md.Dj1s2BDG.lean.js rename to assets/newbs_learn_more_resources.md.DJeo5kRX.lean.js index b9f993c7835..d1091469222 100644 --- a/assets/newbs_learn_more_resources.md.Dj1s2BDG.lean.js +++ b/assets/newbs_learn_more_resources.md.DJeo5kRX.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Learning Resources","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_learn_more_resources.md","filePath":"newbs_learn_more_resources.md"}'); const _sfc_main = { name: "newbs_learn_more_resources.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 13); diff --git a/assets/newbs_testing_debugging.md.D-c7Gle_.js b/assets/newbs_testing_debugging.md.DIfKsMTC.js similarity index 95% rename from assets/newbs_testing_debugging.md.D-c7Gle_.js rename to assets/newbs_testing_debugging.md.DIfKsMTC.js index 50fab7d3ad8..aacc70a4ae6 100644 --- a/assets/newbs_testing_debugging.md.D-c7Gle_.js +++ b/assets/newbs_testing_debugging.md.DIfKsMTC.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Testing and Debugging","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_testing_debugging.md","filePath":"newbs_testing_debugging.md"}'); const _sfc_main = { name: "newbs_testing_debugging.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Testing and Debugging

Testing

Moved here

Debugging

Moved here

', 5); diff --git a/assets/newbs_testing_debugging.md.D-c7Gle_.lean.js b/assets/newbs_testing_debugging.md.DIfKsMTC.lean.js similarity index 91% rename from assets/newbs_testing_debugging.md.D-c7Gle_.lean.js rename to assets/newbs_testing_debugging.md.DIfKsMTC.lean.js index d9ffd9b2a5c..0f5be62e5f2 100644 --- a/assets/newbs_testing_debugging.md.D-c7Gle_.lean.js +++ b/assets/newbs_testing_debugging.md.DIfKsMTC.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Testing and Debugging","description":"","frontmatter":{},"headers":[],"relativePath":"newbs_testing_debugging.md","filePath":"newbs_testing_debugging.md"}'); const _sfc_main = { name: "newbs_testing_debugging.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 5); diff --git a/assets/one_shot_keys.md.QR09rSb-.js b/assets/one_shot_keys.md.DG5UoHI0.js similarity index 99% rename from assets/one_shot_keys.md.QR09rSb-.js rename to assets/one_shot_keys.md.DG5UoHI0.js index a4ee0439ee6..e6086ecf30f 100644 --- a/assets/one_shot_keys.md.QR09rSb-.js +++ b/assets/one_shot_keys.md.DG5UoHI0.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"One Shot Keys","description":"","frontmatter":{},"headers":[],"relativePath":"one_shot_keys.md","filePath":"one_shot_keys.md"}'); const _sfc_main = { name: "one_shot_keys.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

One Shot Keys

One shot keys are keys that remain active until the next key is pressed, and then are released. This allows you to type keyboard combinations without pressing more than one key at a time. These keys are usually called "Sticky keys" or "Dead keys".

For example, if you define a key as OSM(MOD_LSFT), you can type a capital A character by first pressing and releasing shift, and then pressing and releasing A. Your computer will see the shift key being held the moment shift is pressed, and it will see the shift key being released immediately after A is released.

One shot keys also work as normal modifiers. If you hold down a one shot key and type other keys, your one shot will be released immediately after you let go of the key.

Additionally, hitting keys five times in a short period will lock that key. This applies for both One Shot Modifiers and One Shot Layers, and is controlled by the ONESHOT_TAP_TOGGLE define.

You can control the behavior of one shot keys by defining these in config.h:

c
#define ONESHOT_TAP_TOGGLE 5  /* Tapping this number of times holds the key until tapped once again. */\n#define ONESHOT_TIMEOUT 5000  /* Time (in ms) before the one shot key is released */

Sometimes, you want to activate a one-shot key as part of a macro or tap dance routine.

For one shot layers, you need to call set_oneshot_layer(LAYER, ONESHOT_START) on key down, and clear_oneshot_layer_state(ONESHOT_PRESSED) on key up. If you want to cancel the oneshot, call reset_oneshot_layer().

For one shot mods, you need to call set_oneshot_mods(MOD_BIT(KC_*)) to set it, or clear_oneshot_mods() to cancel it.

WARNING

If you're having issues with OSM translating over Remote Desktop Connection, this can be fixed by opening the settings, going to the "Local Resources" tab, and in the keyboard section, change the drop down to "On this Computer". This will fix the issue and allow OSM to function properly over Remote Desktop.

Callbacks

When you'd like to perform custom logic when pressing a one shot key, there are several callbacks you can choose to implement. You could indicate changes in one shot keys by flashing an LED or making a sound, for example.

There is a callback for OSM(mod). It is called whenever the state of any one shot modifier key is changed: when it toggles on, but also when it is toggled off. You can use it like this:

c
void oneshot_mods_changed_user(uint8_t mods) {\n  if (mods & MOD_MASK_SHIFT) {\n    println("Oneshot mods SHIFT");\n  }\n  if (mods & MOD_MASK_CTRL) {\n    println("Oneshot mods CTRL");\n  }\n  if (mods & MOD_MASK_ALT) {\n    println("Oneshot mods ALT");\n  }\n  if (mods & MOD_MASK_GUI) {\n    println("Oneshot mods GUI");\n  }\n  if (!mods) {\n    println("Oneshot mods off");\n  }\n}

The mods argument contains the active mods after the change, so it reflects the current state.

When you use One Shot Tap Toggle (by adding #define ONESHOT_TAP_TOGGLE 2 in your config.h file), you may lock a modifier key by pressing it the specified amount of times. There's a callback for that, too:

c
void oneshot_locked_mods_changed_user(uint8_t mods) {\n  if (mods & MOD_MASK_SHIFT) {\n    println("Oneshot locked mods SHIFT");\n  }\n  if (mods & MOD_MASK_CTRL) {\n    println("Oneshot locked mods CTRL");\n  }\n  if (mods & MOD_MASK_ALT) {\n    println("Oneshot locked mods ALT");\n  }\n  if (mods & MOD_MASK_GUI) {\n    println("Oneshot locked mods GUI");\n  }\n  if (!mods) {\n    println("Oneshot locked mods off");\n  }\n}

Last, there is also a callback for the OSL(layer) one shot key:

c
void oneshot_layer_changed_user(uint8_t layer) {\n  if (layer == 1) {\n    println("Oneshot layer 1 on");\n  }\n  if (!layer) {\n    println("Oneshot layer off");\n  }\n}

If any one shot layer is switched off, layer will be zero. When you're looking to do something on any layer change instead of one shot layer changes, layer_state_set_user is a better callback to use.

If you are making your own keyboard, there are also _kb equivalent functions:

c
void oneshot_locked_mods_changed_kb(uint8_t mods);\nvoid oneshot_mods_changed_kb(uint8_t mods);\nvoid oneshot_layer_changed_kb(uint8_t layer);

As with any callback, be sure to call the _user variant to allow for further customizability.

', 25); diff --git a/assets/one_shot_keys.md.QR09rSb-.lean.js b/assets/one_shot_keys.md.DG5UoHI0.lean.js similarity index 91% rename from assets/one_shot_keys.md.QR09rSb-.lean.js rename to assets/one_shot_keys.md.DG5UoHI0.lean.js index 3c4c433c87d..dcbbdf8859c 100644 --- a/assets/one_shot_keys.md.QR09rSb-.lean.js +++ b/assets/one_shot_keys.md.DG5UoHI0.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"One Shot Keys","description":"","frontmatter":{},"headers":[],"relativePath":"one_shot_keys.md","filePath":"one_shot_keys.md"}'); const _sfc_main = { name: "one_shot_keys.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 25); diff --git a/assets/other_eclipse.md.C-zqyJO9.js b/assets/other_eclipse.md.CWb0jnQC.js similarity index 99% rename from assets/other_eclipse.md.C-zqyJO9.js rename to assets/other_eclipse.md.CWb0jnQC.js index 35872b09d99..efd0edc7ff3 100644 --- a/assets/other_eclipse.md.C-zqyJO9.js +++ b/assets/other_eclipse.md.CWb0jnQC.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Setting up Eclipse for QMK Development","description":"","frontmatter":{},"headers":[],"relativePath":"other_eclipse.md","filePath":"other_eclipse.md"}'); const _sfc_main = { name: "other_eclipse.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Setting up Eclipse for QMK Development

Eclipse is an open-source Integrated Development Environment (IDE) widely used for Java development, but with an extensible plugin system that allows to customize it for other languages and usages.

Using an IDE such as Eclipse provides many advantages over a plain text editor, such as:

The purpose of this page is to document how to set-up Eclipse for developing AVR software, and working on the QMK code base.

Note that this set-up has been tested on Ubuntu 16.04 only for the moment.

Prerequisites

Build Environment

Before starting, you must have followed the Getting Started section of the Tutorial. In particular, you must have been able to build the firmware with the qmk compile command.

Java

Eclipse is a Java application, so you will need to install Java 8 or more recent to be able to run it. You may choose between the JRE or the JDK, the latter being useful if you intend to do Java development.

Install Eclipse and Its Plugins

Eclipse comes in several flavours depending on the target usage that you will have. There is no package comprising the AVR stack, so we will need to start from Eclipse CDT (C/C++ Development Tooling) and install the necessary plugins.

Download and Install Eclipse CDT

If you already have Eclipse CDT on your system, you can skip this step. However it is advised to keep it up-to-date for better support.

If you have another Eclipse package installed, it is normally possible to install the CDT plugin over it. However it is probably better to reinstall it from scratch to keep it light and avoid the clutter of tools that you don't need for the projects you will be working on.

Installation is very simple: follow the 5 Steps to Install Eclipse, and choose Eclipse IDE for C/C++ Developers at Step 3.

Alternatively, you can also directly download Eclipse IDE for C/C++ Developers (direct link to current version) and extract the package to the location of your choice (this creates an eclipse folder).

First Launch

When installation is complete, click the Launch button. (If you extracted the package manually, open the Eclipse installation folder and double-click the eclipse executable)

When you are prompted with the Workspace Selector, select a directory that will hold Eclipse metadata and usually your projects. Do not select the qmk_firmware directory, this will be the project directory. Select the parent folder instead, or another (preferably empty) folder of your choice (the default is fine if you do not use it yet).

Once started, click the Workbench button at the top right to switch to the workbench view (there is a also checkbox at the bottom to skip the welcome screen at startup).

Install the Necessary Plugins

Note: you do not need to restart Eclipse after installing each plugin. Simply restart once all plugins are installed.

The AVR Plugin

This is the most important plugin as it will allow Eclipse to understand AVR C code. Follow the instructions for using the update site, and agree with the security warning for unsigned content.

ANSI Escape in Console

This plugin is necessary to properly display the colored build output generated by the QMK makefile.

  1. Open Help > Eclipse Marketplace…
  2. Search for ANSI Escape in Console
  3. Click the Install button of the plugin
  4. Follow the instructions and agree again with the security warning for unsigned content.

Once both plugins are installed, restart Eclipse as prompted.

Configure Eclipse for QMK

Importing the Project

  1. Click File > New > Makefile Project with Existing Code
  2. On the next screen:

Importing QMK in Eclipse

  1. The project will now be loaded and indexed. Its files can be browsed easily through the Project Explorer on the left.

¹ There might be issues for importing the project with a custom name. If it does not work properly, try leaving the default project name (i.e. the name of the directory, probably qmk_firmware).

Build Your Keyboard

We will now change the default make target of the project from all to the specific keyboard and keymap combination we are working on, e.g. kinesis/kint36:stapelberg. This way, project-wide actions like cleaning and building the project will complete quickly, instead of taking a long time or outright locking up Eclipse.

  1. Focus an editor tab within the project
  2. Open the Project > Properties window, then select the C/C++ Build list entry and switch to the Behavior tab.
  3. Change the default Make build target text fields for all enabled builds from all to e.g. kinesis/kint41:stapelberg.
  4. Verify your setup works by selecting Project > Clean....
', 40); diff --git a/assets/other_eclipse.md.C-zqyJO9.lean.js b/assets/other_eclipse.md.CWb0jnQC.lean.js similarity index 91% rename from assets/other_eclipse.md.C-zqyJO9.lean.js rename to assets/other_eclipse.md.CWb0jnQC.lean.js index c7cc1821cf6..b215ce73339 100644 --- a/assets/other_eclipse.md.C-zqyJO9.lean.js +++ b/assets/other_eclipse.md.CWb0jnQC.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Setting up Eclipse for QMK Development","description":"","frontmatter":{},"headers":[],"relativePath":"other_eclipse.md","filePath":"other_eclipse.md"}'); const _sfc_main = { name: "other_eclipse.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 40); diff --git a/assets/other_vscode.md.Di3vOySR.js b/assets/other_vscode.md.BDsv-WIr.js similarity index 99% rename from assets/other_vscode.md.Di3vOySR.js rename to assets/other_vscode.md.BDsv-WIr.js index 333fb4d13d8..37edc7d3928 100644 --- a/assets/other_vscode.md.Di3vOySR.js +++ b/assets/other_vscode.md.BDsv-WIr.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Setting up Visual Studio Code for QMK Development","description":"","frontmatter":{},"headers":[],"relativePath":"other_vscode.md","filePath":"other_vscode.md"}'); const _sfc_main = { name: "other_vscode.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Setting up Visual Studio Code for QMK Development

Visual Studio Code (VS Code) is an open-source code editor that supports many different programming languages.

Using a full-featured editor such as VS Code provides many advantages over a plain text editor, such as:

The purpose of this page is to document how to set up VS Code for developing QMK Firmware.

This guide covers how to configure everything needed on Windows and Ubuntu 18.04

Set up VS Code

Before starting, you will want to make sure that you have all of the build tools set up, and QMK Firmware cloned. Head to the Newbs Getting Started Guide to get things set up, if you haven't already.

Windows

Prerequisites

Installing VS Code

  1. Head to VS Code and download the installer
  2. Run the installer

This part is super simple. However, there is some configuration that we need to do to ensure things are configured correctly.

MSYS2 Setup

Now, we will set up the MSYS2 window to show up in VSCode as the integrated terminal. This has a number of advantages. Mostly, you can control+click on errors and jump to those files. This makes debugging much easier. It's also nice, in that you don't have to jump to another window.

  1. Click File > Preferences > > Settings

  2. Click on the {} button, in the top right to open the settings.json file.

  3. Set the file's content to:

    json
    {\n     "terminal.integrated.profiles.windows": {\n         "QMK_MSYS": {\n             "path": "C:/QMK_MSYS/usr/bin/bash.exe",\n             "env": {\n                 "MSYSTEM": "MINGW64",\n                 "CHERE_INVOKING": "1"\n             },\n             "args": ["--login"]\n         }\n     },\n\n     "terminal.integrated.cursorStyle": "line"\n }

    If there are settings here already, then just add everything between the first and last curly brackets and separate the existing settings with a comma from the newly added ones.

TIP

If you installed MSYS2 to a different folder, then you'll need to change the path for terminal.integrated.shell.windows to the correct path for your system.

  1. Hit Ctrl-` (Grave) to bring up the terminal or go to View > Terminal (command workbench.action.terminal.toggleTerminal). A new terminal will be opened if there isn‘t one already.

    This should start the terminal in the workspace's folder (so the qmk_firmware folder), and then you can compile your keyboard.

Every other Operating System

  1. Head to VS Code and download the installer
  2. Run the installer
  3. That's it

No, really, that's it. The paths needed are already included when installing the packages, and it is much better about detecting the current workspace files and parsing them for IntelliSense.

Extensions

There are a number of extensions that you may want to install:

Restart once you've installed any extensions.

Configure VS Code for QMK

  1. Click File > Open Folder
  2. Open the QMK Firmware folder that you cloned from GitHub.
  3. Click File > Save Workspace As...

Configuring VS Code

Using the standard compile_commands.json database, we can get the VS code clangd extension to use the correct includes and defines used for your keyboard and keymap.

  1. Run qmk generate-compilation-database -kb <keyboard> -km <keymap> to generate the compile_commands.json.
  2. Inside VS code, press Ctrl + Shift + P (macOS: Command + Shift + P) to open the command palette.
  3. Start typing clangd: Download Language Server and select it when it appears. Note that this only needs to be done once on clangd extension installation, if it didn't already ask to do so.
  4. Inside VS code, press Ctrl + Shift + P (macOS: Command + Shift + P) to open the command palette.
  5. Start typing clangd: Restart Language Server and select it when it appears.

Now you're ready to code QMK Firmware in VS Code!

Debugging ARM MCUs with Visual Studio Code

...and a Black Magic Probe.

Visual Studio Code has the ability to debug applications, but requires some configuration in order to get it to be able to do so for ARM targets.

This documentation describes a known-working configuration for setting up the use of a Black Magic Probe to debug using VS Code.

It is assumed that you've correctly set up the electrical connectivity of the Black Magic Probe with your MCU. Wiring up NRST, SWDIO, SWCLK, and GND should be enough.

Install the following plugin into VS Code:

A debugging target for the MCU for your board needs to be defined, and can be done so by adding the following to a .vscode/launch.json file:

json
{\n  // Use IntelliSense to learn about possible attributes.\n  // Hover to view descriptions of existing attributes.\n  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387\n  "version": "0.2.0",\n  "configurations": [\n    {\n      "name": "Black Magic Probe (OneKey Proton-C)",\n      "type": "cortex-debug",\n      "request": "launch",\n      "cwd": "${workspaceRoot}",\n      "executable": "${workspaceRoot}/.build/handwired_onekey_proton_c_default.elf",\n      "servertype": "bmp",\n      "BMPGDBSerialPort": "COM4",\n      "svdFile": "Q:\\\\svd\\\\STM32F303.svd",\n      "device": "STM32F303",\n      "v1": false,\n      "windows": {\n        "armToolchainPath": "C:\\\\QMK_MSYS\\\\mingw64\\\\bin"\n      }\n    }\n  ]\n}

You'll need to perform some modifications to the file above in order to target your specific device:

WARNING

Windows builds of QMK Firmware are generally compiled using QMK MSYS, and the path to gdb's location (C:\\\\QMK_MSYS\\\\mingw64\\\\bin) needs to be specified under armToolchainPath for it to be detected. You may also need to change the GDB path to point at C:\\\\QMK_MSYS\\\\mingw64\\\\bin\\\\gdb-multiarch.exe in the VSCode Cortex-Debug user settings: VSCode Settings

Optionally, the following modifications should also be made to the keyboard's rules.mk file to disable optimisations -- not strictly required but will ensure breakpoints and variable viewing works correctly:

makefile
# Disable optimisations for debugging purposes\nLTO_ENABLE = no\nOPT = g\nDEBUG = 3

At this point, you should build and flash your firmware through normal methods (qmk compile ... and qmk flash ...).

Once completed, you can:

VS Code's debugger will then start executing the compiled firmware on the MCU.

At this stage, you should have full debugging set up, with breakpoints and variable listings working!

', 51); diff --git a/assets/other_vscode.md.Di3vOySR.lean.js b/assets/other_vscode.md.BDsv-WIr.lean.js similarity index 91% rename from assets/other_vscode.md.Di3vOySR.lean.js rename to assets/other_vscode.md.BDsv-WIr.lean.js index 1f415bf86a3..356b84bd60b 100644 --- a/assets/other_vscode.md.Di3vOySR.lean.js +++ b/assets/other_vscode.md.BDsv-WIr.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Setting up Visual Studio Code for QMK Development","description":"","frontmatter":{},"headers":[],"relativePath":"other_vscode.md","filePath":"other_vscode.md"}'); const _sfc_main = { name: "other_vscode.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 51); diff --git a/assets/platformdev_blackpill_f4x1.md.DvObLRuk.js b/assets/platformdev_blackpill_f4x1.md.BvgwJuB9.js similarity index 99% rename from assets/platformdev_blackpill_f4x1.md.DvObLRuk.js rename to assets/platformdev_blackpill_f4x1.md.BvgwJuB9.js index 9011134d108..8c3f74de6e6 100644 --- a/assets/platformdev_blackpill_f4x1.md.DvObLRuk.js +++ b/assets/platformdev_blackpill_f4x1.md.BvgwJuB9.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"WeAct Blackpill (STM32F4x1)","description":"","frontmatter":{},"headers":[],"relativePath":"platformdev_blackpill_f4x1.md","filePath":"platformdev_blackpill_f4x1.md"}'); const _sfc_main = { name: "platformdev_blackpill_f4x1.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

WeAct Blackpill (STM32F4x1)

This document applies to the F401- and F411-based Blackpills.

The WeAct Blackpill is a popular choice for handwired boards, as it offers a powerful micro controller, USB Type C, a good number of pins to use, and a large amount of firmware space. All for a ~$6 USD price tag.

Blackpill F411

Pin Usage Limitations

While the Blackpill is a great choice to use in your keyboard, there are a number of caveats in regards to using them. The first is that a number of exposed pins cannot be used, or have special considerations/hardware tweaks that are required for proper operation.

Unusable pins

Pins to be avoided

Shared Usage

Limited Usage

Additional Information

Bootloader issues

Due to the use of a 25MHz crystal, the controller may have issues entering the bootloader. Heating up the controller can help with this issue.

Also, if pin A10 is connected to anything at all, it needs to have a pull-up resistor (see Pins to be avoided, above)

Tiny UF2 Support

There is tinyuf2 support for the WeAct Blackpill. Instructions on how to compile the bootloader can be found here. Setting BOOTLOADER = tinyuf2 will enable support for this user bootloader, and the correct configuration to prevent it from being overwritten when flashing firmware.

', 21); diff --git a/assets/platformdev_blackpill_f4x1.md.DvObLRuk.lean.js b/assets/platformdev_blackpill_f4x1.md.BvgwJuB9.lean.js similarity index 92% rename from assets/platformdev_blackpill_f4x1.md.DvObLRuk.lean.js rename to assets/platformdev_blackpill_f4x1.md.BvgwJuB9.lean.js index ca8c3111b5c..9dfbb53be99 100644 --- a/assets/platformdev_blackpill_f4x1.md.DvObLRuk.lean.js +++ b/assets/platformdev_blackpill_f4x1.md.BvgwJuB9.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"WeAct Blackpill (STM32F4x1)","description":"","frontmatter":{},"headers":[],"relativePath":"platformdev_blackpill_f4x1.md","filePath":"platformdev_blackpill_f4x1.md"}'); const _sfc_main = { name: "platformdev_blackpill_f4x1.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 21); diff --git a/assets/platformdev_chibios_earlyinit.md.BQJSTP3y.js b/assets/platformdev_chibios_earlyinit.md.BKgGp6Ev.js similarity index 99% rename from assets/platformdev_chibios_earlyinit.md.BQJSTP3y.js rename to assets/platformdev_chibios_earlyinit.md.BKgGp6Ev.js index 20716d981b5..726eabfd506 100644 --- a/assets/platformdev_chibios_earlyinit.md.BQJSTP3y.js +++ b/assets/platformdev_chibios_earlyinit.md.BKgGp6Ev.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Arm/ChibiOS Early Initialization","description":"","frontmatter":{},"headers":[],"relativePath":"platformdev_chibios_earlyinit.md","filePath":"platformdev_chibios_earlyinit.md"}'); const _sfc_main = { name: "platformdev_chibios_earlyinit.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Arm/ChibiOS Early Initialization

This page describes a part of QMK that is a somewhat advanced concept, and is only relevant to keyboard designers.

QMK uses ChibiOS as the underlying layer to support a multitude of Arm-based devices. Each ChibiOS-supported keyboard has a low-level board definition which is responsible for initializing hardware peripherals such as the clocks, and GPIOs.

Older QMK revisions required duplication of these board definitions inside your keyboard's directory in order to override such early initialization points; this is now abstracted into the following APIs, and allows usage of the board definitions supplied with ChibiOS itself. Check <qmk_firmware>/lib/chibios/os/hal/boards for the list of official definitions. If your keyboard needs extra initialization at a very early stage, consider providing keyboard-level overrides of the following APIs instead of duplicating the board definitions:

early_hardware_init_pre()

The function early_hardware_init_pre is the earliest possible code that can be executed by a keyboard firmware. This is intended as a replacement for the ChibiOS board definition's __early_init function, and is the equivalent of executing at the start of the function.

This is executed before RAM gets cleared, and before clocks or GPIOs are configured; for example, ChibiOS delays are not likely to work at this point. After executing this function, RAM on the MCU may be zero'ed. Assigning values to variables during execution of this function may be overwritten.

As such, if you wish to override this API consider limiting use to writing to low-level registers. The default implementation of this function can be configured to jump to bootloader if a QK_BOOT key was pressed:

config.h overrideDescriptionDefault
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMPWhether or not bootloader is to be executed during the early initialisation code of QMK.FALSE
#define STM32_BOOTLOADER_DUAL_BANKRelevant for dual-bank STM32 MCUs, signifies that a GPIO is to be toggled in order to enter bootloader mode.FALSE
#define STM32_BOOTLOADER_DUAL_BANK_GPIORelevant for dual-bank STM32 MCUs, the pin to toggle when attempting to enter bootloader mode, e.g. B8<none>
#define STM32_BOOTLOADER_DUAL_BANK_POLARITYRelevant for dual-bank STM32 MCUs, the value to set the pin to in order to trigger charging of the RC circuit. e.g. 0 or 1.0
#define STM32_BOOTLOADER_DUAL_BANK_DELAYRelevant for dual-bank STM32 MCUs, an arbitrary measurement of time to delay before resetting the MCU. Increasing number increases the delay.100

Kinetis MCUs have no configurable options.

Alternatively, to implement your own version of this function, in your keyboard's source files:

c
void early_hardware_init_pre(void) {\n    // do things with registers\n}

early_hardware_init_post()

The function early_hardware_init_post is the next earliest possible code that can be executed by a keyboard firmware. This is executed after RAM has been cleared, and clocks and GPIOs are configured. This is intended as a replacement for the ChibiOS board definition's __early_init function, and is the equivalent of executing at the end of the function.

Much like early_hardware_init_pre, ChibiOS has not yet been initialized either, so the same restrictions on delays and timing apply.

If you wish to override this API, consider limiting functionality to register writes, variable initialization, and GPIO toggling. The default implementation of this function is to do nothing.

To implement your own version of this function, in your keyboard's source files:

c
void early_hardware_init_post(void) {\n    // toggle GPIO pins and write to variables\n}

board_init()

The function board_init is executed directly after the ChibiOS initialization routines have completed. At this stage, all normal low-level functionality should be available for use (including timers and delays), with the restriction that USB is not yet connected. This is intended as a replacement for the ChibiOS board definition's boardInit function.

The default implementation of this function is to do nothing.

To implement your own version of this function, in your keyboard's source files:

c
void board_init(void) {\n    // initialize anything that requires ChibiOS\n}
', 23); diff --git a/assets/platformdev_chibios_earlyinit.md.BQJSTP3y.lean.js b/assets/platformdev_chibios_earlyinit.md.BKgGp6Ev.lean.js similarity index 92% rename from assets/platformdev_chibios_earlyinit.md.BQJSTP3y.lean.js rename to assets/platformdev_chibios_earlyinit.md.BKgGp6Ev.lean.js index c57e1f5e4d5..f4cc854ba7e 100644 --- a/assets/platformdev_chibios_earlyinit.md.BQJSTP3y.lean.js +++ b/assets/platformdev_chibios_earlyinit.md.BKgGp6Ev.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Arm/ChibiOS Early Initialization","description":"","frontmatter":{},"headers":[],"relativePath":"platformdev_chibios_earlyinit.md","filePath":"platformdev_chibios_earlyinit.md"}'); const _sfc_main = { name: "platformdev_chibios_earlyinit.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 23); diff --git a/assets/platformdev_proton_c.md.CDRuJBvD.js b/assets/platformdev_proton_c.md.65AUzKpy.js similarity index 98% rename from assets/platformdev_proton_c.md.CDRuJBvD.js rename to assets/platformdev_proton_c.md.65AUzKpy.js index b269a397b3e..1b8e2f82db5 100644 --- a/assets/platformdev_proton_c.md.CDRuJBvD.js +++ b/assets/platformdev_proton_c.md.65AUzKpy.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Proton C","description":"","frontmatter":{},"headers":[],"relativePath":"platformdev_proton_c.md","filePath":"platformdev_proton_c.md"}'); const _sfc_main = { name: "platformdev_proton_c.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Proton C

The Proton C is an Arm STM32F303xC based drop-in replacement for the Pro Micro.

Proton C

Features

Warnings

Some of the PCBs compatible with Pro Micro have VCC (3.3V) and RAW (5V) pins connected (shorted) on the pcb. Using the Proton C will short 5V power from USB and regulated 3.3V which is connected directly to the MCU. Shorting those pins may damage the MCU on the Proton C.

So far, it appears that this is only an issue on the Gherkin PCBs, but other PCBs may be affected in this way.

In this case, you may want to not hook up the RAW pin at all.

Manual Conversion

To use the Proton C natively, without having to specify CONVERT_TO=proton_c, you need to change the MCU line in rules.mk:

MCU = STM32F303\nBOARD = QMK_PROTON_C

Remove these variables if they exist:

Finally convert all pin assignments in config.h to the stm32 equivalents.

Pro Micro LeftProton C LeftProton C RightPro Micro Right
D3A95vRAW (5v)
D2A10GNDGND
GNDGNDFLASHRESET
GNDGND3.3vVCC 1
D1B7A2F4
D0B6A1F5
D4B5A0F6
C6B4B8F7
D7B3B13B1
E6B2B14B3
B4B1B15B2
B5B0B9B6
B0 (RX LED)C13 2C13 2D5 (TX LED)

You can also make use of several new pins on the extended portion of the Proton C:

LeftRight
A43B10
A54B11
A6B12
A7A145 (SWCLK)
A8A135 (SWDIO)
A15RESET6

Notes:

  1. On a Pro Micro VCC can be 3.3v or 5v.
  2. A Proton C only has one onboard LED, not two like a Pro Micro. The Pro Micro has an RX LED on D5 and a TX LED on B0.
  3. A4 is shared with the speaker.
  4. A5 is shared with the speaker.
  5. A13 and A14 are used for hardware debugging (SWD). You can also use them for GPIO, but should use them last.
  6. Short RESET to 3.3v (pull high) to reboot the MCU. This does not enter bootloader mode like a Pro Micro, it only resets the MCU.
', 20); diff --git a/assets/platformdev_proton_c.md.CDRuJBvD.lean.js b/assets/platformdev_proton_c.md.65AUzKpy.lean.js similarity index 91% rename from assets/platformdev_proton_c.md.CDRuJBvD.lean.js rename to assets/platformdev_proton_c.md.65AUzKpy.lean.js index ab8072795c0..be20dd77cb4 100644 --- a/assets/platformdev_proton_c.md.CDRuJBvD.lean.js +++ b/assets/platformdev_proton_c.md.65AUzKpy.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Proton C","description":"","frontmatter":{},"headers":[],"relativePath":"platformdev_proton_c.md","filePath":"platformdev_proton_c.md"}'); const _sfc_main = { name: "platformdev_proton_c.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 20); diff --git a/assets/platformdev_rp2040.md.CYKYMDfc.js b/assets/platformdev_rp2040.md.B44Xs-cn.js similarity index 99% rename from assets/platformdev_rp2040.md.CYKYMDfc.js rename to assets/platformdev_rp2040.md.B44Xs-cn.js index 947d8d3665d..7446ad81cf9 100644 --- a/assets/platformdev_rp2040.md.CYKYMDfc.js +++ b/assets/platformdev_rp2040.md.B44Xs-cn.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Raspberry Pi RP2040","description":"","frontmatter":{},"headers":[],"relativePath":"platformdev_rp2040.md","filePath":"platformdev_rp2040.md"}'); const _sfc_main = { name: "platformdev_rp2040.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Raspberry Pi RP2040

The following table shows the current driver status for peripherals on RP2040 MCUs:

SystemSupport
ADC driver✔️
Audio✔️
Backlight✔️
I2C driver✔️
SPI driver✔️
WS2812 driver✔️ using PIO driver
External EEPROMs✔️ using I2C or SPI driver
EEPROM emulation✔️
serial driver✔️ using SIO or PIO driver
UART driver✔️ using SIO driver

GPIO

Raspberry Pi Pico pinoutSparkfun RP2040 Pro Micro pinout

WARNING

The GPIO pins of the RP2040 are not 5V tolerant!

Pin nomenclature

To address individual pins on the RP2040, QMK uses the GPx abbreviation -- where the x stands for the GPIO number of the pin. This number can likely be found on the official pinout diagram of your board. Note that these GPIO numbers match the RP2040 MCU datasheet, and don't necessarily match the number you see printed on the board. For instance the Raspberry Pi Pico uses numbers from 1 to 40 for their pins, but these are not identical to the RP2040's GPIO numbers. So if you want to use the pin 11 of the Pico for your keyboard, you would refer to it as GP8 in the config files.

Alternate functions

The RP2040 features flexible GPIO function multiplexing, this means that every pin can be connected to nearly all the internal peripherals like I2C, SPI, UART or PWM. This allows for flexible PCB designs that are much less restricted in the selection of GPIO pins. To find out which pin can use which peripheral refer to the official Raspberry PI RP2040 datasheet section 1.4.3 GPIO functions.

Selecting hardware peripherals and drivers

QMK RP2040 support builds upon ChibiOS and thus follows their convention for activating drivers and associated hardware peripherals. These tables only give a quick overview which values have to be used, please refer to the ChibiOS specific sections on the driver pages.

I2C Driver

RP2040 Peripheralmcuconf.h valuesI2C_DRIVER
I2C0RP_I2C_USE_I2C0I2CD0
I2C1RP_I2C_USE_I2C1I2CD1

To configure the I2C driver please read the ChibiOS/ARM section.

SPI Driver

RP2040 Peripheralmcuconf.h valuesSPI_DRIVER
SPI0RP_SPI_USE_SPI0SPID0
SPI1RP_SPI_USE_SPI1SPID1

To configure the SPI driver please read the ChibiOS/ARM section.

UART Driver

RP2040 Peripheralmcuconf.h valuesUART_DRIVER
UART0RP_SIO_USE_UART0SIOD0
UART1RP_SIO_USE_UART1SIOD1

Double-tap reset boot-loader entry

The double-tap reset mechanism is an alternate way in QMK to enter the embedded mass storage UF2 boot-loader of the RP2040. It enables bootloader entry by a fast double-tap of the reset pin on start up, which is similar to the behavior of AVR Pro Micros. This feature activated by default for the Pro Micro RP2040 board, but has to be configured for other boards. To activate it, add the following options to your keyboards config.h file:

c
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET // Activates the double-tap behavior\n#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U // Timeout window in ms in which the double tap can occur.\n#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17 // Specify a optional status led by GPIO number which blinks when entering the bootloader

Pre-defined RP2040 boards

QMK defines two boards that you can choose from to base your RP2040 powered keyboard upon. These boards provide pre-configured default pins and drivers.

Generic Pro Micro RP2040

This is the default board that is chosen, unless any other RP2040 board is selected in your keyboards rules.mk file. It assumes a pin layout for the I2C, SPI and Serial drivers which is identical to the Sparkfun Pro Micro RP2040, however all values can be overwritten by defining them in your keyboards config.h file. The double-tap reset to enter boot-loader behavior is activated by default.

Driver configuration defineValue
I2C driver
I2C_DRIVERI2CD1
I2C1_SDA_PINGP2
I2C1_SCL_PINGP3
SPI driver
SPI_DRIVERSPID0
SPI_SCK_PINGP18
SPI_MISO_PINGP20
SPI_MOSI_PINGP19
Serial driver
SERIAL_USART_DRIVER (SIO Driver only)SIOD0
SOFT_SERIAL_PINundefined, use SERIAL_USART_TX_PIN
SERIAL_USART_TX_PINGP0
SERIAL_USART_RX_PINGP1
UART driver
UART_DRIVERSIOD0
UART_TX_PINGP0
UART_RX_PINGP1

TIP

The pin-outs of Adafruit's KB2040 and Boardsource's Blok both deviate from the Sparkfun Pro Micro RP2040. Lookup the pin-out of these boards and adjust your keyboards pin definition accordingly if you want to use these boards.

Generic RP2040 board

This board can be chosen as a base for RP2040 keyboards which configure all necessary pins and drivers themselves and do not wish to leverage the configuration matching the Generic Pro Micro RP2040 board. Thus it doesn't provide any pre-configured pins or drivers. To select this board add the following line to your keyboards rules.mk file.

make
BOARD = GENERIC_RP_RP2040

Split keyboard support

Split keyboards are fully supported using the serial driver in both full-duplex and half-duplex configurations. Two driver subsystems are supported by the RP2040, the hardware UART based SIO and the Programmable IO based PIO driver.

FeatureSIO DriverPIO Driver
Half-Duplex operation✔️
Full-Duplex operation✔️✔️
TX and RX pin swapping✔️
Any GPIO as TX and RX pinOnly UART capable pins✔️
Simple configuration✔️

The PIO driver is much more flexible then the SIO driver, the only "downside" is the usage of PIO resources which in turn are not available for advanced user programs. Under normal circumstances, this resource allocation will be a non-issue.

RP2040 second stage bootloader selection

As the RP2040 does not have any internal flash memory it depends on an external SPI flash memory chip to store and execute instructions from. To successfully interact with a wide variety of these chips a second stage bootloader that is compatible with the chosen external flash memory has to be supplied with each firmware image. By default an W25Q080 compatible bootloader is assumed, but others can be chosen by adding one of the defines listed in the table below to your keyboards config.h file.

Compatible with flash chipSelection
W25Q080Selected by default
AT25SF128A#define RP2040_FLASH_AT25SF128A
GD25Q64CS#define RP2040_FLASH_GD25Q64CS
W25X10CL#define RP2040_FLASH_W25X10CL
IS25LP080#define RP2040_FLASH_IS25LP080
Generic 03H flash#define RP2040_FLASH_GENERIC_03H

RP2040 Community Edition

The "RP2040 Community Edition" standard is a pinout that was defined by a committee of designers on the BastardKB Discord server.

These boards are designed to be a drop-in replacement for keyboards wanting an upgrade from ATmega32u4 based pro micros (eg. Elite-C).

Pinout Compatible Controllers
0xB2 Splinky
Elite-Pi
Sea-Picro EXT
0xCB Helios
Frood
Liatris
', 44); diff --git a/assets/platformdev_rp2040.md.CYKYMDfc.lean.js b/assets/platformdev_rp2040.md.B44Xs-cn.lean.js similarity index 91% rename from assets/platformdev_rp2040.md.CYKYMDfc.lean.js rename to assets/platformdev_rp2040.md.B44Xs-cn.lean.js index 3c39df400ef..552d3110c84 100644 --- a/assets/platformdev_rp2040.md.CYKYMDfc.lean.js +++ b/assets/platformdev_rp2040.md.B44Xs-cn.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Raspberry Pi RP2040","description":"","frontmatter":{},"headers":[],"relativePath":"platformdev_rp2040.md","filePath":"platformdev_rp2040.md"}'); const _sfc_main = { name: "platformdev_rp2040.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 44); diff --git a/assets/platformdev_selecting_arm_mcu.md.aF4DUsvb.js b/assets/platformdev_selecting_arm_mcu.md.DpOE31Uf.js similarity index 99% rename from assets/platformdev_selecting_arm_mcu.md.aF4DUsvb.js rename to assets/platformdev_selecting_arm_mcu.md.DpOE31Uf.js index 882dccdaeef..fe45470d5ee 100644 --- a/assets/platformdev_selecting_arm_mcu.md.aF4DUsvb.js +++ b/assets/platformdev_selecting_arm_mcu.md.DpOE31Uf.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Choosing an Arm MCU","description":"","frontmatter":{},"headers":[],"relativePath":"platformdev_selecting_arm_mcu.md","filePath":"platformdev_selecting_arm_mcu.md"}'); const _sfc_main = { name: "platformdev_selecting_arm_mcu.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Choosing an Arm MCU

This page outlines the selection criteria to ensure compatibility with Arm/ChibiOS.

QMK uses the Hardware Abstraction Layer of ChibiOS in order to run on Arm devices. ChibiOS in general is best supported on STM32 devices, both in the perspective of base MCU support, as well as on-MCU peripheral support. As an extension to the core ChibiOS MCU support, QMK also utilises ChibiOS-Contrib (which includes the Kinetis MCU support layer, as an example), but it does not provide as great a level of peripheral support or general testing for supported devices.

Adding support for new MCU families must go through ChibiOS or ChibiOS-Contrib -- QMK does not have the bandwidth, resources, nor the inclination to maintain long-term MCU support for your board of choice.

To be clear: this also includes commercial boards -- unless agreed upon by all parties, QMK will not take over maintenance of a bespoke MCU support package. Even if MCU support is upstreamed into ChibiOS/ChibiOS-Contrib, QMK reserves the right to deprecate and/or remove keyboards utilising support packages that aren't kept up to date with upstream ChibiOS itself.

Selecting an already-supported MCU

STM32 families

As outlined earlier, STM32 is the preferred option to ensure greatest compatibility with the subsystems already implemented in QMK. Not all subsystems are compatible yet, but for the most widely-used support is already present.

The simplest solution to determine if an STM32 MCU is compatible is to navigate to the list of supported STM32 ports in QMK's ChibiOS fork. Inside this directory, each of the supported STM32 families will be listed, and inside each family a file called stm32_registry.h will be present. Scanning through these files will show #defines such as the following, which can be used to determine if ChibiOS supports a particular MCU:

c
#if defined(STM32F303xC) || defined(__DOXYGEN__)

The example shows that STM32F303xC devices are supported by ChibiOS.

The next step is to ensure that USB is supported on those devices by ChibiOS -- you can confirm this by checking inside the same section guarded by the #define above, specifically for the following to be TRUE:

c
#define STM32_HAS_USB                       TRUE

or one of the following being TRUE:

c
#define STM32_HAS_OTG1                      TRUE\n#define STM32_HAS_OTG2                      TRUE

For the most part, this is the bare minimum to be able to have a high confidence that QMK will be able to run on your MCU. After that, it's all up to configuration.

Non-STM32 families

ChibiOS does have support for a handful of non-STM32 devices, and the list can be found in QMK's ChibiOS fork and ChibiOS-Contrib fork. Non-STM32 support is likely out of date, and only supports ancient MCUs -- whilst it might be possible to use these, it's not recommended.

Do note that there are sometimes licensing restrictions with respect to redistribution. As an example, binaries built for nRF5 are not able to be redistributed via QMK Configurator, due to the licensing of their board support package.

Adding support for a new STM32 MCU (for an existing family)

Usually, one can "masquerade" as an existing MCU of the same family, especially if the only difference is RAM or Flash size. As an example, some MCUs within the same family are virtually identical, with the exception of adding a cryptographic peripheral -- STM32L072 vs. STM32L082 for instance. Given the unlikely use of the cryptographic peripheral, L082 chips can actually run as if they're an L072, and can be targeted accordingly.

Adding proper support for new MCUs within an existing STM32 family should ideally be upstreamed to ChibiOS. In general, this will require modifications of the stm32_registry.h file, providing correct responses for the same #defines provided for the other MCUs in that family.

Adding support for a new STM32 Family

If this is a requirement, this needs to go through upstream ChibiOS before QMK would consider accepting boards targeting the new family. More information for porting should be sought by approaching ChibiOS directly, rather than through QMK.

Adding support for a new MCU Family

As stated earlier, in order for a new MCU family to be supported by QMK, it needs to be upstreamed into ChibiOS-Contrib before QMK will consider accepting boards using it. The same principle applies for development -- you're best approaching the ChibiOS-Contrib maintainers to get a bit more of an idea on what's involved with upstreaming your contribution.

', 26); diff --git a/assets/platformdev_selecting_arm_mcu.md.aF4DUsvb.lean.js b/assets/platformdev_selecting_arm_mcu.md.DpOE31Uf.lean.js similarity index 92% rename from assets/platformdev_selecting_arm_mcu.md.aF4DUsvb.lean.js rename to assets/platformdev_selecting_arm_mcu.md.DpOE31Uf.lean.js index 07d5d250a92..8d216cdc39e 100644 --- a/assets/platformdev_selecting_arm_mcu.md.aF4DUsvb.lean.js +++ b/assets/platformdev_selecting_arm_mcu.md.DpOE31Uf.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Choosing an Arm MCU","description":"","frontmatter":{},"headers":[],"relativePath":"platformdev_selecting_arm_mcu.md","filePath":"platformdev_selecting_arm_mcu.md"}'); const _sfc_main = { name: "platformdev_selecting_arm_mcu.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 26); diff --git a/assets/porting_your_keyboard_to_qmk.md.CIbOxKQC.js b/assets/porting_your_keyboard_to_qmk.md.CWUCjRnR.js similarity index 99% rename from assets/porting_your_keyboard_to_qmk.md.CIbOxKQC.js rename to assets/porting_your_keyboard_to_qmk.md.CWUCjRnR.js index 7b6511ba9ee..f79943d9ffc 100644 --- a/assets/porting_your_keyboard_to_qmk.md.CIbOxKQC.js +++ b/assets/porting_your_keyboard_to_qmk.md.CWUCjRnR.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Adding Your Keyboard to QMK","description":"","frontmatter":{},"headers":[],"relativePath":"porting_your_keyboard_to_qmk.md","filePath":"porting_your_keyboard_to_qmk.md"}'); const _sfc_main = { name: "porting_your_keyboard_to_qmk.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Adding Your Keyboard to QMK

This page describes the support for Compatible Microcontrollers in QMK.

If you have not yet you should read the Keyboard Guidelines to get a sense of how keyboards fit into QMK.

QMK has a number of features to simplify working with keyboards. For most, you don't have to write a single line of code. To get started, run qmk new-keyboard:

$ qmk new-keyboard\nΨ Generating a new QMK keyboard directory\n\nName Your Keyboard Project\nFor more infomation, see:\nhttps://docs.qmk.fm/hardware_keyboard_guidelines#naming-your-keyboardproject\n\nkeyboard Name? mycoolkeeb\n\nAttribution\nUsed for maintainer, copyright, etc\n\nYour GitHub Username?  [jsmith] \n\nMore Attribution\nUsed for maintainer, copyright, etc\n\nYour Real Name?  [John Smith] \n\nPick Base Layout\nAs a starting point, one of the common layouts can be used to bootstrap the process\n\nDefault Layout? \n	1. 60_ansi\n...\n	50. tkl_iso\n	51. none of the above\nPlease enter your choice:  [51] \n\nWhat Powers Your Project\nFor more infomation, see:\nhttps://docs.qmk.fm/#/compatible_microcontrollers\n\nMCU? \n	1. atmega32u4\n...\n	22. STM32F303\nPlease enter your choice:  [12]\nΨ Created a new keyboard called mycoolkeeb.\nΨ To start working on things, `cd` into keyboards/mycoolkeeb,\nΨ or open the directory in your preferred text editor.\nΨ And build with qmk compile -kb mycoolkeeb -km default.

This will create all the files needed to support your new keyboard, and populate the settings with default values. Now you just need to customize it for your keyboard.

readme.md

This is where you'll describe your keyboard. Please follow the Keyboard Readme Template when writing your readme.md. You're encouraged to place an image at the top of your readme.md, please use an external service such as Imgur to host the images.

info.json

The info.json file is where you configure the hardware and feature set for your keyboard. There are a lot of options that can be placed in that file, too many to list here. For a complete overview of available options see the Data Driven Configuration Options page.

Hardware Configuration

At the top of the info.json you'll find USB related settings. These control how your keyboard appears to the Operating System. If you don't have a good reason to change you should leave the usb.vid as 0xFEED. For the usb.pid you should pick a number that is not yet in use.

Do change the manufacturer and keyboard_name lines to accurately reflect your keyboard.

json
    "keyboard_name": "my_awesome_keyboard",\n    "maintainer": "You",\n    "usb": {\n        "vid": "0xFEED",\n        "pid": "0x0000",\n        "device_version": "1.0.0"\n    },

TIP

Windows and macOS will display the manufacturer and keyboard_name in the list of USB devices. lsusb on Linux instead prefers the values in the list maintained by the USB ID Repository. By default, it will only use manufacturer and keyboard_name if the list does not contain that usb.vid / usb.pid. sudo lsusb -v will show the values reported by the device, and they are also present in kernel logs after plugging it in.

Matrix Configuration

The next section of the info file deals with your keyboard's matrix. The first thing you should define is which pins on your MCU are connected to rows and columns. To do so simply specify the names of those pins:

json
    "matrix_pins": {\n        "cols": ["C1", "C2", "C3", "C4"],\n        "rows": ["D1", "D2", "D3", "D4"]\n    },

The size of the matrix_pins.cols and matrix_pins.rows arrays infer the size of the matrix (previously MATRIX_ROWS and MATRIX_COLS).

Finally, you can specify the direction your diodes point. This can be COL2ROW or ROW2COL.

json
    "diode_direction": "ROW2COL",

Direct Pin Matrix

To configure a keyboard where each switch is connected to a separate pin and ground instead of sharing row and column pins, use matrix_pins.direct. The mapping defines the pins of each switch in rows and columns, from left to right. The size of the matrix_pins.direct array infers the size of the matrix. Use NO_PIN to fill in blank spaces. Overrides the behaviour of diode_direction, matrix_pins.cols and matrix_pins.rows.

json
    "matrix_pins": {\n        "direct": [\n            ["F1", "E6", "B0", "B2", "B3" ],\n            ["F5", "F0", "B1", "B7", "D2" ],\n            ["F6", "F7", "C7", "D5", "D3" ],\n            ["B5", "C6", "B6", "NO_PIN", "NO_PIN"]\n        ]\n    },

Layout macros

Next is configuring Layout Macro(s). These define the physical arrangement of keys, and its position within the matrix that a switch are connected to. This allows you to have a physical arrangement of keys that differs from the wiring matrix.

json
    "layouts": {\n        "LAYOUT_ortho_4x4": {\n            "layout": [\n                { "matrix": [0, 0], "x": 0, "y": 0 },\n                { "matrix": [0, 1], "x": 1, "y": 0 },\n                { "matrix": [0, 2], "x": 2, "y": 0 },\n                { "matrix": [0, 3], "x": 3, "y": 0 },\n                { "matrix": [1, 0], "x": 0, "y": 1 },\n                { "matrix": [1, 1], "x": 1, "y": 1 },\n                { "matrix": [1, 2], "x": 2, "y": 1 },\n                { "matrix": [1, 3], "x": 3, "y": 1 },\n                { "matrix": [2, 0], "x": 0, "y": 2 },\n                { "matrix": [2, 1], "x": 1, "y": 2 },\n                { "matrix": [2, 2], "x": 2, "y": 2 },\n                { "matrix": [2, 3], "x": 3, "y": 2 },\n                { "matrix": [3, 0], "x": 0, "y": 3 },\n                { "matrix": [3, 1], "x": 1, "y": 3 },\n                { "matrix": [3, 2], "x": 2, "y": 3 },\n                { "matrix": [3, 3], "x": 3, "y": 3 }\n            ]\n        }\n    }

In the above example,

TIP

See also: Split Keyboard Layout Macro and Matrix to Physical Layout.

Additional Configuration

There are a lot of features that can be turned on or off, configured or tuned. Some of these have yet to be migrated over to Data Driven Configuration. The following sections cover the process for when an info.json option is unavailable.

Configuration Options

For available options for config.h, you should see the Config Options page for more details.

Build Options

For available options for rules.mk, see the Config Options page for a detailed list and description.

', 36); diff --git a/assets/porting_your_keyboard_to_qmk.md.CIbOxKQC.lean.js b/assets/porting_your_keyboard_to_qmk.md.CWUCjRnR.lean.js similarity index 92% rename from assets/porting_your_keyboard_to_qmk.md.CIbOxKQC.lean.js rename to assets/porting_your_keyboard_to_qmk.md.CWUCjRnR.lean.js index 9b435e05e96..ef81f4185a0 100644 --- a/assets/porting_your_keyboard_to_qmk.md.CIbOxKQC.lean.js +++ b/assets/porting_your_keyboard_to_qmk.md.CWUCjRnR.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Adding Your Keyboard to QMK","description":"","frontmatter":{},"headers":[],"relativePath":"porting_your_keyboard_to_qmk.md","filePath":"porting_your_keyboard_to_qmk.md"}'); const _sfc_main = { name: "porting_your_keyboard_to_qmk.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 36); diff --git a/assets/pr_checklist.md.DLlWFp5i.js b/assets/pr_checklist.md.DKd6FJXQ.js similarity index 99% rename from assets/pr_checklist.md.DLlWFp5i.js rename to assets/pr_checklist.md.DKd6FJXQ.js index d3053dd1c0a..f96d34efc2b 100644 --- a/assets/pr_checklist.md.DLlWFp5i.js +++ b/assets/pr_checklist.md.DKd6FJXQ.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"PR checklists","description":"","frontmatter":{},"headers":[],"relativePath":"pr_checklist.md","filePath":"pr_checklist.md"}'); const _sfc_main = { name: "pr_checklist.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

PR checklists

This is a non-exhaustive checklist of what the QMK Collaborators will be checking when reviewing submitted PRs.

If there are any inconsistencies with these recommendations, you're best off creating an issue against this document, or getting in touch with a QMK Collaborator on Discord.

Requirements for all PRs

Keymap PRs

WARNING

Note that personal keymap submissions will no longer be accepted. This section applies to manufacturer-supported keymaps. Please see this issue for more information.

Keyboard PRs

Closed PRs (for inspiration, previous sets of review comments will help you eliminate ping-pong of your own reviews): https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard

Wireless-capable boards:

Also, specific to ChibiOS:

Core PRs


Notes

For when people use their own master branch, post this after merge:

For future reference, we recommend against committing to your `master` branch as you've done here, because pull requests from modified `master` branches can make it more difficult to keep your QMK fork updated. It is highly recommended for QMK development – regardless of what is being done or where – to keep your master updated, but **NEVER** commit to it. Instead, do all your changes in a branch (branches are basically free in Git) and issue PRs from your branches when you're developing.\n\nThere are instructions on how to keep your fork updated here:\n\n[**Best Practices: Your Fork's Master: Update Often, Commit Never**](newbs_git_using_your_master_branch)\n\n[Fixing Your Branch](newbs_git_resynchronize_a_branch) will walk you through fixing up your `master` branch moving forward. If you need any help with this just ask.\n\nThanks for contributing!

Review Process

In general, we want to see two (or more) approvals that are meaningful (e.g. that have inspected code) before a PR will be considered for merge. These reviews are not limited to collaborators -- any community member willing to put in the time is welcomed (and encouraged). The only difference is that your checkmark won't be green, and that's fine!

Additionally, PR reviews are something that is done in our free time. We are not paid nor compensated for the time we spend reviewing, as it is a labor of love. As such, this means that it can take time for us to get to your Pull Request. Things like family, or life can get in the way of us getting to PRs, and burnout is a serious concern. The QMK firmware repository averages 200 PRs opened and 200 PRs merged every month, so please have patience.

Example GPLv2 Header

/* Copyright 2024 Your Name (@yourgithub)\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 2 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n */

Or, optionally, using SPDX identifier instead:

// Copyright 2024 Your Name (@yourgithub)\n// SPDX-License-Identifier: GPL-2.0-or-later
', 28); diff --git a/assets/pr_checklist.md.DLlWFp5i.lean.js b/assets/pr_checklist.md.DKd6FJXQ.lean.js similarity index 91% rename from assets/pr_checklist.md.DLlWFp5i.lean.js rename to assets/pr_checklist.md.DKd6FJXQ.lean.js index 30671f224a3..fbd2332eb63 100644 --- a/assets/pr_checklist.md.DLlWFp5i.lean.js +++ b/assets/pr_checklist.md.DKd6FJXQ.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"PR checklists","description":"","frontmatter":{},"headers":[],"relativePath":"pr_checklist.md","filePath":"pr_checklist.md"}'); const _sfc_main = { name: "pr_checklist.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 28); diff --git a/assets/quantum_keycodes.md.DM5WeUFF.js b/assets/quantum_keycodes.md.CRBfvK5V.js similarity index 97% rename from assets/quantum_keycodes.md.DM5WeUFF.js rename to assets/quantum_keycodes.md.CRBfvK5V.js index b1652f08e1c..84c58208c1b 100644 --- a/assets/quantum_keycodes.md.DM5WeUFF.js +++ b/assets/quantum_keycodes.md.CRBfvK5V.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Quantum Keycodes","description":"","frontmatter":{},"headers":[],"relativePath":"quantum_keycodes.md","filePath":"quantum_keycodes.md"}'); const _sfc_main = { name: "quantum_keycodes.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Quantum Keycodes

Quantum keycodes allow for easier customization of your keymap than the basic ones provide, without having to define custom actions.

All keycodes within quantum are numbers between 0x0000 and 0xFFFF. Within your keymap.c it may look like you have functions and other special cases, but ultimately the C preprocessor will translate those into a single 4 byte integer. QMK has reserved 0x0000 through 0x00FF for standard keycodes. These are keycodes such as KC_A, KC_1, and KC_LCTL, which are basic keys defined in the USB HID specification.

On this page we have documented keycodes between 0x00FF and 0xFFFF which are used to implement advanced quantum features. If you define your own custom keycodes they will be put into this range as well.

QMK Keycodes

KeyAliasesDescription
QK_BOOTLOADERQK_BOOTPut the keyboard into bootloader mode for flashing
QK_DEBUG_TOGGLEDB_TOGGToggle debug mode
QK_CLEAR_EEPROMEE_CLRReinitializes the keyboard's EEPROM (persistent memory)
QK_MAKESends qmk compile -kb (keyboard) -km (keymap), or qmk flash if shift is held. Puts keyboard into bootloader mode if shift & control are held
QK_REBOOTQK_RBTResets the keyboard. Does not load the bootloader

WARNING

Note: QK_MAKE requires #define ENABLE_COMPILE_KEYCODE in your config.h to function.

', 7); diff --git a/assets/quantum_keycodes.md.DM5WeUFF.lean.js b/assets/quantum_keycodes.md.CRBfvK5V.lean.js similarity index 91% rename from assets/quantum_keycodes.md.DM5WeUFF.lean.js rename to assets/quantum_keycodes.md.CRBfvK5V.lean.js index 48034653a49..d133f5190ca 100644 --- a/assets/quantum_keycodes.md.DM5WeUFF.lean.js +++ b/assets/quantum_keycodes.md.CRBfvK5V.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Quantum Keycodes","description":"","frontmatter":{},"headers":[],"relativePath":"quantum_keycodes.md","filePath":"quantum_keycodes.md"}'); const _sfc_main = { name: "quantum_keycodes.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 7); diff --git a/assets/quantum_painter.md.BK_I9g4h.js b/assets/quantum_painter.md.4XgBmnB4.js similarity index 99% rename from assets/quantum_painter.md.BK_I9g4h.js rename to assets/quantum_painter.md.4XgBmnB4.js index 95678e3bc7b..73ae0a03684 100644 --- a/assets/quantum_painter.md.BK_I9g4h.js +++ b/assets/quantum_painter.md.4XgBmnB4.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, l as createBaseVNode, a as createTextVNode, o as openBlock } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, l as createBaseVNode, a as createTextVNode, o as openBlock } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Quantum Painter","description":"","frontmatter":{},"headers":[],"relativePath":"quantum_painter.md","filePath":"quantum_painter.md"}'); const _sfc_main = { name: "quantum_painter.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Quantum Painter

Quantum Painter is the standardised API for graphical displays. It currently includes support for basic drawing primitives, as well as custom images, animations, and fonts.

Due to the complexity, there is no support for Quantum Painter on AVR-based boards.

To enable overall Quantum Painter to be built into your firmware, add the following to rules.mk:

make
QUANTUM_PAINTER_ENABLE = yes\nQUANTUM_PAINTER_DRIVERS += ......

You will also likely need to select an appropriate driver in rules.mk, which is listed below.

WARNING

Quantum Painter is not currently integrated with system-level operations such as when the keyboard goes into suspend. Users will need to handle this manually at the current time.

The QMK CLI can be used to convert from normal images such as PNG files or animated GIFs, as well as fonts from TTF files.

Supported devices:

Display PanelPanel TypeSizeComms TransportDriver
GC9A01RGB LCD (circular)240x240SPI + D/C + RSTQUANTUM_PAINTER_DRIVERS += gc9a01_spi
ILI9163RGB LCD128x128SPI + D/C + RSTQUANTUM_PAINTER_DRIVERS += ili9163_spi
ILI9341RGB LCD240x320SPI + D/C + RSTQUANTUM_PAINTER_DRIVERS += ili9341_spi
ILI9486RGB LCD320x480SPI + D/C + RSTQUANTUM_PAINTER_DRIVERS += ili9486_spi
ILI9488RGB LCD320x480SPI + D/C + RSTQUANTUM_PAINTER_DRIVERS += ili9488_spi
SSD1351RGB OLED128x128SPI + D/C + RSTQUANTUM_PAINTER_DRIVERS += ssd1351_spi
ST7735RGB LCD132x162, 80x160SPI + D/C + RSTQUANTUM_PAINTER_DRIVERS += st7735_spi
ST7789RGB LCD240x320, 240x240SPI + D/C + RSTQUANTUM_PAINTER_DRIVERS += st7789_spi
SH1106 (SPI)Monochrome OLED128x64SPI + D/C + RSTQUANTUM_PAINTER_DRIVERS += sh1106_spi
SH1106 (I2C)Monochrome OLED128x64I2CQUANTUM_PAINTER_DRIVERS += sh1106_i2c
SSD1306 (SPI)Monochrome OLED128x64SPI + D/C + RSTQUANTUM_PAINTER_DRIVERS += sh1106_spi
SSD1306 (I2C)Monochrome OLED128x32I2CQUANTUM_PAINTER_DRIVERS += sh1106_i2c
SurfaceVirtualUser-definedNoneQUANTUM_PAINTER_DRIVERS += surface

Quantum Painter Configuration

OptionDefaultPurpose
QUANTUM_PAINTER_DISPLAY_TIMEOUT30000This controls the amount of time (in milliseconds) that all displays will remain on after the last user input. If set to 0, the display will remain on indefinitely.
QUANTUM_PAINTER_TASK_THROTTLE1This controls the amount of time (in milliseconds) that the Quantum Painter internal task will wait between each execution. Affects animations, display timeout, and LVGL timing if enabled.
QUANTUM_PAINTER_NUM_IMAGES8The maximum number of images/animations that can be loaded at any one time.
QUANTUM_PAINTER_NUM_FONTS4The maximum number of fonts that can be loaded at any one time.
QUANTUM_PAINTER_CONCURRENT_ANIMATIONS4The maximum number of animations that can be executed at the same time.
QUANTUM_PAINTER_LOAD_FONTS_TO_RAMFALSEWhether or not fonts should be loaded to RAM. Relevant for fonts stored in off-chip persistent storage, such as external flash.
QUANTUM_PAINTER_PIXDATA_BUFFER_SIZE1024The limit of the amount of pixel data that can be transmitted in one transaction to the display. Higher values require more RAM on the MCU.
QUANTUM_PAINTER_SUPPORTS_256_PALETTEFALSEIf 256-color palettes are supported. Requires significantly more RAM on the MCU.
QUANTUM_PAINTER_SUPPORTS_NATIVE_COLORSFALSEIf native color range is supported. Requires significantly more RAM on the MCU.
QUANTUM_PAINTER_DEBUGunsetPrints out significant amounts of debugging information to CONSOLE output. Significant performance degradation, use only for debugging.
QUANTUM_PAINTER_DEBUG_ENABLE_FLUSH_TASK_OUTPUTunsetBy default, debug output is disabled while the internal task is flushing the display(s). If you want to keep it enabled, add this to your config.h. Note: Console will get clogged.

Drivers have their own set of configurable options, and are described in their respective sections.

Quantum Painter CLI Commands

', 14); diff --git a/assets/quantum_painter.md.BK_I9g4h.lean.js b/assets/quantum_painter.md.4XgBmnB4.lean.js similarity index 99% rename from assets/quantum_painter.md.BK_I9g4h.lean.js rename to assets/quantum_painter.md.4XgBmnB4.lean.js index 63562909b00..77ba0cc2fa6 100644 --- a/assets/quantum_painter.md.BK_I9g4h.lean.js +++ b/assets/quantum_painter.md.4XgBmnB4.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, l as createBaseVNode, a as createTextVNode, o as openBlock } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, l as createBaseVNode, a as createTextVNode, o as openBlock } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Quantum Painter","description":"","frontmatter":{},"headers":[],"relativePath":"quantum_painter.md","filePath":"quantum_painter.md"}'); const _sfc_main = { name: "quantum_painter.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 14); diff --git a/assets/quantum_painter_lvgl.md.DobNbSgA.js b/assets/quantum_painter_lvgl.md.CjwTIvjK.js similarity index 99% rename from assets/quantum_painter_lvgl.md.DobNbSgA.js rename to assets/quantum_painter_lvgl.md.CjwTIvjK.js index 7a99e253531..07231bfbaf3 100644 --- a/assets/quantum_painter_lvgl.md.DobNbSgA.js +++ b/assets/quantum_painter_lvgl.md.CjwTIvjK.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Quantum Painter LVGL Integration","description":"","frontmatter":{},"headers":[],"relativePath":"quantum_painter_lvgl.md","filePath":"quantum_painter_lvgl.md"}'); const _sfc_main = { name: "quantum_painter_lvgl.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Quantum Painter LVGL Integration

LVGL (Light and Versatile Graphics Library) is an open-source graphics library providing everything you need to create an embedded GUI for your board with easy-to-use graphical elements.

LVGL integrates with Quantum Painter's API and drivers to render to the display, the hardware supported by Quantum Painter is also supported by LVGL.

TIP

Keep in mind that enabling the LVGL integration has a big impact in firmware size, it is recommeded to use a supported MCU with >256 kB of flash space.

To learn more about LVGL and how to use it please take a look at their official documentation

Enabling LVGL

To enable LVGL to be built into your firmware, add the following to rules.mk:

make
QUANTUM_PAINTER_ENABLE = yes\nQUANTUM_PAINTER_DRIVERS = ......\nQUANTUM_PAINTER_LVGL_INTEGRATION = yes

To configure the Quantum Painter Display Drivers please read the Quantum Painter Display Drivers section.

Quantum Painter LVGL API

Quantum Painter LVGL Attach

c
bool qp_lvgl_attach(painter_device_t device);

The qp_lvgl_attach function is used to set up LVGL with the supplied display, and requires an already configured display.

c
static painter_device_t display;\nvoid keyboard_post_init_kb(void) {\n    display = qp_make_.......;         // Create the display\n    qp_init(display, QP_ROTATION_0);   // Initialise the display\n    \n    if (qp_lvgl_attach(display)) {     // Attach LVGL to the display\n        ...Your code to draw           // Run LVGL specific code to draw\n    }\n}

To init. the display please read the Display Initialisation section.

WARNING

Attaching LVGL to a display means LVGL subsequently "owns" the display. Using standard Quantum Painter drawing operations with the display after LVGL attachment will likely result in display artifacts.

Quantum Painter LVGL Detach

c
void qp_lvgl_detach(void)

The qp_lvgl_detach function stops the internal LVGL ticks and releases resources related to it.

Enabling/Disabling LVGL features

You can overwrite LVGL specific features in your lv_conf.h file.

Changing the LVGL task frequency

When LVGL is running, your keyboard's responsiveness may decrease, causing missing keystrokes or encoder rotations, especially during the animation of dynamically-generated content. This occurs because LVGL operates as a scheduled task with a default task rate of five milliseconds. While a fast task rate is advantageous when LVGL is responsible for detecting and processing inputs, it can lead to excessive recalculations of displayed content, which may slow down QMK's matrix scanning. If you rely on QMK instead of LVGL for processing inputs, it can be beneficial to increase the time between calls to the LVGL task handler to better match your preferred display update rate. To do this, add this to your config.h:

c
#define QP_LVGL_TASK_PERIOD 40
', 24); diff --git a/assets/quantum_painter_lvgl.md.DobNbSgA.lean.js b/assets/quantum_painter_lvgl.md.CjwTIvjK.lean.js similarity index 91% rename from assets/quantum_painter_lvgl.md.DobNbSgA.lean.js rename to assets/quantum_painter_lvgl.md.CjwTIvjK.lean.js index ac1ab2f7eda..fdfed602e3a 100644 --- a/assets/quantum_painter_lvgl.md.DobNbSgA.lean.js +++ b/assets/quantum_painter_lvgl.md.CjwTIvjK.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Quantum Painter LVGL Integration","description":"","frontmatter":{},"headers":[],"relativePath":"quantum_painter_lvgl.md","filePath":"quantum_painter_lvgl.md"}'); const _sfc_main = { name: "quantum_painter_lvgl.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 24); diff --git a/assets/quantum_painter_qff.md.kLNwshez.js b/assets/quantum_painter_qff.md.C37fyLwS.js similarity index 99% rename from assets/quantum_painter_qff.md.kLNwshez.js rename to assets/quantum_painter_qff.md.C37fyLwS.js index bd6862d4d86..51defcefbbd 100644 --- a/assets/quantum_painter_qff.md.kLNwshez.js +++ b/assets/quantum_painter_qff.md.C37fyLwS.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Font Format","description":"","frontmatter":{},"headers":[],"relativePath":"quantum_painter_qff.md","filePath":"quantum_painter_qff.md"}'); const _sfc_main = { name: "quantum_painter_qff.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Font Format

QMK uses a font format ("Quantum Font Format" - QFF) specifically for resource-constrained systems.

This format is capable of encoding 1-, 2-, 4-, and 8-bit-per-pixel greyscale- and palette-based images into a font. It also includes RLE for pixel data for some basic compression.

All integer values are in little-endian format.

The QFF is defined in terms of blocks -- each block contains a header and an optional blob of data. The header contains the block's typeid, and the length of the blob that follows. Each block type is denoted by a different typeid has its own block definition below. All blocks are defined as packed structs, containing zero padding between fields.

The general structure of the file is:

Block Header

The block header is identical to QGF's block header, and is present for all blocks, including the font descriptor.

Font descriptor block

This block must be located at the start of the file contents, and can exist a maximum of once in an entire QGF file. It is always followed by either the ASCII glyph table or the Unicode glyph table, depending on which glyphs are included in the font.

Block format:

c
typedef struct __attribute__((packed)) qff_font_descriptor_v1_t {\n    qgf_block_header_v1_t header;               // = { .type_id = 0x00, .neg_type_id = (~0x00), .length = 20 }\n    uint24_t              magic;                // constant, equal to 0x464651 ("QFF")\n    uint8_t               qff_version;          // constant, equal to 0x01\n    uint32_t              total_file_size;      // total size of the entire file, starting at offset zero\n    uint32_t              neg_total_file_size;  // negated value of total_file_size, used for detecting parsing errors\n    uint8_t               line_height;          // glyph height in pixels\n    bool                  has_ascii_table;      // whether the font has an ascii table of glyphs (0x20...0x7E)\n    uint16_t              num_unicode_glyphs;   // the number of glyphs in the unicode table -- no table specified if zero\n    uint8_t               format;               // frame format, see below.\n    uint8_t               flags;                // frame flags, see below.\n    uint8_t               compression_scheme;   // compression scheme, see below.\n    uint8_t               transparency_index;   // palette index used for transparent pixels (not yet implemented)\n} qff_font_descriptor_v1_t;\n// _Static_assert(sizeof(qff_font_descriptor_v1_t) == (sizeof(qgf_block_header_v1_t) + 20), "qff_font_descriptor_v1_t must be 25 bytes in v1 of QFF");

The values for format, flags, compression_scheme, and transparency_index match QGF's frame descriptor block, with the exception that the delta flag is ignored by QFF.

ASCII glyph table

If the font contains ascii characters, the ASCII glyph block must be located directly after the font descriptor block.

c
#define QFF_GLYPH_WIDTH_BITS 6\n#define QFF_GLYPH_WIDTH_MASK ((1<<QFF_GLYPH_WIDTH_BITS)-1)\n#define QFF_GLYPH_OFFSET_BITS 18\n#define QFF_GLYPH_OFFSET_MASK (((1<<QFF_GLYPH_OFFSET_BITS)-1) << QFF_GLYPH_WIDTH_BITS)\n\ntypedef struct __attribute__((packed)) qff_ascii_glyph_table_v1_t {\n    qgf_block_header_v1_t header;  // = { .type_id = 0x01, .neg_type_id = (~0x01), .length = 285 }\n    uint24_t glyph[95];            // 95 glyphs, 0x20..0x7E, see bits/masks above for values\n} qff_ascii_glyph_table_v1_t;\n// _Static_assert(sizeof(qff_ascii_glyph_table_v1_t) == (sizeof(qgf_block_header_v1_t) + 285), "qff_ascii_glyph_table_v1_t must be 290 bytes in v1 of QFF");

Unicode glyph table

If this font contains unicode characters, the unicode glyph block must be located directly after the ASCII glyph table block, or the font descriptor block if the font does not contain ASCII characters.

c
typedef struct __attribute__((packed)) qff_unicode_glyph_table_v1_t {\n    qgf_block_header_v1_t header;     // = { .type_id = 0x02, .neg_type_id = (~0x02), .length = (N * 6) }\n    struct __attribute__((packed)) {  // container for a single unicode glyph\n        uint24_t code_point;          // the unicode code point\n        uint24_t glyph;               // the glyph information, as per ASCII glyphs above\n    } glyph[N];                       // N glyphs worth of data\n} qff_unicode_glyph_table_v1_t;

Font palette block

The font palette block is identical to QGF's frame palette block, retaining the same typeid of 0x03.

It is only specified in the QFF if the font is palette-based, and follows the unicode glyph block if the font contains any Unicode glyphs, or the ASCII glyph block if the font contains only ASCII glyphs.

Font data block

The font data block is the last block in the file and is identical to QGF's frame data block, however has a different typeid of 0x04 in QFF.

', 30); diff --git a/assets/quantum_painter_qff.md.kLNwshez.lean.js b/assets/quantum_painter_qff.md.C37fyLwS.lean.js similarity index 91% rename from assets/quantum_painter_qff.md.kLNwshez.lean.js rename to assets/quantum_painter_qff.md.C37fyLwS.lean.js index a8f28b13c3e..4a4e6346527 100644 --- a/assets/quantum_painter_qff.md.kLNwshez.lean.js +++ b/assets/quantum_painter_qff.md.C37fyLwS.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Font Format","description":"","frontmatter":{},"headers":[],"relativePath":"quantum_painter_qff.md","filePath":"quantum_painter_qff.md"}'); const _sfc_main = { name: "quantum_painter_qff.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 30); diff --git a/assets/quantum_painter_qgf.md.BJNSu2s0.js b/assets/quantum_painter_qgf.md.DfrPXVeV.js similarity index 99% rename from assets/quantum_painter_qgf.md.BJNSu2s0.js rename to assets/quantum_painter_qgf.md.DfrPXVeV.js index 8f9fcb5650e..4a433ac9dbf 100644 --- a/assets/quantum_painter_qgf.md.BJNSu2s0.js +++ b/assets/quantum_painter_qgf.md.DfrPXVeV.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Graphics Format","description":"","frontmatter":{},"headers":[],"relativePath":"quantum_painter_qgf.md","filePath":"quantum_painter_qgf.md"}'); const _sfc_main = { name: "quantum_painter_qgf.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Graphics Format

QMK uses a graphics format ("Quantum Graphics Format" - QGF) specifically for resource-constrained systems.

This format is capable of encoding 1-, 2-, 4-, and 8-bit-per-pixel greyscale- and palette-based images. It also includes RLE for pixel data for some basic compression.

All integer values are in little-endian format.

The QGF is defined in terms of blocks -- each block contains a header and an optional blob of data. The header contains the block's typeid, and the length of the blob that follows. Each block type is denoted by a different typeid has its own block definition below. All blocks are defined as packed structs, containing zero padding between fields.

The general structure of the file is:

Different frames within the file should be considered "isolated" and may have their own image format and/or palette.

Block Header

This block header is present for all blocks, including the graphics descriptor.

Block header format:

c
typedef struct __attribute__((packed)) qgf_block_header_v1_t {\n    uint8_t type_id;      // See each respective block type\n    uint8_t neg_type_id;  // Negated type ID, used for detecting parsing errors\n    uint24_t length;      // 24-bit blob length, allowing for block sizes of a maximum of 16MB\n} qgf_block_header_v1_t;\n// _Static_assert(sizeof(qgf_block_header_v1_t) == 5, "qgf_block_header_v1_t must be 5 bytes in v1 of QGF");

The length describes the number of octets in the data following the block header -- a block header may specify a length of 0 if no blob is specified.

Graphics descriptor block

This block must be located at the start of the file contents, and can exist a maximum of once in an entire QGF file. It is always followed by the frame offset block.

Block format:

c
typedef struct __attribute__((packed)) qgf_graphics_descriptor_v1_t {\n    qgf_block_header_v1_t header;               // = { .type_id = 0x00, .neg_type_id = (~0x00), .length = 18 }\n    uint24_t              magic;                // constant, equal to 0x464751 ("QGF")\n    uint8_t               qgf_version;          // constant, equal to 0x01\n    uint32_t              total_file_size;      // total size of the entire file, starting at offset zero\n    uint32_t              neg_total_file_size;  // negated value of total_file_size, used for detecting parsing errors\n    uint16_t              image_width;          // in pixels\n    uint16_t              image_height;         // in pixels\n    uint16_t              frame_count;          // minimum of 1\n} qgf_graphics_descriptor_v1_t;\n// _Static_assert(sizeof(qgf_graphics_descriptor_v1_t) == (sizeof(qgf_block_header_v1_t) + 18), "qgf_graphics_descriptor_v1_t must be 23 bytes in v1 of QGF");

Frame offset block

This block denotes the offsets within the file to each frame's frame descriptor block, relative to the start of the file. The frame offset block always immediately follows the graphics descriptor block. The contents of this block are an array of U32's, with one entry for each frame.

Duplicate frame offsets in this block are allowed, if a certain frame is to be shown multiple times during animation.

Block format:

c
typedef struct __attribute__((packed)) qgf_frame_offsets_v1_t {\n    qgf_block_header_v1_t header;    // = { .type_id = 0x01, .neg_type_id = (~0x01), .length = (N * sizeof(uint32_t)) }\n    uint32_t              offset[N]; // where 'N' is the number of frames in the file\n} qgf_frame_offsets_v1_t;

Frame descriptor block

This block denotes the start of a frame.

Block format:

c
typedef struct __attribute__((packed)) qgf_frame_v1_t {\n    qgf_block_header_v1_t header;              // = { .type_id = 0x02, .neg_type_id = (~0x02), .length = 5 }\n    uint8_t               format;              // Frame format, see below.\n    uint8_t               flags;               // Frame flags, see below.\n    uint8_t               compression_scheme;  // Compression scheme, see below.\n    uint8_t               transparency_index;  // palette index used for transparent pixels (not yet implemented)\n    uint16_t              delay;               // frame delay time for animations (in units of milliseconds)\n} qgf_frame_v1_t;\n// _Static_assert(sizeof(qgf_frame_v1_t) == (sizeof(qgf_block_header_v1_t) + 6), "qgf_frame_v1_t must be 11 bytes in v1 of QGF");

If this frame is grayscale, the frame descriptor block (or frame delta block if flags denote a delta frame) is immediately followed by this frame's corresponding frame data block.

If the frame uses an indexed palette, the frame descriptor block (or frame delta block if flags denote a delta frame) is immediately followed by this frame's corresponding frame palette block.

Frame format possible values:

Frame flags is a bitmask with the following format:

bit 7bit 6bit 5bit 4bit 3bit 2bit 1bit 0
------DeltaTransparency

Compression scheme possible values:

Frame palette block

This block describes the palette used for the frame. The blob contains an array of palette entries -- one palette entry is present for each color used -- each palette entry is in QMK HSV888 format:

c
typedef struct __attribute__((packed)) qgf_palette_v1_t {\n    qgf_block_header_v1_t header;     // = { .type_id = 0x03, .neg_type_id = (~0x03), .length = (N * 3 * sizeof(uint8_t)) }\n    struct {  // container for a single HSV palette entry\n        uint8_t h;                    // hue component: `[0,360)` degrees is mapped to `[0,255]` uint8_t.\n        uint8_t s;                    // saturation component: `[0,1]` is mapped to `[0,255]` uint8_t.\n        uint8_t v;                    // value component: `[0,1]` is mapped to `[0,255]` uint8_t.\n    } hsv[N];                         // N * hsv, where N is the number of palette entries depending on the frame format in the descriptor\n} qgf_palette_v1_t;

Frame delta block

This block describes where the delta frame should be drawn, with respect to the top left location of the image.

c
typedef struct __attribute__((packed)) qgf_delta_v1_t {\n    qgf_block_header_v1_t header;  // = { .type_id = 0x04, .neg_type_id = (~0x04), .length = 8 }\n    uint16_t left;                 // The left pixel location to draw the delta image\n    uint16_t top;                  // The top pixel location to draw the delta image\n    uint16_t right;                // The right pixel location to to draw the delta image\n    uint16_t bottom;               // The bottom pixel location to to draw the delta image\n} qgf_delta_v1_t;\n// _Static_assert(sizeof(qgf_delta_v1_t) == 13, "qgf_delta_v1_t must be 13 bytes in v1 of QGF");

Frame data block

This block describes the data associated with the frame. The blob contains an array of bytes containing the data corresponding to the frame's image format:

c
typedef struct __attribute__((packed)) qgf_data_v1_t {\n    qgf_block_header_v1_t header;   // = { .type_id = 0x05, .neg_type_id = (~0x05), .length = N }\n    uint8_t               data[N];  // N data octets\n} qgf_data_v1_t;
', 50); diff --git a/assets/quantum_painter_qgf.md.BJNSu2s0.lean.js b/assets/quantum_painter_qgf.md.DfrPXVeV.lean.js similarity index 91% rename from assets/quantum_painter_qgf.md.BJNSu2s0.lean.js rename to assets/quantum_painter_qgf.md.DfrPXVeV.lean.js index 5dc8be1cf01..7ec0d479c5b 100644 --- a/assets/quantum_painter_qgf.md.BJNSu2s0.lean.js +++ b/assets/quantum_painter_qgf.md.DfrPXVeV.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Graphics Format","description":"","frontmatter":{},"headers":[],"relativePath":"quantum_painter_qgf.md","filePath":"quantum_painter_qgf.md"}'); const _sfc_main = { name: "quantum_painter_qgf.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 50); diff --git a/assets/quantum_painter_rle.md.B07V3m-n.js b/assets/quantum_painter_rle.md.HUVkMPoB.js similarity index 97% rename from assets/quantum_painter_rle.md.B07V3m-n.js rename to assets/quantum_painter_rle.md.HUVkMPoB.js index 5e94f9ba120..fa62fabff49 100644 --- a/assets/quantum_painter_rle.md.B07V3m-n.js +++ b/assets/quantum_painter_rle.md.HUVkMPoB.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK QGF/QFF RLE data schema","description":"","frontmatter":{},"headers":[],"relativePath":"quantum_painter_rle.md","filePath":"quantum_painter_rle.md"}'); const _sfc_main = { name: "quantum_painter_rle.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK QGF/QFF RLE data schema

There are two "modes" to the RLE algorithm used in both QGF/QFF:

Decoder pseudocode:

while !EOF\n    marker = READ_OCTET()\n\n    if marker >= 128\n        length = marker - 128\n        for i = 0 ... length-1\n            c = READ_OCTET()\n            WRITE_OCTET(c)\n\n    else\n        length = marker\n        c = READ_OCTET()\n        for i = 0 ... length-1\n            WRITE_OCTET(c)
', 5); diff --git a/assets/quantum_painter_rle.md.B07V3m-n.lean.js b/assets/quantum_painter_rle.md.HUVkMPoB.lean.js similarity index 91% rename from assets/quantum_painter_rle.md.B07V3m-n.lean.js rename to assets/quantum_painter_rle.md.HUVkMPoB.lean.js index 509d44ab9ea..02444a807cf 100644 --- a/assets/quantum_painter_rle.md.B07V3m-n.lean.js +++ b/assets/quantum_painter_rle.md.HUVkMPoB.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK QGF/QFF RLE data schema","description":"","frontmatter":{},"headers":[],"relativePath":"quantum_painter_rle.md","filePath":"quantum_painter_rle.md"}'); const _sfc_main = { name: "quantum_painter_rle.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 5); diff --git a/assets/ref_functions.md.DVV8cEHP.js b/assets/ref_functions.md.BmD0w9ZN.js similarity index 99% rename from assets/ref_functions.md.DVV8cEHP.js rename to assets/ref_functions.md.BmD0w9ZN.js index 0b99aa4a650..c1c7ba79e21 100644 --- a/assets/ref_functions.md.DVV8cEHP.js +++ b/assets/ref_functions.md.BmD0w9ZN.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"List of Useful Core Functions To Make Your Keyboard Better","description":"","frontmatter":{},"headers":[],"relativePath":"ref_functions.md","filePath":"ref_functions.md"}'); const _sfc_main = { name: "ref_functions.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

List of Useful Core Functions To Make Your Keyboard Better

There are a lot of hidden functions in QMK that are incredibly useful, or may add a bit of functionality that you've been wanting. Functions that are specific to certain features are not included here, as those will be on their respective feature page.

(OLKB) Tri Layers

There are actually separate functions that you can use there, depending on what you're after.

update_tri_layer(x, y, z)

The first is the update_tri_layer(x, y, z) function. This function check to see if layers x and y are both on. If they are both on, then it turns on layer z. Otherwise, if both x and y are not both on (either only one is, or neither is), then it turns off layer z.

This function is useful if you want to create specific keys that have this functionality, but other layer keycodes won't do this.

Example

c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {\n  switch (keycode) {\n    case LOWER:\n      if (record->event.pressed) {\n        layer_on(_LOWER);\n        update_tri_layer(_LOWER, _RAISE, _ADJUST);\n      } else {\n        layer_off(_LOWER);\n        update_tri_layer(_LOWER, _RAISE, _ADJUST);\n      }\n      return false;\n    case RAISE:\n      if (record->event.pressed) {\n        layer_on(_RAISE);\n        update_tri_layer(_LOWER, _RAISE, _ADJUST);\n      } else {\n        layer_off(_RAISE);\n        update_tri_layer(_LOWER, _RAISE, _ADJUST);\n      }\n      return false;\n    }\n  return true;\n}

update_tri_layer_state(state, x, y, z)

The other function is update_tri_layer_state(state, x, y, z). This function is meant to be called from the layer_state_set_* functions. This means that any time that you use a keycode to change the layer, this will be checked. So you could use LT(layer, kc) to change the layer and it will trigger the same layer check.

There are a couple of caveats to this method:

  1. You cannot access the z layer without having x and y layers on, since if you try to activate just layer z, it will run this code and turn off layer z before you could use it.
  2. Because layers are processed from the highest number z should be a higher layer than x and y or you may not be able to access it.

Example

c
layer_state_t layer_state_set_user(layer_state_t state) {\n  return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);\n}

Alternatively, you don't have to immediately "return" the value. This is useful if you want to add multiple tri layers, or if you want to add additional effects.

c
layer_state_t layer_state_set_user(layer_state_t state) {\n  state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);\n  state = update_tri_layer_state(state, _RAISE, _SYMB, _SPECIAL);\n  return state;\n}

Setting the Persistent Default Layer

Do you want to set the default layer, so that it's retained even after you unplug the board? If so, this is the function for you.

To use this, you would use set_single_persistent_default_layer(layer). If you have a name defined for your layer, you can use that instead (such as _QWERTY, _DVORAK or _COLEMAK).

This will set the default layer, update the persistent settings, and play a tune if you have Audio enabled on your board, and the default layer sounds set.

To configure the default layer sounds, you would want to define this in your config.h file, like this:

c
#define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \\\n                              SONG(COLEMAK_SOUND), \\\n                              SONG(DVORAK_SOUND) \\\n                            }

TIP

There are a large number of predefined songs in quantum/audio/song_list.h that you can use.

Resetting the keyboard

There is the QK_REBOOT or QK_RBT quantum keycode that you can use. But if you want to reset the board as part of a macro, rather than hitting a key separately, you can do that.

And to do so, add soft_reset_keyboard() to your function or macro.

Reset to bootloader

To reset to the bootloader use QK_BOOTLOADER or QK_BOOT keycode or reset_keyboard() function.

Wiping the EEPROM (Persistent Storage)

If you're having issues with Audio, RGB Underglow, backlighting or keys acting weird, then you can reset the EEPROM (persistent setting storage). To force an EEPROM reset, use the EE_CLR keycode or Bootmagic functionality. If neither of those are an option, then you can use a custom macro to do so.

To wipe the EEPROM, run eeconfig_init() from your function or macro to reset most of the settings to default.

Tap random key

If you want to send a random character to the host computer, you can use the tap_random_base64() function. This pseudorandomly selects a number between 0 and 63, and then sends a key press based on that selection. (0–25 is AZ, 26–51 is az, 52–61 is 09, 62 is + and 63 is /).

TIP

Needless to say, but this is not a cryptographically secure method of generating random Base64 keys or passwords.

Software Timers

It's possible to start timers and read values for time-specific events. Here's an example:

c
static uint16_t key_timer;\nkey_timer = timer_read();\n\nif (timer_elapsed(key_timer) < 100) {\n  // do something if less than 100ms have passed\n} else {\n  // do something if 100ms or more have passed\n}
', 38); diff --git a/assets/ref_functions.md.DVV8cEHP.lean.js b/assets/ref_functions.md.BmD0w9ZN.lean.js similarity index 91% rename from assets/ref_functions.md.DVV8cEHP.lean.js rename to assets/ref_functions.md.BmD0w9ZN.lean.js index d6b0ef0f68f..05993404f00 100644 --- a/assets/ref_functions.md.DVV8cEHP.lean.js +++ b/assets/ref_functions.md.BmD0w9ZN.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"List of Useful Core Functions To Make Your Keyboard Better","description":"","frontmatter":{},"headers":[],"relativePath":"ref_functions.md","filePath":"ref_functions.md"}'); const _sfc_main = { name: "ref_functions.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 38); diff --git a/assets/reference_configurator_support.md.FaBQzIj6.js b/assets/reference_configurator_support.md.DoavXRX9.js similarity index 99% rename from assets/reference_configurator_support.md.FaBQzIj6.js rename to assets/reference_configurator_support.md.DoavXRX9.js index 257bee53b1e..cb596cc8623 100644 --- a/assets/reference_configurator_support.md.FaBQzIj6.js +++ b/assets/reference_configurator_support.md.DoavXRX9.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode, l as createBaseVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode, l as createBaseVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Supporting Your Keyboard in QMK Configurator","description":"","frontmatter":{},"headers":[],"relativePath":"reference_configurator_support.md","filePath":"reference_configurator_support.md"}'); const _sfc_main = { name: "reference_configurator_support.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Supporting Your Keyboard in QMK Configurator

This page covers how to properly support keyboards in the QMK Configurator.

How the Configurator Understands Keyboards

To understand how the Configurator understands keyboards, first one must understand layout macros. For this exercise, we're going to imagine a 17-key numpad PCB, which we're going to call numpad.

|---------------|\n|NLk| / | * | - |\n|---+---+---+---|\n|7  |8  |9  | + |\n|---+---+---|   |\n|4  |5  |6  |   |\n|---+---+---+---|\n|1  |2  |3  |Ent|\n|-------+---|   |\n|0      | . |   |\n|---------------|

TIP

For more on layout macros, see Understanding QMK: Matrix Scanning and Understanding QMK: Matrix to Physical Layout Map.

The Configurator's API reads the keyboard's .h file from qmk_firmware/keyboards/<keyboard>/<keyboard>.h. For our numpad, this file would be qmk_firmware/keyboards/numpad/numpad.h:

c
#pragma once\n\n#define LAYOUT( \\\n    k00, k01, k02, k03, \\\n    k10, k11, k12, k13, \\\n    k20, k21, k22,      \\\n    k30, k31, k32, k33, \\\n    k40,      k42       \\\n  ) { \\\n    { k00, k01,   k02, k03   }, \\\n    { k10, k11,   k12, k13   }, \\\n    { k20, k21,   k22, KC_NO }, \\\n    { k30, k31,   k32, k33   }, \\\n    { k40, KC_NO, k42, KC_NO }  \\\n}

QMK uses KC_NO to designate places in the switch matrix where there is no switch. Sometimes, XXX, ___ or ____ are used as shorthand to make this section easier to read if it needs to be debugged. This is usually defined near the beginning of the .h file:

c
#pragma once\n\n#define XXX KC_NO\n\n#define LAYOUT( \\\n    k00, k01, k02, k03, \\\n    k10, k11, k12, k13, \\\n    k20, k21, k22,      \\\n    k30, k31, k32, k33, \\\n    k40,      k42       \\\n  ) { \\\n    { k00, k01, k02, k03 }, \\\n    { k10, k11, k12, k13 }, \\\n    { k20, k21, k22, XXX }, \\\n    { k30, k31, k32, k33 }, \\\n    { k40, XXX, k42, XXX }  \\\n}

WARNING

This usage differs from that of keymap macros, which almost always use XXXXXXX (seven capital X's) for KC_NO and _______ (seven underscores) for KC_TRNS.

WARNING

To prevent user confusion, using KC_NO is preferred.

The layout macro tells the Configurator that our keyboard has 17 keys, arranged in five rows of four columns each. Our switch positions are named k<row><column>, counting from 0. The names themselves actually don't matter, as long as they match between the top section, which receives the keycodes from the keymap, and the bottom half which designates where each key is in the matrix.

To display our keyboard in a way that resembles the physical keyboard, we need to build a JSON file that tells the Configurator how to tie the physical locations and sizes of our keys to our switch matrix.

Building the JSON file

To build the JSON file, the easiest way is to build the layout in Keyboard Layout Editor ("KLE"), from which we'll feed the Raw Data into a QMK tool that converts this data into a JSON the Configurator will read and use. Since KLE opens by default with a numpad layout, we're just going to remove the Getting Started instructions, and use what's left.

Once the layout is as desired, move to the Raw Data tab in KLE, and copy the contents:

["Num Lock","/","*","-"],\n["7\\nHome","8\\n↑","9\\nPgUp",{h:2},"+"],\n["4\\n←","5","6\\n→"],\n["1\\nEnd","2\\n↓","3\\nPgDn",{h:2},"Enter"],\n[{w:2},"0\\nIns",".\\nDel"]

To convert this data into our JSON, go to the QMK KLE-JSON Converter, paste the Raw Data into the Input field, and click the Convert button. After a moment, our JSON data will appear in the Output field. Copy the contents to a new text document, and name the document info.json, saving it in the same folder that contains numpad.h.

Use the keyboard_name object to set the name of the keyboard. For instruction purposes, we will put each key's object on its own line. This is only to make the file more human-readable, and does not affect the Configurator's functionality.

json
{\n    "keyboard_name": "Numpad",\n    "url": "",\n    "maintainer": "qmk",\n    "tags": {\n        "form_factor": "numpad"\n    },\n    "layouts": {\n        "LAYOUT": {\n            "layout": [\n                {"label":"Num Lock", "x":0, "y":0},\n                {"label":"/", "x":1, "y":0},\n                {"label":"*", "x":2, "y":0},\n                {"label":"-", "x":3, "y":0},\n                {"label":"7", "x":0, "y":1},\n                {"label":"8", "x":1, "y":1},\n                {"label":"9", "x":2, "y":1},\n                {"label":"+", "x":3, "y":1, "h":2},\n                {"label":"4", "x":0, "y":2},\n                {"label":"5", "x":1, "y":2},\n                {"label":"6", "x":2, "y":2},\n                {"label":"1", "x":0, "y":3},\n                {"label":"2", "x":1, "y":3},\n                {"label":"3", "x":2, "y":3},\n                {"label":"Enter", "x":3, "y":3, "h":2},\n                {"label":"0", "x":0, "y":4, "w":2},\n                {"label":".", "x":2, "y":4}\n            ]\n        }\n    }\n}

The layouts object contains the data that represents the physical layout of the keyboard. It has an object LAYOUT, which needs to match the name of our layout macro from numpad.h. The LAYOUT object itself has an object named layout, which contains one JSON object for each physical key on our keyboard, formatted as follows:

  The name of the key. Not displayed in the Configurator.\n  |\n  |                   The key's X-axis location, in key units from the\n  |                   | keyboard's left edge.\n  |                   |\n  |                   |      The key's Y-axis location, in key units from\n  |                   |      | the keyboard's top (rear-facing) edge.\n  ↓                   ↓      ↓\n{"label":"Num Lock", "x":0, "y":0},

Some objects will also have "w" and "h" keys, which represent a key's width and height, respectively.

TIP

For more on the info.json files, see info.json Format.

How the Configurator Programs Keys

The Configurator's API uses the layout macro and the JSON file we've given it to create a visual representation of the keyboard that has each visual object tied to a specific key, in sequence:

', 27); diff --git a/assets/reference_configurator_support.md.FaBQzIj6.lean.js b/assets/reference_configurator_support.md.DoavXRX9.lean.js similarity index 99% rename from assets/reference_configurator_support.md.FaBQzIj6.lean.js rename to assets/reference_configurator_support.md.DoavXRX9.lean.js index b70f843551b..a296b0beab8 100644 --- a/assets/reference_configurator_support.md.FaBQzIj6.lean.js +++ b/assets/reference_configurator_support.md.DoavXRX9.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode, l as createBaseVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode, l as createBaseVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Supporting Your Keyboard in QMK Configurator","description":"","frontmatter":{},"headers":[],"relativePath":"reference_configurator_support.md","filePath":"reference_configurator_support.md"}'); const _sfc_main = { name: "reference_configurator_support.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 27); diff --git a/assets/reference_glossary.md.CXMuxToT.js b/assets/reference_glossary.md.DsaOcqe5.js similarity index 99% rename from assets/reference_glossary.md.CXMuxToT.js rename to assets/reference_glossary.md.DsaOcqe5.js index 4dab1ede936..a4d6032de59 100644 --- a/assets/reference_glossary.md.CXMuxToT.js +++ b/assets/reference_glossary.md.DsaOcqe5.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Glossary of QMK Terms","description":"","frontmatter":{},"headers":[],"relativePath":"reference_glossary.md","filePath":"reference_glossary.md"}'); const _sfc_main = { name: "reference_glossary.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Glossary of QMK Terms

ARM

A line of 32-bit MCUs produced by a number of companies, such as Atmel, Cypress, Kinetis, NXP, ST, and TI.

AVR

A line of 8-bit MCUs produced by Atmel. AVR was the original platform that TMK supported.

AZERTY

The standard Français (French) keyboard layout. Named for the first 6 keys on the keyboard.

Backlight

A generic term for lighting on a keyboard. The backlight is typically, but not always, an array of LEDs that shine through keycaps and/or switches.

Bluetooth

A short range peer to peer wireless protocol. Most common wireless protocol for a keyboard.

Bootloader

A special program that is written to a protected area of your MCU that allows the MCU to upgrade its own firmware, typically over USB.

Bootmagic

A feature that allows for various keyboard behavior changes to happen on the fly, such as swapping or disabling common keys.

C

A low-level programming language suitable for system code. Most QMK code is written in C.

Colemak

An alternative keyboard layout that is gaining in popularity.

Compile

The process of turning human readable code into machine code your MCU can run.

Dvorak

An alternative keyboard layout developed by Dr. August Dvorak in the 1930's. A shortened form of the Dvorak Simplified Keyboard.

Dynamic Macro

A macro which has been recorded on the keyboard and which will be lost when the keyboard is unplugged or the computer rebooted.

Eclipse

An IDE that is popular with many C developers.

Firmware

The software that controls your MCU.

git

Versioning software used at the command line

GitHub

The website that hosts most of the QMK project. It provides integration with git, issue tracking, and other features that help us run QMK.

ISP

In-system programming, a method of programming an AVR chip using external hardware and the JTAG pins.

hid_listen

An interface for receiving debugging messages from your keyboard. You can view these messages using QMK Flasher or PJRC's hid_listen

Keycode

A 2-byte number that represents a particular key. 0x00-0xFF are used for Basic Keycodes while 0x100-0xFFFF are used for Quantum Keycodes.

Key Down

An event that happens when a key is pressed down, but is completed before a key is released.

Key Up

An event that happens when a key is released.

Keymap

An array of keycodes mapped to a physical keyboard layout, which are processed on key presses and releases

Layer

An abstraction used to allow a key to serve multiple purposes. The highest active layer takes precedence.

Leader Key

A feature that allows you to tap the leader key followed by a sequence of 1, 2, or 3 keys to activate key presses or other quantum features.

LED

Light Emitting Diode, the most common device used for indicators on a keyboard.

Make

Software package that is used to compile all the source files. You run make with various options to compile your keyboard firmware.

Matrix

A wiring pattern of columns and rows that enables the MCU to detect keypresses with a fewer number of pins. The matrix often incorporates diodes to allow for NKRO.

Macro

A feature that lets you send multiple keypress events (hid reports) after having pressed only a single key.

MCU

Microcontrol Unit, the processor that powers your keyboard.

Modifier

A key that is held down while typing another key to modify the action of that key. Examples include Ctrl, Alt, and Shift.

Mousekeys

A feature that lets you control your mouse cursor and click from your keyboard.

N-Key Rollover (NKRO)

A term that applies to keyboards that are capable of reporting any number of key-presses at once.

Oneshot Modifier

A modifier that acts as if it is held down until another key is released, so you can press the mod and then press the key, rather than holding the mod while pressing the key. Also known as a Sticky key or a Dead key.

ProMicro

A low cost AVR development board. Clones of this device are often found on ebay very inexpensively (under $5) but people often struggle with flashing their pro micros.

Pull Request

A request to submit code to QMK. We encourage all users to submit Pull Requests for bugfixes and new features.

QWERTY

The standard English keyboard layout, and often a shortcut for other language's standard layouts. Named for the first 6 letters on the keyboard.

QWERTZ

The standard Deutsche (German) keyboard layout. Named for the first 6 letters on the keyboard.

Rollover

The term for pressing a key while a key is already held down. Variants include 2KRO, 6KRO, and NKRO.

Scancode

A 1 byte number that is sent as part of a HID report over USB that represents a single key. These numbers are documented in the HID Usage Tables published by the USB-IF.

Space Cadet Shift

A special set of shift keys which allow you to type various types of braces by tapping the left or right shift one or more times.

Tap

Pressing and releasing a key. In some situations you will need to distinguish between a key down and a key up event, and Tap always refers to both at once.

Tap Dance

A feature that lets you assign multiple keycodes to the same key based on how many times you press it.

Teensy

A low-cost AVR development board that is commonly used for hand-wired builds. A teensy is often chosen despite costing a few dollars more due to its halfkay bootloader, which makes flashing very simple.

Underlight

A generic term for LEDs that light the underside of the board. These LEDs typically shine away from the bottom of the PCB and towards the surface the keyboard rests on.

Unicode

In the larger computer world Unicode is a set of encoding schemes for representing characters in any language. As it relates to QMK it means using various OS schemes to send unicode codepoints instead of scancodes.

Unit Testing

A framework for running automated tests against QMK. Unit testing helps us be confident that our changes do not break anything.

USB

Universal Serial Bus, the most common wired interface for a keyboard.

USB Host (or simply Host)

The USB Host is your computer, or whatever device your keyboard is plugged into.

Couldn't Find the Term You're Looking For?

Open an issue with your question and the term in question could be added here. Better still, open a pull request with the definition. 😃

', 108); diff --git a/assets/reference_glossary.md.CXMuxToT.lean.js b/assets/reference_glossary.md.DsaOcqe5.lean.js similarity index 91% rename from assets/reference_glossary.md.CXMuxToT.lean.js rename to assets/reference_glossary.md.DsaOcqe5.lean.js index eef1fa83a5f..e1bfcdb6b6f 100644 --- a/assets/reference_glossary.md.CXMuxToT.lean.js +++ b/assets/reference_glossary.md.DsaOcqe5.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Glossary of QMK Terms","description":"","frontmatter":{},"headers":[],"relativePath":"reference_glossary.md","filePath":"reference_glossary.md"}'); const _sfc_main = { name: "reference_glossary.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 108); diff --git a/assets/reference_info_json.md.D2_8zSnw.js b/assets/reference_info_json.md.DY4XHSHT.js similarity index 99% rename from assets/reference_info_json.md.D2_8zSnw.js rename to assets/reference_info_json.md.DY4XHSHT.js index b299122ff8f..f3fa560feea 100644 --- a/assets/reference_info_json.md.D2_8zSnw.js +++ b/assets/reference_info_json.md.DY4XHSHT.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"info.json Reference","description":"","frontmatter":{},"headers":[],"relativePath":"reference_info_json.md","filePath":"reference_info_json.md"}'); const _sfc_main = { name: "reference_info_json.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

info.json Reference

The information contained in info.json is combined with the config.h and rules.mk files, dynamically generating the necessary configuration for your keyboard at compile time. It is also used by the QMK API, and contains the information QMK Configurator needs to display a representation of your keyboard. Its key/value pairs are ruled by the data/schemas/keyboard.jsonschema file. To learn more about the why and how of the schema file see the Data Driven Configuration page.

You can create info.json files at every level under qmk_firmware/keyboards/<keyboard_name>. These files are combined, with more specific files overriding keys in less specific files. This means you do not need to duplicate your metadata information. For example, qmk_firmware/keyboards/clueboard/info.json specifies information common to all Clueboard products, such as manufacturer and maintainer, while qmk_firmware/keyboards/clueboard/66/info.json contains more specific information about Clueboard 66%.

General Metadata

Hardware Configuration

Firmware Configuration

APA102

Configures the APA102 driver.

Audio

Configures the Audio feature.

Backlight

Configures the Backlight feature.

Bluetooth

Configures the Bluetooth feature.

Bootmagic

Configures the Bootmagic feature.

Caps Word

Configures the Caps Word feature.

Combo

Configures the Combo feature.

DIP Switches

Configures the DIP Switches feature.

EEPROM

Configures the EEPROM driver.

Encoder

Configures the Encoder feature.

Indicators

Configures the LED Indicators feature.

Layouts

The layouts portion of the dictionary contains several nested dictionaries. The outer layer consists of QMK layout names, for example LAYOUT_60_ansi or LAYOUT_60_iso.

Each key dictionary in a layout describes the physical properties of a key. If you are familiar with the Raw Data format for Keyboard Layout Editor, you will find many of the concepts the same. Key names and layout choices are reused wherever possible, but unlike KLE each key is stateless, inheriting no properties from the keys that came before it.

All key positions and rotations are specified in relation to the top-left corner of the keyboard, and the top-left corner of each key.

The ISO enter key is represented by a 1.25u×2uh key. Renderers which utilize info.json layout data (such as qmk info -l and the QMK Configurator) should display this key as expected.

Leader Key

Configures the Leader Key feature.

LED Matrix

Configures the LED Matrix feature.

Matrix

Mouse Keys

Configures the Mouse Keys feature.

One Shot

Configures One Shot keys.

PS/2

Configures the PS/2 feature.

QMK LUFA Bootloader

RGBLight

Configures the RGB Lighting feature.

RGB Matrix

Configures the RGB Matrix feature.

Secure

Configures the Secure feature.

Split Keyboard

Configures the Split Keyboard feature.

Stenography

Configures the Stenography feature.

USB

WS2812

Configures the WS2812 driver.

', 87); diff --git a/assets/reference_info_json.md.D2_8zSnw.lean.js b/assets/reference_info_json.md.DY4XHSHT.lean.js similarity index 91% rename from assets/reference_info_json.md.D2_8zSnw.lean.js rename to assets/reference_info_json.md.DY4XHSHT.lean.js index 976c919605c..b74956c3a20 100644 --- a/assets/reference_info_json.md.D2_8zSnw.lean.js +++ b/assets/reference_info_json.md.DY4XHSHT.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"info.json Reference","description":"","frontmatter":{},"headers":[],"relativePath":"reference_info_json.md","filePath":"reference_info_json.md"}'); const _sfc_main = { name: "reference_info_json.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 87); diff --git a/assets/reference_keymap_extras.md.D-__wuxf.js b/assets/reference_keymap_extras.md.Bgwaxc8b.js similarity index 99% rename from assets/reference_keymap_extras.md.D-__wuxf.js rename to assets/reference_keymap_extras.md.Bgwaxc8b.js index e6e60cf18da..36c48d40fd3 100644 --- a/assets/reference_keymap_extras.md.D-__wuxf.js +++ b/assets/reference_keymap_extras.md.Bgwaxc8b.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Language-specific Keycodes","description":"","frontmatter":{},"headers":[],"relativePath":"reference_keymap_extras.md","filePath":"reference_keymap_extras.md"}'); const _sfc_main = { name: "reference_keymap_extras.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Language-specific Keycodes

Keyboards are able to support a wide range of languages. However, this support is not actually achieved within the keyboard itself - instead, it sends numerical codes, which the operating system maps to the appropriate characters depending on the user's configured keyboard layout. By default (and per the HID spec), this is the US ANSI layout. For example, when a Swedish person presses the key with the å character printed on it, the keyboard is actually sending the keycode for [.

Obviously, this can get confusing, so QMK provides language-specific keycode aliases for many keyboard layouts. These won't do much on their own - you still have to set the matching keyboard layout in your OS settings. Think of them more as keycap labels for your keymap.

Simply #include one of the keycode headers below at the top of your keymap.c, and assign the keycodes defined in the header in place of the KC_ prefixed ones.

Sendstring Support

By default, SEND_STRING() assumes a US ANSI keyboard layout is set. If you are using a different layout, you can include one of the Sendstring LUT headers below in your keymap.c to override the lookup tables used for mapping ASCII characters to keycodes. You do not need to include the corresponding keymap_*.h header, as it is implicit when including the Sendstring header.

An important thing to note here is that SEND_STRING() only operates on ASCII text. This means that you cannot pass it a string containing Unicode characters - this unfortunately includes accented characters that may be present in your desired layout.
Many layouts make certain characters, such as Grave or Tilde, available only as dead keys, so you must add a space immediately after it in the string you want to send, to prevent it from potentially combining with the next character.
Certain other layouts have no Sendstring header as they do not use a Latin-derived alphabet (for example Greek and Russian), and thus there is no way to input most of the ASCII character set.

Header Files

These headers are located in quantum/keymap_extras/.

LayoutKeycodes HeaderSendstring LUT Header
Canadian Multilingual (CSA)keymap_canadian_multilingual.hsendstring_canadian_multilingual.h
Croatiankeymap_croatian.hsendstring_croatian.h
Czechkeymap_czech.hsendstring_czech.h
Czech (macOS, ANSI)keymap_czech_mac_ansi.hsendstring_czech_mac_ansi.h
Czech (macOS, ISO)keymap_czech_mac_iso.hsendstring_czech_mac_iso.h
Danishkeymap_danish.hsendstring_danish.h
Dutch (Belgium)keymap_belgian.hsendstring_belgian.h
English (Ireland)keymap_irish.h
English (UK)keymap_uk.hsendstring_uk.h
English (US Extended)keymap_us_extended.h
English (US International)keymap_us_international.hsendstring_us_international.h
English (US International, Linux)keymap_us_international_linux.h
Estoniankeymap_estonian.hsendstring_estonian.h
Farsikeymap_farsi.h
Finnishkeymap_finnish.hsendstring_finnish.h
Frenchkeymap_french.hsendstring_french.h
French (AFNOR)keymap_french_afnor.hsendstring_french_afnor.h
French (BÉPO)keymap_bepo.hsendstring_bepo.h
French (Belgium)keymap_belgian.hsendstring_belgian.h
French (Canada)keymap_canadian_french.hsendstring_canadian_french.h
French (Switzerland)keymap_swiss_fr.hsendstring_swiss_fr.h
French (macOS, ISO)keymap_french_mac_iso.hsendstring_french_mac_iso.h
Germankeymap_german.hsendstring_german.h
German (Switzerland)keymap_swiss_de.hsendstring_swiss_de.h
German (macOS)keymap_german_mac_iso.hsendstring_german_mac_iso.h
German (Neo2)keymap_neo2.h
Greekkeymap_greek.h
Hebrewkeymap_hebrew.h
Hungariankeymap_hungarian.hsendstring_hungarian.h
Icelandickeymap_icelandic.hsendstring_icelandic.h
Italiankeymap_italian.hsendstring_italian.h
Italian (macOS, ANSI)keymap_italian_mac_ansi.hsendstring_italian_mac_ansi.h
Italian (macOS, ISO)keymap_italian_mac_iso.hsendstring_italian_mac_iso.h
Japanesekeymap_japanese.hsendstring_japanese.h
Koreankeymap_korean.h
Latviankeymap_latvian.hsendstring_latvian.h
Lithuanian (ĄŽERTY)keymap_lithuanian_azerty.hsendstring_lithuanian_azerty.h
Lithuanian (QWERTY)keymap_lithuanian_qwerty.hsendstring_lithuanian_qwerty.h
Norwegiankeymap_norwegian.hsendstring_norwegian.h
Polishkeymap_polish.h
Portuguesekeymap_portuguese.hsendstring_portuguese.h
Portuguese (macOS, ISO)keymap_portuguese_mac_iso.hsendstring_portuguese_mac_iso.h
Portuguese (Brazil)keymap_brazilian_abnt2.hsendstring_brazilian_abnt2.h
Romaniankeymap_romanian.hsendstring_romanian.h
Russiankeymap_russian.h
Serbiankeymap_serbian.h
Serbian (Latin)keymap_serbian_latin.hsendstring_serbian_latin.h
Slovakkeymap_slovak.hsendstring_slovak.h
Sloveniankeymap_slovenian.hsendstring_slovenian.h
Spanishkeymap_spanish.hsendstring_spanish.h
Spanish (Dvorak)keymap_spanish_dvorak.hsendstring_spanish_dvorak.h
Spanish (Latin America)keymap_spanish_latin_america.hsendstring_spanish_latin_america.h
Swedishkeymap_swedish.hsendstring_swedish.h
Swedish (macOS, ANSI)keymap_swedish_mac_ansi.h
Swedish (macOS, ISO)keymap_swedish_mac_iso.h
Swedish Pro (macOS, ANSI)keymap_swedish_pro_mac_ansi.h
Swedish Pro (macOS, ISO)keymap_swedish_pro_mac_iso.h
Turkish (F)keymap_turkish_f.hsendstring_turkish_f.h
Turkish (Q)keymap_turkish_q.hsendstring_turkish_q.h
Ukrainiankeymap_ukrainian.h

There are also a few which are not quite language-specific, but useful if you are not using a QWERTY layout:

LayoutKeycodes HeaderSendstring LUT Header
Colemakkeymap_colemak.hsendstring_colemak.h
Dvorakkeymap_dvorak.hsendstring_dvorak.h
Dvorak (French)keymap_dvorak_fr.hsendstring_dvorak_fr.h
Dvorak (Programmer)keymap_dvorak_programmer.hsendstring_dvorak_programmer.h
Normankeymap_norman.hsendstring_norman.h
Ploverkeymap_plover.h
Plover (Dvorak)keymap_plover_dvorak.h
Workmankeymap_workman.hsendstring_workman.h
Workman (ZXCVM)keymap_workman_zxcvm.hsendstring_workman_zxcvm.h
', 12); diff --git a/assets/reference_keymap_extras.md.D-__wuxf.lean.js b/assets/reference_keymap_extras.md.Bgwaxc8b.lean.js similarity index 91% rename from assets/reference_keymap_extras.md.D-__wuxf.lean.js rename to assets/reference_keymap_extras.md.Bgwaxc8b.lean.js index 3052cf503e0..3a1ac759183 100644 --- a/assets/reference_keymap_extras.md.D-__wuxf.lean.js +++ b/assets/reference_keymap_extras.md.Bgwaxc8b.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Language-specific Keycodes","description":"","frontmatter":{},"headers":[],"relativePath":"reference_keymap_extras.md","filePath":"reference_keymap_extras.md"}'); const _sfc_main = { name: "reference_keymap_extras.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 12); diff --git a/assets/squeezing_avr.md.BmcLYKOr.js b/assets/squeezing_avr.md.DYXaAn44.js similarity index 99% rename from assets/squeezing_avr.md.BmcLYKOr.js rename to assets/squeezing_avr.md.DYXaAn44.js index 9f842b2b30a..92f8d3caa3f 100644 --- a/assets/squeezing_avr.md.BmcLYKOr.js +++ b/assets/squeezing_avr.md.DYXaAn44.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Squeezing the most out of AVR","description":"","frontmatter":{},"headers":[],"relativePath":"squeezing_avr.md","filePath":"squeezing_avr.md"}'); const _sfc_main = { name: "squeezing_avr.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Squeezing the most out of AVR

AVR is severely resource-constrained, and as QMK continues to grow, it is approaching a point where support for AVR may need to be moved to legacy status as newer development is unable to fit into those constraints.

However, if you need to reduce the compiled size of your firmware to fit the controller's limited flash size, there are a number of options to do so.

rules.mk Settings

First and foremost is enabling link time optimization. To do so, add this to your rules.mk:

make
LTO_ENABLE = yes

This will cause the final step to take longer, but should get you a smaller compiled size. This also disables Action Functions, and Action Macros, both of which are deprecated. This will get you the most savings, in most situations.

From there, disabling extraneous systems will help -- e.g.:

make
CONSOLE_ENABLE = no\nCOMMAND_ENABLE = no\nMOUSEKEY_ENABLE = no\nEXTRAKEY_ENABLE = no

This disables some of the functionality that you may not need. But note that extrakeys disables stuff like the media keys and system volume control.

If that isn't enough to get your firmware down to size, then there are some additional features that you can disable:

make
SPACE_CADET_ENABLE = no\nGRAVE_ESC_ENABLE = no \nMAGIC_ENABLE = no

These features are enabled by default, but they may not be needed. Double check to make sure. The Magic Keycodes are the largest and control things like NKRO toggling, GUI and ALT/CTRL swapping, etc. Disabling them will disable those functions. See Magic Functions for disabling related functions.

If you use sprintf or snprintf functions you can save around ~400 Bytes by enabling this option.

make
AVR_USE_MINIMAL_PRINTF = yes

This will include smaller implementations from AVRs libc into your Firmware. They are not fully featured, for instance zero padding and field width specifiers are not supported. So if you use sprintf or snprintf like this:

c
sprintf(wpm_str, "%03d", get_current_wpm());\nsnprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c");

you will still need the standard implementation.

config.h Settings

If you've done all of that, and you don't want to disable features like RGB, Audio, OLEDs, etc, there are some additional options that you can add to your config.h that can help.

Starting with Lock Key support. If you have a Cherry MX Lock switch (lucky you!), you don't want to do this. But chances are, you don't. In that case, add this to your config.h:

c
#undef LOCKING_SUPPORT_ENABLE\n#undef LOCKING_RESYNC_ENABLE

Oneshots. If you're not using these, you can disable the feature by adding this to your config.h:

c
#define NO_ACTION_ONESHOT

The same with tapping keys (mod tap, layer tap, etc)

c
#define NO_ACTION_TAPPING

Audio Settings

If you're using the Audio feature, by default that includes the music mode feature. This tranlates matrix positions into notes. It's neat for sure, but most likely, you're not using it. You can disable it by adding this to your config.h:

c
#define NO_MUSIC_MODE

And by adding this to your rules.mk

make
MUSIC_ENABLE = no

Layers

There are also some options for layers, that can reduce the firmware size. All of these settings are for your config.h.

You can limit the number of layers that the firmware uses -- if you're using up to 8 layers in total:

c
#define LAYER_STATE_8BIT

or if you require up to 16 layers instead:

c
#define LAYER_STATE_16BIT

Or if you're not using layers at all, you can outright remove the functionality altogether:

c
#define NO_ACTION_LAYER

Magic Functions

There are two __attribute__ ((weak)) placeholder functions available to customize magic keycodes. If you are not using that feature to swap keycodes, such as backslash with backspace, add the following to your keymap.c or user space code:

c
#ifndef MAGIC_ENABLE\nuint16_t keycode_config(uint16_t keycode) {\n    return keycode;\n}\n#endif

Likewise, if you are not using magic keycodes to swap modifiers, such as Control with GUI, add the following to your keymap.c or user space code:

c
#ifndef MAGIC_ENABLE\nuint8_t mod_config(uint8_t mod) {\n    return mod;\n}\n#endif

Both of them will overwrite the placeholder functions with a simple return statement to reduce firmware size.

OLED tweaks

One place you can save a bunch of space here is by not using sprintf or snprintf. This function call takes up ~1.5kB of firmware space, and can be rewritten. For instance, WPM uses this a lot.

You can convert this:

c
    // OLD CODE\n    char wpm_str[4] = {0};\n    sprintf(wpm_str, "WPM: %03d", get_current_wpm());\n    oled_write(wpm_str, ' '), false);

into this:

c
    // NEW CODE\n    oled_write_P(PSTR("WPM: "), false);\n    oled_write(get_u8_str(get_current_wpm(), ' '), false);

which outputs WPM: 5. Or this:

c
    // NEW CODE\n    oled_write_P(PSTR("WPM: "), false);\n    oled_write(get_u8_str(get_current_wpm(), '0'), false);

which outputs WPM: 005.

RGB Settings

If you're using RGB on your board, both RGB Light (Underglow) and RGB Matrix (per key RGB) now require defines to enable different animations -- some keyboards enable a lot of animations by default, so you can generally gain back some space by disabling specific animations if you don't use them. For RGB Light you can disable these in your keymap's config.h:

c
#undef RGBLIGHT_ANIMATIONS\n#undef RGBLIGHT_EFFECT_BREATHING\n#undef RGBLIGHT_EFFECT_RAINBOW_MOOD\n#undef RGBLIGHT_EFFECT_RAINBOW_SWIRL\n#undef RGBLIGHT_EFFECT_SNAKE\n#undef RGBLIGHT_EFFECT_KNIGHT\n#undef RGBLIGHT_EFFECT_CHRISTMAS\n#undef RGBLIGHT_EFFECT_STATIC_GRADIENT\n#undef RGBLIGHT_EFFECT_RGB_TEST\n#undef RGBLIGHT_EFFECT_ALTERNATING\n#undef RGBLIGHT_EFFECT_TWINKLE

For RGB Matrix, these need to be explicitly enabled as well. To disable any that were enabled by the keyboard, add one or more of these to your keymap's config.h:

c
#undef ENABLE_RGB_MATRIX_ALPHAS_MODS\n#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN\n#undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT\n#undef ENABLE_RGB_MATRIX_BREATHING\n#undef ENABLE_RGB_MATRIX_BAND_SAT\n#undef ENABLE_RGB_MATRIX_BAND_VAL\n#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT\n#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL\n#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT\n#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL\n#undef ENABLE_RGB_MATRIX_CYCLE_ALL\n#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT\n#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN\n#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON\n#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN\n#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL\n#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL\n#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL\n#undef ENABLE_RGB_MATRIX_DUAL_BEACON\n#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON\n#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS\n#undef ENABLE_RGB_MATRIX_FLOWER_BLOOMING\n#undef ENABLE_RGB_MATRIX_RAINDROPS\n#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS\n#undef ENABLE_RGB_MATRIX_HUE_BREATHING\n#undef ENABLE_RGB_MATRIX_HUE_PENDULUM\n#undef ENABLE_RGB_MATRIX_HUE_WAVE\n#undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL\n#undef ENABLE_RGB_MATRIX_PIXEL_FLOW\n#undef ENABLE_RGB_MATRIX_PIXEL_RAIN\n\n#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP\n#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN\n\n#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE\n#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE\n#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE\n#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE\n#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS\n#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS\n#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS\n#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS\n#undef ENABLE_RGB_MATRIX_SPLASH\n#undef ENABLE_RGB_MATRIX_MULTISPLASH\n#undef ENABLE_RGB_MATRIX_SOLID_SPLASH\n#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH

Final Thoughts

If you've done all of this, and your firmware is still too large, then it is time to consider making the switch to ARM. There are a number of Pro Micro replacements with an ARM controller:

There are other, non-Pro Micro compatible boards out there. The most popular being:

', 64); diff --git a/assets/squeezing_avr.md.BmcLYKOr.lean.js b/assets/squeezing_avr.md.DYXaAn44.lean.js similarity index 91% rename from assets/squeezing_avr.md.BmcLYKOr.lean.js rename to assets/squeezing_avr.md.DYXaAn44.lean.js index ebb062ee01c..f85e39e470f 100644 --- a/assets/squeezing_avr.md.BmcLYKOr.lean.js +++ b/assets/squeezing_avr.md.DYXaAn44.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Squeezing the most out of AVR","description":"","frontmatter":{},"headers":[],"relativePath":"squeezing_avr.md","filePath":"squeezing_avr.md"}'); const _sfc_main = { name: "squeezing_avr.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 64); diff --git a/assets/support.md.Bj3JfaeV.js b/assets/support.md.BJG_DmlL.js similarity index 97% rename from assets/support.md.Bj3JfaeV.js rename to assets/support.md.BJG_DmlL.js index a2b0fa4df36..d18e53ffe77 100644 --- a/assets/support.md.Bj3JfaeV.js +++ b/assets/support.md.BJG_DmlL.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Getting Help","description":"","frontmatter":{},"headers":[],"relativePath":"support.md","filePath":"support.md"}'); const _sfc_main = { name: "support.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Getting Help

There are a lot of resources for getting help with QMK.

Please read our Code of Conduct before participating in any of our community spaces.

Realtime Chat

If you need help with something, the best place to get quick support is going to be on our Discord Server. There is usually somebody online, and there are a bunch of very helpful people there.

OLKB Subreddit

The official QMK forum is /r/olkb on reddit.com.

GitHub Issues

You can open an issue on GitHub. This is especially handy when your issue will require long-term discussion or debugging.

', 9); diff --git a/assets/support.md.Bj3JfaeV.lean.js b/assets/support.md.BJG_DmlL.lean.js similarity index 90% rename from assets/support.md.Bj3JfaeV.lean.js rename to assets/support.md.BJG_DmlL.lean.js index 70f75d68487..f7bd1ee0edd 100644 --- a/assets/support.md.Bj3JfaeV.lean.js +++ b/assets/support.md.BJG_DmlL.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Getting Help","description":"","frontmatter":{},"headers":[],"relativePath":"support.md","filePath":"support.md"}'); const _sfc_main = { name: "support.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 9); diff --git a/assets/support_deprecation_policy.md.CCo4ljiw.js b/assets/support_deprecation_policy.md.CQ_cp_q2.js similarity index 98% rename from assets/support_deprecation_policy.md.CCo4ljiw.js rename to assets/support_deprecation_policy.md.CQ_cp_q2.js index 92310242b9d..05daa6dfe86 100644 --- a/assets/support_deprecation_policy.md.CCo4ljiw.js +++ b/assets/support_deprecation_policy.md.CQ_cp_q2.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Feature support policies","description":"","frontmatter":{},"headers":[],"relativePath":"support_deprecation_policy.md","filePath":"support_deprecation_policy.md"}'); const _sfc_main = { name: "support_deprecation_policy.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Feature support policies

System Constraints

In general, feature development is encouraged to support as many hardware configurations as possible. Depending on system constraints this may not always be achievable, and is usually bound by microcontroller flash and RAM capabilities.

The most frequently-hit constraint is the amount of code that can be flashed onto an ATmega32U4 -- users almost always need to pick and choose included functionality due to the size constraints.

WARNING

Squeezing AVR has some steps that users can take in order to minimise the overall firmware size, which in some cases enables the ability for users to include other desired features.

Deprecation & Removal Policy

QMK Firmware strives for innovation wherever possible. With ongoing feature development and other improvements made to the codebase, sometimes the retirement of outdated, under-utilised, or limited-value functionality is selected for deprecation and subsequent removal.

The intent behind feature deprecation is to maintain and/or improve quality. As a result, perpetually supporting under-utilised features would negatively impact the QMK team's ability to improve other areas of QMK Firmware.

There may be several motivations behind the deprecation or removal of functionality (keeping in mind that this list is not exhaustive):

When a feature is selected for deprecation, future changes to that area will cease to be developed by the QMK team, and Pull Requests submitted against those areas will be declined.

TIP

As QMK does not gather metrics from its users, the only way the QMK team can gauge the level of usage is to refer to the main QMK Firmware repository -- searching through forks is not practical due to the sheer number of them.

How much advance notice will be given?

Disregarding emergencies or other high-risk concerns, deprecation of large features or entire subsystems within QMK will be communicated on the develop branch at least one breaking changes cycle (3 months) before removal. Advance notice may be extended for higher impact features, and is at the discretion of the QMK team.

Smaller features may be removed within a breaking changes cycle, and will generally be based on the level of use within the repository. Features with minimal use may be selected for removal at any time on the develop branch.

Third-party software libraries leveraged by QMK are generally forked to mitigate disappearance upstream. If the upstream repository is removed, it will generally be replaced when practical, or dependent features will be removed as per the normal deprecation policy.

How will deprecation be communicated?

Every breaking changes merge from develop into master is accompanied by a changelog document -- intended and completed deprecations will be communicated here.

In addition, wherever possible warnings will be issued during firmware compilation when deprecated features are still being used.

', 19); diff --git a/assets/support_deprecation_policy.md.CCo4ljiw.lean.js b/assets/support_deprecation_policy.md.CQ_cp_q2.lean.js similarity index 92% rename from assets/support_deprecation_policy.md.CCo4ljiw.lean.js rename to assets/support_deprecation_policy.md.CQ_cp_q2.lean.js index b8adf0d650c..27f6b1f6b56 100644 --- a/assets/support_deprecation_policy.md.CCo4ljiw.lean.js +++ b/assets/support_deprecation_policy.md.CQ_cp_q2.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Feature support policies","description":"","frontmatter":{},"headers":[],"relativePath":"support_deprecation_policy.md","filePath":"support_deprecation_policy.md"}'); const _sfc_main = { name: "support_deprecation_policy.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 19); diff --git a/assets/syllabus.md.BKPUpSTy.js b/assets/syllabus.md.kT0qPDWa.js similarity index 98% rename from assets/syllabus.md.BKPUpSTy.js rename to assets/syllabus.md.kT0qPDWa.js index aa156b22455..6b6e37c6a76 100644 --- a/assets/syllabus.md.BKPUpSTy.js +++ b/assets/syllabus.md.kT0qPDWa.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Syllabus","description":"","frontmatter":{},"headers":[],"relativePath":"syllabus.md","filePath":"syllabus.md"}'); const _sfc_main = { name: "syllabus.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Syllabus

This page helps you build up your QMK knowledge by introducing the basics first and guiding you to understanding all the concepts you need to know to be proficient with QMK.

Beginning Topics

If you read nothing else you should read the documents in this section. After reading the Tutorial you should be able to create a basic keymap, compile it, and flash it to your keyboard. The remaining documents will flesh out your knowledge of these basics.

Intermediate Topics

These topics start to dig into some of the features that QMK supports. You don't have to read all of these documents, but some of the documents in the Advanced Topics section won't make sense if you skip over some of these.

Advanced Topics

Everything below here requires a lot of foundational knowledge. Besides being able to create keymaps using advanced features you should be familiar with using both config.h and rules.mk to configure options for your keyboard.

', 11); diff --git a/assets/syllabus.md.BKPUpSTy.lean.js b/assets/syllabus.md.kT0qPDWa.lean.js similarity index 90% rename from assets/syllabus.md.BKPUpSTy.lean.js rename to assets/syllabus.md.kT0qPDWa.lean.js index c4989edbd7d..301fa1cbb04 100644 --- a/assets/syllabus.md.BKPUpSTy.lean.js +++ b/assets/syllabus.md.kT0qPDWa.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"QMK Syllabus","description":"","frontmatter":{},"headers":[],"relativePath":"syllabus.md","filePath":"syllabus.md"}'); const _sfc_main = { name: "syllabus.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 11); diff --git a/assets/tap_hold.md.DD8WTSla.js b/assets/tap_hold.md.Clf06wbr.js similarity index 99% rename from assets/tap_hold.md.DD8WTSla.js rename to assets/tap_hold.md.Clf06wbr.js index 149bd2e4bcc..b823bf16d88 100644 --- a/assets/tap_hold.md.DD8WTSla.js +++ b/assets/tap_hold.md.Clf06wbr.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Tap-Hold Configuration Options","description":"","frontmatter":{},"headers":[],"relativePath":"tap_hold.md","filePath":"tap_hold.md"}'); const _sfc_main = { name: "tap_hold.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Tap-Hold Configuration Options

While Tap-Hold options are fantastic, they are not without their issues. We have tried to configure them with reasonable defaults, but that may still cause issues for some people.

These options let you modify the behavior of the Tap-Hold keys.

Tapping Term

The crux of all of the following features is the tapping term setting. This determines what is a tap and what is a hold. The exact timing for this to feel natural can vary from keyboard to keyboard, from switch to switch, and from key to key.

TIP

DYNAMIC_TAPPING_TERM_ENABLE enables three special keys that can help you quickly find a comfortable tapping term for you. See "Dynamic Tapping Term" for more details.

You can set the global time for this by adding the following setting to your config.h:

c
#define TAPPING_TERM 200

This setting is defined in milliseconds and defaults to 200ms. This is a good average for the majority of people.

For more granular control of this feature, you can add the following to your config.h:

c
#define TAPPING_TERM_PER_KEY

You can then add the following function to your keymap:

c
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {\n    switch (keycode) {\n        case SFT_T(KC_SPC):\n            return TAPPING_TERM + 1250;\n        case LT(1, KC_GRV):\n            return 130;\n        default:\n            return TAPPING_TERM;\n    }\n}

Dynamic Tapping Term

DYNAMIC_TAPPING_TERM_ENABLE is a feature you can enable in rules.mk that lets you use three special keys in your keymap to configure the tapping term on the fly.

KeyAliasesDescription
QK_DYNAMIC_TAPPING_TERM_PRINTDT_PRNTTypes the current tapping term, in milliseconds
QK_DYNAMIC_TAPPING_TERM_UPDT_UPIncreases the current tapping term by DYNAMIC_TAPPING_TERM_INCREMENTms (5ms by default)
QK_DYNAMIC_TAPPING_TERM_DOWNDT_DOWNDecreases the current tapping term by DYNAMIC_TAPPING_TERM_INCREMENTms (5ms by default)

Set the tapping term as usual with #define TAPPING_TERM <value> in config.h and add DYNAMIC_TAPPING_TERM_ENABLE = yes in rules.mk. Then, place the above three keys somewhere in your keymap and flash the new firmware onto your board.

Now, you can try using your dual-role keys, such as layer-taps and mod-taps, and use DT_DOWN and DT_UP to adjust the tapping term immediately. If you find that you frequently trigger the modifier of your mod-tap(s) by accident, for example, that's a sign that your tapping term may be too low so tap DT_UP a few times to increase the tapping term until that no longer happens. On the flip side, if you get superfluous characters when you actually intended to momentarily activate a layer, tap DT_DOWN to lower the tapping term. Do note that these keys affect the global tapping term, you cannot change the tapping term of a specific key on the fly.

Once you're satisfied with the current tapping term value, open config.h and replace whatever value you first wrote for the tapping term by the output of the DT_PRNT key.

It's important to update TAPPING_TERM with the new value because the adjustments made using DT_UP and DT_DOWN are not persistent.

The value by which the tapping term increases or decreases when you tap DT_UP and DT_DOWN can be configured in config.h with #define DYNAMIC_TAPPING_TERM_INCREMENT <new value>. Note that the tapping term is not modified when holding down the tap term keys so if you need to, for example, decrease the current tapping term by 50ms, you cannot just press down and hold DT_DOWN; you will have to tap it 10 times in a row with the default increment of 5ms.

If you need more flexibility, nothing prevents you from defining your own custom keys to dynamically change the tapping term.

c
enum custom_dynamic_tapping_term_keys = {\n    DT_UP_50 = SAFE_RANGE,\n    DT_DOWN_50,\n    DT_UP_X2,\n    DT_DOWN_X2,\n}\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n    switch (keycode) {\n    case DT_UP_50:\n        if (record->event.pressed) {\n            g_tapping_term += 50;\n        }\n        break;\n    case DT_DOWN_50:\n        if (record->event.pressed) {\n            g_tapping_term -= 50;\n        }\n        break;\n    case DT_UP_X2:\n        if (record->event.pressed) {\n            g_tapping_term *= 2;\n        }\n        break;\n    case DT_DOWN_X2:\n        if (record->event.pressed) {\n            g_tapping_term /= 2;\n        }\n        break;\n    }\n    return true;\n};

In order for this feature to be effective if you use per-key tapping terms, you need to make a few changes to the syntax of the get_tapping_term function. All you need to do is replace every occurrence of TAPPING_TERM in the get_tapping_term function by lowercase g_tapping_term. If you don't do that, you will still see the value typed by DT_PRNT go up and down as you configure the tapping term on the fly but you won't feel those changes as they don't get applied. If you can go as low as 10ms and still easily trigger the tap function of a dual-role key, that's a sign that you forgot to make the necessary changes to your get_tapping_term function.

For instance, here's how the example get_tapping_term shown earlier should look after the transformation:

c
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {\n    switch (keycode) {\n        case SFT_T(KC_SPC):\n           return g_tapping_term + 1250;\n        case LT(1, KC_GRV):\n            return 130;\n        default:\n            return g_tapping_term;\n    }\n}

The reason is that TAPPING_TERM is a macro that expands to a constant integer and thus cannot be changed at runtime whereas g_tapping_term is a variable whose value can be changed at runtime. If you want, you can temporarily enable DYNAMIC_TAPPING_TERM_ENABLE to find a suitable tapping term value and then disable that feature and revert back to using the classic syntax for per-key tapping term settings. In case you need to access the tapping term from elsewhere in your code, you can use the GET_TAPPING_TERM(keycode, record) macro. This macro will expand to whatever is the appropriate access pattern given the current configuration.

Tap-Or-Hold Decision Modes

The code which decides between the tap and hold actions of dual-role keys supports three different modes, in increasing order of preference for the hold action:

  1. The default mode selects the hold action only if the dual-role key is held down longer than the tapping term. In this mode pressing other keys while the dual-role key is held down does not influence the tap-or-hold decision. In other words, this mode ignores interrupts.

  2. The “permissive hold” mode, in addition to the default behavior, immediately selects the hold action when another key is tapped (pressed and then released) while the dual-role key is held down, even if this happens earlier than the tapping term. If another key is just pressed, but then the dual-role key is released before that other key (and earlier than the tapping term), this mode will still select the tap action.

  3. The “hold on other key press” mode, in addition to the default behavior, immediately selects the hold action when another key is pressed while the dual-role key is held down, even if this happens earlier than the tapping term.

Note that until the tap-or-hold decision completes (which happens when either the dual-role key is released, or the tapping term has expired, or the extra condition for the selected decision mode is satisfied), key events are delayed and not transmitted to the host immediately. The default mode gives the most delay (if the dual-role key is held down, this mode always waits for the whole tapping term), and the other modes may give less delay when other keys are pressed, because the hold action may be selected earlier.

Comparison

To better illustrate the tap-or-hold decision modes, let us compare the expected output of each decision mode in a handful of tapping scenarios involving a mod-tap key (LSFT_T(KC_A)) and a regular key (KC_B) with the TAPPING_TERM set to 200ms.

Note: "kc held" in the "Physical key event" column means that the key wasn't physically released yet at this point in time.

Distinct taps (AABB)

TimePhysical key eventDefaultPERMISSIVE_HOLDHOLD_ON_OTHER_KEY_PRESS
0LSFT_T(KC_A) down
199LSFT_T(KC_A) upaaa
210KC_B downababab
220KC_B upababab
TimePhysical key eventDefaultPERMISSIVE_HOLDHOLD_ON_OTHER_KEY_PRESS
0LSFT_T(KC_A) down
200LSFT_T(KC_A) heldShiftShiftShift
201LSFT_T(KC_A) upShiftShiftShift
205KC_B downbbb
210KC_B upbbb

Nested tap (ABBA)

TimePhysical key eventDefaultPERMISSIVE_HOLDHOLD_ON_OTHER_KEY_PRESS
0LSFT_T(KC_A) down
110KC_B downB
120KC_B upBB
199LSFT_T(KC_A) upabBB
TimePhysical key eventDefaultPERMISSIVE_HOLDHOLD_ON_OTHER_KEY_PRESS
0LSFT_T(KC_A) down
110KC_B downB
120KC_B upBB
200LSFT_T(KC_A) heldBBB
210LSFT_T(KC_A) upBBB
TimePhysical key eventDefaultPERMISSIVE_HOLDHOLD_ON_OTHER_KEY_PRESS
0LSFT_T(KC_A) down
200LSFT_T(KC_A) heldShiftShiftShift
205KC_B downBBB
210KC_B upBBB
220LSFT_T(KC_A) upBBB

Rolling keys (ABAB)

TimePhysical key eventDefaultPERMISSIVE_HOLDHOLD_ON_OTHER_KEY_PRESS
0LSFT_T(KC_A) down
110KC_B downB
130LSFT_T(KC_A) upababB
140KC_B upababB
TimePhysical key eventDefaultPERMISSIVE_HOLDHOLD_ON_OTHER_KEY_PRESS
0LSFT_T(KC_A) down
110KC_B downB
200LSFT_T(KC_A) heldBBB
205LSFT_T(KC_A) upBBB
210KC_B upBBB

Default Mode

Example sequence 1 (the L key is also mapped to KC_RGHT on layer 2):

             TAPPING_TERM\n  +---------------|--------------------+\n  | +-------------|-------+            |\n  | | LT(2, KC_A) |       |            |\n  | +-------------|-------+            |\n  |               | +--------------+   |\n  |               | | KC_L         |   |\n  |               | +--------------+   |\n  +---------------|--------------------+

The above sequence would send a KC_RGHT, since LT(2, KC_A) is held longer than the TAPPING_TERM.


Example sequence 2 (the L key is also mapped to KC_RGHT on layer 2):

                           TAPPING_TERM\n  +-----------------------------|------+\n  | +---------------+           |      |\n  | | LT(2, KC_A)   |           |      |\n  | +---------------+           |      |\n  |            +--------------+ |      |\n  |            | KC_L         | |      |\n  |            +--------------+ |      |\n  +-----------------------------|------+

The above sequence will not send KC_RGHT but KC_A KC_L instead, since LT(2, KC_A) is not held longer than the TAPPING_TERM.


Example sequence 3 (Mod Tap):

                         TAPPING_TERM\n  +---------------------------|--------+\n  | +-------------+           |        |\n  | | SFT_T(KC_A) |           |        |\n  | +-------------+           |        |\n  |       +--------------+    |        |\n  |       | KC_X         |    |        |\n  |       +--------------+    |        |\n  +---------------------------|--------+

In the above sequence, SFT_T(KC_A) has been released before the end of its TAPPING_TERM and as such will be interpreted as KC_A, followed by any key event that happened after the initial press of SFT_T(KC_A). In this instance, the output would be KC_A KC_X.

Permissive Hold

The “permissive hold” mode can be enabled for all dual-role keys by adding the corresponding option to config.h:

c
#define PERMISSIVE_HOLD

This makes tap and hold keys (like Layer Tap) work better for fast typists, or for high TAPPING_TERM settings.

If you press a dual-role key, tap another key (press and release) and then release the dual-role key, all within the tapping term, by default the dual-role key will perform its tap action. If the PERMISSIVE_HOLD option is enabled, the dual-role key will perform its hold action instead.

An example of a sequence that is affected by the “permissive hold” mode:

                         TAPPING_TERM   \n  +---------------------------|--------+\n  | +----------------------+  |        |\n  | | LT(2, KC_A)          |  |        |\n  | +----------------------+  |        |\n  |    +--------------+       |        |\n  |    | KC_L         |       |        |\n  |    +--------------+       |        |\n  +---------------------------|--------+

Normally, if you do all this within the TAPPING_TERM (default: 200ms), this will be registered as al by the firmware and host system. With the PERMISSIVE_HOLD option enabled, the Layer Tap key is considered as a layer switch if another key is tapped, and the above sequence would be registered as KC_RGHT (the mapping of L on layer 2). We could describe this sequence as a “nested tap” (the modified key's key down and key up events are “nested” between the dual-role key's key down and key up events).

However, this slightly different sequence will not be affected by the “permissive hold” mode:

                         TAPPING_TERM   \n  +---------------------------|--------+\n  | +-------------+           |        |\n  | | LT(2, KC_A) |           |        |\n  | +-------------+           |        |\n  |       +--------------+    |        |\n  |       | KC_L         |    |        |\n  |       +--------------+    |        |\n  +---------------------------|--------+

In the sequence above the dual-role key is released before the other key is released, and if that happens within the tapping term, the “permissive hold” mode will still choose the tap action for the dual-role key, and the sequence will be registered as al by the host. We could describe this as a “rolling press” (the two keys' key down and key up events behave as if you were rolling a ball across the two keys, first pressing each key down in sequence and then releasing them in the same order).

TIP

The PERMISSIVE_HOLD option is not noticeable if you also enable HOLD_ON_OTHER_KEY_PRESS because the latter option considers both the “nested tap” and “rolling press” sequences like shown above as a hold action, not the tap action. HOLD_ON_OTHER_KEY_PRESS makes the Tap-Or-Hold decision earlier in the chain of key events, thus taking a precedence over PERMISSIVE_HOLD.

For more granular control of this feature, you can add the following to your config.h:

c
#define PERMISSIVE_HOLD_PER_KEY

You can then add the following function to your keymap:

c
bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) {\n    switch (keycode) {\n        case LT(1, KC_BSPC):\n            // Immediately select the hold action when another key is tapped.\n            return true;\n        default:\n            // Do not select the hold action when another key is tapped.\n            return false;\n    }\n}

Hold On Other Key Press

The “hold on other key press” mode can be enabled for all dual-role keys by adding the corresponding option to config.h:

c
#define HOLD_ON_OTHER_KEY_PRESS

This mode makes tap and hold keys (like Layer Tap) work better for fast typists, or for high TAPPING_TERM settings. Compared to the “permissive hold” mode, this mode selects the hold action in more cases.

If you press a dual-role key, press another key, and then release the dual-role key, all within the tapping term, by default the dual-role key will perform its tap action. If the HOLD_ON_OTHER_KEY_PRESS option is enabled, the dual-role key will perform its hold action instead.

An example of a sequence that is affected by the “hold on other key press” mode, but not by the “permissive hold” mode:

                         TAPPING_TERM\n  +---------------------------|--------+\n  | +-------------+           |        |\n  | | LT(2, KC_A) |           |        |\n  | +-------------+           |        |\n  |       +--------------+    |        |\n  |       | KC_L         |    |        |\n  |       +--------------+    |        |\n  +---------------------------|--------+

Normally, if you do all this within the TAPPING_TERM (default: 200ms), this will be registered as al by the firmware and host system. With the HOLD_ON_OTHER_KEY_PRESS option enabled, the Layer Tap key is considered as a layer switch if another key is pressed, and the above sequence would be registered as KC_RGHT (the mapping of L on layer 2).

For more granular control of this feature, you can add the following to your config.h:

c
#define HOLD_ON_OTHER_KEY_PRESS_PER_KEY

You can then add the following function to your keymap:

c
bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) {\n    switch (keycode) {\n        case LT(1, KC_BSPC):\n            // Immediately select the hold action when another key is pressed.\n            return true;\n        default:\n            // Do not select the hold action when another key is pressed.\n            return false;\n    }\n}

Quick Tap Term

When the user holds a key after tapping it, the tapping function is repeated by default, rather than activating the hold function. This allows keeping the ability to auto-repeat the tapping function of a dual-role key. QUICK_TAP_TERM enables fine tuning of that ability. If set to 0, it will remove the auto-repeat ability and activate the hold function instead.

QUICK_TAP_TERM is set to TAPPING_TERM by default, which is the maximum allowed value for QUICK_TAP_TERM. To override its value (in milliseconds) add the following to your config.h:

c
#define QUICK_TAP_TERM 120

Example:

With default settings, a will be sent on the first release, then a will be sent on the second press allowing the computer to trigger its auto repeat function until the key is released.

With QUICK_TAP_TERM configured, the timing between SFT_T(KC_A) up and SFT_T(KC_A) down must be within QUICK_TAP_TERM to trigger auto repeat. Otherwise the second press will be sent as a Shift. If QUICK_TAP_TERM is set to 0, the second press will always be sent as a Shift, effectively disabling auto-repeat.

WARNING

QUICK_TAP_TERM timing will also impact anything that uses tapping toggles (Such as the TT layer keycode, and the One Shot Tap Toggle).

For more granular control of this feature, you can add the following to your config.h:

c
#define QUICK_TAP_TERM_PER_KEY

You can then add the following function to your keymap:

c
uint16_t get_quick_tap_term(uint16_t keycode, keyrecord_t *record) {\n    switch (keycode) {\n        case SFT_T(KC_SPC):\n            return QUICK_TAP_TERM - 20;\n        default:\n            return QUICK_TAP_TERM;\n    }\n}

TIP

If QUICK_TAP_TERM is set higher than TAPPING_TERM, it will default to TAPPING_TERM.

Retro Tapping

To enable retro tapping, add the following to your config.h:

c
#define RETRO_TAPPING

Holding and releasing a dual-function key without pressing another key will result in nothing happening. With retro tapping enabled, releasing the key without pressing another will send the original keycode even if it is outside the tapping term.

For instance, holding and releasing LT(2, KC_SPC) without hitting another key will result in nothing happening. With this enabled, it will send KC_SPC instead.

               TAPPING_TERM\n  +-----------------|------------------+\n  | +---------------|-------+          |\n  | | LT(2, KC_SPC) |       |          |\n  | +---------------|-------+          |\n  |                 |                  |\n  |                 |                  |\n  |                 |                  |\n  +-----------------|------------------+

For more granular control of this feature, you can add the following to your config.h:

c
#define RETRO_TAPPING_PER_KEY

You can then add the following function to your keymap:

c
bool get_retro_tapping(uint16_t keycode, keyrecord_t *record) {\n    switch (keycode) {\n        case LT(2, KC_SPC):\n            return true;\n        default:\n            return false;\n    }\n}

If the programs you use bind an action to taps of modifier keys (e.g. tapping left GUI to bring up the applications menu or tapping left Alt to focus the menu bar), you may find that using retro-tapping falsely triggers those actions. To counteract this, you can define a DUMMY_MOD_NEUTRALIZER_KEYCODE in config.h that will get sent in between the register and unregister events of a held mod-tap key. That way, the programs on your computer will no longer interpret the mod suppression induced by retro-tapping as a lone tap of a modifier key and will thus not falsely trigger the undesired action.

Naturally, for this technique to be effective, you must choose a DUMMY_MOD_NEUTRALIZER_KEYCODE for which no keyboard shortcuts are bound to. Recommended values are: KC_RIGHT_CTRL or KC_F18. Please note that DUMMY_MOD_NEUTRALIZER_KEYCODE must be a basic, unmodified, HID keycode so values like KC_NO, KC_TRANSPARENT or KC_PIPE aka S(KC_BACKSLASH) are not permitted.

By default, only left Alt and left GUI are neutralized. If you want to change the list of applicable modifier masks, use the following in your config.h:

c
#define MODS_TO_NEUTRALIZE { <mod_mask_1>, <mod_mask_2>, ... }

Examples:

c
#define DUMMY_MOD_NEUTRALIZER_KEYCODE KC_RIGHT_CTRL\n\n// Neutralize left alt and left GUI (Default value)\n#define MODS_TO_NEUTRALIZE { MOD_BIT(KC_LEFT_ALT), MOD_BIT(KC_LEFT_GUI) }\n\n// Neutralize left alt, left GUI, right GUI and left Control+Shift\n#define MODS_TO_NEUTRALIZE { MOD_BIT(KC_LEFT_ALT), MOD_BIT(KC_LEFT_GUI), MOD_BIT(KC_RIGHT_GUI), MOD_BIT(KC_LEFT_CTRL)|MOD_BIT(KC_LEFT_SHIFT) }

WARNING

Do not use MOD_xxx constants like MOD_LSFT or MOD_RALT, since they're 5-bit packed bit-arrays while MODS_TO_NEUTRALIZE expects a list of 8-bit packed bit-arrays. Use MOD_BIT(<kc>) or MOD_MASK_xxx instead.

Retro Shift

Auto Shift, has its own version of retro tapping called retro shift. It is extremely similar to retro tapping, but holding the key past AUTO_SHIFT_TIMEOUT results in the value it sends being shifted. Other configurations also affect it differently; see here for more information.

Why do we include the key record for the per key functions?

One thing that you may notice is that we include the key record for all of the "per key" functions, and may be wondering why we do that.

Well, it's simple really: customization. But specifically, it depends on how your keyboard is wired up. For instance, if each row is actually using a row in the keyboard's matrix, then it may be simpler to use if (record->event.key.row == 3) instead of checking a whole bunch of keycodes. Which is especially good for those people using the Tap Hold type keys on the home row. So you could fine-tune those to not interfere with your normal typing.

Why are there no *_kb or *_user functions?!

Unlike many of the other functions here, there isn't a need (or even reason) to have a quantum or keyboard-level function. Only user-level functions are useful here, so no need to mark them as such.

', 125); diff --git a/assets/tap_hold.md.DD8WTSla.lean.js b/assets/tap_hold.md.Clf06wbr.lean.js similarity index 91% rename from assets/tap_hold.md.DD8WTSla.lean.js rename to assets/tap_hold.md.Clf06wbr.lean.js index cf9bc8a2241..9e4649d81e0 100644 --- a/assets/tap_hold.md.DD8WTSla.lean.js +++ b/assets/tap_hold.md.Clf06wbr.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Tap-Hold Configuration Options","description":"","frontmatter":{},"headers":[],"relativePath":"tap_hold.md","filePath":"tap_hold.md"}'); const _sfc_main = { name: "tap_hold.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 125); diff --git a/assets/understanding_qmk.md.f-Bc_eHQ.js b/assets/understanding_qmk.md.B0A-C1NO.js similarity index 99% rename from assets/understanding_qmk.md.f-Bc_eHQ.js rename to assets/understanding_qmk.md.B0A-C1NO.js index 4cbeff37e7b..f3ea1622f5e 100644 --- a/assets/understanding_qmk.md.f-Bc_eHQ.js +++ b/assets/understanding_qmk.md.B0A-C1NO.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse(`{"title":"Understanding QMK's Code","description":"","frontmatter":{},"headers":[],"relativePath":"understanding_qmk.md","filePath":"understanding_qmk.md"}`); const _sfc_main = { name: "understanding_qmk.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Understanding QMK's Code

This document attempts to explain how the QMK firmware works from a very high level. It assumes you understand basic programming concepts but does not (except where needed to demonstrate) assume familiarity with C. It assumes that you have a basic understanding of the following documents:

Startup

You can think of QMK as no different from any other computer program. It is started and performs its tasks, but this program never finishes. Like other C programs, the entry point is the main() function. For QMK, the main() function is found in quantum/main.c.

If you browse through the main() function you'll find that it starts by initializing any hardware that has been configured (including USB to the host). The most common platform for QMK is lufa, which runs on AVR processors such as the atmega32u4. When compiled for that platform, it will invoke for example platform_setup() in platforms/avr/platform.c and protocol_setup() in tmk_core/protocol/lufa/lufa.c. It will use other implementations when compiled for other platforms like chibios and vusb. At first glance, it can look like a lot of functionality but most of the time the code will be disabled by #defines.

The main() function will then start the core part of the program with a while (true). This is The Main Loop.

The Main Loop

This section of code is called "The Main Loop" because it's responsible for looping over the same set of instructions forever, without ever reaching the end. This is where QMK dispatches out to the functions responsible for making the keyboard do everything it is supposed to do.

The main loop will call protocol_task(), which in turn will call keyboard_task() in quantum/keyboard.c. This is where all the keyboard specific functionality is dispatched, and it is responsible for detecting changes in the matrix and turning status LEDs on and off.

Within keyboard_task() you'll find code to handle:

Matrix Scanning

Matrix scanning is the core function of a keyboard firmware. It is the process of detecting which keys are currently pressed, and your keyboard runs this function many times a second. It's no exaggeration to say that 99% of your firmware's CPU time is spent on matrix scanning.

While there are different strategies for doing the actual matrix detection, they are out of scope for this document. It is sufficient to treat matrix scanning as a black box, you ask for the matrix's current state and get back a datastructure that looks like this:

{\n    {0,0,0,0},\n    {0,0,0,0},\n    {0,0,0,0},\n    {0,0,0,0},\n    {0,0,0,0}\n}

That datastructure is a direct representation of the matrix for a 5 row by 4 column numpad. When a key is pressed that key's position within the matrix will be returned as 1 instead of 0.

Matrix Scanning runs many times per second. The exact rate varies but typically it runs at least 10 times per second to avoid perceptible lag.

Matrix to Physical Layout Map

Once we know the state of every switch on our keyboard we have to map that to a keycode. In QMK this is done by making use of C macros to allow us to separate the definition of the physical layout from the definition of keycodes.

At the keyboard level we define a C macro (typically named LAYOUT()) which maps our keyboard's matrix to physical keys. Sometimes the matrix does not have a switch in every location, and we can use this macro to pre-populate those with KC_NO, making the keymap definition easier to work with. Here's an example LAYOUT() macro for a numpad:

c
#define LAYOUT( \\\n    k00, k01, k02, k03, \\\n    k10, k11, k12, k13, \\\n    k20, k21, k22, \\\n    k30, k31, k32, k33, \\\n    k40,      k42 \\\n) { \\\n    { k00, k01,   k02, k03   }, \\\n    { k10, k11,   k12, k13   }, \\\n    { k20, k21,   k22, KC_NO }, \\\n    { k30, k31,   k32, k33   }, \\\n    { k40, KC_NO, k42, KC_NO } \\\n}

Notice how the second block of our LAYOUT() macro matches the Matrix Scanning array above? This macro is what will map the matrix scanning array to keycodes. However, if you look at a 17 key numpad you'll notice that it has 3 places where the matrix could have a switch but doesn't, due to larger keys. We have populated those spaces with KC_NO so that our keymap definition doesn't have to.

You can also use this macro to handle unusual matrix layouts, for example the Alice. Explaining that is outside the scope of this document.

Keycode Assignment

At the keymap level we make use of our LAYOUT() macro above to map keycodes to physical locations to matrix locations. It looks like this:

c
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n    [0] = LAYOUT(\n        KC_NUM,  KC_PSLS, KC_PAST, KC_PMNS,\n        KC_P7,   KC_P8,   KC_P9,   KC_PPLS,\n        KC_P4,   KC_P5,   KC_P6,\n        KC_P1,   KC_P2,   KC_P3,   KC_PENT,\n        KC_P0,            KC_PDOT\n    )\n}

Notice how all of these arguments match up with the first half of the LAYOUT() macro from the last section? This is how we take a keycode and map it to our Matrix Scan from earlier.

State Change Detection

The matrix scanning described above tells us the state of the matrix at a given moment, but your computer only wants to know about changes, it doesn't care about the current state. QMK stores the results from the last matrix scan and compares the results from this matrix to determine when a key has been pressed or released.

Let's look at an example. We'll hop into the middle of a keyboard scanning loop to find that our previous scan looks like this:

{\n    {0,0,0,0},\n    {0,0,0,0},\n    {0,0,0,0},\n    {0,0,0,0},\n    {0,0,0,0}\n}

And when our current scan completes it will look like this:

{\n    {1,0,0,0},\n    {0,0,0,0},\n    {0,0,0,0},\n    {0,0,0,0},\n    {0,0,0,0}\n}

Comparing against our keymap we can see that the pressed key is KC_NUM. From here we dispatch to the process_record set of functions.

Process Record

The process_record() function itself is deceptively simple, but hidden within is a gateway to overriding functionality at various levels of QMK. The chain of events is listed below, using cluecard whenever we need to look at the keyboard/keymap level functions. Depending on options set in rules.mk or elsewhere, only a subset of the functions below will be included in final firmware.

At any step during this chain of events a function (such as process_record_kb()) can return false to halt all further processing.

After this is called, post_process_record() is called, which can be used to handle additional cleanup that needs to be run after the keycode is normally handled.

', 41); diff --git a/assets/understanding_qmk.md.f-Bc_eHQ.lean.js b/assets/understanding_qmk.md.B0A-C1NO.lean.js similarity index 91% rename from assets/understanding_qmk.md.f-Bc_eHQ.lean.js rename to assets/understanding_qmk.md.B0A-C1NO.lean.js index 3d45048b1b2..8cefbb0abe5 100644 --- a/assets/understanding_qmk.md.f-Bc_eHQ.lean.js +++ b/assets/understanding_qmk.md.B0A-C1NO.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse(`{"title":"Understanding QMK's Code","description":"","frontmatter":{},"headers":[],"relativePath":"understanding_qmk.md","filePath":"understanding_qmk.md"}`); const _sfc_main = { name: "understanding_qmk.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 41); diff --git a/assets/unit_testing.md.u3fgbGUj.js b/assets/unit_testing.md.CGe2-PJx.js similarity index 99% rename from assets/unit_testing.md.u3fgbGUj.js rename to assets/unit_testing.md.CGe2-PJx.js index 683ca411a3e..2d43cc3c933 100644 --- a/assets/unit_testing.md.u3fgbGUj.js +++ b/assets/unit_testing.md.CGe2-PJx.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Unit Testing","description":"","frontmatter":{},"headers":[],"relativePath":"unit_testing.md","filePath":"unit_testing.md"}'); const _sfc_main = { name: "unit_testing.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

Unit Testing

If you are new to unit testing, then you can find many good resources on internet. However most of it is scattered around in small pieces here and there, and there's also many different opinions, so I won't give any recommendations.

Instead I recommend these two books, explaining two different styles of Unit Testing in detail.

If you prefer videos there are Uncle Bob's Clean Coders Videos, which unfortunately cost quite a bit, especially if you want to watch many of them. But James Shore has a free Let's Play video series.

Google Test and Google Mock

It's possible to Unit Test your code using Google Test. The Google Test framework also includes another component for writing testing mocks and stubs, called "Google Mock". For information how to write the actual tests, please refer to the documentation on that site.

Use of C++

Note that Google Test and therefore any test has to be written in C++, even if the rest of the QMK codebases is written in C. This should hopefully not be a problem even if you don't know any C++, since there's quite clear documentation and examples of the required C++ features, and you can write the rest of the test code almost as you would write normal C. Note that some compiler errors which you might get can look quite scary, but just read carefully what it says, and you should be ok.

One thing to remember, is that you have to append extern "C" around all of your C file includes.

Adding Tests for New or Existing Features

If you want to unit test a feature, take a look at some of the existing tests, for example those in the quantum/sequencer/tests folder. Then follow the steps below to create a similar structure.

  1. If it doesn't already exist, add a test subfolder to the folder containing the feature.
  2. Create a testlist.mk and a rules.mk file in that folder.
  3. Include those files from the root folder testlist.mkand build_test.mk respectively.
  4. Add a new name for your testgroup to the testlist.mk file. Each group defined there will be a separate executable. And that's how you can support mocking out different parts. Note that it's worth adding some common prefix, just like it's done for the existing tests. The reason for that is that the make command allows substring filtering, so this way you can easily run a subset of the tests.
  5. Define the source files and required options in the rules.mk file.
  6. Write the tests in a new cpp file inside the test folder you created. That file has to be one of the files included from the rules.mk file.

Note how there's several different tests, each mocking out a separate part. Also note that each of them only compiles the very minimum that's needed for the tests. It's recommend that you try to do the same. For a relevant video check out Matt Hargett "Advanced Unit Testing in C & C++

Running the Tests

To run all the tests in the codebase, type make test:all. You can also run test matching a substring by typing make test:matchingsubstring. matchingsubstring can contain colons to be more specific; make test:tap_hold_configurations will run the tap_hold_configurations tests for all features while make test:retro_shift:tap_hold_configurations will run the tap_hold_configurations tests for only the Retro Shift feature.

Note that the tests are always compiled with the native compiler of your platform, so they are also run like any other program on your computer.

Debugging the Tests

If there are problems with the tests, you can find the executable in the ./build/test folder. You should be able to run those with GDB or a similar debugger.

To forward any debug messages to stderr, the tests can run with DEBUG=1. For example

make test:all DEBUG=1

Alternatively, add CONSOLE_ENABLE=yes to the tests rules.mk.

Full Integration Tests

It's not yet possible to do a full integration test, where you would compile the whole firmware and define a keymap that you are going to test. However there are plans for doing that, because writing tests that way would probably be easier, at least for people that are not used to unit testing.

In that model you would emulate the input, and expect a certain output from the emulated keyboard.

Tracing Variables

Sometimes you might wonder why a variable gets changed and where, and this can be quite tricky to track down without having a debugger. It's of course possible to manually add print statements to track it, but you can also enable the variable trace feature. This works for both variables that are changed by the code, and when the variable is changed by some memory corruption.

To take the feature into use add VARIABLE_TRACE=x to the end of you make command. x represents the number of variables you want to trace, which is usually 1.

Then at a suitable place in the code, call ADD_TRACED_VARIABLE, to begin the tracing. For example to trace all the layer changes, you can do this

c
void matrix_init_user(void) {\n  ADD_TRACED_VARIABLE("layer", &layer_state, sizeof(layer_state));\n}

This will add a traced variable named "layer" (the name is just for your information), which tracks the memory location of layer_state. It tracks 4 bytes (the size of layer_state), so any modification to the variable will be reported. By default you can not specify a size bigger than 4, but you can change it by adding MAX_VARIABLE_TRACE_SIZE=x to the end of the make command line.

In order to actually detect changes to the variables you should call VERIFY_TRACED_VARIABLES around the code that you think that modifies the variable. If a variable is modified it will tell you between which two VERIFY_TRACED_VARIABLES calls the modification happened. You can then add more calls to track it down further. I don't recommend spamming the codebase with calls. It's better to start with a few, and then keep adding them in a binary search fashion. You can also delete the ones you don't need, as each call need to store the file name and line number in the ROM, so you can run out of memory if you add too many calls.

Also remember to delete all the tracing code once you have found the bug, as you wouldn't want to create a pull request with tracing code.

', 33); diff --git a/assets/unit_testing.md.u3fgbGUj.lean.js b/assets/unit_testing.md.CGe2-PJx.lean.js similarity index 91% rename from assets/unit_testing.md.u3fgbGUj.lean.js rename to assets/unit_testing.md.CGe2-PJx.lean.js index 0ea4033dfbf..1e46ea8bb2a 100644 --- a/assets/unit_testing.md.u3fgbGUj.lean.js +++ b/assets/unit_testing.md.CGe2-PJx.lean.js @@ -1,4 +1,4 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js"; +import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Clpp4x2N.js"; const __pageData = JSON.parse('{"title":"Unit Testing","description":"","frontmatter":{},"headers":[],"relativePath":"unit_testing.md","filePath":"unit_testing.md"}'); const _sfc_main = { name: "unit_testing.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 33); diff --git a/breaking_changes.html b/breaking_changes.html index 0f091523ed0..11cd306944b 100644 --- a/breaking_changes.html +++ b/breaking_changes.html @@ -8,17 +8,17 @@ - + - - - + + +
Skip to content

Breaking Changes

This document describes QMK's Breaking Change process. A Breaking Change is any change which modifies how QMK behaves in a way that in incompatible or potentially dangerous. We limit these changes so that users can have confidence that updating their QMK tree will not break their keymaps.

This also includes any keyboard moves within the repository.

The breaking change period is when we will merge PRs that change QMK in dangerous or unexpected ways. There is a built-in period of testing so we are confident that any problems caused are rare or unable to be predicted.

Practically, this means QMK merges the develop branch into the master branch on a 3-month cadence.

What has been included in past Breaking Changes?

When is the next Breaking Change?

The next Breaking Change is scheduled for November 24, 2024.

Important Dates

  • 2024 Aug 25 - develop is tagged with a new release version. Each push to master is subsequently merged to develop by GitHub actions.
  • 2024 Oct 27 - develop closed to new PRs.
  • 2024 Oct 27 - Call for testers.
  • 2024 Nov 10 - Last day for merges -- after this point develop is locked for testing and accepts only bugfixes
  • 2024 Nov 17 - develop is locked, only critical bugfix PRs merged.
  • 2024 Nov 22 - master is locked, no PRs merged.
  • 2024 Nov 24 - Merge develop to master.
  • 2024 Nov 24 - master is unlocked. PRs can be merged again.

What changes will be included?

To see a list of breaking changes merge candidates you can look at the core label. This label is applied whenever a PR is raised or changed, but only if the PR includes changes to core areas of QMK Firmware. A PR with that label applied is not guaranteed to be merged in the current cycle. New changes might be added between now and when develop is closed, and it is generally the responsibility of the submitter to handle conflicts. There is also another label used by QMK Collaborators -- breaking_change_YYYYqN -- which signifies to maintainers that it is a strong candidate for inclusion, and should be prioritized for review.

If you want your breaking change to be included in this round you need to create a PR and have it accepted by QMK Collaborators before develop closes. After develop closes, new submissions will be deferred to the next breaking changes cycle.

The simpler your PR is, the easier it is for maintainers to review, thus a higher likelihood of a faster merge. Large PRs tend to require a lot of attention, refactoring, and back-and-forth with subsequent reviews -- with other PRs getting merged in the meantime larger unmerged PRs are far more likely to be susceptible to conflicts.

Criteria for acceptance:

  • The PR is complete and ready to merge
  • GitHub checks for the PR are green whenever possible
    • A "red" check may be disregarded by maintainers if the items flagged are unrelated to the change proposed in the PR
      • Modifications to existing files should not need to add license headers to pass lint, for instance.
      • If it's not directly related to your PR's functionality, prefer avoiding making a change.

Strongly suggested:

  • The PR has a ChangeLog file describing the changes under <qmk_firmware>/docs/Changelog/20241124.
    • This should be in Markdown format, with a name in the format PR12345.md, substituting the digits for your PRs ID.
    • One strong recommendation that the ChangeLog document matches the PR description on GitHub, so as to ensure traceability.

Checklists

This section documents various processes we use when running the Breaking Changes process.

4 Weeks Before Merge

  • develop is now closed to new PRs, only fixes for current PRs may be merged
  • Post call for testers: message @Breaking Changes Updates on #qmk_firmware in Discord:
    • @Breaking Changes Updates -- Hey folks, last day for functional PRs to be raised against qmk_firmware for this breaking changes cycle is today.

2 Weeks Before Merge

  • develop is now closed to existing PR merges, only bugfixes for previous merges may be included
  • Post call for testers: message @Breaking Changes Updates on #qmk_firmware in Discord.
    • @Breaking Changes Updates -- Hey folks, last day for functional PRs to be merged into qmk_firmware for this breaking changes cycle is today. After that, we're handling bugfixes only.

1 Week Before Merge

  • develop is now closed to PR merges, only critical bugfixes may be included
  • Announce that master will be closed from <2 Days Before> to <Day of Merge> -- message @Breaking Changes Updates on #qmk_firmware in Discord:
    • @Breaking Changes Updates -- Hey folks, last day for functional PRs to be merged into qmk_firmware for this breaking changes cycle is today. After that, we're handling bugfixes only.

2 Days Before Merge

  • master is now closed to PR merges
  • Announce that master is closed for 2 days
    • @Breaking Changes Updates -- Hey folks, the master branch of qmk_firmware is now locked for the next couple of days while we prepare to merge the newest batch of changes from develop.

Day Of Merge

  • qmk_firmware git commands
    • git checkout develop
    • git pull --ff-only
    • Edit readme.md
      • Remove the notes about develop
    • Roll up the ChangeLog into one file.
    • git commit -m 'Merge point for <DATE> Breaking Change'
    • git push upstream develop
  • GitHub Actions
    • Create a PR for develop
    • Turn off 'Automatically delete head branches' for the repository -- confirm with @qmk/directors that it is done before continuing
  • qmk_firmware git commands
    • git checkout master
    • git pull --ff-only
    • git merge --no-ff develop
    • git tag <next_version> # Prevent the breakpoint tag from confusing version incrementing
    • git push upstream <next_version>
    • git push upstream master

Post-merge operations

Updating the develop branch

This happens immediately after the previous develop branch is merged to master.

  • qmk_firmware git commands

    • git checkout master
    • git pull --ff-only
    • git checkout develop
    • git pull --ff-only
    • git merge --no-ff master
    • Edit readme.md
      • Add a big notice at the top that this is a testing branch. See previous revisions of the develop branch.
      • Include a link to this document
    • git commit -m 'Branch point for <DATE> Breaking Change'
    • git tag breakpoint_<YYYY>_<MM>_<DD>
    • git push upstream breakpoint_<YYYY>_<MM>_<DD>
    • git push upstream develop
  • All submodules under lib now need to be checked against their QMK-based forks:

    • git submodule foreach git log -n1
    • Validate each submodule SHA1 matches the qmk fork, e.g. for ChibiOS:
      • Go to qmk/ChibiOS
      • Compare the commit hash in the above output to the commit hash in the repository
      • If there's a mismatch, that repository needs to have its qmk-master branch updated to match (otherwise Configurator won't work):
        • cd lib/chibios
        • git fetch --all
        • git checkout qmk-master
        • git reset --hard <commit hash>
        • git push origin qmk-master --force-with-lease
  • Announce that both master and develop are now unlocked -- message @Breaking Changes Updates on #qmk_firmware in Discord:

    • @Breaking Changes Updates -- Hey folks, develop has now been merged into master -- newest batch of changes are now available for everyone to use!
  • (Optional) update ChibiOS + ChibiOS-Contrib on develop

Set up Discord events for the next cycle

  • Update this file with the new dates: docs/breaking_changes.md
  • Create Events on the QMK Discord - "Somewhere Else" => "GitHub":
    • Event #1:
      FieldValue
      TopicLast develop functionality PRs to be raised
      Start Date((5 weeks before merge)), 12:00am
      End Date((4 weeks before merge)), 12:00am
      DescriptionThis is the last window for functional PRs to be raised against develop for the current breaking changes cycle. After ((4 weeks before merge)), any new PRs targeting develop will be deferred to the next cycle.
    • Event #2:
      FieldValue
      TopicLast develop functionality PRs to be merged
      Start Date((4 weeks before merge)), 12:00am
      End Date((2 weeks before merge)), 12:00am
      DescriptionThis is the last window for functional PRs to be merged into develop for the current breaking changes cycle. After ((2 weeks before merge)), only bugfix PRs targeting develop will be considered for merge.
    • Event #3:
      FieldValue
      Topicdevelop closed for merges
      Start Date((2 weeks before merge)), 12:00am
      End Date((day of merge)), 12:00am
      DescriptionThis is the deadline for functionality bugfix PRs to be merged into develop for the current breaking changes cycle. After ((1 week before merge)), only critical bugfix PRs targeting develop will be considered for merge.
    • Event #4:
      FieldValue
      Topicmaster closed for merges
      Start Date((2 days before merge)), 12:00am
      End Date((day of merge)), 12:00am
      DescriptionThis is the period that no PRs are to be merged to master, so that the merge of develop into master is stable.
    • Event #5:
      FieldValue
      Topicdevelop merges to master
      Start Date((day of merge)), 12:00am
      End Date((day of merge)), 11:45pm
      DescriptionAt some point, QMK will merge develop into master and everyone will be able to reap the benefits of the newest batch of functionality.
- + \ No newline at end of file diff --git a/breaking_changes_history.html b/breaking_changes_history.html index ef78da70b27..17200be962e 100644 --- a/breaking_changes_history.html +++ b/breaking_changes_history.html @@ -8,17 +8,17 @@ - + - - - + + +
Skip to content

Past Breaking Changes

This page links to all previous changelogs from the QMK Breaking Changes process.

- + \ No newline at end of file diff --git a/breaking_changes_instructions.html b/breaking_changes_instructions.html index 34c185bb8ab..4a6b704f96a 100644 --- a/breaking_changes_instructions.html +++ b/breaking_changes_instructions.html @@ -8,17 +8,17 @@ - + - - - + + +
Skip to content

Breaking Changes: My Pull Request Was Flagged

A QMK member may have replied to your pull request stating that your submission is a breaking change. In their judgment, the changes you have proposed have greater implications for either QMK, or its users.

Some things that may cause a pull request to be flagged are:

  • Edits to User Keymaps A user may submit their keymap to QMK, then some time later open a pull request with further updates, only to find it can't be merged because it was edited in the qmk/qmk_firmware repository. As not all users are proficient at using Git or GitHub, the user may find themself unable to fix the issue on their own.
  • Changes to Expected Behavior Changes to QMK behavior may cause users to believe their hardware or QMK is broken if they flash new firmware that incorporates changes to existing QMK features, and find themselves without a means to restore the desired behavior.
  • Changes Requiring User Action Changes may also require action to be taken by users, such as updating a toolchain or taking some action in Git.
  • Changes Necessitating Increased Scrutiny On occasion, a submission may have implications for QMK as a project. This could be copyright/licensing issues, coding conventions, large feature overhauls, "high-risk" changes that need wider testing by our community, or something else entirely.
  • Changes Requiring Communication to End Users This includes warnings about future deprecations, outdated practices, and anything else that needs to be communicated but doesn't fit into one of the above categories.

What Do I Do?

If it is determined that your submission is a breaking change, there are a few things you can do to smooth the process:

Consider Splitting Up Your PR

If you are contributing core code, and the only reason it needs to go through breaking changes is that you are updating keymaps to match your change, consider whether you can submit your feature in a way that the old keymaps continue to work. Then submit a separate PR that goes through the breaking changes process to remove the old code.

Document Your Changes

Understanding the purpose for your submission, and possible implications or actions it will require can make the review process more straightforward. A changelog may suffice for this purpose, but more extensive changes may require a level of detail that is ill-suited for a changelog.

Commenting on your pull request and being responsive to questions, comments, and change requests is much appreciated.

Ask for Help

Having your submission flagged may have caught you off guard. If you find yourself intimidated or overwhelmed, let us know. Comment on your pull request, or reach out to the QMK team on Discord.

- + \ No newline at end of file diff --git a/chibios_upgrade_instructions.html b/chibios_upgrade_instructions.html index 428bec77803..0eb16597ad7 100644 --- a/chibios_upgrade_instructions.html +++ b/chibios_upgrade_instructions.html @@ -8,17 +8,17 @@ - + - - - + + +
Skip to content

ChibiOS Upgrade Procedure

ChibiOS and ChibiOS-Contrib need to be updated in tandem -- the latter has a branch tied to the ChibiOS version in use and should not be mixed with different versions.

Getting ChibiOS

  • svn Initialization:
    • Only needed to be done once
    • You might need to separately install git-svn package in your OS's package manager
    • git svn init --stdlayout --prefix='svn/' http://svn.osdn.net/svnroot/chibios/
    • git remote add qmk git@github.com:qmk/ChibiOS.git
  • Updating:
    • git svn fetch
    • First time around this will take several hours
    • Subsequent updates will be incremental only
  • Tagging example (work out which version first!):
    • git tag -a ver20.3.4 -m ver20.3.4 svn/tags/ver20.3.4
    • git push qmk ver20.3.4
    • git tag -a develop_YYYY_qN -m develop_YYYY_qN svn/tags/ver20.3.4
    • git push qmk develop_YYYY_qN

Getting ChibiOS-Contrib

  • git Initialization:
    • git clone git@github.com:qmk/ChibiOS-Contrib
    • git remote add upstream https://github.com/ChibiOS/ChibiOS-Contrib
    • git checkout -b chibios-20.3.x upstream/chibios-20.3.x
  • Updating:
    • git fetch --all --tags --prune
    • git checkout chibios-20.3.x
    • git pull --ff-only
    • git push origin chibios-20.3.x
    • git tag -a develop_YYYY_qN -m develop_YYYY_qN chibios-20.3.x
    • git push origin develop_YYYY_qN

Updating submodules

  • Update the submodules
    • cd $QMK_FIRMWARE
    • git checkout develop
    • git pull --ff-only
    • git checkout -b chibios-version-bump
    • cd lib/chibios
    • git fetch --all --tags --prune
    • git checkout develop_YYYY_qN
    • cd ../chibios-contrib
    • git fetch --all --tags --prune
    • git checkout develop_YYYY_qN
  • Update ChibiOS configs within QMK
    • cd $QMK_FIRMWARE
    • ./util/chibios_conf_updater.sh
  • Build everything
    • cd $QMK_FIRMWARE
    • qmk mass-compile -j 4
    • Make sure there are no errors
  • Push to the repo
    • git commit -am 'Update ChibiOS to 99.9.9'
    • git push --set-upstream origin chibios-version-bump
  • Make a PR to qmk_firmware with the new branch

When merging a PR containing an upgrade of ChibiOS/ChibiOS-Contrib:

  • Update the target branch if the merge target was master:
    • git checkout qmk-master
    • git reset --hard develop_YYYY_qN
    • git push origin qmk-master --force-with-lease
  • Update the target branch if the merge target was develop:
    • git checkout qmk-develop
    • git reset --hard develop_YYYY_qN
    • git push origin qmk-develop --force-with-lease

Note that when merging develop to master, the first workflow should still be followed.

- + \ No newline at end of file diff --git a/cli.html b/cli.html index ba8c6ba9d76..73beac7b474 100644 --- a/cli.html +++ b/cli.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -22,7 +22,7 @@ qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment

Install Using pip

If your system is not listed above you can install QMK manually. First ensure that you have Python 3.7 (or later) installed and have installed pip. Then install QMK with this command:

python3 -m pip install qmk
 export QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware`
 qmk setup  # This will clone `qmk/qmk_firmware` and optionally set up your build environment

Packaging For Other Operating Systems

We are looking for people to create and maintain a qmk package for more operating systems. If you would like to create a package for your OS please follow these guidelines:

- + \ No newline at end of file diff --git a/cli_commands.html b/cli_commands.html index 0d14ebc3ae4..0d2abbe144f 100644 --- a/cli_commands.html +++ b/cli_commands.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -130,7 +130,7 @@ -e ENV, --env ENV Set a variable to be passed to make. May be passed multiple times. -j PARALLEL, --parallel PARALLEL Set the number of parallel make jobs; 0 means unlimited.

Examples:

Run entire test suite:

qmk test-c

List available tests:

qmk test-c --list

Run matching test:

qmk test-c --test unicode*

Run single test:

qmk test-c --test basic
- + \ No newline at end of file diff --git a/cli_configuration.html b/cli_configuration.html index 6192ca324a1..f365abb1b55 100644 --- a/cli_configuration.html +++ b/cli_configuration.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -33,7 +33,7 @@ default.keymap: None -> default compile.keymap: skully -> None Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'

User Configuration Options

KeyDefault ValueDescription
user.keyboardNoneThe keyboard path (Example: clueboard/66/rev4)
user.keymapNoneThe keymap name (Example: default)
user.nameNoneThe user's GitHub username.

All Configuration Options

KeyDefault ValueDescription
compile.keyboardNoneThe keyboard path (Example: clueboard/66/rev4)
compile.keymapNoneThe keymap name (Example: default)
hello.nameNoneThe name to greet when run.
new_keyboard.keyboardNoneThe keyboard path (Example: clueboard/66/rev4)
new_keyboard.keymapNoneThe keymap name (Example: default)
- + \ No newline at end of file diff --git a/cli_development.html b/cli_development.html index c4faf4b0397..78a36088253 100644 --- a/cli_development.html +++ b/cli_development.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -36,7 +36,7 @@ @cli.subcommand('Create a keymap.c from a QMK Configurator export.') def json_keymap(cli): pass

You will only be able to access these arguments using cli.args. For example:

cli.log.info('Reading from %s and writing to %s', cli.args.filename, cli.args.output)

Testing, and Linting, and Formatting (oh my!)

We use nose2, flake8, and yapf to test, lint, and format code. You can use the pytest and format-python subcommands to run these tests:

Testing and Linting

qmk pytest

Formatting

qmk format-python

Formatting Details

We use yapf to automatically format code. Our configuration is in the [yapf] section of setup.cfg.

TIP

Many editors can use yapf as a plugin to automatically format code as you type.

Testing Details

Our tests can be found in lib/python/qmk/tests/. You will find both unit and integration tests in this directory. We hope you will write both unit and integration tests for your code, but if you do not please favor integration tests.

If your PR does not include a comprehensive set of tests please add comments like this to your code so that other people know where they can help:

python
# TODO(unassigned/<your_github_username>): Write <unit|integration> tests

We use nose2 to run our tests. You can refer to the nose2 documentation for more details on what you can do in your test functions.

Linting Details

We use flake8 to lint our code. Your code should pass flake8 before you open a PR. This will be checked when you run qmk pytest and by CI when you submit a PR.

- + \ No newline at end of file diff --git a/cli_tab_complete.html b/cli_tab_complete.html index 980ea0bb025..513b9e2f857 100644 --- a/cli_tab_complete.html +++ b/cli_tab_complete.html @@ -8,17 +8,17 @@ - + - - - + + +
Skip to content

Tab Completion for QMK

If you are using Bash 4.2 or later, Zsh, or FiSH you can enable Tab Completion for the QMK CLI. This will let you tab complete the names of flags, keyboards, files, and other qmk options.

Setup

There are several ways you can setup tab completion.

For Your User Only

Add this to the end of your .profile or .bashrc:

source ~/qmk_firmware/util/qmk_tab_complete.sh

If you put qmk_firmware into another location you will need to adjust this path.

Zsh users will need to load bashcompinit. The following can be added to ~/.zshrc file:

autoload -Uz bashcompinit && bashcompinit

If you want the tab completion available to all users of the system you can add a symlink to the qmk_tab_complete.sh script:

ln -s ~/qmk_firmware/util/qmk_tab_complete.sh /etc/profile.d/qmk_tab_complete.sh

System Wide Copy

In some cases a symlink may not work. Instead you can copy the file directly into place. Be aware that updates to the tab complete script may happen from time to time, you will want to recopy the file periodically.

cp util/qmk_tab_complete.sh /etc/profile.d
- + \ No newline at end of file diff --git a/coding_conventions_c.html b/coding_conventions_c.html index 91b61a9683a..6dce7e7a5b4 100644 --- a/coding_conventions_c.html +++ b/coding_conventions_c.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -31,7 +31,7 @@ return -1; } }

Auto-formatting with clang-format

Clang-format is part of LLVM and can automatically format your code for you, because ain't nobody got time to do it manually. We supply a configuration file for it that applies most of the coding conventions listed above. It will only change whitespace and newlines, so you will still have to remember to include optional braces yourself.

Use the full LLVM installer to get clang-format on Windows, or use sudo apt install clang-format on Ubuntu.

If you run it from the command-line, pass -style=file as an option and it will automatically find the .clang-format configuration file in the QMK root directory.

If you use VSCode, the standard C/C++ plugin supports clang-format, alternatively there is a separate extension for it.

Some things (like LAYOUT macros) are destroyed by clang-format, so either don't run it on those files, or wrap the sensitive code in // clang-format off and // clang-format on.

- + \ No newline at end of file diff --git a/coding_conventions_python.html b/coding_conventions_python.html index 722b2c2e7e3..0405eb43621 100644 --- a/coding_conventions_python.html +++ b/coding_conventions_python.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -82,7 +82,7 @@ if not bar: pass

Decorators

Use when appropriate. Try to avoid too much magic unless it helps with understanding.

Threading and Multiprocessing

Should be avoided. If you need this you will have to make a strong case before we merge your code.

Power Features

Python is an extremely flexible language and gives you many fancy features such as custom metaclasses, access to bytecode, on-the-fly compilation, dynamic inheritance, object reparenting, import hacks, reflection, modification of system internals, etc.

Don't use these.

Performance is not a critical concern for us, and code understandability is. We want our codebase to be approachable by someone who only has a day or two to play with it. These features generally come with a cost to easy understanding, and we would prefer to have code that can be readily understood over faster or more compact code.

Note that some standard library modules use these techniques and it is ok to make use of those modules. But please keep readability and understandability in mind when using them.

Type Annotated Code

For now we are not using any type annotation system, and would prefer that code remain unannotated. We may revisit this in the future.

Function length

Prefer small and focused functions.

We recognize that long functions are sometimes appropriate, so no hard limit is placed on function length. If a function exceeds about 40 lines, think about whether it can be broken up without harming the structure of the program.

Even if your long function works perfectly now, someone modifying it in a few months may add new behavior. This could result in bugs that are hard to find. Keeping your functions short and simple makes it easier for other people to read and modify your code.

You could find long and complicated functions when working with some code. Do not be intimidated by modifying existing code: if working with such a function proves to be difficult, you find that errors are hard to debug, or you want to use a piece of it in several different contexts, consider breaking up the function into smaller and more manageable pieces.

FIXMEs

It is OK to leave FIXMEs in code. Why? Encouraging people to at least document parts of code that need to be thought out more (or that are confusing) is better than leaving this code undocumented.

All FIXMEs should be formatted like:

FIXME(username): Revisit this code when the frob feature is done.

...where username is your GitHub username.

Testing

We use a combination of Integration and Unit testing to ensure that the our code is as bug-free as possible. All the tests can be found in lib/python/qmk/tests/. You can run all the tests with qmk pytest.

At the time of this writing our tests are not very comprehensive. Looking at the current tests and writing new test cases for untested situations is a great way to both familiarize yourself with the codebase and contribute to QMK.

Integration Tests

Integration tests can be found in lib/python/qmk/tests/test_cli_commands.py. This is where CLI commands are actually run and their overall behavior is verified. We use subprocess to launch each CLI command and a combination of checking output and returncode to determine if the right thing happened.

Unit Tests

The other test_*.py files in lib/python/qmk/tests/ contain unit tests. You can write tests for individual functions inside lib/python/qmk/ here. Generally these files are named after the module, with dots replaced by underscores.

At the time of this writing we do not do any mocking for our tests. If you would like to help us change this please open an issue or join #cli on Discord and start a conversation there.

- + \ No newline at end of file diff --git a/compatible_microcontrollers.html b/compatible_microcontrollers.html index 904cf398319..b96ad993ce5 100644 --- a/compatible_microcontrollers.html +++ b/compatible_microcontrollers.html @@ -8,17 +8,17 @@ - + - - - + + +
Skip to content

Compatible Microcontrollers

QMK runs on any USB-capable AVR or ARM microcontroller with enough flash space - generally 32kB+ for AVR, and 64kB+ for ARM. With significant disabling of features, QMK may just squeeze into 16kB AVR MCUs.

Features within QMK may or may not be compatible with every microcontroller.

Atmel AVR

The following use LUFA as the USB stack:

Certain MCUs which do not have native USB will use V-USB instead:

ARM

You can also use any ARM chip with USB that ChibiOS supports. Most have plenty of flash. Known to work are:

STMicroelectronics (STM32)

WestBerryTech (WB32)

NXP (Kinetis)

Raspberry Pi

For a detailed overview about the RP2040 support by QMK see the dedicated RP2040 page.

Atmel ATSAM

There is limited support for one of Atmel's ATSAM microcontrollers, that being the ATSAMD51J18A used by the Massdrop keyboards. However, it is not recommended to design a board with this microcontroller as the support is quite specialized to Massdrop hardware.

RISC-V

GigaDevice

ChibiOS-Contrib has support for the GigaDevice GD32VF103 series microcontrollers and provides configurations for the SiPeed Longan Nano development board that uses this microcontroller. It is largely pin and feature compatible with STM32F103 and STM32F303 microcontrollers.

- + \ No newline at end of file diff --git a/config_options.html b/config_options.html index b076a80e14e..f8c453e8b59 100644 --- a/config_options.html +++ b/config_options.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -21,7 +21,7 @@ LIB_SRC += lib_b.c SRC += c.c LIB_SRC += lib_d.cThe link order is as follows.
 ...  a.o c.o  ...  lib_b.a lib_d.a  ...
  • LAYOUTS
  • LTO_ENABLE
  • AVR MCU Options

    Feature Options

    Use these to enable or disable building certain features. The more you have enabled the bigger your firmware will be, and you run the risk of building a firmware too large for your MCU.

    USB Endpoint Limitations

    In order to provide services over USB, QMK has to use USB endpoints. These are a finite resource: each microcontroller has only a certain number. This limits what features can be enabled together. If the available endpoints are exceeded, a build error is thrown.

    The following features can require separate endpoints:

    In order to improve utilisation of the endpoints, the HID features can be combined to use a single endpoint. By default, MOUSEKEY, EXTRAKEY, and NKRO are combined into a single endpoint.

    The base keyboard functionality can also be combined into the endpoint, by setting KEYBOARD_SHARED_EP = yes. This frees up one more endpoint, but it can prevent the keyboard working in some BIOSes, as they do not implement Boot Keyboard protocol switching.

    Combining the mouse also breaks Boot Mouse compatibility. The mouse can be uncombined by setting MOUSE_SHARED_EP = no if this functionality is required.

    - + \ No newline at end of file diff --git a/configurator_architecture.html b/configurator_architecture.html index e17f2369de5..d3fb9a0fab5 100644 --- a/configurator_architecture.html +++ b/configurator_architecture.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    QMK Configurator Architecture

    This page describes the web architecture behind QMK Configurator at a high level. If you are interested in the architecture of the QMK Configurator code itself you should start at the qmk_configurator repository.

    Overview

    QMK Configurator Architecture Diagram

    Detailed Description

    QMK Configurator is a Single Page Application that allows users to create custom keymaps for their QMK-compatible keyboard. They can export JSON representation of their keymaps and compile firmware binaries that can be flashed to their keyboard using a tool like QMK Toolbox.

    Configurator gets metadata about keyboards from the Keyboard Metadata store and submits compile requests to the QMK API. The results of those compile requests will be made available on Digital Ocean Spaces, an S3-compatible data store.

    Configurator Frontend

    Address: https://config.qmk.fm

    The Configurator Frontend is compiled into a set of static files that are served by Github Pages. This action happens every time a commit is pushed to the qmk_configurator master branch. You can view the status of these jobs on the qmk_configurator actions tab.

    Keyboard Metadata

    Address: https://keyboards.qmk.fm

    The Keyboard Metadata is generated every time a keyboard in qmk_firmware changes. The resulting JSON files are uploaded to Spaces and used by Configurator to generate UI for each keyboard. You can view the status of this job on the qmk_firmware actions tab. If you are a QMK Collaborator you can manually run this job using the workflow_dispatch event trigger.

    QMK API

    Address: http://api.qmk.fm

    The QMK API accepts keymap.json files for compilation. These are the same files you can use directly with qmk compile and qmk flash. When a keymap.json is submitted the browser will poll the status of the job periodically (every 2 seconds or longer, preferably) until the job has completed. The final status JSON will contain pointers to source and binary downloads for the keymap.

    QMK API always presents the source and binary downloads side-by-side to comply with the GPL.

    There are 3 non-error status responses from the API-

    1. Compile Job Queued
    2. Compile Job Running
    3. Compile Job Finished

    Compile Job Queued

    This status indicates that the job has not yet been picked up by a QMK Compiler node. Configurator shows this status as "Waiting for an oven".

    Compile Job Running

    This status indicates that the job has started compiling. Configurator shows this status as "Baking".

    Compile Job Finished

    This status indicates that the job has completed. There will be keys in the status JSON for source and binary downloads.

    Redis/RQ

    QMK API uses RQ to distribute jobs to the available QMK Compiler nodes. When a keymap.json is received it's put into the RQ queue, where a qmk_compiler node will pick it up from.

    QMK Compiler

    QMK Compiler is what actually performs the compilation of the keymap.json. It does so by checking out the requested qmk_firmware branch, running qmk compile keymap.json, and then uploading the resulting source and binary to Digital Ocean Spaces.

    When users download their source/binary, API will redirect them to the authenticated Spaces download URL.

    - + \ No newline at end of file diff --git a/configurator_default_keymaps.html b/configurator_default_keymaps.html index acd4df1d364..25c457a5e62 100644 --- a/configurator_default_keymaps.html +++ b/configurator_default_keymaps.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -116,7 +116,7 @@ } return process_record_user(keycode, record); };

    Note the call to process_record_user() at the end.

    Additional Reading

    For QMK Configurator to support your keyboard, your keyboard must be present in the master branch of the qmk_firmware repository. For instructions on this, please see Supporting Your Keyboard in QMK Configurator.

    - + \ No newline at end of file diff --git a/configurator_step_by_step.html b/configurator_step_by_step.html index 2f62b900265..4eb737fb972 100644 --- a/configurator_step_by_step.html +++ b/configurator_step_by_step.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    QMK Configurator: Step by Step

    This page describes the steps for building your firmware in QMK Configurator.

    Step 1: Select Your Keyboard

    Click the drop down box and select the keyboard you want to create a keymap for.

    TIP

    If your keyboard has several versions, make sure you select the correct one.

    I'll say that again because it's important:

    WARNING

    MAKE SURE YOU SELECT THE RIGHT VERSION!

    Unfortunately if your keyboard has been advertised to be powered by QMK but is not in the list, you will not be able to use Configurator to customize your keyboard.

    Chances are a developer hasn't gotten round to adding support or we haven't had a chance to merge it in yet. If there is no active Pull Request, contact the manufacturer and encourage them to add support.

    Step 2: Select Your Keyboard Layout

    Choose the layout that best represents the keymap you want to create. Some keyboards do not have enough layouts or correct layouts defined yet. They will be supported in the future.

    WARNING

    Sometimes there isn't a layout that supports your exact build. In that case select LAYOUT_all.

    Step 3: Name Your Keymap

    Call this keymap what you want.

    TIP

    If you are running into issues when compiling, it may be worth changing this name, as it may already exist in the QMK Firmware repo.

    Step 4: Define Your Keymap

    Keycode Entry is accomplished in one of 3 ways:

    1. Drag and drop
    2. Clicking on an empty spot on the layout, then clicking the keycode you desire
    3. Clicking on an empty spot on the layout, then pressing the physical key on your keyboard

    TIP

    Hover your mouse over a key and a short blurb will tell you what that keycode does. For a more verbose description please see:

    WARNING

    If your selected layout doesn't match your physical build leave the unused keys blank. If you're not sure which key is in use, for example you have a one backspace key but LAYOUT_all has 2 keys, put the same keycode in both locations.

    Step 5: Save Your Keymap for Future Changes

    When you're satisfied with your keymap or just want to work on it later, press the Download this QMK Keymap JSON File button. It will save your keymap to your computer. You can then load this .json file in the future by pressing the Upload a QMK Keymap JSON File button.

    WARNING

    CAUTION: This is not the same type of .json file used for kbfirmware.com or any other tool. If you try to use this for those tools, or the .json from those tools with QMK Configurator, you will encounter problems.

    Step 6: Compile Your Firmware File

    Press the green Compile button.

    When the compilation is done, you will be able to press the green Download Firmware button.

    Next steps: Flashing Your Keyboard

    Please refer to Flashing Firmware.

    - + \ No newline at end of file diff --git a/configurator_troubleshooting.html b/configurator_troubleshooting.html index 40e41634301..8940682674a 100644 --- a/configurator_troubleshooting.html +++ b/configurator_troubleshooting.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Configurator Troubleshooting

    My .json file is not working

    If the .json file was generated with QMK Configurator, congratulations you have stumbled upon a bug. File an issue at qmk_configurator.

    If not... how did you miss the big bold message at the top saying not to use other .json files?

    There are extra spaces in my layout? What do I do?

    If you're referring to having three spots for space bar, the best course of action is to just fill them all with Space. The same can be done for Backspace and Shift keys.

    What is the keycode for...

    Please see:

    It won't compile

    Please double check the other layers of your keymap to make sure there are no random keys present.

    Problems and Bugs

    We are always accepting customer requests and bug reports. Please file them at qmk_configurator.

    - + \ No newline at end of file diff --git a/contributing.html b/contributing.html index eee6d430acb..b973d884ef8 100644 --- a/contributing.html +++ b/contributing.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -30,7 +30,7 @@ FIRST_LAYER = SAFE_RANGE, SECOND_LAYER };

    Previewing the Documentation

    Before opening a pull request, you can preview your changes if you have set up the development environment by running this command from the qmk_firmware/ folder:

    qmk docs

    and navigating to http://localhost:5173/.

    Keyboards

    Keyboards are the raison d'être for QMK. Some keyboards are community maintained, while others are maintained by the people responsible for making a particular keyboard. The readme.md should tell you who maintains a particular keyboard. If you have questions relating to a particular keyboard you can Open An Issue and tag the maintainer in your question.

    We also ask that you follow these guidelines:

    Quantum/TMK Core

    Before you put a lot of work into building your new feature you should make sure you are implementing it in the best way. You can get a basic understanding of QMK by reading Understanding QMK, which will take you on a tour of the QMK program flow. From here you should talk to us to get a sense of the best way to implement your idea. There are two main ways to do this:

    Feature and Bug Fix PRs affect all keyboards. We are also in the process of restructuring QMK. For this reason it is especially important for significant changes to be discussed before implementation has happened. If you open a PR without talking to us first please be prepared to do some significant rework if your choices do not mesh well with our planned direction.

    Here are some things to keep in mind when working on your feature or bug fix.

    We also ask that you follow these guidelines:

    Refactoring

    To maintain a clear vision of how things are laid out in QMK we try to plan out refactors in-depth and have a collaborator make the changes. If you have an idea for refactoring, or suggestions, open an issue, we'd love to talk about how QMK can be improved.

    What Does the Code of Conduct Mean for Me?

    Our Code of Conduct means that you are responsible for treating everyone on the project with respect and courtesy regardless of their identity. If you are the victim of any inappropriate behavior or comments as described in our Code of Conduct, we are here for you and will do the best to ensure that the abuser is reprimanded appropriately, per our code.

    - + \ No newline at end of file diff --git a/custom_matrix.html b/custom_matrix.html index 4aee94f38e5..8377a9d65ab 100644 --- a/custom_matrix.html +++ b/custom_matrix.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -64,7 +64,7 @@ __attribute__((weak)) void matrix_init_user(void) {} __attribute__((weak)) void matrix_scan_user(void) {} - + \ No newline at end of file diff --git a/custom_quantum_functions.html b/custom_quantum_functions.html index e0b551fb3f5..9d478f63070 100644 --- a/custom_quantum_functions.html +++ b/custom_quantum_functions.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -141,7 +141,7 @@ }

    The first argument trigger_time is the intended time of execution. If other delays prevent executing at the exact trigger time, this allows for "catch-up" or even skipping intervals, depending on the required behaviour.

    The second argument cb_arg is the same argument passed into defer_exec() below, and can be used to access state information from the original call context.

    The return value is the number of milliseconds to use if the function should be repeated -- if the callback returns 0 then it's automatically unregistered. In the example above, a hypothetical my_deferred_functionality() is invoked to determine if the callback needs to be repeated -- if it does, it reschedules for a 500 millisecond delay, otherwise it informs the deferred execution background task that it's done, by returning 0.

    TIP

    Note that the returned delay will be applied to the intended trigger time, not the time of callback invocation. This allows for generally consistent timing even in the face of occasional late execution.

    Deferred executor registration

    Once a callback has been defined, it can be scheduled using the following API:

    c
    deferred_token my_token = defer_exec(1500, my_callback, NULL);

    The first argument is the number of milliseconds to wait until executing my_callback -- in the case above, 1500 milliseconds, or 1.5 seconds.

    The third parameter is the cb_arg that gets passed to the callback at the point of execution. This value needs to be valid at the time the callback is invoked -- a local function value will be destroyed before the callback is executed and should not be used. If this is not required, NULL should be used.

    The return value is a deferred_token that can consequently be used to cancel the deferred executor callback before it's invoked. If a failure occurs, the returned value will be INVALID_DEFERRED_TOKEN. Usually this will be as a result of supplying 0 to the delay, or a NULL for the callback. The other failure case is if there are too many deferred executions "in flight" -- this can be increased by changing the limit, described below.

    Extending a deferred execution

    The deferred_token returned by defer_exec() can be used to extend a the duration a pending execution waits before it gets invoked:

    c
    // This will re-delay my_token's future execution such that it is invoked 800ms after the current time
     extend_deferred_exec(my_token, 800);

    Cancelling a deferred execution

    The deferred_token returned by defer_exec() can be used to cancel a pending execution before it gets invoked:

    c
    // This will cancel my_token's future execution
     cancel_deferred_exec(my_token);

    Once a token has been canceled, it should be considered invalid. Reusing the same token is not supported.

    Deferred callback limits

    There are a maximum number of deferred callbacks that can be scheduled, controlled by the value of the define MAX_DEFERRED_EXECUTORS.

    If registrations fail, then you can increase this value in your keyboard or keymap config.h file, for example to 16 instead of the default 8:

    c
    #define MAX_DEFERRED_EXECUTORS 16

    Advanced topics

    This page used to encompass a large set of features. We have moved many sections that used to be part of this page to their own pages. Everything below this point is simply a redirect so that people following old links on the web find what they're looking for.

    Layer Change Code

    Layer change code

    Persistent Configuration (EEPROM)

    Persistent Configuration (EEPROM)

    - + \ No newline at end of file diff --git a/data_driven_config.html b/data_driven_config.html index 9798f4cfb1e..4f8c13235bc 100644 --- a/data_driven_config.html +++ b/data_driven_config.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Data Driven Configuration

    This page describes how QMK's data driven JSON configuration system works. It is aimed at developers who want to work on QMK itself.

    History

    Historically QMK has been configured through a combination of two mechanisms- rules.mk and config.h. While this worked well when QMK was only a handful of keyboards we've grown to encompass nearly 4000 supported keyboards. That extrapolates out to 6000 configuration files under keyboards/ alone! The freeform nature of these files and the unique patterns people have used to avoid duplication have made ongoing maintenance a challenge, and a large number of our keyboards follow patterns that are outdated and sometimes harder to understand.

    We have also been working on bringing the power of QMK to people who aren't comformable with a CLI, and other projects such as VIA are working to make using QMK as easy as installing a program. These tools need information about how a keyboard is laid out or what pins and features are available so that users can take full advantage of QMK. We introduced info.json as a first step towards this. The QMK API is an effort to combine these 3 sources of information- config.h, rules.mk, and info.json- into a single source of truth that end-user tools can use.

    Now we have support for generating rules.mk and config.h values from info.json, allowing us to have a single source of truth. This will allow us to use automated tooling to maintain keyboards saving a lot of time and maintenance work.

    Overview

    On the C side of things nothing changes. When you need to create a new rule or define you follow the same process:

    1. Add it to docs/config_options.md
    2. Set a default in the appropriate core file
    3. Add your ifdef statements as needed

    You will then need to add support for your new configuration to info.json. The basic process is:

    1. Add it to the schema in data/schemas/keyboards.jsonschema
    2. Add a mapping in data/maps
    3. (optional and discouraged) Add code to extract/generate it to:
    • lib/python/qmk/info.py
    • lib/python/qmk/cli/generate/config_h.py
    • lib/python/qmk/cli/generate/rules_mk.py

    Adding an option to info.json

    This section describes adding support for a config.h/rules.mk value to info.json.

    Add it to the schema

    QMK maintains jsonschema files in data/schemas. The values that go into keyboard-specific info.json files are kept in keyboard.jsonschema. Any value you want to make available to end users to edit must go in here.

    In some cases you can simply add a new top-level key. Some examples to follow are keyboard_name, maintainer, processor, and url. This is appropriate when your option is self-contained and not directly related to other options.

    In other cases you should group like options together in an object. This is particularly true when adding support for a feature. Some examples to follow for this are indicators, matrix_pins, and rgblight. If you are not sure how to integrate your new option(s) open an issue or join #cli on Discord and start a conversation there.

    Add a mapping

    In most cases you can add a simple mapping. These are maintained as JSON files in data/mappings/info_config.hjson and data/mappings/info_rules.hjson, and control mapping for config.h and rules.mk, respectively. Each mapping is keyed by the config.h or rules.mk variable, and the value is a hash with the following keys:

    • info_key: (required) The location within info.json for this value. See below.
    • value_type: (optional) Default raw. The format for this variable's value. See below.
    • to_json: (optional) Default true. Set to false to exclude this mapping from info.json
    • to_c: (optional) Default true. Set to false to exclude this mapping from config.h
    • warn_duplicate: (optional) Default true. Set to false to turn off warning when a value exists in both places

    Info Key

    We use JSON dot notation to address variables within info.json. For example, to access info_json["rgblight"]["split_count"] I would specify rgblight.split_count. This allows you to address deeply nested keys with a simple string.

    Under the hood we use Dotty Dict, you can refer to that documentation for how these strings are converted to object access.

    Value Types

    By default we treat all values as unquoted "raw" data. If your value is more complex you can use one of these types to intelligently parse the data:

    • array: A comma separated array of strings
    • array.int: A comma separated array of integers
    • int: An integer
    • hex: A number formatted as hex
    • list: A space separate array of strings
    • mapping: A hash of key/value pairs
    • str: A quoted string literal

    Add code to extract it

    Most use cases can be solved by the mapping files described above. If yours can't you can instead write code to extract your config values.

    Whenever QMK generates a complete info.json it extracts information from config.h and rules.mk. You will need to add code for your new config value to lib/python/qmk/info.py. Typically this means adding a new _extract_<feature>() function and then calling your function in either _extract_config_h() or _extract_rules_mk().

    If you are not sure how to edit this file or are not comfortable with Python open an issue or join #cli on Discord and someone can help you with this part.

    Add code to generate it

    The final piece of the puzzle is providing your new option to the build system. This is done by generating two files:

    • .build/obj_<keyboard>_<keymap>/src/info_config.h
    • .build/obj_<keyboard>_<keymap>/src/rules.mk

    These two files are generated by the code here:

    • lib/python/qmk/cli/generate/config_h.py
    • lib/python/qmk/cli/generate/rules_mk.py

    For config.h values you'll need to write a function for your rule(s) and call that function in generate_config_h().

    If you have a new top-level info.json key for rules.mk you can simply add your keys to info_to_rules at the top of lib/python/qmk/cli/generate/rules_mk.py. Otherwise you'll need to create a new if block for your feature in generate_rules_mk().

    - + \ No newline at end of file diff --git a/documentation_best_practices.html b/documentation_best_practices.html index a7339e4e69a..2bd68a62f31 100644 --- a/documentation_best_practices.html +++ b/documentation_best_practices.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -34,7 +34,7 @@ |KC_COFFEE||Make Coffee| |KC_CREAM||Order Cream| |KC_SUGAR||Order Sugar|

    Place your documentation into docs/features/<my_cool_feature>.md, and add that file to the appropriate place in docs/_sidebar.json. If you have added any keycodes be sure to add them to docs/keycodes.md with a link back to your feature page.

    - + \ No newline at end of file diff --git a/documentation_templates.html b/documentation_templates.html index 8f2b70b4fae..694137837e0 100644 --- a/documentation_templates.html +++ b/documentation_templates.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -51,7 +51,7 @@ * **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard * **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead * **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available - + \ No newline at end of file diff --git a/driver_installation_zadig.html b/driver_installation_zadig.html index 0a81cdb75f7..bb5c9bff4ec 100644 --- a/driver_installation_zadig.html +++ b/driver_installation_zadig.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Bootloader Driver Installation with Zadig

    QMK presents itself to the host as a regular HID keyboard device, and as such requires no special drivers. However, in order to flash your keyboard on Windows, the bootloader device that appears when you reset the board often does.

    There are two notable exceptions: the Caterina bootloader, usually seen on Pro Micros, and the HalfKay bootloader shipped with PJRC Teensys, appear as a serial port and a generic HID device respectively, and so do not require a driver.

    We recommend the use of the Zadig utility. If you have set up the development environment with MSYS2, the qmk_install.sh script will have already installed the drivers for you.

    Installation

    Put your keyboard into bootloader mode, either by hitting the QK_BOOT keycode (which may be on a different layer), or by pressing the reset switch that's usually located on the underside of the board. If your keyboard has neither, try holding Escape or Space+B as you plug it in (see the Bootmagic docs for more details). Some boards use Command instead of Bootmagic; in this case, you can enter bootloader mode by hitting Left Shift+Right Shift+B or Left Shift+Right Shift+Escape at any point while the keyboard is plugged in. Some keyboards may have specific instructions for entering the bootloader. For example, the Bootmagic key (default: Escape) might be on a different key, e.g. Left Control; or the magic combination for Command (default: Left Shift+Right Shift) might require you to hold something else, e.g. Left Control+Right Control. Refer to the board's README file if you are unsure.

    To put a device in bootloader mode with USBaspLoader, tap the RESET button while holding down the BOOT button. Alternatively, hold BOOT while inserting the USB cable.

    Zadig should automatically detect the bootloader device, but you may sometimes need to check Options → List All Devices and select the device from the dropdown instead.

    WARNING

    If Zadig lists one or more devices with the HidUsb driver, your keyboard is probably not in bootloader mode. The arrow will be colored orange and you will be asked to confirm modifying a system driver. Do not proceed if this is the case!

    If the arrow appears green, select the driver, and click Install Driver. See the list of known bootloaders for the correct driver to install.

    Zadig with a bootloader driver correctly installed

    Finally, unplug and replug the keyboard to make sure the new driver has been loaded. If you are using the QMK Toolbox to flash, exit and restart it too, as it can sometimes fail to recognize the driver change.

    Recovering from Installation to Wrong Device

    If you find that you can no longer type with the keyboard, you may have accidentally replaced the driver for the keyboard itself instead of for the bootloader. This can happen when the keyboard is not in the bootloader mode. You can easily confirm this in Zadig - a healthy keyboard has the HidUsb driver installed on all of its interfaces:

    A healthy keyboard as seen by Zadig

    Open the Device Manager, select View → Devices by container, and look for an entry with your keyboard's name.

    The board with the wrong driver installed, in Device Manager

    Right-click each entry and hit Uninstall device. Make sure to tick Delete the driver software for this device first if it appears.

    The Device Uninstall dialog, with the "delete driver" checkbox ticked

    Click Action → Scan for hardware changes. At this point, you should be able to type again. Double check in Zadig that the keyboard device(s) are using the HidUsb driver. If so, you're all done, and your board should be functional again! Otherwise, repeat this process until Zadig reports the correct driver.

    TIP

    A full reboot of your computer may sometimes be necessary at this point, to get Windows to pick up the new driver.

    Uninstallation

    Uninstallation of bootloader devices is a little more involved than installation.

    Open the Device Manager, select View → Devices by container, and look for the bootloader device. Match up the USB VID and PID in Zadig with one from the table below.

    Find the Inf name value in the Details tab of the device properties. This should generally be something like oemXX.inf:

    Device properties showing the Inf name value

    Then, open a new Command Prompt window as an Administrator (type in cmd into the Start menu and press Ctrl+Shift+Enter). Run pnputil /enum-drivers to verify the Inf name matches the Published Name field of one of the entries:

    pnputil output with matching driver highlighted

    Run pnputil /delete-driver oemXX.inf /uninstall. This will delete the driver and remove it from any devices using it. Note that this will not uninstall the device itself.

    As with the previous section, this process may need to be repeated multiple times, as multiple drivers can be applicable to the same device.

    WARNING

    Be extremely careful when doing this! You could potentially uninstall the driver for some other critical device. If you are unsure, double check the output of /enum-drivers, and omit the /uninstall flag when running /delete-driver.

    List of Known Bootloaders

    This is a list of known bootloader devices and their USB vendor and product IDs, as well as the correct driver to assign for flashing with QMK. Note that the usbser and HidUsb drivers are built in to Windows, and cannot be assigned with Zadig - if your device has an incorrect driver, you must use the Device Manager to uninstall it as described in the previous section.

    The device name here is the name that appears in Zadig, and may not be what the Device Manager or QMK Toolbox displays.

    BootloaderDevice NameVID/PIDDriver
    atmel-dfuATmega16u2 DFU03EB:2FEFWinUSB
    atmel-dfuATmega32U2 DFU03EB:2FF0WinUSB
    atmel-dfuATm16U4 DFU V1.0.203EB:2FF3WinUSB
    atmel-dfuATm32U4DFU03EB:2FF4WinUSB
    atmel-dfunone (AT90USB64)03EB:2FF9WinUSB
    atmel-dfuAT90USB128 DFU03EB:2FFBWinUSB
    qmk-dfu(keyboard name) BootloaderAs atmel-dfuWinUSB
    halfkaynone16C0:0478HidUsb
    caterinaPro Micro 3.3V1B4F:9203usbser
    caterinaPro Micro 5V1B4F:9205usbser
    caterinaLilyPadUSB1B4F:9207usbser
    caterinaPololu A-Star 32U4 Bootloader1FFB:0101usbser
    caterinaArduino Leonardo2341:0036usbser
    caterinaArduino Micro2341:0037usbser
    caterinaAdafruit Feather 32u4239A:000Cusbser
    caterinaAdafruit ItsyBitsy 32u4 3V239A:000Dusbser
    caterinaAdafruit ItsyBitsy 32u4 5V239A:000Eusbser
    caterinaArduino Leonardo2A03:0036usbser
    caterinaArduino Micro2A03:0037usbser
    bootloadhidHIDBoot16C0:05DFHidUsb
    usbasploaderUSBasp16C0:05DClibusbK
    apm32-dfuAPM32 DFU ISP Mode314B:0106WinUSB
    stm32-dfuSTM32 BOOTLOADER0483:DF11WinUSB
    gd32v-dfuGD32V BOOTLOADER28E9:0189WinUSB
    kiibohdKiibohd DFU Bootloader1C11:B007WinUSB
    stm32duinoMaple 0031EAF:0003WinUSB
    qmk-hid(keyboard name) Bootloader03EB:2067HidUsb
    - + \ No newline at end of file diff --git a/drivers/adc.html b/drivers/adc.html index 730c1a13d37..54bc7485125 100644 --- a/drivers/adc.html +++ b/drivers/adc.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    ADC Driver

    QMK can leverage the Analog-to-Digital Converter (ADC) on supported MCUs to measure voltages on certain pins. This can be useful for implementing things such as battery level indicators for Bluetooth keyboards, or volume controls using a potentiometer, as opposed to a rotary encoder.

    This driver currently supports both AVR and a limited selection of ARM devices. The values returned are 10-bit integers (0-1023) mapped between 0V and VCC (usually 5V or 3.3V for AVR, 3.3V only for ARM), however on ARM there is more flexibility in control of operation through #defines if you need more precision.

    Usage

    To use this driver, add the following to your rules.mk:

    make
    ANALOG_DRIVER_REQUIRED = yes

    Then place this include at the top of your code:

    c
    #include "analog.h"

    Channels

    AVR

    ChannelAT90USB64/128ATmega16/32U4ATmega32AATmega328/P
    0F0F0A0C0
    1F1F1A1C1
    2F2A2C2
    3F3A3C3
    4F4F4A4C4
    5F5F5A5C5
    6F6F6A6*
    7F7F7A7*
    8D4
    9D6
    10D7
    11B4
    12B5
    13B6

    * The ATmega328/P possesses two extra ADC channels; however, they are not present on the DIP pinout, and are not shared with GPIO pins. You can use adc_read() directly to gain access to these.

    ARM

    STM32

    Note that some of these pins are doubled-up on ADCs with the same channel. This is because the pins can be used for either ADC.

    Also note that the F0 and F3 use different numbering schemes. The F0 has a single ADC and the channels are 0-indexed, whereas the F3 has 4 ADCs and the channels are 1-indexed. This is because the F0 uses the ADCv1 implementation of the ADC, whereas the F3 uses the ADCv3 implementation.

    ADCChannelSTM32F0xxSTM32F1xxSTM32F3xxSTM32F4xx
    10A0A0A0
    11A1A1A0A1
    12A2A2A1A2
    13A3A3A2A3
    14A4A4A3A4
    15A5A5F4A5
    16A6A6C0A6
    17A7A7C1A7
    18B0B0C2B0
    19B1B1C3B1
    110C0C0F2C0
    111C1C1C1
    112C2C2C2
    113C3C3C3
    114C4C4C4
    115C5C5C5
    116
    20A0¹A0²
    21A1¹A4A1²
    22A2¹A5A2²
    23A3¹A6A3²
    24A4¹A7A4²
    25A5¹C4A5²
    26A6¹C0A6²
    27A7¹C1A7²
    28B0¹C2B0²
    29B1¹C3B1²
    210C0¹F2C0²
    211C1¹C5C1²
    212C2¹B2C2²
    213C3¹C3²
    214C4¹C4²
    215C5¹C5²
    216
    30A0¹A0²
    31A1¹B1A1²
    32A2¹E9A2²
    33A3¹E13A3²
    34F6¹F6²
    35F7¹B13F7²
    36F8¹E8F8²
    37F9¹D10F9²
    38F10¹D11F10²
    39D12F3²
    310C0¹D13C0²
    311C1¹D14C1²
    312C2¹B0C2²
    313C3¹E7C3²
    314E10F4²
    315E11F5²
    316E12
    41E14
    42E15
    43B12
    44B14
    45B15
    46E8
    47D10
    48D11
    49D12
    410D13
    411D14
    412D8
    413D9
    414
    415
    416

    ¹ As of ChibiOS 20.3.4, the ADC driver for STM32F1xx devices supports only ADC1, therefore any configurations involving ADC2 or ADC3 cannot actually be used. In particular, pins F6F10, which are present at least on some STM32F103x[C-G] devices, cannot be used as ADC inputs because of this driver limitation.

    ² Not all STM32F4xx devices have ADC2 and/or ADC3, therefore some configurations shown in this table may be unavailable; in particular, pins F4F10 cannot be used as ADC inputs on devices which do not have ADC3. Check the device datasheet to confirm which pin functions are supported.

    RP2040

    RP2040 has only a single ADC (ADCD1 in ChibiOS); in the QMK API the index for that ADC is 0.

    ChannelPin
    0GP26
    1GP27
    2GP28
    3GP29
    4Temperature sensor*

    * The temperature sensor is disabled by default and needs to be enabled by the RP2040-specific function: adcRPEnableTS(&ADCD1). The ADC must be initialized before calling that function; an easy way to ensure that is to perform a dummy conversion.

    Functions

    AVR

    FunctionDescription
    analogReference(mode)Sets the analog voltage reference source. Must be one of ADC_REF_EXTERNAL, ADC_REF_POWER or ADC_REF_INTERNAL.
    analogReadPin(pin)Reads the value from the specified pin, eg. F6 for ADC6 on the ATmega32U4.
    pinToMux(pin)Translates a given pin to a mux value. If an unsupported pin is given, returns the mux value for "0V (GND)".
    adc_read(mux)Reads the value from the ADC according to the specified mux. See your MCU's datasheet for more information.

    ARM

    FunctionDescription
    analogReadPin(pin)Reads the value from the specified pin, eg. A0 for channel 0 on the STM32F0 and ADC1 channel 1 on the STM32F3. Note that if a pin can be used for multiple ADCs, it will pick the lower numbered ADC for this function. eg. C0 will be channel 6 of ADC 1 when it could be used for ADC 2 as well.
    analogReadPinAdc(pin, adc)Reads the value from the specified pin and ADC, eg. C0, 1 will read from channel 6, ADC 2 instead of ADC 1. Note that the ADCs are 0-indexed for this function.
    pinToMux(pin)Translates a given pin to a channel and ADC combination. If an unsupported pin is given, returns the mux value for "0V (GND)".
    adc_read(mux)Reads the value from the ADC according to the specified pin and ADC combination. See your MCU's datasheet for more information.

    Configuration

    ARM

    The ARM implementation of the ADC has a few additional options that you can override in your own keyboards and keymaps to change how it operates. Please consult the corresponding hal_adc_lld.h in ChibiOS for your specific microcontroller for further documentation on your available options.

    #defineTypeDefaultDescription
    ADC_CIRCULAR_BUFFERboolfalseIf true, then the implementation will use a circular buffer.
    ADC_NUM_CHANNELSint1Sets the number of channels that will be scanned as part of an ADC operation. The current implementation only supports 1.
    ADC_BUFFER_DEPTHint2Sets the depth of each result. Since we are only getting a 10-bit result by default, we set this to 2 bytes so we can contain our one value. This could be set to 1 if you opt for an 8-bit or lower result.
    ADC_SAMPLING_RATEintADC_SMPR_SMP_1P5Sets the sampling rate of the ADC. By default, it is set to the fastest setting.
    ADC_RESOLUTIONintADC_CFGR1_RES_10BIT or ADC_CFGR_RES_10BITSThe resolution of your result. We choose 10 bit by default, but you can opt for 12, 10, 8, or 6 bit. Different MCUs use slightly different names for the resolution constants.
    - + \ No newline at end of file diff --git a/drivers/apa102.html b/drivers/apa102.html index 548d3ecfcdd..a8212a852b8 100644 --- a/drivers/apa102.html +++ b/drivers/apa102.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    APA102 Driver

    This driver provides support for APA102 addressable RGB LEDs. They are similar to the WS2812 LEDs, but have increased data and refresh rates.

    Usage

    In most cases, the APA102 driver code is automatically included if you are using either the RGBLight or RGB Matrix feature with the apa102 driver set, and you would use those APIs instead.

    However, if you need to use the driver standalone, add the following to your rules.mk:

    make
    APA102_DRIVER_REQUIRED = yes

    You can then call the APA102 API by including apa102.h in your code.

    Basic Configuration

    Add the following to your config.h:

    DefineDefaultDescription
    APA102_DI_PINNot definedThe GPIO pin connected to the DI pin of the first LED in the chain
    APA102_CI_PINNot definedThe GPIO pin connected to the CI pin of the first LED in the chain
    APA102_DEFAULT_BRIGHTNESS31The default global brightness level of the LEDs, from 0 to 31

    API

    void apa102_init(void)

    Initialize the LED driver. This function should be called first.


    void apa102_set_color(uint16_t index, uint8_t red, uint8_t green, uint8_t blue)

    Set the color of a single LED. This function does not immediately update the LEDs; call apa102_flush() after you are finished.

    Arguments

    • uint16_t index
      The LED index in the APA102 chain.
    • uint8_t red
      The red value to set.
    • uint8_t green
      The green value to set.
    • uint8_t blue
      The blue value to set.

    void apa102_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

    Set the color of all LEDs.

    Arguments

    • uint8_t red
      The red value to set.
    • uint8_t green
      The green value to set.
    • uint8_t blue
      The blue value to set.

    void apa102_flush(void)

    Flush the PWM values to the LED chain.


    void apa102_set_brightness(uint8_t brightness)

    Set the global brightness.

    Arguments

    • uint8_t brightness
      The brightness level to set, from 0 to 31.
    - + \ No newline at end of file diff --git a/drivers/audio.html b/drivers/audio.html index 544cd3cf5be..0926a17df0a 100644 --- a/drivers/audio.html +++ b/drivers/audio.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -65,7 +65,7 @@ #define AUDIO_PWM_DRIVER PWMD1 #define AUDIO_PWM_CHANNEL 1

    ChibiOS uses GPIOv1 for the F103, which only knows of one alternate function. On 'larger' STM32s, GPIOv2 or GPIOv3 are used; with them it is also necessary to configure AUDIO_PWM_PAL_MODE to the correct alternate function for the selected pin, timer and timer-channel.

    You can also use the Complementary output (TIMx_CHyN) for PWM on supported controllers. To enable this functionality, you will need to make the following changes:

    c
    // config.h:
     #define AUDIO_PWM_COMPLEMENTARY_OUTPUT

    PWM software

    This driver uses the PWM callbacks from PWMD1 with TIM1_CH1 to toggle the selected AUDIO_PIN in software. During the same callback, with AUDIO_PIN_ALT_AS_NEGATIVE set, the AUDIO_PIN_ALT is toggled inversely to AUDIO_PIN. This is useful for setups that drive a piezo from two pins (instead of one and Gnd).

    You can also change the timer used for software PWM by defining the driver. For instance:

    c
    #define AUDIO_STATE_TIMER GPTD8

    Testing Notes

    While not an exhaustive list, the following table provides the scenarios that have been partially validated:

    DAC basicDAC additivePWM hardwarePWM software
    Atmega32U4✔️
    RP2040✔️?
    STM32F103C8 (bluepill)✔️✔️
    STM32F303CCT6 (proton-c)✔️✔️?✔️
    STM32F405VG✔️✔️✔️✔️
    L0xx❌ (no Tim8)???

    ✔️ : works and was tested
    ⭕ : does not apply
    ❌ : not supported by MCU

    Other supported ChibiOS boards and/or pins may function, it will be highly chip and configuration dependent.

    - + \ No newline at end of file diff --git a/drivers/aw20216s.html b/drivers/aw20216s.html index a60b0eade99..5b0c43b0a5b 100644 --- a/drivers/aw20216s.html +++ b/drivers/aw20216s.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -25,7 +25,7 @@ {0, SW1_CS1, SW1_CS2, SW1_CS3}, // etc... };

    In this example, the first LED index on driver 0 has its red channel on SW1_CS1, green on SW1_CS2 and blue on SW1_CS3.

    These values correspond to the matrix locations as shown in the datasheet on page 16, figure 16.

    API

    struct aw20216s_led_t

    Contains the PWM register addresses for a single RGB LED.

    Members


    void aw20216s_init(pin_t cs_pin)

    Initialize the LED driver. This function should be called first.

    Arguments


    void aw20216s_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

    Set the color of a single LED. This function does not immediately update the LEDs; call aw20216s_update_pwm_buffers() after you are finished.

    Arguments


    void aw20216s_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

    Set the color of all LEDs.

    Arguments


    void aw20216s_update_pwm_buffers(pin_t cs_pin, uint8_t index)

    Flush the PWM values to the LED driver.

    Arguments

    - + \ No newline at end of file diff --git a/drivers/eeprom.html b/drivers/eeprom.html index 7611b59f8f8..d4c1cdc9ea3 100644 --- a/drivers/eeprom.html +++ b/drivers/eeprom.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    EEPROM Driver Configuration

    The EEPROM driver can be swapped out depending on the needs of the keyboard, or whether extra hardware is present.

    Selecting the EEPROM driver is done in your keyboard's rules.mk:

    DriverDescription
    EEPROM_DRIVER = vendor (default)Uses the on-chip driver provided by the chip manufacturer. For AVR, this is provided by avr-libc. This is supported on ARM for a subset of chips -- STM32F3xx, STM32F1xx, and STM32F072xB will be emulated by writing to flash. STM32L0xx and STM32L1xx will use the onboard dedicated true EEPROM. Other chips will generally act as "transient" below.
    EEPROM_DRIVER = i2cSupports writing to I2C-based 24xx EEPROM chips. See the driver section below.
    EEPROM_DRIVER = spiSupports writing to SPI-based 25xx EEPROM chips. See the driver section below.
    EEPROM_DRIVER = transientFake EEPROM driver -- supports reading/writing to RAM, and will be discarded when power is lost.
    EEPROM_DRIVER = wear_levelingFrontend driver for the wear_leveling system, allowing for EEPROM emulation on top of flash -- both in-MCU and external SPI NOR flash.

    Vendor Driver Configuration

    STM32 L0/L1 Configuration

    WARNING

    Resetting EEPROM using an STM32L0/L1 device takes up to 1 second for every 1kB of internal EEPROM used.

    config.h overrideDescriptionDefault Value
    #define STM32_ONBOARD_EEPROM_SIZEThe size of the EEPROM to use, in bytes. Erase times can be high, so it's configurable here, if not using the default value.Minimum required to cover base eeconfig data, or 1024 if VIA is enabled.

    I2C Driver Configuration

    Currently QMK supports 24xx-series chips over I2C. As such, requires a working i2c_master driver configuration. You can override the driver configuration via your config.h:

    config.h overrideDescriptionDefault Value
    #define EXTERNAL_EEPROM_I2C_BASE_ADDRESSBase I2C address for the EEPROM -- shifted left by 1 as per i2c_master requirements0b10100000
    #define EXTERNAL_EEPROM_I2C_ADDRESS(addr)Calculated I2C address for the EEPROM(EXTERNAL_EEPROM_I2C_BASE_ADDRESS)
    #define EXTERNAL_EEPROM_BYTE_COUNTTotal size of the EEPROM in bytes8192
    #define EXTERNAL_EEPROM_PAGE_SIZEPage size of the EEPROM in bytes, as specified in the datasheet32
    #define EXTERNAL_EEPROM_ADDRESS_SIZEThe number of bytes to transmit for the memory location within the EEPROM2
    #define EXTERNAL_EEPROM_WRITE_TIMEWrite cycle time of the EEPROM, as specified in the datasheet5
    #define EXTERNAL_EEPROM_WP_PINIf defined the WP pin will be toggled appropriately when writing to the EEPROM.none

    Some I2C EEPROM manufacturers explicitly recommend against hardcoding the WP pin to ground. This is in order to protect the eeprom memory content during power-up/power-down/brown-out conditions at low voltage where the eeprom is still operational, but the i2c master output might be unpredictable. If a WP pin is configured, then having an external pull-up on the WP pin is recommended.

    Default values and extended descriptions can be found in drivers/eeprom/eeprom_i2c.h.

    Alternatively, there are pre-defined hardware configurations for available chips/modules:

    ModuleEquivalent #defineSource
    CAT24C512 EEPROM#define EEPROM_I2C_CAT24C512https://www.sparkfun.com/products/14764
    RM24C512C EEPROM#define EEPROM_I2C_RM24C512Chttps://www.sparkfun.com/products/14764
    24LC32A EEPROM#define EEPROM_I2C_24LC32Ahttps://www.microchip.com/en-us/product/24LC32A
    24LC64 EEPROM#define EEPROM_I2C_24LC64https://www.microchip.com/en-us/product/24LC64
    24LC128 EEPROM#define EEPROM_I2C_24LC128https://www.microchip.com/en-us/product/24LC128
    24LC256 EEPROM#define EEPROM_I2C_24LC256https://www.sparkfun.com/products/525
    MB85RC256V FRAM#define EEPROM_I2C_MB85RC256Vhttps://www.adafruit.com/product/1895

    TIP

    If you find that the EEPROM is not cooperating, ensure you've correctly shifted up your EEPROM address by 1. For example, the datasheet might state the address as 0b01010000 -- the correct value of EXTERNAL_EEPROM_I2C_BASE_ADDRESS needs to be 0b10100000.

    SPI Driver Configuration

    Currently QMK supports 25xx-series chips over SPI. As such, requires a working spi_master driver configuration. You can override the driver configuration via your config.h:

    config.h overrideDefault ValueDescription
    #define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PINnoneSPI Slave select pin in order to inform that the EEPROM is currently being addressed
    #define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR64Clock divisor used to divide the peripheral clock to derive the SPI frequency
    #define EXTERNAL_EEPROM_BYTE_COUNT8192Total size of the EEPROM in bytes
    #define EXTERNAL_EEPROM_PAGE_SIZE32Page size of the EEPROM in bytes, as specified in the datasheet
    #define EXTERNAL_EEPROM_ADDRESS_SIZE2The number of bytes to transmit for the memory location within the EEPROM

    Default values and extended descriptions can be found in drivers/eeprom/eeprom_spi.h.

    Alternatively, there are pre-defined hardware configurations for available chips/modules:

    ModuleEquivalent #defineSource
    MB85RS64V FRAMdefine EEPROM_SPI_MB85RS64Vhttps://www.adafruit.com/product/1897

    WARNING

    There's no way to determine if there is an SPI EEPROM actually responding. Generally, this will result in reads of nothing but zero.

    Transient Driver configuration

    The only configurable item for the transient EEPROM driver is its size:

    config.h overrideDescriptionDefault Value
    #define TRANSIENT_EEPROM_SIZETotal size of the EEPROM storage in bytes64

    Default values and extended descriptions can be found in drivers/eeprom/eeprom_transient.h.

    Wear-leveling Driver Configuration

    The wear-leveling driver uses an algorithm to minimise the number of erase cycles on the underlying MCU flash memory.

    There is no specific configuration for this driver, but the wear-leveling system used by this driver may need configuration. See the wear-leveling configuration section for more information.

    Wear-leveling Configuration

    The wear-leveling driver has a few possible backing stores that may be used by adding to your keyboard's rules.mk file:

    DriverDescription
    WEAR_LEVELING_DRIVER = embedded_flashThis driver is used for emulating EEPROM by writing to embedded flash on the MCU.
    WEAR_LEVELING_DRIVER = spi_flashThis driver is used to address external SPI NOR Flash peripherals.
    WEAR_LEVELING_DRIVER = rp2040_flashThis driver is used to write to the same storage the RP2040 executes code from.
    WEAR_LEVELING_DRIVER = legacyThis driver is the "legacy" emulated EEPROM provided in historical revisions of QMK. Currently used for STM32F0xx and STM32F4x1, but slated for deprecation and removal once embedded_flash support for those MCU families is complete.

    WARNING

    All wear-leveling drivers require an amount of RAM equivalent to the selected logical EEPROM size. Increasing the size to 32kB of EEPROM requires 32kB of RAM, which a significant number of MCUs simply do not have.

    Wear-leveling Embedded Flash Driver Configuration

    This driver performs writes to the embedded flash storage embedded in the MCU. In most circumstances, the last few of sectors of flash are used in order to minimise the likelihood of collision with program code.

    Configurable options in your keyboard's config.h:

    config.h overrideDefaultDescription
    #define WEAR_LEVELING_EFL_FIRST_SECTORunsetThe first sector on the MCU to use. By default this is not defined and calculated at runtime based on the MCU. However, different flash sizes on MCUs may require custom configuration.
    #define WEAR_LEVELING_EFL_FLASH_SIZEunsetAllows overriding the flash size available for use for wear-leveling. Under normal circumstances this is automatically calculated and should not need to be overridden. Specifying a size larger than the amount actually available in flash will usually prevent the MCU from booting.
    #define WEAR_LEVELING_EFL_OMIT_LAST_SECTOR_COUNT0Number of sectors to omit at the end of the flash. These sectors will not be allocated to the driver and the usable flash block will be offset, but keeping the set flash size. Useful on devices with bootloaders requiring a check flag at the end of flash to be present in order to confirm a valid, bootable firmware.
    #define WEAR_LEVELING_LOGICAL_SIZE(backing_size/2)Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM.
    #define WEAR_LEVELING_BACKING_SIZE2048Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size.
    #define BACKING_STORE_WRITE_SIZEautomaticThe byte width of the underlying write used on the MCU, and is usually automatically determined from the selected MCU family. If an error occurs in the auto-detection, you'll need to consult the MCU's datasheet and determine this value, specifying it directly.

    WARNING

    If your MCU does not boot after swapping to the EFL wear-leveling driver, it's likely that the flash size is incorrectly detected, usually as an MCU with larger flash and may require overriding.

    Wear-leveling SPI Flash Driver Configuration

    This driver performs writes to an external SPI NOR Flash peripheral. It also requires a working configuration for the SPI NOR Flash peripheral -- see the flash driver documentation for more information.

    Configurable options in your keyboard's config.h:

    config.h overrideDefaultDescription
    #define WEAR_LEVELING_EXTERNAL_FLASH_BLOCK_COUNT1Number of blocks in the external flash used by the wear-leveling algorithm.
    #define WEAR_LEVELING_EXTERNAL_FLASH_BLOCK_OFFSET0The index first block in the external flash used by the wear-leveling algorithm.
    #define WEAR_LEVELING_LOGICAL_SIZE((block_count*block_size)/2)Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM. Result must be <= 64kB.
    #define WEAR_LEVELING_BACKING_SIZE(block_count*block_size)Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size.
    #define BACKING_STORE_WRITE_SIZE8The write width used whenever a write is performed on the external flash peripheral.

    WARNING

    There is currently a limit of 64kB for the EEPROM subsystem within QMK, so using a larger flash is not going to be beneficial as the logical size cannot be increased beyond 65536. The backing size may be increased to a larger value, but erase timing may suffer as a result.

    Wear-leveling RP2040 Driver Configuration

    This driver performs writes to the same underlying storage that the RP2040 executes its code.

    Configurable options in your keyboard's config.h:

    config.h overrideDefaultDescription
    #define WEAR_LEVELING_RP2040_FLASH_SIZEPICO_FLASH_SIZE_BYTESNumber of bytes of flash on the board.
    #define WEAR_LEVELING_RP2040_FLASH_BASE(flash_size-sector_size)The byte-wise location that the backing storage should be located.
    #define WEAR_LEVELING_LOGICAL_SIZE(backing_size/2)Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM.
    #define WEAR_LEVELING_BACKING_SIZE8192Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size as well as the sector size.
    #define BACKING_STORE_WRITE_SIZE2The write width used whenever a write is performed on the external flash peripheral.

    Wear-leveling Legacy EEPROM Emulation Driver Configuration

    This driver performs writes to the embedded flash storage embedded in the MCU much like the normal Embedded Flash Driver, and is only for use with STM32F0xx and STM32F4x1 devices. This flash implementation is still currently provided as the EFL driver is currently non-functional for the previously mentioned families.

    By default, 1024 bytes of emulated EEPROM is provided:

    MCUEEPROM ProvidedFlash Used
    STM32F0421024 bytes2048 bytes
    STM32F0701024 bytes2048 bytes
    STM32F0721024 bytes2048 bytes
    STM32F4011024 bytes16384 bytes
    STM32F4111024 bytes16384 bytes

    Under normal circumstances configuration of this driver requires intimate knowledge of the MCU's flash structure -- reconfiguration is at your own risk and will require referring to the code.

    - + \ No newline at end of file diff --git a/drivers/flash.html b/drivers/flash.html index 4eae8224924..06f6d37a889 100644 --- a/drivers/flash.html +++ b/drivers/flash.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    FLASH Driver Configuration

    The FLASH driver can be swapped out depending on the needs of the keyboard, or whether extra hardware is present.

    DriverDescription
    FLASH_DRIVER = spiSupports writing to almost all NOR Flash chips. See the driver section below.

    SPI FLASH Driver Configuration

    Currently QMK supports almost all NOR Flash chips over SPI. As such, requires a working spi_master driver configuration. You can override the driver configuration via your config.h:

    config.h overrideDescriptionDefault Value
    #define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PINSPI Slave select pin in order to inform that the FLASH is currently being addressednone
    #define EXTERNAL_FLASH_SPI_CLOCK_DIVISORClock divisor used to divide the peripheral clock to derive the SPI frequency8
    #define EXTERNAL_FLASH_PAGE_SIZEThe Page size of the FLASH in bytes, as specified in the datasheet256
    #define EXTERNAL_FLASH_SECTOR_SIZEThe sector size of the FLASH in bytes, as specified in the datasheet(4 * 1024)
    #define EXTERNAL_FLASH_BLOCK_SIZEThe block size of the FLASH in bytes, as specified in the datasheet(64 * 1024)
    #define EXTERNAL_FLASH_SIZEThe total size of the FLASH in bytes, as specified in the datasheet(512 * 1024)
    #define EXTERNAL_FLASH_ADDRESS_SIZEThe Flash address size in bytes, as specified in datasheet3

    WARNING

    All the above default configurations are based on MX25L4006E NOR Flash.

    - + \ No newline at end of file diff --git a/drivers/gpio.html b/drivers/gpio.html index 675bf25d54e..77c233be9a9 100644 --- a/drivers/gpio.html +++ b/drivers/gpio.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -24,7 +24,7 @@ } // some process }

    ATOMIC_BLOCK_FORCEON forces interrupts to be disabled before the block is executed, without regard to whether they are enabled or disabled. Then, after the block is executed, the interrupt is enabled.

    Note that ATOMIC_BLOCK_FORCEON can therefore be used if you know that interrupts are enabled before the execution of the block, or if you know that it is OK to enable interrupts at the completion of the block.

    - + \ No newline at end of file diff --git a/drivers/i2c.html b/drivers/i2c.html index 16e157075c1..b205daa20d1 100644 --- a/drivers/i2c.html +++ b/drivers/i2c.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -26,7 +26,7 @@ palSetPadMode(GPIOB, 6, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP); // Set B6 to I2C function palSetPadMode(GPIOB, 7, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP); // Set B7 to I2C function }

    i2c_status_t i2c_transmit(uint8_t address, uint8_t *data, uint16_t length, uint16_t timeout)

    Send multiple bytes to the selected I2C device.

    Arguments

    Return Value

    I2C_STATUS_TIMEOUT if the timeout period elapses, I2C_STATUS_ERROR if some other error occurs, otherwise I2C_STATUS_SUCCESS.


    i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout)

    Receive multiple bytes from the selected I2C device.

    Arguments

    Return Value

    I2C_STATUS_TIMEOUT if the timeout period elapses, I2C_STATUS_ERROR if some other error occurs, otherwise I2C_STATUS_SUCCESS.


    i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)

    Writes to a register with an 8-bit address on the I2C device.

    Arguments

    Return Value

    I2C_STATUS_TIMEOUT if the timeout period elapses, I2C_STATUS_ERROR if some other error occurs, otherwise I2C_STATUS_SUCCESS.


    i2c_status_t i2c_write_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)

    Writes to a register with a 16-bit address (big endian) on the I2C device.

    Arguments

    Return Value

    I2C_STATUS_TIMEOUT if the timeout period elapses, I2C_STATUS_ERROR if some other error occurs, otherwise I2C_STATUS_SUCCESS.


    i2c_status_t i2c_read_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)

    Reads from a register with an 8-bit address on the I2C device.

    Arguments

    Return Value

    I2C_STATUS_TIMEOUT if the timeout period elapses, I2C_STATUS_ERROR if some other error occurs, otherwise I2C_STATUS_SUCCESS.


    i2c_status_t i2c_read_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)

    Reads from a register with a 16-bit address (big endian) on the I2C device.

    Arguments

    Return Value

    I2C_STATUS_TIMEOUT if the timeout period elapses, I2C_STATUS_ERROR if some other error occurs, otherwise I2C_STATUS_SUCCESS.


    i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout)

    Pings the I2C bus for a specific address.

    On ChibiOS a "best effort" attempt is made by reading a single byte from register 0 at the requested address. This should generally work except for I2C devices that do not not respond to a register 0 read request, which will result in a false negative result (unsucessful response to ping attempt).

    This function is weakly defined, meaning it can be overridden if necessary for your particular use case:

    Arguments

    Return Value

    I2C_STATUS_TIMEOUT if the timeout period elapses, I2C_STATUS_ERROR if some other error occurs, otherwise I2C_STATUS_SUCCESS.

    - + \ No newline at end of file diff --git a/drivers/is31fl3218.html b/drivers/is31fl3218.html index 15fd6327184..c0461eb30f1 100644 --- a/drivers/is31fl3218.html +++ b/drivers/is31fl3218.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -29,7 +29,7 @@ {OUT1}, // etc... };

    API

    struct is31fl3218_led_t

    Contains the PWM register addresses for a single RGB LED.

    Members


    void is31fl3218_init(void)

    Initialize the LED driver. This function should be called first.


    void is31fl3218_write_register(uint8_t reg, uint8_t data)

    Set the value of the given register.

    Arguments


    void is31fl3218_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

    Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3218_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3218_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

    Set the color of all LEDs (RGB driver only).

    Arguments


    void is31fl3218_set_value(int index, uint8_t value)

    Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3218_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3218_set_value_all(uint8_t value)

    Set the brightness of all LEDs (single-color driver only).

    Arguments


    void is31fl3218_set_led_control_register(uint8_t index, bool red, bool green, bool blue)

    Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3218_update_led_control_registers() after you are finished.

    Arguments


    void is31fl3218_set_led_control_register(uint8_t index, bool value)

    Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3218_update_led_control_registers() after you are finished.

    Arguments


    void is31fl3218_update_pwm_buffers(void)

    Flush the PWM values to the LED driver.


    void is31fl3218_update_led_control_registers(void)

    Flush the LED control register values to the LED driver.

    - + \ No newline at end of file diff --git a/drivers/is31fl3236.html b/drivers/is31fl3236.html index f377e35f253..d783478c7b7 100644 --- a/drivers/is31fl3236.html +++ b/drivers/is31fl3236.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -31,7 +31,7 @@ {0, OUT1}, // etc... };

    API

    struct is31fl3236_led_t

    Contains the PWM register addresses for a single RGB LED.

    Members


    void is31fl3236_init(uint8_t index)

    Initialize the LED driver. This function should be called first.

    Arguments


    void is31fl3236_write_register(uint8_t index, uint8_t reg, uint8_t data)

    Set the value of the given register.

    Arguments


    void is31fl3236_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

    Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3236_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3236_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

    Set the color of all LEDs (RGB driver only).

    Arguments


    void is31fl3236_set_value(int index, uint8_t value)

    Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3236_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3236_set_value_all(uint8_t value)

    Set the brightness of all LEDs (single-color driver only).

    Arguments


    void is31fl3236_set_led_control_register(uint8_t index, bool red, bool green, bool blue)

    Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3236_update_led_control_registers() after you are finished.

    Arguments


    void is31fl3236_set_led_control_register(uint8_t index, bool value)

    Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3236_update_led_control_registers() after you are finished.

    Arguments


    void is31fl3236_update_pwm_buffers(uint8_t index)

    Flush the PWM values to the LED driver.

    Arguments


    void is31fl3236_update_led_control_registers(uint8_t index)

    Flush the LED control register values to the LED driver.

    Arguments

    - + \ No newline at end of file diff --git a/drivers/is31fl3729.html b/drivers/is31fl3729.html index 104ae6fe033..ae6d39136cd 100644 --- a/drivers/is31fl3729.html +++ b/drivers/is31fl3729.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -32,7 +32,7 @@ {0, SW1_CS1}, // etc... };

    These values correspond to the register indices as shown in the datasheet on page 12, figure 9.

    API

    struct is31fl3729_led_t

    Contains the PWM register addresses for a single RGB LED.

    Members


    void is31fl3729_init(uint8_t index)

    Initialize the LED driver. This function should be called first.

    Arguments


    void is31fl3729_write_register(uint8_t index, uint8_t reg, uint8_t data)

    Set the value of the given register.

    Arguments


    void is31fl3729_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

    Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3729_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3729_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

    Set the color of all LEDs (RGB driver only).

    Arguments


    void is31fl3729_set_value(int index, uint8_t value)

    Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3729_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3729_set_value_all(uint8_t value)

    Set the brightness of all LEDs (single-color driver only).

    Arguments


    void is31fl3729_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)

    Configure the scaling registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3729_update_scaling_registers() after you are finished.

    Arguments


    void is31fl3729_set_scaling_register(uint8_t index, uint8_t value)

    Configure the scaling registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3729_update_scaling_registers() after you are finished.

    Arguments


    void is31fl3729_update_pwm_buffers(uint8_t index)

    Flush the PWM values to the LED driver.

    Arguments


    void is31fl3729_update_scaling_registers(uint8_t index)

    Flush the scaling register values to the LED driver.

    Arguments

    - + \ No newline at end of file diff --git a/drivers/is31fl3731.html b/drivers/is31fl3731.html index cb7e9932189..ae75ea6b02a 100644 --- a/drivers/is31fl3731.html +++ b/drivers/is31fl3731.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -31,7 +31,7 @@ {0, C1_1}, // etc... };

    These values correspond to the register indices as shown in the datasheet on page 11, figure 8.

    API

    struct is31fl3731_led_t

    Contains the PWM register addresses for a single RGB LED.

    Members


    void is31fl3731_init(uint8_t index)

    Initialize the LED driver. This function should be called first.

    Arguments


    void is31fl3731_write_register(uint8_t index, uint8_t reg, uint8_t data)

    Set the value of the given register.

    Arguments


    void is31fl3731_select_page(uint8_t index, uint8_t page)

    Change the current page for configuring the LED driver.

    Arguments


    void is31fl3731_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

    Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3731_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3731_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

    Set the color of all LEDs (RGB driver only).

    Arguments


    void is31fl3731_set_value(int index, uint8_t value)

    Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3731_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3731_set_value_all(uint8_t value)

    Set the brightness of all LEDs (single-color driver only).

    Arguments


    void is31fl3731_set_led_control_register(uint8_t index, bool red, bool green, bool blue)

    Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3731_update_led_control_registers() after you are finished.

    Arguments


    void is31fl3731_set_led_control_register(uint8_t index, bool value)

    Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3731_update_led_control_registers() after you are finished.

    Arguments


    void is31fl3731_update_pwm_buffers(uint8_t index)

    Flush the PWM values to the LED driver.

    Arguments


    void is31fl3731_update_led_control_registers(uint8_t index)

    Flush the LED control register values to the LED driver.

    Arguments

    - + \ No newline at end of file diff --git a/drivers/is31fl3733.html b/drivers/is31fl3733.html index 331cc519f22..2f719b00287 100644 --- a/drivers/is31fl3733.html +++ b/drivers/is31fl3733.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -32,7 +32,7 @@ {0, SW1_CS1}, // etc... };

    These values correspond to the register indices as shown in the datasheet on page 15, figure 9.

    API

    struct is31fl3733_led_t

    Contains the PWM register addresses for a single RGB LED.

    Members


    void is31fl3733_init(uint8_t index)

    Initialize the LED driver. This function should be called first.

    Arguments


    void is31fl3733_write_register(uint8_t index, uint8_t reg, uint8_t data)

    Set the value of the given register.

    Arguments


    void is31fl3733_select_page(uint8_t index, uint8_t page)

    Change the current page for configuring the LED driver.

    Arguments


    void is31fl3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

    Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3733_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3733_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

    Set the color of all LEDs (RGB driver only).

    Arguments


    void is31fl3733_set_value(int index, uint8_t value)

    Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3733_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3733_set_value_all(uint8_t value)

    Set the brightness of all LEDs (single-color driver only).

    Arguments


    void is31fl3733_set_led_control_register(uint8_t index, bool red, bool green, bool blue)

    Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3733_update_led_control_registers() after you are finished.

    Arguments


    void is31fl3733_set_led_control_register(uint8_t index, bool value)

    Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3733_update_led_control_registers() after you are finished.

    Arguments


    void is31fl3733_update_pwm_buffers(uint8_t index)

    Flush the PWM values to the LED driver.

    Arguments


    void is31fl3733_update_led_control_registers(uint8_t index)

    Flush the LED control register values to the LED driver.

    Arguments

    - + \ No newline at end of file diff --git a/drivers/is31fl3736.html b/drivers/is31fl3736.html index 43712908779..dc5a09a5e2b 100644 --- a/drivers/is31fl3736.html +++ b/drivers/is31fl3736.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -32,7 +32,7 @@ {0, SW1_CS1}, // etc... };

    These values correspond to the register indices as shown in the datasheet on page 16, figure 9.

    API

    struct is31fl3736_led_t

    Contains the PWM register addresses for a single RGB LED.

    Members


    void is31fl3736_init(uint8_t index)

    Initialize the LED driver. This function should be called first.

    Arguments


    void is31fl3736_write_register(uint8_t index, uint8_t reg, uint8_t data)

    Set the value of the given register.

    Arguments


    void is31fl3736_select_page(uint8_t index, uint8_t page)

    Change the current page for configuring the LED driver.

    Arguments


    void is31fl3736_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

    Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3736_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3736_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

    Set the color of all LEDs (RGB driver only).

    Arguments


    void is31fl3736_set_value(int index, uint8_t value)

    Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3736_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3736_set_value_all(uint8_t value)

    Set the brightness of all LEDs (single-color driver only).

    Arguments


    void is31fl3736_set_led_control_register(uint8_t index, bool red, bool green, bool blue)

    Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3736_update_led_control_registers() after you are finished.

    Arguments


    void is31fl3736_set_led_control_register(uint8_t index, bool value)

    Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3736_update_led_control_registers() after you are finished.

    Arguments


    void is31fl3736_update_pwm_buffers(uint8_t index)

    Flush the PWM values to the LED driver.

    Arguments


    void is31fl3736_update_led_control_registers(uint8_t index)

    Flush the LED control register values to the LED driver.

    Arguments

    - + \ No newline at end of file diff --git a/drivers/is31fl3737.html b/drivers/is31fl3737.html index 13621c98aef..c142f161699 100644 --- a/drivers/is31fl3737.html +++ b/drivers/is31fl3737.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -32,7 +32,7 @@ {0, SW1_CS1}, // etc... };

    These values correspond to the register indices as shown in the datasheet on page 15, figure 9.

    API

    struct is31fl3737_led_t

    Contains the PWM register addresses for a single RGB LED.

    Members


    void is31fl3737_init(uint8_t index)

    Initialize the LED driver. This function should be called first.

    Arguments


    void is31fl3737_write_register(uint8_t index, uint8_t reg, uint8_t data)

    Set the value of the given register.

    Arguments


    void is31fl3737_select_page(uint8_t index, uint8_t page)

    Change the current page for configuring the LED driver.

    Arguments


    void is31fl3737_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

    Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3737_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3737_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

    Set the color of all LEDs (RGB driver only).

    Arguments


    void is31fl3737_set_value(int index, uint8_t value)

    Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3737_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3737_set_value_all(uint8_t value)

    Set the brightness of all LEDs (single-color driver only).

    Arguments


    void is31fl3737_set_led_control_register(uint8_t index, bool red, bool green, bool blue)

    Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3737_update_led_control_registers() after you are finished.

    Arguments


    void is31fl3737_set_led_control_register(uint8_t index, bool value)

    Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3737_update_led_control_registers() after you are finished.

    Arguments


    void is31fl3737_update_pwm_buffers(uint8_t index)

    Flush the PWM values to the LED driver.

    Arguments


    void is31fl3737_update_led_control_registers(uint8_t index)

    Flush the LED control register values to the LED driver.

    Arguments

    - + \ No newline at end of file diff --git a/drivers/is31fl3741.html b/drivers/is31fl3741.html index 0eff149412f..4fba172287a 100644 --- a/drivers/is31fl3741.html +++ b/drivers/is31fl3741.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -32,7 +32,7 @@ {0, SW1_CS1}, // etc... };

    These values correspond to the register indices as shown in the datasheet on page 12, figure 8.

    API

    struct is31fl3741_led_t

    Contains the PWM register addresses for a single RGB LED.

    Members


    void is31fl3741_init(uint8_t index)

    Initialize the LED driver. This function should be called first.

    Arguments


    void is31fl3741_write_register(uint8_t index, uint8_t reg, uint8_t data)

    Set the value of the given register.

    Arguments


    void is31fl3741_select_page(uint8_t index, uint8_t page)

    Change the current page for configuring the LED driver.

    Arguments


    void is31fl3741_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

    Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3741_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3741_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

    Set the color of all LEDs (RGB driver only).

    Arguments


    void is31fl3741_set_value(int index, uint8_t value)

    Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3741_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3741_set_value_all(uint8_t value)

    Set the brightness of all LEDs (single-color driver only).

    Arguments


    void is31fl3741_set_led_control_register(uint8_t index, bool red, bool green, bool blue)

    Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3741_update_led_control_registers() after you are finished.

    Arguments


    void is31fl3741_set_led_control_register(uint8_t index, bool value)

    Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3741_update_led_control_registers() after you are finished.

    Arguments


    void is31fl3741_update_pwm_buffers(uint8_t index)

    Flush the PWM values to the LED driver.

    Arguments


    void is31fl3741_update_led_control_registers(uint8_t index)

    Flush the LED control register values to the LED driver.

    Arguments

    - + \ No newline at end of file diff --git a/drivers/is31fl3742a.html b/drivers/is31fl3742a.html index e4a8ddaca93..9fb37717201 100644 --- a/drivers/is31fl3742a.html +++ b/drivers/is31fl3742a.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -32,7 +32,7 @@ {0, SW1_CS1}, // etc... };

    These values correspond to the register indices as shown in the datasheet on page 12, figure 8.

    API

    struct is31fl3742a_led_t

    Contains the PWM register addresses for a single RGB LED.

    Members


    void is31fl3742a_init(uint8_t index)

    Initialize the LED driver. This function should be called first.

    Arguments


    void is31fl3742a_write_register(uint8_t index, uint8_t reg, uint8_t data)

    Set the value of the given register.

    Arguments


    void is31fl3742a_select_page(uint8_t index, uint8_t page)

    Change the current page for configuring the LED driver.

    Arguments


    void is31fl3742a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

    Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3742a_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3742a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

    Set the color of all LEDs (RGB driver only).

    Arguments


    void is31fl3742a_set_value(int index, uint8_t value)

    Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3742a_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3742a_set_value_all(uint8_t value)

    Set the brightness of all LEDs (single-color driver only).

    Arguments


    void is31fl3742a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)

    Configure the scaling registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3742a_update_scaling_registers() after you are finished.

    Arguments


    void is31fl3742a_set_scaling_register(uint8_t index, uint8_t value)

    Configure the scaling register for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3742a_update_scaling_registers() after you are finished.

    Arguments


    void is31fl3742a_update_pwm_buffers(uint8_t index)

    Flush the PWM values to the LED driver.

    Arguments


    void is31fl3742a_update_scaling_registers(uint8_t index)

    Flush the scaling register values to the LED driver.

    Arguments

    - + \ No newline at end of file diff --git a/drivers/is31fl3743a.html b/drivers/is31fl3743a.html index 58483a6b91e..78ab2b279c6 100644 --- a/drivers/is31fl3743a.html +++ b/drivers/is31fl3743a.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -32,7 +32,7 @@ {0, SW1_CS1}, // etc... };

    These values correspond to the register indices as shown in the datasheet on page 12, figure 8.

    API

    struct is31fl3743a_led_t

    Contains the PWM register addresses for a single RGB LED.

    Members


    void is31fl3743a_init(uint8_t index)

    Initialize the LED driver. This function should be called first.

    Arguments


    void is31fl3743a_write_register(uint8_t index, uint8_t reg, uint8_t data)

    Set the value of the given register.

    Arguments


    void is31fl3743a_select_page(uint8_t index, uint8_t page)

    Change the current page for configuring the LED driver.

    Arguments


    void is31fl3743a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

    Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3743a_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3743a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

    Set the color of all LEDs (RGB driver only).

    Arguments


    void is31fl3743a_set_value(int index, uint8_t value)

    Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3743a_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3743a_set_value_all(uint8_t value)

    Set the brightness of all LEDs (single-color driver only).

    Arguments


    void is31fl3743a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)

    Configure the scaling registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3743a_update_scaling_registers() after you are finished.

    Arguments


    void is31fl3743a_set_scaling_register(uint8_t index, uint8_t value)

    Configure the scaling register for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3743a_update_scaling_registers() after you are finished.

    Arguments


    void is31fl3743a_update_pwm_buffers(uint8_t index)

    Flush the PWM values to the LED driver.

    Arguments


    void is31fl3743a_update_scaling_registers(uint8_t index)

    Flush the scaling register values to the LED driver.

    Arguments

    - + \ No newline at end of file diff --git a/drivers/is31fl3745.html b/drivers/is31fl3745.html index d3c6c5cb9e3..b1f46042d01 100644 --- a/drivers/is31fl3745.html +++ b/drivers/is31fl3745.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -32,7 +32,7 @@ {0, SW1_CS1}, // etc... };

    These values correspond to the register indices as shown in the datasheet on page 12, figure 9.

    API

    struct is31fl3745_led_t

    Contains the PWM register addresses for a single RGB LED.

    Members


    void is31fl3745_init(uint8_t index)

    Initialize the LED driver. This function should be called first.

    Arguments


    void is31fl3745_write_register(uint8_t index, uint8_t reg, uint8_t data)

    Set the value of the given register.

    Arguments


    void is31fl3745_select_page(uint8_t index, uint8_t page)

    Change the current page for configuring the LED driver.

    Arguments


    void is31fl3745_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

    Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3745_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3745_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

    Set the color of all LEDs (RGB driver only).

    Arguments


    void is31fl3745_set_value(int index, uint8_t value)

    Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3745_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3745_set_value_all(uint8_t value)

    Set the brightness of all LEDs (single-color driver only).

    Arguments


    void is31fl3745_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)

    Configure the scaling registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3745_update_scaling_registers() after you are finished.

    Arguments


    void is31fl3745_set_scaling_register(uint8_t index, uint8_t value)

    Configure the scaling register for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3745_update_scaling_registers() after you are finished.

    Arguments


    void is31fl3745_update_pwm_buffers(uint8_t index)

    Flush the PWM values to the LED driver.

    Arguments


    void is31fl3745_update_scaling_registers(uint8_t index)

    Flush the scaling register values to the LED driver.

    Arguments

    - + \ No newline at end of file diff --git a/drivers/is31fl3746a.html b/drivers/is31fl3746a.html index acd53b342e7..e97eef47403 100644 --- a/drivers/is31fl3746a.html +++ b/drivers/is31fl3746a.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -32,7 +32,7 @@ {0, SW1_CS1}, // etc... };

    These values correspond to the register indices as shown in the datasheet on page 13, figure 8.

    API

    struct is31fl3746a_led_t

    Contains the PWM register addresses for a single RGB LED.

    Members


    void is31fl3746a_init(uint8_t index)

    Initialize the LED driver. This function should be called first.

    Arguments


    void is31fl3746a_write_register(uint8_t index, uint8_t reg, uint8_t data)

    Set the value of the given register.

    Arguments


    void is31fl3746a_select_page(uint8_t index, uint8_t page)

    Change the current page for configuring the LED driver.

    Arguments


    void is31fl3746a_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

    Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3746a_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3746a_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

    Set the color of all LEDs (RGB driver only).

    Arguments


    void is31fl3746a_set_value(int index, uint8_t value)

    Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3746a_update_pwm_buffers() after you are finished.

    Arguments


    void is31fl3746a_set_value_all(uint8_t value)

    Set the brightness of all LEDs (single-color driver only).

    Arguments


    void is31fl3746a_set_scaling_register(uint8_t index, uint8_t red, uint8_t green, uint8_t blue)

    Configure the scaling registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call is31fl3746a_update_scaling_registers() after you are finished.

    Arguments


    void is31fl3746a_set_scaling_register(uint8_t index, uint8_t value)

    Configure the scaling register for a single LED (single-color driver only). This function does not immediately update the LEDs; call is31fl3746a_update_scaling_registers() after you are finished.

    Arguments


    void is31fl3746a_update_pwm_buffers(uint8_t index)

    Flush the PWM values to the LED driver.

    Arguments


    void is31fl3746a_update_scaling_registers(uint8_t index)

    Flush the scaling register values to the LED driver.

    Arguments

    - + \ No newline at end of file diff --git a/drivers/serial.html b/drivers/serial.html index 838fbd5bfc1..76628e49598 100644 --- a/drivers/serial.html +++ b/drivers/serial.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -55,7 +55,7 @@ #undef STM32_SIO_USE_USARTn #define STM32_SIO_USE_USARTn TRUE

    Where 'n' matches the peripheral number of your selected USART on the MCU.

    1. In the keyboard's config.h file: override the default USART SIO driver if you use a USART peripheral that does not belong to the default selected SIOD1 driver. For instance, if you selected STM32_SERIAL_USE_USART3 the matching driver would be SIOD3.
    c
     #define SERIAL_USART_DRIVER SIOD3

    The PIO driver

    The PIO subsystem is a Raspberry Pi RP2040 specific implementation, using an integrated PIO peripheral and is therefore only available on this MCU. Because of the flexible nature of PIO peripherals, any GPIO pin can be used as a TX or RX pin. Half-duplex and Full-duplex operation modes are fully supported with this driver. Half-duplex uses the built-in pull-ups and GPIO manipulation of the RP2040 to drive the line high by default, thus an external pull-up resistor is not required.

    Optionally, the PIO peripheral utilized for split communication can be changed with the following define in config.h:

    c
    #define SERIAL_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the Serial implementation uses the PIO0 peripheral

    The Serial PIO program uses 2 state machines, 13 instructions and the complete interrupt handler of the PIO peripheral it is running on.


    Advanced Configuration

    There are several advanced configuration options that can be defined in your keyboards config.h file:

    Baudrate

    If you're having issues or need a higher baudrate with serial communication, you can change the baudrate which in turn controls the communication speed for serial. You want to lower the baudrate if you experience failed transactions.

    c
    #define SELECT_SOFT_SERIAL_SPEED {#}
    SpeedBitbangHalf-duplex and Full-duplex
    0189000 baud (experimental)460800 baud
    1137000 baud (default)230400 baud (default)
    275000 baud115200 baud
    339000 baud57600 baud
    426000 baud38400 baud
    520000 baud19200 baud

    Alternatively you can specify the baudrate directly by defining SERIAL_USART_SPEED.

    Timeout

    This is the default time window in milliseconds in which a successful communication has to complete. Usually you don't want to change this value. But you can do so anyways by defining an alternate one in your keyboards config.h file:

    c
    #define SERIAL_USART_TIMEOUT 20    // USART driver timeout. default 20

    Troubleshooting

    If you're having issues withe serial communication, you can enable debug messages that will give you insights which part of the communication failed. The enable these messages add to your keyboards config.h file:

    c
    #define SERIAL_DEBUG

    TIP

    The messages will be printed out to the CONSOLE output. For additional information, refer to Debugging/Troubleshooting QMK.

    Alternate Functions for selected STM32 MCUs

    Pins for USART Peripherals with

    STM32F303 / Proton-C Datasheet

    Pin Swap available: ✔️

    PinFunctionMode
    USART1
    PA9TXAF7
    PA10RXAF7
    PB6TXAF7
    PB7RXAF7
    PC4TXAF7
    PC5RXAF7
    PE0TXAF7
    PE1RXAF7
    USART2
    PA2TXAF7
    PA3RXAF7
    PA14TXAF7
    PA15RXAF7
    PB3TXAF7
    PB4RXAF7
    PD5TXAF7
    PD6RXAF7
    USART3
    PB10TXAF7
    PB11RXAF7
    PC10TXAF7
    PC11RXAF7
    PD8TXAF7
    PD9RXAF7

    STM32F072 Datasheet

    Pin Swap available: ✔️

    PinFunctionMode
    USART1
    PA9TXAF1
    PA10RXAF1
    PB6TXAF0
    PB7RXAF0
    USART2
    PA2TXAF1
    PA3RXAF1
    PA14TXAF1
    PA15RXAF1
    USART3
    PB10TXAF4
    PB11RXAF4
    PC4TXAF1
    PC5RXAF1
    PC10TXAF1
    PC11RXAF1
    PD8TXAF0
    PD9RXAF0
    USART4
    PA0TXAF4
    PA1RXAF4

    STM32F103 Medium Density (C8-CB) Datasheet

    Pin Swap available: N/A

    TX Pin is always Alternate Function Push-Pull, RX Pin is always regular input pin for any USART peripheral. For STM32F103 no additional Alternate Function configuration is necessary. QMK is already configured.

    Pin remapping:

    The pins of USART Peripherals use default Pins that can be remapped to use other pins using the AFIO registers. Default pins are marked bold. Add the appropriate defines to your config.h file.

    PinFunctionModeUSART_REMAP
    USART1
    PA9TXAFPP
    PA10RXIN
    PB6TXAFPPUSART1_REMAP
    PB7RXINUSART1_REMAP
    USART2
    PA2TXAFPP
    PA3RXIN
    PD5TXAFPPUSART2_REMAP
    PD6RXINUSART2_REMAP
    USART3
    PB10TXAFPP
    PB11RXIN
    PC10TXAFPPUSART3_PARTIALREMAP
    PC11RXINUSART3_PARTIALREMAP
    PD8TXAFPPUSART3_FULLREMAP
    PD9RXINUSART3_FULLREMAP
    - + \ No newline at end of file diff --git a/drivers/snled27351.html b/drivers/snled27351.html index 7b1d66d2844..af6d72d1bf6 100644 --- a/drivers/snled27351.html +++ b/drivers/snled27351.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -31,7 +31,7 @@ {0, CB1_CA1}, // etc... };

    These values correspond to the register indices as shown in the datasheet on page 13.

    API

    struct snled27351_led_t

    Contains the PWM register addresses for a single RGB LED.

    Members


    void snled27351_init(uint8_t index)

    Initialize the LED driver. This function should be called first.

    Arguments


    void snled27351_write_register(uint8_t index, uint8_t reg, uint8_t data)

    Set the value of the given register.

    Arguments


    void snled27351_select_page(uint8_t index, uint8_t page)

    Change the current page for configuring the LED driver.

    Arguments


    void snled27351_set_color(int index, uint8_t red, uint8_t green, uint8_t blue)

    Set the color of a single LED (RGB driver only). This function does not immediately update the LEDs; call snled27351_update_pwm_buffers() after you are finished.

    Arguments


    void snled27351_set_color_all(uint8_t red, uint8_t green, uint8_t blue)

    Set the color of all LEDs (RGB driver only).

    Arguments


    void snled27351_set_value(int index, uint8_t value)

    Set the brightness of a single LED (single-color driver only). This function does not immediately update the LEDs; call snled27351_update_pwm_buffers() after you are finished.

    Arguments


    void snled27351_set_value_all(uint8_t value)

    Set the brightness of all LEDs (single-color driver only).

    Arguments


    void snled27351_set_led_control_register(uint8_t index, bool red, bool green, bool blue)

    Configure the LED control registers for a single LED (RGB driver only). This function does not immediately update the LEDs; call snled27351_update_led_control_registers() after you are finished.

    Arguments


    void snled27351_set_led_control_register(uint8_t index, bool value)

    Configure the LED control registers for a single LED (single-color driver only). This function does not immediately update the LEDs; call snled27351_update_led_control_registers() after you are finished.

    Arguments


    void snled27351_update_pwm_buffers(uint8_t index)

    Flush the PWM values to the LED driver.

    Arguments


    void snled27351_update_led_control_registers(uint8_t index)

    Flush the LED control register values to the LED driver.

    Arguments

    - + \ No newline at end of file diff --git a/drivers/spi.html b/drivers/spi.html index 35428cd773d..328463c4b68 100644 --- a/drivers/spi.html +++ b/drivers/spi.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -21,7 +21,7 @@ #define SPI_USE_WAIT TRUE #define SPI_SELECT_MODE SPI_SELECT_MODE_PAD

    Then, modify your board's mcuconf.h to enable the peripheral you've chosen, for example:

    c
    #undef STM32_SPI_USE_SPI2
     #define STM32_SPI_USE_SPI2 TRUE

    Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303.

    config.h OverrideDescriptionDefault
    SPI_DRIVERSPI peripheral to use - SPI1 -> SPID1, SPI2 -> SPID2 etc.SPID2
    SPI_SCK_PINThe pin to use for SCKB13
    SPI_SCK_PAL_MODEThe alternate function mode for SCK5
    SPI_MOSI_PINThe pin to use for MOSIB15
    SPI_MOSI_PAL_MODEThe alternate function mode for MOSI5
    SPI_MISO_PINThe pin to use for MISOB14
    SPI_MISO_PAL_MODEThe alternate function mode for MISO5

    As per the AVR configuration, you may choose any other standard GPIO as a slave select pin, which should be supplied to spi_start().

    If a complete SPI interface is not required, then the following can be done to disable certain SPI pins, so they don't occupy a GPIO unnecessarily:

    API

    void spi_init(void)

    Initialize the SPI driver. This function must be called only once, before any of the below functions can be called.


    bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor)

    Start an SPI transaction.

    Arguments

    Return Value

    false if the supplied parameters are invalid or the SPI peripheral is already in use, or true.


    spi_status_t spi_write(uint8_t data)

    Write a byte to the selected SPI device.

    Arguments

    Return Value

    SPI_STATUS_TIMEOUT if the timeout period elapses, or SPI_STATUS_SUCCESS.


    spi_status_t spi_read(void)

    Read a byte from the selected SPI device.

    Return Value

    SPI_STATUS_TIMEOUT if the timeout period elapses, or the byte read from the device.


    spi_status_t spi_transmit(const uint8_t *data, uint16_t length)

    Send multiple bytes to the selected SPI device.

    Arguments

    Return Value

    SPI_STATUS_TIMEOUT if the timeout period elapses, SPI_STATUS_ERROR if some other error occurs, otherwise SPI_STATUS_SUCCESS.


    spi_status_t spi_receive(uint8_t *data, uint16_t length)

    Receive multiple bytes from the selected SPI device.

    Arguments

    Return Value

    SPI_STATUS_TIMEOUT if the timeout period elapses, SPI_STATUS_ERROR if some other error occurs, otherwise SPI_STATUS_SUCCESS.


    void spi_stop(void)

    End the current SPI transaction. This will deassert the slave select pin and reset the endianness, mode and divisor configured by spi_start().

    - + \ No newline at end of file diff --git a/drivers/uart.html b/drivers/uart.html index aaa121d7659..57a4713279f 100644 --- a/drivers/uart.html +++ b/drivers/uart.html @@ -8,18 +8,18 @@ - + - - - + + +
    Skip to content

    UART Driver

    The UART drivers used in QMK have a set of common functions to allow portability between MCUs.

    Currently, this driver does not support enabling hardware flow control (the RTS and CTS pins) if available, but may do so in future.

    Usage

    In most cases, the UART driver code is automatically included if you are using a feature or driver which requires it.

    However, if you need to use the driver standalone, add the following to your rules.mk:

    make
    UART_DRIVER_REQUIRED = yes

    You can then call the UART API by including uart.h in your code.

    AVR Configuration

    No special setup is required - just connect the RX and TX pins of your UART device to the opposite pins on the MCU:

    MCUTXRXCTSRTS
    ATmega16/32U2D3D2D7D6
    ATmega16/32U4D3D2D5B7
    AT90USB64/128D3D2n/an/a
    ATmega32AD1D0n/an/a
    ATmega328/PD1D0n/an/a

    ChibiOS/ARM Configuration

    You'll need to determine which pins can be used for UART -- as an example, STM32 parts generally have multiple UART peripherals, labeled USART1, USART2, USART3 etc.

    To enable UART, modify your board's mcuconf.h to enable the peripheral you've chosen, for example:

    c
    #undef STM32_SERIAL_USE_USART2
     #define STM32_SERIAL_USE_USART2 TRUE

    Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303.

    config.h overrideDescriptionDefault Value
    #define UART_DRIVERUSART peripheral to use - USART1 -> SD1, USART2 -> SD2 etc.SD1
    #define UART_TX_PINThe pin to use for TXA9
    #define UART_TX_PAL_MODEThe alternate function mode for TX7
    #define UART_RX_PINThe pin to use for RXA10
    #define UART_RX_PAL_MODEThe alternate function mode for RX7
    #define UART_CTS_PINThe pin to use for CTSA11
    #define UART_CTS_PAL_MODEThe alternate function mode for CTS7
    #define UART_RTS_PINThe pin to use for RTSA12
    #define UART_RTS_PAL_MODEThe alternate function mode for RTS7

    API

    void uart_init(uint32_t baud)

    Initialize the UART driver. This function must be called only once, before any of the below functions can be called.

    Arguments

    • uint32_t baud
      The baud rate to transmit and receive at. This may depend on the device you are communicating with. Common values are 1200, 2400, 4800, 9600, 19200, 38400, 57600, and 115200.

    void uart_write(uint8_t data)

    Transmit a single byte.

    Arguments

    • uint8_t data
      The byte to write.

    uint8_t uart_read(void)

    Receive a single byte.

    Return Value

    The byte read from the receive buffer. This function will block if the buffer is empty (ie. no data to read).


    void uart_transmit(const uint8_t *data, uint16_t length)

    Transmit multiple bytes.

    Arguments

    • const uint8_t *data
      A pointer to the data to write from.
    • uint16_t length
      The number of bytes to write. Take care not to overrun the length of data.

    void uart_receive(char *data, uint16_t length)

    Receive multiple bytes.

    Arguments

    • uint8_t *data
      A pointer to the buffer to read into.
    • uint16_t length
      The number of bytes to read. Take care not to overrun the length of data.

    bool uart_available(void)

    Return whether the receive buffer contains data. Call this function to determine if uart_read() will return data immediately.

    Return Value

    true if the receive buffer length is non-zero.

    - + \ No newline at end of file diff --git a/drivers/ws2812.html b/drivers/ws2812.html index f5bd8806f9c..ebebbb04058 100644 --- a/drivers/ws2812.html +++ b/drivers/ws2812.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -23,7 +23,7 @@ b -= w

    Thus, an RGB triplet of 255,255,255 will simply turn on the white LED fully (0,0,0,255).

    To enable RGBW conversion, add the following to your config.h:

    c
    #define WS2812_RGBW

    Driver Configuration

    Driver selection can be configured in rules.mk as WS2812_DRIVER, or in info.json as ws2812.driver. Valid values are bitbang (default), i2c, spi, pwm, vendor, or custom. See below for information on individual drivers.

    Bitbang Driver

    This is the default WS2812 driver. It operates by "bit-banging" ie. directly toggling the GPIO.

    Please note that on AVR devices, due to the tight timing requirements longer chains and/or heavy CPU loads may cause visible lag. Unfortunately this driver is usually the only option for AVR.

    make
    WS2812_DRIVER = bitbang

    I2C Driver

    A specialized driver mainly used for PS2AVRGB (Bootmapper Client) boards, which possess an ATtiny85 that handles the WS2812 LEDs.

    make
    WS2812_DRIVER = i2c

    The following #defines apply only to the i2c driver:

    DefineDefaultDescription
    WS2812_I2C_ADDRESS0xB0The I2C address of the ATtiny85.
    WS2812_I2C_TIMEOUT100The I2C timeout, in milliseconds.

    PIO Driver

    This driver is RP2040-only, and leverages the onboard PIO (programmable I/O) system and DMA to offload processing from the CPU.

    The WS2812 PIO program uses one state machine, six instructions and one DMA interrupt handler callback. Due to the implementation the time resolution for this driver is 50 ns - any value not specified in this interval will be rounded to the next matching interval.

    make
    WS2812_DRIVER = vendor

    PWM Driver

    This driver is ARM-only, and leverages the onboard PWM peripheral and DMA to offload processing from the CPU.

    make
    WS2812_DRIVER = pwm

    SPI Driver

    This driver is ARM-only, and leverages the onboard SPI peripheral and DMA to offload processing from the CPU. The DI pin must be connected to the MOSI pin on the MCU, and all other SPI pins must be left unused. This is also very dependent on your MCU's SPI peripheral clock speed, and may or may not be possible depending on the MCU selected.

    make
    WS2812_DRIVER = spi

    ChibiOS/ARM Configuration

    The following defines apply only to ARM devices:

    DefineDefaultDescription
    WS2812_T1L(WS2812_TIMING - WS2812_T1H)The length of a "1" bit's low phase in nanoseconds (bitbang and PIO drivers only)
    WS2812_T0L(WS2812_TIMING - WS2812_T0H)The length of a "0" bit's low phase in nanoseconds (bitbang and PIO drivers only)

    Push-Pull and Open Drain

    By default, the GPIO used for data transmission is configured as a push-pull output, meaning the pin is effectively always driven either to VCC or to ground.

    For situations where the logic level voltage is lower than the power supply voltage, however, this can pose an issue. The solution is to configure the pin for open drain mode instead, and use a pullup resistor between the DI pin and VCC. In this mode, the MCU can only pull the GPIO low, or leave it floating. The pullup resistor is then responsible for pulling the line high, when the MCU is not driving the GPIO.

    To configure the DI pin for open drain configuration, add the following to your config.h:

    c
    #define WS2812_EXTERNAL_PULLUP

    SPI Driver

    Depending on the ChibiOS board configuration, you may need to enable SPI at the keyboard level. For STM32, this would look like:

    halconf.h:

    c
    #define HAL_USE_SPI TRUE

    mcuconf.h:

    c
    #undef STM32_SPI_USE_SPI1
     #define STM32_SPI_USE_SPI1 TRUE

    The following defines apply only to the spi driver:

    DefineDefaultDescription
    WS2812_SPI_DRIVERSPID1The SPI driver to use
    WS2812_SPI_MOSI_PAL_MODE5The MOSI pin alternative function to use
    WS2812_SPI_SCK_PINNot definedThe SCK pin - required for F072 and possibly others
    WS2812_SPI_SCK_PAL_MODE5The SCK pin alternative function to use - required for F072 and possibly others
    WS2812_SPI_DIVISOR16The divisor used to adjust the baudrate
    WS2812_SPI_USE_CIRCULAR_BUFFERNot definedEnable a circular buffer for improved rendering

    Setting the Baudrate

    To adjust the SPI baudrate, you will need to derive the target baudrate from the clock tree provided by STM32CubeMX, and add the following to your config.h:

    c
    #define WS2812_SPI_DIVISOR 16

    Only divisors of 2, 4, 8, 16, 32, 64, 128 and 256 are supported on STM32 devices. Other MCUs may have similar constraints -- check the reference manual for your respective MCU for specifics.

    Circular Buffer

    A circular buffer can be enabled if you experience flickering.

    To enable the circular buffer, add the following to your config.h:

    c
    #define WS2812_SPI_USE_CIRCULAR_BUFFER

    PIO Driver

    The following #defines apply only to the PIO driver:

    DefineDefaultDescription
    WS2812_PIO_USE_PIO1Not definedUse the PIO1 peripheral instead of PIO0

    PWM Driver

    Depending on the ChibiOS board configuration, you may need to enable PWM at the keyboard level. For STM32, this would look like:

    halconf.h:

    c
    #define HAL_USE_PWM TRUE

    mcuconf.h:

    c
    #undef STM32_PWM_USE_TIM2
     #define STM32_PWM_USE_TIM2 TRUE

    The following #defines apply only to the pwm driver:

    DefineDefaultDescription
    WS2812_PWM_DRIVERPWMD2The PWM driver to use
    WS2812_PWM_CHANNEL2The PWM channel to use
    WS2812_PWM_PAL_MODE2The pin alternative function to use
    WS2812_PWM_DMA_STREAMSTM32_DMA1_STREAM2The DMA Stream for TIMx_UP
    WS2812_PWM_DMA_CHANNEL2The DMA Channel for TIMx_UP
    WS2812_PWM_DMAMUX_IDNot definedThe DMAMUX configuration for TIMx_UP - only required if your MCU has a DMAMUX peripheral
    WS2812_PWM_COMPLEMENTARY_OUTPUTNot definedWhether the PWM output is complementary (TIMx_CHyN)

    TIP

    Using a complementary timer output (TIMx_CHyN) is possible only for advanced-control timers (1, 8 and 20 on STM32), and the STM32_PWM_USE_ADVANCED option in mcuconf.h must be set to TRUE. Complementary outputs of general-purpose timers are not supported due to ChibiOS limitations.

    API

    void ws2812_setleds(rgb_led_t *ledarray, uint16_t number_of_leds)

    Send RGB data to the WS2812 LED chain.

    Arguments

    - + \ No newline at end of file diff --git a/easy_maker.html b/easy_maker.html index f8c196c11aa..e73540e6c9a 100644 --- a/easy_maker.html +++ b/easy_maker.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Easy Maker - Build One-Off Projects In Configurator

    Have you ever needed an easy way to program a controller, such as a Proton C or Teensy 2.0, for a one-off project you're building? QMK has you covered with the Easy Maker. Now you can create a firmware in minutes using QMK Configurator.

    There are different styles of Easy Maker available depending on your needs:

    • Direct Pin - Connect a single switch to a single pin
    • Direct Pin + Backlight (Coming Soon) - Like Direct Pin but dedicates a single pin to Backlight control
    • Direct Pin + Numlock (Coming Soon) - Like Direct Pin but dedicates a single pin to the Numlock LED
    • Direct Pin + Capslock (Coming Soon) - Like Direct Pin but dedicates a single pin to the Capslock LED
    • Direct Pin + Encoder (Coming Soon) - Like Direct Pin but uses 2 pins to add a single rotary encoder

    Quickstart

    The easiest way to get started is with the Direct Pin boards. This will assign a single key to each pin and you can short that pin to ground to activate it. Select your MCU from the Keyboard dropdown here:

    For more details see the Direct Pin section.

    Direct Pin

    As its name implies Direct Pin works by connecting one switch per pin. The other side of the switch should be connected to ground (VSS or GND.) You don't need any other components, your MCU has internal pull-up resistors so that the switch sensing can work.

    Here is a schematic showing how we connect a single button to pin A3 on a ProMicro:

    Schematic diagram showing a ProMicro with a wire coming out of A3, connecting to the left side of a switch. Another wire comes out of the right side of the switch to connect to the Ground Plane.

    Once you have wired your switches you can assign keycodes to each pin and build a firmware by selecting the MCU you are using from the Keyboard dropdown. Use this link to show only Easy Maker Direct Pin:

    - + \ No newline at end of file diff --git a/faq_build.html b/faq_build.html index 377e141b1af..b40183cdc5d 100644 --- a/faq_build.html +++ b/faq_build.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -25,7 +25,7 @@ $ sudo dfu-programmer atmega32u4 reset sudo udevadm trigger

    Note: With older versions of ModemManager (< 1.12), filtering only works when not in strict mode. The following commands can update that setting:

    printf '[Service]\nExecStart=\nExecStart=/usr/sbin/ModemManager --filter-policy=default' | sudo tee /etc/systemd/system/ModemManager.service.d/policy.conf
     sudo systemctl daemon-reload
     sudo systemctl restart ModemManager

    Serial device is not detected in bootloader mode on Linux

    Make sure your kernel has appropriate support for your device. If your device uses USB ACM, such as Pro Micro (Atmega32u4), make sure to include CONFIG_USB_ACM=y. Other devices may require USB_SERIAL and any of its sub options.

    Unknown Device for DFU Bootloader

    Issues encountered when flashing keyboards on Windows are most often due to having the wrong drivers installed for the bootloader, or none at all.

    Re-running the QMK installation script (./util/qmk_install.sh from the qmk_firmware directory in MSYS2 or WSL) or reinstalling the QMK Toolbox may fix the issue. Alternatively, you can download and run the qmk_driver_installer package manually.

    If that doesn't work, then you may need to download and run Zadig. See Bootloader Driver Installation with Zadig for more detailed information.

    USB VID and PID

    You can use any ID you want with editing config.h. Using any presumably unused ID will be no problem in fact except for very low chance of collision with other product.

    Most boards in QMK use 0xFEED as the vendor ID. You should look through other keyboards to make sure you pick a unique Product ID.

    Also see this. https://github.com/tmk/tmk_keyboard/issues/150

    You can buy a really unique VID:PID here. I don't think you need this for personal use.

    I just flashed my keyboard and it does nothing/keypresses don't register - it's also ARM (rev6 planck, clueboard 60, hs60v2, etc...) (Feb 2019)

    Due to how EEPROM works on ARM based chips, saved settings may no longer be valid. This affects the default layers, and may, under certain circumstances we are still figuring out, make the keyboard unusable. Resetting the EEPROM will correct this.

    Planck rev6 reset EEPROM can be used to force an eeprom reset. After flashing this image, flash your normal firmware again which should restore your keyboard to normal working order. Preonic rev3 reset EEPROM

    If bootmagic is enabled in any form, you should be able to do this too (see Bootmagic docs and keyboard info for specifics on how to do this).

    - + \ No newline at end of file diff --git a/faq_debug.html b/faq_debug.html index be88ca74a10..ee3497cc08b 100644 --- a/faq_debug.html +++ b/faq_debug.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -43,7 +43,7 @@ > matrix scan frequency: 316 > matrix scan frequency: 316

    hid_listen Can't Recognize Device

    When debug console of your device is not ready you will see like this:

    Waiting for device:.........

    Once the device is plugged in then hid_listen finds it you will get this message:

    Waiting for new device:.........................
     Listening:

    If you can't get this 'Listening:' message try building with CONSOLE_ENABLE=yes in [Makefile]

    You may need privileges to access the device an OS like Linux. Try sudo hid_listen.

    On many Linux distros you can avoid having to run hid_listen as root by creating a file called /etc/udev/rules.d/70-hid-listen.rules with the following content:

    SUBSYSTEM=="hidraw", ATTRS{idVendor}=="abcd", ATTRS{idProduct}=="def1", TAG+="uaccess", RUN{builtin}+="uaccess"

    Replace abcd and def1 with your keyboard's vendor and product id, letters must be lowercase. The RUN{builtin}+="uaccess" part is only needed for older distros.

    Can't Get Message on Console

    Check:

    - + \ No newline at end of file diff --git a/faq_general.html b/faq_general.html index 384e7862518..94f3766c984 100644 --- a/faq_general.html +++ b/faq_general.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Frequently Asked Questions

    What is QMK?

    QMK, short for Quantum Mechanical Keyboard, is a group of people building tools for custom keyboards. We started with the QMK firmware, a heavily modified fork of TMK.

    I don't know where to start!

    If this is the case, then you should start with our Newbs Guide. There is a lot of great info there, and that should cover everything you need to get started.

    If that's an issue, hop onto the QMK Configurator, as that will handle a majority of what you need there.

    How can I flash the firmware I built?

    First, head to the Compiling/Flashing FAQ Page. There is a good deal of info there, and you'll find a bunch of solutions to common issues there.

    What if I have an issue that isn't covered here?

    Okay, that's fine. Then please check the open issues in our GitHub to see if somebody is experiencing the same thing (make sure it's not just similar, but actually the same).

    If you can't find anything, then please open a new issue!

    What if I found a bug?

    Then please open an issue, and if you know how to fix it, open up a Pull Request on GitHub with the fix.

    But git and GitHub are intimidating!

    Don't worry, we have some pretty nice Guidelines on how to start using git and GitHub to make things easier to develop.

    Additionally, you can find additional git and GitHub related links here.

    I have a Keyboard that I want to add support for

    Awesome! Open up a Pull Request for it. We'll review the code, and merge it!

    What if I want to brand it with QMK?

    That's amazing! We would love to assist you with that!

    In fact, we have a whole page dedicated to adding QMK Branding to your page and keyboard. This covers pretty much everything you need (knowledge and images) to officially support QMK.

    If you have any questions about this, open an issue or head to Discord.

    What Differences Are There Between QMK and TMK?

    TMK was originally designed and implemented by Jun Wako. QMK started as Jack Humbert's fork of TMK for the Planck. After a while Jack's fork had diverged quite a bit from TMK, and in 2015 Jack decided to rename his fork to QMK.

    From a technical standpoint QMK builds upon TMK by adding several new features. Most notably QMK has expanded the number of available keycodes and uses these to implement advanced features like S(), LCTL(), and MO(). You can see a complete list of these keycodes in Keycodes.

    From a project and community management standpoint TMK maintains all the officially supported keyboards by himself, with a bit of community support. Separate community maintained forks exist or can be created for other keyboards. Only a few keymaps are provided by default, so users typically don't share keymaps with each other. QMK encourages sharing of both keyboards and keymaps through a centrally managed repository, accepting all pull requests that follow the quality standards. These are mostly community maintained, but the QMK team also helps when necessary.

    Both approaches have their merits and their drawbacks, and code flows freely between TMK and QMK when it makes sense.

    - + \ No newline at end of file diff --git a/faq_keymap.html b/faq_keymap.html index 21110f1c137..ca7d03271cc 100644 --- a/faq_keymap.html +++ b/faq_keymap.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -20,7 +20,7 @@
    Skip to content

    Keymap FAQ

    This page covers questions people often have about keymaps. If you haven't you should read Keymap Overview first.

    What Keycodes Can I Use?

    See Keycodes for an index of keycodes available to you. These link to more extensive documentation when available.

    Keycodes are actually defined in quantum/keycode.h.

    What Are the Default Keycodes?

    There are 3 standard keyboard layouts in use around the world- ANSI, ISO, and JIS. North America primarily uses ANSI, Europe and Africa primarily use ISO, and Japan uses JIS. Regions not mentioned typically use either ANSI or ISO. The keycodes corresponding to these layouts are shown here:

    Keyboard Layout Image

    How Can I Make Custom Names For Complex Keycodes?

    Sometimes, for readability's sake, it's useful to define custom names for some keycodes. People often define custom names using #define. For example:

    c
    #define FN_CAPS LT(_FL, KC_CAPS)
     #define ALT_TAB LALT(KC_TAB)

    This will allow you to use FN_CAPS and ALT_TAB in your keymap, keeping it more readable.

    My Keymap Doesn't Update When I Flash It

    This is usually due to VIA, and has to do with how it deals with keymaps.

    On first run, the VIA code in the firmware will copy the keymap from flash memory into EEPROM so that it can be rewritten at runtime by the VIA app. From this point QMK will use the keymap stored in EEPROM instead of flash, and so updates to your keymap.c will not be reflected.

    The simple fix for this is to clear the EEPROM. You can do this in several ways:

    • Hold the Bootmagic key (usually top left/Escape) while plugging the board in, which will also place the board into bootloader mode; then unplug and replug the board.
    • Press the QK_CLEAR_EEPROM/EE_CLR keycode if it is accessible on your keymap.
    • Place the board into bootloader mode and hit the "Clear EEPROM" button. This may not be available for all bootloaders, and you may need to reflash the board afterwards.

    Some Of My Keys Are Swapped Or Not Working

    QMK has a couple of features which allow you to change the behavior of your keyboard on the fly. This includes, but is not limited to, swapping Ctrl/Caps, disabling GUI, swapping Alt/GUI, swapping Backspace/Backslash, disabling all keys, and other behavioral modifications.

    Refer to the EEPROM clearing methods above, which should return those keys to normal operation. If that doesn't work, look here:

    The Menu Key Isn't Working

    The key found on most modern keyboards that is located between KC_RGUI and KC_RCTL is actually called KC_APP. This is because when the key was invented, there was already a key named "Menu" in the HID specification, so for whatever reason, Microsoft chose to create a new key and call it "Application".

    Power Keys Aren't Working

    Somewhat confusingly, there are two "Power" keycodes in QMK: KC_KB_POWER in the Keyboard/Keypad HID usage page, and KC_SYSTEM_POWER (or KC_PWR) in the Consumer page.

    The former is only recognized on macOS, while the latter, KC_SLEP and KC_WAKE are supported by all three major operating systems, so it is recommended to use those instead. Under Windows, these keys take effect immediately, however on macOS they must be held down until a dialog appears.

    One Shot Modifier

    Solves my personal 'the' problem. I often got 'the' or 'THe' wrongly instead of 'The'. One Shot Shift mitigates this for me. https://github.com/tmk/tmk_keyboard/issues/67

    Modifier/Layer Stuck

    Modifier keys or layers can be stuck unless layer switching is configured properly. For Modifier keys and layer actions you have to place KC_TRNS on same position of destination layer to unregister the modifier key or return to previous layer on release event.

    Mechanical Lock Switch Support

    This feature is for mechanical lock switch like this Alps one. You can enable it by adding this to your config.h:

    c
    #define LOCKING_SUPPORT_ENABLE
     #define LOCKING_RESYNC_ENABLE

    After enabling this feature use keycodes KC_LCAP, KC_LNUM and KC_LSCR in your keymap instead.

    Old vintage mechanical keyboards occasionally have lock switches but modern ones don't have. You don't need this feature in most case and just use keycodes KC_CAPS, KC_NUM and KC_SCRL.

    Input Special Characters Other Than ASCII like Cédille 'Ç'

    See the Unicode feature.

    Fn Key on macOS

    Unlike most Fn keys, the one on Apple keyboards actually has its own keycode... sort of. It takes the place of the sixth keycode in a basic 6KRO HID report -- so an Apple keyboard is in fact only 5KRO.

    It is technically possible to get QMK to send this key. However, doing so requires modification of the report format to add the state of the Fn key. Even worse, it is not recognized unless the keyboard's VID and PID match that of a real Apple keyboard. The legal issues that official QMK support for this feature may create mean it is unlikely to happen.

    See this issue for detailed information.

    Keys Supported in Mac OSX?

    You can know which keycodes are supported in OSX from this source code.

    usb_2_adb_keymap array maps Keyboard/Keypad Page usages to ADB scancodes(OSX internal keycodes).

    https://opensource.apple.com/source/IOHIDFamily/IOHIDFamily-606.1.7/IOHIDFamily/Cosmo_USB2ADB.c

    And IOHIDConsumer::dispatchConsumerEvent handles Consumer page usages.

    https://opensource.apple.com/source/IOHIDFamily/IOHIDFamily-606.1.7/IOHIDFamily/IOHIDConsumer.cpp

    JIS Keys in Mac OSX

    Japanese JIS keyboard specific keys like 無変換(Muhenkan), 変換(Henkan), ひらがな(hiragana) are not recognized on OSX. You can use Seil to enable those keys, try following options.

    • Enable NFER Key on PC keyboard
    • Enable XFER Key on PC keyboard
    • Enable KATAKANA Key on PC keyboard

    https://pqrs.org/osx/karabiner/seil.html

    RN-42 Bluetooth Doesn't Work with Karabiner

    Karabiner - Keymapping tool on Mac OSX - ignores inputs from RN-42 module by default. You have to enable this option to make Karabiner working with your keyboard. https://github.com/tekezo/Karabiner/issues/403#issuecomment-102559237

    See these for the detail of this problem. https://github.com/tmk/tmk_keyboard/issues/213https://github.com/tekezo/Karabiner/issues/403

    Esc and ` on a Single Key

    See the Grave Escape feature.

    Eject on Mac OSX

    KC_EJCT keycode works on OSX. https://github.com/tmk/tmk_keyboard/issues/250 It seems Windows 10 ignores the code and Linux/Xorg recognizes but has no mapping by default.

    Not sure what keycode Eject is on genuine Apple keyboard actually. HHKB uses F20 for Eject key(Fn+F) on Mac mode but this is not same as Apple Eject keycode probably.

    What are "Real" and "Weak" modifiers?

    Real modifiers refer to the state of the real/physical modifier keys, while weak modifiers are the state of "virtual" or temporary modifiers which should not interfere with the internal state of the real modifier keys.

    The real and weak modifier states are ORed together when the keyboard report is sent, so if you release a weak modifier while the same real modifier is still held, the report does not change:

    1. Hold down physical Left Shift: Real mods now contains Left Shift, final state is Left Shift
    2. Add weak Left Shift: Weak mods now contains Left Shift, final state is Left Shift
    3. Remove weak Left Shift: Weak mods now contains nothing, final state is Left Shift
    4. Release physical Left Shift: Real mods now contains nothing, final state is nothing
    - + \ No newline at end of file diff --git a/faq_misc.html b/faq_misc.html index 2f66490aa8e..7ecaf6b2834 100644 --- a/faq_misc.html +++ b/faq_misc.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -23,7 +23,7 @@ Size after: text data bss dec hex filename 0 22396 0 22396 577c planck_rev4_cbbrowne.hex

    NKRO Doesn't work

    First you have to compile firmware with the build option NKRO_ENABLE in Makefile.

    Try Magic N command(LShift+RShift+N by default) when NKRO still doesn't work. You can use this command to toggle between NKRO and 6KRO mode temporarily. In some situations NKRO doesn't work and you will need to switch to 6KRO mode, in particular when you are in BIOS.

    TrackPoint Needs Reset Circuit (PS/2 Mouse Support)

    Without reset circuit you will have inconsistent result due to improper initialization of the hardware. See circuit schematic of TPM754:

    Can't Read Column of Matrix Beyond 16

    Use 1UL<<16 instead of 1<<16 in read_cols() in [matrix.h] when your columns goes beyond 16.

    In C 1 means one of [int] type which is [16 bit] in case of AVR, so you can't shift left more than 15. Thus, calculating 1<<16 will unexpectedly equal zero. To work around this, you have to use [unsigned long] type with 1UL.

    https://deskthority.net/workshop-f7/rebuilding-and-redesigning-a-classic-thinkpad-keyboard-t6181-60.html#p146279

    Special Extra Key Doesn't Work (System, Audio Control Keys)

    You need to define EXTRAKEY_ENABLE in rules.mk to use them in QMK.

    EXTRAKEY_ENABLE = yes          # Audio control and System control

    Wake from Sleep Doesn't Work

    In Windows check Allow this device to wake the computer setting in Power Management property tab of Device Manager. Also check your BIOS settings. Pressing any key during sleep should wake host.

    Using Arduino?

    Note that Arduino pin naming is different from actual chip. For example, Arduino pin D0 is not PD0. Check circuit with its schematics yourself.

    Arduino Leonardo and micro have ATMega32U4 and can be used for TMK, though Arduino bootloader may be a problem.

    Enabling JTAG

    By default, the JTAG debugging interface is disabled as soon as the keyboard starts up. JTAG-capable MCUs come from the factory with the JTAGEN fuse set, and it takes over certain pins of the MCU that the board may be using for the switch matrix, LEDs, etc.

    If you would like to keep JTAG enabled, just add the following to your config.h:

    c
    #define NO_JTAG_DISABLE

    USB 3 Compatibility

    Some problems can be fixed by switching from a USB 3.x port to a USB 2.0 port.

    Mac Compatibility

    OS X 10.11 and Hub

    See here: https://geekhack.org/index.php?topic=14290.msg1884034#msg1884034

    Problem in BIOS (UEFI) Setup/Resume (Sleep & Wake)/Power Cycles

    Some people reported their keyboard stops working in BIOS and/or after resume(power cycles).

    As of now the root cause is not clear, but some build options seem to be related. In Makefile, try to disable options like CONSOLE_ENABLE, NKRO_ENABLE, SLEEP_LED_ENABLE and/or others.

    More info:

    - + \ No newline at end of file diff --git a/feature_advanced_keycodes.html b/feature_advanced_keycodes.html index 9a246797d96..d5f37fd4f8a 100644 --- a/feature_advanced_keycodes.html +++ b/feature_advanced_keycodes.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -80,7 +80,7 @@ } return true; };

    Alternatively, this can be done with Key Overrides.

    Advanced topics

    This page used to encompass a large set of features. We have moved many sections that used to be part of this page to their own pages. Everything below this point is simply a redirect so that people following old links on the web find what they're looking for.

    Layers

    Mod-Tap

    One Shot Keys

    Tap-Hold Configuration Options

    Key Overrides

    - + \ No newline at end of file diff --git a/feature_converters.html b/feature_converters.html index dd80bb324c4..ad7b084e04b 100644 --- a/feature_converters.html +++ b/feature_converters.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -24,7 +24,7 @@ #endif

    Pin Compatibility

    To ensure compatibility, provide validation, and enable future workflows, a keyboard should declare its pin compatibility. For legacy reasons, this is currently assumed to be promicro. The following pin compatibility interfaces are currently defined:

    Pin CompatibilityNotes
    promicroIncludes RX/TX LEDs
    elite_cIncludes bottom row pins, no LEDs

    To declare the base for conversions, add this line to your keyboard's rules.mk:

    makefile
    PIN_COMPATIBLE = elite_c

    Pro Micro

    If a board currently supported in QMK uses a Pro Micro (or compatible board), the supported alternative controllers are:

    DeviceTarget
    Proton Cproton_c
    Adafruit KB2040kb2040
    SparkFun Pro Micro - RP2040sparkfun_pm2040
    Blokblok
    Bit-C PRObit_c_pro
    STeMCellstemcell
    customMK Bonsai C4bonsai_c4
    Elite-Pielite_pi
    0xCB Helioshelios
    Liatrisliatris
    Imeraimera
    Michimichi

    Converter summary:

    TargetArgumentrules.mkCondition
    proton_c-e CONVERT_TO=proton_cCONVERT_TO=proton_c#ifdef CONVERT_TO_PROTON_C
    kb2040-e CONVERT_TO=kb2040CONVERT_TO=kb2040#ifdef CONVERT_TO_KB2040
    sparkfun_pm2040-e CONVERT_TO=sparkfun_pm2040CONVERT_TO=sparkfun_pm2040#ifdef CONVERT_TO_SPARKFUN_PM2040
    blok-e CONVERT_TO=blokCONVERT_TO=blok#ifdef CONVERT_TO_BLOK
    bit_c_pro-e CONVERT_TO=bit_c_proCONVERT_TO=bit_c_pro#ifdef CONVERT_TO_BIT_C_PRO
    stemcell-e CONVERT_TO=stemcellCONVERT_TO=stemcell#ifdef CONVERT_TO_STEMCELL
    bonsai_c4-e CONVERT_TO=bonsai_c4CONVERT_TO=bonsai_c4#ifdef CONVERT_TO_BONSAI_C4
    rp2040_ce-e CONVERT_TO=rp2040_ceCONVERT_TO=rp2040_ce#ifdef CONVERT_TO_RP2040_CE
    elite_pi-e CONVERT_TO=elite_piCONVERT_TO=elite_pi#ifdef CONVERT_TO_ELITE_PI
    helios-e CONVERT_TO=heliosCONVERT_TO=helios#ifdef CONVERT_TO_HELIOS
    liatris-e CONVERT_TO=liatrisCONVERT_TO=liatris#ifdef CONVERT_TO_LIATRIS
    imera-e CONVERT_TO=imeraCONVERT_TO=imera#ifdef CONVERT_TO_IMERA
    michi-e CONVERT_TO=michiCONVERT_TO=michi#ifdef CONVERT_TO_MICHI

    Proton C

    The Proton C only has one on-board LED (C13), and by default, the TXLED (D5) is mapped to it. If you want the RXLED (B0) mapped to it instead, add this line to your config.h:

    c
    #define CONVERT_TO_PROTON_C_RXLED

    The following defaults are based on what has been implemented for STM32 boards.

    FeatureNotes
    AudioEnabled
    RGB LightingDisabled
    BacklightForces task driven PWM until ARM can provide automatic configuration
    USB Host (e.g. USB-USB converter)Not supported (USB host code is AVR specific and is not currently supported on ARM)
    Split keyboardsPartial - heavily dependent on enabled features

    Adafruit KB2040

    The following defaults are based on what has been implemented for RP2040 boards.

    FeatureNotes
    RGB LightingEnabled via PIO vendor driver
    BacklightForces task driven PWM until ARM can provide automatic configuration
    USB Host (e.g. USB-USB converter)Not supported (USB host code is AVR specific and is not currently supported on ARM)
    Split keyboardsPartial via PIO vendor driver - heavily dependent on enabled features

    SparkFun Pro Micro - RP2040, Blok, Bit-C PRO and Michi

    Feature set is identical to Adafruit KB2040.

    STeMCell

    Feature set currently identical to Proton C. There are two versions of STeMCell available, with different pinouts:

    STeMCell has support to swap UART and I2C pins to enable single-wire uart communication in STM chips. The following additional flags has to be used while compiling, based on the pin used for split communication:

    Split PinCompile flags
    D3-e STMC_US=yes
    D2Not needed
    D1-e STMC_IS=yes
    D0Not needed

    Bonsai C4

    The Bonsai C4 only has one on-board LED (B2), and by default, both the Pro Micro TXLED (D5) and RXLED (B0) are mapped to it. If you want only one of them mapped, you can undefine one and redefine it to another pin by adding these line to your config.h:

    c
    #undef B0
     // If VBUS detection is unused, we can send RXLED to the Vbus detect pin instead
     #define B0 PAL_LINE(GPIOA, 9)

    RP2040 Community Edition - Elite-Pi, Helios, and Liatris

    Feature set is identical to Adafruit KB2040. VBUS detection is enabled by default for superior split keyboard support. For more information, refer to the Community Edition pinout docs.

    Elite-C

    If a board currently supported in QMK uses an Elite-C, the supported alternative controllers are:

    DeviceTarget
    STeMCellstemcell
    Elite-Pielite_pi
    0xCB Helioshelios
    Liatrisliatris

    Converter summary:

    TargetArgumentrules.mkCondition
    stemcell-e CONVERT_TO=stemcellCONVERT_TO=stemcell#ifdef CONVERT_TO_STEMCELL
    rp2040_ce-e CONVERT_TO=rp2040_ceCONVERT_TO=rp2040_ce#ifdef CONVERT_TO_RP2040_CE
    elite_pi-e CONVERT_TO=elite_piCONVERT_TO=elite_pi#ifdef CONVERT_TO_ELITE_PI
    helios-e CONVERT_TO=heliosCONVERT_TO=helios#ifdef CONVERT_TO_HELIOS
    liatris-e CONVERT_TO=liatrisCONVERT_TO=liatris#ifdef CONVERT_TO_LIATRIS

    STeMCell {#stemcell}_elite

    Identical to Pro Micro - STeMCell with support for the additional bottom row of pins.

    RP2040 Community Edition

    Identical to Pro Micro - RP2040 Community Edition with support for the additional bottom row of pins.

    - + \ No newline at end of file diff --git a/feature_debounce_type.html b/feature_debounce_type.html index c9f3297ef22..cff2e5c73a4 100644 --- a/feature_debounce_type.html +++ b/feature_debounce_type.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -28,7 +28,7 @@ | | | | +-----------------+ +--------------------

    Many debounce methods (but not all) will also make the device resistant to noise. If you are working with a technology that is susceptible to noise, you must choose a debounce method that will also mitigate noise for you.

    Types of debounce algorithms

    1. Unit of time: Timestamp (milliseconds) vs Cycles (scans)

    2. Symmetric vs Asymmetric

    3. Eager vs Defer

    4. Global vs Per-Key vs Per-Row

    Supported Debounce Algorithms

    QMK supports multiple algorithms through its debounce API.

    Debounce Time

    Default debounce time is 5 milliseconds and it can be changed with the following line in config.h:

    #define DEBOUNCE 10

    TIP

    Setting DEBOUNCE to 0 will disable this feature.

    Debounce Method

    Keyboards may select one of the core debounce methods by adding the following line into rules.mk:

    DEBOUNCE_TYPE = <name of algorithm>

    Name of algorithm is one of:

    AlgorithmDescription
    sym_defer_gDebouncing per keyboard. On any state change, a global timer is set. When DEBOUNCE milliseconds of no changes has occurred, all input changes are pushed. This is the highest performance algorithm with lowest memory usage and is noise-resistant.
    sym_defer_prDebouncing per row. On any state change, a per-row timer is set. When DEBOUNCE milliseconds of no changes have occurred on that row, the entire row is pushed. This can improve responsiveness over sym_defer_g while being less susceptible to noise than per-key algorithm.
    sym_defer_pkDebouncing per key. On any state change, a per-key timer is set. When DEBOUNCE milliseconds of no changes have occurred on that key, the key status change is pushed.
    sym_eager_prDebouncing per row. On any state change, response is immediate, followed by DEBOUNCE milliseconds of no further input for that row.
    sym_eager_pkDebouncing per key. On any state change, response is immediate, followed by DEBOUNCE milliseconds of no further input for that key.
    asym_eager_defer_pkDebouncing per key. On a key-down state change, response is immediate, followed by DEBOUNCE milliseconds of no further input for that key. On a key-up state change, a per-key timer is set. When DEBOUNCE milliseconds of no changes have occurred on that key, the key-up status change is pushed.

    TIP

    sym_defer_g is the default if DEBOUNCE_TYPE is undefined.

    TIP

    sym_eager_pr is suitable for use in keyboards where refreshing NUM_KEYS 8-bit counters is computationally expensive or has low scan rate while fingers usually hit one row at a time. This could be appropriate for the ErgoDox models where the matrix is rotated 90°. Hence its "rows" are really columns and each finger only hits a single "row" at a time with normal usage.

    Implementing your own debouncing code

    You have the option to implement you own debouncing algorithm with the following steps:

    - + \ No newline at end of file diff --git a/feature_eeprom.html b/feature_eeprom.html index 43525197684..98884594c5c 100644 --- a/feature_eeprom.html +++ b/feature_eeprom.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -101,7 +101,7 @@ rgblight_sethsv(HSV_CYAN); // Set it to CYAN by default rgblight_mode(1); // set to solid by default }

    And you're done. The RGB layer indication will only work if you want it to. And it will be saved, even after unplugging the board. And if you use any of the RGB codes, it will disable the layer indication, so that it stays on the mode and color that you set it to.

    'EECONFIG' Function Documentation

    The val is the value of the data that you want to write to EEPROM. And the eeconfig_read_* function return a 32 bit (DWORD) value from the EEPROM.

    - + \ No newline at end of file diff --git a/feature_layers.html b/feature_layers.html index 3a6630f3aaf..a761b7c4cbe 100644 --- a/feature_layers.html +++ b/feature_layers.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -77,7 +77,7 @@ } // Place `KC_CYCLE_LAYERS` as a keycode in your keymap

    Use the IS_LAYER_ON_STATE(state, layer) and IS_LAYER_OFF_STATE(state, layer) macros to check the status of a particular layer.

    Outside of layer_state_set_* functions, you can use the IS_LAYER_ON(layer) and IS_LAYER_OFF(layer) macros to check global layer state.

    layer_state_set_* Function Documentation

    The state is the bitmask of the active layers, as explained in the Keymap Overview

    - + \ No newline at end of file diff --git a/feature_layouts.html b/feature_layouts.html index a3d01ae657e..5b40b782a3d 100644 --- a/feature_layouts.html +++ b/feature_layouts.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -48,7 +48,7 @@ planck_rev4_function(); #endif #endif

    Note that the names are lowercase and match the folder/file names for the keyboard/revision exactly.

    Keymaps

    In order to support both split and non-split keyboards with the same layout, you need to use the keyboard agnostic LAYOUT_<layout name> macro in your keymap. For instance, in order for a Let's Split and Planck to share the same layout file, you need to use LAYOUT_ortho_4x12 instead of LAYOUT_planck_grid or just {} for a C array.

    - + \ No newline at end of file diff --git a/feature_macros.html b/feature_macros.html index a5d96a89a61..8d336d82809 100644 --- a/feature_macros.html +++ b/feature_macros.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -187,7 +187,7 @@ } } } - + \ No newline at end of file diff --git a/feature_userspace.html b/feature_userspace.html index 432ce4b7715..b47340e2dd3 100644 --- a/feature_userspace.html +++ b/feature_userspace.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -111,7 +111,7 @@ }

    For boards that may not have a shift button (such as on a macro pad), we need a way to always include the bootloader option. To do that, add the following to the rules.mk in your userspace folder:

    make
    ifeq ($(strip $(FLASH_BOOTLOADER)), yes)
         OPT_DEFS += -DFLASH_BOOTLOADER
     endif

    This will add a new KC_MAKE keycode that can be used in any of your keymaps. And this keycode will output make <keyboard>:<keymap>, making frequent compiling easier. And this will work with any keyboard and any keymap as it will output the current boards info, so that you don't have to type this out every time.

    Also, holding Shift will add the flash target (:flash) to the command. Holding Control will add some commands that will speed up compiling time by processing multiple files at once.

    And for the boards that lack a shift key, or that you want to always attempt the flashing part, you can add FLASH_BOOTLOADER = yes to the rules.mk of that keymap.

    TIP

    This should flash the newly compiled firmware automatically, using the correct utility, based on the bootloader settings (or default to just generating the HEX file). However, it should be noted that this may not work on all systems. AVRDUDE doesn't work on WSL, namely.

    - + \ No newline at end of file diff --git a/features/audio.html b/features/audio.html index 1092d2d9822..42150ef0a12 100644 --- a/features/audio.html +++ b/features/audio.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -49,7 +49,7 @@ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 );

    You will want to use whichever LAYOUT macro that your keyboard uses here. This maps it to the correct key location. Start in the bottom left of the keyboard layout, and move to the right, and then upwards. Fill in all the entries until you have a complete matrix.

    You can look at the Planck Keyboard as an example of how to implement this.

    Audio Click

    This adds a click sound each time you hit a button, to simulate click sounds from the keyboard. And the sounds are slightly different for each keypress, so it doesn't sound like a single long note, if you type rapidly.

    Keycodes available:

    KeyAliasesDescription
    QK_AUDIO_CLICKY_TOGGLECK_TOGGToggles Audio clicky mode
    QK_AUDIO_CLICKY_ONCK_ONTurns on Audio clicky mode
    QK_AUDIO_CLICKY_OFFCK_OFFTurns on Audio clicky mode
    QK_AUDIO_CLICKY_UPCK_UPIncreases frequency of the clicks
    QK_AUDIO_CLICKY_DOWNCK_DOWNDecreases frequency of the clicks
    QK_AUDIO_CLICKY_RESETCK_RSTResets frequency to default

    The feature is disabled by default, to save space. To enable it, add this to your config.h:

    c
    #define AUDIO_CLICKY

    You can configure the default, min and max frequencies, the stepping and built in randomness by defining these values:

    OptionDefault ValueDescription
    AUDIO_CLICKY_FREQ_DEFAULT440.0fSets the default/starting audio frequency for the clicky sounds.
    AUDIO_CLICKY_FREQ_MIN65.0fSets the lowest frequency (under 60f are a bit buggy).
    AUDIO_CLICKY_FREQ_MAX1500.0fSets the highest frequency. Too high may result in coworkers attacking you.
    AUDIO_CLICKY_FREQ_FACTOR1.18921fSets the stepping of UP/DOWN key codes. This is a multiplicative factor. The default steps the frequency up/down by a musical minor third.
    AUDIO_CLICKY_FREQ_RANDOMNESS0.05fSets a factor of randomness for the clicks, Setting this to 0f will make each click identical, and 1.0f will make this sound much like the 90's computer screen scrolling/typing effect.
    AUDIO_CLICKY_DELAY_DURATION1An integer note duration where 1 is 1/16th of the tempo, or a sixty-fourth note (see quantum/audio/musical_notes.h for implementation details). The main clicky effect will be delayed by this duration. Adjusting this to values around 6-12 will help compensate for loud switches.

    MIDI Functionality

    See MIDI

    Audio Keycodes

    KeyAliasesDescription
    QK_AUDIO_ONAU_ONTurns on Audio Feature
    QK_AUDIO_OFFAU_OFFTurns off Audio Feature
    QK_AUDIO_TOGGLEAU_TOGGToggles Audio state
    QK_AUDIO_CLICKY_TOGGLECK_TOGGToggles Audio clicky mode
    QK_AUDIO_CLICKY_ONCK_ONTurns on Audio clicky mode
    QK_AUDIO_CLICKY_OFFCK_OFFTurns on Audio clicky mode
    QK_AUDIO_CLICKY_UPCK_UPIncreases frequency of the clicks
    QK_AUDIO_CLICKY_DOWNCK_DOWNDecreases frequency of the clicks
    QK_AUDIO_CLICKY_RESETCK_RSTResets frequency to default
    QK_MUSIC_ONMU_ONTurns on Music Mode
    QK_MUSIC_OFFMU_OFFTurns off Music Mode
    QK_MUSIC_TOGGLEMU_TOGGToggles Music Mode
    QK_MUSIC_MODE_NEXTMU_NEXTCycles through the music modes
    QK_AUDIO_VOICE_NEXTAU_NEXTCycles through the audio voices
    QK_AUDIO_VOICE_PREVIOUSAU_PREVCycles through the audio voices in reverse
    - + \ No newline at end of file diff --git a/features/auto_shift.html b/features/auto_shift.html index c674667d989..63b04ca0e3a 100644 --- a/features/auto_shift.html +++ b/features/auto_shift.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -109,7 +109,7 @@ [PRESS AS_RPT] 115

    The keyboard typed 115 which represents your current AUTO_SHIFT_TIMEOUT value. You are now set! Practice on the D key a little bit that showed up in the testing and you'll be golden.

    - + \ No newline at end of file diff --git a/features/autocorrect.html b/features/autocorrect.html index c8e1a91c635..bb7ec6cd57f 100644 --- a/features/autocorrect.html +++ b/features/autocorrect.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -135,7 +135,7 @@ +-------+-------+-------+-------+-------+

    If we were to encode this chain using the same format used for branching nodes, we would encode a 16-bit node link with every node, costing 8 more bytes in this example. Across the whole trie, this adds up. Conveniently, we can point to intermediate points in the chain and interpret the bytes in the same way as before. E.g. starting at the i instead of the l, and the subchain has the same format.

    Leaf node. A leaf node corresponds to a particular typo and stores data to correct the typo. The leaf begins with a byte for the number of backspaces to type, and is followed by a null-terminated ASCII string of the replacement text. The idea is, after tapping backspace the indicated number of times, we can simply pass this string to the send_string_P function. For fitler, we need to tap backspace 3 times (not 4, because we catch the typo as the final ‘r’ is pressed) and replace it with lter. To identify the node as a leaf, the two high bits are set to 10 by ORing the backspace count with 128:

    +-------+-------+-------+-------+-------+-------+
     | 3|128 |  'l'  |  't'  |  'e'  |  'r'  |   0   |
     +-------+-------+-------+-------+-------+-------+

    Decoding

    This format is by design decodable with fairly simple logic. A 16-bit variable state represents our current position in the trie, initialized with 0 to start at the root node. Then, for each keycode, test the highest two bits in the byte at state to identify the kind of node.

    Credits

    Credit goes to getreuer for originally implementing this here. As well as to filterpaper for converting the code to use PROGMEM, and additional improvements.

    - + \ No newline at end of file diff --git a/features/backlight.html b/features/backlight.html index 92a49702fe9..e4e4b3758fa 100644 --- a/features/backlight.html +++ b/features/backlight.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -33,7 +33,7 @@ }

    AVR Configuration

    PWM Driver

    The following table describes the supported pins for the PWM driver. Only cells marked with a timer number are capable of hardware PWM output; any others must use the timer driver.

    Backlight PinAT90USB64/128AT90USB162ATmega16/32U4ATmega16/32U2ATmega32AATmega328/P
    B1Timer 1
    B2Timer 1
    B5Timer 1Timer 1
    B6Timer 1Timer 1
    B7Timer 1Timer 1Timer 1Timer 1
    C4Timer 3
    C5Timer 3Timer 1Timer 1
    C6Timer 3Timer 1Timer 3Timer 1
    D4Timer 1
    D5Timer 1

    Timer Driver

    Any GPIO pin can be used with this driver. The following table describes the supported timers:

    AT90USB64/128AT90USB162ATmega16/32U4ATmega16/32U2ATmega32AATmega328/P
    Timers 1 & 3Timer 1Timers 1 & 3Timer 1Timer 1Timer 1

    The following #defines apply only to the timer driver:

    DefineDefaultDescription
    BACKLIGHT_PWM_TIMER1The timer to use

    Note that the choice of timer may conflict with the Audio feature.

    ChibiOS/ARM Configuration

    PWM Driver

    Depending on the ChibiOS board configuration, you may need to enable PWM at the keyboard level. For STM32, this would look like:

    halconf.h:

    c
    #define HAL_USE_PWM TRUE

    mcuconf.h:

    c
    #undef STM32_PWM_USE_TIM4
     #define STM32_PWM_USE_TIM4 TRUE

    The following #defines apply only to the pwm driver:

    DefineDefaultDescription
    BACKLIGHT_PWM_DRIVERPWMD4The PWM driver to use
    BACKLIGHT_PWM_CHANNEL3The PWM channel to use
    BACKLIGHT_PAL_MODE2The pin alternative function to use
    BACKLIGHT_PWM_PERIODNot definedThe PWM period in counter ticks - Default is platform dependent

    Refer to the ST datasheet for your particular MCU to determine these values. For example, these defaults are set up for pin B8 on a Proton-C (STM32F303) using TIM4_CH3 on AF2. Unless you are designing your own keyboard, you generally should not need to change them.

    Timer Driver

    Depending on the ChibiOS board configuration, you may need to enable general-purpose timers at the keyboard level. For STM32, this would look like:

    halconf.h:

    c
    #define HAL_USE_GPT TRUE

    mcuconf.h:

    c
    #undef STM32_GPT_USE_TIM15
     #define STM32_GPT_USE_TIM15 TRUE

    The following #defines apply only to the timer driver:

    DefineDefaultDescription
    BACKLIGHT_GPT_DRIVERGPTD15The timer to use

    Example Schematic

    Since the MCU can only supply so much current to its GPIO pins, instead of powering the backlight directly from the MCU, the backlight pin is connected to a transistor or MOSFET that switches the power to the LEDs.

    In this typical example, the backlight LEDs are all connected in parallel towards an N-channel MOSFET. Its gate pin is wired to one of the microcontroller's GPIO pins through a 470Ω resistor to avoid ringing. A pulldown resistor is also placed between the gate pin and ground to keep it at a defined state when it is not otherwise being driven by the MCU. The values of these resistors are not critical - see this Electronics StackExchange question for more information.

    Backlight example circuit

    API

    void backlight_toggle(void)

    Toggle the backlight on or off.


    void backlight_enable(void)

    Turn the backlight on.


    void backlight_disable(void)

    Turn the backlight off.


    void backlight_step(void)

    Cycle through backlight levels.


    void backlight_increase(void)

    Increase the backlight level.


    void backlight_decrease(void)

    Decrease the backlight level.


    void backlight_level(uint8_t level)

    Set the backlight level.

    Arguments


    uint8_t get_backlight_level(void)

    Get the current backlight level.

    Return Value

    The current backlight level, from 0 to BACKLIGHT_LEVELS.


    bool is_backlight_enabled(void)

    Get the current backlight state.

    Return Value

    true if the backlight is enabled.


    void backlight_toggle_breathing(void)

    Toggle backlight breathing on or off.


    void backlight_enable_breathing(void)

    Turn backlight breathing on.


    void backlight_disable_breathing(void)

    Turn backlight breathing off.


    bool is_backlight_breathing(void)

    Get the current backlight breathing state.

    Return Value

    true if backlight breathing is enabled.

    - + \ No newline at end of file diff --git a/features/bluetooth.html b/features/bluetooth.html index d6c72d5bd57..184212b1cbc 100644 --- a/features/bluetooth.html +++ b/features/bluetooth.html @@ -8,18 +8,18 @@ - + - - - + + +
    Skip to content

    Bluetooth

    Bluetooth Known Supported Hardware

    Currently Bluetooth support is limited to AVR based chips. For Bluetooth 2.1, QMK has support for RN-42 modules. For more recent BLE protocols, currently only the Adafruit Bluefruit SPI Friend is directly supported. BLE is needed to connect to iOS devices. Note iOS does not support mouse input.

    BoardBluetooth ProtocolConnection Typerules.mkBluetooth Chip
    Roving Networks RN-42 (Sparkfun Bluesmirf)Bluetooth ClassicUARTBLUETOOTH_DRIVER = rn42RN-42
    Bluefruit LE SPI FriendBluetooth Low EnergySPIBLUETOOTH_DRIVER = bluefruit_lenRF51822

    Not Supported Yet but possible:

    Adafruit BLE SPI Friend

    Currently The only bluetooth chipset supported by QMK is the Adafruit Bluefruit SPI Friend. It's a Nordic nRF51822 based chip running Adafruit's custom firmware. Data is transmitted via Adafruit's SDEP over Hardware SPI. The Feather 32u4 Bluefruit LE is supported as it's an AVR mcu connected via SPI to the Nordic BLE chip with Adafruit firmware. If Building a custom board with the SPI friend it would be easiest to just use the pin selection that the 32u4 feather uses but you can change the pins in the config.h options with the following defines:

    • #define BLUEFRUIT_LE_RST_PIN D4
    • #define BLUEFRUIT_LE_CS_PIN B4
    • #define BLUEFRUIT_LE_IRQ_PIN E6

    A Bluefruit UART friend can be converted to an SPI friend, however this requires some reflashing and soldering directly to the MDBT40 chip.

    Bluetooth Rules.mk Options

    The currently supported Bluetooth chipsets do not support N-Key Rollover (NKRO), so rules.mk must contain NKRO_ENABLE = no.

    Add the following to your rules.mk:

    make
    BLUETOOTH_ENABLE = yes
     BLUETOOTH_DRIVER = bluefruit_le # or rn42

    Bluetooth Keycodes

    This is used when multiple keyboard outputs can be selected. Currently this only allows for switching between USB and Bluetooth on keyboards that support both.

    KeyAliasesDescription
    QK_OUTPUT_AUTOOU_AUTOAutomatically switch between USB and Bluetooth
    QK_OUTPUT_USBOU_USBUSB only
    QK_OUTPUT_BLUETOOTHOU_BTBluetooth only
    - + \ No newline at end of file diff --git a/features/bootmagic.html b/features/bootmagic.html index 2b926348984..424ff9a8135 100644 --- a/features/bootmagic.html +++ b/features/bootmagic.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -44,7 +44,7 @@ bootloader_jump(); } }

    You can define additional logic here. For instance, resetting the EEPROM or requiring additional keys to be pressed to trigger Bootmagic. Keep in mind that bootmagic_scan is called before a majority of features are initialized in the firmware.

    Addenda

    To manipulate settings that were formerly configured through the now-deprecated full Bootmagic feature, see Magic Keycodes.

    The Command feature, formerly known as Magic, also allows you to control different aspects of your keyboard. While it shares some functionality with Magic Keycodes, it also allows you to do things that Magic Keycodes cannot, such as printing version information to the console. For more information, see Command.

    - + \ No newline at end of file diff --git a/features/caps_word.html b/features/caps_word.html index 409f5ad8bb0..1352f3e920e 100644 --- a/features/caps_word.html +++ b/features/caps_word.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -43,7 +43,7 @@ // Do something when Caps Word deactivates. } } - + \ No newline at end of file diff --git a/features/combo.html b/features/combo.html index f6a71a9d523..29ab31e7e8d 100644 --- a/features/combo.html +++ b/features/combo.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -203,7 +203,7 @@ COMB(QW_UNDO, C(KC_Z), KC_Q, KC_W) SUBS(TH_THE, "the", KC_T, KC_H) // SUBS uses SEND_STRING to output the given string. ...

    For small to huge ready made dictionaries of combos, you can check out http://combos.gboards.ca/.

    - + \ No newline at end of file diff --git a/features/command.html b/features/command.html index cce2c6f3d92..46120deae0d 100644 --- a/features/command.html +++ b/features/command.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Command

    Command, formerly known as Magic, is a way to change your keyboard's behavior without having to flash or unplug it to use Bootmagic. There is a lot of overlap between this functionality and the Magic Keycodes. Wherever possible we encourage you to use that feature instead of Command.

    On some keyboards Command is disabled by default. If this is the case, it must be explicitly enabled in your rules.mk:

    make
    COMMAND_ENABLE = yes

    Usage

    To use Command, hold down the key combination defined by the IS_COMMAND() macro. By default this is Left Shift+Right Shift. Then, press the key corresponding to the command you want. For example, to output the current QMK version to the QMK Toolbox console, press Left Shift+Right Shift+V.

    Configuration

    If you would like to change the key assignments for Command, #define these in your config.h at either the keyboard or keymap level. All keycode assignments here must omit the KC_ prefix.

    DefineDefaultDescription
    IS_COMMAND()(get_mods() == MOD_MASK_SHIFT)The key combination to activate Command
    MAGIC_KEY_SWITCH_LAYER_WITH_FKEYStrueSet default layer with the Function row
    MAGIC_KEY_SWITCH_LAYER_WITH_NKEYStrueSet default layer with the number keys
    MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOMfalseSet default layer with MAGIC_KEY_LAYER0..9
    MAGIC_KEY_DEBUGDToggle debugging over serial
    MAGIC_KEY_DEBUG_MATRIXXToggle key matrix debugging
    MAGIC_KEY_DEBUG_KBDKToggle keyboard debugging
    MAGIC_KEY_DEBUG_MOUSEMToggle mouse debugging
    MAGIC_KEY_CONSOLECEnable the Command console
    MAGIC_KEY_VERSIONVPrint the running QMK version to the console
    MAGIC_KEY_STATUSSPrint the current keyboard status to the console
    MAGIC_KEY_HELPHPrint Command help to the console
    MAGIC_KEY_HELP_ALTSLASHPrint Command help to the console (alternate)
    MAGIC_KEY_LAYER00Make layer 0 the default layer
    MAGIC_KEY_LAYER0_ALTGRAVEMake layer 0 the default layer (alternate)
    MAGIC_KEY_LAYER11Make layer 1 the default layer
    MAGIC_KEY_LAYER22Make layer 2 the default layer
    MAGIC_KEY_LAYER33Make layer 3 the default layer
    MAGIC_KEY_LAYER44Make layer 4 the default layer
    MAGIC_KEY_LAYER55Make layer 5 the default layer
    MAGIC_KEY_LAYER66Make layer 6 the default layer
    MAGIC_KEY_LAYER77Make layer 7 the default layer
    MAGIC_KEY_LAYER88Make layer 8 the default layer
    MAGIC_KEY_LAYER99Make layer 9 the default layer
    MAGIC_KEY_BOOTLOADERBJump to bootloader
    MAGIC_KEY_BOOTLOADER_ALTESCJump to bootloader (alternate)
    MAGIC_KEY_LOCKCAPSLock the keyboard so nothing can be typed
    MAGIC_KEY_EEPROMEPrint stored EEPROM config to the console
    MAGIC_KEY_EEPROM_CLEARBSPACEClear the EEPROM
    MAGIC_KEY_NKRONToggle N-Key Rollover (NKRO)
    MAGIC_KEY_SLEEP_LEDZToggle LED when computer is sleeping
    - + \ No newline at end of file diff --git a/features/digitizer.html b/features/digitizer.html index 8f8e305c8e7..b3918ad7a49 100644 --- a/features/digitizer.html +++ b/features/digitizer.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -21,7 +21,7 @@ digitizer_set_position(0.5, 0.5);

    The "in range" indicator is required to be on for the change in coordinates to be taken. It can then be turned off again to signal the end of the digitizer interaction, but it is not strictly required.

    You can also modify the digitizer state directly, if you need to change multiple fields in a single report:

    c
    digitizer_state.in_range = true;
     digitizer_state.dirty = true;
     digitizer_flush();

    digitizer_state is a struct of type digitizer_t.

    API

    struct digitizer_t

    Contains the state of the digitizer.

    Members


    void digitizer_flush(void)

    Send the digitizer report to the host if it is marked as dirty.


    void digitizer_in_range_on(void)

    Assert the "in range" indicator, and flush the report.


    void digitizer_in_range_off(void)

    Deassert the "in range" indicator, and flush the report.


    void digitizer_tip_switch_on(void)

    Assert the tip switch, and flush the report.


    void digitizer_tip_switch_off(void)

    Deassert the tip switch, and flush the report.


    void digitizer_barrel_switch_on(void)

    Assert the barrel switch, and flush the report.


    void digitizer_barrel_switch_off(void)

    Deassert the barrel switch, and flush the report.


    void digitizer_set_position(float x, float y)

    Set the absolute X and Y position of the digitizer contact, and flush the report.

    Arguments

    - + \ No newline at end of file diff --git a/features/dip_switch.html b/features/dip_switch.html index a6b524e4344..0b6d6a24ebe 100644 --- a/features/dip_switch.html +++ b/features/dip_switch.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -77,7 +77,7 @@ } return true; }

    Hardware

    Connects each switch in the dip switch to the GPIO pin of the MCU

    One side of the DIP switch should be wired directly to the pin on the MCU, and the other side to ground. It should not matter which side is connected to which, as it should be functionally the same.

    Connect each switch in the DIP switch to an unused intersections in the key matrix.

    As with the keyswitch, a diode and DIP switch connect the ROW line to the COL line.

    - + \ No newline at end of file diff --git a/features/dynamic_macros.html b/features/dynamic_macros.html index ad1e13a50db..73ce62b7bdf 100644 --- a/features/dynamic_macros.html +++ b/features/dynamic_macros.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -22,7 +22,7 @@ if (!process_record_dynamic_macro(macro_kc, record)) { return false; }

    User Hooks

    There are a number of hooks that you can use to add custom functionality and feedback options to Dynamic Macro feature. This allows for some additional degree of customization.

    Note, that direction indicates which macro it is, with 1 being Macro 1, -1 being Macro 2, and 0 being no macro.

    Additionally, you can call dynamic_macro_led_blink() to flash the backlights if that feature is enabled.

    - + \ No newline at end of file diff --git a/features/encoders.html b/features/encoders.html index 16447298bd1..d2081eec601 100644 --- a/features/encoders.html +++ b/features/encoders.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -69,7 +69,7 @@ }

    WARNING

    If you return true in the keymap level _user function, it will allow the keyboard/core level encoder code to run on top of your own. Returning false will override the keyboard level function, if setup correctly. This is generally the safest option to avoid confusion.

    Hardware

    The A an B lines of the encoders should be wired directly to the MCU, and the C/common lines should be wired to ground.

    Multiple Encoders

    Multiple encoders may share pins so long as each encoder has a distinct pair of pins when the following conditions are met:

    For example you can support two encoders using only 3 pins like this

    #define ENCODER_A_PINS { B1, B1 }
     #define ENCODER_B_PINS { B2, B3 }

    You could even support three encoders using only three pins (one per encoder) however in this configuration, rotating two encoders which share pins simultaneously will often generate incorrect output. For example:

    #define ENCODER_A_PINS { B1, B1, B2 }
     #define ENCODER_B_PINS { B2, B3, B3 }

    Here rotating Encoder 0 B1 B2 and Encoder 1 B1 B3 could be interpreted as rotating Encoder 2 B2 B3 or B3 B2 depending on the timing. This may still be a useful configuration depending on your use case

    - + \ No newline at end of file diff --git a/features/grave_esc.html b/features/grave_esc.html index f9dfd4a475e..2176e1cf428 100644 --- a/features/grave_esc.html +++ b/features/grave_esc.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Grave Escape

    If you're using a 60% keyboard, or any other layout with no F-row, you will have noticed that there is no dedicated Escape key. Grave Escape is a feature that allows you to share the grave key (` and ~) with Escape.

    Usage

    Replace the KC_GRV key in your keymap (usually to the left of the 1 key) with QK_GESC. Most of the time this key will output KC_ESC when pressed. However, when Shift or GUI are held down it will output KC_GRV instead.

    What Your OS Sees

    If Mary presses QK_GESC on her keyboard, the OS will see an KC_ESC character. Now if Mary holds Shift down and presses QK_GESC it will output ~, or a shifted backtick. Now if she holds GUI/CMD/WIN, it will output a simple ` character.

    Keycodes

    KeyAliasesDescription
    QK_GRAVE_ESCAPEQK_GESCEscape when pressed, ` when Shift or GUI are held

    Caveats

    On macOS, Command+` is by default mapped to "Move focus to next window" so it will not output a backtick. Additionally, Terminal always recognises this shortcut to cycle between windows, even if the shortcut is changed in the Keyboard preferences.

    Configuration

    There are several possible key combinations this will break, among them Control+Shift+Escape on Windows and Command+Option+Escape on macOS. To work around this, you can #define these options in your config.h:

    DefineDescription
    GRAVE_ESC_ALT_OVERRIDEAlways send Escape if Alt is pressed
    GRAVE_ESC_CTRL_OVERRIDEAlways send Escape if Control is pressed
    GRAVE_ESC_GUI_OVERRIDEAlways send Escape if GUI is pressed
    GRAVE_ESC_SHIFT_OVERRIDEAlways send Escape if Shift is pressed
    - + \ No newline at end of file diff --git a/features/haptic_feedback.html b/features/haptic_feedback.html index eee4ad358e1..59a0ed2041a 100644 --- a/features/haptic_feedback.html +++ b/features/haptic_feedback.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -37,7 +37,7 @@ #define DRV2605L_V_RMS 2.0 #define DRV2605L_V_PEAK 2.1 #define DRV2605L_F_LRA 205 /* resonance freq */

    DRV2605L waveform library

    DRV2605L comes with preloaded library of various waveform sequences that can be called and played. If writing a macro, these waveforms can be played using DRV_pulse(*sequence name or number*)

    List of waveform sequences from the datasheet:

    seq#Sequence nameseq#Sequence nameseq#Sequence name
    1strong_click43lg_dblclick_med_6085transition_rampup_med_smooth2
    2strong_click_6044lg_dblsharp_tick86transition_rampup_short_smooth1
    3strong_click_3045lg_dblsharp_tick_8087transition_rampup_short_smooth2
    4sharp_click46lg_dblsharp_tick_6088transition_rampup_long_sharp1
    5sharp_click_6047buzz89transition_rampup_long_sharp2
    6sharp_click_3048buzz_8090transition_rampup_med_sharp1
    7soft_bump49buzz_6091transition_rampup_med_sharp2
    8soft_bump_6050buzz_4092transition_rampup_short_sharp1
    9soft_bump_3051buzz_2093transition_rampup_short_sharp2
    10dbl_click52pulsing_strong94transition_rampdown_long_smooth1_50
    11dbl_click_6053pulsing_strong_8095transition_rampdown_long_smooth2_50
    12trp_click54pulsing_medium96transition_rampdown_med_smooth1_50
    13soft_fuzz55pulsing_medium_8097transition_rampdown_med_smooth2_50
    14strong_buzz56pulsing_sharp98transition_rampdown_short_smooth1_50
    15alert_750ms57pulsing_sharp_8099transition_rampdown_short_smooth2_50
    16alert_1000ms58transition_click100transition_rampdown_long_sharp1_50
    17strong_click159transition_click_80101transition_rampdown_long_sharp2_50
    18strong_click2_8060transition_click_60102transition_rampdown_med_sharp1_50
    19strong_click3_6061transition_click_40103transition_rampdown_med_sharp2_50
    20strong_click4_3062transition_click_20104transition_rampdown_short_sharp1_50
    21medium_click163transition_click_10105transition_rampdown_short_sharp2_50
    22medium_click2_8064transition_hum106transition_rampup_long_smooth1_50
    23medium_click3_6065transition_hum_80107transition_rampup_long_smooth2_50
    24sharp_tick166transition_hum_60108transition_rampup_med_smooth1_50
    25sharp_tick2_8067transition_hum_40109transition_rampup_med_smooth2_50
    26sharp_tick3_6068transition_hum_20110transition_rampup_short_smooth1_50
    27sh_dblclick_str69transition_hum_10111transition_rampup_short_smooth2_50
    28sh_dblclick_str_8070transition_rampdown_long_smooth1112transition_rampup_long_sharp1_50
    29sh_dblclick_str_6071transition_rampdown_long_smooth2113transition_rampup_long_sharp2_50
    30sh_dblclick_str_3072transition_rampdown_med_smooth1114transition_rampup_med_sharp1_50
    31sh_dblclick_med73transition_rampdown_med_smooth2115transition_rampup_med_sharp2_50
    32sh_dblclick_med_8074transition_rampdown_short_smooth1116transition_rampup_short_sharp1_50
    33sh_dblclick_med_6075transition_rampdown_short_smooth2117transition_rampup_short_sharp2_50
    34sh_dblsharp_tick76transition_rampdown_long_sharp1118long_buzz_for_programmatic_stopping
    35sh_dblsharp_tick_8077transition_rampdown_long_sharp2119smooth_hum1_50
    36sh_dblsharp_tick_6078transition_rampdown_med_sharp1120smooth_hum2_40
    37lg_dblclick_str79transition_rampdown_med_sharp2121smooth_hum3_30
    38lg_dblclick_str_8080transition_rampdown_short_sharp1122smooth_hum4_20
    39lg_dblclick_str_6081transition_rampdown_short_sharp2123smooth_hum5_10
    40lg_dblclick_str_3082transition_rampup_long_smooth1
    41lg_dblclick_med83transition_rampup_long_smooth2
    42lg_dblclick_med_8084transition_rampup_med_smooth1

    Optional DRV2605L defines

    c
    #define DRV2605L_GREETING *sequence name or number*

    If haptic feedback is enabled, the keyboard will vibrate to a specific sequence during startup. That can be selected using the following define:

    c
    #define DRV2605L_DEFAULT_MODE *sequence name or number*

    This will set what sequence HF_RST will set as the active mode. If not defined, mode will be set to 1 when HF_RST is pressed.

    DRV2605L Continuous Haptic Mode

    This mode sets continuous haptic feedback with the option to increase or decrease strength.

    Haptic Key Exclusion

    The Haptic Exclusion is implemented as __attribute__((weak)) bool get_haptic_enabled_key(uint16_t keycode, keyrecord_t *record) in haptic.c. This allows a re-definition at the required level with the specific requirement / exclusion.

    NO_HAPTIC_MOD

    With the entry of #define NO_HAPTIC_MOD in config.h, the following keys will not trigger feedback:

    NO_HAPTIC_ALPHA

    With the entry of #define NO_HAPTIC_ALPHA in config.h, none of the alpha keys (A ... Z) will trigger a feedback.

    NO_HAPTIC_PUNCTUATION

    With the entry of #define NO_HAPTIC_PUNCTUATION in config.h, none of the following keys will trigger a feedback: Enter, ESC, Backspace, Space, Minus, Equal, Left Bracket, Right Bracket, Backslash, Non-US Hash, Semicolon, Quote, Grave, Comma, Slash, Dot, Non-US Backslash.

    NO_HAPTIC_LOCKKEYS

    With the entry of #define NO_HAPTIC_LOCKKEYS in config.h, none of the following keys will trigger a feedback: Caps Lock, Scroll Lock, Num Lock.

    NO_HAPTIC_NAV

    With the entry of #define NO_HAPTIC_NAV in config.h, none of the following keys will trigger a feedback: Print Screen, Pause, Insert, Delete, Page Down, Page Up, Left Arrow, Up Arrow, Right Arrow, Down Arrow, End, Home.

    NO_HAPTIC_NUMERIC

    With the entry of #define NO_HAPTIC_NUMERIC in config.h, none of the following keys between 0 and 9 (KC_1 ... KC_0) will trigger a feedback.

    - + \ No newline at end of file diff --git a/features/hd44780.html b/features/hd44780.html index 04b7b8cd487..da011804b14 100644 --- a/features/hd44780.html +++ b/features/hd44780.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -38,7 +38,7 @@ // 0x08 to avoid null terminator hd44780_puts_P(PSTR("\x08 QMK Firmware")); }

    API

    void hd44780_init(bool cursor, bool blink)

    Initialize the display.

    This function should be called only once, before any of the other functions can be called.

    Arguments


    void hd44780_clear(void)

    Clear the display.

    This function is called on init.


    void hd44780_home(void)

    Move the cursor to the home position.

    This function is called on init.


    void hd44780_on(bool cursor, bool blink)

    Turn the display on, and/or set the cursor properties.

    This function is called on init.

    Arguments


    void hd44780_off(void)

    Turn the display off.


    void hd44780_set_cursor(uint8_t col, uint8_t line)

    Move the cursor to the specified position on the display.

    Arguments


    void hd44780_putc(char c)

    Print a character to the display. The newline character \n will move the cursor to the start of the next line.

    The exact character shown may depend on the ROM code of your particular display - refer to the datasheet for the full character set.

    Arguments


    void hd44780_puts(const char *s)

    Print a string of characters to the display.

    Arguments


    void hd44780_puts_P(const char *s)

    Print a string of characters from PROGMEM to the display.

    On ARM devices, this function is simply an alias of hd44780_puts().

    Arguments


    void hd44780_define_char(uint8_t index, uint8_t *data)

    Define a custom character.

    Arguments


    void hd44780_define_char_P(uint8_t index, const uint8_t *data)

    Define a custom character from PROGMEM.

    On ARM devices, this function is simply an alias of hd44780_define_char().

    Arguments


    bool hd44780_busy(void)

    Indicates whether the display is currently processing, and cannot accept instructions.

    Return Value

    true if the display is busy.


    void hd44780_write(uint8_t data, bool isData)

    Write a byte to the display.

    Arguments


    uint8_t hd44780_read(bool isData)

    Read a byte from the display.

    Arguments

    Return Value

    If isData is true, the returned byte will be the character at the current DDRAM address. Otherwise, it will be the current DDRAM address and the busy flag.


    void hd44780_command(uint8_t command)

    Send a command to the display. Refer to the datasheet and hd44780.h for the valid commands and defines.

    This function waits for the display to clear the busy flag before sending the command.

    Arguments


    void hd44780_data(uint8_t data)

    Send a byte of data to the display.

    This function waits for the display to clear the busy flag before sending the data.

    Arguments


    void hd44780_set_cgram_address(uint8_t address)

    Set the CGRAM address.

    This function is used when defining custom characters.

    Arguments


    void hd44780_set_ddram_address(uint8_t address)

    Set the DDRAM address.

    This function is used when printing characters to the display, and setting the cursor.

    Arguments

    - + \ No newline at end of file diff --git a/features/joystick.html b/features/joystick.html index 8d5bc3275ac..e113635173e 100644 --- a/features/joystick.html +++ b/features/joystick.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -59,7 +59,7 @@ } return true; }

    Keycodes

    KeyAliasesDescription
    QK_JOYSTICK_BUTTON_0JS_0Button 0
    QK_JOYSTICK_BUTTON_1JS_1Button 1
    QK_JOYSTICK_BUTTON_2JS_2Button 2
    QK_JOYSTICK_BUTTON_3JS_3Button 3
    QK_JOYSTICK_BUTTON_4JS_4Button 4
    QK_JOYSTICK_BUTTON_5JS_5Button 5
    QK_JOYSTICK_BUTTON_6JS_6Button 6
    QK_JOYSTICK_BUTTON_7JS_7Button 7
    QK_JOYSTICK_BUTTON_8JS_8Button 8
    QK_JOYSTICK_BUTTON_9JS_9Button 9
    QK_JOYSTICK_BUTTON_10JS_10Button 10
    QK_JOYSTICK_BUTTON_11JS_11Button 11
    QK_JOYSTICK_BUTTON_12JS_12Button 12
    QK_JOYSTICK_BUTTON_13JS_13Button 13
    QK_JOYSTICK_BUTTON_14JS_14Button 14
    QK_JOYSTICK_BUTTON_15JS_15Button 15
    QK_JOYSTICK_BUTTON_16JS_16Button 16
    QK_JOYSTICK_BUTTON_17JS_17Button 17
    QK_JOYSTICK_BUTTON_18JS_18Button 18
    QK_JOYSTICK_BUTTON_19JS_19Button 19
    QK_JOYSTICK_BUTTON_20JS_20Button 20
    QK_JOYSTICK_BUTTON_21JS_21Button 21
    QK_JOYSTICK_BUTTON_22JS_22Button 22
    QK_JOYSTICK_BUTTON_23JS_23Button 23
    QK_JOYSTICK_BUTTON_24JS_24Button 24
    QK_JOYSTICK_BUTTON_25JS_25Button 25
    QK_JOYSTICK_BUTTON_26JS_26Button 26
    QK_JOYSTICK_BUTTON_27JS_27Button 27
    QK_JOYSTICK_BUTTON_28JS_28Button 28
    QK_JOYSTICK_BUTTON_29JS_29Button 29
    QK_JOYSTICK_BUTTON_30JS_30Button 30
    QK_JOYSTICK_BUTTON_31JS_31Button 31

    API

    struct joystick_t

    Contains the state of the joystick.

    Members


    struct joystick_config_t

    Describes a single axis.

    Members


    void joystick_flush(void)

    Send the joystick report to the host, if it has been marked as dirty.


    void register_joystick_button(uint8_t button)

    Set the state of a button, and flush the report.

    Arguments


    void unregister_joystick_button(uint8_t button)

    Reset the state of a button, and flush the report.

    Arguments


    int16_t joystick_read_axis(uint8_t axis)

    Sample and process the analog value of the given axis.

    Arguments

    Return Value

    A signed 16-bit integer, where 0 is the resting or mid point.

    void joystick_set_axis(uint8_t axis, int16_t value)

    Set the value of the given axis.

    Arguments

    - + \ No newline at end of file diff --git a/features/key_lock.html b/features/key_lock.html index be9de765fd5..c57f5a2b4aa 100644 --- a/features/key_lock.html +++ b/features/key_lock.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Key Lock

    Sometimes you may find yourself needing to hold down a specific key for a long period of time. Key Lock holds down the next key you press for you. Press it again, and it will be released.

    Let's say you need to type in ALL CAPS for a few sentences. Hit QK_LOCK, and then Shift. Now, Shift will be considered held until you tap it again. You can think of Key Lock as Caps Lock, but supercharged.

    Usage

    First, enable Key Lock by setting KEY_LOCK_ENABLE = yes in your rules.mk. Then pick a key in your keymap and assign it the keycode QK_LOCK.

    Keycodes

    KeycodeDescription
    QK_LOCKHold down the next key pressed, until the key is pressed again

    Caveats

    Key Lock is only able to hold standard action keys and One Shot modifier keys (for example, if you have your Shift defined as OSM(MOD_LSFT)). This does not include any of the QMK special functions (except One Shot modifiers), or shifted versions of keys such as KC_LPRN. If it's in the Basic Keycodes list, it can be held.

    Switching layers will not cancel the Key Lock. The Key Lock can be cancelled by calling the cancel_key_lock() function.

    - + \ No newline at end of file diff --git a/features/key_overrides.html b/features/key_overrides.html index 7b9d98f89e5..78365ac3d33 100644 --- a/features/key_overrides.html +++ b/features/key_overrides.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -89,7 +89,7 @@ // Neutralize left alt, left GUI, right GUI and left Control+Shift #define MODS_TO_NEUTRALIZE { MOD_BIT(KC_LEFT_ALT), MOD_BIT(KC_LEFT_GUI), MOD_BIT(KC_RIGHT_GUI), MOD_BIT(KC_LEFT_CTRL)|MOD_BIT(KC_LEFT_SHIFT) }

    WARNING

    Do not use MOD_xxx constants like MOD_LSFT or MOD_RALT, since they're 5-bit packed bit-arrays while MODS_TO_NEUTRALIZE expects a list of 8-bit packed bit-arrays. Use MOD_BIT(<kc>) or MOD_MASK_xxx instead.

    - + \ No newline at end of file diff --git a/features/leader_key.html b/features/leader_key.html index f64d85bc248..54cb51c4d2a 100644 --- a/features/leader_key.html +++ b/features/leader_key.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -68,7 +68,7 @@ } #endif }

    Keycodes

    KeyAliasesDescription
    QK_LEADERQK_LEADBegin the leader sequence

    API

    void leader_start_user(void)

    User callback, invoked when the leader sequence begins.


    void leader_end_user(void)

    User callback, invoked when the leader sequence ends.


    void leader_start(void)

    Begin the leader sequence, resetting the buffer and timer.


    void leader_end(void)

    End the leader sequence.


    bool leader_sequence_active(void)

    Whether the leader sequence is active.


    bool leader_sequence_add(uint16_t keycode)

    Add the given keycode to the sequence buffer.

    If LEADER_NO_TIMEOUT is defined, the timer is reset if the buffer is empty.

    Arguments

    Return Value

    true if the keycode was added, false if the buffer is full.


    bool leader_sequence_timed_out(void)

    Whether the leader sequence has reached the timeout.

    If LEADER_NO_TIMEOUT is defined, the buffer must also contain at least one key.


    bool leader_reset_timer(void)

    Reset the leader sequence timer.


    bool leader_sequence_one_key(uint16_t kc)

    Check the sequence buffer for the given keycode.

    Arguments

    Return Value

    true if the sequence buffer matches.


    bool leader_sequence_two_keys(uint16_t kc1, uint16_t kc2)

    Check the sequence buffer for the given keycodes.

    Arguments

    Return Value

    true if the sequence buffer matches.


    bool leader_sequence_three_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3)

    Check the sequence buffer for the given keycodes.

    Arguments

    Return Value

    true if the sequence buffer matches.


    bool leader_sequence_four_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3, uint16_t kc4)

    Check the sequence buffer for the given keycodes.

    Arguments

    Return Value

    true if the sequence buffer matches.


    bool leader_sequence_five_keys(uint16_t kc1, uint16_t kc2, uint16_t kc3, uint16_t kc4, uint16_t kc5)

    Check the sequence buffer for the given keycodes.

    Arguments

    Return Value

    true if the sequence buffer matches.

    - + \ No newline at end of file diff --git a/features/led_indicators.html b/features/led_indicators.html index 0b420162286..ac303a6dbb1 100644 --- a/features/led_indicators.html +++ b/features/led_indicators.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -47,7 +47,7 @@ #endif return true; }

    Host keyboard LED state

    The host_keyboard_led_state() function will report the LED state returned from the host computer as led_t. This is useful for reading the LED state outside led_update_*. For example, you can get the boolean state of Caps Lock from the host with:

    c
    bool caps = host_keyboard_led_state().caps_lock;

    led_update_ports()

    This function writes the LED state to the actual hardware. Call it manually from your led_update_*() callbacks to modify the handling of the standard keyboard LEDs. For example when repurposing a standard LED indicator as layer indicator.

    Setting Physical LED State

    Some keyboard implementations provide convenient methods for setting the state of the physical LEDs.

    Ergodox Boards

    The Ergodox implementations provide ergodox_right_led_1/2/3_on/off() to turn individual LEDs on or off, as well as ergodox_right_led_on/off(uint8_t led) to turn them on or off by their index.

    In addition, it is possible to specify the brightness level of all LEDs with ergodox_led_all_set(uint8_t n); of individual LEDs with ergodox_right_led_1/2/3_set(uint8_t n); or by index with ergodox_right_led_set(uint8_t led, uint8_t n).

    Ergodox boards also define LED_BRIGHTNESS_LO for the lowest brightness and LED_BRIGHTNESS_HI for the highest brightness (which is the default).

    - + \ No newline at end of file diff --git a/features/led_matrix.html b/features/led_matrix.html index 353e70c0434..3233118b8cd 100644 --- a/features/led_matrix.html +++ b/features/led_matrix.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -115,7 +115,7 @@ LED_MATRIX_INDICATOR_SET_VALUE(index, value); return false; }

    API

    void led_matrix_toggle(void)

    Toggle LED Matrix on or off.


    void led_matrix_toggle_noeeprom(void)

    Toggle LED Matrix on or off. New state is not written to EEPROM.


    void led_matrix_enable(void)

    Turn LED Matrix on.


    void led_matrix_enable_noeeprom(void)

    Turn LED Matrix on. New state is not written to EEPROM.


    void led_matrix_disable(void)

    Turn LED Matrix off.


    void led_matrix_disable_noeeprom(void)

    Turn LED Matrix off. New state is not written to EEPROM.


    bool led_matrix_is_enabled(void)

    Get the current enabled state of LED Matrix.

    Return Value

    true if LED Matrix is enabled.


    void led_matrix_set_value(uint8_t index, uint8_t v)

    Set the brightness of a single LED.

    This function can only be run from within an effect or indicator callback, otherwise the currently running animation will simply overwrite it on the next frame.

    Arguments


    void led_matrix_set_value_all(uint8_t v)

    Set the brightness of all LEDs.

    This function can only be run from within an effect or indicator callback, otherwise the currently running animation will simply overwrite it on the next frame.

    Arguments


    void led_matrix_mode(uint8_t mode)

    Set the currently running effect.

    Arguments


    void led_matrix_mode_noeeprom(uint8_t mode)

    Set the currently running effect. New state is not written to EEPROM.

    Arguments


    void led_matrix_step(void)

    Move to the next enabled effect.


    void led_matrix_step_noeeprom(void)

    Move to the next enabled effect. New state is not written to EEPROM.


    void led_matrix_step_reverse(void)

    Move to the previous enabled effect.


    void led_matrix_step_reverse_noeeprom(void)

    Move to the previous enabled effect. New state is not written to EEPROM.


    uint8_t led_matrix_get_mode(void)

    Get the currently running effect.

    Return Value

    The index of the currently running effect.


    void val_matrix_increase_val(void)

    Increase the global effect brightness.


    void led_matrix_increase_val_noeeprom(void)

    Increase the global effect brightness. New state is not written to EEPROM.


    void led_matrix_decrease_val(void)

    Decrease the global effect brightness.


    void led_matrix_decrease_val_noeeprom(void)

    Decrease the global effect brightness. New state is not written to EEPROM.


    uint8_t led_matrix_get_val(void)

    Get the current global effect brightness.

    Return Value

    The current brightness value, from 0 to 255.


    void led_matrix_increase_speed(void)

    Increase the effect speed.


    void led_matrix_increase_speed_noeeprom(void)

    Increase the effect speed. New state is not written to EEPROM.


    void led_matrix_decrease_speed(void)

    Decrease the effect speed.


    void led_matrix_decrease_speed_noeeprom(void)

    Decrease the effect speed. New state is not written to EEPROM.


    void led_matrix_set_speed(uint8_t speed)

    Set the effect speed.

    Arguments


    void led_matrix_set_speed_noeeprom(uint8_t speed)

    Set the effect speed. New state is not written to EEPROM.

    Arguments


    uint8_t led_matrix_get_speed(void)

    Get the current effect speed.

    Return Value

    The current effect speed, from 0 to 255.


    void led_matrix_reload_from_eeprom(void)

    Reload the effect configuration (enabled, mode and brightness) from EEPROM.


    bool led_matrix_get_suspend_state(void)

    Get the current suspend state of LED Matrix.

    Return Value

    true if LED Matrix is currently in the suspended state.


    bool led_matrix_indicators_kb(void)

    Keyboard-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.

    Return Value

    Currently unused.


    bool led_matrix_indicators_user(void)

    Keymap-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.

    Return Value

    true to continue running the keyboard-level callback.


    bool led_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max)

    Keyboard-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.

    Arguments

    Return Value

    Currently unused.


    bool led_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max)

    Keymap-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.

    Arguments

    Return Value

    true to continue running the keyboard-level callback.

    - + \ No newline at end of file diff --git a/features/midi.html b/features/midi.html index 425c712ccaa..3d688349393 100644 --- a/features/midi.html +++ b/features/midi.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -52,7 +52,7 @@ // ... ) };

    Keycodes

    KeycodeAliasesDescription
    QK_MIDI_ONMI_ONTurn MIDI on
    QK_MIDI_OFFMI_OFFTurn MIDI off
    QK_MIDI_TOGGLEMI_TOGGToggle MIDI enabled
    QK_MIDI_NOTE_C_0MI_CC octave 0
    QK_MIDI_NOTE_C_SHARP_0MI_Cs, MI_DbC♯/D♭ octave 0
    QK_MIDI_NOTE_D_0MI_DD octave 0
    QK_MIDI_NOTE_D_SHARP_0MI_Ds, MI_EbD♯/E♭ octave 0
    QK_MIDI_NOTE_E_0MI_EE octave 0
    QK_MIDI_NOTE_F_0MI_FF octave 0
    QK_MIDI_NOTE_F_SHARP_0MI_Fs, MI_GbF♯/G♭ octave 0
    QK_MIDI_NOTE_G_0MI_GG octave 0
    QK_MIDI_NOTE_G_SHARP_0MI_Gs, MI_AbG♯/A♭ octave 0
    QK_MIDI_NOTE_A_0MI_AA octave 0
    QK_MIDI_NOTE_A_SHARP_0MI_As, MI_BbA♯/B♭ octave 0
    QK_MIDI_NOTE_B_0MI_BB octave 0
    QK_MIDI_NOTE_C_1MI_C1C octave 1
    QK_MIDI_NOTE_C_SHARP_1MI_Cs1, MI_Db1C♯/D♭ octave 1
    QK_MIDI_NOTE_D_1MI_D1D octave 1
    QK_MIDI_NOTE_D_SHARP_1MI_Ds1, MI_Eb1D♯/E♭ octave 1
    QK_MIDI_NOTE_E_1MI_E1E octave 1
    QK_MIDI_NOTE_F_1MI_F1F octave 1
    QK_MIDI_NOTE_F_SHARP_1MI_Fs1, MI_Gb1F♯/G♭ octave 1
    QK_MIDI_NOTE_G_1MI_G1G octave 1
    QK_MIDI_NOTE_G_SHARP_1MI_Gs1, MI_Ab1G♯/A♭ octave 1
    QK_MIDI_NOTE_A_1MI_A1A octave 1
    QK_MIDI_NOTE_A_SHARP_1MI_As1, MI_Bb1A♯/B♭ octave 1
    QK_MIDI_NOTE_B_1MI_B1B octave 1
    QK_MIDI_NOTE_C_2MI_C2C octave 2
    QK_MIDI_NOTE_C_SHARP_2MI_Cs2, MI_Db2C♯/D♭ octave 2
    QK_MIDI_NOTE_D_2MI_D2D octave 2
    QK_MIDI_NOTE_D_SHARP_2MI_Ds2, MI_Eb2D♯/E♭ octave 2
    QK_MIDI_NOTE_E_2MI_E2E octave 2
    QK_MIDI_NOTE_F_2MI_F2F octave 2
    QK_MIDI_NOTE_F_SHARP_2MI_Fs2, MI_Gb2F♯/G♭ octave 2
    QK_MIDI_NOTE_G_2MI_G2G octave 2
    QK_MIDI_NOTE_G_SHARP_2MI_Gs2, MI_Ab2G♯/A♭ octave 2
    QK_MIDI_NOTE_A_2MI_A2A octave 2
    QK_MIDI_NOTE_A_SHARP_2MI_As2, MI_Bb2A♯/B♭ octave 2
    QK_MIDI_NOTE_B_2MI_B2B octave 2
    QK_MIDI_NOTE_C_3MI_C3C octave 3
    QK_MIDI_NOTE_C_SHARP_3MI_Cs3, MI_Db3C♯/D♭ octave 3
    QK_MIDI_NOTE_D_3MI_D3D octave 3
    QK_MIDI_NOTE_D_SHARP_3MI_Ds3, MI_Eb3D♯/E♭ octave 3
    QK_MIDI_NOTE_E_3MI_E3E octave 3
    QK_MIDI_NOTE_F_3MI_F3F octave 3
    QK_MIDI_NOTE_F_SHARP_3MI_Fs3, MI_Gb3F♯/G♭ octave 3
    QK_MIDI_NOTE_G_3MI_G3G octave 3
    QK_MIDI_NOTE_G_SHARP_3MI_Gs3, MI_Ab3G♯/A♭ octave 3
    QK_MIDI_NOTE_A_3MI_A3A octave 3
    QK_MIDI_NOTE_A_SHARP_3MI_As3, MI_Bb3A♯/B♭ octave 3
    QK_MIDI_NOTE_B_3MI_B3B octave 3
    QK_MIDI_NOTE_C_4MI_C4C octave 4
    QK_MIDI_NOTE_C_SHARP_4MI_Cs4, MI_Db4C♯/D♭ octave 4
    QK_MIDI_NOTE_D_4MI_D4D octave 4
    QK_MIDI_NOTE_D_SHARP_4MI_Ds4, MI_Eb4D♯/E♭ octave 4
    QK_MIDI_NOTE_E_4MI_E4E octave 4
    QK_MIDI_NOTE_F_4MI_F4F octave 4
    QK_MIDI_NOTE_F_SHARP_4MI_Fs4, MI_Gb4F♯/G♭ octave 4
    QK_MIDI_NOTE_G_4MI_G4G octave 4
    QK_MIDI_NOTE_G_SHARP_4MI_Gs4, MI_Ab4G♯/A♭ octave 4
    QK_MIDI_NOTE_A_4MI_A4A octave 4
    QK_MIDI_NOTE_A_SHARP_4MI_As4, MI_Bb4A♯/B♭ octave 4
    QK_MIDI_NOTE_B_4MI_B4B octave 4
    QK_MIDI_NOTE_C_5MI_C5C octave 5
    QK_MIDI_NOTE_C_SHARP_5MI_Cs5, MI_Db5C♯/D♭ octave 5
    QK_MIDI_NOTE_D_5MI_D5D octave 5
    QK_MIDI_NOTE_D_SHARP_5MI_Ds5, MI_Eb5D♯/E♭ octave 5
    QK_MIDI_NOTE_E_5MI_E5E octave 5
    QK_MIDI_NOTE_F_5MI_F5F octave 5
    QK_MIDI_NOTE_F_SHARP_5MI_Fs5, MI_Gb5F♯/G♭ octave 5
    QK_MIDI_NOTE_G_5MI_G5G octave 5
    QK_MIDI_NOTE_G_SHARP_5MI_Gs5, MI_Ab5G♯/A♭ octave 5
    QK_MIDI_NOTE_A_5MI_A5A octave 5
    QK_MIDI_NOTE_A_SHARP_5MI_As5, MI_Bb5A♯/B♭ octave 5
    QK_MIDI_NOTE_B_5MI_B5B octave 5
    QK_MIDI_OCTAVE_N2MI_OCN2Set octave to -2
    QK_MIDI_OCTAVE_N1MI_OCN1Set octave to -1
    QK_MIDI_OCTAVE_0MI_OC0Set octave to 0
    QK_MIDI_OCTAVE_1MI_OC1Set octave to 1
    QK_MIDI_OCTAVE_2MI_OC2Set octave to 2
    QK_MIDI_OCTAVE_3MI_OC3Set octave to 3
    QK_MIDI_OCTAVE_4MI_OC4Set octave to 4
    QK_MIDI_OCTAVE_5MI_OC5Set octave to 5
    QK_MIDI_OCTAVE_6MI_OC6Set octave to 6
    QK_MIDI_OCTAVE_7MI_OC7Set octave to 7
    QK_MIDI_OCTAVE_DOWNMI_OCTDMove down an octave
    QK_MIDI_OCTAVE_UPMI_OCTUMove up an octave
    QK_MIDI_TRANSPOSE_N6MI_TRN6Set transposition to -6 semitones
    QK_MIDI_TRANSPOSE_N5MI_TRN5Set transposition to -5 semitones
    QK_MIDI_TRANSPOSE_N4MI_TRN4Set transposition to -4 semitones
    QK_MIDI_TRANSPOSE_N3MI_TRN3Set transposition to -3 semitones
    QK_MIDI_TRANSPOSE_N2MI_TRN2Set transposition to -2 semitones
    QK_MIDI_TRANSPOSE_N1MI_TRN1Set transposition to -1 semitone
    QK_MIDI_TRANSPOSE_0MI_TR0No transposition
    QK_MIDI_TRANSPOSE_1MI_TR1Set transposition to +1 semitone
    QK_MIDI_TRANSPOSE_2MI_TR2Set transposition to +2 semitones
    QK_MIDI_TRANSPOSE_3MI_TR3Set transposition to +3 semitones
    QK_MIDI_TRANSPOSE_4MI_TR4Set transposition to +4 semitones
    QK_MIDI_TRANSPOSE_5MI_TR5Set transposition to +5 semitones
    QK_MIDI_TRANSPOSE_6MI_TR6Set transposition to +6 semitones
    QK_MIDI_TRANSPOSE_DOWNMI_TRSDDecrease transposition
    QK_MIDI_TRANSPOSE_UPMI_TRSUIncrease transposition
    QK_MIDI_VELOCITY_0MI_VL0Set velocity to 0
    QK_MIDI_VELOCITY_1MI_VL1Set velocity to 12
    QK_MIDI_VELOCITY_2MI_VL2Set velocity to 25
    QK_MIDI_VELOCITY_3MI_VL3Set velocity to 38
    QK_MIDI_VELOCITY_4MI_VL4Set velocity to 51
    QK_MIDI_VELOCITY_5MI_VL5Set velocity to 64
    QK_MIDI_VELOCITY_6MI_VL6Set velocity to 76
    QK_MIDI_VELOCITY_7MI_VL7Set velocity to 89
    QK_MIDI_VELOCITY_8MI_VL8Set velocity to 102
    QK_MIDI_VELOCITY_9MI_VL9Set velocity to 114
    QK_MIDI_VELOCITY_10MI_VL10Set velocity to 127
    QK_MIDI_VELOCITY_DOWNMI_VELDDecrease velocity
    QK_MIDI_VELOCITY_UPMI_VELUIncrease velocity
    QK_MIDI_CHANNEL_1MI_CH1Set channel to 1
    QK_MIDI_CHANNEL_2MI_CH2Set channel to 2
    QK_MIDI_CHANNEL_3MI_CH3Set channel to 3
    QK_MIDI_CHANNEL_4MI_CH4Set channel to 4
    QK_MIDI_CHANNEL_5MI_CH5Set channel to 5
    QK_MIDI_CHANNEL_6MI_CH6Set channel to 6
    QK_MIDI_CHANNEL_7MI_CH7Set channel to 7
    QK_MIDI_CHANNEL_8MI_CH8Set channel to 8
    QK_MIDI_CHANNEL_9MI_CH9Set channel to 9
    QK_MIDI_CHANNEL_10MI_CH10Set channel to 10
    QK_MIDI_CHANNEL_11MI_CH11Set channel to 11
    QK_MIDI_CHANNEL_12MI_CH12Set channel to 12
    QK_MIDI_CHANNEL_13MI_CH13Set channel to 13
    QK_MIDI_CHANNEL_14MI_CH14Set channel to 14
    QK_MIDI_CHANNEL_15MI_CH15Set channel to 15
    QK_MIDI_CHANNEL_16MI_CH16Set channel to 16
    QK_MIDI_CHANNEL_DOWNMI_CHNDDecrease channel
    QK_MIDI_CHANNEL_UPMI_CHNUIncrease channel
    QK_MIDI_ALL_NOTES_OFFMI_AOFFStop all notes
    QK_MIDI_SUSTAINMI_SUSTSustain
    QK_MIDI_PORTAMENTOMI_PORTPortmento
    QK_MIDI_SOSTENUTOMI_SOSTSostenuto
    QK_MIDI_SOFTMI_SOFTSoft Pedal
    QK_MIDI_LEGATOMI_LEGLegato
    QK_MIDI_MODULATIONMI_MODModulation
    QK_MIDI_MODULATION_SPEED_DOWNMI_MODDDecrease modulation speed
    QK_MIDI_MODULATION_SPEED_UPMI_MODUIncrease modulation speed
    QK_MIDI_PITCH_BEND_DOWNMI_BNDDBend pitch down
    QK_MIDI_PITCH_BEND_UPMI_BNDUBend pitch up

    Configuration

    Certain values are stored in the midi_config struct. This configuration is not persisted to EEPROM. By default, these values are:

    ConfigurationValueComments
    Octave4Corresponds to MI_OC2
    Transposition0
    Velocity127
    Channel0
    Modulation Interval8

    For the above, the MI_C keycode will produce a C3 (note number 48), and so on.

    References

    MIDI Specification

    QMK C Files

    - + \ No newline at end of file diff --git a/features/mouse_keys.html b/features/mouse_keys.html index b7161b599c1..1d83d1d6b0d 100644 --- a/features/mouse_keys.html +++ b/features/mouse_keys.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Mouse keys

    Mouse keys is a feature that allows you to emulate a mouse using your keyboard. You can move the pointer at different speeds, press 5 buttons and scroll in 8 directions.

    Adding mouse keys to your keyboard

    To use mouse keys, you must at least enable mouse keys support and map mouse actions to keys on your keyboard.

    Enabling mouse keys

    To enable mouse keys, add the following line to your keymap’s rules.mk:

    c
    MOUSEKEY_ENABLE = yes

    Mapping mouse actions

    In your keymap you can use the following keycodes to map key presses to mouse actions:

    KeyAliasesDescription
    QK_MOUSE_CURSOR_UPMS_UPMouse cursor up
    QK_MOUSE_CURSOR_DOWNMS_DOWNMouse cursor down
    QK_MOUSE_CURSOR_LEFTMS_LEFTMouse cursor left
    QK_MOUSE_CURSOR_RIGHTMS_RGHTMouse cursor right
    QK_MOUSE_BUTTON_1MS_BTN1Mouse button 1
    QK_MOUSE_BUTTON_2MS_BTN2Mouse button 2
    QK_MOUSE_BUTTON_3MS_BTN3Mouse button 3
    QK_MOUSE_BUTTON_4MS_BTN4Mouse button 4
    QK_MOUSE_BUTTON_5MS_BTN5Mouse button 5
    QK_MOUSE_BUTTON_6MS_BTN6Mouse button 6
    QK_MOUSE_BUTTON_7MS_BTN7Mouse button 7
    QK_MOUSE_BUTTON_8MS_BTN8Mouse button 8
    QK_MOUSE_WHEEL_UPMS_WHLUMouse wheel up
    QK_MOUSE_WHEEL_DOWNMS_WHLDMouse wheel down
    QK_MOUSE_WHEEL_LEFTMS_WHLLMouse wheel left
    QK_MOUSE_WHEEL_RIGHTMS_WHLRMouse wheel right
    QK_MOUSE_ACCELERATION_0MS_ACL0Set mouse acceleration to 0
    QK_MOUSE_ACCELERATION_1MS_ACL1Set mouse acceleration to 1
    QK_MOUSE_ACCELERATION_2MS_ACL2Set mouse acceleration to 2

    Configuring mouse keys

    Mouse keys supports three different modes to move the cursor:

    • Accelerated (default): Holding movement keys accelerates the cursor until it reaches its maximum speed.
    • Kinetic: Holding movement keys accelerates the cursor with its speed following a quadratic curve until it reaches its maximum speed.
    • Constant: Holding movement keys moves the cursor at constant speeds.
    • Combined: Holding movement keys accelerates the cursor until it reaches its maximum speed, but holding acceleration and movement keys simultaneously moves the cursor at constant speeds.
    • Inertia: Cursor accelerates when key held, and decelerates after key release. Tracks X and Y velocity separately for more nuanced movements. Applies to cursor only, not scrolling.

    The same principle applies to scrolling, in most modes.

    Configuration options that are times, intervals or delays are given in milliseconds. Scroll speed is given as multiples of the default scroll step. For example, a scroll speed of 8 means that each scroll action covers 8 times the length of the default scroll step as defined by your operating system or application.

    Accelerated mode

    This is the default mode. You can adjust the cursor and scrolling acceleration using the following settings in your keymap’s config.h file:

    DefineDefaultDescription
    MOUSEKEY_DELAY10Delay between pressing a movement key and cursor movement
    MOUSEKEY_INTERVAL20Time between cursor movements in milliseconds
    MOUSEKEY_MOVE_DELTA8Step size
    MOUSEKEY_MAX_SPEED10Maximum cursor speed at which acceleration stops
    MOUSEKEY_TIME_TO_MAX30Time until maximum cursor speed is reached
    MOUSEKEY_WHEEL_DELAY10Delay between pressing a wheel key and wheel movement
    MOUSEKEY_WHEEL_INTERVAL80Time between wheel movements
    MOUSEKEY_WHEEL_DELTA1Wheel movement step size
    MOUSEKEY_WHEEL_MAX_SPEED8Maximum number of scroll steps per scroll action
    MOUSEKEY_WHEEL_TIME_TO_MAX40Time until maximum scroll speed is reached

    Tips:

    • Setting MOUSEKEY_DELAY too low makes the cursor unresponsive. Setting it too high makes small movements difficult.
    • For smoother cursor movements, lower the value of MOUSEKEY_INTERVAL. If the refresh rate of your display is 60Hz, you could set it to 16 (1/60). As this raises the cursor speed significantly, you may want to lower MOUSEKEY_MAX_SPEED.
    • Setting MOUSEKEY_TIME_TO_MAX or MOUSEKEY_WHEEL_TIME_TO_MAX to 0 will disable acceleration for the cursor or scrolling respectively. This way you can make one of them constant while keeping the other accelerated, which is not possible in constant speed mode.
    • Setting MOUSEKEY_WHEEL_INTERVAL too low will make scrolling too fast. Setting it too high will make scrolling too slow when the wheel key is held down.

    Cursor acceleration uses the same algorithm as the X Window System MouseKeysAccel feature. You can read more about it on Wikipedia.

    Kinetic Mode

    This is an extension of the accelerated mode. The kinetic mode uses a quadratic curve on the cursor speed which allows precise movements at the beginning and allows to cover large distances by increasing cursor speed quickly thereafter. You can adjust the cursor and scrolling acceleration using the following settings in your keymap’s config.h file:

    DefineDefaultDescription
    MK_KINETIC_SPEEDundefinedEnable kinetic mode
    MOUSEKEY_DELAY5Delay between pressing a movement key and cursor movement
    MOUSEKEY_INTERVAL10Time between cursor movements in milliseconds
    MOUSEKEY_MOVE_DELTA16Step size for accelerating from initial to base speed
    MOUSEKEY_INITIAL_SPEED100Initial speed of the cursor in pixel per second
    MOUSEKEY_BASE_SPEED5000Maximum cursor speed at which acceleration stops
    MOUSEKEY_DECELERATED_SPEED400Decelerated cursor speed
    MOUSEKEY_ACCELERATED_SPEED3000Accelerated cursor speed
    MOUSEKEY_WHEEL_INITIAL_MOVEMENTS16Initial number of movements of the mouse wheel
    MOUSEKEY_WHEEL_BASE_MOVEMENTS32Maximum number of movements at which acceleration stops
    MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS48Accelerated wheel movements
    MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS8Decelerated wheel movements

    Tips:

    • The smoothness of the cursor movement depends on the MOUSEKEY_INTERVAL setting. The shorter the interval is set the smoother the movement will be. Setting the value too low makes the cursor unresponsive. Lower settings are possible if the micro processor is fast enough. For example: At an interval of 8 milliseconds, 125 movements per second will be initiated. With a base speed of 1000 each movement will move the cursor by 8 pixels.
    • Mouse wheel movements are implemented differently from cursor movements. While it's okay for the cursor to move multiple pixels at once for the mouse wheel this would lead to jerky movements. Instead, the mouse wheel operates at step size 1. Setting mouse wheel speed is done by adjusting the number of wheel movements per second.

    Constant mode

    In this mode you can define multiple different speeds for both the cursor and the mouse wheel. There is no acceleration. MS_ACL0, MS_ACL1 and MS_ACL2 change the cursor and scroll speed to their respective setting.

    You can choose whether speed selection is momentary or tap-to-select:

    • Momentary: The chosen speed is only active while you hold the respective key. When the key is raised, mouse keys returns to the unmodified speed.
    • Tap-to-select: The chosen speed is activated when you press the respective key and remains active even after the key has been raised. The default speed is that of MS_ACL1. There is no unmodified speed.

    The default speeds from slowest to fastest are as follows:

    • Momentary: MS_ACL0 < MS_ACL1 < unmodified < MS_ACL2
    • Tap-to-select: MS_ACL0 < MS_ACL1 < MS_ACL2

    To use constant speed mode, you must at least define MK_3_SPEED in your keymap’s config.h file:

    c
    #define MK_3_SPEED

    To enable momentary mode, also define MK_MOMENTARY_ACCEL:

    c
    #define MK_MOMENTARY_ACCEL

    Use the following settings if you want to adjust cursor movement or scrolling:

    DefineDefaultDescription
    MK_3_SPEEDNot definedEnable constant cursor speeds
    MK_MOMENTARY_ACCELNot definedEnable momentary speed selection
    MK_C_OFFSET_UNMOD16Cursor offset per movement (unmodified)
    MK_C_INTERVAL_UNMOD16Time between cursor movements (unmodified)
    MK_C_OFFSET_01Cursor offset per movement (MS_ACL0)
    MK_C_INTERVAL_032Time between cursor movements (MS_ACL0)
    MK_C_OFFSET_14Cursor offset per movement (MS_ACL1)
    MK_C_INTERVAL_116Time between cursor movements (MS_ACL1)
    MK_C_OFFSET_232Cursor offset per movement (MS_ACL2)
    MK_C_INTERVAL_216Time between cursor movements (MS_ACL2)
    MK_W_OFFSET_UNMOD1Scroll steps per scroll action (unmodified)
    MK_W_INTERVAL_UNMOD40Time between scroll steps (unmodified)
    MK_W_OFFSET_01Scroll steps per scroll action (MS_ACL0)
    MK_W_INTERVAL_0360Time between scroll steps (MS_ACL0)
    MK_W_OFFSET_11Scroll steps per scroll action (MS_ACL1)
    MK_W_INTERVAL_1120Time between scroll steps (MS_ACL1)
    MK_W_OFFSET_21Scroll steps per scroll action (MS_ACL2)
    MK_W_INTERVAL_220Time between scroll steps (MS_ACL2)

    Combined mode

    This mode functions like Accelerated mode, however, you can hold MS_ACL0, MS_ACL1 and MS_ACL2 to momentarily (while held) set the cursor and scroll speeds to constant speeds. When no acceleration keys are held, this mode is identical to Accelerated mode, and can be modified using all of the relevant settings.

    • MS_ACL0: This acceleration sets your cursor to the slowest possible speed. This is useful for very small and detailed movements of the cursor.
    • MS_ACL1: This acceleration sets your cursor to half the maximum (user defined) speed.
    • MS_ACL2: This acceleration sets your cursor to the maximum (computer defined) speed. This is useful for moving the cursor large distances without much accuracy.

    To use combined speed mode, you must at least define MK_COMBINED in your keymap’s config.h file:

    c
    #define MK_COMBINED

    Inertia mode

    This mode provides smooth motion, like sliding on ice. The cursor accelerates along a quadratic curve while a key is held, then glides to a stop after the key is released. Vertical and horizontal movements are tracked independently, so the cursor can move in many directions and make curves.

    Cannot be used at the same time as Kinetic mode, Constant mode, or Combined mode.

    Recommended settings in your keymap’s config.h file:

    DefineDefaultDescription
    MOUSEKEY_INERTIAundefinedEnable Inertia mode
    MOUSEKEY_DELAY150Delay between pressing a movement key and cursor movement
    MOUSEKEY_INTERVAL16Time between cursor movements in milliseconds (16 = 60fps)
    MOUSEKEY_MAX_SPEED32Maximum cursor speed at which acceleration stops
    MOUSEKEY_TIME_TO_MAX32Number of frames until maximum cursor speed is reached
    MOUSEKEY_FRICTION24How quickly the cursor stops after releasing a key
    MOUSEKEY_MOVE_DELTA1How much to move on first frame (1 strongly recommended)

    Tips:

    • Set MOUSEKEY_DELAY to roughly the same value as your host computer's key repeat delay, in ms. Recommended values are 100 to 300.
    • Set MOUSEKEY_INTERVAL to a value of 1000 / your monitor's FPS. For 60 FPS, 1000/60 = 16.
    • Set MOUSEKEY_MAX_SPEED based on your screen resolution and refresh rate, like Width / FPS. For example, 1920 pixels / 60 FPS = 32 pixels per frame.
    • Set MOUSEKEY_TIME_TO_MAX to a value of approximately FPS / 2, to make it reach full speed in half a second (or so).
    • Set MOUSEKEY_FRICTION to something between 1 and 255. Lower makes the cursor glide longer. Values from 8 to 40 are the most effective.
    • Keep MOUSEKEY_MOVE_DELTA at 1. This allows precise movements before the gliding effect starts.
    • Mouse wheel options are the same as the default accelerated mode, and do not use inertia.

    Overlapping mouse key control

    When additional overlapping mouse key is pressed, the mouse cursor will continue in a new direction with the same acceleration. The following settings can be used to reset the acceleration with new overlapping keys for more precise control if desired:

    DefineDefaultDescription
    MOUSEKEY_OVERLAP_RESETundefinedEnables overlapping mouse key control
    MOUSEKEY_OVERLAP_MOVE_DELTAMOUSEKEY_MOVE_DELTAStep size of reset movement acceleration
    MOUSEKEY_OVERLAP_WHEEL_DELTAMOUSEKEY_WHEEL_DELTAStep size of reset mouse wheel acceleration
    MOUSEKEY_OVERLAP_INTERVALMOUSEKEY_INTERVALReset time between cursor movements in milliseconds (Kinetic mode only)

    ?> This feature will not be applied on Inertial mode

    Use with PS/2 Mouse and Pointing Device

    Mouse keys button state is shared with PS/2 mouse and pointing device so mouse keys button presses can be used for clicks and drags.

    - + \ No newline at end of file diff --git a/features/oled_driver.html b/features/oled_driver.html index fc127aa9c14..bcee887a588 100644 --- a/features/oled_driver.html +++ b/features/oled_driver.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -285,7 +285,7 @@ // Returns the maximum number of lines that will fit on the OLED uint8_t oled_max_lines(void);

    WARNING

    Scrolling is unsupported on the SH1106 and SH1107.

    WARNING

    Scrolling does not work properly on the SSD1306 if the display width is smaller than 128.

    SSD1306.h Driver Conversion Guide

    Old APIRecommended New API
    struct CharacterMatrixremoved - delete all references
    iota_gfx_initoled_init
    iota_gfx_onoled_on
    iota_gfx_offoled_off
    iota_gfx_flusholed_render
    iota_gfx_write_charoled_write_char
    iota_gfx_writeoled_write
    iota_gfx_write_Poled_write_P
    iota_gfx_clear_screenoled_clear
    matrix_clearremoved - delete all references
    matrix_write_char_inneroled_write_char
    matrix_write_charoled_write_char
    matrix_writeoled_write
    matrix_write_lnoled_write_ln
    matrix_write_Poled_write_P
    matrix_write_ln_Poled_write_ln_P
    matrix_renderoled_render
    iota_gfx_taskoled_task
    iota_gfx_task_useroled_task_user
    - + \ No newline at end of file diff --git a/features/os_detection.html b/features/os_detection.html index 4dc8ef8f38e..9a35b261f14 100644 --- a/features/os_detection.html +++ b/features/os_detection.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -63,7 +63,7 @@ return false; } }

    Then please open an issue on Github with this information and tell what OS was not detected correctly and if you have any intermediate devices between keyboard and your computer.

    Credits

    Original idea is coming from FingerprintUSBHost project.

    - + \ No newline at end of file diff --git a/features/pointing_device.html b/features/pointing_device.html index e23aed052e7..294be857eeb 100644 --- a/features/pointing_device.html +++ b/features/pointing_device.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -253,7 +253,7 @@ return pointing_device_send(); }

    In general the following two functions must be implemented in appropriate locations for auto mouse to function:

    FunctionDescriptionSuggested location
    pointing_device_task_auto_mouse(report_mouse_t mouse_report)handles target layer activation and is_active status updatespointing_device_task stack
    process_auto_mouse(uint16_t keycode, keyrecord_t* record)Keycode processing for auto mouseprocess_record stack
    - + \ No newline at end of file diff --git a/features/programmable_button.html b/features/programmable_button.html index 59f6f20f7ec..83be42af0c1 100644 --- a/features/programmable_button.html +++ b/features/programmable_button.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Programmable Button

    Programmable Buttons are keys that have no predefined meaning. This means they can be processed on the host side by custom software without the operating system trying to interpret them.

    The keycodes are emitted according to the HID Telephony Device page (0x0B), Programmable Button usage (0x09). On Linux (> 5.14) they are handled automatically and translated to KEY_MACRO# keycodes (up to KEY_MACRO30).

    TIP

    Currently there is no known support in Windows or macOS. It may be possible to write a custom HID driver to receive these usages, but this is out of the scope of the QMK documentation.

    Usage

    Add the following to your rules.mk:

    make
    PROGRAMMABLE_BUTTON_ENABLE = yes

    Keycodes

    KeyAliasesDescription
    QK_PROGRAMMABLE_BUTTON_1PB_1Programmable button 1
    QK_PROGRAMMABLE_BUTTON_2PB_2Programmable button 2
    QK_PROGRAMMABLE_BUTTON_3PB_3Programmable button 3
    QK_PROGRAMMABLE_BUTTON_4PB_4Programmable button 4
    QK_PROGRAMMABLE_BUTTON_5PB_5Programmable button 5
    QK_PROGRAMMABLE_BUTTON_6PB_6Programmable button 6
    QK_PROGRAMMABLE_BUTTON_7PB_7Programmable button 7
    QK_PROGRAMMABLE_BUTTON_8PB_8Programmable button 8
    QK_PROGRAMMABLE_BUTTON_9PB_9Programmable button 9
    QK_PROGRAMMABLE_BUTTON_10PB_10Programmable button 10
    QK_PROGRAMMABLE_BUTTON_11PB_11Programmable button 11
    QK_PROGRAMMABLE_BUTTON_12PB_12Programmable button 12
    QK_PROGRAMMABLE_BUTTON_13PB_13Programmable button 13
    QK_PROGRAMMABLE_BUTTON_14PB_14Programmable button 14
    QK_PROGRAMMABLE_BUTTON_15PB_15Programmable button 15
    QK_PROGRAMMABLE_BUTTON_16PB_16Programmable button 16
    QK_PROGRAMMABLE_BUTTON_17PB_17Programmable button 17
    QK_PROGRAMMABLE_BUTTON_18PB_18Programmable button 18
    QK_PROGRAMMABLE_BUTTON_19PB_19Programmable button 19
    QK_PROGRAMMABLE_BUTTON_20PB_20Programmable button 20
    QK_PROGRAMMABLE_BUTTON_21PB_21Programmable button 21
    QK_PROGRAMMABLE_BUTTON_22PB_22Programmable button 22
    QK_PROGRAMMABLE_BUTTON_23PB_23Programmable button 23
    QK_PROGRAMMABLE_BUTTON_24PB_24Programmable button 24
    QK_PROGRAMMABLE_BUTTON_25PB_25Programmable button 25
    QK_PROGRAMMABLE_BUTTON_26PB_26Programmable button 26
    QK_PROGRAMMABLE_BUTTON_27PB_27Programmable button 27
    QK_PROGRAMMABLE_BUTTON_28PB_28Programmable button 28
    QK_PROGRAMMABLE_BUTTON_29PB_29Programmable button 29
    QK_PROGRAMMABLE_BUTTON_30PB_30Programmable button 30
    QK_PROGRAMMABLE_BUTTON_31PB_31Programmable button 31
    QK_PROGRAMMABLE_BUTTON_32PB_32Programmable button 32

    API

    void programmable_button_clear(void)

    Clear the programmable button report.


    void programmable_button_add(uint8_t index)

    Set the state of a button.

    Arguments

    • uint8_t index
      The index of the button to press, from 0 to 31.

    void programmable_button_remove(uint8_t index)

    Reset the state of a button.

    Arguments

    • uint8_t index
      The index of the button to release, from 0 to 31.

    void programmable_button_register(uint8_t index)

    Set the state of a button, and flush the report.

    Arguments

    • uint8_t index
      The index of the button to press, from 0 to 31.

    void programmable_button_unregister(uint8_t index)

    Reset the state of a button, and flush the report.

    Arguments

    • uint8_t index
      The index of the button to release, from 0 to 31.

    bool programmable_button_is_on(uint8_t index)

    Get the state of a button.

    Arguments

    • uint8_t index
      The index of the button to check, from 0 to 31.

    Return Value

    true if the button is pressed.


    void programmable_button_flush(void)

    Send the programmable button report to the host.


    uint32_t programmable_button_get_report(void)

    Get the programmable button report.

    Return Value

    The bitmask of programmable button states.


    void programmable_button_set_report(uint32_t report)

    Set the programmable button report.

    Arguments

    • uint32_t report
      A bitmask of programmable button states.
    - + \ No newline at end of file diff --git a/features/ps2_mouse.html b/features/ps2_mouse.html index 1e1626f2bd7..f80ea011c4c 100644 --- a/features/ps2_mouse.html +++ b/features/ps2_mouse.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -130,7 +130,7 @@ #define PS2_MOUSE_INVERT_V

    into config.h.

    Rotate Mouse Axes

    Transform the output of the device with a clockwise rotation of 90, 180, or 270 degrees.

    When compensating for device orientation, rotate the output the same amount in the opposite direction. E.g. if the normal device orientation is considered to be North-facing, compensate as follows:

    c
    #define PS2_MOUSE_ROTATE 270 /* Compensate for East-facing device orientation. */
    c
    #define PS2_MOUSE_ROTATE 180 /* Compensate for South-facing device orientation. */
    c
    #define PS2_MOUSE_ROTATE 90 /* Compensate for West-facing device orientation. */

    Debug Settings

    To debug the mouse, add debug_mouse = true or enable via bootmagic.

    c
    /* To debug the mouse reports */
     #define PS2_MOUSE_DEBUG_HID
     #define PS2_MOUSE_DEBUG_RAW

    Movement Hook

    Process mouse movement in the keymap before it is sent to the host. Example uses include filtering noise, adding acceleration, and automatically activating a layer. To use, define the following function in your keymap:

    c
    void ps2_mouse_moved_user(report_mouse_t *mouse_report);
    - + \ No newline at end of file diff --git a/features/rawhid.html b/features/rawhid.html index 528ffa88f18..c51a0b1a2a7 100644 --- a/features/rawhid.html +++ b/features/rawhid.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -81,7 +81,7 @@ send_raw_report([ 0x41 ])

    API

    void raw_hid_receive(uint8_t *data, uint8_t length)

    Callback, invoked when a raw HID report has been received from the host.

    Arguments


    void raw_hid_send(uint8_t *data, uint8_t length)

    Send an HID report.

    Arguments

    - + \ No newline at end of file diff --git a/features/repeat_key.html b/features/repeat_key.html index b23ba73aa26..e916067b3a8 100644 --- a/features/repeat_key.html +++ b/features/repeat_key.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -198,7 +198,7 @@ return true; } - + \ No newline at end of file diff --git a/features/rgb_matrix.html b/features/rgb_matrix.html index b2c8bb2cf9d..d6315215c34 100644 --- a/features/rgb_matrix.html +++ b/features/rgb_matrix.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -216,7 +216,7 @@ rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR); rgb_matrix_sethsv_noeeprom(HSV_OFF); }

    API

    void rgb_matrix_toggle(void)

    Toggle RGB Matrix on or off.


    void rgb_matrix_toggle_noeeprom(void)

    Toggle RGB Matrix on or off. New state is not written to EEPROM.


    void rgb_matrix_enable(void)

    Turn RGB Matrix on.


    void rgb_matrix_enable_noeeprom(void)

    Turn RGB Matrix on. New state is not written to EEPROM.


    void rgb_matrix_disable(void)

    Turn RGB Matrix off.


    void rgb_matrix_disable_noeeprom(void)

    Turn RGB Matrix off. New state is not written to EEPROM.


    bool rgb_matrix_is_enabled(void)

    Get the current enabled state of RGB Matrix.

    Return Value

    true if RGB Matrix is enabled.


    void rgb_matrix_set_color(uint8_t index, uint8_t r, uint8_t g, uint8_t b)

    Set the color of a single LED.

    This function can only be run from within an effect or indicator callback, otherwise the currently running animation will simply overwrite it on the next frame.

    Arguments


    void rgb_matrix_set_color_all(uint8_t r, uint8_t g, uint8_t b)

    Set the color of all LEDs.

    This function can only be run from within an effect or indicator callback, otherwise the currently running animation will simply overwrite it on the next frame.

    Arguments


    void rgb_matrix_mode(uint8_t mode)

    Set the currently running effect.

    Arguments


    void rgb_matrix_mode_noeeprom(uint8_t mode)

    Set the currently running effect. New state is not written to EEPROM.

    Arguments


    void rgb_matrix_step(void)

    Move to the next enabled effect.


    void rgb_matrix_step_noeeprom(void)

    Move to the next enabled effect. New state is not written to EEPROM.


    void rgb_matrix_step_reverse(void)

    Move to the previous enabled effect.


    void rgb_matrix_step_reverse_noeeprom(void)

    Move to the previous enabled effect. New state is not written to EEPROM.


    uint8_t rgb_matrix_get_mode(void)

    Get the currently running effect.

    Return Value

    The index of the currently running effect.


    void rgb_matrix_increase_hue(void)

    Increase the global effect hue.


    void rgb_matrix_increase_hue_noeeprom(void)

    Increase the global effect hue. New state is not written to EEPROM.


    void rgb_matrix_decrease_hue(void)

    Decrease the global effect hue.


    void rgb_matrix_decrease_hue_noeeprom(void)

    Decrease the global effect hue. New state is not written to EEPROM.


    uint8_t rgb_matrix_get_hue(void)

    Get the current global effect hue.

    Return Value

    The current hue value, from 0 to 255.


    void rgb_matrix_increase_sat(void)

    Increase the global effect saturation.


    void rgb_matrix_increase_sat_noeeprom(void)

    Increase the global effect saturation. New state is not written to EEPROM.


    void rgb_matrix_decrease_sat(void)

    Decrease the global effect saturation.


    void rgb_matrix_decrease_sat_noeeprom(void)

    Decrease the global effect saturation. New state is not written to EEPROM.


    uint8_t rgb_matrix_get_sat(void)

    Get the current global effect saturation.

    Return Value

    The current saturation value, from 0 to 255.


    void rgb_matrix_increase_val(void)

    Increase the global effect value (brightness).


    void rgb_matrix_increase_val_noeeprom(void)

    Increase the global effect value (brightness). New state is not written to EEPROM.


    void rgb_matrix_decrease_val(void)

    Decrease the global effect value (brightness).


    void rgb_matrix_decrease_val_noeeprom(void)

    Decrease the global effect value (brightness). New state is not written to EEPROM.


    uint8_t rgb_matrix_get_val(void)

    Get the current global effect value (brightness).

    Return Value

    The current brightness value, from 0 to 255.


    void rgb_matrix_increase_speed(void)

    Increase the effect speed.


    void rgb_matrix_increase_speed_noeeprom(void)

    Increase the effect speed. New state is not written to EEPROM.


    void rgb_matrix_decrease_speed(void)

    Decrease the effect speed.


    void rgb_matrix_decrease_speed_noeeprom(void)

    Decrease the effect speed. New state is not written to EEPROM.


    void rgb_matrix_set_speed(uint8_t speed)

    Set the effect speed.

    Arguments


    void rgb_matrix_set_speed_noeeprom(uint8_t speed)

    Set the effect speed. New state is not written to EEPROM.

    Arguments


    uint8_t rgb_matrix_get_speed(void)

    Get the current effect speed.

    Return Value

    The current effect speed, from 0 to 255.


    void rgb_matrix_sethsv(uint8_t h, uint8_t s, uint8_t v)

    Set the global effect hue, saturation, and value (brightness).

    Arguments


    void rgb_matrix_sethsv_noeeprom(uint8_t h, uint8_t s, uint8_t v)

    Set the global effect hue, saturation, and value (brightness). New state is not written to EEPROM.

    Arguments


    HSV rgb_matrix_get_hsv(void)

    Get the current global effect hue, saturation, and value (brightness).

    Return Value

    The current effect HSV as an HSV struct.


    void rgb_matrix_reload_from_eeprom(void)

    Reload the effect configuration (enabled, mode and color) from EEPROM.


    bool rgb_matrix_get_suspend_state(void)

    Get the current suspend state of RGB Matrix.

    Return Value

    true if RGB Matrix is currently in the suspended state.


    bool rgb_matrix_indicators_kb(void)

    Keyboard-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.

    Return Value

    Currently unused.


    bool rgb_matrix_indicators_user(void)

    Keymap-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.

    Return Value

    true to continue running the keyboard-level callback.


    bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max)

    Keyboard-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.

    Arguments

    Return Value

    Currently unused.


    bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max)

    Keymap-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.

    Arguments

    Return Value

    true to continue running the keyboard-level callback.

    - + \ No newline at end of file diff --git a/features/rgblight.html b/features/rgblight.html index 7d86de81655..0b314e50d08 100644 --- a/features/rgblight.html +++ b/features/rgblight.html @@ -8,12 +8,12 @@ - + - - + + - + @@ -137,7 +137,7 @@ STENO_ENABLE = no EXTRAKEY_ENABLE = yes VELOCIKEY_ENABLE = yes

    Then, while using your keyboard, you need to also turn it on with the VK_TOGG keycode, which toggles the feature on and off.

    The following light effects will all be controlled by Velocikey when it is enabled:

    Support for LED breathing effects is planned but not available yet.

    As long as Velocikey is enabled, it will control the speed regardless of any other speed setting that your RGB lights are currently on.

    Configuration

    Velocikey doesn't currently support any configuration via keyboard settings. If you want to adjust something like the speed increase or decay rate, you would need to edit velocikey.c and adjust the values there to achieve the kinds of speeds that you like.

    - + \ No newline at end of file diff --git a/features/secure.html b/features/secure.html index 50c8b225ab2..c68aff01fb1 100644 --- a/features/secure.html +++ b/features/secure.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Secure

    The secure feature aims to prevent unwanted interaction without user intervention.

    TIP

    Secure does not currently implement encryption/decryption/etc and should not be a replacement where a strong hardware/software based solution is required.

    Unlock sequence

    To unlock, the user must perform a set of actions. This can optionally be configured to be multiple keys.

    • While unlocking all keyboard input is ignored
    • Incorrect attempts will revert back to the previously locked state

    Automatic Locking

    Once unlocked, the keyboard will revert back to a locked state after the configured timeout. The timeout can be refreshed by using the secure_activity_event function, for example from one of the various hooks.

    Usage

    Add the following to your rules.mk:

    make
    SECURE_ENABLE = yes

    Keycodes

    KeyAliasesDescription
    QK_SECURE_LOCKSE_LOCKRevert back to a locked state
    QK_SECURE_UNLOCKSE_UNLKForces unlock without performing a unlock sequence
    QK_SECURE_TOGGLESE_TOGGToggle directly between locked and unlock without performing a unlock sequence
    QK_SECURE_REQUESTSE_REQRequest that user perform the unlock sequence

    Configuration

    DefineDefaultDescription
    SECURE_UNLOCK_TIMEOUT5000Timeout for the user to perform the configured unlock sequence - 0 to disable
    SECURE_IDLE_TIMEOUT60000Timeout while unlocked before returning to locked - 0 to disable
    SECURE_UNLOCK_SEQUENCE{ { 0, 0 } }Array of matrix locations describing a sequential sequence of keypresses

    Functions

    FunctionDescription
    secure_is_locked()Check if the device is currently locked
    secure_is_unlocking()Check if an unlock sequence is currently in progress
    secure_is_unlocked()Check if the device is currently unlocked
    secure_lock()Lock down the device
    secure_unlock()Force unlock the device - bypasses user unlock sequence
    secure_request_unlock()Begin listening for an unlock sequence
    secure_activity_event()Flag that user activity has happened and the device should remain unlocked
    - + \ No newline at end of file diff --git a/features/send_string.html b/features/send_string.html index 37ae54cc62e..2c6da6b75db 100644 --- a/features/send_string.html +++ b/features/send_string.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -28,7 +28,7 @@ return true; }

    Keycode Injection

    This example types out opening and closing curly braces, then taps the left arrow key to move the cursor between the two.

    c
    SEND_STRING("{}" SS_TAP(X_LEFT));

    This example types Ctrl+A, then Ctrl+C, without releasing Ctrl.

    c
    SEND_STRING(SS_LCTL("ac"));

    API

    void send_string(const char *string)

    Type out a string of ASCII characters.

    This function simply calls send_string_with_delay(string, 0).

    Arguments


    void send_string_with_delay(const char *string, uint8_t interval)

    Type out a string of ASCII characters, with a delay between each character.

    Arguments


    void send_string_P(const char *string)

    Type out a PROGMEM string of ASCII characters.

    On ARM devices, this function is simply an alias for send_string_with_delay(string, 0).

    Arguments


    void send_string_with_delay_P(const char *string, uint8_t interval)

    Type out a PROGMEM string of ASCII characters, with a delay between each character.

    On ARM devices, this function is simply an alias for send_string_with_delay(string, interval).

    Arguments


    void send_char(char ascii_code)

    Type out an ASCII character.

    Arguments


    void send_dword(uint32_t number)

    Type out an eight digit (unsigned 32-bit) hexadecimal value.

    The format is [0-9a-f]{8}, eg. 00000000 through ffffffff.

    Arguments


    void send_word(uint16_t number)

    Type out a four digit (unsigned 16-bit) hexadecimal value.

    The format is [0-9a-f]{4}, eg. 0000 through ffff.

    Arguments


    void send_byte(uint8_t number)

    Type out a two digit (8-bit) hexadecimal value.

    The format is [0-9a-f]{2}, eg. 00 through ff.

    Arguments


    void send_nibble(uint8_t number)

    Type out a single hexadecimal digit.

    The format is [0-9a-f]{1}, eg. 0 through f.

    Arguments


    void tap_random_base64(void)

    Type a pseudorandom character from the set A-Z, a-z, 0-9, + and /.


    SEND_STRING(string)

    Shortcut macro for send_string_with_delay_P(PSTR(string), 0).

    On ARM devices, this define evaluates to send_string_with_delay(string, 0).


    SEND_STRING_DELAY(string, interval)

    Shortcut macro for send_string_with_delay_P(PSTR(string), interval).

    On ARM devices, this define evaluates to send_string_with_delay(string, interval).

    - + \ No newline at end of file diff --git a/features/sequencer.html b/features/sequencer.html index 4c143056576..dcf88ef0114 100644 --- a/features/sequencer.html +++ b/features/sequencer.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Sequencer

    Since QMK has experimental support for MIDI, you can now turn your keyboard into a step sequencer!

    WARNING

    This feature is highly experimental, it has only been tested on a Planck EZ so far. Also, the scope will be limited to support the drum machine use-case to start with.

    Enable the step sequencer

    Add the following line to your rules.mk:

    make
    SEQUENCER_ENABLE = yes

    By default the sequencer has 16 steps, but you can override this setting in your config.h:

    c
    #define SEQUENCER_STEPS 32

    Tracks

    You can program up to 8 independent tracks with the step sequencer. Select the tracks you want to edit, enable or disable some steps, and start the sequence!

    Resolutions

    While the tempo defines the absolute speed at which the sequencer goes through the steps, the resolution defines the granularity of these steps (from coarser to finer).

    ResolutionDescription
    SQ_RES_2Every other beat
    SQ_RES_2TEvery 1.5 beats
    SQ_RES_4Every beat
    SQ_RES_4TThree times per 2 beats
    SQ_RES_8Twice per beat
    SQ_RES_8TThree times per beat
    SQ_RES_16Four times per beat
    SQ_RES_16TSix times per beat
    SQ_RES_32Eight times per beat

    Keycodes

    KeyAliasesDescription
    QK_SEQUENCER_ONSQ_ONStart the step sequencer
    QK_SEQUENCER_OFFSQ_OFFStop the step sequencer
    QK_SEQUENCER_TOGGLESQ_TOGGToggle the step sequencer playback
    QK_SEQUENCER_STEPS_ALLSQ_SALLEnable all the steps
    QK_SEQUENCER_STEPS_CLEARSQ_SCLRDisable all the steps
    QK_SEQUENCER_TEMPO_DOWNSQ_TMPDDecrease the tempo
    QK_SEQUENCER_TEMPO_UPSQ_TMPUIncrease the tempo
    QK_SEQUENCER_RESOLUTION_DOWNSQ_RESDChange to the slower resolution
    QK_SEQUENCER_RESOLUTION_UPSQ_RESUChange to the faster resolution
    SQ_S(n)Toggle the step n
    SQ_R(n)Set the resolution to n
    SQ_T(n)Set n as the only active track or deactivate all

    Functions

    FunctionDescription
    bool is_sequencer_on(void);Return whether the sequencer is playing
    void sequencer_toggle(void);Toggle the step sequencer playback
    void sequencer_on(void);Start the step sequencer
    void sequencer_off(void);Stop the step sequencer
    bool is_sequencer_step_on(uint8_t step);Return whether the step is currently enabled
    void sequencer_set_step(uint8_t step, bool value);Enable or disable the step
    void sequencer_set_step_on();Enable the step
    void sequencer_set_step_off();Disable the step
    void sequencer_toggle_step(uint8_t step);Toggle the step
    void sequencer_set_all_steps(bool value);Enable or disable all the steps
    void sequencer_set_all_steps_on();Enable all the steps
    void sequencer_set_all_steps_off();Disable all the steps
    uint8_t sequencer_get_tempo(void);Return the current tempo
    void sequencer_set_tempo(uint8_t tempo);Set the tempo to tempo (between 1 and 255)
    void sequencer_increase_tempo(void);Increase the tempo
    void sequencer_decrease_tempo(void);Decrease the tempo
    sequencer_resolution_t sequencer_get_resolution(void);Return the current resolution
    void sequencer_set_resolution(sequencer_resolution_t resolution);Set the resolution to resolution
    void sequencer_increase_resolution(void);Change to the faster resolution
    void sequencer_decrease_resolution(void);Change to the slower resolution
    bool is_sequencer_track_active(uint8_t track);Return whether the track is active
    void sequencer_set_track_activation(uint8_t track, bool value);Activate or deactivate the track
    void sequencer_toggle_track_activation(uint8_t track);Toggle the track
    void sequencer_activate_track(uint8_t track);Activate the track
    void sequencer_deactivate_track(uint8_t track);Deactivate the track
    void sequencer_toggle_single_active_track(uint8_t track);Set track as the only active track or deactivate all
    - + \ No newline at end of file diff --git a/features/space_cadet.html b/features/space_cadet.html index 404ab758daa..8991e009c2b 100644 --- a/features/space_cadet.html +++ b/features/space_cadet.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Space Cadet: The Future, Built In

    Steve Losh described the Space Cadet Shift quite well. Essentially, when you tap Left Shift on its own, you get an opening parenthesis; tap Right Shift on its own and you get the closing one. When held, the Shift keys function as normal. Yes, it's as cool as it sounds, and now even cooler supporting Control and Alt as well!

    Usage

    Firstly, in your keymap, do one of the following:

    • Replace the Left Shift key with SC_LSPO (Left Shift, Parenthesis Open), and Right Shift with SC_RSPC (Right Shift, Parenthesis Close).
    • Replace the Left Control key with SC_LCPO (Left Control, Parenthesis Open), and Right Control with SC_RCPC (Right Control, Parenthesis Close).
    • Replace the Left Alt key with SC_LAPO (Left Alt, Parenthesis Open), and Right Alt with SC_RAPC (Right Alt, Parenthesis Close).
    • Replace any Shift key in your keymap with SC_SENT (Right Shift, Enter).

    Keycodes

    KeycodeAliasesDescription
    QK_SPACE_CADET_LEFT_CTRL_PARENTHESIS_OPENSC_LCPOLeft Control when held, ( when tapped
    QK_SPACE_CADET_RIGHT_CTRL_PARENTHESIS_CLOSESC_RCPCRight Control when held, ) when tapped
    QK_SPACE_CADET_LEFT_SHIFT_PARENTHESIS_OPENSC_LSPOLeft Shift when held, ( when tapped
    QK_SPACE_CADET_RIGHT_SHIFT_PARENTHESIS_CLOSESC_RSPCRight Shift when held, ) when tapped
    QK_SPACE_CADET_LEFT_ALT_PARENTHESIS_OPENSC_LAPOLeft Alt when held, ( when tapped
    QK_SPACE_CADET_RIGHT_ALT_PARENTHESIS_CLOSESC_RAPCRight Alt when held, ) when tapped
    QK_SPACE_CADET_RIGHT_SHIFT_ENTERSC_SENTRight Shift when held, Enter when tapped

    Caveats

    Space Cadet's functionality can conflict with the default Command functionality when both Shift keys are held at the same time. See the Command feature for info on how to change it, or make sure that Command is disabled in your rules.mk with:

    make
    COMMAND_ENABLE = no

    Configuration

    By default Space Cadet assumes a US ANSI layout, but if your layout uses different keys for parentheses, you can redefine them in your config.h. In addition, you can redefine the modifier to send on tap, or even send no modifier at all. The new configuration defines bundle all options up into a single define of 3 key codes in this order: the Modifier when held or when used with other keys, the Tap Modifer sent when tapped (no modifier if KC_TRNS), finally the Keycode sent when tapped. Now keep in mind, mods from other keys will still apply to the Keycode if say KC_RSFT is held while tapping SC_LSPO key with KC_TRNS as the Tap Modifer.

    DefineDefaultDescription
    LSPO_KEYSKC_LSFT, LSPO_MOD, LSPO_KEYSend KC_LSFT when held, the mod and key defined by LSPO_MOD and LSPO_KEY.
    RSPC_KEYSKC_RSFT, RSPC_MOD, RSPC_KEYSend KC_RSFT when held, the mod and key defined by RSPC_MOD and RSPC_KEY.
    LCPO_KEYSKC_LCTL, KC_LSFT, KC_9Send KC_LCTL when held, the mod KC_LSFT with the key KC_9 when tapped.
    RCPC_KEYSKC_RCTL, KC_RSFT, KC_0Send KC_RCTL when held, the mod KC_RSFT with the key KC_0 when tapped.
    LAPO_KEYSKC_LALT, KC_LSFT, KC_9Send KC_LALT when held, the mod KC_LSFT with the key KC_9 when tapped.
    RAPC_KEYSKC_RALT, KC_RSFT, KC_0Send KC_RALT when held, the mod KC_RSFT with the key KC_0 when tapped.
    SFTENT_KEYSKC_RSFT, KC_TRNS, SFTENT_KEYSend KC_RSFT when held, no mod with the key SFTENT_KEY when tapped.
    SPACE_CADET_MODIFIER_CARRYOVERNot definedStore current modifiers before the hold mod is pressed and use them with the tap mod and keycode. Useful for when you frequently release a modifier before triggering Space Cadet.

    Obsolete Configuration

    These defines are used in the above defines internally to support backwards compatibility, so you may continue to use them, however the above defines open up a larger range of flexibility than before. As an example, say you want to not send any modifier when you tap just SC_LSPO, with the old defines you had an all or nothing choice of using the DISABLE_SPACE_CADET_MODIFIER define. Now you can define that key as: #define LSPO_KEYS KC_LSFT, KC_TRNS, KC_9. This tells the system to set Left Shift if held or used with other keys, then on tap send no modifier (transparent) with the KC_9.

    DefineDefaultDescription
    LSPO_KEYKC_9The keycode to send when Left Shift is tapped
    RSPC_KEYKC_0The keycode to send when Right Shift is tapped
    LSPO_MODKC_LSFTThe modifier to apply to LSPO_KEY
    RSPC_MODKC_RSFTThe modifier to apply to RSPC_KEY
    SFTENT_KEYKC_ENTThe keycode to send when the Shift key is tapped
    DISABLE_SPACE_CADET_MODIFIERNot definedIf defined, prevent the Space Cadet from applying a modifier
    - + \ No newline at end of file diff --git a/features/split_keyboard.html b/features/split_keyboard.html index c82308e5b62..5352616b348 100644 --- a/features/split_keyboard.html +++ b/features/split_keyboard.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -59,7 +59,7 @@ #define RPC_S2M_BUFFER_SIZE 48

    Hardware Configuration Options

    There are some settings that you may need to configure, based on how the hardware is set up.

    c
    #define MATRIX_ROW_PINS_RIGHT { <row pins> }
     #define MATRIX_COL_PINS_RIGHT { <col pins> }

    This allows you to specify a different set of pins for the matrix on the right side. This is useful if you have a board with differently-shaped halves that requires a different configuration (such as Keebio's Quefrency). The number of pins in the right and left matrices must be the same, if you have a board with a different number of rows or columns on one side, pad out the extra spaces with NO_PIN and make sure you add the unused rows or columns to your matrix.

    c
    #define DIRECT_PINS_RIGHT { { F1, F0, B0, C7 }, { F4, F5, F6, F7 } }

    This allows you to specify a different set of direct pins for the right side.

    c
    #define ENCODER_A_PINS_RIGHT { encoder1a, encoder2a }
     #define ENCODER_B_PINS_RIGHT { encoder1b, encoder2b }

    This allows you to specify a different set of encoder pins for the right side.

    c
    #define RGBLIGHT_SPLIT

    This option enables synchronization of the RGB Light modes between the controllers of the split keyboard. This is for keyboards that have RGB LEDs that are directly wired to the controller (that is, they are not using the "extra data" option on the TRRS cable).

    c
    #define RGBLED_SPLIT { 6, 6 }

    This sets how many LEDs are directly connected to each controller. The first number is the left side, and the second number is the right side.

    TIP

    This setting implies that RGBLIGHT_SPLIT is enabled, and will forcibly enable it, if it's not.

    c
    #define SPLIT_USB_DETECT

    Enabling this option changes the startup behavior to listen for an active USB communication to delegate which part is master and which is slave. With this option enabled and theres's USB communication, then that half assumes it is the master, otherwise it assumes it is the slave.

    Without this option, the master is the half that can detect voltage on the physical USB connection (VBUS detection).

    Enabled by default on ChibiOS/ARM.

    TIP

    This setting will stop the ability to demo using battery packs.

    c
    #define SPLIT_USB_TIMEOUT 2000

    This sets the maximum timeout when detecting master/slave when using SPLIT_USB_DETECT.

    c
    #define SPLIT_USB_TIMEOUT_POLL 10

    This sets the poll frequency when detecting master/slave when using SPLIT_USB_DETECT

    c
    #define SPLIT_WATCHDOG_ENABLE

    This will enable a software watchdog on any side delegated as slave and will reboot the keyboard if no successful communication occurs within SPLIT_WATCHDOG_TIMEOUT. This can be particularly helpful when SPLIT_USB_DETECT delegates both sides as slave in some circumstances.

    c
    #define SPLIT_WATCHDOG_TIMEOUT 3000

    This set the maximum slave timeout when waiting for communication from master when using SPLIT_WATCHDOG_ENABLE

    Hardware Considerations and Mods

    Master/slave delegation is made either by detecting voltage on VBUS connection or waiting for USB communication (SPLIT_USB_DETECT). Pro Micro boards can use VBUS detection out of the box and be used with or without SPLIT_USB_DETECT.

    Many ARM boards, but not all, do not support VBUS detection. Because it is common that ARM boards lack VBUS detection, SPLIT_USB_DETECT is automatically defined on ARM targets (technically when ChibiOS is targetted).

    Teensy boards

    Teensy boards lack VBUS detection out of the box and must have SPLIT_USB_DETECT defined. With the Teensy 2.0 and Teensy++ 2.0, there is a simple hardware mod that you can perform to add VBUS detection, so you don't need the SPLIT_USB_DETECT option.

    You'll only need a few things:

    You'll need to cut the small trace between the 5V and center pads on the back of the Teensy.

    Once you have done that, you will want to solder the diode from the 5V pad to the center pad.

    You may need to use the 5V pad from the regulator block above as the pads were too small and placed too closely together to place the Schottky diode properly.

    Teensy++ 2.0

    Additional Resources

    Nicinabox has a very nice and detailed guide for the Let's Split keyboard, that covers most everything you need to know, including troubleshooting information.

    However, the RGB Light section is out of date, as it was written long before the RGB Split code was added to QMK Firmware. Instead, wire each strip up directly to the controller.

    - + \ No newline at end of file diff --git a/features/st7565.html b/features/st7565.html index 7d4ad5f237b..b46c971b470 100644 --- a/features/st7565.html +++ b/features/st7565.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -207,7 +207,7 @@ // Returns the maximum number of lines that will fit on the display uint8_t st7565_max_lines(void); - + \ No newline at end of file diff --git a/features/stenography.html b/features/stenography.html index 53f32a300da..766cd17edf6 100644 --- a/features/stenography.html +++ b/features/stenography.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -26,7 +26,7 @@ 0 -P -B -L -G -T -S -D 0 #7 #8 #9 #A #B #C -Z

    Examples of steno strokes and the associated packet:

    Switching protocols on the fly

    If you wish to switch the serial protocol used to transfer the steno chords without having to recompile your keyboard firmware every time, you can press the QK_STENO_BOLT and QK_STENO_GEMINI keycodes in order to switch protocols on the fly.

    To enable these special keycodes, add the following lines to your rules.mk:

    make
    STENO_ENABLE = yes
     STENO_PROTOCOL = all

    If you want to switch protocols programatically, as part of a custom macro for example, don't use tap_code(QK_STENO_*), as tap_code only supports basic keycodes. Instead, you should use steno_set_mode(STENO_MODE_*), whose valid arguments are STENO_MODE_BOLT and STENO_MODE_GEMINI.

    The default protocol is Gemini PR but the last protocol used is stored in non-volatile memory so QMK will remember your choice between reboots of your keyboard — assuming that your keyboard features (emulated) EEPROM.

    Naturally, this option takes the most amount of firmware space as it needs to compile the code for all the available stenography protocols. In most cases, compiling a single stenography protocol is sufficient.

    The default value for STENO_PROTOCOL is all.

    Configuring QMK for Steno

    After enabling stenography and optionally selecting a protocol, you may also need disable mouse keys, extra keys, or another USB endpoint to prevent conflicts. The builtin USB stack for some processors only supports a certain number of USB endpoints and the virtual serial port needed for steno fills 3 of them.

    WARNING

    If you had explicitly set VIRSTER_ENABLE = no, none of the serial stenography protocols (GeminiPR, TX Bolt) will work properly. You are expected to either set it to yes, remove the line from your rules.mk or send the steno chords yourself in an alternative way using the provided interceptable hooks.

    In your keymap, create a new layer for Plover, that you can fill in with the steno keycodes. Remember to create a key to switch to the layer as well as a key for exiting the layer.

    Once you have your keyboard flashed, launch Plover. Click the 'Configure...' button. In the 'Machine' tab, select the Stenotype Machine that corresponds to your desired protocol. Click the 'Configure...' button on this tab and enter the serial port or click 'Scan'. Baud rate is fine at 9600 (although you should be able to set as high as 115200 with no issues). Use the default settings for everything else (Data Bits: 8, Stop Bits: 1, Parity: N, no flow control).

    To test your keymap, you can chord keys on your keyboard and either look at the output of the 'paper tape' (Tools > Paper Tape) or that of the 'layout display' (Tools > Layout Display). If your strokes correctly show up, you are now ready to steno!

    Learning Stenography

    Interfacing with the code

    The steno code has three interceptable hooks. If you define these functions, they will be called at certain points in processing; if they return true, processing continues, otherwise it's assumed you handled things.

    c
    bool send_steno_chord_user(steno_mode_t mode, uint8_t chord[MAX_STROKE_SIZE]);

    This function is called when a chord is about to be sent. Mode will be one of STENO_MODE_BOLT or STENO_MODE_GEMINI. This represents the actual chord that would be sent via whichever protocol. You can modify the chord provided to alter what gets sent. Remember to return true if you want the regular sending process to happen.

    c
    bool process_steno_user(uint16_t keycode, keyrecord_t *record) { return true; }

    This function is called when a keypress has come in, before it is processed. The keycode should be one of QK_STENO_BOLT, QK_STENO_GEMINI, or one of the STN_* key values.

    c
    bool post_process_steno_user(uint16_t keycode, keyrecord_t *record, steno_mode_t mode, uint8_t chord[MAX_STROKE_SIZE], int8_t n_pressed_keys);

    This function is called after a key has been processed, but before any decision about whether or not to send a chord. This is where to put hooks for things like, say, live displays of steno chords or keys.

    If record->event.pressed is false, and n_pressed_keys is 0 or 1, the chord will be sent shortly, but has not yet been sent. This relieves you of the need of keeping track of where a packet ends and another begins.

    The chord argument contains the packet of the current chord as specified by the protocol in use. This is NOT simply a list of chorded steno keys of the form [STN_E, STN_U, STN_BR, STN_GR]. Refer to the appropriate protocol section of this document to learn more about the format of the packets in your steno protocol/mode of choice.

    The n_pressed_keys argument is the number of physical keys actually being held down. This is not always equal to the number of bits set to 1 (aka the Hamming weight) in chord because it is possible to simultaneously press down four keys, then release three of those four keys and then press yet another key while the fourth finger is still holding down its key. At the end of this scenario given as an example, chord would have five bits set to 1 but n_pressed_keys would be set to 2 because there are only two keys currently being pressed down.

    Keycode Reference

    INFO

    Note: TX Bolt does not support the full set of keys. The TX Bolt implementation in QMK will map the GeminiPR keys to the nearest TX Bolt key so that one key map will work for both.

    GeminiPRTX BoltSteno Key
    STN_N1STN_NUMNumber bar #1
    STN_N2STN_NUMNumber bar #2
    STN_N3STN_NUMNumber bar #3
    STN_N4STN_NUMNumber bar #4
    STN_N5STN_NUMNumber bar #5
    STN_N6STN_NUMNumber bar #6
    STN_N7STN_NUMNumber bar #7
    STN_N8STN_NUMNumber bar #8
    STN_N9STN_NUMNumber bar #9
    STN_NASTN_NUMNumber bar #A
    STN_NBSTN_NUMNumber bar #B
    STN_NCSTN_NUMNumber bar #C
    STN_S1STN_SLS- upper
    STN_S2STN_SLS- lower
    STN_TLSTN_TLT-
    STN_KLSTN_KLK-
    STN_PLSTN_PLP-
    STN_WLSTN_WLW-
    STN_HLSTN_HLH-
    STN_RLSTN_RLR-
    STN_ASTN_AA vowel
    STN_OSTN_OO vowel
    STN_ST1STN_STR* upper-left
    STN_ST2STN_STR* lower-left
    STN_ST3STN_STR* upper-right
    STN_ST4STN_STR* lower-right
    STN_ESTN_EE vowel
    STN_USTN_UU vowel
    STN_FRSTN_FR-F
    STN_RRSTN_RR-R
    STN_PRSTN_PR-P
    STN_BRSTN_BR-B
    STN_LRSTN_LR-L
    STN_GRSTN_GR-G
    STN_TRSTN_TR-T
    STN_SRSTN_SR-S
    STN_DRSTN_DR-D
    STN_ZRSTN_ZR-Z
    STN_FN(Function)
    STN_RES1(Reset 1)
    STN_RES2(Reset 2)
    STN_PWR(Power)

    If you do not want to hit two keys with one finger combined keycodes can be used. These cause both keys to be reported as pressed or released. To use these keycodes define STENO_COMBINEDMAP in your config.h file.

    Combined keyKey1Key 2
    STN_S3STN_S1STN_S2
    STN_TKLSTN_TLSTN_KL
    STN_PWLSTN_PLSTN_WL
    STN_HRLSTN_HLSTN_RL
    STN_FRRSTN_FRSTN_RR
    STN_PBRSTN_PRSTN_BR
    STN_LGRSTN_LRSTN_GR
    STN_TSRSTN_TRSTN_SR
    STN_DZRSTN_DRSTN_ZR
    STN_AOSTN_ASTN_O
    STN_EUSTN_ESTN_U
    - + \ No newline at end of file diff --git a/features/swap_hands.html b/features/swap_hands.html index bcd07b8812e..b021787e843 100644 --- a/features/swap_hands.html +++ b/features/swap_hands.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -25,7 +25,7 @@ };

    Note that the array indices are reversed same as the matrix and the values are of type keypos_t which is {col, row} and all values are zero-based. In the example above, hand_swap_config[2][4] (third row, fifth column) would return {7, 2} (third row, eighth column). Yes, this is confusing.

    Swap Keycodes

    KeyAliasesDescription
    SH_T(kc)Momentary swap when held, kc when tapped
    QK_SWAP_HANDS_ONSH_ONTurn on hand swap
    QK_SWAP_HANDS_OFFSH_OFFTurn off hand swap
    QK_SWAP_HANDS_MOMENTARY_ONSH_MONTurn on hand swap while held
    QK_SWAP_HANDS_MOMENTARY_OFFSH_MOFFTurn off hand swap while held
    QK_SWAP_HANDS_TOGGLESH_TOGGToggle hand swap
    QK_SWAP_HANDS_TAP_TOGGLESH_TTMomentary swap when held, toggle when tapped
    QK_SWAP_HANDS_ONE_SHOTSH_OSTurn on hand swap while held or until next key press

    SH_TT swap-hands tap-toggle key is similar to layer tap-toggle. Tapping repeatedly (5 taps by default) will toggle swap-hands on or off, like SH_TOGG. Tap-toggle count can be changed by defining a value for TAPPING_TOGGLE.

    Encoder Mapping

    When using an encoder mapping, it's also able to handle swapping encoders between sides, too.

    Encoder indexes are defined as left-to-right, and the extent of the array needs to match the number of encoders on the keyboard.

    As an example, if a split keyboard has a single encoder per side, you can swap the order by using the following code in your keymap:

    c
    #if defined(SWAP_HANDS_ENABLE) && defined(ENCODER_MAP_ENABLE)
     const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = { 1, 0 };
     #endif

    Functions

    User callback functions to manipulate Swap-Hands:

    FunctionDescription
    swap_hands_on()Turns Swap-Hands on.
    swap_hands_off()Turns Swap-Hands off.
    swap_hands_toggle()Toggles Swap-Hands.
    is_swap_hands_on()Returns true if Swap-Hands is currently on.
    - + \ No newline at end of file diff --git a/features/tap_dance.html b/features/tap_dance.html index 744fda0fddb..a4b563df532 100644 --- a/features/tap_dance.html +++ b/features/tap_dance.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -418,7 +418,7 @@ return TAPPING_TERM; } }

    The above code is similar to that used in previous examples. The one point to note is that we need to be able to check which layers are active at any time so we can toggle them if needed. To do this we use the layer_state_is(layer) function which returns true if the given layer is active.

    The use of cur_dance() and ql_tap_state mirrors the above examples.

    The case: TD_SINGLE_TAP in ql_finished is similar to the above examples. The TD_SINGLE_HOLD case works in conjunction with ql_reset() to switch to _MY_LAYER while the tap dance key is held, and to switch away from _MY_LAYER when the key is released. This mirrors the use of MO(_MY_LAYER). The TD_DOUBLE_TAP case works by checking whether _MY_LAYER is the active layer, and toggling it on or off accordingly. This mirrors the use of TG(_MY_LAYER).

    tap_dance_actions[] works similar to the above examples. Note that, additionally, I set a longer tapping term for the tap dance keys. This is because I like my TAPPING_TERM to be short (~175ms) for my non-tap-dance keys but find that this is too quick for me to reliably complete tap dance actions - thus the increased time of 275ms here. In order for the per-key tapping terms to take effect, TAPPING_TERM_PER_KEY must be defined in your config.h.

    Finally, to get this tap dance key working, be sure to include TD(QUOT_LAYR) in your keymaps[].

    - + \ No newline at end of file diff --git a/features/tri_layer.html b/features/tri_layer.html index 6294adecbf4..f9f812cb290 100644 --- a/features/tri_layer.html +++ b/features/tri_layer.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Tri Layers

    This enables support for the OLKB style "Tri Layer" keycodes. These function similar to the MO (momentary) function key, but if both the "Lower" and "Upper" keys are pressed, it activates a third "Adjust" layer. To enable this functionality, add this line to your rules.mk:

    make
    TRI_LAYER_ENABLE = yes

    Note that the "upper", "lower" and "adjust" names don't have a particular significance, they are just used to identify and clarify the behavior. Layers are processed from highest numeric value to lowest, however the values are not required to be consecutive.

    For a detailed explanation of how the layer stack works, check out Keymap Overview.

    Keycodes

    KeycodeAliasDescription
    QK_TRI_LAYER_LOWERTL_LOWRMomentarily enables the "lower" layer. Enables the "adjust" layer if the "upper" layer is also enabled.
    QK_TRI_LAYER_UPPERTL_UPPRMomentarily enables the "upper" layer. Enables the "adjust" layer if the "lower" layer is also enabled.

    Configuration

    To change the default values for the layers, you can change these defines, in your config.h

    Config nameDefaultDescription
    TRI_LAYER_LOWER_LAYER1Sets the default for the "lower" layer.
    TRI_LAYER_UPPER_LAYER2Sets the default for the "upper" layer.
    TRI_LAYER_ADJUST_LAYER3Sets the default for the "adjust" layer.

    Eg, if you wanted to set the "Adjust" layer to be layer 5, you'd add this to your config.h:

    c
    #define TRI_LAYER_ADJUST_LAYER 5

    Functions

    Function nameDescription
    set_tri_layer_lower_layer(layer)Changes the "lower" layer*.
    set_tri_layer_upper_layer(layer)Changes the "upper" layer*.
    set_tri_layer_adjust_layer(layer)Changes the "adjust" layer*.
    set_tri_layer_layers(lower, upper, adjust)Sets the "lower", "upper" and "adjust" layers*.
    get_tri_layer_lower_layer()Gets the current "lower" layer.
    get_tri_layer_upper_layer()Gets the current "upper" layer.
    get_tri_layer_adjust_layer()Gets the current "adjust" layer.

    WARNING

    Note: these settings are not persistent, and will be reset to the default on power loss or power cycling of the controller.

    - + \ No newline at end of file diff --git a/features/unicode.html b/features/unicode.html index e29655f534c..52d65d03848 100644 --- a/features/unicode.html +++ b/features/unicode.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -20,7 +20,7 @@
    Skip to content

    Unicode

    With a little help from your OS, practically any Unicode character can be input using your keyboard.

    Caveats

    There are some limitations to this feature. Because there is no "standard" method of Unicode input across all operating systems, each of them require their own setup process on both the host and in the firmware, which may involve installation of additional software. This also means Unicode input will not "just work" when the keyboard is plugged into another device.

    Usage

    The core Unicode API can be used purely programmatically. However, there are also additional subsystems which build on top of it and come with keycodes to make things easier. See below for more details.

    Add the following to your keymap's rules.mk:

    make
    UNICODE_COMMON = yes

    Basic Configuration

    Add the following to your config.h:

    DefineDefaultDescription
    UNICODE_KEY_MACKC_LEFT_ALTThe key to hold when beginning a Unicode sequence with the macOS input mode
    UNICODE_KEY_LNXLCTL(LSFT(KC_U))The key to tap when beginning a Unicode sequence with the Linux input mode
    UNICODE_KEY_WINCKC_RIGHT_ALTThe key to hold when beginning a Unicode sequence with the WinCompose input mode
    UNICODE_SELECTED_MODES-1A comma separated list of input modes for cycling through
    UNICODE_CYCLE_PERSISTtrueWhether to persist the current Unicode input mode to EEPROM
    UNICODE_TYPE_DELAY10The amount of time to wait, in milliseconds, between Unicode sequence keystrokes

    Audio Feedback

    If you have the Audio feature enabled on your board, you can configure it to play sounds when the input mode is changed.

    Add the following to your config.h:

    DefineDefaultDescription
    UNICODE_SONG_MACn/aThe song to play when the macOS input mode is selected
    UNICODE_SONG_LNXn/aThe song to play when the Linux input mode is selected
    UNICODE_SONG_BSDn/aThe song to play when the BSD input mode is selected
    UNICODE_SONG_WINn/aThe song to play when the Windows input mode is selected
    UNICODE_SONG_WINCn/aThe song to play when the WinCompose input mode is selected

    Input Subsystems

    Each of these subsystems have their own pros and cons in terms of flexibility and ease of use. Choose the one that best fits your needs.

    This is the easiest to use, albeit somewhat limited. It supports code points up to U+7FFF, which covers characters for most modern languages (including East Asian), as well as many symbols, but does not include emoji.

    To enable Basic Unicode, add the following to your rules.mk:

    make
    UNICODE_ENABLE = yes

    You can then add UC(c) keycodes to your keymap, where c is the code point of the desired character (in hexadecimal - the U+ prefix will not work). For example, UC(0x40B) will output Ћ, and UC(0x30C4) will output .

    Input Modes

    Unicode input works by typing a sequence of characters, similar to a macro. However, since this sequence depends on your OS, you will need to prepare both your host machine and QMK to recognise and send the correct Unicode input sequences respectively.

    To set the list of enabled input modes, add the UNICODE_SELECTED_MODES define to your keymap's config.h, for example:

    c
    #define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX
     // or
     #define UNICODE_SELECTED_MODES UNICODE_MODE_MACOS, UNICODE_MODE_WINCOMPOSE

    These modes can then be cycled through using the UC_NEXT and UC_PREV keycodes. You can also switch to any input mode, even if it is not specified in UNICODE_SELECTED_MODES, using their respective keycodes.

    If your keyboard has working EEPROM, it will remember the last used input mode and continue using it on the next power up. This can be disabled by defining UNICODE_CYCLE_PERSIST to false.

    Mode Name: UNICODE_MODE_MACOS

    macOS has built-in support for Unicode input as its own input source. It supports all possible code points by way of surrogate pairs for code points above U+FFFF.

    To enable, go to System Preferences → Keyboard → Input Sources, then add Unicode Hex Input to the list (under Other), and activate it from the input dropdown in the menu bar. Note that this may disable some Option-based shortcuts such as Option+Left and Option+Right.

    Keycodes

    KeyAliasesDescription
    UC(c)Send Unicode code point c, up to 0x7FFF
    UM(i)Send Unicode code point at index i in unicode_map
    UP(i, j)Send Unicode code point at index i, or j if Shift/Caps is on
    QK_UNICODE_MODE_NEXTUC_NEXTCycle through selected input modes
    QK_UNICODE_MODE_PREVIOUSUC_PREVCycle through selected input modes in reverse
    QK_UNICODE_MODE_MACOSUC_MACSwitch to macOS input
    QK_UNICODE_MODE_LINUXUC_LINXSwitch to Linux input
    QK_UNICODE_MODE_WINDOWSUC_WINSwitch to Windows input
    QK_UNICODE_MODE_BSDUC_BSDSwitch to BSD input (not implemented)
    QK_UNICODE_MODE_WINCOMPOSEUC_WINCSwitch to Windows input using WinCompose
    QK_UNICODE_MODE_EMACSUC_EMACSwitch to emacs (C-x-8 RET)

    API

    uint8_t get_unicode_input_mode(void)

    Get the current Unicode input mode.

    Return Value

    The currently active Unicode input mode.


    void set_unicode_input_mode(uint8_t mode)

    Set the Unicode input mode.

    Arguments

    • uint8_t mode
      The input mode to set.

    void unicode_input_mode_step(void)

    Change to the next Unicode input mode.


    void unicode_input_mode_step_reverse(void)

    Change to the previous Unicode input mode.


    void unicode_input_mode_set_user(uint8_t input_mode)

    User-level callback, invoked when the input mode is changed.

    Arguments

    • uint8_t input_mode
      The new input mode.

    void unicode_input_mode_set_kb(uint8_t input_mode)

    Keyboard-level callback, invoked when the input mode is changed.

    Arguments

    • uint8_t input_mode
      The new input mode.

    void unicode_input_start(void)

    Begin the Unicode input sequence. The exact behavior depends on the currently selected input mode:

    • macOS: Hold UNICODE_KEY_MAC
    • Linux: Tap UNICODE_KEY_LNX
    • WinCompose: Tap UNICODE_KEY_WINC, then U
    • HexNumpad: Hold Left Alt, then tap Numpad +
    • Emacs: Tap Ctrl+X, then 8, then Enter

    This function is weakly defined, and can be overridden in user code.


    void unicode_input_finish(void)

    Complete the Unicode input sequence. The exact behavior depends on the currently selected input mode:

    • macOS: Release UNICODE_KEY_MAC
    • Linux: Tap Space
    • WinCompose: Tap Enter
    • HexNumpad: Release Left Alt
    • Emacs: Tap Enter

    This function is weakly defined, and can be overridden in user code.


    void unicode_input_cancel(void)

    Cancel the Unicode input sequence. The exact behavior depends on the currently selected input mode:

    • macOS: Release UNICODE_KEY_MAC
    • Linux: Tap Escape
    • WinCompose: Tap Escape
    • HexNumpad: Release Left Alt
    • Emacs: Tap Ctrl+G

    This function is weakly defined, and can be overridden in user code.


    void register_unicode(uint32_t code_point)

    Input a single Unicode character. A surrogate pair will be sent if required by the input mode.

    Arguments

    • uint32_t code_point
      The code point of the character to send.

    void send_unicode_string(const char *str)

    Send a string containing Unicode characters.

    Arguments

    • const char *str
      The string to send.

    uint8_t unicodemap_index(uint16_t keycode)

    Get the index into the unicode_map array for the given keycode, respecting shift state for pair keycodes.

    Arguments

    • uint16_t keycode
      The Unicode Map keycode to get the index of.

    Return Value

    An index into the unicode_map array.


    uint32_t unicodemap_get_code_point(uint8_t index)

    Get the code point for the given index in the unicode_map array.

    Arguments

    • uint8_t index
      The index into the unicode_map array.

    Return Value

    A Unicode code point value.


    void register_unicodemap(uint8_t index)

    Send the code point for the given index in the unicode_map array.

    Arguments

    • uint8_t index
      The index into the unicode_map array.

    void ucis_start(void)

    Begin the input sequence.


    bool ucis_active(void)

    Whether UCIS is currently active.

    Return Value

    true if UCIS is active.


    uint8_t ucis_count(void)

    Get the number of characters in the input sequence buffer.

    Return Value

    The current input sequence buffer length.


    bool ucis_add(uint16_t keycode)

    Add the given keycode to the input sequence buffer.

    Arguments

    • uint16_t keycode
      The keycode to add. Must be between KC_A and KC_Z, or KC_1 and KC_0.

    Return Value

    true if the keycode was added.


    bool ucis_remove_last(void)

    Remove the last character from the input sequence buffer.

    Return Value

    true if the sequence was not empty.


    void ucis_finish(void)

    Mark the input sequence as complete, and attempt to match.


    void ucis_cancel(void)

    Cancel the input sequence.


    void register_ucis(void)

    Send the code point(s) for the given UCIS index.

    Arguments

    • uint8_t index
      The index into the UCIS symbol table.
    - + \ No newline at end of file diff --git a/features/wpm.html b/features/wpm.html index 867c2c99f41..103d5f6246e 100644 --- a/features/wpm.html +++ b/features/wpm.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -44,7 +44,7 @@ return 1; } } - + \ No newline at end of file diff --git a/flashing.html b/flashing.html index eedb77d5f1a..74062037f7f 100644 --- a/flashing.html +++ b/flashing.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -39,7 +39,7 @@ BOOTLOADER = tinyuf2

    Compatible flashers:

    Flashing sequence:

    1. Enter the bootloader using any of the following methods:
    2. Wait for the OS to detect the device
    3. Copy the .uf2 file to the new USB disk
    4. Wait for the keyboard to become available

    or

    CLI Flashing sequence:

    1. Enter the bootloader using any of the following methods:
    2. Wait for the OS to detect the device
    3. Flash via QMK CLI eg. qmk flash --keyboard handwired/onekey/blackpill_f411_tinyuf2 --keymap default
    4. Wait for the keyboard to become available

    make Targets

    uf2boot

    Keyboards may opt into supporting the uf2boot bootloader. This is currently only supported on F103.

    The rules.mk setting for this bootloader is uf2boot, and can be specified at the keymap or user level.

    To ensure compatibility with the uf2boot bootloader, make sure this block is present in your rules.mk:

    make
    # Bootloader selection
     BOOTLOADER = uf2boot

    Compatible flashers:

    Flashing sequence:

    1. Enter the bootloader using any of the following methods:
    2. Wait for the OS to detect the device
    3. Copy the .uf2 file to the new USB disk
    4. Wait for the keyboard to become available

    or

    CLI Flashing sequence:

    1. Enter the bootloader using any of the following methods:
    2. Wait for the OS to detect the device
    3. Flash via QMK CLI eg. qmk flash --keyboard handwired/onekey/bluepill_uf2boot --keymap default
    4. Wait for the keyboard to become available

    make Targets

    Raspberry Pi RP2040 UF2

    The rules.mk setting for this bootloader is rp2040, and can be specified at the keymap or user level.

    To ensure compatibility with the rp2040 bootloader, make sure this block is present in your rules.mk:

    make
    # Bootloader selection
     BOOTLOADER = rp2040

    Compatible flashers:

    Flashing sequence:

    1. Enter the bootloader using any of the following methods:
    2. Wait for the OS to detect the device
    3. Copy the .uf2 file to the new USB disk
    4. Wait for the keyboard to become available

    or

    CLI Flashing sequence:

    1. Enter the bootloader using any of the following methods:
    2. Wait for the OS to detect the device
    3. Flash via QMK CLI eg. qmk flash --keyboard handwired/onekey/rpi_pico --keymap default
    4. Wait for the keyboard to become available

    1: This works only if the controller has been flashed with QMK Firmware with RP2040_BOOTLOADER_DOUBLE_TAP_RESET defined.

    - + \ No newline at end of file diff --git a/getting_started_docker.html b/getting_started_docker.html index e9c13630770..ff4f134729a 100644 --- a/getting_started_docker.html +++ b/getting_started_docker.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -22,7 +22,7 @@ # For example: util/docker_build.sh planck/rev6:default

    This will compile the desired keyboard/keymap and leave the resulting .hex or .bin file in the QMK directory for you to flash. If :keymap is omitted, all keymaps are used. Note that the parameter format is the same as when building with make.

    There is also support for building and flashing the keyboard straight from Docker by specifying the target as well:

    util/docker_build.sh keyboard:keymap:target
     # For example: util/docker_build.sh planck/rev6:default:flash

    Note that mass storage bootloaders are not supported by the flash target. In this case you will have to manually copy the firmware file to the keyboard.

    You can also start the script without any parameters, in which case it will ask you to input the build parameters one by one, which you may find easier to use:

    util/docker_build.sh
     # Reads parameters as input (leave blank for all keyboards/keymaps)

    You can manually set which container runtime you want to use by setting the RUNTIME environment variable to it's name or path. By default docker or podman are automatically detected and docker is preferred over podman.

    RUNTIME="podman" util/docker_build.sh keyboard:keymap:target

    FAQ

    Why can't I flash on Windows/macOS

    On Windows and macOS, it requires Docker Machine to be running. This is tedious to set up, so it's not recommended; use QMK Toolbox instead.

    WARNING

    Docker for Windows requires Hyper-V to be enabled. This means that it cannot work on versions of Windows which don't have Hyper-V, such as Windows 7, Windows 8 and Windows 10 Home.

    - + \ No newline at end of file diff --git a/getting_started_github.html b/getting_started_github.html index 59365845b04..19b2ff9306e 100644 --- a/getting_started_github.html +++ b/getting_started_github.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -43,7 +43,7 @@ remote: Resolving deltas: 100% (1/1), completed with 1 local objects. To https://github.com/whoeveryouare/qmk_firmware.git + 20043e64...7da94ac5 master -> master

    Your changes now exist on your fork on GitHub - if you go back there (https://github.com/<whoeveryouare>/qmk_firmware), you can create a "New Pull Request" by clicking this button:

    New Pull Request

    Here you'll be able to see exactly what you've committed - if it all looks good, you can finalize it by clicking "Create Pull Request":

    Create Pull Request

    After submitting, we may talk to you about your changes, ask that you make changes, and eventually accept it! Thanks for contributing to QMK 😃

    - + \ No newline at end of file diff --git a/getting_started_introduction.html b/getting_started_introduction.html index dfecb14f0a5..ad5390a2b0f 100644 --- a/getting_started_introduction.html +++ b/getting_started_introduction.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -22,7 +22,7 @@ // overrides go here! #undef MY_SETTING #define MY_SETTING 4 - + \ No newline at end of file diff --git a/getting_started_make_guide.html b/getting_started_make_guide.html index f1ed8176b31..f732893a671 100644 --- a/getting_started_make_guide.html +++ b/getting_started_make_guide.html @@ -8,18 +8,18 @@ - + - - - + + +
    Skip to content

    More Detailed make Instructions

    The full syntax of the make command is <keyboard_folder>:<keymap>:<target>, where:

    • <keyboard_folder> is the path of the keyboard, for example planck
      • Use all to compile all keyboards
      • Specify the path to compile a revision, for example planck/rev4 or planck/rev3
      • If the keyboard doesn't have any folders, it can be left out
      • To compile the default folder, you can leave it out
    • <keymap> is the name of the keymap, for example algernon
      • Use all to compile all keymaps
    • <target> will be explained in more detail below.

    The <target> means the following

    • If no target is given, then it's the same as all below
    • all compiles as many keyboard/revision/keymap combinations as specified. For example, make planck/rev4:default will generate a single .hex, while make planck/rev4:all will generate a hex for every keymap available to the planck.
    • flash, dfu, teensy, avrdude, dfu-util, or bootloadhid compile and upload the firmware to the keyboard. If the compilation fails, then nothing will be uploaded. The programmer to use depends on the keyboard. For most keyboards it's dfu, but for ChibiOS keyboards you should use dfu-util, and teensy for standard Teensys. To find out which command you should use for your keyboard, check the keyboard specific readme. Visit the Flashing Firmware guide for more details of the available bootloaders.
      • Note: some operating systems need privileged access for these commands to work. This means that you may need to setup udev rules to access these without root access, or to run the command with root access (sudo make planck/rev4:default:flash).
    • clean, cleans the build output folders to make sure that everything is built from scratch. Run this before normal compilation if you have some unexplainable problems.
    • distclean removes .hex files and .bin files.

    The following targets are for developers:

    • show_path shows the path of the source and object files.
    • dump_vars dumps the makefile variable.
    • objs-size displays the size of individual object files.
    • show_build_options shows the options set in 'rules.mk'.
    • check-md5 displays the md5 checksum of the generated binary file.

    You can also add extra options at the end of the make command line, after the target

    • make COLOR=false - turns off color output
    • make SILENT=true - turns off output besides errors/warnings
    • make VERBOSE=true - outputs all of the gcc stuff (not interesting, unless you need to debug)
    • make VERBOSE_LD_CMD=yes - execute the ld command with the -v option.
    • make VERBOSE_AS_CMD=yes - execute the as command with the -v option.
    • make VERBOSE_C_CMD=<c_source_file> - add the -v option when compiling the specified C source file.
    • make DUMP_C_MACROS=<c_source_file> - dump preprocessor macros when compiling the specified C source file.
    • make DUMP_C_MACROS=<c_source_file> > <logfile> - dump preprocessor macros to <logfile> when compiling the specified C source file.
    • make VERBOSE_C_INCLUDE=<c_source_file> - dumps the file names to be included when compiling the specified C source file.
    • make VERBOSE_C_INCLUDE=<c_source_file> 2> <logfile> - dumps the file names to be included to <logfile> when compiling the specified C source file.

    The make command itself also has some additional options, type make --help for more information. The most useful is probably -jx, which specifies that you want to compile using more than one CPU, the x represents the number of CPUs that you want to use. Setting that can greatly reduce the compile times, especially if you are compiling many keyboards/keymaps. I usually set it to one less than the number of CPUs that I have, so that I have some left for doing other things while it's compiling. Note that not all operating systems and make versions supports that option.

    Here are some examples commands

    • make all:all builds everything (all keyboard folders, all keymaps). Running just make from the root will also run this.
    • make ergodox_infinity:algernon:clean will clean the build output of the Ergodox Infinity keyboard.
    • make planck/rev4:default:flash COLOR=false builds and uploads the keymap without color output.

    rules.mk Options

    Set these variables to no to disable them, and yes to enable them.

    BOOTMAGIC_ENABLE

    This allows you to hold a key (usually Escape by default) to reset the EEPROM settings that persist over power loss and ready your keyboard to accept new firmware.

    MOUSEKEY_ENABLE

    This gives you control over cursor movements and clicks via keycodes/custom functions.

    EXTRAKEY_ENABLE

    This allows you to use the system and audio control key codes.

    CONSOLE_ENABLE

    This allows you to print messages that can be read using hid_listen.

    By default, all debug (dprint) print (print, xprintf), and user print (uprint) messages will be enabled. This will eat up a significant portion of the flash and may make the keyboard .hex file too big to program.

    To disable debug messages (dprint) and reduce the .hex file size, include #define NO_DEBUG in your config.h file.

    To disable print messages (print, xprintf) and user print messages (uprint) and reduce the .hex file size, include #define NO_PRINT in your config.h file.

    To disable print messages (print, xprintf) and KEEP user print messages (uprint), include #define USER_PRINT in your config.h file (do not also include #define NO_PRINT in this case).

    To see the text, open hid_listen and enjoy looking at your printed messages.

    NOTE: Do not include uprint messages in anything other than your keymap code. It must not be used within the QMK system framework. Otherwise, you will bloat other people's .hex files.

    COMMAND_ENABLE

    This enables magic commands, typically fired with the default magic key combo LSHIFT+RSHIFT+KEY. Magic commands include turning on debugging messages (MAGIC+D) or temporarily toggling NKRO (MAGIC+N).

    SLEEP_LED_ENABLE

    Enables your LED to breath while your computer is sleeping. Timer1 is being used here. This feature is largely unused and untested, and needs updating/abstracting.

    NKRO_ENABLE

    This allows the keyboard to tell the host OS that up to 248 keys are held down at once (default without NKRO is 6). NKRO is off by default, even if NKRO_ENABLE is set. NKRO can be forced by adding #define FORCE_NKRO to your config.h or by binding MAGIC_TOGGLE_NKRO to a key and then hitting the key.

    BACKLIGHT_ENABLE

    This enables the in-switch LED backlighting. You can specify the backlight pin by putting this in your config.h:

    #define BACKLIGHT_PIN B7
     

    MIDI_ENABLE

    This enables MIDI sending and receiving with your keyboard. To enter MIDI send mode, you can use the keycode MI_ON, and MI_OFF to turn it off. This is a largely untested feature, but more information can be found in the quantum/quantum.c file.

    UNICODE_ENABLE

    This allows you to send Unicode characters using UC(<code point>) in your keymap. Code points up to 0x7FFF are supported. This covers characters for most modern languages, as well as symbols, but it doesn't cover emoji.

    UNICODEMAP_ENABLE

    This allows you to send Unicode characters using UM(<map index>) in your keymap. You will need to maintain a mapping table in your keymap file. All possible code points (up to 0x10FFFF) are supported.

    UCIS_ENABLE

    This allows you to send Unicode characters by inputting a mnemonic corresponding to the character you want to send. You will need to maintain a mapping table in your keymap file. All possible code points (up to 0x10FFFF) are supported.

    For further details, as well as limitations, see the Unicode page.

    AUDIO_ENABLE

    This allows you output audio on the C6 pin (needs abstracting). See the audio page for more information.

    VARIABLE_TRACE

    Use this to debug changes to variable values, see the tracing variables section of the Unit Testing page for more information.

    KEY_LOCK_ENABLE

    This enables key lock.

    SPLIT_KEYBOARD

    This enables split keyboard support (dual MCU like the let's split and bakingpy's boards) and includes all necessary files located at quantum/split_common

    SPLIT_TRANSPORT

    As there is no standard split communication driver for ARM-based split keyboards yet, SPLIT_TRANSPORT = custom must be used for these. It will prevent the standard split keyboard communication code (which is AVR-specific) from being included, allowing a custom implementation to be used.

    CUSTOM_MATRIX

    Lets you replace the default matrix scanning routine with your own code. For further details, see the Custom Matrix page.

    DEBOUNCE_TYPE

    Lets you replace the default key debouncing routine with an alternative one. If custom you will need to provide your own implementation.

    DEFERRED_EXEC_ENABLE

    Enables deferred executor support -- timed delays before callbacks are invoked. See deferred execution for more information.

    Customizing Makefile Options on a Per-Keymap Basis

    If your keymap directory has a file called rules.mk any options you set in that file will take precedence over other rules.mk options for your particular keyboard.

    So let's say your keyboard's rules.mk has BACKLIGHT_ENABLE = yes. You want your particular keyboard to not have the backlight, so you make a file called rules.mk and specify BACKLIGHT_ENABLE = no.

    - + \ No newline at end of file diff --git a/hand_wire.html b/hand_wire.html index 6a930b341f2..49f55910c9c 100644 --- a/hand_wire.html +++ b/hand_wire.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -25,7 +25,7 @@ Ψ To start working on things, `cd` into keyboards/gh62, Ψ or open the directory in your preferred text editor. Ψ And build with qmk compile -kb gh62 -km default.

    Flashing the Firmware

    Install QMK Toolbox.

    QMK Toolbox

    Under "Local File" navigate to your newly created .hex file. Under "Microcontroller", select the corresponding one for your controller board (common ones available here).

    Plug in your keyboard and press the reset button (or short the Reset and Ground pins if there is no button) and click the "Flash" button in QMK toolbox.

    Testing Your Firmware

    Use a website such as QMK Configurator's Keyboard Tester, Keyboard Tester, or Keyboard Checker or just open a text editor and try typing - you should get the characters that you put into your keymap. Test each key, and make a note of the ones that aren't working. Here's a quick trouble-shooting guide for non-working keys:

    1. Flip the keyboard back over and short the keyswitch's contacts with a piece wire - this will eliminate the possibility of the keyswitch being bad and needing to be replaced.
    2. Check the solder points on the keyswitch - these need to be plump and whole. If you touch it with a moderate amount of force and it comes apart, it's not strong enough.
    3. Check the solder joints on the diode - if the diode is loose, part of your row may register, while the other may not.
    4. Check the solder joints on the columns - if your column wiring is loose, part or all of the column may not work.
    5. Check the solder joints on both sides of the wires going to/from the Teensy - the wires need to be fully soldered and connect to both sides.
    6. Check the <project_name>.h file for errors and incorrectly placed KC_NOs - if you're unsure where they should be, instead duplicate a kxy variable.
    7. Check to make sure you actually compiled the firmware and flashed the Teensy correctly. Unless you got error messages in the terminal, or a pop-up during flashing, you probably did everything correctly.
    8. Use a multimeter to check that the switch is actually closing when actuated (completing the circuit when pressed down).

    If you've done all of these things, keep in mind that sometimes you might have had multiple things affecting the keyswitch, so it doesn't hurt to test the keyswitch by shorting it out at the end.

    Finishing up

    Once you have confirmed that the keyboard is working, if you have used a seperate (non handwire specific) controller you will want to secure it in place. This can be done in many different ways e.g. hot glue, double sided sticky tape, 3D printed caddy, electrical tape.

    If you found this fullfilling you could experiment by adding additional features such as in switch LEDs, in switch RGB, RGB underglow or even an OLED display!

    There are a lot of possibilities inside the firmware - explore docs.qmk.fm for a full feature list, and dive into the different keyboards to see how people use all of them. You can always stop by the OLKB subreddit or QMK Discord for help!

    Legacy Content

    This page used to include more content. We have moved a section that used to be part of this page its own page. Everything below this point is simply a redirect so that people following old links on the web find what they're looking for.

    Preamble: How a Keyboard Matrix Works (and why we need diodes)

    - + \ No newline at end of file diff --git a/hardware_drivers.html b/hardware_drivers.html index 63ab1474cc7..f74b4ae3a5c 100644 --- a/hardware_drivers.html +++ b/hardware_drivers.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    QMK Hardware Drivers

    QMK is used on a lot of different hardware. While support for the most common MCU's and matrix configurations is built-in there are a number of drivers that can be added to a keyboard to support additional hardware. Examples include mice and other pointing devices, i/o expanders for split keyboards, bluetooth modules, and LCD, OLED, and TFT screens.

    Available Drivers

    ProMicro (AVR Only)

    Support for addressing pins on the ProMicro by their Arduino name rather than their AVR name. This needs to be better documented, if you are trying to do this and reading the code doesn't help please open an issue and we can help you through the process.

    SSD1306 OLED Driver

    Support for SSD1306 based OLED displays. For more information see the OLED Driver Feature page.

    WS2812

    Support for WS2811/WS2812{a,b,c} LED's. For more information see the RGB Light page.

    IS31FL3731

    Support for up to 2 drivers. Each driver impliments 2 charlieplex matrices to individually address LEDs using I2C. This allows up to 144 same color LEDs or 32 RGB LEDs. For more information on how to setup the driver see the RGB Matrix page.

    IS31FL3733

    Support for up to a single driver with room for expansion. Each driver can control 192 individual LEDs or 64 RGB LEDs. For more information on how to setup the driver see the RGB Matrix page.

    24xx series external I2C EEPROM

    Support for an external I2C-based EEPROM instead of using the on-chip EEPROM. For more information on how to setup the driver see the EEPROM Driver page.

    - + \ No newline at end of file diff --git a/hardware_keyboard_guidelines.html b/hardware_keyboard_guidelines.html index 6339a22268a..07cb7b322fd 100644 --- a/hardware_keyboard_guidelines.html +++ b/hardware_keyboard_guidelines.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -56,7 +56,7 @@ RGBLIGHT_ENABLE = yes OPT_DEFS += -DRGBLIGHT_LED_COUNT=6 endif

    TIP

    See build_keyboard.mk and common_features.mk for more details.

    <keyboard_name.c>

    This is where you will write custom code for your keyboard. Typically you will write code to initialize and interface with the hardware in your keyboard. If your keyboard consists of only a key matrix with no LEDs, speakers, or other auxiliary hardware this file can be blank.

    The following functions are typically defined in this file:

    <keyboard_name.h>

    This file is used to define the matrix for your keyboard. You should define at least one C macro which translates an array into a matrix representing the physical switch matrix for your keyboard. If it's possible to build your keyboard with multiple layouts you should define additional macros.

    If you have only a single layout you should call this macro LAYOUT.

    When defining multiple layouts you should have a base layout, named LAYOUT_all, that supports all possible switch positions on your matrix, even if that layout is impossible to build physically. This is the macro you should use in your default keymap. You should then have additional keymaps named default_<layout> that use your other layout macros. This will make it easier for people to use the layouts you define.

    Layout macro names are entirely lowercase, except for the word LAYOUT at the front.

    As an example, if you have a 60% PCB that supports ANSI and ISO you might define the following layouts and keymaps:

    Layout NameKeymap NameDescription
    LAYOUT_alldefaultA layout that supports both ISO and ANSI
    LAYOUT_ansidefault_ansiAn ANSI layout
    LAYOUT_isodefault_isoAn ISO layout

    TIP

    Providing only LAYOUT_all is invalid - especially when implementing the additional layouts within 3rd party tooling.

    Image/Hardware Files

    In an effort to keep the repo size down we're no longer accepting binary files of any format, with few exceptions. Hosting them elsewhere (such as https://imgur.com) and linking them in the readme.md is preferred.

    Hardware files (such as plates, cases, pcb) can be contributed to the qmk.fm repo and they will be made available on qmk.fm. Downloadable files are stored in /<keyboard>/ (name follows the same format as above) which are served at https://qmk.fm/<keyboard>/, and pages are generated from /_pages/<keyboard>/ which are served at the same location (.md files are generated into .html files through Jekyll). Check out the lets_split folder for an example.

    Keyboard Defaults

    Given the amount of functionality that QMK exposes it's very easy to confuse new users. When putting together the default firmware for your keyboard we recommend limiting your enabled features and options to the minimal set needed to support your hardware. Recommendations for specific features follow.

    Magic Keycodes and Command

    Magic Keycodes and Command are two related features that allow a user to control their keyboard in non-obvious ways. We recommend you think long and hard about if you're going to enable either feature, and how you will expose this functionality. Keep in mind that users who want this functionality can enable it in their personal keymaps without affecting all the novice users who may be using your keyboard as their first programmable board.

    By far the most common problem new users encounter is accidentally triggering Bootmagic while they're plugging in their keyboard. They're holding the keyboard by the bottom, unknowingly pressing in alt and spacebar, and then they find that these keys have been swapped on them. We recommend leaving this feature disabled by default, but if you do turn it on consider setting BOOTMAGIC_KEY_SALT to a key that is hard to press while plugging your keyboard in.

    If your keyboard does not have 2 shift keys you should provide a working default for IS_COMMAND, even when you have set COMMAND_ENABLE = no. This will give your users a default to conform to if they do enable Command.

    Custom Keyboard Programming

    As documented on Customizing Functionality you can define custom functions for your keyboard. Please keep in mind that your users may want to customize that behavior as well, and make it possible for them to do that. If you are providing a custom function, for example process_record_kb(), make sure that your function calls the _user() version of the call too. You should also take into account the return value of the _user() version, and only run your custom code if the user returns true.

    Non-Production/Handwired Projects

    We're happy to accept any project that uses QMK, including prototypes and handwired ones, but we have a separate /keyboards/handwired/ folder for them, so the main /keyboards/ folder doesn't get overcrowded. If a prototype project becomes a production project at some point in the future, we'd be happy to move it to the main /keyboards/ folder!

    Warnings as Errors

    When developing your keyboard, keep in mind that all warnings will be treated as errors - these small warnings can build-up and cause larger errors down the road (and keeping them is generally a bad practice).

    If you're adapting your keyboard's setup from another project, but not using the same code, be sure to update the copyright header at the top of the files to show your name, in this format:

    c
    Copyright 2017 Your Name <your@email.com>

    If you are modifying someone else's code and have made only trivial changes you should leave their name in the copyright statement. If you have done significant work on the file you should add your name to theirs, like so:

    c
    Copyright 2017 Their Name <original_author@example.com> Your Name <you@example.com>

    The year should be the first year the file is created. If work was done to that file in later years you can reflect that by appending the second year to the first, like so:

    c
    Copyright 2015-2017 Your Name <you@example.com>

    License

    The core of QMK is licensed under the GNU General Public License. If you are shipping binaries for AVR processors you may choose either GPLv2 or GPLv3. If you are shipping binaries for ARM processors you must choose GPL Version 3 to comply with the ChibiOS GPLv3 license.

    - + \ No newline at end of file diff --git a/hashmap.json b/hashmap.json index 9826f679848..125834e61ad 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"chibios_upgrade_instructions.md":"B5dMtL5R","api_overview.md":"0FPaUsMb","breaking_changes.md":"y7zfo29K","breaking_changes_history.md":"CJNU0o77","cli.md":"BLzAdA6l","changelog_20200530.md":"Dk-vRpTQ","config_options.md":"CMZF-afl","changelog_20211127.md":"ClUawWkq","capabilities_inc.md":"Ca9zpMce","documentation_templates.md":"Bhkum0wD","changelog_20230528.md":"nX9R48zP","capabilities.md":"DgKwcj5n","documentation_best_practices.md":"BtEjePaZ","driver_installation_zadig.md":"BFgx-Q1o","drivers_adc.md":"DzU8txf8","drivers_is31fl3746a.md":"BFczK5c-","drivers_is31fl3236.md":"BsbsN_Nu","changelog_20220827.md":"DjPthqDk","cli_development.md":"3xFA2OvS","changelog_20200229.md":"DNsowwM1","changelog_20210828.md":"DNbHIuuM","drivers_eeprom.md":"DMr_G_5d","api_docs.md":"CRoD6CbL","cli_commands.md":"DGx-qNiE","changelog_20240825.md":"BZM0WSFG","changelog_20240526.md":"DAmAEDG5","changelog_20220528.md":"BX3CCY1Z","drivers_uart.md":"BNBs-m3h","drivers_snled27351.md":"Cq725B0_","features_autocorrect.md":"DHRDcuho","drivers_serial.md":"CnlLG_H1","configurator_step_by_step.md":"CB5U_ksW","changelog_20220226.md":"BWO5r_ec","changelog_20240225.md":"B4-WrXj6","api_development_overview.md":"Dcey4ntL","drivers_apa102.md":"Cl7Xer3S","drivers_is31fl3737.md":"BgIEmU0V","drivers_is31fl3729.md":"uZAm-59P","changelog_20190830.md":"Drtq3lMy","api_development_environment.md":"EhJClb9f","drivers_flash.md":"DhWcHp8S","drivers_is31fl3733.md":"B2SurzgJ","drivers_aw20216s.md":"CgKehEzB","changelog_20230226.md":"Cg0AYxIn","configurator_architecture.md":"DEFTvTlS","drivers_i2c.md":"Cuj87reB","drivers_ws2812.md":"D9E3Wb-Y","configurator_troubleshooting.md":"BxGLPT8G","features_leader_key.md":"DBQTnBRh","features_led_indicators.md":"BI857zKH","configurator_default_keymaps.md":"B3v8dlHd","features_led_matrix.md":"BTOvgNVe","features_midi.md":"u3tHPteB","features_mouse_keys.md":"DIChRnuA","drivers_is31fl3218.md":"C7Rok4l6","drivers_spi.md":"tJVeIT7e","drivers_gpio.md":"C5PvyJVh","changelog_20210227.md":"BWOtCaeS","changelog_20210529.md":"CR1YNfZX","features_secure.md":"BX7jFvW5","coding_conventions_python.md":"BV-OK1s5","drivers_is31fl3731.md":"_mTT68lh","cli_configuration.md":"CGSB128P","features_caps_word.md":"BDQGM0-x","features_joystick.md":"RJK1oKqh","features_hd44780.md":"15K40o_e","arm_debugging.md":"BH-H2Ukz","custom_matrix.md":"DMnRw_5l","features_backlight.md":"D7R4FkYo","features_dynamic_macros.md":"CrJ1vhBA","feature_macros.md":"By1M5R8G","drivers_audio.md":"mqaz6p5N","cli_tab_complete.md":"ChaxfzYo","features_auto_shift.md":"B9HLt3QM","feature_eeprom.md":"D2OTc7H8","changelog_20230827.md":"NSPhmB6l","features_encoders.md":"BY--6WYQ","changelog_20201128.md":"7XXL02Bn","feature_converters.md":"DcwmzUcD","feature_layers.md":"8GwBUTZN","changelog_20221126.md":"DpbrnXeC","features_programmable_button.md":"D332w_PT","features_oled_driver.md":"D9wJVdL1","features_audio.md":"DWNYte3W","quantum_painter_lvgl.md":"DobNbSgA","faq_build.md":"DL_WezA1","features_rawhid.md":"bKKG3KCa","changelog_20200829.md":"CoqrOffn","faq_debug.md":"DuThValw","quantum_painter_qgf.md":"BJNSu2s0","features_repeat_key.md":"2ulQYjgy","contributing.md":"CgMx5YLW","features_bluetooth.md":"CiAjl875","quantum_painter_rle.md":"B07V3m-n","features_bootmagic.md":"CeNSUsBQ","feature_debounce_type.md":"CUrSp0Iy","features_command.md":"DgkId4it","features_rgblight.md":"O1OG9fO_","ref_functions.md":"DVV8cEHP","features_send_string.md":"vM68un4v","reference_configurator_support.md":"FaBQzIj6","reference_glossary.md":"CXMuxToT","reference_info_json.md":"D2_8zSnw","reference_keymap_extras.md":"D-__wuxf","features_space_cadet.md":"DmNfYRVJ","squeezing_avr.md":"BmcLYKOr","support.md":"Bj3JfaeV","coding_conventions_c.md":"DdrpXBEh","breaking_changes_instructions.md":"C99NYDjO","features_split_keyboard.md":"C-blnyD_","data_driven_config.md":"BvLQ7P20","features_st7565.md":"MoajNurJ","syllabus.md":"BKPUpSTy","features_stenography.md":"Bb_IhUGl","tap_hold.md":"DD8WTSla","features_key_lock.md":"IjFq9dYs","changelog_20231126.md":"D2Ok5QAf","understanding_qmk.md":"f-Bc_eHQ","features_swap_hands.md":"DOhgGQf9","drivers_is31fl3745.md":"CpCpR0Np","compatible_microcontrollers.md":"6HA6FJZJ","custom_quantum_functions.md":"Br1xUGGa","faq_general.md":"BOlGsWSk","unit_testing.md":"u3fgbGUj","features_digitizer.md":"DGIGZFVx","features_dip_switch.md":"DtBOdc98","drivers_is31fl3736.md":"Cr5SQU0k","drivers_is31fl3742a.md":"CKPjB5T1","drivers_is31fl3743a.md":"9TiNS_bm","newbs.md":"-YYNd3dT","newbs_building_firmware.md":"DnVUK9it","features_rgb_matrix.md":"BE6vKO90","newbs_building_firmware_configurator.md":"yyo-1QDE","features_os_detection.md":"DZKTWvSd","newbs_external_userspace.md":"pD9Lc-a5","newbs_building_firmware_workflow.md":"DpLVwA7x","features_sequencer.md":"DkgqNCsQ","faq_misc.md":"qGrhOTu4","faq_keymap.md":"DFMTHq2V","feature_layouts.md":"qcy8hNMO","newbs_getting_started.md":"DD4a5qPC","newbs_git_best_practices.md":"BI2-EVI5","newbs_git_resolving_merge_conflicts.md":"72w3BRmm","newbs_git_resynchronize_a_branch.md":"YGDefQFx","newbs_flashing.md":"u-7lrNOy","feature_advanced_keycodes.md":"CX8dJkY-","newbs_testing_debugging.md":"D-c7Gle_","features_grave_esc.md":"mUNEjUYS","easy_maker.md":"DAfbIK4w","newbs_learn_more_resources.md":"Dj1s2BDG","one_shot_keys.md":"QR09rSb-","feature_userspace.md":"BsmY9yWw","other_eclipse.md":"C-zqyJO9","other_vscode.md":"Di3vOySR","platformdev_blackpill_f4x1.md":"DvObLRuk","platformdev_proton_c.md":"CDRuJBvD","platformdev_chibios_earlyinit.md":"BQJSTP3y","features_tri_layer.md":"DdnBVinw","pr_checklist.md":"DLlWFp5i","features_wpm.md":"BYf-Xc1H","platformdev_rp2040.md":"CYKYMDfc","platformdev_selecting_arm_mcu.md":"aF4DUsvb","porting_your_keyboard_to_qmk.md":"CIbOxKQC","support_deprecation_policy.md":"CCo4ljiw","getting_started_github.md":"OYq7IT7B","getting_started_make_guide.md":"BjUuEnSh","hardware_drivers.md":"BUnx48D9","flashing.md":"DgCsCUGk","getting_started_docker.md":"fkGRxQyI","getting_started_introduction.md":"BOJreqSs","index.md":"BFvlZFTs","hand_wire.md":"GiNX60kU","drivers_is31fl3741.md":"DzsuNWJt","features_combo.md":"C-GfDyXJ","features_tap_dance.md":"Bfnmm10t","features_pointing_device.md":"DP6-XwL6","features_key_overrides.md":"C02U5_E5","features_haptic_feedback.md":"DS8CmC7e","mod_tap.md":"C7wRKLcf","newbs_git_using_your_master_branch.md":"B9DxZCl8","isp_flashing_guide.md":"BiuBpOKX","keycodes_magic.md":"CGO3hgMm","quantum_painter_qff.md":"kLNwshez","how_a_matrix_works.md":"JINKbCuX","hardware_keyboard_guidelines.md":"CJevsanE","keycodes_us_ansi_shifted.md":"Cs78SDfM","quantum_keycodes.md":"DM5WeUFF","keycodes_basic.md":"CHIeCvwn","keymap.md":"Y4Fei1Ty","features_unicode.md":"CsON-fJH","how_keyboards_work.md":"CB7z8ocb","features_ps2_mouse.md":"CL_pA9sk","keycodes.md":"CDjPwWHi","quantum_painter.md":"BK_I9g4h"} +{"changelog_20190830.md":"Bivr4BOW","changelog_20200229.md":"BlwjdGdl","changelog_20201128.md":"Bv3MtRZN","changelog_20210227.md":"BZCS3QyX","changelog_20211127.md":"Dnz3u-H6","changelog_20210529.md":"BuRukn9m","changelog_20221126.md":"CSlb6-9w","changelog_20200829.md":"Dkrt3arz","changelog_20230226.md":"BhryCt4E","changelog_20220827.md":"CV9uGcQ3","changelog_20200530.md":"JEJG56LT","changelog_20220226.md":"DnHKntZW","changelog_20240825.md":"B1yD6-2m","changelog_20210828.md":"BZyVeEhg","changelog_20231126.md":"CTAqtmrE","changelog_20240526.md":"CmS3Cuz0","changelog_20220528.md":"l98aHfdl","capabilities.md":"BPL75VHK","capabilities_inc.md":"IeyuI9Wf","changelog_20230827.md":"hs0Cz5za","changelog_20230528.md":"BJIkUgVm","api_development_environment.md":"BdPW5Xxm","api_development_overview.md":"BZJTSE_s","api_overview.md":"BzzvVapY","changelog_20240225.md":"DI6ZhnH_","api_docs.md":"DUul50UI","arm_debugging.md":"DVeULkLA","breaking_changes.md":"DWuHNvRs","drivers_is31fl3742a.md":"Cjvb_b-G","features_auto_shift.md":"jwKJBlE4","configurator_architecture.md":"CmFDpVLe","features_wpm.md":"ClHUqqGQ","breaking_changes_history.md":"Bkin0Zmd","drivers_is31fl3746a.md":"BGP2PAJT","compatible_microcontrollers.md":"BgEcnKTp","feature_layouts.md":"Cjp6pYRh","isp_flashing_guide.md":"BCLez560","feature_userspace.md":"BWBTJPLX","other_vscode.md":"BDsv-WIr","features_split_keyboard.md":"CNVf0IPB","newbs_flashing.md":"BxrsbpFT","newbs_getting_started.md":"CpbFaJqI","newbs_git_best_practices.md":"BQEFeFMK","newbs_git_resolving_merge_conflicts.md":"CbGBcgDe","newbs_git_resynchronize_a_branch.md":"DK2XHvqc","features_audio.md":"Dy0ToeLW","hardware_keyboard_guidelines.md":"M0UlpwHv","features_send_string.md":"CgbdP6B4","custom_quantum_functions.md":"DtIuNxTQ","documentation_best_practices.md":"CsnEVROI","data_driven_config.md":"3iL4-P4O","documentation_templates.md":"Bzrbq1wQ","drivers_i2c.md":"Dr29Qpwd","drivers_is31fl3218.md":"CbXgZf0f","features_autocorrect.md":"CrKw5pKP","drivers_is31fl3729.md":"D51u1Zj1","drivers_apa102.md":"DRKqdW0M","drivers_is31fl3733.md":"DkzQC1rk","driver_installation_zadig.md":"Dy2kYHSK","feature_advanced_keycodes.md":"BI-acvLB","feature_eeprom.md":"tGEc5qB_","cli_tab_complete.md":"NVbK-H31","feature_debounce_type.md":"DBjOROev","faq_misc.md":"CrAryH8S","drivers_adc.md":"B7GhN9cb","feature_layers.md":"CTvZ1vMr","drivers_is31fl3731.md":"BAADR_YT","drivers_is31fl3736.md":"D-ShjYav","cli_development.md":"DHT__02d","drivers_is31fl3737.md":"BqpmIJMQ","drivers_serial.md":"CDjOJdNt","drivers_is31fl3745.md":"D5R_sxfC","cli.md":"BmxhRPcP","features_bootmagic.md":"DIHkTTz1","features_caps_word.md":"C0fpUfY4","features_bluetooth.md":"Bs2LdUw_","faq_build.md":"DgVYb8Zh","features_command.md":"B4mE21dh","drivers_is31fl3236.md":"DB6z91iZ","drivers_spi.md":"DoCZg1iV","features_digitizer.md":"DBSZvpwE","contributing.md":"C-zh8zuX","features_combo.md":"CC9QZAP7","features_dynamic_macros.md":"ZTtIhM8T","easy_maker.md":"CW6jlMO-","configurator_troubleshooting.md":"DRmoLxtC","cli_configuration.md":"CY0YDFkc","features_grave_esc.md":"DTvs6396","faq_debug.md":"BDXERRoT","features_haptic_feedback.md":"DVUdhF3q","features_hd44780.md":"kUIf1-0D","drivers_gpio.md":"C81HQm2y","drivers_is31fl3741.md":"9e7jzvwW","faq_general.md":"BRXTvqDs","custom_matrix.md":"BaJLCNe_","newbs_building_firmware_workflow.md":"CiP7v8Cc","newbs_building_firmware_configurator.md":"BwSLgipx","keycodes_basic.md":"B_iSDgm4","keycodes_us_ansi_shifted.md":"72mjMG-4","keycodes_magic.md":"LOQRAy94","newbs_building_firmware.md":"CybovRdt","keymap.md":"C4xC8DKs","features_stenography.md":"BmdUwUEg","mod_tap.md":"B5t5NSBO","features_swap_hands.md":"ChjoVx_w","coding_conventions_c.md":"DpXNhaZf","syllabus.md":"kT0qPDWa","platformdev_proton_c.md":"65AUzKpy","support_deprecation_policy.md":"CQ_cp_q2","understanding_qmk.md":"B0A-C1NO","quantum_painter_qff.md":"C37fyLwS","feature_converters.md":"CYAeZ-4u","features_tap_dance.md":"C1QbVbkm","features_tri_layer.md":"BMkcUufJ","tap_hold.md":"Clf06wbr","coding_conventions_python.md":"CssZF_dh","support.md":"BJG_DmlL","squeezing_avr.md":"DYXaAn44","reference_info_json.md":"DY4XHSHT","unit_testing.md":"CGe2-PJx","reference_keymap_extras.md":"Bgwaxc8b","reference_glossary.md":"DsaOcqe5","quantum_painter_lvgl.md":"CjwTIvjK","cli_commands.md":"bKM86b65","quantum_painter_qgf.md":"DfrPXVeV","quantum_painter_rle.md":"HUVkMPoB","platformdev_blackpill_f4x1.md":"BvgwJuB9","platformdev_chibios_earlyinit.md":"BKgGp6Ev","features_ps2_mouse.md":"CR0p8T4u","features_sequencer.md":"F43NF6hh","porting_your_keyboard_to_qmk.md":"CWUCjRnR","getting_started_docker.md":"dHxmuSds","getting_started_github.md":"EVx9Hm-S","features_mouse_keys.md":"CifbxWOs","reference_configurator_support.md":"DoavXRX9","features_oled_driver.md":"CGlp2h0e","features_encoders.md":"CugXBk-4","getting_started_introduction.md":"BTOrKqLL","getting_started_make_guide.md":"snyKLkVb","features_leader_key.md":"Nmog5Zz4","hand_wire.md":"B69NBeYw","features_dip_switch.md":"CfJ3EvxZ","features_rawhid.md":"a2O7n8yI","features_os_detection.md":"DX1dyQDp","features_midi.md":"DwmZ8GrG","pr_checklist.md":"DKd6FJXQ","quantum_painter.md":"4XgBmnB4","features_rgblight.md":"Caa29UD3","quantum_keycodes.md":"CRBfvK5V","features_rgb_matrix.md":"C0kYzT0E","how_a_matrix_works.md":"CaVS4G-x","hardware_drivers.md":"DA73-xWQ","drivers_snled27351.md":"C9JHnKgK","newbs.md":"BD3QefyC","features_backlight.md":"ySwz01AJ","feature_macros.md":"DxDpi-Vz","drivers_aw20216s.md":"BIfeX9RQ","features_key_lock.md":"CXEQ5-MN","drivers_audio.md":"DhIIBUNW","configurator_step_by_step.md":"CQWwPq1x","drivers_flash.md":"NiyC5VbL","newbs_learn_more_resources.md":"DJeo5kRX","other_eclipse.md":"CWb0jnQC","platformdev_selecting_arm_mcu.md":"DpOE31Uf","flashing.md":"CK6oObIF","drivers_uart.md":"gh92qK6t","newbs_testing_debugging.md":"DIfKsMTC","one_shot_keys.md":"DG5UoHI0","breaking_changes_instructions.md":"C9StPyYH","features_secure.md":"C1VgkmKA","drivers_eeprom.md":"Cops4y84","index.md":"CE4UOGjJ","ref_functions.md":"BmD0w9ZN","features_repeat_key.md":"CuNkA6hM","features_st7565.md":"DeApZTVP","how_keyboards_work.md":"DEm83W7w","newbs_git_using_your_master_branch.md":"CK4m9Sny","features_led_matrix.md":"DZ4KDZN-","chibios_upgrade_instructions.md":"DIU6p99M","features_space_cadet.md":"D3jhCzMk","newbs_external_userspace.md":"BMYQp9mN","features_key_overrides.md":"CPs_0RSS","keycodes.md":"W0MSIHjb","faq_keymap.md":"DIjgUAJ7","features_joystick.md":"D4eaz8gV","drivers_is31fl3743a.md":"C7TkCrlE","config_options.md":"B6nk2VgQ","features_programmable_button.md":"C7mT83XS","features_led_indicators.md":"Cnu82Paw","features_pointing_device.md":"Birc1w-6","features_unicode.md":"DmKG_Y8h","configurator_default_keymaps.md":"Db0fQLFV","platformdev_rp2040.md":"B44Xs-cn","drivers_ws2812.md":"C97W5Kwr"} diff --git a/how_a_matrix_works.html b/how_a_matrix_works.html index 301bb6e5da8..bbf221c3020 100644 --- a/how_a_matrix_works.html +++ b/how_a_matrix_works.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -67,7 +67,7 @@ col1: 0b11 │└row0 └row1

    The firmware can then use this correct data to detect what it should do, and eventually, what signals it needs to send to the OS.

    Further reading:

    - + \ No newline at end of file diff --git a/how_keyboards_work.html b/how_keyboards_work.html index b3e5c656dc8..ad294e9ae75 100644 --- a/how_keyboards_work.html +++ b/how_keyboards_work.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -20,7 +20,7 @@
    Skip to content

    How Keys Are Registered, and Interpreted by Computers

    In this file, you can will learn the concepts of how keyboards work over USB, and you'll be able to better understand what you can expect from changing your firmware directly.

    Schematic View

    Whenever you type on 1 particular key, here is the chain of actions taking place:

    +------+         +-----+       +----------+      +----------+     +----+
     | User |-------->| Key |------>| Firmware |----->| USB wire |---->| OS |
     +------+         +-----+       +----------+      +----------+     +----+

    This scheme is a very simple view of what's going on, and more details follow in the next sections.

    1. You Press a Key

    Whenever you press a key, the firmware of your keyboard can register this event. It can register when the key is pressed, held and released.

    This usually happens with a periodic scan of key presses. This speed often is limited by the mechanical key response time, the protocol to transfer those key presses (here USB HID), and by the software it is used in.

    2. What the Firmware Sends

    The HID specification tells what a keyboard can actually send through USB to have a chance to be properly recognised. This includes a pre-defined list of scancodes which are simple numbers from 0x00 to 0xE7. The firmware assigns a scancode to each key of the keyboard.

    The firmware does not send actual letters or characters, but only scancodes. Thus, by modifying the firmware, you can only modify what scancode is sent over USB for a given key.

    3. What the Event Input/Kernel Does

    The scancode is mapped to a keycode dependent on the keyboard 60-keyboard.hwdb at Main. Without this mapping, the operating system will not receive a valid keycode and will be unable to do anything useful with that key press.

    4. What the Operating System Does

    Once the keycode reaches the operating system, a piece of software has to have it match an actual character thanks to a keyboard layout. For example, if your layout is set to QWERTY, a sample of the matching table is as follows:

    keycodecharacter
    0x04a/A
    0x05b/B
    0x06c/C
    ......
    0x1Cy/Y
    0x1Dz/Z
    ......

    Back to the Firmware

    As the layout is generally fixed (unless you create your own), the firmware can actually call a keycode by its layout name directly to ease things for you. This is exactly what is done here with KC_A actually representing 0x04 in QWERTY. The full list can be found in keycodes.

    List of Characters You Can Send

    Putting aside shortcuts, having a limited set of keycodes mapped to a limited layout means that the list of characters you can assign to a given key are only the ones present in the layout.

    For example, this means that if you have a QWERTY US layout, and you want to assign one key to produce (euro currency symbol), you are unable to do so, because the QWERTY US layout does not have such mapping. You could fix that by using a QWERTY UK layout, or a QWERTY US International.

    You may wonder why a keyboard layout containing all of Unicode is not devised then? The limited number of keycodes available through USB simply disallows such a thing.

    How to (Maybe) Enter Unicode Characters

    You can have the firmware send sequences of keys to use the software Unicode Input Method of the target operating system, thus effectively entering characters independently of the layout defined in the OS.

    Yet, it does come with multiple disadvantages:

    • Tied to a specific OS at a time (need recompilation when changing OS);
    • Within a given OS, does not work in all software;
    • Limited to a subset of Unicode on some systems.
    - + \ No newline at end of file diff --git a/index.html b/index.html index 5cb91363aa7..156b111cb0e 100644 --- a/index.html +++ b/index.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Quantum Mechanical Keyboard Firmware

    What is QMK Firmware?

    QMK (Quantum Mechanical Keyboard) is an open source community centered around developing computer input devices. The community encompasses all sorts of input devices, such as keyboards, mice, and MIDI devices. A core group of collaborators maintains QMK Firmware, QMK Configurator, QMK Toolbox, qmk.fm, and this documentation with the help of community members like you.

    Get Started

    Basic

    QMK Configurator

    User friendly graphical interfaces, no programming knowledge required.

    Advanced

    Use The Source

    More powerful, but harder to use.

    Make It Yours

    QMK has lots of features to explore, and a good deal of reference documentation to dig through. Most features are taken advantage of by modifying your keymap, and changing the keycodes.

    Need help?

    Check out the support page to see how you can get help using QMK.

    Give Back

    There are a lot of ways you can contribute to the QMK Community. The easiest way to get started is to use it and spread the word to your friends.

    - + \ No newline at end of file diff --git a/isp_flashing_guide.html b/isp_flashing_guide.html index dad3bb416d3..00582e90794 100644 --- a/isp_flashing_guide.html +++ b/isp_flashing_guide.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -69,7 +69,7 @@ 2022-03-08T12:16:31 INFO common.c: Starting verification of write complete 2022-03-08T12:16:31 INFO common.c: Flash written and verified! jolly good! 2022-03-08T12:16:31 WARN common.c: NRST is not connected

    Otherwise, if you receive an Unknown memory region error, run the following command to unlock the STM32F103:

    openocd -f interface/stlink.cfg -f target/stm32f1x.cfg -c "init; reset halt; stm32f1x unlock 0; reset halt; exit"

    Then re-plug the ST-Link and try again.

    After all of this, unplug the Bluepill from the ST-Link and connect it to USB. It should now be ready to flash using dfu-util, the QMK CLI or Toolbox.

    - + \ No newline at end of file diff --git a/keycodes.html b/keycodes.html index 0e239df3d2e..3ae0c2f726c 100644 --- a/keycodes.html +++ b/keycodes.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Keycodes Overview

    When defining a keymap each key needs a valid key definition. This page documents the symbols that correspond to keycodes that are available to you in QMK.

    This is a reference only. Each group of keys links to the page documenting their functionality in more detail.

    Basic Keycodes

    See also: Basic Keycodes

    KeyAliasesDescriptionWindowsmacOSLinux1
    KC_NOXXXXXXXIgnore this key (NOOP)N/AN/AN/A
    KC_TRANSPARENTKC_TRNS, _______Use the next lowest non-transparent keyN/AN/AN/A
    KC_Aa and A
    KC_Bb and B
    KC_Cc and C
    KC_Dd and D
    KC_Ee and E
    KC_Ff and F
    KC_Gg and G
    KC_Hh and H
    KC_Ii and I
    KC_Jj and J
    KC_Kk and K
    KC_Ll and L
    KC_Mm and M
    KC_Nn and N
    KC_Oo and O
    KC_Pp and P
    KC_Qq and Q
    KC_Rr and R
    KC_Ss and S
    KC_Tt and T
    KC_Uu and U
    KC_Vv and V
    KC_Ww and W
    KC_Xx and X
    KC_Yy and Y
    KC_Zz and Z
    KC_11 and !
    KC_22 and @
    KC_33 and #
    KC_44 and $
    KC_55 and %
    KC_66 and ^
    KC_77 and &
    KC_88 and *
    KC_99 and (
    KC_00 and )
    KC_ENTERKC_ENTReturn (Enter)
    KC_ESCAPEKC_ESCEscape
    KC_BACKSPACEKC_BSPCDelete (Backspace)
    KC_TABTab
    KC_SPACEKC_SPCSpacebar
    KC_MINUSKC_MINS- and _
    KC_EQUALKC_EQL= and +
    KC_LEFT_BRACKETKC_LBRC[ and {
    KC_RIGHT_BRACKETKC_RBRC] and }
    KC_BACKSLASHKC_BSLS\ and |
    KC_NONUS_HASHKC_NUHSNon-US # and ~
    KC_SEMICOLONKC_SCLN; and :
    KC_QUOTEKC_QUOT' and "
    KC_GRAVEKC_GRV` and ~
    KC_COMMAKC_COMM, and <
    KC_DOT. and >
    KC_SLASHKC_SLSH/ and ?
    KC_CAPS_LOCKKC_CAPSCaps Lock
    KC_F1F1
    KC_F2F2
    KC_F3F3
    KC_F4F4
    KC_F5F5
    KC_F6F6
    KC_F7F7
    KC_F8F8
    KC_F9F9
    KC_F10F10
    KC_F11F11
    KC_F12F12
    KC_PRINT_SCREENKC_PSCRPrint Screen2
    KC_SCROLL_LOCKKC_SCRL, KC_BRMDScroll Lock, Brightness Down (macOS)2
    KC_PAUSEKC_PAUS, KC_BRK, KC_BRMUPause, Brightness Up (macOS)2
    KC_INSERTKC_INSInsert
    KC_HOMEHome
    KC_PAGE_UPKC_PGUPPage Up
    KC_DELETEKC_DELForward Delete
    KC_ENDEnd
    KC_PAGE_DOWNKC_PGDNPage Down
    KC_RIGHTKC_RGHTRight Arrow
    KC_LEFTLeft Arrow
    KC_DOWNDown Arrow
    KC_UPUp Arrow
    KC_NUM_LOCKKC_NUMKeypad Num Lock and Clear
    KC_KP_SLASHKC_PSLSKeypad /
    KC_KP_ASTERISKKC_PASTKeypad *
    KC_KP_MINUSKC_PMNSKeypad -
    KC_KP_PLUSKC_PPLSKeypad +
    KC_KP_ENTERKC_PENTKeypad Enter
    KC_KP_1KC_P1Keypad 1 and End
    KC_KP_2KC_P2Keypad 2 and Down Arrow
    KC_KP_3KC_P3Keypad 3 and Page Down
    KC_KP_4KC_P4Keypad 4 and Left Arrow
    KC_KP_5KC_P5Keypad 5
    KC_KP_6KC_P6Keypad 6 and Right Arrow
    KC_KP_7KC_P7Keypad 7 and Home
    KC_KP_8KC_P8Keypad 8 and Up Arrow
    KC_KP_9KC_P9Keypad 9 and Page Up
    KC_KP_0KC_P0Keypad 0 and Insert
    KC_KP_DOTKC_PDOTKeypad . and Delete
    KC_NONUS_BACKSLASHKC_NUBSNon-US \ and |
    KC_APPLICATIONKC_APPApplication (Windows Context Menu Key)
    KC_KB_POWERSystem Power3
    KC_KP_EQUALKC_PEQLKeypad =
    KC_F13F13
    KC_F14F14
    KC_F15F15
    KC_F16F16
    KC_F17F17
    KC_F18F18
    KC_F19F19
    KC_F20F20
    KC_F21F21
    KC_F22F22
    KC_F23F23
    KC_F24F24
    KC_EXECUTEKC_EXECExecute
    KC_HELPHelp
    KC_MENUMenu
    KC_SELECTKC_SLCTSelect
    KC_STOPStop
    KC_AGAINKC_AGINAgain
    KC_UNDOUndo
    KC_CUTCut
    KC_COPYCopy
    KC_PASTEKC_PSTEPaste
    KC_FINDFind
    KC_KB_MUTEMute
    KC_KB_VOLUME_UPVolume Up
    KC_KB_VOLUME_DOWNVolume Down
    KC_LOCKING_CAPS_LOCKKC_LCAPLocking Caps Lock
    KC_LOCKING_NUM_LOCKKC_LNUMLocking Num Lock
    KC_LOCKING_SCROLL_LOCKKC_LSCRLocking Scroll Lock
    KC_KP_COMMAKC_PCMMKeypad ,
    KC_KP_EQUAL_AS400Keypad = on AS/400 keyboards
    KC_INTERNATIONAL_1KC_INT1International 1
    KC_INTERNATIONAL_2KC_INT2International 2
    KC_INTERNATIONAL_3KC_INT3International 3
    KC_INTERNATIONAL_4KC_INT4International 4
    KC_INTERNATIONAL_5KC_INT5International 5
    KC_INTERNATIONAL_6KC_INT6International 6
    KC_INTERNATIONAL_7KC_INT7International 7
    KC_INTERNATIONAL_8KC_INT8International 8
    KC_INTERNATIONAL_9KC_INT9International 9
    KC_LANGUAGE_1KC_LNG1Language 1
    KC_LANGUAGE_2KC_LNG2Language 2
    KC_LANGUAGE_3KC_LNG3Language 3
    KC_LANGUAGE_4KC_LNG4Language 4
    KC_LANGUAGE_5KC_LNG5Language 5
    KC_LANGUAGE_6KC_LNG6Language 6
    KC_LANGUAGE_7KC_LNG7Language 7
    KC_LANGUAGE_8KC_LNG8Language 8
    KC_LANGUAGE_9KC_LNG9Language 9
    KC_ALTERNATE_ERASEKC_ERASAlternate Erase
    KC_SYSTEM_REQUESTKC_SYRQSysReq/Attention
    KC_CANCELKC_CNCLCancel
    KC_CLEARKC_CLRClear
    KC_PRIORKC_PRIRPrior
    KC_RETURNKC_RETNReturn
    KC_SEPARATORKC_SEPRSeparator
    KC_OUTOut
    KC_OPEROper
    KC_CLEAR_AGAINKC_CLAGClear/Again
    KC_CRSELKC_CRSLCrSel/Props
    KC_EXSELKC_EXSLExSel
    KC_LEFT_CTRLKC_LCTLLeft Control
    KC_LEFT_SHIFTKC_LSFTLeft Shift
    KC_LEFT_ALTKC_LALT, KC_LOPTLeft Alt (Option)
    KC_LEFT_GUIKC_LGUI, KC_LCMD, KC_LWINLeft GUI (Windows/Command/Meta key)
    KC_RIGHT_CTRLKC_RCTLRight Control
    KC_RIGHT_SHIFTKC_RSFTRight Shift
    KC_RIGHT_ALTKC_RALT, KC_ROPT, KC_ALGRRight Alt (Option/AltGr)
    KC_RIGHT_GUIKC_RGUI, KC_RCMD, KC_RWINRight GUI (Windows/Command/Meta key)
    KC_SYSTEM_POWERKC_PWRSystem Power Down3
    KC_SYSTEM_SLEEPKC_SLEPSystem Sleep3
    KC_SYSTEM_WAKEKC_WAKESystem Wake3
    KC_AUDIO_MUTEKC_MUTEMute
    KC_AUDIO_VOL_UPKC_VOLUVolume Up4
    KC_AUDIO_VOL_DOWNKC_VOLDVolume Down4
    KC_MEDIA_NEXT_TRACKKC_MNXTNext Track5
    KC_MEDIA_PREV_TRACKKC_MPRVPrevious Track5
    KC_MEDIA_STOPKC_MSTPStop Track
    KC_MEDIA_PLAY_PAUSEKC_MPLYPlay/Pause Track
    KC_MEDIA_SELECTKC_MSELLaunch Media Player
    KC_MEDIA_EJECTKC_EJCTEject
    KC_MAILLaunch Mail
    KC_CALCULATORKC_CALCLaunch Calculator
    KC_MY_COMPUTERKC_MYCMLaunch My Computer
    KC_WWW_SEARCHKC_WSCHBrowser Search
    KC_WWW_HOMEKC_WHOMBrowser Home
    KC_WWW_BACKKC_WBAKBrowser Back
    KC_WWW_FORWARDKC_WFWDBrowser Forward
    KC_WWW_STOPKC_WSTPBrowser Stop
    KC_WWW_REFRESHKC_WREFBrowser Refresh
    KC_WWW_FAVORITESKC_WFAVBrowser Favorites
    KC_MEDIA_FAST_FORWARDKC_MFFDNext Track5
    KC_MEDIA_REWINDKC_MRWDPrevious Track65
    KC_BRIGHTNESS_UPKC_BRIUBrightness Up
    KC_BRIGHTNESS_DOWNKC_BRIDBrightness Down
    KC_CONTROL_PANELKC_CPNLOpen Control Panel
    KC_ASSISTANTKC_ASSTLaunch Context-Aware Assistant
    KC_MISSION_CONTROLKC_MCTLOpen Mission Control
    KC_LAUNCHPADKC_LPADOpen Launchpad

    1. The Linux kernel HID driver recognizes nearly all keycodes, but the default bindings depend on the DE/WM.
    2. Treated as F13-F15.
    3. Must be held for about three seconds, and will display a prompt instead.
    4. Holding Shift+Option allows for finer control of volume level.
    5. Skips the entire track in iTunes when tapped, seeks within the current track when held.
    6. WMP does not recognize the Rewind key, but both alter playback speed in VLC.

    Quantum Keycodes

    See also: Quantum Keycodes

    KeyAliasesDescription
    QK_BOOTLOADERQK_BOOTPut the keyboard into bootloader mode for flashing
    QK_DEBUG_TOGGLEDB_TOGGToggle debug mode
    QK_CLEAR_EEPROMEE_CLRReinitializes the keyboard's EEPROM (persistent memory)
    QK_MAKESends qmk compile -kb (keyboard) -km (keymap), or qmk flash if shift is held. Puts keyboard into bootloader mode if shift & control are held
    QK_REBOOTQK_RBTResets the keyboard. Does not load the bootloader

    Audio Keys

    See also: Audio

    KeyAliasesDescription
    QK_AUDIO_ONAU_ONTurns on Audio Feature
    QK_AUDIO_OFFAU_OFFTurns off Audio Feature
    QK_AUDIO_TOGGLEAU_TOGGToggles Audio state
    QK_AUDIO_CLICKY_TOGGLECK_TOGGToggles Audio clicky mode
    QK_AUDIO_CLICKY_ONCK_ONTurns on Audio clicky mode
    QK_AUDIO_CLICKY_OFFCK_OFFTurns on Audio clicky mode
    QK_AUDIO_CLICKY_UPCK_UPIncreases frequency of the clicks
    QK_AUDIO_CLICKY_DOWNCK_DOWNDecreases frequency of the clicks
    QK_AUDIO_CLICKY_RESETCK_RSTResets frequency to default
    QK_MUSIC_ONMU_ONTurns on Music Mode
    QK_MUSIC_OFFMU_OFFTurns off Music Mode
    QK_MUSIC_TOGGLEMU_TOGGToggles Music Mode
    QK_MUSIC_MODE_NEXTMU_NEXTCycles through the music modes
    QK_AUDIO_VOICE_NEXTAU_NEXTCycles through the audio voices
    QK_AUDIO_VOICE_PREVIOUSAU_PREVCycles through the audio voices in reverse

    Auto Shift

    See also: Auto Shift

    KeyAliasesDescription
    QK_AUTO_SHIFT_DOWNAS_DOWNLower the Auto Shift timeout variable (down)
    QK_AUTO_SHIFT_UPAS_UPRaise the Auto Shift timeout variable (up)
    QK_AUTO_SHIFT_REPORTAS_RPTReport your current Auto Shift timeout value
    QK_AUTO_SHIFT_ONAS_ONTurns on the Auto Shift Function
    QK_AUTO_SHIFT_OFFAS_OFFTurns off the Auto Shift Function
    QK_AUTO_SHIFT_TOGGLEAS_TOGGToggles the state of the Auto Shift feature

    Autocorrect

    See also: Autocorrect

    KeyAliasesDescription
    QK_AUTOCORRECT_ONAC_ONTurns on the Autocorrect feature.
    QK_AUTOCORRECT_OFFAC_OFFTurns off the Autocorrect feature.
    QK_AUTOCORRECT_TOGGLEAC_TOGGToggles the status of the Autocorrect feature.

    Backlighting

    See also: Backlighting

    KeyAliasesDescription
    QK_BACKLIGHT_TOGGLEBL_TOGGTurn the backlight on or off
    QK_BACKLIGHT_STEPBL_STEPCycle through backlight levels
    QK_BACKLIGHT_ONBL_ONSet the backlight to max brightness
    QK_BACKLIGHT_OFFBL_OFFTurn the backlight off
    QK_BACKLIGHT_UPBL_UPIncrease the backlight level
    QK_BACKLIGHT_DOWNBL_DOWNDecrease the backlight level
    QK_BACKLIGHT_TOGGLE_BREATHINGBL_BRTGToggle backlight breathing

    Bluetooth

    See also: Bluetooth

    KeyAliasesDescription
    QK_OUTPUT_AUTOOU_AUTOAutomatically switch between USB and Bluetooth
    QK_OUTPUT_USBOU_USBUSB only
    QK_OUTPUT_BLUETOOTHOU_BTBluetooth only

    Caps Word

    See also: Caps Word

    KeyAliasesDescription
    QK_CAPS_WORD_TOGGLECW_TOGGToggles Caps Word

    Dynamic Macros

    See also: Dynamic Macros

    KeyAliasesDescription
    QK_DYNAMIC_MACRO_RECORD_START_1DM_REC1Start recording Macro 1
    QK_DYNAMIC_MACRO_RECORD_START_2DM_REC2Start recording Macro 2
    QK_DYNAMIC_MACRO_PLAY_1DM_PLY1Replay Macro 1
    QK_DYNAMIC_MACRO_PLAY_2DM_PLY2Replay Macro 2
    QK_DYNAMIC_MACRO_RECORD_STOPDM_RSTPFinish the macro that is currently being recorded.

    Grave Escape

    See also: Grave Escape

    KeyAliasesDescription
    QK_GRAVE_ESCAPEQK_GESCEscape when pressed, ` when Shift or GUI are held

    Joystick

    See also: Joystick

    KeyAliasesDescription
    QK_JOYSTICK_BUTTON_0JS_0Button 0
    QK_JOYSTICK_BUTTON_1JS_1Button 1
    QK_JOYSTICK_BUTTON_2JS_2Button 2
    QK_JOYSTICK_BUTTON_3JS_3Button 3
    QK_JOYSTICK_BUTTON_4JS_4Button 4
    QK_JOYSTICK_BUTTON_5JS_5Button 5
    QK_JOYSTICK_BUTTON_6JS_6Button 6
    QK_JOYSTICK_BUTTON_7JS_7Button 7
    QK_JOYSTICK_BUTTON_8JS_8Button 8
    QK_JOYSTICK_BUTTON_9JS_9Button 9
    QK_JOYSTICK_BUTTON_10JS_10Button 10
    QK_JOYSTICK_BUTTON_11JS_11Button 11
    QK_JOYSTICK_BUTTON_12JS_12Button 12
    QK_JOYSTICK_BUTTON_13JS_13Button 13
    QK_JOYSTICK_BUTTON_14JS_14Button 14
    QK_JOYSTICK_BUTTON_15JS_15Button 15
    QK_JOYSTICK_BUTTON_16JS_16Button 16
    QK_JOYSTICK_BUTTON_17JS_17Button 17
    QK_JOYSTICK_BUTTON_18JS_18Button 18
    QK_JOYSTICK_BUTTON_19JS_19Button 19
    QK_JOYSTICK_BUTTON_20JS_20Button 20
    QK_JOYSTICK_BUTTON_21JS_21Button 21
    QK_JOYSTICK_BUTTON_22JS_22Button 22
    QK_JOYSTICK_BUTTON_23JS_23Button 23
    QK_JOYSTICK_BUTTON_24JS_24Button 24
    QK_JOYSTICK_BUTTON_25JS_25Button 25
    QK_JOYSTICK_BUTTON_26JS_26Button 26
    QK_JOYSTICK_BUTTON_27JS_27Button 27
    QK_JOYSTICK_BUTTON_28JS_28Button 28
    QK_JOYSTICK_BUTTON_29JS_29Button 29
    QK_JOYSTICK_BUTTON_30JS_30Button 30
    QK_JOYSTICK_BUTTON_31JS_31Button 31

    Key Lock

    See also: Key Lock

    KeyDescription
    QK_LOCKHold down the next key pressed, until the key is pressed again

    Layer Switching

    See also: Layer Switching

    KeyDescription
    DF(layer)Set the base (default) layer
    MO(layer)Momentarily turn on layer when pressed (requires KC_TRNS on destination layer)
    OSL(layer)Momentarily activates layer until a key is pressed. See One Shot Keys for details.
    LM(layer, mod)Momentarily turn on layer (like MO) with mod active as well. Where mod is a mods_bit. Mods can be viewed here. Example Implementation: LM(LAYER_1, MOD_LALT)
    LT(layer, kc)Turn on layer when held, kc when tapped
    TG(layer)Toggle layer on or off
    TO(layer)Turns on layer and turns off all other layers, except the default layer
    TT(layer)Normally acts like MO unless it's tapped multiple times, which toggles layer on

    Leader Key

    See also: Leader Key

    KeyDescription
    QK_LEADBegins a leader sequence

    LED Matrix

    See also: LED Matrix

    KeyAliasesDescription
    QK_LED_MATRIX_ONLM_ONTurn on LED Matrix
    QK_LED_MATRIX_OFFLM_OFFTurn off LED Matrix
    QK_LED_MATRIX_TOGGLELM_TOGGToggle LED Matrix on or off
    QK_LED_MATRIX_MODE_NEXTLM_NEXTCycle through animations
    QK_LED_MATRIX_MODE_PREVIOUSLM_PREVCycle through animations in reverse
    QK_LED_MATRIX_BRIGHTNESS_UPLM_BRIUIncrease the brightness level
    QK_LED_MATRIX_BRIGHTNESS_DOWNLM_BRIDDecrease the brightness level
    QK_LED_MATRIX_SPEED_UPLM_SPDUIncrease the animation speed
    QK_LED_MATRIX_SPEED_DOWNLM_SPDDDecrease the animation speed

    Magic Keycodes

    See also: Magic Keycodes

    KeyAliasesDescription
    QK_MAGIC_SWAP_CONTROL_CAPS_LOCKCL_SWAPSwap Caps Lock and Left Control
    QK_MAGIC_UNSWAP_CONTROL_CAPS_LOCKCL_NORMUnswap Caps Lock and Left Control
    QK_MAGIC_TOGGLE_CONTROL_CAPS_LOCKCL_TOGGToggle Caps Lock and Left Control swap
    QK_MAGIC_CAPS_LOCK_AS_CONTROL_ONCL_CTRLTreat Caps Lock as Control
    QK_MAGIC_CAPS_LOCK_AS_CONTROL_OFFCL_CAPSStop treating Caps Lock as Control
    QK_MAGIC_SWAP_ESCAPE_CAPS_LOCKEC_SWAPSwap Caps Lock and Escape
    QK_MAGIC_UNSWAP_ESCAPE_CAPS_LOCKEC_NORMUnswap Caps Lock and Escape
    QK_MAGIC_TOGGLE_ESCAPE_CAPS_LOCKEC_TOGGToggle Caps Lock and Escape swap
    QK_MAGIC_SWAP_LCTL_LGUICG_LSWPSwap Left Control and GUI
    QK_MAGIC_UNSWAP_LCTL_LGUICG_LNRMUnswap Left Control and GUI
    QK_MAGIC_SWAP_RCTL_RGUICG_RSWPSwap Right Control and GUI
    QK_MAGIC_UNSWAP_RCTL_RGUICG_RNRMUnswap Right Control and GUI
    QK_MAGIC_SWAP_CTL_GUICG_SWAPSwap Control and GUI on both sides
    QK_MAGIC_UNSWAP_CTL_GUICG_NORMUnswap Control and GUI on both sides
    QK_MAGIC_TOGGLE_CTL_GUICG_TOGGToggle Control and GUI swap on both sides
    QK_MAGIC_SWAP_LALT_LGUIAG_LSWPSwap Left Alt and GUI
    QK_MAGIC_UNSWAP_LALT_LGUIAG_LNRMUnswap Left Alt and GUI
    QK_MAGIC_SWAP_RALT_RGUIAG_RSWPSwap Right Alt and GUI
    QK_MAGIC_UNSWAP_RALT_RGUIAG_RNRMUnswap Right Alt and GUI
    QK_MAGIC_SWAP_ALT_GUIAG_SWAPSwap Alt and GUI on both sides
    QK_MAGIC_UNSWAP_ALT_GUIAG_NORMUnswap Alt and GUI on both sides
    QK_MAGIC_TOGGLE_ALT_GUIAG_TOGGToggle Alt and GUI swap on both sides
    QK_MAGIC_GUI_OFFGU_OFFDisable the GUI keys
    QK_MAGIC_GUI_ONGU_ONEnable the GUI keys
    QK_MAGIC_TOGGLE_GUIGU_TOGGToggles the status of the GUI keys
    QK_MAGIC_SWAP_GRAVE_ESCGE_SWAPSwap ` and Escape
    QK_MAGIC_UNSWAP_GRAVE_ESCGE_NORMUnswap ` and Escape
    QK_MAGIC_SWAP_BACKSLASH_BACKSPACEBS_SWAPSwap \ and Backspace
    QK_MAGIC_UNSWAP_BACKSLASH_BACKSPACEBS_NORMUnswap \ and Backspace
    QK_MAGIC_TOGGLE_BACKSLASH_BACKSPACEBS_TOGGToggle \ and Backspace swap state
    QK_MAGIC_NKRO_ONNK_ONEnable N-key rollover
    QK_MAGIC_NKRO_OFFNK_OFFDisable N-key rollover
    QK_MAGIC_TOGGLE_NKRONK_TOGGToggle N-key rollover
    QK_MAGIC_EE_HANDS_LEFTEH_LEFTSet the master half of a split keyboard as the left hand (for EE_HANDS)
    QK_MAGIC_EE_HANDS_RIGHTEH_RGHTSet the master half of a split keyboard as the right hand (for EE_HANDS)

    MIDI

    See also: MIDI

    KeyAliasesDescription
    QK_MIDI_ONMI_ONTurn MIDI on
    QK_MIDI_OFFMI_OFFTurn MIDI off
    QK_MIDI_TOGGLEMI_TOGGToggle MIDI enabled
    QK_MIDI_NOTE_C_0MI_CC octave 0
    QK_MIDI_NOTE_C_SHARP_0MI_Cs, MI_DbC♯/D♭ octave 0
    QK_MIDI_NOTE_D_0MI_DD octave 0
    QK_MIDI_NOTE_D_SHARP_0MI_Ds, MI_EbD♯/E♭ octave 0
    QK_MIDI_NOTE_E_0MI_EE octave 0
    QK_MIDI_NOTE_F_0MI_FF octave 0
    QK_MIDI_NOTE_F_SHARP_0MI_Fs, MI_GbF♯/G♭ octave 0
    QK_MIDI_NOTE_G_0MI_GG octave 0
    QK_MIDI_NOTE_G_SHARP_0MI_Gs, MI_AbG♯/A♭ octave 0
    QK_MIDI_NOTE_A_0MI_AA octave 0
    QK_MIDI_NOTE_A_SHARP_0MI_As, MI_BbA♯/B♭ octave 0
    QK_MIDI_NOTE_B_0MI_BB octave 0
    QK_MIDI_NOTE_C_1MI_C1C octave 1
    QK_MIDI_NOTE_C_SHARP_1MI_Cs1, MI_Db1C♯/D♭ octave 1
    QK_MIDI_NOTE_D_1MI_D1D octave 1
    QK_MIDI_NOTE_D_SHARP_1MI_Ds1, MI_Eb1D♯/E♭ octave 1
    QK_MIDI_NOTE_E_1MI_E1E octave 1
    QK_MIDI_NOTE_F_1MI_F1F octave 1
    QK_MIDI_NOTE_F_SHARP_1MI_Fs1, MI_Gb1F♯/G♭ octave 1
    QK_MIDI_NOTE_G_1MI_G1G octave 1
    QK_MIDI_NOTE_G_SHARP_1MI_Gs1, MI_Ab1G♯/A♭ octave 1
    QK_MIDI_NOTE_A_1MI_A1A octave 1
    QK_MIDI_NOTE_A_SHARP_1MI_As1, MI_Bb1A♯/B♭ octave 1
    QK_MIDI_NOTE_B_1MI_B1B octave 1
    QK_MIDI_NOTE_C_2MI_C2C octave 2
    QK_MIDI_NOTE_C_SHARP_2MI_Cs2, MI_Db2C♯/D♭ octave 2
    QK_MIDI_NOTE_D_2MI_D2D octave 2
    QK_MIDI_NOTE_D_SHARP_2MI_Ds2, MI_Eb2D♯/E♭ octave 2
    QK_MIDI_NOTE_E_2MI_E2E octave 2
    QK_MIDI_NOTE_F_2MI_F2F octave 2
    QK_MIDI_NOTE_F_SHARP_2MI_Fs2, MI_Gb2F♯/G♭ octave 2
    QK_MIDI_NOTE_G_2MI_G2G octave 2
    QK_MIDI_NOTE_G_SHARP_2MI_Gs2, MI_Ab2G♯/A♭ octave 2
    QK_MIDI_NOTE_A_2MI_A2A octave 2
    QK_MIDI_NOTE_A_SHARP_2MI_As2, MI_Bb2A♯/B♭ octave 2
    QK_MIDI_NOTE_B_2MI_B2B octave 2
    QK_MIDI_NOTE_C_3MI_C3C octave 3
    QK_MIDI_NOTE_C_SHARP_3MI_Cs3, MI_Db3C♯/D♭ octave 3
    QK_MIDI_NOTE_D_3MI_D3D octave 3
    QK_MIDI_NOTE_D_SHARP_3MI_Ds3, MI_Eb3D♯/E♭ octave 3
    QK_MIDI_NOTE_E_3MI_E3E octave 3
    QK_MIDI_NOTE_F_3MI_F3F octave 3
    QK_MIDI_NOTE_F_SHARP_3MI_Fs3, MI_Gb3F♯/G♭ octave 3
    QK_MIDI_NOTE_G_3MI_G3G octave 3
    QK_MIDI_NOTE_G_SHARP_3MI_Gs3, MI_Ab3G♯/A♭ octave 3
    QK_MIDI_NOTE_A_3MI_A3A octave 3
    QK_MIDI_NOTE_A_SHARP_3MI_As3, MI_Bb3A♯/B♭ octave 3
    QK_MIDI_NOTE_B_3MI_B3B octave 3
    QK_MIDI_NOTE_C_4MI_C4C octave 4
    QK_MIDI_NOTE_C_SHARP_4MI_Cs4, MI_Db4C♯/D♭ octave 4
    QK_MIDI_NOTE_D_4MI_D4D octave 4
    QK_MIDI_NOTE_D_SHARP_4MI_Ds4, MI_Eb4D♯/E♭ octave 4
    QK_MIDI_NOTE_E_4MI_E4E octave 4
    QK_MIDI_NOTE_F_4MI_F4F octave 4
    QK_MIDI_NOTE_F_SHARP_4MI_Fs4, MI_Gb4F♯/G♭ octave 4
    QK_MIDI_NOTE_G_4MI_G4G octave 4
    QK_MIDI_NOTE_G_SHARP_4MI_Gs4, MI_Ab4G♯/A♭ octave 4
    QK_MIDI_NOTE_A_4MI_A4A octave 4
    QK_MIDI_NOTE_A_SHARP_4MI_As4, MI_Bb4A♯/B♭ octave 4
    QK_MIDI_NOTE_B_4MI_B4B octave 4
    QK_MIDI_NOTE_C_5MI_C5C octave 5
    QK_MIDI_NOTE_C_SHARP_5MI_Cs5, MI_Db5C♯/D♭ octave 5
    QK_MIDI_NOTE_D_5MI_D5D octave 5
    QK_MIDI_NOTE_D_SHARP_5MI_Ds5, MI_Eb5D♯/E♭ octave 5
    QK_MIDI_NOTE_E_5MI_E5E octave 5
    QK_MIDI_NOTE_F_5MI_F5F octave 5
    QK_MIDI_NOTE_F_SHARP_5MI_Fs5, MI_Gb5F♯/G♭ octave 5
    QK_MIDI_NOTE_G_5MI_G5G octave 5
    QK_MIDI_NOTE_G_SHARP_5MI_Gs5, MI_Ab5G♯/A♭ octave 5
    QK_MIDI_NOTE_A_5MI_A5A octave 5
    QK_MIDI_NOTE_A_SHARP_5MI_As5, MI_Bb5A♯/B♭ octave 5
    QK_MIDI_NOTE_B_5MI_B5B octave 5
    QK_MIDI_OCTAVE_N2MI_OCN2Set octave to -2
    QK_MIDI_OCTAVE_N1MI_OCN1Set octave to -1
    QK_MIDI_OCTAVE_0MI_OC0Set octave to 0
    QK_MIDI_OCTAVE_1MI_OC1Set octave to 1
    QK_MIDI_OCTAVE_2MI_OC2Set octave to 2
    QK_MIDI_OCTAVE_3MI_OC3Set octave to 3
    QK_MIDI_OCTAVE_4MI_OC4Set octave to 4
    QK_MIDI_OCTAVE_5MI_OC5Set octave to 5
    QK_MIDI_OCTAVE_6MI_OC6Set octave to 6
    QK_MIDI_OCTAVE_7MI_OC7Set octave to 7
    QK_MIDI_OCTAVE_DOWNMI_OCTDMove down an octave
    QK_MIDI_OCTAVE_UPMI_OCTUMove up an octave
    QK_MIDI_TRANSPOSE_N6MI_TRN6Set transposition to -6 semitones
    QK_MIDI_TRANSPOSE_N5MI_TRN5Set transposition to -5 semitones
    QK_MIDI_TRANSPOSE_N4MI_TRN4Set transposition to -4 semitones
    QK_MIDI_TRANSPOSE_N3MI_TRN3Set transposition to -3 semitones
    QK_MIDI_TRANSPOSE_N2MI_TRN2Set transposition to -2 semitones
    QK_MIDI_TRANSPOSE_N1MI_TRN1Set transposition to -1 semitone
    QK_MIDI_TRANSPOSE_0MI_TR0No transposition
    QK_MIDI_TRANSPOSE_1MI_TR1Set transposition to +1 semitone
    QK_MIDI_TRANSPOSE_2MI_TR2Set transposition to +2 semitones
    QK_MIDI_TRANSPOSE_3MI_TR3Set transposition to +3 semitones
    QK_MIDI_TRANSPOSE_4MI_TR4Set transposition to +4 semitones
    QK_MIDI_TRANSPOSE_5MI_TR5Set transposition to +5 semitones
    QK_MIDI_TRANSPOSE_6MI_TR6Set transposition to +6 semitones
    QK_MIDI_TRANSPOSE_DOWNMI_TRSDDecrease transposition
    QK_MIDI_TRANSPOSE_UPMI_TRSUIncrease transposition
    QK_MIDI_VELOCITY_0MI_VL0Set velocity to 0
    QK_MIDI_VELOCITY_1MI_VL1Set velocity to 12
    QK_MIDI_VELOCITY_2MI_VL2Set velocity to 25
    QK_MIDI_VELOCITY_3MI_VL3Set velocity to 38
    QK_MIDI_VELOCITY_4MI_VL4Set velocity to 51
    QK_MIDI_VELOCITY_5MI_VL5Set velocity to 64
    QK_MIDI_VELOCITY_6MI_VL6Set velocity to 76
    QK_MIDI_VELOCITY_7MI_VL7Set velocity to 89
    QK_MIDI_VELOCITY_8MI_VL8Set velocity to 102
    QK_MIDI_VELOCITY_9MI_VL9Set velocity to 114
    QK_MIDI_VELOCITY_10MI_VL10Set velocity to 127
    QK_MIDI_VELOCITY_DOWNMI_VELDDecrease velocity
    QK_MIDI_VELOCITY_UPMI_VELUIncrease velocity
    QK_MIDI_CHANNEL_1MI_CH1Set channel to 1
    QK_MIDI_CHANNEL_2MI_CH2Set channel to 2
    QK_MIDI_CHANNEL_3MI_CH3Set channel to 3
    QK_MIDI_CHANNEL_4MI_CH4Set channel to 4
    QK_MIDI_CHANNEL_5MI_CH5Set channel to 5
    QK_MIDI_CHANNEL_6MI_CH6Set channel to 6
    QK_MIDI_CHANNEL_7MI_CH7Set channel to 7
    QK_MIDI_CHANNEL_8MI_CH8Set channel to 8
    QK_MIDI_CHANNEL_9MI_CH9Set channel to 9
    QK_MIDI_CHANNEL_10MI_CH10Set channel to 10
    QK_MIDI_CHANNEL_11MI_CH11Set channel to 11
    QK_MIDI_CHANNEL_12MI_CH12Set channel to 12
    QK_MIDI_CHANNEL_13MI_CH13Set channel to 13
    QK_MIDI_CHANNEL_14MI_CH14Set channel to 14
    QK_MIDI_CHANNEL_15MI_CH15Set channel to 15
    QK_MIDI_CHANNEL_16MI_CH16Set channel to 16
    QK_MIDI_CHANNEL_DOWNMI_CHNDDecrease channel
    QK_MIDI_CHANNEL_UPMI_CHNUIncrease channel
    QK_MIDI_ALL_NOTES_OFFMI_AOFFStop all notes
    QK_MIDI_SUSTAINMI_SUSTSustain
    QK_MIDI_PORTAMENTOMI_PORTPortmento
    QK_MIDI_SOSTENUTOMI_SOSTSostenuto
    QK_MIDI_SOFTMI_SOFTSoft Pedal
    QK_MIDI_LEGATOMI_LEGLegato
    QK_MIDI_MODULATIONMI_MODModulation
    QK_MIDI_MODULATION_SPEED_DOWNMI_MODDDecrease modulation speed
    QK_MIDI_MODULATION_SPEED_UPMI_MODUIncrease modulation speed
    QK_MIDI_PITCH_BEND_DOWNMI_BNDDBend pitch down
    QK_MIDI_PITCH_BEND_UPMI_BNDUBend pitch up

    Mouse Keys

    See also: Mouse Keys

    KeyAliasesDescription
    QK_MOUSE_CURSOR_UPMS_UPMouse cursor up
    QK_MOUSE_CURSOR_DOWNMS_DOWNMouse cursor down
    QK_MOUSE_CURSOR_LEFTMS_LEFTMouse cursor left
    QK_MOUSE_CURSOR_RIGHTMS_RGHTMouse cursor right
    QK_MOUSE_BUTTON_1MS_BTN1Mouse button 1
    QK_MOUSE_BUTTON_2MS_BTN2Mouse button 2
    QK_MOUSE_BUTTON_3MS_BTN3Mouse button 3
    QK_MOUSE_BUTTON_4MS_BTN4Mouse button 4
    QK_MOUSE_BUTTON_5MS_BTN5Mouse button 5
    QK_MOUSE_BUTTON_6MS_BTN6Mouse button 6
    QK_MOUSE_BUTTON_7MS_BTN7Mouse button 7
    QK_MOUSE_BUTTON_8MS_BTN8Mouse button 8
    QK_MOUSE_WHEEL_UPMS_WHLUMouse wheel up
    QK_MOUSE_WHEEL_DOWNMS_WHLDMouse wheel down
    QK_MOUSE_WHEEL_LEFTMS_WHLLMouse wheel left
    QK_MOUSE_WHEEL_RIGHTMS_WHLRMouse wheel right
    QK_MOUSE_ACCELERATION_0MS_ACL0Set mouse acceleration to 0
    QK_MOUSE_ACCELERATION_1MS_ACL1Set mouse acceleration to 1
    QK_MOUSE_ACCELERATION_2MS_ACL2Set mouse acceleration to 2

    Modifiers

    See also: Modifier Keys

    KeyAliasesDescription
    LCTL(kc)C(kc)Hold Left Control and press kc
    LSFT(kc)S(kc)Hold Left Shift and press kc
    LALT(kc)A(kc), LOPT(kc)Hold Left Alt and press kc
    LGUI(kc)G(kc), LCMD(kc), LWIN(kc)Hold Left GUI and press kc
    RCTL(kc)Hold Right Control and press kc
    RSFT(kc)Hold Right Shift and press kc
    RALT(kc)ROPT(kc), ALGR(kc)Hold Right Alt (AltGr) and press kc
    RGUI(kc)RCMD(kc), RWIN(kc)Hold Right GUI and press kc
    LSG(kc)SGUI(kc), SCMD(kc), SWIN(kc)Hold Left Shift and Left GUI and press kc
    LAG(kc)Hold Left Alt and Left GUI and press kc
    RSG(kc)Hold Right Shift and Right GUI and press kc
    RAG(kc)Hold Right Alt and Right GUI and press kc
    LCA(kc)Hold Left Control and Alt and press kc
    LSA(kc)Hold Left Shift and Left Alt and press kc
    RSA(kc)SAGR(kc)Hold Right Shift and Right Alt (AltGr) and press kc
    RCS(kc)Hold Right Control and Right Shift and press kc
    LCAG(kc)Hold Left Control, Alt and GUI and press kc
    MEH(kc)Hold Left Control, Shift and Alt and press kc
    HYPR(kc)Hold Left Control, Shift, Alt and GUI and press kc
    KC_MEHLeft Control, Shift and Alt
    KC_HYPRLeft Control, Shift, Alt and GUI

    Mod-Tap Keys

    See also: Mod-Tap

    KeyAliasesDescription
    MT(mod, kc)mod when held, kc when tapped
    LCTL_T(kc)CTL_T(kc)Left Control when held, kc when tapped
    LSFT_T(kc)SFT_T(kc)Left Shift when held, kc when tapped
    LALT_T(kc)LOPT_T(kc), ALT_T(kc), OPT_T(kc)Left Alt when held, kc when tapped
    LGUI_T(kc)LCMD_T(kc), LWIN_T(kc), GUI_T(kc), CMD_T(kc), WIN_T(kc)Left GUI when held, kc when tapped
    RCTL_T(kc)Right Control when held, kc when tapped
    RSFT_T(kc)Right Shift when held, kc when tapped
    RALT_T(kc)ROPT_T(kc), ALGR_T(kc)Right Alt (AltGr) when held, kc when tapped
    RGUI_T(kc)RCMD_T(kc), RWIN_T(kc)Right GUI when held, kc when tapped
    LSG_T(kc)SGUI_T(kc), SCMD_T(kc), SWIN_T(kc)Left Shift and GUI when held, kc when tapped
    LAG_T(kc)Left Alt and GUI when held, kc when tapped
    RSG_T(kc)Right Shift and GUI when held, kc when tapped
    RAG_T(kc)Right Alt and GUI when held, kc when tapped
    LCA_T(kc)Left Control and Alt when held, kc when tapped
    LSA_T(kc)Left Shift and Left Alt when held, kc when tapped
    RSA_T(kc)SAGR_T(kc)Right Shift and Right Alt (AltGr) when held, kc when tapped
    RCS_T(kc)Right Control and Right Shift when held, kc when tapped
    LCAG_T(kc)Left Control, Alt and GUI when held, kc when tapped
    RCAG_T(kc)Right Control, Alt and GUI when held, kc when tapped
    C_S_T(kc)Left Control and Shift when held, kc when tapped
    MEH_T(kc)Left Control, Shift and Alt when held, kc when tapped
    HYPR_T(kc)ALL_T(kc)Left Control, Shift, Alt and GUI when held, kc when tapped - more info here

    Tapping Term Keys

    See also: Dynamic Tapping Term

    KeyAliasesDescription
    QK_DYNAMIC_TAPPING_TERM_PRINTDT_PRNTTypes the current tapping term, in milliseconds
    QK_DYNAMIC_TAPPING_TERM_UPDT_UPIncreases the current tapping term by DYNAMIC_TAPPING_TERM_INCREMENTms (5ms by default)
    QK_DYNAMIC_TAPPING_TERM_DOWNDT_DOWNDecreases the current tapping term by DYNAMIC_TAPPING_TERM_INCREMENTms (5ms by default)

    RGB Lighting

    See also: RGB Lighting

    KeyAliasesDescription
    QK_UNDERGLOW_TOGGLEUG_TOGGToggle RGB lighting on or off
    QK_UNDERGLOW_MODE_NEXTUG_NEXTCycle through modes, reverse direction when Shift is held
    QK_UNDERGLOW_MODE_PREVIOUSUG_PREVCycle through modes in reverse, forward direction when Shift is held
    QK_UNDERGLOW_HUE_UPUG_HUEUIncrease hue, decrease hue when Shift is held
    QK_UNDERGLOW_HUE_DOWNUG_HUEDDecrease hue, increase hue when Shift is held
    QK_UNDERGLOW_SATURATION_UPUG_SATUIncrease saturation, decrease saturation when Shift is held
    QK_UNDERGLOW_SATURATION_DOWNUG_SATDDecrease saturation, increase saturation when Shift is held
    QK_UNDERGLOW_VALUE_UPUG_VALUIncrease value (brightness), decrease value when Shift is held
    QK_UNDERGLOW_VALUE_DOWNUG_VALDDecrease value (brightness), increase value when Shift is held
    QK_UNDERGLOW_SPEED_UPUG_SPDUIncrease effect speed (brightness), decrease speed when Shift is held
    QK_UNDERGLOW_SPEED_DOWNUG_SPDDDecrease effect speed (brightness), increase speed when Shift is held
    RGB_MODE_PLAINRGB_M_P Static (no animation) mode (deprecated)
    RGB_MODE_BREATHERGB_M_BBreathing animation mode (deprecated)
    RGB_MODE_RAINBOWRGB_M_RRainbow animation mode (deprecated)
    RGB_MODE_SWIRLRGB_M_SWSwirl animation mode (deprecated)
    RGB_MODE_SNAKERGB_M_SNSnake animation mode (deprecated)
    RGB_MODE_KNIGHTRGB_M_K"Knight Rider" animation mode (deprecated)
    RGB_MODE_XMASRGB_M_XChristmas animation mode (deprecated)
    RGB_MODE_GRADIENTRGB_M_GStatic gradient animation mode (deprecated)
    RGB_MODE_RGBTESTRGB_M_TRed, Green, Blue test animation mode (deprecated)
    RGB_MODE_TWINKLERGB_M_TWTwinkle animation mode (deprecated)

    RGB Matrix Lighting

    See also: RGB Matrix Lighting

    KeyAliasesDescription
    RGB_TOGToggle RGB lighting on or off
    RGB_MODE_FORWARDRGB_MODCycle through modes, reverse direction when Shift is held
    RGB_MODE_REVERSERGB_RMODCycle through modes in reverse, forward direction when Shift is held
    RGB_HUIIncrease hue, decrease hue when Shift is held
    RGB_HUDDecrease hue, increase hue when Shift is held
    RGB_SAIIncrease saturation, decrease saturation when Shift is held
    RGB_SADDecrease saturation, increase saturation when Shift is held
    RGB_VAIIncrease value (brightness), decrease value when Shift is held
    RGB_VADDecrease value (brightness), increase value when Shift is held
    RGB_SPIIncrease effect speed (does not support eeprom yet), decrease speed when Shift is held
    RGB_SPDDecrease effect speed (does not support eeprom yet), increase speed when Shift is held

    US ANSI Shifted Symbols

    See also: US ANSI Shifted Symbols

    KeyAliasesDescription
    KC_TILDEKC_TILD~
    KC_EXCLAIMKC_EXLM!
    KC_AT@
    KC_HASH#
    KC_DOLLARKC_DLR$
    KC_PERCENTKC_PERC%
    KC_CIRCUMFLEXKC_CIRC^
    KC_AMPERSANDKC_AMPR&
    KC_ASTERISKKC_ASTR*
    KC_LEFT_PARENKC_LPRN(
    KC_RIGHT_PARENKC_RPRN)
    KC_UNDERSCOREKC_UNDS_
    KC_PLUS+
    KC_LEFT_CURLY_BRACEKC_LCBR{
    KC_RIGHT_CURLY_BRACEKC_RCBR}
    KC_PIPE|
    KC_COLONKC_COLN:
    KC_DOUBLE_QUOTEKC_DQUO, KC_DQT"
    KC_LEFT_ANGLE_BRACKETKC_LABK, KC_LT<
    KC_RIGHT_ANGLE_BRACKETKC_RABK, KC_GT>
    KC_QUESTIONKC_QUES?

    One Shot Keys

    See also: One Shot Keys

    KeyAliasesDescription
    OSM(mod)Hold mod for one keypress
    OSL(layer)Switch to layer for one keypress
    QK_ONE_SHOT_TOGGLEOS_TOGGToggles One Shot keys status
    QK_ONE_SHOT_ONOS_ONTurns One Shot keys on
    QK_ONE_SHOT_OFFOS_OFFTurns One Shot keys off

    Programmable Button Support

    See also: Programmable Button

    KeyAliasesDescription
    QK_PROGRAMMABLE_BUTTON_1PB_1Programmable button 1
    QK_PROGRAMMABLE_BUTTON_2PB_2Programmable button 2
    QK_PROGRAMMABLE_BUTTON_3PB_3Programmable button 3
    QK_PROGRAMMABLE_BUTTON_4PB_4Programmable button 4
    QK_PROGRAMMABLE_BUTTON_5PB_5Programmable button 5
    QK_PROGRAMMABLE_BUTTON_6PB_6Programmable button 6
    QK_PROGRAMMABLE_BUTTON_7PB_7Programmable button 7
    QK_PROGRAMMABLE_BUTTON_8PB_8Programmable button 8
    QK_PROGRAMMABLE_BUTTON_9PB_9Programmable button 9
    QK_PROGRAMMABLE_BUTTON_10PB_10Programmable button 10
    QK_PROGRAMMABLE_BUTTON_11PB_11Programmable button 11
    QK_PROGRAMMABLE_BUTTON_12PB_12Programmable button 12
    QK_PROGRAMMABLE_BUTTON_13PB_13Programmable button 13
    QK_PROGRAMMABLE_BUTTON_14PB_14Programmable button 14
    QK_PROGRAMMABLE_BUTTON_15PB_15Programmable button 15
    QK_PROGRAMMABLE_BUTTON_16PB_16Programmable button 16
    QK_PROGRAMMABLE_BUTTON_17PB_17Programmable button 17
    QK_PROGRAMMABLE_BUTTON_18PB_18Programmable button 18
    QK_PROGRAMMABLE_BUTTON_19PB_19Programmable button 19
    QK_PROGRAMMABLE_BUTTON_20PB_20Programmable button 20
    QK_PROGRAMMABLE_BUTTON_21PB_21Programmable button 21
    QK_PROGRAMMABLE_BUTTON_22PB_22Programmable button 22
    QK_PROGRAMMABLE_BUTTON_23PB_23Programmable button 23
    QK_PROGRAMMABLE_BUTTON_24PB_24Programmable button 24
    QK_PROGRAMMABLE_BUTTON_25PB_25Programmable button 25
    QK_PROGRAMMABLE_BUTTON_26PB_26Programmable button 26
    QK_PROGRAMMABLE_BUTTON_27PB_27Programmable button 27
    QK_PROGRAMMABLE_BUTTON_28PB_28Programmable button 28
    QK_PROGRAMMABLE_BUTTON_29PB_29Programmable button 29
    QK_PROGRAMMABLE_BUTTON_30PB_30Programmable button 30
    QK_PROGRAMMABLE_BUTTON_31PB_31Programmable button 31
    QK_PROGRAMMABLE_BUTTON_32PB_32Programmable button 32

    Repeat Key

    See also: Repeat Key

    KeycodeAliasesDescription
    QK_REPEAT_KEYQK_REPRepeat the last pressed key
    QK_ALT_REPEAT_KEYQK_AREPPerform alternate of the last key

    Space Cadet

    See also: Space Cadet

    KeyAliasesDescription
    QK_SPACE_CADET_LEFT_CTRL_PARENTHESIS_OPENSC_LCPOLeft Control when held, ( when tapped
    QK_SPACE_CADET_RIGHT_CTRL_PARENTHESIS_CLOSESC_RCPCRight Control when held, ) when tapped
    QK_SPACE_CADET_LEFT_SHIFT_PARENTHESIS_OPENSC_LSPOLeft Shift when held, ( when tapped
    QK_SPACE_CADET_RIGHT_SHIFT_PARENTHESIS_CLOSESC_RSPCRight Shift when held, ) when tapped
    QK_SPACE_CADET_LEFT_ALT_PARENTHESIS_OPENSC_LAPOLeft Alt when held, ( when tapped
    QK_SPACE_CADET_RIGHT_ALT_PARENTHESIS_CLOSESC_RAPCRight Alt when held, ) when tapped
    QK_SPACE_CADET_RIGHT_SHIFT_ENTERSC_SENTRight Shift when held, Enter when tapped

    Swap Hands

    See also: Swap Hands

    KeyAliasesDescription
    SH_T(kc)Momentary swap when held, kc when tapped
    QK_SWAP_HANDS_ONSH_ONTurn on hand swap
    QK_SWAP_HANDS_OFFSH_OFFTurn off hand swap
    QK_SWAP_HANDS_MOMENTARY_ONSH_MONTurn on hand swap while held
    QK_SWAP_HANDS_MOMENTARY_OFFSH_MOFFTurn off hand swap while held
    QK_SWAP_HANDS_TOGGLESH_TOGGToggle hand swap
    QK_SWAP_HANDS_TAP_TOGGLESH_TTMomentary swap when held, toggle when tapped
    QK_SWAP_HANDS_ONE_SHOTSH_OSTurn on hand swap while held or until next key press

    Unicode Support

    See also: Unicode Support

    KeyAliasesDescription
    UC(c)Send Unicode code point c, up to 0x7FFF
    UM(i)Send Unicode code point at index i in unicode_map
    UP(i, j)Send Unicode code point at index i, or j if Shift/Caps is on
    QK_UNICODE_MODE_NEXTUC_NEXTCycle through selected input modes
    QK_UNICODE_MODE_PREVIOUSUC_PREVCycle through selected input modes in reverse
    QK_UNICODE_MODE_MACOSUC_MACSwitch to macOS input
    QK_UNICODE_MODE_LINUXUC_LINXSwitch to Linux input
    QK_UNICODE_MODE_WINDOWSUC_WINSwitch to Windows input
    QK_UNICODE_MODE_BSDUC_BSDSwitch to BSD input (not implemented)
    QK_UNICODE_MODE_WINCOMPOSEUC_WINCSwitch to Windows input using WinCompose
    QK_UNICODE_MODE_EMACSUC_EMACSwitch to emacs (C-x-8 RET)
    - + \ No newline at end of file diff --git a/keycodes_basic.html b/keycodes_basic.html index 52314029565..4b6012da085 100644 --- a/keycodes_basic.html +++ b/keycodes_basic.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Basic Keycodes

    The basic set of keycodes are based on the HID Keyboard/Keypad Usage Page (0x07) with the exception of KC_NO, KC_TRNS and keycodes in the 0xA5-DF range. See below for more details.

    Letters and Numbers

    KeyDescription
    KC_Aa and A
    KC_Bb and B
    KC_Cc and C
    KC_Dd and D
    KC_Ee and E
    KC_Ff and F
    KC_Gg and G
    KC_Hh and H
    KC_Ii and I
    KC_Jj and J
    KC_Kk and K
    KC_Ll and L
    KC_Mm and M
    KC_Nn and N
    KC_Oo and O
    KC_Pp and P
    KC_Qq and Q
    KC_Rr and R
    KC_Ss and S
    KC_Tt and T
    KC_Uu and U
    KC_Vv and V
    KC_Ww and W
    KC_Xx and X
    KC_Yy and Y
    KC_Zz and Z
    KC_11 and !
    KC_22 and @
    KC_33 and #
    KC_44 and $
    KC_55 and %
    KC_66 and ^
    KC_77 and &
    KC_88 and *
    KC_99 and (
    KC_00 and )

    F Keys

    KeyDescription
    KC_F1F1
    KC_F2F2
    KC_F3F3
    KC_F4F4
    KC_F5F5
    KC_F6F6
    KC_F7F7
    KC_F8F8
    KC_F9F9
    KC_F10F10
    KC_F11F11
    KC_F12F12
    KC_F13F13
    KC_F14F14
    KC_F15F15
    KC_F16F16
    KC_F17F17
    KC_F18F18
    KC_F19F19
    KC_F20F20
    KC_F21F21
    KC_F22F22
    KC_F23F23
    KC_F24F24

    Punctuation

    KeyAliasesDescription
    KC_ENTERKC_ENTReturn (Enter)
    KC_ESCAPEKC_ESCEscape
    KC_BACKSPACEKC_BSPCDelete (Backspace)
    KC_TABTab
    KC_SPACEKC_SPCSpacebar
    KC_MINUSKC_MINS- and _
    KC_EQUALKC_EQL= and +
    KC_LEFT_BRACKETKC_LBRC[ and {
    KC_RIGHT_BRACKETKC_RBRC] and }
    KC_BACKSLASHKC_BSLS\ and |
    KC_NONUS_HASHKC_NUHSNon-US # and ~
    KC_SEMICOLONKC_SCLN; and :
    KC_QUOTEKC_QUOT' and "
    KC_GRAVEKC_GRV` and ~
    KC_COMMAKC_COMM, and <
    KC_DOT. and >
    KC_SLASHKC_SLSH/ and ?
    KC_NONUS_BACKSLASHKC_NUBSNon-US \ and |

    Lock Keys

    KeyAliasesDescription
    KC_CAPS_LOCKKC_CAPSCaps Lock
    KC_SCROLL_LOCKKC_SCRL, KC_BRMDScroll Lock, Brightness Down (macOS)
    KC_NUM_LOCKKC_NUMKeypad Num Lock and Clear
    KC_LOCKING_CAPS_LOCKKC_LCAPLocking Caps Lock
    KC_LOCKING_NUM_LOCKKC_LNUMLocking Num Lock
    KC_LOCKING_SCROLL_LOCKKC_LSCRLocking Scroll Lock

    Modifiers

    KeyAliasesDescription
    KC_LEFT_CTRLKC_LCTLLeft Control
    KC_LEFT_SHIFTKC_LSFTLeft Shift
    KC_LEFT_ALTKC_LALT, KC_LOPTLeft Alt (Option)
    KC_LEFT_GUIKC_LGUI, KC_LCMD, KC_LWINLeft GUI (Windows/Command/Meta key)
    KC_RIGHT_CTRLKC_RCTLRight Control
    KC_RIGHT_SHIFTKC_RSFTRight Shift
    KC_RIGHT_ALTKC_RALT, KC_ROPT, KC_ALGRRight Alt (Option/AltGr)
    KC_RIGHT_GUIKC_RGUI, KC_RCMD, KC_RWINRight GUI (Windows/Command/Meta key)

    International

    KeyAliasesDescription
    KC_INTERNATIONAL_1KC_INT1JIS \ and _
    KC_INTERNATIONAL_2KC_INT2JIS Katakana/Hiragana
    KC_INTERNATIONAL_3KC_INT3JIS ¥ and |
    KC_INTERNATIONAL_4KC_INT4JIS Henkan
    KC_INTERNATIONAL_5KC_INT5JIS Muhenkan
    KC_INTERNATIONAL_6KC_INT6JIS Numpad ,
    KC_INTERNATIONAL_7KC_INT7International 7
    KC_INTERNATIONAL_8KC_INT8International 8
    KC_INTERNATIONAL_9KC_INT9International 9
    KC_LANGUAGE_1KC_LNG1Hangul/English
    KC_LANGUAGE_2KC_LNG2Hanja
    KC_LANGUAGE_3KC_LNG3JIS Katakana
    KC_LANGUAGE_4KC_LNG4JIS Hiragana
    KC_LANGUAGE_5KC_LNG5JIS Zenkaku/Hankaku
    KC_LANGUAGE_6KC_LNG6Language 6
    KC_LANGUAGE_7KC_LNG7Language 7
    KC_LANGUAGE_8KC_LNG8Language 8
    KC_LANGUAGE_9KC_LNG9Language 9

    Commands

    KeyAliasesDescription
    KC_PRINT_SCREENKC_PSCRPrint Screen
    KC_PAUSEKC_PAUS, KC_BRK, KC_BRMUPause, Brightness Up (macOS)
    KC_INSERTKC_INSInsert
    KC_HOMEHome
    KC_PAGE_UPKC_PGUPPage Up
    KC_DELETEKC_DELForward Delete
    KC_ENDEnd
    KC_PAGE_DOWNKC_PGDNPage Down
    KC_RIGHTKC_RGHTRight Arrow
    KC_LEFTLeft Arrow
    KC_DOWNDown Arrow
    KC_UPUp Arrow
    KC_APPLICATIONKC_APPApplication (Windows Context Menu Key)
    KC_KB_POWERSystem Power
    KC_EXECUTEKC_EXECExecute
    KC_HELPHelp
    KC_MENUMenu
    KC_SELECTKC_SLCTSelect
    KC_STOPStop
    KC_AGAINKC_AGINAgain
    KC_UNDOUndo
    KC_CUTCut
    KC_COPYCopy
    KC_PASTEKC_PSTEPaste
    KC_FINDFind
    KC_KB_MUTEMute
    KC_KB_VOLUME_UPVolume Up
    KC_KB_VOLUME_DOWNVolume Down
    KC_ALTERNATE_ERASEKC_ERASAlternate Erase
    KC_SYSTEM_REQUESTKC_SYRQSysReq/Attention
    KC_CANCELKC_CNCLCancel
    KC_CLEARKC_CLRClear
    KC_PRIORKC_PRIRPrior
    KC_RETURNKC_RETNReturn
    KC_SEPARATORKC_SEPRSeparator
    KC_OUTOut
    KC_OPEROper
    KC_CLEAR_AGAINKC_CLAGClear/Again
    KC_CRSELKC_CRSLCrSel/Props
    KC_EXSELKC_EXSLExSel

    Media Keys

    These keycodes are not part of the Keyboard/Keypad usage page. The SYSTEM_ keycodes are found in the Generic Desktop page, and the rest are located in the Consumer page.

    TIP

    Some of these keycodes may behave differently depending on the OS. For example, on macOS, the keycodes KC_MEDIA_FAST_FORWARD, KC_MEDIA_REWIND, KC_MEDIA_NEXT_TRACK and KC_MEDIA_PREV_TRACK skip within the current track when held, but skip the entire track when tapped.

    KeyAliasesDescription
    KC_SYSTEM_POWERKC_PWRSystem Power Down
    KC_SYSTEM_SLEEPKC_SLEPSystem Sleep
    KC_SYSTEM_WAKEKC_WAKESystem Wake
    KC_AUDIO_MUTEKC_MUTEMute
    KC_AUDIO_VOL_UPKC_VOLUVolume Up
    KC_AUDIO_VOL_DOWNKC_VOLDVolume Down
    KC_MEDIA_NEXT_TRACKKC_MNXTNext Track
    KC_MEDIA_PREV_TRACKKC_MPRVPrevious Track
    KC_MEDIA_STOPKC_MSTPStop Track
    KC_MEDIA_PLAY_PAUSEKC_MPLYPlay/Pause Track
    KC_MEDIA_SELECTKC_MSELLaunch Media Player
    KC_MEDIA_EJECTKC_EJCTEject
    KC_MAILLaunch Mail
    KC_CALCULATORKC_CALCLaunch Calculator
    KC_MY_COMPUTERKC_MYCMLaunch My Computer
    KC_WWW_SEARCHKC_WSCHBrowser Search
    KC_WWW_HOMEKC_WHOMBrowser Home
    KC_WWW_BACKKC_WBAKBrowser Back
    KC_WWW_FORWARDKC_WFWDBrowser Forward
    KC_WWW_STOPKC_WSTPBrowser Stop
    KC_WWW_REFRESHKC_WREFBrowser Refresh
    KC_WWW_FAVORITESKC_WFAVBrowser Favorites
    KC_MEDIA_FAST_FORWARDKC_MFFDNext Track
    KC_MEDIA_REWINDKC_MRWDPrevious Track
    KC_BRIGHTNESS_UPKC_BRIUBrightness Up
    KC_BRIGHTNESS_DOWNKC_BRIDBrightness Down
    KC_CONTROL_PANELKC_CPNLOpen Control Panel
    KC_ASSISTANTKC_ASSTLaunch Assistant
    KC_MISSION_CONTROLKC_MCTLOpen Mission Control
    KC_LAUNCHPADKC_LPADOpen Launchpad

    Number Pad

    KeyAliasesDescription
    KC_KP_SLASHKC_PSLSKeypad /
    KC_KP_ASTERISKKC_PASTKeypad *
    KC_KP_MINUSKC_PMNSKeypad -
    KC_KP_PLUSKC_PPLSKeypad +
    KC_KP_ENTERKC_PENTKeypad Enter
    KC_KP_1KC_P1Keypad 1 and End
    KC_KP_2KC_P2Keypad 2 and Down Arrow
    KC_KP_3KC_P3Keypad 3 and Page Down
    KC_KP_4KC_P4Keypad 4 and Left Arrow
    KC_KP_5KC_P5Keypad 5
    KC_KP_6KC_P6Keypad 6 and Right Arrow
    KC_KP_7KC_P7Keypad 7 and Home
    KC_KP_8KC_P8Keypad 8 and Up Arrow
    KC_KP_9KC_P9Keypad 9 and Page Up
    KC_KP_0KC_P0Keypad 0 and Insert
    KC_KP_DOTKC_PDOTKeypad . and Delete
    KC_KP_EQUALKC_PEQLKeypad =
    KC_KP_COMMAKC_PCMMKeypad ,
    KC_KP_EQUAL_AS400Keypad = on AS/400 keyboards

    Special Keys

    In addition to these, keycodes in the range of 0xA5-DF are reserved for internal use.

    KeyAliasesDescription
    KC_NOXXXXXXXIgnore this key (NOOP)
    KC_TRANSPARENTKC_TRNS, _______Use the next lowest non-transparent key
    - + \ No newline at end of file diff --git a/keycodes_magic.html b/keycodes_magic.html index c2f8368a10a..8a8f5b5b19b 100644 --- a/keycodes_magic.html +++ b/keycodes_magic.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Magic Keycodes

    Magic Keycodes are prefixed with MAGIC_, and allow you to access the functionality of the deprecated Bootmagic feature after your keyboard has initialized. To use the keycodes, assign them to your keymap as you would any other keycode.

    KeyAliasesDescription
    QK_MAGIC_SWAP_CONTROL_CAPS_LOCKCL_SWAPSwap Caps Lock and Left Control
    QK_MAGIC_UNSWAP_CONTROL_CAPS_LOCKCL_NORMUnswap Caps Lock and Left Control
    QK_MAGIC_TOGGLE_CONTROL_CAPS_LOCKCL_TOGGToggle Caps Lock and Left Control swap
    QK_MAGIC_CAPS_LOCK_AS_CONTROL_ONCL_CTRLTreat Caps Lock as Control
    QK_MAGIC_CAPS_LOCK_AS_CONTROL_OFFCL_CAPSStop treating Caps Lock as Control
    QK_MAGIC_SWAP_ESCAPE_CAPS_LOCKEC_SWAPSwap Caps Lock and Escape
    QK_MAGIC_UNSWAP_ESCAPE_CAPS_LOCKEC_NORMUnswap Caps Lock and Escape
    QK_MAGIC_TOGGLE_ESCAPE_CAPS_LOCKEC_TOGGToggle Caps Lock and Escape swap
    QK_MAGIC_SWAP_LCTL_LGUICG_LSWPSwap Left Control and GUI
    QK_MAGIC_UNSWAP_LCTL_LGUICG_LNRMUnswap Left Control and GUI
    QK_MAGIC_SWAP_RCTL_RGUICG_RSWPSwap Right Control and GUI
    QK_MAGIC_UNSWAP_RCTL_RGUICG_RNRMUnswap Right Control and GUI
    QK_MAGIC_SWAP_CTL_GUICG_SWAPSwap Control and GUI on both sides
    QK_MAGIC_UNSWAP_CTL_GUICG_NORMUnswap Control and GUI on both sides
    QK_MAGIC_TOGGLE_CTL_GUICG_TOGGToggle Control and GUI swap on both sides
    QK_MAGIC_SWAP_LALT_LGUIAG_LSWPSwap Left Alt and GUI
    QK_MAGIC_UNSWAP_LALT_LGUIAG_LNRMUnswap Left Alt and GUI
    QK_MAGIC_SWAP_RALT_RGUIAG_RSWPSwap Right Alt and GUI
    QK_MAGIC_UNSWAP_RALT_RGUIAG_RNRMUnswap Right Alt and GUI
    QK_MAGIC_SWAP_ALT_GUIAG_SWAPSwap Alt and GUI on both sides
    QK_MAGIC_UNSWAP_ALT_GUIAG_NORMUnswap Alt and GUI on both sides
    QK_MAGIC_TOGGLE_ALT_GUIAG_TOGGToggle Alt and GUI swap on both sides
    QK_MAGIC_GUI_OFFGU_OFFDisable the GUI keys
    QK_MAGIC_GUI_ONGU_ONEnable the GUI keys
    QK_MAGIC_TOGGLE_GUIGU_TOGGToggles the status of the GUI keys
    QK_MAGIC_SWAP_GRAVE_ESCGE_SWAPSwap ` and Escape
    QK_MAGIC_UNSWAP_GRAVE_ESCGE_NORMUnswap ` and Escape
    QK_MAGIC_SWAP_BACKSLASH_BACKSPACEBS_SWAPSwap \ and Backspace
    QK_MAGIC_UNSWAP_BACKSLASH_BACKSPACEBS_NORMUnswap \ and Backspace
    QK_MAGIC_TOGGLE_BACKSLASH_BACKSPACEBS_TOGGToggle \ and Backspace swap state
    QK_MAGIC_NKRO_ONNK_ONEnable N-key rollover
    QK_MAGIC_NKRO_OFFNK_OFFDisable N-key rollover
    QK_MAGIC_TOGGLE_NKRONK_TOGGToggle N-key rollover
    QK_MAGIC_EE_HANDS_LEFTEH_LEFTSet the master half of a split keyboard as the left hand (for EE_HANDS)
    QK_MAGIC_EE_HANDS_RIGHTEH_RGHTSet the master half of a split keyboard as the right hand (for EE_HANDS)
    - + \ No newline at end of file diff --git a/keycodes_us_ansi_shifted.html b/keycodes_us_ansi_shifted.html index e2d2bb18abf..ba7ccd819bb 100644 --- a/keycodes_us_ansi_shifted.html +++ b/keycodes_us_ansi_shifted.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    US ANSI Shifted Symbols

    These keycodes correspond to characters that are "shifted" on a standard US ANSI keyboard. They do not have keycodes of their own but are simply shortcuts for LSFT(kc), and as such send a Left Shift with the unshifted keycode, not the symbol itself.

    Caveats

    Unfortunately, these keycodes cannot be used in Mod-Taps or Layer-Taps, since any modifiers specified in the keycode are ignored.

    Additionally, you may run into issues when using Remote Desktop Connection on Windows. Because these codes send shift very fast, Remote Desktop may miss the codes.

    To fix this, open Remote Desktop Connection, click on "Show Options", open the "Local Resources" tab. In the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly.

    Keycodes

    KeyAliasesDescription
    KC_TILDEKC_TILD~
    KC_EXCLAIMKC_EXLM!
    KC_AT@
    KC_HASH#
    KC_DOLLARKC_DLR$
    KC_PERCENTKC_PERC%
    KC_CIRCUMFLEXKC_CIRC^
    KC_AMPERSANDKC_AMPR&
    KC_ASTERISKKC_ASTR*
    KC_LEFT_PARENKC_LPRN(
    KC_RIGHT_PARENKC_RPRN)
    KC_UNDERSCOREKC_UNDS_
    KC_PLUS+
    KC_LEFT_CURLY_BRACEKC_LCBR{
    KC_RIGHT_CURLY_BRACEKC_RCBR}
    KC_PIPE|
    KC_COLONKC_COLN:
    KC_DOUBLE_QUOTEKC_DQUO, KC_DQT"
    KC_LEFT_ANGLE_BRACKETKC_LABK, KC_LT<
    KC_RIGHT_ANGLE_BRACKETKC_RABK, KC_GT>
    KC_QUESTIONKC_QUES?
    - + \ No newline at end of file diff --git a/keymap.html b/keymap.html index 488e108a681..e66a3e24cf6 100644 --- a/keymap.html +++ b/keymap.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -92,7 +92,7 @@ _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, _______, _______, _______, _______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END ),

    Some interesting things to note:

    Nitty Gritty Details

    This should have given you a basic overview for creating your own keymap. For more details see the following resources:

    We are actively working to improve these docs. If you have suggestions for how they could be made better please file an issue!

    - + \ No newline at end of file diff --git a/mod_tap.html b/mod_tap.html index dfca8b473a6..5fdf8208111 100644 --- a/mod_tap.html +++ b/mod_tap.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -61,7 +61,7 @@ } return true; }

    Other Resources

    See the Tap-Hold Configuration Options for additional flags that tweak Mod-Tap behavior.

    - + \ No newline at end of file diff --git a/newbs.html b/newbs.html index 0b7fd00ef5d..e5224b21830 100644 --- a/newbs.html +++ b/newbs.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    The QMK Tutorial

    Your computer keyboard has a processor inside of it, similar to the one inside your computer. This processor runs software that is responsible for detecting button presses and informing the computer when keys are pressed. QMK Firmware fills the role of that software, detecting button presses and passing that information on to the host computer. When you build your custom keymap, you are creating an executable program for your keyboard.

    QMK tries to put a lot of power into your hands by making easy things easy, and hard things possible. You don't have to know how to program to create powerful keymaps — you only have to follow a few simple syntax rules.

    Not sure if your keyboard can run QMK? If it's a mechanical keyboard you built yourself chances are good it can. We support a large number of hobbyist boards. If your current keyboard can't run QMK there are a lot of choices out there for boards that do.

    Is This Guide For Me?

    If the thought of programming intimidates you, please take a look at our online GUI instead.

    Overview

    This guide is suitable for everyone who wants to build a keyboard firmware using the source code. If you are already a programmer you will find the process very familiar and easier to follow. There are 3 main sections to this guide:

    1. Setup Your Environment
    2. Building Your First Firmware
    3. Flashing Firmware

    This guide is focused on helping someone who has never compiled software before. It makes choices and recommendations based on that viewpoint. There are alternative methods for many of these procedures, and we support most of those alternatives. If you have any doubt about how to accomplish a task you can ask us for guidance.

    Additional Resources

    Beyond this guide there are several resources you may find helpful while you learn QMK. We've collected them on the Syllabus and Learning Resources pages.

    - + \ No newline at end of file diff --git a/newbs_building_firmware.html b/newbs_building_firmware.html index 2a0789daede..7abfd9d6703 100644 --- a/newbs_building_firmware.html +++ b/newbs_building_firmware.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -22,7 +22,7 @@ Copying planck_rev5_default.hex to qmk_firmware folder [OK] Checking file size of planck_rev5_default.hex [OK] * The firmware size is fine - 27312/28672 (95%, 1360 bytes free)

    Flash Your Firmware

    Move on to Flashing Firmware to learn how to write your new firmware to your keyboard.

    - + \ No newline at end of file diff --git a/newbs_building_firmware_configurator.html b/newbs_building_firmware_configurator.html index 77c6791b8c5..2ca4b70b492 100644 --- a/newbs_building_firmware_configurator.html +++ b/newbs_building_firmware_configurator.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    QMK Configurator

    QMK Configurator Screenshot

    The QMK Configurator is an online graphical user interface that generates QMK Firmware .hex or .bin files.

    It should be noted that Configurator cannot produce firmwares for keyboards using a different controller than they were designed for, i.e. an RP2040 controller on a board designed for pro micro. You will have to use the command line converters for this.

    Watch the Video Tutorial. Many people find that is enough information to start programming their own keyboard.

    The QMK Configurator works best with Chrome or Firefox.

    WARNING

    Note: Files from other tools such as Keyboard Layout Editor (KLE), or kbfirmware will not be compatible with QMK Configurator. Do not load them, do not import them. QMK Configurator is a DIFFERENT tool.

    Please refer to QMK Configurator: Step by Step.

    - + \ No newline at end of file diff --git a/newbs_building_firmware_workflow.html b/newbs_building_firmware_workflow.html index 72569540f2c..2174be12f91 100644 --- a/newbs_building_firmware_workflow.html +++ b/newbs_building_firmware_workflow.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -78,7 +78,7 @@ git push -u origin main

    TIP

    Use your GitHub personal access token at the password prompt. If you have setup SSH access, replace https://github.com/gh-username/qmk_keymap.git with git@github.com:gh-username/qmk_keymap.git in the remote origin command above.

    Review workflow output

    Files committed to GitHub in the previous step will automatically trigger the workflow to build the JSON file listed in build.yml. To review its output:

    1. Visit your "qmk_keymap" repository page on GitHub.
    2. Select Actions tab to display the "Build QMK Firmware" workflow.
    3. Select that workflow to display its run from the last commit.
    4. Successfully compiled firmware will be under the "Artifacts" section.
    5. If there are build errors, review the job log for details.

    Download and flash the firmware file into your keyboard using QMK Toolbox.

    Customising your keymap

    This setup and workflow relies on the QMK Userspace feature. The build process will copy the QMK source codes and clone your repository into its users/ folder in a container. You must adhere to the following guidelines when customising your keymaps:

    yml
            file:
             - planck.json
             - crkbd.json

    TIP

    See GitHub Actions guide to learn more about development workflow.

    - + \ No newline at end of file diff --git a/newbs_external_userspace.html b/newbs_external_userspace.html index b6eace835af..d435dfdc7aa 100644 --- a/newbs_external_userspace.html +++ b/newbs_external_userspace.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -25,7 +25,7 @@ qmk userspace-add -kb <keyboard> -km <keymap> # or, for a json-based keymap (if kept "loose"): qmk userspace-add <relative/path/to/my/keymap.json>

    This updates the qmk.json file in the root of your External Userspace directory. If you're using a git repository to store your keymaps, now is a great time to commit and push to your own fork.

    Compiling External Userspace build targets

    Once you have added your keymaps to the External Userspace build targets, you can compile all of them at once using the qmk userspace-compile command:

    sh
    qmk userspace-compile

    All firmware builds you've added to the External Userspace build targets will be built, and the resulting firmware files will be placed in the root of your External Userspace directory.

    Using GitHub Actions

    GitHub Actions can be used to automatically build your keymaps whenever you push changes to your External Userspace repository. If you have set up your list of build targets, this is as simple as enabling workflows in the GitHub repository settings:

    Repo Settings

    Any push will result in compilation of all configured builds, and once completed a new release containing the newly-minted firmware files will be created on GitHub, which you can subsequently download and flash to your keyboard:

    Releases

    - + \ No newline at end of file diff --git a/newbs_flashing.html b/newbs_flashing.html index f2afb2156c5..ba4832d7aab 100644 --- a/newbs_flashing.html +++ b/newbs_flashing.html @@ -8,16 +8,16 @@ - + - - - + + + -
    Skip to content

    Flashing Your Keyboard

    Now that you've built a custom firmware file you'll want to flash your keyboard.

    Put Your Keyboard into DFU (Bootloader) Mode

    In order to flash your custom firmware you must first put your keyboard into a special flashing mode. While it is in this mode you will not be able to type or otherwise use your keyboard. It is very important that you do not unplug the keyboard or otherwise interrupt the flashing process while the firmware is being written.

    Different keyboards have different ways to enter this special mode. If your PCB currently runs QMK, TMK, or PS2AVRGB (Bootmapper Client) and you have not been given specific instructions, try the following, in order:

    • Hold down both shift keys and press Pause
    • Hold down both shift keys and press B
    • Unplug your keyboard, hold down the Spacebar and B at the same time, plug in your keyboard and wait a second before releasing the keys
    • Unplug your keyboard, hold down the top or bottom left key (usually Escape or Left Control) and plug in your keyboard
    • Press the physical RESET button, usually located on the underside of the PCB
    • Locate header pins on the PCB labeled RESET and GND, and short them together while plugging your PCB in

    If you've attempted all of the above to no avail, and the main chip on the board says STM32 or RP2-B1 on it, this may be a bit more complicated. Generally your best bet is to ask on Discord for assistance. It's likely some photos of the board will be asked for -- if you can get them ready beforehand it'll help move things along!

    Otherwise, you should see a message in yellow, similar to this in QMK Toolbox:

    *** DFU device connected: Atmel Corp. ATmega32U4 (03EB:2FF4:0000)

    and this bootloader device will also be present in Device Manager, System Information.app, or lsusb.

    Flashing Your Keyboard with QMK Toolbox

    The simplest way to flash your keyboard will be with the QMK Toolbox.

    However, the Toolbox is currently only available for Windows and macOS. If you're using Linux (or just wish to flash the firmware from the command line), skip to the Flash your Keyboard from the Command Line section.

    TIP

    QMK Toolbox is not necessary for flashing RP2040 devices.

    Load the File into QMK Toolbox

    Begin by opening the QMK Toolbox application. You'll want to locate the firmware file in Finder or Explorer. Your keyboard firmware may be in one of two formats- .hex or .bin. QMK tries to copy the appropriate one for your keyboard into the root qmk_firmware directory.

    If you are on Windows or macOS, there are commands you can use to easily open the current folder in Explorer or Finder.

    start .

    The firmware file always follows this naming format:

    <keyboard_name>_<keymap_name>.{bin,hex}

    For example, the planck/rev5 with a default keymap will have this filename:

    planck_rev5_default.hex

    Once you have located your firmware file, drag it into the "Local file" box in QMK Toolbox, or click "Open" and navigate to where your firmware file is stored.

    Flash Your Keyboard

    Click the Flash button in QMK Toolbox. You will see output similar to the following:

    *** DFU device connected: Atmel Corp. ATmega32U4 (03EB:2FF4:0000)
    +    
    Skip to content

    Flashing Your Keyboard

    Now that you've built a custom firmware file you'll want to flash your keyboard.

    Put Your Keyboard into DFU (Bootloader) Mode

    In order to flash your custom firmware you must first put your keyboard into a special flashing mode. While it is in this mode you will not be able to type or otherwise use your keyboard. It is very important that you do not unplug the keyboard or otherwise interrupt the flashing process while the firmware is being written.

    Different keyboards have different ways to enter this special mode. If your PCB currently runs QMK, TMK, or PS2AVRGB (Bootmapper Client) and you have not been given specific instructions, try the following, in order:

    • Hold down both shift keys and press Pause
    • Hold down both shift keys and press B
    • Unplug your keyboard, hold down the Spacebar and B at the same time, plug in your keyboard and wait a second before releasing the keys
    • Unplug your keyboard, hold down the top or bottom left key (usually Escape or Left Control) and plug in your keyboard
    • Press the physical RESET button, usually located on the underside of the PCB
    • Locate header pins on the PCB labeled RESET and GND, and short them together while plugging your PCB in

    If you've attempted all of the above to no avail, and the main chip on the board says STM32 or RP2-B1 on it, this may be a bit more complicated. Generally your best bet is to ask on Discord for assistance. It's likely some photos of the board will be asked for -- if you can get them ready beforehand it'll help move things along!

    Otherwise, you should see a message in yellow, similar to this in QMK Toolbox:

    *** DFU device connected: Atmel Corp. ATmega32U4 (03EB:2FF4:0000)

    and this bootloader device will also be present in Device Manager, System Information.app, or lsusb.

    Flashing Your Keyboard with QMK Toolbox

    The simplest way to flash your keyboard will be with the QMK Toolbox.

    However, the Toolbox is currently only available for Windows and macOS. If you're using Linux (or just wish to flash the firmware from the command line), skip to the Flash your Keyboard from the Command Line section.

    TIP

    QMK Toolbox is not necessary for flashing RP2040 devices.

    Load the File into QMK Toolbox

    Begin by opening the QMK Toolbox application. You'll want to locate the firmware file in Finder or Explorer. Your keyboard firmware may be in one of two formats- .hex or .bin. QMK tries to copy the appropriate one for your keyboard into the root qmk_firmware directory.

    If you are on Windows or macOS, there are commands you can use to easily open the current folder in Explorer or Finder.

    start .

    The firmware file always follows this naming format:

    <keyboard_name>_<keymap_name>.{bin,hex}

    For example, the planck/rev5 with a default keymap will have this filename:

    planck_rev5_default.hex

    Once you have located your firmware file, drag it into the "Local file" box in QMK Toolbox, or click "Open" and navigate to where your firmware file is stored.

    Flash Your Keyboard

    Click the Flash button in QMK Toolbox. You will see output similar to the following:

    *** DFU device connected: Atmel Corp. ATmega32U4 (03EB:2FF4:0000)
     *** Attempting to flash, please don't remove device
     >>> dfu-programmer.exe atmega32u4 erase --force
         Erasing flash...  Success
    @@ -33,7 +33,7 @@
     >>> dfu-programmer.exe atmega32u4 reset
         
     *** DFU device disconnected: Atmel Corp: ATmega32U4 (03EB:2FF4:0000)

    Flash your Keyboard from the Command Line

    This has been made pretty simple compared to what it used to be. When you are ready to compile and flash your firmware, open up your terminal window and run the flash command:

    sh
    qmk flash

    If you did not configure your keyboard/keymap name in the CLI according to the Configure your build environment section, or you have multiple keyboards, you can specify the keyboard and keymap:

    sh
    qmk flash -kb <my_keyboard> -km <my_keymap>

    This will check the keyboard's configuration, and then attempt to flash it based on the specified bootloader. This means that you don't need to know which bootloader that your keyboard uses. Just run the command, and let the command do the heavy lifting.

    However, this does rely on the bootloader being set by the keyboard. If this information is not configured, or you're using a board that doesn't have a supported target to flash it, you will see this error:

    WARNING: This board's bootloader is not specified or is not supported by the ":flash" target at this time.

    In this case, you'll have to fall back on specifying the bootloader. See the Flashing Firmware Guide for more details.

    WARNING

    If your bootloader is not detected by qmk flash, try running qmk doctor for suggestions on how to fix common problems.

    Test It Out!

    Congrats! Your custom firmware has been programmed to your keyboard and you're ready to test it out!

    With a little bit of luck everything will work perfectly, but if not there are steps that will help you figure out what's wrong. Testing your keyboard is usually pretty straightforward. Press every single key and make sure it sends the keys you expect. You can use QMK Configurator's test mode to check your keyboard, even if it doesn't run QMK.

    Still not working? Browse the FAQ topics for more information, or chat with us on Discord.

    - + \ No newline at end of file diff --git a/newbs_getting_started.html b/newbs_getting_started.html index 8cd54482c51..04880e90362 100644 --- a/newbs_getting_started.html +++ b/newbs_getting_started.html @@ -8,21 +8,21 @@ - + - - - + + + -
    Skip to content

    Setting Up Your QMK Environment

    Before you can build keymaps, you need to install some software and set up your build environment. This only has to be done once no matter how many keyboards you plan to compile firmware for.

    1. Prerequisites

    There are a few pieces of software you'll need to get started.

    • Text editor
      • You’ll need a program that can edit and save plain text files. The default editor that comes with many OS's does not save plain text files, so you'll need to make sure that whatever editor you chose does.
    • Toolbox (optional)
      • A graphical program for Windows and macOS that allows you to both program and debug your custom keyboard

    TIP

    If you haven't worked with the Linux/Unix command line before, there are a few basic concepts and commands you should learn. These resources will teach you enough to be able to work with QMK.

    2. Prepare Your Build Environment

    We've tried to make QMK as easy to set up as possible. You only have to prepare your Linux or Unix environment, then let QMK install the rest.

    QMK maintains a Bundle of MSYS2, the CLI and all necessary dependencies. It also provides a handy QMK MSYS terminal shortcut to boot you directly into the correct environment.

    Prerequisites

    You will need to install QMK MSYS. The latest release is available here.

    Advanced Users

    DANGER

    This process is not recommended for new users.

    If you'd like to manually install MSYS2, the following sections will walk you through the process.

    Prerequisites

    You will need to install MSYS2. Once installed, close any open MSYS terminals (purple icon) and open a new MinGW 64-bit terminal (blue icon) from the Start Menu.

    WARNING

    NOTE: The MinGW 64-bit terminal is not the same as the MSYS terminal that opens when installation is completed. Your prompt should say "MINGW64" in purple text, rather than "MSYS". See this page for more information on the differences.

    Installation

    Install the QMK CLI by running:

    sh
    pacman --needed --noconfirm --disable-download-timeout -S git mingw-w64-x86_64-python-qmk

    3. Run QMK Setup

    Open QMK MSYS and run the following command:

    sh
    qmk setup

    In most situations you will want to answer y to all of the prompts.

    TIP

    The qmk home folder can be specified at setup with qmk setup -H <path>, and modified afterwards using the cli configuration and the variable user.qmk_home. For all available options run qmk setup --help.

    TIP

    If you already know how to use GitHub, we recommend that you follow these instructions and use qmk setup <github_username>/qmk_firmware to clone your personal fork. If you don't know what that means you can safely ignore this message.

    4. Test Your Build Environment

    Now that your QMK build environment is set up, you can build a firmware for your keyboard. Start by trying to build the keyboard's default keymap. You should be able to do that with a command in this format:

    sh
    qmk compile -kb <keyboard> -km default

    For example, to build a firmware for a Clueboard 66% you would use:

    sh
    qmk compile -kb clueboard/66/rev3 -km default

    TIP

    The keyboard option is the path relative to the keyboard directory, the above example would be found in qmk_firmware/keyboards/clueboard/66/rev3. If you're unsure you can view a full list of supported keyboards with qmk list-keyboards.

    When it is done you should have a lot of output that ends similar to this:

    Linking: .build/clueboard_66_rev3_default.elf                                                       [OK]
    +    
    Skip to content

    Setting Up Your QMK Environment

    Before you can build keymaps, you need to install some software and set up your build environment. This only has to be done once no matter how many keyboards you plan to compile firmware for.

    1. Prerequisites

    There are a few pieces of software you'll need to get started.

    • Text editor
      • You’ll need a program that can edit and save plain text files. The default editor that comes with many OS's does not save plain text files, so you'll need to make sure that whatever editor you chose does.
    • Toolbox (optional)
      • A graphical program for Windows and macOS that allows you to both program and debug your custom keyboard

    TIP

    If you haven't worked with the Linux/Unix command line before, there are a few basic concepts and commands you should learn. These resources will teach you enough to be able to work with QMK.

    2. Prepare Your Build Environment

    We've tried to make QMK as easy to set up as possible. You only have to prepare your Linux or Unix environment, then let QMK install the rest.

    QMK maintains a Bundle of MSYS2, the CLI and all necessary dependencies. It also provides a handy QMK MSYS terminal shortcut to boot you directly into the correct environment.

    Prerequisites

    You will need to install QMK MSYS. The latest release is available here.

    Advanced Users

    DANGER

    This process is not recommended for new users.

    If you'd like to manually install MSYS2, the following sections will walk you through the process.

    Prerequisites

    You will need to install MSYS2. Once installed, close any open MSYS terminals (purple icon) and open a new MinGW 64-bit terminal (blue icon) from the Start Menu.

    WARNING

    NOTE: The MinGW 64-bit terminal is not the same as the MSYS terminal that opens when installation is completed. Your prompt should say "MINGW64" in purple text, rather than "MSYS". See this page for more information on the differences.

    Installation

    Install the QMK CLI by running:

    sh
    pacman --needed --noconfirm --disable-download-timeout -S git mingw-w64-x86_64-python-qmk

    3. Run QMK Setup

    Open QMK MSYS and run the following command:

    sh
    qmk setup

    In most situations you will want to answer y to all of the prompts.

    TIP

    The qmk home folder can be specified at setup with qmk setup -H <path>, and modified afterwards using the cli configuration and the variable user.qmk_home. For all available options run qmk setup --help.

    TIP

    If you already know how to use GitHub, we recommend that you follow these instructions and use qmk setup <github_username>/qmk_firmware to clone your personal fork. If you don't know what that means you can safely ignore this message.

    4. Test Your Build Environment

    Now that your QMK build environment is set up, you can build a firmware for your keyboard. Start by trying to build the keyboard's default keymap. You should be able to do that with a command in this format:

    sh
    qmk compile -kb <keyboard> -km default

    For example, to build a firmware for a Clueboard 66% you would use:

    sh
    qmk compile -kb clueboard/66/rev3 -km default

    TIP

    The keyboard option is the path relative to the keyboard directory, the above example would be found in qmk_firmware/keyboards/clueboard/66/rev3. If you're unsure you can view a full list of supported keyboards with qmk list-keyboards.

    When it is done you should have a lot of output that ends similar to this:

    Linking: .build/clueboard_66_rev3_default.elf                                                       [OK]
     Creating load file for flashing: .build/clueboard_66_rev3_default.hex                               [OK]
     Copying clueboard_66_rev3_default.hex to qmk_firmware folder                                        [OK]
     Checking file size of clueboard_66_rev3_default.hex                                                 [OK]
      * The firmware size is fine - 26356/28672 (2316 bytes free)

    Creating Your Keymap

    You are now ready to create your own personal keymap! Move on to Building Your First Firmware for that.

    - + \ No newline at end of file diff --git a/newbs_git_best_practices.html b/newbs_git_best_practices.html index b446f0e3b67..e3d75f6f7f5 100644 --- a/newbs_git_best_practices.html +++ b/newbs_git_best_practices.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Best Git Practices for Working with QMK

    Or, "How I Learned to Stop Worrying and Love Git."

    This section aims to instruct novices in the best ways to have a smooth experience in contributing to QMK. We will walk through the process of contributing to QMK, detailing some ways to make this task easier, and then later we'll break some things in order to teach you how to fix them.

    This section assumes a few things:

    1. You have a GitHub account, and have forked the qmk_firmware repository to your account.
    2. You've set up both your build environment and QMK.

    - + \ No newline at end of file diff --git a/newbs_git_resolving_merge_conflicts.html b/newbs_git_resolving_merge_conflicts.html index 5142289c738..9f30baed643 100644 --- a/newbs_git_resolving_merge_conflicts.html +++ b/newbs_git_resolving_merge_conflicts.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -40,7 +40,7 @@ <p>Need help? Email support@webhost.us.</p> >>>>>>> Commit #1

    The line <<<<<<< HEAD marks the beginning of a merge conflict, and the >>>>>>> Commit #1 line marks the end, with the conflicting sections separated by =======. The part on the HEAD side is from the QMK master version of the file, and the part marked with the commit message is from the current branch and commit.

    Because Git tracks changes to files rather than the contents of the files directly, if Git can't find the text that was in the file previous to the commit that was made, it won't know how to edit the file. Re-editing the file will solve the conflict. Make your changes, and then save the file.

    <p>Need help? Email support@webhost.us.</p>

    Now run:

    git add conflicting_file_1.txt
     git rebase --continue

    Git logs the changes to the conflicting file, and continues applying the commits from our branch until it reaches the end.

    - + \ No newline at end of file diff --git a/newbs_git_resynchronize_a_branch.html b/newbs_git_resynchronize_a_branch.html index 78d6280a1ad..4c101fe0fc7 100644 --- a/newbs_git_resynchronize_a_branch.html +++ b/newbs_git_resynchronize_a_branch.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -26,7 +26,7 @@ $ git remote -v origin https://github.com/qmk/qmk_firmware.git (fetch) origin https://github.com/qmk/qmk_firmware.git (push)

    add a new remote with:

    git remote add upstream https://github.com/qmk/qmk_firmware.git

    Then, redirect the origin remote to your own fork with:

    git remote set-url origin https://github.com/<your_username>/qmk_firmware.git

    Now that you have both remotes configured, you need to update the references for the upstream repository, which is QMK's, by running:

    git fetch --recurse-submodules upstream

    At this point, resynchronize your branch to QMK's by running:

    git reset --recurse-submodules --hard upstream/master

    These steps will update the repository on your computer, but your GitHub fork will still be out of sync. To resynchronize your fork on GitHub, you need to push to your fork, instructing Git to override any remote changes that are not reflected in your local repository. To do this, run:

    git push --recurse-submodules=on-demand --force-with-lease

    WARNING

    DO NOT run git push --recurse-submodules=on-demand --force-with-lease on a fork to which other users post commits. This will erase their commits.

    Now your GitHub fork, your local files, and QMK's repository are all the same. From here you can make further needed changes (use a branch!) and post them as normal.

    - + \ No newline at end of file diff --git a/newbs_git_using_your_master_branch.html b/newbs_git_using_your_master_branch.html index d51d04d6f3c..fdb74de0758 100644 --- a/newbs_git_using_your_master_branch.html +++ b/newbs_git_using_your_master_branch.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -27,7 +27,7 @@ git push origin master

    This switches you to your master branch, retrieves the refs from the QMK repo, downloads the current QMK master branch to your computer, and then uploads it to your fork.

    Making Changes

    To make changes, create a new branch by entering:

    git checkout -b dev_branch
     git push --set-upstream origin dev_branch

    This creates a new branch named dev_branch, checks it out, and then saves the new branch to your fork. The --set-upstream argument tells git to use your fork and the dev_branch branch every time you use git push or git pull from this branch. It only needs to be used on the first push; after that, you can safely use git push or git pull, without the rest of the arguments.

    TIP

    With git push, you can use -u in place of --set-upstream-u is an alias for --set-upstream.

    You can name your branch nearly anything you want, though it is recommended to name it something related to the changes you are going to make.

    By default git checkout -b will base your new branch on the branch that is currently checked out. You can base your new branch on an existing branch that is not checked out by adding the name of the existing branch to the command:

    git checkout -b dev_branch master

    Now that you have a development branch, open your text editor and make whatever changes you need to make. It is recommended to make many small commits to your branch; that way, any change that causes issues can be more easily traced and undone if needed. To make your changes, edit and save any files that need to be updated, add them to Git's staging area, and then commit them to your branch:

    git add path/to/updated_file
     git commit -m "My commit message."

    git add adds files that have been changed to Git's staging area, which is Git's "loading zone." This contains the changes that are going to be committed by git commit, which saves the changes to the repo. Use descriptive commit messages so you can know what was changed at a glance.

    TIP

    If you've changed multiple files, you can use git add -- path/to/file1 path/to/file2 ... to add all your desired files.

    Publishing Your Changes

    The last step is to push your changes to your fork. To do this, enter git push. Git will then publish the current state of dev_branch to your fork.

    - + \ No newline at end of file diff --git a/newbs_learn_more_resources.html b/newbs_learn_more_resources.html index e4d33b22fc5..0bce97552b9 100644 --- a/newbs_learn_more_resources.html +++ b/newbs_learn_more_resources.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Learning Resources

    These resources are aimed at giving new members in the QMK community more understanding to the information provided in the Newbs docs.

    QMK resources

    Command Line resources

    Text Editor resources

    Not sure which text editor to use?

    Editors specifically made for code:

    Git resources

    - + \ No newline at end of file diff --git a/newbs_testing_debugging.html b/newbs_testing_debugging.html index a182cafcc17..7140a15c299 100644 --- a/newbs_testing_debugging.html +++ b/newbs_testing_debugging.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Testing and Debugging

    Testing

    Moved here

    Debugging

    Moved here

    - + \ No newline at end of file diff --git a/one_shot_keys.html b/one_shot_keys.html index 65ca0026e89..65fe9ceda7b 100644 --- a/one_shot_keys.html +++ b/one_shot_keys.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -60,7 +60,7 @@ }

    If any one shot layer is switched off, layer will be zero. When you're looking to do something on any layer change instead of one shot layer changes, layer_state_set_user is a better callback to use.

    If you are making your own keyboard, there are also _kb equivalent functions:

    c
    void oneshot_locked_mods_changed_kb(uint8_t mods);
     void oneshot_mods_changed_kb(uint8_t mods);
     void oneshot_layer_changed_kb(uint8_t layer);

    As with any callback, be sure to call the _user variant to allow for further customizability.

    - + \ No newline at end of file diff --git a/other_eclipse.html b/other_eclipse.html index 2e8ebdec47c..ea0ca480455 100644 --- a/other_eclipse.html +++ b/other_eclipse.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Setting up Eclipse for QMK Development

    Eclipse is an open-source Integrated Development Environment (IDE) widely used for Java development, but with an extensible plugin system that allows to customize it for other languages and usages.

    Using an IDE such as Eclipse provides many advantages over a plain text editor, such as:

    • intelligent code completion
    • convenient navigation in the code
    • refactoring tools
    • build automation (no need for the command-line)
    • a GUI for GIT
    • static code analysis
    • many other tools such as debugging, code formatting, showing call hierarchies etc.

    The purpose of this page is to document how to set-up Eclipse for developing AVR software, and working on the QMK code base.

    Note that this set-up has been tested on Ubuntu 16.04 only for the moment.

    Prerequisites

    Build Environment

    Before starting, you must have followed the Getting Started section of the Tutorial. In particular, you must have been able to build the firmware with the qmk compile command.

    Java

    Eclipse is a Java application, so you will need to install Java 8 or more recent to be able to run it. You may choose between the JRE or the JDK, the latter being useful if you intend to do Java development.

    Install Eclipse and Its Plugins

    Eclipse comes in several flavours depending on the target usage that you will have. There is no package comprising the AVR stack, so we will need to start from Eclipse CDT (C/C++ Development Tooling) and install the necessary plugins.

    Download and Install Eclipse CDT

    If you already have Eclipse CDT on your system, you can skip this step. However it is advised to keep it up-to-date for better support.

    If you have another Eclipse package installed, it is normally possible to install the CDT plugin over it. However it is probably better to reinstall it from scratch to keep it light and avoid the clutter of tools that you don't need for the projects you will be working on.

    Installation is very simple: follow the 5 Steps to Install Eclipse, and choose Eclipse IDE for C/C++ Developers at Step 3.

    Alternatively, you can also directly download Eclipse IDE for C/C++ Developers (direct link to current version) and extract the package to the location of your choice (this creates an eclipse folder).

    First Launch

    When installation is complete, click the Launch button. (If you extracted the package manually, open the Eclipse installation folder and double-click the eclipse executable)

    When you are prompted with the Workspace Selector, select a directory that will hold Eclipse metadata and usually your projects. Do not select the qmk_firmware directory, this will be the project directory. Select the parent folder instead, or another (preferably empty) folder of your choice (the default is fine if you do not use it yet).

    Once started, click the Workbench button at the top right to switch to the workbench view (there is a also checkbox at the bottom to skip the welcome screen at startup).

    Install the Necessary Plugins

    Note: you do not need to restart Eclipse after installing each plugin. Simply restart once all plugins are installed.

    The AVR Plugin

    This is the most important plugin as it will allow Eclipse to understand AVR C code. Follow the instructions for using the update site, and agree with the security warning for unsigned content.

    ANSI Escape in Console

    This plugin is necessary to properly display the colored build output generated by the QMK makefile.

    1. Open Help > Eclipse Marketplace…
    2. Search for ANSI Escape in Console
    3. Click the Install button of the plugin
    4. Follow the instructions and agree again with the security warning for unsigned content.

    Once both plugins are installed, restart Eclipse as prompted.

    Configure Eclipse for QMK

    Importing the Project

    1. Click File > New > Makefile Project with Existing Code
    2. On the next screen:
    • Select the directory where you cloned the repository as Existing Code Location;
    • (Optional) Give a different name to the project¹, e.g. QMK or Quantum;
    • Select the AVR-GCC Toolchain;
    • Keep the rest as-is and click Finish

    Importing QMK in Eclipse

    1. The project will now be loaded and indexed. Its files can be browsed easily through the Project Explorer on the left.

    ¹ There might be issues for importing the project with a custom name. If it does not work properly, try leaving the default project name (i.e. the name of the directory, probably qmk_firmware).

    Build Your Keyboard

    We will now change the default make target of the project from all to the specific keyboard and keymap combination we are working on, e.g. kinesis/kint36:stapelberg. This way, project-wide actions like cleaning and building the project will complete quickly, instead of taking a long time or outright locking up Eclipse.

    1. Focus an editor tab within the project
    2. Open the Project > Properties window, then select the C/C++ Build list entry and switch to the Behavior tab.
    3. Change the default Make build target text fields for all enabled builds from all to e.g. kinesis/kint41:stapelberg.
    4. Verify your setup works by selecting Project > Clean....
    - + \ No newline at end of file diff --git a/other_vscode.html b/other_vscode.html index 029ac72c98d..971a6e2080f 100644 --- a/other_vscode.html +++ b/other_vscode.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -56,7 +56,7 @@ LTO_ENABLE = no OPT = g DEBUG = 3

    At this point, you should build and flash your firmware through normal methods (qmk compile ... and qmk flash ...).

    Once completed, you can:

    VS Code's debugger will then start executing the compiled firmware on the MCU.

    At this stage, you should have full debugging set up, with breakpoints and variable listings working!

    - + \ No newline at end of file diff --git a/platformdev_blackpill_f4x1.html b/platformdev_blackpill_f4x1.html index b0818d9679f..634920c7911 100644 --- a/platformdev_blackpill_f4x1.html +++ b/platformdev_blackpill_f4x1.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    WeAct Blackpill (STM32F4x1)

    This document applies to the F401- and F411-based Blackpills.

    The WeAct Blackpill is a popular choice for handwired boards, as it offers a powerful micro controller, USB Type C, a good number of pins to use, and a large amount of firmware space. All for a ~$6 USD price tag.

    Blackpill F411

    Pin Usage Limitations

    While the Blackpill is a great choice to use in your keyboard, there are a number of caveats in regards to using them. The first is that a number of exposed pins cannot be used, or have special considerations/hardware tweaks that are required for proper operation.

    Unusable pins

    • Pins A11 and A12 are not usable because they're used for USB connection, and cannot be shared.
      • In theory, these pins can be used. However, doing so may disable USB connectivity, outright, if used for anything other than a USB port
    • Pin B2 is used by BOOT1 and cannot be used, without causing problems.
    • VBAT is not a usable pin.
    • NRST is not a usable pin.

    Pins to be avoided

    • Pin A9 is meant for VBUS Sense and should not be used, if it can be avoided. It has an internal pull-down resistor, which may cause issues with usage. However, a pull-up resistor can work (~5.1k), but should be avoided.
    • Pin A10 can be used, but should be avoided. Any connection on this pin can prevent the bootloader from entering the proper mode for DFU flashing. A pull-up resistor (~22k) on this pin fixes the bootloader issue.

    Shared Usage

    • Pin A0 is shared with the User Key (button) on the controller. It can be used.
    • Pin C13 is shared with the onboard LED indicator, and is connected to +3.3V. This can be used, but may cause the LED to blink intermittently, depending on activity on the pin.
    • Pins A4, A5, A6 and A7 are used by the SOI8 footprint on the back of the controller, that can be used for either an SPI Flash chip, or an SPI EEPROM chip. A4 is the Chip Select pin, and cannot be shared. However, A5, A6, and A7 are the SCK, MISO, and MOSI pins, respectively, and can be shared with other SPI devices.

    Limited Usage

    • Pins C13, C14, and C15 have limits on output current. They should be used only as input, e.g., they should not be used for row pins in COL2ROW matrix configurations, but can be used as column pins.

      • This is because the column pins (in COL2ROW) are pulled up (the pull-up strength is independent of the current sourcing limitation) and the ROW is driven low and sinks current, then we check the state of the COLs to look for keypresses.
    • Pins A0 and B5 are not 5V tolerant, and should only be used with 3.3V compatible functionality.

    Additional Information

    Bootloader issues

    Due to the use of a 25MHz crystal, the controller may have issues entering the bootloader. Heating up the controller can help with this issue.

    Also, if pin A10 is connected to anything at all, it needs to have a pull-up resistor (see Pins to be avoided, above)

    Tiny UF2 Support

    There is tinyuf2 support for the WeAct Blackpill. Instructions on how to compile the bootloader can be found here. Setting BOOTLOADER = tinyuf2 will enable support for this user bootloader, and the correct configuration to prevent it from being overwritten when flashing firmware.

    - + \ No newline at end of file diff --git a/platformdev_chibios_earlyinit.html b/platformdev_chibios_earlyinit.html index eebe05cdc03..8cd81bb57d7 100644 --- a/platformdev_chibios_earlyinit.html +++ b/platformdev_chibios_earlyinit.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -24,7 +24,7 @@ }

    board_init()

    The function board_init is executed directly after the ChibiOS initialization routines have completed. At this stage, all normal low-level functionality should be available for use (including timers and delays), with the restriction that USB is not yet connected. This is intended as a replacement for the ChibiOS board definition's boardInit function.

    The default implementation of this function is to do nothing.

    To implement your own version of this function, in your keyboard's source files:

    c
    void board_init(void) {
         // initialize anything that requires ChibiOS
     }
    - + \ No newline at end of file diff --git a/platformdev_proton_c.html b/platformdev_proton_c.html index 2fdf1e923ee..8dd104fbdc7 100644 --- a/platformdev_proton_c.html +++ b/platformdev_proton_c.html @@ -8,18 +8,18 @@ - + - - - + + +
    Skip to content

    Proton C

    The Proton C is an Arm STM32F303xC based drop-in replacement for the Pro Micro.

    Proton C

    Features

    • Through-hole mounted USB-C Port
    • 32-bit 72MHz Cortex-M4 processor (STM32F303CCT6)
    • I2C, SPI, PWM, DMA, DAC, USART, I2S
    • 23x 3.3V I/O Ports
    • 1x 5V output for WS2812 LED chains
    • 256kB flash
    • 40kB RAM
    • AST1109MLTRQ speaker footprint
    • Reset button

    Warnings

    Some of the PCBs compatible with Pro Micro have VCC (3.3V) and RAW (5V) pins connected (shorted) on the pcb. Using the Proton C will short 5V power from USB and regulated 3.3V which is connected directly to the MCU. Shorting those pins may damage the MCU on the Proton C.

    So far, it appears that this is only an issue on the Gherkin PCBs, but other PCBs may be affected in this way.

    In this case, you may want to not hook up the RAW pin at all.

    Manual Conversion

    To use the Proton C natively, without having to specify CONVERT_TO=proton_c, you need to change the MCU line in rules.mk:

    MCU = STM32F303
     BOARD = QMK_PROTON_C

    Remove these variables if they exist:

    • BOOTLOADER
    • EXTRA_FLAGS

    Finally convert all pin assignments in config.h to the stm32 equivalents.

    Pro Micro LeftProton C LeftProton C RightPro Micro Right
    D3A95vRAW (5v)
    D2A10GNDGND
    GNDGNDFLASHRESET
    GNDGND3.3vVCC 1
    D1B7A2F4
    D0B6A1F5
    D4B5A0F6
    C6B4B8F7
    D7B3B13B1
    E6B2B14B3
    B4B1B15B2
    B5B0B9B6
    B0 (RX LED)C13 2C13 2D5 (TX LED)

    You can also make use of several new pins on the extended portion of the Proton C:

    LeftRight
    A43B10
    A54B11
    A6B12
    A7A145 (SWCLK)
    A8A135 (SWDIO)
    A15RESET6

    Notes:

    1. On a Pro Micro VCC can be 3.3v or 5v.
    2. A Proton C only has one onboard LED, not two like a Pro Micro. The Pro Micro has an RX LED on D5 and a TX LED on B0.
    3. A4 is shared with the speaker.
    4. A5 is shared with the speaker.
    5. A13 and A14 are used for hardware debugging (SWD). You can also use them for GPIO, but should use them last.
    6. Short RESET to 3.3v (pull high) to reboot the MCU. This does not enter bootloader mode like a Pro Micro, it only resets the MCU.
    - + \ No newline at end of file diff --git a/platformdev_rp2040.html b/platformdev_rp2040.html index e52ef1ddd38..7a68b256737 100644 --- a/platformdev_rp2040.html +++ b/platformdev_rp2040.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -20,7 +20,7 @@
    Skip to content

    Raspberry Pi RP2040

    The following table shows the current driver status for peripherals on RP2040 MCUs:

    SystemSupport
    ADC driver✔️
    Audio✔️
    Backlight✔️
    I2C driver✔️
    SPI driver✔️
    WS2812 driver✔️ using PIO driver
    External EEPROMs✔️ using I2C or SPI driver
    EEPROM emulation✔️
    serial driver✔️ using SIO or PIO driver
    UART driver✔️ using SIO driver

    GPIO

    Raspberry Pi Pico pinoutSparkfun RP2040 Pro Micro pinout

    WARNING

    The GPIO pins of the RP2040 are not 5V tolerant!

    Pin nomenclature

    To address individual pins on the RP2040, QMK uses the GPx abbreviation -- where the x stands for the GPIO number of the pin. This number can likely be found on the official pinout diagram of your board. Note that these GPIO numbers match the RP2040 MCU datasheet, and don't necessarily match the number you see printed on the board. For instance the Raspberry Pi Pico uses numbers from 1 to 40 for their pins, but these are not identical to the RP2040's GPIO numbers. So if you want to use the pin 11 of the Pico for your keyboard, you would refer to it as GP8 in the config files.

    Alternate functions

    The RP2040 features flexible GPIO function multiplexing, this means that every pin can be connected to nearly all the internal peripherals like I2C, SPI, UART or PWM. This allows for flexible PCB designs that are much less restricted in the selection of GPIO pins. To find out which pin can use which peripheral refer to the official Raspberry PI RP2040 datasheet section 1.4.3 GPIO functions.

    Selecting hardware peripherals and drivers

    QMK RP2040 support builds upon ChibiOS and thus follows their convention for activating drivers and associated hardware peripherals. These tables only give a quick overview which values have to be used, please refer to the ChibiOS specific sections on the driver pages.

    I2C Driver

    RP2040 Peripheralmcuconf.h valuesI2C_DRIVER
    I2C0RP_I2C_USE_I2C0I2CD0
    I2C1RP_I2C_USE_I2C1I2CD1

    To configure the I2C driver please read the ChibiOS/ARM section.

    SPI Driver

    RP2040 Peripheralmcuconf.h valuesSPI_DRIVER
    SPI0RP_SPI_USE_SPI0SPID0
    SPI1RP_SPI_USE_SPI1SPID1

    To configure the SPI driver please read the ChibiOS/ARM section.

    UART Driver

    RP2040 Peripheralmcuconf.h valuesUART_DRIVER
    UART0RP_SIO_USE_UART0SIOD0
    UART1RP_SIO_USE_UART1SIOD1

    Double-tap reset boot-loader entry

    The double-tap reset mechanism is an alternate way in QMK to enter the embedded mass storage UF2 boot-loader of the RP2040. It enables bootloader entry by a fast double-tap of the reset pin on start up, which is similar to the behavior of AVR Pro Micros. This feature activated by default for the Pro Micro RP2040 board, but has to be configured for other boards. To activate it, add the following options to your keyboards config.h file:

    c
    #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET // Activates the double-tap behavior
     #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U // Timeout window in ms in which the double tap can occur.
     #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17 // Specify a optional status led by GPIO number which blinks when entering the bootloader

    Pre-defined RP2040 boards

    QMK defines two boards that you can choose from to base your RP2040 powered keyboard upon. These boards provide pre-configured default pins and drivers.

    Generic Pro Micro RP2040

    This is the default board that is chosen, unless any other RP2040 board is selected in your keyboards rules.mk file. It assumes a pin layout for the I2C, SPI and Serial drivers which is identical to the Sparkfun Pro Micro RP2040, however all values can be overwritten by defining them in your keyboards config.h file. The double-tap reset to enter boot-loader behavior is activated by default.

    Driver configuration defineValue
    I2C driver
    I2C_DRIVERI2CD1
    I2C1_SDA_PINGP2
    I2C1_SCL_PINGP3
    SPI driver
    SPI_DRIVERSPID0
    SPI_SCK_PINGP18
    SPI_MISO_PINGP20
    SPI_MOSI_PINGP19
    Serial driver
    SERIAL_USART_DRIVER (SIO Driver only)SIOD0
    SOFT_SERIAL_PINundefined, use SERIAL_USART_TX_PIN
    SERIAL_USART_TX_PINGP0
    SERIAL_USART_RX_PINGP1
    UART driver
    UART_DRIVERSIOD0
    UART_TX_PINGP0
    UART_RX_PINGP1

    TIP

    The pin-outs of Adafruit's KB2040 and Boardsource's Blok both deviate from the Sparkfun Pro Micro RP2040. Lookup the pin-out of these boards and adjust your keyboards pin definition accordingly if you want to use these boards.

    Generic RP2040 board

    This board can be chosen as a base for RP2040 keyboards which configure all necessary pins and drivers themselves and do not wish to leverage the configuration matching the Generic Pro Micro RP2040 board. Thus it doesn't provide any pre-configured pins or drivers. To select this board add the following line to your keyboards rules.mk file.

    make
    BOARD = GENERIC_RP_RP2040

    Split keyboard support

    Split keyboards are fully supported using the serial driver in both full-duplex and half-duplex configurations. Two driver subsystems are supported by the RP2040, the hardware UART based SIO and the Programmable IO based PIO driver.

    FeatureSIO DriverPIO Driver
    Half-Duplex operation✔️
    Full-Duplex operation✔️✔️
    TX and RX pin swapping✔️
    Any GPIO as TX and RX pinOnly UART capable pins✔️
    Simple configuration✔️

    The PIO driver is much more flexible then the SIO driver, the only "downside" is the usage of PIO resources which in turn are not available for advanced user programs. Under normal circumstances, this resource allocation will be a non-issue.

    RP2040 second stage bootloader selection

    As the RP2040 does not have any internal flash memory it depends on an external SPI flash memory chip to store and execute instructions from. To successfully interact with a wide variety of these chips a second stage bootloader that is compatible with the chosen external flash memory has to be supplied with each firmware image. By default an W25Q080 compatible bootloader is assumed, but others can be chosen by adding one of the defines listed in the table below to your keyboards config.h file.

    Compatible with flash chipSelection
    W25Q080Selected by default
    AT25SF128A#define RP2040_FLASH_AT25SF128A
    GD25Q64CS#define RP2040_FLASH_GD25Q64CS
    W25X10CL#define RP2040_FLASH_W25X10CL
    IS25LP080#define RP2040_FLASH_IS25LP080
    Generic 03H flash#define RP2040_FLASH_GENERIC_03H

    RP2040 Community Edition

    The "RP2040 Community Edition" standard is a pinout that was defined by a committee of designers on the BastardKB Discord server.

    These boards are designed to be a drop-in replacement for keyboards wanting an upgrade from ATmega32u4 based pro micros (eg. Elite-C).

    Pinout Compatible Controllers
    0xB2 Splinky
    Elite-Pi
    Sea-Picro EXT
    0xCB Helios
    Frood
    Liatris
    - + \ No newline at end of file diff --git a/platformdev_selecting_arm_mcu.html b/platformdev_selecting_arm_mcu.html index ca0b5180662..c2516be445c 100644 --- a/platformdev_selecting_arm_mcu.html +++ b/platformdev_selecting_arm_mcu.html @@ -8,18 +8,18 @@ - + - - - + + +
    Skip to content

    Choosing an Arm MCU

    This page outlines the selection criteria to ensure compatibility with Arm/ChibiOS.

    QMK uses the Hardware Abstraction Layer of ChibiOS in order to run on Arm devices. ChibiOS in general is best supported on STM32 devices, both in the perspective of base MCU support, as well as on-MCU peripheral support. As an extension to the core ChibiOS MCU support, QMK also utilises ChibiOS-Contrib (which includes the Kinetis MCU support layer, as an example), but it does not provide as great a level of peripheral support or general testing for supported devices.

    Adding support for new MCU families must go through ChibiOS or ChibiOS-Contrib -- QMK does not have the bandwidth, resources, nor the inclination to maintain long-term MCU support for your board of choice.

    To be clear: this also includes commercial boards -- unless agreed upon by all parties, QMK will not take over maintenance of a bespoke MCU support package. Even if MCU support is upstreamed into ChibiOS/ChibiOS-Contrib, QMK reserves the right to deprecate and/or remove keyboards utilising support packages that aren't kept up to date with upstream ChibiOS itself.

    Selecting an already-supported MCU

    STM32 families

    As outlined earlier, STM32 is the preferred option to ensure greatest compatibility with the subsystems already implemented in QMK. Not all subsystems are compatible yet, but for the most widely-used support is already present.

    The simplest solution to determine if an STM32 MCU is compatible is to navigate to the list of supported STM32 ports in QMK's ChibiOS fork. Inside this directory, each of the supported STM32 families will be listed, and inside each family a file called stm32_registry.h will be present. Scanning through these files will show #defines such as the following, which can be used to determine if ChibiOS supports a particular MCU:

    c
    #if defined(STM32F303xC) || defined(__DOXYGEN__)

    The example shows that STM32F303xC devices are supported by ChibiOS.

    The next step is to ensure that USB is supported on those devices by ChibiOS -- you can confirm this by checking inside the same section guarded by the #define above, specifically for the following to be TRUE:

    c
    #define STM32_HAS_USB                       TRUE

    or one of the following being TRUE:

    c
    #define STM32_HAS_OTG1                      TRUE
     #define STM32_HAS_OTG2                      TRUE

    For the most part, this is the bare minimum to be able to have a high confidence that QMK will be able to run on your MCU. After that, it's all up to configuration.

    Non-STM32 families

    ChibiOS does have support for a handful of non-STM32 devices, and the list can be found in QMK's ChibiOS fork and ChibiOS-Contrib fork. Non-STM32 support is likely out of date, and only supports ancient MCUs -- whilst it might be possible to use these, it's not recommended.

    Do note that there are sometimes licensing restrictions with respect to redistribution. As an example, binaries built for nRF5 are not able to be redistributed via QMK Configurator, due to the licensing of their board support package.

    Adding support for a new STM32 MCU (for an existing family)

    Usually, one can "masquerade" as an existing MCU of the same family, especially if the only difference is RAM or Flash size. As an example, some MCUs within the same family are virtually identical, with the exception of adding a cryptographic peripheral -- STM32L072 vs. STM32L082 for instance. Given the unlikely use of the cryptographic peripheral, L082 chips can actually run as if they're an L072, and can be targeted accordingly.

    Adding proper support for new MCUs within an existing STM32 family should ideally be upstreamed to ChibiOS. In general, this will require modifications of the stm32_registry.h file, providing correct responses for the same #defines provided for the other MCUs in that family.

    Adding support for a new STM32 Family

    If this is a requirement, this needs to go through upstream ChibiOS before QMK would consider accepting boards targeting the new family. More information for porting should be sought by approaching ChibiOS directly, rather than through QMK.

    Adding support for a new MCU Family

    As stated earlier, in order for a new MCU family to be supported by QMK, it needs to be upstreamed into ChibiOS-Contrib before QMK will consider accepting boards using it. The same principle applies for development -- you're best approaching the ChibiOS-Contrib maintainers to get a bit more of an idea on what's involved with upstreaming your contribution.

    - + \ No newline at end of file diff --git a/porting_your_keyboard_to_qmk.html b/porting_your_keyboard_to_qmk.html index c13224e79e9..a012af13aa4 100644 --- a/porting_your_keyboard_to_qmk.html +++ b/porting_your_keyboard_to_qmk.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -96,7 +96,7 @@ ] } }

    In the above example,

    TIP

    See also: Split Keyboard Layout Macro and Matrix to Physical Layout.

    Additional Configuration

    There are a lot of features that can be turned on or off, configured or tuned. Some of these have yet to be migrated over to Data Driven Configuration. The following sections cover the process for when an info.json option is unavailable.

    Configuration Options

    For available options for config.h, you should see the Config Options page for more details.

    Build Options

    For available options for rules.mk, see the Config Options page for a detailed list and description.

    - + \ No newline at end of file diff --git a/pr_checklist.html b/pr_checklist.html index 43560ebadad..72c7a84d954 100644 --- a/pr_checklist.html +++ b/pr_checklist.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -41,7 +41,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */

    Or, optionally, using SPDX identifier instead:

    // Copyright 2024 Your Name (@yourgithub)
     // SPDX-License-Identifier: GPL-2.0-or-later
    - + \ No newline at end of file diff --git a/quantum_keycodes.html b/quantum_keycodes.html index 15f365399fc..0862fe4de44 100644 --- a/quantum_keycodes.html +++ b/quantum_keycodes.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Quantum Keycodes

    Quantum keycodes allow for easier customization of your keymap than the basic ones provide, without having to define custom actions.

    All keycodes within quantum are numbers between 0x0000 and 0xFFFF. Within your keymap.c it may look like you have functions and other special cases, but ultimately the C preprocessor will translate those into a single 4 byte integer. QMK has reserved 0x0000 through 0x00FF for standard keycodes. These are keycodes such as KC_A, KC_1, and KC_LCTL, which are basic keys defined in the USB HID specification.

    On this page we have documented keycodes between 0x00FF and 0xFFFF which are used to implement advanced quantum features. If you define your own custom keycodes they will be put into this range as well.

    QMK Keycodes

    KeyAliasesDescription
    QK_BOOTLOADERQK_BOOTPut the keyboard into bootloader mode for flashing
    QK_DEBUG_TOGGLEDB_TOGGToggle debug mode
    QK_CLEAR_EEPROMEE_CLRReinitializes the keyboard's EEPROM (persistent memory)
    QK_MAKESends qmk compile -kb (keyboard) -km (keymap), or qmk flash if shift is held. Puts keyboard into bootloader mode if shift & control are held
    QK_REBOOTQK_RBTResets the keyboard. Does not load the bootloader

    WARNING

    Note: QK_MAKE requires #define ENABLE_COMPILE_KEYCODE in your config.h to function.

    - + \ No newline at end of file diff --git a/quantum_painter.html b/quantum_painter.html index bc4617925e9..8b068493ef6 100644 --- a/quantum_painter.html +++ b/quantum_painter.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -37,7 +37,7 @@ Writing /home/qmk/qmk_firmware/keyboards/my_keeb/generated/my_image.qgf.c...

    Quantum Painter Display Drivers

    Most TFT display panels use a 5-pin interface -- SPI SCK, SPI MOSI, SPI CS, D/C, and RST pins.

    For these displays, QMK's spi_master must already be correctly configured for the platform you're building for.

    The pin assignments for SPI CS, D/C, and RST are specified during device construction.

    Enabling support for the GC9A01 in Quantum Painter is done by adding the following to rules.mk:

    make
    QUANTUM_PAINTER_ENABLE = yes
     QUANTUM_PAINTER_DRIVERS += gc9a01_spi

    Creating a GC9A01 device in firmware can then be done with the following API:

    c
    painter_device_t qp_gc9a01_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);

    The device handle returned from the qp_gc9a01_make_spi_device function can be used to perform all other drawing operations.

    The maximum number of displays can be configured by changing the following in your config.h (default is 1):

    c
    // 3 displays:
     #define GC9A01_NUM_DEVICES 3

    Native color format rgb565 is compatible with GC9A01

    Quantum Painter Drawing API

    All APIs require a painter_device_t object as their first parameter -- this object comes from the specific device initialisation, and instructions on creating it can be found in each driver's respective section.

    To use any of the APIs, you need to include qp.h:

    c
    #include <qp.h>

    The coordinate system used in Quantum Painter generally accepts left, top, right, and bottom instead of x/y/width/height, and each coordinate is inclusive of where pixels should be drawn. This is required as some datatypes used by display panels have a maximum value of 255 -- for any value or geometry extent that matches 256, this would be represented as a 0, instead.

    TIP

    Drawing a horizontal line 8 pixels long, starting from 4 pixels inside the left side of the display, will need left=4, right=11.

    All color data matches the standard QMK HSV triplet definitions:

    TIP

    Colors used in Quantum Painter are not subject to the RGB lighting CIE curve, if it is enabled.

    - + \ No newline at end of file diff --git a/quantum_painter_lvgl.html b/quantum_painter_lvgl.html index bbf7c1e5cf5..1b75cc26e3c 100644 --- a/quantum_painter_lvgl.html +++ b/quantum_painter_lvgl.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -28,7 +28,7 @@ ...Your code to draw // Run LVGL specific code to draw } }

    To init. the display please read the Display Initialisation section.

    WARNING

    Attaching LVGL to a display means LVGL subsequently "owns" the display. Using standard Quantum Painter drawing operations with the display after LVGL attachment will likely result in display artifacts.

    Quantum Painter LVGL Detach

    c
    void qp_lvgl_detach(void)

    The qp_lvgl_detach function stops the internal LVGL ticks and releases resources related to it.

    Enabling/Disabling LVGL features

    You can overwrite LVGL specific features in your lv_conf.h file.

    Changing the LVGL task frequency

    When LVGL is running, your keyboard's responsiveness may decrease, causing missing keystrokes or encoder rotations, especially during the animation of dynamically-generated content. This occurs because LVGL operates as a scheduled task with a default task rate of five milliseconds. While a fast task rate is advantageous when LVGL is responsible for detecting and processing inputs, it can lead to excessive recalculations of displayed content, which may slow down QMK's matrix scanning. If you rely on QMK instead of LVGL for processing inputs, it can be beneficial to increase the time between calls to the LVGL task handler to better match your preferred display update rate. To do this, add this to your config.h:

    c
    #define QP_LVGL_TASK_PERIOD 40
    - + \ No newline at end of file diff --git a/quantum_painter_qff.html b/quantum_painter_qff.html index 1995af918f4..3bff9797563 100644 --- a/quantum_painter_qff.html +++ b/quantum_painter_qff.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -47,7 +47,7 @@ uint24_t glyph; // the glyph information, as per ASCII glyphs above } glyph[N]; // N glyphs worth of data } qff_unicode_glyph_table_v1_t;

    Font palette block

    The font palette block is identical to QGF's frame palette block, retaining the same typeid of 0x03.

    It is only specified in the QFF if the font is palette-based, and follows the unicode glyph block if the font contains any Unicode glyphs, or the ASCII glyph block if the font contains only ASCII glyphs.

    Font data block

    The font data block is the last block in the file and is identical to QGF's frame data block, however has a different typeid of 0x04 in QFF.

    - + \ No newline at end of file diff --git a/quantum_painter_qgf.html b/quantum_painter_qgf.html index 229a504c29f..b4b4abc707d 100644 --- a/quantum_painter_qgf.html +++ b/quantum_painter_qgf.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -61,7 +61,7 @@ qgf_block_header_v1_t header; // = { .type_id = 0x05, .neg_type_id = (~0x05), .length = N } uint8_t data[N]; // N data octets } qgf_data_v1_t; - + \ No newline at end of file diff --git a/quantum_painter_rle.html b/quantum_painter_rle.html index c54ca5b6307..7cb3670343a 100644 --- a/quantum_painter_rle.html +++ b/quantum_painter_rle.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -31,7 +31,7 @@ c = READ_OCTET() for i = 0 ... length-1 WRITE_OCTET(c) - + \ No newline at end of file diff --git a/ref_functions.html b/ref_functions.html index d2b598f810b..db077e4685c 100644 --- a/ref_functions.html +++ b/ref_functions.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -56,7 +56,7 @@ } else { // do something if 100ms or more have passed } - + \ No newline at end of file diff --git a/reference_configurator_support.html b/reference_configurator_support.html index ea48d1e534a..1ab94d0cbff 100644 --- a/reference_configurator_support.html +++ b/reference_configurator_support.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -100,7 +100,7 @@ | | | the keyboard's top (rear-facing) edge. ↓ ↓ ↓ {"label":"Num Lock", "x":0, "y":0},

    Some objects will also have "w" and "h" keys, which represent a key's width and height, respectively.

    TIP

    For more on the info.json files, see info.json Format.

    How the Configurator Programs Keys

    The Configurator's API uses the layout macro and the JSON file we've given it to create a visual representation of the keyboard that has each visual object tied to a specific key, in sequence:

    key in layout macroJSON object used
    k00
    k01
    k02
    k03
    k10
    k11
    k12
    k13
    k20
    k21
    k22
    k30
    k31
    k32
    k33
    k40
    k42

    When a user selects the top-left key in the Configurator, and assigns Num Lock to it, the Configurator builds a keymap file with KC_NUM as the first key, and so on as the keymap is built. The label keys are not used; they are only for the user's reference in identifying specific keys when debugging the info.json file.

    Issues and Hazards

    Currently, the Configurator does not support key rotation or non-rectangular key shapes like ISO Enter. Additionally, keys that are vertically-offset from their "row" — the arrow keys on 1800-layouts like the TKC1800 being a prominent example — confuse the KLE-to-JSON Converter, if not adjusted for by the contributor of the info.json file.

    Workarounds

    Non-rectangular keys

    For ISO Enter keys, QMK custom is to display it as a rectangular key, 1.25u wide and 2u high, aligned so its right edge is aligned with the right edge of the alphanumeric key block.


    A 60% keyboard in standard ISO layout, as rendered by QMK Configurator.

    Vertically-offset keys

    For vertically-offset keys, place them in KLE as if they were not offset, then edit the Y-values as needed in the converted JSON file


    An 1800-layout keyboard as rendered in Keyboard Layout Editor, without the vertical offset applied to the arrow keys.


    A Unix diff file, showing the changes needed to vertically-offset the arrow keys in our keyboard's JSON file.

    - + \ No newline at end of file diff --git a/reference_glossary.html b/reference_glossary.html index 772f25f875f..f1774dde21d 100644 --- a/reference_glossary.html +++ b/reference_glossary.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Glossary of QMK Terms

    ARM

    A line of 32-bit MCUs produced by a number of companies, such as Atmel, Cypress, Kinetis, NXP, ST, and TI.

    AVR

    A line of 8-bit MCUs produced by Atmel. AVR was the original platform that TMK supported.

    AZERTY

    The standard Français (French) keyboard layout. Named for the first 6 keys on the keyboard.

    Backlight

    A generic term for lighting on a keyboard. The backlight is typically, but not always, an array of LEDs that shine through keycaps and/or switches.

    Bluetooth

    A short range peer to peer wireless protocol. Most common wireless protocol for a keyboard.

    Bootloader

    A special program that is written to a protected area of your MCU that allows the MCU to upgrade its own firmware, typically over USB.

    Bootmagic

    A feature that allows for various keyboard behavior changes to happen on the fly, such as swapping or disabling common keys.

    C

    A low-level programming language suitable for system code. Most QMK code is written in C.

    Colemak

    An alternative keyboard layout that is gaining in popularity.

    Compile

    The process of turning human readable code into machine code your MCU can run.

    Dvorak

    An alternative keyboard layout developed by Dr. August Dvorak in the 1930's. A shortened form of the Dvorak Simplified Keyboard.

    Dynamic Macro

    A macro which has been recorded on the keyboard and which will be lost when the keyboard is unplugged or the computer rebooted.

    Eclipse

    An IDE that is popular with many C developers.

    Firmware

    The software that controls your MCU.

    git

    Versioning software used at the command line

    GitHub

    The website that hosts most of the QMK project. It provides integration with git, issue tracking, and other features that help us run QMK.

    ISP

    In-system programming, a method of programming an AVR chip using external hardware and the JTAG pins.

    hid_listen

    An interface for receiving debugging messages from your keyboard. You can view these messages using QMK Flasher or PJRC's hid_listen

    Keycode

    A 2-byte number that represents a particular key. 0x00-0xFF are used for Basic Keycodes while 0x100-0xFFFF are used for Quantum Keycodes.

    Key Down

    An event that happens when a key is pressed down, but is completed before a key is released.

    Key Up

    An event that happens when a key is released.

    Keymap

    An array of keycodes mapped to a physical keyboard layout, which are processed on key presses and releases

    Layer

    An abstraction used to allow a key to serve multiple purposes. The highest active layer takes precedence.

    Leader Key

    A feature that allows you to tap the leader key followed by a sequence of 1, 2, or 3 keys to activate key presses or other quantum features.

    LED

    Light Emitting Diode, the most common device used for indicators on a keyboard.

    Make

    Software package that is used to compile all the source files. You run make with various options to compile your keyboard firmware.

    Matrix

    A wiring pattern of columns and rows that enables the MCU to detect keypresses with a fewer number of pins. The matrix often incorporates diodes to allow for NKRO.

    Macro

    A feature that lets you send multiple keypress events (hid reports) after having pressed only a single key.

    MCU

    Microcontrol Unit, the processor that powers your keyboard.

    Modifier

    A key that is held down while typing another key to modify the action of that key. Examples include Ctrl, Alt, and Shift.

    Mousekeys

    A feature that lets you control your mouse cursor and click from your keyboard.

    N-Key Rollover (NKRO)

    A term that applies to keyboards that are capable of reporting any number of key-presses at once.

    Oneshot Modifier

    A modifier that acts as if it is held down until another key is released, so you can press the mod and then press the key, rather than holding the mod while pressing the key. Also known as a Sticky key or a Dead key.

    ProMicro

    A low cost AVR development board. Clones of this device are often found on ebay very inexpensively (under $5) but people often struggle with flashing their pro micros.

    Pull Request

    A request to submit code to QMK. We encourage all users to submit Pull Requests for bugfixes and new features.

    QWERTY

    The standard English keyboard layout, and often a shortcut for other language's standard layouts. Named for the first 6 letters on the keyboard.

    QWERTZ

    The standard Deutsche (German) keyboard layout. Named for the first 6 letters on the keyboard.

    Rollover

    The term for pressing a key while a key is already held down. Variants include 2KRO, 6KRO, and NKRO.

    Scancode

    A 1 byte number that is sent as part of a HID report over USB that represents a single key. These numbers are documented in the HID Usage Tables published by the USB-IF.

    Space Cadet Shift

    A special set of shift keys which allow you to type various types of braces by tapping the left or right shift one or more times.

    Tap

    Pressing and releasing a key. In some situations you will need to distinguish between a key down and a key up event, and Tap always refers to both at once.

    Tap Dance

    A feature that lets you assign multiple keycodes to the same key based on how many times you press it.

    Teensy

    A low-cost AVR development board that is commonly used for hand-wired builds. A teensy is often chosen despite costing a few dollars more due to its halfkay bootloader, which makes flashing very simple.

    Underlight

    A generic term for LEDs that light the underside of the board. These LEDs typically shine away from the bottom of the PCB and towards the surface the keyboard rests on.

    Unicode

    In the larger computer world Unicode is a set of encoding schemes for representing characters in any language. As it relates to QMK it means using various OS schemes to send unicode codepoints instead of scancodes.

    Unit Testing

    A framework for running automated tests against QMK. Unit testing helps us be confident that our changes do not break anything.

    USB

    Universal Serial Bus, the most common wired interface for a keyboard.

    USB Host (or simply Host)

    The USB Host is your computer, or whatever device your keyboard is plugged into.

    Couldn't Find the Term You're Looking For?

    Open an issue with your question and the term in question could be added here. Better still, open a pull request with the definition. 😃

    - + \ No newline at end of file diff --git a/reference_info_json.html b/reference_info_json.html index 3e798f8ecb8..8dede805296 100644 --- a/reference_info_json.html +++ b/reference_info_json.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -40,7 +40,7 @@ "breathing": true, "cycle_left_right": false }
  • center_point
  • default
  • driver (Required)
  • hue_steps
  • layout (Required)
  • led_flush_limit
  • led_process_limit
  • max_brightness
  • react_on_keyup
  • sat_steps
  • sleep
  • speed_steps
  • split_count
  • timeout
  • val_steps
  • Secure

    Configures the Secure feature.

    Split Keyboard

    Configures the Split Keyboard feature.

    Stenography

    Configures the Stenography feature.

    USB

    WS2812

    Configures the WS2812 driver.

    - + \ No newline at end of file diff --git a/reference_keymap_extras.html b/reference_keymap_extras.html index 36620df2a74..a3a9cae5950 100644 --- a/reference_keymap_extras.html +++ b/reference_keymap_extras.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Language-specific Keycodes

    Keyboards are able to support a wide range of languages. However, this support is not actually achieved within the keyboard itself - instead, it sends numerical codes, which the operating system maps to the appropriate characters depending on the user's configured keyboard layout. By default (and per the HID spec), this is the US ANSI layout. For example, when a Swedish person presses the key with the å character printed on it, the keyboard is actually sending the keycode for [.

    Obviously, this can get confusing, so QMK provides language-specific keycode aliases for many keyboard layouts. These won't do much on their own - you still have to set the matching keyboard layout in your OS settings. Think of them more as keycap labels for your keymap.

    Simply #include one of the keycode headers below at the top of your keymap.c, and assign the keycodes defined in the header in place of the KC_ prefixed ones.

    Sendstring Support

    By default, SEND_STRING() assumes a US ANSI keyboard layout is set. If you are using a different layout, you can include one of the Sendstring LUT headers below in your keymap.c to override the lookup tables used for mapping ASCII characters to keycodes. You do not need to include the corresponding keymap_*.h header, as it is implicit when including the Sendstring header.

    An important thing to note here is that SEND_STRING() only operates on ASCII text. This means that you cannot pass it a string containing Unicode characters - this unfortunately includes accented characters that may be present in your desired layout.
    Many layouts make certain characters, such as Grave or Tilde, available only as dead keys, so you must add a space immediately after it in the string you want to send, to prevent it from potentially combining with the next character.
    Certain other layouts have no Sendstring header as they do not use a Latin-derived alphabet (for example Greek and Russian), and thus there is no way to input most of the ASCII character set.

    Header Files

    These headers are located in quantum/keymap_extras/.

    LayoutKeycodes HeaderSendstring LUT Header
    Canadian Multilingual (CSA)keymap_canadian_multilingual.hsendstring_canadian_multilingual.h
    Croatiankeymap_croatian.hsendstring_croatian.h
    Czechkeymap_czech.hsendstring_czech.h
    Czech (macOS, ANSI)keymap_czech_mac_ansi.hsendstring_czech_mac_ansi.h
    Czech (macOS, ISO)keymap_czech_mac_iso.hsendstring_czech_mac_iso.h
    Danishkeymap_danish.hsendstring_danish.h
    Dutch (Belgium)keymap_belgian.hsendstring_belgian.h
    English (Ireland)keymap_irish.h
    English (UK)keymap_uk.hsendstring_uk.h
    English (US Extended)keymap_us_extended.h
    English (US International)keymap_us_international.hsendstring_us_international.h
    English (US International, Linux)keymap_us_international_linux.h
    Estoniankeymap_estonian.hsendstring_estonian.h
    Farsikeymap_farsi.h
    Finnishkeymap_finnish.hsendstring_finnish.h
    Frenchkeymap_french.hsendstring_french.h
    French (AFNOR)keymap_french_afnor.hsendstring_french_afnor.h
    French (BÉPO)keymap_bepo.hsendstring_bepo.h
    French (Belgium)keymap_belgian.hsendstring_belgian.h
    French (Canada)keymap_canadian_french.hsendstring_canadian_french.h
    French (Switzerland)keymap_swiss_fr.hsendstring_swiss_fr.h
    French (macOS, ISO)keymap_french_mac_iso.hsendstring_french_mac_iso.h
    Germankeymap_german.hsendstring_german.h
    German (Switzerland)keymap_swiss_de.hsendstring_swiss_de.h
    German (macOS)keymap_german_mac_iso.hsendstring_german_mac_iso.h
    German (Neo2)keymap_neo2.h
    Greekkeymap_greek.h
    Hebrewkeymap_hebrew.h
    Hungariankeymap_hungarian.hsendstring_hungarian.h
    Icelandickeymap_icelandic.hsendstring_icelandic.h
    Italiankeymap_italian.hsendstring_italian.h
    Italian (macOS, ANSI)keymap_italian_mac_ansi.hsendstring_italian_mac_ansi.h
    Italian (macOS, ISO)keymap_italian_mac_iso.hsendstring_italian_mac_iso.h
    Japanesekeymap_japanese.hsendstring_japanese.h
    Koreankeymap_korean.h
    Latviankeymap_latvian.hsendstring_latvian.h
    Lithuanian (ĄŽERTY)keymap_lithuanian_azerty.hsendstring_lithuanian_azerty.h
    Lithuanian (QWERTY)keymap_lithuanian_qwerty.hsendstring_lithuanian_qwerty.h
    Norwegiankeymap_norwegian.hsendstring_norwegian.h
    Polishkeymap_polish.h
    Portuguesekeymap_portuguese.hsendstring_portuguese.h
    Portuguese (macOS, ISO)keymap_portuguese_mac_iso.hsendstring_portuguese_mac_iso.h
    Portuguese (Brazil)keymap_brazilian_abnt2.hsendstring_brazilian_abnt2.h
    Romaniankeymap_romanian.hsendstring_romanian.h
    Russiankeymap_russian.h
    Serbiankeymap_serbian.h
    Serbian (Latin)keymap_serbian_latin.hsendstring_serbian_latin.h
    Slovakkeymap_slovak.hsendstring_slovak.h
    Sloveniankeymap_slovenian.hsendstring_slovenian.h
    Spanishkeymap_spanish.hsendstring_spanish.h
    Spanish (Dvorak)keymap_spanish_dvorak.hsendstring_spanish_dvorak.h
    Spanish (Latin America)keymap_spanish_latin_america.hsendstring_spanish_latin_america.h
    Swedishkeymap_swedish.hsendstring_swedish.h
    Swedish (macOS, ANSI)keymap_swedish_mac_ansi.h
    Swedish (macOS, ISO)keymap_swedish_mac_iso.h
    Swedish Pro (macOS, ANSI)keymap_swedish_pro_mac_ansi.h
    Swedish Pro (macOS, ISO)keymap_swedish_pro_mac_iso.h
    Turkish (F)keymap_turkish_f.hsendstring_turkish_f.h
    Turkish (Q)keymap_turkish_q.hsendstring_turkish_q.h
    Ukrainiankeymap_ukrainian.h

    There are also a few which are not quite language-specific, but useful if you are not using a QWERTY layout:

    LayoutKeycodes HeaderSendstring LUT Header
    Colemakkeymap_colemak.hsendstring_colemak.h
    Dvorakkeymap_dvorak.hsendstring_dvorak.h
    Dvorak (French)keymap_dvorak_fr.hsendstring_dvorak_fr.h
    Dvorak (Programmer)keymap_dvorak_programmer.hsendstring_dvorak_programmer.h
    Normankeymap_norman.hsendstring_norman.h
    Ploverkeymap_plover.h
    Plover (Dvorak)keymap_plover_dvorak.h
    Workmankeymap_workman.hsendstring_workman.h
    Workman (ZXCVM)keymap_workman_zxcvm.hsendstring_workman_zxcvm.h
    - + \ No newline at end of file diff --git a/squeezing_avr.html b/squeezing_avr.html index 33956e9fa16..e1c81d84f4d 100644 --- a/squeezing_avr.html +++ b/squeezing_avr.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -95,7 +95,7 @@ #undef ENABLE_RGB_MATRIX_MULTISPLASH #undef ENABLE_RGB_MATRIX_SOLID_SPLASH #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH

    Final Thoughts

    If you've done all of this, and your firmware is still too large, then it is time to consider making the switch to ARM. There are a number of Pro Micro replacements with an ARM controller:

    There are other, non-Pro Micro compatible boards out there. The most popular being:

    - + \ No newline at end of file diff --git a/support.html b/support.html index 5ed9573f6f2..07cbd0cab95 100644 --- a/support.html +++ b/support.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Getting Help

    There are a lot of resources for getting help with QMK.

    Please read our Code of Conduct before participating in any of our community spaces.

    Realtime Chat

    If you need help with something, the best place to get quick support is going to be on our Discord Server. There is usually somebody online, and there are a bunch of very helpful people there.

    OLKB Subreddit

    The official QMK forum is /r/olkb on reddit.com.

    GitHub Issues

    You can open an issue on GitHub. This is especially handy when your issue will require long-term discussion or debugging.

    - + \ No newline at end of file diff --git a/support_deprecation_policy.html b/support_deprecation_policy.html index c93052490fb..85663678f58 100644 --- a/support_deprecation_policy.html +++ b/support_deprecation_policy.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    Feature support policies

    System Constraints

    In general, feature development is encouraged to support as many hardware configurations as possible. Depending on system constraints this may not always be achievable, and is usually bound by microcontroller flash and RAM capabilities.

    The most frequently-hit constraint is the amount of code that can be flashed onto an ATmega32U4 -- users almost always need to pick and choose included functionality due to the size constraints.

    WARNING

    Squeezing AVR has some steps that users can take in order to minimise the overall firmware size, which in some cases enables the ability for users to include other desired features.

    Deprecation & Removal Policy

    QMK Firmware strives for innovation wherever possible. With ongoing feature development and other improvements made to the codebase, sometimes the retirement of outdated, under-utilised, or limited-value functionality is selected for deprecation and subsequent removal.

    The intent behind feature deprecation is to maintain and/or improve quality. As a result, perpetually supporting under-utilised features would negatively impact the QMK team's ability to improve other areas of QMK Firmware.

    There may be several motivations behind the deprecation or removal of functionality (keeping in mind that this list is not exhaustive):

    • Better alternatives have already been implemented
    • Lack of adherence to standards
    • Poor support from code owners or upstream maintainers
    • Poor design
    • Hardware constraints
    • Minimal use within the QMK Firmware repository
    • Copyright disputes
    • Bit-rot

    When a feature is selected for deprecation, future changes to that area will cease to be developed by the QMK team, and Pull Requests submitted against those areas will be declined.

    TIP

    As QMK does not gather metrics from its users, the only way the QMK team can gauge the level of usage is to refer to the main QMK Firmware repository -- searching through forks is not practical due to the sheer number of them.

    How much advance notice will be given?

    Disregarding emergencies or other high-risk concerns, deprecation of large features or entire subsystems within QMK will be communicated on the develop branch at least one breaking changes cycle (3 months) before removal. Advance notice may be extended for higher impact features, and is at the discretion of the QMK team.

    Smaller features may be removed within a breaking changes cycle, and will generally be based on the level of use within the repository. Features with minimal use may be selected for removal at any time on the develop branch.

    Third-party software libraries leveraged by QMK are generally forked to mitigate disappearance upstream. If the upstream repository is removed, it will generally be replaced when practical, or dependent features will be removed as per the normal deprecation policy.

    How will deprecation be communicated?

    Every breaking changes merge from develop into master is accompanied by a changelog document -- intended and completed deprecations will be communicated here.

    In addition, wherever possible warnings will be issued during firmware compilation when deprecated features are still being used.

    - + \ No newline at end of file diff --git a/syllabus.html b/syllabus.html index 326116e5b7c..aadf3008678 100644 --- a/syllabus.html +++ b/syllabus.html @@ -8,17 +8,17 @@ - + - - - + + +
    Skip to content

    QMK Syllabus

    This page helps you build up your QMK knowledge by introducing the basics first and guiding you to understanding all the concepts you need to know to be proficient with QMK.

    Beginning Topics

    If you read nothing else you should read the documents in this section. After reading the Tutorial you should be able to create a basic keymap, compile it, and flash it to your keyboard. The remaining documents will flesh out your knowledge of these basics.

    • Learn How To Use QMK Tools
    • Learn About Keymaps
      • Layers
      • Keycodes
        • The full list of keycodes you can use. Note that some may require knowledge found in the Intermediate or Advanced Topics.
    • Configuring IDEs - Optional

    Intermediate Topics

    These topics start to dig into some of the features that QMK supports. You don't have to read all of these documents, but some of the documents in the Advanced Topics section won't make sense if you skip over some of these.

    Advanced Topics

    Everything below here requires a lot of foundational knowledge. Besides being able to create keymaps using advanced features you should be familiar with using both config.h and rules.mk to configure options for your keyboard.

    - + \ No newline at end of file diff --git a/tap_hold.html b/tap_hold.html index c62964d3162..88f35c59ddb 100644 --- a/tap_hold.html +++ b/tap_hold.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -161,7 +161,7 @@ // Neutralize left alt, left GUI, right GUI and left Control+Shift #define MODS_TO_NEUTRALIZE { MOD_BIT(KC_LEFT_ALT), MOD_BIT(KC_LEFT_GUI), MOD_BIT(KC_RIGHT_GUI), MOD_BIT(KC_LEFT_CTRL)|MOD_BIT(KC_LEFT_SHIFT) }

    WARNING

    Do not use MOD_xxx constants like MOD_LSFT or MOD_RALT, since they're 5-bit packed bit-arrays while MODS_TO_NEUTRALIZE expects a list of 8-bit packed bit-arrays. Use MOD_BIT(<kc>) or MOD_MASK_xxx instead.

    Retro Shift

    Auto Shift, has its own version of retro tapping called retro shift. It is extremely similar to retro tapping, but holding the key past AUTO_SHIFT_TIMEOUT results in the value it sends being shifted. Other configurations also affect it differently; see here for more information.

    Why do we include the key record for the per key functions?

    One thing that you may notice is that we include the key record for all of the "per key" functions, and may be wondering why we do that.

    Well, it's simple really: customization. But specifically, it depends on how your keyboard is wired up. For instance, if each row is actually using a row in the keyboard's matrix, then it may be simpler to use if (record->event.key.row == 3) instead of checking a whole bunch of keycodes. Which is especially good for those people using the Tap Hold type keys on the home row. So you could fine-tune those to not interfere with your normal typing.

    Why are there no *_kb or *_user functions?!

    Unlike many of the other functions here, there isn't a need (or even reason) to have a quantum or keyboard-level function. Only user-level functions are useful here, so no need to mark them as such.

    - + \ No newline at end of file diff --git a/understanding_qmk.html b/understanding_qmk.html index b5b062c6648..2bb99127152 100644 --- a/understanding_qmk.html +++ b/understanding_qmk.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -56,7 +56,7 @@ {0,0,0,0}, {0,0,0,0} }

    Comparing against our keymap we can see that the pressed key is KC_NUM. From here we dispatch to the process_record set of functions.

    Process Record

    The process_record() function itself is deceptively simple, but hidden within is a gateway to overriding functionality at various levels of QMK. The chain of events is listed below, using cluecard whenever we need to look at the keyboard/keymap level functions. Depending on options set in rules.mk or elsewhere, only a subset of the functions below will be included in final firmware.

    At any step during this chain of events a function (such as process_record_kb()) can return false to halt all further processing.

    After this is called, post_process_record() is called, which can be used to handle additional cleanup that needs to be run after the keycode is normally handled.

    - + \ No newline at end of file diff --git a/unit_testing.html b/unit_testing.html index d031a254f06..dbc46a6425a 100644 --- a/unit_testing.html +++ b/unit_testing.html @@ -8,11 +8,11 @@ - + - - - + + + @@ -20,7 +20,7 @@
    Skip to content

    Unit Testing

    If you are new to unit testing, then you can find many good resources on internet. However most of it is scattered around in small pieces here and there, and there's also many different opinions, so I won't give any recommendations.

    Instead I recommend these two books, explaining two different styles of Unit Testing in detail.

    • "Test Driven Development: By Example: Kent Beck"
    • "Growing Object-Oriented Software, Guided By Tests: Steve Freeman, Nat Pryce"

    If you prefer videos there are Uncle Bob's Clean Coders Videos, which unfortunately cost quite a bit, especially if you want to watch many of them. But James Shore has a free Let's Play video series.

    Google Test and Google Mock

    It's possible to Unit Test your code using Google Test. The Google Test framework also includes another component for writing testing mocks and stubs, called "Google Mock". For information how to write the actual tests, please refer to the documentation on that site.

    Use of C++

    Note that Google Test and therefore any test has to be written in C++, even if the rest of the QMK codebases is written in C. This should hopefully not be a problem even if you don't know any C++, since there's quite clear documentation and examples of the required C++ features, and you can write the rest of the test code almost as you would write normal C. Note that some compiler errors which you might get can look quite scary, but just read carefully what it says, and you should be ok.

    One thing to remember, is that you have to append extern "C" around all of your C file includes.

    Adding Tests for New or Existing Features

    If you want to unit test a feature, take a look at some of the existing tests, for example those in the quantum/sequencer/tests folder. Then follow the steps below to create a similar structure.

    1. If it doesn't already exist, add a test subfolder to the folder containing the feature.
    2. Create a testlist.mk and a rules.mk file in that folder.
    3. Include those files from the root folder testlist.mkand build_test.mk respectively.
    4. Add a new name for your testgroup to the testlist.mk file. Each group defined there will be a separate executable. And that's how you can support mocking out different parts. Note that it's worth adding some common prefix, just like it's done for the existing tests. The reason for that is that the make command allows substring filtering, so this way you can easily run a subset of the tests.
    5. Define the source files and required options in the rules.mk file.
      • _SRC for source files
      • _DEFS for additional defines
      • _INC for additional include folders
    6. Write the tests in a new cpp file inside the test folder you created. That file has to be one of the files included from the rules.mk file.

    Note how there's several different tests, each mocking out a separate part. Also note that each of them only compiles the very minimum that's needed for the tests. It's recommend that you try to do the same. For a relevant video check out Matt Hargett "Advanced Unit Testing in C & C++

    Running the Tests

    To run all the tests in the codebase, type make test:all. You can also run test matching a substring by typing make test:matchingsubstring. matchingsubstring can contain colons to be more specific; make test:tap_hold_configurations will run the tap_hold_configurations tests for all features while make test:retro_shift:tap_hold_configurations will run the tap_hold_configurations tests for only the Retro Shift feature.

    Note that the tests are always compiled with the native compiler of your platform, so they are also run like any other program on your computer.

    Debugging the Tests

    If there are problems with the tests, you can find the executable in the ./build/test folder. You should be able to run those with GDB or a similar debugger.

    To forward any debug messages to stderr, the tests can run with DEBUG=1. For example

    make test:all DEBUG=1

    Alternatively, add CONSOLE_ENABLE=yes to the tests rules.mk.

    Full Integration Tests

    It's not yet possible to do a full integration test, where you would compile the whole firmware and define a keymap that you are going to test. However there are plans for doing that, because writing tests that way would probably be easier, at least for people that are not used to unit testing.

    In that model you would emulate the input, and expect a certain output from the emulated keyboard.

    Tracing Variables

    Sometimes you might wonder why a variable gets changed and where, and this can be quite tricky to track down without having a debugger. It's of course possible to manually add print statements to track it, but you can also enable the variable trace feature. This works for both variables that are changed by the code, and when the variable is changed by some memory corruption.

    To take the feature into use add VARIABLE_TRACE=x to the end of you make command. x represents the number of variables you want to trace, which is usually 1.

    Then at a suitable place in the code, call ADD_TRACED_VARIABLE, to begin the tracing. For example to trace all the layer changes, you can do this

    c
    void matrix_init_user(void) {
       ADD_TRACED_VARIABLE("layer", &layer_state, sizeof(layer_state));
     }

    This will add a traced variable named "layer" (the name is just for your information), which tracks the memory location of layer_state. It tracks 4 bytes (the size of layer_state), so any modification to the variable will be reported. By default you can not specify a size bigger than 4, but you can change it by adding MAX_VARIABLE_TRACE_SIZE=x to the end of the make command line.

    In order to actually detect changes to the variables you should call VERIFY_TRACED_VARIABLES around the code that you think that modifies the variable. If a variable is modified it will tell you between which two VERIFY_TRACED_VARIABLES calls the modification happened. You can then add more calls to track it down further. I don't recommend spamming the codebase with calls. It's better to start with a few, and then keep adding them in a binary search fashion. You can also delete the ones you don't need, as each call need to store the file name and line number in the ROM, so you can run out of memory if you add too many calls.

    Also remember to delete all the tracing code once you have found the bug, as you wouldn't want to create a pull request with tracing code.

    - + \ No newline at end of file