uffd 2.3.1__tar.gz → 2.4.0__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.
- {uffd-2.3.1/uffd.egg-info → uffd-2.4.0}/PKG-INFO +63 -7
- {uffd-2.3.1 → uffd-2.4.0}/README.md +47 -2
- {uffd-2.3.1 → uffd-2.4.0}/setup.py +3 -3
- {uffd-2.3.1 → uffd-2.4.0}/tests/test_remailer.py +2 -2
- {uffd-2.3.1 → uffd-2.4.0}/uffd/__init__.py +4 -3
- {uffd-2.3.1 → uffd-2.4.0}/uffd/commands/user.py +1 -1
- {uffd-2.3.1 → uffd-2.4.0}/uffd/default_config.cfg +3 -0
- uffd-2.4.0/uffd/fido2_compat.py +46 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/README.md +6 -6
- uffd-2.4.0/uffd/migrations/versions/01fdd7820f29_openid_connect_support.py +148 -0
- uffd-2.4.0/uffd/migrations/versions/4bd316207e59_unified_password_hashing_for_recovery_codes.py +67 -0
- uffd-2.4.0/uffd/migrations/versions/87cb93a329bf_server_side_sessions.py +31 -0
- uffd-2.4.0/uffd/migrations/versions/99df71f0f4a0_migrate_device_login_from_user_to_session.py +63 -0
- uffd-2.4.0/uffd/migrations/versions/b9839ad4fd60_remove_mfa_done_from_session.py +51 -0
- uffd-2.4.0/uffd/migrations/versions/ce3fbc4df4a9_make_oauth2_claims_not_nullable.py +94 -0
- uffd-2.4.0/uffd/migrations/versions/e71e29cc605a_migrate_oauth2_state_from_user_to_session.py +108 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/f2eb2c52a61f_add_serviceuser.py +4 -1
- {uffd-2.3.1 → uffd-2.4.0}/uffd/models/__init__.py +2 -2
- {uffd-2.3.1 → uffd-2.4.0}/uffd/models/mail.py +3 -3
- {uffd-2.3.1 → uffd-2.4.0}/uffd/models/mfa.py +9 -13
- uffd-2.4.0/uffd/models/oauth2.py +292 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/models/role.py +1 -1
- {uffd-2.3.1 → uffd-2.4.0}/uffd/models/service.py +13 -3
- {uffd-2.3.1 → uffd-2.4.0}/uffd/models/session.py +89 -10
- {uffd-2.3.1 → uffd-2.4.0}/uffd/models/signup.py +2 -2
- {uffd-2.3.1 → uffd-2.4.0}/uffd/models/user.py +2 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/password_hash.py +2 -2
- {uffd-2.3.1 → uffd-2.4.0}/uffd/remailer.py +1 -1
- uffd-2.4.0/uffd/static/bootstrap/bootstrap-prefers-dark-color-only.css +2371 -0
- uffd-2.4.0/uffd/static/bootstrap/bootstrap-prefers-dark-color-only.min.css +5 -0
- uffd-2.4.0/uffd/static/style-1.css +65 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/template_helper.py +7 -2
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/403.html +1 -1
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/base.html +2 -1
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/base_narrow.html +1 -1
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/group/show.html +1 -1
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/invite/list.html +2 -2
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/invite/new.html +1 -1
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/mail/show.html +1 -1
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/role/show.html +1 -1
- uffd-2.3.1/uffd/templates/mfa/disable.html → uffd-2.4.0/uffd/templates/selfservice/disable_mfa.html +1 -1
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/selfservice/forgot_password.html +3 -3
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/selfservice/self.html +55 -6
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/selfservice/set_password.html +3 -3
- uffd-2.3.1/uffd/templates/mfa/setup.html → uffd-2.4.0/uffd/templates/selfservice/setup_mfa.html +11 -11
- uffd-2.3.1/uffd/templates/mfa/setup_recovery.html → uffd-2.4.0/uffd/templates/selfservice/setup_mfa_recovery.html +4 -4
- uffd-2.3.1/uffd/templates/mfa/setup_totp.html → uffd-2.4.0/uffd/templates/selfservice/setup_mfa_totp.html +1 -1
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/service/api.html +3 -3
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/service/oauth2.html +3 -3
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/service/show.html +2 -2
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/session/deviceauth.html +3 -3
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/session/devicelogin.html +1 -1
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/session/login.html +3 -3
- uffd-2.3.1/uffd/templates/mfa/auth.html → uffd-2.4.0/uffd/templates/session/mfa_auth.html +24 -11
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/signup/confirm.html +1 -1
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/signup/start.html +5 -5
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/user/list.html +1 -1
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/user/show.html +13 -6
- uffd-2.4.0/uffd/translations/de/LC_MESSAGES/messages.mo +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/translations/de/LC_MESSAGES/messages.po +809 -728
- {uffd-2.3.1 → uffd-2.4.0}/uffd/utils.py +1 -1
- {uffd-2.3.1 → uffd-2.4.0}/uffd/views/__init__.py +1 -2
- {uffd-2.3.1 → uffd-2.4.0}/uffd/views/invite.py +3 -3
- uffd-2.4.0/uffd/views/oauth2.py +508 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/views/selfservice.py +133 -2
- {uffd-2.3.1 → uffd-2.4.0}/uffd/views/session.py +158 -37
- {uffd-2.3.1 → uffd-2.4.0}/uffd/views/signup.py +5 -5
- {uffd-2.3.1 → uffd-2.4.0}/uffd/views/user.py +21 -2
- {uffd-2.3.1 → uffd-2.4.0/uffd.egg-info}/PKG-INFO +63 -7
- {uffd-2.3.1 → uffd-2.4.0}/uffd.egg-info/SOURCES.txt +15 -7
- {uffd-2.3.1 → uffd-2.4.0}/uffd.egg-info/requires.txt +3 -3
- uffd-2.3.1/uffd/fido2_compat.py +0 -26
- uffd-2.3.1/uffd/models/oauth2.py +0 -124
- uffd-2.3.1/uffd/static/style.css +0 -8
- uffd-2.3.1/uffd/translations/de/LC_MESSAGES/messages.mo +0 -0
- uffd-2.3.1/uffd/views/mfa.py +0 -237
- uffd-2.3.1/uffd/views/oauth2.py +0 -264
- {uffd-2.3.1 → uffd-2.4.0}/LICENSE +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/MANIFEST.in +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/setup.cfg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/tests/test_csrf.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/tests/test_password_hash.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/tests/test_ratelimit.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/tests/test_tasks.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/tests/test_utils.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/babel.cfg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/commands/__init__.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/commands/cleanup.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/commands/gendevcert.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/commands/group.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/commands/profile.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/commands/role.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/commands/roles_update_all.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/commands/unique_email_addresses.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/csrf.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/database.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/alembic.ini +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/env.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/script.py.mako +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/042879d5e3ac_lower_case_mail_receive_addresses.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/09d2edcaf0cc_add_expires_attribute_to_ratelimit_event.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/11ecc8f1ac3b_mysql_compat_fixes.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/23293f32b503_deactivate_users.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/2a6b1fb82ce6_added_missing_oauth2grant_code_index.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/2b68f688bec1_remailer_v2.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/468995a9c9ee_unique_email_addresses.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/54b2413586fd_invite_pk_change.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/5a07d4a63b64_role_inclusion.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/5cab70e95bf8_invite_creator_and_role_moderator_group.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/704d1245331c_remailer_setting_and_api_permission.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/878b25c4fae7_ldap_to_db.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/9f824f61d8ac_use_utc_for_datetime.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/a29870f95175_initial_migration.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/a594d3b3e05b_added_role_locked.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/a60ce68b9214_fix_not_null_on_role_groups_group_id.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/a8c6b6e91c28_device_login.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/a9b449776953_add_mfa_method_totp_last_counter.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/aeb07202a6c8_locking_and_new_id_allocation.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/af07cea65391_unified_password_hashing_for_user_and_signup.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/aff5f350dcdf_added_role_is_default.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/b273d7fdaa25_multiple_email_addresses.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/b8fbefca3675_added_api_permission_for_metrics.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/b9d3f7dac9db_move_api_and_oauth2_clients_to_db.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/bad6fc529510_added_rolegroup_requires_mfa_and_cleanup.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/bf71799b7b9e_add_id_to_signup_table.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/cbca20cf64d9_constraint_name_fixes.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/e13b733ec856_per_service_email_preferences.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/e249233e2a31_remailer_mode_overwrite.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/migrations/versions/e9a67175e179_add_id_to_selfservice_tokens.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/models/api.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/models/invite.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/models/misc.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/models/ratelimit.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/models/selfservice.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/navbar.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/secure_redirect.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/sendmail.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/bootstrap/bootstrap-grid.css +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/bootstrap/bootstrap-grid.css.map +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/bootstrap/bootstrap-grid.min.css +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/bootstrap/bootstrap-grid.min.css.map +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/bootstrap/bootstrap-reboot.css +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/bootstrap/bootstrap-reboot.css.map +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/bootstrap/bootstrap-reboot.min.css +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/bootstrap/bootstrap-reboot.min.css.map +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/bootstrap/bootstrap.bundle.js +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/bootstrap/bootstrap.bundle.js.map +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/bootstrap/bootstrap.bundle.min.js +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/bootstrap/bootstrap.bundle.min.js.map +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/bootstrap/bootstrap.css +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/bootstrap/bootstrap.css.map +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/bootstrap/bootstrap.js +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/bootstrap/bootstrap.js.map +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/bootstrap/bootstrap.min.css +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/bootstrap/bootstrap.min.css.map +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/bootstrap/bootstrap.min.js +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/bootstrap/bootstrap.min.js.map +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/cbor.js +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/empty.png +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/LICENSE.txt +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/css/all.css +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/css/all.min.css +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/css/brands.css +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/css/brands.min.css +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/css/fontawesome.css +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/css/fontawesome.min.css +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/css/regular.css +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/css/regular.min.css +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/css/solid.css +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/css/solid.min.css +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/css/svg-with-js.css +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/css/svg-with-js.min.css +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/css/v4-shims.css +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/css/v4-shims.min.css +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/js/all.js +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/js/all.min.js +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/js/brands.js +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/js/brands.min.js +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/js/conflict-detection.js +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/js/conflict-detection.min.js +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/js/fontawesome.js +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/js/fontawesome.min.js +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/js/regular.js +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/js/regular.min.js +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/js/solid.js +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/js/solid.min.js +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/js/v4-shims.js +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/js/v4-shims.min.js +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/less/_animated.less +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/less/_bordered-pulled.less +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/less/_core.less +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/less/_fixed-width.less +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/less/_icons.less +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/less/_larger.less +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/less/_list.less +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/less/_mixins.less +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/less/_rotated-flipped.less +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/less/_screen-reader.less +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/less/_shims.less +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/less/_stacked.less +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/less/_variables.less +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/less/brands.less +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/less/fontawesome.less +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/less/regular.less +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/less/solid.less +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/less/v4-shims.less +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/metadata/categories.yml +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/metadata/icons.json +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/metadata/icons.yml +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/metadata/shims.json +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/metadata/shims.yml +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/metadata/sponsors.yml +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/scss/_animated.scss +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/scss/_bordered-pulled.scss +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/scss/_core.scss +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/scss/_fixed-width.scss +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/scss/_icons.scss +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/scss/_larger.scss +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/scss/_list.scss +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/scss/_mixins.scss +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/scss/_rotated-flipped.scss +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/scss/_screen-reader.scss +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/scss/_shims.scss +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/scss/_stacked.scss +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/scss/_variables.scss +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/scss/brands.scss +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/scss/fontawesome.scss +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/scss/regular.scss +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/scss/solid.scss +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/scss/v4-shims.scss +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/sprites/brands.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/sprites/regular.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/sprites/solid.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/500px.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/accessible-icon.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/accusoft.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/acquisitions-incorporated.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/adn.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/adobe.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/adversal.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/affiliatetheme.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/airbnb.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/algolia.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/alipay.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/amazon-pay.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/amazon.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/amilia.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/android.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/angellist.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/angrycreative.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/angular.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/app-store-ios.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/app-store.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/apper.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/apple-pay.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/apple.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/artstation.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/asymmetrik.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/atlassian.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/audible.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/autoprefixer.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/avianex.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/aviato.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/aws.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/bandcamp.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/battle-net.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/behance-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/behance.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/bimobject.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/bitbucket.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/bitcoin.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/bity.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/black-tie.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/blackberry.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/blogger-b.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/blogger.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/bluetooth-b.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/bluetooth.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/bootstrap.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/btc.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/buffer.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/buromobelexperte.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/buy-n-large.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/buysellads.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/canadian-maple-leaf.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/cc-amazon-pay.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/cc-amex.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/cc-apple-pay.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/cc-diners-club.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/cc-discover.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/cc-jcb.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/cc-mastercard.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/cc-paypal.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/cc-stripe.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/cc-visa.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/centercode.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/centos.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/chrome.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/chromecast.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/cloudscale.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/cloudsmith.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/cloudversify.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/codepen.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/codiepie.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/confluence.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/connectdevelop.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/contao.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/cotton-bureau.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/cpanel.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/creative-commons-by.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/creative-commons-nc-eu.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/creative-commons-nc-jp.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/creative-commons-nc.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/creative-commons-nd.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/creative-commons-pd-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/creative-commons-pd.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/creative-commons-remix.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/creative-commons-sa.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/creative-commons-sampling-plus.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/creative-commons-sampling.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/creative-commons-share.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/creative-commons-zero.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/creative-commons.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/critical-role.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/css3-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/css3.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/cuttlefish.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/d-and-d-beyond.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/d-and-d.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/dashcube.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/delicious.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/deploydog.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/deskpro.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/dev.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/deviantart.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/dhl.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/diaspora.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/digg.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/digital-ocean.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/discord.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/discourse.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/dochub.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/docker.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/draft2digital.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/dribbble-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/dribbble.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/dropbox.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/drupal.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/dyalog.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/earlybirds.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/ebay.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/edge.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/elementor.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/ello.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/ember.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/empire.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/envira.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/erlang.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/ethereum.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/etsy.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/evernote.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/expeditedssl.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/facebook-f.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/facebook-messenger.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/facebook-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/facebook.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/fantasy-flight-games.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/fedex.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/fedora.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/figma.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/firefox-browser.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/firefox.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/first-order-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/first-order.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/firstdraft.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/flickr.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/flipboard.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/fly.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/font-awesome-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/font-awesome-flag.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/font-awesome-logo-full.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/font-awesome.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/fonticons-fi.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/fonticons.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/fort-awesome-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/fort-awesome.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/forumbee.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/foursquare.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/free-code-camp.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/freebsd.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/fulcrum.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/galactic-republic.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/galactic-senate.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/get-pocket.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/gg-circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/gg.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/git-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/git-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/git.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/github-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/github-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/github.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/gitkraken.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/gitlab.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/gitter.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/glide-g.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/glide.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/gofore.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/goodreads-g.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/goodreads.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/google-drive.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/google-play.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/google-plus-g.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/google-plus-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/google-plus.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/google-wallet.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/google.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/gratipay.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/grav.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/gripfire.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/grunt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/gulp.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/hacker-news-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/hacker-news.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/hackerrank.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/hips.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/hire-a-helper.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/hooli.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/hornbill.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/hotjar.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/houzz.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/html5.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/hubspot.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/ideal.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/imdb.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/instagram.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/intercom.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/internet-explorer.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/invision.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/ioxhost.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/itch-io.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/itunes-note.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/itunes.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/java.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/jedi-order.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/jenkins.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/jira.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/joget.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/joomla.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/js-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/js.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/jsfiddle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/kaggle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/keybase.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/keycdn.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/kickstarter-k.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/kickstarter.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/korvue.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/laravel.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/lastfm-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/lastfm.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/leanpub.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/less.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/line.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/linkedin-in.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/linkedin.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/linode.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/linux.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/lyft.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/magento.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/mailchimp.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/mandalorian.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/markdown.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/mastodon.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/maxcdn.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/mdb.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/medapps.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/medium-m.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/medium.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/medrt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/meetup.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/megaport.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/mendeley.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/microblog.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/microsoft.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/mix.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/mixcloud.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/mizuni.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/modx.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/monero.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/napster.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/neos.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/nimblr.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/node-js.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/node.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/npm.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/ns8.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/nutritionix.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/odnoklassniki-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/odnoklassniki.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/old-republic.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/opencart.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/openid.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/opera.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/optin-monster.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/orcid.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/osi.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/page4.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/pagelines.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/palfed.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/patreon.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/paypal.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/penny-arcade.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/periscope.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/phabricator.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/phoenix-framework.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/phoenix-squadron.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/php.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/pied-piper-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/pied-piper-hat.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/pied-piper-pp.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/pied-piper-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/pied-piper.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/pinterest-p.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/pinterest-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/pinterest.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/playstation.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/product-hunt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/pushed.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/python.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/qq.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/quinscape.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/quora.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/r-project.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/raspberry-pi.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/ravelry.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/react.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/reacteurope.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/readme.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/rebel.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/red-river.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/reddit-alien.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/reddit-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/reddit.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/redhat.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/renren.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/replyd.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/researchgate.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/resolving.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/rev.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/rocketchat.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/rockrms.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/safari.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/salesforce.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/sass.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/schlix.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/scribd.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/searchengin.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/sellcast.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/sellsy.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/servicestack.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/shirtsinbulk.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/shopware.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/simplybuilt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/sistrix.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/sith.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/sketch.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/skyatlas.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/skype.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/slack-hash.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/slack.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/slideshare.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/snapchat-ghost.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/snapchat-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/snapchat.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/soundcloud.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/sourcetree.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/speakap.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/speaker-deck.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/spotify.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/squarespace.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/stack-exchange.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/stack-overflow.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/stackpath.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/staylinked.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/steam-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/steam-symbol.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/steam.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/sticker-mule.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/strava.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/stripe-s.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/stripe.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/studiovinari.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/stumbleupon-circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/stumbleupon.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/superpowers.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/supple.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/suse.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/swift.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/symfony.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/teamspeak.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/telegram-plane.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/telegram.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/tencent-weibo.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/the-red-yeti.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/themeco.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/themeisle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/think-peaks.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/trade-federation.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/trello.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/tripadvisor.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/tumblr-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/tumblr.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/twitch.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/twitter-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/twitter.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/typo3.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/uber.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/ubuntu.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/uikit.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/umbraco.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/uniregistry.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/unity.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/untappd.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/ups.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/usb.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/usps.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/ussunnah.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/vaadin.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/viacoin.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/viadeo-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/viadeo.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/viber.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/vimeo-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/vimeo-v.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/vimeo.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/vine.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/vk.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/vnv.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/vuejs.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/waze.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/weebly.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/weibo.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/weixin.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/whatsapp-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/whatsapp.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/whmcs.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/wikipedia-w.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/windows.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/wix.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/wizards-of-the-coast.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/wolf-pack-battalion.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/wordpress-simple.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/wordpress.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/wpbeginner.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/wpexplorer.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/wpforms.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/wpressr.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/xbox.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/xing-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/xing.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/y-combinator.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/yahoo.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/yammer.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/yandex-international.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/yandex.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/yarn.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/yelp.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/yoast.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/youtube-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/youtube.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/brands/zhihu.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/address-book.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/address-card.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/angry.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/arrow-alt-circle-down.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/arrow-alt-circle-left.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/arrow-alt-circle-right.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/arrow-alt-circle-up.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/bell-slash.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/bell.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/bookmark.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/building.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/calendar-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/calendar-check.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/calendar-minus.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/calendar-plus.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/calendar-times.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/calendar.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/caret-square-down.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/caret-square-left.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/caret-square-right.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/caret-square-up.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/chart-bar.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/check-circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/check-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/clipboard.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/clock.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/clone.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/closed-captioning.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/comment-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/comment-dots.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/comment.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/comments.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/compass.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/copy.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/copyright.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/credit-card.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/dizzy.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/dot-circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/edit.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/envelope-open.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/envelope.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/eye-slash.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/eye.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/file-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/file-archive.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/file-audio.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/file-code.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/file-excel.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/file-image.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/file-pdf.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/file-powerpoint.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/file-video.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/file-word.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/file.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/flag.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/flushed.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/folder-open.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/folder.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/font-awesome-logo-full.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/frown-open.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/frown.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/futbol.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/gem.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/grimace.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/grin-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/grin-beam-sweat.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/grin-beam.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/grin-hearts.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/grin-squint-tears.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/grin-squint.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/grin-stars.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/grin-tears.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/grin-tongue-squint.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/grin-tongue-wink.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/grin-tongue.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/grin-wink.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/grin.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/hand-lizard.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/hand-paper.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/hand-peace.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/hand-point-down.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/hand-point-left.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/hand-point-right.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/hand-point-up.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/hand-pointer.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/hand-rock.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/hand-scissors.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/hand-spock.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/handshake.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/hdd.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/heart.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/hospital.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/hourglass.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/id-badge.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/id-card.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/image.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/images.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/keyboard.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/kiss-beam.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/kiss-wink-heart.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/kiss.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/laugh-beam.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/laugh-squint.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/laugh-wink.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/laugh.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/lemon.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/life-ring.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/lightbulb.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/list-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/map.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/meh-blank.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/meh-rolling-eyes.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/meh.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/minus-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/money-bill-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/moon.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/newspaper.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/object-group.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/object-ungroup.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/paper-plane.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/pause-circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/play-circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/plus-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/question-circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/registered.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/sad-cry.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/sad-tear.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/save.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/share-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/smile-beam.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/smile-wink.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/smile.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/snowflake.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/star-half.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/star.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/sticky-note.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/stop-circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/sun.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/surprise.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/thumbs-down.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/thumbs-up.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/times-circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/tired.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/trash-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/user-circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/user.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/window-close.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/window-maximize.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/window-minimize.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/regular/window-restore.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/ad.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/address-book.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/address-card.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/adjust.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/air-freshener.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/align-center.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/align-justify.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/align-left.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/align-right.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/allergies.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/ambulance.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/american-sign-language-interpreting.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/anchor.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/angle-double-down.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/angle-double-left.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/angle-double-right.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/angle-double-up.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/angle-down.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/angle-left.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/angle-right.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/angle-up.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/angry.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/ankh.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/apple-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/archive.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/archway.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/arrow-alt-circle-down.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/arrow-alt-circle-left.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/arrow-alt-circle-right.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/arrow-alt-circle-up.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/arrow-circle-down.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/arrow-circle-left.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/arrow-circle-right.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/arrow-circle-up.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/arrow-down.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/arrow-left.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/arrow-right.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/arrow-up.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/arrows-alt-h.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/arrows-alt-v.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/arrows-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/assistive-listening-systems.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/asterisk.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/at.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/atlas.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/atom.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/audio-description.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/award.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/baby-carriage.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/baby.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/backspace.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/backward.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/bacon.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/bahai.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/balance-scale-left.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/balance-scale-right.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/balance-scale.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/ban.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/band-aid.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/barcode.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/bars.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/baseball-ball.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/basketball-ball.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/bath.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/battery-empty.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/battery-full.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/battery-half.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/battery-quarter.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/battery-three-quarters.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/bed.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/beer.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/bell-slash.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/bell.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/bezier-curve.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/bible.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/bicycle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/biking.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/binoculars.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/biohazard.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/birthday-cake.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/blender-phone.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/blender.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/blind.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/blog.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/bold.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/bolt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/bomb.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/bone.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/bong.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/book-dead.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/book-medical.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/book-open.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/book-reader.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/book.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/bookmark.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/border-all.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/border-none.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/border-style.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/bowling-ball.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/box-open.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/box.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/boxes.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/braille.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/brain.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/bread-slice.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/briefcase-medical.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/briefcase.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/broadcast-tower.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/broom.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/brush.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/bug.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/building.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/bullhorn.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/bullseye.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/burn.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/bus-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/bus.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/business-time.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/calculator.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/calendar-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/calendar-check.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/calendar-day.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/calendar-minus.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/calendar-plus.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/calendar-times.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/calendar-week.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/calendar.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/camera-retro.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/camera.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/campground.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/candy-cane.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cannabis.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/capsules.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/car-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/car-battery.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/car-crash.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/car-side.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/car.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/caravan.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/caret-down.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/caret-left.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/caret-right.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/caret-square-down.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/caret-square-left.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/caret-square-right.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/caret-square-up.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/caret-up.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/carrot.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cart-arrow-down.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cart-plus.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cash-register.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cat.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/certificate.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/chair.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/chalkboard-teacher.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/chalkboard.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/charging-station.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/chart-area.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/chart-bar.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/chart-line.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/chart-pie.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/check-circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/check-double.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/check-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/check.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cheese.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/chess-bishop.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/chess-board.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/chess-king.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/chess-knight.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/chess-pawn.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/chess-queen.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/chess-rook.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/chess.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/chevron-circle-down.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/chevron-circle-left.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/chevron-circle-right.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/chevron-circle-up.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/chevron-down.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/chevron-left.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/chevron-right.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/chevron-up.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/child.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/church.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/circle-notch.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/city.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/clinic-medical.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/clipboard-check.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/clipboard-list.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/clipboard.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/clock.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/clone.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/closed-captioning.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cloud-download-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cloud-meatball.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cloud-moon-rain.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cloud-moon.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cloud-rain.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cloud-showers-heavy.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cloud-sun-rain.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cloud-sun.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cloud-upload-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cloud.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cocktail.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/code-branch.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/code.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/coffee.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cog.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cogs.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/coins.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/columns.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/comment-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/comment-dollar.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/comment-dots.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/comment-medical.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/comment-slash.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/comment.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/comments-dollar.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/comments.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/compact-disc.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/compass.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/compress-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/compress-arrows-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/compress.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/concierge-bell.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cookie-bite.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cookie.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/copy.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/copyright.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/couch.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/credit-card.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/crop-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/crop.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cross.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/crosshairs.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/crow.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/crown.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/crutch.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cube.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cubes.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/cut.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/database.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/deaf.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/democrat.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/desktop.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/dharmachakra.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/diagnoses.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/dice-d20.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/dice-d6.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/dice-five.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/dice-four.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/dice-one.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/dice-six.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/dice-three.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/dice-two.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/dice.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/digital-tachograph.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/directions.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/divide.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/dizzy.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/dna.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/dog.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/dollar-sign.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/dolly-flatbed.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/dolly.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/donate.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/door-closed.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/door-open.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/dot-circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/dove.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/download.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/drafting-compass.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/dragon.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/draw-polygon.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/drum-steelpan.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/drum.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/drumstick-bite.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/dumbbell.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/dumpster-fire.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/dumpster.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/dungeon.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/edit.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/egg.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/eject.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/ellipsis-h.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/ellipsis-v.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/envelope-open-text.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/envelope-open.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/envelope-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/envelope.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/equals.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/eraser.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/ethernet.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/euro-sign.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/exchange-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/exclamation-circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/exclamation-triangle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/exclamation.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/expand-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/expand-arrows-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/expand.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/external-link-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/external-link-square-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/eye-dropper.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/eye-slash.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/eye.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/fan.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/fast-backward.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/fast-forward.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/fax.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/feather-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/feather.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/female.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/fighter-jet.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/file-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/file-archive.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/file-audio.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/file-code.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/file-contract.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/file-csv.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/file-download.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/file-excel.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/file-export.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/file-image.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/file-import.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/file-invoice-dollar.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/file-invoice.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/file-medical-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/file-medical.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/file-pdf.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/file-powerpoint.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/file-prescription.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/file-signature.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/file-upload.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/file-video.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/file-word.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/file.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/fill-drip.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/fill.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/film.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/filter.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/fingerprint.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/fire-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/fire-extinguisher.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/fire.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/first-aid.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/fish.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/fist-raised.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/flag-checkered.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/flag-usa.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/flag.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/flask.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/flushed.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/folder-minus.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/folder-open.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/folder-plus.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/folder.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/font-awesome-logo-full.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/font.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/football-ball.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/forward.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/frog.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/frown-open.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/frown.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/funnel-dollar.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/futbol.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/gamepad.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/gas-pump.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/gavel.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/gem.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/genderless.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/ghost.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/gift.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/gifts.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/glass-cheers.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/glass-martini-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/glass-martini.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/glass-whiskey.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/glasses.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/globe-africa.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/globe-americas.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/globe-asia.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/globe-europe.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/globe.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/golf-ball.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/gopuram.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/graduation-cap.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/greater-than-equal.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/greater-than.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/grimace.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/grin-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/grin-beam-sweat.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/grin-beam.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/grin-hearts.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/grin-squint-tears.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/grin-squint.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/grin-stars.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/grin-tears.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/grin-tongue-squint.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/grin-tongue-wink.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/grin-tongue.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/grin-wink.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/grin.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/grip-horizontal.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/grip-lines-vertical.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/grip-lines.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/grip-vertical.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/guitar.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/h-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hamburger.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hammer.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hamsa.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hand-holding-heart.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hand-holding-usd.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hand-holding.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hand-lizard.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hand-middle-finger.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hand-paper.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hand-peace.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hand-point-down.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hand-point-left.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hand-point-right.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hand-point-up.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hand-pointer.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hand-rock.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hand-scissors.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hand-spock.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hands-helping.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hands.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/handshake.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hanukiah.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hard-hat.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hashtag.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hat-cowboy-side.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hat-cowboy.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hat-wizard.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hdd.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/heading.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/headphones-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/headphones.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/headset.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/heart-broken.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/heart.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/heartbeat.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/helicopter.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/highlighter.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hiking.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hippo.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/history.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hockey-puck.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/holly-berry.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/home.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/horse-head.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/horse.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hospital-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hospital-symbol.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hospital.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hot-tub.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hotdog.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hotel.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hourglass-end.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hourglass-half.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hourglass-start.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hourglass.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/house-damage.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/hryvnia.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/i-cursor.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/ice-cream.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/icicles.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/icons.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/id-badge.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/id-card-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/id-card.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/igloo.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/image.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/images.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/inbox.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/indent.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/industry.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/infinity.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/info-circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/info.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/italic.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/jedi.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/joint.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/journal-whills.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/kaaba.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/key.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/keyboard.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/khanda.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/kiss-beam.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/kiss-wink-heart.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/kiss.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/kiwi-bird.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/landmark.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/language.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/laptop-code.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/laptop-medical.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/laptop.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/laugh-beam.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/laugh-squint.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/laugh-wink.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/laugh.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/layer-group.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/leaf.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/lemon.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/less-than-equal.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/less-than.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/level-down-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/level-up-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/life-ring.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/lightbulb.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/link.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/lira-sign.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/list-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/list-ol.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/list-ul.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/list.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/location-arrow.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/lock-open.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/lock.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/long-arrow-alt-down.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/long-arrow-alt-left.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/long-arrow-alt-right.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/long-arrow-alt-up.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/low-vision.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/luggage-cart.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/magic.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/magnet.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/mail-bulk.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/male.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/map-marked-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/map-marked.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/map-marker-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/map-marker.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/map-pin.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/map-signs.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/map.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/marker.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/mars-double.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/mars-stroke-h.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/mars-stroke-v.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/mars-stroke.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/mars.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/mask.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/medal.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/medkit.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/meh-blank.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/meh-rolling-eyes.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/meh.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/memory.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/menorah.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/mercury.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/meteor.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/microchip.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/microphone-alt-slash.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/microphone-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/microphone-slash.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/microphone.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/microscope.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/minus-circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/minus-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/minus.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/mitten.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/mobile-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/mobile.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/money-bill-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/money-bill-wave-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/money-bill-wave.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/money-bill.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/money-check-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/money-check.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/monument.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/moon.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/mortar-pestle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/mosque.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/motorcycle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/mountain.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/mouse-pointer.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/mouse.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/mug-hot.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/music.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/network-wired.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/neuter.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/newspaper.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/not-equal.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/notes-medical.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/object-group.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/object-ungroup.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/oil-can.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/om.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/otter.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/outdent.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/pager.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/paint-brush.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/paint-roller.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/palette.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/pallet.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/paper-plane.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/paperclip.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/parachute-box.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/paragraph.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/parking.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/passport.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/pastafarianism.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/paste.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/pause-circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/pause.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/paw.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/peace.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/pen-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/pen-fancy.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/pen-nib.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/pen-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/pen.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/pencil-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/pencil-ruler.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/people-carry.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/pepper-hot.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/percent.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/percentage.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/person-booth.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/phone-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/phone-slash.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/phone-square-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/phone-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/phone-volume.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/phone.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/photo-video.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/piggy-bank.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/pills.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/pizza-slice.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/place-of-worship.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/plane-arrival.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/plane-departure.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/plane.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/play-circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/play.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/plug.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/plus-circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/plus-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/plus.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/podcast.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/poll-h.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/poll.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/poo-storm.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/poo.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/poop.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/portrait.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/pound-sign.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/power-off.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/pray.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/praying-hands.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/prescription-bottle-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/prescription-bottle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/prescription.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/print.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/procedures.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/project-diagram.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/puzzle-piece.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/qrcode.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/question-circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/question.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/quidditch.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/quote-left.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/quote-right.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/quran.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/radiation-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/radiation.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/rainbow.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/random.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/receipt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/record-vinyl.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/recycle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/redo-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/redo.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/registered.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/remove-format.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/reply-all.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/reply.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/republican.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/restroom.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/retweet.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/ribbon.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/ring.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/road.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/robot.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/rocket.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/route.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/rss-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/rss.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/ruble-sign.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/ruler-combined.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/ruler-horizontal.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/ruler-vertical.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/ruler.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/running.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/rupee-sign.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sad-cry.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sad-tear.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/satellite-dish.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/satellite.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/save.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/school.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/screwdriver.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/scroll.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sd-card.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/search-dollar.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/search-location.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/search-minus.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/search-plus.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/search.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/seedling.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/server.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/shapes.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/share-alt-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/share-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/share-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/share.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/shekel-sign.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/shield-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/ship.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/shipping-fast.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/shoe-prints.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/shopping-bag.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/shopping-basket.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/shopping-cart.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/shower.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/shuttle-van.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sign-in-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sign-language.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sign-out-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sign.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/signal.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/signature.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sim-card.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sitemap.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/skating.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/skiing-nordic.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/skiing.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/skull-crossbones.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/skull.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/slash.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sleigh.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sliders-h.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/smile-beam.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/smile-wink.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/smile.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/smog.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/smoking-ban.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/smoking.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sms.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/snowboarding.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/snowflake.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/snowman.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/snowplow.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/socks.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/solar-panel.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sort-alpha-down-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sort-alpha-down.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sort-alpha-up-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sort-alpha-up.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sort-amount-down-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sort-amount-down.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sort-amount-up-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sort-amount-up.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sort-down.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sort-numeric-down-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sort-numeric-down.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sort-numeric-up-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sort-numeric-up.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sort-up.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sort.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/spa.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/space-shuttle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/spell-check.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/spider.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/spinner.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/splotch.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/spray-can.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/square-full.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/square-root-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/stamp.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/star-and-crescent.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/star-half-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/star-half.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/star-of-david.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/star-of-life.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/star.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/step-backward.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/step-forward.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/stethoscope.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sticky-note.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/stop-circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/stop.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/stopwatch.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/store-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/store.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/stream.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/street-view.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/strikethrough.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/stroopwafel.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/subscript.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/subway.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/suitcase-rolling.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/suitcase.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sun.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/superscript.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/surprise.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/swatchbook.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/swimmer.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/swimming-pool.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/synagogue.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sync-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/sync.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/syringe.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/table-tennis.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/table.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/tablet-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/tablet.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/tablets.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/tachometer-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/tag.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/tags.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/tape.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/tasks.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/taxi.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/teeth-open.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/teeth.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/temperature-high.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/temperature-low.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/tenge.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/terminal.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/text-height.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/text-width.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/th-large.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/th-list.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/th.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/theater-masks.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/thermometer-empty.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/thermometer-full.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/thermometer-half.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/thermometer-quarter.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/thermometer-three-quarters.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/thermometer.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/thumbs-down.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/thumbs-up.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/thumbtack.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/ticket-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/times-circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/times.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/tint-slash.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/tint.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/tired.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/toggle-off.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/toggle-on.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/toilet-paper.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/toilet.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/toolbox.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/tools.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/tooth.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/torah.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/torii-gate.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/tractor.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/trademark.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/traffic-light.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/trailer.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/train.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/tram.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/transgender-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/transgender.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/trash-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/trash-restore-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/trash-restore.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/trash.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/tree.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/trophy.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/truck-loading.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/truck-monster.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/truck-moving.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/truck-pickup.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/truck.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/tshirt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/tty.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/tv.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/umbrella-beach.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/umbrella.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/underline.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/undo-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/undo.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/universal-access.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/university.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/unlink.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/unlock-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/unlock.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/upload.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user-alt-slash.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user-astronaut.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user-check.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user-circle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user-clock.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user-cog.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user-edit.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user-friends.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user-graduate.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user-injured.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user-lock.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user-md.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user-minus.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user-ninja.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user-nurse.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user-plus.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user-secret.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user-shield.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user-slash.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user-tag.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user-tie.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user-times.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/user.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/users-cog.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/users.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/utensil-spoon.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/utensils.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/vector-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/venus-double.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/venus-mars.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/venus.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/vial.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/vials.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/video-slash.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/video.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/vihara.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/voicemail.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/volleyball-ball.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/volume-down.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/volume-mute.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/volume-off.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/volume-up.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/vote-yea.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/vr-cardboard.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/walking.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/wallet.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/warehouse.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/water.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/wave-square.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/weight-hanging.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/weight.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/wheelchair.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/wifi.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/wind.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/window-close.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/window-maximize.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/window-minimize.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/window-restore.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/wine-bottle.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/wine-glass-alt.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/wine-glass.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/won-sign.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/wrench.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/x-ray.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/yen-sign.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/svgs/solid/yin-yang.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/webfonts/fa-brands-400.eot +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/webfonts/fa-brands-400.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/webfonts/fa-brands-400.ttf +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/webfonts/fa-brands-400.woff +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/webfonts/fa-brands-400.woff2 +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/webfonts/fa-regular-400.eot +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/webfonts/fa-regular-400.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/webfonts/fa-regular-400.ttf +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/webfonts/fa-regular-400.woff +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/webfonts/fa-regular-400.woff2 +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/webfonts/fa-solid-900.eot +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/webfonts/fa-solid-900.svg +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/webfonts/fa-solid-900.ttf +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/webfonts/fa-solid-900.woff +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/fa/webfonts/fa-solid-900.woff2 +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/jquery/jquery-3.4.1.min.js +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/jquery/jquery-3.4.1.min.map +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/static/popper/popper-1.16.0.min.js +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/tasks.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/group/list.html +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/invite/use.html +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/mail/list.html +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/oauth2/error.html +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/oauth2/logout.html +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/role/list.html +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/rolemod/list.html +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/rolemod/show.html +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/selfservice/mailverification.mail.txt +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/selfservice/newuser.mail.txt +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/selfservice/passwordreset.mail.txt +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/service/index.html +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/service/overview.html +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/signup/mail.txt +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/templates/signup/submitted.html +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/views/api.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/views/group.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/views/mail.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/views/role.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/views/rolemod.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd/views/service.py +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd.egg-info/dependency_links.txt +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd.egg-info/not-zip-safe +0 -0
- {uffd-2.3.1 → uffd-2.4.0}/uffd.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: uffd
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.4.0
|
|
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:
|
|
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
|
|
@@ -47,6 +47,17 @@ Requires-Dist: urllib3==1.24.1
|
|
|
47
47
|
Requires-Dist: Werkzeug==0.14.1
|
|
48
48
|
Requires-Dist: python-dateutil==2.7.3
|
|
49
49
|
Requires-Dist: Mako==1.0.7
|
|
50
|
+
Dynamic: author
|
|
51
|
+
Dynamic: author-email
|
|
52
|
+
Dynamic: classifier
|
|
53
|
+
Dynamic: description
|
|
54
|
+
Dynamic: description-content-type
|
|
55
|
+
Dynamic: home-page
|
|
56
|
+
Dynamic: license
|
|
57
|
+
Dynamic: license-file
|
|
58
|
+
Dynamic: requires-dist
|
|
59
|
+
Dynamic: requires-python
|
|
60
|
+
Dynamic: summary
|
|
50
61
|
|
|
51
62
|
**DO NOT INSTALL FROM PIP FOR PRODUCTION DEPLOYMENTS**, see [Deployment](#Deployment) for more information.
|
|
52
63
|
|
|
@@ -69,11 +80,13 @@ Please note that we refer to Debian packages here and **not** pip packages.
|
|
|
69
80
|
- python3-qrcode
|
|
70
81
|
- python3-fido2 (version 0.5.0 or 0.9.1, optional)
|
|
71
82
|
- python3-prometheus-client (optional, needed for metrics)
|
|
72
|
-
- python3-
|
|
83
|
+
- python3-jwt
|
|
84
|
+
- python3-cryptography
|
|
73
85
|
- python3-flask-babel
|
|
74
86
|
- python3-argon2
|
|
75
87
|
- python3-itsdangerous (also a dependency of python3-flask)
|
|
76
88
|
- python3-mysqldb or python3-pymysql for MariaDB support
|
|
89
|
+
- python3-ua-parser (optional, better user agent parsing)
|
|
77
90
|
|
|
78
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.
|
|
79
92
|
For development, you can also use virtualenv with the supplied `requirements.txt`.
|
|
@@ -151,6 +164,8 @@ The services need to be setup to use the following URLs with the Authorization C
|
|
|
151
164
|
* `/oauth2/token`: token request endpoint
|
|
152
165
|
* `/oauth2/userinfo`: endpoint that provides information about the current user
|
|
153
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
|
+
|
|
154
169
|
The only OAuth2 scope supported is `profile`. The userinfo endpoint returns json data with the following structure:
|
|
155
170
|
|
|
156
171
|
```
|
|
@@ -168,6 +183,47 @@ The only OAuth2 scope supported is `profile`. The userinfo endpoint returns json
|
|
|
168
183
|
|
|
169
184
|
`id` is the numeric (Unix) user id, `name` the display name and `nickname` the loginname of the user.
|
|
170
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
|
+
|
|
171
227
|
## Metrics
|
|
172
228
|
|
|
173
229
|
Uffd can export metrics in a prometheus compatible way. It needs python3-prometheus-client for this feature to work.
|
|
@@ -188,7 +244,7 @@ uffd_version_info{version="local"} 1.0
|
|
|
188
244
|
|
|
189
245
|
## Translation
|
|
190
246
|
|
|
191
|
-
The web
|
|
247
|
+
The web front end is initially written in English and translated in the following Languages:
|
|
192
248
|
|
|
193
249
|

|
|
194
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-
|
|
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
|
|
182
|
+
The web front end is initially written in English and translated in the following Languages:
|
|
138
183
|
|
|
139
184
|

|
|
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
|
-
'
|
|
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
|
|
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
|
|
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.
|
|
50
|
-
|
|
51
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
12
|
-
(i.e. `CHECK`
|
|
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
|
-
|
|
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
|
-
|
|
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')
|
uffd-2.4.0/uffd/migrations/versions/4bd316207e59_unified_password_hashing_for_recovery_codes.py
ADDED
|
@@ -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')
|