§
    wëj#  ã                   ó<	  — d dl Z d dlZd dlmZ d dlmZ  ee¦  «                             ¦   «         j        j        Z		 d dl
mZ  ee	dz  ¦  «         n# e$ r Y nw xY we j                             dd¦  «        Ze j                             dd	¦  «                             ¦   «         d
v Ze j                             dd¦  «                             d¦  «        Zd„ eD ¦   «         ZdD ]Zeevre                     e¦  «         Œerdevre                     d¦  «         e j                             dd¦  «                             d¦  «        Zd„ eD ¦   «         ZdZg d¢Ze                     d¦  «         g d¢ZdZde	dz  gddg d¢idœgZdZe j                             d d!¦  «                             ¦   «         Z e j                             d"d!¦  «                             ¦   «         Z!e j                             d#d!¦  «                             ¦   «         Z"e re!re"s/e j                             d$¦  «        d%k    rd d&l#m$Z$  e$d'¦  «        ‚d(d)e e!e j                             d*d!¦  «        e"e j                             d+d,¦  «        d-d.d/œd0œiZ%e j                             d1d!¦  «                             ¦   «         Z&e&rd2e&ie%d(         d3<   d2d4id2d5id2d6id2d7igZ'd8Z(d9Z)dZ*dZ+d:Z,e	d;z  gZ-e	d<z  Z.d=Z/e	d>z  Z0d?Z1d@Z2dAdBdCdDdEdFœZ3 edG¬H¦  «         edI¬J¦  «        dddKœZ4e j                             dLdM¦  «        Z5dN„ e5                     d¦  «        D ¦   «         Z6dZ7e j                             dOdP¦  «        Z8e j                             dQdR¦  «        Z9e j                             dSdT¦  «        Z:dUZ;d(dVdWdXdYœiZ<d(Z=e j                             dZd	¦  «                             ¦   «         d
v Z>d[d\d]d^œZ?d_d]d`dadbiidcddd`ej@        deœidcge j                             dfdg¦  «        dhœdidjdkiidcgdld]digdmœdcgdld]dnœdoœdpœZAesle j                             dqdr¦  «                             ¦   «         d
v ZBeBrdZCdZDdZEdZFdsZGe j                             dtdr¦  «                             ¦   «         d
v rdZHdu„ ZIdv„ ZJdS )wé    N)Ú	timedelta)ÚPath)Úload_dotenvz.envÚDJANGO_SECRET_KEYz,dev-insecure-change-me-in-production-use-envÚDJANGO_DEBUGÚtrue)Ú1r   ÚyesÚDJANGO_ALLOWED_HOSTSzlocalhost,127.0.0.1ú,c                 ó^   — g | ]*}|                      ¦   «         ¯|                      ¦   «         ‘Œ+S © ©Ústrip)Ú.0Úhs     úF/var/www/finuniver-perm.ru/html/portfolio/portfolio_system/settings.pyú
<listcomp>r      s-   € Ð@Ð@Ð@˜q°a·g²g±i´iÐ@�—’‘”Ð@Ð@Ð@ó    )z192.168.1.8z95.104.225.67zfinuniver-perm.ruzwww.finuniver-perm.ruÚ
testserverÚCSRF_TRUSTED_ORIGINSzahttps://finuniver-perm.ru,https://www.finuniver-perm.ru,https://95.104.225.67,https://192.168.1.8c                 ó^   — g | ]*}|                      ¦   «         ¯|                      ¦   «         ‘Œ+S r   r   ©r   Úus     r   r   r   !   ó-   € ÐIÐIÐI a¸q¿wºw¹y¼yÐI˜Ÿš™	œ	ÐIÐIÐIr   )ÚHTTP_X_FORWARDED_PROTOÚhttps)zdjango.contrib.adminzdjango.contrib.authzdjango.contrib.contenttypeszdjango.contrib.sessionszdjango.contrib.messageszdjango.contrib.staticfilesÚrest_frameworkÚrest_framework_simplejwtz(rest_framework_simplejwt.token_blacklistÚcorsheadersÚdrf_spectacularÚusersÚ	portfolioÚresumeztests.apps.ProjectTestsConfig)	z-django.middleware.security.SecurityMiddlewarez8portfolio_system.middleware.BlockProbeRequestsMiddlewarez4django.contrib.sessions.middleware.SessionMiddlewarez%corsheaders.middleware.CorsMiddlewarez)django.middleware.common.CommonMiddlewarez)django.middleware.csrf.CsrfViewMiddlewarez7django.contrib.auth.middleware.AuthenticationMiddlewarez4django.contrib.messages.middleware.MessageMiddlewarez6django.middleware.clickjacking.XFrameOptionsMiddlewarezportfolio_system.urlsz/django.template.backends.django.DjangoTemplatesÚ	templatesTÚcontext_processors)z(django.template.context_processors.debugz*django.template.context_processors.requestz+django.contrib.auth.context_processors.authz3django.contrib.messages.context_processors.messages)ÚBACKENDÚDIRSÚAPP_DIRSÚOPTIONSz!portfolio_system.wsgi.applicationÚMYSQL_DATABASEÚ Ú
MYSQL_USERÚ
MYSQL_HOSTÚDJANGO_SKIP_MYSQL_CHECKr	   )ÚImproperlyConfiguredu~   Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ MYSQL_DATABASE, MYSQL_USER Ð¸ MYSQL_HOST (Ñ„Ð°Ð¹Ð» .env Ð² ÐºÐ¾Ñ€Ð½Ðµ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°). SQLite Ð¾Ñ‚ÐºÐ»ÑŽÑ‡Ñ‘Ð½.Údefaultzdjango.db.backends.mysqlÚMYSQL_PASSWORDÚ
MYSQL_PORTÚ3306Úutf8mb4zLSET sql_mode='STRICT_TRANS_TABLES', NAMES utf8mb4 COLLATE utf8mb4_unicode_ci)ÚcharsetÚinit_command)ÚENGINEÚNAMEÚUSERÚPASSWORDÚHOSTÚPORTr*   ÚMYSQL_TEST_DATABASEr9   ÚTESTzHdjango.contrib.auth.password_validation.UserAttributeSimilarityValidatorz>django.contrib.auth.password_validation.MinimumLengthValidatorz?django.contrib.auth.password_validation.CommonPasswordValidatorz@django.contrib.auth.password_validation.NumericPasswordValidatorzru-ruzEurope/Moscowzstatic/ÚstaticÚstaticfileszmedia/Úmediazdjango.db.models.BigAutoFieldz
users.User)z9rest_framework_simplejwt.authentication.JWTAuthentication)z*rest_framework.permissions.IsAuthenticated)z!rest_framework.parsers.JSONParserz&rest_framework.parsers.MultiPartParserz!rest_framework.parsers.FormParserz"drf_spectacular.openapi.AutoSchemaz4portfolio_system.exceptions.custom_exception_handler)ÚDEFAULT_AUTHENTICATION_CLASSESÚDEFAULT_PERMISSION_CLASSESÚDEFAULT_PARSER_CLASSESÚDEFAULT_SCHEMA_CLASSÚEXCEPTION_HANDLERé<   )Úminutesé   )Údays)ÚACCESS_TOKEN_LIFETIMEÚREFRESH_TOKEN_LIFETIMEÚROTATE_REFRESH_TOKENSÚBLACKLIST_AFTER_ROTATIONÚCORS_ALLOWED_ORIGINSz+http://localhost:8000,http://127.0.0.1:8000c                 ó^   — g | ]*}|                      ¦   «         ¯|                      ¦   «         ‘Œ+S r   r   r   s     r   r   r   ¬   r   r   ÚEMAIL_BACKENDz.django.core.mail.backends.console.EmailBackendÚDEFAULT_FROM_EMAILznoreply@portfolio.localÚFRONTEND_URLzhttp://127.0.0.1:8000z/login/z-django.core.cache.backends.locmem.LocMemCachezportfolio-ratelimiti,  )r'   ÚLOCATIONÚTIMEOUTÚRATELIMIT_ENABLEu@   Ð¦Ð¸Ñ„Ñ€Ð¾Ð²Ð¾Ðµ Ñ�Ñ‚ÑƒÐ´ÐµÐ½Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿Ð¾Ñ€Ñ‚Ñ„Ð¾Ð»Ð¸Ð¾ APIz1.0.0F)ÚTITLEÚVERSIONÚSERVE_INCLUDE_SCHEMAé   ÚverboseÚformatz1%(asctime)s [%(levelname)s] %(name)s: %(message)sÚconsolezlogging.StreamHandler)ÚclassÚ	formatterÚstreamÚDJANGO_LOG_LEVELÚINFO)ÚhandlersÚlevelÚsuppress_probe_404z()z7portfolio_system.logging_filters.SuppressProbe404FilterÚWARNING)rd   re   Ú	propagateÚfilters)rd   re   rh   )zdjango.requestzdjango.security)ÚversionÚdisable_existing_loggersÚ
formattersrd   Úrootri   ÚloggersÚDJANGO_SECURE_COOKIESÚfalseÚDENYÚDJANGO_SECURE_SSL_REDIRECTc                 ó$  — ddl }g }| j                             d¦  «        pd                     ¦   «         }|r2|                     d„ |                     d¦  «        D ¦   «         ¦  «         | j                             d¦  «        pd                     ¦   «         }|r|                     |¦  «         |D ]_}|}d|v r.|                     dd	¦  «        d                              ¦   «         }	 |                     |¦  «         |c S # t          $ r Y Œ\w xY wd
S )ub   ÐŸÐµÑ€Ð²Ñ‹Ð¹ Ð²Ð°Ð»Ð¸Ð´Ð½Ñ‹Ð¹ IP Ð¸Ð· X-Forwarded-For Ð¸Ð»Ð¸ REMOTE_ADDR (Ð±ÐµÐ· CIDR-Ð¼Ð°Ñ�ÐºÐ¸).r   NÚHTTP_X_FORWARDED_FORr,   c              3   óf   K  — | ],}|                      ¦   «         ¯|                      ¦   «         V — Œ-d S ©Nr   )r   Úparts     r   ú	<genexpr>z%_extract_client_ip.<locals>.<genexpr>  s7   è è € ÐUÐU¨ÈÏ
Ê
ÉÌÐU�t—z’z‘|”|ÐUÐUÐUÐUÐUÐUr   r   ÚREMOTE_ADDRú/r[   z	127.0.0.1)	Ú	ipaddressÚMETAÚgetr   ÚextendÚsplitÚappendÚ
ip_addressÚ
ValueError)Úrequestr{   ÚsourcesÚ	forwardedÚremoteÚ	candidateÚips          r   Ú_extract_client_ipr‰   ÿ   s8  € àÐÐÐà€GØ”×!Ò!Ð"8Ñ9Ô9Ð?¸R×FÒFÑHÔH€IØð VØ�ŠÐUÐU°	·²ÀÑ0DÔ0DÐUÑUÔUÑUÔUÐUØŒl×Ò˜}Ñ-Ô-Ð3°×:Ò:Ñ<Ô<€FØð Ø�Š�vÑÔÐàð ð ˆ	ØˆØ�"ˆ9ˆ9Ø—’˜#˜qÑ!Ô! !Ô$×*Ò*Ñ,Ô,ˆBð	Ø× Ò  Ñ$Ô$Ð$ØˆIˆIˆIøÝð 	ð 	ð 	ØˆHð	øøøàˆ;s   Ã'D Ä 
DÄDc                 ó    — t          | ¦  «        S rv   )r‰   )rƒ   s    r   ú<lambda>r‹     s   € Õ(:¸7Ñ(CÔ(C€ r   )KÚosÚsysÚdatetimer   Úpathlibr   Ú__file__ÚresolveÚparentÚBASE_DIRÚdotenvr   ÚImportErrorÚenvironr}   Ú
SECRET_KEYÚlowerÚDEBUGr   Ú_allowed_hostsÚALLOWED_HOSTSÚhostr€   Ú_trusted_originsr   ÚSECURE_PROXY_SSL_HEADERÚINSTALLED_APPSÚ
MIDDLEWAREÚROOT_URLCONFÚ	TEMPLATESÚWSGI_APPLICATIONr   Ú	_mysql_dbÚ_mysql_userÚ_mysql_hostÚdjango.core.exceptionsr0   Ú	DATABASESÚ_mysql_testÚAUTH_PASSWORD_VALIDATORSÚLANGUAGE_CODEÚ	TIME_ZONEÚUSE_I18NÚUSE_TZÚ
STATIC_URLÚSTATICFILES_DIRSÚSTATIC_ROOTÚ	MEDIA_URLÚ
MEDIA_ROOTÚDEFAULT_AUTO_FIELDÚAUTH_USER_MODELÚREST_FRAMEWORKÚ
SIMPLE_JWTÚ_corsrP   ÚCORS_ALLOW_CREDENTIALSrR   rS   rT   Ú	LOGIN_URLÚCACHESÚRATELIMIT_USE_CACHErW   ÚSPECTACULAR_SETTINGSÚstdoutÚLOGGINGÚ_secureÚSESSION_COOKIE_SECUREÚCSRF_COOKIE_SECUREÚSECURE_BROWSER_XSS_FILTERÚSECURE_CONTENT_TYPE_NOSNIFFÚX_FRAME_OPTIONSÚSECURE_SSL_REDIRECTr‰   ÚRATELIMIT_IP_META_KEYr   r   r   ú<module>rÈ      sç  ðØ 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð àˆ4�‰>Œ>×!Ò!Ñ#Ô#Ô*Ô1€ð	Ø"Ð"Ð"Ð"Ð"Ð"à€K�˜6Ñ!Ñ"Ô"Ð"Ð"øØð 	ð 	ð 	Ø€Dð	øøøð ŒZ�^Š^ØÐGñô €
ð 	Œ
�Š�~ vÑ.Ô.×4Ò4Ñ6Ô6Ð:NÐN€à”—’Ð 6Ð8MÑNÔN×TÒTÐUXÑYÔY€Ø@Ð@ NÐ@Ñ@Ô@€ØZð #ð #€DØ�=Ð Ð Ø×Ò˜TÑ"Ô"Ð"øØð 'ˆ\ Ð.Ð.Ø×Ò˜Ñ&Ô&Ð&à”:—>’>ØØgñô ÷ ‚%ˆ�*„*ð ð JÐIÐ+;ÐIÑIÔIÐ Ø=Ð ðð ð €ð" × Ò Ð5Ñ 6Ô 6Ð 6ð
ð 
ð 
€
ð '€ð EØ˜KÑ'Ð(Øà ð #ð #ð #ð
ð	ð ð€	ð  7Ð ð ŒJ�NŠNÐ+¨RÑ0Ô0×6Ò6Ñ8Ô8€	ØŒj�nŠn˜\¨2Ñ.Ô.×4Ò4Ñ6Ô6€ØŒj�nŠn˜\¨2Ñ.Ô.×4Ò4Ñ6Ô6€Øð 
˜ð 
¨;ð 
Ø	„z‡~‚~Ð/Ñ0Ô0°CÒ7Ð7Ø?Ð?Ð?Ð?Ð?Ð?à"Ð"ð'ñ
ô 
ð 	
ð Ø,ØØØ”J—N’NÐ#3°RÑ8Ô8ØØ”
—’˜|¨VÑ4Ô4à ð;ð
ð 
ðð ð€	ð( Œj�nŠnÐ2°BÑ7Ô7×=Ò=Ñ?Ô?€Øð 9Ø$*¨KÐ#8€IˆiÔ˜Ñ ð ÐWÐXØÐMÐNØÐNÐOØÐOÐPð	Ð ð €Ø€	Ø€Ø	€à€
Ø˜xÑ'Ð(Ð Ø˜Ñ&€à€	Ø˜Ñ€
à4Ð à€ð'ð #Rðð
 AØOðð €ð '˜Y¨rÐ2Ñ2Ô2Ø'˜i¨QÐ/Ñ/Ô/Ø!Ø $ð	ð €
ð 	Œ
�ŠØØ1ñ	ô 	€ð JÐI¨5¯;ª;°sÑ+;Ô+;ÐIÑIÔIÐ ØÐ à”
—’ØÐEñô €ð ”Z—^’^Ð$8Ð:SÑTÔTÐ ØŒz�~Š~˜nÐ.EÑFÔF€à€	ð ØBØ)Øðð ð
€ð  Ð Ø”:—>’>Ð"4°fÑ=Ô=×CÒCÑEÔEð Jð Ð ð PØØ!ðð Ð ð Ø %àØÐIð
ðð 	Ø,Ø"Ø”jð
ð 
ðð �KØ”—’Ð 2°FÑ;Ô;ðð ð
 	ØÐKð
ðð #˜ØØØ,Ð-ð	
ð 
ð *3¨¸iÐV[Ð\Ð\ðð ð1!ð !€ðF ð #ØŒj�nŠnÐ4°gÑ>Ô>×DÒDÑFÔFð Kð €Gð
 ð "Ø $ÐØ!ÐØ $ÐØ"&ÐØ€OØ	„z‡~‚~Ð2°GÑ<Ô<×BÒBÑDÔDÐH\Ð\Ð\Ø"Ððð ð ð0 DÐCÐ Ð Ð s   ½A ÁAÁA