pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/www/py-flask-security



Module Name:    pkgsrc
Committed By:   adam
Date:           Wed Jan 29 12:08:12 UTC 2025

Modified Files:
        pkgsrc/www/py-flask-security: Makefile PLIST distinfo
Removed Files:
        pkgsrc/www/py-flask-security/patches: patch-setup.py

Log Message:
py-flask-security: updated to 5.5.2

Version 5.5.2
-------------

Released August 5, 2024

More attempts to upload to pypi both flask-security and flask-security-too.
No code changes - however the build manifest changed so the source distribution
contents might be slightly different.

Docs and Chores
+++++++++++++++
- (:pr:`1019`) Separate publish workflows for each pypi package

Version 5.5.1
-------------

Released August 1, 2024

I am pleased to announce that Flask-Security-Too is now part of pallets-eco and has returned
to be released as 'Flask-Security'. For the foreseeable future, we will publish the same release to both
Flask-Security and Flask-Security-Too on PyPI.

There are no code changes.

Docs and Chores
+++++++++++++++
- (:pr:`1015`) Convert docs, links, badges, etc to pallets-eco

Version 5.5.0
-------------

Released July 24, 2024

Features & Improvements
+++++++++++++++++++++++
- (:issue:`956`) Add support for changing registered user's email (:py:data:`SECURITY_CHANGE_EMAIL`).
- (:issue:`944`) Change default password hash to argon2 (was bcrypt). See below for details.
- (:pr:`990`) Add freshness capability to auth tokens (enables /us-setup to function w/ just auth tokens).
- (:pr:`991`) Add support to /tf-setup to not require sessions (use a state token).
- (:issue:`994`) Add support for Flask-SQLAlchemy-Lite - including new all-inclusive models
  that conform to sqlalchemy latest best-practice (type-annotated).
- (:pr:`1007`) Convert other sqlalchemy-based datastores from legacy 'model.query' to best-practice 'select'
- (:issue:`983`) Allow applications more flexibility defining allowable redirects.

Fixes
+++++
- (:pr:`972`) Set :py:data:`SECURITY_CSRF_COOKIE` at beginning (GET /login) of authentication
  ritual - just as we return the CSRF token. (thanks @e-goto)
- (:issue:`973`) login and unified sign in should handle GET for authenticated user consistently.
- (:pr:`995`) Don't show sms options if not defined in US_ENABLED_METHODS. (fredipevcin)
- (:pr:`1009`) Change :py:data:`SECURITY_DEPRECATED_HASHING_SCHEMES` to ``["auto"]``.

Docs and Chores
+++++++++++++++
- (:pr:`979`) Update Russian translations (ademaro)
- (:pr:`1004`) Update ES and IT translations (gissimo)
- (:pr:`981` and :pr:`977`) Improve docs
- (:pr:`992`) The long deprecated `get_token_status` is no longer exported
- (:pr:`992`) Drop Python 3.8 support.
- (:issue:`1001`) Try a different approach to typing User and Role models.

Backwards Compatibility Concerns
+++++++++++++++++++++++++++++++++
- Notes around the change to argon2 as the default password hash:
    - applications should add the argon2_cffi package to their requirements (it is included in the flask_security[common] extras).
    - leave bcrypt installed so that old passwords still work.
    - the default configuration will re-hash passwords with argon2 upon first use.
- Changes to /tf-setup
    The old path - using state set in the session still works as before. The new path is
    just for the case an authenticated user wants to change their 2FA setup.
- Changes to sqlalchemy-based datastores
    Flask-Security no longer uses the legacy model.query - all DB access is done via
    `select(xx).where(xx)`. As a result the find_user() method now only takes a SINGLE
    column:value from its kwargs - in prior releases all kwargs were passed into the query.filter.


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 pkgsrc/www/py-flask-security/Makefile
cvs rdiff -u -r1.3 -r1.4 pkgsrc/www/py-flask-security/PLIST
cvs rdiff -u -r1.13 -r1.14 pkgsrc/www/py-flask-security/distinfo
cvs rdiff -u -r1.1 -r0 pkgsrc/www/py-flask-security/patches/patch-setup.py

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/www/py-flask-security/Makefile
diff -u pkgsrc/www/py-flask-security/Makefile:1.19 pkgsrc/www/py-flask-security/Makefile:1.20
--- pkgsrc/www/py-flask-security/Makefile:1.19  Mon Nov 11 07:29:23 2024
+++ pkgsrc/www/py-flask-security/Makefile       Wed Jan 29 12:08:12 2025
@@ -1,30 +1,27 @@
-# $NetBSD: Makefile,v 1.19 2024/11/11 07:29:23 wiz Exp $
+# $NetBSD: Makefile,v 1.20 2025/01/29 12:08:12 adam Exp $
 
-DISTNAME=      Flask-Security-3.0.0
-PKGNAME=       ${PYPKGPREFIX}-${DISTNAME:tl}
-PKGREVISION=   3
+DISTNAME=      flask_security-5.5.2
+PKGNAME=       ${PYPKGPREFIX}-${DISTNAME:S/_/-/}
 CATEGORIES=    www python
 MASTER_SITES=  ${MASTER_SITE_PYPI:=F/Flask-Security/}
 
 MAINTAINER=    kleink%NetBSD.org@localhost
-#HOMEPAGE=     https://pythonhosted.org/Flask-Security/
+HOMEPAGE=      https://flask-security.readthedocs.io/
 COMMENT=       Simple security for Flask apps
 LICENSE=       mit
 
-TOOL_DEPENDS+= ${PYPKGPREFIX}-setuptools>=0:../../devel/py-setuptools
-DEPENDS+=      ${PYPKGPREFIX}-flask>=0.11:../../www/py-flask
-DEPENDS+=      ${PYPKGPREFIX}-flask-babelex>=0.9.3:../../www/py-flask-babelex
-DEPENDS+=      ${PYPKGPREFIX}-flask-login>=0.3.0:../../www/py-flask-login
-DEPENDS+=      ${PYPKGPREFIX}-flask-mail>=0.7.3:../../www/py-flask-mail
-DEPENDS+=      ${PYPKGPREFIX}-flask-principal>=0.3.3:../../www/py-flask-principal
-DEPENDS+=      ${PYPKGPREFIX}-flask-wtf>=0.13.1:../../www/py-flask-wtf
-DEPENDS+=      ${PYPKGPREFIX}-itsdangerous>=0.21:../../security/py-itsdangerous
-DEPENDS+=      ${PYPKGPREFIX}-passlib>=1.7:../../security/py-passlib
-TEST_DEPENDS+= ${PYPKGPREFIX}-test-cov>=0:../../devel/py-test-cov
+TOOL_DEPENDS+= ${PYPKGPREFIX}-flit_core>=3.8:../../devel/py-flit_core
+DEPENDS+=      ${PYPKGPREFIX}-email_validator>=2.0.0:../../mail/py-email_validator
+DEPENDS+=      ${PYPKGPREFIX}-flask>=3.0.0:../../www/py-flask
+DEPENDS+=      ${PYPKGPREFIX}-flask-login>=0.6.3:../../www/py-flask-login
+DEPENDS+=      ${PYPKGPREFIX}-flask-principal>=0.4.0:../../www/py-flask-principal
+DEPENDS+=      ${PYPKGPREFIX}-flask-wtf>=1.1.2:../../www/py-flask-wtf
+DEPENDS+=      ${PYPKGPREFIX}-importlib-resources>=5.10.0:../../devel/py-importlib-resources
+DEPENDS+=      ${PYPKGPREFIX}-markupsafe>=2.1.0:../../textproc/py-markupsafe
+DEPENDS+=      ${PYPKGPREFIX}-passlib>=1.7.4:../../security/py-passlib
+DEPENDS+=      ${PYPKGPREFIX}-wtforms>=3.0.0:../../www/py-wtforms
 
-USE_LANGUAGES= # empty
-
-PYTHON_VERSIONS_INCOMPATIBLE=  27
+USE_LANGUAGES= # none
 
 .include "../../lang/python/wheel.mk"
 .include "../../mk/bsd.pkg.mk"

Index: pkgsrc/www/py-flask-security/PLIST
diff -u pkgsrc/www/py-flask-security/PLIST:1.3 pkgsrc/www/py-flask-security/PLIST:1.4
--- pkgsrc/www/py-flask-security/PLIST:1.3      Sat Aug 10 09:42:15 2024
+++ pkgsrc/www/py-flask-security/PLIST  Wed Jan 29 12:08:12 2025
@@ -1,16 +1,17 @@
-@comment $NetBSD: PLIST,v 1.3 2024/08/10 09:42:15 wiz Exp $
-${PYSITELIB}/${WHEEL_INFODIR}/AUTHORS
-${PYSITELIB}/${WHEEL_INFODIR}/LICENSE
+@comment $NetBSD: PLIST,v 1.4 2025/01/29 12:08:12 adam Exp $
+${PYSITELIB}/${WHEEL_INFODIR}/LICENSE.txt
 ${PYSITELIB}/${WHEEL_INFODIR}/METADATA
 ${PYSITELIB}/${WHEEL_INFODIR}/RECORD
 ${PYSITELIB}/${WHEEL_INFODIR}/WHEEL
-${PYSITELIB}/${WHEEL_INFODIR}/top_level.txt
 ${PYSITELIB}/flask_security/__init__.py
 ${PYSITELIB}/flask_security/__init__.pyc
 ${PYSITELIB}/flask_security/__init__.pyo
 ${PYSITELIB}/flask_security/babel.py
 ${PYSITELIB}/flask_security/babel.pyc
 ${PYSITELIB}/flask_security/babel.pyo
+${PYSITELIB}/flask_security/change_email.py
+${PYSITELIB}/flask_security/change_email.pyc
+${PYSITELIB}/flask_security/change_email.pyo
 ${PYSITELIB}/flask_security/changeable.py
 ${PYSITELIB}/flask_security/changeable.pyc
 ${PYSITELIB}/flask_security/changeable.pyo
@@ -32,25 +33,71 @@ ${PYSITELIB}/flask_security/decorators.p
 ${PYSITELIB}/flask_security/forms.py
 ${PYSITELIB}/flask_security/forms.pyc
 ${PYSITELIB}/flask_security/forms.pyo
+${PYSITELIB}/flask_security/json.py
+${PYSITELIB}/flask_security/json.pyc
+${PYSITELIB}/flask_security/json.pyo
+${PYSITELIB}/flask_security/mail_util.py
+${PYSITELIB}/flask_security/mail_util.pyc
+${PYSITELIB}/flask_security/mail_util.pyo
+${PYSITELIB}/flask_security/models/__init__.py
+${PYSITELIB}/flask_security/models/__init__.pyc
+${PYSITELIB}/flask_security/models/__init__.pyo
+${PYSITELIB}/flask_security/models/fsqla.py
+${PYSITELIB}/flask_security/models/fsqla.pyc
+${PYSITELIB}/flask_security/models/fsqla.pyo
+${PYSITELIB}/flask_security/models/fsqla_v2.py
+${PYSITELIB}/flask_security/models/fsqla_v2.pyc
+${PYSITELIB}/flask_security/models/fsqla_v2.pyo
+${PYSITELIB}/flask_security/models/fsqla_v3.py
+${PYSITELIB}/flask_security/models/fsqla_v3.pyc
+${PYSITELIB}/flask_security/models/fsqla_v3.pyo
+${PYSITELIB}/flask_security/models/sqla.py
+${PYSITELIB}/flask_security/models/sqla.pyc
+${PYSITELIB}/flask_security/models/sqla.pyo
+${PYSITELIB}/flask_security/oauth_glue.py
+${PYSITELIB}/flask_security/oauth_glue.pyc
+${PYSITELIB}/flask_security/oauth_glue.pyo
+${PYSITELIB}/flask_security/oauth_provider.py
+${PYSITELIB}/flask_security/oauth_provider.pyc
+${PYSITELIB}/flask_security/oauth_provider.pyo
+${PYSITELIB}/flask_security/password_util.py
+${PYSITELIB}/flask_security/password_util.pyc
+${PYSITELIB}/flask_security/password_util.pyo
 ${PYSITELIB}/flask_security/passwordless.py
 ${PYSITELIB}/flask_security/passwordless.pyc
 ${PYSITELIB}/flask_security/passwordless.pyo
+${PYSITELIB}/flask_security/phone_util.py
+${PYSITELIB}/flask_security/phone_util.pyc
+${PYSITELIB}/flask_security/phone_util.pyo
+${PYSITELIB}/flask_security/proxies.py
+${PYSITELIB}/flask_security/proxies.pyc
+${PYSITELIB}/flask_security/proxies.pyo
+${PYSITELIB}/flask_security/py.typed
+${PYSITELIB}/flask_security/quart_compat.py
+${PYSITELIB}/flask_security/quart_compat.pyc
+${PYSITELIB}/flask_security/quart_compat.pyo
 ${PYSITELIB}/flask_security/recoverable.py
 ${PYSITELIB}/flask_security/recoverable.pyc
 ${PYSITELIB}/flask_security/recoverable.pyo
+${PYSITELIB}/flask_security/recovery_codes.py
+${PYSITELIB}/flask_security/recovery_codes.pyc
+${PYSITELIB}/flask_security/recovery_codes.pyo
 ${PYSITELIB}/flask_security/registerable.py
 ${PYSITELIB}/flask_security/registerable.pyc
 ${PYSITELIB}/flask_security/registerable.pyo
-${PYSITELIB}/flask_security/script.py
-${PYSITELIB}/flask_security/script.pyc
-${PYSITELIB}/flask_security/script.pyo
 ${PYSITELIB}/flask_security/signals.py
 ${PYSITELIB}/flask_security/signals.pyc
 ${PYSITELIB}/flask_security/signals.pyo
+${PYSITELIB}/flask_security/static/js/base64.js
+${PYSITELIB}/flask_security/static/js/webauthn.js
 ${PYSITELIB}/flask_security/templates/security/_macros.html
 ${PYSITELIB}/flask_security/templates/security/_menu.html
 ${PYSITELIB}/flask_security/templates/security/_messages.html
+${PYSITELIB}/flask_security/templates/security/base.html
+${PYSITELIB}/flask_security/templates/security/change_email.html
 ${PYSITELIB}/flask_security/templates/security/change_password.html
+${PYSITELIB}/flask_security/templates/security/email/change_email_instructions.html
+${PYSITELIB}/flask_security/templates/security/email/change_email_instructions.txt
 ${PYSITELIB}/flask_security/templates/security/email/change_notice.html
 ${PYSITELIB}/flask_security/templates/security/email/change_notice.txt
 ${PYSITELIB}/flask_security/templates/security/email/confirmation_instructions.html
@@ -61,27 +108,100 @@ ${PYSITELIB}/flask_security/templates/se
 ${PYSITELIB}/flask_security/templates/security/email/reset_instructions.txt
 ${PYSITELIB}/flask_security/templates/security/email/reset_notice.html
 ${PYSITELIB}/flask_security/templates/security/email/reset_notice.txt
+${PYSITELIB}/flask_security/templates/security/email/two_factor_instructions.html
+${PYSITELIB}/flask_security/templates/security/email/two_factor_instructions.txt
+${PYSITELIB}/flask_security/templates/security/email/two_factor_rescue.html
+${PYSITELIB}/flask_security/templates/security/email/two_factor_rescue.txt
+${PYSITELIB}/flask_security/templates/security/email/us_instructions.html
+${PYSITELIB}/flask_security/templates/security/email/us_instructions.txt
 ${PYSITELIB}/flask_security/templates/security/email/welcome.html
 ${PYSITELIB}/flask_security/templates/security/email/welcome.txt
+${PYSITELIB}/flask_security/templates/security/email/welcome_existing.html
+${PYSITELIB}/flask_security/templates/security/email/welcome_existing.txt
+${PYSITELIB}/flask_security/templates/security/email/welcome_existing_username.html
+${PYSITELIB}/flask_security/templates/security/email/welcome_existing_username.txt
 ${PYSITELIB}/flask_security/templates/security/forgot_password.html
 ${PYSITELIB}/flask_security/templates/security/login_user.html
+${PYSITELIB}/flask_security/templates/security/mf_recovery.html
+${PYSITELIB}/flask_security/templates/security/mf_recovery_codes.html
 ${PYSITELIB}/flask_security/templates/security/register_user.html
 ${PYSITELIB}/flask_security/templates/security/reset_password.html
 ${PYSITELIB}/flask_security/templates/security/send_confirmation.html
 ${PYSITELIB}/flask_security/templates/security/send_login.html
+${PYSITELIB}/flask_security/templates/security/two_factor_select.html
+${PYSITELIB}/flask_security/templates/security/two_factor_setup.html
+${PYSITELIB}/flask_security/templates/security/two_factor_verify_code.html
+${PYSITELIB}/flask_security/templates/security/us_setup.html
+${PYSITELIB}/flask_security/templates/security/us_signin.html
+${PYSITELIB}/flask_security/templates/security/us_verify.html
+${PYSITELIB}/flask_security/templates/security/verify.html
+${PYSITELIB}/flask_security/templates/security/wan_register.html
+${PYSITELIB}/flask_security/templates/security/wan_signin.html
+${PYSITELIB}/flask_security/templates/security/wan_verify.html
+${PYSITELIB}/flask_security/tf_plugin.py
+${PYSITELIB}/flask_security/tf_plugin.pyc
+${PYSITELIB}/flask_security/tf_plugin.pyo
+${PYSITELIB}/flask_security/totp.py
+${PYSITELIB}/flask_security/totp.pyc
+${PYSITELIB}/flask_security/totp.pyo
+${PYSITELIB}/flask_security/translations/af_ZA/LC_MESSAGES/flask_security.mo
+${PYSITELIB}/flask_security/translations/af_ZA/LC_MESSAGES/flask_security.po
+${PYSITELIB}/flask_security/translations/ca_ES/LC_MESSAGES/flask_security.mo
+${PYSITELIB}/flask_security/translations/ca_ES/LC_MESSAGES/flask_security.po
 ${PYSITELIB}/flask_security/translations/da_DK/LC_MESSAGES/flask_security.mo
 ${PYSITELIB}/flask_security/translations/da_DK/LC_MESSAGES/flask_security.po
 ${PYSITELIB}/flask_security/translations/de_DE/LC_MESSAGES/flask_security.mo
 ${PYSITELIB}/flask_security/translations/de_DE/LC_MESSAGES/flask_security.po
+${PYSITELIB}/flask_security/translations/es_ES/LC_MESSAGES/flask_security.mo
+${PYSITELIB}/flask_security/translations/es_ES/LC_MESSAGES/flask_security.po
+${PYSITELIB}/flask_security/translations/eu_ES/LC_MESSAGES/flask_security.mo
+${PYSITELIB}/flask_security/translations/eu_ES/LC_MESSAGES/flask_security.po
 ${PYSITELIB}/flask_security/translations/flask_security.pot
 ${PYSITELIB}/flask_security/translations/fr_FR/LC_MESSAGES/flask_security.mo
 ${PYSITELIB}/flask_security/translations/fr_FR/LC_MESSAGES/flask_security.po
-${PYSITELIB}/flask_security/translations/nl_NL/LC_MESSAGES/messages.po
+${PYSITELIB}/flask_security/translations/hu_HU/LC_MESSAGES/flask_security.mo
+${PYSITELIB}/flask_security/translations/hu_HU/LC_MESSAGES/flask_security.po
+${PYSITELIB}/flask_security/translations/hy_AM/LC_MESSAGES/flask_security.mo
+${PYSITELIB}/flask_security/translations/hy_AM/LC_MESSAGES/flask_security.po
+${PYSITELIB}/flask_security/translations/is_IS/LC_MESSAGES/flask_security.mo
+${PYSITELIB}/flask_security/translations/is_IS/LC_MESSAGES/flask_security.po
+${PYSITELIB}/flask_security/translations/it_IT/LC_MESSAGES/flask_security.mo
+${PYSITELIB}/flask_security/translations/it_IT/LC_MESSAGES/flask_security.po
+${PYSITELIB}/flask_security/translations/ja_JP/LC_MESSAGES/flask_security.mo
+${PYSITELIB}/flask_security/translations/ja_JP/LC_MESSAGES/flask_security.po
+${PYSITELIB}/flask_security/translations/nl_NL/LC_MESSAGES/flask_security.mo
+${PYSITELIB}/flask_security/translations/nl_NL/LC_MESSAGES/flask_security.po
+${PYSITELIB}/flask_security/translations/pl_PL/LC_MESSAGES/flask_security.mo
+${PYSITELIB}/flask_security/translations/pl_PL/LC_MESSAGES/flask_security.po
+${PYSITELIB}/flask_security/translations/pt_BR/LC_MESSAGES/flask_security.mo
+${PYSITELIB}/flask_security/translations/pt_BR/LC_MESSAGES/flask_security.po
+${PYSITELIB}/flask_security/translations/pt_PT/LC_MESSAGES/flask_security.mo
+${PYSITELIB}/flask_security/translations/pt_PT/LC_MESSAGES/flask_security.po
+${PYSITELIB}/flask_security/translations/pwl.txt
 ${PYSITELIB}/flask_security/translations/ru_RU/LC_MESSAGES/flask_security.mo
 ${PYSITELIB}/flask_security/translations/ru_RU/LC_MESSAGES/flask_security.po
+${PYSITELIB}/flask_security/translations/tr_TR/LC_MESSAGES/flask_security.mo
+${PYSITELIB}/flask_security/translations/tr_TR/LC_MESSAGES/flask_security.po
+${PYSITELIB}/flask_security/translations/zh_Hans_CN/LC_MESSAGES/flask_security.mo
+${PYSITELIB}/flask_security/translations/zh_Hans_CN/LC_MESSAGES/flask_security.po
+${PYSITELIB}/flask_security/twofactor.py
+${PYSITELIB}/flask_security/twofactor.pyc
+${PYSITELIB}/flask_security/twofactor.pyo
+${PYSITELIB}/flask_security/unified_signin.py
+${PYSITELIB}/flask_security/unified_signin.pyc
+${PYSITELIB}/flask_security/unified_signin.pyo
+${PYSITELIB}/flask_security/username_util.py
+${PYSITELIB}/flask_security/username_util.pyc
+${PYSITELIB}/flask_security/username_util.pyo
 ${PYSITELIB}/flask_security/utils.py
 ${PYSITELIB}/flask_security/utils.pyc
 ${PYSITELIB}/flask_security/utils.pyo
 ${PYSITELIB}/flask_security/views.py
 ${PYSITELIB}/flask_security/views.pyc
 ${PYSITELIB}/flask_security/views.pyo
+${PYSITELIB}/flask_security/webauthn.py
+${PYSITELIB}/flask_security/webauthn.pyc
+${PYSITELIB}/flask_security/webauthn.pyo
+${PYSITELIB}/flask_security/webauthn_util.py
+${PYSITELIB}/flask_security/webauthn_util.pyc
+${PYSITELIB}/flask_security/webauthn_util.pyo

Index: pkgsrc/www/py-flask-security/distinfo
diff -u pkgsrc/www/py-flask-security/distinfo:1.13 pkgsrc/www/py-flask-security/distinfo:1.14
--- pkgsrc/www/py-flask-security/distinfo:1.13  Sat Aug 10 09:42:15 2024
+++ pkgsrc/www/py-flask-security/distinfo       Wed Jan 29 12:08:12 2025
@@ -1,6 +1,5 @@
-$NetBSD: distinfo,v 1.13 2024/08/10 09:42:15 wiz Exp $
+$NetBSD: distinfo,v 1.14 2025/01/29 12:08:12 adam Exp $
 
-BLAKE2s (Flask-Security-3.0.0.tar.gz) = e9329e670cccd11903ce2ed951773238f707192aff162b9290f82fe94b751865
-SHA512 (Flask-Security-3.0.0.tar.gz) = 09b94f0850372513add5c054c07aa465ecb95e8d1c414647e3ebee571ec08c94a29f0c138d092c02a55e242c422bc53f929ca066d671c082dcb29834ac753984
-Size (Flask-Security-3.0.0.tar.gz) = 160367 bytes
-SHA1 (patch-setup.py) = de17050312be9481776ac93c62c563e1864aed5d
+BLAKE2s (flask_security-5.5.2.tar.gz) = 04d20f8394898a65283db4425757ab4fd690132c8fb16a1a923b2e6c63a8478e
+SHA512 (flask_security-5.5.2.tar.gz) = 4ffb4c87d5d747756b81dd5a11d528ce19d6c1f27f13271785f7a4217ff853fa429a7e8c84bdcd9059a8b704d4c78202d8288a88679ac6697f8d751598f82d40
+Size (flask_security-5.5.2.tar.gz) = 668289 bytes



Home | Main Index | Thread Index | Old Index