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) 2013 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/Minkowski_sum_2/include/CGAL/Polygon_triangulation_decomposition_2.h $ // $Id: include/CGAL/Polygon_triangulation_decomposition_2.h b26b07a1242 $ // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial // // Author(s) : Efi Fogel #ifndef CGAL_POLYGON_TRIANGULATION_DECOMPOSITION_2_H #define CGAL_POLYGON_TRIANGULATION_DECOMPOSITION_2_H #include #include #include #include #include #include #include #include #include namespace CGAL { /*! \class Polygon_triangulation_decomposition Polygon_triangulation_decomposition.h * Constrained triangulation decomposition strategy. */ template > class Polygon_triangulation_decomposition_2 { public: typedef Kernel_ Kernel; typedef Container_ Container; typedef CGAL::Polygon_2 Polygon_2; typedef CGAL::Polygon_with_holes_2 Polygon_with_holes_2; private: struct Face_info { Face_info() {} int nesting_level; bool in_domain() { return nesting_level % 2 == 1; } }; // Triangulation types typedef CGAL::Triangulation_vertex_base_2 VB; typedef CGAL::Triangulation_face_base_with_info_2 FBI; typedef CGAL::Constrained_triangulation_face_base_2 FB; typedef CGAL::Triangulation_data_structure_2 TDS; typedef CGAL::Exact_predicates_tag Itag; typedef CGAL::Constrained_Delaunay_triangulation_2 CDT; public: /*! Default constructor. */ Polygon_triangulation_decomposition_2() {} // Destructor ~Polygon_triangulation_decomposition_2() {} /*! Decompose a polygon-with-holes into convex sub-polygons. * \param pgn The input polygon. * \param oi An output iterator of convex polygons. * \return A past-the-end iterator for the sub-polygons. */ template OutputIterator_ operator()(const Polygon_2& pgm, OutputIterator_ oi) const { CDT cdt; // Insert boundary: insert_polygon(cdt, pgm); // Mark facets that are inside the domain bounded by the polygon mark_domains(cdt); typename CDT::Finite_faces_iterator fit; for (fit = cdt.finite_faces_begin(); fit != cdt.finite_faces_end(); ++fit) { if (! fit->info().in_domain()) continue; typename CDT::Vertex_handle vh0 = fit->vertex(0); typename CDT::Vertex_handle vh1 = fit->vertex(1); typename CDT::Vertex_handle vh2 = fit->vertex(2); Polygon_2 pgn; pgn.push_back(vh0->point()); pgn.push_back(vh1->point()); pgn.push_back(vh2->point()); *oi++ = pgn; } return oi; } /*! Decompose a polygon-with-holes into convex sub-polygons. * \param pgn The input polygon. * \param oi An output iterator of convex polygons. * \return A past-the-end iterator for the sub-polygons. */ template OutputIterator_ operator()(const Polygon_with_holes_2& pgm, OutputIterator_ oi) const { CDT cdt; // Insert outer boundary: const Polygon_2& outer_pgn = pgm.outer_boundary(); insert_polygon(cdt, outer_pgn); // Insert holes: typename Polygon_with_holes_2::Hole_const_iterator ith; for (ith = pgm.holes_begin(); ith != pgm.holes_end(); ++ith) insert_polygon(cdt, *ith); // Mark facets that are inside the domain bounded by the polygon mark_domains(cdt); typename CDT::Finite_faces_iterator fit; for (fit = cdt.finite_faces_begin(); fit != cdt.finite_faces_end(); ++fit) { if (! fit->info().in_domain()) continue; typename CDT::Vertex_handle vh0 = fit->vertex(0); typename CDT::Vertex_handle vh1 = fit->vertex(1); typename CDT::Vertex_handle vh2 = fit->vertex(2); Polygon_2 pgn; pgn.push_back(vh0->point()); pgn.push_back(vh1->point()); pgn.push_back(vh2->point()); *oi++ = pgn; } return oi; } private: void mark_domains(CDT& cdt, typename CDT::Face_handle start, int index, std::list& border) const { if (start->info().nesting_level != -1) return; std::list queue; queue.push_back(start); while (! queue.empty()) { typename CDT::Face_handle fh = queue.front(); queue.pop_front(); if (fh->info().nesting_level == -1) { fh->info().nesting_level = index; for (int i = 0; i < 3; i++) { typename CDT::Edge e(fh,i); typename CDT::Face_handle n = fh->neighbor(i); if (n->info().nesting_level == -1) { if (cdt.is_constrained(e)) border.push_back(e); else queue.push_back(n); } } } } } // Explore set of facets connected with non constrained edges, // and attribute to each such set a nesting level. // We start from facets incident to the infinite vertex, with a nesting // level of 0. Then we recursively consider the non-explored facets incident // to constrained edges bounding the former set and increase the nesting // level by 1. // Facets in the domain are those with an odd nesting level. void mark_domains(CDT& cdt) const { typename CDT::All_faces_iterator it; for (it = cdt.all_faces_begin(); it != cdt.all_faces_end(); ++it) it->info().nesting_level = -1; std::list border; mark_domains(cdt, cdt.infinite_face(), 0, border); while (! border.empty()) { typename CDT::Edge e = border.front(); border.pop_front(); typename CDT::Face_handle n = e.first->neighbor(e.second); if (n->info().nesting_level == -1) mark_domains(cdt, n, e.first->info().nesting_level+1, border); } } template void insert_polygon(CDT& cdt, const Polygon_& pgn) const { typedef Polygon_ Polygon_2; if (pgn.is_empty()) return; typedef typename Polygon_2::Vertex_circulator Vertex_circulator; Vertex_circulator v_start = pgn.vertices_circulator(); typename CDT::Vertex_handle vt_prev = cdt.insert(*v_start); Vertex_circulator v_curr = v_start; do { ++v_curr; typename CDT::Vertex_handle vt_curr = cdt.insert(*v_curr); cdt.insert_constraint(vt_prev, vt_curr); vt_prev = vt_curr; } while (v_curr != v_start); } }; } //namespace CGAL #endif