Commit Graph

44 Commits (11deaf60b43235acc15aa7c8b1e901cba78503e6)

Author SHA1 Message Date
Joel Challis 80b72487ce
Migrate features from rules.mk to data drive - LMN (#23277) 2024-03-15 01:42:33 +00:00
Joel Challis 2f37a7854d
Migrate lighting defaults to info.json (#22920) 2024-02-01 18:10:14 +00:00
Ryan 023d644bb6
Move RGBLight animations to data driven (#21635)
* Move RGBLight animations to data driven, 0-9

* Move RGBLight animations to data driven, A

* Move RGBLight animations to data driven, B

* Move RGBLight animations to data driven, C

* Move RGBLight animations to data driven, D

* Move RGBLight animations to data driven, E

* Move RGBLight animations to data driven, F

* Move RGBLight animations to data driven, G

* Move RGBLight animations to data driven, H

* Move RGBLight animations to data driven, handwired

* Move RGBLight animations to data driven, I

* Move RGBLight animations to data driven, J

* Move RGBLight animations to data driven, K

* Move RGBLight animations to data driven, L

* Move RGBLight animations to data driven, M

* Move RGBLight animations to data driven, N

* Move RGBLight animations to data driven, O

* Move RGBLight animations to data driven, P

* Move RGBLight animations to data driven, Q

* Move RGBLight animations to data driven, R

* Move RGBLight animations to data driven, S

* Move RGBLight animations to data driven, T

* Move RGBLight animations to data driven, U

* Move RGBLight animations to data driven, V

* Move RGBLight animations to data driven, W

* Move RGBLight animations to data driven, X

* Move RGBLight animations to data driven, Y

* Move RGBLight animations to data driven, Z

* Fix incorrect placement

* Fix build failures and mismatches
2023-08-23 22:11:39 +01:00
Ryan 4137685f8e
backlight: split AVR PWM and timer drivers (#21540) 2023-07-21 09:27:55 +10:00
Ryan 4ae9bfd17a
Move `RGBLIGHT_HUE/SAT/VAL_STEP` to data driven (#21292)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2023-06-24 17:37:54 +10:00
Ryan b1783db4ea
Move `RGBLED_NUM` to data driven (#21278) 2023-06-18 14:39:07 +10:00
Ryan 2367d8129c
Move `RGBLIGHT_SLEEP` to data driven (#21072) 2023-06-16 14:04:45 +10:00
Ryan fbbc54f523
Move DZ60 and MJ6XY layouts to data driven (#20478) 2023-04-27 07:53:38 +10:00
Ryan 47966dc2a6
Migrate `rgblight.pin` and `RGB_DI_PIN` to `ws2812.pin` (#20303) 2023-04-06 18:00:54 +10:00
Ryan ad625e7c06
Remove `RGB_DI_PIN` ifdefs (#20218) 2023-03-23 21:38:01 +11:00
Ryan 02ccc50e60
Remove more empty headers (#20155) 2023-03-17 14:02:04 +11:00
Ryan caa8c81086
Move matrix config to info.json, part 7 (#20020) 2023-03-11 00:39:56 +11:00
Ryan 314f6c1ddb
Move backlight config to data driven (#19910) 2023-02-26 08:37:57 +11:00
Ryan 9c0ce80d7e
Move backlight config to data driven, part 1 (#19887) 2023-02-21 12:05:40 +11:00
Ryan 2da0827d4f
Remove matrix size defines (#19581) 2023-02-17 16:08:25 +11:00
Ryan f4ba17c4a0
Move LED indicator config to data driven (#19800) 2023-02-17 13:14:29 +11:00
Ryan f9aeea64c1
Migrate `MCU` and `BOOTLOADER` to data-driven (#19529) 2023-02-08 18:41:46 +11:00
Ryan ebb512db82
Debounce defines cleanup (#19742)
* Clean up `DEBOUNCE` in config.h, 0-9

* Clean up `DEBOUNCE` in config.h, A

* Clean up `DEBOUNCE` in config.h, B

* Clean up `DEBOUNCE` in config.h, C

* Clean up `DEBOUNCE` in config.h, D

* Clean up `DEBOUNCE` in config.h, E

* Clean up `DEBOUNCE` in config.h, F

* Clean up `DEBOUNCE` in config.h, G

* Clean up `DEBOUNCE` in config.h, H

* Clean up `DEBOUNCE` in config.h, handwired

* Clean up `DEBOUNCE` in config.h, I

* Clean up `DEBOUNCE` in config.h, J

* Clean up `DEBOUNCE` in config.h, K

* Clean up `DEBOUNCE` in config.h, L

* Clean up `DEBOUNCE` in config.h, M

* Clean up `DEBOUNCE` in config.h, N

* Clean up `DEBOUNCE` in config.h, O

* Clean up `DEBOUNCE` in config.h, P

* Clean up `DEBOUNCE` in config.h, Q

* Clean up `DEBOUNCE` in config.h, R

* Clean up `DEBOUNCE` in config.h, S

* Clean up `DEBOUNCE` in config.h, T

* Clean up `DEBOUNCE` in config.h, U

* Clean up `DEBOUNCE` in config.h, V

* Clean up `DEBOUNCE` in config.h, W

* Clean up `DEBOUNCE` in config.h, X

* Clean up `DEBOUNCE` in config.h, Y

* Clean up `DEBOUNCE` in config.h, Z

* Remove default debounce from info.json

* Migrate non-default debounce to info.json
2023-02-03 19:19:58 +00:00
Nick Brassel f6dd8dea2e
Remove usages of config_common.h from config.h files. (#19714) 2023-01-31 06:03:30 +11:00
Ryan 56555c61e1
Migrate `LAYOUTS` to data driven (#19541)
* Migrate `LAYOUTS` to data driven, 0-9

* Migrate `LAYOUTS` to data driven, A

* Migrate `LAYOUTS` to data driven, B

* Migrate `LAYOUTS` to data driven, C

* Migrate `LAYOUTS` to data driven, D

* Migrate `LAYOUTS` to data driven, E

* Migrate `LAYOUTS` to data driven, F

* Migrate `LAYOUTS` to data driven, G

* Migrate `LAYOUTS` to data driven, H

* Migrate `LAYOUTS` to data driven, handwired

* Migrate `LAYOUTS` to data driven, I

* Migrate `LAYOUTS` to data driven, J

* Migrate `LAYOUTS` to data driven, K

* Migrate `LAYOUTS` to data driven, L

* Migrate `LAYOUTS` to data driven, M

* Migrate `LAYOUTS` to data driven, N

* Migrate `LAYOUTS` to data driven, O

* Migrate `LAYOUTS` to data driven, P

* Migrate `LAYOUTS` to data driven, Q

* Migrate `LAYOUTS` to data driven, R

* Migrate `LAYOUTS` to data driven, S

* Migrate `LAYOUTS` to data driven, T

* Migrate `LAYOUTS` to data driven, U

* Migrate `LAYOUTS` to data driven, V

* Migrate `LAYOUTS` to data driven, W

* Migrate `LAYOUTS` to data driven, X

* Migrate `LAYOUTS` to data driven, Y

* Migrate `LAYOUTS` to data driven, Z
2023-01-10 02:48:20 +00:00
Nick Brassel 219afaba42
Reworked backlight keycodes. (#18961)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-11-06 08:11:59 +11:00
fauxpark 9d717c85dc Merge remote-tracking branch 'upstream/master' into develop 2022-10-29 16:54:14 +11:00
James Young 84569788d5
MelGeek MJ6XY Refactor (#18862)
* mj6xy.h: convert tabs to spaces

* info.json: convert tabs to spaces

* info.json: apply friendly formatting

Whitespace-only change.

* rename LAYOUT_60_ansi_7u_spc to LAYOUT_60_ansi_tsangan

- rename `60_ansi_7u_spc` keymap to `default_ansi_tsangan`

* add K31 position to LAYOUT_60_iso

* rename LAYOUT_60_iso_7u_spc_split_rshift to LAYOUT_60_iso_tsangan_split_rshift

- rename `60_iso_7u_spc_split_rshift` keymap to `default_iso_tsangan_split_rshift`

* add K31 position to LAYOUT_60_iso_arrow

* add K31 position to LAYOUT_60_iso_arrow_6u_spc

* add K31 position to LAYOUT_60_iso_arrow_3u_spc

* refactor LAYOUT_60_iso_7u_spc into LAYOUT_60_iso_tsangan

- add K31 position to layout macro
- rename `60_iso_7u_spc` keymap to `default_iso_tsangan`

* add K31 position to LAYOUT_64_iso

- rename `64_iso` keymap to `default_64_iso`

* add K31 position to LAYOUT_64_iso_3u_spc

- rename `64_iso_3u_spc` keymap to `default_64_iso_3u_spc`

* add K31 position to LAYOUT_64_iso_split_3u_spc

- rename `64_iso_split_3u_spc` keymap to `default_64_iso_split_3u_spc`

* remove LAYOUT_60_iso_1u_lshift_split_rshift macro and keymap

Functionally identical to `LAYOUT_60_iso_split_rshift`.

* remove LAYOUT_60_iso_1u_lshift_7u_spc_split_rshift macro and keymap

Functionally identical to `LAYOUT_60_iso_tsangan_split_rshift`.

* rename LAYOUT_60_ansi_7u_spc_split_bs to LAYOUT_60_ansi_tsangan_split_bs

- rename `60_ansi_7u_spc_split_bs` keymap to `default_60_ansi_tsangan_split_bs`

* add K31 position to LAYOUT_60_iso_split_bs

* rename LAYOUT_60_iso_7u_spc_split_bs_rshift to LAYOUT_60_iso_tsangan_split_bs_rshift

- rename `60_iso_7u_spc_split_bs_rshift` keymap to `default_60_iso_tsangan_split_bs_rshift`

* add K31 position to LAYOUT_60_iso_arrow_split_bs

* add K31 position to LAYOUT_60_iso_arrow_3u_spc_split_bs

- rename `60_iso_arrow_3u_spc_split_bs` keymap to `default_60_iso_arrow_3u_spc_split_bs`

* add K31 position to LAYOUT_60_iso_arrow_split_bs_3u_spc

- rename `60_iso_arrow_split_bs_3u_spc` keymap to `default_60_iso_arrow_split_bs_3u_spc`

* refactor LAYOUT_60_iso_7u_spc_split_bs into LAYOUT_60_iso_tsangan_split_bs

- add K31 position to layout macro
- rename `60_iso_7u_spc_split_bs` keymap to `default_60_iso_tsangan_split_bs`

* add K31 position to LAYOUT_64_iso_split_bs

- rename `64_iso_split_bs` keymap to `default_64_iso_split_bs`

* add K31 position to LAYOUT_64_iso_3u_spc_split_bs

rename `64_iso_3u_spc_split_bs` keymap to `default_64_iso_3u_spc_split_bs`

* add K31 position to LAYOUT_64_iso_split_bs_3u_spc

- rename `64_iso_split_bs_3u_spc` keymap to `default_64_iso_split_bs_3u_spc`

* remove LAYOUT_60_ansi_arrow_6u_spc macro and keymap

Functionally identical to `LAYOUT_60_ansi_arrow`.

* remove LAYOUT_64_ansi_6u_spc macro and keymap

Functionally identical to `LAYOUT_64_ansi`.

* remove LAYOUT_60_iso_arrow_6u_spc macro and keymap

Functionally identical to `LAYOUT_60_iso_arrow`.

* remove LAYOUT_64_iso_6u_spc macro and keymap

Functionally identical to `LAYOUT_64_iso`.

* remove LAYOUT_60_ansi_arrow_6u_spc_split_bs macro and keymap

Functionally identical to `LAYOUT_60_ansi_arrow_split_bs`.

* remove LAYOUT_64_ansi_6u_spc_split_bs macro and keymap

Functionally identical to `LAYOUT_64_ansi_split_bs`.

* remove LAYOUT_60_iso_arrow_6u_spc_split_bs macro and keymap

Functionally identical to `LAYOUT_60_iso_arrow_split_bs`.

* remove LAYOUT_64_iso_6u_spc_split_bs macro and keymap

Functionally identical to `LAYOUT_64_iso_split_bs`.

* remove LAYOUT_60_iso_1u_lshift_split_bs_rshift macro and keymap

Functionally identical to `LAYOUT_60_iso_split_bs_rshift`.

* remove LAYOUT_60_iso_1u_lshift_7u_spc_split_bs_rshift macro and keymap

Functionally identical to `LAYOUT_60_iso_tsangan_split_bs_rshift`.

* refactor keymaps

- convert tabs to spaces
- update keycode grid alignment

* remove LAYOUT_60_ansi_arrow_3u_spc macro and keymap

Subset of `LAYOUT_60_ansi_arrow_3u_spc_split_bs`.

* remove LAYOUT_60_iso_arrow_3u_spc macro and keymap

Subset of `LAYOUT_60_iso_arrow_3u_spc_split_bs`.

* remove LAYOUT_60_iso_tsangan_split_bs macro and keymap

Subset of `LAYOUT_60_iso_tsangan_split_bs_rshift`.

* remove LAYOUT_60_iso_tsangan_split_rshift macro and keymap

Subset of `LAYOUT_60_iso_tsangan_split_bs_rshift`.

* remove LAYOUT_64_ansi_3u_spc macro and keymap

Subset of `LAYOUT_64_ansi_3u_spc_split_bs`.

* remove LAYOUT_64_iso_3u_spc macro and keymap

Subset of `LAYOUT_64_iso_3u_spc_split_bs`.

* remove LAYOUT_60_iso_split_bs macro and keymap

Subset of `LAYOUT_60_iso_split_bs_rshift`.

* remove LAYOUT_60_iso_split_rshift macro and keymap

Subset of `LAYOUT_60_iso_split_bs_rshift`.

* add LAYOUT_60_ansi_split_bs_rshift macro and keymap

* remove LAYOUT_60_ansi_split_bs macro and keymap

Subset of `LAYOUT_60_ansi_split_bs_rshift`.

* add LAYOUT_60_tsangan_hhkb macro and keymap

* remove LAYOUT_60_ansi_tsangan_split_bs macro and keymap

Subset of `LAYOUT_60_tsangan_hhkb`.

* standardize keymap names

Rename all keymaps per QMK guidelines (e.g. keymap using `LAYOUT_60_ansi_arrow` should be named `default_60_ansi_arrow`).

* add LAYOUT_all; refactor default keymap

Add a `LAYOUT_all` macro, and update the `default` keymap to use the new macro.

* refactor via keymap

Update the `via` keymap to match the behaviour of the `default` keymap.

* improve keyboard readme

- fix broken image reference
- improve grammar on keyboard description
- fix Hardware Availability link
- fix `make` instructions
- add bootloader and flashing instructions

* fix default_60_tsangan_hhkb keymap

Fix a keycode count mismatch.

* mj6xy.h: add matrix diagram

* KC_GESC -> QK_GESC per fauxpark

* KC_SLCK -> KC_SCRL per fauxpark
2022-10-27 09:52:21 -07:00
Ryan 1cb1a5a374
Remove legacy Grave Escape keycodes (#18787) 2022-10-20 18:04:11 -07:00
Ryan c347e732be
Remove legacy EEPROM clear keycodes (#18782)
* `EEP_RST` -> `EE_CLR`, default-ish keymaps

* `EEP_RST` -> `EE_CLR`, user keymaps

* `EEP_RST` -> `EE_CLR`, community layouts

* `EEP_RST` -> `EE_CLR`, userspace

* `EEP_RST` -> `EE_CLR`, docs & core
2022-10-20 12:20:07 +01:00
Ryan 5e4b076af3
Remove legacy keycodes, part 5 (#18710)
* `KC_SLCK` -> `KC_SCRL`
* `KC_NLCK` -> `KC_NUM`
2022-10-15 22:29:43 +01:00
Drashna Jaelre c8e998ccad
Remove RGBLIGHT_ANIMATION and clean up effect defines for L-Q (#18727) 2022-10-15 09:55:40 -07:00
QMK Bot 93914142a3 Merge remote-tracking branch 'origin/master' into develop 2022-08-07 01:24:34 +00:00
Joel Challis c6ad38e79f
RESET -> QK_BOOT default keymaps (#17939) 2022-08-07 02:23:58 +01:00
Nick Brassel 154d35ac14
Remove `UNUSED_PINS` (#17931) 2022-08-06 23:23:35 +10:00
Ryan 3da6575e24
Move keyboard USB IDs and strings to data driven: M (#17859) 2022-08-03 17:15:43 +10:00
Joel Challis b7771ec25b
RESET -> QK_BOOT default keymaps (#17037) 2022-05-15 20:26:27 +01:00
Ryan a8d440e4e0
Tidy up NKRO_ENABLE rules (#15382) 2021-12-09 16:05:44 +11:00
Ryan c12b997679
Tidy up `SLEEP_LED_ENABLE` rules (#15362) 2021-12-01 21:13:00 +11:00
James Young 84ea77ead6
Remove `BOOTMAGIC_ENABLE = lite` option (#15002)
* remove BOOTMAGIC_ENABLE=lite setting

* change keyboard BOOTMAGIC_ENABLE rules

Edits keyboard-level instances of `BOOTMAGIC_ENABLE = lite` to `BOOTMAGIC_ENABLE = yes`.

* change keyboard BOOTMAGIC_ENABLE inline comments

Edits keyboard-level BOOTMAGIC_ENABLE inline comments to "Enable Bootmagic Lite".

* change keymap BOOTMAGIC_ENABLE rules

Edits keymap-level instances of `BOOTMAGIC_ENABLE = lite` to `BOOTMAGIC_ENABLE = yes`.

* change keymap BOOTMAGIC_ENABLE inline comments

Edits/adds keymap-level BOOTMAGIC_ENABLE inline comments to read "Enable Bootmagic Lite".

* change layout/user BOOTMAGIC_ENABLE rules/comments

Edits instances of `BOOTMAGIC_ENABLE = lite` to `BOOTMAGIC_ENABLE = yes`.

Edits/adds keymap-level BOOTMAGIC_ENABLE inline comments to read "Enable Bootmagic Lite".

* update non-rules.mk BOOTMAGIC_ENABLE references in keyboards/

* remove docs references to Full Bootmagic

* convert data-driven Bootmagic Lite instances

* remove Bootmagic Lite bodge from data-driven generation

* Merge remote-tracking branch 'upstream/develop' into rm/bootmagic-full_q4a

* update docs/ja/config_options.md per mtei

* update docs/faq_misc.md per mtei

Remove remaining Full Bootmagic reference.
2021-11-05 08:18:09 +11:00
QMK Bot bda8924795 Merge remote-tracking branch 'origin/master' into develop 2021-09-12 05:28:01 +00:00
Ryan 5af1799735
Remove BLUETOOTH_ENABLE from keyboard-level rules.mk (#14379) 2021-09-12 15:27:29 +10:00
fauxpark 1895151a9c Merge remote-tracking branch 'upstream/master' into develop 2021-09-12 14:10:26 +10:00
Ryan 4791cfae1a
Remove width, height and key_count from info.json (#14274) 2021-09-12 14:04:56 +10:00
Zach White d971020cd8
Fix number of elements in info.json does not match errors (#14213)
* evyd13/atom47/rev3: best guess at fixing info.json

* evyd13/atom47: best guess at fixing info.json

* eyeohdesigns/sprh: best guess at fixing info.json

* handwired/unicomp_mini_m: best guess at fixing info.json

* lazydesigners/the60/rev2: best guess at fixing info.json

* melgeek/mj6xy: best guess at fixing info.json

* pizzakeyboards/pizza65: best guess at fixing info.json

* plx: best guess at fixing info.json

* rojectcain/vault45: best guess at fixing info.json

* sidderskb/majbritt/rev2: best guess at fixing info.json

* spacey: best guess at fixing info.json
2021-09-09 21:33:23 -07:00
James Young a03aa301de
Remove Full Bootmagic (#13846)
* disambiguate Bootmagic rules in keymaps

The files edited by this commit were added at a point in time where `BOOTMAGIC_ENABLE = yes` enabled full Bootmagic.

This commit edits the files to specify that full Bootmagic is intended.

* remove BOOTMAGIC_ENABLE=full setting

* unify commented BOOTMAGIC_ENABLE rules in keyboards

Explicitly sets `BOOTMAGIC_ENABLE = no` in keyboards where the rule was commented out.

Command:

```
find keyboards/ -type f -name 'rules.mk' -and -not -path '*/keymaps/*' -exec sed -i -e 's;#[ \t]*\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-zA-Z]\+\).*;\1 = no       # Virtual DIP switch configuration;g' {} +
```

* remove commented Bootmagic rules from keymap/user level

Command:

```
find keyboards/ layouts/ users/ -type f -name 'rules.mk' -exec sed -i -e '/#.*\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-z]\+\).*/d' {} +
```

* update keyboard BOOTMAGIC_ENABLE rule formatting

Sets the formatting of BOOTMAGIC_ENABLE rules to `BOOTMAGIC_ENABLE = [value]`, without the inline comments (which will be replaced later).

Command:

```
find keyboards/ -type f -name 'rules.mk' -and -not -path '*/keymaps/*' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-z]\+\).*;\1 = \2;g' '{}' +
```

* update keyboards' BOOTMAGIC_ENABLE settings

Updates keyboard `rules.mk` files to use `BOOTMAGIC_ENABLE = lite` where `BOOTMAGIC_ENABLE = full` was being used.

Command:

```
find keyboards/ -type f -name 'rules.mk' -and -not -path '*/keymaps/*' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE = \)full;\1lite;g' '{}' +
```

* update keymap/user BOOTMAGIC_ENABLE settings

Updates keymap/user `rules.mk` files to use `BOOTMAGIC_ENABLE = lite` where `BOOTMAGIC_ENABLE = full` was being used.

Commands:

```
find keyboards/ -type f -name 'rules.mk' -and -path '*/keymaps/*' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE[ \t=]\+\)full;\1lite;g' '{}' +
find layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE[ \t=]\+\)full;\1lite;g' '{}' +
```

* remove and replace inline comments in keyboards and keymap/user files

Removes and replaces the inline comments, which have been updated to read `Enable Bootmagic Lite`.

Commands:

```
find keyboards/ -type f -name 'rules.mk' -and -path '*/keymaps/*' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-z]\+\).*;\1 = \2;g' '{}' +
find layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-z]\+\).*;\1 = \2;g' '{}' +
find keyboards/ layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE = lite\);\1     # Enable Bootmagic Lite;g' '{}' +
find keyboards/ layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE = yes\);\1      # Enable Bootmagic Lite;g' '{}' +
find keyboards/ layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE = no\);\1       # Enable Bootmagic Lite;g' '{}' +
```

* rename improperly named makefiles

Some files intended to be used as makefiles had improper names causing them to not be used as intended when building.

This commit corrects the filenames of the affected files.

* update renamed file with new rule formatting

* update QMK's template files

Updates QMK's `rules.mk` templates to use the new inline comment.

* update QMK Docs

- remove documentation of full Bootmagic
- update links to Bootmagic Lite doc
- add doc for Magic Keycodes

* rules.mk patch for coarse/ixora and coarse/vinta
2021-08-06 23:59:56 -07:00
bomb 2e5cecd704
[Keyboard] Change RGB light defaults for melgeek/mj6xy (#13657)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-07-25 21:22:13 -07:00
bomb 68b1ef2d1d
[Keyboard] correct the info.json for qmk configurator and add two empty layers for via (#13552) 2021-07-15 09:54:58 -07:00
bomb 9c4916e2e8
[Keyboard] Add MelGeek MJ6xy which is a 60% keyboard that support mul… (#13494)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-07-14 08:39:54 -07:00