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) 2019-2022 Google LLC (USA). // All rights reserved. // // This file is part of CGAL (www.cgal.org). // // $URL: https://github.com/CGAL/cgal/blob/v6.1/Alpha_wrap_3/include/CGAL/Alpha_wrap_3/internal/validation.h $ // $Id: include/CGAL/Alpha_wrap_3/internal/validation.h b26b07a1242 $ // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial // // Author(s) : Cedric Portaneri, // Mael Rouxel-Labbé // #ifndef CGAL_ALPHA_WRAP_3_TEST_ALPHA_WRAP_VALIDATION_H #define CGAL_ALPHA_WRAP_3_TEST_ALPHA_WRAP_VALIDATION_H #include #include #include #include #include #include #include #include #include #include #include namespace CGAL { namespace Alpha_wraps_3 { namespace internal { // @todo this does not detect non-manifold edges with manifold vertices // (but PMP::self_intersections will catch it) template bool is_combinatorially_non_manifold(const TriangleMesh& mesh) { namespace PMP = CGAL::Polygon_mesh_processing; using halfedge_descriptor = typename boost::graph_traits::halfedge_descriptor; std::vector non_manifold_cones; PMP::non_manifold_vertices(mesh, std::back_inserter(non_manifold_cones)); if(!non_manifold_cones.empty()) return true; return false; } template bool has_degenerated_faces(const TriangleMesh& mesh, const NamedParameters& np = CGAL::parameters::default_values()) { namespace PMP = CGAL::Polygon_mesh_processing; for(auto f : faces(mesh)) if(PMP::is_degenerate_triangle_face(f, mesh, np)) return true; return false; } // Edge length is bounded by twice the circumradius template bool check_edge_length(const TriangleMesh& output_mesh, const double alpha, const NamedParameters& np = CGAL::parameters::default_values()) { const auto sq_alpha_bound = 4 * square(alpha); for(auto e : edges(output_mesh)) { const auto sqd = Polygon_mesh_processing::squared_edge_length(e, output_mesh, np); if(sqd > sq_alpha_bound) // alpha is the circumradius { #ifdef CGAL_AW3_DEBUG std::cerr << "Error: " << sqd << " greater than " << sq_alpha_bound << std::endl; std::cerr << get(CGAL::vertex_point, output_mesh, source(e, output_mesh)) << std::endl; std::cerr << get(CGAL::vertex_point, output_mesh, target(e, output_mesh)) << std::endl; #endif return false; } } return true; } template bool has_expected_Hausdorff_distance(const TriangleMesh& wrap, const TriangleMesh& input, const FT alpha, const FT offset, const InputNamedParameters& in_np = parameters::default_values(), const OutputNamedParameters& out_np = parameters::default_values()) { namespace PMP = CGAL::Polygon_mesh_processing; using face_descriptor = typename boost::graph_traits::face_descriptor; std::vector > fpairs; const FT bound = 0.01 * (std::min)(alpha, offset); const FT d = PMP::bounded_error_Hausdorff_distance( wrap, input, bound, in_np.output_iterator(std::back_inserter(fpairs)), out_np); #ifdef CGAL_AW3_DEBUG std::cout << "Alpha: " << alpha << " Offset: " << offset << " Bound: " << bound << " Hausdorff_distance: " << d << std::endl; std::cout << "Maximum distance on faces " << fpairs.back().first << " " << fpairs.back().second << std::endl; #endif return (d < (alpha + offset + bound)); } template bool is_valid_wrap(const TriangleMesh& wrap, const bool check_manifoldness, const NamedParameters& np = parameters::default_values()) { namespace PMP = CGAL::Polygon_mesh_processing; if(is_empty(wrap)) { #ifdef CGAL_AW3_DEBUG std::cerr << "Error: empty wrap" << std::endl; #endif return false; } if(!is_valid_polygon_mesh(wrap)) { #ifdef CGAL_AW3_DEBUG std::cerr << "Error: Invalid wrap mesh" << std::endl; #endif return false; } if(!is_triangle_mesh(wrap)) { #ifdef CGAL_AW3_DEBUG std::cerr << "Error: Wrap is not triangulated" << std::endl; #endif return false; } if(!is_closed(wrap)) { if(check_manifoldness) { #ifdef CGAL_AW3_DEBUG std::cerr << "Error: Wrap is not closed" << std::endl; #endif return false; } else { #ifdef CGAL_AW3_DEBUG std::cerr << "W: Wrap is not closed" << std::endl; #endif } } else if(!PMP::does_bound_a_volume(wrap, np)) { #ifdef CGAL_AW3_DEBUG std::cerr << "Error: Wrap does not bound a volume" << std::endl; #endif return false; } if(has_degenerated_faces(wrap, np)) { #ifdef CGAL_AW3_DEBUG std::cerr << "Error: Wrap has degenerate faces" << std::endl; #endif return false; } if(is_combinatorially_non_manifold(wrap)) { #ifdef CGAL_AW3_DEBUG std::cerr << "Error: Wrap is combinatorially non-manifold" << std::endl; #endif return false; } if(PMP::does_self_intersect(wrap, np)) { if(check_manifoldness) { #ifdef CGAL_AW3_DEBUG std::cerr << "Error: Wrap self-intersects" << std::endl; #endif return false; } #ifdef CGAL_AW3_DEBUG std::cerr << "W: Wrap self-intersects" << std::endl; #endif } return true; } template bool is_valid_wrap(const TriangleMesh& wrap, const NamedParameters& np = parameters::default_values()) { return is_valid_wrap(wrap, true /*consider manifoldness*/, np); } template bool is_outer_wrap_of_triangle_mesh(const OutputTriangleMesh& wrap, const InputTriangleMesh& input, const OutputNamedParameters& out_np = parameters::default_values(), const InputNamedParameters& in_np = parameters::default_values()) { namespace PMP = CGAL::Polygon_mesh_processing; using parameters::get_parameter; using parameters::choose_parameter; using IVPM = typename GetVertexPointMap::const_type; using OVPM = typename GetVertexPointMap::const_type; using K = typename GetGeomTraits::type; // CGAL::Rigid_triangle_mesh_collision_detection collision_detection; // collision_detection.add_mesh(input); // collision_detection.add_mesh(wrap); // auto res = collision_detection.get_all_intersections(1); // if(res.size() != 0) // { // std::cerr << "Error: The wrap intersects the input mesh" << std::endl; // return EXIT_FAILURE; // } if(PMP::do_intersect(input, wrap, in_np, out_np)) { #ifdef CGAL_AW3_DEBUG std::cerr << "Error: The wrap intersects the input mesh" << std::endl; #endif return false; } IVPM in_vpm = choose_parameter(get_parameter(in_np, internal_np::vertex_point), get_const_property_map(vertex_point, input)); OVPM out_vpm = choose_parameter(get_parameter(out_np, internal_np::vertex_point), get_const_property_map(vertex_point, wrap)); CGAL::Side_of_triangle_mesh side_of_wrap(wrap, out_vpm); // @speed a single vertex per CC would be sufficient for(auto v : vertices(input)) { if(side_of_wrap(get(in_vpm, v)) != CGAL::ON_BOUNDED_SIDE) { #ifdef CGAL_AW3_DEBUG std::cerr << "Error: Part(s) of the input mesh are outside the wrap: " << get(in_vpm, v) << std::endl; #endif return false; } } return true; } template bool is_valid_wrap_of_triangle_mesh(const OutputTriangleMesh& wrap, const InputTriangleMesh& input, const OutputNamedParameters& out_np = parameters::default_values(), const InputNamedParameters& in_np = parameters::default_values()) { if(!is_valid_wrap(wrap, out_np)) return false; if(!is_outer_wrap_of_triangle_mesh(wrap, input, out_np, in_np)) return false; return true; } template bool is_outer_wrap_of_triangle_soup(const TriangleMesh& wrap, PointRange points, // intentional copies FaceRange faces, const OutputNamedParameters& out_np = parameters::default_values(), const InputNamedParameters& in_np = parameters::default_values()) { namespace PMP = CGAL::Polygon_mesh_processing; // Make a mesh out of the soup PMP::repair_polygon_soup(points, faces); PMP::orient_polygon_soup(points, faces); CGAL_assertion(PMP::is_polygon_soup_a_polygon_mesh(faces)); TriangleMesh mesh; PMP::polygon_soup_to_polygon_mesh(points, faces, mesh, in_np); return is_outer_wrap_of_triangle_mesh(wrap, mesh, out_np); } template bool is_valid_wrap_of_triangle_soup(const TriangleMesh& wrap, const PointRange& points, const FaceRange& faces, const OutputNamedParameters& out_np = parameters::default_values(), const InputNamedParameters& in_np = parameters::default_values()) { if(!is_valid_wrap(wrap, out_np)) return false; if(!is_outer_wrap_of_triangle_soup(wrap, points, faces, out_np, in_np)) return false; return true; } template bool is_outer_wrap_of_point_set(const TriangleMesh& wrap, const PointRange& points, const OutputNamedParameters& out_np = parameters::default_values(), const InputNamedParameters& in_np = parameters::default_values()) { using parameters::get_parameter; using parameters::choose_parameter; using OVPM = typename GetVertexPointMap::const_type; using IPM = typename GetPointMap::const_type; using K = typename Kernel_traits::value_type>::Kernel; OVPM out_vpm = choose_parameter(get_parameter(out_np, internal_np::vertex_point), get_const_property_map(vertex_point, wrap)); IPM in_pm = choose_parameter(get_parameter(in_np, internal_np::point_map)); CGAL::Side_of_triangle_mesh side_of_wrap(wrap, out_vpm); // @speed a single vertex per CC would be sufficient for(const auto& p : points) { if(side_of_wrap(get(in_pm, p)) != CGAL::ON_BOUNDED_SIDE) { #ifdef CGAL_AW3_DEBUG std::cerr << "Part(s) of the input mesh are outside the wrap: " << get(in_pm, p) << std::endl; #endif return false; } } return true; } template bool is_valid_wrap_of_point_set(const TriangleMesh& wrap, const PointRange& points, const OutputNamedParameters& out_np = parameters::default_values(), const InputNamedParameters& in_np = parameters::default_values()) { if(!is_valid_wrap(wrap, out_np)) return false; if(!is_outer_wrap_of_point_set(wrap, points, out_np, in_np)) return false; return true; } } // namespace internal } // namespace Alpha_wraps_3 } // namespace CGAL #endif // CGAL_ALPHA_WRAP_3_TEST_ALPHA_WRAP_VALIDATION_H