uffd 2.3.2__tar.gz → 2.4.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1833) hide show
  1. {uffd-2.3.2/uffd.egg-info → uffd-2.4.1}/PKG-INFO +51 -6
  2. {uffd-2.3.2 → uffd-2.4.1}/README.md +47 -2
  3. {uffd-2.3.2 → uffd-2.4.1}/setup.py +3 -3
  4. {uffd-2.3.2 → uffd-2.4.1}/tests/test_remailer.py +2 -2
  5. {uffd-2.3.2 → uffd-2.4.1}/uffd/__init__.py +4 -3
  6. {uffd-2.3.2 → uffd-2.4.1}/uffd/commands/user.py +1 -1
  7. {uffd-2.3.2 → uffd-2.4.1}/uffd/default_config.cfg +3 -0
  8. uffd-2.4.1/uffd/fido2_compat.py +46 -0
  9. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/README.md +6 -6
  10. uffd-2.4.1/uffd/migrations/versions/01fdd7820f29_openid_connect_support.py +148 -0
  11. uffd-2.4.1/uffd/migrations/versions/4bd316207e59_unified_password_hashing_for_recovery_codes.py +67 -0
  12. uffd-2.4.1/uffd/migrations/versions/87cb93a329bf_server_side_sessions.py +31 -0
  13. uffd-2.4.1/uffd/migrations/versions/99df71f0f4a0_migrate_device_login_from_user_to_session.py +63 -0
  14. uffd-2.4.1/uffd/migrations/versions/b9839ad4fd60_remove_mfa_done_from_session.py +51 -0
  15. uffd-2.4.1/uffd/migrations/versions/ce3fbc4df4a9_make_oauth2_claims_not_nullable.py +94 -0
  16. uffd-2.4.1/uffd/migrations/versions/e71e29cc605a_migrate_oauth2_state_from_user_to_session.py +108 -0
  17. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/f2eb2c52a61f_add_serviceuser.py +4 -1
  18. {uffd-2.3.2 → uffd-2.4.1}/uffd/models/__init__.py +2 -2
  19. {uffd-2.3.2 → uffd-2.4.1}/uffd/models/mail.py +3 -3
  20. {uffd-2.3.2 → uffd-2.4.1}/uffd/models/mfa.py +9 -13
  21. uffd-2.4.1/uffd/models/oauth2.py +292 -0
  22. {uffd-2.3.2 → uffd-2.4.1}/uffd/models/role.py +1 -1
  23. {uffd-2.3.2 → uffd-2.4.1}/uffd/models/service.py +13 -3
  24. {uffd-2.3.2 → uffd-2.4.1}/uffd/models/session.py +89 -10
  25. {uffd-2.3.2 → uffd-2.4.1}/uffd/models/signup.py +2 -2
  26. {uffd-2.3.2 → uffd-2.4.1}/uffd/models/user.py +2 -0
  27. {uffd-2.3.2 → uffd-2.4.1}/uffd/password_hash.py +2 -2
  28. {uffd-2.3.2 → uffd-2.4.1}/uffd/remailer.py +1 -1
  29. uffd-2.4.1/uffd/static/bootstrap/bootstrap-prefers-dark-color-only.css +2371 -0
  30. uffd-2.4.1/uffd/static/bootstrap/bootstrap-prefers-dark-color-only.min.css +5 -0
  31. uffd-2.4.1/uffd/static/style-1.css +65 -0
  32. {uffd-2.3.2 → uffd-2.4.1}/uffd/template_helper.py +7 -2
  33. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/403.html +1 -1
  34. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/base.html +2 -1
  35. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/base_narrow.html +1 -1
  36. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/group/show.html +1 -1
  37. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/invite/list.html +2 -2
  38. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/invite/new.html +1 -1
  39. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/mail/show.html +1 -1
  40. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/role/show.html +1 -1
  41. uffd-2.3.2/uffd/templates/mfa/disable.html → uffd-2.4.1/uffd/templates/selfservice/disable_mfa.html +1 -1
  42. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/selfservice/forgot_password.html +3 -3
  43. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/selfservice/self.html +55 -6
  44. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/selfservice/set_password.html +3 -3
  45. uffd-2.3.2/uffd/templates/mfa/setup.html → uffd-2.4.1/uffd/templates/selfservice/setup_mfa.html +11 -11
  46. uffd-2.3.2/uffd/templates/mfa/setup_recovery.html → uffd-2.4.1/uffd/templates/selfservice/setup_mfa_recovery.html +4 -4
  47. uffd-2.3.2/uffd/templates/mfa/setup_totp.html → uffd-2.4.1/uffd/templates/selfservice/setup_mfa_totp.html +1 -1
  48. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/service/api.html +3 -3
  49. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/service/oauth2.html +3 -3
  50. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/service/show.html +2 -2
  51. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/session/deviceauth.html +3 -3
  52. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/session/devicelogin.html +1 -1
  53. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/session/login.html +3 -3
  54. uffd-2.3.2/uffd/templates/mfa/auth.html → uffd-2.4.1/uffd/templates/session/mfa_auth.html +24 -11
  55. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/signup/confirm.html +1 -1
  56. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/signup/start.html +5 -5
  57. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/user/list.html +1 -1
  58. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/user/show.html +13 -6
  59. uffd-2.4.1/uffd/translations/de/LC_MESSAGES/messages.mo +0 -0
  60. {uffd-2.3.2 → uffd-2.4.1}/uffd/translations/de/LC_MESSAGES/messages.po +809 -728
  61. {uffd-2.3.2 → uffd-2.4.1}/uffd/utils.py +1 -1
  62. {uffd-2.3.2 → uffd-2.4.1}/uffd/views/__init__.py +1 -2
  63. {uffd-2.3.2 → uffd-2.4.1}/uffd/views/invite.py +3 -3
  64. uffd-2.4.1/uffd/views/oauth2.py +508 -0
  65. {uffd-2.3.2 → uffd-2.4.1}/uffd/views/selfservice.py +133 -2
  66. {uffd-2.3.2 → uffd-2.4.1}/uffd/views/session.py +158 -37
  67. {uffd-2.3.2 → uffd-2.4.1}/uffd/views/signup.py +5 -5
  68. {uffd-2.3.2 → uffd-2.4.1}/uffd/views/user.py +21 -2
  69. {uffd-2.3.2 → uffd-2.4.1/uffd.egg-info}/PKG-INFO +51 -6
  70. {uffd-2.3.2 → uffd-2.4.1}/uffd.egg-info/SOURCES.txt +15 -7
  71. {uffd-2.3.2 → uffd-2.4.1}/uffd.egg-info/requires.txt +3 -3
  72. uffd-2.3.2/uffd/fido2_compat.py +0 -26
  73. uffd-2.3.2/uffd/models/oauth2.py +0 -124
  74. uffd-2.3.2/uffd/static/style.css +0 -8
  75. uffd-2.3.2/uffd/translations/de/LC_MESSAGES/messages.mo +0 -0
  76. uffd-2.3.2/uffd/views/mfa.py +0 -237
  77. uffd-2.3.2/uffd/views/oauth2.py +0 -264
  78. {uffd-2.3.2 → uffd-2.4.1}/LICENSE +0 -0
  79. {uffd-2.3.2 → uffd-2.4.1}/MANIFEST.in +0 -0
  80. {uffd-2.3.2 → uffd-2.4.1}/setup.cfg +0 -0
  81. {uffd-2.3.2 → uffd-2.4.1}/tests/test_csrf.py +0 -0
  82. {uffd-2.3.2 → uffd-2.4.1}/tests/test_password_hash.py +0 -0
  83. {uffd-2.3.2 → uffd-2.4.1}/tests/test_ratelimit.py +0 -0
  84. {uffd-2.3.2 → uffd-2.4.1}/tests/test_secure_redirect.py +0 -0
  85. {uffd-2.3.2 → uffd-2.4.1}/tests/test_tasks.py +0 -0
  86. {uffd-2.3.2 → uffd-2.4.1}/tests/test_utils.py +0 -0
  87. {uffd-2.3.2 → uffd-2.4.1}/uffd/babel.cfg +0 -0
  88. {uffd-2.3.2 → uffd-2.4.1}/uffd/commands/__init__.py +0 -0
  89. {uffd-2.3.2 → uffd-2.4.1}/uffd/commands/cleanup.py +0 -0
  90. {uffd-2.3.2 → uffd-2.4.1}/uffd/commands/gendevcert.py +0 -0
  91. {uffd-2.3.2 → uffd-2.4.1}/uffd/commands/group.py +0 -0
  92. {uffd-2.3.2 → uffd-2.4.1}/uffd/commands/profile.py +0 -0
  93. {uffd-2.3.2 → uffd-2.4.1}/uffd/commands/role.py +0 -0
  94. {uffd-2.3.2 → uffd-2.4.1}/uffd/commands/roles_update_all.py +0 -0
  95. {uffd-2.3.2 → uffd-2.4.1}/uffd/commands/unique_email_addresses.py +0 -0
  96. {uffd-2.3.2 → uffd-2.4.1}/uffd/csrf.py +0 -0
  97. {uffd-2.3.2 → uffd-2.4.1}/uffd/database.py +0 -0
  98. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/alembic.ini +0 -0
  99. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/env.py +0 -0
  100. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/script.py.mako +0 -0
  101. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/042879d5e3ac_lower_case_mail_receive_addresses.py +0 -0
  102. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/09d2edcaf0cc_add_expires_attribute_to_ratelimit_event.py +0 -0
  103. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/11ecc8f1ac3b_mysql_compat_fixes.py +0 -0
  104. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/23293f32b503_deactivate_users.py +0 -0
  105. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/2a6b1fb82ce6_added_missing_oauth2grant_code_index.py +0 -0
  106. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/2b68f688bec1_remailer_v2.py +0 -0
  107. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/468995a9c9ee_unique_email_addresses.py +0 -0
  108. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/54b2413586fd_invite_pk_change.py +0 -0
  109. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/5a07d4a63b64_role_inclusion.py +0 -0
  110. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/5cab70e95bf8_invite_creator_and_role_moderator_group.py +0 -0
  111. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/704d1245331c_remailer_setting_and_api_permission.py +0 -0
  112. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/878b25c4fae7_ldap_to_db.py +0 -0
  113. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/9f824f61d8ac_use_utc_for_datetime.py +0 -0
  114. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/a29870f95175_initial_migration.py +0 -0
  115. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/a594d3b3e05b_added_role_locked.py +0 -0
  116. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/a60ce68b9214_fix_not_null_on_role_groups_group_id.py +0 -0
  117. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/a8c6b6e91c28_device_login.py +0 -0
  118. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/a9b449776953_add_mfa_method_totp_last_counter.py +0 -0
  119. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/aeb07202a6c8_locking_and_new_id_allocation.py +0 -0
  120. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/af07cea65391_unified_password_hashing_for_user_and_signup.py +0 -0
  121. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/aff5f350dcdf_added_role_is_default.py +0 -0
  122. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/b273d7fdaa25_multiple_email_addresses.py +0 -0
  123. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/b8fbefca3675_added_api_permission_for_metrics.py +0 -0
  124. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/b9d3f7dac9db_move_api_and_oauth2_clients_to_db.py +0 -0
  125. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/bad6fc529510_added_rolegroup_requires_mfa_and_cleanup.py +0 -0
  126. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/bf71799b7b9e_add_id_to_signup_table.py +0 -0
  127. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/cbca20cf64d9_constraint_name_fixes.py +0 -0
  128. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/e13b733ec856_per_service_email_preferences.py +0 -0
  129. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/e249233e2a31_remailer_mode_overwrite.py +0 -0
  130. {uffd-2.3.2 → uffd-2.4.1}/uffd/migrations/versions/e9a67175e179_add_id_to_selfservice_tokens.py +0 -0
  131. {uffd-2.3.2 → uffd-2.4.1}/uffd/models/api.py +0 -0
  132. {uffd-2.3.2 → uffd-2.4.1}/uffd/models/invite.py +0 -0
  133. {uffd-2.3.2 → uffd-2.4.1}/uffd/models/misc.py +0 -0
  134. {uffd-2.3.2 → uffd-2.4.1}/uffd/models/ratelimit.py +0 -0
  135. {uffd-2.3.2 → uffd-2.4.1}/uffd/models/selfservice.py +0 -0
  136. {uffd-2.3.2 → uffd-2.4.1}/uffd/navbar.py +0 -0
  137. {uffd-2.3.2 → uffd-2.4.1}/uffd/secure_redirect.py +0 -0
  138. {uffd-2.3.2 → uffd-2.4.1}/uffd/sendmail.py +0 -0
  139. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/bootstrap/bootstrap-grid.css +0 -0
  140. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/bootstrap/bootstrap-grid.css.map +0 -0
  141. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/bootstrap/bootstrap-grid.min.css +0 -0
  142. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/bootstrap/bootstrap-grid.min.css.map +0 -0
  143. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/bootstrap/bootstrap-reboot.css +0 -0
  144. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/bootstrap/bootstrap-reboot.css.map +0 -0
  145. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/bootstrap/bootstrap-reboot.min.css +0 -0
  146. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/bootstrap/bootstrap-reboot.min.css.map +0 -0
  147. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/bootstrap/bootstrap.bundle.js +0 -0
  148. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/bootstrap/bootstrap.bundle.js.map +0 -0
  149. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/bootstrap/bootstrap.bundle.min.js +0 -0
  150. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/bootstrap/bootstrap.bundle.min.js.map +0 -0
  151. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/bootstrap/bootstrap.css +0 -0
  152. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/bootstrap/bootstrap.css.map +0 -0
  153. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/bootstrap/bootstrap.js +0 -0
  154. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/bootstrap/bootstrap.js.map +0 -0
  155. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/bootstrap/bootstrap.min.css +0 -0
  156. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/bootstrap/bootstrap.min.css.map +0 -0
  157. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/bootstrap/bootstrap.min.js +0 -0
  158. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/bootstrap/bootstrap.min.js.map +0 -0
  159. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/cbor.js +0 -0
  160. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/empty.png +0 -0
  161. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/LICENSE.txt +0 -0
  162. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/css/all.css +0 -0
  163. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/css/all.min.css +0 -0
  164. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/css/brands.css +0 -0
  165. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/css/brands.min.css +0 -0
  166. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/css/fontawesome.css +0 -0
  167. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/css/fontawesome.min.css +0 -0
  168. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/css/regular.css +0 -0
  169. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/css/regular.min.css +0 -0
  170. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/css/solid.css +0 -0
  171. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/css/solid.min.css +0 -0
  172. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/css/svg-with-js.css +0 -0
  173. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/css/svg-with-js.min.css +0 -0
  174. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/css/v4-shims.css +0 -0
  175. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/css/v4-shims.min.css +0 -0
  176. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/js/all.js +0 -0
  177. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/js/all.min.js +0 -0
  178. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/js/brands.js +0 -0
  179. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/js/brands.min.js +0 -0
  180. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/js/conflict-detection.js +0 -0
  181. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/js/conflict-detection.min.js +0 -0
  182. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/js/fontawesome.js +0 -0
  183. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/js/fontawesome.min.js +0 -0
  184. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/js/regular.js +0 -0
  185. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/js/regular.min.js +0 -0
  186. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/js/solid.js +0 -0
  187. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/js/solid.min.js +0 -0
  188. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/js/v4-shims.js +0 -0
  189. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/js/v4-shims.min.js +0 -0
  190. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/less/_animated.less +0 -0
  191. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/less/_bordered-pulled.less +0 -0
  192. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/less/_core.less +0 -0
  193. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/less/_fixed-width.less +0 -0
  194. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/less/_icons.less +0 -0
  195. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/less/_larger.less +0 -0
  196. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/less/_list.less +0 -0
  197. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/less/_mixins.less +0 -0
  198. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/less/_rotated-flipped.less +0 -0
  199. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/less/_screen-reader.less +0 -0
  200. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/less/_shims.less +0 -0
  201. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/less/_stacked.less +0 -0
  202. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/less/_variables.less +0 -0
  203. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/less/brands.less +0 -0
  204. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/less/fontawesome.less +0 -0
  205. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/less/regular.less +0 -0
  206. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/less/solid.less +0 -0
  207. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/less/v4-shims.less +0 -0
  208. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/metadata/categories.yml +0 -0
  209. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/metadata/icons.json +0 -0
  210. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/metadata/icons.yml +0 -0
  211. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/metadata/shims.json +0 -0
  212. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/metadata/shims.yml +0 -0
  213. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/metadata/sponsors.yml +0 -0
  214. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/scss/_animated.scss +0 -0
  215. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/scss/_bordered-pulled.scss +0 -0
  216. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/scss/_core.scss +0 -0
  217. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/scss/_fixed-width.scss +0 -0
  218. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/scss/_icons.scss +0 -0
  219. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/scss/_larger.scss +0 -0
  220. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/scss/_list.scss +0 -0
  221. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/scss/_mixins.scss +0 -0
  222. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/scss/_rotated-flipped.scss +0 -0
  223. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/scss/_screen-reader.scss +0 -0
  224. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/scss/_shims.scss +0 -0
  225. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/scss/_stacked.scss +0 -0
  226. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/scss/_variables.scss +0 -0
  227. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/scss/brands.scss +0 -0
  228. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/scss/fontawesome.scss +0 -0
  229. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/scss/regular.scss +0 -0
  230. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/scss/solid.scss +0 -0
  231. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/scss/v4-shims.scss +0 -0
  232. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/sprites/brands.svg +0 -0
  233. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/sprites/regular.svg +0 -0
  234. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/sprites/solid.svg +0 -0
  235. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/500px.svg +0 -0
  236. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/accessible-icon.svg +0 -0
  237. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/accusoft.svg +0 -0
  238. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/acquisitions-incorporated.svg +0 -0
  239. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/adn.svg +0 -0
  240. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/adobe.svg +0 -0
  241. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/adversal.svg +0 -0
  242. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/affiliatetheme.svg +0 -0
  243. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/airbnb.svg +0 -0
  244. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/algolia.svg +0 -0
  245. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/alipay.svg +0 -0
  246. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/amazon-pay.svg +0 -0
  247. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/amazon.svg +0 -0
  248. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/amilia.svg +0 -0
  249. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/android.svg +0 -0
  250. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/angellist.svg +0 -0
  251. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/angrycreative.svg +0 -0
  252. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/angular.svg +0 -0
  253. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/app-store-ios.svg +0 -0
  254. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/app-store.svg +0 -0
  255. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/apper.svg +0 -0
  256. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/apple-pay.svg +0 -0
  257. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/apple.svg +0 -0
  258. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/artstation.svg +0 -0
  259. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/asymmetrik.svg +0 -0
  260. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/atlassian.svg +0 -0
  261. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/audible.svg +0 -0
  262. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/autoprefixer.svg +0 -0
  263. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/avianex.svg +0 -0
  264. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/aviato.svg +0 -0
  265. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/aws.svg +0 -0
  266. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/bandcamp.svg +0 -0
  267. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/battle-net.svg +0 -0
  268. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/behance-square.svg +0 -0
  269. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/behance.svg +0 -0
  270. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/bimobject.svg +0 -0
  271. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/bitbucket.svg +0 -0
  272. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/bitcoin.svg +0 -0
  273. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/bity.svg +0 -0
  274. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/black-tie.svg +0 -0
  275. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/blackberry.svg +0 -0
  276. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/blogger-b.svg +0 -0
  277. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/blogger.svg +0 -0
  278. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/bluetooth-b.svg +0 -0
  279. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/bluetooth.svg +0 -0
  280. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/bootstrap.svg +0 -0
  281. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/btc.svg +0 -0
  282. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/buffer.svg +0 -0
  283. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/buromobelexperte.svg +0 -0
  284. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/buy-n-large.svg +0 -0
  285. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/buysellads.svg +0 -0
  286. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/canadian-maple-leaf.svg +0 -0
  287. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/cc-amazon-pay.svg +0 -0
  288. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/cc-amex.svg +0 -0
  289. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/cc-apple-pay.svg +0 -0
  290. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/cc-diners-club.svg +0 -0
  291. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/cc-discover.svg +0 -0
  292. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/cc-jcb.svg +0 -0
  293. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/cc-mastercard.svg +0 -0
  294. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/cc-paypal.svg +0 -0
  295. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/cc-stripe.svg +0 -0
  296. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/cc-visa.svg +0 -0
  297. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/centercode.svg +0 -0
  298. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/centos.svg +0 -0
  299. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/chrome.svg +0 -0
  300. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/chromecast.svg +0 -0
  301. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/cloudscale.svg +0 -0
  302. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/cloudsmith.svg +0 -0
  303. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/cloudversify.svg +0 -0
  304. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/codepen.svg +0 -0
  305. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/codiepie.svg +0 -0
  306. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/confluence.svg +0 -0
  307. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/connectdevelop.svg +0 -0
  308. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/contao.svg +0 -0
  309. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/cotton-bureau.svg +0 -0
  310. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/cpanel.svg +0 -0
  311. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/creative-commons-by.svg +0 -0
  312. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/creative-commons-nc-eu.svg +0 -0
  313. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/creative-commons-nc-jp.svg +0 -0
  314. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/creative-commons-nc.svg +0 -0
  315. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/creative-commons-nd.svg +0 -0
  316. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/creative-commons-pd-alt.svg +0 -0
  317. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/creative-commons-pd.svg +0 -0
  318. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/creative-commons-remix.svg +0 -0
  319. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/creative-commons-sa.svg +0 -0
  320. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/creative-commons-sampling-plus.svg +0 -0
  321. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/creative-commons-sampling.svg +0 -0
  322. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/creative-commons-share.svg +0 -0
  323. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/creative-commons-zero.svg +0 -0
  324. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/creative-commons.svg +0 -0
  325. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/critical-role.svg +0 -0
  326. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/css3-alt.svg +0 -0
  327. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/css3.svg +0 -0
  328. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/cuttlefish.svg +0 -0
  329. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/d-and-d-beyond.svg +0 -0
  330. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/d-and-d.svg +0 -0
  331. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/dashcube.svg +0 -0
  332. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/delicious.svg +0 -0
  333. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/deploydog.svg +0 -0
  334. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/deskpro.svg +0 -0
  335. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/dev.svg +0 -0
  336. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/deviantart.svg +0 -0
  337. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/dhl.svg +0 -0
  338. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/diaspora.svg +0 -0
  339. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/digg.svg +0 -0
  340. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/digital-ocean.svg +0 -0
  341. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/discord.svg +0 -0
  342. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/discourse.svg +0 -0
  343. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/dochub.svg +0 -0
  344. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/docker.svg +0 -0
  345. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/draft2digital.svg +0 -0
  346. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/dribbble-square.svg +0 -0
  347. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/dribbble.svg +0 -0
  348. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/dropbox.svg +0 -0
  349. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/drupal.svg +0 -0
  350. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/dyalog.svg +0 -0
  351. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/earlybirds.svg +0 -0
  352. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/ebay.svg +0 -0
  353. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/edge.svg +0 -0
  354. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/elementor.svg +0 -0
  355. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/ello.svg +0 -0
  356. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/ember.svg +0 -0
  357. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/empire.svg +0 -0
  358. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/envira.svg +0 -0
  359. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/erlang.svg +0 -0
  360. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/ethereum.svg +0 -0
  361. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/etsy.svg +0 -0
  362. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/evernote.svg +0 -0
  363. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/expeditedssl.svg +0 -0
  364. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/facebook-f.svg +0 -0
  365. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/facebook-messenger.svg +0 -0
  366. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/facebook-square.svg +0 -0
  367. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/facebook.svg +0 -0
  368. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/fantasy-flight-games.svg +0 -0
  369. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/fedex.svg +0 -0
  370. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/fedora.svg +0 -0
  371. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/figma.svg +0 -0
  372. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/firefox-browser.svg +0 -0
  373. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/firefox.svg +0 -0
  374. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/first-order-alt.svg +0 -0
  375. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/first-order.svg +0 -0
  376. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/firstdraft.svg +0 -0
  377. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/flickr.svg +0 -0
  378. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/flipboard.svg +0 -0
  379. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/fly.svg +0 -0
  380. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/font-awesome-alt.svg +0 -0
  381. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/font-awesome-flag.svg +0 -0
  382. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/font-awesome-logo-full.svg +0 -0
  383. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/font-awesome.svg +0 -0
  384. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/fonticons-fi.svg +0 -0
  385. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/fonticons.svg +0 -0
  386. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/fort-awesome-alt.svg +0 -0
  387. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/fort-awesome.svg +0 -0
  388. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/forumbee.svg +0 -0
  389. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/foursquare.svg +0 -0
  390. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/free-code-camp.svg +0 -0
  391. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/freebsd.svg +0 -0
  392. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/fulcrum.svg +0 -0
  393. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/galactic-republic.svg +0 -0
  394. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/galactic-senate.svg +0 -0
  395. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/get-pocket.svg +0 -0
  396. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/gg-circle.svg +0 -0
  397. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/gg.svg +0 -0
  398. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/git-alt.svg +0 -0
  399. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/git-square.svg +0 -0
  400. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/git.svg +0 -0
  401. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/github-alt.svg +0 -0
  402. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/github-square.svg +0 -0
  403. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/github.svg +0 -0
  404. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/gitkraken.svg +0 -0
  405. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/gitlab.svg +0 -0
  406. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/gitter.svg +0 -0
  407. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/glide-g.svg +0 -0
  408. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/glide.svg +0 -0
  409. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/gofore.svg +0 -0
  410. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/goodreads-g.svg +0 -0
  411. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/goodreads.svg +0 -0
  412. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/google-drive.svg +0 -0
  413. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/google-play.svg +0 -0
  414. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/google-plus-g.svg +0 -0
  415. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/google-plus-square.svg +0 -0
  416. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/google-plus.svg +0 -0
  417. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/google-wallet.svg +0 -0
  418. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/google.svg +0 -0
  419. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/gratipay.svg +0 -0
  420. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/grav.svg +0 -0
  421. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/gripfire.svg +0 -0
  422. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/grunt.svg +0 -0
  423. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/gulp.svg +0 -0
  424. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/hacker-news-square.svg +0 -0
  425. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/hacker-news.svg +0 -0
  426. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/hackerrank.svg +0 -0
  427. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/hips.svg +0 -0
  428. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/hire-a-helper.svg +0 -0
  429. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/hooli.svg +0 -0
  430. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/hornbill.svg +0 -0
  431. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/hotjar.svg +0 -0
  432. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/houzz.svg +0 -0
  433. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/html5.svg +0 -0
  434. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/hubspot.svg +0 -0
  435. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/ideal.svg +0 -0
  436. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/imdb.svg +0 -0
  437. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/instagram.svg +0 -0
  438. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/intercom.svg +0 -0
  439. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/internet-explorer.svg +0 -0
  440. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/invision.svg +0 -0
  441. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/ioxhost.svg +0 -0
  442. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/itch-io.svg +0 -0
  443. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/itunes-note.svg +0 -0
  444. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/itunes.svg +0 -0
  445. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/java.svg +0 -0
  446. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/jedi-order.svg +0 -0
  447. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/jenkins.svg +0 -0
  448. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/jira.svg +0 -0
  449. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/joget.svg +0 -0
  450. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/joomla.svg +0 -0
  451. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/js-square.svg +0 -0
  452. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/js.svg +0 -0
  453. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/jsfiddle.svg +0 -0
  454. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/kaggle.svg +0 -0
  455. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/keybase.svg +0 -0
  456. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/keycdn.svg +0 -0
  457. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/kickstarter-k.svg +0 -0
  458. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/kickstarter.svg +0 -0
  459. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/korvue.svg +0 -0
  460. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/laravel.svg +0 -0
  461. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/lastfm-square.svg +0 -0
  462. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/lastfm.svg +0 -0
  463. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/leanpub.svg +0 -0
  464. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/less.svg +0 -0
  465. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/line.svg +0 -0
  466. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/linkedin-in.svg +0 -0
  467. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/linkedin.svg +0 -0
  468. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/linode.svg +0 -0
  469. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/linux.svg +0 -0
  470. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/lyft.svg +0 -0
  471. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/magento.svg +0 -0
  472. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/mailchimp.svg +0 -0
  473. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/mandalorian.svg +0 -0
  474. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/markdown.svg +0 -0
  475. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/mastodon.svg +0 -0
  476. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/maxcdn.svg +0 -0
  477. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/mdb.svg +0 -0
  478. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/medapps.svg +0 -0
  479. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/medium-m.svg +0 -0
  480. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/medium.svg +0 -0
  481. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/medrt.svg +0 -0
  482. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/meetup.svg +0 -0
  483. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/megaport.svg +0 -0
  484. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/mendeley.svg +0 -0
  485. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/microblog.svg +0 -0
  486. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/microsoft.svg +0 -0
  487. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/mix.svg +0 -0
  488. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/mixcloud.svg +0 -0
  489. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/mizuni.svg +0 -0
  490. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/modx.svg +0 -0
  491. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/monero.svg +0 -0
  492. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/napster.svg +0 -0
  493. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/neos.svg +0 -0
  494. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/nimblr.svg +0 -0
  495. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/node-js.svg +0 -0
  496. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/node.svg +0 -0
  497. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/npm.svg +0 -0
  498. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/ns8.svg +0 -0
  499. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/nutritionix.svg +0 -0
  500. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/odnoklassniki-square.svg +0 -0
  501. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/odnoklassniki.svg +0 -0
  502. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/old-republic.svg +0 -0
  503. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/opencart.svg +0 -0
  504. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/openid.svg +0 -0
  505. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/opera.svg +0 -0
  506. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/optin-monster.svg +0 -0
  507. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/orcid.svg +0 -0
  508. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/osi.svg +0 -0
  509. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/page4.svg +0 -0
  510. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/pagelines.svg +0 -0
  511. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/palfed.svg +0 -0
  512. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/patreon.svg +0 -0
  513. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/paypal.svg +0 -0
  514. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/penny-arcade.svg +0 -0
  515. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/periscope.svg +0 -0
  516. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/phabricator.svg +0 -0
  517. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/phoenix-framework.svg +0 -0
  518. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/phoenix-squadron.svg +0 -0
  519. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/php.svg +0 -0
  520. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/pied-piper-alt.svg +0 -0
  521. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/pied-piper-hat.svg +0 -0
  522. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/pied-piper-pp.svg +0 -0
  523. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/pied-piper-square.svg +0 -0
  524. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/pied-piper.svg +0 -0
  525. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/pinterest-p.svg +0 -0
  526. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/pinterest-square.svg +0 -0
  527. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/pinterest.svg +0 -0
  528. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/playstation.svg +0 -0
  529. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/product-hunt.svg +0 -0
  530. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/pushed.svg +0 -0
  531. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/python.svg +0 -0
  532. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/qq.svg +0 -0
  533. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/quinscape.svg +0 -0
  534. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/quora.svg +0 -0
  535. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/r-project.svg +0 -0
  536. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/raspberry-pi.svg +0 -0
  537. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/ravelry.svg +0 -0
  538. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/react.svg +0 -0
  539. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/reacteurope.svg +0 -0
  540. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/readme.svg +0 -0
  541. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/rebel.svg +0 -0
  542. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/red-river.svg +0 -0
  543. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/reddit-alien.svg +0 -0
  544. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/reddit-square.svg +0 -0
  545. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/reddit.svg +0 -0
  546. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/redhat.svg +0 -0
  547. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/renren.svg +0 -0
  548. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/replyd.svg +0 -0
  549. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/researchgate.svg +0 -0
  550. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/resolving.svg +0 -0
  551. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/rev.svg +0 -0
  552. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/rocketchat.svg +0 -0
  553. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/rockrms.svg +0 -0
  554. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/safari.svg +0 -0
  555. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/salesforce.svg +0 -0
  556. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/sass.svg +0 -0
  557. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/schlix.svg +0 -0
  558. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/scribd.svg +0 -0
  559. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/searchengin.svg +0 -0
  560. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/sellcast.svg +0 -0
  561. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/sellsy.svg +0 -0
  562. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/servicestack.svg +0 -0
  563. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/shirtsinbulk.svg +0 -0
  564. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/shopware.svg +0 -0
  565. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/simplybuilt.svg +0 -0
  566. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/sistrix.svg +0 -0
  567. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/sith.svg +0 -0
  568. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/sketch.svg +0 -0
  569. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/skyatlas.svg +0 -0
  570. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/skype.svg +0 -0
  571. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/slack-hash.svg +0 -0
  572. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/slack.svg +0 -0
  573. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/slideshare.svg +0 -0
  574. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/snapchat-ghost.svg +0 -0
  575. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/snapchat-square.svg +0 -0
  576. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/snapchat.svg +0 -0
  577. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/soundcloud.svg +0 -0
  578. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/sourcetree.svg +0 -0
  579. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/speakap.svg +0 -0
  580. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/speaker-deck.svg +0 -0
  581. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/spotify.svg +0 -0
  582. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/squarespace.svg +0 -0
  583. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/stack-exchange.svg +0 -0
  584. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/stack-overflow.svg +0 -0
  585. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/stackpath.svg +0 -0
  586. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/staylinked.svg +0 -0
  587. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/steam-square.svg +0 -0
  588. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/steam-symbol.svg +0 -0
  589. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/steam.svg +0 -0
  590. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/sticker-mule.svg +0 -0
  591. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/strava.svg +0 -0
  592. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/stripe-s.svg +0 -0
  593. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/stripe.svg +0 -0
  594. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/studiovinari.svg +0 -0
  595. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/stumbleupon-circle.svg +0 -0
  596. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/stumbleupon.svg +0 -0
  597. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/superpowers.svg +0 -0
  598. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/supple.svg +0 -0
  599. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/suse.svg +0 -0
  600. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/swift.svg +0 -0
  601. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/symfony.svg +0 -0
  602. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/teamspeak.svg +0 -0
  603. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/telegram-plane.svg +0 -0
  604. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/telegram.svg +0 -0
  605. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/tencent-weibo.svg +0 -0
  606. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/the-red-yeti.svg +0 -0
  607. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/themeco.svg +0 -0
  608. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/themeisle.svg +0 -0
  609. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/think-peaks.svg +0 -0
  610. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/trade-federation.svg +0 -0
  611. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/trello.svg +0 -0
  612. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/tripadvisor.svg +0 -0
  613. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/tumblr-square.svg +0 -0
  614. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/tumblr.svg +0 -0
  615. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/twitch.svg +0 -0
  616. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/twitter-square.svg +0 -0
  617. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/twitter.svg +0 -0
  618. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/typo3.svg +0 -0
  619. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/uber.svg +0 -0
  620. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/ubuntu.svg +0 -0
  621. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/uikit.svg +0 -0
  622. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/umbraco.svg +0 -0
  623. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/uniregistry.svg +0 -0
  624. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/unity.svg +0 -0
  625. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/untappd.svg +0 -0
  626. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/ups.svg +0 -0
  627. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/usb.svg +0 -0
  628. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/usps.svg +0 -0
  629. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/ussunnah.svg +0 -0
  630. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/vaadin.svg +0 -0
  631. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/viacoin.svg +0 -0
  632. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/viadeo-square.svg +0 -0
  633. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/viadeo.svg +0 -0
  634. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/viber.svg +0 -0
  635. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/vimeo-square.svg +0 -0
  636. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/vimeo-v.svg +0 -0
  637. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/vimeo.svg +0 -0
  638. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/vine.svg +0 -0
  639. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/vk.svg +0 -0
  640. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/vnv.svg +0 -0
  641. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/vuejs.svg +0 -0
  642. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/waze.svg +0 -0
  643. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/weebly.svg +0 -0
  644. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/weibo.svg +0 -0
  645. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/weixin.svg +0 -0
  646. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/whatsapp-square.svg +0 -0
  647. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/whatsapp.svg +0 -0
  648. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/whmcs.svg +0 -0
  649. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/wikipedia-w.svg +0 -0
  650. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/windows.svg +0 -0
  651. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/wix.svg +0 -0
  652. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/wizards-of-the-coast.svg +0 -0
  653. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/wolf-pack-battalion.svg +0 -0
  654. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/wordpress-simple.svg +0 -0
  655. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/wordpress.svg +0 -0
  656. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/wpbeginner.svg +0 -0
  657. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/wpexplorer.svg +0 -0
  658. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/wpforms.svg +0 -0
  659. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/wpressr.svg +0 -0
  660. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/xbox.svg +0 -0
  661. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/xing-square.svg +0 -0
  662. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/xing.svg +0 -0
  663. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/y-combinator.svg +0 -0
  664. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/yahoo.svg +0 -0
  665. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/yammer.svg +0 -0
  666. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/yandex-international.svg +0 -0
  667. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/yandex.svg +0 -0
  668. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/yarn.svg +0 -0
  669. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/yelp.svg +0 -0
  670. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/yoast.svg +0 -0
  671. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/youtube-square.svg +0 -0
  672. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/youtube.svg +0 -0
  673. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/brands/zhihu.svg +0 -0
  674. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/address-book.svg +0 -0
  675. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/address-card.svg +0 -0
  676. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/angry.svg +0 -0
  677. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/arrow-alt-circle-down.svg +0 -0
  678. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/arrow-alt-circle-left.svg +0 -0
  679. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/arrow-alt-circle-right.svg +0 -0
  680. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/arrow-alt-circle-up.svg +0 -0
  681. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/bell-slash.svg +0 -0
  682. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/bell.svg +0 -0
  683. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/bookmark.svg +0 -0
  684. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/building.svg +0 -0
  685. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/calendar-alt.svg +0 -0
  686. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/calendar-check.svg +0 -0
  687. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/calendar-minus.svg +0 -0
  688. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/calendar-plus.svg +0 -0
  689. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/calendar-times.svg +0 -0
  690. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/calendar.svg +0 -0
  691. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/caret-square-down.svg +0 -0
  692. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/caret-square-left.svg +0 -0
  693. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/caret-square-right.svg +0 -0
  694. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/caret-square-up.svg +0 -0
  695. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/chart-bar.svg +0 -0
  696. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/check-circle.svg +0 -0
  697. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/check-square.svg +0 -0
  698. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/circle.svg +0 -0
  699. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/clipboard.svg +0 -0
  700. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/clock.svg +0 -0
  701. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/clone.svg +0 -0
  702. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/closed-captioning.svg +0 -0
  703. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/comment-alt.svg +0 -0
  704. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/comment-dots.svg +0 -0
  705. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/comment.svg +0 -0
  706. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/comments.svg +0 -0
  707. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/compass.svg +0 -0
  708. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/copy.svg +0 -0
  709. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/copyright.svg +0 -0
  710. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/credit-card.svg +0 -0
  711. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/dizzy.svg +0 -0
  712. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/dot-circle.svg +0 -0
  713. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/edit.svg +0 -0
  714. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/envelope-open.svg +0 -0
  715. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/envelope.svg +0 -0
  716. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/eye-slash.svg +0 -0
  717. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/eye.svg +0 -0
  718. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/file-alt.svg +0 -0
  719. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/file-archive.svg +0 -0
  720. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/file-audio.svg +0 -0
  721. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/file-code.svg +0 -0
  722. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/file-excel.svg +0 -0
  723. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/file-image.svg +0 -0
  724. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/file-pdf.svg +0 -0
  725. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/file-powerpoint.svg +0 -0
  726. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/file-video.svg +0 -0
  727. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/file-word.svg +0 -0
  728. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/file.svg +0 -0
  729. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/flag.svg +0 -0
  730. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/flushed.svg +0 -0
  731. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/folder-open.svg +0 -0
  732. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/folder.svg +0 -0
  733. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/font-awesome-logo-full.svg +0 -0
  734. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/frown-open.svg +0 -0
  735. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/frown.svg +0 -0
  736. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/futbol.svg +0 -0
  737. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/gem.svg +0 -0
  738. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/grimace.svg +0 -0
  739. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/grin-alt.svg +0 -0
  740. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/grin-beam-sweat.svg +0 -0
  741. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/grin-beam.svg +0 -0
  742. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/grin-hearts.svg +0 -0
  743. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/grin-squint-tears.svg +0 -0
  744. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/grin-squint.svg +0 -0
  745. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/grin-stars.svg +0 -0
  746. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/grin-tears.svg +0 -0
  747. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/grin-tongue-squint.svg +0 -0
  748. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/grin-tongue-wink.svg +0 -0
  749. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/grin-tongue.svg +0 -0
  750. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/grin-wink.svg +0 -0
  751. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/grin.svg +0 -0
  752. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/hand-lizard.svg +0 -0
  753. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/hand-paper.svg +0 -0
  754. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/hand-peace.svg +0 -0
  755. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/hand-point-down.svg +0 -0
  756. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/hand-point-left.svg +0 -0
  757. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/hand-point-right.svg +0 -0
  758. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/hand-point-up.svg +0 -0
  759. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/hand-pointer.svg +0 -0
  760. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/hand-rock.svg +0 -0
  761. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/hand-scissors.svg +0 -0
  762. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/hand-spock.svg +0 -0
  763. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/handshake.svg +0 -0
  764. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/hdd.svg +0 -0
  765. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/heart.svg +0 -0
  766. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/hospital.svg +0 -0
  767. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/hourglass.svg +0 -0
  768. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/id-badge.svg +0 -0
  769. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/id-card.svg +0 -0
  770. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/image.svg +0 -0
  771. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/images.svg +0 -0
  772. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/keyboard.svg +0 -0
  773. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/kiss-beam.svg +0 -0
  774. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/kiss-wink-heart.svg +0 -0
  775. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/kiss.svg +0 -0
  776. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/laugh-beam.svg +0 -0
  777. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/laugh-squint.svg +0 -0
  778. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/laugh-wink.svg +0 -0
  779. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/laugh.svg +0 -0
  780. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/lemon.svg +0 -0
  781. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/life-ring.svg +0 -0
  782. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/lightbulb.svg +0 -0
  783. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/list-alt.svg +0 -0
  784. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/map.svg +0 -0
  785. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/meh-blank.svg +0 -0
  786. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/meh-rolling-eyes.svg +0 -0
  787. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/meh.svg +0 -0
  788. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/minus-square.svg +0 -0
  789. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/money-bill-alt.svg +0 -0
  790. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/moon.svg +0 -0
  791. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/newspaper.svg +0 -0
  792. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/object-group.svg +0 -0
  793. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/object-ungroup.svg +0 -0
  794. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/paper-plane.svg +0 -0
  795. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/pause-circle.svg +0 -0
  796. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/play-circle.svg +0 -0
  797. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/plus-square.svg +0 -0
  798. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/question-circle.svg +0 -0
  799. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/registered.svg +0 -0
  800. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/sad-cry.svg +0 -0
  801. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/sad-tear.svg +0 -0
  802. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/save.svg +0 -0
  803. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/share-square.svg +0 -0
  804. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/smile-beam.svg +0 -0
  805. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/smile-wink.svg +0 -0
  806. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/smile.svg +0 -0
  807. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/snowflake.svg +0 -0
  808. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/square.svg +0 -0
  809. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/star-half.svg +0 -0
  810. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/star.svg +0 -0
  811. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/sticky-note.svg +0 -0
  812. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/stop-circle.svg +0 -0
  813. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/sun.svg +0 -0
  814. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/surprise.svg +0 -0
  815. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/thumbs-down.svg +0 -0
  816. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/thumbs-up.svg +0 -0
  817. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/times-circle.svg +0 -0
  818. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/tired.svg +0 -0
  819. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/trash-alt.svg +0 -0
  820. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/user-circle.svg +0 -0
  821. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/user.svg +0 -0
  822. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/window-close.svg +0 -0
  823. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/window-maximize.svg +0 -0
  824. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/window-minimize.svg +0 -0
  825. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/regular/window-restore.svg +0 -0
  826. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/ad.svg +0 -0
  827. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/address-book.svg +0 -0
  828. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/address-card.svg +0 -0
  829. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/adjust.svg +0 -0
  830. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/air-freshener.svg +0 -0
  831. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/align-center.svg +0 -0
  832. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/align-justify.svg +0 -0
  833. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/align-left.svg +0 -0
  834. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/align-right.svg +0 -0
  835. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/allergies.svg +0 -0
  836. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/ambulance.svg +0 -0
  837. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/american-sign-language-interpreting.svg +0 -0
  838. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/anchor.svg +0 -0
  839. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/angle-double-down.svg +0 -0
  840. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/angle-double-left.svg +0 -0
  841. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/angle-double-right.svg +0 -0
  842. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/angle-double-up.svg +0 -0
  843. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/angle-down.svg +0 -0
  844. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/angle-left.svg +0 -0
  845. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/angle-right.svg +0 -0
  846. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/angle-up.svg +0 -0
  847. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/angry.svg +0 -0
  848. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/ankh.svg +0 -0
  849. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/apple-alt.svg +0 -0
  850. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/archive.svg +0 -0
  851. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/archway.svg +0 -0
  852. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/arrow-alt-circle-down.svg +0 -0
  853. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/arrow-alt-circle-left.svg +0 -0
  854. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/arrow-alt-circle-right.svg +0 -0
  855. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/arrow-alt-circle-up.svg +0 -0
  856. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/arrow-circle-down.svg +0 -0
  857. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/arrow-circle-left.svg +0 -0
  858. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/arrow-circle-right.svg +0 -0
  859. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/arrow-circle-up.svg +0 -0
  860. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/arrow-down.svg +0 -0
  861. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/arrow-left.svg +0 -0
  862. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/arrow-right.svg +0 -0
  863. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/arrow-up.svg +0 -0
  864. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/arrows-alt-h.svg +0 -0
  865. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/arrows-alt-v.svg +0 -0
  866. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/arrows-alt.svg +0 -0
  867. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/assistive-listening-systems.svg +0 -0
  868. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/asterisk.svg +0 -0
  869. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/at.svg +0 -0
  870. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/atlas.svg +0 -0
  871. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/atom.svg +0 -0
  872. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/audio-description.svg +0 -0
  873. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/award.svg +0 -0
  874. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/baby-carriage.svg +0 -0
  875. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/baby.svg +0 -0
  876. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/backspace.svg +0 -0
  877. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/backward.svg +0 -0
  878. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/bacon.svg +0 -0
  879. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/bahai.svg +0 -0
  880. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/balance-scale-left.svg +0 -0
  881. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/balance-scale-right.svg +0 -0
  882. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/balance-scale.svg +0 -0
  883. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/ban.svg +0 -0
  884. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/band-aid.svg +0 -0
  885. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/barcode.svg +0 -0
  886. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/bars.svg +0 -0
  887. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/baseball-ball.svg +0 -0
  888. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/basketball-ball.svg +0 -0
  889. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/bath.svg +0 -0
  890. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/battery-empty.svg +0 -0
  891. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/battery-full.svg +0 -0
  892. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/battery-half.svg +0 -0
  893. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/battery-quarter.svg +0 -0
  894. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/battery-three-quarters.svg +0 -0
  895. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/bed.svg +0 -0
  896. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/beer.svg +0 -0
  897. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/bell-slash.svg +0 -0
  898. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/bell.svg +0 -0
  899. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/bezier-curve.svg +0 -0
  900. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/bible.svg +0 -0
  901. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/bicycle.svg +0 -0
  902. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/biking.svg +0 -0
  903. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/binoculars.svg +0 -0
  904. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/biohazard.svg +0 -0
  905. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/birthday-cake.svg +0 -0
  906. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/blender-phone.svg +0 -0
  907. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/blender.svg +0 -0
  908. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/blind.svg +0 -0
  909. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/blog.svg +0 -0
  910. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/bold.svg +0 -0
  911. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/bolt.svg +0 -0
  912. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/bomb.svg +0 -0
  913. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/bone.svg +0 -0
  914. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/bong.svg +0 -0
  915. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/book-dead.svg +0 -0
  916. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/book-medical.svg +0 -0
  917. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/book-open.svg +0 -0
  918. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/book-reader.svg +0 -0
  919. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/book.svg +0 -0
  920. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/bookmark.svg +0 -0
  921. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/border-all.svg +0 -0
  922. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/border-none.svg +0 -0
  923. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/border-style.svg +0 -0
  924. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/bowling-ball.svg +0 -0
  925. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/box-open.svg +0 -0
  926. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/box.svg +0 -0
  927. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/boxes.svg +0 -0
  928. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/braille.svg +0 -0
  929. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/brain.svg +0 -0
  930. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/bread-slice.svg +0 -0
  931. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/briefcase-medical.svg +0 -0
  932. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/briefcase.svg +0 -0
  933. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/broadcast-tower.svg +0 -0
  934. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/broom.svg +0 -0
  935. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/brush.svg +0 -0
  936. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/bug.svg +0 -0
  937. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/building.svg +0 -0
  938. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/bullhorn.svg +0 -0
  939. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/bullseye.svg +0 -0
  940. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/burn.svg +0 -0
  941. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/bus-alt.svg +0 -0
  942. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/bus.svg +0 -0
  943. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/business-time.svg +0 -0
  944. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/calculator.svg +0 -0
  945. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/calendar-alt.svg +0 -0
  946. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/calendar-check.svg +0 -0
  947. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/calendar-day.svg +0 -0
  948. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/calendar-minus.svg +0 -0
  949. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/calendar-plus.svg +0 -0
  950. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/calendar-times.svg +0 -0
  951. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/calendar-week.svg +0 -0
  952. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/calendar.svg +0 -0
  953. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/camera-retro.svg +0 -0
  954. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/camera.svg +0 -0
  955. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/campground.svg +0 -0
  956. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/candy-cane.svg +0 -0
  957. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cannabis.svg +0 -0
  958. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/capsules.svg +0 -0
  959. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/car-alt.svg +0 -0
  960. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/car-battery.svg +0 -0
  961. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/car-crash.svg +0 -0
  962. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/car-side.svg +0 -0
  963. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/car.svg +0 -0
  964. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/caravan.svg +0 -0
  965. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/caret-down.svg +0 -0
  966. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/caret-left.svg +0 -0
  967. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/caret-right.svg +0 -0
  968. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/caret-square-down.svg +0 -0
  969. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/caret-square-left.svg +0 -0
  970. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/caret-square-right.svg +0 -0
  971. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/caret-square-up.svg +0 -0
  972. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/caret-up.svg +0 -0
  973. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/carrot.svg +0 -0
  974. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cart-arrow-down.svg +0 -0
  975. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cart-plus.svg +0 -0
  976. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cash-register.svg +0 -0
  977. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cat.svg +0 -0
  978. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/certificate.svg +0 -0
  979. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/chair.svg +0 -0
  980. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/chalkboard-teacher.svg +0 -0
  981. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/chalkboard.svg +0 -0
  982. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/charging-station.svg +0 -0
  983. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/chart-area.svg +0 -0
  984. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/chart-bar.svg +0 -0
  985. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/chart-line.svg +0 -0
  986. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/chart-pie.svg +0 -0
  987. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/check-circle.svg +0 -0
  988. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/check-double.svg +0 -0
  989. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/check-square.svg +0 -0
  990. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/check.svg +0 -0
  991. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cheese.svg +0 -0
  992. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/chess-bishop.svg +0 -0
  993. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/chess-board.svg +0 -0
  994. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/chess-king.svg +0 -0
  995. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/chess-knight.svg +0 -0
  996. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/chess-pawn.svg +0 -0
  997. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/chess-queen.svg +0 -0
  998. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/chess-rook.svg +0 -0
  999. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/chess.svg +0 -0
  1000. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/chevron-circle-down.svg +0 -0
  1001. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/chevron-circle-left.svg +0 -0
  1002. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/chevron-circle-right.svg +0 -0
  1003. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/chevron-circle-up.svg +0 -0
  1004. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/chevron-down.svg +0 -0
  1005. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/chevron-left.svg +0 -0
  1006. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/chevron-right.svg +0 -0
  1007. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/chevron-up.svg +0 -0
  1008. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/child.svg +0 -0
  1009. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/church.svg +0 -0
  1010. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/circle-notch.svg +0 -0
  1011. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/circle.svg +0 -0
  1012. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/city.svg +0 -0
  1013. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/clinic-medical.svg +0 -0
  1014. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/clipboard-check.svg +0 -0
  1015. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/clipboard-list.svg +0 -0
  1016. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/clipboard.svg +0 -0
  1017. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/clock.svg +0 -0
  1018. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/clone.svg +0 -0
  1019. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/closed-captioning.svg +0 -0
  1020. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cloud-download-alt.svg +0 -0
  1021. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cloud-meatball.svg +0 -0
  1022. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cloud-moon-rain.svg +0 -0
  1023. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cloud-moon.svg +0 -0
  1024. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cloud-rain.svg +0 -0
  1025. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cloud-showers-heavy.svg +0 -0
  1026. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cloud-sun-rain.svg +0 -0
  1027. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cloud-sun.svg +0 -0
  1028. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cloud-upload-alt.svg +0 -0
  1029. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cloud.svg +0 -0
  1030. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cocktail.svg +0 -0
  1031. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/code-branch.svg +0 -0
  1032. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/code.svg +0 -0
  1033. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/coffee.svg +0 -0
  1034. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cog.svg +0 -0
  1035. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cogs.svg +0 -0
  1036. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/coins.svg +0 -0
  1037. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/columns.svg +0 -0
  1038. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/comment-alt.svg +0 -0
  1039. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/comment-dollar.svg +0 -0
  1040. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/comment-dots.svg +0 -0
  1041. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/comment-medical.svg +0 -0
  1042. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/comment-slash.svg +0 -0
  1043. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/comment.svg +0 -0
  1044. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/comments-dollar.svg +0 -0
  1045. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/comments.svg +0 -0
  1046. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/compact-disc.svg +0 -0
  1047. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/compass.svg +0 -0
  1048. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/compress-alt.svg +0 -0
  1049. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/compress-arrows-alt.svg +0 -0
  1050. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/compress.svg +0 -0
  1051. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/concierge-bell.svg +0 -0
  1052. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cookie-bite.svg +0 -0
  1053. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cookie.svg +0 -0
  1054. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/copy.svg +0 -0
  1055. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/copyright.svg +0 -0
  1056. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/couch.svg +0 -0
  1057. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/credit-card.svg +0 -0
  1058. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/crop-alt.svg +0 -0
  1059. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/crop.svg +0 -0
  1060. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cross.svg +0 -0
  1061. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/crosshairs.svg +0 -0
  1062. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/crow.svg +0 -0
  1063. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/crown.svg +0 -0
  1064. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/crutch.svg +0 -0
  1065. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cube.svg +0 -0
  1066. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cubes.svg +0 -0
  1067. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/cut.svg +0 -0
  1068. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/database.svg +0 -0
  1069. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/deaf.svg +0 -0
  1070. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/democrat.svg +0 -0
  1071. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/desktop.svg +0 -0
  1072. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/dharmachakra.svg +0 -0
  1073. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/diagnoses.svg +0 -0
  1074. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/dice-d20.svg +0 -0
  1075. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/dice-d6.svg +0 -0
  1076. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/dice-five.svg +0 -0
  1077. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/dice-four.svg +0 -0
  1078. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/dice-one.svg +0 -0
  1079. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/dice-six.svg +0 -0
  1080. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/dice-three.svg +0 -0
  1081. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/dice-two.svg +0 -0
  1082. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/dice.svg +0 -0
  1083. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/digital-tachograph.svg +0 -0
  1084. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/directions.svg +0 -0
  1085. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/divide.svg +0 -0
  1086. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/dizzy.svg +0 -0
  1087. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/dna.svg +0 -0
  1088. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/dog.svg +0 -0
  1089. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/dollar-sign.svg +0 -0
  1090. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/dolly-flatbed.svg +0 -0
  1091. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/dolly.svg +0 -0
  1092. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/donate.svg +0 -0
  1093. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/door-closed.svg +0 -0
  1094. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/door-open.svg +0 -0
  1095. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/dot-circle.svg +0 -0
  1096. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/dove.svg +0 -0
  1097. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/download.svg +0 -0
  1098. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/drafting-compass.svg +0 -0
  1099. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/dragon.svg +0 -0
  1100. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/draw-polygon.svg +0 -0
  1101. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/drum-steelpan.svg +0 -0
  1102. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/drum.svg +0 -0
  1103. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/drumstick-bite.svg +0 -0
  1104. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/dumbbell.svg +0 -0
  1105. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/dumpster-fire.svg +0 -0
  1106. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/dumpster.svg +0 -0
  1107. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/dungeon.svg +0 -0
  1108. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/edit.svg +0 -0
  1109. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/egg.svg +0 -0
  1110. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/eject.svg +0 -0
  1111. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/ellipsis-h.svg +0 -0
  1112. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/ellipsis-v.svg +0 -0
  1113. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/envelope-open-text.svg +0 -0
  1114. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/envelope-open.svg +0 -0
  1115. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/envelope-square.svg +0 -0
  1116. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/envelope.svg +0 -0
  1117. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/equals.svg +0 -0
  1118. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/eraser.svg +0 -0
  1119. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/ethernet.svg +0 -0
  1120. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/euro-sign.svg +0 -0
  1121. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/exchange-alt.svg +0 -0
  1122. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/exclamation-circle.svg +0 -0
  1123. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/exclamation-triangle.svg +0 -0
  1124. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/exclamation.svg +0 -0
  1125. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/expand-alt.svg +0 -0
  1126. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/expand-arrows-alt.svg +0 -0
  1127. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/expand.svg +0 -0
  1128. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/external-link-alt.svg +0 -0
  1129. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/external-link-square-alt.svg +0 -0
  1130. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/eye-dropper.svg +0 -0
  1131. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/eye-slash.svg +0 -0
  1132. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/eye.svg +0 -0
  1133. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/fan.svg +0 -0
  1134. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/fast-backward.svg +0 -0
  1135. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/fast-forward.svg +0 -0
  1136. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/fax.svg +0 -0
  1137. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/feather-alt.svg +0 -0
  1138. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/feather.svg +0 -0
  1139. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/female.svg +0 -0
  1140. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/fighter-jet.svg +0 -0
  1141. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/file-alt.svg +0 -0
  1142. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/file-archive.svg +0 -0
  1143. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/file-audio.svg +0 -0
  1144. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/file-code.svg +0 -0
  1145. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/file-contract.svg +0 -0
  1146. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/file-csv.svg +0 -0
  1147. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/file-download.svg +0 -0
  1148. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/file-excel.svg +0 -0
  1149. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/file-export.svg +0 -0
  1150. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/file-image.svg +0 -0
  1151. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/file-import.svg +0 -0
  1152. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/file-invoice-dollar.svg +0 -0
  1153. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/file-invoice.svg +0 -0
  1154. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/file-medical-alt.svg +0 -0
  1155. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/file-medical.svg +0 -0
  1156. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/file-pdf.svg +0 -0
  1157. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/file-powerpoint.svg +0 -0
  1158. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/file-prescription.svg +0 -0
  1159. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/file-signature.svg +0 -0
  1160. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/file-upload.svg +0 -0
  1161. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/file-video.svg +0 -0
  1162. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/file-word.svg +0 -0
  1163. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/file.svg +0 -0
  1164. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/fill-drip.svg +0 -0
  1165. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/fill.svg +0 -0
  1166. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/film.svg +0 -0
  1167. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/filter.svg +0 -0
  1168. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/fingerprint.svg +0 -0
  1169. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/fire-alt.svg +0 -0
  1170. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/fire-extinguisher.svg +0 -0
  1171. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/fire.svg +0 -0
  1172. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/first-aid.svg +0 -0
  1173. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/fish.svg +0 -0
  1174. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/fist-raised.svg +0 -0
  1175. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/flag-checkered.svg +0 -0
  1176. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/flag-usa.svg +0 -0
  1177. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/flag.svg +0 -0
  1178. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/flask.svg +0 -0
  1179. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/flushed.svg +0 -0
  1180. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/folder-minus.svg +0 -0
  1181. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/folder-open.svg +0 -0
  1182. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/folder-plus.svg +0 -0
  1183. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/folder.svg +0 -0
  1184. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/font-awesome-logo-full.svg +0 -0
  1185. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/font.svg +0 -0
  1186. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/football-ball.svg +0 -0
  1187. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/forward.svg +0 -0
  1188. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/frog.svg +0 -0
  1189. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/frown-open.svg +0 -0
  1190. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/frown.svg +0 -0
  1191. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/funnel-dollar.svg +0 -0
  1192. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/futbol.svg +0 -0
  1193. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/gamepad.svg +0 -0
  1194. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/gas-pump.svg +0 -0
  1195. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/gavel.svg +0 -0
  1196. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/gem.svg +0 -0
  1197. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/genderless.svg +0 -0
  1198. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/ghost.svg +0 -0
  1199. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/gift.svg +0 -0
  1200. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/gifts.svg +0 -0
  1201. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/glass-cheers.svg +0 -0
  1202. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/glass-martini-alt.svg +0 -0
  1203. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/glass-martini.svg +0 -0
  1204. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/glass-whiskey.svg +0 -0
  1205. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/glasses.svg +0 -0
  1206. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/globe-africa.svg +0 -0
  1207. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/globe-americas.svg +0 -0
  1208. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/globe-asia.svg +0 -0
  1209. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/globe-europe.svg +0 -0
  1210. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/globe.svg +0 -0
  1211. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/golf-ball.svg +0 -0
  1212. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/gopuram.svg +0 -0
  1213. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/graduation-cap.svg +0 -0
  1214. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/greater-than-equal.svg +0 -0
  1215. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/greater-than.svg +0 -0
  1216. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/grimace.svg +0 -0
  1217. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/grin-alt.svg +0 -0
  1218. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/grin-beam-sweat.svg +0 -0
  1219. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/grin-beam.svg +0 -0
  1220. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/grin-hearts.svg +0 -0
  1221. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/grin-squint-tears.svg +0 -0
  1222. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/grin-squint.svg +0 -0
  1223. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/grin-stars.svg +0 -0
  1224. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/grin-tears.svg +0 -0
  1225. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/grin-tongue-squint.svg +0 -0
  1226. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/grin-tongue-wink.svg +0 -0
  1227. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/grin-tongue.svg +0 -0
  1228. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/grin-wink.svg +0 -0
  1229. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/grin.svg +0 -0
  1230. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/grip-horizontal.svg +0 -0
  1231. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/grip-lines-vertical.svg +0 -0
  1232. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/grip-lines.svg +0 -0
  1233. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/grip-vertical.svg +0 -0
  1234. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/guitar.svg +0 -0
  1235. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/h-square.svg +0 -0
  1236. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hamburger.svg +0 -0
  1237. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hammer.svg +0 -0
  1238. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hamsa.svg +0 -0
  1239. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hand-holding-heart.svg +0 -0
  1240. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hand-holding-usd.svg +0 -0
  1241. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hand-holding.svg +0 -0
  1242. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hand-lizard.svg +0 -0
  1243. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hand-middle-finger.svg +0 -0
  1244. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hand-paper.svg +0 -0
  1245. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hand-peace.svg +0 -0
  1246. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hand-point-down.svg +0 -0
  1247. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hand-point-left.svg +0 -0
  1248. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hand-point-right.svg +0 -0
  1249. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hand-point-up.svg +0 -0
  1250. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hand-pointer.svg +0 -0
  1251. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hand-rock.svg +0 -0
  1252. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hand-scissors.svg +0 -0
  1253. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hand-spock.svg +0 -0
  1254. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hands-helping.svg +0 -0
  1255. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hands.svg +0 -0
  1256. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/handshake.svg +0 -0
  1257. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hanukiah.svg +0 -0
  1258. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hard-hat.svg +0 -0
  1259. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hashtag.svg +0 -0
  1260. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hat-cowboy-side.svg +0 -0
  1261. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hat-cowboy.svg +0 -0
  1262. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hat-wizard.svg +0 -0
  1263. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hdd.svg +0 -0
  1264. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/heading.svg +0 -0
  1265. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/headphones-alt.svg +0 -0
  1266. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/headphones.svg +0 -0
  1267. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/headset.svg +0 -0
  1268. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/heart-broken.svg +0 -0
  1269. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/heart.svg +0 -0
  1270. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/heartbeat.svg +0 -0
  1271. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/helicopter.svg +0 -0
  1272. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/highlighter.svg +0 -0
  1273. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hiking.svg +0 -0
  1274. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hippo.svg +0 -0
  1275. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/history.svg +0 -0
  1276. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hockey-puck.svg +0 -0
  1277. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/holly-berry.svg +0 -0
  1278. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/home.svg +0 -0
  1279. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/horse-head.svg +0 -0
  1280. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/horse.svg +0 -0
  1281. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hospital-alt.svg +0 -0
  1282. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hospital-symbol.svg +0 -0
  1283. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hospital.svg +0 -0
  1284. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hot-tub.svg +0 -0
  1285. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hotdog.svg +0 -0
  1286. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hotel.svg +0 -0
  1287. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hourglass-end.svg +0 -0
  1288. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hourglass-half.svg +0 -0
  1289. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hourglass-start.svg +0 -0
  1290. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hourglass.svg +0 -0
  1291. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/house-damage.svg +0 -0
  1292. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/hryvnia.svg +0 -0
  1293. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/i-cursor.svg +0 -0
  1294. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/ice-cream.svg +0 -0
  1295. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/icicles.svg +0 -0
  1296. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/icons.svg +0 -0
  1297. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/id-badge.svg +0 -0
  1298. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/id-card-alt.svg +0 -0
  1299. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/id-card.svg +0 -0
  1300. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/igloo.svg +0 -0
  1301. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/image.svg +0 -0
  1302. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/images.svg +0 -0
  1303. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/inbox.svg +0 -0
  1304. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/indent.svg +0 -0
  1305. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/industry.svg +0 -0
  1306. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/infinity.svg +0 -0
  1307. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/info-circle.svg +0 -0
  1308. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/info.svg +0 -0
  1309. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/italic.svg +0 -0
  1310. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/jedi.svg +0 -0
  1311. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/joint.svg +0 -0
  1312. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/journal-whills.svg +0 -0
  1313. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/kaaba.svg +0 -0
  1314. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/key.svg +0 -0
  1315. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/keyboard.svg +0 -0
  1316. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/khanda.svg +0 -0
  1317. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/kiss-beam.svg +0 -0
  1318. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/kiss-wink-heart.svg +0 -0
  1319. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/kiss.svg +0 -0
  1320. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/kiwi-bird.svg +0 -0
  1321. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/landmark.svg +0 -0
  1322. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/language.svg +0 -0
  1323. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/laptop-code.svg +0 -0
  1324. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/laptop-medical.svg +0 -0
  1325. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/laptop.svg +0 -0
  1326. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/laugh-beam.svg +0 -0
  1327. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/laugh-squint.svg +0 -0
  1328. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/laugh-wink.svg +0 -0
  1329. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/laugh.svg +0 -0
  1330. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/layer-group.svg +0 -0
  1331. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/leaf.svg +0 -0
  1332. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/lemon.svg +0 -0
  1333. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/less-than-equal.svg +0 -0
  1334. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/less-than.svg +0 -0
  1335. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/level-down-alt.svg +0 -0
  1336. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/level-up-alt.svg +0 -0
  1337. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/life-ring.svg +0 -0
  1338. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/lightbulb.svg +0 -0
  1339. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/link.svg +0 -0
  1340. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/lira-sign.svg +0 -0
  1341. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/list-alt.svg +0 -0
  1342. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/list-ol.svg +0 -0
  1343. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/list-ul.svg +0 -0
  1344. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/list.svg +0 -0
  1345. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/location-arrow.svg +0 -0
  1346. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/lock-open.svg +0 -0
  1347. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/lock.svg +0 -0
  1348. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/long-arrow-alt-down.svg +0 -0
  1349. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/long-arrow-alt-left.svg +0 -0
  1350. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/long-arrow-alt-right.svg +0 -0
  1351. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/long-arrow-alt-up.svg +0 -0
  1352. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/low-vision.svg +0 -0
  1353. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/luggage-cart.svg +0 -0
  1354. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/magic.svg +0 -0
  1355. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/magnet.svg +0 -0
  1356. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/mail-bulk.svg +0 -0
  1357. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/male.svg +0 -0
  1358. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/map-marked-alt.svg +0 -0
  1359. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/map-marked.svg +0 -0
  1360. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/map-marker-alt.svg +0 -0
  1361. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/map-marker.svg +0 -0
  1362. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/map-pin.svg +0 -0
  1363. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/map-signs.svg +0 -0
  1364. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/map.svg +0 -0
  1365. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/marker.svg +0 -0
  1366. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/mars-double.svg +0 -0
  1367. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/mars-stroke-h.svg +0 -0
  1368. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/mars-stroke-v.svg +0 -0
  1369. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/mars-stroke.svg +0 -0
  1370. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/mars.svg +0 -0
  1371. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/mask.svg +0 -0
  1372. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/medal.svg +0 -0
  1373. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/medkit.svg +0 -0
  1374. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/meh-blank.svg +0 -0
  1375. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/meh-rolling-eyes.svg +0 -0
  1376. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/meh.svg +0 -0
  1377. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/memory.svg +0 -0
  1378. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/menorah.svg +0 -0
  1379. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/mercury.svg +0 -0
  1380. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/meteor.svg +0 -0
  1381. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/microchip.svg +0 -0
  1382. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/microphone-alt-slash.svg +0 -0
  1383. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/microphone-alt.svg +0 -0
  1384. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/microphone-slash.svg +0 -0
  1385. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/microphone.svg +0 -0
  1386. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/microscope.svg +0 -0
  1387. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/minus-circle.svg +0 -0
  1388. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/minus-square.svg +0 -0
  1389. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/minus.svg +0 -0
  1390. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/mitten.svg +0 -0
  1391. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/mobile-alt.svg +0 -0
  1392. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/mobile.svg +0 -0
  1393. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/money-bill-alt.svg +0 -0
  1394. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/money-bill-wave-alt.svg +0 -0
  1395. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/money-bill-wave.svg +0 -0
  1396. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/money-bill.svg +0 -0
  1397. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/money-check-alt.svg +0 -0
  1398. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/money-check.svg +0 -0
  1399. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/monument.svg +0 -0
  1400. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/moon.svg +0 -0
  1401. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/mortar-pestle.svg +0 -0
  1402. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/mosque.svg +0 -0
  1403. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/motorcycle.svg +0 -0
  1404. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/mountain.svg +0 -0
  1405. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/mouse-pointer.svg +0 -0
  1406. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/mouse.svg +0 -0
  1407. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/mug-hot.svg +0 -0
  1408. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/music.svg +0 -0
  1409. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/network-wired.svg +0 -0
  1410. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/neuter.svg +0 -0
  1411. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/newspaper.svg +0 -0
  1412. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/not-equal.svg +0 -0
  1413. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/notes-medical.svg +0 -0
  1414. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/object-group.svg +0 -0
  1415. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/object-ungroup.svg +0 -0
  1416. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/oil-can.svg +0 -0
  1417. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/om.svg +0 -0
  1418. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/otter.svg +0 -0
  1419. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/outdent.svg +0 -0
  1420. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/pager.svg +0 -0
  1421. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/paint-brush.svg +0 -0
  1422. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/paint-roller.svg +0 -0
  1423. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/palette.svg +0 -0
  1424. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/pallet.svg +0 -0
  1425. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/paper-plane.svg +0 -0
  1426. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/paperclip.svg +0 -0
  1427. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/parachute-box.svg +0 -0
  1428. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/paragraph.svg +0 -0
  1429. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/parking.svg +0 -0
  1430. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/passport.svg +0 -0
  1431. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/pastafarianism.svg +0 -0
  1432. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/paste.svg +0 -0
  1433. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/pause-circle.svg +0 -0
  1434. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/pause.svg +0 -0
  1435. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/paw.svg +0 -0
  1436. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/peace.svg +0 -0
  1437. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/pen-alt.svg +0 -0
  1438. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/pen-fancy.svg +0 -0
  1439. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/pen-nib.svg +0 -0
  1440. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/pen-square.svg +0 -0
  1441. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/pen.svg +0 -0
  1442. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/pencil-alt.svg +0 -0
  1443. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/pencil-ruler.svg +0 -0
  1444. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/people-carry.svg +0 -0
  1445. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/pepper-hot.svg +0 -0
  1446. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/percent.svg +0 -0
  1447. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/percentage.svg +0 -0
  1448. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/person-booth.svg +0 -0
  1449. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/phone-alt.svg +0 -0
  1450. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/phone-slash.svg +0 -0
  1451. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/phone-square-alt.svg +0 -0
  1452. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/phone-square.svg +0 -0
  1453. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/phone-volume.svg +0 -0
  1454. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/phone.svg +0 -0
  1455. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/photo-video.svg +0 -0
  1456. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/piggy-bank.svg +0 -0
  1457. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/pills.svg +0 -0
  1458. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/pizza-slice.svg +0 -0
  1459. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/place-of-worship.svg +0 -0
  1460. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/plane-arrival.svg +0 -0
  1461. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/plane-departure.svg +0 -0
  1462. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/plane.svg +0 -0
  1463. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/play-circle.svg +0 -0
  1464. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/play.svg +0 -0
  1465. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/plug.svg +0 -0
  1466. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/plus-circle.svg +0 -0
  1467. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/plus-square.svg +0 -0
  1468. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/plus.svg +0 -0
  1469. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/podcast.svg +0 -0
  1470. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/poll-h.svg +0 -0
  1471. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/poll.svg +0 -0
  1472. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/poo-storm.svg +0 -0
  1473. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/poo.svg +0 -0
  1474. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/poop.svg +0 -0
  1475. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/portrait.svg +0 -0
  1476. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/pound-sign.svg +0 -0
  1477. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/power-off.svg +0 -0
  1478. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/pray.svg +0 -0
  1479. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/praying-hands.svg +0 -0
  1480. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/prescription-bottle-alt.svg +0 -0
  1481. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/prescription-bottle.svg +0 -0
  1482. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/prescription.svg +0 -0
  1483. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/print.svg +0 -0
  1484. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/procedures.svg +0 -0
  1485. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/project-diagram.svg +0 -0
  1486. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/puzzle-piece.svg +0 -0
  1487. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/qrcode.svg +0 -0
  1488. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/question-circle.svg +0 -0
  1489. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/question.svg +0 -0
  1490. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/quidditch.svg +0 -0
  1491. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/quote-left.svg +0 -0
  1492. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/quote-right.svg +0 -0
  1493. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/quran.svg +0 -0
  1494. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/radiation-alt.svg +0 -0
  1495. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/radiation.svg +0 -0
  1496. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/rainbow.svg +0 -0
  1497. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/random.svg +0 -0
  1498. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/receipt.svg +0 -0
  1499. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/record-vinyl.svg +0 -0
  1500. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/recycle.svg +0 -0
  1501. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/redo-alt.svg +0 -0
  1502. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/redo.svg +0 -0
  1503. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/registered.svg +0 -0
  1504. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/remove-format.svg +0 -0
  1505. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/reply-all.svg +0 -0
  1506. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/reply.svg +0 -0
  1507. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/republican.svg +0 -0
  1508. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/restroom.svg +0 -0
  1509. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/retweet.svg +0 -0
  1510. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/ribbon.svg +0 -0
  1511. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/ring.svg +0 -0
  1512. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/road.svg +0 -0
  1513. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/robot.svg +0 -0
  1514. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/rocket.svg +0 -0
  1515. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/route.svg +0 -0
  1516. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/rss-square.svg +0 -0
  1517. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/rss.svg +0 -0
  1518. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/ruble-sign.svg +0 -0
  1519. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/ruler-combined.svg +0 -0
  1520. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/ruler-horizontal.svg +0 -0
  1521. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/ruler-vertical.svg +0 -0
  1522. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/ruler.svg +0 -0
  1523. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/running.svg +0 -0
  1524. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/rupee-sign.svg +0 -0
  1525. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sad-cry.svg +0 -0
  1526. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sad-tear.svg +0 -0
  1527. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/satellite-dish.svg +0 -0
  1528. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/satellite.svg +0 -0
  1529. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/save.svg +0 -0
  1530. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/school.svg +0 -0
  1531. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/screwdriver.svg +0 -0
  1532. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/scroll.svg +0 -0
  1533. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sd-card.svg +0 -0
  1534. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/search-dollar.svg +0 -0
  1535. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/search-location.svg +0 -0
  1536. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/search-minus.svg +0 -0
  1537. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/search-plus.svg +0 -0
  1538. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/search.svg +0 -0
  1539. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/seedling.svg +0 -0
  1540. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/server.svg +0 -0
  1541. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/shapes.svg +0 -0
  1542. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/share-alt-square.svg +0 -0
  1543. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/share-alt.svg +0 -0
  1544. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/share-square.svg +0 -0
  1545. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/share.svg +0 -0
  1546. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/shekel-sign.svg +0 -0
  1547. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/shield-alt.svg +0 -0
  1548. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/ship.svg +0 -0
  1549. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/shipping-fast.svg +0 -0
  1550. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/shoe-prints.svg +0 -0
  1551. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/shopping-bag.svg +0 -0
  1552. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/shopping-basket.svg +0 -0
  1553. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/shopping-cart.svg +0 -0
  1554. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/shower.svg +0 -0
  1555. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/shuttle-van.svg +0 -0
  1556. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sign-in-alt.svg +0 -0
  1557. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sign-language.svg +0 -0
  1558. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sign-out-alt.svg +0 -0
  1559. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sign.svg +0 -0
  1560. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/signal.svg +0 -0
  1561. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/signature.svg +0 -0
  1562. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sim-card.svg +0 -0
  1563. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sitemap.svg +0 -0
  1564. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/skating.svg +0 -0
  1565. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/skiing-nordic.svg +0 -0
  1566. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/skiing.svg +0 -0
  1567. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/skull-crossbones.svg +0 -0
  1568. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/skull.svg +0 -0
  1569. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/slash.svg +0 -0
  1570. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sleigh.svg +0 -0
  1571. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sliders-h.svg +0 -0
  1572. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/smile-beam.svg +0 -0
  1573. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/smile-wink.svg +0 -0
  1574. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/smile.svg +0 -0
  1575. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/smog.svg +0 -0
  1576. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/smoking-ban.svg +0 -0
  1577. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/smoking.svg +0 -0
  1578. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sms.svg +0 -0
  1579. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/snowboarding.svg +0 -0
  1580. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/snowflake.svg +0 -0
  1581. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/snowman.svg +0 -0
  1582. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/snowplow.svg +0 -0
  1583. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/socks.svg +0 -0
  1584. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/solar-panel.svg +0 -0
  1585. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sort-alpha-down-alt.svg +0 -0
  1586. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sort-alpha-down.svg +0 -0
  1587. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sort-alpha-up-alt.svg +0 -0
  1588. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sort-alpha-up.svg +0 -0
  1589. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sort-amount-down-alt.svg +0 -0
  1590. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sort-amount-down.svg +0 -0
  1591. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sort-amount-up-alt.svg +0 -0
  1592. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sort-amount-up.svg +0 -0
  1593. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sort-down.svg +0 -0
  1594. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sort-numeric-down-alt.svg +0 -0
  1595. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sort-numeric-down.svg +0 -0
  1596. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sort-numeric-up-alt.svg +0 -0
  1597. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sort-numeric-up.svg +0 -0
  1598. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sort-up.svg +0 -0
  1599. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sort.svg +0 -0
  1600. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/spa.svg +0 -0
  1601. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/space-shuttle.svg +0 -0
  1602. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/spell-check.svg +0 -0
  1603. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/spider.svg +0 -0
  1604. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/spinner.svg +0 -0
  1605. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/splotch.svg +0 -0
  1606. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/spray-can.svg +0 -0
  1607. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/square-full.svg +0 -0
  1608. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/square-root-alt.svg +0 -0
  1609. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/square.svg +0 -0
  1610. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/stamp.svg +0 -0
  1611. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/star-and-crescent.svg +0 -0
  1612. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/star-half-alt.svg +0 -0
  1613. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/star-half.svg +0 -0
  1614. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/star-of-david.svg +0 -0
  1615. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/star-of-life.svg +0 -0
  1616. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/star.svg +0 -0
  1617. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/step-backward.svg +0 -0
  1618. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/step-forward.svg +0 -0
  1619. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/stethoscope.svg +0 -0
  1620. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sticky-note.svg +0 -0
  1621. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/stop-circle.svg +0 -0
  1622. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/stop.svg +0 -0
  1623. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/stopwatch.svg +0 -0
  1624. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/store-alt.svg +0 -0
  1625. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/store.svg +0 -0
  1626. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/stream.svg +0 -0
  1627. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/street-view.svg +0 -0
  1628. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/strikethrough.svg +0 -0
  1629. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/stroopwafel.svg +0 -0
  1630. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/subscript.svg +0 -0
  1631. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/subway.svg +0 -0
  1632. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/suitcase-rolling.svg +0 -0
  1633. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/suitcase.svg +0 -0
  1634. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sun.svg +0 -0
  1635. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/superscript.svg +0 -0
  1636. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/surprise.svg +0 -0
  1637. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/swatchbook.svg +0 -0
  1638. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/swimmer.svg +0 -0
  1639. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/swimming-pool.svg +0 -0
  1640. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/synagogue.svg +0 -0
  1641. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sync-alt.svg +0 -0
  1642. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/sync.svg +0 -0
  1643. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/syringe.svg +0 -0
  1644. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/table-tennis.svg +0 -0
  1645. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/table.svg +0 -0
  1646. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/tablet-alt.svg +0 -0
  1647. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/tablet.svg +0 -0
  1648. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/tablets.svg +0 -0
  1649. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/tachometer-alt.svg +0 -0
  1650. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/tag.svg +0 -0
  1651. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/tags.svg +0 -0
  1652. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/tape.svg +0 -0
  1653. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/tasks.svg +0 -0
  1654. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/taxi.svg +0 -0
  1655. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/teeth-open.svg +0 -0
  1656. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/teeth.svg +0 -0
  1657. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/temperature-high.svg +0 -0
  1658. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/temperature-low.svg +0 -0
  1659. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/tenge.svg +0 -0
  1660. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/terminal.svg +0 -0
  1661. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/text-height.svg +0 -0
  1662. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/text-width.svg +0 -0
  1663. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/th-large.svg +0 -0
  1664. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/th-list.svg +0 -0
  1665. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/th.svg +0 -0
  1666. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/theater-masks.svg +0 -0
  1667. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/thermometer-empty.svg +0 -0
  1668. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/thermometer-full.svg +0 -0
  1669. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/thermometer-half.svg +0 -0
  1670. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/thermometer-quarter.svg +0 -0
  1671. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/thermometer-three-quarters.svg +0 -0
  1672. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/thermometer.svg +0 -0
  1673. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/thumbs-down.svg +0 -0
  1674. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/thumbs-up.svg +0 -0
  1675. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/thumbtack.svg +0 -0
  1676. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/ticket-alt.svg +0 -0
  1677. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/times-circle.svg +0 -0
  1678. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/times.svg +0 -0
  1679. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/tint-slash.svg +0 -0
  1680. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/tint.svg +0 -0
  1681. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/tired.svg +0 -0
  1682. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/toggle-off.svg +0 -0
  1683. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/toggle-on.svg +0 -0
  1684. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/toilet-paper.svg +0 -0
  1685. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/toilet.svg +0 -0
  1686. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/toolbox.svg +0 -0
  1687. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/tools.svg +0 -0
  1688. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/tooth.svg +0 -0
  1689. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/torah.svg +0 -0
  1690. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/torii-gate.svg +0 -0
  1691. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/tractor.svg +0 -0
  1692. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/trademark.svg +0 -0
  1693. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/traffic-light.svg +0 -0
  1694. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/trailer.svg +0 -0
  1695. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/train.svg +0 -0
  1696. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/tram.svg +0 -0
  1697. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/transgender-alt.svg +0 -0
  1698. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/transgender.svg +0 -0
  1699. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/trash-alt.svg +0 -0
  1700. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/trash-restore-alt.svg +0 -0
  1701. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/trash-restore.svg +0 -0
  1702. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/trash.svg +0 -0
  1703. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/tree.svg +0 -0
  1704. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/trophy.svg +0 -0
  1705. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/truck-loading.svg +0 -0
  1706. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/truck-monster.svg +0 -0
  1707. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/truck-moving.svg +0 -0
  1708. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/truck-pickup.svg +0 -0
  1709. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/truck.svg +0 -0
  1710. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/tshirt.svg +0 -0
  1711. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/tty.svg +0 -0
  1712. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/tv.svg +0 -0
  1713. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/umbrella-beach.svg +0 -0
  1714. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/umbrella.svg +0 -0
  1715. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/underline.svg +0 -0
  1716. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/undo-alt.svg +0 -0
  1717. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/undo.svg +0 -0
  1718. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/universal-access.svg +0 -0
  1719. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/university.svg +0 -0
  1720. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/unlink.svg +0 -0
  1721. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/unlock-alt.svg +0 -0
  1722. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/unlock.svg +0 -0
  1723. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/upload.svg +0 -0
  1724. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user-alt-slash.svg +0 -0
  1725. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user-alt.svg +0 -0
  1726. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user-astronaut.svg +0 -0
  1727. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user-check.svg +0 -0
  1728. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user-circle.svg +0 -0
  1729. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user-clock.svg +0 -0
  1730. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user-cog.svg +0 -0
  1731. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user-edit.svg +0 -0
  1732. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user-friends.svg +0 -0
  1733. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user-graduate.svg +0 -0
  1734. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user-injured.svg +0 -0
  1735. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user-lock.svg +0 -0
  1736. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user-md.svg +0 -0
  1737. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user-minus.svg +0 -0
  1738. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user-ninja.svg +0 -0
  1739. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user-nurse.svg +0 -0
  1740. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user-plus.svg +0 -0
  1741. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user-secret.svg +0 -0
  1742. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user-shield.svg +0 -0
  1743. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user-slash.svg +0 -0
  1744. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user-tag.svg +0 -0
  1745. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user-tie.svg +0 -0
  1746. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user-times.svg +0 -0
  1747. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/user.svg +0 -0
  1748. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/users-cog.svg +0 -0
  1749. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/users.svg +0 -0
  1750. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/utensil-spoon.svg +0 -0
  1751. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/utensils.svg +0 -0
  1752. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/vector-square.svg +0 -0
  1753. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/venus-double.svg +0 -0
  1754. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/venus-mars.svg +0 -0
  1755. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/venus.svg +0 -0
  1756. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/vial.svg +0 -0
  1757. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/vials.svg +0 -0
  1758. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/video-slash.svg +0 -0
  1759. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/video.svg +0 -0
  1760. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/vihara.svg +0 -0
  1761. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/voicemail.svg +0 -0
  1762. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/volleyball-ball.svg +0 -0
  1763. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/volume-down.svg +0 -0
  1764. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/volume-mute.svg +0 -0
  1765. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/volume-off.svg +0 -0
  1766. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/volume-up.svg +0 -0
  1767. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/vote-yea.svg +0 -0
  1768. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/vr-cardboard.svg +0 -0
  1769. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/walking.svg +0 -0
  1770. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/wallet.svg +0 -0
  1771. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/warehouse.svg +0 -0
  1772. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/water.svg +0 -0
  1773. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/wave-square.svg +0 -0
  1774. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/weight-hanging.svg +0 -0
  1775. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/weight.svg +0 -0
  1776. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/wheelchair.svg +0 -0
  1777. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/wifi.svg +0 -0
  1778. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/wind.svg +0 -0
  1779. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/window-close.svg +0 -0
  1780. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/window-maximize.svg +0 -0
  1781. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/window-minimize.svg +0 -0
  1782. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/window-restore.svg +0 -0
  1783. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/wine-bottle.svg +0 -0
  1784. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/wine-glass-alt.svg +0 -0
  1785. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/wine-glass.svg +0 -0
  1786. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/won-sign.svg +0 -0
  1787. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/wrench.svg +0 -0
  1788. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/x-ray.svg +0 -0
  1789. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/yen-sign.svg +0 -0
  1790. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/svgs/solid/yin-yang.svg +0 -0
  1791. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/webfonts/fa-brands-400.eot +0 -0
  1792. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/webfonts/fa-brands-400.svg +0 -0
  1793. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/webfonts/fa-brands-400.ttf +0 -0
  1794. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/webfonts/fa-brands-400.woff +0 -0
  1795. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/webfonts/fa-brands-400.woff2 +0 -0
  1796. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/webfonts/fa-regular-400.eot +0 -0
  1797. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/webfonts/fa-regular-400.svg +0 -0
  1798. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/webfonts/fa-regular-400.ttf +0 -0
  1799. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/webfonts/fa-regular-400.woff +0 -0
  1800. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/webfonts/fa-regular-400.woff2 +0 -0
  1801. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/webfonts/fa-solid-900.eot +0 -0
  1802. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/webfonts/fa-solid-900.svg +0 -0
  1803. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/webfonts/fa-solid-900.ttf +0 -0
  1804. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/webfonts/fa-solid-900.woff +0 -0
  1805. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/fa/webfonts/fa-solid-900.woff2 +0 -0
  1806. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/jquery/jquery-3.4.1.min.js +0 -0
  1807. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/jquery/jquery-3.4.1.min.map +0 -0
  1808. {uffd-2.3.2 → uffd-2.4.1}/uffd/static/popper/popper-1.16.0.min.js +0 -0
  1809. {uffd-2.3.2 → uffd-2.4.1}/uffd/tasks.py +0 -0
  1810. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/group/list.html +0 -0
  1811. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/invite/use.html +0 -0
  1812. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/mail/list.html +0 -0
  1813. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/oauth2/error.html +0 -0
  1814. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/oauth2/logout.html +0 -0
  1815. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/role/list.html +0 -0
  1816. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/rolemod/list.html +0 -0
  1817. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/rolemod/show.html +0 -0
  1818. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/selfservice/mailverification.mail.txt +0 -0
  1819. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/selfservice/newuser.mail.txt +0 -0
  1820. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/selfservice/passwordreset.mail.txt +0 -0
  1821. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/service/index.html +0 -0
  1822. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/service/overview.html +0 -0
  1823. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/signup/mail.txt +0 -0
  1824. {uffd-2.3.2 → uffd-2.4.1}/uffd/templates/signup/submitted.html +0 -0
  1825. {uffd-2.3.2 → uffd-2.4.1}/uffd/views/api.py +0 -0
  1826. {uffd-2.3.2 → uffd-2.4.1}/uffd/views/group.py +0 -0
  1827. {uffd-2.3.2 → uffd-2.4.1}/uffd/views/mail.py +0 -0
  1828. {uffd-2.3.2 → uffd-2.4.1}/uffd/views/role.py +0 -0
  1829. {uffd-2.3.2 → uffd-2.4.1}/uffd/views/rolemod.py +0 -0
  1830. {uffd-2.3.2 → uffd-2.4.1}/uffd/views/service.py +0 -0
  1831. {uffd-2.3.2 → uffd-2.4.1}/uffd.egg-info/dependency_links.txt +0 -0
  1832. {uffd-2.3.2 → uffd-2.4.1}/uffd.egg-info/not-zip-safe +0 -0
  1833. {uffd-2.3.2 → uffd-2.4.1}/uffd.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: uffd
3
- Version: 2.3.2
3
+ Version: 2.4.1
4
4
  Summary: Web-based user management and single sign-on software
5
5
  Home-page: https://git.cccv.de/uffd/uffd
6
6
  Author: CCCV
@@ -21,22 +21,22 @@ Requires-Dist: flask==1.0.2
21
21
  Requires-Dist: Flask-SQLAlchemy==2.1
22
22
  Requires-Dist: qrcode==6.1
23
23
  Requires-Dist: fido2==0.5.0
24
- Requires-Dist: oauthlib==2.1.0
24
+ Requires-Dist: cryptography==2.6.1
25
+ Requires-Dist: pyjwt==1.7.0
25
26
  Requires-Dist: Flask-Migrate==2.1.1
26
27
  Requires-Dist: Flask-Babel==0.11.2
27
28
  Requires-Dist: alembic==1.0.0
28
29
  Requires-Dist: argon2-cffi==18.3.0
29
30
  Requires-Dist: itsdangerous==0.24
30
31
  Requires-Dist: prometheus-client==0.9
32
+ Requires-Dist: ua-parser==0.8.0
31
33
  Requires-Dist: certifi==2018.8.24
32
34
  Requires-Dist: cffi
33
35
  Requires-Dist: chardet==3.0.4
34
36
  Requires-Dist: click==7.0
35
- Requires-Dist: cryptography==2.6.1
36
37
  Requires-Dist: idna==2.6
37
38
  Requires-Dist: Jinja2==2.10
38
39
  Requires-Dist: MarkupSafe==1.1.0
39
- Requires-Dist: oauthlib==2.1.0
40
40
  Requires-Dist: pyasn1==0.4.2
41
41
  Requires-Dist: pycparser==2.19
42
42
  Requires-Dist: requests==2.21.0
@@ -80,11 +80,13 @@ Please note that we refer to Debian packages here and **not** pip packages.
80
80
  - python3-qrcode
81
81
  - python3-fido2 (version 0.5.0 or 0.9.1, optional)
82
82
  - python3-prometheus-client (optional, needed for metrics)
83
- - python3-oauthlib
83
+ - python3-jwt
84
+ - python3-cryptography
84
85
  - python3-flask-babel
85
86
  - python3-argon2
86
87
  - python3-itsdangerous (also a dependency of python3-flask)
87
88
  - python3-mysqldb or python3-pymysql for MariaDB support
89
+ - python3-ua-parser (optional, better user agent parsing)
88
90
 
89
91
  Some of the dependencies (especially fido2) changed their API in recent versions, so make sure to install the versions from Debian Bookworm, Bullseye or Buster.
90
92
  For development, you can also use virtualenv with the supplied `requirements.txt`.
@@ -162,6 +164,8 @@ The services need to be setup to use the following URLs with the Authorization C
162
164
  * `/oauth2/token`: token request endpoint
163
165
  * `/oauth2/userinfo`: endpoint that provides information about the current user
164
166
 
167
+ If the service supports server metadata discovery ([RFC 8414](https://www.rfc-editor.org/rfc/rfc8414)), configuring the base url of your uffd installation or `/.well-known/openid-configuration` as the discovery endpoint should be sufficient.
168
+
165
169
  The only OAuth2 scope supported is `profile`. The userinfo endpoint returns json data with the following structure:
166
170
 
167
171
  ```
@@ -179,6 +183,47 @@ The only OAuth2 scope supported is `profile`. The userinfo endpoint returns json
179
183
 
180
184
  `id` is the numeric (Unix) user id, `name` the display name and `nickname` the loginname of the user.
181
185
 
186
+ ## OpenID Connect Single-Sign-On Provider
187
+
188
+ In addition to plain OAuth2, uffd also has basic OpenID Connect support.
189
+ Endpoint URLs are the same as for plain OAuth2.
190
+ OpenID Connect support is enabled by requesting the `openid` scope.
191
+ ID token signing keys are served at `/oauth2/keys`.
192
+
193
+ See [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html) specification for more details.
194
+
195
+ Supported flows and response types:
196
+
197
+ * Only Authorization Code Flow with `code` response type
198
+
199
+ Supported scopes:
200
+
201
+ * `openid`: Enables OpenID Connect support and returns mandatory `sub` claim
202
+ * `profile`: Returns `name` and `preferred_username` claims
203
+ * `email`: Returns `email` and `email_verified` claims
204
+ * `groups`: Returns non-standard `groups` claim
205
+
206
+ Supported claims:
207
+
208
+ * `sub` (string): Decimal encoded numeric (Unix) user id
209
+ * `name` (string): Display name
210
+ * `preferred_username`(string): Loginname
211
+ * `email` (string): Service-specific or primary email address
212
+ * `email_verified` (boolean): Verification status of `email` value (always `true`)
213
+ * `groups` (array of strings): Names of groups the user is a member of (non-standard)
214
+
215
+ uffd supports the optional `claims` authorization request parameter for requesting claims individually.
216
+
217
+ Note that there is a IANA-registered `groups` claim with a syntax borrowed from [SCIM](https://www.rfc-editor.org/rfc/rfc7643.html).
218
+ The syntax used by uffd is different and incompatible, although arguably more common for a claim named "groups" in this context.
219
+
220
+ uffd aims for compliance with OpenID provider conformance profiles Basic and Config.
221
+ It is, however, not a certified OpenID provider and it has the following limitations:
222
+
223
+ * Only the `none` value for the `prompt` authorization request parameter is recognized. Other values (`login`, `consent` and `select_account`) are ignored.
224
+ * The `max_age` authorization request parameter is not supported and ignored by uffd (except for its `auth_time` behavior).
225
+ * Requesting the `sub` claim with a specific value for the ID Token (or passing the `id_token_hint` authorization request parameter) is only supported if the `prompt` authorization request parameter is set to `none`. The authorization request is rejected otherwise.
226
+
182
227
  ## Metrics
183
228
 
184
229
  Uffd can export metrics in a prometheus compatible way. It needs python3-prometheus-client for this feature to work.
@@ -199,7 +244,7 @@ uffd_version_info{version="local"} 1.0
199
244
 
200
245
  ## Translation
201
246
 
202
- The web frontend is initially written in English and translated in the following Languages:
247
+ The web front end is initially written in English and translated in the following Languages:
203
248
 
204
249
  ![status](https://git.cccv.de/uffd/uffd/badges/master/coverage.svg?job=trans_de&key_text=DE)
205
250
 
@@ -15,11 +15,13 @@ Please note that we refer to Debian packages here and **not** pip packages.
15
15
  - python3-qrcode
16
16
  - python3-fido2 (version 0.5.0 or 0.9.1, optional)
17
17
  - python3-prometheus-client (optional, needed for metrics)
18
- - python3-oauthlib
18
+ - python3-jwt
19
+ - python3-cryptography
19
20
  - python3-flask-babel
20
21
  - python3-argon2
21
22
  - python3-itsdangerous (also a dependency of python3-flask)
22
23
  - python3-mysqldb or python3-pymysql for MariaDB support
24
+ - python3-ua-parser (optional, better user agent parsing)
23
25
 
24
26
  Some of the dependencies (especially fido2) changed their API in recent versions, so make sure to install the versions from Debian Bookworm, Bullseye or Buster.
25
27
  For development, you can also use virtualenv with the supplied `requirements.txt`.
@@ -97,6 +99,8 @@ The services need to be setup to use the following URLs with the Authorization C
97
99
  * `/oauth2/token`: token request endpoint
98
100
  * `/oauth2/userinfo`: endpoint that provides information about the current user
99
101
 
102
+ If the service supports server metadata discovery ([RFC 8414](https://www.rfc-editor.org/rfc/rfc8414)), configuring the base url of your uffd installation or `/.well-known/openid-configuration` as the discovery endpoint should be sufficient.
103
+
100
104
  The only OAuth2 scope supported is `profile`. The userinfo endpoint returns json data with the following structure:
101
105
 
102
106
  ```
@@ -114,6 +118,47 @@ The only OAuth2 scope supported is `profile`. The userinfo endpoint returns json
114
118
 
115
119
  `id` is the numeric (Unix) user id, `name` the display name and `nickname` the loginname of the user.
116
120
 
121
+ ## OpenID Connect Single-Sign-On Provider
122
+
123
+ In addition to plain OAuth2, uffd also has basic OpenID Connect support.
124
+ Endpoint URLs are the same as for plain OAuth2.
125
+ OpenID Connect support is enabled by requesting the `openid` scope.
126
+ ID token signing keys are served at `/oauth2/keys`.
127
+
128
+ See [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html) specification for more details.
129
+
130
+ Supported flows and response types:
131
+
132
+ * Only Authorization Code Flow with `code` response type
133
+
134
+ Supported scopes:
135
+
136
+ * `openid`: Enables OpenID Connect support and returns mandatory `sub` claim
137
+ * `profile`: Returns `name` and `preferred_username` claims
138
+ * `email`: Returns `email` and `email_verified` claims
139
+ * `groups`: Returns non-standard `groups` claim
140
+
141
+ Supported claims:
142
+
143
+ * `sub` (string): Decimal encoded numeric (Unix) user id
144
+ * `name` (string): Display name
145
+ * `preferred_username`(string): Loginname
146
+ * `email` (string): Service-specific or primary email address
147
+ * `email_verified` (boolean): Verification status of `email` value (always `true`)
148
+ * `groups` (array of strings): Names of groups the user is a member of (non-standard)
149
+
150
+ uffd supports the optional `claims` authorization request parameter for requesting claims individually.
151
+
152
+ Note that there is a IANA-registered `groups` claim with a syntax borrowed from [SCIM](https://www.rfc-editor.org/rfc/rfc7643.html).
153
+ The syntax used by uffd is different and incompatible, although arguably more common for a claim named "groups" in this context.
154
+
155
+ uffd aims for compliance with OpenID provider conformance profiles Basic and Config.
156
+ It is, however, not a certified OpenID provider and it has the following limitations:
157
+
158
+ * Only the `none` value for the `prompt` authorization request parameter is recognized. Other values (`login`, `consent` and `select_account`) are ignored.
159
+ * The `max_age` authorization request parameter is not supported and ignored by uffd (except for its `auth_time` behavior).
160
+ * Requesting the `sub` claim with a specific value for the ID Token (or passing the `id_token_hint` authorization request parameter) is only supported if the `prompt` authorization request parameter is set to `none`. The authorization request is rejected otherwise.
161
+
117
162
  ## Metrics
118
163
 
119
164
  Uffd can export metrics in a prometheus compatible way. It needs python3-prometheus-client for this feature to work.
@@ -134,7 +179,7 @@ uffd_version_info{version="local"} 1.0
134
179
 
135
180
  ## Translation
136
181
 
137
- The web frontend is initially written in English and translated in the following Languages:
182
+ The web front end is initially written in English and translated in the following Languages:
138
183
 
139
184
  ![status](https://git.cccv.de/uffd/uffd/badges/master/coverage.svg?job=trans_de&key_text=DE)
140
185
 
@@ -36,13 +36,15 @@ setup(
36
36
  'Flask-SQLAlchemy==2.1',
37
37
  'qrcode==6.1',
38
38
  'fido2==0.5.0',
39
- 'oauthlib==2.1.0',
39
+ 'cryptography==2.6.1',
40
+ 'pyjwt==1.7.0',
40
41
  'Flask-Migrate==2.1.1',
41
42
  'Flask-Babel==0.11.2',
42
43
  'alembic==1.0.0',
43
44
  'argon2-cffi==18.3.0',
44
45
  'itsdangerous==0.24',
45
46
  'prometheus-client==0.9',
47
+ 'ua-parser==0.8.0',
46
48
 
47
49
  # The main dependencies on their own lead to version collisions and pip is
48
50
  # not very good at resolving them, so we pin the versions from Debian Buster
@@ -52,11 +54,9 @@ setup(
52
54
  'cffi # v1.12.2 no longer works with python3.9. Newer versions seem to work fine.',
53
55
  'chardet==3.0.4',
54
56
  'click==7.0',
55
- 'cryptography==2.6.1',
56
57
  'idna==2.6',
57
58
  'Jinja2==2.10',
58
59
  'MarkupSafe==1.1.0',
59
- 'oauthlib==2.1.0',
60
60
  'pyasn1==0.4.2',
61
61
  'pycparser==2.19',
62
62
  'requests==2.21.0',
@@ -53,7 +53,7 @@ class TestRemailer(UffdTestCase):
53
53
  self.assertNotEqual(remailer.build_v2_address(SERVICE1_ID, USER_ID), ADDR_V2_S1)
54
54
 
55
55
  def test_parse_address(self):
56
- # REMAILER_DOMAIN behaviour
56
+ # REMAILER_DOMAIN behavior
57
57
  self.app.config['REMAILER_DOMAIN'] = None
58
58
  self.assertIsNone(remailer.parse_address(ADDR_V1_S2))
59
59
  self.assertIsNone(remailer.parse_address(ADDR_V2_S2))
@@ -72,7 +72,7 @@ class TestRemailer(UffdTestCase):
72
72
  self.app.config['REMAILER_OLD_DOMAINS'] = ['remailer.example.com']
73
73
  self.assertEqual(remailer.parse_address(ADDR_V1_S2), (SERVICE2_ID, USER_ID))
74
74
  self.assertEqual(remailer.parse_address(ADDR_V2_S2), (SERVICE2_ID, USER_ID))
75
- # REMAILER_SECRET_KEY behaviour
75
+ # REMAILER_SECRET_KEY behavior
76
76
  self.app.config['REMAILER_DOMAIN'] = 'remailer.example.com'
77
77
  self.app.config['REMAILER_OLD_DOMAINS'] = []
78
78
  self.assertEqual(remailer.parse_address(ADDR_V1_S2), (SERVICE2_ID, USER_ID))
@@ -46,9 +46,10 @@ def init_config(app: Flask, test_config):
46
46
  if load_config_file(app, os.path.join(app.instance_path, filename), silent=True):
47
47
  break
48
48
 
49
- if app.env == "production" and app.secret_key is None:
50
- raise Exception("SECRET_KEY not configured and we are running in production mode!")
51
- app.config.setdefault("SECRET_KEY", secrets.token_hex(128))
49
+ if app.secret_key is None:
50
+ if app.env == "production":
51
+ raise Exception("SECRET_KEY not configured and we are running in production mode!")
52
+ app.secret_key = secrets.token_hex(128)
52
53
 
53
54
  def create_app(test_config=None): # pylint: disable=too-many-locals,too-many-statements
54
55
  app = Flask(__name__, instance_relative_config=False)
@@ -89,7 +89,7 @@ def create(loginname, mail, displayname, service, password, prompt_password, add
89
89
  @click.option('--mail', metavar='EMAIL_ADDRESS', help='Set e-mail address.')
90
90
  @click.option('--displayname', help='Set display name.')
91
91
  @click.option('--password', help='Set password for SSO login.')
92
- @click.option('--prompt-password', is_flag=True, flag_value=True, default=False, help='Set password by reading it interactivly from terminal.')
92
+ @click.option('--prompt-password', is_flag=True, flag_value=True, default=False, help='Set password by reading it interactively from terminal.')
93
93
  @click.option('--clear-roles', is_flag=True, flag_value=True, default=False, help='Remove all roles from user. Executed before --add-role.')
94
94
  @click.option('--add-role', multiple=True, help='Add role to user. Repeat to add multiple roles.')
95
95
  @click.option('--remove-role', multiple=True, help='Remove role from user. Repeat to remove multiple roles.')
@@ -64,6 +64,9 @@ INVITE_MAX_VALID_DAYS=21
64
64
 
65
65
  LOGINNAME_BLOCKLIST=['^admin$', '^root$']
66
66
 
67
+ # Limit for time between password login and 2FA step
68
+ MFA_AUTH_TIMEOUT_SECONDS=600
69
+
67
70
  #MFA_ICON_URL = 'https://example.com/logo.png'
68
71
  #MFA_RP_ID = 'example.com' # If unset, hostname from current request is used
69
72
  MFA_RP_NAME = 'Uffd Test Service' # Service name passed to U2F/FIDO2 authenticators
@@ -0,0 +1,46 @@
1
+ # pylint: skip-file
2
+
3
+ from flask_babel import gettext as _
4
+ from warnings import warn
5
+ from flask import request, current_app
6
+ import urllib.parse
7
+
8
+
9
+ # WebAuthn support is optional because fido2 has a pretty unstable
10
+ # interface and might be difficult to install with the correct version
11
+
12
+ try:
13
+ import fido2 as __fido2
14
+
15
+ if __fido2.__version__.startswith('0.5.'):
16
+ from fido2.client import ClientData
17
+ from fido2.server import Fido2Server, RelyingParty as __PublicKeyCredentialRpEntity
18
+ from fido2.ctap2 import AttestationObject, AuthenticatorData, AttestedCredentialData
19
+ from fido2 import cbor
20
+ cbor.encode = cbor.dumps
21
+ cbor.decode = lambda arg: cbor.loads(arg)[0]
22
+ class PublicKeyCredentialRpEntity(__PublicKeyCredentialRpEntity):
23
+ def __init__(self, name, id):
24
+ super().__init__(id, name)
25
+ elif __fido2.__version__.startswith('0.9.'):
26
+ from fido2.client import ClientData
27
+ from fido2.webauthn import PublicKeyCredentialRpEntity
28
+ from fido2.server import Fido2Server
29
+ from fido2.ctap2 import AttestationObject, AuthenticatorData, AttestedCredentialData
30
+ from fido2 import cbor
31
+ elif __fido2.__version__.startswith('1.'):
32
+ from fido2.webauthn import PublicKeyCredentialRpEntity, CollectedClientData as ClientData, AttestationObject, AuthenticatorData, AttestedCredentialData
33
+ from fido2.server import Fido2Server
34
+ from fido2 import cbor
35
+ else:
36
+ raise ImportError(f'Unsupported fido2 version: {__fido2.__version__}')
37
+
38
+ def get_webauthn_server():
39
+ hostname = urllib.parse.urlsplit(request.url).hostname
40
+ return Fido2Server(PublicKeyCredentialRpEntity(id=current_app.config.get('MFA_RP_ID', hostname),
41
+ name=current_app.config['MFA_RP_NAME']))
42
+
43
+ WEBAUTHN_SUPPORTED = True
44
+ except ImportError as err:
45
+ warn(_('2FA WebAuthn support disabled because import of the fido2 module failed (%s)')%err)
46
+ WEBAUTHN_SUPPORTED = False
@@ -4,18 +4,18 @@ Database Migrations
4
4
  While we use Alembic in a single-database configuration, the migration scripts
5
5
  are compatible with both SQLite and MySQL/MariaDB.
6
6
 
7
- Compatability with SQLite almost always requires `batch_alter_table` operations
7
+ Compatibility with SQLite almost always requires `batch_alter_table` operations
8
8
  to modify existing tables. These recreate the tables, copy the data and finally
9
- replace the old with the newly creaed ones. Alembic is configured to
9
+ replace the old with the newly created ones. Alembic is configured to
10
10
  auto-generate those operations, but in most cases the generated code fails to
11
- fully reflect all details of the original schema. This way some contraints
12
- (i.e. `CHECK` contstrains on Enums) are lost. Define the full table and pass it
11
+ fully reflect all details of the original schema. This way some constraints
12
+ (i.e. `CHECK` constrains on Enums) are lost. Define the full table and pass it
13
13
  with `copy_from` to `batch_alter_table` to prevent this.
14
14
 
15
- Compatability with MySQL requires special care when changing primary keys and
15
+ Compatibility with MySQL requires special care when changing primary keys and
16
16
  when dealing with foreign keys. It often helps to temporarily remove foreign
17
17
  key constraints concerning the table that is subject to change. When adding an
18
- autoincrement id column as the new primary key of a table, recreate the table
18
+ auto-increment id column as the new primary key of a table, recreate the table
19
19
  with `batch_alter_table`.
20
20
 
21
21
  The `check_migrations.py` script verifies that upgrading and downgrading works
@@ -0,0 +1,148 @@
1
+ """OpenID Connect Support
2
+
3
+ Revision ID: 01fdd7820f29
4
+ Revises: a9b449776953
5
+ Create Date: 2023-11-09 16:52:20.860871
6
+
7
+ """
8
+ from alembic import op
9
+ import sqlalchemy as sa
10
+
11
+ import datetime
12
+ import secrets
13
+ import math
14
+ import logging
15
+
16
+ from cryptography.hazmat.primitives.asymmetric import rsa
17
+ from cryptography.hazmat.backends import default_backend # Only required for Buster
18
+ import jwt
19
+
20
+ # pyjwt v1.7.x compat (Buster/Bullseye)
21
+ if not hasattr(jwt, 'get_algorithm_by_name'):
22
+ jwt.get_algorithm_by_name = lambda name: jwt.algorithms.get_default_algorithms()[name]
23
+
24
+ # revision identifiers, used by Alembic.
25
+ revision = '01fdd7820f29'
26
+ down_revision = 'a9b449776953'
27
+ branch_labels = None
28
+ depends_on = None
29
+
30
+ logger = logging.getLogger('alembic.runtime.migration.01fdd7820f29')
31
+
32
+ def token_with_alphabet(alphabet, nbytes=None):
33
+ '''Return random text token that consists of characters from `alphabet`'''
34
+ if nbytes is None:
35
+ nbytes = max(secrets.DEFAULT_ENTROPY, 32)
36
+ nbytes_per_char = math.log(len(alphabet), 256)
37
+ nchars = math.ceil(nbytes / nbytes_per_char)
38
+ return ''.join([secrets.choice(alphabet) for _ in range(nchars)])
39
+
40
+ def token_urlfriendly(nbytes=None):
41
+ '''Return random text token that is urlsafe and works around common parsing bugs'''
42
+ alphabet = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
43
+ return token_with_alphabet(alphabet, nbytes=nbytes)
44
+
45
+ def upgrade():
46
+ logger.info('Generating 3072 bit RSA key pair (RS256) for OpenID Connect support ...')
47
+ private_key = rsa.generate_private_key(public_exponent=65537, key_size=3072, backend=default_backend())
48
+
49
+ meta = sa.MetaData(bind=op.get_bind())
50
+ oauth2_key = op.create_table('oauth2_key',
51
+ sa.Column('id', sa.String(length=64), nullable=False),
52
+ sa.Column('created', sa.DateTime(), nullable=False),
53
+ sa.Column('active', sa.Boolean(create_constraint=False), nullable=False),
54
+ sa.Column('algorithm', sa.String(length=32), nullable=False),
55
+ sa.Column('private_key_jwk', sa.Text(), nullable=False),
56
+ sa.Column('public_key_jwk', sa.Text(), nullable=False),
57
+ sa.PrimaryKeyConstraint('id', name=op.f('pk_oauth2_key'))
58
+ )
59
+ algorithm = jwt.get_algorithm_by_name('RS256')
60
+ op.bulk_insert(oauth2_key, [{
61
+ 'id': token_urlfriendly(),
62
+ 'created': datetime.datetime.utcnow(),
63
+ 'active': True,
64
+ 'algorithm': 'RS256',
65
+ 'private_key_jwk': algorithm.to_jwk(private_key),
66
+ 'public_key_jwk': algorithm.to_jwk(private_key.public_key()),
67
+ }])
68
+
69
+ with op.batch_alter_table('oauth2grant', schema=None) as batch_op:
70
+ batch_op.drop_index(batch_op.f('ix_oauth2grant_code'))
71
+ oauth2grant = sa.Table('oauth2grant', meta,
72
+ sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
73
+ sa.Column('user_id', sa.Integer(), nullable=False),
74
+ sa.Column('client_db_id', sa.Integer(), nullable=False),
75
+ sa.Column('code', sa.String(length=255), nullable=False),
76
+ sa.Column('redirect_uri', sa.String(length=255), nullable=False),
77
+ sa.Column('expires', sa.DateTime(), nullable=False),
78
+ sa.Column('_scopes', sa.Text(), nullable=False),
79
+ sa.ForeignKeyConstraint(['client_db_id'], ['oauth2client.db_id'], name=op.f('fk_oauth2grant_client_db_id_oauth2client'), onupdate='CASCADE', ondelete='CASCADE'),
80
+ sa.ForeignKeyConstraint(['user_id'], ['user.id'], name=op.f('fk_oauth2grant_user_id_user'), onupdate='CASCADE', ondelete='CASCADE'),
81
+ sa.PrimaryKeyConstraint('id', name=op.f('pk_oauth2grant'))
82
+ )
83
+ with op.batch_alter_table('oauth2grant', copy_from=oauth2grant) as batch_op:
84
+ batch_op.add_column(sa.Column('nonce', sa.Text(), nullable=True))
85
+ batch_op.add_column(sa.Column('claims', sa.Text(), nullable=True))
86
+ batch_op.alter_column('redirect_uri', existing_type=sa.VARCHAR(length=255), nullable=True)
87
+
88
+ oauth2token = sa.Table('oauth2token', meta,
89
+ sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
90
+ sa.Column('user_id', sa.Integer(), nullable=False),
91
+ sa.Column('client_db_id', sa.Integer(), nullable=False),
92
+ sa.Column('token_type', sa.String(length=40), nullable=False),
93
+ sa.Column('access_token', sa.String(length=255), nullable=False),
94
+ sa.Column('refresh_token', sa.String(length=255), nullable=False),
95
+ sa.Column('expires', sa.DateTime(), nullable=False),
96
+ sa.Column('_scopes', sa.Text(), nullable=False),
97
+ sa.ForeignKeyConstraint(['client_db_id'], ['oauth2client.db_id'], name=op.f('fk_oauth2token_client_db_id_oauth2client'), onupdate='CASCADE', ondelete='CASCADE'),
98
+ sa.ForeignKeyConstraint(['user_id'], ['user.id'], name=op.f('fk_oauth2token_user_id_user'), onupdate='CASCADE', ondelete='CASCADE'),
99
+ sa.PrimaryKeyConstraint('id', name=op.f('pk_oauth2token')),
100
+ sa.UniqueConstraint('access_token', name=op.f('uq_oauth2token_access_token')),
101
+ sa.UniqueConstraint('refresh_token', name=op.f('uq_oauth2token_refresh_token'))
102
+ )
103
+ with op.batch_alter_table('oauth2token', copy_from=oauth2token) as batch_op:
104
+ batch_op.add_column(sa.Column('claims', sa.Text(), nullable=True))
105
+
106
+ def downgrade():
107
+ meta = sa.MetaData(bind=op.get_bind())
108
+
109
+ oauth2token = sa.Table('oauth2token', meta,
110
+ sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
111
+ sa.Column('user_id', sa.Integer(), nullable=False),
112
+ sa.Column('client_db_id', sa.Integer(), nullable=False),
113
+ sa.Column('token_type', sa.String(length=40), nullable=False),
114
+ sa.Column('access_token', sa.String(length=255), nullable=False),
115
+ sa.Column('refresh_token', sa.String(length=255), nullable=False),
116
+ sa.Column('expires', sa.DateTime(), nullable=False),
117
+ sa.Column('_scopes', sa.Text(), nullable=False),
118
+ sa.Column('claims', sa.Text(), nullable=True),
119
+ sa.ForeignKeyConstraint(['client_db_id'], ['oauth2client.db_id'], name=op.f('fk_oauth2token_client_db_id_oauth2client'), onupdate='CASCADE', ondelete='CASCADE'),
120
+ sa.ForeignKeyConstraint(['user_id'], ['user.id'], name=op.f('fk_oauth2token_user_id_user'), onupdate='CASCADE', ondelete='CASCADE'),
121
+ sa.PrimaryKeyConstraint('id', name=op.f('pk_oauth2token')),
122
+ sa.UniqueConstraint('access_token', name=op.f('uq_oauth2token_access_token')),
123
+ sa.UniqueConstraint('refresh_token', name=op.f('uq_oauth2token_refresh_token'))
124
+ )
125
+ with op.batch_alter_table('oauth2token', copy_from=oauth2token) as batch_op:
126
+ batch_op.drop_column('claims')
127
+
128
+ oauth2grant = sa.Table('oauth2grant', meta,
129
+ sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
130
+ sa.Column('user_id', sa.Integer(), nullable=False),
131
+ sa.Column('client_db_id', sa.Integer(), nullable=False),
132
+ sa.Column('code', sa.String(length=255), nullable=False),
133
+ sa.Column('redirect_uri', sa.String(length=255), nullable=True),
134
+ sa.Column('nonce', sa.Text(), nullable=True),
135
+ sa.Column('expires', sa.DateTime(), nullable=False),
136
+ sa.Column('_scopes', sa.Text(), nullable=False),
137
+ sa.Column('claims', sa.Text(), nullable=True),
138
+ sa.ForeignKeyConstraint(['client_db_id'], ['oauth2client.db_id'], name=op.f('fk_oauth2grant_client_db_id_oauth2client'), onupdate='CASCADE', ondelete='CASCADE'),
139
+ sa.ForeignKeyConstraint(['user_id'], ['user.id'], name=op.f('fk_oauth2grant_user_id_user'), onupdate='CASCADE', ondelete='CASCADE'),
140
+ sa.PrimaryKeyConstraint('id', name=op.f('pk_oauth2grant'))
141
+ )
142
+ with op.batch_alter_table('oauth2grant', copy_from=oauth2grant) as batch_op:
143
+ batch_op.alter_column('redirect_uri', existing_type=sa.VARCHAR(length=255), nullable=False)
144
+ batch_op.drop_column('claims')
145
+ batch_op.drop_column('nonce')
146
+ batch_op.create_index(batch_op.f('ix_oauth2grant_code'), ['code'], unique=False)
147
+
148
+ op.drop_table('oauth2_key')
@@ -0,0 +1,67 @@
1
+ """Unified password hashing for recovery codes
2
+
3
+ Revision ID: 4bd316207e59
4
+ Revises: e71e29cc605a
5
+ Create Date: 2024-05-22 03:13:55.917641
6
+
7
+ """
8
+ from alembic import op
9
+ import sqlalchemy as sa
10
+
11
+ revision = '4bd316207e59'
12
+ down_revision = 'e71e29cc605a'
13
+ branch_labels = None
14
+ depends_on = None
15
+
16
+ def upgrade():
17
+ meta = sa.MetaData(bind=op.get_bind())
18
+ mfa_method = sa.Table('mfa_method', meta,
19
+ sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
20
+ sa.Column('type', sa.Enum('RECOVERY_CODE', 'TOTP', 'WEBAUTHN', name='mfatype', create_constraint=True), nullable=False),
21
+ sa.Column('created', sa.DateTime(), nullable=False),
22
+ sa.Column('name', sa.String(length=128), nullable=True),
23
+ sa.Column('user_id', sa.Integer(), nullable=False),
24
+ sa.Column('recovery_salt', sa.String(length=64), nullable=True),
25
+ sa.Column('recovery_hash', sa.String(length=256), nullable=True),
26
+ sa.Column('totp_key', sa.String(length=64), nullable=True),
27
+ sa.Column('totp_last_counter', sa.Integer(), nullable=True),
28
+ sa.Column('webauthn_cred', sa.Text(), nullable=True),
29
+ sa.ForeignKeyConstraint(['user_id'], ['user.id'], name=op.f('fk_mfa_method_user_id_user'), onupdate='CASCADE', ondelete='CASCADE'),
30
+ sa.PrimaryKeyConstraint('id', name=op.f('pk_mfa_method'))
31
+ )
32
+ # This field was already unused before the change to unified password hashing. So this is unrelated cleanup.
33
+ with op.batch_alter_table('mfa_method', copy_from=mfa_method) as batch_op:
34
+ batch_op.drop_column('recovery_salt')
35
+ op.execute(mfa_method.update().values(recovery_hash=('{crypt}' + mfa_method.c.recovery_hash)).where(mfa_method.c.type == 'RECOVERY_CODE'))
36
+
37
+ def downgrade():
38
+ meta = sa.MetaData(bind=op.get_bind())
39
+ mfa_method = sa.Table('mfa_method', meta,
40
+ sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
41
+ sa.Column('type', sa.Enum('RECOVERY_CODE', 'TOTP', 'WEBAUTHN', name='mfatype', create_constraint=True), nullable=False),
42
+ sa.Column('created', sa.DateTime(), nullable=False),
43
+ sa.Column('name', sa.String(length=128), nullable=True),
44
+ sa.Column('user_id', sa.Integer(), nullable=False),
45
+ sa.Column('recovery_hash', sa.String(length=256), nullable=True),
46
+ sa.Column('totp_key', sa.String(length=64), nullable=True),
47
+ sa.Column('totp_last_counter', sa.Integer(), nullable=True),
48
+ sa.Column('webauthn_cred', sa.Text(), nullable=True),
49
+ sa.ForeignKeyConstraint(['user_id'], ['user.id'], name=op.f('fk_mfa_method_user_id_user'), onupdate='CASCADE', ondelete='CASCADE'),
50
+ sa.PrimaryKeyConstraint('id', name=op.f('pk_mfa_method'))
51
+ )
52
+ with op.batch_alter_table('mfa_method', copy_from=mfa_method) as batch_op:
53
+ batch_op.add_column(sa.Column('recovery_salt', sa.VARCHAR(length=64), nullable=True))
54
+ op.execute(
55
+ mfa_method.delete().where(sa.and_(
56
+ mfa_method.c.type == 'RECOVERY_CODE',
57
+ sa.not_(mfa_method.c.recovery_hash.ilike('{crypt}%'))
58
+ ))
59
+ )
60
+ op.execute(
61
+ mfa_method.update().values(
62
+ recovery_hash=sa.func.substr(mfa_method.c.recovery_hash, len('{crypt}') + 1)
63
+ ).where(sa.and_(
64
+ mfa_method.c.type == 'RECOVERY_CODE',
65
+ mfa_method.c.recovery_hash.ilike('{crypt}%')
66
+ ))
67
+ )
@@ -0,0 +1,31 @@
1
+ """Server-side sessions
2
+
3
+ Revision ID: 87cb93a329bf
4
+ Revises: 01fdd7820f29
5
+ Create Date: 2024-03-23 23:57:44.019456
6
+
7
+ """
8
+ from alembic import op
9
+ import sqlalchemy as sa
10
+
11
+ revision = '87cb93a329bf'
12
+ down_revision = '01fdd7820f29'
13
+ branch_labels = None
14
+ depends_on = None
15
+
16
+ def upgrade():
17
+ op.create_table('session',
18
+ sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
19
+ sa.Column('secret', sa.Text(), nullable=True),
20
+ sa.Column('user_id', sa.Integer(), nullable=False),
21
+ sa.Column('created', sa.DateTime(), nullable=False),
22
+ sa.Column('last_used', sa.DateTime(), nullable=False),
23
+ sa.Column('user_agent', sa.Text(), nullable=False),
24
+ sa.Column('ip_address', sa.Text(), nullable=True),
25
+ sa.Column('mfa_done', sa.Boolean(create_constraint=True), nullable=False),
26
+ sa.ForeignKeyConstraint(['user_id'], ['user.id'], name=op.f('fk_session_user_id_user'), onupdate='CASCADE', ondelete='CASCADE'),
27
+ sa.PrimaryKeyConstraint('id', name=op.f('pk_session'))
28
+ )
29
+
30
+ def downgrade():
31
+ op.drop_table('session')