1:45 PM 11/12/2025 ���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!
Warning: Undefined variable $authorization in C:\xampp\htdocs\demo\fi.php on line 57

Warning: Undefined variable $translation in C:\xampp\htdocs\demo\fi.php on line 118

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\demo\fi.php on line 119

Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\xampp\htdocs\demo\fi.php on line 120

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 247

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 248

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 249

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 251

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 252
// hkdf.h - written and placed in public domain by Jeffrey Walton. /// \file hkdf.h /// \brief Classes for HKDF from RFC 5869 /// \since Crypto++ 5.6.3 #ifndef CRYPTOPP_HKDF_H #define CRYPTOPP_HKDF_H #include "cryptlib.h" #include "secblock.h" #include "algparam.h" #include "hmac.h" NAMESPACE_BEGIN(CryptoPP) /// \brief Extract-and-Expand Key Derivation Function (HKDF) /// \tparam T HashTransformation class /// \sa Cryptographic Extraction and Key /// Derivation: The HKDF Scheme and /// HMAC-based Extract-and-Expand Key /// Derivation Function (HKDF) /// \since Crypto++ 5.6.3 template class HKDF : public KeyDerivationFunction { public: virtual ~HKDF() {} static std::string StaticAlgorithmName () { const std::string name(std::string("HKDF(") + std::string(T::StaticAlgorithmName()) + std::string(")")); return name; } // KeyDerivationFunction interface std::string AlgorithmName() const { return StaticAlgorithmName(); } // KeyDerivationFunction interface size_t MaxDerivedKeyLength() const { return static_cast(T::DIGESTSIZE) * 255; } // KeyDerivationFunction interface size_t GetValidDerivedLength(size_t keylength) const; // KeyDerivationFunction interface size_t DeriveKey(byte *derived, size_t derivedLen, const byte *secret, size_t secretLen, const NameValuePairs& params) const; /// \brief Derive a key from a seed /// \param derived the derived output buffer /// \param derivedLen the size of the derived buffer, in bytes /// \param secret the seed input buffer /// \param secretLen the size of the secret buffer, in bytes /// \param salt the salt input buffer /// \param saltLen the size of the salt buffer, in bytes /// \param info the additional input buffer /// \param infoLen the size of the info buffer, in bytes /// \return the number of iterations performed /// \throw InvalidDerivedKeyLength if derivedLen is invalid for the scheme /// \details DeriveKey() provides a standard interface to derive a key from /// a seed and other parameters. Each class that derives from KeyDerivationFunction /// provides an overload that accepts most parameters used by the derivation function. /// \details salt and info can be nullptr with 0 length. /// HKDF is unusual in that a non-NULL salt with length 0 is different than a /// NULL salt. A NULL salt causes HKDF to use a string of 0's /// of length T::DIGESTSIZE for the salt. /// \details HKDF always returns 1 because it only performs 1 iteration. Other /// derivation functions, like PBKDF's, will return more interesting values. size_t DeriveKey(byte *derived, size_t derivedLen, const byte *secret, size_t secretLen, const byte *salt, size_t saltLen, const byte* info, size_t infoLen) const; protected: // KeyDerivationFunction interface const Algorithm & GetAlgorithm() const { return *this; } // If salt is absent (NULL), then use the NULL vector. Missing is different than // EMPTY (Non-NULL, 0 length). The length of s_NullVector used depends on the Hash // function. SHA-256 will use 32 bytes of s_NullVector. typedef byte NullVectorType[T::DIGESTSIZE]; static const NullVectorType& GetNullVector() { static const NullVectorType s_NullVector = {0}; return s_NullVector; } }; template size_t HKDF::GetValidDerivedLength(size_t keylength) const { if (keylength > MaxDerivedKeyLength()) return MaxDerivedKeyLength(); return keylength; } template size_t HKDF::DeriveKey(byte *derived, size_t derivedLen, const byte *secret, size_t secretLen, const NameValuePairs& params) const { CRYPTOPP_ASSERT(secret && secretLen); CRYPTOPP_ASSERT(derived && derivedLen); CRYPTOPP_ASSERT(derivedLen <= MaxDerivedKeyLength()); ConstByteArrayParameter p; SecByteBlock salt, info; if (params.GetValue("Salt", p)) salt.Assign(p.begin(), p.size()); else salt.Assign(GetNullVector(), T::DIGESTSIZE); if (params.GetValue("Info", p)) info.Assign(p.begin(), p.size()); else info.Assign(GetNullVector(), 0); return DeriveKey(derived, derivedLen, secret, secretLen, salt.begin(), salt.size(), info.begin(), info.size()); } template size_t HKDF::DeriveKey(byte *derived, size_t derivedLen, const byte *secret, size_t secretLen, const byte *salt, size_t saltLen, const byte* info, size_t infoLen) const { CRYPTOPP_ASSERT(secret && secretLen); CRYPTOPP_ASSERT(derived && derivedLen); CRYPTOPP_ASSERT(derivedLen <= MaxDerivedKeyLength()); ThrowIfInvalidDerivedKeyLength(derivedLen); // HKDF business logic. NULL is different than empty. if (salt == NULLPTR) { salt = GetNullVector(); saltLen = T::DIGESTSIZE; } // key is PRK from the RFC, salt is IKM from the RFC HMAC hmac; SecByteBlock key(T::DIGESTSIZE), buffer(T::DIGESTSIZE); // Extract hmac.SetKey(salt, saltLen); hmac.CalculateDigest(key, secret, secretLen); // Key hmac.SetKey(key.begin(), key.size()); byte block = 0; // Expand while (derivedLen > 0) { if (block++) {hmac.Update(buffer, buffer.size());} if (infoLen) {hmac.Update(info, infoLen);} hmac.CalculateDigest(buffer, &block, 1); #if CRYPTOPP_MSC_VERSION const size_t digestSize = static_cast(T::DIGESTSIZE); const size_t segmentLen = STDMIN(derivedLen, digestSize); memcpy_s(derived, segmentLen, buffer, segmentLen); #else const size_t digestSize = static_cast(T::DIGESTSIZE); const size_t segmentLen = STDMIN(derivedLen, digestSize); std::memcpy(derived, buffer, segmentLen); #endif derived += segmentLen; derivedLen -= segmentLen; } return 1; } NAMESPACE_END #endif // CRYPTOPP_HKDF_H