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
// Copyright (c) 1998-2004 // Utrecht University (The Netherlands), // ETH Zurich (Switzerland), // INRIA Sophia-Antipolis (France), // Max-Planck-Institute Saarbruecken (Germany), // and Tel-Aviv University (Israel). All rights reserved. // // This file is part of CGAL (www.cgal.org) // // $URL: https://github.com/CGAL/cgal/blob/v6.1/Distance_2/include/CGAL/Distance_2/Segment_2_Segment_2.h $ // $Id: include/CGAL/Distance_2/Segment_2_Segment_2.h b26b07a1242 $ // SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-Commercial // // // Author(s) : Geert-Jan Giezeman // Michel Hoffmann // Andreas Fabri #ifndef CGAL_DISTANCE_2_SEGMENT_2_SEGMENT_2_H #define CGAL_DISTANCE_2_SEGMENT_2_SEGMENT_2_H #include #include #include #include #include #include #include namespace CGAL { namespace internal { template typename K::FT squared_distance_parallel(const typename K::Segment_2& seg1, const typename K::Segment_2& seg2, const K& k) { typedef typename K::Vector_2 Vector_2; typename K::Compute_squared_distance_2 sq_dist = k.compute_squared_distance_2_object(); const Vector_2 dir1 = seg1.direction().vector(); const Vector_2 dir2 = seg2.direction().vector(); if(same_direction(dir1, dir2, k)) { if(!is_acute_angle(seg1.source(), seg1.target(), seg2.source(), k)) return sq_dist(seg1.target(), seg2.source()); if(!is_acute_angle(seg1.target(), seg1.source(), seg2.target(), k)) return sq_dist(seg1.source(), seg2.target()); } else { if(!is_acute_angle(seg1.source(), seg1.target(), seg2.target(), k)) return sq_dist(seg1.target(), seg2.target()); if(!is_acute_angle(seg1.target(), seg1.source(), seg2.source(), k)) return sq_dist(seg1.source(), seg2.source()); } return sq_dist(seg2.source(), seg1.supporting_line()); } template inline typename K::RT _distance_measure_sub(const typename K::RT& startwcross, const typename K::RT& endwcross, const typename K::Point_2& start, const typename K::Point_2& end) { return CGAL_NTS abs(wmult((K*)0, startwcross, end.hw())) - CGAL_NTS abs(wmult((K*)0, endwcross, start.hw())); } template typename K::FT squared_distance(const typename K::Segment_2& seg1, const typename K::Segment_2& seg2, const K& k, const Cartesian_tag&) { typedef typename K::RT RT; typedef typename K::FT FT; typename K::Orientation_2 orientation = k.orientation_2_object(); typename K::Compute_squared_distance_2 sq_dist = k.compute_squared_distance_2_object(); if(seg1.source() == seg1.target()) return sq_dist(seg1.source(), seg2); if(seg2.source() == seg2.target()) return sq_dist(seg2.source(), seg1); const Orientation o1s = orientation(seg2.source(), seg2.target(), seg1.source()); const Orientation o1e = orientation(seg2.source(), seg2.target(), seg1.target()); bool crossing1, crossing2; if(o1s == RIGHT_TURN) { crossing1 = (o1e != RIGHT_TURN); } else { if(o1e != LEFT_TURN) { if(o1s == COLLINEAR && o1e == COLLINEAR) return internal::squared_distance_parallel(seg1, seg2, k); crossing1 = true; } else { crossing1 = (o1s == COLLINEAR); } } const Orientation o2s = orientation(seg1.source(), seg1.target(), seg2.source()); const Orientation o2e = orientation(seg1.source(), seg1.target(), seg2.target()); if(o2s == RIGHT_TURN) { crossing2 = (o2e != RIGHT_TURN); } else { if(o2e != LEFT_TURN) { if(o2s == COLLINEAR && o2e == COLLINEAR) return internal::squared_distance_parallel(seg1, seg2, k); crossing2 = true; } else { crossing2 = (o2s == COLLINEAR); } } if(crossing1) { if(crossing2) return (FT)0; const RT c2s = CGAL_NTS abs(wcross(seg1.source(), seg1.target(), seg2.source(), k)); const RT c2e = CGAL_NTS abs(wcross(seg1.source(), seg1.target(), seg2.target(), k)); Comparison_result dm = CGAL_NTS compare(c2s, c2e); if(dm == SMALLER) { return sq_dist(seg2.source(), seg1); } else { if(dm == LARGER) { return sq_dist(seg2.target(), seg1); } else { // parallel, should not happen (no crossing) return internal::squared_distance_parallel(seg1, seg2, k); } } } else { const RT c1s = CGAL_NTS abs(wcross(seg2.source(), seg2.target(), seg1.source(), k)); const RT c1e = CGAL_NTS abs(wcross(seg2.source(), seg2.target(), seg1.target(), k)); Comparison_result dm = CGAL_NTS compare(c1s, c1e); if(crossing2) { if(dm == SMALLER) { return sq_dist(seg1.source(), seg2); } else { if(dm == LARGER) return sq_dist(seg1.target(), seg2); else // parallel, should not happen (no crossing) return internal::squared_distance_parallel(seg1, seg2, k); } } else { if(dm == EQUAL) return internal::squared_distance_parallel(seg1, seg2, k); FT min1 = (dm == SMALLER) ? sq_dist(seg1.source(), seg2): sq_dist(seg1.target(), seg2); const RT c2s = CGAL_NTS abs(wcross(seg1.source(), seg1.target(), seg2.source(), k)); const RT c2e = CGAL_NTS abs(wcross(seg1.source(), seg1.target(), seg2.target(), k)); dm = CGAL_NTS compare(c2s,c2e); if(dm == EQUAL) // should not happen. return internal::squared_distance_parallel(seg1, seg2, k); FT min2 = (dm == SMALLER) ? sq_dist(seg2.source(), seg1): sq_dist(seg2.target(), seg1); return (min1 < min2) ? min1 : min2; } } } template typename K::FT squared_distance(const typename K::Segment_2& seg1, const typename K::Segment_2& seg2, const K& k, const Homogeneous_tag&) { typedef typename K::RT RT; typedef typename K::FT FT; typename K::Compute_squared_distance_2 sq_dist = k.compute_squared_distance_2_object(); if(seg1.source() == seg1.target()) return sq_dist(seg1.source(), seg2); if(seg2.source() == seg2.target()) return sq_dist(seg2.source(), seg1); const RT c1s = wcross(seg2.source(), seg2.target(), seg1.source(), k); const RT c1e = wcross(seg2.source(), seg2.target(), seg1.target(), k); const RT c2s = wcross(seg1.source(), seg1.target(), seg2.source(), k); const RT c2e = wcross(seg1.source(), seg1.target(), seg2.target(), k); bool crossing1, crossing2; if(c1s < RT(0)) { crossing1 = (c1e >= RT(0)); } else { if(c1e <= RT(0)) { if(c1s == RT(0) && c1e == RT(0)) return internal::squared_distance_parallel(seg1, seg2, k); crossing1 = true; } else { crossing1 = (c1s == RT(0)); } } if(c2s < RT(0)) { crossing2 = (c2e >= RT(0)); } else { if(c2e <= RT(0)) { if(c2s == RT(0) && c2e == RT(0)) return internal::squared_distance_parallel(seg1, seg2, k); crossing2 = true; } else { crossing2 = (c2s == RT(0)); } } if(crossing1) { if(crossing2) return (FT)0; const RT dm = _distance_measure_sub(c2s,c2e, seg2.source(), seg2.target()); if(dm < RT(0)) { return sq_dist(seg2.source(), seg1); } else { if(dm > RT(0)) return sq_dist(seg2.target(), seg1); else // parallel, should not happen (no crossing) return internal::squared_distance_parallel(seg1, seg2, k); } } else { if(crossing2) { const RT dm = _distance_measure_sub(c1s, c1e,seg1.source(),seg1.target()); if(dm < RT(0)) { return sq_dist(seg1.source(), seg2); } else { if(dm > RT(0)) return sq_dist(seg1.target(), seg2); else // parallel, should not happen (no crossing) return internal::squared_distance_parallel(seg1, seg2, k); } } else { RT dm = _distance_measure_sub(c1s, c1e, seg1.source(), seg1.target()); if(dm == RT(0)) return internal::squared_distance_parallel(seg1, seg2, k); FT min1 = (dm < RT(0)) ? sq_dist(seg1.source(), seg2): sq_dist(seg1.target(), seg2); dm = _distance_measure_sub(c2s, c2e, seg2.source(), seg2.target()); if(dm == RT(0)) // should not happen. return internal::squared_distance_parallel(seg1, seg2, k); FT min2 = (dm < RT(0)) ? sq_dist(seg2.source(), seg1): sq_dist(seg2.target(), seg1); return (min1 < min2) ? min1 : min2; } } } template inline typename K::FT squared_distance(const Segment_2& seg1, const Segment_2& seg2, const K& k) { typedef typename K::Kernel_tag Tag; return squared_distance(seg1, seg2, k, Tag()); } } // namespace internal template inline typename K::FT squared_distance(const Segment_2& seg1, const Segment_2& seg2) { return K().compute_squared_distance_2_object()(seg1, seg2); } } // namespace CGAL #endif // CGAL_DISTANCE_2_SEGMENT_2_SEGMENT_2_H