summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvisvgm/dvisvgm-src/tests
diff options
context:
space:
mode:
authorDenis Bitouzé <dbitouze@wanadoo.fr>2021-02-25 18:23:07 +0000
committerDenis Bitouzé <dbitouze@wanadoo.fr>2021-02-25 18:23:07 +0000
commitc6101f91d071883b48b1b4b51e5eba0f36d9a78d (patch)
tree1bf7f5a881d7a4f5c5bf59d0b2821943dd822372 /Build/source/texk/dvisvgm/dvisvgm-src/tests
parent07ee7222e389b0777456b427a55c22d0e6ffd267 (diff)
French translation for tlmgr updated
git-svn-id: svn://tug.org/texlive/trunk@57912 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/dvisvgm/dvisvgm-src/tests')
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/BezierTest.cpp162
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/BitmapTest.cpp78
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/BoundingBoxTest.cpp209
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapManagerTest.cpp70
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapReaderTest.cpp131
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapTest.cpp153
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/CalculatorTest.cpp90
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/ColorSpecialTest.cpp147
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/ColorTest.cpp214
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/CommandLineTest.cpp247
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/DVIReaderTest.cpp585
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/DependencyGraphTest.cpp71
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/DirectoryTest.cpp65
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/DvisvgmSpecialTest.cpp369
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/EllipticalArcTest.cpp142
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/EmSpecialTest.cpp201
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/FileFinderTest.cpp82
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/FilePathTest.cpp105
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/FileSystemTest.cpp124
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/FontCacheTest.cpp173
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/FontManagerTest.cpp71
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/FontMapTest.cpp69
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/GFGlyphTracerTest.cpp123
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/GFReaderTest.cpp296
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/GhostscriptTest.cpp51
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/GraphicsPathTest.cpp264
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/HashFunctionTest.cpp142
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/JFMReaderTest.cpp111
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/LengthTest.cpp251
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.am420
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.in3517
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/MapLineTest.cpp144
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/MatrixTest.cpp279
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/MessageExceptionTest.cpp77
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/PDFParserTest.cpp239
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/PSInterpreterTest.cpp188
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/PageRagesTest.cpp163
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/PageSizeTest.cpp65
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/PairTest.cpp143
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/PapersizeSpecialTest.cpp152
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/RangeMapTest.cpp195
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/SVGOutputTest.cpp161
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/ShadingPatchTest.cpp82
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/SpecialManagerTest.cpp88
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/SplittedCharInputBufferTest.cpp179
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamInputBufferTest.cpp262
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamReaderTest.cpp128
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamWriterTest.cpp106
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/StringMatcherTest.cpp144
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/SubfontTest.cpp84
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/TFMReaderTest.cpp99
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/TensorProductPatchTest.cpp343
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/ToUnicodeMapTest.cpp61
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/TpicSpecialTest.cpp396
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/TriangularPatchTest.cpp197
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/UnicodeTest.cpp138
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/UtilityTest.cpp148
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/VectorIteratorTest.cpp134
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/VectorStreamTest.cpp63
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/XMLNodeTest.cpp393
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/XMLStringTest.cpp68
-rwxr-xr-xBuild/source/texk/dvisvgm/dvisvgm-src/tests/check-conv50
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.am23
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.in501
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cidjmgr0-h.tfmbin2508 -> 0 bytes
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.600gfbin24244 -> 0 bytes
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.pfbbin35752 -> 0 bytes
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.tfmbin1296 -> 0 bytes
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/dvipdfm_test.map1010
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/dvips_test.map363
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/frktest-nf-cmp.svg1223
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/frktest-wf-cmp.svg348
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/frktest.dvibin2072 -> 0 bytes
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/ot1.cmap78
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample-nf-cmp.svg204
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample-wf-cmp.svg201
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample.dvibin1320 -> 0 bytes
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample.sfd293
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample_v2.dvibin1016 -> 0 bytes
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample_v3.dvibin256 -> 0 bytes
-rwxr-xr-xBuild/source/texk/dvisvgm/dvisvgm-src/tests/genhashcheck.py73
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/LICENSE28
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-death-test.h343
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-matchers.h750
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-message.h218
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-param-test.h503
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-printers.h928
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-spi.h238
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-test-part.h184
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-typed-test.h330
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest.h2478
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest_pred_impl.h359
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest_prod.h61
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/custom/gtest-port.h37
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/custom/gtest-printers.h42
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/custom/gtest.h37
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-death-test-internal.h304
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-filepath.h211
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-internal.h1380
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-linked_ptr.h243
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-param-util-generated.h5552
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-param-util.h883
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-port-arch.h107
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-port.h2231
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-string.h171
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-tuple.h1021
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-type-util.h3335
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-all.cc48
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-death-test.cc1653
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-filepath.cc379
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-internal-inl.h1211
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-matchers.cc97
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-port.cc1399
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-printers.cc442
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-test-part.cc104
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-typed-test.cc118
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest.cc6177
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest_main.cc47
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/normalize.xsl135
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/testmain.cpp44
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/testutil.hpp7
121 files changed, 0 insertions, 51854 deletions
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/BezierTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/BezierTest.cpp
deleted file mode 100644
index aa86660d840..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/BezierTest.cpp
+++ /dev/null
@@ -1,162 +0,0 @@
-/*************************************************************************
-** BezierTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include "Bezier.hpp"
-
-using namespace std;
-
-const double EPS = 0.001;
-
-#define EXPECT_PAIR_EQ(p1,p2) {EXPECT_DOUBLE_EQ(p1.x(), p2.x()); EXPECT_DOUBLE_EQ(p1.y(), p2.y());}
-#define EXPECT_PAIR_NEAR(p1,p2) {EXPECT_NEAR(p1.x(), p2.x(), EPS); EXPECT_NEAR(p1.y(), p2.y(), EPS);}
-#define EXPECT_BBOX_NEAR(b1,b2) { \
- EXPECT_NEAR(b1.minX(), b2.minX(), EPS); EXPECT_NEAR(b1.maxX(), b2.maxX(), EPS); \
- EXPECT_NEAR(b1.minY(), b2.minY(), EPS); EXPECT_NEAR(b1.maxY(), b2.maxY(), EPS);}
-
-
-TEST(BezierTest, construct) {
- // quadratic BĂ©zier curve
- Bezier bezier1(DPair(0,0), DPair(12,12), DPair(24,6));
- EXPECT_EQ(bezier1.point(0), DPair(0,0));
- EXPECT_EQ(bezier1.point(1), DPair(8,8));
- EXPECT_EQ(bezier1.point(2), DPair(16,10));
- EXPECT_EQ(bezier1.point(3), DPair(24,6));
-
- // cubic BĂ©zier curve
- Bezier bezier2(DPair(0,0), DPair(12,12), DPair(24,6), DPair(19,-4));
- EXPECT_EQ(bezier2.point(0), DPair(0,0));
- EXPECT_EQ(bezier2.point(1), DPair(12,12));
- EXPECT_EQ(bezier2.point(2), DPair(24,6));
- EXPECT_EQ(bezier2.point(3), DPair(19,-4));
-}
-
-
-TEST(BezierTest, subcurve) {
- Bezier bezier1(DPair(0,0), DPair(12,12), DPair(24,6), DPair(19,-4));
- {
- Bezier subcurve(bezier1, 0, 1);
- EXPECT_EQ(subcurve.point(0), DPair(0,0));
- EXPECT_EQ(subcurve.point(1), DPair(12,12));
- EXPECT_EQ(subcurve.point(2), DPair(24,6));
- EXPECT_EQ(subcurve.point(3), DPair(19,-4));
- }
- {
- Bezier subcurve(bezier1, 0, 0.5);
- EXPECT_EQ(subcurve.point(0), DPair(0,0));
- EXPECT_EQ(subcurve.point(1), DPair(6,6));
- EXPECT_EQ(subcurve.point(2), DPair(12,7.5));
- EXPECT_EQ(subcurve.point(3), DPair(15.875,6.25));
- }
- {
- Bezier subcurve(bezier1, 1, 0.5);
- EXPECT_EQ(subcurve.point(0), DPair(15.875,6.25));
- EXPECT_EQ(subcurve.point(1), DPair(19.75,5));
- EXPECT_EQ(subcurve.point(2), DPair(21.5,1));
- EXPECT_EQ(subcurve.point(3), DPair(19,-4));
- }
- {
- Bezier subcurve(bezier1, 0.2, 0.8);
- EXPECT_PAIR_NEAR(subcurve.point(0), DPair(7.064,5.152));
- EXPECT_PAIR_NEAR(subcurve.point(1), DPair(13.856,8.368));
- EXPECT_PAIR_NEAR(subcurve.point(2), DPair(19.424,6.112));
- EXPECT_PAIR_NEAR(subcurve.point(3), DPair(20.096,1.408));
- }
- {
- Bezier subcurve(bezier1, 0, 0);
- EXPECT_EQ(subcurve.point(0), DPair(0,0));
- EXPECT_EQ(subcurve.point(1), DPair(0,0));
- EXPECT_EQ(subcurve.point(2), DPair(0,0));
- EXPECT_EQ(subcurve.point(3), DPair(0,0));
- }
- {
- Bezier subcurve(bezier1, 1, 1);
- EXPECT_EQ(subcurve.point(0), DPair(19,-4));
- EXPECT_EQ(subcurve.point(1), DPair(19,-4));
- EXPECT_EQ(subcurve.point(2), DPair(19,-4));
- EXPECT_EQ(subcurve.point(3), DPair(19,-4));
- }
-}
-
-
-TEST(BezierTest, reverse) {
- Bezier bezier(DPair(0,0), DPair(12,12), DPair(24,6), DPair(19,-4));
- bezier.reverse();
- EXPECT_EQ(bezier.point(0), DPair(19,-4));
- EXPECT_EQ(bezier.point(1), DPair(24,6));
- EXPECT_EQ(bezier.point(2), DPair(12,12));
- EXPECT_EQ(bezier.point(3), DPair(0,0));
-}
-
-
-TEST(BezierTest, bbox) {
- Bezier bezier(DPair(0,0), DPair(12,12), DPair(24,6), DPair(30,-5));
- EXPECT_BBOX_NEAR(bezier.getBBox(), BoundingBox(0, -5, 30, 6.598));
-}
-
-
-TEST(BezierTest, approximate) {
- vector<DPair> points;
- vector<double> times;
- Bezier bezier(DPair(0,0), DPair(12,12), DPair(24,6), DPair(30,-5));
- size_t size = bezier.approximate(0.1, points, &times);
- double t[] = {0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 1};
- DPair p[] = {
- DPair(0,0), DPair(4.488,3.681), DPair(8.906,5.828), DPair(13.183,6.591),
- DPair(17.25,6.125), DPair(21.035,4.580), DPair(24.468,2.109), DPair(30,-5)
- };
- EXPECT_EQ(size, (size_t)sizeof(t)/sizeof(double));
- EXPECT_EQ(points.size(), size);
- EXPECT_EQ(times.size(), size);
- for (size_t i=0; i < size; i++) {
- EXPECT_EQ(times[i], t[i]) << "i=" << i;
- EXPECT_PAIR_NEAR(points[i], p[i]);
- }
-}
-
-
-TEST(BezierTest, reduceDegree) {
- vector<DPair> points;
- Bezier bezier(DPair(0,0), DPair(5,10), DPair(10,5));
- int degree = bezier.reduceDegree(0.1, points);
- EXPECT_EQ(degree, 2);
- EXPECT_EQ(points[0], DPair(0,0));
- EXPECT_EQ(points[1], DPair(5,10));
- EXPECT_EQ(points[2], DPair(10,5));
-
- bezier.setPoints(DPair(3,8), DPair(3,8), DPair(3,8), DPair(3,8));
- degree = bezier.reduceDegree(0.1, points);
- EXPECT_EQ(degree, 0);
- EXPECT_EQ(points[0], DPair(3,8));
-
- bezier.setPoints(DPair(0,0), DPair(5,5), DPair(8,8), DPair(10,10));
- degree = bezier.reduceDegree(0.1, points);
- EXPECT_EQ(degree, 1);
- EXPECT_EQ(points[0], DPair(0,0));
- EXPECT_EQ(points[1], DPair(10,10));
-
- bezier.setPoints(DPair(0,0), DPair(5,10), DPair(10,5), DPair(15,10));
- degree = bezier.reduceDegree(0.1, points);
- EXPECT_EQ(degree, 3);
- EXPECT_EQ(points[0], DPair(0,0));
- EXPECT_EQ(points[1], DPair(5,10));
- EXPECT_EQ(points[2], DPair(10,5));
- EXPECT_EQ(points[3], DPair(15,10));
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/BitmapTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/BitmapTest.cpp
deleted file mode 100644
index 547988bf579..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/BitmapTest.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-/*************************************************************************
-** BitmapTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include "Bitmap.hpp"
-
-using namespace std;
-
-
-TEST(BitmapTest, bbox) {
- Bitmap bitmap(-4, 10, 3, 10);
- EXPECT_EQ(bitmap.width(), 15);
- EXPECT_EQ(bitmap.height(), 8);
- EXPECT_EQ(bitmap.xshift(), -4);
- EXPECT_EQ(bitmap.yshift(), 3);
- EXPECT_EQ(bitmap.bytesPerRow(), 2);
- EXPECT_EQ(bitmap.empty(), false);
-}
-
-
-TEST(BitmapTest, setBits) {
- int w, h;
- Bitmap bitmap(-4, 10, 3, 10);
- bitmap.getExtent(w, h);
- EXPECT_EQ(w, 0);
- EXPECT_EQ(h, 0);
- bitmap.setBits(3, 5, 5);
- bitmap.getExtent(w, h);
- EXPECT_EQ(w, 5);
- EXPECT_EQ(h, 1);
-
- EXPECT_EQ(bitmap.rowPtr(3-3)[0], 0);
- EXPECT_EQ(bitmap.rowPtr(3-3)[1], 0x7c);
-
- EXPECT_EQ(bitmap.rowPtr(10-3)[0], 0);
- EXPECT_EQ(bitmap.rowPtr(10-3)[1], 0);
- bitmap.setBits(10, -3, 10);
- bitmap.getExtent(w, h);
- EXPECT_EQ(w, 13);
- EXPECT_EQ(h, 8);
-
- EXPECT_EQ(bitmap.rowPtr(10-3)[0], 0x7f);
- EXPECT_EQ(bitmap.rowPtr(10-3)[1], 0xe0);
-}
-
-
-TEST(BitmapTest, copy) {
- Bitmap bitmap(-4, 10, 3, 10);
- vector<uint16_t> target;
- bitmap.setBits(4, 5, 5);
- bitmap.copy(target, false);
- EXPECT_EQ(target.size(), 8u);
- EXPECT_EQ(target[0], 0);
- EXPECT_EQ(target[1], 124);
- EXPECT_EQ(target[2], 0);
- bitmap.copy(target, true);
- EXPECT_EQ(target.size(), 8u);
- EXPECT_EQ(target[5], 0);
- EXPECT_EQ(target[6], 124);
- EXPECT_EQ(target[7], 0);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/BoundingBoxTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/BoundingBoxTest.cpp
deleted file mode 100644
index 15c9ae0e00c..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/BoundingBoxTest.cpp
+++ /dev/null
@@ -1,209 +0,0 @@
-/*************************************************************************
-** BoundingBoxTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#define _USE_MATH_DEFINES
-#include <gtest/gtest.h>
-#include <cmath>
-#include <sstream>
-#include "BoundingBox.hpp"
-#include "Length.hpp"
-#include "Matrix.hpp"
-#include "XMLNode.hpp"
-
-using namespace std;
-
-TEST(BoundingBoxTest, construct) {
- BoundingBox bbox1;
- EXPECT_FALSE(bbox1.valid());
- EXPECT_FALSE(bbox1.locked());
-
- BoundingBox bbox2(50, 20, 5, 2);
- EXPECT_TRUE(bbox2.valid());
- EXPECT_FALSE(bbox2.locked());
- EXPECT_DOUBLE_EQ(bbox2.minX(), 5);
- EXPECT_DOUBLE_EQ(bbox2.maxX(), 50);
- EXPECT_DOUBLE_EQ(bbox2.minY(), 2);
- EXPECT_DOUBLE_EQ(bbox2.maxY(), 20);
- EXPECT_EQ(bbox2, BoundingBox(DPair(50, 20), DPair(5, 2)));
-
- BoundingBox bbox3(" 1bp 2bp 3bp 4bp ");
- EXPECT_TRUE(bbox2.valid());
- EXPECT_FALSE(bbox2.locked());
- EXPECT_DOUBLE_EQ(bbox3.minX(), 1);
- EXPECT_DOUBLE_EQ(bbox3.minY(), 2);
- EXPECT_DOUBLE_EQ(bbox3.maxX(), 3);
- EXPECT_DOUBLE_EQ(bbox3.maxY(), 4);
-
- Length len(2, Length::Unit::CM);
- double bp = len.bp();
- BoundingBox bbox4(len, len, len, len);
- EXPECT_DOUBLE_EQ(bbox4.minX(), bp);
- EXPECT_DOUBLE_EQ(bbox4.minY(), bp);
- EXPECT_DOUBLE_EQ(bbox4.maxX(), bp);
- EXPECT_DOUBLE_EQ(bbox4.maxY(), bp);
-}
-
-
-TEST(BoundingBoxTest, extent) {
- BoundingBox bbox(5, 10, 30, 30);
- EXPECT_DOUBLE_EQ(bbox.width(), 25);
- EXPECT_DOUBLE_EQ(bbox.height(), 20);
-}
-
-
-TEST(BoundingBoxTest, set) {
- BoundingBox bbox;
- bbox.set("1bp 2bp 3bp 4bp");
- EXPECT_EQ(bbox, BoundingBox(1, 2, 3, 4));
-
- bbox.set("4bp 3bp 2bp 1bp");
- EXPECT_EQ(bbox, BoundingBox(2, 1, 4, 3));
-
- bbox.set("1bp");
- EXPECT_EQ(bbox, BoundingBox(1, 0, 5, 4));
-
- bbox.set("2bp 3bp");
- EXPECT_EQ(bbox, BoundingBox(-1, -3, 7, 7));
-
- EXPECT_THROW(bbox.set(""), BoundingBoxException);
- EXPECT_THROW(bbox.set("1bp 2bp 3bp"), BoundingBoxException);
-}
-
-
-TEST(BoundingBoxTest, embed) {
- BoundingBox bbox1(3, 4, 10, 15);
- BoundingBox bbox2(3, 4, 10, 15);
- EXPECT_EQ(bbox1, bbox2);
-
- bbox1.embed(6, 6);
- EXPECT_EQ(bbox1, bbox2);
-
- bbox1.embed(11, 14);
- EXPECT_EQ(bbox1, BoundingBox(3, 4, 11, 15));
-
- bbox2.embed(DPair(11, 14));
- EXPECT_EQ(bbox1, bbox2);
-
- bbox1.embed(Pair<int>(0, 0));
- EXPECT_EQ(bbox1, BoundingBox(0, 0, 11, 15));
- EXPECT_NE(bbox1, bbox2);
-
- bbox2.embed(bbox1);
- EXPECT_EQ(bbox1, bbox2);
-
- bbox1 = BoundingBox(5, 5, 5, 5);
- bbox1.embed(DPair(5, 5), 2);
- EXPECT_EQ(bbox1, BoundingBox(3, 3, 7, 7));
-
- EXPECT_NE(bbox1, bbox2);
- bbox1.invalidate();
- bbox1.embed(bbox2);
- EXPECT_EQ(bbox1, bbox2);
-}
-
-
-TEST(BoundingBoxTest, expand) {
- BoundingBox bbox(4, 5, 6, 7);
- bbox.expand(3);
- EXPECT_EQ(bbox, BoundingBox(1, 2, 9, 10));
-}
-
-
-TEST(BoundingBoxTest, lock) {
- BoundingBox bbox(4, 5, 6, 7);
- bbox.lock();
- bbox.expand(3);
- EXPECT_EQ(bbox, BoundingBox(4, 5, 6, 7));
-}
-
-
-TEST(BoundingBoxTest, scale) {
- BoundingBox bbox(4, 5, 6, 7);
- bbox.scale(2, 2);
- EXPECT_EQ(bbox, BoundingBox(8, 10, 12, 14));
- bbox.scale(-2, -2);
- EXPECT_EQ(bbox, BoundingBox(-24, -28, -16, -20));
-}
-
-
-TEST(BoundingBoxTest, inc) {
- BoundingBox bbox(4, 5, 6, 7);
- bbox += BoundingBox(8, 9, 10, 11);
- EXPECT_EQ(bbox, BoundingBox(12, 14, 16, 18));
-}
-
-
-TEST(BoundingBoxTest, intersect) {
- BoundingBox bbox(4, 5, 16, 17);
- bbox.intersect(BoundingBox(10, 18, 20, 25));
- EXPECT_EQ(bbox, BoundingBox(4, 5, 16, 17));
-
- bbox.intersect(BoundingBox(10, 10, 20, 25));
- EXPECT_EQ(bbox, BoundingBox(10, 10, 16, 17));
-}
-
-
-TEST(BoundingBoxTest, transform) {
- BoundingBox bbox(-5, -5, 5, 5);
- Matrix matrix(1);
- matrix.rotate(M_PI/4);
- bbox.transform(matrix);
- EXPECT_NEAR(bbox.minX(), -5.068, 0.001);
- EXPECT_NEAR(bbox.minY(), -5.068, 0.001);
- EXPECT_NEAR(bbox.maxX(), 5.068, 0.001);
- EXPECT_NEAR(bbox.maxY(), 5.068, 0.001);
-
- matrix.rotate(-M_PI/4).translate(2, 3);
- bbox.transform(matrix);
- EXPECT_NEAR(bbox.minX(), -3.068, 0.001);
- EXPECT_NEAR(bbox.minY(), -2.068, 0.001);
- EXPECT_NEAR(bbox.maxX(), 7.068, 0.001);
- EXPECT_NEAR(bbox.maxY(), 8.068, 0.001);
-}
-
-
-TEST(BoundingBoxTest, svgViewBox) {
- BoundingBox bbox(4, 5, 6, 7);
- ostringstream oss;
- oss << bbox.toSVGViewBox();
- EXPECT_EQ(oss.str(), "4 5 2 2");
-}
-
-
-TEST(BoundingBoxTest, svgRectElement) {
- BoundingBox bbox(4, 5, 6, 7);
- auto rect = bbox.createSVGRect();
- ASSERT_NE(rect, nullptr);
- EXPECT_EQ(rect->name(), "rect");
- EXPECT_EQ(string(rect->getAttributeValue("x")), "4");
- EXPECT_EQ(string(rect->getAttributeValue("y")), "5");
- EXPECT_EQ(string(rect->getAttributeValue("width")), "2");
- EXPECT_EQ(string(rect->getAttributeValue("height")), "2");
-}
-
-
-TEST(BoundingBoxTest, extractLengths) {
- vector<Length> lengths = BoundingBox::extractLengths(" 1cm,2mm , 3pt 5in");
- ASSERT_EQ(lengths.size(), 4u);
- EXPECT_DOUBLE_EQ(lengths[0].cm(), 1);
- EXPECT_DOUBLE_EQ(lengths[1].mm(), 2);
- EXPECT_DOUBLE_EQ(lengths[2].pt(), 3);
- EXPECT_DOUBLE_EQ(lengths[3].in(), 5);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapManagerTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapManagerTest.cpp
deleted file mode 100644
index 2456780e4ff..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapManagerTest.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-/*************************************************************************
-** CMapManagerTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <fstream>
-#include "CMap.hpp"
-#include "CMapManager.hpp"
-#include "Message.hpp"
-
-
-TEST(CMapManagerTest, lookup_buildin) {
- CMapManager &manager = CMapManager::instance();
- CMap *cmap=0;
- ASSERT_NE((cmap = manager.lookup("Identity-H")), nullptr);
- EXPECT_STREQ(cmap->name(), "Identity-H");
- EXPECT_EQ(cmap->getROString(), "Adobe-Identity");
- EXPECT_TRUE(cmap->mapsToCID());
-
- ASSERT_NE((cmap = manager.lookup("Identity-V")), nullptr);
- EXPECT_STREQ(cmap->name(), "Identity-V");
- EXPECT_EQ(cmap->getROString(), "Adobe-Identity");
- EXPECT_TRUE(cmap->mapsToCID());
-
- ASSERT_NE((cmap = manager.lookup("unicode")), nullptr);
- EXPECT_STREQ(cmap->name(), "unicode");
- EXPECT_EQ(cmap->getROString(), "");
- EXPECT_FALSE(cmap->mapsToCID());
- EXPECT_EQ(cmap->path(), nullptr);
-}
-
-
-TEST(CMapManagerTest, lookup_file) {
- CMapManager &manager = CMapManager::instance();
- CMap *cmap = manager.lookup("ot1.cmap");
- ASSERT_NE(cmap, nullptr);
- EXPECT_STREQ(cmap->name(), "ot1.cmap");
- EXPECT_EQ(cmap->getROString(), "");
- EXPECT_FALSE(cmap->mapsToCID());
- EXPECT_EQ(cmap->bfcode(0x00), 0x0393u);
- EXPECT_EQ(cmap->bfcode(0x01), 0x0394u);
- EXPECT_EQ(cmap->bfcode(0x02), 0x0398u);
- EXPECT_EQ(cmap->bfcode(0x7c), 0x2014u);
- EXPECT_EQ(cmap->bfcode(0x7d), 0x02ddu);
- EXPECT_EQ(cmap->bfcode(0x7f), 0x00a8u);
- EXPECT_EQ(cmap->bfcode(0x80), 0u);
-}
-
-
-TEST(CMapManagerTest, lookup_fail) {
- Message::LEVEL = 0; // avoid warning messages
- CMapManager &manager = CMapManager::instance();
- EXPECT_EQ(manager.lookup("does-not-exists"), nullptr);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapReaderTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapReaderTest.cpp
deleted file mode 100644
index e890562f56a..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapReaderTest.cpp
+++ /dev/null
@@ -1,131 +0,0 @@
-/*************************************************************************
-** CMapReaderTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <memory>
-#include "CMap.hpp"
-#include "CMapReader.hpp"
-
-using namespace std;
-
-
-class CMapReaderTest : public ::testing::Test
-{
- protected:
- CMapReaderTest () {
- istringstream iss(cmapsrc);
- CMapReader reader;
- cmap = reader.read(iss, "Test-Map");
- }
-
- static const char *cmapsrc;
- unique_ptr<CMap> cmap;
-};
-
-
-const char *CMapReaderTest::cmapsrc =
-"% This is a comment line\n"
-"/CIDInit /ProcSet findresource begin\n"
-"12 dict begin\n"
-"begincmap\n"
-"/CIDSystemInfo 3 dict dup begin\n"
-" /Registry (Adobe) def\n"
-" /Ordering (Adobe_Japan1_UCS2) def\n"
-" /Supplement 6 def\n"
-"end def\n"
-"/CMapName /Test-Map def\n"
-"/CMapVersion 8.002 def\n"
-"/CMapType 2 def\n"
-"/XUID [1 10 25335 1212] def\n"
-"/WMode 0 def\n"
-"1 begincodespacerange\n"
-" <0000> <FFFF>\n"
-"endcodespacerange\n"
-"4 beginbfchar\n"
-"<0000> <fffd>\n"
-"<003d> <00a5>\n"
-"<005d> <00a6>\n"
-"<005e> <007d>\n"
-"endbfchar\n"
-"2 beginbfchar\n"
-"<005f> <0303>\n"
-"<0060> <2019>\n"
-"endbfchar\n"
-"3 beginbfrange\n"
-"<5830> <5831> <8c75>\n"
-"<5833> <5834> <8c86>\n"
-"<5837> <5838> <8c9b>\n"
-"endbfrange\n"
-"3 begincidchar\n"
-"<1000> 50\n"
-"<1005> 60\n"
-"<1008> 70\n"
-"endcidchar\n"
-"2 begincidrange\n"
-"<1234> <1240> 100\n"
-"<1300> <1302> 200\n"
-"endcidrange\n"
-"endcmap\n"
-"CMapName currentdict /CMap defineresource pop\n";
-
-
-TEST_F(CMapReaderTest, rostring) {
- ASSERT_NE(cmap, nullptr);
- ASSERT_EQ(cmap->getROString(), "Adobe-Adobe_Japan1_UCS2");
- ASSERT_FALSE(cmap->vertical());
-}
-
-
-TEST_F(CMapReaderTest, bfcode) {
- ASSERT_NE(cmap, nullptr);
- ASSERT_EQ(cmap->getROString(), "Adobe-Adobe_Japan1_UCS2");
- ASSERT_FALSE(cmap->vertical());
- ASSERT_EQ(cmap->bfcode(0), 0xfffdu);
- ASSERT_EQ(cmap->bfcode(0x3d), 0xa5u);
- ASSERT_EQ(cmap->bfcode(0x5d), 0xa6u);
- ASSERT_EQ(cmap->bfcode(0x5e), 0x7du);
- ASSERT_EQ(cmap->bfcode(0x5f), 0x303u);
- ASSERT_EQ(cmap->bfcode(0x60), 0x2019u);
- ASSERT_EQ(cmap->bfcode(0x5830), 0x8c75u);
- ASSERT_EQ(cmap->bfcode(0x5831), 0x8c76u);
- ASSERT_EQ(cmap->bfcode(0x5833), 0x8c86u);
- ASSERT_EQ(cmap->bfcode(0x5838), 0x8c9cu);
- ASSERT_EQ(cmap->bfcode(0x5839), 0u);
-}
-
-TEST_F(CMapReaderTest, cid) {
- const SegmentedCMap *seg_cmap = dynamic_cast<const SegmentedCMap*>(cmap.get());
- ASSERT_NE(seg_cmap, nullptr);
- ASSERT_EQ(seg_cmap->numBFRanges(), 9u);
- ASSERT_EQ(seg_cmap->numCIDRanges(), 5u);
- ASSERT_EQ(seg_cmap->cid(0x1000), 50u);
- ASSERT_EQ(seg_cmap->cid(0x1005), 60u);
- ASSERT_EQ(seg_cmap->cid(0x1008), 70u);
-
- ASSERT_EQ(seg_cmap->cid(0x1233), 0u);
- ASSERT_EQ(seg_cmap->cid(0x1234), 100u);
- ASSERT_EQ(seg_cmap->cid(0x1240), 112u);
- ASSERT_EQ(seg_cmap->cid(0x1241), 0u);
- ASSERT_EQ(seg_cmap->cid(0x12FF), 0u);
- ASSERT_EQ(seg_cmap->cid(0x1300), 200u);
- ASSERT_EQ(seg_cmap->cid(0x1301), 201u);
- ASSERT_EQ(seg_cmap->cid(0x1302), 202u);
- ASSERT_EQ(seg_cmap->cid(0x1303), 0u);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapTest.cpp
deleted file mode 100644
index 1b95e31cce4..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/CMapTest.cpp
+++ /dev/null
@@ -1,153 +0,0 @@
-/*************************************************************************
-** CMapTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include "CMap.hpp"
-
-using namespace std;
-
-#define CHECK_RANGE(name, cmap, cmin, cmax, cid_min) \
- {SCOPED_TRACE(name); check_range(cmap, cmin, cmax, cid_min);}
-
-#define CHECK_ZERO(name, cmap, cmin, cmax) \
- {SCOPED_TRACE(name); check_zero(cmap, cmin, cmax);}
-
-
-static void check_range (const SegmentedCMap &cmap, int min, int max, int cid_min) {
- for (int i=min; i <= max; i++)
- ASSERT_EQ(cmap.cid(i), uint32_t(cid_min+(i-min)));
-}
-
-
-static void check_zero (const SegmentedCMap &cmap, int min, int max) {
- for (int i=min; i <= max; i++)
- ASSERT_EQ(cmap.cid(i), 0u);
-}
-
-
-TEST(SegmentedCMapTest, disjoint_ranges) {
- SegmentedCMap cmap("test");
- cmap.addCIDRange(5, 8, 1);
- ASSERT_EQ(cmap.numCIDRanges(), 1u);
- CHECK_RANGE("A", cmap, 5, 8, 1);
- CHECK_ZERO("B", cmap, 0, 4);
- CHECK_ZERO("C", cmap, 9, 20);
-
- cmap.addCIDRange(10, 15, 5);
- ASSERT_EQ(cmap.numCIDRanges(), 2u);
- CHECK_RANGE("D", cmap, 5, 8, 1);
- CHECK_RANGE("E", cmap, 10, 15, 5);
- CHECK_ZERO("F", cmap, 0, 4);
- CHECK_ZERO("G", cmap, 9, 9);
- CHECK_ZERO("H", cmap, 16, 20);
-
- cmap.addCIDRange(0, 3, 50);
- ASSERT_EQ(cmap.numCIDRanges(), 3u);
- CHECK_RANGE("I", cmap, 0, 3, 50);
- CHECK_RANGE("J", cmap, 5, 8, 1);
- CHECK_RANGE("K", cmap, 10, 15, 5);
- CHECK_ZERO("L", cmap, 4, 4);
- CHECK_ZERO("M", cmap, 9, 9);
- CHECK_ZERO("N", cmap, 16, 20);
-
- cmap.addCIDRange(16, 20, 1);
- ASSERT_EQ(cmap.numCIDRanges(), 4u);
- CHECK_RANGE("O", cmap, 5, 8, 1);
- CHECK_RANGE("P", cmap, 10, 15, 5);
- CHECK_RANGE("Q", cmap, 0, 3, 50);
- CHECK_RANGE("R", cmap, 16, 20, 1);
-}
-
-
-TEST(SegmentedCMapTest, touching_ranges) {
- SegmentedCMap cmap("test");
- cmap.addCIDRange(5, 8, 10);
- ASSERT_EQ(cmap.numCIDRanges(), 1u);
- CHECK_RANGE("A", cmap, 5, 8, 10);
-
- cmap.addCIDRange(9, 15, 14);
- ASSERT_EQ(cmap.numCIDRanges(), 1u);
- CHECK_RANGE("B", cmap, 5, 15, 10);
-
- cmap.addCIDRange(1, 4, 5);
- ASSERT_EQ(cmap.numCIDRanges(), 2u);
- CHECK_RANGE("C", cmap, 1, 4, 5);
- CHECK_RANGE("D", cmap, 5, 15, 10);
-
- cmap.addCIDRange(1, 4, 6);
- ASSERT_EQ(cmap.numCIDRanges(), 1u);
- CHECK_RANGE("E", cmap, 1, 15, 6);
-}
-
-
-TEST(SegmentedCMapTest, overlapping_ranges) {
- SegmentedCMap cmap("test");
- cmap.addCIDRange(5, 8, 10);
- cmap.addCIDRange(7, 15, 12);
- ASSERT_EQ(cmap.numCIDRanges(), 1u);
- CHECK_RANGE("A", cmap, 5, 15, 10);
-
- cmap.addCIDRange(10, 20, 1);
- ASSERT_EQ(cmap.numCIDRanges(), 2u);
- CHECK_RANGE("B", cmap, 5, 9, 10);
- CHECK_RANGE("C", cmap, 10, 20, 1);
-
- cmap.addCIDRange(2, 7, 7);
- ASSERT_EQ(cmap.numCIDRanges(), 2u);
- CHECK_RANGE("D", cmap, 2, 9, 7);
- CHECK_RANGE("E", cmap, 10, 20, 1);
-
- cmap.addCIDRange(1, 12, 100);
- ASSERT_EQ(cmap.numCIDRanges(), 2u);
- CHECK_RANGE("F", cmap, 1, 12, 100);
- CHECK_RANGE("G", cmap, 13, 20, 4);
-
- cmap.addCIDRange(0, 30, 1);
- ASSERT_EQ(cmap.numCIDRanges(), 1u);
- CHECK_RANGE("H", cmap, 0, 30, 1);
-}
-
-
-TEST(SegmentedCMapTest, inner_ranges) {
- SegmentedCMap cmap("test");
- cmap.addCIDRange(5, 20, 1);
- cmap.addCIDRange(10, 15, 6);
- ASSERT_EQ(cmap.numCIDRanges(), 1u);
- CHECK_RANGE("A", cmap, 5, 20, 1);
-
- cmap.addCIDRange(10, 15, 100);
- ASSERT_EQ(cmap.numCIDRanges(), 3u);
- CHECK_RANGE("B", cmap, 5, 9, 1);
- CHECK_RANGE("C", cmap, 10, 15, 100);
- CHECK_RANGE("D", cmap, 16, 20, 12);
-
- cmap.addCIDRange(15, 15, 50);
- ASSERT_EQ(cmap.numCIDRanges(), 4u);
- CHECK_RANGE("E", cmap, 5, 9, 1);
- CHECK_RANGE("F", cmap, 10, 14, 100);
- CHECK_RANGE("G", cmap, 15, 15, 50);
- CHECK_RANGE("H", cmap, 16, 20, 12);
-
- cmap.addCIDRange(6, 19, 1);
- ASSERT_EQ(cmap.numCIDRanges(), 3u);
- CHECK_RANGE("I", cmap, 5, 5, 1);
- CHECK_RANGE("J", cmap, 6, 19, 1);
- CHECK_RANGE("K", cmap, 20, 20, 16);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/CalculatorTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/CalculatorTest.cpp
deleted file mode 100644
index 09945222d43..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/CalculatorTest.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-/*************************************************************************
-** CalculatorTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include "Calculator.hpp"
-#include "Length.hpp"
-
-
-TEST(CalculatorTest, eval) {
- Calculator calc;
- EXPECT_EQ(calc.eval("2"), 2);
- EXPECT_EQ(calc.eval("-2"), -2);
- EXPECT_EQ(calc.eval("2+3+4"), 9);
- EXPECT_EQ(calc.eval(" 2 + 3+ 4 "), 9);
- EXPECT_EQ(calc.eval("2*3+4"), 10);
- EXPECT_EQ(calc.eval("2+3*4"), 14);
- EXPECT_EQ(calc.eval("(2+3)*4"), 20);
- EXPECT_EQ(calc.eval("2*(3+4)"), 14);
- EXPECT_EQ(calc.eval("2(3+4)"), 14);
- EXPECT_EQ(calc.eval("(1+2)(3+4)"), 21);
- EXPECT_EQ(calc.eval("-(1+2)(3+4)"), -21);
- EXPECT_EQ(calc.eval("(1+2)-(3+4)"), -4);
- EXPECT_EQ(calc.eval("-2+3+4"), 5);
- EXPECT_EQ(calc.eval("3/2"), 1.5);
- EXPECT_EQ(calc.eval("1+3/2"), 2.5);
- EXPECT_EQ(calc.eval("3/2+1"), 2.5);
- EXPECT_EQ(calc.eval("3%2"), 1);
- EXPECT_EQ(calc.eval("1+3%2"), 2);
- EXPECT_EQ(calc.eval("3%2+1"), 2);
- EXPECT_EQ(calc.eval("-(4)"), -4);
-}
-
-
-TEST(CalculatorTest, variables) {
- Calculator calc;
- calc.setVariable("a", 1);
- EXPECT_EQ(calc.getVariable("a"), 1);
-
- calc.setVariable("a", 2);
- EXPECT_EQ(calc.getVariable("a"), 2);
-
- calc.setVariable("b", 3);
- EXPECT_EQ(calc.eval("a+b"), 5);
- EXPECT_EQ(calc.eval("a+a*b"), 8);
- EXPECT_EQ(calc.eval("a*a+b"), 7);
- EXPECT_EQ(calc.eval("2a+2b"), 10);
- EXPECT_EQ(calc.eval("2a(1+2b)"), 28);
-}
-
-
-TEST(CalculatorTest, exceptions) {
- Calculator calc;
- ASSERT_THROW(calc.eval("2++3"), CalculatorException);
- ASSERT_THROW(calc.eval("c"), CalculatorException);
- ASSERT_THROW(calc.eval("1/0"), CalculatorException);
- ASSERT_THROW(calc.eval("1%0"), CalculatorException);
- ASSERT_THROW(calc.eval("2*(3+4"), CalculatorException);
- ASSERT_THROW(calc.eval("2*(3+4))"), CalculatorException);
- ASSERT_THROW(calc.eval("2*3+4)"), CalculatorException);
- ASSERT_THROW(calc.eval("2(3+4"), CalculatorException);
-}
-
-
-TEST(CalculatorTest, units) {
- Calculator calc;
- for (auto unit : Length::getUnits())
- calc.setVariable(unit.first, Length(1, unit.second).bp());
- EXPECT_DOUBLE_EQ(calc.eval("1bp+3bp"), 4.0);
- EXPECT_DOUBLE_EQ(calc.eval("1bp+1in"), 73.0);
- EXPECT_DOUBLE_EQ(calc.eval("5cm/1cm"), 5.0);
- EXPECT_DOUBLE_EQ(calc.eval("5cm/1cm"), 5.0);
- EXPECT_DOUBLE_EQ(calc.eval("5cm"), 5/2.54*72);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/ColorSpecialTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/ColorSpecialTest.cpp
deleted file mode 100644
index 453ba09a207..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/ColorSpecialTest.cpp
+++ /dev/null
@@ -1,147 +0,0 @@
-/*************************************************************************
-** ColorSpecialTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <sstream>
-#include "ColorSpecialHandler.hpp"
-#include "SpecialActions.hpp"
-
-using namespace std;
-
-class ColorSpecialTest : public ::testing::Test {
- protected:
- struct SetColor : EmptySpecialActions {
- SetColor () : color(0) {}
- void setColor (const Color &c) {color = uint32_t(c);}
- bool equals (uint32_t c) {return color == c;}
- uint32_t color;
- };
- ColorSpecialHandler handler;
- SetColor actions;
-};
-
-
-TEST_F(ColorSpecialTest, info) {
- EXPECT_EQ(handler.name(), "color");
- EXPECT_EQ(handler.prefixes().size(), 1u);
- EXPECT_STREQ(handler.prefixes()[0], "color");
- ASSERT_NE(handler.info(), nullptr);
- EXPECT_FALSE(string(handler.info()).empty());
-}
-
-
-TEST_F(ColorSpecialTest, readColor) {
- std::istringstream iss("rgb 1 0 1");
- EXPECT_EQ(ColorSpecialHandler::readColor(iss).rgbString(), "#f0f");
- iss.clear();
- iss.str("hsb 1 0.5 1");
- EXPECT_EQ(ColorSpecialHandler::readColor(iss).rgbString(), "#ff8080");
- iss.clear();
- iss.str("0 1 0");
- EXPECT_EQ(ColorSpecialHandler::readColor("rgb", iss).rgbString(), "#0f0");
- iss.clear();
- iss.str("1 0.5 1");
- EXPECT_EQ(ColorSpecialHandler::readColor("hsb", iss).rgbString(), "#ff8080");
-}
-
-
-TEST_F(ColorSpecialTest, gray) {
- std::istringstream iss("gray 0.2");
- handler.process("", iss, actions);
- EXPECT_TRUE(actions.equals(0x333333));
-}
-
-
-TEST_F(ColorSpecialTest, rgb) {
- std::istringstream iss("rgb 1 0 1");
- handler.process("", iss, actions);
- EXPECT_TRUE(actions.equals(0xff00ff));
-}
-
-
-TEST_F(ColorSpecialTest, hsb) {
- std::istringstream iss("hsb 1 0.5 1");
- handler.process("", iss, actions);
- EXPECT_TRUE(actions.equals(0xff8080));
-}
-
-
-TEST_F(ColorSpecialTest, cmyk) {
- std::istringstream iss("cmyk 0.1 0.2 0.4 0.6");
- handler.process("", iss, actions);
- EXPECT_TRUE(actions.equals(0x5c523d));
-}
-
-
-TEST_F(ColorSpecialTest, stack1) {
- std::istringstream iss("push rgb 1 0 0");
- handler.process("", iss, actions);
- EXPECT_TRUE(actions.equals(0xff0000));
- iss.clear();
- iss.str("push Blue");
- handler.process("", iss, actions);
- EXPECT_TRUE(actions.equals(0x0000ff));
- iss.clear();
- iss.str("pop");
- handler.process("", iss, actions);
- EXPECT_TRUE(actions.equals(0xff0000));
- iss.clear();
- iss.str("pop");
- handler.process("", iss, actions);
- EXPECT_TRUE(actions.equals(0x000000));
-}
-
-
-TEST_F(ColorSpecialTest, stack2) {
- std::istringstream iss("push rgb 1 0 0");
- handler.process("", iss, actions);
- EXPECT_TRUE(actions.equals(0xff0000));
- iss.clear();
- iss.str("push rgb 0 1 0");
- handler.process("", iss, actions);
- iss.clear();
- iss.str("gray 0.2"); // clear color stack implicitly
- handler.process("", iss, actions);
- EXPECT_TRUE(actions.equals(0x333333));
- iss.clear();
- iss.str("pop");
- handler.process("", iss, actions);
- EXPECT_TRUE(actions.equals(0x000000));
-}
-
-
-TEST_F(ColorSpecialTest, constant) {
- std::istringstream iss("RedViolet");
- handler.process("", iss, actions);
- EXPECT_TRUE(actions.equals(0x9600a8));
-}
-
-
-TEST_F(ColorSpecialTest, errors) {
- std::istringstream iss("UnknownColor");
- EXPECT_THROW(handler.process("", iss, actions), SpecialException);
- iss.clear();
- iss.str("blue");
- EXPECT_THROW(handler.process("", iss, actions), SpecialException);
- iss.clear();
- iss.str("rgb black");
- EXPECT_THROW(handler.process("", iss, actions), SpecialException);
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/ColorTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/ColorTest.cpp
deleted file mode 100644
index 116400ef917..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/ColorTest.cpp
+++ /dev/null
@@ -1,214 +0,0 @@
-/*************************************************************************
-** ColorTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include "Color.hpp"
-
-using namespace std;
-
-TEST(ColorTest, construct) {
- EXPECT_EQ(Color(uint8_t(1), uint8_t(2), uint8_t(3)).rgbString(), "#010203");
- EXPECT_EQ(Color(1.0/255, 2.0/255, 3.0/255).rgbString(), "#010203");
- EXPECT_EQ(Color("Blue").rgbString(), "#00f");
- EXPECT_EQ(Color("blue").rgbString(), "#00f");
- EXPECT_EQ(Color("invalid").rgbString(), "#000");
-}
-
-
-TEST(ColorTest, gray) {
- Color c;
- c.setGray(10.0/255);
- EXPECT_EQ(c.rgbString(), "#0a0a0a");
- c.setGray(uint8_t(15));
- EXPECT_EQ(c.rgbString(), "#0f0f0f");
-}
-
-
-TEST(ColorTest, hsb) {
- Color c;
- c.setHSB(20.0/360, 0.75, 0.8); // i==0
- EXPECT_EQ(c.rgbString(), "#c63");
- c.setHSB(60.0/360, 0.75, 0.8); // i==1
- EXPECT_EQ(c.rgbString(), "#cc3");
- c.setHSB(120.0/360, 1.0, 1.0); // i==2
- EXPECT_EQ(c.rgbString(), "#0f0");
- c.setHSB(180.0/360, 1.0, 1.0); // i==3
- EXPECT_EQ(c.rgbString(), "#0ff");
- c.setHSB(240.0/360, 0.75, 0.8); // i==4
- EXPECT_EQ(c.rgbString(), "#33c");
- c.setHSB(300.0/360, 0.75, 0.8); // i==5
- EXPECT_EQ(c.rgbString(), "#c3c");
- c.setHSB(0.0, 1.0, 1.0);
- EXPECT_EQ(c.rgbString(), "#f00");
- c.setHSB(20.0/360, 0, 0.2); // s==0
- EXPECT_EQ(c.rgbString(), "#333");
-}
-
-
-TEST(ColorTest, cmyk) {
- Color color;
- color.setCMYK(0.5, 0.4, 0.6, 0.2);
- EXPECT_EQ(color.rgbString(), "#667a52");
- double c, m, y, k;
- color.setRGB(0.0, 0.0, 0.0);
- color.getCMYK(c, m, y, k);
- EXPECT_DOUBLE_EQ(c, 0.0);
- EXPECT_DOUBLE_EQ(m, 0.0);
- EXPECT_DOUBLE_EQ(y, 0.0);
- EXPECT_DOUBLE_EQ(k, 1.0);
- color.setRGB(1.0, 0.0, 0.0);
- color.getCMYK(c, m, y, k);
- EXPECT_DOUBLE_EQ(c, 0.0);
- EXPECT_DOUBLE_EQ(m, 1.0);
- EXPECT_DOUBLE_EQ(y, 1.0);
- EXPECT_DOUBLE_EQ(k, 0.0);
-}
-
-
-TEST(ColorTest, name) {
- Color c;
- EXPECT_TRUE(c.setPSName("Magenta"));
- EXPECT_EQ(c.rgbString(), "#f0f");
- EXPECT_FALSE(c.setPSName("mulberry"));
- EXPECT_TRUE(c.setPSName("mulberry", false));
- EXPECT_EQ(c.rgbString(), "#a314f9");
-
- EXPECT_FALSE(c.setPSName("#Magenta"));
- EXPECT_FALSE(c.setPSName("#bcdefg"));
- EXPECT_TRUE(c.setPSName("#abcdef"));
- EXPECT_EQ(c.rgbString(), "#abcdef");
- EXPECT_TRUE(c.setPSName("#89A"));
- EXPECT_EQ(c.rgbString(), "#00089a");
- EXPECT_TRUE(c.setPSName("#A98 \n "));
- EXPECT_EQ(c.rgbString(), "#000a98");
-}
-
-
-TEST(ColorTest, getXYZ) {
- Color c;
- double x, y, z;
- c.setRGB(1.0, 0, 0);
- c.getXYZ(x, y, z);
- EXPECT_NEAR(x, 0.412456, 0.000001);
- EXPECT_NEAR(y, 0.212673, 0.000001);
- EXPECT_NEAR(z, 0.019334, 0.000001);
-
- c.setRGB(0, 1.0, 0);
- c.getXYZ(x, y, z);
- EXPECT_NEAR(x, 0.357576, 0.000001);
- EXPECT_NEAR(y, 0.715152, 0.000001);
- EXPECT_NEAR(z, 0.119192, 0.000001);
-
- c.setRGB(0, 0, 1.0);
- c.getXYZ(x, y, z);
- EXPECT_NEAR(x, 0.180437, 0.000001);
- EXPECT_NEAR(y, 0.072175, 0.000001);
- EXPECT_NEAR(z, 0.950304, 0.000001);
-
- valarray<double> rgb(3), xyz(3);
- rgb[0] = 0.2;
- rgb[1] = 0.75;
- rgb[2] = 0.9;
- Color::RGB2XYZ(rgb, xyz);
- EXPECT_NEAR(xyz[0], 0.342574, 0.000001);
- EXPECT_NEAR(xyz[1], 0.437554, 0.000001);
- EXPECT_NEAR(xyz[2], 0.811202, 0.000001);
-}
-
-
-TEST(ColorTest, getLab) {
- Color c;
- double l, a, b;
- c.setRGB(1.0, 0, 0);
- c.getLab(l, a, b);
- EXPECT_NEAR(l, 53.2408, 0.0001);
- EXPECT_NEAR(a, 80.0925, 0.0001);
- EXPECT_NEAR(b, 67.2032, 0.0001);
-
- c.setRGB(0, 1.0, 0);
- c.getLab(l, a, b);
- EXPECT_NEAR(l, 87.7347, 0.0001);
- EXPECT_NEAR(a, -86.1827, 0.0001);
- EXPECT_NEAR(b, 83.1793, 0.0001);
-
- c.setRGB(0, 0, 1.0);
- c.getLab(l, a, b);
- EXPECT_NEAR(l, 32.2970, 0.0001);
- EXPECT_NEAR(a, 79.1875, 0.0001);
- EXPECT_NEAR(b, -107.8602, 0.0001);
-
- valarray<double> rgb(3), lab(3);
- rgb[0] = 0.2;
- rgb[1] = 0.75;
- rgb[2] = 0.9;
- Color::RGB2Lab(rgb, lab);
- EXPECT_NEAR(lab[0], 72.0647, 0.0001);
- EXPECT_NEAR(lab[1], -23.7597, 0.0001);
- EXPECT_NEAR(lab[2], -29.4733, 0.0001);
-}
-
-
-TEST(ColorTest, svgColorString) {
- EXPECT_EQ(Color(uint32_t(0x000000)).svgColorString(false), "black");
- EXPECT_EQ(Color(uint32_t(0xffffff)).svgColorString(false), "white");
- EXPECT_EQ(Color(uint32_t(0xff0000)).svgColorString(false), "red");
- EXPECT_EQ(Color(uint32_t(0x9400d3)).svgColorString(false), "darkviolet");
- EXPECT_EQ(Color(uint32_t(0x000001)).svgColorString(false), "#000001");
-
- EXPECT_EQ(Color(uint32_t(0x000000)).svgColorString(true), "#000");
- EXPECT_EQ(Color(uint32_t(0xffffff)).svgColorString(true), "#fff");
- EXPECT_EQ(Color(uint32_t(0xff0000)).svgColorString(true), "#f00");
- EXPECT_EQ(Color(uint32_t(0x9400d3)).svgColorString(true), "#9400d3");
- EXPECT_EQ(Color(uint32_t(0x000001)).svgColorString(true), "#000001");
-}
-
-
-TEST(ColorTest, components) {
- EXPECT_EQ(Color::numComponents(Color::ColorSpace::GRAY), 1);
- EXPECT_EQ(Color::numComponents(Color::ColorSpace::RGB), 3);
- EXPECT_EQ(Color::numComponents(Color::ColorSpace::LAB), 3);
- EXPECT_EQ(Color::numComponents(Color::ColorSpace::CMYK), 4);
-}
-
-
-TEST(ColorTest, scale) {
- EXPECT_EQ((Color(uint32_t(0x123456)) *= 0.0).rgbString(), "#000");
- EXPECT_EQ((Color(uint32_t(0x123456)) *= 1.0).rgbString(), "#123456");
- EXPECT_EQ((Color(uint32_t(0x123456)) *= 3.0).rgbString(), "#369d02");
- EXPECT_EQ((Color(uint32_t(0x123456)) *= 0.5).rgbString(), "#091a2b");
-}
-
-
-TEST(ColorTest, set) {
- Color color;
- vector<double> vec{0.1, 0.2, 0.3, 0.4};
- VectorIterator<double> it(vec);
- color.set(Color::ColorSpace::GRAY, it);
- EXPECT_EQ(uint32_t(color), 0x1a1a1au);
- it.reset();
- color.set(Color::ColorSpace::RGB, it);
- EXPECT_EQ(uint32_t(color), 0x1a334du);
- it.reset();
- color.set(Color::ColorSpace::CMYK, it);
- EXPECT_EQ(uint32_t(color), 0x8a7a6bu);
- it.reset();
- color.set(Color::ColorSpace::LAB, it);
- EXPECT_EQ(uint32_t(color), 0x010000u);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/CommandLineTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/CommandLineTest.cpp
deleted file mode 100644
index e9149ffeb60..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/CommandLineTest.cpp
+++ /dev/null
@@ -1,247 +0,0 @@
-/*************************************************************************
-** CommandLineTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <sstream>
-#include "CommandLine.hpp"
-
-using namespace std;
-
-TEST(CommandLineTest, noarg_short) {
- CommandLine cmd;
- const char *args[] = {"progname", "-s", "-n", "-h"};
- char **argv = const_cast<char**>(args);
- cmd.parse(4, argv);
-
- EXPECT_TRUE(cmd.stdoutOpt.given());
- EXPECT_TRUE(cmd.noFontsOpt.given());
- EXPECT_TRUE(cmd.helpOpt.given());
- EXPECT_FALSE(cmd.listSpecialsOpt.given());
- EXPECT_FALSE(cmd.verbosityOpt.given());
- EXPECT_EQ(cmd.verbosityOpt.value(), 7u);
- EXPECT_EQ(cmd.filenames().size(), 0u);
-}
-
-
-TEST(CommandLineTest, noarg_long) {
- CommandLine cmd;
- const char *args[] = {"progname", "--progress", "--no-fonts", "--stdout", "--help", "--verbosity=5"};
- char **argv = const_cast<char**>(args);
- cmd.parse(6, argv);
-
- EXPECT_TRUE(cmd.progressOpt.given());
- EXPECT_DOUBLE_EQ(cmd.progressOpt.value(), 0.5);
- EXPECT_TRUE(cmd.stdoutOpt.given());
- EXPECT_TRUE(cmd.noFontsOpt.given());
- EXPECT_TRUE(cmd.helpOpt.given());
- EXPECT_FALSE(cmd.listSpecialsOpt.given());
- EXPECT_FALSE(cmd.stdinOpt.given());
- EXPECT_FALSE(cmd.singleDashGiven());
- EXPECT_EQ(cmd.filenames().size(), 0u);
- EXPECT_TRUE(cmd.verbosityOpt.given());
- EXPECT_EQ(cmd.verbosityOpt.value(), 5u);
-}
-
-
-TEST(CommandLineTest, arg_short) {
- CommandLine cmd;
- const char *args[] = {"progname", "-P", "-p5", "-r45", "-omyfile.xyz", "-ayes", "-v3", "-"};
- char **argv = const_cast<char**>(args);
- cmd.parse(8, argv);
-
- EXPECT_TRUE(cmd.pdfOpt.given());
- EXPECT_DOUBLE_EQ(cmd.progressOpt.value(), 0.5);
- EXPECT_TRUE(cmd.pageOpt.given());
- EXPECT_EQ(cmd.pageOpt.value(), "5");
- EXPECT_TRUE(cmd.rotateOpt.given());
- EXPECT_EQ(cmd.rotateOpt.value(), 45);
- EXPECT_TRUE(cmd.outputOpt.given());
- EXPECT_EQ(cmd.outputOpt.value(), "myfile.xyz");
- EXPECT_FALSE(cmd.bboxOpt.given());
- EXPECT_FALSE(cmd.stdinOpt.given());
- EXPECT_EQ(cmd.bboxOpt.value(), "min");
- EXPECT_EQ(cmd.filenames().size(), 0u);
- EXPECT_TRUE(cmd.traceAllOpt.given());
- EXPECT_TRUE(cmd.traceAllOpt.value());
- EXPECT_TRUE(cmd.verbosityOpt.given());
- EXPECT_TRUE(cmd.singleDashGiven());
- EXPECT_EQ(cmd.verbosityOpt.value(), 3u);
-}
-
-
-TEST(CommandLineTest, arg_combined) {
- CommandLine cmd;
- const char *args1[] = {"progname", "-lse", "-p5", "-omyfile.xyz"};
- char **argv = const_cast<char**>(args1);
- cmd.parse(4, argv);
- EXPECT_TRUE(cmd.pageOpt.given());
- EXPECT_EQ(cmd.pageOpt.value(), "5");
- EXPECT_TRUE(cmd.listSpecialsOpt.given());
- EXPECT_TRUE(cmd.stdoutOpt.given());
- EXPECT_TRUE(cmd.exactBboxOpt.given());
-
- // can't combine short options that accept optional parameters
- const char *args2[] = {"progname", "-nls", "-p5", "-omyfile.xyz"};
- argv = const_cast<char**>(args2);
- EXPECT_THROW(cmd.parse(4, argv), CL::CommandLineException);
-}
-
-
-TEST(CommandLineTest, arg_separated) {
- CommandLine cmd;
- const char *args[] = {"progname", "-p", "5", "-r", "45", "myfile.xyz", "-afalse"};
- char **argv = const_cast<char**>(args);
- cmd.parse(7, argv);
-
- EXPECT_TRUE(cmd.pageOpt.given());
- EXPECT_EQ(cmd.pageOpt.value(), "5");
- EXPECT_TRUE(cmd.rotateOpt.given());
- EXPECT_EQ(cmd.rotateOpt.value(), 45);
- EXPECT_EQ(cmd.filenames().size(), 1u);
- EXPECT_TRUE(cmd.traceAllOpt.given());
- EXPECT_FALSE(cmd.traceAllOpt.value());
-}
-
-
-TEST(CommandLineTest, arg_long) {
- CommandLine cmd;
- const char *args[] = {"progname", "--page=9", "--rotate=-45.5", "--trace-all", "--output=myfile.zyx"};
- char **argv = const_cast<char**>(args);
- cmd.parse(5, argv);
-
- EXPECT_TRUE(cmd.pageOpt.given());
- EXPECT_EQ(cmd.pageOpt.value(), "9");
- EXPECT_TRUE(cmd.rotateOpt.given());
- EXPECT_EQ(cmd.rotateOpt.value(), -45.5);
- EXPECT_TRUE(cmd.outputOpt.given());
- EXPECT_EQ(cmd.outputOpt.value(), "myfile.zyx");
- EXPECT_FALSE(cmd.bboxOpt.given());
- EXPECT_EQ(cmd.bboxOpt.value(), "min");
- EXPECT_EQ(cmd.filenames().size(), 0u);
- EXPECT_TRUE(cmd.traceAllOpt.given());
- EXPECT_FALSE(cmd.traceAllOpt.value());
-}
-
-
-TEST(CommandLineTest, string_arg) {
- CommandLine cmd;
- const char *args[] = {"progname", "--page=9 - 10", "-m first second"};
- char **argv = const_cast<char**>(args);
- cmd.parse(3, argv);
-
- EXPECT_TRUE(cmd.pageOpt.given());
- EXPECT_EQ(cmd.pageOpt.value(), "9 - 10");
- EXPECT_TRUE(cmd.fontmapOpt.given());
- EXPECT_EQ(cmd.fontmapOpt.value(), "first second");
-}
-
-
-TEST(CommandLineTest, abbrev_long) {
- CommandLine cmd;
- const char *args[] = {"progname", "--pre=2", "--rot=-45.5", "--out=myfile.zyx", "--color"};
- char **argv = const_cast<char**>(args);
- cmd.parse(5, argv);
-
- EXPECT_TRUE(cmd.precisionOpt.given());
- EXPECT_EQ(cmd.precisionOpt.value(), 2);
- EXPECT_TRUE(cmd.rotateOpt.given());
- EXPECT_EQ(cmd.rotateOpt.value(), -45.5);
- EXPECT_TRUE(cmd.outputOpt.given());
- EXPECT_EQ(cmd.outputOpt.value(), "myfile.zyx");
- EXPECT_FALSE(cmd.bboxOpt.given());
- EXPECT_EQ(cmd.bboxOpt.value(), "min");
- EXPECT_EQ(cmd.filenames().size(), 0u);
- EXPECT_TRUE(cmd.colorOpt.given());
-}
-
-
-TEST(CommandLineTest, error) {
- CommandLine cmd;
- // error on wrong argument type
- const char *args1[] = {"progname", "--rotate=x"};
- char **argv = const_cast<char**>(args1);
-
- EXPECT_THROW(cmd.parse(2, argv), CL::CommandLineException);
-
- // error on missing arguments
- const char *args2[] = {"progname", "--page", "--zip"};
- argv = const_cast<char**>(args2);
- EXPECT_THROW(cmd.parse(3, argv), CL::CommandLineException);
- EXPECT_FALSE(cmd.zipOpt.given());
- EXPECT_EQ(cmd.zipOpt.value(), 9);
- EXPECT_FALSE(cmd.pageOpt.given());
- EXPECT_EQ(cmd.pageOpt.value(), "1");
- EXPECT_FALSE(cmd.rotateOpt.given());
- EXPECT_EQ(cmd.filenames().size(), 0u);
-
- // error on ambiguous abbreviation of long option
- const char *args3[] = {"progname", "--no"};
- argv = const_cast<char**>(args3);
- EXPECT_THROW(cmd.parse(2, argv), CL::CommandLineException);
-
- // incorrect boolean value
- const char *args4[] = {"progname", "--trace-all=nope"};
- argv = const_cast<char**>(args4);
- EXPECT_THROW(cmd.parse(2, argv), CL::CommandLineException);
- EXPECT_FALSE(cmd.traceAllOpt.given());
-}
-
-
-TEST(CommandLineTest, file) {
- CommandLine cmd;
- const char *args1[] = {"progname", "--page=3", "-z5", "myfile1", "-l", "myfile2"};
- char **argv = const_cast<char**>(args1);
- cmd.parse(6, argv);
-
- EXPECT_TRUE(cmd.pageOpt.given());
- EXPECT_EQ(cmd.pageOpt.value(), "3");
- EXPECT_TRUE(cmd.zipOpt.given());
- EXPECT_EQ(cmd.zipOpt.value(), 5);
- EXPECT_TRUE(cmd.listSpecialsOpt.given());
- EXPECT_EQ(cmd.filenames().size(), 2u);
- EXPECT_EQ(cmd.filenames()[0], "myfile1");
- EXPECT_EQ(cmd.filenames()[1], "myfile2");
-}
-
-
-TEST(CommandLineTest, files_only) {
- CommandLine cmd;
- const char *args1[] = {"progname", "--page=3", "-z5", "--", "-l", "myfile"};
- char **argv = const_cast<char**>(args1);
- cmd.parse(6, argv);
-
- EXPECT_TRUE(cmd.pageOpt.given());
- EXPECT_EQ(cmd.pageOpt.value(), "3");
- EXPECT_TRUE(cmd.zipOpt.given());
- EXPECT_EQ(cmd.zipOpt.value(), 5);
- EXPECT_EQ(cmd.filenames().size(), 2u);
- EXPECT_EQ(cmd.filenames()[0], "-l");
- EXPECT_EQ(cmd.filenames()[1], "myfile");
-}
-
-
-TEST(CommandLineTest, help) {
- // only check whether help() succeeds
- CommandLine cmd;
- ostringstream oss;
- cmd.help(oss, 0);
- cmd.help(oss, 1);
- cmd.help(oss, 2);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/DVIReaderTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/DVIReaderTest.cpp
deleted file mode 100644
index 9998ccfbccd..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/DVIReaderTest.cpp
+++ /dev/null
@@ -1,585 +0,0 @@
-/*************************************************************************
-** DVIReaderTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <cstdlib>
-#include <fstream>
-#include <ostream>
-#include <string>
-#include <vector>
-#include "DVIReader.hpp"
-#include "Font.hpp"
-#include "Message.hpp"
-#include "XMLString.hpp"
-
-using namespace std;
-
-template <typename T>
-void write (ostream &os, T val) {
- os << val;
-}
-
-template<>
-void write (ostream &os, double val) {
- os << XMLString(val);
-}
-
-
-template <typename T>
-ostream& operator << (ostream &os, const vector<T> &vec) {
- os << '{';
- for (size_t i=0; i < vec.size(); i++) {
- if (i > 0)
- os << ", ";
- write(os, vec[i]);
- }
- os << '}';
- return os;
-}
-
-
-class LoggingDVIReader : public DVIReader {
- public:
- LoggingDVIReader (istream& is, ostream &os) : DVIReader (is), _inVirtualFont(false), _os(os) {}
-
- void execute () {
- clearStream();
- seek(0);
- executeAll();
- }
-
- protected:
- void dviPre (uint8_t id, uint32_t numer, uint32_t denom, uint32_t mag, const string &comment) override {
- _os << "pre " << int(id) << ", " << numer << ", " << denom << ", " << mag << ", '" << comment << "'";
- }
-
- void dviPost (uint16_t stdepth, uint16_t pages, uint32_t pw, uint32_t ph, uint32_t mag, uint32_t num, uint32_t den, uint32_t lbopofs) override {
- _os << "post " << stdepth << ", " << pages << ", " << pw << ", " << ph << ", " << mag << ", " << num << ", " << den << ", " << lbopofs;
- }
-
- void dviPostPost (uint8_t id, uint32_t postOffset) override {
- _os << "postpost " << int(id) << ", " << postOffset;
- }
-
- void dviBop (const vector<int32_t> &c, int32_t prevBopOffset) override {
- _os << "bop " << c << ", " << prevBopOffset;
- }
-
- void dviEop () override {_os << "eop";}
- void dviSetChar0 (uint32_t c, const Font *font) override {if (!_inVirtualFont) _os << "setchar0 " << c;}
- void dviSetChar (uint32_t c, const Font *font) override {if (!_inVirtualFont) _os << "setchar " << c;}
- void dviPutChar (uint32_t c, const Font *font) override {if (!_inVirtualFont) _os << "putchar " << c;}
- void dviSetRule (double h, double w) override {_os << "setrule " << XMLString(h) << ", " << XMLString(w);}
- void dviPutRule (double h, double w) override {_os << "putrule " << XMLString(h) << ", " << XMLString(w);}
- void dviNop () override {_os << "nop";}
- void dviPush () override {_os << "push";}
- void dviPop () override {_os << "pop";}
- void dviRight (double dx) override {_os << "right " << XMLString(dx);}
- void dviDown (double dy) override {_os << "down " << XMLString(dy);}
- void dviX0 () override {_os << "x0";}
- void dviY0 () override {_os << "y0";}
- void dviW0 () override {_os << "w0";}
- void dviZ0 () override {_os << "z0";}
- void dviX (double x) override {_os << "x " << XMLString(x);}
- void dviY (double y) override {_os << "y " << XMLString(y);}
- void dviW (double w) override {_os << "w " << XMLString(w);}
- void dviZ (double z) override {_os << "z " << XMLString(z);}
- void dviDir (WritingMode dir) override {_os << "dir " << int(dir);}
- void dviXXX (const string &str) override {_os << "xxx '" << str << "'";}
-
- void dviFontDef (uint32_t fontnum, uint32_t checksum, const Font *font) override {
- _os << "fontdef " << fontnum << ", " << checksum << ", " << font->name();
- }
-
- void dviFontNum (uint32_t fontnum, SetFontMode mode, const Font *font) override {
- if (!_inVirtualFont) { // exclude logging of virtual fonts
- if (mode == DVIReader::SetFontMode::VF_ENTER)
- _inVirtualFont = true;
- else
- _os << "fontnum " << fontnum << ", " << font->name();
- }
- else if (mode == DVIReader::SetFontMode::VF_LEAVE)
- _inVirtualFont = false;
- }
-
- void dviXPic (uint8_t box, const vector<int32_t> &matrix, int16_t page, const string &path) override {
- _os << "xpic " << int(box) << ", " << matrix << ", " << page << ", " << path;
- }
-
- void dviXFontDef (uint32_t fontnum, const NativeFont *font) override {
- _os << "xfontdef " << fontnum;
- }
-
- void dviXGlyphArray (vector<double> &dx, vector<double> &dy, vector<uint16_t> &glyphs, const Font &font) override {
- _os << "xglypharray " << dx << ", " << dy << ", " << glyphs << ", " << font.name();
- }
-
- void dviXGlyphString (vector<double> &dx, vector<uint16_t> &glyphs, const Font &font) override {
- _os << "xglyphstring " << dx << ", " << glyphs << ", " << font.name();
- }
-
- void dviXTextAndGlyphs (vector<double> &dx, vector<double> &dy, vector<uint16_t> &chars, vector<uint16_t> &glyphs, const Font &font) override {
- _os << "xtxtglyphs " << dx << ", " << dy << ", " << chars << ", " << glyphs << ", " << font.name();
- }
-
- int executeCommand () override {
- int ret = DVIReader::executeCommand();
- if (!_inVirtualFont) {
- _os << " [h=" << XMLString(dviState().h)
- << ", v=" << XMLString(dviState().v)
- << ", x=" << XMLString(dviState().x)
- << ", y=" << XMLString(dviState().y)
- << ", w=" << XMLString(dviState().w)
- << ", z=" << XMLString(dviState().z)
- << ", d=" << int(dviState().d)
- << "]\n";
- }
- return ret;
- }
-
- private:
- bool _inVirtualFont; ///< true if reading a char definition of a virtual font
- ostream &_os;
-};
-
-
-static void test_dvi_file (const char *fname, const vector<const char*> &expected_lines) {
- XMLString::DECIMAL_PLACES = 3;
- string dviname = string(SRCDIR)+"/data/"+fname;
- ifstream ifs(dviname, ios::binary);
- ASSERT_TRUE(bool(ifs));
- stringstream ss;
- LoggingDVIReader dviReader(ifs, ss);
- dviReader.execute();
- ss.seekg(0);
- int lineno=0;
- char line[512];
- for (const string expected_line : expected_lines) {
- ASSERT_FALSE(ss.eof());
- ss.getline(line, 512);
- lineno++;
- EXPECT_EQ(line, expected_line) << "log line #" << lineno;
- }
- ss.getline(line, 512);
- EXPECT_EQ(*line, '\0');
- EXPECT_TRUE(ss.eof());
-}
-
-
-// test DVI file generated with standard LaTeX (DVI version 2)
-TEST(DVIReaderTest, dvi_v2) {
- vector<const char*> expected_lines {
- "pre 2, 25400000, 473628672, 1000, ' TeX output 2017.11.22:1132' [h=0, v=0, x=0, y=0, w=0, z=0, d=0]",
- "bop {1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, -1 [h=0, v=0, x=0, y=0, w=0, z=0, d=0]",
- "down 630.635 [h=0, v=630.635, x=0, y=0, w=0, z=0, d=0]",
- "push [h=0, v=630.635, x=0, y=0, w=0, z=0, d=0]",
- "down -602.74 [h=0, v=27.895, x=0, y=0, w=0, z=0, d=0]",
- "push [h=0, v=27.895, x=0, y=0, w=0, z=0, d=0]",
- "push [h=0, v=27.895, x=0, y=0, w=0, z=0, d=0]",
- "right 61.768 [h=61.768, v=27.895, x=0, y=0, w=0, z=0, d=0]",
- "xxx 'color push gray 0' [h=61.768, v=27.895, x=0, y=0, w=0, z=0, d=0]",
- "right 343.711 [h=405.479, v=27.895, x=0, y=0, w=0, z=0, d=0]",
- "xxx 'color pop' [h=405.479, v=27.895, x=0, y=0, w=0, z=0, d=0]",
- "pop [h=0, v=27.895, x=0, y=0, w=0, z=0, d=0]",
- "pop [h=0, v=27.895, x=0, y=0, w=0, z=0, d=0]",
- "down 572.852 [h=0, v=600.747, x=0, y=0, w=0, z=0, d=0]",
- "push [h=0, v=600.747, x=0, y=0, w=0, z=0, d=0]",
- "right 61.768 [h=61.768, v=600.747, x=0, y=0, w=0, z=0, d=0]",
- "down -547.945 [h=61.768, v=52.802, x=0, y=0, w=0, z=0, d=0]",
- "xxx 'color push gray 0' [h=61.768, v=52.802, x=0, y=0, w=0, z=0, d=0]",
- "down 9.963 [h=61.768, v=62.765, x=0, y=0, w=0, z=0, d=0]",
- "push [h=61.768, v=62.765, x=0, y=0, w=0, z=0, d=0]",
- "fontdef 7, 1274110073, cmr10 [h=61.768, v=62.765, x=0, y=0, w=0, z=0, d=0]",
- "fontnum 7, cmr10 [h=61.768, v=62.765, x=0, y=0, w=0, z=0, d=0]",
- "setchar0 67 [h=68.964, v=62.765, x=0, y=0, w=0, z=0, d=0]",
- "setchar0 111 [h=73.945, v=62.765, x=0, y=0, w=0, z=0, d=0]",
- "setchar0 108 [h=76.712, v=62.765, x=0, y=0, w=0, z=0, d=0]",
- "setchar0 111 [h=81.694, v=62.765, x=0, y=0, w=0, z=0, d=0]",
- "setchar0 114 [h=85.596, v=62.765, x=0, y=0, w=0, z=0, d=0]",
- "w 3.321 [h=88.917, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 116 [h=92.791, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 101 [h=97.219, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 115 [h=101.149, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 116 [h=105.023, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 58 [h=107.79, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "right 4.428 [h=112.218, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "xxx 'color push rgb 1 0 0' [h=112.218, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 114 [h=116.12, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 101 [h=120.548, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 100 [h=126.083, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "xxx 'color pop' [h=126.083, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 44 [h=128.85, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "w0 [h=132.171, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "xxx 'color push rgb 0 0 1' [h=132.171, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 98 [h=137.706, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 108 [h=140.473, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 117 [h=146.008, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 101 [h=150.436, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "xxx 'color pop' [h=150.436, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 44 [h=153.204, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "w0 [h=156.524, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "xxx 'color push cmyk 0 1 0 0' [h=156.524, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 109 [h=164.827, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 97 [h=169.808, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 103 [h=174.789, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 101 [h=179.217, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 110 [h=184.752, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "right -.277 [h=184.475, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 116 [h=188.35, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 97 [h=193.331, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "xxx 'color pop' [h=193.331, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 46 [h=196.098, v=62.765, x=0, y=0, w=3.321, z=0, d=0]",
- "pop [h=61.768, v=62.765, x=0, y=0, w=0, z=0, d=0]",
- "down 44.638 [h=61.768, v=107.402, x=0, y=0, w=0, z=0, d=0]",
- "push [h=61.768, v=107.402, x=0, y=0, w=0, z=0, d=0]",
- "setchar0 76 [h=67.995, v=107.402, x=0, y=0, w=0, z=0, d=0]",
- "setchar0 105 [h=70.762, v=107.402, x=0, y=0, w=0, z=0, d=0]",
- "setchar0 110 [h=76.297, v=107.402, x=0, y=0, w=0, z=0, d=0]",
- "setchar0 101 [h=80.725, v=107.402, x=0, y=0, w=0, z=0, d=0]",
- "w 3.321 [h=84.046, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 111 [h=89.027, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 102 [h=92.071, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "w0 [h=95.392, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 116 [h=99.267, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 101 [h=103.695, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 120 [h=108.953, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 116 [h=112.827, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "w0 [h=116.148, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 119 [h=123.343, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 105 [h=126.111, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 116 [h=129.985, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 104 [h=135.52, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "w0 [h=138.841, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 97 [h=143.822, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "push [h=143.822, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "push [h=143.822, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "right 6.78 [h=150.602, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "xxx 'ps: gsave currentpoint currentpoint translate 30 neg rotate neg exch neg exch translate' [h=150.602, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "push [h=150.602, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 114 [h=154.504, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 111 [h=159.485, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 116 [h=163.36, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 97 [h=168.341, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 116 [h=172.215, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 101 [h=176.643, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 100 [h=182.178, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "pop [h=150.602, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "right 31.576 [h=182.178, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "xxx 'ps: currentpoint grestore moveto' [h=182.178, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "pop [h=143.822, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "pop [h=143.822, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "right 37.446 [h=181.268, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 119 [h=188.463, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "right -.277 [h=188.187, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 111 [h=193.168, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 114 [h=197.07, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 100 [h=202.605, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "setchar0 46 [h=205.372, v=107.402, x=0, y=0, w=3.321, z=0, d=0]",
- "pop [h=61.768, v=107.402, x=0, y=0, w=0, z=0, d=0]",
- "down 52.873 [h=61.768, v=160.275, x=0, y=0, w=0, z=0, d=0]",
- "push [h=61.768, v=160.275, x=0, y=0, w=0, z=0, d=0]",
- "push [h=61.768, v=160.275, x=0, y=0, w=0, z=0, d=0]",
- "push [h=61.768, v=160.275, x=0, y=0, w=0, z=0, d=0]",
- "down -31.154 [h=61.768, v=129.121, x=0, y=0, w=0, z=0, d=0]",
- "putrule .797, 220.922 [h=61.768, v=129.121, x=0, y=0, w=0, z=0, d=0]",
- "y 11.157 [h=61.768, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "push [h=61.768, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "push [h=61.768, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "right 5.978 [h=67.746, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 12 [h=73.281, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 114 [h=77.183, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 115 [h=81.113, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 116 [h=84.987, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "right 3.321 [h=88.308, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 99 [h=92.736, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 111 [h=97.717, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 108 [h=100.484, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 117 [h=106.019, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 109 [h=114.321, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 110 [h=119.856, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "pop [h=61.768, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "push [h=61.768, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "right 110.558 [h=172.326, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 115 [h=176.256, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 101 [h=180.684, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 99 [h=185.112, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 111 [h=190.093, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 110 [h=195.628, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 100 [h=201.163, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "right 3.321 [h=204.483, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 99 [h=208.911, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 111 [h=213.893, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 108 [h=216.66, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 117 [h=222.195, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 109 [h=230.497, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 110 [h=236.032, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "pop [h=61.768, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "pop [h=61.768, v=140.278, x=0, y=11.157, w=0, z=0, d=0]",
- "down 5.8 [h=61.768, v=146.078, x=0, y=11.157, w=0, z=0, d=0]",
- "putrule .498, 220.922 [h=61.768, v=146.078, x=0, y=11.157, w=0, z=0, d=0]",
- "y0 [h=61.768, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "push [h=61.768, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "push [h=61.768, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "right 5.978 [h=67.746, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 76 [h=73.973, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 111 [h=78.954, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 114 [h=82.856, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 101 [h=87.284, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 109 [h=95.586, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "right 3.321 [h=98.907, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 105 [h=101.674, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 112 [h=107.209, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 115 [h=111.139, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 117 [h=116.674, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 109 [h=124.976, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "pop [h=61.768, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "push [h=61.768, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "right 110.558 [h=172.326, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 100 [h=177.861, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 111 [h=182.842, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 108 [h=185.61, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 111 [h=190.591, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "setchar0 114 [h=194.493, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "w 3.321 [h=197.814, v=157.235, x=0, y=11.157, w=3.321, z=0, d=0]",
- "setchar0 115 [h=201.744, v=157.235, x=0, y=11.157, w=3.321, z=0, d=0]",
- "setchar0 105 [h=204.511, v=157.235, x=0, y=11.157, w=3.321, z=0, d=0]",
- "setchar0 116 [h=208.386, v=157.235, x=0, y=11.157, w=3.321, z=0, d=0]",
- "w0 [h=211.706, v=157.235, x=0, y=11.157, w=3.321, z=0, d=0]",
- "setchar0 97 [h=216.688, v=157.235, x=0, y=11.157, w=3.321, z=0, d=0]",
- "setchar0 109 [h=224.99, v=157.235, x=0, y=11.157, w=3.321, z=0, d=0]",
- "setchar0 101 [h=229.418, v=157.235, x=0, y=11.157, w=3.321, z=0, d=0]",
- "setchar0 116 [h=233.292, v=157.235, x=0, y=11.157, w=3.321, z=0, d=0]",
- "pop [h=61.768, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "pop [h=61.768, v=157.235, x=0, y=11.157, w=0, z=0, d=0]",
- "y 11.955 [h=61.768, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "push [h=61.768, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "push [h=61.768, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "right 5.978 [h=67.746, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 99 [h=72.174, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 111 [h=77.155, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 110 [h=82.69, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 115 [h=86.62, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 101 [h=91.048, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 116 [h=94.922, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 101 [h=99.35, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 116 [h=103.224, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 117 [h=108.759, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 114 [h=112.661, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "right 3.321 [h=115.982, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 115 [h=119.912, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 97 [h=124.893, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 100 [h=130.428, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 105 [h=133.195, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 112 [h=138.73, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 115 [h=142.66, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 99 [h=147.088, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 105 [h=149.855, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 110 [h=155.39, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 103 [h=160.371, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "pop [h=61.768, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "push [h=61.768, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "right 110.558 [h=172.326, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 101 [h=176.754, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 108 [h=179.521, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 105 [h=182.289, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 116 [h=186.163, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 114 [h=190.065, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "pop [h=61.768, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "pop [h=61.768, v=169.19, x=0, y=11.955, w=0, z=0, d=0]",
- "y0 [h=61.768, v=181.145, x=0, y=11.955, w=0, z=0, d=0]",
- "push [h=61.768, v=181.145, x=0, y=11.955, w=0, z=0, d=0]",
- "push [h=61.768, v=181.145, x=0, y=11.955, w=0, z=0, d=0]",
- "right 5.978 [h=67.746, v=181.145, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 115 [h=71.676, v=181.145, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 101 [h=76.104, v=181.145, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 100 [h=81.638, v=181.145, x=0, y=11.955, w=0, z=0, d=0]",
- "w 3.321 [h=84.959, v=181.145, x=0, y=11.955, w=3.321, z=0, d=0]",
- "setchar0 100 [h=90.494, v=181.145, x=0, y=11.955, w=3.321, z=0, d=0]",
- "setchar0 105 [h=93.261, v=181.145, x=0, y=11.955, w=3.321, z=0, d=0]",
- "setchar0 97 [h=98.243, v=181.145, x=0, y=11.955, w=3.321, z=0, d=0]",
- "setchar0 109 [h=106.545, v=181.145, x=0, y=11.955, w=3.321, z=0, d=0]",
- "w0 [h=109.866, v=181.145, x=0, y=11.955, w=3.321, z=0, d=0]",
- "setchar0 110 [h=115.401, v=181.145, x=0, y=11.955, w=3.321, z=0, d=0]",
- "setchar0 111 [h=120.382, v=181.145, x=0, y=11.955, w=3.321, z=0, d=0]",
- "setchar0 110 [h=125.917, v=181.145, x=0, y=11.955, w=3.321, z=0, d=0]",
- "w -.277 [h=125.64, v=181.145, x=0, y=11.955, w=-.277, z=0, d=0]",
- "setchar0 117 [h=131.175, v=181.145, x=0, y=11.955, w=-.277, z=0, d=0]",
- "setchar0 109 [h=139.477, v=181.145, x=0, y=11.955, w=-.277, z=0, d=0]",
- "w0 [h=139.2, v=181.145, x=0, y=11.955, w=-.277, z=0, d=0]",
- "setchar0 121 [h=144.458, v=181.145, x=0, y=11.955, w=-.277, z=0, d=0]",
- "pop [h=61.768, v=181.145, x=0, y=11.955, w=0, z=0, d=0]",
- "push [h=61.768, v=181.145, x=0, y=11.955, w=0, z=0, d=0]",
- "right 110.558 [h=172.326, v=181.145, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 101 [h=176.754, v=181.145, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 105 [h=179.521, v=181.145, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 114 [h=183.423, v=181.145, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 109 [h=191.726, v=181.145, x=0, y=11.955, w=0, z=0, d=0]",
- "setchar0 111 [h=196.707, v=181.145, x=0, y=11.955, w=0, z=0, d=0]",
- "w .277 [h=196.984, v=181.145, x=0, y=11.955, w=.277, z=0, d=0]",
- "setchar0 100 [h=202.519, v=181.145, x=0, y=11.955, w=.277, z=0, d=0]",
- "x 3.321 [h=205.84, v=181.145, x=3.321, y=11.955, w=.277, z=0, d=0]",
- "setchar0 116 [h=209.714, v=181.145, x=3.321, y=11.955, w=.277, z=0, d=0]",
- "setchar0 101 [h=214.142, v=181.145, x=3.321, y=11.955, w=.277, z=0, d=0]",
- "setchar0 109 [h=222.444, v=181.145, x=3.321, y=11.955, w=.277, z=0, d=0]",
- "setchar0 112 [h=227.979, v=181.145, x=3.321, y=11.955, w=.277, z=0, d=0]",
- "w0 [h=228.256, v=181.145, x=3.321, y=11.955, w=.277, z=0, d=0]",
- "setchar0 111 [h=233.237, v=181.145, x=3.321, y=11.955, w=.277, z=0, d=0]",
- "setchar0 114 [h=237.139, v=181.145, x=3.321, y=11.955, w=.277, z=0, d=0]",
- "x0 [h=240.46, v=181.145, x=3.321, y=11.955, w=.277, z=0, d=0]",
- "setchar0 105 [h=243.227, v=181.145, x=3.321, y=11.955, w=.277, z=0, d=0]",
- "setchar0 110 [h=248.762, v=181.145, x=3.321, y=11.955, w=.277, z=0, d=0]",
- "w -.277 [h=248.485, v=181.145, x=3.321, y=11.955, w=-.277, z=0, d=0]",
- "setchar0 118 [h=253.743, v=181.145, x=3.321, y=11.955, w=-.277, z=0, d=0]",
- "setchar0 105 [h=256.511, v=181.145, x=3.321, y=11.955, w=-.277, z=0, d=0]",
- "setchar0 100 [h=262.046, v=181.145, x=3.321, y=11.955, w=-.277, z=0, d=0]",
- "setchar0 117 [h=267.58, v=181.145, x=3.321, y=11.955, w=-.277, z=0, d=0]",
- "setchar0 110 [h=273.115, v=181.145, x=3.321, y=11.955, w=-.277, z=0, d=0]",
- "w0 [h=272.838, v=181.145, x=3.321, y=11.955, w=-.277, z=0, d=0]",
- "setchar0 116 [h=276.713, v=181.145, x=3.321, y=11.955, w=-.277, z=0, d=0]",
- "pop [h=61.768, v=181.145, x=0, y=11.955, w=0, z=0, d=0]",
- "pop [h=61.768, v=181.145, x=0, y=11.955, w=0, z=0, d=0]",
- "down 6.099 [h=61.768, v=187.245, x=0, y=11.955, w=0, z=0, d=0]",
- "putrule .797, 220.922 [h=61.768, v=187.245, x=0, y=11.955, w=0, z=0, d=0]",
- "pop [h=61.768, v=160.275, x=0, y=0, w=0, z=0, d=0]",
- "pop [h=61.768, v=160.275, x=0, y=0, w=0, z=0, d=0]",
- "pop [h=61.768, v=160.275, x=0, y=0, w=0, z=0, d=0]",
- "down 58.197 [h=61.768, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "push [h=61.768, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "push [h=61.768, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "push [h=61.768, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "push [h=61.768, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "push [h=61.768, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "down 2.989 [h=61.768, v=221.461, x=0, y=0, w=0, z=0, d=0]",
- "push [h=61.768, v=221.461, x=0, y=0, w=0, z=0, d=0]",
- "push [h=61.768, v=221.461, x=0, y=0, w=0, z=0, d=0]",
- "down -2.989 [h=61.768, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "push [h=61.768, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "right 3.387 [h=65.156, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "setchar0 98 [h=70.69, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "right .277 [h=70.967, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "setchar0 111 [h=75.949, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "right -.277 [h=75.672, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "setchar0 120 [h=80.93, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "setchar0 101 [h=85.358, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "setchar0 100 [h=90.893, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "right 3.321 [h=94.213, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "setchar0 116 [h=98.088, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "setchar0 101 [h=102.516, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "setchar0 120 [h=107.774, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "setchar0 116 [h=111.648, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "pop [h=61.768, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "pop [h=61.768, v=221.461, x=0, y=0, w=0, z=0, d=0]",
- "pop [h=61.768, v=221.461, x=0, y=0, w=0, z=0, d=0]",
- "pop [h=61.768, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "pop [h=61.768, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "pop [h=61.768, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "push [h=61.768, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "push [h=61.768, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "down -9.907 [h=61.768, v=208.565, x=0, y=0, w=0, z=0, d=0]",
- "putrule .398, 53.267 [h=61.768, v=208.565, x=0, y=0, w=0, z=0, d=0]",
- "down 13.095 [h=61.768, v=221.66, x=0, y=0, w=0, z=0, d=0]",
- "push [h=61.768, v=221.66, x=0, y=0, w=0, z=0, d=0]",
- "setrule 13.295, .398 [h=62.167, v=221.66, x=0, y=0, w=0, z=0, d=0]",
- "right 52.47 [h=114.637, v=221.66, x=0, y=0, w=0, z=0, d=0]",
- "setrule 13.295, .398 [h=115.035, v=221.66, x=0, y=0, w=0, z=0, d=0]",
- "pop [h=61.768, v=221.66, x=0, y=0, w=0, z=0, d=0]",
- "down .199 [h=61.768, v=221.859, x=0, y=0, w=0, z=0, d=0]",
- "putrule .398, 53.267 [h=61.768, v=221.859, x=0, y=0, w=0, z=0, d=0]",
- "pop [h=61.768, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "pop [h=61.768, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "pop [h=61.768, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "pop [h=61.768, v=218.472, x=0, y=0, w=0, z=0, d=0]",
- "pop [h=0, v=600.747, x=0, y=0, w=0, z=0, d=0]",
- "down 29.888 [h=0, v=630.635, x=0, y=0, w=0, z=0, d=0]",
- "push [h=0, v=630.635, x=0, y=0, w=0, z=0, d=0]",
- "right 61.768 [h=61.768, v=630.635, x=0, y=0, w=0, z=0, d=0]",
- "xxx 'color push gray 0' [h=61.768, v=630.635, x=0, y=0, w=0, z=0, d=0]",
- "push [h=61.768, v=630.635, x=0, y=0, w=0, z=0, d=0]",
- "right 169.365 [h=231.133, v=630.635, x=0, y=0, w=0, z=0, d=0]",
- "setchar0 49 [h=236.115, v=630.635, x=0, y=0, w=0, z=0, d=0]",
- "pop [h=61.768, v=630.635, x=0, y=0, w=0, z=0, d=0]",
- "right 343.711 [h=405.479, v=630.635, x=0, y=0, w=0, z=0, d=0]",
- "xxx 'color pop' [h=405.479, v=630.635, x=0, y=0, w=0, z=0, d=0]",
- "pop [h=0, v=630.635, x=0, y=0, w=0, z=0, d=0]",
- "pop [h=0, v=630.635, x=0, y=0, w=0, z=0, d=0]",
- "eop [h=0, v=630.635, x=0, y=0, w=0, z=0, d=0]",
- "post 10, 1, 405, 630, 1000, 25400000, 473628672, 42 [h=0, v=630.635, x=0, y=0, w=0, z=0, d=0]",
- "fontdef 7, 1274110073, cmr10 [h=0, v=630.635, x=0, y=0, w=0, z=0, d=0]",
- "postpost 2, 953 [h=0, v=630.635, x=0, y=0, w=0, z=0, d=0]",
- };
- test_dvi_file("sample_v2.dvi", expected_lines);
-}
-
-
-// test DVI file generated with pLaTeX in vertical mode (DVI version 3)
-TEST(DVIReaderTest, dvi_v3) {
- vector<const char*> expected_lines {
- "pre 2, 25400000, 473628672, 1000, ' TeX output 2017.11.22:1928' [h=0, v=0, x=0, y=0, w=0, z=0, d=0]",
- "bop {1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, -1 [h=0, v=0, x=0, y=0, w=0, z=0, d=0]",
- "down 703.125 [h=0, v=703.125, x=0, y=0, w=0, z=0, d=0]",
- "push [h=0, v=703.125, x=0, y=0, w=0, z=0, d=0]",
- "down -678.472 [h=0, v=24.653, x=0, y=0, w=0, z=0, d=0]",
- "down 650.12 [h=0, v=674.773, x=0, y=0, w=0, z=0, d=0]",
- "push [h=0, v=674.773, x=0, y=0, w=0, z=0, d=0]",
- "down -601.603 [h=0, v=73.17, x=0, y=0, w=0, z=0, d=0]",
- "push [h=0, v=73.17, x=0, y=0, w=0, z=0, d=0]",
- "push [h=0, v=73.17, x=0, y=0, w=0, z=0, d=0]",
- "right 12.552 [h=12.552, v=73.17, x=0, y=0, w=0, z=0, d=0]",
- "down -30.128 [h=12.552, v=43.042, x=0, y=0, w=0, z=0, d=0]",
- "dir 1 [h=12.552, v=43.042, x=0, y=0, w=0, z=0, d=1]",
- "down -15.94 [h=28.492, v=43.042, x=0, y=0, w=0, z=0, d=1]",
- "push [h=28.492, v=43.042, x=0, y=0, w=0, z=0, d=1]",
- "down 3.404 [h=25.088, v=43.042, x=0, y=0, w=0, z=0, d=1]",
- "fontdef 7, 1274110073, cmr10 [h=25.088, v=43.042, x=0, y=0, w=0, z=0, d=1]",
- "fontnum 7, cmr10 [h=25.088, v=43.042, x=0, y=0, w=0, z=0, d=1]",
- "setchar0 118 [h=25.088, v=48.3, x=0, y=0, w=0, z=0, d=1]",
- "right -.277 [h=25.088, v=48.023, x=0, y=0, w=0, z=0, d=1]",
- "setchar0 101 [h=25.088, v=52.451, x=0, y=0, w=0, z=0, d=1]",
- "setchar0 114 [h=25.088, v=56.353, x=0, y=0, w=0, z=0, d=1]",
- "setchar0 116 [h=25.088, v=60.228, x=0, y=0, w=0, z=0, d=1]",
- "setchar0 105 [h=25.088, v=62.995, x=0, y=0, w=0, z=0, d=1]",
- "setchar0 99 [h=25.088, v=67.423, x=0, y=0, w=0, z=0, d=1]",
- "setchar0 97 [h=25.088, v=72.404, x=0, y=0, w=0, z=0, d=1]",
- "setchar0 108 [h=25.088, v=75.172, x=0, y=0, w=0, z=0, d=1]",
- "pop [h=28.492, v=43.042, x=0, y=0, w=0, z=0, d=1]",
- "down 15.94 [h=12.552, v=43.042, x=0, y=0, w=0, z=0, d=1]",
- "push [h=12.552, v=43.042, x=0, y=0, w=0, z=0, d=1]",
- "down 3.404 [h=9.148, v=43.042, x=0, y=0, w=0, z=0, d=1]",
- "setchar0 116 [h=9.148, v=46.916, x=0, y=0, w=0, z=0, d=1]",
- "setchar0 101 [h=9.148, v=51.344, x=0, y=0, w=0, z=0, d=1]",
- "setchar0 120 [h=9.148, v=56.602, x=0, y=0, w=0, z=0, d=1]",
- "setchar0 116 [h=9.148, v=60.477, x=0, y=0, w=0, z=0, d=1]",
- "pop [h=12.552, v=43.042, x=0, y=0, w=0, z=0, d=1]",
- "pop [h=0, v=73.17, x=0, y=0, w=0, z=0, d=0]",
- "pop [h=0, v=73.17, x=0, y=0, w=0, z=0, d=0]",
- "pop [h=0, v=674.773, x=0, y=0, w=0, z=0, d=0]",
- "down 28.352 [h=0, v=703.125, x=0, y=0, w=0, z=0, d=0]",
- "push [h=0, v=703.125, x=0, y=0, w=0, z=0, d=0]",
- "right 223.147 [h=223.147, v=703.125, x=0, y=0, w=0, z=0, d=0]",
- "setchar0 49 [h=228.128, v=703.125, x=0, y=0, w=0, z=0, d=0]",
- "pop [h=0, v=703.125, x=0, y=0, w=0, z=0, d=0]",
- "pop [h=0, v=703.125, x=0, y=0, w=0, z=0, d=0]",
- "eop [h=0, v=703.125, x=0, y=0, w=0, z=0, d=0]",
- "post 5, 1, 451, 703, 1000, 25400000, 473628672, 42 [h=0, v=703.125, x=0, y=0, w=0, z=0, d=0]",
- "fontdef 7, 1274110073, cmr10 [h=0, v=703.125, x=0, y=0, w=0, z=0, d=0]",
- "postpost 3, 195 [h=0, v=703.125, x=0, y=0, w=0, z=0, d=0]",
- };
- test_dvi_file("sample_v3.dvi", expected_lines);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/DependencyGraphTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/DependencyGraphTest.cpp
deleted file mode 100644
index 6246e357384..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/DependencyGraphTest.cpp
+++ /dev/null
@@ -1,71 +0,0 @@
-/*************************************************************************
-** DependencyGraphTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include "optimizer/DependencyGraph.hpp"
-
-using namespace std;
-
-static void populate (DependencyGraph<int> &tree) {
- tree.insert(1);
- tree.insert(2);
- tree.insert(1, 3);
- tree.insert(1, 4);
- tree.insert(1, 5);
- tree.insert(4, 6);
- tree.insert(4, 7);
-}
-
-
-TEST(DependencyGraphTest, getKeys) {
- DependencyGraph<int> graph;
- populate(graph);
- auto keys = graph.getKeys();
- ASSERT_EQ(keys.size(), 7u);
- int count=0;
- for (int key : keys) {
- ASSERT_EQ(keys[count++], key);
- }
-}
-
-
-TEST(DependencyGraphTest, insert) {
- DependencyGraph<int> graph;
- populate(graph);
- for (int i=1; i <= 7; i++) {
- ASSERT_TRUE(graph.contains(i));
- }
- ASSERT_FALSE(graph.contains(0));
- ASSERT_FALSE(graph.contains(8));
-}
-
-
-TEST(DependencyGraphTest, removeDependencyPath) {
- DependencyGraph<int> graph;
- populate(graph);
- graph.removeDependencyPath(4);
- ASSERT_FALSE(graph.contains(1));
- ASSERT_TRUE(graph.contains(2));
- ASSERT_TRUE(graph.contains(3));
- ASSERT_FALSE(graph.contains(4));
- ASSERT_TRUE(graph.contains(5));
- ASSERT_TRUE(graph.contains(6));
- ASSERT_TRUE(graph.contains(7));
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/DirectoryTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/DirectoryTest.cpp
deleted file mode 100644
index 7534cc498ca..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/DirectoryTest.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/*************************************************************************
-** DirectoryTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <iostream>
-#include <set>
-#include <unistd.h>
-#include "Directory.hpp"
-#include "FileSystem.hpp"
-
-#ifndef SRCDIR
-#define SRCDIR "."
-#endif
-
-
-using namespace std;
-
-TEST(DirectoryTest, dirs) {
- const char *dirs_to_find[] = {"doc", "src", 0};
- set<string> found_dirs;
- Directory dir(string(SRCDIR)+"/..");
- while (const char *dname = dir.read(Directory::ET_DIR))
- found_dirs.insert(dname);
- for (const char **p=dirs_to_find; *p; ++p) {
- EXPECT_NE(found_dirs.find(*p), found_dirs.end()) << *p;
- }
-}
-
-
-TEST(DirectoryTest, file) {
- const char *files_to_find[] = {
- "Bitmap.cpp", "BoundingBox.cpp", "Calculator.cpp",
- "Directory.cpp", "DVIReader.cpp", "DVIToSVG.cpp", "DVIToSVGActions.cpp",
- "FileSystem.cpp", "Font.cpp", "FontEngine.cpp", "FontManager.cpp",
- "FontMap.cpp", "GFReader.cpp", "GFTracer.cpp", "FileFinder.cpp", "Message.cpp",
- "MetafontWrapper.cpp", "PageSize.cpp", "StreamReader.cpp",
- "TFM.cpp", "VFReader.cpp", "XMLDocument.cpp", "XMLNode.cpp", "XMLString.cpp",
- 0
- };
- set<string> found_files;
- Directory dir(string(SRCDIR)+"/../src");
- while (const char *fname = dir.read(Directory::ET_FILE))
- found_files.insert(fname);
- for (const char **p=files_to_find; *p; ++p) {
- EXPECT_NE(found_files.find(*p), found_files.end()) << *p;
- }
- EXPECT_EQ(found_files.find("tests"), found_files.end());
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/DvisvgmSpecialTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/DvisvgmSpecialTest.cpp
deleted file mode 100644
index c7963b290c0..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/DvisvgmSpecialTest.cpp
+++ /dev/null
@@ -1,369 +0,0 @@
-/*************************************************************************
-** DvisvgmSpecialTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <array>
-#include <sstream>
-#include "DvisvgmSpecialHandler.hpp"
-#include "SpecialActions.hpp"
-#include "XMLNode.hpp"
-
-using namespace std;
-
-
-class MyDvisvgmSpecialHandler : public DvisvgmSpecialHandler {
- public:
- void finishPreprocessing () {dviPreprocessingFinished();}
- void finishPage () {dviEndPage(0, _actions);}
-
- protected:
- EmptySpecialActions _actions;
-};
-
-
-class DvisvgmSpecialTest : public ::testing::Test {
- protected:
- class ActionsRecorder : public EmptySpecialActions {
- public:
- void embed (const BoundingBox &bb) override {bbox.embed(bb);}
- double getX () const override {return -42;}
- double getY () const override {return 14;}
- bool defsEquals (const string &str) const {return defsString() == str;}
- bool pageEquals (const string &str) const {return pageString() == str;}
- bool bboxEquals (const string &str) const {return bbox.toSVGViewBox() == str;}
- string bboxString () const {return bbox.toSVGViewBox();}
- string defsString () const {return toString(svgTree().defsNode());}
- string pageString () const {return toString(svgTree().pageNode());}
-
- void clear () {
- SpecialActions::svgTree().reset();
- SpecialActions::svgTree().newPage(1);
- bbox = BoundingBox(0, 0, 0, 0);
- }
-
- protected:
- string toString (const XMLNode *node) const {
- ostringstream oss;
- if (node)
- node->write(oss);
- return oss.str();
- }
-
- private:
- BoundingBox bbox;
- };
-
- void SetUp () override {
- recorder.clear();
- XMLElement::WRITE_NEWLINES = false;
- }
-
- protected:
- MyDvisvgmSpecialHandler handler;
- ActionsRecorder recorder;
-};
-
-
-TEST_F(DvisvgmSpecialTest, basic) {
- EXPECT_EQ(handler.name(), "dvisvgm");
-}
-
-
-TEST_F(DvisvgmSpecialTest, rawText) {
- istringstream iss("raw first{?nl}{?x},{?y}");
- handler.process("", iss, recorder);
- EXPECT_TRUE(recorder.defsEquals(""));
- EXPECT_TRUE(recorder.pageEquals("<g id='page1'>first\n-42,14</g>")) << recorder.pageString();
-
- iss.clear(); iss.str("raw \t ;{?(-x+2*y-5)}{?(-y+2*x-5)}second {?bbox dummy} \t");
- handler.process("", iss, recorder);
- EXPECT_TRUE(recorder.defsEquals(""));
- EXPECT_TRUE(recorder.pageEquals("<g id='page1'>first\n-42,14;65-103second 0 0 0 0</g>")) << recorder.pageString();
-}
-
-
-TEST_F(DvisvgmSpecialTest, rawPage1) {
- istringstream iss("raw <elem attr1='1' attr2='20'>text1<inner>&lt;text2</inner>text3</elem>");
- handler.process("", iss, recorder);
- EXPECT_TRUE(recorder.defsEquals(""));
- EXPECT_TRUE(recorder.pageEquals("<g id='page1'><elem attr1='1' attr2='20'>text1<inner>&lt;text2</inner>text3</elem></g>")) << recorder.pageString();
-}
-
-
-TEST_F(DvisvgmSpecialTest, rawPage2) {
- istringstream iss("raw <elem attr1='1' attr2='20'>text1");
- handler.process("", iss, recorder);
- iss.clear(); iss.str("raw text2<inner>text3</inner><my:empty-elem/>text4");
- handler.process("", iss, recorder);
- iss.clear(); iss.str("raw </elem>");
- handler.process("", iss, recorder);
- EXPECT_TRUE(recorder.defsEquals(""));
- EXPECT_TRUE(recorder.pageEquals("<g id='page1'><elem attr1='1' attr2='20'>text1text2<inner>text3</inner><my:empty-elem/>text4</elem></g>")) << recorder.pageString();
-}
-
-
-TEST_F(DvisvgmSpecialTest, rawPage3) {
- istringstream iss("raw <elem attr1='1' attr2=");
- handler.process("", iss, recorder);
- iss.clear(); iss.str("raw '20'>text2<inner>text3</inner>text4</e");
- handler.process("", iss, recorder);
- iss.clear(); iss.str("raw lem>");
- handler.process("", iss, recorder);
- EXPECT_TRUE(recorder.defsEquals(""));
- EXPECT_TRUE(recorder.pageEquals("<g id='page1'><elem attr1='1' attr2='20'>text2<inner>text3</inner>text4</elem></g>")) << recorder.pageString();
-}
-
-
-TEST_F(DvisvgmSpecialTest, rawDefs1) {
- istringstream iss("rawdef <elem attr1='1' attr2='20'>text1<inner>&lt;text2</inner>text3</elem>");
- handler.process("", iss, recorder);
- EXPECT_TRUE(recorder.defsEquals("<defs><elem attr1='1' attr2='20'>text1<inner>&lt;text2</inner>text3</elem></defs>")) << recorder.defsString();
- EXPECT_TRUE(recorder.pageEquals("<g id='page1'/>"));
-}
-
-
-TEST_F(DvisvgmSpecialTest, rawDefs2) {
- istringstream iss("rawdef <elem attr1='1' attr2='20'>text1");
- handler.process("", iss, recorder);
- iss.clear(); iss.str("rawdef text2<inner>text3</inner>text4");
- handler.process("", iss, recorder);
- iss.clear(); iss.str("rawdef </elem>");
- handler.process("", iss, recorder);
- EXPECT_TRUE(recorder.defsEquals("<defs><elem attr1='1' attr2='20'>text1text2<inner>text3</inner>text4</elem></defs>"));
- EXPECT_TRUE(recorder.pageEquals("<g id='page1'/>"));
-}
-
-
-TEST_F(DvisvgmSpecialTest, rawDefs3) {
- istringstream iss("rawdef <elem attr1='1' a");
- handler.process("", iss, recorder);
- iss.clear(); iss.str("rawdef ttr2='20'>text2<inner>text3</in");
- handler.process("", iss, recorder);
- iss.clear(); iss.str("rawdef ner>text4</elem>");
- handler.process("", iss, recorder);
- EXPECT_TRUE(recorder.defsEquals("<defs><elem attr1='1' attr2='20'>text2<inner>text3</inner>text4</elem></defs>"));
- EXPECT_TRUE(recorder.pageEquals("<g id='page1'/>"));
-}
-
-
-TEST_F(DvisvgmSpecialTest, rawCDATA) {
- istringstream iss("raw <outer>text1<![CDATA[1 < 2 <!--test-->]]>text2</outer>");
- handler.process("", iss, recorder);
- EXPECT_TRUE(recorder.defsEquals(""));
- EXPECT_TRUE(recorder.pageEquals("<g id='page1'><outer>text1<![CDATA[1 < 2 <!--test-->]]>text2</outer></g>")) << recorder.pageString();
-}
-
-
-TEST_F(DvisvgmSpecialTest, rawComments) {
- istringstream iss("raw <first/><second><!-- 1 < 2 ->--->text</second>");
- handler.process("", iss, recorder);
- EXPECT_TRUE(recorder.defsEquals(""));
- EXPECT_TRUE(recorder.pageEquals("<g id='page1'><first/><second><!-- 1 < 2 ->--->text</second></g>")) << recorder.pageString();
-}
-
-
-TEST_F(DvisvgmSpecialTest, rawPI) {
- istringstream iss("raw <first/><?pi1 whatever?><second><?pi2 whatever?></second>");
- handler.process("", iss, recorder);
- EXPECT_TRUE(recorder.defsEquals(""));
- EXPECT_TRUE(recorder.pageEquals("<g id='page1'><first/><?pi1 whatever?><second><?pi2 whatever?></second></g>")) << recorder.pageString();
-}
-
-
-TEST_F(DvisvgmSpecialTest, rawPageFail) {
- istringstream iss("raw <elem attr1='1' attr2='20'");
- EXPECT_THROW({handler.process("", iss, recorder); handler.finishPage();}, SpecialException); // incomplete opening tag
- iss.clear(); iss.str("raw </elem>");
- EXPECT_THROW(handler.process("", iss, recorder), SpecialException); // spurious closing tag
- iss.clear(); iss.str("raw <open>text</close>");
- EXPECT_THROW(handler.process("", iss, recorder), SpecialException); // mismatching tags
-}
-
-
-TEST_F(DvisvgmSpecialTest, rawDefsFail) {
- istringstream iss("rawdef <elem attr1='1' attr2='20'");
- EXPECT_THROW({handler.process("", iss, recorder); handler.finishPage();}, SpecialException); // incomplete opening tag
- iss.clear(); iss.str("rawdef </elem>");
- EXPECT_THROW(handler.process("", iss, recorder), SpecialException); // spurious closing tag
- iss.clear(); iss.str("rawdef <open>text</close>");
- EXPECT_THROW(handler.process("", iss, recorder), SpecialException); // mismatching tags
-}
-
-
-TEST_F(DvisvgmSpecialTest, rawdef) {
- std::istringstream iss("rawdef first");
- handler.process("", iss, recorder);
- EXPECT_TRUE(recorder.defsEquals("<defs>first</defs>")) << recorder.defsString();
- EXPECT_TRUE(recorder.pageEquals("<g id='page1'/>"));
-
- iss.clear(); iss.str("rawdef \t <second></second> \t");
- handler.process("", iss, recorder);
- EXPECT_TRUE(recorder.defsEquals("<defs>first<second/></defs>"));
- EXPECT_TRUE(recorder.pageEquals("<g id='page1'/>"));
-}
-
-
-TEST_F(DvisvgmSpecialTest, pattern1) {
- const auto cmds = {
- "rawset pat1",
- "raw text1",
- "raw <elem>text2</elem>",
- "endrawset",
- "raw first",
- "rawput pat1",
- "rawput pat1",
- };
- for (const char *cmd : cmds) {
- std::istringstream iss(cmd);
- handler.preprocess("", iss, recorder);
- }
- handler.finishPreprocessing();
- for (const char *cmd : cmds) {
- std::istringstream iss(cmd);
- handler.process("", iss, recorder);
- }
- handler.finishPage();
- EXPECT_TRUE(recorder.defsEquals(""));
- EXPECT_TRUE(recorder.pageEquals("<g id='page1'>firsttext1<elem>text2</elem>text1<elem>text2</elem></g>")) << recorder.pageString();
-}
-
-
-TEST_F(DvisvgmSpecialTest, pattern2) {
- const auto cmds = {
- "rawset pat2",
- "rawdef text1",
- "rawdef <elem>text2</elem>",
- "endrawset",
- "rawdef first",
- "rawput pat2",
- "rawput pat2",
- };
- for (const char *cmd : cmds) {
- std::istringstream iss(cmd);
- handler.preprocess("", iss, recorder);
- }
- handler.finishPreprocessing();
- for (const char *cmd : cmds) {
- std::istringstream iss(cmd);
- handler.process("", iss, recorder);
- }
- handler.finishPage();
- EXPECT_TRUE(recorder.defsEquals("<defs>firsttext1<elem>text2</elem></defs>")) << recorder.defsString();
- EXPECT_TRUE(recorder.pageEquals("<g id='page1'/>"));
-}
-
-
-TEST_F(DvisvgmSpecialTest, pattern3) {
- const auto cmds = {
- "rawset pat3",
- "raw <elem first='a' second='x\"y\"'>text<empty/></elem>",
- "rawdef <a/>text2",
- "endrawset",
- "rawdef first",
- "raw second",
- "rawput pat3",
- "rawput pat3",
- };
- for (const char *cmd : cmds) {
- std::istringstream iss(cmd);
- handler.preprocess("", iss, recorder);
- }
- handler.finishPreprocessing();
- for (const char *cmd : cmds) {
- std::istringstream iss(cmd);
- handler.process("", iss, recorder);
- }
- EXPECT_TRUE(recorder.defsEquals("<defs>first<a/>text2</defs>"));
- EXPECT_TRUE(recorder.pageEquals("<g id='page1'>second<elem first='a' second='x\"y\"'>text<empty/></elem><elem first='a' second='x\"y\"'>text<empty/></elem></g>")) << recorder.pageString();
- handler.finishPage();
-}
-
-
-TEST_F(DvisvgmSpecialTest, fail1) {
- std::istringstream iss("rawset"); // pattern name missing
- EXPECT_THROW(handler.preprocess("", iss, recorder), SpecialException);
- handler.finishPreprocessing();
-}
-
-
-TEST_F(DvisvgmSpecialTest, fail2) {
- std::istringstream iss("rawset pat"); // endrawset missing
- handler.preprocess("", iss, recorder);
- EXPECT_THROW(handler.finishPreprocessing(), SpecialException);
-}
-
-
-TEST_F(DvisvgmSpecialTest, processImg) {
- std::istringstream iss("img 72.27 72.27 test.png");
- handler.process("", iss, recorder);
- EXPECT_TRUE(recorder.defsEquals(""));
- EXPECT_TRUE(recorder.pageEquals("<g id='page1'><image x='-42' y='14' width='72' height='72' xlink:href='test.png'/></g>")) << recorder.pageString();
-
- recorder.clear();
- iss.clear();
- iss.str("img 10bp 20bp test2.png");
- handler.process("", iss, recorder);
- EXPECT_TRUE(recorder.pageEquals("<g id='page1'><image x='-42' y='14' width='10' height='20' xlink:href='test2.png'/></g>")) << recorder.pageString();
-}
-
-
-TEST_F(DvisvgmSpecialTest, fail3) {
- std::istringstream iss("img 10 20xy test.png"); // unknown unit
- EXPECT_THROW(handler.process("", iss, recorder), SpecialException);
-}
-
-
-TEST_F(DvisvgmSpecialTest, processBBox) {
- std::istringstream iss("bbox abs 0 0 72.27 72.27");
- handler.process("", iss, recorder);
- EXPECT_TRUE(recorder.defsEquals(""));
- EXPECT_TRUE(recorder.pageEquals("<g id='page1'/>"));
- EXPECT_TRUE(recorder.bboxEquals("0 0 72 72"));
-
- recorder.clear();
- iss.clear();
- iss.str("bbox 72.27 72.27");
- handler.process("", iss, recorder);
- EXPECT_TRUE(recorder.bboxEquals("-42 -58 72 72"));
-
- recorder.clear();
- iss.clear();
- iss.str("bbox 72bp 72bp");
- handler.process("", iss, recorder);
- EXPECT_TRUE(recorder.bboxEquals("-42 -58 72 72"));
-
- recorder.clear();
- iss.clear();
- iss.str("bbox rel 72.27 72.27");
- handler.process("", iss, recorder);
- EXPECT_TRUE(recorder.bboxEquals("-42 -58 72 72"));
-
- recorder.clear();
- iss.clear();
- iss.str("bbox new name");
- handler.process("", iss, recorder);
- EXPECT_TRUE(recorder.bboxEquals("0 0 0 0"));
-}
-
-
-TEST_F(DvisvgmSpecialTest, fail4) {
- std::istringstream iss("bbox abs 0 0 72.27xx 72.27"); // unknown unit
- EXPECT_THROW(handler.process("", iss, recorder), SpecialException);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/EllipticalArcTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/EllipticalArcTest.cpp
deleted file mode 100644
index 4e367a48044..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/EllipticalArcTest.cpp
+++ /dev/null
@@ -1,142 +0,0 @@
-/*************************************************************************
-** EllipticalArcTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <sstream>
-#include "EllipticalArc.hpp"
-#include "utility.hpp"
-
-using namespace std;
-
-#define EXPECT_NEAR_PAIR(p1, p2, eps) \
- EXPECT_NEAR(p1.x(), p2.x(), eps); \
- EXPECT_NEAR(p1.y(), p2.y(), eps)
-
-
-TEST(EllipticalArcTest, construct1) {
- EllipticalArc arc(DPair(125,75), 100, 50, math::deg2rad(30), 1, 1, DPair(225, 125));
- EXPECT_FALSE(arc.isStraightLine());
- EXPECT_EQ(arc.startPoint(), DPair(125,75));
- EXPECT_EQ(arc.endPoint(), DPair(225,125));
- EXPECT_EQ(arc.rx(), 100);
- EXPECT_EQ(arc.ry(), 50);
- EXPECT_NEAR(math::rad2deg(arc.rotationAngle()), 30, 0.0001);
- EXPECT_TRUE(arc.largeArc());
- EXPECT_TRUE(arc.sweepPositive());
-}
-
-
-TEST(EllipticalArcTest, construct2) {
- // radii two small, check automatic adaption
- EllipticalArc arc(DPair(125,75), 20, 10, math::deg2rad(30), 1, 1, DPair(225, 125));
- EXPECT_FALSE(arc.isStraightLine());
- EXPECT_EQ(arc.startPoint(), DPair(125,75));
- EXPECT_EQ(arc.endPoint(), DPair(225,125));
- EXPECT_NEAR(arc.rx(), 56.2, 0.01);
- EXPECT_NEAR(arc.ry(), 28.1, 0.01);
- EXPECT_NEAR(math::rad2deg(arc.rotationAngle()), 30, 0.0001);
- EXPECT_TRUE(arc.largeArc());
- EXPECT_TRUE(arc.sweepPositive());
-}
-
-
-TEST(EllipticalArcTest, construct3) {
- EXPECT_TRUE(EllipticalArc(DPair(125,75), 0, 10, math::deg2rad(30), 1, 1, DPair(225, 125)).isStraightLine());
- EXPECT_TRUE(EllipticalArc(DPair(125,75), 20, 0, math::deg2rad(30), 1, 1, DPair(225, 125)).isStraightLine());
- EXPECT_TRUE(EllipticalArc(DPair(125,75), 0, 0, math::deg2rad(30), 1, 1, DPair(225, 125)).isStraightLine());
-}
-
-
-TEST(EllipticalArcTest, construct4) {
- // center parameterization
- EllipticalArc arc(DPair(100,100), 100, 50, math::deg2rad(30), math::deg2rad(30), math::deg2rad(80));
- EXPECT_FALSE(arc.isStraightLine());
- EXPECT_NEAR_PAIR(arc.startPoint(), DPair(152.452, 164.952), 0.001);
- EXPECT_NEAR_PAIR(arc.endPoint(), DPair(50.856, 123.589), 0.001);
- EXPECT_NEAR(arc.rx(), 100, 0.1);
- EXPECT_NEAR(arc.ry(), 50, 0.1);
- EXPECT_NEAR(math::rad2deg(arc.rotationAngle()), 30, 0.0001);
- EXPECT_FALSE(arc.largeArc());
- EXPECT_TRUE(arc.sweepPositive());
-}
-
-
-TEST(EllipticalArcTest, transform) {
- EllipticalArc arc(DPair(125,75), 100, 50, math::deg2rad(30), 1, 1, DPair(225, 125));
- Matrix m(1);
- m.scale(1,2).rotate(30).xskewByAngle(15).rotate(20).yskewByAngle(-20);
- arc.transform(m);
- EXPECT_NEAR_PAIR(arc.startPoint(), DPair(13.8871, 204.752), 0.001);
- EXPECT_NEAR_PAIR(arc.endPoint(), DPair(35.957, 350.121), 0.001);
- EXPECT_NEAR(arc.rx(), 154.73, 0.001);
- EXPECT_NEAR(arc.ry(), 64.629, 0.001);
- EXPECT_NEAR(math::rad2deg(arc.rotationAngle()), -81.748, 0.001);
- EXPECT_TRUE(arc.largeArc());
- EXPECT_TRUE(arc.sweepPositive());
-}
-
-
-TEST(EllipticalArcTest, bbox1) {
- EllipticalArc arc(DPair(125,75), 100, 50, math::deg2rad(30), 1, 1, DPair(225, 125));
- BoundingBox bbox = arc.getBBox();
- EXPECT_NEAR(bbox.minX(), 96.854, 0.001);
- EXPECT_NEAR(bbox.minY(), -6.633, 0.001);
- EXPECT_NEAR(bbox.width(), 180.278, 0.001);
- EXPECT_NEAR(bbox.height(), 132.288, 0.001);
-}
-
-
-TEST(EllipticalArcTest, bbox2) {
- EllipticalArc arc(DPair(125,75), 100, 50, math::deg2rad(30), 0, 1, DPair(225, 125));
- BoundingBox bbox = arc.getBBox();
- EXPECT_NEAR(bbox.minX(), 125, 0.1);
- EXPECT_NEAR(bbox.minY(), 75, 0.1);
- EXPECT_NEAR(bbox.width(), 100, 0.1);
- EXPECT_NEAR(bbox.height(), 50, 0.1);
-}
-
-
-TEST(EllipticalArcTest, approximate1) {
- EllipticalArc arc(DPair(125,75), 100, 50, math::deg2rad(30), 1, 1, DPair(225, 125));
- auto beziers = arc.approximate();
- ASSERT_EQ(beziers.size(), 4u);
- DPair data[4][4] = {
- {DPair(125, 75), DPair(96.271, 46.768), DPair(88.655, 17.402), DPair(106.223, 2.602)},
- {DPair(106.223, 2.602), DPair(123.791, -12.198), DPair(162.434, -8.971), DPair(201.493, 10.558)},
- {DPair(201.493, 10.558), DPair(240.551, 30.088), DPair(270.89, 61.351), DPair(276.289, 87.635)},
- {DPair(276.289, 87.635), DPair(281.688, 113.919), DPair(260.884, 129.074), DPair(225, 125)}
- };
- for (int i=0; i < 4; i++) {
- for (int j=0; j < 4; j++) {
- EXPECT_NEAR_PAIR(beziers[i].point(j), data[i][j], 0.001);
- }
- }
-}
-
-
-TEST(EllipticalArcTest, approximate2) {
- EllipticalArc arc(DPair(125,75), 100, 50, math::deg2rad(30), 0, 1, DPair(225, 125));
- auto beziers = arc.approximate();
- ASSERT_EQ(beziers.size(), 1u);
- DPair data[] = {DPair(125, 75), DPair(158.522, 78.806), DPair(198.163, 98.627), DPair(225, 125)};
- for (int j=0; j < 4; j++) {
- EXPECT_NEAR_PAIR(beziers[0].point(j), data[j], 0.001);
- }
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/EmSpecialTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/EmSpecialTest.cpp
deleted file mode 100644
index bfd3635b6db..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/EmSpecialTest.cpp
+++ /dev/null
@@ -1,201 +0,0 @@
-/*************************************************************************
-** EmSpecialTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <sstream>
-#include "EmSpecialHandler.hpp"
-#include "SpecialActions.hpp"
-#include "XMLNode.hpp"
-#include "XMLString.hpp"
-#include "SVGTree.hpp"
-
-using namespace std;
-
-
-class EmSpecialTest : public ::testing::Test {
- protected:
- class ActionsRecorder : public EmptySpecialActions {
- public:
- ActionsRecorder () : x(), y() {}
- void embed (const BoundingBox &bb) override {bbox.embed(bb);}
- void setX (double xx) override {x = xx;}
- void setY (double yy) override {x = yy;}
- double getX () const override {return x;}
- double getY () const override {return y;}
- Color getColor () const override {return color;}
- void setColor (const Color &c) override {color = c;}
- string getPageXML () const {ostringstream oss; oss << *svgTree().pageNode(); return oss.str();}
- const Matrix& getMatrix () const override {static Matrix m(1); return m;}
-
- void clear () {
- SpecialActions::svgTree().reset();
- SpecialActions::svgTree().newPage(1);
- bbox = BoundingBox(0, 0, 0, 0);
- }
-
-/* void write (ostream &os) const {
- os << "page: " << page << '\n'
- << "bbox: " << bbox.toSVGViewBox() << '\n';
- } */
-
- private:
- double x, y;
- BoundingBox bbox;
- Color color;
- };
-
-
- class MyEmSpecialHandler : public EmSpecialHandler {
- public:
- explicit MyEmSpecialHandler (SpecialActions &a) : actions(a) {}
- void finishPage () {dviEndPage(0, actions);}
- void processSpecial (const string &str) {stringstream ss; ss << str; process("em", ss, actions);}
-
- protected:
- SpecialActions &actions;
- };
-
- public:
- EmSpecialTest () : handler(recorder) {}
-
- void SetUp () override {
- XMLString::DECIMAL_PLACES=2;
- recorder.clear();
- }
-
-
- protected:
- ActionsRecorder recorder;
- MyEmSpecialHandler handler;
-};
-
-
-TEST_F(EmSpecialTest, basic) {
- EXPECT_EQ(handler.name(), "em");
-}
-
-
-TEST_F(EmSpecialTest, lines1) {
- DPair p[] = {DPair(0,0), DPair(0,10), DPair(10,10), DPair(10,0)};
- int n = sizeof(p)/sizeof(DPair);
- for (int i=0; i < n; i++) {
- recorder.setX(p[i].x());
- recorder.setY(p[i].y());
- handler.processSpecial(string("point ")+XMLString(i));
- }
- EXPECT_EQ(recorder.getPageXML(), "<g id='page1'/>");
- handler.processSpecial("linewidth 2bp");
- for (int i=0; i < n; i++)
- handler.processSpecial(string("line ")+XMLString(i)+", "+XMLString((i+1)%n));
- EXPECT_EQ(recorder.getPageXML(),
- "<g id='page1'>\n"
- "<line x1='0' y1='0' x2='10' y2='0' stroke-width='2' stroke='#000'/>\n"
- "<line x1='10' y1='0' x2='10' y2='0' stroke-width='2' stroke='#000'/>\n"
- "<line x1='10' y1='0' x2='0' y2='0' stroke-width='2' stroke='#000'/>\n"
- "<line x1='0' y1='0' x2='0' y2='0' stroke-width='2' stroke='#000'/>\n"
- "</g>"
- );
-}
-
-
-TEST_F(EmSpecialTest, lines2) {
- DPair p[] = {DPair(0,0), DPair(0,10), DPair(10,10), DPair(10,0)};
- int n = sizeof(p)/sizeof(DPair);
- handler.processSpecial("linewidth 2bp");
- // define lines prior to the points
- for (int i=0; i < n; i++)
- handler.processSpecial(string("line ")+XMLString(i)+", "+XMLString((i+1)%n));
- // define points
- for (int i=0; i < n; i++) {
- recorder.setX(p[i].x());
- recorder.setY(p[i].y());
- handler.processSpecial(string("point ")+XMLString(i));
- }
- handler.finishPage();
- EXPECT_EQ(recorder.getPageXML(),
- "<g id='page1'>\n"
- "<line x1='0' y1='0' x2='10' y2='0' stroke-width='2' stroke='#000'/>\n"
- "<line x1='10' y1='0' x2='10' y2='0' stroke-width='2' stroke='#000'/>\n"
- "<line x1='10' y1='0' x2='0' y2='0' stroke-width='2' stroke='#000'/>\n"
- "<line x1='0' y1='0' x2='0' y2='0' stroke-width='2' stroke='#000'/>\n"
- "</g>"
- );
-}
-
-
-TEST_F(EmSpecialTest, pline) {
- handler.processSpecial("point 1, 10, 10");
- handler.processSpecial("point 2, 100, 100");
- handler.processSpecial("line 1, 2, 10bp");
- EXPECT_EQ(recorder.getPageXML(), "<g id='page1'>\n<line x1='10' y1='10' x2='100' y2='100' stroke-width='10' stroke='#000'/>\n</g>");
-}
-
-
-TEST_F(EmSpecialTest, vline) {
- handler.processSpecial("point 1, 10, 10");
- handler.processSpecial("point 2, 100, 100");
- handler.processSpecial("line 1v, 2v, 10bp"); // cut line ends vertically
- EXPECT_EQ(recorder.getPageXML(), "<g id='page1'>\n<polygon points='10,17.07 10,2.93 100,92.93 100,107.07'/>\n</g>");
-}
-
-
-TEST_F(EmSpecialTest, hline) {
- handler.processSpecial("point 1, 10, 10");
- handler.processSpecial("point 2, 100, 100");
- handler.processSpecial("line 1h, 2h, 10bp"); // cut line ends horizontally
- EXPECT_EQ(recorder.getPageXML(), "<g id='page1'>\n<polygon points='2.93,10 17.07,10 107.07,100 92.93,100'/>\n</g>");
-}
-
-
-TEST_F(EmSpecialTest, hvline) {
- handler.processSpecial("point 1, 10, 10");
- handler.processSpecial("point 2, 100, 100");
- handler.processSpecial("line 1h, 2v, 10bp"); // cut line ends horizontally
- EXPECT_EQ(recorder.getPageXML(), "<g id='page1'>\n<polygon points='2.93,10 17.07,10 100,92.93 100,107.07'/>\n</g>");
-
- recorder.clear();
- recorder.setColor(Color(0.0, 0.0, 1.0));
- handler.processSpecial("point 1, 10, 10");
- handler.processSpecial("point 2, 100, 100");
- handler.processSpecial("line 1v, 2h, 10bp"); // cut line ends horizontally
- EXPECT_EQ(recorder.getPageXML(), "<g id='page1'>\n<polygon points='10,17.07 10,2.93 107.07,100 92.93,100' fill='#00f'/>\n</g>");
-}
-
-
-TEST_F(EmSpecialTest, lineto) {
- DPair p[] = {DPair(0,0), DPair(0,10), DPair(10,10), DPair(10,0)};
- int n = sizeof(p)/sizeof(DPair);
- recorder.setColor(Color(1.0, 0.0, 0.0));
- for (int i=0; i <= n; i++) {
- recorder.setX(p[i%n].x());
- recorder.setY(p[i%n].y());
- handler.processSpecial("linewidth "+XMLString(2*i)+"bp");
- handler.processSpecial(i == 0 ? "moveto" : "lineto");
- }
- EXPECT_EQ(recorder.getPageXML(),
- "<g id='page1'>\n"
- "<line x1='0' y1='0' x2='10' y2='0' stroke-width='2' stroke='#f00'/>\n"
- "<line x1='10' y1='0' x2='10' y2='0' stroke-width='4' stroke='#f00'/>\n"
- "<line x1='10' y1='0' x2='0' y2='0' stroke-width='6' stroke='#f00'/>\n"
- "<line x1='0' y1='0' x2='0' y2='0' stroke-width='8' stroke='#f00'/>\n"
- "</g>"
- );
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/FileFinderTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/FileFinderTest.cpp
deleted file mode 100644
index a19bbb3341c..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/FileFinderTest.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-/*************************************************************************
-** FileFinderTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <fstream>
-#include "FileFinder.hpp"
-#include "testutil.hpp"
-
-using std::ifstream;
-
-
-TEST(FileFinderTest, find_base_file) {
- const char *path = FileFinder::instance().lookup("FileFinderTest.cpp");
- EXPECT_TRUE(path);
- path = FileFinder::instance().lookup("Does-not-exist");
- EXPECT_FALSE(path);
- path = FileFinder::instance().lookup("frktest.dvi");
- EXPECT_TRUE(path);
- path = FileFinder::instance().lookup("cmr10.tfm");
- EXPECT_TRUE(path);
- ifstream ifs(path);
- EXPECT_TRUE(bool(ifs)) << "path=" << path;
-}
-
-
-TEST(FileFinderTest, find_mapped_file) {
- // mapped base tfm file => should be resolved by kpathsea
- // circle10.tfm is usually mapped to lcircle.tfm
- if (const char *path = FileFinder::instance().lookup("circle10.tfm")) {
- EXPECT_TRUE(path);
- ifstream ifs(path);
- EXPECT_TRUE(bool(ifs));
- }
- else
- WARNING("circle10.tfm not found");
-
- // mapped lm font => should be resolved using dvisvgm's FontMap
- // cork-lmr10 is usually mapped to lmr10
- bool have_lmodern = FileFinder::instance().lookup("lmodern.sty");
- if (have_lmodern) { // package lmodern installed?
- if (const char *path = FileFinder::instance().lookup("cork-lmr10.pfb")) {
- ifstream ifs(path);
- EXPECT_TRUE(bool(ifs));
- }
- else
- WARNING("cork-lmr10.pfb not found");
- }
- else
- WARNING("lmodern.sty not found");
-}
-
-
-TEST(FileFinderTest, mktexmf) {
- // ensure availability of ec font => call mktexmf if necessary
- if (const char *path = FileFinder::instance().lookup("ecrm2000.mf")) {
- ifstream ifs(path);
- EXPECT_TRUE(bool(ifs));
- }
-}
-
-
-TEST(FileFinderTest, find_unavailable_file) {
- const char *path = FileFinder::instance().lookup("not-available.xyz");
- EXPECT_FALSE(path);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/FilePathTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/FilePathTest.cpp
deleted file mode 100644
index 5232016f452..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/FilePathTest.cpp
+++ /dev/null
@@ -1,105 +0,0 @@
-/*************************************************************************
-** FilePathTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <string>
-#include "FilePath.hpp"
-#include "FileSystem.hpp"
-
-#ifndef SRCDIR
-#define SRCDIR "."
-#endif
-
-using namespace std;
-
-
-TEST(FilePathTest, empty) {
- FilePath path;
- ASSERT_TRUE(path.empty());
- path.set("/a/b/c/d", false, "/");
- ASSERT_FALSE(path.empty());
- ASSERT_EQ(path.absolute(), "/a/b/c/d");
-}
-
-
-TEST(FilePathTest, dir1) {
- FilePath fp("a/b/c/d", false, "/");
- ASSERT_EQ(fp.absolute(), "/a/b/c/d");
- ASSERT_EQ(fp.relative("/"), "a/b/c/d");
- ASSERT_EQ(fp.relative("/a/b"), "c/d");
- ASSERT_EQ(fp.relative("/a/b/c"), "d");
- ASSERT_EQ(fp.relative("/a/b/c/d"), ".");
- ASSERT_EQ(fp.relative("/a/b/x"), "../c/d");
- ASSERT_EQ(fp.relative("/a/b/x/y"), "../../c/d");
-}
-
-
-TEST(FilePathTest, dir2) {
- FilePath fp("a/b/c/d", false, "/x/y");
- ASSERT_EQ(fp.absolute(), "/x/y/a/b/c/d");
- ASSERT_EQ(fp.relative("/"), "x/y/a/b/c/d");
- ASSERT_EQ(fp.relative("/x/y/a/b"), "c/d");
- ASSERT_EQ(fp.relative("/x/y/a/b/c"), "d");
- ASSERT_EQ(fp.relative("/x/y/a/b/c/d"), ".");
- ASSERT_EQ(fp.relative("/x/y/a/b/x"), "../c/d");
- ASSERT_EQ(fp.relative("/x/y/a/b/x/y"), "../../c/d");
-}
-
-
-TEST(FilePathTest, file1) {
- FilePath fp("a/b/c/d/f.ext", true, "/");
- ASSERT_EQ(fp.absolute(), "/a/b/c/d/f.ext");
- ASSERT_EQ(fp.relative("/"), "a/b/c/d/f.ext");
- ASSERT_EQ(fp.relative("/a/b"), "c/d/f.ext");
- ASSERT_EQ(fp.relative("/a/b/c"), "d/f.ext");
- ASSERT_EQ(fp.relative("/a/b/c/d"), "f.ext");
- ASSERT_EQ(fp.relative("/a/b/x"), "../c/d/f.ext");
- ASSERT_EQ(fp.relative("/a/b/x/y"), "../../c/d/f.ext");
- ASSERT_EQ(fp.basename(), "f");
- ASSERT_EQ(fp.suffix(), "ext");
- fp.suffix("new");
- ASSERT_EQ(fp.suffix(), "new");
- ASSERT_EQ(fp.relative("/a/b/x/y"), "../../c/d/f.new");
- fp.suffix("");
- ASSERT_EQ(fp.suffix(), "");
- ASSERT_EQ(fp.relative("/a/b/x/y"), "../../c/d/f");
-}
-
-
-TEST(FilePathTest, file2) {
- FilePath fp("/f.ext", true, "/");
- ASSERT_EQ(fp.absolute(), "/f.ext");
- ASSERT_EQ(fp.relative("/a/b"), "../../f.ext");
-}
-
-
-TEST(FilePathTest, autodetect) {
- FileSystem::chdir(SRCDIR);
- FilePath fp1("FilePathTest.cpp");
- ASSERT_TRUE(fp1.isFile());
- ASSERT_FALSE(fp1.empty());
- string cwd = FileSystem::getcwd();
- ASSERT_EQ(fp1.absolute(), cwd + "/FilePathTest.cpp") << "fp1=" << fp1.absolute();
-
- FilePath fp2("");
- ASSERT_FALSE(fp2.isFile());
- ASSERT_FALSE(fp2.empty());
- ASSERT_EQ(fp2.absolute(), FileSystem::getcwd());
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/FileSystemTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/FileSystemTest.cpp
deleted file mode 100644
index 93fa58c2929..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/FileSystemTest.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-/*************************************************************************
-** FileSystemTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <fstream>
-#include "FileSystem.hpp"
-
-#ifndef SRCDIR
-#define SRCDIR "."
-#endif
-
-using namespace std;
-
-
-TEST(FileSystemTest, exists) {
- EXPECT_TRUE(FileSystem::exists(SRCDIR"/FileSystemTest.cpp"));
- EXPECT_FALSE(FileSystem::exists(SRCDIR"/FileSystemTest.cxx"));
-}
-
-
-TEST(FileSystemTest, filetype) {
- EXPECT_TRUE(FileSystem::isFile(SRCDIR"/FileSystemTest.cpp"));
- EXPECT_FALSE(FileSystem::isDirectory(SRCDIR"/FileSystemTest.cpp"));
- EXPECT_TRUE(FileSystem::isDirectory("../tests"));
- EXPECT_FALSE(FileSystem::isFile("../tests"));
-}
-
-
-TEST(FileSystemTest, remove) {
- const char *tmpfile = "out.tmp";
- ofstream ofs(tmpfile);
- ofs << "FileSystemTest::remove\n";
- ofs.close();
- EXPECT_TRUE(FileSystem::exists(tmpfile));
- FileSystem::remove(tmpfile);
- EXPECT_FALSE(FileSystem::exists(tmpfile));
-}
-
-
-TEST(FileSystemTest, rename) {
- const char *tmpfile1 = "out.tmp";
- const char *tmpfile2 = "out-new.tmp";
- ofstream ofs(tmpfile1);
- ofs << "FileSystemTest::remove\n";
- ofs.close();
- EXPECT_TRUE(FileSystem::exists(tmpfile1));
- FileSystem::rename(tmpfile1, tmpfile2);
-#ifndef __WIN32__
- EXPECT_FALSE(FileSystem::exists(tmpfile1));
-#endif
- EXPECT_TRUE(FileSystem::exists(tmpfile2));
- FileSystem::remove(tmpfile2);
- EXPECT_FALSE(FileSystem::exists(tmpfile2));
-}
-
-
-TEST(FileSystemTest, filesize) {
- const char *tmpfile = "out.tmp";
- ofstream ofs(tmpfile, ios::binary);
- for (int i=0; i < 123; ++i)
- ofs.put(i);
- ofs.close();
- EXPECT_EQ(FileSystem::filesize(tmpfile), 123u);
- FileSystem::remove(tmpfile);
-}
-
-
-TEST(FileSystemTest, copy) {
- const char *tmpfile1 = "out.tmp";
- const char *tmpfile2 = "out-new.tmp";
- ofstream ofs(tmpfile1);
- ofs << "FileSystemTest::copy\n";
- ofs.close();
- FileSystem::copy(tmpfile1, tmpfile2);
- ifstream ifs1(tmpfile1);
- ifstream ifs2(tmpfile2);
- EXPECT_TRUE(ifs1 && ifs2);
- while (!ifs1.eof()) {
- EXPECT_EQ(ifs1.get(), ifs2.get());
- }
- EXPECT_TRUE(ifs2.eof());
- ifs1.close();
- ifs2.close();
- FileSystem::remove(tmpfile1);
- FileSystem::remove(tmpfile2);
-}
-
-
-TEST(FileSystemTest, move) {
- const char *tmpfile1 = "out.tmp";
- const char *tmpfile2 = "out-new.tmp";
- ofstream ofs(tmpfile1);
- const char *str = "FileSystemTest::copy\n";
- ofs << str;
- ofs.close();
- FileSystem::copy(tmpfile1, tmpfile2, true);
- ifstream ifs1(tmpfile1);
- ifstream ifs2(tmpfile2);
- EXPECT_TRUE(!ifs1 && ifs2);
- while (*str) {
- EXPECT_EQ(*str++, ifs2.get());
- }
- ifs2.get();
- EXPECT_TRUE(ifs2.eof());
- ifs2.close();
- FileSystem::remove(tmpfile2);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/FontCacheTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/FontCacheTest.cpp
deleted file mode 100644
index ab7d20ad972..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/FontCacheTest.cpp
+++ /dev/null
@@ -1,173 +0,0 @@
-/*************************************************************************
-** FontCacheTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <fstream>
-#include <sstream>
-#include "FileSystem.hpp"
-#include "FontCache.hpp"
-
-#ifndef BUILDDIR
-#define BUILDDIR "."
-#endif
-
-using namespace std;
-
-class LocalCache {
- public:
- LocalCache (const string &cachedir)
- : _cachedir(cachedir),
- _created(!FileSystem::exists(cachedir) && FileSystem::mkdir(cachedir))
- {
- }
-
- ~LocalCache () {
- if (_created)
- FileSystem::rmdir(_cachedir);
- }
-
- string cachedir () const {return _cachedir;}
-
- private:
- string _cachedir;
- bool _created;
-};
-
-
-static LocalCache localCache(BUILDDIR"/data");
-
-
-class FontCacheTest : public testing::Test {
- protected:
- FontCacheTest () : testing::Test(), cachedir(localCache.cachedir()) {
- glyph1.moveto(0, 0);
- glyph1.lineto(10, 0);
- glyph1.lineto(10, 10);
- glyph1.lineto(0, 10);
- glyph1.closepath();
-
- glyph2.moveto(0, 0);
- glyph2.cubicto(10, 10, 20, 0, 50, 50);
- glyph2.lineto(30, 20);
- glyph2.quadto(20, 40, 20, 20);
- glyph2.closepath();
- }
-
- ~FontCacheTest () override {
- FileSystem::remove(cachedir+"/testfont.fgd");
- }
-
- Glyph glyph1, glyph2;
- FontCache cache;
- string cachedir;
-};
-
-
-static string toSVG (const Glyph &glyph) {
- ostringstream oss;
- glyph.writeSVG(oss, false);
- return oss.str();
-}
-
-
-TEST_F(FontCacheTest, glyph) {
- EXPECT_EQ(toSVG(glyph1), "M0 0H10V10H0Z");
- EXPECT_EQ(toSVG(glyph2), "M0 0C10 10 20 0 50 50L30 20Q20 40 20 20Z");
- cache.setGlyph(1, glyph1);
- cache.setGlyph(10, glyph2);
- ASSERT_NE(cache.getGlyph(1), nullptr);
- ASSERT_EQ(cache.getGlyph(2), nullptr);
- ASSERT_NE(cache.getGlyph(10), nullptr);
- ASSERT_EQ(*cache.getGlyph(1), glyph1);
- ASSERT_EQ(*cache.getGlyph(10), glyph2);
-}
-
-
-TEST_F(FontCacheTest, write1) {
- cache.setGlyph(1, glyph1);
- ASSERT_TRUE(cache.fontname().empty());
- ASSERT_FALSE(cache.write(cachedir));
-}
-
-
-TEST_F(FontCacheTest, write2) {
- cache.setGlyph(1, glyph1);
- ASSERT_TRUE(FileSystem::exists(cachedir));
- ASSERT_TRUE(cache.write("testfont", cachedir));
- cache.setGlyph(10, glyph2);
- EXPECT_TRUE(cache.write("testfont", cachedir));
- EXPECT_TRUE(cache.fontname().empty());
-}
-
-
-TEST_F(FontCacheTest, read) {
- cache.setGlyph(1, glyph1);
- cache.setGlyph(10, glyph2);
- ASSERT_TRUE(cache.write("testfont", cachedir));
- // clear cache object
- cache.clear();
- EXPECT_EQ(cache.getGlyph(1), nullptr);
- EXPECT_EQ(cache.getGlyph(2), nullptr);
- EXPECT_EQ(cache.getGlyph(10), nullptr);
- // read glyph data from cache file
- ASSERT_TRUE(cache.read("testfont", cachedir));
- EXPECT_EQ(cache.fontname(), "testfont");
- ASSERT_NE(cache.getGlyph(1), nullptr);
- EXPECT_EQ(cache.getGlyph(2), nullptr);
- ASSERT_NE(cache.getGlyph(10), nullptr);
- EXPECT_EQ(*cache.getGlyph(1), glyph1);
- EXPECT_EQ(*cache.getGlyph(10), glyph2);
-}
-
-
-TEST_F(FontCacheTest, fontinfo1) {
- ostringstream oss;
- cache.clear();
- FileSystem::remove(cachedir+"/testfont.fgd");
- cache.fontinfo(cachedir, oss);
- ASSERT_EQ(oss.str(), "cache is empty\n");
-
- // check removal of invalid cache files
- ofstream cachefile(cachedir+"/invalid.fgd");
- cachefile << "invalid cache file";
- cachefile.close();
- ASSERT_TRUE(FileSystem::exists(cachedir+"/invalid.fgd"));
- oss.str("");
- cache.fontinfo(cachedir, oss, true);
- ASSERT_EQ(oss.str(),
- "cache is empty\n"
- "invalid cache file invalid.fgd removed\n"
- );
- ASSERT_FALSE(FileSystem::exists(cachedir+"/invalid.fgd"));
-}
-
-
-TEST_F(FontCacheTest, fontinfo2) {
- cache.setGlyph(1, glyph1);
- cache.setGlyph(10, glyph2);
- ASSERT_TRUE(cache.write("testfont", cachedir));
-
- ostringstream oss;
- cache.fontinfo(cachedir, oss);
- ASSERT_EQ(oss.str(),
- "cache format version 5\n"
- "testfont 2 glyphs 10 cmds 58 bytes hash:3cb32ab6\n"
- );
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/FontManagerTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/FontManagerTest.cpp
deleted file mode 100644
index f2ea9b248a4..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/FontManagerTest.cpp
+++ /dev/null
@@ -1,71 +0,0 @@
-/*************************************************************************
-** FontManagerTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <sstream>
-#include "Font.hpp"
-#include "FontManager.hpp"
-
-class FontManagerTest : public ::testing::Test {
- public:
- FontManagerTest () : fm(FontManager::instance()) {
- fm.registerFont(10, "cmr10", 1274110073, 10, 10);
- fm.registerFont(11, "cmr10", 1274110073, 10, 12);
- fm.registerFont( 9, "cmr10", 1274110073, 10, 14);
- }
-
- protected:
- FontManager &fm;
-};
-
-
-TEST_F(FontManagerTest, fontID1) {
- EXPECT_EQ(fm.fontID(10), 0);
- EXPECT_EQ(fm.fontID(11), 1);
- EXPECT_EQ(fm.fontID(9), 2);
- EXPECT_EQ(fm.fontID(1), -1);
-}
-
-
-TEST_F(FontManagerTest, font_ID2) {
- EXPECT_EQ(fm.fontID("cmr10"), 0);
-}
-
-
-TEST_F(FontManagerTest, getFont) {
- const Font *f1 = fm.getFont(10);
- EXPECT_TRUE(f1);
- EXPECT_EQ(f1->name(), "cmr10");
- EXPECT_TRUE(dynamic_cast<const PhysicalFontImpl*>(f1));
-
- const Font *f2 = fm.getFont(11);
- EXPECT_TRUE(f2);
- EXPECT_NE(f1, f2);
- EXPECT_EQ(f2->name(), "cmr10");
- EXPECT_TRUE(dynamic_cast<const PhysicalFontProxy*>(f2));
- EXPECT_EQ(f2->uniqueFont(), f1);
-}
-
-
-TEST_F(FontManagerTest, getFontById) {
- EXPECT_EQ(fm.getFont(10), fm.getFontById(0));
- EXPECT_EQ(fm.getFont("cmr10"), fm.getFontById(0));
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/FontMapTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/FontMapTest.cpp
deleted file mode 100644
index 8f3e512feaa..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/FontMapTest.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-/*************************************************************************
-** FontMapTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <fstream>
-#include "FontMap.hpp"
-
-#ifndef SRCDIR
-#define SRCDIR "."
-#endif
-
-using namespace std;
-
-
-TEST(FontMapTest, pdf_map) {
- string fname = string(SRCDIR)+"/data/dvipdfm_test.map";
- FontMap &fm = FontMap::instance();
- fm.read(fname);
- const FontMap::Entry *entry;
- ASSERT_NE(entry = fm.lookup("MyriadPro-Bold-8t"), nullptr);
- EXPECT_EQ(entry->fontname, "MyriadPro-Bold");
- EXPECT_EQ(entry->encname, "my-lf-t1");
- ASSERT_NE(entry = fm.lookup("cmbsy8"), nullptr);
- EXPECT_EQ(entry->fontname, "cmbsy7");
- EXPECT_EQ(entry->encname, "");
-
- // entry without mapped name
- EXPECT_EQ(fm.lookup("msam10"), nullptr);
- EXPECT_EQ(fm.lookup("msbm10"), nullptr);
- EXPECT_EQ(fm.lookup("msbm10"), nullptr);
- EXPECT_EQ(fm.lookup("i don't exist"), nullptr);
-}
-
-
-TEST(FontMapTest, ps_map) {
- string fname = string(SRCDIR)+"/data/dvips_test.map";
- FontMap &fm = FontMap::instance();
- fm.read(fname);
- const FontMap::Entry *entry;
- ASSERT_NE(entry = fm.lookup("MyriadPro-Bold-8t"), nullptr);
- EXPECT_EQ(entry->fontname, "MyriadPro-Bold");
- EXPECT_EQ(entry->encname, "my-lf-t1");
- ASSERT_NE(entry = fm.lookup("cmbsy8"), nullptr);
- EXPECT_EQ(entry->fontname, "cmbsy7");
- EXPECT_EQ(entry->encname, "");
-
- // entry without mapped name
- EXPECT_EQ(fm.lookup("msam10"), nullptr);
- EXPECT_EQ(fm.lookup("msbm10"), nullptr);
- EXPECT_EQ(fm.lookup("msbm10"), nullptr);
- EXPECT_EQ(fm.lookup("i don't exist"), nullptr);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/GFGlyphTracerTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/GFGlyphTracerTest.cpp
deleted file mode 100644
index 071bccf5c64..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/GFGlyphTracerTest.cpp
+++ /dev/null
@@ -1,123 +0,0 @@
-/*************************************************************************
-** GFGlyphTracerTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <string>
-#include "GFGlyphTracer.hpp"
-
-#ifndef SRCDIR
-#define SRCDIR "."
-#endif
-
-using namespace std;
-
-class Callback : public GFGlyphTracer::Callback {
- public:
- void beginChar (uint8_t c) {_oss << "begin(" << int(c) << ")";}
- void endChar (uint8_t c) {_oss << "end(" << int(c) << ")";}
- void emptyChar (uint8_t c) {_oss << "empty(" << int(c) << ")";}
- string getLog () const {return _oss.str();}
- void reset () {_oss.str("");}
-
- private:
- ostringstream _oss;
-};
-
-
-// Returns an SVG path string with scaled values.
-static string scaled_pathstr (const Glyph &glyph) {
- ostringstream oss;
- glyph.writeSVG(oss, false);
- istringstream iss(oss.str());
- ostringstream resultstream;
- XMLString::DECIMAL_PLACES = 1;
- while (iss.peek() > 0) {
- if (isalpha(iss.peek()) || isspace(iss.peek()))
- resultstream << char(iss.get());
- else {
- int num;
- iss >> num;
- resultstream << XMLString(double(num)/10000);
- }
- }
- return resultstream.str();
-}
-
-
-TEST(GFGlyphTracerTest, executeChar) {
- string gfname = string(SRCDIR)+"/data/cmr10.600gf";
- Callback callback;
- GFGlyphTracer tracer(gfname, 10000, &callback);
- Glyph glyph;
- tracer.setGlyph(glyph);
- EXPECT_FALSE(tracer.executeChar(128));
- EXPECT_EQ(callback.getLog(), "begin(128)empty(128)");
-
- callback.reset();
- EXPECT_TRUE(tracer.executeChar('g'));
- ostringstream oss;
- glyph.closeOpenSubPaths();
- EXPECT_EQ(scaled_pathstr(glyph),
- "M3.5 4.3C3.2 4.1 3.1 4.1 2.9 4.3C1.9 4.8 .6 4 .6 3C.6 2.8 .7 2.4 .8 2.3C.9 2.1 1 2 .9 1.7"
- "C.7 1.3 .7 .8 .9 .5C1 .3 1 .3 .6-.1C0-.7 .1-1.4 1.1-1.9C1.7-2.2 3.3-2.2 3.8-1.9"
- "C4.4-1.6 4.7-1.2 4.7-.8C4.7 .2 3.9 .7 2.4 .7C1.3 .7 1 .9 1.1 1.4C1.1 1.7 1.2 1.7 1.4 1.7"
- "C1.5 1.7 1.8 1.6 2 1.6C3.2 1.4 4.2 2.8 3.5 3.7C3.4 3.9 3.4 4 3.6 4.1C4 4.4 4.3 4.4 4.2 4.1"
- "C4.2 3.9 4.4 3.7 4.6 3.8C4.7 3.8 4.8 4 4.8 4.1C4.8 4.6 4.2 4.7 3.5 4.3Z"
- "M2.7 3.9C2.9 3.8 2.9 3.5 2.9 3C2.9 2.2 2.7 1.8 2.2 1.8C1.6 1.8 1.4 2.2 1.4 3C1.4 3.8 1.6 4.2 2.2 4.2C2.3 4.2 2.6 4.1 2.7 3.9Z"
- "M3.5-.1C4-.2 4.2-.7 4-1.1C3.6-2 1.7-2.2 1.1-1.4C.8-1 .8-.6 1.1-.2C1.3 .1 1.4 .1 2.2 .1C2.7 .1 3.3 0 3.5-.1Z");
- EXPECT_EQ(callback.getLog(), "begin(103)end(103)");
-
- tracer.reset(gfname, 1000);
- glyph.clear();
- callback.reset();
- EXPECT_TRUE(tracer.executeChar('I'));
- glyph.closeOpenSubPaths();
- oss.str("");
- EXPECT_EQ(scaled_pathstr(glyph),
- "M0 .7C0 .7 0 .6 .1 .6L.1 .6V.3V0L.1 0C0 0 0 0 0 0C0 0 .1 0 .2 0C.3 0 .3 0 .3 0"
- "C.3 0 .3 0 .3 0L.2 0V.3V.6L.3 .6C.3 .6 .3 .7 .3 .7C.3 .7 .3 .7 .2 .7C.1 .7 0 .7 0 .7Z");
- EXPECT_EQ(callback.getLog(), "begin(73)end(73)");
-}
-
-
-TEST(GFGlyphTracerTest, defaultCallback) {
- string gfname = string(SRCDIR)+"/data/cmr10.600gf";
- GFGlyphTracer::Callback callback;
- GFGlyphTracer tracer(gfname, 1000, &callback);
- Glyph glyph;
- tracer.setGlyph(glyph);
- tracer.closePath();
- EXPECT_FALSE(tracer.executeChar(128));
- EXPECT_TRUE(tracer.executeChar('g'));
-}
-
-
-TEST(GFGlyphTracerTest, fail) {
- GFGlyphTracer tracer;
- EXPECT_FALSE(tracer.executeChar('M'));
-
- Glyph glyph;
- tracer.setGlyph(glyph);
- EXPECT_THROW(tracer.executeChar('M'), GFException);
-
- string gfname = string(SRCDIR)+"/data/cmr10.600gf";
- tracer.reset(gfname, 1000);
- EXPECT_TRUE(tracer.executeChar('M'));
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/GFReaderTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/GFReaderTest.cpp
deleted file mode 100644
index 82c11e9eecd..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/GFReaderTest.cpp
+++ /dev/null
@@ -1,296 +0,0 @@
-/*************************************************************************
-** GFReaderTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <cstdlib>
-#include <fstream>
-#include <string>
-#include <vector>
-#include "GFReader.hpp"
-
-#ifndef SRCDIR
-#define SRCDIR "."
-#endif
-
-using namespace std;
-
-
-struct PixelActions : public Bitmap::Callback {
- void pixel (int x, int y, bool set, const Bitmap &bm) {
- if (charmap.size() == 0) {
- charmap.resize(bm.height());
- for (int i=0; i < bm.height(); i++)
- charmap[i] = string(bm.width(), ' ');
- }
- EXPECT_GE(x, 0);
- EXPECT_LT(x, bm.width());
- EXPECT_GE(y, 0);
- EXPECT_LT(y, bm.height());
- charmap[y][x] = (set ? '*' : '-');
- }
-
- vector<string> charmap;
-};
-
-
-const char *letter_a[] = {
- "-----------********--------------------",
- "--------**************-----------------",
- "------*****-------******---------------",
- "-----***------------*****--------------",
- "----*****------------******------------",
- "---*******------------******-----------",
- "---********-----------******-----------",
- "---********------------******----------",
- "---********------------******----------",
- "---********-------------******---------",
- "----******--------------******---------",
- "-----****---------------******---------",
- "------------------------******---------",
- "------------------------******---------",
- "------------------------******---------",
- "------------------------******---------",
- "-----------------*************---------",
- "-------------*****************---------",
- "----------*********-----******---------",
- "--------*******---------******---------",
- "------*******-----------******---------",
- "----********------------******---------",
- "---*******--------------******---------",
- "--********--------------******---------",
- "-********---------------******---------",
- "-*******----------------******---------",
- "-*******----------------******------**-",
- "*******-----------------******------**-",
- "*******-----------------******------**-",
- "*******-----------------******------**-",
- "*******----------------*******------**-",
- "*******----------------*******------**-",
- "********--------------********------**-",
- "-*******-------------***-*****------**-",
- "-********------------**---*****----**--",
- "--********---------****---*****----**--",
- "----*******------****------*********---",
- "------**************--------*******----",
- "---------********------------*****-----",
-};
-
-
-const char *letter_g[] = {
- "------------------------------******---",
- "------------********--------*********--",
- "----------************----****----****-",
- "--------*****------*****-***-----*****-",
- "-------*****--------*******------*****-",
- "------*****----------*****-------*****-",
- "-----*****------------*****--------*---",
- "----******------------******-----------",
- "----******------------******-----------",
- "---******--------------******----------",
- "---******--------------******----------",
- "---******--------------******----------",
- "---******--------------******----------",
- "---******--------------******----------",
- "---******--------------******----------",
- "---******--------------******----------",
- "---******--------------******----------",
- "----******------------******-----------",
- "----******------------******-----------",
- "-----*****------------*****------------",
- "------*****----------*****-------------",
- "------******--------*****--------------",
- "------*******------*****---------------",
- "-----***--************-----------------",
- "-----**-----********-------------------",
- "----***--------------------------------",
- "----***--------------------------------",
- "----***--------------------------------",
- "----***--------------------------------",
- "----****-------------------------------",
- "----****-------------------------------",
- "----******-----------------------------",
- "-----*********************-------------",
- "-----************************----------",
- "------*************************--------",
- "-------**************************------",
- "------****************************-----",
- "----*****----------------**********----",
- "---*****--------------------********---",
- "--*****-----------------------******---",
- "-*****-------------------------*****---",
- "-*****-------------------------******--",
- "*****---------------------------*****--",
- "*****---------------------------*****--",
- "*****---------------------------*****--",
- "*****---------------------------*****--",
- "*****---------------------------*****--",
- "******-------------------------******--",
- "-*****-------------------------*****---",
- "--*****-----------------------*****----",
- "--******---------------------******----",
- "----*****-------------------*****------",
- "-----******---------------******-------",
- "-------*******---------*******---------",
- "---------*******************-----------",
- "-------------***********---------------",
-};
-
-
-const char *letter_M[] = {
- "****************-------------------------------------****************-",
- "*****************-----------------------------------*****************-",
- "*****************-----------------------------------*****************-",
- "-------**********-----------------------------------**********--------",
- "--------**-*******---------------------------------**-*******---------",
- "--------**-*******---------------------------------**-*******---------",
- "--------**--*******-------------------------------**--*******---------",
- "--------**--*******-------------------------------**--*******---------",
- "--------**--*******-------------------------------**--*******---------",
- "--------**---*******-----------------------------**---*******---------",
- "--------**---*******-----------------------------**---*******---------",
- "--------**---*******-----------------------------**---*******---------",
- "--------**----*******---------------------------**----*******---------",
- "--------**----*******---------------------------**----*******---------",
- "--------**-----*******-------------------------**-----*******---------",
- "--------**-----*******-------------------------**-----*******---------",
- "--------**-----*******-------------------------**-----*******---------",
- "--------**------*******-----------------------**------*******---------",
- "--------**------*******-----------------------**------*******---------",
- "--------**-------*******---------------------**-------*******---------",
- "--------**-------*******---------------------**-------*******---------",
- "--------**-------*******---------------------**-------*******---------",
- "--------**--------*******-------------------**--------*******---------",
- "--------**--------*******-------------------**--------*******---------",
- "--------**--------*******-------------------**--------*******---------",
- "--------**---------*******-----------------**---------*******---------",
- "--------**---------*******-----------------**---------*******---------",
- "--------**----------*******---------------**----------*******---------",
- "--------**----------*******---------------**----------*******---------",
- "--------**----------*******---------------**----------*******---------",
- "--------**-----------*******-------------**-----------*******---------",
- "--------**-----------*******-------------**-----------*******---------",
- "--------**------------*******-----------**------------*******---------",
- "--------**------------*******-----------**------------*******---------",
- "--------**------------*******-----------**------------*******---------",
- "--------**-------------*******---------**-------------*******---------",
- "--------**-------------*******---------**-------------*******---------",
- "--------**-------------*******---------**-------------*******---------",
- "--------**--------------*******-------**--------------*******---------",
- "--------**--------------*******-------**--------------*******---------",
- "--------**---------------*******-----**---------------*******---------",
- "--------**---------------*******-----**---------------*******---------",
- "--------**---------------*******-----**---------------*******---------",
- "--------**----------------*******---**----------------*******---------",
- "--------**----------------*******---**----------------*******---------",
- "--------**-----------------*******-**-----------------*******---------",
- "--------**-----------------*******-**-----------------*******---------",
- "--------**-----------------*******-**-----------------*******---------",
- "--------**------------------********------------------*******---------",
- "--------**------------------********------------------*******---------",
- "--------**------------------********------------------*******---------",
- "-------****------------------******-------------------*******---------",
- "------******-----------------******-------------------*******---------",
- "----**********----------------****-------------------*********--------",
- "******************------------****------------***********************-",
- "******************------------****------------***********************-",
- "******************-------------**-------------***********************-",
-};
-
-
-static void check_letter (const char **lettermap, const vector<string> &charmap) {
- for (size_t i=0; i < charmap.size(); i++)
- ASSERT_EQ(lettermap[i], charmap[charmap.size()-i-1]);
-}
-
-
-class LoggingGFReader : public GFReader {
- public:
- LoggingGFReader (istream &is) : GFReader(is) {}
- void preamble (const string &str) override {_info = str;}
- string getInfo () const {return _info;}
-
- private:
- string _info;
-};
-
-
-TEST(GFReaderTest, preamble) {
- string gf = string(SRCDIR)+"/data/cmr10.600gf";
- ifstream ifs(gf, ios::binary);
- ASSERT_TRUE(bool(ifs));
- LoggingGFReader gfReader(ifs);
- gfReader.executePreamble();
- ASSERT_EQ(gfReader.getInfo(), " METAFONT output 2010.06.18:1911");
-}
-
-
-TEST(GFReaderTest, postamble) {
- string gf = string(SRCDIR)+"/data/cmr10.600gf";
- ifstream ifs(gf, ios::binary);
- ASSERT_TRUE(bool(ifs));
- GFReader gfReader(ifs);
- gfReader.executePostamble();
- const double bp2pt = 72.27/72.0;
- ASSERT_DOUBLE_EQ(gfReader.getDesignSize()*bp2pt, 10);
- ASSERT_NEAR(gfReader.getHPixelsPerPoint(), 8.333, 0.001);
- ASSERT_NEAR(gfReader.getVPixelsPerPoint(), 8.333, 0.001);
-}
-
-
-TEST(GFReaderTest, executeChar) {
- string gf = string(SRCDIR)+"/data/cmr10.600gf";
- ifstream ifs(gf, ios::binary);
- ASSERT_TRUE(bool(ifs));
- GFReader gfReader(ifs);
- PixelActions actions;
- { gfReader.executeChar('a');
- ASSERT_EQ(gfReader.getBitmap().width(), 39);
- ASSERT_EQ(gfReader.getBitmap().height(), 39);
- SCOPED_TRACE("A");
- gfReader.getBitmap().forAllPixels(actions);
- check_letter(letter_a, actions.charmap);
- }{ actions.charmap.clear();
- gfReader.executeChar('g');
- ASSERT_EQ(gfReader.getBitmap().width(), 39);
- ASSERT_EQ(gfReader.getBitmap().height(), 56);
- SCOPED_TRACE("B");
- gfReader.getBitmap().forAllPixels(actions);
- check_letter(letter_g, actions.charmap);
- }{ actions.charmap.clear();
- gfReader.executeChar('M');
- ASSERT_EQ(gfReader.getBitmap().width(), 70);
- ASSERT_EQ(gfReader.getBitmap().height(), 57);
- SCOPED_TRACE("C");
- gfReader.getBitmap().forAllPixels(actions);
- check_letter(letter_M, actions.charmap);
- }
-}
-
-
-TEST(GFReaderTest, executeAllChars) {
- string gf = string(SRCDIR)+"/data/cmr10.600gf";
- ifstream ifs(gf, ios::binary);
- ASSERT_TRUE(bool(ifs));
- GFReader gfReader(ifs);
- gfReader.executeAllChars();
- const double bp2pt = 72.27/72.0;
- ASSERT_NEAR(gfReader.getCharWidth('M')*bp2pt, 0.573, 0.001);
- ASSERT_NEAR(gfReader.getCharWidth('g')*bp2pt, 0.313, 0.001);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/GhostscriptTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/GhostscriptTest.cpp
deleted file mode 100644
index 359d99a8bf0..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/GhostscriptTest.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-/*************************************************************************
-** GhostscriptTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include "Ghostscript.hpp"
-
-
-TEST(GhostscriptTest, available1) {
- const char *args[] = {"test", "-q", "-dNODISPLAY"};
- Ghostscript gs(3, args);
- ASSERT_TRUE(gs.available());
-}
-
-
-TEST(GhostscriptTest, available2) {
- Ghostscript gs;
- ASSERT_TRUE(gs.available());
-}
-
-
-TEST(GhostscriptTest, revision) {
- Ghostscript gs;
- ASSERT_GT(gs.revision(), 0);
- ASSERT_FALSE(gs.revisionstr().empty());
-}
-
-
-TEST(Ghostscript, error_name) {
- Ghostscript gs;
- ASSERT_EQ(gs.error_name(0), (const char*)0);
- ASSERT_STREQ(gs.error_name(-1), "unknownerror");
- ASSERT_STREQ(gs.error_name(1), "unknownerror");
- ASSERT_STREQ(gs.error_name(2), "dictfull");
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/GraphicsPathTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/GraphicsPathTest.cpp
deleted file mode 100644
index 625314c08d5..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/GraphicsPathTest.cpp
+++ /dev/null
@@ -1,264 +0,0 @@
-/*************************************************************************
-** GraphicsPathTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <sstream>
-#include "GraphicsPath.hpp"
-
-using namespace std;
-
-TEST(GraphicsPathTest, svg) {
- GraphicsPath<int> path;
- path.moveto(0,0);
- path.lineto(10,10);
- path.cubicto(20,20,30,30,40,40);
- path.closepath();
- EXPECT_FALSE(path.empty());
- EXPECT_EQ(path.size(), 4u);
- ostringstream oss;
- path.writeSVG(oss, false);
- EXPECT_EQ(oss.str(), "M0 0L10 10C20 20 30 30 40 40Z");
- path.clear();
- EXPECT_TRUE(path.empty());
-}
-
-
-TEST(GraphicsPathTest, optimize) {
- GraphicsPath<int> path;
- path.moveto(0,0);
- path.lineto(10,0);
- path.lineto(10,20);
- ostringstream oss;
- path.writeSVG(oss, false);
- EXPECT_EQ(oss.str(), "M0 0H10V20");
-}
-
-
-TEST(GraphicsPathTest, transform) {
- GraphicsPath<double> path;
- path.moveto(0,0);
- path.lineto(1,0);
- path.lineto(1,1);
- path.lineto(0,1);
- path.closepath();
- Matrix m(1);
- m.scale(2,2);
- m.translate(10, 100);
- m.rotate(90);
- path.transform(m);
- ostringstream oss;
- path.writeSVG(oss, false);
- EXPECT_EQ(oss.str(), "M-100 10V12H-102V10Z");
-}
-
-
-TEST(GraphicsPathTest, closeOpenSubPaths) {
- GraphicsPath<double> path;
- path.moveto(0,0);
- path.lineto(1,0);
- path.lineto(1,1);
- path.lineto(0,1);
- path.moveto(10,10);
- path.lineto(11,10);
- path.lineto(11,11);
- path.lineto(10,11);
- path.closeOpenSubPaths();
- ostringstream oss;
- path.writeSVG(oss, false);
- EXPECT_EQ(oss.str(), "M0 0H1V1H0ZM10 10H11V11H10Z");
-}
-
-
-TEST(GraphicsPathTest, relative1) {
- GraphicsPath<int> path;
- path.moveto(0,0);
- path.lineto(10,10);
- path.lineto(10,20);
- path.cubicto(20,20,30,30,40,40);
- path.quadto(50, 50, 60, 60);
- path.lineto(100,60);
- path.closepath();
- ostringstream oss;
- path.writeSVG(oss, true);
- EXPECT_EQ(oss.str(), "m0 0l10 10v10c10 0 20 10 30 20q10 10 20 20h40z");
-}
-
-
-TEST(GraphicsPathTest, computeBBox) {
- GraphicsPath<int> path;
- path.moveto(10,10);
- path.lineto(100,10);
- path.quadto(10, 100, 40, 80);
- path.cubicto(5,5,30,10,90,70);
- path.lineto(20,30);
- path.closepath();
- BoundingBox bbox = path.computeBBox();
- EXPECT_EQ(bbox, BoundingBox(5, 5, 100, 100));
-}
-
-
-TEST(GraphicsPathTest, removeRedundantCommands) {
- GraphicsPath<int> path;
- path.moveto(10,10);
- path.lineto(100,10);
- path.quadto(10, 100, 40, 80);
- path.cubicto(5,5,30,10,90,70);
- path.moveto(10,10);
- path.moveto(15,10);
- path.moveto(20,20);
- path.lineto(20,30);
- path.moveto(10,10);
- path.moveto(20,20);
- path.removeRedundantCommands();
- ostringstream oss;
- path.writeSVG(oss, false);
- EXPECT_EQ(oss.str(), "M10 10H100Q10 100 40 80C5 5 30 10 90 70M20 20V30");
-}
-
-TEST(GraphicsPathTest, cmd_equals) {
- using Point = Pair<int>;
- gp::MoveTo<int> m1(Point(1, 2));
- gp::MoveTo<int> m2(Point(1, 2));
- gp::MoveTo<int> m3(Point(2, 1));
- EXPECT_EQ(m1, m2);
- EXPECT_EQ(m2, m1);
- EXPECT_NE(m1, m3);
- EXPECT_NE(m3, m1);
- gp::LineTo<int> l1(Point(1, 2));
- EXPECT_NE(l1, m1);
- EXPECT_NE(m1, l1);
- gp::CubicTo<int> c1(Point(1, 2), Point(3, 4), Point(5, 6));
- gp::CubicTo<int> c2(Point(1, 2), Point(3, 4), Point(5, 6));
- gp::CubicTo<int> c3(Point(1, 2), Point(0, 4), Point(5, 6));
- EXPECT_EQ(c1, c2);
- EXPECT_EQ(c2, c1);
- EXPECT_NE(c1, c3);
- EXPECT_NE(c3, c1);
-}
-
-
-TEST(GraphicsPathTest, equals) {
- GraphicsPath<int> path1;
- EXPECT_TRUE(path1 == path1);
- path1.moveto(10,10);
- path1.lineto(100,10);
- path1.quadto(10, 100, 40, 80);
- path1.cubicto(5,5,30,10,90,70);
- path1.lineto(20,30);
- path1.closepath();
- EXPECT_TRUE(path1 == path1);
-
- GraphicsPath<int> path2;
- EXPECT_FALSE(path1 == path2);
- path2.moveto(10,10);
- path2.lineto(100,10);
- path2.quadto(10, 100, 40, 80);
- path2.cubicto(5,5,30,10,90,70);
- path2.lineto(20,30);
- EXPECT_FALSE(path1 == path2);
- EXPECT_FALSE(path2 == path1);
- path2.closepath();
- EXPECT_TRUE(path1 == path2);
- EXPECT_TRUE(path2 == path1);
-
- path2.clear();
- path2.moveto(10,10);
- path2.lineto(100,10);
- path2.quadto(10, 100, 40, 80);
- path2.cubicto(5,5,10,10,90,70);
- path2.lineto(20,30);
- path2.closepath();
- EXPECT_FALSE(path1 == path2);
- EXPECT_FALSE(path2 == path1);
-}
-
-
-TEST(GraphicsPathTest, unequals) {
- GraphicsPath<int> path1;
- EXPECT_FALSE(path1 != path1);
- path1.moveto(10,10);
- path1.lineto(100,10);
- path1.quadto(10, 100, 40, 80);
- path1.cubicto(5,5,30,10,90,70);
- path1.lineto(20,30);
- path1.closepath();
- EXPECT_FALSE(path1 != path1);
-
- GraphicsPath<int> path2;
- EXPECT_TRUE(path1 != path2);
- path2.moveto(10,10);
- path2.lineto(100,10);
- path2.quadto(10, 100, 40, 80);
- path2.cubicto(5,5,30,10,90,70);
- path2.lineto(20,30);
- EXPECT_TRUE(path1 != path2);
- EXPECT_TRUE(path2 != path1);
- path2.closepath();
- EXPECT_FALSE(path1 != path2);
- EXPECT_FALSE(path2 != path1);
-
- path2.clear();
- path2.moveto(10,10);
- path2.lineto(100,10);
- path2.quadto(10, 100, 40, 80);
- path2.cubicto(5,5,10,10,90,70);
- path2.lineto(20,30);
- path2.closepath();
- EXPECT_TRUE(path1 != path2);
- EXPECT_TRUE(path2 != path1);
-}
-
-
-TEST(GraphicsPathTest, approximate_arcs) {
- GraphicsPath<double> path;
- XMLString::DECIMAL_PLACES = 2;
- path.moveto(10, 10);
- path.lineto(20, 0);
- path.arcto(30, 20, 20, 1, 1, DPair(50, 50));
- ostringstream oss;
- path.writeSVG(oss, false);
- EXPECT_EQ(oss.str(), "M10 10L20 0A30 20 20 1 1 50 50");
- path.approximateArcs();
- oss.str("");
- path.writeSVG(oss, false);
- EXPECT_EQ(oss.str(), "M10 10L20 0C25.05-7.15 34.02-8.12 42.72-2.44S58.14 14.42 59.73 25.91S57.48 46.9 50 50");
-}
-
-
-TEST(GraphicsPathTest, smooth_quadto) {
- GraphicsPath<int> path;
- path.moveto(10, 10);
- path.quadto(DPair(30, 20), DPair(40, 10));
- path.quadto(DPair(100, 30));
- ostringstream oss;
- path.writeSVG(oss, false);
- EXPECT_EQ(oss.str(), "M10 10Q30 20 40 10T100 30");
-}
-
-
-TEST(GraphicsPathTest, smooth_cubicto) {
- GraphicsPath<int> path;
- path.moveto(10, 10);
- path.cubicto(DPair(30, 20), DPair(40, 0), DPair(20, 50));
- path.cubicto(DPair(80, 100), DPair(100, 30));
- ostringstream oss;
- path.writeSVG(oss, false);
- EXPECT_EQ(oss.str(), "M10 10C30 20 40 0 20 50S80 100 100 30");
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/HashFunctionTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/HashFunctionTest.cpp
deleted file mode 100644
index bf56ebda2d0..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/HashFunctionTest.cpp
+++ /dev/null
@@ -1,142 +0,0 @@
-/*************************************************************************
-** HashFunctionTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include "MD5HashFunction.hpp"
-#include "XXHashFunction.hpp"
-
-using namespace std;
-
-
-TEST(HashFunctionTest, md5) {
- MD5HashFunction md5;
- ASSERT_EQ(md5.digestSize(), 16);
- md5.update("0123456789");
- EXPECT_EQ(md5.digestString(), "781e5e245d69b566979b86e28d23f2c7");
- md5.update("abcdefghij");
- EXPECT_EQ(md5.digestString(), "644be06dfc54061fd1e67f5ebbabcd58");
- md5.reset();
- md5.update("0123456789");
- EXPECT_EQ(md5.digestString(), "781e5e245d69b566979b86e28d23f2c7");
- vector<uint8_t> bytes = {0x78, 0x1e, 0x5e, 0x24, 0x5d, 0x69, 0xb5, 0x66, 0x97, 0x9b, 0x86, 0xe2, 0x8d, 0x23, 0xf2, 0xc7};
- EXPECT_EQ(md5.digestBytes(), bytes);
-}
-
-
-TEST(HashFunctionTest, xxh32) {
- XXH32HashFunction xxh32;
- ASSERT_EQ(xxh32.digestSize(), 4);
- xxh32.update("0123456789");
- EXPECT_EQ(xxh32.digestString(), "950c9c0a");
- xxh32.update("abcdefghij");
- EXPECT_EQ(xxh32.digestString(), "35600916");
- xxh32.reset();
- xxh32.update("0123456789");
- EXPECT_EQ(xxh32.digestString(), "950c9c0a");
- vector<uint8_t> bytes = {0x95, 0x0c, 0x9c, 0x0a};
- EXPECT_EQ(xxh32.digestBytes(), bytes);
-}
-
-
-TEST(HashFunctionTest, xxh64) {
- XXH64HashFunction xxh64;
- ASSERT_EQ(xxh64.digestSize(), 8);
- xxh64.update("0123456789");
- EXPECT_EQ(xxh64.digestString(), "3f5fc178a81867e7");
- xxh64.update("abcdefghij");
- EXPECT_EQ(xxh64.digestString(), "45c2c0e1eb35a0b6");
- xxh64.reset();
- xxh64.update("0123456789");
- EXPECT_EQ(xxh64.digestString(), "3f5fc178a81867e7");
- vector<uint8_t> bytes = {0x3f, 0x5f, 0xc1, 0x78, 0xa8, 0x18, 0x67, 0xe7};
- EXPECT_EQ(xxh64.digestBytes(), bytes);
-}
-
-
-#ifdef ENABLE_XXH128
-TEST(HashFunctionTest, xxh128) {
- XXH128HashFunction xxh128;
- ASSERT_EQ(xxh128.digestSize(), 16);
- xxh128.update("0123456789");
- EXPECT_EQ(xxh128.digestString(), "e353667619ec664b49655fc9692165fb");
- xxh128.update("abcdefghij");
- EXPECT_EQ(xxh128.digestString(), "5f64782bdc987c162389e97fd11aed64");
- xxh128.reset();
- xxh128.update("0123456789");
- EXPECT_EQ(xxh128.digestString(), "e353667619ec664b49655fc9692165fb");
- vector<uint8_t> bytes = {0xe3, 0x53, 0x66, 0x76, 0x19, 0xec, 0x66, 0x4b, 0x49, 0x65, 0x5F, 0xc9, 0x69, 0x21, 0x65, 0xfb};
- EXPECT_EQ(xxh128.digestBytes(), bytes);
-}
-#endif
-
-
-TEST(HashFunctionTest, createMD5) {
- auto hashfunc = HashFunction::create("md5");
- ASSERT_TRUE(dynamic_cast<MD5HashFunction*>(hashfunc.get()) != nullptr);
- hashfunc->update("0123456789");
- EXPECT_EQ(hashfunc->digestString(), "781e5e245d69b566979b86e28d23f2c7");
-
- hashfunc = HashFunction::create("md5", "0123456789");
- ASSERT_TRUE(dynamic_cast<MD5HashFunction*>(hashfunc.get()) != nullptr);
- EXPECT_EQ(hashfunc->digestString(), "781e5e245d69b566979b86e28d23f2c7");
-}
-
-
-TEST(HashFunctionTest, createXXH32) {
- auto hashfunc = HashFunction::create("xxh32");
- ASSERT_TRUE(dynamic_cast<XXH32HashFunction*>(hashfunc.get()) != nullptr);
- hashfunc->update("0123456789");
- EXPECT_EQ(hashfunc->digestString(), "950c9c0a");
-
- hashfunc = HashFunction::create("xxh32", "0123456789");
- ASSERT_TRUE(dynamic_cast<XXH32HashFunction*>(hashfunc.get()) != nullptr);
- EXPECT_EQ(hashfunc->digestString(), "950c9c0a");
-}
-
-
-TEST(HashFunctionTest, createXXH64) {
- auto hashfunc = HashFunction::create("xxh64");
- ASSERT_TRUE(dynamic_cast<XXH64HashFunction*>(hashfunc.get()) != nullptr);
- hashfunc->update("0123456789");
- EXPECT_EQ(hashfunc->digestString(), "3f5fc178a81867e7");
-
- hashfunc = HashFunction::create("xxh64", "0123456789");
- ASSERT_TRUE(dynamic_cast<XXH64HashFunction*>(hashfunc.get()) != nullptr);
- EXPECT_EQ(hashfunc->digestString(), "3f5fc178a81867e7");
-}
-
-
-#ifdef ENABLE_XXH128
-TEST(HashFunctionTest, createXXH128) {
- auto hashfunc = HashFunction::create("xxh128");
- ASSERT_TRUE(dynamic_cast<XXH128HashFunction*>(hashfunc.get()) != nullptr);
- hashfunc->update("0123456789");
- EXPECT_EQ(hashfunc->digestString(), "e353667619ec664b49655fc9692165fb");
-
- hashfunc = HashFunction::create("xxh128", "0123456789");
- ASSERT_TRUE(dynamic_cast<XXH128HashFunction*>(hashfunc.get()) != nullptr);
- EXPECT_EQ(hashfunc->digestString(), "e353667619ec664b49655fc9692165fb");
-}
-#endif
-
-
-TEST(HashFunctionTest, createFail) {
- ASSERT_TRUE(HashFunction::create("not-available") == nullptr);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/JFMReaderTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/JFMReaderTest.cpp
deleted file mode 100644
index db6cb012f4b..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/JFMReaderTest.cpp
+++ /dev/null
@@ -1,111 +0,0 @@
-/*************************************************************************
-** JFMReaderTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <cstdlib>
-#include <fstream>
-#include <memory>
-#include <string>
-#include <vector>
-#include "JFM.hpp"
-#include "utility.hpp"
-
-#ifndef SRCDIR
-#define SRCDIR "."
-#endif
-
-using namespace std;
-
-
-class JFMReaderTest : public ::testing::Test {
- public:
- void SetUp () override {
- string fname = string(SRCDIR)+"/data/cidjmgr0-h.tfm";
- ifstream ifs(fname, ios::binary);
- ASSERT_TRUE(ifs.is_open()) << "failed opening " << fname;
- jfm = util::make_unique<JFM>(ifs);
- }
-
- protected:
- unique_ptr<JFM> jfm;
-};
-
-
-TEST_F(JFMReaderTest, properties) {
- EXPECT_EQ(jfm->getChecksum(), 0u);
- EXPECT_FALSE(jfm->verticalLayout());
- EXPECT_EQ(jfm->firstChar(), 0);
- EXPECT_EQ(jfm->lastChar(), 1);
- EXPECT_EQ(jfm->minChar(), 13143u);
- EXPECT_EQ(jfm->maxChar(), 14696u);
- EXPECT_DOUBLE_EQ(jfm->getDesignSize(), 10.0*72.0/72.27);
-}
-
-
-TEST_F(JFMReaderTest, charWidth) {
- uint32_t minchar = jfm->minChar();
- uint32_t maxchar = jfm->maxChar();
- EXPECT_NEAR(jfm->getCharWidth(0), 9.963, 0.001);
- EXPECT_NEAR(jfm->getCharWidth(minchar), 4.981, 0.001);
- EXPECT_NEAR(jfm->getCharWidth(minchar+1), 4.981, 0.001);
- EXPECT_NEAR(jfm->getCharWidth(maxchar), 4.981, 0.001);
- EXPECT_NEAR(jfm->getCharWidth(maxchar+1), 9.963, 0.001);
-}
-
-
-TEST_F(JFMReaderTest, charHeight) {
- uint32_t minchar = jfm->minChar();
- uint32_t maxchar = jfm->maxChar();
- EXPECT_NEAR(jfm->getCharHeight(0), 8.767, 0.001);
- EXPECT_NEAR(jfm->getCharHeight(minchar), 8.767, 0.001);
- EXPECT_NEAR(jfm->getCharHeight(minchar+1), 8.767, 0.001);
- EXPECT_NEAR(jfm->getCharHeight(maxchar), 8.767, 0.001);
- EXPECT_NEAR(jfm->getCharHeight(maxchar+1), 8.767, 0.001);
-}
-
-
-TEST_F(JFMReaderTest, charDepth) {
- uint32_t minchar = jfm->minChar();
- uint32_t maxchar = jfm->maxChar();
- EXPECT_NEAR(jfm->getCharDepth(0), 1.195, 0.001);
- EXPECT_NEAR(jfm->getCharDepth(minchar), 1.195, 0.001);
- EXPECT_NEAR(jfm->getCharDepth(minchar+1), 1.195, 0.001);
- EXPECT_NEAR(jfm->getCharDepth(maxchar), 1.195, 0.001);
- EXPECT_NEAR(jfm->getCharDepth(maxchar+1), 1.195, 0.001);
-}
-
-
-TEST_F(JFMReaderTest, italicCorr) {
- uint32_t minchar = jfm->minChar();
- uint32_t maxchar = jfm->maxChar();
- EXPECT_DOUBLE_EQ(jfm->getItalicCorr(0), 0);
- EXPECT_DOUBLE_EQ(jfm->getItalicCorr(minchar), 0);
- EXPECT_DOUBLE_EQ(jfm->getItalicCorr(minchar+1), 0);
- EXPECT_DOUBLE_EQ(jfm->getItalicCorr(maxchar), 0);
- EXPECT_DOUBLE_EQ(jfm->getItalicCorr(maxchar+1), 0);
-}
-
-
-TEST_F(JFMReaderTest, params) {
- EXPECT_DOUBLE_EQ(jfm->getSpace(), 0);
- EXPECT_DOUBLE_EQ(jfm->getSpaceShrink(), 0.);
- EXPECT_NEAR(jfm->getSpaceStretch(), 0.996, 0.001);
- EXPECT_NEAR(jfm->getQuad(), 9.963, 0.001);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/LengthTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/LengthTest.cpp
deleted file mode 100644
index 4db8fe15d91..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/LengthTest.cpp
+++ /dev/null
@@ -1,251 +0,0 @@
-/*************************************************************************
-** LengthTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <string>
-#include "Length.hpp"
-
-using namespace std;
-
-TEST(LengthTest, set1) {
- Length len;
- len.set(1, Length::Unit::PT);
- EXPECT_DOUBLE_EQ(len.pt(), 1);
-
- len.set(72, Length::Unit::BP);
- EXPECT_DOUBLE_EQ(len.pt(), 72.27);
- EXPECT_DOUBLE_EQ(len.bp(), 72);
- EXPECT_DOUBLE_EQ(len.in(), 1);
-
- len.set(1, Length::Unit::IN);
- EXPECT_DOUBLE_EQ(len.pt(), 72.27);
-
- len.set(1, Length::Unit::PC);
- EXPECT_DOUBLE_EQ(len.pt(), 12);
- EXPECT_DOUBLE_EQ(len.pc(), 1);
-
- len.set(2.54, Length::Unit::CM);
- EXPECT_DOUBLE_EQ(len.pt(), 72.27);
- EXPECT_DOUBLE_EQ(len.cm(), 2.54);
- EXPECT_DOUBLE_EQ(len.mm(), 25.4);
-
- len.set(25.4, Length::Unit::MM);
- EXPECT_DOUBLE_EQ(len.pt(), 72.27);
- EXPECT_DOUBLE_EQ(len.cm(), 2.54);
- EXPECT_DOUBLE_EQ(len.mm(), 25.4);
-
- len.set(1, Length::Unit::DD);
- EXPECT_DOUBLE_EQ(len.pt(), 1238.0/1157);
-
- len.set(1, Length::Unit::CC);
- EXPECT_DOUBLE_EQ(len.dd(), 12.0);
- EXPECT_DOUBLE_EQ(len.cc(), 1);
-
- len.set(1, Length::Unit::SP);
- EXPECT_DOUBLE_EQ(len.pt(), 1.0/65536);
- EXPECT_DOUBLE_EQ(len.sp(), 1);
-}
-
-
-TEST(LengthTest, set2) {
- Length len;
- len.set(1, "pt");
- EXPECT_DOUBLE_EQ(len.pt(), 1);
-
- len.set(72, "bp");
- EXPECT_DOUBLE_EQ(len.pt(), 72.27);
- EXPECT_DOUBLE_EQ(len.bp(), 72);
- EXPECT_DOUBLE_EQ(len.in(), 1);
-
- len.set(1, "in");
- EXPECT_DOUBLE_EQ(len.pt(), 72.27);
-
- len.set(1, "pc");
- EXPECT_DOUBLE_EQ(len.pt(), 12);
- EXPECT_DOUBLE_EQ(len.pc(), 1);
-
- len.set(2.54, "cm");
- EXPECT_DOUBLE_EQ(len.pt(), 72.27);
- EXPECT_DOUBLE_EQ(len.cm(), 2.54);
- EXPECT_DOUBLE_EQ(len.mm(), 25.4);
-
- len.set(10, "mm");
- EXPECT_DOUBLE_EQ(len.cm(), 1);
- EXPECT_DOUBLE_EQ(len.mm(), 10);
-
- len.set(1, "dd");
- EXPECT_DOUBLE_EQ(len.pt(), 1238.0/1157);
-
- len.set(1, "cc");
- EXPECT_DOUBLE_EQ(len.dd(), 12.0);
-
- len.set(1, "sp");
- EXPECT_DOUBLE_EQ(len.pt(), 1.0/65536);
-
- len.set(1, "");
- EXPECT_DOUBLE_EQ(len.pt(), 1);
-
- ASSERT_THROW(len.set(1, "xy"), UnitException);
-}
-
-TEST(LengthTest, set3) {
- Length len;
- len.set("1pt");
- EXPECT_DOUBLE_EQ(len.pt(), 1);
-
- len.set("72bp");
- EXPECT_DOUBLE_EQ(len.pt(), 72.27);
- EXPECT_DOUBLE_EQ(len.bp(), 72);
- EXPECT_DOUBLE_EQ(len.in(), 1);
-
- len.set("1in");
- EXPECT_DOUBLE_EQ(len.pt(), 72.27);
-
- len.set("1pc");
- EXPECT_DOUBLE_EQ(len.pt(), 12);
- EXPECT_DOUBLE_EQ(len.pc(), 1);
-
- len.set("2.54cm");
- EXPECT_DOUBLE_EQ(len.pt(), 72.27);
- EXPECT_DOUBLE_EQ(len.cm(), 2.54);
- EXPECT_DOUBLE_EQ(len.mm(), 25.4);
-
- len.set("10mm");
- EXPECT_DOUBLE_EQ(len.cm(), 1);
- EXPECT_DOUBLE_EQ(len.mm(), 10);
-
- len.set("10dd");
- EXPECT_DOUBLE_EQ(len.pt(), 12380.0/1157);
-
- len.set("10cc");
- EXPECT_DOUBLE_EQ(len.dd(), 120.0);
-
- len.set("10sp");
- EXPECT_DOUBLE_EQ(len.pt(), 10.0/65536);
-
-
- len.set("1");
- EXPECT_DOUBLE_EQ(len.pt(), 1);
-
- len.set("10");
- EXPECT_DOUBLE_EQ(len.pt(), 10);
-
- ASSERT_THROW(len.set("1xy"), UnitException);
- ASSERT_THROW(len.set("pt"), UnitException);
-}
-
-
-TEST(LengthTest, get) {
- Length len;
- len.set("1pt");
- EXPECT_DOUBLE_EQ(len.get(Length::Unit::PT), 1);
-
- len.set("72bp");
- EXPECT_DOUBLE_EQ(len.get(Length::Unit::PT), 72.27);
- EXPECT_DOUBLE_EQ(len.get(Length::Unit::BP), 72);
- EXPECT_DOUBLE_EQ(len.get(Length::Unit::IN), 1);
-
- len.set("1in");
- EXPECT_DOUBLE_EQ(len.get(Length::Unit::PT), 72.27);
-
- len.set("1pc");
- EXPECT_DOUBLE_EQ(len.get(Length::Unit::PT), 12);
- EXPECT_DOUBLE_EQ(len.get(Length::Unit::PC), 1);
-
- len.set("2.54cm");
- EXPECT_DOUBLE_EQ(len.get(Length::Unit::PT), 72.27);
- EXPECT_DOUBLE_EQ(len.get(Length::Unit::CM), 2.54);
- EXPECT_DOUBLE_EQ(len.get(Length::Unit::MM), 25.4);
-
- len.set("10mm");
- EXPECT_DOUBLE_EQ(len.get(Length::Unit::CM), 1);
- EXPECT_DOUBLE_EQ(len.get(Length::Unit::MM), 10);
-
- len.set("10dd");
- EXPECT_DOUBLE_EQ(len.get(Length::Unit::PT), 12380.0/1157);
-
- len.set("10cc");
- EXPECT_DOUBLE_EQ(len.get(Length::Unit::DD), 120.0);
- EXPECT_DOUBLE_EQ(len.get(Length::Unit::CC), 10.0);
-
- len.set("10sp");
- EXPECT_DOUBLE_EQ(len.get(Length::Unit::SP), 10.0);
-}
-
-
-TEST(LengthTest, str2unit) {
- EXPECT_EQ(Length::stringToUnit("pt"), Length::Unit::PT);
- EXPECT_EQ(Length::stringToUnit("bp"), Length::Unit::BP);
- EXPECT_EQ(Length::stringToUnit("in"), Length::Unit::IN);
- EXPECT_EQ(Length::stringToUnit("cm"), Length::Unit::CM);
- EXPECT_EQ(Length::stringToUnit("mm"), Length::Unit::MM);
- EXPECT_EQ(Length::stringToUnit("pc"), Length::Unit::PC);
- EXPECT_EQ(Length::stringToUnit("cc"), Length::Unit::CC);
- EXPECT_EQ(Length::stringToUnit("dd"), Length::Unit::DD);
- EXPECT_EQ(Length::stringToUnit("sp"), Length::Unit::SP);
-
- ASSERT_THROW(Length::stringToUnit(""), UnitException);
- ASSERT_THROW(Length::stringToUnit("CM"), UnitException);
- ASSERT_THROW(Length::stringToUnit("pta"), UnitException);
-}
-
-
-TEST(LengthTest, unit2str) {
- EXPECT_EQ(Length::unitToString(Length::Unit::PT), string("pt"));
- EXPECT_EQ(Length::unitToString(Length::Unit::BP), string("bp"));
- EXPECT_EQ(Length::unitToString(Length::Unit::IN), string("in"));
- EXPECT_EQ(Length::unitToString(Length::Unit::CM), string("cm"));
- EXPECT_EQ(Length::unitToString(Length::Unit::MM), string("mm"));
- EXPECT_EQ(Length::unitToString(Length::Unit::PC), string("pc"));
- EXPECT_EQ(Length::unitToString(Length::Unit::CC), string("cc"));
- EXPECT_EQ(Length::unitToString(Length::Unit::DD), string("dd"));
- EXPECT_EQ(Length::unitToString(Length::Unit::SP), string("sp"));
-
- EXPECT_EQ(Length::unitToString(Length::Unit(300)), string("??"));
-}
-
-
-TEST(LengthTest, toString) {
- EXPECT_EQ(Length(10, Length::Unit::PT).toString(Length::Unit::PT), "10pt");
- EXPECT_EQ(Length(10, Length::Unit::BP).toString(Length::Unit::BP), "10bp");
- EXPECT_EQ(Length(10, Length::Unit::IN).toString(Length::Unit::IN), "10in");
- EXPECT_EQ(Length(10, Length::Unit::CM).toString(Length::Unit::CM), "10cm");
- EXPECT_EQ(Length(10, Length::Unit::MM).toString(Length::Unit::MM), "10mm");
- EXPECT_EQ(Length(10, Length::Unit::PC).toString(Length::Unit::PC), "10pc");
- EXPECT_EQ(Length(10, Length::Unit::DD).toString(Length::Unit::DD), "10dd");
- EXPECT_EQ(Length(10, Length::Unit::CC).toString(Length::Unit::CC), "10cc");
- EXPECT_EQ(Length(10, Length::Unit::SP).toString(Length::Unit::SP), "10sp");
-}
-
-
-TEST(LengthTest, literals) {
- EXPECT_EQ(1_pt, Length(1, "pt"));
- EXPECT_EQ(2_bp, Length(2, "bp"));
- EXPECT_EQ(3_in, Length(3, "in"));
- EXPECT_EQ(5_mm, Length(5, "mm"));
-}
-
-
-TEST(LengthTest, getUnits) {
- for (auto unit : Length::getUnits()) {
- EXPECT_EQ(unit.first, Length::unitToString(unit.second));
- EXPECT_EQ(unit.second, Length::stringToUnit(unit.first));
- }
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.am b/Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.am
deleted file mode 100644
index ac841563f39..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.am
+++ /dev/null
@@ -1,420 +0,0 @@
-## This file is part of dvisvgm
-## Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de>
-##
-## Process this file with automake.
-
-SUBDIRS = data
-
-check_LTLIBRARIES = libgtest.la
-libgtest_la_SOURCES = gtest/src/gtest-all.cc testmain.cpp
-libgtest_la_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include -I$(dvisvgm_srcdir)/tests/gtest
-libgtest_la_LDFLAGS = -pthread
-EXTRA_DIST = gtest/LICENSE \
- gtest/include \
- gtest/src/gtest.cc \
- gtest/src/gtest-death-test.cc \
- gtest/src/gtest-filepath.cc \
- gtest/src/gtest-internal-inl.h \
- gtest/src/gtest_main.cc \
- gtest/src/gtest-matchers.cc \
- gtest/src/gtest-port.cc \
- gtest/src/gtest-printers.cc \
- gtest/src/gtest-test-part.cc \
- gtest/src/gtest-typed-test.cc
-
-include ../libs/defs.am
-
-LIBS_CFLAGS = $(XXHASH_CFLAGS)
-LIBS_LIBS = $(POTRACE_LIBS) $(XXHASH_LIBS)
-if ENABLE_WOFF
-LIBS_LIBS += $(WOFF2_LIBS) $(BROTLI_LIBS)
-endif
-
-if USE_BUNDLED_MD5
-LIBS_CFLAGS += -I$(dvisvgm_srcdir)/libs/md5
-LIBS_LIBS += ../libs/md5/libmd5.a
-else
-LIBS_CFLAGS += $(LIBCRYPTO_CFLAGS)
-LIBS_LIBS += $(LIBCRYPTO_LIBS)
-endif
-
-AM_CXXFLAGS = -I$(dvisvgm_srcdir)/src -I$(dvisvgm_srcdir)/libs/variant/include \
- -Wall -Wno-mismatched-tags \
- -DBUILDDIR='"$(abs_builddir)"' -DSRCDIR='"$(abs_srcdir)"' \
- $(CODE_COVERAGE_CFLAGS)
-
-TESTS = hashcheck
-check_PROGRAMS = hashcheck
-nodist_hashcheck_SOURCES = hashcheck.cpp
-hashcheck_CPPFLAGS = $(LIBS_CFLAGS)
-hashcheck_LDADD = $(LIBS_LIBS)
-
-hashcheck.cpp: genhashcheck.py $(dvisvgm_srcdir)/src/AGLTable.hpp $(dvisvgm_srcdir)/libs/xxHash/xxhash.h
- python $^ >$@
-
-TESTLIBS = libgtest.la ../src/libdvisvgm.la $(LIBS_LIBS) -lfreetype
-if ENABLE_WOFF
-TESTLIBS += ../libs/ff-woff/libfontforge.a
-endif
-TESTLIBS += $(CODE_COVERAGE_LDFLAGS)
-
-TESTS += BezierTest
-check_PROGRAMS += BezierTest
-BezierTest_SOURCES = BezierTest.cpp testutil.hpp
-BezierTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-BezierTest_LDADD = $(TESTLIBS)
-
-TESTS += BitmapTest
-check_PROGRAMS += BitmapTest
-BitmapTest_SOURCES = BitmapTest.cpp testutil.hpp
-BitmapTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-BitmapTest_LDADD = $(TESTLIBS)
-
-TESTS += BoundingBoxTest
-check_PROGRAMS += BoundingBoxTest
-BoundingBoxTest_SOURCES = BoundingBoxTest.cpp testutil.hpp
-BoundingBoxTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-BoundingBoxTest_LDADD = $(TESTLIBS)
-
-TESTS += CalculatorTest
-check_PROGRAMS += CalculatorTest
-CalculatorTest_SOURCES = CalculatorTest.cpp testutil.hpp
-CalculatorTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-CalculatorTest_LDADD = $(TESTLIBS)
-
-TESTS += CMapManagerTest
-check_PROGRAMS += CMapManagerTest
-CMapManagerTest_SOURCES = CMapManagerTest.cpp testutil.hpp
-CMapManagerTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-CMapManagerTest_LDADD = $(TESTLIBS)
-
-TESTS += CMapReaderTest
-check_PROGRAMS += CMapReaderTest
-CMapReaderTest_SOURCES = CMapReaderTest.cpp testutil.hpp
-CMapReaderTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-CMapReaderTest_LDADD = $(TESTLIBS)
-
-TESTS += CMapTest
-check_PROGRAMS += CMapTest
-CMapTest_SOURCES = CMapTest.cpp testutil.hpp
-CMapTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-CMapTest_LDADD = $(TESTLIBS)
-
-TESTS += ColorSpecialTest
-check_PROGRAMS += ColorSpecialTest
-ColorSpecialTest_SOURCES = ColorSpecialTest.cpp testutil.hpp
-ColorSpecialTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-ColorSpecialTest_LDADD = $(TESTLIBS)
-
-TESTS += ColorTest
-check_PROGRAMS += ColorTest
-ColorTest_SOURCES = ColorTest.cpp testutil.hpp
-ColorTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-ColorTest_LDADD = $(TESTLIBS)
-
-TESTS += CommandLineTest
-check_PROGRAMS += CommandLineTest
-CommandLineTest_SOURCES = CommandLineTest.cpp testutil.hpp
-CommandLineTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-CommandLineTest_LDADD = $(TESTLIBS)
-
-TESTS += DependencyGraphTest
-check_PROGRAMS += DependencyGraphTest
-DependencyGraphTest_SOURCES = DependencyGraphTest.cpp testutil.hpp
-DependencyGraphTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-DependencyGraphTest_LDADD = $(TESTLIBS)
-
-TESTS += DirectoryTest
-check_PROGRAMS += DirectoryTest
-DirectoryTest_SOURCES = DirectoryTest.cpp testutil.hpp
-DirectoryTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-DirectoryTest_LDADD = $(TESTLIBS)
-
-TESTS += DVIReaderTest
-check_PROGRAMS += DVIReaderTest
-DVIReaderTest_SOURCES = DVIReaderTest.cpp testutil.hpp
-DVIReaderTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-DVIReaderTest_LDADD = $(TESTLIBS)
-
-TESTS += DvisvgmSpecialTest
-check_PROGRAMS += DvisvgmSpecialTest
-DvisvgmSpecialTest_SOURCES = DvisvgmSpecialTest.cpp testutil.hpp
-DvisvgmSpecialTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-DvisvgmSpecialTest_LDADD = $(TESTLIBS)
-
-TESTS += EllipticalArcTest
-check_PROGRAMS += EllipticalArcTest
-EllipticalArcTest_SOURCES = EllipticalArcTest.cpp testutil.hpp
-EllipticalArcTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-EllipticalArcTest_LDADD = $(TESTLIBS)
-
-TESTS += EmSpecialTest
-check_PROGRAMS += EmSpecialTest
-EmSpecialTest_SOURCES = EmSpecialTest.cpp testutil.hpp
-EmSpecialTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-EmSpecialTest_LDADD = $(TESTLIBS)
-
-TESTS += FileFinderTest
-check_PROGRAMS += FileFinderTest
-FileFinderTest_SOURCES = FileFinderTest.cpp testutil.hpp
-FileFinderTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-FileFinderTest_LDADD = $(TESTLIBS)
-
-TESTS += FilePathTest
-check_PROGRAMS += FilePathTest
-FilePathTest_SOURCES = FilePathTest.cpp testutil.hpp
-FilePathTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-FilePathTest_LDADD = $(TESTLIBS)
-
-TESTS += FileSystemTest
-check_PROGRAMS += FileSystemTest
-FileSystemTest_SOURCES = FileSystemTest.cpp testutil.hpp
-FileSystemTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-FileSystemTest_LDADD = $(TESTLIBS)
-
-TESTS += FontCacheTest
-check_PROGRAMS += FontCacheTest
-FontCacheTest_SOURCES = FontCacheTest.cpp testutil.hpp
-FontCacheTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-FontCacheTest_LDADD = $(TESTLIBS)
-
-TESTS += FontManagerTest
-check_PROGRAMS += FontManagerTest
-FontManagerTest_SOURCES = FontManagerTest.cpp testutil.hpp
-FontManagerTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-FontManagerTest_LDADD = $(TESTLIBS)
-
-TESTS += FontMapTest
-check_PROGRAMS += FontMapTest
-FontMapTest_SOURCES = FontMapTest.cpp testutil.hpp
-FontMapTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-FontMapTest_LDADD = $(TESTLIBS)
-
-TESTS += GFGlyphTracerTest
-check_PROGRAMS += GFGlyphTracerTest
-GFGlyphTracerTest_SOURCES = GFGlyphTracerTest.cpp testutil.hpp
-GFGlyphTracerTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-GFGlyphTracerTest_LDADD = $(TESTLIBS)
-
-TESTS += GFReaderTest
-check_PROGRAMS += GFReaderTest
-GFReaderTest_SOURCES = GFReaderTest.cpp testutil.hpp
-GFReaderTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-GFReaderTest_LDADD = $(TESTLIBS)
-
-TESTS += GhostscriptTest
-check_PROGRAMS += GhostscriptTest
-GhostscriptTest_SOURCES = GhostscriptTest.cpp testutil.hpp
-GhostscriptTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-GhostscriptTest_LDADD = $(TESTLIBS)
-
-TESTS += GraphicsPathTest
-check_PROGRAMS += GraphicsPathTest
-GraphicsPathTest_SOURCES = GraphicsPathTest.cpp testutil.hpp
-GraphicsPathTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-GraphicsPathTest_LDADD = $(TESTLIBS)
-
-TESTS += HashFunctionTest
-check_PROGRAMS += HashFunctionTest
-HashFunctionTest_SOURCES = HashFunctionTest.cpp testutil.hpp
-HashFunctionTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-HashFunctionTest_LDADD = $(TESTLIBS)
-
-TESTS += JFMReaderTest
-check_PROGRAMS += JFMReaderTest
-JFMReaderTest_SOURCES = JFMReaderTest.cpp testutil.hpp
-JFMReaderTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-JFMReaderTest_LDADD = $(TESTLIBS)
-
-TESTS += LengthTest
-check_PROGRAMS += LengthTest
-LengthTest_SOURCES = LengthTest.cpp testutil.hpp
-LengthTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-LengthTest_LDADD = $(TESTLIBS)
-
-TESTS += MapLineTest
-check_PROGRAMS += MapLineTest
-MapLineTest_SOURCES = MapLineTest.cpp testutil.hpp
-MapLineTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-MapLineTest_LDADD = $(TESTLIBS)
-
-TESTS += MatrixTest
-check_PROGRAMS += MatrixTest
-MatrixTest_SOURCES = MatrixTest.cpp testutil.hpp
-MatrixTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-MatrixTest_LDADD = $(TESTLIBS)
-
-TESTS += MessageExceptionTest
-check_PROGRAMS += MessageExceptionTest
-MessageExceptionTest_SOURCES = MessageExceptionTest.cpp testutil.hpp
-MessageExceptionTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-MessageExceptionTest_LDADD = $(TESTLIBS)
-
-TESTS += PageRagesTest
-check_PROGRAMS += PageRagesTest
-PageRagesTest_SOURCES = PageRagesTest.cpp testutil.hpp
-PageRagesTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-PageRagesTest_LDADD = $(TESTLIBS)
-
-TESTS += PageSizeTest
-check_PROGRAMS += PageSizeTest
-PageSizeTest_SOURCES = PageSizeTest.cpp testutil.hpp
-PageSizeTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-PageSizeTest_LDADD = $(TESTLIBS)
-
-TESTS += PairTest
-check_PROGRAMS += PairTest
-PairTest_SOURCES = PairTest.cpp testutil.hpp
-PairTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-PairTest_LDADD = $(TESTLIBS)
-
-TESTS += PapersizeSpecialTest
-check_PROGRAMS += PapersizeSpecialTest
-PapersizeSpecialTest_SOURCES = PapersizeSpecialTest.cpp testutil.hpp
-PapersizeSpecialTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-PapersizeSpecialTest_LDADD = $(TESTLIBS)
-
-TESTS += PDFParserTest
-check_PROGRAMS += PDFParserTest
-PDFParserTest_SOURCES = PDFParserTest.cpp testutil.hpp
-PDFParserTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-PDFParserTest_LDADD = $(TESTLIBS)
-
-TESTS += PSInterpreterTest
-check_PROGRAMS += PSInterpreterTest
-PSInterpreterTest_SOURCES = PSInterpreterTest.cpp testutil.hpp
-PSInterpreterTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-PSInterpreterTest_LDADD = $(TESTLIBS)
-
-TESTS += RangeMapTest
-check_PROGRAMS += RangeMapTest
-RangeMapTest_SOURCES = RangeMapTest.cpp testutil.hpp
-RangeMapTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-RangeMapTest_LDADD = $(TESTLIBS)
-
-TESTS += ShadingPatchTest
-check_PROGRAMS += ShadingPatchTest
-ShadingPatchTest_SOURCES = ShadingPatchTest.cpp testutil.hpp
-ShadingPatchTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-ShadingPatchTest_LDADD = $(TESTLIBS)
-
-TESTS += SpecialManagerTest
-check_PROGRAMS += SpecialManagerTest
-SpecialManagerTest_SOURCES = SpecialManagerTest.cpp testutil.hpp
-SpecialManagerTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-SpecialManagerTest_LDADD = $(TESTLIBS)
-
-TESTS += SplittedCharInputBufferTest
-check_PROGRAMS += SplittedCharInputBufferTest
-SplittedCharInputBufferTest_SOURCES = SplittedCharInputBufferTest.cpp testutil.hpp
-SplittedCharInputBufferTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-SplittedCharInputBufferTest_LDADD = $(TESTLIBS)
-
-TESTS += StreamInputBufferTest
-check_PROGRAMS += StreamInputBufferTest
-StreamInputBufferTest_SOURCES = StreamInputBufferTest.cpp testutil.hpp
-StreamInputBufferTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-StreamInputBufferTest_LDADD = $(TESTLIBS)
-
-TESTS += StreamReaderTest
-check_PROGRAMS += StreamReaderTest
-StreamReaderTest_SOURCES = StreamReaderTest.cpp testutil.hpp
-StreamReaderTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-StreamReaderTest_LDADD = $(TESTLIBS)
-
-TESTS += StreamWriterTest
-check_PROGRAMS += StreamWriterTest
-StreamWriterTest_SOURCES = StreamWriterTest.cpp testutil.hpp
-StreamWriterTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-StreamWriterTest_LDADD = $(TESTLIBS)
-
-TESTS += StringMatcherTest
-check_PROGRAMS += StringMatcherTest
-StringMatcherTest_SOURCES = StringMatcherTest.cpp testutil.hpp
-StringMatcherTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-StringMatcherTest_LDADD = $(TESTLIBS)
-
-TESTS += SubfontTest
-check_PROGRAMS += SubfontTest
-SubfontTest_SOURCES = SubfontTest.cpp testutil.hpp
-SubfontTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-SubfontTest_LDADD = $(TESTLIBS)
-
-TESTS += SVGOutputTest
-check_PROGRAMS += SVGOutputTest
-SVGOutputTest_SOURCES = SVGOutputTest.cpp testutil.hpp
-SVGOutputTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-SVGOutputTest_LDADD = $(TESTLIBS)
-
-TESTS += TensorProductPatchTest
-check_PROGRAMS += TensorProductPatchTest
-TensorProductPatchTest_SOURCES = TensorProductPatchTest.cpp testutil.hpp
-TensorProductPatchTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-TensorProductPatchTest_LDADD = $(TESTLIBS)
-
-TESTS += TFMReaderTest
-check_PROGRAMS += TFMReaderTest
-TFMReaderTest_SOURCES = TFMReaderTest.cpp testutil.hpp
-TFMReaderTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-TFMReaderTest_LDADD = $(TESTLIBS)
-
-TESTS += ToUnicodeMapTest
-check_PROGRAMS += ToUnicodeMapTest
-ToUnicodeMapTest_SOURCES = ToUnicodeMapTest.cpp testutil.hpp
-ToUnicodeMapTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-ToUnicodeMapTest_LDADD = $(TESTLIBS)
-
-TESTS += TpicSpecialTest
-check_PROGRAMS += TpicSpecialTest
-TpicSpecialTest_SOURCES = TpicSpecialTest.cpp testutil.hpp
-TpicSpecialTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-TpicSpecialTest_LDADD = $(TESTLIBS)
-
-TESTS += TriangularPatchTest
-check_PROGRAMS += TriangularPatchTest
-TriangularPatchTest_SOURCES = TriangularPatchTest.cpp testutil.hpp
-TriangularPatchTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-TriangularPatchTest_LDADD = $(TESTLIBS)
-
-TESTS += UnicodeTest
-check_PROGRAMS += UnicodeTest
-UnicodeTest_SOURCES = UnicodeTest.cpp testutil.hpp
-UnicodeTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-UnicodeTest_LDADD = $(TESTLIBS)
-
-TESTS += UtilityTest
-check_PROGRAMS += UtilityTest
-UtilityTest_SOURCES = UtilityTest.cpp testutil.hpp
-UtilityTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-UtilityTest_LDADD = $(TESTLIBS)
-
-TESTS += VectorIteratorTest
-check_PROGRAMS += VectorIteratorTest
-VectorIteratorTest_SOURCES = VectorIteratorTest.cpp testutil.hpp
-VectorIteratorTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-VectorIteratorTest_LDADD = $(TESTLIBS)
-
-TESTS += VectorStreamTest
-check_PROGRAMS += VectorStreamTest
-VectorStreamTest_SOURCES = VectorStreamTest.cpp testutil.hpp
-VectorStreamTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-VectorStreamTest_LDADD = $(TESTLIBS)
-
-TESTS += XMLNodeTest
-check_PROGRAMS += XMLNodeTest
-XMLNodeTest_SOURCES = XMLNodeTest.cpp testutil.hpp
-XMLNodeTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-XMLNodeTest_LDADD = $(TESTLIBS)
-
-TESTS += XMLStringTest
-check_PROGRAMS += XMLStringTest
-XMLStringTest_SOURCES = XMLStringTest.cpp testutil.hpp
-XMLStringTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-XMLStringTest_LDADD = $(TESTLIBS)
-
-EXTRA_DIST += check-conv genhashcheck.py normalize.xsl
-TESTS += check-conv
-
-@CODE_COVERAGE_RULES@
-
-CLEANFILES = *.gcda *.gcno hashcheck.cpp
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.in b/Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.in
deleted file mode 100644
index 61c6b3458e3..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.in
+++ /dev/null
@@ -1,3517 +0,0 @@
-# Makefile.in generated by automake 1.16.2 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-am__is_gnu_make = { \
- if test -z '$(MAKELEVEL)'; then \
- false; \
- elif test -n '$(MAKE_HOST)'; then \
- true; \
- elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
- true; \
- else \
- false; \
- fi; \
-}
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-target_triplet = @target@
-@HAVE_BROTLI_FALSE@am__append_1 = -I$(dvisvgm_srcdir)/libs/brotli/include
-@HAVE_BROTLI_FALSE@am__append_2 = ../libs/brotli/libbrotli.a
-@HAVE_WOFF2_FALSE@am__append_3 = -I$(dvisvgm_srcdir)/libs/woff2/include
-@HAVE_WOFF2_FALSE@am__append_4 = ../libs/woff2/libwoff2.a
-@ENABLE_WOFF_TRUE@am__append_5 = $(WOFF2_LIBS) $(BROTLI_LIBS)
-@USE_BUNDLED_MD5_TRUE@am__append_6 = -I$(dvisvgm_srcdir)/libs/md5
-@USE_BUNDLED_MD5_TRUE@am__append_7 = ../libs/md5/libmd5.a
-@USE_BUNDLED_MD5_FALSE@am__append_8 = $(LIBCRYPTO_CFLAGS)
-@USE_BUNDLED_MD5_FALSE@am__append_9 = $(LIBCRYPTO_LIBS)
-TESTS = hashcheck$(EXEEXT) BezierTest$(EXEEXT) BitmapTest$(EXEEXT) \
- BoundingBoxTest$(EXEEXT) CalculatorTest$(EXEEXT) \
- CMapManagerTest$(EXEEXT) CMapReaderTest$(EXEEXT) \
- CMapTest$(EXEEXT) ColorSpecialTest$(EXEEXT) ColorTest$(EXEEXT) \
- CommandLineTest$(EXEEXT) DependencyGraphTest$(EXEEXT) \
- DirectoryTest$(EXEEXT) DVIReaderTest$(EXEEXT) \
- DvisvgmSpecialTest$(EXEEXT) EllipticalArcTest$(EXEEXT) \
- EmSpecialTest$(EXEEXT) FileFinderTest$(EXEEXT) \
- FilePathTest$(EXEEXT) FileSystemTest$(EXEEXT) \
- FontCacheTest$(EXEEXT) FontManagerTest$(EXEEXT) \
- FontMapTest$(EXEEXT) GFGlyphTracerTest$(EXEEXT) \
- GFReaderTest$(EXEEXT) GhostscriptTest$(EXEEXT) \
- GraphicsPathTest$(EXEEXT) HashFunctionTest$(EXEEXT) \
- JFMReaderTest$(EXEEXT) LengthTest$(EXEEXT) \
- MapLineTest$(EXEEXT) MatrixTest$(EXEEXT) \
- MessageExceptionTest$(EXEEXT) PageRagesTest$(EXEEXT) \
- PageSizeTest$(EXEEXT) PairTest$(EXEEXT) \
- PapersizeSpecialTest$(EXEEXT) PDFParserTest$(EXEEXT) \
- PSInterpreterTest$(EXEEXT) RangeMapTest$(EXEEXT) \
- ShadingPatchTest$(EXEEXT) SpecialManagerTest$(EXEEXT) \
- SplittedCharInputBufferTest$(EXEEXT) \
- StreamInputBufferTest$(EXEEXT) StreamReaderTest$(EXEEXT) \
- StreamWriterTest$(EXEEXT) StringMatcherTest$(EXEEXT) \
- SubfontTest$(EXEEXT) SVGOutputTest$(EXEEXT) \
- TensorProductPatchTest$(EXEEXT) TFMReaderTest$(EXEEXT) \
- ToUnicodeMapTest$(EXEEXT) TpicSpecialTest$(EXEEXT) \
- TriangularPatchTest$(EXEEXT) UnicodeTest$(EXEEXT) \
- UtilityTest$(EXEEXT) VectorIteratorTest$(EXEEXT) \
- VectorStreamTest$(EXEEXT) XMLNodeTest$(EXEEXT) \
- XMLStringTest$(EXEEXT) check-conv
-check_PROGRAMS = hashcheck$(EXEEXT) BezierTest$(EXEEXT) \
- BitmapTest$(EXEEXT) BoundingBoxTest$(EXEEXT) \
- CalculatorTest$(EXEEXT) CMapManagerTest$(EXEEXT) \
- CMapReaderTest$(EXEEXT) CMapTest$(EXEEXT) \
- ColorSpecialTest$(EXEEXT) ColorTest$(EXEEXT) \
- CommandLineTest$(EXEEXT) DependencyGraphTest$(EXEEXT) \
- DirectoryTest$(EXEEXT) DVIReaderTest$(EXEEXT) \
- DvisvgmSpecialTest$(EXEEXT) EllipticalArcTest$(EXEEXT) \
- EmSpecialTest$(EXEEXT) FileFinderTest$(EXEEXT) \
- FilePathTest$(EXEEXT) FileSystemTest$(EXEEXT) \
- FontCacheTest$(EXEEXT) FontManagerTest$(EXEEXT) \
- FontMapTest$(EXEEXT) GFGlyphTracerTest$(EXEEXT) \
- GFReaderTest$(EXEEXT) GhostscriptTest$(EXEEXT) \
- GraphicsPathTest$(EXEEXT) HashFunctionTest$(EXEEXT) \
- JFMReaderTest$(EXEEXT) LengthTest$(EXEEXT) \
- MapLineTest$(EXEEXT) MatrixTest$(EXEEXT) \
- MessageExceptionTest$(EXEEXT) PageRagesTest$(EXEEXT) \
- PageSizeTest$(EXEEXT) PairTest$(EXEEXT) \
- PapersizeSpecialTest$(EXEEXT) PDFParserTest$(EXEEXT) \
- PSInterpreterTest$(EXEEXT) RangeMapTest$(EXEEXT) \
- ShadingPatchTest$(EXEEXT) SpecialManagerTest$(EXEEXT) \
- SplittedCharInputBufferTest$(EXEEXT) \
- StreamInputBufferTest$(EXEEXT) StreamReaderTest$(EXEEXT) \
- StreamWriterTest$(EXEEXT) StringMatcherTest$(EXEEXT) \
- SubfontTest$(EXEEXT) SVGOutputTest$(EXEEXT) \
- TensorProductPatchTest$(EXEEXT) TFMReaderTest$(EXEEXT) \
- ToUnicodeMapTest$(EXEEXT) TpicSpecialTest$(EXEEXT) \
- TriangularPatchTest$(EXEEXT) UnicodeTest$(EXEEXT) \
- UtilityTest$(EXEEXT) VectorIteratorTest$(EXEEXT) \
- VectorStreamTest$(EXEEXT) XMLNodeTest$(EXEEXT) \
- XMLStringTest$(EXEEXT)
-@ENABLE_WOFF_TRUE@am__append_10 = ../libs/ff-woff/libfontforge.a
-subdir = tests
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
- $(top_srcdir)/m4/ax_code_coverage.m4 \
- $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
- $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-libgtest_la_LIBADD =
-am__dirstamp = $(am__leading_dot)dirstamp
-am_libgtest_la_OBJECTS = gtest/src/libgtest_la-gtest-all.lo \
- libgtest_la-testmain.lo
-libgtest_la_OBJECTS = $(am_libgtest_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 =
-libgtest_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
- $(CXXFLAGS) $(libgtest_la_LDFLAGS) $(LDFLAGS) -o $@
-am_BezierTest_OBJECTS = BezierTest-BezierTest.$(OBJEXT)
-BezierTest_OBJECTS = $(am_BezierTest_OBJECTS)
-am__DEPENDENCIES_1 = $(am__append_4)
-am__DEPENDENCIES_2 = $(am__append_2)
-@ENABLE_WOFF_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) \
-@ENABLE_WOFF_TRUE@ $(am__DEPENDENCIES_2)
-am__DEPENDENCIES_4 =
-@USE_BUNDLED_MD5_FALSE@am__DEPENDENCIES_5 = $(am__DEPENDENCIES_4)
-am__DEPENDENCIES_6 = $(POTRACE_LIBS) $(XXHASH_LIBS) \
- $(am__DEPENDENCIES_3) $(am__append_7) $(am__DEPENDENCIES_5)
-am__DEPENDENCIES_7 = libgtest.la ../src/libdvisvgm.la \
- $(am__DEPENDENCIES_6) $(am__append_10) $(am__DEPENDENCIES_4)
-BezierTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_BitmapTest_OBJECTS = BitmapTest-BitmapTest.$(OBJEXT)
-BitmapTest_OBJECTS = $(am_BitmapTest_OBJECTS)
-BitmapTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_BoundingBoxTest_OBJECTS = \
- BoundingBoxTest-BoundingBoxTest.$(OBJEXT)
-BoundingBoxTest_OBJECTS = $(am_BoundingBoxTest_OBJECTS)
-BoundingBoxTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_CMapManagerTest_OBJECTS = \
- CMapManagerTest-CMapManagerTest.$(OBJEXT)
-CMapManagerTest_OBJECTS = $(am_CMapManagerTest_OBJECTS)
-CMapManagerTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_CMapReaderTest_OBJECTS = CMapReaderTest-CMapReaderTest.$(OBJEXT)
-CMapReaderTest_OBJECTS = $(am_CMapReaderTest_OBJECTS)
-CMapReaderTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_CMapTest_OBJECTS = CMapTest-CMapTest.$(OBJEXT)
-CMapTest_OBJECTS = $(am_CMapTest_OBJECTS)
-CMapTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_CalculatorTest_OBJECTS = CalculatorTest-CalculatorTest.$(OBJEXT)
-CalculatorTest_OBJECTS = $(am_CalculatorTest_OBJECTS)
-CalculatorTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_ColorSpecialTest_OBJECTS = \
- ColorSpecialTest-ColorSpecialTest.$(OBJEXT)
-ColorSpecialTest_OBJECTS = $(am_ColorSpecialTest_OBJECTS)
-ColorSpecialTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_ColorTest_OBJECTS = ColorTest-ColorTest.$(OBJEXT)
-ColorTest_OBJECTS = $(am_ColorTest_OBJECTS)
-ColorTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_CommandLineTest_OBJECTS = \
- CommandLineTest-CommandLineTest.$(OBJEXT)
-CommandLineTest_OBJECTS = $(am_CommandLineTest_OBJECTS)
-CommandLineTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_DVIReaderTest_OBJECTS = DVIReaderTest-DVIReaderTest.$(OBJEXT)
-DVIReaderTest_OBJECTS = $(am_DVIReaderTest_OBJECTS)
-DVIReaderTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_DependencyGraphTest_OBJECTS = \
- DependencyGraphTest-DependencyGraphTest.$(OBJEXT)
-DependencyGraphTest_OBJECTS = $(am_DependencyGraphTest_OBJECTS)
-DependencyGraphTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_DirectoryTest_OBJECTS = DirectoryTest-DirectoryTest.$(OBJEXT)
-DirectoryTest_OBJECTS = $(am_DirectoryTest_OBJECTS)
-DirectoryTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_DvisvgmSpecialTest_OBJECTS = \
- DvisvgmSpecialTest-DvisvgmSpecialTest.$(OBJEXT)
-DvisvgmSpecialTest_OBJECTS = $(am_DvisvgmSpecialTest_OBJECTS)
-DvisvgmSpecialTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_EllipticalArcTest_OBJECTS = \
- EllipticalArcTest-EllipticalArcTest.$(OBJEXT)
-EllipticalArcTest_OBJECTS = $(am_EllipticalArcTest_OBJECTS)
-EllipticalArcTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_EmSpecialTest_OBJECTS = EmSpecialTest-EmSpecialTest.$(OBJEXT)
-EmSpecialTest_OBJECTS = $(am_EmSpecialTest_OBJECTS)
-EmSpecialTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_FileFinderTest_OBJECTS = FileFinderTest-FileFinderTest.$(OBJEXT)
-FileFinderTest_OBJECTS = $(am_FileFinderTest_OBJECTS)
-FileFinderTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_FilePathTest_OBJECTS = FilePathTest-FilePathTest.$(OBJEXT)
-FilePathTest_OBJECTS = $(am_FilePathTest_OBJECTS)
-FilePathTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_FileSystemTest_OBJECTS = FileSystemTest-FileSystemTest.$(OBJEXT)
-FileSystemTest_OBJECTS = $(am_FileSystemTest_OBJECTS)
-FileSystemTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_FontCacheTest_OBJECTS = FontCacheTest-FontCacheTest.$(OBJEXT)
-FontCacheTest_OBJECTS = $(am_FontCacheTest_OBJECTS)
-FontCacheTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_FontManagerTest_OBJECTS = \
- FontManagerTest-FontManagerTest.$(OBJEXT)
-FontManagerTest_OBJECTS = $(am_FontManagerTest_OBJECTS)
-FontManagerTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_FontMapTest_OBJECTS = FontMapTest-FontMapTest.$(OBJEXT)
-FontMapTest_OBJECTS = $(am_FontMapTest_OBJECTS)
-FontMapTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_GFGlyphTracerTest_OBJECTS = \
- GFGlyphTracerTest-GFGlyphTracerTest.$(OBJEXT)
-GFGlyphTracerTest_OBJECTS = $(am_GFGlyphTracerTest_OBJECTS)
-GFGlyphTracerTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_GFReaderTest_OBJECTS = GFReaderTest-GFReaderTest.$(OBJEXT)
-GFReaderTest_OBJECTS = $(am_GFReaderTest_OBJECTS)
-GFReaderTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_GhostscriptTest_OBJECTS = \
- GhostscriptTest-GhostscriptTest.$(OBJEXT)
-GhostscriptTest_OBJECTS = $(am_GhostscriptTest_OBJECTS)
-GhostscriptTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_GraphicsPathTest_OBJECTS = \
- GraphicsPathTest-GraphicsPathTest.$(OBJEXT)
-GraphicsPathTest_OBJECTS = $(am_GraphicsPathTest_OBJECTS)
-GraphicsPathTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_HashFunctionTest_OBJECTS = \
- HashFunctionTest-HashFunctionTest.$(OBJEXT)
-HashFunctionTest_OBJECTS = $(am_HashFunctionTest_OBJECTS)
-HashFunctionTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_JFMReaderTest_OBJECTS = JFMReaderTest-JFMReaderTest.$(OBJEXT)
-JFMReaderTest_OBJECTS = $(am_JFMReaderTest_OBJECTS)
-JFMReaderTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_LengthTest_OBJECTS = LengthTest-LengthTest.$(OBJEXT)
-LengthTest_OBJECTS = $(am_LengthTest_OBJECTS)
-LengthTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_MapLineTest_OBJECTS = MapLineTest-MapLineTest.$(OBJEXT)
-MapLineTest_OBJECTS = $(am_MapLineTest_OBJECTS)
-MapLineTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_MatrixTest_OBJECTS = MatrixTest-MatrixTest.$(OBJEXT)
-MatrixTest_OBJECTS = $(am_MatrixTest_OBJECTS)
-MatrixTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_MessageExceptionTest_OBJECTS = \
- MessageExceptionTest-MessageExceptionTest.$(OBJEXT)
-MessageExceptionTest_OBJECTS = $(am_MessageExceptionTest_OBJECTS)
-MessageExceptionTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_PDFParserTest_OBJECTS = PDFParserTest-PDFParserTest.$(OBJEXT)
-PDFParserTest_OBJECTS = $(am_PDFParserTest_OBJECTS)
-PDFParserTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_PSInterpreterTest_OBJECTS = \
- PSInterpreterTest-PSInterpreterTest.$(OBJEXT)
-PSInterpreterTest_OBJECTS = $(am_PSInterpreterTest_OBJECTS)
-PSInterpreterTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_PageRagesTest_OBJECTS = PageRagesTest-PageRagesTest.$(OBJEXT)
-PageRagesTest_OBJECTS = $(am_PageRagesTest_OBJECTS)
-PageRagesTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_PageSizeTest_OBJECTS = PageSizeTest-PageSizeTest.$(OBJEXT)
-PageSizeTest_OBJECTS = $(am_PageSizeTest_OBJECTS)
-PageSizeTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_PairTest_OBJECTS = PairTest-PairTest.$(OBJEXT)
-PairTest_OBJECTS = $(am_PairTest_OBJECTS)
-PairTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_PapersizeSpecialTest_OBJECTS = \
- PapersizeSpecialTest-PapersizeSpecialTest.$(OBJEXT)
-PapersizeSpecialTest_OBJECTS = $(am_PapersizeSpecialTest_OBJECTS)
-PapersizeSpecialTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_RangeMapTest_OBJECTS = RangeMapTest-RangeMapTest.$(OBJEXT)
-RangeMapTest_OBJECTS = $(am_RangeMapTest_OBJECTS)
-RangeMapTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_SVGOutputTest_OBJECTS = SVGOutputTest-SVGOutputTest.$(OBJEXT)
-SVGOutputTest_OBJECTS = $(am_SVGOutputTest_OBJECTS)
-SVGOutputTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_ShadingPatchTest_OBJECTS = \
- ShadingPatchTest-ShadingPatchTest.$(OBJEXT)
-ShadingPatchTest_OBJECTS = $(am_ShadingPatchTest_OBJECTS)
-ShadingPatchTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_SpecialManagerTest_OBJECTS = \
- SpecialManagerTest-SpecialManagerTest.$(OBJEXT)
-SpecialManagerTest_OBJECTS = $(am_SpecialManagerTest_OBJECTS)
-SpecialManagerTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_SplittedCharInputBufferTest_OBJECTS = SplittedCharInputBufferTest-SplittedCharInputBufferTest.$(OBJEXT)
-SplittedCharInputBufferTest_OBJECTS = \
- $(am_SplittedCharInputBufferTest_OBJECTS)
-SplittedCharInputBufferTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_StreamInputBufferTest_OBJECTS = \
- StreamInputBufferTest-StreamInputBufferTest.$(OBJEXT)
-StreamInputBufferTest_OBJECTS = $(am_StreamInputBufferTest_OBJECTS)
-StreamInputBufferTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_StreamReaderTest_OBJECTS = \
- StreamReaderTest-StreamReaderTest.$(OBJEXT)
-StreamReaderTest_OBJECTS = $(am_StreamReaderTest_OBJECTS)
-StreamReaderTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_StreamWriterTest_OBJECTS = \
- StreamWriterTest-StreamWriterTest.$(OBJEXT)
-StreamWriterTest_OBJECTS = $(am_StreamWriterTest_OBJECTS)
-StreamWriterTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_StringMatcherTest_OBJECTS = \
- StringMatcherTest-StringMatcherTest.$(OBJEXT)
-StringMatcherTest_OBJECTS = $(am_StringMatcherTest_OBJECTS)
-StringMatcherTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_SubfontTest_OBJECTS = SubfontTest-SubfontTest.$(OBJEXT)
-SubfontTest_OBJECTS = $(am_SubfontTest_OBJECTS)
-SubfontTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_TFMReaderTest_OBJECTS = TFMReaderTest-TFMReaderTest.$(OBJEXT)
-TFMReaderTest_OBJECTS = $(am_TFMReaderTest_OBJECTS)
-TFMReaderTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_TensorProductPatchTest_OBJECTS = \
- TensorProductPatchTest-TensorProductPatchTest.$(OBJEXT)
-TensorProductPatchTest_OBJECTS = $(am_TensorProductPatchTest_OBJECTS)
-TensorProductPatchTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_ToUnicodeMapTest_OBJECTS = \
- ToUnicodeMapTest-ToUnicodeMapTest.$(OBJEXT)
-ToUnicodeMapTest_OBJECTS = $(am_ToUnicodeMapTest_OBJECTS)
-ToUnicodeMapTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_TpicSpecialTest_OBJECTS = \
- TpicSpecialTest-TpicSpecialTest.$(OBJEXT)
-TpicSpecialTest_OBJECTS = $(am_TpicSpecialTest_OBJECTS)
-TpicSpecialTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_TriangularPatchTest_OBJECTS = \
- TriangularPatchTest-TriangularPatchTest.$(OBJEXT)
-TriangularPatchTest_OBJECTS = $(am_TriangularPatchTest_OBJECTS)
-TriangularPatchTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_UnicodeTest_OBJECTS = UnicodeTest-UnicodeTest.$(OBJEXT)
-UnicodeTest_OBJECTS = $(am_UnicodeTest_OBJECTS)
-UnicodeTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_UtilityTest_OBJECTS = UtilityTest-UtilityTest.$(OBJEXT)
-UtilityTest_OBJECTS = $(am_UtilityTest_OBJECTS)
-UtilityTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_VectorIteratorTest_OBJECTS = \
- VectorIteratorTest-VectorIteratorTest.$(OBJEXT)
-VectorIteratorTest_OBJECTS = $(am_VectorIteratorTest_OBJECTS)
-VectorIteratorTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_VectorStreamTest_OBJECTS = \
- VectorStreamTest-VectorStreamTest.$(OBJEXT)
-VectorStreamTest_OBJECTS = $(am_VectorStreamTest_OBJECTS)
-VectorStreamTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_XMLNodeTest_OBJECTS = XMLNodeTest-XMLNodeTest.$(OBJEXT)
-XMLNodeTest_OBJECTS = $(am_XMLNodeTest_OBJECTS)
-XMLNodeTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-am_XMLStringTest_OBJECTS = XMLStringTest-XMLStringTest.$(OBJEXT)
-XMLStringTest_OBJECTS = $(am_XMLStringTest_OBJECTS)
-XMLStringTest_DEPENDENCIES = $(am__DEPENDENCIES_7)
-nodist_hashcheck_OBJECTS = hashcheck-hashcheck.$(OBJEXT)
-hashcheck_OBJECTS = $(nodist_hashcheck_OBJECTS)
-hashcheck_DEPENDENCIES = $(am__DEPENDENCIES_6)
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__maybe_remake_depfiles = depfiles
-am__depfiles_remade = ./$(DEPDIR)/BezierTest-BezierTest.Po \
- ./$(DEPDIR)/BitmapTest-BitmapTest.Po \
- ./$(DEPDIR)/BoundingBoxTest-BoundingBoxTest.Po \
- ./$(DEPDIR)/CMapManagerTest-CMapManagerTest.Po \
- ./$(DEPDIR)/CMapReaderTest-CMapReaderTest.Po \
- ./$(DEPDIR)/CMapTest-CMapTest.Po \
- ./$(DEPDIR)/CalculatorTest-CalculatorTest.Po \
- ./$(DEPDIR)/ColorSpecialTest-ColorSpecialTest.Po \
- ./$(DEPDIR)/ColorTest-ColorTest.Po \
- ./$(DEPDIR)/CommandLineTest-CommandLineTest.Po \
- ./$(DEPDIR)/DVIReaderTest-DVIReaderTest.Po \
- ./$(DEPDIR)/DependencyGraphTest-DependencyGraphTest.Po \
- ./$(DEPDIR)/DirectoryTest-DirectoryTest.Po \
- ./$(DEPDIR)/DvisvgmSpecialTest-DvisvgmSpecialTest.Po \
- ./$(DEPDIR)/EllipticalArcTest-EllipticalArcTest.Po \
- ./$(DEPDIR)/EmSpecialTest-EmSpecialTest.Po \
- ./$(DEPDIR)/FileFinderTest-FileFinderTest.Po \
- ./$(DEPDIR)/FilePathTest-FilePathTest.Po \
- ./$(DEPDIR)/FileSystemTest-FileSystemTest.Po \
- ./$(DEPDIR)/FontCacheTest-FontCacheTest.Po \
- ./$(DEPDIR)/FontManagerTest-FontManagerTest.Po \
- ./$(DEPDIR)/FontMapTest-FontMapTest.Po \
- ./$(DEPDIR)/GFGlyphTracerTest-GFGlyphTracerTest.Po \
- ./$(DEPDIR)/GFReaderTest-GFReaderTest.Po \
- ./$(DEPDIR)/GhostscriptTest-GhostscriptTest.Po \
- ./$(DEPDIR)/GraphicsPathTest-GraphicsPathTest.Po \
- ./$(DEPDIR)/HashFunctionTest-HashFunctionTest.Po \
- ./$(DEPDIR)/JFMReaderTest-JFMReaderTest.Po \
- ./$(DEPDIR)/LengthTest-LengthTest.Po \
- ./$(DEPDIR)/MapLineTest-MapLineTest.Po \
- ./$(DEPDIR)/MatrixTest-MatrixTest.Po \
- ./$(DEPDIR)/MessageExceptionTest-MessageExceptionTest.Po \
- ./$(DEPDIR)/PDFParserTest-PDFParserTest.Po \
- ./$(DEPDIR)/PSInterpreterTest-PSInterpreterTest.Po \
- ./$(DEPDIR)/PageRagesTest-PageRagesTest.Po \
- ./$(DEPDIR)/PageSizeTest-PageSizeTest.Po \
- ./$(DEPDIR)/PairTest-PairTest.Po \
- ./$(DEPDIR)/PapersizeSpecialTest-PapersizeSpecialTest.Po \
- ./$(DEPDIR)/RangeMapTest-RangeMapTest.Po \
- ./$(DEPDIR)/SVGOutputTest-SVGOutputTest.Po \
- ./$(DEPDIR)/ShadingPatchTest-ShadingPatchTest.Po \
- ./$(DEPDIR)/SpecialManagerTest-SpecialManagerTest.Po \
- ./$(DEPDIR)/SplittedCharInputBufferTest-SplittedCharInputBufferTest.Po \
- ./$(DEPDIR)/StreamInputBufferTest-StreamInputBufferTest.Po \
- ./$(DEPDIR)/StreamReaderTest-StreamReaderTest.Po \
- ./$(DEPDIR)/StreamWriterTest-StreamWriterTest.Po \
- ./$(DEPDIR)/StringMatcherTest-StringMatcherTest.Po \
- ./$(DEPDIR)/SubfontTest-SubfontTest.Po \
- ./$(DEPDIR)/TFMReaderTest-TFMReaderTest.Po \
- ./$(DEPDIR)/TensorProductPatchTest-TensorProductPatchTest.Po \
- ./$(DEPDIR)/ToUnicodeMapTest-ToUnicodeMapTest.Po \
- ./$(DEPDIR)/TpicSpecialTest-TpicSpecialTest.Po \
- ./$(DEPDIR)/TriangularPatchTest-TriangularPatchTest.Po \
- ./$(DEPDIR)/UnicodeTest-UnicodeTest.Po \
- ./$(DEPDIR)/UtilityTest-UtilityTest.Po \
- ./$(DEPDIR)/VectorIteratorTest-VectorIteratorTest.Po \
- ./$(DEPDIR)/VectorStreamTest-VectorStreamTest.Po \
- ./$(DEPDIR)/XMLNodeTest-XMLNodeTest.Po \
- ./$(DEPDIR)/XMLStringTest-XMLStringTest.Po \
- ./$(DEPDIR)/hashcheck-hashcheck.Po \
- ./$(DEPDIR)/libgtest_la-testmain.Plo \
- gtest/src/$(DEPDIR)/libgtest_la-gtest-all.Plo
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_@AM_V@)
-am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
-am__v_CXX_0 = @echo " CXX " $@;
-am__v_CXX_1 =
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
- $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo " CXXLD " $@;
-am__v_CXXLD_1 =
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-am__v_CC_1 =
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-am__v_CCLD_1 =
-SOURCES = $(libgtest_la_SOURCES) $(BezierTest_SOURCES) \
- $(BitmapTest_SOURCES) $(BoundingBoxTest_SOURCES) \
- $(CMapManagerTest_SOURCES) $(CMapReaderTest_SOURCES) \
- $(CMapTest_SOURCES) $(CalculatorTest_SOURCES) \
- $(ColorSpecialTest_SOURCES) $(ColorTest_SOURCES) \
- $(CommandLineTest_SOURCES) $(DVIReaderTest_SOURCES) \
- $(DependencyGraphTest_SOURCES) $(DirectoryTest_SOURCES) \
- $(DvisvgmSpecialTest_SOURCES) $(EllipticalArcTest_SOURCES) \
- $(EmSpecialTest_SOURCES) $(FileFinderTest_SOURCES) \
- $(FilePathTest_SOURCES) $(FileSystemTest_SOURCES) \
- $(FontCacheTest_SOURCES) $(FontManagerTest_SOURCES) \
- $(FontMapTest_SOURCES) $(GFGlyphTracerTest_SOURCES) \
- $(GFReaderTest_SOURCES) $(GhostscriptTest_SOURCES) \
- $(GraphicsPathTest_SOURCES) $(HashFunctionTest_SOURCES) \
- $(JFMReaderTest_SOURCES) $(LengthTest_SOURCES) \
- $(MapLineTest_SOURCES) $(MatrixTest_SOURCES) \
- $(MessageExceptionTest_SOURCES) $(PDFParserTest_SOURCES) \
- $(PSInterpreterTest_SOURCES) $(PageRagesTest_SOURCES) \
- $(PageSizeTest_SOURCES) $(PairTest_SOURCES) \
- $(PapersizeSpecialTest_SOURCES) $(RangeMapTest_SOURCES) \
- $(SVGOutputTest_SOURCES) $(ShadingPatchTest_SOURCES) \
- $(SpecialManagerTest_SOURCES) \
- $(SplittedCharInputBufferTest_SOURCES) \
- $(StreamInputBufferTest_SOURCES) $(StreamReaderTest_SOURCES) \
- $(StreamWriterTest_SOURCES) $(StringMatcherTest_SOURCES) \
- $(SubfontTest_SOURCES) $(TFMReaderTest_SOURCES) \
- $(TensorProductPatchTest_SOURCES) $(ToUnicodeMapTest_SOURCES) \
- $(TpicSpecialTest_SOURCES) $(TriangularPatchTest_SOURCES) \
- $(UnicodeTest_SOURCES) $(UtilityTest_SOURCES) \
- $(VectorIteratorTest_SOURCES) $(VectorStreamTest_SOURCES) \
- $(XMLNodeTest_SOURCES) $(XMLStringTest_SOURCES) \
- $(nodist_hashcheck_SOURCES)
-DIST_SOURCES = $(libgtest_la_SOURCES) $(BezierTest_SOURCES) \
- $(BitmapTest_SOURCES) $(BoundingBoxTest_SOURCES) \
- $(CMapManagerTest_SOURCES) $(CMapReaderTest_SOURCES) \
- $(CMapTest_SOURCES) $(CalculatorTest_SOURCES) \
- $(ColorSpecialTest_SOURCES) $(ColorTest_SOURCES) \
- $(CommandLineTest_SOURCES) $(DVIReaderTest_SOURCES) \
- $(DependencyGraphTest_SOURCES) $(DirectoryTest_SOURCES) \
- $(DvisvgmSpecialTest_SOURCES) $(EllipticalArcTest_SOURCES) \
- $(EmSpecialTest_SOURCES) $(FileFinderTest_SOURCES) \
- $(FilePathTest_SOURCES) $(FileSystemTest_SOURCES) \
- $(FontCacheTest_SOURCES) $(FontManagerTest_SOURCES) \
- $(FontMapTest_SOURCES) $(GFGlyphTracerTest_SOURCES) \
- $(GFReaderTest_SOURCES) $(GhostscriptTest_SOURCES) \
- $(GraphicsPathTest_SOURCES) $(HashFunctionTest_SOURCES) \
- $(JFMReaderTest_SOURCES) $(LengthTest_SOURCES) \
- $(MapLineTest_SOURCES) $(MatrixTest_SOURCES) \
- $(MessageExceptionTest_SOURCES) $(PDFParserTest_SOURCES) \
- $(PSInterpreterTest_SOURCES) $(PageRagesTest_SOURCES) \
- $(PageSizeTest_SOURCES) $(PairTest_SOURCES) \
- $(PapersizeSpecialTest_SOURCES) $(RangeMapTest_SOURCES) \
- $(SVGOutputTest_SOURCES) $(ShadingPatchTest_SOURCES) \
- $(SpecialManagerTest_SOURCES) \
- $(SplittedCharInputBufferTest_SOURCES) \
- $(StreamInputBufferTest_SOURCES) $(StreamReaderTest_SOURCES) \
- $(StreamWriterTest_SOURCES) $(StringMatcherTest_SOURCES) \
- $(SubfontTest_SOURCES) $(TFMReaderTest_SOURCES) \
- $(TensorProductPatchTest_SOURCES) $(ToUnicodeMapTest_SOURCES) \
- $(TpicSpecialTest_SOURCES) $(TriangularPatchTest_SOURCES) \
- $(UnicodeTest_SOURCES) $(UtilityTest_SOURCES) \
- $(VectorIteratorTest_SOURCES) $(VectorStreamTest_SOURCES) \
- $(XMLNodeTest_SOURCES) $(XMLStringTest_SOURCES)
-RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
- ctags-recursive dvi-recursive html-recursive info-recursive \
- install-data-recursive install-dvi-recursive \
- install-exec-recursive install-html-recursive \
- install-info-recursive install-pdf-recursive \
- install-ps-recursive install-recursive installcheck-recursive \
- installdirs-recursive pdf-recursive ps-recursive \
- tags-recursive uninstall-recursive
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
- distclean-recursive maintainer-clean-recursive
-am__recursive_targets = \
- $(RECURSIVE_TARGETS) \
- $(RECURSIVE_CLEAN_TARGETS) \
- $(am__extra_recursive_targets)
-AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
- check recheck distdir distdir-am
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates. Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
- BEGIN { nonempty = 0; } \
- { items[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique. This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
- list='$(am__tagged_files)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-am__tty_colors_dummy = \
- mgn= red= grn= lgn= blu= brg= std=; \
- am__color_tests=no
-am__tty_colors = { \
- $(am__tty_colors_dummy); \
- if test "X$(AM_COLOR_TESTS)" = Xno; then \
- am__color_tests=no; \
- elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
- am__color_tests=yes; \
- elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
- am__color_tests=yes; \
- fi; \
- if test $$am__color_tests = yes; then \
- red=''; \
- grn=''; \
- lgn=''; \
- blu=''; \
- mgn=''; \
- brg=''; \
- std=''; \
- fi; \
-}
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-am__recheck_rx = ^[ ]*:recheck:[ ]*
-am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
-am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
-# A command that, given a newline-separated list of test names on the
-# standard input, print the name of the tests that are to be re-run
-# upon "make recheck".
-am__list_recheck_tests = $(AWK) '{ \
- recheck = 1; \
- while ((rc = (getline line < ($$0 ".trs"))) != 0) \
- { \
- if (rc < 0) \
- { \
- if ((getline line2 < ($$0 ".log")) < 0) \
- recheck = 0; \
- break; \
- } \
- else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
- { \
- recheck = 0; \
- break; \
- } \
- else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
- { \
- break; \
- } \
- }; \
- if (recheck) \
- print $$0; \
- close ($$0 ".trs"); \
- close ($$0 ".log"); \
-}'
-# A command that, given a newline-separated list of test names on the
-# standard input, create the global log from their .trs and .log files.
-am__create_global_log = $(AWK) ' \
-function fatal(msg) \
-{ \
- print "fatal: making $@: " msg | "cat >&2"; \
- exit 1; \
-} \
-function rst_section(header) \
-{ \
- print header; \
- len = length(header); \
- for (i = 1; i <= len; i = i + 1) \
- printf "="; \
- printf "\n\n"; \
-} \
-{ \
- copy_in_global_log = 1; \
- global_test_result = "RUN"; \
- while ((rc = (getline line < ($$0 ".trs"))) != 0) \
- { \
- if (rc < 0) \
- fatal("failed to read from " $$0 ".trs"); \
- if (line ~ /$(am__global_test_result_rx)/) \
- { \
- sub("$(am__global_test_result_rx)", "", line); \
- sub("[ ]*$$", "", line); \
- global_test_result = line; \
- } \
- else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
- copy_in_global_log = 0; \
- }; \
- if (copy_in_global_log) \
- { \
- rst_section(global_test_result ": " $$0); \
- while ((rc = (getline line < ($$0 ".log"))) != 0) \
- { \
- if (rc < 0) \
- fatal("failed to read from " $$0 ".log"); \
- print line; \
- }; \
- printf "\n"; \
- }; \
- close ($$0 ".trs"); \
- close ($$0 ".log"); \
-}'
-# Restructured Text title.
-am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
-# Solaris 10 'make', and several other traditional 'make' implementations,
-# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
-# by disabling -e (using the XSI extension "set +e") if it's set.
-am__sh_e_setup = case $$- in *e*) set +e;; esac
-# Default flags passed to test drivers.
-am__common_driver_flags = \
- --color-tests "$$am__color_tests" \
- --enable-hard-errors "$$am__enable_hard_errors" \
- --expect-failure "$$am__expect_failure"
-# To be inserted before the command running the test. Creates the
-# directory for the log if needed. Stores in $dir the directory
-# containing $f, in $tst the test, in $log the log. Executes the
-# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
-# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
-# will run the test scripts (or their associated LOG_COMPILER, if
-# thy have one).
-am__check_pre = \
-$(am__sh_e_setup); \
-$(am__vpath_adj_setup) $(am__vpath_adj) \
-$(am__tty_colors); \
-srcdir=$(srcdir); export srcdir; \
-case "$@" in \
- */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
- *) am__odir=.;; \
-esac; \
-test "x$$am__odir" = x"." || test -d "$$am__odir" \
- || $(MKDIR_P) "$$am__odir" || exit $$?; \
-if test -f "./$$f"; then dir=./; \
-elif test -f "$$f"; then dir=; \
-else dir="$(srcdir)/"; fi; \
-tst=$$dir$$f; log='$@'; \
-if test -n '$(DISABLE_HARD_ERRORS)'; then \
- am__enable_hard_errors=no; \
-else \
- am__enable_hard_errors=yes; \
-fi; \
-case " $(XFAIL_TESTS) " in \
- *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
- am__expect_failure=yes;; \
- *) \
- am__expect_failure=no;; \
-esac; \
-$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
-# A shell command to get the names of the tests scripts with any registered
-# extension removed (i.e., equivalently, the names of the test logs, with
-# the '.log' extension removed). The result is saved in the shell variable
-# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
-# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
-# since that might cause problem with VPATH rewrites for suffix-less tests.
-# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
-am__set_TESTS_bases = \
- bases='$(TEST_LOGS)'; \
- bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
- bases=`echo $$bases`
-RECHECK_LOGS = $(TEST_LOGS)
-TEST_SUITE_LOG = test-suite.log
-TEST_EXTENSIONS = @EXEEXT@ .test
-LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
-LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
-am__set_b = \
- case '$@' in \
- */*) \
- case '$*' in \
- */*) b='$*';; \
- *) b=`echo '$@' | sed 's/\.log$$//'`; \
- esac;; \
- *) \
- b='$*';; \
- esac
-am__test_logs1 = $(TESTS:=.log)
-am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
-TEST_LOGS = $(am__test_logs2:.test.log=.log)
-TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
-TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
- $(TEST_LOG_FLAGS)
-DIST_SUBDIRS = $(SUBDIRS)
-am__DIST_COMMON = $(srcdir)/../libs/defs.am $(srcdir)/Makefile.in \
- $(top_srcdir)/depcomp $(top_srcdir)/test-driver
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-am__relativize = \
- dir0=`pwd`; \
- sed_first='s,^\([^/]*\)/.*$$,\1,'; \
- sed_rest='s,^[^/]*/*,,'; \
- sed_last='s,^.*/\([^/]*\)$$,\1,'; \
- sed_butlast='s,/*[^/]*$$,,'; \
- while test -n "$$dir1"; do \
- first=`echo "$$dir1" | sed -e "$$sed_first"`; \
- if test "$$first" != "."; then \
- if test "$$first" = ".."; then \
- dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
- dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
- else \
- first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
- if test "$$first2" = "$$first"; then \
- dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
- else \
- dir2="../$$dir2"; \
- fi; \
- dir0="$$dir0"/"$$first"; \
- fi; \
- fi; \
- dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
- done; \
- reldir="$$dir2"
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_CPPFLAGS = @AM_CPPFLAGS@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = @AM_LDFLAGS@
-AR = @AR@
-ASCIIDOC = @ASCIIDOC@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BROTLI_CFLAGS = @BROTLI_CFLAGS@ $(am__append_1)
-BROTLI_LIBS = @BROTLI_LIBS@ $(am__append_2)
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
-CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
-CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
-CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
-CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
-CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DATE = @DATE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
-FREETYPE_LIBS = @FREETYPE_LIBS@
-GCOV = @GCOV@
-GENHTML = @GENHTML@
-GREP = @GREP@
-HAVE_CXX11 = @HAVE_CXX11@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-KPSE_CFLAGS = @KPSE_CFLAGS@
-KPSE_LIBS = @KPSE_LIBS@
-LCOV = @LCOV@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBCRYPTO_CFLAGS = @LIBCRYPTO_CFLAGS@
-LIBCRYPTO_LIBS = @LIBCRYPTO_LIBS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-TTFAUTOHINT_CFLAGS = @TTFAUTOHINT_CFLAGS@
-TTFAUTOHINT_LIBS = @TTFAUTOHINT_LIBS@
-VERSION = @VERSION@
-WOFF2_CFLAGS = @WOFF2_CFLAGS@ $(am__append_3)
-WOFF2_LIBS = @WOFF2_LIBS@ $(am__append_4)
-XMLTO = @XMLTO@
-XSLTPROC = @XSLTPROC@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-dvisvgm_srcdir = @dvisvgm_srcdir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-SUBDIRS = data
-check_LTLIBRARIES = libgtest.la
-libgtest_la_SOURCES = gtest/src/gtest-all.cc testmain.cpp
-libgtest_la_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include -I$(dvisvgm_srcdir)/tests/gtest
-libgtest_la_LDFLAGS = -pthread
-EXTRA_DIST = gtest/LICENSE gtest/include gtest/src/gtest.cc \
- gtest/src/gtest-death-test.cc gtest/src/gtest-filepath.cc \
- gtest/src/gtest-internal-inl.h gtest/src/gtest_main.cc \
- gtest/src/gtest-matchers.cc gtest/src/gtest-port.cc \
- gtest/src/gtest-printers.cc gtest/src/gtest-test-part.cc \
- gtest/src/gtest-typed-test.cc check-conv genhashcheck.py \
- normalize.xsl
-@HAVE_POTRACE_FALSE@POTRACE_CFLAGS = -I$(dvisvgm_srcdir)/libs/potrace
-@HAVE_POTRACE_FALSE@POTRACE_LIBS = ../libs/potrace/libpotrace.a
-@HAVE_XXHASH_FALSE@XXHASH_CFLAGS = -I$(dvisvgm_srcdir)/libs/xxHash
-@HAVE_XXHASH_FALSE@XXHASH_LIBS = ../libs/xxHash/libxxhash.a
-LIBS_CFLAGS = $(XXHASH_CFLAGS) $(am__append_6) $(am__append_8)
-LIBS_LIBS = $(POTRACE_LIBS) $(XXHASH_LIBS) $(am__append_5) \
- $(am__append_7) $(am__append_9)
-AM_CXXFLAGS = -I$(dvisvgm_srcdir)/src -I$(dvisvgm_srcdir)/libs/variant/include \
- -Wall -Wno-mismatched-tags \
- -DBUILDDIR='"$(abs_builddir)"' -DSRCDIR='"$(abs_srcdir)"' \
- $(CODE_COVERAGE_CFLAGS)
-
-nodist_hashcheck_SOURCES = hashcheck.cpp
-hashcheck_CPPFLAGS = $(LIBS_CFLAGS)
-hashcheck_LDADD = $(LIBS_LIBS)
-TESTLIBS = libgtest.la ../src/libdvisvgm.la $(LIBS_LIBS) -lfreetype \
- $(am__append_10) $(CODE_COVERAGE_LDFLAGS)
-BezierTest_SOURCES = BezierTest.cpp testutil.hpp
-BezierTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-BezierTest_LDADD = $(TESTLIBS)
-BitmapTest_SOURCES = BitmapTest.cpp testutil.hpp
-BitmapTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-BitmapTest_LDADD = $(TESTLIBS)
-BoundingBoxTest_SOURCES = BoundingBoxTest.cpp testutil.hpp
-BoundingBoxTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-BoundingBoxTest_LDADD = $(TESTLIBS)
-CalculatorTest_SOURCES = CalculatorTest.cpp testutil.hpp
-CalculatorTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-CalculatorTest_LDADD = $(TESTLIBS)
-CMapManagerTest_SOURCES = CMapManagerTest.cpp testutil.hpp
-CMapManagerTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-CMapManagerTest_LDADD = $(TESTLIBS)
-CMapReaderTest_SOURCES = CMapReaderTest.cpp testutil.hpp
-CMapReaderTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-CMapReaderTest_LDADD = $(TESTLIBS)
-CMapTest_SOURCES = CMapTest.cpp testutil.hpp
-CMapTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-CMapTest_LDADD = $(TESTLIBS)
-ColorSpecialTest_SOURCES = ColorSpecialTest.cpp testutil.hpp
-ColorSpecialTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-ColorSpecialTest_LDADD = $(TESTLIBS)
-ColorTest_SOURCES = ColorTest.cpp testutil.hpp
-ColorTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-ColorTest_LDADD = $(TESTLIBS)
-CommandLineTest_SOURCES = CommandLineTest.cpp testutil.hpp
-CommandLineTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-CommandLineTest_LDADD = $(TESTLIBS)
-DependencyGraphTest_SOURCES = DependencyGraphTest.cpp testutil.hpp
-DependencyGraphTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-DependencyGraphTest_LDADD = $(TESTLIBS)
-DirectoryTest_SOURCES = DirectoryTest.cpp testutil.hpp
-DirectoryTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-DirectoryTest_LDADD = $(TESTLIBS)
-DVIReaderTest_SOURCES = DVIReaderTest.cpp testutil.hpp
-DVIReaderTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-DVIReaderTest_LDADD = $(TESTLIBS)
-DvisvgmSpecialTest_SOURCES = DvisvgmSpecialTest.cpp testutil.hpp
-DvisvgmSpecialTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-DvisvgmSpecialTest_LDADD = $(TESTLIBS)
-EllipticalArcTest_SOURCES = EllipticalArcTest.cpp testutil.hpp
-EllipticalArcTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-EllipticalArcTest_LDADD = $(TESTLIBS)
-EmSpecialTest_SOURCES = EmSpecialTest.cpp testutil.hpp
-EmSpecialTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-EmSpecialTest_LDADD = $(TESTLIBS)
-FileFinderTest_SOURCES = FileFinderTest.cpp testutil.hpp
-FileFinderTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-FileFinderTest_LDADD = $(TESTLIBS)
-FilePathTest_SOURCES = FilePathTest.cpp testutil.hpp
-FilePathTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-FilePathTest_LDADD = $(TESTLIBS)
-FileSystemTest_SOURCES = FileSystemTest.cpp testutil.hpp
-FileSystemTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-FileSystemTest_LDADD = $(TESTLIBS)
-FontCacheTest_SOURCES = FontCacheTest.cpp testutil.hpp
-FontCacheTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-FontCacheTest_LDADD = $(TESTLIBS)
-FontManagerTest_SOURCES = FontManagerTest.cpp testutil.hpp
-FontManagerTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-FontManagerTest_LDADD = $(TESTLIBS)
-FontMapTest_SOURCES = FontMapTest.cpp testutil.hpp
-FontMapTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-FontMapTest_LDADD = $(TESTLIBS)
-GFGlyphTracerTest_SOURCES = GFGlyphTracerTest.cpp testutil.hpp
-GFGlyphTracerTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-GFGlyphTracerTest_LDADD = $(TESTLIBS)
-GFReaderTest_SOURCES = GFReaderTest.cpp testutil.hpp
-GFReaderTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-GFReaderTest_LDADD = $(TESTLIBS)
-GhostscriptTest_SOURCES = GhostscriptTest.cpp testutil.hpp
-GhostscriptTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-GhostscriptTest_LDADD = $(TESTLIBS)
-GraphicsPathTest_SOURCES = GraphicsPathTest.cpp testutil.hpp
-GraphicsPathTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-GraphicsPathTest_LDADD = $(TESTLIBS)
-HashFunctionTest_SOURCES = HashFunctionTest.cpp testutil.hpp
-HashFunctionTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-HashFunctionTest_LDADD = $(TESTLIBS)
-JFMReaderTest_SOURCES = JFMReaderTest.cpp testutil.hpp
-JFMReaderTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-JFMReaderTest_LDADD = $(TESTLIBS)
-LengthTest_SOURCES = LengthTest.cpp testutil.hpp
-LengthTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-LengthTest_LDADD = $(TESTLIBS)
-MapLineTest_SOURCES = MapLineTest.cpp testutil.hpp
-MapLineTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-MapLineTest_LDADD = $(TESTLIBS)
-MatrixTest_SOURCES = MatrixTest.cpp testutil.hpp
-MatrixTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-MatrixTest_LDADD = $(TESTLIBS)
-MessageExceptionTest_SOURCES = MessageExceptionTest.cpp testutil.hpp
-MessageExceptionTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-MessageExceptionTest_LDADD = $(TESTLIBS)
-PageRagesTest_SOURCES = PageRagesTest.cpp testutil.hpp
-PageRagesTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-PageRagesTest_LDADD = $(TESTLIBS)
-PageSizeTest_SOURCES = PageSizeTest.cpp testutil.hpp
-PageSizeTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-PageSizeTest_LDADD = $(TESTLIBS)
-PairTest_SOURCES = PairTest.cpp testutil.hpp
-PairTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-PairTest_LDADD = $(TESTLIBS)
-PapersizeSpecialTest_SOURCES = PapersizeSpecialTest.cpp testutil.hpp
-PapersizeSpecialTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-PapersizeSpecialTest_LDADD = $(TESTLIBS)
-PDFParserTest_SOURCES = PDFParserTest.cpp testutil.hpp
-PDFParserTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-PDFParserTest_LDADD = $(TESTLIBS)
-PSInterpreterTest_SOURCES = PSInterpreterTest.cpp testutil.hpp
-PSInterpreterTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-PSInterpreterTest_LDADD = $(TESTLIBS)
-RangeMapTest_SOURCES = RangeMapTest.cpp testutil.hpp
-RangeMapTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-RangeMapTest_LDADD = $(TESTLIBS)
-ShadingPatchTest_SOURCES = ShadingPatchTest.cpp testutil.hpp
-ShadingPatchTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-ShadingPatchTest_LDADD = $(TESTLIBS)
-SpecialManagerTest_SOURCES = SpecialManagerTest.cpp testutil.hpp
-SpecialManagerTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-SpecialManagerTest_LDADD = $(TESTLIBS)
-SplittedCharInputBufferTest_SOURCES = SplittedCharInputBufferTest.cpp testutil.hpp
-SplittedCharInputBufferTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-SplittedCharInputBufferTest_LDADD = $(TESTLIBS)
-StreamInputBufferTest_SOURCES = StreamInputBufferTest.cpp testutil.hpp
-StreamInputBufferTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-StreamInputBufferTest_LDADD = $(TESTLIBS)
-StreamReaderTest_SOURCES = StreamReaderTest.cpp testutil.hpp
-StreamReaderTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-StreamReaderTest_LDADD = $(TESTLIBS)
-StreamWriterTest_SOURCES = StreamWriterTest.cpp testutil.hpp
-StreamWriterTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-StreamWriterTest_LDADD = $(TESTLIBS)
-StringMatcherTest_SOURCES = StringMatcherTest.cpp testutil.hpp
-StringMatcherTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-StringMatcherTest_LDADD = $(TESTLIBS)
-SubfontTest_SOURCES = SubfontTest.cpp testutil.hpp
-SubfontTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-SubfontTest_LDADD = $(TESTLIBS)
-SVGOutputTest_SOURCES = SVGOutputTest.cpp testutil.hpp
-SVGOutputTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-SVGOutputTest_LDADD = $(TESTLIBS)
-TensorProductPatchTest_SOURCES = TensorProductPatchTest.cpp testutil.hpp
-TensorProductPatchTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-TensorProductPatchTest_LDADD = $(TESTLIBS)
-TFMReaderTest_SOURCES = TFMReaderTest.cpp testutil.hpp
-TFMReaderTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-TFMReaderTest_LDADD = $(TESTLIBS)
-ToUnicodeMapTest_SOURCES = ToUnicodeMapTest.cpp testutil.hpp
-ToUnicodeMapTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-ToUnicodeMapTest_LDADD = $(TESTLIBS)
-TpicSpecialTest_SOURCES = TpicSpecialTest.cpp testutil.hpp
-TpicSpecialTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-TpicSpecialTest_LDADD = $(TESTLIBS)
-TriangularPatchTest_SOURCES = TriangularPatchTest.cpp testutil.hpp
-TriangularPatchTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-TriangularPatchTest_LDADD = $(TESTLIBS)
-UnicodeTest_SOURCES = UnicodeTest.cpp testutil.hpp
-UnicodeTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-UnicodeTest_LDADD = $(TESTLIBS)
-UtilityTest_SOURCES = UtilityTest.cpp testutil.hpp
-UtilityTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-UtilityTest_LDADD = $(TESTLIBS)
-VectorIteratorTest_SOURCES = VectorIteratorTest.cpp testutil.hpp
-VectorIteratorTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-VectorIteratorTest_LDADD = $(TESTLIBS)
-VectorStreamTest_SOURCES = VectorStreamTest.cpp testutil.hpp
-VectorStreamTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-VectorStreamTest_LDADD = $(TESTLIBS)
-XMLNodeTest_SOURCES = XMLNodeTest.cpp testutil.hpp
-XMLNodeTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-XMLNodeTest_LDADD = $(TESTLIBS)
-XMLStringTest_SOURCES = XMLStringTest.cpp testutil.hpp
-XMLStringTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-XMLStringTest_LDADD = $(TESTLIBS)
-CLEANFILES = *.gcda *.gcno hashcheck.cpp
-all: all-recursive
-
-.SUFFIXES:
-.SUFFIXES: .cc .cpp .lo .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/../libs/defs.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --foreign tests/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
- esac;
-$(srcdir)/../libs/defs.am $(am__empty):
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-checkPROGRAMS:
- @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
- echo " rm -f" $$list; \
- rm -f $$list || exit $$?; \
- test -n "$(EXEEXT)" || exit 0; \
- list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
- echo " rm -f" $$list; \
- rm -f $$list
-
-clean-checkLTLIBRARIES:
- -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES)
- @list='$(check_LTLIBRARIES)'; \
- locs=`for p in $$list; do echo $$p; done | \
- sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
- sort -u`; \
- test -z "$$locs" || { \
- echo rm -f $${locs}; \
- rm -f $${locs}; \
- }
-gtest/src/$(am__dirstamp):
- @$(MKDIR_P) gtest/src
- @: > gtest/src/$(am__dirstamp)
-gtest/src/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) gtest/src/$(DEPDIR)
- @: > gtest/src/$(DEPDIR)/$(am__dirstamp)
-gtest/src/libgtest_la-gtest-all.lo: gtest/src/$(am__dirstamp) \
- gtest/src/$(DEPDIR)/$(am__dirstamp)
-
-libgtest.la: $(libgtest_la_OBJECTS) $(libgtest_la_DEPENDENCIES) $(EXTRA_libgtest_la_DEPENDENCIES)
- $(AM_V_CXXLD)$(libgtest_la_LINK) $(libgtest_la_OBJECTS) $(libgtest_la_LIBADD) $(LIBS)
-
-BezierTest$(EXEEXT): $(BezierTest_OBJECTS) $(BezierTest_DEPENDENCIES) $(EXTRA_BezierTest_DEPENDENCIES)
- @rm -f BezierTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(BezierTest_OBJECTS) $(BezierTest_LDADD) $(LIBS)
-
-BitmapTest$(EXEEXT): $(BitmapTest_OBJECTS) $(BitmapTest_DEPENDENCIES) $(EXTRA_BitmapTest_DEPENDENCIES)
- @rm -f BitmapTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(BitmapTest_OBJECTS) $(BitmapTest_LDADD) $(LIBS)
-
-BoundingBoxTest$(EXEEXT): $(BoundingBoxTest_OBJECTS) $(BoundingBoxTest_DEPENDENCIES) $(EXTRA_BoundingBoxTest_DEPENDENCIES)
- @rm -f BoundingBoxTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(BoundingBoxTest_OBJECTS) $(BoundingBoxTest_LDADD) $(LIBS)
-
-CMapManagerTest$(EXEEXT): $(CMapManagerTest_OBJECTS) $(CMapManagerTest_DEPENDENCIES) $(EXTRA_CMapManagerTest_DEPENDENCIES)
- @rm -f CMapManagerTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(CMapManagerTest_OBJECTS) $(CMapManagerTest_LDADD) $(LIBS)
-
-CMapReaderTest$(EXEEXT): $(CMapReaderTest_OBJECTS) $(CMapReaderTest_DEPENDENCIES) $(EXTRA_CMapReaderTest_DEPENDENCIES)
- @rm -f CMapReaderTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(CMapReaderTest_OBJECTS) $(CMapReaderTest_LDADD) $(LIBS)
-
-CMapTest$(EXEEXT): $(CMapTest_OBJECTS) $(CMapTest_DEPENDENCIES) $(EXTRA_CMapTest_DEPENDENCIES)
- @rm -f CMapTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(CMapTest_OBJECTS) $(CMapTest_LDADD) $(LIBS)
-
-CalculatorTest$(EXEEXT): $(CalculatorTest_OBJECTS) $(CalculatorTest_DEPENDENCIES) $(EXTRA_CalculatorTest_DEPENDENCIES)
- @rm -f CalculatorTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(CalculatorTest_OBJECTS) $(CalculatorTest_LDADD) $(LIBS)
-
-ColorSpecialTest$(EXEEXT): $(ColorSpecialTest_OBJECTS) $(ColorSpecialTest_DEPENDENCIES) $(EXTRA_ColorSpecialTest_DEPENDENCIES)
- @rm -f ColorSpecialTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(ColorSpecialTest_OBJECTS) $(ColorSpecialTest_LDADD) $(LIBS)
-
-ColorTest$(EXEEXT): $(ColorTest_OBJECTS) $(ColorTest_DEPENDENCIES) $(EXTRA_ColorTest_DEPENDENCIES)
- @rm -f ColorTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(ColorTest_OBJECTS) $(ColorTest_LDADD) $(LIBS)
-
-CommandLineTest$(EXEEXT): $(CommandLineTest_OBJECTS) $(CommandLineTest_DEPENDENCIES) $(EXTRA_CommandLineTest_DEPENDENCIES)
- @rm -f CommandLineTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(CommandLineTest_OBJECTS) $(CommandLineTest_LDADD) $(LIBS)
-
-DVIReaderTest$(EXEEXT): $(DVIReaderTest_OBJECTS) $(DVIReaderTest_DEPENDENCIES) $(EXTRA_DVIReaderTest_DEPENDENCIES)
- @rm -f DVIReaderTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(DVIReaderTest_OBJECTS) $(DVIReaderTest_LDADD) $(LIBS)
-
-DependencyGraphTest$(EXEEXT): $(DependencyGraphTest_OBJECTS) $(DependencyGraphTest_DEPENDENCIES) $(EXTRA_DependencyGraphTest_DEPENDENCIES)
- @rm -f DependencyGraphTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(DependencyGraphTest_OBJECTS) $(DependencyGraphTest_LDADD) $(LIBS)
-
-DirectoryTest$(EXEEXT): $(DirectoryTest_OBJECTS) $(DirectoryTest_DEPENDENCIES) $(EXTRA_DirectoryTest_DEPENDENCIES)
- @rm -f DirectoryTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(DirectoryTest_OBJECTS) $(DirectoryTest_LDADD) $(LIBS)
-
-DvisvgmSpecialTest$(EXEEXT): $(DvisvgmSpecialTest_OBJECTS) $(DvisvgmSpecialTest_DEPENDENCIES) $(EXTRA_DvisvgmSpecialTest_DEPENDENCIES)
- @rm -f DvisvgmSpecialTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(DvisvgmSpecialTest_OBJECTS) $(DvisvgmSpecialTest_LDADD) $(LIBS)
-
-EllipticalArcTest$(EXEEXT): $(EllipticalArcTest_OBJECTS) $(EllipticalArcTest_DEPENDENCIES) $(EXTRA_EllipticalArcTest_DEPENDENCIES)
- @rm -f EllipticalArcTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(EllipticalArcTest_OBJECTS) $(EllipticalArcTest_LDADD) $(LIBS)
-
-EmSpecialTest$(EXEEXT): $(EmSpecialTest_OBJECTS) $(EmSpecialTest_DEPENDENCIES) $(EXTRA_EmSpecialTest_DEPENDENCIES)
- @rm -f EmSpecialTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(EmSpecialTest_OBJECTS) $(EmSpecialTest_LDADD) $(LIBS)
-
-FileFinderTest$(EXEEXT): $(FileFinderTest_OBJECTS) $(FileFinderTest_DEPENDENCIES) $(EXTRA_FileFinderTest_DEPENDENCIES)
- @rm -f FileFinderTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(FileFinderTest_OBJECTS) $(FileFinderTest_LDADD) $(LIBS)
-
-FilePathTest$(EXEEXT): $(FilePathTest_OBJECTS) $(FilePathTest_DEPENDENCIES) $(EXTRA_FilePathTest_DEPENDENCIES)
- @rm -f FilePathTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(FilePathTest_OBJECTS) $(FilePathTest_LDADD) $(LIBS)
-
-FileSystemTest$(EXEEXT): $(FileSystemTest_OBJECTS) $(FileSystemTest_DEPENDENCIES) $(EXTRA_FileSystemTest_DEPENDENCIES)
- @rm -f FileSystemTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(FileSystemTest_OBJECTS) $(FileSystemTest_LDADD) $(LIBS)
-
-FontCacheTest$(EXEEXT): $(FontCacheTest_OBJECTS) $(FontCacheTest_DEPENDENCIES) $(EXTRA_FontCacheTest_DEPENDENCIES)
- @rm -f FontCacheTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(FontCacheTest_OBJECTS) $(FontCacheTest_LDADD) $(LIBS)
-
-FontManagerTest$(EXEEXT): $(FontManagerTest_OBJECTS) $(FontManagerTest_DEPENDENCIES) $(EXTRA_FontManagerTest_DEPENDENCIES)
- @rm -f FontManagerTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(FontManagerTest_OBJECTS) $(FontManagerTest_LDADD) $(LIBS)
-
-FontMapTest$(EXEEXT): $(FontMapTest_OBJECTS) $(FontMapTest_DEPENDENCIES) $(EXTRA_FontMapTest_DEPENDENCIES)
- @rm -f FontMapTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(FontMapTest_OBJECTS) $(FontMapTest_LDADD) $(LIBS)
-
-GFGlyphTracerTest$(EXEEXT): $(GFGlyphTracerTest_OBJECTS) $(GFGlyphTracerTest_DEPENDENCIES) $(EXTRA_GFGlyphTracerTest_DEPENDENCIES)
- @rm -f GFGlyphTracerTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(GFGlyphTracerTest_OBJECTS) $(GFGlyphTracerTest_LDADD) $(LIBS)
-
-GFReaderTest$(EXEEXT): $(GFReaderTest_OBJECTS) $(GFReaderTest_DEPENDENCIES) $(EXTRA_GFReaderTest_DEPENDENCIES)
- @rm -f GFReaderTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(GFReaderTest_OBJECTS) $(GFReaderTest_LDADD) $(LIBS)
-
-GhostscriptTest$(EXEEXT): $(GhostscriptTest_OBJECTS) $(GhostscriptTest_DEPENDENCIES) $(EXTRA_GhostscriptTest_DEPENDENCIES)
- @rm -f GhostscriptTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(GhostscriptTest_OBJECTS) $(GhostscriptTest_LDADD) $(LIBS)
-
-GraphicsPathTest$(EXEEXT): $(GraphicsPathTest_OBJECTS) $(GraphicsPathTest_DEPENDENCIES) $(EXTRA_GraphicsPathTest_DEPENDENCIES)
- @rm -f GraphicsPathTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(GraphicsPathTest_OBJECTS) $(GraphicsPathTest_LDADD) $(LIBS)
-
-HashFunctionTest$(EXEEXT): $(HashFunctionTest_OBJECTS) $(HashFunctionTest_DEPENDENCIES) $(EXTRA_HashFunctionTest_DEPENDENCIES)
- @rm -f HashFunctionTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(HashFunctionTest_OBJECTS) $(HashFunctionTest_LDADD) $(LIBS)
-
-JFMReaderTest$(EXEEXT): $(JFMReaderTest_OBJECTS) $(JFMReaderTest_DEPENDENCIES) $(EXTRA_JFMReaderTest_DEPENDENCIES)
- @rm -f JFMReaderTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(JFMReaderTest_OBJECTS) $(JFMReaderTest_LDADD) $(LIBS)
-
-LengthTest$(EXEEXT): $(LengthTest_OBJECTS) $(LengthTest_DEPENDENCIES) $(EXTRA_LengthTest_DEPENDENCIES)
- @rm -f LengthTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(LengthTest_OBJECTS) $(LengthTest_LDADD) $(LIBS)
-
-MapLineTest$(EXEEXT): $(MapLineTest_OBJECTS) $(MapLineTest_DEPENDENCIES) $(EXTRA_MapLineTest_DEPENDENCIES)
- @rm -f MapLineTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(MapLineTest_OBJECTS) $(MapLineTest_LDADD) $(LIBS)
-
-MatrixTest$(EXEEXT): $(MatrixTest_OBJECTS) $(MatrixTest_DEPENDENCIES) $(EXTRA_MatrixTest_DEPENDENCIES)
- @rm -f MatrixTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(MatrixTest_OBJECTS) $(MatrixTest_LDADD) $(LIBS)
-
-MessageExceptionTest$(EXEEXT): $(MessageExceptionTest_OBJECTS) $(MessageExceptionTest_DEPENDENCIES) $(EXTRA_MessageExceptionTest_DEPENDENCIES)
- @rm -f MessageExceptionTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(MessageExceptionTest_OBJECTS) $(MessageExceptionTest_LDADD) $(LIBS)
-
-PDFParserTest$(EXEEXT): $(PDFParserTest_OBJECTS) $(PDFParserTest_DEPENDENCIES) $(EXTRA_PDFParserTest_DEPENDENCIES)
- @rm -f PDFParserTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(PDFParserTest_OBJECTS) $(PDFParserTest_LDADD) $(LIBS)
-
-PSInterpreterTest$(EXEEXT): $(PSInterpreterTest_OBJECTS) $(PSInterpreterTest_DEPENDENCIES) $(EXTRA_PSInterpreterTest_DEPENDENCIES)
- @rm -f PSInterpreterTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(PSInterpreterTest_OBJECTS) $(PSInterpreterTest_LDADD) $(LIBS)
-
-PageRagesTest$(EXEEXT): $(PageRagesTest_OBJECTS) $(PageRagesTest_DEPENDENCIES) $(EXTRA_PageRagesTest_DEPENDENCIES)
- @rm -f PageRagesTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(PageRagesTest_OBJECTS) $(PageRagesTest_LDADD) $(LIBS)
-
-PageSizeTest$(EXEEXT): $(PageSizeTest_OBJECTS) $(PageSizeTest_DEPENDENCIES) $(EXTRA_PageSizeTest_DEPENDENCIES)
- @rm -f PageSizeTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(PageSizeTest_OBJECTS) $(PageSizeTest_LDADD) $(LIBS)
-
-PairTest$(EXEEXT): $(PairTest_OBJECTS) $(PairTest_DEPENDENCIES) $(EXTRA_PairTest_DEPENDENCIES)
- @rm -f PairTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(PairTest_OBJECTS) $(PairTest_LDADD) $(LIBS)
-
-PapersizeSpecialTest$(EXEEXT): $(PapersizeSpecialTest_OBJECTS) $(PapersizeSpecialTest_DEPENDENCIES) $(EXTRA_PapersizeSpecialTest_DEPENDENCIES)
- @rm -f PapersizeSpecialTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(PapersizeSpecialTest_OBJECTS) $(PapersizeSpecialTest_LDADD) $(LIBS)
-
-RangeMapTest$(EXEEXT): $(RangeMapTest_OBJECTS) $(RangeMapTest_DEPENDENCIES) $(EXTRA_RangeMapTest_DEPENDENCIES)
- @rm -f RangeMapTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(RangeMapTest_OBJECTS) $(RangeMapTest_LDADD) $(LIBS)
-
-SVGOutputTest$(EXEEXT): $(SVGOutputTest_OBJECTS) $(SVGOutputTest_DEPENDENCIES) $(EXTRA_SVGOutputTest_DEPENDENCIES)
- @rm -f SVGOutputTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(SVGOutputTest_OBJECTS) $(SVGOutputTest_LDADD) $(LIBS)
-
-ShadingPatchTest$(EXEEXT): $(ShadingPatchTest_OBJECTS) $(ShadingPatchTest_DEPENDENCIES) $(EXTRA_ShadingPatchTest_DEPENDENCIES)
- @rm -f ShadingPatchTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(ShadingPatchTest_OBJECTS) $(ShadingPatchTest_LDADD) $(LIBS)
-
-SpecialManagerTest$(EXEEXT): $(SpecialManagerTest_OBJECTS) $(SpecialManagerTest_DEPENDENCIES) $(EXTRA_SpecialManagerTest_DEPENDENCIES)
- @rm -f SpecialManagerTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(SpecialManagerTest_OBJECTS) $(SpecialManagerTest_LDADD) $(LIBS)
-
-SplittedCharInputBufferTest$(EXEEXT): $(SplittedCharInputBufferTest_OBJECTS) $(SplittedCharInputBufferTest_DEPENDENCIES) $(EXTRA_SplittedCharInputBufferTest_DEPENDENCIES)
- @rm -f SplittedCharInputBufferTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(SplittedCharInputBufferTest_OBJECTS) $(SplittedCharInputBufferTest_LDADD) $(LIBS)
-
-StreamInputBufferTest$(EXEEXT): $(StreamInputBufferTest_OBJECTS) $(StreamInputBufferTest_DEPENDENCIES) $(EXTRA_StreamInputBufferTest_DEPENDENCIES)
- @rm -f StreamInputBufferTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(StreamInputBufferTest_OBJECTS) $(StreamInputBufferTest_LDADD) $(LIBS)
-
-StreamReaderTest$(EXEEXT): $(StreamReaderTest_OBJECTS) $(StreamReaderTest_DEPENDENCIES) $(EXTRA_StreamReaderTest_DEPENDENCIES)
- @rm -f StreamReaderTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(StreamReaderTest_OBJECTS) $(StreamReaderTest_LDADD) $(LIBS)
-
-StreamWriterTest$(EXEEXT): $(StreamWriterTest_OBJECTS) $(StreamWriterTest_DEPENDENCIES) $(EXTRA_StreamWriterTest_DEPENDENCIES)
- @rm -f StreamWriterTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(StreamWriterTest_OBJECTS) $(StreamWriterTest_LDADD) $(LIBS)
-
-StringMatcherTest$(EXEEXT): $(StringMatcherTest_OBJECTS) $(StringMatcherTest_DEPENDENCIES) $(EXTRA_StringMatcherTest_DEPENDENCIES)
- @rm -f StringMatcherTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(StringMatcherTest_OBJECTS) $(StringMatcherTest_LDADD) $(LIBS)
-
-SubfontTest$(EXEEXT): $(SubfontTest_OBJECTS) $(SubfontTest_DEPENDENCIES) $(EXTRA_SubfontTest_DEPENDENCIES)
- @rm -f SubfontTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(SubfontTest_OBJECTS) $(SubfontTest_LDADD) $(LIBS)
-
-TFMReaderTest$(EXEEXT): $(TFMReaderTest_OBJECTS) $(TFMReaderTest_DEPENDENCIES) $(EXTRA_TFMReaderTest_DEPENDENCIES)
- @rm -f TFMReaderTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(TFMReaderTest_OBJECTS) $(TFMReaderTest_LDADD) $(LIBS)
-
-TensorProductPatchTest$(EXEEXT): $(TensorProductPatchTest_OBJECTS) $(TensorProductPatchTest_DEPENDENCIES) $(EXTRA_TensorProductPatchTest_DEPENDENCIES)
- @rm -f TensorProductPatchTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(TensorProductPatchTest_OBJECTS) $(TensorProductPatchTest_LDADD) $(LIBS)
-
-ToUnicodeMapTest$(EXEEXT): $(ToUnicodeMapTest_OBJECTS) $(ToUnicodeMapTest_DEPENDENCIES) $(EXTRA_ToUnicodeMapTest_DEPENDENCIES)
- @rm -f ToUnicodeMapTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(ToUnicodeMapTest_OBJECTS) $(ToUnicodeMapTest_LDADD) $(LIBS)
-
-TpicSpecialTest$(EXEEXT): $(TpicSpecialTest_OBJECTS) $(TpicSpecialTest_DEPENDENCIES) $(EXTRA_TpicSpecialTest_DEPENDENCIES)
- @rm -f TpicSpecialTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(TpicSpecialTest_OBJECTS) $(TpicSpecialTest_LDADD) $(LIBS)
-
-TriangularPatchTest$(EXEEXT): $(TriangularPatchTest_OBJECTS) $(TriangularPatchTest_DEPENDENCIES) $(EXTRA_TriangularPatchTest_DEPENDENCIES)
- @rm -f TriangularPatchTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(TriangularPatchTest_OBJECTS) $(TriangularPatchTest_LDADD) $(LIBS)
-
-UnicodeTest$(EXEEXT): $(UnicodeTest_OBJECTS) $(UnicodeTest_DEPENDENCIES) $(EXTRA_UnicodeTest_DEPENDENCIES)
- @rm -f UnicodeTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(UnicodeTest_OBJECTS) $(UnicodeTest_LDADD) $(LIBS)
-
-UtilityTest$(EXEEXT): $(UtilityTest_OBJECTS) $(UtilityTest_DEPENDENCIES) $(EXTRA_UtilityTest_DEPENDENCIES)
- @rm -f UtilityTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(UtilityTest_OBJECTS) $(UtilityTest_LDADD) $(LIBS)
-
-VectorIteratorTest$(EXEEXT): $(VectorIteratorTest_OBJECTS) $(VectorIteratorTest_DEPENDENCIES) $(EXTRA_VectorIteratorTest_DEPENDENCIES)
- @rm -f VectorIteratorTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(VectorIteratorTest_OBJECTS) $(VectorIteratorTest_LDADD) $(LIBS)
-
-VectorStreamTest$(EXEEXT): $(VectorStreamTest_OBJECTS) $(VectorStreamTest_DEPENDENCIES) $(EXTRA_VectorStreamTest_DEPENDENCIES)
- @rm -f VectorStreamTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(VectorStreamTest_OBJECTS) $(VectorStreamTest_LDADD) $(LIBS)
-
-XMLNodeTest$(EXEEXT): $(XMLNodeTest_OBJECTS) $(XMLNodeTest_DEPENDENCIES) $(EXTRA_XMLNodeTest_DEPENDENCIES)
- @rm -f XMLNodeTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(XMLNodeTest_OBJECTS) $(XMLNodeTest_LDADD) $(LIBS)
-
-XMLStringTest$(EXEEXT): $(XMLStringTest_OBJECTS) $(XMLStringTest_DEPENDENCIES) $(EXTRA_XMLStringTest_DEPENDENCIES)
- @rm -f XMLStringTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(XMLStringTest_OBJECTS) $(XMLStringTest_LDADD) $(LIBS)
-
-hashcheck$(EXEEXT): $(hashcheck_OBJECTS) $(hashcheck_DEPENDENCIES) $(EXTRA_hashcheck_DEPENDENCIES)
- @rm -f hashcheck$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(hashcheck_OBJECTS) $(hashcheck_LDADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
- -rm -f gtest/src/*.$(OBJEXT)
- -rm -f gtest/src/*.lo
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BezierTest-BezierTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BitmapTest-BitmapTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BoundingBoxTest-BoundingBoxTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CMapManagerTest-CMapManagerTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CMapReaderTest-CMapReaderTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CMapTest-CMapTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CalculatorTest-CalculatorTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ColorSpecialTest-ColorSpecialTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ColorTest-ColorTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CommandLineTest-CommandLineTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DVIReaderTest-DVIReaderTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DependencyGraphTest-DependencyGraphTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DirectoryTest-DirectoryTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DvisvgmSpecialTest-DvisvgmSpecialTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/EllipticalArcTest-EllipticalArcTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/EmSpecialTest-EmSpecialTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FileFinderTest-FileFinderTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FilePathTest-FilePathTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FileSystemTest-FileSystemTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FontCacheTest-FontCacheTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FontManagerTest-FontManagerTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FontMapTest-FontMapTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GFGlyphTracerTest-GFGlyphTracerTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GFReaderTest-GFReaderTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GhostscriptTest-GhostscriptTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GraphicsPathTest-GraphicsPathTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HashFunctionTest-HashFunctionTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/JFMReaderTest-JFMReaderTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LengthTest-LengthTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MapLineTest-MapLineTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatrixTest-MatrixTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MessageExceptionTest-MessageExceptionTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PDFParserTest-PDFParserTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PSInterpreterTest-PSInterpreterTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PageRagesTest-PageRagesTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PageSizeTest-PageSizeTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PairTest-PairTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PapersizeSpecialTest-PapersizeSpecialTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RangeMapTest-RangeMapTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SVGOutputTest-SVGOutputTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ShadingPatchTest-ShadingPatchTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SpecialManagerTest-SpecialManagerTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SplittedCharInputBufferTest-SplittedCharInputBufferTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StreamInputBufferTest-StreamInputBufferTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StreamReaderTest-StreamReaderTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StreamWriterTest-StreamWriterTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StringMatcherTest-StringMatcherTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SubfontTest-SubfontTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TFMReaderTest-TFMReaderTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TensorProductPatchTest-TensorProductPatchTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ToUnicodeMapTest-ToUnicodeMapTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TpicSpecialTest-TpicSpecialTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TriangularPatchTest-TriangularPatchTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnicodeTest-UnicodeTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UtilityTest-UtilityTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VectorIteratorTest-VectorIteratorTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VectorStreamTest-VectorStreamTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XMLNodeTest-XMLNodeTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XMLStringTest-XMLStringTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hashcheck-hashcheck.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgtest_la-testmain.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@gtest/src/$(DEPDIR)/libgtest_la-gtest-all.Plo@am__quote@ # am--include-marker
-
-$(am__depfiles_remade):
- @$(MKDIR_P) $(@D)
- @echo '# dummy' >$@-t && $(am__mv) $@-t $@
-
-am--depfiles: $(am__depfiles_remade)
-
-.cc.o:
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-
-gtest/src/libgtest_la-gtest-all.lo: gtest/src/gtest-all.cc
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgtest_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT gtest/src/libgtest_la-gtest-all.lo -MD -MP -MF gtest/src/$(DEPDIR)/libgtest_la-gtest-all.Tpo -c -o gtest/src/libgtest_la-gtest-all.lo `test -f 'gtest/src/gtest-all.cc' || echo '$(srcdir)/'`gtest/src/gtest-all.cc
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) gtest/src/$(DEPDIR)/libgtest_la-gtest-all.Tpo gtest/src/$(DEPDIR)/libgtest_la-gtest-all.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gtest/src/gtest-all.cc' object='gtest/src/libgtest_la-gtest-all.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgtest_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o gtest/src/libgtest_la-gtest-all.lo `test -f 'gtest/src/gtest-all.cc' || echo '$(srcdir)/'`gtest/src/gtest-all.cc
-
-libgtest_la-testmain.lo: testmain.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgtest_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libgtest_la-testmain.lo -MD -MP -MF $(DEPDIR)/libgtest_la-testmain.Tpo -c -o libgtest_la-testmain.lo `test -f 'testmain.cpp' || echo '$(srcdir)/'`testmain.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgtest_la-testmain.Tpo $(DEPDIR)/libgtest_la-testmain.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='testmain.cpp' object='libgtest_la-testmain.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgtest_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libgtest_la-testmain.lo `test -f 'testmain.cpp' || echo '$(srcdir)/'`testmain.cpp
-
-BezierTest-BezierTest.o: BezierTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(BezierTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT BezierTest-BezierTest.o -MD -MP -MF $(DEPDIR)/BezierTest-BezierTest.Tpo -c -o BezierTest-BezierTest.o `test -f 'BezierTest.cpp' || echo '$(srcdir)/'`BezierTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/BezierTest-BezierTest.Tpo $(DEPDIR)/BezierTest-BezierTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='BezierTest.cpp' object='BezierTest-BezierTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(BezierTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o BezierTest-BezierTest.o `test -f 'BezierTest.cpp' || echo '$(srcdir)/'`BezierTest.cpp
-
-BezierTest-BezierTest.obj: BezierTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(BezierTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT BezierTest-BezierTest.obj -MD -MP -MF $(DEPDIR)/BezierTest-BezierTest.Tpo -c -o BezierTest-BezierTest.obj `if test -f 'BezierTest.cpp'; then $(CYGPATH_W) 'BezierTest.cpp'; else $(CYGPATH_W) '$(srcdir)/BezierTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/BezierTest-BezierTest.Tpo $(DEPDIR)/BezierTest-BezierTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='BezierTest.cpp' object='BezierTest-BezierTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(BezierTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o BezierTest-BezierTest.obj `if test -f 'BezierTest.cpp'; then $(CYGPATH_W) 'BezierTest.cpp'; else $(CYGPATH_W) '$(srcdir)/BezierTest.cpp'; fi`
-
-BitmapTest-BitmapTest.o: BitmapTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(BitmapTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT BitmapTest-BitmapTest.o -MD -MP -MF $(DEPDIR)/BitmapTest-BitmapTest.Tpo -c -o BitmapTest-BitmapTest.o `test -f 'BitmapTest.cpp' || echo '$(srcdir)/'`BitmapTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/BitmapTest-BitmapTest.Tpo $(DEPDIR)/BitmapTest-BitmapTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='BitmapTest.cpp' object='BitmapTest-BitmapTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(BitmapTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o BitmapTest-BitmapTest.o `test -f 'BitmapTest.cpp' || echo '$(srcdir)/'`BitmapTest.cpp
-
-BitmapTest-BitmapTest.obj: BitmapTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(BitmapTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT BitmapTest-BitmapTest.obj -MD -MP -MF $(DEPDIR)/BitmapTest-BitmapTest.Tpo -c -o BitmapTest-BitmapTest.obj `if test -f 'BitmapTest.cpp'; then $(CYGPATH_W) 'BitmapTest.cpp'; else $(CYGPATH_W) '$(srcdir)/BitmapTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/BitmapTest-BitmapTest.Tpo $(DEPDIR)/BitmapTest-BitmapTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='BitmapTest.cpp' object='BitmapTest-BitmapTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(BitmapTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o BitmapTest-BitmapTest.obj `if test -f 'BitmapTest.cpp'; then $(CYGPATH_W) 'BitmapTest.cpp'; else $(CYGPATH_W) '$(srcdir)/BitmapTest.cpp'; fi`
-
-BoundingBoxTest-BoundingBoxTest.o: BoundingBoxTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(BoundingBoxTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT BoundingBoxTest-BoundingBoxTest.o -MD -MP -MF $(DEPDIR)/BoundingBoxTest-BoundingBoxTest.Tpo -c -o BoundingBoxTest-BoundingBoxTest.o `test -f 'BoundingBoxTest.cpp' || echo '$(srcdir)/'`BoundingBoxTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/BoundingBoxTest-BoundingBoxTest.Tpo $(DEPDIR)/BoundingBoxTest-BoundingBoxTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='BoundingBoxTest.cpp' object='BoundingBoxTest-BoundingBoxTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(BoundingBoxTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o BoundingBoxTest-BoundingBoxTest.o `test -f 'BoundingBoxTest.cpp' || echo '$(srcdir)/'`BoundingBoxTest.cpp
-
-BoundingBoxTest-BoundingBoxTest.obj: BoundingBoxTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(BoundingBoxTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT BoundingBoxTest-BoundingBoxTest.obj -MD -MP -MF $(DEPDIR)/BoundingBoxTest-BoundingBoxTest.Tpo -c -o BoundingBoxTest-BoundingBoxTest.obj `if test -f 'BoundingBoxTest.cpp'; then $(CYGPATH_W) 'BoundingBoxTest.cpp'; else $(CYGPATH_W) '$(srcdir)/BoundingBoxTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/BoundingBoxTest-BoundingBoxTest.Tpo $(DEPDIR)/BoundingBoxTest-BoundingBoxTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='BoundingBoxTest.cpp' object='BoundingBoxTest-BoundingBoxTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(BoundingBoxTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o BoundingBoxTest-BoundingBoxTest.obj `if test -f 'BoundingBoxTest.cpp'; then $(CYGPATH_W) 'BoundingBoxTest.cpp'; else $(CYGPATH_W) '$(srcdir)/BoundingBoxTest.cpp'; fi`
-
-CMapManagerTest-CMapManagerTest.o: CMapManagerTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CMapManagerTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CMapManagerTest-CMapManagerTest.o -MD -MP -MF $(DEPDIR)/CMapManagerTest-CMapManagerTest.Tpo -c -o CMapManagerTest-CMapManagerTest.o `test -f 'CMapManagerTest.cpp' || echo '$(srcdir)/'`CMapManagerTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CMapManagerTest-CMapManagerTest.Tpo $(DEPDIR)/CMapManagerTest-CMapManagerTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='CMapManagerTest.cpp' object='CMapManagerTest-CMapManagerTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CMapManagerTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CMapManagerTest-CMapManagerTest.o `test -f 'CMapManagerTest.cpp' || echo '$(srcdir)/'`CMapManagerTest.cpp
-
-CMapManagerTest-CMapManagerTest.obj: CMapManagerTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CMapManagerTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CMapManagerTest-CMapManagerTest.obj -MD -MP -MF $(DEPDIR)/CMapManagerTest-CMapManagerTest.Tpo -c -o CMapManagerTest-CMapManagerTest.obj `if test -f 'CMapManagerTest.cpp'; then $(CYGPATH_W) 'CMapManagerTest.cpp'; else $(CYGPATH_W) '$(srcdir)/CMapManagerTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CMapManagerTest-CMapManagerTest.Tpo $(DEPDIR)/CMapManagerTest-CMapManagerTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='CMapManagerTest.cpp' object='CMapManagerTest-CMapManagerTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CMapManagerTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CMapManagerTest-CMapManagerTest.obj `if test -f 'CMapManagerTest.cpp'; then $(CYGPATH_W) 'CMapManagerTest.cpp'; else $(CYGPATH_W) '$(srcdir)/CMapManagerTest.cpp'; fi`
-
-CMapReaderTest-CMapReaderTest.o: CMapReaderTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CMapReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CMapReaderTest-CMapReaderTest.o -MD -MP -MF $(DEPDIR)/CMapReaderTest-CMapReaderTest.Tpo -c -o CMapReaderTest-CMapReaderTest.o `test -f 'CMapReaderTest.cpp' || echo '$(srcdir)/'`CMapReaderTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CMapReaderTest-CMapReaderTest.Tpo $(DEPDIR)/CMapReaderTest-CMapReaderTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='CMapReaderTest.cpp' object='CMapReaderTest-CMapReaderTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CMapReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CMapReaderTest-CMapReaderTest.o `test -f 'CMapReaderTest.cpp' || echo '$(srcdir)/'`CMapReaderTest.cpp
-
-CMapReaderTest-CMapReaderTest.obj: CMapReaderTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CMapReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CMapReaderTest-CMapReaderTest.obj -MD -MP -MF $(DEPDIR)/CMapReaderTest-CMapReaderTest.Tpo -c -o CMapReaderTest-CMapReaderTest.obj `if test -f 'CMapReaderTest.cpp'; then $(CYGPATH_W) 'CMapReaderTest.cpp'; else $(CYGPATH_W) '$(srcdir)/CMapReaderTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CMapReaderTest-CMapReaderTest.Tpo $(DEPDIR)/CMapReaderTest-CMapReaderTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='CMapReaderTest.cpp' object='CMapReaderTest-CMapReaderTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CMapReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CMapReaderTest-CMapReaderTest.obj `if test -f 'CMapReaderTest.cpp'; then $(CYGPATH_W) 'CMapReaderTest.cpp'; else $(CYGPATH_W) '$(srcdir)/CMapReaderTest.cpp'; fi`
-
-CMapTest-CMapTest.o: CMapTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CMapTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CMapTest-CMapTest.o -MD -MP -MF $(DEPDIR)/CMapTest-CMapTest.Tpo -c -o CMapTest-CMapTest.o `test -f 'CMapTest.cpp' || echo '$(srcdir)/'`CMapTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CMapTest-CMapTest.Tpo $(DEPDIR)/CMapTest-CMapTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='CMapTest.cpp' object='CMapTest-CMapTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CMapTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CMapTest-CMapTest.o `test -f 'CMapTest.cpp' || echo '$(srcdir)/'`CMapTest.cpp
-
-CMapTest-CMapTest.obj: CMapTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CMapTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CMapTest-CMapTest.obj -MD -MP -MF $(DEPDIR)/CMapTest-CMapTest.Tpo -c -o CMapTest-CMapTest.obj `if test -f 'CMapTest.cpp'; then $(CYGPATH_W) 'CMapTest.cpp'; else $(CYGPATH_W) '$(srcdir)/CMapTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CMapTest-CMapTest.Tpo $(DEPDIR)/CMapTest-CMapTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='CMapTest.cpp' object='CMapTest-CMapTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CMapTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CMapTest-CMapTest.obj `if test -f 'CMapTest.cpp'; then $(CYGPATH_W) 'CMapTest.cpp'; else $(CYGPATH_W) '$(srcdir)/CMapTest.cpp'; fi`
-
-CalculatorTest-CalculatorTest.o: CalculatorTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CalculatorTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CalculatorTest-CalculatorTest.o -MD -MP -MF $(DEPDIR)/CalculatorTest-CalculatorTest.Tpo -c -o CalculatorTest-CalculatorTest.o `test -f 'CalculatorTest.cpp' || echo '$(srcdir)/'`CalculatorTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CalculatorTest-CalculatorTest.Tpo $(DEPDIR)/CalculatorTest-CalculatorTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='CalculatorTest.cpp' object='CalculatorTest-CalculatorTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CalculatorTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CalculatorTest-CalculatorTest.o `test -f 'CalculatorTest.cpp' || echo '$(srcdir)/'`CalculatorTest.cpp
-
-CalculatorTest-CalculatorTest.obj: CalculatorTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CalculatorTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CalculatorTest-CalculatorTest.obj -MD -MP -MF $(DEPDIR)/CalculatorTest-CalculatorTest.Tpo -c -o CalculatorTest-CalculatorTest.obj `if test -f 'CalculatorTest.cpp'; then $(CYGPATH_W) 'CalculatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/CalculatorTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CalculatorTest-CalculatorTest.Tpo $(DEPDIR)/CalculatorTest-CalculatorTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='CalculatorTest.cpp' object='CalculatorTest-CalculatorTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CalculatorTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CalculatorTest-CalculatorTest.obj `if test -f 'CalculatorTest.cpp'; then $(CYGPATH_W) 'CalculatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/CalculatorTest.cpp'; fi`
-
-ColorSpecialTest-ColorSpecialTest.o: ColorSpecialTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ColorSpecialTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ColorSpecialTest-ColorSpecialTest.o -MD -MP -MF $(DEPDIR)/ColorSpecialTest-ColorSpecialTest.Tpo -c -o ColorSpecialTest-ColorSpecialTest.o `test -f 'ColorSpecialTest.cpp' || echo '$(srcdir)/'`ColorSpecialTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ColorSpecialTest-ColorSpecialTest.Tpo $(DEPDIR)/ColorSpecialTest-ColorSpecialTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ColorSpecialTest.cpp' object='ColorSpecialTest-ColorSpecialTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ColorSpecialTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ColorSpecialTest-ColorSpecialTest.o `test -f 'ColorSpecialTest.cpp' || echo '$(srcdir)/'`ColorSpecialTest.cpp
-
-ColorSpecialTest-ColorSpecialTest.obj: ColorSpecialTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ColorSpecialTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ColorSpecialTest-ColorSpecialTest.obj -MD -MP -MF $(DEPDIR)/ColorSpecialTest-ColorSpecialTest.Tpo -c -o ColorSpecialTest-ColorSpecialTest.obj `if test -f 'ColorSpecialTest.cpp'; then $(CYGPATH_W) 'ColorSpecialTest.cpp'; else $(CYGPATH_W) '$(srcdir)/ColorSpecialTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ColorSpecialTest-ColorSpecialTest.Tpo $(DEPDIR)/ColorSpecialTest-ColorSpecialTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ColorSpecialTest.cpp' object='ColorSpecialTest-ColorSpecialTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ColorSpecialTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ColorSpecialTest-ColorSpecialTest.obj `if test -f 'ColorSpecialTest.cpp'; then $(CYGPATH_W) 'ColorSpecialTest.cpp'; else $(CYGPATH_W) '$(srcdir)/ColorSpecialTest.cpp'; fi`
-
-ColorTest-ColorTest.o: ColorTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ColorTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ColorTest-ColorTest.o -MD -MP -MF $(DEPDIR)/ColorTest-ColorTest.Tpo -c -o ColorTest-ColorTest.o `test -f 'ColorTest.cpp' || echo '$(srcdir)/'`ColorTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ColorTest-ColorTest.Tpo $(DEPDIR)/ColorTest-ColorTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ColorTest.cpp' object='ColorTest-ColorTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ColorTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ColorTest-ColorTest.o `test -f 'ColorTest.cpp' || echo '$(srcdir)/'`ColorTest.cpp
-
-ColorTest-ColorTest.obj: ColorTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ColorTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ColorTest-ColorTest.obj -MD -MP -MF $(DEPDIR)/ColorTest-ColorTest.Tpo -c -o ColorTest-ColorTest.obj `if test -f 'ColorTest.cpp'; then $(CYGPATH_W) 'ColorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/ColorTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ColorTest-ColorTest.Tpo $(DEPDIR)/ColorTest-ColorTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ColorTest.cpp' object='ColorTest-ColorTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ColorTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ColorTest-ColorTest.obj `if test -f 'ColorTest.cpp'; then $(CYGPATH_W) 'ColorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/ColorTest.cpp'; fi`
-
-CommandLineTest-CommandLineTest.o: CommandLineTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CommandLineTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CommandLineTest-CommandLineTest.o -MD -MP -MF $(DEPDIR)/CommandLineTest-CommandLineTest.Tpo -c -o CommandLineTest-CommandLineTest.o `test -f 'CommandLineTest.cpp' || echo '$(srcdir)/'`CommandLineTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CommandLineTest-CommandLineTest.Tpo $(DEPDIR)/CommandLineTest-CommandLineTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='CommandLineTest.cpp' object='CommandLineTest-CommandLineTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CommandLineTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CommandLineTest-CommandLineTest.o `test -f 'CommandLineTest.cpp' || echo '$(srcdir)/'`CommandLineTest.cpp
-
-CommandLineTest-CommandLineTest.obj: CommandLineTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CommandLineTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CommandLineTest-CommandLineTest.obj -MD -MP -MF $(DEPDIR)/CommandLineTest-CommandLineTest.Tpo -c -o CommandLineTest-CommandLineTest.obj `if test -f 'CommandLineTest.cpp'; then $(CYGPATH_W) 'CommandLineTest.cpp'; else $(CYGPATH_W) '$(srcdir)/CommandLineTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/CommandLineTest-CommandLineTest.Tpo $(DEPDIR)/CommandLineTest-CommandLineTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='CommandLineTest.cpp' object='CommandLineTest-CommandLineTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CommandLineTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CommandLineTest-CommandLineTest.obj `if test -f 'CommandLineTest.cpp'; then $(CYGPATH_W) 'CommandLineTest.cpp'; else $(CYGPATH_W) '$(srcdir)/CommandLineTest.cpp'; fi`
-
-DVIReaderTest-DVIReaderTest.o: DVIReaderTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(DVIReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DVIReaderTest-DVIReaderTest.o -MD -MP -MF $(DEPDIR)/DVIReaderTest-DVIReaderTest.Tpo -c -o DVIReaderTest-DVIReaderTest.o `test -f 'DVIReaderTest.cpp' || echo '$(srcdir)/'`DVIReaderTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/DVIReaderTest-DVIReaderTest.Tpo $(DEPDIR)/DVIReaderTest-DVIReaderTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='DVIReaderTest.cpp' object='DVIReaderTest-DVIReaderTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(DVIReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DVIReaderTest-DVIReaderTest.o `test -f 'DVIReaderTest.cpp' || echo '$(srcdir)/'`DVIReaderTest.cpp
-
-DVIReaderTest-DVIReaderTest.obj: DVIReaderTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(DVIReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DVIReaderTest-DVIReaderTest.obj -MD -MP -MF $(DEPDIR)/DVIReaderTest-DVIReaderTest.Tpo -c -o DVIReaderTest-DVIReaderTest.obj `if test -f 'DVIReaderTest.cpp'; then $(CYGPATH_W) 'DVIReaderTest.cpp'; else $(CYGPATH_W) '$(srcdir)/DVIReaderTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/DVIReaderTest-DVIReaderTest.Tpo $(DEPDIR)/DVIReaderTest-DVIReaderTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='DVIReaderTest.cpp' object='DVIReaderTest-DVIReaderTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(DVIReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DVIReaderTest-DVIReaderTest.obj `if test -f 'DVIReaderTest.cpp'; then $(CYGPATH_W) 'DVIReaderTest.cpp'; else $(CYGPATH_W) '$(srcdir)/DVIReaderTest.cpp'; fi`
-
-DependencyGraphTest-DependencyGraphTest.o: DependencyGraphTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(DependencyGraphTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DependencyGraphTest-DependencyGraphTest.o -MD -MP -MF $(DEPDIR)/DependencyGraphTest-DependencyGraphTest.Tpo -c -o DependencyGraphTest-DependencyGraphTest.o `test -f 'DependencyGraphTest.cpp' || echo '$(srcdir)/'`DependencyGraphTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/DependencyGraphTest-DependencyGraphTest.Tpo $(DEPDIR)/DependencyGraphTest-DependencyGraphTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='DependencyGraphTest.cpp' object='DependencyGraphTest-DependencyGraphTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(DependencyGraphTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DependencyGraphTest-DependencyGraphTest.o `test -f 'DependencyGraphTest.cpp' || echo '$(srcdir)/'`DependencyGraphTest.cpp
-
-DependencyGraphTest-DependencyGraphTest.obj: DependencyGraphTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(DependencyGraphTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DependencyGraphTest-DependencyGraphTest.obj -MD -MP -MF $(DEPDIR)/DependencyGraphTest-DependencyGraphTest.Tpo -c -o DependencyGraphTest-DependencyGraphTest.obj `if test -f 'DependencyGraphTest.cpp'; then $(CYGPATH_W) 'DependencyGraphTest.cpp'; else $(CYGPATH_W) '$(srcdir)/DependencyGraphTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/DependencyGraphTest-DependencyGraphTest.Tpo $(DEPDIR)/DependencyGraphTest-DependencyGraphTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='DependencyGraphTest.cpp' object='DependencyGraphTest-DependencyGraphTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(DependencyGraphTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DependencyGraphTest-DependencyGraphTest.obj `if test -f 'DependencyGraphTest.cpp'; then $(CYGPATH_W) 'DependencyGraphTest.cpp'; else $(CYGPATH_W) '$(srcdir)/DependencyGraphTest.cpp'; fi`
-
-DirectoryTest-DirectoryTest.o: DirectoryTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(DirectoryTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DirectoryTest-DirectoryTest.o -MD -MP -MF $(DEPDIR)/DirectoryTest-DirectoryTest.Tpo -c -o DirectoryTest-DirectoryTest.o `test -f 'DirectoryTest.cpp' || echo '$(srcdir)/'`DirectoryTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/DirectoryTest-DirectoryTest.Tpo $(DEPDIR)/DirectoryTest-DirectoryTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='DirectoryTest.cpp' object='DirectoryTest-DirectoryTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(DirectoryTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DirectoryTest-DirectoryTest.o `test -f 'DirectoryTest.cpp' || echo '$(srcdir)/'`DirectoryTest.cpp
-
-DirectoryTest-DirectoryTest.obj: DirectoryTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(DirectoryTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DirectoryTest-DirectoryTest.obj -MD -MP -MF $(DEPDIR)/DirectoryTest-DirectoryTest.Tpo -c -o DirectoryTest-DirectoryTest.obj `if test -f 'DirectoryTest.cpp'; then $(CYGPATH_W) 'DirectoryTest.cpp'; else $(CYGPATH_W) '$(srcdir)/DirectoryTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/DirectoryTest-DirectoryTest.Tpo $(DEPDIR)/DirectoryTest-DirectoryTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='DirectoryTest.cpp' object='DirectoryTest-DirectoryTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(DirectoryTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DirectoryTest-DirectoryTest.obj `if test -f 'DirectoryTest.cpp'; then $(CYGPATH_W) 'DirectoryTest.cpp'; else $(CYGPATH_W) '$(srcdir)/DirectoryTest.cpp'; fi`
-
-DvisvgmSpecialTest-DvisvgmSpecialTest.o: DvisvgmSpecialTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(DvisvgmSpecialTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DvisvgmSpecialTest-DvisvgmSpecialTest.o -MD -MP -MF $(DEPDIR)/DvisvgmSpecialTest-DvisvgmSpecialTest.Tpo -c -o DvisvgmSpecialTest-DvisvgmSpecialTest.o `test -f 'DvisvgmSpecialTest.cpp' || echo '$(srcdir)/'`DvisvgmSpecialTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/DvisvgmSpecialTest-DvisvgmSpecialTest.Tpo $(DEPDIR)/DvisvgmSpecialTest-DvisvgmSpecialTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='DvisvgmSpecialTest.cpp' object='DvisvgmSpecialTest-DvisvgmSpecialTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(DvisvgmSpecialTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DvisvgmSpecialTest-DvisvgmSpecialTest.o `test -f 'DvisvgmSpecialTest.cpp' || echo '$(srcdir)/'`DvisvgmSpecialTest.cpp
-
-DvisvgmSpecialTest-DvisvgmSpecialTest.obj: DvisvgmSpecialTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(DvisvgmSpecialTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DvisvgmSpecialTest-DvisvgmSpecialTest.obj -MD -MP -MF $(DEPDIR)/DvisvgmSpecialTest-DvisvgmSpecialTest.Tpo -c -o DvisvgmSpecialTest-DvisvgmSpecialTest.obj `if test -f 'DvisvgmSpecialTest.cpp'; then $(CYGPATH_W) 'DvisvgmSpecialTest.cpp'; else $(CYGPATH_W) '$(srcdir)/DvisvgmSpecialTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/DvisvgmSpecialTest-DvisvgmSpecialTest.Tpo $(DEPDIR)/DvisvgmSpecialTest-DvisvgmSpecialTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='DvisvgmSpecialTest.cpp' object='DvisvgmSpecialTest-DvisvgmSpecialTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(DvisvgmSpecialTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DvisvgmSpecialTest-DvisvgmSpecialTest.obj `if test -f 'DvisvgmSpecialTest.cpp'; then $(CYGPATH_W) 'DvisvgmSpecialTest.cpp'; else $(CYGPATH_W) '$(srcdir)/DvisvgmSpecialTest.cpp'; fi`
-
-EllipticalArcTest-EllipticalArcTest.o: EllipticalArcTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(EllipticalArcTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT EllipticalArcTest-EllipticalArcTest.o -MD -MP -MF $(DEPDIR)/EllipticalArcTest-EllipticalArcTest.Tpo -c -o EllipticalArcTest-EllipticalArcTest.o `test -f 'EllipticalArcTest.cpp' || echo '$(srcdir)/'`EllipticalArcTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/EllipticalArcTest-EllipticalArcTest.Tpo $(DEPDIR)/EllipticalArcTest-EllipticalArcTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='EllipticalArcTest.cpp' object='EllipticalArcTest-EllipticalArcTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(EllipticalArcTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o EllipticalArcTest-EllipticalArcTest.o `test -f 'EllipticalArcTest.cpp' || echo '$(srcdir)/'`EllipticalArcTest.cpp
-
-EllipticalArcTest-EllipticalArcTest.obj: EllipticalArcTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(EllipticalArcTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT EllipticalArcTest-EllipticalArcTest.obj -MD -MP -MF $(DEPDIR)/EllipticalArcTest-EllipticalArcTest.Tpo -c -o EllipticalArcTest-EllipticalArcTest.obj `if test -f 'EllipticalArcTest.cpp'; then $(CYGPATH_W) 'EllipticalArcTest.cpp'; else $(CYGPATH_W) '$(srcdir)/EllipticalArcTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/EllipticalArcTest-EllipticalArcTest.Tpo $(DEPDIR)/EllipticalArcTest-EllipticalArcTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='EllipticalArcTest.cpp' object='EllipticalArcTest-EllipticalArcTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(EllipticalArcTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o EllipticalArcTest-EllipticalArcTest.obj `if test -f 'EllipticalArcTest.cpp'; then $(CYGPATH_W) 'EllipticalArcTest.cpp'; else $(CYGPATH_W) '$(srcdir)/EllipticalArcTest.cpp'; fi`
-
-EmSpecialTest-EmSpecialTest.o: EmSpecialTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(EmSpecialTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT EmSpecialTest-EmSpecialTest.o -MD -MP -MF $(DEPDIR)/EmSpecialTest-EmSpecialTest.Tpo -c -o EmSpecialTest-EmSpecialTest.o `test -f 'EmSpecialTest.cpp' || echo '$(srcdir)/'`EmSpecialTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/EmSpecialTest-EmSpecialTest.Tpo $(DEPDIR)/EmSpecialTest-EmSpecialTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='EmSpecialTest.cpp' object='EmSpecialTest-EmSpecialTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(EmSpecialTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o EmSpecialTest-EmSpecialTest.o `test -f 'EmSpecialTest.cpp' || echo '$(srcdir)/'`EmSpecialTest.cpp
-
-EmSpecialTest-EmSpecialTest.obj: EmSpecialTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(EmSpecialTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT EmSpecialTest-EmSpecialTest.obj -MD -MP -MF $(DEPDIR)/EmSpecialTest-EmSpecialTest.Tpo -c -o EmSpecialTest-EmSpecialTest.obj `if test -f 'EmSpecialTest.cpp'; then $(CYGPATH_W) 'EmSpecialTest.cpp'; else $(CYGPATH_W) '$(srcdir)/EmSpecialTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/EmSpecialTest-EmSpecialTest.Tpo $(DEPDIR)/EmSpecialTest-EmSpecialTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='EmSpecialTest.cpp' object='EmSpecialTest-EmSpecialTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(EmSpecialTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o EmSpecialTest-EmSpecialTest.obj `if test -f 'EmSpecialTest.cpp'; then $(CYGPATH_W) 'EmSpecialTest.cpp'; else $(CYGPATH_W) '$(srcdir)/EmSpecialTest.cpp'; fi`
-
-FileFinderTest-FileFinderTest.o: FileFinderTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FileFinderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FileFinderTest-FileFinderTest.o -MD -MP -MF $(DEPDIR)/FileFinderTest-FileFinderTest.Tpo -c -o FileFinderTest-FileFinderTest.o `test -f 'FileFinderTest.cpp' || echo '$(srcdir)/'`FileFinderTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/FileFinderTest-FileFinderTest.Tpo $(DEPDIR)/FileFinderTest-FileFinderTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='FileFinderTest.cpp' object='FileFinderTest-FileFinderTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FileFinderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FileFinderTest-FileFinderTest.o `test -f 'FileFinderTest.cpp' || echo '$(srcdir)/'`FileFinderTest.cpp
-
-FileFinderTest-FileFinderTest.obj: FileFinderTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FileFinderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FileFinderTest-FileFinderTest.obj -MD -MP -MF $(DEPDIR)/FileFinderTest-FileFinderTest.Tpo -c -o FileFinderTest-FileFinderTest.obj `if test -f 'FileFinderTest.cpp'; then $(CYGPATH_W) 'FileFinderTest.cpp'; else $(CYGPATH_W) '$(srcdir)/FileFinderTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/FileFinderTest-FileFinderTest.Tpo $(DEPDIR)/FileFinderTest-FileFinderTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='FileFinderTest.cpp' object='FileFinderTest-FileFinderTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FileFinderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FileFinderTest-FileFinderTest.obj `if test -f 'FileFinderTest.cpp'; then $(CYGPATH_W) 'FileFinderTest.cpp'; else $(CYGPATH_W) '$(srcdir)/FileFinderTest.cpp'; fi`
-
-FilePathTest-FilePathTest.o: FilePathTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FilePathTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FilePathTest-FilePathTest.o -MD -MP -MF $(DEPDIR)/FilePathTest-FilePathTest.Tpo -c -o FilePathTest-FilePathTest.o `test -f 'FilePathTest.cpp' || echo '$(srcdir)/'`FilePathTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/FilePathTest-FilePathTest.Tpo $(DEPDIR)/FilePathTest-FilePathTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='FilePathTest.cpp' object='FilePathTest-FilePathTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FilePathTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FilePathTest-FilePathTest.o `test -f 'FilePathTest.cpp' || echo '$(srcdir)/'`FilePathTest.cpp
-
-FilePathTest-FilePathTest.obj: FilePathTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FilePathTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FilePathTest-FilePathTest.obj -MD -MP -MF $(DEPDIR)/FilePathTest-FilePathTest.Tpo -c -o FilePathTest-FilePathTest.obj `if test -f 'FilePathTest.cpp'; then $(CYGPATH_W) 'FilePathTest.cpp'; else $(CYGPATH_W) '$(srcdir)/FilePathTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/FilePathTest-FilePathTest.Tpo $(DEPDIR)/FilePathTest-FilePathTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='FilePathTest.cpp' object='FilePathTest-FilePathTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FilePathTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FilePathTest-FilePathTest.obj `if test -f 'FilePathTest.cpp'; then $(CYGPATH_W) 'FilePathTest.cpp'; else $(CYGPATH_W) '$(srcdir)/FilePathTest.cpp'; fi`
-
-FileSystemTest-FileSystemTest.o: FileSystemTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FileSystemTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FileSystemTest-FileSystemTest.o -MD -MP -MF $(DEPDIR)/FileSystemTest-FileSystemTest.Tpo -c -o FileSystemTest-FileSystemTest.o `test -f 'FileSystemTest.cpp' || echo '$(srcdir)/'`FileSystemTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/FileSystemTest-FileSystemTest.Tpo $(DEPDIR)/FileSystemTest-FileSystemTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='FileSystemTest.cpp' object='FileSystemTest-FileSystemTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FileSystemTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FileSystemTest-FileSystemTest.o `test -f 'FileSystemTest.cpp' || echo '$(srcdir)/'`FileSystemTest.cpp
-
-FileSystemTest-FileSystemTest.obj: FileSystemTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FileSystemTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FileSystemTest-FileSystemTest.obj -MD -MP -MF $(DEPDIR)/FileSystemTest-FileSystemTest.Tpo -c -o FileSystemTest-FileSystemTest.obj `if test -f 'FileSystemTest.cpp'; then $(CYGPATH_W) 'FileSystemTest.cpp'; else $(CYGPATH_W) '$(srcdir)/FileSystemTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/FileSystemTest-FileSystemTest.Tpo $(DEPDIR)/FileSystemTest-FileSystemTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='FileSystemTest.cpp' object='FileSystemTest-FileSystemTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FileSystemTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FileSystemTest-FileSystemTest.obj `if test -f 'FileSystemTest.cpp'; then $(CYGPATH_W) 'FileSystemTest.cpp'; else $(CYGPATH_W) '$(srcdir)/FileSystemTest.cpp'; fi`
-
-FontCacheTest-FontCacheTest.o: FontCacheTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FontCacheTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FontCacheTest-FontCacheTest.o -MD -MP -MF $(DEPDIR)/FontCacheTest-FontCacheTest.Tpo -c -o FontCacheTest-FontCacheTest.o `test -f 'FontCacheTest.cpp' || echo '$(srcdir)/'`FontCacheTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/FontCacheTest-FontCacheTest.Tpo $(DEPDIR)/FontCacheTest-FontCacheTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='FontCacheTest.cpp' object='FontCacheTest-FontCacheTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FontCacheTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FontCacheTest-FontCacheTest.o `test -f 'FontCacheTest.cpp' || echo '$(srcdir)/'`FontCacheTest.cpp
-
-FontCacheTest-FontCacheTest.obj: FontCacheTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FontCacheTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FontCacheTest-FontCacheTest.obj -MD -MP -MF $(DEPDIR)/FontCacheTest-FontCacheTest.Tpo -c -o FontCacheTest-FontCacheTest.obj `if test -f 'FontCacheTest.cpp'; then $(CYGPATH_W) 'FontCacheTest.cpp'; else $(CYGPATH_W) '$(srcdir)/FontCacheTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/FontCacheTest-FontCacheTest.Tpo $(DEPDIR)/FontCacheTest-FontCacheTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='FontCacheTest.cpp' object='FontCacheTest-FontCacheTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FontCacheTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FontCacheTest-FontCacheTest.obj `if test -f 'FontCacheTest.cpp'; then $(CYGPATH_W) 'FontCacheTest.cpp'; else $(CYGPATH_W) '$(srcdir)/FontCacheTest.cpp'; fi`
-
-FontManagerTest-FontManagerTest.o: FontManagerTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FontManagerTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FontManagerTest-FontManagerTest.o -MD -MP -MF $(DEPDIR)/FontManagerTest-FontManagerTest.Tpo -c -o FontManagerTest-FontManagerTest.o `test -f 'FontManagerTest.cpp' || echo '$(srcdir)/'`FontManagerTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/FontManagerTest-FontManagerTest.Tpo $(DEPDIR)/FontManagerTest-FontManagerTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='FontManagerTest.cpp' object='FontManagerTest-FontManagerTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FontManagerTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FontManagerTest-FontManagerTest.o `test -f 'FontManagerTest.cpp' || echo '$(srcdir)/'`FontManagerTest.cpp
-
-FontManagerTest-FontManagerTest.obj: FontManagerTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FontManagerTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FontManagerTest-FontManagerTest.obj -MD -MP -MF $(DEPDIR)/FontManagerTest-FontManagerTest.Tpo -c -o FontManagerTest-FontManagerTest.obj `if test -f 'FontManagerTest.cpp'; then $(CYGPATH_W) 'FontManagerTest.cpp'; else $(CYGPATH_W) '$(srcdir)/FontManagerTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/FontManagerTest-FontManagerTest.Tpo $(DEPDIR)/FontManagerTest-FontManagerTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='FontManagerTest.cpp' object='FontManagerTest-FontManagerTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FontManagerTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FontManagerTest-FontManagerTest.obj `if test -f 'FontManagerTest.cpp'; then $(CYGPATH_W) 'FontManagerTest.cpp'; else $(CYGPATH_W) '$(srcdir)/FontManagerTest.cpp'; fi`
-
-FontMapTest-FontMapTest.o: FontMapTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FontMapTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FontMapTest-FontMapTest.o -MD -MP -MF $(DEPDIR)/FontMapTest-FontMapTest.Tpo -c -o FontMapTest-FontMapTest.o `test -f 'FontMapTest.cpp' || echo '$(srcdir)/'`FontMapTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/FontMapTest-FontMapTest.Tpo $(DEPDIR)/FontMapTest-FontMapTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='FontMapTest.cpp' object='FontMapTest-FontMapTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FontMapTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FontMapTest-FontMapTest.o `test -f 'FontMapTest.cpp' || echo '$(srcdir)/'`FontMapTest.cpp
-
-FontMapTest-FontMapTest.obj: FontMapTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FontMapTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FontMapTest-FontMapTest.obj -MD -MP -MF $(DEPDIR)/FontMapTest-FontMapTest.Tpo -c -o FontMapTest-FontMapTest.obj `if test -f 'FontMapTest.cpp'; then $(CYGPATH_W) 'FontMapTest.cpp'; else $(CYGPATH_W) '$(srcdir)/FontMapTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/FontMapTest-FontMapTest.Tpo $(DEPDIR)/FontMapTest-FontMapTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='FontMapTest.cpp' object='FontMapTest-FontMapTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FontMapTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FontMapTest-FontMapTest.obj `if test -f 'FontMapTest.cpp'; then $(CYGPATH_W) 'FontMapTest.cpp'; else $(CYGPATH_W) '$(srcdir)/FontMapTest.cpp'; fi`
-
-GFGlyphTracerTest-GFGlyphTracerTest.o: GFGlyphTracerTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(GFGlyphTracerTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GFGlyphTracerTest-GFGlyphTracerTest.o -MD -MP -MF $(DEPDIR)/GFGlyphTracerTest-GFGlyphTracerTest.Tpo -c -o GFGlyphTracerTest-GFGlyphTracerTest.o `test -f 'GFGlyphTracerTest.cpp' || echo '$(srcdir)/'`GFGlyphTracerTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/GFGlyphTracerTest-GFGlyphTracerTest.Tpo $(DEPDIR)/GFGlyphTracerTest-GFGlyphTracerTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='GFGlyphTracerTest.cpp' object='GFGlyphTracerTest-GFGlyphTracerTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(GFGlyphTracerTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GFGlyphTracerTest-GFGlyphTracerTest.o `test -f 'GFGlyphTracerTest.cpp' || echo '$(srcdir)/'`GFGlyphTracerTest.cpp
-
-GFGlyphTracerTest-GFGlyphTracerTest.obj: GFGlyphTracerTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(GFGlyphTracerTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GFGlyphTracerTest-GFGlyphTracerTest.obj -MD -MP -MF $(DEPDIR)/GFGlyphTracerTest-GFGlyphTracerTest.Tpo -c -o GFGlyphTracerTest-GFGlyphTracerTest.obj `if test -f 'GFGlyphTracerTest.cpp'; then $(CYGPATH_W) 'GFGlyphTracerTest.cpp'; else $(CYGPATH_W) '$(srcdir)/GFGlyphTracerTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/GFGlyphTracerTest-GFGlyphTracerTest.Tpo $(DEPDIR)/GFGlyphTracerTest-GFGlyphTracerTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='GFGlyphTracerTest.cpp' object='GFGlyphTracerTest-GFGlyphTracerTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(GFGlyphTracerTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GFGlyphTracerTest-GFGlyphTracerTest.obj `if test -f 'GFGlyphTracerTest.cpp'; then $(CYGPATH_W) 'GFGlyphTracerTest.cpp'; else $(CYGPATH_W) '$(srcdir)/GFGlyphTracerTest.cpp'; fi`
-
-GFReaderTest-GFReaderTest.o: GFReaderTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(GFReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GFReaderTest-GFReaderTest.o -MD -MP -MF $(DEPDIR)/GFReaderTest-GFReaderTest.Tpo -c -o GFReaderTest-GFReaderTest.o `test -f 'GFReaderTest.cpp' || echo '$(srcdir)/'`GFReaderTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/GFReaderTest-GFReaderTest.Tpo $(DEPDIR)/GFReaderTest-GFReaderTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='GFReaderTest.cpp' object='GFReaderTest-GFReaderTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(GFReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GFReaderTest-GFReaderTest.o `test -f 'GFReaderTest.cpp' || echo '$(srcdir)/'`GFReaderTest.cpp
-
-GFReaderTest-GFReaderTest.obj: GFReaderTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(GFReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GFReaderTest-GFReaderTest.obj -MD -MP -MF $(DEPDIR)/GFReaderTest-GFReaderTest.Tpo -c -o GFReaderTest-GFReaderTest.obj `if test -f 'GFReaderTest.cpp'; then $(CYGPATH_W) 'GFReaderTest.cpp'; else $(CYGPATH_W) '$(srcdir)/GFReaderTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/GFReaderTest-GFReaderTest.Tpo $(DEPDIR)/GFReaderTest-GFReaderTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='GFReaderTest.cpp' object='GFReaderTest-GFReaderTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(GFReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GFReaderTest-GFReaderTest.obj `if test -f 'GFReaderTest.cpp'; then $(CYGPATH_W) 'GFReaderTest.cpp'; else $(CYGPATH_W) '$(srcdir)/GFReaderTest.cpp'; fi`
-
-GhostscriptTest-GhostscriptTest.o: GhostscriptTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(GhostscriptTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GhostscriptTest-GhostscriptTest.o -MD -MP -MF $(DEPDIR)/GhostscriptTest-GhostscriptTest.Tpo -c -o GhostscriptTest-GhostscriptTest.o `test -f 'GhostscriptTest.cpp' || echo '$(srcdir)/'`GhostscriptTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/GhostscriptTest-GhostscriptTest.Tpo $(DEPDIR)/GhostscriptTest-GhostscriptTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='GhostscriptTest.cpp' object='GhostscriptTest-GhostscriptTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(GhostscriptTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GhostscriptTest-GhostscriptTest.o `test -f 'GhostscriptTest.cpp' || echo '$(srcdir)/'`GhostscriptTest.cpp
-
-GhostscriptTest-GhostscriptTest.obj: GhostscriptTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(GhostscriptTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GhostscriptTest-GhostscriptTest.obj -MD -MP -MF $(DEPDIR)/GhostscriptTest-GhostscriptTest.Tpo -c -o GhostscriptTest-GhostscriptTest.obj `if test -f 'GhostscriptTest.cpp'; then $(CYGPATH_W) 'GhostscriptTest.cpp'; else $(CYGPATH_W) '$(srcdir)/GhostscriptTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/GhostscriptTest-GhostscriptTest.Tpo $(DEPDIR)/GhostscriptTest-GhostscriptTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='GhostscriptTest.cpp' object='GhostscriptTest-GhostscriptTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(GhostscriptTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GhostscriptTest-GhostscriptTest.obj `if test -f 'GhostscriptTest.cpp'; then $(CYGPATH_W) 'GhostscriptTest.cpp'; else $(CYGPATH_W) '$(srcdir)/GhostscriptTest.cpp'; fi`
-
-GraphicsPathTest-GraphicsPathTest.o: GraphicsPathTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(GraphicsPathTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GraphicsPathTest-GraphicsPathTest.o -MD -MP -MF $(DEPDIR)/GraphicsPathTest-GraphicsPathTest.Tpo -c -o GraphicsPathTest-GraphicsPathTest.o `test -f 'GraphicsPathTest.cpp' || echo '$(srcdir)/'`GraphicsPathTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/GraphicsPathTest-GraphicsPathTest.Tpo $(DEPDIR)/GraphicsPathTest-GraphicsPathTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='GraphicsPathTest.cpp' object='GraphicsPathTest-GraphicsPathTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(GraphicsPathTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GraphicsPathTest-GraphicsPathTest.o `test -f 'GraphicsPathTest.cpp' || echo '$(srcdir)/'`GraphicsPathTest.cpp
-
-GraphicsPathTest-GraphicsPathTest.obj: GraphicsPathTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(GraphicsPathTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GraphicsPathTest-GraphicsPathTest.obj -MD -MP -MF $(DEPDIR)/GraphicsPathTest-GraphicsPathTest.Tpo -c -o GraphicsPathTest-GraphicsPathTest.obj `if test -f 'GraphicsPathTest.cpp'; then $(CYGPATH_W) 'GraphicsPathTest.cpp'; else $(CYGPATH_W) '$(srcdir)/GraphicsPathTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/GraphicsPathTest-GraphicsPathTest.Tpo $(DEPDIR)/GraphicsPathTest-GraphicsPathTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='GraphicsPathTest.cpp' object='GraphicsPathTest-GraphicsPathTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(GraphicsPathTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GraphicsPathTest-GraphicsPathTest.obj `if test -f 'GraphicsPathTest.cpp'; then $(CYGPATH_W) 'GraphicsPathTest.cpp'; else $(CYGPATH_W) '$(srcdir)/GraphicsPathTest.cpp'; fi`
-
-HashFunctionTest-HashFunctionTest.o: HashFunctionTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HashFunctionTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT HashFunctionTest-HashFunctionTest.o -MD -MP -MF $(DEPDIR)/HashFunctionTest-HashFunctionTest.Tpo -c -o HashFunctionTest-HashFunctionTest.o `test -f 'HashFunctionTest.cpp' || echo '$(srcdir)/'`HashFunctionTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/HashFunctionTest-HashFunctionTest.Tpo $(DEPDIR)/HashFunctionTest-HashFunctionTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='HashFunctionTest.cpp' object='HashFunctionTest-HashFunctionTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HashFunctionTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o HashFunctionTest-HashFunctionTest.o `test -f 'HashFunctionTest.cpp' || echo '$(srcdir)/'`HashFunctionTest.cpp
-
-HashFunctionTest-HashFunctionTest.obj: HashFunctionTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HashFunctionTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT HashFunctionTest-HashFunctionTest.obj -MD -MP -MF $(DEPDIR)/HashFunctionTest-HashFunctionTest.Tpo -c -o HashFunctionTest-HashFunctionTest.obj `if test -f 'HashFunctionTest.cpp'; then $(CYGPATH_W) 'HashFunctionTest.cpp'; else $(CYGPATH_W) '$(srcdir)/HashFunctionTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/HashFunctionTest-HashFunctionTest.Tpo $(DEPDIR)/HashFunctionTest-HashFunctionTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='HashFunctionTest.cpp' object='HashFunctionTest-HashFunctionTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HashFunctionTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o HashFunctionTest-HashFunctionTest.obj `if test -f 'HashFunctionTest.cpp'; then $(CYGPATH_W) 'HashFunctionTest.cpp'; else $(CYGPATH_W) '$(srcdir)/HashFunctionTest.cpp'; fi`
-
-JFMReaderTest-JFMReaderTest.o: JFMReaderTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(JFMReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT JFMReaderTest-JFMReaderTest.o -MD -MP -MF $(DEPDIR)/JFMReaderTest-JFMReaderTest.Tpo -c -o JFMReaderTest-JFMReaderTest.o `test -f 'JFMReaderTest.cpp' || echo '$(srcdir)/'`JFMReaderTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/JFMReaderTest-JFMReaderTest.Tpo $(DEPDIR)/JFMReaderTest-JFMReaderTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='JFMReaderTest.cpp' object='JFMReaderTest-JFMReaderTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(JFMReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o JFMReaderTest-JFMReaderTest.o `test -f 'JFMReaderTest.cpp' || echo '$(srcdir)/'`JFMReaderTest.cpp
-
-JFMReaderTest-JFMReaderTest.obj: JFMReaderTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(JFMReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT JFMReaderTest-JFMReaderTest.obj -MD -MP -MF $(DEPDIR)/JFMReaderTest-JFMReaderTest.Tpo -c -o JFMReaderTest-JFMReaderTest.obj `if test -f 'JFMReaderTest.cpp'; then $(CYGPATH_W) 'JFMReaderTest.cpp'; else $(CYGPATH_W) '$(srcdir)/JFMReaderTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/JFMReaderTest-JFMReaderTest.Tpo $(DEPDIR)/JFMReaderTest-JFMReaderTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='JFMReaderTest.cpp' object='JFMReaderTest-JFMReaderTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(JFMReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o JFMReaderTest-JFMReaderTest.obj `if test -f 'JFMReaderTest.cpp'; then $(CYGPATH_W) 'JFMReaderTest.cpp'; else $(CYGPATH_W) '$(srcdir)/JFMReaderTest.cpp'; fi`
-
-LengthTest-LengthTest.o: LengthTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(LengthTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LengthTest-LengthTest.o -MD -MP -MF $(DEPDIR)/LengthTest-LengthTest.Tpo -c -o LengthTest-LengthTest.o `test -f 'LengthTest.cpp' || echo '$(srcdir)/'`LengthTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/LengthTest-LengthTest.Tpo $(DEPDIR)/LengthTest-LengthTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='LengthTest.cpp' object='LengthTest-LengthTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(LengthTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o LengthTest-LengthTest.o `test -f 'LengthTest.cpp' || echo '$(srcdir)/'`LengthTest.cpp
-
-LengthTest-LengthTest.obj: LengthTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(LengthTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LengthTest-LengthTest.obj -MD -MP -MF $(DEPDIR)/LengthTest-LengthTest.Tpo -c -o LengthTest-LengthTest.obj `if test -f 'LengthTest.cpp'; then $(CYGPATH_W) 'LengthTest.cpp'; else $(CYGPATH_W) '$(srcdir)/LengthTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/LengthTest-LengthTest.Tpo $(DEPDIR)/LengthTest-LengthTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='LengthTest.cpp' object='LengthTest-LengthTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(LengthTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o LengthTest-LengthTest.obj `if test -f 'LengthTest.cpp'; then $(CYGPATH_W) 'LengthTest.cpp'; else $(CYGPATH_W) '$(srcdir)/LengthTest.cpp'; fi`
-
-MapLineTest-MapLineTest.o: MapLineTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(MapLineTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MapLineTest-MapLineTest.o -MD -MP -MF $(DEPDIR)/MapLineTest-MapLineTest.Tpo -c -o MapLineTest-MapLineTest.o `test -f 'MapLineTest.cpp' || echo '$(srcdir)/'`MapLineTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/MapLineTest-MapLineTest.Tpo $(DEPDIR)/MapLineTest-MapLineTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='MapLineTest.cpp' object='MapLineTest-MapLineTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(MapLineTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MapLineTest-MapLineTest.o `test -f 'MapLineTest.cpp' || echo '$(srcdir)/'`MapLineTest.cpp
-
-MapLineTest-MapLineTest.obj: MapLineTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(MapLineTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MapLineTest-MapLineTest.obj -MD -MP -MF $(DEPDIR)/MapLineTest-MapLineTest.Tpo -c -o MapLineTest-MapLineTest.obj `if test -f 'MapLineTest.cpp'; then $(CYGPATH_W) 'MapLineTest.cpp'; else $(CYGPATH_W) '$(srcdir)/MapLineTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/MapLineTest-MapLineTest.Tpo $(DEPDIR)/MapLineTest-MapLineTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='MapLineTest.cpp' object='MapLineTest-MapLineTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(MapLineTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MapLineTest-MapLineTest.obj `if test -f 'MapLineTest.cpp'; then $(CYGPATH_W) 'MapLineTest.cpp'; else $(CYGPATH_W) '$(srcdir)/MapLineTest.cpp'; fi`
-
-MatrixTest-MatrixTest.o: MatrixTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(MatrixTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MatrixTest-MatrixTest.o -MD -MP -MF $(DEPDIR)/MatrixTest-MatrixTest.Tpo -c -o MatrixTest-MatrixTest.o `test -f 'MatrixTest.cpp' || echo '$(srcdir)/'`MatrixTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/MatrixTest-MatrixTest.Tpo $(DEPDIR)/MatrixTest-MatrixTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='MatrixTest.cpp' object='MatrixTest-MatrixTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(MatrixTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MatrixTest-MatrixTest.o `test -f 'MatrixTest.cpp' || echo '$(srcdir)/'`MatrixTest.cpp
-
-MatrixTest-MatrixTest.obj: MatrixTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(MatrixTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MatrixTest-MatrixTest.obj -MD -MP -MF $(DEPDIR)/MatrixTest-MatrixTest.Tpo -c -o MatrixTest-MatrixTest.obj `if test -f 'MatrixTest.cpp'; then $(CYGPATH_W) 'MatrixTest.cpp'; else $(CYGPATH_W) '$(srcdir)/MatrixTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/MatrixTest-MatrixTest.Tpo $(DEPDIR)/MatrixTest-MatrixTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='MatrixTest.cpp' object='MatrixTest-MatrixTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(MatrixTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MatrixTest-MatrixTest.obj `if test -f 'MatrixTest.cpp'; then $(CYGPATH_W) 'MatrixTest.cpp'; else $(CYGPATH_W) '$(srcdir)/MatrixTest.cpp'; fi`
-
-MessageExceptionTest-MessageExceptionTest.o: MessageExceptionTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(MessageExceptionTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MessageExceptionTest-MessageExceptionTest.o -MD -MP -MF $(DEPDIR)/MessageExceptionTest-MessageExceptionTest.Tpo -c -o MessageExceptionTest-MessageExceptionTest.o `test -f 'MessageExceptionTest.cpp' || echo '$(srcdir)/'`MessageExceptionTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/MessageExceptionTest-MessageExceptionTest.Tpo $(DEPDIR)/MessageExceptionTest-MessageExceptionTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='MessageExceptionTest.cpp' object='MessageExceptionTest-MessageExceptionTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(MessageExceptionTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MessageExceptionTest-MessageExceptionTest.o `test -f 'MessageExceptionTest.cpp' || echo '$(srcdir)/'`MessageExceptionTest.cpp
-
-MessageExceptionTest-MessageExceptionTest.obj: MessageExceptionTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(MessageExceptionTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MessageExceptionTest-MessageExceptionTest.obj -MD -MP -MF $(DEPDIR)/MessageExceptionTest-MessageExceptionTest.Tpo -c -o MessageExceptionTest-MessageExceptionTest.obj `if test -f 'MessageExceptionTest.cpp'; then $(CYGPATH_W) 'MessageExceptionTest.cpp'; else $(CYGPATH_W) '$(srcdir)/MessageExceptionTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/MessageExceptionTest-MessageExceptionTest.Tpo $(DEPDIR)/MessageExceptionTest-MessageExceptionTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='MessageExceptionTest.cpp' object='MessageExceptionTest-MessageExceptionTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(MessageExceptionTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MessageExceptionTest-MessageExceptionTest.obj `if test -f 'MessageExceptionTest.cpp'; then $(CYGPATH_W) 'MessageExceptionTest.cpp'; else $(CYGPATH_W) '$(srcdir)/MessageExceptionTest.cpp'; fi`
-
-PDFParserTest-PDFParserTest.o: PDFParserTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PDFParserTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PDFParserTest-PDFParserTest.o -MD -MP -MF $(DEPDIR)/PDFParserTest-PDFParserTest.Tpo -c -o PDFParserTest-PDFParserTest.o `test -f 'PDFParserTest.cpp' || echo '$(srcdir)/'`PDFParserTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/PDFParserTest-PDFParserTest.Tpo $(DEPDIR)/PDFParserTest-PDFParserTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='PDFParserTest.cpp' object='PDFParserTest-PDFParserTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PDFParserTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o PDFParserTest-PDFParserTest.o `test -f 'PDFParserTest.cpp' || echo '$(srcdir)/'`PDFParserTest.cpp
-
-PDFParserTest-PDFParserTest.obj: PDFParserTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PDFParserTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PDFParserTest-PDFParserTest.obj -MD -MP -MF $(DEPDIR)/PDFParserTest-PDFParserTest.Tpo -c -o PDFParserTest-PDFParserTest.obj `if test -f 'PDFParserTest.cpp'; then $(CYGPATH_W) 'PDFParserTest.cpp'; else $(CYGPATH_W) '$(srcdir)/PDFParserTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/PDFParserTest-PDFParserTest.Tpo $(DEPDIR)/PDFParserTest-PDFParserTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='PDFParserTest.cpp' object='PDFParserTest-PDFParserTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PDFParserTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o PDFParserTest-PDFParserTest.obj `if test -f 'PDFParserTest.cpp'; then $(CYGPATH_W) 'PDFParserTest.cpp'; else $(CYGPATH_W) '$(srcdir)/PDFParserTest.cpp'; fi`
-
-PSInterpreterTest-PSInterpreterTest.o: PSInterpreterTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PSInterpreterTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PSInterpreterTest-PSInterpreterTest.o -MD -MP -MF $(DEPDIR)/PSInterpreterTest-PSInterpreterTest.Tpo -c -o PSInterpreterTest-PSInterpreterTest.o `test -f 'PSInterpreterTest.cpp' || echo '$(srcdir)/'`PSInterpreterTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/PSInterpreterTest-PSInterpreterTest.Tpo $(DEPDIR)/PSInterpreterTest-PSInterpreterTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='PSInterpreterTest.cpp' object='PSInterpreterTest-PSInterpreterTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PSInterpreterTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o PSInterpreterTest-PSInterpreterTest.o `test -f 'PSInterpreterTest.cpp' || echo '$(srcdir)/'`PSInterpreterTest.cpp
-
-PSInterpreterTest-PSInterpreterTest.obj: PSInterpreterTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PSInterpreterTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PSInterpreterTest-PSInterpreterTest.obj -MD -MP -MF $(DEPDIR)/PSInterpreterTest-PSInterpreterTest.Tpo -c -o PSInterpreterTest-PSInterpreterTest.obj `if test -f 'PSInterpreterTest.cpp'; then $(CYGPATH_W) 'PSInterpreterTest.cpp'; else $(CYGPATH_W) '$(srcdir)/PSInterpreterTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/PSInterpreterTest-PSInterpreterTest.Tpo $(DEPDIR)/PSInterpreterTest-PSInterpreterTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='PSInterpreterTest.cpp' object='PSInterpreterTest-PSInterpreterTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PSInterpreterTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o PSInterpreterTest-PSInterpreterTest.obj `if test -f 'PSInterpreterTest.cpp'; then $(CYGPATH_W) 'PSInterpreterTest.cpp'; else $(CYGPATH_W) '$(srcdir)/PSInterpreterTest.cpp'; fi`
-
-PageRagesTest-PageRagesTest.o: PageRagesTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PageRagesTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PageRagesTest-PageRagesTest.o -MD -MP -MF $(DEPDIR)/PageRagesTest-PageRagesTest.Tpo -c -o PageRagesTest-PageRagesTest.o `test -f 'PageRagesTest.cpp' || echo '$(srcdir)/'`PageRagesTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/PageRagesTest-PageRagesTest.Tpo $(DEPDIR)/PageRagesTest-PageRagesTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='PageRagesTest.cpp' object='PageRagesTest-PageRagesTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PageRagesTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o PageRagesTest-PageRagesTest.o `test -f 'PageRagesTest.cpp' || echo '$(srcdir)/'`PageRagesTest.cpp
-
-PageRagesTest-PageRagesTest.obj: PageRagesTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PageRagesTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PageRagesTest-PageRagesTest.obj -MD -MP -MF $(DEPDIR)/PageRagesTest-PageRagesTest.Tpo -c -o PageRagesTest-PageRagesTest.obj `if test -f 'PageRagesTest.cpp'; then $(CYGPATH_W) 'PageRagesTest.cpp'; else $(CYGPATH_W) '$(srcdir)/PageRagesTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/PageRagesTest-PageRagesTest.Tpo $(DEPDIR)/PageRagesTest-PageRagesTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='PageRagesTest.cpp' object='PageRagesTest-PageRagesTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PageRagesTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o PageRagesTest-PageRagesTest.obj `if test -f 'PageRagesTest.cpp'; then $(CYGPATH_W) 'PageRagesTest.cpp'; else $(CYGPATH_W) '$(srcdir)/PageRagesTest.cpp'; fi`
-
-PageSizeTest-PageSizeTest.o: PageSizeTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PageSizeTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PageSizeTest-PageSizeTest.o -MD -MP -MF $(DEPDIR)/PageSizeTest-PageSizeTest.Tpo -c -o PageSizeTest-PageSizeTest.o `test -f 'PageSizeTest.cpp' || echo '$(srcdir)/'`PageSizeTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/PageSizeTest-PageSizeTest.Tpo $(DEPDIR)/PageSizeTest-PageSizeTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='PageSizeTest.cpp' object='PageSizeTest-PageSizeTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PageSizeTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o PageSizeTest-PageSizeTest.o `test -f 'PageSizeTest.cpp' || echo '$(srcdir)/'`PageSizeTest.cpp
-
-PageSizeTest-PageSizeTest.obj: PageSizeTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PageSizeTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PageSizeTest-PageSizeTest.obj -MD -MP -MF $(DEPDIR)/PageSizeTest-PageSizeTest.Tpo -c -o PageSizeTest-PageSizeTest.obj `if test -f 'PageSizeTest.cpp'; then $(CYGPATH_W) 'PageSizeTest.cpp'; else $(CYGPATH_W) '$(srcdir)/PageSizeTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/PageSizeTest-PageSizeTest.Tpo $(DEPDIR)/PageSizeTest-PageSizeTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='PageSizeTest.cpp' object='PageSizeTest-PageSizeTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PageSizeTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o PageSizeTest-PageSizeTest.obj `if test -f 'PageSizeTest.cpp'; then $(CYGPATH_W) 'PageSizeTest.cpp'; else $(CYGPATH_W) '$(srcdir)/PageSizeTest.cpp'; fi`
-
-PairTest-PairTest.o: PairTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PairTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PairTest-PairTest.o -MD -MP -MF $(DEPDIR)/PairTest-PairTest.Tpo -c -o PairTest-PairTest.o `test -f 'PairTest.cpp' || echo '$(srcdir)/'`PairTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/PairTest-PairTest.Tpo $(DEPDIR)/PairTest-PairTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='PairTest.cpp' object='PairTest-PairTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PairTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o PairTest-PairTest.o `test -f 'PairTest.cpp' || echo '$(srcdir)/'`PairTest.cpp
-
-PairTest-PairTest.obj: PairTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PairTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PairTest-PairTest.obj -MD -MP -MF $(DEPDIR)/PairTest-PairTest.Tpo -c -o PairTest-PairTest.obj `if test -f 'PairTest.cpp'; then $(CYGPATH_W) 'PairTest.cpp'; else $(CYGPATH_W) '$(srcdir)/PairTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/PairTest-PairTest.Tpo $(DEPDIR)/PairTest-PairTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='PairTest.cpp' object='PairTest-PairTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PairTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o PairTest-PairTest.obj `if test -f 'PairTest.cpp'; then $(CYGPATH_W) 'PairTest.cpp'; else $(CYGPATH_W) '$(srcdir)/PairTest.cpp'; fi`
-
-PapersizeSpecialTest-PapersizeSpecialTest.o: PapersizeSpecialTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PapersizeSpecialTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PapersizeSpecialTest-PapersizeSpecialTest.o -MD -MP -MF $(DEPDIR)/PapersizeSpecialTest-PapersizeSpecialTest.Tpo -c -o PapersizeSpecialTest-PapersizeSpecialTest.o `test -f 'PapersizeSpecialTest.cpp' || echo '$(srcdir)/'`PapersizeSpecialTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/PapersizeSpecialTest-PapersizeSpecialTest.Tpo $(DEPDIR)/PapersizeSpecialTest-PapersizeSpecialTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='PapersizeSpecialTest.cpp' object='PapersizeSpecialTest-PapersizeSpecialTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PapersizeSpecialTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o PapersizeSpecialTest-PapersizeSpecialTest.o `test -f 'PapersizeSpecialTest.cpp' || echo '$(srcdir)/'`PapersizeSpecialTest.cpp
-
-PapersizeSpecialTest-PapersizeSpecialTest.obj: PapersizeSpecialTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PapersizeSpecialTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PapersizeSpecialTest-PapersizeSpecialTest.obj -MD -MP -MF $(DEPDIR)/PapersizeSpecialTest-PapersizeSpecialTest.Tpo -c -o PapersizeSpecialTest-PapersizeSpecialTest.obj `if test -f 'PapersizeSpecialTest.cpp'; then $(CYGPATH_W) 'PapersizeSpecialTest.cpp'; else $(CYGPATH_W) '$(srcdir)/PapersizeSpecialTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/PapersizeSpecialTest-PapersizeSpecialTest.Tpo $(DEPDIR)/PapersizeSpecialTest-PapersizeSpecialTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='PapersizeSpecialTest.cpp' object='PapersizeSpecialTest-PapersizeSpecialTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(PapersizeSpecialTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o PapersizeSpecialTest-PapersizeSpecialTest.obj `if test -f 'PapersizeSpecialTest.cpp'; then $(CYGPATH_W) 'PapersizeSpecialTest.cpp'; else $(CYGPATH_W) '$(srcdir)/PapersizeSpecialTest.cpp'; fi`
-
-RangeMapTest-RangeMapTest.o: RangeMapTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(RangeMapTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT RangeMapTest-RangeMapTest.o -MD -MP -MF $(DEPDIR)/RangeMapTest-RangeMapTest.Tpo -c -o RangeMapTest-RangeMapTest.o `test -f 'RangeMapTest.cpp' || echo '$(srcdir)/'`RangeMapTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/RangeMapTest-RangeMapTest.Tpo $(DEPDIR)/RangeMapTest-RangeMapTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='RangeMapTest.cpp' object='RangeMapTest-RangeMapTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(RangeMapTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o RangeMapTest-RangeMapTest.o `test -f 'RangeMapTest.cpp' || echo '$(srcdir)/'`RangeMapTest.cpp
-
-RangeMapTest-RangeMapTest.obj: RangeMapTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(RangeMapTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT RangeMapTest-RangeMapTest.obj -MD -MP -MF $(DEPDIR)/RangeMapTest-RangeMapTest.Tpo -c -o RangeMapTest-RangeMapTest.obj `if test -f 'RangeMapTest.cpp'; then $(CYGPATH_W) 'RangeMapTest.cpp'; else $(CYGPATH_W) '$(srcdir)/RangeMapTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/RangeMapTest-RangeMapTest.Tpo $(DEPDIR)/RangeMapTest-RangeMapTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='RangeMapTest.cpp' object='RangeMapTest-RangeMapTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(RangeMapTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o RangeMapTest-RangeMapTest.obj `if test -f 'RangeMapTest.cpp'; then $(CYGPATH_W) 'RangeMapTest.cpp'; else $(CYGPATH_W) '$(srcdir)/RangeMapTest.cpp'; fi`
-
-SVGOutputTest-SVGOutputTest.o: SVGOutputTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(SVGOutputTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SVGOutputTest-SVGOutputTest.o -MD -MP -MF $(DEPDIR)/SVGOutputTest-SVGOutputTest.Tpo -c -o SVGOutputTest-SVGOutputTest.o `test -f 'SVGOutputTest.cpp' || echo '$(srcdir)/'`SVGOutputTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/SVGOutputTest-SVGOutputTest.Tpo $(DEPDIR)/SVGOutputTest-SVGOutputTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='SVGOutputTest.cpp' object='SVGOutputTest-SVGOutputTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(SVGOutputTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SVGOutputTest-SVGOutputTest.o `test -f 'SVGOutputTest.cpp' || echo '$(srcdir)/'`SVGOutputTest.cpp
-
-SVGOutputTest-SVGOutputTest.obj: SVGOutputTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(SVGOutputTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SVGOutputTest-SVGOutputTest.obj -MD -MP -MF $(DEPDIR)/SVGOutputTest-SVGOutputTest.Tpo -c -o SVGOutputTest-SVGOutputTest.obj `if test -f 'SVGOutputTest.cpp'; then $(CYGPATH_W) 'SVGOutputTest.cpp'; else $(CYGPATH_W) '$(srcdir)/SVGOutputTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/SVGOutputTest-SVGOutputTest.Tpo $(DEPDIR)/SVGOutputTest-SVGOutputTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='SVGOutputTest.cpp' object='SVGOutputTest-SVGOutputTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(SVGOutputTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SVGOutputTest-SVGOutputTest.obj `if test -f 'SVGOutputTest.cpp'; then $(CYGPATH_W) 'SVGOutputTest.cpp'; else $(CYGPATH_W) '$(srcdir)/SVGOutputTest.cpp'; fi`
-
-ShadingPatchTest-ShadingPatchTest.o: ShadingPatchTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ShadingPatchTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ShadingPatchTest-ShadingPatchTest.o -MD -MP -MF $(DEPDIR)/ShadingPatchTest-ShadingPatchTest.Tpo -c -o ShadingPatchTest-ShadingPatchTest.o `test -f 'ShadingPatchTest.cpp' || echo '$(srcdir)/'`ShadingPatchTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ShadingPatchTest-ShadingPatchTest.Tpo $(DEPDIR)/ShadingPatchTest-ShadingPatchTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ShadingPatchTest.cpp' object='ShadingPatchTest-ShadingPatchTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ShadingPatchTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ShadingPatchTest-ShadingPatchTest.o `test -f 'ShadingPatchTest.cpp' || echo '$(srcdir)/'`ShadingPatchTest.cpp
-
-ShadingPatchTest-ShadingPatchTest.obj: ShadingPatchTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ShadingPatchTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ShadingPatchTest-ShadingPatchTest.obj -MD -MP -MF $(DEPDIR)/ShadingPatchTest-ShadingPatchTest.Tpo -c -o ShadingPatchTest-ShadingPatchTest.obj `if test -f 'ShadingPatchTest.cpp'; then $(CYGPATH_W) 'ShadingPatchTest.cpp'; else $(CYGPATH_W) '$(srcdir)/ShadingPatchTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ShadingPatchTest-ShadingPatchTest.Tpo $(DEPDIR)/ShadingPatchTest-ShadingPatchTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ShadingPatchTest.cpp' object='ShadingPatchTest-ShadingPatchTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ShadingPatchTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ShadingPatchTest-ShadingPatchTest.obj `if test -f 'ShadingPatchTest.cpp'; then $(CYGPATH_W) 'ShadingPatchTest.cpp'; else $(CYGPATH_W) '$(srcdir)/ShadingPatchTest.cpp'; fi`
-
-SpecialManagerTest-SpecialManagerTest.o: SpecialManagerTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(SpecialManagerTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SpecialManagerTest-SpecialManagerTest.o -MD -MP -MF $(DEPDIR)/SpecialManagerTest-SpecialManagerTest.Tpo -c -o SpecialManagerTest-SpecialManagerTest.o `test -f 'SpecialManagerTest.cpp' || echo '$(srcdir)/'`SpecialManagerTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/SpecialManagerTest-SpecialManagerTest.Tpo $(DEPDIR)/SpecialManagerTest-SpecialManagerTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='SpecialManagerTest.cpp' object='SpecialManagerTest-SpecialManagerTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(SpecialManagerTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SpecialManagerTest-SpecialManagerTest.o `test -f 'SpecialManagerTest.cpp' || echo '$(srcdir)/'`SpecialManagerTest.cpp
-
-SpecialManagerTest-SpecialManagerTest.obj: SpecialManagerTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(SpecialManagerTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SpecialManagerTest-SpecialManagerTest.obj -MD -MP -MF $(DEPDIR)/SpecialManagerTest-SpecialManagerTest.Tpo -c -o SpecialManagerTest-SpecialManagerTest.obj `if test -f 'SpecialManagerTest.cpp'; then $(CYGPATH_W) 'SpecialManagerTest.cpp'; else $(CYGPATH_W) '$(srcdir)/SpecialManagerTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/SpecialManagerTest-SpecialManagerTest.Tpo $(DEPDIR)/SpecialManagerTest-SpecialManagerTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='SpecialManagerTest.cpp' object='SpecialManagerTest-SpecialManagerTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(SpecialManagerTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SpecialManagerTest-SpecialManagerTest.obj `if test -f 'SpecialManagerTest.cpp'; then $(CYGPATH_W) 'SpecialManagerTest.cpp'; else $(CYGPATH_W) '$(srcdir)/SpecialManagerTest.cpp'; fi`
-
-SplittedCharInputBufferTest-SplittedCharInputBufferTest.o: SplittedCharInputBufferTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(SplittedCharInputBufferTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SplittedCharInputBufferTest-SplittedCharInputBufferTest.o -MD -MP -MF $(DEPDIR)/SplittedCharInputBufferTest-SplittedCharInputBufferTest.Tpo -c -o SplittedCharInputBufferTest-SplittedCharInputBufferTest.o `test -f 'SplittedCharInputBufferTest.cpp' || echo '$(srcdir)/'`SplittedCharInputBufferTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/SplittedCharInputBufferTest-SplittedCharInputBufferTest.Tpo $(DEPDIR)/SplittedCharInputBufferTest-SplittedCharInputBufferTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='SplittedCharInputBufferTest.cpp' object='SplittedCharInputBufferTest-SplittedCharInputBufferTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(SplittedCharInputBufferTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SplittedCharInputBufferTest-SplittedCharInputBufferTest.o `test -f 'SplittedCharInputBufferTest.cpp' || echo '$(srcdir)/'`SplittedCharInputBufferTest.cpp
-
-SplittedCharInputBufferTest-SplittedCharInputBufferTest.obj: SplittedCharInputBufferTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(SplittedCharInputBufferTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SplittedCharInputBufferTest-SplittedCharInputBufferTest.obj -MD -MP -MF $(DEPDIR)/SplittedCharInputBufferTest-SplittedCharInputBufferTest.Tpo -c -o SplittedCharInputBufferTest-SplittedCharInputBufferTest.obj `if test -f 'SplittedCharInputBufferTest.cpp'; then $(CYGPATH_W) 'SplittedCharInputBufferTest.cpp'; else $(CYGPATH_W) '$(srcdir)/SplittedCharInputBufferTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/SplittedCharInputBufferTest-SplittedCharInputBufferTest.Tpo $(DEPDIR)/SplittedCharInputBufferTest-SplittedCharInputBufferTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='SplittedCharInputBufferTest.cpp' object='SplittedCharInputBufferTest-SplittedCharInputBufferTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(SplittedCharInputBufferTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SplittedCharInputBufferTest-SplittedCharInputBufferTest.obj `if test -f 'SplittedCharInputBufferTest.cpp'; then $(CYGPATH_W) 'SplittedCharInputBufferTest.cpp'; else $(CYGPATH_W) '$(srcdir)/SplittedCharInputBufferTest.cpp'; fi`
-
-StreamInputBufferTest-StreamInputBufferTest.o: StreamInputBufferTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(StreamInputBufferTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT StreamInputBufferTest-StreamInputBufferTest.o -MD -MP -MF $(DEPDIR)/StreamInputBufferTest-StreamInputBufferTest.Tpo -c -o StreamInputBufferTest-StreamInputBufferTest.o `test -f 'StreamInputBufferTest.cpp' || echo '$(srcdir)/'`StreamInputBufferTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/StreamInputBufferTest-StreamInputBufferTest.Tpo $(DEPDIR)/StreamInputBufferTest-StreamInputBufferTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='StreamInputBufferTest.cpp' object='StreamInputBufferTest-StreamInputBufferTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(StreamInputBufferTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o StreamInputBufferTest-StreamInputBufferTest.o `test -f 'StreamInputBufferTest.cpp' || echo '$(srcdir)/'`StreamInputBufferTest.cpp
-
-StreamInputBufferTest-StreamInputBufferTest.obj: StreamInputBufferTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(StreamInputBufferTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT StreamInputBufferTest-StreamInputBufferTest.obj -MD -MP -MF $(DEPDIR)/StreamInputBufferTest-StreamInputBufferTest.Tpo -c -o StreamInputBufferTest-StreamInputBufferTest.obj `if test -f 'StreamInputBufferTest.cpp'; then $(CYGPATH_W) 'StreamInputBufferTest.cpp'; else $(CYGPATH_W) '$(srcdir)/StreamInputBufferTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/StreamInputBufferTest-StreamInputBufferTest.Tpo $(DEPDIR)/StreamInputBufferTest-StreamInputBufferTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='StreamInputBufferTest.cpp' object='StreamInputBufferTest-StreamInputBufferTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(StreamInputBufferTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o StreamInputBufferTest-StreamInputBufferTest.obj `if test -f 'StreamInputBufferTest.cpp'; then $(CYGPATH_W) 'StreamInputBufferTest.cpp'; else $(CYGPATH_W) '$(srcdir)/StreamInputBufferTest.cpp'; fi`
-
-StreamReaderTest-StreamReaderTest.o: StreamReaderTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(StreamReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT StreamReaderTest-StreamReaderTest.o -MD -MP -MF $(DEPDIR)/StreamReaderTest-StreamReaderTest.Tpo -c -o StreamReaderTest-StreamReaderTest.o `test -f 'StreamReaderTest.cpp' || echo '$(srcdir)/'`StreamReaderTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/StreamReaderTest-StreamReaderTest.Tpo $(DEPDIR)/StreamReaderTest-StreamReaderTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='StreamReaderTest.cpp' object='StreamReaderTest-StreamReaderTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(StreamReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o StreamReaderTest-StreamReaderTest.o `test -f 'StreamReaderTest.cpp' || echo '$(srcdir)/'`StreamReaderTest.cpp
-
-StreamReaderTest-StreamReaderTest.obj: StreamReaderTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(StreamReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT StreamReaderTest-StreamReaderTest.obj -MD -MP -MF $(DEPDIR)/StreamReaderTest-StreamReaderTest.Tpo -c -o StreamReaderTest-StreamReaderTest.obj `if test -f 'StreamReaderTest.cpp'; then $(CYGPATH_W) 'StreamReaderTest.cpp'; else $(CYGPATH_W) '$(srcdir)/StreamReaderTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/StreamReaderTest-StreamReaderTest.Tpo $(DEPDIR)/StreamReaderTest-StreamReaderTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='StreamReaderTest.cpp' object='StreamReaderTest-StreamReaderTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(StreamReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o StreamReaderTest-StreamReaderTest.obj `if test -f 'StreamReaderTest.cpp'; then $(CYGPATH_W) 'StreamReaderTest.cpp'; else $(CYGPATH_W) '$(srcdir)/StreamReaderTest.cpp'; fi`
-
-StreamWriterTest-StreamWriterTest.o: StreamWriterTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(StreamWriterTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT StreamWriterTest-StreamWriterTest.o -MD -MP -MF $(DEPDIR)/StreamWriterTest-StreamWriterTest.Tpo -c -o StreamWriterTest-StreamWriterTest.o `test -f 'StreamWriterTest.cpp' || echo '$(srcdir)/'`StreamWriterTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/StreamWriterTest-StreamWriterTest.Tpo $(DEPDIR)/StreamWriterTest-StreamWriterTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='StreamWriterTest.cpp' object='StreamWriterTest-StreamWriterTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(StreamWriterTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o StreamWriterTest-StreamWriterTest.o `test -f 'StreamWriterTest.cpp' || echo '$(srcdir)/'`StreamWriterTest.cpp
-
-StreamWriterTest-StreamWriterTest.obj: StreamWriterTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(StreamWriterTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT StreamWriterTest-StreamWriterTest.obj -MD -MP -MF $(DEPDIR)/StreamWriterTest-StreamWriterTest.Tpo -c -o StreamWriterTest-StreamWriterTest.obj `if test -f 'StreamWriterTest.cpp'; then $(CYGPATH_W) 'StreamWriterTest.cpp'; else $(CYGPATH_W) '$(srcdir)/StreamWriterTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/StreamWriterTest-StreamWriterTest.Tpo $(DEPDIR)/StreamWriterTest-StreamWriterTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='StreamWriterTest.cpp' object='StreamWriterTest-StreamWriterTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(StreamWriterTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o StreamWriterTest-StreamWriterTest.obj `if test -f 'StreamWriterTest.cpp'; then $(CYGPATH_W) 'StreamWriterTest.cpp'; else $(CYGPATH_W) '$(srcdir)/StreamWriterTest.cpp'; fi`
-
-StringMatcherTest-StringMatcherTest.o: StringMatcherTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(StringMatcherTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT StringMatcherTest-StringMatcherTest.o -MD -MP -MF $(DEPDIR)/StringMatcherTest-StringMatcherTest.Tpo -c -o StringMatcherTest-StringMatcherTest.o `test -f 'StringMatcherTest.cpp' || echo '$(srcdir)/'`StringMatcherTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/StringMatcherTest-StringMatcherTest.Tpo $(DEPDIR)/StringMatcherTest-StringMatcherTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='StringMatcherTest.cpp' object='StringMatcherTest-StringMatcherTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(StringMatcherTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o StringMatcherTest-StringMatcherTest.o `test -f 'StringMatcherTest.cpp' || echo '$(srcdir)/'`StringMatcherTest.cpp
-
-StringMatcherTest-StringMatcherTest.obj: StringMatcherTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(StringMatcherTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT StringMatcherTest-StringMatcherTest.obj -MD -MP -MF $(DEPDIR)/StringMatcherTest-StringMatcherTest.Tpo -c -o StringMatcherTest-StringMatcherTest.obj `if test -f 'StringMatcherTest.cpp'; then $(CYGPATH_W) 'StringMatcherTest.cpp'; else $(CYGPATH_W) '$(srcdir)/StringMatcherTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/StringMatcherTest-StringMatcherTest.Tpo $(DEPDIR)/StringMatcherTest-StringMatcherTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='StringMatcherTest.cpp' object='StringMatcherTest-StringMatcherTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(StringMatcherTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o StringMatcherTest-StringMatcherTest.obj `if test -f 'StringMatcherTest.cpp'; then $(CYGPATH_W) 'StringMatcherTest.cpp'; else $(CYGPATH_W) '$(srcdir)/StringMatcherTest.cpp'; fi`
-
-SubfontTest-SubfontTest.o: SubfontTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(SubfontTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SubfontTest-SubfontTest.o -MD -MP -MF $(DEPDIR)/SubfontTest-SubfontTest.Tpo -c -o SubfontTest-SubfontTest.o `test -f 'SubfontTest.cpp' || echo '$(srcdir)/'`SubfontTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/SubfontTest-SubfontTest.Tpo $(DEPDIR)/SubfontTest-SubfontTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='SubfontTest.cpp' object='SubfontTest-SubfontTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(SubfontTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SubfontTest-SubfontTest.o `test -f 'SubfontTest.cpp' || echo '$(srcdir)/'`SubfontTest.cpp
-
-SubfontTest-SubfontTest.obj: SubfontTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(SubfontTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SubfontTest-SubfontTest.obj -MD -MP -MF $(DEPDIR)/SubfontTest-SubfontTest.Tpo -c -o SubfontTest-SubfontTest.obj `if test -f 'SubfontTest.cpp'; then $(CYGPATH_W) 'SubfontTest.cpp'; else $(CYGPATH_W) '$(srcdir)/SubfontTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/SubfontTest-SubfontTest.Tpo $(DEPDIR)/SubfontTest-SubfontTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='SubfontTest.cpp' object='SubfontTest-SubfontTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(SubfontTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SubfontTest-SubfontTest.obj `if test -f 'SubfontTest.cpp'; then $(CYGPATH_W) 'SubfontTest.cpp'; else $(CYGPATH_W) '$(srcdir)/SubfontTest.cpp'; fi`
-
-TFMReaderTest-TFMReaderTest.o: TFMReaderTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(TFMReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT TFMReaderTest-TFMReaderTest.o -MD -MP -MF $(DEPDIR)/TFMReaderTest-TFMReaderTest.Tpo -c -o TFMReaderTest-TFMReaderTest.o `test -f 'TFMReaderTest.cpp' || echo '$(srcdir)/'`TFMReaderTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/TFMReaderTest-TFMReaderTest.Tpo $(DEPDIR)/TFMReaderTest-TFMReaderTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='TFMReaderTest.cpp' object='TFMReaderTest-TFMReaderTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(TFMReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o TFMReaderTest-TFMReaderTest.o `test -f 'TFMReaderTest.cpp' || echo '$(srcdir)/'`TFMReaderTest.cpp
-
-TFMReaderTest-TFMReaderTest.obj: TFMReaderTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(TFMReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT TFMReaderTest-TFMReaderTest.obj -MD -MP -MF $(DEPDIR)/TFMReaderTest-TFMReaderTest.Tpo -c -o TFMReaderTest-TFMReaderTest.obj `if test -f 'TFMReaderTest.cpp'; then $(CYGPATH_W) 'TFMReaderTest.cpp'; else $(CYGPATH_W) '$(srcdir)/TFMReaderTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/TFMReaderTest-TFMReaderTest.Tpo $(DEPDIR)/TFMReaderTest-TFMReaderTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='TFMReaderTest.cpp' object='TFMReaderTest-TFMReaderTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(TFMReaderTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o TFMReaderTest-TFMReaderTest.obj `if test -f 'TFMReaderTest.cpp'; then $(CYGPATH_W) 'TFMReaderTest.cpp'; else $(CYGPATH_W) '$(srcdir)/TFMReaderTest.cpp'; fi`
-
-TensorProductPatchTest-TensorProductPatchTest.o: TensorProductPatchTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(TensorProductPatchTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT TensorProductPatchTest-TensorProductPatchTest.o -MD -MP -MF $(DEPDIR)/TensorProductPatchTest-TensorProductPatchTest.Tpo -c -o TensorProductPatchTest-TensorProductPatchTest.o `test -f 'TensorProductPatchTest.cpp' || echo '$(srcdir)/'`TensorProductPatchTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/TensorProductPatchTest-TensorProductPatchTest.Tpo $(DEPDIR)/TensorProductPatchTest-TensorProductPatchTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='TensorProductPatchTest.cpp' object='TensorProductPatchTest-TensorProductPatchTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(TensorProductPatchTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o TensorProductPatchTest-TensorProductPatchTest.o `test -f 'TensorProductPatchTest.cpp' || echo '$(srcdir)/'`TensorProductPatchTest.cpp
-
-TensorProductPatchTest-TensorProductPatchTest.obj: TensorProductPatchTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(TensorProductPatchTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT TensorProductPatchTest-TensorProductPatchTest.obj -MD -MP -MF $(DEPDIR)/TensorProductPatchTest-TensorProductPatchTest.Tpo -c -o TensorProductPatchTest-TensorProductPatchTest.obj `if test -f 'TensorProductPatchTest.cpp'; then $(CYGPATH_W) 'TensorProductPatchTest.cpp'; else $(CYGPATH_W) '$(srcdir)/TensorProductPatchTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/TensorProductPatchTest-TensorProductPatchTest.Tpo $(DEPDIR)/TensorProductPatchTest-TensorProductPatchTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='TensorProductPatchTest.cpp' object='TensorProductPatchTest-TensorProductPatchTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(TensorProductPatchTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o TensorProductPatchTest-TensorProductPatchTest.obj `if test -f 'TensorProductPatchTest.cpp'; then $(CYGPATH_W) 'TensorProductPatchTest.cpp'; else $(CYGPATH_W) '$(srcdir)/TensorProductPatchTest.cpp'; fi`
-
-ToUnicodeMapTest-ToUnicodeMapTest.o: ToUnicodeMapTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ToUnicodeMapTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ToUnicodeMapTest-ToUnicodeMapTest.o -MD -MP -MF $(DEPDIR)/ToUnicodeMapTest-ToUnicodeMapTest.Tpo -c -o ToUnicodeMapTest-ToUnicodeMapTest.o `test -f 'ToUnicodeMapTest.cpp' || echo '$(srcdir)/'`ToUnicodeMapTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ToUnicodeMapTest-ToUnicodeMapTest.Tpo $(DEPDIR)/ToUnicodeMapTest-ToUnicodeMapTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ToUnicodeMapTest.cpp' object='ToUnicodeMapTest-ToUnicodeMapTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ToUnicodeMapTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ToUnicodeMapTest-ToUnicodeMapTest.o `test -f 'ToUnicodeMapTest.cpp' || echo '$(srcdir)/'`ToUnicodeMapTest.cpp
-
-ToUnicodeMapTest-ToUnicodeMapTest.obj: ToUnicodeMapTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ToUnicodeMapTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ToUnicodeMapTest-ToUnicodeMapTest.obj -MD -MP -MF $(DEPDIR)/ToUnicodeMapTest-ToUnicodeMapTest.Tpo -c -o ToUnicodeMapTest-ToUnicodeMapTest.obj `if test -f 'ToUnicodeMapTest.cpp'; then $(CYGPATH_W) 'ToUnicodeMapTest.cpp'; else $(CYGPATH_W) '$(srcdir)/ToUnicodeMapTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ToUnicodeMapTest-ToUnicodeMapTest.Tpo $(DEPDIR)/ToUnicodeMapTest-ToUnicodeMapTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ToUnicodeMapTest.cpp' object='ToUnicodeMapTest-ToUnicodeMapTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ToUnicodeMapTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ToUnicodeMapTest-ToUnicodeMapTest.obj `if test -f 'ToUnicodeMapTest.cpp'; then $(CYGPATH_W) 'ToUnicodeMapTest.cpp'; else $(CYGPATH_W) '$(srcdir)/ToUnicodeMapTest.cpp'; fi`
-
-TpicSpecialTest-TpicSpecialTest.o: TpicSpecialTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(TpicSpecialTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT TpicSpecialTest-TpicSpecialTest.o -MD -MP -MF $(DEPDIR)/TpicSpecialTest-TpicSpecialTest.Tpo -c -o TpicSpecialTest-TpicSpecialTest.o `test -f 'TpicSpecialTest.cpp' || echo '$(srcdir)/'`TpicSpecialTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/TpicSpecialTest-TpicSpecialTest.Tpo $(DEPDIR)/TpicSpecialTest-TpicSpecialTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='TpicSpecialTest.cpp' object='TpicSpecialTest-TpicSpecialTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(TpicSpecialTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o TpicSpecialTest-TpicSpecialTest.o `test -f 'TpicSpecialTest.cpp' || echo '$(srcdir)/'`TpicSpecialTest.cpp
-
-TpicSpecialTest-TpicSpecialTest.obj: TpicSpecialTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(TpicSpecialTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT TpicSpecialTest-TpicSpecialTest.obj -MD -MP -MF $(DEPDIR)/TpicSpecialTest-TpicSpecialTest.Tpo -c -o TpicSpecialTest-TpicSpecialTest.obj `if test -f 'TpicSpecialTest.cpp'; then $(CYGPATH_W) 'TpicSpecialTest.cpp'; else $(CYGPATH_W) '$(srcdir)/TpicSpecialTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/TpicSpecialTest-TpicSpecialTest.Tpo $(DEPDIR)/TpicSpecialTest-TpicSpecialTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='TpicSpecialTest.cpp' object='TpicSpecialTest-TpicSpecialTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(TpicSpecialTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o TpicSpecialTest-TpicSpecialTest.obj `if test -f 'TpicSpecialTest.cpp'; then $(CYGPATH_W) 'TpicSpecialTest.cpp'; else $(CYGPATH_W) '$(srcdir)/TpicSpecialTest.cpp'; fi`
-
-TriangularPatchTest-TriangularPatchTest.o: TriangularPatchTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(TriangularPatchTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT TriangularPatchTest-TriangularPatchTest.o -MD -MP -MF $(DEPDIR)/TriangularPatchTest-TriangularPatchTest.Tpo -c -o TriangularPatchTest-TriangularPatchTest.o `test -f 'TriangularPatchTest.cpp' || echo '$(srcdir)/'`TriangularPatchTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/TriangularPatchTest-TriangularPatchTest.Tpo $(DEPDIR)/TriangularPatchTest-TriangularPatchTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='TriangularPatchTest.cpp' object='TriangularPatchTest-TriangularPatchTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(TriangularPatchTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o TriangularPatchTest-TriangularPatchTest.o `test -f 'TriangularPatchTest.cpp' || echo '$(srcdir)/'`TriangularPatchTest.cpp
-
-TriangularPatchTest-TriangularPatchTest.obj: TriangularPatchTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(TriangularPatchTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT TriangularPatchTest-TriangularPatchTest.obj -MD -MP -MF $(DEPDIR)/TriangularPatchTest-TriangularPatchTest.Tpo -c -o TriangularPatchTest-TriangularPatchTest.obj `if test -f 'TriangularPatchTest.cpp'; then $(CYGPATH_W) 'TriangularPatchTest.cpp'; else $(CYGPATH_W) '$(srcdir)/TriangularPatchTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/TriangularPatchTest-TriangularPatchTest.Tpo $(DEPDIR)/TriangularPatchTest-TriangularPatchTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='TriangularPatchTest.cpp' object='TriangularPatchTest-TriangularPatchTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(TriangularPatchTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o TriangularPatchTest-TriangularPatchTest.obj `if test -f 'TriangularPatchTest.cpp'; then $(CYGPATH_W) 'TriangularPatchTest.cpp'; else $(CYGPATH_W) '$(srcdir)/TriangularPatchTest.cpp'; fi`
-
-UnicodeTest-UnicodeTest.o: UnicodeTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnicodeTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UnicodeTest-UnicodeTest.o -MD -MP -MF $(DEPDIR)/UnicodeTest-UnicodeTest.Tpo -c -o UnicodeTest-UnicodeTest.o `test -f 'UnicodeTest.cpp' || echo '$(srcdir)/'`UnicodeTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/UnicodeTest-UnicodeTest.Tpo $(DEPDIR)/UnicodeTest-UnicodeTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='UnicodeTest.cpp' object='UnicodeTest-UnicodeTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnicodeTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnicodeTest-UnicodeTest.o `test -f 'UnicodeTest.cpp' || echo '$(srcdir)/'`UnicodeTest.cpp
-
-UnicodeTest-UnicodeTest.obj: UnicodeTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnicodeTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UnicodeTest-UnicodeTest.obj -MD -MP -MF $(DEPDIR)/UnicodeTest-UnicodeTest.Tpo -c -o UnicodeTest-UnicodeTest.obj `if test -f 'UnicodeTest.cpp'; then $(CYGPATH_W) 'UnicodeTest.cpp'; else $(CYGPATH_W) '$(srcdir)/UnicodeTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/UnicodeTest-UnicodeTest.Tpo $(DEPDIR)/UnicodeTest-UnicodeTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='UnicodeTest.cpp' object='UnicodeTest-UnicodeTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnicodeTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnicodeTest-UnicodeTest.obj `if test -f 'UnicodeTest.cpp'; then $(CYGPATH_W) 'UnicodeTest.cpp'; else $(CYGPATH_W) '$(srcdir)/UnicodeTest.cpp'; fi`
-
-UtilityTest-UtilityTest.o: UtilityTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UtilityTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UtilityTest-UtilityTest.o -MD -MP -MF $(DEPDIR)/UtilityTest-UtilityTest.Tpo -c -o UtilityTest-UtilityTest.o `test -f 'UtilityTest.cpp' || echo '$(srcdir)/'`UtilityTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/UtilityTest-UtilityTest.Tpo $(DEPDIR)/UtilityTest-UtilityTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='UtilityTest.cpp' object='UtilityTest-UtilityTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UtilityTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UtilityTest-UtilityTest.o `test -f 'UtilityTest.cpp' || echo '$(srcdir)/'`UtilityTest.cpp
-
-UtilityTest-UtilityTest.obj: UtilityTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UtilityTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UtilityTest-UtilityTest.obj -MD -MP -MF $(DEPDIR)/UtilityTest-UtilityTest.Tpo -c -o UtilityTest-UtilityTest.obj `if test -f 'UtilityTest.cpp'; then $(CYGPATH_W) 'UtilityTest.cpp'; else $(CYGPATH_W) '$(srcdir)/UtilityTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/UtilityTest-UtilityTest.Tpo $(DEPDIR)/UtilityTest-UtilityTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='UtilityTest.cpp' object='UtilityTest-UtilityTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UtilityTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UtilityTest-UtilityTest.obj `if test -f 'UtilityTest.cpp'; then $(CYGPATH_W) 'UtilityTest.cpp'; else $(CYGPATH_W) '$(srcdir)/UtilityTest.cpp'; fi`
-
-VectorIteratorTest-VectorIteratorTest.o: VectorIteratorTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(VectorIteratorTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT VectorIteratorTest-VectorIteratorTest.o -MD -MP -MF $(DEPDIR)/VectorIteratorTest-VectorIteratorTest.Tpo -c -o VectorIteratorTest-VectorIteratorTest.o `test -f 'VectorIteratorTest.cpp' || echo '$(srcdir)/'`VectorIteratorTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/VectorIteratorTest-VectorIteratorTest.Tpo $(DEPDIR)/VectorIteratorTest-VectorIteratorTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='VectorIteratorTest.cpp' object='VectorIteratorTest-VectorIteratorTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(VectorIteratorTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o VectorIteratorTest-VectorIteratorTest.o `test -f 'VectorIteratorTest.cpp' || echo '$(srcdir)/'`VectorIteratorTest.cpp
-
-VectorIteratorTest-VectorIteratorTest.obj: VectorIteratorTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(VectorIteratorTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT VectorIteratorTest-VectorIteratorTest.obj -MD -MP -MF $(DEPDIR)/VectorIteratorTest-VectorIteratorTest.Tpo -c -o VectorIteratorTest-VectorIteratorTest.obj `if test -f 'VectorIteratorTest.cpp'; then $(CYGPATH_W) 'VectorIteratorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/VectorIteratorTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/VectorIteratorTest-VectorIteratorTest.Tpo $(DEPDIR)/VectorIteratorTest-VectorIteratorTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='VectorIteratorTest.cpp' object='VectorIteratorTest-VectorIteratorTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(VectorIteratorTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o VectorIteratorTest-VectorIteratorTest.obj `if test -f 'VectorIteratorTest.cpp'; then $(CYGPATH_W) 'VectorIteratorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/VectorIteratorTest.cpp'; fi`
-
-VectorStreamTest-VectorStreamTest.o: VectorStreamTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(VectorStreamTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT VectorStreamTest-VectorStreamTest.o -MD -MP -MF $(DEPDIR)/VectorStreamTest-VectorStreamTest.Tpo -c -o VectorStreamTest-VectorStreamTest.o `test -f 'VectorStreamTest.cpp' || echo '$(srcdir)/'`VectorStreamTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/VectorStreamTest-VectorStreamTest.Tpo $(DEPDIR)/VectorStreamTest-VectorStreamTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='VectorStreamTest.cpp' object='VectorStreamTest-VectorStreamTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(VectorStreamTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o VectorStreamTest-VectorStreamTest.o `test -f 'VectorStreamTest.cpp' || echo '$(srcdir)/'`VectorStreamTest.cpp
-
-VectorStreamTest-VectorStreamTest.obj: VectorStreamTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(VectorStreamTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT VectorStreamTest-VectorStreamTest.obj -MD -MP -MF $(DEPDIR)/VectorStreamTest-VectorStreamTest.Tpo -c -o VectorStreamTest-VectorStreamTest.obj `if test -f 'VectorStreamTest.cpp'; then $(CYGPATH_W) 'VectorStreamTest.cpp'; else $(CYGPATH_W) '$(srcdir)/VectorStreamTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/VectorStreamTest-VectorStreamTest.Tpo $(DEPDIR)/VectorStreamTest-VectorStreamTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='VectorStreamTest.cpp' object='VectorStreamTest-VectorStreamTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(VectorStreamTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o VectorStreamTest-VectorStreamTest.obj `if test -f 'VectorStreamTest.cpp'; then $(CYGPATH_W) 'VectorStreamTest.cpp'; else $(CYGPATH_W) '$(srcdir)/VectorStreamTest.cpp'; fi`
-
-XMLNodeTest-XMLNodeTest.o: XMLNodeTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(XMLNodeTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XMLNodeTest-XMLNodeTest.o -MD -MP -MF $(DEPDIR)/XMLNodeTest-XMLNodeTest.Tpo -c -o XMLNodeTest-XMLNodeTest.o `test -f 'XMLNodeTest.cpp' || echo '$(srcdir)/'`XMLNodeTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/XMLNodeTest-XMLNodeTest.Tpo $(DEPDIR)/XMLNodeTest-XMLNodeTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='XMLNodeTest.cpp' object='XMLNodeTest-XMLNodeTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(XMLNodeTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XMLNodeTest-XMLNodeTest.o `test -f 'XMLNodeTest.cpp' || echo '$(srcdir)/'`XMLNodeTest.cpp
-
-XMLNodeTest-XMLNodeTest.obj: XMLNodeTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(XMLNodeTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XMLNodeTest-XMLNodeTest.obj -MD -MP -MF $(DEPDIR)/XMLNodeTest-XMLNodeTest.Tpo -c -o XMLNodeTest-XMLNodeTest.obj `if test -f 'XMLNodeTest.cpp'; then $(CYGPATH_W) 'XMLNodeTest.cpp'; else $(CYGPATH_W) '$(srcdir)/XMLNodeTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/XMLNodeTest-XMLNodeTest.Tpo $(DEPDIR)/XMLNodeTest-XMLNodeTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='XMLNodeTest.cpp' object='XMLNodeTest-XMLNodeTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(XMLNodeTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XMLNodeTest-XMLNodeTest.obj `if test -f 'XMLNodeTest.cpp'; then $(CYGPATH_W) 'XMLNodeTest.cpp'; else $(CYGPATH_W) '$(srcdir)/XMLNodeTest.cpp'; fi`
-
-XMLStringTest-XMLStringTest.o: XMLStringTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(XMLStringTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XMLStringTest-XMLStringTest.o -MD -MP -MF $(DEPDIR)/XMLStringTest-XMLStringTest.Tpo -c -o XMLStringTest-XMLStringTest.o `test -f 'XMLStringTest.cpp' || echo '$(srcdir)/'`XMLStringTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/XMLStringTest-XMLStringTest.Tpo $(DEPDIR)/XMLStringTest-XMLStringTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='XMLStringTest.cpp' object='XMLStringTest-XMLStringTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(XMLStringTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XMLStringTest-XMLStringTest.o `test -f 'XMLStringTest.cpp' || echo '$(srcdir)/'`XMLStringTest.cpp
-
-XMLStringTest-XMLStringTest.obj: XMLStringTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(XMLStringTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XMLStringTest-XMLStringTest.obj -MD -MP -MF $(DEPDIR)/XMLStringTest-XMLStringTest.Tpo -c -o XMLStringTest-XMLStringTest.obj `if test -f 'XMLStringTest.cpp'; then $(CYGPATH_W) 'XMLStringTest.cpp'; else $(CYGPATH_W) '$(srcdir)/XMLStringTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/XMLStringTest-XMLStringTest.Tpo $(DEPDIR)/XMLStringTest-XMLStringTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='XMLStringTest.cpp' object='XMLStringTest-XMLStringTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(XMLStringTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XMLStringTest-XMLStringTest.obj `if test -f 'XMLStringTest.cpp'; then $(CYGPATH_W) 'XMLStringTest.cpp'; else $(CYGPATH_W) '$(srcdir)/XMLStringTest.cpp'; fi`
-
-hashcheck-hashcheck.o: hashcheck.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hashcheck_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT hashcheck-hashcheck.o -MD -MP -MF $(DEPDIR)/hashcheck-hashcheck.Tpo -c -o hashcheck-hashcheck.o `test -f 'hashcheck.cpp' || echo '$(srcdir)/'`hashcheck.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/hashcheck-hashcheck.Tpo $(DEPDIR)/hashcheck-hashcheck.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hashcheck.cpp' object='hashcheck-hashcheck.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hashcheck_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o hashcheck-hashcheck.o `test -f 'hashcheck.cpp' || echo '$(srcdir)/'`hashcheck.cpp
-
-hashcheck-hashcheck.obj: hashcheck.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hashcheck_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT hashcheck-hashcheck.obj -MD -MP -MF $(DEPDIR)/hashcheck-hashcheck.Tpo -c -o hashcheck-hashcheck.obj `if test -f 'hashcheck.cpp'; then $(CYGPATH_W) 'hashcheck.cpp'; else $(CYGPATH_W) '$(srcdir)/hashcheck.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/hashcheck-hashcheck.Tpo $(DEPDIR)/hashcheck-hashcheck.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='hashcheck.cpp' object='hashcheck-hashcheck.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hashcheck_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o hashcheck-hashcheck.obj `if test -f 'hashcheck.cpp'; then $(CYGPATH_W) 'hashcheck.cpp'; else $(CYGPATH_W) '$(srcdir)/hashcheck.cpp'; fi`
-
-.cpp.o:
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
-
-.cpp.obj:
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cpp.lo:
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
- -rm -rf gtest/src/.libs gtest/src/_libs
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run 'make' without going through this Makefile.
-# To change the values of 'make' variables: instead of editing Makefiles,
-# (1) if the variable is set in 'config.status', edit 'config.status'
-# (which will cause the Makefiles to be regenerated when you run 'make');
-# (2) otherwise, pass the desired values on the 'make' command line.
-$(am__recursive_targets):
- @fail=; \
- if $(am__make_keepgoing); then \
- failcom='fail=yes'; \
- else \
- failcom='exit 1'; \
- fi; \
- dot_seen=no; \
- target=`echo $@ | sed s/-recursive//`; \
- case "$@" in \
- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
- *) list='$(SUBDIRS)' ;; \
- esac; \
- for subdir in $$list; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- dot_seen=yes; \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done; \
- if test "$$dot_seen" = "no"; then \
- $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
- fi; test -z "$$fail"
-
-ID: $(am__tagged_files)
- $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-recursive
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- set x; \
- here=`pwd`; \
- if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
- include_option=--etags-include; \
- empty_fix=.; \
- else \
- include_option=--include; \
- empty_fix=; \
- fi; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test ! -f $$subdir/TAGS || \
- set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
- fi; \
- done; \
- $(am__define_uniq_tagged_files); \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: ctags-recursive
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- $(am__define_uniq_tagged_files); \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-recursive
-
-cscopelist-am: $(am__tagged_files)
- list='$(am__tagged_files)'; \
- case "$(srcdir)" in \
- [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
- *) sdir=$(subdir)/$(srcdir) ;; \
- esac; \
- for i in $$list; do \
- if test -f "$$i"; then \
- echo "$(subdir)/$$i"; \
- else \
- echo "$$sdir/$$i"; \
- fi; \
- done >> $(top_builddir)/cscope.files
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-# Recover from deleted '.trs' file; this should ensure that
-# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
-# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
-# to avoid problems with "make -n".
-.log.trs:
- rm -f $< $@
- $(MAKE) $(AM_MAKEFLAGS) $<
-
-# Leading 'am--fnord' is there to ensure the list of targets does not
-# expand to empty, as could happen e.g. with make check TESTS=''.
-am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
-am--force-recheck:
- @:
-
-$(TEST_SUITE_LOG): $(TEST_LOGS)
- @$(am__set_TESTS_bases); \
- am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
- redo_bases=`for i in $$bases; do \
- am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
- done`; \
- if test -n "$$redo_bases"; then \
- redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
- redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
- if $(am__make_dryrun); then :; else \
- rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
- fi; \
- fi; \
- if test -n "$$am__remaking_logs"; then \
- echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
- "recursion detected" >&2; \
- elif test -n "$$redo_logs"; then \
- am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
- fi; \
- if $(am__make_dryrun); then :; else \
- st=0; \
- errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
- for i in $$redo_bases; do \
- test -f $$i.trs && test -r $$i.trs \
- || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
- test -f $$i.log && test -r $$i.log \
- || { echo "$$errmsg $$i.log" >&2; st=1; }; \
- done; \
- test $$st -eq 0 || exit 1; \
- fi
- @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
- ws='[ ]'; \
- results=`for b in $$bases; do echo $$b.trs; done`; \
- test -n "$$results" || results=/dev/null; \
- all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
- pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
- fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
- skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
- xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
- xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
- error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
- if test `expr $$fail + $$xpass + $$error` -eq 0; then \
- success=true; \
- else \
- success=false; \
- fi; \
- br='==================='; br=$$br$$br$$br$$br; \
- result_count () \
- { \
- if test x"$$1" = x"--maybe-color"; then \
- maybe_colorize=yes; \
- elif test x"$$1" = x"--no-color"; then \
- maybe_colorize=no; \
- else \
- echo "$@: invalid 'result_count' usage" >&2; exit 4; \
- fi; \
- shift; \
- desc=$$1 count=$$2; \
- if test $$maybe_colorize = yes && test $$count -gt 0; then \
- color_start=$$3 color_end=$$std; \
- else \
- color_start= color_end=; \
- fi; \
- echo "$${color_start}# $$desc $$count$${color_end}"; \
- }; \
- create_testsuite_report () \
- { \
- result_count $$1 "TOTAL:" $$all "$$brg"; \
- result_count $$1 "PASS: " $$pass "$$grn"; \
- result_count $$1 "SKIP: " $$skip "$$blu"; \
- result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
- result_count $$1 "FAIL: " $$fail "$$red"; \
- result_count $$1 "XPASS:" $$xpass "$$red"; \
- result_count $$1 "ERROR:" $$error "$$mgn"; \
- }; \
- { \
- echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
- $(am__rst_title); \
- create_testsuite_report --no-color; \
- echo; \
- echo ".. contents:: :depth: 2"; \
- echo; \
- for b in $$bases; do echo $$b; done \
- | $(am__create_global_log); \
- } >$(TEST_SUITE_LOG).tmp || exit 1; \
- mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
- if $$success; then \
- col="$$grn"; \
- else \
- col="$$red"; \
- test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
- fi; \
- echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
- echo "$${col}$$br$${std}"; \
- create_testsuite_report --maybe-color; \
- echo "$$col$$br$$std"; \
- if $$success; then :; else \
- echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
- if test -n "$(PACKAGE_BUGREPORT)"; then \
- echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
- fi; \
- echo "$$col$$br$$std"; \
- fi; \
- $$success || exit 1
-
-check-TESTS: $(check_PROGRAMS) $(check_LTLIBRARIES)
- @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
- @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
- @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
- @set +e; $(am__set_TESTS_bases); \
- log_list=`for i in $$bases; do echo $$i.log; done`; \
- trs_list=`for i in $$bases; do echo $$i.trs; done`; \
- log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
- $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
- exit $$?;
-recheck: all $(check_PROGRAMS) $(check_LTLIBRARIES)
- @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
- @set +e; $(am__set_TESTS_bases); \
- bases=`for i in $$bases; do echo $$i; done \
- | $(am__list_recheck_tests)` || exit 1; \
- log_list=`for i in $$bases; do echo $$i.log; done`; \
- log_list=`echo $$log_list`; \
- $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
- am__force_recheck=am--force-recheck \
- TEST_LOGS="$$log_list"; \
- exit $$?
-hashcheck.log: hashcheck$(EXEEXT)
- @p='hashcheck$(EXEEXT)'; \
- b='hashcheck'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-BezierTest.log: BezierTest$(EXEEXT)
- @p='BezierTest$(EXEEXT)'; \
- b='BezierTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-BitmapTest.log: BitmapTest$(EXEEXT)
- @p='BitmapTest$(EXEEXT)'; \
- b='BitmapTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-BoundingBoxTest.log: BoundingBoxTest$(EXEEXT)
- @p='BoundingBoxTest$(EXEEXT)'; \
- b='BoundingBoxTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-CalculatorTest.log: CalculatorTest$(EXEEXT)
- @p='CalculatorTest$(EXEEXT)'; \
- b='CalculatorTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-CMapManagerTest.log: CMapManagerTest$(EXEEXT)
- @p='CMapManagerTest$(EXEEXT)'; \
- b='CMapManagerTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-CMapReaderTest.log: CMapReaderTest$(EXEEXT)
- @p='CMapReaderTest$(EXEEXT)'; \
- b='CMapReaderTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-CMapTest.log: CMapTest$(EXEEXT)
- @p='CMapTest$(EXEEXT)'; \
- b='CMapTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-ColorSpecialTest.log: ColorSpecialTest$(EXEEXT)
- @p='ColorSpecialTest$(EXEEXT)'; \
- b='ColorSpecialTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-ColorTest.log: ColorTest$(EXEEXT)
- @p='ColorTest$(EXEEXT)'; \
- b='ColorTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-CommandLineTest.log: CommandLineTest$(EXEEXT)
- @p='CommandLineTest$(EXEEXT)'; \
- b='CommandLineTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-DependencyGraphTest.log: DependencyGraphTest$(EXEEXT)
- @p='DependencyGraphTest$(EXEEXT)'; \
- b='DependencyGraphTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-DirectoryTest.log: DirectoryTest$(EXEEXT)
- @p='DirectoryTest$(EXEEXT)'; \
- b='DirectoryTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-DVIReaderTest.log: DVIReaderTest$(EXEEXT)
- @p='DVIReaderTest$(EXEEXT)'; \
- b='DVIReaderTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-DvisvgmSpecialTest.log: DvisvgmSpecialTest$(EXEEXT)
- @p='DvisvgmSpecialTest$(EXEEXT)'; \
- b='DvisvgmSpecialTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-EllipticalArcTest.log: EllipticalArcTest$(EXEEXT)
- @p='EllipticalArcTest$(EXEEXT)'; \
- b='EllipticalArcTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-EmSpecialTest.log: EmSpecialTest$(EXEEXT)
- @p='EmSpecialTest$(EXEEXT)'; \
- b='EmSpecialTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-FileFinderTest.log: FileFinderTest$(EXEEXT)
- @p='FileFinderTest$(EXEEXT)'; \
- b='FileFinderTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-FilePathTest.log: FilePathTest$(EXEEXT)
- @p='FilePathTest$(EXEEXT)'; \
- b='FilePathTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-FileSystemTest.log: FileSystemTest$(EXEEXT)
- @p='FileSystemTest$(EXEEXT)'; \
- b='FileSystemTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-FontCacheTest.log: FontCacheTest$(EXEEXT)
- @p='FontCacheTest$(EXEEXT)'; \
- b='FontCacheTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-FontManagerTest.log: FontManagerTest$(EXEEXT)
- @p='FontManagerTest$(EXEEXT)'; \
- b='FontManagerTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-FontMapTest.log: FontMapTest$(EXEEXT)
- @p='FontMapTest$(EXEEXT)'; \
- b='FontMapTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-GFGlyphTracerTest.log: GFGlyphTracerTest$(EXEEXT)
- @p='GFGlyphTracerTest$(EXEEXT)'; \
- b='GFGlyphTracerTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-GFReaderTest.log: GFReaderTest$(EXEEXT)
- @p='GFReaderTest$(EXEEXT)'; \
- b='GFReaderTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-GhostscriptTest.log: GhostscriptTest$(EXEEXT)
- @p='GhostscriptTest$(EXEEXT)'; \
- b='GhostscriptTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-GraphicsPathTest.log: GraphicsPathTest$(EXEEXT)
- @p='GraphicsPathTest$(EXEEXT)'; \
- b='GraphicsPathTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-HashFunctionTest.log: HashFunctionTest$(EXEEXT)
- @p='HashFunctionTest$(EXEEXT)'; \
- b='HashFunctionTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-JFMReaderTest.log: JFMReaderTest$(EXEEXT)
- @p='JFMReaderTest$(EXEEXT)'; \
- b='JFMReaderTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-LengthTest.log: LengthTest$(EXEEXT)
- @p='LengthTest$(EXEEXT)'; \
- b='LengthTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-MapLineTest.log: MapLineTest$(EXEEXT)
- @p='MapLineTest$(EXEEXT)'; \
- b='MapLineTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-MatrixTest.log: MatrixTest$(EXEEXT)
- @p='MatrixTest$(EXEEXT)'; \
- b='MatrixTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-MessageExceptionTest.log: MessageExceptionTest$(EXEEXT)
- @p='MessageExceptionTest$(EXEEXT)'; \
- b='MessageExceptionTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-PageRagesTest.log: PageRagesTest$(EXEEXT)
- @p='PageRagesTest$(EXEEXT)'; \
- b='PageRagesTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-PageSizeTest.log: PageSizeTest$(EXEEXT)
- @p='PageSizeTest$(EXEEXT)'; \
- b='PageSizeTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-PairTest.log: PairTest$(EXEEXT)
- @p='PairTest$(EXEEXT)'; \
- b='PairTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-PapersizeSpecialTest.log: PapersizeSpecialTest$(EXEEXT)
- @p='PapersizeSpecialTest$(EXEEXT)'; \
- b='PapersizeSpecialTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-PDFParserTest.log: PDFParserTest$(EXEEXT)
- @p='PDFParserTest$(EXEEXT)'; \
- b='PDFParserTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-PSInterpreterTest.log: PSInterpreterTest$(EXEEXT)
- @p='PSInterpreterTest$(EXEEXT)'; \
- b='PSInterpreterTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-RangeMapTest.log: RangeMapTest$(EXEEXT)
- @p='RangeMapTest$(EXEEXT)'; \
- b='RangeMapTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-ShadingPatchTest.log: ShadingPatchTest$(EXEEXT)
- @p='ShadingPatchTest$(EXEEXT)'; \
- b='ShadingPatchTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-SpecialManagerTest.log: SpecialManagerTest$(EXEEXT)
- @p='SpecialManagerTest$(EXEEXT)'; \
- b='SpecialManagerTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-SplittedCharInputBufferTest.log: SplittedCharInputBufferTest$(EXEEXT)
- @p='SplittedCharInputBufferTest$(EXEEXT)'; \
- b='SplittedCharInputBufferTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-StreamInputBufferTest.log: StreamInputBufferTest$(EXEEXT)
- @p='StreamInputBufferTest$(EXEEXT)'; \
- b='StreamInputBufferTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-StreamReaderTest.log: StreamReaderTest$(EXEEXT)
- @p='StreamReaderTest$(EXEEXT)'; \
- b='StreamReaderTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-StreamWriterTest.log: StreamWriterTest$(EXEEXT)
- @p='StreamWriterTest$(EXEEXT)'; \
- b='StreamWriterTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-StringMatcherTest.log: StringMatcherTest$(EXEEXT)
- @p='StringMatcherTest$(EXEEXT)'; \
- b='StringMatcherTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-SubfontTest.log: SubfontTest$(EXEEXT)
- @p='SubfontTest$(EXEEXT)'; \
- b='SubfontTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-SVGOutputTest.log: SVGOutputTest$(EXEEXT)
- @p='SVGOutputTest$(EXEEXT)'; \
- b='SVGOutputTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-TensorProductPatchTest.log: TensorProductPatchTest$(EXEEXT)
- @p='TensorProductPatchTest$(EXEEXT)'; \
- b='TensorProductPatchTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-TFMReaderTest.log: TFMReaderTest$(EXEEXT)
- @p='TFMReaderTest$(EXEEXT)'; \
- b='TFMReaderTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-ToUnicodeMapTest.log: ToUnicodeMapTest$(EXEEXT)
- @p='ToUnicodeMapTest$(EXEEXT)'; \
- b='ToUnicodeMapTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-TpicSpecialTest.log: TpicSpecialTest$(EXEEXT)
- @p='TpicSpecialTest$(EXEEXT)'; \
- b='TpicSpecialTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-TriangularPatchTest.log: TriangularPatchTest$(EXEEXT)
- @p='TriangularPatchTest$(EXEEXT)'; \
- b='TriangularPatchTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-UnicodeTest.log: UnicodeTest$(EXEEXT)
- @p='UnicodeTest$(EXEEXT)'; \
- b='UnicodeTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-UtilityTest.log: UtilityTest$(EXEEXT)
- @p='UtilityTest$(EXEEXT)'; \
- b='UtilityTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-VectorIteratorTest.log: VectorIteratorTest$(EXEEXT)
- @p='VectorIteratorTest$(EXEEXT)'; \
- b='VectorIteratorTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-VectorStreamTest.log: VectorStreamTest$(EXEEXT)
- @p='VectorStreamTest$(EXEEXT)'; \
- b='VectorStreamTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-XMLNodeTest.log: XMLNodeTest$(EXEEXT)
- @p='XMLNodeTest$(EXEEXT)'; \
- b='XMLNodeTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-XMLStringTest.log: XMLStringTest$(EXEEXT)
- @p='XMLStringTest$(EXEEXT)'; \
- b='XMLStringTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-check-conv.log: check-conv
- @p='check-conv'; \
- b='check-conv'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-.test.log:
- @p='$<'; \
- $(am__set_b); \
- $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-@am__EXEEXT_TRUE@.test$(EXEEXT).log:
-@am__EXEEXT_TRUE@ @p='$<'; \
-@am__EXEEXT_TRUE@ $(am__set_b); \
-@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
-@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
-@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
-@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
-
-distdir: $(BUILT_SOURCES)
- $(MAKE) $(AM_MAKEFLAGS) distdir-am
-
-distdir-am: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- $(am__make_dryrun) \
- || test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
- $(am__relativize); \
- new_distdir=$$reldir; \
- dir1=$$subdir; dir2="$(top_distdir)"; \
- $(am__relativize); \
- new_top_distdir=$$reldir; \
- echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
- echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
- ($(am__cd) $$subdir && \
- $(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$$new_top_distdir" \
- distdir="$$new_distdir" \
- am__remove_distdir=: \
- am__skip_length_check=: \
- am__skip_mode_fix=: \
- distdir) \
- || exit 1; \
- fi; \
- done
-check-am: all-am
- $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_LTLIBRARIES)
- $(MAKE) $(AM_MAKEFLAGS) check-TESTS
-check: check-recursive
-all-am: Makefile
-installdirs: installdirs-recursive
-installdirs-am:
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
- -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
- -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
- -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-
-clean-generic:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
- -rm -f gtest/src/$(DEPDIR)/$(am__dirstamp)
- -rm -f gtest/src/$(am__dirstamp)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
-
-clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \
- clean-libtool mostlyclean-am
-
-distclean: distclean-recursive
- -rm -f ./$(DEPDIR)/BezierTest-BezierTest.Po
- -rm -f ./$(DEPDIR)/BitmapTest-BitmapTest.Po
- -rm -f ./$(DEPDIR)/BoundingBoxTest-BoundingBoxTest.Po
- -rm -f ./$(DEPDIR)/CMapManagerTest-CMapManagerTest.Po
- -rm -f ./$(DEPDIR)/CMapReaderTest-CMapReaderTest.Po
- -rm -f ./$(DEPDIR)/CMapTest-CMapTest.Po
- -rm -f ./$(DEPDIR)/CalculatorTest-CalculatorTest.Po
- -rm -f ./$(DEPDIR)/ColorSpecialTest-ColorSpecialTest.Po
- -rm -f ./$(DEPDIR)/ColorTest-ColorTest.Po
- -rm -f ./$(DEPDIR)/CommandLineTest-CommandLineTest.Po
- -rm -f ./$(DEPDIR)/DVIReaderTest-DVIReaderTest.Po
- -rm -f ./$(DEPDIR)/DependencyGraphTest-DependencyGraphTest.Po
- -rm -f ./$(DEPDIR)/DirectoryTest-DirectoryTest.Po
- -rm -f ./$(DEPDIR)/DvisvgmSpecialTest-DvisvgmSpecialTest.Po
- -rm -f ./$(DEPDIR)/EllipticalArcTest-EllipticalArcTest.Po
- -rm -f ./$(DEPDIR)/EmSpecialTest-EmSpecialTest.Po
- -rm -f ./$(DEPDIR)/FileFinderTest-FileFinderTest.Po
- -rm -f ./$(DEPDIR)/FilePathTest-FilePathTest.Po
- -rm -f ./$(DEPDIR)/FileSystemTest-FileSystemTest.Po
- -rm -f ./$(DEPDIR)/FontCacheTest-FontCacheTest.Po
- -rm -f ./$(DEPDIR)/FontManagerTest-FontManagerTest.Po
- -rm -f ./$(DEPDIR)/FontMapTest-FontMapTest.Po
- -rm -f ./$(DEPDIR)/GFGlyphTracerTest-GFGlyphTracerTest.Po
- -rm -f ./$(DEPDIR)/GFReaderTest-GFReaderTest.Po
- -rm -f ./$(DEPDIR)/GhostscriptTest-GhostscriptTest.Po
- -rm -f ./$(DEPDIR)/GraphicsPathTest-GraphicsPathTest.Po
- -rm -f ./$(DEPDIR)/HashFunctionTest-HashFunctionTest.Po
- -rm -f ./$(DEPDIR)/JFMReaderTest-JFMReaderTest.Po
- -rm -f ./$(DEPDIR)/LengthTest-LengthTest.Po
- -rm -f ./$(DEPDIR)/MapLineTest-MapLineTest.Po
- -rm -f ./$(DEPDIR)/MatrixTest-MatrixTest.Po
- -rm -f ./$(DEPDIR)/MessageExceptionTest-MessageExceptionTest.Po
- -rm -f ./$(DEPDIR)/PDFParserTest-PDFParserTest.Po
- -rm -f ./$(DEPDIR)/PSInterpreterTest-PSInterpreterTest.Po
- -rm -f ./$(DEPDIR)/PageRagesTest-PageRagesTest.Po
- -rm -f ./$(DEPDIR)/PageSizeTest-PageSizeTest.Po
- -rm -f ./$(DEPDIR)/PairTest-PairTest.Po
- -rm -f ./$(DEPDIR)/PapersizeSpecialTest-PapersizeSpecialTest.Po
- -rm -f ./$(DEPDIR)/RangeMapTest-RangeMapTest.Po
- -rm -f ./$(DEPDIR)/SVGOutputTest-SVGOutputTest.Po
- -rm -f ./$(DEPDIR)/ShadingPatchTest-ShadingPatchTest.Po
- -rm -f ./$(DEPDIR)/SpecialManagerTest-SpecialManagerTest.Po
- -rm -f ./$(DEPDIR)/SplittedCharInputBufferTest-SplittedCharInputBufferTest.Po
- -rm -f ./$(DEPDIR)/StreamInputBufferTest-StreamInputBufferTest.Po
- -rm -f ./$(DEPDIR)/StreamReaderTest-StreamReaderTest.Po
- -rm -f ./$(DEPDIR)/StreamWriterTest-StreamWriterTest.Po
- -rm -f ./$(DEPDIR)/StringMatcherTest-StringMatcherTest.Po
- -rm -f ./$(DEPDIR)/SubfontTest-SubfontTest.Po
- -rm -f ./$(DEPDIR)/TFMReaderTest-TFMReaderTest.Po
- -rm -f ./$(DEPDIR)/TensorProductPatchTest-TensorProductPatchTest.Po
- -rm -f ./$(DEPDIR)/ToUnicodeMapTest-ToUnicodeMapTest.Po
- -rm -f ./$(DEPDIR)/TpicSpecialTest-TpicSpecialTest.Po
- -rm -f ./$(DEPDIR)/TriangularPatchTest-TriangularPatchTest.Po
- -rm -f ./$(DEPDIR)/UnicodeTest-UnicodeTest.Po
- -rm -f ./$(DEPDIR)/UtilityTest-UtilityTest.Po
- -rm -f ./$(DEPDIR)/VectorIteratorTest-VectorIteratorTest.Po
- -rm -f ./$(DEPDIR)/VectorStreamTest-VectorStreamTest.Po
- -rm -f ./$(DEPDIR)/XMLNodeTest-XMLNodeTest.Po
- -rm -f ./$(DEPDIR)/XMLStringTest-XMLStringTest.Po
- -rm -f ./$(DEPDIR)/hashcheck-hashcheck.Po
- -rm -f ./$(DEPDIR)/libgtest_la-testmain.Plo
- -rm -f gtest/src/$(DEPDIR)/libgtest_la-gtest-all.Plo
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
- -rm -f ./$(DEPDIR)/BezierTest-BezierTest.Po
- -rm -f ./$(DEPDIR)/BitmapTest-BitmapTest.Po
- -rm -f ./$(DEPDIR)/BoundingBoxTest-BoundingBoxTest.Po
- -rm -f ./$(DEPDIR)/CMapManagerTest-CMapManagerTest.Po
- -rm -f ./$(DEPDIR)/CMapReaderTest-CMapReaderTest.Po
- -rm -f ./$(DEPDIR)/CMapTest-CMapTest.Po
- -rm -f ./$(DEPDIR)/CalculatorTest-CalculatorTest.Po
- -rm -f ./$(DEPDIR)/ColorSpecialTest-ColorSpecialTest.Po
- -rm -f ./$(DEPDIR)/ColorTest-ColorTest.Po
- -rm -f ./$(DEPDIR)/CommandLineTest-CommandLineTest.Po
- -rm -f ./$(DEPDIR)/DVIReaderTest-DVIReaderTest.Po
- -rm -f ./$(DEPDIR)/DependencyGraphTest-DependencyGraphTest.Po
- -rm -f ./$(DEPDIR)/DirectoryTest-DirectoryTest.Po
- -rm -f ./$(DEPDIR)/DvisvgmSpecialTest-DvisvgmSpecialTest.Po
- -rm -f ./$(DEPDIR)/EllipticalArcTest-EllipticalArcTest.Po
- -rm -f ./$(DEPDIR)/EmSpecialTest-EmSpecialTest.Po
- -rm -f ./$(DEPDIR)/FileFinderTest-FileFinderTest.Po
- -rm -f ./$(DEPDIR)/FilePathTest-FilePathTest.Po
- -rm -f ./$(DEPDIR)/FileSystemTest-FileSystemTest.Po
- -rm -f ./$(DEPDIR)/FontCacheTest-FontCacheTest.Po
- -rm -f ./$(DEPDIR)/FontManagerTest-FontManagerTest.Po
- -rm -f ./$(DEPDIR)/FontMapTest-FontMapTest.Po
- -rm -f ./$(DEPDIR)/GFGlyphTracerTest-GFGlyphTracerTest.Po
- -rm -f ./$(DEPDIR)/GFReaderTest-GFReaderTest.Po
- -rm -f ./$(DEPDIR)/GhostscriptTest-GhostscriptTest.Po
- -rm -f ./$(DEPDIR)/GraphicsPathTest-GraphicsPathTest.Po
- -rm -f ./$(DEPDIR)/HashFunctionTest-HashFunctionTest.Po
- -rm -f ./$(DEPDIR)/JFMReaderTest-JFMReaderTest.Po
- -rm -f ./$(DEPDIR)/LengthTest-LengthTest.Po
- -rm -f ./$(DEPDIR)/MapLineTest-MapLineTest.Po
- -rm -f ./$(DEPDIR)/MatrixTest-MatrixTest.Po
- -rm -f ./$(DEPDIR)/MessageExceptionTest-MessageExceptionTest.Po
- -rm -f ./$(DEPDIR)/PDFParserTest-PDFParserTest.Po
- -rm -f ./$(DEPDIR)/PSInterpreterTest-PSInterpreterTest.Po
- -rm -f ./$(DEPDIR)/PageRagesTest-PageRagesTest.Po
- -rm -f ./$(DEPDIR)/PageSizeTest-PageSizeTest.Po
- -rm -f ./$(DEPDIR)/PairTest-PairTest.Po
- -rm -f ./$(DEPDIR)/PapersizeSpecialTest-PapersizeSpecialTest.Po
- -rm -f ./$(DEPDIR)/RangeMapTest-RangeMapTest.Po
- -rm -f ./$(DEPDIR)/SVGOutputTest-SVGOutputTest.Po
- -rm -f ./$(DEPDIR)/ShadingPatchTest-ShadingPatchTest.Po
- -rm -f ./$(DEPDIR)/SpecialManagerTest-SpecialManagerTest.Po
- -rm -f ./$(DEPDIR)/SplittedCharInputBufferTest-SplittedCharInputBufferTest.Po
- -rm -f ./$(DEPDIR)/StreamInputBufferTest-StreamInputBufferTest.Po
- -rm -f ./$(DEPDIR)/StreamReaderTest-StreamReaderTest.Po
- -rm -f ./$(DEPDIR)/StreamWriterTest-StreamWriterTest.Po
- -rm -f ./$(DEPDIR)/StringMatcherTest-StringMatcherTest.Po
- -rm -f ./$(DEPDIR)/SubfontTest-SubfontTest.Po
- -rm -f ./$(DEPDIR)/TFMReaderTest-TFMReaderTest.Po
- -rm -f ./$(DEPDIR)/TensorProductPatchTest-TensorProductPatchTest.Po
- -rm -f ./$(DEPDIR)/ToUnicodeMapTest-ToUnicodeMapTest.Po
- -rm -f ./$(DEPDIR)/TpicSpecialTest-TpicSpecialTest.Po
- -rm -f ./$(DEPDIR)/TriangularPatchTest-TriangularPatchTest.Po
- -rm -f ./$(DEPDIR)/UnicodeTest-UnicodeTest.Po
- -rm -f ./$(DEPDIR)/UtilityTest-UtilityTest.Po
- -rm -f ./$(DEPDIR)/VectorIteratorTest-VectorIteratorTest.Po
- -rm -f ./$(DEPDIR)/VectorStreamTest-VectorStreamTest.Po
- -rm -f ./$(DEPDIR)/XMLNodeTest-XMLNodeTest.Po
- -rm -f ./$(DEPDIR)/XMLStringTest-XMLStringTest.Po
- -rm -f ./$(DEPDIR)/hashcheck-hashcheck.Po
- -rm -f ./$(DEPDIR)/libgtest_la-testmain.Plo
- -rm -f gtest/src/$(DEPDIR)/libgtest_la-gtest-all.Plo
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: $(am__recursive_targets) check-am install-am install-strip
-
-.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
- am--depfiles check check-TESTS check-am clean \
- clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \
- clean-libtool cscopelist-am ctags ctags-am distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- installdirs-am maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
- uninstall uninstall-am
-
-.PRECIOUS: Makefile
-
-
-hashcheck.cpp: genhashcheck.py $(dvisvgm_srcdir)/src/AGLTable.hpp $(dvisvgm_srcdir)/libs/xxHash/xxhash.h
- python $^ >$@
-
-@CODE_COVERAGE_RULES@
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/MapLineTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/MapLineTest.cpp
deleted file mode 100644
index 155d133e453..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/MapLineTest.cpp
+++ /dev/null
@@ -1,144 +0,0 @@
-/*************************************************************************
-** MapLineTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <sstream>
-#include "MapLine.hpp"
-#include "Subfont.hpp"
-#include "testutil.hpp"
-
-using namespace std;
-
-TEST(MapLineTest, psline1) {
- istringstream iss("texname0 TEXNAME0 <texname.pfb <encname.enc");
- MapLine mapline(iss);
- EXPECT_EQ(mapline.texname(), "texname0");
- EXPECT_EQ(mapline.psname(), "TEXNAME0");
- EXPECT_EQ(mapline.fontfname(), "texname.pfb");
- EXPECT_EQ(mapline.encname(), "encname");
- EXPECT_DOUBLE_EQ(mapline.slant(), 0);
- EXPECT_DOUBLE_EQ(mapline.extend(), 1);
- EXPECT_DOUBLE_EQ(mapline.bold(), 0);
-}
-
-TEST(MapLineTest, psline2) {
- istringstream iss("texname0 TEXNAME0 <<texname.pfb <encname.enc");
- MapLine mapline(iss);
- EXPECT_EQ(mapline.texname(), "texname0");
- EXPECT_EQ(mapline.psname(), "TEXNAME0");
- EXPECT_EQ(mapline.fontfname(), "texname.pfb");
- EXPECT_EQ(mapline.encname(), "encname");
- EXPECT_DOUBLE_EQ(mapline.slant(), 0);
- EXPECT_DOUBLE_EQ(mapline.extend(), 1);
- EXPECT_DOUBLE_EQ(mapline.bold(), 0);
-}
-
-TEST(MapLineTest, psline3) {
- istringstream iss("texname0 TEXNAME0 \".123 SlantFont .456 ExtendFont\" <encname.enc <[texname.ttf");
- MapLine mapline(iss);
- EXPECT_EQ(mapline.texname(), "texname0");
- EXPECT_EQ(mapline.psname(), "TEXNAME0");
- EXPECT_EQ(mapline.fontfname(), "texname.ttf");
- EXPECT_EQ(mapline.encname(), "encname");
- EXPECT_DOUBLE_EQ(mapline.slant(), 0.123);
- EXPECT_DOUBLE_EQ(mapline.extend(), 0.456);
- EXPECT_DOUBLE_EQ(mapline.bold(), 0);
-}
-
-TEST(MapLineTest, psline4) {
- istringstream iss("texname0 TEXNAME0 <encname.enc \".123 SlantFont IgnoreMe .456 ExtendFont\" <texname.ttf");
- MapLine mapline(iss);
- EXPECT_EQ(mapline.texname(), "texname0");
- EXPECT_EQ(mapline.psname(), "TEXNAME0");
- EXPECT_EQ(mapline.fontfname(), "texname.ttf");
- EXPECT_EQ(mapline.encname(), "encname");
- EXPECT_DOUBLE_EQ(mapline.slant(), 0.123);
- EXPECT_DOUBLE_EQ(mapline.extend(), 0.456);
- EXPECT_DOUBLE_EQ(mapline.bold(), 0);
-}
-
-TEST(MapLineTest, pdfline1) {
- istringstream iss("texname");
- MapLine mapline(iss);
- EXPECT_EQ(mapline.texname(), "texname");
- EXPECT_EQ(mapline.psname(), "");
- EXPECT_EQ(mapline.encname(), "");
- EXPECT_EQ(mapline.fontfname(), "");
-}
-
-TEST(MapLineTest, pdfline2) {
- istringstream iss("gbk unicode simsun.ttc");
- MapLine mapline(iss);
- EXPECT_EQ(mapline.texname(), "gbk");
- EXPECT_EQ(mapline.psname(), "");
- EXPECT_EQ(mapline.encname(), "unicode");
- EXPECT_EQ(mapline.fontfname(), "simsun.ttc");
- EXPECT_EQ(mapline.fontindex(), 0);
- EXPECT_TRUE(mapline.sfd() == 0);
- EXPECT_EQ(mapline.fontindex(), 0);
- EXPECT_DOUBLE_EQ(mapline.slant(), 0);
- EXPECT_DOUBLE_EQ(mapline.extend(), 1);
-}
-
-TEST(MapLineTest, pdfline3) {
- istringstream iss("gbk@UGBK@10 unicode simsun.ttc -v 50 -r -s .123 -b 1 -e 0.456");
- MapLine mapline(iss);
- EXPECT_EQ(mapline.texname(), "gbk10");
- EXPECT_EQ(mapline.psname(), "");
- EXPECT_EQ(mapline.encname(), "unicode");
- EXPECT_EQ(mapline.fontfname(), "simsun.ttc");
- EXPECT_EQ(mapline.fontindex(), 0);
- EXPECT_DOUBLE_EQ(mapline.slant(), 0.123);
- EXPECT_DOUBLE_EQ(mapline.extend(), 0.456);
- EXPECT_DOUBLE_EQ(mapline.bold(), 1);
- if (mapline.sfd() != 0) // if UGBK.sfd is installed, check SFD name
- EXPECT_EQ(mapline.sfd()->name(), "UGBK");
- else
- WARNING("UGBK.sfd not found");
-}
-
-TEST(MapLineTest, pdfline4) {
- istringstream iss("gbk@UGBK@ default :1:!simsun.ttc/UCS,Bold -e.345");
- MapLine mapline(iss);
- EXPECT_EQ(mapline.texname(), "gbk");
- EXPECT_EQ(mapline.psname(), "");
- EXPECT_EQ(mapline.encname(), ""); // encodings "default" and "none" are replaced with ""
- EXPECT_EQ(mapline.fontfname(), "simsun.ttc");
- EXPECT_EQ(mapline.fontindex(), 1);
- EXPECT_DOUBLE_EQ(mapline.slant(), 0);
- EXPECT_DOUBLE_EQ(mapline.extend(), 0.345);
- if (mapline.sfd() != 0) // if UGBK.sfd is installed, check SFD name
- EXPECT_EQ(mapline.sfd()->name(), "UGBK");
- else
- WARNING("UGBK.sfd not found");
-}
-
-
-TEST(MapLineTest, fail) {
- EXPECT_THROW(MapLine("texname -"), MapLineException);
- EXPECT_THROW(MapLine("texname -s"), MapLineException);
- EXPECT_THROW(MapLine("texname -e"), MapLineException);
- EXPECT_THROW(MapLine("texname -b"), MapLineException);
- EXPECT_THROW(MapLine("texname -i"), MapLineException);
- EXPECT_THROW(MapLine("texname -p"), MapLineException);
- EXPECT_THROW(MapLine("texname -v"), MapLineException);
- EXPECT_THROW(MapLine("texname -w"), MapLineException);
- EXPECT_THROW(MapLine("texname -Z"), MapLineException);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/MatrixTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/MatrixTest.cpp
deleted file mode 100644
index 8c7cb421ab1..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/MatrixTest.cpp
+++ /dev/null
@@ -1,279 +0,0 @@
-/*************************************************************************
-** MatrixTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <sstream>
-#include <vector>
-#include <XMLString.hpp>
-#include "Calculator.hpp"
-#include "Matrix.hpp"
-
-using namespace std;
-
-
-TEST(MatrixTest, construct1) {
- const vector<double> vec{1, 2, 3, 4, 5, 6, 7, 8, 9};
- Matrix m1(vec);
- for (int row=0; row < 3; row++)
- for (int col=0; col < 3; col++)
- ASSERT_EQ(m1.get(row, col), vec[row*3+col]) << "row=" << row << ", col=" << col;
-
- int startIndex=4;
- Matrix m2(vec, startIndex);
- for (int row=0; row < 3; row++) {
- for (int col=0; col < 3; col++) {
- int index = row*3+col+startIndex;
- ASSERT_EQ(m2.get(row, col), index < 9 ? vec[index] : (row == col ? 1 : 0)) << "row=" << row << ", col=" << col;
- }
- }
- EXPECT_TRUE(Matrix(1).isIdentity());
-}
-
-
-TEST(MatrixTest, construct2) {
- Matrix m1 = {1, 2, 3, 4, 5, 6, 7, 8, 9};
- for (int row=0; row < 3; row++)
- for (int col=0; col < 3; col++)
- ASSERT_EQ(m1.get(row, col), 3*row+col+1) << "row=" << row << ", col=" << col;
-
- Matrix m2 = {1, 2, 3, 4, 5, 6};
- for (int row=0; row < 2; row++)
- for (int col=0; col < 3; col++)
- ASSERT_EQ(m2.get(row, col), 3*row+col+1) << "row=" << row << ", col=" << col;
- ASSERT_EQ(m2.get(2, 0), 0);
- ASSERT_EQ(m2.get(2, 1), 0);
- ASSERT_EQ(m2.get(2, 2), 1);
-}
-
-
-TEST(MatrixTest, svg) {
- double v1[] = {1,2,3,4,5,6,7,8,9};
- Matrix m1(v1);
- ostringstream oss;
- m1.write(oss);
- EXPECT_EQ(oss.str(), "((1,2,3),(4,5,6),(7,8,9))");
- EXPECT_EQ(m1.toSVG(), "matrix(1 4 2 5 3 6)");
-
- double v2[] = {1,2};
- Matrix m2(v2, 2);
- oss.str("");
- m2.write(oss);
- EXPECT_EQ(oss.str(), "((1,2,0),(0,1,0),(0,0,1))");
- EXPECT_EQ(m2.toSVG(), "matrix(1 0 2 1 0 0)");
-}
-
-
-TEST(MatrixTest, transpose) {
- double v[] = {1,2,3,4,5,6,7,8,9};
- Matrix m(v);
- m.transpose();
- ostringstream oss;
- m.write(oss);
- EXPECT_EQ(oss.str(), "((1,4,7),(2,5,8),(3,6,9))");
- EXPECT_EQ(m.toSVG(), "matrix(1 2 4 5 7 8)");
-}
-
-
-TEST(MatrixTest, scale) {
- ScalingMatrix m(2,2);
- DPair p = m*DPair(3,3);
- EXPECT_DOUBLE_EQ(p.x(), 6);
- EXPECT_DOUBLE_EQ(p.y(), 6);
-
- m = ScalingMatrix(-2,-2);
- p = m*DPair(3,3);
- EXPECT_DOUBLE_EQ(p.x(), -6);
- EXPECT_DOUBLE_EQ(p.y(), -6);
-}
-
-
-TEST(MatrixTest, rotate) {
- RotationMatrix m(90);
- DPair p = m*DPair(2,0);
- EXPECT_NEAR(p.x(), 0, 0.0000000001);
- EXPECT_NEAR(p.y(), 2, 0.0000000001);
-
- p = m*p;
- EXPECT_NEAR(p.x(), -2, 0.0000000001);
- EXPECT_NEAR(p.y(), 0, 0.0000000001);
-}
-
-
-TEST(MatrixTest, isTranslation) {
- Matrix m(1);
- EXPECT_TRUE(m.isIdentity());
- double tx, ty;
- EXPECT_TRUE(m.isTranslation(tx, ty));
- EXPECT_EQ(tx, 0);
- EXPECT_EQ(ty, 0);
- m.translate(1,2);
- EXPECT_TRUE(m.isTranslation(tx, ty));
- EXPECT_EQ(tx, 1);
- EXPECT_EQ(ty, 2);
- m.scale(2, 2);
- EXPECT_FALSE(m.isTranslation(tx, ty));
-}
-
-
-TEST(MatrixTest, rmultiply) {
- const Matrix m1({1, 2, 3, 4, 5, 6, 7, 8, 9});
- const Matrix m2({9, 8, 7, 6, 5, 4, 3, 2, 1});
- EXPECT_NE(m1, m2);
- Matrix m3;
- EXPECT_EQ((m3 = m1).rmultiply(m2), Matrix({30, 24, 18, 84, 69, 54, 138, 114, 90}));
- EXPECT_EQ((m3 = m2).rmultiply(m1), Matrix({90, 114, 138, 54, 69, 84, 18, 24, 30}));
- EXPECT_EQ((m3 = m1).rmultiply(Matrix(1)), m1);
-}
-
-
-TEST(MatrixTest, lmultiply) {
- const Matrix m1({1, 2, 3, 4, 5, 6, 7, 8, 9});
- const Matrix m2({9, 8, 7, 6, 5, 4, 3, 2, 1});
- EXPECT_NE(m1, m2);
- Matrix m3;
- EXPECT_EQ((m3 = m1).lmultiply(m2), Matrix({90, 114, 138, 54, 69, 84, 18, 24, 30}));
- EXPECT_EQ((m3 = m2).lmultiply(m1), Matrix({30, 24, 18, 84, 69, 54, 138, 114, 90}));
- EXPECT_EQ((m3 = m1).lmultiply(Matrix(1)), m1);
-}
-
-
-TEST(MatrixTest, vec) {
- vector<double> v;
- for (int i=1; i <= 15; ++i)
- v.push_back(i);
- Matrix m(v);
- ostringstream oss;
- m.write(oss);
- EXPECT_EQ(oss.str(), "((1,2,3),(4,5,6),(7,8,9))");
- oss.str("");
-
- m.set(v, 2);
- m.write(oss);
- EXPECT_EQ(oss.str(), "((3,4,5),(6,7,8),(9,10,11))");
-}
-
-
-TEST(MatrixTest, det) {
- Matrix m1(1);
- EXPECT_EQ(det(m1), 1);
-
- double v2[] = {1,2,3, 4,5,6, 7,8,9};
- Matrix m2(v2);
- EXPECT_EQ(det(m2), 1*5*9 + 2*6*7 + 3*4*8 - 3*5*7 - 2*4*9 - 1*6*8);
-
- EXPECT_EQ(det(m2, 0, 0), 5*9-6*8);
- EXPECT_EQ(det(m2, 0, 1), 4*9-6*7);
- EXPECT_EQ(det(m2, 0, 2), 4*8-5*7);
- EXPECT_EQ(det(m2, 1, 0), 2*9-3*8);
-
- double v3[] = {1,1,1, 2,2,2, 3,3,3};
- Matrix m3(v3);
- EXPECT_EQ(det(m2), 0);
- m3.transpose();
- EXPECT_EQ(det(m2), 0);
-}
-
-
-TEST(MatrixTest, invert) {
- Matrix m1(1);
- EXPECT_EQ(m1.invert(), m1);
-
- double v2[] = {1,2,3, 2,3,1, 3,1,2};
- Matrix m2(v2);
- EXPECT_EQ(det(m2), -18);
-
- double v3[] = {5,-1,-7, -1,-7,5, -7,5,-1};
- Matrix m3(v3);
-
- m3 *= 1.0/det(m2);
- m2.invert();
- for (int i=0; i < 3; ++i)
- for (int j=0; j < 3; ++j)
- EXPECT_DOUBLE_EQ(m2.get(i,j), m3.get(i,j));
- Matrix m4{0};
- EXPECT_THROW(m4.invert(), exception);
-}
-
-
-TEST(MatrixTest, parse) {
- Calculator calc;
- calc.setVariable("ux", 0);
- calc.setVariable("uy", 0);
- calc.setVariable("w", 0);
- calc.setVariable("h", 0);
- EXPECT_EQ(Matrix("T1,-2", calc), TranslationMatrix(1, -2));
- EXPECT_EQ(Matrix("R45", calc), RotationMatrix(45));
- EXPECT_EQ(Matrix("S2,3", calc), ScalingMatrix(2, 3));
- EXPECT_EQ(Matrix("FH1", calc), Matrix({1, 0, 0, 0, -1, 2, 0, 0, 1}));
- EXPECT_EQ(Matrix("FV1", calc), Matrix({-1, 0, 2, 0, 1, 0, 0, 0, 1}));
- EXPECT_EQ(Matrix("KX45", calc), Matrix({1, 1, 0, 0, 1, 0, 0, 0, 1}));
- EXPECT_EQ(Matrix("KY45", calc), Matrix({1, 0, 0, 1, 1, 0, 0, 0, 1}));
- EXPECT_EQ(Matrix("M1,2,3,4,5,6", calc), Matrix({1, 2, 3, 4, 5, 6, 0, 0, 1}));
-
- Matrix m;
- m.set("R90 T1,1 S2", calc);
- EXPECT_EQ(m, Matrix({0, -2, 2, 2, 0, 2, 0, 0, 1}));
-}
-
-
-TEST(MatrixTest, write) {
- ostringstream oss;
- Matrix m(3);
- oss << m;
- EXPECT_EQ(oss.str(), "((3,0,0),(0,3,0),(0,0,3))");
-}
-
-
-TEST(MatrixTest, fail) {
- Calculator calc;
- EXPECT_THROW(Matrix("R45", calc), CalculatorException);
-
- calc.setVariable("ux", 0);
- calc.setVariable("uy", 0);
- calc.setVariable("w", 0);
- calc.setVariable("h", 0);
- EXPECT_THROW(Matrix("ABC", calc), ParserException); // invalid command
- EXPECT_THROW(Matrix("F1", calc), ParserException); // missing H or V
- EXPECT_THROW(Matrix("K45", calc), ParserException); // missing X or Y
- EXPECT_THROW(Matrix("KX", calc), ParserException); // missing argument
- EXPECT_THROW(Matrix("KX90", calc), ParserException); // invalid argument (pole at 90+180k degrees)
- EXPECT_THROW(Matrix("KY270", calc), ParserException); // invalid argument (pole at 90+180k degrees)
- EXPECT_THROW(Matrix("S2,", calc), ParserException); // missing argument
-}
-
-
-TEST(MatrixTest, parseSVGTransform) {
- XMLString::DECIMAL_PLACES = 3;
- EXPECT_EQ(
- Matrix::parseSVGTransform("translate(50, 90)").toSVG(),
- "matrix(1 0 0 1 50 90)");
- EXPECT_EQ(
- Matrix::parseSVGTransform("scale(10 20)").toSVG(),
- "matrix(10 0 0 20 0 0)");
- EXPECT_EQ(
- Matrix::parseSVGTransform("rotate(-45)").toSVG(),
- "matrix(.707 -.707 .707 .707 0 0)");
- EXPECT_EQ(
- Matrix::parseSVGTransform("translate(50, 90) rotate(-45) ").toSVG(),
- "matrix(.707 -.707 .707 .707 50 90)");
- EXPECT_EQ(
- Matrix::parseSVGTransform("translate(50, 90) rotate(-45) , translate(130 160)").toSVG(),
- "matrix(.707 -.707 .707 .707 255.061 111.213)");
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/MessageExceptionTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/MessageExceptionTest.cpp
deleted file mode 100644
index 396af63ad73..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/MessageExceptionTest.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-/*************************************************************************
-** MessageExceptionTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <string>
-#include "MessageException.hpp"
-
-using namespace std;
-
-static void throw_exception (const string &msg) {
- throw MessageException(msg);
-}
-
-
-TEST(MessageExceptionTest, catch_direct) {
- bool caught=false;
- try {
- throw_exception("test message");
- FAIL();
- }
- catch (MessageException &e) {
- ASSERT_STREQ(e.what(), "test message");
- caught = true;
- }
- catch (...) {
- FAIL();
- }
- ASSERT_TRUE(caught);
-}
-
-
-TEST(MessageExceptionTest, catch_indirect1) {
- bool caught=false;
- try {
- throw_exception("test message");
- FAIL();
- }
- catch (exception &e) {
- ASSERT_STREQ(e.what(), "test message");
- caught = true;
- }
- catch (...) {
- FAIL();
- }
- ASSERT_TRUE(caught);
-}
-
-
-TEST(MessageExceptionTest, catch_indirect2) {
- bool caught=false;
- try {
- throw_exception("test message");
- FAIL();
- }
- catch (...) {
- caught = true;
- }
- ASSERT_TRUE(caught);
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/PDFParserTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/PDFParserTest.cpp
deleted file mode 100644
index 39ca9ca27a4..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/PDFParserTest.cpp
+++ /dev/null
@@ -1,239 +0,0 @@
-/*************************************************************************
-** PDFParserTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include "PDFParser.hpp"
-
-using namespace std;
-
-TEST(PDFParserTest, empty) {
- PDFParser parser;
- vector<PDFObject> objects = parser.parse("");
- EXPECT_TRUE(objects.empty());
- objects = parser.parse(" \n \r %comment 1 2 3 ");
- EXPECT_TRUE(objects.empty());
-}
-
-
-TEST(PDFParserTest, numbers) {
- PDFParser parser;
- vector<PDFObject> objects = parser.parse("5 1 +2 -3 1.1 9. .1 -7.2");
- ASSERT_EQ(objects.size(), 8u);
-
- size_t count=0;
- for (int n : {5, 1, 2, -3}) {
- ASSERT_NE(objects[count].get<int>(), nullptr);
- EXPECT_EQ(*objects[count++].get<int>(), n);
- }
- for (double n : {1.1, 9.0, 0.1, -7.2}) {
- ASSERT_NE(objects[count].get<double>(), nullptr);
- EXPECT_DOUBLE_EQ(*objects[count++].get<double>(), n);
- }
-}
-
-
-TEST(PDFParserTest, literal_strings) {
- PDFParser parser;
- vector<PDFObject> objects = parser.parse("()");
- ASSERT_EQ(objects.size(), 1u);
- ASSERT_NE(objects[0].get<string>(), nullptr);
- EXPECT_TRUE(objects[0].get<string>()->empty());
-
- objects = parser.parse("(literal string) (balanced (bra(ck)ets) inside)(a\\n\\(b\\c)");
- ASSERT_EQ(objects.size(), 3u);
-
- size_t count=0;
- for (string str : {"literal string", "balanced (bra(ck)ets) inside", "a\n(bc"}) {
- ASSERT_NE(objects[count].get<string>(), nullptr);
- ASSERT_EQ(*objects[count++].get<string>(), str);
- }
-
- objects = parser.parse(R"*( ( octal \1\12\123\1234 ))*");
- ASSERT_EQ(objects.size(), 1u);
- ASSERT_NE(objects[0].get<string>(), nullptr);
- EXPECT_EQ(objects[0].get<string>()->size(), 13u);
- EXPECT_EQ(*objects[0].get<string>(), " octal \001\012\123\1234 ");
-
- objects = parser.parse("(split \\\nline)");
- ASSERT_EQ(objects.size(), 1u);
- ASSERT_NE(objects[0].get<string>(), nullptr);
- EXPECT_EQ(*objects[0].get<string>(), "split line");
-
- EXPECT_THROW(parser.parse("(missing parentheses"), PDFException);
-}
-
-
-TEST(PDFParserTest, hex_strings) {
- PDFParser parser;
- vector<PDFObject> objects = parser.parse("<>< ><\n\r\f>");
- ASSERT_EQ(objects.size(), 3u);
- for (size_t i=0; i < objects.size(); i++) {
- ASSERT_NE(objects[i].get<string>(), nullptr);
- EXPECT_TRUE(objects[i].get<string>()->empty());
- }
-
- objects = parser.parse("<202>");
- ASSERT_EQ(objects.size(), 1u);
- ASSERT_NE(objects[0].get<string>(), nullptr);
- EXPECT_EQ(*objects[0].get<string>(), " ");
-
- objects = parser.parse("<616263646566 6768\n696A6b6c6D6E6F 7>");
- ASSERT_EQ(objects.size(), 1u);
- ASSERT_NE(objects[0].get<string>(), nullptr);
- EXPECT_EQ(*objects[0].get<string>(), "abcdefghijklmnop");
-
- EXPECT_THROW(parser.parse("<abcdefinvalid>"), PDFException);
- EXPECT_THROW(parser.parse("<missing parentheses"), PDFException);
-}
-
-
-TEST(PDFParserTest, arrays) {
- PDFParser parser;
- vector<PDFObject> objects = parser.parse("[1 2.0/name(string) [5] <6162>]");
- ASSERT_EQ(objects.size(), 1u);
- const PDFArray *arr = objects[0].get<PDFArray>();
- ASSERT_NE(arr, nullptr);
- ASSERT_EQ(arr->size(), 6u);
-
- // integer number
- ASSERT_NE((*arr)[0].get<int>(), nullptr);
- ASSERT_EQ(*(*arr)[0].get<int>(), 1);
-
- // real number
- ASSERT_NE((*arr)[1].get<double>(), nullptr);
- ASSERT_DOUBLE_EQ(*(*arr)[1].get<double>(), 2.0);
-
- // name
- ASSERT_NE((*arr)[2].get<PDFName>(), nullptr);
- ASSERT_EQ(*(*arr)[2].get<PDFName>(), PDFName("name"));
-
- // literal string
- ASSERT_NE((*arr)[3].get<string>(), nullptr);
- ASSERT_EQ(*(*arr)[3].get<string>(), "string");
-
- // inner array
- ASSERT_NE((*arr)[4].get<PDFArray>(), nullptr);
- ASSERT_EQ((*arr)[4].get<PDFArray>()->size(), 1u);
- ASSERT_NE((*arr)[4].get<PDFArray>()->at(0).get<int>(), nullptr);
- ASSERT_EQ(*(*arr)[4].get<PDFArray>()->at(0).get<int>(), 5);
-
- // hex string
- ASSERT_NE((*arr)[5].get<string>(), nullptr);
- ASSERT_EQ(*(*arr)[5].get<string>(), "ab");
-}
-
-
-TEST(PDFParserTest, dictionary) {
- PDFParser parser;
- vector<PDFObject> objects = parser.parse("<< >>");
- ASSERT_EQ(objects.size(), 1u);
- const PDFDict *dict = objects[0].get<PDFDict>();
- ASSERT_NE(dict, nullptr);
- ASSERT_TRUE(dict->empty());
-
- objects = parser.parse("<</int 4 /real 5.5/str(string value)/color[0 1 1]>>");
- ASSERT_EQ(objects.size(), 1u);
- dict = objects[0].get<PDFDict>();
- ASSERT_NE(dict, nullptr);
- ASSERT_EQ(dict->size(), 4u);
-
- // integer number
- ASSERT_NE(dict->find("int"), dict->end());
- ASSERT_NE(dict->find("int")->second.get<int>(), nullptr);
- EXPECT_EQ(*dict->find("int")->second.get<int>(), 4);
-
- ASSERT_NE(dict->find("real"), dict->end());
- ASSERT_NE(dict->find("real")->second.get<double>(), nullptr);
- EXPECT_DOUBLE_EQ(*dict->find("real")->second.get<double>(), 5.5);
-
- ASSERT_NE(dict->find("str"), dict->end());
- ASSERT_NE(dict->find("str")->second.get<string>(), nullptr);
- EXPECT_EQ(*dict->find("str")->second.get<string>(), "string value");
-
- ASSERT_NE(dict->find("color"), dict->end());
- ASSERT_NE(dict->find("color")->second.get<PDFArray>(), nullptr);
- const PDFArray &arr = *dict->find("color")->second.get<PDFArray>();
- ASSERT_EQ(arr.size(), 3u);
- EXPECT_EQ(*arr[0].get<int>(), 0);
- EXPECT_EQ(*arr[1].get<int>(), 1);
- EXPECT_EQ(*arr[2].get<int>(), 1);
-
- EXPECT_EQ(dict->find("nokey"), dict->end());
-
- EXPECT_THROW(parser.parse("<</int >>"), PDFException); // missing value
- EXPECT_THROW(parser.parse("<</int 4>"), PDFException); // missing ">"
- EXPECT_THROW(parser.parse("<</int 4"), PDFException); // missing ">>"
-}
-
-
-TEST(PDFParserTest, indirect_objects) {
- PDFParser parser;
- vector<PDFObject> objects = parser.parse("1 0 obj\n1 2 3 4 5endobj 2 5 R");
- ASSERT_EQ(objects.size(), 2u);
- ASSERT_NE(objects[0].get<PDFIndirectObject>(), nullptr);
- EXPECT_EQ(objects[0].get<PDFIndirectObject>()->objnum, 1);
- EXPECT_EQ(objects[0].get<PDFIndirectObject>()->gennum, 0);
-
- ASSERT_NE(objects[1].get<PDFObjectRef>(), nullptr);
- EXPECT_EQ(objects[1].get<PDFObjectRef>()->objnum, 2);
- EXPECT_EQ(objects[1].get<PDFObjectRef>()->gennum, 5);
-
- EXPECT_THROW(parser.parse("1 obj\n1 2 3 4 5endobj"), PDFException);
- EXPECT_THROW(parser.parse("1 (string)obj\n1 2 3 4 5endobj"), PDFException);
-
- EXPECT_THROW(parser.parse("1 R"), PDFException);
- EXPECT_THROW(parser.parse("1 (string)R"), PDFException);
-}
-
-
-TEST(PDFParserTest, stream) {
- PDFParser parser;
- vector<PDFObject> objects = parser.parse("stream\n1 2 3 4 endstream");
- ASSERT_EQ(objects.size(), 1u);
- ASSERT_NE(objects[0].get<PDFStream>(), nullptr);
-}
-
-
-TEST(PDFParserTest, ops1) {
- PDFParser parser;
- vector<PDFObject> objects = parser.parse("@xpos 1op op2 1..2");
- ASSERT_EQ(objects.size(), 4u);
- size_t count=0;
- for (string str : {"@xpos", "1op", "op2", "1..2"}) {
- ASSERT_NE(objects[count].get<PDFOperator>(), nullptr);
- ASSERT_EQ(objects[count++].get<PDFOperator>()->opname, str);
- }
-}
-
-
-TEST(PDFParserTest, ops2) {
- PDFParser parser;
- vector<PDFObject> objects = parser.parse("@xpos 1op op2 @ypos", [](const string &str, vector<PDFObject> &objects) {
- if (str == "@xpos" || str == "@ypos")
- objects.emplace_back(PDFObject(str == "@xpos" ? 1.23 : 3.21));
- else
- objects.emplace_back(PDFOperator(str));
- });
- ASSERT_EQ(objects.size(), 4u);
- size_t count=0;
- for (string str : {"1.23", "1op", "op2", "3.21"}) {
- ASSERT_EQ(string(objects[count++]), str);
- }
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/PSInterpreterTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/PSInterpreterTest.cpp
deleted file mode 100644
index 09a014c98cc..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/PSInterpreterTest.cpp
+++ /dev/null
@@ -1,188 +0,0 @@
-/*************************************************************************
-** PSInterpreterTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include "PSInterpreter.hpp"
-
-#include <sstream>
-#include <vector>
-
-using namespace std;
-
-class PSTestActions : public PSActions {
- public:
- void applyscalevals (vector<double> &p) override {print("applyscalevals", p);}
- void clip (vector<double> &p) override {print("clip", p);}
- void clippath (vector<double> &p) override {print("clippath", p);}
- void closepath (vector<double> &p) override {print("closepath", p);}
- void curveto (vector<double> &p) override {print("curveto", p);}
- void eoclip (vector<double> &p) override {print("eoclip", p);}
- void eofill (vector<double> &p) override {print("eofill", p);}
- void fill (vector<double> &p) override {print("fill", p);}
- void gsave (vector<double> &p) override {print("gsave", p);}
- void grestore (vector<double> &p) override {print("grestore", p);}
- void grestoreall (std::vector<double> &p) override {print("grestoreall", p);}
- void image (std::vector<double> &p) override {print("image", p);}
- void initclip (vector<double> &p) override {print("initclip", p);}
- void lineto (vector<double> &p) override {print("lineto", p);}
- void moveto (vector<double> &p) override {print("moveto", p);}
- void makepattern (vector<double> &p) override {print("makepattern", p);}
- void setpattern (vector<double> &p) override {print("setpattern", p);}
- void setpagedevice (vector<double> &p) override {print("setpagedevice", p);}
- void newpath (vector<double> &p) override {print("newpath", p);}
- void querypos (vector<double> &p) override {print("querypos", p);}
- void restore(std::vector<double> &p) override {print("restore", p);}
- void rotate (vector<double> &p) override {print("rotate", p);}
- void save(std::vector<double> &p) override {print("save", p);}
- void scale (vector<double> &p) override {print("scale", p);}
- void setblendmode (vector<double> &p) override {print("setblendmode", p);}
- void setcolorspace (vector<double> &p) override {print("setcolorspace", p);}
- void setcmykcolor (vector<double> &p) override {print("setcmykcolor", p);}
- void setdash (vector<double> &p) override {print("setdash", p);}
- void setfillconstantalpha (vector<double> &p) override {print("setfillconstantalpha", p);}
- void setgray (vector<double> &p) override {print("setgray", p);}
- void sethsbcolor (vector<double> &p) override {print("sethsbcolor", p);}
- void setisshapealpha (vector<double> &p) override {print("setisshapealpha", p);}
- void setlinecap (vector<double> &p) override {print("setlinecap", p);}
- void setlinejoin (vector<double> &p) override {print("setlinejoin", p);}
- void setlinewidth (vector<double> &p) override {print("setlinewidth", p);}
- void setmatrix (vector<double> &p) override {print("setmatrix", p);}
- void setmiterlimit (vector<double> &p) override {print("setmiterlimit", p);}
- void setnulldevice (vector<double> &p) override {print("setnulldevice", p);}
- void setrgbcolor (vector<double> &p) override {print("setrgbcolor", p);}
- void setstrokeconstantalpha (vector<double> &p) override {print("setstrokeconstantalpha", p);}
- void shfill (vector<double> &p) override {print("shfill", p);}
- void stroke (vector<double> &p) override {print("stroke", p);}
- void translate (vector<double> &p) override {print("translate", p);}
-
-
- string result () const {return _oss.str();}
- void clear () {_oss.str("");}
-
- protected:
- void print (const char *op, const vector<double> &p) {
- _oss << op;
- for (size_t i=0; i < p.size(); ++i)
- _oss << ' ' << p[i];
- _oss << ';';
- }
-
- private:
- ostringstream _oss;
-};
-
-
-TEST(PSInterpreterTest, init) {
- PSTestActions actions;
- PSInterpreter psi(&actions);
- ASSERT_TRUE(psi.active());
- EXPECT_EQ(actions.result(), "");
-}
-
-
-TEST(PSInterpreterTest, gsave_grestore) {
- PSTestActions actions;
- PSInterpreter psi(&actions);
- psi.execute("gsave ");
- EXPECT_EQ(actions.result(), "gsave;");
- actions.clear();
-
- psi.execute("grestore ");
- EXPECT_EQ(actions.result(), "setmatrix 1 0 0 1 0 0;applyscalevals 1 1 1;setlinewidth 1;setlinecap 0;setlinejoin 0;setmiterlimit 10;setcolorspace 0;setrgbcolor 0 0 0;setdash 0;grestore;");
- actions.clear();
-
- psi.execute("1 setlinecap 5 setmiterlimit 0 1 0 setrgbcolor gsave 0 setlinecap 10 setmiterlimit ");
- EXPECT_EQ(actions.result(), "setlinecap 1;setmiterlimit 5;setrgbcolor 0 1 0;gsave;setlinecap 0;setmiterlimit 10;");
- actions.clear();
-
- psi.execute("grestore ");
- EXPECT_EQ(actions.result(), "setmatrix 1 0 0 1 0 0;applyscalevals 1 1 1;setlinewidth 1;setlinecap 1;setlinejoin 0;setmiterlimit 5;setcolorspace 0;setrgbcolor 0 1 0;setdash 0;grestore;");
-}
-
-
-TEST(PSInterpreterTest, stroke_fill) {
- PSTestActions actions;
- PSInterpreter psi(&actions);
- psi.execute("0 0 moveto 10 10 lineto 0 10 lineto closepath stroke ");
- EXPECT_EQ(actions.result(), "setcolorspace 0;setrgbcolor 0 0 0;newpath 0;moveto 0 0;lineto 10 10;lineto 0 10;closepath;stroke;");
- actions.clear();
-
- psi.execute("0 0 moveto 10 10 lineto 0 10 lineto closepath fill ");
- EXPECT_EQ(actions.result(), "setcolorspace 0;setrgbcolor 0 0 0;newpath 0;moveto 0 0;lineto 10 10;lineto 0 10;closepath;fill;");
-}
-
-
-TEST(PSInterpreterTest, clip) {
- PSTestActions actions;
- PSInterpreter psi(&actions);
- psi.execute("initclip ");
- EXPECT_EQ(actions.result(), "initclip;");
- actions.clear();
-
- psi.execute("0 0 moveto 10 10 lineto 0 10 lineto closepath clip ");
- EXPECT_EQ(actions.result(), "newpath 0;moveto 0 0;lineto 10 10;lineto 0 10;closepath;clip;");
-}
-
-
-TEST(PSInterpreterTest, transform) {
- PSTestActions actions;
- PSInterpreter psi(&actions);
- psi.execute("10 10 scale 90 rotate 100 -100 translate ");
- EXPECT_EQ(actions.result(), "scale 10 10;applyscalevals 10 10 1;rotate 90;applyscalevals 10 10 0;translate 100 -100;");
-}
-
-
-TEST(PSInterpreterTest, calculate) {
- PSTestActions actions;
- PSInterpreter psi(&actions);
- psi.execute("2 3 add 4 mul 5 div rotate ");
- ASSERT_EQ(actions.result(), "rotate 4;applyscalevals 1 1 0.997564;");
-}
-
-
-TEST(PSInterpreterTest, setlinewidth) {
- PSTestActions actions;
- PSInterpreter psi(&actions);
- psi.execute("10 setlinewidth ");
- EXPECT_EQ(actions.result(), "setlinewidth 10;");
- actions.clear();
-
- psi.execute("5 5 scale 10 setlinewidth ");
- EXPECT_EQ(actions.result(), "scale 5 5;applyscalevals 5 5 1;setlinewidth 10;");
- actions.clear();
-
- psi.execute("90 rotate 10 setlinewidth ");
- EXPECT_EQ(actions.result(), "rotate 90;applyscalevals 5 5 0;setlinewidth 10;");
- actions.clear();
-
- psi.execute("-30 rotate 10 setlinewidth ");
- EXPECT_EQ(actions.result(), "rotate -30;applyscalevals 5 5 0.5;setlinewidth 10;");
-}
-
-
-TEST(PSInterpreterTest, matrix) {
- PSTestActions actions;
- PSInterpreter psi(&actions);
- psi.execute("matrix setmatrix ");
- EXPECT_EQ(actions.result(), "setmatrix 1 0 0 1 0 0;applyscalevals 1 1 1;");
- actions.clear();
- psi.execute("10 100 translate 30 rotate matrix currentmatrix setmatrix ");
- EXPECT_EQ(actions.result(), "translate 10 100;rotate 30;applyscalevals 1 1 0.866025;setmatrix 0.866025 0.5 -0.5 0.866025 10 100;applyscalevals 1 1 0.866025;");
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/PageRagesTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/PageRagesTest.cpp
deleted file mode 100644
index 8f7effc9f88..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/PageRagesTest.cpp
+++ /dev/null
@@ -1,163 +0,0 @@
-/*************************************************************************
-** PageRagesTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <ostream>
-#include "PageRanges.hpp"
-
-using namespace std;
-
-
-struct Range
-{
- int l, r;
-};
-
-
-static bool is_equal (const PageRanges &pr, const Range *r) {
- int i=0;
- for (PageRanges::ConstIterator it=pr.begin(); it != pr.end(); ++it) {
- if (it->first != r[i].l || it->second != r[i].r)
- return false;
- ++i;
- }
- return true;
-}
-
-
-TEST(PageRangesTest, single) {
- PageRanges pr;
- ASSERT_TRUE(pr.parse("123"));
- ASSERT_FALSE(pr.ranges().empty());
- ASSERT_EQ(pr.ranges().front(), PageRanges::Range(123,123));
- ASSERT_EQ(pr.numberOfPages(), 1u);
-}
-
-
-TEST(PageRangesTest, single_range) {
- PageRanges pr;
- ASSERT_TRUE(pr.parse("3-19"));
- ASSERT_FALSE(pr.ranges().empty());
- ASSERT_EQ(pr.ranges().front(), PageRanges::Range(3,19));
- ASSERT_EQ(pr.numberOfPages(), 17u);
-}
-
-
-TEST(PageRangesTest, single_range_inv) {
- PageRanges pr;
- ASSERT_TRUE(pr.parse("19-3"));
- ASSERT_FALSE(pr.ranges().empty());
- ASSERT_EQ(pr.ranges().front(), PageRanges::Range(3,19));
- ASSERT_EQ(pr.numberOfPages(), 17u);
-}
-
-
-TEST(PageRangesTest, single_range_lopen) {
- PageRanges pr;
- ASSERT_TRUE(pr.parse("-19"));
- ASSERT_FALSE(pr.ranges().empty());
- ASSERT_EQ(pr.ranges().front(), PageRanges::Range(1,19));
- ASSERT_EQ(pr.numberOfPages(), 19u);
-}
-
-
-TEST(PageRangesTest, single_range_ropen) {
- PageRanges pr;
- ASSERT_TRUE(pr.parse("4-", 100));
- ASSERT_FALSE(pr.ranges().empty());
- ASSERT_EQ(pr.ranges().front(), PageRanges::Range(4,100));
- ASSERT_EQ(pr.numberOfPages(), 97u);
-}
-
-
-TEST(PageRangesTest, multiple1) {
- PageRanges pr;
- ASSERT_TRUE(pr.parse("11,6,9,1,75,6,3"));
- ASSERT_EQ(pr.size(), 6u);
- Range cmp[] = {{1,1},{3,3},{6,6},{9,9},{11,11},{75,75}};
- ASSERT_TRUE(is_equal(pr, cmp));
- ASSERT_EQ(pr.numberOfPages(), 6u);
-}
-
-
-TEST(PageRangesTest, multiple2) {
- PageRanges pr;
- ASSERT_TRUE(pr.parse("2,6,9,1,75,6,3"));
- ASSERT_EQ(pr.size(), 4u);
- Range cmp[] = {{1,3},{6,6},{9,9},{75,75}};
- ASSERT_TRUE(is_equal(pr, cmp));
-}
-
-
-TEST(PageRangesTest, multiple3) {
- PageRanges pr;
- ASSERT_TRUE(pr.parse("2,6,9-11,1,25-,19-13,6,3", 100));
- ASSERT_EQ(pr.size(), 5u);
- Range cmp[] = {{1,3},{6,6},{9,11},{13,19},{25,100}};
- ASSERT_TRUE(is_equal(pr, cmp));
-}
-
-
-TEST(PageRangesTest, overlap1) {
- PageRanges pr;
- ASSERT_TRUE(pr.parse("5-11, 8-15"));
- ASSERT_EQ(pr.size(), 1u);
- Range cmp[] = {{5,15}};
- ASSERT_TRUE(is_equal(pr, cmp));
-}
-
-
-TEST(PageRangesTest, overlap2) {
- PageRanges pr;
- ASSERT_TRUE(pr.parse("23-30, 5-11, 17-23, 12-19"));
- ASSERT_EQ(pr.size(), 1u);
- Range cmp[] = {{5,30}};
- ASSERT_TRUE(is_equal(pr, cmp));
-}
-
-
-TEST(PageRangesTest, overlap3) {
- PageRanges pr;
- ASSERT_TRUE(pr.parse("22-30, 5-11, 21-23, 12-19"));
- ASSERT_EQ(pr.size(), 2u);
- Range cmp[] = {{5,19},{21,30}};
- ASSERT_TRUE(is_equal(pr, cmp));
-}
-
-
-TEST(PageRangesTest, overlap4) {
- PageRanges pr;
- ASSERT_TRUE(pr.parse("-15, 20-, 8, 12-16, 18-19", 100));
- ASSERT_EQ(pr.size(), 2u);
- Range cmp[] = {{1,16},{18,100}};
- ASSERT_TRUE(is_equal(pr, cmp));
- ASSERT_TRUE(pr.parse("17"));
- ASSERT_EQ(pr.size(), 1u);
- ASSERT_EQ(pr.ranges().front(), PageRanges::Range(1,100));
-}
-
-
-TEST(PageRangesTest, error) {
- PageRanges pr;
- ASSERT_FALSE(pr.parse("x"));
- ASSERT_FALSE(pr.parse("5-x"));
- ASSERT_FALSE(pr.parse("5 6"));
- ASSERT_FALSE(pr.parse("5,"));
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/PageSizeTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/PageSizeTest.cpp
deleted file mode 100644
index ed997951b70..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/PageSizeTest.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/*************************************************************************
-** PageSizeTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <vector>
-#include "PageSize.hpp"
-
-using namespace std;
-
-
-struct PageData {
- const char *name;
- double width, height; // in mm
-};
-
-
-const vector<PageData> pageData = {
- {"A4", 210, 297},
- {"a4", 210, 297},
- {"a4-p", 210, 297},
- {"a4-portrait", 210, 297},
- {"a4-l", 297, 210},
- {"a4-landscape", 297, 210},
- {"a5", 148, 210},
- {"b2", 500, 707},
- {"c10", 28, 40},
- {"D3", 272, 385},
- {"letter", 216, 279}
-};
-
-
-TEST(PageSizeTest, resize) {
- PageSize pageSize;
- EXPECT_FALSE(pageSize.valid());
- for (const PageData &data : pageData) {
- pageSize.resize(data.name);
- EXPECT_DOUBLE_EQ(pageSize.width().mm(), data.width) << data.name;
- EXPECT_DOUBLE_EQ(pageSize.height().mm(), data.height) << data.name;
- }
-}
-
-
-TEST(PageSizeTest, exceptions) {
- PageSize pageSize;
- EXPECT_THROW(pageSize.resize("a"), PageSizeException);
- EXPECT_THROW(pageSize.resize("e4"), PageSizeException);
- EXPECT_THROW(pageSize.resize("a4-unknown"), PageSizeException);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/PairTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/PairTest.cpp
deleted file mode 100644
index e5f502cdbc8..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/PairTest.cpp
+++ /dev/null
@@ -1,143 +0,0 @@
-/*************************************************************************
-** PairTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <sstream>
-#include "Pair.hpp"
-
-using namespace std;
-
-TEST(PairTest, constructor) {
- DPair p(-1.5, 2);
- ASSERT_EQ(p.x(), -1.5);
- ASSERT_EQ(p.y(), 2);
- DPair q = p;
- ASSERT_EQ(q.x(), -1.5);
- ASSERT_EQ(q.y(), 2);
-}
-
-
-TEST(PairTest, setter) {
- DPair p(1,2);
- ASSERT_EQ(p, DPair(1,2));
- p.x(3);
- ASSERT_EQ(p, DPair(3,2));
- p.y(5);
- ASSERT_EQ(p, DPair(3,5));
-}
-
-
-TEST(PairTest, length) {
- ASSERT_EQ(DPair(0,0).length(), 0);
- ASSERT_EQ(DPair(1,0).length(), 1);
- ASSERT_EQ(DPair(0,1).length(), 1);
- ASSERT_EQ(DPair(-1,0).length(), 1);
- ASSERT_EQ(DPair(0,-1).length(), 1);
-
- // check some Pythagorean triples
- for (int i=1; i < 10; ++i) {
- for (int j=i+1; j <= 10; ++j) {
- int a = j*j-i*i;
- int b = 2*i*j;
- int c = j*j+i*i;
- ASSERT_EQ(DPair(a, b).length(), c);
- ASSERT_EQ(DPair(b, a).length(), c);
- ASSERT_EQ(DPair(-a, b).length(), c);
- ASSERT_EQ(DPair(-b, a).length(), c);
- ASSERT_EQ(DPair(-a, -b).length(), c);
- }
- }
-}
-
-
-TEST(PairTest, add) {
- ASSERT_EQ(DPair(2,3)+DPair(0,0), DPair(2,3));
- ASSERT_EQ(DPair(2,3)+DPair(4,5), DPair(6,8));
- ASSERT_EQ(DPair(2,3)+DPair(-4,-5), DPair(-2,-2));
-}
-
-
-TEST(PairTest, sub) {
- ASSERT_EQ(DPair(2,3)-DPair(0,0), DPair(2,3));
- ASSERT_EQ(DPair(2,3)-DPair(4,5), DPair(-2,-2));
- ASSERT_EQ(DPair(2,3)-DPair(-4,-5), DPair(6,8));
-}
-
-
-TEST(PairTest, mul) {
- ASSERT_EQ(DPair(2,3)*0.0, DPair(0,0));
- ASSERT_EQ(DPair(2,3)*1.0, DPair(2,3));
- ASSERT_EQ(DPair(2,3)*2.0, DPair(4,6));
- ASSERT_EQ(DPair(2,3)*(-2.0), DPair(-4,-6));
-}
-
-
-TEST(PairTest, div) {
- ASSERT_EQ(DPair(2,3)/1.0, DPair(2,3));
- ASSERT_EQ(DPair(2,3)/2.0, DPair(1,1.5));
- ASSERT_EQ(DPair(2,3)/(-2.0), DPair(-1,-1.5));
-}
-
-
-TEST(PairTest, neg) {
- EXPECT_EQ(-DPair(0, 0), DPair(0, 0));
- EXPECT_EQ(-DPair(1, 2), DPair(-1, -2));
- EXPECT_EQ(-DPair(-1, -2), DPair(1, 2));
- EXPECT_EQ(-DPair(-1, 2), DPair(1, -2));
- EXPECT_EQ(-DPair(1, -2), DPair(-1, 2));
-}
-
-
-TEST(PairTest, abs) {
- EXPECT_EQ(abs(DPair(0, 0)), DPair(0, 0));
- EXPECT_EQ(abs(DPair(1, 2)), DPair(1, 2));
- EXPECT_EQ(abs(DPair(-1, -2)), DPair(1, 2));
- EXPECT_EQ(abs(DPair(-1, 2)), DPair(1, 2));
- EXPECT_EQ(abs(DPair(1, -2)), DPair(1, 2));
-}
-
-
-TEST(PairTest, equality) {
- ASSERT_TRUE(DPair(2,3) == DPair(2,3));
- ASSERT_FALSE(DPair(2,3) == DPair(-2,-3));
- ASSERT_TRUE(DPair(2,3)+DPair(4,5) == DPair(6,8));
- ASSERT_FALSE(DPair(2,3)+DPair(4,5) != DPair(6,8));
-}
-
-
-TEST(PairTest, ortho) {
- ASSERT_EQ(DPair(0,0).ortho(), DPair(0,0));
- ASSERT_EQ(DPair(1,0).ortho(), DPair(0,1));
- ASSERT_EQ(DPair(0,1).ortho(), DPair(-1,0));
- ASSERT_EQ(DPair(-1,0).ortho(), DPair(0,-1));
- ASSERT_EQ(DPair(0,-1).ortho(), DPair(1,0));
-}
-
-
-TEST(PairTest, write) {
- ostringstream oss;
- DPair p(3,4);
- oss << p;
- ASSERT_EQ(oss.str(), "(3,4)");
- p *= 2;
- oss.str("");
- oss << p;
- ASSERT_EQ(oss.str(), "(6,8)");
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/PapersizeSpecialTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/PapersizeSpecialTest.cpp
deleted file mode 100644
index 7cba1c18649..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/PapersizeSpecialTest.cpp
+++ /dev/null
@@ -1,152 +0,0 @@
-/*************************************************************************
-** PapersizeSpecialTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <sstream>
-#include "PapersizeSpecialHandler.hpp"
-#include "SpecialActions.hpp"
-
-using namespace std;
-
-class PapersizeSpecialTest : public ::testing::Test {
- protected:
- class PapersizeSpecialActions : public EmptySpecialActions {
- public:
- PapersizeSpecialActions () : _pageno(0) {}
- BoundingBox& bbox () override {return _bbox;}
- string getBBoxFormatString () const override {return _bboxFormatString;}
- void setBBoxFormatString (const string &str) {_bboxFormatString = str;}
- unsigned getCurrentPageNumber () const override {return _pageno;}
- void setCurrentPageNumber (unsigned pageno) {_pageno = pageno;}
-
- private:
- BoundingBox _bbox;
- string _bboxFormatString;
- unsigned _pageno;
- };
-
- class MyPapersizeSpecialHandler : public PapersizeSpecialHandler {
- public:
- void endPage (PapersizeSpecialActions &actions) {dviEndPage(actions.getCurrentPageNumber(), actions);}
- };
-
-
- void SetUp () override {
- handler.reset();
- }
-
- string bboxString () {
- return actions.bbox().toSVGViewBox();
- }
-
- void preprocess (const string &str) {
- istringstream iss(str);
- handler.preprocess("", iss, actions);
- }
-
- bool process (const string &str) {
- istringstream iss(str);
- return handler.process("", iss, actions);
- }
-
- void endPage () {
- handler.endPage(actions);
- }
-
- protected:
- MyPapersizeSpecialHandler handler;
- PapersizeSpecialActions actions;
-};
-
-
-TEST_F(PapersizeSpecialTest, name) {
- EXPECT_EQ(handler.name(), "papersize");
- ASSERT_EQ(handler.prefixes().size(), 1u);
- ASSERT_STREQ(handler.prefixes()[0], "papersize=");
-}
-
-
-TEST_F(PapersizeSpecialTest, disabled) {
- actions.setBBoxFormatString("min"); // --bbox=min => ignore papersize specials
- actions.setCurrentPageNumber(1);
- ASSERT_EQ(bboxString(), "0 0 0 0");
- preprocess("123,456");
- endPage();
- ASSERT_EQ(bboxString(), "0 0 0 0");
- ASSERT_TRUE(process("dummy"));
-}
-
-
-TEST_F(PapersizeSpecialTest, singlePage1) {
- actions.setBBoxFormatString("papersize"); // --bbox=papersize => evaluate papersize specials
- actions.setCurrentPageNumber(1);
- ASSERT_EQ(bboxString(), "0 0 0 0");
- preprocess("123bp,456bp");
- endPage();
- ASSERT_EQ(bboxString(), "-72 -72 123 456");
-}
-
-
-TEST_F(PapersizeSpecialTest, singlePage2) {
- actions.setBBoxFormatString("papersize");
- actions.setCurrentPageNumber(1);
- ASSERT_EQ(bboxString(), "0 0 0 0");
- preprocess("123bp,456bp");
- preprocess("333bp,444bp");
- preprocess("321bp,654bp");
- endPage();
- ASSERT_EQ(bboxString(), "-72 -72 321 654");
-}
-
-
-TEST_F(PapersizeSpecialTest, multiPage1) {
- actions.setBBoxFormatString("papersize");
- actions.setCurrentPageNumber(1);
- ASSERT_EQ(bboxString(), "0 0 0 0");
- preprocess("123bp,456bp");
- preprocess("333bp,444bp");
- preprocess("321bp,654bp");
- endPage();
- ASSERT_EQ(bboxString(), "-72 -72 321 654");
- actions.setCurrentPageNumber(2);
- endPage();
- ASSERT_EQ(bboxString(), "-72 -72 321 654");
- actions.setCurrentPageNumber(3);
- endPage();
- ASSERT_EQ(bboxString(), "-72 -72 321 654");
-}
-
-
-TEST_F(PapersizeSpecialTest, multiPage2) {
- actions.setBBoxFormatString("papersize");
- actions.setCurrentPageNumber(1);
- ASSERT_EQ(bboxString(), "0 0 0 0");
- preprocess("123bp,456bp");
- preprocess("333bp");
- endPage();
- ASSERT_EQ(bboxString(), "-72 -72 333 333");
- actions.setCurrentPageNumber(2);
- endPage();
- ASSERT_EQ(bboxString(), "-72 -72 333 333");
- actions.setCurrentPageNumber(3);
- preprocess("321bp,456bp");
- endPage();
- ASSERT_EQ(bboxString(), "-72 -72 321 456");
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/RangeMapTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/RangeMapTest.cpp
deleted file mode 100644
index e9ca516d9cd..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/RangeMapTest.cpp
+++ /dev/null
@@ -1,195 +0,0 @@
-/*************************************************************************
-** RangeMapTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include "RangeMap.hpp"
-
-using namespace std;
-
-#define CHECK_RANGE(name, cmap, cmin, cmax, cid_min) \
- {SCOPED_TRACE(name); check_range(cmap, cmin, cmax, cid_min);}
-
-#define CHECK_ZERO(name, cmap, cmin, cmax) \
- {SCOPED_TRACE(name); check_zero(cmap, cmin, cmax);}
-
-
-static void check_range (const RangeMap &rangemap, int min, int max, int minval) {
- for (int i=min; i <= max; i++)
- ASSERT_EQ((int)rangemap.valueAt(i), minval+(i-min));
-}
-
-
-static void check_zero (const RangeMap &rangemap, int min, int max) {
- for (int i=min; i <= max; i++)
- ASSERT_EQ(rangemap.valueAt(i), 0u);
-}
-
-
-TEST(RangeMapTest, disjoint_ranges) {
- RangeMap rangemap;
- rangemap.addRange(5, 8, 1);
- ASSERT_EQ(rangemap.numRanges(), 1u);
- EXPECT_EQ(rangemap.numValues(), 4u);
- CHECK_RANGE("A", rangemap, 5, 8, 1);
- CHECK_ZERO("B", rangemap, 0, 4);
- CHECK_ZERO("C", rangemap, 9, 20);
-
- rangemap.addRange(10, 15, 5);
- ASSERT_EQ(rangemap.numRanges(), 2u);
- EXPECT_EQ(rangemap.numValues(), 10u);
- CHECK_RANGE("D", rangemap, 5, 8, 1);
- CHECK_RANGE("E", rangemap, 10, 15, 5);
- CHECK_ZERO("F", rangemap, 0, 4);
- CHECK_ZERO("G", rangemap, 9, 9);
- CHECK_ZERO("H", rangemap, 16, 20);
-
- rangemap.addRange(0, 3, 50);
- ASSERT_EQ(rangemap.numRanges(), 3u);
- EXPECT_EQ(rangemap.numValues(), 14u);
- CHECK_RANGE("I", rangemap, 0, 3, 50);
- CHECK_RANGE("J", rangemap, 5, 8, 1);
- CHECK_RANGE("K", rangemap, 10, 15, 5);
- CHECK_ZERO("L", rangemap, 4, 4);
- CHECK_ZERO("M", rangemap, 9, 9);
- CHECK_ZERO("N", rangemap, 16, 20);
-
- rangemap.addRange(16, 20, 1);
- ASSERT_EQ(rangemap.numRanges(), 4u);
- EXPECT_EQ(rangemap.numValues(), 19u);
- CHECK_RANGE("O", rangemap, 5, 8, 1);
- CHECK_RANGE("P", rangemap, 10, 15, 5);
- CHECK_RANGE("Q", rangemap, 0, 3, 50);
- CHECK_RANGE("R", rangemap, 16, 20, 1);
-}
-
-
-TEST(RangeMapTest, touching_ranges1) {
- RangeMap rangemap;
- rangemap.addRange(5, 8, 10);
- ASSERT_EQ(rangemap.numRanges(), 1u);
- EXPECT_EQ(rangemap.numValues(), 4u);
- CHECK_RANGE("A", rangemap, 5, 8, 10);
-
- rangemap.addRange(9, 15, 14);
- ASSERT_EQ(rangemap.numRanges(), 1u);
- EXPECT_EQ(rangemap.numValues(), 11u);
- CHECK_RANGE("B", rangemap, 5, 15, 10);
-
- rangemap.addRange(1, 4, 5);
- ASSERT_EQ(rangemap.numRanges(), 2u);
- EXPECT_EQ(rangemap.numValues(), 15u);
- CHECK_RANGE("C", rangemap, 1, 4, 5);
- CHECK_RANGE("D", rangemap, 5, 15, 10);
-
- rangemap.addRange(1, 4, 6);
- ASSERT_EQ(rangemap.numRanges(), 1u);
- EXPECT_EQ(rangemap.numValues(), 15u);
- CHECK_RANGE("E", rangemap, 1, 15, 6);
-}
-
-
-TEST(RangeMapTest, touching_ranges2) {
- RangeMap rangemap;
- rangemap.addRange(7, 8, 10);
- ASSERT_EQ(rangemap.numRanges(), 1u);
- CHECK_RANGE("A", rangemap, 7, 8, 10);
-
- rangemap.addRange(2, 3, 1);
- ASSERT_EQ(rangemap.numRanges(), 2u);
- CHECK_RANGE("B", rangemap, 2, 3, 1);
- CHECK_RANGE("C", rangemap, 7, 8, 10);
-
- rangemap.addRange(4, 4, 3);
- ASSERT_EQ(rangemap.numRanges(), 2u);
- CHECK_RANGE("D", rangemap, 2, 4, 1);
- CHECK_RANGE("E", rangemap, 7, 8, 10);
-}
-
-
-TEST(RangeMapTest, overlapping_ranges) {
- RangeMap rangemap;
- rangemap.addRange(5, 8, 10);
- rangemap.addRange(7, 15, 12);
- ASSERT_EQ(rangemap.numRanges(), 1u);
- CHECK_RANGE("A", rangemap, 5, 15, 10);
-
- rangemap.addRange(10, 20, 1);
- ASSERT_EQ(rangemap.numRanges(), 2u);
- CHECK_RANGE("B", rangemap, 5, 9, 10);
- CHECK_RANGE("C", rangemap, 10, 20, 1);
-
- rangemap.addRange(2, 7, 7);
- ASSERT_EQ(rangemap.numRanges(), 2u);
- CHECK_RANGE("D", rangemap, 2, 9, 7);
- CHECK_RANGE("E", rangemap, 10, 20, 1);
-
- rangemap.addRange(1, 12, 100);
- ASSERT_EQ(rangemap.numRanges(), 2u);
- CHECK_RANGE("F", rangemap, 1, 12, 100);
- CHECK_RANGE("G", rangemap, 13, 20, 4);
-
- rangemap.addRange(0, 30, 1);
- ASSERT_EQ(rangemap.numRanges(), 1u);
- CHECK_RANGE("H", rangemap, 0, 30, 1);
-}
-
-
-TEST(RangeMapTest, inner_ranges) {
- RangeMap rangemap;
- rangemap.addRange(5, 20, 1);
- rangemap.addRange(10, 15, 6);
- ASSERT_EQ(rangemap.numRanges(), 1u);
- CHECK_RANGE("A", rangemap, 5, 20, 1);
-
- rangemap.addRange(10, 15, 100);
- ASSERT_EQ(rangemap.numRanges(), 3u);
- CHECK_RANGE("B", rangemap, 5, 9, 1);
- CHECK_RANGE("C", rangemap, 10, 15, 100);
- CHECK_RANGE("D", rangemap, 16, 20, 12);
-
- rangemap.addRange(15, 15, 50);
- ASSERT_EQ(rangemap.numRanges(), 4u);
- CHECK_RANGE("E", rangemap, 5, 9, 1);
- CHECK_RANGE("F", rangemap, 10, 14, 100);
- CHECK_RANGE("G", rangemap, 15, 15, 50);
- CHECK_RANGE("H", rangemap, 16, 20, 12);
-
- rangemap.addRange(6, 19, 1);
- ASSERT_EQ(rangemap.numRanges(), 3u);
- CHECK_RANGE("I", rangemap, 5, 5, 1);
- CHECK_RANGE("J", rangemap, 6, 19, 1);
- CHECK_RANGE("K", rangemap, 20, 20, 16);
-}
-
-
-TEST(RangeMapTest, iterators) {
- RangeMap rangemap;
- rangemap.addRange(5, 10, 1);
- rangemap.addRange(20, 25, 60);
- ASSERT_EQ(rangemap.numRanges(), 2u);
- using Pair32 = pair<uint32_t,uint32_t>;
- vector<Pair32> pairs = {
- Pair32(5, 1), Pair32(6, 2), Pair32(7, 3), Pair32(8, 4), Pair32(9, 5), Pair32(10, 6),
- Pair32(20, 60), Pair32(21, 61), Pair32(22, 62), Pair32(23, 63), Pair32(24, 64), Pair32(25, 65)
- };
- int count=0;
- for (auto p : rangemap)
- ASSERT_EQ(p, pairs[count++]);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/SVGOutputTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/SVGOutputTest.cpp
deleted file mode 100644
index 79f89728e16..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/SVGOutputTest.cpp
+++ /dev/null
@@ -1,161 +0,0 @@
-/*************************************************************************
-** SVGOutputTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <fstream>
-#include "FileSystem.hpp"
-#include "MessageException.hpp"
-#include "SVGOutput.hpp"
-#include "ZLibOutputStream.hpp"
-
-#ifndef SRCDIR
-#define SRCDIR "."
-#endif
-
-using namespace std;
-
-struct SVGOutputTest : public ::testing::Test {
- void SetUp () override {FileSystem::chdir(SRCDIR);}
-};
-
-
-TEST_F(SVGOutputTest, defaults) {
- SVGOutput out("SVGOutputTest.cpp", "");
- EXPECT_EQ(out.filepath(1, 1).relative(), "SVGOutputTest.svg");
- EXPECT_EQ(out.filepath(5, 9).relative(), "SVGOutputTest-5.svg");
- EXPECT_EQ(out.filepath(5, 10).relative(), "SVGOutputTest-05.svg");
- EXPECT_EQ(out.filepath(5, 256).relative(), "SVGOutputTest-005.svg");
-}
-
-
-TEST_F(SVGOutputTest, widthSpecifier) {
- {
- SVGOutput out("SVGOutputTest.cpp", "%f--%3p");
- EXPECT_EQ(out.filepath(5, 9).relative(), "SVGOutputTest--005.svg");
- EXPECT_EQ(out.filepath(54, 65).relative(), "SVGOutputTest--054.svg");
- EXPECT_EQ(out.filepath(543, 654).relative(), "SVGOutputTest--543.svg");
- }{
- SVGOutput out("SVGOutputTest.cpp", "%f--%3p--%P");
- EXPECT_EQ(out.filepath(5, 9).relative(), "SVGOutputTest--005--9.svg");
- EXPECT_EQ(out.filepath(54, 65).relative(), "SVGOutputTest--054--65.svg");
- EXPECT_EQ(out.filepath(543, 654).relative(), "SVGOutputTest--543--654.svg");
- }{
- SVGOutput out("SVGOutputTest.cpp", "%f--%3p--%3P");
- EXPECT_EQ(out.filepath(5, 9).relative(), "SVGOutputTest--005--009.svg");
- EXPECT_EQ(out.filepath(54, 65).relative(), "SVGOutputTest--054--065.svg");
- EXPECT_EQ(out.filepath(543, 654).relative(), "SVGOutputTest--543--654.svg");
- }{
- SVGOutput out("SVGOutputTest.cpp", "%5f--%3p--%3P");
- EXPECT_EQ(out.filepath(5, 9).relative(), "SVGOutputTest--005--009.svg");
- EXPECT_EQ(out.filepath(54, 65).relative(), "SVGOutputTest--054--065.svg");
- EXPECT_EQ(out.filepath(543, 654).relative(), "SVGOutputTest--543--654.svg");
- }
-}
-
-
-TEST_F(SVGOutputTest, expressions) {
- {
- SVGOutput out("SVGOutputTest.cpp", "no-macro");
- EXPECT_EQ(out.filepath(5, 9).relative(), "no-macro.svg");
- EXPECT_EQ(out.filepath(54, 65).relative(), "no-macro.svg");
- EXPECT_EQ(out.filepath(543, 654).relative(), "no-macro.svg");
- }{
- SVGOutput out("SVGOutputTest.cpp", "%f--%(p-1)");
- EXPECT_EQ(out.filepath(5, 9).relative(), "SVGOutputTest--4.svg");
- EXPECT_EQ(out.filepath(54, 65).relative(), "SVGOutputTest--53.svg");
- EXPECT_EQ(out.filepath(543, 654).relative(), "SVGOutputTest--542.svg");
- }{
- SVGOutput out("SVGOutputTest.cpp", "%f--%3(p-1)");
- EXPECT_EQ(out.filepath(5, 9).relative(), "SVGOutputTest--004.svg");
- EXPECT_EQ(out.filepath(54, 65).relative(), "SVGOutputTest--053.svg");
- EXPECT_EQ(out.filepath(543, 654).relative(), "SVGOutputTest--542.svg");
- }{
- SVGOutput out("SVGOutputTest.cpp", "%f--%3(P+2p)");
- EXPECT_EQ(out.filepath(5, 9).relative(), "SVGOutputTest--019.svg");
- EXPECT_EQ(out.filepath(54, 65).relative(), "SVGOutputTest--173.svg");
- EXPECT_EQ(out.filepath(543, 654).relative(), "SVGOutputTest--1740.svg");
- }
-}
-
-
-TEST_F(SVGOutputTest, hashes) {
- SVGOutput::HashTriple hashes("dvihash", "opthash", "cmbhash");
- {
- SVGOutput out("SVGOutputTest.cpp", "%f-%hd-x");
- EXPECT_EQ(out.filepath(1, 10).relative(), "SVGOutputTest--x.svg");
- EXPECT_EQ(out.filepath(1, 10, hashes).relative(), "SVGOutputTest-dvihash-x.svg");
- }{
- SVGOutput out("SVGOutputTest.cpp", "%f-%hd-x-%hc%ho");
- EXPECT_EQ(out.filepath(1, 10).relative(), "SVGOutputTest--x-.svg");
- EXPECT_EQ(out.filepath(1, 10, hashes).relative(), "SVGOutputTest-dvihash-x-cmbhashopthash.svg");
- }{
- SVGOutput out("SVGOutputTest.cpp", "%f-%hd%p%ho");
- EXPECT_EQ(out.filepath(1, 10).relative(), "SVGOutputTest-01.svg");
- EXPECT_EQ(out.filepath(1, 10, hashes).relative(), "SVGOutputTest-dvihash01opthash.svg");
- }
-}
-
-
-TEST_F(SVGOutputTest, hashes_fail) {
- SVGOutput::HashTriple hashes("dvihash", "opthash", "cmbhash");
- {
- SVGOutput out("SVGOutputTest.cpp", "%f-%h-x");
- EXPECT_THROW(out.filepath(1, 10).relative(), MessageException);
- EXPECT_THROW(out.filepath(1, 10, hashes).relative(), MessageException);
- }{
- SVGOutput out("SVGOutputTest.cpp", "%f-%hd-x-%ha%ho");
- EXPECT_THROW(out.filepath(1, 10).relative(), MessageException);
- EXPECT_THROW(out.filepath(1, 10, hashes).relative(), MessageException);
- }
-}
-
-
-TEST_F(SVGOutputTest, getPageStream) {
- {
- SVGOutput out("", "");
- ostream &os = out.getPageStream(1, 10);
- EXPECT_EQ(&os, &cout);
- }{
- SVGOutput out("SVGOutputTest.cpp", "%f-%p");
- ostream *os1 = &out.getPageStream(1, 10);
- EXPECT_TRUE(dynamic_cast<ofstream*>(os1));
- ostream *os2 = &out.getPageStream(1, 10);
- EXPECT_EQ(os1, os2);
- }
- FileSystem::remove("SVGOutputTest-01.svg");
- {
- SVGOutput out("SVGOutputTest.cpp", "%f-%p", 9);
- ostream *os = &out.getPageStream(1, 10);
- EXPECT_TRUE(dynamic_cast<ZLibOutputStream*>(os));
- }
- FileSystem::remove("SVGOutputTest-01.svgz");
-}
-
-
-TEST_F(SVGOutputTest, ignore) {
- SVGOutput out("SVGOutputTest.cpp", "%x %y");
- EXPECT_EQ(out.filepath(5, 9).relative(), "SVGOutputTest-5.svg");
-}
-
-
-TEST_F(SVGOutputTest, error) {
- SVGOutput out("SVGOutputTest.cpp", "%(p/0)");
- EXPECT_THROW(out.filepath(5, 9).relative(), MessageException);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/ShadingPatchTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/ShadingPatchTest.cpp
deleted file mode 100644
index 15e643f9773..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/ShadingPatchTest.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-/*************************************************************************
-** ShadingPatchTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include "ShadingPatch.hpp"
-#include "TensorProductPatch.hpp"
-#include "TriangularPatch.hpp"
-
-using namespace std;
-
-
-TEST(ShadingPatchTest, create) {
- auto patch = ShadingPatch::create(4, Color::ColorSpace::RGB);
- EXPECT_TRUE(dynamic_cast<TriangularPatch*>(patch.get()));
- patch = ShadingPatch::create(5, Color::ColorSpace::RGB);
- EXPECT_TRUE(dynamic_cast<LatticeTriangularPatch*>(patch.get()));
- patch = ShadingPatch::create(6, Color::ColorSpace::RGB);
- EXPECT_TRUE(dynamic_cast<CoonsPatch*>(patch.get()));
- patch = ShadingPatch::create(7, Color::ColorSpace::RGB);
- EXPECT_TRUE(dynamic_cast<TensorProductPatch*>(patch.get()));
-}
-
-
-TEST(ShadingPatchTest, fail) {
- for (int i=0; i < 4; i++) {
- EXPECT_THROW(ShadingPatch::create(i, Color::ColorSpace::RGB), ShadingException);
- }
-}
-
-
-TEST(ShadingPatchTest, colorQueryFuncs) {
- vector<DPair> points(3);
- vector<Color> colors(3);
- colors[0].setRGB(1.0, 0.0, 0.0);
- colors[1].setRGB(0.0, 1.0, 0.0);
- colors[2].setRGB(0.0, 0.0, 1.0);
- TriangularPatch tp1(points, colors, Color::ColorSpace::RGB, 0, 0);
- EXPECT_EQ(tp1.colorAt(0, 0).rgbString(), "#f00");
- EXPECT_EQ(tp1.colorAt(1, 0).rgbString(), "#0f0");
- EXPECT_EQ(tp1.colorAt(0, 1).rgbString(), "#00f");
-
- colors[0].setGray(0.2);
- colors[1].setGray(0.4);
- colors[2].setGray(0.6);
- TriangularPatch tp2(points, colors, Color::ColorSpace::GRAY, 0, 0);
- EXPECT_EQ(tp2.colorAt(0, 0).rgbString(), "#333");
- EXPECT_EQ(tp2.colorAt(1, 0).rgbString(), "#666");
- EXPECT_EQ(tp2.colorAt(0, 1).rgbString(), "#999");
-
- colors[0].setCMYK(1.0, 0.0, 0.0, 0.2);
- colors[1].setCMYK(0.0, 1.0, 0.0, 0.4);
- colors[2].setCMYK(0.0, 0.0, 1.0, 0.6);
- TriangularPatch tp3(points, colors, Color::ColorSpace::CMYK, 0, 0);
- EXPECT_EQ(tp3.colorAt(0, 0).rgbString(), "#29cccc");
- EXPECT_EQ(tp3.colorAt(1, 0).rgbString(), "#993d99");
- EXPECT_EQ(tp3.colorAt(0, 1).rgbString(), "#66663d");
-
- colors[0].setLab(55, 80, 68);
- colors[1].setLab(30, 62, -108);
- colors[2].setLab(85, -72, 61);
- TriangularPatch tp4(points, colors, Color::ColorSpace::LAB, 0, 0);
- EXPECT_EQ(tp4.colorAt(0, 0).rgbString(), "#ff1402");
- EXPECT_EQ(tp4.colorAt(1, 0).rgbString(), "#002bf8");
- EXPECT_EQ(tp4.colorAt(0, 1).rgbString(), "#4af356");
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/SpecialManagerTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/SpecialManagerTest.cpp
deleted file mode 100644
index 0ccaf5a1724..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/SpecialManagerTest.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-/*************************************************************************
-** SpecialManagerTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <sstream>
-#include "SpecialManager.hpp"
-#include "BgColorSpecialHandler.hpp"
-#include "ColorSpecialHandler.hpp"
-#include "DvisvgmSpecialHandler.hpp"
-#include "EmSpecialHandler.hpp"
-#include "HtmlSpecialHandler.hpp"
-#include "NoPsSpecialHandler.hpp"
-#include "PapersizeSpecialHandler.hpp"
-#include "PdfSpecialHandler.hpp"
-#include "TpicSpecialHandler.hpp"
-#include "utility.hpp"
-
-using namespace std;
-
-class SpecialManagerTest : public ::testing::Test {
- public:
- SpecialManagerTest () {
- handlers.emplace_back(util::make_unique<BgColorSpecialHandler>());
- handlers.emplace_back(util::make_unique<ColorSpecialHandler>());
- handlers.emplace_back(util::make_unique<DvisvgmSpecialHandler>());
- handlers.emplace_back(util::make_unique<EmSpecialHandler>());
- handlers.emplace_back(util::make_unique<HtmlSpecialHandler>());
- handlers.emplace_back(util::make_unique<PapersizeSpecialHandler>());
- handlers.emplace_back(util::make_unique<PdfSpecialHandler>());
- handlers.emplace_back(util::make_unique<TpicSpecialHandler>());
- handlers.emplace_back(util::make_unique<NoPsSpecialHandler>());
- }
-
- vector<unique_ptr<SpecialHandler>> handlers;
-};
-
-
-TEST_F(SpecialManagerTest, info1) {
- SpecialManager &sm = SpecialManager::instance();
- sm.unregisterHandlers();
- sm.registerHandlers(handlers, "");
- ostringstream oss;
- sm.writeHandlerInfo(oss);
- string expected =
- "bgcolor background color special\n"
- "color complete support of color specials\n"
- "dvisvgm special set for embedding raw SVG snippets\n"
- "em line drawing statements of the emTeX special set\n"
- "html hyperref specials\n"
- "papersize special to set the page size\n"
- "pdf PDF hyperlink, font map, and pagesize specials\n"
- "tpic TPIC specials\n";
- EXPECT_EQ(oss.str(), expected);
-}
-
-
-TEST_F(SpecialManagerTest, info2) {
- SpecialManager &sm = SpecialManager::instance();
- sm.unregisterHandlers();
- sm.registerHandlers(handlers, "color,em");
- ostringstream oss;
- sm.writeHandlerInfo(oss);
- string expected =
- "bgcolor background color special\n"
- "dvisvgm special set for embedding raw SVG snippets\n"
- "html hyperref specials\n"
- "papersize special to set the page size\n"
- "pdf PDF hyperlink, font map, and pagesize specials\n"
- "tpic TPIC specials\n";
- EXPECT_EQ(oss.str(), expected);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/SplittedCharInputBufferTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/SplittedCharInputBufferTest.cpp
deleted file mode 100644
index 093b4c652ef..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/SplittedCharInputBufferTest.cpp
+++ /dev/null
@@ -1,179 +0,0 @@
-/*************************************************************************
-** SplittedCharInputBufferTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <cstring>
-#include <sstream>
-#include "InputBuffer.hpp"
-#include "InputReader.hpp"
-
-using std::istringstream;
-
-TEST(SplittedCharInputBufferTest, get) {
- const char *buf1 = "abcdef";
- const char *buf2 = "ghijklmnopqrstuvwxyz";
- SplittedCharInputBuffer buffer(buf1, strlen(buf1), buf2, strlen(buf2));
- BufferInputReader in(buffer);
- bool ok=true;
- for (int i=0; !in.eof() && ok; i++) {
- EXPECT_LT(i, 26);
- EXPECT_EQ(in.get(), 'a'+i);
- ok = (i < 26);
- }
-}
-
-
-TEST(SplittedCharInputBufferTest, peek) {
- const char *buf1 = "abcdef";
- const char *buf2 = "ghijklmnopqrstuvwxyz";
- SplittedCharInputBuffer buffer(buf1, strlen(buf1), buf2, strlen(buf2));
- BufferInputReader in(buffer);
- EXPECT_EQ(in.peek(), 'a');
- for (int i=0; i < 26; i++)
- EXPECT_EQ(in.peek(i), 'a'+i);
- EXPECT_EQ(in.peek(26), -1);
-}
-
-
-TEST(SplittedCharInputBufferTest, check) {
- const char *buf1 = "abcde";
- const char *buf2 = "fghijklmnopqrstuvwxyz";
- SplittedCharInputBuffer buffer(buf1, strlen(buf1), buf2, strlen(buf2));
- BufferInputReader in(buffer);
- EXPECT_TRUE(in.check("abc", false));
- EXPECT_TRUE(in.check("abc", true));
- EXPECT_TRUE(in.check("def", true));
- EXPECT_TRUE(in.check("ghi", true));
- EXPECT_TRUE(in.check("jkl", true));
- EXPECT_TRUE(in.check("mnopqrst", false));
- EXPECT_TRUE(in.check("mnopqrst", true));
- EXPECT_TRUE(in.check("uvwxyz", true));
- EXPECT_EQ(in.get(), -1);
-}
-
-
-TEST(SplittedCharInputBufferTest, skip) {
- const char *buf1 = "abcde";
- const char *buf2 = "fghijklmnopqrstuvwxyz";
- SplittedCharInputBuffer buffer(buf1, strlen(buf1), buf2, strlen(buf2));
- BufferInputReader in(buffer);
- in.skip(3);
- EXPECT_EQ(in.peek(), 'd');
- in.skipUntil("ijk");
- EXPECT_EQ(in.peek(), 'l');
- in.skipUntil("z");
- EXPECT_TRUE(in.eof());
-}
-
-
-TEST(SplittedCharInputBufferTest, parseInt) {
- const char *buf1 = "1234,-";
- const char *buf2 = "5,+6,10.-";
- SplittedCharInputBuffer buffer(buf1, strlen(buf1), buf2, strlen(buf2));
- BufferInputReader in(buffer);
- int n;
- EXPECT_TRUE(in.parseInt(n));
- EXPECT_EQ(n, 1234);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_TRUE(in.parseInt(n));
- EXPECT_EQ(n, -5);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_TRUE(in.parseInt(n));
- EXPECT_EQ(n, 6);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_TRUE(in.parseInt(n));
- EXPECT_EQ(n, 10);
- EXPECT_EQ(in.get(), '.');
-
- EXPECT_FALSE(in.parseInt(n));
- EXPECT_EQ(in.get(), '-');
-}
-
-
-TEST(SplittedCharInputBufferTest, parseUInt_base) {
- const char *buf1 = "1234,-5,10,1a";
- const char *buf2 = "bc,1234a";
- SplittedCharInputBuffer buffer(buf1, strlen(buf1), buf2, strlen(buf2));
- BufferInputReader in(buffer);
- unsigned n;
- EXPECT_TRUE(in.parseUInt(10, n));
- EXPECT_EQ(n, 1234u);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_FALSE(in.parseUInt(10, n));
- in.get();
- EXPECT_TRUE(in.parseUInt(10, n));
- EXPECT_EQ(n, 5u);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_TRUE(in.parseUInt(16, n));
- EXPECT_EQ(n, 16u);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_TRUE(in.parseUInt(16, n));
- EXPECT_EQ(n, 0x1ABCu);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_TRUE(in.parseUInt(8, n));
- EXPECT_EQ(n, 01234u);
- EXPECT_EQ(in.get(), 'a');
-}
-
-
-TEST(SplittedCharInputBufferTest, parseDouble) {
- const char *buf1 = "1234,-5,6.12,-3";
- const char *buf2 = ".1415,-.1,12e2,10.-";
- SplittedCharInputBuffer buffer(buf1, strlen(buf1), buf2, strlen(buf2));
- BufferInputReader in(buffer);
- double d;
- EXPECT_EQ(in.parseDouble(d), 'i');
- EXPECT_EQ(d, 1234.0);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_EQ(in.parseDouble(d), 'i');
- EXPECT_EQ(d, -5.0);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_EQ(in.parseDouble(d), 'f');
- EXPECT_EQ(d, 6.12);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_EQ(in.parseDouble(d), 'f');
- EXPECT_EQ(d, -3.1415);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_EQ(in.parseDouble(d), 'f');
- EXPECT_EQ(d, -0.1);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_EQ(in.parseDouble(d), 'f');
- EXPECT_EQ(d, 1200);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_EQ(in.parseDouble(d), 'f');
- EXPECT_EQ(d, 10.0);
- EXPECT_EQ(in.peek(), '-');
-
- EXPECT_FALSE(in.parseDouble(d));
- EXPECT_EQ(in.get(), '-');
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamInputBufferTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamInputBufferTest.cpp
deleted file mode 100644
index 845c5f22bab..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamInputBufferTest.cpp
+++ /dev/null
@@ -1,262 +0,0 @@
-/*************************************************************************
-** StreamInputBufferTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <map>
-#include <sstream>
-#include <stdexcept>
-#include <string>
-#include "InputBuffer.hpp"
-#include "InputReader.hpp"
-
-using std::istringstream;
-using std::map;
-using std::string;
-
-TEST(StreamInputBufferTest, get) {
- istringstream iss("abcdefghijklmnopqrstuvwxyz");
- StreamInputBuffer buffer(iss, 10);
- BufferInputReader in(buffer);
- bool ok=true;
- for (int i=0; !in.eof() && ok; i++) {
- EXPECT_LT(i, 26);
- EXPECT_EQ(in.get(), 'a'+i);
- ok = (i < 26);
- }
-}
-
-
-TEST(StreamInputBufferTest, peek) {
- istringstream iss("abcdefghijklmnopqrstuvwxyz");
- StreamInputBuffer buffer(iss, 10);
- BufferInputReader in(buffer);
- EXPECT_EQ(in.peek(), 'a');
- for (int i=0; i < 20; i++)
- EXPECT_EQ(in.peek(i), 'a'+i);
- // we can't look forward more than BUFSIZE characters (10 in this case)
- for (int i=21; i < 26; i++)
- EXPECT_EQ(in.peek(i), -1);
-}
-
-
-TEST(StreamInputBufferTest, check) {
- istringstream iss("abcdefghijklmnopqrstuvwxyz");
- StreamInputBuffer buffer(iss, 10);
- BufferInputReader in(buffer);
- EXPECT_TRUE(in.check("abc", false));
- EXPECT_TRUE(in.check("abc", true));
- EXPECT_TRUE(in.check("def", true));
- EXPECT_TRUE(in.check("ghi", true));
- EXPECT_TRUE(in.check("jkl", true));
- EXPECT_TRUE(in.check("mnopqrst", false));
- EXPECT_TRUE(in.check("mnopqrst", true));
- EXPECT_TRUE(in.check("uvwxyz", true));
-}
-
-
-TEST(StreamInputBufferTest, skip) {
- istringstream iss("abcdefghijklmnopqrstuvwxyz");
- StreamInputBuffer buffer(iss, 10);
- BufferInputReader in(buffer);
- in.skip(3);
- EXPECT_EQ(in.peek(), 'd');
- in.skipUntil("ijk");
- EXPECT_EQ(in.peek(), 'l');
- in.skipUntil("z");
- EXPECT_TRUE(in.eof());
-}
-
-
-TEST(StreamInputBufferTest, readUntil) {
- istringstream iss("abcdefghijklmnopqrstuvwxyz");
- StreamInputBuffer buffer(iss, 10);
- BufferInputReader in(buffer);
- EXPECT_EQ(in.readUntil("ijk"), "abcdefghijk");
- EXPECT_EQ(in.peek(), 'l');
- EXPECT_EQ(in.readUntil("q"), "lmnopq");
- EXPECT_EQ(in.peek(), 'r');
- EXPECT_EQ(in.readUntil("X"), "rstuvwxyz");
- EXPECT_LT(in.peek(), 0);
- EXPECT_TRUE(in.eof());
-}
-
-
-TEST(StreamInputBufferTest, parseInt) {
- istringstream iss("1234,-5,+6,10.-");
- StreamInputBuffer buffer(iss, 10);
- BufferInputReader in(buffer);
- int n;
- EXPECT_TRUE(in.parseInt(n));
- EXPECT_EQ(n, 1234);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_TRUE(in.parseInt(n));
- EXPECT_EQ(n, -5);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_TRUE(in.parseInt(n));
- EXPECT_EQ(n, 6);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_TRUE(in.parseInt(n));
- EXPECT_EQ(n, 10);
- EXPECT_EQ(in.get(), '.');
-
- EXPECT_FALSE(in.parseInt(n));
- EXPECT_EQ(in.get(), '-');
-}
-
-
-TEST(StreamInputBufferTest, parseUInt_base) {
- istringstream iss("1234,-5,10,1abc,1234a");
- StreamInputBuffer buffer(iss, 10);
- BufferInputReader in(buffer);
- unsigned n;
- EXPECT_TRUE(in.parseUInt(10, n));
- EXPECT_EQ(n, 1234u);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_FALSE(in.parseUInt(10, n));
- in.get();
- EXPECT_TRUE(in.parseUInt(10, n));
- EXPECT_EQ(n, 5u);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_TRUE(in.parseUInt(16, n));
- EXPECT_EQ(n, 16u);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_TRUE(in.parseUInt(16, n));
- EXPECT_EQ(n, 0x1ABCu);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_TRUE(in.parseUInt(8, n));
- EXPECT_EQ(n, 01234u);
- EXPECT_EQ(in.get(), 'a');
-}
-
-
-TEST(StreamInputBufferTest, parseDouble) {
- istringstream iss("1234,-5,6.12,-3.1415,-0.5,-.1,12e2,10.-");
- StreamInputBuffer buffer(iss, 10);
- BufferInputReader in(buffer);
- double d;
- EXPECT_EQ(in.parseDouble(d), 'i');
- EXPECT_EQ(d, 1234.0);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_EQ(in.parseDouble(d), 'i');
- EXPECT_EQ(d, -5.0);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_EQ(in.parseDouble(d), 'f');
- EXPECT_EQ(d, 6.12);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_EQ(in.parseDouble(d), 'f');
- EXPECT_EQ(d, -3.1415);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_EQ(in.parseDouble(d), 'f');
- EXPECT_EQ(d, -0.5);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_EQ(in.parseDouble(d), 'f');
- EXPECT_EQ(d, -0.1);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_EQ(in.parseDouble(d), 'f');
- EXPECT_EQ(d, 1200);
- EXPECT_EQ(in.get(), ',');
-
- EXPECT_EQ(in.parseDouble(d), 'f');
- EXPECT_EQ(d, 10.0);
- EXPECT_EQ(in.peek(), '-');
-
- EXPECT_FALSE(in.parseDouble(d));
- EXPECT_EQ(in.get(), '-');
-}
-
-
-TEST(StreamInputBufferTest, attribs1) {
- istringstream iss("aaa=1 bbb=2 c-c-c=3 3d=4 e");
- StreamInputBuffer buffer(iss, 10);
- BufferInputReader in(buffer);
- map<string,string> attr;
- int s = in.parseAttributes(attr, true);
- EXPECT_EQ(s, 3);
- EXPECT_EQ(attr["aaa"], "1");
- EXPECT_EQ(attr["bbb"], "2");
- EXPECT_EQ(attr["c-c-c"], "3");
- EXPECT_THROW(attr.at("3d"), std::out_of_range);
- EXPECT_THROW(attr.at("e"), std::out_of_range);
-}
-
-
-TEST(StreamInputBufferTest, attribs2) {
- istringstream iss("aaa='1' bbb='2' c-c-c='3' d e='value'");
- StreamInputBuffer buffer(iss, 10);
- BufferInputReader in(buffer);
- map<string,string> attr;
- int s = in.parseAttributes(attr, false, "'");
- EXPECT_EQ(s, 5);
- EXPECT_EQ(attr["aaa"], "1");
- EXPECT_EQ(attr["bbb"], "2");
- EXPECT_EQ(attr["c-c-c"], "3");
- EXPECT_EQ(attr["e"], "value");
- EXPECT_NO_THROW(attr.at("d"));
- EXPECT_TRUE(attr.at("d").empty());
-}
-
-
-TEST(StreamInputBufferTest, invalidate) {
- istringstream iss("aaa=1 bbb=2 ccc=3 d e");
- StreamInputBuffer buffer(iss, 10);
- EXPECT_EQ(buffer.get(), 'a');
- EXPECT_EQ(buffer.get(), 'a');
- EXPECT_EQ(buffer.get(), 'a');
- EXPECT_EQ(buffer.get(), '=');
- buffer.invalidate();
- EXPECT_TRUE(buffer.eof());
-}
-
-
-TEST(StreamInputBufferTest, find) {
- istringstream iss("abcd efgh ijklmn abc");
- StreamInputBuffer buffer(iss);
- BufferInputReader reader(buffer);
- EXPECT_EQ(reader.find('x'), -1);
- EXPECT_EQ(reader.find('c'), 2);
- EXPECT_EQ(reader.find(' '), 4);
-}
-
-
-TEST(StreamInputBufferTest, getString) {
- istringstream iss("abcd efgh \"ij'klm\"n abcdef '012\"34'xyz");
- StreamInputBuffer buffer(iss);
- BufferInputReader reader(buffer);
- EXPECT_EQ(reader.getString(), "abcd");
- EXPECT_EQ(reader.getString(), "efgh");
- EXPECT_EQ(reader.getQuotedString("\""), "ij'klm");
- EXPECT_EQ(reader.getQuotedString("\""), "");
- EXPECT_EQ(reader.getString(4), "n ab");
- EXPECT_EQ(reader.getQuotedString(0), "cdef");
- EXPECT_EQ(reader.getQuotedString("\"'"), "012\"34");
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamReaderTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamReaderTest.cpp
deleted file mode 100644
index 8a517be03c0..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamReaderTest.cpp
+++ /dev/null
@@ -1,128 +0,0 @@
-/*************************************************************************
-** StreamReaderTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <fstream>
-#include <sstream>
-#include <string>
-#include "StreamReader.hpp"
-#include "XXHashFunction.hpp"
-
-using namespace std;
-
-TEST(StreamReaderTest, readString) {
- string str1 = "dvisvgm converts DVI files to SVG.";
- istringstream iss(str1);
- ASSERT_TRUE(bool(iss));
- StreamReader reader(iss);
- string str2 = reader.readString(iss.str().length());
- EXPECT_EQ(str1, str2);
- iss.clear();
- iss.str(str1);
- str2 = reader.readString();
- EXPECT_EQ(str1, str2);
-}
-
-
-TEST(StreamReaderTest, readString_hashed) {
- string str1 = "dvisvgm converts DVI files to SVG.";
- istringstream iss(str1);
- ASSERT_TRUE(bool(iss));
- StreamReader reader(iss);
- XXH32HashFunction hashfunc;
- string str2 = reader.readString(iss.str().length(), hashfunc);
- EXPECT_EQ(str1, str2);
- EXPECT_EQ(hashfunc.digestString(), "190cc9d2");
- iss.clear();
- iss.str(str1);
- hashfunc.reset();
- str2 = reader.readString(hashfunc, false);
- EXPECT_EQ(hashfunc.digestString(), "190cc9d2");
-}
-
-
-TEST(StreamReaderTest, readUnsigned) {
- string str = "\x01\x02\x03\x04";
- istringstream iss(str);
- StreamReader reader(iss);
- uint32_t val = reader.readUnsigned(4);
- EXPECT_EQ(val, 0x01020304u);
-}
-
-
-TEST(StreamReaderTest, readUnsigned_hashed) {
- string str = "\x01\x02\x03\x04";
- istringstream iss(str);
- StreamReader reader(iss);
- XXH32HashFunction hashfunc;
- uint32_t val = reader.readUnsigned(4, hashfunc);
- EXPECT_EQ(val, 0x01020304u);
- EXPECT_EQ(hashfunc.digestString(), "fe96d19c");
-}
-
-
-TEST(StreamReaderTest, readSigned) {
- string str = "\xff\xee\xdd\xcc";
- istringstream iss(str);
- StreamReader reader(iss);
- int32_t val = reader.readSigned(4);
- EXPECT_EQ(val, int32_t(0xffeeddcc));
-}
-
-
-TEST(StreamReaderTest, readSigned_hashed) {
- string str = "\xff\xee\xdd\xcc";
- istringstream iss(str);
- StreamReader reader(iss);
- XXH32HashFunction hashfunc;
- int32_t val = reader.readSigned(4, hashfunc);
- EXPECT_EQ(val, int32_t(0xffeeddcc));
- EXPECT_EQ(hashfunc.digestString(), "8baa29bd");
-}
-
-
-TEST(StreamReaderTest, readBytes) {
- string str = "\xff\xee\xdd\xcc";
- istringstream iss(str);
- StreamReader reader(iss);
- vector<uint8_t> bytes = reader.readBytes(3);
- EXPECT_EQ(bytes.size(), 3u);
- EXPECT_EQ(bytes[0], 0xff);
- EXPECT_EQ(bytes[1], 0xee);
- EXPECT_EQ(bytes[2], 0xdd);
-}
-
-
-TEST(StreamReaderTest, readBytes_hashed) {
- string str = "\xff\xee\xdd\xcc";
- istringstream iss(str);
- StreamReader reader(iss);
- XXH32HashFunction hashfunc;
- vector<uint8_t> bytes = reader.readBytes(3, hashfunc);
- EXPECT_EQ(bytes.size(), 3u);
- EXPECT_EQ(bytes[0], 0xff);
- EXPECT_EQ(bytes[1], 0xee);
- EXPECT_EQ(bytes[2], 0xdd);
- EXPECT_EQ(hashfunc.digestString(), "5eda43a0");
- int byte = reader.readByte(hashfunc);
- EXPECT_EQ(byte, 0xcc);
- EXPECT_EQ(hashfunc.digestString(), "8baa29bd");
-}
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamWriterTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamWriterTest.cpp
deleted file mode 100644
index afddcfdfc27..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/StreamWriterTest.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-/*************************************************************************
-** StreamWriterTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <sstream>
-#include <string>
-#include "StreamWriter.hpp"
-#include "XXHashFunction.hpp"
-
-using namespace std;
-
-TEST(StreamWriterTest, writeString) {
- ostringstream oss;
- StreamWriter writer(oss);
- string str = "dvisvgm converts DVI files to SVG.";
- writer.writeString(str);
- EXPECT_EQ(oss.str(), str);
-
- oss.str("");
- writer.writeString(str, true);
- str.push_back('\0');
- EXPECT_EQ(oss.str(), str);
-}
-
-
-TEST(StreamWriterTest, writeString_hashed) {
- ostringstream oss;
- StreamWriter writer(oss);
- XXH32HashFunction hashfunc;
- string str = "dvisvgm converts DVI files to SVG.";
- writer.writeString(str, hashfunc);
- EXPECT_EQ(oss.str(), str);
- EXPECT_EQ(hashfunc.digestString(), "190cc9d2");
-
- oss.str("");
- hashfunc.reset();
- writer.writeString(str, hashfunc, true);
- str.push_back('\0');
- EXPECT_EQ(oss.str(), str);
- EXPECT_EQ(hashfunc.digestString(), "f82e1606");
-}
-
-
-TEST(StreamWriterTest, writeUnsigned) {
- ostringstream oss;
- StreamWriter writer(oss);
- writer.writeUnsigned(0x00010203, 4);
- string str;
- str.push_back('\x00');
- str.push_back('\x01');
- str.push_back('\x02');
- str.push_back('\x03');
- EXPECT_EQ(oss.str(), str);
-}
-
-
-TEST(StreamWriterTest, writeUnsigned_hashed) {
- ostringstream oss;
- StreamWriter writer(oss);
- XXH32HashFunction hashfunc;
- writer.writeUnsigned(0x00010203, 4, hashfunc);
- string str;
- str.push_back('\x00');
- str.push_back('\x01');
- str.push_back('\x02');
- str.push_back('\x03');
- EXPECT_EQ(oss.str(), str);
- EXPECT_EQ(hashfunc.digestString(), "80691e66");
-}
-
-
-TEST(StreamWriterTest, writeSigned) {
- ostringstream oss;
- StreamWriter writer(oss);
- writer.writeSigned(0xffeeddcc, 4);
- string str = "\xff\xee\xdd\xcc";
- EXPECT_EQ(oss.str(), str);
-}
-
-
-TEST(StreamWriterTest, writeSigned_hashed) {
- ostringstream oss;
- StreamWriter writer(oss);
- XXH32HashFunction hashfunc;
- writer.writeSigned(0xffeeddcc, 4, hashfunc);
- string str = "\xff\xee\xdd\xcc";
- EXPECT_EQ(oss.str(), str);
- EXPECT_EQ(hashfunc.digestString(), "8baa29bd");
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/StringMatcherTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/StringMatcherTest.cpp
deleted file mode 100644
index ca3072c7d34..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/StringMatcherTest.cpp
+++ /dev/null
@@ -1,144 +0,0 @@
-/*************************************************************************
-** StringMatcherTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <sstream>
-#include "InputReader.hpp"
-
-using namespace std;
-
-TEST(StringMatcherTest, match1) {
- istringstream iss;
- StringMatcher matcher("pattern");
- StreamInputReader ir(iss);
- EXPECT_FALSE(matcher.match(ir));
- EXPECT_EQ(matcher.charsRead(), 0u);
- EXPECT_LT(ir.peek(), 0);
-}
-
-
-TEST(StringMatcherTest, match2) {
- istringstream iss("abcpatpatternxyz");
- StringMatcher matcher("");
- StreamInputReader ir(iss);
- EXPECT_TRUE(matcher.match(ir));
- EXPECT_EQ(matcher.charsRead(), 1u);
- EXPECT_EQ(ir.peek(), 'b');
-}
-
-
-TEST(StringMatcherTest, match3) {
- istringstream iss("abcpatatternxyz");
- StringMatcher matcher("pattern");
- StreamInputReader ir(iss);
- EXPECT_FALSE(matcher.match(ir));
- EXPECT_EQ(matcher.charsRead(), 15u);
- EXPECT_LT(ir.peek(), 0);
-}
-
-
-TEST(StringMatcherTest, match4) {
- istringstream iss("abcpatpatternxyz");
- StringMatcher matcher("pattern");
- StreamInputReader ir(iss);
- EXPECT_TRUE(matcher.match(ir));
- EXPECT_EQ(matcher.charsRead(), 13u);
- EXPECT_EQ(ir.peek(), 'x');
- iss.clear();
- iss.str("abcpatpattern");
- EXPECT_TRUE(matcher.match(ir));
- EXPECT_EQ(matcher.charsRead(), 13u);
- EXPECT_LT(ir.peek(), 0);
- iss.clear();
- iss.str("pattern");
- EXPECT_TRUE(matcher.match(ir));
- EXPECT_EQ(matcher.charsRead(), 7u);
- EXPECT_LT(ir.peek(), 0);
-}
-
-
-TEST(StringMatcherTest, match5) {
- istringstream iss("abcpatpatternxyz");
- StringMatcher matcher("pattern");
- StreamInputReader ir(iss);
- EXPECT_TRUE(matcher.match(ir));
- EXPECT_EQ(matcher.charsRead(), 13u);
- EXPECT_EQ(ir.peek(), 'x');
-}
-
-
-TEST(StringMatcherTest, read1) {
- istringstream iss;
- StringMatcher matcher("pattern");
- StreamInputReader ir(iss);
- EXPECT_TRUE(matcher.read(ir).empty());
- EXPECT_EQ(matcher.charsRead(), 0u);
- EXPECT_LT(ir.peek(), 0);
-}
-
-
-TEST(StringMatcherTest, read2) {
- istringstream iss("abcpatpatternxyz");
- StringMatcher matcher("");
- StreamInputReader ir(iss);
- EXPECT_EQ(matcher.read(ir), "a");
- EXPECT_EQ(matcher.charsRead(), 1u);
- EXPECT_EQ(ir.peek(), 'b');
-}
-
-
-TEST(StringMatcherTest, read3) {
- istringstream iss("abcpatatternxyz");
- StringMatcher matcher("pattern");
- StreamInputReader ir(iss);
- EXPECT_EQ(matcher.read(ir), "abcpatatternxyz");
- EXPECT_EQ(matcher.charsRead(), 15u);
- EXPECT_LT(ir.peek(), 0);
-}
-
-
-TEST(StringMatcherTest, read4) {
- istringstream iss("abcpatpatternxyz");
- StringMatcher matcher("pattern");
- StreamInputReader ir(iss);
- EXPECT_EQ(matcher.read(ir), "abcpatpattern");
- EXPECT_EQ(matcher.charsRead(), 13u);
- EXPECT_EQ(ir.peek(), 'x');
- iss.clear();
- iss.str("abcpatpattern");
- EXPECT_EQ(matcher.read(ir), "abcpatpattern");
- EXPECT_EQ(matcher.charsRead(), 13u);
- EXPECT_LT(ir.peek(), 0);
- iss.clear();
- iss.str("pattern");
- EXPECT_EQ(matcher.read(ir), "pattern");
- EXPECT_EQ(matcher.charsRead(), 7u);
- EXPECT_LT(ir.peek(), 0);
-}
-
-
-TEST(StringMatcherTest, read5) {
- istringstream iss("abcpatpatternxyz");
- StringMatcher matcher("pattern");
- StreamInputReader ir(iss);
- EXPECT_EQ(matcher.read(ir), "abcpatpattern");
- EXPECT_EQ(matcher.charsRead(), 13u);
- EXPECT_EQ(ir.peek(), 'x');
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/SubfontTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/SubfontTest.cpp
deleted file mode 100644
index 95a4476ef73..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/SubfontTest.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-/*************************************************************************
-** SubfontTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include "Subfont.hpp"
-#include "testutil.hpp"
-
-using namespace std;
-
-TEST(SubfontTest, collect_subfonts) {
- try {
- if (SubfontDefinition *sfd = SubfontDefinition::lookup("sample")) {
- vector<Subfont*> subfonts = sfd->subfonts();
- const char *ids_cmp[] = {"00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "x1"};
- size_t size = sizeof(ids_cmp)/sizeof(Subfont*);
- EXPECT_EQ(subfonts.size(), size);
- for (size_t i=0; i < size; i++) {
- EXPECT_EQ(subfonts[i]->id(), ids_cmp[i]);
- }
- }
- }
- catch (SubfontException &e) {
- FAIL() << e.what();
- }
-}
-
-
-TEST(SubfontTest, read_table) {
- try {
- if (SubfontDefinition *sfd = SubfontDefinition::lookup("sample")) {
- // check scanning of single value entries
- Subfont *subfont = sfd->subfont("02");
- ASSERT_NE(subfont, nullptr);
- EXPECT_EQ(subfont->id(), "02");
- EXPECT_EQ(subfont->decode(0), 0xff45);
- EXPECT_EQ(subfont->decode(1), 0xff46);
- EXPECT_EQ(subfont->decode(2), 0xff47);
- EXPECT_EQ(subfont->decode(8), 0xff4d);
- EXPECT_EQ(subfont->decode(32), 0x3047);
- EXPECT_EQ(subfont->decode(255), 0x03ba);
-
- // check scanning of ranges
- subfont = sfd->subfont("x1");
- ASSERT_NE(subfont, nullptr);
- EXPECT_EQ(subfont->id(), "x1");
- EXPECT_EQ(subfont->decode(0), 0x0010);
- EXPECT_EQ(subfont->decode(1), 0x0011);
- EXPECT_EQ(subfont->decode(2), 0x0012);
- EXPECT_EQ(subfont->decode(0x20), 0x0030);
- EXPECT_EQ(subfont->decode(0x21), 0x1010);
- EXPECT_EQ(subfont->decode(0x41), 0x1030);
- EXPECT_EQ(subfont->decode(0x42), 0xe000);
- EXPECT_EQ(subfont->decode(0x43), 0);
-
- //check scanning of offset values
- EXPECT_EQ(subfont->decode(0x9f), 0);
- EXPECT_EQ(subfont->decode(0xa0), 0x1000);
- EXPECT_EQ(subfont->decode(0xa1), 0x2000);
- EXPECT_EQ(subfont->decode(0xa2), 0);
- }
- else
- WARNING("sample.sfd not found");
- }
- catch (SubfontException &e) {
- FAIL() << e.what() << " in line " << e.lineno();
- }
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/TFMReaderTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/TFMReaderTest.cpp
deleted file mode 100644
index 8f8da092cbe..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/TFMReaderTest.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-/*************************************************************************
-** TFMReaderTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <cstdlib>
-#include <memory>
-#include <fstream>
-#include <string>
-#include <vector>
-#include "TFM.hpp"
-#include "utility.hpp"
-
-#ifndef SRCDIR
-#define SRCDIR "."
-#endif
-
-using namespace std;
-
-
-class TFMReaderTest : public ::testing::Test {
- public:
- void SetUp () override {
- string fname = string(SRCDIR)+"/data/cmr10.tfm";
- ifstream ifs(fname, ios::binary);
- ASSERT_TRUE(ifs.is_open()) << "failed opening " << fname;
- tfm = util::make_unique<TFM>(ifs);
- }
-
- protected:
- unique_ptr<TFM> tfm;
-};
-
-
-TEST_F(TFMReaderTest, properties) {
- ASSERT_NE(tfm, nullptr);
- EXPECT_EQ(tfm->getChecksum(), 0x4BF16079u);
- EXPECT_FALSE(tfm->verticalLayout());
- EXPECT_EQ(tfm->firstChar(), 0);
- EXPECT_EQ(tfm->lastChar(), 127);
- EXPECT_DOUBLE_EQ(tfm->getDesignSize(), 10.0*72.0/72.27);
-}
-
-
-TEST_F(TFMReaderTest, charWidth) {
- ASSERT_NE(tfm, nullptr);
- EXPECT_NEAR(tfm->getCharWidth('M'), 9.132, 0.001);
- EXPECT_NEAR(tfm->getCharWidth('g'), 4.981, 0.001);
- EXPECT_DOUBLE_EQ(tfm->getCharWidth(200), 0);
-}
-
-
-TEST_F(TFMReaderTest, charHeight) {
- ASSERT_NE(tfm, nullptr);
- EXPECT_NEAR(tfm->getCharHeight('M'), 6.808, 0.001);
- EXPECT_NEAR(tfm->getCharHeight('g'), 4.289, 0.001);
- EXPECT_DOUBLE_EQ(tfm->getCharHeight(200), 0);
-}
-
-
-TEST_F(TFMReaderTest, charDepth) {
- ASSERT_NE(tfm, nullptr);
- EXPECT_DOUBLE_EQ(tfm->getCharDepth('M'), 0);
- EXPECT_NEAR(tfm->getCharDepth('g'), 1.937, 0.001);
- EXPECT_DOUBLE_EQ(tfm->getCharDepth(200), 0);
-}
-
-
-TEST_F(TFMReaderTest, italicCorr) {
- ASSERT_NE(tfm, nullptr);
- EXPECT_DOUBLE_EQ(tfm->getItalicCorr('M'), 0);
- EXPECT_NEAR(tfm->getItalicCorr('g'), 0.138, 0.001);
- EXPECT_DOUBLE_EQ(tfm->getItalicCorr(200), 0);
-}
-
-
-TEST_F(TFMReaderTest, params) {
- ASSERT_NE(tfm, nullptr);
- EXPECT_NEAR(tfm->getSpace(), 3.321, 0.001);
- EXPECT_NEAR(tfm->getSpaceShrink(), 1.107, 0.001);
- EXPECT_NEAR(tfm->getSpaceStretch(), 1.66, 0.001);
- EXPECT_NEAR(tfm->getQuad(), 9.963, 0.001);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/TensorProductPatchTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/TensorProductPatchTest.cpp
deleted file mode 100644
index c31ab1a0258..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/TensorProductPatchTest.cpp
+++ /dev/null
@@ -1,343 +0,0 @@
-/*************************************************************************
-** TensorProductPatchTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <vector>
-#include "Color.hpp"
-#include "TensorProductPatch.hpp"
-
-using namespace std;
-
-
-#define EXPECT_NEAR_PAIR(name, p1, p2, eps) \
- {SCOPED_TRACE(name); expect_near_pair(p1, p2, eps);}
-
-#define EXPECT_EQUAL_PAIR(name, p1, p2) \
- {SCOPED_TRACE(name); expect_equal_pair(p1, p2);}
-
-#define CHECK_BEZIER_POINTS(name, bezier, p1, p2, p3, p4) \
- {SCOPED_TRACE(name); checkBezierPoints(bezier, p1, p2, p3, p4);}
-
-
-static void expect_near_pair (const DPair &p1, const DPair &p2, double eps) {
- EXPECT_NEAR(p1.x(), p2.x(), eps);
- EXPECT_NEAR(p1.y(), p2.y(), eps);
-}
-
-
-static void expect_equal_pair (const DPair &p1, const DPair &p2) {
- EXPECT_DOUBLE_EQ(p1.x(), p2.x());
- EXPECT_DOUBLE_EQ(p1.y(), p2.y());
-}
-
-
-class TensorProductPatchTest : public ::testing::Test {
- protected:
- void SetUp () override {
- _points.resize(16);
- _points[0] = DPair(10, 10);
- _points[1] = DPair(0, 30);
- _points[2] = DPair(20, 40);
- _points[3] = DPair(10, 70);
- _points[4] = DPair(20, 100);
- _points[5] = DPair(70, 100);
- _points[6] = DPair(100, 70);
- _points[7] = DPair(90, 60);
- _points[8] = DPair(80, 50);
- _points[9] = DPair(70, 20);
- _points[10] = DPair(50, 30);
- _points[11] = DPair(20, 0);
- _points[12] = DPair(30, 40);
- _points[13] = DPair(40, 80);
- _points[14] = DPair(60, 70);
- _points[15] = DPair(40, 40);
- _patch.setPoints(_points, 0, 0);
-
- vector<Color> colors(4);
- colors[0].setRGB(1.0, 0.0, 0.0);
- colors[1].setRGB(1.0, 1.0, 0.0);
- colors[2].setRGB(1.0, 0.0, 1.0);
- colors[3].setRGB(0.0, 1.0, 0.0);
- _patch.setColors(colors, 0, 0);
- }
-
- void checkBezierPoints (const Bezier &b, const DPair &p1, const DPair &p2, const DPair &p3, const DPair &p4) const {
- EXPECT_EQ(b.point(0), p1);
- EXPECT_EQ(b.point(1), p2);
- EXPECT_EQ(b.point(2), p3);
- EXPECT_EQ(b.point(3), p4);
- }
-
-
- protected:
- vector<DPair> _points;
- TensorProductPatch _patch;
-};
-
-
-TEST_F(TensorProductPatchTest, construct) {
- EXPECT_EQ(_patch.psShadingType(), 7);
- EXPECT_EQ(_patch.numPoints(0), 16);
- EXPECT_EQ(_patch.numColors(0), 4);
- EXPECT_EQ(_patch.numPoints(1), 12);
- EXPECT_EQ(_patch.numColors(1), 2);
-
- CoonsPatch cp(Color::ColorSpace::RGB);
- EXPECT_EQ(cp.psShadingType(), 6);
- EXPECT_EQ(cp.numPoints(0), 12);
- EXPECT_EQ(cp.numColors(0), 4);
- EXPECT_EQ(cp.numPoints(1), 8);
- EXPECT_EQ(cp.numColors(1), 2);
-}
-
-
-TEST_F(TensorProductPatchTest, valueAt) {
- EXPECT_EQ(_patch.valueAt(0, 0), DPair(10, 10));
- EXPECT_EQ(_patch.valueAt(1, 0), DPair(70, 20));
- EXPECT_EQ(_patch.valueAt(0, 1), DPair(10, 70));
- EXPECT_EQ(_patch.valueAt(1, 1), DPair(100, 70));
-
- vector<DPair> points = _points;
- vector<Color> colors(2);
- points.resize(12);
- TensorProductPatch tpp1(points, colors, Color::ColorSpace::RGB, 1, &_patch);
- EXPECT_EQ(tpp1.valueAt(0, 0), DPair(10, 70));
- EXPECT_EQ(tpp1.valueAt(0, 1), DPair(100, 70));
- EXPECT_EQ(tpp1.valueAt(1, 0), DPair(70, 100));
- EXPECT_EQ(tpp1.valueAt(1, 1), DPair(20, 40));
-
- TensorProductPatch tpp2(points, colors, Color::ColorSpace::RGB, 2, &_patch);
- EXPECT_EQ(tpp2.valueAt(0, 0), DPair(100, 70));
- EXPECT_EQ(tpp2.valueAt(0, 1), DPair(70, 20));
- EXPECT_EQ(tpp2.valueAt(1, 0), DPair(70, 100));
- EXPECT_EQ(tpp2.valueAt(1, 1), DPair(20, 40));
-
- TensorProductPatch tpp3(points, colors, Color::ColorSpace::RGB, 3, &_patch);
- EXPECT_EQ(tpp3.valueAt(0, 0), DPair(70, 20));
- EXPECT_EQ(tpp3.valueAt(0, 1), DPair(10, 10));
- EXPECT_EQ(tpp3.valueAt(1, 0), DPair(70, 100));
- EXPECT_EQ(tpp3.valueAt(1, 1), DPair(20, 40));
-
- colors.resize(4);
- CoonsPatch cp1(points, colors, Color::ColorSpace::RGB, 0, 0);
- EXPECT_EQ(cp1.valueAt(0, 0), DPair(10, 70));
- EXPECT_EQ(cp1.valueAt(0, 1), DPair(10, 10));
- EXPECT_EQ(cp1.valueAt(1, 0), DPair(100, 70));
- EXPECT_EQ(cp1.valueAt(1, 1), DPair(70, 20));
-
- points.resize(8);
- colors.resize(2);
- CoonsPatch cp2(points, colors, Color::ColorSpace::RGB, 1, &cp1);
- EXPECT_EQ(cp2.valueAt(0, 0), DPair(100, 70));
- EXPECT_EQ(cp2.valueAt(0, 1), DPair(10, 70));
- EXPECT_EQ(cp2.valueAt(1, 0), DPair(20, 40));
- EXPECT_EQ(cp2.valueAt(1, 1), DPair(70, 100));
-
- CoonsPatch cp3(points, colors, Color::ColorSpace::RGB, 2, &cp1);
- EXPECT_EQ(cp3.valueAt(0, 0), DPair(70, 20));
- EXPECT_EQ(cp3.valueAt(0, 1), DPair(100, 70));
- EXPECT_EQ(cp3.valueAt(1, 0), DPair(20, 40));
- EXPECT_EQ(cp3.valueAt(1, 1), DPair(70, 100));
-
- CoonsPatch cp4(points, colors, Color::ColorSpace::RGB, 3, &cp1);
- EXPECT_EQ(cp4.valueAt(0, 0), DPair(10, 10));
- EXPECT_EQ(cp4.valueAt(0, 1), DPair(70, 20));
- EXPECT_EQ(cp4.valueAt(1, 0), DPair(20, 40));
- EXPECT_EQ(cp4.valueAt(1, 1), DPair(70, 100));
-}
-
-
-TEST_F(TensorProductPatchTest, averageColor) {
- EXPECT_EQ(_patch.averageColor().rgbString(), "#bf8040");
-}
-
-
-
-TEST_F(TensorProductPatchTest, vertices) {
- EXPECT_EQ(_patch.valueAt(0,0), DPair(10,10));
- EXPECT_EQ(_patch.valueAt(0,1), DPair(10,70));
- EXPECT_EQ(_patch.valueAt(1,1), DPair(100,70));
- EXPECT_EQ(_patch.valueAt(1,0), DPair(70,20));
-
- EXPECT_EQ(_patch.colorAt(0,0).rgbString(), "#f00");
- EXPECT_EQ(_patch.colorAt(0,1).rgbString(), "#ff0");
- EXPECT_EQ(_patch.colorAt(1,1).rgbString(), "#f0f");
- EXPECT_EQ(_patch.colorAt(1,0).rgbString(), "#0f0");
-}
-
-
-TEST_F(TensorProductPatchTest, curves) {
- Bezier bezier;
- _patch.horizontalCurve(0, bezier);
- CHECK_BEZIER_POINTS("A", bezier, DPair(10, 10), DPair(20, 0), DPair(50, 30), DPair(70, 20));
- _patch.horizontalCurve(1, bezier);
- CHECK_BEZIER_POINTS("B", bezier, DPair(10, 70), DPair(20, 100), DPair(70, 100), DPair(100, 70));
- _patch.verticalCurve(0, bezier);
- CHECK_BEZIER_POINTS("C", bezier, DPair(10, 10), DPair(0, 30), DPair(20, 40), DPair(10, 70));
- _patch.verticalCurve(1, bezier);
- CHECK_BEZIER_POINTS("D", bezier, DPair(70, 20), DPair(80, 50), DPair(90, 60), DPair(100, 70));
-}
-
-
-TEST_F(TensorProductPatchTest, blossom_outer) {
- EXPECT_EQ(_patch.blossomValue(0,0,0,0,0,0), DPair(10, 10));
- EXPECT_EQ(_patch.blossomValue(0,0,0,1,0,0), DPair(0, 30));
- EXPECT_EQ(_patch.blossomValue(0,0,0,1,1,0), DPair(20, 40));
- EXPECT_EQ(_patch.blossomValue(0,0,0,1,1,1), DPair(10, 70));
-
- EXPECT_EQ(_patch.blossomValue(1,1,1,0,0,0), DPair(70, 20));
- EXPECT_EQ(_patch.blossomValue(1,1,1,1,0,0), DPair(80, 50));
- EXPECT_EQ(_patch.blossomValue(1,1,1,1,1,0), DPair(90, 60));
- EXPECT_EQ(_patch.blossomValue(1,1,1,1,1,1), DPair(100, 70));
-
- EXPECT_EQ(_patch.blossomValue(1,0,0,0,0,0), DPair(20, 0));
- EXPECT_EQ(_patch.blossomValue(1,1,0,0,0,0), DPair(50, 30));
- EXPECT_EQ(_patch.blossomValue(1,1,1,0,0,0), DPair(70, 20));
-
- EXPECT_EQ(_patch.blossomValue(0,0,0,1,1,1), DPair(10, 70));
- EXPECT_EQ(_patch.blossomValue(1,0,0,1,1,1), DPair(20, 100));
- EXPECT_EQ(_patch.blossomValue(1,1,0,1,1,1), DPair(70, 100));
-}
-
-
-TEST_F(TensorProductPatchTest, blossom_inner) {
- EXPECT_EQ(_patch.blossomValue(1,0,0,1,0,0), DPair(30, 40));
- EXPECT_EQ(_patch.blossomValue(1,1,0,1,0,0), DPair(40, 40));
- EXPECT_EQ(_patch.blossomValue(1,0,0,1,1,0), DPair(40, 80));
- EXPECT_EQ(_patch.blossomValue(1,1,0,1,1,0), DPair(60, 70));
-}
-
-
-TEST_F(TensorProductPatchTest, values) {
- EXPECT_EQUAL_PAIR("A", _patch.valueAt(0.25, 0.5), _patch.blossomValue(0.25, 0.25, 0.25, 0.5, 0.5, 0.5));
- EXPECT_NEAR_PAIR("B", _patch.valueAt(0.25, 0.5), DPair(26.1133, 48.457), 0.0001);
-
- EXPECT_EQUAL_PAIR("C", _patch.valueAt(0.8, 0.2), _patch.blossomValue(0.8, 0.8, 0.8, 0.2, 0.2, 0.2));
- EXPECT_NEAR_PAIR("D", _patch.valueAt(0.8, 0.2), DPair(59.5974, 35.4502), 0.0001);
-}
-
-
-TEST_F(TensorProductPatchTest, boundaryPath) {
- GraphicsPath<double> path = _patch.getBoundaryPath();
- ostringstream oss;
- path.writeSVG(oss, false);
- EXPECT_EQ(oss.str(), "M10 10C20 0 50 30 70 20C80 50 90 60 100 70C70 100 20 100 10 70C20 40 0 30 10 10Z");
-}
-
-
-TEST_F(TensorProductPatchTest, subpatch) {
- TensorProductPatch tpp;
- _patch.subpatch(0, 0.5, 0, 0.5, tpp);
- GraphicsPath<double> path = tpp.getBoundaryPath();
- ostringstream oss;
- path.writeSVG(oss, false);
- EXPECT_EQ(oss.str(), "M10 10C5 20 7.5 27.5 10 36.25C20.625 46.875 31.25 52.1875 43.28125 54.21875C40 40.9375 36.25 27.5 36.25 15C25 10 15 5 10 10Z");
- EXPECT_EQ(tpp.colorAt(0, 0).rgbString(), "#f00");
- EXPECT_EQ(tpp.colorAt(0, 1).rgbString(), "#ff8000");
- EXPECT_EQ(tpp.colorAt(1, 0).rgbString(), "#808000");
- EXPECT_EQ(tpp.colorAt(1, 1).rgbString(), "#bf8040");
-}
-
-
-TEST_F(TensorProductPatchTest, bbox) {
- BoundingBox bbox = _patch.getBBox();
- EXPECT_NEAR(bbox.minX(), 7.1132, 0.0001);
- EXPECT_NEAR(bbox.minY(), 7.9289, 0.0001);
- EXPECT_DOUBLE_EQ(bbox.maxX(), 100.0);
- EXPECT_DOUBLE_EQ(bbox.maxY(), 92.5);
-}
-
-
-class Callback : public ShadingPatch::Callback {
- public:
- void patchSegment (GraphicsPath<double> &path, const Color &color) {
- ostringstream oss;
- path.writeSVG(oss, false);
- _pathstr += oss.str();
- _colorstr += color.rgbString();
- }
- string pathstr() const {return _pathstr;}
- string colorstr() const {return _colorstr;}
- void reset () {_pathstr.clear(); _colorstr.clear();}
-
- private:
- string _pathstr;
- string _colorstr;
-};
-
-
-TEST_F(TensorProductPatchTest, approximate) {
- Callback callback;
- vector<Color> colors(4);
- TensorProductPatch tpp(_points, colors, Color::ColorSpace::RGB, 0, 0);
- tpp.approximate(2, false, 0.1, callback);
- EXPECT_EQ(callback.pathstr(), "M10 10C20 0 50 30 70 20C80 50 90 60 100 70C70 100 20 100 10 70C20 40 0 30 10 10Z");
- EXPECT_EQ(callback.colorstr(), "#000");
-
- callback.reset();
- _patch.approximate(2, false, 0.1, callback);
- EXPECT_EQ(
- callback.pathstr(),
- "M10 10C15 5 25 10 36.25 15C36.25 27.5 40 40.9375 43.28125 54.21875C31.25 52.1875 20.625 46.875 10 36.25C7.5 27.5 5 20 10 10Z"
- "M36.25 15C47.5 20 60 25 70 20C75 35 80 45 85 52.5C68.75 55 55.3125 56.25 43.28125 54.21875C40 40.9375 36.25 27.5 36.25 15Z"
- "M10 36.25C20.625 46.875 31.25 52.1875 43.28125 54.21875C46.5625 67.5 49.375 80.625 47.5 92.5C30 92.5 15 85 10 70C15 55 12.5 45 10 36.25Z"
- "M43.28125 54.21875C55.3125 56.25 68.75 55 85 52.5C90 60 95 65 100 70C85 85 65 92.5 47.5 92.5C49.375 80.625 46.5625 67.5 43.28125 54.21875Z");
- EXPECT_EQ(callback.colorstr(), "#cf6010#70a030#efa030#cf6090");
-}
-
-
-
-TEST_F(TensorProductPatchTest, fail) {
- // edge flag == 0
- vector<DPair> points(15);
- EXPECT_THROW(_patch.setPoints(points, 0, 0), ShadingException);
- points.resize(17); // too many points
- EXPECT_THROW(_patch.setPoints(points, 0, 0), ShadingException);
-
- vector<Color> colors(2); // too few colors
- EXPECT_THROW(_patch.setColors(colors, 0, 0), ShadingException);
- colors.resize(5); // too many colors
- EXPECT_THROW(_patch.setColors(colors, 0, 0), ShadingException);
-
- // edge flag > 0
- points.resize(16);
- EXPECT_THROW(_patch.setPoints(points, 1, 0), ShadingException);
- points.resize(11); // too few points
- EXPECT_THROW(_patch.setPoints(points, 1, &_patch), ShadingException);
- points.resize(13); // too many points
- EXPECT_THROW(_patch.setPoints(points, 1, &_patch), ShadingException);
-
- colors.resize(4);
- EXPECT_THROW(_patch.setColors(colors, 1, 0), ShadingException);
- colors.resize(1); // too few colors
- EXPECT_THROW(_patch.setColors(colors, 1, &_patch), ShadingException);
- colors.resize(3); // too many colors
- EXPECT_THROW(_patch.setColors(colors, 1, &_patch), ShadingException);
-
- CoonsPatch cp;
- points.resize(8);
- EXPECT_THROW(cp.setPoints(points, 1, 0), ShadingException);
- points.resize(11);
- EXPECT_THROW(cp.setPoints(points, 0, 0), ShadingException);
- colors.resize(2);
- EXPECT_THROW(cp.setColors(colors, 1, 0), ShadingException);
- colors.resize(5);
- EXPECT_THROW(cp.setColors(colors, 0, 0), ShadingException);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/ToUnicodeMapTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/ToUnicodeMapTest.cpp
deleted file mode 100644
index 97ae10c07ea..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/ToUnicodeMapTest.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-/*************************************************************************
-** ToUnicodeMapTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <sstream>
-#include <string>
-#include "ToUnicodeMap.hpp"
-
-using namespace std;
-
-#define CHECK_RANGE(name, ucmap, min, max, minval) \
- {SCOPED_TRACE(name); check_range(ucmap, min, max, minval);}
-
-
-static void check_range (const ToUnicodeMap &ucmap, uint32_t min, uint32_t max, uint32_t minval) {
- for (uint32_t i=min; i <= max; i++)
- ASSERT_EQ(ucmap.valueAt(i), minval+(i-min)) << "i=" << i;
-}
-
-
-TEST(ToUnicodeMapTest, addMissingMappings1) {
- ToUnicodeMap ucmap;
- ASSERT_TRUE(ucmap.addMissingMappings(20));
- ASSERT_EQ(ucmap.numRanges(), 1u);
- CHECK_RANGE("A", ucmap, 1, 20, 1);
-}
-
-
-TEST(ToUnicodeMapTest, addMissingMappings2) {
- ToUnicodeMap ucmap;
- ucmap.addRange(5, 8, 40);
- ASSERT_EQ(ucmap.numRanges(), 1u);
- CHECK_RANGE("A", ucmap, 5, 8, 40);
-
- ucmap.addRange(10, 15, 50);
- ASSERT_EQ(ucmap.numRanges(), 2u);
- CHECK_RANGE("B", ucmap, 5, 8, 40);
- CHECK_RANGE("C", ucmap, 10, 15, 50);
-
- ASSERT_TRUE(ucmap.addMissingMappings(20));
- ASSERT_EQ(ucmap.numRanges(), 2u);
- CHECK_RANGE("D", ucmap, 1, 9, 36);
- CHECK_RANGE("E", ucmap, 10, 20, 50);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/TpicSpecialTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/TpicSpecialTest.cpp
deleted file mode 100644
index 809b9a5d41c..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/TpicSpecialTest.cpp
+++ /dev/null
@@ -1,396 +0,0 @@
-/*************************************************************************
-** TpicSpecialTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <sstream>
-#include "SpecialActions.hpp"
-#include "TpicSpecialHandler.hpp"
-#include "utility.hpp"
-#include "XMLNode.hpp"
-#include "XMLString.hpp"
-
-using namespace std;
-
-
-class TpicSpecialTest : public ::testing::Test {
- protected:
- class ActionsRecorder : public EmptySpecialActions {
- public:
- ActionsRecorder () : x(), y() {}
- void embed (const BoundingBox &bb) override {bbox.embed(bb);}
- void setX (double xx) override {x = xx;}
- void setY (double yy) override {x = yy;}
- double getX () const override {return x;}
- double getY () const override {return y;}
- Color getColor () const override {return color;}
- void setColor (const Color &c) override {color = c;}
- const Matrix& getMatrix () const override {static Matrix m(1); return m;}
-
- string getXMLSnippet () const {
- ostringstream oss;
- for (XMLNode *child : *svgTree().pageNode())
- child->write(oss);
- return oss.str();
- }
-
- void clear () {
- SpecialActions::svgTree().reset();
- SpecialActions::svgTree().newPage(1);
- bbox = BoundingBox(0, 0, 0, 0);
- }
-
- private:
- double x, y;
- Color color;
- BoundingBox bbox;
- };
-
-
- class MyTpicSpecialHandler : public TpicSpecialHandler {
- public:
- explicit MyTpicSpecialHandler (SpecialActions &a) : actions(a) {}
- void finishPage () {dviEndPage(0, actions);}
- bool processSpecial (const string &cmd, string params="") {
- stringstream ss;
- ss << params;
- return process(cmd, ss, actions);
- }
-
- protected:
- SpecialActions &actions;
- };
-
- public:
- TpicSpecialTest () : handler(recorder) {}
-
- void SetUp () override {
- XMLString::DECIMAL_PLACES=2;
- recorder.clear();
- }
-
-
- protected:
- ActionsRecorder recorder;
- MyTpicSpecialHandler handler;
-};
-
-
-TEST_F(TpicSpecialTest, name) {
- EXPECT_EQ(handler.name(), "tpic");
-}
-
-
-TEST_F(TpicSpecialTest, fail) {
- EXPECT_FALSE(handler.processSpecial(""));
- EXPECT_FALSE(handler.processSpecial("x"));
- EXPECT_FALSE(handler.processSpecial("xy"));
- EXPECT_FALSE(handler.processSpecial("xyz"));
- EXPECT_FALSE(handler.processSpecial("bk "));
-}
-
-
-TEST_F(TpicSpecialTest, set_fill_intensity) {
- EXPECT_LT(handler.grayLevel(), 0); // no fill color set by default
- EXPECT_TRUE(handler.processSpecial("bk"));
- EXPECT_DOUBLE_EQ(handler.grayLevel(), 1);
- EXPECT_TRUE(handler.processSpecial("wh"));
- EXPECT_DOUBLE_EQ(handler.grayLevel(), 0);
- EXPECT_TRUE(handler.processSpecial("sh"));
- EXPECT_DOUBLE_EQ(handler.grayLevel(), 0.5);
- EXPECT_TRUE(handler.processSpecial("sh", "0.1"));
- EXPECT_DOUBLE_EQ(handler.grayLevel(), 0.1);
- EXPECT_TRUE(handler.processSpecial("sh", "0.6"));
- EXPECT_DOUBLE_EQ(handler.grayLevel(), 0.6);
- EXPECT_TRUE(handler.processSpecial("sh", "2"));
- EXPECT_DOUBLE_EQ(handler.grayLevel(), 1);
- EXPECT_TRUE(handler.processSpecial("sh", "-2"));
- EXPECT_DOUBLE_EQ(handler.grayLevel(), 0);
-}
-
-
-TEST_F(TpicSpecialTest, set_penwidth) {
- const double mi2bp=0.072; // milli-inch to PS points
- EXPECT_DOUBLE_EQ(handler.penwidth(), 1);
- handler.processSpecial("pn", "1000");
- EXPECT_DOUBLE_EQ(handler.penwidth(), 1000*mi2bp);
- handler.processSpecial("pn", "-10");
- EXPECT_DOUBLE_EQ(handler.penwidth(), 0);
-}
-
-
-TEST_F(TpicSpecialTest, dot) {
- handler.processSpecial("pn", "1000");
- handler.processSpecial("pa", "0 0");
- handler.processSpecial("bk");
- handler.processSpecial("fp");
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<circle cx='0' cy='0' r='36'/>"
- );
- EXPECT_DOUBLE_EQ(handler.penwidth(), 1.0);
- EXPECT_LT(handler.grayLevel(), 0);
-}
-
-
-TEST_F(TpicSpecialTest, stroke_polyline) {
- handler.processSpecial("pa", "0 0");
- handler.processSpecial("pa", "1000 1000");
- handler.processSpecial("pa", "1000 0");
- handler.processSpecial("fp");
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<polyline fill='none' stroke-linecap='round' points='0,0 72,72 72,0' stroke='#000' stroke-width='1'/>"
- );
- EXPECT_DOUBLE_EQ(handler.penwidth(), 1.0);
- EXPECT_LT(handler.grayLevel(), 0);
-}
-
-
-TEST_F(TpicSpecialTest, stroke_polygon) {
- handler.processSpecial("pa", "0 0");
- handler.processSpecial("pa", "1000 1000");
- handler.processSpecial("pa", "1000 0");
- handler.processSpecial("pa", "0 0");
- handler.processSpecial("pa", "0 0");
- handler.processSpecial("fp");
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<polygon fill='none' points='0,0 72,72 72,0' stroke='#000' stroke-width='1'/>"
- );
- EXPECT_DOUBLE_EQ(handler.penwidth(), 1.0);
- EXPECT_LT(handler.grayLevel(), 0);
-}
-
-
-TEST_F(TpicSpecialTest, fill_polygon) {
- handler.processSpecial("pa", "0 0");
- handler.processSpecial("pa", "1000 1000");
- handler.processSpecial("pa", "1000 0");
- handler.processSpecial("pa", "0 0");
- handler.processSpecial("wh");
- handler.processSpecial("fp");
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<polygon fill='#fff' points='0,0 72,72 72,0' stroke='#000' stroke-width='1'/>"
- );
- EXPECT_DOUBLE_EQ(handler.penwidth(), 1.0);
- EXPECT_LT(handler.grayLevel(), 0);
- recorder.clear();
- handler.processSpecial("pa", "0 0");
- handler.processSpecial("pa", "1000 1000");
- handler.processSpecial("pa", "1000 0");
- handler.processSpecial("pa", "0 0");
- handler.processSpecial("wh");
- handler.processSpecial("ip");
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<polygon fill='#fff' points='0,0 72,72 72,0'/>"
- );
- EXPECT_DOUBLE_EQ(handler.penwidth(), 1.0);
- EXPECT_LT(handler.grayLevel(), 0);
-}
-
-
-TEST_F(TpicSpecialTest, fill_dashed_polygon) {
- handler.processSpecial("pa", "0 0");
- handler.processSpecial("pa", "1000 1000");
- handler.processSpecial("pa", "1000 0");
- handler.processSpecial("pa", "0 0");
- handler.processSpecial("wh");
- handler.processSpecial("da", "2");
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<polygon fill='#fff' points='0,0 72,72 72,0' stroke='#000' stroke-width='1' stroke-dasharray='144'/>"
- );
- EXPECT_DOUBLE_EQ(handler.penwidth(), 1.0);
- EXPECT_LT(handler.grayLevel(), 0);
-}
-
-
-TEST_F(TpicSpecialTest, fill_dotted_polygon) {
- handler.processSpecial("pn", "500");
- handler.processSpecial("pa", "0 0");
- handler.processSpecial("pa", "1000 1000");
- handler.processSpecial("pa", "1000 0");
- handler.processSpecial("pa", "0 0");
- handler.processSpecial("wh");
- handler.processSpecial("dt", "2 2");
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<polygon fill='#fff' points='0,0 72,72 72,0' stroke='#000' stroke-width='36' stroke-dasharray='36 144'/>"
- );
- EXPECT_DOUBLE_EQ(handler.penwidth(), 1.0);
- EXPECT_LT(handler.grayLevel(), 0);
-}
-
-
-TEST_F(TpicSpecialTest, stroke_spline) {
- handler.processSpecial("pa", "0 0");
- handler.processSpecial("pa", "1000 1000");
- handler.processSpecial("sp");
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<polyline fill='none' stroke-linecap='round' points='0,0 72,72' stroke='#000' stroke-width='1'/>"
- );
- recorder.clear();
- handler.processSpecial("pa", "0 0");
- handler.processSpecial("pa", "1000 1000");
- handler.processSpecial("pa", "1500 500");
- handler.processSpecial("pa", "2000 1000");
- handler.processSpecial("pa", "3000 2000");
- handler.processSpecial("pa", "1000 500");
- handler.processSpecial("sp");
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<path fill='none' d='M0 0L36 36Q72 72 90 54T126 54T180 108T144 90L72 36' stroke='#000' stroke-width='1'/>"
- );
- EXPECT_DOUBLE_EQ(handler.penwidth(), 1.0);
- EXPECT_LT(handler.grayLevel(), 0);
-}
-
-
-TEST_F(TpicSpecialTest, stroke_dashed_spline) {
- handler.processSpecial("pa", "0 0");
- handler.processSpecial("pa", "1000 1000");
- handler.processSpecial("pa", "1500 500");
- handler.processSpecial("pa", "2000 1000");
- handler.processSpecial("pa", "3000 2000");
- handler.processSpecial("pa", "0 0");
- handler.processSpecial("sp", "1");
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<path fill='none' d='M0 0L36 36Q72 72 90 54T126 54T180 108T108 72Z' stroke='#000' stroke-width='1' stroke-dasharray='72'/>"
- );
- EXPECT_DOUBLE_EQ(handler.penwidth(), 1.0);
- EXPECT_LT(handler.grayLevel(), 0);
-}
-
-
-TEST_F(TpicSpecialTest, stroke_dotted_spline) {
- handler.processSpecial("pa", "0 0");
- handler.processSpecial("pa", "1000 1000");
- handler.processSpecial("pa", "1500 500");
- handler.processSpecial("pa", "2000 1000");
- handler.processSpecial("pa", "3000 2000");
- handler.processSpecial("pa", "1000 500");
- handler.processSpecial("sp", "-1");
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<path fill='none' d='M0 0L36 36Q72 72 90 54T126 54T180 108T144 90L72 36' stroke='#000' stroke-width='1' stroke-dasharray='1 72'/>"
- );
- EXPECT_DOUBLE_EQ(handler.penwidth(), 1.0);
- EXPECT_LT(handler.grayLevel(), 0);
-}
-
-
-TEST_F(TpicSpecialTest, stroke_ellipse) {
- handler.processSpecial("ar", "0 0 500 500 0 7");
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<circle cx='0' cy='0' r='36' stroke-width='1' stroke='#000' fill='none'/>"
- );
- recorder.clear();
- handler.processSpecial("ar", "0 0 1000 500 0 7");
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<ellipse cx='0' cy='0' rx='72' ry='36' stroke-width='1' stroke='#000' fill='none'/>"
- );
- recorder.clear();
- handler.processSpecial("pn", "100");
- handler.processSpecial("ar", "0 0 1000 500 -1 -8");
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<ellipse cx='0' cy='0' rx='72' ry='36' stroke-width='7.2' stroke='#000' fill='none'/>"
- );
-}
-
-
-TEST_F(TpicSpecialTest, fill_ellipse) {
- handler.processSpecial("bk");
- handler.processSpecial("ia", "0 0 500 500 0 7");
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<circle cx='0' cy='0' r='36' fill='#000'/>"
- );
- recorder.clear();
- handler.processSpecial("bk");
- handler.processSpecial("ia", "0 0 1000 500 0 7");
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<ellipse cx='0' cy='0' rx='72' ry='36' fill='#000'/>"
- );
- recorder.clear();
- handler.processSpecial("pn", "100");
- handler.processSpecial("wh");
- handler.processSpecial("ia", "0 0 1000 500 -1 -8");
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<ellipse cx='0' cy='0' rx='72' ry='36' fill='#fff'/>"
- );
-}
-
-
-TEST_F(TpicSpecialTest, stroke_arc) {
- handler.processSpecial("ar", "0 0 1000 500 0 "+to_string(math::PI/4));
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<path d='M72 0A72 36 0 0 1 50.91 25.46' stroke-width='1' stroke='#000' stroke-linecap='round' fill='none'/>"
- );
- recorder.clear();
- handler.processSpecial("ar", "0 0 1000 500 0 "+to_string(math::PI/2));
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<path d='M72 0A72 36 0 0 1 0 36' stroke-width='1' stroke='#000' stroke-linecap='round' fill='none'/>"
- );
- recorder.clear();
- handler.processSpecial("ar", "0 0 1000 500 0 "+to_string(3*math::PI/4));
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<path d='M72 0A72 36 0 0 1-50.91 25.46' stroke-width='1' stroke='#000' stroke-linecap='round' fill='none'/>"
- );
- recorder.clear();
- handler.processSpecial("ar", "0 0 1000 500 0 "+to_string(math::PI));
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<path d='M72 0A72 36 0 1 1-72 0' stroke-width='1' stroke='#000' stroke-linecap='round' fill='none'/>"
- );
- recorder.clear();
- handler.processSpecial("ar", "0 0 1000 500 0 "+to_string(5*math::PI/4));
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<path d='M72 0A72 36 0 1 1-50.91-25.46' stroke-width='1' stroke='#000' stroke-linecap='round' fill='none'/>"
- );
- recorder.clear();
- handler.processSpecial("ar", "0 0 1000 500 0 "+to_string(3*math::PI/2));
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<path d='M72 0A72 36 0 1 1 0-36' stroke-width='1' stroke='#000' stroke-linecap='round' fill='none'/>"
- );
- recorder.clear();
- handler.processSpecial("ar", "0 0 1000 500 0 "+to_string(-3*math::PI/2));
- EXPECT_EQ(recorder.getXMLSnippet(),
- "<path d='M72 0A72 36 0 0 1 0 36' stroke-width='1' stroke='#000' stroke-linecap='round' fill='none'/>"
- );
-}
-
-
-TEST_F(TpicSpecialTest, bit_pattern) {
- handler.processSpecial("tx", "");
- EXPECT_DOUBLE_EQ(handler.grayLevel(), 1);
- handler.processSpecial("tx", " \t \n ");
- EXPECT_DOUBLE_EQ(handler.grayLevel(), 1);
- handler.processSpecial("tx", "INVALID");
- EXPECT_DOUBLE_EQ(handler.grayLevel(), 1);
- handler.processSpecial("tx", "0");
- EXPECT_DOUBLE_EQ(handler.grayLevel(), 1);
- handler.processSpecial("tx", "f");
- EXPECT_DOUBLE_EQ(handler.grayLevel(), 0);
- handler.processSpecial("tx", "1248");
- EXPECT_DOUBLE_EQ(handler.grayLevel(), 1.0-4.0/16.0);
- handler.processSpecial("tx", "12480");
- EXPECT_DOUBLE_EQ(handler.grayLevel(), 1.0-4.0/20.0);
- handler.processSpecial("tx", "DEAD BEEF");
- EXPECT_DOUBLE_EQ(handler.grayLevel(), 1.0-24.0/32.0);
- handler.processSpecial("tx", "123456789abcdef");
- EXPECT_DOUBLE_EQ(handler.grayLevel(), 1.0-32.0/60.0);
- handler.processSpecial("tx", "123456789ABCDEF0");
- EXPECT_DOUBLE_EQ(handler.grayLevel(), 1.0-32.0/64.0);
- handler.processSpecial("tx", "1234 5678 9abc def ");
- EXPECT_DOUBLE_EQ(handler.grayLevel(), 1.0-32.0/60.0);
- handler.processSpecial("tx", "1234 5678 X 9abc def");
- EXPECT_DOUBLE_EQ(handler.grayLevel(), 1.0-13.0/32.0);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/TriangularPatchTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/TriangularPatchTest.cpp
deleted file mode 100644
index 29fa437ad2e..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/TriangularPatchTest.cpp
+++ /dev/null
@@ -1,197 +0,0 @@
-/*************************************************************************
-** TriangularPatchTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include "TriangularPatch.hpp"
-
-using namespace std;
-
-
-TEST(TriangularPatchTest, construct) {
- TriangularPatch tp1(Color::ColorSpace::RGB);
- EXPECT_EQ(tp1.psShadingType(), 4);
- EXPECT_EQ(tp1.numPoints(0), 3);
- EXPECT_EQ(tp1.numColors(0), 3);
- EXPECT_EQ(tp1.numPoints(1), 1);
- EXPECT_EQ(tp1.numColors(1), 1);
-
- vector<DPair> points(1);
- points[0] = DPair(10, 0);
- vector<Color> colors(1);
- TriangularPatch tp2(points, colors, Color::ColorSpace::RGB, 1, &tp1);
- EXPECT_EQ(tp1.psShadingType(), 4);
-
- LatticeTriangularPatch tp3(Color::ColorSpace::RGB);
- EXPECT_EQ(tp3.psShadingType(), 5);
-}
-
-
-TEST(TriangularPatchTest, valueAt) {
- vector<DPair> points(3);
- points[0] = DPair(0, 0);
- points[1] = DPair(10, 0);
- points[2] = DPair(0, 10);
- vector<Color> colors(3);
- TriangularPatch tp1(points, colors, Color::ColorSpace::RGB, 0, 0);
- EXPECT_EQ(tp1.valueAt(0, 0), DPair(0,0));
- EXPECT_EQ(tp1.valueAt(1, 0), DPair(10,0));
- EXPECT_EQ(tp1.valueAt(0, 1), DPair(0,10));
-
- points.resize(1);
- colors.resize(1);
- points[0] = DPair(10, 10);
- TriangularPatch tp2(points, colors, Color::ColorSpace::RGB, 1, &tp1);
- EXPECT_EQ(tp2.valueAt(0, 0), DPair(10,10));
- EXPECT_EQ(tp2.valueAt(1, 0), DPair(10,0));
- EXPECT_EQ(tp2.valueAt(0, 1), DPair(0,10));
-
- TriangularPatch tp3(points, colors, Color::ColorSpace::RGB, 2, &tp1);
- EXPECT_EQ(tp3.valueAt(0, 0), DPair(10,10));
- EXPECT_EQ(tp3.valueAt(1, 0), DPair(0,10));
- EXPECT_EQ(tp3.valueAt(0, 1), DPair(0,0));
-
- tp1.setPoints(DPair(20,20), DPair(20,40), DPair(40,20));
- EXPECT_EQ(tp1.valueAt(0, 0), DPair(20,20));
- EXPECT_EQ(tp1.valueAt(1, 0), DPair(20,40));
- EXPECT_EQ(tp1.valueAt(0, 1), DPair(40,20));
-}
-
-
-TEST(TriangularPatchTest, colorAt) {
- vector<DPair> points(3);
- vector<Color> colors(3);
- colors[0] = Color(1.0, 0.0, 0.0);
- colors[1] = Color(0.0, 1.0, 0.0);
- colors[2] = Color(0.0, 0.0, 1.0);
- TriangularPatch tp1(points, colors, Color::ColorSpace::RGB, 0, 0);
- EXPECT_EQ(tp1.colorAt(0, 0), Color(1.0, 0.0, 0.0));
- EXPECT_EQ(tp1.colorAt(1, 0), Color(0.0, 1.0, 0.0));
- EXPECT_EQ(tp1.colorAt(0, 1), Color(0.0, 0.0, 1.0));
-
- points.resize(1);
- colors.resize(1);
- colors[0] = Color(1.0, 1.0, 0.0);
- TriangularPatch tp2(points, colors, Color::ColorSpace::RGB, 1, &tp1);
- EXPECT_EQ(tp2.colorAt(0, 0), Color(1.0, 1.0, 0.0));
- EXPECT_EQ(tp2.colorAt(1, 0), Color(0.0, 1.0, 0.0));
- EXPECT_EQ(tp2.colorAt(0, 1), Color(0.0, 0.0, 1.0));
-
- TriangularPatch tp3(points, colors, Color::ColorSpace::RGB, 2, &tp1);
- EXPECT_EQ(tp3.colorAt(0, 0), Color(1.0, 1.0, 0.0));
- EXPECT_EQ(tp3.colorAt(1, 0), Color(0.0, 0.0, 1.0));
- EXPECT_EQ(tp3.colorAt(0, 1), Color(1.0, 0.0, 0.0));
-
- tp1.setColors(Color(1.0, 1.0, 0.0), Color(1.0, 0.0, 1.0), Color(0.0, 1.0, 1.0));
- EXPECT_EQ(tp1.colorAt(0, 0), Color(1.0, 1.0, 0.0));
- EXPECT_EQ(tp1.colorAt(1, 0), Color(1.0, 0.0, 1.0));
- EXPECT_EQ(tp1.colorAt(0, 1), Color(0.0, 1.0, 1.0));
-}
-
-
-TEST(TriangularPatchTest, averageColor) {
- vector<DPair> points(3);
- vector<Color> colors(3);
- colors[0] = Color(1.0, 0.0, 0.0);
- colors[1] = Color(0.0, 1.0, 0.0);
- colors[2] = Color(0.0, 0.0, 1.0);
- TriangularPatch tp(points, colors, Color::ColorSpace::RGB, 0, 0);
- EXPECT_EQ(tp.averageColor(), Color(uint8_t(85), uint8_t(85), uint8_t(85)));
-}
-
-
-TEST(TriangularPatchTest, bbox) {
- vector<DPair> points(3);
- points[0] = DPair(0, 0);
- points[1] = DPair(10, 0);
- points[2] = DPair(0, 10);
- vector<Color> colors(3);
- TriangularPatch tp(points, colors, Color::ColorSpace::RGB, 0, 0);
- BoundingBox bbox = tp.getBBox();
- EXPECT_EQ(bbox, BoundingBox(0, 0, 10, 10));
-}
-
-
-TEST(TriangularPatchTest, boundaryPath) {
- vector<DPair> points(3);
- points[0] = DPair(0, 0);
- points[1] = DPair(10, 0);
- points[2] = DPair(0, 10);
- vector<Color> colors(3);
- TriangularPatch tp(points, colors, Color::ColorSpace::RGB, 0, 0);
- GraphicsPath<double> path = tp.getBoundaryPath();
- ostringstream oss;
- path.writeSVG(oss, false);
- EXPECT_EQ(oss.str(), "M0 0H10L0 10Z");
-}
-
-
-class Callback : public ShadingPatch::Callback {
- public:
- void patchSegment (GraphicsPath<double> &path, const Color &color) {
- ostringstream oss;
- path.writeSVG(oss, false);
- _pathstr += oss.str();
- _colorstr += color.rgbString();
- }
- string pathstr() const {return _pathstr;}
- string colorstr() const {return _colorstr;}
- void reset () {_pathstr.clear(); _colorstr.clear();}
-
- private:
- string _pathstr;
- string _colorstr;
-};
-
-
-TEST(TriangularPatchTest, approximate) {
- vector<DPair> points(3);
- points[0] = DPair(0, 0);
- points[1] = DPair(10, 0);
- points[2] = DPair(0, 10);
- vector<Color> colors(3);
- TriangularPatch tp(points, colors, Color::ColorSpace::RGB, 0, 0);
- Callback callback;
- tp.approximate(2, false, 0.1, callback);
- EXPECT_EQ(callback.pathstr(), "M0 0H10L0 10Z");
- EXPECT_EQ(callback.colorstr(), "#000");
-
- callback.reset();
- tp.setColors(Color(1.0, 0.0, 0.0), Color(0.0, 1.0, 0.0), Color(0.0, 0.0, 1.0));
- tp.approximate(2, false, 0.1, callback);
- EXPECT_EQ(callback.pathstr(), "M0 0H5L0 5ZM0 5L5 0V5ZM0 5H5L0 10ZM5 0H10L5 5Z");
- EXPECT_EQ(callback.colorstr(), "#aa2b2b#555#2b2baa#2baa2b");
-}
-
-
-TEST(TriangularPatchTest, fail) {
- vector<DPair> points(3);
- vector<Color> colors(3);
- TriangularPatch tp(points, colors, Color::ColorSpace::RGB, 0, 0);
- EXPECT_THROW(tp.setColors(colors, 1, 0), ShadingException);
-
- for (int i=1; i <= 3; i++) {
- EXPECT_THROW(TriangularPatch(points, colors, Color::ColorSpace::RGB, i, 0), ShadingException);
- }
- points.resize(2);
- EXPECT_THROW(TriangularPatch(points, colors, Color::ColorSpace::RGB, 0, 0), ShadingException);
- points.resize(3);
- colors.resize(2);
- EXPECT_THROW(TriangularPatch(points, colors, Color::ColorSpace::RGB, 0, 0), ShadingException);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/UnicodeTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/UnicodeTest.cpp
deleted file mode 100644
index 4b39ec2bcea..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/UnicodeTest.cpp
+++ /dev/null
@@ -1,138 +0,0 @@
-/*************************************************************************
-** UnicodeTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include "Unicode.hpp"
-
-using namespace std;
-
-
-TEST(UnicodeTest, isValidCodepoint) {
- for (uint32_t i=0; i <= 0x20; i++)
- EXPECT_FALSE(Unicode::isValidCodepoint(i)) << "i=" << i;
- for (uint32_t i=0x21; i <= 0x7e; i++)
- EXPECT_TRUE(Unicode::isValidCodepoint(i)) << "i=" << i;
- EXPECT_FALSE(Unicode::isValidCodepoint(0xfffe));
- EXPECT_FALSE(Unicode::isValidCodepoint(0xffff));
- EXPECT_TRUE(Unicode::isValidCodepoint(0x10000));
-}
-
-
-TEST(UnicodeTest, charToCodepoint) {
- for (uint32_t i=0; i <= 0x20; i++)
- EXPECT_EQ(Unicode::charToCodepoint(i), 0xe000+i) << "i=" << i;
- for (uint32_t i=0x21; i <= 0x7e; i++)
- EXPECT_EQ(Unicode::charToCodepoint(i), i) << "i=" << i;
- for (uint32_t i=0x7f; i <= 0x9f; i++)
- EXPECT_EQ(Unicode::charToCodepoint(i), 0xe021+i-0x7f) << "i=" << i;
- EXPECT_EQ(Unicode::charToCodepoint(0x10fffd), 0x10fffdu);
- EXPECT_EQ(Unicode::charToCodepoint(0x10fffe), 0xe887u);
- EXPECT_EQ(Unicode::charToCodepoint(0x10ffff), 0xe888u);
-}
-
-
-TEST(UnicodeTest, utf8) {
- EXPECT_EQ(Unicode::utf8(0x1), string("\x01"));
- EXPECT_EQ(Unicode::utf8(0x47), string("\x47"));
- EXPECT_EQ(Unicode::utf8(0x7f), string("\x7f"));
- EXPECT_EQ(Unicode::utf8(0x80), string("\xc2\x80"));
- EXPECT_EQ(Unicode::utf8(0x07ff), string("\xdf\xbf"));
- EXPECT_EQ(Unicode::utf8(0x0800), string("\xe0\xa0\x80"));
- EXPECT_EQ(Unicode::utf8(0x7fff), string("\xe7\xbf\xbf"));
- EXPECT_EQ(Unicode::utf8(0xfffe), string("\xef\xbf\xbe"));
- EXPECT_EQ(Unicode::utf8(0xffff), string("\xef\xbf\xbf"));
- EXPECT_EQ(Unicode::utf8(0x10000), string("\xf0\x90\x80\x80"));
- EXPECT_EQ(Unicode::utf8(0x10ffff), string("\xf4\x8f\xbf\xbf"));
- EXPECT_TRUE(Unicode::utf8(0x110000).empty());
-}
-
-
-TEST(UnicodeTest, fromSurrogate1) {
- EXPECT_EQ(Unicode::fromSurrogate(0xd800dc00), 0x10000u);
- EXPECT_EQ(Unicode::fromSurrogate(0xd83cdd10), 0x1f110u);
-
- // invalid surrogates
- EXPECT_EQ(Unicode::fromSurrogate(0xd7ffdc00), 0u);
- EXPECT_EQ(Unicode::fromSurrogate(0xdc00dc00), 0u);
- EXPECT_EQ(Unicode::fromSurrogate(0xd800dbff), 0u);
- EXPECT_EQ(Unicode::fromSurrogate(0xd800e000), 0u);
-}
-
-
-TEST(UnicodeTest, fromSurrogate2) {
- EXPECT_EQ(Unicode::fromSurrogate(0xd800, 0xdc00), 0x10000u);
- EXPECT_EQ(Unicode::fromSurrogate(0xd83c, 0xdd10), 0x1f110u);
-
- // invalid surrogates
- EXPECT_EQ(Unicode::fromSurrogate(0xd7ff, 0xdc00), 0u);
- EXPECT_EQ(Unicode::fromSurrogate(0xdc00, 0xdc00), 0u);
- EXPECT_EQ(Unicode::fromSurrogate(0xd800, 0xdbff), 0u);
- EXPECT_EQ(Unicode::fromSurrogate(0xd800, 0xe000), 0u);
-}
-
-
-TEST(UnicodeTest, toSurrogate) {
- EXPECT_EQ(Unicode::toSurrogate(0x10000), 0xd800dc00u);
- EXPECT_EQ(Unicode::toSurrogate(0x1f110), 0xd83cdd10u);
-
- // invalid code points
- EXPECT_EQ(Unicode::toSurrogate(0xffff), 0u);
- EXPECT_EQ(Unicode::toSurrogate(0x110000), 0u);
-}
-
-
-TEST(UnicodeTest, aglNameToCodepoint1) {
- EXPECT_EQ(Unicode::aglNameToCodepoint("does not exist"), 0);
- EXPECT_EQ(Unicode::aglNameToCodepoint("Eogonek"), 0x118);
- EXPECT_EQ(Unicode::aglNameToCodepoint("alpha"), 0x03b1);
- EXPECT_EQ(Unicode::aglNameToCodepoint("Alpha"), 0x0391);
- EXPECT_EQ(Unicode::aglNameToCodepoint("alphatonos"), 0x03ac);
- EXPECT_EQ(Unicode::aglNameToCodepoint("SF460000"), 0x2568);
-}
-
-
-TEST(UnicodeTest, aglNameToCodepoint2) {
- EXPECT_EQ(Unicode::aglNameToCodepoint("uni1234"), 0x1234);
- EXPECT_EQ(Unicode::aglNameToCodepoint("uni1234.suffix"), 0x1234);
- EXPECT_EQ(Unicode::aglNameToCodepoint("uni1234_part2"), 0x1234);
- EXPECT_EQ(Unicode::aglNameToCodepoint("uni12345678"), 0x1234);
- EXPECT_EQ(Unicode::aglNameToCodepoint("uni123"), 0);
- EXPECT_EQ(Unicode::aglNameToCodepoint("uni12345"), 0);
- EXPECT_EQ(Unicode::aglNameToCodepoint("uni1234567"), 0);
- EXPECT_EQ(Unicode::aglNameToCodepoint("uni100000"), 0);
- EXPECT_EQ(Unicode::aglNameToCodepoint("uni123E"), 0x123e);
- EXPECT_EQ(Unicode::aglNameToCodepoint("uni123e"), 0);
- EXPECT_EQ(Unicode::aglNameToCodepoint("uniD7FF"), 0xd7ff);
- EXPECT_EQ(Unicode::aglNameToCodepoint("uniD800"), 0);
-
- EXPECT_EQ(Unicode::aglNameToCodepoint("u1234"), 0x1234);
- EXPECT_EQ(Unicode::aglNameToCodepoint("u1234.suffix"), 0x1234);
- EXPECT_EQ(Unicode::aglNameToCodepoint("u1234_part2"), 0x1234);
- EXPECT_EQ(Unicode::aglNameToCodepoint("u12345678"), 0);
- EXPECT_EQ(Unicode::aglNameToCodepoint("u123.suffix"), 0);
- EXPECT_EQ(Unicode::aglNameToCodepoint("u123"), 0);
- EXPECT_EQ(Unicode::aglNameToCodepoint("u12345"), 0x12345);
- EXPECT_EQ(Unicode::aglNameToCodepoint("u1234567"), 0);
- EXPECT_EQ(Unicode::aglNameToCodepoint("u100000"), 0x100000);
- EXPECT_EQ(Unicode::aglNameToCodepoint("u123E"), 0x123e);
- EXPECT_EQ(Unicode::aglNameToCodepoint("u123e"), 0);
- EXPECT_EQ(Unicode::aglNameToCodepoint("uD7FF"), 0xd7ff);
- EXPECT_EQ(Unicode::aglNameToCodepoint("uD800"), 0);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/UtilityTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/UtilityTest.cpp
deleted file mode 100644
index 2e8ae696b7d..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/UtilityTest.cpp
+++ /dev/null
@@ -1,148 +0,0 @@
-/*************************************************************************
-** UtilityTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <cmath>
-#include <limits>
-#include <sstream>
-#include "utility.hpp"
-
-using namespace util;
-using namespace std;
-
-
-TEST(UtilityTest, trim) {
- ASSERT_EQ(trim(""), "");
- ASSERT_EQ(trim(" "), "");
- ASSERT_EQ(trim(" \n \t "), "");
- ASSERT_EQ(trim("abcdefg"), "abcdefg");
- ASSERT_EQ(trim(" abcdefg"), "abcdefg");
- ASSERT_EQ(trim("abcdefg "), "abcdefg");
- ASSERT_EQ(trim(" abcdefg "), "abcdefg");
- ASSERT_EQ(trim(" abc defg "), "abc defg");
- ASSERT_EQ(trim(" abc \n defg \n \r"), "abc \n defg");
-}
-
-
-TEST(UtilityTest, normalize_space) {
- ASSERT_EQ(normalize_space(""), "");
- ASSERT_EQ(normalize_space(" "), "");
- ASSERT_EQ(normalize_space(" \n \t "), "");
- ASSERT_EQ(normalize_space("abcdefg"), "abcdefg");
- ASSERT_EQ(normalize_space(" abcdefg"), "abcdefg");
- ASSERT_EQ(normalize_space("abcdefg "), "abcdefg");
- ASSERT_EQ(normalize_space(" abcdefg "), "abcdefg");
- ASSERT_EQ(normalize_space(" abc defg "), "abc defg");
- ASSERT_EQ(normalize_space(" abc \n defg \n \r"), "abc defg");
- ASSERT_EQ(normalize_space(" abc \n de\r\ffg \n \r"), "abc de fg");
-}
-
-
-TEST(UtilityTest, tolower) {
- ASSERT_EQ(tolower(""), "");
- ASSERT_EQ(tolower("abcdefg"), "abcdefg");
- ASSERT_EQ(tolower("ABCDEFG"), "abcdefg");
- ASSERT_EQ(tolower("123XyZ456"), "123xyz456");
- ASSERT_EQ(tolower("123\nXyZ 456"), "123\nxyz 456");
-}
-
-
-TEST(UtilityTest, replace) {
- ASSERT_EQ(replace("abcdebcxyb", "bc", ","), "a,de,xyb");
- ASSERT_EQ(replace("abcdebcxyb", "bc", " : "), "a : de : xyb");
- ASSERT_EQ(replace("abcdebcxyb", "", ","), "abcdebcxyb");
- ASSERT_EQ(replace("abcdebcxyb", "bc", ""), "abcdebcxyb");
- ASSERT_EQ(replace("abcdebcxyb", "b", " B "), "a B cde B cxy B ");
- ASSERT_EQ(replace("", "b", " B "), "");
- ASSERT_EQ(replace("a,b, c ,d , e", " ,", ","), "a,b, c,d, e");
-}
-
-
-TEST(UtilityTest, split) {
- vector<string> parts = split("", ",");
- ASSERT_EQ(parts.size(), 1u);
- EXPECT_EQ(parts[0], "");
-
- parts = split("abcde", "");
- ASSERT_EQ(parts.size(), 1u);
- EXPECT_EQ(parts[0], "abcde");
-
- parts = split("abcde", ",");
- ASSERT_EQ(parts.size(), 1u);
- EXPECT_EQ(parts[0], "abcde");
-
- parts = split("1,2 , 3, 4 ,,5", ",");
- ASSERT_EQ(parts.size(), 6u);
- size_t count=0;
- for (const string &part : {"1", "2 ", " 3", " 4 ", "", "5"}) {
- EXPECT_EQ(parts[count++], part);
- }
-
- parts = split("1 sep2sep3, sep", "sep");
- ASSERT_EQ(parts.size(), 4u);
- count=0;
- for (const string &part : {"1 ", "2", "3, ", ""}) {
- EXPECT_EQ(parts[count++], part);
- }
-}
-
-
-TEST(UtilityTest, ilog10) {
- ASSERT_EQ(ilog10(-10), 0);
- ASSERT_EQ(ilog10(-1), 0);
- ASSERT_EQ(ilog10(0), 0);
- for (int i=1; i <= 1000; i++) {
- ASSERT_EQ(ilog10(i), static_cast<int>(log10(i))) << "i=" << i;
- }
- for (int i=1000; i < numeric_limits<int>::max()/10; i*=10) {
- ASSERT_EQ(ilog10(i-1), static_cast<int>(log10(i-1))) << "i=" << i;
- ASSERT_EQ(ilog10(i), static_cast<int>(log10(i))) << "i=" << i;
- ASSERT_EQ(ilog10(i+1), static_cast<int>(log10(i+1))) << "i=" << i;
- }
-}
-
-
-TEST(UtilityTest, to_string) {
- ASSERT_EQ(util::to_string(0), "0");
- ASSERT_EQ(util::to_string(1), "1");
- ASSERT_EQ(util::to_string(100), "100");
- ASSERT_EQ(util::to_string(-1), "-1");
- ASSERT_EQ(util::to_string(2.123), "2.123");
- ASSERT_EQ(util::to_string(-2.123), "-2.123");
- ASSERT_EQ(util::to_string(1.500e-5), "0.000015");
-}
-
-
-static string base64 (const string &str) {
- istringstream iss(str);
- ostringstream oss;
- base64_copy(istreambuf_iterator<char>(iss), istreambuf_iterator<char>(), ostreambuf_iterator<char>(oss));
- return oss.str();
-}
-
-
-TEST(UtilityTest, base64_copy) {
- ASSERT_EQ(base64(""), "");
- ASSERT_EQ(base64("a"), "YQ==");
- ASSERT_EQ(base64("ab"), "YWI=");
- ASSERT_EQ(base64("abc"), "YWJj");
- ASSERT_EQ(base64("abcd"), "YWJjZA==");
- ASSERT_EQ(base64("aBcDe\nFgHiJ\n"), "YUJjRGUKRmdIaUoK");
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/VectorIteratorTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/VectorIteratorTest.cpp
deleted file mode 100644
index 8476c9a9cc1..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/VectorIteratorTest.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-/*************************************************************************
-** VectorIteratorTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include "VectorIterator.hpp"
-
-using namespace std;
-
-
-TEST(VectorIteratorTest, inc) {
- vector<int> vec{4,3,2,9,8,7,10};
- VectorIterator<int> it(vec);
- EXPECT_TRUE(it.valid());
- EXPECT_EQ(*it++, 4);
- EXPECT_EQ(*it, 3);
- EXPECT_EQ(*++it, 2);
- EXPECT_TRUE(it.valid());
- for (size_t i=2; it.valid(); i++) {
- EXPECT_LT(i, vec.size()) << "i=" << i;
- EXPECT_EQ(*it, vec[i]) << "*it=" << *it << ", vec[" << i << "]=" << vec[i];
- ++it;
- }
-}
-
-
-TEST(VectorIteratorTest, addsub) {
- vector<int> vec{4,3,2,9,8,7,10};
- VectorIterator<int> it(vec);
- EXPECT_EQ(*(it += 4), 8);
- EXPECT_EQ(*(it -= 3), 3);
- EXPECT_EQ(*(it + 4), 7);
- EXPECT_EQ(*(it - 1), 4);
-}
-
-
-TEST(VectorIteratorTest, dec) {
- vector<int> vec{4,3,2,9,8,7,10};
- VectorIterator<int> it(vec);
- it += 6;
- EXPECT_EQ(*it, 10);
- EXPECT_EQ(*it--, 10);
- EXPECT_EQ(*it, 7);
- EXPECT_EQ(*--it, 8);
- EXPECT_TRUE(it.valid());
- for (size_t i=4; it.valid(); i--) {
- EXPECT_LT(i, vec.size()) << "i=" << i;
- EXPECT_EQ(*it, vec[i]) << "*it=" << *it << ", vec[" << i << "]=" << vec[i];
- --it;
- }
-}
-
-
-TEST(VectorIteratorTest, invalidate) {
- vector<int> vec{4,3,2,9,8,7,10};
- VectorIterator<int> it(vec);
- --it;
- EXPECT_FALSE(it.valid());
- ++it;
- EXPECT_TRUE(it.valid());
- it += 10;
- EXPECT_FALSE(it.valid());
- it -= 10;
- EXPECT_TRUE(it.valid());
- it.invalidate();
- EXPECT_FALSE(it.valid());
- it.reset();
- ASSERT_TRUE(it.valid());
- EXPECT_EQ(*it, 4);
-}
-
-
-TEST(VectorIteratorTest, compare) {
- vector<int> vec{4,3,2,9,8,7,10};
- VectorIterator<int> it1(vec);
- VectorIterator<int> it2 = it1 + 1;
- EXPECT_NE(it1, it2);
- ++it1;
- EXPECT_EQ(it1, it2);
- EXPECT_LE(it1, it2);
- EXPECT_GE(it1, it2);
- ++it2;
- EXPECT_LT(it1, it2);
- EXPECT_GT(it2, it1);
-}
-
-
-struct MyPair {
- int number;
- const char *str;
-}
-mypair[] = {
- {3, "text"},
- {5, "string"}
-};
-
-TEST(VectorIteratorTest, deref) {
- vector<MyPair> vec(mypair, mypair+2);
- VectorIterator<MyPair> it(vec);
- EXPECT_TRUE(it.valid());
- EXPECT_EQ((*it).number, 3);
- EXPECT_EQ((*it).str, mypair[0].str);
- EXPECT_EQ(it->number, 3);
- EXPECT_EQ(it->str, mypair[0].str);
- ++it;
- EXPECT_EQ(it->number, 5);
- EXPECT_EQ(it->str, mypair[1].str);
-}
-
-
-TEST(VectorIteratorTest, fail) {
- vector<MyPair> vec(mypair, mypair+2);
- VectorIterator<MyPair> it(vec);
- --it;
- EXPECT_FALSE(it.valid());
- EXPECT_THROW(*it, IteratorException);
- EXPECT_THROW(it->number, IteratorException);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/VectorStreamTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/VectorStreamTest.cpp
deleted file mode 100644
index 4d767bb425f..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/VectorStreamTest.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/*************************************************************************
-** VectorStreamTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <vector>
-#include "VectorStream.hpp"
-
-using std::string;
-using std::vector;
-
-TEST(VectorStreamTest, read1) {
- const char *str = "abcdefghijklm\0nopqrstuvwxyz";
- vector<char> vec(str, str+27);
- VectorInputStream<char> vs(vec);
- for (unsigned count = 0; vs; count++) {
- int c = vs.get();
- if (count < vec.size()) {
- EXPECT_EQ(c, str[count]) << "count=" << count;
- }
- else {
- EXPECT_EQ(c, -1);
- }
- }
-}
-
-
-TEST(VectorStreamTest, read2) {
- vector<int> vec;
- VectorInputStream<int> vs(vec);
- EXPECT_EQ(vs.get(), -1);
-}
-
-
-TEST(VectorStreamTest, read3) {
- vector<int> vec;
- vec.push_back(-2);
- vec.push_back(-1);
- vec.push_back(0);
- vec.push_back(1);
- VectorInputStream<int> vs(vec);
- EXPECT_EQ(vs.get(), 254);
- EXPECT_EQ(vs.get(), 255);
- EXPECT_EQ(vs.get(), 0);
- EXPECT_EQ(vs.get(), 1);
- EXPECT_EQ(vs.get(), -1);
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/XMLNodeTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/XMLNodeTest.cpp
deleted file mode 100644
index d7d4159970d..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/XMLNodeTest.cpp
+++ /dev/null
@@ -1,393 +0,0 @@
-/*************************************************************************
-** XMLNodeTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include <algorithm>
-#include <cstring>
-#include <memory>
-#include "utility.hpp"
-#include "XMLNode.hpp"
-
-using namespace std;
-
-
-TEST(XMLNodeTest, downcast) {
- unique_ptr<XMLNode> elem = util::make_unique<XMLElement>("element");
- EXPECT_EQ(elem->toElement(), elem.get());
- EXPECT_EQ(elem->toText(), nullptr);
- EXPECT_EQ(elem->toCData(), nullptr);
- EXPECT_EQ(elem->toComment(), nullptr);
-
- unique_ptr<XMLNode> text = util::make_unique<XMLText>("text");
- EXPECT_EQ(text->toElement(), nullptr);
- EXPECT_EQ(text->toText(), text.get());
- EXPECT_EQ(text->toCData(), nullptr);
- EXPECT_EQ(text->toComment(), nullptr);
-
- unique_ptr<XMLNode> cdata = util::make_unique<XMLCData>("cdata");
- EXPECT_EQ(cdata->toElement(), nullptr);
- EXPECT_EQ(cdata->toText(), nullptr);
- EXPECT_EQ(cdata->toCData(), cdata.get());
- EXPECT_EQ(cdata->toComment(), nullptr);
-
- unique_ptr<XMLNode> comment = util::make_unique<XMLComment>("comment");
- EXPECT_EQ(comment->toElement(), nullptr);
- EXPECT_EQ(comment->toText(), nullptr);
- EXPECT_EQ(comment->toCData(), nullptr);
- EXPECT_EQ(comment->toComment(), comment.get());
-}
-
-
-static int number_of_children (XMLElement &elem) {
- int count=0;
- for (XMLNode *node = elem.firstChild(); node; node=node->next())
- count++;
- return count;
-}
-
-
-TEST(XMLNodeTest, appendElement) {
- XMLElement root("root");
- root.append(util::make_unique<XMLElement>("child1"));
- root.append(util::make_unique<XMLElement>("child2"));
- EXPECT_EQ(number_of_children(root), 2);
- EXPECT_FALSE(root.empty());
- XMLElement *child1 = root.firstChild()->toElement();
- XMLElement *child2 = root.lastChild()->toElement();
- ASSERT_NE(child1, nullptr);
- EXPECT_EQ(child1->parent(), &root);
- EXPECT_EQ(child1->prev(), nullptr);
- EXPECT_EQ(child1->next(), child2);
- EXPECT_EQ(child1->firstChild(), nullptr);
- EXPECT_EQ(child1->lastChild(), nullptr);
- EXPECT_EQ(child1->name(), "child1");
-
- ASSERT_NE(child2, nullptr);
- EXPECT_EQ(child2->parent(), &root);
- EXPECT_EQ(child2->prev(), child1);
- EXPECT_EQ(child2->next(), nullptr);
- EXPECT_EQ(child2->firstChild(), nullptr);
- EXPECT_EQ(child2->lastChild(), nullptr);
- EXPECT_EQ(child2->name(), "child2");
- root.clear();
- EXPECT_TRUE(root.empty());
-}
-
-
-TEST(XMLNodeTest, prependElement) {
- XMLElement root("root");
- root.prepend(util::make_unique<XMLElement>("child1"));
- root.prepend(util::make_unique<XMLElement>("child2"));
- EXPECT_EQ(number_of_children(root), 2);
- XMLElement *child1 = root.lastChild()->toElement();
- XMLElement *child2 = root.firstChild()->toElement();
- ASSERT_NE(child1, nullptr);
- EXPECT_EQ(child1->parent(), &root);
- EXPECT_EQ(child1->prev(), child2);
- EXPECT_EQ(child1->next(), nullptr);
- EXPECT_EQ(child1->firstChild(), nullptr);
- EXPECT_EQ(child1->lastChild(), nullptr);
- EXPECT_EQ(child1->name(), "child1");
-
- ASSERT_NE(child2, nullptr);
- EXPECT_EQ(child2->parent(), &root);
- EXPECT_EQ(child2->prev(), nullptr);
- EXPECT_EQ(child2->next(), child1);
- EXPECT_EQ(child2->firstChild(), nullptr);
- EXPECT_EQ(child2->lastChild(), nullptr);
- EXPECT_EQ(child2->name(), "child2");
-}
-
-
-TEST(XMLNodeTest, appendText) {
- XMLElement root("root");
- root.append(util::make_unique<XMLText>("first string"));
- EXPECT_EQ(number_of_children(root), 1);
- XMLText *lastChild = root.lastChild()->toText();
- ASSERT_NE(lastChild, nullptr);
- EXPECT_EQ(lastChild->getText(), "first string");
- EXPECT_EQ(lastChild->parent(), &root);
- EXPECT_EQ(lastChild->prev(), nullptr);
- EXPECT_EQ(lastChild->next(), nullptr);
- EXPECT_EQ(root.firstChild(), root.lastChild());
-
- root.append(util::make_unique<XMLText>(",second string"));
- EXPECT_EQ(number_of_children(root), 1);
- lastChild = root.lastChild()->toText();
- ASSERT_NE(lastChild, nullptr);
- EXPECT_EQ(lastChild->getText(), "first string,second string");
- EXPECT_EQ(lastChild->parent(), &root);
- EXPECT_EQ(lastChild->prev(), nullptr);
- EXPECT_EQ(lastChild->next(), nullptr);
- EXPECT_EQ(root.firstChild(), root.lastChild());
-
- root.append(",third string");
- EXPECT_EQ(number_of_children(root), 1);
- lastChild = root.lastChild()->toText();
- ASSERT_NE(lastChild, nullptr);
- EXPECT_EQ(lastChild->getText(), "first string,second string,third string");
- EXPECT_EQ(lastChild->parent(), &root);
- EXPECT_EQ(lastChild->prev(), nullptr);
- EXPECT_EQ(lastChild->next(), nullptr);
-
- root.append(util::make_unique<XMLElement>("separator"));
- root.append(",fourth string");
- EXPECT_EQ(number_of_children(root), 3);
- lastChild = root.lastChild()->toText();
- ASSERT_NE(lastChild, nullptr);
- EXPECT_EQ(lastChild->getText(), ",fourth string");
-
- root.append(util::make_unique<XMLElement>("separator"));
- root.append(util::make_unique<XMLText>(",fifth string"));
- EXPECT_EQ(number_of_children(root), 5);
- lastChild = root.lastChild()->toText();
- ASSERT_NE(lastChild, nullptr);
- EXPECT_EQ(lastChild->getText(), ",fifth string");
-
- root.clear();
- EXPECT_TRUE(root.empty());
-}
-
-
-TEST(XMLNodeTest, prependText) {
- XMLElement root("root");
- root.prepend(util::make_unique<XMLText>("first string"));
- EXPECT_EQ(number_of_children(root), 1);
- XMLText *firstChild = root.firstChild()->toText();
- ASSERT_NE(firstChild, nullptr);
- EXPECT_EQ(firstChild->getText(), "first string");
- EXPECT_EQ(firstChild->parent(), &root);
- EXPECT_EQ(firstChild->prev(), nullptr);
- EXPECT_EQ(firstChild->next(), nullptr);
-
- root.prepend(util::make_unique<XMLText>("second string,"));
- EXPECT_EQ(number_of_children(root), 1);
- firstChild = root.firstChild()->toText();
- ASSERT_NE(firstChild, nullptr);
- EXPECT_EQ(firstChild->getText(), "second string,first string");
- EXPECT_EQ(firstChild->parent(), &root);
- EXPECT_EQ(firstChild->prev(), nullptr);
- EXPECT_EQ(firstChild->next(), nullptr);
-
- root.prepend(util::make_unique<XMLElement>("separator"));
- root.prepend(util::make_unique<XMLText>("third string,"));
- EXPECT_EQ(number_of_children(root), 3);
- firstChild = root.firstChild()->toText();
- ASSERT_NE(firstChild, nullptr);
- EXPECT_EQ(firstChild->getText(), "third string,");
- EXPECT_EQ(firstChild->parent(), &root);
- EXPECT_EQ(firstChild->prev(), nullptr);
- EXPECT_EQ(firstChild->next()->next(), root.lastChild());
- EXPECT_EQ(root.lastChild()->prev()->prev(), root.firstChild());
-}
-
-
-TEST(XMLNodeTest, attributes) {
- XMLElement root("root");
- root.addAttribute("string", "text");
- root.addAttribute("integer", 42);
- root.addAttribute("double", 42.24);
- EXPECT_TRUE(root.empty());
- EXPECT_TRUE(root.hasAttribute("string"));
- EXPECT_TRUE(root.hasAttribute("integer"));
- EXPECT_TRUE(root.hasAttribute("double"));
- EXPECT_FALSE(root.hasAttribute("noname "));
- EXPECT_STREQ(root.getAttributeValue("string"), "text");
- EXPECT_STREQ(root.getAttributeValue("integer"), "42");
- EXPECT_STREQ(root.getAttributeValue("double"), "42.24");
- EXPECT_EQ(root.getAttributeValue("none"), nullptr);
-}
-
-
-TEST(XMLNodeTest, clone) {
- XMLElement root ("root");
- root.addAttribute("string", "text");
- root.addAttribute("integer", 42);
- root.addAttribute("double", 42.24);
- root.append("text");
- unique_ptr<XMLElement> clone = util::static_unique_ptr_cast<XMLElement>(root.clone());
- EXPECT_EQ(number_of_children(root), 1);
- EXPECT_STREQ(clone->getAttributeValue("string"), "text");
- EXPECT_STREQ(clone->getAttributeValue("integer"), "42");
- EXPECT_STREQ(clone->getAttributeValue("double"), "42.24");
-}
-
-
-TEST(XMLNodeTest, insertBefore) {
- XMLElement root("root");
- auto child1 = util::make_unique<XMLElement>("child1");
- auto child2 = util::make_unique<XMLElement>("child2");
- XMLNode* child1Ptr = root.append(std::move(child1));
- XMLNode* child2Ptr = root.append(std::move(child2));
- auto node = util::make_unique<XMLElement>("node");
- EXPECT_FALSE(root.insertBefore(util::make_unique<XMLElement>("dummy"), node.get()));
- EXPECT_EQ(number_of_children(root), 2);
- EXPECT_TRUE(root.insertBefore(util::make_unique<XMLElement>("child3"), child1Ptr));
- EXPECT_EQ(number_of_children(root), 3);
- XMLElement *child = root.firstChild()->toElement();
- EXPECT_EQ(child->name(), "child3");
- EXPECT_TRUE(root.insertBefore(util::make_unique<XMLElement>("child4"), child2Ptr));
- const char *names[] = {"child3", "child1", "child4", "child2"};
- const char **p = names;
- for (XMLNode *node=root.firstChild(); node; node=node->next()) {
- XMLElement *elem = node->toElement();
- ASSERT_NE(elem, nullptr);
- EXPECT_EQ(elem->name(), *p++) << "name=" << elem->name();
- EXPECT_EQ(elem->parent(), &root);
- if (elem->prev()) {
- EXPECT_EQ(elem->prev()->next(), elem);
- }
- }
-}
-
-
-TEST(XMLNodeTest, insertAfter) {
- XMLElement root("root");
- auto child1 = util::make_unique<XMLElement>("child1");
- auto child2 = util::make_unique<XMLElement>("child2");
- XMLNode *child1Ptr = root.append(std::move(child1));
- XMLNode *child2Ptr =root.append(std::move(child2));
- auto node = util::make_unique<XMLElement>("node");
- EXPECT_FALSE(root.insertAfter(util::make_unique<XMLElement>("dummy"), node.get()));
- EXPECT_EQ(number_of_children(root), 2);
- EXPECT_TRUE(root.insertAfter(util::make_unique<XMLElement>("child3"), child1Ptr));
- EXPECT_TRUE(root.insertAfter(util::make_unique<XMLElement>("child4"), child2Ptr));
- EXPECT_EQ(number_of_children(root), 4);
- const char *names[] = {"child1", "child3", "child2", "child4"};
- const char **p = names;
- for (XMLNode *node=root.firstChild(); node; node=node->next()) {
- XMLElement *elem = node->toElement();
- ASSERT_NE(elem, nullptr);
- EXPECT_EQ(elem->name(), *p++) << "name=" << elem->name();
- EXPECT_EQ(elem->parent(), &root);
- if (elem->prev()) {
- EXPECT_EQ(elem->prev()->next(), elem);
- }
- }
-}
-
-
-TEST(XMLNodeTest, getDescendants) {
- XMLElement root("root");
- auto child1 = util::make_unique<XMLElement>("child");
- auto child2 = util::make_unique<XMLElement>("childX");
- auto child3 = util::make_unique<XMLElement>("child");
- auto child4 = util::make_unique<XMLElement>("child");
- child1->addAttribute("attr", "value");
- child2->addAttribute("attr", "value");
- child3->addAttribute("attr", "value");
- child3->append("text");
- XMLElement *child3Ptr = static_cast<XMLElement*>(child2->append(std::move(child3)));
- XMLElement *child2Ptr = static_cast<XMLElement*>(child1->append(std::move(child2)));
- XMLElement *child1Ptr = static_cast<XMLElement*>(root.append(std::move(child1)));
- XMLElement *child4Ptr = static_cast<XMLElement*>(root.append(std::move(child4)));
- vector<XMLElement*> elements;
- root.getDescendants("child", nullptr, elements);
- EXPECT_EQ(elements.size(), 3u);
- {
- XMLElement *nodes[] = {child1Ptr, child3Ptr, child4Ptr};
- XMLElement **p = nodes;
- for (const XMLElement *elem : elements)
- EXPECT_EQ(elem, *p++);
- }{
- elements.clear();
- root.getDescendants("child", "attr", elements);
- EXPECT_EQ(elements.size(), 2u);
- XMLElement *nodes[] = {child1Ptr, child3Ptr};
- XMLElement **p = nodes;
- for (const XMLElement *elem : elements)
- EXPECT_EQ(elem, *p++);
- }{
- elements.clear();
- root.getDescendants(nullptr, "attr", elements);
- EXPECT_EQ(elements.size(), 3u);
- XMLElement *nodes[] = {child1Ptr, child2Ptr, child3Ptr};
- XMLElement **p = nodes;
- for (const XMLElement *elem : elements)
- EXPECT_EQ(elem, *p++);
- }
-}
-
-
-TEST(XMLNodeTest, getFirstDescendant) {
- XMLElement root("root");
- auto child1 = util::make_unique<XMLElement>("child");
- auto child2 = util::make_unique<XMLElement>("childX");
- auto child3 = util::make_unique<XMLElement>("child");
- auto child4 = util::make_unique<XMLElement>("child");
- child1->addAttribute("attr", "valueX");
- child2->addAttribute("attr", "value");
- child3->addAttribute("attrX", "value");
- child3->append("text");
- XMLNode *child3Ptr = child2->append(std::move(child3));
- child1->append(std::move(child2));
- XMLNode *child1Ptr = root.append(std::move(child1));
- root.append(std::move(child4));
- EXPECT_EQ(root.getFirstDescendant("child", nullptr, nullptr), child1Ptr);
- EXPECT_EQ(root.getFirstDescendant("child", "attr", nullptr), child1Ptr);
- EXPECT_EQ(root.getFirstDescendant("child", "attrX", nullptr), child3Ptr);
- EXPECT_EQ(root.getFirstDescendant("child", "attrX", "value"), child3Ptr);
- EXPECT_EQ(root.getFirstDescendant(0, "attrX", "value"), child3Ptr);
- EXPECT_EQ(root.getFirstDescendant(0, "attrX", nullptr), child3Ptr);
- EXPECT_EQ(root.getFirstDescendant("child", "attr", "value"), nullptr);
-}
-
-
-TEST(XMLNodeTest, write) {
- XMLElement root("root");
- auto child1 = util::make_unique<XMLElement>("child");
- auto child2 = util::make_unique<XMLElement>("childX");
- auto child3 = util::make_unique<XMLElement>("child");
- auto child4 = util::make_unique<XMLElement>("child");
- child1->addAttribute("attr", "valueX");
- child2->addAttribute("attr", "value");
- child3->addAttribute("attrX", "value");
- child3->append("text");
- child2->append(std::move(child3));
- child1->append(std::move(child2));
- root.append(std::move(child1));
- root.append(std::move(child4));
- ostringstream oss;
- root.write(oss);
- string str = oss.str();
- str.erase(remove(str.begin(), str.end(), '\n'), str.end());
- EXPECT_EQ(str, "<root><child attr='valueX'><childX attr='value'><child attrX='value'>text</child></childX></child><child/></root>");
-}
-
-
-TEST(XMLNodeTest, cdata) {
- XMLElement root("root");
- auto cdataNode = util::make_unique<XMLCData>("text & <text>");
- XMLNode *cdataNodePtr = root.append(std::move(cdataNode));
- root.append(util::make_unique<XMLElement>("element"));
- root.append(cdataNodePtr->clone());
- ostringstream oss;
- root.write(oss);
- string str = oss.str();
- str.erase(remove(str.begin(), str.end(), '\n'), str.end());
- EXPECT_EQ(str, "<root><![CDATA[text & <text>]]><element/><![CDATA[text & <text>]]></root>");
-
- cdataNodePtr->clear();
- oss.str("");
- root.write(oss);
- str = oss.str();
- str.erase(remove(str.begin(), str.end(), '\n'), str.end());
- EXPECT_EQ(str, "<root><element/><![CDATA[text & <text>]]></root>");
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/XMLStringTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/XMLStringTest.cpp
deleted file mode 100644
index 2ebe8cb0f82..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/XMLStringTest.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-/*************************************************************************
-** XMLStringTest.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <gtest/gtest.h>
-#include "XMLString.hpp"
-
-using namespace std;
-
-
-TEST(XMLStringTest, stringcast) {
- const char *cstr = "special characters: &\"'<>";
- string str = cstr;
- EXPECT_EQ(XMLString(cstr, true), string("special characters: &\"'<>"));
- EXPECT_EQ(XMLString(cstr), string("special characters: &amp;&quot;&apos;&lt;>"));
- EXPECT_EQ(XMLString(str, true), string("special characters: &\"'<>"));
- EXPECT_EQ(XMLString(str), string("special characters: &amp;&quot;&apos;&lt;>"));
-}
-
-
-TEST(XMLStringTest, intcast) {
- EXPECT_EQ(XMLString(65, true), string("65"));
- EXPECT_EQ(XMLString(65, false), string("A"));
- EXPECT_EQ(XMLString(1000, true), string("1000"));
- EXPECT_EQ(XMLString(1000, false), string("\xCF\xA8")); // UTF-8
-}
-
-
-TEST(XMLStringTest, doublecast) {
- EXPECT_EQ(XMLString(1.2345), string("1.2345"));
- XMLString::DECIMAL_PLACES = 3;
- EXPECT_EQ(XMLString(1.2345), string("1.235"));
- XMLString::DECIMAL_PLACES = 2;
- EXPECT_EQ(XMLString(1.2345), string("1.23"));
- XMLString::DECIMAL_PLACES = 1;
- EXPECT_EQ(XMLString(1.2345), string("1.2"));
- XMLString::DECIMAL_PLACES = 0;
- EXPECT_EQ(XMLString(1.2345), string("1.2345"));
-
- EXPECT_EQ(XMLString(-1.2345), string("-1.2345"));
- XMLString::DECIMAL_PLACES = 3;
- EXPECT_EQ(XMLString(-1.2345), string("-1.235"));
- XMLString::DECIMAL_PLACES = 2;
- EXPECT_EQ(XMLString(-1.2345), string("-1.23"));
- XMLString::DECIMAL_PLACES = 1;
- EXPECT_EQ(XMLString(-1.2345), string("-1.2"));
- XMLString::DECIMAL_PLACES = 0;
- EXPECT_EQ(XMLString(-1.2345), string("-1.2345"));
-
- EXPECT_EQ(XMLString(10.0), string("10"));
- EXPECT_EQ(XMLString(-10.0), string("-10"));
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/check-conv b/Build/source/texk/dvisvgm/dvisvgm-src/tests/check-conv
deleted file mode 100755
index a68e88e888e..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/check-conv
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/bash
-# This file is part of the dvisvgm package and published under the
-# terms of the GNU General Public License version 3 or later.
-# See file COPYING for further details.
-# Copyright (C) 2009-2021 Martin Gieseking <martin.gieseking@uos.de>
-
-
-files=(sample frktest)
-state=0
-
-BLUE="\E[0;34m"
-GREEN="\E[0;32m"
-RED="\E[0;31m"
-COLOR_OFF="\E[0m"
-
-if [ \! -e enable-check-conv ]; then
- echo -e "${BLUE}conversion checks skipped${COLOR_OFF}"
- exit 0
-fi
-
-for f in ${files[@]}; do
- for m in "wf" "nf"; do
- infile=${srcdir}/$f
- outfile=$f-$m.svg
- cmpfile=${srcdir}/$f-$m-cmp.svg
- if [ $m = "wf" ]; then
- ../src/dvisvgm -v0 -o$outfile $infile
- else
- ../src/dvisvgm -v0 -n -o$outfile $infile
- fi
- xsltproc --novalid ${srcdir}/normalize.xsl $outfile | xmllint --format - >tmp1.svg
- xsltproc --novalid ${srcdir}/normalize.xsl $cmpfile | xmllint --format - >tmp2.svg
- mv tmp1.svg $outfile
-
- diff $outfile tmp2.svg >$f-$m.diff #>/dev/null
- if [ $? -ne 0 ]; then
- echo -en "${RED}FAILED $COLOR_OFF"
- state=1
- else
- echo -en "${GREEN}PASSED $COLOR_OFF"
- rm $outfile
- fi
- echo "converting $f.dvi (mode $m)"
- if [ \! -s $f-$m.diff ]; then
- rm $f-$m.diff
- fi
- rm tmp2.svg
- done
-done
-exit $state
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.am b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.am
deleted file mode 100644
index 731b0a19c6d..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.am
+++ /dev/null
@@ -1,23 +0,0 @@
-## This file is part of dvisvgm
-## Copyright (C) 2016-2021 Martin Gieseking <martin.gieseking@uos.de>
-##
-## Process this file with automake.
-
-EXTRA_DIST = \
- cidjmgr0-h.tfm \
- cmr10.600gf \
- cmr10.pfb \
- cmr10.tfm \
- dvipdfm_test.map \
- dvips_test.map \
- frktest.dvi \
- frktest-nf-cmp.svg \
- frktest-wf-cmp.svg \
- sample.dvi \
- sample-nf-cmp.svg \
- sample.sfd \
- sample-wf-cmp.svg \
- sample_v2.dvi \
- sample_v3.dvi \
- ot1.cmap
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.in b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.in
deleted file mode 100644
index 78c73d04c72..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.in
+++ /dev/null
@@ -1,501 +0,0 @@
-# Makefile.in generated by automake 1.16.2 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-am__is_gnu_make = { \
- if test -z '$(MAKELEVEL)'; then \
- false; \
- elif test -n '$(MAKE_HOST)'; then \
- true; \
- elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
- true; \
- else \
- false; \
- fi; \
-}
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-target_triplet = @target@
-subdir = tests/data
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
- $(top_srcdir)/m4/ax_code_coverage.m4 \
- $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
- $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-am__DIST_COMMON = $(srcdir)/Makefile.in
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_CPPFLAGS = @AM_CPPFLAGS@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = @AM_LDFLAGS@
-AR = @AR@
-ASCIIDOC = @ASCIIDOC@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BROTLI_CFLAGS = @BROTLI_CFLAGS@
-BROTLI_LIBS = @BROTLI_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
-CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
-CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
-CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
-CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
-CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DATE = @DATE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
-FREETYPE_LIBS = @FREETYPE_LIBS@
-GCOV = @GCOV@
-GENHTML = @GENHTML@
-GREP = @GREP@
-HAVE_CXX11 = @HAVE_CXX11@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-KPSE_CFLAGS = @KPSE_CFLAGS@
-KPSE_LIBS = @KPSE_LIBS@
-LCOV = @LCOV@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBCRYPTO_CFLAGS = @LIBCRYPTO_CFLAGS@
-LIBCRYPTO_LIBS = @LIBCRYPTO_LIBS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-TTFAUTOHINT_CFLAGS = @TTFAUTOHINT_CFLAGS@
-TTFAUTOHINT_LIBS = @TTFAUTOHINT_LIBS@
-VERSION = @VERSION@
-WOFF2_CFLAGS = @WOFF2_CFLAGS@
-WOFF2_LIBS = @WOFF2_LIBS@
-XMLTO = @XMLTO@
-XSLTPROC = @XSLTPROC@
-ZLIB_CFLAGS = @ZLIB_CFLAGS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-dvisvgm_srcdir = @dvisvgm_srcdir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-EXTRA_DIST = \
- cidjmgr0-h.tfm \
- cmr10.600gf \
- cmr10.pfb \
- cmr10.tfm \
- dvipdfm_test.map \
- dvips_test.map \
- frktest.dvi \
- frktest-nf-cmp.svg \
- frktest-wf-cmp.svg \
- sample.dvi \
- sample-nf-cmp.svg \
- sample.sfd \
- sample-wf-cmp.svg \
- sample_v2.dvi \
- sample_v3.dvi \
- ot1.cmap
-
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/data/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --foreign tests/data/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(BUILT_SOURCES)
- $(MAKE) $(AM_MAKEFLAGS) distdir-am
-
-distdir-am: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
- cscopelist-am ctags-am distclean distclean-generic \
- distclean-libtool distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags-am uninstall uninstall-am
-
-.PRECIOUS: Makefile
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cidjmgr0-h.tfm b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cidjmgr0-h.tfm
deleted file mode 100644
index a5d95813590..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cidjmgr0-h.tfm
+++ /dev/null
Binary files differ
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.600gf b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.600gf
deleted file mode 100644
index 6dca421e21c..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.600gf
+++ /dev/null
Binary files differ
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.pfb b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.pfb
deleted file mode 100644
index fa8c833d374..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.pfb
+++ /dev/null
Binary files differ
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.tfm b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.tfm
deleted file mode 100644
index 6594c9c4a7f..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.tfm
+++ /dev/null
Binary files differ
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/dvipdfm_test.map b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/dvipdfm_test.map
deleted file mode 100644
index 6e34d5f8f90..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/dvipdfm_test.map
+++ /dev/null
@@ -1,1010 +0,0 @@
-% /var/lib/texmf/fonts/map/dvipdfm/updmap/dvipdfm_dl14.map: maintained by the script updmap.
-% Don't change this file directly. Edit texmf/web2c/updmap.cfg
-% and run updmap to recreate this file.
-% A log of the updmap run that has created this file is available here:
-% /var/lib/texmf/web2c/updmap.log
-bchbc8a
-bchbi8r 8r bchbi8a
-bchbi8v t5 bchbi8v
-bchbo8r 8r bchb8a -s .167
-bchbo8v t5 bchb8v -s 0.194
-bchr8r 8r bchr8a
-bchr8v t5 bchr8v
-bchrc8a
-bchri8r 8r bchri8a
-bchri8v t5 bchri8v
-bchro8r 8r bchr8a -s .167
-bchro8v t5 bchr8v -s 0.194
-cmb10 -r
-cmbsy10o default cmbsy10 -s .167 -r
-cmbsy10 -r
-cmbsy5 -r
-cmbsy6 default cmbsy7 -r
-cmbsy7 -r
-cmbsy8 default cmbsy7 -r
-cmbsy9 default cmbsy10 -r
-cmbx10 -r
-cmbx12 -r
-cmbx5 -r
-cmbx6 -r
-cmbx7 -r
-cmbx8 -r
-cmbx9 -r
-cmbxi10f default cmbxti10 -s -0.25 -r
-cmbxsl10 -r
-cmbxti10 -r
-cmbxti12 default cmbxti10 -r
-cmbxti7 default cmbxti10 -r
-cmcb10 -r
-cmcbx10 -r
-cmcbx12 -r
-cmcbx5 -r
-cmcbx6 -r
-cmcbx7 -r
-cmcbx8 -r
-cmcbx9 -r
-cmcbxsl10 default cmcbxsl1 -r
-cmcbxti10 default cmcbxti1 -r
-cmccsc10 -r
-cmccsc8 -r
-cmccsc9 -r
-cmcinch default cmcinch7 -r
-cmcitt10 -r
-cmcsc10 -r
-cmcsc8 default cmcsc10 -r
-cmcsc9 default cmcsc10 -r
-cmcsl10 -r
-cmcsl12 -r
-cmcsl8 -r
-cmcsl9 -r
-cmcsltt10 default cmcsltt1 -r
-cmcss10 -r
-cmcss12 -r
-cmcss17 -r
-cmcss8 -r
-cmcss9 -r
-cmcssbx10 default cmcssbx1 -r
-cmcssdc10 default cmcssdc1 -r
-cmcssi10 -r
-cmcssi12 -r
-cmcssi17 -r
-cmcssi8 -r
-cmcssi9 -r
-cmcssq8 -r
-cmcssqi8 -r
-cmcti10 -r
-cmcti12 -r
-cmcti7 -r
-cmcti8 -r
-cmcti9 -r
-cmctt10 -r
-cmctt12 -r
-cmctt8 -r
-cmctt9 -r
-cmcu10 -r
-cmcyr10 -r
-cmcyr12 -r
-cmcyr17 -r
-cmcyr5 -r
-cmcyr6 -r
-cmcyr7 -r
-cmcyr8 -r
-cmcyr9 -r
-cmdunh10 -r
-cmex10 -r
-cmex7 default fmex7
-cmex8 default fmex8
-cmex9 default fmex9
-cmff10 -r
-cmfi10 -r
-cmfib8 -r
-cminch -r
-cmitt10 -r
-cmitt12 default cmitt10 -r
-cmitt9 default cmitt10 -r
-cmmi10o default cmmi10 -s .167 -r
-cmmi10 -r
-cmmi12 -r
-cmmi5 -r
-cmmi6 -r
-cmmi7 -r
-cmmi8 -r
-cmmi9 -r
-cmmib10o default cmmib10 -s .167 -r
-cmmib10 -r
-cmmib5 -r
-cmmib6 default cmmib7 -r
-cmmib7 -r
-cmmib8 default cmmib7 -r
-cmmib9 default cmmib10 -r
-cmr10 -r
-cmr12 -r
-cmr17 -r
-cmr5 -r
-cmr6 -r
-cmr7 -r
-cmr8 -r
-cmr9 -r
-cmsl10 -r
-cmsl12 -r
-cmsl6 default cmsl8 -r
-cmsl8 -r
-cmsl9 -r
-cmsltt10 -r
-cmsltt9 default cmsltt10 -r
-cmss10 -r
-cmss12 -r
-cmss17 -r
-cmss8 -r
-cmss9 -r
-cmssbx10 -r
-cmssbxo10 default cmssbx10 -s .212 -r
-cmssdc10 -r
-cmssi10 -r
-cmssi12 -r
-cmssi17 -r
-cmssi8 -r
-cmssi9 -r
-cmssq8 -r
-cmssqi8 -r
-cmsy10o default cmsy10 -s .167 -r
-cmsy10 -r
-cmsy5 -r
-cmsy6 -r
-cmsy7 -r
-cmsy8 -r
-cmsy9 -r
-cmtcsc10 -r
-cmtex10 -r
-cmtex8 -r
-cmtex9 -r
-cmti10 -r
-cmti12 -r
-cmti7 -r
-cmti8 -r
-cmti9 -r
-cmtt10 -r
-cmtt12 -r
-cmtt8 -r
-cmtt9 -r
-cmu10 -r
-cmvtt10o default cmvtt10 -s .167 -r
-cmvtt10 -r
-comic8b 8b ComicSansMS8b
-comicbd8b 8b ComicSansMSBold8b
-comicbdo8b 8b ComicSansMSBoldItalic8b
-comico8b 8b ComicSansMSItalic8b
-csb10
-csbx10
-csbx12
-csbx5
-csbx6
-csbx7
-csbx8
-csbx9
-csbxsl10
-csbxti10
-cscsc10
-csdunh10
-csff10
-csfi10
-csfib8
-csinch
-csitt10
-csr10
-csr12
-csr17
-csr5
-csr6
-csr7
-csr8
-csr9
-cssl10
-cssl12
-cssl8
-cssl9
-cssltt10
-csss10
-csss12
-csss17
-csss8
-csss9
-csssbx10
-csssdc10
-csssi10
-csssi12
-csssi17
-csssi8
-csssi9
-csssq8
-csssqi8
-cstcsc10
-csti10
-csti12
-csti7
-csti8
-csti9
-cstt10
-cstt12
-cstt8
-cstt9
-csu10
-csvtt10
-dsrom10
-dsrom12
-dsrom8
-dsss10
-dsss12
-dsss8
-euex10 -r
-euex7 default euex10 -r
-euex8 default euex10 -r
-euex9 default euex10 -r
-eufb10 -r
-eufb5 -r
-eufb6 default eufb7 -r
-eufb7 -r
-eufb8 default eufb7 -r
-eufb9 default eufb10 -r
-eufm10 -r
-eufm5 -r
-eufm6 default eufm7 -r
-eufm7 -r
-eufm8 default eufm7 -r
-eufm9 default eufm10 -r
-eurb10 -r
-eurb5 -r
-eurb6 default eurb7 -r
-eurb7 -r
-eurb8 default eurb7 -r
-eurb9 default eurb10 -r
-eurm10 -r
-eurm5 -r
-eurm6 default eurm7 -r
-eurm7 -r
-eurm8 default eurm7 -r
-eurm9 default eurm10 -r
-eusb10 -r
-eusb5 -r
-eusb6 default eusb7 -r
-eusb7 -r
-eusb8 default eusb7 -r
-eusb9 default eusb10 -r
-eusm10 -r
-eusm5 -r
-eusm6 default eusm7 -r
-eusm7 -r
-eusm8 default eusm7 -r
-eusm9 default eusm10 -r
-ex-anttb antt-ex anttb
-ex-anttcb antt-ex anttcb
-ex-anttcl antt-ex anttcl
-ex-anttcm antt-ex anttcm
-ex-anttcr antt-ex anttcr
-ex-anttl antt-ex anttl
-ex-anttm antt-ex anttm
-ex-anttr antt-ex anttr
-exp-anttb antt-exp anttb
-exp-anttbi antt-exp anttbi
-exp-anttcb antt-exp anttcb
-exp-anttcbi antt-exp anttcbi
-exp-anttcl antt-exp anttcl
-exp-anttcli antt-exp anttcli
-exp-anttcm antt-exp anttcm
-exp-anttcmi antt-exp anttcmi
-exp-anttcr antt-exp anttcr
-exp-anttcri antt-exp anttcri
-exp-anttl antt-exp anttl
-exp-anttli antt-exp anttli
-exp-anttm antt-exp anttm
-exp-anttmi antt-exp anttmi
-exp-anttr antt-exp anttr
-exp-anttri antt-exp anttri
-favb8v t5 ArevSans-Bold-T5
-favbi8v t5 ArevSans-BoldOblique-T5
-favr8v t5 ArevSans-Roman-T5
-favri8v t5 ArevSans-Oblique-T5
-feybl10
-feybo10
-feybr10
-feyml10
-feymo10
-feymr10
-fplmb
-fplmbb
-fplmbi
-fplmr
-fplmri
-fplrc8v t5 fplrc8v
-Inuit
-Inuitb
-Inuitbo
-Inuito
-jthb8v t5d Tahoma-Bold
-jthr8v t5d Tahoma
-jvnb8v t5d Verdana-Bold
-jvnbi8v t5d Verdana-BoldItalic
-jvnr8v t5d Verdana
-jvnri8v t5d Verdana-Italic
-l7x-lmb10 lm-l7x lmb10
-l7x-lmbo10 lm-l7x lmbo10
-l7x-lmbx10 lm-l7x lmbx10
-l7x-lmbx12 lm-l7x lmbx12
-l7x-lmbx5 lm-l7x lmbx5
-l7x-lmbx6 lm-l7x lmbx6
-l7x-lmbx7 lm-l7x lmbx7
-l7x-lmbx8 lm-l7x lmbx8
-l7x-lmbx9 lm-l7x lmbx9
-l7x-lmbxi10 lm-l7x lmbxi10
-l7x-lmbxo10 lm-l7x lmbxo10
-l7x-lmcsc10 lm-l7x lmcsc10
-l7x-lmcsco10 lm-l7x lmcsco10
-l7x-lmdunh10 lm-l7x lmdunh10
-l7x-lmduno10 lm-l7x lmduno10
-l7x-lmr10 lm-l7x lmr10
-l7x-lmr12 lm-l7x lmr12
-l7x-lmr17 lm-l7x lmr17
-l7x-lmr5 lm-l7x lmr5
-l7x-lmr6 lm-l7x lmr6
-l7x-lmr7 lm-l7x lmr7
-l7x-lmr8 lm-l7x lmr8
-l7x-lmr9 lm-l7x lmr9
-l7x-lmri10 lm-l7x lmri10
-l7x-lmri12 lm-l7x lmri12
-l7x-lmri7 lm-l7x lmri7
-l7x-lmri8 lm-l7x lmri8
-l7x-lmri9 lm-l7x lmri9
-l7x-lmro10 lm-l7x lmro10
-l7x-lmro12 lm-l7x lmro12
-l7x-lmro17 lm-l7x lmro17
-l7x-lmro8 lm-l7x lmro8
-l7x-lmro9 lm-l7x lmro9
-l7x-lmss10 lm-l7x lmss10
-l7x-lmss12 lm-l7x lmss12
-l7x-lmss17 lm-l7x lmss17
-l7x-lmss8 lm-l7x lmss8
-l7x-lmss9 lm-l7x lmss9
-l7x-lmssbo10 lm-l7x lmssbo10
-l7x-lmssbx10 lm-l7x lmssbx10
-l7x-lmssdc10 lm-l7x lmssdc10
-l7x-lmssdo10 lm-l7x lmssdo10
-l7x-lmsso10 lm-l7x lmsso10
-l7x-lmsso12 lm-l7x lmsso12
-l7x-lmsso17 lm-l7x lmsso17
-l7x-lmsso8 lm-l7x lmsso8
-l7x-lmsso9 lm-l7x lmsso9
-l7x-lmssq8 lm-l7x lmssq8
-l7x-lmssqbo8 lm-l7x lmssqbo8
-l7x-lmssqbx8 lm-l7x lmssqbx8
-l7x-lmssqo8 lm-l7x lmssqo8
-l7x-lmtcsc10 lm-l7x lmtcsc10
-l7x-lmtcso10 lm-l7x lmtcso10
-l7x-lmtk10 lm-l7x lmtk10
-l7x-lmtko10 lm-l7x lmtko10
-l7x-lmtl10 lm-l7x lmtl10
-l7x-lmtlc10 lm-l7x lmtlc10
-l7x-lmtlco10 lm-l7x lmtlco10
-l7x-lmtlo10 lm-l7x lmtlo10
-l7x-lmtt10 lm-l7x lmtt10
-l7x-lmtt12 lm-l7x lmtt12
-l7x-lmtt8 lm-l7x lmtt8
-l7x-lmtt9 lm-l7x lmtt9
-l7x-lmtti10 lm-l7x lmtti10
-l7x-lmtto10 lm-l7x lmtto10
-l7x-lmu10 lm-l7x lmu10
-l7x-lmvtk10 lm-l7x lmvtk10
-l7x-lmvtko10 lm-l7x lmvtko10
-l7x-lmvtl10 lm-l7x lmvtl10
-l7x-lmvtlo10 lm-l7x lmvtlo10
-l7x-lmvtt10 lm-l7x lmvtt10
-l7x-lmvtto10 lm-l7x lmvtto10
-l7x-qbkbi q-l7x qbkbi
-l7x-qbkbi-sc q-l7x-sc qbkbi
-l7x-qbkb q-l7x qbkb
-l7x-qbkb-sc q-l7x-sc qbkb
-l7x-qbkri q-l7x qbkri
-l7x-qbkri-sc q-l7x-sc qbkri
-l7x-qbkr q-l7x qbkr
-l7x-qbkr-sc q-l7x-sc qbkr
-l7x-qcsbi q-l7x qcsbi
-l7x-qcsbi-sc q-l7x-sc qcsbi
-l7x-qcsb q-l7x qcsb
-l7x-qcsb-sc q-l7x-sc qcsb
-l7x-qcsri q-l7x qcsri
-l7x-qcsri-sc q-l7x-sc qcsri
-l7x-qcsr q-l7x qcsr
-l7x-qcsr-sc q-l7x-sc qcsr
-l7x-qplbi q-l7x qplbi
-l7x-qplbi-sc q-l7x-sc qplbi
-l7x-qplb q-l7x qplb
-l7x-qplb-sc q-l7x-sc qplb
-l7x-qplri q-l7x qplri
-l7x-qplri-sc q-l7x-sc qplri
-l7x-qplr q-l7x qplr
-l7x-qplr-sc q-l7x-sc qplr
-l7x-qtmbi q-l7x qtmbi
-l7x-qtmbi-sc q-l7x-sc qtmbi
-l7x-qtmb q-l7x qtmb
-l7x-qtmb-sc q-l7x-sc qtmb
-l7x-qtmri q-l7x qtmri
-l7x-qtmri-sc q-l7x-sc qtmri
-l7x-qtmr q-l7x qtmr
-l7x-qtmr-sc q-l7x-sc qtmr
-lasy10 -r
-lasy5 -r
-lasy6 -r
-lasy7 -r
-lasy8 -r
-lasy9 -r
-lasyb10 -r
-lcircle10 default lcircle1 -r
-lcirclew10 default lcirclew -r
-lcmss8 -r
-lcmssb8 -r
-lcmssi8 -r
-line10 -r
-linew10 -r
-lmbsy10 lm-mathsy lmbsy10
-lmbsy5 lm-mathsy lmbsy5
-lmbsy7 lm-mathsy lmbsy7
-lmex10 lm-mathex lmex10
-lmmi10 lm-mathit lmmi10
-lmmi12 lm-mathit lmmi12
-lmmi5 lm-mathit lmmi5
-lmmi6 lm-mathit lmmi6
-lmmi7 lm-mathit lmmi7
-lmmi8 lm-mathit lmmi8
-lmmi9 lm-mathit lmmi9
-lmmib10 lm-mathit lmmib10
-lmmib5 lm-mathit lmmib5
-lmmib7 lm-mathit lmmib7
-lmsy10 lm-mathsy lmsy10
-lmsy5 lm-mathsy lmsy5
-lmsy6 lm-mathsy lmsy6
-lmsy7 lm-mathsy lmsy7
-lmsy8 lm-mathsy lmsy8
-lmsy9 lm-mathsy lmsy9
-logo10
-logo8
-logo9
-logobf10
-logod10
-logosl10
-logosl8
-logosl9
-lprb8v t5uni PalatinoLinotype-Bold
-lprbi8v t5uni PalatinoLinotype-BoldItalic
-lprr8v t5uni PalatinoLinotype-Roman
-lprri8v t5uni PalatinoLinotype-Italic
-ma1b8v t5d Arial-BoldMT
-ma1bi8v t5d Arial-BoldItalicMT
-ma1r8v t5d ArialMT
-ma1ri8v t5d Arial-ItalicMT
-manfnt
-mcrb8v t5d CourierNewPS-BoldMT
-mcrbi8v t5d CourierNewPS-BoldItalicMT
-mcrr8v t5d CourierNewPSMT
-mcrri8v t5d CourierNewPS-ItalicMT
-mi-anttbi antt-mi anttbi
-mi-anttcbi antt-mi anttcbi
-mi-anttcli antt-mi anttcli
-mi-anttcmi antt-mi anttcmi
-mi-anttcri antt-mi anttcri
-mi-anttli antt-mi anttli
-mi-anttmi antt-mi anttmi
-mi-anttri antt-mi anttri
-mnsb8v t5d TimesNewRomanPS-BoldMT
-mnsbi8v t5d TimesNewRomanPS-BoldItalicMT
-mnsr8v t5d TimesNewRomanPSMT
-mnsri8v t5d TimesNewRomanPS-ItalicMT
-msam10 -r
-msam5 -r
-msam6 default msam7 -r
-msam7 -r
-msam8 default msam7 -r
-msam9 default msam10 -r
-msbm10
-msbm5
-msbm6 default msbm7
-msbm7
-msbm8 default msbm7
-msbm9 default msbm10
-mtex texmext blex
-mtsy default blsy
-MyriadPro-Bold-7m my-lf-oml MyriadPro-Bold
-MyriadPro-Bold-7t my-lf-ot1 MyriadPro-Bold
-MyriadPro-Bold-8c my-lf-ts1 MyriadPro-Bold
-MyriadPro-Bold-8t my-lf-t1 MyriadPro-Bold
-MyriadPro-BoldIt-7m my-lf-oml MyriadPro-BoldIt
-MyriadPro-BoldIt-7t my-lf-ot1 MyriadPro-BoldIt
-MyriadPro-BoldIt-8c my-lf-ts1 MyriadPro-BoldIt
-MyriadPro-BoldIt-8t my-lf-t1 MyriadPro-BoldIt
-MyriadPro-BoldIt-k my-lf-lgr MyriadPro-BoldIt
-MyriadPro-BoldIt-OSF-7m my-osf-oml MyriadPro-BoldIt
-MyriadPro-BoldIt-OSF-7t my-osf-ot1 MyriadPro-BoldIt
-MyriadPro-BoldIt-OSF-8c my-osf-ts1 MyriadPro-BoldIt
-MyriadPro-BoldIt-OSF-8t my-osf-t1 MyriadPro-BoldIt
-MyriadPro-Bold-k my-lf-lgr MyriadPro-Bold
-MyriadPro-Bold-OSF-7m my-osf-oml MyriadPro-Bold
-MyriadPro-Bold-OSF-7t my-osf-ot1 MyriadPro-Bold
-MyriadPro-Bold-OSF-8c my-osf-ts1 MyriadPro-Bold
-MyriadPro-Bold-OSF-8t my-osf-t1 MyriadPro-Bold
-MyriadPro-It-7m my-lf-oml MyriadPro-It
-MyriadPro-It-7t my-lf-ot1 MyriadPro-It
-MyriadPro-It-8c my-lf-ts1 MyriadPro-It
-MyriadPro-It-8t my-lf-t1 MyriadPro-It
-MyriadPro-It-k my-lf-lgr MyriadPro-It
-MyriadPro-It-OSF-7m my-osf-oml MyriadPro-It
-MyriadPro-It-OSF-7t my-osf-ot1 MyriadPro-It
-MyriadPro-It-OSF-8c my-osf-ts1 MyriadPro-It
-MyriadPro-It-OSF-8t my-osf-t1 MyriadPro-It
-MyriadPro-Regular-7m my-lf-oml MyriadPro-Regular
-MyriadPro-Regular-7t my-lf-ot1 MyriadPro-Regular
-MyriadPro-Regular-8c my-lf-ts1 MyriadPro-Regular
-MyriadPro-Regular-8t my-lf-t1 MyriadPro-Regular
-MyriadPro-Regular-k my-lf-lgr MyriadPro-Regular
-MyriadPro-Regular-OSF-7m my-osf-oml MyriadPro-Regular
-MyriadPro-Regular-OSF-7t my-osf-ot1 MyriadPro-Regular
-MyriadPro-Regular-OSF-8c my-osf-ts1 MyriadPro-Regular
-MyriadPro-Regular-OSF-8t my-osf-t1 MyriadPro-Regular
-omding
-omsea1
-omsea1b
-omsea2
-omsea2b
-omsea3
-omsea3b
-omseco
-omsecob
-omsecobi
-omsecoi
-omsecx
-omsecxb
-omsecxbi
-omsecxi
-omsecy
-omsecyb
-omsecybi
-omsecyi
-omsegr
-omsegrb
-omsegrbi
-omsegri
-omseha
-omsehab
-omsehe
-omseheb
-omseip
-omseipb
-omseipbi
-omseipi
-omsela
-omselab
-omselabi
-omselai
-omseti
-omsetib
-pagd8r 8r uagd8a
-pagdo8r 8r uagdo8a
-pagk8r 8r uagk8a
-pagko8r 8r uagko8a
-pbkd8r 8r ubkd8a
-pbkdi8r 8r ubkdi8a
-pbkdo8r 8r ubkd8a -s .167
-pbkl8r 8r ubkl8a
-pbkli8r 8r ubkli8a
-pbklo8r 8r ubkl8a -s .167
-pbsi8r 8r BrushScriptX-Italic
-pccsc10
-pcmi10
-pcr10
-pcr5
-pcr6
-pcr7
-pcr8
-pcr9
-pcrb8r 8r ucrb8a
-pcrbo8r 8r ucrbo8a
-pcrr8r 8r ucrr8a
-pcrr8rn 8r ucrr8a -e .85
-pcrro8r 8r ucrro8a
-pcsl10
-pcslc9
-pcti10
-phvb8r 8r uhvb8a
-phvb8rn 8r uhvb8ac
-phvbo8r 8r uhvbo8a
-phvbo8rn 8r uhvbo8ac
-phvr8r 8r uhvr8a
-phvr8rn 8r uhvr8ac
-phvro8r 8r uhvro8a
-phvro8rn 8r uhvro8ac
-plb10 plrm plb10
-plbsy10 plms plbsy10
-plbx10 plrm plbx10
-plbx12 plrm plbx12
-plbx5 plrm plbx5
-plbx6 plrm plbx6
-plbx7 plrm plbx7
-plbx8 plrm plbx8
-plbx9 plrm plbx9
-plbxsl10 plrm plbxsl10
-plbxti10 plit plbxti10
-plcsc10 plsc plcsc10
-pldunh10 plrm pldunh10
-plex10 plme plex10
-plex9 plme plex9
-plff10 plrm plff10
-plfi10 plit plfi10
-plfib8 plrm plfib8
-plinch plin plinch
-plitt10 plitt plitt10
-plmi10 plmi plmi10
-plmi12 plmi plmi12
-plmi5 plmi plmi5
-plmi6 plmi plmi6
-plmi7 plmi plmi7
-plmi8 plmi plmi8
-plmi9 plmi plmi9
-plmib10 plmi plmib10
-plr10 plrm plr10
-plr12 plrm plr12
-plr17 plrm plr17
-plr5 plsc plr5
-plr6 plrm plr6
-plr7 plrm plr7
-plr8 plrm plr8
-plr9 plrm plr9
-plsl10 plrm plsl10
-plsl12 plrm plsl12
-plsl8 plrm plsl8
-plsl9 plrm plsl9
-plsltt10 pltt plsltt10
-plss10 plrm plss10
-plss12 plrm plss12
-plss17 plrm plss17
-plss8 plrm plss8
-plss9 plrm plss9
-plssbi10 plrm plssbi10
-plssbx10 plrm plssbx10
-plssdc10 plrm plssdc10
-plssi10 plrm plssi10
-plssi12 plrm plssi12
-plssi17 plrm plssi17
-plssi8 plrm plssi8
-plssi9 plrm plssi9
-plssq8 plrm plssq8
-plssqi8 plrm plssqi8
-plsy10 plms plsy10
-plsy5 plms plsy5
-plsy6 plms plsy6
-plsy7 plms plsy7
-plsy8 plms plsy8
-plsy9 plms plsy9
-pltcsc10 pltt pltcsc10
-pltex10 plte pltex10
-pltex8 plte pltex8
-pltex9 plte pltex9
-plti10 plit plti10
-plti12 plit plti12
-plti7 plit plti7
-plti8 plit plti8
-plti9 plit plti9
-pltt10 pltt pltt10
-pltt12 pltt pltt12
-pltt8 pltt pltt8
-pltt9 pltt pltt9
-plu10 plit plu10
-plvtt10 plrm plvtt10
-pncb8r 8r uncb8a
-pncbi8r 8r uncbi8a
-pncbo8r 8r uncb8a -s .167
-pncr8r 8r uncr8a
-pncri8r 8r uncri8a
-pncro8r 8r uncr8a -s .167
-pplb8r 8r uplb8a
-pplbi8r 8r uplbi8a
-pplbij8r 8r fplbij8a
-pplbj8r 8r fplbj8a
-pplbo8r 8r uplb8a -s .167
-pplbu8r 8r uplbi8a -s -.1763
-pplr8r 8r uplr8a
-pplr8rn 8r uplr8a -e .82
-pplrc8r 8r fplrc8a
-pplri8r 8r uplri8a
-pplrij8r 8r fplrij8a
-pplro8r 8r uplr8a -s .167
-pplrr8re 8r uplr8a -e 1.2
-pplru8r 8r uplri8a -s -.1763
-psyr default usyr
-psyro default usyr -s .167
-ptmb8r 8r utmb8a
-ptmbi8r 8r utmbi8a
-ptmbo8r 8r utmb8a -s .167
-ptmr8r 8r utmr8a
-ptmr8rn 8r utmr8a -e .82
-ptmri8r 8r utmri8a
-ptmro8r 8r utmr8a -s .167
-ptmrr8re 8r utmr8a -e 1.2
-putb8r 8r putb8a
-putb8v t5 putb8v
-putb8x
-putbi8r 8r putbi8a
-putbi8v t5 putbi8v
-putbo8r 8r putb8a -s .167
-putbo8v t5 putb8v -s 0.194
-putr8r 8r putr8a
-putr8v t5 putr8v
-putr8x
-putri8r 8r putri8a
-putri8v t5 putri8v
-putro8r 8r putr8a -s .167
-putro8v t5 putr8v -s 0.194
-pxbex
-pxbexa
-pxbmia
-pxbsy
-pxbsya
-pxbsyb
-pxbsyc
-pxex
-pxexa
-pxmia
-pxsy
-pxsya
-pxsyb
-pxsyc
-pzcmi8r 8r uzcmi8a
-pzdr default uzdr
-qcrbi qcr qcrbi
-qcrb qcr qcrb
-qcrri qcr qcrri
-qcrr qcr qcrr
-qhvbi qhv qhvbi
-qhvb qhv qhvb
-qhvcbi qhv qhvcbi
-qhvcb qhv qhvcb
-qhvcri qhv qhvcri
-qhvcr qhv qhvcr
-qhvri qhv qhvri
-qhvr qhv qhvr
-qzcmi qzc qzcmi
-stmary10
-stmary5
-stmary6
-stmary7
-stmary8
-stmary9
-sy-anttbz antt-sy anttbi
-sy-anttcbz antt-sy anttcbi
-sy-anttclz antt-sy anttcli
-sy-anttcmz antt-sy anttcmi
-sy-anttcrz antt-sy anttcri
-sy-anttlz antt-sy anttli
-sy-anttmz antt-sy anttmi
-sy-anttrz antt-sy anttri
-sy default usyr
-t1xbtt
-t1xbttsc
-t1xbttsl default t1xbtt -s .167
-t1xtt
-t1xttsc
-t1xttsl default t1xtt -s .167
-tcxbtt
-tcxbttsl default tcxbtt -s .167
-tcxtt
-tcxttsl default tcxtt -s .167
-tmbi108r 8r utmbi8a
-tmbo108r 8r utmb8a -s .167
-tmbu108r 8r utmbi8a -s -.277
-tmrb108r 8r utmb8a
-tmri108r 8r utmri8a
-tmrm108r 8r utmr8a
-tmro108r 8r utmr8a -s .167
-tmui108r 8r utmri8a -s -.277
-txbex
-txbexa
-txbmia
-txbsy
-txbsya
-txbsyb
-txbsyc
-txbtt
-txbtt8v t5 txbtt8v
-txbttsc
-txbttsc8v t5 txbttsc8v
-txbttsl8v t5 txbtt8v -s 0.167
-txbttsl default txbtt -s .167
-txex
-txexa
-txmia
-txsy
-txsya
-txsyb
-txsyc
-txtt
-txtt8v t5 txtt8v
-txttsc
-txttsc8v t5 txttsc8v
-txttsl8v t5 txtt8v -s 0.167
-txttsl default txtt -s .167
-uagd8v t5 uagd8v
-uagdo8v t5 uagdo8v
-uagk8v t5 uagk8v
-uagko8v t5 uagko8v
-ubkd8v t5 ubkd8v
-ubkdi8v t5 ubkdi8v
-ubkdo8v t5 ubkd8v -s 0.277
-ubkl8v t5 ubkl8v
-ubkli8v t5 ubkli8v
-ubklo8v t5 ubkl8v -s 0.277
-ucrb8v t5 ucrb8v
-ucrbo8v t5 ucrbo8v
-ucrr8v t5 ucrr8v
-ucrro8v t5 ucrro8v
-ugqb8v t5 ugqb8v
-ugqbo8v t5 ugqb8v -s 0.194
-uhvb8v t5 uhvb8v
-uhvbo8v t5 uhvbo8v
-uhvr8v t5 uhvr8v
-uhvro8v t5 uhvro8v
-umvs default marvosym
-uncb8v t5 uncb8v
-uncbi8v t5 uncbi8v
-uncbo8v t5 uncb8v -s 0.277
-uncr8v t5 uncr8v
-uncri8v t5 uncri8v
-uncro8v t5 uncr8v -s 0.277
-uplb8v t5 uplb8v
-uplbi8v t5 uplbi8v
-uplbo8v t5 uplb8v -s 0.277
-uplr8v t5 uplr8v
-uplri8v t5 uplri8v
-uplro8v t5 uplr8v -s 0.277
-utmb8v t5 utmb8v
-utmbi8v t5 utmbi8v
-utmbo8v t5 utmb8v -s 0.277
-utmr8v t5 utmr8v
-utmri8v t5 utmri8v
-utmro8v t5 utmr8v -s 0.277
-uzcmi8v t5 uzcmi8v
-vnb10
-vnbx10
-vnbx12
-vnbx5
-vnbx6
-vnbx7
-vnbx8
-vnbx9
-vnbxsl10
-vnbxti10
-vncccsc10 t5 CMConcreteSmallCaps8v
-vnccr10 t5 CMConcrete8v
-vnccsl10 t5 CMConcreteSlanted8v
-vnccti10 t5 CMConcreteItalic8v
-vncmbr10 t5 vncmbr10
-vncmbr17 t5 vncmbr17
-vncmbr8 t5 vncmbr8
-vncmbr9 t5 vncmbr9
-vncmbrbx10 t5 vncmbrbx10
-vncmbrsl10 t5 vncmbrsl10
-vncmbrsl17 t5 vncmbrsl17
-vncmbrsl8 t5 vncmbrsl8
-vncmbrsl9 t5 vncmbrsl9
-vncmsltl10 t5 vncmsltl10
-vncmtl10 t5 vncmtl10
-vncsc10
-vndunh10
-vnff10
-vnfi10
-vnfib8
-vnitt10
-vnr10
-vnr12
-vnr17
-vnr5
-vnr6
-vnr7
-vnr8
-vnr9
-vnsl10
-vnsl12
-vnsl8
-vnsl9
-vnsltt10
-vnss10
-vnss12
-vnss17
-vnss8
-vnss9
-vnssbx10
-vnssdc10
-vnssi10
-vnssi12
-vnssi17
-vnssi8
-vnssi9
-vnssq8
-vnssqi8
-vntcsc10
-vnti10
-vnti12
-vnti7
-vnti8
-vnti9
-vntt10
-vntt12
-vntt8
-vntt9
-vnu10
-vnvtt10
-wasy10
-wasy5
-wasy6
-wasy7
-wasy8
-wasy9
-wasyb10
-wncy-anttb antt-wncy anttb
-wncy-anttbi antt-wncy anttbi
-wncy-anttcb antt-wncy anttcb
-wncy-anttcbi antt-wncy anttcbi
-wncy-anttcl antt-wncy anttcl
-wncy-anttcli antt-wncy anttcli
-wncy-anttcm antt-wncy anttcm
-wncy-anttcmi antt-wncy anttcmi
-wncy-anttcr antt-wncy anttcr
-wncy-anttcri antt-wncy anttcri
-wncy-anttl antt-wncy anttl
-wncy-anttli antt-wncy anttli
-wncy-anttm antt-wncy anttm
-wncy-anttmi antt-wncy anttmi
-wncy-anttr antt-wncy anttr
-wncy-anttri antt-wncy anttri
-wncyb10
-wncyb5 default wncyb10
-wncyb6 default wncyb10
-wncyb7 default wncyb10
-wncyb8 default wncyb10
-wncyb9 default wncyb10
-wncyi10
-wncyi5 default wncyi10
-wncyi6 default wncyi10
-wncyi7 default wncyi10
-wncyi8 default wncyi10
-wncyi9 default wncyi10
-wncyr10
-wncyr5 default wncyr10
-wncyr6 default wncyr10
-wncyr7 default wncyr10
-wncyr8 default wncyr10
-wncyr9 default wncyr10
-wncysc10
-wncyss10
-wncyss8 default wncyss10
-wncyss9 default wncyss10
-xyatip10 -r
-xyatip11 default xyatip10 -e 1.1 -r
-xyatip12 default xyatip10 -e 1.2 -r
-xybsql10 -r
-xybtip10 -r
-xybtip11 default xybtip10 -e 1.1 -r
-xybtip12 default xybtip10 -e 1.2 -r
-xycirc10 -r
-xycmat10 -r
-xycmat11 default xycmat10 -e 1.1 -r
-xycmat12 default xycmat10 -e 1.2 -r
-xycmbt10 -r
-xycmbt11 default xycmbt10 -e 1.1 -r
-xycmbt12 default xycmbt10 -e 1.2 -r
-xydash10 -r
-xyeuat10 -r
-xyeuat11 default xyeuat10 -e 1.1 -r
-xyeuat12 default xyeuat10 -e 1.2 -r
-xyeubt10 -r
-xyeubt11 default xyeubt10 -e 1.1 -r
-xyeubt12 default xyeubt10 -e 1.2 -r
-yfrak
-ygoth
-yswab
-zd default uzdr
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/dvips_test.map b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/dvips_test.map
deleted file mode 100644
index 76e2766d590..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/dvips_test.map
+++ /dev/null
@@ -1,363 +0,0 @@
-% /var/lib/texmf/fonts/map/dvips/updmap/ps2pk.map: maintained by the script updmap.
-% Don't change this file directly. Edit texmf/web2c/updmap.cfg
-% and run updmap to recreate this file.
-% A log of the updmap run that has created this file is available here:
-% /var/lib/texmf/web2c/updmap.log
-antpb AntykwaPoltawskiego-Bold "encantp ReEncodeFont" <antp.enc <antpb.pfb
-antpbi AntykwaPoltawskiego-BoldItalic "encantp ReEncodeFont" <antp.enc <antpbi.pfb
-antpr AntykwaPoltawskiego-Regular "encantp ReEncodeFont" <antp.enc <antpr.pfb
-antpri AntykwaPoltawskiego-Italic "encantp ReEncodeFont" <antp.enc <antpri.pfb
-bchb8r CharterBT-Bold "TeXBase1Encoding ReEncodeFont" <8r.enc <bchb8a.pfb
-bchb8v VnCharterBT-Bold "T5Encoding ReEncodeFont" <t5.enc <bchb8v.pfb
-bchb8y CharterBT-Bold "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <bchb8a.pfb
-bchbc8a CharterBT-BoldSmallCap <bchbc8a.pfb
-bchbi8r CharterBT-BoldItalic "TeXBase1Encoding ReEncodeFont" <8r.enc <bchbi8a.pfb
-bchbi8v VnCharterBT-BoldItalic "T5Encoding ReEncodeFont" <t5.enc <bchbi8v.pfb
-bchbi8y CharterBT-BoldItalic "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <bchbi8a.pfb
-bchbo8r CharterBT-Bold ".167 SlantFont TeXBase1Encoding ReEncodeFont" <8r.enc <bchb8a.pfb
-bchbo8v VnCharterBT-Bold "0.194 SlantFont T5Encoding ReEncodeFont" <t5.enc <bchb8v.pfb
-bchbo8y CharterBT-Bold "0.194 SlantFont TeXnANSIEncoding ReEncodeFont" <texnansi.enc <bchb8a.pfb
-bchr8r CharterBT-Roman "TeXBase1Encoding ReEncodeFont" <8r.enc <bchr8a.pfb
-bchr8v VnBitstreamCharter "T5Encoding ReEncodeFont" <t5.enc <bchr8v.pfb
-bchr8y CharterBT-Roman "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <bchr8a.pfb
-bchrc8a CharterBT-SmallCap <bchrc8a.pfb
-bchri8r CharterBT-Italic "TeXBase1Encoding ReEncodeFont" <8r.enc <bchri8a.pfb
-bchri8v VnCharterBT-Italic "T5Encoding ReEncodeFont" <t5.enc <bchri8v.pfb
-bchri8y CharterBT-Italic "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <bchri8a.pfb
-bchro8r CharterBT-Roman ".167 SlantFont TeXBase1Encoding ReEncodeFont" <8r.enc <bchr8a.pfb
-bchro8v VnBitstreamCharter "0.194 SlantFont T5Encoding ReEncodeFont" <t5.enc <bchr8v.pfb
-bchro8y CharterBT-Roman "0.194 SlantFont TeXnANSIEncoding ReEncodeFont" <texnansi.enc <bchr8a.pfb
-cmb10 CMB10 <cmb10.pfb
-cmbsy10 CMBSY10 <cmbsy10.pfb
-cmbsy10o CMBSY10 ".167 SlantFont" <cmbsy10.pfb
-cmbsy5 CMBSY5 <cmbsy5.pfb
-cmbsy6 CMBSY7 <cmbsy7.pfb
-cmbsy7 CMBSY7 <cmbsy7.pfb
-cmbsy8 CMBSY7 <cmbsy7.pfb
-cmbsy9 CMBSY10 <cmbsy10.pfb
-cmbx10 CMBX10 <cmbx10.pfb
-cmbx12 CMBX12 <cmbx12.pfb
-cmbx5 CMBX5 <cmbx5.pfb
-cmbx6 CMBX6 <cmbx6.pfb
-cmbx7 CMBX7 <cmbx7.pfb
-cmbx8 CMBX8 <cmbx8.pfb
-cmbx9 CMBX9 <cmbx9.pfb
-cmbxi10f CMBXTI10 "-0.25 SlantFont" <cmbxti10.pfb
-cmbxsl10 CMBXSL10 <cmbxsl10.pfb
-cmbxti10 CMBXTI10 <cmbxti10.pfb
-cmbxti12 CMBXTI10 <cmbxti10.pfb
-cmbxti7 CMBXTI10 <cmbxti10.pfb
-cmcb10 cmcb10 <cmcb10.pfb
-cmcbx10 cmcbx10 <cmcbx10.pfb
-cmcbx12 cmcbx12 <cmcbx12.pfb
-cmcbx5 cmcbx5 <cmcbx5.pfb
-cmcbx6 cmcbx6 <cmcbx6.pfb
-cmcbx7 cmcbx7 <cmcbx7.pfb
-cmcbx8 cmcbx8 <cmcbx8.pfb
-cmcbx9 cmcbx9 <cmcbx9.pfb
-cmcbxsl10 cmcbxsl10 <cmcbxsl1.pfb
-cmcbxti10 cmcbxti10 <cmcbxti1.pfb
-cmccsc10 cmccsc10 <cmccsc10.pfb
-cmccsc8 cmccsc8 <cmccsc8.pfb
-cmccsc9 cmccsc9 <cmccsc9.pfb
-cmcinch cmcinch72 <cmcinch7.pfb
-cmcitt10 cmcitt10 <cmcitt10.pfb
-cmcsc10 CMCSC10 <cmcsc10.pfb
-cmcsc8 CMCSC10 <cmcsc10.pfb
-cmcsc9 CMCSC10 <cmcsc10.pfb
-cmcsl10 cmcsl10 <cmcsl10.pfb
-cmcsl12 cmcsl12 <cmcsl12.pfb
-cmcsl8 cmcsl8 <cmcsl8.pfb
-cmcsl9 cmcsl9 <cmcsl9.pfb
-cmcsltt10 cmcsltt10 <cmcsltt1.pfb
-cmcss10 cmcss10 <cmcss10.pfb
-cmcss12 cmcss12 <cmcss12.pfb
-cmcss17 cmcss17 <cmcss17.pfb
-cmcss8 cmcss8 <cmcss8.pfb
-cmcss9 cmcss9 <cmcss9.pfb
-cmcssbx10 cmcssbx10 <cmcssbx1.pfb
-cmcssdc10 cmcssdc10 <cmcssdc1.pfb
-cmcssi10 cmcssi10 <cmcssi10.pfb
-cmcssi12 cmcssi12 <cmcssi12.pfb
-cmcssi17 cmcssi17 <cmcssi17.pfb
-cmcssi8 cmcssi8 <cmcssi8.pfb
-cmcssi9 cmcssi9 <cmcssi9.pfb
-cmcssq8 cmcssq8 <cmcssq8.pfb
-cmcssqi8 cmcssqi8 <cmcssqi8.pfb
-cmcti10 cmcti10 <cmcti10.pfb
-cmcti12 cmcti12 <cmcti12.pfb
-cmcti7 cmcti7 <cmcti7.pfb
-cmcti8 cmcti8 <cmcti8.pfb
-cmcti9 cmcti9 <cmcti9.pfb
-cmctt10 cmctt10 <cmctt10.pfb
-cmctt12 cmctt12 <cmctt12.pfb
-cmctt8 cmctt8 <cmctt8.pfb
-cmctt9 cmctt9 <cmctt9.pfb
-cmcu10 cmcu10 <cmcu10.pfb
-cmcyr10 cmcyr10 <cmcyr10.pfb
-cmcyr12 cmcyr12 <cmcyr12.pfb
-cmcyr17 cmcyr17 <cmcyr17.pfb
-cmcyr5 cmcyr5 <cmcyr5.pfb
-cmcyr6 cmcyr6 <cmcyr6.pfb
-cmcyr7 cmcyr7 <cmcyr7.pfb
-cmcyr8 cmcyr8 <cmcyr8.pfb
-cmcyr9 cmcyr9 <cmcyr9.pfb
-cmdunh10 CMDUNH10 <cmdunh10.pfb
-cmex10 CMEX10 <cmex10.pfb
-cmex7 TeX-cmex7 <fmex7.pfb
-cmex8 TeX-cmex8 <fmex8.pfb
-cmex9 TeX-cmex9 <fmex9.pfb
-cmff10 CMFF10 <cmff10.pfb
-cmfi10 CMFI10 <cmfi10.pfb
-cmfib8 CMFIB8 <cmfib8.pfb
-cminch CMINCH <cminch.pfb
-cmitt10 CMITT10 <cmitt10.pfb
-cmitt12 CMITT12 <cmitt10.pfb
-cmitt9 CMITT10 <cmitt10.pfb
-cmmi10 CMMI10 <cmmi10.pfb
-cmmi10o CMMI10 ".167 SlantFont" <cmmi10.pfb
-cmmi12 CMMI12 <cmmi12.pfb
-cmmi5 CMMI5 <cmmi5.pfb
-cmmi6 CMMI6 <cmmi6.pfb
-cmmi7 CMMI7 <cmmi7.pfb
-cmmi8 CMMI8 <cmmi8.pfb
-cmmi9 CMMI9 <cmmi9.pfb
-cmmib10 CMMIB10 <cmmib10.pfb
-cmmib10o CMMIB10 ".167 SlantFont" <cmmib10.pfb
-cmmib5 CMMIB5 <cmmib5.pfb
-cmmib6 CMMIB7 <cmmib7.pfb
-cmmib7 CMMIB7 <cmmib7.pfb
-cmmib8 CMMIB7 <cmmib7.pfb
-cmmib9 CMMIB10 <cmmib10.pfb
-cmr10 CMR10 <cmr10.pfb
-cmr12 CMR12 <cmr12.pfb
-cmr17 CMR17 <cmr17.pfb
-cmr5 CMR5 <cmr5.pfb
-cmr6 CMR6 <cmr6.pfb
-cmr7 CMR7 <cmr7.pfb
-cmr8 CMR8 <cmr8.pfb
-cmr9 CMR9 <cmr9.pfb
-cmsl10 CMSL10 <cmsl10.pfb
-cmsl12 CMSL12 <cmsl12.pfb
-cmsl6 CMSL8 <cmsl8.pfb
-cmsl8 CMSL8 <cmsl8.pfb
-cmsl9 CMSL9 <cmsl9.pfb
-cmsltt10 CMSLTT10 <cmsltt10.pfb
-cmsltt9 CMSLTT10 <cmsltt10.pfb
-cmss10 CMSS10 <cmss10.pfb
-cmss12 CMSS12 <cmss12.pfb
-cmss17 CMSS17 <cmss17.pfb
-cmss8 CMSS8 <cmss8.pfb
-cmss9 CMSS9 <cmss9.pfb
-cmssbx10 CMSSBX10 <cmssbx10.pfb
-cmssbxo10 CMSSBX10 ".212 SlantFont" <cmssbx10.pfb
-cmssdc10 CMSSDC10 <cmssdc10.pfb
-cmssi10 CMSSI10 <cmssi10.pfb
-cmssi12 CMSSI12 <cmssi12.pfb
-cmssi17 CMSSI17 <cmssi17.pfb
-cmssi8 CMSSI8 <cmssi8.pfb
-cmssi9 CMSSI9 <cmssi9.pfb
-cmssq8 CMSSQ8 <cmssq8.pfb
-cmssqi8 CMSSQI8 <cmssqi8.pfb
-cmsy10 CMSY10 <cmsy10.pfb
-cmsy10o CMSY10 ".167 SlantFont" <cmsy10.pfb
-cmsy5 CMSY5 <cmsy5.pfb
-cmsy6 CMSY6 <cmsy6.pfb
-cmsy7 CMSY7 <cmsy7.pfb
-cmsy8 CMSY8 <cmsy8.pfb
-cmsy9 CMSY9 <cmsy9.pfb
-cmtcsc10 CMTCSC10 <cmtcsc10.pfb
-cmtex10 CMTEX10 <cmtex10.pfb
-cmtex8 CMTEX8 <cmtex8.pfb
-cmtex9 CMTEX9 <cmtex9.pfb
-cmti10 CMTI10 <cmti10.pfb
-cmti12 CMTI12 <cmti12.pfb
-cmti7 CMTI7 <cmti7.pfb
-cmti8 CMTI8 <cmti8.pfb
-cmti9 CMTI9 <cmti9.pfb
-cmtt10 CMTT10 <cmtt10.pfb
-cmtt12 CMTT12 <cmtt12.pfb
-cmtt8 CMTT8 <cmtt8.pfb
-cmtt9 CMTT9 <cmtt9.pfb
-cmu10 CMU10 <cmu10.pfb
-cmvtt10 CMVTT10 <cmvtt10.pfb
-cmvtt10o CMVTT10 ".167 SlantFont" <cmvtt10.pfb
-cob NimbusMonL-Bold "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <ucrb8a.pfb
-cobo NimbusMonL-BoldObli "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <ucrbo8a.pfb
-comic8b ComicSansMS8b <8b.enc <ComicSansMS8b.pfb "fontinst-autoenc-8b ReEncodeFont"
-comicbd8b ComicSansMS8b-Bold <8b.enc <ComicSansMSBold8b.pfb "fontinst-autoenc-8b ReEncodeFont"
-comicbdo8b ComicSansMS8b-BoldItalic <8b.enc <ComicSansMSBoldItalic8b.pfb "fontinst-autoenc-8b ReEncodeFont"
-comico8b ComicSansMS8b-Italic <8b.enc <ComicSansMSItalic8b.pfb "fontinst-autoenc-8b ReEncodeFont"
-com NimbusMonL-Regu "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <ucrr8a.pfb
-coo NimbusMonL-ReguObli "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <ucrro8a.pfb
-csb10 csb10 <csb10.pfb
-csbx10 csbx10 <csbx10.pfb
-csbx12 csbx12 <csbx12.pfb
-csbx5 csbx5 <csbx5.pfb
-csbx6 csbx6 <csbx6.pfb
-csbx7 csbx7 <csbx7.pfb
-csbx8 csbx8 <csbx8.pfb
-csbx9 csbx9 <csbx9.pfb
-csbxsl10 csbxsl10 <csbxsl10.pfb
-csbxti10 csbxti10 <csbxti10.pfb
-cscsc10 cscsc10 <cscsc10.pfb
-csdunh10 csdunh10 <csdunh10.pfb
-csff10 csff10 <csff10.pfb
-csfi10 csfi10 <csfi10.pfb
-csfib8 csfib8 <csfib8.pfb
-csinch csinch <csinch.pfb
-csitt10 csitt10 <csitt10.pfb
-csr10 csr10 <csr10.pfb
-csr12 csr12 <csr12.pfb
-csr17 csr17 <csr17.pfb
-csr5 csr5 <csr5.pfb
-csr6 csr6 <csr6.pfb
-csr7 csr7 <csr7.pfb
-csr8 csr8 <csr8.pfb
-csr9 csr9 <csr9.pfb
-cssl10 cssl10 <cssl10.pfb
-cssl12 cssl12 <cssl12.pfb
-cssl8 cssl8 <cssl8.pfb
-cssl9 cssl9 <cssl9.pfb
-cssltt10 cssltt10 <cssltt10.pfb
-csss10 csss10 <csss10.pfb
-csss12 csss12 <csss12.pfb
-csss17 csss17 <csss17.pfb
-csss8 csss8 <csss8.pfb
-csss9 csss9 <csss9.pfb
-csssbx10 csssbx10 <csssbx10.pfb
-csssdc10 csssdc10 <csssdc10.pfb
-csssi10 csssi10 <csssi10.pfb
-csssi12 csssi12 <csssi12.pfb
-csssi17 csssi17 <csssi17.pfb
-csssi8 csssi8 <csssi8.pfb
-csssi9 csssi9 <csssi9.pfb
-csssq8 csssq8 <csssq8.pfb
-csssqi8 csssqi8 <csssqi8.pfb
-cstcsc10 cstcsc10 <cstcsc10.pfb
-csti10 csti10 <csti10.pfb
-csti12 csti12 <csti12.pfb
-csti7 csti7 <csti7.pfb
-csti8 csti8 <csti8.pfb
-csti9 csti9 <csti9.pfb
-cstt10 cstt10 <cstt10.pfb
-cstt12 cstt12 <cstt12.pfb
-cstt8 cstt8 <cstt8.pfb
-cstt9 cstt9 <cstt9.pfb
-csu10 csu10 <csu10.pfb
-csvtt10 csvtt10 <csvtt10.pfb
-dsrom10 dsrom10 <dsrom10.pfb
-dsrom12 dsrom12 <dsrom12.pfb
-dsrom8 dsrom8 <dsrom8.pfb
-dsss10 dsss10 <dsss10.pfb
-dsss12 dsss12 <dsss12.pfb
-dsss8 dsss8 <dsss8.pfb
-euex10 EUEX10 <euex10.pfb
-euex7 EUEX10 <euex10.pfb
-euex8 EUEX10 <euex10.pfb
-euex9 EUEX10 <euex10.pfb
-eufb10 EUFB10 <eufb10.pfb
-eufb5 EUFB5 <eufb5.pfb
-eufb6 EUFB7 <eufb7.pfb
-eufb7 EUFB7 <eufb7.pfb
-eufb8 EUFB7 <eufb7.pfb
-eufb9 EUFB10 <eufb10.pfb
-eufm10 EUFM10 <eufm10.pfb
-eufm5 EUFM5 <eufm5.pfb
-eufm6 EUFM7 <eufm7.pfb
-eufm7 EUFM7 <eufm7.pfb
-eufm8 EUFM7 <eufm7.pfb
-eufm9 EUFM10 <eufm10.pfb
-eurb10 EURB10 <eurb10.pfb
-eurb5 EURB5 <eurb5.pfb
-eurb6 EURB7 <eurb7.pfb
-eurb7 EURB7 <eurb7.pfb
-eurb8 EURB7 <eurb7.pfb
-eurb9 EURB10 <eurb10.pfb
-eurm10 EURM10 <eurm10.pfb
-eurm5 EURM5 <eurm5.pfb
-eurm6 EURM7 <eurm7.pfb
-eurm7 EURM7 <eurm7.pfb
-eurm8 EURM7 <eurm7.pfb
-eurm9 EURM10 <eurm10.pfb
-eusb10 EUSB10 <eusb10.pfb
-eusb5 EUSB5 <eusb5.pfb
-eusb6 EUSB7 <eusb7.pfb
-eusb7 EUSB7 <eusb7.pfb
-eusb8 EUSB7 <eusb7.pfb
-eusb9 EUSB10 <eusb10.pfb
-eusm10 EUSM10 <eusm10.pfb
-eusm5 EUSM5 <eusm5.pfb
-eusm6 EUSM7 <eusm7.pfb
-eusm7 EUSM7 <eusm7.pfb
-eusm8 EUSM7 <eusm7.pfb
-eusm9 EUSM10 <eusm10.pfb
-hvb NimbusSanL-Bold "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <uhvb8a.pfb
-hvbo NimbusSanL-BoldItal "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <uhvbo8a.pfb
-hv NimbusSanL-Regu "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <uhvr8a.pfb
-hvo NimbusSanL-ReguItal "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <uhvro8a.pfb
-Inuitb Inuit-Bold <Inuitb.pfb
-Inuitbo Inuit-Bold-Oblique <Inuitbo.pfb
-Inuit Inuit <Inuit.pfb
-Inuito Inuit-Oblique <Inuito.pfb
-jthb8v Tahoma-Bold "T5DEncoding ReEncodeFont" <t5d.enc <tahomabd.ttf
-jthr8v Tahoma "T5DEncoding ReEncodeFont" <t5d.enc <tahoma.ttf
-jvnb8v Verdana-Bold "T5DEncoding ReEncodeFont" <t5d.enc <verdanab.ttf
-jvnbi8v Verdana-BoldItalic "T5DEncoding ReEncodeFont" <t5d.enc <verdanaz.ttf
-jvnr8v Verdana "T5DEncoding ReEncodeFont" <t5d.enc <verdana.ttf
-jvnri8v Verdana-Italic "T5DEncoding ReEncodeFont" <t5d.enc <verdanai.ttf
-MyriadPro-Bold-7m MyriadPro-Bold "MinionPro-OMLEncoding ReEncodeFont" <my-lf-oml.enc <MyriadPro-Bold.pfb
-MyriadPro-Bold-7t MyriadPro-Bold "MinionPro-OT1Encoding ReEncodeFont" <my-lf-ot1.enc <MyriadPro-Bold.pfb
-MyriadPro-Bold-8c MyriadPro-Bold "MinionPro-TS1Encoding ReEncodeFont" <my-lf-ts1.enc <MyriadPro-Bold.pfb
-MyriadPro-Bold-8t MyriadPro-Bold "MinionPro-T1Encoding ReEncodeFont" <my-lf-t1.enc <MyriadPro-Bold.pfb
-MyriadPro-BoldIt-7m MyriadPro-BoldIt "MinionPro-OMLEncoding ReEncodeFont" <my-lf-oml.enc <MyriadPro-BoldIt.pfb
-MyriadPro-BoldIt-7t MyriadPro-BoldIt "MinionPro-OT1Encoding ReEncodeFont" <my-lf-ot1.enc <MyriadPro-BoldIt.pfb
-MyriadPro-BoldIt-8c MyriadPro-BoldIt "MinionPro-TS1Encoding ReEncodeFont" <my-lf-ts1.enc <MyriadPro-BoldIt.pfb
-MyriadPro-BoldIt-8t MyriadPro-BoldIt "MinionPro-T1Encoding ReEncodeFont" <my-lf-t1.enc <MyriadPro-BoldIt.pfb
-MyriadPro-BoldIt-k MyriadPro-BoldIt "MinionPro-LGREncoding ReEncodeFont" <my-lf-lgr.enc <MyriadPro-BoldIt.pfb
-MyriadPro-BoldIt-OSF-7m MyriadPro-BoldIt "MinionPro-OSFOMLEncoding ReEncodeFont" <my-osf-oml.enc <MyriadPro-BoldIt.pfb
-MyriadPro-BoldIt-OSF-7t MyriadPro-BoldIt "MinionPro-OT1Encoding ReEncodeFont" <my-osf-ot1.enc <MyriadPro-BoldIt.pfb
-MyriadPro-BoldIt-OSF-8c MyriadPro-BoldIt "MinionPro-TS1Encoding ReEncodeFont" <my-osf-ts1.enc <MyriadPro-BoldIt.pfb
-MyriadPro-BoldIt-OSF-8t MyriadPro-BoldIt "MinionPro-OSFT1Encoding ReEncodeFont" <my-osf-t1.enc <MyriadPro-BoldIt.pfb
-MyriadPro-Bold-k MyriadPro-Bold "MinionPro-LGREncoding ReEncodeFont" <my-lf-lgr.enc <MyriadPro-Bold.pfb
-MyriadPro-Bold-OSF-7m MyriadPro-Bold "MinionPro-OSFOMLEncoding ReEncodeFont" <my-osf-oml.enc <MyriadPro-Bold.pfb
-MyriadPro-Bold-OSF-7t MyriadPro-Bold "MinionPro-OT1Encoding ReEncodeFont" <my-osf-ot1.enc <MyriadPro-Bold.pfb
-MyriadPro-Bold-OSF-8c MyriadPro-Bold "MinionPro-TS1Encoding ReEncodeFont" <my-osf-ts1.enc <MyriadPro-Bold.pfb
-MyriadPro-Bold-OSF-8t MyriadPro-Bold "MinionPro-OSFT1Encoding ReEncodeFont" <my-osf-t1.enc <MyriadPro-Bold.pfb
-MyriadPro-It-7m MyriadPro-It "MinionPro-OMLEncoding ReEncodeFont" <my-lf-oml.enc <MyriadPro-It.pfb
-MyriadPro-It-7t MyriadPro-It "MinionPro-OT1Encoding ReEncodeFont" <my-lf-ot1.enc <MyriadPro-It.pfb
-MyriadPro-It-8c MyriadPro-It "MinionPro-TS1Encoding ReEncodeFont" <my-lf-ts1.enc <MyriadPro-It.pfb
-MyriadPro-It-8t MyriadPro-It "MinionPro-T1Encoding ReEncodeFont" <my-lf-t1.enc <MyriadPro-It.pfb
-MyriadPro-It-k MyriadPro-It "MinionPro-LGREncoding ReEncodeFont" <my-lf-lgr.enc <MyriadPro-It.pfb
-MyriadPro-It-OSF-7m MyriadPro-It "MinionPro-OSFOMLEncoding ReEncodeFont" <my-osf-oml.enc <MyriadPro-It.pfb
-MyriadPro-It-OSF-7t MyriadPro-It "MinionPro-OT1Encoding ReEncodeFont" <my-osf-ot1.enc <MyriadPro-It.pfb
-MyriadPro-It-OSF-8c MyriadPro-It "MinionPro-TS1Encoding ReEncodeFont" <my-osf-ts1.enc <MyriadPro-It.pfb
-MyriadPro-It-OSF-8t MyriadPro-It "MinionPro-OSFT1Encoding ReEncodeFont" <my-osf-t1.enc <MyriadPro-It.pfb
-MyriadPro-Regular-7m MyriadPro-Regular "MinionPro-OMLEncoding ReEncodeFont" <my-lf-oml.enc <MyriadPro-Regular.pfb
-MyriadPro-Regular-7t MyriadPro-Regular "MinionPro-OT1Encoding ReEncodeFont" <my-lf-ot1.enc <MyriadPro-Regular.pfb
-MyriadPro-Regular-8c MyriadPro-Regular "MinionPro-TS1Encoding ReEncodeFont" <my-lf-ts1.enc <MyriadPro-Regular.pfb
-MyriadPro-Regular-8t MyriadPro-Regular "MinionPro-T1Encoding ReEncodeFont" <my-lf-t1.enc <MyriadPro-Regular.pfb
-MyriadPro-Regular-k MyriadPro-Regular "MinionPro-LGREncoding ReEncodeFont" <my-lf-lgr.enc <MyriadPro-Regular.pfb
-MyriadPro-Regular-OSF-7m MyriadPro-Regular "MinionPro-OSFOMLEncoding ReEncodeFont" <my-osf-oml.enc <MyriadPro-Regular.pfb
-MyriadPro-Regular-OSF-7t MyriadPro-Regular "MinionPro-OT1Encoding ReEncodeFont" <my-osf-ot1.enc <MyriadPro-Regular.pfb
-MyriadPro-Regular-OSF-8c MyriadPro-Regular "MinionPro-TS1Encoding ReEncodeFont" <my-osf-ts1.enc <MyriadPro-Regular.pfb
-MyriadPro-Regular-OSF-8t MyriadPro-Regular "MinionPro-OSFT1Encoding ReEncodeFont" <my-osf-t1.enc <MyriadPro-Regular.pfb
-stmary10 stmary10 <stmary10.pfb
-stmary5 stmary5 <stmary5.pfb
-stmary6 stmary6 <stmary6.pfb
-stmary7 stmary7 <stmary7.pfb
-stmary8 stmary8 <stmary8.pfb
-stmary9 stmary9 <stmary9.pfb
-sy-anttbz AntykwaTorunska-BoldItalic "encantt-sy ReEncodeFont" <antt-sy.enc <anttbi.pfb
-sy-anttcbz AntykwaTorunskaCond-BoldItalic "encantt-sy ReEncodeFont" <antt-sy.enc <anttcbi.pfb
-sy-anttclz AntykwaTorunskaCondLight-Italic "encantt-sy ReEncodeFont" <antt-sy.enc <anttcli.pfb
-sy-anttcmz AntykwaTorunskaCondMed-Italic "encantt-sy ReEncodeFont" <antt-sy.enc <anttcmi.pfb
-sy-anttcrz AntykwaTorunskaCond-Italic "encantt-sy ReEncodeFont" <antt-sy.enc <anttcri.pfb
-sy-anttlz AntykwaTorunskaLight-Italic "encantt-sy ReEncodeFont" <antt-sy.enc <anttli.pfb
-sy-anttmz AntykwaTorunskaMed-Italic "encantt-sy ReEncodeFont" <antt-sy.enc <anttmi.pfb
-sy-anttrz AntykwaTorunska-Italic "encantt-sy ReEncodeFont" <antt-sy.enc <anttri.pfb
-sy StandardSymL <usyr.pfb
-yfrak yfrak-Regular <yfrak.pfb
-ygoth ygoth-Regular <ygoth.pfb
-yswab yswab-Regular <yswab.pfb
-zd Dingbats <uzdr.pfb
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/frktest-nf-cmp.svg b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/frktest-nf-cmp.svg
deleted file mode 100644
index 372662c6b95..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/frktest-nf-cmp.svg
+++ /dev/null
@@ -1,1223 +0,0 @@
-<?xml version="1.0"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="440.209pt" version="1.1" viewBox="-13.4025 53.7983 396.851 440.209" width="396.851pt">
- <defs>
- <path id="g1" d="M0 -9.144C0.3744 -8.8704 0.7776 -8.5104 0.7776 -7.8912V-7.56V-2.1312C0.5472 -1.8144 0.3456 -1.4544 0.1584 -1.08C0.9648 -0.6336 1.6992 -0.1296 2.5488 0.2736L2.7072 0.216C3.1824 -0.0576 3.672 -0.3312 4.1328 -0.6192H4.1472L4.5072 -0.36C4.8528 -0.1584 5.1264 0.1152 5.5152 0.2736L5.6592 0.216C6.408 -0.2016 7.1424 -0.6192 7.848 -1.0656C7.8192 -1.1952 7.7616 -1.2816 7.7184 -1.3824C7.7184 -2.8224 7.704 -4.2768 7.7328 -5.688L7.8768 -6.0048L5.7456 -7.056C5.6016 -6.696 5.4 -6.3504 5.1264 -6.0624C5.0832 -6.0192 4.896 -5.8032 4.824 -5.8032C4.7664 -5.8032 4.7232 -5.8608 4.68 -5.904C4.5936 -5.976 3.2976 -7.128 3.2688 -7.128L1.9872 -5.616V-7.5888V-8.064C1.9872 -8.3088 2.0016 -8.5392 2.0736 -8.7696C2.16 -9.072 2.4192 -9.4464 2.8224 -9.4464C3.024 -9.4464 3.1392 -9.3312 3.1968 -9.1296C3.2544 -9.1728 3.3408 -9.2304 3.3408 -9.3312C3.3408 -9.5328 3.1104 -9.6336 2.9232 -9.6336C2.592 -9.6336 2.3472 -9.4608 2.1312 -9.3312L1.5696 -8.9712C1.4976 -8.928 1.1952 -8.6976 1.1232 -8.6976H1.1088C1.0224 -8.6976 0.936 -8.8128 0.864 -8.856L0.4032 -9.2304C0.36 -9.2736 0.288 -9.3456 0.216 -9.3456S0 -9.2016 0 -9.144ZM6.3936 -0.5616C5.9328 -0.8928 5.4144 -1.1664 4.9824 -1.5408L4.9536 -1.8144V-5.1408C5.1408 -5.3712 5.3568 -5.5728 5.616 -5.7456C5.9472 -5.6304 6.2208 -5.472 6.4944 -5.2992C6.4944 -5.2992 6.5088 -4.9968 6.5088 -4.9968C6.5088 -3.5424 6.5232 -2.0736 6.4944 -0.6624L6.3936 -0.5616ZM3.4272 -1.08C3.5568 -0.9936 3.5568 -0.9072 3.5568 -0.7632C3.5568 -0.6912 3.528 -0.6048 3.4416 -0.6048S3.096 -0.792 3.096 -0.792L2.3472 -1.224C2.2032 -1.3104 1.9872 -1.3536 1.9872 -1.5984V-1.7568V-4.824V-4.9536C1.9872 -5.2128 2.1456 -5.3136 2.2752 -5.4576L2.592 -5.8176C2.6208 -5.8608 2.6784 -5.9616 2.7504 -5.9616C2.8368 -5.9616 2.9088 -5.8608 2.9664 -5.8176L3.3984 -5.4288C3.4704 -5.3712 3.5424 -5.3136 3.5568 -5.2128V-1.8432C3.5568 -1.7424 3.5712 -1.6272 3.5712 -1.512C3.5712 -1.4544 3.5712 -1.4112 3.5568 -1.3536C3.528 -1.2528 3.456 -1.1808 3.4272 -1.08Z"/>
- <path id="g2" d="M0.012 -4.488H0.432C0.432 -2.208 0.516 -0.984 0.732 1.236C0.768 1.524 0.828 1.824 0.84 2.124H1.092L1.176 0.876H1.188C1.392 1.356 1.98 1.728 2.532 1.728C2.748 1.728 2.952 1.68 3.144 1.584C3.888 1.212 4.236 0.216 4.236 -0.792C4.236 -0.996 4.224 -1.188 4.188 -1.38C4.044 -2.076 3.624 -2.724 3.036 -3.12C2.856 -3.252 2.652 -3.36 2.436 -3.432C2.76 -3.756 3.108 -4.14 3.108 -4.752C3.108 -5.304 2.832 -5.736 2.496 -6.048H2.484L1.824 -5.208L1.464 -4.728C1.428 -4.824 1.404 -4.932 1.368 -5.028S1.032 -5.832 1.032 -5.892C1.044 -5.94 1.068 -5.988 1.092 -6.024C1.272 -6.336 1.62 -6.612 2.04 -6.612C2.268 -6.612 2.472 -6.516 2.64 -6.444C2.676 -6.528 3.012 -7.332 3.012 -7.392C3.012 -7.5 2.892 -7.512 2.808 -7.524L2.784 -7.44C2.556 -7.548 2.328 -7.692 2.052 -7.692C1.704 -7.692 1.452 -7.464 1.296 -7.164C1.056 -6.648 0.852 -5.808 0.624 -5.34C0.48 -5.016 0.204 -4.776 0.012 -4.488ZM1.488 -2.904C1.512 -3.216 1.548 -3.54 1.548 -3.852C1.548 -3.936 1.536 -4.032 1.536 -4.116C1.536 -4.212 1.524 -4.296 1.512 -4.392C1.512 -4.416 1.512 -4.428 1.512 -4.452C1.512 -4.584 1.656 -4.632 1.776 -4.632C2.124 -4.632 2.316 -4.272 2.316 -3.996C2.316 -3.6 2.004 -3.312 1.716 -3.084C1.644 -3.024 1.572 -2.964 1.488 -2.904ZM2.88 1.092C2.688 1.272 2.424 1.38 2.16 1.38C1.596 1.38 1.236 0.78 1.236 0.216C1.236 0.096 1.428 -2.316 1.44 -2.376C1.452 -2.424 1.488 -2.448 1.536 -2.448C1.608 -2.448 1.692 -2.412 1.728 -2.4C2.676 -2.196 3.384 -1.212 3.384 -0.228C3.384 0.324 3.216 0.792 2.88 1.092Z"/>
- <path id="g3" d="M0.012 -4.488H0.432C0.432 -2.232 0.564 -0.156 0.828 1.98C0.828 2.064 0.852 2.136 0.972 2.136C1.008 2.136 1.056 2.124 1.092 2.124C1.092 1.968 1.32 -0.84 1.416 -2.088C1.464 -2.652 1.548 -3.228 1.548 -3.792C1.548 -4.248 1.5 -4.704 1.332 -5.136C1.296 -5.22 1.044 -5.796 1.044 -5.88C1.044 -6 1.164 -6.144 1.212 -6.192C1.416 -6.432 1.728 -6.612 2.052 -6.612C2.232 -6.6 2.376 -6.528 2.544 -6.492C2.4 -6.06 2.256 -5.64 2.076 -5.244L1.512 -4.488H1.944C1.944 -4.416 1.932 -4.332 1.932 -4.26C1.932 -4.08 1.944 -3.912 1.944 -3.732C1.956 -2.472 2.004 -1.212 2.124 0.048C2.184 0.744 2.232 1.44 2.352 2.124H2.592C2.628 1.644 3.048 -3.696 3.048 -3.828C3.048 -4.284 3 -4.74 2.82 -5.16L2.604 -5.688C2.58 -5.748 2.544 -5.82 2.544 -5.88C2.544 -5.988 2.664 -6.132 2.7 -6.18C2.892 -6.42 3.216 -6.612 3.552 -6.612C3.768 -6.612 3.972 -6.504 4.152 -6.444L4.548 -7.44L4.32 -7.536L4.296 -7.44C4.056 -7.548 3.816 -7.692 3.54 -7.692C3.396 -7.692 3.276 -7.644 3.168 -7.584C3.12 -7.56 3.06 -7.488 3 -7.476C2.94 -7.476 2.868 -7.512 2.82 -7.536L2.784 -7.44C2.58 -7.548 2.304 -7.692 2.04 -7.692C1.344 -7.692 1.14 -6.756 0.96 -6.228C0.864 -5.928 0.756 -5.616 0.624 -5.328C0.48 -5.016 0.216 -4.764 0.012 -4.488Z"/>
- <path id="g4" d="M0.012 -4.488H0.432C0.432 -2.376 0.516 -0.672 0.744 1.332C0.78 1.596 0.828 1.86 0.84 2.124H1.092C1.092 1.956 1.2 0.66 1.2 0.66L1.416 -2.112C1.464 -2.112 1.548 -3.804 1.548 -3.804S1.536 -4.488 1.5 -4.488H2.604V-5.088H1.488C1.452 -5.088 1.404 -5.088 1.356 -5.112C1.32 -5.136 1.308 -5.184 1.296 -5.22C1.236 -5.328 1.032 -5.844 1.032 -5.892C1.044 -5.952 1.08 -6.012 1.104 -6.06C1.296 -6.348 1.62 -6.612 2.052 -6.612C2.292 -6.612 2.46 -6.516 2.64 -6.444C2.772 -6.768 2.904 -7.104 3.036 -7.44L2.808 -7.524L2.784 -7.44C2.556 -7.548 2.328 -7.692 2.052 -7.692C1.32 -7.692 1.14 -6.756 0.948 -6.192C0.864 -5.904 0.744 -5.616 0.624 -5.34C0.48 -5.016 0.204 -4.776 0.012 -4.488Z"/>
- <path id="g5" d="M0.012 -4.488H0.432C0.432 -2.4 0.516 -0.636 0.744 1.332C0.78 1.596 0.828 1.86 0.84 2.124H1.092C1.092 1.956 1.344 -1.236 1.428 -2.256C1.476 -2.256 1.536 -3.816 1.536 -3.816S1.524 -4.488 1.5 -4.488H1.932C1.932 -2.4 2.016 -0.636 2.244 1.332C2.28 1.596 2.328 1.86 2.34 2.124H2.592C2.592 1.956 2.844 -1.236 2.928 -2.256C2.976 -2.256 3.036 -3.816 3.036 -3.816S3.024 -4.488 3 -4.488H4.104V-5.088H2.976C2.94 -5.088 2.892 -5.088 2.856 -5.112S2.796 -5.196 2.784 -5.232C2.748 -5.34 2.532 -5.868 2.532 -5.88C2.532 -5.952 2.58 -6.012 2.616 -6.072C2.796 -6.336 3.12 -6.612 3.54 -6.612C3.78 -6.612 3.96 -6.516 4.14 -6.444L4.536 -7.44L4.308 -7.524L4.284 -7.44C4.044 -7.548 3.792 -7.692 3.516 -7.692C3.384 -7.692 3.264 -7.656 3.168 -7.596C3.108 -7.56 3.06 -7.488 2.988 -7.488C2.952 -7.488 2.808 -7.5 2.808 -7.524L2.784 -7.44C2.568 -7.536 2.316 -7.692 2.064 -7.692C1.332 -7.692 1.116 -6.744 0.948 -6.168C0.9 -6.024 0.828 -5.88 0.78 -5.736C0.72 -5.604 0.684 -5.46 0.624 -5.328C0.48 -5.004 0.204 -4.776 0.012 -4.488ZM2.544 -6.492C2.46 -6.24 2.376 -5.988 2.28 -5.736L2.136 -5.376C2.076 -5.244 2.028 -5.088 1.836 -5.088C1.788 -5.088 1.74 -5.088 1.704 -5.088H1.476C1.332 -5.088 1.308 -5.16 1.26 -5.292L1.104 -5.676C1.08 -5.736 1.032 -5.808 1.032 -5.88C1.032 -5.976 1.116 -6.072 1.164 -6.144C1.356 -6.396 1.656 -6.612 2.028 -6.612C2.256 -6.612 2.34 -6.552 2.544 -6.492Z"/>
- <path id="g6" d="M0.012 -4.488H0.444C0.432 -4.44 0.432 -4.392 0.432 -4.344C0.432 -4.284 0.432 -4.236 0.432 -4.188C0.432 -4.02 0.432 -3.852 0.444 -3.684C0.444 -3.684 0.444 -3.072 0.444 -3.072C0.444 -2.208 0.624 0.036 0.66 0.444C0.708 1.008 0.756 1.572 0.852 2.124H1.092C1.116 1.596 1.176 1.08 1.212 0.552C1.272 -0.276 1.332 -1.092 1.404 -1.92C1.44 -2.328 1.548 -3.432 1.548 -3.792C1.548 -4.272 1.488 -4.728 1.308 -5.172C1.284 -5.22 1.044 -5.844 1.044 -5.892C1.044 -6 1.176 -6.156 1.212 -6.192C1.416 -6.456 1.728 -6.6 2.052 -6.6C2.304 -6.6 2.448 -6.504 2.652 -6.444C2.784 -6.768 2.916 -7.104 3.048 -7.44L2.82 -7.524L2.796 -7.44C2.568 -7.548 2.34 -7.692 2.064 -7.692C1.332 -7.692 1.128 -6.744 0.948 -6.18C0.864 -5.892 0.744 -5.616 0.624 -5.34C0.492 -5.016 0.216 -4.776 0.012 -4.488Z"/>
- <path id="g7" d="M0.1152 -5.7312H0.72V-1.8864V-1.6704C0.72 -1.584 0.72 -1.512 0.6912 -1.4544C0.648 -1.3968 0.432 -1.1664 0.432 -1.08C0.4608 -0.9792 0.6336 -0.8064 0.6768 -0.7632L1.3104 -0.0144C1.3536 0.0288 1.512 0.2736 1.584 0.2736C1.6416 0.2736 1.7136 0.216 1.7712 0.1872L2.1744 -0.0432C2.304 -0.1152 3.6864 -0.9216 3.7584 -0.9504C3.7296 -1.0224 3.672 -1.1952 3.5568 -1.1952C3.528 -1.1952 3.4992 -1.1808 3.4704 -1.1664L2.4048 -0.5472C2.2464 -0.7488 2.088 -0.936 1.944 -1.152C1.9008 -2.6352 1.944 -4.2192 1.9296 -5.7312H3.1392V-6.6528H1.9296C1.9296 -7.2576 2.0016 -7.848 2.088 -8.4528L1.7856 -8.4384L1.6272 -8.2368L0.1152 -5.7312Z"/>
- <path id="g8" d="M0.1584 -1.1088V-1.0944C0.72 -0.6768 1.2384 -0.2304 1.8144 0.1584L1.9728 0.0864C2.4624 -0.3024 2.9664 -0.6768 3.4272 -1.0944L3.456 -1.4112C3.2976 -1.296 3.024 -1.0944 2.7648 -1.0944C2.1888 -1.0944 2.1168 -1.7424 2.1024 -2.1888C2.1024 -2.2752 2.088 -2.3472 2.088 -2.4336V-4.3344V-8.1504C2.088 -8.2512 2.1024 -8.3376 2.1024 -8.4384C2.16 -8.9712 2.4336 -9.7344 3.1392 -9.7344V-10.0512C2.88 -9.9792 2.6208 -9.8928 2.3616 -9.8208L0.9216 -9.3744C0.7344 -9.3168 0.5616 -9.2736 0.3744 -9.216C0.2448 -9.1584 0.1584 -9.1872 0.1584 -8.9856C0.1584 -8.928 0.1584 -8.856 0.1872 -8.8272C0.2304 -8.7984 0.3024 -8.784 0.3456 -8.7552C0.6048 -8.64 0.72 -8.352 0.72 -8.0064V-7.8912V-2.9088V-2.6352C0.72 -2.0304 0.4608 -1.4688 0.1584 -1.1088Z"/>
- <path id="g9" d="M0.1584 -1.5552V-0.7344H0.3744C0.432 -0.7344 0.5184 -0.7344 0.576 -0.72C0.7056 -0.6912 1.4688 -0.288 1.728 -0.144C1.8 -0.1008 2.2608 0.1728 2.3472 0.1728C2.4768 0.1728 2.6064 0.0144 2.664 -0.0288L3.1824 -0.3888L4.1184 -1.0368C4.608 -1.3968 5.2128 -1.8432 5.2128 -2.6496C5.2128 -3.1824 4.9248 -3.744 4.5216 -4.0752C4.2912 -4.2768 4.0032 -4.392 3.7152 -4.4784L5.112 -6.1488C5.0544 -6.2064 4.968 -6.3216 4.8816 -6.3216C4.8384 -6.3216 4.7952 -6.2928 4.7664 -6.2784C4.6656 -6.2064 4.536 -6.1488 4.3488 -6.1488C3.8592 -6.1488 3.4704 -6.4512 3.1968 -6.6528C3.1248 -6.696 2.9088 -6.8688 2.808 -6.8688C2.7216 -6.8688 2.2032 -6.4512 2.0304 -6.3216C1.4112 -5.832 0.1584 -5.1408 0.1584 -4.1184C0.1584 -4.0752 0.1584 -4.032 0.1728 -3.9888C0.2448 -3.5856 0.6336 -3.2688 0.9072 -2.9808C1.08 -2.7936 1.2672 -2.5632 1.2672 -2.2896C1.2672 -2.2032 1.2528 -2.1168 1.2096 -2.0448C1.008 -1.6272 0.576 -1.5552 0.1584 -1.5552ZM3.6288 -4.8816L2.7792 -3.8736C2.736 -3.816 2.52 -3.528 2.448 -3.528H2.4336C2.3904 -3.528 2.3472 -3.5712 2.304 -3.6C1.9008 -3.9024 1.1664 -4.2336 1.1664 -4.8528C1.1664 -5.2416 1.4688 -5.6448 1.9152 -5.6448C2.1312 -5.6448 2.3472 -5.5728 2.5344 -5.4864C2.7072 -5.4 3.4992 -4.9248 3.6288 -4.8816ZM1.512 -1.8432C1.7568 -2.1744 2.0304 -2.4768 2.304 -2.7936L2.5056 -3.0384C2.5632 -3.096 2.6208 -3.1824 2.736 -3.1824S3.24 -3.096 3.2544 -3.096C3.7584 -2.952 4.2912 -2.5488 4.3056 -1.9728C4.3056 -1.8432 4.2912 -1.7136 4.2192 -1.5984C4.0464 -1.3392 3.7296 -1.1376 3.312 -1.1376C2.8368 -1.1376 2.376 -1.3824 2.0592 -1.5552C1.8864 -1.656 1.6992 -1.7712 1.512 -1.8432Z"/>
- <path id="g10" d="M0.1584 -5.1264H0.9648C1.0944 -2.4912 1.2816 0.0576 1.5552 2.5488H1.6416C1.6848 2.5488 1.728 2.5488 1.7568 2.52C1.7856 2.5056 1.8432 2.1888 1.8576 2.088C2.1456 0.3744 2.3904 -1.5408 2.5344 -3.312C2.5632 -3.6144 2.664 -4.8816 2.664 -5.1264H3.8448V-6.0336H2.9664H2.8368C2.6784 -6.0336 2.52 -6.048 2.376 -6.12C2.0736 -6.2784 1.8576 -6.8256 1.8576 -7.2288C1.8576 -7.5744 1.9872 -7.92 2.2896 -8.136C2.4048 -8.2224 2.5344 -8.2944 2.736 -8.2944C2.9664 -8.2944 3.168 -8.1936 3.384 -8.064C3.5568 -7.9488 3.7728 -7.7904 3.9744 -7.7904C4.1472 -7.7904 4.2192 -7.992 4.2912 -8.1072L4.7376 -8.7408C4.824 -8.856 4.9104 -8.9856 4.9824 -9.1152C4.9248 -9.1584 4.824 -9.2448 4.7376 -9.2448H4.7088C4.5792 -9.1872 4.5792 -8.9856 4.4208 -8.9856H4.3776C4.0176 -9.0576 3.8016 -9.4464 3.4128 -9.4608C1.9728 -9.4608 1.6416 -8.0928 1.2096 -7.1136C0.9648 -6.5232 0.7632 -6.0336 0.3168 -5.5872C0.2304 -5.5008 0.1584 -5.472 0.1584 -5.2704V-5.1264Z"/>
- <path id="g11" d="M0.1584 -5.1264H0.9648C1.0944 -2.4912 1.2816 0.0576 1.5552 2.5488H1.6416C1.7568 2.5488 1.8 2.5056 1.8 2.376C2.1168 0.9648 2.4912 -2.6784 2.5632 -3.6576C2.592 -3.888 2.6784 -5.1408 2.6784 -5.3136C2.6784 -5.3856 2.6928 -5.4432 2.6928 -5.5152C2.6784 -5.616 2.6208 -5.688 2.5632 -5.76C2.2608 -6.1488 1.8576 -6.6672 1.8576 -7.2144S2.232 -8.2944 2.7504 -8.2944C2.9952 -8.2944 3.2256 -8.1648 3.4416 -8.0208C3.6 -7.9344 3.8016 -7.7904 3.9888 -7.7904H4.0176C4.1184 -7.8192 4.2624 -8.064 4.2912 -8.1072L4.7376 -8.7408C4.824 -8.856 4.9104 -8.9856 4.9824 -9.1152C4.9248 -9.1584 4.824 -9.2448 4.7376 -9.2448H4.7088C4.5792 -9.1872 4.5792 -8.9856 4.4208 -8.9856H4.3776C4.0176 -9.0576 3.8016 -9.4464 3.4128 -9.4608C1.9728 -9.4608 1.6416 -8.0928 1.2096 -7.1136C0.9648 -6.5232 0.7632 -6.0336 0.3168 -5.5872C0.2304 -5.5008 0.1584 -5.472 0.1584 -5.2704V-5.1264Z"/>
- <path id="g12" d="M0.204 -0.696H0.468C0.48 -0.768 0.504 -0.828 0.552 -0.876L0.684 -0.924C0.684 -0.924 0.732 -0.924 0.732 -0.924C0.852 -0.912 0.96 -0.888 1.068 -0.84C1.428 -0.672 1.692 -0.372 1.992 -0.12C2.064 -0.06 2.304 0.144 2.412 0.144C2.472 0.144 2.544 0.108 2.592 0.072C3.216 -0.24 3.72 -0.744 4.056 -1.32C4.152 -1.488 4.26 -1.668 4.308 -1.86C4.26 -1.884 4.176 -1.932 4.104 -1.932S4.032 -1.872 4.008 -1.812C3.84 -1.416 3.696 -0.936 3.144 -0.936C2.952 -0.948 2.772 -1.032 2.616 -1.128C2.304 -1.344 1.788 -1.92 1.368 -1.98C1.812 -2.34 2.544 -2.592 2.544 -3.372C2.484 -4.632 1.176 -5.304 1.176 -6.492C1.176 -6.684 1.2 -6.852 1.26 -6.996C1.452 -7.524 1.932 -7.992 2.604 -7.992C3.156 -7.992 3.516 -7.548 3.516 -7.068C3.516 -6.468 2.976 -6.012 2.712 -5.496C2.628 -5.304 2.556 -5.112 2.556 -4.908C2.556 -4.788 2.58 -4.668 2.64 -4.548C2.796 -4.224 3.252 -3.816 3.6 -3.816C3.984 -3.816 4.14 -4.176 4.176 -4.512H3.9C3.9 -4.344 3.828 -4.092 3.6 -4.092C3.252 -4.092 3 -4.332 3 -4.644C3 -4.8 3.072 -4.944 3.18 -5.076C3.396 -5.328 3.696 -5.484 3.9 -5.748C4.008 -5.904 4.032 -6.048 4.032 -6.24C4.032 -6.504 3.972 -6.78 3.888 -7.032C3.672 -7.644 3.252 -8.46 2.388 -8.46C2.28 -8.46 2.16 -8.448 2.04 -8.424C1.26 -8.28 0.648 -7.704 0.372 -6.972C0.264 -6.708 0.204 -6.408 0.204 -6.108C0.204 -5.952 0.216 -5.784 0.264 -5.628C0.492 -4.656 1.584 -3.864 1.584 -2.844C1.584 -2.772 1.584 -2.688 1.56 -2.616C1.44 -2.256 1.032 -2.076 0.756 -1.848C0.42 -1.56 0.204 -1.14 0.204 -0.696Z"/>
- <path id="g13" d="M0.204 -4.536H0.564V-1.692C0.564 -1.596 0.564 -1.5 0.564 -1.404C0.564 -1.032 0.492 -0.744 0.204 -0.564L0.384 -0.408C0.636 -0.312 0.864 -0.192 1.08 -0.06C1.176 0.012 1.26 0.084 1.38 0.132L1.5 0.024L2.604 -1.2V-1.212C2.556 -1.248 2.484 -1.32 2.424 -1.332C2.364 -1.332 2.316 -1.26 2.28 -1.224L2.076 -0.996C2.028 -0.948 1.992 -0.876 1.92 -0.876C1.872 -0.876 1.836 -0.912 1.8 -0.936C1.68 -1.008 1.536 -1.068 1.416 -1.152C1.368 -1.2 1.368 -1.26 1.368 -1.32C1.368 -1.344 1.368 -1.368 1.368 -1.392V-4.536H2.34V-5.148H1.38C1.416 -5.7 1.512 -6.18 1.608 -6.672L1.38 -6.66L1.284 -6.516L0.204 -4.536Z"/>
- <path id="g14" d="M0.204 -4.536H0.564V-1.704C0.564 -1.596 0.576 -1.476 0.576 -1.356C0.576 -1.008 0.48 -0.732 0.204 -0.564C0.396 -0.36 0.672 -0.3 0.912 -0.168C1.032 -0.072 1.152 -0.06 1.152 0.156C1.176 0.252 1.2 0.336 1.236 0.42C1.428 0.84 1.824 1.188 2.412 1.188C2.556 1.188 2.688 1.176 2.82 1.14C3.612 0.924 4.116 0.096 4.116 -0.828C4.116 -1.692 3.684 -2.556 2.988 -3.072C2.784 -3.216 2.556 -3.36 2.304 -3.432V-3.444C2.436 -3.516 2.532 -3.66 2.628 -3.78C2.82 -4.044 2.988 -4.356 2.988 -4.764C2.988 -5.28 2.7 -5.832 2.352 -6.048C2.1 -5.712 1.884 -5.196 1.392 -5.148C1.392 -5.508 1.452 -5.88 1.524 -6.228C1.548 -6.372 1.596 -6.528 1.608 -6.672L1.38 -6.66L1.284 -6.516L0.204 -4.536ZM1.368 -2.904V-4.392C1.368 -4.56 1.464 -4.632 1.632 -4.632C2.004 -4.632 2.184 -4.272 2.184 -3.984C2.184 -3.492 1.704 -3.18 1.368 -2.904ZM1.368 -2.448C2.352 -2.316 3.036 -1.56 3.204 -0.684C3.24 -0.54 3.264 -0.396 3.264 -0.252C3.264 -0.036 3.204 0.168 3.072 0.36C2.856 0.624 2.52 0.852 2.1 0.852C1.92 0.852 1.74 0.792 1.608 0.648C1.524 0.552 1.404 0.324 1.404 0.192C1.404 0.18 1.404 0.18 1.404 0.168C1.428 0.072 1.596 -0.072 1.632 -0.12C1.716 -0.216 2.28 -0.792 2.28 -0.888C2.28 -0.936 2.172 -1.008 2.124 -1.008C2.052 -1.008 1.992 -0.888 1.956 -0.84C1.764 -0.948 1.56 -1.056 1.392 -1.188C1.32 -1.548 1.392 -2.04 1.368 -2.448Z"/>
- <path id="g15" d="M0.216 -1.14V-1.116C0.504 -0.948 1.884 -0.096 2.088 0.048C2.124 0.084 2.172 0.132 2.232 0.132C2.232 0.132 2.244 0.132 2.244 0.132C2.28 0.12 2.868 -0.564 3.132 -0.984C3.624 -1.764 3.828 -2.712 3.828 -3.636C3.828 -4.488 3.66 -5.184 3.264 -5.808L1.176 -4.968L0.66 -4.752C0.54 -4.704 0.468 -4.716 0.468 -4.536C0.468 -4.488 0.468 -4.452 0.468 -4.416V-1.728C0.468 -1.704 0.468 -1.68 0.468 -1.656C0.468 -1.488 0.456 -1.332 0.324 -1.212L0.216 -1.14ZM2.712 -0.828C2.688 -0.792 2.652 -0.72 2.604 -0.72C2.568 -0.72 2.544 -0.732 2.52 -0.744C2.148 -0.984 2.028 -1.056 1.572 -1.332L1.38 -1.452C1.308 -1.5 1.26 -1.524 1.26 -1.644C1.26 -1.704 1.272 -1.764 1.272 -1.812V-3.936C1.272 -3.996 1.272 -4.68 1.272 -4.68C1.296 -4.776 1.44 -4.812 1.524 -4.836C1.776 -4.944 2.04 -5.04 2.292 -5.148C2.352 -5.172 2.448 -5.232 2.52 -5.232C2.556 -5.232 2.58 -5.22 2.604 -5.196C2.652 -5.112 2.688 -5.004 2.724 -4.908C2.988 -4.212 3.096 -3.312 3.096 -2.4C3.096 -1.824 2.976 -1.164 2.712 -0.828Z"/>
- <path id="g16" d="M0.264 -7.02C0.252 -6.996 0.156 -6.612 0.156 -6.588C0.156 -6.48 0.264 -6.408 0.312 -6.348C0.468 -6.12 0.552 -5.868 0.552 -5.496C0.552 -5.352 0.54 -5.208 0.54 -5.064V-2.16C0.54 -2.076 0.54 -1.992 0.54 -1.908C0.54 -1.68 0.504 -1.524 0.372 -1.38C0.276 -1.284 0.204 -1.308 0.204 -1.104V-0.876C0.708 -0.792 1.212 -0.552 1.62 -0.264C1.704 -0.204 1.8 -0.144 1.86 -0.072C1.884 -0.036 1.872 0 1.896 0.036C1.92 0.096 2.016 0.132 2.076 0.156C2.364 -0.336 2.712 -0.792 3 -1.284C3.432 -2.004 3.78 -2.844 3.78 -3.696C3.78 -4.524 3.456 -5.148 3.048 -5.592C3.024 -5.616 2.832 -5.808 2.808 -5.808L1.356 -4.68C1.356 -4.896 1.344 -5.112 1.344 -5.328C1.344 -5.856 1.392 -6.384 1.728 -6.828C1.944 -7.116 2.304 -7.38 2.772 -7.38V-7.74C2.016 -7.74 1.404 -7.296 0.924 -6.864C0.876 -6.816 0.816 -6.72 0.744 -6.72C0.744 -6.72 0.732 -6.72 0.732 -6.72C0.672 -6.72 0.384 -6.96 0.264 -7.02ZM2.604 -1.104C2.196 -1.344 1.776 -1.572 1.38 -1.824L1.356 -2.016C1.368 -2.82 1.32 -3.636 1.38 -4.356C1.632 -4.596 1.92 -4.812 2.196 -5.028C2.724 -4.572 3.072 -3.936 3.072 -3.024C3.072 -2.568 3 -2.124 2.892 -1.752C2.82 -1.524 2.7 -1.32 2.604 -1.104Z"/>
- <path id="g17" d="M0.3312 -5.6448L0.504 -5.3712C0.5472 -4.0896 0.5184 -2.7072 0.504 -1.44C0.4176 -1.1952 0.3024 -0.9792 0.2016 -0.7488L2.0736 0.144L1.5696 0.7344L0.1008 2.3904H0.3168C0.576 2.3904 0.6192 2.2752 0.7632 2.1312C0.9504 1.944 1.1808 1.7568 1.4976 1.7568C1.7136 1.7568 1.9584 1.8144 2.1744 1.8432C2.664 1.9008 4.3776 2.1456 4.4352 2.1456C4.464 2.1456 4.4784 2.1456 4.5072 2.1312C4.6224 2.088 4.7376 1.9296 4.824 1.8432L6.0192 0.648C6.0768 0.5904 6.2064 0.4896 6.2064 0.4032C6.2064 0.3312 5.9472 -0.072 5.8752 -0.216L5.2128 -1.368C5.0976 -1.5552 4.8816 -1.8 4.8816 -2.088V-2.2608V-5.184C4.968 -5.1552 5.3136 -5.112 5.3856 -5.112C5.7024 -5.112 5.7888 -5.3568 5.904 -5.5728C6.048 -5.8608 6.2064 -6.1488 6.336 -6.4368L6.0768 -6.2928L5.76 -6.3072L2.952 -6.7104L3.0384 -6.84C2.9808 -6.8688 2.5632 -7.0992 2.5056 -7.0992C2.4192 -7.0992 2.3472 -6.9696 2.304 -6.9264C1.8432 -6.4656 1.4544 -6.1488 0.792 -5.832C0.648 -5.76 0.4896 -5.7168 0.3312 -5.6448ZM1.728 -5.6448L3.672 -5.3568V-1.9728C3.672 -1.9152 3.6864 -1.8432 3.6864 -1.7712C3.6864 -1.584 3.5856 -1.5264 3.4848 -1.4112L3.1392 -1.0224C3.0816 -0.9648 2.9952 -0.8208 2.8944 -0.8208C2.808 -0.8208 2.6928 -0.8928 2.6352 -0.9216L2.0016 -1.224C1.872 -1.3104 1.728 -1.3104 1.728 -1.5408V-1.7136V-5.6448ZM2.1168 0.6192L3.8448 -1.3104C4.2768 -0.5184 4.7376 0.2448 5.184 1.0224C4.1616 0.8928 3.168 0.72 2.1168 0.6192Z"/>
- <path id="g18" d="M0.3744 -1.1664V-1.152C0.4608 -1.0656 0.576 -1.0224 0.6912 -0.9648L1.08 -0.792L2.5488 -0.144L3.0528 0.0864C3.1104 0.1152 3.1968 0.1584 3.2544 0.1584H3.2832C3.3984 0.1584 3.5136 0.0144 3.6 -0.0576L4.3632 -0.648C5.4576 -1.4688 6.7824 -2.6496 6.7824 -4.176C6.7824 -5.112 6.3504 -6.0048 5.5728 -6.5232C5.4432 -6.6096 4.9824 -6.8832 4.8096 -6.8832C4.7952 -6.8832 4.7664 -6.8688 4.752 -6.8688C4.6656 -6.8544 4.0896 -6.4368 4.0896 -6.4368L2.592 -5.3856C2.5056 -5.832 2.1312 -6.3504 1.8864 -6.5952C1.8288 -6.6528 1.6416 -6.8688 1.5264 -6.8688C1.44 -6.8544 1.3536 -6.768 1.296 -6.7248L0.792 -6.336L0.36 -6.0192C0.3168 -5.976 0.216 -5.9328 0.2016 -5.8752C0.2016 -5.832 0.2304 -5.8032 0.2592 -5.7888C0.3312 -5.7168 0.4176 -5.6592 0.4896 -5.5872C1.0224 -5.112 1.4976 -4.32 1.4976 -3.384C1.4976 -2.9088 1.368 -2.4336 1.1232 -2.016C0.936 -1.6848 0.6624 -1.4112 0.3744 -1.1664ZM1.8144 -2.1312C1.9152 -2.304 2.0736 -2.4624 2.1744 -2.6352C2.5056 -3.1536 2.7216 -3.8016 2.7216 -4.5648V-4.6944C2.7216 -4.7808 2.7072 -4.8672 2.6928 -4.9536V-5.0544C2.6928 -5.1552 2.7648 -5.1984 2.8224 -5.256C3.0384 -5.4288 3.2688 -5.6016 3.6288 -5.6016C3.7008 -5.6016 3.7872 -5.6016 3.8592 -5.5872C4.7952 -5.4432 5.4432 -4.4352 5.4432 -3.384C5.4432 -2.5344 5.0256 -1.7712 4.5648 -1.2528C4.5216 -1.1808 4.4352 -1.0368 4.32 -1.0368C4.2624 -1.0368 3.6432 -1.3248 3.6432 -1.3248C3.0384 -1.584 2.4336 -1.8864 1.8144 -2.1312Z"/>
- <path id="g19" d="M0.468 -3.888H0.204C0.204 -3.384 0.432 -2.76 1.056 -2.76C1.236 -2.76 1.404 -2.808 1.512 -2.868C1.908 -3.084 2.22 -3.528 2.22 -4.116C2.22 -4.512 2.016 -4.788 1.8 -5.004C1.416 -5.388 0.492 -5.712 0.468 -6.396C0.468 -6.516 0.492 -6.648 0.528 -6.768C0.648 -7.212 0.948 -7.548 1.488 -7.548C1.812 -7.548 2.136 -7.44 2.4 -7.236C3.06 -6.792 3.3 -5.7 3.384 -4.8C3.444 -4.2 3.468 -3.6 3.468 -3C3.468 -1.944 3.468 -0.672 2.832 -0.252C2.64 -0.144 2.592 -0.144 2.328 -0.108C2.328 -0.108 2.1 -0.12 2.1 -0.144C1.74 -0.252 1.476 -0.612 1.476 -0.984C1.476 -1.236 1.584 -1.488 1.764 -1.656C1.86 -1.74 1.968 -1.8 2.076 -1.848L1.908 -2.052C1.584 -1.86 1.32 -1.68 0.816 -1.656C0.672 -1.656 0.516 -1.668 0.372 -1.68C0.432 -1.524 0.468 -1.368 0.468 -1.212C0.468 -0.984 0.396 -0.78 0.3 -0.624C0.276 -0.588 0.228 -0.54 0.228 -0.492C0.228 -0.42 0.324 -0.3 0.396 -0.3C0.432 -0.3 0.48 -0.324 0.504 -0.348C0.6 -0.396 0.708 -0.432 0.816 -0.432C1.236 -0.432 1.572 -0.096 1.932 0.072C2.064 0.132 2.22 0.156 2.364 0.156C2.724 0.156 3.096 0 3.372 -0.216C4.152 -0.876 4.428 -2.148 4.428 -3.456C4.428 -3.6 4.416 -3.732 4.416 -3.864L4.38 -4.596C4.38 -4.692 4.356 -4.776 4.356 -4.872C4.368 -4.944 4.428 -4.968 4.488 -4.992C4.572 -5.04 4.692 -5.076 4.788 -5.076C4.824 -5.076 4.86 -5.076 4.896 -5.064C5.052 -5.016 5.064 -4.848 5.076 -4.704L5.4 -2.184C5.46 -1.296 5.736 -0.36 6.204 0.156C6.624 -0.42 7.068 -0.984 7.476 -1.584L7.248 -1.716C7.188 -1.62 7.104 -1.524 7.032 -1.428C6.996 -1.368 6.924 -1.272 6.828 -1.272C6.756 -1.272 6.684 -1.32 6.636 -1.368C6.312 -1.692 6.3 -2.268 6.24 -2.82C6.24 -2.82 5.964 -5.088 5.916 -5.388C5.916 -5.424 5.832 -5.736 5.832 -5.772S5.88 -5.832 5.916 -5.856L6.156 -6L6.6 -6.252C6.696 -6.312 6.804 -6.336 6.804 -6.48C6.804 -6.54 6.792 -6.6 6.792 -6.636C6.48 -6.684 6.564 -7.056 6.504 -7.332C6.456 -7.776 6.168 -8.148 5.844 -8.352C5.784 -8.388 5.724 -8.436 5.652 -8.436C5.652 -8.436 5.64 -8.436 5.64 -8.436C5.568 -8.436 5.532 -8.376 5.484 -8.34C5.388 -8.268 5.292 -8.208 5.184 -8.16C4.524 -7.836 4.212 -7.884 3.78 -7.248C3.492 -7.884 2.892 -8.46 2.004 -8.46C0.948 -8.46 0.324 -7.584 0.216 -6.696C0.204 -6.504 0.204 -6.312 0.204 -6.12V-5.352C0.204 -5.304 0.204 -5.244 0.204 -5.196C0.204 -5.04 0.216 -4.896 0.324 -4.764C0.528 -4.56 1.032 -4.452 1.272 -4.356C1.512 -4.272 1.68 -4.104 1.68 -3.804C1.68 -3.456 1.416 -3.024 1.032 -3.024C0.6 -3.024 0.468 -3.576 0.468 -3.888ZM4.32 -5.208C4.284 -5.616 4.2 -6.024 4.104 -6.408L3.996 -6.756C3.972 -6.756 3.948 -6.936 3.948 -6.936C4.02 -7.26 4.5 -7.548 4.788 -7.548C4.92 -7.548 5.04 -7.512 5.148 -7.416C5.412 -7.2 5.46 -6.78 5.52 -6.456C5.544 -6.348 5.604 -6.048 5.604 -6.012C5.604 -5.94 5.532 -5.916 5.484 -5.88L4.32 -5.208Z"/>
- <path id="g20" d="M0.516 -5.796C0.504 -5.88 0.492 -5.964 0.492 -6.048C0.492 -6.9 0.876 -7.548 1.296 -8.028C1.344 -8.088 1.488 -8.196 1.488 -8.28C1.488 -8.34 1.44 -8.412 1.368 -8.412S1.224 -8.34 1.176 -8.292C0.648 -7.764 0.228 -7.02 0.228 -6.036C0.228 -5.772 0.276 -5.496 0.384 -5.256S0.72 -4.788 1.02 -4.788C1.176 -4.788 1.356 -4.836 1.488 -4.944C1.62 -5.064 1.68 -5.244 1.68 -5.424C1.68 -5.808 1.416 -6.072 1.032 -6.072C0.828 -6.072 0.612 -5.988 0.516 -5.796ZM2.856 -5.808C2.856 -5.904 2.844 -6.012 2.844 -6.108C2.88 -6.924 3.216 -7.596 3.708 -8.088C3.756 -8.136 3.852 -8.196 3.852 -8.28C3.852 -8.292 3.84 -8.304 3.84 -8.316C3.84 -8.364 3.756 -8.412 3.72 -8.412C3.66 -8.412 3.612 -8.376 3.564 -8.328C3.024 -7.824 2.58 -6.996 2.58 -6.084C2.58 -5.46 2.784 -4.788 3.396 -4.788C3.768 -4.788 4.032 -5.076 4.032 -5.424C4.032 -5.604 3.972 -5.772 3.852 -5.904C3.732 -6.012 3.564 -6.072 3.384 -6.072C3.132 -6.072 2.988 -5.952 2.856 -5.808Z"/>
- <path id="g21" d="M0.6 -4.368C0.54 -4.332 0.432 -4.248 0.432 -4.176C0.432 -4.116 0.48 -4.068 0.516 -4.032C0.696 -3.804 1.008 -3.612 1.368 -3.612C1.92 -3.612 2.292 -4.104 2.292 -4.704S1.8 -5.64 1.416 -5.856C1.128 -6.012 0.492 -6.144 0.492 -6.6C0.492 -6.756 0.564 -6.912 0.624 -7.056C0.756 -7.344 0.924 -7.788 1.332 -7.788C1.68 -7.788 2.004 -7.572 2.184 -7.428C2.796 -6.876 3.24 -6.012 3.384 -5.088C3.42 -4.908 3.444 -4.704 3.444 -4.512C3.444 -3.804 3.144 -3.276 2.796 -2.844C2.7 -2.724 2.4 -2.316 2.232 -2.316C2.196 -2.316 2.148 -2.328 2.112 -2.328C2.088 -2.328 1.752 -2.34 1.752 -2.328C1.128 -2.292 0.564 -1.692 0.564 -1.008C0.564 -0.756 0.648 -0.588 0.768 -0.432C0.792 -0.396 0.84 -0.336 0.888 -0.336C0.888 -0.336 0.9 -0.336 0.9 -0.336C0.984 -0.336 1.056 -0.432 1.092 -0.492C0.948 -0.612 0.84 -0.804 0.84 -0.984C0.84 -1.296 1.164 -1.464 1.476 -1.464C1.56 -1.464 1.644 -1.464 1.716 -1.452C2.712 -1.332 3.552 -0.672 4.2 -0.072C4.236 -0.036 4.404 0.132 4.452 0.132C4.476 0.132 4.56 0.12 4.56 0.096L4.752 -0.012L5.532 -0.468C5.832 -0.636 6.168 -0.792 6.432 -1.02C6.792 -1.308 7.128 -1.8 7.128 -2.388C7.128 -2.904 6.828 -3.216 6.576 -3.504C6.264 -3.84 5.712 -4.272 5.712 -4.872C5.724 -5.076 5.892 -5.244 6.024 -5.388C6.336 -5.712 6.72 -6.012 7.128 -6.216C7.092 -6.288 7.068 -6.384 7.02 -6.432C6.972 -6.492 6.876 -6.492 6.816 -6.54C6.708 -6.612 6.612 -6.708 6.54 -6.828C6.192 -7.392 6.24 -8.46 5.376 -8.46C4.716 -8.46 4.224 -8.016 3.996 -7.596C3.912 -7.452 3.84 -7.296 3.804 -7.128L3.528 -7.56C3.192 -7.992 2.688 -8.46 1.968 -8.46C1.896 -8.46 1.824 -8.448 1.752 -8.448C0.828 -8.316 0.324 -7.332 0.228 -6.492C0.216 -6.384 0.204 -6.276 0.204 -6.168C0.204 -5.82 0.348 -5.58 0.456 -5.328C0.504 -5.148 0.66 -5.184 0.84 -5.136C1.2 -5.052 1.812 -4.92 1.812 -4.404C1.812 -4.152 1.656 -3.876 1.38 -3.876C1.02 -3.876 0.768 -4.128 0.6 -4.368ZM5.82 -5.556C5.472 -5.196 4.968 -4.836 4.968 -4.164C4.968 -4.08 4.968 -3.996 4.992 -3.912C5.136 -3.408 5.808 -3.084 6.12 -2.784C6.336 -2.568 6.48 -2.388 6.48 -2.028C6.48 -1.464 6.096 -0.864 5.448 -0.864C5.4 -0.864 5.352 -0.864 5.304 -0.876C4.824 -0.984 4.512 -1.428 4.176 -1.644C3.888 -1.848 3.564 -2.004 3.228 -2.124C3.06 -2.172 2.88 -2.208 2.712 -2.256C3.036 -2.484 3.36 -2.712 3.66 -2.964C4.056 -3.312 4.356 -3.672 4.356 -4.38C4.356 -5.196 4.248 -5.988 4.032 -6.6C4.008 -6.672 3.888 -6.924 3.888 -7.008C3.9 -7.092 3.948 -7.188 3.972 -7.272C4.116 -7.596 4.368 -7.86 4.74 -7.86C4.752 -7.86 4.752 -7.86 4.764 -7.86C5.112 -7.86 5.268 -7.56 5.316 -7.296C5.424 -6.72 5.244 -5.676 5.82 -5.556Z"/>
- <path id="g22" d="M0.6048 -8.352C0.432 -8.0208 0.2016 -7.5312 0.2016 -7.1136C0.2016 -6.984 0.2448 -6.9408 0.3456 -6.912C0.6192 -6.7536 1.7856 -6.192 1.8288 -6.1776C1.584 -5.9328 1.3392 -5.7168 1.0944 -5.4864C0.9504 -5.3712 0.7776 -5.256 0.7776 -5.0112V-4.8672V-2.5056C0.7776 -2.4192 0.792 -1.656 0.7632 -1.656C0.7488 -1.584 0.4608 -1.1088 0.4608 -1.0944L1.9584 -0.0864C2.1456 0.0432 2.3184 0.1872 2.5488 0.2736L2.7648 0.1872L4.9104 -1.0512L4.7664 -1.3536C4.7232 -2.7648 4.752 -4.3056 4.7664 -5.7024L4.9104 -6.0048C3.5568 -6.6816 2.16 -7.3296 0.8352 -8.0352L0.6336 -8.352H0.6048ZM3.4272 -0.5616C2.9664 -0.8928 2.448 -1.1808 2.016 -1.5408L1.9872 -1.8C1.9872 -3.0816 1.9728 -4.3632 2.0016 -5.6016C2.0592 -5.7312 2.0736 -5.904 2.1888 -5.976C2.6496 -5.7744 3.096 -5.5584 3.5136 -5.3136L3.5424 -5.04C3.5424 -3.5712 3.5568 -2.088 3.528 -0.6624L3.4272 -0.5616Z"/>
- <path id="g23" d="M0.6192 -8.3664C0.4176 -8.0352 0.2016 -7.56 0.2016 -7.1136C0.2016 -7.0704 0.2016 -7.0272 0.216 -6.9984C0.2736 -6.9264 0.6048 -6.7824 0.6336 -6.768L1.3968 -6.3936C1.5408 -6.3216 1.6848 -6.2352 1.8432 -6.1776C1.4976 -5.832 1.1232 -5.5296 0.792 -5.1696L0.7776 -4.9968V-1.6704L0.4752 -1.08C1.1808 -0.6336 1.8144 -0.144 2.5488 0.2736L2.7072 0.216C3.1824 -0.0576 3.672 -0.3312 4.1328 -0.6192H4.1472L4.5072 -0.36C4.8528 -0.1584 5.1264 0.1152 5.5152 0.2736L5.6592 0.216C6.408 -0.2016 7.1424 -0.6192 7.848 -1.0656C7.8192 -1.1952 7.7616 -1.2816 7.7184 -1.3824C7.7184 -2.8224 7.704 -4.2768 7.7328 -5.688L7.8768 -6.0048L5.7456 -7.056C5.5296 -6.5232 5.1984 -6.1056 4.7808 -5.7312L4.9248 -6.0048L3.744 -6.5808C2.7792 -7.0704 1.7856 -7.5312 0.8352 -8.0352L0.6192 -8.3664ZM3.4272 -1.08C3.5568 -0.9936 3.5568 -0.9072 3.5568 -0.7632C3.5568 -0.6768 3.5136 -0.6048 3.4272 -0.6048H3.4128C3.3552 -0.6048 3.024 -0.8352 3.024 -0.8352L2.3616 -1.2816C2.232 -1.3824 1.9872 -1.4544 1.9872 -1.6992V-1.7856V-4.9968V-5.2416C1.9872 -5.4144 1.9872 -5.5728 2.0304 -5.7312C2.0592 -5.8032 2.1024 -5.9616 2.2176 -5.9616C2.2464 -5.9616 2.2752 -5.9616 2.2896 -5.9472C2.3616 -5.9184 2.9952 -5.5872 3.2544 -5.472C3.4272 -5.3856 3.5712 -5.3856 3.5712 -5.1264C3.5712 -5.0544 3.5568 -4.9824 3.5568 -4.9104V-1.7136V-1.4688C3.5568 -1.2384 3.4992 -1.3104 3.4272 -1.08ZM6.3936 -0.5616C5.9328 -0.8928 5.4144 -1.1664 4.9824 -1.5408L4.9536 -1.8144V-5.1408C5.1408 -5.3712 5.3568 -5.5728 5.616 -5.7456C5.9472 -5.6304 6.2208 -5.472 6.4944 -5.2992C6.4944 -5.2992 6.5088 -4.9968 6.5088 -4.9968C6.5088 -3.5424 6.5232 -2.0736 6.4944 -0.6624L6.3936 -0.5616Z"/>
- <path id="g24" d="M0.684 -4.692V-1.5C0.684 -1.44 0.684 -1.368 0.684 -1.296C0.684 -1.068 0.66 -0.816 0.42 -0.72V-0.468C0.6 -0.408 0.732 -0.264 0.828 -0.108C0.888 0 0.912 0.168 1.092 0.168C1.128 0.168 1.176 0.156 1.212 0.156C1.284 -0.12 1.464 -0.384 1.752 -0.468C1.752 -0.504 1.752 -0.54 1.752 -0.576C1.752 -0.624 1.752 -0.66 1.74 -0.696C1.716 -0.756 1.632 -0.792 1.596 -0.84C1.524 -0.936 1.5 -1.056 1.488 -1.176C1.476 -1.176 1.488 -2.832 1.488 -4.152C1.488 -4.224 1.476 -4.68 1.512 -4.68C1.536 -4.728 1.584 -4.752 1.632 -4.788L1.884 -4.98C1.92 -5.004 2.1 -5.148 2.16 -5.148C2.232 -5.148 2.328 -5.052 2.352 -5.028L2.664 -4.812C2.748 -4.74 2.856 -4.716 2.856 -4.56C2.856 -4.512 2.844 -4.452 2.844 -4.416V-1.452C2.844 -1.404 2.844 -1.368 2.844 -1.32C2.844 -1.14 2.832 -0.972 2.664 -0.852C2.616 -0.816 2.568 -0.804 2.52 -0.78C2.64 -0.684 2.784 -0.612 2.916 -0.528L3.636 -0.084C3.684 -0.048 3.96 0.132 4.02 0.132C4.104 0.132 4.176 0.012 4.212 -0.024C4.368 -0.18 4.512 -0.348 4.668 -0.504C5.328 -1.224 6 -2.148 6 -3.24C6 -3.432 5.988 -3.636 5.952 -3.828C5.772 -4.608 5.22 -5.196 4.74 -5.808H4.728C4.368 -5.556 4.044 -5.244 3.66 -5.016L3.552 -5.064C3.228 -5.304 2.88 -5.532 2.58 -5.808C2.316 -5.628 2.064 -5.424 1.812 -5.232C1.704 -5.16 1.548 -4.98 1.404 -4.98C1.08 -4.98 0.84 -5.268 0.84 -5.52C0.84 -5.628 0.888 -5.7 0.984 -5.76C1.044 -5.784 1.164 -5.832 1.164 -5.916C1.164 -5.988 1.08 -6.048 1.044 -6.096C0.924 -6.036 0.816 -5.964 0.696 -5.904C0.48 -5.796 0.204 -5.688 0.204 -5.376C0.204 -5.04 0.42 -4.752 0.684 -4.692ZM4.176 -5.088C4.692 -4.536 5.328 -3.72 5.388 -2.88C5.388 -2.88 5.376 -2.34 5.364 -2.34C5.232 -1.74 5.028 -1.344 4.692 -0.912C4.644 -0.852 4.536 -0.696 4.452 -0.696C4.38 -0.708 4.32 -0.768 4.26 -0.804L3.852 -1.056C3.756 -1.116 3.648 -1.14 3.648 -1.296C3.648 -1.356 3.66 -1.416 3.66 -1.464V-4.392C3.66 -4.44 3.66 -4.476 3.66 -4.524C3.66 -4.704 3.708 -4.716 3.828 -4.812C3.948 -4.896 4.08 -4.98 4.176 -5.088Z"/>
- <path id="g25" d="M0.732 -3.324C0.756 -3.252 0.804 -3.084 0.912 -3.084C0.936 -3.084 0.984 -3.096 1.008 -3.108C1.644 -3.228 2.124 -3.792 2.124 -4.44C2.124 -5.016 1.668 -5.352 1.308 -5.556C0.948 -5.772 0.468 -6.012 0.468 -6.492C0.468 -6.948 0.588 -7.632 1.188 -7.632C1.26 -7.632 1.344 -7.62 1.416 -7.608C1.884 -7.488 2.232 -7.092 2.4 -6.66C2.544 -6.288 2.58 -5.892 2.58 -5.496C2.58 -5.292 2.568 -5.076 2.568 -4.872V-1.956L1.956 -2.208C1.788 -1.668 1.644 -1.224 1.332 -0.78C1.296 -0.744 1.224 -0.648 1.224 -0.588S1.356 -0.456 1.416 -0.42C1.608 -0.672 1.884 -0.912 2.208 -0.912C2.22 -0.912 2.22 -0.912 2.232 -0.912C2.376 -0.912 2.58 -0.864 2.58 -0.672C2.58 -0.624 2.568 -0.564 2.568 -0.528C2.568 0.348 2.664 0.912 2.784 1.764C2.82 1.764 2.88 1.776 2.928 1.776C3.084 1.776 3.084 1.704 3.144 1.584C3.36 1.056 3.564 0.372 3.588 -0.252C3.888 -0.084 4.2 0.072 4.512 0.228C4.596 0.084 4.668 -0.06 4.74 -0.216C4.788 -0.324 4.836 -0.456 4.908 -0.552C4.968 -0.624 5.052 -0.672 5.124 -0.732C5.256 -0.84 5.4 -0.96 5.52 -1.092C6.072 -1.704 6.564 -2.484 6.564 -3.42C6.564 -4.728 5.76 -5.46 5.76 -6.756C5.76 -7.008 5.784 -7.272 5.844 -7.524C5.892 -7.728 5.976 -7.92 6.036 -8.124C5.22 -8.1 4.416 -7.692 3.984 -7.26C3.804 -7.08 3.612 -6.852 3.528 -6.612C3.468 -6.792 3.42 -6.984 3.348 -7.164C3.072 -7.824 2.544 -8.46 1.596 -8.46C1.488 -8.46 1.38 -8.436 1.284 -8.4C0.504 -8.148 0.192 -7.224 0.192 -6.42C0.192 -5.892 0.396 -5.22 0.636 -4.836C0.684 -4.752 0.72 -4.68 0.852 -4.68C0.9 -4.68 0.96 -4.68 0.996 -4.68C1.044 -4.68 1.08 -4.668 1.128 -4.668C1.392 -4.656 1.788 -4.572 1.788 -4.224C1.788 -3.66 1.272 -3.312 0.852 -3.312C0.804 -3.312 0.768 -3.324 0.732 -3.324ZM4.836 -7.536C4.8 -7.152 4.752 -6.768 4.752 -6.372C4.752 -5.28 5.268 -4.632 5.556 -3.768C5.64 -3.492 5.712 -3.192 5.712 -2.904C5.712 -2.88 5.712 -2.868 5.712 -2.844C5.712 -2.136 5.376 -1.416 4.956 -0.996C4.908 -0.948 4.848 -0.876 4.788 -0.852C4.764 -0.852 4.68 -0.852 4.68 -0.888C4.62 -0.912 4.56 -0.948 4.5 -0.984L3.912 -1.308C3.78 -1.38 3.612 -1.392 3.612 -1.584V-5.58C3.612 -5.772 3.612 -5.964 3.648 -6.156C3.78 -6.768 4.272 -7.284 4.836 -7.536Z"/>
- <path id="g26" d="M0.7344 -8.6688L0.216 -9.3744C0.144 -9.3312 0.0144 -9.2592 0.0144 -9.1584C0.0144 -9.072 0.1152 -9 0.144 -8.9568C0.3744 -8.5824 0.432 -8.1936 0.432 -7.6032V-7.3872V-1.8576V-1.7568C0.432 -1.6128 0.3168 -1.5408 0.2304 -1.4688L-0.2016 -1.1088L0.216 -0.5904L0.9648 0.3024H0.9792L1.8864 -0.4608L1.3824 -1.0944H1.6416V-7.8768V-8.1072C1.6416 -8.1936 1.6416 -8.2656 1.656 -8.3376C1.7136 -8.8272 2.1456 -9.1728 2.6928 -9.216V-9.432C2.1888 -9.432 1.6992 -9.3024 1.2672 -9.0432C1.08 -8.9424 0.9216 -8.784 0.7344 -8.6688Z"/>
- <path id="g27" d="M0.7632 -9.072L0.4176 -8.6544C0.1728 -8.2944 -0.0144 -7.848 -0.0144 -7.4016C-0.0144 -7.2144 0.0144 -7.0128 0.1152 -6.8256C0.288 -6.4656 0.7056 -6.2352 0.7776 -5.8176V-2.1312C0.6768 -2.0736 0.6192 -1.9296 0.5616 -1.8288C0.432 -1.584 0.2736 -1.3392 0.144 -1.0944C0.3024 -0.9936 2.448 0.2736 2.5344 0.2736H2.5632C2.664 0.2736 2.952 0.072 2.9664 0.0576L3.8592 -0.4464C3.9456 -0.4896 4.2048 -0.6768 4.3056 -0.6768C4.3632 -0.6768 4.6944 -0.432 4.6944 -0.432L5.3568 0.0288C5.4288 0.0864 5.6448 0.288 5.7456 0.288C5.8032 0.288 5.8464 0.2448 5.8896 0.216C6.0048 0.1584 7.272 -0.576 7.272 -0.576C7.3584 -0.6336 7.4304 -0.6624 7.4304 -0.8208C7.4304 -0.864 7.416 -0.9216 7.416 -0.9648C7.1712 -0.8496 6.8976 -0.648 6.6096 -0.648C6.3936 -0.648 6.0912 -0.9504 6.0192 -0.9936L5.544 -1.3248C5.4288 -1.3968 5.2704 -1.4544 5.2704 -1.656C5.2704 -1.7136 5.2848 -1.7712 5.2848 -1.8144V-2.3616V-2.5056C5.2848 -2.6784 5.328 -2.7504 5.4288 -2.8512L5.7024 -3.1824L6.768 -4.4352L7.4736 -5.256C7.5168 -5.3136 7.704 -5.5008 7.704 -5.5728C7.704 -5.6304 7.6464 -5.6736 7.6032 -5.7168L6.192 -7.128H6.1776C5.8176 -6.7824 5.4 -6.48 4.968 -6.2208C4.896 -6.1632 4.6224 -5.9904 4.5216 -5.9904C4.392 -5.9904 4.2768 -6.12 4.2048 -6.1632C3.9888 -6.3072 3.7728 -6.4944 3.5424 -6.6096C3.6288 -6.696 3.7152 -6.7968 3.7872 -6.8976L3.6144 -7.128C3.0528 -6.6384 2.5344 -6.12 1.9872 -5.616C1.9872 -6.2064 1.8432 -6.5376 1.5696 -6.9408C1.2816 -7.344 0.7776 -7.6464 0.7776 -8.28C0.7776 -8.5248 0.8784 -8.712 1.008 -8.8416L0.7632 -9.072ZM5.2992 -3.1824H5.2848V-5.4288C5.2848 -5.544 5.2704 -5.6736 5.2704 -5.7888C5.2704 -5.9472 5.2848 -6.1056 5.4288 -6.1056H5.4432C5.4864 -6.1056 5.5152 -6.0768 5.544 -6.048L6.3648 -5.2272C6.48 -5.112 6.5952 -4.9824 6.7248 -4.8816C6.2496 -4.3056 5.7456 -3.7728 5.2992 -3.1824ZM1.9872 -1.5984V-1.6992V-4.8816V-5.0112C1.9872 -5.184 2.0448 -5.2416 2.16 -5.328C2.232 -5.3856 2.5488 -5.7312 2.6352 -5.7456C2.7216 -5.7456 2.808 -5.6592 2.8656 -5.616L3.2832 -5.328C3.4128 -5.2272 3.5424 -5.2128 3.5424 -4.9824V-4.8672V-0.936V-0.792C3.5424 -0.7056 3.528 -0.6048 3.4416 -0.6048C3.3408 -0.6048 3.2112 -0.72 3.1392 -0.7632L2.3328 -1.224L2.1168 -1.3536C2.016 -1.3824 1.9872 -1.4688 1.9872 -1.5984Z"/>
- <path id="g28" d="M0.7632 -9.072L0.4176 -8.6544C0.1728 -8.2944 -0.0144 -7.848 -0.0144 -7.4016C-0.0144 -7.2144 0.0144 -7.0128 0.1152 -6.8256C0.288 -6.4656 0.7056 -6.2352 0.7776 -5.8176V-2.1312C0.6768 -2.0736 0.6192 -1.9296 0.5616 -1.8288C0.432 -1.584 0.2736 -1.3392 0.144 -1.0944L1.872 -0.0864C2.088 0.0432 2.2896 0.1872 2.5488 0.2736L2.7648 0.1872L4.9104 -1.0512L4.7664 -1.3536C4.7232 -2.6496 4.7664 -4.0464 4.752 -5.3712L4.9104 -5.688C4.4496 -5.9904 4.0176 -6.3216 3.5424 -6.6096C3.6288 -6.696 3.7152 -6.7968 3.7872 -6.8976L3.6144 -7.128C3.0528 -6.6384 2.5344 -6.12 1.9872 -5.616C1.9872 -6.2064 1.8432 -6.5376 1.5696 -6.9408C1.2816 -7.344 0.7776 -7.6464 0.7776 -8.28C0.7776 -8.5248 0.8784 -8.712 1.008 -8.8416L0.7632 -9.072ZM1.9872 -1.5984V-1.6992V-4.8816V-5.0112C1.9872 -5.184 2.0448 -5.2416 2.16 -5.328C2.232 -5.3856 2.5488 -5.7312 2.6352 -5.7456C2.7216 -5.7456 2.808 -5.6592 2.8656 -5.616L3.2832 -5.328C3.4128 -5.2272 3.5424 -5.2128 3.5424 -4.9824V-4.8672V-0.936V-0.792C3.5424 -0.7056 3.528 -0.6048 3.4416 -0.6048C3.3408 -0.6048 3.2112 -0.72 3.1392 -0.7632L2.3328 -1.224L2.1168 -1.3536C2.016 -1.3824 1.9872 -1.4688 1.9872 -1.5984Z"/>
- <path id="g29" d="M0.768 -6.804H0.756C0.648 -6.936 0.528 -7.068 0.408 -7.2L0.36 -6.984L0.48 -6.744L0.564 -6.36C0.564 -5.952 0.564 -5.544 0.552 -5.16C0.444 -4.944 0.324 -4.74 0.204 -4.536H0.564V-1.692C0.564 -1.596 0.564 -1.5 0.564 -1.404C0.564 -1.032 0.492 -0.744 0.204 -0.564L0.384 -0.408C0.636 -0.312 0.864 -0.192 1.08 -0.06C1.176 0.012 1.26 0.084 1.38 0.132L1.476 0.048L2.364 -0.936V-0.948L2.16 -1.092C2.124 -1.044 2.016 -0.876 1.932 -0.876C1.884 -0.876 1.836 -0.912 1.788 -0.936L1.5 -1.104C1.392 -1.164 1.368 -1.2 1.368 -1.368C1.368 -1.452 1.368 -1.536 1.368 -1.62V-4.536H2.604V-5.148H2.448C2.604 -5.532 2.784 -6.108 2.784 -6.552C2.784 -6.66 2.76 -6.768 2.688 -6.864C2.556 -7.032 2.34 -7.032 2.148 -7.068L1.368 -6.228C1.368 -6.348 1.356 -6.468 1.356 -6.6C1.356 -7.092 1.584 -7.452 2.16 -7.452C2.208 -7.452 2.268 -7.452 2.328 -7.452V-7.692C2.256 -7.692 2.196 -7.692 2.124 -7.692C2.028 -7.692 1.932 -7.692 1.836 -7.668C1.488 -7.56 1.224 -7.296 0.984 -7.032C0.912 -6.96 0.828 -6.888 0.768 -6.804ZM1.368 -5.148V-5.592C1.368 -5.64 1.368 -5.688 1.368 -5.748C1.368 -5.928 1.476 -5.976 1.572 -6.084L1.74 -6.252C1.764 -6.288 1.824 -6.36 1.896 -6.36C1.956 -6.36 2.04 -6.336 2.088 -6.3C2.256 -6.216 2.376 -6.108 2.376 -5.856C2.376 -5.676 2.292 -5.412 2.244 -5.256C2.22 -5.184 2.184 -5.136 2.076 -5.136C2.04 -5.136 1.992 -5.148 1.956 -5.148H1.368Z"/>
- <path id="g30" d="M0.768 -6.804H0.756C0.66 -6.936 0.54 -7.104 0.408 -7.2C0.396 -7.128 0.36 -7.056 0.36 -6.984C0.372 -6.936 0.408 -6.888 0.432 -6.84C0.54 -6.684 0.564 -6.444 0.564 -6.204C0.564 -6.144 0.564 -6.072 0.564 -6.012V-1.536C0.564 -1.488 0.564 -1.428 0.564 -1.38C0.564 -1.02 0.492 -0.744 0.204 -0.564C0.252 -0.516 0.312 -0.444 0.384 -0.42C0.42 -0.42 0.564 -0.42 0.564 -0.444C0.624 -0.456 0.672 -0.456 0.72 -0.456C1.02 -0.456 1.164 -0.36 1.404 -0.24C1.368 -0.204 1.212 -0.06 1.212 0C1.212 0 1.212 0 1.212 0.012C1.212 0.072 1.308 0.132 1.368 0.132C1.44 0.132 1.5 0.012 1.524 -0.012L1.74 -0.252C1.992 -0.528 2.232 -0.816 2.496 -1.08V-1.092L2.292 -1.236L1.956 -0.84C1.824 -0.924 1.692 -0.996 1.56 -1.068C1.452 -1.128 1.368 -1.152 1.368 -1.308C1.368 -1.344 1.368 -1.392 1.368 -1.428V-3.876C1.368 -3.924 1.368 -3.984 1.368 -4.032C1.368 -4.188 1.416 -4.224 1.512 -4.296L1.86 -4.596C1.908 -4.632 1.944 -4.668 1.98 -4.668C2.004 -4.668 2.028 -4.656 2.064 -4.632C2.256 -4.44 2.412 -4.188 2.544 -3.96C2.88 -3.372 3.048 -2.7 3.048 -2.028C3.048 -1.788 3.024 -1.548 2.988 -1.32C2.808 -0.396 2.376 0.396 1.896 1.056C1.824 1.164 1.74 1.26 1.668 1.368C1.632 1.404 1.572 1.452 1.572 1.512C1.572 1.596 1.752 1.692 1.776 1.704C2.712 0.492 3.864 -0.744 3.864 -2.808C3.864 -3.684 3.468 -4.548 2.988 -5.112C2.964 -5.136 2.808 -5.328 2.796 -5.352C2.796 -5.388 2.832 -5.424 2.856 -5.448S3.048 -5.604 3.048 -5.628C3.012 -5.676 2.952 -5.772 2.88 -5.772C2.88 -5.772 2.868 -5.772 2.868 -5.772C2.808 -5.76 2.424 -5.412 2.424 -5.412L1.368 -4.5V-6.588C1.368 -6.708 1.368 -6.828 1.392 -6.948C1.464 -7.26 1.752 -7.488 2.076 -7.5V-7.74C1.632 -7.74 1.32 -7.404 1.044 -7.104C0.948 -7.008 0.852 -6.912 0.768 -6.804Z"/>
- <path id="g31" d="M0.768 -6.804H0.756L0.42 -7.212H0.408C0.396 -7.152 0.36 -7.08 0.36 -7.008S0.42 -6.864 0.444 -6.816C0.516 -6.672 0.552 -6.516 0.552 -6.312C0.552 -6.216 0.552 -6.12 0.552 -6.036V-1.512C0.552 -1.452 0.552 -1.404 0.552 -1.344C0.552 -1.008 0.492 -0.732 0.204 -0.564C0.384 -0.372 0.636 -0.312 0.864 -0.192C1.044 -0.084 1.2 0.06 1.38 0.156C1.596 -0.108 1.836 -0.348 2.052 -0.6C2.088 -0.636 2.268 -0.804 2.268 -0.876C2.268 -0.936 2.148 -0.996 2.124 -0.996C2.04 -0.996 2.004 -0.876 1.92 -0.876C1.872 -0.876 1.404 -1.14 1.368 -1.224C1.368 -1.224 1.368 -5.64 1.368 -5.64C1.368 -5.748 1.356 -6.864 1.38 -6.864C1.428 -7.26 1.848 -7.452 2.208 -7.452V-7.692C1.752 -7.692 1.368 -7.44 1.056 -7.128C0.948 -7.032 0.852 -6.924 0.768 -6.804Z"/>
- <path id="g32" d="M0.7776 -9.072C0.36 -8.6544 -0.0288 -8.0208 -0.0288 -7.4016C-0.0288 -7.2 0.0144 -6.9984 0.1152 -6.8112C0.3024 -6.4656 0.7056 -6.2496 0.7776 -5.832V-2.1312C0.5328 -1.8144 0.3456 -1.44 0.1584 -1.08L1.8864 -0.0864C2.1024 0.0432 2.304 0.1872 2.5632 0.2736C2.9232 0.1008 3.2688 -0.1008 3.6144 -0.3024C3.7296 -0.36 3.888 -0.5328 4.0752 -0.432C4.4784 -0.1872 4.8816 0.0576 5.3136 0.2736L5.5296 0.1872L7.704 -1.0656L7.56 -1.368C7.5168 -2.6784 7.5456 -4.0896 7.56 -5.3712L7.704 -5.688L6.4944 -6.5232C6.3504 -6.6096 6.2208 -6.7248 6.048 -6.7824C5.6304 -6.4512 5.2992 -6.048 4.8672 -5.7456C4.4064 -6.0048 4.0176 -6.3504 3.5568 -6.6096C3.5856 -6.6528 3.8016 -6.8688 3.8016 -6.8976C3.8016 -6.984 3.6864 -7.0704 3.6288 -7.128H3.6144L1.9872 -5.616V-5.9472C1.9296 -6.2928 1.7856 -6.624 1.584 -6.912C1.3104 -7.3152 0.7776 -7.6464 0.7776 -8.2656C0.7776 -8.3808 0.8064 -8.496 0.8496 -8.5968C0.8784 -8.6832 1.008 -8.856 1.008 -8.856L0.7776 -9.072ZM3.4272 -1.9728C3.2544 -1.6848 3.0816 -1.3968 2.9376 -1.08L3.4416 -0.8064C3.4416 -1.1952 3.4416 -1.5984 3.4272 -1.9728ZM2.6352 -5.7888C2.8368 -5.6304 3.0528 -5.5008 3.2688 -5.3568C3.4128 -5.2416 3.5568 -5.2128 3.5568 -4.9824V-4.8672V-0.9504V-0.792C3.5568 -0.7056 3.5424 -0.6048 3.4416 -0.6048C3.3552 -0.6048 3.24 -0.6912 3.1824 -0.7344C2.9808 -0.8496 2.304 -1.2384 2.1312 -1.3536C2.016 -1.4112 1.9872 -1.4544 1.9872 -1.6128V-1.7424V-4.8384V-4.9968C1.9872 -5.0544 1.9872 -5.112 2.0016 -5.1552C2.0304 -5.2416 2.5056 -5.6304 2.6352 -5.7888ZM5.4144 -5.7888C5.616 -5.6304 5.832 -5.5008 6.048 -5.3568C6.192 -5.2416 6.336 -5.2128 6.336 -4.9824V-4.8672V-0.9504V-0.792C6.336 -0.7056 6.3216 -0.6048 6.2208 -0.6048C6.1344 -0.6048 6.0192 -0.6912 5.9616 -0.7344C5.76 -0.8496 5.0832 -1.2384 4.9104 -1.3536C4.7952 -1.4112 4.7664 -1.4544 4.7664 -1.6128V-1.7424V-4.8384V-4.9968C4.7664 -5.0544 4.7664 -5.112 4.7808 -5.1552C4.8096 -5.2416 5.2848 -5.6304 5.4144 -5.7888Z"/>
- <path id="g33" d="M0.792 -4.284L1.5 -5.136C1.128 -5.436 0.912 -5.892 0.9 -6.372C0.9 -6.9 1.188 -7.5 1.716 -7.692C1.836 -7.728 1.956 -7.74 2.088 -7.74C2.412 -7.74 2.712 -7.56 2.964 -7.368C3.48 -6.936 3.996 -6.084 4.848 -6.084C5.52 -6.084 5.94 -6.696 5.94 -7.248C5.94 -7.416 5.868 -7.56 5.796 -7.716L5.556 -7.608C5.604 -7.488 5.664 -7.38 5.664 -7.26C5.664 -6.996 5.484 -6.792 5.22 -6.792C4.836 -6.792 4.596 -7.056 4.428 -7.26C4.068 -7.716 3.816 -8.46 3.036 -8.46C2.94 -8.46 2.856 -8.46 2.772 -8.448C1.656 -8.316 0.624 -7.56 0.312 -6.456C0.252 -6.264 0.204 -6.036 0.204 -5.832C0.204 -5.484 0.324 -5.28 0.456 -5.016C0.504 -4.92 0.552 -4.824 0.576 -4.716C0.6 -4.644 0.576 -4.548 0.6 -4.476C0.636 -4.392 0.72 -4.32 0.792 -4.284ZM0.744 1.536C0.804 1.512 0.96 1.476 0.96 1.392C0.936 1.248 0.864 1.092 0.864 0.936C0.864 0.696 1.068 0.588 1.32 0.588S1.776 0.708 1.968 0.864C2.292 1.14 2.556 1.548 2.988 1.656C3.072 1.668 3.144 1.668 3.228 1.668C3.984 1.668 4.572 1.02 4.92 0.552C5.376 -0.036 5.736 -0.78 5.736 -1.596C5.736 -1.776 5.724 -1.956 5.664 -2.136C5.46 -2.832 4.92 -3.36 4.608 -3.996C4.488 -4.248 4.38 -4.536 4.38 -4.824C4.38 -5.028 4.428 -5.22 4.524 -5.352C4.62 -5.448 4.68 -5.532 4.848 -5.532C4.992 -5.532 5.136 -5.436 5.244 -5.328C5.412 -5.136 5.472 -4.848 5.472 -4.596H5.736C5.736 -5.148 5.46 -5.796 4.788 -5.796C4.728 -5.796 4.656 -5.796 4.584 -5.784C3.96 -5.688 3.324 -5.22 3.324 -4.44C3.324 -4.08 3.444 -3.72 3.612 -3.408C4.104 -2.532 5.052 -1.836 5.052 -0.66C5.052 0.036 4.68 0.804 3.828 0.804C3.768 0.804 3.72 0.792 3.672 0.792C2.952 0.684 2.616 -0.156 1.896 -0.264C1.848 -0.264 1.8 -0.276 1.752 -0.276C1.056 -0.276 0.6 0.252 0.6 0.864C0.6 1.092 0.66 1.332 0.744 1.536Z"/>
- <path id="g34" d="M0.864 -5.976C0.66 -5.664 0.36 -5.316 0.36 -4.872C0.36 -4.788 0.372 -4.716 0.408 -4.644C0.564 -4.38 0.924 -4.26 0.972 -3.936C0.984 -3.828 0.984 -3.732 0.984 -3.624V-1.584L0.708 -1.68L0.192 -0.852C0.468 -0.744 0.756 -0.648 1.02 -0.528L1.056 -0.312C1.116 0.552 1.188 1.404 1.26 2.256H1.512C1.584 1.404 1.644 0.552 1.716 -0.3L2.928 0.132C3 0 3.084 -0.12 3.168 -0.252C3.648 -1.02 4.368 -2.016 4.368 -3.072C4.368 -4.056 3.876 -4.824 3.456 -5.352C3.42 -5.4 3.288 -5.604 3.204 -5.604C3.156 -5.604 3.108 -5.568 3.072 -5.544L2.808 -5.352C2.46 -5.124 2.148 -4.86 1.788 -4.644C1.776 -4.764 1.656 -4.812 1.56 -4.872C1.356 -4.98 1.104 -5.04 0.96 -5.22C0.9 -5.292 0.852 -5.376 0.852 -5.472C0.852 -5.64 1.02 -5.784 1.092 -5.868L0.864 -5.976ZM3.216 -0.768C2.76 -0.96 2.244 -1.092 1.812 -1.308L1.788 -1.512C1.8 -2.472 1.752 -3.456 1.812 -4.332C2.04 -4.524 2.304 -4.692 2.556 -4.86C2.64 -4.704 2.772 -4.572 2.88 -4.44C3.288 -3.912 3.708 -3.192 3.708 -2.376C3.708 -1.872 3.564 -1.452 3.384 -1.068C3.324 -0.972 3.264 -0.876 3.216 -0.768Z"/>
- <path id="g35" d="M0.888 -6.396L1.092 -6.264C1.38 -6.708 1.908 -7.008 2.448 -7.008C2.568 -7.008 2.7 -6.996 2.82 -6.96C3.228 -6.84 3.636 -6.516 3.636 -6.024C3.636 -5.916 3.6 -5.808 3.552 -5.724C3.408 -5.472 3.12 -5.388 2.844 -5.388C2.436 -5.388 1.98 -5.568 1.74 -5.712C1.704 -5.736 1.656 -5.772 1.608 -5.772C1.548 -5.772 1.512 -5.688 1.476 -5.652C1.056 -5.064 0.612 -4.488 0.204 -3.888C0.648 -3.564 1.176 -3.024 1.176 -2.304C1.176 -1.92 0.996 -1.716 0.816 -1.476C0.612 -1.188 0.384 -0.9 0.204 -0.588C0.288 -0.516 0.36 -0.456 0.504 -0.456C0.552 -0.456 0.588 -0.456 0.624 -0.456C1.26 -0.456 1.8 -0.18 2.184 0.048C2.232 0.084 2.28 0.132 2.34 0.132C2.34 0.132 2.352 0.132 2.352 0.132C2.4 0.12 2.592 -0.06 2.592 -0.06L3.144 -0.564C3.624 -0.996 4.176 -1.56 4.176 -2.256C4.176 -2.868 3.792 -3.228 3.456 -3.492C3.336 -3.588 2.952 -3.864 2.844 -3.924C3.096 -4.26 3.324 -4.608 3.564 -4.944C3.72 -5.16 3.936 -5.388 3.996 -5.652C4.008 -5.652 4.02 -5.832 4.02 -5.832S4.008 -6.084 3.984 -6.084C3.96 -6.228 3.9 -6.36 3.828 -6.492C3.6 -6.948 2.988 -7.248 2.436 -7.248C1.8 -7.248 1.152 -6.876 0.888 -6.396ZM1.008 -4.584C1.104 -4.716 1.2 -4.86 1.32 -4.98C1.872 -4.824 2.352 -4.584 2.88 -4.404L1.908 -3.024C1.884 -3.156 1.86 -3.3 1.824 -3.432C1.716 -3.744 1.548 -4.032 1.344 -4.272C1.236 -4.38 1.14 -4.512 1.008 -4.584ZM0.912 -1.176L2.256 -3.096C2.364 -3.036 2.46 -2.964 2.568 -2.892C2.976 -2.64 3.492 -2.304 3.492 -1.764C3.492 -1.452 3.348 -1.2 3.216 -1.032C3.168 -0.972 2.868 -0.6 2.784 -0.6C2.736 -0.6 2.676 -0.66 2.628 -0.684C2.088 -0.984 1.74 -1.116 0.912 -1.176Z"/>
- <path id="g36" d="M0.984 -6.06C1.008 -6.06 1.044 -6.06 1.08 -6.06C1.26 -6.06 1.308 -6.132 1.38 -6.252C1.5 -6.444 1.608 -6.672 1.608 -6.936C1.608 -7.116 1.476 -7.2 1.296 -7.2C1.056 -7.2 0.96 -7.008 0.96 -6.756C0.96 -6.708 0.96 -6.648 0.96 -6.6C0.96 -6.42 0.984 -6.24 0.984 -6.06ZM0.204 -4.704V-4.692L0.372 -4.536H0.384L0.636 -4.8V-1.548C0.636 -1.476 0.636 -1.416 0.636 -1.344C0.636 -1.236 0.636 -1.128 0.66 -1.032C0.744 -0.564 0.996 -0.156 1.356 0.156H1.368C1.632 -0.168 1.884 -0.492 2.124 -0.84C2.076 -0.876 2.004 -0.948 1.944 -0.948C1.896 -0.948 1.788 -0.9 1.788 -0.9C1.668 -0.9 1.56 -1.008 1.5 -1.104C1.44 -1.236 1.44 -1.392 1.44 -1.536V-3.696C1.44 -3.828 1.44 -3.96 1.44 -4.092C1.44 -4.62 1.56 -4.908 1.848 -5.196C1.644 -5.388 1.464 -5.604 1.236 -5.772L1.128 -5.712C0.828 -5.364 0.516 -5.04 0.204 -4.704Z"/>
- <path id="g37" d="M1.044 -3.696L1.164 -3.456C1.44 -3.54 1.716 -3.672 1.968 -3.816C2.16 -3.912 2.412 -4.104 2.412 -4.368C2.412 -4.488 2.376 -4.596 2.34 -4.728C2.256 -5.052 2.22 -5.448 1.98 -5.7C1.872 -5.796 1.728 -5.82 1.596 -5.82C1.512 -5.82 1.416 -5.808 1.332 -5.808C1.032 -5.808 0.792 -5.904 0.792 -6.204C0.792 -6.24 0.804 -6.288 0.804 -6.324C0.876 -6.912 1.392 -7.416 2.088 -7.416C2.628 -7.416 2.988 -7.104 3.252 -6.744C3.6 -6.24 3.72 -5.592 3.768 -4.992C3.768 -4.956 3.768 -4.908 3.768 -4.872C3.768 -4.788 3.768 -4.704 3.768 -4.62C3.768 -4.512 3.78 -4.392 3.78 -4.272C3.78 -4.02 3.756 -3.744 3.636 -3.516C3.42 -3.096 2.928 -2.892 2.424 -2.844C2.256 -2.832 2.088 -2.844 1.92 -2.832C1.152 -2.76 0.204 -2.316 0.204 -1.392C0.204 -1.104 0.312 -0.804 0.576 -0.804C0.792 -0.804 0.876 -1.02 0.876 -1.188C0.876 -1.332 0.828 -1.488 0.768 -1.572C0.756 -1.596 0.612 -1.776 0.612 -1.8C0.624 -1.836 0.648 -1.872 0.672 -1.896C0.828 -2.052 1.008 -2.172 1.296 -2.172C1.56 -2.172 1.848 -2.064 2.064 -1.92C2.724 -1.5 3.072 -0.756 3.66 -0.264C3.876 -0.084 4.104 0.06 4.38 0.12C4.392 0.12 4.668 0.18 4.668 0.156C4.8 0.144 4.92 0.06 5.04 0L5.772 -0.324C6.216 -0.516 6.684 -0.684 7.092 -0.936C7.848 -1.392 8.544 -2.184 8.544 -3.336C8.544 -4.38 7.968 -5.448 6.924 -5.748C6.744 -5.808 6.564 -5.832 6.372 -5.832V-5.844L7.644 -6.48L7.572 -6.648C7.536 -6.636 7.5 -6.624 7.464 -6.624C7.452 -6.624 7.452 -6.624 7.44 -6.624C7.296 -6.624 7.188 -6.768 7.116 -6.888C7.02 -7.044 6.996 -7.224 6.948 -7.404C6.792 -7.86 6.492 -8.292 5.916 -8.292C5.184 -8.292 4.764 -7.668 4.536 -7.164C4.488 -7.032 4.416 -6.9 4.392 -6.768C4.32 -6.936 4.248 -7.116 4.152 -7.284C3.816 -7.896 3.24 -8.46 2.316 -8.46C2.088 -8.46 1.944 -8.412 1.752 -8.352C0.936 -8.028 0.528 -7.056 0.528 -6.18C0.528 -5.688 0.66 -5.076 1.02 -4.896C1.224 -4.8 1.464 -4.824 1.68 -4.8C1.908 -4.764 2.16 -4.656 2.16 -4.368C2.16 -4.224 2.064 -4.116 1.944 -4.044C1.68 -3.876 1.344 -3.804 1.044 -3.696ZM6.168 -5.724L4.704 -4.992V-4.98C4.884 -4.98 5.076 -4.968 5.256 -4.944C6.324 -4.812 7.572 -4.236 7.692 -2.952C7.692 -2.808 7.692 -2.664 7.656 -2.52C7.548 -1.968 7.164 -1.536 6.78 -1.152C6.528 -0.9 6.216 -0.576 5.784 -0.576C5.736 -0.576 5.688 -0.588 5.64 -0.588C4.8 -0.696 4.248 -1.452 3.696 -2.004C3.564 -2.136 3.42 -2.268 3.276 -2.388C3.18 -2.46 3.072 -2.52 2.988 -2.604C3.216 -2.604 3.468 -2.664 3.684 -2.736C4.32 -2.952 4.704 -3.408 4.704 -4.26C4.704 -4.416 4.692 -4.572 4.692 -4.728C4.668 -5.256 4.68 -5.652 4.572 -6.144C4.548 -6.216 4.524 -6.3 4.524 -6.384C4.524 -6.396 4.524 -6.408 4.524 -6.42C4.524 -6.492 4.548 -6.552 4.572 -6.624C4.668 -6.96 4.884 -7.356 5.316 -7.356C5.472 -7.356 5.616 -7.296 5.724 -7.164C5.868 -6.996 5.904 -6.768 5.952 -6.564C6 -6.276 6.048 -6 6.168 -5.724Z"/>
- <path id="g38" d="M1.044 -5.808C0.768 -5.46 0.48 -5.124 0.204 -4.764C0.264 -4.728 0.324 -4.692 0.384 -4.644C0.648 -4.392 0.648 -4.068 0.648 -3.732V-1.488C0.648 -1.08 0.612 -0.72 0.204 -0.564C0.252 -0.516 0.336 -0.42 0.408 -0.42C0.456 -0.42 0.516 -0.432 0.552 -0.444C0.648 -0.456 0.744 -0.468 0.84 -0.468C0.996 -0.444 1.128 -0.42 1.272 -0.36C1.344 -0.324 1.416 -0.276 1.488 -0.24C1.44 -0.192 1.296 -0.072 1.296 0C1.296 0.06 1.38 0.132 1.44 0.132C1.524 0.132 1.56 0.036 1.596 0L1.848 -0.276C2.136 -0.612 2.472 -0.924 2.736 -1.272C2.688 -1.308 2.616 -1.38 2.556 -1.38S2.436 -1.308 2.4 -1.26L2.16 -0.996C2.112 -0.948 2.076 -0.876 2.004 -0.876C1.956 -0.876 1.92 -0.912 1.884 -0.936C1.764 -1.008 1.608 -1.068 1.5 -1.152C1.452 -1.2 1.452 -1.248 1.452 -1.296C1.452 -1.32 1.452 -1.332 1.452 -1.356V-3.864C1.452 -3.888 1.452 -3.912 1.452 -3.948C1.452 -4.14 1.596 -4.176 1.716 -4.272C1.908 -4.428 2.136 -4.56 2.304 -4.74H2.316C2.412 -4.62 2.52 -4.512 2.616 -4.392C3.096 -3.828 3.456 -2.964 3.456 -2.04C3.456 -1.884 3.444 -1.728 3.42 -1.572C3.276 -0.588 2.7 0.264 2.184 0.936C2.1 1.032 1.764 1.452 1.716 1.536C1.776 1.572 1.86 1.68 1.932 1.68C1.98 1.68 2.028 1.596 2.064 1.56L2.364 1.2C2.76 0.72 3.156 0.216 3.48 -0.324C3.876 -0.984 4.272 -1.752 4.272 -2.712C4.272 -3.84 3.744 -4.728 3.108 -5.364C3.216 -5.448 3.348 -5.508 3.42 -5.628L3.3 -5.808L1.452 -4.38C1.452 -4.404 1.464 -4.92 1.452 -4.92C1.416 -5.244 1.284 -5.58 1.044 -5.808Z"/>
- <path id="g39" d="M1.068 -5.808L0.204 -4.764C0.42 -4.668 0.588 -4.476 0.648 -4.236C0.672 -4.104 0.672 -3.972 0.672 -3.84V-2.076C0.672 -1.896 0.684 -1.716 0.684 -1.524C0.684 -1.272 0.672 -0.972 0.552 -0.828C0.492 -0.744 0.396 -0.756 0.396 -0.6C0.396 -0.564 0.408 -0.504 0.408 -0.468C0.6 -0.408 0.72 -0.264 0.816 -0.096C0.888 0.024 0.888 0.168 1.08 0.168C1.116 0.168 1.164 0.156 1.2 0.156C1.272 -0.12 1.452 -0.384 1.74 -0.468V-0.72C1.488 -0.828 1.476 -1.056 1.476 -1.392V-4.212C1.476 -4.248 1.476 -4.296 1.476 -4.332C1.476 -4.488 1.548 -4.524 1.656 -4.596S1.86 -4.74 1.968 -4.824C2.016 -4.86 2.076 -4.92 2.148 -4.92S2.304 -4.8 2.352 -4.74C2.484 -4.572 2.628 -4.416 2.76 -4.248C2.868 -4.14 2.964 -4.08 2.964 -3.876C2.964 -3.804 2.952 -3.72 2.952 -3.636V-1.704C2.952 -1.572 2.964 -1.416 2.964 -1.284C2.964 -1.068 2.952 -0.924 2.832 -0.804C2.772 -0.744 2.688 -0.732 2.688 -0.6C2.688 -0.564 2.7 -0.504 2.7 -0.468C2.88 -0.408 3 -0.276 3.096 -0.12L3.192 0.048C3.216 0.132 3.264 0.168 3.372 0.168C3.408 0.168 3.456 0.156 3.492 0.156C3.552 -0.12 3.756 -0.384 4.032 -0.468V-0.72C3.78 -0.816 3.768 -1.08 3.768 -1.32C3.768 -1.356 3.768 -1.392 3.768 -1.428V-4.104C3.768 -4.164 3.768 -4.248 3.768 -4.308C3.768 -4.476 3.792 -4.476 3.912 -4.572L4.284 -4.836C4.32 -4.872 4.38 -4.92 4.44 -4.92S4.536 -4.86 4.572 -4.824C4.632 -4.74 4.98 -4.332 5.088 -4.212C5.136 -4.152 5.208 -4.092 5.232 -4.02C5.244 -4.02 5.244 -3.936 5.244 -3.936V-1.152C5.244 -1.104 5.244 -1.032 5.244 -0.984C5.244 -0.816 5.268 -0.756 5.328 -0.636C5.364 -0.564 5.556 -0.204 5.556 -0.144C5.556 -0.048 5.472 -0.012 5.472 0.072C5.472 0.144 5.58 0.204 5.64 0.228L6.48 -1.02V-1.032L6.276 -1.176L6.18 -1.008C6.096 -1.092 6.06 -1.128 6.06 -1.308C6.06 -1.344 6.06 -1.38 6.06 -1.416V-4.548C6.06 -4.572 6.06 -4.608 6.06 -4.632C6.06 -4.812 6.168 -4.86 6.324 -4.884V-5.052C6.012 -5.052 5.724 -5.196 5.508 -5.412C5.436 -5.496 5.364 -5.58 5.292 -5.676C5.268 -5.712 5.244 -5.772 5.196 -5.772C5.184 -5.772 5.184 -5.772 5.172 -5.772C5.136 -5.772 5.112 -5.748 5.076 -5.724C4.848 -5.556 3.828 -4.812 3.792 -4.812C3.78 -4.812 3.78 -4.812 3.768 -4.812C3.744 -4.812 3.732 -4.824 3.708 -4.848C3.516 -5.1 3.3 -5.328 3.108 -5.568C3.06 -5.616 2.976 -5.772 2.892 -5.772C2.856 -5.772 2.832 -5.748 2.796 -5.736C2.712 -5.664 2.616 -5.604 2.532 -5.544C2.184 -5.292 1.836 -5.016 1.476 -4.776C1.476 -5.148 1.344 -5.544 1.068 -5.808Z"/>
- <path id="g40" d="M1.1088 -8.6544H1.0944C1.0224 -8.7408 0.936 -8.7984 0.8496 -8.8704L0.4464 -9.1872C0.3888 -9.2448 0.3024 -9.3456 0.216 -9.3456H0.2016C0.1152 -9.3456 0.0288 -9.2304 -0.0288 -9.1584C0.4896 -8.8416 0.7776 -8.3376 0.7776 -7.5168V-7.0128V-2.1312C0.6768 -2.0736 0.6192 -1.9296 0.5616 -1.8288C0.432 -1.584 0.2736 -1.3392 0.144 -1.0944L1.872 -0.0864C2.088 0.0432 2.2896 0.1872 2.5488 0.2736L2.7648 0.1872L4.9104 -1.0512L4.7664 -1.3536C4.7232 -2.6496 4.7664 -4.0464 4.752 -5.3712L4.9104 -5.688L3.7296 -6.4944C3.5856 -6.5952 3.456 -6.7104 3.2688 -6.7824L3.1392 -6.696L1.9872 -5.616V-7.56V-8.0352C1.9872 -8.2656 2.0016 -8.496 2.0736 -8.7264C2.1744 -9.0432 2.448 -9.432 2.8512 -9.432C3.0384 -9.432 3.1392 -9.3168 3.1824 -9.1296C3.24 -9.1728 3.3408 -9.2448 3.3408 -9.3456C3.3408 -9.5328 3.0816 -9.6336 2.9088 -9.6336C2.4192 -9.6336 2.016 -9.2592 1.7424 -9.0864C1.5408 -8.9424 1.296 -8.8272 1.1088 -8.6544ZM1.9872 -1.5984V-1.6992V-4.8816V-5.0112C1.9872 -5.184 2.0448 -5.2416 2.16 -5.328C2.232 -5.3856 2.5488 -5.7312 2.6352 -5.7456C2.7216 -5.7456 2.808 -5.6592 2.8656 -5.616L3.2832 -5.328C3.4128 -5.2272 3.5424 -5.2128 3.5424 -4.9824V-4.8672V-0.936V-0.792C3.5424 -0.7056 3.528 -0.6048 3.4416 -0.6048C3.3408 -0.6048 3.2112 -0.72 3.1392 -0.7632L2.3328 -1.224L2.1168 -1.3536C2.016 -1.3824 1.9872 -1.4688 1.9872 -1.5984Z"/>
- <path id="g41" d="M1.1664 -8.4096C1.5408 -8.4096 1.9296 -8.3664 2.2464 -8.3088C3.168 -8.1216 4.2336 -7.6032 4.4208 -6.5808C4.4352 -6.5808 4.4352 -6.1056 4.4352 -6.1056C4.4208 -5.8752 4.3632 -5.6448 4.2768 -5.4288C3.8016 -4.248 2.592 -3.6 1.3968 -3.2544C1.1232 -3.1824 0.288 -2.9952 0.1584 -2.952L0.2736 -2.6208C0.4896 -2.6496 0.6912 -2.7072 0.9072 -2.7504L1.9872 -2.9952C2.7072 -3.1536 3.4272 -3.2832 4.0896 -3.6432C4.6944 -3.9888 5.1408 -4.4352 5.544 -5.0112C5.6016 -5.1408 5.6304 -5.256 5.8176 -5.256C5.8896 -5.256 6.5664 -5.1696 6.84 -5.1264C8.1648 -4.896 9.9216 -4.2912 9.9216 -2.5488C9.9216 -2.1168 9.8064 -1.6848 9.5616 -1.3248C9.2592 -0.864 8.6256 -0.432 7.8912 -0.432C7.4592 -0.432 7.0416 -0.576 6.6528 -0.7632C5.8464 -1.1376 5.1408 -1.7136 4.4352 -2.2464L3.816 -2.6928C3.7152 -2.7648 3.5712 -2.9232 3.4272 -2.9232C3.3552 -2.9232 0.4176 -2.2608 0.4176 -2.2608C0.432 -2.1888 0.4608 -2.1024 0.4896 -2.0304C0.5328 -1.8864 0.6624 -1.9296 0.8496 -1.9008C1.6992 -1.8432 2.3184 -1.5696 2.9808 -1.2528C4.2048 -0.7056 5.4432 0.1872 7.0992 0.1872C7.3296 0.1872 7.56 0.1584 7.776 0.1152C8.5824 -0.1008 9.2592 -0.432 9.8208 -0.9216C10.5264 -1.5264 11.1888 -2.376 11.1888 -3.6C11.1888 -4.9248 10.3536 -6.2784 9.0864 -6.408V-6.4224L9.5328 -6.696C9.8784 -7.0128 10.3392 -7.2432 10.6128 -7.632L10.4544 -7.8336L8.3088 -10.0512H8.2944L5.976 -7.8048C5.688 -8.6688 4.9968 -9.3312 4.1904 -9.7344C4.0608 -9.792 3.5712 -10.0368 3.4272 -10.0368C3.312 -10.0224 3.1824 -9.9216 3.096 -9.864L2.3616 -9.4032L1.5408 -8.8848L1.3104 -8.7408C1.224 -8.6832 1.1664 -8.6544 1.1664 -8.5104V-8.4096ZM9.072 -6.8256C8.9136 -6.7392 8.7552 -6.6384 8.5968 -6.552C7.8336 -6.1056 6.8832 -5.8176 5.8608 -5.6592C6.0048 -6.0192 6.0768 -6.3936 6.1056 -6.7824V-7.1568C6.0912 -7.2 6.0912 -7.2432 6.0912 -7.2864C6.0912 -7.488 6.264 -7.5744 6.3648 -7.6608C6.5088 -7.7904 6.6384 -7.9344 6.7824 -8.064C6.8544 -8.1216 7.2432 -8.568 7.344 -8.568C7.416 -8.568 7.488 -8.4672 7.5168 -8.4384L9.072 -6.8256Z"/>
- <path id="g42" d="M1.176 -5.808L0.204 -4.74C0.564 -4.668 0.768 -4.404 0.768 -3.96C0.768 -3.888 0.768 -3.816 0.768 -3.744V-1.728C0.768 -1.596 0.768 -1.452 0.768 -1.308C0.768 -1.236 0.768 -1.176 0.768 -1.104C0.744 -0.828 0.48 -0.576 0.204 -0.564C0.276 -0.468 0.36 -0.384 0.528 -0.384C0.804 -0.336 1.044 -0.216 1.248 -0.096C1.296 -0.072 1.524 0.132 1.572 0.132C1.644 0.132 1.692 0.048 1.728 0.012C1.812 -0.096 3.06 -1.476 3.06 -1.476V-1.488L2.88 -1.632H2.868C2.688 -1.452 2.532 -1.26 2.364 -1.068C2.304 -1.008 2.232 -0.888 2.148 -0.876C2.064 -0.876 1.956 -0.96 1.896 -0.996L1.704 -1.116C1.62 -1.14 1.584 -1.2 1.584 -1.308C1.584 -1.344 1.584 -1.392 1.584 -1.428V-4.176C1.584 -4.212 1.584 -4.248 1.584 -4.296C1.584 -4.476 1.668 -4.512 1.776 -4.62C1.896 -4.74 2.016 -4.872 2.148 -4.98C2.412 -4.62 2.688 -4.272 2.964 -3.924H2.976L3.588 -4.536V-4.548L2.964 -5.34C2.856 -5.484 2.712 -5.628 2.652 -5.808L1.584 -4.752C1.584 -5.136 1.44 -5.532 1.176 -5.808Z"/>
- <path id="g43" d="M1.1808 -7.128L0.504 -6.552C0.4464 -6.5088 0.3024 -6.4368 0.3024 -6.3504V-6.336C0.3024 -6.264 0.3888 -6.192 0.432 -6.1488L0.7776 -5.7312H0.5184C0.504 -4.3776 0.5472 -2.9664 0.504 -1.656C0.3168 -1.4544 0.1008 -1.2816 -0.1152 -1.0944V-1.08L1.0512 0.3024H1.0656L1.7424 -0.2736C1.8 -0.3168 1.944 -0.3888 1.944 -0.4752V-0.4896C1.944 -0.5616 1.8576 -0.6336 1.8144 -0.6768L1.4688 -1.0944H1.728C1.7424 -2.3472 1.6992 -3.6576 1.7424 -4.8816C2.1888 -5.328 2.7072 -5.688 3.1824 -6.1056L3.4704 -5.7312H3.2256C3.2112 -4.3776 3.2544 -2.9664 3.2112 -1.656C3.024 -1.4544 2.808 -1.2816 2.592 -1.1088C2.9664 -0.6192 3.3696 -0.1584 3.7584 0.3024H3.7728L4.68 -0.4608C4.5216 -0.6768 4.3488 -0.8928 4.176 -1.0944H4.4352C4.464 -2.3472 4.3776 -3.7152 4.464 -4.896C4.896 -5.328 5.4 -5.688 5.8608 -6.1056H5.8752L6.1776 -5.7312H5.9184V-1.728C5.9184 -1.6272 5.8464 -1.5696 5.7744 -1.512L5.4864 -1.2672C5.4288 -1.224 5.328 -1.1664 5.328 -1.08C5.328 -1.008 5.4 -0.9504 5.4288 -0.9216L5.6448 -0.6624C5.9184 -0.3456 6.192 -0.0288 6.4512 0.3024H6.4656L7.1424 -0.2592C7.2 -0.3168 7.344 -0.3888 7.344 -0.4752V-0.4896C7.344 -0.5616 7.2576 -0.6336 7.2288 -0.6768L6.8688 -1.0944H7.128C7.1424 -2.448 7.0992 -3.8592 7.1424 -5.1696C7.3296 -5.3712 7.5456 -5.544 7.7616 -5.7168C7.3872 -6.2064 6.984 -6.6672 6.5952 -7.128H6.5808L4.4352 -5.328V-6.3504H4.536L3.9024 -7.128C3.1536 -6.552 2.4624 -5.9184 1.728 -5.3136V-6.3504H1.8288C1.6272 -6.624 1.4112 -6.8832 1.1808 -7.128Z"/>
- <path id="g44" d="M1.1808 -7.128L0.504 -6.552C0.4464 -6.5088 0.3024 -6.4368 0.3024 -6.3504V-6.336C0.3024 -6.264 0.3888 -6.192 0.432 -6.1488L0.7776 -5.7312H0.5184C0.504 -4.3776 0.5472 -2.9664 0.504 -1.656C0.3168 -1.4544 0.1008 -1.2816 -0.1152 -1.0944V-1.08L1.0512 0.3024H1.0656L1.7424 -0.2736C1.8 -0.3168 1.944 -0.3888 1.944 -0.4752V-0.4896C1.944 -0.5616 1.8576 -0.6336 1.8144 -0.6768L1.4688 -1.0944H1.728C1.7424 -2.3472 1.6992 -3.6576 1.7424 -4.8816C2.1888 -5.328 2.7072 -5.688 3.1824 -6.1056L3.4704 -5.7312H3.2256C3.2112 -4.3776 3.2544 -2.9664 3.2112 -1.656C3.024 -1.4544 2.808 -1.2816 2.592 -1.1088C2.9664 -0.6192 3.3696 -0.1584 3.7584 0.3024H3.7728L4.68 -0.4608C4.5216 -0.6768 4.3488 -0.8928 4.176 -1.0944H4.4352V-4.6656V-4.968C4.4352 -5.1696 4.4496 -5.2128 4.5792 -5.3136L4.8816 -5.5728C4.9248 -5.616 5.0256 -5.6736 5.0256 -5.7456C5.0256 -5.8032 4.968 -5.8464 4.9392 -5.8896C4.68 -6.2064 4.0608 -6.912 3.9024 -7.128C3.1536 -6.552 2.4624 -5.9184 1.728 -5.3136V-6.3504H1.8288C1.6272 -6.624 1.4112 -6.8832 1.1808 -7.128Z"/>
- <path id="g45" d="M1.1808 -7.128L0.504 -6.552C0.4464 -6.5088 0.3024 -6.4368 0.3024 -6.3504V-6.336C0.3024 -6.264 0.3888 -6.192 0.432 -6.1488L0.7776 -5.7312H0.5184C0.504 -4.3776 0.5472 -2.9664 0.504 -1.656C0.3168 -1.4544 0.1008 -1.2816 -0.1152 -1.0944V-1.08L1.0512 0.3024H1.0656L3.2256 -1.512C3.2256 -1.1088 3.2256 -0.7056 3.24 -0.3312C3.3984 -0.1008 3.5856 0.1008 3.7584 0.3024H3.7728L4.68 -0.4608C4.5216 -0.6768 4.3488 -0.8928 4.176 -1.0944H4.4352V-4.6656V-4.968C4.4352 -5.1696 4.4496 -5.2128 4.5792 -5.3136L4.8816 -5.5728C4.9248 -5.616 5.0256 -5.6736 5.0256 -5.7456C5.0256 -5.8032 4.968 -5.8464 4.9392 -5.8896C4.68 -6.2064 4.0608 -6.912 3.9024 -7.128C3.5856 -6.8832 3.2688 -6.624 2.9664 -6.3648L3.4704 -5.7312H3.2256C3.1968 -4.4784 3.2832 -3.1248 3.1968 -1.944C2.8512 -1.6272 2.4912 -1.3248 2.1312 -1.0224C2.016 -0.936 1.9296 -0.8208 1.7856 -0.7632C1.656 -0.8496 1.5696 -0.9792 1.4688 -1.0944H1.728C1.7424 -2.448 1.6992 -3.8592 1.7424 -5.1696C1.9296 -5.3712 2.1456 -5.544 2.3616 -5.7312V-5.7456L1.1808 -7.128Z"/>
- <path id="g46" d="M1.1808 -7.128L0.504 -6.552C0.4464 -6.5088 0.3024 -6.4368 0.3024 -6.3504V-6.336C0.3024 -6.264 0.3888 -6.192 0.432 -6.1488L0.7776 -5.7312H0.5184V-1.5264C0.5184 -1.2096 0.5184 -0.9072 0.4608 -0.5904C0.3744 -0.0864 0.1872 0.432 0.1872 0.9504C0.1872 1.296 0.288 1.584 0.432 1.8432C0.6336 2.16 0.9648 2.4336 1.44 2.4336C1.9584 2.4336 2.4192 2.016 2.4192 1.4832C2.4192 1.1664 2.1888 0.8784 1.8288 0.8784C1.4832 0.8784 1.2096 1.1088 1.2096 1.4832C1.2096 1.6272 1.2528 1.7712 1.3536 1.8864C1.44 1.9872 1.5552 2.0304 1.6704 2.0736C1.5984 2.1024 1.512 2.1168 1.44 2.1168C0.8928 2.1168 0.5616 1.4976 0.5616 0.9072C0.5616 0.216 0.9792 -0.3744 1.4976 -0.648C1.7424 -0.7776 4.536 -1.656 4.536 -1.656C4.4784 -1.8576 4.4208 -1.9008 4.4208 -2.16C4.4208 -2.304 4.4352 -2.448 4.4352 -2.5776V-4.68V-4.9824C4.4352 -5.184 4.4496 -5.2128 4.5792 -5.3136L4.8816 -5.5728C4.9248 -5.616 5.0256 -5.6736 5.0256 -5.7456C5.0256 -5.8032 4.968 -5.8464 4.9392 -5.8896C4.68 -6.2064 4.0608 -6.912 3.9024 -7.128C3.1536 -6.552 2.4624 -5.9184 1.728 -5.3136V-6.3504H1.8288C1.6272 -6.624 1.4112 -6.8832 1.1808 -7.128ZM3.2256 -5.7312V-1.8864V-1.728C3.2256 -1.584 3.168 -1.5552 3.0528 -1.512C2.6928 -1.4112 1.9728 -1.1664 1.728 -1.08C1.7424 -2.3472 1.6992 -3.6576 1.7424 -4.8816C2.1888 -5.328 2.7072 -5.688 3.1824 -6.1056L3.4704 -5.7312H3.2256Z"/>
- <path id="g47" d="M1.188 -5.808L0.204 -4.548V-4.536L0.384 -4.392H0.396C0.432 -4.44 0.588 -4.668 0.648 -4.668C0.744 -4.668 0.828 -4.488 0.852 -4.452C0.96 -4.248 0.972 -4.032 0.972 -3.804C0.972 -3.768 0.972 -3.72 0.972 -3.684V-1.368C0.972 -1.332 0.972 -1.284 0.972 -1.248C0.972 -0.936 0.744 -0.828 0.492 -0.756V-0.504C0.924 -0.504 1.296 -0.276 1.512 0.024C1.56 0.084 1.584 0.156 1.692 0.156C1.86 0.156 1.98 -0.036 2.088 -0.144L3.12 -1.176C3.24 -0.9 3.384 -0.624 3.516 -0.348C3.564 -0.252 3.648 -0.132 3.648 -0.024C3.648 0 3.636 0.012 3.636 0.036L3.84 0.156L4.776 -1.344L4.56 -1.464C4.524 -1.404 4.38 -1.14 4.332 -1.128C4.296 -1.128 4.272 -1.14 4.248 -1.164C4.056 -1.308 3.936 -1.536 3.936 -1.848C3.936 -1.92 3.936 -1.992 3.936 -2.052V-3.888C3.936 -4.092 3.936 -4.308 3.936 -4.524C3.936 -4.728 3.924 -4.968 4.02 -5.088C4.044 -5.136 4.116 -5.16 4.128 -5.208C4.14 -5.208 4.14 -5.352 4.14 -5.352C3.9 -5.4 3.684 -5.568 3.612 -5.808C3.588 -5.808 3.564 -5.808 3.54 -5.808C3.444 -5.808 3.432 -5.76 3.396 -5.7C3.312 -5.52 3.096 -5.4 2.916 -5.352C2.916 -5.328 2.916 -5.304 2.916 -5.28C2.916 -5.16 3.024 -5.112 3.06 -5.052C3.12 -4.92 3.12 -4.764 3.12 -4.584C3.12 -4.416 3.12 -4.248 3.12 -4.092V-1.932C3.12 -1.848 3.132 -1.764 3.132 -1.68C3.132 -1.488 3.06 -1.464 2.94 -1.344L2.52 -0.924C2.472 -0.876 2.388 -0.756 2.316 -0.756C2.256 -0.756 2.208 -0.816 2.172 -0.84L1.932 -1.056C1.848 -1.116 1.788 -1.164 1.788 -1.308V-3.54C1.788 -4.056 1.776 -4.536 1.608 -5.028C1.536 -5.256 1.332 -5.664 1.188 -5.808Z"/>
- <path id="g48" d="M1.1952 -7.6608L1.4688 -7.5168C1.4544 -7.56 1.4544 -7.6176 1.4544 -7.6752C1.4544 -7.848 1.512 -8.0352 1.584 -8.1936C1.7712 -8.6544 2.2896 -9.0144 2.8512 -9.0144C3.0384 -9.0144 3.2112 -8.9856 3.384 -8.9136C3.7728 -8.7552 4.104 -8.4528 4.536 -8.4528C5.112 -8.4528 5.472 -8.856 5.8176 -9.2016C5.6448 -8.9712 5.4144 -8.784 5.2128 -8.568C4.6944 -8.0208 4.2048 -7.4736 3.9168 -6.768C3.8448 -6.5808 3.7728 -6.3792 3.744 -6.1776C3.4848 -6.3504 3.168 -6.4512 2.8656 -6.4512C2.3616 -6.4512 1.8144 -6.1488 1.6272 -5.7168C2.16 -5.7168 2.6928 -5.5296 3.1104 -5.184C3.2256 -5.0832 3.5568 -4.8096 3.5568 -4.608C3.5568 -4.5504 3.5424 -4.4928 3.5424 -4.4352C3.3408 -4.536 3.1104 -4.5936 2.88 -4.5936C2.4336 -4.5936 1.9872 -4.392 1.7856 -3.9456C2.3328 -3.9456 2.8224 -3.6 3.024 -3.096C3.0816 -2.9664 3.1248 -2.808 3.1248 -2.664C3.1248 -2.5056 2.9952 -2.3472 2.9376 -2.2608C2.5488 -1.656 1.9728 -1.1376 1.3536 -0.7776C1.152 -0.6624 0.9216 -0.576 0.7056 -0.4752C0.5184 -0.3744 0.3312 -0.2592 0.144 -0.1728L0.2592 0.1296C0.4176 0.0576 0.576 -0.0288 0.7344 -0.1008C1.7568 -0.5904 3.0384 -0.9648 4.3776 -0.9648C5.7456 -0.9648 6.9408 -0.5184 7.8336 0.3024H7.848L9.5184 -1.944V-1.9584L9.2736 -2.1456H9.2592C8.9856 -1.8288 8.6976 -1.656 8.136 -1.656C7.6032 -1.656 7.1712 -1.7712 6.6672 -1.8C6.5808 -1.8 5.7168 -1.8288 5.7168 -1.8C5.5152 -1.7856 5.328 -1.7568 5.1264 -1.7568V-1.7712C5.4144 -1.944 5.6736 -2.232 5.8896 -2.4912C6.5088 -3.2544 6.8976 -4.2048 6.8976 -5.256C6.8976 -5.688 6.8544 -6.1344 6.8256 -6.552C6.8112 -6.552 6.7824 -7.1568 6.7968 -7.1568C6.8112 -7.5168 6.8688 -7.8624 7.0272 -8.1936C7.344 -8.856 8.0496 -9.1584 8.7552 -9.1584V-9.4032H8.5536C8.0064 -9.4032 7.4592 -9.3888 6.9552 -9.1872C6.8112 -9.1152 6.6816 -9.0432 6.552 -8.9568C5.5584 -8.1792 5.6304 -6.6528 5.5728 -5.2848V-4.8816C5.544 -4.0896 5.472 -3.2688 5.0688 -2.5632C4.8816 -2.2464 4.5504 -1.8432 4.248 -1.6704C4.1472 -1.5984 4.032 -1.5984 3.9168 -1.5696C3.744 -1.5408 3.5568 -1.4976 3.384 -1.4544V-1.4688C3.816 -1.6704 4.3344 -2.1744 4.5648 -2.5488C4.968 -3.1392 5.0976 -3.888 5.0976 -4.824V-5.4864C5.0976 -5.8032 5.0976 -6.1056 5.1408 -6.4224C5.2848 -7.3008 5.688 -7.9632 6.1056 -8.6256C6.264 -8.9136 6.5808 -9.5472 6.7824 -9.7488C6.8256 -9.792 6.912 -9.8496 6.912 -9.9216C6.912 -10.008 6.8256 -10.0944 6.7824 -10.1664C6.3792 -9.936 6.1344 -9.36 5.5296 -9.36C5.2848 -9.36 5.0688 -9.432 4.8384 -9.5472C4.3488 -9.792 3.9744 -10.1664 3.312 -10.1664C2.5056 -10.152 2.0592 -9.36 1.728 -8.7264C1.6416 -8.568 1.1952 -7.6752 1.1952 -7.6608ZM6.1344 -9.5616C6.1344 -9.5616 6.0624 -9.4752 6.0624 -9.4752S6.1344 -9.5616 6.1344 -9.5616ZM5.9472 -9.3456L6.048 -9.4608L5.9472 -9.3456ZM5.8176 -9.2016L5.9472 -9.3456L5.8176 -9.2016Z"/>
- <path id="g49" d="M1.284 -6.78C1.2 -6.696 1.116 -6.6 1.02 -6.516C0.66 -6.18 0.204 -5.784 0.204 -5.256C0.204 -5.004 0.432 -4.872 0.6 -4.728C0.732 -4.62 0.84 -4.476 0.924 -4.32C1.152 -3.888 1.164 -3.408 1.164 -2.928V-1.632C1.164 -1.548 1.164 -1.464 1.164 -1.38C1.164 -1.056 1.068 -0.816 0.744 -0.756V-0.516C0.936 -0.576 1.116 -0.672 1.332 -0.672C1.836 -0.672 2.316 -0.336 2.46 0.156C2.496 0.156 2.544 0.168 2.58 0.168C2.628 0.168 2.664 0.156 2.7 0.132C2.772 0.096 2.94 -0.192 2.952 -0.216L3.48 -1.08C3.912 -1.776 4.308 -2.544 4.308 -3.372C4.308 -4.248 3.876 -4.932 3.432 -5.316C3.372 -5.376 3.3 -5.436 3.228 -5.472C3.24 -5.508 3.3 -5.508 3.3 -5.556L3.12 -5.724L1.788 -4.344C1.728 -4.62 1.488 -4.992 1.344 -5.148C1.176 -5.328 0.888 -5.496 0.888 -5.76C0.888 -5.796 0.888 -5.82 0.9 -5.856C0.9 -5.916 0.924 -5.964 0.948 -6.012C1.056 -6.228 1.32 -6.456 1.464 -6.6V-6.612L1.284 -6.78ZM3.084 -0.852C2.724 -1.044 2.544 -1.236 1.98 -1.236C1.98 -1.692 1.98 -2.148 1.98 -2.592C1.98 -2.82 1.98 -3.048 1.98 -3.276C1.98 -3.456 1.956 -3.636 1.932 -3.804C1.92 -3.864 1.884 -3.948 1.884 -4.008C1.884 -4.128 1.992 -4.188 2.052 -4.248L2.436 -4.644C2.484 -4.692 2.568 -4.824 2.64 -4.824S2.796 -4.704 2.844 -4.656C3.288 -4.176 3.636 -3.492 3.636 -2.664C3.636 -2.052 3.468 -1.584 3.24 -1.128C3.18 -1.032 3.12 -0.948 3.084 -0.852Z"/>
- <path id="g50" d="M1.32 2.7C1.572 2.172 1.788 1.62 2.028 1.092L2.508 -0.012L2.76 -0.576C2.82 -0.684 2.868 -0.792 2.868 -0.924C2.868 -0.936 2.868 -0.948 2.868 -0.96C2.808 -1.332 2.532 -1.584 2.124 -1.584C1.932 -1.584 1.74 -1.524 1.596 -1.392C1.38 -1.2 1.356 -0.912 1.308 -0.54C1.176 0.12 0.72 2.268 0.72 2.292C0.72 2.4 0.804 2.4 0.888 2.46C1.032 2.544 1.176 2.628 1.32 2.7Z"/>
- <path id="g51" d="M1.332 -1.728L0.204 -1.524C0.276 -0.96 0.348 -0.408 0.408 0.156C0.528 0.108 0.636 0.036 0.756 -0.012C1.14 -0.18 1.56 -0.252 2.088 -0.252C2.7 -0.36 2.904 -1.032 2.952 -1.596C2.964 -1.596 2.964 -2.352 2.952 -2.352C2.916 -3.156 2.784 -3.792 2.448 -4.38L3.072 -4.5C3.12 -4.26 3.564 -3.144 3.576 -3.108C4.104 -1.656 4.248 -1.14 5.076 0.156C5.58 -0.336 6.084 -0.816 6.552 -1.332L6.564 -1.584C6.348 -1.416 6.096 -1.248 5.772 -1.248C5.412 -1.248 5.268 -1.632 5.172 -1.86C5.076 -2.1 4.152 -4.584 4.152 -4.68C4.152 -4.728 4.188 -4.752 4.236 -4.752C4.32 -4.776 4.932 -4.896 5.148 -4.944C5.22 -4.956 5.388 -4.968 5.388 -5.064C5.388 -5.076 5.388 -5.088 5.388 -5.1C5.376 -5.16 5.364 -5.208 5.352 -5.268C5.304 -5.256 5.232 -5.232 5.172 -5.232S5.088 -5.292 5.088 -5.352C5.064 -5.436 5.04 -5.532 5.028 -5.616L4.884 -6.288C4.86 -6.408 4.824 -6.528 4.812 -6.648L5.016 -6.708C5.04 -6.792 5.004 -6.876 4.992 -6.96C4.644 -6.888 4.26 -6.852 3.9 -6.852C3.792 -6.852 3.696 -6.852 3.588 -6.852C3.408 -6.852 3.228 -6.84 3.048 -6.792C2.376 -6.588 1.98 -5.88 1.98 -5.016C1.74 -5.28 1.452 -5.652 1.452 -6.084C1.452 -6.18 1.464 -6.288 1.488 -6.372C1.632 -7.356 2.604 -8.124 3.756 -8.124C5.028 -8.124 6.132 -7.164 6.132 -5.88C6.132 -5.076 5.736 -4.572 5.28 -4.176V-4.164L5.472 -3.996C6 -4.38 6.396 -5.1 6.396 -5.88C6.396 -6.492 6.168 -7.116 5.736 -7.596C5.208 -8.172 4.488 -8.46 3.732 -8.46C3.588 -8.46 3.444 -8.448 3.3 -8.424C1.98 -8.22 1.02 -7.092 0.684 -5.844C0.612 -5.604 0.54 -5.088 0.54 -4.824C0.54 -4.764 0.54 -4.716 0.564 -4.668C0.672 -4.488 1.128 -4.02 1.2 -3.948L1.608 -3.516C2.088 -3.012 2.676 -2.364 2.676 -1.56C2.676 -1.116 2.46 -0.516 1.98 -0.516C1.464 -0.516 1.332 -1.272 1.332 -1.728ZM4.032 -4.98C3.888 -4.968 2.448 -4.644 2.448 -4.644C2.424 -4.644 2.388 -4.632 2.364 -4.632S2.328 -4.632 2.316 -4.644C2.244 -4.68 2.232 -5.028 2.232 -5.088C2.232 -5.172 2.244 -5.256 2.256 -5.352C2.328 -5.832 2.616 -6.42 3.216 -6.42C3.444 -6.42 3.612 -6.3 3.708 -6.144C3.876 -5.856 3.984 -5.316 4.032 -4.98Z"/>
- <path id="g52" d="M1.368 -6.3648C0.9936 -6.048 0.4752 -5.472 0.4752 -4.824V-4.7952C0.4752 -4.032 1.0224 -3.4416 1.6704 -3.1104C2.16 -2.8656 2.6928 -2.7792 3.2112 -2.7792C3.4992 -2.7792 3.7728 -2.808 4.0464 -2.8368L3.8592 -2.1888C2.6496 -2.1888 1.4976 -2.1024 0.7488 -1.5264C0.4464 -1.3248 0.1872 -0.9648 0.1872 -0.4896C0.1872 -0.2304 0.2736 0.0288 0.432 0.2304C0.7344 0.6192 1.2528 0.792 1.9008 0.792C3.1968 0.792 4.4352 0.5184 5.3424 0.0576C5.4144 0.0144 5.7024 -0.1584 5.7888 -0.1584S6.3936 0.1728 6.552 0.3024H6.5664C7.1712 -0.3024 8.0352 -1.0656 8.568 -1.6848C9.2592 -2.5344 10.008 -3.6432 10.008 -5.0544C10.008 -5.5008 9.8928 -5.9328 9.6192 -6.2928C9.1872 -6.84 8.6256 -7.1424 7.6176 -7.1424H7.416C7.0848 -7.1424 5.8032 -7.0704 5.5728 -7.0272L6.4512 -10.08L6.1344 -10.1664L5.9328 -9.432C5.7168 -9.504 3.2544 -10.152 3.2112 -10.152C3.0528 -10.152 2.9376 -9.9792 2.8656 -9.9216C2.6064 -9.6912 1.4976 -8.7552 1.368 -8.6544L1.1088 -8.424C0.9936 -8.3376 0.9216 -8.2944 0.9216 -8.1072V-7.8192C0.9216 -7.4304 0.9936 -7.056 1.1664 -6.7104C1.224 -6.5952 1.368 -6.3648 1.368 -6.3648ZM5.5008 -8.0064V-7.9776C5.5008 -7.9056 5.472 -7.8192 5.4576 -7.7616C5.4144 -7.632 5.2848 -7.0848 5.1984 -7.0272C5.112 -6.9552 4.2336 -6.9552 4.2192 -6.9552H3.7584H3.5424C3.1536 -6.9552 2.7648 -6.9696 2.4048 -7.0992C2.0304 -7.2288 1.6992 -7.5312 1.6992 -8.0352C1.6992 -8.4672 1.9584 -8.7408 2.4768 -8.7408H2.5776C3.1824 -8.7408 4.1472 -8.4528 4.5216 -8.3376L5.2704 -8.1216C5.3424 -8.1072 5.5008 -8.0928 5.5008 -8.0064ZM4.5072 -4.4352C3.9456 -4.4208 3.96 -4.3776 3.3408 -4.3776C2.8944 -4.3776 2.3616 -4.4064 2.0304 -4.5072C1.6704 -4.6224 1.3248 -4.896 1.296 -5.2992C1.296 -5.688 1.4112 -5.7888 1.5696 -6.0912C1.9872 -5.7312 2.4192 -5.4144 3.1968 -5.4144C3.2832 -5.4144 3.3552 -5.4288 3.4416 -5.4288C3.9024 -5.4432 4.3488 -5.472 4.8096 -5.5008L4.5072 -4.4352ZM4.8384 -4.464L5.0544 -5.2128C5.0832 -5.2992 5.0976 -5.4576 5.1696 -5.5152C5.2128 -5.5584 5.2992 -5.5584 5.3856 -5.5584H5.5008C5.8752 -5.6016 8.0352 -5.8032 8.0352 -5.7024C8.3808 -5.6592 8.712 -5.5008 8.9568 -5.256S9.4464 -4.5504 9.4464 -4.104C9.4464 -3.4272 9.0144 -2.7792 8.6112 -2.2608C8.4528 -2.0592 7.7904 -1.2672 7.6608 -1.2672H7.632C7.5888 -1.2672 7.3152 -1.44 7.2144 -1.4832C7.3728 -1.728 7.488 -1.9728 7.6032 -2.232C7.8192 -2.6208 8.1792 -3.312 8.1792 -3.7296C8.1792 -3.9168 8.1216 -4.104 7.9776 -4.2768C7.7616 -4.5216 7.4304 -4.5648 7.1136 -4.5648C6.5376 -4.5648 5.1408 -4.5072 4.8384 -4.464ZM6.8544 -1.6704C6.0048 -2.0016 5.0976 -2.1888 4.1904 -2.1888C4.2192 -2.304 4.3488 -2.8224 4.4208 -2.88C4.4784 -2.9088 4.5648 -2.9088 4.6368 -2.9232L5.112 -3.0096C5.2416 -3.024 5.3712 -3.0528 5.5008 -3.0672C5.5728 -3.0816 6.6528 -3.2112 6.6528 -3.1392C6.9264 -3.0816 7.1856 -2.808 7.1856 -2.4768C7.1856 -2.1744 6.9696 -1.944 6.8544 -1.6704ZM5.4 -0.3456C5.256 -0.288 5.1264 -0.2016 4.9968 -0.144C4.1904 0.2592 3.024 0.4896 1.9152 0.4896C1.5408 0.4896 1.1376 0.3744 0.9792 -0.0144C0.936 -0.0864 0.9216 -0.1584 0.9216 -0.2448C0.9216 -0.8352 1.5696 -1.0224 2.0736 -1.0224C2.4768 -1.0224 2.8656 -0.936 3.2544 -0.864C3.9744 -0.7488 4.7232 -0.6336 5.4 -0.3456Z"/>
- <path id="g53" d="M1.392 -6.204C1.452 -6.168 1.524 -6.096 1.596 -6.096C1.632 -6.096 1.668 -6.132 1.704 -6.156C2.04 -6.396 2.268 -6.936 2.268 -7.428C2.268 -7.656 2.112 -7.812 1.896 -7.812C1.8 -7.812 1.704 -7.776 1.62 -7.716C1.416 -7.536 1.476 -7.296 1.428 -6.96C1.416 -6.96 1.416 -6.792 1.416 -6.684C1.416 -6.564 1.428 -6.204 1.392 -6.204ZM3.144 -7.416C3.12 -7.416 3.108 -7.2 3.108 -7.02C3.108 -6.888 3.12 -6.552 3.108 -6.552C3.096 -6.48 3.096 -6.42 3.084 -6.348C3.084 -6.324 3.084 -6.3 3.084 -6.264C3.084 -6.156 3.18 -6.096 3.276 -6.096C3.312 -6.096 3.348 -6.132 3.384 -6.156C3.708 -6.396 3.948 -6.996 3.948 -7.428C3.948 -7.644 3.792 -7.812 3.576 -7.812C3.324 -7.812 3.18 -7.632 3.144 -7.416ZM0.216 -1.14V-1.116C0.504 -0.948 1.884 -0.096 2.088 0.048C2.124 0.084 2.172 0.132 2.232 0.132C2.232 0.132 2.244 0.132 2.244 0.132C2.28 0.12 2.868 -0.564 3.132 -0.984C3.624 -1.764 3.828 -2.712 3.828 -3.636C3.828 -4.488 3.66 -5.184 3.264 -5.808L1.176 -4.968L0.66 -4.752C0.54 -4.704 0.468 -4.716 0.468 -4.536C0.468 -4.488 0.468 -4.452 0.468 -4.416V-1.728C0.468 -1.704 0.468 -1.68 0.468 -1.656C0.468 -1.488 0.456 -1.332 0.324 -1.212L0.216 -1.14ZM2.712 -0.828C2.688 -0.792 2.652 -0.72 2.604 -0.72C2.568 -0.72 2.544 -0.732 2.52 -0.744C2.148 -0.984 2.028 -1.056 1.572 -1.332L1.38 -1.452C1.308 -1.5 1.26 -1.524 1.26 -1.644C1.26 -1.704 1.272 -1.764 1.272 -1.812V-3.936C1.272 -3.996 1.272 -4.68 1.272 -4.68C1.296 -4.776 1.44 -4.812 1.524 -4.836C1.776 -4.944 2.04 -5.04 2.292 -5.148C2.352 -5.172 2.448 -5.232 2.52 -5.232C2.556 -5.232 2.58 -5.22 2.604 -5.196C2.652 -5.112 2.688 -5.004 2.724 -4.908C2.988 -4.212 3.096 -3.312 3.096 -2.4C3.096 -1.824 2.976 -1.164 2.712 -0.828Z"/>
- <path id="g54" d="M1.428 -5.808C1.14 -5.364 0.828 -4.944 0.552 -4.488L0.54 -4.248C0.66 -4.344 0.792 -4.452 0.96 -4.452C1.392 -4.452 1.704 -3.96 1.704 -3.6C1.704 -2.988 1.104 -2.724 0.78 -2.448C0.696 -2.388 0.648 -2.328 0.648 -2.208C0.648 -2.16 0.648 -2.124 0.648 -2.088L1.14 -2.004C1.044 -1.884 0.936 -1.788 0.852 -1.668C0.492 -1.224 0.204 -0.576 0.204 0.168C0.204 0.78 0.408 1.392 0.912 1.776C1.116 1.92 1.428 2.064 1.752 2.064C1.92 2.064 2.1 2.028 2.22 1.98C2.916 1.692 3.276 0.864 3.276 -0.036C3.276 -0.588 3.12 -1.152 2.868 -1.632C2.712 -1.92 2.52 -2.16 2.304 -2.4C2.544 -2.496 2.808 -2.544 3.096 -2.592C3.072 -2.664 3.012 -2.796 2.904 -2.796C2.856 -2.796 2.46 -2.724 2.316 -2.676C2.268 -2.652 2.184 -2.616 2.124 -2.616C2.112 -2.616 2.112 -2.616 2.1 -2.616C2.04 -2.628 1.776 -2.844 1.68 -2.892C1.764 -2.988 1.86 -3.072 1.956 -3.156C2.232 -3.444 2.496 -3.792 2.496 -4.32C2.496 -5.04 2.004 -5.592 1.428 -5.808ZM0.564 0.324C0.564 0.228 0.576 0.12 0.576 0.024C0.6 -0.468 0.78 -0.972 1.056 -1.38C1.104 -1.452 1.368 -1.812 1.452 -1.812C1.5 -1.8 1.548 -1.752 1.584 -1.728C2.124 -1.248 2.424 -0.336 2.424 0.54C2.424 0.744 2.388 0.936 2.304 1.116C2.16 1.428 1.812 1.716 1.404 1.716C1.248 1.716 1.092 1.668 0.96 1.548C0.624 1.248 0.612 0.744 0.564 0.324Z"/>
- <path id="g55" d="M1.44 -7.128C1.224 -6.9264 0.9936 -6.7536 0.7632 -6.552C0.7056 -6.5088 0.5616 -6.4368 0.5616 -6.3504V-6.336C0.5616 -6.264 0.648 -6.192 0.6912 -6.1488L1.0368 -5.7312H0.7776V-1.9728L0.432 -2.1456L-0.1728 -1.0944C0.0432 -0.9792 0.2592 -0.864 0.4752 -0.7632C0.6336 -0.6912 0.7776 -0.6624 0.7776 -0.432V-0.3312V0.2304V0.5904C0.7776 1.0656 0.7632 1.5408 0.576 1.9872C0.4752 2.2032 0.3456 2.376 0.2016 2.5632L0.4896 2.7072L1.0944 1.8288C1.3824 2.0304 1.6848 2.2176 1.9728 2.4048C2.232 2.5776 2.52 2.808 2.9088 2.808C3.096 2.808 3.3408 2.6928 3.3408 2.52C3.3408 2.4192 3.24 2.3472 3.1824 2.304C3.1392 2.4912 3.0528 2.6064 2.8368 2.6064C2.5056 2.6064 2.2608 2.2896 2.16 2.1024C1.9872 1.7856 1.9872 1.4256 1.9872 1.08V0.0144C2.1744 0.1152 2.3472 0.216 2.5488 0.288C3.1536 -0.0144 3.7008 -0.3744 4.3056 -0.6912L4.4496 -0.6336C4.8816 -0.3312 5.2992 -0.0144 5.7456 0.2736L5.9184 0.2304C6.4224 -0.072 6.9696 -0.3312 7.4304 -0.6768L7.4592 -0.9648C7.2144 -0.8496 6.9408 -0.648 6.6672 -0.648H6.6096C6.4368 -0.6768 6.12 -0.9504 6.0336 -1.008L5.5728 -1.3248C5.4576 -1.4112 5.2992 -1.44 5.2992 -1.6416C5.2992 -1.6992 5.3136 -1.7568 5.3136 -1.8V-2.3616V-2.5056C5.3136 -2.736 5.4144 -2.7936 5.544 -2.9376L6.0336 -3.5136L7.776 -5.5728V-5.5872L6.2352 -7.128H6.2208C5.832 -6.7824 5.4288 -6.4656 4.9824 -6.2064C4.968 -6.2064 4.5072 -5.9184 4.5072 -5.976C4.4064 -6.0048 4.3056 -6.1056 4.2192 -6.1632L3.816 -6.4368C3.7296 -6.4944 3.6432 -6.5664 3.5424 -6.6096C3.6288 -6.696 3.7152 -6.7968 3.7872 -6.8976L3.6144 -7.128L3.1968 -6.7536C2.9232 -6.5232 2.7216 -6.2208 2.3904 -6.048L2.2896 -6.1344C2.0016 -6.4656 1.7424 -6.8112 1.44 -7.128ZM2.6064 -5.76C2.7504 -5.7456 3.2832 -5.3136 3.2976 -5.3136C3.4272 -5.2416 3.5424 -5.1984 3.5424 -4.9824V-4.8384V-0.9648C3.5424 -0.9216 3.5568 -0.864 3.5568 -0.792S3.5424 -0.648 3.4848 -0.6192C3.456 -0.6192 3.3552 -0.6192 3.3552 -0.648C3.2832 -0.6768 2.5776 -1.0512 2.304 -1.1808C2.1456 -1.2528 1.9872 -1.2816 1.9872 -1.5264V-1.656V-4.8384V-4.9968C1.9872 -5.2128 2.0592 -5.256 2.1888 -5.3568C2.3328 -5.4864 2.4768 -5.6016 2.6208 -5.7168L2.6064 -5.76ZM5.3136 -3.1824V-5.7888V-5.9184C5.3136 -6.0336 5.3712 -6.1056 5.472 -6.1056C5.5296 -6.1056 5.5728 -6.0624 5.6016 -6.0336L6.408 -5.2272C6.5232 -5.112 6.6384 -4.9824 6.768 -4.8816L5.3136 -3.1824Z"/>
- <path id="g56" d="M1.44 -7.128C1.224 -6.9264 0.9936 -6.7536 0.7632 -6.552C0.7056 -6.5088 0.5616 -6.4368 0.5616 -6.3504V-6.336C0.5616 -6.264 0.648 -6.192 0.6912 -6.1488L1.0368 -5.7312H0.7776V-1.9728L0.432 -2.1456L-0.1728 -1.0944C0.0432 -0.9792 0.2592 -0.864 0.4752 -0.7632C0.6336 -0.6912 0.7776 -0.6624 0.7776 -0.432V-0.3312V0.2304V0.5904C0.7776 1.0656 0.7632 1.5408 0.576 1.9872C0.4752 2.2032 0.3456 2.376 0.2016 2.5632L0.4896 2.7072L1.0944 1.8288C1.3824 2.0304 1.6848 2.2176 1.9728 2.4048C2.232 2.5776 2.52 2.808 2.9088 2.808C3.096 2.808 3.3408 2.6928 3.3408 2.52C3.3408 2.4192 3.24 2.3472 3.1824 2.304C3.1392 2.4912 3.0528 2.6064 2.8368 2.6064C2.5056 2.6064 2.2608 2.2896 2.16 2.1024C1.9872 1.7856 1.9872 1.4256 1.9872 1.08V0.0144C2.1744 0.1152 2.3472 0.216 2.5488 0.288C3.3696 -0.1296 4.1184 -0.6192 4.9104 -1.0512L4.7664 -1.3536C4.7232 -2.6496 4.7664 -4.0464 4.752 -5.3712L4.9104 -5.688C4.4496 -5.9904 4.0176 -6.3216 3.5424 -6.6096C3.6288 -6.696 3.7152 -6.7968 3.7872 -6.8976L3.6144 -7.128L3.1968 -6.7536C2.9232 -6.5232 2.7216 -6.2208 2.3904 -6.048L2.2896 -6.1344C2.0016 -6.4656 1.7424 -6.8112 1.44 -7.128ZM2.6064 -5.76C2.7504 -5.7456 3.2832 -5.3136 3.2976 -5.3136C3.4272 -5.2416 3.5424 -5.1984 3.5424 -4.9824V-4.8384V-0.9648C3.5424 -0.9216 3.5568 -0.864 3.5568 -0.792S3.5424 -0.648 3.4848 -0.6192C3.456 -0.6192 3.3552 -0.6192 3.3552 -0.648C3.2832 -0.6768 2.5776 -1.0512 2.304 -1.1808C2.1456 -1.2528 1.9872 -1.2816 1.9872 -1.5264V-1.656V-4.8384V-4.9968C1.9872 -5.2128 2.0592 -5.256 2.1888 -5.3568C2.3328 -5.4864 2.4768 -5.6016 2.6208 -5.7168L2.6064 -5.76Z"/>
- <path id="g57" d="M1.44 -7.128L0.5328 -6.3648L1.0368 -5.7312H0.7776V-1.9728L0.432 -2.1456C0.2304 -1.8 0.0288 -1.4544 -0.1584 -1.08C0.0576 -0.9792 0.2736 -0.864 0.4896 -0.7488C0.6336 -0.6768 0.7776 -0.6624 0.7776 -0.4608V-0.36V0.216V0.6912C0.7776 1.1232 0.7632 1.5408 0.5904 1.944C0.4896 2.1744 0.3456 2.3616 0.2016 2.5632L0.4896 2.7072L1.0944 1.8288C1.4256 2.0304 1.7424 2.2608 2.0736 2.4624C2.2896 2.6064 2.5632 2.808 2.8944 2.808C3.1104 2.808 3.3552 2.7216 3.3552 2.52C3.3552 2.4048 3.2544 2.3472 3.1968 2.304C3.1536 2.4912 3.0672 2.6064 2.8656 2.6064C2.5344 2.6064 2.2752 2.3184 2.1744 2.1168C1.9872 1.8 1.9872 1.4256 1.9872 1.08V0.0144C2.1744 0.1008 2.3616 0.2016 2.5488 0.288C3.1248 0.0288 3.6144 -0.3168 4.1328 -0.6192H4.1472L4.5072 -0.36C4.8528 -0.1584 5.1264 0.1152 5.5152 0.2736L5.6592 0.216C6.408 -0.2016 7.1424 -0.6192 7.848 -1.0656C7.8192 -1.1952 7.7616 -1.2816 7.7184 -1.3824C7.7184 -2.8224 7.704 -4.2768 7.7328 -5.688L7.8768 -6.0048L5.7456 -7.056C5.6016 -6.6816 5.3856 -6.3216 5.0976 -6.0336C5.04 -5.976 4.896 -5.7888 4.7952 -5.7888C4.7088 -5.8176 4.464 -6.0048 4.4352 -6.0192L3.888 -6.3936C3.7728 -6.4656 3.6576 -6.552 3.5424 -6.624V-6.6384C3.6288 -6.7248 3.744 -6.7824 3.8016 -6.912L3.6288 -7.128H3.6144L2.7216 -6.3072C2.6208 -6.2208 2.5344 -6.1056 2.3904 -6.048L2.2896 -6.1344C2.016 -6.48 1.728 -6.8112 1.44 -7.128ZM2.6496 -5.7888C2.9376 -5.5728 3.24 -5.3712 3.528 -5.1408L3.5568 -4.824V-1.3536L3.4272 -1.08C3.5568 -1.008 3.5568 -0.9216 3.5568 -0.7776C3.5568 -0.7056 3.5424 -0.6192 3.456 -0.6192C3.3984 -0.6192 3.3552 -0.648 3.312 -0.6768C3.1104 -0.7632 2.3328 -1.1664 2.3184 -1.1808C2.1888 -1.2528 1.9872 -1.2816 1.9872 -1.512V-1.6704V-4.9104V-5.0112C1.9872 -5.2128 2.088 -5.2704 2.2032 -5.3712C2.3328 -5.4864 2.4768 -5.6016 2.6208 -5.7168C2.6352 -5.7312 2.6064 -5.7888 2.6496 -5.7888ZM6.3936 -0.5616C5.9328 -0.8928 5.4144 -1.1664 4.9824 -1.5408L4.9536 -1.8144V-5.1408C5.1408 -5.3712 5.3568 -5.5728 5.616 -5.7456C5.9472 -5.6304 6.2208 -5.472 6.4944 -5.2992C6.4944 -5.2992 6.5088 -4.9968 6.5088 -4.9968C6.5088 -3.5424 6.5232 -2.0736 6.4944 -0.6624L6.3936 -0.5616Z"/>
- <path id="g58" d="M1.44 -7.128L0.5328 -6.3648L1.0368 -5.7312H0.7776V-1.9728L0.432 -2.1456C0.2304 -1.8 0.0288 -1.4544 -0.1584 -1.08C0.0576 -0.9792 0.2736 -0.864 0.4896 -0.7488C0.6336 -0.6768 0.7776 -0.6624 0.7776 -0.4608V-0.36V0.216V0.6912C0.7776 1.1232 0.7632 1.5408 0.5904 1.944C0.4896 2.1744 0.3456 2.3616 0.2016 2.5632L0.4896 2.7072L1.0944 1.8288C1.4256 2.0304 1.7424 2.2608 2.0736 2.4624C2.2896 2.6064 2.5632 2.808 2.8944 2.808C3.1104 2.808 3.3552 2.7216 3.3552 2.52C3.3552 2.4048 3.2544 2.3472 3.1968 2.304C3.1536 2.4912 3.0672 2.6064 2.8656 2.6064C2.5344 2.6064 2.2752 2.3184 2.1744 2.1168C1.9872 1.8 1.9872 1.4256 1.9872 1.08V0.0144C2.1744 0.1008 2.3616 0.2016 2.5488 0.288L2.6928 0.2304C3.1104 -0.0288 3.5424 -0.2592 3.96 -0.5184H3.9744C4.1904 -0.2448 4.4064 0.0288 4.6512 0.2736L4.7952 0.216C5.328 -0.1152 5.832 -0.4896 6.408 -0.792L6.5088 -0.72L7.3728 0.3024H7.3872L8.2944 -0.4608L7.7904 -1.0944H8.0496C8.064 -2.6496 8.0208 -4.2912 8.064 -5.76C8.1936 -5.9184 8.352 -6.048 8.496 -6.1776C7.9344 -6.48 7.4448 -6.84 6.8544 -7.0992L6.6816 -7.0128C6.0624 -6.5952 5.4576 -6.1632 4.8672 -5.7168H4.8528L3.5424 -6.624V-6.6384C3.6288 -6.7248 3.744 -6.7824 3.8016 -6.912L3.6288 -7.128H3.6144L2.7216 -6.3072C2.6208 -6.2208 2.5344 -6.1056 2.3904 -6.048L2.2896 -6.1344C2.016 -6.48 1.728 -6.8112 1.44 -7.128ZM2.6352 -5.7888H2.6496C2.8224 -5.616 3.0672 -5.4864 3.2688 -5.3424C3.4128 -5.2416 3.5568 -5.2272 3.5568 -4.9824V-4.8384V-1.4112V-1.3248C3.5568 -1.2528 3.5424 -1.1808 3.4848 -1.1088C3.5424 -0.9936 3.5568 -0.8928 3.5568 -0.7632C3.5568 -0.6912 3.5424 -0.6192 3.456 -0.6192C3.4128 -0.6192 3.1968 -0.7344 3.1248 -0.7632L2.3328 -1.1664C2.2032 -1.2528 1.9872 -1.2672 1.9872 -1.512V-1.6704V-4.9104V-5.0112C1.9872 -5.2128 2.088 -5.2704 2.2032 -5.3712C2.3328 -5.4864 2.4768 -5.6016 2.6208 -5.7168L2.6352 -5.7888ZM6.84 -3.312C6.6528 -3.312 6.4512 -3.2976 6.2496 -3.2976C5.7024 -3.2976 5.328 -3.4128 4.9824 -3.6864C4.8816 -3.7584 4.7664 -3.8448 4.7664 -4.032V-4.1472V-4.9968V-5.0832C4.7664 -5.2416 4.896 -5.328 4.9824 -5.4C5.1984 -5.5872 5.9184 -6.1488 6.1632 -6.1488C6.336 -6.1488 6.4656 -6.0192 6.5664 -5.9472C6.696 -5.8752 6.84 -5.8176 6.84 -5.616V-5.5296V-3.312ZM4.7664 -3.168V-3.4416L5.0544 -3.24L4.7664 -3.168ZM6.2064 -1.1088L6.2208 -1.0656C5.976 -0.9216 5.76 -0.7632 5.4864 -0.648C5.3136 -0.7632 5.1984 -0.936 5.0688 -1.0944H5.328V-2.2608C5.328 -2.6352 5.472 -2.9952 5.9328 -2.9952H6.0624H6.84C6.84 -2.5344 6.8544 -2.0592 6.8112 -1.6416C6.624 -1.44 6.408 -1.2816 6.2064 -1.1088Z"/>
- <path id="g59" d="M1.4544 -3.24L0.2016 -2.9088L0.504 -2.2896C0.5184 -2.0592 0.5184 -1.8432 0.4896 -1.6272C0.3024 -1.44 0.0864 -1.2672 -0.1152 -1.0944V-1.08C0.288 -0.6336 0.6192 -0.1296 1.0512 0.2736L1.1952 0.216C1.728 -0.1152 2.232 -0.4896 2.808 -0.792L2.9088 -0.72L3.7728 0.3024H3.7872L4.6944 -0.4608L4.1904 -1.0944H4.4496C4.464 -2.6496 4.4208 -4.2912 4.464 -5.76C4.608 -5.904 4.7664 -6.0336 4.9104 -6.1776C4.608 -6.336 3.3408 -7.0992 3.2544 -7.0992C3.1248 -7.0992 2.9664 -6.9264 2.9088 -6.8976L2.2032 -6.408C1.8288 -6.1344 1.4112 -5.8896 1.08 -5.5584C0.792 -5.2704 0.6048 -5.04 0.6048 -4.4784C0.6048 -3.8592 1.0944 -3.4848 1.4544 -3.24ZM3.24 -3.312C3.0528 -3.312 2.8656 -3.2976 2.6784 -3.2976C2.4624 -3.2976 2.2464 -3.312 2.0304 -3.3696C1.4688 -3.5136 0.9072 -3.96 0.9072 -4.608C0.9072 -4.7376 0.936 -4.8672 1.008 -4.9968C1.1808 -5.2848 1.4976 -5.5152 1.7712 -5.7024C1.9152 -5.8176 2.3616 -6.1488 2.5632 -6.1488C2.736 -6.1488 2.8656 -6.0192 2.9808 -5.9472C3.0816 -5.8608 3.24 -5.832 3.24 -5.6448V-5.5584V-3.312ZM2.6064 -1.1088L2.6208 -1.0656C2.376 -0.9216 2.16 -0.7632 1.8864 -0.648C1.7136 -0.7632 1.5984 -0.936 1.4688 -1.0944H1.728V-1.9584V-2.2032C1.728 -2.664 1.8576 -2.9952 2.3472 -2.9952H2.4768H3.24C3.24 -2.5344 3.2544 -2.0592 3.2112 -1.6416C3.024 -1.44 2.808 -1.2816 2.6064 -1.1088Z"/>
- <path id="g60" d="M1.4976 -6.8976L0.1584 -5.6448V-5.6304C0.4464 -5.3136 0.7488 -4.9968 1.008 -4.6512L1.0224 -4.464V0.1872L1.9872 -0.2448L2.2464 -0.36C2.3472 -0.3888 2.3904 -0.432 2.3904 -0.576V-0.72V-4.8528V-5.0112C2.3904 -5.0544 2.3904 -5.112 2.4192 -5.1552C2.4624 -5.2128 2.9664 -5.5152 3.1248 -5.6304C3.1968 -5.6736 3.2832 -5.76 3.3696 -5.76H3.384C3.4704 -5.7456 3.816 -5.4144 3.816 -5.4144C3.9024 -5.3424 4.0896 -5.2416 4.1184 -5.112C4.1328 -5.0544 4.1328 -4.9824 4.1328 -4.9248C4.1328 -4.7952 4.1184 -4.6656 4.1184 -4.536V0.1728C4.896 -0.3312 5.688 -0.8208 6.408 -1.3824L6.4224 -1.6848C6.336 -1.656 6.264 -1.6128 6.1776 -1.6128C5.8464 -1.6128 5.6016 -1.9296 5.5296 -2.2176C5.4864 -2.376 5.4864 -2.5344 5.4864 -2.6928V-3.0816V-4.608C5.4864 -4.9104 5.5872 -5.2416 5.8608 -5.3424C5.976 -5.3856 6.0192 -5.3856 6.0192 -5.544V-5.6448C6.0048 -5.7312 5.9184 -5.7888 5.8464 -5.8464C5.7024 -5.976 5.0256 -6.5376 4.8384 -6.696C4.7664 -6.7536 4.6656 -6.8688 4.5792 -6.8688C4.5072 -6.8688 4.464 -6.8112 4.4064 -6.7824C3.7296 -6.3216 3.0672 -5.9616 2.3904 -5.472C2.3904 -5.6304 2.3904 -5.7888 2.376 -5.9328C2.1024 -6.2784 1.8 -6.5808 1.4976 -6.8976Z"/>
- <path id="g61" d="M1.4976 -6.8976L0.1584 -5.6448V-5.6304C0.4464 -5.3136 0.7488 -5.0112 1.008 -4.6656C1.0512 -3.7152 1.0368 -2.6208 0.9936 -1.7136C0.7344 -1.4976 0.4464 -1.3104 0.1728 -1.1088V-1.08L1.656 -0.1584L2.0304 0.0864C2.088 0.1152 2.1312 0.1584 2.1888 0.1584C2.3184 0.1584 2.448 0.0144 2.52 -0.0288L3.9312 -1.008C3.9888 -1.0512 4.1184 -1.1088 4.1184 -1.1952C4.1184 -1.296 4.032 -1.3968 3.96 -1.3968C3.8736 -1.3968 3.7872 -1.3104 3.744 -1.2816L3.4128 -1.0512C3.3552 -1.008 3.2832 -0.936 3.2112 -0.936C3.1536 -0.936 3.0816 -0.9792 3.0384 -1.008L2.7072 -1.224C2.6064 -1.2816 2.4336 -1.3536 2.3904 -1.4688V-4.7664C2.3904 -4.8528 2.376 -4.9536 2.376 -5.0544C2.376 -5.256 2.448 -5.2992 2.592 -5.3856L3.0816 -5.7312C3.1392 -5.7744 3.2112 -5.8464 3.2976 -5.8464C3.3984 -5.8464 3.4848 -5.7024 3.5424 -5.6448L4.1184 -5.0688H4.1328L4.7664 -5.7024C4.8672 -5.8032 4.968 -5.8752 4.968 -6.0192S4.8384 -6.2496 4.752 -6.336L4.1904 -6.8976H4.176L2.3904 -5.6448L2.376 -5.9328C2.1024 -6.2784 1.8 -6.5808 1.4976 -6.8976Z"/>
- <path id="g62" d="M1.4976 -6.8976L0.1584 -5.6448V-5.6304C0.4464 -5.328 0.7344 -5.0112 0.9936 -4.68L1.0224 -4.4496C1.0224 -3.6144 1.0368 -2.7792 1.008 -1.9872C0.8064 -1.8144 0.5904 -1.656 0.3888 -1.4976L0.8352 -1.3104C0.9648 -1.2384 1.0224 -1.2672 1.0224 -1.0512V0.36C1.0368 1.08 1.2672 1.8144 1.6416 2.4336C1.7856 2.232 1.8864 1.9584 1.9872 1.728C2.2896 0.9648 2.3904 0.1728 2.3904 -0.648C2.4912 -0.6048 3.8592 -0.0288 3.888 -0.0288C3.9888 -0.0432 4.104 -0.1584 4.176 -0.216L4.824 -0.6912C5.1552 -0.936 5.4864 -1.1664 5.7744 -1.4832C6.336 -2.1312 6.6672 -3.0096 6.6672 -3.8736C6.6672 -3.9888 6.6672 -4.1184 6.6528 -4.2336C6.5088 -5.328 5.6016 -6.1632 4.8672 -6.8976H4.8528L2.3904 -4.4352C2.376 -4.9248 2.4048 -5.4576 2.376 -5.9184C2.1168 -6.2784 1.8144 -6.5952 1.4976 -6.8976ZM3.9168 -5.5152C4.4496 -4.9824 5.0256 -4.3344 5.2272 -3.5856C5.3136 -3.2688 5.328 -2.9232 5.328 -2.5776V-2.3328C5.328 -2.0016 5.3136 -1.6416 5.1264 -1.3536C5.0832 -1.2672 4.968 -1.0944 4.8384 -1.0944C4.7664 -1.0944 4.6512 -1.152 4.5936 -1.1952L2.5632 -2.0448C2.4624 -2.1168 2.3904 -2.088 2.3904 -2.2752V-3.8016C2.3904 -3.8592 2.3904 -3.9168 2.4048 -3.96C2.448 -4.0608 2.8224 -4.4064 2.8368 -4.4208C3.1968 -4.7952 3.5712 -5.1264 3.9168 -5.5152Z"/>
- <path id="g63" d="M1.524 -5.196V-5.172C1.272 -5.04 1.056 -4.836 0.816 -4.68C0.756 -4.644 0.588 -4.524 0.552 -4.476C0.54 -4.476 0.54 -4.392 0.54 -4.392V-1.848C0.54 -1.776 0.552 -1.704 0.552 -1.644C0.552 -1.38 0.42 -1.248 0.204 -1.188C0.204 -1.152 0.192 -1.116 0.192 -1.068C0.192 -1.032 0.204 -0.984 0.228 -0.96C0.252 -0.912 0.336 -0.912 0.384 -0.888C0.888 -0.744 1.428 -0.468 1.812 -0.228C2.004 -0.108 2.172 0.036 2.364 0.156L2.796 -0.528C3.276 -1.296 3.756 -2.088 3.756 -3.252C3.756 -4.188 3.384 -4.98 2.856 -5.4C2.472 -5.736 2.004 -5.844 1.536 -5.988C1.068 -6.12 0.456 -6.312 0.456 -6.924C0.456 -7.164 0.612 -7.476 0.948 -7.476V-7.716C0.324 -7.716 -0.132 -7.212 -0.132 -6.624C-0.132 -5.904 0.576 -5.592 1.056 -5.388C1.212 -5.316 1.368 -5.244 1.524 -5.196ZM1.356 -1.176V-4.08C1.356 -4.176 1.344 -4.284 1.344 -4.392C1.344 -4.644 1.44 -4.812 1.596 -4.932C1.644 -4.98 1.716 -5.052 1.788 -5.052C1.872 -5.052 1.992 -4.98 2.052 -4.944C2.724 -4.584 3.348 -3.864 3.348 -2.892C3.348 -2.244 3.144 -1.656 2.916 -1.188C2.88 -1.128 2.82 -0.96 2.712 -0.96C2.688 -0.96 2.664 -0.96 2.652 -0.972L2.388 -1.008C2.04 -1.068 1.704 -1.128 1.356 -1.176Z"/>
- <path id="g64" d="M1.5552 -9.3888L1.656 -7.3152L1.7856 -7.56C2.016 -8.1792 2.2752 -8.784 2.52 -9.3888H1.5552ZM1.656 -7.128L0.9792 -6.552C0.9216 -6.5088 0.7776 -6.4368 0.7776 -6.3504V-6.336C0.7776 -6.264 0.864 -6.192 0.9072 -6.1488L1.2528 -5.7312H0.9936C0.9792 -4.3776 1.0224 -2.9664 0.9792 -1.656C0.792 -1.4544 0.576 -1.2816 0.36 -1.0944V-1.08L1.5264 0.3024H1.5408L2.2176 -0.2736C2.2752 -0.3168 2.4192 -0.3888 2.4192 -0.4752V-0.4896C2.4192 -0.5616 2.3328 -0.6336 2.2896 -0.6768L1.944 -1.0944H2.2032C2.2176 -2.448 2.1744 -3.8592 2.2176 -5.1696C2.4048 -5.3712 2.6208 -5.544 2.8368 -5.7312V-5.7456L1.656 -7.128Z"/>
- <path id="g65" d="M1.692 -7.428C1.656 -7.428 1.656 -7.164 1.656 -6.96C1.656 -6.84 1.668 -6.564 1.656 -6.564C1.656 -6.492 1.644 -6.42 1.632 -6.348C1.632 -6.324 1.632 -6.3 1.632 -6.264C1.632 -6.252 1.632 -6.228 1.632 -6.216C1.668 -6.168 1.752 -6.096 1.824 -6.096C1.92 -6.096 2.124 -6.348 2.136 -6.372C2.376 -6.66 2.496 -7.056 2.496 -7.428C2.496 -7.644 2.34 -7.812 2.124 -7.812C1.872 -7.812 1.728 -7.632 1.692 -7.428ZM3.288 -6.204C3.348 -6.168 3.42 -6.096 3.492 -6.096C3.528 -6.096 3.564 -6.132 3.6 -6.156C3.936 -6.396 4.164 -6.936 4.164 -7.428C4.164 -7.668 3.996 -7.812 3.78 -7.812C3.384 -7.812 3.324 -7.368 3.324 -6.972C3.312 -6.708 3.336 -6.456 3.288 -6.204ZM1.944 -5.808L1.62 -5.472C1.356 -5.208 1.092 -4.944 0.888 -4.632C0.456 -3.972 0.204 -3.048 0.204 -2.028C0.204 -1.896 0.216 -1.776 0.228 -1.644C0.312 -0.948 0.78 -0.3 1.356 -0.012L1.164 0.156L1.536 0.144C2.004 -0.192 2.4 -0.588 2.844 -0.936C2.88 -0.732 2.94 -0.528 3.012 -0.336C3.036 -0.3 3.156 -0.048 3.156 -0.024C3.156 0.036 3.084 0.108 3.048 0.156L3.348 0.144C3.6 -0.12 3.84 -0.396 4.056 -0.696L4.068 -1.044C4.044 -1.02 3.996 -0.984 3.948 -0.984C3.816 -0.984 3.696 -1.14 3.648 -1.236C3.624 -1.308 3.624 -1.392 3.624 -1.476V-3.048C3.624 -3.192 3.612 -3.348 3.612 -3.504C3.612 -3.936 3.708 -4.248 3.924 -4.512C3.96 -4.572 4.032 -4.62 4.032 -4.68C4.032 -4.764 3.9 -4.884 3.888 -4.908C3.78 -5.052 3.744 -5.064 3.504 -5.1C3.012 -5.232 2.688 -5.352 2.268 -5.592C2.16 -5.664 2.052 -5.748 1.944 -5.808ZM1.452 -4.968C1.608 -4.896 2.4 -4.416 2.424 -4.404L2.664 -4.26C2.76 -4.212 2.808 -4.164 2.808 -4.032C2.808 -3.996 2.808 -3.96 2.808 -3.936V-1.488C2.808 -1.452 2.808 -1.416 2.808 -1.368C2.808 -1.332 2.808 -1.296 2.796 -1.26C2.736 -1.092 2.304 -0.972 2.124 -0.972C1.644 -0.972 1.284 -1.392 1.164 -1.836C1.092 -2.076 1.08 -2.316 1.08 -2.556C1.08 -2.7 1.092 -2.856 1.092 -3C1.104 -3.552 1.092 -4.14 1.296 -4.668C1.332 -4.776 1.404 -4.872 1.452 -4.968Z"/>
- <path id="g66" d="M1.848 -7.8C1.8 -7.8 1.752 -7.788 1.716 -7.764C1.464 -7.656 1.452 -7.344 1.452 -7.092C1.452 -7.056 1.452 -7.008 1.452 -6.972V-6.792C1.452 -6.708 1.44 -6.624 1.44 -6.54C1.44 -6.48 1.44 -6.408 1.428 -6.348C1.428 -6.324 1.428 -6.3 1.428 -6.264C1.428 -6.252 1.428 -6.228 1.428 -6.216C1.464 -6.168 1.548 -6.096 1.62 -6.096C1.656 -6.096 1.692 -6.132 1.728 -6.156C2.04 -6.42 2.28 -6.924 2.28 -7.392C2.28 -7.644 2.172 -7.812 1.92 -7.812C1.896 -7.812 1.872 -7.8 1.848 -7.8ZM3.084 -6.204C3.144 -6.168 3.216 -6.096 3.288 -6.096C3.336 -6.096 3.384 -6.144 3.408 -6.156C3.732 -6.48 3.96 -6.828 3.96 -7.428C3.96 -7.668 3.792 -7.812 3.576 -7.812C3.336 -7.812 3.204 -7.632 3.156 -7.428C3.108 -7.176 3.108 -6.36 3.084 -6.204ZM1.188 -5.808L0.204 -4.548V-4.536L0.384 -4.392H0.396C0.432 -4.44 0.588 -4.668 0.648 -4.668C0.744 -4.668 0.828 -4.488 0.852 -4.452C0.96 -4.248 0.972 -4.032 0.972 -3.804C0.972 -3.768 0.972 -3.72 0.972 -3.684V-1.368C0.972 -1.332 0.972 -1.284 0.972 -1.248C0.972 -0.936 0.744 -0.828 0.492 -0.756V-0.504C0.924 -0.504 1.296 -0.276 1.512 0.024C1.56 0.084 1.584 0.156 1.692 0.156C1.86 0.156 1.98 -0.036 2.088 -0.144L3.12 -1.176C3.24 -0.9 3.384 -0.624 3.516 -0.348C3.564 -0.252 3.648 -0.132 3.648 -0.024C3.648 0 3.636 0.012 3.636 0.036L3.84 0.156L4.776 -1.344L4.56 -1.464C4.524 -1.404 4.38 -1.14 4.332 -1.128C4.296 -1.128 4.272 -1.14 4.248 -1.164C4.056 -1.308 3.936 -1.536 3.936 -1.848C3.936 -1.92 3.936 -1.992 3.936 -2.052V-3.888C3.936 -4.092 3.936 -4.308 3.936 -4.524C3.936 -4.728 3.924 -4.968 4.02 -5.088C4.044 -5.136 4.116 -5.16 4.128 -5.208C4.14 -5.208 4.14 -5.352 4.14 -5.352C3.9 -5.4 3.684 -5.568 3.612 -5.808C3.588 -5.808 3.564 -5.808 3.54 -5.808C3.444 -5.808 3.432 -5.76 3.396 -5.7C3.312 -5.52 3.096 -5.4 2.916 -5.352C2.916 -5.328 2.916 -5.304 2.916 -5.28C2.916 -5.16 3.024 -5.112 3.06 -5.052C3.12 -4.92 3.12 -4.764 3.12 -4.584C3.12 -4.416 3.12 -4.248 3.12 -4.092V-1.932C3.12 -1.848 3.132 -1.764 3.132 -1.68C3.132 -1.488 3.06 -1.464 2.94 -1.344L2.52 -0.924C2.472 -0.876 2.388 -0.756 2.316 -0.756C2.256 -0.756 2.208 -0.816 2.172 -0.84L1.932 -1.056C1.848 -1.116 1.788 -1.164 1.788 -1.308V-3.54C1.788 -4.056 1.776 -4.536 1.608 -5.028C1.536 -5.256 1.332 -5.664 1.188 -5.808Z"/>
- <path id="g67" d="M1.872 -5.808L1.152 -5.088C1.068 -5.004 0.972 -4.92 0.912 -4.812L0.972 -4.716L1.872 -3.816H1.884L2.604 -4.536C2.688 -4.62 2.784 -4.704 2.844 -4.812L2.784 -4.908L1.872 -5.808ZM0.888 1.812L1.104 1.92L2.712 -0.588C2.76 -0.648 2.844 -0.744 2.844 -0.816C2.844 -0.876 2.772 -0.936 2.736 -0.972L2.052 -1.656C2.004 -1.704 1.944 -1.788 1.884 -1.8C1.848 -1.8 1.812 -1.776 1.788 -1.752C1.728 -1.704 1.128 -1.092 1.128 -1.092C1.068 -1.032 0.948 -0.948 0.924 -0.864C0.912 -0.864 0.912 -0.828 0.912 -0.828S0.936 -0.756 0.948 -0.756L1.092 -0.576C1.26 -0.312 1.344 0 1.344 0.36C1.344 0.708 1.26 1.056 1.116 1.368C1.044 1.524 0.948 1.656 0.888 1.812Z"/>
- <path id="g68" d="M1.872 0.156H1.884L2.868 -0.828C2.784 -0.924 2.688 -1.02 2.604 -1.104L2.16 -1.548C2.124 -1.584 1.92 -1.8 1.872 -1.8C1.8 -1.8 1.716 -1.68 1.668 -1.632L1.104 -1.068C1.068 -1.032 0.912 -0.912 0.912 -0.828C0.924 -0.792 0.96 -0.756 0.984 -0.732L1.872 0.156Z"/>
- <path id="g69" d="M1.944 -5.808L1.62 -5.472C1.356 -5.208 1.092 -4.944 0.888 -4.632C0.456 -3.972 0.204 -3.048 0.204 -2.028C0.204 -1.896 0.216 -1.776 0.228 -1.644C0.312 -0.948 0.78 -0.3 1.356 -0.012L1.164 0.156L1.536 0.144C2.004 -0.192 2.4 -0.588 2.844 -0.936C2.88 -0.732 2.94 -0.528 3.012 -0.336C3.036 -0.3 3.156 -0.048 3.156 -0.024C3.156 0.036 3.084 0.108 3.048 0.156L3.348 0.144C3.6 -0.12 3.84 -0.396 4.056 -0.696L4.068 -1.044C4.044 -1.02 3.996 -0.984 3.948 -0.984C3.816 -0.984 3.696 -1.14 3.648 -1.236C3.624 -1.308 3.624 -1.392 3.624 -1.476V-3.048C3.624 -3.192 3.612 -3.348 3.612 -3.504C3.612 -3.936 3.708 -4.248 3.924 -4.512C3.96 -4.572 4.032 -4.62 4.032 -4.68C4.032 -4.764 3.9 -4.884 3.888 -4.908C3.78 -5.052 3.744 -5.064 3.504 -5.1C3.012 -5.232 2.688 -5.352 2.268 -5.592C2.16 -5.664 2.052 -5.748 1.944 -5.808ZM1.452 -4.968C1.608 -4.896 2.4 -4.416 2.424 -4.404L2.664 -4.26C2.76 -4.212 2.808 -4.164 2.808 -4.032C2.808 -3.996 2.808 -3.96 2.808 -3.936V-1.488C2.808 -1.452 2.808 -1.416 2.808 -1.368C2.808 -1.332 2.808 -1.296 2.796 -1.26C2.736 -1.092 2.304 -0.972 2.124 -0.972C1.644 -0.972 1.284 -1.392 1.164 -1.836C1.092 -2.076 1.08 -2.316 1.08 -2.556C1.08 -2.7 1.092 -2.856 1.092 -3C1.104 -3.552 1.092 -4.14 1.296 -4.668C1.332 -4.776 1.404 -4.872 1.452 -4.968Z"/>
- <path id="g70" d="M1.9872 -7.128L1.1376 -6.2784V-6.264L1.9872 -5.4144H2.0016L2.8512 -6.264V-6.2784L1.9872 -7.128ZM1.9872 -1.4112L1.1376 -0.5616V-0.5472L1.9872 0.3024H2.0016L2.8512 -0.5472V-0.5616L1.9872 -1.4112Z"/>
- <path id="g71" d="M17.489 -47.7353C17.0715 -47.5497 16.8396 -47.0858 16.886 -46.4364C16.9787 -45.4622 17.3035 -44.6736 17.9065 -44.0705C18.3704 -43.6066 18.8807 -43.3283 19.4374 -43.2819L19.623 -43.2355L19.4374 -43.1891C18.4168 -42.6788 17.489 -42.6788 16.3757 -43.1427C15.6334 -43.421 14.5665 -43.9777 13.4067 -44.72L12.8036 -45.0911V-45.2766C12.8036 -45.7405 12.3861 -46.0189 11.9686 -45.8333L11.8294 -45.7405L11.0872 -46.1117C10.345 -46.4828 9.60273 -46.7611 8.90688 -46.9003C6.81933 -47.3178 4.639 -46.7611 2.87618 -45.2766C1.80921 -44.3952 0.83502 -43.0035 0.37112 -41.6582C0.27834 -41.4263 0.27834 -41.4263 0.13917 -41.3799C-0.09278 -41.3335 -0.32473 -41.1015 -0.32473 -40.8232C-0.37112 -40.5912 -0.27834 -40.4057 -0.13917 -40.2665L0 -40.1737L-0.04639 -39.8954C-0.04639 -39.7098 -0.09278 -39.4315 -0.09278 -39.2459C-0.13917 -38.8748 -0.13917 -38.8748 -0.23195 -38.8284C-0.41751 -38.7356 -0.4639 -38.5965 -0.51029 -38.4573C-0.51029 -38.2254 -0.41751 -37.9934 -0.23195 -37.9006C-0.09278 -37.8542 -0.09278 -37.8078 -0.04639 -37.5759C-0.04639 -37.1584 0.09278 -36.4161 0.23195 -35.9522C0.55668 -34.6997 1.25253 -33.4472 2.08755 -32.4266L2.45867 -32.0555L2.3195 -31.9627C1.71643 -31.4988 1.29892 -30.9885 1.06697 -30.2927L0.9278 -29.9215V-29.3185C0.9278 -28.7154 0.9278 -28.669 1.02058 -28.3907C1.34531 -27.5557 1.8556 -27.0918 2.55145 -27.0454C2.69062 -27.0454 2.92257 -27.0454 3.01535 -27.0918C3.61842 -27.1845 4.1751 -27.6948 4.31427 -28.3443C4.49983 -28.9937 4.26788 -29.4576 3.61842 -29.6432C3.01535 -29.8288 2.41228 -29.6432 2.18033 -29.2257C1.99477 -28.8082 2.22672 -28.3907 2.64423 -28.3907C3.15452 -28.3907 3.34008 -28.9937 2.96896 -29.3185C2.87618 -29.3649 2.87618 -29.3649 2.96896 -29.4113C2.96896 -29.4113 3.15452 -29.4113 3.29369 -29.4113C3.57203 -29.4113 3.85037 -29.2721 3.98954 -29.0865S4.12871 -28.6226 4.03593 -28.3443C3.89676 -27.9268 3.61842 -27.602 3.2473 -27.4165C3.06174 -27.3701 2.96896 -27.3237 2.69062 -27.3237C2.22672 -27.3237 2.04116 -27.4165 1.76282 -27.6948C1.3917 -28.0659 1.20614 -28.6226 1.20614 -29.3185C1.20614 -30.2927 1.62365 -31.0813 2.41228 -31.6844L2.64423 -31.8699L2.92257 -31.5916C3.57203 -30.9885 4.49983 -30.3854 5.28846 -30.0143C7.56157 -28.9474 10.0202 -28.8546 12.4789 -29.6896C13.7778 -30.1535 14.8448 -30.7102 17.489 -32.3802C18.8807 -33.2616 20.1333 -34.0039 20.0405 -33.8647C19.9941 -33.8647 19.7621 -33.6327 19.4374 -33.4008C17.6746 -31.8699 15.7262 -29.9679 12.8964 -26.8598L12.7109 -26.6279L12.5717 -26.6742C12.2933 -26.767 12.1078 -26.9526 11.9686 -27.4629C11.8294 -27.8804 11.7367 -28.0196 11.5511 -28.1123S11.18 -28.2051 10.9944 -28.0659C10.8553 -27.9268 10.7161 -27.6948 10.4841 -27.0918C10.113 -26.0248 9.69551 -25.3289 9.23161 -24.865C8.53576 -24.2156 7.60796 -23.9836 6.9585 -24.4011C6.68016 -24.5403 6.26265 -25.0506 6.07709 -25.4217C5.79875 -25.8856 5.75236 -26.5351 5.89153 -26.9062L5.93792 -26.999L6.0307 -26.9526C6.21626 -26.767 6.40182 -26.7206 6.63377 -26.8598C6.9585 -27.0454 6.9585 -27.5093 6.63377 -27.7412C6.30904 -27.9268 5.93792 -27.6948 5.70597 -27.1381C5.5668 -26.9062 5.5668 -26.8598 5.5668 -26.4887C5.52041 -25.7001 5.79875 -25.0506 6.44821 -24.4475C6.9585 -23.8908 7.60796 -23.7517 8.39659 -24.03C9.46356 -24.4011 10.345 -25.4681 10.7625 -27.0454C10.948 -27.602 11.0408 -27.7876 11.18 -27.834C11.3655 -27.9732 11.6439 -27.834 11.7367 -27.6484C11.8294 -27.5093 11.7831 -27.3701 11.6903 -26.9526C11.5975 -26.4887 11.5975 -26.3495 11.7367 -26.2103C11.8294 -26.0712 11.9222 -26.0712 12.1542 -26.164L12.3397 -26.2103L12.247 -26.1176C12.2006 -26.0712 11.6439 -25.4217 11.0408 -24.7259C10.0202 -23.6125 9.88107 -23.4733 9.78829 -23.4733C9.78829 -23.5197 9.64912 -23.5197 9.55634 -23.5197C9.09244 -23.5197 8.8141 -23.0558 8.99966 -22.6383L9.04605 -22.4991L8.39659 -21.8497C7.79352 -21.2466 7.09767 -20.6435 7.00489 -20.6435C7.00489 -20.6435 6.91211 -20.6899 6.86572 -20.7827C6.40182 -21.525 5.42763 -22.128 4.59261 -22.2208H4.31427L4.45344 -22.3136C4.96373 -22.4991 5.33485 -23.0094 5.42763 -23.6125C5.52041 -24.1228 5.33485 -24.7259 4.91734 -25.1434C4.22149 -25.7928 3.20091 -25.932 2.3195 -25.4217C2.08755 -25.2362 1.71643 -24.865 1.53087 -24.5867C1.25253 -24.03 1.06697 -23.3342 1.15975 -22.6847C1.25253 -22.128 1.48448 -21.525 1.76282 -21.1074C1.76282 -21.0611 1.76282 -21.0147 1.62365 -20.8291C1.15975 -20.0405 1.02058 -18.9735 1.34531 -18.1849C1.48448 -17.9065 1.71643 -17.5354 1.8556 -17.3962C2.50506 -16.7932 3.43286 -16.7468 3.98954 -17.2571C4.26788 -17.489 4.36066 -17.721 4.36066 -18.0457C4.36066 -18.2777 4.36066 -18.3704 4.26788 -18.5096C4.08232 -18.8807 3.7112 -19.0663 3.29369 -19.0199C2.64423 -18.9735 2.22672 -18.4632 2.45867 -17.9993S3.34008 -17.6282 3.43286 -18.1849C3.47925 -18.324 3.34008 -18.6024 3.20091 -18.6488C3.10813 -18.6952 3.20091 -18.7416 3.38647 -18.7416C3.75759 -18.7416 4.03593 -18.5096 4.08232 -18.1849C4.12871 -17.8138 3.94315 -17.489 3.57203 -17.3035C3.38647 -17.2107 3.29369 -17.2107 3.06174 -17.2107C2.7834 -17.2107 2.73701 -17.2107 2.45867 -17.3499C1.62365 -17.7674 1.25253 -18.9271 1.57726 -19.9941C1.71643 -20.3188 1.90199 -20.7363 1.94838 -20.7827C1.99477 -20.7827 2.08755 -20.6899 2.22672 -20.5508C3.29369 -19.5766 4.87095 -19.2982 6.21626 -19.8549C6.35543 -19.9477 6.58738 -20.0405 6.68016 -20.0869C6.81933 -20.1796 6.91211 -20.226 6.91211 -20.1796C6.9585 -20.1333 7.14406 -19.5766 7.19045 -19.2982C7.28323 -18.8807 7.32962 -18.1385 7.23684 -17.6746C7.05128 -16.7468 6.54099 -15.7726 5.75236 -14.7984C5.61319 -14.6128 5.38124 -14.4273 5.33485 -14.3809C4.31427 -13.7314 3.85037 -13.4067 3.2473 -12.8036C1.94838 -11.5511 1.11336 -10.0202 0.78863 -8.39659C0.69585 -8.11825 0.69585 -8.07186 0.60307 -8.07186C0.4639 -8.02547 0.27834 -7.8863 0.23195 -7.79352C0.04639 -7.46879 0.18556 -7.00489 0.4639 -6.86572C0.60307 -6.81933 0.60307 -6.81933 0.60307 -6.4946C0.64946 -5.65958 0.74224 -5.14929 0.97419 -4.49983C1.11336 -3.98954 1.48448 -3.2473 1.71643 -2.87618C3.01535 -0.88141 5.1029 0.18556 7.32962 0.09278C7.8863 0.09278 8.25742 0 8.76771 -0.09278C10.0666 -0.51029 11.2264 -1.43809 11.8294 -2.55145C12.5253 -3.89676 12.5717 -5.47402 11.9222 -6.72655L11.7367 -7.09767L12.015 -7.00489C12.6181 -6.77294 12.85 -6.77294 13.685 -6.77294C14.4273 -6.77294 14.4737 -6.77294 14.8912 -6.86572L15.3551 -7.00489L15.4943 -6.86572C15.5406 -6.81933 15.819 -6.58738 16.0509 -6.35543C18.0457 -4.54622 20.4116 -3.15452 22.4528 -2.69062C22.6383 -2.64423 22.8239 -2.59784 22.8239 -2.59784C22.8703 -2.55145 22.2672 -1.80921 21.9425 -1.48448C21.293 -0.83502 20.4116 -0.37112 19.6694 -0.23195C19.5302 -0.23195 19.391 -0.18556 19.3446 -0.18556C19.2518 -0.13917 19.2518 -0.18556 19.391 -0.32473C19.5766 -0.51029 19.6694 -0.74224 19.6694 -1.02058C19.6694 -1.76282 19.0199 -2.27311 18.324 -2.04116C18.0457 -1.99477 17.721 -1.67004 17.6282 -1.3917C17.489 -1.02058 17.5818 -0.64946 17.8601 -0.32473L17.9993 -0.18556L17.7674 -0.23195C16.7004 -0.4639 15.819 -1.15975 15.3551 -2.04116C15.1231 -2.50506 14.984 -3.2473 15.0767 -3.61842V-3.75759L15.1695 -3.61842C15.3551 -3.43286 15.587 -3.38647 15.819 -3.52564C16.0045 -3.61842 16.0973 -3.75759 16.0973 -3.98954C16.0973 -4.26788 15.8654 -4.49983 15.587 -4.49983C15.2159 -4.49983 14.9376 -4.26788 14.7984 -3.85037C14.6592 -3.2473 14.8912 -2.22672 15.3551 -1.48448C15.8654 -0.74224 16.8396 -0.13917 17.7674 0.04639C18.1849 0.13917 19.1127 0.13917 19.5766 0.04639C20.226 -0.04639 20.8291 -0.32473 21.4322 -0.69585C21.8961 -1.02058 22.6383 -1.76282 22.9167 -2.18033L23.1486 -2.50506L23.5661 -2.45867C23.8908 -2.41228 24.262 -2.36589 24.865 -2.36589H25.7001L25.7928 -2.18033C26.1176 -1.53087 26.767 -0.9278 27.4629 -0.64946C27.9268 -0.4639 28.1587 -0.41751 28.669 -0.37112C29.0401 -0.37112 29.1329 -0.41751 29.2721 -0.4639C29.8752 -0.74224 30.0143 -1.34531 29.5504 -1.62365C29.4576 -1.71643 29.4113 -1.71643 29.2257 -1.71643C29.0865 -1.67004 29.0401 -1.67004 28.901 -1.53087C28.8082 -1.43809 28.8082 -1.3917 28.8082 -1.20614C28.8082 -0.97419 28.8082 -0.9278 28.901 -0.83502C28.9474 -0.78863 29.0401 -0.69585 29.0401 -0.69585C29.0401 -0.64946 28.4371 -0.64946 28.1587 -0.69585C27.5557 -0.83502 27.0454 -1.11336 26.5815 -1.57726C26.3031 -1.8556 26.0248 -2.27311 26.0248 -2.36589C26.0248 -2.41228 26.1176 -2.41228 26.2567 -2.45867C26.3495 -2.45867 26.6742 -2.50506 26.9062 -2.55145C28.3443 -2.82979 29.736 -3.43286 31.1741 -4.40705L31.638 -4.68539L31.6844 -4.49983C31.8235 -3.89676 32.241 -3.06174 32.6586 -2.45867C33.0297 -1.99477 33.6327 -1.43809 34.0966 -1.06697C34.6997 -0.64946 35.5347 -0.27834 36.277 -0.09278C36.9264 0.04639 37.2976 0.09278 38.0862 0.09278C38.7356 0.09278 38.8748 0.09278 39.2923 0C40.2665 -0.13917 41.1015 -0.55668 41.8902 -1.15975C42.0293 -1.25253 42.1685 -1.34531 42.1685 -1.34531C42.2149 -1.34531 42.3077 -1.20614 42.4005 -1.06697C42.8644 -0.51029 43.4674 -0.09278 44.1633 0.04639C44.3952 0.09278 44.5808 0.13917 44.9055 0.13917C45.4158 0.13917 45.7405 0.04639 46.1117 -0.09278C46.4364 -0.23195 46.7611 -0.60307 46.9003 -0.88141C46.9931 -1.06697 46.9931 -1.11336 46.9931 -1.43809S46.9931 -1.80921 46.9003 -1.99477S46.5756 -2.41228 46.39 -2.45867C46.158 -2.55145 45.6941 -2.50506 45.4622 -2.41228C45.2766 -2.3195 45.0447 -2.08755 44.9519 -1.94838C44.8591 -1.67004 44.9519 -1.34531 45.1839 -1.15975C45.323 -1.06697 45.6478 -1.06697 45.7869 -1.15975C46.0653 -1.34531 46.158 -1.67004 46.0189 -1.90199C45.9725 -1.99477 45.8797 -2.08755 45.8333 -2.08755C45.7405 -2.18033 45.7869 -2.22672 46.0189 -2.22672S46.2972 -2.18033 46.39 -2.13394C46.7611 -1.90199 46.8539 -1.3917 46.6219 -0.9278C46.4828 -0.69585 46.2044 -0.4639 45.9725 -0.32473C45.323 -0.04639 44.488 -0.04639 43.7922 -0.37112C43.3283 -0.55668 42.818 -0.97419 42.5396 -1.34531L42.4005 -1.57726L42.6788 -1.8556C43.5602 -2.7834 44.1633 -3.98954 44.488 -5.28846C44.5808 -5.75236 44.5808 -5.75236 44.6736 -5.75236C44.9055 -5.79875 45.1839 -6.21626 45.0911 -6.44821C45.0447 -6.68016 44.8591 -6.91211 44.72 -6.9585C44.6272 -7.00489 44.6272 -7.00489 44.6272 -7.23684C44.6272 -7.8863 44.4416 -8.8141 44.2097 -9.60273C43.8849 -10.4377 43.3283 -11.4583 42.7252 -12.1542C42.586 -12.3397 42.4932 -12.4325 42.4932 -12.4789C42.4932 -12.4789 42.6324 -12.4325 42.7716 -12.4325C43.2819 -12.3861 44.0241 -12.5253 44.488 -12.7572C45.4158 -13.2211 46.0189 -14.1489 45.9725 -15.0304C45.8797 -15.6798 45.6014 -16.2365 45.0911 -16.5612C44.3024 -17.0715 43.3746 -17.0251 42.7716 -16.4221C42.4932 -16.1901 42.3541 -16.0045 42.2613 -15.6798C42.0293 -14.8912 42.4932 -13.9634 43.2819 -13.7778C43.6994 -13.6387 44.3024 -13.7314 44.6272 -14.0098C44.8591 -14.2417 44.9055 -14.6592 44.7663 -14.8448C44.488 -15.2623 44.0241 -15.2623 43.7922 -14.8448C43.6066 -14.6128 43.6994 -14.2417 43.9313 -14.1026C44.0705 -14.0098 43.9777 -13.9634 43.653 -14.0098C43.2819 -14.0098 43.0499 -14.1026 42.818 -14.3809S42.5396 -14.7984 42.5396 -15.2159C42.5396 -15.5406 42.5396 -15.587 42.6324 -15.819C43.0963 -16.7004 44.3024 -16.886 45.0911 -16.1901C45.4622 -15.819 45.6478 -15.4479 45.6478 -14.8912C45.6478 -14.6128 45.6478 -14.5201 45.555 -14.3345C45.323 -13.5923 44.6736 -13.0356 43.8385 -12.8036C43.5138 -12.7109 42.7716 -12.6645 42.4468 -12.7572C42.1685 -12.8036 42.1685 -12.8036 41.8438 -13.082C41.4727 -13.4531 40.9624 -13.8242 40.4985 -14.1026C40.3129 -14.2417 40.1273 -14.3345 40.1273 -14.3809C40.081 -14.3809 40.2201 -14.6128 40.3593 -14.9376C41.3335 -16.7932 42.0293 -18.7416 42.4005 -20.5972C42.4932 -20.9219 42.5396 -21.2002 42.5396 -21.2466C42.5396 -21.2466 42.6788 -21.293 42.7716 -21.3394C44.6736 -21.9425 46.0653 -23.9372 46.4364 -26.5815C46.4828 -27.1381 46.4828 -28.1587 46.4364 -28.6226C46.1117 -30.7102 44.8591 -32.241 43.2819 -32.5658C42.9107 -32.6586 42.1685 -32.6586 41.5654 -32.5658C41.1943 -32.5194 41.1015 -32.5194 41.1015 -32.5658C41.0088 -32.8441 40.2665 -34.143 39.849 -34.7925L39.6171 -35.1636L39.9882 -35.7203C40.8232 -37.112 41.3799 -38.3645 41.6118 -39.5243C41.7046 -40.0346 41.751 -40.7768 41.7046 -41.1015V-41.4263L41.9829 -41.3799C43.2355 -41.2871 44.3952 -40.7768 45.2766 -39.9418C46.2508 -39.014 46.7147 -37.947 46.8075 -36.7409C46.8539 -35.5811 46.4828 -34.6069 45.7405 -33.9111C45.4622 -33.6327 45.1375 -33.4472 44.72 -33.308C44.3488 -33.1688 43.6994 -33.1225 43.3283 -33.2152C42.4932 -33.4472 41.8438 -33.9575 41.4727 -34.7461C41.3799 -34.8853 41.3335 -34.9781 41.3335 -35.0244C41.3335 -35.0244 41.4263 -35.0244 41.4727 -34.9781C41.6582 -34.8853 42.0293 -34.8853 42.2613 -35.0244C42.4468 -35.1636 42.586 -35.3956 42.586 -35.6275C42.6324 -35.9986 42.4468 -36.277 42.1685 -36.4161C41.8438 -36.5553 41.4727 -36.5089 41.2407 -36.2306L41.1015 -36.1378L41.1479 -36.3234C41.2407 -37.1584 41.6582 -37.8078 42.2613 -38.0862C42.4932 -38.2254 42.5396 -38.2254 42.9107 -38.2254C43.2355 -38.2254 43.2819 -38.2254 43.5138 -38.0862C43.9313 -37.9006 44.2097 -37.4831 44.3024 -36.9728L44.3488 -36.7409H44.488C44.6272 -36.7409 44.6272 -36.7409 44.6272 -36.8337C44.6272 -37.0192 44.5344 -37.4367 44.3952 -37.6223C43.8385 -38.6893 42.4468 -38.8284 41.6118 -37.947C40.2665 -36.6017 40.8232 -34.0503 42.6324 -33.1688C43.0499 -32.9833 43.421 -32.8905 43.8849 -32.8905C44.488 -32.8905 44.9983 -33.0297 45.4622 -33.3544C46.7611 -34.143 47.3642 -35.9059 46.9467 -37.5759C46.5292 -39.3851 45.1375 -40.8696 43.3283 -41.4263C43.1891 -41.4727 43.0963 -41.519 43.0963 -41.519S43.1891 -41.5654 43.3283 -41.5654C43.653 -41.6118 44.4416 -41.8438 44.8127 -41.9829C46.39 -42.586 47.3178 -43.5602 47.5034 -44.8591C47.6889 -45.9725 47.1322 -46.8539 46.39 -46.6683C45.8333 -46.4828 45.7405 -45.7869 46.158 -45.4158C46.2508 -45.3694 46.3436 -45.323 46.5292 -45.323S46.7611 -45.323 46.9003 -45.4158C46.9931 -45.4622 47.1322 -45.555 47.1322 -45.6014L47.225 -45.7405L47.2714 -45.555C47.2714 -45.323 47.2714 -44.8591 47.1786 -44.5808C47.0858 -44.2561 46.8075 -43.7458 46.6219 -43.4674C46.158 -42.9107 45.3694 -42.4468 44.4416 -42.1221C43.7458 -41.9366 42.9571 -41.7974 42.0293 -41.7046H41.6582V-41.8902C41.519 -42.6788 41.1015 -43.6066 40.5912 -44.2561C40.1737 -44.7663 39.5243 -45.1839 38.8748 -45.3694C38.4573 -45.4622 37.8078 -45.4622 37.3903 -45.3694C36.7873 -45.1839 36.2306 -44.9055 35.6739 -44.4416C35.0708 -43.8849 34.6533 -43.653 34.0039 -43.4674C33.7719 -43.3746 33.5864 -43.3746 33.2152 -43.3283C32.9369 -43.3283 32.7513 -43.3283 32.7513 -43.3283S32.7977 -43.421 32.8441 -43.4674C33.0297 -43.653 33.0761 -43.8385 32.9833 -44.0705C32.7513 -44.5344 32.0555 -44.4416 31.9627 -43.9313C31.9163 -43.653 32.1019 -43.3283 32.4266 -43.1427C32.7977 -43.0035 33.54 -43.0035 34.1894 -43.1891C34.4678 -43.2819 35.0244 -43.5602 35.1172 -43.6066C35.1636 -43.6994 35.21 -43.653 35.21 -43.3746C35.2564 -42.4468 36.1378 -41.7974 37.112 -41.9829C37.7151 -42.1221 38.0398 -42.4932 37.9934 -42.9571C37.9934 -43.2819 37.7615 -43.5138 37.3903 -43.5138C36.7409 -43.5138 36.5089 -42.6788 37.0656 -42.3541L37.1584 -42.3077L36.9728 -42.2613C36.2306 -42.1221 35.4883 -42.6788 35.4883 -43.421C35.4883 -43.7458 35.5347 -43.8849 35.8131 -44.1633C36.5553 -44.8591 37.6223 -45.2766 38.5037 -45.1375C39.7098 -44.9519 40.684 -44.0241 41.1479 -42.6324C41.2407 -42.3541 41.3799 -41.8902 41.3799 -41.751C41.3799 -41.7046 41.2407 -41.7046 40.9624 -41.7046C40.081 -41.6582 39.1068 -41.4263 38.3181 -41.1479S36.4625 -40.3129 35.7667 -39.7098L35.442 -39.4779L34.8853 -39.849C32.3338 -41.519 29.6896 -42.4468 26.6742 -42.6324C25.7001 -42.7252 24.7259 -42.6788 23.6125 -42.5396C21.2466 -42.2149 19.1127 -41.3799 13.8706 -38.6893C11.6439 -37.5295 10.9016 -37.2512 9.69551 -37.112C7.60796 -36.88 5.5668 -37.7151 4.639 -39.1995L4.49983 -39.4779L4.59261 -39.6171C4.77817 -39.849 5.14929 -40.2201 5.38124 -40.3593C5.61319 -40.5449 6.0307 -40.7304 6.35543 -40.8232C6.72655 -40.916 7.28323 -40.916 7.65435 -40.8232C8.62854 -40.5912 9.32439 -39.6634 9.09244 -38.8284C8.99966 -38.3181 8.62854 -37.947 8.16464 -37.947C7.93269 -37.9934 7.70074 -38.0398 7.56157 -38.2254C7.37601 -38.4109 7.28323 -38.782 7.32962 -39.0604V-39.1995L7.46879 -39.0604C7.83991 -38.6893 8.48937 -39.0604 8.3502 -39.5707C8.30381 -39.7562 8.07186 -39.9882 7.8863 -39.9882C7.56157 -39.9882 7.28323 -39.7562 7.14406 -39.4315C7.05128 -39.2459 7.05128 -39.1995 7.05128 -38.9212S7.05128 -38.5501 7.14406 -38.3645C7.32962 -37.947 7.70074 -37.7151 8.11825 -37.7151C8.39659 -37.7151 8.58215 -37.7615 8.76771 -37.9006C9.37078 -38.3181 9.55634 -39.2459 9.18522 -39.9882C9.04605 -40.2665 8.58215 -40.7304 8.25742 -40.8696C7.60796 -41.2407 6.81933 -41.2871 6.0307 -41.0088C5.47402 -40.8232 4.91734 -40.4521 4.54622 -39.9882L4.36066 -39.8026L4.31427 -39.9882C4.08232 -40.684 4.1751 -41.6118 4.49983 -42.2613C5.1029 -43.4674 6.4946 -44.1169 7.70074 -43.6994C8.3502 -43.4674 8.76771 -43.0963 9.37078 -42.1685C10.0202 -41.2407 10.345 -40.916 10.948 -40.7304C11.2264 -40.684 11.6903 -40.684 11.9686 -40.7304C12.6645 -40.916 13.2675 -41.519 13.4067 -42.1685C13.4067 -42.3077 13.4531 -42.4005 13.4995 -42.4005C13.5923 -42.4005 13.8242 -42.5396 13.917 -42.6788C14.4273 -43.2819 13.8242 -44.1633 13.082 -43.9313C12.6181 -43.7922 12.3861 -43.2819 12.5717 -42.8644C12.6645 -42.6788 12.85 -42.4932 12.9892 -42.4468C13.082 -42.4005 13.082 -42.4005 13.0356 -42.3077C13.0356 -42.2613 12.9428 -42.2149 12.85 -42.1685C12.4325 -41.9366 11.8758 -42.0757 11.4583 -42.5396C11.2264 -42.7716 11.1336 -42.9571 10.7625 -43.6066C10.3914 -44.3024 10.2058 -44.5808 9.92746 -44.8127C9.69551 -45.0911 9.46356 -45.2302 9.13883 -45.3694C8.76771 -45.555 8.48937 -45.6014 8.07186 -45.6478C7.00489 -45.6941 5.89153 -45.2302 5.05651 -44.3024C4.22149 -43.4674 3.75759 -42.4005 3.66481 -41.0551C3.61842 -40.4985 3.66481 -39.8954 3.75759 -39.2923L3.85037 -38.9212L3.75759 -38.5501C3.57203 -38.0862 3.57203 -37.8078 3.57203 -37.2512C3.57203 -35.5811 4.45344 -33.9575 6.07709 -32.8441L6.26265 -32.7049L6.07709 -32.7513C5.93792 -32.7513 5.52041 -32.7513 5.14929 -32.7513C4.54622 -32.7513 4.36066 -32.7513 4.08232 -32.6586C3.66481 -32.5658 3.15452 -32.4266 2.87618 -32.2874L2.73701 -32.1947L2.50506 -32.473C1.29892 -33.7719 0.4639 -35.5347 0.23195 -37.3439C0.13917 -37.8542 0.13917 -37.8542 0.27834 -37.947C0.41751 -37.9934 0.51029 -38.2717 0.51029 -38.4573C0.4639 -38.6429 0.37112 -38.7356 0.23195 -38.8284S0.09278 -38.9212 0.18556 -39.6171C0.23195 -39.8954 0.23195 -40.1273 0.27834 -40.1273C0.27834 -40.1273 0.37112 -40.1273 0.41751 -40.1273C0.41751 -40.1273 0.55668 -40.2201 0.60307 -40.2665C0.78863 -40.3593 0.88141 -40.5912 0.88141 -40.7768S0.78863 -41.1479 0.64946 -41.2871L0.55668 -41.3335L0.69585 -41.751C2.08755 -45.1839 5.28846 -47.225 8.53576 -46.6683C9.37078 -46.5292 10.0202 -46.3436 10.9944 -45.8333L11.6903 -45.5086L11.6439 -45.3694C11.6439 -45.1839 11.7367 -44.9055 11.9222 -44.8127C12.1078 -44.6736 12.2933 -44.6736 12.4789 -44.7663L12.6645 -44.8591L13.2211 -44.488C14.8912 -43.4674 16.1437 -42.8644 17.0715 -42.586C17.4426 -42.4932 18.0457 -42.4932 18.4632 -42.5396C19.1591 -42.6788 19.7621 -42.9571 21.1074 -43.7458C22.7775 -44.72 23.6589 -45.0447 24.6795 -45.1375C25.1434 -45.1839 25.4217 -45.1375 25.7464 -44.9983C26.0712 -44.8127 26.3031 -44.6272 26.9062 -44.0705S27.6948 -43.3746 28.0196 -43.1891C28.2979 -43.0499 28.3443 -43.0499 28.7154 -43.0499C29.1329 -43.0499 29.4113 -43.0963 29.7824 -43.2819C30.4318 -43.6066 30.8957 -44.2561 31.0349 -45.0447C31.0813 -45.6941 30.8493 -46.3436 30.3854 -46.5292C29.736 -46.8075 29.1793 -46.0653 29.6432 -45.5086C29.736 -45.3694 29.8752 -45.323 30.1071 -45.323S30.4782 -45.3694 30.6174 -45.555L30.7102 -45.6941L30.7566 -45.4622C30.7566 -45.2302 30.7102 -44.8591 30.6174 -44.5808C30.3854 -44.0241 29.7824 -43.5138 29.1793 -43.3746C29.0865 -43.3283 28.8546 -43.3283 28.669 -43.3283C28.3443 -43.3283 28.2979 -43.3746 28.0196 -43.4674C27.6948 -43.653 27.5093 -43.7922 26.9062 -44.3488S26.0712 -45.1375 25.7464 -45.2766S25.1434 -45.4622 24.6795 -45.4158C23.5661 -45.323 22.6383 -44.9519 20.8755 -43.9313C20.4116 -43.653 20.1796 -43.5602 19.7621 -43.5602C18.4632 -43.5602 17.3035 -44.8127 17.1643 -46.39C17.1643 -46.5292 17.1643 -46.7147 17.2107 -46.8075V-46.9931L17.3499 -46.8539C17.721 -46.39 18.4632 -46.7611 18.324 -47.3642C18.2313 -47.7353 17.8138 -47.9209 17.489 -47.7353ZM41.4263 -41.1943C41.4727 -40.916 41.4263 -40.2201 41.3335 -39.7562C41.1943 -38.782 40.7768 -37.6687 40.1737 -36.6017C39.9882 -36.2306 39.5243 -35.4883 39.4779 -35.442C39.4315 -35.442 39.2923 -35.5811 39.1532 -35.7667C38.2254 -37.0192 37.2512 -38.0398 35.8131 -39.1532L35.6739 -39.2923L35.8131 -39.4315C36.0914 -39.6171 36.6481 -40.0346 37.0656 -40.2665C38.2717 -40.9624 39.8026 -41.3799 41.1015 -41.4263H41.4263ZM4.54622 -37.2976C5.28846 -36.045 6.44821 -35.0244 7.83991 -34.3286C8.67493 -33.9111 9.50995 -33.6791 10.4377 -33.4936C10.948 -33.4472 12.5253 -33.4008 13.0356 -33.4936C14.0098 -33.6327 14.984 -33.9111 15.9118 -34.2358C16.654 -34.5605 17.1643 -34.7925 18.6952 -35.5347C21.1074 -36.6945 22.0816 -37.0656 23.2878 -37.3903C24.1692 -37.5759 24.6331 -37.6223 25.7928 -37.6223C26.7206 -37.6223 26.9526 -37.6223 27.3701 -37.5759C28.6226 -37.3439 29.736 -37.0192 30.8957 -36.4161C31.406 -36.1842 32.2874 -35.6275 32.4266 -35.5347C32.4266 -35.4883 32.4266 -35.3492 32.1947 -34.9317C32.0555 -34.6533 31.9163 -34.2822 31.8699 -34.1894L31.7771 -34.0039L31.406 -34.2358C30.2463 -35.0244 28.8546 -35.5347 27.4165 -35.7667C26.9062 -35.8595 25.6073 -35.8595 25.0506 -35.8131C24.5867 -35.7667 23.7981 -35.6275 23.3806 -35.5347L23.1022 -35.442L22.963 -35.5811C22.7311 -35.7667 22.4528 -35.7203 22.2208 -35.4883C22.1744 -35.442 22.128 -35.3492 22.0816 -35.2564C22.0816 -35.1636 22.0816 -35.1172 21.8961 -35.0708C21.4322 -34.9317 20.0869 -34.375 18.5096 -33.6791C17.6282 -33.2616 16.6076 -32.8441 16.2829 -32.7049C14.752 -32.1019 13.3139 -31.7308 12.247 -31.638L11.9686 -31.5916L11.8294 -31.7771C11.5975 -32.0555 11.1336 -32.0091 10.948 -31.638C10.9016 -31.5916 10.9016 -31.5916 10.3914 -31.638C8.39659 -31.7771 6.54099 -32.6122 5.33485 -33.8647C4.54622 -34.6533 4.08232 -35.4883 3.89676 -36.4625C3.80398 -36.9264 3.85037 -37.8078 3.94315 -38.179L3.98954 -38.4573L4.1751 -38.0398C4.26788 -37.8542 4.45344 -37.4831 4.54622 -37.2976ZM27.1381 -35.4883C28.669 -35.3028 30.0607 -34.7925 31.3596 -33.9575L31.6844 -33.7255L31.5916 -33.4936C31.1741 -32.4266 30.5246 -30.0607 30.3854 -29.0401C30.3391 -28.9474 30.3391 -28.901 30.2927 -28.901C29.6432 -29.1793 29.0865 -29.3649 28.4835 -29.4113C28.2979 -29.4576 27.7876 -29.4576 27.2773 -29.4576C24.7723 -29.4576 23.5197 -29.736 22.963 -30.4782C22.7775 -30.7102 22.7311 -30.9885 22.7311 -31.3596C22.7775 -32.1483 23.3806 -32.7049 24.1228 -32.6122H24.3084L24.2156 -32.5194C23.9836 -32.3802 23.8908 -32.0091 24.0764 -31.7771C24.2156 -31.5452 24.5867 -31.4988 24.8186 -31.6844C25.097 -31.9163 25.0506 -32.4266 24.7723 -32.6586C24.0764 -33.1688 23.0558 -32.8905 22.6847 -32.1483C22.4991 -31.8235 22.4528 -31.5916 22.4528 -31.3132C22.4528 -30.4782 22.9167 -29.8752 23.8908 -29.5504C24.262 -29.4113 24.9578 -29.2721 25.5145 -29.2257C25.7928 -29.2257 26.1176 -29.1793 26.2103 -29.1793H26.3495L26.0248 -28.9937C25.2362 -28.6226 24.5867 -27.9732 24.262 -27.3701C24.2156 -27.2309 24.1692 -27.1381 24.1692 -27.1381S23.8445 -27.4165 23.4269 -27.7412C22.0352 -28.8082 21.7105 -29.2721 21.5713 -30.0607C21.4322 -31.0349 21.9425 -32.1483 23.0558 -33.308C23.6125 -33.9111 24.2156 -34.2822 24.9114 -34.5142C25.1898 -34.6069 25.2825 -34.6069 25.7001 -34.6069C26.2567 -34.6069 26.3959 -34.5605 26.767 -34.375C27.2309 -34.1894 27.5093 -33.7719 27.5557 -33.308L27.602 -33.0761L27.0918 -32.2874C26.5815 -31.4988 26.4423 -31.3132 26.2567 -31.2669C26.164 -31.2669 25.9784 -31.3132 25.9784 -31.406C25.9784 -31.406 25.932 -31.4524 25.8392 -31.4524C25.7001 -31.4524 25.7001 -31.4524 25.7001 -31.3132C25.7001 -30.9885 26.0712 -30.4782 26.4887 -30.2927C27.5093 -29.8288 28.7618 -30.2927 29.2721 -31.3596C29.5968 -32.0555 29.5968 -32.7513 29.2257 -33.4936C28.9474 -34.0966 28.2979 -34.5605 27.5557 -34.7925C27.1845 -34.8853 26.2567 -34.8853 25.7464 -34.8389C24.7723 -34.6997 23.6589 -34.3286 22.5919 -33.7255C20.7827 -32.7049 19.7157 -31.7771 19.1591 -30.6638C18.8343 -30.0143 18.6952 -29.5504 18.6952 -28.8082C18.6952 -27.9732 18.8807 -27.3701 19.2982 -26.5351C19.7621 -25.5145 20.3652 -24.6331 21.7569 -23.0558C22.6383 -22.0352 23.0558 -21.4786 23.4269 -21.0147C24.3084 -19.8549 24.865 -18.8343 25.097 -17.8138C25.1898 -17.4426 25.2825 -16.7468 25.2362 -16.7004C25.2362 -16.7004 25.097 -16.7468 24.9578 -16.8396C24.03 -17.2107 23.0558 -17.8601 22.0352 -18.6488C21.293 -19.2518 21.293 -19.2982 21.1538 -19.623C21.0147 -20.0405 20.5972 -20.8755 20.3652 -21.2466C20.226 -21.4322 19.9941 -21.8033 19.7621 -22.0352C19.1127 -22.9167 18.7416 -23.5197 18.6488 -23.9836L18.556 -24.2156L18.1385 -23.7517C17.9065 -23.5197 17.6746 -23.3342 17.6746 -23.3342C17.6282 -23.3342 17.3499 -24.0764 17.2571 -24.6331C17.1643 -25.097 17.1643 -26.8598 17.2571 -27.5093C17.5818 -29.8752 18.4168 -31.8235 19.6694 -33.1225C20.1333 -33.5864 21.1074 -34.2822 21.8033 -34.6533L22.1744 -34.8389L22.2672 -34.7925C22.5455 -34.5142 23.0094 -34.6533 23.1486 -35.0244C23.195 -35.1636 23.195 -35.1636 23.3806 -35.21C23.6589 -35.3028 24.4939 -35.442 24.865 -35.4883C25.4217 -35.5811 26.6279 -35.5811 27.1381 -35.4883ZM33.1225 -34.9781C34.2822 -34.0503 35.3956 -32.8905 36.2306 -31.638L36.5553 -31.2205L36.045 -30.4782C35.7667 -30.0607 35.5347 -29.736 35.5347 -29.6896C35.4883 -29.6896 35.3956 -29.8288 35.2564 -30.0607C34.7461 -30.9885 34.0503 -31.9163 33.3544 -32.6122C32.9833 -33.0297 32.3802 -33.54 32.1019 -33.7255L32.0091 -33.8183L32.1483 -34.1894C32.241 -34.375 32.3802 -34.6997 32.5194 -34.9317C32.6586 -35.2564 32.7049 -35.3028 32.7513 -35.2564C32.7513 -35.2564 32.9369 -35.1172 33.1225 -34.9781ZM32.3802 -33.1688C32.8441 -32.7977 33.4936 -32.1019 33.8647 -31.5916C34.375 -30.9885 35.3028 -29.5504 35.3028 -29.4113C35.3028 -29.3649 35.2564 -29.2257 35.1636 -29.0865C34.6533 -28.3443 33.8647 -26.9526 33.4472 -26.1176L33.1688 -25.6537L32.9833 -26.0248C32.6586 -26.7206 32.2874 -27.2309 31.7308 -27.7876C31.4988 -28.0659 30.8957 -28.5298 30.6638 -28.669C30.6174 -28.7154 30.6174 -28.7154 30.6638 -29.1329C30.8957 -30.3391 31.2205 -31.5452 31.5916 -32.6122C31.9163 -33.6327 31.9163 -33.54 31.9627 -33.4936S32.1947 -33.308 32.3802 -33.1688ZM18.556 -33.4008C18.5096 -33.3544 16.7932 -32.2874 16.1437 -31.8235C13.685 -30.3391 11.9686 -29.6432 10.1594 -29.4576C9.23161 -29.3649 7.97908 -29.4576 7.05128 -29.6896C5.61319 -30.0607 4.22149 -30.803 3.15452 -31.7771L2.92257 -32.0091L3.2473 -32.1483C3.89676 -32.3802 4.40705 -32.473 5.19568 -32.473C6.07709 -32.473 6.77294 -32.3338 7.60796 -32.0091C8.16464 -31.7771 8.76771 -31.5916 9.278 -31.4988C9.69551 -31.406 10.4841 -31.3132 10.7625 -31.3132C10.9016 -31.3132 10.9016 -31.2669 10.9944 -31.1741C11.0872 -30.9885 11.2264 -30.9421 11.4583 -30.9421C11.6439 -30.9421 11.8294 -31.0349 11.9222 -31.2205C11.9686 -31.3132 11.9686 -31.3132 12.1078 -31.3132C12.1542 -31.3132 12.3861 -31.3596 12.6181 -31.406C14.1489 -31.5916 15.587 -32.1019 17.9065 -33.1225C18.5096 -33.4008 18.556 -33.4008 18.556 -33.4008ZM18.4168 -31.8699C17.4426 -30.2463 16.886 -28.1123 16.886 -25.9784C16.886 -24.865 17.0251 -24.03 17.3499 -23.3342C17.3962 -23.195 17.4426 -23.1022 17.4426 -23.1022C17.4426 -23.0558 16.7004 -22.4528 16.2365 -22.128C15.4015 -21.4786 14.1026 -20.6899 13.2675 -20.226C13.082 -20.0869 12.8964 -19.9941 12.8964 -19.9941C12.9428 -19.9941 13.0356 -20.0405 13.1284 -20.0405C14.2417 -20.3188 15.587 -20.1333 16.654 -19.5766S18.7416 -17.9993 19.2518 -16.886C19.6694 -16.0509 19.9013 -14.9376 19.9013 -14.0562V-13.8706L19.5766 -14.1026C18.9271 -14.4737 18.1849 -14.8912 17.3962 -15.1695C17.2107 -15.2623 17.2107 -15.2623 17.2107 -15.4015C17.2571 -15.6334 17.3035 -16.4684 17.2571 -16.654C17.1179 -17.2107 16.7468 -17.6746 16.1437 -17.9529C14.9376 -18.556 13.4067 -18.4168 11.7367 -17.5354C10.9944 -17.1643 10.113 -16.5612 9.7419 -16.0973C9.64912 -15.9582 9.60273 -15.9118 9.46356 -15.9118C8.67493 -15.7726 6.9585 -15.2159 6.26265 -14.8448L6.12348 -14.7984L6.21626 -14.9376C7.05128 -16.0509 7.46879 -16.9787 7.56157 -18.0457C7.65435 -18.7879 7.51518 -19.5302 7.19045 -20.226L7.14406 -20.3652L7.4224 -20.5972C7.60796 -20.6899 8.07186 -21.1538 8.48937 -21.5713C9.23161 -22.2672 9.278 -22.3136 9.37078 -22.3136C9.41717 -22.2672 9.50995 -22.2672 9.60273 -22.2672H9.7419V-22.0352C9.78829 -21.4786 10.2058 -20.9683 10.9016 -20.5508C11.3655 -20.2724 12.0614 -20.1333 12.5717 -20.1796C13.1748 -20.2724 13.8242 -20.7363 13.8242 -21.1074C13.8242 -21.3858 13.4995 -21.6641 13.2211 -21.6177C12.8036 -21.525 12.6645 -20.9683 12.9892 -20.6899C13.082 -20.6435 13.082 -20.6435 12.9892 -20.5972C12.9428 -20.5972 12.8036 -20.5508 12.7109 -20.5044C12.1542 -20.3652 11.3655 -20.5508 10.7625 -20.9683C10.2522 -21.3394 10.0666 -21.6641 10.0202 -22.1744C10.0202 -22.4064 10.0202 -22.4528 10.113 -22.5455C10.1594 -22.6383 10.1594 -22.7311 10.2058 -22.8703C10.2522 -23.195 10.3914 -23.4733 10.7625 -23.8445S11.5975 -24.5403 12.2006 -24.8186C12.4325 -24.9578 12.85 -25.1434 13.082 -25.2362C13.685 -25.5609 13.8706 -25.7928 13.7314 -26.164C13.6387 -26.3495 13.5459 -26.4423 13.2675 -26.4887C13.2211 -26.5351 13.1284 -26.5351 13.1284 -26.5815C13.082 -26.5815 13.2675 -26.767 13.4531 -27.0454C14.984 -28.669 16.3293 -30.0607 17.1643 -30.9421C17.5818 -31.3132 18.6488 -32.3338 18.6952 -32.3338C18.6952 -32.3338 18.556 -32.1483 18.4168 -31.8699ZM43.2355 -32.2874C43.8385 -32.1483 44.4416 -31.8235 44.8591 -31.3596C45.4158 -30.803 45.7869 -30.0607 46.0189 -29.1793C46.158 -28.669 46.2044 -28.2979 46.2044 -27.602C46.2044 -26.3495 45.9261 -25.1434 45.4158 -24.1228C44.7663 -22.8703 43.9313 -22.0816 42.818 -21.6641L42.586 -21.5713L42.6324 -21.6641C42.6324 -21.8497 42.7252 -22.5455 42.7716 -23.1022C42.8644 -23.7053 42.8644 -25.5609 42.7716 -26.2103C42.6788 -27.2309 42.4932 -28.4835 42.2613 -29.3649L42.1685 -29.6432H42.2613C42.4005 -29.6432 42.818 -29.5504 43.0963 -29.4576C44.0705 -29.1329 44.5808 -28.4835 44.5808 -27.6948C44.5808 -27.4629 44.5344 -27.3701 44.488 -27.5093C44.4416 -27.6948 43.9777 -27.7412 43.7922 -27.602C43.5602 -27.4629 43.4674 -27.1381 43.6066 -26.9062C43.7922 -26.6279 44.0705 -26.5815 44.3952 -26.7206C44.9055 -26.999 45.0447 -27.8804 44.6736 -28.5762C44.488 -28.901 44.0705 -29.3185 43.6994 -29.504S42.8644 -29.8288 42.4468 -29.9215C42.2613 -29.9215 42.0757 -29.9679 42.0757 -29.9679S42.0293 -30.1535 41.9366 -30.4318C41.7974 -30.8493 41.3799 -31.9163 41.2871 -32.1019L41.2407 -32.241L41.4727 -32.2874C41.8902 -32.3338 41.9366 -32.3338 42.4468 -32.3338C42.818 -32.3338 43.0963 -32.3338 43.2355 -32.2874ZM36.8337 -30.7102C37.0656 -30.3391 37.112 -30.3854 36.7409 -30.0143C36.5553 -29.8288 36.277 -29.5504 36.1378 -29.3649S35.9059 -29.0401 35.9059 -28.9937C35.8595 -28.9937 35.8131 -29.0401 35.7667 -29.1793L35.6739 -29.3649L35.7667 -29.504C35.9986 -29.8752 36.6945 -30.9421 36.6945 -30.9421S36.7873 -30.8493 36.8337 -30.7102ZM37.5759 -29.3649C38.3645 -27.8804 39.014 -26.0712 39.3387 -24.4475L39.4315 -23.9372L39.1995 -24.03C39.0604 -24.0764 38.8748 -24.1228 38.7356 -24.1228C38.5501 -24.1228 38.5037 -24.1228 38.4109 -23.9836C38.2254 -23.8445 38.179 -23.6589 38.179 -23.1486C38.1326 -22.7775 38.179 -22.7311 38.2254 -22.5455C38.3181 -22.4528 38.4573 -22.2208 38.6429 -22.0352C39.014 -21.6641 39.1068 -21.4786 39.1068 -21.293C39.1068 -21.1538 38.9676 -20.9219 38.8284 -20.8755C38.6893 -20.7827 38.5501 -20.8291 38.0862 -21.3394C37.6687 -21.7569 37.6687 -21.7569 37.6687 -21.9425S37.5759 -22.963 37.5295 -23.3806C37.2512 -25.1434 36.7873 -26.8598 36.1378 -28.3443L35.9986 -28.669L36.1378 -28.8546C36.3234 -29.1329 36.6945 -29.5504 36.9728 -29.8288C37.1584 -30.1071 37.2048 -30.1071 37.2512 -30.0607C37.2512 -30.0143 37.4367 -29.736 37.5759 -29.3649ZM28.4835 -29.1329C28.901 -29.0865 29.1793 -28.9937 29.5968 -28.8546C29.8288 -28.7618 30.2463 -28.6226 30.2927 -28.5762C30.2927 -28.5762 30.2463 -28.3907 30.1999 -28.1587C30.1535 -27.8804 30.1071 -27.4165 30.0607 -27.0454C30.0143 -26.7206 29.9679 -26.3959 29.9679 -26.3959C29.9215 -26.3959 29.8288 -26.4423 29.6896 -26.5351C29.2721 -26.8134 28.4835 -27.0454 27.9268 -27.0454H27.6948V-26.9062V-26.767L28.0196 -26.7206C28.669 -26.7206 29.2257 -26.4887 29.6896 -26.164L29.9215 -26.0248V-25.8392C29.8752 -25.4681 29.7824 -24.4011 29.736 -23.6125C29.736 -23.1022 29.6896 -22.5455 29.6896 -22.3136L29.6432 -21.9425L29.4576 -21.8497C29.2721 -21.7569 29.1329 -21.7569 28.8082 -21.7105C28.4371 -21.7105 27.834 -21.7569 27.6948 -21.8033C27.6948 -21.8497 27.5557 -22.0352 27.4629 -22.3136C26.8598 -23.8908 25.932 -25.3289 24.7723 -26.5351L24.4011 -26.9526L24.4939 -27.1381C24.7723 -27.7412 25.4217 -28.3907 26.1176 -28.7154C26.8134 -29.0865 27.6484 -29.2257 28.4835 -29.1329ZM35.5811 -28.901L35.6739 -28.7154L35.442 -28.3443C34.6997 -27.0918 34.0966 -25.4217 33.8647 -24.03C33.8183 -23.8445 33.8183 -23.7053 33.8183 -23.7053C33.8183 -23.7517 33.7255 -23.9372 33.6791 -24.2156C33.5864 -24.4939 33.4936 -24.8186 33.4472 -25.0042L33.3544 -25.2825L33.4936 -25.6537C33.8183 -26.2103 34.2358 -26.999 34.8853 -28.0659C35.21 -28.6226 35.4883 -29.0401 35.4883 -29.0401S35.5347 -28.9937 35.5811 -28.901ZM31.0349 -28.0659C31.5916 -27.602 32.1019 -26.999 32.5194 -26.3495C32.7049 -25.9784 32.9833 -25.4217 32.9833 -25.3289C32.9833 -25.2825 32.8905 -25.0042 32.7513 -24.7259C32.2874 -23.8445 31.4988 -21.8033 31.4988 -21.6641C31.4988 -21.6177 31.4524 -21.6177 31.3596 -21.6177C31.3132 -21.6641 30.9421 -21.6641 30.6174 -21.6641C30.2927 -21.7105 29.9679 -21.7105 29.9679 -21.7569C29.9679 -21.7569 30.0143 -21.8033 30.0607 -21.8033C30.1999 -21.9425 30.5246 -22.3136 30.6638 -22.5455C31.2669 -23.5661 31.1741 -24.9578 30.4318 -25.8856C30.2463 -26.1176 30.2463 -26.164 30.2463 -26.3031C30.2927 -26.6279 30.4782 -27.9268 30.5246 -28.1587L30.571 -28.3907L30.6638 -28.3443C30.7102 -28.2979 30.8957 -28.2051 31.0349 -28.0659ZM35.9986 -27.9732C36.6481 -26.3959 37.0656 -24.6795 37.2976 -22.7775C37.3903 -21.8961 37.3903 -21.8497 37.2512 -21.8033C37.1584 -21.7569 36.9728 -21.5713 36.7873 -21.3858C36.4161 -20.9683 36.2306 -20.8291 36.0914 -20.8291C35.9059 -20.8291 35.6739 -21.1538 35.7203 -21.3394S35.8595 -21.6177 36.1378 -21.9889C36.3234 -22.1744 36.5089 -22.4064 36.5553 -22.4991C36.6481 -22.6383 36.6481 -22.6847 36.6481 -23.1022C36.6481 -23.8445 36.5089 -24.1228 36.0914 -24.1228S35.3028 -23.9372 35.0244 -23.6589C34.8389 -23.4269 34.7461 -23.2878 34.7461 -23.0094C34.7461 -22.7775 34.7925 -22.6383 34.9781 -22.4991C35.1636 -22.4064 35.442 -22.4064 35.6275 -22.4991C36.0914 -22.7311 35.9986 -23.4733 35.442 -23.5661H35.3492L35.5347 -23.7053C35.6739 -23.7517 35.8131 -23.7981 35.9986 -23.7981L36.2306 -23.8445L36.3234 -23.7053C36.3698 -23.5661 36.3698 -23.4269 36.3698 -23.1022C36.3698 -22.5919 36.3698 -22.5455 35.9059 -22.0816C35.7203 -21.8961 35.5811 -21.6641 35.5347 -21.5713C35.442 -21.3394 35.442 -21.1074 35.5347 -20.9683C35.7667 -20.6435 35.9986 -20.5972 36.6481 -20.7827C36.88 -20.8755 37.1584 -20.9219 37.2512 -20.9683H37.3903V-20.226C37.3903 -18.7879 37.2048 -17.1643 36.88 -15.819C36.8337 -15.4943 36.7873 -15.4943 36.6945 -15.4943C36.6481 -15.4943 36.4161 -15.5406 36.1378 -15.5406C34.4678 -15.6798 32.6122 -15.3551 30.7566 -14.5665C30.0607 -14.2417 28.7154 -13.5459 28.1123 -13.1284C28.0196 -13.082 28.0659 -13.1748 28.2979 -13.4995C28.5298 -13.8706 28.669 -14.1489 29.3185 -15.4479L29.5504 -15.9582L29.9679 -16.0973C30.7566 -16.3757 31.4524 -16.7932 32.1019 -17.3962C32.473 -17.7674 32.8905 -18.324 33.0761 -18.6488C33.1688 -18.8343 33.2152 -18.8343 33.4008 -18.8807C34.4678 -19.2518 35.5347 -18.9271 35.7667 -18.2313C35.8131 -18.0457 35.8131 -17.7674 35.7667 -17.5818C35.6275 -17.3035 35.3028 -17.1643 35.0244 -17.2107H34.8389L34.9781 -17.3035C35.21 -17.5354 35.21 -17.9065 34.9781 -18.0921C34.7461 -18.324 34.4214 -18.2777 34.2358 -18.0457C33.7255 -17.489 34.6069 -16.7004 35.3956 -16.9323C35.6739 -17.0251 35.9522 -17.3035 36.045 -17.5818C36.277 -18.3704 35.7203 -19.1127 34.7461 -19.2982C34.375 -19.3446 33.7719 -19.2982 33.4008 -19.1591C33.3544 -19.1591 33.3544 -19.2055 33.4472 -19.391C33.7719 -20.0869 33.9575 -21.0611 33.9575 -22.0352C33.9575 -23.4733 34.2822 -25.1434 34.8389 -26.4887C35.1172 -27.2309 35.7667 -28.3907 35.8131 -28.3443C35.8131 -28.3443 35.9059 -28.1587 35.9986 -27.9732ZM13.3139 -26.3031C13.3603 -26.3031 13.4067 -26.2103 13.4531 -26.164C13.5923 -25.7928 13.3603 -25.6073 12.6645 -25.3753C12.2933 -25.2362 11.9686 -25.097 11.6903 -24.9114C11.4583 -24.8186 11.4583 -24.8186 12.1542 -25.5609C12.5253 -25.9784 12.8964 -26.3495 12.9428 -26.3959C13.0356 -26.4423 13.2211 -26.3959 13.3139 -26.3031ZM30.4782 -25.2362C30.7102 -24.865 30.7566 -24.5403 30.7566 -24.03C30.7566 -23.5661 30.7102 -23.2878 30.5246 -22.9167C30.4318 -22.6383 30.1535 -22.2672 30.0143 -22.1744C29.9679 -22.1744 29.9679 -22.1744 29.9679 -22.5919C30.0143 -23.5661 30.0607 -24.5403 30.1071 -25.097C30.1535 -25.4217 30.1999 -25.7001 30.1999 -25.7001C30.1999 -25.7928 30.3854 -25.5145 30.4782 -25.2362ZM3.89676 -25.3753C4.36066 -25.2825 4.82456 -24.9114 5.01012 -24.4939C5.33485 -23.7517 5.1029 -22.9167 4.45344 -22.5919C4.08232 -22.4528 3.66481 -22.4528 3.43286 -22.6847C3.34008 -22.7775 3.34008 -22.7775 3.34008 -23.0094V-23.2414L3.43286 -23.1486C3.66481 -22.8239 4.12871 -22.8703 4.31427 -23.195S4.26788 -23.9836 3.85037 -23.9836C3.61842 -23.9836 3.47925 -23.8908 3.29369 -23.7053C3.10813 -23.4733 3.06174 -23.2414 3.06174 -22.963C3.06174 -22.5919 3.15452 -22.4528 3.52564 -22.2672L3.7112 -22.2208L3.52564 -22.1744C3.06174 -22.0816 2.55145 -21.8033 2.18033 -21.4786C1.94838 -21.2466 1.99477 -21.2466 1.76282 -21.7105S1.43809 -22.5455 1.43809 -23.0558S1.53087 -23.9372 1.71643 -24.3547C1.90199 -24.6795 2.3195 -25.097 2.59784 -25.2362C3.01535 -25.4217 3.47925 -25.5145 3.89676 -25.3753ZM33.3544 -24.2156C33.5864 -23.4269 33.6327 -22.7775 33.6791 -21.9889C33.6791 -21.5713 33.6327 -21.2002 33.6327 -21.1074L33.5864 -20.9219L33.4936 -21.0147C33.2152 -21.2466 32.6586 -21.4322 32.1019 -21.525C31.9163 -21.5713 31.7771 -21.6177 31.7771 -21.6177C31.7771 -21.7569 32.5194 -23.6589 32.9369 -24.4939L33.1688 -24.9578L33.2152 -24.8186C33.2152 -24.7259 33.308 -24.4475 33.3544 -24.2156ZM39.1532 -23.7517C39.2923 -23.7053 39.3851 -23.6589 39.4315 -23.6125C39.5243 -23.5661 39.5243 -23.5661 39.3851 -23.5661C39.1532 -23.5661 38.9212 -23.2878 38.9212 -23.0094C38.9212 -22.6383 39.1068 -22.4528 39.4779 -22.4064C39.6634 -22.4064 39.6634 -22.4064 39.7098 -22.2672C39.8026 -21.5713 39.849 -19.5302 39.7562 -18.6024C39.7098 -17.8138 39.5707 -17.0715 39.4315 -16.4221C39.3387 -15.819 39.1068 -14.984 39.0604 -14.8912C39.0604 -14.8912 38.9676 -14.8912 38.782 -14.984C38.4109 -15.1231 37.8078 -15.2623 37.3903 -15.3551C37.2512 -15.4015 37.112 -15.4479 37.112 -15.4479C37.112 -15.4943 37.1584 -15.7726 37.2512 -16.0973C37.5295 -17.489 37.6687 -18.5096 37.6687 -19.9013C37.7151 -20.5972 37.7151 -20.9219 37.7615 -20.9219C37.7615 -20.9219 37.947 -20.8755 38.1326 -20.8291C38.782 -20.5972 39.0604 -20.6435 39.2923 -20.9219C39.3387 -21.0147 39.3851 -21.1074 39.3851 -21.2466C39.3851 -21.525 39.2923 -21.6641 38.9212 -22.0816C38.4573 -22.5455 38.4573 -22.6383 38.4573 -23.1486C38.4573 -23.7053 38.5501 -23.7981 38.7356 -23.7981C38.8284 -23.7981 39.014 -23.7981 39.1532 -23.7517ZM4.77817 -21.8961C5.19568 -21.8033 5.65958 -21.6177 6.07709 -21.2466C6.26265 -21.1074 6.72655 -20.5508 6.72655 -20.458C6.72655 -20.4116 6.07709 -20.0869 5.75236 -19.9941C5.01012 -19.7621 4.08232 -19.8085 3.34008 -20.1333C3.01535 -20.3188 2.59784 -20.5972 2.36589 -20.8291L2.18033 -21.0147L2.27311 -21.1538C2.3195 -21.2002 2.41228 -21.293 2.55145 -21.3858C3.20091 -21.8961 3.94315 -22.0352 4.77817 -21.8961ZM28.8082 -21.4322H29.6896V-20.7827C29.6896 -19.2982 29.504 -17.3962 29.2257 -16.5148L29.1793 -16.2829L28.9474 -16.2365C28.8082 -16.1901 28.6226 -16.1437 28.2515 -16.1437C27.7876 -16.0973 27.7412 -16.0973 27.7876 -16.1901C28.2051 -17.6746 28.2979 -18.9271 28.0659 -20.2724C27.9732 -20.6899 27.834 -21.293 27.7876 -21.4322C27.7412 -21.525 27.7412 -21.525 27.834 -21.4786C27.9268 -21.4786 28.3443 -21.4786 28.8082 -21.4322ZM31.3132 -21.3394C31.3596 -21.293 31.1277 -20.6435 30.571 -19.1127C30.1999 -18.1385 29.6432 -16.7468 29.5968 -16.7932C29.5968 -16.7932 29.5968 -16.886 29.6432 -16.9787C29.7824 -17.6746 29.9215 -19.0663 29.9679 -20.3652V-21.4322L30.6174 -21.3858C30.9885 -21.3858 31.3132 -21.3394 31.3132 -21.3394ZM32.3802 -21.1538C32.7977 -21.0611 33.0761 -20.9683 33.308 -20.7827C33.4472 -20.6899 33.4936 -20.6899 33.54 -20.7363C33.7255 -21.0147 33.3544 -19.7621 33.0761 -19.2055C32.9369 -18.9735 32.8905 -18.9271 32.7049 -18.8343C32.3802 -18.6024 32.0555 -18.3704 31.2669 -17.721C30.6174 -17.1643 30.0143 -16.654 29.8752 -16.654C29.8752 -16.6076 29.8288 -16.654 29.8752 -16.654C30.3391 -17.7674 31.1741 -19.9477 31.5452 -21.0147L31.638 -21.293H31.8235C31.9627 -21.2466 32.1947 -21.2002 32.3802 -21.1538ZM22.0816 -18.2313C23.0558 -17.489 24.1692 -16.8396 25.097 -16.4684L25.2825 -16.3757L25.2362 -15.9582C25.1898 -14.5665 24.5403 -12.9892 23.3806 -11.5511C23.0558 -11.18 22.7775 -10.9016 22.7775 -10.948C22.7775 -10.948 22.6383 -11.0872 22.5455 -11.2264C22.2208 -11.6903 21.8033 -12.247 21.3394 -12.6645L20.9219 -13.082L21.0611 -13.4067C21.525 -14.752 21.7569 -16.2829 21.6177 -17.5354C21.5713 -17.9529 21.4786 -18.6488 21.4322 -18.7879C21.3858 -18.8343 21.4786 -18.7416 21.6177 -18.6488S21.9425 -18.3704 22.0816 -18.2313ZM32.6586 -18.5096C32.6586 -18.4632 32.5194 -18.324 32.3802 -18.1849C31.8235 -17.4426 30.9885 -16.7932 30.1535 -16.4684C30.0143 -16.4221 30.0607 -16.4684 30.4318 -16.7468C30.571 -16.8396 30.8957 -17.1179 31.1741 -17.3499C31.9163 -17.9993 32.0091 -18.0921 32.3338 -18.324S32.7049 -18.556 32.6586 -18.5096ZM14.5201 -17.489C15.2159 -17.3035 15.6334 -16.886 15.6798 -16.3293C15.6798 -16.1437 15.6798 -16.0973 15.587 -16.0045C15.4479 -15.819 15.4015 -15.819 15.1231 -15.8654C14.6128 -15.9582 13.6387 -16.0973 12.9428 -16.1437C12.2006 -16.1901 11.0872 -16.1437 10.4841 -16.0509C10.345 -16.0509 10.2058 -16.0045 10.2058 -16.0045C10.2058 -16.0509 10.6233 -16.4221 10.948 -16.6076C11.6439 -17.0715 12.5717 -17.3962 13.4531 -17.5354C13.685 -17.5818 14.2881 -17.5354 14.5201 -17.489ZM29.0401 -15.7262C28.8546 -15.1695 28.6226 -14.6592 28.1123 -13.8706C27.7876 -13.4067 27.4629 -12.9892 27.1845 -12.6645C26.999 -12.4325 26.8134 -12.2933 25.9784 -11.6439C25.6537 -11.4119 25.0506 -10.948 24.6795 -10.6697C24.3084 -10.345 23.9836 -10.0666 23.9372 -10.0202C23.7981 -9.92746 23.3806 -9.7419 23.3806 -9.78829C23.3806 -9.78829 23.3342 -9.88107 23.2414 -10.0202L23.1486 -10.2522L23.6125 -10.6697C25.5145 -12.247 26.8134 -13.7778 27.5093 -15.4943L27.6484 -15.819H28.3443C28.7154 -15.8654 29.0401 -15.8654 29.0401 -15.8654C29.0865 -15.9118 29.0865 -15.9118 29.0401 -15.7262ZM13.685 -15.7726C13.9634 -15.7726 14.2417 -15.7262 14.3345 -15.7262L14.5665 -15.6798L14.2881 -15.5406C13.8242 -15.3087 13.5923 -14.8912 13.5923 -14.3809S13.8242 -13.4531 14.2881 -13.2211C14.4737 -13.082 14.5665 -13.082 14.8448 -13.082C15.4479 -13.0356 15.8654 -13.2211 16.3293 -13.685C16.654 -13.9634 16.8396 -14.2881 17.0251 -14.7056L17.1179 -14.984L17.6746 -14.752C18.4168 -14.4273 19.2518 -13.9634 19.7157 -13.6387C19.8549 -13.5459 19.9013 -13.4995 19.9013 -13.3603C19.9013 -12.9428 19.6694 -11.9222 19.391 -11.2728C19.2518 -10.948 18.9735 -10.2986 18.9271 -10.2522C18.9271 -10.2522 18.7416 -10.345 18.5096 -10.5305C16.9323 -11.7367 15.2159 -12.5717 13.4531 -12.9428C11.9686 -13.2675 10.2522 -13.2675 8.90688 -12.8964C8.53576 -12.8036 8.53576 -12.7572 8.62854 -13.2675C8.8141 -14.1026 9.23161 -14.984 9.7419 -15.4943L9.88107 -15.6798L10.345 -15.7262C10.5769 -15.7726 10.9944 -15.819 11.2264 -15.819C11.7831 -15.8654 13.1284 -15.8654 13.685 -15.7726ZM9.32439 -15.5406C9.278 -15.4943 9.23161 -15.4015 9.13883 -15.2623C8.72132 -14.5665 8.39659 -13.7314 8.30381 -12.9428L8.25742 -12.7109L7.93269 -12.5717C7.46879 -12.4325 6.77294 -12.0614 6.35543 -11.7831C4.77817 -10.7625 3.75759 -9.278 3.38647 -7.65435C3.29369 -7.14406 3.29369 -6.26265 3.34008 -5.75236C3.57203 -4.1751 4.54622 -2.87618 5.79875 -2.27311C6.44821 -1.99477 7.32962 -1.90199 7.97908 -2.04116C8.67493 -2.18033 9.23161 -2.45867 9.69551 -2.92257C10.6697 -3.89676 10.9016 -5.28846 10.2522 -5.98431C9.97385 -6.30904 9.50995 -6.44821 8.90688 -6.40182C8.3502 -6.35543 7.83991 -6.4946 7.65435 -6.77294S7.56157 -7.4224 7.83991 -7.51518C7.93269 -7.56157 7.97908 -7.60796 7.97908 -7.70074V-7.83991H7.79352C7.00489 -7.74713 6.54099 -6.86572 6.86572 -6.12348C7.09767 -5.65958 7.46879 -5.38124 8.16464 -5.1029C8.8141 -4.87095 8.95327 -4.73178 9.13883 -4.31427C9.23161 -4.12871 9.23161 -3.61842 9.13883 -3.38647C8.90688 -2.92257 8.48937 -2.55145 7.93269 -2.36589C7.65435 -2.27311 7.56157 -2.27311 7.09767 -2.27311C6.54099 -2.27311 6.21626 -2.36589 5.70597 -2.59784C4.73178 -3.06174 4.03593 -3.94315 3.7112 -5.1029C3.61842 -5.42763 3.61842 -5.47402 3.61842 -6.16987C3.61842 -6.81933 3.61842 -6.86572 3.7112 -7.28323C3.98954 -8.21103 4.54622 -9.09244 5.24207 -9.69551C5.98431 -10.345 6.81933 -10.7161 7.79352 -10.9016C8.30381 -10.9944 8.44298 -10.9944 8.44298 -10.9016C8.44298 -10.8553 8.48937 -10.6697 8.53576 -10.4841C8.67493 -10.0666 8.95327 -9.50995 9.13883 -9.23161C9.23161 -9.09244 9.278 -8.99966 9.278 -8.99966S9.18522 -8.99966 9.04605 -9.04605C7.05128 -9.55634 5.05651 -8.53576 4.68539 -6.86572C4.54622 -6.26265 4.68539 -5.5668 4.96373 -5.05651C5.14929 -4.73178 5.61319 -4.31427 5.98431 -4.12871C6.30904 -3.98954 6.72655 -3.85037 7.00489 -3.85037H7.14406V-3.98954V-4.12871H7.00489C6.58738 -4.12871 6.0307 -4.36066 5.65958 -4.68539C5.42763 -4.91734 5.14929 -5.33485 5.05651 -5.61319C4.91734 -5.93792 4.91734 -6.54099 4.96373 -6.81933C5.19568 -7.79352 6.0307 -8.53576 7.09767 -8.8141C7.60796 -8.90688 8.39659 -8.90688 8.90688 -8.76771C9.37078 -8.67493 9.64912 -8.53576 9.78829 -8.39659C9.92746 -8.21103 10.5769 -7.70074 10.9016 -7.51518S11.3655 -7.14406 11.5975 -6.72655C12.1078 -5.75236 12.247 -4.45344 11.8758 -3.34008C11.4119 -1.99477 10.2522 -0.88141 8.76771 -0.37112C8.25742 -0.23195 7.8863 -0.13917 7.32962 -0.13917C5.61319 -0.04639 4.03593 -0.69585 2.7834 -1.99477C1.67004 -3.15452 1.02058 -4.68539 0.88141 -6.44821V-6.77294L1.02058 -6.86572C1.48448 -7.05128 1.53087 -7.70074 1.11336 -7.97908C1.02058 -8.02547 1.02058 -8.07186 1.02058 -8.11825C1.06697 -8.44298 1.25253 -9.18522 1.3917 -9.50995C1.94838 -10.9944 2.96896 -12.3397 4.31427 -13.3603L4.49983 -13.4995L4.36066 -13.3139C4.26788 -13.2675 4.1751 -13.1748 4.1751 -13.1284C4.1751 -13.1284 4.22149 -13.082 4.26788 -13.0356L4.36066 -12.9428L5.01012 -13.5923C5.75236 -14.2881 5.79875 -14.3345 6.68016 -14.752C7.37601 -15.0304 8.30381 -15.3551 9.23161 -15.5406C9.278 -15.587 9.32439 -15.587 9.32439 -15.587S9.32439 -15.5406 9.32439 -15.5406ZM36.5089 -15.2159C36.6017 -15.2159 36.6945 -15.1695 36.6945 -15.1695C36.7409 -15.1695 36.3698 -14.1026 36.1378 -13.4995C35.9059 -12.85 35.4883 -12.0614 35.1636 -11.4583L34.8853 -10.9944L34.5142 -10.8089C33.4008 -10.2522 32.6122 -9.46356 32.1019 -8.39659C31.9627 -8.11825 31.8699 -7.93269 31.8699 -7.8863C31.8699 -7.74713 30.4318 -6.9585 29.6432 -6.68016L29.2721 -6.4946V-6.40182C29.3185 -6.30904 29.3649 -6.26265 29.3649 -6.26265C29.5504 -6.26265 30.7566 -6.81933 31.3132 -7.14406C31.5452 -7.28323 31.6844 -7.37601 31.6844 -7.37601S31.6844 -7.19045 31.638 -7.00489S31.5452 -6.4946 31.5452 -6.07709L31.4988 -5.52041L31.1741 -5.38124C29.4113 -4.639 27.6948 -4.49983 25.9784 -4.91734C25.5609 -5.01012 25.1434 -5.19568 24.6331 -5.61319L24.1692 -5.93792L24.1228 -6.44821C24.0764 -7.32962 23.9372 -8.16464 23.7053 -8.95327L23.5661 -9.32439L23.7517 -9.46356C23.8908 -9.64912 23.9836 -9.64912 24.3084 -9.78829C25.1898 -10.0202 25.8392 -10.113 26.7206 -10.113C27.1381 -10.113 27.5093 -10.0666 27.834 -10.0202C29.3185 -9.78829 29.9679 -9.278 29.9215 -8.3502V-8.21103L29.8288 -8.30381C29.6432 -8.53576 29.3649 -8.58215 29.1329 -8.44298C28.669 -8.11825 28.901 -7.46879 29.4113 -7.46879C30.0607 -7.46879 30.4318 -8.3502 30.1071 -9.09244C29.8752 -9.60273 29.2257 -9.97385 28.4371 -10.2058C27.4165 -10.4841 25.8856 -10.4841 24.8186 -10.2058C24.6795 -10.2058 24.5867 -10.1594 24.5867 -10.1594C24.5867 -10.2058 25.5609 -10.9944 26.164 -11.4583C26.9526 -12.0614 27.602 -12.4789 27.9268 -12.6645C28.5298 -12.9892 29.5504 -13.3139 30.2927 -13.4067C30.6638 -13.4531 31.3132 -13.4531 31.5916 -13.3603C32.1483 -13.2211 32.6122 -12.8964 32.7977 -12.4789C32.8905 -12.247 32.8905 -11.8294 32.7977 -11.5975C32.7049 -11.4119 32.473 -11.18 32.2874 -11.1336C32.1483 -11.0408 31.638 -11.0408 31.638 -11.0872S31.6844 -11.18 31.7308 -11.18C31.8235 -11.2728 31.9627 -11.5047 31.9627 -11.6903S31.8699 -12.015 31.7308 -12.1542C31.3132 -12.5253 30.6638 -12.247 30.6638 -11.6903C30.7102 -11.3655 30.8957 -11.0872 31.2669 -10.9016C31.5452 -10.7625 32.0555 -10.7161 32.3338 -10.8089C32.9833 -11.0408 33.3544 -11.8294 33.0761 -12.5253C32.7977 -13.2675 31.6844 -13.7778 30.5246 -13.7314C30.1999 -13.685 29.6896 -13.6387 29.4576 -13.5923C29.4113 -13.5459 29.6432 -13.685 30.0143 -13.8706C31.5452 -14.6592 33.0761 -15.1231 34.5605 -15.2623C34.7925 -15.3087 36.277 -15.2623 36.5089 -15.2159ZM37.4367 -15.0767C37.9934 -14.9376 38.9676 -14.6128 38.9676 -14.5665C38.9676 -14.4737 38.6429 -13.5459 38.4109 -13.0356C38.2254 -12.5717 37.6223 -11.3655 37.5759 -11.3192C37.5295 -11.3192 37.3439 -11.3192 37.1584 -11.3192C36.6945 -11.3655 36.0914 -11.3192 35.6275 -11.2264C35.442 -11.18 35.3028 -11.1336 35.3028 -11.1336C35.3028 -11.18 35.3956 -11.2728 35.4883 -11.4583C35.9986 -12.3397 36.5089 -13.4995 36.88 -14.7056C36.9728 -14.9376 37.0192 -15.1695 37.0192 -15.1695S37.2512 -15.1231 37.4367 -15.0767ZM40.2201 -13.9634C40.3593 -13.8706 40.4057 -13.8242 40.4057 -13.7778C40.4057 -13.685 40.7768 -13.3139 41.0551 -13.082C41.751 -12.5717 42.4005 -11.4119 42.6324 -10.2522C42.7252 -9.78829 42.7716 -8.8141 42.7252 -8.3502C42.6788 -7.97908 42.4932 -7.09767 42.4005 -6.91211L42.3541 -6.81933L42.2613 -6.86572C42.1221 -6.9585 41.8902 -7.05128 41.3799 -7.14406C41.1479 -7.19045 40.8232 -7.23684 40.7304 -7.23684C40.5449 -7.32962 40.5449 -7.32962 40.5912 -7.4224C40.6376 -7.65435 40.5912 -8.48937 40.5449 -8.72132C40.3129 -9.46356 39.849 -10.1594 39.1532 -10.6233C38.9212 -10.8089 38.3181 -11.0872 38.1326 -11.1336C38.0862 -11.1336 38.0398 -11.18 38.0398 -11.18S38.179 -11.4119 38.3645 -11.6439C38.7356 -12.1542 39.3387 -13.082 39.6634 -13.685C39.8026 -13.917 39.9418 -14.1026 39.9418 -14.1026C39.9882 -14.1026 40.081 -14.0562 40.2201 -13.9634ZM21.7569 -11.7831C22.0816 -11.4119 22.5455 -10.7161 22.5455 -10.6697C22.5455 -10.5769 20.5972 -8.90688 20.5044 -8.90688C20.458 -8.90688 19.2982 -9.92746 19.2982 -9.92746C19.2518 -9.97385 19.391 -10.113 19.4838 -10.2986C19.9477 -10.948 20.5508 -12.015 20.7827 -12.6181L20.8291 -12.7572L21.1538 -12.4789C21.3394 -12.2933 21.6177 -11.9686 21.7569 -11.7831ZM42.3541 -12.1542C43.5602 -10.8089 44.2561 -9.09244 44.3488 -7.4224V-7.00489L44.2097 -6.9585C43.7458 -6.72655 43.7458 -6.07709 44.1633 -5.84514C44.2097 -5.79875 44.2561 -5.75236 44.2561 -5.75236C44.2561 -5.70597 44.2097 -5.52041 44.1633 -5.28846C43.8849 -4.03593 43.3283 -3.01535 42.4468 -2.04116L42.2613 -1.80921L42.1221 -2.08755C42.0757 -2.22672 42.0293 -2.45867 41.9829 -2.55145L41.9366 -2.73701L42.1221 -2.92257C42.4932 -3.2473 42.586 -3.52564 42.4468 -3.80398C42.4005 -3.98954 42.1221 -4.22149 42.0293 -4.22149S41.9366 -4.31427 41.9829 -4.639C42.1221 -5.19568 42.2613 -5.75236 42.3541 -5.84514C42.4932 -5.98431 42.5396 -6.16987 42.5396 -6.30904S42.586 -6.72655 42.6788 -7.00489C43.1891 -8.58215 43.1891 -9.7419 42.7716 -11.0408C42.586 -11.5047 42.4005 -11.9222 42.1685 -12.2933C42.0757 -12.4325 41.9829 -12.5717 42.0293 -12.5717C42.0293 -12.5717 42.1685 -12.3861 42.3541 -12.1542ZM37.3439 -10.9944C37.3903 -10.9944 36.88 -10.2522 36.5089 -9.7419C35.5347 -8.44298 34.2822 -7.23684 33.0297 -6.35543C32.7049 -6.16987 31.8699 -5.70597 31.8235 -5.70597C31.8235 -5.70597 31.8235 -5.84514 31.8235 -6.16987C31.8235 -6.68016 31.9627 -7.28323 32.0555 -7.56157C32.1019 -7.60796 32.241 -7.79352 32.5194 -7.97908C33.308 -8.58215 34.1894 -9.50995 34.7925 -10.3914L35.0244 -10.7625L35.3028 -10.8089C35.5811 -10.9016 35.9986 -10.9944 36.3234 -11.0408C36.4625 -11.0872 37.3439 -11.0408 37.3439 -10.9944ZM9.55634 -10.9016C10.6697 -10.7161 11.9222 -9.97385 13.6387 -8.58215C14.1489 -8.11825 15.0767 -7.28323 15.1231 -7.23684C15.1231 -7.23684 15.0304 -7.19045 14.8912 -7.14406C14.4273 -7.05128 14.0562 -7.00489 13.4531 -7.05128C12.7572 -7.05128 12.3861 -7.14406 11.7831 -7.37601C11.4583 -7.51518 11.4119 -7.51518 11.1336 -7.83991C10.7625 -8.21103 10.5305 -8.39659 10.113 -8.62854C9.88107 -8.76771 9.7419 -8.86049 9.64912 -8.99966C9.278 -9.46356 8.90688 -10.1594 8.76771 -10.6697C8.72132 -10.7625 8.72132 -10.9016 8.67493 -10.9016C8.67493 -10.9944 9.18522 -10.9944 9.55634 -10.9016ZM38.2717 -10.7625C38.8284 -10.5769 39.2923 -10.2522 39.6634 -9.78829C39.9418 -9.50995 40.2201 -8.95327 40.2665 -8.58215C40.3129 -8.30381 40.3593 -7.79352 40.3129 -7.60796L40.2665 -7.46879L40.1737 -7.60796C40.081 -7.65435 39.8954 -7.8863 39.7562 -8.07186C39.2923 -8.62854 39.1068 -8.76771 38.7356 -8.76771C38.5037 -8.72132 38.3181 -8.58215 38.179 -8.3502C38.0862 -8.16464 38.0862 -8.07186 38.0862 -7.79352C38.0862 -7.60796 38.1326 -7.32962 38.1326 -7.14406C38.2717 -6.54099 38.2254 -5.98431 38.0398 -5.93792C37.9006 -5.89153 37.7151 -5.65958 37.6687 -5.52041L37.6223 -5.33485L37.4367 -5.38124C37.0192 -5.42763 36.4625 -5.65958 36.277 -5.89153L36.1842 -5.98431L36.3234 -5.93792C36.6017 -5.89153 36.9728 -6.12348 37.0656 -6.44821C37.1584 -6.68016 37.112 -6.9585 36.9728 -7.14406C36.6017 -7.56157 35.9986 -7.51518 35.7203 -7.05128C35.6739 -6.9585 35.6275 -6.91211 35.5811 -6.91211S35.5347 -6.86572 35.5347 -6.58738C35.5811 -6.0307 35.7203 -5.70597 36.045 -5.28846C36.277 -5.05651 36.7409 -4.73178 36.9264 -4.68539C37.0656 -4.639 37.3903 -4.73178 37.5759 -4.87095L37.7151 -5.01012L37.8542 -4.82456C38.2717 -4.40705 39.014 -4.68539 39.014 -5.28846C39.014 -5.42763 39.0604 -5.42763 39.2923 -5.5668C39.5707 -5.75236 39.9418 -6.07709 40.1273 -6.40182C40.2665 -6.58738 40.2665 -6.58738 40.4057 -6.58738C40.4521 -6.58738 40.7768 -6.63377 41.0551 -6.72655C41.7046 -6.91211 41.9366 -6.91211 42.0757 -6.77294C42.2613 -6.63377 42.2613 -6.4946 42.1685 -6.21626C42.0757 -5.84514 41.9366 -5.75236 41.1479 -5.47402C40.5449 -5.28846 40.3593 -5.19568 40.1273 -4.96373C39.9418 -4.77817 39.6634 -4.1751 39.5707 -3.85037C39.5243 -3.57203 39.5243 -3.29369 39.6634 -3.10813C39.7562 -2.96896 40.2201 -2.73701 40.5912 -2.64423C40.7768 -2.55145 41.1943 -2.55145 41.5654 -2.59784C41.6582 -2.59784 41.6582 -2.59784 41.751 -2.36589C41.7974 -2.22672 41.8438 -1.99477 41.9366 -1.8556L42.0293 -1.62365L41.8902 -1.48448C41.6582 -1.29892 41.1015 -0.9278 40.684 -0.74224C39.4315 -0.13917 38.0862 0 36.6017 -0.27834C34.7461 -0.69585 33.1688 -1.8556 32.3802 -3.47925C32.1947 -3.85037 31.9627 -4.49983 31.9163 -4.73178V-4.91734L32.1483 -5.05651C32.7977 -5.5668 33.5864 -6.21626 34.6069 -7.23684C35.7203 -8.3502 36.6017 -9.37078 37.4831 -10.4841C37.8078 -10.8553 37.8542 -10.9016 37.9006 -10.9016S38.1326 -10.8553 38.2717 -10.7625ZM34.4214 -10.345C33.8647 -9.60273 33.0297 -8.76771 32.3802 -8.25742C32.2874 -8.16464 32.2874 -8.16464 32.4266 -8.44298C32.8441 -9.18522 33.54 -9.92746 34.2822 -10.345C34.375 -10.4377 34.5142 -10.4841 34.5142 -10.4841S34.4678 -10.4377 34.4214 -10.345ZM23.0558 -9.69551C23.1022 -9.64912 23.0558 -9.60273 22.7775 -9.46356C22.4064 -9.278 21.8033 -8.86049 21.4322 -8.58215C21.293 -8.44298 21.1538 -8.3502 21.1538 -8.3502C21.1074 -8.3502 21.0611 -8.44298 20.9683 -8.48937L20.7827 -8.62854L21.4322 -9.04605C21.7569 -9.278 22.2208 -9.60273 22.4528 -9.78829L22.9167 -10.113L22.963 -9.92746C23.0094 -9.83468 23.0558 -9.7419 23.0558 -9.69551ZM22.8703 -9.13883C22.8239 -9.04605 22.4991 -8.76771 22.1744 -8.48937C21.5713 -8.02547 21.5713 -8.02547 21.4786 -8.07186C21.4322 -8.07186 21.3858 -8.11825 21.3858 -8.11825C21.3858 -8.16464 21.8497 -8.53576 22.1744 -8.76771C22.4064 -8.90688 22.963 -9.23161 23.0094 -9.23161C23.0094 -9.23161 22.963 -9.18522 22.8703 -9.13883ZM23.4269 -8.76771C23.6589 -8.11825 23.7981 -7.32962 23.8445 -6.54099C23.8445 -6.21626 23.8445 -6.12348 23.7981 -6.16987C23.7053 -6.26265 21.9425 -7.65435 21.8961 -7.74713L21.7569 -7.79352L21.8497 -7.8863C21.9425 -7.93269 22.2672 -8.21103 22.6383 -8.53576S23.2878 -9.09244 23.3342 -9.09244C23.3342 -9.09244 23.3806 -8.95327 23.4269 -8.76771ZM39.1532 -8.48937C39.3387 -8.3502 39.4315 -8.16464 39.5707 -7.56157C39.7098 -7.00489 39.8026 -6.77294 39.8954 -6.68016C39.9418 -6.68016 39.9418 -6.63377 39.849 -6.4946C39.7098 -6.26265 39.3851 -5.98431 39.1532 -5.79875L38.9676 -5.70597L38.8284 -5.79875C38.7356 -5.89153 38.6429 -5.93792 38.5501 -5.98431C38.4109 -6.0307 38.4109 -6.0307 38.4573 -6.16987S38.4573 -6.68016 38.4109 -7.14406C38.3181 -7.56157 38.3181 -8.02547 38.4109 -8.21103C38.4573 -8.3502 38.5037 -8.39659 38.6893 -8.44298C38.9212 -8.53576 39.014 -8.58215 39.1532 -8.48937ZM36.3698 -5.47402C36.5553 -5.33485 36.7873 -5.24207 37.112 -5.14929L37.4367 -5.05651L37.2976 -5.01012C37.0192 -4.91734 36.9264 -4.96373 36.5553 -5.24207C36.2306 -5.47402 36.0914 -5.65958 36.3698 -5.47402ZM41.8438 -5.01012C41.751 -4.73178 41.7046 -4.45344 41.7046 -4.40705C41.6582 -4.36066 41.6582 -4.31427 41.519 -4.26788C41.1479 -4.1751 40.916 -3.75759 41.0088 -3.38647C41.0551 -3.20091 41.2871 -2.96896 41.3799 -2.92257S41.4727 -2.87618 41.3799 -2.87618C41.1015 -2.73701 40.1737 -2.96896 39.8954 -3.29369C39.8026 -3.38647 39.8026 -3.38647 39.8026 -3.61842C39.8026 -3.80398 39.849 -3.89676 39.9882 -4.22149C40.3593 -4.87095 40.5449 -5.05651 41.3799 -5.33485C41.6118 -5.38124 41.8438 -5.47402 41.8902 -5.52041C41.8902 -5.52041 41.9366 -5.52041 41.9366 -5.52041S41.8902 -5.28846 41.8438 -5.01012ZM45.1375 -19.8549C44.6736 -19.7157 44.4416 -19.1591 44.72 -18.7879C44.8591 -18.6024 45.0911 -18.4632 45.2766 -18.4632S45.6941 -18.6024 45.8333 -18.7879S46.0189 -19.2055 45.8797 -19.4374C45.7869 -19.7621 45.4622 -19.9013 45.1375 -19.8549ZM32.0555 -31.406C31.8699 -31.3596 31.6844 -31.1277 31.6844 -30.8957C31.6844 -30.5246 32.0555 -30.2463 32.4266 -30.4318C33.0297 -30.7102 32.7049 -31.5916 32.0555 -31.406ZM25.7928 -8.30381C25.3289 -8.07186 25.2825 -7.4224 25.7001 -7.14406C25.932 -7.00489 26.2567 -7.00489 26.4423 -7.14406C26.6742 -7.28323 26.767 -7.4224 26.767 -7.70074C26.767 -7.8863 26.767 -7.97908 26.6742 -8.07186C26.4887 -8.39659 26.0712 -8.48937 25.7928 -8.30381Z"/>
- <path id="g72" d="M2.016 -6.192C1.4976 -5.7456 0.9504 -5.328 0.4608 -4.8528C0.4464 -4.464 0.4464 -4.0608 0.4464 -3.6576C0.9792 -4.0896 1.512 -4.5072 2.0016 -4.9824C2.0448 -5.3568 2.0304 -5.8032 2.016 -6.192ZM2.016 -3.168C1.4976 -2.7216 0.9504 -2.304 0.4608 -1.8288C0.4464 -1.44 0.4464 -1.0368 0.4464 -0.6336C0.9792 -1.0656 1.512 -1.4832 2.0016 -1.9584C2.0448 -2.3328 2.0304 -2.7792 2.016 -3.168Z"/>
- <path id="g73" d="M2.052 -4.356L2.112 -4.524C1.572 -4.776 1.02 -5.076 0.768 -5.64C0.696 -5.796 0.66 -5.964 0.66 -6.132C0.66 -6.624 0.936 -7.104 1.32 -7.404C1.572 -7.584 1.956 -7.74 2.28 -7.74C2.508 -7.74 2.712 -7.608 2.916 -7.5C3.216 -7.332 3.504 -7.14 3.78 -6.936C3.924 -6.84 4.056 -6.732 4.2 -6.648V-6.636C3.756 -6.444 3.264 -6.204 2.94 -5.832C2.736 -5.592 2.676 -5.328 2.676 -5.04C2.676 -4.548 2.832 -3.984 2.952 -3.636C3.312 -2.688 4.116 -1.248 4.116 -0.06C4.116 0.768 3.732 1.464 3.108 1.692C2.976 1.728 2.844 1.74 2.7 1.74C1.92 1.74 1.14 1.14 1.14 0.252C1.14 -0.504 1.668 -1.164 1.908 -1.764C2.004 -2.004 2.076 -2.28 2.076 -2.544C2.076 -3.252 1.584 -3.78 0.936 -3.78C0.468 -3.78 0.312 -3.216 0.204 -2.916L0.456 -2.82C0.54 -3.06 0.612 -3.516 0.948 -3.516C1.14 -3.516 1.344 -3.372 1.404 -3.192C1.416 -3.192 1.428 -3.048 1.428 -3.048S1.416 -2.904 1.416 -2.904C1.392 -2.676 1.332 -2.448 1.236 -2.232C0.96 -1.548 0.408 -0.852 0.408 -0.036C0.408 1.32 1.656 2.004 2.76 2.004C3.564 2.004 4.116 1.668 4.536 1.236C4.896 0.876 5.148 0.3 5.148 -0.372C5.148 -1.284 4.776 -2.16 4.524 -2.796C4.38 -3.144 4.224 -3.492 4.104 -3.852C4.08 -3.912 3.984 -4.164 3.984 -4.212C3.984 -4.224 3.984 -4.224 3.984 -4.236C4.008 -4.296 4.524 -4.776 4.572 -4.776C4.584 -4.776 4.584 -4.776 4.596 -4.776C4.656 -4.74 4.92 -4.452 4.92 -4.452C4.956 -4.416 5.004 -4.332 5.064 -4.332C5.136 -4.332 5.208 -4.428 5.256 -4.476C5.4 -4.62 5.556 -4.764 5.712 -4.896C5.676 -4.968 5.616 -5.028 5.556 -5.088L5.232 -5.436C5.196 -5.484 5.124 -5.592 5.052 -5.592C5.052 -5.592 5.04 -5.592 5.04 -5.592C4.992 -5.58 4.764 -5.364 4.692 -5.292C4.428 -5.04 4.164 -4.776 3.876 -4.536C3.792 -5.064 3.768 -4.836 3.72 -5.52C3.72 -5.58 3.708 -5.64 3.708 -5.7C3.732 -6.048 3.9 -6.312 4.116 -6.504C4.152 -6.54 4.188 -6.576 4.236 -6.576C4.236 -6.576 4.248 -6.576 4.248 -6.576C4.308 -6.576 4.38 -6.504 4.428 -6.468L4.836 -6.168C4.884 -6.132 4.968 -6.036 5.04 -6.036C5.1 -6.036 5.124 -6.096 5.148 -6.12C5.208 -6.192 5.928 -7.116 5.928 -7.116C5.892 -7.152 5.808 -7.26 5.736 -7.26C5.724 -7.26 5.712 -7.248 5.7 -7.248C5.616 -7.212 5.58 -7.056 5.496 -7.056C5.472 -7.056 5.46 -7.068 5.436 -7.08C5.292 -7.164 4.14 -8.052 4.14 -8.052L3.792 -8.316C3.684 -8.4 3.624 -8.46 3.432 -8.46C2.856 -8.46 2.136 -8.244 1.776 -8.076C1.068 -7.74 0.408 -7.116 0.408 -6.144C0.408 -5.916 0.456 -5.7 0.564 -5.496C0.852 -4.944 1.476 -4.572 2.052 -4.356Z"/>
- <path id="g74" d="M2.1888 -5.5008C2.088 -5.472 2.0016 -5.4144 1.9008 -5.3712C1.2528 -4.9968 0.6912 -4.6224 0.3456 -3.9168C0.216 -3.6144 0.1584 -3.2976 0.1584 -2.9664C0.1584 -2.8944 0.1728 -2.808 0.1728 -2.736C0.288 -1.4688 1.1232 -0.4032 2.2176 0.0576C2.3184 0.1008 2.5056 0.1728 2.6208 0.1728C2.7216 0.1728 3.4416 -0.1584 3.7008 -0.2736C4.1616 -0.4608 4.6512 -0.6192 5.0256 -0.9504C5.6304 -1.4976 5.904 -2.4336 5.904 -3.2832C5.904 -3.456 5.8896 -3.6288 5.8608 -3.8016C5.6448 -4.8528 4.752 -5.6304 3.8736 -6.1632C3.2832 -6.5088 2.2032 -6.8832 2.2032 -7.8192C2.2032 -8.208 2.4048 -8.568 2.6352 -8.7984C2.7504 -8.8848 2.808 -8.9136 2.808 -9.1008V-9.2592C2.016 -9.2592 1.08 -8.8992 0.792 -8.1072C0.72 -7.92 0.7056 -7.7184 0.7056 -7.5168C0.7056 -6.7536 1.296 -6.1776 1.6992 -5.8608C1.8576 -5.7312 2.0304 -5.6304 2.1888 -5.5008ZM1.3968 -3.4416V-3.5856C1.3968 -4.1184 1.6848 -4.608 2.088 -4.9536C2.1744 -5.0256 2.4192 -5.256 2.5488 -5.256C2.6352 -5.2416 2.7072 -5.1696 2.7792 -5.1408C3.7008 -4.5216 4.8672 -3.8304 4.8672 -2.4048C4.8672 -2.2752 4.8672 -2.1456 4.8528 -2.0304C4.824 -1.6416 4.7952 -1.152 4.4064 -0.936C4.3632 -0.9216 4.3344 -0.9072 4.3056 -0.9072C4.248 -0.9072 3.9888 -0.9936 3.9168 -0.9936C3.7728 -1.0224 3.6144 -1.008 3.4704 -1.0368C3.1392 -1.08 2.8224 -1.224 2.5344 -1.4112C1.8432 -1.872 1.4832 -2.6352 1.3968 -3.4416Z"/>
- <path id="g75" d="M2.1888 -7.128C2.088 -6.7392 1.8864 -6.336 1.6128 -6.0336C1.224 -5.616 0.72 -5.328 0.2016 -5.0976C0.3024 -4.9104 0.4176 -4.7376 0.504 -4.536C0.5472 -3.6144 0.5184 -2.5776 0.504 -1.656C0.4176 -1.4544 0.3024 -1.2816 0.2016 -1.0944C1.0224 -0.648 1.7856 -0.144 2.6208 0.288L2.7648 0.2304L3.9456 -0.4608C3.9168 -0.5328 3.8592 -0.7056 3.7584 -0.7056C3.672 -0.7056 3.6144 -0.6336 3.5424 -0.6048C3.4992 -0.6048 3.456 -0.6192 3.4128 -0.648C3.0528 -0.8352 2.6928 -1.0656 2.3328 -1.2672L1.9728 -1.4688C1.8576 -1.5552 1.728 -1.5552 1.728 -1.7856V-1.872V-5.4144V-5.5008C1.728 -5.6304 1.7424 -5.7312 1.8576 -5.8464C1.872 -5.8608 1.9008 -5.8608 1.9152 -5.8608C2.0016 -5.8608 2.088 -5.7744 2.16 -5.7456C2.3472 -5.6304 2.5488 -5.5296 2.736 -5.4144C2.808 -5.3712 2.9088 -5.2848 2.9952 -5.2848S3.1392 -5.4432 3.1824 -5.5152C3.3264 -5.7744 3.4992 -6.0336 3.6288 -6.3072L2.1888 -7.128Z"/>
- <path id="g76" d="M2.1888 -9.2736C1.4688 -9.2736 1.1952 -8.4672 1.0656 -7.992C1.0368 -7.92 0.936 -7.5024 0.936 -7.4304V-7.4016C0.9792 -7.344 1.0944 -7.2288 1.1808 -7.2288C1.2384 -7.2288 1.296 -7.272 1.3392 -7.3008C1.8288 -7.632 2.4768 -7.8768 2.736 -8.424C2.7936 -8.5392 2.8368 -8.6832 2.8368 -8.8128C2.8368 -9.1296 2.5488 -9.2736 2.2752 -9.2736H2.1888ZM1.3392 -6.8976C0.9504 -6.4656 0.5472 -6.048 0.1728 -5.616L0.1584 -5.4576C0.5328 -5.4288 0.6624 -4.9968 0.6624 -4.68V-1.9152V-1.728C0.6624 -1.368 0.4608 -1.1232 0.1584 -1.0944L0.1872 -0.7776C0.6624 -0.4464 1.1232 -0.1152 1.656 0.1584C2.2608 -0.2016 2.7648 -0.6768 3.312 -1.0944L3.3408 -1.4112C3.1104 -1.2672 2.808 -1.0944 2.4912 -1.0944C2.1312 -1.0944 2.016 -1.4688 2.016 -1.8288C2.016 -1.9728 2.0304 -2.1168 2.0304 -2.232V-4.6512C2.0304 -4.9824 2.1456 -5.4144 2.5344 -5.4576L2.52 -5.616C2.1456 -6.0624 1.728 -6.4656 1.3392 -6.8976Z"/>
- <path id="g77" d="M2.2176 -6.7536C2.1024 -6.5088 1.9728 -6.264 1.8 -6.0624C1.4112 -5.6304 0.8784 -5.3424 0.36 -5.0976C0.4608 -4.9104 0.576 -4.7376 0.6624 -4.536C0.7056 -3.6144 0.6768 -2.5776 0.6624 -1.656C0.576 -1.4544 0.4608 -1.2816 0.36 -1.0944C1.1808 -0.648 1.944 -0.144 2.7792 0.288L2.9232 0.2304L4.104 -0.4608L3.96 -0.7344L3.6432 -0.6048L3.4992 -0.6768C2.9808 -1.008 2.4048 -1.2672 1.9152 -1.6272L1.8864 -1.944C1.8864 -3.1968 1.872 -4.464 1.9008 -5.6736L2.0448 -5.904C2.4192 -5.688 2.808 -5.4576 3.1968 -5.256C3.3984 -5.6016 3.6 -5.9472 3.7872 -6.3072L2.8512 -6.84L2.5776 -6.9984C2.52 -7.0416 2.448 -7.0992 2.3472 -7.0992C2.16 -7.0848 2.1168 -7.0128 1.8864 -7.0128C1.3536 -7.0128 0.9792 -7.3584 0.8352 -7.848C0.8208 -7.848 0.8064 -8.0928 0.8064 -8.0928S0.8064 -8.2368 0.8208 -8.2368C0.936 -9.1296 1.7856 -9.5904 2.664 -9.5904C3.6 -9.5904 4.4352 -9.0432 4.9824 -8.4384C5.0544 -8.352 5.112 -8.2656 5.1984 -8.1936V-8.1792C4.6656 -7.3872 4.2048 -6.5376 3.7008 -5.7312H4.3056V-1.8864C4.3056 -1.8144 4.32 -1.7424 4.32 -1.6704C4.32 -1.584 4.3056 -1.512 4.2768 -1.4544C4.2336 -1.3968 4.0176 -1.1664 4.0176 -1.08C4.0464 -0.9792 4.2192 -0.8064 4.2624 -0.7632L4.896 -0.0144C4.9392 0.0288 5.0976 0.2736 5.1696 0.2736C5.2272 0.2736 5.2992 0.216 5.3568 0.1872L5.76 -0.0432C6.3072 -0.3312 6.7968 -0.648 7.344 -0.9504L7.2 -1.224C6.7824 -1.0224 6.3936 -0.7776 5.9904 -0.5472C5.832 -0.7488 5.6736 -0.936 5.5296 -1.152C5.4864 -2.6352 5.5296 -4.2192 5.5152 -5.7312H6.7248V-6.6528H5.5152C5.5152 -7.2576 5.5872 -7.848 5.6736 -8.4528H5.5296C5.472 -8.4528 5.4288 -8.4528 5.3856 -8.4672C5.2992 -8.5104 5.0832 -8.7984 5.0688 -8.8128C4.536 -9.3888 3.6576 -9.9072 2.6928 -9.9072C1.5408 -9.9072 0.504 -9.1872 0.504 -8.0928C0.504 -7.4304 0.9648 -6.7104 1.7856 -6.7104C1.9296 -6.7104 2.0736 -6.7248 2.2176 -6.7536Z"/>
- <path id="g78" d="M2.376 -7.2L2.328 -6.984C2.412 -6.852 2.472 -6.672 2.52 -6.504C2.532 -6.048 2.532 -5.58 2.52 -5.124H2.508L2.244 -5.796C2.088 -5.76 1.944 -5.64 1.812 -5.568L0.984 -5.088C0.888 -5.028 0.792 -4.98 0.696 -4.92C0.516 -4.824 0.528 -4.74 0.444 -4.512C0.3 -4.032 0.204 -3.42 0.204 -2.82C0.204 -2.712 0.204 -2.616 0.204 -2.508C0.204 -1.836 0.252 -1.128 0.744 -0.612C0.936 -0.42 1.236 -0.216 1.548 -0.168L1.38 0.048L1.584 0.132L1.68 0.06L2.436 -0.744H2.448C2.604 -0.48 2.832 -0.24 3.072 -0.048C3.12 -0.012 3.264 0.132 3.336 0.132C3.396 0.132 3.552 -0.072 3.552 -0.072L4.116 -0.696C4.164 -0.756 4.308 -0.864 4.308 -0.96C4.296 -0.996 4.212 -1.056 4.152 -1.056C4.14 -1.056 4.14 -1.056 4.128 -1.056C4.044 -1.032 3.996 -0.876 3.9 -0.876C3.852 -0.876 3.576 -1.044 3.48 -1.104C3.396 -1.164 3.336 -1.164 3.336 -1.308C3.336 -1.368 3.348 -1.428 3.348 -1.476V-4.536H4.572V-5.148H4.428C4.548 -5.508 4.764 -6.108 4.764 -6.54C4.764 -6.588 4.764 -6.624 4.752 -6.672C4.728 -6.9 4.464 -7.068 4.212 -7.068C4.056 -7.068 3.96 -6.888 3.888 -6.816C3.708 -6.624 3.54 -6.432 3.348 -6.24V-6.672C3.348 -6.72 3.348 -6.756 3.348 -6.804C3.348 -7.236 3.72 -7.452 4.128 -7.452C4.188 -7.452 4.248 -7.452 4.296 -7.452V-7.692C4.224 -7.692 4.164 -7.692 4.104 -7.692C3.492 -7.692 3.204 -7.284 2.892 -6.972C2.856 -6.936 2.796 -6.84 2.736 -6.84C2.688 -6.84 2.652 -6.9 2.628 -6.936C2.544 -7.02 2.472 -7.14 2.376 -7.2ZM4.188 -5.148H3.348V-5.652C3.348 -5.676 3.348 -5.712 3.348 -5.736C3.348 -5.796 3.348 -5.844 3.384 -5.892C3.456 -6.012 3.576 -6.12 3.672 -6.216C3.732 -6.276 3.768 -6.36 3.876 -6.36C4.164 -6.36 4.356 -6.084 4.356 -5.856C4.356 -5.616 4.224 -5.388 4.188 -5.148ZM1.62 -5.172L1.932 -4.392L2.208 -4.524L2.532 -4.536V-1.428C2.532 -1.392 2.532 -1.356 2.532 -1.32C2.532 -1.128 2.424 -1.068 2.316 -0.96S2.112 -0.684 1.896 -0.684C1.728 -0.684 1.56 -0.804 1.452 -0.924C1.188 -1.224 1.128 -1.608 1.08 -1.992C1.056 -2.184 1.032 -2.364 1.02 -2.556C1.032 -2.952 0.984 -3.3 0.984 -3.696C0.984 -4.32 1.14 -4.872 1.62 -5.172Z"/>
- <path id="g79" d="M2.4336 -8.4816L0.1584 -5.4288H1.08C1.0656 -4.1616 1.1088 -2.8512 1.0656 -1.6272C0.8784 -1.4688 0.6768 -1.3248 0.4752 -1.1808L2.088 -0.1584C2.2752 -0.0432 2.4336 0.0864 2.664 0.1584L2.8512 0.0576L4.6656 -1.2096L4.4928 -1.4832C4.2912 -1.368 4.1184 -1.224 3.9312 -1.0944C3.8592 -1.0512 3.744 -0.936 3.6576 -0.936C3.5568 -0.936 3.4416 -1.0368 3.3696 -1.08L2.7072 -1.4976C2.5632 -1.5696 2.4336 -1.6272 2.4336 -1.8432C2.4336 -1.9152 2.448 -1.9872 2.448 -2.0592V-5.4288H4.6656V-6.5664H2.448C2.4336 -7.2 2.4624 -7.8768 2.4336 -8.4816Z"/>
- <path id="g80" d="M2.448 -4.9968H3.168C3.2112 -4.9968 3.2688 -5.0112 3.3264 -5.0112C3.4704 -5.0112 3.528 -4.9392 3.5856 -4.8384C3.6288 -4.752 3.6864 -4.68 3.744 -4.5936C4.7088 -3.2256 5.904 -2.0016 5.904 0.2592C5.904 0.6912 5.832 1.1376 5.5872 1.512C5.3712 1.8576 5.0256 2.1744 4.4928 2.1744C3.312 2.1744 2.7648 0.8784 2.52 0.0144C2.448 -0.2448 2.3616 -0.5184 2.3328 -0.792H0.1584V-0.5472C0.6336 -0.5184 0.7776 0.0864 0.9504 0.432C1.3824 1.4688 2.448 2.1888 3.5136 2.4192C3.816 2.4912 4.1328 2.5344 4.4352 2.5344S5.0256 2.4912 5.3136 2.4048C6.6672 1.9728 7.416 0.4464 7.416 -1.0512C7.416 -2.1024 7.0128 -3.096 6.5664 -3.8592C6.336 -4.2624 6.0624 -4.6224 5.7888 -4.9968C6.2928 -5.0256 6.8832 -4.9536 7.3296 -5.0256C7.5744 -5.3568 7.6896 -5.8176 7.8768 -6.2064H5.1984H5.0688C4.8672 -6.2064 4.8816 -6.2784 4.7808 -6.408C4.4784 -6.8832 4.1472 -7.6032 4.1472 -8.2944S4.5936 -9.6624 5.328 -9.6624C5.4864 -9.6624 5.6304 -9.6192 5.7744 -9.5328C6.192 -9.2448 6.3936 -8.6544 6.3936 -7.9776H8.0784V-9.6768C7.8336 -9.72 7.5744 -9.8208 7.3296 -9.864C6.8112 -9.9792 6.1632 -10.0512 5.616 -10.0512C4.9392 -10.0512 4.4208 -9.8064 4.0176 -9.432C3.3984 -8.856 2.9376 -7.9056 2.9376 -6.8112V-6.624C2.952 -6.48 3.0384 -5.9328 3.0384 -5.9328C3.0096 -5.7744 2.7072 -5.472 2.6496 -5.4144C2.5488 -5.3136 2.448 -5.2704 2.448 -5.0832V-4.9968Z"/>
- <path id="g81" d="M2.448 -7.0416C2.1744 -6.264 1.512 -5.5872 0.72 -5.2704C0.5904 -5.2128 0.4464 -5.2272 0.4464 -5.0256C0.4464 -4.968 0.4608 -4.896 0.4608 -4.8528V-1.944V-1.8C0.4608 -1.7568 0.4608 -1.6992 0.4464 -1.656C0.432 -1.584 0.144 -1.1088 0.144 -1.0944L1.6416 -0.0864C1.8288 0.0432 2.0016 0.1872 2.232 0.2736L2.448 0.1872L4.5936 -1.0512L4.4496 -1.3536C4.4064 -2.7648 4.4352 -4.3056 4.4496 -5.7024L4.5936 -6.0048C3.888 -6.3504 3.1824 -6.7104 2.448 -7.0416ZM3.1104 -0.5616C2.6496 -0.8928 2.1312 -1.1808 1.6992 -1.5408L1.6704 -1.8288V-5.1264C1.8576 -5.3568 2.0736 -5.5728 2.3328 -5.7456C2.6496 -5.616 2.9376 -5.472 3.2112 -5.2992C3.2112 -5.2992 3.2256 -4.9968 3.2256 -4.9968C3.2256 -3.5424 3.24 -2.0736 3.2112 -0.6624L3.1104 -0.5616Z"/>
- <path id="g82" d="M2.52 -7.0272C2.2032 -6.2928 1.5552 -5.616 0.792 -5.2848C0.6912 -5.2416 0.5328 -5.2128 0.5328 -5.0688V-4.9968V-1.9152V-1.7424V-1.6704C0.4896 -1.4544 0.288 -1.296 0.2304 -1.08L0.8352 -0.6768C1.3392 -0.3744 1.7712 0 2.3184 0.2736C2.664 0.1152 2.9808 -0.0864 3.312 -0.2736V1.008V1.1952C3.312 1.7568 3.1824 2.2464 2.7936 2.4768C2.736 2.52 2.664 2.5488 2.6064 2.5488C2.4624 2.5488 2.4336 2.4336 2.3904 2.304C2.3328 2.3472 2.232 2.4192 2.232 2.52C2.232 2.7072 2.4768 2.8368 2.6784 2.8368C3.0672 2.8368 3.3264 2.6352 3.5568 2.448S4.0176 2.0592 4.1904 1.8288H4.2048C4.3344 2.016 4.4928 2.1744 4.6512 2.3472C4.6944 2.4048 4.7664 2.52 4.8384 2.52C4.9248 2.52 5.0112 2.4048 5.0688 2.3472V2.3328C4.5648 1.9152 4.5216 1.2672 4.5216 0.648V0.1584V-5.184V-5.3136C4.5216 -5.3568 4.5216 -5.3856 4.536 -5.4288C4.5504 -5.5008 4.7808 -5.8752 4.8384 -6.0048C4.0608 -6.336 3.312 -6.696 2.52 -7.0272ZM1.7424 -1.6992V-1.8144V-4.8816V-5.0112C1.7424 -5.184 1.8 -5.2416 1.9152 -5.328C1.9872 -5.4 2.3184 -5.7456 2.4192 -5.7456C2.4768 -5.7456 3.0528 -5.472 3.168 -5.4288C3.2544 -5.3712 3.312 -5.3568 3.312 -5.2128V-5.0688V-0.9504V-0.792C3.312 -0.6912 3.2832 -0.6048 3.1968 -0.6048C3.096 -0.6048 2.9664 -0.72 2.8944 -0.7632L2.1024 -1.296C1.944 -1.3824 1.7424 -1.4544 1.7424 -1.6992Z"/>
- <path id="g83" d="M2.6208 -7.128C1.9152 -6.48 1.0944 -5.9328 0.1008 -5.6016C0.144 -5.5152 0.2448 -5.3856 0.3456 -5.3856C0.4032 -5.3856 0.4608 -5.4144 0.5184 -5.4432C0.504 -4.1472 0.5472 -2.808 0.504 -1.5552C0.4176 -1.3968 0.3024 -1.2528 0.2016 -1.1088V-1.0944L1.656 -0.072C1.8288 0.0576 1.9872 0.1872 2.2032 0.2736C2.7792 0 3.2976 -0.3456 3.8304 -0.6624L3.8592 -0.9648C3.6288 -0.8496 3.3552 -0.648 3.0816 -0.648H3.024C2.8512 -0.6768 2.52 -0.9504 2.448 -0.9936L1.9872 -1.3248C1.872 -1.4256 1.728 -1.44 1.728 -1.656V-1.8144V-2.3616V-2.5056C1.728 -2.6928 1.7856 -2.7648 1.8864 -2.8656L2.16 -3.1968L3.2112 -4.4352L3.9168 -5.256C3.96 -5.3136 4.1472 -5.5008 4.1472 -5.5728C4.1472 -5.6304 4.0896 -5.6736 4.0464 -5.7168L3.0528 -6.7104C2.9088 -6.8544 2.7792 -6.9984 2.6208 -7.128ZM1.728 -3.1824V-5.8464V-5.904C1.728 -5.9904 1.7712 -6.1056 1.8864 -6.1056C1.9728 -6.1056 2.0592 -5.9904 2.1312 -5.9184L2.88 -5.1696C2.9376 -5.112 3.1248 -4.9536 3.1248 -4.8672C3.1248 -4.8096 3.0672 -4.7664 3.0384 -4.7232L1.728 -3.1824Z"/>
- <path id="g84" d="M2.7216 -9.5616C2.6352 -9.4032 2.52 -9.2736 2.4048 -9.1296C1.9872 -8.6256 1.5552 -8.28 1.008 -7.9344C0.8784 -7.848 0.7488 -7.848 0.7488 -7.6176C0.7488 -7.5456 0.7632 -7.4592 0.7632 -7.4016V-6.5664C0.7632 -6.4512 0.7776 -6.336 0.7776 -6.2208C0.7776 -6.1344 0.7632 -6.048 0.7488 -5.9616C0.7344 -5.8464 0.5184 -5.1984 0.4464 -4.9968H0.7632V2.0304L0.9072 2.0016L1.0224 1.8432C1.3248 1.224 1.6704 0.6336 1.9584 -0.0144C2.0448 -2.6784 1.9152 -5.6016 1.9872 -8.2224L2.1888 -8.4528H2.2032C2.4624 -8.2224 2.736 -7.992 3.0096 -7.776L3.4416 -8.5104C3.4848 -8.5824 3.5856 -8.6976 3.5856 -8.7984S3.4416 -8.9712 3.384 -9.0288L2.9808 -9.36C2.8944 -9.432 2.8224 -9.504 2.7216 -9.5616ZM2.52 -5.7312H3.1248V-1.8576C3.1248 -1.7856 3.1392 -1.728 3.1392 -1.656S3.1248 -1.512 3.096 -1.4544C3.096 -1.4544 2.7648 -1.08 2.8368 -1.08C2.8368 -1.0368 3.024 -0.8352 3.0672 -0.7632L3.7008 -0.0144C3.7296 0.0288 3.9168 0.2736 3.9888 0.2736C4.0464 0.2736 4.1184 0.216 4.176 0.1872L4.5792 -0.0432C5.0976 -0.3456 5.6304 -0.6336 6.1488 -0.9504L6.0048 -1.224C5.6016 -1.0224 5.256 -0.7632 4.824 -0.5904C4.608 -0.72 4.5072 -0.9648 4.3488 -1.1376L4.3344 -1.368V-5.7312H5.544V-6.6528H4.3344C4.3488 -7.2864 4.3776 -7.9056 4.4784 -8.4528L4.1904 -8.4384L4.0464 -8.2512L2.9952 -6.5376L2.52 -5.7312Z"/>
- <path id="g85" d="M2.724 -6.804C2.64 -6.948 2.508 -7.092 2.388 -7.2L2.34 -6.984C2.424 -6.84 2.484 -6.66 2.532 -6.48V-5.088H2.52L2.244 -5.808C2.112 -5.748 0.732 -4.944 0.732 -4.944C0.54 -4.824 0.528 -4.788 0.456 -4.524C0.3 -4.056 0.204 -3.408 0.204 -2.832C0.204 -2.736 0.204 -2.64 0.204 -2.556C0.204 -1.872 0.24 -1.116 0.756 -0.6C0.936 -0.42 1.272 -0.216 1.548 -0.168L1.38 0.048L1.584 0.132C1.908 -0.12 2.136 -0.468 2.46 -0.72C2.784 -0.576 3.048 -0.372 3.36 -0.228L3.156 0V0.012L3.36 0.156L4.476 -1.092V-1.104C4.428 -1.14 4.356 -1.212 4.296 -1.212C4.248 -1.212 4.212 -1.176 4.188 -1.14C4.152 -1.104 3.96 -0.876 3.912 -0.876S3.816 -0.912 3.768 -0.936L3.516 -1.08C3.432 -1.128 3.348 -1.176 3.348 -1.308C3.348 -1.332 3.348 -1.356 3.348 -1.38V-3.924C3.348 -3.96 3.348 -3.996 3.348 -4.032C3.348 -4.212 3.432 -4.248 3.54 -4.332C3.684 -4.452 3.852 -4.572 3.972 -4.716H3.984C4.08 -4.572 4.212 -4.44 4.32 -4.296C4.716 -3.708 5.04 -2.916 5.04 -2.004C5.016 -0.828 4.5 0.204 3.912 1.008C3.78 1.188 3.636 1.344 3.516 1.524L3.732 1.704H3.744C3.984 1.44 4.2 1.152 4.416 0.864C5.172 -0.144 5.856 -1.356 5.856 -2.652C5.856 -3.876 5.352 -4.74 4.74 -5.376L5.04 -5.616V-5.628L4.884 -5.808H4.872L3.348 -4.5V-6.648C3.348 -6.78 3.348 -6.9 3.384 -7.02C3.456 -7.224 3.624 -7.392 3.816 -7.464C3.888 -7.488 3.972 -7.5 4.056 -7.512V-7.752C3.696 -7.74 3.396 -7.524 3.156 -7.26C3.012 -7.104 2.892 -6.936 2.724 -6.804ZM1.632 -5.172C1.728 -4.908 1.836 -4.644 1.944 -4.392L2.532 -4.716V-1.428C2.532 -1.392 2.532 -1.344 2.532 -1.308C2.532 -1.116 2.436 -1.08 2.328 -0.972C2.208 -0.852 2.112 -0.684 1.896 -0.684C1.704 -0.684 1.512 -0.852 1.404 -0.996C1.056 -1.44 1.044 -2.208 1.02 -2.892C1.02 -3.024 1.008 -3.156 0.996 -3.288V-3.492C0.984 -3.576 0.984 -3.66 0.984 -3.744C0.984 -4.284 1.14 -4.908 1.632 -5.172Z"/>
- <path id="g86" d="M2.76 -1.272C2.532 -1.128 2.448 -1.008 2.04 -1.008C1.704 -1.008 1.464 -1.164 1.296 -1.332C1.056 -1.596 1.008 -1.944 1.008 -2.292C1.008 -2.772 1.044 -3.24 1.044 -3.72C1.056 -4.008 0.984 -4.272 0.984 -4.548C0.984 -4.656 1.02 -4.824 1.128 -4.884C1.152 -4.884 1.272 -4.884 1.272 -4.86L1.548 -4.752C1.728 -4.668 2.52 -4.344 2.652 -4.308C2.82 -4.608 3 -4.92 3.156 -5.232C2.808 -5.364 2.46 -5.508 2.112 -5.652L1.848 -5.76C1.824 -5.772 1.776 -5.784 1.74 -5.784C1.68 -5.784 1.632 -5.736 1.596 -5.7C1.164 -5.34 0.924 -5.256 0.636 -4.644C0.348 -4.092 0.204 -3.456 0.204 -2.784C0.204 -1.86 0.288 -1.08 0.792 -0.504C0.984 -0.264 1.248 -0.072 1.536 0.048C1.608 0.084 1.716 0.144 1.8 0.144C1.812 0.144 1.824 0.144 1.836 0.144C1.896 0.132 2.1 -0.096 2.1 -0.096C2.172 -0.168 2.952 -0.948 2.964 -0.996C2.964 -1.08 2.772 -1.26 2.76 -1.272Z"/>
- <path id="g87" d="M2.7792 -6.552C2.6208 -6.5808 2.4624 -6.6096 2.3184 -6.6096C2.0304 -6.6096 1.7424 -6.5376 1.4688 -6.4224C1.4112 -6.3936 1.0656 -6.2064 1.0656 -6.1488C1.1664 -6.1632 1.2672 -6.1632 1.3536 -6.1632C1.4544 -6.1632 1.5552 -6.1632 1.656 -6.1344C2.16 -6.0192 2.5776 -5.616 2.7216 -5.1264C2.6208 -5.1408 2.5344 -5.1408 2.4336 -5.1408C2.1024 -5.1408 1.7712 -5.0688 1.4688 -4.9248C1.4112 -4.896 1.0512 -4.68 1.0512 -4.6368C1.584 -4.6368 2.1024 -4.4064 2.4768 -4.0176C2.6352 -3.8592 2.7504 -3.672 2.88 -3.4848C2.7072 -3.4848 2.5344 -3.4848 2.3616 -3.456C1.8864 -3.3552 1.44 -3.0528 1.2096 -2.6208C1.4976 -2.7648 1.8432 -2.88 2.1888 -2.88C2.5056 -2.88 2.808 -2.7792 3.0528 -2.52C3.2112 -2.3328 3.2544 -2.16 3.2544 -1.8288C3.2112 -1.3536 2.8944 -0.9936 2.592 -0.7632C2.5056 -0.7056 2.4336 -0.6192 2.3328 -0.576S2.1168 -0.5184 2.016 -0.4896C1.0368 -0.2448 0.2016 0.576 0.2016 1.584H0.5184C0.5184 1.4976 0.5328 1.3968 0.5616 1.3104C0.72 0.9216 1.1808 0.864 1.5984 0.864C1.5984 0.864 2.6064 0.8928 2.6064 0.9072C2.6784 0.9072 3.3408 0.9504 3.3408 0.8928C4.4496 0.648 4.9248 -0.576 5.0112 -1.6848V-3.9312C5.0112 -3.9744 5.0112 -4.032 5.04 -4.0608C5.0688 -4.1472 5.4 -4.2336 5.4432 -4.248C5.7744 -4.3488 6.1344 -4.4064 6.48 -4.4064C7.0128 -4.4064 7.3872 -4.2624 7.8192 -4.1184C7.776 -3.9456 7.7616 -3.7584 7.7328 -3.5856C7.416 -2.1312 6.8976 -0.9504 6.1776 0.1584C6.048 0.3744 5.8752 0.576 5.76 0.792L6.0048 0.9648H6.0192C6.1632 0.792 6.3216 0.6192 6.4944 0.4752C6.8976 0.1728 7.4304 -0.0144 7.9488 -0.0144C8.28 -0.0144 8.6112 0.0576 8.856 0.1584C8.9136 0.1872 9.0864 0.2736 9.1584 0.2736C9.2016 0.2592 9.4896 -0.2448 9.4896 -0.2448C9.792 -0.7632 10.1232 -1.2672 10.4112 -1.7856L10.1376 -1.944L9.864 -1.4688C9.6336 -1.5408 9.4464 -1.5984 9.1584 -1.5984C8.6976 -1.5984 8.2512 -1.4544 7.848 -1.2384C7.6896 -1.152 7.5456 -1.0368 7.4016 -0.9504C7.6752 -1.2816 7.8912 -1.6704 8.1072 -2.0448C8.7696 -3.1392 9.3168 -4.4352 9.3168 -5.8752C9.3168 -6.2496 9.2736 -6.624 9.144 -6.984C8.8416 -7.8624 8.208 -8.5824 7.5024 -9.1584C7.2 -9.4176 6.8688 -9.6336 6.5376 -9.864C6.4656 -9.9072 6.1056 -10.1376 6.0336 -10.1376S5.904 -10.0944 5.8464 -10.0512L2.9952 -8.352C2.9376 -8.3088 2.8224 -8.28 2.7936 -8.208C2.7792 -8.208 2.7792 -8.1216 2.7792 -8.1216C2.7936 -7.8192 2.7792 -6.624 2.7792 -6.552ZM5.0112 -8.4816C6.1632 -8.3664 7.1424 -7.632 7.6176 -6.5664C7.1568 -6.3504 6.9264 -6.1488 6.2496 -6.1488C5.8608 -6.1488 5.4864 -6.2496 5.1984 -6.3792C5.0976 -6.4224 5.0112 -6.4656 5.0112 -6.6096V-6.6816V-8.4816ZM7.848 -4.4208C7.4304 -4.6224 6.9552 -4.7232 6.48 -4.7232C5.9184 -4.7232 5.4288 -4.5936 5.0112 -4.4064V-6.1632C5.3568 -5.9328 5.8032 -5.832 6.2352 -5.832C6.8832 -5.832 7.2864 -6.048 7.7184 -6.3216C7.8048 -6.0048 7.8768 -5.7024 7.8912 -5.3712C7.8912 -5.3712 7.8768 -4.4208 7.848 -4.4208ZM3.3696 -0.6624V-0.6768C3.7728 -0.864 4.104 -1.2528 4.1904 -1.6848C4.2192 -1.6848 4.2336 -2.1024 4.2336 -2.1024C4.2048 -3.4128 4.2192 -7.7472 4.2192 -8.2656V-8.3232C4.2192 -8.424 4.2768 -8.4672 4.3776 -8.4672C4.4784 -8.4816 4.5936 -8.4816 4.6944 -8.496V-2.4912V-2.088C4.6944 -1.9584 4.6944 -1.8144 4.6656 -1.6992C4.5072 -1.1088 3.9312 -0.7776 3.3696 -0.6624Z"/>
- <path id="g88" d="M2.784 -7.44C2.568 -7.548 2.328 -7.692 2.052 -7.692C1.344 -7.692 1.128 -6.78 0.96 -6.204C0.9 -6.036 0.672 -5.448 0.624 -5.328C0.48 -5.004 0.204 -4.776 0.012 -4.488H0.432C0.432 -2.16 0.552 -0.24 0.828 1.98C0.828 2.064 0.852 2.136 0.972 2.136C1.008 2.136 1.056 2.124 1.092 2.124C1.092 1.752 1.152 1.368 1.176 0.996C1.248 -0.036 1.332 -1.056 1.416 -2.088C1.464 -2.664 1.536 -3.24 1.548 -3.816C1.548 -4.272 1.488 -4.728 1.32 -5.148L1.104 -5.676C1.08 -5.736 1.044 -5.808 1.044 -5.88C1.044 -6.024 1.2 -6.192 1.26 -6.252C1.464 -6.468 1.74 -6.6 2.04 -6.6C2.268 -6.6 2.472 -6.516 2.64 -6.444C2.772 -6.708 2.868 -6.996 2.976 -7.272C3.048 -7.428 3.096 -7.704 3.312 -7.704C3.42 -7.704 3.48 -7.584 3.48 -7.476C3.48 -7.152 3.288 -6.804 3.192 -6.636L2.436 -5.256C2.304 -5.016 2.16 -4.788 2.052 -4.536H2.412V-1.704C2.412 -1.596 2.424 -1.476 2.424 -1.356C2.424 -1.008 2.328 -0.732 2.052 -0.564C2.184 -0.42 2.34 -0.36 2.52 -0.288C2.664 -0.216 2.808 -0.144 2.94 -0.048C2.94 -0.048 3.24 0.204 3.24 0.12C3.276 0.108 3.312 0.072 3.336 0.036L3.516 -0.168C3.732 -0.408 4.152 -0.852 4.344 -1.092C4.38 -1.116 4.428 -1.164 4.428 -1.212S4.308 -1.368 4.26 -1.368C4.2 -1.296 3.864 -0.888 3.78 -0.876C3.744 -0.876 3.528 -0.996 3.456 -1.044C3.324 -1.116 3.204 -1.14 3.204 -1.344C3.204 -1.416 3.216 -1.476 3.216 -1.536V-4.536H4.044V-5.148H3.228C3.264 -5.316 3.264 -5.496 3.276 -5.676C3.312 -5.976 3.372 -6.276 3.432 -6.564C3.456 -6.672 3.516 -6.768 3.552 -6.876C3.612 -7.032 3.66 -7.212 3.66 -7.368C3.66 -7.68 3.528 -7.944 3.252 -7.944S2.856 -7.632 2.784 -7.44Z"/>
- <path id="g89" d="M2.7936 -9.5616C2.7072 -9.4032 2.592 -9.2736 2.4768 -9.1296C2.0592 -8.6256 1.6272 -8.28 1.08 -7.9344C0.9504 -7.848 0.8208 -7.848 0.8208 -7.6176C0.8208 -7.5456 0.8352 -7.4592 0.8352 -7.4016V-6.5664C0.8352 -6.4512 0.8496 -6.336 0.8496 -6.2208C0.8496 -6.1344 0.8352 -6.048 0.8208 -5.9616C0.8064 -5.8464 0.5904 -5.1984 0.5184 -4.9968H0.8352V-1.6848C0.8352 -1.5408 0.8208 -1.4544 0.72 -1.3392C0.6624 -1.2816 0.5472 -1.1808 0.5472 -1.0944C0.5472 -0.9936 0.792 -0.7632 0.792 -0.7632L1.4256 -0.0144C1.4688 0.0288 1.6272 0.2736 1.6992 0.2736C1.7568 0.2736 1.8288 0.216 1.8864 0.1872L2.2896 -0.0432C2.4192 -0.1152 3.8016 -0.9216 3.8736 -0.9504C3.8448 -1.0224 3.7872 -1.1952 3.672 -1.1952C3.6432 -1.1952 3.6144 -1.1808 3.5856 -1.1664L2.52 -0.5472C2.3616 -0.7488 2.2032 -0.936 2.0592 -1.152C2.0592 -1.152 2.0448 -1.3392 2.0448 -1.3392C2.0448 -3.6432 2.016 -6.0048 2.0592 -8.2224L2.2608 -8.4528H2.2752L3.096 -7.7616L3.7008 -8.8272C3.3984 -9.072 3.1104 -9.3312 2.7936 -9.5616Z"/>
- <path id="g90" d="M2.856 -0.648V-0.636C2.508 -0.372 2.22 -0.072 1.632 -0.072C1.332 -0.072 1.032 -0.168 0.792 -0.36C0.624 -0.492 0.468 -0.732 0.468 -0.96C0.468 -1.212 0.636 -1.356 0.864 -1.404C0.816 -1.32 0.792 -1.236 0.792 -1.152C0.792 -0.9 1.032 -0.672 1.296 -0.672C1.524 -0.672 1.68 -0.888 1.68 -1.116C1.68 -1.5 1.38 -1.74 1.008 -1.74C0.6 -1.74 0.204 -1.452 0.204 -0.972C0.204 -0.876 0.216 -0.78 0.24 -0.696C0.384 -0.204 0.9 0.156 1.512 0.156C2.052 0.156 2.508 -0.108 2.856 -0.384C2.904 -0.42 2.964 -0.492 3.036 -0.504C3.096 -0.504 3.18 -0.432 3.24 -0.396C3.732 -0.108 4.56 0.156 5.22 0.156C5.268 0.156 5.316 0.156 5.364 0.144C5.424 0.12 5.844 -0.336 5.844 -0.336L6.876 -1.404C6.936 -1.464 7.152 -1.644 7.152 -1.728C7.152 -1.8 7.068 -1.896 7.008 -1.896C6.924 -1.896 6.852 -1.776 6.816 -1.74C6.456 -1.38 5.976 -0.96 5.292 -0.96C4.944 -0.96 4.584 -1.044 4.284 -1.152L3.888 -1.332C3.96 -1.428 4.056 -1.512 4.14 -1.596C4.572 -2.028 5.028 -2.712 5.028 -3.396C5.028 -3.444 5.028 -3.48 5.028 -3.528C4.956 -4.296 4.44 -4.908 4.212 -5.628C4.152 -5.808 4.116 -6 4.116 -6.192C4.116 -6.696 4.44 -7.104 4.824 -7.272C4.872 -7.272 4.884 -6.84 4.884 -6.84S4.872 -6.444 4.836 -6.444C4.812 -6.348 4.776 -6.264 4.74 -6.18C4.728 -6.18 4.716 -6.036 4.728 -6.036C4.752 -6 4.848 -5.928 4.896 -5.928C4.932 -5.928 4.956 -5.976 4.98 -6.012C5.1 -6.228 5.196 -6.468 5.196 -6.792C5.196 -7.056 5.136 -7.152 5.088 -7.392L5.424 -7.464L5.82 -6.048L7.2 -6.444L7.128 -6.696L6.924 -6.648C6.804 -7.056 6.696 -7.452 6.588 -7.872L5.424 -7.728C5.328 -7.716 5.052 -7.656 5.016 -7.656C4.908 -7.656 4.86 -7.788 4.8 -7.848C4.512 -8.208 4.02 -8.46 3.444 -8.46C1.992 -8.46 1.308 -7.044 1.08 -5.976C0.984 -5.496 0.924 -4.992 0.924 -4.488C0.924 -4.32 0.936 -4.14 0.948 -3.96C1.044 -3.012 1.428 -2.1 2.052 -1.38C2.28 -1.104 2.556 -0.84 2.856 -0.648ZM3.612 -1.512C2.4 -2.34 1.86 -3.828 1.86 -5.244C1.86 -5.784 1.932 -6.288 2.076 -6.72C2.292 -7.392 2.748 -8.124 3.624 -8.124C4.104 -8.124 4.452 -7.86 4.692 -7.548C4.452 -7.5 4.2 -7.332 4.008 -7.176C3.624 -6.852 3.288 -6.42 3.288 -5.736C3.3 -4.608 4.092 -3.768 4.092 -2.736C4.092 -2.424 3.984 -2.124 3.84 -1.86C3.768 -1.74 3.684 -1.632 3.612 -1.512Z"/>
- <path id="g91" d="M2.868 -4.668C1.992 -4.032 1.08 -3.444 0.216 -2.796C0.204 -2.676 0.204 -2.532 0.204 -2.4L0.492 -2.592C1.272 -3.156 2.1 -3.672 2.856 -4.272C2.892 -4.38 2.868 -4.536 2.868 -4.668ZM2.868 -3.456C1.992 -2.82 1.08 -2.22 0.216 -1.572C0.204 -1.452 0.204 -1.308 0.204 -1.176C1.092 -1.8 1.992 -2.4 2.856 -3.048C2.892 -3.168 2.88 -3.312 2.868 -3.456Z"/>
- <path id="g92" d="M2.892 -5.808L1.476 -4.776C1.476 -5.052 1.392 -5.328 1.248 -5.568C1.224 -5.628 1.14 -5.772 1.056 -5.772C0.996 -5.748 0.828 -5.52 0.816 -5.508C0.612 -5.268 0.384 -5.028 0.204 -4.764C0.504 -4.62 0.66 -4.38 0.66 -3.984C0.66 -3.912 0.66 -3.84 0.66 -3.78V-2.004C0.66 -1.932 0.66 -1.092 0.66 -1.092C0.648 -0.996 0.612 -0.888 0.552 -0.816C0.492 -0.756 0.396 -0.732 0.396 -0.6C0.396 -0.564 0.408 -0.504 0.408 -0.468C0.576 -0.408 0.696 -0.288 0.792 -0.144L0.888 0.024C0.912 0.108 0.948 0.168 1.08 0.168C1.176 0.168 1.2 0.132 1.224 0.048C1.32 -0.192 1.512 -0.408 1.74 -0.468V-0.72C1.5 -0.804 1.464 -1.044 1.464 -1.284C1.464 -1.38 1.476 -1.488 1.476 -1.572V-4.152C1.476 -4.2 1.464 -4.26 1.464 -4.32C1.464 -4.488 1.56 -4.536 1.68 -4.608C1.836 -4.728 2.016 -4.824 2.148 -4.968H2.16C2.424 -4.656 2.688 -4.344 2.94 -4.008C2.988 -2.952 2.916 -1.812 2.964 -0.78L3.264 -0.144L3.144 0.096L3.324 0.228H3.336L4.176 -1.02V-1.032L3.996 -1.176H3.984L3.876 -1.008C3.804 -1.08 3.756 -1.14 3.756 -1.284C3.756 -1.32 3.756 -1.356 3.756 -1.392V-4.536C3.756 -4.56 3.756 -4.596 3.756 -4.632C3.756 -4.812 3.852 -4.86 4.02 -4.884V-5.052C3.696 -5.052 3.396 -5.22 3.18 -5.448C3.072 -5.556 3 -5.7 2.892 -5.808Z"/>
- <path id="g93" d="M2.94 -0.912C2.976 -0.744 3.012 -0.576 3.06 -0.42C3.192 0.012 3.432 0.48 3.432 0.936C3.432 1.092 3.408 1.236 3.336 1.392C3.216 1.74 2.784 2.028 2.388 2.028C1.656 2.028 1.152 1.56 0.78 1.224C0.744 1.188 0.696 1.128 0.636 1.128C0.636 1.128 0.624 1.128 0.624 1.128C0.564 1.128 0.504 1.188 0.444 1.212C0.576 1.38 0.756 1.524 0.924 1.668C1.38 2.028 1.92 2.304 2.508 2.304C2.772 2.304 2.964 2.244 3.18 2.184C3.828 1.932 4.404 1.284 4.404 0.456C4.404 0.336 4.344 0.3 4.284 0.216C3.924 -0.288 3.768 -0.744 3.768 -1.644C3.768 -1.764 3.768 -1.884 3.768 -2.004C3.768 -2.964 3.9 -3.948 4.104 -4.764C3.828 -4.86 4.056 -4.8 3.684 -4.86C3.276 -4.92 2.892 -5.196 2.616 -5.352C2.52 -5.412 2.184 -5.616 2.076 -5.616S1.884 -5.448 1.848 -5.4L1.392 -4.86C0.816 -4.164 0.456 -3.264 0.456 -2.364C0.456 -1.524 0.792 -0.78 1.212 -0.3C1.26 -0.24 1.416 -0.036 1.512 -0.036C1.548 -0.036 1.884 -0.252 1.884 -0.252L2.94 -0.912ZM1.572 -4.716C1.884 -4.548 2.232 -4.428 2.556 -4.284L2.82 -4.176C2.892 -4.152 2.952 -4.104 2.952 -4.008C2.952 -3.96 2.94 -3.9 2.94 -3.852V-3.156C2.94 -2.712 2.928 -2.256 2.928 -1.812V-1.452C2.928 -1.416 2.94 -1.272 2.904 -1.272C2.88 -1.224 2.436 -0.96 2.436 -0.96C2.376 -0.924 2.136 -0.756 2.076 -0.744C1.992 -0.744 1.92 -0.864 1.872 -0.924C1.512 -1.368 1.26 -1.944 1.188 -2.628C1.176 -2.628 1.176 -3.276 1.188 -3.276C1.2 -3.588 1.2 -3.912 1.308 -4.212C1.416 -4.5 1.404 -4.428 1.572 -4.716Z"/>
- <path id="g94" d="M2.964 -5.532C2.94 -5.58 2.892 -5.784 2.832 -5.784S2.7 -5.748 2.652 -5.724L2.268 -5.556C1.824 -5.364 1.368 -5.196 0.936 -4.956C0.816 -4.896 0.456 -4.74 0.42 -4.62C0.276 -4.248 0.204 -3.108 0.204 -2.82C0.204 -1.632 0.624 -0.792 1.188 -0.12C1.236 -0.06 1.356 0.132 1.464 0.132C1.5 0.132 1.776 -0.06 1.776 -0.06C1.884 -0.132 2.844 -0.756 2.88 -0.816C2.892 -0.828 2.88 -0.888 2.868 -0.888C2.832 -0.936 2.784 -1.032 2.724 -1.032C2.724 -1.032 2.712 -1.032 2.712 -1.032C2.496 -0.984 2.628 -0.936 2.328 -0.936C2.28 -0.936 2.244 -0.948 2.196 -0.948C1.452 -1.08 1.056 -1.884 1.02 -2.568C1.02 -2.604 1.008 -2.652 1.008 -2.7S1.02 -2.784 1.044 -2.82C1.08 -2.856 1.512 -3.036 1.512 -3.036L2.688 -3.528L3.06 -3.684C3.132 -3.72 3.192 -3.72 3.192 -3.804C3.192 -3.84 3.192 -3.876 3.18 -3.9C3.18 -3.9 2.928 -5.388 2.928 -5.448C2.928 -5.472 2.94 -5.508 2.964 -5.532ZM1.008 -3.144C1.008 -3.792 1.032 -4.452 1.416 -4.812C1.548 -4.932 1.704 -5.004 1.872 -5.064C1.968 -5.112 2.064 -5.16 2.16 -5.184L2.352 -3.696L1.008 -3.144Z"/>
- <path id="g95" d="M27.6484 -48.1528C27.1845 -48.06 26.9062 -47.8281 26.767 -47.5034C26.6742 -47.2714 26.6742 -46.7147 26.767 -46.4364C26.8134 -46.2508 26.9062 -46.158 27.4165 -45.6478C28.0196 -45.0911 28.0196 -45.0447 28.0196 -44.9519C27.9732 -44.8591 27.9268 -44.7663 27.8804 -44.72C27.7876 -44.5808 27.6484 -44.6272 27.3237 -44.8591C27.1845 -44.9519 27.0454 -45.0447 26.9526 -45.0911C26.9062 -45.0911 26.8134 -45.2302 26.6742 -45.4622C26.3495 -45.9725 25.2825 -47.5961 25.1898 -47.7353C25.1434 -47.7353 25.0042 -47.6889 24.9578 -47.6889C24.9114 -47.6425 25.0042 -47.5034 25.2825 -47.0858L25.6537 -46.4828L25.4681 -46.6219C25.2362 -46.8539 25.0042 -46.9003 24.7723 -46.9003C24.3084 -46.8539 23.6589 -46.3436 23.4269 -45.9261C23.195 -45.4622 23.3342 -44.9055 23.6589 -44.8127C24.03 -44.7663 24.3084 -45.2302 24.03 -45.5086C23.9372 -45.6014 23.8908 -45.6014 23.7517 -45.6014H23.6125L23.6589 -45.7405C23.7981 -46.1117 24.4939 -46.6219 24.8186 -46.6219C25.1898 -46.6219 25.5609 -46.2508 25.7001 -45.7869C25.7464 -45.555 25.7464 -45.6014 25.6073 -44.6272C25.5609 -44.2097 25.6073 -44.0241 25.7464 -43.8385C25.7928 -43.7922 25.932 -43.6994 25.9784 -43.6994C26.1176 -43.653 26.3495 -43.7922 26.5815 -43.9777C26.8598 -44.2097 26.999 -44.3024 26.999 -44.3024C27.1845 -44.1633 28.901 -40.7768 28.901 -40.6376C28.901 -40.5912 28.7618 -40.4985 28.6226 -40.4057L28.3443 -40.2201L28.2515 -40.3593C26.999 -41.8902 25.7928 -43.0499 24.262 -43.9777C22.4991 -45.0447 20.5044 -45.7405 18.4632 -45.9261C17.5354 -46.0653 16.1437 -46.0189 15.1695 -45.8797C13.2675 -45.6478 11.2728 -44.8591 9.7419 -43.7458L9.41717 -43.5138V-43.8849C9.37078 -44.3024 9.278 -44.72 9.09244 -45.1375C8.95327 -45.4158 8.67493 -45.8797 8.62854 -45.8797S8.53576 -45.8797 8.48937 -45.8333L8.39659 -45.7405L8.48937 -45.6478C8.76771 -45.1839 8.90688 -44.72 8.90688 -44.3952C8.86049 -44.1169 8.8141 -43.9777 8.58215 -43.8849C8.30381 -43.7458 8.02547 -43.8849 7.4224 -44.4416C7.00489 -44.8591 6.68016 -45.0911 6.30904 -45.2302C5.01012 -45.7405 3.34008 -45.1375 2.3195 -43.7922C2.08755 -43.421 1.76282 -42.8644 1.62365 -42.4468C1.57726 -42.3077 1.53087 -42.1685 1.53087 -42.1685C1.48448 -42.1685 1.20614 -42.586 1.11336 -42.7716C0.78863 -43.5138 0.88141 -44.5808 1.43809 -45.323C1.57726 -45.555 1.99477 -45.9261 2.22672 -46.0189C2.55145 -46.2044 2.87618 -46.2508 3.15452 -46.2044C3.38647 -46.158 3.61842 -46.0189 3.75759 -45.9261C3.80398 -45.8797 3.80398 -45.9261 3.98954 -46.1117L4.12871 -46.2972L4.03593 -46.39C3.89676 -46.4828 3.61842 -46.6219 3.38647 -46.6683C2.36589 -46.8539 1.20614 -46.0189 0.78863 -44.8127C0.4639 -43.7458 0.64946 -42.7252 1.29892 -41.9829L1.48448 -41.7974L1.43809 -41.5654C1.29892 -40.6376 1.3917 -39.6171 1.71643 -38.5965C2.08755 -37.5295 2.73701 -36.5089 3.61842 -35.7203C3.94315 -35.442 4.54622 -35.0244 4.77817 -34.8853L4.87095 -34.8389L4.91734 -34.2358C4.91734 -33.54 4.96373 -33.1225 5.05651 -32.5194C5.38124 -30.6174 6.16987 -28.8082 7.23684 -27.3701C7.32962 -27.2309 7.4224 -27.1381 7.4224 -27.0918S6.44821 -26.5351 5.84514 -26.2103C4.22149 -25.3753 3.10813 -25.1898 2.59784 -25.6537C2.55145 -25.7464 2.41228 -25.8392 2.41228 -25.932C2.27311 -26.164 2.22672 -26.5815 2.27311 -26.999L2.3195 -27.1381L2.41228 -26.999C2.50506 -26.767 2.7834 -26.6279 3.06174 -26.6279C3.29369 -26.6279 3.57203 -26.8134 3.7112 -26.999C3.80398 -27.1381 3.80398 -27.1845 3.80398 -27.4165C3.80398 -27.6948 3.80398 -27.7412 3.7112 -27.8804C3.43286 -28.2979 2.82979 -28.3443 2.41228 -27.9732C2.04116 -27.5557 1.8556 -26.6742 2.04116 -26.0248C2.18033 -25.7001 2.45867 -25.4217 2.7834 -25.3289C3.52564 -25.097 4.82456 -25.4217 6.40182 -26.2103L6.77294 -26.3959L6.54099 -26.1176C6.30904 -25.7928 5.93792 -25.2825 5.75236 -24.9114C5.42763 -24.3547 4.639 -23.4269 4.08232 -23.0558C3.75759 -22.8239 3.38647 -22.6383 3.06174 -22.5919C2.82979 -22.4991 2.22672 -22.4991 2.18033 -22.5455C2.18033 -22.5455 2.22672 -22.5919 2.27311 -22.6847C2.50506 -22.963 2.22672 -23.4733 1.8556 -23.3342C1.48448 -23.2414 1.43809 -22.8239 1.71643 -22.4991C1.80921 -22.36 2.04116 -22.2672 2.22672 -22.2672C2.36589 -22.2208 2.36589 -22.2208 2.36589 -22.3136S2.36589 -22.4064 2.41228 -22.3136C2.50506 -22.2672 2.55145 -22.2672 2.7834 -22.2672C3.15452 -22.3136 3.43286 -22.4064 3.80398 -22.5919S4.54622 -23.0094 4.96373 -23.4733L5.28846 -23.7981L5.19568 -23.5197C4.91734 -22.1744 5.1029 -20.7827 5.79875 -19.6694C6.0307 -19.2982 6.58738 -18.7416 6.91211 -18.5096C7.05128 -18.4168 7.14406 -18.324 7.14406 -18.324S7.14406 -18.1849 7.09767 -17.9993C7.00489 -17.4426 7.00489 -16.7004 7.09767 -15.9118L7.14406 -15.7262L6.81933 -15.4943C6.63377 -15.3551 6.30904 -15.0767 6.07709 -14.8448C4.12871 -12.9428 3.06174 -10.4377 3.06174 -7.79352C3.06174 -6.58738 3.2473 -5.52041 3.66481 -4.49983C4.12871 -3.38647 5.01012 -2.27311 5.79875 -1.71643C5.93792 -1.57726 6.0307 -1.48448 6.0307 -1.48448C6.0307 -1.34531 5.47402 -0.74224 5.1029 -0.55668C4.59261 -0.23195 3.89676 -0.04639 3.38647 -0.13917L3.2473 -0.18556L3.38647 -0.27834C3.75759 -0.51029 3.80398 -1.06697 3.52564 -1.3917C3.29369 -1.57726 2.92257 -1.67004 2.64423 -1.53087C2.22672 -1.34531 2.08755 -0.78863 2.36589 -0.41751C2.50506 -0.23195 2.73701 -0.04639 3.06174 0C3.34008 0.13917 4.03593 0.13917 4.45344 0.04639C5.1029 -0.09278 5.70597 -0.4639 6.12348 -1.02058C6.26265 -1.15975 6.35543 -1.29892 6.35543 -1.29892C6.40182 -1.29892 6.4946 -1.25253 6.63377 -1.15975C8.02547 -0.4639 9.69551 -0.37112 10.9016 -0.97419C11.6903 -1.34531 12.247 -1.94838 12.4789 -2.69062C12.6181 -3.06174 12.6181 -3.61842 12.5253 -3.89676L12.4325 -4.12871L12.7109 -4.36066C12.85 -4.49983 13.2211 -4.96373 13.4995 -5.33485S14.1026 -6.07709 14.1953 -6.16987C14.752 -6.68016 15.6798 -6.68016 16.0973 -6.16987C16.2829 -5.98431 16.3293 -5.79875 16.3293 -5.47402S16.3293 -5.1029 16.1901 -5.28846C16.0973 -5.42763 15.819 -5.5668 15.587 -5.5668C15.4015 -5.5668 15.2159 -5.47402 15.0767 -5.33485C14.752 -4.96373 14.8448 -4.40705 15.2623 -4.1751C15.4015 -4.08232 15.4479 -4.08232 15.6798 -4.08232C15.9582 -4.12871 16.1437 -4.22149 16.3293 -4.49983C16.7004 -4.96373 16.7468 -5.89153 16.4221 -6.58738C16.1901 -7.23684 15.6334 -7.79352 14.984 -8.07186L14.7984 -8.11825L15.0304 -8.16464C15.4015 -8.21103 16.0973 -8.3502 16.6076 -8.53576L17.1179 -8.72132L17.3499 -8.30381C17.8601 -7.37601 18.0921 -6.54099 18.0921 -5.52041C18.0921 -3.43286 16.886 -1.76282 15.1695 -1.48448C14.8912 -1.43809 14.4737 -1.43809 14.3345 -1.48448C14.2417 -1.48448 14.2417 -1.48448 14.3345 -1.57726C14.5201 -1.67004 14.6128 -1.8556 14.6128 -2.08755C14.6128 -2.7834 13.6387 -2.96896 13.4067 -2.3195C13.2211 -1.90199 13.4995 -1.48448 14.0098 -1.25253C14.3345 -1.15975 15.0767 -1.15975 15.4943 -1.25253C16.9323 -1.67004 17.9993 -2.87618 18.324 -4.54622C18.4168 -4.96373 18.4168 -6.12348 18.324 -6.4946C18.2777 -6.68016 18.2777 -6.77294 18.2777 -6.77294C18.2777 -6.81933 18.3704 -6.68016 18.5096 -6.4946C19.1591 -5.5668 20.0405 -4.639 21.0147 -3.89676C23.0558 -2.22672 25.4217 -1.25253 28.0659 -0.9278C28.5762 -0.88141 30.1999 -0.88141 30.7102 -0.9278C32.1947 -1.11336 33.8183 -1.53087 35.1636 -2.04116C35.3956 -2.13394 35.5811 -2.22672 35.6275 -2.22672C35.6275 -2.22672 35.6739 -2.18033 35.7203 -2.18033C35.8131 -2.04116 36.045 -1.94838 36.2306 -1.94838C36.6017 -1.94838 36.8337 -2.22672 36.88 -2.59784L36.9264 -2.7834L37.3903 -3.01535C39.014 -3.7112 40.7304 -4.36066 41.8438 -4.639C42.818 -4.87095 43.3746 -4.91734 44.1633 -4.91734C44.5808 -4.91734 44.8591 -4.87095 44.9983 -4.82456C45.2302 -4.77817 45.6941 -4.54622 45.8333 -4.45344L45.9261 -4.40705L45.6941 -4.31427C45.1375 -4.03593 44.4416 -3.89676 43.5138 -3.85037C42.8644 -3.80398 42.6788 -3.75759 42.3541 -3.52564C41.9829 -3.2473 41.7046 -2.82979 41.6118 -2.41228C41.5654 -2.22672 41.6118 -1.71643 41.6582 -1.53087C41.6582 -1.43809 41.6582 -1.48448 41.3335 -1.62365C40.916 -1.8556 40.4985 -2.04116 40.081 -2.13394C39.8026 -2.22672 39.6634 -2.22672 39.2459 -2.22672C38.6893 -2.22672 38.4573 -2.18033 38.179 -1.99477S37.8078 -1.62365 37.7615 -1.34531C37.7615 -0.88141 38.0398 -0.60307 38.4573 -0.60307C39.1532 -0.60307 39.3851 -1.48448 38.782 -1.8556L38.6893 -1.90199L38.8748 -1.94838C39.2923 -1.99477 40.1273 -1.90199 40.6376 -1.67004C41.0088 -1.53087 41.4727 -1.25253 41.8438 -1.02058C43.4674 0 43.8385 0.13917 44.488 0.13917C45.2302 0.13917 45.7405 -0.04639 46.2972 -0.55668C46.5292 -0.83502 46.6219 -0.97419 46.7611 -1.20614C46.9931 -1.67004 47.0395 -1.94838 46.9931 -2.45867C46.9931 -3.15452 46.8075 -3.61842 46.4828 -4.08232C46.39 -4.22149 46.3436 -4.31427 46.3436 -4.31427C46.8075 -4.68539 47.1322 -4.96373 47.3178 -5.38124C47.8281 -6.40182 47.457 -7.65435 46.6219 -7.65435C46.3436 -7.65435 46.1117 -7.46879 46.0189 -7.19045C45.8797 -6.81933 46.2044 -6.35543 46.6219 -6.35543C46.8075 -6.35543 47.0395 -6.4946 47.1322 -6.63377L47.225 -6.77294V-6.54099C47.2714 -6.30904 47.225 -5.89153 47.1322 -5.65958C46.9931 -5.28846 46.7147 -4.91734 46.2972 -4.639L46.1117 -4.49983L45.8797 -4.639C44.9519 -5.24207 43.421 -5.24207 41.2871 -4.68539C40.8696 -4.59261 39.5707 -4.1751 39.1995 -4.03593C39.1532 -4.03593 39.3851 -4.1751 39.6634 -4.40705C40.9624 -5.24207 41.8902 -6.0307 42.9571 -7.09767C44.7663 -8.86049 45.8797 -10.4841 46.8075 -12.5717L46.9931 -13.0356H47.1786C47.4106 -13.082 47.5497 -13.1284 47.6889 -13.3139C47.8745 -13.4995 47.9209 -13.6387 47.9209 -13.8706C47.8745 -14.1489 47.7817 -14.3809 47.5961 -14.4737L47.5034 -14.5665L47.5497 -14.7984C48.06 -16.7004 48.1992 -19.3446 47.9673 -21.3394C47.8281 -22.6847 47.4106 -24.3084 46.9467 -25.4217L46.8539 -25.6073H46.9467C46.9931 -25.6073 47.1322 -25.6537 47.2714 -25.6537C47.6889 -25.7464 47.8745 -25.8856 47.9209 -26.164C47.9209 -26.3495 47.8281 -26.5815 47.6425 -26.7206C47.5497 -26.767 47.3178 -26.9062 47.0858 -26.9526C46.8075 -27.0918 46.6219 -27.1845 46.5292 -27.2773C46.3436 -27.4165 46.158 -27.834 46.1117 -28.0659C46.1117 -28.2979 46.158 -28.3443 46.4364 -28.4371C46.6683 -28.5298 47.1786 -28.5762 47.1786 -28.5298C47.1786 -28.5298 47.1322 -28.4835 47.0858 -28.3907C46.8075 -27.9732 47.1786 -27.4629 47.6425 -27.5557C48.06 -27.6948 48.1528 -28.1587 47.7817 -28.5298C47.5961 -28.7154 47.3178 -28.8082 46.9467 -28.8082C46.39 -28.8082 45.9261 -28.6226 45.8797 -28.2979C45.8333 -28.1123 45.8797 -27.7876 46.0189 -27.5093C46.2044 -27.1381 46.3436 -26.999 46.9003 -26.767C47.225 -26.6742 47.4106 -26.5351 47.5034 -26.4887C47.5961 -26.3495 47.6425 -26.3495 47.6425 -26.164C47.6425 -25.7928 47.457 -25.7001 46.9467 -25.9784L46.6683 -26.0712L46.4364 -26.5815C45.8333 -27.7412 45.1375 -28.7154 44.3024 -29.6432L43.9777 -29.9679H44.4416C44.9519 -29.9679 45.1839 -30.0607 45.6014 -30.2927C46.4828 -30.8957 46.7147 -32.1483 46.2044 -33.1688C46.0189 -33.54 45.5086 -34.0503 45.1375 -34.2358C44.1633 -34.7925 43.0499 -34.9317 41.8438 -34.6533C40.7768 -34.375 39.8026 -33.8183 39.014 -33.0297L38.782 -32.8441L38.4573 -32.8905C38.2254 -32.9369 37.8078 -32.9369 37.4367 -32.9369C36.7409 -32.9369 36.3234 -32.8905 35.7203 -32.7049C35.5347 -32.6586 35.3492 -32.6586 35.3492 -32.6586S35.3492 -32.7513 35.3956 -32.8441C35.3956 -32.9369 35.3956 -33.0297 35.3956 -33.0297C35.3492 -33.0297 35.1636 -33.0761 34.9781 -33.1225C34.6533 -33.1688 34.6069 -33.2152 34.6069 -33.2616C34.6069 -33.2616 34.6533 -33.4936 34.6997 -33.7255C34.6997 -33.9575 34.7461 -34.143 34.7925 -34.143C34.7925 -34.143 35.0708 -34.0503 35.3028 -33.9111C35.7203 -33.6791 35.8595 -33.6327 35.9986 -33.6327C36.3234 -33.6327 36.5089 -33.8647 36.5089 -34.2358C36.5089 -34.4214 36.4625 -34.5142 36.2306 -34.9781S35.9986 -35.5347 35.9986 -35.7203C35.9986 -36.1378 36.2306 -36.6017 36.5553 -36.6945C36.6481 -36.6945 36.7409 -36.6945 36.9264 -36.6481C37.2048 -36.6017 37.5295 -36.4161 37.7151 -36.277L37.8542 -36.1842L37.6687 -36.0914C37.4367 -36.045 37.3439 -35.9522 37.2976 -35.7203C37.2048 -35.3956 37.4367 -35.0708 37.8078 -35.0708C38.1326 -35.0708 38.3181 -35.3028 38.3181 -35.7203C38.2717 -35.8595 38.2717 -35.9986 38.2717 -35.9986S38.4109 -35.9059 38.5965 -35.8131C40.2665 -34.7925 42.7252 -34.9317 44.72 -36.1378C45.3694 -36.5553 46.158 -37.2976 46.5292 -37.8542C47.1322 -38.7356 47.3642 -39.6171 47.3178 -40.6376C47.3178 -41.3335 47.225 -41.751 46.9003 -42.3541C46.3436 -43.4674 45.4158 -44.1633 44.2561 -44.3488C42.818 -44.5344 41.519 -43.7458 41.1943 -42.4932C40.8696 -41.1943 41.7974 -39.9882 43.0963 -40.081C43.7922 -40.1737 44.2561 -40.3593 44.5344 -40.684C44.9519 -41.1015 44.9519 -41.6118 44.5808 -42.0293C44.2097 -42.4005 43.6066 -42.4468 43.2355 -42.1221C43.0499 -41.9829 42.9107 -41.7046 42.8644 -41.4727C42.818 -41.1479 43.0035 -40.7304 43.3283 -40.5449C43.5138 -40.4521 43.5138 -40.4057 43.0963 -40.4057C42.6324 -40.3593 42.2149 -40.4985 41.8902 -40.8232C41.2871 -41.4263 41.2407 -42.4005 41.7974 -43.1427C42.4468 -44.0241 43.653 -44.3024 44.8127 -43.8849C45.7405 -43.5602 46.4828 -42.6324 46.8075 -41.519C46.8539 -41.1943 46.9003 -41.1015 46.9003 -40.5449C46.9003 -39.9418 46.8539 -39.849 46.8075 -39.5243C46.6219 -38.8748 46.2972 -38.3181 45.8333 -37.8542C45.5086 -37.4831 45.0911 -37.2512 44.6736 -37.112C44.3952 -37.0192 44.3024 -36.9728 43.9313 -36.9728C43.3746 -36.9728 43.0963 -37.0192 42.6788 -37.2048C42.0757 -37.4831 41.9366 -37.6223 40.4985 -39.1532C39.1532 -40.5449 37.9934 -41.7974 37.6223 -42.1685L37.3903 -42.4005L37.6687 -42.818C38.3645 -43.8849 39.1995 -44.72 40.081 -45.2766C40.7304 -45.6478 41.4263 -45.9261 42.2149 -46.1117C42.6324 -46.2044 42.7252 -46.2044 43.5138 -46.2044S44.488 -46.2044 45.2302 -46.1117C45.8797 -46.0189 46.158 -45.9725 46.7147 -45.9725C47.457 -45.9725 47.6425 -46.0189 48.06 -46.2508C48.7095 -46.6219 48.7559 -47.457 48.1528 -47.8281C48.0136 -47.9209 47.9209 -47.9209 47.7353 -47.9209C47.5034 -47.9209 47.457 -47.9209 47.2714 -47.8281C46.9003 -47.5961 46.7611 -47.1322 46.9467 -46.7147C47.0395 -46.6219 47.1322 -46.4828 47.225 -46.39L47.3642 -46.2972L47.225 -46.2508C46.9931 -46.2044 45.9261 -46.2972 45.1839 -46.39C44.3024 -46.4828 43.2355 -46.5292 42.7252 -46.4828C41.1479 -46.2972 39.849 -45.6478 38.6893 -44.488C38.2254 -44.0241 37.9006 -43.653 37.4831 -43.0499L37.2048 -42.6324L37.0656 -42.6788C36.8337 -42.818 36.2306 -43.0035 35.8595 -43.0963C35.3956 -43.1891 34.5605 -43.1891 34.0966 -43.0963C32.7049 -42.8644 31.3132 -42.2613 29.6896 -41.1479L29.1793 -40.8232L29.1329 -41.1015C28.901 -42.4005 28.8082 -43.7458 28.9474 -44.6272C29.0865 -45.8797 29.6432 -46.9931 30.4318 -47.5034C30.7566 -47.7353 31.0349 -47.8281 31.4524 -47.8281C32.1019 -47.8745 32.473 -47.7353 32.9369 -47.2714C33.2616 -46.9467 33.4008 -46.7147 33.5864 -46.2508C33.7255 -46.0189 33.7255 -45.9261 33.7255 -45.6941C33.7255 -45.5086 33.7255 -45.4158 33.5864 -45.1839C33.3544 -44.6736 32.7977 -44.3024 32.2874 -44.2561C31.7308 -44.2561 31.4988 -44.488 31.5916 -44.9983V-45.2302L31.638 -45.0911C31.8235 -44.8127 32.241 -44.6736 32.5658 -44.8591C33.2152 -45.1839 32.9833 -46.158 32.241 -46.158C31.7771 -46.158 31.406 -45.6941 31.3132 -45.0447C31.2205 -44.6736 31.2669 -44.488 31.4988 -44.3024C31.9627 -43.8385 32.8905 -43.9777 33.54 -44.5808C33.7719 -44.8127 34.0039 -45.1839 34.0039 -45.3694C34.0039 -45.4622 34.0039 -45.4622 34.143 -45.323C34.9781 -44.5808 36.2306 -44.8127 36.3234 -45.7405C36.3698 -45.9725 36.3234 -46.39 36.1842 -46.6219C35.9059 -47.1786 35.3492 -47.4106 34.9317 -47.0395C34.7461 -46.9003 34.6997 -46.7611 34.6997 -46.5292S34.7461 -46.158 34.9317 -46.0189C35.2564 -45.7405 35.7203 -45.7869 35.9522 -46.158L36.045 -46.2508V-46.0653C36.045 -45.9261 36.045 -45.7869 36.045 -45.7405C35.9986 -45.2766 35.442 -44.9983 34.9317 -45.1375C34.5142 -45.2766 34.1894 -45.6014 33.9575 -46.1117C33.6327 -46.8075 33.4472 -47.1786 33.0297 -47.5497C32.7513 -47.8281 32.4266 -48.0136 32.0555 -48.06C31.7771 -48.1528 31.2669 -48.1528 30.9885 -48.06C29.8288 -47.7817 28.9474 -46.4828 28.669 -44.72C28.5762 -44.3024 28.5762 -42.7252 28.669 -42.1685C28.7154 -41.9366 28.7154 -41.7046 28.7154 -41.7046S28.5298 -42.1221 28.2515 -42.6324S27.6484 -43.7458 27.5557 -43.9777L27.2773 -44.3952L27.602 -44.4416C27.9732 -44.488 28.1123 -44.5344 28.2515 -44.72C28.3907 -44.9519 28.2515 -45.2302 27.8804 -45.6014C27.0918 -46.2972 26.999 -46.4364 26.9526 -46.9467C26.9526 -47.1786 26.9526 -47.225 27.0454 -47.4106C27.1381 -47.5497 27.2309 -47.6425 27.2773 -47.6889C27.602 -47.9209 28.2515 -48.0136 28.5762 -47.8745C28.7154 -47.8281 28.7154 -47.8281 28.6226 -47.7353C28.5298 -47.6889 28.4371 -47.5034 28.4371 -47.4106S28.5762 -47.1322 28.669 -47.0858C28.901 -46.9467 29.1793 -47.0858 29.2721 -47.3178C29.3185 -47.5961 28.9937 -48.06 28.6226 -48.1528C28.3907 -48.1992 27.9268 -48.1992 27.6484 -48.1528ZM26.2567 -45.555C26.4887 -45.2302 26.5815 -44.9983 26.5815 -44.9519S26.5351 -44.72 26.5351 -44.5344C26.4423 -44.1169 26.3959 -43.9777 26.2567 -43.9313C26.164 -43.8849 25.9784 -43.9777 25.8856 -44.0705C25.8392 -44.1633 25.8392 -44.3024 25.932 -44.9519C26.0248 -45.4622 26.0248 -45.8333 25.8856 -46.1117C25.8392 -46.2508 25.932 -46.1117 26.2567 -45.555ZM17.6746 -45.6941C19.623 -45.6014 21.2466 -45.1839 22.963 -44.3488C24.03 -43.8385 24.9114 -43.2819 25.7928 -42.4932C26.5351 -41.8902 27.3701 -41.0088 27.9268 -40.3129L28.1123 -40.0346L27.5557 -39.5707C27.2309 -39.3387 26.9062 -39.1068 26.8598 -39.0604L26.7206 -38.9212L26.6742 -39.014C26.4887 -39.3387 25.8392 -40.081 25.3753 -40.5449C24.4475 -41.519 23.4733 -42.1685 22.36 -42.7252C19.9013 -43.9313 17.3499 -44.0241 14.984 -43.0035C13.9634 -42.5396 13.082 -41.9366 11.0872 -40.4057C10.0202 -39.5707 9.55634 -39.1995 8.99966 -38.8284C7.79352 -38.0862 7.00489 -37.7151 6.0307 -37.5759C5.5668 -37.4831 5.5668 -37.4831 5.61319 -37.7151C6.0307 -39.014 6.77294 -40.4057 7.70074 -41.519C8.02547 -41.8438 8.02547 -41.8438 8.21103 -41.8902C8.62854 -41.9366 9.09244 -42.3541 9.278 -42.8644C9.37078 -43.0963 9.50995 -43.2355 10.1594 -43.653C12.015 -44.9055 14.1026 -45.6014 16.3757 -45.6941C16.654 -45.7405 16.9323 -45.7405 16.9787 -45.7405C16.9787 -45.7405 17.3035 -45.7405 17.6746 -45.6941ZM5.93792 -42.2149L6.77294 -41.9829L6.35543 -41.8438C5.84514 -41.5654 5.33485 -41.3799 4.87095 -41.2871C4.31427 -41.1479 3.57203 -41.1479 3.06174 -41.2871C2.87618 -41.3335 2.64423 -41.4263 2.50506 -41.4727C2.3195 -41.5654 2.3195 -41.5654 2.36589 -41.6582C2.59784 -41.8902 3.15452 -42.1685 3.57203 -42.3077C4.26788 -42.4932 4.77817 -42.4468 5.93792 -42.2149ZM7.51518 -41.8902L7.65435 -41.8438L7.32962 -41.519C6.4946 -40.4521 5.84514 -39.2459 5.42763 -37.9934C5.33485 -37.7151 5.24207 -37.5295 5.24207 -37.4831C5.19568 -37.4831 5.01012 -37.4831 4.77817 -37.5295C4.22149 -37.5759 3.75759 -37.6687 3.2473 -37.947C2.50506 -38.2717 2.04116 -38.782 1.8556 -39.4779C1.71643 -39.849 1.71643 -40.3593 1.8556 -40.7304C1.94838 -41.1015 2.08755 -41.3335 2.18033 -41.2871C2.22672 -41.2871 2.36589 -41.2407 2.55145 -41.1479C3.06174 -40.9624 3.38647 -40.916 3.94315 -40.916C4.77817 -40.916 5.5668 -41.1015 6.58738 -41.6118C7.14406 -41.8902 7.23684 -41.9366 7.51518 -41.8902ZM32.7513 -40.4521C33.6791 -40.3129 34.5142 -39.849 35.2564 -39.1532L35.5811 -38.8748L35.442 -38.4109C35.2564 -37.7615 34.9317 -36.3698 34.7461 -35.5811C34.6997 -35.2564 34.6069 -34.9781 34.6069 -34.9781S34.4678 -34.8389 34.3286 -34.6997C33.8183 -34.3286 33.6327 -34.2358 33.4936 -34.4214C33.2152 -34.6997 33.308 -34.9317 33.8647 -35.3956C34.0503 -35.5811 34.2358 -35.7667 34.2822 -35.8595C34.6069 -36.3234 34.4678 -37.2512 34.0503 -37.5295C33.8647 -37.6687 33.6327 -37.7151 33.2152 -37.7151C32.6122 -37.7151 32.1947 -37.5295 32.0091 -37.1584C31.7771 -36.7409 31.9163 -36.3234 32.3338 -36.277C32.8905 -36.1842 33.1688 -36.9728 32.7049 -37.2048C32.6122 -37.2512 32.5658 -37.2976 32.5658 -37.2976C32.5658 -37.3439 32.8905 -37.3903 33.1688 -37.3903C33.7255 -37.3903 33.9575 -37.2976 34.0966 -37.0192C34.143 -36.9264 34.1894 -36.8337 34.1894 -36.5553C34.1894 -36.0914 34.0966 -35.9986 33.6327 -35.5347C33.0761 -35.0708 32.9369 -34.7925 33.1225 -34.4678C33.2616 -34.1894 33.3544 -34.1894 33.9575 -34.1894H34.4678V-34.0966C34.4678 -34.0503 34.4214 -33.8647 34.375 -33.6327C34.3286 -33.4472 34.3286 -33.2616 34.3286 -33.2616S34.143 -33.2616 33.9575 -33.308C33.7255 -33.3544 33.54 -33.4008 33.54 -33.4008C33.54 -33.3544 33.308 -32.0091 33.308 -31.9627C33.308 -31.9627 33.3544 -31.9627 33.4472 -31.9163C33.7719 -31.8699 33.7719 -31.8699 33.4472 -31.638C33.0761 -31.3596 32.6586 -30.9885 32.3802 -30.7102L32.1947 -30.4782V-31.0813L32.1483 -31.6844H31.7771H31.3596V-32.1483C31.2205 -34.375 30.6638 -36.88 29.6896 -39.3851C29.5968 -39.6634 29.504 -39.9418 29.504 -39.9418C29.4576 -40.0346 30.2927 -40.3129 30.9421 -40.4521C31.406 -40.5449 32.2874 -40.5449 32.7513 -40.4521ZM29.2721 -39.1995C29.3649 -38.8284 29.4576 -38.5501 29.4576 -38.5037C29.504 -38.4573 29.4113 -38.6429 29.2721 -38.8284C29.1329 -39.0604 28.9474 -39.3387 28.901 -39.4315S28.7618 -39.6171 28.7618 -39.6171C28.7154 -39.6634 29.0401 -39.8954 29.0865 -39.849S29.1793 -39.5243 29.2721 -39.1995ZM28.669 -39.1995C29.4113 -38.0398 29.9679 -36.9264 30.2927 -35.8131C30.7102 -34.2822 30.9885 -33.0297 31.0813 -31.9627V-31.6844H30.7102H30.3391V-30.8957V-30.1071H30.7102H31.0813V-29.6432C31.0349 -29.0401 30.9421 -28.1123 30.8957 -27.7412C30.8493 -27.602 30.803 -27.2309 30.7566 -26.999C30.6638 -26.4423 30.5246 -25.7001 30.3391 -25.0042C29.504 -21.9889 28.0659 -19.0663 26.0248 -16.4221L25.7001 -15.9582L25.5609 -16.0973L25.3753 -16.2829L24.8186 -15.7262L24.2156 -15.1695L24.4011 -14.984L24.6331 -14.752L24.5403 -14.6592C24.4475 -14.4737 23.1486 -13.2211 22.6383 -12.7572L22.128 -12.2933L21.6641 -12.7572L21.2466 -13.1748L22.2208 -14.1953C23.195 -15.1231 23.6589 -15.6334 24.262 -16.3757C26.9526 -19.7157 28.6226 -23.4269 29.1793 -27.2773C29.3185 -28.3443 29.3649 -28.7618 29.3649 -30.0607C29.3649 -31.406 29.3185 -31.8699 29.1329 -32.9369C28.8082 -34.9317 28.0196 -37.0192 27.0454 -38.5501L26.9526 -38.6429L27.1845 -38.782C27.4629 -38.9676 28.4371 -39.5243 28.4371 -39.5243C28.4835 -39.5243 28.5762 -39.3851 28.669 -39.1995ZM36.3698 -37.947C36.6017 -37.6687 36.9264 -37.2976 37.0656 -37.112L37.3439 -36.8337L37.112 -36.9264C36.7873 -37.0192 36.5089 -37.0192 36.3234 -36.9264S35.9522 -36.6017 35.8131 -36.3234C35.7203 -36.1378 35.7203 -36.0914 35.7203 -35.8131V-35.4883L35.9986 -34.9317C36.1842 -34.5142 36.2306 -34.3286 36.2306 -34.2358C36.2306 -34.0503 36.1378 -33.9111 35.9986 -33.8647C35.7667 -33.7255 35.6275 -33.8647 35.3028 -34.5605C35.21 -34.7461 35.0708 -34.9317 35.0244 -34.9781L34.9317 -35.0244L35.0708 -35.7667C35.21 -36.4625 35.5811 -37.9006 35.7203 -38.3645C35.7667 -38.5501 35.8131 -38.5965 35.8595 -38.5501C35.8595 -38.5501 36.0914 -38.2717 36.3698 -37.947ZM18.556 -37.5759C19.4838 -37.3903 20.5044 -36.9728 21.3858 -36.3698C24.1228 -34.5142 25.7928 -31.2669 26.164 -27.3237C26.2567 -26.5351 26.2567 -25.0506 26.164 -24.262C25.8392 -20.7363 24.4011 -17.3499 22.0352 -14.5665C21.3394 -13.7778 21.3394 -13.7778 22.0816 -15.3087C23.195 -17.5354 23.8445 -19.1591 24.3084 -20.8755C25.3289 -24.6331 25.1434 -28.2051 23.7053 -30.8957C23.1486 -32.0091 22.5455 -32.7513 21.4786 -33.6791C21.2002 -33.9111 20.9683 -34.143 20.8755 -34.2358C20.7363 -34.4214 20.6435 -34.6533 20.6435 -34.7925C20.6435 -34.8389 20.5972 -34.8853 20.5508 -34.8853C20.3652 -34.9317 20.3188 -34.9317 20.226 -34.6997C20.0869 -34.5142 19.623 -33.9111 19.5302 -33.8647C19.4838 -33.8183 19.3446 -33.9575 19.2055 -34.0966C18.4632 -34.6997 17.6746 -35.1172 16.7932 -35.2564C13.917 -35.7203 11.3192 -33.4472 11.3192 -30.4782C11.3192 -29.8752 11.3192 -29.6896 11.5047 -29.2721C11.5975 -29.1329 11.6903 -28.9937 11.8294 -28.8546L12.015 -28.7154L11.7831 -28.669C11.6903 -28.669 11.4583 -28.669 11.3192 -28.6226C10.2522 -28.5762 9.13883 -28.1587 8.11825 -27.5557C7.93269 -27.4165 7.70074 -27.2773 7.70074 -27.2773C7.65435 -27.2773 7.09767 -28.0196 6.86572 -28.4371C6.58738 -28.9474 6.30904 -29.4576 6.07709 -30.0143C5.89153 -30.4782 5.70597 -30.9885 5.75236 -31.0349C5.75236 -31.0349 5.79875 -30.9421 5.89153 -30.8493C6.16987 -30.3854 6.72655 -29.9679 7.19045 -29.8288C7.51518 -29.6896 8.16464 -29.6896 8.44298 -29.7824C8.90688 -29.8752 9.23161 -30.1999 9.23161 -30.571C9.23161 -31.0813 8.8141 -31.3596 8.39659 -31.2205C7.93269 -31.0349 7.83991 -30.4782 8.21103 -30.1535C8.25742 -30.1071 8.30381 -30.0143 8.30381 -30.0143C8.30381 -29.9679 7.60796 -30.0143 7.4224 -30.0607C6.30904 -30.3391 5.52041 -31.5452 5.28846 -33.3544C5.19568 -33.7719 5.14929 -34.6533 5.19568 -34.6533C5.19568 -34.6533 5.33485 -34.6069 5.52041 -34.5142C7.09767 -33.8647 8.95327 -33.8183 10.5769 -34.4214C11.3192 -34.6997 11.7367 -34.9781 13.1748 -35.8595C13.685 -36.1842 14.2881 -36.5553 14.4737 -36.6945C15.4015 -37.2048 16.2365 -37.5295 17.0715 -37.6223C17.4426 -37.6687 18.1385 -37.6223 18.556 -37.5759ZM16.654 -34.9781C17.5354 -34.8389 18.5096 -34.375 19.0663 -33.7719C19.2518 -33.6327 19.2518 -33.6327 19.1591 -33.54C19.0199 -33.4008 18.2313 -32.7977 17.7674 -32.5194C17.2107 -32.1947 16.0973 -31.5916 15.3551 -31.2669C15.1231 -31.1741 14.8912 -31.0813 14.8912 -31.0349C14.8912 -31.0349 14.8912 -30.9885 14.8912 -30.8957L14.9376 -30.7566L15.2159 -30.803C15.587 -30.803 16.3293 -30.7566 16.7468 -30.6638C17.721 -30.4318 18.7416 -29.9215 19.5302 -29.3185C19.6694 -29.2257 19.9013 -28.9937 20.0869 -28.8082L20.3652 -28.5298L20.2724 -28.2515C20.0869 -27.602 19.5766 -26.767 19.0199 -26.2103L18.7416 -25.8856L18.4632 -26.164C17.1179 -27.4629 15.2159 -28.3443 13.2211 -28.6226C12.9892 -28.6226 12.8036 -28.669 12.8036 -28.669S12.8036 -28.7154 12.85 -28.7154S13.1748 -28.9474 13.2675 -29.1329S13.3603 -29.6896 13.2675 -29.8752S12.9428 -30.2463 12.7572 -30.2927C12.6181 -30.3854 12.2933 -30.3854 12.1078 -30.2927C11.9686 -30.2463 11.7367 -30.0143 11.6439 -29.8752C11.5975 -29.7824 11.5511 -30.2927 11.5975 -30.7102C11.7367 -32.4266 12.7572 -33.9575 14.2417 -34.6533L14.5201 -34.7461L14.4737 -34.6069C14.1953 -34.0503 14.5665 -33.4472 15.1695 -33.4472C15.6334 -33.4472 15.9582 -33.7719 15.9582 -34.2358C15.9582 -34.5142 15.8654 -34.6997 15.6334 -34.8853C15.4943 -34.9781 15.4943 -34.9781 15.5406 -34.9781C15.7262 -35.0244 16.3757 -35.0244 16.654 -34.9781ZM44.1169 -34.5142C45.0447 -34.3286 45.8333 -33.6791 46.0653 -32.8441C46.158 -32.5658 46.2044 -31.9627 46.158 -31.6844C45.9725 -30.8493 45.2766 -30.2463 44.4416 -30.2463C44.2097 -30.2463 43.7922 -30.2927 43.9313 -30.3391C44.0705 -30.3391 44.3488 -30.6174 44.3952 -30.7566C44.6272 -31.3596 44.2097 -31.9627 43.6066 -31.9627C43.1891 -31.9627 42.8644 -31.638 42.7716 -31.2205L42.7252 -31.0349L42.4468 -31.2669C41.9829 -31.5916 41.1015 -32.1019 40.6376 -32.2874C40.5449 -32.3338 40.4985 -32.3802 40.4985 -32.3802C40.4985 -32.4266 40.5449 -32.5194 40.5912 -32.6586C41.1943 -34.0039 42.7252 -34.8389 44.1169 -34.5142ZM38.1326 -32.7049C38.3645 -32.7049 38.5501 -32.6586 38.5501 -32.6586C38.5965 -32.6122 38.5037 -32.473 38.3645 -32.2874C37.5759 -31.2669 37.112 -30.0607 36.9264 -28.669C36.88 -28.4371 36.88 -28.1587 36.88 -28.0659V-27.834H36.3234C35.9059 -27.834 35.6739 -27.834 35.4883 -27.7876C34.4678 -27.5557 33.7255 -26.9062 33.4936 -25.932C33.4008 -25.6537 33.4008 -25.0506 33.4472 -24.7723C33.6791 -23.9836 34.2358 -23.4269 34.8853 -23.3342C35.6739 -23.195 36.3234 -23.6125 36.3234 -24.1692C36.3234 -24.3547 36.1842 -24.5867 36.045 -24.6331C35.8131 -24.8186 35.5347 -24.7723 35.3028 -24.5867C35.0708 -24.3084 35.1172 -23.9836 35.3492 -23.7517L35.4883 -23.6125H35.3028C35.21 -23.5661 35.0244 -23.5661 34.9317 -23.6125C33.6791 -23.7981 33.2152 -25.6073 34.143 -26.767C34.6533 -27.3237 35.5347 -27.6484 36.5089 -27.5557L36.8337 -27.5093V-27.3701C36.9264 -26.2103 37.1584 -25.2362 37.6223 -24.1228C37.9006 -23.5197 38.2717 -22.8239 38.9676 -21.525C39.2923 -21.0147 39.5243 -20.5044 39.5243 -20.5044C39.5243 -20.4116 38.8748 -19.7621 38.5501 -19.5302C38.0862 -19.2518 37.4367 -18.9735 37.0192 -18.8807H36.9264L36.88 -19.391C36.88 -20.0405 36.7873 -20.3652 36.5553 -20.8291C36.1842 -21.6177 35.5347 -22.1744 34.7925 -22.4528C34.375 -22.5919 33.9111 -22.6383 33.6327 -22.4991C33.4008 -22.4064 33.1688 -22.1744 33.1688 -21.9889C33.0761 -21.6641 33.2152 -21.1074 33.4472 -20.8291C33.6791 -20.5044 34.0966 -20.3652 34.4214 -20.5508C34.8853 -20.7363 34.9317 -21.4322 34.5142 -21.7105C34.1894 -21.8961 33.7719 -21.8497 33.54 -21.5713C33.4472 -21.3858 33.4472 -21.4322 33.4472 -21.7569C33.4472 -22.128 33.5864 -22.3136 34.0039 -22.3136C34.4678 -22.36 35.1636 -22.0352 35.6739 -21.4786C36.1378 -21.0147 36.4161 -20.5044 36.5553 -19.9013C36.6017 -19.623 36.6481 -18.8807 36.6017 -18.7879C36.6017 -18.7879 36.277 -18.7879 35.9522 -18.7879C35.2564 -18.7879 34.9781 -18.8343 34.4678 -19.0663C33.4936 -19.4838 32.5658 -20.4116 31.9627 -21.5713L31.7308 -21.9889L31.9163 -22.4991C32.9369 -25.0506 33.7255 -27.9268 34.2822 -31.1741C34.3286 -31.4524 34.375 -31.7308 34.375 -31.7308S34.5142 -31.7308 34.6997 -31.6844S35.0708 -31.638 35.1172 -31.638C35.1172 -31.638 35.1636 -31.8235 35.21 -32.0091L35.2564 -32.3802L35.5811 -32.473C36.4161 -32.7049 37.2512 -32.7977 38.1326 -32.7049ZM40.8232 -31.9163C41.6582 -31.5452 42.5396 -30.9421 42.9571 -30.571C43.0499 -30.4318 43.2355 -30.2927 43.3283 -30.2463C43.5602 -30.0607 44.3024 -29.3185 44.6736 -28.8546C45.2302 -28.1587 45.6478 -27.5093 46.0189 -26.7206L46.2972 -26.2567H46.158C45.9261 -26.3031 45.8333 -26.2103 45.6941 -25.7001S45.4622 -25.0506 45.323 -25.0042C45.2302 -24.9114 45.0447 -24.9578 44.9055 -25.1434C44.7663 -25.2825 44.7663 -25.5145 44.9055 -25.932C45.0447 -26.4423 44.9983 -26.5815 44.8591 -26.8598C44.6272 -27.3237 44.2561 -27.602 43.9777 -27.602C43.7922 -27.602 43.421 -27.4165 43.1891 -27.1845C42.818 -26.8598 42.7252 -26.4423 42.9107 -26.0712C43.0499 -25.7464 43.3746 -25.6537 43.653 -25.7928C44.1169 -26.0712 43.9313 -26.8134 43.3746 -26.767C43.2819 -26.767 43.2355 -26.767 43.2355 -26.767C43.2355 -26.8598 43.5138 -27.0918 43.6994 -27.2309C44.0705 -27.4165 44.2561 -27.3237 44.5344 -26.8598C44.7663 -26.5351 44.7663 -26.3959 44.6272 -25.932C44.5344 -25.4681 44.5344 -25.2362 44.6272 -25.0042C44.72 -24.865 44.9519 -24.7259 45.0911 -24.7259S45.555 -24.865 45.8797 -25.1434C46.158 -25.3753 46.4828 -25.5609 46.5756 -25.5609C46.5756 -25.5609 46.6219 -25.5145 46.6219 -25.5145C47.3642 -23.6589 47.6425 -22.2208 47.7817 -20.2724C47.8745 -18.6488 47.6889 -16.654 47.3178 -15.0304C47.225 -14.6592 47.225 -14.6592 47.1322 -14.6592C46.6683 -14.6592 46.2508 -14.1953 46.3436 -13.7314C46.39 -13.5459 46.5292 -13.3139 46.6219 -13.2211L46.7147 -13.1284L46.6219 -12.8036C46.2508 -12.015 45.7405 -11.0408 45.1839 -10.2058C43.3283 -7.4224 40.6376 -5.1029 37.3439 -3.34008L36.7873 -3.06174L36.6945 -3.10813C36.6017 -3.2473 36.3698 -3.34008 36.2306 -3.34008C36.045 -3.34008 35.8595 -3.2473 35.7667 -3.15452C35.5811 -3.01535 35.5347 -2.92257 35.5347 -2.69062L35.4883 -2.50506L35.21 -2.36589C34.2822 -1.99477 32.8441 -1.57726 31.8699 -1.3917C28.9937 -0.88141 26.2103 -1.25253 23.6589 -2.50506C21.2466 -3.7112 19.2055 -5.65958 17.8138 -8.11825C17.6746 -8.39659 17.489 -8.62854 17.4426 -8.72132L17.3962 -8.8141L17.721 -8.99966L18.0921 -9.13883L18.1849 -9.04605C18.2313 -8.95327 18.556 -8.58215 18.8807 -8.21103C20.1796 -6.68016 20.7827 -6.07709 21.4786 -5.5668C24.4475 -3.34008 28.3443 -2.69062 32.5658 -3.7112C35.3492 -4.40705 37.947 -5.75236 40.1737 -7.60796C40.7304 -8.02547 41.9366 -9.278 42.3541 -9.78829C43.5138 -11.1336 44.3488 -12.6181 44.8127 -14.1026C45.6941 -16.7932 45.5086 -19.4374 44.2561 -21.8961C43.9313 -22.5919 43.6066 -23.0558 42.7716 -24.4011C41.8902 -25.7464 41.7046 -25.9784 41.3799 -26.6279C40.4521 -28.2515 40.081 -29.6896 40.1737 -31.0813C40.2201 -31.5452 40.3593 -32.1483 40.4057 -32.1483C40.4057 -32.1483 40.6376 -32.0555 40.8232 -31.9163ZM33.9575 -31.1277C33.4472 -28.0659 32.6586 -25.1434 31.7308 -22.7775L31.5452 -22.36L31.4524 -22.6383C31.1277 -23.6589 30.9885 -24.5403 30.9421 -25.7001C30.9421 -26.3959 30.9885 -26.4887 31.0813 -27.1381C31.2205 -28.0659 31.2669 -28.2979 31.4524 -28.7618C31.8235 -29.6896 32.3802 -30.4782 33.1225 -31.1277C33.4008 -31.3596 34.0503 -31.8235 34.0503 -31.7771C34.0966 -31.7771 34.0503 -31.4988 33.9575 -31.1277ZM31.8235 -29.9215C31.7308 -29.8288 31.5916 -29.6432 31.4988 -29.4576L31.3132 -29.1329L31.3596 -29.3649C31.3596 -29.504 31.3596 -29.736 31.3596 -29.8752V-30.1071H31.638H31.9163ZM12.6645 -28.3907C13.8242 -28.2979 14.8912 -28.0196 16.0045 -27.4629C16.8396 -27.0454 17.6282 -26.5351 18.2313 -25.9784L18.5096 -25.7001L18.4168 -25.6073C18.1385 -25.4217 17.489 -25.0042 17.1179 -24.8186C16.5148 -24.4939 15.8654 -24.3084 15.1695 -24.2156L14.8912 -24.1692L15.0304 -24.3084C15.3087 -24.6331 15.2623 -25.1434 14.8912 -25.3753S14.1026 -25.4681 13.917 -25.097C13.7778 -24.865 13.8706 -24.4475 14.1489 -24.262L14.2417 -24.1692L14.0562 -24.1228C13.7314 -24.0764 12.85 -24.1692 12.1542 -24.3547C11.0408 -24.6331 9.97385 -25.1898 8.99966 -25.932C8.67493 -26.2103 7.93269 -26.9526 7.93269 -26.999C7.93269 -27.0918 8.39659 -27.4165 8.86049 -27.6484C9.83468 -28.1123 10.7161 -28.3443 12.015 -28.3907C12.0614 -28.3907 12.3861 -28.3907 12.6645 -28.3907ZM20.8291 -27.9268C21.8497 -26.5815 22.4528 -24.9114 22.7311 -22.9167C22.8239 -22.2208 22.8239 -20.7363 22.7311 -19.9941C22.4991 -18.1849 22.0352 -16.4684 21.2466 -14.6128C20.8291 -13.685 20.7827 -13.5459 20.7363 -13.5923C20.7363 -13.5923 20.5508 -13.7314 20.4116 -13.8242C20.226 -13.9634 19.9013 -14.1489 19.6694 -14.2881S19.2518 -14.5665 19.2518 -14.5665S19.391 -14.752 19.5302 -14.984C19.8549 -15.5406 20.4116 -16.7004 20.5972 -17.1643C21.4322 -19.4374 21.3394 -21.5713 20.3188 -23.6589C20.0405 -24.262 19.6694 -24.8186 19.2518 -25.3289L18.9271 -25.7001L19.2055 -25.9784C19.5302 -26.3495 19.8549 -26.7206 20.0869 -27.1381C20.2724 -27.4629 20.5044 -27.9268 20.5508 -28.1123C20.5508 -28.2051 20.5972 -28.2051 20.5972 -28.2051S20.7363 -28.1123 20.8291 -27.9268ZM8.86049 -25.7001C10.5769 -24.3084 12.7109 -23.6589 14.752 -23.8445C16.1437 -23.9836 17.5818 -24.5867 18.5096 -25.3289C18.6024 -25.4217 18.6952 -25.4681 18.6952 -25.4681C18.7879 -25.4681 19.391 -24.6795 19.7157 -24.2156C20.8291 -22.4064 21.1538 -20.3652 20.6435 -18.324C20.458 -17.6282 20.2724 -17.0251 19.9013 -16.2829L19.7157 -15.8654L19.0663 -16.1901C17.8138 -16.7932 16.886 -17.1179 15.819 -17.3962C13.4531 -17.9529 11.1336 -17.7674 8.95327 -16.7932C8.58215 -16.6076 7.83991 -16.2365 7.51518 -16.0045C7.46879 -15.9582 7.4224 -15.9582 7.4224 -15.9582C7.37601 -16.0509 7.28323 -16.886 7.32962 -17.2107C7.32962 -17.5354 7.46879 -18.0921 7.51518 -18.1385C7.51518 -18.1849 7.60796 -18.1385 7.70074 -18.1385C8.76771 -17.7674 9.97385 -18.0457 10.8089 -18.7879C11.4119 -19.2982 11.7367 -19.9941 11.8294 -20.8291C11.8294 -21.0147 11.8758 -21.1538 11.8758 -21.2002C11.9222 -21.2002 12.6181 -21.3394 13.0356 -21.3858C14.1953 -21.4786 15.4015 -21.293 16.2365 -20.8291C16.9787 -20.458 17.4426 -19.9013 17.6282 -19.2055C17.6746 -18.9271 17.721 -18.4168 17.6282 -18.2777C17.6282 -18.2313 17.6282 -18.2313 17.5818 -18.324S17.3499 -18.556 17.1643 -18.6024C16.6076 -18.7416 16.1437 -18.1849 16.3757 -17.6746C16.4684 -17.4426 16.7468 -17.2571 17.0251 -17.2571C17.1643 -17.2571 17.3962 -17.3499 17.5354 -17.489C17.9529 -17.9065 18.0921 -18.6952 17.8601 -19.623C17.721 -20.0405 17.4426 -20.6435 17.1643 -21.0147C16.4684 -21.9425 15.3087 -22.6383 14.0098 -22.8239C13.3139 -22.963 12.2933 -22.9167 11.6439 -22.7775L11.4583 -22.7311L11.3192 -22.9167C11.1336 -23.195 10.6697 -23.5661 10.3914 -23.7517C10.0202 -23.9836 9.64912 -24.0764 9.18522 -24.1228C8.76771 -24.1228 8.58215 -24.0764 8.25742 -23.9836C8.02547 -23.8908 7.74713 -23.6589 7.65435 -23.4733C7.37601 -22.963 7.70074 -22.36 8.30381 -22.36C8.67493 -22.36 9.04605 -22.6847 9.04605 -23.1022C9.04605 -23.3342 8.90688 -23.5661 8.67493 -23.7053L8.58215 -23.7981H8.72132C9.18522 -23.8908 9.83468 -23.7517 10.2522 -23.4733C10.5305 -23.3342 10.8553 -23.0094 11.0408 -22.7775L11.1336 -22.6383L11.0408 -22.5919C10.948 -22.5455 10.8553 -22.4991 10.8089 -22.4991S10.5305 -22.4064 10.345 -22.2672C8.95327 -21.5713 7.83991 -20.3652 7.37601 -18.9735C7.32962 -18.7879 7.23684 -18.6488 7.23684 -18.6488S6.86572 -18.8807 6.63377 -19.0663C6.21626 -19.4838 5.70597 -20.3188 5.52041 -20.9219C5.24207 -21.9889 5.28846 -23.1486 5.70597 -24.2156C5.84514 -24.4939 5.93792 -24.6795 6.21626 -25.0506C6.77294 -25.8392 7.05128 -26.164 7.37601 -26.4887L7.65435 -26.8134L8.11825 -26.3495C8.3502 -26.1176 8.67493 -25.8392 8.86049 -25.7001ZM30.7566 -24.5867C30.8493 -23.7517 30.9885 -23.1022 31.2669 -22.36L31.406 -21.9889L31.2669 -21.6641C30.3391 -19.4838 29.1329 -17.489 27.834 -15.819C27.3701 -15.2623 26.8598 -14.7056 26.8598 -14.7056C26.8598 -14.752 26.6279 -14.984 26.3495 -15.2623C25.9784 -15.6798 25.8856 -15.7726 25.932 -15.819C25.932 -15.819 26.164 -16.1437 26.3959 -16.4684C28.2979 -18.9271 29.7824 -21.8961 30.5246 -24.7259C30.6174 -24.9578 30.6638 -25.1434 30.6638 -25.097C30.6638 -25.097 30.7102 -24.865 30.7566 -24.5867ZM32.1483 -20.6435C32.4266 -20.226 33.0297 -19.623 33.4472 -19.2982C33.5864 -19.2055 33.9111 -19.0199 34.0966 -18.9271C34.7925 -18.556 35.3028 -18.4632 36.0914 -18.4632C36.4161 -18.5096 36.5553 -18.4632 36.5553 -18.4632C36.4625 -18.1385 36.3698 -17.8601 36.2306 -17.6282C36.0914 -17.3499 35.7667 -16.886 35.5811 -16.7004L35.442 -16.6076L35.1636 -16.7932C33.9111 -17.6282 32.2874 -17.9065 30.8493 -17.6282C30.2463 -17.489 29.5504 -17.2107 29.0865 -16.9323L28.901 -16.7932L29.1329 -17.1179C29.7824 -18.0921 30.3854 -19.1591 30.9421 -20.3188C31.1741 -20.7363 31.406 -21.2466 31.4524 -21.3858L31.5452 -21.6177L31.7771 -21.2466C31.8699 -21.0611 32.0555 -20.7827 32.1483 -20.6435ZM11.5511 -20.9219C11.4583 -19.7157 10.7161 -18.7879 9.60273 -18.4168C9.278 -18.2777 9.23161 -18.2777 8.72132 -18.2777C8.25742 -18.2777 8.16464 -18.2777 7.93269 -18.3704C7.74713 -18.4168 7.65435 -18.4632 7.65435 -18.4632S7.74713 -18.6488 7.83991 -18.8343C8.44298 -19.7621 9.60273 -20.5044 11.0872 -20.9683C11.3192 -21.0611 11.5047 -21.1074 11.5047 -21.1074C11.5511 -21.1074 11.5511 -21.0611 11.5511 -20.9219ZM40.0346 -19.623C40.7304 -18.1849 41.1015 -16.9787 41.2871 -15.4479C41.3799 -14.8912 41.3799 -13.3139 41.3335 -12.7109C40.9624 -9.78829 39.5243 -7.4224 37.2048 -6.07709C34.7461 -4.54622 31.5916 -4.49983 28.669 -5.93792C27.4165 -6.54099 26.4887 -7.23684 25.4681 -8.21103C24.865 -8.76771 24.4475 -9.278 23.7981 -10.1594L23.2414 -10.8553L23.6125 -11.1336C24.9114 -12.015 25.7928 -12.5253 26.4423 -12.6181C26.9526 -12.7109 27.2773 -12.5253 27.4165 -12.1078C27.5093 -11.9222 27.5557 -11.4583 27.5093 -11.2728V-11.1336L27.4165 -11.2264C27.1845 -11.5047 26.7206 -11.5047 26.5351 -11.18C26.3495 -10.8089 26.6279 -10.3914 27.0454 -10.3914C27.5093 -10.3914 27.8804 -10.9016 27.834 -11.5975C27.7876 -12.1542 27.6484 -12.4789 27.3237 -12.6645C27.1845 -12.7109 27.0918 -12.7572 26.8598 -12.7572C26.3031 -12.8036 25.7464 -12.6181 24.8186 -12.1078C24.5867 -12.015 24.4011 -11.8758 24.4011 -11.9222C24.8186 -12.247 25.2362 -12.6645 25.5609 -12.9428C25.7464 -13.1284 25.932 -13.3139 25.932 -13.3139C25.9784 -13.3139 26.0248 -13.2211 26.1176 -13.1748C26.164 -13.082 26.2103 -13.0356 26.2567 -13.0356S27.4165 -14.1026 27.4165 -14.1026S27.3237 -14.1953 27.2309 -14.3345L27.0454 -14.5201L27.2773 -14.752C27.4165 -14.8912 27.6948 -15.2159 27.8804 -15.4479C28.2515 -15.9118 28.6226 -16.2365 29.0401 -16.5612C30.4782 -17.489 32.241 -17.721 33.8647 -17.1179C34.375 -16.9323 35.21 -16.4684 35.21 -16.3757C35.21 -16.3293 34.7925 -16.0045 34.4678 -15.819C33.5864 -15.3551 32.7049 -15.1231 31.4988 -15.0304C31.0813 -15.0304 30.8493 -14.984 30.6638 -14.9376C29.3185 -14.4737 28.5298 -12.7572 28.901 -11.0408C29.0865 -10.0666 29.504 -9.278 30.1999 -8.58215C30.571 -8.21103 31.0349 -7.8863 31.4988 -7.65435L31.7771 -7.56157L31.5452 -7.32962C31.1741 -7.00489 30.9885 -6.58738 31.0349 -6.12348C31.0349 -5.79875 31.0813 -5.5668 31.2669 -5.33485C31.406 -5.14929 31.5916 -5.05651 31.8235 -5.05651C32.4266 -5.05651 32.5658 -5.84514 32.0091 -6.07709C31.8699 -6.12348 31.8235 -6.12348 31.6844 -6.07709C31.5916 -6.07709 31.4988 -5.98431 31.4524 -5.93792S31.3132 -5.84514 31.3132 -5.84514S31.3132 -5.98431 31.3132 -6.12348C31.3132 -6.54099 31.4988 -6.9585 31.8235 -7.19045C32.0555 -7.4224 32.1019 -7.4224 32.4266 -7.37601C32.8441 -7.28323 33.54 -7.28323 33.9575 -7.32962C36.277 -7.74713 37.9006 -10.113 37.6687 -12.6181C37.5295 -13.9634 36.9264 -15.1695 35.9986 -16.0973L35.6739 -16.4221L35.8595 -16.6076C36.277 -17.0715 36.6481 -17.7674 36.7873 -18.324C36.8337 -18.5096 36.8337 -18.556 36.9264 -18.556C37.9934 -18.7879 38.9676 -19.3446 39.5243 -19.9941C39.6171 -20.0869 39.7098 -20.1796 39.7098 -20.1796C39.7562 -20.1796 39.849 -19.9013 40.0346 -19.623ZM14.2417 -17.3499C15.7726 -17.2107 17.1643 -16.7932 18.8807 -15.9582L19.5766 -15.6334L19.391 -15.3551C19.0199 -14.752 19.0199 -14.6592 18.9735 -14.7056C18.9271 -14.7056 18.6952 -14.7984 18.4168 -14.9376C15.1231 -16.3293 11.2264 -15.9118 8.48937 -13.917C8.3502 -13.8242 8.21103 -13.7314 8.21103 -13.7314C8.16464 -13.7314 7.8863 -14.3809 7.74713 -14.7056C7.70074 -14.8448 7.60796 -15.1231 7.56157 -15.3087L7.46879 -15.6334L7.74713 -15.819C9.09244 -16.7004 10.8089 -17.2571 12.4325 -17.3962C12.8964 -17.4426 13.8242 -17.4426 14.2417 -17.3499ZM35.8595 -15.8654C36.6017 -15.0767 37.0656 -14.1953 37.2976 -13.1284C37.4367 -12.5717 37.4367 -11.6903 37.2976 -11.1336C37.112 -10.1594 36.6945 -9.41717 36.045 -8.76771C35.5347 -8.25742 34.8853 -7.8863 34.2358 -7.70074C33.7719 -7.60796 33.5864 -7.56157 33.4008 -7.65435C33.0761 -7.79352 32.7513 -7.83991 32.4266 -7.79352S32.1019 -7.74713 31.8699 -7.83991C30.6638 -8.30381 29.6896 -9.32439 29.3185 -10.6233C28.9937 -11.6439 29.0401 -12.6645 29.4576 -13.4995C29.736 -13.9634 30.1071 -14.3809 30.5246 -14.5665C30.8493 -14.7056 31.0813 -14.752 31.5452 -14.752C32.8441 -14.752 33.7719 -14.3345 34.0503 -13.685C34.0966 -13.4995 34.143 -13.4067 34.0966 -13.2211C34.0966 -12.8964 34.0503 -12.7572 33.8647 -12.5717C33.54 -12.2933 33.2616 -12.2933 32.6586 -12.6181C32.241 -12.8036 32.1947 -12.8036 31.9627 -12.8036C31.4988 -12.8036 31.1741 -12.6181 30.8957 -12.247C30.7102 -11.9222 30.6174 -11.5975 30.6174 -11.18C30.6174 -10.6697 30.803 -10.1594 31.1277 -9.69551L31.3132 -9.46356L31.406 -9.55634L31.4988 -9.64912L31.3596 -9.88107C31.1741 -10.2058 31.0813 -10.345 31.1277 -10.5769S31.406 -11.0872 31.638 -11.1336C31.9627 -11.2264 32.1483 -11.18 32.7513 -10.8553L33.3544 -10.5305H33.6791C33.9111 -10.5305 34.0039 -10.5769 34.143 -10.6233C34.6533 -10.8553 34.9317 -11.3655 34.9317 -12.0614S34.6069 -13.4067 34.0503 -13.9634C33.7255 -14.2881 33.4008 -14.4737 32.9833 -14.7056L32.6122 -14.8912L32.8441 -14.9376C33.6327 -15.0767 34.6533 -15.5406 35.2564 -16.0509C35.3492 -16.1437 35.442 -16.1901 35.4883 -16.1901C35.4883 -16.1901 35.6739 -16.0509 35.8595 -15.8654ZM7.28323 -15.1695C7.37601 -14.7984 7.56157 -14.3345 7.79352 -13.917L7.97908 -13.5459L7.60796 -13.2211C6.54099 -12.2006 5.84514 -10.948 5.5668 -9.50995C5.47402 -9.09244 5.47402 -8.99966 5.47402 -8.25742C5.42763 -7.60796 5.47402 -7.4224 5.52041 -7.14406C5.70597 -6.21626 6.0307 -5.5668 6.54099 -4.87095L6.77294 -4.54622V-4.08232C6.77294 -3.34008 6.63377 -2.73701 6.35543 -2.04116L6.26265 -1.76282L6.12348 -1.90199C5.19568 -2.55145 4.40705 -3.61842 3.89676 -4.82456C3.20091 -6.4946 3.15452 -8.58215 3.7112 -10.5305C4.1751 -11.9686 5.01012 -13.3603 6.07709 -14.4737C6.4946 -14.8912 7.19045 -15.4479 7.19045 -15.4015C7.23684 -15.4015 7.23684 -15.2623 7.28323 -15.1695ZM25.2825 -14.0098L25.7464 -13.5459L25.5609 -13.3603C25.1898 -12.9892 23.6589 -11.6439 23.195 -11.2728L23.0558 -11.1336L22.6847 -11.5975L22.3136 -12.0614L22.7775 -12.4789C23.0558 -12.7109 23.6125 -13.2675 24.03 -13.685C24.4475 -14.1489 24.8186 -14.4737 24.865 -14.4737C24.865 -14.4737 25.0506 -14.2881 25.2825 -14.0098ZM11.6903 -13.3603C12.5253 -13.3139 13.2675 -13.082 14.0562 -12.7109S15.4943 -11.8294 16.3757 -11.0408L16.7932 -10.6697L16.7004 -10.6233C16.6076 -10.5769 16.4684 -10.5305 16.3293 -10.4841L16.0509 -10.4377L15.7262 -10.7625C14.8448 -11.4583 13.8242 -11.9686 12.7572 -12.247C12.3861 -12.3397 11.8294 -12.3861 11.2728 -12.3861C10.6697 -12.3861 10.345 -12.3861 9.83468 -12.247L9.46356 -12.1542L9.37078 -12.247C9.23161 -12.3861 8.8141 -12.85 8.8141 -12.8964S9.37078 -13.1284 9.83468 -13.2675C10.4841 -13.4067 11.0408 -13.4531 11.6903 -13.3603ZM8.95327 -12.2933C9.04605 -12.1542 9.13883 -12.015 9.13883 -12.015C9.09244 -12.015 8.95327 -11.9222 8.8141 -11.8758C7.74713 -11.3192 7.05128 -10.5305 6.81933 -9.50995C6.77294 -9.278 6.77294 -9.13883 6.77294 -8.76771C6.77294 -8.48937 6.81933 -8.25742 6.86572 -8.16464C6.91211 -8.02547 6.91211 -7.97908 6.81933 -7.65435C6.77294 -7.37601 6.72655 -6.68016 6.68016 -6.21626V-6.0307L6.4946 -6.26265C6.12348 -6.72655 5.84514 -7.37601 5.75236 -7.97908C5.65958 -8.62854 5.75236 -9.55634 6.0307 -10.2058C6.40182 -11.18 7.19045 -12.0614 8.21103 -12.6181L8.48937 -12.8036L8.58215 -12.6645C8.62854 -12.5717 8.8141 -12.4325 8.95327 -12.2933ZM12.4789 -12.015C13.3139 -11.8294 14.1026 -11.5047 14.7984 -11.0408C15.1695 -10.8089 15.6334 -10.4377 15.6334 -10.3914S14.9376 -10.2522 14.3345 -10.2522C13.1748 -10.2522 12.0614 -10.5305 11.0408 -11.0408C10.7161 -11.2264 10.0202 -11.6439 9.83468 -11.8294L9.7419 -11.9222L9.97385 -11.9686C10.5305 -12.1078 10.6697 -12.1078 11.4119 -12.1078C11.9686 -12.1078 12.2006 -12.0614 12.4789 -12.015ZM9.64912 -11.5975C10.345 -11.0408 11.4583 -10.4841 12.4325 -10.2058C13.4531 -9.92746 14.6592 -9.88107 15.6798 -10.0666L15.9582 -10.113L16.0509 -10.0202C16.1901 -9.92746 16.6076 -9.41717 16.7932 -9.13883L16.9323 -8.95327L16.7932 -8.90688C16.1437 -8.62854 15.2159 -8.44298 14.5201 -8.39659C14.1489 -8.39659 14.1026 -8.39659 14.1026 -8.30381C14.1026 -8.25742 14.0562 -8.25742 13.8242 -8.25742C12.8964 -8.16464 12.1542 -7.70074 11.0872 -6.58738C10.5305 -5.98431 10.0202 -5.52041 9.7419 -5.38124C9.41717 -5.24207 8.99966 -5.14929 8.67493 -5.14929C8.11825 -5.14929 7.65435 -5.28846 7.19045 -5.61319L6.9585 -5.75236V-6.0307C6.91211 -6.44821 7.00489 -7.65435 7.05128 -7.65435C7.05128 -7.65435 7.09767 -7.56157 7.19045 -7.46879C7.28323 -7.28323 7.56157 -7.05128 7.79352 -6.91211C8.48937 -6.4946 9.37078 -6.68016 9.83468 -7.37601C10.345 -8.11825 10.113 -9.18522 9.32439 -9.60273C8.48937 -10.0202 7.65435 -9.7419 7.19045 -8.8141L7.05128 -8.53576V-8.86049C7.05128 -9.88107 7.60796 -10.7625 8.58215 -11.4119C8.86049 -11.5975 9.278 -11.7831 9.37078 -11.7831C9.41717 -11.7831 9.55634 -11.6903 9.64912 -11.5975ZM17.4426 -9.88107L17.9065 -9.37078L17.6282 -9.278C17.2107 -9.04605 17.2571 -9.04605 16.9787 -9.41717C16.8396 -9.55634 16.654 -9.83468 16.5148 -9.97385L16.2829 -10.2058L16.5148 -10.2522C16.6076 -10.2986 16.7468 -10.345 16.7932 -10.345S16.9323 -10.3914 16.9787 -10.3914S17.2107 -10.1594 17.4426 -9.88107ZM8.07186 -9.32439C7.79352 -9.04605 7.79352 -8.67493 8.07186 -8.39659C8.30381 -8.21103 8.62854 -8.21103 8.86049 -8.44298S9.09244 -8.99966 8.86049 -9.23161L8.72132 -9.41717H8.86049C9.04605 -9.46356 9.278 -9.32439 9.50995 -9.09244C9.7419 -8.8141 9.83468 -8.67493 9.83468 -8.21103C9.83468 -7.8863 9.83468 -7.83991 9.69551 -7.65435C9.46356 -7.23684 9.13883 -7.00489 8.67493 -7.00489C8.30381 -6.9585 8.07186 -7.05128 7.79352 -7.23684C7.60796 -7.37601 7.32962 -7.74713 7.23684 -7.97908C7.14406 -8.11825 7.14406 -8.16464 7.23684 -8.3502C7.37601 -8.8141 7.70074 -9.23161 7.97908 -9.41717C8.16464 -9.50995 8.21103 -9.50995 8.07186 -9.32439ZM7.79352 -3.75759C9.09244 -2.92257 10.8089 -2.96896 12.0614 -3.85037L12.247 -3.94315L12.2933 -3.80398C12.3397 -3.75759 12.3397 -3.52564 12.3397 -3.34008C12.3861 -2.73701 12.1542 -2.27311 11.6439 -1.76282C10.948 -1.11336 10.113 -0.83502 8.99966 -0.88141C8.16464 -0.9278 7.65435 -1.06697 6.91211 -1.3917L6.54099 -1.57726L6.63377 -1.80921C6.91211 -2.36589 7.09767 -3.20091 7.09767 -3.85037V-4.22149L7.32962 -4.03593C7.46879 -3.94315 7.70074 -3.80398 7.79352 -3.75759ZM46.2972 -3.94315C46.5756 -3.47925 46.7611 -2.82979 46.7147 -2.27311C46.6683 -1.34531 46.0653 -0.55668 45.1839 -0.23195C44.8591 -0.09278 44.2561 -0.09278 43.9313 -0.18556S43.0499 -0.55668 42.586 -0.88141C42.1685 -1.15975 42.1685 -1.15975 42.0293 -1.3917S41.8902 -1.67004 41.8902 -2.04116C41.8902 -2.36589 41.8902 -2.41228 42.0293 -2.64423C42.3077 -3.2473 42.7716 -3.57203 43.4674 -3.57203C43.8849 -3.57203 43.8849 -3.52564 43.7458 -3.38647C43.5602 -3.29369 43.421 -2.96896 43.421 -2.7834C43.421 -2.55145 43.4674 -2.36589 43.653 -2.22672C43.9313 -1.94838 44.2097 -1.90199 44.5808 -2.04116C45.1375 -2.36589 45.1375 -3.20091 44.5344 -3.57203L44.3952 -3.61842L44.72 -3.7112C45.0911 -3.75759 45.555 -3.94315 45.8333 -4.03593C45.9725 -4.12871 46.0653 -4.1751 46.1117 -4.1751S46.2508 -4.03593 46.2972 -3.94315ZM19.6694 -3.06174C18.9271 -2.73701 19.1591 -1.62365 19.9477 -1.62365C20.3652 -1.62365 20.6899 -1.99477 20.7363 -2.36589C20.7363 -2.50506 20.5972 -2.7834 20.5044 -2.87618C20.3188 -3.10813 19.9477 -3.20091 19.6694 -3.06174Z"/>
- <path id="g96" d="M3.036 -7.464C2.916 -7.524 2.82 -7.608 2.7 -7.668C2.448 -7.8 2.136 -7.872 1.848 -7.872C1.14 -7.872 0.492 -7.524 0.276 -6.9C0.204 -6.696 0.204 -6.492 0.204 -6.288C0.204 -6.192 0.192 -6.084 0.192 -5.988C0.192 -5.688 0.192 -5.376 0.312 -5.088C0.48 -4.704 0.864 -4.572 1.212 -4.392C1.44 -4.284 1.68 -4.116 1.692 -3.84C1.692 -3.54 1.548 -3.288 1.26 -3.288C1.14 -3.288 1.02 -3.324 0.912 -3.396C0.828 -3.444 0.768 -3.528 0.684 -3.576C0.648 -3.516 0.576 -3.432 0.576 -3.36C0.588 -3.3 0.66 -3.252 0.708 -3.216C0.864 -3.084 1.056 -3.012 1.272 -3.012C1.788 -3.012 2.268 -3.336 2.268 -3.96C2.268 -4.56 1.956 -5.052 1.608 -5.34C1.26 -5.616 0.468 -5.904 0.468 -6.492C0.468 -6.924 0.828 -7.308 1.284 -7.308C1.368 -7.308 1.452 -7.296 1.536 -7.284C2.268 -7.164 2.736 -6.564 2.976 -5.904C3.288 -5.004 3.36 -3.924 3.36 -2.928C3.36 -2.184 3.168 -1.74 2.844 -1.236C2.748 -1.104 2.628 -0.984 2.544 -0.84H2.532C2.256 -1.092 1.968 -1.332 1.68 -1.56L0.708 -0.396V-0.384L0.9 -0.216H0.912L1.032 -0.372C1.26 -0.228 1.5 -0.108 1.74 0.012L1.908 0.108C1.932 0.12 1.956 0.132 1.98 0.132C1.992 0.132 1.992 0.132 2.004 0.132C2.052 0.132 2.088 0.084 2.112 0.048C2.964 -0.936 4.2 -2.064 4.272 -3.648C4.272 -3.648 4.272 -4.152 4.26 -4.152C4.212 -5.34 3.936 -6.468 3.324 -7.164C3.3 -7.2 3.228 -7.26 3.228 -7.308S3.252 -7.416 3.264 -7.452C3.36 -7.668 3.516 -7.896 3.828 -7.896C3.96 -7.896 4.092 -7.848 4.212 -7.812C4.824 -7.608 5.184 -7.008 5.364 -6.42C5.472 -6.048 5.52 -5.664 5.544 -5.268C5.556 -5.04 5.544 -4.8 5.556 -4.572C5.592 -4.056 5.652 -3.528 5.652 -3C5.652 -2.316 5.532 -1.632 5.208 -1.164C5.148 -1.068 5.076 -0.996 5.016 -0.9L4.164 -1.608L3.072 -0.288C3.12 -0.252 3.204 -0.156 3.276 -0.156C3.336 -0.156 3.372 -0.228 3.396 -0.276C3.588 -0.204 4.2 0.072 4.38 0.132C4.38 0.132 4.404 0.132 4.404 0.132C4.464 0.12 4.5 0.06 4.536 0.024L4.8 -0.264C5.532 -1.068 6.156 -1.8 6.456 -3.036C6.528 -3.384 6.54 -3.72 6.54 -4.068C6.54 -4.836 6.492 -5.544 6.348 -6.228C6.276 -6.612 6.228 -6.636 6.12 -7.032C6.312 -7.116 6.444 -7.212 6.696 -7.212C7.116 -7.212 7.548 -6.972 7.776 -6.624C7.944 -6.372 8.028 -6.084 8.1 -5.796C8.124 -5.664 8.232 -5.268 8.232 -5.208C8.232 -5.196 8.232 -5.196 8.232 -5.184C8.232 -5.148 8.196 -5.136 8.172 -5.124C7.992 -5.04 7.464 -4.86 7.356 -4.824C7.296 -4.8 7.164 -4.776 7.128 -4.704S7.092 -4.5 7.092 -4.416C7.032 -3.9 6.996 -3.348 6.996 -2.796C6.996 -2.76 6.984 -2.22 6.996 -2.22C7.032 -1.788 7.152 -1.38 7.248 -0.96C7.284 -0.768 7.368 -0.348 7.368 -0.168C7.368 -0.12 7.368 -0.072 7.38 -0.036S7.512 0.156 7.56 0.156L9.036 -1.272C9.084 -1.32 9.204 -1.392 9.204 -1.464C9.204 -1.548 9.096 -1.608 9.048 -1.656H9.036C8.976 -1.596 8.604 -1.212 8.544 -1.212C8.544 -1.212 8.532 -1.212 8.532 -1.212C8.448 -1.212 8.364 -1.32 8.328 -1.38C7.92 -1.848 7.956 -2.52 7.932 -3.312C7.932 -3.528 7.896 -3.756 7.896 -3.972C7.896 -4.224 7.932 -4.476 8.112 -4.692C8.184 -4.776 8.268 -4.836 8.352 -4.896L8.496 -4.608C8.712 -4.8 8.844 -5.076 9.036 -5.292C9.084 -5.352 9.192 -5.484 9.216 -5.556C9.216 -5.628 9.132 -5.724 9.096 -5.784C9.012 -5.94 8.952 -6.096 8.88 -6.264C8.58 -6.984 8.352 -7.752 7.548 -8.052C7.536 -8.052 7.152 -8.124 7.152 -8.1C6.864 -8.076 6.684 -7.884 6.504 -7.68C6.348 -7.512 6.204 -7.344 6.048 -7.188C5.904 -7.5 5.724 -7.812 5.46 -8.04C5.172 -8.292 4.752 -8.46 4.344 -8.46C4.116 -8.46 3.9 -8.412 3.708 -8.292C3.444 -8.136 3.132 -7.752 3.036 -7.464ZM2.616 -0.78C2.616 -0.78 2.568 -0.828 2.568 -0.828S2.616 -0.78 2.616 -0.78Z"/>
- <path id="g97" d="M3.192 -0.276C3.192 -0.168 3.192 -0.06 3.192 0.048C3.192 0.9 2.784 1.56 2.34 2.004C2.292 2.052 2.196 2.112 2.196 2.196C2.196 2.208 2.208 2.22 2.208 2.232C2.208 2.28 2.292 2.328 2.328 2.328C2.388 2.328 2.436 2.292 2.484 2.244C3.024 1.74 3.468 0.912 3.468 0C3.468 -0.624 3.264 -1.296 2.652 -1.296C2.268 -1.296 2.016 -1.008 2.016 -0.648C2.016 -0.276 2.28 -0.012 2.652 -0.012C2.916 -0.012 3.06 -0.12 3.192 -0.276ZM5.544 -0.276C5.544 -0.168 5.544 -0.06 5.544 0.048C5.544 0.9 5.136 1.56 4.692 2.004C4.644 2.052 4.548 2.112 4.548 2.196C4.548 2.208 4.56 2.22 4.56 2.232C4.56 2.28 4.644 2.328 4.68 2.328C4.74 2.328 4.788 2.292 4.836 2.244C5.4 1.716 5.808 0.912 5.808 -0.072C5.808 -0.252 5.796 -0.432 5.748 -0.612C5.628 -0.96 5.448 -1.296 4.992 -1.296C4.608 -1.296 4.368 -0.996 4.368 -0.648C4.368 -0.48 4.428 -0.312 4.536 -0.192C4.656 -0.072 4.836 -0.012 5.004 -0.012C5.268 -0.012 5.412 -0.12 5.544 -0.276Z"/>
- <path id="g98" d="M3.252 -8.46C3.252 -8.016 2.916 -7.692 2.604 -7.416C2.328 -7.176 2.052 -6.936 1.8 -6.684C1.524 -6.408 1.212 -6.048 1.212 -5.568C1.212 -5.544 1.212 -5.532 1.212 -5.508C1.212 -4.932 1.692 -4.512 2.016 -4.092C2.208 -3.84 2.388 -3.54 2.388 -3.216C2.388 -2.856 2.052 -2.604 1.788 -2.424C1.608 -2.292 1.416 -2.172 1.224 -2.064C1.104 -2.004 0.972 -1.968 0.852 -1.884C0.504 -1.68 0.204 -1.284 0.204 -0.768C0.204 -0.552 0.252 -0.336 0.372 -0.156C0.42 -0.084 0.576 0.132 0.672 0.132C0.672 0.132 0.684 0.132 0.684 0.132C0.768 0.132 0.84 0.036 0.876 -0.024C0.648 -0.168 0.468 -0.456 0.468 -0.732C0.468 -1.02 0.672 -1.236 0.936 -1.284C1.152 -1.284 1.74 -1.02 1.812 -0.984C2.46 -0.696 3.648 -0.096 4.344 0.072C4.428 0.108 4.548 0.144 4.632 0.144C4.644 0.144 4.656 0.144 4.668 0.144C4.728 0.144 4.776 0.108 4.824 0.084C5.76 -0.42 6.612 -1.08 7.308 -1.884C7.8 -2.448 8.28 -3.144 8.28 -4.08C8.28 -4.884 8.004 -5.7 7.692 -6.216C7.26 -6.924 6.54 -7.572 5.556 -7.692C5.124 -7.74 4.68 -7.692 4.248 -7.788C3.96 -7.848 3.588 -8.004 3.492 -8.292C3.444 -8.388 3.456 -8.46 3.324 -8.46C3.3 -8.46 3.276 -8.46 3.252 -8.46ZM1.644 -2.124C2.256 -2.472 3.24 -2.676 3.372 -3.504C3.372 -3.504 3.372 -3.828 3.36 -3.828C3.324 -4.128 3.168 -4.392 2.988 -4.632C2.676 -5.028 2.1 -5.592 2.1 -6.216C2.1 -6.36 2.136 -6.516 2.232 -6.66C2.268 -6.708 2.352 -6.864 2.424 -6.864C2.448 -6.864 2.484 -6.84 2.508 -6.828C2.784 -6.648 3.132 -6.516 3.528 -6.516C3.9 -6.516 4.248 -6.6 4.62 -6.612C4.668 -6.612 4.704 -6.612 4.752 -6.612C5.328 -6.612 5.892 -6.468 6.372 -6.12C7.056 -5.628 7.596 -4.812 7.596 -3.708C7.596 -3.012 7.356 -2.304 6.864 -1.812C6.504 -1.452 5.976 -1.212 5.292 -1.212C4.44 -1.212 3.672 -1.512 2.988 -1.764C2.544 -1.92 2.124 -2.124 1.644 -2.124Z"/>
- <path id="g99" d="M3.252 -8.46C3.252 -8.016 2.916 -7.692 2.604 -7.416C2.388 -7.236 2.184 -7.044 1.98 -6.852C1.632 -6.528 1.212 -6.144 1.212 -5.532C1.224 -4.908 1.74 -4.488 2.076 -4.02C2.244 -3.78 2.388 -3.516 2.388 -3.216C2.388 -2.856 2.052 -2.604 1.788 -2.424C1.608 -2.292 1.416 -2.172 1.224 -2.064C1.104 -2.004 0.972 -1.968 0.852 -1.884C0.504 -1.68 0.204 -1.284 0.204 -0.768C0.204 -0.552 0.252 -0.336 0.372 -0.156C0.42 -0.084 0.576 0.132 0.672 0.132C0.672 0.132 0.684 0.132 0.684 0.132C0.768 0.132 0.84 0.036 0.876 -0.024C0.636 -0.18 0.468 -0.456 0.468 -0.756C0.468 -1.008 0.684 -1.272 0.948 -1.284C1.068 -1.284 1.176 -1.236 1.284 -1.2C2.148 -0.864 2.964 -0.42 3.828 -0.096C3.96 -0.048 4.476 0.144 4.632 0.144C4.632 0.144 4.644 0.144 4.656 0.144C4.716 0.144 4.776 0.108 4.824 0.084C5.364 -0.216 5.868 -0.492 6.348 -0.864C6.528 -0.468 6.876 -0.168 7.272 0.024C7.44 0.084 7.488 0.096 7.692 0.144C7.692 0.144 7.716 0.144 7.716 0.144C7.788 0.132 7.86 0.06 7.92 0.012C8.316 -0.288 8.724 -0.612 9.072 -0.96C9.12 -0.996 9.288 -1.128 9.288 -1.2S9.18 -1.344 9.132 -1.392C8.952 -1.248 8.796 -1.08 8.628 -0.936C8.556 -0.876 8.46 -0.756 8.352 -0.756S8.124 -0.828 8.052 -0.864C7.812 -0.984 7.608 -1.188 7.476 -1.428C7.44 -1.5 7.392 -1.596 7.392 -1.692C7.392 -1.776 7.476 -1.836 7.536 -1.896C7.692 -2.052 7.836 -2.22 7.968 -2.4C8.34 -2.904 8.592 -3.372 8.64 -4.152C8.64 -4.212 8.628 -4.26 8.628 -4.32C8.616 -4.524 8.604 -4.716 8.556 -4.908C8.304 -6.168 7.368 -7.224 6.12 -7.584C5.832 -7.668 5.52 -7.704 5.22 -7.716C4.44 -7.74 3.78 -7.716 3.48 -8.304C3.456 -8.388 3.444 -8.46 3.336 -8.46C3.312 -8.46 3.276 -8.46 3.252 -8.46ZM1.644 -2.124C2.256 -2.472 3.24 -2.676 3.372 -3.504C3.372 -3.504 3.372 -3.828 3.36 -3.828C3.24 -4.632 2.424 -5.088 2.16 -5.832C2.112 -5.952 2.1 -6.072 2.1 -6.204C2.1 -6.36 2.136 -6.504 2.22 -6.648C2.268 -6.708 2.34 -6.852 2.424 -6.852C2.46 -6.852 2.484 -6.828 2.52 -6.816C2.808 -6.624 3.228 -6.516 3.648 -6.516C3.972 -6.516 4.308 -6.6 4.632 -6.612C4.668 -6.612 4.716 -6.612 4.752 -6.612C5.556 -6.612 6.336 -6.384 6.96 -5.88C7.512 -5.448 7.944 -4.788 7.944 -3.924C7.944 -3.864 7.944 -3.816 7.944 -3.756C7.872 -2.316 6.876 -1.2 5.34 -1.2C4.62 -1.2 3.888 -1.44 3.216 -1.68C2.712 -1.86 2.196 -2.124 1.644 -2.124Z"/>
- <path id="g100" d="M3.3264 -7.128L2.1744 -5.112H2.16C2.16 -5.4864 2.16 -5.8752 2.1456 -6.2352C1.9728 -6.4512 1.8432 -6.696 1.5984 -6.84C1.2816 -6.6096 0.9936 -6.3504 0.6912 -6.1056L1.2096 -5.472H0.9504C0.936 -4.3344 0.9792 -3.1536 0.936 -2.0448L0.3168 -1.1088V-1.0944C1.008 -0.648 1.656 -0.1584 2.3616 0.2736L2.5056 0.2304C2.9376 -0.0144 3.3984 -0.2448 3.7872 -0.5328C3.816 -0.648 3.8304 -0.7776 3.8304 -0.9072C3.6432 -0.8352 3.4272 -0.6768 3.2256 -0.6768C3.0816 -0.6768 3.0096 -0.7344 2.9232 -0.792C2.7648 -0.9072 2.448 -1.1088 2.304 -1.2096C2.2176 -1.296 2.1456 -1.296 2.1456 -1.4832C2.1456 -1.5552 2.16 -1.6272 2.16 -1.6848V-4.2912V-4.4208C2.16 -4.464 2.16 -4.4928 2.1744 -4.536C2.2176 -4.7088 2.592 -5.2704 2.6208 -5.3136C2.8224 -4.7232 3.0528 -4.1472 3.2688 -3.5712C3.5712 -4.0464 3.8592 -4.5216 4.1184 -5.04C3.8736 -5.76 3.5856 -6.4368 3.3264 -7.128Z"/>
- <path id="g101" d="M3.3984 -6.8112C2.7792 -6.3072 1.9584 -5.9904 1.3392 -5.4864C0.6624 -4.9536 0.1584 -4.1616 0.1584 -3.2832V-3.1536C0.2448 -2.0016 1.1664 -1.1808 1.9728 -0.4608C2.1168 -0.3456 2.2608 -0.216 2.3904 -0.0864S2.6208 0.2016 2.8656 0.2016S3.168 0.0288 3.312 -0.1008C3.5424 -0.3024 3.8016 -0.504 4.0464 -0.6912C5.0256 -1.4256 6.4224 -2.2752 6.4224 -3.7584C6.4224 -3.888 6.408 -4.0176 6.3936 -4.1472C6.2496 -5.2128 5.3856 -6.0048 4.5504 -6.5808C4.4496 -6.6384 3.8304 -7.0704 3.7152 -7.0704C3.6576 -7.0704 3.456 -6.8688 3.3984 -6.8112ZM1.152 -4.248C1.152 -4.8672 1.5984 -5.472 2.1456 -5.616C2.2464 -5.6304 2.3328 -5.6304 2.4336 -5.6304C2.6784 -5.6304 2.9088 -5.5872 3.1392 -5.5296C4.3056 -5.1984 5.256 -4.1472 5.256 -2.8224C5.256 -2.664 5.2416 -2.5056 5.1984 -2.3472C5.04 -1.7568 4.536 -1.2672 3.8448 -1.2672C3.4848 -1.2672 3.1248 -1.368 2.808 -1.5264C2.1024 -1.872 1.584 -2.52 1.3392 -3.2544C1.2528 -3.4992 1.152 -3.9888 1.152 -4.248Z"/>
- <path id="g102" d="M3.48 -6.84C3.372 -6.78 3.24 -6.732 3.156 -6.648C3.06 -6.552 3.108 -6.348 2.916 -6.348C2.82 -6.348 2.7 -6.396 2.628 -6.432C2.82 -6.66 3.06 -6.864 3.264 -7.08C3.3 -7.116 3.516 -7.32 3.516 -7.368C3.516 -7.548 3.144 -7.656 3.036 -7.656C2.82 -7.656 2.7 -7.572 2.532 -7.476C2.268 -7.32 1.992 -7.176 1.992 -6.756C1.992 -6.72 1.992 -6.672 2.004 -6.624C2.076 -6.348 2.316 -6.036 2.604 -6.036C2.844 -6.036 3.084 -6.192 3.276 -6.324C3.396 -6.396 3.528 -6.54 3.528 -6.696C3.528 -6.708 3.528 -6.708 3.528 -6.72C3.528 -6.768 3.504 -6.804 3.48 -6.84ZM2.46 -6.6C2.424 -6.696 2.412 -6.792 2.412 -6.888C2.412 -7.08 2.532 -7.344 2.736 -7.344C2.856 -7.344 2.976 -7.284 3.096 -7.236L2.46 -6.6ZM0.216 -1.14V-1.116C0.504 -0.948 1.884 -0.096 2.088 0.048C2.124 0.084 2.172 0.132 2.232 0.132C2.232 0.132 2.244 0.132 2.244 0.132C2.28 0.12 2.868 -0.564 3.132 -0.984C3.624 -1.764 3.828 -2.712 3.828 -3.636C3.828 -4.488 3.66 -5.184 3.264 -5.808L1.176 -4.968L0.66 -4.752C0.54 -4.704 0.468 -4.716 0.468 -4.536C0.468 -4.488 0.468 -4.452 0.468 -4.416V-1.728C0.468 -1.704 0.468 -1.68 0.468 -1.656C0.468 -1.488 0.456 -1.332 0.324 -1.212L0.216 -1.14ZM2.712 -0.828C2.688 -0.792 2.652 -0.72 2.604 -0.72C2.568 -0.72 2.544 -0.732 2.52 -0.744C2.148 -0.984 2.028 -1.056 1.572 -1.332L1.38 -1.452C1.308 -1.5 1.26 -1.524 1.26 -1.644C1.26 -1.704 1.272 -1.764 1.272 -1.812V-3.936C1.272 -3.996 1.272 -4.68 1.272 -4.68C1.296 -4.776 1.44 -4.812 1.524 -4.836C1.776 -4.944 2.04 -5.04 2.292 -5.148C2.352 -5.172 2.448 -5.232 2.52 -5.232C2.556 -5.232 2.58 -5.22 2.604 -5.196C2.652 -5.112 2.688 -5.004 2.724 -4.908C2.988 -4.212 3.096 -3.312 3.096 -2.4C3.096 -1.824 2.976 -1.164 2.712 -0.828Z"/>
- <path id="g103" d="M3.504 -6.84C3.444 -6.804 3.192 -6.672 3.156 -6.624C3.072 -6.528 3.132 -6.348 2.928 -6.348C2.832 -6.348 2.724 -6.396 2.64 -6.432C2.832 -6.66 3.072 -6.864 3.276 -7.08C3.324 -7.128 3.528 -7.308 3.528 -7.38C3.528 -7.44 3.468 -7.488 3.432 -7.524C3.312 -7.62 3.168 -7.656 3.024 -7.656C2.832 -7.656 2.688 -7.56 2.568 -7.488C2.304 -7.344 2.016 -7.164 2.016 -6.768C2.016 -6.444 2.256 -6.036 2.64 -6.036C2.856 -6.036 3.048 -6.18 3.24 -6.288C3.384 -6.372 3.552 -6.516 3.552 -6.696C3.552 -6.756 3.516 -6.816 3.504 -6.84ZM2.472 -6.612C2.448 -6.708 2.436 -6.804 2.436 -6.888C2.436 -7.08 2.544 -7.356 2.76 -7.356C2.88 -7.356 3.012 -7.296 3.108 -7.236L2.472 -6.612ZM1.188 -5.808L0.204 -4.548V-4.536L0.384 -4.392H0.396C0.432 -4.44 0.588 -4.668 0.648 -4.668C0.744 -4.668 0.828 -4.488 0.852 -4.452C0.96 -4.248 0.972 -4.032 0.972 -3.804C0.972 -3.768 0.972 -3.72 0.972 -3.684V-1.368C0.972 -1.332 0.972 -1.284 0.972 -1.248C0.972 -0.936 0.744 -0.828 0.492 -0.756V-0.504C0.924 -0.504 1.296 -0.276 1.512 0.024C1.56 0.084 1.584 0.156 1.692 0.156C1.86 0.156 1.98 -0.036 2.088 -0.144L3.12 -1.176C3.24 -0.9 3.384 -0.624 3.516 -0.348C3.564 -0.252 3.648 -0.132 3.648 -0.024C3.648 0 3.636 0.012 3.636 0.036L3.84 0.156L4.776 -1.344L4.56 -1.464C4.524 -1.404 4.38 -1.14 4.332 -1.128C4.296 -1.128 4.272 -1.14 4.248 -1.164C4.056 -1.308 3.936 -1.536 3.936 -1.848C3.936 -1.92 3.936 -1.992 3.936 -2.052V-3.888C3.936 -4.092 3.936 -4.308 3.936 -4.524C3.936 -4.728 3.924 -4.968 4.02 -5.088C4.044 -5.136 4.116 -5.16 4.128 -5.208C4.14 -5.208 4.14 -5.352 4.14 -5.352C3.9 -5.4 3.684 -5.568 3.612 -5.808C3.588 -5.808 3.564 -5.808 3.54 -5.808C3.444 -5.808 3.432 -5.76 3.396 -5.7C3.312 -5.52 3.096 -5.4 2.916 -5.352C2.916 -5.328 2.916 -5.304 2.916 -5.28C2.916 -5.16 3.024 -5.112 3.06 -5.052C3.12 -4.92 3.12 -4.764 3.12 -4.584C3.12 -4.416 3.12 -4.248 3.12 -4.092V-1.932C3.12 -1.848 3.132 -1.764 3.132 -1.68C3.132 -1.488 3.06 -1.464 2.94 -1.344L2.52 -0.924C2.472 -0.876 2.388 -0.756 2.316 -0.756C2.256 -0.756 2.208 -0.816 2.172 -0.84L1.932 -1.056C1.848 -1.116 1.788 -1.164 1.788 -1.308V-3.54C1.788 -4.056 1.776 -4.536 1.608 -5.028C1.536 -5.256 1.332 -5.664 1.188 -5.808Z"/>
- <path id="g104" d="M3.708 -6.84C3.636 -6.816 3.396 -6.672 3.36 -6.624C3.276 -6.528 3.324 -6.348 3.132 -6.348C3.024 -6.348 2.928 -6.408 2.844 -6.432C3.036 -6.66 3.276 -6.864 3.48 -7.08C3.528 -7.128 3.732 -7.308 3.732 -7.38C3.732 -7.572 3.324 -7.656 3.228 -7.656C3.048 -7.656 2.892 -7.548 2.772 -7.488C2.508 -7.32 2.22 -7.188 2.22 -6.768C2.22 -6.456 2.46 -6.036 2.832 -6.036C3.036 -6.036 3.228 -6.168 3.42 -6.276C3.564 -6.36 3.744 -6.504 3.744 -6.684C3.744 -6.696 3.744 -6.708 3.744 -6.72C3.744 -6.768 3.72 -6.804 3.708 -6.84ZM2.676 -6.612C2.652 -6.708 2.64 -6.804 2.64 -6.888C2.64 -7.092 2.748 -7.344 2.964 -7.344C3.084 -7.344 3.204 -7.296 3.312 -7.236L2.676 -6.612ZM1.944 -5.808L1.62 -5.472C1.356 -5.208 1.092 -4.944 0.888 -4.632C0.456 -3.972 0.204 -3.048 0.204 -2.028C0.204 -1.896 0.216 -1.776 0.228 -1.644C0.312 -0.948 0.78 -0.3 1.356 -0.012L1.164 0.156L1.536 0.144C2.004 -0.192 2.4 -0.588 2.844 -0.936C2.88 -0.732 2.94 -0.528 3.012 -0.336C3.036 -0.3 3.156 -0.048 3.156 -0.024C3.156 0.036 3.084 0.108 3.048 0.156L3.348 0.144C3.6 -0.12 3.84 -0.396 4.056 -0.696L4.068 -1.044C4.044 -1.02 3.996 -0.984 3.948 -0.984C3.816 -0.984 3.696 -1.14 3.648 -1.236C3.624 -1.308 3.624 -1.392 3.624 -1.476V-3.048C3.624 -3.192 3.612 -3.348 3.612 -3.504C3.612 -3.936 3.708 -4.248 3.924 -4.512C3.96 -4.572 4.032 -4.62 4.032 -4.68C4.032 -4.764 3.9 -4.884 3.888 -4.908C3.78 -5.052 3.744 -5.064 3.504 -5.1C3.012 -5.232 2.688 -5.352 2.268 -5.592C2.16 -5.664 2.052 -5.748 1.944 -5.808ZM1.452 -4.968C1.608 -4.896 2.4 -4.416 2.424 -4.404L2.664 -4.26C2.76 -4.212 2.808 -4.164 2.808 -4.032C2.808 -3.996 2.808 -3.96 2.808 -3.936V-1.488C2.808 -1.452 2.808 -1.416 2.808 -1.368C2.808 -1.332 2.808 -1.296 2.796 -1.26C2.736 -1.092 2.304 -0.972 2.124 -0.972C1.644 -0.972 1.284 -1.392 1.164 -1.836C1.092 -2.076 1.08 -2.316 1.08 -2.556C1.08 -2.7 1.092 -2.856 1.092 -3C1.104 -3.552 1.092 -4.14 1.296 -4.668C1.332 -4.776 1.404 -4.872 1.452 -4.968Z"/>
- <path id="g105" d="M3.96 -6.0048C3.8448 -6.0768 2.6208 -6.8688 2.5344 -6.8688H2.52C2.4192 -6.8688 2.3184 -6.768 2.2464 -6.7104C2.016 -6.5664 1.8 -6.408 1.5696 -6.2496C1.2816 -6.0624 1.0224 -5.8608 0.8208 -5.5872C0.36 -4.9536 0.1584 -4.0896 0.1584 -3.1392C0.1584 -1.7712 0.7632 -0.6768 1.6128 0.0144C1.6848 0.0576 1.7712 0.1584 1.8576 0.1584C1.9728 0.1584 2.232 -0.0576 2.2608 -0.072L3.2256 -0.6912C3.2976 -0.7344 3.5136 -0.9072 3.6 -0.9072C3.6576 -0.9072 3.7008 -0.864 3.744 -0.8352C3.9888 -0.6336 5.0832 0.1728 5.0976 0.1872C5.6304 -0.2448 6.192 -0.648 6.696 -1.0944L6.7104 -1.3968C6.4512 -1.2816 6.3936 -1.0944 5.9904 -1.0944C5.5728 -1.0944 5.4288 -1.5264 5.3712 -1.8432C5.3424 -2.0304 5.328 -2.9088 5.328 -3.024V-3.7152V-4.2336V-4.3632C5.328 -4.5648 5.4432 -4.6224 5.5296 -4.7376L5.8752 -5.1408C5.9184 -5.1984 6.0336 -5.3712 6.1056 -5.3712S6.2352 -5.3136 6.2784 -5.2704L6.7536 -4.8672C7.4592 -4.2624 8.1648 -3.528 8.1648 -2.4336C8.1648 -0.432 6.264 1.2816 5.112 2.4336V2.448L5.328 2.664H5.3424C6.7824 1.224 8.9568 -0.2016 9.3888 -2.3328C9.4464 -2.592 9.4608 -2.8656 9.4608 -3.1248C9.4608 -4.6224 8.28 -5.7168 7.5744 -6.3504C7.5168 -6.408 6.9408 -6.8976 6.9264 -6.8976C6.3936 -6.264 5.8464 -5.6592 5.3424 -4.9968H5.328V-7.272C5.328 -7.488 5.3136 -7.704 5.3136 -7.92C5.3136 -8.1648 5.328 -8.4096 5.3856 -8.6544C5.4864 -9.1296 5.76 -9.7344 6.3792 -9.7344V-10.0512L4.1472 -9.3744L3.6 -9.2016C3.4992 -9.1728 3.3984 -9.1584 3.3984 -9.0144V-8.928C3.3984 -8.8416 3.456 -8.8128 3.5136 -8.784C3.5712 -8.7696 3.6288 -8.7408 3.6864 -8.6976C3.9024 -8.5392 3.96 -8.3664 3.96 -8.0064V-6.0048ZM3.4416 -4.8384L3.9456 -5.5296C3.96 -5.4432 3.9744 -5.3568 3.9744 -5.2704C3.9744 -5.1552 3.96 -5.04 3.96 -4.9248V-2.9376V-2.6784C3.96 -2.2464 3.8016 -1.5696 3.5856 -1.3968C3.4416 -1.2528 2.952 -1.1952 2.7216 -1.1952C2.5056 -1.1952 2.2896 -1.2384 2.1168 -1.3536C1.6128 -1.7136 1.4688 -2.6064 1.4688 -3.384C1.4688 -3.4416 1.4976 -4.3776 1.4688 -4.3776C1.4544 -4.5216 1.368 -5.256 1.368 -5.3136C1.368 -5.5584 1.4256 -5.8608 1.6272 -5.9184C1.6848 -5.9184 1.7424 -5.8896 1.7856 -5.8608L2.1168 -5.6448L2.9664 -5.112C3.1248 -5.0256 3.2688 -4.896 3.4416 -4.8384Z"/>
- <path id="g106" d="M4.0032 -1.6272C3.5856 -1.4688 3.4416 -1.2816 2.8512 -1.2816C2.5632 -1.2816 2.2896 -1.368 2.0736 -1.584C1.8576 -1.8288 1.7712 -2.0592 1.6848 -2.4336C1.6704 -2.4912 1.5552 -3.1968 1.6272 -3.1968C1.6704 -3.2688 1.7712 -3.312 1.8432 -3.3696C2.016 -3.4848 4.176 -4.8816 4.2768 -4.9392C3.8736 -5.6016 3.4416 -6.2496 3.024 -6.8976C2.8656 -6.84 1.7568 -6.2928 1.3536 -6.0912C1.08 -5.9472 0.7632 -5.8464 0.5616 -5.5872C0.2736 -5.1984 0.216 -4.6512 0.1872 -4.176C0.1728 -3.888 0.144 -3.5712 0.144 -3.2832C0.144 -1.8864 0.5904 -0.936 1.2528 -0.1296C1.3536 -0.0288 1.44 0.1152 1.584 0.1584C1.584 0.1584 1.7424 0.1152 1.7424 0.0864C1.9008 0 3.4704 -0.9504 3.4704 -0.9504L3.8304 -1.1664C3.9312 -1.2384 4.0032 -1.2528 4.0032 -1.4544V-1.6272ZM1.584 -3.5856C1.5696 -3.7728 1.5696 -3.9744 1.5696 -4.1616C1.5696 -4.8672 1.7568 -5.3712 2.1168 -5.7888L2.5776 -5.0688L2.9664 -4.4928L1.584 -3.5856Z"/>
- <path id="g107" d="M4.1904 -1.3392L4.032 -1.584C3.8736 -1.5408 3.744 -1.44 3.5856 -1.368C3.312 -1.2528 3.0096 -1.1952 2.7072 -1.1952H2.5488C1.5552 -1.296 1.4688 -2.6928 1.4688 -3.7008V-4.1328C1.4832 -4.536 1.3536 -4.9248 1.3536 -5.3424C1.3536 -5.544 1.4256 -5.8464 1.6272 -5.9184C1.6848 -5.9184 1.728 -5.8896 1.7712 -5.8608C1.8576 -5.8032 2.9664 -5.112 2.9664 -5.112C3.024 -5.0832 3.3264 -4.8672 3.384 -4.8672H3.3984C3.4992 -4.8672 3.5712 -5.0112 3.6144 -5.0832C3.8016 -5.3424 4.0176 -5.5872 4.1904 -5.8608C3.7872 -6.0912 3.3984 -6.3504 2.9952 -6.6096L2.6784 -6.7968C2.6352 -6.8256 2.5776 -6.8688 2.52 -6.8688C2.4192 -6.8688 2.304 -6.768 2.232 -6.7104C1.7424 -6.3504 1.1232 -6.0336 0.7776 -5.5584C0.36 -4.9536 0.1584 -4.0608 0.1584 -3.1392C0.1584 -1.8432 0.6768 -0.8352 1.4256 -0.144C1.4832 -0.0864 1.7568 0.1584 1.8576 0.1584C1.9296 0.1584 2.3472 -0.1296 2.4912 -0.216C2.6352 -0.3168 4.1904 -1.2816 4.1904 -1.3392Z"/>
- <path id="g108" d="M4.248 -6.888C4.116 -7.032 4.02 -7.224 3.9 -7.368C3.504 -7.8 2.988 -8.112 2.268 -8.112C1.224 -8.112 0.204 -7.404 0.204 -6.156C0.204 -5.208 0.696 -4.416 1.38 -4.152C1.812 -3.996 2.616 -4.092 2.616 -3.54C2.616 -3.156 2.412 -2.772 2.04 -2.772C1.788 -2.772 1.536 -2.952 1.404 -3.168C1.344 -3.288 1.308 -3.42 1.308 -3.564C1.236 -3.528 1.068 -3.516 1.068 -3.396C1.068 -3.36 1.08 -3.312 1.08 -3.276C1.2 -2.856 1.56 -2.508 2.052 -2.508C2.604 -2.508 2.892 -3.06 2.892 -3.588C2.892 -3.924 2.796 -4.308 2.664 -4.536C2.472 -4.884 2.208 -5.004 1.8 -5.136C1.296 -5.328 0.48 -5.52 0.48 -6.24C0.48 -6.948 1.224 -7.344 1.884 -7.344C3.792 -7.344 4.02 -4.788 4.02 -3.036C4.02 -2.736 3.996 -1.932 3.948 -1.692C3.876 -1.056 3.66 -0.12 2.796 -0.12C2.436 -0.12 2.064 -0.336 2.064 -0.768C2.064 -0.828 2.076 -0.888 2.088 -0.936C2.112 -0.936 2.136 -1.08 2.136 -1.08C2.136 -1.14 2.04 -1.236 1.968 -1.236C1.872 -1.236 1.776 -1.176 1.692 -1.152C1.62 -1.128 1.536 -1.128 1.464 -1.128C1.344 -1.128 1.224 -1.152 1.092 -1.176C1.08 -1.14 1.068 -1.116 1.068 -1.08C1.068 -0.996 1.116 -0.9 1.128 -0.816C1.14 -0.816 1.14 -0.384 1.14 -0.384C1.116 -0.384 1.092 -0.132 1.092 -0.132C1.092 -0.072 1.176 0.048 1.26 0.048C1.32 0.048 1.38 -0.024 1.428 -0.048C1.5 -0.084 1.572 -0.108 1.644 -0.108C1.68 -0.108 1.716 -0.096 1.752 -0.096C2.112 -0.036 2.376 0.156 2.796 0.156C3.252 0.156 3.708 -0.048 4.02 -0.348C4.692 -1.008 4.956 -1.956 5.004 -2.868C5.004 -2.868 5.004 -3.588 4.992 -3.588C4.968 -4.536 4.812 -5.388 4.56 -6.18L4.452 -6.456C4.428 -6.516 4.392 -6.564 4.38 -6.624C4.38 -6.732 4.428 -6.864 4.464 -6.96C4.608 -7.344 4.932 -7.8 5.472 -7.8C5.844 -7.8 6.108 -7.524 6.276 -7.2C6.552 -6.648 6.576 -5.94 7.032 -5.484C7.152 -5.364 7.308 -5.232 7.476 -5.184V-5.172C6.984 -5.064 6.468 -4.92 6.108 -4.548C5.76 -4.176 5.712 -3.648 5.712 -3.06C5.712 -2.016 6.012 -0.936 6.396 -0.204C6.444 -0.12 6.492 -0.048 6.528 0.036C6.576 0.108 6.588 0.156 6.72 0.156C6.744 0.156 6.864 0.168 6.864 0.144C6.936 0.108 6.996 -0.036 7.044 -0.108L7.632 -1.044C7.656 -1.08 7.824 -1.356 7.824 -1.38C7.824 -1.488 7.68 -1.524 7.62 -1.548C7.56 -1.476 7.488 -1.368 7.368 -1.368C7.236 -1.368 7.116 -1.512 7.056 -1.632C6.84 -1.98 6.78 -2.412 6.744 -2.808C6.732 -2.988 6.744 -3.156 6.732 -3.336C6.72 -3.492 6.708 -3.648 6.708 -3.816C6.708 -4.032 6.732 -4.248 6.852 -4.428C7.068 -4.764 7.476 -4.896 7.884 -5.004C7.968 -5.028 8.028 -5.04 8.028 -5.16V-6.048C7.752 -6.06 7.644 -6.3 7.56 -6.528L7.38 -7.044C7.14 -7.656 6.78 -8.388 6.048 -8.46C5.976 -8.46 5.652 -8.472 5.652 -8.436C5.496 -8.4 5.352 -8.352 5.22 -8.28C4.776 -8.052 4.32 -7.44 4.248 -6.888Z"/>
- <path id="g109" d="M4.512 -6.012L4.632 -6.252C4.248 -6.468 3.804 -6.696 3.36 -6.696C3.312 -6.696 3.276 -6.684 3.228 -6.684C2.52 -6.624 2.136 -5.868 2.136 -5.148C2.136 -5.088 2.136 -5.04 2.148 -4.98C2.232 -4.392 2.748 -4.044 3.228 -3.768C3.24 -3.756 3.732 -3.48 3.732 -3.54C3.828 -3.552 3.936 -3.624 4.032 -3.66L4.608 -3.924C5.136 -4.14 5.64 -4.464 6.348 -4.464C7.188 -4.464 8.1 -3.972 8.1 -3C8.1 -2.568 7.932 -2.136 7.656 -1.824C7.14 -1.2 6.312 -0.84 5.328 -0.84C4.236 -0.84 3.156 -1.308 2.4 -2.064C1.656 -2.808 1.188 -3.888 1.188 -4.944C1.188 -5.892 1.608 -6.792 2.268 -7.296C2.496 -7.476 2.784 -7.668 3.108 -7.668C3.468 -7.668 3.816 -7.476 4.116 -7.32L5.208 -6.756C5.544 -6.6 5.988 -6.372 6.3 -6.204C6.384 -6.156 6.504 -6.072 6.612 -6.072C6.684 -6.072 7.668 -6.516 8.04 -6.696C8.196 -6.756 8.364 -6.816 8.484 -6.936C8.736 -7.176 8.808 -7.548 8.808 -7.884L8.448 -7.74C8.448 -7.56 8.436 -7.368 8.34 -7.212C8.22 -7.032 7.992 -6.96 7.728 -6.96C7.296 -6.96 6.852 -7.236 6.576 -7.392L5.232 -8.076C5.076 -8.148 4.92 -8.22 4.776 -8.304C4.692 -8.34 4.548 -8.448 4.44 -8.448C4.356 -8.448 4.248 -8.412 4.164 -8.388C3.516 -8.196 2.844 -7.968 2.304 -7.668C1.176 -7.032 0.204 -5.832 0.204 -4.164C0.204 -3.444 0.396 -2.82 0.648 -2.34C1.356 -0.984 2.772 -0.108 4.26 0.096C4.5 0.132 4.752 0.156 4.992 0.156C5.496 0.156 6 0.072 6.468 -0.144C7.488 -0.612 8.364 -1.644 8.364 -3.012C8.364 -3.3 8.328 -3.6 8.232 -3.876C7.92 -4.764 7.212 -5.424 6.444 -5.88C6.432 -5.892 6.084 -6.096 6.084 -6.048C6.012 -6.036 5.412 -5.76 5.412 -5.76L3.936 -5.1C3.756 -5.028 3.612 -4.944 3.396 -4.944C3.024 -4.944 2.7 -5.268 2.7 -5.688C2.7 -6.096 2.952 -6.444 3.384 -6.444C3.804 -6.444 4.152 -6.168 4.512 -6.012Z"/>
- <path id="g110" d="M4.6224 0.1872L5.4144 -0.6048C5.4576 -0.648 5.6736 -0.8352 5.6736 -0.9072S5.4864 -1.1664 5.472 -1.1808C5.04 -1.6848 4.5504 -2.3472 4.5504 -3.2256C4.5504 -3.5424 4.5792 -4.0608 4.6656 -4.248C4.7376 -4.392 5.6304 -5.4144 5.7024 -5.5296C5.2272 -5.8464 4.7808 -6.192 4.32 -6.5232L3.9744 -6.7824C3.9312 -6.8112 3.8592 -6.8688 3.8016 -6.8688C3.7152 -6.8688 3.4272 -6.6384 3.4272 -6.6384L2.4912 -5.976C1.4112 -5.2272 0.2592 -4.2192 0.1584 -2.808C0.1584 -2.808 0.1728 -2.1168 0.2016 -2.1168C0.2592 -1.8432 0.3312 -1.5696 0.4608 -1.3248C0.7632 -0.7056 1.2528 -0.1872 1.8864 0.1296C1.8864 0.1296 2.0592 0.1872 2.0592 0.144C2.1888 0.072 2.2896 -0.072 2.3904 -0.1728L3.0528 -0.8352C3.096 -0.8784 3.3552 -1.1664 3.4272 -1.1664C3.4704 -1.1664 3.4992 -1.1232 3.528 -1.0944C3.7296 -0.8496 4.5792 0.1872 4.6224 0.1872ZM4.4208 -4.5504C4.3344 -4.3344 3.7728 -2.3904 3.7008 -2.16C3.6432 -1.8 3.4848 -1.728 3.2544 -1.4976L2.8656 -1.1088C2.808 -1.0512 2.7504 -0.9792 2.6784 -0.9504C2.5776 -0.9504 2.3904 -1.0944 2.3472 -1.1232C1.7568 -1.5696 1.2528 -2.3184 1.2528 -3.2544C1.2528 -4.3056 1.9296 -5.0976 2.5056 -5.5584C2.5632 -5.6016 2.6496 -5.7024 2.736 -5.7024C2.7936 -5.7024 2.8512 -5.6448 2.8944 -5.616L3.2112 -5.3856C3.4704 -5.2128 3.7296 -5.0256 3.9888 -4.8384C4.1328 -4.7376 4.2624 -4.6224 4.4208 -4.5504Z"/>
- <path id="g111" d="M4.6368 -5.832C4.392 -6.0048 4.1328 -6.1632 3.888 -6.3216C3.5856 -6.5232 3.312 -6.6384 3.312 -7.1136H3.2976C3.168 -6.8544 3.0096 -6.6096 2.808 -6.408C2.2752 -5.8896 1.4832 -5.7312 0.7632 -5.7312C0.7488 -5.112 0.792 -4.4352 0.7488 -3.8448C0.5472 -3.6 0.3456 -3.3696 0.1296 -3.1392V-3.1248L1.2096 -2.0592V-2.0448C0.9936 -1.872 0.8064 -1.6272 0.6192 -1.4112C0.1584 -0.9072 -0.4464 -0.288 -0.4464 0.4176C-0.4464 0.5472 -0.432 0.6768 -0.3888 0.8064L0.1296 0.3024V0.288C0.0576 0.216 0 0.1152 0 -0.0144C0 -0.216 0.144 -0.3888 0.2592 -0.5328C0.3024 -0.6048 0.4032 -0.7488 0.4896 -0.7488H0.504C0.5472 -0.7488 0.7488 -0.576 0.8208 -0.5184L1.5264 0.072C1.5984 0.144 1.7136 0.2736 1.8144 0.2736C1.9008 0.2736 2.5056 -0.1008 2.7216 -0.216C3.2256 -0.5184 4.824 -1.4256 5.0976 -1.5984L4.9104 -1.8576C4.896 -2.1168 4.896 -2.3904 4.896 -2.664C4.9968 -2.7072 5.0544 -2.8512 5.0976 -2.952C5.2416 -3.1968 5.4144 -3.4416 5.5296 -3.7008L4.0176 -4.68C4.2912 -4.9968 4.5936 -5.3136 4.8816 -5.6304C5.2416 -6.048 5.3856 -6.2064 5.3856 -6.9696V-7.1136C5.3856 -7.3008 5.3136 -7.4448 5.1264 -7.4448C5.0112 -7.4448 4.896 -7.3296 4.896 -7.2144C4.9248 -6.984 5.04 -6.7536 5.04 -6.5088C5.0256 -6.2064 4.7808 -6.0624 4.6368 -5.832ZM2.0304 -2.952L1.8432 -3.1248H1.9728V-5.5872L2.4912 -5.76L2.6352 -5.688C3.0096 -5.4288 3.4128 -5.184 3.8016 -4.9392L3.312 -4.392L2.0304 -2.952ZM1.3536 -1.6992C1.3536 -1.7568 1.4256 -1.8144 1.4544 -1.8576C1.5696 -1.9728 2.7504 -3.2832 2.7504 -3.2832L3.024 -3.5856C3.0672 -3.6288 3.1248 -3.744 3.1968 -3.744C3.2544 -3.744 3.312 -3.7008 3.3408 -3.672C3.456 -3.6 3.672 -3.5136 3.6864 -3.3552V-1.3248V-1.2672C3.6864 -1.2096 3.6864 -1.1664 3.6432 -1.1376C3.5856 -1.08 2.7504 -0.5904 2.664 -0.5904C2.5632 -0.5904 2.448 -0.7488 2.4048 -0.7776L1.9008 -1.1952C1.7568 -1.3248 1.6272 -1.44 1.4832 -1.5552C1.44 -1.584 1.3536 -1.6416 1.3536 -1.6992Z"/>
- <path id="g112" d="M4.8528 -6.8976C4.752 -6.7824 4.2624 -6.1056 4.176 -6.048C4.1184 -6.0192 4.0464 -6.0192 3.9888 -6.0192H2.3616C2.1312 -6.0192 2.1312 -6.0768 2.0016 -6.2352L1.6704 -6.6672C1.6272 -6.7248 1.5552 -6.8544 1.4832 -6.8544C1.4256 -6.8544 1.3824 -6.7824 1.3536 -6.7392C1.296 -6.6528 1.008 -6.2928 0.936 -6.192C0.8496 -6.1056 0.7776 -6.0048 0.7776 -5.8464C0.7776 -5.7744 0.792 -5.7024 0.792 -5.6304V-2.0016V-1.8144C0.792 -1.7568 0.792 -1.6992 0.8064 -1.6416C0.8208 -1.5696 1.0224 -1.2096 1.0944 -1.08C1.2816 -0.72 1.4544 -0.36 1.656 -0.0144C1.8864 -0.1152 2.1168 -0.2448 2.3328 -0.3744C2.4624 -0.432 4.1184 -1.3248 4.1616 -1.3248C4.248 -1.296 4.3344 -1.152 4.3776 -1.08C4.7088 -0.6336 4.968 0 4.968 0.72C4.968 1.5984 4.032 2.0448 3.3552 2.0448C2.6208 2.0448 2.088 1.6272 1.5984 1.1952C1.4832 1.0944 1.0512 0.6912 0.936 0.648C0.6912 0.9792 0.4176 1.2672 0.1584 1.584C0.0432 1.728 -0.1296 1.8144 -0.1296 2.0736C-0.1296 2.3184 0.0576 2.3184 0.2448 2.4048C0.9072 2.6784 1.7136 2.88 2.6064 2.88C2.7648 2.88 2.9088 2.8656 3.0528 2.8368C3.7728 2.6784 4.392 2.2032 4.9104 1.6992C5.472 1.152 6.12 0.4176 6.12 -0.6048C6.12 -1.1088 5.9472 -1.5264 5.7168 -1.8576C5.6448 -1.9728 5.544 -2.0304 5.544 -2.2176V-2.4048V-4.6512C5.7744 -4.6512 6.0192 -4.6368 6.2208 -4.68L6.2928 -4.7952C6.408 -5.2128 6.552 -5.616 6.6816 -6.0192C6.2928 -6.0192 5.8896 -6.0048 5.544 -6.048C5.2992 -6.3072 5.0832 -6.6096 4.8528 -6.8976ZM2.16 -4.6512H4.176V-1.9872V-1.8864C4.176 -1.6992 4.104 -1.656 3.9456 -1.5984C3.7728 -1.4976 3.6144 -1.4112 3.4416 -1.3248L2.808 -0.9936C2.7648 -0.9648 2.6784 -0.8928 2.6208 -0.8928C2.5056 -0.8928 2.4624 -1.08 2.4336 -1.1376C2.3328 -1.3248 2.16 -1.5696 2.16 -1.8432V-4.6512Z"/>
- <path id="g113" d="M4.896 -8.2944C4.8096 -8.2512 4.4352 -8.0496 4.3776 -7.992C4.2912 -7.9056 4.3344 -7.7472 4.1472 -7.7472C4.0608 -7.7472 3.96 -7.8192 3.8736 -7.848C4.0176 -7.992 4.9248 -8.8704 4.9392 -8.9568C4.9392 -9.1728 4.4928 -9.3024 4.3488 -9.3024C4.0896 -9.3024 3.8736 -9.1584 3.7008 -9.0432C3.3552 -8.856 2.9952 -8.6688 2.9952 -8.1648C2.9952 -7.9488 3.0672 -7.8336 3.1536 -7.6896C3.2688 -7.488 3.456 -7.2864 3.7584 -7.2864C4.0464 -7.2864 4.2912 -7.4736 4.536 -7.6176C4.7088 -7.7184 4.9536 -7.8912 4.9536 -8.1216V-8.136C4.9536 -8.1936 4.9248 -8.2512 4.896 -8.2944ZM3.6576 -8.0928C3.6432 -8.1936 3.6288 -8.2944 3.6288 -8.3808C3.6288 -8.5824 3.7152 -8.8416 3.9312 -8.8416C4.0608 -8.8416 4.1904 -8.784 4.2912 -8.7264L3.6576 -8.0928ZM0.1584 -5.6016C0.2592 -5.6448 0.3456 -5.688 0.4608 -5.7024C0.6768 -5.7024 0.9072 -5.5584 0.9792 -5.3424C1.008 -5.256 1.008 -5.1552 1.008 -5.0544V-1.872V-1.728C1.008 -1.5552 0.9504 -1.5264 0.8352 -1.44C0.72 -1.368 0.5904 -1.2816 0.4896 -1.1952C1.0944 -0.7632 1.6272 -0.2448 2.2608 0.1584L2.448 0.072L4.4784 -1.3536C4.4784 -0.8928 4.6368 -0.4608 4.9392 -0.1152C4.9968 -0.0432 5.1984 0.1584 5.3136 0.1584C5.3568 0.144 5.4 0.1152 5.4288 0.0864L5.6304 -0.1152C5.7168 -0.1872 6.4224 -0.8064 6.4224 -0.864C6.0192 -1.2816 5.832 -1.7568 5.832 -2.4912C5.832 -2.7072 5.8464 -2.9232 5.8464 -3.1392V-6.8976C5.5152 -6.768 5.1984 -6.6096 4.8672 -6.4656L4.6224 -6.3648C4.5216 -6.2928 4.464 -6.2928 4.464 -6.1344C4.464 -6.0768 4.4784 -6.0192 4.4784 -5.976V-2.088C4.4784 -2.0304 4.4928 -1.9584 4.4928 -1.9008C4.4928 -1.7136 4.3632 -1.656 4.2336 -1.584L3.7008 -1.2096C3.6288 -1.1664 3.528 -1.0512 3.4416 -1.0512S3.2544 -1.1808 3.1824 -1.2384L2.6208 -1.6704C2.4912 -1.7712 2.3616 -1.8144 2.3616 -2.0448C2.3616 -2.1168 2.376 -2.1888 2.376 -2.2464V-4.5504V-4.968C2.376 -5.1696 2.376 -5.3712 2.3472 -5.5728C2.2752 -6.0048 2.088 -6.4368 1.7856 -6.768C1.7568 -6.8112 1.7136 -6.8688 1.656 -6.8688S1.3248 -6.6816 1.224 -6.624L0.4896 -6.1344C0.3456 -6.048 0.144 -5.9904 0.144 -5.76C0.144 -5.7024 0.1584 -5.6448 0.1584 -5.6016Z"/>
- <path id="g114" d="M5.22 -7.788C5.004 -7.944 4.824 -8.076 4.476 -8.076C4.08 -8.076 3.684 -7.836 3.54 -7.512C3.18 -7.896 2.82 -8.352 2.268 -8.436C2.268 -8.436 2.052 -8.46 2.052 -8.46S1.8 -8.448 1.8 -8.436C0.816 -8.292 0.204 -7.32 0.204 -6.372C0.204 -5.748 0.456 -5.184 0.888 -4.98C1.056 -4.908 1.224 -4.92 1.392 -4.884C1.596 -4.836 1.812 -4.632 1.812 -4.38C1.812 -4.104 1.62 -3.768 1.296 -3.768C1.044 -3.768 0.828 -3.924 0.696 -4.056C0.672 -4.092 0.6 -4.2 0.54 -4.2S0.36 -4.128 0.36 -4.068C0.36 -4.032 0.384 -4.008 0.396 -3.984C0.6 -3.72 0.936 -3.492 1.356 -3.492C1.992 -3.588 2.256 -4.128 2.256 -4.764C2.256 -4.788 2.256 -4.824 2.256 -4.848C2.232 -5.28 1.98 -5.76 1.548 -5.904C1.392 -5.952 1.236 -5.94 1.08 -5.964C0.804 -6.012 0.528 -6.18 0.456 -6.468C0.444 -6.468 0.444 -6.792 0.456 -6.792C0.516 -7.2 0.732 -7.74 1.272 -7.74C1.92 -7.74 2.352 -7.116 2.616 -6.792C2.76 -6.624 2.904 -6.456 3.012 -6.264C3.324 -5.7 3.348 -5.028 3.348 -4.392C3.348 -4.272 3.348 -4.152 3.348 -4.02C3.348 -3.288 3.084 -2.76 2.748 -2.352C2.688 -2.292 2.556 -2.112 2.46 -2.112C2.412 -2.112 2.376 -2.136 2.328 -2.148C2.244 -2.172 2.16 -2.184 2.076 -2.184C1.26 -2.184 0.588 -1.56 0.588 -0.804C0.588 -0.396 0.768 -0.144 0.984 0.084H0.996L1.176 -0.096V-0.108C0.996 -0.276 0.84 -0.468 0.84 -0.768C0.84 -1.056 1.032 -1.368 1.344 -1.368C1.344 -1.368 1.356 -1.368 1.356 -1.368C2.232 -1.308 2.76 -0.444 3.36 0C3.42 0.048 3.516 0.132 3.6 0.132C3.636 0.132 3.672 0.108 3.708 0.084L3.972 -0.132C4.332 -0.444 4.752 -0.696 5.088 -1.032L5.556 -0.708L6.348 -0.18C6.42 -0.132 6.78 0.132 6.852 0.132C6.864 0.132 6.864 0.132 6.876 0.132C6.948 0.132 7.044 0.072 7.116 0.036C7.572 -0.192 8.256 -0.504 8.604 -0.804C9.06 -1.212 9.348 -1.788 9.444 -2.388C9.468 -2.532 9.492 -2.688 9.492 -2.844C9.492 -2.88 9.492 -2.904 9.492 -2.94C9.432 -3.504 8.88 -3.756 8.496 -4.092C8.304 -4.26 8.124 -4.476 8.088 -4.74C8.088 -4.824 8.088 -4.908 8.1 -4.992C8.16 -5.256 8.292 -5.496 8.472 -5.64L8.556 -5.472C8.64 -5.52 8.7 -5.592 8.76 -5.664L9.132 -6.06C9.192 -6.132 9.3 -6.204 9.3 -6.3C9.3 -6.3 9.3 -6.312 9.3 -6.312L9.492 -6.432L9.36 -6.672C9.312 -6.648 9.24 -6.576 9.192 -6.576C9.132 -6.576 9.096 -6.66 9.084 -6.696L8.904 -6.996C8.532 -7.608 7.992 -8.46 7.056 -8.46C6.384 -8.46 5.988 -8.052 5.652 -7.692C5.736 -8.016 5.832 -8.328 5.94 -8.628C5.904 -8.628 5.856 -8.64 5.808 -8.64C5.628 -8.64 5.604 -8.52 5.532 -8.4C5.412 -8.208 5.292 -8.004 5.22 -7.788ZM2.772 -1.932C3.144 -2.124 3.468 -2.376 3.828 -2.58L4.104 -2.748C4.188 -2.808 4.248 -2.844 4.248 -2.988C4.248 -3.036 4.248 -3.084 4.248 -3.12C4.248 -3.324 4.272 -3.516 4.272 -3.72C4.284 -3.984 4.308 -4.236 4.32 -4.5C4.332 -4.5 4.332 -5.004 4.332 -5.004S4.32 -5.94 4.26 -5.94C4.188 -6.384 4.044 -6.792 3.828 -7.14C3.792 -7.188 3.732 -7.248 3.732 -7.32C3.732 -7.404 3.816 -7.476 3.864 -7.536C4.032 -7.704 4.26 -7.812 4.488 -7.812C4.596 -7.812 4.704 -7.788 4.812 -7.74C4.896 -7.692 5.088 -7.608 5.088 -7.488C5.088 -7.44 5.064 -7.392 5.04 -7.344C4.86 -6.804 4.752 -6.264 4.752 -5.568C4.752 -5.508 4.752 -5.46 4.752 -5.412C4.86 -4.536 5.616 -3.888 5.7 -3C5.7 -3 5.676 -2.496 5.652 -2.496C5.568 -2.04 5.34 -1.632 5.004 -1.308C4.824 -1.128 4.584 -0.96 4.308 -0.96C3.948 -0.96 3.648 -1.224 3.432 -1.392L2.772 -1.932ZM5.82 -1.872C6.108 -2.34 6.312 -2.844 6.504 -3.36C6.528 -3.432 6.672 -3.816 6.672 -3.9C6.672 -3.996 6.516 -4.188 6.504 -4.212L6.18 -4.74C5.832 -5.316 5.532 -5.94 5.532 -6.684C5.532 -6.78 5.544 -6.876 5.556 -6.972C5.556 -7.044 5.556 -7.116 5.592 -7.188C5.772 -7.5 6.048 -7.932 6.456 -7.932C7.236 -7.932 7.68 -7.176 7.932 -6.708L8.22 -6.12C8.256 -6.06 8.316 -5.976 8.316 -5.916C8.316 -5.832 8.184 -5.772 8.16 -5.748C7.764 -5.352 7.32 -4.824 7.32 -4.14C7.32 -3.732 7.512 -3.528 7.764 -3.312C8.148 -3 8.868 -2.7 8.868 -2.04C8.868 -1.5 8.532 -1.092 8.22 -0.852C8.148 -0.804 7.86 -0.6 7.764 -0.6C7.752 -0.6 7.752 -0.6 7.74 -0.6C7.68 -0.612 7.32 -0.864 7.2 -0.948L6.264 -1.584C6.12 -1.68 5.976 -1.788 5.82 -1.872Z"/>
- <path id="g115" d="M5.4288 -10.0512L5.328 -9.7056L6.048 -9.504C6.0192 -9.3168 5.9472 -9.1296 5.8752 -8.9424C5.1696 -6.984 3.312 -5.7024 1.728 -4.752C1.3824 -4.5504 0.4896 -4.0464 0.1584 -3.888C0.4176 -3.4128 0.7776 -2.7936 1.0368 -2.3616C1.0512 -2.3184 1.08 -2.2608 1.1376 -2.232C1.152 -2.232 1.2672 -2.2176 1.2672 -2.2464C2.7072 -2.7216 4.3632 -3.3264 6.0768 -3.3264C6.4944 -3.3264 6.768 -3.2256 7.0272 -2.9952C7.5024 -2.592 7.6896 -1.9872 7.6896 -1.3824C7.6896 -1.2528 7.6752 -1.1088 7.6608 -0.9648C7.4736 0.216 6.6384 1.296 5.4432 1.584C5.2416 1.6272 5.0256 1.656 4.824 1.656C4.3776 1.6416 3.7728 1.368 3.7728 0.8064C3.7872 0.6192 3.888 0.4752 4.0176 0.3456C4.248 0.1152 4.5936 -0.0864 4.5936 -0.4464C4.5936 -0.4752 4.5792 -0.5184 4.5792 -0.5472C4.5792 -0.6192 4.5504 -0.6912 4.5216 -0.7632C4.3776 -1.0512 4.0752 -1.224 3.7728 -1.224C3.1248 -1.224 2.8368 -0.5616 2.8368 0C2.8368 0.144 2.8512 0.2736 2.88 0.4032C3.1104 1.5408 4.392 2.2464 5.7168 2.2464C6.1488 2.2464 6.5664 2.1744 6.9696 2.0448C8.1648 1.6272 9.1152 0.6048 9.4032 -0.6336C9.4752 -0.9072 9.504 -1.2096 9.504 -1.4976C9.504 -2.7792 8.928 -3.816 8.2656 -4.4784C8.1792 -4.5648 7.8048 -4.9392 7.6752 -4.9392C7.5312 -4.9392 7.2432 -4.7952 7.1856 -4.7664L6.192 -4.4064L3.9168 -3.5568C3.4992 -3.3984 3.0816 -3.2112 2.6496 -3.0816C2.4048 -3.5568 2.1312 -3.9888 1.8864 -4.4496C2.3184 -4.536 3.1968 -4.9248 3.4704 -5.0256C5.328 -5.832 7.0416 -6.9696 8.1936 -8.5968C8.3232 -8.7696 8.4672 -8.9568 8.5536 -9.1584L5.4288 -10.0512Z"/>
- <path id="g116" d="M5.916 -1.38C5.424 -1.104 5.076 -0.876 4.296 -0.876C3.984 -0.876 3.66 -0.924 3.384 -1.008C2.268 -1.344 1.428 -2.292 1.14 -3.408C1.056 -3.72 1.032 -4.044 1.032 -4.356C1.032 -4.716 1.068 -5.328 1.104 -5.604L1.176 -6.048C1.32 -6.78 1.62 -7.68 2.376 -7.992C2.472 -8.028 2.568 -8.052 2.664 -8.076C2.676 -8.076 3.096 -8.124 3.096 -8.1C3.276 -8.076 3.444 -8.016 3.6 -7.944C3.696 -7.896 3.768 -7.836 3.864 -7.788V-7.764C3.672 -7.692 3.264 -7.428 3.144 -7.356C2.772 -7.08 2.292 -6.708 2.292 -6.096C2.292 -5.604 2.676 -5.244 2.976 -4.884C3.168 -4.668 3.324 -4.404 3.336 -4.104C3.336 -3.816 3.168 -3.456 2.856 -3.456C2.844 -3.456 2.832 -3.456 2.82 -3.456C2.712 -3.456 2.592 -3.528 2.532 -3.588C2.256 -3.828 2.22 -4.248 2.1 -4.572L1.848 -4.5C1.872 -4.368 1.92 -4.248 1.968 -4.128C2.172 -3.66 2.496 -3.084 3.156 -3.084C3.756 -3.084 4.188 -3.576 4.188 -4.188C4.188 -4.392 4.14 -4.596 4.056 -4.788C4.02 -4.836 3.888 -5.064 3.888 -5.124C3.888 -5.208 4.056 -5.268 4.116 -5.268C4.116 -5.268 4.128 -5.268 4.128 -5.268C4.164 -5.268 4.308 -5.124 4.356 -5.076L4.86 -4.596C4.908 -4.548 5.004 -4.428 5.076 -4.428C5.136 -4.428 5.184 -4.512 5.22 -4.548L5.592 -4.944C5.652 -5.016 5.724 -5.1 5.796 -5.172C5.832 -5.208 5.88 -5.244 5.88 -5.292C5.88 -5.292 5.88 -5.304 5.88 -5.304C5.88 -5.376 5.784 -5.448 5.736 -5.496L5.268 -6C5.22 -6.06 5.148 -6.168 5.064 -6.168C5.064 -6.168 5.052 -6.168 5.052 -6.168C5.004 -6.168 4.74 -6 4.74 -6C4.668 -5.964 3.756 -5.4 3.732 -5.388C3.696 -5.388 3.672 -5.436 3.648 -5.46C3.444 -5.748 3.156 -6.228 3.156 -6.6C3.156 -7.08 3.528 -7.308 3.828 -7.476C3.888 -7.5 3.984 -7.584 4.068 -7.584C4.164 -7.584 4.284 -7.452 4.32 -7.428L4.716 -7.128C4.788 -7.08 4.884 -6.972 4.968 -6.972C5.004 -6.972 5.04 -6.984 5.076 -7.008C5.136 -7.044 5.688 -7.356 5.904 -7.452V-7.476L5.112 -8.076C5.064 -8.124 4.884 -8.268 4.8 -8.268C4.74 -8.268 4.68 -8.22 4.632 -8.196C4.56 -8.16 4.188 -7.932 4.116 -7.932S3.972 -8.004 3.912 -8.052C3.636 -8.256 3.348 -8.46 2.88 -8.46C2.604 -8.46 2.316 -8.388 2.076 -8.28C1.26 -7.908 0.804 -7.092 0.528 -6.276C0.336 -5.676 0.24 -5.04 0.216 -4.416C0.204 -4.416 0.204 -3.624 0.216 -3.624C0.372 -1.896 1.44 -0.24 3.108 0.096C3.156 0.108 3.756 0.192 3.756 0.144C3.888 0.12 4.02 0.012 4.14 -0.06L4.884 -0.504L5.616 -0.936C5.748 -1.008 5.928 -1.044 5.928 -1.248C5.928 -1.296 5.916 -1.344 5.916 -1.38Z"/>
- <path id="g117" d="M6.168 -8.46C6.168 -8.448 6.168 -8.448 6.168 -8.436C6.168 -8.376 6.12 -8.352 6.072 -8.316L5.736 -8.1L4.656 -7.404C4.536 -7.296 4.368 -7.248 4.272 -7.116V-1.824C4.272 -1.788 4.272 -1.752 4.272 -1.716C4.272 -1.596 4.188 -1.584 4.104 -1.548C3.948 -1.476 3.804 -1.392 3.648 -1.32L3 -1.008C2.964 -0.996 2.76 -0.888 2.724 -0.888C2.688 -0.9 2.652 -0.936 2.628 -0.96C2.568 -1.02 1.752 -1.908 1.752 -1.908C2.784 -2.244 3.84 -3.036 3.84 -4.416C3.84 -4.512 3.84 -4.608 3.84 -4.716C3.852 -4.716 3.864 -5.46 3.864 -5.46S3.852 -5.94 3.84 -5.94C3.804 -6.312 3.708 -6.696 3.504 -7.02C3.204 -7.476 2.664 -7.872 2.04 -7.872C1.044 -7.872 0.204 -7.128 0.204 -6.24C0.204 -5.784 0.36 -5.4 0.624 -5.196C1.044 -4.86 1.884 -5.112 1.884 -4.38C1.884 -4.068 1.728 -3.732 1.44 -3.732C1.224 -3.732 0.984 -3.924 0.744 -3.924C0.552 -3.924 0.372 -3.78 0.372 -3.552C0.372 -3.204 0.804 -3.048 1.152 -3.048C1.176 -3.048 1.2 -3.048 1.224 -3.048C1.884 -3.156 2.148 -3.78 2.148 -4.44C2.148 -4.956 2.028 -5.388 1.74 -5.628C1.536 -5.808 1.224 -5.784 0.984 -5.82C0.756 -5.844 0.528 -5.964 0.528 -6.252C0.528 -6.78 1.044 -7.128 1.452 -7.128C1.608 -7.128 1.764 -7.08 1.884 -7.032C2.76 -6.636 2.952 -5.592 2.952 -4.584C2.952 -4.5 2.952 -4.428 2.952 -4.344C2.952 -4.152 2.952 -3.96 2.904 -3.768C2.724 -3 2.208 -2.316 1.452 -2.052C1.056 -1.92 0.624 -1.908 0.204 -1.908C0.204 -1.86 0.192 -1.8 0.192 -1.752C0.192 -1.572 0.336 -1.5 0.444 -1.416L0.732 -1.14C0.9 -0.996 1.068 -0.852 1.068 -0.576C1.068 -0.48 1.056 -0.384 1.032 -0.3C1.02 -0.228 0.972 -0.132 0.972 -0.06C0.972 -0.024 0.984 0 1.008 0.024C1.068 0.06 1.152 0.132 1.224 0.144C1.296 0.144 2.1 -0.264 2.328 -0.384L4.284 -1.332C4.32 -1.224 4.38 -1.128 4.428 -1.032C4.5 -0.888 4.704 -0.54 4.74 -0.396C4.752 -0.396 4.752 -0.288 4.752 -0.288S4.752 -0.18 4.74 -0.18C4.716 -0.18 4.668 -0.036 4.68 -0.036C4.68 0.036 4.764 0.108 4.812 0.156H4.824L6.06 -0.84L6.408 -1.128C6.456 -1.164 6.564 -1.224 6.564 -1.284C6.564 -1.356 6.468 -1.452 6.432 -1.488C6.276 -1.416 6.168 -1.32 5.964 -1.32C5.616 -1.32 5.352 -1.56 5.352 -1.956C5.352 -2.04 5.352 -2.112 5.352 -2.196V-6.756C5.352 -6.84 5.352 -6.936 5.352 -7.02C5.352 -7.656 5.772 -7.764 6.156 -8.052C6.168 -7.968 6.24 -7.92 6.312 -7.92C6.42 -7.92 6.528 -8.016 6.528 -8.136C6.528 -8.316 6.36 -8.46 6.168 -8.46Z"/>
- <path id="g118" d="M7.5168 -10.0512L5.5296 -7.9344V-10.0512C5.4 -10.008 5.2704 -9.936 5.1408 -9.8784L4.4784 -9.5616C3.6864 -9.2016 2.9088 -8.8416 2.2032 -8.3232C1.1376 -7.56 0.1584 -6.4656 0.1584 -4.8816C0.1584 -4.5648 0.1872 -4.2336 0.2448 -3.9312C0.5328 -2.4048 1.4976 -0.9936 2.9088 -0.288C3.4848 -0.0288 4.1472 0.2016 4.9248 0.2016C5.2272 0.2016 5.4576 0.144 5.7312 0.0864C6.7536 -0.216 7.5456 -1.0224 8.2368 -1.8C8.9136 -2.592 9.7776 -3.4992 10.0512 -4.536C10.1232 -4.7808 10.1664 -5.04 10.1664 -5.2992C10.1664 -5.3712 10.1664 -5.4576 10.152 -5.5296C10.0656 -6.0768 9.7488 -6.5808 9.4608 -7.0416C9.1728 -7.5168 8.8704 -7.9632 8.5392 -8.4096C8.1648 -8.9424 7.776 -9.4464 7.5168 -10.0512ZM3.8448 -8.8704V-5.688C3.8448 -5.4144 3.8592 -5.1264 3.8592 -4.8384C3.8592 -4.0464 3.744 -3.4128 3.4272 -2.8512C3.3408 -2.664 3.2256 -2.5056 3.1248 -2.3184C2.9808 -2.4048 2.8656 -2.5344 2.7504 -2.664C2.088 -3.3264 1.5552 -4.4928 1.5552 -5.5584C1.5552 -6.8832 2.3184 -7.8336 3.1248 -8.424C3.3552 -8.5968 3.6 -8.7264 3.8448 -8.8704ZM3.4416 -2.0448L5.5152 -4.464C5.5728 -5.4 5.4864 -6.4368 5.544 -7.3584C5.7744 -7.6608 6.0336 -7.9344 6.2928 -8.2224C6.624 -7.8912 6.8976 -7.5168 7.1712 -7.1424C7.5456 -6.624 8.3232 -5.544 8.5968 -4.9968C8.712 -4.7808 8.784 -4.6656 8.784 -4.3632C8.784 -4.176 8.7408 -3.9744 8.7264 -3.8016C8.568 -2.304 7.5456 -1.224 6.0192 -1.224C5.1408 -1.224 4.4064 -1.512 3.7296 -1.872C3.6288 -1.9296 3.5424 -2.0016 3.4416 -2.0448Z"/>
- <path id="g119" d="M7.5312 -10.0512C7.0128 -9.7632 6.4512 -9.648 5.8896 -9.648C5.4864 -9.648 5.1408 -9.7056 4.8096 -9.7776C4.7232 -9.792 4.608 -9.8352 4.5072 -9.8352S4.3056 -9.7632 4.2336 -9.7344L3.7872 -9.504C3.384 -9.3024 2.5632 -8.9136 2.232 -8.6688C0.8928 -7.7328 0.1584 -6.0768 0.1584 -4.4352C0.1584 -2.6784 0.9936 -1.3536 2.0736 -0.576C2.6928 -0.1296 3.5424 0.2016 4.5216 0.2016C6.3936 0.2016 8.2656 -0.9216 8.2656 -2.7216C8.1504 -2.6352 8.0496 -2.52 7.9344 -2.4192C7.2432 -1.8288 6.2208 -1.368 5.1264 -1.368C4.3776 -1.368 3.7296 -1.5984 3.2112 -1.9008C3.0672 -1.9872 2.9376 -2.1024 2.7936 -2.1744V-2.2032C3.3552 -2.5632 3.9168 -2.9376 4.4496 -3.3264L4.4784 -3.7152V-8.1648C5.0256 -8.0496 5.9328 -7.8912 6.4944 -7.8912C6.696 -7.8912 6.912 -7.92 7.0848 -8.064C7.4304 -8.352 7.488 -8.8848 7.5168 -9.3024C7.5312 -9.4752 7.5456 -9.6336 7.5456 -9.8064C7.5456 -9.8928 7.5456 -9.9792 7.5312 -10.0512ZM2.7936 -8.5824V-3.2976V-3.0672C2.7936 -2.7504 2.6784 -2.6208 2.52 -2.4336C1.8 -3.1536 1.2384 -4.1328 1.2384 -5.4432C1.2384 -6.8256 1.872 -8.0928 2.7936 -8.5824Z"/>
- <use id="g120" transform="scale(1.2)" xlink:href="#g2"/>
- <use id="g121" transform="scale(1.2)" xlink:href="#g50"/>
- <use id="g122" transform="scale(1.2)" xlink:href="#g68"/>
- <use id="g123" transform="scale(1.2)" xlink:href="#g67"/>
- <use id="g124" transform="scale(1.2)" xlink:href="#g117"/>
- <use id="g125" transform="scale(1.2)" xlink:href="#g37"/>
- <use id="g126" transform="scale(1.2)" xlink:href="#g90"/>
- <use id="g127" transform="scale(1.2)" xlink:href="#g116"/>
- <use id="g128" transform="scale(1.2)" xlink:href="#g109"/>
- <use id="g129" transform="scale(1.2)" xlink:href="#g21"/>
- <use id="g130" transform="scale(1.2)" xlink:href="#g69"/>
- <use id="g131" transform="scale(1.2)" xlink:href="#g16"/>
- <use id="g132" transform="scale(1.2)" xlink:href="#g86"/>
- <use id="g133" transform="scale(1.2)" xlink:href="#g63"/>
- <use id="g134" transform="scale(1.2)" xlink:href="#g94"/>
- <use id="g135" transform="scale(1.2)" xlink:href="#g4"/>
- <use id="g136" transform="scale(1.2)" xlink:href="#g93"/>
- <use id="g137" transform="scale(1.2)" xlink:href="#g30"/>
- <use id="g138" transform="scale(1.2)" xlink:href="#g36"/>
- <use id="g139" transform="scale(1.2)" xlink:href="#g29"/>
- <use id="g140" transform="scale(1.2)" xlink:href="#g31"/>
- <use id="g141" transform="scale(1.2)" xlink:href="#g39"/>
- <use id="g142" transform="scale(1.2)" xlink:href="#g92"/>
- <use id="g143" transform="scale(1.2)" xlink:href="#g15"/>
- <use id="g144" transform="scale(1.2)" xlink:href="#g34"/>
- <use id="g145" transform="scale(1.2)" xlink:href="#g42"/>
- <use id="g146" transform="scale(1.2)" xlink:href="#g6"/>
- <use id="g147" transform="scale(1.2)" xlink:href="#g13"/>
- <use id="g148" transform="scale(1.2)" xlink:href="#g47"/>
- <use id="g149" transform="scale(1.2)" xlink:href="#g49"/>
- <use id="g150" transform="scale(1.2)" xlink:href="#g24"/>
- <use id="g151" transform="scale(1.2)" xlink:href="#g38"/>
- <use id="g152" transform="scale(1.2)" xlink:href="#g54"/>
- <use id="g153" transform="scale(1.2)" xlink:href="#g3"/>
- <use id="g154" transform="scale(1.2)" xlink:href="#g88"/>
- <use id="g155" transform="scale(1.2)" xlink:href="#g85"/>
- <use id="g156" transform="scale(1.2)" xlink:href="#g104"/>
- <use id="g157" transform="scale(1.2)" xlink:href="#g14"/>
- <use id="g158" transform="scale(1.2)" xlink:href="#g35"/>
- <use id="g159" transform="scale(1.2)" xlink:href="#g102"/>
- <use id="g160" transform="scale(1.2)" xlink:href="#g103"/>
- <use id="g161" transform="scale(1.20026)" xlink:href="#g71"/>
- </defs>
- <g id="page1" transform="matrix(0.996 0 0 0.996 0 0)">
- <use x="-13.4527" xlink:href="#g87" y="63.84"/>
- <use x="-2.82872" xlink:href="#g81" y="63.84"/>
- <use x="2.30009" xlink:href="#g44" y="63.84"/>
- <use x="7.26012" xlink:href="#g45" y="63.84"/>
- <use x="12.2201" xlink:href="#g43" y="63.84"/>
- <use x="19.8201" xlink:href="#g43" y="63.84"/>
- <use x="27.4202" xlink:href="#g46" y="63.84"/>
- <use x="36.7806" xlink:href="#g89" y="63.84"/>
- <use x="39.8918" xlink:href="#g64" y="63.84"/>
- <use x="42.523" xlink:href="#g22" y="63.84"/>
- <use x="52.2923" xlink:href="#g89" y="63.84"/>
- <use x="56.2035" xlink:href="#g83" y="63.84"/>
- <use x="60.6082" xlink:href="#g43" y="63.84"/>
- <use x="68.2083" xlink:href="#g55" y="63.84"/>
- <use x="76.217" xlink:href="#g100" y="63.84"/>
- <use x="85.0487" xlink:href="#g59" y="63.84"/>
- <use x="90.2311" xlink:href="#g26" y="63.84"/>
- <use x="93.2535" xlink:href="#g64" y="63.84"/>
- <use x="95.8847" xlink:href="#g83" y="63.84"/>
- <use x="100.289" xlink:href="#g44" y="63.84"/>
- <use x="105.25" xlink:href="#g59" y="63.84"/>
- <use x="114.912" xlink:href="#g59" y="63.84"/>
- <use x="120.095" xlink:href="#g45" y="63.84"/>
- <use x="125.055" xlink:href="#g22" y="63.84"/>
- <use x="130.344" xlink:href="#g64" y="63.84"/>
- <use x="132.975" xlink:href="#g7" y="63.84"/>
- <use x="136.286" xlink:href="#g81" y="63.84"/>
- <use x="141.415" xlink:href="#g100" y="63.84"/>
- <use x="145.766" xlink:href="#g45" y="63.84"/>
- <use x="150.726" xlink:href="#g43" y="63.84"/>
- <use x="162.806" xlink:href="#g26" y="63.84"/>
- <use x="165.829" xlink:href="#g81" y="63.84"/>
- <use x="170.958" xlink:href="#g100" y="63.84"/>
- <use x="175.309" xlink:href="#g83" y="63.84"/>
- <use x="179.714" xlink:href="#g43" y="63.84"/>
- <use x="191.794" xlink:href="#g64" y="63.84"/>
- <use x="194.425" xlink:href="#g56" y="63.84"/>
- <use x="199.714" xlink:href="#g89" y="63.84"/>
- <use x="203.625" xlink:href="#g45" y="63.84"/>
- <use x="208.585" xlink:href="#g43" y="63.84"/>
- <use x="220.666" xlink:href="#g82" y="63.84"/>
- <use x="225.715" xlink:href="#g45" y="63.84"/>
- <use x="230.675" xlink:href="#g81" y="63.84"/>
- <use x="235.803" xlink:href="#g22" y="63.84"/>
- <use x="245.573" xlink:href="#g81" y="63.84"/>
- <use x="250.701" xlink:href="#g43" y="63.84"/>
- <use x="258.301" xlink:href="#g44" y="63.84"/>
- <use x="263.262" xlink:href="#g64" y="63.84"/>
- <use x="265.893" xlink:href="#g59" y="63.84"/>
- <use x="-13.4527" xlink:href="#g89" y="77.6107"/>
- <use x="-9.54154" xlink:href="#g45" y="77.6107"/>
- <use x="-4.58152" xlink:href="#g44" y="77.6107"/>
- <use x="0.378502" xlink:href="#g7" y="77.6107"/>
- <use x="9.1006" xlink:href="#g55" y="77.6107"/>
- <use x="17.1094" xlink:href="#g75" y="77.6107"/>
- <use x="20.9542" xlink:href="#g75" y="77.6107"/>
- <use x="24.799" xlink:href="#g59" y="77.6107"/>
- <use x="29.9814" xlink:href="#g7" y="77.6107"/>
- <use x="33.2926" xlink:href="#g81" y="77.6107"/>
- <use x="38.4214" xlink:href="#g100" y="77.6107"/>
- <use x="42.7726" xlink:href="#g83" y="77.6107"/>
- <use x="47.1774" xlink:href="#g111" y="77.6107"/>
- <use x="52.5374" xlink:href="#g70" y="77.6107"/>
- <use x="61.9483" xlink:href="#g48" y="77.6107"/>
- <use x="71.3643" xlink:href="#g81" y="77.6107"/>
- <use x="76.4931" xlink:href="#g100" y="77.6107"/>
- <use x="80.8443" xlink:href="#g83" y="77.6107"/>
- <use x="85.2491" xlink:href="#g43" y="77.6107"/>
- <use x="98.26" xlink:href="#g64" y="77.6107"/>
- <use x="100.891" xlink:href="#g56" y="77.6107"/>
- <use x="106.18" xlink:href="#g89" y="77.6107"/>
- <use x="110.091" xlink:href="#g45" y="77.6107"/>
- <use x="115.051" xlink:href="#g43" y="77.6107"/>
- <use x="128.062" xlink:href="#g23" y="77.6107"/>
- <use x="136.551" xlink:href="#g26" y="77.6107"/>
- <use x="139.573" xlink:href="#g81" y="77.6107"/>
- <use x="144.702" xlink:href="#g100" y="77.6107"/>
- <use x="154.464" xlink:href="#g89" y="77.6107"/>
- <use x="157.576" xlink:href="#g64" y="77.6107"/>
- <use x="160.207" xlink:href="#g7" y="77.6107"/>
- <use x="168.929" xlink:href="#g59" y="77.6107"/>
- <use x="174.111" xlink:href="#g43" y="77.6107"/>
- <use x="181.711" xlink:href="#g83" y="77.6107"/>
- <use x="186.116" xlink:href="#g7" y="77.6107"/>
- <use x="194.838" xlink:href="#g75" y="77.6107"/>
- <use x="198.683" xlink:href="#g81" y="77.6107"/>
- <use x="203.812" xlink:href="#g44" y="77.6107"/>
- <use x="214.183" xlink:href="#g89" y="77.6107"/>
- <use x="218.094" xlink:href="#g83" y="77.6107"/>
- <use x="222.499" xlink:href="#g77" y="77.6107"/>
- <use x="228.89" xlink:href="#g83" y="77.6107"/>
- <use x="233.295" xlink:href="#g7" y="77.6107"/>
- <use x="236.606" xlink:href="#g45" y="77.6107"/>
- <use x="241.566" xlink:href="#g83" y="77.6107"/>
- <use x="245.971" xlink:href="#g100" y="77.6107"/>
- <use x="255.733" xlink:href="#g59" y="77.6107"/>
- <use x="260.915" xlink:href="#g22" y="77.6107"/>
- <use x="266.204" xlink:href="#g64" y="77.6107"/>
- <use x="268.835" xlink:href="#g72" y="77.6107"/>
- <use x="-13.4527" xlink:href="#g56" y="91.3815"/>
- <use x="-8.16395" xlink:href="#g64" y="91.3815"/>
- <use x="-5.53273" xlink:href="#g89" y="91.3815"/>
- <use x="-1.62153" xlink:href="#g75" y="91.3815"/>
- <use x="2.22327" xlink:href="#g64" y="91.3815"/>
- <use x="4.8545" xlink:href="#g44" y="91.3815"/>
- <use x="9.81452" xlink:href="#g17" y="91.3815"/>
- <use x="20.5198" xlink:href="#g83" y="91.3815"/>
- <use x="24.9246" xlink:href="#g26" y="91.3815"/>
- <use x="27.947" xlink:href="#g64" y="91.3815"/>
- <use x="30.5783" xlink:href="#g7" y="91.3815"/>
- <use x="33.8895" xlink:href="#g70" y="91.3815"/>
- <use x="42.39" xlink:href="#g52" y="91.3815"/>
- <use x="52.614" xlink:href="#g83" y="91.3815"/>
- <use x="57.0188" xlink:href="#g22" y="91.3815"/>
- <use x="66.8081" xlink:href="#g22" y="91.3815"/>
- <use x="72.0969" xlink:href="#g64" y="91.3815"/>
- <use x="74.7281" xlink:href="#g59" y="91.3815"/>
- <use x="79.9105" xlink:href="#g43" y="91.3815"/>
- <use x="92.0111" xlink:href="#g7" y="91.3815"/>
- <use x="95.3223" xlink:href="#g83" y="91.3815"/>
- <use x="99.727" xlink:href="#g43" y="91.3815"/>
- <use x="107.327" xlink:href="#g57" y="91.3815"/>
- <use x="115.816" xlink:href="#g100" y="91.3815"/>
- <use x="124.668" xlink:href="#g64" y="91.3815"/>
- <use x="127.299" xlink:href="#g44" y="91.3815"/>
- <use x="132.259" xlink:href="#g75" y="91.3815"/>
- <use x="136.104" xlink:href="#g64" y="91.3815"/>
- <use x="138.735" xlink:href="#g22" y="91.3815"/>
- <use x="144.024" xlink:href="#g45" y="91.3815"/>
- <use x="148.984" xlink:href="#g44" y="91.3815"/>
- <use x="153.944" xlink:href="#g7" y="91.3815"/>
- <use x="161.755" xlink:href="#g45" y="91.3815"/>
- <use x="166.715" xlink:href="#g7" y="91.3815"/>
- <use x="174.527" xlink:href="#g26" y="91.3815"/>
- <use x="177.55" xlink:href="#g59" y="91.3815"/>
- <use x="182.732" xlink:href="#g1" y="91.3815"/>
- <use x="190.981" xlink:href="#g100" y="91.3815"/>
- <use x="195.332" xlink:href="#g83" y="91.3815"/>
- <use x="204.237" xlink:href="#g83" y="91.3815"/>
- <use x="208.642" xlink:href="#g7" y="91.3815"/>
- <use x="216.454" xlink:href="#g23" y="91.3815"/>
- <use x="224.943" xlink:href="#g26" y="91.3815"/>
- <use x="227.965" xlink:href="#g81" y="91.3815"/>
- <use x="233.094" xlink:href="#g100" y="91.3815"/>
- <use x="241.946" xlink:href="#g43" y="91.3815"/>
- <use x="249.546" xlink:href="#g59" y="91.3815"/>
- <use x="254.728" xlink:href="#g17" y="91.3815"/>
- <use x="260.933" xlink:href="#g44" y="91.3815"/>
- <use x="265.893" xlink:href="#g59" y="91.3815"/>
- <use x="-13.4527" xlink:href="#g59" y="105.043"/>
- <use x="-8.27034" xlink:href="#g26" y="105.043"/>
- <use x="-5.24794" xlink:href="#g64" y="105.043"/>
- <use x="-2.61671" xlink:href="#g82" y="105.043"/>
- <use x="2.43208" xlink:href="#g45" y="105.043"/>
- <use x="7.3921" xlink:href="#g59" y="105.043"/>
- <use x="12.5745" xlink:href="#g43" y="105.043"/>
- <use x="24.7919" xlink:href="#g83" y="105.043"/>
- <use x="29.1967" xlink:href="#g100" y="105.043"/>
- <use x="33.5479" xlink:href="#g59" y="105.043"/>
- <use x="38.7303" xlink:href="#g7" y="105.043"/>
- <use x="46.6589" xlink:href="#g28" y="105.043"/>
- <use x="51.9477" xlink:href="#g81" y="105.043"/>
- <use x="57.0765" xlink:href="#g26" y="105.043"/>
- <use x="60.0989" xlink:href="#g45" y="105.043"/>
- <use x="65.0589" xlink:href="#g58" y="105.043"/>
- <use x="73.8677" xlink:href="#g7" y="105.043"/>
- <use x="81.7963" xlink:href="#g45" y="105.043"/>
- <use x="86.7563" xlink:href="#g7" y="105.043"/>
- <use x="94.6849" xlink:href="#g32" y="105.043"/>
- <use x="103.005" xlink:href="#g64" y="105.043"/>
- <use x="105.636" xlink:href="#g89" y="105.043"/>
- <use x="108.747" xlink:href="#g64" y="105.043"/>
- <use x="115.996" xlink:href="#g83" y="105.043"/>
- <use x="120.401" xlink:href="#g44" y="105.043"/>
- <use x="125.361" xlink:href="#g64" y="105.043"/>
- <use x="127.992" xlink:href="#g43" y="105.043"/>
- <use x="140.209" xlink:href="#g59" y="105.043"/>
- <use x="145.392" xlink:href="#g22" y="105.043"/>
- <use x="155.298" xlink:href="#g43" y="105.043"/>
- <use x="162.898" xlink:href="#g64" y="105.043"/>
- <use x="165.529" xlink:href="#g44" y="105.043"/>
- <use x="170.489" xlink:href="#g64" y="105.043"/>
- <use x="173.12" xlink:href="#g43" y="105.043"/>
- <use x="185.338" xlink:href="#g27" y="105.043"/>
- <use x="193.347" xlink:href="#g44" y="105.043"/>
- <use x="198.307" xlink:href="#g64" y="105.043"/>
- <use x="200.938" xlink:href="#g59" y="105.043"/>
- <use x="206.12" xlink:href="#g43" y="105.043"/>
- <use x="218.338" xlink:href="#g82" y="105.043"/>
- <use x="223.386" xlink:href="#g45" y="105.043"/>
- <use x="228.346" xlink:href="#g64" y="105.043"/>
- <use x="230.978" xlink:href="#g111" y="105.043"/>
- <use x="240.955" xlink:href="#g44" y="105.043"/>
- <use x="245.915" xlink:href="#g81" y="105.043"/>
- <use x="251.044" xlink:href="#g84" y="105.043"/>
- <use x="256.475" xlink:href="#g100" y="105.043"/>
- <use x="260.826" xlink:href="#g45" y="105.043"/>
- <use x="265.786" xlink:href="#g22" y="105.043"/>
- <use x="-13.4527" xlink:href="#g81" y="118.705"/>
- <use x="-8.32393" xlink:href="#g40" y="118.705"/>
- <use x="-3.03514" xlink:href="#g26" y="118.705"/>
- <use x="-0.0127346" xlink:href="#g59" y="118.705"/>
- <use x="5.16967" xlink:href="#g7" y="118.705"/>
- <use x="8.48086" xlink:href="#g64" y="118.705"/>
- <use x="11.1121" xlink:href="#g81" y="118.705"/>
- <use x="16.2409" xlink:href="#g44" y="118.705"/>
- <use x="21.2009" xlink:href="#g83" y="118.705"/>
- <use x="25.6057" xlink:href="#g43" y="118.705"/>
- <use x="38.0057" xlink:href="#g75" y="118.705"/>
- <use x="41.8505" xlink:href="#g81" y="118.705"/>
- <use x="46.9793" xlink:href="#g100" y="118.705"/>
- <use x="51.3305" xlink:href="#g57" y="118.705"/>
- <use x="59.8193" xlink:href="#g100" y="118.705"/>
- <use x="64.1705" xlink:href="#g83" y="118.705"/>
- <use x="68.5753" xlink:href="#g43" y="118.705"/>
- <use x="76.1753" xlink:href="#g82" y="118.705"/>
- <use x="81.2241" xlink:href="#g45" y="118.705"/>
- <use x="86.1842" xlink:href="#g83" y="118.705"/>
- <use x="95.3889" xlink:href="#g89" y="118.705"/>
- <use x="99.3001" xlink:href="#g45" y="118.705"/>
- <use x="104.26" xlink:href="#g89" y="118.705"/>
- <use x="108.171" xlink:href="#g75" y="118.705"/>
- <use x="112.016" xlink:href="#g64" y="118.705"/>
- <use x="114.647" xlink:href="#g56" y="118.705"/>
- <use x="119.936" xlink:href="#g64" y="118.705"/>
- <use x="122.567" xlink:href="#g7" y="118.705"/>
- <use x="130.679" xlink:href="#g26" y="118.705"/>
- <use x="133.701" xlink:href="#g59" y="118.705"/>
- <use x="138.883" xlink:href="#g1" y="118.705"/>
- <use x="147.132" xlink:href="#g100" y="118.705"/>
- <use x="151.483" xlink:href="#g64" y="118.705"/>
- <use x="154.115" xlink:href="#g111" y="118.705"/>
- <use x="-13.4527" xlink:href="#g161" y="249.832"/>
- <use x="47.1072" xlink:href="#g138" y="203.607"/>
- <use x="50.0585" xlink:href="#g134" y="203.607"/>
- <use x="59.8848" xlink:href="#g118" y="203.607"/>
- <use x="70.3073" xlink:href="#g61" y="203.607"/>
- <use x="75.5377" xlink:href="#g112" y="203.607"/>
- <use x="82.4801" xlink:href="#g106" y="203.607"/>
- <use x="87.0161" xlink:href="#g8" y="203.607"/>
- <use x="90.7353" xlink:href="#g121" y="203.607"/>
- <use x="100.968" xlink:href="#g133" y="203.607"/>
- <use x="105.852" xlink:href="#g134" y="203.607"/>
- <use x="110.086" xlink:href="#g145" y="203.607"/>
- <use x="120.362" xlink:href="#g80" y="203.607"/>
- <use x="128.702" xlink:href="#g8" y="203.607"/>
- <use x="132.422" xlink:href="#g113" y="203.607"/>
- <use x="139.101" xlink:href="#g112" y="203.607"/>
- <use x="146.043" xlink:href="#g106" y="203.607"/>
- <use x="150.579" xlink:href="#g8" y="203.607"/>
- <use x="154.298" xlink:href="#g121" y="203.607"/>
- <use x="164.531" xlink:href="#g133" y="203.607"/>
- <use x="169.415" xlink:href="#g130" y="203.607"/>
- <use x="174.677" xlink:href="#g158" y="203.607"/>
- <use x="185.621" xlink:href="#g80" y="203.607"/>
- <use x="193.961" xlink:href="#g101" y="203.607"/>
- <use x="200.64" xlink:href="#g61" y="203.607"/>
- <use x="205.871" xlink:href="#g79" y="203.607"/>
- <use x="210.799" xlink:href="#g106" y="203.607"/>
- <use x="215.335" xlink:href="#g62" y="203.607"/>
- <use x="222.256" xlink:href="#g76" y="203.607"/>
- <use x="225.856" xlink:href="#g110" y="203.607"/>
- <use x="231.81" xlink:href="#g60" y="203.607"/>
- <use x="238.55" xlink:href="#g101" y="203.607"/>
- <use x="250.822" xlink:href="#g148" y="203.607"/>
- <use x="256.911" xlink:href="#g142" y="203.607"/>
- <use x="262.489" xlink:href="#g133" y="203.607"/>
- <use x="272.965" xlink:href="#g133" y="203.607"/>
- <use x="277.849" xlink:href="#g130" y="203.607"/>
- <use x="283.112" xlink:href="#g158" y="203.607"/>
- <use x="294.055" xlink:href="#g119" y="203.607"/>
- <use x="302.576" xlink:href="#g8" y="203.607"/>
- <use x="306.295" xlink:href="#g110" y="203.607"/>
- <use x="312.25" xlink:href="#g18" y="203.607"/>
- <use x="319.291" xlink:href="#g76" y="203.607"/>
- <use x="322.892" xlink:href="#g107" y="203.607"/>
- <use x="327.337" xlink:href="#g101" y="203.607"/>
- <use x="334.016" xlink:href="#g61" y="203.607"/>
- <use x="339.247" xlink:href="#g74" y="203.607"/>
- <use x="351.006" xlink:href="#g146" y="203.607"/>
- <use x="353.811" xlink:href="#g138" y="203.607"/>
- <use x="356.763" xlink:href="#g142" y="203.607"/>
- <use x="362.34" xlink:href="#g133" y="203.607"/>
- <use x="372.817" xlink:href="#g133" y="203.607"/>
- <use x="377.701" xlink:href="#g138" y="203.607"/>
- <use x="380.652" xlink:href="#g134" y="203.607"/>
- <use x="47.1072" xlink:href="#g136" y="219.015"/>
- <use x="52.7516" xlink:href="#g134" y="219.015"/>
- <use x="56.9855" xlink:href="#g131" y="219.015"/>
- <use x="61.892" xlink:href="#g145" y="219.015"/>
- <use x="66.576" xlink:href="#g156" y="219.015"/>
- <use x="71.8383" xlink:href="#g148" y="219.015"/>
- <use x="77.9274" xlink:href="#g155" y="219.015"/>
- <use x="85.2962" xlink:href="#g140" y="219.015"/>
- <use x="88.3362" xlink:href="#g138" y="219.015"/>
- <use x="91.2875" xlink:href="#g155" y="219.015"/>
- <use x="98.6563" xlink:href="#g154" y="219.015"/>
- <use x="104.256" xlink:href="#g134" y="219.015"/>
- <use x="108.49" xlink:href="#g142" y="219.015"/>
- <use x="118.515" xlink:href="#g126" y="219.015"/>
- <use x="127.48" xlink:href="#g140" y="219.015"/>
- <use x="130.52" xlink:href="#g130" y="219.015"/>
- <use x="135.782" xlink:href="#g149" y="219.015"/>
- <use x="141.311" xlink:href="#g138" y="219.015"/>
- <use x="144.262" xlink:href="#g134" y="219.015"/>
- <use x="148.496" xlink:href="#g145" y="219.015"/>
- <use x="153.18" xlink:href="#g138" y="219.015"/>
- <use x="156.131" xlink:href="#g142" y="219.015"/>
- <use x="161.709" xlink:href="#g154" y="219.015"/>
- <use x="167.309" xlink:href="#g145" y="219.015"/>
- <use x="171.993" xlink:href="#g148" y="219.015"/>
- <use x="178.082" xlink:href="#g141" y="219.015"/>
- <use x="186.388" xlink:href="#g134" y="219.015"/>
- <use x="190.622" xlink:href="#g142" y="219.015"/>
- <use x="196.2" xlink:href="#g147" y="219.015"/>
- <use x="199.355" xlink:href="#g134" y="219.015"/>
- <use x="208.036" xlink:href="#g152" y="219.015"/>
- <use x="212.342" xlink:href="#g148" y="219.015"/>
- <use x="218.431" xlink:href="#g141" y="219.015"/>
- <use x="231.184" xlink:href="#g124" y="219.015"/>
- <use x="239.441" xlink:href="#g132" y="219.015"/>
- <use x="243.415" xlink:href="#g132" y="219.015"/>
- <use x="247.388" xlink:href="#g143" y="219.015"/>
- <use x="252.362" xlink:href="#g141" y="219.015"/>
- <use x="260.668" xlink:href="#g144" y="219.015"/>
- <use x="266.286" xlink:href="#g130" y="219.015"/>
- <use x="271.548" xlink:href="#g136" y="219.015"/>
- <use x="277.193" xlink:href="#g142" y="219.015"/>
- <use x="282.771" xlink:href="#g134" y="219.015"/>
- <use x="287.004" xlink:href="#g141" y="219.015"/>
- <use x="295.31" xlink:href="#g134" y="219.015"/>
- <use x="299.544" xlink:href="#g142" y="219.015"/>
- <use x="305.122" xlink:href="#g147" y="219.015"/>
- <use x="308.277" xlink:href="#g122" y="219.015"/>
- <use x="317.364" xlink:href="#g127" y="219.015"/>
- <use x="324.811" xlink:href="#g158" y="219.015"/>
- <use x="334.609" xlink:href="#g138" y="219.015"/>
- <use x="337.56" xlink:href="#g154" y="219.015"/>
- <use x="347.607" xlink:href="#g128" y="219.015"/>
- <use x="358.497" xlink:href="#g155" y="219.015"/>
- <use x="365.866" xlink:href="#g130" y="219.015"/>
- <use x="371.128" xlink:href="#g133" y="219.015"/>
- <use x="376.012" xlink:href="#g134" y="219.015"/>
- <use x="380.246" xlink:href="#g121" y="219.015"/>
- <use x="47.1072" xlink:href="#g133" y="234.424"/>
- <use x="51.9913" xlink:href="#g130" y="234.424"/>
- <use x="57.2536" xlink:href="#g120" y="234.424"/>
- <use x="68.1032" xlink:href="#g133" y="234.424"/>
- <use x="72.9873" xlink:href="#g138" y="234.424"/>
- <use x="75.9385" xlink:href="#g134" y="234.424"/>
- <use x="85.8667" xlink:href="#g146" y="234.424"/>
- <use x="88.3523" xlink:href="#g155" y="234.424"/>
- <use x="95.7212" xlink:href="#g159" y="234.424"/>
- <use x="100.695" xlink:href="#g142" y="234.424"/>
- <use x="106.272" xlink:href="#g134" y="234.424"/>
- <use x="116.201" xlink:href="#g127" y="234.424"/>
- <use x="123.647" xlink:href="#g145" y="234.424"/>
- <use x="128.331" xlink:href="#g135" y="234.424"/>
- <use x="131.682" xlink:href="#g138" y="234.424"/>
- <use x="134.634" xlink:href="#g142" y="234.424"/>
- <use x="140.211" xlink:href="#g133" y="234.424"/>
- <use x="145.095" xlink:href="#g148" y="234.424"/>
- <use x="151.185" xlink:href="#g142" y="234.424"/>
- <use x="156.762" xlink:href="#g136" y="234.424"/>
- <use x="168.101" xlink:href="#g133" y="234.424"/>
- <use x="172.985" xlink:href="#g134" y="234.424"/>
- <use x="177.219" xlink:href="#g158" y="234.424"/>
- <use x="188.265" xlink:href="#g115" y="234.424"/>
- <use x="198.053" xlink:href="#g101" y="234.424"/>
- <use x="204.733" xlink:href="#g8" y="234.424"/>
- <use x="207.772" xlink:href="#g10" y="234.424"/>
- <use x="212.106" xlink:href="#g106" y="234.424"/>
- <use x="216.642" xlink:href="#g8" y="234.424"/>
- <use x="220.361" xlink:href="#g74" y="234.424"/>
- <use x="226.528" xlink:href="#g76" y="234.424"/>
- <use x="230.128" xlink:href="#g11" y="234.424"/>
- <use x="233.494" xlink:href="#g105" y="234.424"/>
- <use x="243.208" xlink:href="#g106" y="234.424"/>
- <use x="247.744" xlink:href="#g60" y="234.424"/>
- <use x="260.178" xlink:href="#g41" y="234.424"/>
- <use x="271.627" xlink:href="#g101" y="234.424"/>
- <use x="278.306" xlink:href="#g112" y="234.424"/>
- <use x="285.249" xlink:href="#g106" y="234.424"/>
- <use x="289.785" xlink:href="#g60" y="234.424"/>
- <use x="296.525" xlink:href="#g107" y="234.424"/>
- <use x="300.971" xlink:href="#g8" y="234.424"/>
- <use x="304.69" xlink:href="#g110" y="234.424"/>
- <use x="310.644" xlink:href="#g18" y="234.424"/>
- <use x="317.686" xlink:href="#g76" y="234.424"/>
- <use x="321.286" xlink:href="#g106" y="234.424"/>
- <use x="325.822" xlink:href="#g61" y="234.424"/>
- <use x="331.052" xlink:href="#g9" y="234.424"/>
- <use x="342.219" xlink:href="#g142" y="234.424"/>
- <use x="347.796" xlink:href="#g143" y="234.424"/>
- <use x="352.77" xlink:href="#g155" y="234.424"/>
- <use x="365.833" xlink:href="#g142" y="234.424"/>
- <use x="371.411" xlink:href="#g138" y="234.424"/>
- <use x="374.362" xlink:href="#g155" y="234.424"/>
- <use x="381.731" xlink:href="#g147" y="234.424"/>
- <use x="47.1072" xlink:href="#g136" y="249.832"/>
- <use x="52.7516" xlink:href="#g134" y="249.832"/>
- <use x="56.9855" xlink:href="#g141" y="249.832"/>
- <use x="65.2916" xlink:href="#g134" y="249.832"/>
- <use x="69.5254" xlink:href="#g138" y="249.832"/>
- <use x="72.4767" xlink:href="#g142" y="249.832"/>
- <use x="78.0545" xlink:href="#g142" y="249.832"/>
- <use x="83.6324" xlink:href="#g160" y="249.832"/>
- <use x="89.7215" xlink:href="#g157" y="249.832"/>
- <use x="94.9615" xlink:href="#g138" y="249.832"/>
- <use x="97.9127" xlink:href="#g136" y="249.832"/>
- <use x="110.524" xlink:href="#g136" y="249.832"/>
- <use x="116.169" xlink:href="#g134" y="249.832"/>
- <use x="120.403" xlink:href="#g150" y="249.832"/>
- <use x="127.869" xlink:href="#g143" y="249.832"/>
- <use x="132.843" xlink:href="#g145" y="249.832"/>
- <use x="137.527" xlink:href="#g133" y="249.832"/>
- <use x="142.411" xlink:href="#g134" y="249.832"/>
- <use x="146.645" xlink:href="#g142" y="249.832"/>
- <use x="159.19" xlink:href="#g138" y="249.832"/>
- <use x="162.141" xlink:href="#g154" y="249.832"/>
- <use x="167.741" xlink:href="#g123" y="249.832"/>
- <use x="179.348" xlink:href="#g141" y="249.832"/>
- <use x="187.654" xlink:href="#g130" y="249.832"/>
- <use x="192.917" xlink:href="#g142" y="249.832"/>
- <use x="205.462" xlink:href="#g139" y="249.832"/>
- <use x="209.191" xlink:href="#g130" y="249.832"/>
- <use x="214.453" xlink:href="#g142" y="249.832"/>
- <use x="220.031" xlink:href="#g142" y="249.832"/>
- <use x="232.576" xlink:href="#g133" y="249.832"/>
- <use x="237.46" xlink:href="#g130" y="249.832"/>
- <use x="242.722" xlink:href="#g137" y="249.832"/>
- <use x="247.74" xlink:href="#g134" y="249.832"/>
- <use x="251.974" xlink:href="#g145" y="249.832"/>
- <use x="256.658" xlink:href="#g143" y="249.832"/>
- <use x="268.599" xlink:href="#g133" y="249.832"/>
- <use x="273.483" xlink:href="#g134" y="249.832"/>
- <use x="277.717" xlink:href="#g153" y="249.832"/>
- <use x="282.113" xlink:href="#g134" y="249.832"/>
- <use x="286.347" xlink:href="#g142" y="249.832"/>
- <use x="298.893" xlink:href="#g131" y="249.832"/>
- <use x="303.799" xlink:href="#g134" y="249.832"/>
- <use x="308.033" xlink:href="#g146" y="249.832"/>
- <use x="310.519" xlink:href="#g143" y="249.832"/>
- <use x="315.492" xlink:href="#g142" y="249.832"/>
- <use x="321.07" xlink:href="#g133" y="249.832"/>
- <use x="325.954" xlink:href="#g134" y="249.832"/>
- <use x="330.188" xlink:href="#g145" y="249.832"/>
- <use x="334.872" xlink:href="#g134" y="249.832"/>
- <use x="346.073" xlink:href="#g129" y="249.832"/>
- <use x="354.955" xlink:href="#g143" y="249.832"/>
- <use x="359.929" xlink:href="#g145" y="249.832"/>
- <use x="364.613" xlink:href="#g152" y="249.832"/>
- <use x="368.919" xlink:href="#g160" y="249.832"/>
- <use x="375.008" xlink:href="#g136" y="249.832"/>
- <use x="380.652" xlink:href="#g134" y="249.832"/>
- <use x="-13.4527" xlink:href="#g137" y="265.24"/>
- <use x="-8.43511" xlink:href="#g138" y="265.24"/>
- <use x="-5.48388" xlink:href="#g134" y="265.24"/>
- <use x="-1.25" xlink:href="#g145" y="265.24"/>
- <use x="3.43402" xlink:href="#g138" y="265.24"/>
- <use x="6.38525" xlink:href="#g142" y="265.24"/>
- <use x="11.9631" xlink:href="#g142" y="265.24"/>
- <use x="17.541" xlink:href="#g134" y="265.24"/>
- <use x="21.7749" xlink:href="#g142" y="265.24"/>
- <use x="32.856" xlink:href="#g142" y="265.24"/>
- <use x="38.4339" xlink:href="#g143" y="265.24"/>
- <use x="43.4073" xlink:href="#g155" y="265.24"/>
- <use x="56.2794" xlink:href="#g142" y="265.24"/>
- <use x="61.8573" xlink:href="#g138" y="265.24"/>
- <use x="64.8085" xlink:href="#g155" y="265.24"/>
- <use x="72.1774" xlink:href="#g147" y="265.24"/>
- <use x="80.8359" xlink:href="#g136" y="265.24"/>
- <use x="86.4803" xlink:href="#g134" y="265.24"/>
- <use x="90.7142" xlink:href="#g142" y="265.24"/>
- <use x="96.2921" xlink:href="#g130" y="265.24"/>
- <use x="101.554" xlink:href="#g148" y="265.24"/>
- <use x="113.147" xlink:href="#g131" y="265.24"/>
- <use x="118.053" xlink:href="#g134" y="265.24"/>
- <use x="122.287" xlink:href="#g154" y="265.24"/>
- <use x="127.887" xlink:href="#g138" y="265.24"/>
- <use x="130.838" xlink:href="#g141" y="265.24"/>
- <use x="139.144" xlink:href="#g141" y="265.24"/>
- <use x="147.45" xlink:href="#g134" y="265.24"/>
- <use x="151.684" xlink:href="#g142" y="265.24"/>
- <use x="157.262" xlink:href="#g122" y="265.24"/>
- <use x="167.406" xlink:href="#g127" y="265.24"/>
- <use x="174.852" xlink:href="#g158" y="265.24"/>
- <use x="185.707" xlink:href="#g138" y="265.24"/>
- <use x="188.658" xlink:href="#g154" y="265.24"/>
- <use x="199.761" xlink:href="#g136" y="265.24"/>
- <use x="205.406" xlink:href="#g134" y="265.24"/>
- <use x="209.639" xlink:href="#g150" y="265.24"/>
- <use x="217.106" xlink:href="#g138" y="265.24"/>
- <use x="220.057" xlink:href="#g120" y="265.24"/>
- <use x="230.716" xlink:href="#g152" y="265.24"/>
- <use x="235.022" xlink:href="#g148" y="265.24"/>
- <use x="246.614" xlink:href="#g136" y="265.24"/>
- <use x="252.259" xlink:href="#g140" y="265.24"/>
- <use x="255.299" xlink:href="#g130" y="265.24"/>
- <use x="260.561" xlink:href="#g148" y="265.24"/>
- <use x="266.65" xlink:href="#g131" y="265.24"/>
- <use x="271.557" xlink:href="#g134" y="265.24"/>
- <use x="275.791" xlink:href="#g142" y="265.24"/>
- <use x="281.368" xlink:href="#g121" y="265.24"/>
- <use x="291.512" xlink:href="#g133" y="265.24"/>
- <use x="296.396" xlink:href="#g130" y="265.24"/>
- <use x="301.658" xlink:href="#g120" y="265.24"/>
- <use x="312.317" xlink:href="#g134" y="265.24"/>
- <use x="316.551" xlink:href="#g158" y="265.24"/>
- <use x="327.405" xlink:href="#g146" y="265.24"/>
- <use x="330.211" xlink:href="#g138" y="265.24"/>
- <use x="333.162" xlink:href="#g155" y="265.24"/>
- <use x="346.034" xlink:href="#g130" y="265.24"/>
- <use x="351.296" xlink:href="#g148" y="265.24"/>
- <use x="357.385" xlink:href="#g155" y="265.24"/>
- <use x="370.258" xlink:href="#g131" y="265.24"/>
- <use x="375.164" xlink:href="#g134" y="265.24"/>
- <use x="379.398" xlink:href="#g151" y="265.24"/>
- <use x="-13.4527" xlink:href="#g133" y="280.648"/>
- <use x="-8.56866" xlink:href="#g134" y="280.648"/>
- <use x="-4.33478" xlink:href="#g145" y="280.648"/>
- <use x="5.14924" xlink:href="#g125" y="280.648"/>
- <use x="15.7213" xlink:href="#g134" y="280.648"/>
- <use x="19.9552" xlink:href="#g136" y="280.648"/>
- <use x="25.5995" xlink:href="#g140" y="280.648"/>
- <use x="28.6396" xlink:href="#g134" y="280.648"/>
- <use x="32.8734" xlink:href="#g138" y="280.648"/>
- <use x="35.8247" xlink:href="#g147" y="280.648"/>
- <use x="38.9799" xlink:href="#g148" y="280.648"/>
- <use x="45.069" xlink:href="#g142" y="280.648"/>
- <use x="50.6468" xlink:href="#g136" y="280.648"/>
- <use x="61.0912" xlink:href="#g136" y="280.648"/>
- <use x="66.7356" xlink:href="#g148" y="280.648"/>
- <use x="72.8246" xlink:href="#g147" y="280.648"/>
- <use x="80.7799" xlink:href="#g130" y="280.648"/>
- <use x="86.0422" xlink:href="#g148" y="280.648"/>
- <use x="92.1312" xlink:href="#g158" y="280.648"/>
- <use x="97.4825" xlink:href="#g142" y="280.648"/>
- <use x="103.06" xlink:href="#g134" y="280.648"/>
- <use x="107.294" xlink:href="#g137" y="280.648"/>
- <use x="112.312" xlink:href="#g141" y="280.648"/>
- <use x="120.618" xlink:href="#g134" y="280.648"/>
- <use x="124.852" xlink:href="#g142" y="280.648"/>
- <use x="135.23" xlink:href="#g150" y="280.648"/>
- <use x="142.696" xlink:href="#g134" y="280.648"/>
- <use x="146.93" xlink:href="#g145" y="280.648"/>
- <use x="151.614" xlink:href="#g133" y="280.648"/>
- <use x="156.498" xlink:href="#g134" y="280.648"/>
- <use x="160.732" xlink:href="#g122" y="280.648"/>
- <use x="-13.4527" xlink:href="#g95" y="416.504"/>
- <use x="38.0278" xlink:href="#g15" y="377.984"/>
- <use x="42.1722" xlink:href="#g92" y="377.984"/>
- <use x="51.1086" xlink:href="#g63" y="377.984"/>
- <use x="55.1787" xlink:href="#g94" y="377.984"/>
- <use x="58.7069" xlink:href="#g39" y="377.984"/>
- <use x="69.9168" xlink:href="#g88" y="377.984"/>
- <use x="74.5835" xlink:href="#g69" y="377.984"/>
- <use x="78.9687" xlink:href="#g13" y="377.984"/>
- <use x="81.5981" xlink:href="#g13" y="377.984"/>
- <use x="84.2275" xlink:href="#g31" y="377.984"/>
- <use x="86.7608" xlink:href="#g36" y="377.984"/>
- <use x="89.2202" xlink:href="#g85" y="377.984"/>
- <use x="95.3609" xlink:href="#g94" y="377.984"/>
- <use x="98.8891" xlink:href="#g92" y="377.984"/>
- <use x="107.825" xlink:href="#g98" y="377.984"/>
- <use x="116.366" xlink:href="#g42" y="377.984"/>
- <use x="120.269" xlink:href="#g13" y="377.984"/>
- <use x="122.898" xlink:href="#g94" y="377.984"/>
- <use x="130.715" xlink:href="#g51" y="377.984"/>
- <use x="137.567" xlink:href="#g36" y="377.984"/>
- <use x="140.026" xlink:href="#g42" y="377.984"/>
- <use x="143.929" xlink:href="#g85" y="377.984"/>
- <use x="150.07" xlink:href="#g94" y="377.984"/>
- <use x="153.598" xlink:href="#g30" y="377.984"/>
- <use x="157.78" xlink:href="#g42" y="377.984"/>
- <use x="161.683" xlink:href="#g94" y="377.984"/>
- <use x="165.211" xlink:href="#g92" y="377.984"/>
- <use x="169.859" xlink:href="#g16" y="377.984"/>
- <use x="173.948" xlink:href="#g69" y="377.984"/>
- <use x="178.333" xlink:href="#g85" y="377.984"/>
- <use x="188.762" xlink:href="#g36" y="377.984"/>
- <use x="191.222" xlink:href="#g92" y="377.984"/>
- <use x="200.158" xlink:href="#g63" y="377.984"/>
- <use x="204.228" xlink:href="#g94" y="377.984"/>
- <use x="207.756" xlink:href="#g42" y="377.984"/>
- <use x="215.948" xlink:href="#g73" y="377.984"/>
- <use x="221.957" xlink:href="#g42" y="377.984"/>
- <use x="225.86" xlink:href="#g65" y="377.984"/>
- <use x="230.245" xlink:href="#g92" y="377.984"/>
- <use x="234.893" xlink:href="#g29" y="377.984"/>
- <use x="238.001" xlink:href="#g36" y="377.984"/>
- <use x="240.46" xlink:href="#g6" y="377.984"/>
- <use x="242.531" xlink:href="#g85" y="377.984"/>
- <use x="248.672" xlink:href="#g94" y="377.984"/>
- <use x="252.2" xlink:href="#g92" y="377.984"/>
- <use x="38.0278" xlink:href="#g109" y="390.824"/>
- <use x="47.1032" xlink:href="#g85" y="390.824"/>
- <use x="53.2439" xlink:href="#g24" y="390.824"/>
- <use x="59.466" xlink:href="#g94" y="390.824"/>
- <use x="62.9942" xlink:href="#g36" y="390.824"/>
- <use x="65.4536" xlink:href="#g54" y="390.824"/>
- <use x="72.1763" xlink:href="#g4" y="390.824"/>
- <use x="74.969" xlink:href="#g66" y="390.824"/>
- <use x="80.0433" xlink:href="#g30" y="390.824"/>
- <use x="84.2246" xlink:href="#g42" y="390.824"/>
- <use x="88.128" xlink:href="#g13" y="390.824"/>
- <use x="93.8915" xlink:href="#g94" y="390.824"/>
- <use x="97.4198" xlink:href="#g36" y="390.824"/>
- <use x="99.8791" xlink:href="#g92" y="390.824"/>
- <use x="107.662" xlink:href="#g94" y="390.824"/>
- <use x="111.19" xlink:href="#g36" y="390.824"/>
- <use x="113.649" xlink:href="#g92" y="390.824"/>
- <use x="118.297" xlink:href="#g6" y="390.824"/>
- <use x="120.369" xlink:href="#g69" y="390.824"/>
- <use x="124.754" xlink:href="#g39" y="390.824"/>
- <use x="131.676" xlink:href="#g94" y="390.824"/>
- <use x="135.204" xlink:href="#g35" y="390.824"/>
- <use x="142.798" xlink:href="#g109" y="390.824"/>
- <use x="151.873" xlink:href="#g13" y="390.824"/>
- <use x="154.502" xlink:href="#g42" y="390.824"/>
- <use x="158.406" xlink:href="#g65" y="390.824"/>
- <use x="162.791" xlink:href="#g2" y="390.824"/>
- <use x="167.087" xlink:href="#g85" y="390.824"/>
- <use x="173.228" xlink:href="#g94" y="390.824"/>
- <use x="176.756" xlink:href="#g92" y="390.824"/>
- <use x="181.404" xlink:href="#g50" y="390.824"/>
- <use x="188.405" xlink:href="#g69" y="390.824"/>
- <use x="192.79" xlink:href="#g92" y="390.824"/>
- <use x="200.573" xlink:href="#g63" y="390.824"/>
- <use x="204.643" xlink:href="#g94" y="390.824"/>
- <use x="208.171" xlink:href="#g42" y="390.824"/>
- <use x="215.209" xlink:href="#g88" y="390.824"/>
- <use x="219.875" xlink:href="#g94" y="390.824"/>
- <use x="223.403" xlink:href="#g36" y="390.824"/>
- <use x="225.863" xlink:href="#g31" y="390.824"/>
- <use x="231.53" xlink:href="#g69" y="390.824"/>
- <use x="235.916" xlink:href="#g16" y="390.824"/>
- <use x="240.004" xlink:href="#g88" y="390.824"/>
- <use x="244.671" xlink:href="#g66" y="390.824"/>
- <use x="249.745" xlink:href="#g42" y="390.824"/>
- <use x="253.649" xlink:href="#g91" y="390.824"/>
- <use x="38.0278" xlink:href="#g54" y="403.664"/>
- <use x="41.6163" xlink:href="#g94" y="403.664"/>
- <use x="45.1445" xlink:href="#g92" y="403.664"/>
- <use x="49.7928" xlink:href="#g63" y="403.664"/>
- <use x="53.8628" xlink:href="#g94" y="403.664"/>
- <use x="57.3911" xlink:href="#g92" y="403.664"/>
- <use x="65.2089" xlink:href="#g37" y="403.664"/>
- <use x="74.0189" xlink:href="#g42" y="403.664"/>
- <use x="77.9223" xlink:href="#g94" y="403.664"/>
- <use x="81.4505" xlink:href="#g36" y="403.664"/>
- <use x="83.9099" xlink:href="#g13" y="403.664"/>
- <use x="86.5392" xlink:href="#g6" y="403.664"/>
- <use x="88.6106" xlink:href="#g94" y="403.664"/>
- <use x="92.1388" xlink:href="#g36" y="403.664"/>
- <use x="94.5982" xlink:href="#g13" y="403.664"/>
- <use x="97.2275" xlink:href="#g94" y="403.664"/>
- <use x="103.925" xlink:href="#g63" y="403.664"/>
- <use x="107.995" xlink:href="#g94" y="403.664"/>
- <use x="111.524" xlink:href="#g42" y="403.664"/>
- <use x="118.597" xlink:href="#g116" y="403.664"/>
- <use x="124.802" xlink:href="#g30" y="403.664"/>
- <use x="128.983" xlink:href="#g42" y="403.664"/>
- <use x="132.887" xlink:href="#g94" y="403.664"/>
- <use x="136.415" xlink:href="#g92" y="403.664"/>
- <use x="141.063" xlink:href="#g16" y="403.664"/>
- <use x="145.152" xlink:href="#g66" y="403.664"/>
- <use x="150.226" xlink:href="#g42" y="403.664"/>
- <use x="154.13" xlink:href="#g93" y="403.664"/>
- <use x="162.003" xlink:href="#g49" y="403.664"/>
- <use x="166.61" xlink:href="#g15" y="403.664"/>
- <use x="170.754" xlink:href="#g42" y="403.664"/>
- <use x="174.658" xlink:href="#g66" y="403.664"/>
- <use x="179.732" xlink:href="#g16" y="403.664"/>
- <use x="183.821" xlink:href="#g94" y="403.664"/>
- <use x="187.349" xlink:href="#g42" y="403.664"/>
- <use x="191.252" xlink:href="#g50" y="403.664"/>
- <use x="198.289" xlink:href="#g93" y="403.664"/>
- <use x="202.992" xlink:href="#g94" y="403.664"/>
- <use x="206.52" xlink:href="#g92" y="403.664"/>
- <use x="214.338" xlink:href="#g12" y="403.664"/>
- <use x="218.959" xlink:href="#g94" y="403.664"/>
- <use x="222.487" xlink:href="#g47" y="403.664"/>
- <use x="227.561" xlink:href="#g13" y="403.664"/>
- <use x="230.191" xlink:href="#g94" y="403.664"/>
- <use x="233.719" xlink:href="#g92" y="403.664"/>
- <use x="238.367" xlink:href="#g16" y="403.664"/>
- <use x="242.456" xlink:href="#g69" y="403.664"/>
- <use x="246.841" xlink:href="#g85" y="403.664"/>
- <use x="252.982" xlink:href="#g68" y="403.664"/>
- <use x="38.0278" xlink:href="#g33" y="416.504"/>
- <use x="44.2551" xlink:href="#g92" y="416.504"/>
- <use x="51.6451" xlink:href="#g94" y="416.504"/>
- <use x="55.1734" xlink:href="#g36" y="416.504"/>
- <use x="57.6327" xlink:href="#g92" y="416.504"/>
- <use x="62.281" xlink:href="#g94" y="416.504"/>
- <use x="65.8092" xlink:href="#g42" y="416.504"/>
- <use x="72.4543" xlink:href="#g30" y="416.504"/>
- <use x="76.6357" xlink:href="#g69" y="416.504"/>
- <use x="81.021" xlink:href="#g31" y="416.504"/>
- <use x="83.5543" xlink:href="#g16" y="416.504"/>
- <use x="87.6431" xlink:href="#g94" y="416.504"/>
- <use x="91.1713" xlink:href="#g92" y="416.504"/>
- <use x="98.5613" xlink:href="#g109" y="416.504"/>
- <use x="107.637" xlink:href="#g13" y="416.504"/>
- <use x="110.266" xlink:href="#g47" y="416.504"/>
- <use x="115.34" xlink:href="#g92" y="416.504"/>
- <use x="119.988" xlink:href="#g63" y="416.504"/>
- <use x="124.059" xlink:href="#g94" y="416.504"/>
- <use x="130.329" xlink:href="#g36" y="416.504"/>
- <use x="132.788" xlink:href="#g88" y="416.504"/>
- <use x="140.196" xlink:href="#g63" y="416.504"/>
- <use x="144.266" xlink:href="#g69" y="416.504"/>
- <use x="148.652" xlink:href="#g35" y="416.504"/>
- <use x="155.853" xlink:href="#g6" y="416.504"/>
- <use x="157.924" xlink:href="#g85" y="416.504"/>
- <use x="164.065" xlink:href="#g39" y="416.504"/>
- <use x="170.987" xlink:href="#g47" y="416.504"/>
- <use x="176.061" xlink:href="#g78" y="416.504"/>
- <use x="181.128" xlink:href="#g94" y="416.504"/>
- <use x="187.398" xlink:href="#g25" y="416.504"/>
- <use x="194.252" xlink:href="#g4" y="416.504"/>
- <use x="197.045" xlink:href="#g69" y="416.504"/>
- <use x="201.43" xlink:href="#g42" y="416.504"/>
- <use x="205.334" xlink:href="#g42" y="416.504"/>
- <use x="209.237" xlink:href="#g63" y="416.504"/>
- <use x="213.307" xlink:href="#g15" y="416.504"/>
- <use x="217.452" xlink:href="#g42" y="416.504"/>
- <use x="221.355" xlink:href="#g4" y="416.504"/>
- <use x="226.889" xlink:href="#g94" y="416.504"/>
- <use x="230.418" xlink:href="#g42" y="416.504"/>
- <use x="234.321" xlink:href="#g42" y="416.504"/>
- <use x="238.224" xlink:href="#g94" y="416.504"/>
- <use x="241.753" xlink:href="#g36" y="416.504"/>
- <use x="244.212" xlink:href="#g85" y="416.504"/>
- <use x="250.353" xlink:href="#g13" y="416.504"/>
- <use x="252.982" xlink:href="#g68" y="416.504"/>
- <use x="-13.4527" xlink:href="#g109" y="429.344"/>
- <use x="-4.37736" xlink:href="#g66" y="429.344"/>
- <use x="0.696857" xlink:href="#g63" y="429.344"/>
- <use x="4.76693" xlink:href="#g53" y="429.344"/>
- <use x="8.9114" xlink:href="#g88" y="429.344"/>
- <use x="13.5781" xlink:href="#g31" y="429.344"/>
- <use x="16.1115" xlink:href="#g36" y="429.344"/>
- <use x="18.5708" xlink:href="#g85" y="429.344"/>
- <use x="29.0311" xlink:href="#g63" y="429.344"/>
- <use x="33.1012" xlink:href="#g94" y="429.344"/>
- <use x="36.6294" xlink:href="#g35" y="429.344"/>
- <use x="41.0888" xlink:href="#g6" y="429.344"/>
- <use x="43.1601" xlink:href="#g94" y="429.344"/>
- <use x="46.6884" xlink:href="#g31" y="429.344"/>
- <use x="49.2217" xlink:href="#g16" y="429.344"/>
- <use x="53.3105" xlink:href="#g94" y="429.344"/>
- <use x="56.8387" xlink:href="#g92" y="429.344"/>
- <use x="61.4869" xlink:href="#g50" y="429.344"/>
- <use x="69.6732" xlink:href="#g29" y="429.344"/>
- <use x="72.7806" xlink:href="#g69" y="429.344"/>
- <use x="77.1658" xlink:href="#g47" y="429.344"/>
- <use x="82.24" xlink:href="#g39" y="429.344"/>
- <use x="93.4813" xlink:href="#g94" y="429.344"/>
- <use x="97.0096" xlink:href="#g36" y="429.344"/>
- <use x="99.4689" xlink:href="#g92" y="429.344"/>
- <use x="104.117" xlink:href="#g94" y="429.344"/>
- <use x="111.965" xlink:href="#g21" y="429.344"/>
- <use x="119.367" xlink:href="#g36" y="429.344"/>
- <use x="121.826" xlink:href="#g94" y="429.344"/>
- <use x="125.355" xlink:href="#g42" y="429.344"/>
- <use x="129.258" xlink:href="#g13" y="429.344"/>
- <use x="131.887" xlink:href="#g94" y="429.344"/>
- <use x="135.416" xlink:href="#g31" y="429.344"/>
- <use x="137.949" xlink:href="#g88" y="429.344"/>
- <use x="142.616" xlink:href="#g47" y="429.344"/>
- <use x="147.69" xlink:href="#g92" y="429.344"/>
- <use x="152.338" xlink:href="#g63" y="429.344"/>
- <use x="156.408" xlink:href="#g94" y="429.344"/>
- <use x="164.256" xlink:href="#g94" y="429.344"/>
- <use x="167.784" xlink:href="#g92" y="429.344"/>
- <use x="172.432" xlink:href="#g13" y="429.344"/>
- <use x="175.062" xlink:href="#g4" y="429.344"/>
- <use x="177.854" xlink:href="#g94" y="429.344"/>
- <use x="181.383" xlink:href="#g42" y="429.344"/>
- <use x="185.286" xlink:href="#g92" y="429.344"/>
- <use x="189.934" xlink:href="#g13" y="429.344"/>
- <use x="192.564" xlink:href="#g50" y="429.344"/>
- <use x="200.75" xlink:href="#g13" y="429.344"/>
- <use x="203.379" xlink:href="#g42" y="429.344"/>
- <use x="207.283" xlink:href="#g94" y="429.344"/>
- <use x="210.811" xlink:href="#g5" y="429.344"/>
- <use x="215.196" xlink:href="#g94" y="429.344"/>
- <use x="218.724" xlink:href="#g92" y="429.344"/>
- <use x="227.692" xlink:href="#g24" y="429.344"/>
- <use x="233.914" xlink:href="#g36" y="429.344"/>
- <use x="236.374" xlink:href="#g42" y="429.344"/>
- <use x="244.597" xlink:href="#g69" y="429.344"/>
- <use x="248.982" xlink:href="#g47" y="429.344"/>
- <use x="254.056" xlink:href="#g4" y="429.344"/>
- <use x="-13.4527" xlink:href="#g63" y="442.184"/>
- <use x="-9.38268" xlink:href="#g94" y="442.184"/>
- <use x="-5.85444" xlink:href="#g39" y="442.184"/>
- <use x="5.37513" xlink:href="#g114" y="442.184"/>
- <use x="15.1165" xlink:href="#g94" y="442.184"/>
- <use x="18.6447" xlink:href="#g93" y="442.184"/>
- <use x="23.3484" xlink:href="#g94" y="442.184"/>
- <use x="31.1845" xlink:href="#g92" y="442.184"/>
- <use x="35.8327" xlink:href="#g69" y="442.184"/>
- <use x="40.2179" xlink:href="#g85" y="442.184"/>
- <use x="50.6665" xlink:href="#g98" y="442.184"/>
- <use x="59.2066" xlink:href="#g42" y="442.184"/>
- <use x="63.1099" xlink:href="#g13" y="442.184"/>
- <use x="65.7393" xlink:href="#g6" y="442.184"/>
- <use x="67.8106" xlink:href="#g34" y="442.184"/>
- <use x="72.4925" xlink:href="#g36" y="442.184"/>
- <use x="74.9518" xlink:href="#g14" y="442.184"/>
- <use x="83.6264" xlink:href="#g36" y="442.184"/>
- <use x="86.0857" xlink:href="#g92" y="442.184"/>
- <use x="95.0418" xlink:href="#g94" y="442.184"/>
- <use x="98.57" xlink:href="#g36" y="442.184"/>
- <use x="101.029" xlink:href="#g92" y="442.184"/>
- <use x="105.678" xlink:href="#g94" y="442.184"/>
- <use x="109.206" xlink:href="#g39" y="442.184"/>
- <use x="120.435" xlink:href="#g109" y="442.184"/>
- <use x="129.511" xlink:href="#g94" y="442.184"/>
- <use x="133.039" xlink:href="#g36" y="442.184"/>
- <use x="135.498" xlink:href="#g13" y="442.184"/>
- <use x="138.128" xlink:href="#g94" y="442.184"/>
- <use x="141.656" xlink:href="#g92" y="442.184"/>
- <use x="146.304" xlink:href="#g13" y="442.184"/>
- <use x="148.934" xlink:href="#g65" y="442.184"/>
- <use x="153.319" xlink:href="#g31" y="442.184"/>
- <use x="155.852" xlink:href="#g85" y="442.184"/>
- <use x="161.993" xlink:href="#g94" y="442.184"/>
- <use x="165.521" xlink:href="#g92" y="442.184"/>
- <use x="174.477" xlink:href="#g49" y="442.184"/>
- <use x="179.084" xlink:href="#g15" y="442.184"/>
- <use x="183.229" xlink:href="#g92" y="442.184"/>
- <use x="192.185" xlink:href="#g47" y="442.184"/>
- <use x="197.259" xlink:href="#g92" y="442.184"/>
- <use x="201.907" xlink:href="#g16" y="442.184"/>
- <use x="205.996" xlink:href="#g94" y="442.184"/>
- <use x="209.524" xlink:href="#g42" y="442.184"/>
- <use x="213.428" xlink:href="#g66" y="442.184"/>
- <use x="218.502" xlink:href="#g30" y="442.184"/>
- <use x="222.683" xlink:href="#g42" y="442.184"/>
- <use x="226.587" xlink:href="#g13" y="442.184"/>
- <use x="229.216" xlink:href="#g94" y="442.184"/>
- <use x="232.744" xlink:href="#g42" y="442.184"/>
- <use x="240.955" xlink:href="#g108" y="442.184"/>
- <use x="249.263" xlink:href="#g69" y="442.184"/>
- <use x="253.649" xlink:href="#g91" y="442.184"/>
- <use x="-13.4527" xlink:href="#g13" y="455.025"/>
- <use x="-10.8234" xlink:href="#g47" y="455.025"/>
- <use x="-5.74916" xlink:href="#g42" y="455.025"/>
- <use x="-1.84581" xlink:href="#g6" y="455.025"/>
- <use x="0.225544" xlink:href="#g85" y="455.025"/>
- <use x="6.36626" xlink:href="#g53" y="455.025"/>
- <use x="10.5107" xlink:href="#g92" y="455.025"/>
- <use x="15.159" xlink:href="#g30" y="455.025"/>
- <use x="19.3403" xlink:href="#g94" y="455.025"/>
- <use x="22.8686" xlink:href="#g36" y="455.025"/>
- <use x="25.3279" xlink:href="#g13" y="455.025"/>
- <use x="32.2841" xlink:href="#g63" y="455.025"/>
- <use x="36.3541" xlink:href="#g69" y="455.025"/>
- <use x="40.7394" xlink:href="#g35" y="455.025"/>
- <use x="49.5255" xlink:href="#g47" y="455.025"/>
- <use x="54.5998" xlink:href="#g42" y="455.025"/>
- <use x="58.5031" xlink:href="#g69" y="455.025"/>
- <use x="62.8884" xlink:href="#g31" y="455.025"/>
- <use x="65.4217" xlink:href="#g13" y="455.025"/>
- <use x="68.0511" xlink:href="#g94" y="455.025"/>
- <use x="71.5793" xlink:href="#g50" y="455.025"/>
- <use x="79.7728" xlink:href="#g94" y="455.025"/>
- <use x="83.301" xlink:href="#g36" y="455.025"/>
- <use x="85.7604" xlink:href="#g92" y="455.025"/>
- <use x="90.4086" xlink:href="#g6" y="455.025"/>
- <use x="92.4799" xlink:href="#g69" y="455.025"/>
- <use x="96.8652" xlink:href="#g39" y="455.025"/>
- <use x="103.787" xlink:href="#g94" y="455.025"/>
- <use x="111.642" xlink:href="#g51" y="455.025"/>
- <use x="118.494" xlink:href="#g36" y="455.025"/>
- <use x="120.953" xlink:href="#g42" y="455.025"/>
- <use x="124.857" xlink:href="#g85" y="455.025"/>
- <use x="130.997" xlink:href="#g31" y="455.025"/>
- <use x="133.531" xlink:href="#g94" y="455.025"/>
- <use x="137.059" xlink:href="#g36" y="455.025"/>
- <use x="139.518" xlink:href="#g92" y="455.025"/>
- <use x="148.493" xlink:href="#g97" y="455.025"/>
- <use x="154.493" xlink:href="#g109" y="455.025"/>
- <use x="163.569" xlink:href="#g69" y="455.025"/>
- <use x="167.954" xlink:href="#g92" y="455.025"/>
- <use x="172.602" xlink:href="#g29" y="455.025"/>
- <use x="175.71" xlink:href="#g13" y="455.025"/>
- <use x="182.666" xlink:href="#g96" y="455.025"/>
- <use x="192.154" xlink:href="#g15" y="455.025"/>
- <use x="196.298" xlink:href="#g42" y="455.025"/>
- <use x="200.202" xlink:href="#g36" y="455.025"/>
- <use x="202.661" xlink:href="#g14" y="455.025"/>
- <use x="207.028" xlink:href="#g20" y="455.025"/>
- <use x="217.354" xlink:href="#g39" y="455.025"/>
- <use x="224.276" xlink:href="#g36" y="455.025"/>
- <use x="226.736" xlink:href="#g13" y="455.025"/>
- <use x="233.692" xlink:href="#g6" y="455.025"/>
- <use x="235.763" xlink:href="#g94" y="455.025"/>
- <use x="239.291" xlink:href="#g36" y="455.025"/>
- <use x="241.751" xlink:href="#g92" y="455.025"/>
- <use x="246.399" xlink:href="#g94" y="455.025"/>
- <use x="249.927" xlink:href="#g39" y="455.025"/>
- <use x="-13.4527" xlink:href="#g88" y="467.865"/>
- <use x="-8.78605" xlink:href="#g36" y="467.865"/>
- <use x="-6.32669" xlink:href="#g31" y="467.865"/>
- <use x="-3.79333" xlink:href="#g31" y="467.865"/>
- <use x="-1.25998" xlink:href="#g94" y="467.865"/>
- <use x="2.26826" xlink:href="#g92" y="467.865"/>
- <use x="10.893" xlink:href="#g73" y="467.865"/>
- <use x="16.9016" xlink:href="#g42" y="467.865"/>
- <use x="20.805" xlink:href="#g36" y="467.865"/>
- <use x="23.2644" xlink:href="#g94" y="467.865"/>
- <use x="26.7926" xlink:href="#g63" y="467.865"/>
- <use x="30.8627" xlink:href="#g30" y="467.865"/>
- <use x="35.044" xlink:href="#g15" y="467.865"/>
- <use x="39.1885" xlink:href="#g4" y="467.865"/>
- <use x="41.9812" xlink:href="#g94" y="467.865"/>
- <use x="45.5094" xlink:href="#g68" y="467.865"/>
- <use x="53.3526" xlink:href="#g33" y="467.865"/>
- <use x="59.58" xlink:href="#g92" y="467.865"/>
- <use x="68.2047" xlink:href="#g63" y="467.865"/>
- <use x="72.2747" xlink:href="#g94" y="467.865"/>
- <use x="75.803" xlink:href="#g42" y="467.865"/>
- <use x="83.6828" xlink:href="#g108" y="467.865"/>
- <use x="91.9908" xlink:href="#g65" y="467.865"/>
- <use x="96.3761" xlink:href="#g30" y="467.865"/>
- <use x="100.557" xlink:href="#g94" y="467.865"/>
- <use x="108.062" xlink:href="#g63" y="467.865"/>
- <use x="112.132" xlink:href="#g94" y="467.865"/>
- <use x="115.66" xlink:href="#g35" y="467.865"/>
- <use x="124.096" xlink:href="#g51" y="467.865"/>
- <use x="130.948" xlink:href="#g36" y="467.865"/>
- <use x="133.408" xlink:href="#g42" y="467.865"/>
- <use x="137.311" xlink:href="#g85" y="467.865"/>
- <use x="143.452" xlink:href="#g31" y="467.865"/>
- <use x="145.985" xlink:href="#g94" y="467.865"/>
- <use x="149.513" xlink:href="#g36" y="467.865"/>
- <use x="151.973" xlink:href="#g92" y="467.865"/>
- <use x="156.621" xlink:href="#g35" y="467.865"/>
- <use x="165.057" xlink:href="#g88" y="467.865"/>
- <use x="169.723" xlink:href="#g94" y="467.865"/>
- <use x="173.252" xlink:href="#g30" y="467.865"/>
- <use x="177.433" xlink:href="#g13" y="467.865"/>
- <use x="184.039" xlink:href="#g94" y="467.865"/>
- <use x="187.567" xlink:href="#g36" y="467.865"/>
- <use x="190.026" xlink:href="#g92" y="467.865"/>
- <use x="198.651" xlink:href="#g92" y="467.865"/>
- <use x="203.299" xlink:href="#g36" y="467.865"/>
- <use x="205.759" xlink:href="#g94" y="467.865"/>
- <use x="209.287" xlink:href="#g63" y="467.865"/>
- <use x="213.357" xlink:href="#g42" y="467.865"/>
- <use x="217.26" xlink:href="#g36" y="467.865"/>
- <use x="219.72" xlink:href="#g93" y="467.865"/>
- <use x="224.423" xlink:href="#g94" y="467.865"/>
- <use x="227.952" xlink:href="#g35" y="467.865"/>
- <use x="232.411" xlink:href="#g50" y="467.865"/>
- <use x="240.254" xlink:href="#g66" y="467.865"/>
- <use x="245.328" xlink:href="#g16" y="467.865"/>
- <use x="249.417" xlink:href="#g94" y="467.865"/>
- <use x="252.945" xlink:href="#g42" y="467.865"/>
- <use x="-13.4527" xlink:href="#g94" y="480.705"/>
- <use x="-9.92451" xlink:href="#g36" y="480.705"/>
- <use x="-7.46515" xlink:href="#g92" y="480.705"/>
- <use x="-2.81693" xlink:href="#g94" y="480.705"/>
- <use x="3.96369" xlink:href="#g99" y="480.705"/>
- <use x="13.5364" xlink:href="#g47" y="480.705"/>
- <use x="18.6106" xlink:href="#g94" y="480.705"/>
- <use x="22.1389" xlink:href="#g31" y="480.705"/>
- <use x="24.6722" xlink:href="#g31" y="480.705"/>
- <use x="27.2056" xlink:href="#g94" y="480.705"/>
- <use x="33.9862" xlink:href="#g94" y="480.705"/>
- <use x="37.5144" xlink:href="#g42" y="480.705"/>
- <use x="41.4178" xlink:href="#g16" y="480.705"/>
- <use x="45.5065" xlink:href="#g69" y="480.705"/>
- <use x="49.8918" xlink:href="#g47" y="480.705"/>
- <use x="54.966" xlink:href="#g13" y="480.705"/>
- <use x="57.5954" xlink:href="#g94" y="480.705"/>
- <use x="61.1236" xlink:href="#g35" y="480.705"/>
- <use x="68.8353" xlink:href="#g73" y="480.705"/>
- <use x="74.844" xlink:href="#g94" y="480.705"/>
- <use x="78.3723" xlink:href="#g31" y="480.705"/>
- <use x="80.9056" xlink:href="#g63" y="480.705"/>
- <use x="84.9757" xlink:href="#g29" y="480.705"/>
- <use x="88.0831" xlink:href="#g69" y="480.705"/>
- <use x="92.4683" xlink:href="#g34" y="480.705"/>
- <use x="97.1502" xlink:href="#g94" y="480.705"/>
- <use x="100.678" xlink:href="#g31" y="480.705"/>
- <use x="103.212" xlink:href="#g31" y="480.705"/>
- <use x="105.745" xlink:href="#g85" y="480.705"/>
- <use x="111.886" xlink:href="#g94" y="480.705"/>
- <use x="115.414" xlink:href="#g92" y="480.705"/>
- <use x="123.315" xlink:href="#g39" y="480.705"/>
- <use x="130.236" xlink:href="#g36" y="480.705"/>
- <use x="132.696" xlink:href="#g13" y="480.705"/>
- <use x="138.577" xlink:href="#g63" y="480.705"/>
- <use x="142.648" xlink:href="#g94" y="480.705"/>
- <use x="146.176" xlink:href="#g42" y="480.705"/>
- <use x="153.332" xlink:href="#g109" y="480.705"/>
- <use x="162.407" xlink:href="#g13" y="480.705"/>
- <use x="165.036" xlink:href="#g69" y="480.705"/>
- <use x="169.421" xlink:href="#g13" y="480.705"/>
- <use x="172.051" xlink:href="#g47" y="480.705"/>
- <use x="177.125" xlink:href="#g94" y="480.705"/>
- <use x="183.906" xlink:href="#g63" y="480.705"/>
- <use x="187.976" xlink:href="#g94" y="480.705"/>
- <use x="191.504" xlink:href="#g35" y="480.705"/>
- <use x="199.216" xlink:href="#g30" y="480.705"/>
- <use x="203.397" xlink:href="#g31" y="480.705"/>
- <use x="205.93" xlink:href="#g68" y="480.705"/>
- <use x="213.05" xlink:href="#g96" y="480.705"/>
- <use x="222.538" xlink:href="#g69" y="480.705"/>
- <use x="226.923" xlink:href="#g47" y="480.705"/>
- <use x="231.997" xlink:href="#g42" y="480.705"/>
- <use x="235.9" xlink:href="#g36" y="480.705"/>
- <use x="238.36" xlink:href="#g13" y="480.705"/>
- <use x="240.989" xlink:href="#g36" y="480.705"/>
- <use x="243.448" xlink:href="#g47" y="480.705"/>
- <use x="248.523" xlink:href="#g35" y="480.705"/>
- <use x="252.982" xlink:href="#g50" y="480.705"/>
- <use x="-13.4527" xlink:href="#g63" y="493.545"/>
- <use x="-9.38268" xlink:href="#g69" y="493.545"/>
- <use x="-4.99743" xlink:href="#g42" y="493.545"/>
- <use x="-1.09407" xlink:href="#g93" y="493.545"/>
- <use x="3.60957" xlink:href="#g94" y="493.545"/>
- <use x="7.13781" xlink:href="#g88" y="493.545"/>
- <use x="11.8045" xlink:href="#g94" y="493.545"/>
- <use x="15.3327" xlink:href="#g31" y="493.545"/>
- <use x="17.8661" xlink:href="#g31" y="493.545"/>
- <use x="20.3995" xlink:href="#g13" y="493.545"/>
- <use x="27.0288" xlink:href="#g69" y="493.545"/>
- <use x="31.4141" xlink:href="#g31" y="493.545"/>
- <use x="33.9474" xlink:href="#g35" y="493.545"/>
- <use x="42.4068" xlink:href="#g19" y="493.545"/>
- <use x="50.1355" xlink:href="#g36" y="493.545"/>
- <use x="52.5948" xlink:href="#g13" y="493.545"/>
- <use x="55.2242" xlink:href="#g13" y="493.545"/>
- <use x="57.8536" xlink:href="#g94" y="493.545"/>
- <use x="61.3818" xlink:href="#g42" y="493.545"/>
- <use x="69.2852" xlink:href="#g36" y="493.545"/>
- <use x="71.7445" xlink:href="#g92" y="493.545"/>
- <use x="80.3927" xlink:href="#g49" y="493.545"/>
- <use x="84.9999" xlink:href="#g15" y="493.545"/>
- <use x="89.1443" xlink:href="#g31" y="493.545"/>
- <use x="91.6777" xlink:href="#g31" y="493.545"/>
- <use x="94.211" xlink:href="#g94" y="493.545"/>
- <use x="97.7393" xlink:href="#g42" y="493.545"/>
- <use x="105.643" xlink:href="#g114" y="493.545"/>
- <use x="115.384" xlink:href="#g94" y="493.545"/>
- <use x="118.912" xlink:href="#g30" y="493.545"/>
- <use x="123.094" xlink:href="#g42" y="493.545"/>
- <use x="126.997" xlink:href="#g68" y="493.545"/>
- </g>
-</svg>
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/frktest-wf-cmp.svg b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/frktest-wf-cmp.svg
deleted file mode 100644
index b8effca34a5..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/frktest-wf-cmp.svg
+++ /dev/null
@@ -1,348 +0,0 @@
-<?xml version="1.0"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="440.209pt" version="1.1" viewBox="-13.4025 53.7983 396.851 440.209" width="396.851pt">
- <defs>
- <font horiz-adv-x="0" id="yfrak">
- <font-face ascent="759" descent="-252" font-family="yfrak" units-per-em="1000"/>
- <missing-glyph d=""/>
- <glyph d="M1 374H36C36 184 43 82 61 -103C64 -127 69 -152 70 -177H91L98 -73H99C116 -113 165 -144 211 -144C229 -144 246 -140 262 -132C324 -101 353 -18 353 66C353 83 352 99 349 115C337 173 302 227 253 260C238 271 221 280 203 286C230 313 259 345 259 396C259 442 236 478 208 504H207L152 434L122 394C119 402 117 411 114 419S86 486 86 491C87 495 89 499 91 502C106 528 135 551 170 551C189 551 206 543 220 537C223 544 251 611 251 616C251 625 241 626 234 627L232 620C213 629 194 641 171 641C142 641 121 622 108 597C88 554 71 484 52 445C40 418 17 398 1 374ZM124 242C126 268 129 295 129 321C129 328 128 336 128 343C128 351 127 358 126 366C126 368 126 369 126 371C126 382 138 386 148 386C177 386 193 356 193 333C193 300 167 276 143 257C137 252 131 247 124 242ZM240 -91C224 -106 202 -115 180 -115C133 -115 103 -65 103 -18C103 -8 119 193 120 198C121 202 124 204 128 204C134 204 141 201 144 200C223 183 282 101 282 19C282 -27 268 -66 240 -91Z" glyph-name="dotlessj" horiz-adv-x="358" unicode="&#xF6BE;"/>
- <glyph d="M43 483C42 490 41 497 41 504C41 575 73 629 108 669C112 674 124 683 124 690C124 695 120 701 114 701S102 695 98 691C54 647 19 585 19 503C19 481 23 458 32 438S60 399 85 399C98 399 113 403 124 412C135 422 140 437 140 452C140 484 118 506 86 506C69 506 51 499 43 483ZM238 484C238 492 237 501 237 509C240 577 268 633 309 674C313 678 321 683 321 690C321 691 320 692 320 693C320 697 313 701 310 701C305 701 301 698 297 694C252 652 215 583 215 507C215 455 232 399 283 399C314 399 336 423 336 452C336 467 331 481 321 492C311 501 297 506 282 506C261 506 249 496 238 484Z" glyph-name="quotedbl" horiz-adv-x="500" unicode="&quot;"/>
- <glyph d="M110 -225C131 -181 149 -135 169 -91L209 1L230 48C235 57 239 66 239 77C239 78 239 79 239 80C234 111 211 132 177 132C161 132 145 127 133 116C115 100 113 76 109 45C98 -10 60 -189 60 -191C60 -200 67 -200 74 -205C86 -212 98 -219 110 -225Z" glyph-name="comma" horiz-adv-x="322" unicode=","/>
- <glyph d="M239 389C166 336 90 287 18 233C17 223 17 211 17 200L41 216C106 263 175 306 238 356C241 365 239 378 239 389ZM239 288C166 235 90 185 18 131C17 121 17 109 17 98C91 150 166 200 238 254C241 264 240 276 239 288Z" glyph-name="hyphen" horiz-adv-x="267" unicode="-"/>
- <glyph d="M156 -13H157L239 69C232 77 224 85 217 92L180 129C177 132 160 150 156 150C150 150 143 140 139 136L92 89C89 86 76 76 76 69C77 66 80 63 82 61L156 -13Z" glyph-name="period" horiz-adv-x="322" unicode="."/>
- <glyph d="M156 484L96 424C89 417 81 410 76 401L81 393L156 318H157L217 378C224 385 232 392 237 401L232 409L156 484ZM74 -151L92 -160L226 49C230 54 237 62 237 68C237 73 231 78 228 81L171 138C167 142 162 149 157 150C154 150 151 148 149 146C144 142 94 91 94 91C89 86 79 79 77 72C76 72 76 69 76 69S78 63 79 63L91 48C105 26 112 0 112 -30C112 -59 105 -88 93 -114C87 -127 79 -138 74 -151Z" glyph-name="semicolon" horiz-adv-x="322" unicode=";"/>
- <glyph d="M514 705C514 704 514 704 514 703C514 698 510 696 506 693L478 675L388 617C378 608 364 604 356 593V152C356 149 356 146 356 143C356 133 349 132 342 129C329 123 317 116 304 110L250 84C247 83 230 74 227 74C224 75 221 78 219 80C214 85 146 159 146 159C232 187 320 253 320 368C320 376 320 384 320 393C321 393 322 455 322 455S321 495 320 495C317 526 309 558 292 585C267 623 222 656 170 656C87 656 17 594 17 520C17 482 30 450 52 433C87 405 157 426 157 365C157 339 144 311 120 311C102 311 82 327 62 327C46 327 31 315 31 296C31 267 67 254 96 254C98 254 100 254 102 254C157 263 179 315 179 370C179 413 169 449 145 469C128 484 102 482 82 485C63 487 44 497 44 521C44 565 87 594 121 594C134 594 147 590 157 586C230 553 246 466 246 382C246 375 246 369 246 362C246 346 246 330 242 314C227 250 184 193 121 171C88 160 52 159 17 159C17 155 16 150 16 146C16 131 28 125 37 118L61 95C75 83 89 71 89 48C89 40 88 32 86 25C85 19 81 11 81 5C81 2 82 0 84 -2C89 -5 96 -11 102 -12C108 -12 175 22 194 32L357 111C360 102 365 94 369 86C375 74 392 45 395 33C396 33 396 24 396 24S396 15 395 15C393 15 389 3 390 3C390 -3 397 -9 401 -13H402L505 70L534 94C538 97 547 102 547 107C547 113 539 121 536 124C523 118 514 110 497 110C468 110 446 130 446 163C446 170 446 176 446 183V563C446 570 446 578 446 585C446 638 481 647 513 671C514 664 520 660 526 660C535 660 544 668 544 678C544 693 530 705 514 705Z" glyph-name="A" horiz-adv-x="573" unicode="A"/>
- <glyph d="M87 308L97 288C120 295 143 306 164 318C180 326 201 342 201 364C201 374 198 383 195 394C188 421 185 454 165 475C156 483 144 485 133 485C126 485 118 484 111 484C86 484 66 492 66 517C66 520 67 524 67 527C73 576 116 618 174 618C219 618 249 592 271 562C300 520 310 466 314 416C314 413 314 409 314 406C314 399 314 392 314 385C314 376 315 366 315 356C315 335 313 312 303 293C285 258 244 241 202 237C188 236 174 237 160 236C96 230 17 193 17 116C17 92 26 67 48 67C66 67 73 85 73 99C73 111 69 124 64 131C63 133 51 148 51 150C52 153 54 156 56 158C69 171 84 181 108 181C130 181 154 172 172 160C227 125 256 63 305 22C323 7 342 -5 365 -10C366 -10 389 -15 389 -13C400 -12 410 -5 420 0L481 27C518 43 557 57 591 78C654 116 712 182 712 278C712 365 664 454 577 479C562 484 547 486 531 486V487L637 540L631 554C628 553 625 552 622 552C621 552 621 552 620 552C608 552 599 564 593 574C585 587 583 602 579 617C566 655 541 691 493 691C432 691 397 639 378 597C374 586 368 575 366 564C360 578 354 593 346 607C318 658 270 705 193 705C174 705 162 701 146 696C78 669 44 588 44 515C44 474 55 423 85 408C102 400 122 402 140 400C159 397 180 388 180 364C180 352 172 343 162 337C140 323 112 317 87 308ZM514 477L392 416V415C407 415 423 414 438 412C527 401 631 353 641 246C641 234 641 222 638 210C629 164 597 128 565 96C544 75 518 48 482 48C478 48 474 49 470 49C400 58 354 121 308 167C297 178 285 189 273 199C265 205 256 210 249 217C268 217 289 222 307 228C360 246 392 284 392 355C392 368 391 381 391 394C389 438 390 471 381 512C379 518 377 525 377 532C377 533 377 534 377 535C377 541 379 546 381 552C389 580 407 613 443 613C456 613 468 608 477 597C489 583 492 564 496 547C500 523 504 500 514 477Z" glyph-name="B" horiz-adv-x="734" unicode="B"/>
- <glyph d="M238 54V53C209 31 185 6 136 6C111 6 86 14 66 30C52 41 39 61 39 80C39 101 53 113 72 117C68 110 66 103 66 96C66 75 86 56 108 56C127 56 140 74 140 93C140 125 115 145 84 145C50 145 17 121 17 81C17 73 18 65 20 58C32 17 75 -13 126 -13C171 -13 209 9 238 32C242 35 247 41 253 42C258 42 265 36 270 33C311 9 380 -13 435 -13C439 -13 443 -13 447 -12C452 -10 487 28 487 28L573 117C578 122 596 137 596 144C596 150 589 158 584 158C577 158 571 148 568 145C538 115 498 80 441 80C412 80 382 87 357 96L324 111C330 119 338 126 345 133C381 169 419 226 419 283C419 287 419 290 419 294C413 358 370 409 351 469C346 484 343 500 343 516C343 558 370 592 402 606C406 606 407 570 407 570S406 537 403 537C401 529 398 522 395 515C394 515 393 503 394 503C396 500 404 494 408 494C411 494 413 498 415 501C425 519 433 539 433 566C433 588 428 596 424 616L452 622L485 504L600 537L594 558L577 554C567 588 558 621 549 656L452 644C444 643 421 638 418 638C409 638 405 649 400 654C376 684 335 705 287 705C166 705 109 587 90 498C82 458 77 416 77 374C77 360 78 345 79 330C87 251 119 175 171 115C190 92 213 70 238 54ZM301 126C200 195 155 319 155 437C155 482 161 524 173 560C191 616 229 677 302 677C342 677 371 655 391 629C371 625 350 611 334 598C302 571 274 535 274 478C275 384 341 314 341 228C341 202 332 177 320 155C314 145 307 136 301 126Z" glyph-name="C" horiz-adv-x="623" unicode="C"/>
- <glyph d="M493 115C452 92 423 73 358 73C332 73 305 77 282 84C189 112 119 191 95 284C88 310 86 337 86 363C86 393 89 444 92 467L98 504C110 565 135 640 198 666C206 669 214 671 222 673C223 673 258 677 258 675C273 673 287 668 300 662C308 658 314 653 322 649V647C306 641 272 619 262 613C231 590 191 559 191 508C191 467 223 437 248 407C264 389 277 367 278 342C278 318 264 288 238 288C237 288 236 288 235 288C226 288 216 294 211 299C188 319 185 354 175 381L154 375C156 364 160 354 164 344C181 305 208 257 263 257C313 257 349 298 349 349C349 366 345 383 338 399C335 403 324 422 324 427C324 434 338 439 343 439C343 439 344 439 344 439C347 439 359 427 363 423L405 383C409 379 417 369 423 369C428 369 432 376 435 379L466 412C471 418 477 425 483 431C486 434 490 437 490 441C490 441 490 442 490 442C490 448 482 454 478 458L439 500C435 505 429 514 422 514C422 514 421 514 421 514C417 514 395 500 395 500C389 497 313 450 311 449C308 449 306 453 304 455C287 479 263 519 263 550C263 590 294 609 319 623C324 625 332 632 339 632C347 632 357 621 360 619L393 594C399 590 407 581 414 581C417 581 420 582 423 584C428 587 474 613 492 621V623L426 673C422 677 407 689 400 689C395 689 390 685 386 683C380 680 349 661 343 661S331 667 326 671C303 688 279 705 240 705C217 705 193 699 173 690C105 659 67 591 44 523C28 473 20 420 18 368C17 368 17 302 18 302C31 158 120 20 259 -8C263 -9 313 -16 313 -12C324 -10 335 -1 345 5L407 42L468 78C479 84 494 87 494 104C494 108 493 112 493 115Z" glyph-name="E" horiz-adv-x="517" unicode="E"/>
- <glyph d="M171 363L176 377C131 398 85 423 64 470C58 483 55 497 55 511C55 552 78 592 110 617C131 632 163 645 190 645C209 645 226 634 243 625C268 611 292 595 315 578C327 570 338 561 350 554V553C313 537 272 517 245 486C228 466 223 444 223 420C223 379 236 332 246 303C276 224 343 104 343 5C343 -64 311 -122 259 -141C248 -144 237 -145 225 -145C160 -145 95 -95 95 -21C95 42 139 97 159 147C167 167 173 190 173 212C173 271 132 315 78 315C39 315 26 268 17 243L38 235C45 255 51 293 79 293C95 293 112 281 117 266C118 266 119 254 119 254S118 242 118 242C116 223 111 204 103 186C80 129 34 71 34 3C34 -110 138 -167 230 -167C297 -167 343 -139 378 -103C408 -73 429 -25 429 31C429 107 398 180 377 233C365 262 352 291 342 321C340 326 332 347 332 351C332 352 332 352 332 353C334 358 377 398 381 398C382 398 382 398 383 398C388 395 410 371 410 371C413 368 417 361 422 361C428 361 434 369 438 373C450 385 463 397 476 408C473 414 468 419 463 424L436 453C433 457 427 466 421 466C421 466 420 466 420 466C416 465 397 447 391 441C369 420 347 398 323 378C316 422 314 403 310 460C310 465 309 470 309 475C311 504 325 526 343 542C346 545 349 548 353 548C353 548 354 548 354 548C359 548 365 542 369 539L403 514C407 511 414 503 420 503C425 503 427 508 429 510C434 516 494 593 494 593C491 596 484 605 478 605C477 605 476 604 475 604C468 601 465 588 458 588C456 588 455 589 453 590C441 597 345 671 345 671L316 693C307 700 302 705 286 705C238 705 178 687 148 673C89 645 34 593 34 512C34 493 38 475 47 458C71 412 123 381 171 363Z" glyph-name="F" horiz-adv-x="501" unicode="F"/>
- <glyph d="M66 357L125 428C94 453 76 491 75 531C75 575 99 625 143 641C153 644 163 645 174 645C201 645 226 630 247 614C290 578 333 507 404 507C460 507 495 558 495 604C495 618 489 630 483 643L463 634C467 624 472 615 472 605C472 583 457 566 435 566C403 566 383 588 369 605C339 643 318 705 253 705C245 705 238 705 231 704C138 693 52 630 26 538C21 522 17 503 17 486C17 457 27 440 38 418C42 410 46 402 48 393C50 387 48 379 50 373C53 366 60 360 66 357ZM62 -128C67 -126 80 -123 80 -116C78 -104 72 -91 72 -78C72 -58 89 -49 110 -49S148 -59 164 -72C191 -95 213 -129 249 -138C256 -139 262 -139 269 -139C332 -139 381 -85 410 -46C448 3 478 65 478 133C478 148 477 163 472 178C455 236 410 280 384 333C374 354 365 378 365 402C365 419 369 435 377 446C385 454 390 461 404 461C416 461 428 453 437 444C451 428 456 404 456 383H478C478 429 455 483 399 483C394 483 388 483 382 482C330 474 277 435 277 370C277 340 287 310 301 284C342 211 421 153 421 55C421 -3 390 -67 319 -67C314 -67 310 -66 306 -66C246 -57 218 13 158 22C154 22 150 23 146 23C88 23 50 -21 50 -72C50 -91 55 -111 62 -128Z" glyph-name="I" horiz-adv-x="519" unicode="I"/>
- <glyph d="M111 144L17 127C23 80 29 34 34 -13C44 -9 53 -3 63 1C95 15 130 21 174 21C225 30 242 86 246 133C247 133 247 196 246 196C243 263 232 316 204 365L256 375C260 355 297 262 298 259C342 138 354 95 423 -13C465 28 507 68 546 111L547 132C529 118 508 104 481 104C451 104 439 136 431 155C423 175 346 382 346 390C346 394 349 396 353 396C360 398 411 408 429 412C435 413 449 414 449 422C449 423 449 424 449 425C448 430 447 434 446 439C442 438 436 436 431 436S424 441 424 446C422 453 420 461 419 468L407 524C405 534 402 544 401 554L418 559C420 566 417 573 416 580C387 574 355 571 325 571C316 571 308 571 299 571C284 571 269 570 254 566C198 549 165 490 165 418C145 440 121 471 121 507C121 515 122 524 124 531C136 613 217 677 313 677C419 677 511 597 511 490C511 423 478 381 440 348V347L456 333C500 365 533 425 533 490C533 541 514 593 478 633C434 681 374 705 311 705C299 705 287 704 275 702C165 685 85 591 57 487C51 467 45 424 45 402C45 397 45 393 47 389C56 374 94 335 100 329L134 293C174 251 223 197 223 130C223 93 205 43 165 43C122 43 111 106 111 144ZM336 415C324 414 204 387 204 387C202 387 199 386 197 386S194 386 193 387C187 390 186 419 186 424C186 431 187 438 188 446C194 486 218 535 268 535C287 535 301 525 309 512C323 488 332 443 336 415Z" glyph-name="K" horiz-adv-x="571" unicode="K"/>
- <glyph d="M17 58H39C40 64 42 69 46 73L57 77C57 77 61 77 61 77C71 76 80 74 89 70C119 56 141 31 166 10C172 5 192 -12 201 -12C206 -12 212 -9 216 -6C268 20 310 62 338 110C346 124 355 139 359 155C355 157 348 161 342 161S336 156 334 151C320 118 308 78 262 78C246 79 231 86 218 94C192 112 149 160 114 165C151 195 212 216 212 281C207 386 98 442 98 541C98 557 100 571 105 583C121 627 161 666 217 666C263 666 293 629 293 589C293 539 248 501 226 458C219 442 213 426 213 409C213 399 215 389 220 379C233 352 271 318 300 318C332 318 345 348 348 376H325C325 362 319 341 300 341C271 341 250 361 250 387C250 400 256 412 265 423C283 444 308 457 325 479C334 492 336 504 336 520C336 542 331 565 324 586C306 637 271 705 199 705C190 705 180 704 170 702C105 690 54 642 31 581C22 559 17 534 17 509C17 496 18 482 22 469C41 388 132 322 132 237C132 231 132 224 130 218C120 188 86 173 63 154C35 130 17 95 17 58Z" glyph-name="L" horiz-adv-x="385" unicode="L"/>
- <glyph d="M253 622C243 627 235 634 225 639C204 650 178 656 154 656C95 656 41 627 23 575C17 558 17 541 17 524C17 516 16 507 16 499C16 474 16 448 26 424C40 392 72 381 101 366C120 357 140 343 141 320C141 295 129 274 105 274C95 274 85 277 76 283C69 287 64 294 57 298C54 293 48 286 48 280C49 275 55 271 59 268C72 257 88 251 106 251C149 251 189 278 189 330C189 380 163 421 134 445C105 468 39 492 39 541C39 577 69 609 107 609C114 609 121 608 128 607C189 597 228 547 248 492C274 417 280 327 280 244C280 182 264 145 237 103C229 92 219 82 212 70H211C188 91 164 111 140 130L59 33V32L75 18H76L86 31C105 19 125 9 145 -1L159 -9C161 -10 163 -11 165 -11C166 -11 166 -11 167 -11C171 -11 174 -7 176 -4C247 78 350 172 356 304C356 304 356 346 355 346C351 445 328 539 277 597C275 600 269 605 269 609S271 618 272 621C280 639 293 658 319 658C330 658 341 654 351 651C402 634 432 584 447 535C456 504 460 472 462 439C463 420 462 400 463 381C466 338 471 294 471 250C471 193 461 136 434 97C429 89 423 83 418 75L347 134L256 24C260 21 267 13 273 13C278 13 281 19 283 23C299 17 350 -6 365 -11C365 -11 367 -11 367 -11C372 -10 375 -5 378 -2L400 22C461 89 513 150 538 253C544 282 545 310 545 339C545 403 541 462 529 519C523 551 519 553 510 586C526 593 537 601 558 601C593 601 629 581 648 552C662 531 669 507 675 483C677 472 686 439 686 434C686 433 686 433 686 432C686 429 683 428 681 427C666 420 622 405 613 402C608 400 597 398 594 392S591 375 591 368C586 325 583 279 583 233C583 230 582 185 583 185C586 149 596 115 604 80C607 64 614 29 614 14C614 10 614 6 615 3S626 -13 630 -13L753 106C757 110 767 116 767 122C767 129 758 134 754 138H753C748 133 717 101 712 101C712 101 711 101 711 101C704 101 697 110 694 115C660 154 663 210 661 276C661 294 658 313 658 331C658 352 661 373 676 391C682 398 689 403 696 408L708 384C726 400 737 423 753 441C757 446 766 457 768 463C768 469 761 477 758 482C751 495 746 508 740 522C715 582 696 646 629 671C628 671 596 677 596 675C572 673 557 657 542 640C529 626 517 612 504 599C492 625 477 651 455 670C431 691 396 705 362 705C343 705 325 701 309 691C287 678 261 646 253 622ZM218 65C218 65 214 69 214 69S218 65 218 65Z" glyph-name="M" horiz-adv-x="791" unicode="M"/>
- <glyph d="M354 574C343 586 335 602 325 614C292 650 249 676 189 676C102 676 17 617 17 513C17 434 58 368 115 346C151 333 218 341 218 295C218 263 201 231 170 231C149 231 128 246 117 264C112 274 109 285 109 297C103 294 89 293 89 283C89 280 90 276 90 273C100 238 130 209 171 209C217 209 241 255 241 299C241 327 233 359 222 378C206 407 184 417 150 428C108 444 40 460 40 520C40 579 102 612 157 612C316 612 335 399 335 253C335 228 333 161 329 141C323 88 305 10 233 10C203 10 172 28 172 64C172 69 173 74 174 78C176 78 178 90 178 90C178 95 170 103 164 103C156 103 148 98 141 96C135 94 128 94 122 94C112 94 102 96 91 98C90 95 89 93 89 90C89 83 93 75 94 68C95 68 95 32 95 32C93 32 91 11 91 11C91 6 98 -4 105 -4C110 -4 115 2 119 4C125 7 131 9 137 9C140 9 143 8 146 8C176 3 198 -13 233 -13C271 -13 309 4 335 29C391 84 413 163 417 239C417 239 417 299 416 299C414 378 401 449 380 515L371 538C369 543 366 547 365 552C365 561 369 572 372 580C384 612 411 650 456 650C487 650 509 627 523 600C546 554 548 495 586 457C596 447 609 436 623 432V431C582 422 539 410 509 379C480 348 476 304 476 255C476 168 501 78 533 17C537 10 541 4 544 -3C548 -9 549 -13 560 -13C562 -13 572 -14 572 -12C578 -9 583 3 587 9L636 87C638 90 652 113 652 115C652 124 640 127 635 129C630 123 624 114 614 114C603 114 593 126 588 136C570 165 565 201 562 234C561 249 562 263 561 278C560 291 559 304 559 318C559 336 561 354 571 369C589 397 623 408 657 417C664 419 669 420 669 430V504C646 505 637 525 630 544L615 587C595 638 565 699 504 705C498 705 471 706 471 703C458 700 446 696 435 690C398 671 360 620 354 574Z" glyph-name="N" horiz-adv-x="692" unicode="N"/>
- <glyph d="M271 705C271 668 243 641 217 618C194 598 171 578 150 557C127 534 101 504 101 464C101 462 101 461 101 459C101 411 141 376 168 341C184 320 199 295 199 268C199 238 171 217 149 202C134 191 118 181 102 172C92 167 81 164 71 157C42 140 17 107 17 64C17 46 21 28 31 13C35 7 48 -11 56 -11C56 -11 57 -11 57 -11C64 -11 70 -3 73 2C54 14 39 38 39 61C39 85 56 103 78 107C96 107 145 85 151 82C205 58 304 8 362 -6C369 -9 379 -12 386 -12C387 -12 388 -12 389 -12C394 -12 398 -9 402 -7C480 35 551 90 609 157C650 204 690 262 690 340C690 407 667 475 641 518C605 577 545 631 463 641C427 645 390 641 354 649C330 654 299 667 291 691C287 699 288 705 277 705C275 705 273 705 271 705ZM137 177C188 206 270 223 281 292C281 292 281 319 280 319C277 344 264 366 249 386C223 419 175 466 175 518C175 530 178 543 186 555C189 559 196 572 202 572C204 572 207 570 209 569C232 554 261 543 294 543C325 543 354 550 385 551C389 551 392 551 396 551C444 551 491 539 531 510C588 469 633 401 633 309C633 251 613 192 572 151C542 121 498 101 441 101C370 101 306 126 249 147C212 160 177 177 137 177Z" glyph-name="O" horiz-adv-x="712" unicode="O"/>
- <glyph d="M61 277C63 271 67 257 76 257C78 257 82 258 84 259C137 269 177 316 177 370C177 418 139 446 109 463C79 481 39 501 39 541C39 579 49 636 99 636C105 636 112 635 118 634C157 624 186 591 200 555C212 524 215 491 215 458C215 441 214 423 214 406V163L163 184C149 139 137 102 111 65C108 62 102 54 102 49S113 38 118 35C134 56 157 76 184 76C185 76 185 76 186 76C198 76 215 72 215 56C215 52 214 47 214 44C214 -29 222 -76 232 -147C235 -147 240 -148 244 -148C257 -148 257 -142 262 -132C280 -88 297 -31 299 21C324 7 350 -6 376 -19C383 -7 389 5 395 18C399 27 403 38 409 46C414 52 421 56 427 61C438 70 450 80 460 91C506 142 547 207 547 285C547 394 480 455 480 563C480 584 482 606 487 627C491 644 498 660 503 677C435 675 368 641 332 605C317 590 301 571 294 551C289 566 285 582 279 597C256 652 212 705 133 705C124 705 115 703 107 700C42 679 16 602 16 535C16 491 33 435 53 403C57 396 60 390 71 390C75 390 80 390 83 390C87 390 90 389 94 389C116 388 149 381 149 352C149 305 106 276 71 276C67 276 64 277 61 277ZM403 628C400 596 396 564 396 531C396 440 439 386 463 314C470 291 476 266 476 242C476 240 476 239 476 237C476 178 448 118 413 83C409 79 404 73 399 71C397 71 390 71 390 74C385 76 380 79 375 82L326 109C315 115 301 116 301 132V465C301 481 301 497 304 513C315 564 356 607 403 628Z" glyph-name="P" horiz-adv-x="571" unicode="P"/>
- <glyph d="M271 705C271 668 243 641 217 618C199 603 182 587 165 571C136 544 101 512 101 461C102 409 145 374 173 335C187 315 199 293 199 268C199 238 171 217 149 202C134 191 118 181 102 172C92 167 81 164 71 157C42 140 17 107 17 64C17 46 21 28 31 13C35 7 48 -11 56 -11C56 -11 57 -11 57 -11C64 -11 70 -3 73 2C53 15 39 38 39 63C39 84 57 106 79 107C89 107 98 103 107 100C179 72 247 35 319 8C330 4 373 -12 386 -12C386 -12 387 -12 388 -12C393 -12 398 -9 402 -7C447 18 489 41 529 72C544 39 573 14 606 -2C620 -7 624 -8 641 -12C641 -12 643 -12 643 -12C649 -11 655 -5 660 -1C693 24 727 51 756 80C760 83 774 94 774 100S765 112 761 116C746 104 733 90 719 78C713 73 705 63 696 63S677 69 671 72C651 82 634 99 623 119C620 125 616 133 616 141C616 148 623 153 628 158C641 171 653 185 664 200C695 242 716 281 720 346C720 351 719 355 719 360C718 377 717 393 713 409C692 514 614 602 510 632C486 639 460 642 435 643C370 645 315 643 290 692C288 699 287 705 278 705C276 705 273 705 271 705ZM137 177C188 206 270 223 281 292C281 292 281 319 280 319C270 386 202 424 180 486C176 496 175 506 175 517C175 530 178 542 185 554C189 559 195 571 202 571C205 571 207 569 210 568C234 552 269 543 304 543C331 543 359 550 386 551C389 551 393 551 396 551C463 551 528 532 580 490C626 454 662 399 662 327C662 322 662 318 662 313C656 193 573 100 445 100C385 100 324 120 268 140C226 155 183 177 137 177Z" glyph-name="Q" horiz-adv-x="798" unicode="Q"/>
- <glyph d="M39 324H17C17 282 36 230 88 230C103 230 117 234 126 239C159 257 185 294 185 343C185 376 168 399 150 417C118 449 41 476 39 533C39 543 41 554 44 564C54 601 79 629 124 629C151 629 178 620 200 603C255 566 275 475 282 400C287 350 289 300 289 250C289 162 289 56 236 21C220 12 216 12 194 9C194 9 175 10 175 12C145 21 123 51 123 82C123 103 132 124 147 138C155 145 164 150 173 154L159 171C132 155 110 140 68 138C56 138 43 139 31 140C36 127 39 114 39 101C39 82 33 65 25 52C23 49 19 45 19 41C19 35 27 25 33 25C36 25 40 27 42 29C50 33 59 36 68 36C103 36 131 8 161 -6C172 -11 185 -13 197 -13C227 -13 258 0 281 18C346 73 369 179 369 288C369 300 368 311 368 322L365 383C365 391 363 398 363 406C364 412 369 414 374 416C381 420 391 423 399 423C402 423 405 423 408 422C421 418 422 404 423 392L450 182C455 108 478 30 517 -13C552 35 589 82 623 132L604 143C599 135 592 127 586 119C583 114 577 106 569 106C563 106 557 110 553 114C526 141 525 189 520 235C520 235 497 424 493 449C493 452 486 478 486 481S490 486 493 488L513 500L550 521C558 526 567 528 567 540C567 545 566 550 566 553C540 557 547 588 542 611C538 648 514 679 487 696C482 699 477 703 471 703C471 703 470 703 470 703C464 703 461 698 457 695C449 689 441 684 432 680C377 653 351 657 315 604C291 657 241 705 167 705C79 705 27 632 18 558C17 542 17 526 17 510V446C17 442 17 437 17 433C17 420 18 408 27 397C44 380 86 371 106 363C126 356 140 342 140 317C140 288 118 252 86 252C50 252 39 298 39 324ZM360 434C357 468 350 502 342 534L333 563C331 563 329 578 329 578C335 605 375 629 399 629C410 629 420 626 429 618C451 600 455 565 460 538C462 529 467 504 467 501C467 495 461 493 457 490L360 434Z" glyph-name="R" horiz-adv-x="644" unicode="R"/>
- <glyph d="M376 501L386 521C354 539 317 558 280 558C276 558 273 557 269 557C210 552 178 489 178 429C178 424 178 420 179 415C186 366 229 337 269 314C270 313 311 290 311 295C319 296 328 302 336 305L384 327C428 345 470 372 529 372C599 372 675 331 675 250C675 214 661 178 638 152C595 100 526 70 444 70C353 70 263 109 200 172C138 234 99 324 99 412C99 491 134 566 189 608C208 623 232 639 259 639C289 639 318 623 343 610L434 563C462 550 499 531 525 517C532 513 542 506 551 506C557 506 639 543 670 558C683 563 697 568 707 578C728 598 734 629 734 657L704 645C704 630 703 614 695 601C685 586 666 580 644 580C608 580 571 603 548 616L436 673C423 679 410 685 398 692C391 695 379 704 370 704C363 704 354 701 347 699C293 683 237 664 192 639C98 586 17 486 17 347C17 287 33 235 54 195C113 82 231 9 355 -8C375 -11 396 -13 416 -13C458 -13 500 -6 539 12C624 51 697 137 697 251C697 275 694 300 686 323C660 397 601 452 537 490C536 491 507 508 507 504C501 503 451 480 451 480L328 425C313 419 301 412 283 412C252 412 225 439 225 474C225 508 246 537 282 537C317 537 346 514 376 501Z" glyph-name="S" horiz-adv-x="756" unicode="S"/>
- <glyph d="M50 364C45 361 36 354 36 348C36 343 40 339 43 336C58 317 84 301 114 301C160 301 191 342 191 392S150 470 118 488C94 501 41 512 41 550C41 563 47 576 52 588C63 612 77 649 111 649C140 649 167 631 182 619C233 573 270 501 282 424C285 409 287 392 287 376C287 317 262 273 233 237C225 227 200 193 186 193C183 193 179 194 176 194C174 194 146 195 146 194C94 191 47 141 47 84C47 63 54 49 64 36C66 33 70 28 74 28C74 28 75 28 75 28C82 28 88 36 91 41C79 51 70 67 70 82C70 108 97 122 123 122C130 122 137 122 143 121C226 111 296 56 350 6C353 3 367 -11 371 -11C373 -11 380 -10 380 -8L396 1L461 39C486 53 514 66 536 85C566 109 594 150 594 199C594 242 569 268 548 292C522 320 476 356 476 406C477 423 491 437 502 449C528 476 560 501 594 518C591 524 589 532 585 536C581 541 573 541 568 545C559 551 551 559 545 569C516 616 520 705 448 705C393 705 352 668 333 633C326 621 320 608 317 594L294 630C266 666 224 705 164 705C158 705 152 704 146 704C69 693 27 611 19 541C18 532 17 523 17 514C17 485 29 465 38 444C42 429 55 432 70 428C100 421 151 410 151 367C151 346 138 323 115 323C85 323 64 344 50 364ZM485 463C456 433 414 403 414 347C414 340 414 333 416 326C428 284 484 257 510 232C528 214 540 199 540 169C540 122 508 72 454 72C450 72 446 72 442 73C402 82 376 119 348 137C324 154 297 167 269 177C255 181 240 184 226 188C253 207 280 226 305 247C338 276 363 306 363 365C363 433 354 499 336 550C334 556 324 577 324 584C325 591 329 599 331 606C343 633 364 655 395 655C396 655 396 655 397 655C426 655 439 630 443 608C452 560 437 473 485 463Z" glyph-name="V" horiz-adv-x="617" unicode="V"/>
- <glyph d="M435 649C417 662 402 673 373 673C340 673 307 653 295 626C265 658 235 696 189 703C189 703 171 705 171 705S150 704 150 703C68 691 17 610 17 531C17 479 38 432 74 415C88 409 102 410 116 407C133 403 151 386 151 365C151 342 135 314 108 314C87 314 69 327 58 338C56 341 50 350 45 350S30 344 30 339C30 336 32 334 33 332C50 310 78 291 113 291C166 299 188 344 188 397C188 399 188 402 188 404C186 440 165 480 129 492C116 496 103 495 90 497C67 501 44 515 38 539C37 539 37 566 38 566C43 600 61 645 106 645C160 645 196 593 218 566C230 552 242 538 251 522C277 475 279 419 279 366C279 356 279 346 279 335C279 274 257 230 229 196C224 191 213 176 205 176C201 176 198 178 194 179C187 181 180 182 173 182C105 182 49 130 49 67C49 33 64 12 82 -7H83L98 8V9C83 23 70 39 70 64C70 88 86 114 112 114C112 114 113 114 113 114C186 109 230 37 280 0C285 -4 293 -11 300 -11C303 -11 306 -9 309 -7L331 11C361 37 396 58 424 86L463 59L529 15C535 11 565 -11 571 -11C572 -11 572 -11 573 -11C579 -11 587 -6 593 -3C631 16 688 42 717 67C755 101 779 149 787 199C789 211 791 224 791 237C791 240 791 242 791 245C786 292 740 313 708 341C692 355 677 373 674 395C674 402 674 409 675 416C680 438 691 458 706 470L713 456C720 460 725 466 730 472L761 505C766 511 775 517 775 525C775 525 775 526 775 526L791 536L780 556C776 554 770 548 766 548C761 548 758 555 757 558L742 583C711 634 666 705 588 705C532 705 499 671 471 641C478 668 486 694 495 719C492 719 488 720 484 720C469 720 467 710 461 700C451 684 441 667 435 649ZM231 161C262 177 289 198 319 215L342 229C349 234 354 237 354 249C354 253 354 257 354 260C354 277 356 293 356 310C357 332 359 353 360 375C361 375 361 417 361 417S360 495 355 495C349 532 337 566 319 595C316 599 311 604 311 610C311 617 318 623 322 628C336 642 355 651 374 651C383 651 392 649 401 645C408 641 424 634 424 624C424 620 422 616 420 612C405 567 396 522 396 464C396 459 396 455 396 451C405 378 468 324 475 250C475 250 473 208 471 208C464 170 445 136 417 109C402 94 382 80 359 80C329 80 304 102 286 116L231 161ZM485 156C509 195 526 237 542 280C544 286 556 318 556 325C556 333 543 349 542 351L515 395C486 443 461 495 461 557C461 565 462 573 463 581C463 587 463 593 466 599C481 625 504 661 538 661C603 661 640 598 661 559L685 510C688 505 693 498 693 493C693 486 682 481 680 479C647 446 610 402 610 345C610 311 626 294 647 276C679 250 739 225 739 170C739 125 711 91 685 71C679 67 655 50 647 50C646 50 646 50 645 50C640 51 610 72 600 79L522 132C510 140 498 149 485 156Z" glyph-name="W" horiz-adv-x="812" unicode="W"/>
- <glyph d="M266 23C266 14 266 5 266 -4C266 -75 232 -130 195 -167C191 -171 183 -176 183 -183C183 -184 184 -185 184 -186C184 -190 191 -194 194 -194C199 -194 203 -191 207 -187C252 -145 289 -76 289 0C289 52 272 108 221 108C189 108 168 84 168 54C168 23 190 1 221 1C243 1 255 10 266 23ZM462 23C462 14 462 5 462 -4C462 -75 428 -130 391 -167C387 -171 379 -176 379 -183C379 -184 380 -185 380 -186C380 -190 387 -194 390 -194C395 -194 399 -191 403 -187C450 -143 484 -76 484 6C484 21 483 36 479 51C469 80 454 108 416 108C384 108 364 83 364 54C364 40 369 26 378 16C388 6 403 1 417 1C439 1 451 10 462 23Z" glyph-name="backslash" horiz-adv-x="500" unicode="\"/>
- <glyph d="M162 484L135 456C113 434 91 412 74 386C38 331 17 254 17 169C17 158 18 148 19 137C26 79 65 25 113 1L97 -13L128 -12C167 16 200 49 237 78C240 61 245 44 251 28C253 25 263 4 263 2C263 -3 257 -9 254 -13L279 -12C300 10 320 33 338 58L339 87C337 85 333 82 329 82C318 82 308 95 304 103C302 109 302 116 302 123V254C302 266 301 279 301 292C301 328 309 354 327 376C330 381 336 385 336 390C336 397 325 407 324 409C315 421 312 422 292 425C251 436 224 446 189 466C180 472 171 479 162 484ZM121 414C134 408 200 368 202 367L222 355C230 351 234 347 234 336C234 333 234 330 234 328V124C234 121 234 118 234 114C234 111 234 108 233 105C228 91 192 81 177 81C137 81 107 116 97 153C91 173 90 193 90 213C90 225 91 238 91 250C92 296 91 345 108 389C111 398 117 406 121 414Z" glyph-name="a" horiz-adv-x="365" unicode="a"/>
- <glyph d="M22 585C21 583 13 551 13 549C13 540 22 534 26 529C39 510 46 489 46 458C46 446 45 434 45 422V180C45 173 45 166 45 159C45 140 42 127 31 115C23 107 17 109 17 92V73C59 66 101 46 135 22C142 17 150 12 155 6C157 3 156 0 158 -3C160 -8 168 -11 173 -13C197 28 226 66 250 107C286 167 315 237 315 308C315 377 288 429 254 466C252 468 236 484 234 484L113 390C113 408 112 426 112 444C112 488 116 532 144 569C162 593 192 615 231 615V645C168 645 117 608 77 572C73 568 68 560 62 560C62 560 61 560 61 560C56 560 32 580 22 585ZM217 92C183 112 148 131 115 152L113 168C114 235 110 303 115 363C136 383 160 401 183 419C227 381 256 328 256 252C256 214 250 177 241 146C235 127 225 110 217 92Z" glyph-name="b" horiz-adv-x="341" unicode="b"/>
- <glyph d="M230 106C211 94 204 84 170 84C142 84 122 97 108 111C88 133 84 162 84 191C84 231 87 270 87 310C88 334 82 356 82 379C82 388 85 402 94 407C96 407 106 407 106 405L129 396C144 389 210 362 221 359C235 384 250 410 263 436C234 447 205 459 176 471L154 480C152 481 148 482 145 482C140 482 136 478 133 475C97 445 77 438 53 387C29 341 17 288 17 232C17 155 24 90 66 42C82 22 104 6 128 -4C134 -7 143 -12 150 -12C151 -12 152 -12 153 -12C158 -11 175 8 175 8C181 14 246 79 247 83C247 90 231 105 230 106Z" glyph-name="c" horiz-adv-x="276" unicode="c"/>
- <glyph d="M127 433V431C106 420 88 403 68 390C63 387 49 377 46 373C45 373 45 366 45 366V154C45 148 46 142 46 137C46 115 35 104 17 99C17 96 16 93 16 89C16 86 17 82 19 80C21 76 28 76 32 74C74 62 119 39 151 19C167 9 181 -3 197 -13L233 44C273 108 313 174 313 271C313 349 282 415 238 450C206 478 167 487 128 499C89 510 38 526 38 577C38 597 51 623 79 623V643C27 643 -11 601 -11 552C-11 492 48 466 88 449C101 443 114 437 127 433ZM113 98V340C113 348 112 357 112 366C112 387 120 401 133 411C137 415 143 421 149 421C156 421 166 415 171 412C227 382 279 322 279 241C279 187 262 138 243 99C240 94 235 80 226 80C224 80 222 80 221 81L199 84C170 89 142 94 113 98Z" glyph-name="d" horiz-adv-x="339" unicode="d"/>
- <glyph d="M247 461C245 465 241 482 236 482S225 479 221 477L189 463C152 447 114 433 78 413C68 408 38 395 35 385C23 354 17 259 17 235C17 136 52 66 99 10C103 5 113 -11 122 -11C125 -11 148 5 148 5C157 11 237 63 240 68C241 69 240 74 239 74C236 78 232 86 227 86C227 86 226 86 226 86C208 82 219 78 194 78C190 78 187 79 183 79C121 90 88 157 85 214C85 217 84 221 84 225S85 232 87 235C90 238 126 253 126 253L224 294L255 307C261 310 266 310 266 317C266 320 266 323 265 325C265 325 244 449 244 454C244 456 245 459 247 461ZM84 262C84 316 86 371 118 401C129 411 142 417 156 422C164 426 172 430 180 432L196 308L84 262Z" glyph-name="e" horiz-adv-x="294" unicode="e"/>
- <glyph d="M1 374H36C36 198 43 56 62 -111C65 -133 69 -155 70 -177H91C91 -163 100 -55 100 -55L118 176C122 176 129 317 129 317S128 374 125 374H217V424H124C121 424 117 424 113 426C110 428 109 432 108 435C103 444 86 487 86 491C87 496 90 501 92 505C108 529 135 551 171 551C191 551 205 543 220 537C231 564 242 592 253 620L234 627L232 620C213 629 194 641 171 641C110 641 95 563 79 516C72 492 62 468 52 445C40 418 17 398 1 374Z" glyph-name="f" horiz-adv-x="233" unicode="f"/>
- <glyph d="M245 76C248 62 251 48 255 35C266 -1 286 -40 286 -78C286 -91 284 -103 278 -116C268 -145 232 -169 199 -169C138 -169 96 -130 65 -102C62 -99 58 -94 53 -94C53 -94 52 -94 52 -94C47 -94 42 -99 37 -101C48 -115 63 -127 77 -139C115 -169 160 -192 209 -192C231 -192 247 -187 265 -182C319 -161 367 -107 367 -38C367 -28 362 -25 357 -18C327 24 314 62 314 137C314 147 314 157 314 167C314 247 325 329 342 397C319 405 338 400 307 405C273 410 241 433 218 446C210 451 182 468 173 468S157 454 154 450L116 405C68 347 38 272 38 197C38 127 66 65 101 25C105 20 118 3 126 3C129 3 157 21 157 21L245 76ZM131 393C157 379 186 369 213 357L235 348C241 346 246 342 246 334C246 330 245 325 245 321V263C245 226 244 188 244 151V121C244 118 245 106 242 106C240 102 203 80 203 80C198 77 178 63 173 62C166 62 160 72 156 77C126 114 105 162 99 219C98 219 98 273 99 273C100 299 100 326 109 351C118 375 117 369 131 393Z" glyph-name="g" horiz-adv-x="392" unicode="g"/>
- <glyph d="M64 567H63C55 578 45 592 34 600C33 594 30 588 30 582C31 578 34 574 36 570C45 557 47 537 47 517C47 512 47 506 47 501V128C47 124 47 119 47 115C47 85 41 62 17 47C21 43 26 37 32 35C35 35 47 35 47 37C52 38 56 38 60 38C85 38 97 30 117 20C114 17 101 5 101 0C101 0 101 0 101 -1C101 -6 109 -11 114 -11C120 -11 125 -1 127 1L145 21C166 44 186 68 208 90V91L191 103L163 70C152 77 141 83 130 89C121 94 114 96 114 109C114 112 114 116 114 119V323C114 327 114 332 114 336C114 349 118 352 126 358L155 383C159 386 162 389 165 389C167 389 169 388 172 386C188 370 201 349 212 330C240 281 254 225 254 169C254 149 252 129 249 110C234 33 198 -33 158 -88C152 -97 145 -105 139 -114C136 -117 131 -121 131 -126C131 -133 146 -141 148 -142C226 -41 322 62 322 234C322 307 289 379 249 426C247 428 234 444 233 446C233 449 236 452 238 454S254 467 254 469C251 473 246 481 240 481C240 481 239 481 239 481C234 480 202 451 202 451L114 375V549C114 559 114 569 116 579C122 605 146 624 173 625V645C136 645 110 617 87 592C79 584 71 576 64 567Z" glyph-name="h" horiz-adv-x="348" unicode="h"/>
- <glyph d="M82 505C84 505 87 505 90 505C105 505 109 511 115 521C125 537 134 556 134 578C134 593 123 600 108 600C88 600 80 584 80 563C80 559 80 554 80 550C80 535 82 520 82 505ZM17 392V391L31 378H32L53 400V129C53 123 53 118 53 112C53 103 53 94 55 86C62 47 83 13 113 -13H114C136 14 157 41 177 70C173 73 167 79 162 79C158 79 149 75 149 75C139 75 130 84 125 92C120 103 120 116 120 128V308C120 319 120 330 120 341C120 385 130 409 154 433C137 449 122 467 103 481L94 476C69 447 43 420 17 392Z" glyph-name="i" horiz-adv-x="205" unicode="i"/>
- <glyph d="M64 567H63C54 578 44 589 34 600L30 582L40 562L47 530C47 496 47 462 46 430C37 412 27 395 17 378H47V141C47 133 47 125 47 117C47 86 41 62 17 47L32 34C53 26 72 16 90 5C98 -1 105 -7 115 -11L123 -4L197 78V79L180 91C177 87 168 73 161 73C157 73 153 76 149 78L125 92C116 97 114 100 114 114C114 121 114 128 114 135V378H217V429H204C217 461 232 509 232 546C232 555 230 564 224 572C213 586 195 586 179 589L114 519C114 529 113 539 113 550C113 591 132 621 180 621C184 621 189 621 194 621V641C188 641 183 641 177 641C169 641 161 641 153 639C124 630 102 608 82 586C76 580 69 574 64 567ZM114 429V466C114 470 114 474 114 479C114 494 123 498 131 507L145 521C147 524 152 530 158 530C163 530 170 528 174 525C188 518 198 509 198 488C198 473 191 451 187 438C185 432 182 428 173 428C170 428 166 429 163 429H114Z" glyph-name="k" horiz-adv-x="259" unicode="k"/>
- <glyph d="M64 567H63L35 601H34C33 596 30 590 30 584S35 572 37 568C43 556 46 543 46 526C46 518 46 510 46 503V126C46 121 46 117 46 112C46 84 41 61 17 47C32 31 53 26 72 16C87 7 100 -5 115 -13C133 9 153 29 171 50C174 53 189 67 189 73C189 78 179 83 177 83C170 83 167 73 160 73C156 73 117 95 114 102C114 102 114 470 114 470C114 479 113 572 115 572C119 605 154 621 184 621V641C146 641 114 620 88 594C79 586 71 577 64 567Z" glyph-name="l" horiz-adv-x="211" unicode="l"/>
- <glyph d="M89 484L17 397C35 389 49 373 54 353C56 342 56 331 56 320V173C56 158 57 143 57 127C57 106 56 81 46 69C41 62 33 63 33 50C33 47 34 42 34 39C50 34 60 22 68 8C74 -2 74 -14 90 -14C93 -14 97 -13 100 -13C106 10 121 32 145 39V60C124 69 123 88 123 116V351C123 354 123 358 123 361C123 374 129 377 138 383S155 395 164 402C168 405 173 410 179 410S192 400 196 395C207 381 219 368 230 354C239 345 247 340 247 323C247 317 246 310 246 303V142C246 131 247 118 247 107C247 89 246 77 236 67C231 62 224 61 224 50C224 47 225 42 225 39C240 34 250 23 258 10L266 -4C268 -11 272 -14 281 -14C284 -14 288 -13 291 -13C296 10 313 32 336 39V60C315 68 314 90 314 110C314 113 314 116 314 119V342C314 347 314 354 314 359C314 373 316 373 326 381L357 403C360 406 365 410 370 410S378 405 381 402C386 395 415 361 424 351C428 346 434 341 436 335C437 335 437 328 437 328V96C437 92 437 86 437 82C437 68 439 63 444 53C447 47 463 17 463 12C463 4 456 1 456 -6C456 -12 465 -17 470 -19L540 85V86L523 98L515 84C508 91 505 94 505 109C505 112 505 115 505 118V379C505 381 505 384 505 386C505 401 514 405 527 407V421C501 421 477 433 459 451C453 458 447 465 441 473C439 476 437 481 433 481C432 481 432 481 431 481C428 481 426 479 423 477C404 463 319 401 316 401C315 401 315 401 314 401C312 401 311 402 309 404C293 425 275 444 259 464C255 468 248 481 241 481C238 481 236 479 233 478C226 472 218 467 211 462C182 441 153 418 123 398C123 429 112 462 89 484Z" glyph-name="m" horiz-adv-x="577" unicode="m"/>
- <glyph d="M241 484L123 398C123 421 116 444 104 464C102 469 95 481 88 481C83 479 69 460 68 459C51 439 32 419 17 397C42 385 55 365 55 332C55 326 55 320 55 315V167C55 161 55 91 55 91C54 83 51 74 46 68C41 63 33 61 33 50C33 47 34 42 34 39C48 34 58 24 66 12L74 -2C76 -9 79 -14 90 -14C98 -14 100 -11 102 -4C110 16 126 34 145 39V60C125 67 122 87 122 107C122 115 123 124 123 131V346C123 350 122 355 122 360C122 374 130 378 140 384C153 394 168 402 179 414H180C202 388 224 362 245 334C249 246 243 151 247 65L272 12L262 -8L277 -19H278L348 85V86L333 98H332L323 84C317 90 313 95 313 107C313 110 313 113 313 116V378C313 380 313 383 313 386C313 401 321 405 335 407V421C308 421 283 435 265 454C256 463 250 475 241 484Z" glyph-name="n" horiz-adv-x="387" unicode="n"/>
- <glyph d="M18 95V93C42 79 157 8 174 -4C177 -7 181 -11 186 -11C186 -11 187 -11 187 -11C190 -10 239 47 261 82C302 147 319 226 319 303C319 374 305 432 272 484L98 414L55 396C45 392 39 393 39 378C39 374 39 371 39 368V144C39 142 39 140 39 138C39 124 38 111 27 101L18 95ZM226 69C224 66 221 60 217 60C214 60 212 61 210 62C179 82 169 88 131 111L115 121C109 125 105 127 105 137C105 142 106 147 106 151V328C106 333 106 390 106 390C108 398 120 401 127 403C148 412 170 420 191 429C196 431 204 436 210 436C213 436 215 435 217 433C221 426 224 417 227 409C249 351 258 276 258 200C258 152 248 97 226 69Z" glyph-name="o" horiz-adv-x="345" unicode="o"/>
- <glyph d="M72 498C55 472 30 443 30 406C30 399 31 393 34 387C47 365 77 355 81 328C82 319 82 311 82 302V132L59 140L16 71C39 62 63 54 85 44L88 26C93 -46 99 -117 105 -188H126C132 -117 137 -46 143 25L244 -11C250 0 257 10 264 21C304 85 364 168 364 256C364 338 323 402 288 446C285 450 274 467 267 467C263 467 259 464 256 462L234 446C205 427 179 405 149 387C148 397 138 401 130 406C113 415 92 420 80 435C75 441 71 448 71 456C71 470 85 482 91 489L72 498ZM268 64C230 80 187 91 151 109L149 126C150 206 146 288 151 361C170 377 192 391 213 405C220 392 231 381 240 370C274 326 309 266 309 198C309 156 297 121 282 89C277 81 272 73 268 64Z" glyph-name="p" horiz-adv-x="390" unicode="p"/>
- <glyph d="M98 484L17 395C47 389 64 367 64 330C64 324 64 318 64 312V144C64 133 64 121 64 109C64 103 64 98 64 92C62 69 40 48 17 47C23 39 30 32 44 32C67 28 87 18 104 8C108 6 127 -11 131 -11C137 -11 141 -4 144 -1C151 8 255 123 255 123V124L240 136H239C224 121 211 105 197 89C192 84 186 74 179 73C172 73 163 80 158 83L142 93C135 95 132 100 132 109C132 112 132 116 132 119V348C132 351 132 354 132 358C132 373 139 376 148 385C158 395 168 406 179 415C201 385 224 356 247 327H248L299 378V379L247 445C238 457 226 469 221 484L132 396C132 428 120 461 98 484Z" glyph-name="r" horiz-adv-x="325" unicode="r"/>
- <glyph d="M1 374H37C36 370 36 366 36 362C36 357 36 353 36 349C36 335 36 321 37 307C37 307 37 256 37 256C37 184 52 -3 55 -37C59 -84 63 -131 71 -177H91C93 -133 98 -90 101 -46C106 23 111 91 117 160C120 194 129 286 129 316C129 356 124 394 109 431C107 435 87 487 87 491C87 500 98 513 101 516C118 538 144 550 171 550C192 550 204 542 221 537C232 564 243 592 254 620L235 627L233 620C214 629 195 641 172 641C111 641 94 562 79 515C72 491 62 468 52 445C41 418 18 398 1 374Z" glyph-name="s" horiz-adv-x="173" unicode="s"/>
- <glyph d="M17 378H47V141C47 133 47 125 47 117C47 86 41 62 17 47L32 34C53 26 72 16 90 5C98 -1 105 -7 115 -11L125 -2L217 100V101C213 104 207 110 202 111C197 111 193 105 190 102L173 83C169 79 166 73 160 73C156 73 153 76 150 78C140 84 128 89 118 96C114 100 114 105 114 110C114 112 114 114 114 116V378H195V429H115C118 475 126 515 134 556L115 555L107 543L17 378Z" glyph-name="t" horiz-adv-x="219" unicode="t"/>
- <glyph d="M99 484L17 379V378L32 366H33C36 370 49 389 54 389C62 389 69 374 71 371C80 354 81 336 81 317C81 314 81 310 81 307V114C81 111 81 107 81 104C81 78 62 69 41 63V42C77 42 108 23 126 -2C130 -7 132 -13 141 -13C155 -13 165 3 174 12L260 98C270 75 282 52 293 29C297 21 304 11 304 2C304 0 303 -1 303 -3L320 -13L398 112L380 122C377 117 365 95 361 94C358 94 356 95 354 97C338 109 328 128 328 154C328 160 328 166 328 171V324C328 341 328 359 328 377C328 394 327 414 335 424C337 428 343 430 344 434C345 434 345 446 345 446C325 450 307 464 301 484C299 484 297 484 295 484C287 484 286 480 283 475C276 460 258 450 243 446C243 444 243 442 243 440C243 430 252 426 255 421C260 410 260 397 260 382C260 368 260 354 260 341V161C260 154 261 147 261 140C261 124 255 122 245 112L210 77C206 73 199 63 193 63C188 63 184 68 181 70L161 88C154 93 149 97 149 109V295C149 338 148 378 134 419C128 438 111 472 99 484Z" glyph-name="u" horiz-adv-x="423" unicode="u"/>
- <glyph d="M107 565C100 558 93 550 85 543C55 515 17 482 17 438C17 417 36 406 50 394C61 385 70 373 77 360C96 324 97 284 97 244V136C97 129 97 122 97 115C97 88 89 68 62 63V43C78 48 93 56 111 56C153 56 193 28 205 -13C208 -13 212 -14 215 -14C219 -14 222 -13 225 -11C231 -8 245 16 246 18L290 90C326 148 359 212 359 281C359 354 323 411 286 443C281 448 275 453 269 456C270 459 275 459 275 463L260 477L149 362C144 385 124 416 112 429C98 444 74 458 74 480C74 483 74 485 75 488C75 493 77 497 79 501C88 519 110 538 122 550V551L107 565ZM257 71C227 87 212 103 165 103C165 141 165 179 165 216C165 235 165 254 165 273C165 288 163 303 161 317C160 322 157 329 157 334C157 344 166 349 171 354L203 387C207 391 214 402 220 402S233 392 237 388C274 348 303 291 303 222C303 171 289 132 270 94C265 86 260 79 257 71Z" glyph-name="v" horiz-adv-x="384" unicode="v"/>
- <glyph d="M57 391V125C57 120 57 114 57 108C57 89 55 68 35 60V39C50 34 61 22 69 9C74 0 76 -14 91 -14C94 -14 98 -13 101 -13C107 10 122 32 146 39C146 42 146 45 146 48C146 52 146 55 145 58C143 63 136 66 133 70C127 78 125 88 124 98C123 98 124 236 124 346C124 352 123 390 126 390C128 394 132 396 136 399L157 415C160 417 175 429 180 429C186 429 194 421 196 419L222 401C229 395 238 393 238 380C238 376 237 371 237 368V121C237 117 237 114 237 110C237 95 236 81 222 71C218 68 214 67 210 65C220 57 232 51 243 44L303 7C307 4 330 -11 335 -11C342 -11 348 -1 351 2C364 15 376 29 389 42C444 102 500 179 500 270C500 286 499 303 496 319C481 384 435 433 395 484H394C364 463 337 437 305 418L296 422C269 442 240 461 215 484C193 469 172 452 151 436C142 430 129 415 117 415C90 415 70 439 70 460C70 469 74 475 82 480C87 482 97 486 97 493C97 499 90 504 87 508C77 503 68 497 58 492C40 483 17 474 17 448C17 420 35 396 57 391ZM348 424C391 378 444 310 449 240C449 240 448 195 447 195C436 145 419 112 391 76C387 71 378 58 371 58C365 59 360 64 355 67L321 88C313 93 304 95 304 108C304 113 305 118 305 122V366C305 370 305 373 305 377C305 392 309 393 319 401C329 408 340 415 348 424Z" glyph-name="w" horiz-adv-x="519" unicode="w"/>
- <glyph d="M87 484C64 455 40 427 17 397C22 394 27 391 32 387C54 366 54 339 54 311V124C54 90 51 60 17 47C21 43 28 35 34 35C38 35 43 36 46 37C54 38 62 39 70 39C83 37 94 35 106 30C112 27 118 23 124 20C120 16 108 6 108 0C108 -5 115 -11 120 -11C127 -11 130 -3 133 0L154 23C178 51 206 77 228 106C224 109 218 115 213 115S203 109 200 105L180 83C176 79 173 73 167 73C163 73 160 76 157 78C147 84 134 89 125 96C121 100 121 104 121 108C121 110 121 111 121 113V322C121 324 121 326 121 329C121 345 133 348 143 356C159 369 178 380 192 395H193C201 385 210 376 218 366C258 319 288 247 288 170C288 157 287 144 285 131C273 49 225 -22 182 -78C175 -86 147 -121 143 -128C148 -131 155 -140 161 -140C165 -140 169 -133 172 -130L197 -100C230 -60 263 -18 290 27C323 82 356 146 356 226C356 320 312 394 259 447C268 454 279 459 285 469L275 484L121 365C121 367 122 410 121 410C118 437 107 465 87 484Z" glyph-name="y" horiz-adv-x="381" unicode="y"/>
- <glyph d="M119 484C95 447 69 412 46 374L45 354C55 362 66 371 80 371C116 371 142 330 142 300C142 249 92 227 65 204C58 199 54 194 54 184C54 180 54 177 54 174L95 167C87 157 78 149 71 139C41 102 17 48 17 -14C17 -65 34 -116 76 -148C93 -160 119 -172 146 -172C160 -172 175 -169 185 -165C243 -141 273 -72 273 3C273 49 260 96 239 136C226 160 210 180 192 200C212 208 234 212 258 216C256 222 251 233 242 233C238 233 205 227 193 223C189 221 182 218 177 218C176 218 176 218 175 218C170 219 148 237 140 241C147 249 155 256 163 263C186 287 208 316 208 360C208 420 167 466 119 484ZM47 -27C47 -19 48 -10 48 -2C50 39 65 81 88 115C92 121 114 151 121 151C125 150 129 146 132 144C177 104 202 28 202 -45C202 -62 199 -78 192 -93C180 -119 151 -143 117 -143C104 -143 91 -139 80 -129C52 -104 51 -62 47 -27Z" glyph-name="z" horiz-adv-x="299" unicode="z"/>
- <glyph d="M1 374H36C36 186 47 13 69 -165C69 -172 71 -178 81 -178C84 -178 88 -177 91 -177C91 -164 110 70 118 174C122 221 129 269 129 316C129 354 125 392 111 428C108 435 87 483 87 490C87 500 97 512 101 516C118 536 144 551 171 551C186 550 198 544 212 541C200 505 188 470 173 437L126 374H162C162 368 161 361 161 355C161 340 162 326 162 311C163 206 167 101 177 -4C182 -62 186 -120 196 -177H216C219 -137 254 308 254 319C254 357 250 395 235 430L217 474C215 479 212 485 212 490C212 499 222 511 225 515C241 535 268 551 296 551C314 551 331 542 346 537L379 620L360 628L358 620C338 629 318 641 295 641C283 641 273 637 264 632C260 630 255 624 250 623C245 623 239 626 235 628L232 620C215 629 192 641 170 641C112 641 95 563 80 519C72 494 63 468 52 444C40 418 18 397 1 374Z" glyph-name="Aogonek" horiz-adv-x="305" unicode="&#x104;"/>
- <glyph d="M232 620C214 629 194 641 171 641C112 641 94 565 80 517C75 503 56 454 52 444C40 417 17 398 1 374H36C36 180 46 20 69 -165C69 -172 71 -178 81 -178C84 -178 88 -177 91 -177C91 -146 96 -114 98 -83C104 3 111 88 118 174C122 222 128 270 129 318C129 356 124 394 110 429L92 473C90 478 87 484 87 490C87 502 100 516 105 521C122 539 145 550 170 550C189 550 206 543 220 537C231 559 239 583 248 606C254 619 258 642 276 642C285 642 290 632 290 623C290 596 274 567 266 553L203 438C192 418 180 399 171 378H201V142C201 133 202 123 202 113C202 84 194 61 171 47C182 35 195 30 210 24C222 18 234 12 245 4C245 4 270 -17 270 -10C273 -9 276 -6 278 -3L293 14C311 34 346 71 362 91C365 93 369 97 369 101S359 114 355 114C350 108 322 74 315 73C312 73 294 83 288 87C277 93 267 95 267 112C267 118 268 123 268 128V378H337V429H269C272 443 272 458 273 473C276 498 281 523 286 547C288 556 293 564 296 573C301 586 305 601 305 614C305 640 294 662 271 662S238 636 232 620Z" glyph-name="Cacute" horiz-adv-x="389" unicode="&#x106;"/>
- <glyph d="M1 374H36C36 200 43 53 62 -111C65 -133 69 -155 70 -177H91C91 -163 112 103 119 188C123 188 128 318 128 318S127 374 125 374H161C161 200 168 53 187 -111C190 -133 194 -155 195 -177H216C216 -163 237 103 244 188C248 188 253 318 253 318S252 374 250 374H342V424H248C245 424 241 424 238 426S233 433 232 436C229 445 211 489 211 490C211 496 215 501 218 506C233 528 260 551 295 551C315 551 330 543 345 537L378 620L359 627L357 620C337 629 316 641 293 641C282 641 272 638 264 633C259 630 255 624 249 624C246 624 234 625 234 627L232 620C214 628 193 641 172 641C111 641 93 562 79 514C75 502 69 490 65 478C60 467 57 455 52 444C40 417 17 398 1 374ZM212 541C205 520 198 499 190 478L178 448C173 437 169 424 153 424C149 424 145 424 142 424H123C111 424 109 430 105 441L92 473C90 478 86 484 86 490C86 498 93 506 97 512C113 533 138 551 169 551C188 551 195 546 212 541Z" glyph-name="Dcaron" horiz-adv-x="365" unicode="&#x10E;"/>
- <glyph d="M227 567C220 579 209 591 199 600L195 582C202 570 207 555 211 540V424H210L187 484C176 479 61 412 61 412C45 402 44 399 38 377C25 338 17 284 17 236C17 228 17 220 17 213C17 156 20 93 63 50C78 35 106 18 129 14L115 -4L132 -11C159 10 178 39 205 60C232 48 254 31 280 19L263 0V-1L280 -13L373 91V92C369 95 363 101 358 101C354 101 351 98 349 95C346 92 330 73 326 73S318 76 314 78L293 90C286 94 279 98 279 109C279 111 279 113 279 115V327C279 330 279 333 279 336C279 351 286 354 295 361C307 371 321 381 331 393H332C340 381 351 370 360 358C393 309 420 243 420 167C418 69 375 -17 326 -84C315 -99 303 -112 293 -127L311 -142H312C332 -120 350 -96 368 -72C431 12 488 113 488 221C488 323 446 395 395 448L420 468V469L407 484H406L279 375V554C279 565 279 575 282 585C288 602 302 616 318 622C324 624 331 625 338 626V646C308 645 283 627 263 605C251 592 241 578 227 567ZM136 431C144 409 153 387 162 366L211 393V119C211 116 211 112 211 109C211 93 203 90 194 81C184 71 176 57 158 57C142 57 126 71 117 83C88 120 87 184 85 241C85 252 84 263 83 274V291C82 298 82 305 82 312C82 357 95 409 136 431Z" glyph-name="Ecaron" horiz-adv-x="512" unicode="&#x11A;"/>
- <glyph d="M198 600L194 582C201 571 206 556 210 542C211 504 211 465 210 427H209L187 483C174 480 162 470 151 464L82 424C74 419 66 415 58 410C43 402 44 395 37 376C25 336 17 285 17 235C17 226 17 218 17 209C17 153 21 94 62 51C78 35 103 18 129 14L115 -4L132 -11L140 -5L203 62H204C217 40 236 20 256 4C260 1 272 -11 278 -11C283 -11 296 6 296 6L343 58C347 63 359 72 359 80C358 83 351 88 346 88C345 88 345 88 344 88C337 86 333 73 325 73C321 73 298 87 290 92C283 97 278 97 278 109C278 114 279 119 279 123V378H381V429H369C379 459 397 509 397 545C397 549 397 552 396 556C394 575 372 589 351 589C338 589 330 574 324 568C309 552 295 536 279 520V556C279 560 279 563 279 567C279 603 310 621 344 621C349 621 354 621 358 621V641C352 641 347 641 342 641C291 641 267 607 241 581C238 578 233 570 228 570C224 570 221 575 219 578C212 585 206 595 198 600ZM349 429H279V471C279 473 279 476 279 478C279 483 279 487 282 491C288 501 298 510 306 518C311 523 314 530 323 530C347 530 363 507 363 488C363 468 352 449 349 429ZM135 431L161 366L184 377L211 378V119C211 116 211 113 211 110C211 94 202 89 193 80S176 57 158 57C144 57 130 67 121 77C99 102 94 134 90 166C88 182 86 197 85 213C86 246 82 275 82 308C82 360 95 406 135 431Z" glyph-name="Eogonek" horiz-adv-x="422" unicode="&#x118;"/>
- <glyph d="M309 570C303 568 283 556 280 552C273 544 277 529 261 529C252 529 244 534 237 536C253 555 273 572 290 590C294 594 311 609 311 615C311 631 277 638 269 638C254 638 241 629 231 624C209 610 185 599 185 564C185 538 205 503 236 503C253 503 269 514 285 523C297 530 312 542 312 557C312 558 312 559 312 560C312 564 310 567 309 570ZM223 551C221 559 220 567 220 574C220 591 229 612 247 612C257 612 267 608 276 603L223 551ZM162 484L135 456C113 434 91 412 74 386C38 331 17 254 17 169C17 158 18 148 19 137C26 79 65 25 113 1L97 -13L128 -12C167 16 200 49 237 78C240 61 245 44 251 28C253 25 263 4 263 2C263 -3 257 -9 254 -13L279 -12C300 10 320 33 338 58L339 87C337 85 333 82 329 82C318 82 308 95 304 103C302 109 302 116 302 123V254C302 266 301 279 301 292C301 328 309 354 327 376C330 381 336 385 336 390C336 397 325 407 324 409C315 421 312 422 292 425C251 436 224 446 189 466C180 472 171 479 162 484ZM121 414C134 408 200 368 202 367L222 355C230 351 234 347 234 336C234 333 234 330 234 328V124C234 121 234 118 234 114C234 111 234 108 233 105C228 91 192 81 177 81C137 81 107 116 97 153C91 173 90 193 90 213C90 225 91 238 91 250C92 296 91 345 108 389C111 398 117 406 121 414Z" glyph-name="Lcaron" horiz-adv-x="365" unicode="&#x13D;"/>
- <glyph d="M141 619C138 619 138 597 138 580C138 570 139 547 138 547C138 541 137 535 136 529C136 527 136 525 136 522C136 521 136 519 136 518C139 514 146 508 152 508C160 508 177 529 178 531C198 555 208 588 208 619C208 637 195 651 177 651C156 651 144 636 141 619ZM274 517C279 514 285 508 291 508C294 508 297 511 300 513C328 533 347 578 347 619C347 639 333 651 315 651C282 651 277 614 277 581C276 559 278 538 274 517ZM162 484L135 456C113 434 91 412 74 386C38 331 17 254 17 169C17 158 18 148 19 137C26 79 65 25 113 1L97 -13L128 -12C167 16 200 49 237 78C240 61 245 44 251 28C253 25 263 4 263 2C263 -3 257 -9 254 -13L279 -12C300 10 320 33 338 58L339 87C337 85 333 82 329 82C318 82 308 95 304 103C302 109 302 116 302 123V254C302 266 301 279 301 292C301 328 309 354 327 376C330 381 336 385 336 390C336 397 325 407 324 409C315 421 312 422 292 425C251 436 224 446 189 466C180 472 171 479 162 484ZM121 414C134 408 200 368 202 367L222 355C230 351 234 347 234 336C234 333 234 330 234 328V124C234 121 234 118 234 114C234 111 234 108 233 105C228 91 192 81 177 81C137 81 107 116 97 153C91 173 90 193 90 213C90 225 91 238 91 250C92 296 91 345 108 389C111 398 117 406 121 414Z" glyph-name="Lslash" horiz-adv-x="365" unicode="&#x141;"/>
- <glyph d="M17 378H47V142C47 133 48 123 48 113C48 84 40 61 17 47C33 30 56 25 76 14C86 6 96 5 96 -13C98 -21 100 -28 103 -35C119 -70 152 -99 201 -99C213 -99 224 -98 235 -95C301 -77 343 -8 343 69C343 141 307 213 249 256C232 268 213 280 192 286V287C203 293 211 305 219 315C235 337 249 363 249 397C249 440 225 486 196 504C175 476 157 433 116 429C116 459 121 490 127 519C129 531 133 544 134 556L115 555L107 543L17 378ZM114 242V366C114 380 122 386 136 386C167 386 182 356 182 332C182 291 142 265 114 242ZM114 204C196 193 253 130 267 57C270 45 272 33 272 21C272 3 267 -14 256 -30C238 -52 210 -71 175 -71C160 -71 145 -66 134 -54C127 -46 117 -27 117 -16C117 -15 117 -15 117 -14C119 -6 133 6 136 10C143 18 190 66 190 74C190 78 181 84 177 84C171 84 166 74 163 70C147 79 130 88 116 99C110 129 116 170 114 204Z" glyph-name="Nacute" horiz-adv-x="364" unicode="&#x143;"/>
- <glyph d="M74 533L91 522C115 559 159 584 204 584C214 584 225 583 235 580C269 570 303 543 303 502C303 493 300 484 296 477C284 456 260 449 237 449C203 449 165 464 145 476C142 478 138 481 134 481C129 481 126 474 123 471C88 422 51 374 17 324C54 297 98 252 98 192C98 160 83 143 68 123C51 99 32 75 17 49C24 43 30 38 42 38C46 38 49 38 52 38C105 38 150 15 182 -4C186 -7 190 -11 195 -11C195 -11 196 -11 196 -11C200 -10 216 5 216 5L262 47C302 83 348 130 348 188C348 239 316 269 288 291C278 299 246 322 237 327C258 355 277 384 297 412C310 430 328 449 333 471C334 471 335 486 335 486S334 507 332 507C330 519 325 530 319 541C300 579 249 604 203 604C150 604 96 573 74 533ZM84 382C92 393 100 405 110 415C156 402 196 382 240 367L159 252C157 263 155 275 152 286C143 312 129 336 112 356C103 365 95 376 84 382ZM76 98L188 258C197 253 205 247 214 241C248 220 291 192 291 147C291 121 279 100 268 86C264 81 239 50 232 50C228 50 223 55 219 57C174 82 145 93 76 98Z" glyph-name="Eng" horiz-adv-x="372" unicode="&#x14A;"/>
- <glyph d="M290 570C281 565 270 561 263 554C255 546 259 529 243 529C235 529 225 533 219 536C235 555 255 572 272 590C275 593 293 610 293 614C293 629 262 638 253 638C235 638 225 631 211 623C189 610 166 598 166 563C166 560 166 556 167 552C173 529 193 503 217 503C237 503 257 516 273 527C283 533 294 545 294 558C294 559 294 559 294 560C294 564 292 567 290 570ZM205 550C202 558 201 566 201 574C201 590 211 612 228 612C238 612 248 607 258 603L205 550ZM18 95V93C42 79 157 8 174 -4C177 -7 181 -11 186 -11C186 -11 187 -11 187 -11C190 -10 239 47 261 82C302 147 319 226 319 303C319 374 305 432 272 484L98 414L55 396C45 392 39 393 39 378C39 374 39 371 39 368V144C39 142 39 140 39 138C39 124 38 111 27 101L18 95ZM226 69C224 66 221 60 217 60C214 60 212 61 210 62C179 82 169 88 131 111L115 121C109 125 105 127 105 137C105 142 106 147 106 151V328C106 333 106 390 106 390C108 398 120 401 127 403C148 412 170 420 191 429C196 431 204 436 210 436C213 436 215 435 217 433C221 426 224 417 227 409C249 351 258 276 258 200C258 152 248 97 226 69Z" glyph-name="Zacute" horiz-adv-x="345" unicode="&#x179;"/>
- <glyph d="M116 517C121 514 127 508 133 508C136 508 139 511 142 513C170 533 189 578 189 619C189 638 176 651 158 651C150 651 142 648 135 643C118 628 123 608 119 580C118 580 118 566 118 557C118 547 119 517 116 517ZM262 618C260 618 259 600 259 585C259 574 260 546 259 546C258 540 258 535 257 529C257 527 257 525 257 522C257 513 265 508 273 508C276 508 279 511 282 513C309 533 329 583 329 619C329 637 316 651 298 651C277 651 265 636 262 618ZM18 95V93C42 79 157 8 174 -4C177 -7 181 -11 186 -11C186 -11 187 -11 187 -11C190 -10 239 47 261 82C302 147 319 226 319 303C319 374 305 432 272 484L98 414L55 396C45 392 39 393 39 378C39 374 39 371 39 368V144C39 142 39 140 39 138C39 124 38 111 27 101L18 95ZM226 69C224 66 221 60 217 60C214 60 212 61 210 62C179 82 169 88 131 111L115 121C109 125 105 127 105 137C105 142 106 147 106 151V328C106 333 106 390 106 390C108 398 120 401 127 403C148 412 170 420 191 429C196 431 204 436 210 436C213 436 215 435 217 433C221 426 224 417 227 409C249 351 258 276 258 200C258 152 248 97 226 69Z" glyph-name="Zcaron" horiz-adv-x="345" unicode="&#x17D;"/>
- <glyph d="M292 570C287 567 266 556 263 552C256 544 261 529 244 529C236 529 227 533 220 536C236 555 256 572 273 590C277 594 294 609 294 615C294 620 289 624 286 627C276 635 264 638 252 638C236 638 224 630 214 624C192 612 168 597 168 564C168 537 188 503 220 503C238 503 254 515 270 524C282 531 296 543 296 558C296 563 293 568 292 570ZM206 551C204 559 203 567 203 574C203 590 212 613 230 613C240 613 251 608 259 603L206 551ZM99 484L17 379V378L32 366H33C36 370 49 389 54 389C62 389 69 374 71 371C80 354 81 336 81 317C81 314 81 310 81 307V114C81 111 81 107 81 104C81 78 62 69 41 63V42C77 42 108 23 126 -2C130 -7 132 -13 141 -13C155 -13 165 3 174 12L260 98C270 75 282 52 293 29C297 21 304 11 304 2C304 0 303 -1 303 -3L320 -13L398 112L380 122C377 117 365 95 361 94C358 94 356 95 354 97C338 109 328 128 328 154C328 160 328 166 328 171V324C328 341 328 359 328 377C328 394 327 414 335 424C337 428 343 430 344 434C345 434 345 446 345 446C325 450 307 464 301 484C299 484 297 484 295 484C287 484 286 480 283 475C276 460 258 450 243 446C243 444 243 442 243 440C243 430 252 426 255 421C260 410 260 397 260 382C260 368 260 354 260 341V161C260 154 261 147 261 140C261 124 255 122 245 112L210 77C206 73 199 63 193 63C188 63 184 68 181 70L161 88C154 93 149 97 149 109V295C149 338 148 378 134 419C128 438 111 472 99 484Z" glyph-name="dcroat" horiz-adv-x="423" unicode="&#x111;"/>
- <glyph d="M154 650C150 650 146 649 143 647C122 638 121 612 121 591C121 588 121 584 121 581V566C121 559 120 552 120 545C120 540 120 534 119 529C119 527 119 525 119 522C119 521 119 519 119 518C122 514 129 508 135 508C138 508 141 511 144 513C170 535 190 577 190 616C190 637 181 651 160 651C158 651 156 650 154 650ZM257 517C262 514 268 508 274 508C278 508 282 512 284 513C311 540 330 569 330 619C330 639 316 651 298 651C278 651 267 636 263 619C259 598 259 530 257 517ZM99 484L17 379V378L32 366H33C36 370 49 389 54 389C62 389 69 374 71 371C80 354 81 336 81 317C81 314 81 310 81 307V114C81 111 81 107 81 104C81 78 62 69 41 63V42C77 42 108 23 126 -2C130 -7 132 -13 141 -13C155 -13 165 3 174 12L260 98C270 75 282 52 293 29C297 21 304 11 304 2C304 0 303 -1 303 -3L320 -13L398 112L380 122C377 117 365 95 361 94C358 94 356 95 354 97C338 109 328 128 328 154C328 160 328 166 328 171V324C328 341 328 359 328 377C328 394 327 414 335 424C337 428 343 430 344 434C345 434 345 446 345 446C325 450 307 464 301 484C299 484 297 484 295 484C287 484 286 480 283 475C276 460 258 450 243 446C243 444 243 442 243 440C243 430 252 426 255 421C260 410 260 397 260 382C260 368 260 354 260 341V161C260 154 261 147 261 140C261 124 255 122 245 112L210 77C206 73 199 63 193 63C188 63 184 68 181 70L161 88C154 93 149 97 149 109V295C149 338 148 378 134 419C128 438 111 472 99 484Z" glyph-name="section" horiz-adv-x="423" unicode="&#xA7;"/>
- </font>
- <font horiz-adv-x="0" id="ygoth">
- <font-face ascent="751" descent="-249" font-family="ygoth" units-per-em="1000"/>
- <missing-glyph d=""/>
- <glyph d="M0 635C26 616 54 591 54 548V525V148C38 126 24 101 11 75C67 44 118 9 177 -19L188 -15C221 4 255 23 287 43H288L313 25C337 11 356 -8 383 -19L393 -15C445 14 496 43 545 74C543 83 539 89 536 96C536 196 535 297 537 395L547 417L399 490C389 465 375 441 356 421C353 418 340 403 335 403C331 403 328 407 325 410C319 415 229 495 227 495L138 390V527V560C138 577 139 593 144 609C150 630 168 656 196 656C210 656 218 648 222 634C226 637 232 641 232 648C232 662 216 669 203 669C180 669 163 657 148 648L109 623C104 620 83 604 78 604H77C71 604 65 612 60 615L28 641C25 644 20 649 15 649S0 639 0 635ZM444 39C412 62 376 81 346 107L344 126V357C357 373 372 387 390 399C413 391 432 380 451 368C451 368 452 347 452 347C452 246 453 144 451 46L444 39ZM238 75C247 69 247 63 247 53C247 48 245 42 239 42S215 55 215 55L163 85C153 91 138 94 138 111V122V335V344C138 362 149 369 158 379L180 404C182 407 186 414 191 414C197 414 202 407 206 404L236 377C241 373 246 369 247 362V128C247 121 248 113 248 105C248 101 248 98 247 94C245 87 240 82 238 75Z" glyph-name="circumflex" horiz-adv-x="573" unicode="&#x2C6;"/>
- <glyph d="M154 469C146 452 137 435 125 421C98 391 61 371 25 354C32 341 40 329 46 315C49 251 47 179 46 115C40 101 32 89 25 76C82 45 135 10 193 -20L203 -16L285 32L275 51L253 42L243 47C207 70 167 88 133 113L131 135C131 222 130 310 132 394L142 410C168 395 195 379 222 365C236 389 250 413 263 438L198 475L179 486C175 489 170 493 163 493C150 492 147 487 131 487C94 487 68 511 58 545C57 545 56 562 56 562S56 572 57 572C65 634 124 666 185 666C250 666 308 628 346 586C351 580 355 574 361 569V568C324 513 292 454 257 398H299V131C299 126 300 121 300 116C300 110 299 105 297 101C294 97 279 81 279 75C281 68 293 56 296 53L340 1C343 -2 354 -19 359 -19C363 -19 368 -15 372 -13L400 3C438 23 472 45 510 66L500 85C471 71 444 54 416 38C405 52 394 65 384 80C381 183 384 293 383 398H467V462H383C383 504 388 545 394 587H384C380 587 377 587 374 588C368 591 353 611 352 612C315 652 254 688 187 688C107 688 35 638 35 562C35 516 67 466 124 466C134 466 144 467 154 469Z" glyph-name="hungarumlaut" horiz-adv-x="444" unicode="&#x2DD;"/>
- <glyph d="M43 581C29 558 14 525 14 494C14 491 14 488 15 486C19 481 42 471 44 470L97 444C107 439 117 433 128 429C104 405 78 384 55 359L54 347V116L33 75C82 44 126 10 177 -19L188 -15C221 4 255 23 287 43H288L313 25C337 11 356 -8 383 -19L393 -15C445 14 496 43 545 74C543 83 539 89 536 96C536 196 535 297 537 395L547 417L399 490C384 453 361 424 332 398L342 417L260 457C193 491 124 523 58 558L43 581ZM238 75C247 69 247 63 247 53C247 47 244 42 238 42H237C233 42 210 58 210 58L164 89C155 96 138 101 138 118V124V347V364C138 376 138 387 141 398C143 403 146 414 154 414C156 414 158 414 159 413C164 411 208 388 226 380C238 374 248 374 248 356C248 351 247 346 247 341V119V102C247 86 243 91 238 75ZM444 39C412 62 376 81 346 107L344 126V357C357 373 372 387 390 399C413 391 432 380 451 368C451 368 452 347 452 347C452 246 453 144 451 46L444 39Z" glyph-name="breve" horiz-adv-x="590" unicode="&#x2D8;"/>
- <glyph d="M100 495L37 442L72 398H54V137L30 149C16 125 2 101 -11 75C4 68 19 60 34 52C44 47 54 46 54 32V25V-15V-48C54 -78 53 -107 41 -135C34 -151 24 -164 14 -178L34 -188L76 -127C99 -141 121 -157 144 -171C159 -181 178 -195 201 -195C216 -195 233 -189 233 -175C233 -167 226 -163 222 -160C219 -173 213 -181 199 -181C176 -181 158 -161 151 -147C138 -125 138 -99 138 -75V-1C151 -7 164 -14 177 -20L187 -16C216 2 246 18 275 36H276C291 17 306 -2 323 -19L333 -15C370 8 405 34 445 55L452 50L512 -21H513L576 32L541 76H559C560 184 557 298 560 400C569 411 580 420 590 429C551 450 517 475 476 493L464 487C421 458 379 428 338 397H337L246 460V461C252 467 260 471 264 480L252 495H251L189 438C182 432 176 424 166 420L159 426C140 450 120 473 100 495ZM183 402H184C196 390 213 381 227 371C237 364 247 363 247 346V336V98V92C247 87 246 82 242 77C246 69 247 62 247 53C247 48 246 43 240 43C237 43 222 51 217 53L162 81C153 87 138 88 138 105V116V341V348C138 362 145 366 153 373C162 381 172 389 182 397L183 402ZM475 230C462 230 448 229 434 229C396 229 370 237 346 256C339 261 331 267 331 280V288V347V353C331 364 340 370 346 375C361 388 411 427 428 427C440 427 449 418 456 413C465 408 475 404 475 390V384V230ZM331 220V239L351 225L331 220ZM431 77L432 74C415 64 400 53 381 45C369 53 361 65 352 76H370V157C370 183 380 208 412 208H421H475C475 176 476 143 473 114C460 100 445 89 431 77Z" glyph-name="guillemotleft" horiz-adv-x="612" unicode="&#xAB;"/>
- <glyph d="M100 495C85 481 69 469 53 455C49 452 39 447 39 441V440C39 435 45 430 48 427L72 398H54V137L30 149L-12 76C3 68 18 60 33 53C44 48 54 46 54 30V23V-16V-41C54 -74 53 -107 40 -138C33 -153 24 -165 14 -178L34 -188L76 -127C96 -141 117 -154 137 -167C155 -179 175 -195 202 -195C215 -195 232 -187 232 -175C232 -168 225 -163 221 -160C218 -173 212 -181 197 -181C174 -181 157 -159 150 -146C138 -124 138 -99 138 -75V-1C151 -8 163 -15 177 -20C219 1 257 26 299 48L309 44C339 23 368 1 399 -19L411 -16C446 5 484 23 516 47L518 67C501 59 482 45 463 45H459C447 47 425 66 419 70L387 92C379 98 368 100 368 114C368 118 369 122 369 125V164V174C369 190 376 194 385 204L419 244L540 387V388L433 495H432C405 471 377 449 346 431C345 431 313 411 313 415C306 417 299 424 293 428L265 447C259 451 253 456 246 459C252 465 258 472 263 479L251 495L222 469C203 453 189 432 166 420L159 426C139 449 121 473 100 495ZM181 400C191 399 228 369 229 369C238 364 246 361 246 346V336V67C246 64 247 60 247 55S246 45 242 43C240 43 233 43 233 45C228 47 179 73 160 82C149 87 138 89 138 106V115V336V347C138 362 143 365 152 372C162 381 172 389 182 397L181 400ZM369 221V402V411C369 419 373 424 380 424C384 424 387 421 389 419L445 363C453 355 461 346 470 339L369 221Z" glyph-name="guillemotright" horiz-adv-x="556" unicode="&#xBB;"/>
- <glyph d="M100 495L37 442L72 398H54V137L30 149C16 125 2 101 -11 75C4 68 19 60 34 52C44 47 54 46 54 32V25V-15V-48C54 -78 53 -107 41 -135C34 -151 24 -164 14 -178L34 -188L76 -127C99 -141 121 -157 144 -171C159 -181 178 -195 201 -195C216 -195 233 -189 233 -175C233 -167 226 -163 222 -160C219 -173 213 -181 199 -181C176 -181 158 -161 151 -147C138 -125 138 -99 138 -75V-1C151 -7 164 -14 177 -20C217 -2 251 22 287 43H288L313 25C337 11 356 -8 383 -19L393 -15C445 14 496 43 545 74C543 83 539 89 536 96C536 196 535 297 537 395L547 417L399 490C389 464 374 439 354 419C350 415 340 402 333 402C327 404 310 417 308 418L270 444C262 449 254 455 246 460V461C252 467 260 471 264 480L252 495H251L189 438C182 432 176 424 166 420L159 426C140 450 120 473 100 495ZM184 402C204 387 225 373 245 357L247 335V94L238 75C247 70 247 64 247 54C247 49 246 43 240 43C236 43 233 45 230 47C216 53 162 81 161 82C152 87 138 89 138 105V116V341V348C138 362 145 366 153 373C162 381 172 389 182 397C183 398 181 402 184 402ZM444 39C412 62 376 81 346 107L344 126V357C357 373 372 387 390 399C413 391 432 380 451 368C451 368 452 347 452 347C452 246 453 144 451 46L444 39Z" glyph-name="endash" horiz-adv-x="590" unicode="&#x2013;"/>
- <glyph d="M53 630L29 601C12 576 -1 545 -1 514C-1 501 1 487 8 474C20 449 49 433 54 404V148C47 144 43 134 39 127C30 110 19 93 10 76C21 69 170 -19 176 -19H178C185 -19 205 -5 206 -4L268 31C274 34 292 47 299 47C303 47 326 30 326 30L372 -2C377 -6 392 -20 399 -20C403 -20 406 -17 409 -15C417 -11 505 40 505 40C511 44 516 46 516 57C516 60 515 64 515 67C498 59 479 45 459 45C444 45 423 66 418 69L385 92C377 97 366 101 366 115C366 119 367 123 367 126V164V174C367 186 370 191 377 198L396 221L470 308L519 365C522 369 535 382 535 387C535 391 531 394 528 397L430 495H429C404 471 375 450 345 432C340 428 321 416 314 416C305 416 297 425 292 428C277 438 262 451 246 459C252 465 258 472 263 479L251 495C212 461 176 425 138 390C138 431 128 454 109 482C89 510 54 531 54 575C54 592 61 605 70 614L53 630ZM368 221H367V377C367 385 366 394 366 402C366 413 367 424 377 424H378C381 424 383 422 385 420L442 363C450 355 458 346 467 339C434 299 399 262 368 221ZM138 111V118V339V348C138 360 142 364 150 370C155 374 177 398 183 399C189 399 195 393 199 390L228 370C237 363 246 362 246 346V338V65V55C246 49 245 42 239 42C232 42 223 50 218 53L162 85L147 94C140 96 138 102 138 111Z" glyph-name="ffi" horiz-adv-x="556" unicode="&#xFB03;"/>
- <glyph d="M140 430C104 399 66 370 32 337C31 310 31 282 31 254C68 284 105 313 139 346C142 372 141 403 140 430ZM140 220C104 189 66 160 32 127C31 100 31 72 31 44C68 74 105 103 139 136C142 162 141 193 140 220Z" glyph-name="hyphen" horiz-adv-x="156" unicode="-"/>
- <glyph d="M138 495L79 436V435L138 376H139L198 435V436L138 495ZM138 98L79 39V38L138 -21H139L198 38V39L138 98Z" glyph-name="colon" horiz-adv-x="278" unicode=":"/>
- <glyph d="M189 664C183 653 175 644 167 634C138 599 108 575 70 551C61 545 52 545 52 529C52 524 53 518 53 514V456C53 448 54 440 54 432C54 426 53 420 52 414C51 406 36 361 31 347H53V-141L63 -139L71 -128C92 -85 116 -44 136 1C142 186 133 389 138 571L152 587H153C171 571 190 555 209 540L239 591C242 596 249 604 249 611S239 623 235 627L207 650C201 655 196 660 189 664ZM175 398H217V129C217 124 218 120 218 115S217 105 215 101C215 101 192 75 197 75C197 72 210 58 213 53L257 1C259 -2 272 -19 277 -19C281 -19 286 -15 290 -13L318 3C354 24 391 44 427 66L417 85C389 71 365 53 335 41C320 50 313 67 302 79L301 95V398H385V462H301C302 506 304 549 311 587L291 586L281 573L208 454L175 398Z" glyph-name="less" horiz-adv-x="377" unicode="&lt;"/>
- <glyph d="M83 532L102 522C101 525 101 529 101 533C101 545 105 558 110 569C123 601 159 626 198 626C211 626 223 624 235 619C262 608 285 587 315 587C355 587 380 615 404 639C392 623 376 610 362 595C326 557 292 519 272 470C267 457 262 443 260 429C242 441 220 448 199 448C164 448 126 427 113 397C150 397 187 384 216 360C224 353 247 334 247 320C247 316 246 312 246 308C232 315 216 319 200 319C169 319 138 305 124 274C162 274 196 250 210 215C214 206 217 195 217 185C217 174 208 163 204 157C177 115 137 79 94 54C80 46 64 40 49 33C36 26 23 18 10 12L18 -9C29 -4 40 2 51 7C122 41 211 67 304 67C399 67 482 36 544 -21H545L661 135V136L644 149H643C624 127 604 115 565 115C528 115 498 123 463 125C457 125 397 127 397 125C383 124 370 122 356 122V123C376 135 394 155 409 173C452 226 479 292 479 365C479 395 476 426 474 455C473 455 471 497 472 497C473 522 477 546 488 569C510 615 559 636 608 636V653H594C556 653 518 652 483 638C473 633 464 628 455 622C386 568 391 462 387 367V339C385 284 380 227 352 178C339 156 316 128 295 116C288 111 280 111 272 109C260 107 247 104 235 101V102C265 116 301 151 317 177C345 218 354 270 354 335V381C354 403 354 424 357 446C367 507 395 553 424 599C435 619 457 663 471 677C474 680 480 684 480 689C480 695 474 701 471 706C443 690 426 650 384 650C367 650 352 655 336 663C302 680 276 706 230 706C174 705 143 650 120 606C114 595 83 533 83 532ZM426 664C426 664 421 658 421 658S426 664 426 664ZM413 649L420 657L413 649ZM404 639L413 649L404 639Z" glyph-name="L" horiz-adv-x="654" unicode="L"/>
- <glyph d="M193 455C182 457 171 459 161 459C141 459 121 454 102 446C98 444 74 431 74 427C81 428 88 428 94 428C101 428 108 428 115 426C150 418 179 390 189 356C182 357 176 357 169 357C146 357 123 352 102 342C98 340 73 325 73 322C110 322 146 306 172 279C183 268 191 255 200 242C188 242 176 242 164 240C131 233 100 212 84 182C104 192 128 200 152 200C174 200 195 193 212 175C223 162 226 150 226 127C223 94 201 69 180 53C174 49 169 43 162 40S147 36 140 34C72 17 14 -40 14 -110H36C36 -104 37 -97 39 -91C50 -64 82 -60 111 -60C111 -60 181 -62 181 -63C186 -63 232 -66 232 -62C309 -45 342 40 348 117V273C348 276 348 280 350 282C352 288 375 294 378 295C401 302 426 306 450 306C487 306 513 296 543 286C540 274 539 261 537 249C515 148 479 66 429 -11C420 -26 408 -40 400 -55L417 -67H418C428 -55 439 -43 451 -33C479 -12 516 1 552 1C575 1 598 -4 615 -11C619 -13 631 -19 636 -19C639 -18 659 17 659 17C680 53 703 88 723 124L704 135L685 102C669 107 656 111 636 111C604 111 573 101 545 86C534 80 524 72 514 66C533 89 548 116 563 142C609 218 647 308 647 408C647 434 644 460 635 485C614 546 570 596 521 636C500 654 477 669 454 685C449 688 424 704 419 704S410 701 406 698L208 580C204 577 196 575 194 570C193 570 193 564 193 564C194 543 193 460 193 455ZM348 589C428 581 496 530 529 456C497 441 481 427 434 427C407 427 381 434 361 443C354 446 348 449 348 459V464V589ZM545 307C516 321 483 328 450 328C411 328 377 319 348 306V428C372 412 403 405 433 405C478 405 506 420 536 439C542 417 547 396 548 373C548 373 547 307 545 307ZM234 46V47C262 60 285 87 291 117C293 117 294 146 294 146C292 237 293 538 293 574V578C293 585 297 588 304 588C311 589 319 589 326 590V173V145C326 136 326 126 324 118C313 77 273 54 234 46Z" glyph-name="N" horiz-adv-x="738" unicode="N"/>
- <glyph d="M95 442C69 420 33 380 33 335V333C33 280 71 239 116 216C150 199 187 193 223 193C243 193 262 195 281 197L268 152C184 152 104 146 52 106C31 92 13 67 13 34C13 16 19 -2 30 -16C51 -43 87 -55 132 -55C222 -55 308 -36 371 -4C376 -1 396 11 402 11S444 -12 455 -21H456C498 21 558 74 595 117C643 176 695 253 695 351C695 382 687 412 668 437C638 475 599 496 529 496H515C492 496 403 491 387 488L448 700L426 706L412 655C397 660 226 705 223 705C212 705 204 693 199 689C181 673 104 608 95 601L77 585C69 579 64 576 64 563V543C64 516 69 490 81 466C85 458 95 442 95 442ZM382 556V554C382 549 380 543 379 539C376 530 367 492 361 488C355 483 294 483 293 483H261H246C219 483 192 484 167 493C141 502 118 523 118 558C118 588 136 607 172 607H179C221 607 288 587 314 579L366 564C371 563 382 562 382 556ZM313 308C274 307 275 304 232 304C201 304 164 306 141 313C116 321 92 340 90 368C90 395 98 402 109 423C138 398 168 376 222 376C228 376 233 377 239 377C271 378 302 380 334 382L313 308ZM336 310L351 362C353 368 354 379 359 383C362 386 368 386 374 386H382C408 389 558 403 558 396C582 393 605 382 622 365S656 316 656 285C656 238 626 193 598 157C587 143 541 88 532 88H530C527 88 508 100 501 103C512 120 520 137 528 155C543 182 568 230 568 259C568 272 564 285 554 297C539 314 516 317 494 317C454 317 357 313 336 310ZM476 116C417 139 354 152 291 152C293 160 302 196 307 200C311 202 317 202 322 203L355 209C364 210 373 212 382 213C387 214 462 223 462 218C481 214 499 195 499 172C499 151 484 135 476 116ZM375 24C365 20 356 14 347 10C291 -18 210 -34 133 -34C107 -34 79 -26 68 1C65 6 64 11 64 17C64 58 109 71 144 71C172 71 199 65 226 60C276 52 328 44 375 24Z" glyph-name="S" horiz-adv-x="710" unicode="S"/>
- <glyph d="M322 405C305 417 287 428 270 439C249 453 230 461 230 494H229C220 476 209 459 195 445C158 409 103 398 53 398C52 355 55 308 52 267C38 250 24 234 9 218V217L84 143V142C69 130 56 113 43 98C11 63 -31 20 -31 -29C-31 -38 -30 -47 -27 -56L9 -21V-20C4 -15 0 -8 0 1C0 15 10 27 18 37C21 42 28 52 34 52H35C38 52 52 40 57 36L106 -5C111 -10 119 -19 126 -19C132 -19 174 7 189 15C224 36 335 99 354 111L341 129C340 147 340 166 340 185C347 188 351 198 354 205C364 222 376 239 384 257L279 325C298 347 319 369 339 391C364 420 374 431 374 484V494C374 507 369 517 356 517C348 517 340 509 340 501C342 485 350 469 350 452C349 431 332 421 322 405ZM141 205L128 217H137V388L173 400L183 395C209 377 237 360 264 343L230 305L141 205ZM94 118C94 122 99 126 101 129C109 137 191 228 191 228L210 249C213 252 217 260 222 260C226 260 230 257 232 255C240 250 255 244 256 233V92V88C256 84 256 81 253 79C249 75 191 41 185 41C178 41 170 52 167 54L132 83C122 92 113 100 103 108C100 110 94 114 94 118Z" glyph-name="quoteleft" horiz-adv-x="372" unicode="&#x2018;"/>
- <glyph d="M101 225L14 202L35 159C36 143 36 128 34 113C21 100 6 88 -8 76V75C20 44 43 9 73 -19L83 -15C120 8 155 34 195 55L202 50L262 -21H263L326 32L291 76H309C310 184 307 298 310 400C320 410 331 419 341 429C320 440 232 493 226 493C217 493 206 481 202 479L153 445C127 426 98 409 75 386C55 366 42 350 42 311C42 268 76 242 101 225ZM225 230C212 230 199 229 186 229C171 229 156 230 141 234C102 244 63 275 63 320C63 329 65 338 70 347C82 367 104 383 123 396C133 404 164 427 178 427C190 427 199 418 207 413C214 407 225 405 225 392V386V230ZM181 77L182 74C165 64 150 53 131 45C119 53 111 65 102 76H120V136V153C120 185 129 208 163 208H172H225C225 176 226 143 223 114C210 100 195 89 181 77Z" glyph-name="a" horiz-adv-x="360" unicode="a"/>
- <glyph d="M77 601H76C71 607 65 611 59 616L31 638C27 642 21 649 15 649H14C8 649 2 641 -2 636C34 614 54 579 54 522V487V148C47 144 43 134 39 127C30 110 19 93 10 76L130 6C145 -3 159 -13 177 -19L192 -13L341 73L331 94C328 184 331 281 330 373L341 395L259 451C249 458 240 466 227 471L218 465L138 390V525V558C138 574 139 590 144 606C151 628 170 655 198 655C211 655 218 647 221 634C225 637 232 642 232 649C232 662 214 669 202 669C168 669 140 643 121 631C107 621 90 613 77 601ZM138 111V118V339V348C138 360 142 364 150 370C155 374 177 398 183 399C189 399 195 393 199 390L228 370C237 363 246 362 246 346V338V65V55C246 49 245 42 239 42C232 42 223 50 218 53L162 85L147 94C140 96 138 102 138 111Z" glyph-name="b" horiz-adv-x="367" unicode="b"/>
- <glyph d="M152 495C145 468 131 440 112 419C85 390 50 370 14 354C21 341 29 329 35 315C38 251 36 179 35 115C29 101 21 89 14 76C71 45 124 10 182 -20L192 -16L274 32C272 37 268 49 261 49C255 49 251 44 246 42C243 42 240 43 237 45C212 58 187 74 162 88L137 102C129 108 120 108 120 124V130V376V382C120 391 121 398 129 406C130 407 132 407 133 407C139 407 145 401 150 399C163 391 177 384 190 376C195 373 202 367 208 367S218 378 221 383C231 401 243 419 252 438L152 495Z" glyph-name="c" horiz-adv-x="267" unicode="c"/>
- <glyph d="M42 580C30 557 14 523 14 494C14 485 17 482 24 480C43 469 124 430 127 429C110 412 93 397 76 381C66 373 54 365 54 348V338V174C54 168 55 115 53 115C52 110 32 77 32 76L136 6C149 -3 161 -13 177 -19L192 -13L341 73L331 94C328 192 330 299 331 396L341 417C247 464 150 509 58 558L44 580H42ZM238 39C206 62 170 82 140 107L138 125C138 214 137 303 139 389C143 398 144 410 152 415C184 401 215 386 244 369L246 350C246 248 247 145 245 46L238 39Z" glyph-name="d" horiz-adv-x="367" unicode="d"/>
- <glyph d="M182 495C133 450 76 412 7 389C10 383 17 374 24 374C28 374 32 376 36 378C35 288 38 195 35 108C29 97 21 87 14 77V76L115 5C127 -4 138 -13 153 -19C193 0 229 24 266 46L268 67C252 59 233 45 214 45H210C198 47 175 66 170 69L138 92C130 99 120 100 120 115V126V164V174C120 187 124 192 131 199L150 222L223 308L272 365C275 369 288 382 288 387C288 391 284 394 281 397L212 466C202 476 193 486 182 495ZM120 221V406V410C120 416 123 424 131 424C137 424 143 416 148 411L200 359C204 355 217 344 217 338C217 334 213 331 211 328L120 221Z" glyph-name="e" horiz-adv-x="306" unicode="e"/>
- <glyph d="M23 392L35 373C38 284 36 188 35 100C29 83 21 68 14 52L144 -10L109 -51L7 -166H22C40 -166 43 -158 53 -148C66 -135 82 -122 104 -122C119 -122 136 -126 151 -128C185 -132 304 -149 308 -149C310 -149 311 -149 313 -148C321 -145 329 -134 335 -128L418 -45C422 -41 431 -34 431 -28C431 -23 413 5 408 15L362 95C354 108 339 125 339 145V157V360C345 358 369 355 374 355C396 355 402 372 410 387C420 407 431 427 440 447L422 437L400 438L205 466L211 475C207 477 178 493 174 493C168 493 163 484 160 481C128 449 101 427 55 405C45 400 34 397 23 392ZM120 392L255 372V137C255 133 256 128 256 123C256 110 249 106 242 98L218 71C214 67 208 57 201 57C195 57 187 62 183 64L139 85C130 91 120 91 120 107V119V392ZM147 -43L267 91C297 36 329 -17 360 -71C289 -62 220 -50 147 -43Z" glyph-name="g" horiz-adv-x="431" unicode="g"/>
- <glyph d="M108 652L115 508L124 525C140 568 158 610 175 652H108ZM115 495L68 455C64 452 54 447 54 441V440C54 435 60 430 63 427L87 398H69C68 304 71 206 68 115C55 101 40 89 25 76V75L106 -21H107L154 19C158 22 168 27 168 33V34C168 39 162 44 159 47L135 76H153C154 170 151 268 154 359C167 373 182 385 197 398V399L115 495Z" glyph-name="i" horiz-adv-x="183" unicode="i"/>
- <glyph d="M51 602L15 651C10 648 1 643 1 636C1 630 8 625 10 622C26 596 30 569 30 528V513V129V122C30 112 22 107 16 102L-14 77L15 41L67 -21H68L131 32L96 76H114V547V563C114 569 114 574 115 579C119 613 149 637 187 640V655C152 655 118 646 88 628C75 621 64 610 51 602Z" glyph-name="l" horiz-adv-x="210" unicode="l"/>
- <glyph d="M82 495L35 455C31 452 21 447 21 441V440C21 435 27 430 30 427L54 398H36C35 304 38 206 35 115C22 101 7 89 -8 76V75L73 -21H74L121 19C125 22 135 27 135 33V34C135 39 129 44 126 47L102 76H120C121 163 118 254 121 339C152 370 188 395 221 424L241 398H224C223 304 226 206 223 115C210 101 195 89 180 77C206 43 234 11 261 -21H262L325 32C314 47 302 62 290 76H308C310 163 304 258 310 340C340 370 375 395 407 424H408L429 398H411V120C411 113 406 109 401 105L381 88C377 85 370 81 370 75C370 70 375 66 377 64L392 46C411 24 430 2 448 -21H449L496 18C500 22 510 27 510 33V34C510 39 504 44 502 47L477 76H495C496 170 493 268 496 359C509 373 524 385 539 397C513 431 485 463 458 495H457L308 370V441H315L271 495C219 455 171 411 120 369V441H127C113 460 98 478 82 495Z" glyph-name="m" horiz-adv-x="528" unicode="m"/>
- <glyph d="M82 495L35 455C31 452 21 447 21 441V440C21 435 27 430 30 427L54 398H36C35 304 38 206 35 115C22 101 7 89 -8 76V75L73 -21H74L121 19C125 22 135 27 135 33V34C135 39 129 44 126 47L102 76H120C121 163 118 254 121 339C152 370 188 395 221 424L241 398H224C223 304 226 206 223 115C210 101 195 89 180 77C206 43 234 11 261 -21H262L325 32C314 47 302 62 290 76H308V324V345C308 359 309 362 318 369L339 387C342 390 349 394 349 399C349 403 345 406 343 409C325 431 282 480 271 495C219 455 171 411 120 369V441H127C113 460 98 478 82 495Z" glyph-name="n" horiz-adv-x="344" unicode="n"/>
- <glyph d="M170 489C151 435 105 388 50 366C41 362 31 363 31 349C31 345 32 340 32 337V135V125C32 122 32 118 31 115C30 110 10 77 10 76L114 6C127 -3 139 -13 155 -19L170 -13L319 73L309 94C306 192 308 299 309 396L319 417C270 441 221 466 170 489ZM216 39C184 62 148 82 118 107L116 127V356C129 372 144 387 162 399C184 390 204 380 223 368C223 368 224 347 224 347C224 246 225 144 223 46L216 39Z" glyph-name="o" horiz-adv-x="356" unicode="o"/>
- <glyph d="M100 495C85 481 69 469 53 455C49 452 39 447 39 441V440C39 435 45 430 48 427L72 398H54V137L30 149L-12 76C3 68 18 60 33 53C44 48 54 46 54 30V23V-16V-41C54 -74 53 -107 40 -138C33 -153 24 -165 14 -178L34 -188L76 -127C96 -141 117 -154 137 -167C155 -179 175 -195 202 -195C215 -195 232 -187 232 -175C232 -168 225 -163 221 -160C218 -173 212 -181 197 -181C174 -181 157 -159 150 -146C138 -124 138 -99 138 -75V-1C151 -8 163 -15 177 -20C234 9 286 43 341 73L331 94C328 184 331 281 330 373L341 395C309 416 279 439 246 459C252 465 258 472 263 479L251 495L222 469C203 453 189 432 166 420L159 426C139 449 121 473 100 495ZM181 400C191 399 228 369 229 369C238 364 246 361 246 346V336V67C246 64 247 60 247 55S246 45 242 43C240 43 233 43 233 45C228 47 179 73 160 82C149 87 138 89 138 106V115V336V347C138 362 143 365 152 372C162 381 172 389 182 397L181 400Z" glyph-name="p" horiz-adv-x="367" unicode="p"/>
- <glyph d="M175 488C153 437 108 390 55 367C48 364 37 362 37 352V347V133V121V116C34 101 20 90 16 75L58 47C93 26 123 0 161 -19C185 -8 207 6 230 19V-70V-83C230 -122 221 -156 194 -172C190 -175 185 -177 181 -177C171 -177 169 -169 166 -160C162 -163 155 -168 155 -175C155 -188 172 -197 186 -197C213 -197 231 -183 247 -170S279 -143 291 -127H292C301 -140 312 -151 323 -163C326 -167 331 -175 336 -175C342 -175 348 -167 352 -163V-162C317 -133 314 -88 314 -45V-11V360V369C314 372 314 374 315 377C316 382 332 408 336 417C282 440 230 465 175 488ZM121 118V126V339V348C121 360 125 364 133 370C138 375 161 399 168 399C172 399 212 380 220 377C226 373 230 372 230 362V352V66V55C230 48 228 42 222 42C215 42 206 50 201 53L146 90C135 96 121 101 121 118Z" glyph-name="q" horiz-adv-x="351" unicode="q"/>
- <glyph d="M231 495L151 355H150C150 381 150 408 149 433C137 448 128 465 111 475C89 459 69 441 48 424L84 380H66C65 301 68 219 65 142L22 77V76C70 45 115 11 164 -19L174 -16C204 1 236 17 263 37C265 45 266 54 266 63C253 58 238 47 224 47C214 47 209 51 203 55C192 63 170 77 160 84C154 90 149 90 149 103C149 108 150 113 150 117V298V307C150 310 150 312 151 315C154 327 180 366 182 369C196 328 212 288 227 248C248 281 268 314 286 350C269 400 249 447 231 495Z" glyph-name="r" horiz-adv-x="302" unicode="r"/>
- <glyph d="M194 664C188 653 180 644 172 634C143 599 113 575 75 551C66 545 57 545 57 529C57 524 58 518 58 514V456C58 448 59 440 59 432C59 426 58 420 57 414C56 406 41 361 36 347H58V117C58 107 57 101 50 93C46 89 38 82 38 76C38 69 55 53 55 53L99 1C102 -2 113 -19 118 -19C122 -19 127 -15 131 -13L159 3C168 8 264 64 269 66C267 71 263 83 255 83C253 83 251 82 249 81L175 38C164 52 153 65 143 80C143 80 142 93 142 93C142 253 140 417 143 571L157 587H158L215 539L257 613C236 630 216 648 194 664Z" glyph-name="s" horiz-adv-x="272" unicode="s"/>
- <glyph d="M8 398H50V131V116C50 110 50 105 48 101C45 97 30 81 30 75C32 68 44 56 47 53L91 1C94 -2 105 -19 110 -19C114 -19 119 -15 123 -13L151 3C160 8 256 64 261 66C259 71 255 83 247 83C245 83 243 82 241 81L167 38C156 52 145 65 135 80C132 183 135 293 134 398H218V462H134C134 504 139 545 145 587L124 586L113 572L8 398Z" glyph-name="t" horiz-adv-x="230" unicode="t"/>
- <glyph d="M82 495L35 455C31 452 21 447 21 441V440C21 435 27 430 30 427L54 398H36C35 304 38 206 35 115C22 101 7 89 -8 76V75L73 -21H74L224 105C224 77 224 49 225 23C236 7 249 -7 261 -21H262L325 32C314 47 302 62 290 76H308V324V345C308 359 309 362 318 369L339 387C342 390 349 394 349 399C349 403 345 406 343 409C325 431 282 480 271 495C249 478 227 460 206 442L241 398H224C222 311 228 217 222 135C198 113 173 92 148 71C140 65 134 57 124 53C115 59 109 68 102 76H120C121 170 118 268 121 359C134 373 149 385 164 398V399L82 495Z" glyph-name="u" horiz-adv-x="344" unicode="u"/>
- <glyph d="M53 630L29 601C12 576 -1 545 -1 514C-1 501 1 487 8 474C20 449 49 433 54 404V148C47 144 43 134 39 127C30 110 19 93 10 76L130 6C145 -3 159 -13 177 -19L192 -13L341 73L331 94C328 184 331 281 330 373L341 395C309 416 279 439 246 459C252 465 258 472 263 479L251 495C212 461 176 425 138 390C138 431 128 454 109 482C89 510 54 531 54 575C54 592 61 605 70 614L53 630ZM138 111V118V339V348C138 360 142 364 150 370C155 374 177 398 183 399C189 399 195 393 199 390L228 370C237 363 246 362 246 346V338V65V55C246 49 245 42 239 42C232 42 223 50 218 53L162 85L147 94C140 96 138 102 138 111Z" glyph-name="v" horiz-adv-x="367" unicode="v"/>
- <glyph d="M54 630C25 601 -2 557 -2 514C-2 500 1 486 8 473C21 449 49 434 54 405V148C37 126 24 100 11 75L131 6C146 -3 160 -13 178 -19C203 -7 227 7 251 21C259 25 270 37 283 30C311 13 339 -4 369 -19L384 -13L535 74L525 95C522 186 524 284 525 373L535 395L451 453C441 459 432 467 420 471C391 448 368 420 338 399C306 417 279 441 247 459C249 462 264 477 264 479C264 485 256 491 252 495H251L138 390V413C134 437 124 460 110 480C91 508 54 531 54 574C54 582 56 590 59 597C61 603 70 615 70 615L54 630ZM238 137C226 117 214 97 204 75L239 56C239 83 239 111 238 137ZM183 402C197 391 212 382 227 372C237 364 247 362 247 346V338V66V55C247 49 246 42 239 42C233 42 225 48 221 51C207 59 160 86 148 94C140 98 138 101 138 112V121V336V347C138 351 138 355 139 358C141 364 174 391 183 402ZM376 402C390 391 405 382 420 372C430 364 440 362 440 346V338V66V55C440 49 439 42 432 42C426 42 418 48 414 51C400 59 353 86 341 94C333 98 331 101 331 112V121V336V347C331 351 331 355 332 358C334 364 367 391 376 402Z" glyph-name="w" horiz-adv-x="578" unicode="w"/>
- <glyph d="M82 495L35 455C31 452 21 447 21 441V440C21 435 27 430 30 427L54 398H36V106C36 84 36 63 32 41C26 6 13 -30 13 -66C13 -90 20 -110 30 -128C44 -150 67 -169 100 -169C136 -169 168 -140 168 -103C168 -81 152 -61 127 -61C103 -61 84 -77 84 -103C84 -113 87 -123 94 -131C100 -138 108 -141 116 -144C111 -146 105 -147 100 -147C62 -147 39 -104 39 -63C39 -15 68 26 104 45C121 54 315 115 315 115C311 129 307 132 307 150C307 160 308 170 308 179V325V346C308 360 309 362 318 369L339 387C342 390 349 394 349 399C349 403 345 406 343 409C325 431 282 480 271 495C219 455 171 411 120 369V441H127C113 460 98 478 82 495ZM224 398V131V120C224 110 220 108 212 105C187 98 137 81 120 75C121 163 118 254 121 339C152 370 188 395 221 424L241 398H224Z" glyph-name="y" horiz-adv-x="339" unicode="y"/>
- </font>
- <font horiz-adv-x="0" id="yinitas">
- <font-face font-family="yinitas" units-per-em="1000"/>
- <missing-glyph d=""/>
- <glyph d="M377 1029C368 1025 363 1015 364 1001C366 980 373 963 386 950C396 940 407 934 419 933L423 932L419 931C397 920 377 920 353 930C337 936 314 948 289 964L276 972V976C276 986 267 992 258 988L255 986L239 994C223 1002 207 1008 192 1011C147 1020 100 1008 62 976C39 957 18 927 8 898C6 893 6 893 3 892C-2 891 -7 886 -7 880C-8 875 -6 871 -3 868L0 866L-1 860C-1 856 -2 850 -2 846C-3 838 -3 838 -5 837C-9 835 -10 832 -11 829C-11 824 -9 819 -5 817C-2 816 -2 815 -1 810C-1 801 2 785 5 775C12 748 27 721 45 699L53 691L50 689C37 679 28 668 23 653L20 645V632C20 619 20 618 22 612C29 594 40 584 55 583C58 583 63 583 65 584C78 586 90 597 93 611C97 625 92 635 78 639C65 643 52 639 47 630C43 621 48 612 57 612C68 612 72 625 64 632C62 633 62 633 64 634C64 634 68 634 71 634C77 634 83 631 86 627S89 617 87 611C84 602 78 595 70 591C66 590 64 589 58 589C48 589 44 591 38 597C30 605 26 617 26 632C26 653 35 670 52 683L57 687L63 681C77 668 97 655 114 647C163 624 216 622 269 640C297 650 320 662 377 698C407 717 434 733 432 730C431 730 426 725 419 720C381 687 339 646 278 579L274 574L271 575C265 577 261 581 258 592C255 601 253 604 249 606S241 608 237 605C234 602 231 597 226 584C218 561 209 546 199 536C184 522 164 517 150 526C144 529 135 540 131 548C125 558 124 572 127 580L128 582L130 581C134 577 138 576 143 579C150 583 150 593 143 598C136 602 128 597 123 585C120 580 120 579 120 571C119 554 125 540 139 527C150 515 164 512 181 518C204 526 223 549 232 583C236 595 238 599 241 600C245 603 251 600 253 596C255 593 254 590 252 581C250 571 250 568 253 565C255 562 257 562 262 564L266 565L264 563C263 562 251 548 238 533C216 509 213 506 211 506C211 507 208 507 206 507C196 507 190 497 194 488L195 485L181 471C168 458 153 445 151 445C151 445 149 446 148 448C138 464 117 477 99 479H93L96 481C107 485 115 496 117 509C119 520 115 533 106 542C91 556 69 559 50 548C45 544 37 536 33 530C27 518 23 503 25 489C27 477 32 464 38 455C38 454 38 453 35 449C25 432 22 409 29 392C32 386 37 378 40 375C54 362 74 361 86 372C92 377 94 382 94 389C94 394 94 396 92 399C88 407 80 411 71 410C57 409 48 398 53 388S72 380 74 392C75 395 72 401 69 402C67 403 69 404 73 404C81 404 87 399 88 392C89 384 85 377 77 373C73 371 71 371 66 371C60 371 59 371 53 374C35 383 27 408 34 431C37 438 41 447 42 448C43 448 45 446 48 443C71 422 105 416 134 428C137 430 142 432 144 433C147 435 149 436 149 435C150 434 154 422 155 416C157 407 158 391 156 381C152 361 141 340 124 319C121 315 116 311 115 310C93 296 83 289 70 276C42 249 24 216 17 181C15 175 15 174 13 174C10 173 6 170 5 168C1 161 4 151 10 148C13 147 13 147 13 140C14 122 16 111 21 97C24 86 32 70 37 62C65 19 110 -4 158 -2C170 -2 178 0 189 2C217 11 242 31 255 55C270 84 271 118 257 145L253 153L259 151C272 146 277 146 295 146C311 146 312 146 321 148L331 151L334 148C335 147 341 142 346 137C389 98 440 68 484 58C488 57 492 56 492 56C493 55 480 39 473 32C459 18 440 8 424 5C421 5 418 4 417 4C415 3 415 4 418 7C422 11 424 16 424 22C424 38 410 49 395 44C389 43 382 36 380 30C377 22 379 14 385 7L388 4L383 5C360 10 341 25 331 44C326 54 323 70 325 78V81L327 78C331 74 336 73 341 76C345 78 347 81 347 86C347 92 342 97 336 97C328 97 322 92 319 83C316 70 321 48 331 32C342 16 363 3 383 -1C392 -3 412 -3 422 -1C436 1 449 7 462 15C472 22 488 38 494 47L499 54L508 53C515 52 523 51 536 51H554L556 47C563 33 577 20 592 14C602 10 607 9 618 8C626 8 628 9 631 10C644 16 647 29 637 35C635 37 634 37 630 37C627 36 626 36 623 33C621 31 621 30 621 26C621 21 621 20 623 18C624 17 626 15 626 15C626 14 613 14 607 15C594 18 583 24 573 34C567 40 561 49 561 51C561 52 563 52 566 53C568 53 575 54 580 55C611 61 641 74 672 95L682 101L683 97C686 84 695 66 704 53C712 43 725 31 735 23C748 14 766 6 782 2C796 -1 804 -2 821 -2C835 -2 838 -2 847 0C868 3 886 12 903 25C906 27 909 29 909 29C910 29 912 26 914 23C924 11 937 2 952 -1C957 -2 961 -3 968 -3C979 -3 986 -1 994 2C1001 5 1008 13 1011 19C1013 23 1013 24 1013 31S1013 39 1011 43S1004 52 1000 53C995 55 985 54 980 52C976 50 971 45 969 42C967 36 969 29 974 25C977 23 984 23 987 25C993 29 995 36 992 41C991 43 989 45 988 45C986 47 987 48 992 48S998 47 1000 46C1008 41 1010 30 1005 20C1002 15 996 10 991 7C977 1 959 1 944 8C934 12 923 21 917 29L914 34L920 40C939 60 952 86 959 114C961 124 961 124 963 124C968 125 974 134 972 139C971 144 967 149 964 150C962 151 962 151 962 156C962 170 958 190 953 207C946 225 934 247 921 262C918 266 916 268 916 269C916 269 919 268 922 268C933 267 949 270 959 275C979 285 992 305 991 324C989 338 983 350 972 357C955 368 935 367 922 354C916 349 913 345 911 338C906 321 916 301 933 297C942 294 955 296 962 302C967 307 968 316 965 320C959 329 949 329 944 320C940 315 942 307 947 304C950 302 948 301 941 302C933 302 928 304 923 310S917 319 917 328C917 335 917 336 919 341C929 360 955 364 972 349C980 341 984 333 984 321C984 315 984 313 982 309C977 293 963 281 945 276C938 274 922 273 915 275C909 276 909 276 902 282C894 290 883 298 873 304C869 307 865 309 865 310C864 310 867 315 870 322C891 362 906 404 914 444C916 451 917 457 917 458C917 458 920 459 922 460C963 473 993 516 1001 573C1002 585 1002 607 1001 617C994 662 967 695 933 702C925 704 909 704 896 702C888 701 886 701 886 702C884 708 868 736 859 750L854 758L862 770C880 800 892 827 897 852C899 863 900 879 899 886V893L905 892C932 890 957 879 976 861C997 841 1007 818 1009 792C1010 767 1002 746 986 731C980 725 973 721 964 718C956 715 942 714 934 716C916 721 902 732 894 749C892 752 891 754 891 755C891 755 893 755 894 754C898 752 906 752 911 755C915 758 918 763 918 768C919 776 915 782 909 785C902 788 894 787 889 781L886 779L887 783C889 801 898 815 911 821C916 824 917 824 925 824C932 824 933 824 938 821C947 817 953 808 955 797L956 792H959C962 792 962 792 962 794C962 798 960 807 957 811C945 834 915 837 897 818C868 789 880 734 919 715C928 711 936 709 946 709C959 709 970 712 980 719C1008 736 1021 774 1012 810C1003 849 973 881 934 893C931 894 929 895 929 895S931 896 934 896C941 897 958 902 966 905C1000 918 1020 939 1024 967C1028 991 1016 1010 1000 1006C988 1002 986 987 995 979C997 978 999 977 1003 977S1008 977 1011 979C1013 980 1016 982 1016 983L1018 986L1019 982C1019 977 1019 967 1017 961C1015 954 1009 943 1005 937C995 925 978 915 958 908C943 904 926 901 906 899H898V903C895 920 886 940 875 954C866 965 852 974 838 978C829 980 815 980 806 978C793 974 781 968 769 958C756 946 747 941 733 937C728 935 724 935 716 934C710 934 706 934 706 934S707 936 708 937C712 941 713 945 711 950C706 960 691 958 689 947C688 941 692 934 699 930C707 927 723 927 737 931C743 933 755 939 757 940C758 942 759 941 759 935C760 915 779 901 800 905C813 908 820 916 819 926C819 933 814 938 806 938C792 938 787 920 799 913L801 912L797 911C781 908 765 920 765 936C765 943 766 946 772 952C788 967 811 976 830 973C856 969 877 949 887 919C889 913 892 903 892 900C892 899 889 899 883 899C864 898 843 893 826 887S786 869 771 856L764 851L752 859C697 895 640 915 575 919C554 921 533 920 509 917C458 910 412 892 299 834C251 809 235 803 209 800C164 795 120 813 100 845L97 851L99 854C103 859 111 867 116 870C121 874 130 878 137 880C145 882 157 882 165 880C186 875 201 855 196 837C194 826 186 818 176 818C171 819 166 820 163 824C159 828 157 836 158 842V845L161 842C169 834 183 842 180 853C179 857 174 862 170 862C163 862 157 857 154 850C152 846 152 845 152 839S152 831 154 827C158 818 166 813 175 813C181 813 185 814 189 817C202 826 206 846 198 862C195 868 185 878 178 881C164 889 147 890 130 884C118 880 106 872 98 862L94 858L93 862C88 877 90 897 97 911C110 937 140 951 166 942C180 937 189 929 202 909C216 889 223 882 236 878C242 877 252 877 258 878C273 882 286 895 289 909C289 912 290 914 291 914C293 914 298 917 300 920C311 933 298 952 282 947C272 944 267 933 271 924C273 920 277 916 280 915C282 914 282 914 281 912C281 911 279 910 277 909C268 904 256 907 247 917C242 922 240 926 232 940C224 955 220 961 214 966C209 972 204 975 197 978C189 982 183 983 174 984C151 985 127 975 109 955C91 937 81 914 79 885C78 873 79 860 81 847L83 839L81 831C77 821 77 815 77 803C77 767 96 732 131 708L135 705L131 706C128 706 119 706 111 706C98 706 94 706 88 704C79 702 68 699 62 696L59 694L54 700C28 728 10 766 5 805C3 816 3 816 6 818C9 819 11 825 11 829C10 833 8 835 5 837S2 839 4 854C5 860 5 865 6 865C6 865 8 865 9 865C9 865 12 867 13 868C17 870 19 875 19 879S17 887 14 890L12 891L15 900C45 974 114 1018 184 1006C202 1003 216 999 237 988L252 981L251 978C251 974 253 968 257 966C261 963 265 963 269 965L273 967L285 959C321 937 348 924 368 918C376 916 389 916 398 917C413 920 426 926 455 943C491 964 510 971 532 973C542 974 548 973 555 970C562 966 567 962 580 950S597 935 604 931C610 928 611 928 619 928C628 928 634 929 642 933C656 940 666 954 669 971C670 985 665 999 655 1003C641 1009 629 993 639 981C641 978 644 977 649 977S657 978 660 982L662 985L663 980C663 975 662 967 660 961C655 949 642 938 629 935C627 934 622 934 618 934C611 934 610 935 604 937C597 941 593 944 580 956S562 973 555 976S542 980 532 979C508 977 488 969 450 947C440 941 435 939 426 939C398 939 373 966 370 1000C370 1003 370 1007 371 1009V1013L374 1010C382 1000 398 1008 395 1021C393 1029 384 1033 377 1029ZM893 888C894 882 893 867 891 857C888 836 879 812 866 789C862 781 852 765 851 764C850 764 847 767 844 771C824 798 803 820 772 844L769 847L772 850C778 854 790 863 799 868C825 883 858 892 886 893H893ZM98 804C114 777 139 755 169 740C187 731 205 726 225 722C236 721 270 720 281 722C302 725 323 731 343 738C359 745 370 750 403 766C455 791 476 799 502 806C521 810 531 811 556 811C576 811 581 811 590 810C617 805 641 798 666 785C677 780 696 768 699 766C699 765 699 762 694 753C691 747 688 739 687 737L685 733L677 738C652 755 622 766 591 771C580 773 552 773 540 772C530 771 513 768 504 766L498 764L495 767C490 771 484 770 479 765C478 764 477 762 476 760C476 758 476 757 472 756C462 753 433 741 399 726C380 717 358 708 351 705C318 692 287 684 264 682L258 681L255 685C250 691 240 690 236 682C235 681 235 681 224 682C181 685 141 703 115 730C98 747 88 765 84 786C82 796 83 815 85 823L86 829L90 820C92 816 96 808 98 804ZM585 765C618 761 648 750 676 732L683 727L681 722C672 699 658 648 655 626C654 624 654 623 653 623C639 629 627 633 614 634C610 635 599 635 588 635C534 635 507 641 495 657C491 662 490 668 490 676C491 693 504 705 520 703H524L522 701C517 698 515 690 519 685C522 680 530 679 535 683C541 688 540 699 534 704C519 715 497 709 489 693C485 686 484 681 484 675C484 657 494 644 515 637C523 634 538 631 550 630C556 630 563 629 565 629H568L561 625C544 617 530 603 523 590C522 587 521 585 521 585S514 591 505 598C475 621 468 631 465 648C462 669 473 693 497 718C509 731 522 739 537 744C543 746 545 746 554 746C566 746 569 745 577 741C587 737 593 728 594 718L595 713L584 696C573 679 570 675 566 674C564 674 560 675 560 677C560 677 559 678 557 678C554 678 554 678 554 675C554 668 562 657 571 653C593 643 620 653 631 676C638 691 638 706 630 722C624 735 610 745 594 750C586 752 566 752 555 751C534 748 510 740 487 727C448 705 425 685 413 661C406 647 403 637 403 621C403 603 407 590 416 572C426 550 439 531 469 497C488 475 497 463 505 453C524 428 536 406 541 384C543 376 545 361 544 360C544 360 541 361 538 363C518 371 497 385 475 402C459 415 459 416 456 423C453 432 444 450 439 458C436 462 431 470 426 475C412 494 404 507 402 517L400 522L391 512C386 507 381 503 381 503C380 503 374 519 372 531C370 541 370 579 372 593C379 644 397 686 424 714C434 724 455 739 470 747L478 751L480 750C486 744 496 747 499 755C500 758 500 758 504 759C510 761 528 764 536 765C548 767 574 767 585 765ZM714 754C739 734 763 709 781 682L788 673L777 657C771 648 766 641 766 640C765 640 763 643 760 648C749 668 734 688 719 703C711 712 698 723 692 727L690 729L693 737C695 741 698 748 701 753C704 760 705 761 706 760C706 760 710 757 714 754ZM698 715C708 707 722 692 730 681C741 668 761 637 761 634C761 633 760 630 758 627C747 611 730 581 721 563L715 553L711 561C704 576 696 587 684 599C679 605 666 615 661 618C660 619 660 619 661 628C666 654 673 680 681 703C688 725 688 723 689 722S694 718 698 715ZM400 720C399 719 362 696 348 686C295 654 258 639 219 635C199 633 172 635 152 640C121 648 91 664 68 685L63 690L70 693C84 698 95 700 112 700C131 700 146 697 164 690C176 685 189 681 200 679C209 677 226 675 232 675C235 675 235 674 237 672C239 668 242 667 247 667C251 667 255 669 257 673C258 675 258 675 261 675C262 675 267 676 272 677C305 681 336 692 386 714C399 720 400 720 400 720ZM397 687C376 652 364 606 364 560C364 536 367 518 374 503C375 500 376 498 376 498C376 497 360 484 350 477C332 463 304 446 286 436C282 433 278 431 278 431C279 431 281 432 283 432C307 438 336 434 359 422S404 388 415 364C424 346 429 322 429 303V299L422 304C408 312 392 321 375 327C371 329 371 329 371 332C372 337 373 355 372 359C369 371 361 381 348 387C322 400 289 397 253 378C237 370 218 357 210 347C208 344 207 343 204 343C187 340 150 328 135 320L132 319L134 322C152 346 161 366 163 389C165 405 162 421 155 436L154 439L160 444C164 446 174 456 183 465C199 480 200 481 202 481C203 480 205 480 207 480H210V475C211 463 220 452 235 443C245 437 260 434 271 435C284 437 298 447 298 455C298 461 291 467 285 466C276 464 273 452 280 446C282 445 282 445 280 444C279 444 276 443 274 442C262 439 245 443 232 452C221 460 217 467 216 478C216 483 216 484 218 486C219 488 219 490 220 493C221 500 224 506 232 514S250 529 263 535C268 538 277 542 282 544C295 551 299 556 296 564C294 568 292 570 286 571C285 572 283 572 283 573C282 573 286 577 290 583C323 618 352 648 370 667C379 675 402 697 403 697C403 697 400 693 397 687ZM932 696C945 693 958 686 967 676C979 664 987 648 992 629C995 618 996 610 996 595C996 568 990 542 979 520C965 493 947 476 923 467L918 465L919 467C919 471 921 486 922 498C924 511 924 551 922 565C920 587 916 614 911 633L909 639H911C914 639 923 637 929 635C950 628 961 614 961 597C961 592 960 590 959 593C958 597 948 598 944 595C939 592 937 585 940 580C944 574 950 573 957 576C968 582 971 601 963 616C959 623 950 632 942 636S924 643 915 645C911 645 907 646 907 646S906 650 904 656C901 665 892 688 890 692L889 695L894 696C903 697 904 697 915 697C923 697 929 697 932 696ZM794 662C799 654 800 655 792 647C788 643 782 637 779 633S774 626 774 625C773 625 772 626 771 629L769 633L771 636C776 644 791 667 791 667S793 665 794 662ZM810 633C827 601 841 562 848 527L850 516L845 518C842 519 838 520 835 520C831 520 830 520 828 517C824 514 823 510 823 499C822 491 823 490 824 486C826 484 829 479 833 475C841 467 843 463 843 459C843 456 840 451 837 450C834 448 831 449 821 460C812 469 812 469 812 473S810 495 809 504C803 542 793 579 779 611L776 618L779 622C783 628 791 637 797 643C801 649 802 649 803 648C803 647 807 641 810 633ZM614 628C623 627 629 625 638 622C643 620 652 617 653 616C653 616 652 612 651 607C650 601 649 591 648 583C647 576 646 569 646 569C645 569 643 570 640 572C631 578 614 583 602 583H597V580V577L604 576C618 576 630 571 640 564L645 561V557C644 549 642 526 641 509C641 498 640 486 640 481L639 473L635 471C631 469 628 469 621 468C613 468 600 469 597 470C597 471 594 475 592 481C579 515 559 546 534 572L526 581L528 585C534 598 548 612 563 619C578 627 596 630 614 628ZM767 623L769 619L764 611C748 584 735 548 730 518C729 514 729 511 729 511C729 512 727 516 726 522C724 528 722 535 721 539L719 545L722 553C729 565 738 582 752 605C759 617 765 626 765 626S766 625 767 623ZM669 605C681 595 692 582 701 568C705 560 711 548 711 546C711 545 709 539 706 533C696 514 679 470 679 467C679 466 678 466 676 466C675 467 667 467 660 467C653 468 646 468 646 469C646 469 647 470 648 470C651 473 658 481 661 486C674 508 672 538 656 558C652 563 652 564 652 567C653 574 657 602 658 607L659 612L661 611C662 610 666 608 669 605ZM776 603C790 569 799 532 804 491C806 472 806 471 803 470C801 469 797 465 793 461C785 452 781 449 778 449C774 449 769 456 770 460S773 466 779 474C783 478 787 483 788 485C790 488 790 489 790 498C790 514 787 520 778 520S761 516 755 510C751 505 749 502 749 496C749 491 750 488 754 485C758 483 764 483 768 485C778 490 776 506 764 508H762L766 511C769 512 772 513 776 513L781 514L783 511C784 508 784 505 784 498C784 487 784 486 774 476C770 472 767 467 766 465C764 460 764 455 766 452C771 445 776 444 790 448C795 450 801 451 803 452H806V436C806 405 802 370 795 341C794 334 793 334 791 334C790 334 785 335 779 335C743 338 703 331 663 314C648 307 619 292 606 283C604 282 605 284 610 291C615 299 618 305 632 333L637 344L646 347C663 353 678 362 692 375C700 383 709 395 713 402C715 406 716 406 720 407C743 415 766 408 771 393C772 389 772 383 771 379C768 373 761 370 755 371H751L754 373C759 378 759 386 754 390C749 395 742 394 738 389C727 377 746 360 763 365C769 367 775 373 777 379C782 396 770 412 749 416C741 417 728 416 720 413C719 413 719 414 721 418C728 433 732 454 732 475C732 506 739 542 751 571C757 587 771 612 772 611C772 611 774 607 776 603ZM287 567C288 567 289 565 290 564C293 556 288 552 273 547C265 544 258 541 252 537C247 535 247 535 262 551C270 560 278 568 279 569C281 570 285 569 287 567ZM657 544C662 536 663 529 663 518C663 508 662 502 658 494C656 488 650 480 647 478C646 478 646 478 646 487C647 508 648 529 649 541C650 548 651 554 651 554C651 556 655 550 657 544ZM84 547C94 545 104 537 108 528C115 512 110 494 96 487C88 484 79 484 74 489C72 491 72 491 72 496V501L74 499C79 492 89 493 93 500S92 517 83 517C78 517 75 515 71 511C67 506 66 501 66 495C66 487 68 484 76 480L80 479L76 478C66 476 55 470 47 463C42 458 43 458 38 468S31 486 31 497S33 516 37 525C41 532 50 541 56 544C65 548 75 550 84 547ZM719 522C724 505 725 491 726 474C726 465 725 457 725 455L724 451L722 453C716 458 704 462 692 464C688 465 685 466 685 466C685 469 701 510 710 528L715 538L716 535C716 533 718 527 719 522ZM844 512C847 511 849 510 850 509C852 508 852 508 849 508C844 508 839 502 839 496C839 488 843 484 851 483C855 483 855 483 856 480C858 465 859 421 857 401C856 384 853 368 850 354C848 341 843 323 842 321C842 321 840 321 836 323C828 326 815 329 806 331C803 332 800 333 800 333C800 334 801 340 803 347C809 377 812 399 812 429C813 444 813 451 814 451C814 451 818 450 822 449C836 444 842 445 847 451C848 453 849 455 849 458C849 464 847 467 839 476C829 486 829 488 829 499C829 511 831 513 835 513C837 513 841 513 844 512ZM103 472C112 470 122 466 131 458C135 455 145 443 145 441C145 440 131 433 124 431C108 426 88 427 72 434C65 438 56 444 51 449L47 453L49 456C50 457 52 459 55 461C69 472 85 475 103 472ZM621 462H640V448C640 416 636 375 630 356L629 351L624 350C621 349 617 348 609 348C599 347 598 347 599 349C608 381 610 408 605 437C603 446 600 459 599 462C598 464 598 464 600 463C602 463 611 463 621 462ZM675 460C676 459 671 445 659 412C651 391 639 361 638 362C638 362 638 364 639 366C642 381 645 411 646 439V462L660 461C668 461 675 460 675 460ZM698 456C707 454 713 452 718 448C721 446 722 446 723 447C727 453 719 426 713 414C710 409 709 408 705 406C698 401 691 396 674 382C660 370 647 359 644 359C644 358 643 359 644 359C654 383 672 430 680 453L682 459H686C689 458 694 457 698 456ZM476 393C497 377 521 363 541 355L545 353L544 344C543 314 529 280 504 249C497 241 491 235 491 236C491 236 488 239 486 242C479 252 470 264 460 273L451 282L454 289C464 318 469 351 466 378C465 387 463 402 462 405C461 406 463 404 466 402S473 396 476 393ZM704 399C704 398 701 395 698 392C686 376 668 362 650 355C647 354 648 355 656 361C659 363 666 369 672 374C688 388 690 390 697 395S705 400 704 399ZM313 377C328 373 337 364 338 352C338 348 338 347 336 345C333 341 332 341 326 342C315 344 294 347 279 348C263 349 239 348 226 346C223 346 220 345 220 345C220 346 229 354 236 358C251 368 271 375 290 378C295 379 308 378 313 377ZM626 339C622 327 617 316 606 299C599 289 592 280 586 273C582 268 578 265 560 251C553 246 540 236 532 230C524 223 517 217 516 216C513 214 504 210 504 211C504 211 503 213 501 216L499 221L509 230C550 264 578 297 593 334L596 341H611C619 342 626 342 626 342C627 343 627 343 626 339ZM295 340C301 340 307 339 309 339L314 338L308 335C298 330 293 321 293 310S298 290 308 285C312 282 314 282 320 282C333 281 342 285 352 295C359 301 363 308 367 317L369 323L381 318C397 311 415 301 425 294C428 292 429 291 429 288C429 279 424 257 418 243C415 236 409 222 408 221C408 221 404 223 399 227C365 253 328 271 290 279C258 286 221 286 192 278C184 276 184 275 186 286C190 304 199 323 210 334L213 338L223 339C228 340 237 341 242 341C254 342 283 342 295 340ZM201 335C200 334 199 332 197 329C188 314 181 296 179 279L178 274L171 271C161 268 146 260 137 254C103 232 81 200 73 165C71 154 71 135 72 124C77 90 98 62 125 49C139 43 158 41 172 44C187 47 199 53 209 63C230 84 235 114 221 129C215 136 205 139 192 138C180 137 169 140 165 146S163 160 169 162C171 163 172 164 172 166V169H168C151 167 141 148 148 132C153 122 161 116 176 110C190 105 193 102 197 93C199 89 199 78 197 73C192 63 183 55 171 51C165 49 163 49 153 49C141 49 134 51 123 56C102 66 87 85 80 110C78 117 78 118 78 133C78 147 78 148 80 157C86 177 98 196 113 209C129 223 147 231 168 235C179 237 182 237 182 235C182 234 183 230 184 226C187 217 193 205 197 199C199 196 200 194 200 194S198 194 195 195C152 206 109 184 101 148C98 135 101 120 107 109C111 102 121 93 129 89C136 86 145 83 151 83H154V86V89H151C142 89 130 94 122 101C117 106 111 115 109 121C106 128 106 141 107 147C112 168 130 184 153 190C164 192 181 192 192 189C202 187 208 184 211 181C214 177 228 166 235 162S245 154 250 145C261 124 264 96 256 72C246 43 221 19 189 8C178 5 170 3 158 3C121 1 87 15 60 43C36 68 22 101 19 139V146L22 148C32 152 33 166 24 172C22 173 22 174 22 175C23 182 27 198 30 205C42 237 64 266 93 288L97 291L94 287C92 286 90 284 90 283C90 283 91 282 92 281L94 279L108 293C124 308 125 309 144 318C159 324 179 331 199 335C200 336 201 336 201 336S201 335 201 335ZM787 328C789 328 791 327 791 327C792 327 784 304 779 291C774 277 765 260 758 247L752 237L744 233C720 221 703 204 692 181C689 175 687 171 687 170C687 167 656 150 639 144L631 140V138C632 136 633 135 633 135C637 135 663 147 675 154C680 157 683 159 683 159S683 155 682 151S680 140 680 131L679 119L672 116C634 100 597 97 560 106C551 108 542 112 531 121L521 128L520 139C519 158 516 176 511 193L508 201L512 204C515 208 517 208 524 211C543 216 557 218 576 218C585 218 593 217 600 216C632 211 646 200 645 180V177L643 179C639 184 633 185 628 182C618 175 623 161 634 161C648 161 656 180 649 196C644 207 630 215 613 220C591 226 558 226 535 220C532 220 530 219 530 219C530 220 551 237 564 247C581 260 595 269 602 273C615 280 637 287 653 289C661 290 675 290 681 288C693 285 703 278 707 269C709 264 709 255 707 250C705 246 700 241 696 240C693 238 682 238 682 239S683 241 684 241C686 243 689 248 689 252S687 259 684 262C675 270 661 264 661 252C662 245 666 239 674 235C680 232 691 231 697 233C711 238 719 255 713 270C707 286 683 297 658 296C651 295 640 294 635 293C634 292 639 295 647 299C680 316 713 326 745 329C750 330 782 329 787 328ZM807 325C819 322 840 315 840 314C840 312 833 292 828 281C824 271 811 245 810 244C809 244 805 244 801 244C791 245 778 244 768 242C764 241 761 240 761 240C761 241 763 243 765 247C776 266 787 291 795 317C797 322 798 327 798 327S803 326 807 325ZM867 301C870 299 871 298 871 297C871 295 879 287 885 282C900 271 914 246 919 221C921 211 922 190 921 180C920 172 916 153 914 149L913 147L911 148C908 150 903 152 892 154C887 155 880 156 878 156C874 158 874 158 875 160C876 165 875 183 874 188C869 204 859 219 844 229C839 233 826 239 822 240C821 240 820 241 820 241S823 246 827 251C835 262 848 282 855 295C858 300 861 304 861 304C862 304 864 303 867 301ZM469 254C476 246 486 231 486 230C486 228 444 192 442 192C441 192 416 214 416 214C415 215 418 218 420 222C430 236 443 259 448 272L449 275L456 269C460 265 466 258 469 254ZM913 262C939 233 954 196 956 160V151L953 150C943 145 943 131 952 126C953 125 954 124 954 124C954 123 953 119 952 114C946 87 934 65 915 44L911 39L908 45C907 48 906 53 905 55L904 59L908 63C916 70 918 76 915 82C914 86 908 91 906 91S904 93 905 100C908 112 911 124 913 126C916 129 917 133 917 136S918 145 920 151C931 185 931 210 922 238C918 248 914 257 909 265C907 268 905 271 906 271C906 271 909 267 913 262ZM805 237C806 237 795 221 787 210C766 182 739 156 712 137C705 133 687 123 686 123C686 123 686 126 686 133C686 144 689 157 691 163C692 164 695 168 701 172C718 185 737 205 750 224L755 232L761 233C767 235 776 237 783 238C786 239 805 238 805 237ZM206 235C230 231 257 215 294 185C305 175 325 157 326 156C326 156 324 155 321 154C311 152 303 151 290 152C275 152 267 154 254 159C247 162 246 162 240 169C232 177 227 181 218 186C213 189 210 191 208 194C200 204 192 219 189 230C188 232 188 235 187 235C187 237 198 237 206 235ZM825 232C837 228 847 221 855 211C861 205 867 193 868 185C869 179 870 168 869 164L868 161L866 164C864 165 860 170 857 174C847 186 843 189 835 189C830 188 826 185 823 180C821 176 821 174 821 168C821 164 822 158 822 154C825 141 824 129 820 128C817 127 813 122 812 119L811 115L807 116C798 117 786 122 782 127L780 129L783 128C789 127 797 132 799 139C801 144 800 150 797 154C789 163 776 162 770 152C769 150 768 149 767 149S766 148 766 142C767 130 770 123 777 114C782 109 792 102 796 101C799 100 806 102 810 105L813 108L816 104C825 95 841 101 841 114C841 117 842 117 847 120C853 124 861 131 865 138C868 142 868 142 871 142C872 142 879 143 885 145C899 149 904 149 907 146C911 143 911 140 909 134C907 126 904 124 887 118C874 114 870 112 865 107C861 103 855 90 853 83C852 77 852 71 855 67C857 64 867 59 875 57C879 55 888 55 896 56C898 56 898 56 900 51C901 48 902 43 904 40L906 35L903 32C898 28 886 20 877 16C850 3 821 0 789 6C749 15 715 40 698 75C694 83 689 97 688 102V106L693 109C707 120 724 134 746 156C770 180 789 202 808 226C815 234 816 235 817 235S822 234 825 232ZM742 223C730 207 712 189 698 178C696 176 696 176 699 182C708 198 723 214 739 223C741 225 744 226 744 226S743 225 742 223ZM497 209C498 208 497 207 491 204C483 200 470 191 462 185C459 182 456 180 456 180C455 180 454 182 452 183L448 186L462 195C469 200 479 207 484 211L494 218L495 214C496 212 497 210 497 209ZM493 197C492 195 485 189 478 183C465 173 465 173 463 174C462 174 461 175 461 175C461 176 471 184 478 189C483 192 495 199 496 199C496 199 495 198 493 197ZM505 189C510 175 513 158 514 141C514 134 514 132 513 133C511 135 473 165 472 167L469 168L471 170C473 171 480 177 488 184S502 196 503 196C503 196 504 193 505 189ZM844 183C848 180 850 176 853 163C856 151 858 146 860 144C861 144 861 143 859 140C856 135 849 129 844 125L840 123L837 125C835 127 833 128 831 129C828 130 828 130 829 133S829 144 828 154C826 163 826 173 828 177C829 180 830 181 834 182C839 184 841 185 844 183ZM784 118C788 115 793 113 800 111L807 109L804 108C798 106 796 107 788 113C781 118 778 122 784 118ZM902 108C900 102 899 96 899 95C898 94 898 93 895 92C887 90 882 81 884 73C885 69 890 64 892 63S894 62 892 62C886 59 866 64 860 71C858 73 858 73 858 78C858 82 859 84 862 91C870 105 874 109 892 115C897 116 902 118 903 119C903 119 904 119 904 119S903 114 902 108ZM973 428C963 425 958 413 964 405C967 401 972 398 976 398S985 401 988 405S992 414 989 419C987 426 980 429 973 428ZM691 677C687 676 683 671 683 666C683 658 691 652 699 656C712 662 705 681 691 677ZM556 179C546 174 545 160 554 154C559 151 566 151 570 154C575 157 577 160 577 166C577 170 577 172 575 174C571 181 562 183 556 179Z" horiz-adv-x="1022.99" unicode="D"/>
- <glyph d="M596 1038C586 1036 580 1031 577 1024C575 1019 575 1007 577 1001C578 997 580 995 591 984C604 972 604 971 604 969C603 967 602 965 601 964C599 961 596 962 589 967C586 969 583 971 581 972C580 972 578 975 575 980C568 991 545 1026 543 1029C542 1029 539 1028 538 1028C537 1027 539 1024 545 1015L553 1002L549 1005C544 1010 539 1011 534 1011C524 1010 510 999 505 990C500 980 503 968 510 966C518 965 524 975 518 981C516 983 515 983 512 983H509L510 986C513 994 528 1005 535 1005C543 1005 551 997 554 987C555 982 555 983 552 962C551 953 552 949 555 945C556 944 559 942 560 942C563 941 568 944 573 948C579 953 582 955 582 955C586 952 623 879 623 876C623 875 620 873 617 871L611 867L609 870C582 903 556 928 523 948C485 971 442 986 398 990C378 993 348 992 327 989C286 984 243 967 210 943L203 938V946C202 955 200 964 196 973C193 979 187 989 186 989S184 989 183 988L181 986L183 984C189 974 192 964 192 957C191 951 190 948 185 946C179 943 173 946 160 958C151 967 144 972 136 975C108 986 72 973 50 944C45 936 38 924 35 915C34 912 33 909 33 909C32 909 26 918 24 922C17 938 19 961 31 977C34 982 43 990 48 992C55 996 62 997 68 996C73 995 78 992 81 990C82 989 82 990 86 994L89 998L87 1000C84 1002 78 1005 73 1006C51 1010 26 992 17 966C10 943 14 921 28 905L32 901L31 896C28 876 30 854 37 832C45 809 59 787 78 770C85 764 98 755 103 752L105 751L106 738C106 723 107 714 109 701C116 660 133 621 156 590C158 587 160 585 160 584S139 572 126 565C91 547 67 543 56 553C55 555 52 557 52 559C49 564 48 573 49 582L50 585L52 582C54 577 60 574 66 574C71 574 77 578 80 582C82 585 82 586 82 591C82 597 82 598 80 601C74 610 61 611 52 603C44 594 40 575 44 561C47 554 53 548 60 546C76 541 104 548 138 565L146 569L141 563C136 556 128 545 124 537C117 525 100 505 88 497C81 492 73 488 66 487C61 485 48 485 47 486C47 486 48 487 49 489C54 495 48 506 40 503C32 501 31 492 37 485C39 482 44 480 48 480C51 479 51 479 51 481S51 483 52 481C54 480 55 480 60 480C68 481 74 483 82 487S98 496 107 506L114 513L112 507C106 478 110 448 125 424C130 416 142 404 149 399C152 397 154 395 154 395S154 392 153 388C151 376 151 360 153 343L154 339L147 334C143 331 136 325 131 320C89 279 66 225 66 168C66 142 70 119 79 97C89 73 108 49 125 37C128 34 130 32 130 32C130 29 118 16 110 12C99 5 84 1 73 3L70 4L73 6C81 11 82 23 76 30C71 34 63 36 57 33C48 29 45 17 51 9C54 5 59 1 66 0C72 -3 87 -3 96 -1C110 2 123 10 132 22C135 25 137 28 137 28C138 28 140 27 143 25C173 10 209 8 235 21C252 29 264 42 269 58C272 66 272 78 270 84L268 89L274 94C277 97 285 107 291 115S304 131 306 133C318 144 338 144 347 133C351 129 352 125 352 118S352 110 349 114C347 117 341 120 336 120C332 120 328 118 325 115C318 107 320 95 329 90C332 88 333 88 338 88C344 89 348 91 352 97C360 107 361 127 354 142C349 156 337 168 323 174L319 175L324 176C332 177 347 180 358 184L369 188L374 179C385 159 390 141 390 119C390 74 364 38 327 32C321 31 312 31 309 32C307 32 307 32 309 34C313 36 315 40 315 45C315 60 294 64 289 50C285 41 291 32 302 27C309 25 325 25 334 27C365 36 388 62 395 98C397 107 397 132 395 140C394 144 394 146 394 146C394 147 396 144 399 140C413 120 432 100 453 84C497 48 548 27 605 20C616 19 651 19 662 20C694 24 729 33 758 44C763 46 767 48 768 48C768 48 769 47 770 47C772 44 777 42 781 42C789 42 794 48 795 56L796 60L806 65C841 80 878 94 902 100C923 105 935 106 952 106C961 106 967 105 970 104C975 103 985 98 988 96L990 95L985 93C973 87 958 84 938 83C924 82 920 81 913 76C905 70 899 61 897 52C896 48 897 37 898 33C898 31 898 32 891 35C882 40 873 44 864 46C858 48 855 48 846 48C834 48 829 47 823 43S815 35 814 29C814 19 820 13 829 13C844 13 849 32 836 40L834 41L838 42C847 43 865 41 876 36C884 33 894 27 902 22C937 0 945 -3 959 -3C975 -3 986 1 998 12C1003 18 1005 21 1008 26C1013 36 1014 42 1013 53C1013 68 1009 78 1002 88C1000 91 999 93 999 93C1009 101 1016 107 1020 116C1031 138 1023 165 1005 165C999 165 994 161 992 155C989 147 996 137 1005 137C1009 137 1014 140 1016 143L1018 146V141C1019 136 1018 127 1016 122C1013 114 1007 106 998 100L994 97L989 100C969 113 936 113 890 101C881 99 853 90 845 87C844 87 849 90 855 95C883 113 903 130 926 153C965 191 989 226 1009 271L1013 281H1017C1022 282 1025 283 1028 287C1032 291 1033 294 1033 299C1032 305 1030 310 1026 312L1024 314L1025 319C1036 360 1039 417 1034 460C1031 489 1022 524 1012 548L1010 552H1012C1013 552 1016 553 1019 553C1028 555 1032 558 1033 564C1033 568 1031 573 1027 576C1025 577 1020 580 1015 581C1009 584 1005 586 1003 588C999 591 995 600 994 605C994 610 995 611 1001 613C1006 615 1017 616 1017 615C1017 615 1016 614 1015 612C1009 603 1017 592 1027 594C1036 597 1038 607 1030 615C1026 619 1020 621 1012 621C1000 621 990 617 989 610C988 606 989 599 992 593C996 585 999 582 1011 577C1018 575 1022 572 1024 571C1026 568 1027 568 1027 564C1027 556 1023 554 1012 560L1006 562L1001 573C988 598 973 619 955 639L948 646H958C969 646 974 648 983 653C1002 666 1007 693 996 715C992 723 981 734 973 738C952 750 928 753 902 747C879 741 858 729 841 712L836 708L829 709C824 710 815 710 807 710C792 710 783 709 770 705C766 704 762 704 762 704S762 706 763 708C763 710 763 712 763 712C762 712 758 713 754 714C747 715 746 716 746 717C746 717 747 722 748 727C748 732 749 736 750 736C750 736 756 734 761 731C770 726 773 725 776 725C783 725 787 730 787 738C787 742 786 744 781 754S776 766 776 770C776 779 781 789 788 791C790 791 792 791 796 790C802 789 809 785 813 782L816 780L812 778C807 777 805 775 804 770C802 763 807 756 815 756C822 756 826 761 826 770C825 773 825 776 825 776S828 774 832 772C868 750 921 753 964 779C978 788 995 804 1003 816C1016 835 1021 854 1020 876C1020 891 1018 900 1011 913C999 937 979 952 954 956C923 960 895 943 888 916C881 888 901 862 929 864C944 866 954 870 960 877C969 886 969 897 961 906C953 914 940 915 932 908C928 905 925 899 924 894C923 887 927 878 934 874C938 872 938 871 929 871C919 870 910 873 903 880C890 893 889 914 901 930C915 949 941 955 966 946C986 939 1002 919 1009 895C1010 888 1011 886 1011 874C1011 861 1010 859 1009 852C1005 838 998 826 988 816C981 808 972 803 963 800C957 798 955 797 947 797C935 797 929 798 920 802C907 808 904 811 873 844C844 874 819 901 811 909L806 914L812 923C827 946 845 964 864 976C878 984 893 990 910 994C919 996 921 996 938 996S959 996 975 994C989 992 995 991 1007 991C1023 991 1027 992 1036 997C1050 1005 1051 1023 1038 1031C1035 1033 1033 1033 1029 1033C1024 1033 1023 1033 1019 1031C1011 1026 1008 1016 1012 1007C1014 1005 1016 1002 1018 1000L1021 998L1018 997C1013 996 990 998 974 1000C955 1002 932 1003 921 1002C887 998 859 984 834 959C824 949 817 941 808 928L802 919L799 920C794 923 781 927 773 929C763 931 745 931 735 929C705 924 675 911 640 887L629 880L628 886C623 914 621 943 624 962C627 989 639 1013 656 1024C663 1029 669 1031 678 1031C692 1032 700 1029 710 1019C717 1012 720 1007 724 997C727 992 727 990 727 985C727 981 727 979 724 974C719 963 707 955 696 954C684 954 679 959 681 970V975L682 972C686 966 695 963 702 967C716 974 711 995 695 995C685 995 677 985 675 971C673 963 674 959 679 955C689 945 709 948 723 961C728 966 733 974 733 978C733 980 733 980 736 977C754 961 781 966 783 986C784 991 783 1000 780 1005C774 1017 762 1022 753 1014C749 1011 748 1008 748 1003S749 995 753 992C760 986 770 987 775 995L777 997V993C777 990 777 987 777 986C776 976 764 970 753 973C744 976 737 983 732 994C725 1009 721 1017 712 1025C706 1031 699 1035 691 1036C685 1038 674 1038 668 1036C643 1030 624 1002 618 964C616 955 616 921 618 909C619 904 619 899 619 899S615 908 609 919S596 943 594 948L588 957L595 958C603 959 606 960 609 964C612 969 609 975 601 983C584 998 582 1001 581 1012C581 1017 581 1018 583 1022C585 1025 587 1027 588 1028C595 1033 609 1035 616 1032C619 1031 619 1031 617 1029C615 1028 613 1024 613 1022S616 1016 618 1015C623 1012 629 1015 631 1020C632 1026 625 1036 617 1038C612 1039 602 1039 596 1038ZM566 982C571 975 573 970 573 969S572 964 572 960C570 951 569 948 566 947C564 946 560 948 558 950C557 952 557 955 559 969C561 980 561 988 558 994C557 997 559 994 566 982ZM381 985C423 983 458 974 495 956C518 945 537 933 556 916C572 903 590 884 602 869L606 863L594 853C587 848 580 843 579 842L576 839L575 841C571 848 557 864 547 874C527 895 506 909 482 921C429 947 374 949 323 927C301 917 282 904 239 871C216 853 206 845 194 837C168 821 151 813 130 810C120 808 120 808 121 813C130 841 146 871 166 895C173 902 173 902 177 903C186 904 196 913 200 924C202 929 205 932 219 941C259 968 304 983 353 985C359 986 365 986 366 986C366 986 373 986 381 985ZM128 910L146 905L137 902C126 896 115 892 105 890C93 887 77 887 66 890C62 891 57 893 54 894C50 896 50 896 51 898C56 903 68 909 77 912C92 916 103 915 128 910ZM162 903L165 902L158 895C140 872 126 846 117 819C115 813 113 809 113 808C112 808 108 808 103 809C91 810 81 812 70 818C54 825 44 836 40 851C37 859 37 870 40 878C42 886 45 891 47 890C48 890 51 889 55 887C66 883 73 882 85 882C103 882 120 886 142 897C154 903 156 904 162 903ZM706 872C726 869 744 859 760 844L767 838L764 828C760 814 753 784 749 767C748 760 746 754 746 754S743 751 740 748C729 740 725 738 722 742C716 748 718 753 730 763C734 767 738 771 739 773C746 783 743 803 734 809C730 812 725 813 716 813C703 813 694 809 690 801C685 792 688 783 697 782C709 780 715 797 705 802C703 803 702 804 702 804C702 805 709 806 715 806C727 806 732 804 735 798C736 796 737 794 737 788C737 778 735 776 725 766C713 756 710 750 714 743C717 737 719 737 732 737H743V735C743 734 742 730 741 725C740 721 740 717 740 717S736 717 732 718C727 719 723 720 723 720C723 719 718 690 718 689C718 689 719 689 721 688C728 687 728 687 721 682C713 676 704 668 698 662L694 657V670L693 683H685H676V693C673 741 661 795 640 849C638 855 636 861 636 861C635 863 653 869 667 872C677 874 696 874 706 872ZM631 845C633 837 635 831 635 830C636 829 634 833 631 837C628 842 624 848 623 850S620 854 620 854C619 855 626 860 627 859S629 852 631 845ZM618 845C634 820 646 796 653 772C662 739 668 712 670 689V683H662H654V666V649H662H670V639C669 626 667 606 666 598C665 595 664 587 663 582C661 570 658 554 654 539C636 474 605 411 561 354L554 344L551 347L547 351L535 339L522 327L526 323L531 318L529 316C527 312 499 285 488 275L477 265L467 275L458 284L479 306C500 326 510 337 523 353C581 425 617 505 629 588C632 611 633 620 633 648C633 677 632 687 628 710C621 753 604 798 583 831L581 833L586 836C592 840 613 852 613 852C614 852 616 849 618 845ZM784 818C789 812 796 804 799 800L805 794L800 796C793 798 787 798 783 796S775 789 772 783C770 779 770 778 770 772V765L776 753C780 744 781 740 781 738C781 734 779 731 776 730C771 727 768 730 761 745C759 749 756 753 755 754L753 755L756 771C759 786 767 817 770 827C771 831 772 832 773 831C773 831 778 825 784 818ZM400 810C420 806 442 797 461 784C520 744 556 674 564 589C566 572 566 540 564 523C557 447 526 374 475 314C460 297 460 297 476 330C500 378 514 413 524 450C546 531 542 608 511 666C499 690 486 706 463 726C457 731 452 736 450 738C447 742 445 747 445 750C445 751 444 752 443 752C439 753 438 753 436 748C433 744 423 731 421 730C420 729 417 732 414 735C398 748 381 757 362 760C300 770 244 721 244 657C244 644 244 640 248 631C250 628 252 625 255 622L259 619L254 618C252 618 247 618 244 617C221 616 197 607 175 594C171 591 166 588 166 588C165 588 153 604 148 613C142 624 136 635 131 647C127 657 123 668 124 669C124 669 125 667 127 665C133 655 145 646 155 643C162 640 176 640 182 642C192 644 199 651 199 659C199 670 190 676 181 673C171 669 169 657 177 650C178 649 179 647 179 647C179 646 164 647 160 648C136 654 119 680 114 719C112 728 111 747 112 747C112 747 115 746 119 744C153 730 193 729 228 742C244 748 253 754 284 773C295 780 308 788 312 791C332 802 350 809 368 811C376 812 391 811 400 810ZM359 754C378 751 399 741 411 728C415 725 415 725 413 723C410 720 393 707 383 701C371 694 347 681 331 674C326 672 321 670 321 669C321 669 321 668 321 666L322 663L328 664C336 664 352 663 361 661C382 656 404 645 421 632C424 630 429 625 433 621L439 615L437 609C433 595 422 577 410 565L404 558L398 564C369 592 328 611 285 617C280 617 276 618 276 618S276 619 277 619S284 624 286 628S288 640 286 644S279 652 275 653C272 655 265 655 261 653C258 652 253 647 251 644C250 642 249 653 250 662C253 699 275 732 307 747L313 749L312 746C306 734 314 721 327 721C337 721 344 728 344 738C344 744 342 748 337 752C334 754 334 754 335 754C339 755 353 755 359 754ZM951 744C971 740 988 726 993 708C995 702 996 689 995 683C991 665 976 652 958 652C953 652 944 653 947 654C950 654 956 660 957 663C962 676 953 689 940 689C931 689 924 682 922 673L921 669L915 674C905 681 886 692 876 696C874 697 873 698 873 698C873 699 874 701 875 704C888 733 921 751 951 744ZM822 705C827 705 831 704 831 704C832 703 830 700 827 696C810 674 800 648 796 618C795 613 795 607 795 605V600H783C774 600 769 600 765 599C743 594 727 580 722 559C720 553 720 540 721 534C726 517 738 505 752 503C769 500 783 509 783 521C783 525 780 530 777 531C772 535 766 534 761 530C756 524 757 517 762 512L765 509H761C759 508 755 508 753 509C726 513 716 552 736 577C747 589 766 596 787 594L794 593V590C796 565 801 544 811 520C817 507 825 492 840 464C847 453 852 442 852 442C852 440 838 426 831 421C821 415 807 409 798 407H796L795 418C795 432 793 439 788 449C780 466 766 478 750 484C741 487 731 488 725 485C720 483 715 478 715 474C713 467 716 455 721 449C726 442 735 439 742 443C752 447 753 462 744 468C737 472 728 471 723 465C721 461 721 462 721 469C721 477 724 481 733 481C743 482 758 475 769 463C779 453 785 442 788 429C789 423 790 407 789 405C789 405 782 405 775 405C760 405 754 406 743 411C722 420 702 440 689 465L684 474L688 485C710 540 727 602 739 672C740 678 741 684 741 684S744 684 748 683S756 682 757 682C757 682 758 686 759 690L760 698L767 700C785 705 803 707 822 705ZM880 688C898 680 917 667 926 659C928 656 932 653 934 652C939 648 955 632 963 622C975 607 984 593 992 576L998 566H995C990 567 988 565 985 554S980 540 977 539C975 537 971 538 968 542C965 545 965 550 968 559C971 570 970 573 967 579C962 589 954 595 948 595C944 595 936 591 931 586C923 579 921 570 925 562C928 555 935 553 941 556C951 562 947 578 935 577C933 577 932 577 932 577C932 579 938 584 942 587C950 591 954 589 960 579C965 572 965 569 962 559C960 549 960 544 962 539C964 536 969 533 972 533S982 536 989 542C995 547 1002 551 1004 551C1004 551 1005 550 1005 550C1021 510 1027 479 1030 437C1032 402 1028 359 1020 324C1018 316 1018 316 1016 316C1006 316 997 306 999 296C1000 292 1003 287 1005 285L1007 283L1005 276C997 259 986 238 974 220C934 160 876 110 805 72L793 66L791 67C789 70 784 72 781 72C777 72 773 70 771 68C767 65 766 63 766 58L765 54L759 51C739 43 708 34 687 30C625 19 565 27 510 54C458 80 414 122 384 175C381 181 377 186 376 188L375 190L382 194L390 197L392 195C393 193 400 185 407 177C435 144 448 131 463 120C527 72 611 58 702 80C762 95 818 124 866 164C878 173 904 200 913 211C938 240 956 272 966 304C985 362 981 419 954 472C947 487 940 497 922 526C903 555 899 560 892 574C872 609 864 640 866 670C867 680 870 693 871 693C871 693 876 691 880 688ZM732 671C721 605 704 542 684 491L680 482L678 488C671 510 668 529 667 554C667 569 668 571 670 585C673 605 674 610 678 620C686 640 698 657 714 671C720 676 734 686 734 685C735 685 734 679 732 671ZM686 645C684 643 681 639 679 635L675 628L676 633C676 636 676 641 676 644V649H682H688ZM273 612C298 610 321 604 345 592C363 583 380 572 393 560L399 554L397 552C391 548 377 539 369 535C356 528 342 524 327 522L321 521L324 524C330 531 329 542 321 547S304 549 300 541C297 536 299 527 305 523L307 521L303 520C296 519 277 521 262 525C238 531 215 543 194 559C187 565 171 581 171 582C171 584 181 591 191 596C212 606 231 611 259 612C260 612 267 612 273 612ZM449 602C471 573 484 537 490 494C492 479 492 447 490 431C485 392 475 355 458 315C449 295 448 292 447 293C447 293 443 296 440 298C436 301 429 305 424 308S415 314 415 314S418 318 421 323C428 335 440 360 444 370C462 419 460 465 438 510C432 523 424 535 415 546L408 554L414 560C421 568 428 576 433 585C437 592 442 602 443 606C443 608 444 608 444 608S447 606 449 602ZM191 554C228 524 274 510 318 514C348 517 379 530 399 546C401 548 403 549 403 549C405 549 418 532 425 522C449 483 456 439 445 395C441 380 437 367 429 351L425 342L411 349C384 362 364 369 341 375C290 387 240 383 193 362C185 358 169 350 162 345C161 344 160 344 160 344C159 346 157 364 158 371C158 378 161 390 162 391C162 392 164 391 166 391C189 383 215 389 233 405C246 416 253 431 255 449C255 453 256 456 256 457C257 457 272 460 281 461C306 463 332 459 350 449C366 441 376 429 380 414C381 408 382 397 380 394C380 393 380 393 379 395S374 400 370 401C358 404 348 392 353 381C355 376 361 372 367 372C370 372 375 374 378 377C387 386 390 403 385 423C382 432 376 445 370 453C355 473 330 488 302 492C287 495 265 494 251 491L247 490L244 494C240 500 230 508 224 512C216 517 208 519 198 520C189 520 185 519 178 517C173 515 167 510 165 506C159 495 166 482 179 482C187 482 195 489 195 498C195 503 192 508 187 511L185 513H188C198 515 212 512 221 506C227 503 234 496 238 491L240 488L238 487C236 486 234 485 233 485S227 483 223 480C193 465 169 439 159 409C158 405 156 402 156 402S148 407 143 411C134 420 123 438 119 451C113 474 114 499 123 522C126 528 128 532 134 540C146 557 152 564 159 571L165 578L175 568C180 563 187 557 191 554ZM663 530C665 512 668 498 674 482L677 474L674 467C654 420 628 377 600 341C590 329 579 317 579 317C579 318 574 323 568 329C560 338 558 340 559 341C559 341 564 348 569 355C610 408 642 472 658 533C660 538 661 542 661 541C661 541 662 536 663 530ZM693 445C699 436 712 423 721 416C724 414 731 410 735 408C750 400 761 398 778 398C785 399 788 398 788 398C786 391 784 385 781 380C778 374 771 364 767 360L764 358L758 362C731 380 696 386 665 380C652 377 637 371 627 365L623 362L628 369C642 390 655 413 667 438C672 447 677 458 678 461L680 466L685 458C687 454 691 448 693 445ZM249 451C247 425 231 405 207 397C200 394 199 394 188 394C178 394 176 394 171 396C167 397 165 398 165 398S167 402 169 406C182 426 207 442 239 452C244 454 248 455 248 455C249 455 249 454 249 451ZM863 423C878 392 886 366 890 333C892 321 892 287 891 274C883 211 852 160 802 131C749 98 681 97 618 128C591 141 571 156 549 177C536 189 527 200 513 219L501 234L509 240C537 259 556 270 570 272C581 274 588 270 591 261C593 257 594 247 593 243V240L591 242C586 248 576 248 572 241C568 233 574 224 583 224C593 224 601 235 600 250C599 262 596 269 589 273C586 274 584 275 579 275C567 276 555 272 535 261C530 259 526 256 526 257C535 264 544 273 551 279C555 283 559 287 559 287C560 287 561 285 563 284C564 282 565 281 566 281S591 304 591 304S589 306 587 309L583 313L588 318C591 321 597 328 601 333C609 343 617 350 626 357C657 377 695 382 730 369C741 365 759 355 759 353C759 352 750 345 743 341C724 331 705 326 679 324C670 324 665 323 661 322C632 312 615 275 623 238C627 217 636 200 651 185C659 177 669 170 679 165L685 163L680 158C672 151 668 142 669 132C669 125 670 120 674 115C677 111 681 109 686 109C699 109 702 126 690 131C687 132 686 132 683 131C681 131 679 129 678 128S675 126 675 126S675 129 675 132C675 141 679 150 686 155C691 160 692 160 699 159C708 157 723 157 732 158C782 167 817 218 812 272C809 301 796 327 776 347L769 354L773 358C782 368 790 383 793 395C794 399 794 400 796 400C819 405 840 417 852 431C854 433 856 435 856 435C857 435 859 429 863 423ZM307 374C340 371 370 362 407 344L422 337L418 331C410 318 410 316 409 317C408 317 403 319 397 322C326 352 242 343 183 300C180 298 177 296 177 296C176 296 170 310 167 317C166 320 164 326 163 330L161 337L167 341C196 360 233 372 268 375C278 376 298 376 307 374ZM773 342C789 325 799 306 804 283C807 271 807 252 804 240C800 219 791 203 777 189C766 178 752 170 738 166C728 164 724 163 720 165C713 168 706 169 699 168S692 167 687 169C661 179 640 201 632 229C625 251 626 273 635 291C641 301 649 310 658 314C665 317 670 318 680 318C708 318 728 309 734 295C735 291 736 289 735 285C735 278 734 275 730 271C723 265 717 265 704 272C695 276 694 276 689 276C679 276 672 272 666 264C662 257 660 250 660 241C660 230 664 219 671 209L675 204L677 206L679 208L676 213C672 220 670 223 671 228S677 239 682 240C689 242 693 241 706 234L719 227H726C731 227 733 228 736 229C747 234 753 245 753 260S746 289 734 301C727 308 720 312 711 317L703 321L708 322C725 325 747 335 760 346C762 348 764 349 765 349C765 349 769 346 773 342ZM157 327C159 319 163 309 168 300L172 292L164 285C141 263 126 236 120 205C118 196 118 194 118 178C117 164 118 160 119 154C123 134 130 120 141 105L146 98V88C146 72 143 59 137 44L135 38L132 41C112 55 95 78 84 104C69 140 68 185 80 227C90 258 108 288 131 312C140 321 155 333 155 332C156 332 156 329 157 327ZM545 302L555 292L551 288C543 280 510 251 500 243L497 240L489 250L481 260L491 269C497 274 509 286 518 295C527 305 535 312 536 312C536 312 540 308 545 302ZM252 288C270 287 286 282 303 274S334 255 353 238L362 230L360 229C358 228 355 227 352 226L346 225L339 232C320 247 298 258 275 264C267 266 255 267 243 267C230 267 223 267 212 264L204 262L202 264C199 267 190 277 190 278S202 283 212 286C226 289 238 290 252 288ZM193 265C195 262 197 259 197 259C196 259 193 257 190 256C167 244 152 227 147 205C146 200 146 197 146 189C146 183 147 178 148 176C149 173 149 172 147 165C146 159 145 144 144 134V130L140 135C132 145 126 159 124 172C122 186 124 206 130 220C138 241 155 260 177 272L183 276L185 273C186 271 190 268 193 265ZM269 259C287 255 304 248 319 238C327 233 337 225 337 224S322 221 309 221C284 221 260 227 238 238C231 242 216 251 212 255L210 257L215 258C227 261 230 261 246 261C258 261 263 260 269 259ZM208 250C223 238 247 226 268 220C290 214 316 213 338 217L344 218L346 216C349 214 358 203 362 197L365 193L362 192C348 186 328 182 313 181C305 181 304 181 304 179C304 178 303 178 298 178C278 176 262 166 239 142C227 129 216 119 210 116C203 113 194 111 187 111C175 111 165 114 155 121L150 124V130C149 139 151 165 152 165C152 165 153 163 155 161C157 157 163 152 168 149C183 140 202 144 212 159C223 175 218 198 201 207C183 216 165 210 155 190L152 184V191C152 213 164 232 185 246C191 250 200 254 202 254C203 254 206 252 208 250ZM376 213L386 202L380 200C371 195 372 195 366 203C363 206 359 212 356 215L351 220L356 221C358 222 361 223 362 223S365 224 366 224S371 219 376 213ZM174 201C168 195 168 187 174 181C179 177 186 177 191 182S196 194 191 199L188 203H191C195 204 200 201 205 196C210 190 212 187 212 177C212 170 212 169 209 165C204 156 197 151 187 151C179 150 174 152 168 156C164 159 158 167 156 172C154 175 154 176 156 180C159 190 166 199 172 203C176 205 177 205 174 201ZM168 81C196 63 233 64 260 83L264 85L265 82C266 81 266 76 266 72C267 59 262 49 251 38C236 24 218 18 194 19C176 20 165 23 149 30L141 34L143 39C149 51 153 69 153 83V91L158 87C161 85 166 82 168 81ZM998 85C1004 75 1008 61 1007 49C1006 29 993 12 974 5C967 2 954 2 947 4S928 12 918 19C909 25 909 25 906 30S903 36 903 44C903 51 903 52 906 57C912 70 922 77 937 77C946 77 946 76 943 73C939 71 936 64 936 60C936 55 937 51 941 48C947 42 953 41 961 44C973 51 973 69 960 77L957 78L964 80C972 81 982 85 988 87C991 89 993 90 994 90S997 87 998 85ZM424 66C408 59 413 35 430 35C439 35 446 43 447 51C447 54 444 60 442 62C438 67 430 69 424 66Z" horiz-adv-x="1045.06" unicode="V"/>
- </font>
- <font horiz-adv-x="0" id="yswab">
- <font-face ascent="751" descent="-249" font-family="yswab" units-per-em="1000"/>
- <missing-glyph d=""/>
- <glyph d="M81 584C107 584 134 581 156 577C220 564 294 528 307 457C308 457 308 424 308 424C307 408 303 392 297 377C264 295 180 250 97 226C78 221 20 208 11 205L19 182C34 184 48 188 63 191L138 208C188 219 238 228 284 253C326 277 357 308 385 348C389 357 391 365 404 365C409 365 456 359 475 356C567 340 689 298 689 177C689 147 681 117 664 92C643 60 599 30 548 30C518 30 489 40 462 53C406 79 357 119 308 156L265 187C258 192 248 203 238 203C233 203 29 157 29 157C30 152 32 146 34 141C37 131 46 134 59 132C118 128 161 109 207 87C292 49 378 -13 493 -13C509 -13 525 -11 540 -8C596 7 643 30 682 64C731 106 777 165 777 250C777 342 719 436 631 445V446L662 465C686 487 718 503 737 530L726 544L577 698H576L415 542C395 602 347 648 291 676C282 680 248 697 238 697C230 696 221 689 215 685L164 653L107 617L91 607C85 603 81 601 81 591V584ZM630 474C619 468 608 461 597 455C544 424 478 404 407 393C417 418 422 444 424 471V497C423 500 423 503 423 506C423 520 435 526 442 532C452 541 461 551 471 560C476 564 503 595 510 595C515 595 520 588 522 586L630 474Z" glyph-name="B" horiz-adv-x="795" unicode="B"/>
- <glyph d="M523 698C487 678 448 670 409 670C381 670 357 674 334 679C328 680 320 683 313 683S299 678 294 676L263 660C235 646 178 619 155 602C62 537 11 422 11 308C11 186 69 94 144 40C187 9 246 -14 314 -14C444 -14 574 64 574 189C566 183 559 175 551 168C503 127 432 95 356 95C304 95 259 111 223 132C213 138 204 146 194 151V153C233 178 272 204 309 231L311 258V567C349 559 412 548 451 548C465 548 480 550 492 560C516 580 520 617 522 646C523 658 524 669 524 681C524 687 524 693 523 698ZM194 596V229V213C194 191 186 182 175 169C125 219 86 287 86 378C86 474 130 562 194 596Z" glyph-name="C" horiz-adv-x="592" unicode="C"/>
- <glyph d="M170 347H220C223 347 227 348 231 348C241 348 245 343 249 336C252 330 256 325 260 319C327 224 410 139 410 -18C410 -48 405 -79 388 -105C373 -129 349 -151 312 -151C230 -151 192 -61 175 -1C170 17 164 36 162 55H11V38C44 36 54 -6 66 -30C96 -102 170 -152 244 -168C265 -173 287 -176 308 -176S349 -173 369 -167C463 -137 515 -31 515 73C515 146 487 215 456 268C440 296 421 321 402 347C437 349 478 344 509 349C526 372 534 404 547 431H361H352C338 431 339 436 332 445C311 478 288 528 288 576S319 671 370 671C381 671 391 668 401 662C430 642 444 601 444 554H561V672C544 675 526 682 509 685C473 693 428 698 390 698C343 698 307 681 279 655C236 615 204 549 204 473V460C205 450 211 412 211 412C209 401 188 380 184 376C177 369 170 366 170 353V347Z" glyph-name="F" horiz-adv-x="579" unicode="F"/>
- <glyph d="M377 698L370 674L420 660C418 647 413 634 408 621C359 485 230 396 120 330C96 316 34 281 11 270C29 237 54 194 72 164C73 161 75 157 79 155C80 155 88 154 88 156C188 189 303 231 422 231C451 231 470 224 488 208C521 180 534 138 534 96C534 87 533 77 532 67C519 -15 461 -90 378 -110C364 -113 349 -115 335 -115C304 -114 262 -95 262 -56C263 -43 270 -33 279 -24C295 -8 319 6 319 31C319 33 318 36 318 38C318 43 316 48 314 53C304 73 283 85 262 85C217 85 197 39 197 0C197 -10 198 -19 200 -28C216 -107 305 -156 397 -156C427 -156 456 -151 484 -142C567 -113 633 -42 653 44C658 63 660 84 660 104C660 193 620 265 574 311C568 317 542 343 533 343C523 343 503 333 499 331L430 306L272 247C243 236 214 223 184 214C167 247 148 277 131 309C161 315 222 342 241 349C370 405 489 484 569 597C578 609 588 622 594 636L377 698Z" glyph-name="H" horiz-adv-x="680" unicode="H"/>
- <glyph d="M522 698L384 551V698C375 695 366 690 357 686L311 664C256 639 202 614 153 578C79 525 11 449 11 339C11 317 13 294 17 273C37 167 104 69 202 20C242 2 288 -14 342 -14C363 -14 379 -10 398 -6C469 15 524 71 572 125C619 180 679 243 698 315C703 332 706 350 706 368C706 373 706 379 705 384C699 422 677 457 657 489C637 522 616 553 593 584C567 621 540 656 522 698ZM267 616V395C267 376 268 356 268 336C268 281 260 237 238 198C232 185 224 174 217 161C207 167 199 176 191 185C145 231 108 312 108 386C108 478 161 544 217 585C233 597 250 606 267 616ZM239 142L383 310C387 375 381 447 385 511C401 532 419 551 437 571C460 548 479 522 498 496C524 460 578 385 597 347C605 332 610 324 610 303C610 290 607 276 606 264C595 160 524 85 418 85C357 85 306 105 259 130C252 134 246 139 239 142Z" glyph-name="O" horiz-adv-x="724" unicode="O"/>
- <glyph d="M321 -13L376 42C379 45 394 58 394 63S381 81 380 82C350 117 316 163 316 224C316 246 318 282 324 295C329 305 391 376 396 384C363 406 332 430 300 453L276 471C273 473 268 477 264 477C258 477 238 461 238 461L173 415C98 363 18 293 11 195C11 195 12 147 14 147C18 128 23 109 32 92C53 49 87 13 131 -9C131 -9 143 -13 143 -10C152 -5 159 5 166 12L212 58C215 61 233 81 238 81C241 81 243 78 245 76C259 59 318 -13 321 -13ZM307 316C301 301 262 166 257 150C253 125 242 120 226 104L199 77C195 73 191 68 186 66C179 66 166 76 163 78C122 109 87 161 87 226C87 299 134 354 174 386C178 389 184 396 190 396C194 396 198 392 201 390L223 374C241 362 259 349 277 336C287 329 296 321 307 316Z" glyph-name="a" horiz-adv-x="414" unicode="a"/>
- <glyph d="M291 93L280 110C269 107 260 100 249 95C230 87 209 83 188 83H177C108 90 102 187 102 257V287C103 315 94 342 94 371C94 385 99 406 113 411C117 411 120 409 123 407C129 403 206 355 206 355C210 353 231 338 235 338H236C243 338 248 348 251 353C264 371 279 388 291 407C263 423 236 441 208 459L186 472C183 474 179 477 175 477C168 477 160 470 155 466C121 441 78 419 54 386C25 344 11 282 11 218C11 128 47 58 99 10C103 6 122 -11 129 -11C134 -11 163 9 173 15C183 22 291 89 291 93Z" glyph-name="c" horiz-adv-x="309" unicode="c"/>
- <glyph d="M152 382C145 380 139 376 132 373C87 347 48 321 24 272C15 251 11 229 11 206C11 201 12 195 12 190C20 102 78 28 154 -4C161 -7 174 -12 182 -12C189 -12 239 11 257 19C289 32 323 43 349 66C391 104 410 169 410 228C410 240 409 252 407 264C392 337 330 391 269 428C228 452 153 478 153 543C153 570 167 595 183 611C191 617 195 619 195 632V643C140 643 75 618 55 563C50 550 49 536 49 522C49 469 90 429 118 407C129 398 141 391 152 382ZM97 239V249C97 286 117 320 145 344C151 349 168 365 177 365C183 364 188 359 193 357C257 314 338 266 338 167C338 158 338 149 337 141C335 114 333 80 306 65C303 64 301 63 299 63C295 63 277 69 272 69C262 71 251 70 241 72C218 75 196 85 176 98C128 130 103 183 97 239Z" glyph-name="d" horiz-adv-x="428" unicode="d"/>
- <glyph d="M278 113C249 102 239 89 198 89C178 89 159 95 144 110C129 127 123 143 117 169C116 173 108 222 113 222C116 227 123 230 128 234C140 242 290 339 297 343C269 389 239 434 210 479C199 475 122 437 94 423C75 413 53 406 39 388C19 361 15 323 13 290C12 270 10 248 10 228C10 131 41 65 87 9C94 2 100 -8 110 -11C110 -11 121 -8 121 -6C132 0 241 66 241 66L266 81C273 86 278 87 278 101V113ZM110 249C109 262 109 276 109 289C109 338 122 373 147 402L179 352L206 312L110 249Z" glyph-name="e" horiz-adv-x="315" unicode="e"/>
- <glyph d="M11 356H67C76 173 89 -4 108 -177H114C117 -177 120 -177 122 -175C124 -174 128 -152 129 -145C149 -26 166 107 176 230C178 251 185 339 185 356H267V419H206H197C186 419 175 420 165 425C144 436 129 474 129 502C129 526 138 550 159 565C167 571 176 576 190 576C206 576 220 569 235 560C247 552 262 541 276 541C288 541 293 555 298 563L329 607C335 615 341 624 346 633C342 636 335 642 329 642H327C318 638 318 624 307 624H304C279 629 264 656 237 657C137 657 114 562 84 494C67 453 53 419 22 388C16 382 11 380 11 366V356Z" glyph-name="f" horiz-adv-x="301" unicode="f"/>
- <glyph d="M337 479C330 471 296 424 290 420C286 418 281 418 277 418H164C148 418 148 422 139 433L116 463C113 467 108 476 103 476C99 476 96 471 94 468C90 462 70 437 65 430C59 424 54 417 54 406C54 401 55 396 55 391V139V126C55 122 55 118 56 114C57 109 71 84 76 75C89 50 101 25 115 1C131 8 147 17 162 26C171 30 286 92 289 92C295 90 301 80 304 75C327 44 345 0 345 -50C345 -111 280 -142 233 -142C182 -142 145 -113 111 -83C103 -76 73 -48 65 -45C48 -68 29 -88 11 -110C3 -120 -9 -126 -9 -144C-9 -161 4 -161 17 -167C63 -186 119 -200 181 -200C192 -200 202 -199 212 -197C262 -186 305 -153 341 -118C380 -80 425 -29 425 42C425 77 413 106 397 129C392 137 385 141 385 154V167V323C401 323 418 322 432 325L437 333C445 362 455 390 464 418C437 418 409 417 385 420C368 438 353 459 337 479ZM150 323H290V138V131C290 118 285 115 274 111C262 104 251 98 239 92L195 69C192 67 186 62 182 62C174 62 171 75 169 79C162 92 150 109 150 128V323Z" glyph-name="g" horiz-adv-x="482" unicode="g"/>
- <glyph d="M152 644C102 644 83 588 74 555C72 550 65 521 65 516V514C68 510 76 502 82 502C86 502 90 505 93 507C127 530 172 547 190 585C194 593 197 603 197 612C197 634 177 644 158 644H152ZM93 479C66 449 38 420 12 390L11 379C37 377 46 347 46 325V133V120C46 95 32 78 11 76L13 54C46 31 78 8 115 -11C157 14 192 47 230 76L232 98C216 88 195 76 173 76C148 76 140 102 140 127C140 137 141 147 141 155V323C141 346 149 376 176 379L175 390C149 421 120 449 93 479Z" glyph-name="i" horiz-adv-x="250" unicode="i"/>
- <glyph d="M11 77V76C50 47 86 16 126 -11L137 -6C171 21 206 47 238 76L240 98C229 90 210 76 192 76C152 76 147 121 146 152C146 158 145 163 145 169V301V566C145 573 146 579 146 586C150 623 169 676 218 676V698C200 693 182 687 164 682L64 651C51 647 39 644 26 640C17 636 11 638 11 624C11 620 11 615 13 613C16 611 21 610 24 608C42 600 50 580 50 556V548V202V183C50 141 32 102 11 77Z" glyph-name="l" horiz-adv-x="258" unicode="l"/>
- <glyph d="M104 479L11 392V391C31 369 52 347 70 323L71 310V-13L138 17L156 25C163 27 166 30 166 40V50V337V348C166 351 166 355 168 358C171 362 206 383 217 391C222 394 228 400 234 400H235C241 399 265 376 265 376C271 371 284 364 286 355C287 351 287 346 287 342C287 333 286 324 286 315V-12C340 23 395 57 445 96L446 117C440 115 435 112 429 112C406 112 389 134 384 154C381 165 381 176 381 187V214V320C381 341 388 364 407 371C415 374 418 374 418 385V392C417 398 411 402 406 406C396 415 349 454 336 465C331 469 324 477 318 477C313 477 310 473 306 471C259 439 213 414 166 380C166 391 166 402 165 412C146 436 125 457 104 479Z" glyph-name="n" horiz-adv-x="468" unicode="n"/>
- <glyph d="M236 473C193 438 136 416 93 381C46 344 11 289 11 228V219C17 139 81 82 137 32C147 24 157 15 166 6S182 -14 199 -14S220 -2 230 7C246 21 264 35 281 48C349 99 446 158 446 261C446 270 445 279 444 288C434 362 374 417 316 457C309 461 266 491 258 491C254 491 240 477 236 473ZM80 295C80 338 111 380 149 390C156 391 162 391 169 391C186 391 202 388 218 384C299 361 365 288 365 196C365 185 364 174 361 163C350 122 315 88 267 88C242 88 217 95 195 106C146 130 110 175 93 226C87 243 80 277 80 295Z" glyph-name="o" horiz-adv-x="464" unicode="o"/>
- <glyph d="M104 479L11 392V391C31 370 51 348 69 325L71 309C71 251 72 193 70 138C56 126 41 115 27 104L58 91C67 86 71 88 71 73V-25C72 -75 88 -126 114 -169C124 -155 131 -136 138 -120C159 -67 166 -12 166 45C173 42 268 2 270 2C277 3 285 11 290 15L335 48C358 65 381 81 401 103C440 148 463 209 463 269C463 277 463 286 462 294C452 370 389 428 338 479H337L166 308C165 342 167 379 165 411C147 436 126 458 104 479ZM272 383C309 346 349 301 363 249C369 227 370 203 370 179V162C370 139 369 114 356 94C353 88 345 76 336 76C331 76 323 80 319 83L178 142C171 147 166 145 166 158V264C166 268 166 272 167 275C170 282 196 306 197 307C222 333 248 356 272 383Z" glyph-name="p" horiz-adv-x="481" unicode="p"/>
- <glyph d="M104 479L11 392V391C31 369 52 348 70 324C73 258 72 182 69 119C51 104 31 91 12 77V75L115 11L141 -6C145 -8 148 -11 152 -11C161 -11 170 -1 175 2L273 70C277 73 286 77 286 83C286 90 280 97 275 97C269 97 263 91 260 89L237 73C233 70 228 65 223 65C219 65 214 68 211 70L188 85C181 89 169 94 166 102V331C166 337 165 344 165 351C165 365 170 368 180 374L214 398C218 401 223 406 229 406C236 406 242 396 246 392L286 352H287L331 396C338 403 345 408 345 418S336 434 330 440L291 479H290L166 392L165 412C146 436 125 457 104 479Z" glyph-name="r" horiz-adv-x="363" unicode="r"/>
- <glyph d="M11 356H67C76 173 89 -4 108 -177H114C122 -177 125 -174 125 -165C147 -67 173 186 178 254C180 270 186 357 186 369C186 374 187 378 187 383C186 390 182 395 178 400C157 427 129 463 129 501S155 576 191 576C208 576 224 567 239 557C250 551 264 541 277 541H279C286 543 296 560 298 563L329 607C335 615 341 624 346 633C342 636 335 642 329 642H327C318 638 318 624 307 624H304C279 629 264 656 237 657C137 657 114 562 84 494C67 453 53 419 22 388C16 382 11 380 11 366V356Z" glyph-name="s" horiz-adv-x="234" unicode="s"/>
- <glyph d="M169 589L11 377H75C74 289 77 198 74 113C61 102 47 92 33 82L145 11C158 3 169 -6 185 -11L198 -4L324 84L312 103C298 95 286 85 273 76C268 73 260 65 254 65C247 65 239 72 234 75L188 104C178 109 169 113 169 128C169 133 170 138 170 143V377H324V456H170C169 500 171 547 169 589Z" glyph-name="t" horiz-adv-x="342" unicode="t"/>
- <glyph d="M26 81V80C32 74 40 71 48 67L75 55L177 10L212 -6C216 -8 222 -11 226 -11H228C236 -11 244 -1 250 4L303 45C379 102 471 184 471 290C471 355 441 417 387 453C378 459 346 478 334 478C333 478 331 477 330 477C324 476 284 447 284 447L180 374C174 405 148 441 131 458C127 462 114 477 106 477C100 476 94 470 90 467L55 440L25 418C22 415 15 412 14 408C14 405 16 403 18 402C23 397 29 393 34 388C71 355 104 300 104 235C104 202 95 169 78 140C65 117 46 98 26 81ZM126 148C133 160 144 171 151 183C174 219 189 264 189 317V326C189 332 188 338 187 344V351C187 358 192 361 196 365C211 377 227 389 252 389C257 389 263 389 268 388C333 378 378 308 378 235C378 176 349 123 317 87C314 82 308 72 300 72C296 72 253 92 253 92C211 110 169 131 126 148Z" glyph-name="v" horiz-adv-x="489" unicode="v"/>
- <glyph d="M275 417C267 422 182 477 176 477H175C168 477 161 470 156 466C140 456 125 445 109 434C89 421 71 407 57 388C25 344 11 284 11 218C11 123 53 47 112 -1C117 -4 123 -11 129 -11C137 -11 155 4 157 5L224 48C229 51 244 63 250 63C254 63 257 60 260 58C277 44 353 -12 354 -13C391 17 430 45 465 76L466 97C448 89 444 76 416 76C387 76 377 106 373 128C371 141 370 202 370 210V258V294V303C370 317 378 321 384 329L408 357C411 361 419 373 424 373S433 369 436 366L469 338C518 296 567 245 567 169C567 30 435 -89 355 -169V-170L370 -185H371C471 -85 622 14 652 162C656 180 657 199 657 217C657 321 575 397 526 441C522 445 482 479 481 479C444 435 406 393 371 347H370V505C370 520 369 535 369 550C369 567 370 584 374 601C381 634 400 676 443 676V698L288 651L250 639C243 637 236 636 236 626V620C236 614 240 612 244 610C248 609 252 607 256 604C271 593 275 581 275 556V417ZM239 336L274 384C275 378 276 372 276 366C276 358 275 350 275 342V204V186C275 156 264 109 249 97C239 87 205 83 189 83C174 83 159 86 147 94C112 119 102 181 102 235C102 239 104 304 102 304C101 314 95 365 95 369C95 386 99 407 113 411C117 411 121 409 124 407L147 392L206 355C217 349 227 340 239 336Z" glyph-name="Ecaron" horiz-adv-x="675" unicode="&#x11A;"/>
- <glyph d="M11 108V51H26C30 51 36 51 40 50C49 48 102 20 120 10C125 7 157 -12 163 -12C172 -12 181 -1 185 2L221 27L286 72C320 97 362 128 362 184C362 221 342 260 314 283C298 297 278 305 258 311L355 427C351 431 345 439 339 439C336 439 333 437 331 436C324 431 315 427 302 427C268 427 241 448 222 462C217 465 202 477 195 477C189 477 153 448 141 439C98 405 11 357 11 286C11 283 11 280 12 277C17 249 44 227 63 207C75 194 88 178 88 159C88 153 87 147 84 142C70 113 40 108 11 108ZM252 339L193 269C190 265 175 245 170 245H169C166 245 163 248 160 250C132 271 81 294 81 337C81 364 102 392 133 392C148 392 163 387 176 381C188 375 243 342 252 339ZM105 128C122 151 141 172 160 194L174 211C178 215 182 221 190 221S225 215 226 215C261 205 298 177 299 137C299 128 298 119 293 111C281 93 259 79 230 79C197 79 165 96 143 108C131 115 118 123 105 128Z" glyph-name="Eng" horiz-adv-x="380" unicode="&#x14A;"/>
- <glyph d="M340 576C334 573 308 559 304 555C298 549 301 538 288 538C282 538 275 543 269 545C279 555 342 616 343 622C343 637 312 646 302 646C284 646 269 636 257 628C233 615 208 602 208 567C208 552 213 544 219 534C227 520 240 506 261 506C281 506 298 519 315 529C327 536 344 548 344 564V565C344 569 342 573 340 576ZM254 562C253 569 252 576 252 582C252 596 258 614 273 614C282 614 291 610 298 606L254 562ZM11 389C18 392 24 395 32 396C47 396 63 386 68 371C70 365 70 358 70 351V130V120C70 108 66 106 58 100C50 95 41 89 34 83C76 53 113 17 157 -11L170 -5L311 94C311 62 322 32 343 8C347 3 361 -11 369 -11C372 -10 375 -8 377 -6L391 8C397 13 446 56 446 60C418 89 405 122 405 173C405 188 406 203 406 218V479C383 470 361 459 338 449L321 442C314 437 310 437 310 426C310 422 311 418 311 415V145C311 141 312 136 312 132C312 119 303 115 294 110L257 84C252 81 245 73 239 73S226 82 221 86L182 116C173 123 164 126 164 142C164 147 165 152 165 156V316V345C165 359 165 373 163 387C158 417 145 447 124 470C122 473 119 477 115 477S92 464 85 460L34 426C24 420 10 416 10 400C10 396 11 392 11 389Z" glyph-name="dcroat" horiz-adv-x="464" unicode="&#x111;"/>
- </font>
- </defs>
- <style type="text/css">text.f1 {font-family:yfrak;font-size:12}
-text.f2 {font-family:yfrak;font-size:14.4}
-text.f3 {font-family:ygoth;font-size:14.4}
-text.f4 {font-family:yinitas;font-size:46.39}
-text.f5 {font-family:yinitas;font-size:55.68}
-text.f6 {font-family:yswab;font-size:14.4}
-</style>
- <g id="page1" transform="matrix(0.996 0 0 0.996 0 0)">
- <text class="f3" x="-13.4527" y="63.84">Nonummy<tspan x="36.7806">s</tspan>
-<tspan x="39.8918">id</tspan>
-<tspan x="52.2923">sem&#xBB;r</tspan>
-<tspan x="85.0487">aliena</tspan>
-<tspan x="114.912">auditorum</tspan>
-<tspan x="162.806">lorem</tspan>
-<tspan x="191.794">ipsum</tspan>
-<tspan x="220.666">quod</tspan>
-<tspan x="245.573">omnia</tspan>
-<tspan x="-13.4527" y="77.6107">sunt</tspan>
-<tspan x="9.1006">&#xBB;ccatore&#x2018;:</tspan>
-<tspan x="61.9483">Lorem</tspan>
-<tspan x="98.26">ipsum</tspan>
-<tspan x="128.062">&#x2D8;lor</tspan>
-<tspan x="154.464">s</tspan>
-<tspan x="157.576">it</tspan>
-<tspan x="168.929">amet</tspan>
-<tspan x="194.838">con</tspan>
-<tspan x="214.183">se&#x2DD;etuer</tspan>
-<tspan x="255.733">adi-</tspan>
-<tspan x="-13.4527" y="91.3815">piscing</tspan>
-<tspan x="20.5198">elit:</tspan>
-<tspan x="42.39">Sed</tspan>
-<tspan x="66.8081">diam</tspan>
-<tspan x="92.0111">tem&#x2013;r</tspan>
-<tspan x="124.668">incidunt</tspan>
-<tspan x="161.755">ut</tspan>
-<tspan x="174.527">la&#x2C6;re</tspan>
-<tspan x="204.237">et</tspan>
-<tspan x="216.454">&#x2D8;lor</tspan>
-<tspan x="241.946">magna</tspan>
-<tspan x="-13.4527" y="105.043">aliquam</tspan>
-<tspan x="24.7919">erat</tspan>
-<tspan x="46.6589">volu&#xAB;t</tspan>
-<tspan x="81.7963">ut</tspan>
-<tspan x="94.6849">wis</tspan>
-<tspan x="108.747">i</tspan>
-<tspan x="115.996">enim</tspan>
-<tspan x="140.209">ad</tspan>
-<tspan x="155.298">minim</tspan>
-<tspan x="185.338">&#xFB03;niam</tspan>
-<tspan x="218.338">qui&#x2018;</tspan>
-<tspan x="240.955">no&lt;rud</tspan>
-<tspan x="-13.4527" y="118.705">oblationem</tspan>
-<tspan x="38.0057">cor&#x2013;remque</tspan>
-<tspan x="95.3889">suscipit</tspan>
-<tspan x="130.679">la&#x2C6;ri&#x2018;</tspan>
-</text>
- <text class="f5" x="-13.4527" y="249.832">D</text>
- <text class="f2" x="47.1072" y="203.607">ie</text>
- <text class="f6" x="59.8848" y="203.607">Orgel</text>
- <text class="f2" x="90.7353" y="203.607">,<tspan x="100.968">der</tspan>
-</text>
- <text class="f6" x="120.362" y="203.607">Fl&#x111;gel</text>
- <text class="f2" x="154.298" y="203.607">,<tspan x="164.531">da&#x14A;</tspan>
-</text>
- <text class="f6" x="185.621" y="203.607">Fortepiano</text>
- <text class="f2" x="250.822" y="203.607">und<tspan x="272.965">da&#x14A;</tspan>
-</text>
- <text class="f6" x="294.055" y="203.607">Clavicord</text>
- <text class="f2" x="351.006" y="203.607">s<tspan x="353.811">ind</tspan>
-<tspan x="372.817">die</tspan>
-<tspan x="47.1072" y="219.015">gebr&#x13D;u&#x11A;li&#x11A;&#x106;en</tspan>
-<tspan x="118.515">Clavierin&#x106;rumente</tspan>
-<tspan x="208.036">zum</tspan>
-<tspan x="231.184">Accompagnement.</tspan>
-<tspan x="317.364">E&#x14A;</tspan>
-<tspan x="334.609">i&#x106;</tspan>
-<tspan x="347.607">S&#x11A;ade,</tspan>
-<tspan x="47.1072" y="234.424">da&#xF6BE;</tspan>
-<tspan x="68.1032">die</tspan>
-<tspan x="85.8667">s&#x11A;&#x179;ne</tspan>
-<tspan x="116.201">Erfindung</tspan>
-<tspan x="168.101">de&#x14A;</tspan>
-</text>
- <text class="f6" x="188.265" y="234.424">Hol<tspan x="207.772">feldis&#x11A;en</tspan>
-<tspan x="260.178">Bogenclavier&#x14A;</tspan>
-</text>
- <text class="f2" x="342.219" y="234.424">no&#x11A;<tspan x="365.833">ni&#x11A;t</tspan>
-<tspan x="47.1072" y="249.832">gemeinn&#x111;&#x143;ig</tspan>
-<tspan x="110.524">geworden</tspan>
-<tspan x="159.19">i&#x106;;</tspan>
-<tspan x="179.348">man</tspan>
-<tspan x="205.462">kann</tspan>
-<tspan x="232.576">dahero</tspan>
-<tspan x="268.599">de&#x104;en</tspan>
-<tspan x="298.893">besondere</tspan>
-<tspan x="346.073">Vorz&#x111;ge</tspan>
-<tspan x="-13.4527" y="265.24">hierinnen</tspan>
-<tspan x="32.856">no&#x11A;</tspan>
-<tspan x="56.2794">ni&#x11A;t</tspan>
-<tspan x="80.8359">genau</tspan>
-<tspan x="113.147">be&#x106;immen.</tspan>
-<tspan x="167.406">E&#x14A;</tspan>
-<tspan x="185.707">i&#x106;</tspan>
-<tspan x="199.761">gewi&#xF6BE;</tspan>
-<tspan x="230.716">zu</tspan>
-<tspan x="246.614">glauben,</tspan>
-<tspan x="291.512">da&#xF6BE;</tspan>
-<tspan x="312.317">e&#x14A;</tspan>
-<tspan x="327.405">s</tspan>
-<tspan x="330.211">i&#x11A;</tspan>
-<tspan x="346.034">au&#x11A;</tspan>
-<tspan x="370.258">bey</tspan>
-<tspan x="-13.4527" y="280.648">der</tspan>
-<tspan x="5.14924">Begleitung</tspan>
-<tspan x="61.0912">gut</tspan>
-<tspan x="80.7799">au&#x14A;nehmen</tspan>
-<tspan x="135.23">werde.</tspan>
-</text>
- <text class="f4" x="-13.4527" y="416.504">V</text>
- <text class="f1" x="38.0278" y="377.984">on<tspan x="51.1086">dem</tspan>
-<tspan x="69.9168">&#x106;attli&#x11A;en</tspan>
-<tspan x="107.825">Orte</tspan>
-<tspan x="130.715">Kir&#x11A;ehrenba&#x11A;</tspan>
-<tspan x="188.762">in</tspan>
-<tspan x="200.158">der</tspan>
-<tspan x="215.948">Fr&#x141;nkis&#x11A;en</tspan>
-<tspan x="38.0278" y="390.824">S&#x11A;weiz</tspan>
-<tspan x="72.1763">f&#xA7;hrt</tspan>
-<tspan x="93.8915">ein</tspan>
-<tspan x="107.662">einsame&#x14A;</tspan>
-<tspan x="142.798">Str&#x141;&#xF6BE;&#x11A;en,</tspan>
-<tspan x="188.405">an</tspan>
-<tspan x="200.573">der</tspan>
-<tspan x="215.209">&#x106;eil</tspan>
-<tspan x="231.53">ab&#x106;&#xA7;r-</tspan>
-<tspan x="38.0278" y="403.664">zenden</tspan>
-<tspan x="65.2089">Breitseite</tspan>
-<tspan x="103.925">der</tspan>
-<tspan x="118.597">Ehrenb&#xA7;rg</tspan>
-<tspan x="162.003">vor&#xA7;ber,</tspan>
-<tspan x="198.289">gen</tspan>
-<tspan x="214.338">Leutenba&#x11A;.</tspan>
-<tspan x="38.0278" y="416.504">In</tspan>
-<tspan x="51.6451">einer</tspan>
-<tspan x="72.4543">halben</tspan>
-<tspan x="98.5613">Stunde</tspan>
-<tspan x="130.329">i&#x106;</tspan>
-<tspan x="140.196">da&#x14A;</tspan>
-<tspan x="155.853">s&#x11A;mu&#x118;e</tspan>
-<tspan x="187.398">Pfarrdorf</tspan>
-<tspan x="226.889">errei&#x11A;t.</tspan>
-<tspan x="-13.4527" y="429.344">S&#xA7;d&#x17D;&#x106;li&#x11A;</tspan>
-<tspan x="29.0311">de&#x14A;selben,</tspan>
-<tspan x="69.6732">kaum</tspan>
-<tspan x="93.4813">eine</tspan>
-<tspan x="111.965">Viertel&#x106;unde</tspan>
-<tspan x="164.256">entfernt,</tspan>
-<tspan x="200.75">tre&#x10E;en</tspan>
-<tspan x="227.692">wir</tspan>
-<tspan x="244.597">auf</tspan>
-<tspan x="-13.4527" y="442.184">dem</tspan>
-<tspan x="5.37513">Wege</tspan>
-<tspan x="31.1845">na&#x11A;</tspan>
-<tspan x="50.6665">Ortspi&#x143;</tspan>
-<tspan x="83.6264">in</tspan>
-<tspan x="95.0418">einem</tspan>
-<tspan x="120.435">Seitent&#x141;l&#x11A;en</tspan>
-<tspan x="174.477">von</tspan>
-<tspan x="192.185">unber&#xA7;hrter</tspan>
-<tspan x="240.955">Na-</tspan>
-<tspan x="-13.4527" y="455.025">turs&#x11A;&#x17D;nheit</tspan>
-<tspan x="32.2841">da&#x14A;</tspan>
-<tspan x="49.5255">uralte,</tspan>
-<tspan x="79.7728">einsame</tspan>
-<tspan x="111.642">Kir&#x11A;lein</tspan>
-<tspan x="148.493">\Sankt</tspan>
-<tspan x="182.666">Mori&#x143;"</tspan>
-<tspan x="217.354">mit</tspan>
-<tspan x="233.692">seinem</tspan>
-<tspan x="-13.4527" y="467.865">&#x106;illen</tspan>
-<tspan x="10.893">Friedhofe.</tspan>
-<tspan x="53.3526">In</tspan>
-<tspan x="68.2047">der</tspan>
-<tspan x="83.6828">N&#x141;he</tspan>
-<tspan x="108.062">de&#x14A;</tspan>
-<tspan x="124.096">Kir&#x11A;lein&#x14A;</tspan>
-<tspan x="165.057">&#x106;eht</tspan>
-<tspan x="184.039">ein</tspan>
-<tspan x="198.651">niedrige&#x14A;,</tspan>
-<tspan x="240.254">&#xA7;ber</tspan>
-<tspan x="-13.4527" y="480.705">eine</tspan>
-<tspan x="3.96369">Quelle</tspan>
-<tspan x="33.9862">erbaute&#x14A;</tspan>
-<tspan x="68.8353">Feldkapell&#x11A;en</tspan>
-<tspan x="123.315">mit</tspan>
-<tspan x="138.577">der</tspan>
-<tspan x="153.332">Statue</tspan>
-<tspan x="183.906">de&#x14A;</tspan>
-<tspan x="199.216">hl.</tspan>
-<tspan x="213.05">Mauritiu&#x14A;,</tspan>
-<tspan x="-13.4527" y="493.545">darge&#x106;ellt</tspan>
-<tspan x="27.0288">al&#x14A;</tspan>
-<tspan x="42.4068">Ritter</tspan>
-<tspan x="69.2852">in</tspan>
-<tspan x="80.3927">voller</tspan>
-<tspan x="105.643">Wehr.</tspan>
-</text>
- </g>
-</svg>
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/frktest.dvi b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/frktest.dvi
deleted file mode 100644
index 723b08a2964..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/frktest.dvi
+++ /dev/null
Binary files differ
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/ot1.cmap b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/ot1.cmap
deleted file mode 100644
index 6098cae7bab..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/ot1.cmap
+++ /dev/null
@@ -1,78 +0,0 @@
-%!PS-Adobe-3.0 Resource-CMap
-%%DocumentNeededResources: ProcSet (CIDInit)
-%%IncludeResource: ProcSet (CIDInit)
-%%BeginResource: CMap (TeX-OT1-0)
-%%Title: (TeX-OT1-0 TeX OT1 0)
-%%Version: 1.000
-%%EndComments
-/CIDInit /ProcSet findresource begin
-12 dict begin
-begincmap
-/CIDSystemInfo
-<< /Registry (TeX)
-/Ordering (OT1)
-/Supplement 0
->> def
-/CMapName /TeX-OT1-0 def
-/CMapType 2 def
-1 begincodespacerange
-<00> <7F>
-endcodespacerange
-8 beginbfrange
-<00> <01> <0393>
-<09> <0A> <03A8>
-<23> <26> <0023>
-<28> <3B> <0028>
-<3F> <5B> <003F>
-<5D> <5E> <005D>
-<61> <7A> <0061>
-<7B> <7C> <2013>
-endbfrange
-40 beginbfchar
-<02> <0398>
-<03> <039B>
-<04> <039E>
-<05> <03A0>
-<06> <03A3>
-<07> <03D2>
-<08> <03A6>
-<0B> <00660066>
-<0C> <00660069>
-<0D> <0066006C>
-<0E> <006600660069>
-<0F> <00660066006C>
-<10> <0131>
-<11> <0237>
-<12> <0060>
-<13> <00B4>
-<14> <02C7>
-<15> <02D8>
-<16> <00AF>
-<17> <02DA>
-<18> <00B8>
-<19> <00DF>
-<1A> <00E6>
-<1B> <0153>
-<1C> <00F8>
-<1D> <00C6>
-<1E> <0152>
-<1F> <00D8>
-<21> <0021>
-<22> <201D>
-<27> <2019>
-<3C> <00A1>
-<3D> <003D>
-<3E> <00BF>
-<5C> <201C>
-<5F> <02D9>
-<60> <2018>
-<7D> <02DD>
-<7E> <02DC>
-<7F> <00A8>
-endbfchar
-endcmap
-CMapName currentdict /CMap defineresource pop
-end
-end
-%%EndResource
-%%EOF
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample-nf-cmp.svg b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample-nf-cmp.svg
deleted file mode 100644
index b448e6caa8a..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample-nf-cmp.svg
+++ /dev/null
@@ -1,204 +0,0 @@
-<?xml version="1.0"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="574.732pt" version="1.1" viewBox="76.7123 55.9032 275.656 574.732" width="275.656pt">
- <defs>
- <path id="g1" d="M0.18 -4.14V-4H0.35C0.71 -4 0.86 -3.92 0.96 -3.67C1 -3.59 1.35 -2.74 1.75 -1.76L2.47 0L2.28 0.45C2.03 1.08 1.88 1.36 1.7 1.54C1.47 1.78 1.25 1.86 0.98 1.82C0.91 1.81 0.81 1.77 0.75 1.74L0.65 1.68L0.78 1.61C0.95 1.53 1.03 1.39 1.01 1.19C0.98 0.83 0.54 0.69 0.28 0.96C0.2 1.04 0.19 1.07 0.19 1.25C0.19 1.49 0.26 1.64 0.44 1.81S0.81 2.06 1.09 2.06C1.31 2.06 1.36 2.05 1.54 1.96C1.78 1.84 2.04 1.58 2.21 1.26C2.28 1.13 2.75 0.03 3.25 -1.18C3.75 -2.41 4.19 -3.47 4.23 -3.54C4.37 -3.79 4.61 -3.95 4.91 -3.99L5.05 -4.01V-4.15V-4.29H4.24H3.43V-4.15C3.43 -4.01 3.43 -4.01 3.56 -3.98C3.74 -3.93 3.85 -3.8 3.87 -3.62C3.88 -3.48 3.84 -3.37 3.36 -2.19C3.08 -1.48 2.83 -0.91 2.82 -0.92C2.79 -0.95 1.72 -3.58 1.69 -3.68C1.68 -3.72 1.69 -3.78 1.7 -3.82C1.72 -3.9 1.93 -4 2.1 -4H2.22V-4.14V-4.29H1.2H0.18Z"/>
- <path id="g2" d="M0.33 -6.65V-6.51L0.71 -6.49C1.13 -6.47 1.24 -6.44 1.31 -6.31C1.37 -6.19 1.37 -0.61 1.31 -0.48C1.24 -0.35 1.13 -0.32 0.71 -0.3L0.33 -0.29V-0.15V-0.01H1.92H3.52V-0.15V-0.29L3.04 -0.3C2.51 -0.32 2.36 -0.36 2.29 -0.51C2.26 -0.56 2.25 -0.91 2.25 -1.92V-3.25L2.91 -3.24C3.65 -3.22 3.74 -3.2 3.93 -3.02C4.07 -2.87 4.12 -2.73 4.14 -2.35L4.16 -2.07H4.29H4.42V-3.4V-4.72H4.29H4.16L4.14 -4.44C4.12 -4.07 4.07 -3.92 3.93 -3.77C3.74 -3.59 3.65 -3.57 2.91 -3.56L2.25 -3.54V-4.91C2.25 -5.71 2.27 -6.32 2.28 -6.36C2.33 -6.49 2.45 -6.51 3.52 -6.49C4.55 -6.48 4.72 -6.46 5 -6.31C5.47 -6.08 5.66 -5.69 5.79 -4.69L5.81 -4.54H5.95H6.08L6.07 -4.65C6.06 -4.72 6 -5.17 5.94 -5.67S5.83 -6.63 5.82 -6.69L5.8 -6.8H3.06H0.33Z"/>
- <path id="g3" d="M0.42 -5V-4.87H0.6C0.88 -4.87 1.04 -4.82 1.1 -4.72C1.16 -4.59 1.16 -0.55 1.1 -0.42C1.04 -0.32 0.88 -0.27 0.6 -0.27H0.42V-0.13V0H2.46H4.51L4.52 -0.14C4.53 -0.22 4.57 -0.59 4.6 -0.97C4.64 -1.35 4.67 -1.73 4.68 -1.81L4.7 -1.95H4.56H4.43L4.41 -1.78C4.34 -1.15 4.2 -0.81 3.93 -0.58C3.79 -0.46 3.5 -0.33 3.28 -0.3C3.17 -0.28 2.84 -0.27 2.55 -0.27C2.02 -0.27 2.01 -0.27 1.94 -0.34L1.86 -0.41V-2.52C1.86 -4.15 1.87 -4.63 1.9 -4.69C1.96 -4.81 2.08 -4.85 2.44 -4.87L2.77 -4.88V-5.01V-5.13H1.59H0.42Z"/>
- <path id="g4" d="M0.45 -5.01V-4.87H0.63C0.91 -4.87 1.07 -4.82 1.13 -4.72C1.19 -4.59 1.19 -0.55 1.13 -0.42C1.07 -0.32 0.91 -0.27 0.63 -0.27H0.45V-0.14V-0.01H1.53H2.61V-0.14V-0.27H2.43C2.33 -0.27 2.19 -0.28 2.11 -0.3C1.89 -0.36 1.89 -0.36 1.89 -1.42V-2.34H2.7C3.41 -2.34 3.54 -2.35 3.75 -2.4C4.82 -2.68 5.33 -3.62 4.81 -4.38C4.61 -4.68 4.2 -4.95 3.77 -5.07C3.61 -5.12 3.41 -5.13 2.02 -5.14L0.45 -5.15ZM3.32 -4.84C3.56 -4.8 3.74 -4.71 3.89 -4.57C4.09 -4.39 4.14 -4.23 4.14 -3.73C4.14 -3.22 4.09 -3.07 3.89 -2.89C3.62 -2.64 3.39 -2.58 2.5 -2.58H1.86V-3.66V-4.73L1.94 -4.8C2.01 -4.87 2.01 -4.87 2.58 -4.87C2.89 -4.87 3.22 -4.86 3.32 -4.84Z"/>
- <path id="g5" d="M0.48 -5.01V-4.87H0.66C0.94 -4.87 1.1 -4.82 1.16 -4.72C1.19 -4.65 1.2 -4.34 1.2 -2.71C1.2 -0.56 1.2 -0.59 1 -0.42C0.89 -0.33 0.7 -0.27 0.55 -0.27C0.48 -0.27 0.48 -0.26 0.48 -0.14V-0.01H1.35H2.22V-0.14C2.22 -0.26 2.22 -0.27 2.15 -0.27C2 -0.27 1.81 -0.33 1.7 -0.42C1.5 -0.59 1.5 -0.56 1.51 -2.76L1.52 -4.73L2.45 -2.41C2.96 -1.13 3.39 -0.06 3.42 -0.04C3.47 0 3.57 0.01 3.64 -0.02C3.66 -0.04 4.11 -1.12 4.64 -2.44L5.59 -4.83V-2.67C5.6 -0.83 5.59 -0.49 5.55 -0.42C5.5 -0.32 5.33 -0.27 5.06 -0.27H4.87V-0.14V-0.01H5.91H6.95V-0.14V-0.27H6.77C6.49 -0.27 6.32 -0.32 6.27 -0.42C6.21 -0.55 6.21 -4.59 6.27 -4.72C6.32 -4.82 6.49 -4.87 6.77 -4.87H6.95V-5.01V-5.14H6.23C5.51 -5.14 5.51 -5.14 5.46 -5.08C5.44 -5.04 5.04 -4.05 4.57 -2.89C4.11 -1.72 3.72 -0.76 3.72 -0.76C3.71 -0.75 3.32 -1.72 2.85 -2.91C2.37 -4.1 1.96 -5.09 1.95 -5.11C1.92 -5.13 1.7 -5.14 1.19 -5.14H0.48Z"/>
- <path id="g6" d="M0.72 -6.38V-5.93H1.17H1.62V-6.38V-6.83H1.17H0.72ZM0.81 -2.22V0H1.18H1.56V-2.22V-4.45H1.18H0.81Z"/>
- <path id="g7" d="M0.93 -4.36C0.62 -4.33 0.35 -4.3 0.32 -4.3C0.28 -4.3 0.27 -4.27 0.27 -4.15V-4.01L0.52 -3.99C0.82 -3.97 0.93 -3.93 1 -3.79C1.04 -3.69 1.05 -3.55 1.05 -2.11C1.05 -0.3 1.06 -0.38 0.81 -0.33C0.72 -0.31 0.57 -0.3 0.46 -0.3H0.27V-0.15V-0.01H1.47H2.68V-0.15V-0.29L2.32 -0.3C1.93 -0.32 1.81 -0.36 1.75 -0.48C1.69 -0.59 1.7 -2.48 1.76 -2.85C1.89 -3.65 2.25 -4.12 2.79 -4.17C2.96 -4.19 2.96 -4.19 2.89 -4.13C2.85 -4.11 2.8 -4.04 2.78 -3.98C2.7 -3.79 2.74 -3.61 2.9 -3.46C2.97 -3.39 3.01 -3.38 3.17 -3.38S3.37 -3.39 3.44 -3.46C3.67 -3.67 3.66 -3.98 3.41 -4.21C3.24 -4.37 3.13 -4.41 2.86 -4.41C2.63 -4.41 2.58 -4.4 2.4 -4.31C2.14 -4.18 1.93 -3.95 1.77 -3.63L1.65 -3.38V-3.9V-4.42H1.57C1.52 -4.42 1.23 -4.39 0.93 -4.36Z"/>
- <path id="g8" d="M0.96 -6.89C0.64 -6.86 0.35 -6.83 0.32 -6.83C0.28 -6.83 0.27 -6.8 0.27 -6.68V-6.54L0.52 -6.52C0.82 -6.5 0.93 -6.46 1 -6.32C1.05 -6.22 1.05 -6 1.05 -3.1V0H1.18H1.32L1.43 -0.2C1.49 -0.31 1.57 -0.45 1.6 -0.5L1.66 -0.6L1.78 -0.46C2.21 0.03 2.72 0.2 3.39 0.07C4.04 -0.05 4.62 -0.51 4.93 -1.13C5.08 -1.43 5.14 -1.66 5.16 -2C5.21 -2.68 4.97 -3.33 4.5 -3.8C3.75 -4.56 2.62 -4.62 1.9 -3.96L1.71 -3.78V-5.37V-6.95H1.63C1.58 -6.94 1.28 -6.92 0.96 -6.89ZM3.51 -4.06C3.88 -3.88 4.12 -3.54 4.25 -3.05C4.31 -2.81 4.31 -2.71 4.31 -2.15C4.31 -1.6 4.3 -1.48 4.25 -1.28C4.08 -0.67 3.73 -0.29 3.22 -0.16C2.68 -0.02 2.13 -0.27 1.84 -0.78L1.74 -0.94V-2.17V-3.39L1.83 -3.52C2.21 -4.1 2.95 -4.33 3.51 -4.06Z"/>
- <path id="g9" d="M0.97 -4.36C0.66 -4.33 0.38 -4.3 0.35 -4.3C0.31 -4.3 0.3 -4.27 0.3 -4.15V-4.01L0.55 -3.99C0.85 -3.97 0.96 -3.93 1.03 -3.79C1.07 -3.69 1.08 -3.55 1.08 -2.11C1.08 -0.3 1.09 -0.38 0.84 -0.33C0.75 -0.31 0.6 -0.3 0.49 -0.3H0.3V-0.15V-0.01H1.43H2.55V-0.15V-0.3H2.36C2.05 -0.3 1.87 -0.35 1.82 -0.45C1.75 -0.57 1.75 -2.71 1.82 -3.02C1.88 -3.3 2.01 -3.57 2.2 -3.77C2.6 -4.22 3.32 -4.31 3.62 -3.96C3.83 -3.72 3.83 -3.71 3.84 -2.04C3.85 -0.31 3.86 -0.38 3.61 -0.33C3.52 -0.31 3.37 -0.3 3.26 -0.3H3.07V-0.15V-0.01H4.2H5.32V-0.15V-0.3H5.13C4.85 -0.3 4.64 -0.35 4.59 -0.43C4.57 -0.48 4.55 -0.88 4.54 -1.98C4.53 -3.41 4.52 -3.48 4.46 -3.64C4.28 -4.13 3.92 -4.38 3.33 -4.41C3 -4.43 2.75 -4.39 2.48 -4.25C2.22 -4.11 1.94 -3.84 1.81 -3.59L1.71 -3.41V-3.92V-4.42H1.63C1.58 -4.42 1.29 -4.39 0.97 -4.36Z"/>
- <path id="g10" d="M1 -4.36C0.67 -4.33 0.38 -4.3 0.35 -4.3C0.31 -4.3 0.3 -4.27 0.3 -4.15V-4H0.48C0.75 -3.99 0.93 -3.94 1 -3.84C1.06 -3.76 1.06 -3.72 1.08 -2.29C1.1 -0.84 1.1 -0.82 1.16 -0.65C1.31 -0.29 1.55 -0.08 1.93 0.03C2.11 0.09 2.22 0.1 2.54 0.1C2.92 0.1 2.94 0.1 3.13 0C3.38 -0.1 3.6 -0.3 3.76 -0.55L3.88 -0.73V-0.3C3.88 -0.07 3.89 0.12 3.9 0.11C3.91 0.11 4.23 0.09 4.6 0.06C4.97 0.02 5.29 0 5.3 0S5.32 -0.06 5.32 -0.14V-0.29L5.07 -0.3C4.77 -0.32 4.66 -0.37 4.59 -0.51C4.55 -0.6 4.54 -0.76 4.54 -2.52C4.54 -3.56 4.54 -4.42 4.53 -4.42C4.53 -4.42 4.21 -4.39 3.82 -4.36S3.1 -4.3 3.09 -4.3S3.07 -4.24 3.07 -4.15V-4.01L3.32 -3.99C3.62 -3.97 3.73 -3.93 3.8 -3.79C3.84 -3.69 3.85 -3.57 3.85 -2.55C3.85 -1.29 3.83 -1.15 3.66 -0.79C3.53 -0.53 3.33 -0.33 3.1 -0.21C2.95 -0.14 2.9 -0.13 2.61 -0.13S2.28 -0.14 2.12 -0.22C1.92 -0.32 1.85 -0.42 1.8 -0.69C1.78 -0.78 1.77 -1.55 1.77 -2.63V-4.42H1.69C1.64 -4.42 1.34 -4.39 1 -4.36Z"/>
- <path id="g11" d="M1 -4.36C0.69 -4.33 0.41 -4.3 0.38 -4.3C0.34 -4.3 0.33 -4.27 0.33 -4.15V-4.01L0.58 -3.99C0.88 -3.97 0.99 -3.93 1.06 -3.79C1.1 -3.69 1.11 -3.55 1.11 -2.11C1.11 -0.3 1.12 -0.38 0.87 -0.33C0.78 -0.31 0.63 -0.3 0.52 -0.3H0.33V-0.15V-0.01H1.46H2.58V-0.15V-0.3H2.39C2.08 -0.3 1.9 -0.35 1.85 -0.45C1.78 -0.57 1.78 -2.71 1.85 -3.02C1.91 -3.3 2.04 -3.57 2.23 -3.77C2.63 -4.22 3.35 -4.31 3.65 -3.96C3.86 -3.72 3.86 -3.71 3.87 -2.04C3.88 -0.31 3.89 -0.38 3.64 -0.33C3.55 -0.31 3.4 -0.3 3.29 -0.3H3.1V-0.15V-0.01H4.23H5.36V-0.15V-0.3H5.16C4.85 -0.3 4.67 -0.35 4.62 -0.45C4.55 -0.57 4.55 -2.71 4.62 -3.02C4.68 -3.3 4.81 -3.57 5 -3.77C5.41 -4.22 6.12 -4.31 6.42 -3.96C6.63 -3.72 6.63 -3.71 6.64 -2.04C6.65 -0.31 6.66 -0.38 6.41 -0.33C6.32 -0.31 6.17 -0.3 6.06 -0.3H5.87V-0.15V-0.01H7H8.13V-0.15V-0.3H7.93C7.65 -0.3 7.44 -0.35 7.39 -0.43C7.37 -0.48 7.35 -0.88 7.34 -1.98C7.33 -3.41 7.32 -3.48 7.26 -3.64C7.13 -4 6.91 -4.22 6.57 -4.34C6.35 -4.41 5.93 -4.44 5.68 -4.39C5.28 -4.32 4.84 -3.99 4.64 -3.63C4.56 -3.5 4.54 -3.49 4.53 -3.53C4.38 -3.99 4.18 -4.2 3.8 -4.34C3.58 -4.41 3.16 -4.44 2.91 -4.39C2.5 -4.31 2.05 -3.98 1.84 -3.59L1.74 -3.41V-3.92V-4.42H1.66C1.61 -4.42 1.32 -4.39 1 -4.36Z"/>
- <path id="g12" d="M1.02 -6.89C0.7 -6.86 0.41 -6.83 0.39 -6.83S0.36 -6.78 0.36 -6.68V-6.54L0.59 -6.52C0.88 -6.5 0.99 -6.46 1.06 -6.32C1.11 -6.22 1.11 -6.02 1.11 -3.37C1.11 -0.15 1.13 -0.38 0.87 -0.33C0.78 -0.31 0.63 -0.3 0.54 -0.3H0.36V-0.15V-0.01H1.44H2.52V-0.15V-0.3H2.35C2.05 -0.3 1.87 -0.35 1.82 -0.45C1.78 -0.52 1.77 -0.97 1.77 -3.74V-6.95H1.69C1.64 -6.94 1.34 -6.92 1.02 -6.89Z"/>
- <path id="g13" d="M1.04 21.77C1.36 21.75 1.53 21.53 1.53 21.28C1.53 20.95 1.28 20.79 1.05 20.79C0.81 20.79 0.56 20.94 0.56 21.29C0.56 21.8 1.06 22.22 1.67 22.22C3.19 22.22 3.76 19.88 4.47 16.98C5.24 13.82 5.89 10.63 6.43 7.42C6.8 5.29 7.17 3.29 7.51 2C7.63 1.51 7.97 0.22 8.36 0.22C8.67 0.22 8.92 0.41 8.96 0.45C8.63 0.47 8.46 0.69 8.46 0.94C8.46 1.27 8.71 1.43 8.94 1.43C9.18 1.43 9.43 1.28 9.43 0.93C9.43 0.39 8.89 0 8.34 0C7.58 0 7.02 1.09 6.47 3.13C6.44 3.24 5.08 8.26 3.98 14.8C3.72 16.33 3.43 18 3.1 19.39C2.92 20.12 2.46 22 1.65 22C1.29 22 1.05 21.77 1.04 21.77Z"/>
- <path id="g14" d="M1.15 -1.01C0.81 -0.85 0.73 -0.4 1.01 -0.14C1.21 0.04 1.51 0.05 1.7 -0.12L1.77 -0.19V-0.01C1.77 0.56 1.56 1.12 1.17 1.58C1.07 1.7 0.99 1.81 0.99 1.83C0.99 1.88 1.11 1.96 1.15 1.94C1.26 1.9 1.57 1.47 1.73 1.15C1.92 0.76 1.98 0.53 2 0.13C2.04 -0.55 1.81 -1.01 1.4 -1.04C1.31 -1.05 1.21 -1.03 1.15 -1.01Z"/>
- <path id="g15" d="M1.15 -4.25C1.02 -4.18 0.96 -4.12 0.9 -3.99C0.77 -3.74 0.87 -3.44 1.15 -3.3C1.57 -3.09 2.05 -3.57 1.84 -3.99C1.7 -4.26 1.39 -4.38 1.15 -4.25ZM1.15 -1C1.02 -0.93 0.96 -0.87 0.9 -0.74C0.77 -0.49 0.87 -0.19 1.15 -0.05C1.57 0.16 2.05 -0.32 1.84 -0.74C1.7 -1.01 1.39 -1.12 1.15 -1Z"/>
- <path id="g16" d="M1.17 -2.18C1.17 -3.81 1.99 -4.23 2.52 -4.23C2.61 -4.23 3.24 -4.22 3.59 -3.86C3.18 -3.83 3.12 -3.53 3.12 -3.4C3.12 -3.14 3.3 -2.94 3.58 -2.94C3.84 -2.94 4.04 -3.11 4.04 -3.41C4.04 -4.09 3.28 -4.48 2.51 -4.48C1.26 -4.48 0.34 -3.4 0.34 -2.16C0.34 -0.88 1.33 0.11 2.49 0.11C3.83 0.11 4.15 -1.09 4.15 -1.19S4.05 -1.29 4.02 -1.29C3.93 -1.29 3.91 -1.25 3.89 -1.19C3.6 -0.26 2.95 -0.14 2.58 -0.14C2.05 -0.14 1.17 -0.57 1.17 -2.18Z"/>
- <path id="g17" d="M1.2 -6.9C0.84 -6.88 0.51 -6.86 0.45 -6.86H0.36V-6.62V-6.39L0.62 -6.37C0.93 -6.35 0.98 -6.33 1.02 -6.24C1.04 -6.19 1.05 -4.89 1.05 -3.08V0H1.29H1.52L1.74 -0.24C1.87 -0.38 1.98 -0.5 1.99 -0.52S2.05 -0.51 2.11 -0.46C2.28 -0.3 2.58 -0.12 2.83 -0.03C3.06 0.03 3.11 0.04 3.52 0.04C3.88 0.03 4 0.02 4.24 -0.03C4.92 -0.21 5.41 -0.58 5.69 -1.11C5.88 -1.49 5.94 -1.75 5.94 -2.24S5.9 -2.91 5.7 -3.33C5.43 -3.89 4.96 -4.25 4.25 -4.44C4.09 -4.48 3.94 -4.49 3.59 -4.49C3.18 -4.49 3.12 -4.48 2.89 -4.41C2.6 -4.31 2.45 -4.24 2.26 -4.11L2.13 -4.03V-5.49V-6.95H1.99C1.91 -6.94 1.56 -6.92 1.2 -6.9ZM3.97 -4.04C4.28 -3.9 4.49 -3.63 4.59 -3.24C4.65 -2.99 4.68 -1.94 4.64 -1.55C4.56 -0.93 4.32 -0.56 3.85 -0.38C3.72 -0.33 3.62 -0.31 3.37 -0.31C3.06 -0.31 3.04 -0.31 2.82 -0.42C2.64 -0.51 2.54 -0.59 2.39 -0.75L2.19 -0.97V-2.23V-3.49L2.27 -3.6C2.45 -3.83 2.83 -4.05 3.17 -4.12C3.4 -4.17 3.76 -4.14 3.97 -4.04Z"/>
- <path id="g18" d="M1.27 -0.77L2.33 -1.8C3.89 -3.18 4.49 -3.72 4.49 -4.72C4.49 -5.86 3.59 -6.66 2.37 -6.66C1.24 -6.66 0.5 -5.74 0.5 -4.85C0.5 -4.29 1 -4.29 1.03 -4.29C1.2 -4.29 1.55 -4.41 1.55 -4.82C1.55 -5.08 1.37 -5.34 1.02 -5.34C0.94 -5.34 0.92 -5.34 0.89 -5.33C1.12 -5.98 1.66 -6.35 2.24 -6.35C3.15 -6.35 3.58 -5.54 3.58 -4.72C3.58 -3.92 3.08 -3.13 2.53 -2.51L0.61 -0.37C0.5 -0.26 0.5 -0.24 0.5 0H4.21L4.49 -1.74H4.24C4.19 -1.44 4.12 -1 4.02 -0.85C3.95 -0.77 3.29 -0.77 3.07 -0.77H1.27Z"/>
- <path id="g19" d="M1.32 -6.9C0.96 -6.88 0.63 -6.86 0.57 -6.86H0.48V-6.62V-6.39L0.74 -6.37C1.05 -6.35 1.1 -6.33 1.14 -6.24C1.16 -6.19 1.17 -4.99 1.17 -3.32V-0.48H0.82H0.48V-0.24V-0.01H1.71H2.95V-0.24V-0.48H2.6H2.25V-3.71V-6.95H2.11C2.03 -6.94 1.68 -6.92 1.32 -6.9Z"/>
- <path id="g20" d="M1.42 -5.81C1.33 -4.93 0.9 -4.33 0.32 -4.25C0.18 -4.23 0.18 -4.23 0.18 -4.12V-4H0.6H1.02V-2.51C1.02 -1.64 1.03 -0.96 1.05 -0.87C1.14 -0.37 1.49 -0.01 1.98 0.08C2.57 0.21 3 -0.03 3.22 -0.64C3.27 -0.79 3.29 -0.91 3.3 -1.31L3.31 -1.8H3.18H3.04L3.03 -1.33C3.01 -0.81 2.98 -0.64 2.83 -0.41C2.64 -0.11 2.24 -0.06 1.98 -0.31C1.73 -0.55 1.71 -0.68 1.71 -2.49V-4H2.42H3.13V-4.15V-4.3H2.42H1.71V-5.22V-6.14H1.58H1.45Z"/>
- <path id="g21" d="M1.48 -4.45C1.11 -4.39 0.76 -4.2 0.59 -3.99C0.54 -3.93 0.47 -3.8 0.42 -3.71C0.31 -3.47 0.31 -3.07 0.41 -2.84C0.51 -2.63 0.66 -2.46 0.87 -2.32C1.12 -2.15 1.32 -2.08 1.9 -1.97C2.45 -1.85 2.65 -1.78 2.84 -1.6C3.06 -1.38 3.13 -1.12 3.07 -0.8C3 -0.47 2.75 -0.24 2.36 -0.16C1.46 0.02 0.9 -0.37 0.65 -1.38C0.58 -1.66 0.57 -1.67 0.49 -1.68C0.44 -1.68 0.38 -1.67 0.36 -1.64C0.33 -1.61 0.33 -1.37 0.33 -0.74L0.34 0.1L0.42 0.11C0.48 0.12 0.53 0.08 0.68 -0.1L0.88 -0.33L0.99 -0.22C1.27 0.02 1.65 0.14 2.13 0.11C2.48 0.08 2.76 0 2.99 -0.14C3.21 -0.28 3.31 -0.39 3.43 -0.63C3.69 -1.14 3.6 -1.74 3.21 -2.15C2.91 -2.47 2.69 -2.57 1.94 -2.72C1.37 -2.84 1.17 -2.92 0.99 -3.09C0.79 -3.29 0.76 -3.57 0.9 -3.85C1.02 -4.09 1.33 -4.24 1.79 -4.26C2.55 -4.31 2.98 -3.95 3.06 -3.19L3.08 -2.99H3.2H3.32V-3.73V-4.47L3.25 -4.48C3.2 -4.48 3.14 -4.45 3.02 -4.33L2.87 -4.18L2.75 -4.26C2.54 -4.4 2.33 -4.46 1.97 -4.47C1.79 -4.47 1.56 -4.47 1.48 -4.45Z"/>
- <path id="g22" d="M1.51 -4.6C0.96 -4.5 0.58 -4.23 0.41 -3.8C0.36 -3.66 0.34 -3.56 0.34 -3.32C0.34 -3.06 0.35 -3 0.42 -2.85C0.58 -2.52 0.95 -2.2 1.33 -2.08C1.43 -2.04 1.69 -1.98 1.91 -1.94C2.48 -1.82 2.68 -1.71 2.8 -1.46C2.95 -1.13 2.8 -0.78 2.46 -0.62C2.32 -0.56 2.26 -0.55 1.91 -0.55C1.6 -0.56 1.46 -0.57 1.26 -0.62C0.99 -0.7 0.63 -0.85 0.48 -0.96L0.39 -1.02L0.36 -0.86C0.33 -0.7 0.27 -0.35 0.27 -0.34C0.27 -0.31 0.64 -0.14 0.87 -0.06C1.25 0.06 1.5 0.1 1.97 0.1C2.29 0.1 2.43 0.09 2.57 0.04C3.12 -0.11 3.45 -0.46 3.55 -0.98C3.64 -1.45 3.5 -1.88 3.15 -2.22C2.87 -2.48 2.63 -2.59 2.01 -2.72C1.73 -2.77 1.46 -2.85 1.39 -2.88C0.95 -3.1 0.94 -3.7 1.37 -3.91C1.5 -3.98 1.55 -3.98 1.97 -3.98C2.47 -3.98 2.7 -3.94 3.09 -3.76C3.23 -3.7 3.29 -3.68 3.31 -3.7C3.32 -3.72 3.35 -3.84 3.37 -3.97C3.39 -4.09 3.41 -4.22 3.42 -4.26C3.43 -4.31 3.4 -4.33 3.23 -4.4C2.87 -4.55 2.57 -4.6 2.1 -4.62C1.86 -4.62 1.6 -4.62 1.51 -4.6Z"/>
- <path id="g23" d="M1.53 -2.09L1.92 -6.65C1.92 -6.98 1.65 -7.16 1.39 -7.16S0.86 -6.98 0.86 -6.65L1.25 -2.1C1.26 -1.95 1.27 -1.87 1.39 -1.87C1.49 -1.87 1.52 -1.92 1.53 -2.09ZM1.92 -0.53C1.92 -0.82 1.68 -1.06 1.39 -1.06S0.86 -0.82 0.86 -0.53S1.1 0 1.39 0S1.92 -0.24 1.92 -0.53Z"/>
- <path id="g24" d="M1.58 -4.37C1.33 -4.25 1.15 -3.99 1 -3.55C0.85 -3.13 0.79 -2.86 0.84 -2.81C0.88 -2.76 1.03 -2.75 1.07 -2.8C1.09 -2.82 1.13 -2.95 1.17 -3.08C1.36 -3.82 1.54 -4.14 1.79 -4.17C2.02 -4.2 2.12 -4 2.07 -3.58C2.05 -3.46 1.86 -2.63 1.63 -1.74C1.41 -0.84 1.24 -0.08 1.25 -0.05C1.27 0.02 1.41 0.12 1.51 0.12C1.64 0.12 1.8 0.01 1.85 -0.1C1.87 -0.15 2.04 -0.8 2.22 -1.54C2.59 -3 2.62 -3.09 2.97 -3.54C3.28 -3.95 3.65 -4.16 4.07 -4.16C4.3 -4.17 4.31 -4.16 4.41 -4.06C4.53 -3.92 4.59 -3.68 4.56 -3.37C4.55 -3.25 4.37 -2.47 4.16 -1.64C3.96 -0.82 3.79 -0.12 3.79 -0.1C3.79 -0.01 3.96 0.12 4.07 0.12C4.2 0.12 4.36 0.01 4.41 -0.1C4.43 -0.16 4.6 -0.8 4.78 -1.53C4.99 -2.35 5.14 -2.92 5.19 -3.01C5.44 -3.5 5.78 -3.89 6.09 -4.04C6.3 -4.14 6.59 -4.2 6.74 -4.17C6.99 -4.12 7.12 -3.84 7.09 -3.41C7.07 -3.09 6.88 -2.36 6.63 -1.67C6.3 -0.73 6.29 -0.55 6.48 -0.23C6.65 0.04 7.02 0.18 7.33 0.09C7.74 -0.03 8.13 -0.54 8.34 -1.22C8.41 -1.47 8.39 -1.53 8.25 -1.53C8.14 -1.53 8.1 -1.49 8.03 -1.23C7.85 -0.57 7.49 -0.12 7.14 -0.12C6.98 -0.12 6.92 -0.2 6.92 -0.41C6.92 -0.61 6.98 -0.82 7.27 -1.64C7.38 -1.95 7.52 -2.39 7.58 -2.61C7.67 -2.97 7.69 -3.06 7.69 -3.37C7.69 -3.67 7.68 -3.74 7.62 -3.87C7.53 -4.06 7.34 -4.25 7.14 -4.34C6.93 -4.44 6.44 -4.43 6.16 -4.34C5.84 -4.23 5.53 -3.98 5.26 -3.64L5.18 -3.54L5.16 -3.63C5.11 -3.85 5.03 -3.99 4.89 -4.14C4.39 -4.64 3.39 -4.46 2.81 -3.76L2.68 -3.61L2.66 -3.71C2.61 -3.98 2.43 -4.22 2.21 -4.34C2.03 -4.43 1.73 -4.44 1.58 -4.37Z"/>
- <path id="g25" d="M1.58 -4.37C1.33 -4.25 1.15 -3.99 1 -3.55C0.85 -3.13 0.79 -2.86 0.84 -2.81C0.88 -2.76 1.03 -2.75 1.07 -2.8C1.09 -2.82 1.13 -2.95 1.17 -3.08C1.36 -3.82 1.54 -4.14 1.79 -4.17C2.02 -4.2 2.13 -3.98 2.07 -3.59C2.03 -3.33 0.85 1.4 0.79 1.5C0.74 1.6 0.6 1.65 0.35 1.65C0.19 1.65 0.17 1.66 0.14 1.72C0.12 1.76 0.12 1.83 0.13 1.87L0.14 1.94H1.15H2.16L2.2 1.85C2.26 1.7 2.21 1.67 1.86 1.65C1.64 1.63 1.54 1.62 1.51 1.58C1.46 1.53 1.47 1.46 1.68 0.63C1.8 0.14 1.91 -0.3 1.93 -0.35L1.96 -0.45L2.02 -0.35C2.11 -0.2 2.28 -0.03 2.42 0.04C2.6 0.13 3.01 0.13 3.27 0.02C4 -0.27 4.61 -0.97 4.9 -1.85C5.28 -2.97 5.05 -3.96 4.33 -4.31C4.16 -4.4 4.11 -4.41 3.88 -4.41C3.64 -4.41 3.6 -4.4 3.38 -4.29C3.22 -4.21 3.08 -4.1 2.91 -3.95C2.78 -3.82 2.67 -3.73 2.67 -3.73C2.66 -3.74 2.64 -3.8 2.61 -3.87C2.56 -4.04 2.37 -4.25 2.21 -4.34C2.03 -4.43 1.73 -4.44 1.58 -4.37ZM4.04 -4.14C4.18 -4.08 4.28 -3.93 4.35 -3.72C4.39 -3.57 4.4 -3.46 4.38 -3.17C4.36 -2.57 4.02 -1.34 3.76 -0.88C3.52 -0.48 3.17 -0.17 2.9 -0.13C2.51 -0.07 2.21 -0.37 2.12 -0.93C2.1 -1.01 2.17 -1.32 2.37 -2.13C2.63 -3.15 2.65 -3.23 2.77 -3.4C3.16 -3.98 3.69 -4.29 4.04 -4.14Z"/>
- <path id="g26" d="M1.67 -4.36C1.32 -4.33 1.04 -4.3 1.03 -4.29C1.02 -4.29 1.01 -4.22 1 -4.15L0.98 -4.01L1.22 -3.99C1.36 -3.98 1.5 -3.96 1.55 -3.94C1.72 -3.86 1.72 -3.85 1.43 -2.14C1.29 -1.27 1.15 -0.52 1.13 -0.48C1.08 -0.36 0.95 -0.32 0.64 -0.3C0.48 -0.29 0.36 -0.28 0.36 -0.27C0.35 -0.26 0.34 -0.2 0.33 -0.13L0.31 -0.01H1.43H2.55L2.57 -0.12C2.58 -0.17 2.58 -0.24 2.58 -0.25C2.58 -0.27 2.48 -0.29 2.31 -0.3C2.15 -0.31 2.01 -0.33 1.98 -0.34C1.85 -0.39 1.85 -0.47 2.05 -1.67C2.16 -2.3 2.28 -2.89 2.31 -2.99C2.52 -3.58 3.05 -4.06 3.61 -4.16C4.14 -4.25 4.39 -4.05 4.39 -3.52C4.39 -3.25 3.97 -0.62 3.9 -0.48C3.85 -0.36 3.72 -0.32 3.41 -0.3C3.25 -0.29 3.13 -0.28 3.13 -0.27C3.12 -0.26 3.11 -0.2 3.1 -0.13L3.08 -0.01H4.2H5.32L5.34 -0.12C5.35 -0.17 5.35 -0.24 5.35 -0.25C5.35 -0.27 5.25 -0.29 5.08 -0.3C4.92 -0.31 4.78 -0.33 4.75 -0.34C4.62 -0.39 4.62 -0.45 4.86 -1.87C5.05 -2.99 5.09 -3.27 5.08 -3.47C5.05 -4.07 4.7 -4.38 4.03 -4.41C3.68 -4.43 3.42 -4.38 3.12 -4.22C2.88 -4.09 2.52 -3.77 2.37 -3.55C2.3 -3.45 2.28 -3.43 2.3 -3.49C2.33 -3.64 2.43 -4.29 2.43 -4.36S2.51 -4.43 1.67 -4.36Z"/>
- <path id="g27" d="M1.71 -5.26C1.46 -5.21 1.15 -5.04 0.94 -4.84C0.35 -4.24 0.36 -3.37 0.98 -2.8C1.24 -2.55 1.44 -2.46 2.2 -2.29C2.56 -2.2 2.91 -2.11 2.98 -2.07C3.15 -1.98 3.32 -1.81 3.42 -1.6C3.49 -1.45 3.5 -1.39 3.5 -1.15C3.5 -0.92 3.49 -0.86 3.42 -0.71C3.18 -0.23 2.72 -0.04 2.07 -0.15C1.27 -0.3 0.86 -0.72 0.78 -1.46C0.76 -1.66 0.76 -1.67 0.67 -1.68C0.62 -1.68 0.56 -1.67 0.54 -1.64S0.51 -1.36 0.51 -0.73L0.52 0.13H0.6C0.65 0.13 0.71 0.08 0.82 -0.06C0.9 -0.16 0.97 -0.27 0.99 -0.29C1.01 -0.33 1.04 -0.31 1.16 -0.23C1.46 -0.01 1.83 0.11 2.29 0.14C2.82 0.17 3.2 0.04 3.55 -0.3C4.19 -0.93 4.18 -1.94 3.53 -2.55C3.25 -2.81 3.06 -2.89 2.3 -3.07C1.86 -3.17 1.59 -3.24 1.51 -3.29C1.11 -3.53 0.93 -3.96 1.07 -4.38C1.11 -4.52 1.16 -4.6 1.3 -4.74C1.46 -4.9 1.52 -4.94 1.69 -4.99C2.18 -5.14 2.72 -5.01 3.07 -4.66C3.29 -4.44 3.43 -4.15 3.51 -3.76L3.57 -3.47H3.69H3.8V-4.38V-5.28H3.73C3.67 -5.28 3.62 -5.23 3.51 -5.08C3.43 -4.98 3.35 -4.87 3.34 -4.85C3.32 -4.81 3.28 -4.83 3.16 -4.93C2.78 -5.23 2.22 -5.36 1.71 -5.26Z"/>
- <path id="g28" d="M1.73 -4.43C1.13 -4.3 0.73 -3.94 0.7 -3.47C0.68 -3.32 0.69 -3.28 0.75 -3.19C0.87 -3.02 0.97 -2.96 1.15 -2.96C1.71 -2.96 1.8 -3.73 1.26 -3.87L1.16 -3.9L1.27 -3.98C1.54 -4.19 2.16 -4.3 2.47 -4.2C2.79 -4.09 3.03 -3.85 3.16 -3.52C3.21 -3.39 3.23 -3.27 3.24 -2.99L3.25 -2.62L3.02 -2.6C2.3 -2.55 1.8 -2.43 1.37 -2.23C0.91 -2.01 0.59 -1.68 0.47 -1.28C0.29 -0.68 0.59 -0.2 1.3 0.01C1.6 0.11 2.04 0.14 2.29 0.09C2.66 0.01 3.11 -0.31 3.27 -0.61L3.33 -0.73L3.36 -0.58C3.42 -0.37 3.5 -0.22 3.64 -0.1C4.01 0.2 4.54 0.06 4.8 -0.39C4.88 -0.55 4.89 -0.57 4.9 -1L4.91 -1.44H4.77H4.63V-1.06C4.63 -0.85 4.62 -0.62 4.6 -0.55C4.51 -0.22 4.17 -0.16 4.01 -0.46C3.96 -0.54 3.95 -0.69 3.94 -1.94L3.92 -3.32L3.81 -3.55C3.48 -4.25 2.61 -4.62 1.73 -4.43ZM3.24 -1.7C3.23 -0.88 3.2 -0.79 2.89 -0.47C2.63 -0.21 2.44 -0.13 2.07 -0.13C1.85 -0.13 1.79 -0.15 1.66 -0.21C0.94 -0.59 1.1 -1.66 1.95 -2.09C2.25 -2.24 2.77 -2.36 3.11 -2.37H3.25Z"/>
- <path id="g29" d="M1.743 -0.742C1.673 -0.504 1.442 -0.126 1.085 -0.126C1.064 -0.126 0.854 -0.126 0.707 -0.224C0.994 -0.315 1.015 -0.567 1.015 -0.609C1.015 -0.763 0.896 -0.868 0.735 -0.868C0.539 -0.868 0.336 -0.7 0.336 -0.441C0.336 -0.091 0.728 0.07 1.071 0.07C1.393 0.07 1.68 -0.133 1.855 -0.427C2.023 -0.056 2.408 0.07 2.688 0.07C3.493 0.07 3.92 -0.805 3.92 -1.001C3.92 -1.092 3.829 -1.092 3.808 -1.092C3.71 -1.092 3.703 -1.057 3.675 -0.973C3.528 -0.49 3.108 -0.126 2.716 -0.126C2.436 -0.126 2.289 -0.315 2.289 -0.581C2.289 -0.763 2.457 -1.4 2.653 -2.177C2.793 -2.716 3.108 -2.891 3.339 -2.891C3.353 -2.891 3.57 -2.891 3.717 -2.793C3.493 -2.73 3.409 -2.534 3.409 -2.408C3.409 -2.254 3.528 -2.149 3.689 -2.149S4.081 -2.282 4.081 -2.576C4.081 -2.968 3.633 -3.087 3.353 -3.087C3.003 -3.087 2.723 -2.856 2.569 -2.59C2.443 -2.877 2.121 -3.087 1.729 -3.087C0.945 -3.087 0.497 -2.226 0.497 -2.016C0.497 -1.925 0.595 -1.925 0.616 -1.925C0.707 -1.925 0.714 -1.953 0.749 -2.044C0.924 -2.59 1.365 -2.891 1.708 -2.891C1.939 -2.891 2.128 -2.765 2.128 -2.429C2.128 -2.289 2.044 -1.939 1.981 -1.701L1.743 -0.742Z"/>
- <path id="g30" d="M1.94 -4.61C1.76 -4.59 1.42 -4.5 1.25 -4.43C1.01 -4.33 0.75 -4.18 0.75 -4.14C0.75 -4.05 0.81 -3.54 0.82 -3.53S0.88 -3.55 0.95 -3.59C1.34 -3.86 1.77 -4 2.24 -4.01C2.59 -4.01 2.71 -3.97 2.91 -3.74C3.11 -3.52 3.16 -3.33 3.18 -2.87L3.19 -2.47L2.85 -2.45C1.84 -2.39 1.07 -2.13 0.71 -1.74C0.49 -1.51 0.43 -1.33 0.46 -1.03C0.5 -0.5 0.82 -0.04 1.24 0.07C1.67 0.2 2.55 0.04 3.05 -0.25L3.22 -0.35V-0.17V0H3.59H3.97V-1.57C3.97 -3.3 3.96 -3.34 3.78 -3.73C3.66 -3.98 3.31 -4.35 3.07 -4.46C2.75 -4.61 2.36 -4.66 1.94 -4.61ZM3.19 -1.52C3.19 -1.2 3.17 -1.1 3.13 -1C2.93 -0.56 2.05 -0.36 1.51 -0.64C1.37 -0.71 1.21 -0.91 1.18 -1.03C1.13 -1.29 1.25 -1.48 1.53 -1.62C1.86 -1.79 2.46 -1.91 2.94 -1.92H3.19Z"/>
- <path id="g31" d="M1.96 -4.59C1.37 -4.45 0.8 -3.94 0.54 -3.31C0.38 -2.93 0.34 -2.73 0.34 -2.27C0.34 -1.76 0.39 -1.56 0.6 -1.11C0.73 -0.84 0.79 -0.76 1.03 -0.52C1.33 -0.22 1.56 -0.07 1.91 0.02C2.5 0.21 3.29 0.09 3.88 -0.26L4.08 -0.38L4.07 -0.53C4.07 -0.61 4.06 -0.76 4.05 -0.86L4.03 -1.04L3.81 -0.91C3.28 -0.56 2.59 -0.42 2.14 -0.56C1.88 -0.64 1.72 -0.75 1.51 -0.97C1.25 -1.25 1.1 -1.59 1.03 -2.05L1.02 -2.19H2.57H4.12V-2.35C4.12 -2.77 3.99 -3.39 3.85 -3.68C3.55 -4.27 3.05 -4.6 2.42 -4.62C2.26 -4.63 2.07 -4.61 1.96 -4.59ZM2.84 -3.88C3.06 -3.77 3.24 -3.59 3.36 -3.35C3.44 -3.2 3.55 -2.86 3.55 -2.78C3.55 -2.77 2.99 -2.77 2.31 -2.77H1.07L1.1 -2.83C1.27 -3.41 1.62 -3.82 2.05 -3.96C2.26 -4.03 2.61 -3.99 2.84 -3.88Z"/>
- <path id="g32" d="M12.66 14L13.87 10.8H13.62C13.23 11.84 12.17 12.52 11.02 12.82C10.81 12.87 9.83 13.13 7.91 13.13H1.88L6.97 7.16C7.04 7.08 7.06 7.05 7.06 7C7.06 6.98 7.06 6.95 6.99 6.85L2.33 0.48H7.81C9.15 0.48 10.06 0.62 10.15 0.64C10.69 0.72 11.56 0.89 12.35 1.39C12.6 1.55 13.28 2 13.62 2.81H13.87L12.66 0H0.84C0.61 0 0.6 0.01 0.57 0.07C0.56 0.1 0.56 0.29 0.56 0.4L5.85 7.64L0.67 13.71C0.57 13.83 0.57 13.88 0.57 13.89C0.57 14 0.66 14 0.84 14H12.66Z"/>
- <path id="g33" d="M2.04 -4.46C1.88 -4.43 1.57 -4.32 1.39 -4.22C1 -4.01 0.6 -3.54 0.43 -3.08C-0.13 -1.57 0.84 0.02 2.37 0.11C3.13 0.15 3.83 -0.29 4.09 -0.98C4.17 -1.2 4.15 -1.29 4.02 -1.29C3.92 -1.29 3.91 -1.28 3.84 -1.08C3.66 -0.62 3.32 -0.31 2.87 -0.19C2.28 -0.03 1.64 -0.35 1.35 -0.94C1.2 -1.24 1.14 -1.5 1.12 -1.96L1.1 -2.31H2.61C4.29 -2.31 4.15 -2.29 4.15 -2.54C4.15 -2.97 4.02 -3.44 3.8 -3.77C3.63 -4.02 3.47 -4.16 3.2 -4.29C2.87 -4.45 2.39 -4.52 2.04 -4.46ZM2.76 -4.14C3.17 -3.93 3.4 -3.47 3.45 -2.82L3.47 -2.55H2.29H1.11L1.12 -2.62C1.13 -2.66 1.14 -2.77 1.16 -2.87C1.22 -3.42 1.51 -3.92 1.89 -4.12C2.16 -4.26 2.5 -4.27 2.76 -4.14Z"/>
- <path id="g34" d="M2.05 -4.44C0.97 -4.19 0.21 -3.16 0.28 -2.01C0.3 -1.64 0.35 -1.43 0.53 -1.09C1.11 0.08 2.6 0.47 3.7 -0.25C4.12 -0.53 4.49 -1.05 4.62 -1.55C4.7 -1.84 4.71 -2.26 4.65 -2.57C4.44 -3.66 3.59 -4.44 2.55 -4.47C2.35 -4.48 2.17 -4.47 2.05 -4.44ZM2.95 -4.15C3.43 -3.96 3.74 -3.52 3.82 -2.89C3.86 -2.56 3.86 -1.8 3.81 -1.49C3.71 -0.87 3.48 -0.5 3.05 -0.28C2.48 0 1.77 -0.18 1.42 -0.71C1.18 -1.08 1.09 -1.56 1.12 -2.42C1.14 -3.01 1.17 -3.2 1.33 -3.52C1.49 -3.85 1.82 -4.12 2.18 -4.21C2.37 -4.26 2.76 -4.23 2.95 -4.15Z"/>
- <path id="g35" d="M2.06 -4H3C3.2 -4 3.3 -4 3.3 -4.2C3.3 -4.31 3.2 -4.31 3.02 -4.31H2.14C2.5 -5.73 2.55 -5.93 2.55 -5.99C2.55 -6.16 2.43 -6.26 2.26 -6.26C2.23 -6.26 1.95 -6.25 1.86 -5.9L1.47 -4.31H0.53C0.33 -4.31 0.23 -4.31 0.23 -4.12C0.23 -4 0.31 -4 0.51 -4H1.39C0.67 -1.16 0.63 -0.99 0.63 -0.81C0.63 -0.27 1.01 0.11 1.55 0.11C2.57 0.11 3.14 -1.35 3.14 -1.43C3.14 -1.53 3.06 -1.53 3.02 -1.53C2.93 -1.53 2.92 -1.5 2.87 -1.39C2.44 -0.35 1.91 -0.11 1.57 -0.11C1.36 -0.11 1.26 -0.24 1.26 -0.57C1.26 -0.81 1.28 -0.88 1.32 -1.05L2.06 -4Z"/>
- <path id="g36" d="M2.08 -1.94C2.3 -1.9 3.12 -1.74 3.12 -1.02C3.12 -0.51 2.77 -0.11 1.99 -0.11C1.15 -0.11 0.79 -0.68 0.6 -1.53C0.57 -1.66 0.56 -1.7 0.46 -1.7C0.33 -1.7 0.33 -1.63 0.33 -1.45V-0.13C0.33 0.04 0.33 0.11 0.44 0.11C0.49 0.11 0.5 0.1 0.69 -0.09C0.71 -0.11 0.71 -0.13 0.89 -0.32C1.33 0.1 1.78 0.11 1.99 0.11C3.14 0.11 3.6 -0.56 3.6 -1.28C3.6 -1.81 3.3 -2.11 3.18 -2.23C2.85 -2.55 2.46 -2.63 2.04 -2.71C1.48 -2.82 0.81 -2.95 0.81 -3.53C0.81 -3.88 1.07 -4.29 1.93 -4.29C3.03 -4.29 3.08 -3.39 3.1 -3.08C3.11 -2.99 3.2 -2.99 3.22 -2.99C3.35 -2.99 3.35 -3.04 3.35 -3.23V-4.24C3.35 -4.41 3.35 -4.48 3.24 -4.48C3.19 -4.48 3.17 -4.48 3.04 -4.36C3.01 -4.32 2.91 -4.23 2.87 -4.2C2.49 -4.48 2.08 -4.48 1.93 -4.48C0.71 -4.48 0.33 -3.81 0.33 -3.25C0.33 -2.9 0.49 -2.62 0.76 -2.4C1.08 -2.14 1.36 -2.08 2.08 -1.94Z"/>
- <path id="g37" d="M2.12 -6.89C1.78 -6.86 1.49 -6.83 1.48 -6.82C1.48 -6.82 1.47 -6.75 1.46 -6.68L1.43 -6.54L1.68 -6.52C1.96 -6.5 2.08 -6.45 2.12 -6.34C2.16 -6.21 1.22 -0.53 1.13 -0.43C1.07 -0.35 0.86 -0.3 0.58 -0.3C0.4 -0.3 0.39 -0.3 0.38 -0.2C0.33 0 0.24 -0.01 1.46 -0.01C2.45 -0.01 2.55 -0.01 2.55 -0.06C2.55 -0.09 2.56 -0.15 2.57 -0.2L2.59 -0.29L2.31 -0.3C2.15 -0.31 2.01 -0.33 1.98 -0.34C1.84 -0.39 1.84 -0.35 2.39 -3.67C2.68 -5.41 2.92 -6.86 2.92 -6.89C2.92 -6.96 2.97 -6.96 2.12 -6.89Z"/>
- <path id="g38" d="M2.19 -6.89C1.87 -6.85 1.59 -6.81 1.57 -6.79C1.54 -6.77 1.53 -6.72 1.54 -6.65L1.55 -6.54L1.83 -6.53C2.17 -6.5 2.25 -6.47 2.25 -6.36C2.25 -6.32 1.91 -4.91 1.49 -3.22C1.06 -1.53 0.72 -0.12 0.72 -0.1C0.72 -0.01 0.89 0.12 0.99 0.12C1.13 0.12 1.28 0.02 1.34 -0.09C1.36 -0.15 1.53 -0.79 1.71 -1.53C1.92 -2.34 2.07 -2.92 2.12 -3.02C2.36 -3.5 2.71 -3.89 3.02 -4.04C3.23 -4.14 3.52 -4.2 3.67 -4.17C3.92 -4.12 4.05 -3.84 4.02 -3.41C4 -3.09 3.81 -2.36 3.56 -1.67C3.45 -1.35 3.34 -1.01 3.32 -0.91C3.12 -0.1 3.93 0.42 4.58 -0.08C4.86 -0.3 5.12 -0.73 5.27 -1.22C5.34 -1.47 5.32 -1.53 5.17 -1.53C5.06 -1.53 5.03 -1.49 4.96 -1.23C4.78 -0.57 4.42 -0.12 4.07 -0.12C3.91 -0.12 3.85 -0.2 3.85 -0.41C3.85 -0.61 3.91 -0.82 4.19 -1.64C4.3 -1.95 4.44 -2.39 4.51 -2.61C4.6 -2.97 4.62 -3.06 4.62 -3.37C4.62 -3.67 4.61 -3.74 4.55 -3.87C4.46 -4.06 4.26 -4.25 4.07 -4.34C3.86 -4.44 3.37 -4.43 3.09 -4.34C2.87 -4.26 2.61 -4.09 2.41 -3.9C2.34 -3.83 2.28 -3.79 2.28 -3.8S2.45 -4.5 2.66 -5.34C3.07 -6.99 3.07 -6.95 2.87 -6.95C2.82 -6.95 2.52 -6.92 2.19 -6.89Z"/>
- <path id="g39" d="M2.191 -4.648C2.198 -4.662 2.219 -4.753 2.219 -4.76C2.219 -4.795 2.191 -4.858 2.107 -4.858C1.967 -4.858 1.386 -4.802 1.211 -4.788C1.155 -4.781 1.057 -4.774 1.057 -4.627C1.057 -4.529 1.155 -4.529 1.239 -4.529C1.575 -4.529 1.575 -4.48 1.575 -4.424C1.575 -4.375 1.561 -4.333 1.547 -4.27L0.56 -0.308C0.525 -0.182 0.525 -0.168 0.525 -0.154C0.525 -0.049 0.609 0.07 0.763 0.07C0.952 0.07 1.043 -0.07 1.085 -0.224C1.099 -0.252 1.4 -1.484 1.428 -1.582C1.925 -1.533 2.324 -1.372 2.324 -1.008C2.324 -0.973 2.324 -0.938 2.31 -0.868C2.282 -0.763 2.282 -0.728 2.282 -0.651C2.282 -0.154 2.688 0.07 3.024 0.07C3.703 0.07 3.913 -0.994 3.913 -1.001C3.913 -1.092 3.822 -1.092 3.801 -1.092C3.703 -1.092 3.696 -1.057 3.661 -0.924C3.577 -0.623 3.388 -0.126 3.045 -0.126C2.856 -0.126 2.8 -0.301 2.8 -0.49C2.8 -0.609 2.8 -0.623 2.842 -0.805C2.849 -0.826 2.877 -0.945 2.877 -1.022C2.877 -1.645 2.037 -1.743 1.743 -1.764C1.946 -1.89 2.205 -2.121 2.324 -2.226C2.681 -2.562 3.031 -2.891 3.423 -2.891C3.507 -2.891 3.598 -2.87 3.654 -2.8C3.353 -2.751 3.29 -2.513 3.29 -2.408C3.29 -2.254 3.409 -2.149 3.57 -2.149C3.759 -2.149 3.969 -2.303 3.969 -2.597C3.969 -2.828 3.801 -3.087 3.43 -3.087C3.031 -3.087 2.667 -2.8 2.31 -2.471C2.016 -2.191 1.785 -1.974 1.498 -1.855L2.191 -4.648Z"/>
- <path id="g40" d="M2.23 -7.29C1.81 -7.18 1.42 -6.84 1.2 -6.41C1.02 -6.04 0.99 -5.84 0.99 -5.09V-4.45H0.61H0.24V-4.15V-3.85H0.61H0.99V-1.92V0H1.37H1.74V-1.92V-3.85H2.28H2.83V-4.15V-4.45H2.27H1.71L1.72 -5.29C1.73 -6.04 1.73 -6.13 1.78 -6.24C1.98 -6.64 2.48 -6.8 3.05 -6.65C3.18 -6.62 3.32 -6.58 3.36 -6.57C3.43 -6.55 3.43 -6.55 3.43 -6.89V-7.22L3.3 -7.25C2.94 -7.35 2.5 -7.37 2.23 -7.29Z"/>
- <path id="g41" d="M2.27 -4.46C1.44 -4.35 0.87 -3.78 0.87 -3.09C0.87 -2.9 0.88 -2.84 0.96 -2.68C1.15 -2.31 1.47 -2.13 2.24 -1.96C2.91 -1.82 3.06 -1.74 3.2 -1.46C3.29 -1.27 3.3 -1.12 3.22 -0.86C3.07 -0.4 2.61 -0.12 1.98 -0.12C1.3 -0.11 0.95 -0.52 0.88 -1.36C0.87 -1.5 0.85 -1.62 0.83 -1.64C0.8 -1.69 0.64 -1.69 0.62 -1.66C0.58 -1.6 0.32 0.03 0.34 0.07C0.38 0.17 0.49 0.12 0.72 -0.1L0.94 -0.32L1.1 -0.18C1.35 0.05 1.52 0.1 2.01 0.1C2.37 0.1 2.45 0.08 2.66 0.02C3.26 -0.17 3.65 -0.6 3.78 -1.21C3.86 -1.6 3.77 -1.93 3.5 -2.22C3.26 -2.48 3.03 -2.59 2.4 -2.72C1.86 -2.83 1.65 -2.91 1.52 -3.06C1.37 -3.25 1.35 -3.45 1.47 -3.71C1.62 -4.05 2.07 -4.27 2.63 -4.27C3.01 -4.27 3.3 -4.15 3.45 -3.93C3.55 -3.78 3.62 -3.48 3.6 -3.25C3.59 -3.13 3.59 -3.04 3.61 -3.02C3.65 -2.97 3.81 -2.96 3.83 -3C3.86 -3.05 4.06 -4.31 4.05 -4.39C4.04 -4.52 3.94 -4.5 3.75 -4.35C3.58 -4.21 3.51 -4.18 3.47 -4.24C3.44 -4.3 3.18 -4.41 3.01 -4.45C2.86 -4.48 2.46 -4.49 2.27 -4.46Z"/>
- <path id="g42" d="M2.33 -7C1.59 -6.83 1.02 -6.32 0.8 -5.64C0.71 -5.34 0.71 -4.82 0.8 -4.54C0.97 -4.07 1.35 -3.63 1.81 -3.4C2.01 -3.3 2.21 -3.24 2.94 -3.07C3.48 -2.94 3.88 -2.83 3.99 -2.77C4.09 -2.73 4.24 -2.61 4.34 -2.52C4.89 -1.97 4.89 -1.06 4.33 -0.5C4.01 -0.19 3.67 -0.07 3.14 -0.1C2.73 -0.12 2.38 -0.2 2.04 -0.36C1.84 -0.46 1.74 -0.53 1.54 -0.73C1.19 -1.08 1.05 -1.42 1 -1.99L0.97 -2.24L0.88 -2.25C0.83 -2.25 0.77 -2.24 0.75 -2.21S0.72 -1.86 0.72 -0.99L0.73 0.19L0.81 0.2C0.88 0.21 0.91 0.17 1.12 -0.14L1.34 -0.51L1.46 -0.41C1.9 -0.03 2.45 0.16 3.16 0.2C3.48 0.21 3.57 0.21 3.79 0.15C4.19 0.05 4.46 -0.09 4.76 -0.39C4.97 -0.6 5.04 -0.69 5.16 -0.93C5.46 -1.56 5.46 -2.17 5.16 -2.79C5.04 -3.03 4.97 -3.13 4.77 -3.32C4.39 -3.7 4.17 -3.8 3.11 -4.05C2.18 -4.26 1.98 -4.34 1.75 -4.57C1.22 -5.08 1.22 -5.87 1.76 -6.38C2.06 -6.66 2.44 -6.79 2.9 -6.76C3.45 -6.73 3.81 -6.58 4.15 -6.23C4.5 -5.89 4.67 -5.52 4.78 -4.88L4.83 -4.59H4.95H5.07V-5.81V-7.03L4.99 -7.04C4.92 -7.04 4.89 -7.01 4.69 -6.69C4.57 -6.49 4.47 -6.33 4.47 -6.33C4.46 -6.32 4.39 -6.39 4.3 -6.47C4 -6.75 3.61 -6.94 3.18 -7.01C2.93 -7.05 2.55 -7.05 2.33 -7Z"/>
- <path id="g43" d="M2.34 -4.38C2.14 -4.31 1.96 -4.18 1.81 -4.01C1.63 -3.82 1.45 -3.46 1.43 -3.31C1.43 -3.2 1.43 -3.2 1.55 -3.19C1.68 -3.18 1.68 -3.19 1.74 -3.31C1.86 -3.6 2.13 -3.77 2.48 -3.77C2.67 -3.77 2.72 -3.76 3 -3.63C3.18 -3.55 3.4 -3.46 3.5 -3.44L3.68 -3.4L2.57 -2.29C1.45 -1.18 1.1 -0.78 0.77 -0.28C0.57 0.02 0.56 0.1 0.72 0.11C0.83 0.12 0.84 0.11 0.98 -0.09C1.3 -0.56 1.62 -0.73 1.88 -0.57C1.93 -0.54 2.03 -0.45 2.09 -0.37C2.42 0.04 2.56 0.13 2.84 0.11C3.42 0.06 3.99 -0.47 4.24 -1.22C4.32 -1.45 4.3 -1.5 4.15 -1.5C4.05 -1.5 4.02 -1.49 4 -1.42C3.82 -0.99 3.63 -0.77 3.31 -0.62C3.14 -0.54 3.08 -0.52 2.89 -0.52C2.69 -0.52 2.63 -0.54 2.42 -0.64C2.08 -0.8 1.87 -0.87 1.7 -0.87H1.56L1.62 -0.96C1.66 -1.01 2.19 -1.56 2.81 -2.17C3.63 -2.99 3.99 -3.38 4.17 -3.61C4.45 -3.99 4.64 -4.3 4.63 -4.36C4.62 -4.39 4.57 -4.41 4.49 -4.42C4.37 -4.42 4.37 -4.42 4.26 -4.23C4.08 -3.93 3.95 -3.77 3.84 -3.72C3.63 -3.62 3.46 -3.68 3.26 -3.93C2.89 -4.4 2.68 -4.5 2.34 -4.38Z"/>
- <path id="g44" d="M2.345 -4.452C2.345 -4.641 2.331 -4.648 2.135 -4.648C1.687 -4.207 1.05 -4.2 0.763 -4.2V-3.948C0.931 -3.948 1.393 -3.948 1.778 -4.144V-0.574C1.778 -0.343 1.778 -0.252 1.078 -0.252H0.812V0C0.938 -0.007 1.799 -0.028 2.058 -0.028C2.275 -0.028 3.157 -0.007 3.311 0V-0.252H3.045C2.345 -0.252 2.345 -0.343 2.345 -0.574V-4.452Z"/>
- <path id="g45" d="M2.35 -4.51C2.07 -4.47 1.64 -4.32 1.41 -4.19C1.3 -4.13 1.1 -3.97 0.97 -3.83C0.76 -3.63 0.7 -3.54 0.59 -3.3C0.39 -2.89 0.34 -2.68 0.34 -2.19C0.34 -1.86 0.36 -1.74 0.41 -1.55C0.6 -0.89 1.05 -0.39 1.69 -0.14C2.09 0 2.31 0.04 2.86 0.04C3.4 0.04 3.62 0 4.02 -0.14C4.66 -0.39 5.11 -0.89 5.3 -1.55C5.36 -1.74 5.37 -1.86 5.37 -2.19C5.37 -2.68 5.32 -2.89 5.12 -3.3C5.01 -3.54 4.95 -3.63 4.74 -3.83C4.61 -3.97 4.41 -4.13 4.3 -4.19C3.8 -4.48 3.03 -4.6 2.35 -4.51ZM3.16 -4.15C3.39 -4.1 3.64 -3.96 3.77 -3.82C4.01 -3.55 4.06 -3.34 4.08 -2.49C4.1 -1.82 4.07 -1.36 3.98 -1.08C3.89 -0.77 3.67 -0.54 3.34 -0.41C3.2 -0.36 3.11 -0.34 2.86 -0.34C2.6 -0.34 2.51 -0.36 2.37 -0.41C1.75 -0.66 1.59 -1.1 1.63 -2.49C1.65 -3.34 1.7 -3.55 1.94 -3.82C2.2 -4.11 2.71 -4.24 3.16 -4.15Z"/>
- <path id="g46" d="M2.4 -5.87C2.18 -4.98 1.63 -4.32 1.02 -4.25C0.89 -4.23 0.87 -4.22 0.87 -4.16C0.87 -4.13 0.86 -4.07 0.85 -4.05C0.83 -4.01 0.88 -4 1.26 -4C1.49 -4 1.68 -3.99 1.68 -3.98S1.57 -3.31 1.44 -2.52C1.16 -0.86 1.15 -0.71 1.3 -0.41C1.47 -0.06 1.78 0.09 2.25 0.1C2.51 0.1 2.56 0.09 2.71 0.02C3 -0.12 3.3 -0.49 3.43 -0.88C3.46 -0.98 3.51 -1.19 3.53 -1.35C3.56 -1.51 3.59 -1.67 3.6 -1.72C3.61 -1.8 3.61 -1.8 3.48 -1.8C3.4 -1.8 3.34 -1.8 3.34 -1.79S3.3 -1.59 3.26 -1.36C3.11 -0.53 2.76 -0.09 2.3 -0.16C2.14 -0.18 2.04 -0.26 1.96 -0.42C1.84 -0.66 1.86 -0.85 2.13 -2.5L2.38 -4H3.09H3.79L3.8 -4.07C3.81 -4.1 3.82 -4.17 3.83 -4.22L3.85 -4.3H3.14C2.75 -4.3 2.43 -4.31 2.43 -4.32C2.43 -4.34 2.7 -5.95 2.72 -6.06C2.74 -6.14 2.74 -6.14 2.61 -6.14H2.47Z"/>
- <path id="g47" d="M2.46 -4.43C1.91 -4.32 1.51 -4.04 1.33 -3.66C1.19 -3.35 1.27 -3.07 1.52 -2.98C1.84 -2.87 2.19 -3.14 2.19 -3.49C2.19 -3.61 2.18 -3.66 2.1 -3.74C2.05 -3.79 1.97 -3.85 1.92 -3.87L1.82 -3.9L1.94 -3.98C2.1 -4.09 2.49 -4.21 2.77 -4.23C3.1 -4.26 3.31 -4.19 3.5 -3.99C3.76 -3.73 3.82 -3.38 3.72 -2.84L3.68 -2.63L3.5 -2.61C3.4 -2.6 3.18 -2.57 3 -2.56C2.5 -2.5 2.03 -2.37 1.63 -2.18C1.34 -2.04 1.25 -1.97 1.05 -1.78C0.75 -1.48 0.6 -1.19 0.57 -0.87C0.56 -0.68 0.57 -0.64 0.64 -0.49C0.82 -0.13 1.24 0.07 1.85 0.11C2.2 0.13 2.43 0.08 2.73 -0.06C2.94 -0.17 3.23 -0.42 3.37 -0.61L3.46 -0.73V-0.62C3.46 -0.33 3.64 -0.04 3.87 0.03C4.13 0.11 4.53 -0.01 4.75 -0.25C4.92 -0.44 5.01 -0.64 5.07 -0.99C5.09 -1.15 5.12 -1.31 5.13 -1.36C5.15 -1.44 5.15 -1.44 5.01 -1.44C4.86 -1.44 4.88 -1.48 4.8 -0.99C4.77 -0.83 4.72 -0.63 4.68 -0.55C4.56 -0.29 4.32 -0.19 4.17 -0.34C4.03 -0.47 4.04 -0.55 4.25 -1.86C4.49 -3.24 4.5 -3.4 4.35 -3.7C4.18 -4.05 3.78 -4.34 3.35 -4.44C3.09 -4.49 2.72 -4.49 2.46 -4.43ZM3.64 -2.37C3.64 -2.36 3.59 -2.08 3.53 -1.75C3.41 -1.01 3.34 -0.84 3.05 -0.55C2.73 -0.23 2.27 -0.06 1.9 -0.14C1.67 -0.19 1.52 -0.3 1.42 -0.5C1.35 -0.64 1.34 -0.69 1.36 -0.85C1.41 -1.48 1.93 -2.01 2.71 -2.23C3.02 -2.32 3.64 -2.41 3.64 -2.37Z"/>
- <path id="g48" d="M2.57 -4.52C2.27 -4.45 2.02 -4.31 1.76 -4.06L1.53 -3.83V-4.17V-4.51H1.17H0.81V-2.25V0H1.2H1.59L1.6 -1.45C1.61 -2.66 1.62 -2.93 1.66 -3.06C1.83 -3.61 2.1 -3.9 2.5 -3.93C2.86 -3.97 3.24 -3.83 3.38 -3.61C3.54 -3.37 3.55 -3.28 3.55 -1.57V0H3.94H4.33V-1.63C4.33 -3.39 4.32 -3.57 4.17 -3.89C3.97 -4.33 3.53 -4.58 2.95 -4.57C2.84 -4.57 2.67 -4.55 2.57 -4.52Z"/>
- <path id="g49" d="M2.59 -6.53C2.42 -6.37 2.03 -6.18 1.75 -6.11C1.62 -6.07 1.38 -6.04 1.21 -6.03L0.9 -6.01V-5.86V-5.72H1.09C1.42 -5.72 1.79 -5.8 2.14 -5.94C2.19 -5.96 2.19 -5.82 2.19 -3.27C2.19 -1.19 2.18 -0.57 2.15 -0.51C2.08 -0.36 1.94 -0.32 1.43 -0.3L0.96 -0.29V-0.15V-0.01H2.57H4.18V-0.15V-0.29L3.71 -0.3C3.2 -0.32 3.06 -0.36 2.98 -0.51C2.96 -0.57 2.95 -1.25 2.95 -3.57C2.95 -5.21 2.94 -6.58 2.93 -6.6C2.89 -6.69 2.73 -6.66 2.59 -6.53Z"/>
- <path id="g50" d="M2.66 -4.44C2.23 -4.34 1.84 -4.13 1.5 -3.8C1.12 -3.43 0.85 -3 0.7 -2.5C0.63 -2.27 0.62 -2.19 0.62 -1.82C0.62 -1.44 0.62 -1.37 0.7 -1.15C0.91 -0.52 1.43 -0.05 2.06 0.07C2.94 0.26 3.84 -0.18 4.29 -1.03C4.36 -1.17 4.37 -1.2 4.33 -1.24C4.31 -1.27 4.25 -1.29 4.21 -1.29C4.14 -1.29 4.11 -1.27 4.05 -1.15C3.81 -0.67 3.38 -0.32 2.89 -0.19C2.39 -0.06 1.87 -0.25 1.63 -0.66C1.5 -0.88 1.44 -1.07 1.42 -1.38C1.4 -1.6 1.44 -2.04 1.49 -2.25L1.51 -2.31H3.01H4.51L4.55 -2.38C4.57 -2.43 4.58 -2.6 4.59 -2.89C4.59 -3.26 4.58 -3.35 4.52 -3.54C4.39 -3.95 4.09 -4.25 3.67 -4.39C3.42 -4.48 2.92 -4.5 2.66 -4.44ZM3.47 -4.14C3.66 -4.03 3.76 -3.91 3.84 -3.69C3.93 -3.44 3.95 -3.16 3.93 -2.81L3.9 -2.55H2.73C2.09 -2.55 1.56 -2.56 1.56 -2.57C1.56 -2.63 1.66 -2.96 1.73 -3.13C1.94 -3.66 2.4 -4.1 2.83 -4.21C3.01 -4.26 3.33 -4.22 3.47 -4.14Z"/>
- <path id="g51" d="M2.72 -4.39C2.15 -4.27 1.67 -3.78 1.54 -3.16C1.49 -2.89 1.52 -2.69 1.64 -2.46C1.8 -2.17 1.99 -2.06 2.55 -1.93C2.99 -1.83 3.16 -1.74 3.27 -1.53C3.44 -1.2 3.28 -0.67 2.9 -0.38C2.66 -0.2 2.42 -0.13 2.03 -0.13C1.62 -0.13 1.41 -0.2 1.21 -0.4C1.08 -0.54 1.02 -0.66 1.1 -0.66C1.13 -0.66 1.21 -0.69 1.28 -0.72C1.5 -0.83 1.63 -1.14 1.53 -1.32C1.46 -1.46 1.19 -1.51 1.02 -1.43C0.72 -1.27 0.63 -0.85 0.81 -0.48C1.02 -0.06 1.49 0.14 2.14 0.11C2.86 0.07 3.42 -0.26 3.71 -0.85C3.99 -1.41 3.96 -1.89 3.63 -2.28C3.47 -2.45 3.16 -2.6 2.74 -2.69C2.33 -2.78 2.22 -2.84 2.13 -3.03C1.96 -3.37 2.21 -3.91 2.62 -4.09C2.75 -4.15 2.83 -4.16 3.07 -4.16C3.33 -4.17 3.37 -4.16 3.51 -4.08C3.67 -3.99 3.76 -3.89 3.8 -3.77C3.82 -3.71 3.81 -3.7 3.73 -3.68C3.68 -3.67 3.59 -3.61 3.53 -3.55C3.45 -3.45 3.43 -3.4 3.43 -3.29S3.44 -3.15 3.52 -3.08C3.69 -2.94 3.94 -3.01 4.07 -3.25C4.16 -3.4 4.16 -3.73 4.07 -3.89C3.98 -4.07 3.8 -4.23 3.6 -4.32C3.45 -4.38 3.36 -4.4 3.14 -4.41C2.99 -4.41 2.8 -4.4 2.72 -4.39Z"/>
- <path id="g52" d="M2.72 -6.55C2.59 -6.49 2.44 -6.31 2.42 -6.18C2.39 -6.04 2.46 -5.89 2.59 -5.82C2.8 -5.71 3.08 -5.85 3.19 -6.1C3.25 -6.22 3.25 -6.25 3.22 -6.35C3.16 -6.56 2.94 -6.64 2.72 -6.55ZM1.83 -4.38C1.42 -4.24 1.05 -3.74 0.86 -3.09C0.79 -2.83 0.81 -2.77 0.96 -2.77C1.07 -2.77 1.09 -2.79 1.18 -3.11C1.4 -3.82 1.7 -4.18 2.07 -4.18C2.18 -4.18 2.22 -4.14 2.25 -4.02C2.31 -3.78 2.26 -3.63 1.67 -2.01C1.32 -1.08 1.28 -0.95 1.27 -0.73C1.26 -0.53 1.26 -0.46 1.32 -0.33C1.4 -0.15 1.6 0.03 1.77 0.08C2.34 0.25 2.91 -0.24 3.2 -1.18C3.29 -1.47 3.28 -1.53 3.13 -1.53C3.02 -1.53 2.98 -1.49 2.91 -1.23C2.82 -0.89 2.6 -0.46 2.45 -0.31C2.28 -0.14 2.03 -0.07 1.89 -0.15C1.81 -0.19 1.79 -0.39 1.84 -0.64C1.87 -0.76 2.09 -1.42 2.34 -2.1C2.85 -3.48 2.88 -3.61 2.78 -3.9C2.65 -4.3 2.22 -4.52 1.83 -4.38Z"/>
- <path id="g53" d="M2.74 -4.51C2.31 -4.4 1.95 -4.17 1.67 -3.83L1.52 -3.64L1.51 -4.08L1.5 -4.51H1.15H0.81V-2.25V0H1.18H1.56L1.57 -1.27L1.58 -2.54L1.66 -2.74C1.83 -3.18 2.09 -3.5 2.45 -3.69C2.64 -3.79 2.95 -3.88 3.12 -3.88H3.22V-4.23V-4.57H3.09C3.02 -4.57 2.86 -4.54 2.74 -4.51Z"/>
- <path id="g54" d="M2.87 -6.83C2.87 -6.84 2.87 -6.94 2.74 -6.94C2.51 -6.94 1.78 -6.86 1.52 -6.84C1.44 -6.83 1.33 -6.82 1.33 -6.64C1.33 -6.52 1.42 -6.52 1.57 -6.52C2.05 -6.52 2.07 -6.45 2.07 -6.35L2.04 -6.15L0.59 -0.39C0.55 -0.25 0.55 -0.23 0.55 -0.17C0.55 0.06 0.75 0.11 0.84 0.11C0.97 0.11 1.12 0.02 1.18 -0.1C1.23 -0.19 1.68 -2.04 1.74 -2.29C2.08 -2.26 2.9 -2.1 2.9 -1.44C2.9 -1.37 2.9 -1.33 2.87 -1.23C2.85 -1.11 2.83 -0.99 2.83 -0.88C2.83 -0.29 3.23 0.11 3.75 0.11C4.05 0.11 4.32 -0.05 4.54 -0.42C4.79 -0.86 4.9 -1.41 4.9 -1.43C4.9 -1.53 4.81 -1.53 4.78 -1.53C4.68 -1.53 4.67 -1.49 4.64 -1.35C4.44 -0.62 4.21 -0.11 3.77 -0.11C3.58 -0.11 3.45 -0.22 3.45 -0.58C3.45 -0.75 3.49 -0.98 3.53 -1.14C3.57 -1.31 3.57 -1.35 3.57 -1.45C3.57 -2.1 2.94 -2.39 2.09 -2.5C2.4 -2.68 2.72 -3 2.95 -3.24C3.43 -3.77 3.89 -4.2 4.38 -4.2C4.44 -4.2 4.45 -4.2 4.47 -4.19C4.59 -4.17 4.6 -4.17 4.68 -4.11C4.7 -4.1 4.7 -4.09 4.72 -4.07C4.24 -4.04 4.15 -3.65 4.15 -3.53C4.15 -3.37 4.26 -3.18 4.53 -3.18C4.79 -3.18 5.08 -3.4 5.08 -3.79C5.08 -4.09 4.85 -4.42 4.4 -4.42C4.12 -4.42 3.66 -4.34 2.94 -3.54C2.6 -3.16 2.21 -2.76 1.83 -2.61L2.87 -6.83Z"/>
- <path id="g55" d="M2.89 -2.5C2.89 -3.28 2.78 -4.49 2.23 -5.62C1.63 -6.85 0.77 -7.5 0.67 -7.5C0.61 -7.5 0.57 -7.46 0.57 -7.4C0.57 -7.37 0.57 -7.35 0.76 -7.17C1.74 -6.18 2.31 -4.59 2.31 -2.5C2.31 -0.79 1.94 0.97 0.7 2.23C0.57 2.35 0.57 2.37 0.57 2.4C0.57 2.46 0.61 2.5 0.67 2.5C0.77 2.5 1.67 1.82 2.26 0.55C2.77 -0.55 2.89 -1.66 2.89 -2.5Z"/>
- <path id="g56" d="M2.91 -5.27C2.88 -5.24 2.49 -4.24 2.03 -3.05S1.16 -0.82 1.12 -0.74C0.97 -0.48 0.65 -0.27 0.4 -0.27C0.33 -0.27 0.33 -0.25 0.33 -0.14V-0.01H1.11H1.89V-0.14C1.89 -0.24 1.88 -0.27 1.84 -0.27C1.75 -0.27 1.58 -0.37 1.53 -0.46C1.43 -0.62 1.45 -0.78 1.63 -1.25L1.79 -1.68L2.83 -1.67H3.86L4.07 -1.14C4.18 -0.85 4.27 -0.58 4.27 -0.54C4.27 -0.37 4.11 -0.27 3.86 -0.27C3.76 -0.27 3.76 -0.26 3.76 -0.14V-0.01H4.77H5.78V-0.13V-0.26L5.53 -0.27C5.25 -0.29 5.17 -0.34 5.06 -0.52C5.03 -0.59 4.6 -1.67 4.12 -2.93S3.22 -5.24 3.19 -5.27C3.17 -5.3 3.11 -5.32 3.05 -5.32C3 -5.32 2.94 -5.3 2.91 -5.27ZM3.3 -3.14L3.75 -1.95H2.82H1.89L1.95 -2.1C1.98 -2.17 2.19 -2.71 2.41 -3.28C2.63 -3.86 2.82 -4.33 2.83 -4.33C2.83 -4.33 3.05 -3.79 3.3 -3.14Z"/>
- <path id="g57" d="M2.94 -6.4C2.94 -6.64 2.94 -6.66 2.71 -6.66C2.09 -6.02 1.21 -6.02 0.89 -6.02V-5.71C1.09 -5.71 1.68 -5.71 2.2 -5.97V-0.79C2.2 -0.43 2.17 -0.31 1.27 -0.31H0.95V0C1.3 -0.03 2.17 -0.03 2.57 -0.03S3.84 -0.03 4.19 0V-0.31H3.87C2.97 -0.31 2.94 -0.42 2.94 -0.79V-6.4Z"/>
- <path id="g58" d="M3.01 -4.37C2.65 -4.28 2.33 -4.07 2 -3.72C1.4 -3.11 1.05 -2.25 1.05 -1.43C1.05 -0.88 1.19 -0.49 1.5 -0.19C1.75 0.03 1.9 0.1 2.24 0.1C2.5 0.1 2.53 0.09 2.74 0C2.9 -0.08 3.05 -0.19 3.22 -0.35C3.42 -0.54 3.46 -0.56 3.48 -0.52C3.59 -0.15 3.85 0.07 4.19 0.11C4.7 0.16 5.01 -0.22 5.26 -1.2C5.34 -1.48 5.32 -1.53 5.17 -1.53C5.06 -1.53 5.02 -1.47 4.92 -1.07C4.81 -0.66 4.63 -0.28 4.48 -0.18C4.2 0 4 -0.21 4.04 -0.64C4.06 -0.74 4.24 -1.53 4.45 -2.38C4.67 -3.24 4.84 -3.96 4.84 -3.99C4.84 -4.01 4.8 -4.07 4.76 -4.12C4.59 -4.29 4.3 -4.2 4.21 -3.95L4.16 -3.82L4.09 -3.96C3.89 -4.34 3.48 -4.5 3.01 -4.37ZM3.57 -4.12C3.76 -4.03 3.88 -3.86 3.97 -3.5L4.03 -3.27L3.76 -2.19C3.61 -1.59 3.47 -1.07 3.44 -1.02C3.37 -0.88 3.07 -0.53 2.92 -0.41C2.18 0.19 1.62 -0.2 1.74 -1.26C1.79 -1.65 2.08 -2.77 2.2 -3.07C2.57 -3.91 3.11 -4.33 3.57 -4.12Z"/>
- <path id="g59" d="M3.241 -1.582H5.383C5.474 -1.582 5.642 -1.582 5.642 -1.75C5.642 -1.925 5.481 -1.925 5.383 -1.925H3.241V-4.074C3.241 -4.165 3.241 -4.333 3.073 -4.333C2.898 -4.333 2.898 -4.172 2.898 -4.074V-1.925H0.749C0.658 -1.925 0.49 -1.925 0.49 -1.757C0.49 -1.582 0.651 -1.582 0.749 -1.582H2.898V0.567C2.898 0.658 2.898 0.826 3.066 0.826C3.241 0.826 3.241 0.665 3.241 0.567V-1.582Z"/>
- <path id="g60" d="M3.25 -4.39C2.74 -4.28 2.27 -4.02 1.88 -3.6C1.37 -3.07 1.14 -2.52 1.12 -1.74C1.1 -1.39 1.11 -1.29 1.17 -1.08C1.37 -0.26 1.9 0.15 2.66 0.11C3 0.08 3.26 0.02 3.57 -0.12C3.9 -0.27 4.13 -0.43 4.38 -0.69C4.66 -0.98 4.68 -1.02 4.6 -1.12C4.57 -1.16 4.52 -1.2 4.5 -1.2S4.39 -1.11 4.3 -1.01C3.93 -0.57 3.45 -0.27 2.92 -0.16C2.51 -0.07 2.28 -0.12 2.08 -0.31C1.78 -0.61 1.72 -1.24 1.91 -2.08L1.96 -2.28H2.14C2.46 -2.28 3.13 -2.34 3.36 -2.39C4 -2.52 4.4 -2.83 4.55 -3.28C4.61 -3.5 4.62 -3.61 4.56 -3.81C4.45 -4.17 4.1 -4.4 3.64 -4.41C3.5 -4.41 3.32 -4.41 3.25 -4.39ZM3.81 -4.15C4.09 -4.08 4.27 -3.78 4.23 -3.48C4.14 -2.91 3.67 -2.63 2.62 -2.55C2.38 -2.53 2.14 -2.52 2.1 -2.53L2.01 -2.54L2.11 -2.83C2.25 -3.23 2.41 -3.5 2.64 -3.73C3.02 -4.1 3.42 -4.24 3.81 -4.15Z"/>
- <path id="g61" d="M3.31 2.4C3.31 2.37 3.31 2.35 3.14 2.18C1.89 0.92 1.57 -0.97 1.57 -2.5C1.57 -4.24 1.95 -5.98 3.18 -7.23C3.31 -7.35 3.31 -7.37 3.31 -7.4C3.31 -7.47 3.27 -7.5 3.21 -7.5C3.11 -7.5 2.21 -6.82 1.62 -5.55C1.11 -4.45 0.99 -3.34 0.99 -2.5C0.99 -1.72 1.1 -0.51 1.65 0.62C2.25 1.85 3.11 2.5 3.21 2.5C3.27 2.5 3.31 2.47 3.31 2.4Z"/>
- <path id="g62" d="M3.34 -3.02C3.4 -3.28 3.63 -4.2 4.33 -4.2C4.38 -4.2 4.62 -4.2 4.83 -4.07C4.55 -4.02 4.35 -3.77 4.35 -3.53C4.35 -3.37 4.46 -3.18 4.73 -3.18C4.95 -3.18 5.27 -3.36 5.27 -3.76C5.27 -4.28 4.68 -4.42 4.34 -4.42C3.76 -4.42 3.41 -3.89 3.29 -3.66C3.04 -4.32 2.5 -4.42 2.21 -4.42C1.17 -4.42 0.6 -3.13 0.6 -2.88C0.6 -2.78 0.7 -2.78 0.72 -2.78C0.8 -2.78 0.83 -2.8 0.85 -2.89C1.19 -3.95 1.85 -4.2 2.19 -4.2C2.38 -4.2 2.73 -4.11 2.73 -3.53C2.73 -3.22 2.56 -2.55 2.19 -1.15C2.03 -0.53 1.68 -0.11 1.24 -0.11C1.18 -0.11 0.95 -0.11 0.74 -0.24C0.99 -0.29 1.21 -0.5 1.21 -0.78C1.21 -1.05 0.99 -1.13 0.84 -1.13C0.54 -1.13 0.29 -0.87 0.29 -0.55C0.29 -0.09 0.79 0.11 1.23 0.11C1.89 0.11 2.25 -0.59 2.28 -0.65C2.4 -0.28 2.76 0.11 3.36 0.11C4.39 0.11 4.96 -1.18 4.96 -1.43C4.96 -1.53 4.87 -1.53 4.84 -1.53C4.75 -1.53 4.73 -1.49 4.71 -1.42C4.38 -0.35 3.7 -0.11 3.38 -0.11C2.99 -0.11 2.83 -0.43 2.83 -0.77C2.83 -0.99 2.89 -1.21 3 -1.65L3.34 -3.02Z"/>
- <path id="g63" d="M3.535 -1.274H3.297C3.276 -1.12 3.206 -0.707 3.115 -0.637C3.059 -0.595 2.52 -0.595 2.422 -0.595H1.134C1.869 -1.246 2.114 -1.442 2.534 -1.771C3.052 -2.184 3.535 -2.618 3.535 -3.283C3.535 -4.13 2.793 -4.648 1.897 -4.648C1.029 -4.648 0.441 -4.039 0.441 -3.395C0.441 -3.038 0.742 -3.003 0.812 -3.003C0.98 -3.003 1.183 -3.122 1.183 -3.374C1.183 -3.5 1.134 -3.745 0.77 -3.745C0.987 -4.242 1.463 -4.396 1.792 -4.396C2.492 -4.396 2.856 -3.85 2.856 -3.283C2.856 -2.674 2.422 -2.191 2.198 -1.939L0.511 -0.273C0.441 -0.21 0.441 -0.196 0.441 0H3.325L3.535 -1.274Z"/>
- <path id="g64" d="M3.56 -7.01C3.3 -6.97 2.88 -6.84 2.62 -6.72C2.11 -6.49 1.55 -6.02 1.22 -5.56C0.43 -4.45 0.32 -2.95 0.94 -1.73C1.13 -1.37 1.32 -1.11 1.62 -0.81C2.6 0.16 4.08 0.48 5.15 -0.04C5.8 -0.37 6.27 -0.91 6.5 -1.57C6.6 -1.85 6.66 -2.19 6.64 -2.38L6.63 -2.51H6.51H6.39V-2.37C6.32 -1.3 5.7 -0.46 4.75 -0.17C4.43 -0.07 3.88 -0.07 3.53 -0.17C2.5 -0.46 1.86 -1.24 1.63 -2.47C1.56 -2.87 1.56 -3.96 1.63 -4.36C1.85 -5.53 2.44 -6.29 3.36 -6.6C4.5 -6.99 5.51 -6.52 6.05 -5.37C6.18 -5.08 6.25 -4.87 6.32 -4.48L6.37 -4.2H6.5H6.63V-5.61V-7.03L6.56 -7.04C6.49 -7.04 6.45 -7 6.18 -6.61L5.89 -6.17L5.7 -6.35C5.45 -6.58 5.29 -6.69 4.98 -6.83C4.57 -7.02 4.09 -7.08 3.56 -7.01Z"/>
- <path id="g65" d="M3.612 -2.233C3.612 -3.003 3.521 -3.556 3.199 -4.046C2.982 -4.368 2.548 -4.648 1.988 -4.648C0.364 -4.648 0.364 -2.737 0.364 -2.233S0.364 0.14 1.988 0.14S3.612 -1.729 3.612 -2.233ZM1.988 -0.056C1.666 -0.056 1.239 -0.245 1.099 -0.819C1.001 -1.232 1.001 -1.806 1.001 -2.324C1.001 -2.835 1.001 -3.367 1.106 -3.752C1.253 -4.305 1.701 -4.452 1.988 -4.452C2.366 -4.452 2.73 -4.221 2.856 -3.815C2.968 -3.437 2.975 -2.933 2.975 -2.324C2.975 -1.806 2.975 -1.288 2.884 -0.847C2.744 -0.21 2.268 -0.056 1.988 -0.056Z"/>
- <path id="g66" d="M3.7 -6.89C3.38 -6.86 3.09 -6.83 3.06 -6.83C3.02 -6.83 3.01 -6.8 3.01 -6.68V-6.54L3.26 -6.52C3.56 -6.5 3.67 -6.46 3.74 -6.32C3.78 -6.22 3.79 -6.1 3.79 -5.01V-3.81L3.66 -3.94C3.38 -4.22 3.02 -4.39 2.63 -4.41C1.79 -4.47 0.93 -3.94 0.56 -3.15C0.42 -2.85 0.36 -2.63 0.34 -2.29C0.27 -1.36 0.77 -0.47 1.57 -0.08C2.3 0.26 3.04 0.16 3.6 -0.37L3.76 -0.52V-0.2C3.76 -0.02 3.76 0.12 3.77 0.12C3.77 0.12 4.09 0.09 4.48 0.06C4.87 0.02 5.2 0 5.21 0S5.23 -0.06 5.23 -0.14V-0.29L4.98 -0.3C4.68 -0.32 4.57 -0.37 4.5 -0.51C4.46 -0.61 4.45 -0.82 4.45 -3.78V-6.95H4.37C4.32 -6.94 4.02 -6.92 3.7 -6.89ZM2.9 -4.13C3.22 -4.05 3.48 -3.85 3.67 -3.56L3.76 -3.42V-2.19V-0.97L3.64 -0.79C3.16 -0.04 2.23 0.09 1.66 -0.48C1.46 -0.67 1.34 -0.92 1.25 -1.25C1.19 -1.48 1.19 -1.59 1.19 -2.15C1.19 -2.84 1.23 -3.06 1.4 -3.41C1.68 -3.99 2.31 -4.29 2.9 -4.13Z"/>
- <path id="g67" d="M3.83 -7C2.87 -6.84 2 -6.32 1.43 -5.55C1.21 -5.26 0.96 -4.74 0.86 -4.39C0.61 -3.52 0.69 -2.68 1.09 -1.85C1.7 -0.6 3 0.21 4.39 0.21C5.73 0.21 6.89 -0.75 7.1 -2.05C7.12 -2.17 7.13 -2.32 7.13 -2.39C7.12 -2.51 7.11 -2.51 7 -2.51H6.88L6.85 -2.27C6.8 -1.66 6.58 -1.19 6.17 -0.78C5.92 -0.52 5.67 -0.37 5.36 -0.25C4.69 0 3.98 -0.04 3.29 -0.39C2.48 -0.79 2 -1.48 1.81 -2.54C1.74 -2.92 1.74 -3.91 1.81 -4.29C2.02 -5.42 2.58 -6.18 3.49 -6.54C3.85 -6.68 4.07 -6.72 4.5 -6.72C4.84 -6.72 4.92 -6.71 5.13 -6.64C5.46 -6.53 5.72 -6.37 5.97 -6.12C6.42 -5.69 6.69 -5.13 6.81 -4.41L6.85 -4.2H6.98H7.12V-5.61V-7.03L7.04 -7.04C6.97 -7.04 6.93 -6.99 6.65 -6.59L6.34 -6.13L6.16 -6.31C5.84 -6.61 5.46 -6.83 5.05 -6.95C4.77 -7.03 4.18 -7.06 3.83 -7Z"/>
- <path id="g68" d="M3.98 -4.47C3.78 -4.42 3.57 -4.32 3.4 -4.18C3.27 -4.08 3.25 -4.07 3.2 -4.11C3.09 -4.19 2.72 -4.35 2.56 -4.39C1.73 -4.56 0.84 -4.06 0.64 -3.29C0.53 -2.86 0.65 -2.39 0.95 -2.07L1.06 -1.96L0.95 -1.78C0.71 -1.4 0.68 -0.95 0.86 -0.59C0.92 -0.48 1 -0.35 1.06 -0.31L1.16 -0.22L0.95 -0.12C0.7 0 0.46 0.21 0.35 0.43C0.24 0.66 0.25 0.98 0.37 1.2C0.56 1.54 1.03 1.85 1.61 2C1.88 2.08 1.95 2.08 2.48 2.08C3 2.08 3.08 2.08 3.35 2C3.93 1.85 4.4 1.54 4.58 1.2C4.86 0.68 4.57 -0.1 3.98 -0.4C3.58 -0.6 3.18 -0.66 2.22 -0.66C1.63 -0.66 1.53 -0.67 1.42 -0.72C1.2 -0.82 1.07 -1.04 1.07 -1.34C1.07 -1.52 1.17 -1.82 1.23 -1.79C1.41 -1.69 1.73 -1.56 1.86 -1.53C2.39 -1.42 2.97 -1.58 3.35 -1.96C3.76 -2.34 3.9 -2.8 3.77 -3.29C3.72 -3.49 3.59 -3.75 3.49 -3.83C3.46 -3.86 3.43 -3.9 3.43 -3.91C3.43 -3.96 3.7 -4.13 3.86 -4.18C3.95 -4.21 4.09 -4.25 4.18 -4.26L4.34 -4.28L4.28 -4.2C4.2 -4.1 4.19 -4 4.26 -3.88C4.31 -3.77 4.39 -3.73 4.51 -3.73C4.56 -3.73 4.63 -3.74 4.66 -3.76C4.74 -3.8 4.81 -3.94 4.81 -4.04C4.81 -4.16 4.71 -4.35 4.6 -4.43C4.48 -4.51 4.21 -4.53 3.98 -4.47ZM2.56 -4.1C2.7 -4.03 2.87 -3.88 2.94 -3.75C3.11 -3.42 3.11 -2.5 2.94 -2.17C2.69 -1.71 2 -1.61 1.62 -1.99C1.41 -2.2 1.33 -2.54 1.36 -3.09C1.38 -3.61 1.48 -3.86 1.73 -4.03C1.96 -4.19 2.3 -4.21 2.56 -4.1ZM3.11 -0.02C3.62 0.04 3.91 0.19 4.06 0.45C4.17 0.65 4.17 0.95 4.04 1.17C3.89 1.44 3.55 1.66 3.09 1.79C2.82 1.87 2.14 1.87 1.86 1.79C1.4 1.66 1.06 1.44 0.91 1.17C0.84 1.03 0.82 0.97 0.82 0.79C0.82 0.41 1.03 0.11 1.39 0C1.52 -0.04 1.65 -0.05 2.21 -0.05C2.58 -0.05 2.99 -0.04 3.11 -0.02Z"/>
- <path id="g69" d="M4.046 -1.918C3.675 -2.352 3.563 -2.471 3.297 -2.66C2.87 -2.968 2.422 -3.087 2.037 -3.087C1.169 -3.087 0.539 -2.345 0.539 -1.505C0.539 -0.686 1.141 0.07 2.016 0.07C2.989 0.07 3.668 -0.728 3.92 -1.099C4.291 -0.665 4.403 -0.546 4.669 -0.357C5.096 -0.049 5.544 0.07 5.929 0.07C6.797 0.07 7.427 -0.672 7.427 -1.512C7.427 -2.331 6.825 -3.087 5.95 -3.087C4.977 -3.087 4.298 -2.289 4.046 -1.918ZM4.27 -1.659C4.55 -2.114 5.159 -2.821 6.013 -2.821C6.734 -2.821 7.231 -2.184 7.231 -1.512S6.685 -0.315 6.041 -0.315C5.39 -0.315 4.942 -0.847 4.27 -1.659ZM3.696 -1.358C3.416 -0.903 2.807 -0.196 1.953 -0.196C1.232 -0.196 0.735 -0.833 0.735 -1.505S1.281 -2.702 1.925 -2.702C2.576 -2.702 3.024 -2.17 3.696 -1.358Z"/>
- <path id="g70" d="M4.09 -2.3H6.88C7.02 -2.3 7.21 -2.3 7.21 -2.5S7.02 -2.7 6.88 -2.7H4.09V-5.5C4.09 -5.64 4.09 -5.83 3.89 -5.83S3.69 -5.64 3.69 -5.5V-2.7H0.89C0.75 -2.7 0.56 -2.7 0.56 -2.5S0.75 -2.3 0.89 -2.3H3.69V0.5C3.69 0.64 3.69 0.83 3.89 0.83S4.09 0.64 4.09 0.5V-2.3Z"/>
- <path id="g71" d="M4.36 -6.9C4.01 -6.88 3.67 -6.86 3.62 -6.86H3.52V-6.62V-6.39L3.78 -6.37C4.09 -6.35 4.15 -6.33 4.18 -6.24C4.2 -6.2 4.21 -5.69 4.21 -5.11V-4.06L4.11 -4.13C3.97 -4.24 3.74 -4.35 3.49 -4.43C3.29 -4.49 3.2 -4.5 2.83 -4.49C2.35 -4.49 2.13 -4.45 1.78 -4.31C1.46 -4.18 1.23 -4.03 1 -3.81C0.35 -3.14 0.2 -2.03 0.64 -1.12C0.9 -0.59 1.34 -0.23 2 -0.04C2.23 0.02 2.32 0.03 2.71 0.04C3.09 0.04 3.17 0.03 3.37 -0.02C3.62 -0.1 3.83 -0.2 4.02 -0.33L4.15 -0.42V-0.17V0.06L4.62 0.04C4.89 0.03 5.3 0.02 5.54 0.01L5.99 0V-0.24V-0.47L5.72 -0.48C5.41 -0.5 5.36 -0.52 5.32 -0.62C5.31 -0.66 5.29 -1.98 5.29 -3.82V-6.95H5.15C5.07 -6.94 4.72 -6.92 4.36 -6.9ZM3.32 -4.11C3.58 -4.04 3.78 -3.92 3.98 -3.73L4.15 -3.55V-2.29V-1.03L4.03 -0.88C3.41 -0.1 2.26 -0.11 1.86 -0.89C1.72 -1.17 1.7 -1.37 1.7 -2.21C1.7 -2.86 1.71 -3.02 1.75 -3.18C1.89 -3.69 2.17 -3.98 2.62 -4.1C2.83 -4.16 3.1 -4.16 3.32 -4.11Z"/>
- <path id="g72" d="M4.71 -2.14C4.71 -3.42 3.71 -4.48 2.5 -4.48C1.25 -4.48 0.28 -3.39 0.28 -2.14C0.28 -0.85 1.32 0.11 2.49 0.11C3.7 0.11 4.71 -0.87 4.71 -2.14ZM2.5 -0.14C2.07 -0.14 1.63 -0.35 1.36 -0.81C1.11 -1.25 1.11 -1.86 1.11 -2.22C1.11 -2.61 1.11 -3.15 1.35 -3.59C1.62 -4.05 2.09 -4.26 2.49 -4.26C2.93 -4.26 3.36 -4.04 3.62 -3.61S3.88 -2.6 3.88 -2.22C3.88 -1.86 3.88 -1.32 3.66 -0.88C3.44 -0.43 3 -0.14 2.5 -0.14Z"/>
- <path id="g73" d="M4.72 -6.89C4.4 -6.85 4.12 -6.81 4.1 -6.79C4.07 -6.77 4.06 -6.72 4.07 -6.65L4.08 -6.54L4.36 -6.53C4.69 -6.5 4.78 -6.47 4.78 -6.37C4.78 -6.33 4.65 -5.75 4.48 -5.06L4.17 -3.82L4.09 -3.97C3.71 -4.62 2.86 -4.55 2.08 -3.81C1.44 -3.2 1.05 -2.29 1.05 -1.43C1.05 -0.88 1.19 -0.49 1.5 -0.19C1.75 0.03 1.9 0.1 2.24 0.1C2.5 0.1 2.53 0.09 2.74 0C2.9 -0.08 3.05 -0.19 3.22 -0.35C3.42 -0.54 3.46 -0.56 3.48 -0.52C3.59 -0.15 3.85 0.07 4.19 0.11C4.7 0.16 5.01 -0.22 5.26 -1.2C5.34 -1.48 5.32 -1.53 5.17 -1.53C5.06 -1.53 5.02 -1.47 4.92 -1.07C4.81 -0.66 4.63 -0.28 4.48 -0.18C4.2 0 4 -0.21 4.04 -0.64C4.06 -0.74 4.4 -2.18 4.82 -3.83C5.34 -5.91 5.56 -6.86 5.54 -6.89C5.5 -6.95 5.39 -6.95 4.72 -6.89ZM3.57 -4.12C3.76 -4.03 3.88 -3.86 3.97 -3.5L4.03 -3.27L3.76 -2.19C3.61 -1.59 3.47 -1.07 3.44 -1.02C3.37 -0.88 3.07 -0.53 2.92 -0.41C2.18 0.19 1.62 -0.2 1.74 -1.26C1.79 -1.65 2.08 -2.77 2.2 -3.07C2.57 -3.91 3.11 -4.33 3.57 -4.12Z"/>
- <path id="g74" d="M4.8 -6.89C4.46 -6.86 4.17 -6.83 4.16 -6.82C4.16 -6.82 4.14 -6.75 4.13 -6.67L4.11 -6.54L4.35 -6.52C4.49 -6.51 4.63 -6.49 4.68 -6.46C4.84 -6.39 4.84 -6.35 4.64 -5.1C4.53 -4.47 4.44 -3.93 4.43 -3.89C4.42 -3.83 4.4 -3.84 4.26 -3.99C3.85 -4.42 3.25 -4.54 2.55 -4.3C2.1 -4.15 1.86 -4 1.49 -3.62C1.05 -3.18 0.81 -2.77 0.7 -2.25C0.56 -1.52 0.74 -0.85 1.2 -0.39C1.86 0.27 2.86 0.28 3.65 -0.35L3.84 -0.5L3.79 -0.19C3.76 -0.03 3.74 0.1 3.74 0.11C3.75 0.12 5.21 0 5.22 0C5.23 -0.01 5.24 -0.07 5.25 -0.15L5.27 -0.3H5.1C4.87 -0.3 4.67 -0.35 4.62 -0.43C4.59 -0.46 4.57 -0.53 4.57 -0.59C4.57 -0.64 4.8 -2.07 5.08 -3.76C5.37 -5.45 5.6 -6.86 5.6 -6.89C5.6 -6.96 5.65 -6.96 4.8 -6.89ZM3.65 -4.12C3.89 -4.04 4.1 -3.86 4.23 -3.62L4.33 -3.44L4.12 -2.22L3.92 -1L3.81 -0.84C3.37 -0.24 2.6 0.02 2.06 -0.21C1.53 -0.46 1.35 -1.07 1.53 -2.1C1.63 -2.72 1.75 -3.07 1.97 -3.4C2.37 -4.01 3.06 -4.3 3.65 -4.12Z"/>
- <path id="g75" d="M5.376 -2.352C5.481 -2.352 5.642 -2.352 5.642 -2.527C5.642 -2.695 5.474 -2.695 5.383 -2.695H0.749C0.658 -2.695 0.49 -2.695 0.49 -2.527C0.49 -2.352 0.651 -2.352 0.756 -2.352H5.376ZM5.383 -0.812C5.474 -0.812 5.642 -0.812 5.642 -0.98C5.642 -1.155 5.481 -1.155 5.376 -1.155H0.756C0.651 -1.155 0.49 -1.155 0.49 -0.98C0.49 -0.812 0.658 -0.812 0.749 -0.812H5.383Z"/>
- <path id="g76" d="M6.59 -2.3C6.76 -2.3 6.94 -2.3 6.94 -2.5S6.76 -2.7 6.59 -2.7H1.18C1.01 -2.7 0.83 -2.7 0.83 -2.5S1.01 -2.3 1.18 -2.3H6.59Z"/>
- <path id="g77" d="M6.87 -3.27C7.02 -3.27 7.21 -3.27 7.21 -3.47S7.02 -3.67 6.88 -3.67H0.89C0.75 -3.67 0.56 -3.67 0.56 -3.47S0.75 -3.27 0.9 -3.27H6.87ZM6.88 -1.33C7.02 -1.33 7.21 -1.33 7.21 -1.53S7.02 -1.73 6.87 -1.73H0.9C0.75 -1.73 0.56 -1.73 0.56 -1.53S0.75 -1.33 0.89 -1.33H6.88Z"/>
- </defs>
- <g id="page1" transform="matrix(0.996 0 0 0.996 0 0)">
- <use x="77" xlink:href="#g64" y="63"/>
- <use x="84.2205" xlink:href="#g34" y="63"/>
- <use x="89.2192" xlink:href="#g12" y="63"/>
- <use x="91.9963" xlink:href="#g34" y="63"/>
- <use x="96.9951" xlink:href="#g7" y="63"/>
- <use x="104.243" xlink:href="#g20" y="63"/>
- <use x="108.131" xlink:href="#g33" y="63"/>
- <use x="112.575" xlink:href="#g21" y="63"/>
- <use x="116.518" xlink:href="#g20" y="63"/>
- <use x="120.406" xlink:href="#g15" y="63"/>
- <g fill="#ff0000">
- <use x="127.627" xlink:href="#g7" y="63"/>
- <use x="131.542" xlink:href="#g33" y="63"/>
- <use x="135.986" xlink:href="#g66" y="63"/>
- </g>
- <use x="141.54" xlink:href="#g14" y="63"/>
- <g fill="#0000ff">
- <use x="147.649" xlink:href="#g8" y="63"/>
- <use x="153.204" xlink:href="#g12" y="63"/>
- <use x="155.981" xlink:href="#g10" y="63"/>
- <use x="161.535" xlink:href="#g33" y="63"/>
- </g>
- <use x="165.978" xlink:href="#g14" y="63"/>
- <g fill="#ff00ff">
- <use x="172.088" xlink:href="#g11" y="63"/>
- <use x="180.419" xlink:href="#g28" y="63"/>
- <use x="185.418" xlink:href="#g68" y="63"/>
- <use x="190.417" xlink:href="#g33" y="63"/>
- <use x="194.86" xlink:href="#g9" y="63"/>
- <use x="200.137" xlink:href="#g20" y="63"/>
- <use x="204.025" xlink:href="#g28" y="63"/>
- </g>
- <use x="164.374" xlink:href="#g13" y="78.8467"/>
- <use x="174.374" xlink:href="#g29" y="81.3189"/>
- <use x="169.929" xlink:href="#g65" y="101.569"/>
- <use x="181.075" xlink:href="#g16" y="92.4579"/>
- <use x="185.519" xlink:href="#g72" y="92.4579"/>
- <use x="190.519" xlink:href="#g36" y="92.4579"/>
- <use x="196.131" xlink:href="#g35" y="92.4579"/>
- <use x="201.408" xlink:href="#g66" y="92.4579"/>
- <use x="206.962" xlink:href="#g35" y="92.4579"/>
- <use x="213.351" xlink:href="#g77" y="92.4579"/>
- <use x="227.193" xlink:href="#g69" y="79.9579"/>
- <use x="223.957" xlink:href="#g32" y="82.9578"/>
- <use x="223.907" xlink:href="#g39" y="104.486"/>
- <use x="228.327" xlink:href="#g75" y="104.486"/>
- <use x="234.466" xlink:href="#g65" y="104.486"/>
- <use x="238.452" xlink:href="#g61" y="92.4579"/>
- <use x="242.341" xlink:href="#g76" y="92.4579"/>
- <use x="250.119" xlink:href="#g57" y="92.4579"/>
- <use x="255.119" xlink:href="#g55" y="92.4579"/>
- <use x="259.008" xlink:href="#g39" y="88.329"/>
- <use x="271.904" xlink:href="#g62" y="85.6928"/>
- <use x="277.619" xlink:href="#g63" y="82.0639"/>
- <use x="281.605" xlink:href="#g39" y="82.0639"/>
- <use x="286.025" xlink:href="#g59" y="82.0639"/>
- <use x="292.164" xlink:href="#g44" y="82.0639"/>
- <rect height="0.399979" width="38.2986" x="265.128" y="89.7579"/>
- <use x="265.128" xlink:href="#g61" y="99.3174"/>
- <use x="269.017" xlink:href="#g18" y="99.3174"/>
- <use x="274.017" xlink:href="#g54" y="99.3174"/>
- <use x="281.76" xlink:href="#g70" y="99.3174"/>
- <use x="291.76" xlink:href="#g57" y="99.3174"/>
- <use x="296.76" xlink:href="#g55" y="99.3174"/>
- <use x="300.649" xlink:href="#g23" y="99.3174"/>
- <use x="77" xlink:href="#g2" y="123.706"/>
- <use x="82.6931" xlink:href="#g34" y="123.706"/>
- <use x="87.6918" xlink:href="#g9" y="123.706"/>
- <use x="92.9683" xlink:href="#g20" y="123.706"/>
- <use x="100.189" xlink:href="#g21" y="123.706"/>
- <use x="104.132" xlink:href="#g20" y="123.706"/>
- <use x="107.742" xlink:href="#g1" y="123.706"/>
- <use x="113.019" xlink:href="#g12" y="123.706"/>
- <use x="115.796" xlink:href="#g33" y="123.706"/>
- <use x="120.239" xlink:href="#g21" y="123.706"/>
- <use x="124.183" xlink:href="#g15" y="123.706"/>
- <use x="131.403" xlink:href="#g17" y="123.706"/>
- <use x="138.11" xlink:href="#g45" y="123.706"/>
- <use x="143.859" xlink:href="#g19" y="123.706"/>
- <use x="147.052" xlink:href="#g71" y="123.706"/>
- <use x="153.44" xlink:href="#g14" y="123.706"/>
- <use x="159.549" xlink:href="#g60" y="123.706"/>
- <use x="164.148" xlink:href="#g24" y="123.706"/>
- <use x="172.324" xlink:href="#g25" y="123.706"/>
- <use x="177.434" xlink:href="#g38" y="123.706"/>
- <use x="182.544" xlink:href="#g58" y="123.706"/>
- <use x="187.654" xlink:href="#g51" y="123.706"/>
- <use x="191.741" xlink:href="#g52" y="123.706"/>
- <use x="194.807" xlink:href="#g43" y="123.706"/>
- <use x="198.895" xlink:href="#g60" y="123.706"/>
- <use x="202.983" xlink:href="#g73" y="123.706"/>
- <use x="208.093" xlink:href="#g14" y="123.706"/>
- <use x="214.203" xlink:href="#g22" y="123.706"/>
- <use x="218.035" xlink:href="#g30" y="123.706"/>
- <use x="222.839" xlink:href="#g48" y="123.706"/>
- <use x="228.005" xlink:href="#g22" y="123.706"/>
- <use x="235.17" xlink:href="#g22" y="123.706"/>
- <use x="239.002" xlink:href="#g31" y="123.706"/>
- <use x="243.445" xlink:href="#g53" y="123.706"/>
- <use x="246.861" xlink:href="#g6" y="123.706"/>
- <use x="249.25" xlink:href="#g40" y="123.706"/>
- <use x="252.304" xlink:href="#g14" y="123.706"/>
- <use x="258.414" xlink:href="#g42" y="123.706"/>
- <use x="264.524" xlink:href="#g5" y="123.706"/>
- <use x="271.988" xlink:href="#g56" y="123.706"/>
- <use x="278.12" xlink:href="#g3" y="123.706"/>
- <use x="283.252" xlink:href="#g3" y="123.706"/>
- <use x="292.161" xlink:href="#g67" y="123.706"/>
- <use x="300.021" xlink:href="#g56" y="123.706"/>
- <use x="306.152" xlink:href="#g4" y="123.706"/>
- <use x="311.729" xlink:href="#g27" y="123.706"/>
- <use x="316.305" xlink:href="#g14" y="123.706"/>
- <use x="322.415" xlink:href="#g41" y="123.706"/>
- <use x="326.359" xlink:href="#g37" y="123.706"/>
- <use x="329.136" xlink:href="#g47" y="123.706"/>
- <use x="334.134" xlink:href="#g26" y="123.706"/>
- <use x="339.411" xlink:href="#g46" y="123.706"/>
- <use x="343.299" xlink:href="#g50" y="123.706"/>
- <use x="347.742" xlink:href="#g74" y="123.706"/>
- <use x="232.001" xlink:href="#g49" y="633"/>
- </g>
-</svg>
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample-wf-cmp.svg b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample-wf-cmp.svg
deleted file mode 100644
index d597c134c9a..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample-wf-cmp.svg
+++ /dev/null
@@ -1,201 +0,0 @@
-<?xml version="1.0"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="574.732pt" version="1.1" viewBox="76.7123 55.9032 275.656 574.732" width="275.656pt">
- <defs>
- <font horiz-adv-x="0" id="cmex10">
- <font-face ascent="772" descent="-2960" font-family="cmex10" units-per-em="1000"/>
- <missing-glyph d=""/>
- <glyph d="M1266 -1400L1387 -1080H1362C1323 -1184 1217 -1252 1102 -1282C1081 -1287 983 -1313 791 -1313H188L697 -716C704 -708 706 -705 706 -700C706 -698 706 -695 699 -685L233 -48H781C915 -48 1006 -62 1015 -64C1069 -72 1156 -89 1235 -139C1260 -155 1328 -200 1362 -281H1387L1266 0H84C61 0 60 -1 57 -7C56 -10 56 -29 56 -40L585 -764L67 -1371C57 -1383 57 -1388 57 -1389C57 -1400 66 -1400 84 -1400H1266Z" glyph-name="summationdisplay" horiz-adv-x="1444" unicode="&#x3458;"/>
- <glyph d="M104 -2177C136 -2175 153 -2153 153 -2128C153 -2095 128 -2079 105 -2079C81 -2079 56 -2094 56 -2129C56 -2180 106 -2222 167 -2222C319 -2222 376 -1988 447 -1698C524 -1382 589 -1063 643 -742C680 -529 717 -329 751 -200C763 -151 797 -22 836 -22C867 -22 892 -41 896 -45C863 -47 846 -69 846 -94C846 -127 871 -143 894 -143C918 -143 943 -128 943 -93C943 -39 889 0 834 0C758 0 702 -109 647 -313C644 -324 508 -826 398 -1480C372 -1633 343 -1800 310 -1939C292 -2012 246 -2200 165 -2200C129 -2200 105 -2177 104 -2177Z" glyph-name="integraldisplay" horiz-adv-x="555" unicode="&#x345A;"/>
- </font>
- <font horiz-adv-x="0" id="cmmi10">
- <font-face ascent="750" descent="-250" font-family="cmmi10" units-per-em="1000"/>
- <missing-glyph d=""/>
- <glyph d="M287 683C287 684 287 694 274 694C251 694 178 686 152 684C144 683 133 682 133 664C133 652 142 652 157 652C205 652 207 645 207 635L204 615L59 39C55 25 55 23 55 17C55 -6 75 -11 84 -11C97 -11 112 -2 118 10C123 19 168 204 174 229C208 226 290 210 290 144C290 137 290 133 287 123C285 111 283 99 283 88C283 29 323 -11 375 -11C405 -11 432 5 454 42C479 86 490 141 490 143C490 153 481 153 478 153C468 153 467 149 464 135C444 62 421 11 377 11C358 11 345 22 345 58C345 75 349 98 353 114C357 131 357 135 357 145C357 210 294 239 209 250C240 268 272 300 295 324C343 377 389 420 438 420C444 420 445 420 447 419C459 417 460 417 468 411C470 410 470 409 472 407C424 404 415 365 415 353C415 337 426 318 453 318C479 318 508 340 508 379C508 409 485 442 440 442C412 442 366 434 294 354C260 316 221 276 183 261L287 683Z" glyph-name="k" horiz-adv-x="520" unicode="k"/>
- <glyph d="M206 400H300C320 400 330 400 330 420C330 431 320 431 302 431H214C250 573 255 593 255 599C255 616 243 626 226 626C223 626 195 625 186 590L147 431H53C33 431 23 431 23 412C23 400 31 400 51 400H139C67 116 63 99 63 81C63 27 101 -11 155 -11C257 -11 314 135 314 143C314 153 306 153 302 153C293 153 292 150 287 139C244 35 191 11 157 11C136 11 126 24 126 57C126 81 128 88 132 105L206 400Z" glyph-name="t" horiz-adv-x="361" unicode="t"/>
- <glyph d="M334 302C340 328 363 420 433 420C438 420 462 420 483 407C455 402 435 377 435 353C435 337 446 318 473 318C495 318 527 336 527 376C527 428 468 442 434 442C376 442 341 389 329 366C304 432 250 442 221 442C117 442 60 313 60 288C60 278 70 278 72 278C80 278 83 280 85 289C119 395 185 420 219 420C238 420 273 411 273 353C273 322 256 255 219 115C203 53 168 11 124 11C118 11 95 11 74 24C99 29 121 50 121 78C121 105 99 113 84 113C54 113 29 87 29 55C29 9 79 -11 123 -11C189 -11 225 59 228 65C240 28 276 -11 336 -11C439 -11 496 118 496 143C496 153 487 153 484 153C475 153 473 149 471 142C438 35 370 11 338 11C299 11 283 43 283 77C283 99 289 121 300 165L334 302Z" glyph-name="x" horiz-adv-x="571" unicode="x"/>
- </font>
- <font horiz-adv-x="0" id="cmmi7">
- <font-face ascent="750" descent="-250" font-family="cmmi7" units-per-em="1000"/>
- <missing-glyph d=""/>
- <glyph d="M313 664C314 666 317 679 317 680C317 685 313 694 301 694C281 694 198 686 173 684C165 683 151 682 151 661C151 647 165 647 177 647C225 647 225 640 225 632C225 625 223 619 221 610L80 44C75 26 75 24 75 22C75 7 87 -10 109 -10C136 -10 149 10 155 32C157 36 200 212 204 226C275 219 332 196 332 144C332 139 332 134 330 124C326 109 326 104 326 93C326 22 384 -10 432 -10C529 -10 559 142 559 143C559 156 546 156 543 156C529 156 528 151 523 132C511 89 484 18 435 18C408 18 400 43 400 70C400 87 400 89 406 115C407 118 411 135 411 146C411 235 291 249 249 252C278 270 315 303 332 318C383 366 433 413 489 413C501 413 514 410 522 400C479 393 470 359 470 344C470 322 487 307 510 307C537 307 567 329 567 371C567 404 543 441 490 441C433 441 381 400 330 353C288 313 255 282 214 265L313 664Z" glyph-name="k" horiz-adv-x="607" unicode="k"/>
- <glyph d="M249 106C239 72 206 18 155 18C152 18 122 18 101 32C142 45 145 81 145 87C145 109 128 124 105 124C77 124 48 100 48 63C48 13 104 -10 153 -10C199 -10 240 19 265 61C289 8 344 -10 384 -10C499 -10 560 115 560 143C560 156 547 156 544 156C530 156 529 151 525 139C504 70 444 18 388 18C348 18 327 45 327 83C327 109 351 200 379 311C399 388 444 413 477 413C479 413 510 413 531 399C499 390 487 362 487 344C487 322 504 307 527 307S583 326 583 368C583 424 519 441 479 441C429 441 389 408 367 370C349 411 303 441 247 441C135 441 71 318 71 288C71 275 85 275 88 275C101 275 102 279 107 292C132 370 195 413 244 413C277 413 304 395 304 347C304 327 292 277 283 243L249 106Z" glyph-name="x" horiz-adv-x="647" unicode="x"/>
- </font>
- <font horiz-adv-x="0" id="cmr10">
- <font-face ascent="750" descent="-250" font-family="cmr10" units-per-em="1000"/>
- <missing-glyph d=""/>
- <glyph d="M153 209L192 665C192 698 165 716 139 716S86 698 86 665L125 210C126 195 127 187 139 187C149 187 152 192 153 209ZM192 53C192 82 168 106 139 106S86 82 86 53S110 0 139 0S192 24 192 53Z" glyph-name="exclam" horiz-adv-x="277" unicode="!"/>
- <glyph d="M331 -240C331 -237 331 -235 314 -218C189 -92 157 97 157 250C157 424 195 598 318 723C331 735 331 737 331 740C331 747 327 750 321 750C311 750 221 682 162 555C111 445 99 334 99 250C99 172 110 51 165 -62C225 -185 311 -250 321 -250C327 -250 331 -247 331 -240Z" glyph-name="parenleft" horiz-adv-x="388" unicode="("/>
- <glyph d="M289 250C289 328 278 449 223 562C163 685 77 750 67 750C61 750 57 746 57 740C57 737 57 735 76 717C174 618 231 459 231 250C231 79 194 -97 70 -223C57 -235 57 -237 57 -240C57 -246 61 -250 67 -250C77 -250 167 -182 226 -55C277 55 289 166 289 250Z" glyph-name="parenright" horiz-adv-x="388" unicode=")"/>
- <glyph d="M409 230H688C702 230 721 230 721 250S702 270 688 270H409V550C409 564 409 583 389 583S369 564 369 550V270H89C75 270 56 270 56 250S75 230 89 230H369V-50C369 -64 369 -83 389 -83S409 -64 409 -50V230Z" glyph-name="plus" horiz-adv-x="777" unicode="+"/>
- <glyph d="M294 640C294 664 294 666 271 666C209 602 121 602 89 602V571C109 571 168 571 220 597V79C220 43 217 31 127 31H95V0C130 3 217 3 257 3S384 3 419 0V31H387C297 31 294 42 294 79V640Z" glyph-name="one" horiz-adv-x="500" unicode="1"/>
- <glyph d="M127 77L233 180C389 318 449 372 449 472C449 586 359 666 237 666C124 666 50 574 50 485C50 429 100 429 103 429C120 429 155 441 155 482C155 508 137 534 102 534C94 534 92 534 89 533C112 598 166 635 224 635C315 635 358 554 358 472C358 392 308 313 253 251L61 37C50 26 50 24 50 0H421L449 174H424C419 144 412 100 402 85C395 77 329 77 307 77H127Z" glyph-name="two" horiz-adv-x="500" unicode="2"/>
- <glyph d="M687 327C702 327 721 327 721 347S702 367 688 367H89C75 367 56 367 56 347S75 327 90 327H687ZM688 133C702 133 721 133 721 153S702 173 687 173H90C75 173 56 173 56 153S75 133 89 133H688Z" glyph-name="equal" horiz-adv-x="777" unicode="="/>
- <glyph d="M117 218C117 381 199 423 252 423C261 423 324 422 359 386C318 383 312 353 312 340C312 314 330 294 358 294C384 294 404 311 404 341C404 409 328 448 251 448C126 448 34 340 34 216C34 88 133 -11 249 -11C383 -11 415 109 415 119S405 129 402 129C393 129 391 125 389 119C360 26 295 14 258 14C205 14 117 57 117 218Z" glyph-name="c" horiz-adv-x="444" unicode="c"/>
- <glyph d="M471 214C471 342 371 448 250 448C125 448 28 339 28 214C28 85 132 -11 249 -11C370 -11 471 87 471 214ZM250 14C207 14 163 35 136 81C111 125 111 186 111 222C111 261 111 315 135 359C162 405 209 426 249 426C293 426 336 404 362 361S388 260 388 222C388 186 388 132 366 88C344 43 300 14 250 14Z" glyph-name="o" horiz-adv-x="500" unicode="o"/>
- <glyph d="M208 194C230 190 312 174 312 102C312 51 277 11 199 11C115 11 79 68 60 153C57 166 56 170 46 170C33 170 33 163 33 145V13C33 -4 33 -11 44 -11C49 -11 50 -10 69 9C71 11 71 13 89 32C133 -10 178 -11 199 -11C314 -11 360 56 360 128C360 181 330 211 318 223C285 255 246 263 204 271C148 282 81 295 81 353C81 388 107 429 193 429C303 429 308 339 310 308C311 299 320 299 322 299C335 299 335 304 335 323V424C335 441 335 448 324 448C319 448 317 448 304 436C301 432 291 423 287 420C249 448 208 448 193 448C71 448 33 381 33 325C33 290 49 262 76 240C108 214 136 208 208 194Z" glyph-name="s" horiz-adv-x="394" unicode="s"/>
- </font>
- <font horiz-adv-x="0" id="cmr7">
- <font-face ascent="750" descent="-250" font-family="cmr7" units-per-em="1000"/>
- <missing-glyph d=""/>
- <glyph d="M463 226H769C782 226 806 226 806 250C806 275 783 275 769 275H463V582C463 595 463 619 439 619C414 619 414 596 414 582V275H107C94 275 70 275 70 251C70 226 93 226 107 226H414V-81C414 -94 414 -118 438 -118C463 -118 463 -95 463 -81V226Z" glyph-name="plus" horiz-adv-x="877" unicode="+"/>
- <glyph d="M516 319C516 429 503 508 457 578C426 624 364 664 284 664C52 664 52 391 52 319S52 -20 284 -20S516 247 516 319ZM284 8C238 8 177 35 157 117C143 176 143 258 143 332C143 405 143 481 158 536C179 615 243 636 284 636C338 636 390 603 408 545C424 491 425 419 425 332C425 258 425 184 412 121C392 30 324 8 284 8Z" glyph-name="zero" horiz-adv-x="569" unicode="0"/>
- <glyph d="M335 636C335 663 333 664 305 664C241 601 150 600 109 600V564C133 564 199 564 254 592V82C254 49 254 36 154 36H116V0C134 1 257 4 294 4C325 4 451 1 473 0V36H435C335 36 335 49 335 82V636Z" glyph-name="one" horiz-adv-x="569" unicode="1"/>
- <glyph d="M505 182H471C468 160 458 101 445 91C437 85 360 85 346 85H162C267 178 302 206 362 253C436 312 505 374 505 469C505 590 399 664 271 664C147 664 63 577 63 485C63 434 106 429 116 429C140 429 169 446 169 482C169 500 162 535 110 535C141 606 209 628 256 628C356 628 408 550 408 469C408 382 346 313 314 277L73 39C63 30 63 28 63 0H475L505 182Z" glyph-name="two" horiz-adv-x="569" unicode="2"/>
- <glyph d="M768 336C783 336 806 336 806 361C806 385 782 385 769 385H107C94 385 70 385 70 361C70 336 93 336 108 336H768ZM769 116C782 116 806 116 806 140C806 165 783 165 768 165H108C93 165 70 165 70 140C70 116 94 116 107 116H769Z" glyph-name="equal" horiz-adv-x="877" unicode="="/>
- </font>
- <font horiz-adv-x="0" id="cmsy10">
- <font-face ascent="775" descent="-960" font-family="cmsy10" units-per-em="1000"/>
- <missing-glyph d=""/>
- <glyph d="M659 230C676 230 694 230 694 250S676 270 659 270H118C101 270 83 270 83 250S101 230 118 230H659Z" glyph-name="minus" horiz-adv-x="777" unicode="&#x3400;"/>
- </font>
- <font horiz-adv-x="0" id="cmsy7">
- <font-face ascent="782" descent="-951" font-family="cmsy7" units-per-em="1000"/>
- <missing-glyph d=""/>
- <glyph d="M578 274C525 336 509 353 471 380C410 424 346 441 291 441C167 441 77 335 77 215C77 98 163 -10 288 -10C427 -10 524 104 560 157C613 95 629 78 667 51C728 7 792 -10 847 -10C971 -10 1061 96 1061 216C1061 333 975 441 850 441C711 441 614 327 578 274ZM610 237C650 302 737 403 859 403C962 403 1033 312 1033 216S955 45 863 45C770 45 706 121 610 237ZM528 194C488 129 401 28 279 28C176 28 105 119 105 215S183 386 275 386C368 386 432 310 528 194Z" glyph-name="infinity" horiz-adv-x="1138" unicode="&#x221E;"/>
- </font>
- <font horiz-adv-x="0" id="ecbx1000">
- <font-face font-family="ecbx1000" units-per-em="1000"/>
- <missing-glyph d=""/>
- <glyph d="M120 690C84 688 51 686 45 686H36V662V639L62 637C93 635 98 633 102 624C104 619 105 489 105 308V0H129H152L174 24C187 38 198 50 199 52S205 51 211 46C228 30 258 12 283 3C306 -3 311 -4 352 -4C388 -3 400 -2 424 3C492 21 541 58 569 111C588 149 594 175 594 224S590 291 570 333C543 389 496 425 425 444C409 448 394 449 359 449C318 449 312 448 289 441C260 431 245 424 226 411L213 403V549V695H199C191 694 156 692 120 690ZM397 404C428 390 449 363 459 324C465 299 468 194 464 155C456 93 432 56 385 38C372 33 362 31 337 31C306 31 304 31 282 42C264 51 254 59 239 75L219 97V223V349L227 360C245 383 283 405 317 412C340 417 376 414 397 404Z" horiz-adv-x="638.733" unicode="b"/>
- <glyph d="M436 690C401 688 367 686 362 686H352V662V639L378 637C409 635 415 633 418 624C420 620 421 569 421 511V406L411 413C397 424 374 435 349 443C329 449 320 450 283 449C235 449 213 445 178 431C146 418 123 403 100 381C35 314 20 203 64 112C90 59 134 23 200 4C223 -2 232 -3 271 -4C309 -4 317 -3 337 2C362 10 383 20 402 33L415 42V17V-6L462 -4C489 -3 530 -2 554 -1L599 0V24V47L572 48C541 50 536 52 532 62C531 66 529 198 529 382V695H515C507 694 472 692 436 690ZM332 411C358 404 378 392 398 373L415 355V229V103L403 88C341 10 226 11 186 89C172 117 170 137 170 221C170 286 171 302 175 318C189 369 217 398 262 410C283 416 310 416 332 411Z" horiz-adv-x="638.733" unicode="d"/>
- <glyph d="M132 690C96 688 63 686 57 686H48V662V639L74 637C105 635 110 633 114 624C116 619 117 499 117 332V48H82H48V24V1H171H295V24V48H260H225V371V695H211C203 694 168 692 132 690Z" horiz-adv-x="319.366" unicode="l"/>
- <glyph d="M235 451C207 447 164 432 141 419C130 413 110 397 97 383C76 363 70 354 59 330C39 289 34 268 34 219C34 186 36 174 41 155C60 89 105 39 169 14C209 0 231 -4 286 -4C340 -4 362 0 402 14C466 39 511 89 530 155C536 174 537 186 537 219C537 268 532 289 512 330C501 354 495 363 474 383C461 397 441 413 430 419C380 448 303 460 235 451ZM316 415C339 410 364 396 377 382C401 355 406 334 408 249C410 182 407 136 398 108C389 77 367 54 334 41C320 36 311 34 286 34C260 34 251 36 237 41C175 66 159 110 163 249C165 334 170 355 194 382C220 411 271 424 316 415Z" horiz-adv-x="574.86" unicode="o"/>
- </font>
- <font horiz-adv-x="0" id="eccc1000">
- <font-face font-family="eccc1000" units-per-em="1000"/>
- <missing-glyph d=""/>
- <glyph d="M383 700C287 684 200 632 143 555C121 526 96 474 86 439C61 352 69 268 109 185C170 60 300 -21 439 -21C573 -21 689 75 710 205C712 217 713 232 713 239C712 251 711 251 700 251H688L685 227C680 166 658 119 617 78C592 52 567 37 536 25C469 0 398 4 329 39C248 79 200 148 181 254C174 292 174 391 181 429C202 542 258 618 349 654C385 668 407 672 450 672C484 672 492 671 513 664C546 653 572 637 597 612C642 569 669 513 681 441L685 420H698H712V561V703L704 704C697 704 693 699 665 659L634 613L616 631C584 661 546 683 505 695C477 703 418 706 383 700Z" horiz-adv-x="785.919" unicode="C"/>
- <glyph d="M233 700C159 683 102 632 80 564C71 534 71 482 80 454C97 407 135 363 181 340C201 330 221 324 294 307C348 294 388 283 399 277C409 273 424 261 434 252C489 197 489 106 433 50C401 19 367 7 314 10C273 12 238 20 204 36C184 46 174 53 154 73C119 108 105 142 100 199L97 224L88 225C83 225 77 224 75 221S72 186 72 99L73 -19L81 -20C88 -21 91 -17 112 14L134 51L146 41C190 3 245 -16 316 -20C348 -21 357 -21 379 -15C419 -5 446 9 476 39C497 60 504 69 516 93C546 156 546 217 516 279C504 303 497 313 477 332C439 370 417 380 311 405C218 426 198 434 175 457C122 508 122 587 176 638C206 666 244 679 290 676C345 673 381 658 415 623C450 589 467 552 478 488L483 459H495H507V581V703L499 704C492 704 489 701 469 669C457 649 447 633 447 633C446 632 439 639 430 647C400 675 361 694 318 701C293 705 255 705 233 700Z" horiz-adv-x="610.962" unicode="S"/>
- <glyph d="M291 527C288 524 249 424 203 305S116 82 112 74C97 48 65 27 40 27C33 27 33 25 33 14V1H111H189V14C189 24 188 27 184 27C175 27 158 37 153 46C143 62 145 78 163 125L179 168L283 167H386L407 114C418 85 427 58 427 54C427 37 411 27 386 27C376 27 376 26 376 14V1H477H578V13V26L553 27C525 29 517 34 506 52C503 59 460 167 412 293S322 524 319 527C317 530 311 532 305 532C300 532 294 530 291 527ZM330 314L375 195H282H189L195 210C198 217 219 271 241 328C263 386 282 433 283 433C283 433 305 379 330 314Z" horiz-adv-x="613.184" unicode="a"/>
- <glyph d="M42 500V487H60C88 487 104 482 110 472C116 459 116 55 110 42C104 32 88 27 60 27H42V13V0H246H451L452 14C453 22 457 59 460 97C464 135 467 173 468 181L470 195H456H443L441 178C434 115 420 81 393 58C379 46 350 33 328 30C317 28 284 27 255 27C202 27 201 27 194 34L186 41V252C186 415 187 463 190 469C196 481 208 485 244 487L277 488V501V513H159H42Z" horiz-adv-x="513.208" unicode="l"/>
- <glyph d="M48 501V487H66C94 487 110 482 116 472C119 465 120 434 120 271C120 56 120 59 100 42C89 33 70 27 55 27C48 27 48 26 48 14V1H135H222V14C222 26 222 27 215 27C200 27 181 33 170 42C150 59 150 56 151 276L152 473L245 241C296 113 339 6 342 4C347 0 357 -1 364 2C366 4 411 112 464 244L559 483V267C560 83 559 49 555 42C550 32 533 27 506 27H487V14V1H591H695V14V27H677C649 27 632 32 627 42C621 55 621 459 627 472C632 482 649 487 677 487H695V501V514H623C551 514 551 514 546 508C544 504 504 405 457 289C411 172 372 76 372 76C371 75 332 172 285 291C237 410 196 509 195 511C192 513 170 514 119 514H48Z" horiz-adv-x="746.485" unicode="m"/>
- <glyph d="M45 501V487H63C91 487 107 482 113 472C119 459 119 55 113 42C107 32 91 27 63 27H45V14V1H153H261V14V27H243C233 27 219 28 211 30C189 36 189 36 189 142V234H270C341 234 354 235 375 240C482 268 533 362 481 438C461 468 420 495 377 507C361 512 341 513 202 514L45 515ZM332 484C356 480 374 471 389 457C409 439 414 423 414 373C414 322 409 307 389 289C362 264 339 258 250 258H186V366V473L194 480C201 487 201 487 258 487C289 487 322 486 332 484Z" horiz-adv-x="557.642" unicode="p"/>
- <glyph d="M171 526C146 521 115 504 94 484C35 424 36 337 98 280C124 255 144 246 220 229C256 220 291 211 298 207C315 198 332 181 342 160C349 145 350 139 350 115C350 92 349 86 342 71C318 23 272 4 207 15C127 30 86 72 78 146C76 166 76 167 67 168C62 168 56 167 54 164S51 136 51 73L52 -13H60C65 -13 71 -8 82 6C90 16 97 27 99 29C101 33 104 31 116 23C146 1 183 -11 229 -14C282 -17 320 -4 355 30C419 93 418 194 353 255C325 281 306 289 230 307C186 317 159 324 151 329C111 353 93 396 107 438C111 452 116 460 130 474C146 490 152 494 169 499C218 514 272 501 307 466C329 444 343 415 351 376L357 347H369H380V438V528H373C367 528 362 523 351 508C343 498 335 487 334 485C332 481 328 483 316 493C278 523 222 536 171 526Z" horiz-adv-x="457.666" unicode="s"/>
- </font>
- <font horiz-adv-x="0" id="ecrm1000">
- <font-face font-family="ecrm1000" units-per-em="1000"/>
- <missing-glyph d=""/>
- <glyph d="M115 101C81 85 73 40 101 14C121 -4 151 -5 170 12L177 19V1C177 -56 156 -112 117 -158C107 -170 99 -181 99 -183C99 -188 111 -196 115 -194C126 -190 157 -147 173 -115C192 -76 198 -53 200 -13C204 55 181 101 140 104C131 105 121 103 115 101Z" horiz-adv-x="277.71" unicode=","/>
- <glyph d="M259 653C242 637 203 618 175 611C162 607 138 604 121 603L90 601V586V572H109C142 572 179 580 214 594C219 596 219 582 219 327C219 119 218 57 215 51C208 36 194 32 143 30L96 29V15V1H257H418V15V29L371 30C320 32 306 36 298 51C296 57 295 125 295 357C295 521 294 658 293 660C289 669 273 666 259 653Z" horiz-adv-x="499.878" unicode="1"/>
- <glyph d="M115 425C102 418 96 412 90 399C77 374 87 344 115 330C157 309 205 357 184 399C170 426 139 438 115 425ZM115 100C102 93 96 87 90 74C77 49 87 19 115 5C157 -16 205 32 184 74C170 101 139 112 115 100Z" horiz-adv-x="277.71" unicode=":"/>
- <glyph d="M356 701C330 697 288 684 262 672C211 649 155 602 122 556C43 445 32 295 94 173C113 137 132 111 162 81C260 -16 408 -48 515 4C580 37 627 91 650 157C660 185 666 219 664 238L663 251H651H639V237C632 130 570 46 475 17C443 7 388 7 353 17C250 46 186 124 163 247C156 287 156 396 163 436C185 553 244 629 336 660C450 699 551 652 605 537C618 508 625 487 632 448L637 420H650H663V561V703L656 704C649 704 645 700 618 661L589 617L570 635C545 658 529 669 498 683C457 702 409 708 356 701Z" horiz-adv-x="722.046" unicode="C"/>
- <glyph d="M33 665V651L71 649C113 647 124 644 131 631C137 619 137 61 131 48C124 35 113 32 71 30L33 29V15V1H192H352V15V29L304 30C251 32 236 36 229 51C226 56 225 91 225 192V325L291 324C365 322 374 320 393 302C407 287 412 273 414 235L416 207H429H442V340V472H429H416L414 444C412 407 407 392 393 377C374 359 365 357 291 356L225 354V491C225 571 227 632 228 636C233 649 245 651 352 649C455 648 472 646 500 631C547 608 566 569 579 469L581 454H595H608L607 465C606 472 600 517 594 567S583 663 582 669L580 680H306H33Z" horiz-adv-x="652.618" unicode="F"/>
- <glyph d="M173 443C113 430 73 394 70 347C68 332 69 328 75 319C87 302 97 296 115 296C171 296 180 373 126 387L116 390L127 398C154 419 216 430 247 420C279 409 303 385 316 352C321 339 323 327 324 299L325 262L302 260C230 255 180 243 137 223C91 201 59 168 47 128C29 68 59 20 130 -1C160 -11 204 -14 229 -9C266 -1 311 31 327 61L333 73L336 58C342 37 350 22 364 10C401 -20 454 -6 480 39C488 55 489 57 490 100L491 144H477H463V106C463 85 462 62 460 55C451 22 417 16 401 46C396 54 395 69 394 194L392 332L381 355C348 425 261 462 173 443ZM324 170C323 88 320 79 289 47C263 21 244 13 207 13C185 13 179 15 166 21C94 59 110 166 195 209C225 224 277 236 311 237H325Z" horiz-adv-x="499.878" unicode="a"/>
- <glyph d="M96 689C64 686 35 683 32 683C28 683 27 680 27 668V654L52 652C82 650 93 646 100 632C105 622 105 600 105 310V0H118H132L143 20C149 31 157 45 160 50L166 60L178 46C221 -3 272 -20 339 -7C404 5 462 51 493 113C508 143 514 166 516 200C521 268 497 333 450 380C375 456 262 462 190 396L171 378V537V695H163C158 694 128 692 96 689ZM351 406C388 388 412 354 425 305C431 281 431 271 431 215C431 160 430 148 425 128C408 67 373 29 322 16C268 2 213 27 184 78L174 94V217V339L183 352C221 410 295 433 351 406Z" horiz-adv-x="555.42" unicode="b"/>
- <glyph d="M370 689C338 686 309 683 306 683C302 683 301 680 301 668V654L326 652C356 650 367 646 374 632C378 622 379 610 379 501V381L366 394C338 422 302 439 263 441C179 447 93 394 56 315C42 285 36 263 34 229C27 136 77 47 157 8C230 -26 304 -16 360 37L376 52V20C376 2 376 -12 377 -12C377 -12 409 -9 448 -6C487 -2 520 0 521 0S523 6 523 14V29L498 30C468 32 457 37 450 51C446 61 445 82 445 378V695H437C432 694 402 692 370 689ZM290 413C322 405 348 385 367 356L376 342V219V97L364 79C316 4 223 -9 166 48C146 67 134 92 125 125C119 148 119 159 119 215C119 284 123 306 140 341C168 399 231 429 290 413Z" horiz-adv-x="555.42" unicode="d"/>
- <glyph d="M204 446C188 443 157 432 139 422C100 401 60 354 43 308C-13 157 84 -2 237 -11C313 -15 383 29 409 98C417 120 415 129 402 129C392 129 391 128 384 108C366 62 332 31 287 19C228 3 164 35 135 94C120 124 114 150 112 196L110 231H261C429 231 415 229 415 254C415 297 402 344 380 377C363 402 347 416 320 429C287 445 239 452 204 446ZM276 414C317 393 340 347 345 282L347 255H229H111L112 262C113 266 114 277 116 287C122 342 151 392 189 412C216 426 250 427 276 414Z" horiz-adv-x="444.336" unicode="e"/>
- <glyph d="M398 447C378 442 357 432 340 418C327 408 325 407 320 411C309 419 272 435 256 439C173 456 84 406 64 329C53 286 65 239 95 207L106 196L95 178C71 140 68 95 86 59C92 48 100 35 106 31L116 22L95 12C70 0 46 -21 35 -43C24 -66 25 -98 37 -120C56 -154 103 -185 161 -200C188 -208 195 -208 248 -208C300 -208 308 -208 335 -200C393 -185 440 -154 458 -120C486 -68 457 10 398 40C358 60 318 66 222 66C163 66 153 67 142 72C120 82 107 104 107 134C107 152 117 182 123 179C141 169 173 156 186 153C239 142 297 158 335 196C376 234 390 280 377 329C372 349 359 375 349 383C346 386 343 390 343 391C343 396 370 413 386 418C395 421 409 425 418 426L434 428L428 420C420 410 419 400 426 388C431 377 439 373 451 373C456 373 463 374 466 376C474 380 481 394 481 404C481 416 471 435 460 443C448 451 421 453 398 447ZM256 410C270 403 287 388 294 375C311 342 311 250 294 217C269 171 200 161 162 199C141 220 133 254 136 309C138 361 148 386 173 403C196 419 230 421 256 410ZM311 2C362 -4 391 -19 406 -45C417 -65 417 -95 404 -117C389 -144 355 -166 309 -179C282 -187 214 -187 186 -179C140 -166 106 -144 91 -117C84 -103 82 -97 82 -79C82 -41 103 -11 139 0C152 4 165 5 221 5C258 5 299 4 311 2Z" horiz-adv-x="499.878" unicode="g"/>
- <glyph d="M102 689C70 686 41 683 39 683S36 678 36 668V654L59 652C88 650 99 646 106 632C111 622 111 602 111 337C111 15 113 38 87 33C78 31 63 30 54 30H36V15V1H144H252V15V30H235C205 30 187 35 182 45C178 52 177 97 177 374V695H169C164 694 134 692 102 689Z" horiz-adv-x="277.71" unicode="l"/>
- <glyph d="M100 436C69 433 41 430 38 430C34 430 33 427 33 415V401L58 399C88 397 99 393 106 379C110 369 111 355 111 211C111 30 112 38 87 33C78 31 63 30 52 30H33V15V1H146H258V15V30H239C208 30 190 35 185 45C178 57 178 271 185 302C191 330 204 357 223 377C263 422 335 431 365 396C386 372 386 371 387 204C388 31 389 38 364 33C355 31 340 30 329 30H310V15V1H423H536V15V30H516C485 30 467 35 462 45C455 57 455 271 462 302C468 330 481 357 500 377C541 422 612 431 642 396C663 372 663 371 664 204C665 31 666 38 641 33C632 31 617 30 606 30H587V15V1H700H813V15V30H793C765 30 744 35 739 43C737 48 735 88 734 198C733 341 732 348 726 364C713 400 691 422 657 434C635 441 593 444 568 439C528 432 484 399 464 363C456 350 454 349 453 353C438 399 418 420 380 434C358 441 316 444 291 439C250 431 205 398 184 359L174 341V392V442H166C161 442 132 439 100 436Z" horiz-adv-x="833.13" unicode="m"/>
- <glyph d="M97 436C66 433 38 430 35 430C31 430 30 427 30 415V401L55 399C85 397 96 393 103 379C107 369 108 355 108 211C108 30 109 38 84 33C75 31 60 30 49 30H30V15V1H143H255V15V30H236C205 30 187 35 182 45C175 57 175 271 182 302C188 330 201 357 220 377C260 422 332 431 362 396C383 372 383 371 384 204C385 31 386 38 361 33C352 31 337 30 326 30H307V15V1H420H532V15V30H513C485 30 464 35 459 43C457 48 455 88 454 198C453 341 452 348 446 364C428 413 392 438 333 441C300 443 275 439 248 425C222 411 194 384 181 359L171 341V392V442H163C158 442 129 439 97 436Z" horiz-adv-x="555.42" unicode="n"/>
- <glyph d="M205 444C97 419 21 316 28 201C30 164 35 143 53 109C111 -8 260 -47 370 25C412 53 449 105 462 155C470 184 471 226 465 257C444 366 359 444 255 447C235 448 217 447 205 444ZM295 415C343 396 374 352 382 289C386 256 386 180 381 149C371 87 348 50 305 28C248 0 177 18 142 71C118 108 109 156 112 242C114 301 117 320 133 352C149 385 182 412 218 421C237 426 276 423 295 415Z" horiz-adv-x="499.878" unicode="o"/>
- <glyph d="M93 436C62 433 35 430 32 430C28 430 27 427 27 415V401L52 399C82 397 93 393 100 379C104 369 105 355 105 211C105 30 106 38 81 33C72 31 57 30 46 30H27V15V1H147H268V15V29L232 30C193 32 181 36 175 48C169 59 170 248 176 285C189 365 225 412 279 417C296 419 296 419 289 413C285 411 280 404 278 398C270 379 274 361 290 346C297 339 301 338 317 338S337 339 344 346C367 367 366 398 341 421C324 437 313 441 286 441C263 441 258 440 240 431C214 418 193 395 177 363L165 338V390V442H157C152 442 123 439 93 436Z" horiz-adv-x="391.571" unicode="r"/>
- <glyph d="M148 445C111 439 76 420 59 399C54 393 47 380 42 371C31 347 31 307 41 284C51 263 66 246 87 232C112 215 132 208 190 197C245 185 265 178 284 160C306 138 313 112 307 80C300 47 275 24 236 16C146 -2 90 37 65 138C58 166 57 167 49 168C44 168 38 167 36 164C33 161 33 137 33 74L34 -10L42 -11C48 -12 53 -8 68 10L88 33L99 22C127 -2 165 -14 213 -11C248 -8 276 0 299 14C321 28 331 39 343 63C369 114 360 174 321 215C291 247 269 257 194 272C137 284 117 292 99 309C79 329 76 357 90 385C102 409 133 424 179 426C255 431 298 395 306 319L308 299H320H332V373V447L325 448C320 448 314 445 302 433L287 418L275 426C254 440 233 446 197 447C179 447 156 447 148 445Z" horiz-adv-x="394.348" unicode="s"/>
- <glyph d="M142 581C133 493 90 433 32 425C18 423 18 423 18 412V400H60H102V251C102 164 103 96 105 87C114 37 149 1 198 -8C257 -21 300 3 322 64C327 79 329 91 330 131L331 180H318H304L303 133C301 81 298 64 283 41C264 11 224 6 198 31C173 55 171 68 171 249V400H242H313V415V430H242H171V522V614H158H145Z" horiz-adv-x="388.794" unicode="t"/>
- <glyph d="M100 436C67 433 38 430 35 430C31 430 30 427 30 415V400H48C75 399 93 394 100 384C106 376 106 372 108 229C110 84 110 82 116 65C131 29 155 8 193 -3C211 -9 222 -10 254 -10C292 -10 294 -10 313 0C338 10 360 30 376 55L388 73V30C388 7 389 -12 390 -11C391 -11 423 -9 460 -6C497 -2 529 0 530 0S532 6 532 14V29L507 30C477 32 466 37 459 51C455 60 454 76 454 252C454 356 454 442 453 442C453 442 421 439 382 436S310 430 309 430S307 424 307 415V401L332 399C362 397 373 393 380 379C384 369 385 357 385 255C385 129 383 115 366 79C353 53 333 33 310 21C295 14 290 13 261 13S228 14 212 22C192 32 185 42 180 69C178 78 177 155 177 263V442H169C164 442 134 439 100 436Z" horiz-adv-x="555.42" unicode="u"/>
- <glyph d="M18 414V400H35C71 400 86 392 96 367C100 359 135 274 175 176L247 0L228 -45C203 -108 188 -136 170 -154C147 -178 125 -186 98 -182C91 -181 81 -177 75 -174L65 -168L78 -161C95 -153 103 -139 101 -119C98 -83 54 -69 28 -96C20 -104 19 -107 19 -125C19 -149 26 -164 44 -181S81 -206 109 -206C131 -206 136 -205 154 -196C178 -184 204 -158 221 -126C228 -113 275 -3 325 118C375 241 419 347 423 354C437 379 461 395 491 399L505 401V415V429H424H343V415C343 401 343 401 356 398C374 393 385 380 387 362C388 348 384 337 336 219C308 148 283 91 282 92C279 95 172 358 169 368C168 372 169 378 170 382C172 390 193 400 210 400H222V414V429H120H18Z" horiz-adv-x="527.649" unicode="y"/>
- </font>
- <font horiz-adv-x="0" id="ecsl1000">
- <font-face font-family="ecsl1000" units-per-em="1000"/>
- <missing-glyph d=""/>
- <glyph d="M246 443C191 432 151 404 133 366C119 335 127 307 152 298C184 287 219 314 219 349C219 361 218 366 210 374C205 379 197 385 192 387L182 390L194 398C210 409 249 421 277 423C310 426 331 419 350 399C376 373 382 338 372 284L368 263L350 261C340 260 318 257 300 256C250 250 203 237 163 218C134 204 125 197 105 178C75 148 60 119 57 87C56 68 57 64 64 49C82 13 124 -7 185 -11C220 -13 243 -8 273 6C294 17 323 42 337 61L346 73V62C346 33 364 4 387 -3C413 -11 453 1 475 25C492 44 501 64 507 99C509 115 512 131 513 136C515 144 515 144 501 144C486 144 488 148 480 99C477 83 472 63 468 55C456 29 432 19 417 34C403 47 404 55 425 186C449 324 450 340 435 370C418 405 378 434 335 444C309 449 272 449 246 443ZM364 237C364 236 359 208 353 175C341 101 334 84 305 55C273 23 227 6 190 14C167 19 152 30 142 50C135 64 134 69 136 85C141 148 193 201 271 223C302 232 364 241 364 237Z" horiz-adv-x="499.878" unicode="a"/>
- <glyph d="M480 689C446 686 417 683 416 682C416 682 414 675 413 667L411 654L435 652C449 651 463 649 468 646C484 639 484 635 464 510C453 447 444 393 443 389C442 383 440 384 426 399C385 442 325 454 255 430C210 415 186 400 149 362C105 318 81 277 70 225C56 152 74 85 120 39C186 -27 286 -28 365 35L384 50L379 19C376 3 374 -10 374 -11C375 -12 521 0 522 0C523 1 524 7 525 15L527 30H510C487 30 467 35 462 43C459 46 457 53 457 59C457 64 480 207 508 376C537 545 560 686 560 689C560 696 565 696 480 689ZM365 412C389 404 410 386 423 362L433 344L412 222L392 100L381 84C337 24 260 -2 206 21C153 46 135 107 153 210C163 272 175 307 197 340C237 401 306 430 365 412Z" horiz-adv-x="555.42" unicode="d"/>
- <glyph d="M266 444C223 434 184 413 150 380C112 343 85 300 70 250C63 227 62 219 62 182C62 144 62 137 70 115C91 52 143 5 206 -7C294 -26 384 18 429 103C436 117 437 120 433 124C431 127 425 129 421 129C414 129 411 127 405 115C381 67 338 32 289 19C239 6 187 25 163 66C150 88 144 107 142 138C140 160 144 204 149 225L151 231H301H451L455 238C457 243 458 260 459 289C459 326 458 335 452 354C439 395 409 425 367 439C342 448 292 450 266 444ZM347 414C366 403 376 391 384 369C393 344 395 316 393 281L390 255H273C209 255 156 256 156 257C156 263 166 296 173 313C194 366 240 410 283 421C301 426 333 422 347 414Z" horiz-adv-x="444.336" unicode="e"/>
- <glyph d="M212 689C178 686 149 683 148 682C148 682 147 675 146 668L143 654L168 652C196 650 208 645 212 634C216 621 122 53 113 43C107 35 86 30 58 30C40 30 39 30 38 20C33 0 24 1 146 1C245 1 255 1 255 6C255 9 256 15 257 20L259 29L231 30C215 31 201 33 198 34C184 39 184 35 239 367C268 541 292 686 292 689C292 696 297 696 212 689Z" horiz-adv-x="277.71" unicode="l"/>
- <glyph d="M167 436C132 433 104 430 103 429C102 429 101 422 100 415L98 401L122 399C136 398 150 396 155 394C172 386 172 385 143 214C129 127 115 52 113 48C108 36 95 32 64 30C48 29 36 28 36 27C35 26 34 20 33 13L31 1H143H255L257 12C258 17 258 24 258 25C258 27 248 29 231 30C215 31 201 33 198 34C185 39 185 47 205 167C216 230 228 289 231 299C252 358 305 406 361 416C414 425 439 405 439 352C439 325 397 62 390 48C385 36 372 32 341 30C325 29 313 28 313 27C312 26 311 20 310 13L308 1H420H532L534 12C535 17 535 24 535 25C535 27 525 29 508 30C492 31 478 33 475 34C462 39 462 45 486 187C505 299 509 327 508 347C505 407 470 438 403 441C368 443 342 438 312 422C288 409 252 377 237 355C230 345 228 343 230 349C233 364 243 429 243 436S251 443 167 436Z" horiz-adv-x="555.42" unicode="n"/>
- <glyph d="M227 446C144 435 87 378 87 309C87 290 88 284 96 268C115 231 147 213 224 196C291 182 306 174 320 146C329 127 330 112 322 86C307 40 261 12 198 12C130 11 95 52 88 136C87 150 85 162 83 164C80 169 64 169 62 166C58 160 32 -3 34 -7C38 -17 49 -12 72 10L94 32L110 18C135 -5 152 -10 201 -10C237 -10 245 -8 266 -2C326 17 365 60 378 121C386 160 377 193 350 222C326 248 303 259 240 272C186 283 165 291 152 306C137 325 135 345 147 371C162 405 207 427 263 427C301 427 330 415 345 393C355 378 362 348 360 325C359 313 359 304 361 302C365 297 381 296 383 300C386 305 406 431 405 439C404 452 394 450 375 435C358 421 351 418 347 424C344 430 318 441 301 445C286 448 246 449 227 446Z" horiz-adv-x="394.348" unicode="s"/>
- <glyph d="M240 587C218 498 163 432 102 425C89 423 87 422 87 416C87 413 86 407 85 405C83 401 88 400 126 400C149 400 168 399 168 398S157 331 144 252C116 86 115 71 130 41C147 6 178 -9 225 -10C251 -10 256 -9 271 -2C300 12 330 49 343 88C346 98 351 119 353 135C356 151 359 167 360 172C361 180 361 180 348 180C340 180 334 180 334 179S330 159 326 136C311 53 276 9 230 16C214 18 204 26 196 42C184 66 186 85 213 250L238 400H309H379L380 407C381 410 382 417 383 422L385 430H314C275 430 243 431 243 432C243 434 270 595 272 606C274 614 274 614 261 614H247Z" horiz-adv-x="388.794" unicode="t"/>
- </font>
- <font horiz-adv-x="0" id="ecss1000">
- <font-face font-family="ecss1000" units-per-em="1000"/>
- <missing-glyph d=""/>
- <glyph d="M194 461C176 459 142 450 125 443C101 433 75 418 75 414C75 405 81 354 82 353S88 355 95 359C134 386 177 400 224 401C259 401 271 397 291 374C311 352 316 333 318 287L319 247L285 245C184 239 107 213 71 174C49 151 43 133 46 103C50 50 82 4 124 -7C167 -20 255 -4 305 25L322 35V17V0H359H397V157C397 330 396 334 378 373C366 398 331 435 307 446C275 461 236 466 194 461ZM319 152C319 120 317 110 313 100C293 56 205 36 151 64C137 71 121 91 118 103C113 129 125 148 153 162C186 179 246 191 294 192H319Z" horiz-adv-x="480.438" unicode="a"/>
- <glyph d="M196 459C137 445 80 394 54 331C38 293 34 273 34 227C34 176 39 156 60 111C73 84 79 76 103 52C133 22 156 7 191 -2C250 -21 329 -9 388 26L408 38L407 53C407 61 406 76 405 86L403 104L381 91C328 56 259 42 214 56C188 64 172 75 151 97C125 125 110 159 103 205L102 219H257H412V235C412 277 399 339 385 368C355 427 305 460 242 462C226 463 207 461 196 459ZM284 388C306 377 324 359 336 335C344 320 355 286 355 278C355 277 299 277 231 277H107L110 283C127 341 162 382 205 396C226 403 261 399 284 388Z" horiz-adv-x="444.336" unicode="e"/>
- <glyph d="M223 729C181 718 142 684 120 641C102 604 99 584 99 509V445H61H24V415V385H61H99V192V0H137H174V192V385H228H283V415V445H227H171L172 529C173 604 173 613 178 624C198 664 248 680 305 665C318 662 332 658 336 657C343 655 343 655 343 689V722L330 725C294 735 250 737 223 729Z" horiz-adv-x="305.481" unicode="f"/>
- <glyph d="M72 638V593H117H162V638V683H117H72ZM81 222V0H118H156V222V445H118H81Z" horiz-adv-x="238.831" unicode="i"/>
- <glyph d="M257 452C227 445 202 431 176 406L153 383V417V451H117H81V225V0H120H159L160 145C161 266 162 293 166 306C183 361 210 390 250 393C286 397 324 383 338 361C354 337 355 328 355 157V0H394H433V163C433 339 432 357 417 389C397 433 353 458 295 457C284 457 267 455 257 452Z" horiz-adv-x="516.541" unicode="n"/>
- <glyph d="M274 451C231 440 195 417 167 383L152 364L151 408L150 451H115H81V225V0H118H156L157 127L158 254L166 274C183 318 209 350 245 369C264 379 295 388 312 388H322V423V457H309C302 457 286 454 274 451Z" horiz-adv-x="341.583" unicode="r"/>
- <glyph d="M151 460C96 450 58 423 41 380C36 366 34 356 34 332C34 306 35 300 42 285C58 252 95 220 133 208C143 204 169 198 191 194C248 182 268 171 280 146C295 113 280 78 246 62C232 56 226 55 191 55C160 56 146 57 126 62C99 70 63 85 48 96L39 102L36 86C33 70 27 35 27 34C27 31 64 14 87 6C125 -6 150 -10 197 -10C229 -10 243 -9 257 -4C312 11 345 46 355 98C364 145 350 188 315 222C287 248 263 259 201 272C173 277 146 285 139 288C95 310 94 370 137 391C150 398 155 398 197 398C247 398 270 394 309 376C323 370 329 368 331 370C332 372 335 384 337 397C339 409 341 422 342 426C343 431 340 433 323 440C287 455 257 460 210 462C186 462 160 462 151 460Z" horiz-adv-x="383.24" unicode="s"/>
- </font>
- <font horiz-adv-x="0" id="ecti1000">
- <font-face font-family="ecti1000" units-per-em="1000"/>
- <missing-glyph d=""/>
- <glyph d="M301 437C265 428 233 407 200 372C140 311 105 225 105 143C105 88 119 49 150 19C175 -3 190 -10 224 -10C250 -10 253 -9 274 0C290 8 305 19 322 35C342 54 346 56 348 52C359 15 385 -7 419 -11C470 -16 501 22 526 120C534 148 532 153 517 153C506 153 502 147 492 107C481 66 463 28 448 18C420 0 400 21 404 64C406 74 424 153 445 238C467 324 484 396 484 399C484 401 480 407 476 412C459 429 430 420 421 395L416 382L409 396C389 434 348 450 301 437ZM357 412C376 403 388 386 397 350L403 327L376 219C361 159 347 107 344 102C337 88 307 53 292 41C218 -19 162 20 174 126C179 165 208 277 220 307C257 391 311 433 357 412Z" horiz-adv-x="510.986" unicode="a"/>
- <glyph d="M472 689C440 685 412 681 410 679C407 677 406 672 407 665L408 654L436 653C469 650 478 647 478 637C478 633 465 575 448 506L417 382L409 397C371 462 286 455 208 381C144 320 105 229 105 143C105 88 119 49 150 19C175 -3 190 -10 224 -10C250 -10 253 -9 274 0C290 8 305 19 322 35C342 54 346 56 348 52C359 15 385 -7 419 -11C470 -16 501 22 526 120C534 148 532 153 517 153C506 153 502 147 492 107C481 66 463 28 448 18C420 0 400 21 404 64C406 74 440 218 482 383C534 591 556 686 554 689C550 695 539 695 472 689ZM357 412C376 403 388 386 397 350L403 327L376 219C361 159 347 107 344 102C337 88 307 53 292 41C218 -19 162 20 174 126C179 165 208 277 220 307C257 391 311 433 357 412Z" horiz-adv-x="510.986" unicode="d"/>
- <glyph d="M325 439C274 428 227 402 188 360C137 307 114 252 112 174C110 139 111 129 117 108C137 26 190 -15 266 -11C300 -8 326 -2 357 12C390 27 413 43 438 69C466 98 468 102 460 112C457 116 452 120 450 120S439 111 430 101C393 57 345 27 292 16C251 7 228 12 208 31C178 61 172 124 191 208L196 228H214C246 228 313 234 336 239C400 252 440 283 455 328C461 350 462 361 456 381C445 417 410 440 364 441C350 441 332 441 325 439ZM381 415C409 408 427 378 423 348C414 291 367 263 262 255C238 253 214 252 210 253L201 254L211 283C225 323 241 350 264 373C302 410 342 424 381 415Z" horiz-adv-x="459.888" unicode="e"/>
- <glyph d="M219 689C187 685 159 681 157 679C154 677 153 672 154 665L155 654L183 653C217 650 225 647 225 636C225 632 191 491 149 322C106 153 72 12 72 10C72 1 89 -12 99 -12C113 -12 128 -2 134 9C136 15 153 79 171 153C192 234 207 292 212 302C236 350 271 389 302 404C323 414 352 420 367 417C392 412 405 384 402 341C400 309 381 236 356 167C345 135 334 101 332 91C312 10 393 -42 458 8C486 30 512 73 527 122C534 147 532 153 517 153C506 153 503 149 496 123C478 57 442 12 407 12C391 12 385 20 385 41C385 61 391 82 419 164C430 195 444 239 451 261C460 297 462 306 462 337C462 367 461 374 455 387C446 406 426 425 407 434C386 444 337 443 309 434C287 426 261 409 241 390C234 383 228 379 228 380S245 450 266 534C307 699 307 695 287 695C282 695 252 692 219 689Z" horiz-adv-x="510.986" unicode="h"/>
- <glyph d="M272 655C259 649 244 631 242 618C239 604 246 589 259 582C280 571 308 585 319 610C325 622 325 625 322 635C316 656 294 664 272 655ZM183 438C142 424 105 374 86 309C79 283 81 277 96 277C107 277 109 279 118 311C140 382 170 418 207 418C218 418 222 414 225 402C231 378 226 363 167 201C132 108 128 95 127 73C126 53 126 46 132 33C140 15 160 -3 177 -8C234 -25 291 24 320 118C329 147 328 153 313 153C302 153 298 149 291 123C282 89 260 46 245 31C228 14 203 7 189 15C181 19 179 39 184 64C187 76 209 142 234 210C285 348 288 361 278 390C265 430 222 452 183 438Z" horiz-adv-x="306.592" unicode="i"/>
- <glyph d="M158 437C133 425 115 399 100 355C85 313 79 286 84 281C88 276 103 275 107 280C109 282 113 295 117 308C136 382 154 414 179 417C202 420 212 400 207 358C205 346 186 263 163 174C141 84 124 8 125 5C127 -2 141 -12 151 -12C164 -12 180 -1 185 10C187 15 204 80 222 154C259 300 262 309 297 354C328 395 365 416 407 416C430 417 431 416 441 406C453 392 459 368 456 337C455 325 437 247 416 164C396 82 379 12 379 10C379 1 396 -12 407 -12C420 -12 436 -1 441 10C443 16 460 80 478 153C499 235 514 292 519 301C544 350 578 389 609 404C630 414 659 420 674 417C699 412 712 384 709 341C707 309 688 236 663 167C630 73 629 55 648 23C665 -4 702 -18 733 -9C774 3 813 54 834 122C841 147 839 153 825 153C814 153 810 149 803 123C785 57 749 12 714 12C698 12 692 20 692 41C692 61 698 82 727 164C738 195 752 239 758 261C767 297 769 306 769 337C769 367 768 374 762 387C753 406 734 425 714 434C693 444 644 443 616 434C584 423 553 398 526 364L518 354L516 363C511 385 503 399 489 414C439 464 339 446 281 376L268 361L266 371C261 398 243 422 221 434C203 443 173 444 158 437Z" horiz-adv-x="817.578" unicode="m"/>
- <glyph d="M158 437C133 425 115 399 100 355C85 313 79 286 84 281C88 276 103 275 107 280C109 282 113 295 117 308C136 382 154 414 179 417C202 420 213 398 207 359C203 333 85 -140 79 -150C74 -160 60 -165 35 -165C19 -165 17 -166 14 -172C12 -176 12 -183 13 -187L14 -194H115H216L220 -185C226 -170 221 -167 186 -165C164 -163 154 -162 151 -158C146 -153 147 -146 168 -63C180 -14 191 30 193 35L196 45L202 35C211 20 228 3 242 -4C260 -13 301 -13 327 -2C400 27 461 97 490 185C528 297 505 396 433 431C416 440 411 441 388 441C364 441 360 440 338 429C322 421 308 410 291 395C278 382 267 373 267 373C266 374 264 380 261 387C256 404 237 425 221 434C203 443 173 444 158 437ZM404 414C418 408 428 393 435 372C439 357 440 346 438 317C436 257 402 134 376 88C352 48 317 17 290 13C251 7 221 37 212 93C210 101 217 132 237 213C263 315 265 323 277 340C316 398 369 429 404 414Z" horiz-adv-x="510.986" unicode="p"/>
- <glyph d="M272 439C215 427 167 378 154 316C149 289 152 269 164 246C180 217 199 206 255 193C299 183 316 174 327 153C344 120 328 67 290 38C266 20 242 13 203 13C162 13 141 20 121 40C108 54 102 66 110 66C113 66 121 69 128 72C150 83 163 114 153 132C146 146 119 151 102 143C72 127 63 85 81 48C102 6 149 -14 214 -11C286 -7 342 26 371 85C399 141 396 189 363 228C347 245 316 260 274 269C233 278 222 284 213 303C196 337 221 391 262 409C275 415 283 416 307 416C333 417 337 416 351 408C367 399 376 389 380 377C382 371 381 370 373 368C368 367 359 361 353 355C345 345 343 340 343 329S344 315 352 308C369 294 394 301 407 325C416 340 416 373 407 389C398 407 380 423 360 432C345 438 336 440 314 441C299 441 280 440 272 439Z" horiz-adv-x="408.789" unicode="s"/>
- <glyph d="M234 438C214 431 196 418 181 401C163 382 145 346 143 331C143 320 143 320 155 319C168 318 168 319 174 331C186 360 213 377 248 377C267 377 272 376 300 363C318 355 340 346 350 344L368 340L257 229C145 118 110 78 77 28C57 -2 56 -10 72 -11C83 -12 84 -11 98 9C130 56 162 73 188 57C193 54 203 45 209 37C242 -4 256 -13 284 -11C342 -6 399 47 424 122C432 145 430 150 415 150C405 150 402 149 400 142C382 99 363 77 331 62C314 54 308 52 289 52C269 52 263 54 242 64C208 80 187 87 170 87H156L162 96C166 101 219 156 281 217C363 299 399 338 417 361C445 399 464 430 463 436C462 439 457 441 449 442C437 442 437 442 426 423C408 393 395 377 384 372C363 362 346 368 326 393C289 440 268 450 234 438Z" horiz-adv-x="408.789" unicode="z"/>
- </font>
- </defs>
- <style type="text/css">text.f1 {font-family:cmex10;font-size:10}
-text.f2 {font-family:cmmi10;font-size:10}
-text.f3 {font-family:cmmi7;font-size:7}
-text.f4 {font-family:cmr10;font-size:10}
-text.f5 {font-family:cmr7;font-size:7}
-text.f6 {font-family:cmsy10;font-size:10}
-text.f7 {font-family:cmsy7;font-size:7}
-text.f8 {font-family:ecbx1000;font-size:10}
-text.f9 {font-family:eccc1000;font-size:10}
-text.f10 {font-family:ecrm1000;font-size:10}
-text.f11 {font-family:ecsl1000;font-size:10}
-text.f12 {font-family:ecss1000;font-size:10}
-text.f13 {font-family:ecti1000;font-size:10}
-</style>
- <g id="page1" transform="matrix(0.996 0 0 0.996 0 0)">
- <text class="f10" x="77" y="63">Color<tspan x="104.243">test:</tspan>
-<tspan fill="#ff0000" x="127.627">red,</tspan>
-<tspan fill="#0000ff" x="147.649">blue,</tspan>
-<tspan fill="#ff00ff" x="172.088">magen</tspan>
-<tspan fill="#ff00ff" x="200.137">ta</tspan>
-</text>
- <text class="f1" x="164.374" y="78.8467">&#x345A;</text>
- <text class="f3" x="174.374" y="81.3189">x</text>
- <text class="f5" x="169.929" y="101.569">0</text>
- <text class="f4" x="181.075" y="92.4579">cos</text>
- <text class="f2" x="196.131" y="92.4579">t</text>
- <text class="f10" x="201.408" y="92.4579">d</text>
- <text class="f2" x="206.962" y="92.4579">t</text>
- <text class="f4" x="213.351" y="92.4579">=</text>
- <text class="f7" x="227.193" y="79.9579">&#x221E;</text>
- <text class="f1" x="223.957" y="82.9578">&#x3458;</text>
- <text class="f3" x="223.907" y="104.486">k</text>
- <text class="f5" x="228.327" y="104.486">=0</text>
- <text class="f4" x="238.452" y="92.4579">(</text>
- <text class="f6" x="242.341" y="92.4579">&#x3400;</text>
- <text class="f4" x="250.119" y="92.4579">1)</text>
- <text class="f3" x="259.008" y="88.329">k</text>
- <text class="f2" x="271.904" y="85.6928">x</text>
- <text class="f5" x="277.619" y="82.0639">2</text>
- <text class="f3" x="281.605" y="82.0639">k</text>
- <text class="f5" x="286.025" y="82.0639">+1</text>
- <rect height="0.399979" width="38.2986" x="265.128" y="89.7579"/>
- <text class="f4" x="265.128" y="99.3174">(2</text>
- <text class="f2" x="274.017" y="99.3174">k</text>
- <text class="f4" x="281.76" y="99.3174">+<tspan x="291.76">1)!</tspan>
-</text>
- <text class="f10" x="77" y="123.706">F<tspan x="82.6931">on</tspan>
-<tspan x="92.9683">t</tspan>
-<tspan x="100.189">st</tspan>
-<tspan x="107.742">yles:</tspan>
-</text>
- <text class="f8" x="131.403" y="123.706">b<tspan x="138.11">old</tspan>
-</text>
- <text class="f10" x="153.44" y="123.706">,</text>
- <text class="f13" x="159.549" y="123.706">emphasize<tspan x="202.983">d</tspan>
-</text>
- <text class="f10" x="208.093" y="123.706">,</text>
- <text class="f12" x="214.203" y="123.706">sans<tspan x="235.17">serif</tspan>
-</text>
- <text class="f10" x="252.304" y="123.706">,</text>
- <text class="f9" x="258.414" y="123.706">Small<tspan x="292.161">Caps</tspan>
-</text>
- <text class="f10" x="316.305" y="123.706">,</text>
- <text class="f11" x="322.415" y="123.706">slan<tspan x="339.411">ted</tspan>
-</text>
- <text class="f10" x="232.001" y="633">1</text>
- </g>
-</svg>
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample.dvi b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample.dvi
deleted file mode 100644
index 87e6236021d..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample.dvi
+++ /dev/null
Binary files differ
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample.sfd b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample.sfd
deleted file mode 100644
index e7c84c7b5e1..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample.sfd
+++ /dev/null
@@ -1,293 +0,0 @@
-00 0x0000_0x00FF
-01 0x3000 0x3001 0x3002 0x00B7 0x02C9 0x02C7 0x00A8 0x3003 \
- 0x3005 0x2014 0xFF5E 0x2016 0x2026 0x2018 0x2019 0x201C \
- 0x201D 0x3014 0x3015 0x3008 0x3009 0x300A 0x300B 0x300C \
- 0x300D 0x300E 0x300F 0x3016 0x3017 0x3010 0x3011 0x00B1 \
- 0x00D7 0x00F7 0x2236 0x2227 0x2228 0x2211 0x220F 0x222A \
- 0x2229 0x2208 0x2237 0x221A 0x22A5 0x2225 0x2220 0x2312 \
- 0x2299 0x222B 0x222E 0x2261 0x224C 0x2248 0x223D 0x221D \
- 0x2260 0x226E 0x226F 0x2264 0x2265 0x221E 0x2235 0x2234 \
- 0x2642 0x2640 0x00B0 0x2032 0x2033 0x2103 0xFF04 0x00A4 \
- 0xFFE0 0xFFE1 0x2030 0x00A7 0x2116 0x2606 0x2605 0x25CB \
- 0x25CF 0x25CE 0x25C7 0x25C6 0x25A1 0x25A0 0x25B3 0x25B2 \
- 0x203B 0x2192 0x2190 0x2191 0x2193 0x3013 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0x2488 0x2489 \
- 0x248A 0x248B 0x248C 0x248D 0x248E 0x248F 0x2490 0x2491 \
- 0x2492 0x2493 0x2494 0x2495 0x2496 0x2497 0x2498 0x2499 \
- 0x249A 0x249B 0x2474 0x2475 0x2476 0x2477 0x2478 0x2479 \
- 0x247A 0x247B 0x247C 0x247D 0x247E 0x247F 0x2480 0x2481 \
- 0x2482 0x2483 0x2484 0x2485 0x2486 0x2487 0x2460 0x2461 \
- 0x2462 0x2463 0x2464 0x2465 0x2466 0x2467 0x2468 0x2469 \
- 0xFFFE 0xFFFE 0x3220 0x3221 0x3222 0x3223 0x3224 0x3225 \
- 0x3226 0x3227 0x3228 0x3229 0xFFFE 0xFFFE 0x2160 0x2161 \
- 0x2162 0x2163 0x2164 0x2165 0x2166 0x2167 0x2168 0x2169 \
- 0x216A 0x216B 0xFFFE 0xFFFE 0xFF01 0xFF02 0xFF03 0xFFE5 \
- 0xFF05 0xFF06 0xFF07 0xFF08 0xFF09 0xFF0A 0xFF0B 0xFF0C \
- 0xFF0D 0xFF0E 0xFF0F 0xFF10 0xFF11 0xFF12 0xFF13 0xFF14 \
- 0xFF15 0xFF16 0xFF17 0xFF18 0xFF19 0xFF1A 0xFF1B 0xFF1C \
- 0xFF1D 0xFF1E 0xFF1F 0xFF20 0xFF21 0xFF22 0xFF23 0xFF24 \
- 0xFF25 0xFF26 0xFF27 0xFF28 0xFF29 0xFF2A 0xFF2B 0xFF2C \
- 0xFF2D 0xFF2E 0xFF2F 0xFF30 0xFF31 0xFF32 0xFF33 0xFF34 \
- 0xFF35 0xFF36 0xFF37 0xFF38 0xFF39 0xFF3A 0xFF3B 0xFF3C \
- 0xFF3D 0xFF3E 0xFF3F 0xFF40 0xFF41 0xFF42 0xFF43 0xFF44
-02 0xFF45 0xFF46 0xFF47 0xFF48 0xFF49 0xFF4A 0xFF4B 0xFF4C \
- 0xFF4D 0xFF4E 0xFF4F 0xFF50 0xFF51 0xFF52 0xFF53 0xFF54 \
- 0xFF55 0xFF56 0xFF57 0xFF58 0xFF59 0xFF5A 0xFF5B 0xFF5C \
- 0xFF5D 0xFFE3 0x3041 0x3042 0x3043 0x3044 0x3045 0x3046 \
- 0x3047 0x3048 0x3049 0x304A 0x304B 0x304C 0x304D 0x304E \
- 0x304F 0x3050 0x3051 0x3052 0x3053 0x3054 0x3055 0x3056 \
- 0x3057 0x3058 0x3059 0x305A 0x305B 0x305C 0x305D 0x305E \
- 0x305F 0x3060 0x3061 0x3062 0x3063 0x3064 0x3065 0x3066 \
- 0x3067 0x3068 0x3069 0x306A 0x306B 0x306C 0x306D 0x306E \
- 0x306F 0x3070 0x3071 0x3072 0x3073 0x3074 0x3075 0x3076 \
- 0x3077 0x3078 0x3079 0x307A 0x307B 0x307C 0x307D 0x307E \
- 0x307F 0x3080 0x3081 0x3082 0x3083 0x3084 0x3085 0x3086 \
- 0x3087 0x3088 0x3089 0x308A 0x308B 0x308C 0x308D 0x308E \
- 0x308F 0x3090 0x3091 0x3092 0x3093 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0x30A1 0x30A2 0x30A3 0x30A4 0x30A5 0x30A6 0x30A7 0x30A8 \
- 0x30A9 0x30AA 0x30AB 0x30AC 0x30AD 0x30AE 0x30AF 0x30B0 \
- 0x30B1 0x30B2 0x30B3 0x30B4 0x30B5 0x30B6 0x30B7 0x30B8 \
- 0x30B9 0x30BA 0x30BB 0x30BC 0x30BD 0x30BE 0x30BF 0x30C0 \
- 0x30C1 0x30C2 0x30C3 0x30C4 0x30C5 0x30C6 0x30C7 0x30C8 \
- 0x30C9 0x30CA 0x30CB 0x30CC 0x30CD 0x30CE 0x30CF 0x30D0 \
- 0x30D1 0x30D2 0x30D3 0x30D4 0x30D5 0x30D6 0x30D7 0x30D8 \
- 0x30D9 0x30DA 0x30DB 0x30DC 0x30DD 0x30DE 0x30DF 0x30E0 \
- 0x30E1 0x30E2 0x30E3 0x30E4 0x30E5 0x30E6 0x30E7 0x30E8 \
- 0x30E9 0x30EA 0x30EB 0x30EC 0x30ED 0x30EE 0x30EF 0x30F0 \
- 0x30F1 0x30F2 0x30F3 0x30F4 0x30F5 0x30F6 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0x0391 0x0392 \
- 0x0393 0x0394 0x0395 0x0396 0x0397 0x0398 0x0399 0x039A \
- 0x039B 0x039C 0x039D 0x039E 0x039F 0x03A0 0x03A1 0x03A3 \
- 0x03A4 0x03A5 0x03A6 0x03A7 0x03A8 0x03A9 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0x03B1 0x03B2 \
- 0x03B3 0x03B4 0x03B5 0x03B6 0x03B7 0x03B8 0x03B9 0x03BA
-03 0x03BB 0x03BC 0x03BD 0x03BE 0x03BF 0x03C0 0x03C1 0x03C3 \
- 0x03C4 0x03C5 0x03C6 0x03C7 0x03C8 0x03C9 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0x0410 0x0411 0x0412 0x0413 \
- 0x0414 0x0415 0x0401 0x0416 0x0417 0x0418 0x0419 0x041A \
- 0x041B 0x041C 0x041D 0x041E 0x041F 0x0420 0x0421 0x0422 \
- 0x0423 0x0424 0x0425 0x0426 0x0427 0x0428 0x0429 0x042A \
- 0x042B 0x042C 0x042D 0x042E 0x042F 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0x0430 0x0431 0x0432 0x0433 \
- 0x0434 0x0435 0x0451 0x0436 0x0437 0x0438 0x0439 0x043A \
- 0x043B 0x043C 0x043D 0x043E 0x043F 0x0440 0x0441 0x0442 \
- 0x0443 0x0444 0x0445 0x0446 0x0447 0x0448 0x0449 0x044A \
- 0x044B 0x044C 0x044D 0x044E 0x044F 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0x0101 0x00E1 0x01CE 0x00E0 0x0113 0x00E9 \
- 0x011B 0x00E8 0x012B 0x00ED 0x01D0 0x00EC 0x014D 0x00F3 \
- 0x01D2 0x00F2 0x016B 0x00FA 0x01D4 0x00F9 0x01D6 0x01D8 \
- 0x01DA 0x01DC 0x00FC 0x00EA 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0x3105 0x3106 \
- 0x3107 0x3108 0x3109 0x310A 0x310B 0x310C 0x310D 0x310E \
- 0x310F 0x3110 0x3111 0x3112 0x3113 0x3114 0x3115 0x3116 \
- 0x3117 0x3118 0x3119 0x311A 0x311B 0x311C 0x311D 0x311E \
- 0x311F 0x3120 0x3121 0x3122 0x3123 0x3124 0x3125 0x3126 \
- 0x3127 0x3128 0x3129 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0x2500 0x2501 0x2502 0x2503 0x2504 \
- 0x2505 0x2506 0x2507 0x2508 0x2509 0x250A 0x250B 0x250C
-04 0x250D 0x250E 0x250F 0x2510 0x2511 0x2512 0x2513 0x2514 \
- 0x2515 0x2516 0x2517 0x2518 0x2519 0x251A 0x251B 0x251C \
- 0x251D 0x251E 0x251F 0x2520 0x2521 0x2522 0x2523 0x2524 \
- 0x2525 0x2526 0x2527 0x2528 0x2529 0x252A 0x252B 0x252C \
- 0x252D 0x252E 0x252F 0x2530 0x2531 0x2532 0x2533 0x2534 \
- 0x2535 0x2536 0x2537 0x2538 0x2539 0x253A 0x253B 0x253C \
- 0x253D 0x253E 0x253F 0x2540 0x2541 0x2542 0x2543 0x2544 \
- 0x2545 0x2546 0x2547 0x2548 0x2549 0x254A 0x254B 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE
-05 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE
-06 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE 0xFFFE \
- 0xFFFE 0xFFFE 0x554A 0x963F 0x57C3 0x6328 0x54CE 0x5509 \
- 0x54C0 0x7691 0x764C 0x853C 0x77EE 0x827E 0x788D 0x7231 \
- 0x9698 0x978D 0x6C28 0x5B89 0x4FFA 0x6309 0x6697 0x5CB8 \
- 0x80FA 0x6848 0x80AE 0x6602 0x76CE 0x51F9 0x6556 0x71AC \
- 0x7FF1 0x8884 0x50B2 0x5965 0x61CA 0x6FB3 0x82AD 0x634C \
- 0x6252 0x53ED 0x5427 0x7B06 0x516B 0x75A4 0x5DF4 0x62D4 \
- 0x8DCB 0x9776 0x628A 0x8019 0x575D 0x9738 0x7F62 0x7238 \
- 0x767D 0x67CF 0x767E 0x6446 0x4F70 0x8D25 0x62DC 0x7A17 \
- 0x6591 0x73ED 0x642C 0x6273 0x822C 0x9881 0x677F 0x7248 \
- 0x626E 0x62CC 0x4F34 0x74E3 0x534A 0x529E 0x7ECA 0x90A6 \
- 0x5E2E 0x6886 0x699C 0x8180 0x7ED1 0x68D2 0x78C5 0x868C \
- 0x9551 0x508D 0x8C24 0x82DE 0x80DE 0x5305 0x8912 0x5265 \
- 0x8584 0x96F9 0x4FDD 0x5821 0x9971 0x5B9D 0x62B1 0x62A5 \
- 0x66B4 0x8C79 0x9C8D 0x7206 0x676F 0x7891 0x60B2 0x5351 \
- 0x5317 0x8F88 0x80CC 0x8D1D 0x94A1 0x500D 0x72C8 0x5907 \
- 0x60EB 0x7119 0x88AB 0x5954 0x82EF 0x672C 0x7B28 0x5D29
-07 0x7EF7 0x752D 0x6CF5 0x8E66 0x8FF8 0x903C 0x9F3B 0x6BD4 \
- 0x9119 0x7B14 0x5F7C 0x78A7 0x84D6 0x853D 0x6BD5 0x6BD9 \
- 0x6BD6 0x5E01 0x5E87 0x75F9 0x95ED 0x655D 0x5F0A 0x5FC5 \
- 0x8F9F 0x58C1 0x81C2 0x907F 0x965B 0x97AD 0x8FB9 0x7F16 \
- 0x8D2C 0x6241 0x4FBF 0x53D8 0x535E 0x8FA8 0x8FA9 0x8FAB \
- 0x904D 0x6807 0x5F6A 0x8198 0x8868 0x9CD6 0x618B 0x522B \
- 0x762A 0x5F6C 0x658C 0x6FD2 0x6EE8 0x5BBE 0x6448 0x5175 \
- 0x51B0 0x67C4 0x4E19 0x79C9 0x997C 0x70B3 0x75C5 0x5E76 \
- 0x73BB 0x83E0 0x64AD 0x62E8 0x94B5 0x6CE2 0x535A 0x52C3 \
- 0x640F 0x94C2 0x7B94 0x4F2F 0x5E1B 0x8236 0x8116 0x818A \
- 0x6E24 0x6CCA 0x9A73 0x6355 0x535C 0x54FA 0x8865 0x57E0 \
- 0x4E0D 0x5E03 0x6B65 0x7C3F 0x90E8 0x6016 0x64E6 0x731C \
- 0x88C1 0x6750 0x624D 0x8D22 0x776C 0x8E29 0x91C7 0x5F69 \
- 0x83DC 0x8521 0x9910 0x53C2 0x8695 0x6B8B 0x60ED 0x60E8 \
- 0x707F 0x82CD 0x8231 0x4ED3 0x6CA7 0x85CF 0x64CD 0x7CD9 \
- 0x69FD 0x66F9 0x8349 0x5395 0x7B56 0x4FA7 0x518C 0x6D4B \
- 0x5C42 0x8E6D 0x63D2 0x53C9 0x832C 0x8336 0x67E5 0x78B4 \
- 0x643D 0x5BDF 0x5C94 0x5DEE 0x8BE7 0x62C6 0x67F4 0x8C7A \
- 0x6400 0x63BA 0x8749 0x998B 0x8C17 0x7F20 0x94F2 0x4EA7 \
- 0x9610 0x98A4 0x660C 0x7316 0x573A 0x5C1D 0x5E38 0x957F \
- 0x507F 0x80A0 0x5382 0x655E 0x7545 0x5531 0x5021 0x8D85 \
- 0x6284 0x949E 0x671D 0x5632 0x6F6E 0x5DE2 0x5435 0x7092 \
- 0x8F66 0x626F 0x64A4 0x63A3 0x5F7B 0x6F88 0x90F4 0x81E3 \
- 0x8FB0 0x5C18 0x6668 0x5FF1 0x6C89 0x9648 0x8D81 0x886C \
- 0x6491 0x79F0 0x57CE 0x6A59 0x6210 0x5448 0x4E58 0x7A0B \
- 0x60E9 0x6F84 0x8BDA 0x627F 0x901E 0x9A8B 0x79E4 0x5403 \
- 0x75F4 0x6301 0x5319 0x6C60 0x8FDF 0x5F1B 0x9A70 0x803B \
- 0x9F7F 0x4F88 0x5C3A 0x8D64 0x7FC5 0x65A5 0x70BD 0x5145 \
- 0x51B2 0x866B 0x5D07 0x5BA0 0x62BD 0x916C 0x7574 0x8E0C \
- 0x7A20 0x6101 0x7B79 0x4EC7 0x7EF8 0x7785 0x4E11 0x81ED \
- 0x521D 0x51FA 0x6A71 0x53A8 0x8E87 0x9504 0x96CF 0x6EC1 \
- 0x9664 0x695A 0x7840 0x50A8 0x77D7 0x6410 0x89E6 0x5904
-08 0x63E3 0x5DDD 0x7A7F 0x693D 0x4F20 0x8239 0x5598 0x4E32 \
- 0x75AE 0x7A97 0x5E62 0x5E8A 0x95EF 0x521B 0x5439 0x708A \
- 0x6376 0x9524 0x5782 0x6625 0x693F 0x9187 0x5507 0x6DF3 \
- 0x7EAF 0x8822 0x6233 0x7EF0 0x75B5 0x8328 0x78C1 0x96CC \
- 0x8F9E 0x6148 0x74F7 0x8BCD 0x6B64 0x523A 0x8D50 0x6B21 \
- 0x806A 0x8471 0x56F1 0x5306 0x4ECE 0x4E1B 0x51D1 0x7C97 \
- 0x918B 0x7C07 0x4FC3 0x8E7F 0x7BE1 0x7A9C 0x6467 0x5D14 \
- 0x50AC 0x8106 0x7601 0x7CB9 0x6DEC 0x7FE0 0x6751 0x5B58 \
- 0x5BF8 0x78CB 0x64AE 0x6413 0x63AA 0x632B 0x9519 0x642D \
- 0x8FBE 0x7B54 0x7629 0x6253 0x5927 0x5446 0x6B79 0x50A3 \
- 0x6234 0x5E26 0x6B86 0x4EE3 0x8D37 0x888B 0x5F85 0x902E \
- 0x6020 0x803D 0x62C5 0x4E39 0x5355 0x90F8 0x63B8 0x80C6 \
- 0x65E6 0x6C2E 0x4F46 0x60EE 0x6DE1 0x8BDE 0x5F39 0x86CB \
- 0x5F53 0x6321 0x515A 0x8361 0x6863 0x5200 0x6363 0x8E48 \
- 0x5012 0x5C9B 0x7977 0x5BFC 0x5230 0x7A3B 0x60BC 0x9053 \
- 0x76D7 0x5FB7 0x5F97 0x7684 0x8E6C 0x706F 0x767B 0x7B49 \
- 0x77AA 0x51F3 0x9093 0x5824 0x4F4E 0x6EF4 0x8FEA 0x654C \
- 0x7B1B 0x72C4 0x6DA4 0x7FDF 0x5AE1 0x62B5 0x5E95 0x5730 \
- 0x8482 0x7B2C 0x5E1D 0x5F1F 0x9012 0x7F14 0x98A0 0x6382 \
- 0x6EC7 0x7898 0x70B9 0x5178 0x975B 0x57AB 0x7535 0x4F43 \
- 0x7538 0x5E97 0x60E6 0x5960 0x6DC0 0x6BBF 0x7889 0x53FC \
- 0x96D5 0x51CB 0x5201 0x6389 0x540A 0x9493 0x8C03 0x8DCC \
- 0x7239 0x789F 0x8776 0x8FED 0x8C0D 0x53E0 0x4E01 0x76EF \
- 0x53EE 0x9489 0x9876 0x9F0E 0x952D 0x5B9A 0x8BA2 0x4E22 \
- 0x4E1C 0x51AC 0x8463 0x61C2 0x52A8 0x680B 0x4F97 0x606B \
- 0x51BB 0x6D1E 0x515C 0x6296 0x6597 0x9661 0x8C46 0x9017 \
- 0x75D8 0x90FD 0x7763 0x6BD2 0x728A 0x72EC 0x8BFB 0x5835 \
- 0x7779 0x8D4C 0x675C 0x9540 0x809A 0x5EA6 0x6E21 0x5992 \
- 0x7AEF 0x77ED 0x953B 0x6BB5 0x65AD 0x7F0E 0x5806 0x5151 \
- 0x961F 0x5BF9 0x58A9 0x5428 0x8E72 0x6566 0x987F 0x56E4 \
- 0x949D 0x76FE 0x9041 0x6387 0x54C6 0x591A 0x593A 0x579B \
- 0x8EB2 0x6735 0x8DFA 0x8235 0x5241 0x60F0 0x5815 0x86FE
-09 0x5CE8 0x9E45 0x4FC4 0x989D 0x8BB9 0x5A25 0x6076 0x5384 \
- 0x627C 0x904F 0x9102 0x997F 0x6069 0x800C 0x513F 0x8033 \
- 0x5C14 0x9975 0x6D31 0x4E8C 0x8D30 0x53D1 0x7F5A 0x7B4F \
- 0x4F10 0x4E4F 0x9600 0x6CD5 0x73D0 0x85E9 0x5E06 0x756A \
- 0x7FFB 0x6A0A 0x77FE 0x9492 0x7E41 0x51E1 0x70E6 0x53CD \
- 0x8FD4 0x8303 0x8D29 0x72AF 0x996D 0x6CDB 0x574A 0x82B3 \
- 0x65B9 0x80AA 0x623F 0x9632 0x59A8 0x4EFF 0x8BBF 0x7EBA \
- 0x653E 0x83F2 0x975E 0x5561 0x98DE 0x80A5 0x532A 0x8BFD \
- 0x5420 0x80BA 0x5E9F 0x6CB8 0x8D39 0x82AC 0x915A 0x5429 \
- 0x6C1B 0x5206 0x7EB7 0x575F 0x711A 0x6C7E 0x7C89 0x594B \
- 0x4EFD 0x5FFF 0x6124 0x7CAA 0x4E30 0x5C01 0x67AB 0x8702 \
- 0x5CF0 0x950B 0x98CE 0x75AF 0x70FD 0x9022 0x51AF 0x7F1D \
- 0x8BBD 0x5949 0x51E4 0x4F5B 0x5426 0x592B 0x6577 0x80A4 \
- 0x5B75 0x6276 0x62C2 0x8F90 0x5E45 0x6C1F 0x7B26 0x4F0F \
- 0x4FD8 0x670D 0x6D6E 0x6DAA 0x798F 0x88B1 0x5F17 0x752B \
- 0x629A 0x8F85 0x4FEF 0x91DC 0x65A7 0x812F 0x8151 0x5E9C \
- 0x8150 0x8D74 0x526F 0x8986 0x8D4B 0x590D 0x5085 0x4ED8 \
- 0x961C 0x7236 0x8179 0x8D1F 0x5BCC 0x8BA3 0x9644 0x5987 \
- 0x7F1A 0x5490 0x5676 0x560E 0x8BE5 0x6539 0x6982 0x9499 \
- 0x76D6 0x6E89 0x5E72 0x7518 0x6746 0x67D1 0x7AFF 0x809D \
- 0x8D76 0x611F 0x79C6 0x6562 0x8D63 0x5188 0x521A 0x94A2 \
- 0x7F38 0x809B 0x7EB2 0x5C97 0x6E2F 0x6760 0x7BD9 0x768B \
- 0x9AD8 0x818F 0x7F94 0x7CD5 0x641E 0x9550 0x7A3F 0x544A \
- 0x54E5 0x6B4C 0x6401 0x6208 0x9E3D 0x80F3 0x7599 0x5272 \
- 0x9769 0x845B 0x683C 0x86E4 0x9601 0x9694 0x94EC 0x4E2A \
- 0x5404 0x7ED9 0x6839 0x8DDF 0x8015 0x66F4 0x5E9A 0x7FB9 \
- 0x57C2 0x803F 0x6897 0x5DE5 0x653B 0x529F 0x606D 0x9F9A \
- 0x4F9B 0x8EAC 0x516C 0x5BAB 0x5F13 0x5DE9 0x6C5E 0x62F1 \
- 0x8D21 0x5171 0x94A9 0x52FE 0x6C9F 0x82DF 0x72D7 0x57A2 \
- 0x6784 0x8D2D 0x591F 0x8F9C 0x83C7 0x5495 0x7B8D 0x4F30 \
- 0x6CBD 0x5B64 0x59D1 0x9F13 0x53E4 0x86CA 0x9AA8 0x8C37 \
- 0x80A1 0x6545 0x987E 0x56FA 0x96C7 0x522E 0x74DC 0x5250
-x1 0x0010_0x0030 0x1010_0x1030 0xe000 \
- 0xA0: 0x1000 0x2000
-
-# eof
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample_v2.dvi b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample_v2.dvi
deleted file mode 100644
index 89471522369..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample_v2.dvi
+++ /dev/null
Binary files differ
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample_v3.dvi b/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample_v3.dvi
deleted file mode 100644
index 26e2ce5cae7..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/sample_v3.dvi
+++ /dev/null
Binary files differ
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/genhashcheck.py b/Build/source/texk/dvisvgm/dvisvgm-src/tests/genhashcheck.py
deleted file mode 100755
index 88a08ab671b..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/genhashcheck.py
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/usr/bin/python
-# This file is part of the dvisvgm package and published under the
-# terms of the GNU General Public License version 3 or later.
-# See file COPYING for further details.
-# Copyright (C) 2016-2021 Martin Gieseking <martin.gieseking@uos.de>
-
-import re
-import sys
-
-def extract_hashes (fname):
- with open(fname) as f:
- lines = f.readlines()
- found = False
- for line in lines:
- if ' hash2unicode {{\n' in line:
- found = True
- elif found:
- match = re.match(r'\s*{(0x[0-9a-f]{8}),\s*0x[0-9a-f]{4}}, //\s*(.+)\s*$', line)
- if match:
- hashval = match.group(1)
- name = match.group(2)
- print('\t{}{}, "{}"{},'.format('{', hashval, name, '}'))
- else:
- found = False
-
-if (len(sys.argv) < 2):
- sys.exit(1)
-
-print("""\
-#include <xxhash.h>
-#include <cstdint>
-#include <iterator>
-#include <iomanip>
-#include <iostream>
-#include <string>
-
-using namespace std;
-
-struct NameHash {
- uint32_t hash;
- string name;
-} nameHashes[] = {\
-""")
-extract_hashes(sys.argv[1])
-print(r"""};
-
-int main () {
- if (distance(begin(nameHashes), end(nameHashes)) == 0) {
- cout << "hash table is empty\n";
- return 1;
- }
- uint32_t prev_hash=0;
- for (NameHash &nameHash : nameHashes) {
- const string &name = nameHash.name;
- const uint32_t hash = nameHash.hash;
- if (XXH32(&name[0], name.length(), 0) != hash) {
- cout << "hash of '" << name << "' doesn't match\n";
- return 1;
- }
- if (hash < prev_hash) {
- cout << "misplaced hash value " << hex << setw(8) << setfill('0') << hash << "\n";
- return 1;
- }
- if (hash == prev_hash) {
- cout << "colliding hash values " << hex << setw(8) << setfill('0') << hash << "\n";
- return 1;
- }
- prev_hash = hash;
- }
- cout << "hash check passed\n";
- return 0;
-}
-""")
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/LICENSE b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/LICENSE
deleted file mode 100644
index 1941a11f8ce..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/LICENSE
+++ /dev/null
@@ -1,28 +0,0 @@
-Copyright 2008, Google Inc.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-death-test.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-death-test.h
deleted file mode 100644
index dc878ffbb3a..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-death-test.h
+++ /dev/null
@@ -1,343 +0,0 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This header file defines the public API for death tests. It is
-// #included by gtest.h so a user doesn't need to include this
-// directly.
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
-#define GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
-
-#include "gtest/internal/gtest-death-test-internal.h"
-
-namespace testing {
-
-// This flag controls the style of death tests. Valid values are "threadsafe",
-// meaning that the death test child process will re-execute the test binary
-// from the start, running only a single death test, or "fast",
-// meaning that the child process will execute the test logic immediately
-// after forking.
-GTEST_DECLARE_string_(death_test_style);
-
-#if GTEST_HAS_DEATH_TEST
-
-namespace internal {
-
-// Returns a Boolean value indicating whether the caller is currently
-// executing in the context of the death test child process. Tools such as
-// Valgrind heap checkers may need this to modify their behavior in death
-// tests. IMPORTANT: This is an internal utility. Using it may break the
-// implementation of death tests. User code MUST NOT use it.
-GTEST_API_ bool InDeathTestChild();
-
-} // namespace internal
-
-// The following macros are useful for writing death tests.
-
-// Here's what happens when an ASSERT_DEATH* or EXPECT_DEATH* is
-// executed:
-//
-// 1. It generates a warning if there is more than one active
-// thread. This is because it's safe to fork() or clone() only
-// when there is a single thread.
-//
-// 2. The parent process clone()s a sub-process and runs the death
-// test in it; the sub-process exits with code 0 at the end of the
-// death test, if it hasn't exited already.
-//
-// 3. The parent process waits for the sub-process to terminate.
-//
-// 4. The parent process checks the exit code and error message of
-// the sub-process.
-//
-// Examples:
-//
-// ASSERT_DEATH(server.SendMessage(56, "Hello"), "Invalid port number");
-// for (int i = 0; i < 5; i++) {
-// EXPECT_DEATH(server.ProcessRequest(i),
-// "Invalid request .* in ProcessRequest()")
-// << "Failed to die on request " << i;
-// }
-//
-// ASSERT_EXIT(server.ExitNow(), ::testing::ExitedWithCode(0), "Exiting");
-//
-// bool KilledBySIGHUP(int exit_code) {
-// return WIFSIGNALED(exit_code) && WTERMSIG(exit_code) == SIGHUP;
-// }
-//
-// ASSERT_EXIT(client.HangUpServer(), KilledBySIGHUP, "Hanging up!");
-//
-// On the regular expressions used in death tests:
-//
-// GOOGLETEST_CM0005 DO NOT DELETE
-// On POSIX-compliant systems (*nix), we use the <regex.h> library,
-// which uses the POSIX extended regex syntax.
-//
-// On other platforms (e.g. Windows or Mac), we only support a simple regex
-// syntax implemented as part of Google Test. This limited
-// implementation should be enough most of the time when writing
-// death tests; though it lacks many features you can find in PCRE
-// or POSIX extended regex syntax. For example, we don't support
-// union ("x|y"), grouping ("(xy)"), brackets ("[xy]"), and
-// repetition count ("x{5,7}"), among others.
-//
-// Below is the syntax that we do support. We chose it to be a
-// subset of both PCRE and POSIX extended regex, so it's easy to
-// learn wherever you come from. In the following: 'A' denotes a
-// literal character, period (.), or a single \\ escape sequence;
-// 'x' and 'y' denote regular expressions; 'm' and 'n' are for
-// natural numbers.
-//
-// c matches any literal character c
-// \\d matches any decimal digit
-// \\D matches any character that's not a decimal digit
-// \\f matches \f
-// \\n matches \n
-// \\r matches \r
-// \\s matches any ASCII whitespace, including \n
-// \\S matches any character that's not a whitespace
-// \\t matches \t
-// \\v matches \v
-// \\w matches any letter, _, or decimal digit
-// \\W matches any character that \\w doesn't match
-// \\c matches any literal character c, which must be a punctuation
-// . matches any single character except \n
-// A? matches 0 or 1 occurrences of A
-// A* matches 0 or many occurrences of A
-// A+ matches 1 or many occurrences of A
-// ^ matches the beginning of a string (not that of each line)
-// $ matches the end of a string (not that of each line)
-// xy matches x followed by y
-//
-// If you accidentally use PCRE or POSIX extended regex features
-// not implemented by us, you will get a run-time failure. In that
-// case, please try to rewrite your regular expression within the
-// above syntax.
-//
-// This implementation is *not* meant to be as highly tuned or robust
-// as a compiled regex library, but should perform well enough for a
-// death test, which already incurs significant overhead by launching
-// a child process.
-//
-// Known caveats:
-//
-// A "threadsafe" style death test obtains the path to the test
-// program from argv[0] and re-executes it in the sub-process. For
-// simplicity, the current implementation doesn't search the PATH
-// when launching the sub-process. This means that the user must
-// invoke the test program via a path that contains at least one
-// path separator (e.g. path/to/foo_test and
-// /absolute/path/to/bar_test are fine, but foo_test is not). This
-// is rarely a problem as people usually don't put the test binary
-// directory in PATH.
-//
-
-// Asserts that a given statement causes the program to exit, with an
-// integer exit status that satisfies predicate, and emitting error output
-// that matches regex.
-# define ASSERT_EXIT(statement, predicate, regex) \
- GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_)
-
-// Like ASSERT_EXIT, but continues on to successive tests in the
-// test suite, if any:
-# define EXPECT_EXIT(statement, predicate, regex) \
- GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_)
-
-// Asserts that a given statement causes the program to exit, either by
-// explicitly exiting with a nonzero exit code or being killed by a
-// signal, and emitting error output that matches regex.
-# define ASSERT_DEATH(statement, regex) \
- ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
-
-// Like ASSERT_DEATH, but continues on to successive tests in the
-// test suite, if any:
-# define EXPECT_DEATH(statement, regex) \
- EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
-
-// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*:
-
-// Tests that an exit code describes a normal exit with a given exit code.
-class GTEST_API_ ExitedWithCode {
- public:
- explicit ExitedWithCode(int exit_code);
- bool operator()(int exit_status) const;
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ExitedWithCode& other);
-
- const int exit_code_;
-};
-
-# if !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
-// Tests that an exit code describes an exit due to termination by a
-// given signal.
-// GOOGLETEST_CM0006 DO NOT DELETE
-class GTEST_API_ KilledBySignal {
- public:
- explicit KilledBySignal(int signum);
- bool operator()(int exit_status) const;
- private:
- const int signum_;
-};
-# endif // !GTEST_OS_WINDOWS
-
-// EXPECT_DEBUG_DEATH asserts that the given statements die in debug mode.
-// The death testing framework causes this to have interesting semantics,
-// since the sideeffects of the call are only visible in opt mode, and not
-// in debug mode.
-//
-// In practice, this can be used to test functions that utilize the
-// LOG(DFATAL) macro using the following style:
-//
-// int DieInDebugOr12(int* sideeffect) {
-// if (sideeffect) {
-// *sideeffect = 12;
-// }
-// LOG(DFATAL) << "death";
-// return 12;
-// }
-//
-// TEST(TestSuite, TestDieOr12WorksInDgbAndOpt) {
-// int sideeffect = 0;
-// // Only asserts in dbg.
-// EXPECT_DEBUG_DEATH(DieInDebugOr12(&sideeffect), "death");
-//
-// #ifdef NDEBUG
-// // opt-mode has sideeffect visible.
-// EXPECT_EQ(12, sideeffect);
-// #else
-// // dbg-mode no visible sideeffect.
-// EXPECT_EQ(0, sideeffect);
-// #endif
-// }
-//
-// This will assert that DieInDebugReturn12InOpt() crashes in debug
-// mode, usually due to a DCHECK or LOG(DFATAL), but returns the
-// appropriate fallback value (12 in this case) in opt mode. If you
-// need to test that a function has appropriate side-effects in opt
-// mode, include assertions against the side-effects. A general
-// pattern for this is:
-//
-// EXPECT_DEBUG_DEATH({
-// // Side-effects here will have an effect after this statement in
-// // opt mode, but none in debug mode.
-// EXPECT_EQ(12, DieInDebugOr12(&sideeffect));
-// }, "death");
-//
-# ifdef NDEBUG
-
-# define EXPECT_DEBUG_DEATH(statement, regex) \
- GTEST_EXECUTE_STATEMENT_(statement, regex)
-
-# define ASSERT_DEBUG_DEATH(statement, regex) \
- GTEST_EXECUTE_STATEMENT_(statement, regex)
-
-# else
-
-# define EXPECT_DEBUG_DEATH(statement, regex) \
- EXPECT_DEATH(statement, regex)
-
-# define ASSERT_DEBUG_DEATH(statement, regex) \
- ASSERT_DEATH(statement, regex)
-
-# endif // NDEBUG for EXPECT_DEBUG_DEATH
-#endif // GTEST_HAS_DEATH_TEST
-
-// This macro is used for implementing macros such as
-// EXPECT_DEATH_IF_SUPPORTED and ASSERT_DEATH_IF_SUPPORTED on systems where
-// death tests are not supported. Those macros must compile on such systems
-// if and only if EXPECT_DEATH and ASSERT_DEATH compile with the same parameters
-// on systems that support death tests. This allows one to write such a macro on
-// a system that does not support death tests and be sure that it will compile
-// on a death-test supporting system. It is exposed publicly so that systems
-// that have death-tests with stricter requirements than GTEST_HAS_DEATH_TEST
-// can write their own equivalent of EXPECT_DEATH_IF_SUPPORTED and
-// ASSERT_DEATH_IF_SUPPORTED.
-//
-// Parameters:
-// statement - A statement that a macro such as EXPECT_DEATH would test
-// for program termination. This macro has to make sure this
-// statement is compiled but not executed, to ensure that
-// EXPECT_DEATH_IF_SUPPORTED compiles with a certain
-// parameter if and only if EXPECT_DEATH compiles with it.
-// regex - A regex that a macro such as EXPECT_DEATH would use to test
-// the output of statement. This parameter has to be
-// compiled but not evaluated by this macro, to ensure that
-// this macro only accepts expressions that a macro such as
-// EXPECT_DEATH would accept.
-// terminator - Must be an empty statement for EXPECT_DEATH_IF_SUPPORTED
-// and a return statement for ASSERT_DEATH_IF_SUPPORTED.
-// This ensures that ASSERT_DEATH_IF_SUPPORTED will not
-// compile inside functions where ASSERT_DEATH doesn't
-// compile.
-//
-// The branch that has an always false condition is used to ensure that
-// statement and regex are compiled (and thus syntactically correct) but
-// never executed. The unreachable code macro protects the terminator
-// statement from generating an 'unreachable code' warning in case
-// statement unconditionally returns or throws. The Message constructor at
-// the end allows the syntax of streaming additional messages into the
-// macro, for compilational compatibility with EXPECT_DEATH/ASSERT_DEATH.
-# define GTEST_UNSUPPORTED_DEATH_TEST(statement, regex, terminator) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (::testing::internal::AlwaysTrue()) { \
- GTEST_LOG_(WARNING) \
- << "Death tests are not supported on this platform.\n" \
- << "Statement '" #statement "' cannot be verified."; \
- } else if (::testing::internal::AlwaysFalse()) { \
- ::testing::internal::RE::PartialMatch(".*", (regex)); \
- GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
- terminator; \
- } else \
- ::testing::Message()
-
-// EXPECT_DEATH_IF_SUPPORTED(statement, regex) and
-// ASSERT_DEATH_IF_SUPPORTED(statement, regex) expand to real death tests if
-// death tests are supported; otherwise they just issue a warning. This is
-// useful when you are combining death test assertions with normal test
-// assertions in one test.
-#if GTEST_HAS_DEATH_TEST
-# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
- EXPECT_DEATH(statement, regex)
-# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
- ASSERT_DEATH(statement, regex)
-#else
-# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
- GTEST_UNSUPPORTED_DEATH_TEST(statement, regex, )
-# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
- GTEST_UNSUPPORTED_DEATH_TEST(statement, regex, return)
-#endif
-
-} // namespace testing
-
-#endif // GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-matchers.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-matchers.h
deleted file mode 100644
index 9de6c2e10a2..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-matchers.h
+++ /dev/null
@@ -1,750 +0,0 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This file implements just enough of the matcher interface to allow
-// EXPECT_DEATH and friends to accept a matcher argument.
-
-// IWYU pragma: private, include "testing/base/public/gunit.h"
-// IWYU pragma: friend third_party/googletest/googlemock/.*
-// IWYU pragma: friend third_party/googletest/googletest/.*
-
-#ifndef GTEST_INCLUDE_GTEST_GTEST_MATCHERS_H_
-#define GTEST_INCLUDE_GTEST_GTEST_MATCHERS_H_
-
-#include <memory>
-#include <ostream>
-#include <string>
-#include <type_traits>
-
-#include "gtest/gtest-printers.h"
-#include "gtest/internal/gtest-internal.h"
-#include "gtest/internal/gtest-port.h"
-
-// MSVC warning C5046 is new as of VS2017 version 15.8.
-#if defined(_MSC_VER) && _MSC_VER >= 1915
-#define GTEST_MAYBE_5046_ 5046
-#else
-#define GTEST_MAYBE_5046_
-#endif
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(
- 4251 GTEST_MAYBE_5046_ /* class A needs to have dll-interface to be used by
- clients of class B */
- /* Symbol involving type with internal linkage not defined */)
-
-namespace testing {
-
-// To implement a matcher Foo for type T, define:
-// 1. a class FooMatcherImpl that implements the
-// MatcherInterface<T> interface, and
-// 2. a factory function that creates a Matcher<T> object from a
-// FooMatcherImpl*.
-//
-// The two-level delegation design makes it possible to allow a user
-// to write "v" instead of "Eq(v)" where a Matcher is expected, which
-// is impossible if we pass matchers by pointers. It also eases
-// ownership management as Matcher objects can now be copied like
-// plain values.
-
-// MatchResultListener is an abstract class. Its << operator can be
-// used by a matcher to explain why a value matches or doesn't match.
-//
-class MatchResultListener {
- public:
- // Creates a listener object with the given underlying ostream. The
- // listener does not own the ostream, and does not dereference it
- // in the constructor or destructor.
- explicit MatchResultListener(::std::ostream* os) : stream_(os) {}
- virtual ~MatchResultListener() = 0; // Makes this class abstract.
-
- // Streams x to the underlying ostream; does nothing if the ostream
- // is NULL.
- template <typename T>
- MatchResultListener& operator<<(const T& x) {
- if (stream_ != nullptr) *stream_ << x;
- return *this;
- }
-
- // Returns the underlying ostream.
- ::std::ostream* stream() { return stream_; }
-
- // Returns true if and only if the listener is interested in an explanation
- // of the match result. A matcher's MatchAndExplain() method can use
- // this information to avoid generating the explanation when no one
- // intends to hear it.
- bool IsInterested() const { return stream_ != nullptr; }
-
- private:
- ::std::ostream* const stream_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(MatchResultListener);
-};
-
-inline MatchResultListener::~MatchResultListener() {
-}
-
-// An instance of a subclass of this knows how to describe itself as a
-// matcher.
-class MatcherDescriberInterface {
- public:
- virtual ~MatcherDescriberInterface() {}
-
- // Describes this matcher to an ostream. The function should print
- // a verb phrase that describes the property a value matching this
- // matcher should have. The subject of the verb phrase is the value
- // being matched. For example, the DescribeTo() method of the Gt(7)
- // matcher prints "is greater than 7".
- virtual void DescribeTo(::std::ostream* os) const = 0;
-
- // Describes the negation of this matcher to an ostream. For
- // example, if the description of this matcher is "is greater than
- // 7", the negated description could be "is not greater than 7".
- // You are not required to override this when implementing
- // MatcherInterface, but it is highly advised so that your matcher
- // can produce good error messages.
- virtual void DescribeNegationTo(::std::ostream* os) const {
- *os << "not (";
- DescribeTo(os);
- *os << ")";
- }
-};
-
-// The implementation of a matcher.
-template <typename T>
-class MatcherInterface : public MatcherDescriberInterface {
- public:
- // Returns true if and only if the matcher matches x; also explains the
- // match result to 'listener' if necessary (see the next paragraph), in
- // the form of a non-restrictive relative clause ("which ...",
- // "whose ...", etc) that describes x. For example, the
- // MatchAndExplain() method of the Pointee(...) matcher should
- // generate an explanation like "which points to ...".
- //
- // Implementations of MatchAndExplain() should add an explanation of
- // the match result *if and only if* they can provide additional
- // information that's not already present (or not obvious) in the
- // print-out of x and the matcher's description. Whether the match
- // succeeds is not a factor in deciding whether an explanation is
- // needed, as sometimes the caller needs to print a failure message
- // when the match succeeds (e.g. when the matcher is used inside
- // Not()).
- //
- // For example, a "has at least 10 elements" matcher should explain
- // what the actual element count is, regardless of the match result,
- // as it is useful information to the reader; on the other hand, an
- // "is empty" matcher probably only needs to explain what the actual
- // size is when the match fails, as it's redundant to say that the
- // size is 0 when the value is already known to be empty.
- //
- // You should override this method when defining a new matcher.
- //
- // It's the responsibility of the caller (Google Test) to guarantee
- // that 'listener' is not NULL. This helps to simplify a matcher's
- // implementation when it doesn't care about the performance, as it
- // can talk to 'listener' without checking its validity first.
- // However, in order to implement dummy listeners efficiently,
- // listener->stream() may be NULL.
- virtual bool MatchAndExplain(T x, MatchResultListener* listener) const = 0;
-
- // Inherits these methods from MatcherDescriberInterface:
- // virtual void DescribeTo(::std::ostream* os) const = 0;
- // virtual void DescribeNegationTo(::std::ostream* os) const;
-};
-
-namespace internal {
-
-// Converts a MatcherInterface<T> to a MatcherInterface<const T&>.
-template <typename T>
-class MatcherInterfaceAdapter : public MatcherInterface<const T&> {
- public:
- explicit MatcherInterfaceAdapter(const MatcherInterface<T>* impl)
- : impl_(impl) {}
- ~MatcherInterfaceAdapter() override { delete impl_; }
-
- void DescribeTo(::std::ostream* os) const override { impl_->DescribeTo(os); }
-
- void DescribeNegationTo(::std::ostream* os) const override {
- impl_->DescribeNegationTo(os);
- }
-
- bool MatchAndExplain(const T& x,
- MatchResultListener* listener) const override {
- return impl_->MatchAndExplain(x, listener);
- }
-
- private:
- const MatcherInterface<T>* const impl_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(MatcherInterfaceAdapter);
-};
-
-struct AnyEq {
- template <typename A, typename B>
- bool operator()(const A& a, const B& b) const { return a == b; }
-};
-struct AnyNe {
- template <typename A, typename B>
- bool operator()(const A& a, const B& b) const { return a != b; }
-};
-struct AnyLt {
- template <typename A, typename B>
- bool operator()(const A& a, const B& b) const { return a < b; }
-};
-struct AnyGt {
- template <typename A, typename B>
- bool operator()(const A& a, const B& b) const { return a > b; }
-};
-struct AnyLe {
- template <typename A, typename B>
- bool operator()(const A& a, const B& b) const { return a <= b; }
-};
-struct AnyGe {
- template <typename A, typename B>
- bool operator()(const A& a, const B& b) const { return a >= b; }
-};
-
-// A match result listener that ignores the explanation.
-class DummyMatchResultListener : public MatchResultListener {
- public:
- DummyMatchResultListener() : MatchResultListener(nullptr) {}
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(DummyMatchResultListener);
-};
-
-// A match result listener that forwards the explanation to a given
-// ostream. The difference between this and MatchResultListener is
-// that the former is concrete.
-class StreamMatchResultListener : public MatchResultListener {
- public:
- explicit StreamMatchResultListener(::std::ostream* os)
- : MatchResultListener(os) {}
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(StreamMatchResultListener);
-};
-
-// An internal class for implementing Matcher<T>, which will derive
-// from it. We put functionalities common to all Matcher<T>
-// specializations here to avoid code duplication.
-template <typename T>
-class MatcherBase {
- public:
- // Returns true if and only if the matcher matches x; also explains the
- // match result to 'listener'.
- bool MatchAndExplain(const T& x, MatchResultListener* listener) const {
- return impl_->MatchAndExplain(x, listener);
- }
-
- // Returns true if and only if this matcher matches x.
- bool Matches(const T& x) const {
- DummyMatchResultListener dummy;
- return MatchAndExplain(x, &dummy);
- }
-
- // Describes this matcher to an ostream.
- void DescribeTo(::std::ostream* os) const { impl_->DescribeTo(os); }
-
- // Describes the negation of this matcher to an ostream.
- void DescribeNegationTo(::std::ostream* os) const {
- impl_->DescribeNegationTo(os);
- }
-
- // Explains why x matches, or doesn't match, the matcher.
- void ExplainMatchResultTo(const T& x, ::std::ostream* os) const {
- StreamMatchResultListener listener(os);
- MatchAndExplain(x, &listener);
- }
-
- // Returns the describer for this matcher object; retains ownership
- // of the describer, which is only guaranteed to be alive when
- // this matcher object is alive.
- const MatcherDescriberInterface* GetDescriber() const {
- return impl_.get();
- }
-
- protected:
- MatcherBase() {}
-
- // Constructs a matcher from its implementation.
- explicit MatcherBase(const MatcherInterface<const T&>* impl) : impl_(impl) {}
-
- template <typename U>
- explicit MatcherBase(
- const MatcherInterface<U>* impl,
- typename std::enable_if<!std::is_same<U, const U&>::value>::type* =
- nullptr)
- : impl_(new internal::MatcherInterfaceAdapter<U>(impl)) {}
-
- MatcherBase(const MatcherBase&) = default;
- MatcherBase& operator=(const MatcherBase&) = default;
- MatcherBase(MatcherBase&&) = default;
- MatcherBase& operator=(MatcherBase&&) = default;
-
- virtual ~MatcherBase() {}
-
- private:
- std::shared_ptr<const MatcherInterface<const T&>> impl_;
-};
-
-} // namespace internal
-
-// A Matcher<T> is a copyable and IMMUTABLE (except by assignment)
-// object that can check whether a value of type T matches. The
-// implementation of Matcher<T> is just a std::shared_ptr to const
-// MatcherInterface<T>. Don't inherit from Matcher!
-template <typename T>
-class Matcher : public internal::MatcherBase<T> {
- public:
- // Constructs a null matcher. Needed for storing Matcher objects in STL
- // containers. A default-constructed matcher is not yet initialized. You
- // cannot use it until a valid value has been assigned to it.
- explicit Matcher() {} // NOLINT
-
- // Constructs a matcher from its implementation.
- explicit Matcher(const MatcherInterface<const T&>* impl)
- : internal::MatcherBase<T>(impl) {}
-
- template <typename U>
- explicit Matcher(
- const MatcherInterface<U>* impl,
- typename std::enable_if<!std::is_same<U, const U&>::value>::type* =
- nullptr)
- : internal::MatcherBase<T>(impl) {}
-
- // Implicit constructor here allows people to write
- // EXPECT_CALL(foo, Bar(5)) instead of EXPECT_CALL(foo, Bar(Eq(5))) sometimes
- Matcher(T value); // NOLINT
-};
-
-// The following two specializations allow the user to write str
-// instead of Eq(str) and "foo" instead of Eq("foo") when a std::string
-// matcher is expected.
-template <>
-class GTEST_API_ Matcher<const std::string&>
- : public internal::MatcherBase<const std::string&> {
- public:
- Matcher() {}
-
- explicit Matcher(const MatcherInterface<const std::string&>* impl)
- : internal::MatcherBase<const std::string&>(impl) {}
-
- // Allows the user to write str instead of Eq(str) sometimes, where
- // str is a std::string object.
- Matcher(const std::string& s); // NOLINT
-
- // Allows the user to write "foo" instead of Eq("foo") sometimes.
- Matcher(const char* s); // NOLINT
-};
-
-template <>
-class GTEST_API_ Matcher<std::string>
- : public internal::MatcherBase<std::string> {
- public:
- Matcher() {}
-
- explicit Matcher(const MatcherInterface<const std::string&>* impl)
- : internal::MatcherBase<std::string>(impl) {}
- explicit Matcher(const MatcherInterface<std::string>* impl)
- : internal::MatcherBase<std::string>(impl) {}
-
- // Allows the user to write str instead of Eq(str) sometimes, where
- // str is a string object.
- Matcher(const std::string& s); // NOLINT
-
- // Allows the user to write "foo" instead of Eq("foo") sometimes.
- Matcher(const char* s); // NOLINT
-};
-
-#if GTEST_HAS_ABSL
-// The following two specializations allow the user to write str
-// instead of Eq(str) and "foo" instead of Eq("foo") when a absl::string_view
-// matcher is expected.
-template <>
-class GTEST_API_ Matcher<const absl::string_view&>
- : public internal::MatcherBase<const absl::string_view&> {
- public:
- Matcher() {}
-
- explicit Matcher(const MatcherInterface<const absl::string_view&>* impl)
- : internal::MatcherBase<const absl::string_view&>(impl) {}
-
- // Allows the user to write str instead of Eq(str) sometimes, where
- // str is a std::string object.
- Matcher(const std::string& s); // NOLINT
-
- // Allows the user to write "foo" instead of Eq("foo") sometimes.
- Matcher(const char* s); // NOLINT
-
- // Allows the user to pass absl::string_views directly.
- Matcher(absl::string_view s); // NOLINT
-};
-
-template <>
-class GTEST_API_ Matcher<absl::string_view>
- : public internal::MatcherBase<absl::string_view> {
- public:
- Matcher() {}
-
- explicit Matcher(const MatcherInterface<const absl::string_view&>* impl)
- : internal::MatcherBase<absl::string_view>(impl) {}
- explicit Matcher(const MatcherInterface<absl::string_view>* impl)
- : internal::MatcherBase<absl::string_view>(impl) {}
-
- // Allows the user to write str instead of Eq(str) sometimes, where
- // str is a std::string object.
- Matcher(const std::string& s); // NOLINT
-
- // Allows the user to write "foo" instead of Eq("foo") sometimes.
- Matcher(const char* s); // NOLINT
-
- // Allows the user to pass absl::string_views directly.
- Matcher(absl::string_view s); // NOLINT
-};
-#endif // GTEST_HAS_ABSL
-
-// Prints a matcher in a human-readable format.
-template <typename T>
-std::ostream& operator<<(std::ostream& os, const Matcher<T>& matcher) {
- matcher.DescribeTo(&os);
- return os;
-}
-
-// The PolymorphicMatcher class template makes it easy to implement a
-// polymorphic matcher (i.e. a matcher that can match values of more
-// than one type, e.g. Eq(n) and NotNull()).
-//
-// To define a polymorphic matcher, a user should provide an Impl
-// class that has a DescribeTo() method and a DescribeNegationTo()
-// method, and define a member function (or member function template)
-//
-// bool MatchAndExplain(const Value& value,
-// MatchResultListener* listener) const;
-//
-// See the definition of NotNull() for a complete example.
-template <class Impl>
-class PolymorphicMatcher {
- public:
- explicit PolymorphicMatcher(const Impl& an_impl) : impl_(an_impl) {}
-
- // Returns a mutable reference to the underlying matcher
- // implementation object.
- Impl& mutable_impl() { return impl_; }
-
- // Returns an immutable reference to the underlying matcher
- // implementation object.
- const Impl& impl() const { return impl_; }
-
- template <typename T>
- operator Matcher<T>() const {
- return Matcher<T>(new MonomorphicImpl<const T&>(impl_));
- }
-
- private:
- template <typename T>
- class MonomorphicImpl : public MatcherInterface<T> {
- public:
- explicit MonomorphicImpl(const Impl& impl) : impl_(impl) {}
-
- virtual void DescribeTo(::std::ostream* os) const { impl_.DescribeTo(os); }
-
- virtual void DescribeNegationTo(::std::ostream* os) const {
- impl_.DescribeNegationTo(os);
- }
-
- virtual bool MatchAndExplain(T x, MatchResultListener* listener) const {
- return impl_.MatchAndExplain(x, listener);
- }
-
- private:
- const Impl impl_;
- };
-
- Impl impl_;
-};
-
-// Creates a matcher from its implementation.
-// DEPRECATED: Especially in the generic code, prefer:
-// Matcher<T>(new MyMatcherImpl<const T&>(...));
-//
-// MakeMatcher may create a Matcher that accepts its argument by value, which
-// leads to unnecessary copies & lack of support for non-copyable types.
-template <typename T>
-inline Matcher<T> MakeMatcher(const MatcherInterface<T>* impl) {
- return Matcher<T>(impl);
-}
-
-// Creates a polymorphic matcher from its implementation. This is
-// easier to use than the PolymorphicMatcher<Impl> constructor as it
-// doesn't require you to explicitly write the template argument, e.g.
-//
-// MakePolymorphicMatcher(foo);
-// vs
-// PolymorphicMatcher<TypeOfFoo>(foo);
-template <class Impl>
-inline PolymorphicMatcher<Impl> MakePolymorphicMatcher(const Impl& impl) {
- return PolymorphicMatcher<Impl>(impl);
-}
-
-namespace internal {
-// Implements a matcher that compares a given value with a
-// pre-supplied value using one of the ==, <=, <, etc, operators. The
-// two values being compared don't have to have the same type.
-//
-// The matcher defined here is polymorphic (for example, Eq(5) can be
-// used to match an int, a short, a double, etc). Therefore we use
-// a template type conversion operator in the implementation.
-//
-// The following template definition assumes that the Rhs parameter is
-// a "bare" type (i.e. neither 'const T' nor 'T&').
-template <typename D, typename Rhs, typename Op>
-class ComparisonBase {
- public:
- explicit ComparisonBase(const Rhs& rhs) : rhs_(rhs) {}
- template <typename Lhs>
- operator Matcher<Lhs>() const {
- return Matcher<Lhs>(new Impl<const Lhs&>(rhs_));
- }
-
- private:
- template <typename T>
- static const T& Unwrap(const T& v) { return v; }
- template <typename T>
- static const T& Unwrap(std::reference_wrapper<T> v) { return v; }
-
- template <typename Lhs, typename = Rhs>
- class Impl : public MatcherInterface<Lhs> {
- public:
- explicit Impl(const Rhs& rhs) : rhs_(rhs) {}
- bool MatchAndExplain(Lhs lhs,
- MatchResultListener* /* listener */) const override {
- return Op()(lhs, Unwrap(rhs_));
- }
- void DescribeTo(::std::ostream* os) const override {
- *os << D::Desc() << " ";
- UniversalPrint(Unwrap(rhs_), os);
- }
- void DescribeNegationTo(::std::ostream* os) const override {
- *os << D::NegatedDesc() << " ";
- UniversalPrint(Unwrap(rhs_), os);
- }
-
- private:
- Rhs rhs_;
- };
- Rhs rhs_;
-};
-
-template <typename Rhs>
-class EqMatcher : public ComparisonBase<EqMatcher<Rhs>, Rhs, AnyEq> {
- public:
- explicit EqMatcher(const Rhs& rhs)
- : ComparisonBase<EqMatcher<Rhs>, Rhs, AnyEq>(rhs) { }
- static const char* Desc() { return "is equal to"; }
- static const char* NegatedDesc() { return "isn't equal to"; }
-};
-template <typename Rhs>
-class NeMatcher : public ComparisonBase<NeMatcher<Rhs>, Rhs, AnyNe> {
- public:
- explicit NeMatcher(const Rhs& rhs)
- : ComparisonBase<NeMatcher<Rhs>, Rhs, AnyNe>(rhs) { }
- static const char* Desc() { return "isn't equal to"; }
- static const char* NegatedDesc() { return "is equal to"; }
-};
-template <typename Rhs>
-class LtMatcher : public ComparisonBase<LtMatcher<Rhs>, Rhs, AnyLt> {
- public:
- explicit LtMatcher(const Rhs& rhs)
- : ComparisonBase<LtMatcher<Rhs>, Rhs, AnyLt>(rhs) { }
- static const char* Desc() { return "is <"; }
- static const char* NegatedDesc() { return "isn't <"; }
-};
-template <typename Rhs>
-class GtMatcher : public ComparisonBase<GtMatcher<Rhs>, Rhs, AnyGt> {
- public:
- explicit GtMatcher(const Rhs& rhs)
- : ComparisonBase<GtMatcher<Rhs>, Rhs, AnyGt>(rhs) { }
- static const char* Desc() { return "is >"; }
- static const char* NegatedDesc() { return "isn't >"; }
-};
-template <typename Rhs>
-class LeMatcher : public ComparisonBase<LeMatcher<Rhs>, Rhs, AnyLe> {
- public:
- explicit LeMatcher(const Rhs& rhs)
- : ComparisonBase<LeMatcher<Rhs>, Rhs, AnyLe>(rhs) { }
- static const char* Desc() { return "is <="; }
- static const char* NegatedDesc() { return "isn't <="; }
-};
-template <typename Rhs>
-class GeMatcher : public ComparisonBase<GeMatcher<Rhs>, Rhs, AnyGe> {
- public:
- explicit GeMatcher(const Rhs& rhs)
- : ComparisonBase<GeMatcher<Rhs>, Rhs, AnyGe>(rhs) { }
- static const char* Desc() { return "is >="; }
- static const char* NegatedDesc() { return "isn't >="; }
-};
-
-// Implements polymorphic matchers MatchesRegex(regex) and
-// ContainsRegex(regex), which can be used as a Matcher<T> as long as
-// T can be converted to a string.
-class MatchesRegexMatcher {
- public:
- MatchesRegexMatcher(const RE* regex, bool full_match)
- : regex_(regex), full_match_(full_match) {}
-
-#if GTEST_HAS_ABSL
- bool MatchAndExplain(const absl::string_view& s,
- MatchResultListener* listener) const {
- return MatchAndExplain(std::string(s), listener);
- }
-#endif // GTEST_HAS_ABSL
-
- // Accepts pointer types, particularly:
- // const char*
- // char*
- // const wchar_t*
- // wchar_t*
- template <typename CharType>
- bool MatchAndExplain(CharType* s, MatchResultListener* listener) const {
- return s != nullptr && MatchAndExplain(std::string(s), listener);
- }
-
- // Matches anything that can convert to std::string.
- //
- // This is a template, not just a plain function with const std::string&,
- // because absl::string_view has some interfering non-explicit constructors.
- template <class MatcheeStringType>
- bool MatchAndExplain(const MatcheeStringType& s,
- MatchResultListener* /* listener */) const {
- const std::string& s2(s);
- return full_match_ ? RE::FullMatch(s2, *regex_)
- : RE::PartialMatch(s2, *regex_);
- }
-
- void DescribeTo(::std::ostream* os) const {
- *os << (full_match_ ? "matches" : "contains") << " regular expression ";
- UniversalPrinter<std::string>::Print(regex_->pattern(), os);
- }
-
- void DescribeNegationTo(::std::ostream* os) const {
- *os << "doesn't " << (full_match_ ? "match" : "contain")
- << " regular expression ";
- UniversalPrinter<std::string>::Print(regex_->pattern(), os);
- }
-
- private:
- const std::shared_ptr<const RE> regex_;
- const bool full_match_;
-};
-} // namespace internal
-
-// Matches a string that fully matches regular expression 'regex'.
-// The matcher takes ownership of 'regex'.
-inline PolymorphicMatcher<internal::MatchesRegexMatcher> MatchesRegex(
- const internal::RE* regex) {
- return MakePolymorphicMatcher(internal::MatchesRegexMatcher(regex, true));
-}
-inline PolymorphicMatcher<internal::MatchesRegexMatcher> MatchesRegex(
- const std::string& regex) {
- return MatchesRegex(new internal::RE(regex));
-}
-
-// Matches a string that contains regular expression 'regex'.
-// The matcher takes ownership of 'regex'.
-inline PolymorphicMatcher<internal::MatchesRegexMatcher> ContainsRegex(
- const internal::RE* regex) {
- return MakePolymorphicMatcher(internal::MatchesRegexMatcher(regex, false));
-}
-inline PolymorphicMatcher<internal::MatchesRegexMatcher> ContainsRegex(
- const std::string& regex) {
- return ContainsRegex(new internal::RE(regex));
-}
-
-// Creates a polymorphic matcher that matches anything equal to x.
-// Note: if the parameter of Eq() were declared as const T&, Eq("foo")
-// wouldn't compile.
-template <typename T>
-inline internal::EqMatcher<T> Eq(T x) { return internal::EqMatcher<T>(x); }
-
-// Constructs a Matcher<T> from a 'value' of type T. The constructed
-// matcher matches any value that's equal to 'value'.
-template <typename T>
-Matcher<T>::Matcher(T value) { *this = Eq(value); }
-
-// Creates a monomorphic matcher that matches anything with type Lhs
-// and equal to rhs. A user may need to use this instead of Eq(...)
-// in order to resolve an overloading ambiguity.
-//
-// TypedEq<T>(x) is just a convenient short-hand for Matcher<T>(Eq(x))
-// or Matcher<T>(x), but more readable than the latter.
-//
-// We could define similar monomorphic matchers for other comparison
-// operations (e.g. TypedLt, TypedGe, and etc), but decided not to do
-// it yet as those are used much less than Eq() in practice. A user
-// can always write Matcher<T>(Lt(5)) to be explicit about the type,
-// for example.
-template <typename Lhs, typename Rhs>
-inline Matcher<Lhs> TypedEq(const Rhs& rhs) { return Eq(rhs); }
-
-// Creates a polymorphic matcher that matches anything >= x.
-template <typename Rhs>
-inline internal::GeMatcher<Rhs> Ge(Rhs x) {
- return internal::GeMatcher<Rhs>(x);
-}
-
-// Creates a polymorphic matcher that matches anything > x.
-template <typename Rhs>
-inline internal::GtMatcher<Rhs> Gt(Rhs x) {
- return internal::GtMatcher<Rhs>(x);
-}
-
-// Creates a polymorphic matcher that matches anything <= x.
-template <typename Rhs>
-inline internal::LeMatcher<Rhs> Le(Rhs x) {
- return internal::LeMatcher<Rhs>(x);
-}
-
-// Creates a polymorphic matcher that matches anything < x.
-template <typename Rhs>
-inline internal::LtMatcher<Rhs> Lt(Rhs x) {
- return internal::LtMatcher<Rhs>(x);
-}
-
-// Creates a polymorphic matcher that matches anything != x.
-template <typename Rhs>
-inline internal::NeMatcher<Rhs> Ne(Rhs x) {
- return internal::NeMatcher<Rhs>(x);
-}
-} // namespace testing
-
-GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251 5046
-
-#endif // GTEST_INCLUDE_GTEST_GTEST_MATCHERS_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-message.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-message.h
deleted file mode 100644
index 4a80e11e6b2..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-message.h
+++ /dev/null
@@ -1,218 +0,0 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This header file defines the Message class.
-//
-// IMPORTANT NOTE: Due to limitation of the C++ language, we have to
-// leave some internal implementation details in this header file.
-// They are clearly marked by comments like this:
-//
-// // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-//
-// Such code is NOT meant to be used by a user directly, and is subject
-// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user
-// program!
-
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
-#define GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
-
-#include <limits>
-#include <memory>
-
-#include "gtest/internal/gtest-port.h"
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
-/* class A needs to have dll-interface to be used by clients of class B */)
-
-// Ensures that there is at least one operator<< in the global namespace.
-// See Message& operator<<(...) below for why.
-void operator<<(const testing::internal::Secret&, int);
-
-namespace testing {
-
-// The Message class works like an ostream repeater.
-//
-// Typical usage:
-//
-// 1. You stream a bunch of values to a Message object.
-// It will remember the text in a stringstream.
-// 2. Then you stream the Message object to an ostream.
-// This causes the text in the Message to be streamed
-// to the ostream.
-//
-// For example;
-//
-// testing::Message foo;
-// foo << 1 << " != " << 2;
-// std::cout << foo;
-//
-// will print "1 != 2".
-//
-// Message is not intended to be inherited from. In particular, its
-// destructor is not virtual.
-//
-// Note that stringstream behaves differently in gcc and in MSVC. You
-// can stream a NULL char pointer to it in the former, but not in the
-// latter (it causes an access violation if you do). The Message
-// class hides this difference by treating a NULL char pointer as
-// "(null)".
-class GTEST_API_ Message {
- private:
- // The type of basic IO manipulators (endl, ends, and flush) for
- // narrow streams.
- typedef std::ostream& (*BasicNarrowIoManip)(std::ostream&);
-
- public:
- // Constructs an empty Message.
- Message();
-
- // Copy constructor.
- Message(const Message& msg) : ss_(new ::std::stringstream) { // NOLINT
- *ss_ << msg.GetString();
- }
-
- // Constructs a Message from a C-string.
- explicit Message(const char* str) : ss_(new ::std::stringstream) {
- *ss_ << str;
- }
-
- // Streams a non-pointer value to this object.
- template <typename T>
- inline Message& operator <<(const T& val) {
- // Some libraries overload << for STL containers. These
- // overloads are defined in the global namespace instead of ::std.
- //
- // C++'s symbol lookup rule (i.e. Koenig lookup) says that these
- // overloads are visible in either the std namespace or the global
- // namespace, but not other namespaces, including the testing
- // namespace which Google Test's Message class is in.
- //
- // To allow STL containers (and other types that has a << operator
- // defined in the global namespace) to be used in Google Test
- // assertions, testing::Message must access the custom << operator
- // from the global namespace. With this using declaration,
- // overloads of << defined in the global namespace and those
- // visible via Koenig lookup are both exposed in this function.
- using ::operator <<;
- *ss_ << val;
- return *this;
- }
-
- // Streams a pointer value to this object.
- //
- // This function is an overload of the previous one. When you
- // stream a pointer to a Message, this definition will be used as it
- // is more specialized. (The C++ Standard, section
- // [temp.func.order].) If you stream a non-pointer, then the
- // previous definition will be used.
- //
- // The reason for this overload is that streaming a NULL pointer to
- // ostream is undefined behavior. Depending on the compiler, you
- // may get "0", "(nil)", "(null)", or an access violation. To
- // ensure consistent result across compilers, we always treat NULL
- // as "(null)".
- template <typename T>
- inline Message& operator <<(T* const& pointer) { // NOLINT
- if (pointer == nullptr) {
- *ss_ << "(null)";
- } else {
- *ss_ << pointer;
- }
- return *this;
- }
-
- // Since the basic IO manipulators are overloaded for both narrow
- // and wide streams, we have to provide this specialized definition
- // of operator <<, even though its body is the same as the
- // templatized version above. Without this definition, streaming
- // endl or other basic IO manipulators to Message will confuse the
- // compiler.
- Message& operator <<(BasicNarrowIoManip val) {
- *ss_ << val;
- return *this;
- }
-
- // Instead of 1/0, we want to see true/false for bool values.
- Message& operator <<(bool b) {
- return *this << (b ? "true" : "false");
- }
-
- // These two overloads allow streaming a wide C string to a Message
- // using the UTF-8 encoding.
- Message& operator <<(const wchar_t* wide_c_str);
- Message& operator <<(wchar_t* wide_c_str);
-
-#if GTEST_HAS_STD_WSTRING
- // Converts the given wide string to a narrow string using the UTF-8
- // encoding, and streams the result to this Message object.
- Message& operator <<(const ::std::wstring& wstr);
-#endif // GTEST_HAS_STD_WSTRING
-
- // Gets the text streamed to this object so far as an std::string.
- // Each '\0' character in the buffer is replaced with "\\0".
- //
- // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
- std::string GetString() const;
-
- private:
- // We'll hold the text streamed to this object here.
- const std::unique_ptr< ::std::stringstream> ss_;
-
- // We declare (but don't implement) this to prevent the compiler
- // from implementing the assignment operator.
- void operator=(const Message&);
-};
-
-// Streams a Message to an ostream.
-inline std::ostream& operator <<(std::ostream& os, const Message& sb) {
- return os << sb.GetString();
-}
-
-namespace internal {
-
-// Converts a streamable value to an std::string. A NULL pointer is
-// converted to "(null)". When the input value is a ::string,
-// ::std::string, ::wstring, or ::std::wstring object, each NUL
-// character in it is replaced with "\\0".
-template <typename T>
-std::string StreamableToString(const T& streamable) {
- return (Message() << streamable).GetString();
-}
-
-} // namespace internal
-} // namespace testing
-
-GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251
-
-#endif // GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-param-test.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-param-test.h
deleted file mode 100644
index c2e6eae3d83..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-param-test.h
+++ /dev/null
@@ -1,503 +0,0 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Macros and functions for implementing parameterized tests
-// in Google C++ Testing and Mocking Framework (Google Test)
-//
-// This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
-//
-// GOOGLETEST_CM0001 DO NOT DELETE
-#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
-#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
-
-
-// Value-parameterized tests allow you to test your code with different
-// parameters without writing multiple copies of the same test.
-//
-// Here is how you use value-parameterized tests:
-
-#if 0
-
-// To write value-parameterized tests, first you should define a fixture
-// class. It is usually derived from testing::TestWithParam<T> (see below for
-// another inheritance scheme that's sometimes useful in more complicated
-// class hierarchies), where the type of your parameter values.
-// TestWithParam<T> is itself derived from testing::Test. T can be any
-// copyable type. If it's a raw pointer, you are responsible for managing the
-// lifespan of the pointed values.
-
-class FooTest : public ::testing::TestWithParam<const char*> {
- // You can implement all the usual class fixture members here.
-};
-
-// Then, use the TEST_P macro to define as many parameterized tests
-// for this fixture as you want. The _P suffix is for "parameterized"
-// or "pattern", whichever you prefer to think.
-
-TEST_P(FooTest, DoesBlah) {
- // Inside a test, access the test parameter with the GetParam() method
- // of the TestWithParam<T> class:
- EXPECT_TRUE(foo.Blah(GetParam()));
- ...
-}
-
-TEST_P(FooTest, HasBlahBlah) {
- ...
-}
-
-// Finally, you can use INSTANTIATE_TEST_SUITE_P to instantiate the test
-// case with any set of parameters you want. Google Test defines a number
-// of functions for generating test parameters. They return what we call
-// (surprise!) parameter generators. Here is a summary of them, which
-// are all in the testing namespace:
-//
-//
-// Range(begin, end [, step]) - Yields values {begin, begin+step,
-// begin+step+step, ...}. The values do not
-// include end. step defaults to 1.
-// Values(v1, v2, ..., vN) - Yields values {v1, v2, ..., vN}.
-// ValuesIn(container) - Yields values from a C-style array, an STL
-// ValuesIn(begin,end) container, or an iterator range [begin, end).
-// Bool() - Yields sequence {false, true}.
-// Combine(g1, g2, ..., gN) - Yields all combinations (the Cartesian product
-// for the math savvy) of the values generated
-// by the N generators.
-//
-// For more details, see comments at the definitions of these functions below
-// in this file.
-//
-// The following statement will instantiate tests from the FooTest test suite
-// each with parameter values "meeny", "miny", and "moe".
-
-INSTANTIATE_TEST_SUITE_P(InstantiationName,
- FooTest,
- Values("meeny", "miny", "moe"));
-
-// To distinguish different instances of the pattern, (yes, you
-// can instantiate it more than once) the first argument to the
-// INSTANTIATE_TEST_SUITE_P macro is a prefix that will be added to the
-// actual test suite name. Remember to pick unique prefixes for different
-// instantiations. The tests from the instantiation above will have
-// these names:
-//
-// * InstantiationName/FooTest.DoesBlah/0 for "meeny"
-// * InstantiationName/FooTest.DoesBlah/1 for "miny"
-// * InstantiationName/FooTest.DoesBlah/2 for "moe"
-// * InstantiationName/FooTest.HasBlahBlah/0 for "meeny"
-// * InstantiationName/FooTest.HasBlahBlah/1 for "miny"
-// * InstantiationName/FooTest.HasBlahBlah/2 for "moe"
-//
-// You can use these names in --gtest_filter.
-//
-// This statement will instantiate all tests from FooTest again, each
-// with parameter values "cat" and "dog":
-
-const char* pets[] = {"cat", "dog"};
-INSTANTIATE_TEST_SUITE_P(AnotherInstantiationName, FooTest, ValuesIn(pets));
-
-// The tests from the instantiation above will have these names:
-//
-// * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat"
-// * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog"
-// * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat"
-// * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog"
-//
-// Please note that INSTANTIATE_TEST_SUITE_P will instantiate all tests
-// in the given test suite, whether their definitions come before or
-// AFTER the INSTANTIATE_TEST_SUITE_P statement.
-//
-// Please also note that generator expressions (including parameters to the
-// generators) are evaluated in InitGoogleTest(), after main() has started.
-// This allows the user on one hand, to adjust generator parameters in order
-// to dynamically determine a set of tests to run and on the other hand,
-// give the user a chance to inspect the generated tests with Google Test
-// reflection API before RUN_ALL_TESTS() is executed.
-//
-// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc
-// for more examples.
-//
-// In the future, we plan to publish the API for defining new parameter
-// generators. But for now this interface remains part of the internal
-// implementation and is subject to change.
-//
-//
-// A parameterized test fixture must be derived from testing::Test and from
-// testing::WithParamInterface<T>, where T is the type of the parameter
-// values. Inheriting from TestWithParam<T> satisfies that requirement because
-// TestWithParam<T> inherits from both Test and WithParamInterface. In more
-// complicated hierarchies, however, it is occasionally useful to inherit
-// separately from Test and WithParamInterface. For example:
-
-class BaseTest : public ::testing::Test {
- // You can inherit all the usual members for a non-parameterized test
- // fixture here.
-};
-
-class DerivedTest : public BaseTest, public ::testing::WithParamInterface<int> {
- // The usual test fixture members go here too.
-};
-
-TEST_F(BaseTest, HasFoo) {
- // This is an ordinary non-parameterized test.
-}
-
-TEST_P(DerivedTest, DoesBlah) {
- // GetParam works just the same here as if you inherit from TestWithParam.
- EXPECT_TRUE(foo.Blah(GetParam()));
-}
-
-#endif // 0
-
-#include <iterator>
-#include <utility>
-
-#include "gtest/internal/gtest-internal.h"
-#include "gtest/internal/gtest-param-util.h"
-#include "gtest/internal/gtest-port.h"
-
-namespace testing {
-
-// Functions producing parameter generators.
-//
-// Google Test uses these generators to produce parameters for value-
-// parameterized tests. When a parameterized test suite is instantiated
-// with a particular generator, Google Test creates and runs tests
-// for each element in the sequence produced by the generator.
-//
-// In the following sample, tests from test suite FooTest are instantiated
-// each three times with parameter values 3, 5, and 8:
-//
-// class FooTest : public TestWithParam<int> { ... };
-//
-// TEST_P(FooTest, TestThis) {
-// }
-// TEST_P(FooTest, TestThat) {
-// }
-// INSTANTIATE_TEST_SUITE_P(TestSequence, FooTest, Values(3, 5, 8));
-//
-
-// Range() returns generators providing sequences of values in a range.
-//
-// Synopsis:
-// Range(start, end)
-// - returns a generator producing a sequence of values {start, start+1,
-// start+2, ..., }.
-// Range(start, end, step)
-// - returns a generator producing a sequence of values {start, start+step,
-// start+step+step, ..., }.
-// Notes:
-// * The generated sequences never include end. For example, Range(1, 5)
-// returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2)
-// returns a generator producing {1, 3, 5, 7}.
-// * start and end must have the same type. That type may be any integral or
-// floating-point type or a user defined type satisfying these conditions:
-// * It must be assignable (have operator=() defined).
-// * It must have operator+() (operator+(int-compatible type) for
-// two-operand version).
-// * It must have operator<() defined.
-// Elements in the resulting sequences will also have that type.
-// * Condition start < end must be satisfied in order for resulting sequences
-// to contain any elements.
-//
-template <typename T, typename IncrementT>
-internal::ParamGenerator<T> Range(T start, T end, IncrementT step) {
- return internal::ParamGenerator<T>(
- new internal::RangeGenerator<T, IncrementT>(start, end, step));
-}
-
-template <typename T>
-internal::ParamGenerator<T> Range(T start, T end) {
- return Range(start, end, 1);
-}
-
-// ValuesIn() function allows generation of tests with parameters coming from
-// a container.
-//
-// Synopsis:
-// ValuesIn(const T (&array)[N])
-// - returns a generator producing sequences with elements from
-// a C-style array.
-// ValuesIn(const Container& container)
-// - returns a generator producing sequences with elements from
-// an STL-style container.
-// ValuesIn(Iterator begin, Iterator end)
-// - returns a generator producing sequences with elements from
-// a range [begin, end) defined by a pair of STL-style iterators. These
-// iterators can also be plain C pointers.
-//
-// Please note that ValuesIn copies the values from the containers
-// passed in and keeps them to generate tests in RUN_ALL_TESTS().
-//
-// Examples:
-//
-// This instantiates tests from test suite StringTest
-// each with C-string values of "foo", "bar", and "baz":
-//
-// const char* strings[] = {"foo", "bar", "baz"};
-// INSTANTIATE_TEST_SUITE_P(StringSequence, StringTest, ValuesIn(strings));
-//
-// This instantiates tests from test suite StlStringTest
-// each with STL strings with values "a" and "b":
-//
-// ::std::vector< ::std::string> GetParameterStrings() {
-// ::std::vector< ::std::string> v;
-// v.push_back("a");
-// v.push_back("b");
-// return v;
-// }
-//
-// INSTANTIATE_TEST_SUITE_P(CharSequence,
-// StlStringTest,
-// ValuesIn(GetParameterStrings()));
-//
-//
-// This will also instantiate tests from CharTest
-// each with parameter values 'a' and 'b':
-//
-// ::std::list<char> GetParameterChars() {
-// ::std::list<char> list;
-// list.push_back('a');
-// list.push_back('b');
-// return list;
-// }
-// ::std::list<char> l = GetParameterChars();
-// INSTANTIATE_TEST_SUITE_P(CharSequence2,
-// CharTest,
-// ValuesIn(l.begin(), l.end()));
-//
-template <typename ForwardIterator>
-internal::ParamGenerator<
- typename std::iterator_traits<ForwardIterator>::value_type>
-ValuesIn(ForwardIterator begin, ForwardIterator end) {
- typedef typename std::iterator_traits<ForwardIterator>::value_type ParamType;
- return internal::ParamGenerator<ParamType>(
- new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end));
-}
-
-template <typename T, size_t N>
-internal::ParamGenerator<T> ValuesIn(const T (&array)[N]) {
- return ValuesIn(array, array + N);
-}
-
-template <class Container>
-internal::ParamGenerator<typename Container::value_type> ValuesIn(
- const Container& container) {
- return ValuesIn(container.begin(), container.end());
-}
-
-// Values() allows generating tests from explicitly specified list of
-// parameters.
-//
-// Synopsis:
-// Values(T v1, T v2, ..., T vN)
-// - returns a generator producing sequences with elements v1, v2, ..., vN.
-//
-// For example, this instantiates tests from test suite BarTest each
-// with values "one", "two", and "three":
-//
-// INSTANTIATE_TEST_SUITE_P(NumSequence,
-// BarTest,
-// Values("one", "two", "three"));
-//
-// This instantiates tests from test suite BazTest each with values 1, 2, 3.5.
-// The exact type of values will depend on the type of parameter in BazTest.
-//
-// INSTANTIATE_TEST_SUITE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5));
-//
-//
-template <typename... T>
-internal::ValueArray<T...> Values(T... v) {
- return internal::ValueArray<T...>(std::move(v)...);
-}
-
-// Bool() allows generating tests with parameters in a set of (false, true).
-//
-// Synopsis:
-// Bool()
-// - returns a generator producing sequences with elements {false, true}.
-//
-// It is useful when testing code that depends on Boolean flags. Combinations
-// of multiple flags can be tested when several Bool()'s are combined using
-// Combine() function.
-//
-// In the following example all tests in the test suite FlagDependentTest
-// will be instantiated twice with parameters false and true.
-//
-// class FlagDependentTest : public testing::TestWithParam<bool> {
-// virtual void SetUp() {
-// external_flag = GetParam();
-// }
-// }
-// INSTANTIATE_TEST_SUITE_P(BoolSequence, FlagDependentTest, Bool());
-//
-inline internal::ParamGenerator<bool> Bool() {
- return Values(false, true);
-}
-
-// Combine() allows the user to combine two or more sequences to produce
-// values of a Cartesian product of those sequences' elements.
-//
-// Synopsis:
-// Combine(gen1, gen2, ..., genN)
-// - returns a generator producing sequences with elements coming from
-// the Cartesian product of elements from the sequences generated by
-// gen1, gen2, ..., genN. The sequence elements will have a type of
-// std::tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types
-// of elements from sequences produces by gen1, gen2, ..., genN.
-//
-// Combine can have up to 10 arguments.
-//
-// Example:
-//
-// This will instantiate tests in test suite AnimalTest each one with
-// the parameter values tuple("cat", BLACK), tuple("cat", WHITE),
-// tuple("dog", BLACK), and tuple("dog", WHITE):
-//
-// enum Color { BLACK, GRAY, WHITE };
-// class AnimalTest
-// : public testing::TestWithParam<std::tuple<const char*, Color> > {...};
-//
-// TEST_P(AnimalTest, AnimalLooksNice) {...}
-//
-// INSTANTIATE_TEST_SUITE_P(AnimalVariations, AnimalTest,
-// Combine(Values("cat", "dog"),
-// Values(BLACK, WHITE)));
-//
-// This will instantiate tests in FlagDependentTest with all variations of two
-// Boolean flags:
-//
-// class FlagDependentTest
-// : public testing::TestWithParam<std::tuple<bool, bool> > {
-// virtual void SetUp() {
-// // Assigns external_flag_1 and external_flag_2 values from the tuple.
-// std::tie(external_flag_1, external_flag_2) = GetParam();
-// }
-// };
-//
-// TEST_P(FlagDependentTest, TestFeature1) {
-// // Test your code using external_flag_1 and external_flag_2 here.
-// }
-// INSTANTIATE_TEST_SUITE_P(TwoBoolSequence, FlagDependentTest,
-// Combine(Bool(), Bool()));
-//
-template <typename... Generator>
-internal::CartesianProductHolder<Generator...> Combine(const Generator&... g) {
- return internal::CartesianProductHolder<Generator...>(g...);
-}
-
-#define TEST_P(test_suite_name, test_name) \
- class GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) \
- : public test_suite_name { \
- public: \
- GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() {} \
- virtual void TestBody(); \
- \
- private: \
- static int AddToRegistry() { \
- ::testing::UnitTest::GetInstance() \
- ->parameterized_test_registry() \
- .GetTestSuitePatternHolder<test_suite_name>( \
- #test_suite_name, \
- ::testing::internal::CodeLocation(__FILE__, __LINE__)) \
- ->AddTestPattern( \
- GTEST_STRINGIFY_(test_suite_name), GTEST_STRINGIFY_(test_name), \
- new ::testing::internal::TestMetaFactory<GTEST_TEST_CLASS_NAME_( \
- test_suite_name, test_name)>()); \
- return 0; \
- } \
- static int gtest_registering_dummy_ GTEST_ATTRIBUTE_UNUSED_; \
- GTEST_DISALLOW_COPY_AND_ASSIGN_(GTEST_TEST_CLASS_NAME_(test_suite_name, \
- test_name)); \
- }; \
- int GTEST_TEST_CLASS_NAME_(test_suite_name, \
- test_name)::gtest_registering_dummy_ = \
- GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::AddToRegistry(); \
- void GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::TestBody()
-
-// The last argument to INSTANTIATE_TEST_SUITE_P allows the user to specify
-// generator and an optional function or functor that generates custom test name
-// suffixes based on the test parameters. Such a function or functor should
-// accept one argument of type testing::TestParamInfo<class ParamType>, and
-// return std::string.
-//
-// testing::PrintToStringParamName is a builtin test suffix generator that
-// returns the value of testing::PrintToString(GetParam()).
-//
-// Note: test names must be non-empty, unique, and may only contain ASCII
-// alphanumeric characters or underscore. Because PrintToString adds quotes
-// to std::string and C strings, it won't work for these types.
-
-#define GTEST_EXPAND_(arg) arg
-#define GTEST_GET_FIRST_(first, ...) first
-#define GTEST_GET_SECOND_(first, second, ...) second
-
-#define INSTANTIATE_TEST_SUITE_P(prefix, test_suite_name, ...) \
- static ::testing::internal::ParamGenerator<test_suite_name::ParamType> \
- gtest_##prefix##test_suite_name##_EvalGenerator_() { \
- return GTEST_EXPAND_(GTEST_GET_FIRST_(__VA_ARGS__, DUMMY_PARAM_)); \
- } \
- static ::std::string gtest_##prefix##test_suite_name##_EvalGenerateName_( \
- const ::testing::TestParamInfo<test_suite_name::ParamType>& info) { \
- if (::testing::internal::AlwaysFalse()) { \
- ::testing::internal::TestNotEmpty(GTEST_EXPAND_(GTEST_GET_SECOND_( \
- __VA_ARGS__, \
- ::testing::internal::DefaultParamName<test_suite_name::ParamType>, \
- DUMMY_PARAM_))); \
- auto t = std::make_tuple(__VA_ARGS__); \
- static_assert(std::tuple_size<decltype(t)>::value <= 2, \
- "Too Many Args!"); \
- } \
- return ((GTEST_EXPAND_(GTEST_GET_SECOND_( \
- __VA_ARGS__, \
- ::testing::internal::DefaultParamName<test_suite_name::ParamType>, \
- DUMMY_PARAM_))))(info); \
- } \
- static int gtest_##prefix##test_suite_name##_dummy_ \
- GTEST_ATTRIBUTE_UNUSED_ = \
- ::testing::UnitTest::GetInstance() \
- ->parameterized_test_registry() \
- .GetTestSuitePatternHolder<test_suite_name>( \
- #test_suite_name, \
- ::testing::internal::CodeLocation(__FILE__, __LINE__)) \
- ->AddTestSuiteInstantiation( \
- #prefix, &gtest_##prefix##test_suite_name##_EvalGenerator_, \
- &gtest_##prefix##test_suite_name##_EvalGenerateName_, \
- __FILE__, __LINE__)
-
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-#define INSTANTIATE_TEST_CASE_P \
- static_assert(::testing::internal::InstantiateTestCase_P_IsDeprecated(), \
- ""); \
- INSTANTIATE_TEST_SUITE_P
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-} // namespace testing
-
-#endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-printers.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-printers.h
deleted file mode 100644
index 56a05450ef5..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-printers.h
+++ /dev/null
@@ -1,928 +0,0 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Test - The Google C++ Testing and Mocking Framework
-//
-// This file implements a universal value printer that can print a
-// value of any type T:
-//
-// void ::testing::internal::UniversalPrinter<T>::Print(value, ostream_ptr);
-//
-// A user can teach this function how to print a class type T by
-// defining either operator<<() or PrintTo() in the namespace that
-// defines T. More specifically, the FIRST defined function in the
-// following list will be used (assuming T is defined in namespace
-// foo):
-//
-// 1. foo::PrintTo(const T&, ostream*)
-// 2. operator<<(ostream&, const T&) defined in either foo or the
-// global namespace.
-//
-// However if T is an STL-style container then it is printed element-wise
-// unless foo::PrintTo(const T&, ostream*) is defined. Note that
-// operator<<() is ignored for container types.
-//
-// If none of the above is defined, it will print the debug string of
-// the value if it is a protocol buffer, or print the raw bytes in the
-// value otherwise.
-//
-// To aid debugging: when T is a reference type, the address of the
-// value is also printed; when T is a (const) char pointer, both the
-// pointer value and the NUL-terminated string it points to are
-// printed.
-//
-// We also provide some convenient wrappers:
-//
-// // Prints a value to a string. For a (const or not) char
-// // pointer, the NUL-terminated string (but not the pointer) is
-// // printed.
-// std::string ::testing::PrintToString(const T& value);
-//
-// // Prints a value tersely: for a reference type, the referenced
-// // value (but not the address) is printed; for a (const or not) char
-// // pointer, the NUL-terminated string (but not the pointer) is
-// // printed.
-// void ::testing::internal::UniversalTersePrint(const T& value, ostream*);
-//
-// // Prints value using the type inferred by the compiler. The difference
-// // from UniversalTersePrint() is that this function prints both the
-// // pointer and the NUL-terminated string for a (const or not) char pointer.
-// void ::testing::internal::UniversalPrint(const T& value, ostream*);
-//
-// // Prints the fields of a tuple tersely to a string vector, one
-// // element for each field. Tuple support must be enabled in
-// // gtest-port.h.
-// std::vector<string> UniversalTersePrintTupleFieldsToStrings(
-// const Tuple& value);
-//
-// Known limitation:
-//
-// The print primitives print the elements of an STL-style container
-// using the compiler-inferred type of *iter where iter is a
-// const_iterator of the container. When const_iterator is an input
-// iterator but not a forward iterator, this inferred type may not
-// match value_type, and the print output may be incorrect. In
-// practice, this is rarely a problem as for most containers
-// const_iterator is a forward iterator. We'll fix this if there's an
-// actual need for it. Note that this fix cannot rely on value_type
-// being defined as many user-defined container types don't have
-// value_type.
-
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
-#define GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
-
-#include <functional>
-#include <ostream> // NOLINT
-#include <sstream>
-#include <string>
-#include <tuple>
-#include <type_traits>
-#include <utility>
-#include <vector>
-#include "gtest/internal/gtest-internal.h"
-#include "gtest/internal/gtest-port.h"
-
-#if GTEST_HAS_ABSL
-#include "absl/strings/string_view.h"
-#include "absl/types/optional.h"
-#include "absl/types/variant.h"
-#endif // GTEST_HAS_ABSL
-
-namespace testing {
-
-// Definitions in the 'internal' and 'internal2' name spaces are
-// subject to change without notice. DO NOT USE THEM IN USER CODE!
-namespace internal2 {
-
-// Prints the given number of bytes in the given object to the given
-// ostream.
-GTEST_API_ void PrintBytesInObjectTo(const unsigned char* obj_bytes,
- size_t count,
- ::std::ostream* os);
-
-// For selecting which printer to use when a given type has neither <<
-// nor PrintTo().
-enum TypeKind {
- kProtobuf, // a protobuf type
- kConvertibleToInteger, // a type implicitly convertible to BiggestInt
- // (e.g. a named or unnamed enum type)
-#if GTEST_HAS_ABSL
- kConvertibleToStringView, // a type implicitly convertible to
- // absl::string_view
-#endif
- kOtherType // anything else
-};
-
-// TypeWithoutFormatter<T, kTypeKind>::PrintValue(value, os) is called
-// by the universal printer to print a value of type T when neither
-// operator<< nor PrintTo() is defined for T, where kTypeKind is the
-// "kind" of T as defined by enum TypeKind.
-template <typename T, TypeKind kTypeKind>
-class TypeWithoutFormatter {
- public:
- // This default version is called when kTypeKind is kOtherType.
- static void PrintValue(const T& value, ::std::ostream* os) {
- PrintBytesInObjectTo(
- static_cast<const unsigned char*>(
- reinterpret_cast<const void*>(std::addressof(value))),
- sizeof(value), os);
- }
-};
-
-// We print a protobuf using its ShortDebugString() when the string
-// doesn't exceed this many characters; otherwise we print it using
-// DebugString() for better readability.
-const size_t kProtobufOneLinerMaxLength = 50;
-
-template <typename T>
-class TypeWithoutFormatter<T, kProtobuf> {
- public:
- static void PrintValue(const T& value, ::std::ostream* os) {
- std::string pretty_str = value.ShortDebugString();
- if (pretty_str.length() > kProtobufOneLinerMaxLength) {
- pretty_str = "\n" + value.DebugString();
- }
- *os << ("<" + pretty_str + ">");
- }
-};
-
-template <typename T>
-class TypeWithoutFormatter<T, kConvertibleToInteger> {
- public:
- // Since T has no << operator or PrintTo() but can be implicitly
- // converted to BiggestInt, we print it as a BiggestInt.
- //
- // Most likely T is an enum type (either named or unnamed), in which
- // case printing it as an integer is the desired behavior. In case
- // T is not an enum, printing it as an integer is the best we can do
- // given that it has no user-defined printer.
- static void PrintValue(const T& value, ::std::ostream* os) {
- const internal::BiggestInt kBigInt = value;
- *os << kBigInt;
- }
-};
-
-#if GTEST_HAS_ABSL
-template <typename T>
-class TypeWithoutFormatter<T, kConvertibleToStringView> {
- public:
- // Since T has neither operator<< nor PrintTo() but can be implicitly
- // converted to absl::string_view, we print it as a absl::string_view.
- //
- // Note: the implementation is further below, as it depends on
- // internal::PrintTo symbol which is defined later in the file.
- static void PrintValue(const T& value, ::std::ostream* os);
-};
-#endif
-
-// Prints the given value to the given ostream. If the value is a
-// protocol message, its debug string is printed; if it's an enum or
-// of a type implicitly convertible to BiggestInt, it's printed as an
-// integer; otherwise the bytes in the value are printed. This is
-// what UniversalPrinter<T>::Print() does when it knows nothing about
-// type T and T has neither << operator nor PrintTo().
-//
-// A user can override this behavior for a class type Foo by defining
-// a << operator in the namespace where Foo is defined.
-//
-// We put this operator in namespace 'internal2' instead of 'internal'
-// to simplify the implementation, as much code in 'internal' needs to
-// use << in STL, which would conflict with our own << were it defined
-// in 'internal'.
-//
-// Note that this operator<< takes a generic std::basic_ostream<Char,
-// CharTraits> type instead of the more restricted std::ostream. If
-// we define it to take an std::ostream instead, we'll get an
-// "ambiguous overloads" compiler error when trying to print a type
-// Foo that supports streaming to std::basic_ostream<Char,
-// CharTraits>, as the compiler cannot tell whether
-// operator<<(std::ostream&, const T&) or
-// operator<<(std::basic_stream<Char, CharTraits>, const Foo&) is more
-// specific.
-template <typename Char, typename CharTraits, typename T>
-::std::basic_ostream<Char, CharTraits>& operator<<(
- ::std::basic_ostream<Char, CharTraits>& os, const T& x) {
- TypeWithoutFormatter<T, (internal::IsAProtocolMessage<T>::value
- ? kProtobuf
- : std::is_convertible<
- const T&, internal::BiggestInt>::value
- ? kConvertibleToInteger
- :
-#if GTEST_HAS_ABSL
- std::is_convertible<
- const T&, absl::string_view>::value
- ? kConvertibleToStringView
- :
-#endif
- kOtherType)>::PrintValue(x, &os);
- return os;
-}
-
-} // namespace internal2
-} // namespace testing
-
-// This namespace MUST NOT BE NESTED IN ::testing, or the name look-up
-// magic needed for implementing UniversalPrinter won't work.
-namespace testing_internal {
-
-// Used to print a value that is not an STL-style container when the
-// user doesn't define PrintTo() for it.
-template <typename T>
-void DefaultPrintNonContainerTo(const T& value, ::std::ostream* os) {
- // With the following statement, during unqualified name lookup,
- // testing::internal2::operator<< appears as if it was declared in
- // the nearest enclosing namespace that contains both
- // ::testing_internal and ::testing::internal2, i.e. the global
- // namespace. For more details, refer to the C++ Standard section
- // 7.3.4-1 [namespace.udir]. This allows us to fall back onto
- // testing::internal2::operator<< in case T doesn't come with a <<
- // operator.
- //
- // We cannot write 'using ::testing::internal2::operator<<;', which
- // gcc 3.3 fails to compile due to a compiler bug.
- using namespace ::testing::internal2; // NOLINT
-
- // Assuming T is defined in namespace foo, in the next statement,
- // the compiler will consider all of:
- //
- // 1. foo::operator<< (thanks to Koenig look-up),
- // 2. ::operator<< (as the current namespace is enclosed in ::),
- // 3. testing::internal2::operator<< (thanks to the using statement above).
- //
- // The operator<< whose type matches T best will be picked.
- //
- // We deliberately allow #2 to be a candidate, as sometimes it's
- // impossible to define #1 (e.g. when foo is ::std, defining
- // anything in it is undefined behavior unless you are a compiler
- // vendor.).
- *os << value;
-}
-
-} // namespace testing_internal
-
-namespace testing {
-namespace internal {
-
-// FormatForComparison<ToPrint, OtherOperand>::Format(value) formats a
-// value of type ToPrint that is an operand of a comparison assertion
-// (e.g. ASSERT_EQ). OtherOperand is the type of the other operand in
-// the comparison, and is used to help determine the best way to
-// format the value. In particular, when the value is a C string
-// (char pointer) and the other operand is an STL string object, we
-// want to format the C string as a string, since we know it is
-// compared by value with the string object. If the value is a char
-// pointer but the other operand is not an STL string object, we don't
-// know whether the pointer is supposed to point to a NUL-terminated
-// string, and thus want to print it as a pointer to be safe.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-
-// The default case.
-template <typename ToPrint, typename OtherOperand>
-class FormatForComparison {
- public:
- static ::std::string Format(const ToPrint& value) {
- return ::testing::PrintToString(value);
- }
-};
-
-// Array.
-template <typename ToPrint, size_t N, typename OtherOperand>
-class FormatForComparison<ToPrint[N], OtherOperand> {
- public:
- static ::std::string Format(const ToPrint* value) {
- return FormatForComparison<const ToPrint*, OtherOperand>::Format(value);
- }
-};
-
-// By default, print C string as pointers to be safe, as we don't know
-// whether they actually point to a NUL-terminated string.
-
-#define GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(CharType) \
- template <typename OtherOperand> \
- class FormatForComparison<CharType*, OtherOperand> { \
- public: \
- static ::std::string Format(CharType* value) { \
- return ::testing::PrintToString(static_cast<const void*>(value)); \
- } \
- }
-
-GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char);
-GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const char);
-GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(wchar_t);
-GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const wchar_t);
-
-#undef GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_
-
-// If a C string is compared with an STL string object, we know it's meant
-// to point to a NUL-terminated string, and thus can print it as a string.
-
-#define GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(CharType, OtherStringType) \
- template <> \
- class FormatForComparison<CharType*, OtherStringType> { \
- public: \
- static ::std::string Format(CharType* value) { \
- return ::testing::PrintToString(value); \
- } \
- }
-
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char, ::std::string);
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char, ::std::string);
-
-#if GTEST_HAS_STD_WSTRING
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(wchar_t, ::std::wstring);
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const wchar_t, ::std::wstring);
-#endif
-
-#undef GTEST_IMPL_FORMAT_C_STRING_AS_STRING_
-
-// Formats a comparison assertion (e.g. ASSERT_EQ, EXPECT_LT, and etc)
-// operand to be used in a failure message. The type (but not value)
-// of the other operand may affect the format. This allows us to
-// print a char* as a raw pointer when it is compared against another
-// char* or void*, and print it as a C string when it is compared
-// against an std::string object, for example.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-template <typename T1, typename T2>
-std::string FormatForComparisonFailureMessage(
- const T1& value, const T2& /* other_operand */) {
- return FormatForComparison<T1, T2>::Format(value);
-}
-
-// UniversalPrinter<T>::Print(value, ostream_ptr) prints the given
-// value to the given ostream. The caller must ensure that
-// 'ostream_ptr' is not NULL, or the behavior is undefined.
-//
-// We define UniversalPrinter as a class template (as opposed to a
-// function template), as we need to partially specialize it for
-// reference types, which cannot be done with function templates.
-template <typename T>
-class UniversalPrinter;
-
-template <typename T>
-void UniversalPrint(const T& value, ::std::ostream* os);
-
-enum DefaultPrinterType {
- kPrintContainer,
- kPrintPointer,
- kPrintFunctionPointer,
- kPrintOther,
-};
-template <DefaultPrinterType type> struct WrapPrinterType {};
-
-// Used to print an STL-style container when the user doesn't define
-// a PrintTo() for it.
-template <typename C>
-void DefaultPrintTo(WrapPrinterType<kPrintContainer> /* dummy */,
- const C& container, ::std::ostream* os) {
- const size_t kMaxCount = 32; // The maximum number of elements to print.
- *os << '{';
- size_t count = 0;
- for (typename C::const_iterator it = container.begin();
- it != container.end(); ++it, ++count) {
- if (count > 0) {
- *os << ',';
- if (count == kMaxCount) { // Enough has been printed.
- *os << " ...";
- break;
- }
- }
- *os << ' ';
- // We cannot call PrintTo(*it, os) here as PrintTo() doesn't
- // handle *it being a native array.
- internal::UniversalPrint(*it, os);
- }
-
- if (count > 0) {
- *os << ' ';
- }
- *os << '}';
-}
-
-// Used to print a pointer that is neither a char pointer nor a member
-// pointer, when the user doesn't define PrintTo() for it. (A member
-// variable pointer or member function pointer doesn't really point to
-// a location in the address space. Their representation is
-// implementation-defined. Therefore they will be printed as raw
-// bytes.)
-template <typename T>
-void DefaultPrintTo(WrapPrinterType<kPrintPointer> /* dummy */,
- T* p, ::std::ostream* os) {
- if (p == nullptr) {
- *os << "NULL";
- } else {
- // T is not a function type. We just call << to print p,
- // relying on ADL to pick up user-defined << for their pointer
- // types, if any.
- *os << p;
- }
-}
-template <typename T>
-void DefaultPrintTo(WrapPrinterType<kPrintFunctionPointer> /* dummy */,
- T* p, ::std::ostream* os) {
- if (p == nullptr) {
- *os << "NULL";
- } else {
- // T is a function type, so '*os << p' doesn't do what we want
- // (it just prints p as bool). We want to print p as a const
- // void*.
- *os << reinterpret_cast<const void*>(p);
- }
-}
-
-// Used to print a non-container, non-pointer value when the user
-// doesn't define PrintTo() for it.
-template <typename T>
-void DefaultPrintTo(WrapPrinterType<kPrintOther> /* dummy */,
- const T& value, ::std::ostream* os) {
- ::testing_internal::DefaultPrintNonContainerTo(value, os);
-}
-
-// Prints the given value using the << operator if it has one;
-// otherwise prints the bytes in it. This is what
-// UniversalPrinter<T>::Print() does when PrintTo() is not specialized
-// or overloaded for type T.
-//
-// A user can override this behavior for a class type Foo by defining
-// an overload of PrintTo() in the namespace where Foo is defined. We
-// give the user this option as sometimes defining a << operator for
-// Foo is not desirable (e.g. the coding style may prevent doing it,
-// or there is already a << operator but it doesn't do what the user
-// wants).
-template <typename T>
-void PrintTo(const T& value, ::std::ostream* os) {
- // DefaultPrintTo() is overloaded. The type of its first argument
- // determines which version will be picked.
- //
- // Note that we check for container types here, prior to we check
- // for protocol message types in our operator<<. The rationale is:
- //
- // For protocol messages, we want to give people a chance to
- // override Google Mock's format by defining a PrintTo() or
- // operator<<. For STL containers, other formats can be
- // incompatible with Google Mock's format for the container
- // elements; therefore we check for container types here to ensure
- // that our format is used.
- //
- // Note that MSVC and clang-cl do allow an implicit conversion from
- // pointer-to-function to pointer-to-object, but clang-cl warns on it.
- // So don't use ImplicitlyConvertible if it can be helped since it will
- // cause this warning, and use a separate overload of DefaultPrintTo for
- // function pointers so that the `*os << p` in the object pointer overload
- // doesn't cause that warning either.
- DefaultPrintTo(
- WrapPrinterType <
- (sizeof(IsContainerTest<T>(0)) == sizeof(IsContainer)) &&
- !IsRecursiveContainer<T>::value
- ? kPrintContainer
- : !std::is_pointer<T>::value
- ? kPrintOther
- : std::is_function<typename std::remove_pointer<T>::type>::value
- ? kPrintFunctionPointer
- : kPrintPointer > (),
- value, os);
-}
-
-// The following list of PrintTo() overloads tells
-// UniversalPrinter<T>::Print() how to print standard types (built-in
-// types, strings, plain arrays, and pointers).
-
-// Overloads for various char types.
-GTEST_API_ void PrintTo(unsigned char c, ::std::ostream* os);
-GTEST_API_ void PrintTo(signed char c, ::std::ostream* os);
-inline void PrintTo(char c, ::std::ostream* os) {
- // When printing a plain char, we always treat it as unsigned. This
- // way, the output won't be affected by whether the compiler thinks
- // char is signed or not.
- PrintTo(static_cast<unsigned char>(c), os);
-}
-
-// Overloads for other simple built-in types.
-inline void PrintTo(bool x, ::std::ostream* os) {
- *os << (x ? "true" : "false");
-}
-
-// Overload for wchar_t type.
-// Prints a wchar_t as a symbol if it is printable or as its internal
-// code otherwise and also as its decimal code (except for L'\0').
-// The L'\0' char is printed as "L'\\0'". The decimal code is printed
-// as signed integer when wchar_t is implemented by the compiler
-// as a signed type and is printed as an unsigned integer when wchar_t
-// is implemented as an unsigned type.
-GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os);
-
-// Overloads for C strings.
-GTEST_API_ void PrintTo(const char* s, ::std::ostream* os);
-inline void PrintTo(char* s, ::std::ostream* os) {
- PrintTo(ImplicitCast_<const char*>(s), os);
-}
-
-// signed/unsigned char is often used for representing binary data, so
-// we print pointers to it as void* to be safe.
-inline void PrintTo(const signed char* s, ::std::ostream* os) {
- PrintTo(ImplicitCast_<const void*>(s), os);
-}
-inline void PrintTo(signed char* s, ::std::ostream* os) {
- PrintTo(ImplicitCast_<const void*>(s), os);
-}
-inline void PrintTo(const unsigned char* s, ::std::ostream* os) {
- PrintTo(ImplicitCast_<const void*>(s), os);
-}
-inline void PrintTo(unsigned char* s, ::std::ostream* os) {
- PrintTo(ImplicitCast_<const void*>(s), os);
-}
-
-// MSVC can be configured to define wchar_t as a typedef of unsigned
-// short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native
-// type. When wchar_t is a typedef, defining an overload for const
-// wchar_t* would cause unsigned short* be printed as a wide string,
-// possibly causing invalid memory accesses.
-#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
-// Overloads for wide C strings
-GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
-inline void PrintTo(wchar_t* s, ::std::ostream* os) {
- PrintTo(ImplicitCast_<const wchar_t*>(s), os);
-}
-#endif
-
-// Overload for C arrays. Multi-dimensional arrays are printed
-// properly.
-
-// Prints the given number of elements in an array, without printing
-// the curly braces.
-template <typename T>
-void PrintRawArrayTo(const T a[], size_t count, ::std::ostream* os) {
- UniversalPrint(a[0], os);
- for (size_t i = 1; i != count; i++) {
- *os << ", ";
- UniversalPrint(a[i], os);
- }
-}
-
-// Overloads for ::std::string.
-GTEST_API_ void PrintStringTo(const ::std::string&s, ::std::ostream* os);
-inline void PrintTo(const ::std::string& s, ::std::ostream* os) {
- PrintStringTo(s, os);
-}
-
-// Overloads for ::std::wstring.
-#if GTEST_HAS_STD_WSTRING
-GTEST_API_ void PrintWideStringTo(const ::std::wstring&s, ::std::ostream* os);
-inline void PrintTo(const ::std::wstring& s, ::std::ostream* os) {
- PrintWideStringTo(s, os);
-}
-#endif // GTEST_HAS_STD_WSTRING
-
-#if GTEST_HAS_ABSL
-// Overload for absl::string_view.
-inline void PrintTo(absl::string_view sp, ::std::ostream* os) {
- PrintTo(::std::string(sp), os);
-}
-#endif // GTEST_HAS_ABSL
-
-inline void PrintTo(std::nullptr_t, ::std::ostream* os) { *os << "(nullptr)"; }
-
-template <typename T>
-void PrintTo(std::reference_wrapper<T> ref, ::std::ostream* os) {
- UniversalPrinter<T&>::Print(ref.get(), os);
-}
-
-// Helper function for printing a tuple. T must be instantiated with
-// a tuple type.
-template <typename T>
-void PrintTupleTo(const T&, std::integral_constant<size_t, 0>,
- ::std::ostream*) {}
-
-template <typename T, size_t I>
-void PrintTupleTo(const T& t, std::integral_constant<size_t, I>,
- ::std::ostream* os) {
- PrintTupleTo(t, std::integral_constant<size_t, I - 1>(), os);
- GTEST_INTENTIONAL_CONST_COND_PUSH_()
- if (I > 1) {
- GTEST_INTENTIONAL_CONST_COND_POP_()
- *os << ", ";
- }
- UniversalPrinter<typename std::tuple_element<I - 1, T>::type>::Print(
- std::get<I - 1>(t), os);
-}
-
-template <typename... Types>
-void PrintTo(const ::std::tuple<Types...>& t, ::std::ostream* os) {
- *os << "(";
- PrintTupleTo(t, std::integral_constant<size_t, sizeof...(Types)>(), os);
- *os << ")";
-}
-
-// Overload for std::pair.
-template <typename T1, typename T2>
-void PrintTo(const ::std::pair<T1, T2>& value, ::std::ostream* os) {
- *os << '(';
- // We cannot use UniversalPrint(value.first, os) here, as T1 may be
- // a reference type. The same for printing value.second.
- UniversalPrinter<T1>::Print(value.first, os);
- *os << ", ";
- UniversalPrinter<T2>::Print(value.second, os);
- *os << ')';
-}
-
-// Implements printing a non-reference type T by letting the compiler
-// pick the right overload of PrintTo() for T.
-template <typename T>
-class UniversalPrinter {
- public:
- // MSVC warns about adding const to a function type, so we want to
- // disable the warning.
- GTEST_DISABLE_MSC_WARNINGS_PUSH_(4180)
-
- // Note: we deliberately don't call this PrintTo(), as that name
- // conflicts with ::testing::internal::PrintTo in the body of the
- // function.
- static void Print(const T& value, ::std::ostream* os) {
- // By default, ::testing::internal::PrintTo() is used for printing
- // the value.
- //
- // Thanks to Koenig look-up, if T is a class and has its own
- // PrintTo() function defined in its namespace, that function will
- // be visible here. Since it is more specific than the generic ones
- // in ::testing::internal, it will be picked by the compiler in the
- // following statement - exactly what we want.
- PrintTo(value, os);
- }
-
- GTEST_DISABLE_MSC_WARNINGS_POP_()
-};
-
-#if GTEST_HAS_ABSL
-
-// Printer for absl::optional
-
-template <typename T>
-class UniversalPrinter<::absl::optional<T>> {
- public:
- static void Print(const ::absl::optional<T>& value, ::std::ostream* os) {
- *os << '(';
- if (!value) {
- *os << "nullopt";
- } else {
- UniversalPrint(*value, os);
- }
- *os << ')';
- }
-};
-
-// Printer for absl::variant
-
-template <typename... T>
-class UniversalPrinter<::absl::variant<T...>> {
- public:
- static void Print(const ::absl::variant<T...>& value, ::std::ostream* os) {
- *os << '(';
- absl::visit(Visitor{os}, value);
- *os << ')';
- }
-
- private:
- struct Visitor {
- template <typename U>
- void operator()(const U& u) const {
- *os << "'" << GetTypeName<U>() << "' with value ";
- UniversalPrint(u, os);
- }
- ::std::ostream* os;
- };
-};
-
-#endif // GTEST_HAS_ABSL
-
-// UniversalPrintArray(begin, len, os) prints an array of 'len'
-// elements, starting at address 'begin'.
-template <typename T>
-void UniversalPrintArray(const T* begin, size_t len, ::std::ostream* os) {
- if (len == 0) {
- *os << "{}";
- } else {
- *os << "{ ";
- const size_t kThreshold = 18;
- const size_t kChunkSize = 8;
- // If the array has more than kThreshold elements, we'll have to
- // omit some details by printing only the first and the last
- // kChunkSize elements.
- if (len <= kThreshold) {
- PrintRawArrayTo(begin, len, os);
- } else {
- PrintRawArrayTo(begin, kChunkSize, os);
- *os << ", ..., ";
- PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os);
- }
- *os << " }";
- }
-}
-// This overload prints a (const) char array compactly.
-GTEST_API_ void UniversalPrintArray(
- const char* begin, size_t len, ::std::ostream* os);
-
-// This overload prints a (const) wchar_t array compactly.
-GTEST_API_ void UniversalPrintArray(
- const wchar_t* begin, size_t len, ::std::ostream* os);
-
-// Implements printing an array type T[N].
-template <typename T, size_t N>
-class UniversalPrinter<T[N]> {
- public:
- // Prints the given array, omitting some elements when there are too
- // many.
- static void Print(const T (&a)[N], ::std::ostream* os) {
- UniversalPrintArray(a, N, os);
- }
-};
-
-// Implements printing a reference type T&.
-template <typename T>
-class UniversalPrinter<T&> {
- public:
- // MSVC warns about adding const to a function type, so we want to
- // disable the warning.
- GTEST_DISABLE_MSC_WARNINGS_PUSH_(4180)
-
- static void Print(const T& value, ::std::ostream* os) {
- // Prints the address of the value. We use reinterpret_cast here
- // as static_cast doesn't compile when T is a function type.
- *os << "@" << reinterpret_cast<const void*>(&value) << " ";
-
- // Then prints the value itself.
- UniversalPrint(value, os);
- }
-
- GTEST_DISABLE_MSC_WARNINGS_POP_()
-};
-
-// Prints a value tersely: for a reference type, the referenced value
-// (but not the address) is printed; for a (const) char pointer, the
-// NUL-terminated string (but not the pointer) is printed.
-
-template <typename T>
-class UniversalTersePrinter {
- public:
- static void Print(const T& value, ::std::ostream* os) {
- UniversalPrint(value, os);
- }
-};
-template <typename T>
-class UniversalTersePrinter<T&> {
- public:
- static void Print(const T& value, ::std::ostream* os) {
- UniversalPrint(value, os);
- }
-};
-template <typename T, size_t N>
-class UniversalTersePrinter<T[N]> {
- public:
- static void Print(const T (&value)[N], ::std::ostream* os) {
- UniversalPrinter<T[N]>::Print(value, os);
- }
-};
-template <>
-class UniversalTersePrinter<const char*> {
- public:
- static void Print(const char* str, ::std::ostream* os) {
- if (str == nullptr) {
- *os << "NULL";
- } else {
- UniversalPrint(std::string(str), os);
- }
- }
-};
-template <>
-class UniversalTersePrinter<char*> {
- public:
- static void Print(char* str, ::std::ostream* os) {
- UniversalTersePrinter<const char*>::Print(str, os);
- }
-};
-
-#if GTEST_HAS_STD_WSTRING
-template <>
-class UniversalTersePrinter<const wchar_t*> {
- public:
- static void Print(const wchar_t* str, ::std::ostream* os) {
- if (str == nullptr) {
- *os << "NULL";
- } else {
- UniversalPrint(::std::wstring(str), os);
- }
- }
-};
-#endif
-
-template <>
-class UniversalTersePrinter<wchar_t*> {
- public:
- static void Print(wchar_t* str, ::std::ostream* os) {
- UniversalTersePrinter<const wchar_t*>::Print(str, os);
- }
-};
-
-template <typename T>
-void UniversalTersePrint(const T& value, ::std::ostream* os) {
- UniversalTersePrinter<T>::Print(value, os);
-}
-
-// Prints a value using the type inferred by the compiler. The
-// difference between this and UniversalTersePrint() is that for a
-// (const) char pointer, this prints both the pointer and the
-// NUL-terminated string.
-template <typename T>
-void UniversalPrint(const T& value, ::std::ostream* os) {
- // A workarond for the bug in VC++ 7.1 that prevents us from instantiating
- // UniversalPrinter with T directly.
- typedef T T1;
- UniversalPrinter<T1>::Print(value, os);
-}
-
-typedef ::std::vector< ::std::string> Strings;
-
- // Tersely prints the first N fields of a tuple to a string vector,
- // one element for each field.
-template <typename Tuple>
-void TersePrintPrefixToStrings(const Tuple&, std::integral_constant<size_t, 0>,
- Strings*) {}
-template <typename Tuple, size_t I>
-void TersePrintPrefixToStrings(const Tuple& t,
- std::integral_constant<size_t, I>,
- Strings* strings) {
- TersePrintPrefixToStrings(t, std::integral_constant<size_t, I - 1>(),
- strings);
- ::std::stringstream ss;
- UniversalTersePrint(std::get<I - 1>(t), &ss);
- strings->push_back(ss.str());
-}
-
-// Prints the fields of a tuple tersely to a string vector, one
-// element for each field. See the comment before
-// UniversalTersePrint() for how we define "tersely".
-template <typename Tuple>
-Strings UniversalTersePrintTupleFieldsToStrings(const Tuple& value) {
- Strings result;
- TersePrintPrefixToStrings(
- value, std::integral_constant<size_t, std::tuple_size<Tuple>::value>(),
- &result);
- return result;
-}
-
-} // namespace internal
-
-#if GTEST_HAS_ABSL
-namespace internal2 {
-template <typename T>
-void TypeWithoutFormatter<T, kConvertibleToStringView>::PrintValue(
- const T& value, ::std::ostream* os) {
- internal::PrintTo(absl::string_view(value), os);
-}
-} // namespace internal2
-#endif
-
-template <typename T>
-::std::string PrintToString(const T& value) {
- ::std::stringstream ss;
- internal::UniversalTersePrinter<T>::Print(value, &ss);
- return ss.str();
-}
-
-} // namespace testing
-
-// Include any custom printer added by the local installation.
-// We must include this header at the end to make sure it can use the
-// declarations from this file.
-#include "gtest/internal/custom/gtest-printers.h"
-
-#endif // GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-spi.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-spi.h
deleted file mode 100644
index aa38870e8e1..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-spi.h
+++ /dev/null
@@ -1,238 +0,0 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// Utilities for testing Google Test itself and code that uses Google Test
-// (e.g. frameworks built on top of Google Test).
-
-// GOOGLETEST_CM0004 DO NOT DELETE
-
-#ifndef GTEST_INCLUDE_GTEST_GTEST_SPI_H_
-#define GTEST_INCLUDE_GTEST_GTEST_SPI_H_
-
-#include "gtest/gtest.h"
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
-/* class A needs to have dll-interface to be used by clients of class B */)
-
-namespace testing {
-
-// This helper class can be used to mock out Google Test failure reporting
-// so that we can test Google Test or code that builds on Google Test.
-//
-// An object of this class appends a TestPartResult object to the
-// TestPartResultArray object given in the constructor whenever a Google Test
-// failure is reported. It can either intercept only failures that are
-// generated in the same thread that created this object or it can intercept
-// all generated failures. The scope of this mock object can be controlled with
-// the second argument to the two arguments constructor.
-class GTEST_API_ ScopedFakeTestPartResultReporter
- : public TestPartResultReporterInterface {
- public:
- // The two possible mocking modes of this object.
- enum InterceptMode {
- INTERCEPT_ONLY_CURRENT_THREAD, // Intercepts only thread local failures.
- INTERCEPT_ALL_THREADS // Intercepts all failures.
- };
-
- // The c'tor sets this object as the test part result reporter used
- // by Google Test. The 'result' parameter specifies where to report the
- // results. This reporter will only catch failures generated in the current
- // thread. DEPRECATED
- explicit ScopedFakeTestPartResultReporter(TestPartResultArray* result);
-
- // Same as above, but you can choose the interception scope of this object.
- ScopedFakeTestPartResultReporter(InterceptMode intercept_mode,
- TestPartResultArray* result);
-
- // The d'tor restores the previous test part result reporter.
- ~ScopedFakeTestPartResultReporter() override;
-
- // Appends the TestPartResult object to the TestPartResultArray
- // received in the constructor.
- //
- // This method is from the TestPartResultReporterInterface
- // interface.
- void ReportTestPartResult(const TestPartResult& result) override;
-
- private:
- void Init();
-
- const InterceptMode intercept_mode_;
- TestPartResultReporterInterface* old_reporter_;
- TestPartResultArray* const result_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedFakeTestPartResultReporter);
-};
-
-namespace internal {
-
-// A helper class for implementing EXPECT_FATAL_FAILURE() and
-// EXPECT_NONFATAL_FAILURE(). Its destructor verifies that the given
-// TestPartResultArray contains exactly one failure that has the given
-// type and contains the given substring. If that's not the case, a
-// non-fatal failure will be generated.
-class GTEST_API_ SingleFailureChecker {
- public:
- // The constructor remembers the arguments.
- SingleFailureChecker(const TestPartResultArray* results,
- TestPartResult::Type type, const std::string& substr);
- ~SingleFailureChecker();
- private:
- const TestPartResultArray* const results_;
- const TestPartResult::Type type_;
- const std::string substr_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(SingleFailureChecker);
-};
-
-} // namespace internal
-
-} // namespace testing
-
-GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251
-
-// A set of macros for testing Google Test assertions or code that's expected
-// to generate Google Test fatal failures. It verifies that the given
-// statement will cause exactly one fatal Google Test failure with 'substr'
-// being part of the failure message.
-//
-// There are two different versions of this macro. EXPECT_FATAL_FAILURE only
-// affects and considers failures generated in the current thread and
-// EXPECT_FATAL_FAILURE_ON_ALL_THREADS does the same but for all threads.
-//
-// The verification of the assertion is done correctly even when the statement
-// throws an exception or aborts the current function.
-//
-// Known restrictions:
-// - 'statement' cannot reference local non-static variables or
-// non-static members of the current object.
-// - 'statement' cannot return a value.
-// - You cannot stream a failure message to this macro.
-//
-// Note that even though the implementations of the following two
-// macros are much alike, we cannot refactor them to use a common
-// helper macro, due to some peculiarity in how the preprocessor
-// works. The AcceptsMacroThatExpandsToUnprotectedComma test in
-// gtest_unittest.cc will fail to compile if we do that.
-#define EXPECT_FATAL_FAILURE(statement, substr) \
- do { \
- class GTestExpectFatalFailureHelper {\
- public:\
- static void Execute() { statement; }\
- };\
- ::testing::TestPartResultArray gtest_failures;\
- ::testing::internal::SingleFailureChecker gtest_checker(\
- &gtest_failures, ::testing::TestPartResult::kFatalFailure, (substr));\
- {\
- ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
- ::testing::ScopedFakeTestPartResultReporter:: \
- INTERCEPT_ONLY_CURRENT_THREAD, &gtest_failures);\
- GTestExpectFatalFailureHelper::Execute();\
- }\
- } while (::testing::internal::AlwaysFalse())
-
-#define EXPECT_FATAL_FAILURE_ON_ALL_THREADS(statement, substr) \
- do { \
- class GTestExpectFatalFailureHelper {\
- public:\
- static void Execute() { statement; }\
- };\
- ::testing::TestPartResultArray gtest_failures;\
- ::testing::internal::SingleFailureChecker gtest_checker(\
- &gtest_failures, ::testing::TestPartResult::kFatalFailure, (substr));\
- {\
- ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
- ::testing::ScopedFakeTestPartResultReporter:: \
- INTERCEPT_ALL_THREADS, &gtest_failures);\
- GTestExpectFatalFailureHelper::Execute();\
- }\
- } while (::testing::internal::AlwaysFalse())
-
-// A macro for testing Google Test assertions or code that's expected to
-// generate Google Test non-fatal failures. It asserts that the given
-// statement will cause exactly one non-fatal Google Test failure with 'substr'
-// being part of the failure message.
-//
-// There are two different versions of this macro. EXPECT_NONFATAL_FAILURE only
-// affects and considers failures generated in the current thread and
-// EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS does the same but for all threads.
-//
-// 'statement' is allowed to reference local variables and members of
-// the current object.
-//
-// The verification of the assertion is done correctly even when the statement
-// throws an exception or aborts the current function.
-//
-// Known restrictions:
-// - You cannot stream a failure message to this macro.
-//
-// Note that even though the implementations of the following two
-// macros are much alike, we cannot refactor them to use a common
-// helper macro, due to some peculiarity in how the preprocessor
-// works. If we do that, the code won't compile when the user gives
-// EXPECT_NONFATAL_FAILURE() a statement that contains a macro that
-// expands to code containing an unprotected comma. The
-// AcceptsMacroThatExpandsToUnprotectedComma test in gtest_unittest.cc
-// catches that.
-//
-// For the same reason, we have to write
-// if (::testing::internal::AlwaysTrue()) { statement; }
-// instead of
-// GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement)
-// to avoid an MSVC warning on unreachable code.
-#define EXPECT_NONFATAL_FAILURE(statement, substr) \
- do {\
- ::testing::TestPartResultArray gtest_failures;\
- ::testing::internal::SingleFailureChecker gtest_checker(\
- &gtest_failures, ::testing::TestPartResult::kNonFatalFailure, \
- (substr));\
- {\
- ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
- ::testing::ScopedFakeTestPartResultReporter:: \
- INTERCEPT_ONLY_CURRENT_THREAD, &gtest_failures);\
- if (::testing::internal::AlwaysTrue()) { statement; }\
- }\
- } while (::testing::internal::AlwaysFalse())
-
-#define EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(statement, substr) \
- do {\
- ::testing::TestPartResultArray gtest_failures;\
- ::testing::internal::SingleFailureChecker gtest_checker(\
- &gtest_failures, ::testing::TestPartResult::kNonFatalFailure, \
- (substr));\
- {\
- ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
- ::testing::ScopedFakeTestPartResultReporter::INTERCEPT_ALL_THREADS, \
- &gtest_failures);\
- if (::testing::internal::AlwaysTrue()) { statement; }\
- }\
- } while (::testing::internal::AlwaysFalse())
-
-#endif // GTEST_INCLUDE_GTEST_GTEST_SPI_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-test-part.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-test-part.h
deleted file mode 100644
index 05a79853586..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-test-part.h
+++ /dev/null
@@ -1,184 +0,0 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
-#define GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
-
-#include <iosfwd>
-#include <vector>
-#include "gtest/internal/gtest-internal.h"
-#include "gtest/internal/gtest-string.h"
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
-/* class A needs to have dll-interface to be used by clients of class B */)
-
-namespace testing {
-
-// A copyable object representing the result of a test part (i.e. an
-// assertion or an explicit FAIL(), ADD_FAILURE(), or SUCCESS()).
-//
-// Don't inherit from TestPartResult as its destructor is not virtual.
-class GTEST_API_ TestPartResult {
- public:
- // The possible outcomes of a test part (i.e. an assertion or an
- // explicit SUCCEED(), FAIL(), or ADD_FAILURE()).
- enum Type {
- kSuccess, // Succeeded.
- kNonFatalFailure, // Failed but the test can continue.
- kFatalFailure, // Failed and the test should be terminated.
- kSkip // Skipped.
- };
-
- // C'tor. TestPartResult does NOT have a default constructor.
- // Always use this constructor (with parameters) to create a
- // TestPartResult object.
- TestPartResult(Type a_type, const char* a_file_name, int a_line_number,
- const char* a_message)
- : type_(a_type),
- file_name_(a_file_name == nullptr ? "" : a_file_name),
- line_number_(a_line_number),
- summary_(ExtractSummary(a_message)),
- message_(a_message) {}
-
- // Gets the outcome of the test part.
- Type type() const { return type_; }
-
- // Gets the name of the source file where the test part took place, or
- // NULL if it's unknown.
- const char* file_name() const {
- return file_name_.empty() ? nullptr : file_name_.c_str();
- }
-
- // Gets the line in the source file where the test part took place,
- // or -1 if it's unknown.
- int line_number() const { return line_number_; }
-
- // Gets the summary of the failure message.
- const char* summary() const { return summary_.c_str(); }
-
- // Gets the message associated with the test part.
- const char* message() const { return message_.c_str(); }
-
- // Returns true if and only if the test part was skipped.
- bool skipped() const { return type_ == kSkip; }
-
- // Returns true if and only if the test part passed.
- bool passed() const { return type_ == kSuccess; }
-
- // Returns true if and only if the test part non-fatally failed.
- bool nonfatally_failed() const { return type_ == kNonFatalFailure; }
-
- // Returns true if and only if the test part fatally failed.
- bool fatally_failed() const { return type_ == kFatalFailure; }
-
- // Returns true if and only if the test part failed.
- bool failed() const { return fatally_failed() || nonfatally_failed(); }
-
- private:
- Type type_;
-
- // Gets the summary of the failure message by omitting the stack
- // trace in it.
- static std::string ExtractSummary(const char* message);
-
- // The name of the source file where the test part took place, or
- // "" if the source file is unknown.
- std::string file_name_;
- // The line in the source file where the test part took place, or -1
- // if the line number is unknown.
- int line_number_;
- std::string summary_; // The test failure summary.
- std::string message_; // The test failure message.
-};
-
-// Prints a TestPartResult object.
-std::ostream& operator<<(std::ostream& os, const TestPartResult& result);
-
-// An array of TestPartResult objects.
-//
-// Don't inherit from TestPartResultArray as its destructor is not
-// virtual.
-class GTEST_API_ TestPartResultArray {
- public:
- TestPartResultArray() {}
-
- // Appends the given TestPartResult to the array.
- void Append(const TestPartResult& result);
-
- // Returns the TestPartResult at the given index (0-based).
- const TestPartResult& GetTestPartResult(int index) const;
-
- // Returns the number of TestPartResult objects in the array.
- int size() const;
-
- private:
- std::vector<TestPartResult> array_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TestPartResultArray);
-};
-
-// This interface knows how to report a test part result.
-class GTEST_API_ TestPartResultReporterInterface {
- public:
- virtual ~TestPartResultReporterInterface() {}
-
- virtual void ReportTestPartResult(const TestPartResult& result) = 0;
-};
-
-namespace internal {
-
-// This helper class is used by {ASSERT|EXPECT}_NO_FATAL_FAILURE to check if a
-// statement generates new fatal failures. To do so it registers itself as the
-// current test part result reporter. Besides checking if fatal failures were
-// reported, it only delegates the reporting to the former result reporter.
-// The original result reporter is restored in the destructor.
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-class GTEST_API_ HasNewFatalFailureHelper
- : public TestPartResultReporterInterface {
- public:
- HasNewFatalFailureHelper();
- ~HasNewFatalFailureHelper() override;
- void ReportTestPartResult(const TestPartResult& result) override;
- bool has_new_fatal_failure() const { return has_new_fatal_failure_; }
- private:
- bool has_new_fatal_failure_;
- TestPartResultReporterInterface* original_reporter_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(HasNewFatalFailureHelper);
-};
-
-} // namespace internal
-
-} // namespace testing
-
-GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251
-
-#endif // GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-typed-test.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-typed-test.h
deleted file mode 100644
index 095ce058022..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest-typed-test.h
+++ /dev/null
@@ -1,330 +0,0 @@
-// Copyright 2008 Google Inc.
-// All Rights Reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
-#define GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
-
-// This header implements typed tests and type-parameterized tests.
-
-// Typed (aka type-driven) tests repeat the same test for types in a
-// list. You must know which types you want to test with when writing
-// typed tests. Here's how you do it:
-
-#if 0
-
-// First, define a fixture class template. It should be parameterized
-// by a type. Remember to derive it from testing::Test.
-template <typename T>
-class FooTest : public testing::Test {
- public:
- ...
- typedef std::list<T> List;
- static T shared_;
- T value_;
-};
-
-// Next, associate a list of types with the test suite, which will be
-// repeated for each type in the list. The typedef is necessary for
-// the macro to parse correctly.
-typedef testing::Types<char, int, unsigned int> MyTypes;
-TYPED_TEST_SUITE(FooTest, MyTypes);
-
-// If the type list contains only one type, you can write that type
-// directly without Types<...>:
-// TYPED_TEST_SUITE(FooTest, int);
-
-// Then, use TYPED_TEST() instead of TEST_F() to define as many typed
-// tests for this test suite as you want.
-TYPED_TEST(FooTest, DoesBlah) {
- // Inside a test, refer to the special name TypeParam to get the type
- // parameter. Since we are inside a derived class template, C++ requires
- // us to visit the members of FooTest via 'this'.
- TypeParam n = this->value_;
-
- // To visit static members of the fixture, add the TestFixture::
- // prefix.
- n += TestFixture::shared_;
-
- // To refer to typedefs in the fixture, add the "typename
- // TestFixture::" prefix.
- typename TestFixture::List values;
- values.push_back(n);
- ...
-}
-
-TYPED_TEST(FooTest, HasPropertyA) { ... }
-
-// TYPED_TEST_SUITE takes an optional third argument which allows to specify a
-// class that generates custom test name suffixes based on the type. This should
-// be a class which has a static template function GetName(int index) returning
-// a string for each type. The provided integer index equals the index of the
-// type in the provided type list. In many cases the index can be ignored.
-//
-// For example:
-// class MyTypeNames {
-// public:
-// template <typename T>
-// static std::string GetName(int) {
-// if (std::is_same<T, char>()) return "char";
-// if (std::is_same<T, int>()) return "int";
-// if (std::is_same<T, unsigned int>()) return "unsignedInt";
-// }
-// };
-// TYPED_TEST_SUITE(FooTest, MyTypes, MyTypeNames);
-
-#endif // 0
-
-// Type-parameterized tests are abstract test patterns parameterized
-// by a type. Compared with typed tests, type-parameterized tests
-// allow you to define the test pattern without knowing what the type
-// parameters are. The defined pattern can be instantiated with
-// different types any number of times, in any number of translation
-// units.
-//
-// If you are designing an interface or concept, you can define a
-// suite of type-parameterized tests to verify properties that any
-// valid implementation of the interface/concept should have. Then,
-// each implementation can easily instantiate the test suite to verify
-// that it conforms to the requirements, without having to write
-// similar tests repeatedly. Here's an example:
-
-#if 0
-
-// First, define a fixture class template. It should be parameterized
-// by a type. Remember to derive it from testing::Test.
-template <typename T>
-class FooTest : public testing::Test {
- ...
-};
-
-// Next, declare that you will define a type-parameterized test suite
-// (the _P suffix is for "parameterized" or "pattern", whichever you
-// prefer):
-TYPED_TEST_SUITE_P(FooTest);
-
-// Then, use TYPED_TEST_P() to define as many type-parameterized tests
-// for this type-parameterized test suite as you want.
-TYPED_TEST_P(FooTest, DoesBlah) {
- // Inside a test, refer to TypeParam to get the type parameter.
- TypeParam n = 0;
- ...
-}
-
-TYPED_TEST_P(FooTest, HasPropertyA) { ... }
-
-// Now the tricky part: you need to register all test patterns before
-// you can instantiate them. The first argument of the macro is the
-// test suite name; the rest are the names of the tests in this test
-// case.
-REGISTER_TYPED_TEST_SUITE_P(FooTest,
- DoesBlah, HasPropertyA);
-
-// Finally, you are free to instantiate the pattern with the types you
-// want. If you put the above code in a header file, you can #include
-// it in multiple C++ source files and instantiate it multiple times.
-//
-// To distinguish different instances of the pattern, the first
-// argument to the INSTANTIATE_* macro is a prefix that will be added
-// to the actual test suite name. Remember to pick unique prefixes for
-// different instances.
-typedef testing::Types<char, int, unsigned int> MyTypes;
-INSTANTIATE_TYPED_TEST_SUITE_P(My, FooTest, MyTypes);
-
-// If the type list contains only one type, you can write that type
-// directly without Types<...>:
-// INSTANTIATE_TYPED_TEST_SUITE_P(My, FooTest, int);
-//
-// Similar to the optional argument of TYPED_TEST_SUITE above,
-// INSTANTIATE_TEST_SUITE_P takes an optional fourth argument which allows to
-// generate custom names.
-// INSTANTIATE_TYPED_TEST_SUITE_P(My, FooTest, MyTypes, MyTypeNames);
-
-#endif // 0
-
-#include "gtest/internal/gtest-port.h"
-#include "gtest/internal/gtest-type-util.h"
-
-// Implements typed tests.
-
-#if GTEST_HAS_TYPED_TEST
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Expands to the name of the typedef for the type parameters of the
-// given test suite.
-#define GTEST_TYPE_PARAMS_(TestSuiteName) gtest_type_params_##TestSuiteName##_
-
-// Expands to the name of the typedef for the NameGenerator, responsible for
-// creating the suffixes of the name.
-#define GTEST_NAME_GENERATOR_(TestSuiteName) \
- gtest_type_params_##TestSuiteName##_NameGenerator
-
-#define TYPED_TEST_SUITE(CaseName, Types, ...) \
- typedef ::testing::internal::TypeList<Types>::type GTEST_TYPE_PARAMS_( \
- CaseName); \
- typedef ::testing::internal::NameGeneratorSelector<__VA_ARGS__>::type \
- GTEST_NAME_GENERATOR_(CaseName)
-
-# define TYPED_TEST(CaseName, TestName) \
- template <typename gtest_TypeParam_> \
- class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \
- : public CaseName<gtest_TypeParam_> { \
- private: \
- typedef CaseName<gtest_TypeParam_> TestFixture; \
- typedef gtest_TypeParam_ TypeParam; \
- virtual void TestBody(); \
- }; \
- static bool gtest_##CaseName##_##TestName##_registered_ \
- GTEST_ATTRIBUTE_UNUSED_ = \
- ::testing::internal::TypeParameterizedTest< \
- CaseName, \
- ::testing::internal::TemplateSel<GTEST_TEST_CLASS_NAME_(CaseName, \
- TestName)>, \
- GTEST_TYPE_PARAMS_( \
- CaseName)>::Register("", \
- ::testing::internal::CodeLocation( \
- __FILE__, __LINE__), \
- #CaseName, #TestName, 0, \
- ::testing::internal::GenerateNames< \
- GTEST_NAME_GENERATOR_(CaseName), \
- GTEST_TYPE_PARAMS_(CaseName)>()); \
- template <typename gtest_TypeParam_> \
- void GTEST_TEST_CLASS_NAME_(CaseName, \
- TestName)<gtest_TypeParam_>::TestBody()
-
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-#define TYPED_TEST_CASE \
- static_assert(::testing::internal::TypedTestCaseIsDeprecated(), ""); \
- TYPED_TEST_SUITE
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-#endif // GTEST_HAS_TYPED_TEST
-
-// Implements type-parameterized tests.
-
-#if GTEST_HAS_TYPED_TEST_P
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Expands to the namespace name that the type-parameterized tests for
-// the given type-parameterized test suite are defined in. The exact
-// name of the namespace is subject to change without notice.
-#define GTEST_SUITE_NAMESPACE_(TestSuiteName) gtest_suite_##TestSuiteName##_
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Expands to the name of the variable used to remember the names of
-// the defined tests in the given test suite.
-#define GTEST_TYPED_TEST_SUITE_P_STATE_(TestSuiteName) \
- gtest_typed_test_suite_p_state_##TestSuiteName##_
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE DIRECTLY.
-//
-// Expands to the name of the variable used to remember the names of
-// the registered tests in the given test suite.
-#define GTEST_REGISTERED_TEST_NAMES_(TestSuiteName) \
- gtest_registered_test_names_##TestSuiteName##_
-
-// The variables defined in the type-parameterized test macros are
-// static as typically these macros are used in a .h file that can be
-// #included in multiple translation units linked together.
-#define TYPED_TEST_SUITE_P(SuiteName) \
- static ::testing::internal::TypedTestSuitePState \
- GTEST_TYPED_TEST_SUITE_P_STATE_(SuiteName)
-
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-#define TYPED_TEST_CASE_P \
- static_assert(::testing::internal::TypedTestCase_P_IsDeprecated(), ""); \
- TYPED_TEST_SUITE_P
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-#define TYPED_TEST_P(SuiteName, TestName) \
- namespace GTEST_SUITE_NAMESPACE_(SuiteName) { \
- template <typename gtest_TypeParam_> \
- class TestName : public SuiteName<gtest_TypeParam_> { \
- private: \
- typedef SuiteName<gtest_TypeParam_> TestFixture; \
- typedef gtest_TypeParam_ TypeParam; \
- virtual void TestBody(); \
- }; \
- static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \
- GTEST_TYPED_TEST_SUITE_P_STATE_(SuiteName).AddTestName( \
- __FILE__, __LINE__, #SuiteName, #TestName); \
- } \
- template <typename gtest_TypeParam_> \
- void GTEST_SUITE_NAMESPACE_( \
- SuiteName)::TestName<gtest_TypeParam_>::TestBody()
-
-#define REGISTER_TYPED_TEST_SUITE_P(SuiteName, ...) \
- namespace GTEST_SUITE_NAMESPACE_(SuiteName) { \
- typedef ::testing::internal::Templates<__VA_ARGS__>::type gtest_AllTests_; \
- } \
- static const char* const GTEST_REGISTERED_TEST_NAMES_( \
- SuiteName) GTEST_ATTRIBUTE_UNUSED_ = \
- GTEST_TYPED_TEST_SUITE_P_STATE_(SuiteName).VerifyRegisteredTestNames( \
- __FILE__, __LINE__, #__VA_ARGS__)
-
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-#define REGISTER_TYPED_TEST_CASE_P \
- static_assert(::testing::internal::RegisterTypedTestCase_P_IsDeprecated(), \
- ""); \
- REGISTER_TYPED_TEST_SUITE_P
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-#define INSTANTIATE_TYPED_TEST_SUITE_P(Prefix, SuiteName, Types, ...) \
- static bool gtest_##Prefix##_##SuiteName GTEST_ATTRIBUTE_UNUSED_ = \
- ::testing::internal::TypeParameterizedTestSuite< \
- SuiteName, GTEST_SUITE_NAMESPACE_(SuiteName)::gtest_AllTests_, \
- ::testing::internal::TypeList<Types>::type>:: \
- Register(#Prefix, \
- ::testing::internal::CodeLocation(__FILE__, __LINE__), \
- &GTEST_TYPED_TEST_SUITE_P_STATE_(SuiteName), #SuiteName, \
- GTEST_REGISTERED_TEST_NAMES_(SuiteName), \
- ::testing::internal::GenerateNames< \
- ::testing::internal::NameGeneratorSelector< \
- __VA_ARGS__>::type, \
- ::testing::internal::TypeList<Types>::type>())
-
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-#define INSTANTIATE_TYPED_TEST_CASE_P \
- static_assert( \
- ::testing::internal::InstantiateTypedTestCase_P_IsDeprecated(), ""); \
- INSTANTIATE_TYPED_TEST_SUITE_P
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-#endif // GTEST_HAS_TYPED_TEST_P
-
-#endif // GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest.h
deleted file mode 100644
index dbe5b1c2c3f..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest.h
+++ /dev/null
@@ -1,2478 +0,0 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This header file defines the public API for Google Test. It should be
-// included by any test program that uses Google Test.
-//
-// IMPORTANT NOTE: Due to limitation of the C++ language, we have to
-// leave some internal implementation details in this header file.
-// They are clearly marked by comments like this:
-//
-// // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-//
-// Such code is NOT meant to be used by a user directly, and is subject
-// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user
-// program!
-//
-// Acknowledgment: Google Test borrowed the idea of automatic test
-// registration from Barthelemy Dagenais' (barthelemy@prologique.com)
-// easyUnit framework.
-
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GTEST_INCLUDE_GTEST_GTEST_H_
-#define GTEST_INCLUDE_GTEST_GTEST_H_
-
-#include <cstddef>
-#include <limits>
-#include <memory>
-#include <ostream>
-#include <type_traits>
-#include <vector>
-
-#include "gtest/internal/gtest-internal.h"
-#include "gtest/internal/gtest-string.h"
-#include "gtest/gtest-death-test.h"
-#include "gtest/gtest-matchers.h"
-#include "gtest/gtest-message.h"
-#include "gtest/gtest-param-test.h"
-#include "gtest/gtest-printers.h"
-#include "gtest/gtest_prod.h"
-#include "gtest/gtest-test-part.h"
-#include "gtest/gtest-typed-test.h"
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
-/* class A needs to have dll-interface to be used by clients of class B */)
-
-namespace testing {
-
-// Silence C4100 (unreferenced formal parameter) and 4805
-// unsafe mix of type 'const int' and type 'const bool'
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable:4805)
-# pragma warning(disable:4100)
-#endif
-
-
-// Declares the flags.
-
-// This flag temporary enables the disabled tests.
-GTEST_DECLARE_bool_(also_run_disabled_tests);
-
-// This flag brings the debugger on an assertion failure.
-GTEST_DECLARE_bool_(break_on_failure);
-
-// This flag controls whether Google Test catches all test-thrown exceptions
-// and logs them as failures.
-GTEST_DECLARE_bool_(catch_exceptions);
-
-// This flag enables using colors in terminal output. Available values are
-// "yes" to enable colors, "no" (disable colors), or "auto" (the default)
-// to let Google Test decide.
-GTEST_DECLARE_string_(color);
-
-// This flag sets up the filter to select by name using a glob pattern
-// the tests to run. If the filter is not given all tests are executed.
-GTEST_DECLARE_string_(filter);
-
-// This flag controls whether Google Test installs a signal handler that dumps
-// debugging information when fatal signals are raised.
-GTEST_DECLARE_bool_(install_failure_signal_handler);
-
-// This flag causes the Google Test to list tests. None of the tests listed
-// are actually run if the flag is provided.
-GTEST_DECLARE_bool_(list_tests);
-
-// This flag controls whether Google Test emits a detailed XML report to a file
-// in addition to its normal textual output.
-GTEST_DECLARE_string_(output);
-
-// This flags control whether Google Test prints the elapsed time for each
-// test.
-GTEST_DECLARE_bool_(print_time);
-
-// This flags control whether Google Test prints UTF8 characters as text.
-GTEST_DECLARE_bool_(print_utf8);
-
-// This flag specifies the random number seed.
-GTEST_DECLARE_int32_(random_seed);
-
-// This flag sets how many times the tests are repeated. The default value
-// is 1. If the value is -1 the tests are repeating forever.
-GTEST_DECLARE_int32_(repeat);
-
-// This flag controls whether Google Test includes Google Test internal
-// stack frames in failure stack traces.
-GTEST_DECLARE_bool_(show_internal_stack_frames);
-
-// When this flag is specified, tests' order is randomized on every iteration.
-GTEST_DECLARE_bool_(shuffle);
-
-// This flag specifies the maximum number of stack frames to be
-// printed in a failure message.
-GTEST_DECLARE_int32_(stack_trace_depth);
-
-// When this flag is specified, a failed assertion will throw an
-// exception if exceptions are enabled, or exit the program with a
-// non-zero code otherwise. For use with an external test framework.
-GTEST_DECLARE_bool_(throw_on_failure);
-
-// When this flag is set with a "host:port" string, on supported
-// platforms test results are streamed to the specified port on
-// the specified host machine.
-GTEST_DECLARE_string_(stream_result_to);
-
-#if GTEST_USE_OWN_FLAGFILE_FLAG_
-GTEST_DECLARE_string_(flagfile);
-#endif // GTEST_USE_OWN_FLAGFILE_FLAG_
-
-// The upper limit for valid stack trace depths.
-const int kMaxStackTraceDepth = 100;
-
-namespace internal {
-
-class AssertHelper;
-class DefaultGlobalTestPartResultReporter;
-class ExecDeathTest;
-class NoExecDeathTest;
-class FinalSuccessChecker;
-class GTestFlagSaver;
-class StreamingListenerTest;
-class TestResultAccessor;
-class TestEventListenersAccessor;
-class TestEventRepeater;
-class UnitTestRecordPropertyTestHelper;
-class WindowsDeathTest;
-class FuchsiaDeathTest;
-class UnitTestImpl* GetUnitTestImpl();
-void ReportFailureInUnknownLocation(TestPartResult::Type result_type,
- const std::string& message);
-
-} // namespace internal
-
-// The friend relationship of some of these classes is cyclic.
-// If we don't forward declare them the compiler might confuse the classes
-// in friendship clauses with same named classes on the scope.
-class Test;
-class TestSuite;
-
-// Old API is still available but deprecated
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-using TestCase = TestSuite;
-#endif
-class TestInfo;
-class UnitTest;
-
-// A class for indicating whether an assertion was successful. When
-// the assertion wasn't successful, the AssertionResult object
-// remembers a non-empty message that describes how it failed.
-//
-// To create an instance of this class, use one of the factory functions
-// (AssertionSuccess() and AssertionFailure()).
-//
-// This class is useful for two purposes:
-// 1. Defining predicate functions to be used with Boolean test assertions
-// EXPECT_TRUE/EXPECT_FALSE and their ASSERT_ counterparts
-// 2. Defining predicate-format functions to be
-// used with predicate assertions (ASSERT_PRED_FORMAT*, etc).
-//
-// For example, if you define IsEven predicate:
-//
-// testing::AssertionResult IsEven(int n) {
-// if ((n % 2) == 0)
-// return testing::AssertionSuccess();
-// else
-// return testing::AssertionFailure() << n << " is odd";
-// }
-//
-// Then the failed expectation EXPECT_TRUE(IsEven(Fib(5)))
-// will print the message
-//
-// Value of: IsEven(Fib(5))
-// Actual: false (5 is odd)
-// Expected: true
-//
-// instead of a more opaque
-//
-// Value of: IsEven(Fib(5))
-// Actual: false
-// Expected: true
-//
-// in case IsEven is a simple Boolean predicate.
-//
-// If you expect your predicate to be reused and want to support informative
-// messages in EXPECT_FALSE and ASSERT_FALSE (negative assertions show up
-// about half as often as positive ones in our tests), supply messages for
-// both success and failure cases:
-//
-// testing::AssertionResult IsEven(int n) {
-// if ((n % 2) == 0)
-// return testing::AssertionSuccess() << n << " is even";
-// else
-// return testing::AssertionFailure() << n << " is odd";
-// }
-//
-// Then a statement EXPECT_FALSE(IsEven(Fib(6))) will print
-//
-// Value of: IsEven(Fib(6))
-// Actual: true (8 is even)
-// Expected: false
-//
-// NB: Predicates that support negative Boolean assertions have reduced
-// performance in positive ones so be careful not to use them in tests
-// that have lots (tens of thousands) of positive Boolean assertions.
-//
-// To use this class with EXPECT_PRED_FORMAT assertions such as:
-//
-// // Verifies that Foo() returns an even number.
-// EXPECT_PRED_FORMAT1(IsEven, Foo());
-//
-// you need to define:
-//
-// testing::AssertionResult IsEven(const char* expr, int n) {
-// if ((n % 2) == 0)
-// return testing::AssertionSuccess();
-// else
-// return testing::AssertionFailure()
-// << "Expected: " << expr << " is even\n Actual: it's " << n;
-// }
-//
-// If Foo() returns 5, you will see the following message:
-//
-// Expected: Foo() is even
-// Actual: it's 5
-//
-class GTEST_API_ AssertionResult {
- public:
- // Copy constructor.
- // Used in EXPECT_TRUE/FALSE(assertion_result).
- AssertionResult(const AssertionResult& other);
-
-#if defined(_MSC_VER) && _MSC_VER < 1910
- GTEST_DISABLE_MSC_WARNINGS_PUSH_(4800 /* forcing value to bool */)
-#endif
-
- // Used in the EXPECT_TRUE/FALSE(bool_expression).
- //
- // T must be contextually convertible to bool.
- //
- // The second parameter prevents this overload from being considered if
- // the argument is implicitly convertible to AssertionResult. In that case
- // we want AssertionResult's copy constructor to be used.
- template <typename T>
- explicit AssertionResult(
- const T& success,
- typename std::enable_if<
- !std::is_convertible<T, AssertionResult>::value>::type*
- /*enabler*/
- = nullptr)
- : success_(success) {}
-
-#if defined(_MSC_VER) && _MSC_VER < 1910
- GTEST_DISABLE_MSC_WARNINGS_POP_()
-#endif
-
- // Assignment operator.
- AssertionResult& operator=(AssertionResult other) {
- swap(other);
- return *this;
- }
-
- // Returns true if and only if the assertion succeeded.
- operator bool() const { return success_; } // NOLINT
-
- // Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE.
- AssertionResult operator!() const;
-
- // Returns the text streamed into this AssertionResult. Test assertions
- // use it when they fail (i.e., the predicate's outcome doesn't match the
- // assertion's expectation). When nothing has been streamed into the
- // object, returns an empty string.
- const char* message() const {
- return message_.get() != nullptr ? message_->c_str() : "";
- }
- // Deprecated; please use message() instead.
- const char* failure_message() const { return message(); }
-
- // Streams a custom failure message into this object.
- template <typename T> AssertionResult& operator<<(const T& value) {
- AppendMessage(Message() << value);
- return *this;
- }
-
- // Allows streaming basic output manipulators such as endl or flush into
- // this object.
- AssertionResult& operator<<(
- ::std::ostream& (*basic_manipulator)(::std::ostream& stream)) {
- AppendMessage(Message() << basic_manipulator);
- return *this;
- }
-
- private:
- // Appends the contents of message to message_.
- void AppendMessage(const Message& a_message) {
- if (message_.get() == nullptr) message_.reset(new ::std::string);
- message_->append(a_message.GetString().c_str());
- }
-
- // Swap the contents of this AssertionResult with other.
- void swap(AssertionResult& other);
-
- // Stores result of the assertion predicate.
- bool success_;
- // Stores the message describing the condition in case the expectation
- // construct is not satisfied with the predicate's outcome.
- // Referenced via a pointer to avoid taking too much stack frame space
- // with test assertions.
- std::unique_ptr< ::std::string> message_;
-};
-
-// Makes a successful assertion result.
-GTEST_API_ AssertionResult AssertionSuccess();
-
-// Makes a failed assertion result.
-GTEST_API_ AssertionResult AssertionFailure();
-
-// Makes a failed assertion result with the given failure message.
-// Deprecated; use AssertionFailure() << msg.
-GTEST_API_ AssertionResult AssertionFailure(const Message& msg);
-
-} // namespace testing
-
-// Includes the auto-generated header that implements a family of generic
-// predicate assertion macros. This include comes late because it relies on
-// APIs declared above.
-#include "gtest/gtest_pred_impl.h"
-
-namespace testing {
-
-// The abstract class that all tests inherit from.
-//
-// In Google Test, a unit test program contains one or many TestSuites, and
-// each TestSuite contains one or many Tests.
-//
-// When you define a test using the TEST macro, you don't need to
-// explicitly derive from Test - the TEST macro automatically does
-// this for you.
-//
-// The only time you derive from Test is when defining a test fixture
-// to be used in a TEST_F. For example:
-//
-// class FooTest : public testing::Test {
-// protected:
-// void SetUp() override { ... }
-// void TearDown() override { ... }
-// ...
-// };
-//
-// TEST_F(FooTest, Bar) { ... }
-// TEST_F(FooTest, Baz) { ... }
-//
-// Test is not copyable.
-class GTEST_API_ Test {
- public:
- friend class TestInfo;
-
- // The d'tor is virtual as we intend to inherit from Test.
- virtual ~Test();
-
- // Sets up the stuff shared by all tests in this test case.
- //
- // Google Test will call Foo::SetUpTestSuite() before running the first
- // test in test case Foo. Hence a sub-class can define its own
- // SetUpTestSuite() method to shadow the one defined in the super
- // class.
- // Failures that happen during SetUpTestSuite are logged but otherwise
- // ignored.
- static void SetUpTestSuite() {}
-
- // Tears down the stuff shared by all tests in this test suite.
- //
- // Google Test will call Foo::TearDownTestSuite() after running the last
- // test in test case Foo. Hence a sub-class can define its own
- // TearDownTestSuite() method to shadow the one defined in the super
- // class.
- // Failures that happen during TearDownTestSuite are logged but otherwise
- // ignored.
- static void TearDownTestSuite() {}
-
- // Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- static void TearDownTestCase() {}
- static void SetUpTestCase() {}
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
- // Returns true if and only if the current test has a fatal failure.
- static bool HasFatalFailure();
-
- // Returns true if and only if the current test has a non-fatal failure.
- static bool HasNonfatalFailure();
-
- // Returns true if and only if the current test was skipped.
- static bool IsSkipped();
-
- // Returns true if and only if the current test has a (either fatal or
- // non-fatal) failure.
- static bool HasFailure() { return HasFatalFailure() || HasNonfatalFailure(); }
-
- // Logs a property for the current test, test suite, or for the entire
- // invocation of the test program when used outside of the context of a
- // test suite. Only the last value for a given key is remembered. These
- // are public static so they can be called from utility functions that are
- // not members of the test fixture. Calls to RecordProperty made during
- // lifespan of the test (from the moment its constructor starts to the
- // moment its destructor finishes) will be output in XML as attributes of
- // the <testcase> element. Properties recorded from fixture's
- // SetUpTestSuite or TearDownTestSuite are logged as attributes of the
- // corresponding <testsuite> element. Calls to RecordProperty made in the
- // global context (before or after invocation of RUN_ALL_TESTS and from
- // SetUp/TearDown method of Environment objects registered with Google
- // Test) will be output as attributes of the <testsuites> element.
- static void RecordProperty(const std::string& key, const std::string& value);
- static void RecordProperty(const std::string& key, int value);
-
- protected:
- // Creates a Test object.
- Test();
-
- // Sets up the test fixture.
- virtual void SetUp();
-
- // Tears down the test fixture.
- virtual void TearDown();
-
- private:
- // Returns true if and only if the current test has the same fixture class
- // as the first test in the current test suite.
- static bool HasSameFixtureClass();
-
- // Runs the test after the test fixture has been set up.
- //
- // A sub-class must implement this to define the test logic.
- //
- // DO NOT OVERRIDE THIS FUNCTION DIRECTLY IN A USER PROGRAM.
- // Instead, use the TEST or TEST_F macro.
- virtual void TestBody() = 0;
-
- // Sets up, executes, and tears down the test.
- void Run();
-
- // Deletes self. We deliberately pick an unusual name for this
- // internal method to avoid clashing with names used in user TESTs.
- void DeleteSelf_() { delete this; }
-
- const std::unique_ptr<GTEST_FLAG_SAVER_> gtest_flag_saver_;
-
- // Often a user misspells SetUp() as Setup() and spends a long time
- // wondering why it is never called by Google Test. The declaration of
- // the following method is solely for catching such an error at
- // compile time:
- //
- // - The return type is deliberately chosen to be not void, so it
- // will be a conflict if void Setup() is declared in the user's
- // test fixture.
- //
- // - This method is private, so it will be another compiler error
- // if the method is called from the user's test fixture.
- //
- // DO NOT OVERRIDE THIS FUNCTION.
- //
- // If you see an error about overriding the following function or
- // about it being private, you have mis-spelled SetUp() as Setup().
- struct Setup_should_be_spelled_SetUp {};
- virtual Setup_should_be_spelled_SetUp* Setup() { return nullptr; }
-
- // We disallow copying Tests.
- GTEST_DISALLOW_COPY_AND_ASSIGN_(Test);
-};
-
-typedef internal::TimeInMillis TimeInMillis;
-
-// A copyable object representing a user specified test property which can be
-// output as a key/value string pair.
-//
-// Don't inherit from TestProperty as its destructor is not virtual.
-class TestProperty {
- public:
- // C'tor. TestProperty does NOT have a default constructor.
- // Always use this constructor (with parameters) to create a
- // TestProperty object.
- TestProperty(const std::string& a_key, const std::string& a_value) :
- key_(a_key), value_(a_value) {
- }
-
- // Gets the user supplied key.
- const char* key() const {
- return key_.c_str();
- }
-
- // Gets the user supplied value.
- const char* value() const {
- return value_.c_str();
- }
-
- // Sets a new value, overriding the one supplied in the constructor.
- void SetValue(const std::string& new_value) {
- value_ = new_value;
- }
-
- private:
- // The key supplied by the user.
- std::string key_;
- // The value supplied by the user.
- std::string value_;
-};
-
-// The result of a single Test. This includes a list of
-// TestPartResults, a list of TestProperties, a count of how many
-// death tests there are in the Test, and how much time it took to run
-// the Test.
-//
-// TestResult is not copyable.
-class GTEST_API_ TestResult {
- public:
- // Creates an empty TestResult.
- TestResult();
-
- // D'tor. Do not inherit from TestResult.
- ~TestResult();
-
- // Gets the number of all test parts. This is the sum of the number
- // of successful test parts and the number of failed test parts.
- int total_part_count() const;
-
- // Returns the number of the test properties.
- int test_property_count() const;
-
- // Returns true if and only if the test passed (i.e. no test part failed).
- bool Passed() const { return !Skipped() && !Failed(); }
-
- // Returns true if and only if the test was skipped.
- bool Skipped() const;
-
- // Returns true if and only if the test failed.
- bool Failed() const;
-
- // Returns true if and only if the test fatally failed.
- bool HasFatalFailure() const;
-
- // Returns true if and only if the test has a non-fatal failure.
- bool HasNonfatalFailure() const;
-
- // Returns the elapsed time, in milliseconds.
- TimeInMillis elapsed_time() const { return elapsed_time_; }
-
- // Gets the time of the test case start, in ms from the start of the
- // UNIX epoch.
- TimeInMillis start_timestamp() const { return start_timestamp_; }
-
- // Returns the i-th test part result among all the results. i can range from 0
- // to total_part_count() - 1. If i is not in that range, aborts the program.
- const TestPartResult& GetTestPartResult(int i) const;
-
- // Returns the i-th test property. i can range from 0 to
- // test_property_count() - 1. If i is not in that range, aborts the
- // program.
- const TestProperty& GetTestProperty(int i) const;
-
- private:
- friend class TestInfo;
- friend class TestSuite;
- friend class UnitTest;
- friend class internal::DefaultGlobalTestPartResultReporter;
- friend class internal::ExecDeathTest;
- friend class internal::TestResultAccessor;
- friend class internal::UnitTestImpl;
- friend class internal::WindowsDeathTest;
- friend class internal::FuchsiaDeathTest;
-
- // Gets the vector of TestPartResults.
- const std::vector<TestPartResult>& test_part_results() const {
- return test_part_results_;
- }
-
- // Gets the vector of TestProperties.
- const std::vector<TestProperty>& test_properties() const {
- return test_properties_;
- }
-
- // Sets the start time.
- void set_start_timestamp(TimeInMillis start) { start_timestamp_ = start; }
-
- // Sets the elapsed time.
- void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; }
-
- // Adds a test property to the list. The property is validated and may add
- // a non-fatal failure if invalid (e.g., if it conflicts with reserved
- // key names). If a property is already recorded for the same key, the
- // value will be updated, rather than storing multiple values for the same
- // key. xml_element specifies the element for which the property is being
- // recorded and is used for validation.
- void RecordProperty(const std::string& xml_element,
- const TestProperty& test_property);
-
- // Adds a failure if the key is a reserved attribute of Google Test
- // testsuite tags. Returns true if the property is valid.
- // FIXME: Validate attribute names are legal and human readable.
- static bool ValidateTestProperty(const std::string& xml_element,
- const TestProperty& test_property);
-
- // Adds a test part result to the list.
- void AddTestPartResult(const TestPartResult& test_part_result);
-
- // Returns the death test count.
- int death_test_count() const { return death_test_count_; }
-
- // Increments the death test count, returning the new count.
- int increment_death_test_count() { return ++death_test_count_; }
-
- // Clears the test part results.
- void ClearTestPartResults();
-
- // Clears the object.
- void Clear();
-
- // Protects mutable state of the property vector and of owned
- // properties, whose values may be updated.
- internal::Mutex test_properites_mutex_;
-
- // The vector of TestPartResults
- std::vector<TestPartResult> test_part_results_;
- // The vector of TestProperties
- std::vector<TestProperty> test_properties_;
- // Running count of death tests.
- int death_test_count_;
- // The start time, in milliseconds since UNIX Epoch.
- TimeInMillis start_timestamp_;
- // The elapsed time, in milliseconds.
- TimeInMillis elapsed_time_;
-
- // We disallow copying TestResult.
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TestResult);
-}; // class TestResult
-
-// A TestInfo object stores the following information about a test:
-//
-// Test suite name
-// Test name
-// Whether the test should be run
-// A function pointer that creates the test object when invoked
-// Test result
-//
-// The constructor of TestInfo registers itself with the UnitTest
-// singleton such that the RUN_ALL_TESTS() macro knows which tests to
-// run.
-class GTEST_API_ TestInfo {
- public:
- // Destructs a TestInfo object. This function is not virtual, so
- // don't inherit from TestInfo.
- ~TestInfo();
-
- // Returns the test suite name.
- const char* test_suite_name() const { return test_suite_name_.c_str(); }
-
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- const char* test_case_name() const { return test_suite_name(); }
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
- // Returns the test name.
- const char* name() const { return name_.c_str(); }
-
- // Returns the name of the parameter type, or NULL if this is not a typed
- // or a type-parameterized test.
- const char* type_param() const {
- if (type_param_.get() != nullptr) return type_param_->c_str();
- return nullptr;
- }
-
- // Returns the text representation of the value parameter, or NULL if this
- // is not a value-parameterized test.
- const char* value_param() const {
- if (value_param_.get() != nullptr) return value_param_->c_str();
- return nullptr;
- }
-
- // Returns the file name where this test is defined.
- const char* file() const { return location_.file.c_str(); }
-
- // Returns the line where this test is defined.
- int line() const { return location_.line; }
-
- // Return true if this test should not be run because it's in another shard.
- bool is_in_another_shard() const { return is_in_another_shard_; }
-
- // Returns true if this test should run, that is if the test is not
- // disabled (or it is disabled but the also_run_disabled_tests flag has
- // been specified) and its full name matches the user-specified filter.
- //
- // Google Test allows the user to filter the tests by their full names.
- // The full name of a test Bar in test suite Foo is defined as
- // "Foo.Bar". Only the tests that match the filter will run.
- //
- // A filter is a colon-separated list of glob (not regex) patterns,
- // optionally followed by a '-' and a colon-separated list of
- // negative patterns (tests to exclude). A test is run if it
- // matches one of the positive patterns and does not match any of
- // the negative patterns.
- //
- // For example, *A*:Foo.* is a filter that matches any string that
- // contains the character 'A' or starts with "Foo.".
- bool should_run() const { return should_run_; }
-
- // Returns true if and only if this test will appear in the XML report.
- bool is_reportable() const {
- // The XML report includes tests matching the filter, excluding those
- // run in other shards.
- return matches_filter_ && !is_in_another_shard_;
- }
-
- // Returns the result of the test.
- const TestResult* result() const { return &result_; }
-
- private:
-#if GTEST_HAS_DEATH_TEST
- friend class internal::DefaultDeathTestFactory;
-#endif // GTEST_HAS_DEATH_TEST
- friend class Test;
- friend class TestSuite;
- friend class internal::UnitTestImpl;
- friend class internal::StreamingListenerTest;
- friend TestInfo* internal::MakeAndRegisterTestInfo(
- const char* test_suite_name, const char* name, const char* type_param,
- const char* value_param, internal::CodeLocation code_location,
- internal::TypeId fixture_class_id, internal::SetUpTestSuiteFunc set_up_tc,
- internal::TearDownTestSuiteFunc tear_down_tc,
- internal::TestFactoryBase* factory);
-
- // Constructs a TestInfo object. The newly constructed instance assumes
- // ownership of the factory object.
- TestInfo(const std::string& test_suite_name, const std::string& name,
- const char* a_type_param, // NULL if not a type-parameterized test
- const char* a_value_param, // NULL if not a value-parameterized test
- internal::CodeLocation a_code_location,
- internal::TypeId fixture_class_id,
- internal::TestFactoryBase* factory);
-
- // Increments the number of death tests encountered in this test so
- // far.
- int increment_death_test_count() {
- return result_.increment_death_test_count();
- }
-
- // Creates the test object, runs it, records its result, and then
- // deletes it.
- void Run();
-
- static void ClearTestResult(TestInfo* test_info) {
- test_info->result_.Clear();
- }
-
- // These fields are immutable properties of the test.
- const std::string test_suite_name_; // test suite name
- const std::string name_; // Test name
- // Name of the parameter type, or NULL if this is not a typed or a
- // type-parameterized test.
- const std::unique_ptr<const ::std::string> type_param_;
- // Text representation of the value parameter, or NULL if this is not a
- // value-parameterized test.
- const std::unique_ptr<const ::std::string> value_param_;
- internal::CodeLocation location_;
- const internal::TypeId fixture_class_id_; // ID of the test fixture class
- bool should_run_; // True if and only if this test should run
- bool is_disabled_; // True if and only if this test is disabled
- bool matches_filter_; // True if this test matches the
- // user-specified filter.
- bool is_in_another_shard_; // Will be run in another shard.
- internal::TestFactoryBase* const factory_; // The factory that creates
- // the test object
-
- // This field is mutable and needs to be reset before running the
- // test for the second time.
- TestResult result_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TestInfo);
-};
-
-// A test suite, which consists of a vector of TestInfos.
-//
-// TestSuite is not copyable.
-class GTEST_API_ TestSuite {
- public:
- // Creates a TestSuite with the given name.
- //
- // TestSuite does NOT have a default constructor. Always use this
- // constructor to create a TestSuite object.
- //
- // Arguments:
- //
- // name: name of the test suite
- // a_type_param: the name of the test's type parameter, or NULL if
- // this is not a type-parameterized test.
- // set_up_tc: pointer to the function that sets up the test suite
- // tear_down_tc: pointer to the function that tears down the test suite
- TestSuite(const char* name, const char* a_type_param,
- internal::SetUpTestSuiteFunc set_up_tc,
- internal::TearDownTestSuiteFunc tear_down_tc);
-
- // Destructor of TestSuite.
- virtual ~TestSuite();
-
- // Gets the name of the TestSuite.
- const char* name() const { return name_.c_str(); }
-
- // Returns the name of the parameter type, or NULL if this is not a
- // type-parameterized test suite.
- const char* type_param() const {
- if (type_param_.get() != nullptr) return type_param_->c_str();
- return nullptr;
- }
-
- // Returns true if any test in this test suite should run.
- bool should_run() const { return should_run_; }
-
- // Gets the number of successful tests in this test suite.
- int successful_test_count() const;
-
- // Gets the number of skipped tests in this test suite.
- int skipped_test_count() const;
-
- // Gets the number of failed tests in this test suite.
- int failed_test_count() const;
-
- // Gets the number of disabled tests that will be reported in the XML report.
- int reportable_disabled_test_count() const;
-
- // Gets the number of disabled tests in this test suite.
- int disabled_test_count() const;
-
- // Gets the number of tests to be printed in the XML report.
- int reportable_test_count() const;
-
- // Get the number of tests in this test suite that should run.
- int test_to_run_count() const;
-
- // Gets the number of all tests in this test suite.
- int total_test_count() const;
-
- // Returns true if and only if the test suite passed.
- bool Passed() const { return !Failed(); }
-
- // Returns true if and only if the test suite failed.
- bool Failed() const { return failed_test_count() > 0; }
-
- // Returns the elapsed time, in milliseconds.
- TimeInMillis elapsed_time() const { return elapsed_time_; }
-
- // Gets the time of the test suite start, in ms from the start of the
- // UNIX epoch.
- TimeInMillis start_timestamp() const { return start_timestamp_; }
-
- // Returns the i-th test among all the tests. i can range from 0 to
- // total_test_count() - 1. If i is not in that range, returns NULL.
- const TestInfo* GetTestInfo(int i) const;
-
- // Returns the TestResult that holds test properties recorded during
- // execution of SetUpTestSuite and TearDownTestSuite.
- const TestResult& ad_hoc_test_result() const { return ad_hoc_test_result_; }
-
- private:
- friend class Test;
- friend class internal::UnitTestImpl;
-
- // Gets the (mutable) vector of TestInfos in this TestSuite.
- std::vector<TestInfo*>& test_info_list() { return test_info_list_; }
-
- // Gets the (immutable) vector of TestInfos in this TestSuite.
- const std::vector<TestInfo*>& test_info_list() const {
- return test_info_list_;
- }
-
- // Returns the i-th test among all the tests. i can range from 0 to
- // total_test_count() - 1. If i is not in that range, returns NULL.
- TestInfo* GetMutableTestInfo(int i);
-
- // Sets the should_run member.
- void set_should_run(bool should) { should_run_ = should; }
-
- // Adds a TestInfo to this test suite. Will delete the TestInfo upon
- // destruction of the TestSuite object.
- void AddTestInfo(TestInfo * test_info);
-
- // Clears the results of all tests in this test suite.
- void ClearResult();
-
- // Clears the results of all tests in the given test suite.
- static void ClearTestSuiteResult(TestSuite* test_suite) {
- test_suite->ClearResult();
- }
-
- // Runs every test in this TestSuite.
- void Run();
-
- // Runs SetUpTestSuite() for this TestSuite. This wrapper is needed
- // for catching exceptions thrown from SetUpTestSuite().
- void RunSetUpTestSuite() {
- if (set_up_tc_ != nullptr) {
- (*set_up_tc_)();
- }
- }
-
- // Runs TearDownTestSuite() for this TestSuite. This wrapper is
- // needed for catching exceptions thrown from TearDownTestSuite().
- void RunTearDownTestSuite() {
- if (tear_down_tc_ != nullptr) {
- (*tear_down_tc_)();
- }
- }
-
- // Returns true if and only if test passed.
- static bool TestPassed(const TestInfo* test_info) {
- return test_info->should_run() && test_info->result()->Passed();
- }
-
- // Returns true if and only if test skipped.
- static bool TestSkipped(const TestInfo* test_info) {
- return test_info->should_run() && test_info->result()->Skipped();
- }
-
- // Returns true if and only if test failed.
- static bool TestFailed(const TestInfo* test_info) {
- return test_info->should_run() && test_info->result()->Failed();
- }
-
- // Returns true if and only if the test is disabled and will be reported in
- // the XML report.
- static bool TestReportableDisabled(const TestInfo* test_info) {
- return test_info->is_reportable() && test_info->is_disabled_;
- }
-
- // Returns true if and only if test is disabled.
- static bool TestDisabled(const TestInfo* test_info) {
- return test_info->is_disabled_;
- }
-
- // Returns true if and only if this test will appear in the XML report.
- static bool TestReportable(const TestInfo* test_info) {
- return test_info->is_reportable();
- }
-
- // Returns true if the given test should run.
- static bool ShouldRunTest(const TestInfo* test_info) {
- return test_info->should_run();
- }
-
- // Shuffles the tests in this test suite.
- void ShuffleTests(internal::Random* random);
-
- // Restores the test order to before the first shuffle.
- void UnshuffleTests();
-
- // Name of the test suite.
- std::string name_;
- // Name of the parameter type, or NULL if this is not a typed or a
- // type-parameterized test.
- const std::unique_ptr<const ::std::string> type_param_;
- // The vector of TestInfos in their original order. It owns the
- // elements in the vector.
- std::vector<TestInfo*> test_info_list_;
- // Provides a level of indirection for the test list to allow easy
- // shuffling and restoring the test order. The i-th element in this
- // vector is the index of the i-th test in the shuffled test list.
- std::vector<int> test_indices_;
- // Pointer to the function that sets up the test suite.
- internal::SetUpTestSuiteFunc set_up_tc_;
- // Pointer to the function that tears down the test suite.
- internal::TearDownTestSuiteFunc tear_down_tc_;
- // True if and only if any test in this test suite should run.
- bool should_run_;
- // The start time, in milliseconds since UNIX Epoch.
- TimeInMillis start_timestamp_;
- // Elapsed time, in milliseconds.
- TimeInMillis elapsed_time_;
- // Holds test properties recorded during execution of SetUpTestSuite and
- // TearDownTestSuite.
- TestResult ad_hoc_test_result_;
-
- // We disallow copying TestSuites.
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TestSuite);
-};
-
-// An Environment object is capable of setting up and tearing down an
-// environment. You should subclass this to define your own
-// environment(s).
-//
-// An Environment object does the set-up and tear-down in virtual
-// methods SetUp() and TearDown() instead of the constructor and the
-// destructor, as:
-//
-// 1. You cannot safely throw from a destructor. This is a problem
-// as in some cases Google Test is used where exceptions are enabled, and
-// we may want to implement ASSERT_* using exceptions where they are
-// available.
-// 2. You cannot use ASSERT_* directly in a constructor or
-// destructor.
-class Environment {
- public:
- // The d'tor is virtual as we need to subclass Environment.
- virtual ~Environment() {}
-
- // Override this to define how to set up the environment.
- virtual void SetUp() {}
-
- // Override this to define how to tear down the environment.
- virtual void TearDown() {}
- private:
- // If you see an error about overriding the following function or
- // about it being private, you have mis-spelled SetUp() as Setup().
- struct Setup_should_be_spelled_SetUp {};
- virtual Setup_should_be_spelled_SetUp* Setup() { return nullptr; }
-};
-
-#if GTEST_HAS_EXCEPTIONS
-
-// Exception which can be thrown from TestEventListener::OnTestPartResult.
-class GTEST_API_ AssertionException
- : public internal::GoogleTestFailureException {
- public:
- explicit AssertionException(const TestPartResult& result)
- : GoogleTestFailureException(result) {}
-};
-
-#endif // GTEST_HAS_EXCEPTIONS
-
-// The interface for tracing execution of tests. The methods are organized in
-// the order the corresponding events are fired.
-class TestEventListener {
- public:
- virtual ~TestEventListener() {}
-
- // Fired before any test activity starts.
- virtual void OnTestProgramStart(const UnitTest& unit_test) = 0;
-
- // Fired before each iteration of tests starts. There may be more than
- // one iteration if GTEST_FLAG(repeat) is set. iteration is the iteration
- // index, starting from 0.
- virtual void OnTestIterationStart(const UnitTest& unit_test,
- int iteration) = 0;
-
- // Fired before environment set-up for each iteration of tests starts.
- virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test) = 0;
-
- // Fired after environment set-up for each iteration of tests ends.
- virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test) = 0;
-
- // Fired before the test suite starts.
- virtual void OnTestSuiteStart(const TestSuite& /*test_suite*/) {}
-
- // Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- virtual void OnTestCaseStart(const TestCase& /*test_case*/) {}
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
- // Fired before the test starts.
- virtual void OnTestStart(const TestInfo& test_info) = 0;
-
- // Fired after a failed assertion or a SUCCEED() invocation.
- // If you want to throw an exception from this function to skip to the next
- // TEST, it must be AssertionException defined above, or inherited from it.
- virtual void OnTestPartResult(const TestPartResult& test_part_result) = 0;
-
- // Fired after the test ends.
- virtual void OnTestEnd(const TestInfo& test_info) = 0;
-
- // Fired after the test suite ends.
- virtual void OnTestSuiteEnd(const TestSuite& /*test_suite*/) {}
-
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {}
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
- // Fired before environment tear-down for each iteration of tests starts.
- virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test) = 0;
-
- // Fired after environment tear-down for each iteration of tests ends.
- virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test) = 0;
-
- // Fired after each iteration of tests finishes.
- virtual void OnTestIterationEnd(const UnitTest& unit_test,
- int iteration) = 0;
-
- // Fired after all test activities have ended.
- virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0;
-};
-
-// The convenience class for users who need to override just one or two
-// methods and are not concerned that a possible change to a signature of
-// the methods they override will not be caught during the build. For
-// comments about each method please see the definition of TestEventListener
-// above.
-class EmptyTestEventListener : public TestEventListener {
- public:
- void OnTestProgramStart(const UnitTest& /*unit_test*/) override {}
- void OnTestIterationStart(const UnitTest& /*unit_test*/,
- int /*iteration*/) override {}
- void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) override {}
- void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) override {}
- void OnTestSuiteStart(const TestSuite& /*test_suite*/) override {}
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- void OnTestCaseStart(const TestCase& /*test_case*/) override {}
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
- void OnTestStart(const TestInfo& /*test_info*/) override {}
- void OnTestPartResult(const TestPartResult& /*test_part_result*/) override {}
- void OnTestEnd(const TestInfo& /*test_info*/) override {}
- void OnTestSuiteEnd(const TestSuite& /*test_suite*/) override {}
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- void OnTestCaseEnd(const TestCase& /*test_case*/) override {}
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
- void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) override {}
- void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) override {}
- void OnTestIterationEnd(const UnitTest& /*unit_test*/,
- int /*iteration*/) override {}
- void OnTestProgramEnd(const UnitTest& /*unit_test*/) override {}
-};
-
-// TestEventListeners lets users add listeners to track events in Google Test.
-class GTEST_API_ TestEventListeners {
- public:
- TestEventListeners();
- ~TestEventListeners();
-
- // Appends an event listener to the end of the list. Google Test assumes
- // the ownership of the listener (i.e. it will delete the listener when
- // the test program finishes).
- void Append(TestEventListener* listener);
-
- // Removes the given event listener from the list and returns it. It then
- // becomes the caller's responsibility to delete the listener. Returns
- // NULL if the listener is not found in the list.
- TestEventListener* Release(TestEventListener* listener);
-
- // Returns the standard listener responsible for the default console
- // output. Can be removed from the listeners list to shut down default
- // console output. Note that removing this object from the listener list
- // with Release transfers its ownership to the caller and makes this
- // function return NULL the next time.
- TestEventListener* default_result_printer() const {
- return default_result_printer_;
- }
-
- // Returns the standard listener responsible for the default XML output
- // controlled by the --gtest_output=xml flag. Can be removed from the
- // listeners list by users who want to shut down the default XML output
- // controlled by this flag and substitute it with custom one. Note that
- // removing this object from the listener list with Release transfers its
- // ownership to the caller and makes this function return NULL the next
- // time.
- TestEventListener* default_xml_generator() const {
- return default_xml_generator_;
- }
-
- private:
- friend class TestSuite;
- friend class TestInfo;
- friend class internal::DefaultGlobalTestPartResultReporter;
- friend class internal::NoExecDeathTest;
- friend class internal::TestEventListenersAccessor;
- friend class internal::UnitTestImpl;
-
- // Returns repeater that broadcasts the TestEventListener events to all
- // subscribers.
- TestEventListener* repeater();
-
- // Sets the default_result_printer attribute to the provided listener.
- // The listener is also added to the listener list and previous
- // default_result_printer is removed from it and deleted. The listener can
- // also be NULL in which case it will not be added to the list. Does
- // nothing if the previous and the current listener objects are the same.
- void SetDefaultResultPrinter(TestEventListener* listener);
-
- // Sets the default_xml_generator attribute to the provided listener. The
- // listener is also added to the listener list and previous
- // default_xml_generator is removed from it and deleted. The listener can
- // also be NULL in which case it will not be added to the list. Does
- // nothing if the previous and the current listener objects are the same.
- void SetDefaultXmlGenerator(TestEventListener* listener);
-
- // Controls whether events will be forwarded by the repeater to the
- // listeners in the list.
- bool EventForwardingEnabled() const;
- void SuppressEventForwarding();
-
- // The actual list of listeners.
- internal::TestEventRepeater* repeater_;
- // Listener responsible for the standard result output.
- TestEventListener* default_result_printer_;
- // Listener responsible for the creation of the XML output file.
- TestEventListener* default_xml_generator_;
-
- // We disallow copying TestEventListeners.
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventListeners);
-};
-
-// A UnitTest consists of a vector of TestSuites.
-//
-// This is a singleton class. The only instance of UnitTest is
-// created when UnitTest::GetInstance() is first called. This
-// instance is never deleted.
-//
-// UnitTest is not copyable.
-//
-// This class is thread-safe as long as the methods are called
-// according to their specification.
-class GTEST_API_ UnitTest {
- public:
- // Gets the singleton UnitTest object. The first time this method
- // is called, a UnitTest object is constructed and returned.
- // Consecutive calls will return the same object.
- static UnitTest* GetInstance();
-
- // Runs all tests in this UnitTest object and prints the result.
- // Returns 0 if successful, or 1 otherwise.
- //
- // This method can only be called from the main thread.
- //
- // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
- int Run() GTEST_MUST_USE_RESULT_;
-
- // Returns the working directory when the first TEST() or TEST_F()
- // was executed. The UnitTest object owns the string.
- const char* original_working_dir() const;
-
- // Returns the TestSuite object for the test that's currently running,
- // or NULL if no test is running.
- const TestSuite* current_test_suite() const GTEST_LOCK_EXCLUDED_(mutex_);
-
-// Legacy API is still available but deprecated
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- const TestCase* current_test_case() const GTEST_LOCK_EXCLUDED_(mutex_);
-#endif
-
- // Returns the TestInfo object for the test that's currently running,
- // or NULL if no test is running.
- const TestInfo* current_test_info() const
- GTEST_LOCK_EXCLUDED_(mutex_);
-
- // Returns the random seed used at the start of the current test run.
- int random_seed() const;
-
- // Returns the ParameterizedTestSuiteRegistry object used to keep track of
- // value-parameterized tests and instantiate and register them.
- //
- // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
- internal::ParameterizedTestSuiteRegistry& parameterized_test_registry()
- GTEST_LOCK_EXCLUDED_(mutex_);
-
- // Gets the number of successful test suites.
- int successful_test_suite_count() const;
-
- // Gets the number of failed test suites.
- int failed_test_suite_count() const;
-
- // Gets the number of all test suites.
- int total_test_suite_count() const;
-
- // Gets the number of all test suites that contain at least one test
- // that should run.
- int test_suite_to_run_count() const;
-
- // Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- int successful_test_case_count() const;
- int failed_test_case_count() const;
- int total_test_case_count() const;
- int test_case_to_run_count() const;
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
- // Gets the number of successful tests.
- int successful_test_count() const;
-
- // Gets the number of skipped tests.
- int skipped_test_count() const;
-
- // Gets the number of failed tests.
- int failed_test_count() const;
-
- // Gets the number of disabled tests that will be reported in the XML report.
- int reportable_disabled_test_count() const;
-
- // Gets the number of disabled tests.
- int disabled_test_count() const;
-
- // Gets the number of tests to be printed in the XML report.
- int reportable_test_count() const;
-
- // Gets the number of all tests.
- int total_test_count() const;
-
- // Gets the number of tests that should run.
- int test_to_run_count() const;
-
- // Gets the time of the test program start, in ms from the start of the
- // UNIX epoch.
- TimeInMillis start_timestamp() const;
-
- // Gets the elapsed time, in milliseconds.
- TimeInMillis elapsed_time() const;
-
- // Returns true if and only if the unit test passed (i.e. all test suites
- // passed).
- bool Passed() const;
-
- // Returns true if and only if the unit test failed (i.e. some test suite
- // failed or something outside of all tests failed).
- bool Failed() const;
-
- // Gets the i-th test suite among all the test suites. i can range from 0 to
- // total_test_suite_count() - 1. If i is not in that range, returns NULL.
- const TestSuite* GetTestSuite(int i) const;
-
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- const TestCase* GetTestCase(int i) const;
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
- // Returns the TestResult containing information on test failures and
- // properties logged outside of individual test suites.
- const TestResult& ad_hoc_test_result() const;
-
- // Returns the list of event listeners that can be used to track events
- // inside Google Test.
- TestEventListeners& listeners();
-
- private:
- // Registers and returns a global test environment. When a test
- // program is run, all global test environments will be set-up in
- // the order they were registered. After all tests in the program
- // have finished, all global test environments will be torn-down in
- // the *reverse* order they were registered.
- //
- // The UnitTest object takes ownership of the given environment.
- //
- // This method can only be called from the main thread.
- Environment* AddEnvironment(Environment* env);
-
- // Adds a TestPartResult to the current TestResult object. All
- // Google Test assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc)
- // eventually call this to report their results. The user code
- // should use the assertion macros instead of calling this directly.
- void AddTestPartResult(TestPartResult::Type result_type,
- const char* file_name,
- int line_number,
- const std::string& message,
- const std::string& os_stack_trace)
- GTEST_LOCK_EXCLUDED_(mutex_);
-
- // Adds a TestProperty to the current TestResult object when invoked from
- // inside a test, to current TestSuite's ad_hoc_test_result_ when invoked
- // from SetUpTestSuite or TearDownTestSuite, or to the global property set
- // when invoked elsewhere. If the result already contains a property with
- // the same key, the value will be updated.
- void RecordProperty(const std::string& key, const std::string& value);
-
- // Gets the i-th test suite among all the test suites. i can range from 0 to
- // total_test_suite_count() - 1. If i is not in that range, returns NULL.
- TestSuite* GetMutableTestSuite(int i);
-
- // Accessors for the implementation object.
- internal::UnitTestImpl* impl() { return impl_; }
- const internal::UnitTestImpl* impl() const { return impl_; }
-
- // These classes and functions are friends as they need to access private
- // members of UnitTest.
- friend class ScopedTrace;
- friend class Test;
- friend class internal::AssertHelper;
- friend class internal::StreamingListenerTest;
- friend class internal::UnitTestRecordPropertyTestHelper;
- friend Environment* AddGlobalTestEnvironment(Environment* env);
- friend internal::UnitTestImpl* internal::GetUnitTestImpl();
- friend void internal::ReportFailureInUnknownLocation(
- TestPartResult::Type result_type,
- const std::string& message);
-
- // Creates an empty UnitTest.
- UnitTest();
-
- // D'tor
- virtual ~UnitTest();
-
- // Pushes a trace defined by SCOPED_TRACE() on to the per-thread
- // Google Test trace stack.
- void PushGTestTrace(const internal::TraceInfo& trace)
- GTEST_LOCK_EXCLUDED_(mutex_);
-
- // Pops a trace from the per-thread Google Test trace stack.
- void PopGTestTrace()
- GTEST_LOCK_EXCLUDED_(mutex_);
-
- // Protects mutable state in *impl_. This is mutable as some const
- // methods need to lock it too.
- mutable internal::Mutex mutex_;
-
- // Opaque implementation object. This field is never changed once
- // the object is constructed. We don't mark it as const here, as
- // doing so will cause a warning in the constructor of UnitTest.
- // Mutable state in *impl_ is protected by mutex_.
- internal::UnitTestImpl* impl_;
-
- // We disallow copying UnitTest.
- GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTest);
-};
-
-// A convenient wrapper for adding an environment for the test
-// program.
-//
-// You should call this before RUN_ALL_TESTS() is called, probably in
-// main(). If you use gtest_main, you need to call this before main()
-// starts for it to take effect. For example, you can define a global
-// variable like this:
-//
-// testing::Environment* const foo_env =
-// testing::AddGlobalTestEnvironment(new FooEnvironment);
-//
-// However, we strongly recommend you to write your own main() and
-// call AddGlobalTestEnvironment() there, as relying on initialization
-// of global variables makes the code harder to read and may cause
-// problems when you register multiple environments from different
-// translation units and the environments have dependencies among them
-// (remember that the compiler doesn't guarantee the order in which
-// global variables from different translation units are initialized).
-inline Environment* AddGlobalTestEnvironment(Environment* env) {
- return UnitTest::GetInstance()->AddEnvironment(env);
-}
-
-// Initializes Google Test. This must be called before calling
-// RUN_ALL_TESTS(). In particular, it parses a command line for the
-// flags that Google Test recognizes. Whenever a Google Test flag is
-// seen, it is removed from argv, and *argc is decremented.
-//
-// No value is returned. Instead, the Google Test flag variables are
-// updated.
-//
-// Calling the function for the second time has no user-visible effect.
-GTEST_API_ void InitGoogleTest(int* argc, char** argv);
-
-// This overloaded version can be used in Windows programs compiled in
-// UNICODE mode.
-GTEST_API_ void InitGoogleTest(int* argc, wchar_t** argv);
-
-// This overloaded version can be used on Arduino/embedded platforms where
-// there is no argc/argv.
-GTEST_API_ void InitGoogleTest();
-
-namespace internal {
-
-// Separate the error generating code from the code path to reduce the stack
-// frame size of CmpHelperEQ. This helps reduce the overhead of some sanitizers
-// when calling EXPECT_* in a tight loop.
-template <typename T1, typename T2>
-AssertionResult CmpHelperEQFailure(const char* lhs_expression,
- const char* rhs_expression,
- const T1& lhs, const T2& rhs) {
- return EqFailure(lhs_expression,
- rhs_expression,
- FormatForComparisonFailureMessage(lhs, rhs),
- FormatForComparisonFailureMessage(rhs, lhs),
- false);
-}
-
-// This block of code defines operator==/!=
-// to block lexical scope lookup.
-// It prevents using invalid operator==/!= defined at namespace scope.
-struct faketype {};
-inline bool operator==(faketype, faketype) { return true; }
-inline bool operator!=(faketype, faketype) { return false; }
-
-// The helper function for {ASSERT|EXPECT}_EQ.
-template <typename T1, typename T2>
-AssertionResult CmpHelperEQ(const char* lhs_expression,
- const char* rhs_expression,
- const T1& lhs,
- const T2& rhs) {
- if (lhs == rhs) {
- return AssertionSuccess();
- }
-
- return CmpHelperEQFailure(lhs_expression, rhs_expression, lhs, rhs);
-}
-
-// With this overloaded version, we allow anonymous enums to be used
-// in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous enums
-// can be implicitly cast to BiggestInt.
-GTEST_API_ AssertionResult CmpHelperEQ(const char* lhs_expression,
- const char* rhs_expression,
- BiggestInt lhs,
- BiggestInt rhs);
-
-class EqHelper {
- public:
- // This templatized version is for the general case.
- template <
- typename T1, typename T2,
- // Disable this overload for cases where one argument is a pointer
- // and the other is the null pointer constant.
- typename std::enable_if<!std::is_integral<T1>::value ||
- !std::is_pointer<T2>::value>::type* = nullptr>
- static AssertionResult Compare(const char* lhs_expression,
- const char* rhs_expression, const T1& lhs,
- const T2& rhs) {
- return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
- }
-
- // With this overloaded version, we allow anonymous enums to be used
- // in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous
- // enums can be implicitly cast to BiggestInt.
- //
- // Even though its body looks the same as the above version, we
- // cannot merge the two, as it will make anonymous enums unhappy.
- static AssertionResult Compare(const char* lhs_expression,
- const char* rhs_expression,
- BiggestInt lhs,
- BiggestInt rhs) {
- return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
- }
-
- template <typename T>
- static AssertionResult Compare(
- const char* lhs_expression, const char* rhs_expression,
- // Handle cases where '0' is used as a null pointer literal.
- std::nullptr_t /* lhs */, T* rhs) {
- // We already know that 'lhs' is a null pointer.
- return CmpHelperEQ(lhs_expression, rhs_expression, static_cast<T*>(nullptr),
- rhs);
- }
-};
-
-// Separate the error generating code from the code path to reduce the stack
-// frame size of CmpHelperOP. This helps reduce the overhead of some sanitizers
-// when calling EXPECT_OP in a tight loop.
-template <typename T1, typename T2>
-AssertionResult CmpHelperOpFailure(const char* expr1, const char* expr2,
- const T1& val1, const T2& val2,
- const char* op) {
- return AssertionFailure()
- << "Expected: (" << expr1 << ") " << op << " (" << expr2
- << "), actual: " << FormatForComparisonFailureMessage(val1, val2)
- << " vs " << FormatForComparisonFailureMessage(val2, val1);
-}
-
-// A macro for implementing the helper functions needed to implement
-// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste
-// of similar code.
-//
-// For each templatized helper function, we also define an overloaded
-// version for BiggestInt in order to reduce code bloat and allow
-// anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled
-// with gcc 4.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-
-#define GTEST_IMPL_CMP_HELPER_(op_name, op)\
-template <typename T1, typename T2>\
-AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \
- const T1& val1, const T2& val2) {\
- if (val1 op val2) {\
- return AssertionSuccess();\
- } else {\
- return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\
- }\
-}\
-GTEST_API_ AssertionResult CmpHelper##op_name(\
- const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-
-// Implements the helper function for {ASSERT|EXPECT}_NE
-GTEST_IMPL_CMP_HELPER_(NE, !=);
-// Implements the helper function for {ASSERT|EXPECT}_LE
-GTEST_IMPL_CMP_HELPER_(LE, <=);
-// Implements the helper function for {ASSERT|EXPECT}_LT
-GTEST_IMPL_CMP_HELPER_(LT, <);
-// Implements the helper function for {ASSERT|EXPECT}_GE
-GTEST_IMPL_CMP_HELPER_(GE, >=);
-// Implements the helper function for {ASSERT|EXPECT}_GT
-GTEST_IMPL_CMP_HELPER_(GT, >);
-
-#undef GTEST_IMPL_CMP_HELPER_
-
-// The helper function for {ASSERT|EXPECT}_STREQ.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression,
- const char* s2_expression,
- const char* s1,
- const char* s2);
-
-// The helper function for {ASSERT|EXPECT}_STRCASEEQ.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression,
- const char* s2_expression,
- const char* s1,
- const char* s2);
-
-// The helper function for {ASSERT|EXPECT}_STRNE.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression,
- const char* s2_expression,
- const char* s1,
- const char* s2);
-
-// The helper function for {ASSERT|EXPECT}_STRCASENE.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression,
- const char* s2_expression,
- const char* s1,
- const char* s2);
-
-
-// Helper function for *_STREQ on wide strings.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression,
- const char* s2_expression,
- const wchar_t* s1,
- const wchar_t* s2);
-
-// Helper function for *_STRNE on wide strings.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression,
- const char* s2_expression,
- const wchar_t* s1,
- const wchar_t* s2);
-
-} // namespace internal
-
-// IsSubstring() and IsNotSubstring() are intended to be used as the
-// first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by
-// themselves. They check whether needle is a substring of haystack
-// (NULL is considered a substring of itself only), and return an
-// appropriate error message when they fail.
-//
-// The {needle,haystack}_expr arguments are the stringified
-// expressions that generated the two real arguments.
-GTEST_API_ AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const char* needle, const char* haystack);
-GTEST_API_ AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const wchar_t* needle, const wchar_t* haystack);
-GTEST_API_ AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const char* needle, const char* haystack);
-GTEST_API_ AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const wchar_t* needle, const wchar_t* haystack);
-GTEST_API_ AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::string& needle, const ::std::string& haystack);
-GTEST_API_ AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::string& needle, const ::std::string& haystack);
-
-#if GTEST_HAS_STD_WSTRING
-GTEST_API_ AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::wstring& needle, const ::std::wstring& haystack);
-GTEST_API_ AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::wstring& needle, const ::std::wstring& haystack);
-#endif // GTEST_HAS_STD_WSTRING
-
-namespace internal {
-
-// Helper template function for comparing floating-points.
-//
-// Template parameter:
-//
-// RawType: the raw floating-point type (either float or double)
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-template <typename RawType>
-AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression,
- const char* rhs_expression,
- RawType lhs_value,
- RawType rhs_value) {
- const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value);
-
- if (lhs.AlmostEquals(rhs)) {
- return AssertionSuccess();
- }
-
- ::std::stringstream lhs_ss;
- lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
- << lhs_value;
-
- ::std::stringstream rhs_ss;
- rhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
- << rhs_value;
-
- return EqFailure(lhs_expression,
- rhs_expression,
- StringStreamToString(&lhs_ss),
- StringStreamToString(&rhs_ss),
- false);
-}
-
-// Helper function for implementing ASSERT_NEAR.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult DoubleNearPredFormat(const char* expr1,
- const char* expr2,
- const char* abs_error_expr,
- double val1,
- double val2,
- double abs_error);
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-// A class that enables one to stream messages to assertion macros
-class GTEST_API_ AssertHelper {
- public:
- // Constructor.
- AssertHelper(TestPartResult::Type type,
- const char* file,
- int line,
- const char* message);
- ~AssertHelper();
-
- // Message assignment is a semantic trick to enable assertion
- // streaming; see the GTEST_MESSAGE_ macro below.
- void operator=(const Message& message) const;
-
- private:
- // We put our data in a struct so that the size of the AssertHelper class can
- // be as small as possible. This is important because gcc is incapable of
- // re-using stack space even for temporary variables, so every EXPECT_EQ
- // reserves stack space for another AssertHelper.
- struct AssertHelperData {
- AssertHelperData(TestPartResult::Type t,
- const char* srcfile,
- int line_num,
- const char* msg)
- : type(t), file(srcfile), line(line_num), message(msg) { }
-
- TestPartResult::Type const type;
- const char* const file;
- int const line;
- std::string const message;
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelperData);
- };
-
- AssertHelperData* const data_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelper);
-};
-
-enum GTestColor { COLOR_DEFAULT, COLOR_RED, COLOR_GREEN, COLOR_YELLOW };
-
-GTEST_API_ GTEST_ATTRIBUTE_PRINTF_(2, 3) void ColoredPrintf(GTestColor color,
- const char* fmt,
- ...);
-
-} // namespace internal
-
-// The pure interface class that all value-parameterized tests inherit from.
-// A value-parameterized class must inherit from both ::testing::Test and
-// ::testing::WithParamInterface. In most cases that just means inheriting
-// from ::testing::TestWithParam, but more complicated test hierarchies
-// may need to inherit from Test and WithParamInterface at different levels.
-//
-// This interface has support for accessing the test parameter value via
-// the GetParam() method.
-//
-// Use it with one of the parameter generator defining functions, like Range(),
-// Values(), ValuesIn(), Bool(), and Combine().
-//
-// class FooTest : public ::testing::TestWithParam<int> {
-// protected:
-// FooTest() {
-// // Can use GetParam() here.
-// }
-// ~FooTest() override {
-// // Can use GetParam() here.
-// }
-// void SetUp() override {
-// // Can use GetParam() here.
-// }
-// void TearDown override {
-// // Can use GetParam() here.
-// }
-// };
-// TEST_P(FooTest, DoesBar) {
-// // Can use GetParam() method here.
-// Foo foo;
-// ASSERT_TRUE(foo.DoesBar(GetParam()));
-// }
-// INSTANTIATE_TEST_SUITE_P(OneToTenRange, FooTest, ::testing::Range(1, 10));
-
-template <typename T>
-class WithParamInterface {
- public:
- typedef T ParamType;
- virtual ~WithParamInterface() {}
-
- // The current parameter value. Is also available in the test fixture's
- // constructor.
- static const ParamType& GetParam() {
- GTEST_CHECK_(parameter_ != nullptr)
- << "GetParam() can only be called inside a value-parameterized test "
- << "-- did you intend to write TEST_P instead of TEST_F?";
- return *parameter_;
- }
-
- private:
- // Sets parameter value. The caller is responsible for making sure the value
- // remains alive and unchanged throughout the current test.
- static void SetParam(const ParamType* parameter) {
- parameter_ = parameter;
- }
-
- // Static value used for accessing parameter during a test lifetime.
- static const ParamType* parameter_;
-
- // TestClass must be a subclass of WithParamInterface<T> and Test.
- template <class TestClass> friend class internal::ParameterizedTestFactory;
-};
-
-template <typename T>
-const T* WithParamInterface<T>::parameter_ = nullptr;
-
-// Most value-parameterized classes can ignore the existence of
-// WithParamInterface, and can just inherit from ::testing::TestWithParam.
-
-template <typename T>
-class TestWithParam : public Test, public WithParamInterface<T> {
-};
-
-// Macros for indicating success/failure in test code.
-
-// Skips test in runtime.
-// Skipping test aborts current function.
-// Skipped tests are neither successful nor failed.
-#define GTEST_SKIP() GTEST_SKIP_("Skipped")
-
-// ADD_FAILURE unconditionally adds a failure to the current test.
-// SUCCEED generates a success - it doesn't automatically make the
-// current test successful, as a test is only successful when it has
-// no failure.
-//
-// EXPECT_* verifies that a certain condition is satisfied. If not,
-// it behaves like ADD_FAILURE. In particular:
-//
-// EXPECT_TRUE verifies that a Boolean condition is true.
-// EXPECT_FALSE verifies that a Boolean condition is false.
-//
-// FAIL and ASSERT_* are similar to ADD_FAILURE and EXPECT_*, except
-// that they will also abort the current function on failure. People
-// usually want the fail-fast behavior of FAIL and ASSERT_*, but those
-// writing data-driven tests often find themselves using ADD_FAILURE
-// and EXPECT_* more.
-
-// Generates a nonfatal failure with a generic message.
-#define ADD_FAILURE() GTEST_NONFATAL_FAILURE_("Failed")
-
-// Generates a nonfatal failure at the given source file location with
-// a generic message.
-#define ADD_FAILURE_AT(file, line) \
- GTEST_MESSAGE_AT_(file, line, "Failed", \
- ::testing::TestPartResult::kNonFatalFailure)
-
-// Generates a fatal failure with a generic message.
-#define GTEST_FAIL() GTEST_FATAL_FAILURE_("Failed")
-
-// Like GTEST_FAIL(), but at the given source file location.
-#define GTEST_FAIL_AT(file, line) \
- GTEST_MESSAGE_AT_(file, line, "Failed", \
- ::testing::TestPartResult::kFatalFailure)
-
-// Define this macro to 1 to omit the definition of FAIL(), which is a
-// generic name and clashes with some other libraries.
-#if !GTEST_DONT_DEFINE_FAIL
-# define FAIL() GTEST_FAIL()
-#endif
-
-// Generates a success with a generic message.
-#define GTEST_SUCCEED() GTEST_SUCCESS_("Succeeded")
-
-// Define this macro to 1 to omit the definition of SUCCEED(), which
-// is a generic name and clashes with some other libraries.
-#if !GTEST_DONT_DEFINE_SUCCEED
-# define SUCCEED() GTEST_SUCCEED()
-#endif
-
-// Macros for testing exceptions.
-//
-// * {ASSERT|EXPECT}_THROW(statement, expected_exception):
-// Tests that the statement throws the expected exception.
-// * {ASSERT|EXPECT}_NO_THROW(statement):
-// Tests that the statement doesn't throw any exception.
-// * {ASSERT|EXPECT}_ANY_THROW(statement):
-// Tests that the statement throws an exception.
-
-#define EXPECT_THROW(statement, expected_exception) \
- GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_NO_THROW(statement) \
- GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_ANY_THROW(statement) \
- GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_THROW(statement, expected_exception) \
- GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_)
-#define ASSERT_NO_THROW(statement) \
- GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_)
-#define ASSERT_ANY_THROW(statement) \
- GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_)
-
-// Boolean assertions. Condition can be either a Boolean expression or an
-// AssertionResult. For more information on how to use AssertionResult with
-// these macros see comments on that class.
-#define EXPECT_TRUE(condition) \
- GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
- GTEST_NONFATAL_FAILURE_)
-#define EXPECT_FALSE(condition) \
- GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
- GTEST_NONFATAL_FAILURE_)
-#define ASSERT_TRUE(condition) \
- GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
- GTEST_FATAL_FAILURE_)
-#define ASSERT_FALSE(condition) \
- GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
- GTEST_FATAL_FAILURE_)
-
-// Macros for testing equalities and inequalities.
-//
-// * {ASSERT|EXPECT}_EQ(v1, v2): Tests that v1 == v2
-// * {ASSERT|EXPECT}_NE(v1, v2): Tests that v1 != v2
-// * {ASSERT|EXPECT}_LT(v1, v2): Tests that v1 < v2
-// * {ASSERT|EXPECT}_LE(v1, v2): Tests that v1 <= v2
-// * {ASSERT|EXPECT}_GT(v1, v2): Tests that v1 > v2
-// * {ASSERT|EXPECT}_GE(v1, v2): Tests that v1 >= v2
-//
-// When they are not, Google Test prints both the tested expressions and
-// their actual values. The values must be compatible built-in types,
-// or you will get a compiler error. By "compatible" we mean that the
-// values can be compared by the respective operator.
-//
-// Note:
-//
-// 1. It is possible to make a user-defined type work with
-// {ASSERT|EXPECT}_??(), but that requires overloading the
-// comparison operators and is thus discouraged by the Google C++
-// Usage Guide. Therefore, you are advised to use the
-// {ASSERT|EXPECT}_TRUE() macro to assert that two objects are
-// equal.
-//
-// 2. The {ASSERT|EXPECT}_??() macros do pointer comparisons on
-// pointers (in particular, C strings). Therefore, if you use it
-// with two C strings, you are testing how their locations in memory
-// are related, not how their content is related. To compare two C
-// strings by content, use {ASSERT|EXPECT}_STR*().
-//
-// 3. {ASSERT|EXPECT}_EQ(v1, v2) is preferred to
-// {ASSERT|EXPECT}_TRUE(v1 == v2), as the former tells you
-// what the actual value is when it fails, and similarly for the
-// other comparisons.
-//
-// 4. Do not depend on the order in which {ASSERT|EXPECT}_??()
-// evaluate their arguments, which is undefined.
-//
-// 5. These macros evaluate their arguments exactly once.
-//
-// Examples:
-//
-// EXPECT_NE(Foo(), 5);
-// EXPECT_EQ(a_pointer, NULL);
-// ASSERT_LT(i, array_size);
-// ASSERT_GT(records.size(), 0) << "There is no record left.";
-
-#define EXPECT_EQ(val1, val2) \
- EXPECT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
-#define EXPECT_NE(val1, val2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
-#define EXPECT_LE(val1, val2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
-#define EXPECT_LT(val1, val2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
-#define EXPECT_GE(val1, val2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
-#define EXPECT_GT(val1, val2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
-
-#define GTEST_ASSERT_EQ(val1, val2) \
- ASSERT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
-#define GTEST_ASSERT_NE(val1, val2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
-#define GTEST_ASSERT_LE(val1, val2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
-#define GTEST_ASSERT_LT(val1, val2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
-#define GTEST_ASSERT_GE(val1, val2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
-#define GTEST_ASSERT_GT(val1, val2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
-
-// Define macro GTEST_DONT_DEFINE_ASSERT_XY to 1 to omit the definition of
-// ASSERT_XY(), which clashes with some users' own code.
-
-#if !GTEST_DONT_DEFINE_ASSERT_EQ
-# define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)
-#endif
-
-#if !GTEST_DONT_DEFINE_ASSERT_NE
-# define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2)
-#endif
-
-#if !GTEST_DONT_DEFINE_ASSERT_LE
-# define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2)
-#endif
-
-#if !GTEST_DONT_DEFINE_ASSERT_LT
-# define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2)
-#endif
-
-#if !GTEST_DONT_DEFINE_ASSERT_GE
-# define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2)
-#endif
-
-#if !GTEST_DONT_DEFINE_ASSERT_GT
-# define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2)
-#endif
-
-// C-string Comparisons. All tests treat NULL and any non-NULL string
-// as different. Two NULLs are equal.
-//
-// * {ASSERT|EXPECT}_STREQ(s1, s2): Tests that s1 == s2
-// * {ASSERT|EXPECT}_STRNE(s1, s2): Tests that s1 != s2
-// * {ASSERT|EXPECT}_STRCASEEQ(s1, s2): Tests that s1 == s2, ignoring case
-// * {ASSERT|EXPECT}_STRCASENE(s1, s2): Tests that s1 != s2, ignoring case
-//
-// For wide or narrow string objects, you can use the
-// {ASSERT|EXPECT}_??() macros.
-//
-// Don't depend on the order in which the arguments are evaluated,
-// which is undefined.
-//
-// These macros evaluate their arguments exactly once.
-
-#define EXPECT_STREQ(s1, s2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
-#define EXPECT_STRNE(s1, s2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
-#define EXPECT_STRCASEEQ(s1, s2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
-#define EXPECT_STRCASENE(s1, s2)\
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
-
-#define ASSERT_STREQ(s1, s2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
-#define ASSERT_STRNE(s1, s2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
-#define ASSERT_STRCASEEQ(s1, s2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
-#define ASSERT_STRCASENE(s1, s2)\
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
-
-// Macros for comparing floating-point numbers.
-//
-// * {ASSERT|EXPECT}_FLOAT_EQ(val1, val2):
-// Tests that two float values are almost equal.
-// * {ASSERT|EXPECT}_DOUBLE_EQ(val1, val2):
-// Tests that two double values are almost equal.
-// * {ASSERT|EXPECT}_NEAR(v1, v2, abs_error):
-// Tests that v1 and v2 are within the given distance to each other.
-//
-// Google Test uses ULP-based comparison to automatically pick a default
-// error bound that is appropriate for the operands. See the
-// FloatingPoint template class in gtest-internal.h if you are
-// interested in the implementation details.
-
-#define EXPECT_FLOAT_EQ(val1, val2)\
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
- val1, val2)
-
-#define EXPECT_DOUBLE_EQ(val1, val2)\
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
- val1, val2)
-
-#define ASSERT_FLOAT_EQ(val1, val2)\
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
- val1, val2)
-
-#define ASSERT_DOUBLE_EQ(val1, val2)\
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
- val1, val2)
-
-#define EXPECT_NEAR(val1, val2, abs_error)\
- EXPECT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \
- val1, val2, abs_error)
-
-#define ASSERT_NEAR(val1, val2, abs_error)\
- ASSERT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \
- val1, val2, abs_error)
-
-// These predicate format functions work on floating-point values, and
-// can be used in {ASSERT|EXPECT}_PRED_FORMAT2*(), e.g.
-//
-// EXPECT_PRED_FORMAT2(testing::DoubleLE, Foo(), 5.0);
-
-// Asserts that val1 is less than, or almost equal to, val2. Fails
-// otherwise. In particular, it fails if either val1 or val2 is NaN.
-GTEST_API_ AssertionResult FloatLE(const char* expr1, const char* expr2,
- float val1, float val2);
-GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2,
- double val1, double val2);
-
-
-#if GTEST_OS_WINDOWS
-
-// Macros that test for HRESULT failure and success, these are only useful
-// on Windows, and rely on Windows SDK macros and APIs to compile.
-//
-// * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr)
-//
-// When expr unexpectedly fails or succeeds, Google Test prints the
-// expected result and the actual result with both a human-readable
-// string representation of the error, if available, as well as the
-// hex result code.
-# define EXPECT_HRESULT_SUCCEEDED(expr) \
- EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
-
-# define ASSERT_HRESULT_SUCCEEDED(expr) \
- ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
-
-# define EXPECT_HRESULT_FAILED(expr) \
- EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
-
-# define ASSERT_HRESULT_FAILED(expr) \
- ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
-
-#endif // GTEST_OS_WINDOWS
-
-// Macros that execute statement and check that it doesn't generate new fatal
-// failures in the current thread.
-//
-// * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement);
-//
-// Examples:
-//
-// EXPECT_NO_FATAL_FAILURE(Process());
-// ASSERT_NO_FATAL_FAILURE(Process()) << "Process() failed";
-//
-#define ASSERT_NO_FATAL_FAILURE(statement) \
- GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_)
-#define EXPECT_NO_FATAL_FAILURE(statement) \
- GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_)
-
-// Causes a trace (including the given source file path and line number,
-// and the given message) to be included in every test failure message generated
-// by code in the scope of the lifetime of an instance of this class. The effect
-// is undone with the destruction of the instance.
-//
-// The message argument can be anything streamable to std::ostream.
-//
-// Example:
-// testing::ScopedTrace trace("file.cc", 123, "message");
-//
-class GTEST_API_ ScopedTrace {
- public:
- // The c'tor pushes the given source file location and message onto
- // a trace stack maintained by Google Test.
-
- // Template version. Uses Message() to convert the values into strings.
- // Slow, but flexible.
- template <typename T>
- ScopedTrace(const char* file, int line, const T& message) {
- PushTrace(file, line, (Message() << message).GetString());
- }
-
- // Optimize for some known types.
- ScopedTrace(const char* file, int line, const char* message) {
- PushTrace(file, line, message ? message : "(null)");
- }
-
- ScopedTrace(const char* file, int line, const std::string& message) {
- PushTrace(file, line, message);
- }
-
- // The d'tor pops the info pushed by the c'tor.
- //
- // Note that the d'tor is not virtual in order to be efficient.
- // Don't inherit from ScopedTrace!
- ~ScopedTrace();
-
- private:
- void PushTrace(const char* file, int line, std::string message);
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedTrace);
-} GTEST_ATTRIBUTE_UNUSED_; // A ScopedTrace object does its job in its
- // c'tor and d'tor. Therefore it doesn't
- // need to be used otherwise.
-
-// Causes a trace (including the source file path, the current line
-// number, and the given message) to be included in every test failure
-// message generated by code in the current scope. The effect is
-// undone when the control leaves the current scope.
-//
-// The message argument can be anything streamable to std::ostream.
-//
-// In the implementation, we include the current line number as part
-// of the dummy variable name, thus allowing multiple SCOPED_TRACE()s
-// to appear in the same block - as long as they are on different
-// lines.
-//
-// Assuming that each thread maintains its own stack of traces.
-// Therefore, a SCOPED_TRACE() would (correctly) only affect the
-// assertions in its own thread.
-#define SCOPED_TRACE(message) \
- ::testing::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)(\
- __FILE__, __LINE__, (message))
-
-// Compile-time assertion for type equality.
-// StaticAssertTypeEq<type1, type2>() compiles if and only if type1 and type2
-// are the same type. The value it returns is not interesting.
-//
-// Instead of making StaticAssertTypeEq a class template, we make it a
-// function template that invokes a helper class template. This
-// prevents a user from misusing StaticAssertTypeEq<T1, T2> by
-// defining objects of that type.
-//
-// CAVEAT:
-//
-// When used inside a method of a class template,
-// StaticAssertTypeEq<T1, T2>() is effective ONLY IF the method is
-// instantiated. For example, given:
-//
-// template <typename T> class Foo {
-// public:
-// void Bar() { testing::StaticAssertTypeEq<int, T>(); }
-// };
-//
-// the code:
-//
-// void Test1() { Foo<bool> foo; }
-//
-// will NOT generate a compiler error, as Foo<bool>::Bar() is never
-// actually instantiated. Instead, you need:
-//
-// void Test2() { Foo<bool> foo; foo.Bar(); }
-//
-// to cause a compiler error.
-template <typename T1, typename T2>
-constexpr bool StaticAssertTypeEq() noexcept {
- static_assert(std::is_same<T1, T2>::value,
- "type1 and type2 are not the same type");
- return true;
-}
-
-// Defines a test.
-//
-// The first parameter is the name of the test suite, and the second
-// parameter is the name of the test within the test suite.
-//
-// The convention is to end the test suite name with "Test". For
-// example, a test suite for the Foo class can be named FooTest.
-//
-// Test code should appear between braces after an invocation of
-// this macro. Example:
-//
-// TEST(FooTest, InitializesCorrectly) {
-// Foo foo;
-// EXPECT_TRUE(foo.StatusIsOK());
-// }
-
-// Note that we call GetTestTypeId() instead of GetTypeId<
-// ::testing::Test>() here to get the type ID of testing::Test. This
-// is to work around a suspected linker bug when using Google Test as
-// a framework on Mac OS X. The bug causes GetTypeId<
-// ::testing::Test>() to return different values depending on whether
-// the call is from the Google Test framework itself or from user test
-// code. GetTestTypeId() is guaranteed to always return the same
-// value, as it always calls GetTypeId<>() from the Google Test
-// framework.
-#define GTEST_TEST(test_suite_name, test_name) \
- GTEST_TEST_(test_suite_name, test_name, ::testing::Test, \
- ::testing::internal::GetTestTypeId())
-
-// Define this macro to 1 to omit the definition of TEST(), which
-// is a generic name and clashes with some other libraries.
-#if !GTEST_DONT_DEFINE_TEST
-#define TEST(test_suite_name, test_name) GTEST_TEST(test_suite_name, test_name)
-#endif
-
-// Defines a test that uses a test fixture.
-//
-// The first parameter is the name of the test fixture class, which
-// also doubles as the test suite name. The second parameter is the
-// name of the test within the test suite.
-//
-// A test fixture class must be declared earlier. The user should put
-// the test code between braces after using this macro. Example:
-//
-// class FooTest : public testing::Test {
-// protected:
-// void SetUp() override { b_.AddElement(3); }
-//
-// Foo a_;
-// Foo b_;
-// };
-//
-// TEST_F(FooTest, InitializesCorrectly) {
-// EXPECT_TRUE(a_.StatusIsOK());
-// }
-//
-// TEST_F(FooTest, ReturnsElementCountCorrectly) {
-// EXPECT_EQ(a_.size(), 0);
-// EXPECT_EQ(b_.size(), 1);
-// }
-//
-// GOOGLETEST_CM0011 DO NOT DELETE
-#define TEST_F(test_fixture, test_name)\
- GTEST_TEST_(test_fixture, test_name, test_fixture, \
- ::testing::internal::GetTypeId<test_fixture>())
-
-// Returns a path to temporary directory.
-// Tries to determine an appropriate directory for the platform.
-GTEST_API_ std::string TempDir();
-
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif
-
-// Dynamically registers a test with the framework.
-//
-// This is an advanced API only to be used when the `TEST` macros are
-// insufficient. The macros should be preferred when possible, as they avoid
-// most of the complexity of calling this function.
-//
-// The `factory` argument is a factory callable (move-constructible) object or
-// function pointer that creates a new instance of the Test object. It
-// handles ownership to the caller. The signature of the callable is
-// `Fixture*()`, where `Fixture` is the test fixture class for the test. All
-// tests registered with the same `test_suite_name` must return the same
-// fixture type. This is checked at runtime.
-//
-// The framework will infer the fixture class from the factory and will call
-// the `SetUpTestSuite` and `TearDownTestSuite` for it.
-//
-// Must be called before `RUN_ALL_TESTS()` is invoked, otherwise behavior is
-// undefined.
-//
-// Use case example:
-//
-// class MyFixture : public ::testing::Test {
-// public:
-// // All of these optional, just like in regular macro usage.
-// static void SetUpTestSuite() { ... }
-// static void TearDownTestSuite() { ... }
-// void SetUp() override { ... }
-// void TearDown() override { ... }
-// };
-//
-// class MyTest : public MyFixture {
-// public:
-// explicit MyTest(int data) : data_(data) {}
-// void TestBody() override { ... }
-//
-// private:
-// int data_;
-// };
-//
-// void RegisterMyTests(const std::vector<int>& values) {
-// for (int v : values) {
-// ::testing::RegisterTest(
-// "MyFixture", ("Test" + std::to_string(v)).c_str(), nullptr,
-// std::to_string(v).c_str(),
-// __FILE__, __LINE__,
-// // Important to use the fixture type as the return type here.
-// [=]() -> MyFixture* { return new MyTest(v); });
-// }
-// }
-// ...
-// int main(int argc, char** argv) {
-// std::vector<int> values_to_test = LoadValuesFromConfig();
-// RegisterMyTests(values_to_test);
-// ...
-// return RUN_ALL_TESTS();
-// }
-//
-template <int&... ExplicitParameterBarrier, typename Factory>
-TestInfo* RegisterTest(const char* test_suite_name, const char* test_name,
- const char* type_param, const char* value_param,
- const char* file, int line, Factory factory) {
- using TestT = typename std::remove_pointer<decltype(factory())>::type;
-
- class FactoryImpl : public internal::TestFactoryBase {
- public:
- explicit FactoryImpl(Factory f) : factory_(std::move(f)) {}
- Test* CreateTest() override { return factory_(); }
-
- private:
- Factory factory_;
- };
-
- return internal::MakeAndRegisterTestInfo(
- test_suite_name, test_name, type_param, value_param,
- internal::CodeLocation(file, line), internal::GetTypeId<TestT>(),
- internal::SuiteApiResolver<TestT>::GetSetUpCaseOrSuite(file, line),
- internal::SuiteApiResolver<TestT>::GetTearDownCaseOrSuite(file, line),
- new FactoryImpl{std::move(factory)});
-}
-
-} // namespace testing
-
-// Use this function in main() to run all tests. It returns 0 if all
-// tests are successful, or 1 otherwise.
-//
-// RUN_ALL_TESTS() should be invoked after the command line has been
-// parsed by InitGoogleTest().
-//
-// This function was formerly a macro; thus, it is in the global
-// namespace and has an all-caps name.
-int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_;
-
-inline int RUN_ALL_TESTS() {
- return ::testing::UnitTest::GetInstance()->Run();
-}
-
-GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251
-
-#endif // GTEST_INCLUDE_GTEST_GTEST_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest_pred_impl.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest_pred_impl.h
deleted file mode 100644
index d514255c733..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest_pred_impl.h
+++ /dev/null
@@ -1,359 +0,0 @@
-// Copyright 2006, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// This file is AUTOMATICALLY GENERATED on 01/02/2019 by command
-// 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND!
-//
-// Implements a family of generic predicate assertion macros.
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
-#define GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
-
-#include "gtest/gtest.h"
-
-namespace testing {
-
-// This header implements a family of generic predicate assertion
-// macros:
-//
-// ASSERT_PRED_FORMAT1(pred_format, v1)
-// ASSERT_PRED_FORMAT2(pred_format, v1, v2)
-// ...
-//
-// where pred_format is a function or functor that takes n (in the
-// case of ASSERT_PRED_FORMATn) values and their source expression
-// text, and returns a testing::AssertionResult. See the definition
-// of ASSERT_EQ in gtest.h for an example.
-//
-// If you don't care about formatting, you can use the more
-// restrictive version:
-//
-// ASSERT_PRED1(pred, v1)
-// ASSERT_PRED2(pred, v1, v2)
-// ...
-//
-// where pred is an n-ary function or functor that returns bool,
-// and the values v1, v2, ..., must support the << operator for
-// streaming to std::ostream.
-//
-// We also define the EXPECT_* variations.
-//
-// For now we only support predicates whose arity is at most 5.
-// Please email googletestframework@googlegroups.com if you need
-// support for higher arities.
-
-// GTEST_ASSERT_ is the basic statement to which all of the assertions
-// in this file reduce. Don't use this in your code.
-
-#define GTEST_ASSERT_(expression, on_failure) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (const ::testing::AssertionResult gtest_ar = (expression)) \
- ; \
- else \
- on_failure(gtest_ar.failure_message())
-
-
-// Helper function for implementing {EXPECT|ASSERT}_PRED1. Don't use
-// this in your code.
-template <typename Pred,
- typename T1>
-AssertionResult AssertPred1Helper(const char* pred_text,
- const char* e1,
- Pred pred,
- const T1& v1) {
- if (pred(v1)) return AssertionSuccess();
-
- return AssertionFailure()
- << pred_text << "(" << e1 << ") evaluates to false, where"
- << "\n"
- << e1 << " evaluates to " << ::testing::PrintToString(v1);
-}
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT1.
-// Don't use this in your code.
-#define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure)\
- GTEST_ASSERT_(pred_format(#v1, v1), \
- on_failure)
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED1. Don't use
-// this in your code.
-#define GTEST_PRED1_(pred, v1, on_failure)\
- GTEST_ASSERT_(::testing::AssertPred1Helper(#pred, \
- #v1, \
- pred, \
- v1), on_failure)
-
-// Unary predicate assertion macros.
-#define EXPECT_PRED_FORMAT1(pred_format, v1) \
- GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_PRED1(pred, v1) \
- GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_PRED_FORMAT1(pred_format, v1) \
- GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_)
-#define ASSERT_PRED1(pred, v1) \
- GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_)
-
-
-
-// Helper function for implementing {EXPECT|ASSERT}_PRED2. Don't use
-// this in your code.
-template <typename Pred,
- typename T1,
- typename T2>
-AssertionResult AssertPred2Helper(const char* pred_text,
- const char* e1,
- const char* e2,
- Pred pred,
- const T1& v1,
- const T2& v2) {
- if (pred(v1, v2)) return AssertionSuccess();
-
- return AssertionFailure()
- << pred_text << "(" << e1 << ", " << e2
- << ") evaluates to false, where"
- << "\n"
- << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n"
- << e2 << " evaluates to " << ::testing::PrintToString(v2);
-}
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT2.
-// Don't use this in your code.
-#define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure)\
- GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), \
- on_failure)
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED2. Don't use
-// this in your code.
-#define GTEST_PRED2_(pred, v1, v2, on_failure)\
- GTEST_ASSERT_(::testing::AssertPred2Helper(#pred, \
- #v1, \
- #v2, \
- pred, \
- v1, \
- v2), on_failure)
-
-// Binary predicate assertion macros.
-#define EXPECT_PRED_FORMAT2(pred_format, v1, v2) \
- GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_PRED2(pred, v1, v2) \
- GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_PRED_FORMAT2(pred_format, v1, v2) \
- GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_)
-#define ASSERT_PRED2(pred, v1, v2) \
- GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_)
-
-
-
-// Helper function for implementing {EXPECT|ASSERT}_PRED3. Don't use
-// this in your code.
-template <typename Pred,
- typename T1,
- typename T2,
- typename T3>
-AssertionResult AssertPred3Helper(const char* pred_text,
- const char* e1,
- const char* e2,
- const char* e3,
- Pred pred,
- const T1& v1,
- const T2& v2,
- const T3& v3) {
- if (pred(v1, v2, v3)) return AssertionSuccess();
-
- return AssertionFailure()
- << pred_text << "(" << e1 << ", " << e2 << ", " << e3
- << ") evaluates to false, where"
- << "\n"
- << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n"
- << e2 << " evaluates to " << ::testing::PrintToString(v2) << "\n"
- << e3 << " evaluates to " << ::testing::PrintToString(v3);
-}
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT3.
-// Don't use this in your code.
-#define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure)\
- GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3), \
- on_failure)
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED3. Don't use
-// this in your code.
-#define GTEST_PRED3_(pred, v1, v2, v3, on_failure)\
- GTEST_ASSERT_(::testing::AssertPred3Helper(#pred, \
- #v1, \
- #v2, \
- #v3, \
- pred, \
- v1, \
- v2, \
- v3), on_failure)
-
-// Ternary predicate assertion macros.
-#define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3) \
- GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_PRED3(pred, v1, v2, v3) \
- GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3) \
- GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_)
-#define ASSERT_PRED3(pred, v1, v2, v3) \
- GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_)
-
-
-
-// Helper function for implementing {EXPECT|ASSERT}_PRED4. Don't use
-// this in your code.
-template <typename Pred,
- typename T1,
- typename T2,
- typename T3,
- typename T4>
-AssertionResult AssertPred4Helper(const char* pred_text,
- const char* e1,
- const char* e2,
- const char* e3,
- const char* e4,
- Pred pred,
- const T1& v1,
- const T2& v2,
- const T3& v3,
- const T4& v4) {
- if (pred(v1, v2, v3, v4)) return AssertionSuccess();
-
- return AssertionFailure()
- << pred_text << "(" << e1 << ", " << e2 << ", " << e3 << ", " << e4
- << ") evaluates to false, where"
- << "\n"
- << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n"
- << e2 << " evaluates to " << ::testing::PrintToString(v2) << "\n"
- << e3 << " evaluates to " << ::testing::PrintToString(v3) << "\n"
- << e4 << " evaluates to " << ::testing::PrintToString(v4);
-}
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT4.
-// Don't use this in your code.
-#define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure)\
- GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4), \
- on_failure)
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED4. Don't use
-// this in your code.
-#define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure)\
- GTEST_ASSERT_(::testing::AssertPred4Helper(#pred, \
- #v1, \
- #v2, \
- #v3, \
- #v4, \
- pred, \
- v1, \
- v2, \
- v3, \
- v4), on_failure)
-
-// 4-ary predicate assertion macros.
-#define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
- GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_PRED4(pred, v1, v2, v3, v4) \
- GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
- GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
-#define ASSERT_PRED4(pred, v1, v2, v3, v4) \
- GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
-
-
-
-// Helper function for implementing {EXPECT|ASSERT}_PRED5. Don't use
-// this in your code.
-template <typename Pred,
- typename T1,
- typename T2,
- typename T3,
- typename T4,
- typename T5>
-AssertionResult AssertPred5Helper(const char* pred_text,
- const char* e1,
- const char* e2,
- const char* e3,
- const char* e4,
- const char* e5,
- Pred pred,
- const T1& v1,
- const T2& v2,
- const T3& v3,
- const T4& v4,
- const T5& v5) {
- if (pred(v1, v2, v3, v4, v5)) return AssertionSuccess();
-
- return AssertionFailure()
- << pred_text << "(" << e1 << ", " << e2 << ", " << e3 << ", " << e4
- << ", " << e5 << ") evaluates to false, where"
- << "\n"
- << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n"
- << e2 << " evaluates to " << ::testing::PrintToString(v2) << "\n"
- << e3 << " evaluates to " << ::testing::PrintToString(v3) << "\n"
- << e4 << " evaluates to " << ::testing::PrintToString(v4) << "\n"
- << e5 << " evaluates to " << ::testing::PrintToString(v5);
-}
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT5.
-// Don't use this in your code.
-#define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure)\
- GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), \
- on_failure)
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED5. Don't use
-// this in your code.
-#define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure)\
- GTEST_ASSERT_(::testing::AssertPred5Helper(#pred, \
- #v1, \
- #v2, \
- #v3, \
- #v4, \
- #v5, \
- pred, \
- v1, \
- v2, \
- v3, \
- v4, \
- v5), on_failure)
-
-// 5-ary predicate assertion macros.
-#define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
- GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_PRED5(pred, v1, v2, v3, v4, v5) \
- GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
- GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
-#define ASSERT_PRED5(pred, v1, v2, v3, v4, v5) \
- GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
-
-
-
-} // namespace testing
-
-#endif // GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest_prod.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest_prod.h
deleted file mode 100644
index e651671ebde..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/gtest_prod.h
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2006, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// Google C++ Testing and Mocking Framework definitions useful in production code.
-// GOOGLETEST_CM0003 DO NOT DELETE
-
-#ifndef GTEST_INCLUDE_GTEST_GTEST_PROD_H_
-#define GTEST_INCLUDE_GTEST_GTEST_PROD_H_
-
-// When you need to test the private or protected members of a class,
-// use the FRIEND_TEST macro to declare your tests as friends of the
-// class. For example:
-//
-// class MyClass {
-// private:
-// void PrivateMethod();
-// FRIEND_TEST(MyClassTest, PrivateMethodWorks);
-// };
-//
-// class MyClassTest : public testing::Test {
-// // ...
-// };
-//
-// TEST_F(MyClassTest, PrivateMethodWorks) {
-// // Can call MyClass::PrivateMethod() here.
-// }
-//
-// Note: The test class must be in the same namespace as the class being tested.
-// For example, putting MyClassTest in an anonymous namespace will not work.
-
-#define FRIEND_TEST(test_case_name, test_name)\
-friend class test_case_name##_##test_name##_Test
-
-#endif // GTEST_INCLUDE_GTEST_GTEST_PROD_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/custom/gtest-port.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/custom/gtest-port.h
deleted file mode 100644
index cd85d956d2d..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/custom/gtest-port.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Injection point for custom user configurations. See README for details
-//
-// ** Custom implementation starts here **
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/custom/gtest-printers.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/custom/gtest-printers.h
deleted file mode 100644
index eb4467abcab..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/custom/gtest-printers.h
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// This file provides an injection point for custom printers in a local
-// installation of gTest.
-// It will be included from gtest-printers.h and the overrides in this file
-// will be visible to everyone.
-//
-// Injection point for custom user configurations. See README for details
-//
-// ** Custom implementation starts here **
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/custom/gtest.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/custom/gtest.h
deleted file mode 100644
index 4c8e07be23f..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/custom/gtest.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Injection point for custom user configurations. See README for details
-//
-// ** Custom implementation starts here **
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_H_
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-death-test-internal.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-death-test-internal.h
deleted file mode 100644
index 68bd3530618..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-death-test-internal.h
+++ /dev/null
@@ -1,304 +0,0 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This header file defines internal utilities needed for implementing
-// death tests. They are subject to change without notice.
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
-
-#include "gtest/gtest-matchers.h"
-#include "gtest/internal/gtest-internal.h"
-
-#include <stdio.h>
-#include <memory>
-
-namespace testing {
-namespace internal {
-
-GTEST_DECLARE_string_(internal_run_death_test);
-
-// Names of the flags (needed for parsing Google Test flags).
-const char kDeathTestStyleFlag[] = "death_test_style";
-const char kDeathTestUseFork[] = "death_test_use_fork";
-const char kInternalRunDeathTestFlag[] = "internal_run_death_test";
-
-#if GTEST_HAS_DEATH_TEST
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
-/* class A needs to have dll-interface to be used by clients of class B */)
-
-// DeathTest is a class that hides much of the complexity of the
-// GTEST_DEATH_TEST_ macro. It is abstract; its static Create method
-// returns a concrete class that depends on the prevailing death test
-// style, as defined by the --gtest_death_test_style and/or
-// --gtest_internal_run_death_test flags.
-
-// In describing the results of death tests, these terms are used with
-// the corresponding definitions:
-//
-// exit status: The integer exit information in the format specified
-// by wait(2)
-// exit code: The integer code passed to exit(3), _exit(2), or
-// returned from main()
-class GTEST_API_ DeathTest {
- public:
- // Create returns false if there was an error determining the
- // appropriate action to take for the current death test; for example,
- // if the gtest_death_test_style flag is set to an invalid value.
- // The LastMessage method will return a more detailed message in that
- // case. Otherwise, the DeathTest pointer pointed to by the "test"
- // argument is set. If the death test should be skipped, the pointer
- // is set to NULL; otherwise, it is set to the address of a new concrete
- // DeathTest object that controls the execution of the current test.
- static bool Create(const char* statement, Matcher<const std::string&> matcher,
- const char* file, int line, DeathTest** test);
- DeathTest();
- virtual ~DeathTest() { }
-
- // A helper class that aborts a death test when it's deleted.
- class ReturnSentinel {
- public:
- explicit ReturnSentinel(DeathTest* test) : test_(test) { }
- ~ReturnSentinel() { test_->Abort(TEST_ENCOUNTERED_RETURN_STATEMENT); }
- private:
- DeathTest* const test_;
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ReturnSentinel);
- } GTEST_ATTRIBUTE_UNUSED_;
-
- // An enumeration of possible roles that may be taken when a death
- // test is encountered. EXECUTE means that the death test logic should
- // be executed immediately. OVERSEE means that the program should prepare
- // the appropriate environment for a child process to execute the death
- // test, then wait for it to complete.
- enum TestRole { OVERSEE_TEST, EXECUTE_TEST };
-
- // An enumeration of the three reasons that a test might be aborted.
- enum AbortReason {
- TEST_ENCOUNTERED_RETURN_STATEMENT,
- TEST_THREW_EXCEPTION,
- TEST_DID_NOT_DIE
- };
-
- // Assumes one of the above roles.
- virtual TestRole AssumeRole() = 0;
-
- // Waits for the death test to finish and returns its status.
- virtual int Wait() = 0;
-
- // Returns true if the death test passed; that is, the test process
- // exited during the test, its exit status matches a user-supplied
- // predicate, and its stderr output matches a user-supplied regular
- // expression.
- // The user-supplied predicate may be a macro expression rather
- // than a function pointer or functor, or else Wait and Passed could
- // be combined.
- virtual bool Passed(bool exit_status_ok) = 0;
-
- // Signals that the death test did not die as expected.
- virtual void Abort(AbortReason reason) = 0;
-
- // Returns a human-readable outcome message regarding the outcome of
- // the last death test.
- static const char* LastMessage();
-
- static void set_last_death_test_message(const std::string& message);
-
- private:
- // A string containing a description of the outcome of the last death test.
- static std::string last_death_test_message_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(DeathTest);
-};
-
-GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251
-
-// Factory interface for death tests. May be mocked out for testing.
-class DeathTestFactory {
- public:
- virtual ~DeathTestFactory() { }
- virtual bool Create(const char* statement,
- Matcher<const std::string&> matcher, const char* file,
- int line, DeathTest** test) = 0;
-};
-
-// A concrete DeathTestFactory implementation for normal use.
-class DefaultDeathTestFactory : public DeathTestFactory {
- public:
- bool Create(const char* statement, Matcher<const std::string&> matcher,
- const char* file, int line, DeathTest** test) override;
-};
-
-// Returns true if exit_status describes a process that was terminated
-// by a signal, or exited normally with a nonzero exit code.
-GTEST_API_ bool ExitedUnsuccessfully(int exit_status);
-
-// A string passed to EXPECT_DEATH (etc.) is caught by one of these overloads
-// and interpreted as a regex (rather than an Eq matcher) for legacy
-// compatibility.
-inline Matcher<const ::std::string&> MakeDeathTestMatcher(
- ::testing::internal::RE regex) {
- return ContainsRegex(regex.pattern());
-}
-inline Matcher<const ::std::string&> MakeDeathTestMatcher(const char* regex) {
- return ContainsRegex(regex);
-}
-inline Matcher<const ::std::string&> MakeDeathTestMatcher(
- const ::std::string& regex) {
- return ContainsRegex(regex);
-}
-
-// If a Matcher<const ::std::string&> is passed to EXPECT_DEATH (etc.), it's
-// used directly.
-inline Matcher<const ::std::string&> MakeDeathTestMatcher(
- Matcher<const ::std::string&> matcher) {
- return matcher;
-}
-
-// Traps C++ exceptions escaping statement and reports them as test
-// failures. Note that trapping SEH exceptions is not implemented here.
-# if GTEST_HAS_EXCEPTIONS
-# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
- try { \
- GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
- } catch (const ::std::exception& gtest_exception) { \
- fprintf(\
- stderr, \
- "\n%s: Caught std::exception-derived exception escaping the " \
- "death test statement. Exception message: %s\n", \
- ::testing::internal::FormatFileLocation(__FILE__, __LINE__).c_str(), \
- gtest_exception.what()); \
- fflush(stderr); \
- death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \
- } catch (...) { \
- death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \
- }
-
-# else
-# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
- GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement)
-
-# endif
-
-// This macro is for implementing ASSERT_DEATH*, EXPECT_DEATH*,
-// ASSERT_EXIT*, and EXPECT_EXIT*.
-#define GTEST_DEATH_TEST_(statement, predicate, regex_or_matcher, fail) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (::testing::internal::AlwaysTrue()) { \
- ::testing::internal::DeathTest* gtest_dt; \
- if (!::testing::internal::DeathTest::Create( \
- #statement, \
- ::testing::internal::MakeDeathTestMatcher(regex_or_matcher), \
- __FILE__, __LINE__, &gtest_dt)) { \
- goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \
- } \
- if (gtest_dt != nullptr) { \
- std::unique_ptr< ::testing::internal::DeathTest> gtest_dt_ptr(gtest_dt); \
- switch (gtest_dt->AssumeRole()) { \
- case ::testing::internal::DeathTest::OVERSEE_TEST: \
- if (!gtest_dt->Passed(predicate(gtest_dt->Wait()))) { \
- goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \
- } \
- break; \
- case ::testing::internal::DeathTest::EXECUTE_TEST: { \
- ::testing::internal::DeathTest::ReturnSentinel gtest_sentinel( \
- gtest_dt); \
- GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, gtest_dt); \
- gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE); \
- break; \
- } \
- default: \
- break; \
- } \
- } \
- } else \
- GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__) \
- : fail(::testing::internal::DeathTest::LastMessage())
-// The symbol "fail" here expands to something into which a message
-// can be streamed.
-
-// This macro is for implementing ASSERT/EXPECT_DEBUG_DEATH when compiled in
-// NDEBUG mode. In this case we need the statements to be executed and the macro
-// must accept a streamed message even though the message is never printed.
-// The regex object is not evaluated, but it is used to prevent "unused"
-// warnings and to avoid an expression that doesn't compile in debug mode.
-#define GTEST_EXECUTE_STATEMENT_(statement, regex_or_matcher) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (::testing::internal::AlwaysTrue()) { \
- GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
- } else if (!::testing::internal::AlwaysTrue()) { \
- ::testing::internal::MakeDeathTestMatcher(regex_or_matcher); \
- } else \
- ::testing::Message()
-
-// A class representing the parsed contents of the
-// --gtest_internal_run_death_test flag, as it existed when
-// RUN_ALL_TESTS was called.
-class InternalRunDeathTestFlag {
- public:
- InternalRunDeathTestFlag(const std::string& a_file,
- int a_line,
- int an_index,
- int a_write_fd)
- : file_(a_file), line_(a_line), index_(an_index),
- write_fd_(a_write_fd) {}
-
- ~InternalRunDeathTestFlag() {
- if (write_fd_ >= 0)
- posix::Close(write_fd_);
- }
-
- const std::string& file() const { return file_; }
- int line() const { return line_; }
- int index() const { return index_; }
- int write_fd() const { return write_fd_; }
-
- private:
- std::string file_;
- int line_;
- int index_;
- int write_fd_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(InternalRunDeathTestFlag);
-};
-
-// Returns a newly created InternalRunDeathTestFlag object with fields
-// initialized from the GTEST_FLAG(internal_run_death_test) flag if
-// the flag is specified; otherwise returns NULL.
-InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag();
-
-#endif // GTEST_HAS_DEATH_TEST
-
-} // namespace internal
-} // namespace testing
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-filepath.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-filepath.h
deleted file mode 100644
index c11b101516e..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-filepath.h
+++ /dev/null
@@ -1,211 +0,0 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Google Test filepath utilities
-//
-// This header file declares classes and functions used internally by
-// Google Test. They are subject to change without notice.
-//
-// This file is #included in gtest/internal/gtest-internal.h.
-// Do not include this header file separately!
-
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
-
-#include "gtest/internal/gtest-string.h"
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
-/* class A needs to have dll-interface to be used by clients of class B */)
-
-namespace testing {
-namespace internal {
-
-// FilePath - a class for file and directory pathname manipulation which
-// handles platform-specific conventions (like the pathname separator).
-// Used for helper functions for naming files in a directory for xml output.
-// Except for Set methods, all methods are const or static, which provides an
-// "immutable value object" -- useful for peace of mind.
-// A FilePath with a value ending in a path separator ("like/this/") represents
-// a directory, otherwise it is assumed to represent a file. In either case,
-// it may or may not represent an actual file or directory in the file system.
-// Names are NOT checked for syntax correctness -- no checking for illegal
-// characters, malformed paths, etc.
-
-class GTEST_API_ FilePath {
- public:
- FilePath() : pathname_("") { }
- FilePath(const FilePath& rhs) : pathname_(rhs.pathname_) { }
-
- explicit FilePath(const std::string& pathname) : pathname_(pathname) {
- Normalize();
- }
-
- FilePath& operator=(const FilePath& rhs) {
- Set(rhs);
- return *this;
- }
-
- void Set(const FilePath& rhs) {
- pathname_ = rhs.pathname_;
- }
-
- const std::string& string() const { return pathname_; }
- const char* c_str() const { return pathname_.c_str(); }
-
- // Returns the current working directory, or "" if unsuccessful.
- static FilePath GetCurrentDir();
-
- // Given directory = "dir", base_name = "test", number = 0,
- // extension = "xml", returns "dir/test.xml". If number is greater
- // than zero (e.g., 12), returns "dir/test_12.xml".
- // On Windows platform, uses \ as the separator rather than /.
- static FilePath MakeFileName(const FilePath& directory,
- const FilePath& base_name,
- int number,
- const char* extension);
-
- // Given directory = "dir", relative_path = "test.xml",
- // returns "dir/test.xml".
- // On Windows, uses \ as the separator rather than /.
- static FilePath ConcatPaths(const FilePath& directory,
- const FilePath& relative_path);
-
- // Returns a pathname for a file that does not currently exist. The pathname
- // will be directory/base_name.extension or
- // directory/base_name_<number>.extension if directory/base_name.extension
- // already exists. The number will be incremented until a pathname is found
- // that does not already exist.
- // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'.
- // There could be a race condition if two or more processes are calling this
- // function at the same time -- they could both pick the same filename.
- static FilePath GenerateUniqueFileName(const FilePath& directory,
- const FilePath& base_name,
- const char* extension);
-
- // Returns true if and only if the path is "".
- bool IsEmpty() const { return pathname_.empty(); }
-
- // If input name has a trailing separator character, removes it and returns
- // the name, otherwise return the name string unmodified.
- // On Windows platform, uses \ as the separator, other platforms use /.
- FilePath RemoveTrailingPathSeparator() const;
-
- // Returns a copy of the FilePath with the directory part removed.
- // Example: FilePath("path/to/file").RemoveDirectoryName() returns
- // FilePath("file"). If there is no directory part ("just_a_file"), it returns
- // the FilePath unmodified. If there is no file part ("just_a_dir/") it
- // returns an empty FilePath ("").
- // On Windows platform, '\' is the path separator, otherwise it is '/'.
- FilePath RemoveDirectoryName() const;
-
- // RemoveFileName returns the directory path with the filename removed.
- // Example: FilePath("path/to/file").RemoveFileName() returns "path/to/".
- // If the FilePath is "a_file" or "/a_file", RemoveFileName returns
- // FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does
- // not have a file, like "just/a/dir/", it returns the FilePath unmodified.
- // On Windows platform, '\' is the path separator, otherwise it is '/'.
- FilePath RemoveFileName() const;
-
- // Returns a copy of the FilePath with the case-insensitive extension removed.
- // Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns
- // FilePath("dir/file"). If a case-insensitive extension is not
- // found, returns a copy of the original FilePath.
- FilePath RemoveExtension(const char* extension) const;
-
- // Creates directories so that path exists. Returns true if successful or if
- // the directories already exist; returns false if unable to create
- // directories for any reason. Will also return false if the FilePath does
- // not represent a directory (that is, it doesn't end with a path separator).
- bool CreateDirectoriesRecursively() const;
-
- // Create the directory so that path exists. Returns true if successful or
- // if the directory already exists; returns false if unable to create the
- // directory for any reason, including if the parent directory does not
- // exist. Not named "CreateDirectory" because that's a macro on Windows.
- bool CreateFolder() const;
-
- // Returns true if FilePath describes something in the file-system,
- // either a file, directory, or whatever, and that something exists.
- bool FileOrDirectoryExists() const;
-
- // Returns true if pathname describes a directory in the file-system
- // that exists.
- bool DirectoryExists() const;
-
- // Returns true if FilePath ends with a path separator, which indicates that
- // it is intended to represent a directory. Returns false otherwise.
- // This does NOT check that a directory (or file) actually exists.
- bool IsDirectory() const;
-
- // Returns true if pathname describes a root directory. (Windows has one
- // root directory per disk drive.)
- bool IsRootDirectory() const;
-
- // Returns true if pathname describes an absolute path.
- bool IsAbsolutePath() const;
-
- private:
- // Replaces multiple consecutive separators with a single separator.
- // For example, "bar///foo" becomes "bar/foo". Does not eliminate other
- // redundancies that might be in a pathname involving "." or "..".
- //
- // A pathname with multiple consecutive separators may occur either through
- // user error or as a result of some scripts or APIs that generate a pathname
- // with a trailing separator. On other platforms the same API or script
- // may NOT generate a pathname with a trailing "/". Then elsewhere that
- // pathname may have another "/" and pathname components added to it,
- // without checking for the separator already being there.
- // The script language and operating system may allow paths like "foo//bar"
- // but some of the functions in FilePath will not handle that correctly. In
- // particular, RemoveTrailingPathSeparator() only removes one separator, and
- // it is called in CreateDirectoriesRecursively() assuming that it will change
- // a pathname from directory syntax (trailing separator) to filename syntax.
- //
- // On Windows this method also replaces the alternate path separator '/' with
- // the primary path separator '\\', so that for example "bar\\/\\foo" becomes
- // "bar\\foo".
-
- void Normalize();
-
- // Returns a pointer to the last occurence of a valid path separator in
- // the FilePath. On Windows, for example, both '/' and '\' are valid path
- // separators. Returns NULL if no path separator was found.
- const char* FindLastPathSeparator() const;
-
- std::string pathname_;
-}; // class FilePath
-
-} // namespace internal
-} // namespace testing
-
-GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-internal.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-internal.h
deleted file mode 100644
index 94c816a28bd..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-internal.h
+++ /dev/null
@@ -1,1380 +0,0 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This header file declares functions and macros used internally by
-// Google Test. They are subject to change without notice.
-
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
-
-#include "gtest/internal/gtest-port.h"
-
-#if GTEST_OS_LINUX
-# include <stdlib.h>
-# include <sys/types.h>
-# include <sys/wait.h>
-# include <unistd.h>
-#endif // GTEST_OS_LINUX
-
-#if GTEST_HAS_EXCEPTIONS
-# include <stdexcept>
-#endif
-
-#include <ctype.h>
-#include <float.h>
-#include <string.h>
-#include <iomanip>
-#include <limits>
-#include <map>
-#include <set>
-#include <string>
-#include <type_traits>
-#include <vector>
-
-#include "gtest/gtest-message.h"
-#include "gtest/internal/gtest-filepath.h"
-#include "gtest/internal/gtest-string.h"
-#include "gtest/internal/gtest-type-util.h"
-
-// Due to C++ preprocessor weirdness, we need double indirection to
-// concatenate two tokens when one of them is __LINE__. Writing
-//
-// foo ## __LINE__
-//
-// will result in the token foo__LINE__, instead of foo followed by
-// the current line number. For more details, see
-// http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-39.6
-#define GTEST_CONCAT_TOKEN_(foo, bar) GTEST_CONCAT_TOKEN_IMPL_(foo, bar)
-#define GTEST_CONCAT_TOKEN_IMPL_(foo, bar) foo ## bar
-
-// Stringifies its argument.
-#define GTEST_STRINGIFY_(name) #name
-
-namespace proto2 { class Message; }
-
-namespace testing {
-
-// Forward declarations.
-
-class AssertionResult; // Result of an assertion.
-class Message; // Represents a failure message.
-class Test; // Represents a test.
-class TestInfo; // Information about a test.
-class TestPartResult; // Result of a test part.
-class UnitTest; // A collection of test suites.
-
-template <typename T>
-::std::string PrintToString(const T& value);
-
-namespace internal {
-
-struct TraceInfo; // Information about a trace point.
-class TestInfoImpl; // Opaque implementation of TestInfo
-class UnitTestImpl; // Opaque implementation of UnitTest
-
-// The text used in failure messages to indicate the start of the
-// stack trace.
-GTEST_API_ extern const char kStackTraceMarker[];
-
-// An IgnoredValue object can be implicitly constructed from ANY value.
-class IgnoredValue {
- struct Sink {};
- public:
- // This constructor template allows any value to be implicitly
- // converted to IgnoredValue. The object has no data member and
- // doesn't try to remember anything about the argument. We
- // deliberately omit the 'explicit' keyword in order to allow the
- // conversion to be implicit.
- // Disable the conversion if T already has a magical conversion operator.
- // Otherwise we get ambiguity.
- template <typename T,
- typename std::enable_if<!std::is_convertible<T, Sink>::value,
- int>::type = 0>
- IgnoredValue(const T& /* ignored */) {} // NOLINT(runtime/explicit)
-};
-
-// Appends the user-supplied message to the Google-Test-generated message.
-GTEST_API_ std::string AppendUserMessage(
- const std::string& gtest_msg, const Message& user_msg);
-
-#if GTEST_HAS_EXCEPTIONS
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4275 \
-/* an exported class was derived from a class that was not exported */)
-
-// This exception is thrown by (and only by) a failed Google Test
-// assertion when GTEST_FLAG(throw_on_failure) is true (if exceptions
-// are enabled). We derive it from std::runtime_error, which is for
-// errors presumably detectable only at run time. Since
-// std::runtime_error inherits from std::exception, many testing
-// frameworks know how to extract and print the message inside it.
-class GTEST_API_ GoogleTestFailureException : public ::std::runtime_error {
- public:
- explicit GoogleTestFailureException(const TestPartResult& failure);
-};
-
-GTEST_DISABLE_MSC_WARNINGS_POP_() // 4275
-
-#endif // GTEST_HAS_EXCEPTIONS
-
-namespace edit_distance {
-// Returns the optimal edits to go from 'left' to 'right'.
-// All edits cost the same, with replace having lower priority than
-// add/remove.
-// Simple implementation of the Wagner-Fischer algorithm.
-// See http://en.wikipedia.org/wiki/Wagner-Fischer_algorithm
-enum EditType { kMatch, kAdd, kRemove, kReplace };
-GTEST_API_ std::vector<EditType> CalculateOptimalEdits(
- const std::vector<size_t>& left, const std::vector<size_t>& right);
-
-// Same as above, but the input is represented as strings.
-GTEST_API_ std::vector<EditType> CalculateOptimalEdits(
- const std::vector<std::string>& left,
- const std::vector<std::string>& right);
-
-// Create a diff of the input strings in Unified diff format.
-GTEST_API_ std::string CreateUnifiedDiff(const std::vector<std::string>& left,
- const std::vector<std::string>& right,
- size_t context = 2);
-
-} // namespace edit_distance
-
-// Calculate the diff between 'left' and 'right' and return it in unified diff
-// format.
-// If not null, stores in 'total_line_count' the total number of lines found
-// in left + right.
-GTEST_API_ std::string DiffStrings(const std::string& left,
- const std::string& right,
- size_t* total_line_count);
-
-// Constructs and returns the message for an equality assertion
-// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure.
-//
-// The first four parameters are the expressions used in the assertion
-// and their values, as strings. For example, for ASSERT_EQ(foo, bar)
-// where foo is 5 and bar is 6, we have:
-//
-// expected_expression: "foo"
-// actual_expression: "bar"
-// expected_value: "5"
-// actual_value: "6"
-//
-// The ignoring_case parameter is true if and only if the assertion is a
-// *_STRCASEEQ*. When it's true, the string " (ignoring case)" will
-// be inserted into the message.
-GTEST_API_ AssertionResult EqFailure(const char* expected_expression,
- const char* actual_expression,
- const std::string& expected_value,
- const std::string& actual_value,
- bool ignoring_case);
-
-// Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
-GTEST_API_ std::string GetBoolAssertionFailureMessage(
- const AssertionResult& assertion_result,
- const char* expression_text,
- const char* actual_predicate_value,
- const char* expected_predicate_value);
-
-// This template class represents an IEEE floating-point number
-// (either single-precision or double-precision, depending on the
-// template parameters).
-//
-// The purpose of this class is to do more sophisticated number
-// comparison. (Due to round-off error, etc, it's very unlikely that
-// two floating-points will be equal exactly. Hence a naive
-// comparison by the == operation often doesn't work.)
-//
-// Format of IEEE floating-point:
-//
-// The most-significant bit being the leftmost, an IEEE
-// floating-point looks like
-//
-// sign_bit exponent_bits fraction_bits
-//
-// Here, sign_bit is a single bit that designates the sign of the
-// number.
-//
-// For float, there are 8 exponent bits and 23 fraction bits.
-//
-// For double, there are 11 exponent bits and 52 fraction bits.
-//
-// More details can be found at
-// http://en.wikipedia.org/wiki/IEEE_floating-point_standard.
-//
-// Template parameter:
-//
-// RawType: the raw floating-point type (either float or double)
-template <typename RawType>
-class FloatingPoint {
- public:
- // Defines the unsigned integer type that has the same size as the
- // floating point number.
- typedef typename TypeWithSize<sizeof(RawType)>::UInt Bits;
-
- // Constants.
-
- // # of bits in a number.
- static const size_t kBitCount = 8*sizeof(RawType);
-
- // # of fraction bits in a number.
- static const size_t kFractionBitCount =
- std::numeric_limits<RawType>::digits - 1;
-
- // # of exponent bits in a number.
- static const size_t kExponentBitCount = kBitCount - 1 - kFractionBitCount;
-
- // The mask for the sign bit.
- static const Bits kSignBitMask = static_cast<Bits>(1) << (kBitCount - 1);
-
- // The mask for the fraction bits.
- static const Bits kFractionBitMask =
- ~static_cast<Bits>(0) >> (kExponentBitCount + 1);
-
- // The mask for the exponent bits.
- static const Bits kExponentBitMask = ~(kSignBitMask | kFractionBitMask);
-
- // How many ULP's (Units in the Last Place) we want to tolerate when
- // comparing two numbers. The larger the value, the more error we
- // allow. A 0 value means that two numbers must be exactly the same
- // to be considered equal.
- //
- // The maximum error of a single floating-point operation is 0.5
- // units in the last place. On Intel CPU's, all floating-point
- // calculations are done with 80-bit precision, while double has 64
- // bits. Therefore, 4 should be enough for ordinary use.
- //
- // See the following article for more details on ULP:
- // http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
- static const size_t kMaxUlps = 4;
-
- // Constructs a FloatingPoint from a raw floating-point number.
- //
- // On an Intel CPU, passing a non-normalized NAN (Not a Number)
- // around may change its bits, although the new value is guaranteed
- // to be also a NAN. Therefore, don't expect this constructor to
- // preserve the bits in x when x is a NAN.
- explicit FloatingPoint(const RawType& x) { u_.value_ = x; }
-
- // Static methods
-
- // Reinterprets a bit pattern as a floating-point number.
- //
- // This function is needed to test the AlmostEquals() method.
- static RawType ReinterpretBits(const Bits bits) {
- FloatingPoint fp(0);
- fp.u_.bits_ = bits;
- return fp.u_.value_;
- }
-
- // Returns the floating-point number that represent positive infinity.
- static RawType Infinity() {
- return ReinterpretBits(kExponentBitMask);
- }
-
- // Returns the maximum representable finite floating-point number.
- static RawType Max();
-
- // Non-static methods
-
- // Returns the bits that represents this number.
- const Bits &bits() const { return u_.bits_; }
-
- // Returns the exponent bits of this number.
- Bits exponent_bits() const { return kExponentBitMask & u_.bits_; }
-
- // Returns the fraction bits of this number.
- Bits fraction_bits() const { return kFractionBitMask & u_.bits_; }
-
- // Returns the sign bit of this number.
- Bits sign_bit() const { return kSignBitMask & u_.bits_; }
-
- // Returns true if and only if this is NAN (not a number).
- bool is_nan() const {
- // It's a NAN if the exponent bits are all ones and the fraction
- // bits are not entirely zeros.
- return (exponent_bits() == kExponentBitMask) && (fraction_bits() != 0);
- }
-
- // Returns true if and only if this number is at most kMaxUlps ULP's away
- // from rhs. In particular, this function:
- //
- // - returns false if either number is (or both are) NAN.
- // - treats really large numbers as almost equal to infinity.
- // - thinks +0.0 and -0.0 are 0 DLP's apart.
- bool AlmostEquals(const FloatingPoint& rhs) const {
- // The IEEE standard says that any comparison operation involving
- // a NAN must return false.
- if (is_nan() || rhs.is_nan()) return false;
-
- return DistanceBetweenSignAndMagnitudeNumbers(u_.bits_, rhs.u_.bits_)
- <= kMaxUlps;
- }
-
- private:
- // The data type used to store the actual floating-point number.
- union FloatingPointUnion {
- RawType value_; // The raw floating-point number.
- Bits bits_; // The bits that represent the number.
- };
-
- // Converts an integer from the sign-and-magnitude representation to
- // the biased representation. More precisely, let N be 2 to the
- // power of (kBitCount - 1), an integer x is represented by the
- // unsigned number x + N.
- //
- // For instance,
- //
- // -N + 1 (the most negative number representable using
- // sign-and-magnitude) is represented by 1;
- // 0 is represented by N; and
- // N - 1 (the biggest number representable using
- // sign-and-magnitude) is represented by 2N - 1.
- //
- // Read http://en.wikipedia.org/wiki/Signed_number_representations
- // for more details on signed number representations.
- static Bits SignAndMagnitudeToBiased(const Bits &sam) {
- if (kSignBitMask & sam) {
- // sam represents a negative number.
- return ~sam + 1;
- } else {
- // sam represents a positive number.
- return kSignBitMask | sam;
- }
- }
-
- // Given two numbers in the sign-and-magnitude representation,
- // returns the distance between them as an unsigned number.
- static Bits DistanceBetweenSignAndMagnitudeNumbers(const Bits &sam1,
- const Bits &sam2) {
- const Bits biased1 = SignAndMagnitudeToBiased(sam1);
- const Bits biased2 = SignAndMagnitudeToBiased(sam2);
- return (biased1 >= biased2) ? (biased1 - biased2) : (biased2 - biased1);
- }
-
- FloatingPointUnion u_;
-};
-
-// We cannot use std::numeric_limits<T>::max() as it clashes with the max()
-// macro defined by <windows.h>.
-template <>
-inline float FloatingPoint<float>::Max() { return FLT_MAX; }
-template <>
-inline double FloatingPoint<double>::Max() { return DBL_MAX; }
-
-// Typedefs the instances of the FloatingPoint template class that we
-// care to use.
-typedef FloatingPoint<float> Float;
-typedef FloatingPoint<double> Double;
-
-// In order to catch the mistake of putting tests that use different
-// test fixture classes in the same test suite, we need to assign
-// unique IDs to fixture classes and compare them. The TypeId type is
-// used to hold such IDs. The user should treat TypeId as an opaque
-// type: the only operation allowed on TypeId values is to compare
-// them for equality using the == operator.
-typedef const void* TypeId;
-
-template <typename T>
-class TypeIdHelper {
- public:
- // dummy_ must not have a const type. Otherwise an overly eager
- // compiler (e.g. MSVC 7.1 & 8.0) may try to merge
- // TypeIdHelper<T>::dummy_ for different Ts as an "optimization".
- static bool dummy_;
-};
-
-template <typename T>
-bool TypeIdHelper<T>::dummy_ = false;
-
-// GetTypeId<T>() returns the ID of type T. Different values will be
-// returned for different types. Calling the function twice with the
-// same type argument is guaranteed to return the same ID.
-template <typename T>
-TypeId GetTypeId() {
- // The compiler is required to allocate a different
- // TypeIdHelper<T>::dummy_ variable for each T used to instantiate
- // the template. Therefore, the address of dummy_ is guaranteed to
- // be unique.
- return &(TypeIdHelper<T>::dummy_);
-}
-
-// Returns the type ID of ::testing::Test. Always call this instead
-// of GetTypeId< ::testing::Test>() to get the type ID of
-// ::testing::Test, as the latter may give the wrong result due to a
-// suspected linker bug when compiling Google Test as a Mac OS X
-// framework.
-GTEST_API_ TypeId GetTestTypeId();
-
-// Defines the abstract factory interface that creates instances
-// of a Test object.
-class TestFactoryBase {
- public:
- virtual ~TestFactoryBase() {}
-
- // Creates a test instance to run. The instance is both created and destroyed
- // within TestInfoImpl::Run()
- virtual Test* CreateTest() = 0;
-
- protected:
- TestFactoryBase() {}
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TestFactoryBase);
-};
-
-// This class provides implementation of TeastFactoryBase interface.
-// It is used in TEST and TEST_F macros.
-template <class TestClass>
-class TestFactoryImpl : public TestFactoryBase {
- public:
- Test* CreateTest() override { return new TestClass; }
-};
-
-#if GTEST_OS_WINDOWS
-
-// Predicate-formatters for implementing the HRESULT checking macros
-// {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}
-// We pass a long instead of HRESULT to avoid causing an
-// include dependency for the HRESULT type.
-GTEST_API_ AssertionResult IsHRESULTSuccess(const char* expr,
- long hr); // NOLINT
-GTEST_API_ AssertionResult IsHRESULTFailure(const char* expr,
- long hr); // NOLINT
-
-#endif // GTEST_OS_WINDOWS
-
-// Types of SetUpTestSuite() and TearDownTestSuite() functions.
-using SetUpTestSuiteFunc = void (*)();
-using TearDownTestSuiteFunc = void (*)();
-
-struct CodeLocation {
- CodeLocation(const std::string& a_file, int a_line)
- : file(a_file), line(a_line) {}
-
- std::string file;
- int line;
-};
-
-// Helper to identify which setup function for TestCase / TestSuite to call.
-// Only one function is allowed, either TestCase or TestSute but not both.
-
-// Utility functions to help SuiteApiResolver
-using SetUpTearDownSuiteFuncType = void (*)();
-
-inline SetUpTearDownSuiteFuncType GetNotDefaultOrNull(
- SetUpTearDownSuiteFuncType a, SetUpTearDownSuiteFuncType def) {
- return a == def ? nullptr : a;
-}
-
-template <typename T>
-// Note that SuiteApiResolver inherits from T because
-// SetUpTestSuite()/TearDownTestSuite() could be protected. Ths way
-// SuiteApiResolver can access them.
-struct SuiteApiResolver : T {
- // testing::Test is only forward declared at this point. So we make it a
- // dependend class for the compiler to be OK with it.
- using Test =
- typename std::conditional<sizeof(T) != 0, ::testing::Test, void>::type;
-
- static SetUpTearDownSuiteFuncType GetSetUpCaseOrSuite(const char* filename,
- int line_num) {
- SetUpTearDownSuiteFuncType test_case_fp =
- GetNotDefaultOrNull(&T::SetUpTestCase, &Test::SetUpTestCase);
- SetUpTearDownSuiteFuncType test_suite_fp =
- GetNotDefaultOrNull(&T::SetUpTestSuite, &Test::SetUpTestSuite);
-
- GTEST_CHECK_(!test_case_fp || !test_suite_fp)
- << "Test can not provide both SetUpTestSuite and SetUpTestCase, please "
- "make sure there is only one present at "
- << filename << ":" << line_num;
-
- return test_case_fp != nullptr ? test_case_fp : test_suite_fp;
- }
-
- static SetUpTearDownSuiteFuncType GetTearDownCaseOrSuite(const char* filename,
- int line_num) {
- SetUpTearDownSuiteFuncType test_case_fp =
- GetNotDefaultOrNull(&T::TearDownTestCase, &Test::TearDownTestCase);
- SetUpTearDownSuiteFuncType test_suite_fp =
- GetNotDefaultOrNull(&T::TearDownTestSuite, &Test::TearDownTestSuite);
-
- GTEST_CHECK_(!test_case_fp || !test_suite_fp)
- << "Test can not provide both TearDownTestSuite and TearDownTestCase,"
- " please make sure there is only one present at"
- << filename << ":" << line_num;
-
- return test_case_fp != nullptr ? test_case_fp : test_suite_fp;
- }
-};
-
-// Creates a new TestInfo object and registers it with Google Test;
-// returns the created object.
-//
-// Arguments:
-//
-// test_suite_name: name of the test suite
-// name: name of the test
-// type_param the name of the test's type parameter, or NULL if
-// this is not a typed or a type-parameterized test.
-// value_param text representation of the test's value parameter,
-// or NULL if this is not a type-parameterized test.
-// code_location: code location where the test is defined
-// fixture_class_id: ID of the test fixture class
-// set_up_tc: pointer to the function that sets up the test suite
-// tear_down_tc: pointer to the function that tears down the test suite
-// factory: pointer to the factory that creates a test object.
-// The newly created TestInfo instance will assume
-// ownership of the factory object.
-GTEST_API_ TestInfo* MakeAndRegisterTestInfo(
- const char* test_suite_name, const char* name, const char* type_param,
- const char* value_param, CodeLocation code_location,
- TypeId fixture_class_id, SetUpTestSuiteFunc set_up_tc,
- TearDownTestSuiteFunc tear_down_tc, TestFactoryBase* factory);
-
-// If *pstr starts with the given prefix, modifies *pstr to be right
-// past the prefix and returns true; otherwise leaves *pstr unchanged
-// and returns false. None of pstr, *pstr, and prefix can be NULL.
-GTEST_API_ bool SkipPrefix(const char* prefix, const char** pstr);
-
-#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
-/* class A needs to have dll-interface to be used by clients of class B */)
-
-// State of the definition of a type-parameterized test suite.
-class GTEST_API_ TypedTestSuitePState {
- public:
- TypedTestSuitePState() : registered_(false) {}
-
- // Adds the given test name to defined_test_names_ and return true
- // if the test suite hasn't been registered; otherwise aborts the
- // program.
- bool AddTestName(const char* file, int line, const char* case_name,
- const char* test_name) {
- if (registered_) {
- fprintf(stderr,
- "%s Test %s must be defined before "
- "REGISTER_TYPED_TEST_SUITE_P(%s, ...).\n",
- FormatFileLocation(file, line).c_str(), test_name, case_name);
- fflush(stderr);
- posix::Abort();
- }
- registered_tests_.insert(
- ::std::make_pair(test_name, CodeLocation(file, line)));
- return true;
- }
-
- bool TestExists(const std::string& test_name) const {
- return registered_tests_.count(test_name) > 0;
- }
-
- const CodeLocation& GetCodeLocation(const std::string& test_name) const {
- RegisteredTestsMap::const_iterator it = registered_tests_.find(test_name);
- GTEST_CHECK_(it != registered_tests_.end());
- return it->second;
- }
-
- // Verifies that registered_tests match the test names in
- // defined_test_names_; returns registered_tests if successful, or
- // aborts the program otherwise.
- const char* VerifyRegisteredTestNames(
- const char* file, int line, const char* registered_tests);
-
- private:
- typedef ::std::map<std::string, CodeLocation> RegisteredTestsMap;
-
- bool registered_;
- RegisteredTestsMap registered_tests_;
-};
-
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-using TypedTestCasePState = TypedTestSuitePState;
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251
-
-// Skips to the first non-space char after the first comma in 'str';
-// returns NULL if no comma is found in 'str'.
-inline const char* SkipComma(const char* str) {
- const char* comma = strchr(str, ',');
- if (comma == nullptr) {
- return nullptr;
- }
- while (IsSpace(*(++comma))) {}
- return comma;
-}
-
-// Returns the prefix of 'str' before the first comma in it; returns
-// the entire string if it contains no comma.
-inline std::string GetPrefixUntilComma(const char* str) {
- const char* comma = strchr(str, ',');
- return comma == nullptr ? str : std::string(str, comma);
-}
-
-// Splits a given string on a given delimiter, populating a given
-// vector with the fields.
-void SplitString(const ::std::string& str, char delimiter,
- ::std::vector< ::std::string>* dest);
-
-// The default argument to the template below for the case when the user does
-// not provide a name generator.
-struct DefaultNameGenerator {
- template <typename T>
- static std::string GetName(int i) {
- return StreamableToString(i);
- }
-};
-
-template <typename Provided = DefaultNameGenerator>
-struct NameGeneratorSelector {
- typedef Provided type;
-};
-
-template <typename NameGenerator>
-void GenerateNamesRecursively(Types0, std::vector<std::string>*, int) {}
-
-template <typename NameGenerator, typename Types>
-void GenerateNamesRecursively(Types, std::vector<std::string>* result, int i) {
- result->push_back(NameGenerator::template GetName<typename Types::Head>(i));
- GenerateNamesRecursively<NameGenerator>(typename Types::Tail(), result,
- i + 1);
-}
-
-template <typename NameGenerator, typename Types>
-std::vector<std::string> GenerateNames() {
- std::vector<std::string> result;
- GenerateNamesRecursively<NameGenerator>(Types(), &result, 0);
- return result;
-}
-
-// TypeParameterizedTest<Fixture, TestSel, Types>::Register()
-// registers a list of type-parameterized tests with Google Test. The
-// return value is insignificant - we just need to return something
-// such that we can call this function in a namespace scope.
-//
-// Implementation note: The GTEST_TEMPLATE_ macro declares a template
-// template parameter. It's defined in gtest-type-util.h.
-template <GTEST_TEMPLATE_ Fixture, class TestSel, typename Types>
-class TypeParameterizedTest {
- public:
- // 'index' is the index of the test in the type list 'Types'
- // specified in INSTANTIATE_TYPED_TEST_SUITE_P(Prefix, TestSuite,
- // Types). Valid values for 'index' are [0, N - 1] where N is the
- // length of Types.
- static bool Register(const char* prefix, const CodeLocation& code_location,
- const char* case_name, const char* test_names, int index,
- const std::vector<std::string>& type_names =
- GenerateNames<DefaultNameGenerator, Types>()) {
- typedef typename Types::Head Type;
- typedef Fixture<Type> FixtureClass;
- typedef typename GTEST_BIND_(TestSel, Type) TestClass;
-
- // First, registers the first type-parameterized test in the type
- // list.
- MakeAndRegisterTestInfo(
- (std::string(prefix) + (prefix[0] == '\0' ? "" : "/") + case_name +
- "/" + type_names[static_cast<size_t>(index)])
- .c_str(),
- StripTrailingSpaces(GetPrefixUntilComma(test_names)).c_str(),
- GetTypeName<Type>().c_str(),
- nullptr, // No value parameter.
- code_location, GetTypeId<FixtureClass>(),
- SuiteApiResolver<TestClass>::GetSetUpCaseOrSuite(
- code_location.file.c_str(), code_location.line),
- SuiteApiResolver<TestClass>::GetTearDownCaseOrSuite(
- code_location.file.c_str(), code_location.line),
- new TestFactoryImpl<TestClass>);
-
- // Next, recurses (at compile time) with the tail of the type list.
- return TypeParameterizedTest<Fixture, TestSel,
- typename Types::Tail>::Register(prefix,
- code_location,
- case_name,
- test_names,
- index + 1,
- type_names);
- }
-};
-
-// The base case for the compile time recursion.
-template <GTEST_TEMPLATE_ Fixture, class TestSel>
-class TypeParameterizedTest<Fixture, TestSel, Types0> {
- public:
- static bool Register(const char* /*prefix*/, const CodeLocation&,
- const char* /*case_name*/, const char* /*test_names*/,
- int /*index*/,
- const std::vector<std::string>& =
- std::vector<std::string>() /*type_names*/) {
- return true;
- }
-};
-
-// TypeParameterizedTestSuite<Fixture, Tests, Types>::Register()
-// registers *all combinations* of 'Tests' and 'Types' with Google
-// Test. The return value is insignificant - we just need to return
-// something such that we can call this function in a namespace scope.
-template <GTEST_TEMPLATE_ Fixture, typename Tests, typename Types>
-class TypeParameterizedTestSuite {
- public:
- static bool Register(const char* prefix, CodeLocation code_location,
- const TypedTestSuitePState* state, const char* case_name,
- const char* test_names,
- const std::vector<std::string>& type_names =
- GenerateNames<DefaultNameGenerator, Types>()) {
- std::string test_name = StripTrailingSpaces(
- GetPrefixUntilComma(test_names));
- if (!state->TestExists(test_name)) {
- fprintf(stderr, "Failed to get code location for test %s.%s at %s.",
- case_name, test_name.c_str(),
- FormatFileLocation(code_location.file.c_str(),
- code_location.line).c_str());
- fflush(stderr);
- posix::Abort();
- }
- const CodeLocation& test_location = state->GetCodeLocation(test_name);
-
- typedef typename Tests::Head Head;
-
- // First, register the first test in 'Test' for each type in 'Types'.
- TypeParameterizedTest<Fixture, Head, Types>::Register(
- prefix, test_location, case_name, test_names, 0, type_names);
-
- // Next, recurses (at compile time) with the tail of the test list.
- return TypeParameterizedTestSuite<Fixture, typename Tests::Tail,
- Types>::Register(prefix, code_location,
- state, case_name,
- SkipComma(test_names),
- type_names);
- }
-};
-
-// The base case for the compile time recursion.
-template <GTEST_TEMPLATE_ Fixture, typename Types>
-class TypeParameterizedTestSuite<Fixture, Templates0, Types> {
- public:
- static bool Register(const char* /*prefix*/, const CodeLocation&,
- const TypedTestSuitePState* /*state*/,
- const char* /*case_name*/, const char* /*test_names*/,
- const std::vector<std::string>& =
- std::vector<std::string>() /*type_names*/) {
- return true;
- }
-};
-
-#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
-
-// Returns the current OS stack trace as an std::string.
-//
-// The maximum number of stack frames to be included is specified by
-// the gtest_stack_trace_depth flag. The skip_count parameter
-// specifies the number of top frames to be skipped, which doesn't
-// count against the number of frames to be included.
-//
-// For example, if Foo() calls Bar(), which in turn calls
-// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in
-// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't.
-GTEST_API_ std::string GetCurrentOsStackTraceExceptTop(
- UnitTest* unit_test, int skip_count);
-
-// Helpers for suppressing warnings on unreachable code or constant
-// condition.
-
-// Always returns true.
-GTEST_API_ bool AlwaysTrue();
-
-// Always returns false.
-inline bool AlwaysFalse() { return !AlwaysTrue(); }
-
-// Helper for suppressing false warning from Clang on a const char*
-// variable declared in a conditional expression always being NULL in
-// the else branch.
-struct GTEST_API_ ConstCharPtr {
- ConstCharPtr(const char* str) : value(str) {}
- operator bool() const { return true; }
- const char* value;
-};
-
-// A simple Linear Congruential Generator for generating random
-// numbers with a uniform distribution. Unlike rand() and srand(), it
-// doesn't use global state (and therefore can't interfere with user
-// code). Unlike rand_r(), it's portable. An LCG isn't very random,
-// but it's good enough for our purposes.
-class GTEST_API_ Random {
- public:
- static const UInt32 kMaxRange = 1u << 31;
-
- explicit Random(UInt32 seed) : state_(seed) {}
-
- void Reseed(UInt32 seed) { state_ = seed; }
-
- // Generates a random number from [0, range). Crashes if 'range' is
- // 0 or greater than kMaxRange.
- UInt32 Generate(UInt32 range);
-
- private:
- UInt32 state_;
- GTEST_DISALLOW_COPY_AND_ASSIGN_(Random);
-};
-
-// Turns const U&, U&, const U, and U all into U.
-#define GTEST_REMOVE_REFERENCE_AND_CONST_(T) \
- typename std::remove_const<typename std::remove_reference<T>::type>::type
-
-// IsAProtocolMessage<T>::value is a compile-time bool constant that's
-// true if and only if T is type proto2::Message or a subclass of it.
-template <typename T>
-struct IsAProtocolMessage
- : public bool_constant<
- std::is_convertible<const T*, const ::proto2::Message*>::value> {};
-
-// When the compiler sees expression IsContainerTest<C>(0), if C is an
-// STL-style container class, the first overload of IsContainerTest
-// will be viable (since both C::iterator* and C::const_iterator* are
-// valid types and NULL can be implicitly converted to them). It will
-// be picked over the second overload as 'int' is a perfect match for
-// the type of argument 0. If C::iterator or C::const_iterator is not
-// a valid type, the first overload is not viable, and the second
-// overload will be picked. Therefore, we can determine whether C is
-// a container class by checking the type of IsContainerTest<C>(0).
-// The value of the expression is insignificant.
-//
-// In C++11 mode we check the existence of a const_iterator and that an
-// iterator is properly implemented for the container.
-//
-// For pre-C++11 that we look for both C::iterator and C::const_iterator.
-// The reason is that C++ injects the name of a class as a member of the
-// class itself (e.g. you can refer to class iterator as either
-// 'iterator' or 'iterator::iterator'). If we look for C::iterator
-// only, for example, we would mistakenly think that a class named
-// iterator is an STL container.
-//
-// Also note that the simpler approach of overloading
-// IsContainerTest(typename C::const_iterator*) and
-// IsContainerTest(...) doesn't work with Visual Age C++ and Sun C++.
-typedef int IsContainer;
-template <class C,
- class Iterator = decltype(::std::declval<const C&>().begin()),
- class = decltype(::std::declval<const C&>().end()),
- class = decltype(++::std::declval<Iterator&>()),
- class = decltype(*::std::declval<Iterator>()),
- class = typename C::const_iterator>
-IsContainer IsContainerTest(int /* dummy */) {
- return 0;
-}
-
-typedef char IsNotContainer;
-template <class C>
-IsNotContainer IsContainerTest(long /* dummy */) { return '\0'; }
-
-// Trait to detect whether a type T is a hash table.
-// The heuristic used is that the type contains an inner type `hasher` and does
-// not contain an inner type `reverse_iterator`.
-// If the container is iterable in reverse, then order might actually matter.
-template <typename T>
-struct IsHashTable {
- private:
- template <typename U>
- static char test(typename U::hasher*, typename U::reverse_iterator*);
- template <typename U>
- static int test(typename U::hasher*, ...);
- template <typename U>
- static char test(...);
-
- public:
- static const bool value = sizeof(test<T>(nullptr, nullptr)) == sizeof(int);
-};
-
-template <typename T>
-const bool IsHashTable<T>::value;
-
-template <typename C,
- bool = sizeof(IsContainerTest<C>(0)) == sizeof(IsContainer)>
-struct IsRecursiveContainerImpl;
-
-template <typename C>
-struct IsRecursiveContainerImpl<C, false> : public std::false_type {};
-
-// Since the IsRecursiveContainerImpl depends on the IsContainerTest we need to
-// obey the same inconsistencies as the IsContainerTest, namely check if
-// something is a container is relying on only const_iterator in C++11 and
-// is relying on both const_iterator and iterator otherwise
-template <typename C>
-struct IsRecursiveContainerImpl<C, true> {
- using value_type = decltype(*std::declval<typename C::const_iterator>());
- using type =
- std::is_same<typename std::remove_const<
- typename std::remove_reference<value_type>::type>::type,
- C>;
-};
-
-// IsRecursiveContainer<Type> is a unary compile-time predicate that
-// evaluates whether C is a recursive container type. A recursive container
-// type is a container type whose value_type is equal to the container type
-// itself. An example for a recursive container type is
-// boost::filesystem::path, whose iterator has a value_type that is equal to
-// boost::filesystem::path.
-template <typename C>
-struct IsRecursiveContainer : public IsRecursiveContainerImpl<C>::type {};
-
-// Utilities for native arrays.
-
-// ArrayEq() compares two k-dimensional native arrays using the
-// elements' operator==, where k can be any integer >= 0. When k is
-// 0, ArrayEq() degenerates into comparing a single pair of values.
-
-template <typename T, typename U>
-bool ArrayEq(const T* lhs, size_t size, const U* rhs);
-
-// This generic version is used when k is 0.
-template <typename T, typename U>
-inline bool ArrayEq(const T& lhs, const U& rhs) { return lhs == rhs; }
-
-// This overload is used when k >= 1.
-template <typename T, typename U, size_t N>
-inline bool ArrayEq(const T(&lhs)[N], const U(&rhs)[N]) {
- return internal::ArrayEq(lhs, N, rhs);
-}
-
-// This helper reduces code bloat. If we instead put its logic inside
-// the previous ArrayEq() function, arrays with different sizes would
-// lead to different copies of the template code.
-template <typename T, typename U>
-bool ArrayEq(const T* lhs, size_t size, const U* rhs) {
- for (size_t i = 0; i != size; i++) {
- if (!internal::ArrayEq(lhs[i], rhs[i]))
- return false;
- }
- return true;
-}
-
-// Finds the first element in the iterator range [begin, end) that
-// equals elem. Element may be a native array type itself.
-template <typename Iter, typename Element>
-Iter ArrayAwareFind(Iter begin, Iter end, const Element& elem) {
- for (Iter it = begin; it != end; ++it) {
- if (internal::ArrayEq(*it, elem))
- return it;
- }
- return end;
-}
-
-// CopyArray() copies a k-dimensional native array using the elements'
-// operator=, where k can be any integer >= 0. When k is 0,
-// CopyArray() degenerates into copying a single value.
-
-template <typename T, typename U>
-void CopyArray(const T* from, size_t size, U* to);
-
-// This generic version is used when k is 0.
-template <typename T, typename U>
-inline void CopyArray(const T& from, U* to) { *to = from; }
-
-// This overload is used when k >= 1.
-template <typename T, typename U, size_t N>
-inline void CopyArray(const T(&from)[N], U(*to)[N]) {
- internal::CopyArray(from, N, *to);
-}
-
-// This helper reduces code bloat. If we instead put its logic inside
-// the previous CopyArray() function, arrays with different sizes
-// would lead to different copies of the template code.
-template <typename T, typename U>
-void CopyArray(const T* from, size_t size, U* to) {
- for (size_t i = 0; i != size; i++) {
- internal::CopyArray(from[i], to + i);
- }
-}
-
-// The relation between an NativeArray object (see below) and the
-// native array it represents.
-// We use 2 different structs to allow non-copyable types to be used, as long
-// as RelationToSourceReference() is passed.
-struct RelationToSourceReference {};
-struct RelationToSourceCopy {};
-
-// Adapts a native array to a read-only STL-style container. Instead
-// of the complete STL container concept, this adaptor only implements
-// members useful for Google Mock's container matchers. New members
-// should be added as needed. To simplify the implementation, we only
-// support Element being a raw type (i.e. having no top-level const or
-// reference modifier). It's the client's responsibility to satisfy
-// this requirement. Element can be an array type itself (hence
-// multi-dimensional arrays are supported).
-template <typename Element>
-class NativeArray {
- public:
- // STL-style container typedefs.
- typedef Element value_type;
- typedef Element* iterator;
- typedef const Element* const_iterator;
-
- // Constructs from a native array. References the source.
- NativeArray(const Element* array, size_t count, RelationToSourceReference) {
- InitRef(array, count);
- }
-
- // Constructs from a native array. Copies the source.
- NativeArray(const Element* array, size_t count, RelationToSourceCopy) {
- InitCopy(array, count);
- }
-
- // Copy constructor.
- NativeArray(const NativeArray& rhs) {
- (this->*rhs.clone_)(rhs.array_, rhs.size_);
- }
-
- ~NativeArray() {
- if (clone_ != &NativeArray::InitRef)
- delete[] array_;
- }
-
- // STL-style container methods.
- size_t size() const { return size_; }
- const_iterator begin() const { return array_; }
- const_iterator end() const { return array_ + size_; }
- bool operator==(const NativeArray& rhs) const {
- return size() == rhs.size() &&
- ArrayEq(begin(), size(), rhs.begin());
- }
-
- private:
- static_assert(!std::is_const<Element>::value, "Type must not be const");
- static_assert(!std::is_reference<Element>::value,
- "Type must not be a reference");
-
- // Initializes this object with a copy of the input.
- void InitCopy(const Element* array, size_t a_size) {
- Element* const copy = new Element[a_size];
- CopyArray(array, a_size, copy);
- array_ = copy;
- size_ = a_size;
- clone_ = &NativeArray::InitCopy;
- }
-
- // Initializes this object with a reference of the input.
- void InitRef(const Element* array, size_t a_size) {
- array_ = array;
- size_ = a_size;
- clone_ = &NativeArray::InitRef;
- }
-
- const Element* array_;
- size_t size_;
- void (NativeArray::*clone_)(const Element*, size_t);
-
- GTEST_DISALLOW_ASSIGN_(NativeArray);
-};
-
-// Backport of std::index_sequence.
-template <size_t... Is>
-struct IndexSequence {
- using type = IndexSequence;
-};
-
-// Double the IndexSequence, and one if plus_one is true.
-template <bool plus_one, typename T, size_t sizeofT>
-struct DoubleSequence;
-template <size_t... I, size_t sizeofT>
-struct DoubleSequence<true, IndexSequence<I...>, sizeofT> {
- using type = IndexSequence<I..., (sizeofT + I)..., 2 * sizeofT>;
-};
-template <size_t... I, size_t sizeofT>
-struct DoubleSequence<false, IndexSequence<I...>, sizeofT> {
- using type = IndexSequence<I..., (sizeofT + I)...>;
-};
-
-// Backport of std::make_index_sequence.
-// It uses O(ln(N)) instantiation depth.
-template <size_t N>
-struct MakeIndexSequence
- : DoubleSequence<N % 2 == 1, typename MakeIndexSequence<N / 2>::type,
- N / 2>::type {};
-
-template <>
-struct MakeIndexSequence<0> : IndexSequence<> {};
-
-// FIXME: This implementation of ElemFromList is O(1) in instantiation depth,
-// but it is O(N^2) in total instantiations. Not sure if this is the best
-// tradeoff, as it will make it somewhat slow to compile.
-template <typename T, size_t, size_t>
-struct ElemFromListImpl {};
-
-template <typename T, size_t I>
-struct ElemFromListImpl<T, I, I> {
- using type = T;
-};
-
-// Get the Nth element from T...
-// It uses O(1) instantiation depth.
-template <size_t N, typename I, typename... T>
-struct ElemFromList;
-
-template <size_t N, size_t... I, typename... T>
-struct ElemFromList<N, IndexSequence<I...>, T...>
- : ElemFromListImpl<T, N, I>... {};
-
-template <typename... T>
-class FlatTuple;
-
-template <typename Derived, size_t I>
-struct FlatTupleElemBase;
-
-template <typename... T, size_t I>
-struct FlatTupleElemBase<FlatTuple<T...>, I> {
- using value_type =
- typename ElemFromList<I, typename MakeIndexSequence<sizeof...(T)>::type,
- T...>::type;
- FlatTupleElemBase() = default;
- explicit FlatTupleElemBase(value_type t) : value(std::move(t)) {}
- value_type value;
-};
-
-template <typename Derived, typename Idx>
-struct FlatTupleBase;
-
-template <size_t... Idx, typename... T>
-struct FlatTupleBase<FlatTuple<T...>, IndexSequence<Idx...>>
- : FlatTupleElemBase<FlatTuple<T...>, Idx>... {
- using Indices = IndexSequence<Idx...>;
- FlatTupleBase() = default;
- explicit FlatTupleBase(T... t)
- : FlatTupleElemBase<FlatTuple<T...>, Idx>(std::move(t))... {}
-};
-
-// Analog to std::tuple but with different tradeoffs.
-// This class minimizes the template instantiation depth, thus allowing more
-// elements that std::tuple would. std::tuple has been seen to require an
-// instantiation depth of more than 10x the number of elements in some
-// implementations.
-// FlatTuple and ElemFromList are not recursive and have a fixed depth
-// regardless of T...
-// MakeIndexSequence, on the other hand, it is recursive but with an
-// instantiation depth of O(ln(N)).
-template <typename... T>
-class FlatTuple
- : private FlatTupleBase<FlatTuple<T...>,
- typename MakeIndexSequence<sizeof...(T)>::type> {
- using Indices = typename FlatTuple::FlatTupleBase::Indices;
-
- public:
- FlatTuple() = default;
- explicit FlatTuple(T... t) : FlatTuple::FlatTupleBase(std::move(t)...) {}
-
- template <size_t I>
- const typename ElemFromList<I, Indices, T...>::type& Get() const {
- return static_cast<const FlatTupleElemBase<FlatTuple, I>*>(this)->value;
- }
-
- template <size_t I>
- typename ElemFromList<I, Indices, T...>::type& Get() {
- return static_cast<FlatTupleElemBase<FlatTuple, I>*>(this)->value;
- }
-};
-
-// Utility functions to be called with static_assert to induce deprecation
-// warnings.
-GTEST_INTERNAL_DEPRECATED(
- "INSTANTIATE_TEST_CASE_P is deprecated, please use "
- "INSTANTIATE_TEST_SUITE_P")
-constexpr bool InstantiateTestCase_P_IsDeprecated() { return true; }
-
-GTEST_INTERNAL_DEPRECATED(
- "TYPED_TEST_CASE_P is deprecated, please use "
- "TYPED_TEST_SUITE_P")
-constexpr bool TypedTestCase_P_IsDeprecated() { return true; }
-
-GTEST_INTERNAL_DEPRECATED(
- "TYPED_TEST_CASE is deprecated, please use "
- "TYPED_TEST_SUITE")
-constexpr bool TypedTestCaseIsDeprecated() { return true; }
-
-GTEST_INTERNAL_DEPRECATED(
- "REGISTER_TYPED_TEST_CASE_P is deprecated, please use "
- "REGISTER_TYPED_TEST_SUITE_P")
-constexpr bool RegisterTypedTestCase_P_IsDeprecated() { return true; }
-
-GTEST_INTERNAL_DEPRECATED(
- "INSTANTIATE_TYPED_TEST_CASE_P is deprecated, please use "
- "INSTANTIATE_TYPED_TEST_SUITE_P")
-constexpr bool InstantiateTypedTestCase_P_IsDeprecated() { return true; }
-
-} // namespace internal
-} // namespace testing
-
-#define GTEST_MESSAGE_AT_(file, line, message, result_type) \
- ::testing::internal::AssertHelper(result_type, file, line, message) \
- = ::testing::Message()
-
-#define GTEST_MESSAGE_(message, result_type) \
- GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type)
-
-#define GTEST_FATAL_FAILURE_(message) \
- return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure)
-
-#define GTEST_NONFATAL_FAILURE_(message) \
- GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure)
-
-#define GTEST_SUCCESS_(message) \
- GTEST_MESSAGE_(message, ::testing::TestPartResult::kSuccess)
-
-#define GTEST_SKIP_(message) \
- return GTEST_MESSAGE_(message, ::testing::TestPartResult::kSkip)
-
-// Suppress MSVC warning 4072 (unreachable code) for the code following
-// statement if it returns or throws (or doesn't return or throw in some
-// situations).
-#define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) \
- if (::testing::internal::AlwaysTrue()) { statement; }
-
-#define GTEST_TEST_THROW_(statement, expected_exception, fail) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (::testing::internal::ConstCharPtr gtest_msg = "") { \
- bool gtest_caught_expected = false; \
- try { \
- GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
- } \
- catch (expected_exception const&) { \
- gtest_caught_expected = true; \
- } \
- catch (...) { \
- gtest_msg.value = \
- "Expected: " #statement " throws an exception of type " \
- #expected_exception ".\n Actual: it throws a different type."; \
- goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
- } \
- if (!gtest_caught_expected) { \
- gtest_msg.value = \
- "Expected: " #statement " throws an exception of type " \
- #expected_exception ".\n Actual: it throws nothing."; \
- goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
- } \
- } else \
- GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__): \
- fail(gtest_msg.value)
-
-#define GTEST_TEST_NO_THROW_(statement, fail) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (::testing::internal::AlwaysTrue()) { \
- try { \
- GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
- } \
- catch (...) { \
- goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \
- } \
- } else \
- GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__): \
- fail("Expected: " #statement " doesn't throw an exception.\n" \
- " Actual: it throws.")
-
-#define GTEST_TEST_ANY_THROW_(statement, fail) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (::testing::internal::AlwaysTrue()) { \
- bool gtest_caught_any = false; \
- try { \
- GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
- } \
- catch (...) { \
- gtest_caught_any = true; \
- } \
- if (!gtest_caught_any) { \
- goto GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__); \
- } \
- } else \
- GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__): \
- fail("Expected: " #statement " throws an exception.\n" \
- " Actual: it doesn't.")
-
-
-// Implements Boolean test assertions such as EXPECT_TRUE. expression can be
-// either a boolean expression or an AssertionResult. text is a textual
-// represenation of expression as it was passed into the EXPECT_TRUE.
-#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (const ::testing::AssertionResult gtest_ar_ = \
- ::testing::AssertionResult(expression)) \
- ; \
- else \
- fail(::testing::internal::GetBoolAssertionFailureMessage(\
- gtest_ar_, text, #actual, #expected).c_str())
-
-#define GTEST_TEST_NO_FATAL_FAILURE_(statement, fail) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (::testing::internal::AlwaysTrue()) { \
- ::testing::internal::HasNewFatalFailureHelper gtest_fatal_failure_checker; \
- GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
- if (gtest_fatal_failure_checker.has_new_fatal_failure()) { \
- goto GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__); \
- } \
- } else \
- GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__): \
- fail("Expected: " #statement " doesn't generate new fatal " \
- "failures in the current thread.\n" \
- " Actual: it does.")
-
-// Expands to the name of the class that implements the given test.
-#define GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) \
- test_suite_name##_##test_name##_Test
-
-// Helper macro for defining tests.
-#define GTEST_TEST_(test_suite_name, test_name, parent_class, parent_id) \
- static_assert(sizeof(GTEST_STRINGIFY_(test_suite_name)) > 1, \
- "test_suite_name must not be empty"); \
- static_assert(sizeof(GTEST_STRINGIFY_(test_name)) > 1, \
- "test_name must not be empty"); \
- class GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) \
- : public parent_class { \
- public: \
- GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() {} \
- \
- private: \
- virtual void TestBody(); \
- static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_; \
- GTEST_DISALLOW_COPY_AND_ASSIGN_(GTEST_TEST_CLASS_NAME_(test_suite_name, \
- test_name)); \
- }; \
- \
- ::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_suite_name, \
- test_name)::test_info_ = \
- ::testing::internal::MakeAndRegisterTestInfo( \
- #test_suite_name, #test_name, nullptr, nullptr, \
- ::testing::internal::CodeLocation(__FILE__, __LINE__), (parent_id), \
- ::testing::internal::SuiteApiResolver< \
- parent_class>::GetSetUpCaseOrSuite(__FILE__, __LINE__), \
- ::testing::internal::SuiteApiResolver< \
- parent_class>::GetTearDownCaseOrSuite(__FILE__, __LINE__), \
- new ::testing::internal::TestFactoryImpl<GTEST_TEST_CLASS_NAME_( \
- test_suite_name, test_name)>); \
- void GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::TestBody()
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-linked_ptr.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-linked_ptr.h
deleted file mode 100644
index 082b87289ae..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-linked_ptr.h
+++ /dev/null
@@ -1,243 +0,0 @@
-// Copyright 2003 Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// A "smart" pointer type with reference tracking. Every pointer to a
-// particular object is kept on a circular linked list. When the last pointer
-// to an object is destroyed or reassigned, the object is deleted.
-//
-// Used properly, this deletes the object when the last reference goes away.
-// There are several caveats:
-// - Like all reference counting schemes, cycles lead to leaks.
-// - Each smart pointer is actually two pointers (8 bytes instead of 4).
-// - Every time a pointer is assigned, the entire list of pointers to that
-// object is traversed. This class is therefore NOT SUITABLE when there
-// will often be more than two or three pointers to a particular object.
-// - References are only tracked as long as linked_ptr<> objects are copied.
-// If a linked_ptr<> is converted to a raw pointer and back, BAD THINGS
-// will happen (double deletion).
-//
-// A good use of this class is storing object references in STL containers.
-// You can safely put linked_ptr<> in a vector<>.
-// Other uses may not be as good.
-//
-// Note: If you use an incomplete type with linked_ptr<>, the class
-// *containing* linked_ptr<> must have a constructor and destructor (even
-// if they do nothing!).
-//
-// Bill Gibbons suggested we use something like this.
-//
-// Thread Safety:
-// Unlike other linked_ptr implementations, in this implementation
-// a linked_ptr object is thread-safe in the sense that:
-// - it's safe to copy linked_ptr objects concurrently,
-// - it's safe to copy *from* a linked_ptr and read its underlying
-// raw pointer (e.g. via get()) concurrently, and
-// - it's safe to write to two linked_ptrs that point to the same
-// shared object concurrently.
-// FIXME: rename this to safe_linked_ptr to avoid
-// confusion with normal linked_ptr.
-
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_
-
-#include <stdlib.h>
-#include <assert.h>
-
-#include "gtest/internal/gtest-port.h"
-
-namespace testing {
-namespace internal {
-
-// Protects copying of all linked_ptr objects.
-GTEST_API_ GTEST_DECLARE_STATIC_MUTEX_(g_linked_ptr_mutex);
-
-// This is used internally by all instances of linked_ptr<>. It needs to be
-// a non-template class because different types of linked_ptr<> can refer to
-// the same object (linked_ptr<Superclass>(obj) vs linked_ptr<Subclass>(obj)).
-// So, it needs to be possible for different types of linked_ptr to participate
-// in the same circular linked list, so we need a single class type here.
-//
-// DO NOT USE THIS CLASS DIRECTLY YOURSELF. Use linked_ptr<T>.
-class linked_ptr_internal {
- public:
- // Create a new circle that includes only this instance.
- void join_new() {
- next_ = this;
- }
-
- // Many linked_ptr operations may change p.link_ for some linked_ptr
- // variable p in the same circle as this object. Therefore we need
- // to prevent two such operations from occurring concurrently.
- //
- // Note that different types of linked_ptr objects can coexist in a
- // circle (e.g. linked_ptr<Base>, linked_ptr<Derived1>, and
- // linked_ptr<Derived2>). Therefore we must use a single mutex to
- // protect all linked_ptr objects. This can create serious
- // contention in production code, but is acceptable in a testing
- // framework.
-
- // Join an existing circle.
- void join(linked_ptr_internal const* ptr)
- GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) {
- MutexLock lock(&g_linked_ptr_mutex);
-
- linked_ptr_internal const* p = ptr;
- while (p->next_ != ptr) {
- assert(p->next_ != this &&
- "Trying to join() a linked ring we are already in. "
- "Is GMock thread safety enabled?");
- p = p->next_;
- }
- p->next_ = this;
- next_ = ptr;
- }
-
- // Leave whatever circle we're part of. Returns true if we were the
- // last member of the circle. Once this is done, you can join() another.
- bool depart()
- GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) {
- MutexLock lock(&g_linked_ptr_mutex);
-
- if (next_ == this) return true;
- linked_ptr_internal const* p = next_;
- while (p->next_ != this) {
- assert(p->next_ != next_ &&
- "Trying to depart() a linked ring we are not in. "
- "Is GMock thread safety enabled?");
- p = p->next_;
- }
- p->next_ = next_;
- return false;
- }
-
- private:
- mutable linked_ptr_internal const* next_;
-};
-
-template <typename T>
-class linked_ptr {
- public:
- typedef T element_type;
-
- // Take over ownership of a raw pointer. This should happen as soon as
- // possible after the object is created.
- explicit linked_ptr(T* ptr = NULL) { capture(ptr); }
- ~linked_ptr() { depart(); }
-
- // Copy an existing linked_ptr<>, adding ourselves to the list of references.
- template <typename U> linked_ptr(linked_ptr<U> const& ptr) { copy(&ptr); }
- linked_ptr(linked_ptr const& ptr) { // NOLINT
- assert(&ptr != this);
- copy(&ptr);
- }
-
- // Assignment releases the old value and acquires the new.
- template <typename U> linked_ptr& operator=(linked_ptr<U> const& ptr) {
- depart();
- copy(&ptr);
- return *this;
- }
-
- linked_ptr& operator=(linked_ptr const& ptr) {
- if (&ptr != this) {
- depart();
- copy(&ptr);
- }
- return *this;
- }
-
- // Smart pointer members.
- void reset(T* ptr = NULL) {
- depart();
- capture(ptr);
- }
- T* get() const { return value_; }
- T* operator->() const { return value_; }
- T& operator*() const { return *value_; }
-
- bool operator==(T* p) const { return value_ == p; }
- bool operator!=(T* p) const { return value_ != p; }
- template <typename U>
- bool operator==(linked_ptr<U> const& ptr) const {
- return value_ == ptr.get();
- }
- template <typename U>
- bool operator!=(linked_ptr<U> const& ptr) const {
- return value_ != ptr.get();
- }
-
- private:
- template <typename U>
- friend class linked_ptr;
-
- T* value_;
- linked_ptr_internal link_;
-
- void depart() {
- if (link_.depart()) delete value_;
- }
-
- void capture(T* ptr) {
- value_ = ptr;
- link_.join_new();
- }
-
- template <typename U> void copy(linked_ptr<U> const* ptr) {
- value_ = ptr->get();
- if (value_)
- link_.join(&ptr->link_);
- else
- link_.join_new();
- }
-};
-
-template<typename T> inline
-bool operator==(T* ptr, const linked_ptr<T>& x) {
- return ptr == x.get();
-}
-
-template<typename T> inline
-bool operator!=(T* ptr, const linked_ptr<T>& x) {
- return ptr != x.get();
-}
-
-// A function to convert T* into linked_ptr<T>
-// Doing e.g. make_linked_ptr(new FooBarBaz<type>(arg)) is a shorter notation
-// for linked_ptr<FooBarBaz<type> >(new FooBarBaz<type>(arg))
-template <typename T>
-linked_ptr<T> make_linked_ptr(T* ptr) {
- return linked_ptr<T>(ptr);
-}
-
-} // namespace internal
-} // namespace testing
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-param-util-generated.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-param-util-generated.h
deleted file mode 100644
index 4fac8c02703..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-param-util-generated.h
+++ /dev/null
@@ -1,5552 +0,0 @@
-// This file was GENERATED by command:
-// pump.py gtest-param-util-generated.h.pump
-// DO NOT EDIT BY HAND!!!
-
-// Copyright 2008 Google Inc.
-// All Rights Reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Type and function utilities for implementing parameterized tests.
-// This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
-//
-// Currently Google Test supports at most 50 arguments in Values,
-// and at most 10 arguments in Combine. Please contact
-// googletestframework@googlegroups.com if you need more.
-// Please note that the number of arguments to Combine is limited
-// by the maximum arity of the implementation of tuple which is
-// currently set at 10.
-
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
-
-#include "gtest/internal/gtest-param-util.h"
-#include "gtest/internal/gtest-port.h"
-
-namespace testing {
-
-// Forward declarations of ValuesIn(), which is implemented in
-// include/gtest/gtest-param-test.h.
-template <typename ForwardIterator>
-internal::ParamGenerator<
- typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
-ValuesIn(ForwardIterator begin, ForwardIterator end);
-
-template <typename T, size_t N>
-internal::ParamGenerator<T> ValuesIn(const T (&array)[N]);
-
-template <class Container>
-internal::ParamGenerator<typename Container::value_type> ValuesIn(
- const Container& container);
-
-namespace internal {
-
-// Used in the Values() function to provide polymorphic capabilities.
-template <typename T1>
-class ValueArray1 {
- public:
- explicit ValueArray1(T1 v1) : v1_(v1) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_)};
- return ValuesIn(array);
- }
-
- ValueArray1(const ValueArray1& other) : v1_(other.v1_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray1& other);
-
- const T1 v1_;
-};
-
-template <typename T1, typename T2>
-class ValueArray2 {
- public:
- ValueArray2(T1 v1, T2 v2) : v1_(v1), v2_(v2) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_)};
- return ValuesIn(array);
- }
-
- ValueArray2(const ValueArray2& other) : v1_(other.v1_), v2_(other.v2_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray2& other);
-
- const T1 v1_;
- const T2 v2_;
-};
-
-template <typename T1, typename T2, typename T3>
-class ValueArray3 {
- public:
- ValueArray3(T1 v1, T2 v2, T3 v3) : v1_(v1), v2_(v2), v3_(v3) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_)};
- return ValuesIn(array);
- }
-
- ValueArray3(const ValueArray3& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray3& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4>
-class ValueArray4 {
- public:
- ValueArray4(T1 v1, T2 v2, T3 v3, T4 v4) : v1_(v1), v2_(v2), v3_(v3),
- v4_(v4) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_)};
- return ValuesIn(array);
- }
-
- ValueArray4(const ValueArray4& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray4& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5>
-class ValueArray5 {
- public:
- ValueArray5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) : v1_(v1), v2_(v2), v3_(v3),
- v4_(v4), v5_(v5) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_)};
- return ValuesIn(array);
- }
-
- ValueArray5(const ValueArray5& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray5& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6>
-class ValueArray6 {
- public:
- ValueArray6(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) : v1_(v1), v2_(v2),
- v3_(v3), v4_(v4), v5_(v5), v6_(v6) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_)};
- return ValuesIn(array);
- }
-
- ValueArray6(const ValueArray6& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray6& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7>
-class ValueArray7 {
- public:
- ValueArray7(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) : v1_(v1),
- v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_)};
- return ValuesIn(array);
- }
-
- ValueArray7(const ValueArray7& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray7& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8>
-class ValueArray8 {
- public:
- ValueArray8(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
- T8 v8) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_)};
- return ValuesIn(array);
- }
-
- ValueArray8(const ValueArray8& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray8& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9>
-class ValueArray9 {
- public:
- ValueArray9(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
- T9 v9) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_)};
- return ValuesIn(array);
- }
-
- ValueArray9(const ValueArray9& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray9& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10>
-class ValueArray10 {
- public:
- ValueArray10(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9), v10_(v10) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_)};
- return ValuesIn(array);
- }
-
- ValueArray10(const ValueArray10& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray10& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11>
-class ValueArray11 {
- public:
- ValueArray11(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
- v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_)};
- return ValuesIn(array);
- }
-
- ValueArray11(const ValueArray11& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray11& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12>
-class ValueArray12 {
- public:
- ValueArray12(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
- v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_)};
- return ValuesIn(array);
- }
-
- ValueArray12(const ValueArray12& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray12& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13>
-class ValueArray13 {
- public:
- ValueArray13(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
- v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
- v12_(v12), v13_(v13) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_)};
- return ValuesIn(array);
- }
-
- ValueArray13(const ValueArray13& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray13& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14>
-class ValueArray14 {
- public:
- ValueArray14(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) : v1_(v1), v2_(v2), v3_(v3),
- v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
- v11_(v11), v12_(v12), v13_(v13), v14_(v14) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_)};
- return ValuesIn(array);
- }
-
- ValueArray14(const ValueArray14& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray14& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15>
-class ValueArray15 {
- public:
- ValueArray15(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) : v1_(v1), v2_(v2),
- v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
- v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_)};
- return ValuesIn(array);
- }
-
- ValueArray15(const ValueArray15& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray15& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16>
-class ValueArray16 {
- public:
- ValueArray16(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16) : v1_(v1),
- v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
- v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
- v16_(v16) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_)};
- return ValuesIn(array);
- }
-
- ValueArray16(const ValueArray16& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray16& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17>
-class ValueArray17 {
- public:
- ValueArray17(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
- T17 v17) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
- v15_(v15), v16_(v16), v17_(v17) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_)};
- return ValuesIn(array);
- }
-
- ValueArray17(const ValueArray17& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray17& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18>
-class ValueArray18 {
- public:
- ValueArray18(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
- v15_(v15), v16_(v16), v17_(v17), v18_(v18) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_)};
- return ValuesIn(array);
- }
-
- ValueArray18(const ValueArray18& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray18& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19>
-class ValueArray19 {
- public:
- ValueArray19(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
- v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
- v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_)};
- return ValuesIn(array);
- }
-
- ValueArray19(const ValueArray19& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray19& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20>
-class ValueArray20 {
- public:
- ValueArray20(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
- v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
- v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
- v19_(v19), v20_(v20) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_)};
- return ValuesIn(array);
- }
-
- ValueArray20(const ValueArray20& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray20& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21>
-class ValueArray21 {
- public:
- ValueArray21(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
- v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
- v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
- v18_(v18), v19_(v19), v20_(v20), v21_(v21) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_)};
- return ValuesIn(array);
- }
-
- ValueArray21(const ValueArray21& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray21& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22>
-class ValueArray22 {
- public:
- ValueArray22(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) : v1_(v1), v2_(v2), v3_(v3),
- v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
- v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
- v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_)};
- return ValuesIn(array);
- }
-
- ValueArray22(const ValueArray22& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray22& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23>
-class ValueArray23 {
- public:
- ValueArray23(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) : v1_(v1), v2_(v2),
- v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
- v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
- v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
- v23_(v23) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_)};
- return ValuesIn(array);
- }
-
- ValueArray23(const ValueArray23& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray23& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24>
-class ValueArray24 {
- public:
- ValueArray24(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) : v1_(v1),
- v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
- v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
- v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
- v22_(v22), v23_(v23), v24_(v24) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_)};
- return ValuesIn(array);
- }
-
- ValueArray24(const ValueArray24& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray24& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25>
-class ValueArray25 {
- public:
- ValueArray25(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
- T25 v25) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
- v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
- v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_)};
- return ValuesIn(array);
- }
-
- ValueArray25(const ValueArray25& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray25& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26>
-class ValueArray26 {
- public:
- ValueArray26(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
- v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
- v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_)};
- return ValuesIn(array);
- }
-
- ValueArray26(const ValueArray26& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray26& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27>
-class ValueArray27 {
- public:
- ValueArray27(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
- v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
- v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
- v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
- v26_(v26), v27_(v27) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_)};
- return ValuesIn(array);
- }
-
- ValueArray27(const ValueArray27& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray27& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28>
-class ValueArray28 {
- public:
- ValueArray28(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
- v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
- v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
- v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
- v25_(v25), v26_(v26), v27_(v27), v28_(v28) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_)};
- return ValuesIn(array);
- }
-
- ValueArray28(const ValueArray28& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_), v28_(other.v28_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray28& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29>
-class ValueArray29 {
- public:
- ValueArray29(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
- v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
- v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
- v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
- v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_)};
- return ValuesIn(array);
- }
-
- ValueArray29(const ValueArray29& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_), v28_(other.v28_), v29_(other.v29_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray29& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30>
-class ValueArray30 {
- public:
- ValueArray30(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) : v1_(v1), v2_(v2), v3_(v3),
- v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
- v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
- v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
- v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
- v29_(v29), v30_(v30) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_)};
- return ValuesIn(array);
- }
-
- ValueArray30(const ValueArray30& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_), v28_(other.v28_), v29_(other.v29_), v30_(other.v30_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray30& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31>
-class ValueArray31 {
- public:
- ValueArray31(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) : v1_(v1), v2_(v2),
- v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
- v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
- v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
- v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
- v29_(v29), v30_(v30), v31_(v31) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_)};
- return ValuesIn(array);
- }
-
- ValueArray31(const ValueArray31& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_), v28_(other.v28_), v29_(other.v29_), v30_(other.v30_),
- v31_(other.v31_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray31& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32>
-class ValueArray32 {
- public:
- ValueArray32(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) : v1_(v1),
- v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
- v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
- v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
- v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
- v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_)};
- return ValuesIn(array);
- }
-
- ValueArray32(const ValueArray32& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_), v28_(other.v28_), v29_(other.v29_), v30_(other.v30_),
- v31_(other.v31_), v32_(other.v32_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray32& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33>
-class ValueArray33 {
- public:
- ValueArray33(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32,
- T33 v33) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
- v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
- v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
- v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
- v33_(v33) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_)};
- return ValuesIn(array);
- }
-
- ValueArray33(const ValueArray33& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_), v28_(other.v28_), v29_(other.v29_), v30_(other.v30_),
- v31_(other.v31_), v32_(other.v32_), v33_(other.v33_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray33& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34>
-class ValueArray34 {
- public:
- ValueArray34(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
- v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
- v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
- v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
- v33_(v33), v34_(v34) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_)};
- return ValuesIn(array);
- }
-
- ValueArray34(const ValueArray34& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_), v28_(other.v28_), v29_(other.v29_), v30_(other.v30_),
- v31_(other.v31_), v32_(other.v32_), v33_(other.v33_), v34_(other.v34_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray34& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35>
-class ValueArray35 {
- public:
- ValueArray35(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
- v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
- v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
- v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
- v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31),
- v32_(v32), v33_(v33), v34_(v34), v35_(v35) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_)};
- return ValuesIn(array);
- }
-
- ValueArray35(const ValueArray35& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_), v28_(other.v28_), v29_(other.v29_), v30_(other.v30_),
- v31_(other.v31_), v32_(other.v32_), v33_(other.v33_), v34_(other.v34_),
- v35_(other.v35_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray35& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36>
-class ValueArray36 {
- public:
- ValueArray36(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
- v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
- v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
- v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
- v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30),
- v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_)};
- return ValuesIn(array);
- }
-
- ValueArray36(const ValueArray36& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_), v28_(other.v28_), v29_(other.v29_), v30_(other.v30_),
- v31_(other.v31_), v32_(other.v32_), v33_(other.v33_), v34_(other.v34_),
- v35_(other.v35_), v36_(other.v36_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray36& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37>
-class ValueArray37 {
- public:
- ValueArray37(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
- v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
- v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
- v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
- v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29),
- v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35),
- v36_(v36), v37_(v37) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_)};
- return ValuesIn(array);
- }
-
- ValueArray37(const ValueArray37& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_), v28_(other.v28_), v29_(other.v29_), v30_(other.v30_),
- v31_(other.v31_), v32_(other.v32_), v33_(other.v33_), v34_(other.v34_),
- v35_(other.v35_), v36_(other.v36_), v37_(other.v37_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray37& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38>
-class ValueArray38 {
- public:
- ValueArray38(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) : v1_(v1), v2_(v2), v3_(v3),
- v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
- v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
- v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
- v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
- v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
- v35_(v35), v36_(v36), v37_(v37), v38_(v38) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_)};
- return ValuesIn(array);
- }
-
- ValueArray38(const ValueArray38& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_), v28_(other.v28_), v29_(other.v29_), v30_(other.v30_),
- v31_(other.v31_), v32_(other.v32_), v33_(other.v33_), v34_(other.v34_),
- v35_(other.v35_), v36_(other.v36_), v37_(other.v37_), v38_(other.v38_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray38& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39>
-class ValueArray39 {
- public:
- ValueArray39(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) : v1_(v1), v2_(v2),
- v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
- v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
- v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
- v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
- v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
- v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_)};
- return ValuesIn(array);
- }
-
- ValueArray39(const ValueArray39& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_), v28_(other.v28_), v29_(other.v29_), v30_(other.v30_),
- v31_(other.v31_), v32_(other.v32_), v33_(other.v33_), v34_(other.v34_),
- v35_(other.v35_), v36_(other.v36_), v37_(other.v37_), v38_(other.v38_),
- v39_(other.v39_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray39& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40>
-class ValueArray40 {
- public:
- ValueArray40(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) : v1_(v1),
- v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
- v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
- v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
- v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
- v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33),
- v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39),
- v40_(v40) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_), static_cast<T>(v40_)};
- return ValuesIn(array);
- }
-
- ValueArray40(const ValueArray40& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_), v28_(other.v28_), v29_(other.v29_), v30_(other.v30_),
- v31_(other.v31_), v32_(other.v32_), v33_(other.v33_), v34_(other.v34_),
- v35_(other.v35_), v36_(other.v36_), v37_(other.v37_), v38_(other.v38_),
- v39_(other.v39_), v40_(other.v40_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray40& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
- const T40 v40_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41>
-class ValueArray41 {
- public:
- ValueArray41(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40,
- T41 v41) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
- v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
- v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
- v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
- v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
- v39_(v39), v40_(v40), v41_(v41) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_)};
- return ValuesIn(array);
- }
-
- ValueArray41(const ValueArray41& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_), v28_(other.v28_), v29_(other.v29_), v30_(other.v30_),
- v31_(other.v31_), v32_(other.v32_), v33_(other.v33_), v34_(other.v34_),
- v35_(other.v35_), v36_(other.v36_), v37_(other.v37_), v38_(other.v38_),
- v39_(other.v39_), v40_(other.v40_), v41_(other.v41_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray41& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
- const T40 v40_;
- const T41 v41_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42>
-class ValueArray42 {
- public:
- ValueArray42(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
- T42 v42) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
- v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
- v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
- v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
- v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
- v39_(v39), v40_(v40), v41_(v41), v42_(v42) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
- static_cast<T>(v42_)};
- return ValuesIn(array);
- }
-
- ValueArray42(const ValueArray42& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_), v28_(other.v28_), v29_(other.v29_), v30_(other.v30_),
- v31_(other.v31_), v32_(other.v32_), v33_(other.v33_), v34_(other.v34_),
- v35_(other.v35_), v36_(other.v36_), v37_(other.v37_), v38_(other.v38_),
- v39_(other.v39_), v40_(other.v40_), v41_(other.v41_), v42_(other.v42_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray42& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
- const T40 v40_;
- const T41 v41_;
- const T42 v42_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43>
-class ValueArray43 {
- public:
- ValueArray43(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
- T42 v42, T43 v43) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
- v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
- v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
- v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
- v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31),
- v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37),
- v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
- static_cast<T>(v42_), static_cast<T>(v43_)};
- return ValuesIn(array);
- }
-
- ValueArray43(const ValueArray43& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_), v28_(other.v28_), v29_(other.v29_), v30_(other.v30_),
- v31_(other.v31_), v32_(other.v32_), v33_(other.v33_), v34_(other.v34_),
- v35_(other.v35_), v36_(other.v36_), v37_(other.v37_), v38_(other.v38_),
- v39_(other.v39_), v40_(other.v40_), v41_(other.v41_), v42_(other.v42_),
- v43_(other.v43_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray43& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
- const T40 v40_;
- const T41 v41_;
- const T42 v42_;
- const T43 v43_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44>
-class ValueArray44 {
- public:
- ValueArray44(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
- T42 v42, T43 v43, T44 v44) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
- v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
- v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
- v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
- v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30),
- v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36),
- v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42),
- v43_(v43), v44_(v44) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
- static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_)};
- return ValuesIn(array);
- }
-
- ValueArray44(const ValueArray44& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_), v28_(other.v28_), v29_(other.v29_), v30_(other.v30_),
- v31_(other.v31_), v32_(other.v32_), v33_(other.v33_), v34_(other.v34_),
- v35_(other.v35_), v36_(other.v36_), v37_(other.v37_), v38_(other.v38_),
- v39_(other.v39_), v40_(other.v40_), v41_(other.v41_), v42_(other.v42_),
- v43_(other.v43_), v44_(other.v44_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray44& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
- const T40 v40_;
- const T41 v41_;
- const T42 v42_;
- const T43 v43_;
- const T44 v44_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45>
-class ValueArray45 {
- public:
- ValueArray45(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
- T42 v42, T43 v43, T44 v44, T45 v45) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
- v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
- v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
- v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
- v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29),
- v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35),
- v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41),
- v42_(v42), v43_(v43), v44_(v44), v45_(v45) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
- static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
- static_cast<T>(v45_)};
- return ValuesIn(array);
- }
-
- ValueArray45(const ValueArray45& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_), v28_(other.v28_), v29_(other.v29_), v30_(other.v30_),
- v31_(other.v31_), v32_(other.v32_), v33_(other.v33_), v34_(other.v34_),
- v35_(other.v35_), v36_(other.v36_), v37_(other.v37_), v38_(other.v38_),
- v39_(other.v39_), v40_(other.v40_), v41_(other.v41_), v42_(other.v42_),
- v43_(other.v43_), v44_(other.v44_), v45_(other.v45_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray45& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
- const T40 v40_;
- const T41 v41_;
- const T42 v42_;
- const T43 v43_;
- const T44 v44_;
- const T45 v45_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46>
-class ValueArray46 {
- public:
- ValueArray46(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
- T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) : v1_(v1), v2_(v2), v3_(v3),
- v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
- v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
- v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
- v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
- v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
- v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40),
- v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
- static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
- static_cast<T>(v45_), static_cast<T>(v46_)};
- return ValuesIn(array);
- }
-
- ValueArray46(const ValueArray46& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_), v28_(other.v28_), v29_(other.v29_), v30_(other.v30_),
- v31_(other.v31_), v32_(other.v32_), v33_(other.v33_), v34_(other.v34_),
- v35_(other.v35_), v36_(other.v36_), v37_(other.v37_), v38_(other.v38_),
- v39_(other.v39_), v40_(other.v40_), v41_(other.v41_), v42_(other.v42_),
- v43_(other.v43_), v44_(other.v44_), v45_(other.v45_), v46_(other.v46_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray46& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
- const T40 v40_;
- const T41 v41_;
- const T42 v42_;
- const T43 v43_;
- const T44 v44_;
- const T45 v45_;
- const T46 v46_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47>
-class ValueArray47 {
- public:
- ValueArray47(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
- T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) : v1_(v1), v2_(v2),
- v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
- v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
- v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
- v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
- v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
- v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40),
- v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46),
- v47_(v47) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
- static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
- static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_)};
- return ValuesIn(array);
- }
-
- ValueArray47(const ValueArray47& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_), v28_(other.v28_), v29_(other.v29_), v30_(other.v30_),
- v31_(other.v31_), v32_(other.v32_), v33_(other.v33_), v34_(other.v34_),
- v35_(other.v35_), v36_(other.v36_), v37_(other.v37_), v38_(other.v38_),
- v39_(other.v39_), v40_(other.v40_), v41_(other.v41_), v42_(other.v42_),
- v43_(other.v43_), v44_(other.v44_), v45_(other.v45_), v46_(other.v46_),
- v47_(other.v47_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray47& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
- const T40 v40_;
- const T41 v41_;
- const T42 v42_;
- const T43 v43_;
- const T44 v44_;
- const T45 v45_;
- const T46 v46_;
- const T47 v47_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47, typename T48>
-class ValueArray48 {
- public:
- ValueArray48(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
- T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) : v1_(v1),
- v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
- v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
- v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
- v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
- v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33),
- v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39),
- v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45),
- v46_(v46), v47_(v47), v48_(v48) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
- static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
- static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_),
- static_cast<T>(v48_)};
- return ValuesIn(array);
- }
-
- ValueArray48(const ValueArray48& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_), v28_(other.v28_), v29_(other.v29_), v30_(other.v30_),
- v31_(other.v31_), v32_(other.v32_), v33_(other.v33_), v34_(other.v34_),
- v35_(other.v35_), v36_(other.v36_), v37_(other.v37_), v38_(other.v38_),
- v39_(other.v39_), v40_(other.v40_), v41_(other.v41_), v42_(other.v42_),
- v43_(other.v43_), v44_(other.v44_), v45_(other.v45_), v46_(other.v46_),
- v47_(other.v47_), v48_(other.v48_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray48& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
- const T40 v40_;
- const T41 v41_;
- const T42 v42_;
- const T43 v43_;
- const T44 v44_;
- const T45 v45_;
- const T46 v46_;
- const T47 v47_;
- const T48 v48_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47, typename T48, typename T49>
-class ValueArray49 {
- public:
- ValueArray49(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
- T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48,
- T49 v49) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
- v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
- v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
- v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
- v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
- v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44),
- v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
- static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
- static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_),
- static_cast<T>(v48_), static_cast<T>(v49_)};
- return ValuesIn(array);
- }
-
- ValueArray49(const ValueArray49& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_), v28_(other.v28_), v29_(other.v29_), v30_(other.v30_),
- v31_(other.v31_), v32_(other.v32_), v33_(other.v33_), v34_(other.v34_),
- v35_(other.v35_), v36_(other.v36_), v37_(other.v37_), v38_(other.v38_),
- v39_(other.v39_), v40_(other.v40_), v41_(other.v41_), v42_(other.v42_),
- v43_(other.v43_), v44_(other.v44_), v45_(other.v45_), v46_(other.v46_),
- v47_(other.v47_), v48_(other.v48_), v49_(other.v49_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray49& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
- const T40 v40_;
- const T41 v41_;
- const T42 v42_;
- const T43 v43_;
- const T44 v44_;
- const T45 v45_;
- const T46 v46_;
- const T47 v47_;
- const T48 v48_;
- const T49 v49_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47, typename T48, typename T49, typename T50>
-class ValueArray50 {
- public:
- ValueArray50(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
- T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49,
- T50 v50) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
- v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
- v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
- v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
- v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
- v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44),
- v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49), v50_(v50) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
- static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
- static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_),
- static_cast<T>(v48_), static_cast<T>(v49_), static_cast<T>(v50_)};
- return ValuesIn(array);
- }
-
- ValueArray50(const ValueArray50& other) : v1_(other.v1_), v2_(other.v2_),
- v3_(other.v3_), v4_(other.v4_), v5_(other.v5_), v6_(other.v6_),
- v7_(other.v7_), v8_(other.v8_), v9_(other.v9_), v10_(other.v10_),
- v11_(other.v11_), v12_(other.v12_), v13_(other.v13_), v14_(other.v14_),
- v15_(other.v15_), v16_(other.v16_), v17_(other.v17_), v18_(other.v18_),
- v19_(other.v19_), v20_(other.v20_), v21_(other.v21_), v22_(other.v22_),
- v23_(other.v23_), v24_(other.v24_), v25_(other.v25_), v26_(other.v26_),
- v27_(other.v27_), v28_(other.v28_), v29_(other.v29_), v30_(other.v30_),
- v31_(other.v31_), v32_(other.v32_), v33_(other.v33_), v34_(other.v34_),
- v35_(other.v35_), v36_(other.v36_), v37_(other.v37_), v38_(other.v38_),
- v39_(other.v39_), v40_(other.v40_), v41_(other.v41_), v42_(other.v42_),
- v43_(other.v43_), v44_(other.v44_), v45_(other.v45_), v46_(other.v46_),
- v47_(other.v47_), v48_(other.v48_), v49_(other.v49_), v50_(other.v50_) {}
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray50& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
- const T40 v40_;
- const T41 v41_;
- const T42 v42_;
- const T43 v43_;
- const T44 v44_;
- const T45 v45_;
- const T46 v46_;
- const T47 v47_;
- const T48 v48_;
- const T49 v49_;
- const T50 v50_;
-};
-
-# if GTEST_HAS_COMBINE
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Generates values from the Cartesian product of values produced
-// by the argument generators.
-//
-template <typename T1, typename T2>
-class CartesianProductGenerator2
- : public ParamGeneratorInterface< ::testing::tuple<T1, T2> > {
- public:
- typedef ::testing::tuple<T1, T2> ParamType;
-
- CartesianProductGenerator2(const ParamGenerator<T1>& g1,
- const ParamGenerator<T2>& g2)
- : g1_(g1), g2_(g2) {}
- virtual ~CartesianProductGenerator2() {}
-
- virtual ParamIteratorInterface<ParamType>* Begin() const {
- return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin());
- }
- virtual ParamIteratorInterface<ParamType>* End() const {
- return new Iterator(this, g1_, g1_.end(), g2_, g2_.end());
- }
-
- private:
- class Iterator : public ParamIteratorInterface<ParamType> {
- public:
- Iterator(const ParamGeneratorInterface<ParamType>* base,
- const ParamGenerator<T1>& g1,
- const typename ParamGenerator<T1>::iterator& current1,
- const ParamGenerator<T2>& g2,
- const typename ParamGenerator<T2>::iterator& current2)
- : base_(base),
- begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
- begin2_(g2.begin()), end2_(g2.end()), current2_(current2) {
- ComputeCurrentValue();
- }
- virtual ~Iterator() {}
-
- virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
- return base_;
- }
- // Advance should not be called on beyond-of-range iterators
- // so no component iterators must be beyond end of range, either.
- virtual void Advance() {
- assert(!AtEnd());
- ++current2_;
- if (current2_ == end2_) {
- current2_ = begin2_;
- ++current1_;
- }
- ComputeCurrentValue();
- }
- virtual ParamIteratorInterface<ParamType>* Clone() const {
- return new Iterator(*this);
- }
- virtual const ParamType* Current() const { return current_value_.get(); }
- virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- const Iterator* typed_other =
- CheckedDowncastToActualType<const Iterator>(&other);
- // We must report iterators equal if they both point beyond their
- // respective ranges. That can happen in a variety of fashions,
- // so we have to consult AtEnd().
- return (AtEnd() && typed_other->AtEnd()) ||
- (
- current1_ == typed_other->current1_ &&
- current2_ == typed_other->current2_);
- }
-
- private:
- Iterator(const Iterator& other)
- : base_(other.base_),
- begin1_(other.begin1_),
- end1_(other.end1_),
- current1_(other.current1_),
- begin2_(other.begin2_),
- end2_(other.end2_),
- current2_(other.current2_) {
- ComputeCurrentValue();
- }
-
- void ComputeCurrentValue() {
- if (!AtEnd())
- current_value_.reset(new ParamType(*current1_, *current2_));
- }
- bool AtEnd() const {
- // We must report iterator past the end of the range when either of the
- // component iterators has reached the end of its range.
- return
- current1_ == end1_ ||
- current2_ == end2_;
- }
-
- // No implementation - assignment is unsupported.
- void operator=(const Iterator& other);
-
- const ParamGeneratorInterface<ParamType>* const base_;
- // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
- // current[i]_ is the actual traversing iterator.
- const typename ParamGenerator<T1>::iterator begin1_;
- const typename ParamGenerator<T1>::iterator end1_;
- typename ParamGenerator<T1>::iterator current1_;
- const typename ParamGenerator<T2>::iterator begin2_;
- const typename ParamGenerator<T2>::iterator end2_;
- typename ParamGenerator<T2>::iterator current2_;
- linked_ptr<ParamType> current_value_;
- }; // class CartesianProductGenerator2::Iterator
-
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductGenerator2& other);
-
- const ParamGenerator<T1> g1_;
- const ParamGenerator<T2> g2_;
-}; // class CartesianProductGenerator2
-
-
-template <typename T1, typename T2, typename T3>
-class CartesianProductGenerator3
- : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3> > {
- public:
- typedef ::testing::tuple<T1, T2, T3> ParamType;
-
- CartesianProductGenerator3(const ParamGenerator<T1>& g1,
- const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3)
- : g1_(g1), g2_(g2), g3_(g3) {}
- virtual ~CartesianProductGenerator3() {}
-
- virtual ParamIteratorInterface<ParamType>* Begin() const {
- return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
- g3_.begin());
- }
- virtual ParamIteratorInterface<ParamType>* End() const {
- return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end());
- }
-
- private:
- class Iterator : public ParamIteratorInterface<ParamType> {
- public:
- Iterator(const ParamGeneratorInterface<ParamType>* base,
- const ParamGenerator<T1>& g1,
- const typename ParamGenerator<T1>::iterator& current1,
- const ParamGenerator<T2>& g2,
- const typename ParamGenerator<T2>::iterator& current2,
- const ParamGenerator<T3>& g3,
- const typename ParamGenerator<T3>::iterator& current3)
- : base_(base),
- begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
- begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
- begin3_(g3.begin()), end3_(g3.end()), current3_(current3) {
- ComputeCurrentValue();
- }
- virtual ~Iterator() {}
-
- virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
- return base_;
- }
- // Advance should not be called on beyond-of-range iterators
- // so no component iterators must be beyond end of range, either.
- virtual void Advance() {
- assert(!AtEnd());
- ++current3_;
- if (current3_ == end3_) {
- current3_ = begin3_;
- ++current2_;
- }
- if (current2_ == end2_) {
- current2_ = begin2_;
- ++current1_;
- }
- ComputeCurrentValue();
- }
- virtual ParamIteratorInterface<ParamType>* Clone() const {
- return new Iterator(*this);
- }
- virtual const ParamType* Current() const { return current_value_.get(); }
- virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- const Iterator* typed_other =
- CheckedDowncastToActualType<const Iterator>(&other);
- // We must report iterators equal if they both point beyond their
- // respective ranges. That can happen in a variety of fashions,
- // so we have to consult AtEnd().
- return (AtEnd() && typed_other->AtEnd()) ||
- (
- current1_ == typed_other->current1_ &&
- current2_ == typed_other->current2_ &&
- current3_ == typed_other->current3_);
- }
-
- private:
- Iterator(const Iterator& other)
- : base_(other.base_),
- begin1_(other.begin1_),
- end1_(other.end1_),
- current1_(other.current1_),
- begin2_(other.begin2_),
- end2_(other.end2_),
- current2_(other.current2_),
- begin3_(other.begin3_),
- end3_(other.end3_),
- current3_(other.current3_) {
- ComputeCurrentValue();
- }
-
- void ComputeCurrentValue() {
- if (!AtEnd())
- current_value_.reset(new ParamType(*current1_, *current2_, *current3_));
- }
- bool AtEnd() const {
- // We must report iterator past the end of the range when either of the
- // component iterators has reached the end of its range.
- return
- current1_ == end1_ ||
- current2_ == end2_ ||
- current3_ == end3_;
- }
-
- // No implementation - assignment is unsupported.
- void operator=(const Iterator& other);
-
- const ParamGeneratorInterface<ParamType>* const base_;
- // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
- // current[i]_ is the actual traversing iterator.
- const typename ParamGenerator<T1>::iterator begin1_;
- const typename ParamGenerator<T1>::iterator end1_;
- typename ParamGenerator<T1>::iterator current1_;
- const typename ParamGenerator<T2>::iterator begin2_;
- const typename ParamGenerator<T2>::iterator end2_;
- typename ParamGenerator<T2>::iterator current2_;
- const typename ParamGenerator<T3>::iterator begin3_;
- const typename ParamGenerator<T3>::iterator end3_;
- typename ParamGenerator<T3>::iterator current3_;
- linked_ptr<ParamType> current_value_;
- }; // class CartesianProductGenerator3::Iterator
-
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductGenerator3& other);
-
- const ParamGenerator<T1> g1_;
- const ParamGenerator<T2> g2_;
- const ParamGenerator<T3> g3_;
-}; // class CartesianProductGenerator3
-
-
-template <typename T1, typename T2, typename T3, typename T4>
-class CartesianProductGenerator4
- : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4> > {
- public:
- typedef ::testing::tuple<T1, T2, T3, T4> ParamType;
-
- CartesianProductGenerator4(const ParamGenerator<T1>& g1,
- const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
- const ParamGenerator<T4>& g4)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {}
- virtual ~CartesianProductGenerator4() {}
-
- virtual ParamIteratorInterface<ParamType>* Begin() const {
- return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
- g3_.begin(), g4_, g4_.begin());
- }
- virtual ParamIteratorInterface<ParamType>* End() const {
- return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
- g4_, g4_.end());
- }
-
- private:
- class Iterator : public ParamIteratorInterface<ParamType> {
- public:
- Iterator(const ParamGeneratorInterface<ParamType>* base,
- const ParamGenerator<T1>& g1,
- const typename ParamGenerator<T1>::iterator& current1,
- const ParamGenerator<T2>& g2,
- const typename ParamGenerator<T2>::iterator& current2,
- const ParamGenerator<T3>& g3,
- const typename ParamGenerator<T3>::iterator& current3,
- const ParamGenerator<T4>& g4,
- const typename ParamGenerator<T4>::iterator& current4)
- : base_(base),
- begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
- begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
- begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
- begin4_(g4.begin()), end4_(g4.end()), current4_(current4) {
- ComputeCurrentValue();
- }
- virtual ~Iterator() {}
-
- virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
- return base_;
- }
- // Advance should not be called on beyond-of-range iterators
- // so no component iterators must be beyond end of range, either.
- virtual void Advance() {
- assert(!AtEnd());
- ++current4_;
- if (current4_ == end4_) {
- current4_ = begin4_;
- ++current3_;
- }
- if (current3_ == end3_) {
- current3_ = begin3_;
- ++current2_;
- }
- if (current2_ == end2_) {
- current2_ = begin2_;
- ++current1_;
- }
- ComputeCurrentValue();
- }
- virtual ParamIteratorInterface<ParamType>* Clone() const {
- return new Iterator(*this);
- }
- virtual const ParamType* Current() const { return current_value_.get(); }
- virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- const Iterator* typed_other =
- CheckedDowncastToActualType<const Iterator>(&other);
- // We must report iterators equal if they both point beyond their
- // respective ranges. That can happen in a variety of fashions,
- // so we have to consult AtEnd().
- return (AtEnd() && typed_other->AtEnd()) ||
- (
- current1_ == typed_other->current1_ &&
- current2_ == typed_other->current2_ &&
- current3_ == typed_other->current3_ &&
- current4_ == typed_other->current4_);
- }
-
- private:
- Iterator(const Iterator& other)
- : base_(other.base_),
- begin1_(other.begin1_),
- end1_(other.end1_),
- current1_(other.current1_),
- begin2_(other.begin2_),
- end2_(other.end2_),
- current2_(other.current2_),
- begin3_(other.begin3_),
- end3_(other.end3_),
- current3_(other.current3_),
- begin4_(other.begin4_),
- end4_(other.end4_),
- current4_(other.current4_) {
- ComputeCurrentValue();
- }
-
- void ComputeCurrentValue() {
- if (!AtEnd())
- current_value_.reset(new ParamType(*current1_, *current2_, *current3_,
- *current4_));
- }
- bool AtEnd() const {
- // We must report iterator past the end of the range when either of the
- // component iterators has reached the end of its range.
- return
- current1_ == end1_ ||
- current2_ == end2_ ||
- current3_ == end3_ ||
- current4_ == end4_;
- }
-
- // No implementation - assignment is unsupported.
- void operator=(const Iterator& other);
-
- const ParamGeneratorInterface<ParamType>* const base_;
- // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
- // current[i]_ is the actual traversing iterator.
- const typename ParamGenerator<T1>::iterator begin1_;
- const typename ParamGenerator<T1>::iterator end1_;
- typename ParamGenerator<T1>::iterator current1_;
- const typename ParamGenerator<T2>::iterator begin2_;
- const typename ParamGenerator<T2>::iterator end2_;
- typename ParamGenerator<T2>::iterator current2_;
- const typename ParamGenerator<T3>::iterator begin3_;
- const typename ParamGenerator<T3>::iterator end3_;
- typename ParamGenerator<T3>::iterator current3_;
- const typename ParamGenerator<T4>::iterator begin4_;
- const typename ParamGenerator<T4>::iterator end4_;
- typename ParamGenerator<T4>::iterator current4_;
- linked_ptr<ParamType> current_value_;
- }; // class CartesianProductGenerator4::Iterator
-
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductGenerator4& other);
-
- const ParamGenerator<T1> g1_;
- const ParamGenerator<T2> g2_;
- const ParamGenerator<T3> g3_;
- const ParamGenerator<T4> g4_;
-}; // class CartesianProductGenerator4
-
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5>
-class CartesianProductGenerator5
- : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5> > {
- public:
- typedef ::testing::tuple<T1, T2, T3, T4, T5> ParamType;
-
- CartesianProductGenerator5(const ParamGenerator<T1>& g1,
- const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
- const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {}
- virtual ~CartesianProductGenerator5() {}
-
- virtual ParamIteratorInterface<ParamType>* Begin() const {
- return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
- g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin());
- }
- virtual ParamIteratorInterface<ParamType>* End() const {
- return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
- g4_, g4_.end(), g5_, g5_.end());
- }
-
- private:
- class Iterator : public ParamIteratorInterface<ParamType> {
- public:
- Iterator(const ParamGeneratorInterface<ParamType>* base,
- const ParamGenerator<T1>& g1,
- const typename ParamGenerator<T1>::iterator& current1,
- const ParamGenerator<T2>& g2,
- const typename ParamGenerator<T2>::iterator& current2,
- const ParamGenerator<T3>& g3,
- const typename ParamGenerator<T3>::iterator& current3,
- const ParamGenerator<T4>& g4,
- const typename ParamGenerator<T4>::iterator& current4,
- const ParamGenerator<T5>& g5,
- const typename ParamGenerator<T5>::iterator& current5)
- : base_(base),
- begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
- begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
- begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
- begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
- begin5_(g5.begin()), end5_(g5.end()), current5_(current5) {
- ComputeCurrentValue();
- }
- virtual ~Iterator() {}
-
- virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
- return base_;
- }
- // Advance should not be called on beyond-of-range iterators
- // so no component iterators must be beyond end of range, either.
- virtual void Advance() {
- assert(!AtEnd());
- ++current5_;
- if (current5_ == end5_) {
- current5_ = begin5_;
- ++current4_;
- }
- if (current4_ == end4_) {
- current4_ = begin4_;
- ++current3_;
- }
- if (current3_ == end3_) {
- current3_ = begin3_;
- ++current2_;
- }
- if (current2_ == end2_) {
- current2_ = begin2_;
- ++current1_;
- }
- ComputeCurrentValue();
- }
- virtual ParamIteratorInterface<ParamType>* Clone() const {
- return new Iterator(*this);
- }
- virtual const ParamType* Current() const { return current_value_.get(); }
- virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- const Iterator* typed_other =
- CheckedDowncastToActualType<const Iterator>(&other);
- // We must report iterators equal if they both point beyond their
- // respective ranges. That can happen in a variety of fashions,
- // so we have to consult AtEnd().
- return (AtEnd() && typed_other->AtEnd()) ||
- (
- current1_ == typed_other->current1_ &&
- current2_ == typed_other->current2_ &&
- current3_ == typed_other->current3_ &&
- current4_ == typed_other->current4_ &&
- current5_ == typed_other->current5_);
- }
-
- private:
- Iterator(const Iterator& other)
- : base_(other.base_),
- begin1_(other.begin1_),
- end1_(other.end1_),
- current1_(other.current1_),
- begin2_(other.begin2_),
- end2_(other.end2_),
- current2_(other.current2_),
- begin3_(other.begin3_),
- end3_(other.end3_),
- current3_(other.current3_),
- begin4_(other.begin4_),
- end4_(other.end4_),
- current4_(other.current4_),
- begin5_(other.begin5_),
- end5_(other.end5_),
- current5_(other.current5_) {
- ComputeCurrentValue();
- }
-
- void ComputeCurrentValue() {
- if (!AtEnd())
- current_value_.reset(new ParamType(*current1_, *current2_, *current3_,
- *current4_, *current5_));
- }
- bool AtEnd() const {
- // We must report iterator past the end of the range when either of the
- // component iterators has reached the end of its range.
- return
- current1_ == end1_ ||
- current2_ == end2_ ||
- current3_ == end3_ ||
- current4_ == end4_ ||
- current5_ == end5_;
- }
-
- // No implementation - assignment is unsupported.
- void operator=(const Iterator& other);
-
- const ParamGeneratorInterface<ParamType>* const base_;
- // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
- // current[i]_ is the actual traversing iterator.
- const typename ParamGenerator<T1>::iterator begin1_;
- const typename ParamGenerator<T1>::iterator end1_;
- typename ParamGenerator<T1>::iterator current1_;
- const typename ParamGenerator<T2>::iterator begin2_;
- const typename ParamGenerator<T2>::iterator end2_;
- typename ParamGenerator<T2>::iterator current2_;
- const typename ParamGenerator<T3>::iterator begin3_;
- const typename ParamGenerator<T3>::iterator end3_;
- typename ParamGenerator<T3>::iterator current3_;
- const typename ParamGenerator<T4>::iterator begin4_;
- const typename ParamGenerator<T4>::iterator end4_;
- typename ParamGenerator<T4>::iterator current4_;
- const typename ParamGenerator<T5>::iterator begin5_;
- const typename ParamGenerator<T5>::iterator end5_;
- typename ParamGenerator<T5>::iterator current5_;
- linked_ptr<ParamType> current_value_;
- }; // class CartesianProductGenerator5::Iterator
-
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductGenerator5& other);
-
- const ParamGenerator<T1> g1_;
- const ParamGenerator<T2> g2_;
- const ParamGenerator<T3> g3_;
- const ParamGenerator<T4> g4_;
- const ParamGenerator<T5> g5_;
-}; // class CartesianProductGenerator5
-
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6>
-class CartesianProductGenerator6
- : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5,
- T6> > {
- public:
- typedef ::testing::tuple<T1, T2, T3, T4, T5, T6> ParamType;
-
- CartesianProductGenerator6(const ParamGenerator<T1>& g1,
- const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
- const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
- const ParamGenerator<T6>& g6)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {}
- virtual ~CartesianProductGenerator6() {}
-
- virtual ParamIteratorInterface<ParamType>* Begin() const {
- return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
- g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin());
- }
- virtual ParamIteratorInterface<ParamType>* End() const {
- return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
- g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end());
- }
-
- private:
- class Iterator : public ParamIteratorInterface<ParamType> {
- public:
- Iterator(const ParamGeneratorInterface<ParamType>* base,
- const ParamGenerator<T1>& g1,
- const typename ParamGenerator<T1>::iterator& current1,
- const ParamGenerator<T2>& g2,
- const typename ParamGenerator<T2>::iterator& current2,
- const ParamGenerator<T3>& g3,
- const typename ParamGenerator<T3>::iterator& current3,
- const ParamGenerator<T4>& g4,
- const typename ParamGenerator<T4>::iterator& current4,
- const ParamGenerator<T5>& g5,
- const typename ParamGenerator<T5>::iterator& current5,
- const ParamGenerator<T6>& g6,
- const typename ParamGenerator<T6>::iterator& current6)
- : base_(base),
- begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
- begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
- begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
- begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
- begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
- begin6_(g6.begin()), end6_(g6.end()), current6_(current6) {
- ComputeCurrentValue();
- }
- virtual ~Iterator() {}
-
- virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
- return base_;
- }
- // Advance should not be called on beyond-of-range iterators
- // so no component iterators must be beyond end of range, either.
- virtual void Advance() {
- assert(!AtEnd());
- ++current6_;
- if (current6_ == end6_) {
- current6_ = begin6_;
- ++current5_;
- }
- if (current5_ == end5_) {
- current5_ = begin5_;
- ++current4_;
- }
- if (current4_ == end4_) {
- current4_ = begin4_;
- ++current3_;
- }
- if (current3_ == end3_) {
- current3_ = begin3_;
- ++current2_;
- }
- if (current2_ == end2_) {
- current2_ = begin2_;
- ++current1_;
- }
- ComputeCurrentValue();
- }
- virtual ParamIteratorInterface<ParamType>* Clone() const {
- return new Iterator(*this);
- }
- virtual const ParamType* Current() const { return current_value_.get(); }
- virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- const Iterator* typed_other =
- CheckedDowncastToActualType<const Iterator>(&other);
- // We must report iterators equal if they both point beyond their
- // respective ranges. That can happen in a variety of fashions,
- // so we have to consult AtEnd().
- return (AtEnd() && typed_other->AtEnd()) ||
- (
- current1_ == typed_other->current1_ &&
- current2_ == typed_other->current2_ &&
- current3_ == typed_other->current3_ &&
- current4_ == typed_other->current4_ &&
- current5_ == typed_other->current5_ &&
- current6_ == typed_other->current6_);
- }
-
- private:
- Iterator(const Iterator& other)
- : base_(other.base_),
- begin1_(other.begin1_),
- end1_(other.end1_),
- current1_(other.current1_),
- begin2_(other.begin2_),
- end2_(other.end2_),
- current2_(other.current2_),
- begin3_(other.begin3_),
- end3_(other.end3_),
- current3_(other.current3_),
- begin4_(other.begin4_),
- end4_(other.end4_),
- current4_(other.current4_),
- begin5_(other.begin5_),
- end5_(other.end5_),
- current5_(other.current5_),
- begin6_(other.begin6_),
- end6_(other.end6_),
- current6_(other.current6_) {
- ComputeCurrentValue();
- }
-
- void ComputeCurrentValue() {
- if (!AtEnd())
- current_value_.reset(new ParamType(*current1_, *current2_, *current3_,
- *current4_, *current5_, *current6_));
- }
- bool AtEnd() const {
- // We must report iterator past the end of the range when either of the
- // component iterators has reached the end of its range.
- return
- current1_ == end1_ ||
- current2_ == end2_ ||
- current3_ == end3_ ||
- current4_ == end4_ ||
- current5_ == end5_ ||
- current6_ == end6_;
- }
-
- // No implementation - assignment is unsupported.
- void operator=(const Iterator& other);
-
- const ParamGeneratorInterface<ParamType>* const base_;
- // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
- // current[i]_ is the actual traversing iterator.
- const typename ParamGenerator<T1>::iterator begin1_;
- const typename ParamGenerator<T1>::iterator end1_;
- typename ParamGenerator<T1>::iterator current1_;
- const typename ParamGenerator<T2>::iterator begin2_;
- const typename ParamGenerator<T2>::iterator end2_;
- typename ParamGenerator<T2>::iterator current2_;
- const typename ParamGenerator<T3>::iterator begin3_;
- const typename ParamGenerator<T3>::iterator end3_;
- typename ParamGenerator<T3>::iterator current3_;
- const typename ParamGenerator<T4>::iterator begin4_;
- const typename ParamGenerator<T4>::iterator end4_;
- typename ParamGenerator<T4>::iterator current4_;
- const typename ParamGenerator<T5>::iterator begin5_;
- const typename ParamGenerator<T5>::iterator end5_;
- typename ParamGenerator<T5>::iterator current5_;
- const typename ParamGenerator<T6>::iterator begin6_;
- const typename ParamGenerator<T6>::iterator end6_;
- typename ParamGenerator<T6>::iterator current6_;
- linked_ptr<ParamType> current_value_;
- }; // class CartesianProductGenerator6::Iterator
-
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductGenerator6& other);
-
- const ParamGenerator<T1> g1_;
- const ParamGenerator<T2> g2_;
- const ParamGenerator<T3> g3_;
- const ParamGenerator<T4> g4_;
- const ParamGenerator<T5> g5_;
- const ParamGenerator<T6> g6_;
-}; // class CartesianProductGenerator6
-
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7>
-class CartesianProductGenerator7
- : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5, T6,
- T7> > {
- public:
- typedef ::testing::tuple<T1, T2, T3, T4, T5, T6, T7> ParamType;
-
- CartesianProductGenerator7(const ParamGenerator<T1>& g1,
- const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
- const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
- const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {}
- virtual ~CartesianProductGenerator7() {}
-
- virtual ParamIteratorInterface<ParamType>* Begin() const {
- return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
- g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
- g7_.begin());
- }
- virtual ParamIteratorInterface<ParamType>* End() const {
- return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
- g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end());
- }
-
- private:
- class Iterator : public ParamIteratorInterface<ParamType> {
- public:
- Iterator(const ParamGeneratorInterface<ParamType>* base,
- const ParamGenerator<T1>& g1,
- const typename ParamGenerator<T1>::iterator& current1,
- const ParamGenerator<T2>& g2,
- const typename ParamGenerator<T2>::iterator& current2,
- const ParamGenerator<T3>& g3,
- const typename ParamGenerator<T3>::iterator& current3,
- const ParamGenerator<T4>& g4,
- const typename ParamGenerator<T4>::iterator& current4,
- const ParamGenerator<T5>& g5,
- const typename ParamGenerator<T5>::iterator& current5,
- const ParamGenerator<T6>& g6,
- const typename ParamGenerator<T6>::iterator& current6,
- const ParamGenerator<T7>& g7,
- const typename ParamGenerator<T7>::iterator& current7)
- : base_(base),
- begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
- begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
- begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
- begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
- begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
- begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
- begin7_(g7.begin()), end7_(g7.end()), current7_(current7) {
- ComputeCurrentValue();
- }
- virtual ~Iterator() {}
-
- virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
- return base_;
- }
- // Advance should not be called on beyond-of-range iterators
- // so no component iterators must be beyond end of range, either.
- virtual void Advance() {
- assert(!AtEnd());
- ++current7_;
- if (current7_ == end7_) {
- current7_ = begin7_;
- ++current6_;
- }
- if (current6_ == end6_) {
- current6_ = begin6_;
- ++current5_;
- }
- if (current5_ == end5_) {
- current5_ = begin5_;
- ++current4_;
- }
- if (current4_ == end4_) {
- current4_ = begin4_;
- ++current3_;
- }
- if (current3_ == end3_) {
- current3_ = begin3_;
- ++current2_;
- }
- if (current2_ == end2_) {
- current2_ = begin2_;
- ++current1_;
- }
- ComputeCurrentValue();
- }
- virtual ParamIteratorInterface<ParamType>* Clone() const {
- return new Iterator(*this);
- }
- virtual const ParamType* Current() const { return current_value_.get(); }
- virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- const Iterator* typed_other =
- CheckedDowncastToActualType<const Iterator>(&other);
- // We must report iterators equal if they both point beyond their
- // respective ranges. That can happen in a variety of fashions,
- // so we have to consult AtEnd().
- return (AtEnd() && typed_other->AtEnd()) ||
- (
- current1_ == typed_other->current1_ &&
- current2_ == typed_other->current2_ &&
- current3_ == typed_other->current3_ &&
- current4_ == typed_other->current4_ &&
- current5_ == typed_other->current5_ &&
- current6_ == typed_other->current6_ &&
- current7_ == typed_other->current7_);
- }
-
- private:
- Iterator(const Iterator& other)
- : base_(other.base_),
- begin1_(other.begin1_),
- end1_(other.end1_),
- current1_(other.current1_),
- begin2_(other.begin2_),
- end2_(other.end2_),
- current2_(other.current2_),
- begin3_(other.begin3_),
- end3_(other.end3_),
- current3_(other.current3_),
- begin4_(other.begin4_),
- end4_(other.end4_),
- current4_(other.current4_),
- begin5_(other.begin5_),
- end5_(other.end5_),
- current5_(other.current5_),
- begin6_(other.begin6_),
- end6_(other.end6_),
- current6_(other.current6_),
- begin7_(other.begin7_),
- end7_(other.end7_),
- current7_(other.current7_) {
- ComputeCurrentValue();
- }
-
- void ComputeCurrentValue() {
- if (!AtEnd())
- current_value_.reset(new ParamType(*current1_, *current2_, *current3_,
- *current4_, *current5_, *current6_, *current7_));
- }
- bool AtEnd() const {
- // We must report iterator past the end of the range when either of the
- // component iterators has reached the end of its range.
- return
- current1_ == end1_ ||
- current2_ == end2_ ||
- current3_ == end3_ ||
- current4_ == end4_ ||
- current5_ == end5_ ||
- current6_ == end6_ ||
- current7_ == end7_;
- }
-
- // No implementation - assignment is unsupported.
- void operator=(const Iterator& other);
-
- const ParamGeneratorInterface<ParamType>* const base_;
- // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
- // current[i]_ is the actual traversing iterator.
- const typename ParamGenerator<T1>::iterator begin1_;
- const typename ParamGenerator<T1>::iterator end1_;
- typename ParamGenerator<T1>::iterator current1_;
- const typename ParamGenerator<T2>::iterator begin2_;
- const typename ParamGenerator<T2>::iterator end2_;
- typename ParamGenerator<T2>::iterator current2_;
- const typename ParamGenerator<T3>::iterator begin3_;
- const typename ParamGenerator<T3>::iterator end3_;
- typename ParamGenerator<T3>::iterator current3_;
- const typename ParamGenerator<T4>::iterator begin4_;
- const typename ParamGenerator<T4>::iterator end4_;
- typename ParamGenerator<T4>::iterator current4_;
- const typename ParamGenerator<T5>::iterator begin5_;
- const typename ParamGenerator<T5>::iterator end5_;
- typename ParamGenerator<T5>::iterator current5_;
- const typename ParamGenerator<T6>::iterator begin6_;
- const typename ParamGenerator<T6>::iterator end6_;
- typename ParamGenerator<T6>::iterator current6_;
- const typename ParamGenerator<T7>::iterator begin7_;
- const typename ParamGenerator<T7>::iterator end7_;
- typename ParamGenerator<T7>::iterator current7_;
- linked_ptr<ParamType> current_value_;
- }; // class CartesianProductGenerator7::Iterator
-
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductGenerator7& other);
-
- const ParamGenerator<T1> g1_;
- const ParamGenerator<T2> g2_;
- const ParamGenerator<T3> g3_;
- const ParamGenerator<T4> g4_;
- const ParamGenerator<T5> g5_;
- const ParamGenerator<T6> g6_;
- const ParamGenerator<T7> g7_;
-}; // class CartesianProductGenerator7
-
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8>
-class CartesianProductGenerator8
- : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5, T6,
- T7, T8> > {
- public:
- typedef ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8> ParamType;
-
- CartesianProductGenerator8(const ParamGenerator<T1>& g1,
- const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
- const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
- const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7,
- const ParamGenerator<T8>& g8)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7),
- g8_(g8) {}
- virtual ~CartesianProductGenerator8() {}
-
- virtual ParamIteratorInterface<ParamType>* Begin() const {
- return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
- g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
- g7_.begin(), g8_, g8_.begin());
- }
- virtual ParamIteratorInterface<ParamType>* End() const {
- return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
- g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
- g8_.end());
- }
-
- private:
- class Iterator : public ParamIteratorInterface<ParamType> {
- public:
- Iterator(const ParamGeneratorInterface<ParamType>* base,
- const ParamGenerator<T1>& g1,
- const typename ParamGenerator<T1>::iterator& current1,
- const ParamGenerator<T2>& g2,
- const typename ParamGenerator<T2>::iterator& current2,
- const ParamGenerator<T3>& g3,
- const typename ParamGenerator<T3>::iterator& current3,
- const ParamGenerator<T4>& g4,
- const typename ParamGenerator<T4>::iterator& current4,
- const ParamGenerator<T5>& g5,
- const typename ParamGenerator<T5>::iterator& current5,
- const ParamGenerator<T6>& g6,
- const typename ParamGenerator<T6>::iterator& current6,
- const ParamGenerator<T7>& g7,
- const typename ParamGenerator<T7>::iterator& current7,
- const ParamGenerator<T8>& g8,
- const typename ParamGenerator<T8>::iterator& current8)
- : base_(base),
- begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
- begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
- begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
- begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
- begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
- begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
- begin7_(g7.begin()), end7_(g7.end()), current7_(current7),
- begin8_(g8.begin()), end8_(g8.end()), current8_(current8) {
- ComputeCurrentValue();
- }
- virtual ~Iterator() {}
-
- virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
- return base_;
- }
- // Advance should not be called on beyond-of-range iterators
- // so no component iterators must be beyond end of range, either.
- virtual void Advance() {
- assert(!AtEnd());
- ++current8_;
- if (current8_ == end8_) {
- current8_ = begin8_;
- ++current7_;
- }
- if (current7_ == end7_) {
- current7_ = begin7_;
- ++current6_;
- }
- if (current6_ == end6_) {
- current6_ = begin6_;
- ++current5_;
- }
- if (current5_ == end5_) {
- current5_ = begin5_;
- ++current4_;
- }
- if (current4_ == end4_) {
- current4_ = begin4_;
- ++current3_;
- }
- if (current3_ == end3_) {
- current3_ = begin3_;
- ++current2_;
- }
- if (current2_ == end2_) {
- current2_ = begin2_;
- ++current1_;
- }
- ComputeCurrentValue();
- }
- virtual ParamIteratorInterface<ParamType>* Clone() const {
- return new Iterator(*this);
- }
- virtual const ParamType* Current() const { return current_value_.get(); }
- virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- const Iterator* typed_other =
- CheckedDowncastToActualType<const Iterator>(&other);
- // We must report iterators equal if they both point beyond their
- // respective ranges. That can happen in a variety of fashions,
- // so we have to consult AtEnd().
- return (AtEnd() && typed_other->AtEnd()) ||
- (
- current1_ == typed_other->current1_ &&
- current2_ == typed_other->current2_ &&
- current3_ == typed_other->current3_ &&
- current4_ == typed_other->current4_ &&
- current5_ == typed_other->current5_ &&
- current6_ == typed_other->current6_ &&
- current7_ == typed_other->current7_ &&
- current8_ == typed_other->current8_);
- }
-
- private:
- Iterator(const Iterator& other)
- : base_(other.base_),
- begin1_(other.begin1_),
- end1_(other.end1_),
- current1_(other.current1_),
- begin2_(other.begin2_),
- end2_(other.end2_),
- current2_(other.current2_),
- begin3_(other.begin3_),
- end3_(other.end3_),
- current3_(other.current3_),
- begin4_(other.begin4_),
- end4_(other.end4_),
- current4_(other.current4_),
- begin5_(other.begin5_),
- end5_(other.end5_),
- current5_(other.current5_),
- begin6_(other.begin6_),
- end6_(other.end6_),
- current6_(other.current6_),
- begin7_(other.begin7_),
- end7_(other.end7_),
- current7_(other.current7_),
- begin8_(other.begin8_),
- end8_(other.end8_),
- current8_(other.current8_) {
- ComputeCurrentValue();
- }
-
- void ComputeCurrentValue() {
- if (!AtEnd())
- current_value_.reset(new ParamType(*current1_, *current2_, *current3_,
- *current4_, *current5_, *current6_, *current7_, *current8_));
- }
- bool AtEnd() const {
- // We must report iterator past the end of the range when either of the
- // component iterators has reached the end of its range.
- return
- current1_ == end1_ ||
- current2_ == end2_ ||
- current3_ == end3_ ||
- current4_ == end4_ ||
- current5_ == end5_ ||
- current6_ == end6_ ||
- current7_ == end7_ ||
- current8_ == end8_;
- }
-
- // No implementation - assignment is unsupported.
- void operator=(const Iterator& other);
-
- const ParamGeneratorInterface<ParamType>* const base_;
- // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
- // current[i]_ is the actual traversing iterator.
- const typename ParamGenerator<T1>::iterator begin1_;
- const typename ParamGenerator<T1>::iterator end1_;
- typename ParamGenerator<T1>::iterator current1_;
- const typename ParamGenerator<T2>::iterator begin2_;
- const typename ParamGenerator<T2>::iterator end2_;
- typename ParamGenerator<T2>::iterator current2_;
- const typename ParamGenerator<T3>::iterator begin3_;
- const typename ParamGenerator<T3>::iterator end3_;
- typename ParamGenerator<T3>::iterator current3_;
- const typename ParamGenerator<T4>::iterator begin4_;
- const typename ParamGenerator<T4>::iterator end4_;
- typename ParamGenerator<T4>::iterator current4_;
- const typename ParamGenerator<T5>::iterator begin5_;
- const typename ParamGenerator<T5>::iterator end5_;
- typename ParamGenerator<T5>::iterator current5_;
- const typename ParamGenerator<T6>::iterator begin6_;
- const typename ParamGenerator<T6>::iterator end6_;
- typename ParamGenerator<T6>::iterator current6_;
- const typename ParamGenerator<T7>::iterator begin7_;
- const typename ParamGenerator<T7>::iterator end7_;
- typename ParamGenerator<T7>::iterator current7_;
- const typename ParamGenerator<T8>::iterator begin8_;
- const typename ParamGenerator<T8>::iterator end8_;
- typename ParamGenerator<T8>::iterator current8_;
- linked_ptr<ParamType> current_value_;
- }; // class CartesianProductGenerator8::Iterator
-
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductGenerator8& other);
-
- const ParamGenerator<T1> g1_;
- const ParamGenerator<T2> g2_;
- const ParamGenerator<T3> g3_;
- const ParamGenerator<T4> g4_;
- const ParamGenerator<T5> g5_;
- const ParamGenerator<T6> g6_;
- const ParamGenerator<T7> g7_;
- const ParamGenerator<T8> g8_;
-}; // class CartesianProductGenerator8
-
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9>
-class CartesianProductGenerator9
- : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5, T6,
- T7, T8, T9> > {
- public:
- typedef ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9> ParamType;
-
- CartesianProductGenerator9(const ParamGenerator<T1>& g1,
- const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
- const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
- const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7,
- const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
- g9_(g9) {}
- virtual ~CartesianProductGenerator9() {}
-
- virtual ParamIteratorInterface<ParamType>* Begin() const {
- return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
- g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
- g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin());
- }
- virtual ParamIteratorInterface<ParamType>* End() const {
- return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
- g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
- g8_.end(), g9_, g9_.end());
- }
-
- private:
- class Iterator : public ParamIteratorInterface<ParamType> {
- public:
- Iterator(const ParamGeneratorInterface<ParamType>* base,
- const ParamGenerator<T1>& g1,
- const typename ParamGenerator<T1>::iterator& current1,
- const ParamGenerator<T2>& g2,
- const typename ParamGenerator<T2>::iterator& current2,
- const ParamGenerator<T3>& g3,
- const typename ParamGenerator<T3>::iterator& current3,
- const ParamGenerator<T4>& g4,
- const typename ParamGenerator<T4>::iterator& current4,
- const ParamGenerator<T5>& g5,
- const typename ParamGenerator<T5>::iterator& current5,
- const ParamGenerator<T6>& g6,
- const typename ParamGenerator<T6>::iterator& current6,
- const ParamGenerator<T7>& g7,
- const typename ParamGenerator<T7>::iterator& current7,
- const ParamGenerator<T8>& g8,
- const typename ParamGenerator<T8>::iterator& current8,
- const ParamGenerator<T9>& g9,
- const typename ParamGenerator<T9>::iterator& current9)
- : base_(base),
- begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
- begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
- begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
- begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
- begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
- begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
- begin7_(g7.begin()), end7_(g7.end()), current7_(current7),
- begin8_(g8.begin()), end8_(g8.end()), current8_(current8),
- begin9_(g9.begin()), end9_(g9.end()), current9_(current9) {
- ComputeCurrentValue();
- }
- virtual ~Iterator() {}
-
- virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
- return base_;
- }
- // Advance should not be called on beyond-of-range iterators
- // so no component iterators must be beyond end of range, either.
- virtual void Advance() {
- assert(!AtEnd());
- ++current9_;
- if (current9_ == end9_) {
- current9_ = begin9_;
- ++current8_;
- }
- if (current8_ == end8_) {
- current8_ = begin8_;
- ++current7_;
- }
- if (current7_ == end7_) {
- current7_ = begin7_;
- ++current6_;
- }
- if (current6_ == end6_) {
- current6_ = begin6_;
- ++current5_;
- }
- if (current5_ == end5_) {
- current5_ = begin5_;
- ++current4_;
- }
- if (current4_ == end4_) {
- current4_ = begin4_;
- ++current3_;
- }
- if (current3_ == end3_) {
- current3_ = begin3_;
- ++current2_;
- }
- if (current2_ == end2_) {
- current2_ = begin2_;
- ++current1_;
- }
- ComputeCurrentValue();
- }
- virtual ParamIteratorInterface<ParamType>* Clone() const {
- return new Iterator(*this);
- }
- virtual const ParamType* Current() const { return current_value_.get(); }
- virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- const Iterator* typed_other =
- CheckedDowncastToActualType<const Iterator>(&other);
- // We must report iterators equal if they both point beyond their
- // respective ranges. That can happen in a variety of fashions,
- // so we have to consult AtEnd().
- return (AtEnd() && typed_other->AtEnd()) ||
- (
- current1_ == typed_other->current1_ &&
- current2_ == typed_other->current2_ &&
- current3_ == typed_other->current3_ &&
- current4_ == typed_other->current4_ &&
- current5_ == typed_other->current5_ &&
- current6_ == typed_other->current6_ &&
- current7_ == typed_other->current7_ &&
- current8_ == typed_other->current8_ &&
- current9_ == typed_other->current9_);
- }
-
- private:
- Iterator(const Iterator& other)
- : base_(other.base_),
- begin1_(other.begin1_),
- end1_(other.end1_),
- current1_(other.current1_),
- begin2_(other.begin2_),
- end2_(other.end2_),
- current2_(other.current2_),
- begin3_(other.begin3_),
- end3_(other.end3_),
- current3_(other.current3_),
- begin4_(other.begin4_),
- end4_(other.end4_),
- current4_(other.current4_),
- begin5_(other.begin5_),
- end5_(other.end5_),
- current5_(other.current5_),
- begin6_(other.begin6_),
- end6_(other.end6_),
- current6_(other.current6_),
- begin7_(other.begin7_),
- end7_(other.end7_),
- current7_(other.current7_),
- begin8_(other.begin8_),
- end8_(other.end8_),
- current8_(other.current8_),
- begin9_(other.begin9_),
- end9_(other.end9_),
- current9_(other.current9_) {
- ComputeCurrentValue();
- }
-
- void ComputeCurrentValue() {
- if (!AtEnd())
- current_value_.reset(new ParamType(*current1_, *current2_, *current3_,
- *current4_, *current5_, *current6_, *current7_, *current8_,
- *current9_));
- }
- bool AtEnd() const {
- // We must report iterator past the end of the range when either of the
- // component iterators has reached the end of its range.
- return
- current1_ == end1_ ||
- current2_ == end2_ ||
- current3_ == end3_ ||
- current4_ == end4_ ||
- current5_ == end5_ ||
- current6_ == end6_ ||
- current7_ == end7_ ||
- current8_ == end8_ ||
- current9_ == end9_;
- }
-
- // No implementation - assignment is unsupported.
- void operator=(const Iterator& other);
-
- const ParamGeneratorInterface<ParamType>* const base_;
- // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
- // current[i]_ is the actual traversing iterator.
- const typename ParamGenerator<T1>::iterator begin1_;
- const typename ParamGenerator<T1>::iterator end1_;
- typename ParamGenerator<T1>::iterator current1_;
- const typename ParamGenerator<T2>::iterator begin2_;
- const typename ParamGenerator<T2>::iterator end2_;
- typename ParamGenerator<T2>::iterator current2_;
- const typename ParamGenerator<T3>::iterator begin3_;
- const typename ParamGenerator<T3>::iterator end3_;
- typename ParamGenerator<T3>::iterator current3_;
- const typename ParamGenerator<T4>::iterator begin4_;
- const typename ParamGenerator<T4>::iterator end4_;
- typename ParamGenerator<T4>::iterator current4_;
- const typename ParamGenerator<T5>::iterator begin5_;
- const typename ParamGenerator<T5>::iterator end5_;
- typename ParamGenerator<T5>::iterator current5_;
- const typename ParamGenerator<T6>::iterator begin6_;
- const typename ParamGenerator<T6>::iterator end6_;
- typename ParamGenerator<T6>::iterator current6_;
- const typename ParamGenerator<T7>::iterator begin7_;
- const typename ParamGenerator<T7>::iterator end7_;
- typename ParamGenerator<T7>::iterator current7_;
- const typename ParamGenerator<T8>::iterator begin8_;
- const typename ParamGenerator<T8>::iterator end8_;
- typename ParamGenerator<T8>::iterator current8_;
- const typename ParamGenerator<T9>::iterator begin9_;
- const typename ParamGenerator<T9>::iterator end9_;
- typename ParamGenerator<T9>::iterator current9_;
- linked_ptr<ParamType> current_value_;
- }; // class CartesianProductGenerator9::Iterator
-
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductGenerator9& other);
-
- const ParamGenerator<T1> g1_;
- const ParamGenerator<T2> g2_;
- const ParamGenerator<T3> g3_;
- const ParamGenerator<T4> g4_;
- const ParamGenerator<T5> g5_;
- const ParamGenerator<T6> g6_;
- const ParamGenerator<T7> g7_;
- const ParamGenerator<T8> g8_;
- const ParamGenerator<T9> g9_;
-}; // class CartesianProductGenerator9
-
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10>
-class CartesianProductGenerator10
- : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5, T6,
- T7, T8, T9, T10> > {
- public:
- typedef ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> ParamType;
-
- CartesianProductGenerator10(const ParamGenerator<T1>& g1,
- const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
- const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
- const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7,
- const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9,
- const ParamGenerator<T10>& g10)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
- g9_(g9), g10_(g10) {}
- virtual ~CartesianProductGenerator10() {}
-
- virtual ParamIteratorInterface<ParamType>* Begin() const {
- return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
- g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
- g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin(), g10_, g10_.begin());
- }
- virtual ParamIteratorInterface<ParamType>* End() const {
- return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
- g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
- g8_.end(), g9_, g9_.end(), g10_, g10_.end());
- }
-
- private:
- class Iterator : public ParamIteratorInterface<ParamType> {
- public:
- Iterator(const ParamGeneratorInterface<ParamType>* base,
- const ParamGenerator<T1>& g1,
- const typename ParamGenerator<T1>::iterator& current1,
- const ParamGenerator<T2>& g2,
- const typename ParamGenerator<T2>::iterator& current2,
- const ParamGenerator<T3>& g3,
- const typename ParamGenerator<T3>::iterator& current3,
- const ParamGenerator<T4>& g4,
- const typename ParamGenerator<T4>::iterator& current4,
- const ParamGenerator<T5>& g5,
- const typename ParamGenerator<T5>::iterator& current5,
- const ParamGenerator<T6>& g6,
- const typename ParamGenerator<T6>::iterator& current6,
- const ParamGenerator<T7>& g7,
- const typename ParamGenerator<T7>::iterator& current7,
- const ParamGenerator<T8>& g8,
- const typename ParamGenerator<T8>::iterator& current8,
- const ParamGenerator<T9>& g9,
- const typename ParamGenerator<T9>::iterator& current9,
- const ParamGenerator<T10>& g10,
- const typename ParamGenerator<T10>::iterator& current10)
- : base_(base),
- begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
- begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
- begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
- begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
- begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
- begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
- begin7_(g7.begin()), end7_(g7.end()), current7_(current7),
- begin8_(g8.begin()), end8_(g8.end()), current8_(current8),
- begin9_(g9.begin()), end9_(g9.end()), current9_(current9),
- begin10_(g10.begin()), end10_(g10.end()), current10_(current10) {
- ComputeCurrentValue();
- }
- virtual ~Iterator() {}
-
- virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
- return base_;
- }
- // Advance should not be called on beyond-of-range iterators
- // so no component iterators must be beyond end of range, either.
- virtual void Advance() {
- assert(!AtEnd());
- ++current10_;
- if (current10_ == end10_) {
- current10_ = begin10_;
- ++current9_;
- }
- if (current9_ == end9_) {
- current9_ = begin9_;
- ++current8_;
- }
- if (current8_ == end8_) {
- current8_ = begin8_;
- ++current7_;
- }
- if (current7_ == end7_) {
- current7_ = begin7_;
- ++current6_;
- }
- if (current6_ == end6_) {
- current6_ = begin6_;
- ++current5_;
- }
- if (current5_ == end5_) {
- current5_ = begin5_;
- ++current4_;
- }
- if (current4_ == end4_) {
- current4_ = begin4_;
- ++current3_;
- }
- if (current3_ == end3_) {
- current3_ = begin3_;
- ++current2_;
- }
- if (current2_ == end2_) {
- current2_ = begin2_;
- ++current1_;
- }
- ComputeCurrentValue();
- }
- virtual ParamIteratorInterface<ParamType>* Clone() const {
- return new Iterator(*this);
- }
- virtual const ParamType* Current() const { return current_value_.get(); }
- virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- const Iterator* typed_other =
- CheckedDowncastToActualType<const Iterator>(&other);
- // We must report iterators equal if they both point beyond their
- // respective ranges. That can happen in a variety of fashions,
- // so we have to consult AtEnd().
- return (AtEnd() && typed_other->AtEnd()) ||
- (
- current1_ == typed_other->current1_ &&
- current2_ == typed_other->current2_ &&
- current3_ == typed_other->current3_ &&
- current4_ == typed_other->current4_ &&
- current5_ == typed_other->current5_ &&
- current6_ == typed_other->current6_ &&
- current7_ == typed_other->current7_ &&
- current8_ == typed_other->current8_ &&
- current9_ == typed_other->current9_ &&
- current10_ == typed_other->current10_);
- }
-
- private:
- Iterator(const Iterator& other)
- : base_(other.base_),
- begin1_(other.begin1_),
- end1_(other.end1_),
- current1_(other.current1_),
- begin2_(other.begin2_),
- end2_(other.end2_),
- current2_(other.current2_),
- begin3_(other.begin3_),
- end3_(other.end3_),
- current3_(other.current3_),
- begin4_(other.begin4_),
- end4_(other.end4_),
- current4_(other.current4_),
- begin5_(other.begin5_),
- end5_(other.end5_),
- current5_(other.current5_),
- begin6_(other.begin6_),
- end6_(other.end6_),
- current6_(other.current6_),
- begin7_(other.begin7_),
- end7_(other.end7_),
- current7_(other.current7_),
- begin8_(other.begin8_),
- end8_(other.end8_),
- current8_(other.current8_),
- begin9_(other.begin9_),
- end9_(other.end9_),
- current9_(other.current9_),
- begin10_(other.begin10_),
- end10_(other.end10_),
- current10_(other.current10_) {
- ComputeCurrentValue();
- }
-
- void ComputeCurrentValue() {
- if (!AtEnd())
- current_value_.reset(new ParamType(*current1_, *current2_, *current3_,
- *current4_, *current5_, *current6_, *current7_, *current8_,
- *current9_, *current10_));
- }
- bool AtEnd() const {
- // We must report iterator past the end of the range when either of the
- // component iterators has reached the end of its range.
- return
- current1_ == end1_ ||
- current2_ == end2_ ||
- current3_ == end3_ ||
- current4_ == end4_ ||
- current5_ == end5_ ||
- current6_ == end6_ ||
- current7_ == end7_ ||
- current8_ == end8_ ||
- current9_ == end9_ ||
- current10_ == end10_;
- }
-
- // No implementation - assignment is unsupported.
- void operator=(const Iterator& other);
-
- const ParamGeneratorInterface<ParamType>* const base_;
- // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
- // current[i]_ is the actual traversing iterator.
- const typename ParamGenerator<T1>::iterator begin1_;
- const typename ParamGenerator<T1>::iterator end1_;
- typename ParamGenerator<T1>::iterator current1_;
- const typename ParamGenerator<T2>::iterator begin2_;
- const typename ParamGenerator<T2>::iterator end2_;
- typename ParamGenerator<T2>::iterator current2_;
- const typename ParamGenerator<T3>::iterator begin3_;
- const typename ParamGenerator<T3>::iterator end3_;
- typename ParamGenerator<T3>::iterator current3_;
- const typename ParamGenerator<T4>::iterator begin4_;
- const typename ParamGenerator<T4>::iterator end4_;
- typename ParamGenerator<T4>::iterator current4_;
- const typename ParamGenerator<T5>::iterator begin5_;
- const typename ParamGenerator<T5>::iterator end5_;
- typename ParamGenerator<T5>::iterator current5_;
- const typename ParamGenerator<T6>::iterator begin6_;
- const typename ParamGenerator<T6>::iterator end6_;
- typename ParamGenerator<T6>::iterator current6_;
- const typename ParamGenerator<T7>::iterator begin7_;
- const typename ParamGenerator<T7>::iterator end7_;
- typename ParamGenerator<T7>::iterator current7_;
- const typename ParamGenerator<T8>::iterator begin8_;
- const typename ParamGenerator<T8>::iterator end8_;
- typename ParamGenerator<T8>::iterator current8_;
- const typename ParamGenerator<T9>::iterator begin9_;
- const typename ParamGenerator<T9>::iterator end9_;
- typename ParamGenerator<T9>::iterator current9_;
- const typename ParamGenerator<T10>::iterator begin10_;
- const typename ParamGenerator<T10>::iterator end10_;
- typename ParamGenerator<T10>::iterator current10_;
- linked_ptr<ParamType> current_value_;
- }; // class CartesianProductGenerator10::Iterator
-
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductGenerator10& other);
-
- const ParamGenerator<T1> g1_;
- const ParamGenerator<T2> g2_;
- const ParamGenerator<T3> g3_;
- const ParamGenerator<T4> g4_;
- const ParamGenerator<T5> g5_;
- const ParamGenerator<T6> g6_;
- const ParamGenerator<T7> g7_;
- const ParamGenerator<T8> g8_;
- const ParamGenerator<T9> g9_;
- const ParamGenerator<T10> g10_;
-}; // class CartesianProductGenerator10
-
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Helper classes providing Combine() with polymorphic features. They allow
-// casting CartesianProductGeneratorN<T> to ParamGenerator<U> if T is
-// convertible to U.
-//
-template <class Generator1, class Generator2>
-class CartesianProductHolder2 {
- public:
-CartesianProductHolder2(const Generator1& g1, const Generator2& g2)
- : g1_(g1), g2_(g2) {}
- template <typename T1, typename T2>
- operator ParamGenerator< ::testing::tuple<T1, T2> >() const {
- return ParamGenerator< ::testing::tuple<T1, T2> >(
- new CartesianProductGenerator2<T1, T2>(
- static_cast<ParamGenerator<T1> >(g1_),
- static_cast<ParamGenerator<T2> >(g2_)));
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductHolder2& other);
-
- const Generator1 g1_;
- const Generator2 g2_;
-}; // class CartesianProductHolder2
-
-template <class Generator1, class Generator2, class Generator3>
-class CartesianProductHolder3 {
- public:
-CartesianProductHolder3(const Generator1& g1, const Generator2& g2,
- const Generator3& g3)
- : g1_(g1), g2_(g2), g3_(g3) {}
- template <typename T1, typename T2, typename T3>
- operator ParamGenerator< ::testing::tuple<T1, T2, T3> >() const {
- return ParamGenerator< ::testing::tuple<T1, T2, T3> >(
- new CartesianProductGenerator3<T1, T2, T3>(
- static_cast<ParamGenerator<T1> >(g1_),
- static_cast<ParamGenerator<T2> >(g2_),
- static_cast<ParamGenerator<T3> >(g3_)));
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductHolder3& other);
-
- const Generator1 g1_;
- const Generator2 g2_;
- const Generator3 g3_;
-}; // class CartesianProductHolder3
-
-template <class Generator1, class Generator2, class Generator3,
- class Generator4>
-class CartesianProductHolder4 {
- public:
-CartesianProductHolder4(const Generator1& g1, const Generator2& g2,
- const Generator3& g3, const Generator4& g4)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {}
- template <typename T1, typename T2, typename T3, typename T4>
- operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4> >() const {
- return ParamGenerator< ::testing::tuple<T1, T2, T3, T4> >(
- new CartesianProductGenerator4<T1, T2, T3, T4>(
- static_cast<ParamGenerator<T1> >(g1_),
- static_cast<ParamGenerator<T2> >(g2_),
- static_cast<ParamGenerator<T3> >(g3_),
- static_cast<ParamGenerator<T4> >(g4_)));
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductHolder4& other);
-
- const Generator1 g1_;
- const Generator2 g2_;
- const Generator3 g3_;
- const Generator4 g4_;
-}; // class CartesianProductHolder4
-
-template <class Generator1, class Generator2, class Generator3,
- class Generator4, class Generator5>
-class CartesianProductHolder5 {
- public:
-CartesianProductHolder5(const Generator1& g1, const Generator2& g2,
- const Generator3& g3, const Generator4& g4, const Generator5& g5)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {}
- template <typename T1, typename T2, typename T3, typename T4, typename T5>
- operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5> >() const {
- return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5> >(
- new CartesianProductGenerator5<T1, T2, T3, T4, T5>(
- static_cast<ParamGenerator<T1> >(g1_),
- static_cast<ParamGenerator<T2> >(g2_),
- static_cast<ParamGenerator<T3> >(g3_),
- static_cast<ParamGenerator<T4> >(g4_),
- static_cast<ParamGenerator<T5> >(g5_)));
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductHolder5& other);
-
- const Generator1 g1_;
- const Generator2 g2_;
- const Generator3 g3_;
- const Generator4 g4_;
- const Generator5 g5_;
-}; // class CartesianProductHolder5
-
-template <class Generator1, class Generator2, class Generator3,
- class Generator4, class Generator5, class Generator6>
-class CartesianProductHolder6 {
- public:
-CartesianProductHolder6(const Generator1& g1, const Generator2& g2,
- const Generator3& g3, const Generator4& g4, const Generator5& g5,
- const Generator6& g6)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {}
- template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6>
- operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6> >() const {
- return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6> >(
- new CartesianProductGenerator6<T1, T2, T3, T4, T5, T6>(
- static_cast<ParamGenerator<T1> >(g1_),
- static_cast<ParamGenerator<T2> >(g2_),
- static_cast<ParamGenerator<T3> >(g3_),
- static_cast<ParamGenerator<T4> >(g4_),
- static_cast<ParamGenerator<T5> >(g5_),
- static_cast<ParamGenerator<T6> >(g6_)));
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductHolder6& other);
-
- const Generator1 g1_;
- const Generator2 g2_;
- const Generator3 g3_;
- const Generator4 g4_;
- const Generator5 g5_;
- const Generator6 g6_;
-}; // class CartesianProductHolder6
-
-template <class Generator1, class Generator2, class Generator3,
- class Generator4, class Generator5, class Generator6, class Generator7>
-class CartesianProductHolder7 {
- public:
-CartesianProductHolder7(const Generator1& g1, const Generator2& g2,
- const Generator3& g3, const Generator4& g4, const Generator5& g5,
- const Generator6& g6, const Generator7& g7)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {}
- template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7>
- operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6,
- T7> >() const {
- return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7> >(
- new CartesianProductGenerator7<T1, T2, T3, T4, T5, T6, T7>(
- static_cast<ParamGenerator<T1> >(g1_),
- static_cast<ParamGenerator<T2> >(g2_),
- static_cast<ParamGenerator<T3> >(g3_),
- static_cast<ParamGenerator<T4> >(g4_),
- static_cast<ParamGenerator<T5> >(g5_),
- static_cast<ParamGenerator<T6> >(g6_),
- static_cast<ParamGenerator<T7> >(g7_)));
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductHolder7& other);
-
- const Generator1 g1_;
- const Generator2 g2_;
- const Generator3 g3_;
- const Generator4 g4_;
- const Generator5 g5_;
- const Generator6 g6_;
- const Generator7 g7_;
-}; // class CartesianProductHolder7
-
-template <class Generator1, class Generator2, class Generator3,
- class Generator4, class Generator5, class Generator6, class Generator7,
- class Generator8>
-class CartesianProductHolder8 {
- public:
-CartesianProductHolder8(const Generator1& g1, const Generator2& g2,
- const Generator3& g3, const Generator4& g4, const Generator5& g5,
- const Generator6& g6, const Generator7& g7, const Generator8& g8)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7),
- g8_(g8) {}
- template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8>
- operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7,
- T8> >() const {
- return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8> >(
- new CartesianProductGenerator8<T1, T2, T3, T4, T5, T6, T7, T8>(
- static_cast<ParamGenerator<T1> >(g1_),
- static_cast<ParamGenerator<T2> >(g2_),
- static_cast<ParamGenerator<T3> >(g3_),
- static_cast<ParamGenerator<T4> >(g4_),
- static_cast<ParamGenerator<T5> >(g5_),
- static_cast<ParamGenerator<T6> >(g6_),
- static_cast<ParamGenerator<T7> >(g7_),
- static_cast<ParamGenerator<T8> >(g8_)));
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductHolder8& other);
-
- const Generator1 g1_;
- const Generator2 g2_;
- const Generator3 g3_;
- const Generator4 g4_;
- const Generator5 g5_;
- const Generator6 g6_;
- const Generator7 g7_;
- const Generator8 g8_;
-}; // class CartesianProductHolder8
-
-template <class Generator1, class Generator2, class Generator3,
- class Generator4, class Generator5, class Generator6, class Generator7,
- class Generator8, class Generator9>
-class CartesianProductHolder9 {
- public:
-CartesianProductHolder9(const Generator1& g1, const Generator2& g2,
- const Generator3& g3, const Generator4& g4, const Generator5& g5,
- const Generator6& g6, const Generator7& g7, const Generator8& g8,
- const Generator9& g9)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
- g9_(g9) {}
- template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9>
- operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
- T9> >() const {
- return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
- T9> >(
- new CartesianProductGenerator9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(
- static_cast<ParamGenerator<T1> >(g1_),
- static_cast<ParamGenerator<T2> >(g2_),
- static_cast<ParamGenerator<T3> >(g3_),
- static_cast<ParamGenerator<T4> >(g4_),
- static_cast<ParamGenerator<T5> >(g5_),
- static_cast<ParamGenerator<T6> >(g6_),
- static_cast<ParamGenerator<T7> >(g7_),
- static_cast<ParamGenerator<T8> >(g8_),
- static_cast<ParamGenerator<T9> >(g9_)));
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductHolder9& other);
-
- const Generator1 g1_;
- const Generator2 g2_;
- const Generator3 g3_;
- const Generator4 g4_;
- const Generator5 g5_;
- const Generator6 g6_;
- const Generator7 g7_;
- const Generator8 g8_;
- const Generator9 g9_;
-}; // class CartesianProductHolder9
-
-template <class Generator1, class Generator2, class Generator3,
- class Generator4, class Generator5, class Generator6, class Generator7,
- class Generator8, class Generator9, class Generator10>
-class CartesianProductHolder10 {
- public:
-CartesianProductHolder10(const Generator1& g1, const Generator2& g2,
- const Generator3& g3, const Generator4& g4, const Generator5& g5,
- const Generator6& g6, const Generator7& g7, const Generator8& g8,
- const Generator9& g9, const Generator10& g10)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
- g9_(g9), g10_(g10) {}
- template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10>
- operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9,
- T10> >() const {
- return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9,
- T10> >(
- new CartesianProductGenerator10<T1, T2, T3, T4, T5, T6, T7, T8, T9,
- T10>(
- static_cast<ParamGenerator<T1> >(g1_),
- static_cast<ParamGenerator<T2> >(g2_),
- static_cast<ParamGenerator<T3> >(g3_),
- static_cast<ParamGenerator<T4> >(g4_),
- static_cast<ParamGenerator<T5> >(g5_),
- static_cast<ParamGenerator<T6> >(g6_),
- static_cast<ParamGenerator<T7> >(g7_),
- static_cast<ParamGenerator<T8> >(g8_),
- static_cast<ParamGenerator<T9> >(g9_),
- static_cast<ParamGenerator<T10> >(g10_)));
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductHolder10& other);
-
- const Generator1 g1_;
- const Generator2 g2_;
- const Generator3 g3_;
- const Generator4 g4_;
- const Generator5 g5_;
- const Generator6 g6_;
- const Generator7 g7_;
- const Generator8 g8_;
- const Generator9 g9_;
- const Generator10 g10_;
-}; // class CartesianProductHolder10
-
-# endif // GTEST_HAS_COMBINE
-
-} // namespace internal
-} // namespace testing
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-param-util.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-param-util.h
deleted file mode 100644
index 97533993c0c..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-param-util.h
+++ /dev/null
@@ -1,883 +0,0 @@
-// Copyright 2008 Google Inc.
-// All Rights Reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Type and function utilities for implementing parameterized tests.
-
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
-
-#include <ctype.h>
-
-#include <cassert>
-#include <iterator>
-#include <memory>
-#include <set>
-#include <tuple>
-#include <utility>
-#include <vector>
-
-#include "gtest/internal/gtest-internal.h"
-#include "gtest/internal/gtest-port.h"
-#include "gtest/gtest-printers.h"
-
-namespace testing {
-// Input to a parameterized test name generator, describing a test parameter.
-// Consists of the parameter value and the integer parameter index.
-template <class ParamType>
-struct TestParamInfo {
- TestParamInfo(const ParamType& a_param, size_t an_index) :
- param(a_param),
- index(an_index) {}
- ParamType param;
- size_t index;
-};
-
-// A builtin parameterized test name generator which returns the result of
-// testing::PrintToString.
-struct PrintToStringParamName {
- template <class ParamType>
- std::string operator()(const TestParamInfo<ParamType>& info) const {
- return PrintToString(info.param);
- }
-};
-
-namespace internal {
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-// Utility Functions
-
-// Outputs a message explaining invalid registration of different
-// fixture class for the same test suite. This may happen when
-// TEST_P macro is used to define two tests with the same name
-// but in different namespaces.
-GTEST_API_ void ReportInvalidTestSuiteType(const char* test_suite_name,
- CodeLocation code_location);
-
-template <typename> class ParamGeneratorInterface;
-template <typename> class ParamGenerator;
-
-// Interface for iterating over elements provided by an implementation
-// of ParamGeneratorInterface<T>.
-template <typename T>
-class ParamIteratorInterface {
- public:
- virtual ~ParamIteratorInterface() {}
- // A pointer to the base generator instance.
- // Used only for the purposes of iterator comparison
- // to make sure that two iterators belong to the same generator.
- virtual const ParamGeneratorInterface<T>* BaseGenerator() const = 0;
- // Advances iterator to point to the next element
- // provided by the generator. The caller is responsible
- // for not calling Advance() on an iterator equal to
- // BaseGenerator()->End().
- virtual void Advance() = 0;
- // Clones the iterator object. Used for implementing copy semantics
- // of ParamIterator<T>.
- virtual ParamIteratorInterface* Clone() const = 0;
- // Dereferences the current iterator and provides (read-only) access
- // to the pointed value. It is the caller's responsibility not to call
- // Current() on an iterator equal to BaseGenerator()->End().
- // Used for implementing ParamGenerator<T>::operator*().
- virtual const T* Current() const = 0;
- // Determines whether the given iterator and other point to the same
- // element in the sequence generated by the generator.
- // Used for implementing ParamGenerator<T>::operator==().
- virtual bool Equals(const ParamIteratorInterface& other) const = 0;
-};
-
-// Class iterating over elements provided by an implementation of
-// ParamGeneratorInterface<T>. It wraps ParamIteratorInterface<T>
-// and implements the const forward iterator concept.
-template <typename T>
-class ParamIterator {
- public:
- typedef T value_type;
- typedef const T& reference;
- typedef ptrdiff_t difference_type;
-
- // ParamIterator assumes ownership of the impl_ pointer.
- ParamIterator(const ParamIterator& other) : impl_(other.impl_->Clone()) {}
- ParamIterator& operator=(const ParamIterator& other) {
- if (this != &other)
- impl_.reset(other.impl_->Clone());
- return *this;
- }
-
- const T& operator*() const { return *impl_->Current(); }
- const T* operator->() const { return impl_->Current(); }
- // Prefix version of operator++.
- ParamIterator& operator++() {
- impl_->Advance();
- return *this;
- }
- // Postfix version of operator++.
- ParamIterator operator++(int /*unused*/) {
- ParamIteratorInterface<T>* clone = impl_->Clone();
- impl_->Advance();
- return ParamIterator(clone);
- }
- bool operator==(const ParamIterator& other) const {
- return impl_.get() == other.impl_.get() || impl_->Equals(*other.impl_);
- }
- bool operator!=(const ParamIterator& other) const {
- return !(*this == other);
- }
-
- private:
- friend class ParamGenerator<T>;
- explicit ParamIterator(ParamIteratorInterface<T>* impl) : impl_(impl) {}
- std::unique_ptr<ParamIteratorInterface<T> > impl_;
-};
-
-// ParamGeneratorInterface<T> is the binary interface to access generators
-// defined in other translation units.
-template <typename T>
-class ParamGeneratorInterface {
- public:
- typedef T ParamType;
-
- virtual ~ParamGeneratorInterface() {}
-
- // Generator interface definition
- virtual ParamIteratorInterface<T>* Begin() const = 0;
- virtual ParamIteratorInterface<T>* End() const = 0;
-};
-
-// Wraps ParamGeneratorInterface<T> and provides general generator syntax
-// compatible with the STL Container concept.
-// This class implements copy initialization semantics and the contained
-// ParamGeneratorInterface<T> instance is shared among all copies
-// of the original object. This is possible because that instance is immutable.
-template<typename T>
-class ParamGenerator {
- public:
- typedef ParamIterator<T> iterator;
-
- explicit ParamGenerator(ParamGeneratorInterface<T>* impl) : impl_(impl) {}
- ParamGenerator(const ParamGenerator& other) : impl_(other.impl_) {}
-
- ParamGenerator& operator=(const ParamGenerator& other) {
- impl_ = other.impl_;
- return *this;
- }
-
- iterator begin() const { return iterator(impl_->Begin()); }
- iterator end() const { return iterator(impl_->End()); }
-
- private:
- std::shared_ptr<const ParamGeneratorInterface<T> > impl_;
-};
-
-// Generates values from a range of two comparable values. Can be used to
-// generate sequences of user-defined types that implement operator+() and
-// operator<().
-// This class is used in the Range() function.
-template <typename T, typename IncrementT>
-class RangeGenerator : public ParamGeneratorInterface<T> {
- public:
- RangeGenerator(T begin, T end, IncrementT step)
- : begin_(begin), end_(end),
- step_(step), end_index_(CalculateEndIndex(begin, end, step)) {}
- ~RangeGenerator() override {}
-
- ParamIteratorInterface<T>* Begin() const override {
- return new Iterator(this, begin_, 0, step_);
- }
- ParamIteratorInterface<T>* End() const override {
- return new Iterator(this, end_, end_index_, step_);
- }
-
- private:
- class Iterator : public ParamIteratorInterface<T> {
- public:
- Iterator(const ParamGeneratorInterface<T>* base, T value, int index,
- IncrementT step)
- : base_(base), value_(value), index_(index), step_(step) {}
- ~Iterator() override {}
-
- const ParamGeneratorInterface<T>* BaseGenerator() const override {
- return base_;
- }
- void Advance() override {
- value_ = static_cast<T>(value_ + step_);
- index_++;
- }
- ParamIteratorInterface<T>* Clone() const override {
- return new Iterator(*this);
- }
- const T* Current() const override { return &value_; }
- bool Equals(const ParamIteratorInterface<T>& other) const override {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- const int other_index =
- CheckedDowncastToActualType<const Iterator>(&other)->index_;
- return index_ == other_index;
- }
-
- private:
- Iterator(const Iterator& other)
- : ParamIteratorInterface<T>(),
- base_(other.base_), value_(other.value_), index_(other.index_),
- step_(other.step_) {}
-
- // No implementation - assignment is unsupported.
- void operator=(const Iterator& other);
-
- const ParamGeneratorInterface<T>* const base_;
- T value_;
- int index_;
- const IncrementT step_;
- }; // class RangeGenerator::Iterator
-
- static int CalculateEndIndex(const T& begin,
- const T& end,
- const IncrementT& step) {
- int end_index = 0;
- for (T i = begin; i < end; i = static_cast<T>(i + step))
- end_index++;
- return end_index;
- }
-
- // No implementation - assignment is unsupported.
- void operator=(const RangeGenerator& other);
-
- const T begin_;
- const T end_;
- const IncrementT step_;
- // The index for the end() iterator. All the elements in the generated
- // sequence are indexed (0-based) to aid iterator comparison.
- const int end_index_;
-}; // class RangeGenerator
-
-
-// Generates values from a pair of STL-style iterators. Used in the
-// ValuesIn() function. The elements are copied from the source range
-// since the source can be located on the stack, and the generator
-// is likely to persist beyond that stack frame.
-template <typename T>
-class ValuesInIteratorRangeGenerator : public ParamGeneratorInterface<T> {
- public:
- template <typename ForwardIterator>
- ValuesInIteratorRangeGenerator(ForwardIterator begin, ForwardIterator end)
- : container_(begin, end) {}
- ~ValuesInIteratorRangeGenerator() override {}
-
- ParamIteratorInterface<T>* Begin() const override {
- return new Iterator(this, container_.begin());
- }
- ParamIteratorInterface<T>* End() const override {
- return new Iterator(this, container_.end());
- }
-
- private:
- typedef typename ::std::vector<T> ContainerType;
-
- class Iterator : public ParamIteratorInterface<T> {
- public:
- Iterator(const ParamGeneratorInterface<T>* base,
- typename ContainerType::const_iterator iterator)
- : base_(base), iterator_(iterator) {}
- ~Iterator() override {}
-
- const ParamGeneratorInterface<T>* BaseGenerator() const override {
- return base_;
- }
- void Advance() override {
- ++iterator_;
- value_.reset();
- }
- ParamIteratorInterface<T>* Clone() const override {
- return new Iterator(*this);
- }
- // We need to use cached value referenced by iterator_ because *iterator_
- // can return a temporary object (and of type other then T), so just
- // having "return &*iterator_;" doesn't work.
- // value_ is updated here and not in Advance() because Advance()
- // can advance iterator_ beyond the end of the range, and we cannot
- // detect that fact. The client code, on the other hand, is
- // responsible for not calling Current() on an out-of-range iterator.
- const T* Current() const override {
- if (value_.get() == nullptr) value_.reset(new T(*iterator_));
- return value_.get();
- }
- bool Equals(const ParamIteratorInterface<T>& other) const override {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- return iterator_ ==
- CheckedDowncastToActualType<const Iterator>(&other)->iterator_;
- }
-
- private:
- Iterator(const Iterator& other)
- // The explicit constructor call suppresses a false warning
- // emitted by gcc when supplied with the -Wextra option.
- : ParamIteratorInterface<T>(),
- base_(other.base_),
- iterator_(other.iterator_) {}
-
- const ParamGeneratorInterface<T>* const base_;
- typename ContainerType::const_iterator iterator_;
- // A cached value of *iterator_. We keep it here to allow access by
- // pointer in the wrapping iterator's operator->().
- // value_ needs to be mutable to be accessed in Current().
- // Use of std::unique_ptr helps manage cached value's lifetime,
- // which is bound by the lifespan of the iterator itself.
- mutable std::unique_ptr<const T> value_;
- }; // class ValuesInIteratorRangeGenerator::Iterator
-
- // No implementation - assignment is unsupported.
- void operator=(const ValuesInIteratorRangeGenerator& other);
-
- const ContainerType container_;
-}; // class ValuesInIteratorRangeGenerator
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Default parameterized test name generator, returns a string containing the
-// integer test parameter index.
-template <class ParamType>
-std::string DefaultParamName(const TestParamInfo<ParamType>& info) {
- Message name_stream;
- name_stream << info.index;
- return name_stream.GetString();
-}
-
-template <typename T = int>
-void TestNotEmpty() {
- static_assert(sizeof(T) == 0, "Empty arguments are not allowed.");
-}
-template <typename T = int>
-void TestNotEmpty(const T&) {}
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Stores a parameter value and later creates tests parameterized with that
-// value.
-template <class TestClass>
-class ParameterizedTestFactory : public TestFactoryBase {
- public:
- typedef typename TestClass::ParamType ParamType;
- explicit ParameterizedTestFactory(ParamType parameter) :
- parameter_(parameter) {}
- Test* CreateTest() override {
- TestClass::SetParam(&parameter_);
- return new TestClass();
- }
-
- private:
- const ParamType parameter_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestFactory);
-};
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// TestMetaFactoryBase is a base class for meta-factories that create
-// test factories for passing into MakeAndRegisterTestInfo function.
-template <class ParamType>
-class TestMetaFactoryBase {
- public:
- virtual ~TestMetaFactoryBase() {}
-
- virtual TestFactoryBase* CreateTestFactory(ParamType parameter) = 0;
-};
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// TestMetaFactory creates test factories for passing into
-// MakeAndRegisterTestInfo function. Since MakeAndRegisterTestInfo receives
-// ownership of test factory pointer, same factory object cannot be passed
-// into that method twice. But ParameterizedTestSuiteInfo is going to call
-// it for each Test/Parameter value combination. Thus it needs meta factory
-// creator class.
-template <class TestSuite>
-class TestMetaFactory
- : public TestMetaFactoryBase<typename TestSuite::ParamType> {
- public:
- using ParamType = typename TestSuite::ParamType;
-
- TestMetaFactory() {}
-
- TestFactoryBase* CreateTestFactory(ParamType parameter) override {
- return new ParameterizedTestFactory<TestSuite>(parameter);
- }
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TestMetaFactory);
-};
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// ParameterizedTestSuiteInfoBase is a generic interface
-// to ParameterizedTestSuiteInfo classes. ParameterizedTestSuiteInfoBase
-// accumulates test information provided by TEST_P macro invocations
-// and generators provided by INSTANTIATE_TEST_SUITE_P macro invocations
-// and uses that information to register all resulting test instances
-// in RegisterTests method. The ParameterizeTestSuiteRegistry class holds
-// a collection of pointers to the ParameterizedTestSuiteInfo objects
-// and calls RegisterTests() on each of them when asked.
-class ParameterizedTestSuiteInfoBase {
- public:
- virtual ~ParameterizedTestSuiteInfoBase() {}
-
- // Base part of test suite name for display purposes.
- virtual const std::string& GetTestSuiteName() const = 0;
- // Test case id to verify identity.
- virtual TypeId GetTestSuiteTypeId() const = 0;
- // UnitTest class invokes this method to register tests in this
- // test suite right before running them in RUN_ALL_TESTS macro.
- // This method should not be called more than once on any single
- // instance of a ParameterizedTestSuiteInfoBase derived class.
- virtual void RegisterTests() = 0;
-
- protected:
- ParameterizedTestSuiteInfoBase() {}
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestSuiteInfoBase);
-};
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// ParameterizedTestSuiteInfo accumulates tests obtained from TEST_P
-// macro invocations for a particular test suite and generators
-// obtained from INSTANTIATE_TEST_SUITE_P macro invocations for that
-// test suite. It registers tests with all values generated by all
-// generators when asked.
-template <class TestSuite>
-class ParameterizedTestSuiteInfo : public ParameterizedTestSuiteInfoBase {
- public:
- // ParamType and GeneratorCreationFunc are private types but are required
- // for declarations of public methods AddTestPattern() and
- // AddTestSuiteInstantiation().
- using ParamType = typename TestSuite::ParamType;
- // A function that returns an instance of appropriate generator type.
- typedef ParamGenerator<ParamType>(GeneratorCreationFunc)();
- using ParamNameGeneratorFunc = std::string(const TestParamInfo<ParamType>&);
-
- explicit ParameterizedTestSuiteInfo(const char* name,
- CodeLocation code_location)
- : test_suite_name_(name), code_location_(code_location) {}
-
- // Test case base name for display purposes.
- const std::string& GetTestSuiteName() const override {
- return test_suite_name_;
- }
- // Test case id to verify identity.
- TypeId GetTestSuiteTypeId() const override { return GetTypeId<TestSuite>(); }
- // TEST_P macro uses AddTestPattern() to record information
- // about a single test in a LocalTestInfo structure.
- // test_suite_name is the base name of the test suite (without invocation
- // prefix). test_base_name is the name of an individual test without
- // parameter index. For the test SequenceA/FooTest.DoBar/1 FooTest is
- // test suite base name and DoBar is test base name.
- void AddTestPattern(const char* test_suite_name, const char* test_base_name,
- TestMetaFactoryBase<ParamType>* meta_factory) {
- tests_.push_back(std::shared_ptr<TestInfo>(
- new TestInfo(test_suite_name, test_base_name, meta_factory)));
- }
- // INSTANTIATE_TEST_SUITE_P macro uses AddGenerator() to record information
- // about a generator.
- int AddTestSuiteInstantiation(const std::string& instantiation_name,
- GeneratorCreationFunc* func,
- ParamNameGeneratorFunc* name_func,
- const char* file, int line) {
- instantiations_.push_back(
- InstantiationInfo(instantiation_name, func, name_func, file, line));
- return 0; // Return value used only to run this method in namespace scope.
- }
- // UnitTest class invokes this method to register tests in this test suite
- // test suites right before running tests in RUN_ALL_TESTS macro.
- // This method should not be called more than once on any single
- // instance of a ParameterizedTestSuiteInfoBase derived class.
- // UnitTest has a guard to prevent from calling this method more than once.
- void RegisterTests() override {
- for (typename TestInfoContainer::iterator test_it = tests_.begin();
- test_it != tests_.end(); ++test_it) {
- std::shared_ptr<TestInfo> test_info = *test_it;
- for (typename InstantiationContainer::iterator gen_it =
- instantiations_.begin(); gen_it != instantiations_.end();
- ++gen_it) {
- const std::string& instantiation_name = gen_it->name;
- ParamGenerator<ParamType> generator((*gen_it->generator)());
- ParamNameGeneratorFunc* name_func = gen_it->name_func;
- const char* file = gen_it->file;
- int line = gen_it->line;
-
- std::string test_suite_name;
- if ( !instantiation_name.empty() )
- test_suite_name = instantiation_name + "/";
- test_suite_name += test_info->test_suite_base_name;
-
- size_t i = 0;
- std::set<std::string> test_param_names;
- for (typename ParamGenerator<ParamType>::iterator param_it =
- generator.begin();
- param_it != generator.end(); ++param_it, ++i) {
- Message test_name_stream;
-
- std::string param_name = name_func(
- TestParamInfo<ParamType>(*param_it, i));
-
- GTEST_CHECK_(IsValidParamName(param_name))
- << "Parameterized test name '" << param_name
- << "' is invalid, in " << file
- << " line " << line << std::endl;
-
- GTEST_CHECK_(test_param_names.count(param_name) == 0)
- << "Duplicate parameterized test name '" << param_name
- << "', in " << file << " line " << line << std::endl;
-
- test_param_names.insert(param_name);
-
- if (!test_info->test_base_name.empty()) {
- test_name_stream << test_info->test_base_name << "/";
- }
- test_name_stream << param_name;
- MakeAndRegisterTestInfo(
- test_suite_name.c_str(), test_name_stream.GetString().c_str(),
- nullptr, // No type parameter.
- PrintToString(*param_it).c_str(), code_location_,
- GetTestSuiteTypeId(),
- SuiteApiResolver<TestSuite>::GetSetUpCaseOrSuite(file, line),
- SuiteApiResolver<TestSuite>::GetTearDownCaseOrSuite(file, line),
- test_info->test_meta_factory->CreateTestFactory(*param_it));
- } // for param_it
- } // for gen_it
- } // for test_it
- } // RegisterTests
-
- private:
- // LocalTestInfo structure keeps information about a single test registered
- // with TEST_P macro.
- struct TestInfo {
- TestInfo(const char* a_test_suite_base_name, const char* a_test_base_name,
- TestMetaFactoryBase<ParamType>* a_test_meta_factory)
- : test_suite_base_name(a_test_suite_base_name),
- test_base_name(a_test_base_name),
- test_meta_factory(a_test_meta_factory) {}
-
- const std::string test_suite_base_name;
- const std::string test_base_name;
- const std::unique_ptr<TestMetaFactoryBase<ParamType> > test_meta_factory;
- };
- using TestInfoContainer = ::std::vector<std::shared_ptr<TestInfo> >;
- // Records data received from INSTANTIATE_TEST_SUITE_P macros:
- // <Instantiation name, Sequence generator creation function,
- // Name generator function, Source file, Source line>
- struct InstantiationInfo {
- InstantiationInfo(const std::string &name_in,
- GeneratorCreationFunc* generator_in,
- ParamNameGeneratorFunc* name_func_in,
- const char* file_in,
- int line_in)
- : name(name_in),
- generator(generator_in),
- name_func(name_func_in),
- file(file_in),
- line(line_in) {}
-
- std::string name;
- GeneratorCreationFunc* generator;
- ParamNameGeneratorFunc* name_func;
- const char* file;
- int line;
- };
- typedef ::std::vector<InstantiationInfo> InstantiationContainer;
-
- static bool IsValidParamName(const std::string& name) {
- // Check for empty string
- if (name.empty())
- return false;
-
- // Check for invalid characters
- for (std::string::size_type index = 0; index < name.size(); ++index) {
- if (!isalnum(name[index]) && name[index] != '_')
- return false;
- }
-
- return true;
- }
-
- const std::string test_suite_name_;
- CodeLocation code_location_;
- TestInfoContainer tests_;
- InstantiationContainer instantiations_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestSuiteInfo);
-}; // class ParameterizedTestSuiteInfo
-
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-template <class TestCase>
-using ParameterizedTestCaseInfo = ParameterizedTestSuiteInfo<TestCase>;
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// ParameterizedTestSuiteRegistry contains a map of
-// ParameterizedTestSuiteInfoBase classes accessed by test suite names. TEST_P
-// and INSTANTIATE_TEST_SUITE_P macros use it to locate their corresponding
-// ParameterizedTestSuiteInfo descriptors.
-class ParameterizedTestSuiteRegistry {
- public:
- ParameterizedTestSuiteRegistry() {}
- ~ParameterizedTestSuiteRegistry() {
- for (auto& test_suite_info : test_suite_infos_) {
- delete test_suite_info;
- }
- }
-
- // Looks up or creates and returns a structure containing information about
- // tests and instantiations of a particular test suite.
- template <class TestSuite>
- ParameterizedTestSuiteInfo<TestSuite>* GetTestSuitePatternHolder(
- const char* test_suite_name, CodeLocation code_location) {
- ParameterizedTestSuiteInfo<TestSuite>* typed_test_info = nullptr;
- for (auto& test_suite_info : test_suite_infos_) {
- if (test_suite_info->GetTestSuiteName() == test_suite_name) {
- if (test_suite_info->GetTestSuiteTypeId() != GetTypeId<TestSuite>()) {
- // Complain about incorrect usage of Google Test facilities
- // and terminate the program since we cannot guaranty correct
- // test suite setup and tear-down in this case.
- ReportInvalidTestSuiteType(test_suite_name, code_location);
- posix::Abort();
- } else {
- // At this point we are sure that the object we found is of the same
- // type we are looking for, so we downcast it to that type
- // without further checks.
- typed_test_info = CheckedDowncastToActualType<
- ParameterizedTestSuiteInfo<TestSuite> >(test_suite_info);
- }
- break;
- }
- }
- if (typed_test_info == nullptr) {
- typed_test_info = new ParameterizedTestSuiteInfo<TestSuite>(
- test_suite_name, code_location);
- test_suite_infos_.push_back(typed_test_info);
- }
- return typed_test_info;
- }
- void RegisterTests() {
- for (auto& test_suite_info : test_suite_infos_) {
- test_suite_info->RegisterTests();
- }
- }
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- template <class TestCase>
- ParameterizedTestCaseInfo<TestCase>* GetTestCasePatternHolder(
- const char* test_case_name, CodeLocation code_location) {
- return GetTestSuitePatternHolder<TestCase>(test_case_name, code_location);
- }
-
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
- private:
- using TestSuiteInfoContainer = ::std::vector<ParameterizedTestSuiteInfoBase*>;
-
- TestSuiteInfoContainer test_suite_infos_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestSuiteRegistry);
-};
-
-} // namespace internal
-
-// Forward declarations of ValuesIn(), which is implemented in
-// include/gtest/gtest-param-test.h.
-template <class Container>
-internal::ParamGenerator<typename Container::value_type> ValuesIn(
- const Container& container);
-
-namespace internal {
-// Used in the Values() function to provide polymorphic capabilities.
-
-template <typename... Ts>
-class ValueArray {
- public:
- ValueArray(Ts... v) : v_{std::move(v)...} {}
-
- template <typename T>
- operator ParamGenerator<T>() const { // NOLINT
- return ValuesIn(MakeVector<T>(MakeIndexSequence<sizeof...(Ts)>()));
- }
-
- private:
- template <typename T, size_t... I>
- std::vector<T> MakeVector(IndexSequence<I...>) const {
- return std::vector<T>{static_cast<T>(v_.template Get<I>())...};
- }
-
- FlatTuple<Ts...> v_;
-};
-
-template <typename... T>
-class CartesianProductGenerator
- : public ParamGeneratorInterface<::std::tuple<T...>> {
- public:
- typedef ::std::tuple<T...> ParamType;
-
- CartesianProductGenerator(const std::tuple<ParamGenerator<T>...>& g)
- : generators_(g) {}
- ~CartesianProductGenerator() override {}
-
- ParamIteratorInterface<ParamType>* Begin() const override {
- return new Iterator(this, generators_, false);
- }
- ParamIteratorInterface<ParamType>* End() const override {
- return new Iterator(this, generators_, true);
- }
-
- private:
- template <class I>
- class IteratorImpl;
- template <size_t... I>
- class IteratorImpl<IndexSequence<I...>>
- : public ParamIteratorInterface<ParamType> {
- public:
- IteratorImpl(const ParamGeneratorInterface<ParamType>* base,
- const std::tuple<ParamGenerator<T>...>& generators, bool is_end)
- : base_(base),
- begin_(std::get<I>(generators).begin()...),
- end_(std::get<I>(generators).end()...),
- current_(is_end ? end_ : begin_) {
- ComputeCurrentValue();
- }
- ~IteratorImpl() override {}
-
- const ParamGeneratorInterface<ParamType>* BaseGenerator() const override {
- return base_;
- }
- // Advance should not be called on beyond-of-range iterators
- // so no component iterators must be beyond end of range, either.
- void Advance() override {
- assert(!AtEnd());
- // Advance the last iterator.
- ++std::get<sizeof...(T) - 1>(current_);
- // if that reaches end, propagate that up.
- AdvanceIfEnd<sizeof...(T) - 1>();
- ComputeCurrentValue();
- }
- ParamIteratorInterface<ParamType>* Clone() const override {
- return new IteratorImpl(*this);
- }
-
- const ParamType* Current() const override { return current_value_.get(); }
-
- bool Equals(const ParamIteratorInterface<ParamType>& other) const override {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- const IteratorImpl* typed_other =
- CheckedDowncastToActualType<const IteratorImpl>(&other);
-
- // We must report iterators equal if they both point beyond their
- // respective ranges. That can happen in a variety of fashions,
- // so we have to consult AtEnd().
- if (AtEnd() && typed_other->AtEnd()) return true;
-
- bool same = true;
- bool dummy[] = {
- (same = same && std::get<I>(current_) ==
- std::get<I>(typed_other->current_))...};
- (void)dummy;
- return same;
- }
-
- private:
- template <size_t ThisI>
- void AdvanceIfEnd() {
- if (std::get<ThisI>(current_) != std::get<ThisI>(end_)) return;
-
- bool last = ThisI == 0;
- if (last) {
- // We are done. Nothing else to propagate.
- return;
- }
-
- constexpr size_t NextI = ThisI - (ThisI != 0);
- std::get<ThisI>(current_) = std::get<ThisI>(begin_);
- ++std::get<NextI>(current_);
- AdvanceIfEnd<NextI>();
- }
-
- void ComputeCurrentValue() {
- if (!AtEnd())
- current_value_ = std::make_shared<ParamType>(*std::get<I>(current_)...);
- }
- bool AtEnd() const {
- bool at_end = false;
- bool dummy[] = {
- (at_end = at_end || std::get<I>(current_) == std::get<I>(end_))...};
- (void)dummy;
- return at_end;
- }
-
- const ParamGeneratorInterface<ParamType>* const base_;
- std::tuple<typename ParamGenerator<T>::iterator...> begin_;
- std::tuple<typename ParamGenerator<T>::iterator...> end_;
- std::tuple<typename ParamGenerator<T>::iterator...> current_;
- std::shared_ptr<ParamType> current_value_;
- };
-
- using Iterator = IteratorImpl<typename MakeIndexSequence<sizeof...(T)>::type>;
-
- std::tuple<ParamGenerator<T>...> generators_;
-};
-
-template <class... Gen>
-class CartesianProductHolder {
- public:
- CartesianProductHolder(const Gen&... g) : generators_(g...) {}
- template <typename... T>
- operator ParamGenerator<::std::tuple<T...>>() const {
- return ParamGenerator<::std::tuple<T...>>(
- new CartesianProductGenerator<T...>(generators_));
- }
-
- private:
- std::tuple<Gen...> generators_;
-};
-
-} // namespace internal
-} // namespace testing
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-port-arch.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-port-arch.h
deleted file mode 100644
index cece93dba12..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-port-arch.h
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This header file defines the GTEST_OS_* macro.
-// It is separate from gtest-port.h so that custom/gtest-port.h can include it.
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_
-
-// Determines the platform on which Google Test is compiled.
-#ifdef __CYGWIN__
-# define GTEST_OS_CYGWIN 1
-# elif defined(__MINGW__) || defined(__MINGW32__) || defined(__MINGW64__)
-# define GTEST_OS_WINDOWS_MINGW 1
-# define GTEST_OS_WINDOWS 1
-#elif defined _WIN32
-# define GTEST_OS_WINDOWS 1
-# ifdef _WIN32_WCE
-# define GTEST_OS_WINDOWS_MOBILE 1
-# elif defined(WINAPI_FAMILY)
-# include <winapifamily.h>
-# if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
-# define GTEST_OS_WINDOWS_DESKTOP 1
-# elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE_APP)
-# define GTEST_OS_WINDOWS_PHONE 1
-# elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
-# define GTEST_OS_WINDOWS_RT 1
-# elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_TV_TITLE)
-# define GTEST_OS_WINDOWS_PHONE 1
-# define GTEST_OS_WINDOWS_TV_TITLE 1
-# else
- // WINAPI_FAMILY defined but no known partition matched.
- // Default to desktop.
-# define GTEST_OS_WINDOWS_DESKTOP 1
-# endif
-# else
-# define GTEST_OS_WINDOWS_DESKTOP 1
-# endif // _WIN32_WCE
-#elif defined __OS2__
-# define GTEST_OS_OS2 1
-#elif defined __APPLE__
-# define GTEST_OS_MAC 1
-# if TARGET_OS_IPHONE
-# define GTEST_OS_IOS 1
-# endif
-#elif defined __DragonFly__
-# define GTEST_OS_DRAGONFLY 1
-#elif defined __FreeBSD__
-# define GTEST_OS_FREEBSD 1
-#elif defined __Fuchsia__
-# define GTEST_OS_FUCHSIA 1
-#elif defined(__GLIBC__) && defined(__FreeBSD_kernel__)
-# define GTEST_OS_GNU_KFREEBSD 1
-#elif defined __linux__
-# define GTEST_OS_LINUX 1
-# if defined __ANDROID__
-# define GTEST_OS_LINUX_ANDROID 1
-# endif
-#elif defined __MVS__
-# define GTEST_OS_ZOS 1
-#elif defined(__sun) && defined(__SVR4)
-# define GTEST_OS_SOLARIS 1
-#elif defined(_AIX)
-# define GTEST_OS_AIX 1
-#elif defined(__hpux)
-# define GTEST_OS_HPUX 1
-#elif defined __native_client__
-# define GTEST_OS_NACL 1
-#elif defined __NetBSD__
-# define GTEST_OS_NETBSD 1
-#elif defined __OpenBSD__
-# define GTEST_OS_OPENBSD 1
-#elif defined __QNX__
-# define GTEST_OS_QNX 1
-#elif defined(__HAIKU__)
-#define GTEST_OS_HAIKU 1
-#endif // __CYGWIN__
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-port.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-port.h
deleted file mode 100644
index 063fcb1083b..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-port.h
+++ /dev/null
@@ -1,2231 +0,0 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Low-level types and utilities for porting Google Test to various
-// platforms. All macros ending with _ and symbols defined in an
-// internal namespace are subject to change without notice. Code
-// outside Google Test MUST NOT USE THEM DIRECTLY. Macros that don't
-// end with _ are part of Google Test's public API and can be used by
-// code outside Google Test.
-//
-// This file is fundamental to Google Test. All other Google Test source
-// files are expected to #include this. Therefore, it cannot #include
-// any other Google Test header.
-
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
-
-// Environment-describing macros
-// -----------------------------
-//
-// Google Test can be used in many different environments. Macros in
-// this section tell Google Test what kind of environment it is being
-// used in, such that Google Test can provide environment-specific
-// features and implementations.
-//
-// Google Test tries to automatically detect the properties of its
-// environment, so users usually don't need to worry about these
-// macros. However, the automatic detection is not perfect.
-// Sometimes it's necessary for a user to define some of the following
-// macros in the build script to override Google Test's decisions.
-//
-// If the user doesn't define a macro in the list, Google Test will
-// provide a default definition. After this header is #included, all
-// macros in this list will be defined to either 1 or 0.
-//
-// Notes to maintainers:
-// - Each macro here is a user-tweakable knob; do not grow the list
-// lightly.
-// - Use #if to key off these macros. Don't use #ifdef or "#if
-// defined(...)", which will not work as these macros are ALWAYS
-// defined.
-//
-// GTEST_HAS_CLONE - Define it to 1/0 to indicate that clone(2)
-// is/isn't available.
-// GTEST_HAS_EXCEPTIONS - Define it to 1/0 to indicate that exceptions
-// are enabled.
-// GTEST_HAS_POSIX_RE - Define it to 1/0 to indicate that POSIX regular
-// expressions are/aren't available.
-// GTEST_HAS_PTHREAD - Define it to 1/0 to indicate that <pthread.h>
-// is/isn't available.
-// GTEST_HAS_RTTI - Define it to 1/0 to indicate that RTTI is/isn't
-// enabled.
-// GTEST_HAS_STD_WSTRING - Define it to 1/0 to indicate that
-// std::wstring does/doesn't work (Google Test can
-// be used where std::wstring is unavailable).
-// GTEST_HAS_SEH - Define it to 1/0 to indicate whether the
-// compiler supports Microsoft's "Structured
-// Exception Handling".
-// GTEST_HAS_STREAM_REDIRECTION
-// - Define it to 1/0 to indicate whether the
-// platform supports I/O stream redirection using
-// dup() and dup2().
-// GTEST_LINKED_AS_SHARED_LIBRARY
-// - Define to 1 when compiling tests that use
-// Google Test as a shared library (known as
-// DLL on Windows).
-// GTEST_CREATE_SHARED_LIBRARY
-// - Define to 1 when compiling Google Test itself
-// as a shared library.
-// GTEST_DEFAULT_DEATH_TEST_STYLE
-// - The default value of --gtest_death_test_style.
-// The legacy default has been "fast" in the open
-// source version since 2008. The recommended value
-// is "threadsafe", and can be set in
-// custom/gtest-port.h.
-
-// Platform-indicating macros
-// --------------------------
-//
-// Macros indicating the platform on which Google Test is being used
-// (a macro is defined to 1 if compiled on the given platform;
-// otherwise UNDEFINED -- it's never defined to 0.). Google Test
-// defines these macros automatically. Code outside Google Test MUST
-// NOT define them.
-//
-// GTEST_OS_AIX - IBM AIX
-// GTEST_OS_CYGWIN - Cygwin
-// GTEST_OS_DRAGONFLY - DragonFlyBSD
-// GTEST_OS_FREEBSD - FreeBSD
-// GTEST_OS_FUCHSIA - Fuchsia
-// GTEST_OS_GNU_KFREEBSD - GNU/kFreeBSD
-// GTEST_OS_HAIKU - Haiku
-// GTEST_OS_HPUX - HP-UX
-// GTEST_OS_LINUX - Linux
-// GTEST_OS_LINUX_ANDROID - Google Android
-// GTEST_OS_MAC - Mac OS X
-// GTEST_OS_IOS - iOS
-// GTEST_OS_NACL - Google Native Client (NaCl)
-// GTEST_OS_NETBSD - NetBSD
-// GTEST_OS_OPENBSD - OpenBSD
-// GTEST_OS_OS2 - OS/2
-// GTEST_OS_QNX - QNX
-// GTEST_OS_SOLARIS - Sun Solaris
-// GTEST_OS_WINDOWS - Windows (Desktop, MinGW, or Mobile)
-// GTEST_OS_WINDOWS_DESKTOP - Windows Desktop
-// GTEST_OS_WINDOWS_MINGW - MinGW
-// GTEST_OS_WINDOWS_MOBILE - Windows Mobile
-// GTEST_OS_WINDOWS_PHONE - Windows Phone
-// GTEST_OS_WINDOWS_RT - Windows Store App/WinRT
-// GTEST_OS_ZOS - z/OS
-//
-// Among the platforms, Cygwin, Linux, Mac OS X, and Windows have the
-// most stable support. Since core members of the Google Test project
-// don't have access to other platforms, support for them may be less
-// stable. If you notice any problems on your platform, please notify
-// googletestframework@googlegroups.com (patches for fixing them are
-// even more welcome!).
-//
-// It is possible that none of the GTEST_OS_* macros are defined.
-
-// Feature-indicating macros
-// -------------------------
-//
-// Macros indicating which Google Test features are available (a macro
-// is defined to 1 if the corresponding feature is supported;
-// otherwise UNDEFINED -- it's never defined to 0.). Google Test
-// defines these macros automatically. Code outside Google Test MUST
-// NOT define them.
-//
-// These macros are public so that portable tests can be written.
-// Such tests typically surround code using a feature with an #if
-// which controls that code. For example:
-//
-// #if GTEST_HAS_DEATH_TEST
-// EXPECT_DEATH(DoSomethingDeadly());
-// #endif
-//
-// GTEST_HAS_DEATH_TEST - death tests
-// GTEST_HAS_TYPED_TEST - typed tests
-// GTEST_HAS_TYPED_TEST_P - type-parameterized tests
-// GTEST_IS_THREADSAFE - Google Test is thread-safe.
-// GOOGLETEST_CM0007 DO NOT DELETE
-// GTEST_USES_POSIX_RE - enhanced POSIX regex is used. Do not confuse with
-// GTEST_HAS_POSIX_RE (see above) which users can
-// define themselves.
-// GTEST_USES_SIMPLE_RE - our own simple regex is used;
-// the above RE\b(s) are mutually exclusive.
-
-// Misc public macros
-// ------------------
-//
-// GTEST_FLAG(flag_name) - references the variable corresponding to
-// the given Google Test flag.
-
-// Internal utilities
-// ------------------
-//
-// The following macros and utilities are for Google Test's INTERNAL
-// use only. Code outside Google Test MUST NOT USE THEM DIRECTLY.
-//
-// Macros for basic C++ coding:
-// GTEST_AMBIGUOUS_ELSE_BLOCKER_ - for disabling a gcc warning.
-// GTEST_ATTRIBUTE_UNUSED_ - declares that a class' instances or a
-// variable don't have to be used.
-// GTEST_DISALLOW_ASSIGN_ - disables operator=.
-// GTEST_DISALLOW_COPY_AND_ASSIGN_ - disables copy ctor and operator=.
-// GTEST_MUST_USE_RESULT_ - declares that a function's result must be used.
-// GTEST_INTENTIONAL_CONST_COND_PUSH_ - start code section where MSVC C4127 is
-// suppressed (constant conditional).
-// GTEST_INTENTIONAL_CONST_COND_POP_ - finish code section where MSVC C4127
-// is suppressed.
-//
-// Synchronization:
-// Mutex, MutexLock, ThreadLocal, GetThreadCount()
-// - synchronization primitives.
-//
-// Regular expressions:
-// RE - a simple regular expression class using the POSIX
-// Extended Regular Expression syntax on UNIX-like platforms
-// GOOGLETEST_CM0008 DO NOT DELETE
-// or a reduced regular exception syntax on other
-// platforms, including Windows.
-// Logging:
-// GTEST_LOG_() - logs messages at the specified severity level.
-// LogToStderr() - directs all log messages to stderr.
-// FlushInfoLog() - flushes informational log messages.
-//
-// Stdout and stderr capturing:
-// CaptureStdout() - starts capturing stdout.
-// GetCapturedStdout() - stops capturing stdout and returns the captured
-// string.
-// CaptureStderr() - starts capturing stderr.
-// GetCapturedStderr() - stops capturing stderr and returns the captured
-// string.
-//
-// Integer types:
-// TypeWithSize - maps an integer to a int type.
-// Int32, UInt32, Int64, UInt64, TimeInMillis
-// - integers of known sizes.
-// BiggestInt - the biggest signed integer type.
-//
-// Command-line utilities:
-// GTEST_DECLARE_*() - declares a flag.
-// GTEST_DEFINE_*() - defines a flag.
-// GetInjectableArgvs() - returns the command line as a vector of strings.
-//
-// Environment variable utilities:
-// GetEnv() - gets the value of an environment variable.
-// BoolFromGTestEnv() - parses a bool environment variable.
-// Int32FromGTestEnv() - parses an Int32 environment variable.
-// StringFromGTestEnv() - parses a string environment variable.
-//
-// Deprecation warnings:
-// GTEST_INTERNAL_DEPRECATED(message) - attribute marking a function as
-// deprecated; calling a marked function
-// should generate a compiler warning
-
-#include <ctype.h> // for isspace, etc
-#include <stddef.h> // for ptrdiff_t
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <memory>
-#include <type_traits>
-
-#ifndef _WIN32_WCE
-# include <sys/types.h>
-# include <sys/stat.h>
-#endif // !_WIN32_WCE
-
-#if defined __APPLE__
-# include <AvailabilityMacros.h>
-# include <TargetConditionals.h>
-#endif
-
-#include <algorithm> // NOLINT
-#include <iostream> // NOLINT
-#include <sstream> // NOLINT
-#include <string> // NOLINT
-#include <tuple>
-#include <utility>
-#include <vector> // NOLINT
-
-#include "gtest/internal/gtest-port-arch.h"
-#include "gtest/internal/custom/gtest-port.h"
-
-#if !defined(GTEST_DEV_EMAIL_)
-# define GTEST_DEV_EMAIL_ "googletestframework@@googlegroups.com"
-# define GTEST_FLAG_PREFIX_ "gtest_"
-# define GTEST_FLAG_PREFIX_DASH_ "gtest-"
-# define GTEST_FLAG_PREFIX_UPPER_ "GTEST_"
-# define GTEST_NAME_ "Google Test"
-# define GTEST_PROJECT_URL_ "https://github.com/google/googletest/"
-#endif // !defined(GTEST_DEV_EMAIL_)
-
-#if !defined(GTEST_INIT_GOOGLE_TEST_NAME_)
-# define GTEST_INIT_GOOGLE_TEST_NAME_ "testing::InitGoogleTest"
-#endif // !defined(GTEST_INIT_GOOGLE_TEST_NAME_)
-
-// Determines the version of gcc that is used to compile this.
-#ifdef __GNUC__
-// 40302 means version 4.3.2.
-# define GTEST_GCC_VER_ \
- (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__)
-#endif // __GNUC__
-
-// Macros for disabling Microsoft Visual C++ warnings.
-//
-// GTEST_DISABLE_MSC_WARNINGS_PUSH_(4800 4385)
-// /* code that triggers warnings C4800 and C4385 */
-// GTEST_DISABLE_MSC_WARNINGS_POP_()
-#if defined(_MSC_VER)
-# define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings) \
- __pragma(warning(push)) \
- __pragma(warning(disable: warnings))
-# define GTEST_DISABLE_MSC_WARNINGS_POP_() \
- __pragma(warning(pop))
-#else
-// Not all compilers are MSVC
-# define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings)
-# define GTEST_DISABLE_MSC_WARNINGS_POP_()
-#endif
-
-// Clang on Windows does not understand MSVC's pragma warning.
-// We need clang-specific way to disable function deprecation warning.
-#ifdef __clang__
-# define GTEST_DISABLE_MSC_DEPRECATED_PUSH_() \
- _Pragma("clang diagnostic push") \
- _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") \
- _Pragma("clang diagnostic ignored \"-Wdeprecated-implementations\"")
-#define GTEST_DISABLE_MSC_DEPRECATED_POP_() \
- _Pragma("clang diagnostic pop")
-#else
-# define GTEST_DISABLE_MSC_DEPRECATED_PUSH_() \
- GTEST_DISABLE_MSC_WARNINGS_PUSH_(4996)
-# define GTEST_DISABLE_MSC_DEPRECATED_POP_() \
- GTEST_DISABLE_MSC_WARNINGS_POP_()
-#endif
-
-// Brings in definitions for functions used in the testing::internal::posix
-// namespace (read, write, close, chdir, isatty, stat). We do not currently
-// use them on Windows Mobile.
-#if GTEST_OS_WINDOWS
-# if !GTEST_OS_WINDOWS_MOBILE
-# include <direct.h>
-# include <io.h>
-# endif
-// In order to avoid having to include <windows.h>, use forward declaration
-#if GTEST_OS_WINDOWS_MINGW && !defined(__MINGW64_VERSION_MAJOR)
-// MinGW defined _CRITICAL_SECTION and _RTL_CRITICAL_SECTION as two
-// separate (equivalent) structs, instead of using typedef
-typedef struct _CRITICAL_SECTION GTEST_CRITICAL_SECTION;
-#else
-// Assume CRITICAL_SECTION is a typedef of _RTL_CRITICAL_SECTION.
-// This assumption is verified by
-// WindowsTypesTest.CRITICAL_SECTIONIs_RTL_CRITICAL_SECTION.
-typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION;
-#endif
-#else
-// This assumes that non-Windows OSes provide unistd.h. For OSes where this
-// is not the case, we need to include headers that provide the functions
-// mentioned above.
-# include <unistd.h>
-# include <strings.h>
-#endif // GTEST_OS_WINDOWS
-
-#if GTEST_OS_LINUX_ANDROID
-// Used to define __ANDROID_API__ matching the target NDK API level.
-# include <android/api-level.h> // NOLINT
-#endif
-
-// Defines this to true if and only if Google Test can use POSIX regular
-// expressions.
-#ifndef GTEST_HAS_POSIX_RE
-# if GTEST_OS_LINUX_ANDROID
-// On Android, <regex.h> is only available starting with Gingerbread.
-# define GTEST_HAS_POSIX_RE (__ANDROID_API__ >= 9)
-# else
-# define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS)
-# endif
-#endif
-
-#if GTEST_USES_PCRE
-// The appropriate headers have already been included.
-
-#elif GTEST_HAS_POSIX_RE
-
-// On some platforms, <regex.h> needs someone to define size_t, and
-// won't compile otherwise. We can #include it here as we already
-// included <stdlib.h>, which is guaranteed to define size_t through
-// <stddef.h>.
-# include <regex.h> // NOLINT
-
-# define GTEST_USES_POSIX_RE 1
-
-#elif GTEST_OS_WINDOWS
-
-// <regex.h> is not available on Windows. Use our own simple regex
-// implementation instead.
-# define GTEST_USES_SIMPLE_RE 1
-
-#else
-
-// <regex.h> may not be available on this platform. Use our own
-// simple regex implementation instead.
-# define GTEST_USES_SIMPLE_RE 1
-
-#endif // GTEST_USES_PCRE
-
-#ifndef GTEST_HAS_EXCEPTIONS
-// The user didn't tell us whether exceptions are enabled, so we need
-// to figure it out.
-# if defined(_MSC_VER) && defined(_CPPUNWIND)
-// MSVC defines _CPPUNWIND to 1 if and only if exceptions are enabled.
-# define GTEST_HAS_EXCEPTIONS 1
-# elif defined(__BORLANDC__)
-// C++Builder's implementation of the STL uses the _HAS_EXCEPTIONS
-// macro to enable exceptions, so we'll do the same.
-// Assumes that exceptions are enabled by default.
-# ifndef _HAS_EXCEPTIONS
-# define _HAS_EXCEPTIONS 1
-# endif // _HAS_EXCEPTIONS
-# define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS
-# elif defined(__clang__)
-// clang defines __EXCEPTIONS if and only if exceptions are enabled before clang
-// 220714, but if and only if cleanups are enabled after that. In Obj-C++ files,
-// there can be cleanups for ObjC exceptions which also need cleanups, even if
-// C++ exceptions are disabled. clang has __has_feature(cxx_exceptions) which
-// checks for C++ exceptions starting at clang r206352, but which checked for
-// cleanups prior to that. To reliably check for C++ exception availability with
-// clang, check for
-// __EXCEPTIONS && __has_feature(cxx_exceptions).
-# define GTEST_HAS_EXCEPTIONS (__EXCEPTIONS && __has_feature(cxx_exceptions))
-# elif defined(__GNUC__) && __EXCEPTIONS
-// gcc defines __EXCEPTIONS to 1 if and only if exceptions are enabled.
-# define GTEST_HAS_EXCEPTIONS 1
-# elif defined(__SUNPRO_CC)
-// Sun Pro CC supports exceptions. However, there is no compile-time way of
-// detecting whether they are enabled or not. Therefore, we assume that
-// they are enabled unless the user tells us otherwise.
-# define GTEST_HAS_EXCEPTIONS 1
-# elif defined(__IBMCPP__) && __EXCEPTIONS
-// xlC defines __EXCEPTIONS to 1 if and only if exceptions are enabled.
-# define GTEST_HAS_EXCEPTIONS 1
-# elif defined(__HP_aCC)
-// Exception handling is in effect by default in HP aCC compiler. It has to
-// be turned of by +noeh compiler option if desired.
-# define GTEST_HAS_EXCEPTIONS 1
-# else
-// For other compilers, we assume exceptions are disabled to be
-// conservative.
-# define GTEST_HAS_EXCEPTIONS 0
-# endif // defined(_MSC_VER) || defined(__BORLANDC__)
-#endif // GTEST_HAS_EXCEPTIONS
-
-#if !defined(GTEST_HAS_STD_STRING)
-// Even though we don't use this macro any longer, we keep it in case
-// some clients still depend on it.
-# define GTEST_HAS_STD_STRING 1
-#elif !GTEST_HAS_STD_STRING
-// The user told us that ::std::string isn't available.
-# error "::std::string isn't available."
-#endif // !defined(GTEST_HAS_STD_STRING)
-
-#ifndef GTEST_HAS_STD_WSTRING
-// The user didn't tell us whether ::std::wstring is available, so we need
-// to figure it out.
-// Cygwin 1.7 and below doesn't support ::std::wstring.
-// Solaris' libc++ doesn't support it either. Android has
-// no support for it at least as recent as Froyo (2.2).
-#define GTEST_HAS_STD_WSTRING \
- (!(GTEST_OS_LINUX_ANDROID || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || \
- GTEST_OS_HAIKU))
-
-#endif // GTEST_HAS_STD_WSTRING
-
-// Determines whether RTTI is available.
-#ifndef GTEST_HAS_RTTI
-// The user didn't tell us whether RTTI is enabled, so we need to
-// figure it out.
-
-# ifdef _MSC_VER
-
-#ifdef _CPPRTTI // MSVC defines this macro if and only if RTTI is enabled.
-# define GTEST_HAS_RTTI 1
-# else
-# define GTEST_HAS_RTTI 0
-# endif
-
-// Starting with version 4.3.2, gcc defines __GXX_RTTI if and only if RTTI is
-// enabled.
-# elif defined(__GNUC__)
-
-# ifdef __GXX_RTTI
-// When building against STLport with the Android NDK and with
-// -frtti -fno-exceptions, the build fails at link time with undefined
-// references to __cxa_bad_typeid. Note sure if STL or toolchain bug,
-// so disable RTTI when detected.
-# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) && \
- !defined(__EXCEPTIONS)
-# define GTEST_HAS_RTTI 0
-# else
-# define GTEST_HAS_RTTI 1
-# endif // GTEST_OS_LINUX_ANDROID && __STLPORT_MAJOR && !__EXCEPTIONS
-# else
-# define GTEST_HAS_RTTI 0
-# endif // __GXX_RTTI
-
-// Clang defines __GXX_RTTI starting with version 3.0, but its manual recommends
-// using has_feature instead. has_feature(cxx_rtti) is supported since 2.7, the
-// first version with C++ support.
-# elif defined(__clang__)
-
-# define GTEST_HAS_RTTI __has_feature(cxx_rtti)
-
-// Starting with version 9.0 IBM Visual Age defines __RTTI_ALL__ to 1 if
-// both the typeid and dynamic_cast features are present.
-# elif defined(__IBMCPP__) && (__IBMCPP__ >= 900)
-
-# ifdef __RTTI_ALL__
-# define GTEST_HAS_RTTI 1
-# else
-# define GTEST_HAS_RTTI 0
-# endif
-
-# else
-
-// For all other compilers, we assume RTTI is enabled.
-# define GTEST_HAS_RTTI 1
-
-# endif // _MSC_VER
-
-#endif // GTEST_HAS_RTTI
-
-// It's this header's responsibility to #include <typeinfo> when RTTI
-// is enabled.
-#if GTEST_HAS_RTTI
-# include <typeinfo>
-#endif
-
-// Determines whether Google Test can use the pthreads library.
-#ifndef GTEST_HAS_PTHREAD
-// The user didn't tell us explicitly, so we make reasonable assumptions about
-// which platforms have pthreads support.
-//
-// To disable threading support in Google Test, add -DGTEST_HAS_PTHREAD=0
-// to your compiler flags.
-#define GTEST_HAS_PTHREAD \
- (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_HPUX || GTEST_OS_QNX || \
- GTEST_OS_FREEBSD || GTEST_OS_NACL || GTEST_OS_NETBSD || GTEST_OS_FUCHSIA || \
- GTEST_OS_DRAGONFLY || GTEST_OS_GNU_KFREEBSD || GTEST_OS_OPENBSD || \
- GTEST_OS_HAIKU)
-#endif // GTEST_HAS_PTHREAD
-
-#if GTEST_HAS_PTHREAD
-// gtest-port.h guarantees to #include <pthread.h> when GTEST_HAS_PTHREAD is
-// true.
-# include <pthread.h> // NOLINT
-
-// For timespec and nanosleep, used below.
-# include <time.h> // NOLINT
-#endif
-
-// Determines whether clone(2) is supported.
-// Usually it will only be available on Linux, excluding
-// Linux on the Itanium architecture.
-// Also see http://linux.die.net/man/2/clone.
-#ifndef GTEST_HAS_CLONE
-// The user didn't tell us, so we need to figure it out.
-
-# if GTEST_OS_LINUX && !defined(__ia64__)
-# if GTEST_OS_LINUX_ANDROID
-// On Android, clone() became available at different API levels for each 32-bit
-// architecture.
-# if defined(__LP64__) || \
- (defined(__arm__) && __ANDROID_API__ >= 9) || \
- (defined(__mips__) && __ANDROID_API__ >= 12) || \
- (defined(__i386__) && __ANDROID_API__ >= 17)
-# define GTEST_HAS_CLONE 1
-# else
-# define GTEST_HAS_CLONE 0
-# endif
-# else
-# define GTEST_HAS_CLONE 1
-# endif
-# else
-# define GTEST_HAS_CLONE 0
-# endif // GTEST_OS_LINUX && !defined(__ia64__)
-
-#endif // GTEST_HAS_CLONE
-
-// Determines whether to support stream redirection. This is used to test
-// output correctness and to implement death tests.
-#ifndef GTEST_HAS_STREAM_REDIRECTION
-// By default, we assume that stream redirection is supported on all
-// platforms except known mobile ones.
-# if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT
-# define GTEST_HAS_STREAM_REDIRECTION 0
-# else
-# define GTEST_HAS_STREAM_REDIRECTION 1
-# endif // !GTEST_OS_WINDOWS_MOBILE
-#endif // GTEST_HAS_STREAM_REDIRECTION
-
-// Determines whether to support death tests.
-// pops up a dialog window that cannot be suppressed programmatically.
-#if (GTEST_OS_LINUX || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || \
- (GTEST_OS_MAC && !GTEST_OS_IOS) || \
- (GTEST_OS_WINDOWS_DESKTOP && _MSC_VER) || GTEST_OS_WINDOWS_MINGW || \
- GTEST_OS_AIX || GTEST_OS_HPUX || GTEST_OS_OPENBSD || GTEST_OS_QNX || \
- GTEST_OS_FREEBSD || GTEST_OS_NETBSD || GTEST_OS_FUCHSIA || \
- GTEST_OS_DRAGONFLY || GTEST_OS_GNU_KFREEBSD || GTEST_OS_HAIKU)
-# define GTEST_HAS_DEATH_TEST 1
-#endif
-
-// Determines whether to support type-driven tests.
-
-// Typed tests need <typeinfo> and variadic macros, which GCC, VC++ 8.0,
-// Sun Pro CC, IBM Visual Age, and HP aCC support.
-#if defined(__GNUC__) || defined(_MSC_VER) || defined(__SUNPRO_CC) || \
- defined(__IBMCPP__) || defined(__HP_aCC)
-# define GTEST_HAS_TYPED_TEST 1
-# define GTEST_HAS_TYPED_TEST_P 1
-#endif
-
-// Determines whether the system compiler uses UTF-16 for encoding wide strings.
-#define GTEST_WIDE_STRING_USES_UTF16_ \
- (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_AIX || GTEST_OS_OS2)
-
-// Determines whether test results can be streamed to a socket.
-#if GTEST_OS_LINUX || GTEST_OS_GNU_KFREEBSD || GTEST_OS_DRAGONFLY || \
- GTEST_OS_FREEBSD || GTEST_OS_NETBSD || GTEST_OS_OPENBSD
-# define GTEST_CAN_STREAM_RESULTS_ 1
-#endif
-
-// Defines some utility macros.
-
-// The GNU compiler emits a warning if nested "if" statements are followed by
-// an "else" statement and braces are not used to explicitly disambiguate the
-// "else" binding. This leads to problems with code like:
-//
-// if (gate)
-// ASSERT_*(condition) << "Some message";
-//
-// The "switch (0) case 0:" idiom is used to suppress this.
-#ifdef __INTEL_COMPILER
-# define GTEST_AMBIGUOUS_ELSE_BLOCKER_
-#else
-# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: default: // NOLINT
-#endif
-
-// Use this annotation at the end of a struct/class definition to
-// prevent the compiler from optimizing away instances that are never
-// used. This is useful when all interesting logic happens inside the
-// c'tor and / or d'tor. Example:
-//
-// struct Foo {
-// Foo() { ... }
-// } GTEST_ATTRIBUTE_UNUSED_;
-//
-// Also use it after a variable or parameter declaration to tell the
-// compiler the variable/parameter does not have to be used.
-#if defined(__GNUC__) && !defined(COMPILER_ICC)
-# define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused))
-#elif defined(__clang__)
-# if __has_attribute(unused)
-# define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused))
-# endif
-#endif
-#ifndef GTEST_ATTRIBUTE_UNUSED_
-# define GTEST_ATTRIBUTE_UNUSED_
-#endif
-
-// Use this annotation before a function that takes a printf format string.
-#if (defined(__GNUC__) || defined(__clang__)) && !defined(COMPILER_ICC)
-# if defined(__MINGW_PRINTF_FORMAT)
-// MinGW has two different printf implementations. Ensure the format macro
-// matches the selected implementation. See
-// https://sourceforge.net/p/mingw-w64/wiki2/gnu%20printf/.
-# define GTEST_ATTRIBUTE_PRINTF_(string_index, first_to_check) \
- __attribute__((__format__(__MINGW_PRINTF_FORMAT, string_index, \
- first_to_check)))
-# else
-# define GTEST_ATTRIBUTE_PRINTF_(string_index, first_to_check) \
- __attribute__((__format__(__printf__, string_index, first_to_check)))
-# endif
-#else
-# define GTEST_ATTRIBUTE_PRINTF_(string_index, first_to_check)
-#endif
-
-
-// A macro to disallow operator=
-// This should be used in the private: declarations for a class.
-#define GTEST_DISALLOW_ASSIGN_(type) \
- void operator=(type const &) = delete
-
-// A macro to disallow copy constructor and operator=
-// This should be used in the private: declarations for a class.
-#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type) \
- type(type const &) = delete; \
- GTEST_DISALLOW_ASSIGN_(type)
-
-// Tell the compiler to warn about unused return values for functions declared
-// with this macro. The macro should be used on function declarations
-// following the argument list:
-//
-// Sprocket* AllocateSprocket() GTEST_MUST_USE_RESULT_;
-#if defined(__GNUC__) && !defined(COMPILER_ICC)
-# define GTEST_MUST_USE_RESULT_ __attribute__ ((warn_unused_result))
-#else
-# define GTEST_MUST_USE_RESULT_
-#endif // __GNUC__ && !COMPILER_ICC
-
-// MS C++ compiler emits warning when a conditional expression is compile time
-// constant. In some contexts this warning is false positive and needs to be
-// suppressed. Use the following two macros in such cases:
-//
-// GTEST_INTENTIONAL_CONST_COND_PUSH_()
-// while (true) {
-// GTEST_INTENTIONAL_CONST_COND_POP_()
-// }
-# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \
- GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127)
-# define GTEST_INTENTIONAL_CONST_COND_POP_() \
- GTEST_DISABLE_MSC_WARNINGS_POP_()
-
-// Determine whether the compiler supports Microsoft's Structured Exception
-// Handling. This is supported by several Windows compilers but generally
-// does not exist on any other system.
-#ifndef GTEST_HAS_SEH
-// The user didn't tell us, so we need to figure it out.
-
-# if defined(_MSC_VER) || defined(__BORLANDC__)
-// These two compilers are known to support SEH.
-# define GTEST_HAS_SEH 1
-# else
-// Assume no SEH.
-# define GTEST_HAS_SEH 0
-# endif
-
-#endif // GTEST_HAS_SEH
-
-#ifndef GTEST_IS_THREADSAFE
-
-#define GTEST_IS_THREADSAFE \
- (GTEST_HAS_MUTEX_AND_THREAD_LOCAL_ || \
- (GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT) || \
- GTEST_HAS_PTHREAD)
-
-#endif // GTEST_IS_THREADSAFE
-
-// GTEST_API_ qualifies all symbols that must be exported. The definitions below
-// are guarded by #ifndef to give embedders a chance to define GTEST_API_ in
-// gtest/internal/custom/gtest-port.h
-#ifndef GTEST_API_
-
-#ifdef _MSC_VER
-# if GTEST_LINKED_AS_SHARED_LIBRARY
-# define GTEST_API_ __declspec(dllimport)
-# elif GTEST_CREATE_SHARED_LIBRARY
-# define GTEST_API_ __declspec(dllexport)
-# endif
-#elif __GNUC__ >= 4 || defined(__clang__)
-# define GTEST_API_ __attribute__((visibility ("default")))
-#endif // _MSC_VER
-
-#endif // GTEST_API_
-
-#ifndef GTEST_API_
-# define GTEST_API_
-#endif // GTEST_API_
-
-#ifndef GTEST_DEFAULT_DEATH_TEST_STYLE
-# define GTEST_DEFAULT_DEATH_TEST_STYLE "fast"
-#endif // GTEST_DEFAULT_DEATH_TEST_STYLE
-
-#ifdef __GNUC__
-// Ask the compiler to never inline a given function.
-# define GTEST_NO_INLINE_ __attribute__((noinline))
-#else
-# define GTEST_NO_INLINE_
-#endif
-
-// _LIBCPP_VERSION is defined by the libc++ library from the LLVM project.
-#if !defined(GTEST_HAS_CXXABI_H_)
-# if defined(__GLIBCXX__) || (defined(_LIBCPP_VERSION) && !defined(_MSC_VER))
-# define GTEST_HAS_CXXABI_H_ 1
-# else
-# define GTEST_HAS_CXXABI_H_ 0
-# endif
-#endif
-
-// A function level attribute to disable checking for use of uninitialized
-// memory when built with MemorySanitizer.
-#if defined(__clang__)
-# if __has_feature(memory_sanitizer)
-# define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ \
- __attribute__((no_sanitize_memory))
-# else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
-# endif // __has_feature(memory_sanitizer)
-#else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
-#endif // __clang__
-
-// A function level attribute to disable AddressSanitizer instrumentation.
-#if defined(__clang__)
-# if __has_feature(address_sanitizer)
-# define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_ \
- __attribute__((no_sanitize_address))
-# else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
-# endif // __has_feature(address_sanitizer)
-#else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
-#endif // __clang__
-
-// A function level attribute to disable HWAddressSanitizer instrumentation.
-#if defined(__clang__)
-# if __has_feature(hwaddress_sanitizer)
-# define GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_ \
- __attribute__((no_sanitize("hwaddress")))
-# else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
-# endif // __has_feature(hwaddress_sanitizer)
-#else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
-#endif // __clang__
-
-// A function level attribute to disable ThreadSanitizer instrumentation.
-#if defined(__clang__)
-# if __has_feature(thread_sanitizer)
-# define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_ \
- __attribute__((no_sanitize_thread))
-# else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
-# endif // __has_feature(thread_sanitizer)
-#else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
-#endif // __clang__
-
-namespace testing {
-
-class Message;
-
-// Legacy imports for backwards compatibility.
-// New code should use std:: names directly.
-using std::get;
-using std::make_tuple;
-using std::tuple;
-using std::tuple_element;
-using std::tuple_size;
-
-namespace internal {
-
-// A secret type that Google Test users don't know about. It has no
-// definition on purpose. Therefore it's impossible to create a
-// Secret object, which is what we want.
-class Secret;
-
-// The GTEST_COMPILE_ASSERT_ is a legacy macro used to verify that a compile
-// time expression is true (in new code, use static_assert instead). For
-// example, you could use it to verify the size of a static array:
-//
-// GTEST_COMPILE_ASSERT_(GTEST_ARRAY_SIZE_(names) == NUM_NAMES,
-// names_incorrect_size);
-//
-// The second argument to the macro must be a valid C++ identifier. If the
-// expression is false, compiler will issue an error containing this identifier.
-#define GTEST_COMPILE_ASSERT_(expr, msg) static_assert(expr, #msg)
-
-// Evaluates to the number of elements in 'array'.
-#define GTEST_ARRAY_SIZE_(array) (sizeof(array) / sizeof(array[0]))
-
-// A helper for suppressing warnings on constant condition. It just
-// returns 'condition'.
-GTEST_API_ bool IsTrue(bool condition);
-
-// Defines RE.
-
-#if GTEST_USES_PCRE
-// if used, PCRE is injected by custom/gtest-port.h
-#elif GTEST_USES_POSIX_RE || GTEST_USES_SIMPLE_RE
-
-// A simple C++ wrapper for <regex.h>. It uses the POSIX Extended
-// Regular Expression syntax.
-class GTEST_API_ RE {
- public:
- // A copy constructor is required by the Standard to initialize object
- // references from r-values.
- RE(const RE& other) { Init(other.pattern()); }
-
- // Constructs an RE from a string.
- RE(const ::std::string& regex) { Init(regex.c_str()); } // NOLINT
-
- RE(const char* regex) { Init(regex); } // NOLINT
- ~RE();
-
- // Returns the string representation of the regex.
- const char* pattern() const { return pattern_; }
-
- // FullMatch(str, re) returns true if and only if regular expression re
- // matches the entire str.
- // PartialMatch(str, re) returns true if and only if regular expression re
- // matches a substring of str (including str itself).
- static bool FullMatch(const ::std::string& str, const RE& re) {
- return FullMatch(str.c_str(), re);
- }
- static bool PartialMatch(const ::std::string& str, const RE& re) {
- return PartialMatch(str.c_str(), re);
- }
-
- static bool FullMatch(const char* str, const RE& re);
- static bool PartialMatch(const char* str, const RE& re);
-
- private:
- void Init(const char* regex);
- const char* pattern_;
- bool is_valid_;
-
-# if GTEST_USES_POSIX_RE
-
- regex_t full_regex_; // For FullMatch().
- regex_t partial_regex_; // For PartialMatch().
-
-# else // GTEST_USES_SIMPLE_RE
-
- const char* full_pattern_; // For FullMatch();
-
-# endif
-
- GTEST_DISALLOW_ASSIGN_(RE);
-};
-
-#endif // GTEST_USES_PCRE
-
-// Formats a source file path and a line number as they would appear
-// in an error message from the compiler used to compile this code.
-GTEST_API_ ::std::string FormatFileLocation(const char* file, int line);
-
-// Formats a file location for compiler-independent XML output.
-// Although this function is not platform dependent, we put it next to
-// FormatFileLocation in order to contrast the two functions.
-GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(const char* file,
- int line);
-
-// Defines logging utilities:
-// GTEST_LOG_(severity) - logs messages at the specified severity level. The
-// message itself is streamed into the macro.
-// LogToStderr() - directs all log messages to stderr.
-// FlushInfoLog() - flushes informational log messages.
-
-enum GTestLogSeverity {
- GTEST_INFO,
- GTEST_WARNING,
- GTEST_ERROR,
- GTEST_FATAL
-};
-
-// Formats log entry severity, provides a stream object for streaming the
-// log message, and terminates the message with a newline when going out of
-// scope.
-class GTEST_API_ GTestLog {
- public:
- GTestLog(GTestLogSeverity severity, const char* file, int line);
-
- // Flushes the buffers and, if severity is GTEST_FATAL, aborts the program.
- ~GTestLog();
-
- ::std::ostream& GetStream() { return ::std::cerr; }
-
- private:
- const GTestLogSeverity severity_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestLog);
-};
-
-#if !defined(GTEST_LOG_)
-
-# define GTEST_LOG_(severity) \
- ::testing::internal::GTestLog(::testing::internal::GTEST_##severity, \
- __FILE__, __LINE__).GetStream()
-
-inline void LogToStderr() {}
-inline void FlushInfoLog() { fflush(nullptr); }
-
-#endif // !defined(GTEST_LOG_)
-
-#if !defined(GTEST_CHECK_)
-// INTERNAL IMPLEMENTATION - DO NOT USE.
-//
-// GTEST_CHECK_ is an all-mode assert. It aborts the program if the condition
-// is not satisfied.
-// Synopsys:
-// GTEST_CHECK_(boolean_condition);
-// or
-// GTEST_CHECK_(boolean_condition) << "Additional message";
-//
-// This checks the condition and if the condition is not satisfied
-// it prints message about the condition violation, including the
-// condition itself, plus additional message streamed into it, if any,
-// and then it aborts the program. It aborts the program irrespective of
-// whether it is built in the debug mode or not.
-# define GTEST_CHECK_(condition) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (::testing::internal::IsTrue(condition)) \
- ; \
- else \
- GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
-#endif // !defined(GTEST_CHECK_)
-
-// An all-mode assert to verify that the given POSIX-style function
-// call returns 0 (indicating success). Known limitation: this
-// doesn't expand to a balanced 'if' statement, so enclose the macro
-// in {} if you need to use it as the only statement in an 'if'
-// branch.
-#define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \
- if (const int gtest_error = (posix_call)) \
- GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
- << gtest_error
-
-// Transforms "T" into "const T&" according to standard reference collapsing
-// rules (this is only needed as a backport for C++98 compilers that do not
-// support reference collapsing). Specifically, it transforms:
-//
-// char ==> const char&
-// const char ==> const char&
-// char& ==> char&
-// const char& ==> const char&
-//
-// Note that the non-const reference will not have "const" added. This is
-// standard, and necessary so that "T" can always bind to "const T&".
-template <typename T>
-struct ConstRef { typedef const T& type; };
-template <typename T>
-struct ConstRef<T&> { typedef T& type; };
-
-// The argument T must depend on some template parameters.
-#define GTEST_REFERENCE_TO_CONST_(T) \
- typename ::testing::internal::ConstRef<T>::type
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Use ImplicitCast_ as a safe version of static_cast for upcasting in
-// the type hierarchy (e.g. casting a Foo* to a SuperclassOfFoo* or a
-// const Foo*). When you use ImplicitCast_, the compiler checks that
-// the cast is safe. Such explicit ImplicitCast_s are necessary in
-// surprisingly many situations where C++ demands an exact type match
-// instead of an argument type convertable to a target type.
-//
-// The syntax for using ImplicitCast_ is the same as for static_cast:
-//
-// ImplicitCast_<ToType>(expr)
-//
-// ImplicitCast_ would have been part of the C++ standard library,
-// but the proposal was submitted too late. It will probably make
-// its way into the language in the future.
-//
-// This relatively ugly name is intentional. It prevents clashes with
-// similar functions users may have (e.g., implicit_cast). The internal
-// namespace alone is not enough because the function can be found by ADL.
-template<typename To>
-inline To ImplicitCast_(To x) { return x; }
-
-// When you upcast (that is, cast a pointer from type Foo to type
-// SuperclassOfFoo), it's fine to use ImplicitCast_<>, since upcasts
-// always succeed. When you downcast (that is, cast a pointer from
-// type Foo to type SubclassOfFoo), static_cast<> isn't safe, because
-// how do you know the pointer is really of type SubclassOfFoo? It
-// could be a bare Foo, or of type DifferentSubclassOfFoo. Thus,
-// when you downcast, you should use this macro. In debug mode, we
-// use dynamic_cast<> to double-check the downcast is legal (we die
-// if it's not). In normal mode, we do the efficient static_cast<>
-// instead. Thus, it's important to test in debug mode to make sure
-// the cast is legal!
-// This is the only place in the code we should use dynamic_cast<>.
-// In particular, you SHOULDN'T be using dynamic_cast<> in order to
-// do RTTI (eg code like this:
-// if (dynamic_cast<Subclass1>(foo)) HandleASubclass1Object(foo);
-// if (dynamic_cast<Subclass2>(foo)) HandleASubclass2Object(foo);
-// You should design the code some other way not to need this.
-//
-// This relatively ugly name is intentional. It prevents clashes with
-// similar functions users may have (e.g., down_cast). The internal
-// namespace alone is not enough because the function can be found by ADL.
-template<typename To, typename From> // use like this: DownCast_<T*>(foo);
-inline To DownCast_(From* f) { // so we only accept pointers
- // Ensures that To is a sub-type of From *. This test is here only
- // for compile-time type checking, and has no overhead in an
- // optimized build at run-time, as it will be optimized away
- // completely.
- GTEST_INTENTIONAL_CONST_COND_PUSH_()
- if (false) {
- GTEST_INTENTIONAL_CONST_COND_POP_()
- const To to = nullptr;
- ::testing::internal::ImplicitCast_<From*>(to);
- }
-
-#if GTEST_HAS_RTTI
- // RTTI: debug mode only!
- GTEST_CHECK_(f == nullptr || dynamic_cast<To>(f) != nullptr);
-#endif
- return static_cast<To>(f);
-}
-
-// Downcasts the pointer of type Base to Derived.
-// Derived must be a subclass of Base. The parameter MUST
-// point to a class of type Derived, not any subclass of it.
-// When RTTI is available, the function performs a runtime
-// check to enforce this.
-template <class Derived, class Base>
-Derived* CheckedDowncastToActualType(Base* base) {
-#if GTEST_HAS_RTTI
- GTEST_CHECK_(typeid(*base) == typeid(Derived));
-#endif
-
-#if GTEST_HAS_DOWNCAST_
- return ::down_cast<Derived*>(base);
-#elif GTEST_HAS_RTTI
- return dynamic_cast<Derived*>(base); // NOLINT
-#else
- return static_cast<Derived*>(base); // Poor man's downcast.
-#endif
-}
-
-#if GTEST_HAS_STREAM_REDIRECTION
-
-// Defines the stderr capturer:
-// CaptureStdout - starts capturing stdout.
-// GetCapturedStdout - stops capturing stdout and returns the captured string.
-// CaptureStderr - starts capturing stderr.
-// GetCapturedStderr - stops capturing stderr and returns the captured string.
-//
-GTEST_API_ void CaptureStdout();
-GTEST_API_ std::string GetCapturedStdout();
-GTEST_API_ void CaptureStderr();
-GTEST_API_ std::string GetCapturedStderr();
-
-#endif // GTEST_HAS_STREAM_REDIRECTION
-// Returns the size (in bytes) of a file.
-GTEST_API_ size_t GetFileSize(FILE* file);
-
-// Reads the entire content of a file as a string.
-GTEST_API_ std::string ReadEntireFile(FILE* file);
-
-// All command line arguments.
-GTEST_API_ std::vector<std::string> GetArgvs();
-
-#if GTEST_HAS_DEATH_TEST
-
-std::vector<std::string> GetInjectableArgvs();
-// Deprecated: pass the args vector by value instead.
-void SetInjectableArgvs(const std::vector<std::string>* new_argvs);
-void SetInjectableArgvs(const std::vector<std::string>& new_argvs);
-void ClearInjectableArgvs();
-
-#endif // GTEST_HAS_DEATH_TEST
-
-// Defines synchronization primitives.
-#if GTEST_IS_THREADSAFE
-# if GTEST_HAS_PTHREAD
-// Sleeps for (roughly) n milliseconds. This function is only for testing
-// Google Test's own constructs. Don't use it in user tests, either
-// directly or indirectly.
-inline void SleepMilliseconds(int n) {
- const timespec time = {
- 0, // 0 seconds.
- n * 1000L * 1000L, // And n ms.
- };
- nanosleep(&time, nullptr);
-}
-# endif // GTEST_HAS_PTHREAD
-
-# if GTEST_HAS_NOTIFICATION_
-// Notification has already been imported into the namespace.
-// Nothing to do here.
-
-# elif GTEST_HAS_PTHREAD
-// Allows a controller thread to pause execution of newly created
-// threads until notified. Instances of this class must be created
-// and destroyed in the controller thread.
-//
-// This class is only for testing Google Test's own constructs. Do not
-// use it in user tests, either directly or indirectly.
-class Notification {
- public:
- Notification() : notified_(false) {
- GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, nullptr));
- }
- ~Notification() {
- pthread_mutex_destroy(&mutex_);
- }
-
- // Notifies all threads created with this notification to start. Must
- // be called from the controller thread.
- void Notify() {
- pthread_mutex_lock(&mutex_);
- notified_ = true;
- pthread_mutex_unlock(&mutex_);
- }
-
- // Blocks until the controller thread notifies. Must be called from a test
- // thread.
- void WaitForNotification() {
- for (;;) {
- pthread_mutex_lock(&mutex_);
- const bool notified = notified_;
- pthread_mutex_unlock(&mutex_);
- if (notified)
- break;
- SleepMilliseconds(10);
- }
- }
-
- private:
- pthread_mutex_t mutex_;
- bool notified_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification);
-};
-
-# elif GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
-
-GTEST_API_ void SleepMilliseconds(int n);
-
-// Provides leak-safe Windows kernel handle ownership.
-// Used in death tests and in threading support.
-class GTEST_API_ AutoHandle {
- public:
- // Assume that Win32 HANDLE type is equivalent to void*. Doing so allows us to
- // avoid including <windows.h> in this header file. Including <windows.h> is
- // undesirable because it defines a lot of symbols and macros that tend to
- // conflict with client code. This assumption is verified by
- // WindowsTypesTest.HANDLEIsVoidStar.
- typedef void* Handle;
- AutoHandle();
- explicit AutoHandle(Handle handle);
-
- ~AutoHandle();
-
- Handle Get() const;
- void Reset();
- void Reset(Handle handle);
-
- private:
- // Returns true if and only if the handle is a valid handle object that can be
- // closed.
- bool IsCloseable() const;
-
- Handle handle_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(AutoHandle);
-};
-
-// Allows a controller thread to pause execution of newly created
-// threads until notified. Instances of this class must be created
-// and destroyed in the controller thread.
-//
-// This class is only for testing Google Test's own constructs. Do not
-// use it in user tests, either directly or indirectly.
-class GTEST_API_ Notification {
- public:
- Notification();
- void Notify();
- void WaitForNotification();
-
- private:
- AutoHandle event_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification);
-};
-# endif // GTEST_HAS_NOTIFICATION_
-
-// On MinGW, we can have both GTEST_OS_WINDOWS and GTEST_HAS_PTHREAD
-// defined, but we don't want to use MinGW's pthreads implementation, which
-// has conformance problems with some versions of the POSIX standard.
-# if GTEST_HAS_PTHREAD && !GTEST_OS_WINDOWS_MINGW
-
-// As a C-function, ThreadFuncWithCLinkage cannot be templated itself.
-// Consequently, it cannot select a correct instantiation of ThreadWithParam
-// in order to call its Run(). Introducing ThreadWithParamBase as a
-// non-templated base class for ThreadWithParam allows us to bypass this
-// problem.
-class ThreadWithParamBase {
- public:
- virtual ~ThreadWithParamBase() {}
- virtual void Run() = 0;
-};
-
-// pthread_create() accepts a pointer to a function type with the C linkage.
-// According to the Standard (7.5/1), function types with different linkages
-// are different even if they are otherwise identical. Some compilers (for
-// example, SunStudio) treat them as different types. Since class methods
-// cannot be defined with C-linkage we need to define a free C-function to
-// pass into pthread_create().
-extern "C" inline void* ThreadFuncWithCLinkage(void* thread) {
- static_cast<ThreadWithParamBase*>(thread)->Run();
- return nullptr;
-}
-
-// Helper class for testing Google Test's multi-threading constructs.
-// To use it, write:
-//
-// void ThreadFunc(int param) { /* Do things with param */ }
-// Notification thread_can_start;
-// ...
-// // The thread_can_start parameter is optional; you can supply NULL.
-// ThreadWithParam<int> thread(&ThreadFunc, 5, &thread_can_start);
-// thread_can_start.Notify();
-//
-// These classes are only for testing Google Test's own constructs. Do
-// not use them in user tests, either directly or indirectly.
-template <typename T>
-class ThreadWithParam : public ThreadWithParamBase {
- public:
- typedef void UserThreadFunc(T);
-
- ThreadWithParam(UserThreadFunc* func, T param, Notification* thread_can_start)
- : func_(func),
- param_(param),
- thread_can_start_(thread_can_start),
- finished_(false) {
- ThreadWithParamBase* const base = this;
- // The thread can be created only after all fields except thread_
- // have been initialized.
- GTEST_CHECK_POSIX_SUCCESS_(
- pthread_create(&thread_, nullptr, &ThreadFuncWithCLinkage, base));
- }
- ~ThreadWithParam() override { Join(); }
-
- void Join() {
- if (!finished_) {
- GTEST_CHECK_POSIX_SUCCESS_(pthread_join(thread_, nullptr));
- finished_ = true;
- }
- }
-
- void Run() override {
- if (thread_can_start_ != nullptr) thread_can_start_->WaitForNotification();
- func_(param_);
- }
-
- private:
- UserThreadFunc* const func_; // User-supplied thread function.
- const T param_; // User-supplied parameter to the thread function.
- // When non-NULL, used to block execution until the controller thread
- // notifies.
- Notification* const thread_can_start_;
- bool finished_; // true if and only if we know that the thread function has
- // finished.
- pthread_t thread_; // The native thread object.
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam);
-};
-# endif // !GTEST_OS_WINDOWS && GTEST_HAS_PTHREAD ||
- // GTEST_HAS_MUTEX_AND_THREAD_LOCAL_
-
-# if GTEST_HAS_MUTEX_AND_THREAD_LOCAL_
-// Mutex and ThreadLocal have already been imported into the namespace.
-// Nothing to do here.
-
-# elif GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
-
-// Mutex implements mutex on Windows platforms. It is used in conjunction
-// with class MutexLock:
-//
-// Mutex mutex;
-// ...
-// MutexLock lock(&mutex); // Acquires the mutex and releases it at the
-// // end of the current scope.
-//
-// A static Mutex *must* be defined or declared using one of the following
-// macros:
-// GTEST_DEFINE_STATIC_MUTEX_(g_some_mutex);
-// GTEST_DECLARE_STATIC_MUTEX_(g_some_mutex);
-//
-// (A non-static Mutex is defined/declared in the usual way).
-class GTEST_API_ Mutex {
- public:
- enum MutexType { kStatic = 0, kDynamic = 1 };
- // We rely on kStaticMutex being 0 as it is to what the linker initializes
- // type_ in static mutexes. critical_section_ will be initialized lazily
- // in ThreadSafeLazyInit().
- enum StaticConstructorSelector { kStaticMutex = 0 };
-
- // This constructor intentionally does nothing. It relies on type_ being
- // statically initialized to 0 (effectively setting it to kStatic) and on
- // ThreadSafeLazyInit() to lazily initialize the rest of the members.
- explicit Mutex(StaticConstructorSelector /*dummy*/) {}
-
- Mutex();
- ~Mutex();
-
- void Lock();
-
- void Unlock();
-
- // Does nothing if the current thread holds the mutex. Otherwise, crashes
- // with high probability.
- void AssertHeld();
-
- private:
- // Initializes owner_thread_id_ and critical_section_ in static mutexes.
- void ThreadSafeLazyInit();
-
- // Per https://blogs.msdn.microsoft.com/oldnewthing/20040223-00/?p=40503,
- // we assume that 0 is an invalid value for thread IDs.
- unsigned int owner_thread_id_;
-
- // For static mutexes, we rely on these members being initialized to zeros
- // by the linker.
- MutexType type_;
- long critical_section_init_phase_; // NOLINT
- GTEST_CRITICAL_SECTION* critical_section_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex);
-};
-
-# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
- extern ::testing::internal::Mutex mutex
-
-# define GTEST_DEFINE_STATIC_MUTEX_(mutex) \
- ::testing::internal::Mutex mutex(::testing::internal::Mutex::kStaticMutex)
-
-// We cannot name this class MutexLock because the ctor declaration would
-// conflict with a macro named MutexLock, which is defined on some
-// platforms. That macro is used as a defensive measure to prevent against
-// inadvertent misuses of MutexLock like "MutexLock(&mu)" rather than
-// "MutexLock l(&mu)". Hence the typedef trick below.
-class GTestMutexLock {
- public:
- explicit GTestMutexLock(Mutex* mutex)
- : mutex_(mutex) { mutex_->Lock(); }
-
- ~GTestMutexLock() { mutex_->Unlock(); }
-
- private:
- Mutex* const mutex_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestMutexLock);
-};
-
-typedef GTestMutexLock MutexLock;
-
-// Base class for ValueHolder<T>. Allows a caller to hold and delete a value
-// without knowing its type.
-class ThreadLocalValueHolderBase {
- public:
- virtual ~ThreadLocalValueHolderBase() {}
-};
-
-// Provides a way for a thread to send notifications to a ThreadLocal
-// regardless of its parameter type.
-class ThreadLocalBase {
- public:
- // Creates a new ValueHolder<T> object holding a default value passed to
- // this ThreadLocal<T>'s constructor and returns it. It is the caller's
- // responsibility not to call this when the ThreadLocal<T> instance already
- // has a value on the current thread.
- virtual ThreadLocalValueHolderBase* NewValueForCurrentThread() const = 0;
-
- protected:
- ThreadLocalBase() {}
- virtual ~ThreadLocalBase() {}
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocalBase);
-};
-
-// Maps a thread to a set of ThreadLocals that have values instantiated on that
-// thread and notifies them when the thread exits. A ThreadLocal instance is
-// expected to persist until all threads it has values on have terminated.
-class GTEST_API_ ThreadLocalRegistry {
- public:
- // Registers thread_local_instance as having value on the current thread.
- // Returns a value that can be used to identify the thread from other threads.
- static ThreadLocalValueHolderBase* GetValueOnCurrentThread(
- const ThreadLocalBase* thread_local_instance);
-
- // Invoked when a ThreadLocal instance is destroyed.
- static void OnThreadLocalDestroyed(
- const ThreadLocalBase* thread_local_instance);
-};
-
-class GTEST_API_ ThreadWithParamBase {
- public:
- void Join();
-
- protected:
- class Runnable {
- public:
- virtual ~Runnable() {}
- virtual void Run() = 0;
- };
-
- ThreadWithParamBase(Runnable *runnable, Notification* thread_can_start);
- virtual ~ThreadWithParamBase();
-
- private:
- AutoHandle thread_;
-};
-
-// Helper class for testing Google Test's multi-threading constructs.
-template <typename T>
-class ThreadWithParam : public ThreadWithParamBase {
- public:
- typedef void UserThreadFunc(T);
-
- ThreadWithParam(UserThreadFunc* func, T param, Notification* thread_can_start)
- : ThreadWithParamBase(new RunnableImpl(func, param), thread_can_start) {
- }
- virtual ~ThreadWithParam() {}
-
- private:
- class RunnableImpl : public Runnable {
- public:
- RunnableImpl(UserThreadFunc* func, T param)
- : func_(func),
- param_(param) {
- }
- virtual ~RunnableImpl() {}
- virtual void Run() {
- func_(param_);
- }
-
- private:
- UserThreadFunc* const func_;
- const T param_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(RunnableImpl);
- };
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam);
-};
-
-// Implements thread-local storage on Windows systems.
-//
-// // Thread 1
-// ThreadLocal<int> tl(100); // 100 is the default value for each thread.
-//
-// // Thread 2
-// tl.set(150); // Changes the value for thread 2 only.
-// EXPECT_EQ(150, tl.get());
-//
-// // Thread 1
-// EXPECT_EQ(100, tl.get()); // In thread 1, tl has the original value.
-// tl.set(200);
-// EXPECT_EQ(200, tl.get());
-//
-// The template type argument T must have a public copy constructor.
-// In addition, the default ThreadLocal constructor requires T to have
-// a public default constructor.
-//
-// The users of a TheadLocal instance have to make sure that all but one
-// threads (including the main one) using that instance have exited before
-// destroying it. Otherwise, the per-thread objects managed for them by the
-// ThreadLocal instance are not guaranteed to be destroyed on all platforms.
-//
-// Google Test only uses global ThreadLocal objects. That means they
-// will die after main() has returned. Therefore, no per-thread
-// object managed by Google Test will be leaked as long as all threads
-// using Google Test have exited when main() returns.
-template <typename T>
-class ThreadLocal : public ThreadLocalBase {
- public:
- ThreadLocal() : default_factory_(new DefaultValueHolderFactory()) {}
- explicit ThreadLocal(const T& value)
- : default_factory_(new InstanceValueHolderFactory(value)) {}
-
- ~ThreadLocal() { ThreadLocalRegistry::OnThreadLocalDestroyed(this); }
-
- T* pointer() { return GetOrCreateValue(); }
- const T* pointer() const { return GetOrCreateValue(); }
- const T& get() const { return *pointer(); }
- void set(const T& value) { *pointer() = value; }
-
- private:
- // Holds a value of T. Can be deleted via its base class without the caller
- // knowing the type of T.
- class ValueHolder : public ThreadLocalValueHolderBase {
- public:
- ValueHolder() : value_() {}
- explicit ValueHolder(const T& value) : value_(value) {}
-
- T* pointer() { return &value_; }
-
- private:
- T value_;
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder);
- };
-
-
- T* GetOrCreateValue() const {
- return static_cast<ValueHolder*>(
- ThreadLocalRegistry::GetValueOnCurrentThread(this))->pointer();
- }
-
- virtual ThreadLocalValueHolderBase* NewValueForCurrentThread() const {
- return default_factory_->MakeNewHolder();
- }
-
- class ValueHolderFactory {
- public:
- ValueHolderFactory() {}
- virtual ~ValueHolderFactory() {}
- virtual ValueHolder* MakeNewHolder() const = 0;
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolderFactory);
- };
-
- class DefaultValueHolderFactory : public ValueHolderFactory {
- public:
- DefaultValueHolderFactory() {}
- virtual ValueHolder* MakeNewHolder() const { return new ValueHolder(); }
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultValueHolderFactory);
- };
-
- class InstanceValueHolderFactory : public ValueHolderFactory {
- public:
- explicit InstanceValueHolderFactory(const T& value) : value_(value) {}
- virtual ValueHolder* MakeNewHolder() const {
- return new ValueHolder(value_);
- }
-
- private:
- const T value_; // The value for each thread.
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(InstanceValueHolderFactory);
- };
-
- std::unique_ptr<ValueHolderFactory> default_factory_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal);
-};
-
-# elif GTEST_HAS_PTHREAD
-
-// MutexBase and Mutex implement mutex on pthreads-based platforms.
-class MutexBase {
- public:
- // Acquires this mutex.
- void Lock() {
- GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_lock(&mutex_));
- owner_ = pthread_self();
- has_owner_ = true;
- }
-
- // Releases this mutex.
- void Unlock() {
- // Since the lock is being released the owner_ field should no longer be
- // considered valid. We don't protect writing to has_owner_ here, as it's
- // the caller's responsibility to ensure that the current thread holds the
- // mutex when this is called.
- has_owner_ = false;
- GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_unlock(&mutex_));
- }
-
- // Does nothing if the current thread holds the mutex. Otherwise, crashes
- // with high probability.
- void AssertHeld() const {
- GTEST_CHECK_(has_owner_ && pthread_equal(owner_, pthread_self()))
- << "The current thread is not holding the mutex @" << this;
- }
-
- // A static mutex may be used before main() is entered. It may even
- // be used before the dynamic initialization stage. Therefore we
- // must be able to initialize a static mutex object at link time.
- // This means MutexBase has to be a POD and its member variables
- // have to be public.
- public:
- pthread_mutex_t mutex_; // The underlying pthread mutex.
- // has_owner_ indicates whether the owner_ field below contains a valid thread
- // ID and is therefore safe to inspect (e.g., to use in pthread_equal()). All
- // accesses to the owner_ field should be protected by a check of this field.
- // An alternative might be to memset() owner_ to all zeros, but there's no
- // guarantee that a zero'd pthread_t is necessarily invalid or even different
- // from pthread_self().
- bool has_owner_;
- pthread_t owner_; // The thread holding the mutex.
-};
-
-// Forward-declares a static mutex.
-# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
- extern ::testing::internal::MutexBase mutex
-
-// Defines and statically (i.e. at link time) initializes a static mutex.
-// The initialization list here does not explicitly initialize each field,
-// instead relying on default initialization for the unspecified fields. In
-// particular, the owner_ field (a pthread_t) is not explicitly initialized.
-// This allows initialization to work whether pthread_t is a scalar or struct.
-// The flag -Wmissing-field-initializers must not be specified for this to work.
-#define GTEST_DEFINE_STATIC_MUTEX_(mutex) \
- ::testing::internal::MutexBase mutex = {PTHREAD_MUTEX_INITIALIZER, false, 0}
-
-// The Mutex class can only be used for mutexes created at runtime. It
-// shares its API with MutexBase otherwise.
-class Mutex : public MutexBase {
- public:
- Mutex() {
- GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, nullptr));
- has_owner_ = false;
- }
- ~Mutex() {
- GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_destroy(&mutex_));
- }
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex);
-};
-
-// We cannot name this class MutexLock because the ctor declaration would
-// conflict with a macro named MutexLock, which is defined on some
-// platforms. That macro is used as a defensive measure to prevent against
-// inadvertent misuses of MutexLock like "MutexLock(&mu)" rather than
-// "MutexLock l(&mu)". Hence the typedef trick below.
-class GTestMutexLock {
- public:
- explicit GTestMutexLock(MutexBase* mutex)
- : mutex_(mutex) { mutex_->Lock(); }
-
- ~GTestMutexLock() { mutex_->Unlock(); }
-
- private:
- MutexBase* const mutex_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestMutexLock);
-};
-
-typedef GTestMutexLock MutexLock;
-
-// Helpers for ThreadLocal.
-
-// pthread_key_create() requires DeleteThreadLocalValue() to have
-// C-linkage. Therefore it cannot be templatized to access
-// ThreadLocal<T>. Hence the need for class
-// ThreadLocalValueHolderBase.
-class ThreadLocalValueHolderBase {
- public:
- virtual ~ThreadLocalValueHolderBase() {}
-};
-
-// Called by pthread to delete thread-local data stored by
-// pthread_setspecific().
-extern "C" inline void DeleteThreadLocalValue(void* value_holder) {
- delete static_cast<ThreadLocalValueHolderBase*>(value_holder);
-}
-
-// Implements thread-local storage on pthreads-based systems.
-template <typename T>
-class GTEST_API_ ThreadLocal {
- public:
- ThreadLocal()
- : key_(CreateKey()), default_factory_(new DefaultValueHolderFactory()) {}
- explicit ThreadLocal(const T& value)
- : key_(CreateKey()),
- default_factory_(new InstanceValueHolderFactory(value)) {}
-
- ~ThreadLocal() {
- // Destroys the managed object for the current thread, if any.
- DeleteThreadLocalValue(pthread_getspecific(key_));
-
- // Releases resources associated with the key. This will *not*
- // delete managed objects for other threads.
- GTEST_CHECK_POSIX_SUCCESS_(pthread_key_delete(key_));
- }
-
- T* pointer() { return GetOrCreateValue(); }
- const T* pointer() const { return GetOrCreateValue(); }
- const T& get() const { return *pointer(); }
- void set(const T& value) { *pointer() = value; }
-
- private:
- // Holds a value of type T.
- class ValueHolder : public ThreadLocalValueHolderBase {
- public:
- ValueHolder() : value_() {}
- explicit ValueHolder(const T& value) : value_(value) {}
-
- T* pointer() { return &value_; }
-
- private:
- T value_;
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder);
- };
-
- static pthread_key_t CreateKey() {
- pthread_key_t key;
- // When a thread exits, DeleteThreadLocalValue() will be called on
- // the object managed for that thread.
- GTEST_CHECK_POSIX_SUCCESS_(
- pthread_key_create(&key, &DeleteThreadLocalValue));
- return key;
- }
-
- T* GetOrCreateValue() const {
- ThreadLocalValueHolderBase* const holder =
- static_cast<ThreadLocalValueHolderBase*>(pthread_getspecific(key_));
- if (holder != nullptr) {
- return CheckedDowncastToActualType<ValueHolder>(holder)->pointer();
- }
-
- ValueHolder* const new_holder = default_factory_->MakeNewHolder();
- ThreadLocalValueHolderBase* const holder_base = new_holder;
- GTEST_CHECK_POSIX_SUCCESS_(pthread_setspecific(key_, holder_base));
- return new_holder->pointer();
- }
-
- class ValueHolderFactory {
- public:
- ValueHolderFactory() {}
- virtual ~ValueHolderFactory() {}
- virtual ValueHolder* MakeNewHolder() const = 0;
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolderFactory);
- };
-
- class DefaultValueHolderFactory : public ValueHolderFactory {
- public:
- DefaultValueHolderFactory() {}
- virtual ValueHolder* MakeNewHolder() const { return new ValueHolder(); }
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultValueHolderFactory);
- };
-
- class InstanceValueHolderFactory : public ValueHolderFactory {
- public:
- explicit InstanceValueHolderFactory(const T& value) : value_(value) {}
- virtual ValueHolder* MakeNewHolder() const {
- return new ValueHolder(value_);
- }
-
- private:
- const T value_; // The value for each thread.
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(InstanceValueHolderFactory);
- };
-
- // A key pthreads uses for looking up per-thread values.
- const pthread_key_t key_;
- std::unique_ptr<ValueHolderFactory> default_factory_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal);
-};
-
-# endif // GTEST_HAS_MUTEX_AND_THREAD_LOCAL_
-
-#else // GTEST_IS_THREADSAFE
-
-// A dummy implementation of synchronization primitives (mutex, lock,
-// and thread-local variable). Necessary for compiling Google Test where
-// mutex is not supported - using Google Test in multiple threads is not
-// supported on such platforms.
-
-class Mutex {
- public:
- Mutex() {}
- void Lock() {}
- void Unlock() {}
- void AssertHeld() const {}
-};
-
-# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
- extern ::testing::internal::Mutex mutex
-
-# define GTEST_DEFINE_STATIC_MUTEX_(mutex) ::testing::internal::Mutex mutex
-
-// We cannot name this class MutexLock because the ctor declaration would
-// conflict with a macro named MutexLock, which is defined on some
-// platforms. That macro is used as a defensive measure to prevent against
-// inadvertent misuses of MutexLock like "MutexLock(&mu)" rather than
-// "MutexLock l(&mu)". Hence the typedef trick below.
-class GTestMutexLock {
- public:
- explicit GTestMutexLock(Mutex*) {} // NOLINT
-};
-
-typedef GTestMutexLock MutexLock;
-
-template <typename T>
-class GTEST_API_ ThreadLocal {
- public:
- ThreadLocal() : value_() {}
- explicit ThreadLocal(const T& value) : value_(value) {}
- T* pointer() { return &value_; }
- const T* pointer() const { return &value_; }
- const T& get() const { return value_; }
- void set(const T& value) { value_ = value; }
- private:
- T value_;
-};
-
-#endif // GTEST_IS_THREADSAFE
-
-// Returns the number of threads running in the process, or 0 to indicate that
-// we cannot detect it.
-GTEST_API_ size_t GetThreadCount();
-
-template <bool B>
-using bool_constant = std::integral_constant<bool, B>;
-
-#if GTEST_OS_WINDOWS
-# define GTEST_PATH_SEP_ "\\"
-# define GTEST_HAS_ALT_PATH_SEP_ 1
-// The biggest signed integer type the compiler supports.
-typedef __int64 BiggestInt;
-#else
-# define GTEST_PATH_SEP_ "/"
-# define GTEST_HAS_ALT_PATH_SEP_ 0
-typedef long long BiggestInt; // NOLINT
-#endif // GTEST_OS_WINDOWS
-
-// Utilities for char.
-
-// isspace(int ch) and friends accept an unsigned char or EOF. char
-// may be signed, depending on the compiler (or compiler flags).
-// Therefore we need to cast a char to unsigned char before calling
-// isspace(), etc.
-
-inline bool IsAlpha(char ch) {
- return isalpha(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsAlNum(char ch) {
- return isalnum(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsDigit(char ch) {
- return isdigit(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsLower(char ch) {
- return islower(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsSpace(char ch) {
- return isspace(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsUpper(char ch) {
- return isupper(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsXDigit(char ch) {
- return isxdigit(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsXDigit(wchar_t ch) {
- const unsigned char low_byte = static_cast<unsigned char>(ch);
- return ch == low_byte && isxdigit(low_byte) != 0;
-}
-
-inline char ToLower(char ch) {
- return static_cast<char>(tolower(static_cast<unsigned char>(ch)));
-}
-inline char ToUpper(char ch) {
- return static_cast<char>(toupper(static_cast<unsigned char>(ch)));
-}
-
-inline std::string StripTrailingSpaces(std::string str) {
- std::string::iterator it = str.end();
- while (it != str.begin() && IsSpace(*--it))
- it = str.erase(it);
- return str;
-}
-
-// The testing::internal::posix namespace holds wrappers for common
-// POSIX functions. These wrappers hide the differences between
-// Windows/MSVC and POSIX systems. Since some compilers define these
-// standard functions as macros, the wrapper cannot have the same name
-// as the wrapped function.
-
-namespace posix {
-
-// Functions with a different name on Windows.
-
-#if GTEST_OS_WINDOWS
-
-typedef struct _stat StatStruct;
-
-# ifdef __BORLANDC__
-inline int IsATTY(int fd) { return isatty(fd); }
-inline int StrCaseCmp(const char* s1, const char* s2) {
- return stricmp(s1, s2);
-}
-inline char* StrDup(const char* src) { return strdup(src); }
-# else // !__BORLANDC__
-# if GTEST_OS_WINDOWS_MOBILE
-inline int IsATTY(int /* fd */) { return 0; }
-# else
-inline int IsATTY(int fd) { return _isatty(fd); }
-# endif // GTEST_OS_WINDOWS_MOBILE
-inline int StrCaseCmp(const char* s1, const char* s2) {
- return _stricmp(s1, s2);
-}
-inline char* StrDup(const char* src) { return _strdup(src); }
-# endif // __BORLANDC__
-
-# if GTEST_OS_WINDOWS_MOBILE
-inline int FileNo(FILE* file) { return reinterpret_cast<int>(_fileno(file)); }
-// Stat(), RmDir(), and IsDir() are not needed on Windows CE at this
-// time and thus not defined there.
-# else
-inline int FileNo(FILE* file) { return _fileno(file); }
-inline int Stat(const char* path, StatStruct* buf) { return _stat(path, buf); }
-inline int RmDir(const char* dir) { return _rmdir(dir); }
-inline bool IsDir(const StatStruct& st) {
- return (_S_IFDIR & st.st_mode) != 0;
-}
-# endif // GTEST_OS_WINDOWS_MOBILE
-
-#else
-
-typedef struct stat StatStruct;
-
-inline int FileNo(FILE* file) { return fileno(file); }
-inline int IsATTY(int fd) { return isatty(fd); }
-inline int Stat(const char* path, StatStruct* buf) { return stat(path, buf); }
-inline int StrCaseCmp(const char* s1, const char* s2) {
- return strcasecmp(s1, s2);
-}
-inline char* StrDup(const char* src) { return strdup(src); }
-inline int RmDir(const char* dir) { return rmdir(dir); }
-inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); }
-
-#endif // GTEST_OS_WINDOWS
-
-// Functions deprecated by MSVC 8.0.
-
-GTEST_DISABLE_MSC_DEPRECATED_PUSH_()
-
-inline const char* StrNCpy(char* dest, const char* src, size_t n) {
- return strncpy(dest, src, n);
-}
-
-// ChDir(), FReopen(), FDOpen(), Read(), Write(), Close(), and
-// StrError() aren't needed on Windows CE at this time and thus not
-// defined there.
-
-#if !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
-inline int ChDir(const char* dir) { return chdir(dir); }
-#endif
-inline FILE* FOpen(const char* path, const char* mode) {
- return fopen(path, mode);
-}
-#if !GTEST_OS_WINDOWS_MOBILE
-inline FILE *FReopen(const char* path, const char* mode, FILE* stream) {
- return freopen(path, mode, stream);
-}
-inline FILE* FDOpen(int fd, const char* mode) { return fdopen(fd, mode); }
-#endif
-inline int FClose(FILE* fp) { return fclose(fp); }
-#if !GTEST_OS_WINDOWS_MOBILE
-inline int Read(int fd, void* buf, unsigned int count) {
- return static_cast<int>(read(fd, buf, count));
-}
-inline int Write(int fd, const void* buf, unsigned int count) {
- return static_cast<int>(write(fd, buf, count));
-}
-inline int Close(int fd) { return close(fd); }
-inline const char* StrError(int errnum) { return strerror(errnum); }
-#endif
-inline const char* GetEnv(const char* name) {
-#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT
- // We are on Windows CE, which has no environment variables.
- static_cast<void>(name); // To prevent 'unused argument' warning.
- return nullptr;
-#elif defined(__BORLANDC__) || defined(__SunOS_5_8) || defined(__SunOS_5_9)
- // Environment variables which we programmatically clear will be set to the
- // empty string rather than unset (NULL). Handle that case.
- const char* const env = getenv(name);
- return (env != nullptr && env[0] != '\0') ? env : nullptr;
-#else
- return getenv(name);
-#endif
-}
-
-GTEST_DISABLE_MSC_DEPRECATED_POP_()
-
-#if GTEST_OS_WINDOWS_MOBILE
-// Windows CE has no C library. The abort() function is used in
-// several places in Google Test. This implementation provides a reasonable
-// imitation of standard behaviour.
-[[noreturn]] void Abort();
-#else
-[[noreturn]] inline void Abort() { abort(); }
-#endif // GTEST_OS_WINDOWS_MOBILE
-
-} // namespace posix
-
-// MSVC "deprecates" snprintf and issues warnings wherever it is used. In
-// order to avoid these warnings, we need to use _snprintf or _snprintf_s on
-// MSVC-based platforms. We map the GTEST_SNPRINTF_ macro to the appropriate
-// function in order to achieve that. We use macro definition here because
-// snprintf is a variadic function.
-#if _MSC_VER && !GTEST_OS_WINDOWS_MOBILE
-// MSVC 2005 and above support variadic macros.
-# define GTEST_SNPRINTF_(buffer, size, format, ...) \
- _snprintf_s(buffer, size, size, format, __VA_ARGS__)
-#elif defined(_MSC_VER)
-// Windows CE does not define _snprintf_s
-# define GTEST_SNPRINTF_ _snprintf
-#else
-# define GTEST_SNPRINTF_ snprintf
-#endif
-
-// The maximum number a BiggestInt can represent. This definition
-// works no matter BiggestInt is represented in one's complement or
-// two's complement.
-//
-// We cannot rely on numeric_limits in STL, as __int64 and long long
-// are not part of standard C++ and numeric_limits doesn't need to be
-// defined for them.
-const BiggestInt kMaxBiggestInt =
- ~(static_cast<BiggestInt>(1) << (8*sizeof(BiggestInt) - 1));
-
-// This template class serves as a compile-time function from size to
-// type. It maps a size in bytes to a primitive type with that
-// size. e.g.
-//
-// TypeWithSize<4>::UInt
-//
-// is typedef-ed to be unsigned int (unsigned integer made up of 4
-// bytes).
-//
-// Such functionality should belong to STL, but I cannot find it
-// there.
-//
-// Google Test uses this class in the implementation of floating-point
-// comparison.
-//
-// For now it only handles UInt (unsigned int) as that's all Google Test
-// needs. Other types can be easily added in the future if need
-// arises.
-template <size_t size>
-class TypeWithSize {
- public:
- // This prevents the user from using TypeWithSize<N> with incorrect
- // values of N.
- typedef void UInt;
-};
-
-// The specialization for size 4.
-template <>
-class TypeWithSize<4> {
- public:
- // unsigned int has size 4 in both gcc and MSVC.
- //
- // As base/basictypes.h doesn't compile on Windows, we cannot use
- // uint32, uint64, and etc here.
- typedef int Int;
- typedef unsigned int UInt;
-};
-
-// The specialization for size 8.
-template <>
-class TypeWithSize<8> {
- public:
-#if GTEST_OS_WINDOWS
- typedef __int64 Int;
- typedef unsigned __int64 UInt;
-#else
- typedef long long Int; // NOLINT
- typedef unsigned long long UInt; // NOLINT
-#endif // GTEST_OS_WINDOWS
-};
-
-// Integer types of known sizes.
-typedef TypeWithSize<4>::Int Int32;
-typedef TypeWithSize<4>::UInt UInt32;
-typedef TypeWithSize<8>::Int Int64;
-typedef TypeWithSize<8>::UInt UInt64;
-typedef TypeWithSize<8>::Int TimeInMillis; // Represents time in milliseconds.
-
-// Utilities for command line flags and environment variables.
-
-// Macro for referencing flags.
-#if !defined(GTEST_FLAG)
-# define GTEST_FLAG(name) FLAGS_gtest_##name
-#endif // !defined(GTEST_FLAG)
-
-#if !defined(GTEST_USE_OWN_FLAGFILE_FLAG_)
-# define GTEST_USE_OWN_FLAGFILE_FLAG_ 1
-#endif // !defined(GTEST_USE_OWN_FLAGFILE_FLAG_)
-
-#if !defined(GTEST_DECLARE_bool_)
-# define GTEST_FLAG_SAVER_ ::testing::internal::GTestFlagSaver
-
-// Macros for declaring flags.
-# define GTEST_DECLARE_bool_(name) GTEST_API_ extern bool GTEST_FLAG(name)
-# define GTEST_DECLARE_int32_(name) \
- GTEST_API_ extern ::testing::internal::Int32 GTEST_FLAG(name)
-# define GTEST_DECLARE_string_(name) \
- GTEST_API_ extern ::std::string GTEST_FLAG(name)
-
-// Macros for defining flags.
-# define GTEST_DEFINE_bool_(name, default_val, doc) \
- GTEST_API_ bool GTEST_FLAG(name) = (default_val)
-# define GTEST_DEFINE_int32_(name, default_val, doc) \
- GTEST_API_ ::testing::internal::Int32 GTEST_FLAG(name) = (default_val)
-# define GTEST_DEFINE_string_(name, default_val, doc) \
- GTEST_API_ ::std::string GTEST_FLAG(name) = (default_val)
-
-#endif // !defined(GTEST_DECLARE_bool_)
-
-// Thread annotations
-#if !defined(GTEST_EXCLUSIVE_LOCK_REQUIRED_)
-# define GTEST_EXCLUSIVE_LOCK_REQUIRED_(locks)
-# define GTEST_LOCK_EXCLUDED_(locks)
-#endif // !defined(GTEST_EXCLUSIVE_LOCK_REQUIRED_)
-
-// Parses 'str' for a 32-bit signed integer. If successful, writes the result
-// to *value and returns true; otherwise leaves *value unchanged and returns
-// false.
-bool ParseInt32(const Message& src_text, const char* str, Int32* value);
-
-// Parses a bool/Int32/string from the environment variable
-// corresponding to the given Google Test flag.
-bool BoolFromGTestEnv(const char* flag, bool default_val);
-GTEST_API_ Int32 Int32FromGTestEnv(const char* flag, Int32 default_val);
-std::string OutputFlagAlsoCheckEnvVar();
-const char* StringFromGTestEnv(const char* flag, const char* default_val);
-
-} // namespace internal
-} // namespace testing
-
-#if !defined(GTEST_INTERNAL_DEPRECATED)
-
-// Internal Macro to mark an API deprecated, for googletest usage only
-// Usage: class GTEST_INTERNAL_DEPRECATED(message) MyClass or
-// GTEST_INTERNAL_DEPRECATED(message) <return_type> myFunction(); Every usage of
-// a deprecated entity will trigger a warning when compiled with
-// `-Wdeprecated-declarations` option (clang, gcc, any __GNUC__ compiler).
-// For msvc /W3 option will need to be used
-// Note that for 'other' compilers this macro evaluates to nothing to prevent
-// compilations errors.
-#if defined(_MSC_VER)
-#define GTEST_INTERNAL_DEPRECATED(message) __declspec(deprecated(message))
-#elif defined(__GNUC__)
-#define GTEST_INTERNAL_DEPRECATED(message) __attribute__((deprecated(message)))
-#else
-#define GTEST_INTERNAL_DEPRECATED(message)
-#endif
-
-#endif // !defined(GTEST_INTERNAL_DEPRECATED)
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-string.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-string.h
deleted file mode 100644
index 82aaa63bf46..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-string.h
+++ /dev/null
@@ -1,171 +0,0 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This header file declares the String class and functions used internally by
-// Google Test. They are subject to change without notice. They should not used
-// by code external to Google Test.
-//
-// This header file is #included by gtest-internal.h.
-// It should not be #included by other files.
-
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
-
-#ifdef __BORLANDC__
-// string.h is not guaranteed to provide strcpy on C++ Builder.
-# include <mem.h>
-#endif
-
-#include <string.h>
-#include <string>
-
-#include "gtest/internal/gtest-port.h"
-
-namespace testing {
-namespace internal {
-
-// String - an abstract class holding static string utilities.
-class GTEST_API_ String {
- public:
- // Static utility methods
-
- // Clones a 0-terminated C string, allocating memory using new. The
- // caller is responsible for deleting the return value using
- // delete[]. Returns the cloned string, or NULL if the input is
- // NULL.
- //
- // This is different from strdup() in string.h, which allocates
- // memory using malloc().
- static const char* CloneCString(const char* c_str);
-
-#if GTEST_OS_WINDOWS_MOBILE
- // Windows CE does not have the 'ANSI' versions of Win32 APIs. To be
- // able to pass strings to Win32 APIs on CE we need to convert them
- // to 'Unicode', UTF-16.
-
- // Creates a UTF-16 wide string from the given ANSI string, allocating
- // memory using new. The caller is responsible for deleting the return
- // value using delete[]. Returns the wide string, or NULL if the
- // input is NULL.
- //
- // The wide string is created using the ANSI codepage (CP_ACP) to
- // match the behaviour of the ANSI versions of Win32 calls and the
- // C runtime.
- static LPCWSTR AnsiToUtf16(const char* c_str);
-
- // Creates an ANSI string from the given wide string, allocating
- // memory using new. The caller is responsible for deleting the return
- // value using delete[]. Returns the ANSI string, or NULL if the
- // input is NULL.
- //
- // The returned string is created using the ANSI codepage (CP_ACP) to
- // match the behaviour of the ANSI versions of Win32 calls and the
- // C runtime.
- static const char* Utf16ToAnsi(LPCWSTR utf16_str);
-#endif
-
- // Compares two C strings. Returns true if and only if they have the same
- // content.
- //
- // Unlike strcmp(), this function can handle NULL argument(s). A
- // NULL C string is considered different to any non-NULL C string,
- // including the empty string.
- static bool CStringEquals(const char* lhs, const char* rhs);
-
- // Converts a wide C string to a String using the UTF-8 encoding.
- // NULL will be converted to "(null)". If an error occurred during
- // the conversion, "(failed to convert from wide string)" is
- // returned.
- static std::string ShowWideCString(const wchar_t* wide_c_str);
-
- // Compares two wide C strings. Returns true if and only if they have the
- // same content.
- //
- // Unlike wcscmp(), this function can handle NULL argument(s). A
- // NULL C string is considered different to any non-NULL C string,
- // including the empty string.
- static bool WideCStringEquals(const wchar_t* lhs, const wchar_t* rhs);
-
- // Compares two C strings, ignoring case. Returns true if and only if
- // they have the same content.
- //
- // Unlike strcasecmp(), this function can handle NULL argument(s).
- // A NULL C string is considered different to any non-NULL C string,
- // including the empty string.
- static bool CaseInsensitiveCStringEquals(const char* lhs,
- const char* rhs);
-
- // Compares two wide C strings, ignoring case. Returns true if and only if
- // they have the same content.
- //
- // Unlike wcscasecmp(), this function can handle NULL argument(s).
- // A NULL C string is considered different to any non-NULL wide C string,
- // including the empty string.
- // NB: The implementations on different platforms slightly differ.
- // On windows, this method uses _wcsicmp which compares according to LC_CTYPE
- // environment variable. On GNU platform this method uses wcscasecmp
- // which compares according to LC_CTYPE category of the current locale.
- // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the
- // current locale.
- static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs,
- const wchar_t* rhs);
-
- // Returns true if and only if the given string ends with the given suffix,
- // ignoring case. Any string is considered to end with an empty suffix.
- static bool EndsWithCaseInsensitive(
- const std::string& str, const std::string& suffix);
-
- // Formats an int value as "%02d".
- static std::string FormatIntWidth2(int value); // "%02d" for width == 2
-
- // Formats an int value as "%X".
- static std::string FormatHexInt(int value);
-
- // Formats an int value as "%X".
- static std::string FormatHexUInt32(UInt32 value);
-
- // Formats a byte as "%02X".
- static std::string FormatByte(unsigned char value);
-
- private:
- String(); // Not meant to be instantiated.
-}; // class String
-
-// Gets the content of the stringstream's buffer as an std::string. Each '\0'
-// character in the buffer is replaced with "\\0".
-GTEST_API_ std::string StringStreamToString(::std::stringstream* stream);
-
-} // namespace internal
-} // namespace testing
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-tuple.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-tuple.h
deleted file mode 100644
index 78a3a6a01fa..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-tuple.h
+++ /dev/null
@@ -1,1021 +0,0 @@
-// This file was GENERATED by command:
-// pump.py gtest-tuple.h.pump
-// DO NOT EDIT BY HAND!!!
-
-// Copyright 2009 Google Inc.
-// All Rights Reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Implements a subset of TR1 tuple needed by Google Test and Google Mock.
-
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
-
-#include <utility> // For ::std::pair.
-
-// The compiler used in Symbian has a bug that prevents us from declaring the
-// tuple template as a friend (it complains that tuple is redefined). This
-// bypasses the bug by declaring the members that should otherwise be
-// private as public.
-// Sun Studio versions < 12 also have the above bug.
-#if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590)
-# define GTEST_DECLARE_TUPLE_AS_FRIEND_ public:
-#else
-# define GTEST_DECLARE_TUPLE_AS_FRIEND_ \
- template <GTEST_10_TYPENAMES_(U)> friend class tuple; \
- private:
-#endif
-
-// Visual Studio 2010, 2012, and 2013 define symbols in std::tr1 that conflict
-// with our own definitions. Therefore using our own tuple does not work on
-// those compilers.
-#if defined(_MSC_VER) && _MSC_VER >= 1600 /* 1600 is Visual Studio 2010 */
-# error "gtest's tuple doesn't compile on Visual Studio 2010 or later. \
-GTEST_USE_OWN_TR1_TUPLE must be set to 0 on those compilers."
-#endif
-
-// GTEST_n_TUPLE_(T) is the type of an n-tuple.
-#define GTEST_0_TUPLE_(T) tuple<>
-#define GTEST_1_TUPLE_(T) tuple<T##0, void, void, void, void, void, void, \
- void, void, void>
-#define GTEST_2_TUPLE_(T) tuple<T##0, T##1, void, void, void, void, void, \
- void, void, void>
-#define GTEST_3_TUPLE_(T) tuple<T##0, T##1, T##2, void, void, void, void, \
- void, void, void>
-#define GTEST_4_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, void, void, void, \
- void, void, void>
-#define GTEST_5_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, void, void, \
- void, void, void>
-#define GTEST_6_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, void, \
- void, void, void>
-#define GTEST_7_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
- void, void, void>
-#define GTEST_8_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
- T##7, void, void>
-#define GTEST_9_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
- T##7, T##8, void>
-#define GTEST_10_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
- T##7, T##8, T##9>
-
-// GTEST_n_TYPENAMES_(T) declares a list of n typenames.
-#define GTEST_0_TYPENAMES_(T)
-#define GTEST_1_TYPENAMES_(T) typename T##0
-#define GTEST_2_TYPENAMES_(T) typename T##0, typename T##1
-#define GTEST_3_TYPENAMES_(T) typename T##0, typename T##1, typename T##2
-#define GTEST_4_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
- typename T##3
-#define GTEST_5_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
- typename T##3, typename T##4
-#define GTEST_6_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
- typename T##3, typename T##4, typename T##5
-#define GTEST_7_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
- typename T##3, typename T##4, typename T##5, typename T##6
-#define GTEST_8_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
- typename T##3, typename T##4, typename T##5, typename T##6, typename T##7
-#define GTEST_9_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
- typename T##3, typename T##4, typename T##5, typename T##6, \
- typename T##7, typename T##8
-#define GTEST_10_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
- typename T##3, typename T##4, typename T##5, typename T##6, \
- typename T##7, typename T##8, typename T##9
-
-// In theory, defining stuff in the ::std namespace is undefined
-// behavior. We can do this as we are playing the role of a standard
-// library vendor.
-namespace std {
-namespace tr1 {
-
-template <typename T0 = void, typename T1 = void, typename T2 = void,
- typename T3 = void, typename T4 = void, typename T5 = void,
- typename T6 = void, typename T7 = void, typename T8 = void,
- typename T9 = void>
-class tuple;
-
-// Anything in namespace gtest_internal is Google Test's INTERNAL
-// IMPLEMENTATION DETAIL and MUST NOT BE USED DIRECTLY in user code.
-namespace gtest_internal {
-
-// ByRef<T>::type is T if T is a reference; otherwise it's const T&.
-template <typename T>
-struct ByRef { typedef const T& type; }; // NOLINT
-template <typename T>
-struct ByRef<T&> { typedef T& type; }; // NOLINT
-
-// A handy wrapper for ByRef.
-#define GTEST_BY_REF_(T) typename ::std::tr1::gtest_internal::ByRef<T>::type
-
-// AddRef<T>::type is T if T is a reference; otherwise it's T&. This
-// is the same as tr1::add_reference<T>::type.
-template <typename T>
-struct AddRef { typedef T& type; }; // NOLINT
-template <typename T>
-struct AddRef<T&> { typedef T& type; }; // NOLINT
-
-// A handy wrapper for AddRef.
-#define GTEST_ADD_REF_(T) typename ::std::tr1::gtest_internal::AddRef<T>::type
-
-// A helper for implementing get<k>().
-template <int k> class Get;
-
-// A helper for implementing tuple_element<k, T>. kIndexValid is true
-// iff k < the number of fields in tuple type T.
-template <bool kIndexValid, int kIndex, class Tuple>
-struct TupleElement;
-
-template <GTEST_10_TYPENAMES_(T)>
-struct TupleElement<true, 0, GTEST_10_TUPLE_(T) > {
- typedef T0 type;
-};
-
-template <GTEST_10_TYPENAMES_(T)>
-struct TupleElement<true, 1, GTEST_10_TUPLE_(T) > {
- typedef T1 type;
-};
-
-template <GTEST_10_TYPENAMES_(T)>
-struct TupleElement<true, 2, GTEST_10_TUPLE_(T) > {
- typedef T2 type;
-};
-
-template <GTEST_10_TYPENAMES_(T)>
-struct TupleElement<true, 3, GTEST_10_TUPLE_(T) > {
- typedef T3 type;
-};
-
-template <GTEST_10_TYPENAMES_(T)>
-struct TupleElement<true, 4, GTEST_10_TUPLE_(T) > {
- typedef T4 type;
-};
-
-template <GTEST_10_TYPENAMES_(T)>
-struct TupleElement<true, 5, GTEST_10_TUPLE_(T) > {
- typedef T5 type;
-};
-
-template <GTEST_10_TYPENAMES_(T)>
-struct TupleElement<true, 6, GTEST_10_TUPLE_(T) > {
- typedef T6 type;
-};
-
-template <GTEST_10_TYPENAMES_(T)>
-struct TupleElement<true, 7, GTEST_10_TUPLE_(T) > {
- typedef T7 type;
-};
-
-template <GTEST_10_TYPENAMES_(T)>
-struct TupleElement<true, 8, GTEST_10_TUPLE_(T) > {
- typedef T8 type;
-};
-
-template <GTEST_10_TYPENAMES_(T)>
-struct TupleElement<true, 9, GTEST_10_TUPLE_(T) > {
- typedef T9 type;
-};
-
-} // namespace gtest_internal
-
-template <>
-class tuple<> {
- public:
- tuple() {}
- tuple(const tuple& /* t */) {}
- tuple& operator=(const tuple& /* t */) { return *this; }
-};
-
-template <GTEST_1_TYPENAMES_(T)>
-class GTEST_1_TUPLE_(T) {
- public:
- template <int k> friend class gtest_internal::Get;
-
- tuple() : f0_() {}
-
- explicit tuple(GTEST_BY_REF_(T0) f0) : f0_(f0) {}
-
- tuple(const tuple& t) : f0_(t.f0_) {}
-
- template <GTEST_1_TYPENAMES_(U)>
- tuple(const GTEST_1_TUPLE_(U)& t) : f0_(t.f0_) {}
-
- tuple& operator=(const tuple& t) { return CopyFrom(t); }
-
- template <GTEST_1_TYPENAMES_(U)>
- tuple& operator=(const GTEST_1_TUPLE_(U)& t) {
- return CopyFrom(t);
- }
-
- GTEST_DECLARE_TUPLE_AS_FRIEND_
-
- template <GTEST_1_TYPENAMES_(U)>
- tuple& CopyFrom(const GTEST_1_TUPLE_(U)& t) {
- f0_ = t.f0_;
- return *this;
- }
-
- T0 f0_;
-};
-
-template <GTEST_2_TYPENAMES_(T)>
-class GTEST_2_TUPLE_(T) {
- public:
- template <int k> friend class gtest_internal::Get;
-
- tuple() : f0_(), f1_() {}
-
- explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1) : f0_(f0),
- f1_(f1) {}
-
- tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_) {}
-
- template <GTEST_2_TYPENAMES_(U)>
- tuple(const GTEST_2_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_) {}
- template <typename U0, typename U1>
- tuple(const ::std::pair<U0, U1>& p) : f0_(p.first), f1_(p.second) {}
-
- tuple& operator=(const tuple& t) { return CopyFrom(t); }
-
- template <GTEST_2_TYPENAMES_(U)>
- tuple& operator=(const GTEST_2_TUPLE_(U)& t) {
- return CopyFrom(t);
- }
- template <typename U0, typename U1>
- tuple& operator=(const ::std::pair<U0, U1>& p) {
- f0_ = p.first;
- f1_ = p.second;
- return *this;
- }
-
- GTEST_DECLARE_TUPLE_AS_FRIEND_
-
- template <GTEST_2_TYPENAMES_(U)>
- tuple& CopyFrom(const GTEST_2_TUPLE_(U)& t) {
- f0_ = t.f0_;
- f1_ = t.f1_;
- return *this;
- }
-
- T0 f0_;
- T1 f1_;
-};
-
-template <GTEST_3_TYPENAMES_(T)>
-class GTEST_3_TUPLE_(T) {
- public:
- template <int k> friend class gtest_internal::Get;
-
- tuple() : f0_(), f1_(), f2_() {}
-
- explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
- GTEST_BY_REF_(T2) f2) : f0_(f0), f1_(f1), f2_(f2) {}
-
- tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {}
-
- template <GTEST_3_TYPENAMES_(U)>
- tuple(const GTEST_3_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {}
-
- tuple& operator=(const tuple& t) { return CopyFrom(t); }
-
- template <GTEST_3_TYPENAMES_(U)>
- tuple& operator=(const GTEST_3_TUPLE_(U)& t) {
- return CopyFrom(t);
- }
-
- GTEST_DECLARE_TUPLE_AS_FRIEND_
-
- template <GTEST_3_TYPENAMES_(U)>
- tuple& CopyFrom(const GTEST_3_TUPLE_(U)& t) {
- f0_ = t.f0_;
- f1_ = t.f1_;
- f2_ = t.f2_;
- return *this;
- }
-
- T0 f0_;
- T1 f1_;
- T2 f2_;
-};
-
-template <GTEST_4_TYPENAMES_(T)>
-class GTEST_4_TUPLE_(T) {
- public:
- template <int k> friend class gtest_internal::Get;
-
- tuple() : f0_(), f1_(), f2_(), f3_() {}
-
- explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
- GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3) : f0_(f0), f1_(f1), f2_(f2),
- f3_(f3) {}
-
- tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_) {}
-
- template <GTEST_4_TYPENAMES_(U)>
- tuple(const GTEST_4_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
- f3_(t.f3_) {}
-
- tuple& operator=(const tuple& t) { return CopyFrom(t); }
-
- template <GTEST_4_TYPENAMES_(U)>
- tuple& operator=(const GTEST_4_TUPLE_(U)& t) {
- return CopyFrom(t);
- }
-
- GTEST_DECLARE_TUPLE_AS_FRIEND_
-
- template <GTEST_4_TYPENAMES_(U)>
- tuple& CopyFrom(const GTEST_4_TUPLE_(U)& t) {
- f0_ = t.f0_;
- f1_ = t.f1_;
- f2_ = t.f2_;
- f3_ = t.f3_;
- return *this;
- }
-
- T0 f0_;
- T1 f1_;
- T2 f2_;
- T3 f3_;
-};
-
-template <GTEST_5_TYPENAMES_(T)>
-class GTEST_5_TUPLE_(T) {
- public:
- template <int k> friend class gtest_internal::Get;
-
- tuple() : f0_(), f1_(), f2_(), f3_(), f4_() {}
-
- explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
- GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3,
- GTEST_BY_REF_(T4) f4) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4) {}
-
- tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
- f4_(t.f4_) {}
-
- template <GTEST_5_TYPENAMES_(U)>
- tuple(const GTEST_5_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
- f3_(t.f3_), f4_(t.f4_) {}
-
- tuple& operator=(const tuple& t) { return CopyFrom(t); }
-
- template <GTEST_5_TYPENAMES_(U)>
- tuple& operator=(const GTEST_5_TUPLE_(U)& t) {
- return CopyFrom(t);
- }
-
- GTEST_DECLARE_TUPLE_AS_FRIEND_
-
- template <GTEST_5_TYPENAMES_(U)>
- tuple& CopyFrom(const GTEST_5_TUPLE_(U)& t) {
- f0_ = t.f0_;
- f1_ = t.f1_;
- f2_ = t.f2_;
- f3_ = t.f3_;
- f4_ = t.f4_;
- return *this;
- }
-
- T0 f0_;
- T1 f1_;
- T2 f2_;
- T3 f3_;
- T4 f4_;
-};
-
-template <GTEST_6_TYPENAMES_(T)>
-class GTEST_6_TUPLE_(T) {
- public:
- template <int k> friend class gtest_internal::Get;
-
- tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_() {}
-
- explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
- GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
- GTEST_BY_REF_(T5) f5) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4),
- f5_(f5) {}
-
- tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
- f4_(t.f4_), f5_(t.f5_) {}
-
- template <GTEST_6_TYPENAMES_(U)>
- tuple(const GTEST_6_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
- f3_(t.f3_), f4_(t.f4_), f5_(t.f5_) {}
-
- tuple& operator=(const tuple& t) { return CopyFrom(t); }
-
- template <GTEST_6_TYPENAMES_(U)>
- tuple& operator=(const GTEST_6_TUPLE_(U)& t) {
- return CopyFrom(t);
- }
-
- GTEST_DECLARE_TUPLE_AS_FRIEND_
-
- template <GTEST_6_TYPENAMES_(U)>
- tuple& CopyFrom(const GTEST_6_TUPLE_(U)& t) {
- f0_ = t.f0_;
- f1_ = t.f1_;
- f2_ = t.f2_;
- f3_ = t.f3_;
- f4_ = t.f4_;
- f5_ = t.f5_;
- return *this;
- }
-
- T0 f0_;
- T1 f1_;
- T2 f2_;
- T3 f3_;
- T4 f4_;
- T5 f5_;
-};
-
-template <GTEST_7_TYPENAMES_(T)>
-class GTEST_7_TUPLE_(T) {
- public:
- template <int k> friend class gtest_internal::Get;
-
- tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_() {}
-
- explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
- GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
- GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6) : f0_(f0), f1_(f1), f2_(f2),
- f3_(f3), f4_(f4), f5_(f5), f6_(f6) {}
-
- tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
- f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {}
-
- template <GTEST_7_TYPENAMES_(U)>
- tuple(const GTEST_7_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
- f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {}
-
- tuple& operator=(const tuple& t) { return CopyFrom(t); }
-
- template <GTEST_7_TYPENAMES_(U)>
- tuple& operator=(const GTEST_7_TUPLE_(U)& t) {
- return CopyFrom(t);
- }
-
- GTEST_DECLARE_TUPLE_AS_FRIEND_
-
- template <GTEST_7_TYPENAMES_(U)>
- tuple& CopyFrom(const GTEST_7_TUPLE_(U)& t) {
- f0_ = t.f0_;
- f1_ = t.f1_;
- f2_ = t.f2_;
- f3_ = t.f3_;
- f4_ = t.f4_;
- f5_ = t.f5_;
- f6_ = t.f6_;
- return *this;
- }
-
- T0 f0_;
- T1 f1_;
- T2 f2_;
- T3 f3_;
- T4 f4_;
- T5 f5_;
- T6 f6_;
-};
-
-template <GTEST_8_TYPENAMES_(T)>
-class GTEST_8_TUPLE_(T) {
- public:
- template <int k> friend class gtest_internal::Get;
-
- tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_() {}
-
- explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
- GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
- GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6,
- GTEST_BY_REF_(T7) f7) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4),
- f5_(f5), f6_(f6), f7_(f7) {}
-
- tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
- f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {}
-
- template <GTEST_8_TYPENAMES_(U)>
- tuple(const GTEST_8_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
- f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {}
-
- tuple& operator=(const tuple& t) { return CopyFrom(t); }
-
- template <GTEST_8_TYPENAMES_(U)>
- tuple& operator=(const GTEST_8_TUPLE_(U)& t) {
- return CopyFrom(t);
- }
-
- GTEST_DECLARE_TUPLE_AS_FRIEND_
-
- template <GTEST_8_TYPENAMES_(U)>
- tuple& CopyFrom(const GTEST_8_TUPLE_(U)& t) {
- f0_ = t.f0_;
- f1_ = t.f1_;
- f2_ = t.f2_;
- f3_ = t.f3_;
- f4_ = t.f4_;
- f5_ = t.f5_;
- f6_ = t.f6_;
- f7_ = t.f7_;
- return *this;
- }
-
- T0 f0_;
- T1 f1_;
- T2 f2_;
- T3 f3_;
- T4 f4_;
- T5 f5_;
- T6 f6_;
- T7 f7_;
-};
-
-template <GTEST_9_TYPENAMES_(T)>
-class GTEST_9_TUPLE_(T) {
- public:
- template <int k> friend class gtest_internal::Get;
-
- tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_() {}
-
- explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
- GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
- GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7,
- GTEST_BY_REF_(T8) f8) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4),
- f5_(f5), f6_(f6), f7_(f7), f8_(f8) {}
-
- tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
- f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {}
-
- template <GTEST_9_TYPENAMES_(U)>
- tuple(const GTEST_9_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
- f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {}
-
- tuple& operator=(const tuple& t) { return CopyFrom(t); }
-
- template <GTEST_9_TYPENAMES_(U)>
- tuple& operator=(const GTEST_9_TUPLE_(U)& t) {
- return CopyFrom(t);
- }
-
- GTEST_DECLARE_TUPLE_AS_FRIEND_
-
- template <GTEST_9_TYPENAMES_(U)>
- tuple& CopyFrom(const GTEST_9_TUPLE_(U)& t) {
- f0_ = t.f0_;
- f1_ = t.f1_;
- f2_ = t.f2_;
- f3_ = t.f3_;
- f4_ = t.f4_;
- f5_ = t.f5_;
- f6_ = t.f6_;
- f7_ = t.f7_;
- f8_ = t.f8_;
- return *this;
- }
-
- T0 f0_;
- T1 f1_;
- T2 f2_;
- T3 f3_;
- T4 f4_;
- T5 f5_;
- T6 f6_;
- T7 f7_;
- T8 f8_;
-};
-
-template <GTEST_10_TYPENAMES_(T)>
-class tuple {
- public:
- template <int k> friend class gtest_internal::Get;
-
- tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_(),
- f9_() {}
-
- explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
- GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
- GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7,
- GTEST_BY_REF_(T8) f8, GTEST_BY_REF_(T9) f9) : f0_(f0), f1_(f1), f2_(f2),
- f3_(f3), f4_(f4), f5_(f5), f6_(f6), f7_(f7), f8_(f8), f9_(f9) {}
-
- tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
- f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), f9_(t.f9_) {}
-
- template <GTEST_10_TYPENAMES_(U)>
- tuple(const GTEST_10_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
- f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_),
- f9_(t.f9_) {}
-
- tuple& operator=(const tuple& t) { return CopyFrom(t); }
-
- template <GTEST_10_TYPENAMES_(U)>
- tuple& operator=(const GTEST_10_TUPLE_(U)& t) {
- return CopyFrom(t);
- }
-
- GTEST_DECLARE_TUPLE_AS_FRIEND_
-
- template <GTEST_10_TYPENAMES_(U)>
- tuple& CopyFrom(const GTEST_10_TUPLE_(U)& t) {
- f0_ = t.f0_;
- f1_ = t.f1_;
- f2_ = t.f2_;
- f3_ = t.f3_;
- f4_ = t.f4_;
- f5_ = t.f5_;
- f6_ = t.f6_;
- f7_ = t.f7_;
- f8_ = t.f8_;
- f9_ = t.f9_;
- return *this;
- }
-
- T0 f0_;
- T1 f1_;
- T2 f2_;
- T3 f3_;
- T4 f4_;
- T5 f5_;
- T6 f6_;
- T7 f7_;
- T8 f8_;
- T9 f9_;
-};
-
-// 6.1.3.2 Tuple creation functions.
-
-// Known limitations: we don't support passing an
-// std::tr1::reference_wrapper<T> to make_tuple(). And we don't
-// implement tie().
-
-inline tuple<> make_tuple() { return tuple<>(); }
-
-template <GTEST_1_TYPENAMES_(T)>
-inline GTEST_1_TUPLE_(T) make_tuple(const T0& f0) {
- return GTEST_1_TUPLE_(T)(f0);
-}
-
-template <GTEST_2_TYPENAMES_(T)>
-inline GTEST_2_TUPLE_(T) make_tuple(const T0& f0, const T1& f1) {
- return GTEST_2_TUPLE_(T)(f0, f1);
-}
-
-template <GTEST_3_TYPENAMES_(T)>
-inline GTEST_3_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2) {
- return GTEST_3_TUPLE_(T)(f0, f1, f2);
-}
-
-template <GTEST_4_TYPENAMES_(T)>
-inline GTEST_4_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
- const T3& f3) {
- return GTEST_4_TUPLE_(T)(f0, f1, f2, f3);
-}
-
-template <GTEST_5_TYPENAMES_(T)>
-inline GTEST_5_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
- const T3& f3, const T4& f4) {
- return GTEST_5_TUPLE_(T)(f0, f1, f2, f3, f4);
-}
-
-template <GTEST_6_TYPENAMES_(T)>
-inline GTEST_6_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
- const T3& f3, const T4& f4, const T5& f5) {
- return GTEST_6_TUPLE_(T)(f0, f1, f2, f3, f4, f5);
-}
-
-template <GTEST_7_TYPENAMES_(T)>
-inline GTEST_7_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
- const T3& f3, const T4& f4, const T5& f5, const T6& f6) {
- return GTEST_7_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6);
-}
-
-template <GTEST_8_TYPENAMES_(T)>
-inline GTEST_8_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
- const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7) {
- return GTEST_8_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7);
-}
-
-template <GTEST_9_TYPENAMES_(T)>
-inline GTEST_9_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
- const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7,
- const T8& f8) {
- return GTEST_9_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8);
-}
-
-template <GTEST_10_TYPENAMES_(T)>
-inline GTEST_10_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
- const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7,
- const T8& f8, const T9& f9) {
- return GTEST_10_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8, f9);
-}
-
-// 6.1.3.3 Tuple helper classes.
-
-template <typename Tuple> struct tuple_size;
-
-template <GTEST_0_TYPENAMES_(T)>
-struct tuple_size<GTEST_0_TUPLE_(T) > {
- static const int value = 0;
-};
-
-template <GTEST_1_TYPENAMES_(T)>
-struct tuple_size<GTEST_1_TUPLE_(T) > {
- static const int value = 1;
-};
-
-template <GTEST_2_TYPENAMES_(T)>
-struct tuple_size<GTEST_2_TUPLE_(T) > {
- static const int value = 2;
-};
-
-template <GTEST_3_TYPENAMES_(T)>
-struct tuple_size<GTEST_3_TUPLE_(T) > {
- static const int value = 3;
-};
-
-template <GTEST_4_TYPENAMES_(T)>
-struct tuple_size<GTEST_4_TUPLE_(T) > {
- static const int value = 4;
-};
-
-template <GTEST_5_TYPENAMES_(T)>
-struct tuple_size<GTEST_5_TUPLE_(T) > {
- static const int value = 5;
-};
-
-template <GTEST_6_TYPENAMES_(T)>
-struct tuple_size<GTEST_6_TUPLE_(T) > {
- static const int value = 6;
-};
-
-template <GTEST_7_TYPENAMES_(T)>
-struct tuple_size<GTEST_7_TUPLE_(T) > {
- static const int value = 7;
-};
-
-template <GTEST_8_TYPENAMES_(T)>
-struct tuple_size<GTEST_8_TUPLE_(T) > {
- static const int value = 8;
-};
-
-template <GTEST_9_TYPENAMES_(T)>
-struct tuple_size<GTEST_9_TUPLE_(T) > {
- static const int value = 9;
-};
-
-template <GTEST_10_TYPENAMES_(T)>
-struct tuple_size<GTEST_10_TUPLE_(T) > {
- static const int value = 10;
-};
-
-template <int k, class Tuple>
-struct tuple_element {
- typedef typename gtest_internal::TupleElement<
- k < (tuple_size<Tuple>::value), k, Tuple>::type type;
-};
-
-#define GTEST_TUPLE_ELEMENT_(k, Tuple) typename tuple_element<k, Tuple >::type
-
-// 6.1.3.4 Element access.
-
-namespace gtest_internal {
-
-template <>
-class Get<0> {
- public:
- template <class Tuple>
- static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple))
- Field(Tuple& t) { return t.f0_; } // NOLINT
-
- template <class Tuple>
- static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple))
- ConstField(const Tuple& t) { return t.f0_; }
-};
-
-template <>
-class Get<1> {
- public:
- template <class Tuple>
- static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple))
- Field(Tuple& t) { return t.f1_; } // NOLINT
-
- template <class Tuple>
- static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple))
- ConstField(const Tuple& t) { return t.f1_; }
-};
-
-template <>
-class Get<2> {
- public:
- template <class Tuple>
- static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple))
- Field(Tuple& t) { return t.f2_; } // NOLINT
-
- template <class Tuple>
- static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple))
- ConstField(const Tuple& t) { return t.f2_; }
-};
-
-template <>
-class Get<3> {
- public:
- template <class Tuple>
- static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple))
- Field(Tuple& t) { return t.f3_; } // NOLINT
-
- template <class Tuple>
- static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple))
- ConstField(const Tuple& t) { return t.f3_; }
-};
-
-template <>
-class Get<4> {
- public:
- template <class Tuple>
- static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple))
- Field(Tuple& t) { return t.f4_; } // NOLINT
-
- template <class Tuple>
- static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple))
- ConstField(const Tuple& t) { return t.f4_; }
-};
-
-template <>
-class Get<5> {
- public:
- template <class Tuple>
- static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple))
- Field(Tuple& t) { return t.f5_; } // NOLINT
-
- template <class Tuple>
- static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple))
- ConstField(const Tuple& t) { return t.f5_; }
-};
-
-template <>
-class Get<6> {
- public:
- template <class Tuple>
- static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple))
- Field(Tuple& t) { return t.f6_; } // NOLINT
-
- template <class Tuple>
- static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple))
- ConstField(const Tuple& t) { return t.f6_; }
-};
-
-template <>
-class Get<7> {
- public:
- template <class Tuple>
- static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple))
- Field(Tuple& t) { return t.f7_; } // NOLINT
-
- template <class Tuple>
- static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple))
- ConstField(const Tuple& t) { return t.f7_; }
-};
-
-template <>
-class Get<8> {
- public:
- template <class Tuple>
- static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple))
- Field(Tuple& t) { return t.f8_; } // NOLINT
-
- template <class Tuple>
- static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple))
- ConstField(const Tuple& t) { return t.f8_; }
-};
-
-template <>
-class Get<9> {
- public:
- template <class Tuple>
- static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple))
- Field(Tuple& t) { return t.f9_; } // NOLINT
-
- template <class Tuple>
- static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple))
- ConstField(const Tuple& t) { return t.f9_; }
-};
-
-} // namespace gtest_internal
-
-template <int k, GTEST_10_TYPENAMES_(T)>
-GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T)))
-get(GTEST_10_TUPLE_(T)& t) {
- return gtest_internal::Get<k>::Field(t);
-}
-
-template <int k, GTEST_10_TYPENAMES_(T)>
-GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T)))
-get(const GTEST_10_TUPLE_(T)& t) {
- return gtest_internal::Get<k>::ConstField(t);
-}
-
-// 6.1.3.5 Relational operators
-
-// We only implement == and !=, as we don't have a need for the rest yet.
-
-namespace gtest_internal {
-
-// SameSizeTuplePrefixComparator<k, k>::Eq(t1, t2) returns true if the
-// first k fields of t1 equals the first k fields of t2.
-// SameSizeTuplePrefixComparator(k1, k2) would be a compiler error if
-// k1 != k2.
-template <int kSize1, int kSize2>
-struct SameSizeTuplePrefixComparator;
-
-template <>
-struct SameSizeTuplePrefixComparator<0, 0> {
- template <class Tuple1, class Tuple2>
- static bool Eq(const Tuple1& /* t1 */, const Tuple2& /* t2 */) {
- return true;
- }
-};
-
-template <int k>
-struct SameSizeTuplePrefixComparator<k, k> {
- template <class Tuple1, class Tuple2>
- static bool Eq(const Tuple1& t1, const Tuple2& t2) {
- return SameSizeTuplePrefixComparator<k - 1, k - 1>::Eq(t1, t2) &&
- ::std::tr1::get<k - 1>(t1) == ::std::tr1::get<k - 1>(t2);
- }
-};
-
-} // namespace gtest_internal
-
-template <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)>
-inline bool operator==(const GTEST_10_TUPLE_(T)& t,
- const GTEST_10_TUPLE_(U)& u) {
- return gtest_internal::SameSizeTuplePrefixComparator<
- tuple_size<GTEST_10_TUPLE_(T) >::value,
- tuple_size<GTEST_10_TUPLE_(U) >::value>::Eq(t, u);
-}
-
-template <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)>
-inline bool operator!=(const GTEST_10_TUPLE_(T)& t,
- const GTEST_10_TUPLE_(U)& u) { return !(t == u); }
-
-// 6.1.4 Pairs.
-// Unimplemented.
-
-} // namespace tr1
-} // namespace std
-
-#undef GTEST_0_TUPLE_
-#undef GTEST_1_TUPLE_
-#undef GTEST_2_TUPLE_
-#undef GTEST_3_TUPLE_
-#undef GTEST_4_TUPLE_
-#undef GTEST_5_TUPLE_
-#undef GTEST_6_TUPLE_
-#undef GTEST_7_TUPLE_
-#undef GTEST_8_TUPLE_
-#undef GTEST_9_TUPLE_
-#undef GTEST_10_TUPLE_
-
-#undef GTEST_0_TYPENAMES_
-#undef GTEST_1_TYPENAMES_
-#undef GTEST_2_TYPENAMES_
-#undef GTEST_3_TYPENAMES_
-#undef GTEST_4_TYPENAMES_
-#undef GTEST_5_TYPENAMES_
-#undef GTEST_6_TYPENAMES_
-#undef GTEST_7_TYPENAMES_
-#undef GTEST_8_TYPENAMES_
-#undef GTEST_9_TYPENAMES_
-#undef GTEST_10_TYPENAMES_
-
-#undef GTEST_DECLARE_TUPLE_AS_FRIEND_
-#undef GTEST_BY_REF_
-#undef GTEST_ADD_REF_
-#undef GTEST_TUPLE_ELEMENT_
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-type-util.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-type-util.h
deleted file mode 100644
index 3d7542d1fb3..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/include/gtest/internal/gtest-type-util.h
+++ /dev/null
@@ -1,3335 +0,0 @@
-// This file was GENERATED by command:
-// pump.py gtest-type-util.h.pump
-// DO NOT EDIT BY HAND!!!
-
-// Copyright 2008 Google Inc.
-// All Rights Reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Type utilities needed for implementing typed and type-parameterized
-// tests. This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
-//
-// Currently we support at most 50 types in a list, and at most 50
-// type-parameterized tests in one type-parameterized test suite.
-// Please contact googletestframework@googlegroups.com if you need
-// more.
-
-// GOOGLETEST_CM0001 DO NOT DELETE
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
-
-#include "gtest/internal/gtest-port.h"
-
-// #ifdef __GNUC__ is too general here. It is possible to use gcc without using
-// libstdc++ (which is where cxxabi.h comes from).
-# if GTEST_HAS_CXXABI_H_
-# include <cxxabi.h>
-# elif defined(__HP_aCC)
-# include <acxx_demangle.h>
-# endif // GTEST_HASH_CXXABI_H_
-
-namespace testing {
-namespace internal {
-
-// Canonicalizes a given name with respect to the Standard C++ Library.
-// This handles removing the inline namespace within `std` that is
-// used by various standard libraries (e.g., `std::__1`). Names outside
-// of namespace std are returned unmodified.
-inline std::string CanonicalizeForStdLibVersioning(std::string s) {
- static const char prefix[] = "std::__";
- if (s.compare(0, strlen(prefix), prefix) == 0) {
- std::string::size_type end = s.find("::", strlen(prefix));
- if (end != s.npos) {
- // Erase everything between the initial `std` and the second `::`.
- s.erase(strlen("std"), end - strlen("std"));
- }
- }
- return s;
-}
-
-// GetTypeName<T>() returns a human-readable name of type T.
-// NB: This function is also used in Google Mock, so don't move it inside of
-// the typed-test-only section below.
-template <typename T>
-std::string GetTypeName() {
-# if GTEST_HAS_RTTI
-
- const char* const name = typeid(T).name();
-# if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC)
- int status = 0;
- // gcc's implementation of typeid(T).name() mangles the type name,
- // so we have to demangle it.
-# if GTEST_HAS_CXXABI_H_
- using abi::__cxa_demangle;
-# endif // GTEST_HAS_CXXABI_H_
- char* const readable_name = __cxa_demangle(name, nullptr, nullptr, &status);
- const std::string name_str(status == 0 ? readable_name : name);
- free(readable_name);
- return CanonicalizeForStdLibVersioning(name_str);
-# else
- return name;
-# endif // GTEST_HAS_CXXABI_H_ || __HP_aCC
-
-# else
-
- return "<type>";
-
-# endif // GTEST_HAS_RTTI
-}
-
-#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
-
-// A unique type used as the default value for the arguments of class
-// template Types. This allows us to simulate variadic templates
-// (e.g. Types<int>, Type<int, double>, and etc), which C++ doesn't
-// support directly.
-struct None {};
-
-// The following family of struct and struct templates are used to
-// represent type lists. In particular, TypesN<T1, T2, ..., TN>
-// represents a type list with N types (T1, T2, ..., and TN) in it.
-// Except for Types0, every struct in the family has two member types:
-// Head for the first type in the list, and Tail for the rest of the
-// list.
-
-// The empty type list.
-struct Types0 {};
-
-// Type lists of length 1, 2, 3, and so on.
-
-template <typename T1>
-struct Types1 {
- typedef T1 Head;
- typedef Types0 Tail;
-};
-template <typename T1, typename T2>
-struct Types2 {
- typedef T1 Head;
- typedef Types1<T2> Tail;
-};
-
-template <typename T1, typename T2, typename T3>
-struct Types3 {
- typedef T1 Head;
- typedef Types2<T2, T3> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4>
-struct Types4 {
- typedef T1 Head;
- typedef Types3<T2, T3, T4> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5>
-struct Types5 {
- typedef T1 Head;
- typedef Types4<T2, T3, T4, T5> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6>
-struct Types6 {
- typedef T1 Head;
- typedef Types5<T2, T3, T4, T5, T6> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7>
-struct Types7 {
- typedef T1 Head;
- typedef Types6<T2, T3, T4, T5, T6, T7> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8>
-struct Types8 {
- typedef T1 Head;
- typedef Types7<T2, T3, T4, T5, T6, T7, T8> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9>
-struct Types9 {
- typedef T1 Head;
- typedef Types8<T2, T3, T4, T5, T6, T7, T8, T9> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10>
-struct Types10 {
- typedef T1 Head;
- typedef Types9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11>
-struct Types11 {
- typedef T1 Head;
- typedef Types10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12>
-struct Types12 {
- typedef T1 Head;
- typedef Types11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13>
-struct Types13 {
- typedef T1 Head;
- typedef Types12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14>
-struct Types14 {
- typedef T1 Head;
- typedef Types13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15>
-struct Types15 {
- typedef T1 Head;
- typedef Types14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16>
-struct Types16 {
- typedef T1 Head;
- typedef Types15<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17>
-struct Types17 {
- typedef T1 Head;
- typedef Types16<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18>
-struct Types18 {
- typedef T1 Head;
- typedef Types17<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19>
-struct Types19 {
- typedef T1 Head;
- typedef Types18<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20>
-struct Types20 {
- typedef T1 Head;
- typedef Types19<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21>
-struct Types21 {
- typedef T1 Head;
- typedef Types20<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22>
-struct Types22 {
- typedef T1 Head;
- typedef Types21<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23>
-struct Types23 {
- typedef T1 Head;
- typedef Types22<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24>
-struct Types24 {
- typedef T1 Head;
- typedef Types23<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25>
-struct Types25 {
- typedef T1 Head;
- typedef Types24<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26>
-struct Types26 {
- typedef T1 Head;
- typedef Types25<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27>
-struct Types27 {
- typedef T1 Head;
- typedef Types26<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28>
-struct Types28 {
- typedef T1 Head;
- typedef Types27<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29>
-struct Types29 {
- typedef T1 Head;
- typedef Types28<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30>
-struct Types30 {
- typedef T1 Head;
- typedef Types29<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31>
-struct Types31 {
- typedef T1 Head;
- typedef Types30<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32>
-struct Types32 {
- typedef T1 Head;
- typedef Types31<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33>
-struct Types33 {
- typedef T1 Head;
- typedef Types32<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34>
-struct Types34 {
- typedef T1 Head;
- typedef Types33<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35>
-struct Types35 {
- typedef T1 Head;
- typedef Types34<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36>
-struct Types36 {
- typedef T1 Head;
- typedef Types35<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37>
-struct Types37 {
- typedef T1 Head;
- typedef Types36<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38>
-struct Types38 {
- typedef T1 Head;
- typedef Types37<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39>
-struct Types39 {
- typedef T1 Head;
- typedef Types38<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40>
-struct Types40 {
- typedef T1 Head;
- typedef Types39<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41>
-struct Types41 {
- typedef T1 Head;
- typedef Types40<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42>
-struct Types42 {
- typedef T1 Head;
- typedef Types41<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43>
-struct Types43 {
- typedef T1 Head;
- typedef Types42<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
- T43> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44>
-struct Types44 {
- typedef T1 Head;
- typedef Types43<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- T44> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45>
-struct Types45 {
- typedef T1 Head;
- typedef Types44<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- T44, T45> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46>
-struct Types46 {
- typedef T1 Head;
- typedef Types45<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- T44, T45, T46> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47>
-struct Types47 {
- typedef T1 Head;
- typedef Types46<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- T44, T45, T46, T47> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47, typename T48>
-struct Types48 {
- typedef T1 Head;
- typedef Types47<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- T44, T45, T46, T47, T48> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47, typename T48, typename T49>
-struct Types49 {
- typedef T1 Head;
- typedef Types48<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- T44, T45, T46, T47, T48, T49> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47, typename T48, typename T49, typename T50>
-struct Types50 {
- typedef T1 Head;
- typedef Types49<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- T44, T45, T46, T47, T48, T49, T50> Tail;
-};
-
-
-} // namespace internal
-
-// We don't want to require the users to write TypesN<...> directly,
-// as that would require them to count the length. Types<...> is much
-// easier to write, but generates horrible messages when there is a
-// compiler error, as gcc insists on printing out each template
-// argument, even if it has the default value (this means Types<int>
-// will appear as Types<int, None, None, ..., None> in the compiler
-// errors).
-//
-// Our solution is to combine the best part of the two approaches: a
-// user would write Types<T1, ..., TN>, and Google Test will translate
-// that to TypesN<T1, ..., TN> internally to make error messages
-// readable. The translation is done by the 'type' member of the
-// Types template.
-template <typename T1 = internal::None, typename T2 = internal::None,
- typename T3 = internal::None, typename T4 = internal::None,
- typename T5 = internal::None, typename T6 = internal::None,
- typename T7 = internal::None, typename T8 = internal::None,
- typename T9 = internal::None, typename T10 = internal::None,
- typename T11 = internal::None, typename T12 = internal::None,
- typename T13 = internal::None, typename T14 = internal::None,
- typename T15 = internal::None, typename T16 = internal::None,
- typename T17 = internal::None, typename T18 = internal::None,
- typename T19 = internal::None, typename T20 = internal::None,
- typename T21 = internal::None, typename T22 = internal::None,
- typename T23 = internal::None, typename T24 = internal::None,
- typename T25 = internal::None, typename T26 = internal::None,
- typename T27 = internal::None, typename T28 = internal::None,
- typename T29 = internal::None, typename T30 = internal::None,
- typename T31 = internal::None, typename T32 = internal::None,
- typename T33 = internal::None, typename T34 = internal::None,
- typename T35 = internal::None, typename T36 = internal::None,
- typename T37 = internal::None, typename T38 = internal::None,
- typename T39 = internal::None, typename T40 = internal::None,
- typename T41 = internal::None, typename T42 = internal::None,
- typename T43 = internal::None, typename T44 = internal::None,
- typename T45 = internal::None, typename T46 = internal::None,
- typename T47 = internal::None, typename T48 = internal::None,
- typename T49 = internal::None, typename T50 = internal::None>
-struct Types {
- typedef internal::Types50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41, T42, T43, T44, T45, T46, T47, T48, T49, T50> type;
-};
-
-template <>
-struct Types<internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types0 type;
-};
-template <typename T1>
-struct Types<T1, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types1<T1> type;
-};
-template <typename T1, typename T2>
-struct Types<T1, T2, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types2<T1, T2> type;
-};
-template <typename T1, typename T2, typename T3>
-struct Types<T1, T2, T3, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None> {
- typedef internal::Types3<T1, T2, T3> type;
-};
-template <typename T1, typename T2, typename T3, typename T4>
-struct Types<T1, T2, T3, T4, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None> {
- typedef internal::Types4<T1, T2, T3, T4> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5>
-struct Types<T1, T2, T3, T4, T5, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None> {
- typedef internal::Types5<T1, T2, T3, T4, T5> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6>
-struct Types<T1, T2, T3, T4, T5, T6, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types6<T1, T2, T3, T4, T5, T6> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7>
-struct Types<T1, T2, T3, T4, T5, T6, T7, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types7<T1, T2, T3, T4, T5, T6, T7> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None> {
- typedef internal::Types8<T1, T2, T3, T4, T5, T6, T7, T8> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None> {
- typedef internal::Types9<T1, T2, T3, T4, T5, T6, T7, T8, T9> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None> {
- typedef internal::Types10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None> {
- typedef internal::Types14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None> {
- typedef internal::Types15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None> {
- typedef internal::Types19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None> {
- typedef internal::Types20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None> {
- typedef internal::Types21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None> {
- typedef internal::Types25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None> {
- typedef internal::Types26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None> {
- typedef internal::Types30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None> {
- typedef internal::Types31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None> {
- typedef internal::Types35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None> {
- typedef internal::Types36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None> {
- typedef internal::Types37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, T39, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
- T40> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None> {
- typedef internal::Types41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None> {
- typedef internal::Types42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41, T42> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None> {
- typedef internal::Types43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41, T42, T43> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41, T42, T43, T44> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41, T42, T43, T44, T45> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
- T46, internal::None, internal::None, internal::None, internal::None> {
- typedef internal::Types46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41, T42, T43, T44, T45, T46> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
- T46, T47, internal::None, internal::None, internal::None> {
- typedef internal::Types47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41, T42, T43, T44, T45, T46, T47> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47, typename T48>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
- T46, T47, T48, internal::None, internal::None> {
- typedef internal::Types48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41, T42, T43, T44, T45, T46, T47, T48> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47, typename T48, typename T49>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
- T46, T47, T48, T49, internal::None> {
- typedef internal::Types49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41, T42, T43, T44, T45, T46, T47, T48, T49> type;
-};
-
-namespace internal {
-
-# define GTEST_TEMPLATE_ template <typename T> class
-
-// The template "selector" struct TemplateSel<Tmpl> is used to
-// represent Tmpl, which must be a class template with one type
-// parameter, as a type. TemplateSel<Tmpl>::Bind<T>::type is defined
-// as the type Tmpl<T>. This allows us to actually instantiate the
-// template "selected" by TemplateSel<Tmpl>.
-//
-// This trick is necessary for simulating typedef for class templates,
-// which C++ doesn't support directly.
-template <GTEST_TEMPLATE_ Tmpl>
-struct TemplateSel {
- template <typename T>
- struct Bind {
- typedef Tmpl<T> type;
- };
-};
-
-# define GTEST_BIND_(TmplSel, T) \
- TmplSel::template Bind<T>::type
-
-// A unique struct template used as the default value for the
-// arguments of class template Templates. This allows us to simulate
-// variadic templates (e.g. Templates<int>, Templates<int, double>,
-// and etc), which C++ doesn't support directly.
-template <typename T>
-struct NoneT {};
-
-// The following family of struct and struct templates are used to
-// represent template lists. In particular, TemplatesN<T1, T2, ...,
-// TN> represents a list of N templates (T1, T2, ..., and TN). Except
-// for Templates0, every struct in the family has two member types:
-// Head for the selector of the first template in the list, and Tail
-// for the rest of the list.
-
-// The empty template list.
-struct Templates0 {};
-
-// Template lists of length 1, 2, 3, and so on.
-
-template <GTEST_TEMPLATE_ T1>
-struct Templates1 {
- typedef TemplateSel<T1> Head;
- typedef Templates0 Tail;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2>
-struct Templates2 {
- typedef TemplateSel<T1> Head;
- typedef Templates1<T2> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3>
-struct Templates3 {
- typedef TemplateSel<T1> Head;
- typedef Templates2<T2, T3> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4>
-struct Templates4 {
- typedef TemplateSel<T1> Head;
- typedef Templates3<T2, T3, T4> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5>
-struct Templates5 {
- typedef TemplateSel<T1> Head;
- typedef Templates4<T2, T3, T4, T5> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6>
-struct Templates6 {
- typedef TemplateSel<T1> Head;
- typedef Templates5<T2, T3, T4, T5, T6> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7>
-struct Templates7 {
- typedef TemplateSel<T1> Head;
- typedef Templates6<T2, T3, T4, T5, T6, T7> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8>
-struct Templates8 {
- typedef TemplateSel<T1> Head;
- typedef Templates7<T2, T3, T4, T5, T6, T7, T8> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9>
-struct Templates9 {
- typedef TemplateSel<T1> Head;
- typedef Templates8<T2, T3, T4, T5, T6, T7, T8, T9> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10>
-struct Templates10 {
- typedef TemplateSel<T1> Head;
- typedef Templates9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11>
-struct Templates11 {
- typedef TemplateSel<T1> Head;
- typedef Templates10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12>
-struct Templates12 {
- typedef TemplateSel<T1> Head;
- typedef Templates11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13>
-struct Templates13 {
- typedef TemplateSel<T1> Head;
- typedef Templates12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14>
-struct Templates14 {
- typedef TemplateSel<T1> Head;
- typedef Templates13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15>
-struct Templates15 {
- typedef TemplateSel<T1> Head;
- typedef Templates14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16>
-struct Templates16 {
- typedef TemplateSel<T1> Head;
- typedef Templates15<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17>
-struct Templates17 {
- typedef TemplateSel<T1> Head;
- typedef Templates16<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18>
-struct Templates18 {
- typedef TemplateSel<T1> Head;
- typedef Templates17<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19>
-struct Templates19 {
- typedef TemplateSel<T1> Head;
- typedef Templates18<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20>
-struct Templates20 {
- typedef TemplateSel<T1> Head;
- typedef Templates19<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21>
-struct Templates21 {
- typedef TemplateSel<T1> Head;
- typedef Templates20<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22>
-struct Templates22 {
- typedef TemplateSel<T1> Head;
- typedef Templates21<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23>
-struct Templates23 {
- typedef TemplateSel<T1> Head;
- typedef Templates22<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24>
-struct Templates24 {
- typedef TemplateSel<T1> Head;
- typedef Templates23<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25>
-struct Templates25 {
- typedef TemplateSel<T1> Head;
- typedef Templates24<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26>
-struct Templates26 {
- typedef TemplateSel<T1> Head;
- typedef Templates25<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27>
-struct Templates27 {
- typedef TemplateSel<T1> Head;
- typedef Templates26<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28>
-struct Templates28 {
- typedef TemplateSel<T1> Head;
- typedef Templates27<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29>
-struct Templates29 {
- typedef TemplateSel<T1> Head;
- typedef Templates28<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30>
-struct Templates30 {
- typedef TemplateSel<T1> Head;
- typedef Templates29<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31>
-struct Templates31 {
- typedef TemplateSel<T1> Head;
- typedef Templates30<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32>
-struct Templates32 {
- typedef TemplateSel<T1> Head;
- typedef Templates31<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33>
-struct Templates33 {
- typedef TemplateSel<T1> Head;
- typedef Templates32<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34>
-struct Templates34 {
- typedef TemplateSel<T1> Head;
- typedef Templates33<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35>
-struct Templates35 {
- typedef TemplateSel<T1> Head;
- typedef Templates34<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36>
-struct Templates36 {
- typedef TemplateSel<T1> Head;
- typedef Templates35<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37>
-struct Templates37 {
- typedef TemplateSel<T1> Head;
- typedef Templates36<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38>
-struct Templates38 {
- typedef TemplateSel<T1> Head;
- typedef Templates37<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39>
-struct Templates39 {
- typedef TemplateSel<T1> Head;
- typedef Templates38<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40>
-struct Templates40 {
- typedef TemplateSel<T1> Head;
- typedef Templates39<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41>
-struct Templates41 {
- typedef TemplateSel<T1> Head;
- typedef Templates40<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42>
-struct Templates42 {
- typedef TemplateSel<T1> Head;
- typedef Templates41<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
- T42> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43>
-struct Templates43 {
- typedef TemplateSel<T1> Head;
- typedef Templates42<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
- T43> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44>
-struct Templates44 {
- typedef TemplateSel<T1> Head;
- typedef Templates43<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
- T43, T44> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45>
-struct Templates45 {
- typedef TemplateSel<T1> Head;
- typedef Templates44<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
- T43, T44, T45> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
- GTEST_TEMPLATE_ T46>
-struct Templates46 {
- typedef TemplateSel<T1> Head;
- typedef Templates45<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
- T43, T44, T45, T46> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
- GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47>
-struct Templates47 {
- typedef TemplateSel<T1> Head;
- typedef Templates46<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
- T43, T44, T45, T46, T47> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
- GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48>
-struct Templates48 {
- typedef TemplateSel<T1> Head;
- typedef Templates47<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
- T43, T44, T45, T46, T47, T48> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
- GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
- GTEST_TEMPLATE_ T49>
-struct Templates49 {
- typedef TemplateSel<T1> Head;
- typedef Templates48<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
- T43, T44, T45, T46, T47, T48, T49> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
- GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
- GTEST_TEMPLATE_ T49, GTEST_TEMPLATE_ T50>
-struct Templates50 {
- typedef TemplateSel<T1> Head;
- typedef Templates49<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
- T43, T44, T45, T46, T47, T48, T49, T50> Tail;
-};
-
-
-// We don't want to require the users to write TemplatesN<...> directly,
-// as that would require them to count the length. Templates<...> is much
-// easier to write, but generates horrible messages when there is a
-// compiler error, as gcc insists on printing out each template
-// argument, even if it has the default value (this means Templates<list>
-// will appear as Templates<list, NoneT, NoneT, ..., NoneT> in the compiler
-// errors).
-//
-// Our solution is to combine the best part of the two approaches: a
-// user would write Templates<T1, ..., TN>, and Google Test will translate
-// that to TemplatesN<T1, ..., TN> internally to make error messages
-// readable. The translation is done by the 'type' member of the
-// Templates template.
-template <GTEST_TEMPLATE_ T1 = NoneT, GTEST_TEMPLATE_ T2 = NoneT,
- GTEST_TEMPLATE_ T3 = NoneT, GTEST_TEMPLATE_ T4 = NoneT,
- GTEST_TEMPLATE_ T5 = NoneT, GTEST_TEMPLATE_ T6 = NoneT,
- GTEST_TEMPLATE_ T7 = NoneT, GTEST_TEMPLATE_ T8 = NoneT,
- GTEST_TEMPLATE_ T9 = NoneT, GTEST_TEMPLATE_ T10 = NoneT,
- GTEST_TEMPLATE_ T11 = NoneT, GTEST_TEMPLATE_ T12 = NoneT,
- GTEST_TEMPLATE_ T13 = NoneT, GTEST_TEMPLATE_ T14 = NoneT,
- GTEST_TEMPLATE_ T15 = NoneT, GTEST_TEMPLATE_ T16 = NoneT,
- GTEST_TEMPLATE_ T17 = NoneT, GTEST_TEMPLATE_ T18 = NoneT,
- GTEST_TEMPLATE_ T19 = NoneT, GTEST_TEMPLATE_ T20 = NoneT,
- GTEST_TEMPLATE_ T21 = NoneT, GTEST_TEMPLATE_ T22 = NoneT,
- GTEST_TEMPLATE_ T23 = NoneT, GTEST_TEMPLATE_ T24 = NoneT,
- GTEST_TEMPLATE_ T25 = NoneT, GTEST_TEMPLATE_ T26 = NoneT,
- GTEST_TEMPLATE_ T27 = NoneT, GTEST_TEMPLATE_ T28 = NoneT,
- GTEST_TEMPLATE_ T29 = NoneT, GTEST_TEMPLATE_ T30 = NoneT,
- GTEST_TEMPLATE_ T31 = NoneT, GTEST_TEMPLATE_ T32 = NoneT,
- GTEST_TEMPLATE_ T33 = NoneT, GTEST_TEMPLATE_ T34 = NoneT,
- GTEST_TEMPLATE_ T35 = NoneT, GTEST_TEMPLATE_ T36 = NoneT,
- GTEST_TEMPLATE_ T37 = NoneT, GTEST_TEMPLATE_ T38 = NoneT,
- GTEST_TEMPLATE_ T39 = NoneT, GTEST_TEMPLATE_ T40 = NoneT,
- GTEST_TEMPLATE_ T41 = NoneT, GTEST_TEMPLATE_ T42 = NoneT,
- GTEST_TEMPLATE_ T43 = NoneT, GTEST_TEMPLATE_ T44 = NoneT,
- GTEST_TEMPLATE_ T45 = NoneT, GTEST_TEMPLATE_ T46 = NoneT,
- GTEST_TEMPLATE_ T47 = NoneT, GTEST_TEMPLATE_ T48 = NoneT,
- GTEST_TEMPLATE_ T49 = NoneT, GTEST_TEMPLATE_ T50 = NoneT>
-struct Templates {
- typedef Templates50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
- T42, T43, T44, T45, T46, T47, T48, T49, T50> type;
-};
-
-template <>
-struct Templates<NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT> {
- typedef Templates0 type;
-};
-template <GTEST_TEMPLATE_ T1>
-struct Templates<T1, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT> {
- typedef Templates1<T1> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2>
-struct Templates<T1, T2, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT> {
- typedef Templates2<T1, T2> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3>
-struct Templates<T1, T2, T3, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates3<T1, T2, T3> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4>
-struct Templates<T1, T2, T3, T4, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates4<T1, T2, T3, T4> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5>
-struct Templates<T1, T2, T3, T4, T5, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates5<T1, T2, T3, T4, T5> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6>
-struct Templates<T1, T2, T3, T4, T5, T6, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates6<T1, T2, T3, T4, T5, T6> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates7<T1, T2, T3, T4, T5, T6, T7> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates8<T1, T2, T3, T4, T5, T6, T7, T8> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates9<T1, T2, T3, T4, T5, T6, T7, T8, T9> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT> {
- typedef Templates18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT> {
- typedef Templates19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT> {
- typedef Templates20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT> {
- typedef Templates21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT> {
- typedef Templates22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT> {
- typedef Templates23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT> {
- typedef Templates24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT> {
- typedef Templates25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT> {
- typedef Templates26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT> {
- typedef Templates27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT> {
- typedef Templates28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT> {
- typedef Templates29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
- T42> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
- T42, T43> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
- T42, T43, T44> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
- T45, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
- T42, T43, T44, T45> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
- GTEST_TEMPLATE_ T46>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
- T45, T46, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
- T42, T43, T44, T45, T46> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
- GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
- T45, T46, T47, NoneT, NoneT, NoneT> {
- typedef Templates47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
- T42, T43, T44, T45, T46, T47> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
- GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
- T45, T46, T47, T48, NoneT, NoneT> {
- typedef Templates48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
- T42, T43, T44, T45, T46, T47, T48> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
- GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
- GTEST_TEMPLATE_ T49>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
- T45, T46, T47, T48, T49, NoneT> {
- typedef Templates49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
- T42, T43, T44, T45, T46, T47, T48, T49> type;
-};
-
-// The TypeList template makes it possible to use either a single type
-// or a Types<...> list in TYPED_TEST_SUITE() and
-// INSTANTIATE_TYPED_TEST_SUITE_P().
-
-template <typename T>
-struct TypeList {
- typedef Types1<T> type;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47, typename T48, typename T49, typename T50>
-struct TypeList<Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- T44, T45, T46, T47, T48, T49, T50> > {
- typedef typename Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>::type type;
-};
-
-#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
-
-} // namespace internal
-} // namespace testing
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-all.cc b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-all.cc
deleted file mode 100644
index ad292905cf3..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-all.cc
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// Google C++ Testing and Mocking Framework (Google Test)
-//
-// Sometimes it's desirable to build Google Test by compiling a single file.
-// This file serves this purpose.
-
-// This line ensures that gtest.h can be compiled on its own, even
-// when it's fused.
-#include "gtest/gtest.h"
-
-// The following lines pull in the real gtest *.cc files.
-#include "src/gtest.cc"
-#include "src/gtest-death-test.cc"
-#include "src/gtest-filepath.cc"
-#include "src/gtest-matchers.cc"
-#include "src/gtest-port.cc"
-#include "src/gtest-printers.cc"
-#include "src/gtest-test-part.cc"
-#include "src/gtest-typed-test.cc"
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-death-test.cc b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-death-test.cc
deleted file mode 100644
index da09a1cfc23..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-death-test.cc
+++ /dev/null
@@ -1,1653 +0,0 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// This file implements death tests.
-
-#include "gtest/gtest-death-test.h"
-
-#include <utility>
-
-#include "gtest/internal/gtest-port.h"
-#include "gtest/internal/custom/gtest.h"
-
-#if GTEST_HAS_DEATH_TEST
-
-# if GTEST_OS_MAC
-# include <crt_externs.h>
-# endif // GTEST_OS_MAC
-
-# include <errno.h>
-# include <fcntl.h>
-# include <limits.h>
-
-# if GTEST_OS_LINUX
-# include <signal.h>
-# endif // GTEST_OS_LINUX
-
-# include <stdarg.h>
-
-# if GTEST_OS_WINDOWS
-# include <windows.h>
-# else
-# include <sys/mman.h>
-# include <sys/wait.h>
-# endif // GTEST_OS_WINDOWS
-
-# if GTEST_OS_QNX
-# include <spawn.h>
-# endif // GTEST_OS_QNX
-
-# if GTEST_OS_FUCHSIA
-# include <lib/fdio/fd.h>
-# include <lib/fdio/io.h>
-# include <lib/fdio/spawn.h>
-# include <lib/zx/channel.h>
-# include <lib/zx/port.h>
-# include <lib/zx/process.h>
-# include <lib/zx/socket.h>
-# include <zircon/processargs.h>
-# include <zircon/syscalls.h>
-# include <zircon/syscalls/policy.h>
-# include <zircon/syscalls/port.h>
-# endif // GTEST_OS_FUCHSIA
-
-#endif // GTEST_HAS_DEATH_TEST
-
-#include "gtest/gtest-message.h"
-#include "gtest/internal/gtest-string.h"
-#include "src/gtest-internal-inl.h"
-
-namespace testing {
-
-// Constants.
-
-// The default death test style.
-//
-// This is defined in internal/gtest-port.h as "fast", but can be overridden by
-// a definition in internal/custom/gtest-port.h. The recommended value, which is
-// used internally at Google, is "threadsafe".
-static const char kDefaultDeathTestStyle[] = GTEST_DEFAULT_DEATH_TEST_STYLE;
-
-GTEST_DEFINE_string_(
- death_test_style,
- internal::StringFromGTestEnv("death_test_style", kDefaultDeathTestStyle),
- "Indicates how to run a death test in a forked child process: "
- "\"threadsafe\" (child process re-executes the test binary "
- "from the beginning, running only the specific death test) or "
- "\"fast\" (child process runs the death test immediately "
- "after forking).");
-
-GTEST_DEFINE_bool_(
- death_test_use_fork,
- internal::BoolFromGTestEnv("death_test_use_fork", false),
- "Instructs to use fork()/_exit() instead of clone() in death tests. "
- "Ignored and always uses fork() on POSIX systems where clone() is not "
- "implemented. Useful when running under valgrind or similar tools if "
- "those do not support clone(). Valgrind 3.3.1 will just fail if "
- "it sees an unsupported combination of clone() flags. "
- "It is not recommended to use this flag w/o valgrind though it will "
- "work in 99% of the cases. Once valgrind is fixed, this flag will "
- "most likely be removed.");
-
-namespace internal {
-GTEST_DEFINE_string_(
- internal_run_death_test, "",
- "Indicates the file, line number, temporal index of "
- "the single death test to run, and a file descriptor to "
- "which a success code may be sent, all separated by "
- "the '|' characters. This flag is specified if and only if the "
- "current process is a sub-process launched for running a thread-safe "
- "death test. FOR INTERNAL USE ONLY.");
-} // namespace internal
-
-#if GTEST_HAS_DEATH_TEST
-
-namespace internal {
-
-// Valid only for fast death tests. Indicates the code is running in the
-// child process of a fast style death test.
-# if !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
-static bool g_in_fast_death_test_child = false;
-# endif
-
-// Returns a Boolean value indicating whether the caller is currently
-// executing in the context of the death test child process. Tools such as
-// Valgrind heap checkers may need this to modify their behavior in death
-// tests. IMPORTANT: This is an internal utility. Using it may break the
-// implementation of death tests. User code MUST NOT use it.
-bool InDeathTestChild() {
-# if GTEST_OS_WINDOWS || GTEST_OS_FUCHSIA
-
- // On Windows and Fuchsia, death tests are thread-safe regardless of the value
- // of the death_test_style flag.
- return !GTEST_FLAG(internal_run_death_test).empty();
-
-# else
-
- if (GTEST_FLAG(death_test_style) == "threadsafe")
- return !GTEST_FLAG(internal_run_death_test).empty();
- else
- return g_in_fast_death_test_child;
-#endif
-}
-
-} // namespace internal
-
-// ExitedWithCode constructor.
-ExitedWithCode::ExitedWithCode(int exit_code) : exit_code_(exit_code) {
-}
-
-// ExitedWithCode function-call operator.
-bool ExitedWithCode::operator()(int exit_status) const {
-# if GTEST_OS_WINDOWS || GTEST_OS_FUCHSIA
-
- return exit_status == exit_code_;
-
-# else
-
- return WIFEXITED(exit_status) && WEXITSTATUS(exit_status) == exit_code_;
-
-# endif // GTEST_OS_WINDOWS || GTEST_OS_FUCHSIA
-}
-
-# if !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
-// KilledBySignal constructor.
-KilledBySignal::KilledBySignal(int signum) : signum_(signum) {
-}
-
-// KilledBySignal function-call operator.
-bool KilledBySignal::operator()(int exit_status) const {
-# if defined(GTEST_KILLED_BY_SIGNAL_OVERRIDE_)
- {
- bool result;
- if (GTEST_KILLED_BY_SIGNAL_OVERRIDE_(signum_, exit_status, &result)) {
- return result;
- }
- }
-# endif // defined(GTEST_KILLED_BY_SIGNAL_OVERRIDE_)
- return WIFSIGNALED(exit_status) && WTERMSIG(exit_status) == signum_;
-}
-# endif // !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
-
-namespace internal {
-
-// Utilities needed for death tests.
-
-// Generates a textual description of a given exit code, in the format
-// specified by wait(2).
-static std::string ExitSummary(int exit_code) {
- Message m;
-
-# if GTEST_OS_WINDOWS || GTEST_OS_FUCHSIA
-
- m << "Exited with exit status " << exit_code;
-
-# else
-
- if (WIFEXITED(exit_code)) {
- m << "Exited with exit status " << WEXITSTATUS(exit_code);
- } else if (WIFSIGNALED(exit_code)) {
- m << "Terminated by signal " << WTERMSIG(exit_code);
- }
-# ifdef WCOREDUMP
- if (WCOREDUMP(exit_code)) {
- m << " (core dumped)";
- }
-# endif
-# endif // GTEST_OS_WINDOWS || GTEST_OS_FUCHSIA
-
- return m.GetString();
-}
-
-// Returns true if exit_status describes a process that was terminated
-// by a signal, or exited normally with a nonzero exit code.
-bool ExitedUnsuccessfully(int exit_status) {
- return !ExitedWithCode(0)(exit_status);
-}
-
-# if !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
-// Generates a textual failure message when a death test finds more than
-// one thread running, or cannot determine the number of threads, prior
-// to executing the given statement. It is the responsibility of the
-// caller not to pass a thread_count of 1.
-static std::string DeathTestThreadWarning(size_t thread_count) {
- Message msg;
- msg << "Death tests use fork(), which is unsafe particularly"
- << " in a threaded context. For this test, " << GTEST_NAME_ << " ";
- if (thread_count == 0) {
- msg << "couldn't detect the number of threads.";
- } else {
- msg << "detected " << thread_count << " threads.";
- }
- msg << " See "
- "https://github.com/google/googletest/blob/master/googletest/docs/"
- "advanced.md#death-tests-and-threads"
- << " for more explanation and suggested solutions, especially if"
- << " this is the last message you see before your test times out.";
- return msg.GetString();
-}
-# endif // !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
-
-// Flag characters for reporting a death test that did not die.
-static const char kDeathTestLived = 'L';
-static const char kDeathTestReturned = 'R';
-static const char kDeathTestThrew = 'T';
-static const char kDeathTestInternalError = 'I';
-
-#if GTEST_OS_FUCHSIA
-
-// File descriptor used for the pipe in the child process.
-static const int kFuchsiaReadPipeFd = 3;
-
-#endif
-
-// An enumeration describing all of the possible ways that a death test can
-// conclude. DIED means that the process died while executing the test
-// code; LIVED means that process lived beyond the end of the test code;
-// RETURNED means that the test statement attempted to execute a return
-// statement, which is not allowed; THREW means that the test statement
-// returned control by throwing an exception. IN_PROGRESS means the test
-// has not yet concluded.
-enum DeathTestOutcome { IN_PROGRESS, DIED, LIVED, RETURNED, THREW };
-
-// Routine for aborting the program which is safe to call from an
-// exec-style death test child process, in which case the error
-// message is propagated back to the parent process. Otherwise, the
-// message is simply printed to stderr. In either case, the program
-// then exits with status 1.
-static void DeathTestAbort(const std::string& message) {
- // On a POSIX system, this function may be called from a threadsafe-style
- // death test child process, which operates on a very small stack. Use
- // the heap for any additional non-minuscule memory requirements.
- const InternalRunDeathTestFlag* const flag =
- GetUnitTestImpl()->internal_run_death_test_flag();
- if (flag != nullptr) {
- FILE* parent = posix::FDOpen(flag->write_fd(), "w");
- fputc(kDeathTestInternalError, parent);
- fprintf(parent, "%s", message.c_str());
- fflush(parent);
- _exit(1);
- } else {
- fprintf(stderr, "%s", message.c_str());
- fflush(stderr);
- posix::Abort();
- }
-}
-
-// A replacement for CHECK that calls DeathTestAbort if the assertion
-// fails.
-# define GTEST_DEATH_TEST_CHECK_(expression) \
- do { \
- if (!::testing::internal::IsTrue(expression)) { \
- DeathTestAbort( \
- ::std::string("CHECK failed: File ") + __FILE__ + ", line " \
- + ::testing::internal::StreamableToString(__LINE__) + ": " \
- + #expression); \
- } \
- } while (::testing::internal::AlwaysFalse())
-
-// This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for
-// evaluating any system call that fulfills two conditions: it must return
-// -1 on failure, and set errno to EINTR when it is interrupted and
-// should be tried again. The macro expands to a loop that repeatedly
-// evaluates the expression as long as it evaluates to -1 and sets
-// errno to EINTR. If the expression evaluates to -1 but errno is
-// something other than EINTR, DeathTestAbort is called.
-# define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \
- do { \
- int gtest_retval; \
- do { \
- gtest_retval = (expression); \
- } while (gtest_retval == -1 && errno == EINTR); \
- if (gtest_retval == -1) { \
- DeathTestAbort( \
- ::std::string("CHECK failed: File ") + __FILE__ + ", line " \
- + ::testing::internal::StreamableToString(__LINE__) + ": " \
- + #expression + " != -1"); \
- } \
- } while (::testing::internal::AlwaysFalse())
-
-// Returns the message describing the last system error in errno.
-std::string GetLastErrnoDescription() {
- return errno == 0 ? "" : posix::StrError(errno);
-}
-
-// This is called from a death test parent process to read a failure
-// message from the death test child process and log it with the FATAL
-// severity. On Windows, the message is read from a pipe handle. On other
-// platforms, it is read from a file descriptor.
-static void FailFromInternalError(int fd) {
- Message error;
- char buffer[256];
- int num_read;
-
- do {
- while ((num_read = posix::Read(fd, buffer, 255)) > 0) {
- buffer[num_read] = '\0';
- error << buffer;
- }
- } while (num_read == -1 && errno == EINTR);
-
- if (num_read == 0) {
- GTEST_LOG_(FATAL) << error.GetString();
- } else {
- const int last_error = errno;
- GTEST_LOG_(FATAL) << "Error while reading death test internal: "
- << GetLastErrnoDescription() << " [" << last_error << "]";
- }
-}
-
-// Death test constructor. Increments the running death test count
-// for the current test.
-DeathTest::DeathTest() {
- TestInfo* const info = GetUnitTestImpl()->current_test_info();
- if (info == nullptr) {
- DeathTestAbort("Cannot run a death test outside of a TEST or "
- "TEST_F construct");
- }
-}
-
-// Creates and returns a death test by dispatching to the current
-// death test factory.
-bool DeathTest::Create(const char* statement,
- Matcher<const std::string&> matcher, const char* file,
- int line, DeathTest** test) {
- return GetUnitTestImpl()->death_test_factory()->Create(
- statement, std::move(matcher), file, line, test);
-}
-
-const char* DeathTest::LastMessage() {
- return last_death_test_message_.c_str();
-}
-
-void DeathTest::set_last_death_test_message(const std::string& message) {
- last_death_test_message_ = message;
-}
-
-std::string DeathTest::last_death_test_message_;
-
-// Provides cross platform implementation for some death functionality.
-class DeathTestImpl : public DeathTest {
- protected:
- DeathTestImpl(const char* a_statement, Matcher<const std::string&> matcher)
- : statement_(a_statement),
- matcher_(std::move(matcher)),
- spawned_(false),
- status_(-1),
- outcome_(IN_PROGRESS),
- read_fd_(-1),
- write_fd_(-1) {}
-
- // read_fd_ is expected to be closed and cleared by a derived class.
- ~DeathTestImpl() override { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); }
-
- void Abort(AbortReason reason) override;
- bool Passed(bool status_ok) override;
-
- const char* statement() const { return statement_; }
- bool spawned() const { return spawned_; }
- void set_spawned(bool is_spawned) { spawned_ = is_spawned; }
- int status() const { return status_; }
- void set_status(int a_status) { status_ = a_status; }
- DeathTestOutcome outcome() const { return outcome_; }
- void set_outcome(DeathTestOutcome an_outcome) { outcome_ = an_outcome; }
- int read_fd() const { return read_fd_; }
- void set_read_fd(int fd) { read_fd_ = fd; }
- int write_fd() const { return write_fd_; }
- void set_write_fd(int fd) { write_fd_ = fd; }
-
- // Called in the parent process only. Reads the result code of the death
- // test child process via a pipe, interprets it to set the outcome_
- // member, and closes read_fd_. Outputs diagnostics and terminates in
- // case of unexpected codes.
- void ReadAndInterpretStatusByte();
-
- // Returns stderr output from the child process.
- virtual std::string GetErrorLogs();
-
- private:
- // The textual content of the code this object is testing. This class
- // doesn't own this string and should not attempt to delete it.
- const char* const statement_;
- // A matcher that's expected to match the stderr output by the child process.
- Matcher<const std::string&> matcher_;
- // True if the death test child process has been successfully spawned.
- bool spawned_;
- // The exit status of the child process.
- int status_;
- // How the death test concluded.
- DeathTestOutcome outcome_;
- // Descriptor to the read end of the pipe to the child process. It is
- // always -1 in the child process. The child keeps its write end of the
- // pipe in write_fd_.
- int read_fd_;
- // Descriptor to the child's write end of the pipe to the parent process.
- // It is always -1 in the parent process. The parent keeps its end of the
- // pipe in read_fd_.
- int write_fd_;
-};
-
-// Called in the parent process only. Reads the result code of the death
-// test child process via a pipe, interprets it to set the outcome_
-// member, and closes read_fd_. Outputs diagnostics and terminates in
-// case of unexpected codes.
-void DeathTestImpl::ReadAndInterpretStatusByte() {
- char flag;
- int bytes_read;
-
- // The read() here blocks until data is available (signifying the
- // failure of the death test) or until the pipe is closed (signifying
- // its success), so it's okay to call this in the parent before
- // the child process has exited.
- do {
- bytes_read = posix::Read(read_fd(), &flag, 1);
- } while (bytes_read == -1 && errno == EINTR);
-
- if (bytes_read == 0) {
- set_outcome(DIED);
- } else if (bytes_read == 1) {
- switch (flag) {
- case kDeathTestReturned:
- set_outcome(RETURNED);
- break;
- case kDeathTestThrew:
- set_outcome(THREW);
- break;
- case kDeathTestLived:
- set_outcome(LIVED);
- break;
- case kDeathTestInternalError:
- FailFromInternalError(read_fd()); // Does not return.
- break;
- default:
- GTEST_LOG_(FATAL) << "Death test child process reported "
- << "unexpected status byte ("
- << static_cast<unsigned int>(flag) << ")";
- }
- } else {
- GTEST_LOG_(FATAL) << "Read from death test child process failed: "
- << GetLastErrnoDescription();
- }
- GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Close(read_fd()));
- set_read_fd(-1);
-}
-
-std::string DeathTestImpl::GetErrorLogs() {
- return GetCapturedStderr();
-}
-
-// Signals that the death test code which should have exited, didn't.
-// Should be called only in a death test child process.
-// Writes a status byte to the child's status file descriptor, then
-// calls _exit(1).
-void DeathTestImpl::Abort(AbortReason reason) {
- // The parent process considers the death test to be a failure if
- // it finds any data in our pipe. So, here we write a single flag byte
- // to the pipe, then exit.
- const char status_ch =
- reason == TEST_DID_NOT_DIE ? kDeathTestLived :
- reason == TEST_THREW_EXCEPTION ? kDeathTestThrew : kDeathTestReturned;
-
- GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Write(write_fd(), &status_ch, 1));
- // We are leaking the descriptor here because on some platforms (i.e.,
- // when built as Windows DLL), destructors of global objects will still
- // run after calling _exit(). On such systems, write_fd_ will be
- // indirectly closed from the destructor of UnitTestImpl, causing double
- // close if it is also closed here. On debug configurations, double close
- // may assert. As there are no in-process buffers to flush here, we are
- // relying on the OS to close the descriptor after the process terminates
- // when the destructors are not run.
- _exit(1); // Exits w/o any normal exit hooks (we were supposed to crash)
-}
-
-// Returns an indented copy of stderr output for a death test.
-// This makes distinguishing death test output lines from regular log lines
-// much easier.
-static ::std::string FormatDeathTestOutput(const ::std::string& output) {
- ::std::string ret;
- for (size_t at = 0; ; ) {
- const size_t line_end = output.find('\n', at);
- ret += "[ DEATH ] ";
- if (line_end == ::std::string::npos) {
- ret += output.substr(at);
- break;
- }
- ret += output.substr(at, line_end + 1 - at);
- at = line_end + 1;
- }
- return ret;
-}
-
-// Assesses the success or failure of a death test, using both private
-// members which have previously been set, and one argument:
-//
-// Private data members:
-// outcome: An enumeration describing how the death test
-// concluded: DIED, LIVED, THREW, or RETURNED. The death test
-// fails in the latter three cases.
-// status: The exit status of the child process. On *nix, it is in the
-// in the format specified by wait(2). On Windows, this is the
-// value supplied to the ExitProcess() API or a numeric code
-// of the exception that terminated the program.
-// matcher_: A matcher that's expected to match the stderr output by the child
-// process.
-//
-// Argument:
-// status_ok: true if exit_status is acceptable in the context of
-// this particular death test, which fails if it is false
-//
-// Returns true if and only if all of the above conditions are met. Otherwise,
-// the first failing condition, in the order given above, is the one that is
-// reported. Also sets the last death test message string.
-bool DeathTestImpl::Passed(bool status_ok) {
- if (!spawned())
- return false;
-
- const std::string error_message = GetErrorLogs();
-
- bool success = false;
- Message buffer;
-
- buffer << "Death test: " << statement() << "\n";
- switch (outcome()) {
- case LIVED:
- buffer << " Result: failed to die.\n"
- << " Error msg:\n" << FormatDeathTestOutput(error_message);
- break;
- case THREW:
- buffer << " Result: threw an exception.\n"
- << " Error msg:\n" << FormatDeathTestOutput(error_message);
- break;
- case RETURNED:
- buffer << " Result: illegal return in test statement.\n"
- << " Error msg:\n" << FormatDeathTestOutput(error_message);
- break;
- case DIED:
- if (status_ok) {
- if (matcher_.Matches(error_message)) {
- success = true;
- } else {
- std::ostringstream stream;
- matcher_.DescribeTo(&stream);
- buffer << " Result: died but not with expected error.\n"
- << " Expected: " << stream.str() << "\n"
- << "Actual msg:\n"
- << FormatDeathTestOutput(error_message);
- }
- } else {
- buffer << " Result: died but not with expected exit code:\n"
- << " " << ExitSummary(status()) << "\n"
- << "Actual msg:\n" << FormatDeathTestOutput(error_message);
- }
- break;
- case IN_PROGRESS:
- default:
- GTEST_LOG_(FATAL)
- << "DeathTest::Passed somehow called before conclusion of test";
- }
-
- DeathTest::set_last_death_test_message(buffer.GetString());
- return success;
-}
-
-# if GTEST_OS_WINDOWS
-// WindowsDeathTest implements death tests on Windows. Due to the
-// specifics of starting new processes on Windows, death tests there are
-// always threadsafe, and Google Test considers the
-// --gtest_death_test_style=fast setting to be equivalent to
-// --gtest_death_test_style=threadsafe there.
-//
-// A few implementation notes: Like the Linux version, the Windows
-// implementation uses pipes for child-to-parent communication. But due to
-// the specifics of pipes on Windows, some extra steps are required:
-//
-// 1. The parent creates a communication pipe and stores handles to both
-// ends of it.
-// 2. The parent starts the child and provides it with the information
-// necessary to acquire the handle to the write end of the pipe.
-// 3. The child acquires the write end of the pipe and signals the parent
-// using a Windows event.
-// 4. Now the parent can release the write end of the pipe on its side. If
-// this is done before step 3, the object's reference count goes down to
-// 0 and it is destroyed, preventing the child from acquiring it. The
-// parent now has to release it, or read operations on the read end of
-// the pipe will not return when the child terminates.
-// 5. The parent reads child's output through the pipe (outcome code and
-// any possible error messages) from the pipe, and its stderr and then
-// determines whether to fail the test.
-//
-// Note: to distinguish Win32 API calls from the local method and function
-// calls, the former are explicitly resolved in the global namespace.
-//
-class WindowsDeathTest : public DeathTestImpl {
- public:
- WindowsDeathTest(const char* a_statement, Matcher<const std::string&> matcher,
- const char* file, int line)
- : DeathTestImpl(a_statement, std::move(matcher)),
- file_(file),
- line_(line) {}
-
- // All of these virtual functions are inherited from DeathTest.
- virtual int Wait();
- virtual TestRole AssumeRole();
-
- private:
- // The name of the file in which the death test is located.
- const char* const file_;
- // The line number on which the death test is located.
- const int line_;
- // Handle to the write end of the pipe to the child process.
- AutoHandle write_handle_;
- // Child process handle.
- AutoHandle child_handle_;
- // Event the child process uses to signal the parent that it has
- // acquired the handle to the write end of the pipe. After seeing this
- // event the parent can release its own handles to make sure its
- // ReadFile() calls return when the child terminates.
- AutoHandle event_handle_;
-};
-
-// Waits for the child in a death test to exit, returning its exit
-// status, or 0 if no child process exists. As a side effect, sets the
-// outcome data member.
-int WindowsDeathTest::Wait() {
- if (!spawned())
- return 0;
-
- // Wait until the child either signals that it has acquired the write end
- // of the pipe or it dies.
- const HANDLE wait_handles[2] = { child_handle_.Get(), event_handle_.Get() };
- switch (::WaitForMultipleObjects(2,
- wait_handles,
- FALSE, // Waits for any of the handles.
- INFINITE)) {
- case WAIT_OBJECT_0:
- case WAIT_OBJECT_0 + 1:
- break;
- default:
- GTEST_DEATH_TEST_CHECK_(false); // Should not get here.
- }
-
- // The child has acquired the write end of the pipe or exited.
- // We release the handle on our side and continue.
- write_handle_.Reset();
- event_handle_.Reset();
-
- ReadAndInterpretStatusByte();
-
- // Waits for the child process to exit if it haven't already. This
- // returns immediately if the child has already exited, regardless of
- // whether previous calls to WaitForMultipleObjects synchronized on this
- // handle or not.
- GTEST_DEATH_TEST_CHECK_(
- WAIT_OBJECT_0 == ::WaitForSingleObject(child_handle_.Get(),
- INFINITE));
- DWORD status_code;
- GTEST_DEATH_TEST_CHECK_(
- ::GetExitCodeProcess(child_handle_.Get(), &status_code) != FALSE);
- child_handle_.Reset();
- set_status(static_cast<int>(status_code));
- return status();
-}
-
-// The AssumeRole process for a Windows death test. It creates a child
-// process with the same executable as the current process to run the
-// death test. The child process is given the --gtest_filter and
-// --gtest_internal_run_death_test flags such that it knows to run the
-// current death test only.
-DeathTest::TestRole WindowsDeathTest::AssumeRole() {
- const UnitTestImpl* const impl = GetUnitTestImpl();
- const InternalRunDeathTestFlag* const flag =
- impl->internal_run_death_test_flag();
- const TestInfo* const info = impl->current_test_info();
- const int death_test_index = info->result()->death_test_count();
-
- if (flag != nullptr) {
- // ParseInternalRunDeathTestFlag() has performed all the necessary
- // processing.
- set_write_fd(flag->write_fd());
- return EXECUTE_TEST;
- }
-
- // WindowsDeathTest uses an anonymous pipe to communicate results of
- // a death test.
- SECURITY_ATTRIBUTES handles_are_inheritable = {sizeof(SECURITY_ATTRIBUTES),
- nullptr, TRUE};
- HANDLE read_handle, write_handle;
- GTEST_DEATH_TEST_CHECK_(
- ::CreatePipe(&read_handle, &write_handle, &handles_are_inheritable,
- 0) // Default buffer size.
- != FALSE);
- set_read_fd(::_open_osfhandle(reinterpret_cast<intptr_t>(read_handle),
- O_RDONLY));
- write_handle_.Reset(write_handle);
- event_handle_.Reset(::CreateEvent(
- &handles_are_inheritable,
- TRUE, // The event will automatically reset to non-signaled state.
- FALSE, // The initial state is non-signalled.
- nullptr)); // The even is unnamed.
- GTEST_DEATH_TEST_CHECK_(event_handle_.Get() != nullptr);
- const std::string filter_flag = std::string("--") + GTEST_FLAG_PREFIX_ +
- kFilterFlag + "=" + info->test_suite_name() +
- "." + info->name();
- const std::string internal_flag =
- std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag +
- "=" + file_ + "|" + StreamableToString(line_) + "|" +
- StreamableToString(death_test_index) + "|" +
- StreamableToString(static_cast<unsigned int>(::GetCurrentProcessId())) +
- // size_t has the same width as pointers on both 32-bit and 64-bit
- // Windows platforms.
- // See http://msdn.microsoft.com/en-us/library/tcxf1dw6.aspx.
- "|" + StreamableToString(reinterpret_cast<size_t>(write_handle)) +
- "|" + StreamableToString(reinterpret_cast<size_t>(event_handle_.Get()));
-
- char executable_path[_MAX_PATH + 1]; // NOLINT
- GTEST_DEATH_TEST_CHECK_(_MAX_PATH + 1 != ::GetModuleFileNameA(nullptr,
- executable_path,
- _MAX_PATH));
-
- std::string command_line =
- std::string(::GetCommandLineA()) + " " + filter_flag + " \"" +
- internal_flag + "\"";
-
- DeathTest::set_last_death_test_message("");
-
- CaptureStderr();
- // Flush the log buffers since the log streams are shared with the child.
- FlushInfoLog();
-
- // The child process will share the standard handles with the parent.
- STARTUPINFOA startup_info;
- memset(&startup_info, 0, sizeof(STARTUPINFO));
- startup_info.dwFlags = STARTF_USESTDHANDLES;
- startup_info.hStdInput = ::GetStdHandle(STD_INPUT_HANDLE);
- startup_info.hStdOutput = ::GetStdHandle(STD_OUTPUT_HANDLE);
- startup_info.hStdError = ::GetStdHandle(STD_ERROR_HANDLE);
-
- PROCESS_INFORMATION process_info;
- GTEST_DEATH_TEST_CHECK_(
- ::CreateProcessA(
- executable_path, const_cast<char*>(command_line.c_str()),
- nullptr, // Retuned process handle is not inheritable.
- nullptr, // Retuned thread handle is not inheritable.
- TRUE, // Child inherits all inheritable handles (for write_handle_).
- 0x0, // Default creation flags.
- nullptr, // Inherit the parent's environment.
- UnitTest::GetInstance()->original_working_dir(), &startup_info,
- &process_info) != FALSE);
- child_handle_.Reset(process_info.hProcess);
- ::CloseHandle(process_info.hThread);
- set_spawned(true);
- return OVERSEE_TEST;
-}
-
-# elif GTEST_OS_FUCHSIA
-
-class FuchsiaDeathTest : public DeathTestImpl {
- public:
- FuchsiaDeathTest(const char* a_statement, Matcher<const std::string&> matcher,
- const char* file, int line)
- : DeathTestImpl(a_statement, std::move(matcher)),
- file_(file),
- line_(line) {}
-
- // All of these virtual functions are inherited from DeathTest.
- int Wait() override;
- TestRole AssumeRole() override;
- std::string GetErrorLogs() override;
-
- private:
- // The name of the file in which the death test is located.
- const char* const file_;
- // The line number on which the death test is located.
- const int line_;
- // The stderr data captured by the child process.
- std::string captured_stderr_;
-
- zx::process child_process_;
- zx::channel exception_channel_;
- zx::socket stderr_socket_;
-};
-
-// Utility class for accumulating command-line arguments.
-class Arguments {
- public:
- Arguments() { args_.push_back(nullptr); }
-
- ~Arguments() {
- for (std::vector<char*>::iterator i = args_.begin(); i != args_.end();
- ++i) {
- free(*i);
- }
- }
- void AddArgument(const char* argument) {
- args_.insert(args_.end() - 1, posix::StrDup(argument));
- }
-
- template <typename Str>
- void AddArguments(const ::std::vector<Str>& arguments) {
- for (typename ::std::vector<Str>::const_iterator i = arguments.begin();
- i != arguments.end();
- ++i) {
- args_.insert(args_.end() - 1, posix::StrDup(i->c_str()));
- }
- }
- char* const* Argv() {
- return &args_[0];
- }
-
- int size() {
- return args_.size() - 1;
- }
-
- private:
- std::vector<char*> args_;
-};
-
-// Waits for the child in a death test to exit, returning its exit
-// status, or 0 if no child process exists. As a side effect, sets the
-// outcome data member.
-int FuchsiaDeathTest::Wait() {
- const int kProcessKey = 0;
- const int kSocketKey = 1;
- const int kExceptionKey = 2;
-
- if (!spawned())
- return 0;
-
- // Create a port to wait for socket/task/exception events.
- zx_status_t status_zx;
- zx::port port;
- status_zx = zx::port::create(0, &port);
- GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
-
- // Register to wait for the child process to terminate.
- status_zx = child_process_.wait_async(
- port, kProcessKey, ZX_PROCESS_TERMINATED, ZX_WAIT_ASYNC_ONCE);
- GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
-
- // Register to wait for the socket to be readable or closed.
- status_zx = stderr_socket_.wait_async(
- port, kSocketKey, ZX_SOCKET_READABLE | ZX_SOCKET_PEER_CLOSED,
- ZX_WAIT_ASYNC_ONCE);
- GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
-
- // Register to wait for an exception.
- status_zx = exception_channel_.wait_async(
- port, kExceptionKey, ZX_CHANNEL_READABLE, ZX_WAIT_ASYNC_ONCE);
- GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
-
- bool process_terminated = false;
- bool socket_closed = false;
- do {
- zx_port_packet_t packet = {};
- status_zx = port.wait(zx::time::infinite(), &packet);
- GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
-
- if (packet.key == kExceptionKey) {
- // Process encountered an exception. Kill it directly rather than
- // letting other handlers process the event. We will get a kProcessKey
- // event when the process actually terminates.
- status_zx = child_process_.kill();
- GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
- } else if (packet.key == kProcessKey) {
- // Process terminated.
- GTEST_DEATH_TEST_CHECK_(ZX_PKT_IS_SIGNAL_ONE(packet.type));
- GTEST_DEATH_TEST_CHECK_(packet.signal.observed & ZX_PROCESS_TERMINATED);
- process_terminated = true;
- } else if (packet.key == kSocketKey) {
- GTEST_DEATH_TEST_CHECK_(ZX_PKT_IS_SIGNAL_ONE(packet.type));
- if (packet.signal.observed & ZX_SOCKET_READABLE) {
- // Read data from the socket.
- constexpr size_t kBufferSize = 1024;
- do {
- size_t old_length = captured_stderr_.length();
- size_t bytes_read = 0;
- captured_stderr_.resize(old_length + kBufferSize);
- status_zx = stderr_socket_.read(
- 0, &captured_stderr_.front() + old_length, kBufferSize,
- &bytes_read);
- captured_stderr_.resize(old_length + bytes_read);
- } while (status_zx == ZX_OK);
- if (status_zx == ZX_ERR_PEER_CLOSED) {
- socket_closed = true;
- } else {
- GTEST_DEATH_TEST_CHECK_(status_zx == ZX_ERR_SHOULD_WAIT);
- status_zx = stderr_socket_.wait_async(
- port, kSocketKey, ZX_SOCKET_READABLE | ZX_SOCKET_PEER_CLOSED,
- ZX_WAIT_ASYNC_ONCE);
- GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
- }
- } else {
- GTEST_DEATH_TEST_CHECK_(packet.signal.observed & ZX_SOCKET_PEER_CLOSED);
- socket_closed = true;
- }
- }
- } while (!process_terminated && !socket_closed);
-
- ReadAndInterpretStatusByte();
-
- zx_info_process_t buffer;
- status_zx = child_process_.get_info(
- ZX_INFO_PROCESS, &buffer, sizeof(buffer), nullptr, nullptr);
- GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
-
- GTEST_DEATH_TEST_CHECK_(buffer.exited);
- set_status(buffer.return_code);
- return status();
-}
-
-// The AssumeRole process for a Fuchsia death test. It creates a child
-// process with the same executable as the current process to run the
-// death test. The child process is given the --gtest_filter and
-// --gtest_internal_run_death_test flags such that it knows to run the
-// current death test only.
-DeathTest::TestRole FuchsiaDeathTest::AssumeRole() {
- const UnitTestImpl* const impl = GetUnitTestImpl();
- const InternalRunDeathTestFlag* const flag =
- impl->internal_run_death_test_flag();
- const TestInfo* const info = impl->current_test_info();
- const int death_test_index = info->result()->death_test_count();
-
- if (flag != nullptr) {
- // ParseInternalRunDeathTestFlag() has performed all the necessary
- // processing.
- set_write_fd(kFuchsiaReadPipeFd);
- return EXECUTE_TEST;
- }
-
- // Flush the log buffers since the log streams are shared with the child.
- FlushInfoLog();
-
- // Build the child process command line.
- const std::string filter_flag = std::string("--") + GTEST_FLAG_PREFIX_ +
- kFilterFlag + "=" + info->test_suite_name() +
- "." + info->name();
- const std::string internal_flag =
- std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag + "="
- + file_ + "|"
- + StreamableToString(line_) + "|"
- + StreamableToString(death_test_index);
- Arguments args;
- args.AddArguments(GetInjectableArgvs());
- args.AddArgument(filter_flag.c_str());
- args.AddArgument(internal_flag.c_str());
-
- // Build the pipe for communication with the child.
- zx_status_t status;
- zx_handle_t child_pipe_handle;
- int child_pipe_fd;
- status = fdio_pipe_half(&child_pipe_fd, &child_pipe_handle);
- GTEST_DEATH_TEST_CHECK_(status == ZX_OK);
- set_read_fd(child_pipe_fd);
-
- // Set the pipe handle for the child.
- fdio_spawn_action_t spawn_actions[2] = {};
- fdio_spawn_action_t* add_handle_action = &spawn_actions[0];
- add_handle_action->action = FDIO_SPAWN_ACTION_ADD_HANDLE;
- add_handle_action->h.id = PA_HND(PA_FD, kFuchsiaReadPipeFd);
- add_handle_action->h.handle = child_pipe_handle;
-
- // Create a socket pair will be used to receive the child process' stderr.
- zx::socket stderr_producer_socket;
- status =
- zx::socket::create(0, &stderr_producer_socket, &stderr_socket_);
- GTEST_DEATH_TEST_CHECK_(status >= 0);
- int stderr_producer_fd = -1;
- status =
- fdio_fd_create(stderr_producer_socket.release(), &stderr_producer_fd);
- GTEST_DEATH_TEST_CHECK_(status >= 0);
-
- // Make the stderr socket nonblocking.
- GTEST_DEATH_TEST_CHECK_(fcntl(stderr_producer_fd, F_SETFL, 0) == 0);
-
- fdio_spawn_action_t* add_stderr_action = &spawn_actions[1];
- add_stderr_action->action = FDIO_SPAWN_ACTION_CLONE_FD;
- add_stderr_action->fd.local_fd = stderr_producer_fd;
- add_stderr_action->fd.target_fd = STDERR_FILENO;
-
- // Create a child job.
- zx_handle_t child_job = ZX_HANDLE_INVALID;
- status = zx_job_create(zx_job_default(), 0, & child_job);
- GTEST_DEATH_TEST_CHECK_(status == ZX_OK);
- zx_policy_basic_t policy;
- policy.condition = ZX_POL_NEW_ANY;
- policy.policy = ZX_POL_ACTION_ALLOW;
- status = zx_job_set_policy(
- child_job, ZX_JOB_POL_RELATIVE, ZX_JOB_POL_BASIC, &policy, 1);
- GTEST_DEATH_TEST_CHECK_(status == ZX_OK);
-
- // Create an exception channel attached to the |child_job|, to allow
- // us to suppress the system default exception handler from firing.
- status =
- zx_task_create_exception_channel(
- child_job, 0, exception_channel_.reset_and_get_address());
- GTEST_DEATH_TEST_CHECK_(status == ZX_OK);
-
- // Spawn the child process.
- status = fdio_spawn_etc(
- child_job, FDIO_SPAWN_CLONE_ALL, args.Argv()[0], args.Argv(), nullptr,
- 2, spawn_actions, child_process_.reset_and_get_address(), nullptr);
- GTEST_DEATH_TEST_CHECK_(status == ZX_OK);
-
- set_spawned(true);
- return OVERSEE_TEST;
-}
-
-std::string FuchsiaDeathTest::GetErrorLogs() {
- return captured_stderr_;
-}
-
-#else // We are neither on Windows, nor on Fuchsia.
-
-// ForkingDeathTest provides implementations for most of the abstract
-// methods of the DeathTest interface. Only the AssumeRole method is
-// left undefined.
-class ForkingDeathTest : public DeathTestImpl {
- public:
- ForkingDeathTest(const char* statement, Matcher<const std::string&> matcher);
-
- // All of these virtual functions are inherited from DeathTest.
- int Wait() override;
-
- protected:
- void set_child_pid(pid_t child_pid) { child_pid_ = child_pid; }
-
- private:
- // PID of child process during death test; 0 in the child process itself.
- pid_t child_pid_;
-};
-
-// Constructs a ForkingDeathTest.
-ForkingDeathTest::ForkingDeathTest(const char* a_statement,
- Matcher<const std::string&> matcher)
- : DeathTestImpl(a_statement, std::move(matcher)), child_pid_(-1) {}
-
-// Waits for the child in a death test to exit, returning its exit
-// status, or 0 if no child process exists. As a side effect, sets the
-// outcome data member.
-int ForkingDeathTest::Wait() {
- if (!spawned())
- return 0;
-
- ReadAndInterpretStatusByte();
-
- int status_value;
- GTEST_DEATH_TEST_CHECK_SYSCALL_(waitpid(child_pid_, &status_value, 0));
- set_status(status_value);
- return status_value;
-}
-
-// A concrete death test class that forks, then immediately runs the test
-// in the child process.
-class NoExecDeathTest : public ForkingDeathTest {
- public:
- NoExecDeathTest(const char* a_statement, Matcher<const std::string&> matcher)
- : ForkingDeathTest(a_statement, std::move(matcher)) {}
- TestRole AssumeRole() override;
-};
-
-// The AssumeRole process for a fork-and-run death test. It implements a
-// straightforward fork, with a simple pipe to transmit the status byte.
-DeathTest::TestRole NoExecDeathTest::AssumeRole() {
- const size_t thread_count = GetThreadCount();
- if (thread_count != 1) {
- GTEST_LOG_(WARNING) << DeathTestThreadWarning(thread_count);
- }
-
- int pipe_fd[2];
- GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1);
-
- DeathTest::set_last_death_test_message("");
- CaptureStderr();
- // When we fork the process below, the log file buffers are copied, but the
- // file descriptors are shared. We flush all log files here so that closing
- // the file descriptors in the child process doesn't throw off the
- // synchronization between descriptors and buffers in the parent process.
- // This is as close to the fork as possible to avoid a race condition in case
- // there are multiple threads running before the death test, and another
- // thread writes to the log file.
- FlushInfoLog();
-
- const pid_t child_pid = fork();
- GTEST_DEATH_TEST_CHECK_(child_pid != -1);
- set_child_pid(child_pid);
- if (child_pid == 0) {
- GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[0]));
- set_write_fd(pipe_fd[1]);
- // Redirects all logging to stderr in the child process to prevent
- // concurrent writes to the log files. We capture stderr in the parent
- // process and append the child process' output to a log.
- LogToStderr();
- // Event forwarding to the listeners of event listener API mush be shut
- // down in death test subprocesses.
- GetUnitTestImpl()->listeners()->SuppressEventForwarding();
- g_in_fast_death_test_child = true;
- return EXECUTE_TEST;
- } else {
- GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1]));
- set_read_fd(pipe_fd[0]);
- set_spawned(true);
- return OVERSEE_TEST;
- }
-}
-
-// A concrete death test class that forks and re-executes the main
-// program from the beginning, with command-line flags set that cause
-// only this specific death test to be run.
-class ExecDeathTest : public ForkingDeathTest {
- public:
- ExecDeathTest(const char* a_statement, Matcher<const std::string&> matcher,
- const char* file, int line)
- : ForkingDeathTest(a_statement, std::move(matcher)),
- file_(file),
- line_(line) {}
- TestRole AssumeRole() override;
-
- private:
- static ::std::vector<std::string> GetArgvsForDeathTestChildProcess() {
- ::std::vector<std::string> args = GetInjectableArgvs();
-# if defined(GTEST_EXTRA_DEATH_TEST_COMMAND_LINE_ARGS_)
- ::std::vector<std::string> extra_args =
- GTEST_EXTRA_DEATH_TEST_COMMAND_LINE_ARGS_();
- args.insert(args.end(), extra_args.begin(), extra_args.end());
-# endif // defined(GTEST_EXTRA_DEATH_TEST_COMMAND_LINE_ARGS_)
- return args;
- }
- // The name of the file in which the death test is located.
- const char* const file_;
- // The line number on which the death test is located.
- const int line_;
-};
-
-// Utility class for accumulating command-line arguments.
-class Arguments {
- public:
- Arguments() { args_.push_back(nullptr); }
-
- ~Arguments() {
- for (std::vector<char*>::iterator i = args_.begin(); i != args_.end();
- ++i) {
- free(*i);
- }
- }
- void AddArgument(const char* argument) {
- args_.insert(args_.end() - 1, posix::StrDup(argument));
- }
-
- template <typename Str>
- void AddArguments(const ::std::vector<Str>& arguments) {
- for (typename ::std::vector<Str>::const_iterator i = arguments.begin();
- i != arguments.end();
- ++i) {
- args_.insert(args_.end() - 1, posix::StrDup(i->c_str()));
- }
- }
- char* const* Argv() {
- return &args_[0];
- }
-
- private:
- std::vector<char*> args_;
-};
-
-// A struct that encompasses the arguments to the child process of a
-// threadsafe-style death test process.
-struct ExecDeathTestArgs {
- char* const* argv; // Command-line arguments for the child's call to exec
- int close_fd; // File descriptor to close; the read end of a pipe
-};
-
-# if GTEST_OS_MAC
-inline char** GetEnviron() {
- // When Google Test is built as a framework on MacOS X, the environ variable
- // is unavailable. Apple's documentation (man environ) recommends using
- // _NSGetEnviron() instead.
- return *_NSGetEnviron();
-}
-# else
-// Some POSIX platforms expect you to declare environ. extern "C" makes
-// it reside in the global namespace.
-extern "C" char** environ;
-inline char** GetEnviron() { return environ; }
-# endif // GTEST_OS_MAC
-
-# if !GTEST_OS_QNX
-// The main function for a threadsafe-style death test child process.
-// This function is called in a clone()-ed process and thus must avoid
-// any potentially unsafe operations like malloc or libc functions.
-static int ExecDeathTestChildMain(void* child_arg) {
- ExecDeathTestArgs* const args = static_cast<ExecDeathTestArgs*>(child_arg);
- GTEST_DEATH_TEST_CHECK_SYSCALL_(close(args->close_fd));
-
- // We need to execute the test program in the same environment where
- // it was originally invoked. Therefore we change to the original
- // working directory first.
- const char* const original_dir =
- UnitTest::GetInstance()->original_working_dir();
- // We can safely call chdir() as it's a direct system call.
- if (chdir(original_dir) != 0) {
- DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " +
- GetLastErrnoDescription());
- return EXIT_FAILURE;
- }
-
- // We can safely call execve() as it's a direct system call. We
- // cannot use execvp() as it's a libc function and thus potentially
- // unsafe. Since execve() doesn't search the PATH, the user must
- // invoke the test program via a valid path that contains at least
- // one path separator.
- execve(args->argv[0], args->argv, GetEnviron());
- DeathTestAbort(std::string("execve(") + args->argv[0] + ", ...) in " +
- original_dir + " failed: " +
- GetLastErrnoDescription());
- return EXIT_FAILURE;
-}
-# endif // !GTEST_OS_QNX
-
-# if GTEST_HAS_CLONE
-// Two utility routines that together determine the direction the stack
-// grows.
-// This could be accomplished more elegantly by a single recursive
-// function, but we want to guard against the unlikely possibility of
-// a smart compiler optimizing the recursion away.
-//
-// GTEST_NO_INLINE_ is required to prevent GCC 4.6 from inlining
-// StackLowerThanAddress into StackGrowsDown, which then doesn't give
-// correct answer.
-static void StackLowerThanAddress(const void* ptr,
- bool* result) GTEST_NO_INLINE_;
-// HWAddressSanitizer add a random tag to the MSB of the local variable address,
-// making comparison result unpredictable.
-GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
-static void StackLowerThanAddress(const void* ptr, bool* result) {
- int dummy;
- *result = (&dummy < ptr);
-}
-
-// Make sure AddressSanitizer does not tamper with the stack here.
-GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
-GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
-static bool StackGrowsDown() {
- int dummy;
- bool result;
- StackLowerThanAddress(&dummy, &result);
- return result;
-}
-# endif // GTEST_HAS_CLONE
-
-// Spawns a child process with the same executable as the current process in
-// a thread-safe manner and instructs it to run the death test. The
-// implementation uses fork(2) + exec. On systems where clone(2) is
-// available, it is used instead, being slightly more thread-safe. On QNX,
-// fork supports only single-threaded environments, so this function uses
-// spawn(2) there instead. The function dies with an error message if
-// anything goes wrong.
-static pid_t ExecDeathTestSpawnChild(char* const* argv, int close_fd) {
- ExecDeathTestArgs args = { argv, close_fd };
- pid_t child_pid = -1;
-
-# if GTEST_OS_QNX
- // Obtains the current directory and sets it to be closed in the child
- // process.
- const int cwd_fd = open(".", O_RDONLY);
- GTEST_DEATH_TEST_CHECK_(cwd_fd != -1);
- GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(cwd_fd, F_SETFD, FD_CLOEXEC));
- // We need to execute the test program in the same environment where
- // it was originally invoked. Therefore we change to the original
- // working directory first.
- const char* const original_dir =
- UnitTest::GetInstance()->original_working_dir();
- // We can safely call chdir() as it's a direct system call.
- if (chdir(original_dir) != 0) {
- DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " +
- GetLastErrnoDescription());
- return EXIT_FAILURE;
- }
-
- int fd_flags;
- // Set close_fd to be closed after spawn.
- GTEST_DEATH_TEST_CHECK_SYSCALL_(fd_flags = fcntl(close_fd, F_GETFD));
- GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(close_fd, F_SETFD,
- fd_flags | FD_CLOEXEC));
- struct inheritance inherit = {0};
- // spawn is a system call.
- child_pid =
- spawn(args.argv[0], 0, nullptr, &inherit, args.argv, GetEnviron());
- // Restores the current working directory.
- GTEST_DEATH_TEST_CHECK_(fchdir(cwd_fd) != -1);
- GTEST_DEATH_TEST_CHECK_SYSCALL_(close(cwd_fd));
-
-# else // GTEST_OS_QNX
-# if GTEST_OS_LINUX
- // When a SIGPROF signal is received while fork() or clone() are executing,
- // the process may hang. To avoid this, we ignore SIGPROF here and re-enable
- // it after the call to fork()/clone() is complete.
- struct sigaction saved_sigprof_action;
- struct sigaction ignore_sigprof_action;
- memset(&ignore_sigprof_action, 0, sizeof(ignore_sigprof_action));
- sigemptyset(&ignore_sigprof_action.sa_mask);
- ignore_sigprof_action.sa_handler = SIG_IGN;
- GTEST_DEATH_TEST_CHECK_SYSCALL_(sigaction(
- SIGPROF, &ignore_sigprof_action, &saved_sigprof_action));
-# endif // GTEST_OS_LINUX
-
-# if GTEST_HAS_CLONE
- const bool use_fork = GTEST_FLAG(death_test_use_fork);
-
- if (!use_fork) {
- static const bool stack_grows_down = StackGrowsDown();
- const auto stack_size = static_cast<size_t>(getpagesize());
- // MMAP_ANONYMOUS is not defined on Mac, so we use MAP_ANON instead.
- void* const stack = mmap(nullptr, stack_size, PROT_READ | PROT_WRITE,
- MAP_ANON | MAP_PRIVATE, -1, 0);
- GTEST_DEATH_TEST_CHECK_(stack != MAP_FAILED);
-
- // Maximum stack alignment in bytes: For a downward-growing stack, this
- // amount is subtracted from size of the stack space to get an address
- // that is within the stack space and is aligned on all systems we care
- // about. As far as I know there is no ABI with stack alignment greater
- // than 64. We assume stack and stack_size already have alignment of
- // kMaxStackAlignment.
- const size_t kMaxStackAlignment = 64;
- void* const stack_top =
- static_cast<char*>(stack) +
- (stack_grows_down ? stack_size - kMaxStackAlignment : 0);
- GTEST_DEATH_TEST_CHECK_(
- static_cast<size_t>(stack_size) > kMaxStackAlignment &&
- reinterpret_cast<uintptr_t>(stack_top) % kMaxStackAlignment == 0);
-
- child_pid = clone(&ExecDeathTestChildMain, stack_top, SIGCHLD, &args);
-
- GTEST_DEATH_TEST_CHECK_(munmap(stack, stack_size) != -1);
- }
-# else
- const bool use_fork = true;
-# endif // GTEST_HAS_CLONE
-
- if (use_fork && (child_pid = fork()) == 0) {
- ExecDeathTestChildMain(&args);
- _exit(0);
- }
-# endif // GTEST_OS_QNX
-# if GTEST_OS_LINUX
- GTEST_DEATH_TEST_CHECK_SYSCALL_(
- sigaction(SIGPROF, &saved_sigprof_action, nullptr));
-# endif // GTEST_OS_LINUX
-
- GTEST_DEATH_TEST_CHECK_(child_pid != -1);
- return child_pid;
-}
-
-// The AssumeRole process for a fork-and-exec death test. It re-executes the
-// main program from the beginning, setting the --gtest_filter
-// and --gtest_internal_run_death_test flags to cause only the current
-// death test to be re-run.
-DeathTest::TestRole ExecDeathTest::AssumeRole() {
- const UnitTestImpl* const impl = GetUnitTestImpl();
- const InternalRunDeathTestFlag* const flag =
- impl->internal_run_death_test_flag();
- const TestInfo* const info = impl->current_test_info();
- const int death_test_index = info->result()->death_test_count();
-
- if (flag != nullptr) {
- set_write_fd(flag->write_fd());
- return EXECUTE_TEST;
- }
-
- int pipe_fd[2];
- GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1);
- // Clear the close-on-exec flag on the write end of the pipe, lest
- // it be closed when the child process does an exec:
- GTEST_DEATH_TEST_CHECK_(fcntl(pipe_fd[1], F_SETFD, 0) != -1);
-
- const std::string filter_flag = std::string("--") + GTEST_FLAG_PREFIX_ +
- kFilterFlag + "=" + info->test_suite_name() +
- "." + info->name();
- const std::string internal_flag =
- std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag + "="
- + file_ + "|" + StreamableToString(line_) + "|"
- + StreamableToString(death_test_index) + "|"
- + StreamableToString(pipe_fd[1]);
- Arguments args;
- args.AddArguments(GetArgvsForDeathTestChildProcess());
- args.AddArgument(filter_flag.c_str());
- args.AddArgument(internal_flag.c_str());
-
- DeathTest::set_last_death_test_message("");
-
- CaptureStderr();
- // See the comment in NoExecDeathTest::AssumeRole for why the next line
- // is necessary.
- FlushInfoLog();
-
- const pid_t child_pid = ExecDeathTestSpawnChild(args.Argv(), pipe_fd[0]);
- GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1]));
- set_child_pid(child_pid);
- set_read_fd(pipe_fd[0]);
- set_spawned(true);
- return OVERSEE_TEST;
-}
-
-# endif // !GTEST_OS_WINDOWS
-
-// Creates a concrete DeathTest-derived class that depends on the
-// --gtest_death_test_style flag, and sets the pointer pointed to
-// by the "test" argument to its address. If the test should be
-// skipped, sets that pointer to NULL. Returns true, unless the
-// flag is set to an invalid value.
-bool DefaultDeathTestFactory::Create(const char* statement,
- Matcher<const std::string&> matcher,
- const char* file, int line,
- DeathTest** test) {
- UnitTestImpl* const impl = GetUnitTestImpl();
- const InternalRunDeathTestFlag* const flag =
- impl->internal_run_death_test_flag();
- const int death_test_index = impl->current_test_info()
- ->increment_death_test_count();
-
- if (flag != nullptr) {
- if (death_test_index > flag->index()) {
- DeathTest::set_last_death_test_message(
- "Death test count (" + StreamableToString(death_test_index)
- + ") somehow exceeded expected maximum ("
- + StreamableToString(flag->index()) + ")");
- return false;
- }
-
- if (!(flag->file() == file && flag->line() == line &&
- flag->index() == death_test_index)) {
- *test = nullptr;
- return true;
- }
- }
-
-# if GTEST_OS_WINDOWS
-
- if (GTEST_FLAG(death_test_style) == "threadsafe" ||
- GTEST_FLAG(death_test_style) == "fast") {
- *test = new WindowsDeathTest(statement, std::move(matcher), file, line);
- }
-
-# elif GTEST_OS_FUCHSIA
-
- if (GTEST_FLAG(death_test_style) == "threadsafe" ||
- GTEST_FLAG(death_test_style) == "fast") {
- *test = new FuchsiaDeathTest(statement, std::move(matcher), file, line);
- }
-
-# else
-
- if (GTEST_FLAG(death_test_style) == "threadsafe") {
- *test = new ExecDeathTest(statement, std::move(matcher), file, line);
- } else if (GTEST_FLAG(death_test_style) == "fast") {
- *test = new NoExecDeathTest(statement, std::move(matcher));
- }
-
-# endif // GTEST_OS_WINDOWS
-
- else { // NOLINT - this is more readable than unbalanced brackets inside #if.
- DeathTest::set_last_death_test_message(
- "Unknown death test style \"" + GTEST_FLAG(death_test_style)
- + "\" encountered");
- return false;
- }
-
- return true;
-}
-
-# if GTEST_OS_WINDOWS
-// Recreates the pipe and event handles from the provided parameters,
-// signals the event, and returns a file descriptor wrapped around the pipe
-// handle. This function is called in the child process only.
-static int GetStatusFileDescriptor(unsigned int parent_process_id,
- size_t write_handle_as_size_t,
- size_t event_handle_as_size_t) {
- AutoHandle parent_process_handle(::OpenProcess(PROCESS_DUP_HANDLE,
- FALSE, // Non-inheritable.
- parent_process_id));
- if (parent_process_handle.Get() == INVALID_HANDLE_VALUE) {
- DeathTestAbort("Unable to open parent process " +
- StreamableToString(parent_process_id));
- }
-
- GTEST_CHECK_(sizeof(HANDLE) <= sizeof(size_t));
-
- const HANDLE write_handle =
- reinterpret_cast<HANDLE>(write_handle_as_size_t);
- HANDLE dup_write_handle;
-
- // The newly initialized handle is accessible only in the parent
- // process. To obtain one accessible within the child, we need to use
- // DuplicateHandle.
- if (!::DuplicateHandle(parent_process_handle.Get(), write_handle,
- ::GetCurrentProcess(), &dup_write_handle,
- 0x0, // Requested privileges ignored since
- // DUPLICATE_SAME_ACCESS is used.
- FALSE, // Request non-inheritable handler.
- DUPLICATE_SAME_ACCESS)) {
- DeathTestAbort("Unable to duplicate the pipe handle " +
- StreamableToString(write_handle_as_size_t) +
- " from the parent process " +
- StreamableToString(parent_process_id));
- }
-
- const HANDLE event_handle = reinterpret_cast<HANDLE>(event_handle_as_size_t);
- HANDLE dup_event_handle;
-
- if (!::DuplicateHandle(parent_process_handle.Get(), event_handle,
- ::GetCurrentProcess(), &dup_event_handle,
- 0x0,
- FALSE,
- DUPLICATE_SAME_ACCESS)) {
- DeathTestAbort("Unable to duplicate the event handle " +
- StreamableToString(event_handle_as_size_t) +
- " from the parent process " +
- StreamableToString(parent_process_id));
- }
-
- const int write_fd =
- ::_open_osfhandle(reinterpret_cast<intptr_t>(dup_write_handle), O_APPEND);
- if (write_fd == -1) {
- DeathTestAbort("Unable to convert pipe handle " +
- StreamableToString(write_handle_as_size_t) +
- " to a file descriptor");
- }
-
- // Signals the parent that the write end of the pipe has been acquired
- // so the parent can release its own write end.
- ::SetEvent(dup_event_handle);
-
- return write_fd;
-}
-# endif // GTEST_OS_WINDOWS
-
-// Returns a newly created InternalRunDeathTestFlag object with fields
-// initialized from the GTEST_FLAG(internal_run_death_test) flag if
-// the flag is specified; otherwise returns NULL.
-InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag() {
- if (GTEST_FLAG(internal_run_death_test) == "") return nullptr;
-
- // GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we
- // can use it here.
- int line = -1;
- int index = -1;
- ::std::vector< ::std::string> fields;
- SplitString(GTEST_FLAG(internal_run_death_test).c_str(), '|', &fields);
- int write_fd = -1;
-
-# if GTEST_OS_WINDOWS
-
- unsigned int parent_process_id = 0;
- size_t write_handle_as_size_t = 0;
- size_t event_handle_as_size_t = 0;
-
- if (fields.size() != 6
- || !ParseNaturalNumber(fields[1], &line)
- || !ParseNaturalNumber(fields[2], &index)
- || !ParseNaturalNumber(fields[3], &parent_process_id)
- || !ParseNaturalNumber(fields[4], &write_handle_as_size_t)
- || !ParseNaturalNumber(fields[5], &event_handle_as_size_t)) {
- DeathTestAbort("Bad --gtest_internal_run_death_test flag: " +
- GTEST_FLAG(internal_run_death_test));
- }
- write_fd = GetStatusFileDescriptor(parent_process_id,
- write_handle_as_size_t,
- event_handle_as_size_t);
-
-# elif GTEST_OS_FUCHSIA
-
- if (fields.size() != 3
- || !ParseNaturalNumber(fields[1], &line)
- || !ParseNaturalNumber(fields[2], &index)) {
- DeathTestAbort("Bad --gtest_internal_run_death_test flag: "
- + GTEST_FLAG(internal_run_death_test));
- }
-
-# else
-
- if (fields.size() != 4
- || !ParseNaturalNumber(fields[1], &line)
- || !ParseNaturalNumber(fields[2], &index)
- || !ParseNaturalNumber(fields[3], &write_fd)) {
- DeathTestAbort("Bad --gtest_internal_run_death_test flag: "
- + GTEST_FLAG(internal_run_death_test));
- }
-
-# endif // GTEST_OS_WINDOWS
-
- return new InternalRunDeathTestFlag(fields[0], line, index, write_fd);
-}
-
-} // namespace internal
-
-#endif // GTEST_HAS_DEATH_TEST
-
-} // namespace testing
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-filepath.cc b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-filepath.cc
deleted file mode 100644
index bd7b99ff03e..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-filepath.cc
+++ /dev/null
@@ -1,379 +0,0 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#include "gtest/internal/gtest-filepath.h"
-
-#include <stdlib.h>
-#include "gtest/internal/gtest-port.h"
-#include "gtest/gtest-message.h"
-
-#if GTEST_OS_WINDOWS_MOBILE
-# include <windows.h>
-#elif GTEST_OS_WINDOWS
-# include <direct.h>
-# include <io.h>
-#else
-# include <limits.h>
-# include <climits> // Some Linux distributions define PATH_MAX here.
-#endif // GTEST_OS_WINDOWS_MOBILE
-
-#include "gtest/internal/gtest-string.h"
-
-#if GTEST_OS_WINDOWS
-# define GTEST_PATH_MAX_ _MAX_PATH
-#elif defined(PATH_MAX)
-# define GTEST_PATH_MAX_ PATH_MAX
-#elif defined(_XOPEN_PATH_MAX)
-# define GTEST_PATH_MAX_ _XOPEN_PATH_MAX
-#else
-# define GTEST_PATH_MAX_ _POSIX_PATH_MAX
-#endif // GTEST_OS_WINDOWS
-
-namespace testing {
-namespace internal {
-
-#if GTEST_OS_WINDOWS
-// On Windows, '\\' is the standard path separator, but many tools and the
-// Windows API also accept '/' as an alternate path separator. Unless otherwise
-// noted, a file path can contain either kind of path separators, or a mixture
-// of them.
-const char kPathSeparator = '\\';
-const char kAlternatePathSeparator = '/';
-const char kAlternatePathSeparatorString[] = "/";
-# if GTEST_OS_WINDOWS_MOBILE
-// Windows CE doesn't have a current directory. You should not use
-// the current directory in tests on Windows CE, but this at least
-// provides a reasonable fallback.
-const char kCurrentDirectoryString[] = "\\";
-// Windows CE doesn't define INVALID_FILE_ATTRIBUTES
-const DWORD kInvalidFileAttributes = 0xffffffff;
-# else
-const char kCurrentDirectoryString[] = ".\\";
-# endif // GTEST_OS_WINDOWS_MOBILE
-#else
-const char kPathSeparator = '/';
-const char kCurrentDirectoryString[] = "./";
-#endif // GTEST_OS_WINDOWS
-
-// Returns whether the given character is a valid path separator.
-static bool IsPathSeparator(char c) {
-#if GTEST_HAS_ALT_PATH_SEP_
- return (c == kPathSeparator) || (c == kAlternatePathSeparator);
-#else
- return c == kPathSeparator;
-#endif
-}
-
-// Returns the current working directory, or "" if unsuccessful.
-FilePath FilePath::GetCurrentDir() {
-#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE || \
- GTEST_OS_WINDOWS_RT || ARDUINO || defined(ESP_PLATFORM)
- // These platforms do not have a current directory, so we just return
- // something reasonable.
- return FilePath(kCurrentDirectoryString);
-#elif GTEST_OS_WINDOWS
- char cwd[GTEST_PATH_MAX_ + 1] = { '\0' };
- return FilePath(_getcwd(cwd, sizeof(cwd)) == nullptr ? "" : cwd);
-#else
- char cwd[GTEST_PATH_MAX_ + 1] = { '\0' };
- char* result = getcwd(cwd, sizeof(cwd));
-# if GTEST_OS_NACL
- // getcwd will likely fail in NaCl due to the sandbox, so return something
- // reasonable. The user may have provided a shim implementation for getcwd,
- // however, so fallback only when failure is detected.
- return FilePath(result == nullptr ? kCurrentDirectoryString : cwd);
-# endif // GTEST_OS_NACL
- return FilePath(result == nullptr ? "" : cwd);
-#endif // GTEST_OS_WINDOWS_MOBILE
-}
-
-// Returns a copy of the FilePath with the case-insensitive extension removed.
-// Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns
-// FilePath("dir/file"). If a case-insensitive extension is not
-// found, returns a copy of the original FilePath.
-FilePath FilePath::RemoveExtension(const char* extension) const {
- const std::string dot_extension = std::string(".") + extension;
- if (String::EndsWithCaseInsensitive(pathname_, dot_extension)) {
- return FilePath(pathname_.substr(
- 0, pathname_.length() - dot_extension.length()));
- }
- return *this;
-}
-
-// Returns a pointer to the last occurrence of a valid path separator in
-// the FilePath. On Windows, for example, both '/' and '\' are valid path
-// separators. Returns NULL if no path separator was found.
-const char* FilePath::FindLastPathSeparator() const {
- const char* const last_sep = strrchr(c_str(), kPathSeparator);
-#if GTEST_HAS_ALT_PATH_SEP_
- const char* const last_alt_sep = strrchr(c_str(), kAlternatePathSeparator);
- // Comparing two pointers of which only one is NULL is undefined.
- if (last_alt_sep != nullptr &&
- (last_sep == nullptr || last_alt_sep > last_sep)) {
- return last_alt_sep;
- }
-#endif
- return last_sep;
-}
-
-// Returns a copy of the FilePath with the directory part removed.
-// Example: FilePath("path/to/file").RemoveDirectoryName() returns
-// FilePath("file"). If there is no directory part ("just_a_file"), it returns
-// the FilePath unmodified. If there is no file part ("just_a_dir/") it
-// returns an empty FilePath ("").
-// On Windows platform, '\' is the path separator, otherwise it is '/'.
-FilePath FilePath::RemoveDirectoryName() const {
- const char* const last_sep = FindLastPathSeparator();
- return last_sep ? FilePath(last_sep + 1) : *this;
-}
-
-// RemoveFileName returns the directory path with the filename removed.
-// Example: FilePath("path/to/file").RemoveFileName() returns "path/to/".
-// If the FilePath is "a_file" or "/a_file", RemoveFileName returns
-// FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does
-// not have a file, like "just/a/dir/", it returns the FilePath unmodified.
-// On Windows platform, '\' is the path separator, otherwise it is '/'.
-FilePath FilePath::RemoveFileName() const {
- const char* const last_sep = FindLastPathSeparator();
- std::string dir;
- if (last_sep) {
- dir = std::string(c_str(), static_cast<size_t>(last_sep + 1 - c_str()));
- } else {
- dir = kCurrentDirectoryString;
- }
- return FilePath(dir);
-}
-
-// Helper functions for naming files in a directory for xml output.
-
-// Given directory = "dir", base_name = "test", number = 0,
-// extension = "xml", returns "dir/test.xml". If number is greater
-// than zero (e.g., 12), returns "dir/test_12.xml".
-// On Windows platform, uses \ as the separator rather than /.
-FilePath FilePath::MakeFileName(const FilePath& directory,
- const FilePath& base_name,
- int number,
- const char* extension) {
- std::string file;
- if (number == 0) {
- file = base_name.string() + "." + extension;
- } else {
- file = base_name.string() + "_" + StreamableToString(number)
- + "." + extension;
- }
- return ConcatPaths(directory, FilePath(file));
-}
-
-// Given directory = "dir", relative_path = "test.xml", returns "dir/test.xml".
-// On Windows, uses \ as the separator rather than /.
-FilePath FilePath::ConcatPaths(const FilePath& directory,
- const FilePath& relative_path) {
- if (directory.IsEmpty())
- return relative_path;
- const FilePath dir(directory.RemoveTrailingPathSeparator());
- return FilePath(dir.string() + kPathSeparator + relative_path.string());
-}
-
-// Returns true if pathname describes something findable in the file-system,
-// either a file, directory, or whatever.
-bool FilePath::FileOrDirectoryExists() const {
-#if GTEST_OS_WINDOWS_MOBILE
- LPCWSTR unicode = String::AnsiToUtf16(pathname_.c_str());
- const DWORD attributes = GetFileAttributes(unicode);
- delete [] unicode;
- return attributes != kInvalidFileAttributes;
-#else
- posix::StatStruct file_stat;
- return posix::Stat(pathname_.c_str(), &file_stat) == 0;
-#endif // GTEST_OS_WINDOWS_MOBILE
-}
-
-// Returns true if pathname describes a directory in the file-system
-// that exists.
-bool FilePath::DirectoryExists() const {
- bool result = false;
-#if GTEST_OS_WINDOWS
- // Don't strip off trailing separator if path is a root directory on
- // Windows (like "C:\\").
- const FilePath& path(IsRootDirectory() ? *this :
- RemoveTrailingPathSeparator());
-#else
- const FilePath& path(*this);
-#endif
-
-#if GTEST_OS_WINDOWS_MOBILE
- LPCWSTR unicode = String::AnsiToUtf16(path.c_str());
- const DWORD attributes = GetFileAttributes(unicode);
- delete [] unicode;
- if ((attributes != kInvalidFileAttributes) &&
- (attributes & FILE_ATTRIBUTE_DIRECTORY)) {
- result = true;
- }
-#else
- posix::StatStruct file_stat;
- result = posix::Stat(path.c_str(), &file_stat) == 0 &&
- posix::IsDir(file_stat);
-#endif // GTEST_OS_WINDOWS_MOBILE
-
- return result;
-}
-
-// Returns true if pathname describes a root directory. (Windows has one
-// root directory per disk drive.)
-bool FilePath::IsRootDirectory() const {
-#if GTEST_OS_WINDOWS
- return pathname_.length() == 3 && IsAbsolutePath();
-#else
- return pathname_.length() == 1 && IsPathSeparator(pathname_.c_str()[0]);
-#endif
-}
-
-// Returns true if pathname describes an absolute path.
-bool FilePath::IsAbsolutePath() const {
- const char* const name = pathname_.c_str();
-#if GTEST_OS_WINDOWS
- return pathname_.length() >= 3 &&
- ((name[0] >= 'a' && name[0] <= 'z') ||
- (name[0] >= 'A' && name[0] <= 'Z')) &&
- name[1] == ':' &&
- IsPathSeparator(name[2]);
-#else
- return IsPathSeparator(name[0]);
-#endif
-}
-
-// Returns a pathname for a file that does not currently exist. The pathname
-// will be directory/base_name.extension or
-// directory/base_name_<number>.extension if directory/base_name.extension
-// already exists. The number will be incremented until a pathname is found
-// that does not already exist.
-// Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'.
-// There could be a race condition if two or more processes are calling this
-// function at the same time -- they could both pick the same filename.
-FilePath FilePath::GenerateUniqueFileName(const FilePath& directory,
- const FilePath& base_name,
- const char* extension) {
- FilePath full_pathname;
- int number = 0;
- do {
- full_pathname.Set(MakeFileName(directory, base_name, number++, extension));
- } while (full_pathname.FileOrDirectoryExists());
- return full_pathname;
-}
-
-// Returns true if FilePath ends with a path separator, which indicates that
-// it is intended to represent a directory. Returns false otherwise.
-// This does NOT check that a directory (or file) actually exists.
-bool FilePath::IsDirectory() const {
- return !pathname_.empty() &&
- IsPathSeparator(pathname_.c_str()[pathname_.length() - 1]);
-}
-
-// Create directories so that path exists. Returns true if successful or if
-// the directories already exist; returns false if unable to create directories
-// for any reason.
-bool FilePath::CreateDirectoriesRecursively() const {
- if (!this->IsDirectory()) {
- return false;
- }
-
- if (pathname_.length() == 0 || this->DirectoryExists()) {
- return true;
- }
-
- const FilePath parent(this->RemoveTrailingPathSeparator().RemoveFileName());
- return parent.CreateDirectoriesRecursively() && this->CreateFolder();
-}
-
-// Create the directory so that path exists. Returns true if successful or
-// if the directory already exists; returns false if unable to create the
-// directory for any reason, including if the parent directory does not
-// exist. Not named "CreateDirectory" because that's a macro on Windows.
-bool FilePath::CreateFolder() const {
-#if GTEST_OS_WINDOWS_MOBILE
- FilePath removed_sep(this->RemoveTrailingPathSeparator());
- LPCWSTR unicode = String::AnsiToUtf16(removed_sep.c_str());
- int result = CreateDirectory(unicode, nullptr) ? 0 : -1;
- delete [] unicode;
-#elif GTEST_OS_WINDOWS
- int result = _mkdir(pathname_.c_str());
-#else
- int result = mkdir(pathname_.c_str(), 0777);
-#endif // GTEST_OS_WINDOWS_MOBILE
-
- if (result == -1) {
- return this->DirectoryExists(); // An error is OK if the directory exists.
- }
- return true; // No error.
-}
-
-// If input name has a trailing separator character, remove it and return the
-// name, otherwise return the name string unmodified.
-// On Windows platform, uses \ as the separator, other platforms use /.
-FilePath FilePath::RemoveTrailingPathSeparator() const {
- return IsDirectory()
- ? FilePath(pathname_.substr(0, pathname_.length() - 1))
- : *this;
-}
-
-// Removes any redundant separators that might be in the pathname.
-// For example, "bar///foo" becomes "bar/foo". Does not eliminate other
-// redundancies that might be in a pathname involving "." or "..".
-void FilePath::Normalize() {
- if (pathname_.c_str() == nullptr) {
- pathname_ = "";
- return;
- }
- const char* src = pathname_.c_str();
- char* const dest = new char[pathname_.length() + 1];
- char* dest_ptr = dest;
- memset(dest_ptr, 0, pathname_.length() + 1);
-
- while (*src != '\0') {
- *dest_ptr = *src;
- if (!IsPathSeparator(*src)) {
- src++;
- } else {
-#if GTEST_HAS_ALT_PATH_SEP_
- if (*dest_ptr == kAlternatePathSeparator) {
- *dest_ptr = kPathSeparator;
- }
-#endif
- while (IsPathSeparator(*src))
- src++;
- }
- dest_ptr++;
- }
- *dest_ptr = '\0';
- pathname_ = dest;
- delete[] dest;
-}
-
-} // namespace internal
-} // namespace testing
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-internal-inl.h b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-internal-inl.h
deleted file mode 100644
index 8ed70daab09..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-internal-inl.h
+++ /dev/null
@@ -1,1211 +0,0 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Utility functions and classes used by the Google C++ testing framework.//
-// This file contains purely Google Test's internal implementation. Please
-// DO NOT #INCLUDE IT IN A USER PROGRAM.
-
-#ifndef GTEST_SRC_GTEST_INTERNAL_INL_H_
-#define GTEST_SRC_GTEST_INTERNAL_INL_H_
-
-#ifndef _WIN32_WCE
-# include <errno.h>
-#endif // !_WIN32_WCE
-#include <stddef.h>
-#include <stdlib.h> // For strtoll/_strtoul64/malloc/free.
-#include <string.h> // For memmove.
-
-#include <algorithm>
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "gtest/internal/gtest-port.h"
-
-#if GTEST_CAN_STREAM_RESULTS_
-# include <arpa/inet.h> // NOLINT
-# include <netdb.h> // NOLINT
-#endif
-
-#if GTEST_OS_WINDOWS
-# include <windows.h> // NOLINT
-#endif // GTEST_OS_WINDOWS
-
-#include "gtest/gtest.h"
-#include "gtest/gtest-spi.h"
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \
-/* class A needs to have dll-interface to be used by clients of class B */)
-
-namespace testing {
-
-// Declares the flags.
-//
-// We don't want the users to modify this flag in the code, but want
-// Google Test's own unit tests to be able to access it. Therefore we
-// declare it here as opposed to in gtest.h.
-GTEST_DECLARE_bool_(death_test_use_fork);
-
-namespace internal {
-
-// The value of GetTestTypeId() as seen from within the Google Test
-// library. This is solely for testing GetTestTypeId().
-GTEST_API_ extern const TypeId kTestTypeIdInGoogleTest;
-
-// Names of the flags (needed for parsing Google Test flags).
-const char kAlsoRunDisabledTestsFlag[] = "also_run_disabled_tests";
-const char kBreakOnFailureFlag[] = "break_on_failure";
-const char kCatchExceptionsFlag[] = "catch_exceptions";
-const char kColorFlag[] = "color";
-const char kFilterFlag[] = "filter";
-const char kListTestsFlag[] = "list_tests";
-const char kOutputFlag[] = "output";
-const char kPrintTimeFlag[] = "print_time";
-const char kPrintUTF8Flag[] = "print_utf8";
-const char kRandomSeedFlag[] = "random_seed";
-const char kRepeatFlag[] = "repeat";
-const char kShuffleFlag[] = "shuffle";
-const char kStackTraceDepthFlag[] = "stack_trace_depth";
-const char kStreamResultToFlag[] = "stream_result_to";
-const char kThrowOnFailureFlag[] = "throw_on_failure";
-const char kFlagfileFlag[] = "flagfile";
-
-// A valid random seed must be in [1, kMaxRandomSeed].
-const int kMaxRandomSeed = 99999;
-
-// g_help_flag is true if and only if the --help flag or an equivalent form
-// is specified on the command line.
-GTEST_API_ extern bool g_help_flag;
-
-// Returns the current time in milliseconds.
-GTEST_API_ TimeInMillis GetTimeInMillis();
-
-// Returns true if and only if Google Test should use colors in the output.
-GTEST_API_ bool ShouldUseColor(bool stdout_is_tty);
-
-// Formats the given time in milliseconds as seconds.
-GTEST_API_ std::string FormatTimeInMillisAsSeconds(TimeInMillis ms);
-
-// Converts the given time in milliseconds to a date string in the ISO 8601
-// format, without the timezone information. N.B.: due to the use the
-// non-reentrant localtime() function, this function is not thread safe. Do
-// not use it in any code that can be called from multiple threads.
-GTEST_API_ std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms);
-
-// Parses a string for an Int32 flag, in the form of "--flag=value".
-//
-// On success, stores the value of the flag in *value, and returns
-// true. On failure, returns false without changing *value.
-GTEST_API_ bool ParseInt32Flag(
- const char* str, const char* flag, Int32* value);
-
-// Returns a random seed in range [1, kMaxRandomSeed] based on the
-// given --gtest_random_seed flag value.
-inline int GetRandomSeedFromFlag(Int32 random_seed_flag) {
- const unsigned int raw_seed = (random_seed_flag == 0) ?
- static_cast<unsigned int>(GetTimeInMillis()) :
- static_cast<unsigned int>(random_seed_flag);
-
- // Normalizes the actual seed to range [1, kMaxRandomSeed] such that
- // it's easy to type.
- const int normalized_seed =
- static_cast<int>((raw_seed - 1U) %
- static_cast<unsigned int>(kMaxRandomSeed)) + 1;
- return normalized_seed;
-}
-
-// Returns the first valid random seed after 'seed'. The behavior is
-// undefined if 'seed' is invalid. The seed after kMaxRandomSeed is
-// considered to be 1.
-inline int GetNextRandomSeed(int seed) {
- GTEST_CHECK_(1 <= seed && seed <= kMaxRandomSeed)
- << "Invalid random seed " << seed << " - must be in [1, "
- << kMaxRandomSeed << "].";
- const int next_seed = seed + 1;
- return (next_seed > kMaxRandomSeed) ? 1 : next_seed;
-}
-
-// This class saves the values of all Google Test flags in its c'tor, and
-// restores them in its d'tor.
-class GTestFlagSaver {
- public:
- // The c'tor.
- GTestFlagSaver() {
- also_run_disabled_tests_ = GTEST_FLAG(also_run_disabled_tests);
- break_on_failure_ = GTEST_FLAG(break_on_failure);
- catch_exceptions_ = GTEST_FLAG(catch_exceptions);
- color_ = GTEST_FLAG(color);
- death_test_style_ = GTEST_FLAG(death_test_style);
- death_test_use_fork_ = GTEST_FLAG(death_test_use_fork);
- filter_ = GTEST_FLAG(filter);
- internal_run_death_test_ = GTEST_FLAG(internal_run_death_test);
- list_tests_ = GTEST_FLAG(list_tests);
- output_ = GTEST_FLAG(output);
- print_time_ = GTEST_FLAG(print_time);
- print_utf8_ = GTEST_FLAG(print_utf8);
- random_seed_ = GTEST_FLAG(random_seed);
- repeat_ = GTEST_FLAG(repeat);
- shuffle_ = GTEST_FLAG(shuffle);
- stack_trace_depth_ = GTEST_FLAG(stack_trace_depth);
- stream_result_to_ = GTEST_FLAG(stream_result_to);
- throw_on_failure_ = GTEST_FLAG(throw_on_failure);
- }
-
- // The d'tor is not virtual. DO NOT INHERIT FROM THIS CLASS.
- ~GTestFlagSaver() {
- GTEST_FLAG(also_run_disabled_tests) = also_run_disabled_tests_;
- GTEST_FLAG(break_on_failure) = break_on_failure_;
- GTEST_FLAG(catch_exceptions) = catch_exceptions_;
- GTEST_FLAG(color) = color_;
- GTEST_FLAG(death_test_style) = death_test_style_;
- GTEST_FLAG(death_test_use_fork) = death_test_use_fork_;
- GTEST_FLAG(filter) = filter_;
- GTEST_FLAG(internal_run_death_test) = internal_run_death_test_;
- GTEST_FLAG(list_tests) = list_tests_;
- GTEST_FLAG(output) = output_;
- GTEST_FLAG(print_time) = print_time_;
- GTEST_FLAG(print_utf8) = print_utf8_;
- GTEST_FLAG(random_seed) = random_seed_;
- GTEST_FLAG(repeat) = repeat_;
- GTEST_FLAG(shuffle) = shuffle_;
- GTEST_FLAG(stack_trace_depth) = stack_trace_depth_;
- GTEST_FLAG(stream_result_to) = stream_result_to_;
- GTEST_FLAG(throw_on_failure) = throw_on_failure_;
- }
-
- private:
- // Fields for saving the original values of flags.
- bool also_run_disabled_tests_;
- bool break_on_failure_;
- bool catch_exceptions_;
- std::string color_;
- std::string death_test_style_;
- bool death_test_use_fork_;
- std::string filter_;
- std::string internal_run_death_test_;
- bool list_tests_;
- std::string output_;
- bool print_time_;
- bool print_utf8_;
- internal::Int32 random_seed_;
- internal::Int32 repeat_;
- bool shuffle_;
- internal::Int32 stack_trace_depth_;
- std::string stream_result_to_;
- bool throw_on_failure_;
-} GTEST_ATTRIBUTE_UNUSED_;
-
-// Converts a Unicode code point to a narrow string in UTF-8 encoding.
-// code_point parameter is of type UInt32 because wchar_t may not be
-// wide enough to contain a code point.
-// If the code_point is not a valid Unicode code point
-// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be converted
-// to "(Invalid Unicode 0xXXXXXXXX)".
-GTEST_API_ std::string CodePointToUtf8(UInt32 code_point);
-
-// Converts a wide string to a narrow string in UTF-8 encoding.
-// The wide string is assumed to have the following encoding:
-// UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin)
-// UTF-32 if sizeof(wchar_t) == 4 (on Linux)
-// Parameter str points to a null-terminated wide string.
-// Parameter num_chars may additionally limit the number
-// of wchar_t characters processed. -1 is used when the entire string
-// should be processed.
-// If the string contains code points that are not valid Unicode code points
-// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output
-// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding
-// and contains invalid UTF-16 surrogate pairs, values in those pairs
-// will be encoded as individual Unicode characters from Basic Normal Plane.
-GTEST_API_ std::string WideStringToUtf8(const wchar_t* str, int num_chars);
-
-// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file
-// if the variable is present. If a file already exists at this location, this
-// function will write over it. If the variable is present, but the file cannot
-// be created, prints an error and exits.
-void WriteToShardStatusFileIfNeeded();
-
-// Checks whether sharding is enabled by examining the relevant
-// environment variable values. If the variables are present,
-// but inconsistent (e.g., shard_index >= total_shards), prints
-// an error and exits. If in_subprocess_for_death_test, sharding is
-// disabled because it must only be applied to the original test
-// process. Otherwise, we could filter out death tests we intended to execute.
-GTEST_API_ bool ShouldShard(const char* total_shards_str,
- const char* shard_index_str,
- bool in_subprocess_for_death_test);
-
-// Parses the environment variable var as an Int32. If it is unset,
-// returns default_val. If it is not an Int32, prints an error and
-// and aborts.
-GTEST_API_ Int32 Int32FromEnvOrDie(const char* env_var, Int32 default_val);
-
-// Given the total number of shards, the shard index, and the test id,
-// returns true if and only if the test should be run on this shard. The test id
-// is some arbitrary but unique non-negative integer assigned to each test
-// method. Assumes that 0 <= shard_index < total_shards.
-GTEST_API_ bool ShouldRunTestOnShard(
- int total_shards, int shard_index, int test_id);
-
-// STL container utilities.
-
-// Returns the number of elements in the given container that satisfy
-// the given predicate.
-template <class Container, typename Predicate>
-inline int CountIf(const Container& c, Predicate predicate) {
- // Implemented as an explicit loop since std::count_if() in libCstd on
- // Solaris has a non-standard signature.
- int count = 0;
- for (typename Container::const_iterator it = c.begin(); it != c.end(); ++it) {
- if (predicate(*it))
- ++count;
- }
- return count;
-}
-
-// Applies a function/functor to each element in the container.
-template <class Container, typename Functor>
-void ForEach(const Container& c, Functor functor) {
- std::for_each(c.begin(), c.end(), functor);
-}
-
-// Returns the i-th element of the vector, or default_value if i is not
-// in range [0, v.size()).
-template <typename E>
-inline E GetElementOr(const std::vector<E>& v, int i, E default_value) {
- return (i < 0 || i >= static_cast<int>(v.size())) ? default_value
- : v[static_cast<size_t>(i)];
-}
-
-// Performs an in-place shuffle of a range of the vector's elements.
-// 'begin' and 'end' are element indices as an STL-style range;
-// i.e. [begin, end) are shuffled, where 'end' == size() means to
-// shuffle to the end of the vector.
-template <typename E>
-void ShuffleRange(internal::Random* random, int begin, int end,
- std::vector<E>* v) {
- const int size = static_cast<int>(v->size());
- GTEST_CHECK_(0 <= begin && begin <= size)
- << "Invalid shuffle range start " << begin << ": must be in range [0, "
- << size << "].";
- GTEST_CHECK_(begin <= end && end <= size)
- << "Invalid shuffle range finish " << end << ": must be in range ["
- << begin << ", " << size << "].";
-
- // Fisher-Yates shuffle, from
- // http://en.wikipedia.org/wiki/Fisher-Yates_shuffle
- for (int range_width = end - begin; range_width >= 2; range_width--) {
- const int last_in_range = begin + range_width - 1;
- const int selected =
- begin +
- static_cast<int>(random->Generate(static_cast<UInt32>(range_width)));
- std::swap((*v)[static_cast<size_t>(selected)],
- (*v)[static_cast<size_t>(last_in_range)]);
- }
-}
-
-// Performs an in-place shuffle of the vector's elements.
-template <typename E>
-inline void Shuffle(internal::Random* random, std::vector<E>* v) {
- ShuffleRange(random, 0, static_cast<int>(v->size()), v);
-}
-
-// A function for deleting an object. Handy for being used as a
-// functor.
-template <typename T>
-static void Delete(T* x) {
- delete x;
-}
-
-// A predicate that checks the key of a TestProperty against a known key.
-//
-// TestPropertyKeyIs is copyable.
-class TestPropertyKeyIs {
- public:
- // Constructor.
- //
- // TestPropertyKeyIs has NO default constructor.
- explicit TestPropertyKeyIs(const std::string& key) : key_(key) {}
-
- // Returns true if and only if the test name of test property matches on key_.
- bool operator()(const TestProperty& test_property) const {
- return test_property.key() == key_;
- }
-
- private:
- std::string key_;
-};
-
-// Class UnitTestOptions.
-//
-// This class contains functions for processing options the user
-// specifies when running the tests. It has only static members.
-//
-// In most cases, the user can specify an option using either an
-// environment variable or a command line flag. E.g. you can set the
-// test filter using either GTEST_FILTER or --gtest_filter. If both
-// the variable and the flag are present, the latter overrides the
-// former.
-class GTEST_API_ UnitTestOptions {
- public:
- // Functions for processing the gtest_output flag.
-
- // Returns the output format, or "" for normal printed output.
- static std::string GetOutputFormat();
-
- // Returns the absolute path of the requested output file, or the
- // default (test_detail.xml in the original working directory) if
- // none was explicitly specified.
- static std::string GetAbsolutePathToOutputFile();
-
- // Functions for processing the gtest_filter flag.
-
- // Returns true if and only if the wildcard pattern matches the string.
- // The first ':' or '\0' character in pattern marks the end of it.
- //
- // This recursive algorithm isn't very efficient, but is clear and
- // works well enough for matching test names, which are short.
- static bool PatternMatchesString(const char *pattern, const char *str);
-
- // Returns true if and only if the user-specified filter matches the test
- // suite name and the test name.
- static bool FilterMatchesTest(const std::string& test_suite_name,
- const std::string& test_name);
-
-#if GTEST_OS_WINDOWS
- // Function for supporting the gtest_catch_exception flag.
-
- // Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the
- // given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise.
- // This function is useful as an __except condition.
- static int GTestShouldProcessSEH(DWORD exception_code);
-#endif // GTEST_OS_WINDOWS
-
- // Returns true if "name" matches the ':' separated list of glob-style
- // filters in "filter".
- static bool MatchesFilter(const std::string& name, const char* filter);
-};
-
-// Returns the current application's name, removing directory path if that
-// is present. Used by UnitTestOptions::GetOutputFile.
-GTEST_API_ FilePath GetCurrentExecutableName();
-
-// The role interface for getting the OS stack trace as a string.
-class OsStackTraceGetterInterface {
- public:
- OsStackTraceGetterInterface() {}
- virtual ~OsStackTraceGetterInterface() {}
-
- // Returns the current OS stack trace as an std::string. Parameters:
- //
- // max_depth - the maximum number of stack frames to be included
- // in the trace.
- // skip_count - the number of top frames to be skipped; doesn't count
- // against max_depth.
- virtual std::string CurrentStackTrace(int max_depth, int skip_count) = 0;
-
- // UponLeavingGTest() should be called immediately before Google Test calls
- // user code. It saves some information about the current stack that
- // CurrentStackTrace() will use to find and hide Google Test stack frames.
- virtual void UponLeavingGTest() = 0;
-
- // This string is inserted in place of stack frames that are part of
- // Google Test's implementation.
- static const char* const kElidedFramesMarker;
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetterInterface);
-};
-
-// A working implementation of the OsStackTraceGetterInterface interface.
-class OsStackTraceGetter : public OsStackTraceGetterInterface {
- public:
- OsStackTraceGetter() {}
-
- std::string CurrentStackTrace(int max_depth, int skip_count) override;
- void UponLeavingGTest() override;
-
- private:
-#if GTEST_HAS_ABSL
- Mutex mutex_; // Protects all internal state.
-
- // We save the stack frame below the frame that calls user code.
- // We do this because the address of the frame immediately below
- // the user code changes between the call to UponLeavingGTest()
- // and any calls to the stack trace code from within the user code.
- void* caller_frame_ = nullptr;
-#endif // GTEST_HAS_ABSL
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetter);
-};
-
-// Information about a Google Test trace point.
-struct TraceInfo {
- const char* file;
- int line;
- std::string message;
-};
-
-// This is the default global test part result reporter used in UnitTestImpl.
-// This class should only be used by UnitTestImpl.
-class DefaultGlobalTestPartResultReporter
- : public TestPartResultReporterInterface {
- public:
- explicit DefaultGlobalTestPartResultReporter(UnitTestImpl* unit_test);
- // Implements the TestPartResultReporterInterface. Reports the test part
- // result in the current test.
- void ReportTestPartResult(const TestPartResult& result) override;
-
- private:
- UnitTestImpl* const unit_test_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultGlobalTestPartResultReporter);
-};
-
-// This is the default per thread test part result reporter used in
-// UnitTestImpl. This class should only be used by UnitTestImpl.
-class DefaultPerThreadTestPartResultReporter
- : public TestPartResultReporterInterface {
- public:
- explicit DefaultPerThreadTestPartResultReporter(UnitTestImpl* unit_test);
- // Implements the TestPartResultReporterInterface. The implementation just
- // delegates to the current global test part result reporter of *unit_test_.
- void ReportTestPartResult(const TestPartResult& result) override;
-
- private:
- UnitTestImpl* const unit_test_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultPerThreadTestPartResultReporter);
-};
-
-// The private implementation of the UnitTest class. We don't protect
-// the methods under a mutex, as this class is not accessible by a
-// user and the UnitTest class that delegates work to this class does
-// proper locking.
-class GTEST_API_ UnitTestImpl {
- public:
- explicit UnitTestImpl(UnitTest* parent);
- virtual ~UnitTestImpl();
-
- // There are two different ways to register your own TestPartResultReporter.
- // You can register your own repoter to listen either only for test results
- // from the current thread or for results from all threads.
- // By default, each per-thread test result repoter just passes a new
- // TestPartResult to the global test result reporter, which registers the
- // test part result for the currently running test.
-
- // Returns the global test part result reporter.
- TestPartResultReporterInterface* GetGlobalTestPartResultReporter();
-
- // Sets the global test part result reporter.
- void SetGlobalTestPartResultReporter(
- TestPartResultReporterInterface* reporter);
-
- // Returns the test part result reporter for the current thread.
- TestPartResultReporterInterface* GetTestPartResultReporterForCurrentThread();
-
- // Sets the test part result reporter for the current thread.
- void SetTestPartResultReporterForCurrentThread(
- TestPartResultReporterInterface* reporter);
-
- // Gets the number of successful test suites.
- int successful_test_suite_count() const;
-
- // Gets the number of failed test suites.
- int failed_test_suite_count() const;
-
- // Gets the number of all test suites.
- int total_test_suite_count() const;
-
- // Gets the number of all test suites that contain at least one test
- // that should run.
- int test_suite_to_run_count() const;
-
- // Gets the number of successful tests.
- int successful_test_count() const;
-
- // Gets the number of skipped tests.
- int skipped_test_count() const;
-
- // Gets the number of failed tests.
- int failed_test_count() const;
-
- // Gets the number of disabled tests that will be reported in the XML report.
- int reportable_disabled_test_count() const;
-
- // Gets the number of disabled tests.
- int disabled_test_count() const;
-
- // Gets the number of tests to be printed in the XML report.
- int reportable_test_count() const;
-
- // Gets the number of all tests.
- int total_test_count() const;
-
- // Gets the number of tests that should run.
- int test_to_run_count() const;
-
- // Gets the time of the test program start, in ms from the start of the
- // UNIX epoch.
- TimeInMillis start_timestamp() const { return start_timestamp_; }
-
- // Gets the elapsed time, in milliseconds.
- TimeInMillis elapsed_time() const { return elapsed_time_; }
-
- // Returns true if and only if the unit test passed (i.e. all test suites
- // passed).
- bool Passed() const { return !Failed(); }
-
- // Returns true if and only if the unit test failed (i.e. some test suite
- // failed or something outside of all tests failed).
- bool Failed() const {
- return failed_test_suite_count() > 0 || ad_hoc_test_result()->Failed();
- }
-
- // Gets the i-th test suite among all the test suites. i can range from 0 to
- // total_test_suite_count() - 1. If i is not in that range, returns NULL.
- const TestSuite* GetTestSuite(int i) const {
- const int index = GetElementOr(test_suite_indices_, i, -1);
- return index < 0 ? nullptr : test_suites_[static_cast<size_t>(i)];
- }
-
- // Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- const TestCase* GetTestCase(int i) const { return GetTestSuite(i); }
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
- // Gets the i-th test suite among all the test suites. i can range from 0 to
- // total_test_suite_count() - 1. If i is not in that range, returns NULL.
- TestSuite* GetMutableSuiteCase(int i) {
- const int index = GetElementOr(test_suite_indices_, i, -1);
- return index < 0 ? nullptr : test_suites_[static_cast<size_t>(index)];
- }
-
- // Provides access to the event listener list.
- TestEventListeners* listeners() { return &listeners_; }
-
- // Returns the TestResult for the test that's currently running, or
- // the TestResult for the ad hoc test if no test is running.
- TestResult* current_test_result();
-
- // Returns the TestResult for the ad hoc test.
- const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; }
-
- // Sets the OS stack trace getter.
- //
- // Does nothing if the input and the current OS stack trace getter
- // are the same; otherwise, deletes the old getter and makes the
- // input the current getter.
- void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter);
-
- // Returns the current OS stack trace getter if it is not NULL;
- // otherwise, creates an OsStackTraceGetter, makes it the current
- // getter, and returns it.
- OsStackTraceGetterInterface* os_stack_trace_getter();
-
- // Returns the current OS stack trace as an std::string.
- //
- // The maximum number of stack frames to be included is specified by
- // the gtest_stack_trace_depth flag. The skip_count parameter
- // specifies the number of top frames to be skipped, which doesn't
- // count against the number of frames to be included.
- //
- // For example, if Foo() calls Bar(), which in turn calls
- // CurrentOsStackTraceExceptTop(1), Foo() will be included in the
- // trace but Bar() and CurrentOsStackTraceExceptTop() won't.
- std::string CurrentOsStackTraceExceptTop(int skip_count) GTEST_NO_INLINE_;
-
- // Finds and returns a TestSuite with the given name. If one doesn't
- // exist, creates one and returns it.
- //
- // Arguments:
- //
- // test_suite_name: name of the test suite
- // type_param: the name of the test's type parameter, or NULL if
- // this is not a typed or a type-parameterized test.
- // set_up_tc: pointer to the function that sets up the test suite
- // tear_down_tc: pointer to the function that tears down the test suite
- TestSuite* GetTestSuite(const char* test_suite_name, const char* type_param,
- internal::SetUpTestSuiteFunc set_up_tc,
- internal::TearDownTestSuiteFunc tear_down_tc);
-
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- TestCase* GetTestCase(const char* test_case_name, const char* type_param,
- internal::SetUpTestSuiteFunc set_up_tc,
- internal::TearDownTestSuiteFunc tear_down_tc) {
- return GetTestSuite(test_case_name, type_param, set_up_tc, tear_down_tc);
- }
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
- // Adds a TestInfo to the unit test.
- //
- // Arguments:
- //
- // set_up_tc: pointer to the function that sets up the test suite
- // tear_down_tc: pointer to the function that tears down the test suite
- // test_info: the TestInfo object
- void AddTestInfo(internal::SetUpTestSuiteFunc set_up_tc,
- internal::TearDownTestSuiteFunc tear_down_tc,
- TestInfo* test_info) {
- // In order to support thread-safe death tests, we need to
- // remember the original working directory when the test program
- // was first invoked. We cannot do this in RUN_ALL_TESTS(), as
- // the user may have changed the current directory before calling
- // RUN_ALL_TESTS(). Therefore we capture the current directory in
- // AddTestInfo(), which is called to register a TEST or TEST_F
- // before main() is reached.
- if (original_working_dir_.IsEmpty()) {
- original_working_dir_.Set(FilePath::GetCurrentDir());
- GTEST_CHECK_(!original_working_dir_.IsEmpty())
- << "Failed to get the current working directory.";
- }
-
- GetTestSuite(test_info->test_suite_name(), test_info->type_param(),
- set_up_tc, tear_down_tc)
- ->AddTestInfo(test_info);
- }
-
- // Returns ParameterizedTestSuiteRegistry object used to keep track of
- // value-parameterized tests and instantiate and register them.
- internal::ParameterizedTestSuiteRegistry& parameterized_test_registry() {
- return parameterized_test_registry_;
- }
-
- // Sets the TestSuite object for the test that's currently running.
- void set_current_test_suite(TestSuite* a_current_test_suite) {
- current_test_suite_ = a_current_test_suite;
- }
-
- // Sets the TestInfo object for the test that's currently running. If
- // current_test_info is NULL, the assertion results will be stored in
- // ad_hoc_test_result_.
- void set_current_test_info(TestInfo* a_current_test_info) {
- current_test_info_ = a_current_test_info;
- }
-
- // Registers all parameterized tests defined using TEST_P and
- // INSTANTIATE_TEST_SUITE_P, creating regular tests for each test/parameter
- // combination. This method can be called more then once; it has guards
- // protecting from registering the tests more then once. If
- // value-parameterized tests are disabled, RegisterParameterizedTests is
- // present but does nothing.
- void RegisterParameterizedTests();
-
- // Runs all tests in this UnitTest object, prints the result, and
- // returns true if all tests are successful. If any exception is
- // thrown during a test, this test is considered to be failed, but
- // the rest of the tests will still be run.
- bool RunAllTests();
-
- // Clears the results of all tests, except the ad hoc tests.
- void ClearNonAdHocTestResult() {
- ForEach(test_suites_, TestSuite::ClearTestSuiteResult);
- }
-
- // Clears the results of ad-hoc test assertions.
- void ClearAdHocTestResult() {
- ad_hoc_test_result_.Clear();
- }
-
- // Adds a TestProperty to the current TestResult object when invoked in a
- // context of a test or a test suite, or to the global property set. If the
- // result already contains a property with the same key, the value will be
- // updated.
- void RecordProperty(const TestProperty& test_property);
-
- enum ReactionToSharding {
- HONOR_SHARDING_PROTOCOL,
- IGNORE_SHARDING_PROTOCOL
- };
-
- // Matches the full name of each test against the user-specified
- // filter to decide whether the test should run, then records the
- // result in each TestSuite and TestInfo object.
- // If shard_tests == HONOR_SHARDING_PROTOCOL, further filters tests
- // based on sharding variables in the environment.
- // Returns the number of tests that should run.
- int FilterTests(ReactionToSharding shard_tests);
-
- // Prints the names of the tests matching the user-specified filter flag.
- void ListTestsMatchingFilter();
-
- const TestSuite* current_test_suite() const { return current_test_suite_; }
- TestInfo* current_test_info() { return current_test_info_; }
- const TestInfo* current_test_info() const { return current_test_info_; }
-
- // Returns the vector of environments that need to be set-up/torn-down
- // before/after the tests are run.
- std::vector<Environment*>& environments() { return environments_; }
-
- // Getters for the per-thread Google Test trace stack.
- std::vector<TraceInfo>& gtest_trace_stack() {
- return *(gtest_trace_stack_.pointer());
- }
- const std::vector<TraceInfo>& gtest_trace_stack() const {
- return gtest_trace_stack_.get();
- }
-
-#if GTEST_HAS_DEATH_TEST
- void InitDeathTestSubprocessControlInfo() {
- internal_run_death_test_flag_.reset(ParseInternalRunDeathTestFlag());
- }
- // Returns a pointer to the parsed --gtest_internal_run_death_test
- // flag, or NULL if that flag was not specified.
- // This information is useful only in a death test child process.
- // Must not be called before a call to InitGoogleTest.
- const InternalRunDeathTestFlag* internal_run_death_test_flag() const {
- return internal_run_death_test_flag_.get();
- }
-
- // Returns a pointer to the current death test factory.
- internal::DeathTestFactory* death_test_factory() {
- return death_test_factory_.get();
- }
-
- void SuppressTestEventsIfInSubprocess();
-
- friend class ReplaceDeathTestFactory;
-#endif // GTEST_HAS_DEATH_TEST
-
- // Initializes the event listener performing XML output as specified by
- // UnitTestOptions. Must not be called before InitGoogleTest.
- void ConfigureXmlOutput();
-
-#if GTEST_CAN_STREAM_RESULTS_
- // Initializes the event listener for streaming test results to a socket.
- // Must not be called before InitGoogleTest.
- void ConfigureStreamingOutput();
-#endif
-
- // Performs initialization dependent upon flag values obtained in
- // ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to
- // ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest
- // this function is also called from RunAllTests. Since this function can be
- // called more than once, it has to be idempotent.
- void PostFlagParsingInit();
-
- // Gets the random seed used at the start of the current test iteration.
- int random_seed() const { return random_seed_; }
-
- // Gets the random number generator.
- internal::Random* random() { return &random_; }
-
- // Shuffles all test suites, and the tests within each test suite,
- // making sure that death tests are still run first.
- void ShuffleTests();
-
- // Restores the test suites and tests to their order before the first shuffle.
- void UnshuffleTests();
-
- // Returns the value of GTEST_FLAG(catch_exceptions) at the moment
- // UnitTest::Run() starts.
- bool catch_exceptions() const { return catch_exceptions_; }
-
- private:
- friend class ::testing::UnitTest;
-
- // Used by UnitTest::Run() to capture the state of
- // GTEST_FLAG(catch_exceptions) at the moment it starts.
- void set_catch_exceptions(bool value) { catch_exceptions_ = value; }
-
- // The UnitTest object that owns this implementation object.
- UnitTest* const parent_;
-
- // The working directory when the first TEST() or TEST_F() was
- // executed.
- internal::FilePath original_working_dir_;
-
- // The default test part result reporters.
- DefaultGlobalTestPartResultReporter default_global_test_part_result_reporter_;
- DefaultPerThreadTestPartResultReporter
- default_per_thread_test_part_result_reporter_;
-
- // Points to (but doesn't own) the global test part result reporter.
- TestPartResultReporterInterface* global_test_part_result_repoter_;
-
- // Protects read and write access to global_test_part_result_reporter_.
- internal::Mutex global_test_part_result_reporter_mutex_;
-
- // Points to (but doesn't own) the per-thread test part result reporter.
- internal::ThreadLocal<TestPartResultReporterInterface*>
- per_thread_test_part_result_reporter_;
-
- // The vector of environments that need to be set-up/torn-down
- // before/after the tests are run.
- std::vector<Environment*> environments_;
-
- // The vector of TestSuites in their original order. It owns the
- // elements in the vector.
- std::vector<TestSuite*> test_suites_;
-
- // Provides a level of indirection for the test suite list to allow
- // easy shuffling and restoring the test suite order. The i-th
- // element of this vector is the index of the i-th test suite in the
- // shuffled order.
- std::vector<int> test_suite_indices_;
-
- // ParameterizedTestRegistry object used to register value-parameterized
- // tests.
- internal::ParameterizedTestSuiteRegistry parameterized_test_registry_;
-
- // Indicates whether RegisterParameterizedTests() has been called already.
- bool parameterized_tests_registered_;
-
- // Index of the last death test suite registered. Initially -1.
- int last_death_test_suite_;
-
- // This points to the TestSuite for the currently running test. It
- // changes as Google Test goes through one test suite after another.
- // When no test is running, this is set to NULL and Google Test
- // stores assertion results in ad_hoc_test_result_. Initially NULL.
- TestSuite* current_test_suite_;
-
- // This points to the TestInfo for the currently running test. It
- // changes as Google Test goes through one test after another. When
- // no test is running, this is set to NULL and Google Test stores
- // assertion results in ad_hoc_test_result_. Initially NULL.
- TestInfo* current_test_info_;
-
- // Normally, a user only writes assertions inside a TEST or TEST_F,
- // or inside a function called by a TEST or TEST_F. Since Google
- // Test keeps track of which test is current running, it can
- // associate such an assertion with the test it belongs to.
- //
- // If an assertion is encountered when no TEST or TEST_F is running,
- // Google Test attributes the assertion result to an imaginary "ad hoc"
- // test, and records the result in ad_hoc_test_result_.
- TestResult ad_hoc_test_result_;
-
- // The list of event listeners that can be used to track events inside
- // Google Test.
- TestEventListeners listeners_;
-
- // The OS stack trace getter. Will be deleted when the UnitTest
- // object is destructed. By default, an OsStackTraceGetter is used,
- // but the user can set this field to use a custom getter if that is
- // desired.
- OsStackTraceGetterInterface* os_stack_trace_getter_;
-
- // True if and only if PostFlagParsingInit() has been called.
- bool post_flag_parse_init_performed_;
-
- // The random number seed used at the beginning of the test run.
- int random_seed_;
-
- // Our random number generator.
- internal::Random random_;
-
- // The time of the test program start, in ms from the start of the
- // UNIX epoch.
- TimeInMillis start_timestamp_;
-
- // How long the test took to run, in milliseconds.
- TimeInMillis elapsed_time_;
-
-#if GTEST_HAS_DEATH_TEST
- // The decomposed components of the gtest_internal_run_death_test flag,
- // parsed when RUN_ALL_TESTS is called.
- std::unique_ptr<InternalRunDeathTestFlag> internal_run_death_test_flag_;
- std::unique_ptr<internal::DeathTestFactory> death_test_factory_;
-#endif // GTEST_HAS_DEATH_TEST
-
- // A per-thread stack of traces created by the SCOPED_TRACE() macro.
- internal::ThreadLocal<std::vector<TraceInfo> > gtest_trace_stack_;
-
- // The value of GTEST_FLAG(catch_exceptions) at the moment RunAllTests()
- // starts.
- bool catch_exceptions_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTestImpl);
-}; // class UnitTestImpl
-
-// Convenience function for accessing the global UnitTest
-// implementation object.
-inline UnitTestImpl* GetUnitTestImpl() {
- return UnitTest::GetInstance()->impl();
-}
-
-#if GTEST_USES_SIMPLE_RE
-
-// Internal helper functions for implementing the simple regular
-// expression matcher.
-GTEST_API_ bool IsInSet(char ch, const char* str);
-GTEST_API_ bool IsAsciiDigit(char ch);
-GTEST_API_ bool IsAsciiPunct(char ch);
-GTEST_API_ bool IsRepeat(char ch);
-GTEST_API_ bool IsAsciiWhiteSpace(char ch);
-GTEST_API_ bool IsAsciiWordChar(char ch);
-GTEST_API_ bool IsValidEscape(char ch);
-GTEST_API_ bool AtomMatchesChar(bool escaped, char pattern, char ch);
-GTEST_API_ bool ValidateRegex(const char* regex);
-GTEST_API_ bool MatchRegexAtHead(const char* regex, const char* str);
-GTEST_API_ bool MatchRepetitionAndRegexAtHead(
- bool escaped, char ch, char repeat, const char* regex, const char* str);
-GTEST_API_ bool MatchRegexAnywhere(const char* regex, const char* str);
-
-#endif // GTEST_USES_SIMPLE_RE
-
-// Parses the command line for Google Test flags, without initializing
-// other parts of Google Test.
-GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, char** argv);
-GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv);
-
-#if GTEST_HAS_DEATH_TEST
-
-// Returns the message describing the last system error, regardless of the
-// platform.
-GTEST_API_ std::string GetLastErrnoDescription();
-
-// Attempts to parse a string into a positive integer pointed to by the
-// number parameter. Returns true if that is possible.
-// GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we can use
-// it here.
-template <typename Integer>
-bool ParseNaturalNumber(const ::std::string& str, Integer* number) {
- // Fail fast if the given string does not begin with a digit;
- // this bypasses strtoXXX's "optional leading whitespace and plus
- // or minus sign" semantics, which are undesirable here.
- if (str.empty() || !IsDigit(str[0])) {
- return false;
- }
- errno = 0;
-
- char* end;
- // BiggestConvertible is the largest integer type that system-provided
- // string-to-number conversion routines can return.
-
-# if GTEST_OS_WINDOWS && !defined(__GNUC__)
-
- // MSVC and C++ Builder define __int64 instead of the standard long long.
- typedef unsigned __int64 BiggestConvertible;
- const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10);
-
-# else
-
- typedef unsigned long long BiggestConvertible; // NOLINT
- const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10);
-
-# endif // GTEST_OS_WINDOWS && !defined(__GNUC__)
-
- const bool parse_success = *end == '\0' && errno == 0;
-
- GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed));
-
- const Integer result = static_cast<Integer>(parsed);
- if (parse_success && static_cast<BiggestConvertible>(result) == parsed) {
- *number = result;
- return true;
- }
- return false;
-}
-#endif // GTEST_HAS_DEATH_TEST
-
-// TestResult contains some private methods that should be hidden from
-// Google Test user but are required for testing. This class allow our tests
-// to access them.
-//
-// This class is supplied only for the purpose of testing Google Test's own
-// constructs. Do not use it in user tests, either directly or indirectly.
-class TestResultAccessor {
- public:
- static void RecordProperty(TestResult* test_result,
- const std::string& xml_element,
- const TestProperty& property) {
- test_result->RecordProperty(xml_element, property);
- }
-
- static void ClearTestPartResults(TestResult* test_result) {
- test_result->ClearTestPartResults();
- }
-
- static const std::vector<testing::TestPartResult>& test_part_results(
- const TestResult& test_result) {
- return test_result.test_part_results();
- }
-};
-
-#if GTEST_CAN_STREAM_RESULTS_
-
-// Streams test results to the given port on the given host machine.
-class StreamingListener : public EmptyTestEventListener {
- public:
- // Abstract base class for writing strings to a socket.
- class AbstractSocketWriter {
- public:
- virtual ~AbstractSocketWriter() {}
-
- // Sends a string to the socket.
- virtual void Send(const std::string& message) = 0;
-
- // Closes the socket.
- virtual void CloseConnection() {}
-
- // Sends a string and a newline to the socket.
- void SendLn(const std::string& message) { Send(message + "\n"); }
- };
-
- // Concrete class for actually writing strings to a socket.
- class SocketWriter : public AbstractSocketWriter {
- public:
- SocketWriter(const std::string& host, const std::string& port)
- : sockfd_(-1), host_name_(host), port_num_(port) {
- MakeConnection();
- }
-
- ~SocketWriter() override {
- if (sockfd_ != -1)
- CloseConnection();
- }
-
- // Sends a string to the socket.
- void Send(const std::string& message) override {
- GTEST_CHECK_(sockfd_ != -1)
- << "Send() can be called only when there is a connection.";
-
- const auto len = static_cast<size_t>(message.length());
- if (write(sockfd_, message.c_str(), len) != static_cast<ssize_t>(len)) {
- GTEST_LOG_(WARNING)
- << "stream_result_to: failed to stream to "
- << host_name_ << ":" << port_num_;
- }
- }
-
- private:
- // Creates a client socket and connects to the server.
- void MakeConnection();
-
- // Closes the socket.
- void CloseConnection() override {
- GTEST_CHECK_(sockfd_ != -1)
- << "CloseConnection() can be called only when there is a connection.";
-
- close(sockfd_);
- sockfd_ = -1;
- }
-
- int sockfd_; // socket file descriptor
- const std::string host_name_;
- const std::string port_num_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(SocketWriter);
- }; // class SocketWriter
-
- // Escapes '=', '&', '%', and '\n' characters in str as "%xx".
- static std::string UrlEncode(const char* str);
-
- StreamingListener(const std::string& host, const std::string& port)
- : socket_writer_(new SocketWriter(host, port)) {
- Start();
- }
-
- explicit StreamingListener(AbstractSocketWriter* socket_writer)
- : socket_writer_(socket_writer) { Start(); }
-
- void OnTestProgramStart(const UnitTest& /* unit_test */) override {
- SendLn("event=TestProgramStart");
- }
-
- void OnTestProgramEnd(const UnitTest& unit_test) override {
- // Note that Google Test current only report elapsed time for each
- // test iteration, not for the entire test program.
- SendLn("event=TestProgramEnd&passed=" + FormatBool(unit_test.Passed()));
-
- // Notify the streaming server to stop.
- socket_writer_->CloseConnection();
- }
-
- void OnTestIterationStart(const UnitTest& /* unit_test */,
- int iteration) override {
- SendLn("event=TestIterationStart&iteration=" +
- StreamableToString(iteration));
- }
-
- void OnTestIterationEnd(const UnitTest& unit_test,
- int /* iteration */) override {
- SendLn("event=TestIterationEnd&passed=" +
- FormatBool(unit_test.Passed()) + "&elapsed_time=" +
- StreamableToString(unit_test.elapsed_time()) + "ms");
- }
-
- // Note that "event=TestCaseStart" is a wire format and has to remain
- // "case" for compatibilty
- void OnTestCaseStart(const TestCase& test_case) override {
- SendLn(std::string("event=TestCaseStart&name=") + test_case.name());
- }
-
- // Note that "event=TestCaseEnd" is a wire format and has to remain
- // "case" for compatibilty
- void OnTestCaseEnd(const TestCase& test_case) override {
- SendLn("event=TestCaseEnd&passed=" + FormatBool(test_case.Passed()) +
- "&elapsed_time=" + StreamableToString(test_case.elapsed_time()) +
- "ms");
- }
-
- void OnTestStart(const TestInfo& test_info) override {
- SendLn(std::string("event=TestStart&name=") + test_info.name());
- }
-
- void OnTestEnd(const TestInfo& test_info) override {
- SendLn("event=TestEnd&passed=" +
- FormatBool((test_info.result())->Passed()) +
- "&elapsed_time=" +
- StreamableToString((test_info.result())->elapsed_time()) + "ms");
- }
-
- void OnTestPartResult(const TestPartResult& test_part_result) override {
- const char* file_name = test_part_result.file_name();
- if (file_name == nullptr) file_name = "";
- SendLn("event=TestPartResult&file=" + UrlEncode(file_name) +
- "&line=" + StreamableToString(test_part_result.line_number()) +
- "&message=" + UrlEncode(test_part_result.message()));
- }
-
- private:
- // Sends the given message and a newline to the socket.
- void SendLn(const std::string& message) { socket_writer_->SendLn(message); }
-
- // Called at the start of streaming to notify the receiver what
- // protocol we are using.
- void Start() { SendLn("gtest_streaming_protocol_version=1.0"); }
-
- std::string FormatBool(bool value) { return value ? "1" : "0"; }
-
- const std::unique_ptr<AbstractSocketWriter> socket_writer_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(StreamingListener);
-}; // class StreamingListener
-
-#endif // GTEST_CAN_STREAM_RESULTS_
-
-} // namespace internal
-} // namespace testing
-
-GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251
-
-#endif // GTEST_SRC_GTEST_INTERNAL_INL_H_
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-matchers.cc b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-matchers.cc
deleted file mode 100644
index 7d2fb6851ec..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-matchers.cc
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// The Google C++ Testing and Mocking Framework (Google Test)
-//
-// This file implements just enough of the matcher interface to allow
-// EXPECT_DEATH and friends to accept a matcher argument.
-
-#include "gtest/internal/gtest-internal.h"
-#include "gtest/internal/gtest-port.h"
-#include "gtest/gtest-matchers.h"
-
-#include <string>
-
-namespace testing {
-
-// Constructs a matcher that matches a const std::string& whose value is
-// equal to s.
-Matcher<const std::string&>::Matcher(const std::string& s) { *this = Eq(s); }
-
-// Constructs a matcher that matches a const std::string& whose value is
-// equal to s.
-Matcher<const std::string&>::Matcher(const char* s) {
- *this = Eq(std::string(s));
-}
-
-// Constructs a matcher that matches a std::string whose value is equal to
-// s.
-Matcher<std::string>::Matcher(const std::string& s) { *this = Eq(s); }
-
-// Constructs a matcher that matches a std::string whose value is equal to
-// s.
-Matcher<std::string>::Matcher(const char* s) { *this = Eq(std::string(s)); }
-
-#if GTEST_HAS_ABSL
-// Constructs a matcher that matches a const absl::string_view& whose value is
-// equal to s.
-Matcher<const absl::string_view&>::Matcher(const std::string& s) {
- *this = Eq(s);
-}
-
-// Constructs a matcher that matches a const absl::string_view& whose value is
-// equal to s.
-Matcher<const absl::string_view&>::Matcher(const char* s) {
- *this = Eq(std::string(s));
-}
-
-// Constructs a matcher that matches a const absl::string_view& whose value is
-// equal to s.
-Matcher<const absl::string_view&>::Matcher(absl::string_view s) {
- *this = Eq(std::string(s));
-}
-
-// Constructs a matcher that matches a absl::string_view whose value is equal to
-// s.
-Matcher<absl::string_view>::Matcher(const std::string& s) { *this = Eq(s); }
-
-// Constructs a matcher that matches a absl::string_view whose value is equal to
-// s.
-Matcher<absl::string_view>::Matcher(const char* s) {
- *this = Eq(std::string(s));
-}
-
-// Constructs a matcher that matches a absl::string_view whose value is equal to
-// s.
-Matcher<absl::string_view>::Matcher(absl::string_view s) {
- *this = Eq(std::string(s));
-}
-#endif // GTEST_HAS_ABSL
-
-} // namespace testing
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-port.cc b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-port.cc
deleted file mode 100644
index fc5ba6becc5..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-port.cc
+++ /dev/null
@@ -1,1399 +0,0 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-#include "gtest/internal/gtest-port.h"
-
-#include <limits.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <fstream>
-#include <memory>
-
-#if GTEST_OS_WINDOWS
-# include <windows.h>
-# include <io.h>
-# include <sys/stat.h>
-# include <map> // Used in ThreadLocal.
-# ifdef _MSC_VER
-# include <crtdbg.h>
-# endif // _MSC_VER
-#else
-# include <unistd.h>
-#endif // GTEST_OS_WINDOWS
-
-#if GTEST_OS_MAC
-# include <mach/mach_init.h>
-# include <mach/task.h>
-# include <mach/vm_map.h>
-#endif // GTEST_OS_MAC
-
-#if GTEST_OS_DRAGONFLY || GTEST_OS_FREEBSD || GTEST_OS_GNU_KFREEBSD || \
- GTEST_OS_NETBSD || GTEST_OS_OPENBSD
-# include <sys/sysctl.h>
-# if GTEST_OS_DRAGONFLY || GTEST_OS_FREEBSD || GTEST_OS_GNU_KFREEBSD
-# include <sys/user.h>
-# endif
-#endif
-
-#if GTEST_OS_QNX
-# include <devctl.h>
-# include <fcntl.h>
-# include <sys/procfs.h>
-#endif // GTEST_OS_QNX
-
-#if GTEST_OS_AIX
-# include <procinfo.h>
-# include <sys/types.h>
-#endif // GTEST_OS_AIX
-
-#if GTEST_OS_FUCHSIA
-# include <zircon/process.h>
-# include <zircon/syscalls.h>
-#endif // GTEST_OS_FUCHSIA
-
-#include "gtest/gtest-spi.h"
-#include "gtest/gtest-message.h"
-#include "gtest/internal/gtest-internal.h"
-#include "gtest/internal/gtest-string.h"
-#include "src/gtest-internal-inl.h"
-
-namespace testing {
-namespace internal {
-
-#if defined(_MSC_VER) || defined(__BORLANDC__)
-// MSVC and C++Builder do not provide a definition of STDERR_FILENO.
-const int kStdOutFileno = 1;
-const int kStdErrFileno = 2;
-#else
-const int kStdOutFileno = STDOUT_FILENO;
-const int kStdErrFileno = STDERR_FILENO;
-#endif // _MSC_VER
-
-#if GTEST_OS_LINUX
-
-namespace {
-template <typename T>
-T ReadProcFileField(const std::string& filename, int field) {
- std::string dummy;
- std::ifstream file(filename.c_str());
- while (field-- > 0) {
- file >> dummy;
- }
- T output = 0;
- file >> output;
- return output;
-}
-} // namespace
-
-// Returns the number of active threads, or 0 when there is an error.
-size_t GetThreadCount() {
- const std::string filename =
- (Message() << "/proc/" << getpid() << "/stat").GetString();
- return ReadProcFileField<size_t>(filename, 19);
-}
-
-#elif GTEST_OS_MAC
-
-size_t GetThreadCount() {
- const task_t task = mach_task_self();
- mach_msg_type_number_t thread_count;
- thread_act_array_t thread_list;
- const kern_return_t status = task_threads(task, &thread_list, &thread_count);
- if (status == KERN_SUCCESS) {
- // task_threads allocates resources in thread_list and we need to free them
- // to avoid leaks.
- vm_deallocate(task,
- reinterpret_cast<vm_address_t>(thread_list),
- sizeof(thread_t) * thread_count);
- return static_cast<size_t>(thread_count);
- } else {
- return 0;
- }
-}
-
-#elif GTEST_OS_DRAGONFLY || GTEST_OS_FREEBSD || GTEST_OS_GNU_KFREEBSD || \
- GTEST_OS_NETBSD
-
-#if GTEST_OS_NETBSD
-#undef KERN_PROC
-#define KERN_PROC KERN_PROC2
-#define kinfo_proc kinfo_proc2
-#endif
-
-#if GTEST_OS_DRAGONFLY
-#define KP_NLWP(kp) (kp.kp_nthreads)
-#elif GTEST_OS_FREEBSD || GTEST_OS_GNU_KFREEBSD
-#define KP_NLWP(kp) (kp.ki_numthreads)
-#elif GTEST_OS_NETBSD
-#define KP_NLWP(kp) (kp.p_nlwps)
-#endif
-
-// Returns the number of threads running in the process, or 0 to indicate that
-// we cannot detect it.
-size_t GetThreadCount() {
- int mib[] = {
- CTL_KERN,
- KERN_PROC,
- KERN_PROC_PID,
- getpid(),
-#if GTEST_OS_NETBSD
- sizeof(struct kinfo_proc),
- 1,
-#endif
- };
- u_int miblen = sizeof(mib) / sizeof(mib[0]);
- struct kinfo_proc info;
- size_t size = sizeof(info);
- if (sysctl(mib, miblen, &info, &size, NULL, 0)) {
- return 0;
- }
- return static_cast<size_t>(KP_NLWP(info));
-}
-#elif GTEST_OS_OPENBSD
-
-// Returns the number of threads running in the process, or 0 to indicate that
-// we cannot detect it.
-size_t GetThreadCount() {
- int mib[] = {
- CTL_KERN,
- KERN_PROC,
- KERN_PROC_PID | KERN_PROC_SHOW_THREADS,
- getpid(),
- sizeof(struct kinfo_proc),
- 0,
- };
- u_int miblen = sizeof(mib) / sizeof(mib[0]);
-
- // get number of structs
- size_t size;
- if (sysctl(mib, miblen, NULL, &size, NULL, 0)) {
- return 0;
- }
- mib[5] = size / mib[4];
-
- // populate array of structs
- struct kinfo_proc info[mib[5]];
- if (sysctl(mib, miblen, &info, &size, NULL, 0)) {
- return 0;
- }
-
- // exclude empty members
- int nthreads = 0;
- for (int i = 0; i < size / mib[4]; i++) {
- if (info[i].p_tid != -1)
- nthreads++;
- }
- return nthreads;
-}
-
-#elif GTEST_OS_QNX
-
-// Returns the number of threads running in the process, or 0 to indicate that
-// we cannot detect it.
-size_t GetThreadCount() {
- const int fd = open("/proc/self/as", O_RDONLY);
- if (fd < 0) {
- return 0;
- }
- procfs_info process_info;
- const int status =
- devctl(fd, DCMD_PROC_INFO, &process_info, sizeof(process_info), nullptr);
- close(fd);
- if (status == EOK) {
- return static_cast<size_t>(process_info.num_threads);
- } else {
- return 0;
- }
-}
-
-#elif GTEST_OS_AIX
-
-size_t GetThreadCount() {
- struct procentry64 entry;
- pid_t pid = getpid();
- int status = getprocs64(&entry, sizeof(entry), nullptr, 0, &pid, 1);
- if (status == 1) {
- return entry.pi_thcount;
- } else {
- return 0;
- }
-}
-
-#elif GTEST_OS_FUCHSIA
-
-size_t GetThreadCount() {
- int dummy_buffer;
- size_t avail;
- zx_status_t status = zx_object_get_info(
- zx_process_self(),
- ZX_INFO_PROCESS_THREADS,
- &dummy_buffer,
- 0,
- nullptr,
- &avail);
- if (status == ZX_OK) {
- return avail;
- } else {
- return 0;
- }
-}
-
-#else
-
-size_t GetThreadCount() {
- // There's no portable way to detect the number of threads, so we just
- // return 0 to indicate that we cannot detect it.
- return 0;
-}
-
-#endif // GTEST_OS_LINUX
-
-#if GTEST_IS_THREADSAFE && GTEST_OS_WINDOWS
-
-void SleepMilliseconds(int n) {
- ::Sleep(static_cast<DWORD>(n));
-}
-
-AutoHandle::AutoHandle()
- : handle_(INVALID_HANDLE_VALUE) {}
-
-AutoHandle::AutoHandle(Handle handle)
- : handle_(handle) {}
-
-AutoHandle::~AutoHandle() {
- Reset();
-}
-
-AutoHandle::Handle AutoHandle::Get() const {
- return handle_;
-}
-
-void AutoHandle::Reset() {
- Reset(INVALID_HANDLE_VALUE);
-}
-
-void AutoHandle::Reset(HANDLE handle) {
- // Resetting with the same handle we already own is invalid.
- if (handle_ != handle) {
- if (IsCloseable()) {
- ::CloseHandle(handle_);
- }
- handle_ = handle;
- } else {
- GTEST_CHECK_(!IsCloseable())
- << "Resetting a valid handle to itself is likely a programmer error "
- "and thus not allowed.";
- }
-}
-
-bool AutoHandle::IsCloseable() const {
- // Different Windows APIs may use either of these values to represent an
- // invalid handle.
- return handle_ != nullptr && handle_ != INVALID_HANDLE_VALUE;
-}
-
-Notification::Notification()
- : event_(::CreateEvent(nullptr, // Default security attributes.
- TRUE, // Do not reset automatically.
- FALSE, // Initially unset.
- nullptr)) { // Anonymous event.
- GTEST_CHECK_(event_.Get() != nullptr);
-}
-
-void Notification::Notify() {
- GTEST_CHECK_(::SetEvent(event_.Get()) != FALSE);
-}
-
-void Notification::WaitForNotification() {
- GTEST_CHECK_(
- ::WaitForSingleObject(event_.Get(), INFINITE) == WAIT_OBJECT_0);
-}
-
-Mutex::Mutex()
- : owner_thread_id_(0),
- type_(kDynamic),
- critical_section_init_phase_(0),
- critical_section_(new CRITICAL_SECTION) {
- ::InitializeCriticalSection(critical_section_);
-}
-
-Mutex::~Mutex() {
- // Static mutexes are leaked intentionally. It is not thread-safe to try
- // to clean them up.
- if (type_ == kDynamic) {
- ::DeleteCriticalSection(critical_section_);
- delete critical_section_;
- critical_section_ = nullptr;
- }
-}
-
-void Mutex::Lock() {
- ThreadSafeLazyInit();
- ::EnterCriticalSection(critical_section_);
- owner_thread_id_ = ::GetCurrentThreadId();
-}
-
-void Mutex::Unlock() {
- ThreadSafeLazyInit();
- // We don't protect writing to owner_thread_id_ here, as it's the
- // caller's responsibility to ensure that the current thread holds the
- // mutex when this is called.
- owner_thread_id_ = 0;
- ::LeaveCriticalSection(critical_section_);
-}
-
-// Does nothing if the current thread holds the mutex. Otherwise, crashes
-// with high probability.
-void Mutex::AssertHeld() {
- ThreadSafeLazyInit();
- GTEST_CHECK_(owner_thread_id_ == ::GetCurrentThreadId())
- << "The current thread is not holding the mutex @" << this;
-}
-
-namespace {
-
-#ifdef _MSC_VER
-// Use the RAII idiom to flag mem allocs that are intentionally never
-// deallocated. The motivation is to silence the false positive mem leaks
-// that are reported by the debug version of MS's CRT which can only detect
-// if an alloc is missing a matching deallocation.
-// Example:
-// MemoryIsNotDeallocated memory_is_not_deallocated;
-// critical_section_ = new CRITICAL_SECTION;
-//
-class MemoryIsNotDeallocated
-{
- public:
- MemoryIsNotDeallocated() : old_crtdbg_flag_(0) {
- old_crtdbg_flag_ = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
- // Set heap allocation block type to _IGNORE_BLOCK so that MS debug CRT
- // doesn't report mem leak if there's no matching deallocation.
- _CrtSetDbgFlag(old_crtdbg_flag_ & ~_CRTDBG_ALLOC_MEM_DF);
- }
-
- ~MemoryIsNotDeallocated() {
- // Restore the original _CRTDBG_ALLOC_MEM_DF flag
- _CrtSetDbgFlag(old_crtdbg_flag_);
- }
-
- private:
- int old_crtdbg_flag_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(MemoryIsNotDeallocated);
-};
-#endif // _MSC_VER
-
-} // namespace
-
-// Initializes owner_thread_id_ and critical_section_ in static mutexes.
-void Mutex::ThreadSafeLazyInit() {
- // Dynamic mutexes are initialized in the constructor.
- if (type_ == kStatic) {
- switch (
- ::InterlockedCompareExchange(&critical_section_init_phase_, 1L, 0L)) {
- case 0:
- // If critical_section_init_phase_ was 0 before the exchange, we
- // are the first to test it and need to perform the initialization.
- owner_thread_id_ = 0;
- {
- // Use RAII to flag that following mem alloc is never deallocated.
-#ifdef _MSC_VER
- MemoryIsNotDeallocated memory_is_not_deallocated;
-#endif // _MSC_VER
- critical_section_ = new CRITICAL_SECTION;
- }
- ::InitializeCriticalSection(critical_section_);
- // Updates the critical_section_init_phase_ to 2 to signal
- // initialization complete.
- GTEST_CHECK_(::InterlockedCompareExchange(
- &critical_section_init_phase_, 2L, 1L) ==
- 1L);
- break;
- case 1:
- // Somebody else is already initializing the mutex; spin until they
- // are done.
- while (::InterlockedCompareExchange(&critical_section_init_phase_,
- 2L,
- 2L) != 2L) {
- // Possibly yields the rest of the thread's time slice to other
- // threads.
- ::Sleep(0);
- }
- break;
-
- case 2:
- break; // The mutex is already initialized and ready for use.
-
- default:
- GTEST_CHECK_(false)
- << "Unexpected value of critical_section_init_phase_ "
- << "while initializing a static mutex.";
- }
- }
-}
-
-namespace {
-
-class ThreadWithParamSupport : public ThreadWithParamBase {
- public:
- static HANDLE CreateThread(Runnable* runnable,
- Notification* thread_can_start) {
- ThreadMainParam* param = new ThreadMainParam(runnable, thread_can_start);
- DWORD thread_id;
- HANDLE thread_handle = ::CreateThread(
- nullptr, // Default security.
- 0, // Default stack size.
- &ThreadWithParamSupport::ThreadMain,
- param, // Parameter to ThreadMainStatic
- 0x0, // Default creation flags.
- &thread_id); // Need a valid pointer for the call to work under Win98.
- GTEST_CHECK_(thread_handle != nullptr)
- << "CreateThread failed with error " << ::GetLastError() << ".";
- if (thread_handle == nullptr) {
- delete param;
- }
- return thread_handle;
- }
-
- private:
- struct ThreadMainParam {
- ThreadMainParam(Runnable* runnable, Notification* thread_can_start)
- : runnable_(runnable),
- thread_can_start_(thread_can_start) {
- }
- std::unique_ptr<Runnable> runnable_;
- // Does not own.
- Notification* thread_can_start_;
- };
-
- static DWORD WINAPI ThreadMain(void* ptr) {
- // Transfers ownership.
- std::unique_ptr<ThreadMainParam> param(static_cast<ThreadMainParam*>(ptr));
- if (param->thread_can_start_ != nullptr)
- param->thread_can_start_->WaitForNotification();
- param->runnable_->Run();
- return 0;
- }
-
- // Prohibit instantiation.
- ThreadWithParamSupport();
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParamSupport);
-};
-
-} // namespace
-
-ThreadWithParamBase::ThreadWithParamBase(Runnable *runnable,
- Notification* thread_can_start)
- : thread_(ThreadWithParamSupport::CreateThread(runnable,
- thread_can_start)) {
-}
-
-ThreadWithParamBase::~ThreadWithParamBase() {
- Join();
-}
-
-void ThreadWithParamBase::Join() {
- GTEST_CHECK_(::WaitForSingleObject(thread_.Get(), INFINITE) == WAIT_OBJECT_0)
- << "Failed to join the thread with error " << ::GetLastError() << ".";
-}
-
-// Maps a thread to a set of ThreadIdToThreadLocals that have values
-// instantiated on that thread and notifies them when the thread exits. A
-// ThreadLocal instance is expected to persist until all threads it has
-// values on have terminated.
-class ThreadLocalRegistryImpl {
- public:
- // Registers thread_local_instance as having value on the current thread.
- // Returns a value that can be used to identify the thread from other threads.
- static ThreadLocalValueHolderBase* GetValueOnCurrentThread(
- const ThreadLocalBase* thread_local_instance) {
- DWORD current_thread = ::GetCurrentThreadId();
- MutexLock lock(&mutex_);
- ThreadIdToThreadLocals* const thread_to_thread_locals =
- GetThreadLocalsMapLocked();
- ThreadIdToThreadLocals::iterator thread_local_pos =
- thread_to_thread_locals->find(current_thread);
- if (thread_local_pos == thread_to_thread_locals->end()) {
- thread_local_pos = thread_to_thread_locals->insert(
- std::make_pair(current_thread, ThreadLocalValues())).first;
- StartWatcherThreadFor(current_thread);
- }
- ThreadLocalValues& thread_local_values = thread_local_pos->second;
- ThreadLocalValues::iterator value_pos =
- thread_local_values.find(thread_local_instance);
- if (value_pos == thread_local_values.end()) {
- value_pos =
- thread_local_values
- .insert(std::make_pair(
- thread_local_instance,
- std::shared_ptr<ThreadLocalValueHolderBase>(
- thread_local_instance->NewValueForCurrentThread())))
- .first;
- }
- return value_pos->second.get();
- }
-
- static void OnThreadLocalDestroyed(
- const ThreadLocalBase* thread_local_instance) {
- std::vector<std::shared_ptr<ThreadLocalValueHolderBase> > value_holders;
- // Clean up the ThreadLocalValues data structure while holding the lock, but
- // defer the destruction of the ThreadLocalValueHolderBases.
- {
- MutexLock lock(&mutex_);
- ThreadIdToThreadLocals* const thread_to_thread_locals =
- GetThreadLocalsMapLocked();
- for (ThreadIdToThreadLocals::iterator it =
- thread_to_thread_locals->begin();
- it != thread_to_thread_locals->end();
- ++it) {
- ThreadLocalValues& thread_local_values = it->second;
- ThreadLocalValues::iterator value_pos =
- thread_local_values.find(thread_local_instance);
- if (value_pos != thread_local_values.end()) {
- value_holders.push_back(value_pos->second);
- thread_local_values.erase(value_pos);
- // This 'if' can only be successful at most once, so theoretically we
- // could break out of the loop here, but we don't bother doing so.
- }
- }
- }
- // Outside the lock, let the destructor for 'value_holders' deallocate the
- // ThreadLocalValueHolderBases.
- }
-
- static void OnThreadExit(DWORD thread_id) {
- GTEST_CHECK_(thread_id != 0) << ::GetLastError();
- std::vector<std::shared_ptr<ThreadLocalValueHolderBase> > value_holders;
- // Clean up the ThreadIdToThreadLocals data structure while holding the
- // lock, but defer the destruction of the ThreadLocalValueHolderBases.
- {
- MutexLock lock(&mutex_);
- ThreadIdToThreadLocals* const thread_to_thread_locals =
- GetThreadLocalsMapLocked();
- ThreadIdToThreadLocals::iterator thread_local_pos =
- thread_to_thread_locals->find(thread_id);
- if (thread_local_pos != thread_to_thread_locals->end()) {
- ThreadLocalValues& thread_local_values = thread_local_pos->second;
- for (ThreadLocalValues::iterator value_pos =
- thread_local_values.begin();
- value_pos != thread_local_values.end();
- ++value_pos) {
- value_holders.push_back(value_pos->second);
- }
- thread_to_thread_locals->erase(thread_local_pos);
- }
- }
- // Outside the lock, let the destructor for 'value_holders' deallocate the
- // ThreadLocalValueHolderBases.
- }
-
- private:
- // In a particular thread, maps a ThreadLocal object to its value.
- typedef std::map<const ThreadLocalBase*,
- std::shared_ptr<ThreadLocalValueHolderBase> >
- ThreadLocalValues;
- // Stores all ThreadIdToThreadLocals having values in a thread, indexed by
- // thread's ID.
- typedef std::map<DWORD, ThreadLocalValues> ThreadIdToThreadLocals;
-
- // Holds the thread id and thread handle that we pass from
- // StartWatcherThreadFor to WatcherThreadFunc.
- typedef std::pair<DWORD, HANDLE> ThreadIdAndHandle;
-
- static void StartWatcherThreadFor(DWORD thread_id) {
- // The returned handle will be kept in thread_map and closed by
- // watcher_thread in WatcherThreadFunc.
- HANDLE thread = ::OpenThread(SYNCHRONIZE | THREAD_QUERY_INFORMATION,
- FALSE,
- thread_id);
- GTEST_CHECK_(thread != nullptr);
- // We need to pass a valid thread ID pointer into CreateThread for it
- // to work correctly under Win98.
- DWORD watcher_thread_id;
- HANDLE watcher_thread = ::CreateThread(
- nullptr, // Default security.
- 0, // Default stack size
- &ThreadLocalRegistryImpl::WatcherThreadFunc,
- reinterpret_cast<LPVOID>(new ThreadIdAndHandle(thread_id, thread)),
- CREATE_SUSPENDED, &watcher_thread_id);
- GTEST_CHECK_(watcher_thread != nullptr);
- // Give the watcher thread the same priority as ours to avoid being
- // blocked by it.
- ::SetThreadPriority(watcher_thread,
- ::GetThreadPriority(::GetCurrentThread()));
- ::ResumeThread(watcher_thread);
- ::CloseHandle(watcher_thread);
- }
-
- // Monitors exit from a given thread and notifies those
- // ThreadIdToThreadLocals about thread termination.
- static DWORD WINAPI WatcherThreadFunc(LPVOID param) {
- const ThreadIdAndHandle* tah =
- reinterpret_cast<const ThreadIdAndHandle*>(param);
- GTEST_CHECK_(
- ::WaitForSingleObject(tah->second, INFINITE) == WAIT_OBJECT_0);
- OnThreadExit(tah->first);
- ::CloseHandle(tah->second);
- delete tah;
- return 0;
- }
-
- // Returns map of thread local instances.
- static ThreadIdToThreadLocals* GetThreadLocalsMapLocked() {
- mutex_.AssertHeld();
-#ifdef _MSC_VER
- MemoryIsNotDeallocated memory_is_not_deallocated;
-#endif // _MSC_VER
- static ThreadIdToThreadLocals* map = new ThreadIdToThreadLocals();
- return map;
- }
-
- // Protects access to GetThreadLocalsMapLocked() and its return value.
- static Mutex mutex_;
- // Protects access to GetThreadMapLocked() and its return value.
- static Mutex thread_map_mutex_;
-};
-
-Mutex ThreadLocalRegistryImpl::mutex_(Mutex::kStaticMutex);
-Mutex ThreadLocalRegistryImpl::thread_map_mutex_(Mutex::kStaticMutex);
-
-ThreadLocalValueHolderBase* ThreadLocalRegistry::GetValueOnCurrentThread(
- const ThreadLocalBase* thread_local_instance) {
- return ThreadLocalRegistryImpl::GetValueOnCurrentThread(
- thread_local_instance);
-}
-
-void ThreadLocalRegistry::OnThreadLocalDestroyed(
- const ThreadLocalBase* thread_local_instance) {
- ThreadLocalRegistryImpl::OnThreadLocalDestroyed(thread_local_instance);
-}
-
-#endif // GTEST_IS_THREADSAFE && GTEST_OS_WINDOWS
-
-#if GTEST_USES_POSIX_RE
-
-// Implements RE. Currently only needed for death tests.
-
-RE::~RE() {
- if (is_valid_) {
- // regfree'ing an invalid regex might crash because the content
- // of the regex is undefined. Since the regex's are essentially
- // the same, one cannot be valid (or invalid) without the other
- // being so too.
- regfree(&partial_regex_);
- regfree(&full_regex_);
- }
- free(const_cast<char*>(pattern_));
-}
-
-// Returns true if and only if regular expression re matches the entire str.
-bool RE::FullMatch(const char* str, const RE& re) {
- if (!re.is_valid_) return false;
-
- regmatch_t match;
- return regexec(&re.full_regex_, str, 1, &match, 0) == 0;
-}
-
-// Returns true if and only if regular expression re matches a substring of
-// str (including str itself).
-bool RE::PartialMatch(const char* str, const RE& re) {
- if (!re.is_valid_) return false;
-
- regmatch_t match;
- return regexec(&re.partial_regex_, str, 1, &match, 0) == 0;
-}
-
-// Initializes an RE from its string representation.
-void RE::Init(const char* regex) {
- pattern_ = posix::StrDup(regex);
-
- // Reserves enough bytes to hold the regular expression used for a
- // full match.
- const size_t full_regex_len = strlen(regex) + 10;
- char* const full_pattern = new char[full_regex_len];
-
- snprintf(full_pattern, full_regex_len, "^(%s)$", regex);
- is_valid_ = regcomp(&full_regex_, full_pattern, REG_EXTENDED) == 0;
- // We want to call regcomp(&partial_regex_, ...) even if the
- // previous expression returns false. Otherwise partial_regex_ may
- // not be properly initialized can may cause trouble when it's
- // freed.
- //
- // Some implementation of POSIX regex (e.g. on at least some
- // versions of Cygwin) doesn't accept the empty string as a valid
- // regex. We change it to an equivalent form "()" to be safe.
- if (is_valid_) {
- const char* const partial_regex = (*regex == '\0') ? "()" : regex;
- is_valid_ = regcomp(&partial_regex_, partial_regex, REG_EXTENDED) == 0;
- }
- EXPECT_TRUE(is_valid_)
- << "Regular expression \"" << regex
- << "\" is not a valid POSIX Extended regular expression.";
-
- delete[] full_pattern;
-}
-
-#elif GTEST_USES_SIMPLE_RE
-
-// Returns true if and only if ch appears anywhere in str (excluding the
-// terminating '\0' character).
-bool IsInSet(char ch, const char* str) {
- return ch != '\0' && strchr(str, ch) != nullptr;
-}
-
-// Returns true if and only if ch belongs to the given classification.
-// Unlike similar functions in <ctype.h>, these aren't affected by the
-// current locale.
-bool IsAsciiDigit(char ch) { return '0' <= ch && ch <= '9'; }
-bool IsAsciiPunct(char ch) {
- return IsInSet(ch, "^-!\"#$%&'()*+,./:;<=>?@[\\]_`{|}~");
-}
-bool IsRepeat(char ch) { return IsInSet(ch, "?*+"); }
-bool IsAsciiWhiteSpace(char ch) { return IsInSet(ch, " \f\n\r\t\v"); }
-bool IsAsciiWordChar(char ch) {
- return ('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z') ||
- ('0' <= ch && ch <= '9') || ch == '_';
-}
-
-// Returns true if and only if "\\c" is a supported escape sequence.
-bool IsValidEscape(char c) {
- return (IsAsciiPunct(c) || IsInSet(c, "dDfnrsStvwW"));
-}
-
-// Returns true if and only if the given atom (specified by escaped and
-// pattern) matches ch. The result is undefined if the atom is invalid.
-bool AtomMatchesChar(bool escaped, char pattern_char, char ch) {
- if (escaped) { // "\\p" where p is pattern_char.
- switch (pattern_char) {
- case 'd': return IsAsciiDigit(ch);
- case 'D': return !IsAsciiDigit(ch);
- case 'f': return ch == '\f';
- case 'n': return ch == '\n';
- case 'r': return ch == '\r';
- case 's': return IsAsciiWhiteSpace(ch);
- case 'S': return !IsAsciiWhiteSpace(ch);
- case 't': return ch == '\t';
- case 'v': return ch == '\v';
- case 'w': return IsAsciiWordChar(ch);
- case 'W': return !IsAsciiWordChar(ch);
- }
- return IsAsciiPunct(pattern_char) && pattern_char == ch;
- }
-
- return (pattern_char == '.' && ch != '\n') || pattern_char == ch;
-}
-
-// Helper function used by ValidateRegex() to format error messages.
-static std::string FormatRegexSyntaxError(const char* regex, int index) {
- return (Message() << "Syntax error at index " << index
- << " in simple regular expression \"" << regex << "\": ").GetString();
-}
-
-// Generates non-fatal failures and returns false if regex is invalid;
-// otherwise returns true.
-bool ValidateRegex(const char* regex) {
- if (regex == nullptr) {
- ADD_FAILURE() << "NULL is not a valid simple regular expression.";
- return false;
- }
-
- bool is_valid = true;
-
- // True if and only if ?, *, or + can follow the previous atom.
- bool prev_repeatable = false;
- for (int i = 0; regex[i]; i++) {
- if (regex[i] == '\\') { // An escape sequence
- i++;
- if (regex[i] == '\0') {
- ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1)
- << "'\\' cannot appear at the end.";
- return false;
- }
-
- if (!IsValidEscape(regex[i])) {
- ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1)
- << "invalid escape sequence \"\\" << regex[i] << "\".";
- is_valid = false;
- }
- prev_repeatable = true;
- } else { // Not an escape sequence.
- const char ch = regex[i];
-
- if (ch == '^' && i > 0) {
- ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
- << "'^' can only appear at the beginning.";
- is_valid = false;
- } else if (ch == '$' && regex[i + 1] != '\0') {
- ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
- << "'$' can only appear at the end.";
- is_valid = false;
- } else if (IsInSet(ch, "()[]{}|")) {
- ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
- << "'" << ch << "' is unsupported.";
- is_valid = false;
- } else if (IsRepeat(ch) && !prev_repeatable) {
- ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
- << "'" << ch << "' can only follow a repeatable token.";
- is_valid = false;
- }
-
- prev_repeatable = !IsInSet(ch, "^$?*+");
- }
- }
-
- return is_valid;
-}
-
-// Matches a repeated regex atom followed by a valid simple regular
-// expression. The regex atom is defined as c if escaped is false,
-// or \c otherwise. repeat is the repetition meta character (?, *,
-// or +). The behavior is undefined if str contains too many
-// characters to be indexable by size_t, in which case the test will
-// probably time out anyway. We are fine with this limitation as
-// std::string has it too.
-bool MatchRepetitionAndRegexAtHead(
- bool escaped, char c, char repeat, const char* regex,
- const char* str) {
- const size_t min_count = (repeat == '+') ? 1 : 0;
- const size_t max_count = (repeat == '?') ? 1 :
- static_cast<size_t>(-1) - 1;
- // We cannot call numeric_limits::max() as it conflicts with the
- // max() macro on Windows.
-
- for (size_t i = 0; i <= max_count; ++i) {
- // We know that the atom matches each of the first i characters in str.
- if (i >= min_count && MatchRegexAtHead(regex, str + i)) {
- // We have enough matches at the head, and the tail matches too.
- // Since we only care about *whether* the pattern matches str
- // (as opposed to *how* it matches), there is no need to find a
- // greedy match.
- return true;
- }
- if (str[i] == '\0' || !AtomMatchesChar(escaped, c, str[i]))
- return false;
- }
- return false;
-}
-
-// Returns true if and only if regex matches a prefix of str. regex must
-// be a valid simple regular expression and not start with "^", or the
-// result is undefined.
-bool MatchRegexAtHead(const char* regex, const char* str) {
- if (*regex == '\0') // An empty regex matches a prefix of anything.
- return true;
-
- // "$" only matches the end of a string. Note that regex being
- // valid guarantees that there's nothing after "$" in it.
- if (*regex == '$')
- return *str == '\0';
-
- // Is the first thing in regex an escape sequence?
- const bool escaped = *regex == '\\';
- if (escaped)
- ++regex;
- if (IsRepeat(regex[1])) {
- // MatchRepetitionAndRegexAtHead() calls MatchRegexAtHead(), so
- // here's an indirect recursion. It terminates as the regex gets
- // shorter in each recursion.
- return MatchRepetitionAndRegexAtHead(
- escaped, regex[0], regex[1], regex + 2, str);
- } else {
- // regex isn't empty, isn't "$", and doesn't start with a
- // repetition. We match the first atom of regex with the first
- // character of str and recurse.
- return (*str != '\0') && AtomMatchesChar(escaped, *regex, *str) &&
- MatchRegexAtHead(regex + 1, str + 1);
- }
-}
-
-// Returns true if and only if regex matches any substring of str. regex must
-// be a valid simple regular expression, or the result is undefined.
-//
-// The algorithm is recursive, but the recursion depth doesn't exceed
-// the regex length, so we won't need to worry about running out of
-// stack space normally. In rare cases the time complexity can be
-// exponential with respect to the regex length + the string length,
-// but usually it's must faster (often close to linear).
-bool MatchRegexAnywhere(const char* regex, const char* str) {
- if (regex == nullptr || str == nullptr) return false;
-
- if (*regex == '^')
- return MatchRegexAtHead(regex + 1, str);
-
- // A successful match can be anywhere in str.
- do {
- if (MatchRegexAtHead(regex, str))
- return true;
- } while (*str++ != '\0');
- return false;
-}
-
-// Implements the RE class.
-
-RE::~RE() {
- free(const_cast<char*>(pattern_));
- free(const_cast<char*>(full_pattern_));
-}
-
-// Returns true if and only if regular expression re matches the entire str.
-bool RE::FullMatch(const char* str, const RE& re) {
- return re.is_valid_ && MatchRegexAnywhere(re.full_pattern_, str);
-}
-
-// Returns true if and only if regular expression re matches a substring of
-// str (including str itself).
-bool RE::PartialMatch(const char* str, const RE& re) {
- return re.is_valid_ && MatchRegexAnywhere(re.pattern_, str);
-}
-
-// Initializes an RE from its string representation.
-void RE::Init(const char* regex) {
- pattern_ = full_pattern_ = nullptr;
- if (regex != nullptr) {
- pattern_ = posix::StrDup(regex);
- }
-
- is_valid_ = ValidateRegex(regex);
- if (!is_valid_) {
- // No need to calculate the full pattern when the regex is invalid.
- return;
- }
-
- const size_t len = strlen(regex);
- // Reserves enough bytes to hold the regular expression used for a
- // full match: we need space to prepend a '^', append a '$', and
- // terminate the string with '\0'.
- char* buffer = static_cast<char*>(malloc(len + 3));
- full_pattern_ = buffer;
-
- if (*regex != '^')
- *buffer++ = '^'; // Makes sure full_pattern_ starts with '^'.
-
- // We don't use snprintf or strncpy, as they trigger a warning when
- // compiled with VC++ 8.0.
- memcpy(buffer, regex, len);
- buffer += len;
-
- if (len == 0 || regex[len - 1] != '$')
- *buffer++ = '$'; // Makes sure full_pattern_ ends with '$'.
-
- *buffer = '\0';
-}
-
-#endif // GTEST_USES_POSIX_RE
-
-const char kUnknownFile[] = "unknown file";
-
-// Formats a source file path and a line number as they would appear
-// in an error message from the compiler used to compile this code.
-GTEST_API_ ::std::string FormatFileLocation(const char* file, int line) {
- const std::string file_name(file == nullptr ? kUnknownFile : file);
-
- if (line < 0) {
- return file_name + ":";
- }
-#ifdef _MSC_VER
- return file_name + "(" + StreamableToString(line) + "):";
-#else
- return file_name + ":" + StreamableToString(line) + ":";
-#endif // _MSC_VER
-}
-
-// Formats a file location for compiler-independent XML output.
-// Although this function is not platform dependent, we put it next to
-// FormatFileLocation in order to contrast the two functions.
-// Note that FormatCompilerIndependentFileLocation() does NOT append colon
-// to the file location it produces, unlike FormatFileLocation().
-GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(
- const char* file, int line) {
- const std::string file_name(file == nullptr ? kUnknownFile : file);
-
- if (line < 0)
- return file_name;
- else
- return file_name + ":" + StreamableToString(line);
-}
-
-GTestLog::GTestLog(GTestLogSeverity severity, const char* file, int line)
- : severity_(severity) {
- const char* const marker =
- severity == GTEST_INFO ? "[ INFO ]" :
- severity == GTEST_WARNING ? "[WARNING]" :
- severity == GTEST_ERROR ? "[ ERROR ]" : "[ FATAL ]";
- GetStream() << ::std::endl << marker << " "
- << FormatFileLocation(file, line).c_str() << ": ";
-}
-
-// Flushes the buffers and, if severity is GTEST_FATAL, aborts the program.
-GTestLog::~GTestLog() {
- GetStream() << ::std::endl;
- if (severity_ == GTEST_FATAL) {
- fflush(stderr);
- posix::Abort();
- }
-}
-
-// Disable Microsoft deprecation warnings for POSIX functions called from
-// this class (creat, dup, dup2, and close)
-GTEST_DISABLE_MSC_DEPRECATED_PUSH_()
-
-#if GTEST_HAS_STREAM_REDIRECTION
-
-// Object that captures an output stream (stdout/stderr).
-class CapturedStream {
- public:
- // The ctor redirects the stream to a temporary file.
- explicit CapturedStream(int fd) : fd_(fd), uncaptured_fd_(dup(fd)) {
-# if GTEST_OS_WINDOWS
- char temp_dir_path[MAX_PATH + 1] = { '\0' }; // NOLINT
- char temp_file_path[MAX_PATH + 1] = { '\0' }; // NOLINT
-
- ::GetTempPathA(sizeof(temp_dir_path), temp_dir_path);
- const UINT success = ::GetTempFileNameA(temp_dir_path,
- "gtest_redir",
- 0, // Generate unique file name.
- temp_file_path);
- GTEST_CHECK_(success != 0)
- << "Unable to create a temporary file in " << temp_dir_path;
- const int captured_fd = creat(temp_file_path, _S_IREAD | _S_IWRITE);
- GTEST_CHECK_(captured_fd != -1) << "Unable to open temporary file "
- << temp_file_path;
- filename_ = temp_file_path;
-# else
- // There's no guarantee that a test has write access to the current
- // directory, so we create the temporary file in the /tmp directory
- // instead. We use /tmp on most systems, and /sdcard on Android.
- // That's because Android doesn't have /tmp.
-# if GTEST_OS_LINUX_ANDROID
- // Note: Android applications are expected to call the framework's
- // Context.getExternalStorageDirectory() method through JNI to get
- // the location of the world-writable SD Card directory. However,
- // this requires a Context handle, which cannot be retrieved
- // globally from native code. Doing so also precludes running the
- // code as part of a regular standalone executable, which doesn't
- // run in a Dalvik process (e.g. when running it through 'adb shell').
- //
- // The location /data/local/tmp is directly accessible from native code.
- // '/sdcard' and other variants cannot be relied on, as they are not
- // guaranteed to be mounted, or may have a delay in mounting.
- char name_template[] = "/data/local/tmp/gtest_captured_stream.XXXXXX";
-# else
- char name_template[] = "/tmp/captured_stream.XXXXXX";
-# endif // GTEST_OS_LINUX_ANDROID
- const int captured_fd = mkstemp(name_template);
- if (captured_fd == -1) {
- GTEST_LOG_(WARNING)
- << "Failed to create tmp file " << name_template
- << " for test; does the test have access to the /tmp directory?";
- }
- filename_ = name_template;
-# endif // GTEST_OS_WINDOWS
- fflush(nullptr);
- dup2(captured_fd, fd_);
- close(captured_fd);
- }
-
- ~CapturedStream() {
- remove(filename_.c_str());
- }
-
- std::string GetCapturedString() {
- if (uncaptured_fd_ != -1) {
- // Restores the original stream.
- fflush(nullptr);
- dup2(uncaptured_fd_, fd_);
- close(uncaptured_fd_);
- uncaptured_fd_ = -1;
- }
-
- FILE* const file = posix::FOpen(filename_.c_str(), "r");
- if (file == nullptr) {
- GTEST_LOG_(FATAL) << "Failed to open tmp file " << filename_
- << " for capturing stream.";
- }
- const std::string content = ReadEntireFile(file);
- posix::FClose(file);
- return content;
- }
-
- private:
- const int fd_; // A stream to capture.
- int uncaptured_fd_;
- // Name of the temporary file holding the stderr output.
- ::std::string filename_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(CapturedStream);
-};
-
-GTEST_DISABLE_MSC_DEPRECATED_POP_()
-
-static CapturedStream* g_captured_stderr = nullptr;
-static CapturedStream* g_captured_stdout = nullptr;
-
-// Starts capturing an output stream (stdout/stderr).
-static void CaptureStream(int fd, const char* stream_name,
- CapturedStream** stream) {
- if (*stream != nullptr) {
- GTEST_LOG_(FATAL) << "Only one " << stream_name
- << " capturer can exist at a time.";
- }
- *stream = new CapturedStream(fd);
-}
-
-// Stops capturing the output stream and returns the captured string.
-static std::string GetCapturedStream(CapturedStream** captured_stream) {
- const std::string content = (*captured_stream)->GetCapturedString();
-
- delete *captured_stream;
- *captured_stream = nullptr;
-
- return content;
-}
-
-// Starts capturing stdout.
-void CaptureStdout() {
- CaptureStream(kStdOutFileno, "stdout", &g_captured_stdout);
-}
-
-// Starts capturing stderr.
-void CaptureStderr() {
- CaptureStream(kStdErrFileno, "stderr", &g_captured_stderr);
-}
-
-// Stops capturing stdout and returns the captured string.
-std::string GetCapturedStdout() {
- return GetCapturedStream(&g_captured_stdout);
-}
-
-// Stops capturing stderr and returns the captured string.
-std::string GetCapturedStderr() {
- return GetCapturedStream(&g_captured_stderr);
-}
-
-#endif // GTEST_HAS_STREAM_REDIRECTION
-
-
-
-
-
-size_t GetFileSize(FILE* file) {
- fseek(file, 0, SEEK_END);
- return static_cast<size_t>(ftell(file));
-}
-
-std::string ReadEntireFile(FILE* file) {
- const size_t file_size = GetFileSize(file);
- char* const buffer = new char[file_size];
-
- size_t bytes_last_read = 0; // # of bytes read in the last fread()
- size_t bytes_read = 0; // # of bytes read so far
-
- fseek(file, 0, SEEK_SET);
-
- // Keeps reading the file until we cannot read further or the
- // pre-determined file size is reached.
- do {
- bytes_last_read = fread(buffer+bytes_read, 1, file_size-bytes_read, file);
- bytes_read += bytes_last_read;
- } while (bytes_last_read > 0 && bytes_read < file_size);
-
- const std::string content(buffer, bytes_read);
- delete[] buffer;
-
- return content;
-}
-
-#if GTEST_HAS_DEATH_TEST
-static const std::vector<std::string>* g_injected_test_argvs =
- nullptr; // Owned.
-
-std::vector<std::string> GetInjectableArgvs() {
- if (g_injected_test_argvs != nullptr) {
- return *g_injected_test_argvs;
- }
- return GetArgvs();
-}
-
-void SetInjectableArgvs(const std::vector<std::string>* new_argvs) {
- if (g_injected_test_argvs != new_argvs) delete g_injected_test_argvs;
- g_injected_test_argvs = new_argvs;
-}
-
-void SetInjectableArgvs(const std::vector<std::string>& new_argvs) {
- SetInjectableArgvs(
- new std::vector<std::string>(new_argvs.begin(), new_argvs.end()));
-}
-
-void ClearInjectableArgvs() {
- delete g_injected_test_argvs;
- g_injected_test_argvs = nullptr;
-}
-#endif // GTEST_HAS_DEATH_TEST
-
-#if GTEST_OS_WINDOWS_MOBILE
-namespace posix {
-void Abort() {
- DebugBreak();
- TerminateProcess(GetCurrentProcess(), 1);
-}
-} // namespace posix
-#endif // GTEST_OS_WINDOWS_MOBILE
-
-// Returns the name of the environment variable corresponding to the
-// given flag. For example, FlagToEnvVar("foo") will return
-// "GTEST_FOO" in the open-source version.
-static std::string FlagToEnvVar(const char* flag) {
- const std::string full_flag =
- (Message() << GTEST_FLAG_PREFIX_ << flag).GetString();
-
- Message env_var;
- for (size_t i = 0; i != full_flag.length(); i++) {
- env_var << ToUpper(full_flag.c_str()[i]);
- }
-
- return env_var.GetString();
-}
-
-// Parses 'str' for a 32-bit signed integer. If successful, writes
-// the result to *value and returns true; otherwise leaves *value
-// unchanged and returns false.
-bool ParseInt32(const Message& src_text, const char* str, Int32* value) {
- // Parses the environment variable as a decimal integer.
- char* end = nullptr;
- const long long_value = strtol(str, &end, 10); // NOLINT
-
- // Has strtol() consumed all characters in the string?
- if (*end != '\0') {
- // No - an invalid character was encountered.
- Message msg;
- msg << "WARNING: " << src_text
- << " is expected to be a 32-bit integer, but actually"
- << " has value \"" << str << "\".\n";
- printf("%s", msg.GetString().c_str());
- fflush(stdout);
- return false;
- }
-
- // Is the parsed value in the range of an Int32?
- const Int32 result = static_cast<Int32>(long_value);
- if (long_value == LONG_MAX || long_value == LONG_MIN ||
- // The parsed value overflows as a long. (strtol() returns
- // LONG_MAX or LONG_MIN when the input overflows.)
- result != long_value
- // The parsed value overflows as an Int32.
- ) {
- Message msg;
- msg << "WARNING: " << src_text
- << " is expected to be a 32-bit integer, but actually"
- << " has value " << str << ", which overflows.\n";
- printf("%s", msg.GetString().c_str());
- fflush(stdout);
- return false;
- }
-
- *value = result;
- return true;
-}
-
-// Reads and returns the Boolean environment variable corresponding to
-// the given flag; if it's not set, returns default_value.
-//
-// The value is considered true if and only if it's not "0".
-bool BoolFromGTestEnv(const char* flag, bool default_value) {
-#if defined(GTEST_GET_BOOL_FROM_ENV_)
- return GTEST_GET_BOOL_FROM_ENV_(flag, default_value);
-#else
- const std::string env_var = FlagToEnvVar(flag);
- const char* const string_value = posix::GetEnv(env_var.c_str());
- return string_value == nullptr ? default_value
- : strcmp(string_value, "0") != 0;
-#endif // defined(GTEST_GET_BOOL_FROM_ENV_)
-}
-
-// Reads and returns a 32-bit integer stored in the environment
-// variable corresponding to the given flag; if it isn't set or
-// doesn't represent a valid 32-bit integer, returns default_value.
-Int32 Int32FromGTestEnv(const char* flag, Int32 default_value) {
-#if defined(GTEST_GET_INT32_FROM_ENV_)
- return GTEST_GET_INT32_FROM_ENV_(flag, default_value);
-#else
- const std::string env_var = FlagToEnvVar(flag);
- const char* const string_value = posix::GetEnv(env_var.c_str());
- if (string_value == nullptr) {
- // The environment variable is not set.
- return default_value;
- }
-
- Int32 result = default_value;
- if (!ParseInt32(Message() << "Environment variable " << env_var,
- string_value, &result)) {
- printf("The default value %s is used.\n",
- (Message() << default_value).GetString().c_str());
- fflush(stdout);
- return default_value;
- }
-
- return result;
-#endif // defined(GTEST_GET_INT32_FROM_ENV_)
-}
-
-// As a special case for the 'output' flag, if GTEST_OUTPUT is not
-// set, we look for XML_OUTPUT_FILE, which is set by the Bazel build
-// system. The value of XML_OUTPUT_FILE is a filename without the
-// "xml:" prefix of GTEST_OUTPUT.
-// Note that this is meant to be called at the call site so it does
-// not check that the flag is 'output'
-// In essence this checks an env variable called XML_OUTPUT_FILE
-// and if it is set we prepend "xml:" to its value, if it not set we return ""
-std::string OutputFlagAlsoCheckEnvVar(){
- std::string default_value_for_output_flag = "";
- const char* xml_output_file_env = posix::GetEnv("XML_OUTPUT_FILE");
- if (nullptr != xml_output_file_env) {
- default_value_for_output_flag = std::string("xml:") + xml_output_file_env;
- }
- return default_value_for_output_flag;
-}
-
-// Reads and returns the string environment variable corresponding to
-// the given flag; if it's not set, returns default_value.
-const char* StringFromGTestEnv(const char* flag, const char* default_value) {
-#if defined(GTEST_GET_STRING_FROM_ENV_)
- return GTEST_GET_STRING_FROM_ENV_(flag, default_value);
-#else
- const std::string env_var = FlagToEnvVar(flag);
- const char* const value = posix::GetEnv(env_var.c_str());
- return value == nullptr ? default_value : value;
-#endif // defined(GTEST_GET_STRING_FROM_ENV_)
-}
-
-} // namespace internal
-} // namespace testing
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-printers.cc b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-printers.cc
deleted file mode 100644
index 3337be312ea..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-printers.cc
+++ /dev/null
@@ -1,442 +0,0 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Google Test - The Google C++ Testing and Mocking Framework
-//
-// This file implements a universal value printer that can print a
-// value of any type T:
-//
-// void ::testing::internal::UniversalPrinter<T>::Print(value, ostream_ptr);
-//
-// It uses the << operator when possible, and prints the bytes in the
-// object otherwise. A user can override its behavior for a class
-// type Foo by defining either operator<<(::std::ostream&, const Foo&)
-// or void PrintTo(const Foo&, ::std::ostream*) in the namespace that
-// defines Foo.
-
-#include "gtest/gtest-printers.h"
-#include <stdio.h>
-#include <cctype>
-#include <cwchar>
-#include <ostream> // NOLINT
-#include <string>
-#include "gtest/internal/gtest-port.h"
-#include "src/gtest-internal-inl.h"
-
-namespace testing {
-
-namespace {
-
-using ::std::ostream;
-
-// Prints a segment of bytes in the given object.
-GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
-GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
-GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
-GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
-void PrintByteSegmentInObjectTo(const unsigned char* obj_bytes, size_t start,
- size_t count, ostream* os) {
- char text[5] = "";
- for (size_t i = 0; i != count; i++) {
- const size_t j = start + i;
- if (i != 0) {
- // Organizes the bytes into groups of 2 for easy parsing by
- // human.
- if ((j % 2) == 0)
- *os << ' ';
- else
- *os << '-';
- }
- GTEST_SNPRINTF_(text, sizeof(text), "%02X", obj_bytes[j]);
- *os << text;
- }
-}
-
-// Prints the bytes in the given value to the given ostream.
-void PrintBytesInObjectToImpl(const unsigned char* obj_bytes, size_t count,
- ostream* os) {
- // Tells the user how big the object is.
- *os << count << "-byte object <";
-
- const size_t kThreshold = 132;
- const size_t kChunkSize = 64;
- // If the object size is bigger than kThreshold, we'll have to omit
- // some details by printing only the first and the last kChunkSize
- // bytes.
- if (count < kThreshold) {
- PrintByteSegmentInObjectTo(obj_bytes, 0, count, os);
- } else {
- PrintByteSegmentInObjectTo(obj_bytes, 0, kChunkSize, os);
- *os << " ... ";
- // Rounds up to 2-byte boundary.
- const size_t resume_pos = (count - kChunkSize + 1)/2*2;
- PrintByteSegmentInObjectTo(obj_bytes, resume_pos, count - resume_pos, os);
- }
- *os << ">";
-}
-
-} // namespace
-
-namespace internal2 {
-
-// Delegates to PrintBytesInObjectToImpl() to print the bytes in the
-// given object. The delegation simplifies the implementation, which
-// uses the << operator and thus is easier done outside of the
-// ::testing::internal namespace, which contains a << operator that
-// sometimes conflicts with the one in STL.
-void PrintBytesInObjectTo(const unsigned char* obj_bytes, size_t count,
- ostream* os) {
- PrintBytesInObjectToImpl(obj_bytes, count, os);
-}
-
-} // namespace internal2
-
-namespace internal {
-
-// Depending on the value of a char (or wchar_t), we print it in one
-// of three formats:
-// - as is if it's a printable ASCII (e.g. 'a', '2', ' '),
-// - as a hexadecimal escape sequence (e.g. '\x7F'), or
-// - as a special escape sequence (e.g. '\r', '\n').
-enum CharFormat {
- kAsIs,
- kHexEscape,
- kSpecialEscape
-};
-
-// Returns true if c is a printable ASCII character. We test the
-// value of c directly instead of calling isprint(), which is buggy on
-// Windows Mobile.
-inline bool IsPrintableAscii(wchar_t c) {
- return 0x20 <= c && c <= 0x7E;
-}
-
-// Prints a wide or narrow char c as a character literal without the
-// quotes, escaping it when necessary; returns how c was formatted.
-// The template argument UnsignedChar is the unsigned version of Char,
-// which is the type of c.
-template <typename UnsignedChar, typename Char>
-static CharFormat PrintAsCharLiteralTo(Char c, ostream* os) {
- wchar_t w_c = static_cast<wchar_t>(c);
- switch (w_c) {
- case L'\0':
- *os << "\\0";
- break;
- case L'\'':
- *os << "\\'";
- break;
- case L'\\':
- *os << "\\\\";
- break;
- case L'\a':
- *os << "\\a";
- break;
- case L'\b':
- *os << "\\b";
- break;
- case L'\f':
- *os << "\\f";
- break;
- case L'\n':
- *os << "\\n";
- break;
- case L'\r':
- *os << "\\r";
- break;
- case L'\t':
- *os << "\\t";
- break;
- case L'\v':
- *os << "\\v";
- break;
- default:
- if (IsPrintableAscii(w_c)) {
- *os << static_cast<char>(c);
- return kAsIs;
- } else {
- ostream::fmtflags flags = os->flags();
- *os << "\\x" << std::hex << std::uppercase
- << static_cast<int>(static_cast<UnsignedChar>(c));
- os->flags(flags);
- return kHexEscape;
- }
- }
- return kSpecialEscape;
-}
-
-// Prints a wchar_t c as if it's part of a string literal, escaping it when
-// necessary; returns how c was formatted.
-static CharFormat PrintAsStringLiteralTo(wchar_t c, ostream* os) {
- switch (c) {
- case L'\'':
- *os << "'";
- return kAsIs;
- case L'"':
- *os << "\\\"";
- return kSpecialEscape;
- default:
- return PrintAsCharLiteralTo<wchar_t>(c, os);
- }
-}
-
-// Prints a char c as if it's part of a string literal, escaping it when
-// necessary; returns how c was formatted.
-static CharFormat PrintAsStringLiteralTo(char c, ostream* os) {
- return PrintAsStringLiteralTo(
- static_cast<wchar_t>(static_cast<unsigned char>(c)), os);
-}
-
-// Prints a wide or narrow character c and its code. '\0' is printed
-// as "'\\0'", other unprintable characters are also properly escaped
-// using the standard C++ escape sequence. The template argument
-// UnsignedChar is the unsigned version of Char, which is the type of c.
-template <typename UnsignedChar, typename Char>
-void PrintCharAndCodeTo(Char c, ostream* os) {
- // First, print c as a literal in the most readable form we can find.
- *os << ((sizeof(c) > 1) ? "L'" : "'");
- const CharFormat format = PrintAsCharLiteralTo<UnsignedChar>(c, os);
- *os << "'";
-
- // To aid user debugging, we also print c's code in decimal, unless
- // it's 0 (in which case c was printed as '\\0', making the code
- // obvious).
- if (c == 0)
- return;
- *os << " (" << static_cast<int>(c);
-
- // For more convenience, we print c's code again in hexadecimal,
- // unless c was already printed in the form '\x##' or the code is in
- // [1, 9].
- if (format == kHexEscape || (1 <= c && c <= 9)) {
- // Do nothing.
- } else {
- *os << ", 0x" << String::FormatHexInt(static_cast<int>(c));
- }
- *os << ")";
-}
-
-void PrintTo(unsigned char c, ::std::ostream* os) {
- PrintCharAndCodeTo<unsigned char>(c, os);
-}
-void PrintTo(signed char c, ::std::ostream* os) {
- PrintCharAndCodeTo<unsigned char>(c, os);
-}
-
-// Prints a wchar_t as a symbol if it is printable or as its internal
-// code otherwise and also as its code. L'\0' is printed as "L'\\0'".
-void PrintTo(wchar_t wc, ostream* os) {
- PrintCharAndCodeTo<wchar_t>(wc, os);
-}
-
-// Prints the given array of characters to the ostream. CharType must be either
-// char or wchar_t.
-// The array starts at begin, the length is len, it may include '\0' characters
-// and may not be NUL-terminated.
-template <typename CharType>
-GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
-GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
-GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
-GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
-static CharFormat PrintCharsAsStringTo(
- const CharType* begin, size_t len, ostream* os) {
- const char* const kQuoteBegin = sizeof(CharType) == 1 ? "\"" : "L\"";
- *os << kQuoteBegin;
- bool is_previous_hex = false;
- CharFormat print_format = kAsIs;
- for (size_t index = 0; index < len; ++index) {
- const CharType cur = begin[index];
- if (is_previous_hex && IsXDigit(cur)) {
- // Previous character is of '\x..' form and this character can be
- // interpreted as another hexadecimal digit in its number. Break string to
- // disambiguate.
- *os << "\" " << kQuoteBegin;
- }
- is_previous_hex = PrintAsStringLiteralTo(cur, os) == kHexEscape;
- // Remember if any characters required hex escaping.
- if (is_previous_hex) {
- print_format = kHexEscape;
- }
- }
- *os << "\"";
- return print_format;
-}
-
-// Prints a (const) char/wchar_t array of 'len' elements, starting at address
-// 'begin'. CharType must be either char or wchar_t.
-template <typename CharType>
-GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
-GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
-GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
-GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
-static void UniversalPrintCharArray(
- const CharType* begin, size_t len, ostream* os) {
- // The code
- // const char kFoo[] = "foo";
- // generates an array of 4, not 3, elements, with the last one being '\0'.
- //
- // Therefore when printing a char array, we don't print the last element if
- // it's '\0', such that the output matches the string literal as it's
- // written in the source code.
- if (len > 0 && begin[len - 1] == '\0') {
- PrintCharsAsStringTo(begin, len - 1, os);
- return;
- }
-
- // If, however, the last element in the array is not '\0', e.g.
- // const char kFoo[] = { 'f', 'o', 'o' };
- // we must print the entire array. We also print a message to indicate
- // that the array is not NUL-terminated.
- PrintCharsAsStringTo(begin, len, os);
- *os << " (no terminating NUL)";
-}
-
-// Prints a (const) char array of 'len' elements, starting at address 'begin'.
-void UniversalPrintArray(const char* begin, size_t len, ostream* os) {
- UniversalPrintCharArray(begin, len, os);
-}
-
-// Prints a (const) wchar_t array of 'len' elements, starting at address
-// 'begin'.
-void UniversalPrintArray(const wchar_t* begin, size_t len, ostream* os) {
- UniversalPrintCharArray(begin, len, os);
-}
-
-// Prints the given C string to the ostream.
-void PrintTo(const char* s, ostream* os) {
- if (s == nullptr) {
- *os << "NULL";
- } else {
- *os << ImplicitCast_<const void*>(s) << " pointing to ";
- PrintCharsAsStringTo(s, strlen(s), os);
- }
-}
-
-// MSVC compiler can be configured to define whar_t as a typedef
-// of unsigned short. Defining an overload for const wchar_t* in that case
-// would cause pointers to unsigned shorts be printed as wide strings,
-// possibly accessing more memory than intended and causing invalid
-// memory accesses. MSVC defines _NATIVE_WCHAR_T_DEFINED symbol when
-// wchar_t is implemented as a native type.
-#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
-// Prints the given wide C string to the ostream.
-void PrintTo(const wchar_t* s, ostream* os) {
- if (s == nullptr) {
- *os << "NULL";
- } else {
- *os << ImplicitCast_<const void*>(s) << " pointing to ";
- PrintCharsAsStringTo(s, wcslen(s), os);
- }
-}
-#endif // wchar_t is native
-
-namespace {
-
-bool ContainsUnprintableControlCodes(const char* str, size_t length) {
- const unsigned char *s = reinterpret_cast<const unsigned char *>(str);
-
- for (size_t i = 0; i < length; i++) {
- unsigned char ch = *s++;
- if (std::iscntrl(ch)) {
- switch (ch) {
- case '\t':
- case '\n':
- case '\r':
- break;
- default:
- return true;
- }
- }
- }
- return false;
-}
-
-bool IsUTF8TrailByte(unsigned char t) { return 0x80 <= t && t<= 0xbf; }
-
-bool IsValidUTF8(const char* str, size_t length) {
- const unsigned char *s = reinterpret_cast<const unsigned char *>(str);
-
- for (size_t i = 0; i < length;) {
- unsigned char lead = s[i++];
-
- if (lead <= 0x7f) {
- continue; // single-byte character (ASCII) 0..7F
- }
- if (lead < 0xc2) {
- return false; // trail byte or non-shortest form
- } else if (lead <= 0xdf && (i + 1) <= length && IsUTF8TrailByte(s[i])) {
- ++i; // 2-byte character
- } else if (0xe0 <= lead && lead <= 0xef && (i + 2) <= length &&
- IsUTF8TrailByte(s[i]) &&
- IsUTF8TrailByte(s[i + 1]) &&
- // check for non-shortest form and surrogate
- (lead != 0xe0 || s[i] >= 0xa0) &&
- (lead != 0xed || s[i] < 0xa0)) {
- i += 2; // 3-byte character
- } else if (0xf0 <= lead && lead <= 0xf4 && (i + 3) <= length &&
- IsUTF8TrailByte(s[i]) &&
- IsUTF8TrailByte(s[i + 1]) &&
- IsUTF8TrailByte(s[i + 2]) &&
- // check for non-shortest form
- (lead != 0xf0 || s[i] >= 0x90) &&
- (lead != 0xf4 || s[i] < 0x90)) {
- i += 3; // 4-byte character
- } else {
- return false;
- }
- }
- return true;
-}
-
-void ConditionalPrintAsText(const char* str, size_t length, ostream* os) {
- if (!ContainsUnprintableControlCodes(str, length) &&
- IsValidUTF8(str, length)) {
- *os << "\n As Text: \"" << str << "\"";
- }
-}
-
-} // anonymous namespace
-
-void PrintStringTo(const ::std::string& s, ostream* os) {
- if (PrintCharsAsStringTo(s.data(), s.size(), os) == kHexEscape) {
- if (GTEST_FLAG(print_utf8)) {
- ConditionalPrintAsText(s.data(), s.size(), os);
- }
- }
-}
-
-#if GTEST_HAS_STD_WSTRING
-void PrintWideStringTo(const ::std::wstring& s, ostream* os) {
- PrintCharsAsStringTo(s.data(), s.size(), os);
-}
-#endif // GTEST_HAS_STD_WSTRING
-
-} // namespace internal
-
-} // namespace testing
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-test-part.cc b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-test-part.cc
deleted file mode 100644
index 178317a6bcd..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-test-part.cc
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// The Google C++ Testing and Mocking Framework (Google Test)
-
-#include "gtest/gtest-test-part.h"
-#include "src/gtest-internal-inl.h"
-
-namespace testing {
-
-using internal::GetUnitTestImpl;
-
-// Gets the summary of the failure message by omitting the stack trace
-// in it.
-std::string TestPartResult::ExtractSummary(const char* message) {
- const char* const stack_trace = strstr(message, internal::kStackTraceMarker);
- return stack_trace == nullptr ? message : std::string(message, stack_trace);
-}
-
-// Prints a TestPartResult object.
-std::ostream& operator<<(std::ostream& os, const TestPartResult& result) {
- return os << result.file_name() << ":" << result.line_number() << ": "
- << (result.type() == TestPartResult::kSuccess
- ? "Success"
- : result.type() == TestPartResult::kSkip
- ? "Skipped"
- : result.type() == TestPartResult::kFatalFailure
- ? "Fatal failure"
- : "Non-fatal failure")
- << ":\n"
- << result.message() << std::endl;
-}
-
-// Appends a TestPartResult to the array.
-void TestPartResultArray::Append(const TestPartResult& result) {
- array_.push_back(result);
-}
-
-// Returns the TestPartResult at the given index (0-based).
-const TestPartResult& TestPartResultArray::GetTestPartResult(int index) const {
- if (index < 0 || index >= size()) {
- printf("\nInvalid index (%d) into TestPartResultArray.\n", index);
- internal::posix::Abort();
- }
-
- return array_[static_cast<size_t>(index)];
-}
-
-// Returns the number of TestPartResult objects in the array.
-int TestPartResultArray::size() const {
- return static_cast<int>(array_.size());
-}
-
-namespace internal {
-
-HasNewFatalFailureHelper::HasNewFatalFailureHelper()
- : has_new_fatal_failure_(false),
- original_reporter_(GetUnitTestImpl()->
- GetTestPartResultReporterForCurrentThread()) {
- GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(this);
-}
-
-HasNewFatalFailureHelper::~HasNewFatalFailureHelper() {
- GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(
- original_reporter_);
-}
-
-void HasNewFatalFailureHelper::ReportTestPartResult(
- const TestPartResult& result) {
- if (result.fatally_failed())
- has_new_fatal_failure_ = true;
- original_reporter_->ReportTestPartResult(result);
-}
-
-} // namespace internal
-
-} // namespace testing
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-typed-test.cc b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-typed-test.cc
deleted file mode 100644
index 8677caf732b..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest-typed-test.cc
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright 2008 Google Inc.
-// All Rights Reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-#include "gtest/gtest-typed-test.h"
-
-#include "gtest/gtest.h"
-
-namespace testing {
-namespace internal {
-
-#if GTEST_HAS_TYPED_TEST_P
-
-// Skips to the first non-space char in str. Returns an empty string if str
-// contains only whitespace characters.
-static const char* SkipSpaces(const char* str) {
- while (IsSpace(*str))
- str++;
- return str;
-}
-
-static std::vector<std::string> SplitIntoTestNames(const char* src) {
- std::vector<std::string> name_vec;
- src = SkipSpaces(src);
- for (; src != nullptr; src = SkipComma(src)) {
- name_vec.push_back(StripTrailingSpaces(GetPrefixUntilComma(src)));
- }
- return name_vec;
-}
-
-// Verifies that registered_tests match the test names in
-// registered_tests_; returns registered_tests if successful, or
-// aborts the program otherwise.
-const char* TypedTestSuitePState::VerifyRegisteredTestNames(
- const char* file, int line, const char* registered_tests) {
- typedef RegisteredTestsMap::const_iterator RegisteredTestIter;
- registered_ = true;
-
- std::vector<std::string> name_vec = SplitIntoTestNames(registered_tests);
-
- Message errors;
-
- std::set<std::string> tests;
- for (std::vector<std::string>::const_iterator name_it = name_vec.begin();
- name_it != name_vec.end(); ++name_it) {
- const std::string& name = *name_it;
- if (tests.count(name) != 0) {
- errors << "Test " << name << " is listed more than once.\n";
- continue;
- }
-
- bool found = false;
- for (RegisteredTestIter it = registered_tests_.begin();
- it != registered_tests_.end();
- ++it) {
- if (name == it->first) {
- found = true;
- break;
- }
- }
-
- if (found) {
- tests.insert(name);
- } else {
- errors << "No test named " << name
- << " can be found in this test suite.\n";
- }
- }
-
- for (RegisteredTestIter it = registered_tests_.begin();
- it != registered_tests_.end();
- ++it) {
- if (tests.count(it->first) == 0) {
- errors << "You forgot to list test " << it->first << ".\n";
- }
- }
-
- const std::string& errors_str = errors.GetString();
- if (errors_str != "") {
- fprintf(stderr, "%s %s", FormatFileLocation(file, line).c_str(),
- errors_str.c_str());
- fflush(stderr);
- posix::Abort();
- }
-
- return registered_tests;
-}
-
-#endif // GTEST_HAS_TYPED_TEST_P
-
-} // namespace internal
-} // namespace testing
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest.cc b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest.cc
deleted file mode 100644
index a5b4e5ac78c..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest.cc
+++ /dev/null
@@ -1,6177 +0,0 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// The Google C++ Testing and Mocking Framework (Google Test)
-
-#include "gtest/gtest.h"
-#include "gtest/internal/custom/gtest.h"
-#include "gtest/gtest-spi.h"
-
-#include <ctype.h>
-#include <math.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <wchar.h>
-#include <wctype.h>
-
-#include <algorithm>
-#include <iomanip>
-#include <limits>
-#include <list>
-#include <map>
-#include <ostream> // NOLINT
-#include <sstream>
-#include <vector>
-
-#if GTEST_OS_LINUX
-
-# define GTEST_HAS_GETTIMEOFDAY_ 1
-
-# include <fcntl.h> // NOLINT
-# include <limits.h> // NOLINT
-# include <sched.h> // NOLINT
-// Declares vsnprintf(). This header is not available on Windows.
-# include <strings.h> // NOLINT
-# include <sys/mman.h> // NOLINT
-# include <sys/time.h> // NOLINT
-# include <unistd.h> // NOLINT
-# include <string>
-
-#elif GTEST_OS_ZOS
-# define GTEST_HAS_GETTIMEOFDAY_ 1
-# include <sys/time.h> // NOLINT
-
-// On z/OS we additionally need strings.h for strcasecmp.
-# include <strings.h> // NOLINT
-
-#elif GTEST_OS_WINDOWS_MOBILE // We are on Windows CE.
-
-# include <windows.h> // NOLINT
-# undef min
-
-#elif GTEST_OS_WINDOWS // We are on Windows proper.
-
-# include <windows.h> // NOLINT
-# undef min
-
-# include <crtdbg.h> // NOLINT
-# include <debugapi.h> // NOLINT
-# include <io.h> // NOLINT
-# include <sys/timeb.h> // NOLINT
-# include <sys/types.h> // NOLINT
-# include <sys/stat.h> // NOLINT
-
-# if GTEST_OS_WINDOWS_MINGW
-// MinGW has gettimeofday() but not _ftime64().
-# define GTEST_HAS_GETTIMEOFDAY_ 1
-# include <sys/time.h> // NOLINT
-# endif // GTEST_OS_WINDOWS_MINGW
-
-#else
-
-// Assume other platforms have gettimeofday().
-# define GTEST_HAS_GETTIMEOFDAY_ 1
-
-// cpplint thinks that the header is already included, so we want to
-// silence it.
-# include <sys/time.h> // NOLINT
-# include <unistd.h> // NOLINT
-
-#endif // GTEST_OS_LINUX
-
-#if GTEST_HAS_EXCEPTIONS
-# include <stdexcept>
-#endif
-
-#if GTEST_CAN_STREAM_RESULTS_
-# include <arpa/inet.h> // NOLINT
-# include <netdb.h> // NOLINT
-# include <sys/socket.h> // NOLINT
-# include <sys/types.h> // NOLINT
-#endif
-
-#include "src/gtest-internal-inl.h"
-
-#if GTEST_OS_WINDOWS
-# define vsnprintf _vsnprintf
-#endif // GTEST_OS_WINDOWS
-
-#if GTEST_OS_MAC
-#ifndef GTEST_OS_IOS
-#include <crt_externs.h>
-#endif
-#endif
-
-#if GTEST_HAS_ABSL
-#include "absl/debugging/failure_signal_handler.h"
-#include "absl/debugging/stacktrace.h"
-#include "absl/debugging/symbolize.h"
-#include "absl/strings/str_cat.h"
-#endif // GTEST_HAS_ABSL
-
-namespace testing {
-
-using internal::CountIf;
-using internal::ForEach;
-using internal::GetElementOr;
-using internal::Shuffle;
-
-// Constants.
-
-// A test whose test suite name or test name matches this filter is
-// disabled and not run.
-static const char kDisableTestFilter[] = "DISABLED_*:*/DISABLED_*";
-
-// A test suite whose name matches this filter is considered a death
-// test suite and will be run before test suites whose name doesn't
-// match this filter.
-static const char kDeathTestSuiteFilter[] = "*DeathTest:*DeathTest/*";
-
-// A test filter that matches everything.
-static const char kUniversalFilter[] = "*";
-
-// The default output format.
-static const char kDefaultOutputFormat[] = "xml";
-// The default output file.
-static const char kDefaultOutputFile[] = "test_detail";
-
-// The environment variable name for the test shard index.
-static const char kTestShardIndex[] = "GTEST_SHARD_INDEX";
-// The environment variable name for the total number of test shards.
-static const char kTestTotalShards[] = "GTEST_TOTAL_SHARDS";
-// The environment variable name for the test shard status file.
-static const char kTestShardStatusFile[] = "GTEST_SHARD_STATUS_FILE";
-
-namespace internal {
-
-// The text used in failure messages to indicate the start of the
-// stack trace.
-const char kStackTraceMarker[] = "\nStack trace:\n";
-
-// g_help_flag is true if and only if the --help flag or an equivalent form
-// is specified on the command line.
-bool g_help_flag = false;
-
-// Utilty function to Open File for Writing
-static FILE* OpenFileForWriting(const std::string& output_file) {
- FILE* fileout = nullptr;
- FilePath output_file_path(output_file);
- FilePath output_dir(output_file_path.RemoveFileName());
-
- if (output_dir.CreateDirectoriesRecursively()) {
- fileout = posix::FOpen(output_file.c_str(), "w");
- }
- if (fileout == nullptr) {
- GTEST_LOG_(FATAL) << "Unable to open file \"" << output_file << "\"";
- }
- return fileout;
-}
-
-} // namespace internal
-
-// Bazel passes in the argument to '--test_filter' via the TESTBRIDGE_TEST_ONLY
-// environment variable.
-static const char* GetDefaultFilter() {
- const char* const testbridge_test_only =
- internal::posix::GetEnv("TESTBRIDGE_TEST_ONLY");
- if (testbridge_test_only != nullptr) {
- return testbridge_test_only;
- }
- return kUniversalFilter;
-}
-
-GTEST_DEFINE_bool_(
- also_run_disabled_tests,
- internal::BoolFromGTestEnv("also_run_disabled_tests", false),
- "Run disabled tests too, in addition to the tests normally being run.");
-
-GTEST_DEFINE_bool_(
- break_on_failure, internal::BoolFromGTestEnv("break_on_failure", false),
- "True if and only if a failed assertion should be a debugger "
- "break-point.");
-
-GTEST_DEFINE_bool_(catch_exceptions,
- internal::BoolFromGTestEnv("catch_exceptions", true),
- "True if and only if " GTEST_NAME_
- " should catch exceptions and treat them as test failures.");
-
-GTEST_DEFINE_string_(
- color,
- internal::StringFromGTestEnv("color", "auto"),
- "Whether to use colors in the output. Valid values: yes, no, "
- "and auto. 'auto' means to use colors if the output is "
- "being sent to a terminal and the TERM environment variable "
- "is set to a terminal type that supports colors.");
-
-GTEST_DEFINE_string_(
- filter,
- internal::StringFromGTestEnv("filter", GetDefaultFilter()),
- "A colon-separated list of glob (not regex) patterns "
- "for filtering the tests to run, optionally followed by a "
- "'-' and a : separated list of negative patterns (tests to "
- "exclude). A test is run if it matches one of the positive "
- "patterns and does not match any of the negative patterns.");
-
-GTEST_DEFINE_bool_(
- install_failure_signal_handler,
- internal::BoolFromGTestEnv("install_failure_signal_handler", false),
- "If true and supported on the current platform, " GTEST_NAME_ " should "
- "install a signal handler that dumps debugging information when fatal "
- "signals are raised.");
-
-GTEST_DEFINE_bool_(list_tests, false,
- "List all tests without running them.");
-
-// The net priority order after flag processing is thus:
-// --gtest_output command line flag
-// GTEST_OUTPUT environment variable
-// XML_OUTPUT_FILE environment variable
-// ''
-GTEST_DEFINE_string_(
- output,
- internal::StringFromGTestEnv("output",
- internal::OutputFlagAlsoCheckEnvVar().c_str()),
- "A format (defaults to \"xml\" but can be specified to be \"json\"), "
- "optionally followed by a colon and an output file name or directory. "
- "A directory is indicated by a trailing pathname separator. "
- "Examples: \"xml:filename.xml\", \"xml::directoryname/\". "
- "If a directory is specified, output files will be created "
- "within that directory, with file-names based on the test "
- "executable's name and, if necessary, made unique by adding "
- "digits.");
-
-GTEST_DEFINE_bool_(print_time, internal::BoolFromGTestEnv("print_time", true),
- "True if and only if " GTEST_NAME_
- " should display elapsed time in text output.");
-
-GTEST_DEFINE_bool_(print_utf8, internal::BoolFromGTestEnv("print_utf8", true),
- "True if and only if " GTEST_NAME_
- " prints UTF8 characters as text.");
-
-GTEST_DEFINE_int32_(
- random_seed,
- internal::Int32FromGTestEnv("random_seed", 0),
- "Random number seed to use when shuffling test orders. Must be in range "
- "[1, 99999], or 0 to use a seed based on the current time.");
-
-GTEST_DEFINE_int32_(
- repeat,
- internal::Int32FromGTestEnv("repeat", 1),
- "How many times to repeat each test. Specify a negative number "
- "for repeating forever. Useful for shaking out flaky tests.");
-
-GTEST_DEFINE_bool_(show_internal_stack_frames, false,
- "True if and only if " GTEST_NAME_
- " should include internal stack frames when "
- "printing test failure stack traces.");
-
-GTEST_DEFINE_bool_(shuffle, internal::BoolFromGTestEnv("shuffle", false),
- "True if and only if " GTEST_NAME_
- " should randomize tests' order on every run.");
-
-GTEST_DEFINE_int32_(
- stack_trace_depth,
- internal::Int32FromGTestEnv("stack_trace_depth", kMaxStackTraceDepth),
- "The maximum number of stack frames to print when an "
- "assertion fails. The valid range is 0 through 100, inclusive.");
-
-GTEST_DEFINE_string_(
- stream_result_to,
- internal::StringFromGTestEnv("stream_result_to", ""),
- "This flag specifies the host name and the port number on which to stream "
- "test results. Example: \"localhost:555\". The flag is effective only on "
- "Linux.");
-
-GTEST_DEFINE_bool_(
- throw_on_failure,
- internal::BoolFromGTestEnv("throw_on_failure", false),
- "When this flag is specified, a failed assertion will throw an exception "
- "if exceptions are enabled or exit the program with a non-zero code "
- "otherwise. For use with an external test framework.");
-
-#if GTEST_USE_OWN_FLAGFILE_FLAG_
-GTEST_DEFINE_string_(
- flagfile,
- internal::StringFromGTestEnv("flagfile", ""),
- "This flag specifies the flagfile to read command-line flags from.");
-#endif // GTEST_USE_OWN_FLAGFILE_FLAG_
-
-namespace internal {
-
-// Generates a random number from [0, range), using a Linear
-// Congruential Generator (LCG). Crashes if 'range' is 0 or greater
-// than kMaxRange.
-UInt32 Random::Generate(UInt32 range) {
- // These constants are the same as are used in glibc's rand(3).
- // Use wider types than necessary to prevent unsigned overflow diagnostics.
- state_ = static_cast<UInt32>(1103515245ULL*state_ + 12345U) % kMaxRange;
-
- GTEST_CHECK_(range > 0)
- << "Cannot generate a number in the range [0, 0).";
- GTEST_CHECK_(range <= kMaxRange)
- << "Generation of a number in [0, " << range << ") was requested, "
- << "but this can only generate numbers in [0, " << kMaxRange << ").";
-
- // Converting via modulus introduces a bit of downward bias, but
- // it's simple, and a linear congruential generator isn't too good
- // to begin with.
- return state_ % range;
-}
-
-// GTestIsInitialized() returns true if and only if the user has initialized
-// Google Test. Useful for catching the user mistake of not initializing
-// Google Test before calling RUN_ALL_TESTS().
-static bool GTestIsInitialized() { return GetArgvs().size() > 0; }
-
-// Iterates over a vector of TestSuites, keeping a running sum of the
-// results of calling a given int-returning method on each.
-// Returns the sum.
-static int SumOverTestSuiteList(const std::vector<TestSuite*>& case_list,
- int (TestSuite::*method)() const) {
- int sum = 0;
- for (size_t i = 0; i < case_list.size(); i++) {
- sum += (case_list[i]->*method)();
- }
- return sum;
-}
-
-// Returns true if and only if the test suite passed.
-static bool TestSuitePassed(const TestSuite* test_suite) {
- return test_suite->should_run() && test_suite->Passed();
-}
-
-// Returns true if and only if the test suite failed.
-static bool TestSuiteFailed(const TestSuite* test_suite) {
- return test_suite->should_run() && test_suite->Failed();
-}
-
-// Returns true if and only if test_suite contains at least one test that
-// should run.
-static bool ShouldRunTestSuite(const TestSuite* test_suite) {
- return test_suite->should_run();
-}
-
-// AssertHelper constructor.
-AssertHelper::AssertHelper(TestPartResult::Type type,
- const char* file,
- int line,
- const char* message)
- : data_(new AssertHelperData(type, file, line, message)) {
-}
-
-AssertHelper::~AssertHelper() {
- delete data_;
-}
-
-// Message assignment, for assertion streaming support.
-void AssertHelper::operator=(const Message& message) const {
- UnitTest::GetInstance()->
- AddTestPartResult(data_->type, data_->file, data_->line,
- AppendUserMessage(data_->message, message),
- UnitTest::GetInstance()->impl()
- ->CurrentOsStackTraceExceptTop(1)
- // Skips the stack frame for this function itself.
- ); // NOLINT
-}
-
-// A copy of all command line arguments. Set by InitGoogleTest().
-static ::std::vector<std::string> g_argvs;
-
-::std::vector<std::string> GetArgvs() {
-#if defined(GTEST_CUSTOM_GET_ARGVS_)
- // GTEST_CUSTOM_GET_ARGVS_() may return a container of std::string or
- // ::string. This code converts it to the appropriate type.
- const auto& custom = GTEST_CUSTOM_GET_ARGVS_();
- return ::std::vector<std::string>(custom.begin(), custom.end());
-#else // defined(GTEST_CUSTOM_GET_ARGVS_)
- return g_argvs;
-#endif // defined(GTEST_CUSTOM_GET_ARGVS_)
-}
-
-// Returns the current application's name, removing directory path if that
-// is present.
-FilePath GetCurrentExecutableName() {
- FilePath result;
-
-#if GTEST_OS_WINDOWS || GTEST_OS_OS2
- result.Set(FilePath(GetArgvs()[0]).RemoveExtension("exe"));
-#else
- result.Set(FilePath(GetArgvs()[0]));
-#endif // GTEST_OS_WINDOWS
-
- return result.RemoveDirectoryName();
-}
-
-// Functions for processing the gtest_output flag.
-
-// Returns the output format, or "" for normal printed output.
-std::string UnitTestOptions::GetOutputFormat() {
- const char* const gtest_output_flag = GTEST_FLAG(output).c_str();
- const char* const colon = strchr(gtest_output_flag, ':');
- return (colon == nullptr)
- ? std::string(gtest_output_flag)
- : std::string(gtest_output_flag,
- static_cast<size_t>(colon - gtest_output_flag));
-}
-
-// Returns the name of the requested output file, or the default if none
-// was explicitly specified.
-std::string UnitTestOptions::GetAbsolutePathToOutputFile() {
- const char* const gtest_output_flag = GTEST_FLAG(output).c_str();
-
- std::string format = GetOutputFormat();
- if (format.empty())
- format = std::string(kDefaultOutputFormat);
-
- const char* const colon = strchr(gtest_output_flag, ':');
- if (colon == nullptr)
- return internal::FilePath::MakeFileName(
- internal::FilePath(
- UnitTest::GetInstance()->original_working_dir()),
- internal::FilePath(kDefaultOutputFile), 0,
- format.c_str()).string();
-
- internal::FilePath output_name(colon + 1);
- if (!output_name.IsAbsolutePath())
- output_name = internal::FilePath::ConcatPaths(
- internal::FilePath(UnitTest::GetInstance()->original_working_dir()),
- internal::FilePath(colon + 1));
-
- if (!output_name.IsDirectory())
- return output_name.string();
-
- internal::FilePath result(internal::FilePath::GenerateUniqueFileName(
- output_name, internal::GetCurrentExecutableName(),
- GetOutputFormat().c_str()));
- return result.string();
-}
-
-// Returns true if and only if the wildcard pattern matches the string.
-// The first ':' or '\0' character in pattern marks the end of it.
-//
-// This recursive algorithm isn't very efficient, but is clear and
-// works well enough for matching test names, which are short.
-bool UnitTestOptions::PatternMatchesString(const char *pattern,
- const char *str) {
- switch (*pattern) {
- case '\0':
- case ':': // Either ':' or '\0' marks the end of the pattern.
- return *str == '\0';
- case '?': // Matches any single character.
- return *str != '\0' && PatternMatchesString(pattern + 1, str + 1);
- case '*': // Matches any string (possibly empty) of characters.
- return (*str != '\0' && PatternMatchesString(pattern, str + 1)) ||
- PatternMatchesString(pattern + 1, str);
- default: // Non-special character. Matches itself.
- return *pattern == *str &&
- PatternMatchesString(pattern + 1, str + 1);
- }
-}
-
-bool UnitTestOptions::MatchesFilter(
- const std::string& name, const char* filter) {
- const char *cur_pattern = filter;
- for (;;) {
- if (PatternMatchesString(cur_pattern, name.c_str())) {
- return true;
- }
-
- // Finds the next pattern in the filter.
- cur_pattern = strchr(cur_pattern, ':');
-
- // Returns if no more pattern can be found.
- if (cur_pattern == nullptr) {
- return false;
- }
-
- // Skips the pattern separater (the ':' character).
- cur_pattern++;
- }
-}
-
-// Returns true if and only if the user-specified filter matches the test
-// suite name and the test name.
-bool UnitTestOptions::FilterMatchesTest(const std::string& test_suite_name,
- const std::string& test_name) {
- const std::string& full_name = test_suite_name + "." + test_name.c_str();
-
- // Split --gtest_filter at '-', if there is one, to separate into
- // positive filter and negative filter portions
- const char* const p = GTEST_FLAG(filter).c_str();
- const char* const dash = strchr(p, '-');
- std::string positive;
- std::string negative;
- if (dash == nullptr) {
- positive = GTEST_FLAG(filter).c_str(); // Whole string is a positive filter
- negative = "";
- } else {
- positive = std::string(p, dash); // Everything up to the dash
- negative = std::string(dash + 1); // Everything after the dash
- if (positive.empty()) {
- // Treat '-test1' as the same as '*-test1'
- positive = kUniversalFilter;
- }
- }
-
- // A filter is a colon-separated list of patterns. It matches a
- // test if any pattern in it matches the test.
- return (MatchesFilter(full_name, positive.c_str()) &&
- !MatchesFilter(full_name, negative.c_str()));
-}
-
-#if GTEST_HAS_SEH
-// Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the
-// given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise.
-// This function is useful as an __except condition.
-int UnitTestOptions::GTestShouldProcessSEH(DWORD exception_code) {
- // Google Test should handle a SEH exception if:
- // 1. the user wants it to, AND
- // 2. this is not a breakpoint exception, AND
- // 3. this is not a C++ exception (VC++ implements them via SEH,
- // apparently).
- //
- // SEH exception code for C++ exceptions.
- // (see http://support.microsoft.com/kb/185294 for more information).
- const DWORD kCxxExceptionCode = 0xe06d7363;
-
- bool should_handle = true;
-
- if (!GTEST_FLAG(catch_exceptions))
- should_handle = false;
- else if (exception_code == EXCEPTION_BREAKPOINT)
- should_handle = false;
- else if (exception_code == kCxxExceptionCode)
- should_handle = false;
-
- return should_handle ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH;
-}
-#endif // GTEST_HAS_SEH
-
-} // namespace internal
-
-// The c'tor sets this object as the test part result reporter used by
-// Google Test. The 'result' parameter specifies where to report the
-// results. Intercepts only failures from the current thread.
-ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter(
- TestPartResultArray* result)
- : intercept_mode_(INTERCEPT_ONLY_CURRENT_THREAD),
- result_(result) {
- Init();
-}
-
-// The c'tor sets this object as the test part result reporter used by
-// Google Test. The 'result' parameter specifies where to report the
-// results.
-ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter(
- InterceptMode intercept_mode, TestPartResultArray* result)
- : intercept_mode_(intercept_mode),
- result_(result) {
- Init();
-}
-
-void ScopedFakeTestPartResultReporter::Init() {
- internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
- if (intercept_mode_ == INTERCEPT_ALL_THREADS) {
- old_reporter_ = impl->GetGlobalTestPartResultReporter();
- impl->SetGlobalTestPartResultReporter(this);
- } else {
- old_reporter_ = impl->GetTestPartResultReporterForCurrentThread();
- impl->SetTestPartResultReporterForCurrentThread(this);
- }
-}
-
-// The d'tor restores the test part result reporter used by Google Test
-// before.
-ScopedFakeTestPartResultReporter::~ScopedFakeTestPartResultReporter() {
- internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
- if (intercept_mode_ == INTERCEPT_ALL_THREADS) {
- impl->SetGlobalTestPartResultReporter(old_reporter_);
- } else {
- impl->SetTestPartResultReporterForCurrentThread(old_reporter_);
- }
-}
-
-// Increments the test part result count and remembers the result.
-// This method is from the TestPartResultReporterInterface interface.
-void ScopedFakeTestPartResultReporter::ReportTestPartResult(
- const TestPartResult& result) {
- result_->Append(result);
-}
-
-namespace internal {
-
-// Returns the type ID of ::testing::Test. We should always call this
-// instead of GetTypeId< ::testing::Test>() to get the type ID of
-// testing::Test. This is to work around a suspected linker bug when
-// using Google Test as a framework on Mac OS X. The bug causes
-// GetTypeId< ::testing::Test>() to return different values depending
-// on whether the call is from the Google Test framework itself or
-// from user test code. GetTestTypeId() is guaranteed to always
-// return the same value, as it always calls GetTypeId<>() from the
-// gtest.cc, which is within the Google Test framework.
-TypeId GetTestTypeId() {
- return GetTypeId<Test>();
-}
-
-// The value of GetTestTypeId() as seen from within the Google Test
-// library. This is solely for testing GetTestTypeId().
-extern const TypeId kTestTypeIdInGoogleTest = GetTestTypeId();
-
-// This predicate-formatter checks that 'results' contains a test part
-// failure of the given type and that the failure message contains the
-// given substring.
-static AssertionResult HasOneFailure(const char* /* results_expr */,
- const char* /* type_expr */,
- const char* /* substr_expr */,
- const TestPartResultArray& results,
- TestPartResult::Type type,
- const std::string& substr) {
- const std::string expected(type == TestPartResult::kFatalFailure ?
- "1 fatal failure" :
- "1 non-fatal failure");
- Message msg;
- if (results.size() != 1) {
- msg << "Expected: " << expected << "\n"
- << " Actual: " << results.size() << " failures";
- for (int i = 0; i < results.size(); i++) {
- msg << "\n" << results.GetTestPartResult(i);
- }
- return AssertionFailure() << msg;
- }
-
- const TestPartResult& r = results.GetTestPartResult(0);
- if (r.type() != type) {
- return AssertionFailure() << "Expected: " << expected << "\n"
- << " Actual:\n"
- << r;
- }
-
- if (strstr(r.message(), substr.c_str()) == nullptr) {
- return AssertionFailure() << "Expected: " << expected << " containing \""
- << substr << "\"\n"
- << " Actual:\n"
- << r;
- }
-
- return AssertionSuccess();
-}
-
-// The constructor of SingleFailureChecker remembers where to look up
-// test part results, what type of failure we expect, and what
-// substring the failure message should contain.
-SingleFailureChecker::SingleFailureChecker(const TestPartResultArray* results,
- TestPartResult::Type type,
- const std::string& substr)
- : results_(results), type_(type), substr_(substr) {}
-
-// The destructor of SingleFailureChecker verifies that the given
-// TestPartResultArray contains exactly one failure that has the given
-// type and contains the given substring. If that's not the case, a
-// non-fatal failure will be generated.
-SingleFailureChecker::~SingleFailureChecker() {
- EXPECT_PRED_FORMAT3(HasOneFailure, *results_, type_, substr_);
-}
-
-DefaultGlobalTestPartResultReporter::DefaultGlobalTestPartResultReporter(
- UnitTestImpl* unit_test) : unit_test_(unit_test) {}
-
-void DefaultGlobalTestPartResultReporter::ReportTestPartResult(
- const TestPartResult& result) {
- unit_test_->current_test_result()->AddTestPartResult(result);
- unit_test_->listeners()->repeater()->OnTestPartResult(result);
-}
-
-DefaultPerThreadTestPartResultReporter::DefaultPerThreadTestPartResultReporter(
- UnitTestImpl* unit_test) : unit_test_(unit_test) {}
-
-void DefaultPerThreadTestPartResultReporter::ReportTestPartResult(
- const TestPartResult& result) {
- unit_test_->GetGlobalTestPartResultReporter()->ReportTestPartResult(result);
-}
-
-// Returns the global test part result reporter.
-TestPartResultReporterInterface*
-UnitTestImpl::GetGlobalTestPartResultReporter() {
- internal::MutexLock lock(&global_test_part_result_reporter_mutex_);
- return global_test_part_result_repoter_;
-}
-
-// Sets the global test part result reporter.
-void UnitTestImpl::SetGlobalTestPartResultReporter(
- TestPartResultReporterInterface* reporter) {
- internal::MutexLock lock(&global_test_part_result_reporter_mutex_);
- global_test_part_result_repoter_ = reporter;
-}
-
-// Returns the test part result reporter for the current thread.
-TestPartResultReporterInterface*
-UnitTestImpl::GetTestPartResultReporterForCurrentThread() {
- return per_thread_test_part_result_reporter_.get();
-}
-
-// Sets the test part result reporter for the current thread.
-void UnitTestImpl::SetTestPartResultReporterForCurrentThread(
- TestPartResultReporterInterface* reporter) {
- per_thread_test_part_result_reporter_.set(reporter);
-}
-
-// Gets the number of successful test suites.
-int UnitTestImpl::successful_test_suite_count() const {
- return CountIf(test_suites_, TestSuitePassed);
-}
-
-// Gets the number of failed test suites.
-int UnitTestImpl::failed_test_suite_count() const {
- return CountIf(test_suites_, TestSuiteFailed);
-}
-
-// Gets the number of all test suites.
-int UnitTestImpl::total_test_suite_count() const {
- return static_cast<int>(test_suites_.size());
-}
-
-// Gets the number of all test suites that contain at least one test
-// that should run.
-int UnitTestImpl::test_suite_to_run_count() const {
- return CountIf(test_suites_, ShouldRunTestSuite);
-}
-
-// Gets the number of successful tests.
-int UnitTestImpl::successful_test_count() const {
- return SumOverTestSuiteList(test_suites_, &TestSuite::successful_test_count);
-}
-
-// Gets the number of skipped tests.
-int UnitTestImpl::skipped_test_count() const {
- return SumOverTestSuiteList(test_suites_, &TestSuite::skipped_test_count);
-}
-
-// Gets the number of failed tests.
-int UnitTestImpl::failed_test_count() const {
- return SumOverTestSuiteList(test_suites_, &TestSuite::failed_test_count);
-}
-
-// Gets the number of disabled tests that will be reported in the XML report.
-int UnitTestImpl::reportable_disabled_test_count() const {
- return SumOverTestSuiteList(test_suites_,
- &TestSuite::reportable_disabled_test_count);
-}
-
-// Gets the number of disabled tests.
-int UnitTestImpl::disabled_test_count() const {
- return SumOverTestSuiteList(test_suites_, &TestSuite::disabled_test_count);
-}
-
-// Gets the number of tests to be printed in the XML report.
-int UnitTestImpl::reportable_test_count() const {
- return SumOverTestSuiteList(test_suites_, &TestSuite::reportable_test_count);
-}
-
-// Gets the number of all tests.
-int UnitTestImpl::total_test_count() const {
- return SumOverTestSuiteList(test_suites_, &TestSuite::total_test_count);
-}
-
-// Gets the number of tests that should run.
-int UnitTestImpl::test_to_run_count() const {
- return SumOverTestSuiteList(test_suites_, &TestSuite::test_to_run_count);
-}
-
-// Returns the current OS stack trace as an std::string.
-//
-// The maximum number of stack frames to be included is specified by
-// the gtest_stack_trace_depth flag. The skip_count parameter
-// specifies the number of top frames to be skipped, which doesn't
-// count against the number of frames to be included.
-//
-// For example, if Foo() calls Bar(), which in turn calls
-// CurrentOsStackTraceExceptTop(1), Foo() will be included in the
-// trace but Bar() and CurrentOsStackTraceExceptTop() won't.
-std::string UnitTestImpl::CurrentOsStackTraceExceptTop(int skip_count) {
- return os_stack_trace_getter()->CurrentStackTrace(
- static_cast<int>(GTEST_FLAG(stack_trace_depth)),
- skip_count + 1
- // Skips the user-specified number of frames plus this function
- // itself.
- ); // NOLINT
-}
-
-// Returns the current time in milliseconds.
-TimeInMillis GetTimeInMillis() {
-#if GTEST_OS_WINDOWS_MOBILE || defined(__BORLANDC__)
- // Difference between 1970-01-01 and 1601-01-01 in milliseconds.
- // http://analogous.blogspot.com/2005/04/epoch.html
- const TimeInMillis kJavaEpochToWinFileTimeDelta =
- static_cast<TimeInMillis>(116444736UL) * 100000UL;
- const DWORD kTenthMicrosInMilliSecond = 10000;
-
- SYSTEMTIME now_systime;
- FILETIME now_filetime;
- ULARGE_INTEGER now_int64;
- GetSystemTime(&now_systime);
- if (SystemTimeToFileTime(&now_systime, &now_filetime)) {
- now_int64.LowPart = now_filetime.dwLowDateTime;
- now_int64.HighPart = now_filetime.dwHighDateTime;
- now_int64.QuadPart = (now_int64.QuadPart / kTenthMicrosInMilliSecond) -
- kJavaEpochToWinFileTimeDelta;
- return now_int64.QuadPart;
- }
- return 0;
-#elif GTEST_OS_WINDOWS && !GTEST_HAS_GETTIMEOFDAY_
- __timeb64 now;
-
- // MSVC 8 deprecates _ftime64(), so we want to suppress warning 4996
- // (deprecated function) there.
- GTEST_DISABLE_MSC_DEPRECATED_PUSH_()
- _ftime64(&now);
- GTEST_DISABLE_MSC_DEPRECATED_POP_()
-
- return static_cast<TimeInMillis>(now.time) * 1000 + now.millitm;
-#elif GTEST_HAS_GETTIMEOFDAY_
- struct timeval now;
- gettimeofday(&now, nullptr);
- return static_cast<TimeInMillis>(now.tv_sec) * 1000 + now.tv_usec / 1000;
-#else
-# error "Don't know how to get the current time on your system."
-#endif
-}
-
-// Utilities
-
-// class String.
-
-#if GTEST_OS_WINDOWS_MOBILE
-// Creates a UTF-16 wide string from the given ANSI string, allocating
-// memory using new. The caller is responsible for deleting the return
-// value using delete[]. Returns the wide string, or NULL if the
-// input is NULL.
-LPCWSTR String::AnsiToUtf16(const char* ansi) {
- if (!ansi) return nullptr;
- const int length = strlen(ansi);
- const int unicode_length =
- MultiByteToWideChar(CP_ACP, 0, ansi, length, nullptr, 0);
- WCHAR* unicode = new WCHAR[unicode_length + 1];
- MultiByteToWideChar(CP_ACP, 0, ansi, length,
- unicode, unicode_length);
- unicode[unicode_length] = 0;
- return unicode;
-}
-
-// Creates an ANSI string from the given wide string, allocating
-// memory using new. The caller is responsible for deleting the return
-// value using delete[]. Returns the ANSI string, or NULL if the
-// input is NULL.
-const char* String::Utf16ToAnsi(LPCWSTR utf16_str) {
- if (!utf16_str) return nullptr;
- const int ansi_length = WideCharToMultiByte(CP_ACP, 0, utf16_str, -1, nullptr,
- 0, nullptr, nullptr);
- char* ansi = new char[ansi_length + 1];
- WideCharToMultiByte(CP_ACP, 0, utf16_str, -1, ansi, ansi_length, nullptr,
- nullptr);
- ansi[ansi_length] = 0;
- return ansi;
-}
-
-#endif // GTEST_OS_WINDOWS_MOBILE
-
-// Compares two C strings. Returns true if and only if they have the same
-// content.
-//
-// Unlike strcmp(), this function can handle NULL argument(s). A NULL
-// C string is considered different to any non-NULL C string,
-// including the empty string.
-bool String::CStringEquals(const char * lhs, const char * rhs) {
- if (lhs == nullptr) return rhs == nullptr;
-
- if (rhs == nullptr) return false;
-
- return strcmp(lhs, rhs) == 0;
-}
-
-#if GTEST_HAS_STD_WSTRING
-
-// Converts an array of wide chars to a narrow string using the UTF-8
-// encoding, and streams the result to the given Message object.
-static void StreamWideCharsToMessage(const wchar_t* wstr, size_t length,
- Message* msg) {
- for (size_t i = 0; i != length; ) { // NOLINT
- if (wstr[i] != L'\0') {
- *msg << WideStringToUtf8(wstr + i, static_cast<int>(length - i));
- while (i != length && wstr[i] != L'\0')
- i++;
- } else {
- *msg << '\0';
- i++;
- }
- }
-}
-
-#endif // GTEST_HAS_STD_WSTRING
-
-void SplitString(const ::std::string& str, char delimiter,
- ::std::vector< ::std::string>* dest) {
- ::std::vector< ::std::string> parsed;
- ::std::string::size_type pos = 0;
- while (::testing::internal::AlwaysTrue()) {
- const ::std::string::size_type colon = str.find(delimiter, pos);
- if (colon == ::std::string::npos) {
- parsed.push_back(str.substr(pos));
- break;
- } else {
- parsed.push_back(str.substr(pos, colon - pos));
- pos = colon + 1;
- }
- }
- dest->swap(parsed);
-}
-
-} // namespace internal
-
-// Constructs an empty Message.
-// We allocate the stringstream separately because otherwise each use of
-// ASSERT/EXPECT in a procedure adds over 200 bytes to the procedure's
-// stack frame leading to huge stack frames in some cases; gcc does not reuse
-// the stack space.
-Message::Message() : ss_(new ::std::stringstream) {
- // By default, we want there to be enough precision when printing
- // a double to a Message.
- *ss_ << std::setprecision(std::numeric_limits<double>::digits10 + 2);
-}
-
-// These two overloads allow streaming a wide C string to a Message
-// using the UTF-8 encoding.
-Message& Message::operator <<(const wchar_t* wide_c_str) {
- return *this << internal::String::ShowWideCString(wide_c_str);
-}
-Message& Message::operator <<(wchar_t* wide_c_str) {
- return *this << internal::String::ShowWideCString(wide_c_str);
-}
-
-#if GTEST_HAS_STD_WSTRING
-// Converts the given wide string to a narrow string using the UTF-8
-// encoding, and streams the result to this Message object.
-Message& Message::operator <<(const ::std::wstring& wstr) {
- internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this);
- return *this;
-}
-#endif // GTEST_HAS_STD_WSTRING
-
-// Gets the text streamed to this object so far as an std::string.
-// Each '\0' character in the buffer is replaced with "\\0".
-std::string Message::GetString() const {
- return internal::StringStreamToString(ss_.get());
-}
-
-// AssertionResult constructors.
-// Used in EXPECT_TRUE/FALSE(assertion_result).
-AssertionResult::AssertionResult(const AssertionResult& other)
- : success_(other.success_),
- message_(other.message_.get() != nullptr
- ? new ::std::string(*other.message_)
- : static_cast< ::std::string*>(nullptr)) {}
-
-// Swaps two AssertionResults.
-void AssertionResult::swap(AssertionResult& other) {
- using std::swap;
- swap(success_, other.success_);
- swap(message_, other.message_);
-}
-
-// Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE.
-AssertionResult AssertionResult::operator!() const {
- AssertionResult negation(!success_);
- if (message_.get() != nullptr) negation << *message_;
- return negation;
-}
-
-// Makes a successful assertion result.
-AssertionResult AssertionSuccess() {
- return AssertionResult(true);
-}
-
-// Makes a failed assertion result.
-AssertionResult AssertionFailure() {
- return AssertionResult(false);
-}
-
-// Makes a failed assertion result with the given failure message.
-// Deprecated; use AssertionFailure() << message.
-AssertionResult AssertionFailure(const Message& message) {
- return AssertionFailure() << message;
-}
-
-namespace internal {
-
-namespace edit_distance {
-std::vector<EditType> CalculateOptimalEdits(const std::vector<size_t>& left,
- const std::vector<size_t>& right) {
- std::vector<std::vector<double> > costs(
- left.size() + 1, std::vector<double>(right.size() + 1));
- std::vector<std::vector<EditType> > best_move(
- left.size() + 1, std::vector<EditType>(right.size() + 1));
-
- // Populate for empty right.
- for (size_t l_i = 0; l_i < costs.size(); ++l_i) {
- costs[l_i][0] = static_cast<double>(l_i);
- best_move[l_i][0] = kRemove;
- }
- // Populate for empty left.
- for (size_t r_i = 1; r_i < costs[0].size(); ++r_i) {
- costs[0][r_i] = static_cast<double>(r_i);
- best_move[0][r_i] = kAdd;
- }
-
- for (size_t l_i = 0; l_i < left.size(); ++l_i) {
- for (size_t r_i = 0; r_i < right.size(); ++r_i) {
- if (left[l_i] == right[r_i]) {
- // Found a match. Consume it.
- costs[l_i + 1][r_i + 1] = costs[l_i][r_i];
- best_move[l_i + 1][r_i + 1] = kMatch;
- continue;
- }
-
- const double add = costs[l_i + 1][r_i];
- const double remove = costs[l_i][r_i + 1];
- const double replace = costs[l_i][r_i];
- if (add < remove && add < replace) {
- costs[l_i + 1][r_i + 1] = add + 1;
- best_move[l_i + 1][r_i + 1] = kAdd;
- } else if (remove < add && remove < replace) {
- costs[l_i + 1][r_i + 1] = remove + 1;
- best_move[l_i + 1][r_i + 1] = kRemove;
- } else {
- // We make replace a little more expensive than add/remove to lower
- // their priority.
- costs[l_i + 1][r_i + 1] = replace + 1.00001;
- best_move[l_i + 1][r_i + 1] = kReplace;
- }
- }
- }
-
- // Reconstruct the best path. We do it in reverse order.
- std::vector<EditType> best_path;
- for (size_t l_i = left.size(), r_i = right.size(); l_i > 0 || r_i > 0;) {
- EditType move = best_move[l_i][r_i];
- best_path.push_back(move);
- l_i -= move != kAdd;
- r_i -= move != kRemove;
- }
- std::reverse(best_path.begin(), best_path.end());
- return best_path;
-}
-
-namespace {
-
-// Helper class to convert string into ids with deduplication.
-class InternalStrings {
- public:
- size_t GetId(const std::string& str) {
- IdMap::iterator it = ids_.find(str);
- if (it != ids_.end()) return it->second;
- size_t id = ids_.size();
- return ids_[str] = id;
- }
-
- private:
- typedef std::map<std::string, size_t> IdMap;
- IdMap ids_;
-};
-
-} // namespace
-
-std::vector<EditType> CalculateOptimalEdits(
- const std::vector<std::string>& left,
- const std::vector<std::string>& right) {
- std::vector<size_t> left_ids, right_ids;
- {
- InternalStrings intern_table;
- for (size_t i = 0; i < left.size(); ++i) {
- left_ids.push_back(intern_table.GetId(left[i]));
- }
- for (size_t i = 0; i < right.size(); ++i) {
- right_ids.push_back(intern_table.GetId(right[i]));
- }
- }
- return CalculateOptimalEdits(left_ids, right_ids);
-}
-
-namespace {
-
-// Helper class that holds the state for one hunk and prints it out to the
-// stream.
-// It reorders adds/removes when possible to group all removes before all
-// adds. It also adds the hunk header before printint into the stream.
-class Hunk {
- public:
- Hunk(size_t left_start, size_t right_start)
- : left_start_(left_start),
- right_start_(right_start),
- adds_(),
- removes_(),
- common_() {}
-
- void PushLine(char edit, const char* line) {
- switch (edit) {
- case ' ':
- ++common_;
- FlushEdits();
- hunk_.push_back(std::make_pair(' ', line));
- break;
- case '-':
- ++removes_;
- hunk_removes_.push_back(std::make_pair('-', line));
- break;
- case '+':
- ++adds_;
- hunk_adds_.push_back(std::make_pair('+', line));
- break;
- }
- }
-
- void PrintTo(std::ostream* os) {
- PrintHeader(os);
- FlushEdits();
- for (std::list<std::pair<char, const char*> >::const_iterator it =
- hunk_.begin();
- it != hunk_.end(); ++it) {
- *os << it->first << it->second << "\n";
- }
- }
-
- bool has_edits() const { return adds_ || removes_; }
-
- private:
- void FlushEdits() {
- hunk_.splice(hunk_.end(), hunk_removes_);
- hunk_.splice(hunk_.end(), hunk_adds_);
- }
-
- // Print a unified diff header for one hunk.
- // The format is
- // "@@ -<left_start>,<left_length> +<right_start>,<right_length> @@"
- // where the left/right parts are omitted if unnecessary.
- void PrintHeader(std::ostream* ss) const {
- *ss << "@@ ";
- if (removes_) {
- *ss << "-" << left_start_ << "," << (removes_ + common_);
- }
- if (removes_ && adds_) {
- *ss << " ";
- }
- if (adds_) {
- *ss << "+" << right_start_ << "," << (adds_ + common_);
- }
- *ss << " @@\n";
- }
-
- size_t left_start_, right_start_;
- size_t adds_, removes_, common_;
- std::list<std::pair<char, const char*> > hunk_, hunk_adds_, hunk_removes_;
-};
-
-} // namespace
-
-// Create a list of diff hunks in Unified diff format.
-// Each hunk has a header generated by PrintHeader above plus a body with
-// lines prefixed with ' ' for no change, '-' for deletion and '+' for
-// addition.
-// 'context' represents the desired unchanged prefix/suffix around the diff.
-// If two hunks are close enough that their contexts overlap, then they are
-// joined into one hunk.
-std::string CreateUnifiedDiff(const std::vector<std::string>& left,
- const std::vector<std::string>& right,
- size_t context) {
- const std::vector<EditType> edits = CalculateOptimalEdits(left, right);
-
- size_t l_i = 0, r_i = 0, edit_i = 0;
- std::stringstream ss;
- while (edit_i < edits.size()) {
- // Find first edit.
- while (edit_i < edits.size() && edits[edit_i] == kMatch) {
- ++l_i;
- ++r_i;
- ++edit_i;
- }
-
- // Find the first line to include in the hunk.
- const size_t prefix_context = std::min(l_i, context);
- Hunk hunk(l_i - prefix_context + 1, r_i - prefix_context + 1);
- for (size_t i = prefix_context; i > 0; --i) {
- hunk.PushLine(' ', left[l_i - i].c_str());
- }
-
- // Iterate the edits until we found enough suffix for the hunk or the input
- // is over.
- size_t n_suffix = 0;
- for (; edit_i < edits.size(); ++edit_i) {
- if (n_suffix >= context) {
- // Continue only if the next hunk is very close.
- auto it = edits.begin() + static_cast<int>(edit_i);
- while (it != edits.end() && *it == kMatch) ++it;
- if (it == edits.end() ||
- static_cast<size_t>(it - edits.begin()) - edit_i >= context) {
- // There is no next edit or it is too far away.
- break;
- }
- }
-
- EditType edit = edits[edit_i];
- // Reset count when a non match is found.
- n_suffix = edit == kMatch ? n_suffix + 1 : 0;
-
- if (edit == kMatch || edit == kRemove || edit == kReplace) {
- hunk.PushLine(edit == kMatch ? ' ' : '-', left[l_i].c_str());
- }
- if (edit == kAdd || edit == kReplace) {
- hunk.PushLine('+', right[r_i].c_str());
- }
-
- // Advance indices, depending on edit type.
- l_i += edit != kAdd;
- r_i += edit != kRemove;
- }
-
- if (!hunk.has_edits()) {
- // We are done. We don't want this hunk.
- break;
- }
-
- hunk.PrintTo(&ss);
- }
- return ss.str();
-}
-
-} // namespace edit_distance
-
-namespace {
-
-// The string representation of the values received in EqFailure() are already
-// escaped. Split them on escaped '\n' boundaries. Leave all other escaped
-// characters the same.
-std::vector<std::string> SplitEscapedString(const std::string& str) {
- std::vector<std::string> lines;
- size_t start = 0, end = str.size();
- if (end > 2 && str[0] == '"' && str[end - 1] == '"') {
- ++start;
- --end;
- }
- bool escaped = false;
- for (size_t i = start; i + 1 < end; ++i) {
- if (escaped) {
- escaped = false;
- if (str[i] == 'n') {
- lines.push_back(str.substr(start, i - start - 1));
- start = i + 1;
- }
- } else {
- escaped = str[i] == '\\';
- }
- }
- lines.push_back(str.substr(start, end - start));
- return lines;
-}
-
-} // namespace
-
-// Constructs and returns the message for an equality assertion
-// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure.
-//
-// The first four parameters are the expressions used in the assertion
-// and their values, as strings. For example, for ASSERT_EQ(foo, bar)
-// where foo is 5 and bar is 6, we have:
-//
-// lhs_expression: "foo"
-// rhs_expression: "bar"
-// lhs_value: "5"
-// rhs_value: "6"
-//
-// The ignoring_case parameter is true if and only if the assertion is a
-// *_STRCASEEQ*. When it's true, the string "Ignoring case" will
-// be inserted into the message.
-AssertionResult EqFailure(const char* lhs_expression,
- const char* rhs_expression,
- const std::string& lhs_value,
- const std::string& rhs_value,
- bool ignoring_case) {
- Message msg;
- msg << "Expected equality of these values:";
- msg << "\n " << lhs_expression;
- if (lhs_value != lhs_expression) {
- msg << "\n Which is: " << lhs_value;
- }
- msg << "\n " << rhs_expression;
- if (rhs_value != rhs_expression) {
- msg << "\n Which is: " << rhs_value;
- }
-
- if (ignoring_case) {
- msg << "\nIgnoring case";
- }
-
- if (!lhs_value.empty() && !rhs_value.empty()) {
- const std::vector<std::string> lhs_lines =
- SplitEscapedString(lhs_value);
- const std::vector<std::string> rhs_lines =
- SplitEscapedString(rhs_value);
- if (lhs_lines.size() > 1 || rhs_lines.size() > 1) {
- msg << "\nWith diff:\n"
- << edit_distance::CreateUnifiedDiff(lhs_lines, rhs_lines);
- }
- }
-
- return AssertionFailure() << msg;
-}
-
-// Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
-std::string GetBoolAssertionFailureMessage(
- const AssertionResult& assertion_result,
- const char* expression_text,
- const char* actual_predicate_value,
- const char* expected_predicate_value) {
- const char* actual_message = assertion_result.message();
- Message msg;
- msg << "Value of: " << expression_text
- << "\n Actual: " << actual_predicate_value;
- if (actual_message[0] != '\0')
- msg << " (" << actual_message << ")";
- msg << "\nExpected: " << expected_predicate_value;
- return msg.GetString();
-}
-
-// Helper function for implementing ASSERT_NEAR.
-AssertionResult DoubleNearPredFormat(const char* expr1,
- const char* expr2,
- const char* abs_error_expr,
- double val1,
- double val2,
- double abs_error) {
- const double diff = fabs(val1 - val2);
- if (diff <= abs_error) return AssertionSuccess();
-
- return AssertionFailure()
- << "The difference between " << expr1 << " and " << expr2
- << " is " << diff << ", which exceeds " << abs_error_expr << ", where\n"
- << expr1 << " evaluates to " << val1 << ",\n"
- << expr2 << " evaluates to " << val2 << ", and\n"
- << abs_error_expr << " evaluates to " << abs_error << ".";
-}
-
-
-// Helper template for implementing FloatLE() and DoubleLE().
-template <typename RawType>
-AssertionResult FloatingPointLE(const char* expr1,
- const char* expr2,
- RawType val1,
- RawType val2) {
- // Returns success if val1 is less than val2,
- if (val1 < val2) {
- return AssertionSuccess();
- }
-
- // or if val1 is almost equal to val2.
- const FloatingPoint<RawType> lhs(val1), rhs(val2);
- if (lhs.AlmostEquals(rhs)) {
- return AssertionSuccess();
- }
-
- // Note that the above two checks will both fail if either val1 or
- // val2 is NaN, as the IEEE floating-point standard requires that
- // any predicate involving a NaN must return false.
-
- ::std::stringstream val1_ss;
- val1_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
- << val1;
-
- ::std::stringstream val2_ss;
- val2_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
- << val2;
-
- return AssertionFailure()
- << "Expected: (" << expr1 << ") <= (" << expr2 << ")\n"
- << " Actual: " << StringStreamToString(&val1_ss) << " vs "
- << StringStreamToString(&val2_ss);
-}
-
-} // namespace internal
-
-// Asserts that val1 is less than, or almost equal to, val2. Fails
-// otherwise. In particular, it fails if either val1 or val2 is NaN.
-AssertionResult FloatLE(const char* expr1, const char* expr2,
- float val1, float val2) {
- return internal::FloatingPointLE<float>(expr1, expr2, val1, val2);
-}
-
-// Asserts that val1 is less than, or almost equal to, val2. Fails
-// otherwise. In particular, it fails if either val1 or val2 is NaN.
-AssertionResult DoubleLE(const char* expr1, const char* expr2,
- double val1, double val2) {
- return internal::FloatingPointLE<double>(expr1, expr2, val1, val2);
-}
-
-namespace internal {
-
-// The helper function for {ASSERT|EXPECT}_EQ with int or enum
-// arguments.
-AssertionResult CmpHelperEQ(const char* lhs_expression,
- const char* rhs_expression,
- BiggestInt lhs,
- BiggestInt rhs) {
- if (lhs == rhs) {
- return AssertionSuccess();
- }
-
- return EqFailure(lhs_expression,
- rhs_expression,
- FormatForComparisonFailureMessage(lhs, rhs),
- FormatForComparisonFailureMessage(rhs, lhs),
- false);
-}
-
-// A macro for implementing the helper functions needed to implement
-// ASSERT_?? and EXPECT_?? with integer or enum arguments. It is here
-// just to avoid copy-and-paste of similar code.
-#define GTEST_IMPL_CMP_HELPER_(op_name, op)\
-AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \
- BiggestInt val1, BiggestInt val2) {\
- if (val1 op val2) {\
- return AssertionSuccess();\
- } else {\
- return AssertionFailure() \
- << "Expected: (" << expr1 << ") " #op " (" << expr2\
- << "), actual: " << FormatForComparisonFailureMessage(val1, val2)\
- << " vs " << FormatForComparisonFailureMessage(val2, val1);\
- }\
-}
-
-// Implements the helper function for {ASSERT|EXPECT}_NE with int or
-// enum arguments.
-GTEST_IMPL_CMP_HELPER_(NE, !=)
-// Implements the helper function for {ASSERT|EXPECT}_LE with int or
-// enum arguments.
-GTEST_IMPL_CMP_HELPER_(LE, <=)
-// Implements the helper function for {ASSERT|EXPECT}_LT with int or
-// enum arguments.
-GTEST_IMPL_CMP_HELPER_(LT, < )
-// Implements the helper function for {ASSERT|EXPECT}_GE with int or
-// enum arguments.
-GTEST_IMPL_CMP_HELPER_(GE, >=)
-// Implements the helper function for {ASSERT|EXPECT}_GT with int or
-// enum arguments.
-GTEST_IMPL_CMP_HELPER_(GT, > )
-
-#undef GTEST_IMPL_CMP_HELPER_
-
-// The helper function for {ASSERT|EXPECT}_STREQ.
-AssertionResult CmpHelperSTREQ(const char* lhs_expression,
- const char* rhs_expression,
- const char* lhs,
- const char* rhs) {
- if (String::CStringEquals(lhs, rhs)) {
- return AssertionSuccess();
- }
-
- return EqFailure(lhs_expression,
- rhs_expression,
- PrintToString(lhs),
- PrintToString(rhs),
- false);
-}
-
-// The helper function for {ASSERT|EXPECT}_STRCASEEQ.
-AssertionResult CmpHelperSTRCASEEQ(const char* lhs_expression,
- const char* rhs_expression,
- const char* lhs,
- const char* rhs) {
- if (String::CaseInsensitiveCStringEquals(lhs, rhs)) {
- return AssertionSuccess();
- }
-
- return EqFailure(lhs_expression,
- rhs_expression,
- PrintToString(lhs),
- PrintToString(rhs),
- true);
-}
-
-// The helper function for {ASSERT|EXPECT}_STRNE.
-AssertionResult CmpHelperSTRNE(const char* s1_expression,
- const char* s2_expression,
- const char* s1,
- const char* s2) {
- if (!String::CStringEquals(s1, s2)) {
- return AssertionSuccess();
- } else {
- return AssertionFailure() << "Expected: (" << s1_expression << ") != ("
- << s2_expression << "), actual: \""
- << s1 << "\" vs \"" << s2 << "\"";
- }
-}
-
-// The helper function for {ASSERT|EXPECT}_STRCASENE.
-AssertionResult CmpHelperSTRCASENE(const char* s1_expression,
- const char* s2_expression,
- const char* s1,
- const char* s2) {
- if (!String::CaseInsensitiveCStringEquals(s1, s2)) {
- return AssertionSuccess();
- } else {
- return AssertionFailure()
- << "Expected: (" << s1_expression << ") != ("
- << s2_expression << ") (ignoring case), actual: \""
- << s1 << "\" vs \"" << s2 << "\"";
- }
-}
-
-} // namespace internal
-
-namespace {
-
-// Helper functions for implementing IsSubString() and IsNotSubstring().
-
-// This group of overloaded functions return true if and only if needle
-// is a substring of haystack. NULL is considered a substring of
-// itself only.
-
-bool IsSubstringPred(const char* needle, const char* haystack) {
- if (needle == nullptr || haystack == nullptr) return needle == haystack;
-
- return strstr(haystack, needle) != nullptr;
-}
-
-bool IsSubstringPred(const wchar_t* needle, const wchar_t* haystack) {
- if (needle == nullptr || haystack == nullptr) return needle == haystack;
-
- return wcsstr(haystack, needle) != nullptr;
-}
-
-// StringType here can be either ::std::string or ::std::wstring.
-template <typename StringType>
-bool IsSubstringPred(const StringType& needle,
- const StringType& haystack) {
- return haystack.find(needle) != StringType::npos;
-}
-
-// This function implements either IsSubstring() or IsNotSubstring(),
-// depending on the value of the expected_to_be_substring parameter.
-// StringType here can be const char*, const wchar_t*, ::std::string,
-// or ::std::wstring.
-template <typename StringType>
-AssertionResult IsSubstringImpl(
- bool expected_to_be_substring,
- const char* needle_expr, const char* haystack_expr,
- const StringType& needle, const StringType& haystack) {
- if (IsSubstringPred(needle, haystack) == expected_to_be_substring)
- return AssertionSuccess();
-
- const bool is_wide_string = sizeof(needle[0]) > 1;
- const char* const begin_string_quote = is_wide_string ? "L\"" : "\"";
- return AssertionFailure()
- << "Value of: " << needle_expr << "\n"
- << " Actual: " << begin_string_quote << needle << "\"\n"
- << "Expected: " << (expected_to_be_substring ? "" : "not ")
- << "a substring of " << haystack_expr << "\n"
- << "Which is: " << begin_string_quote << haystack << "\"";
-}
-
-} // namespace
-
-// IsSubstring() and IsNotSubstring() check whether needle is a
-// substring of haystack (NULL is considered a substring of itself
-// only), and return an appropriate error message when they fail.
-
-AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const char* needle, const char* haystack) {
- return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const wchar_t* needle, const wchar_t* haystack) {
- return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const char* needle, const char* haystack) {
- return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const wchar_t* needle, const wchar_t* haystack) {
- return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::string& needle, const ::std::string& haystack) {
- return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::string& needle, const ::std::string& haystack) {
- return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
-}
-
-#if GTEST_HAS_STD_WSTRING
-AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::wstring& needle, const ::std::wstring& haystack) {
- return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::wstring& needle, const ::std::wstring& haystack) {
- return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
-}
-#endif // GTEST_HAS_STD_WSTRING
-
-namespace internal {
-
-#if GTEST_OS_WINDOWS
-
-namespace {
-
-// Helper function for IsHRESULT{SuccessFailure} predicates
-AssertionResult HRESULTFailureHelper(const char* expr,
- const char* expected,
- long hr) { // NOLINT
-# if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_TV_TITLE
-
- // Windows CE doesn't support FormatMessage.
- const char error_text[] = "";
-
-# else
-
- // Looks up the human-readable system message for the HRESULT code
- // and since we're not passing any params to FormatMessage, we don't
- // want inserts expanded.
- const DWORD kFlags = FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS;
- const DWORD kBufSize = 4096;
- // Gets the system's human readable message string for this HRESULT.
- char error_text[kBufSize] = { '\0' };
- DWORD message_length = ::FormatMessageA(kFlags,
- 0, // no source, we're asking system
- static_cast<DWORD>(hr), // the error
- 0, // no line width restrictions
- error_text, // output buffer
- kBufSize, // buf size
- nullptr); // no arguments for inserts
- // Trims tailing white space (FormatMessage leaves a trailing CR-LF)
- for (; message_length && IsSpace(error_text[message_length - 1]);
- --message_length) {
- error_text[message_length - 1] = '\0';
- }
-
-# endif // GTEST_OS_WINDOWS_MOBILE
-
- const std::string error_hex("0x" + String::FormatHexInt(hr));
- return ::testing::AssertionFailure()
- << "Expected: " << expr << " " << expected << ".\n"
- << " Actual: " << error_hex << " " << error_text << "\n";
-}
-
-} // namespace
-
-AssertionResult IsHRESULTSuccess(const char* expr, long hr) { // NOLINT
- if (SUCCEEDED(hr)) {
- return AssertionSuccess();
- }
- return HRESULTFailureHelper(expr, "succeeds", hr);
-}
-
-AssertionResult IsHRESULTFailure(const char* expr, long hr) { // NOLINT
- if (FAILED(hr)) {
- return AssertionSuccess();
- }
- return HRESULTFailureHelper(expr, "fails", hr);
-}
-
-#endif // GTEST_OS_WINDOWS
-
-// Utility functions for encoding Unicode text (wide strings) in
-// UTF-8.
-
-// A Unicode code-point can have up to 21 bits, and is encoded in UTF-8
-// like this:
-//
-// Code-point length Encoding
-// 0 - 7 bits 0xxxxxxx
-// 8 - 11 bits 110xxxxx 10xxxxxx
-// 12 - 16 bits 1110xxxx 10xxxxxx 10xxxxxx
-// 17 - 21 bits 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
-
-// The maximum code-point a one-byte UTF-8 sequence can represent.
-const UInt32 kMaxCodePoint1 = (static_cast<UInt32>(1) << 7) - 1;
-
-// The maximum code-point a two-byte UTF-8 sequence can represent.
-const UInt32 kMaxCodePoint2 = (static_cast<UInt32>(1) << (5 + 6)) - 1;
-
-// The maximum code-point a three-byte UTF-8 sequence can represent.
-const UInt32 kMaxCodePoint3 = (static_cast<UInt32>(1) << (4 + 2*6)) - 1;
-
-// The maximum code-point a four-byte UTF-8 sequence can represent.
-const UInt32 kMaxCodePoint4 = (static_cast<UInt32>(1) << (3 + 3*6)) - 1;
-
-// Chops off the n lowest bits from a bit pattern. Returns the n
-// lowest bits. As a side effect, the original bit pattern will be
-// shifted to the right by n bits.
-inline UInt32 ChopLowBits(UInt32* bits, int n) {
- const UInt32 low_bits = *bits & ((static_cast<UInt32>(1) << n) - 1);
- *bits >>= n;
- return low_bits;
-}
-
-// Converts a Unicode code point to a narrow string in UTF-8 encoding.
-// code_point parameter is of type UInt32 because wchar_t may not be
-// wide enough to contain a code point.
-// If the code_point is not a valid Unicode code point
-// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be converted
-// to "(Invalid Unicode 0xXXXXXXXX)".
-std::string CodePointToUtf8(UInt32 code_point) {
- if (code_point > kMaxCodePoint4) {
- return "(Invalid Unicode 0x" + String::FormatHexUInt32(code_point) + ")";
- }
-
- char str[5]; // Big enough for the largest valid code point.
- if (code_point <= kMaxCodePoint1) {
- str[1] = '\0';
- str[0] = static_cast<char>(code_point); // 0xxxxxxx
- } else if (code_point <= kMaxCodePoint2) {
- str[2] = '\0';
- str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
- str[0] = static_cast<char>(0xC0 | code_point); // 110xxxxx
- } else if (code_point <= kMaxCodePoint3) {
- str[3] = '\0';
- str[2] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
- str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
- str[0] = static_cast<char>(0xE0 | code_point); // 1110xxxx
- } else { // code_point <= kMaxCodePoint4
- str[4] = '\0';
- str[3] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
- str[2] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
- str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
- str[0] = static_cast<char>(0xF0 | code_point); // 11110xxx
- }
- return str;
-}
-
-// The following two functions only make sense if the system
-// uses UTF-16 for wide string encoding. All supported systems
-// with 16 bit wchar_t (Windows, Cygwin) do use UTF-16.
-
-// Determines if the arguments constitute UTF-16 surrogate pair
-// and thus should be combined into a single Unicode code point
-// using CreateCodePointFromUtf16SurrogatePair.
-inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) {
- return sizeof(wchar_t) == 2 &&
- (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00;
-}
-
-// Creates a Unicode code point from UTF16 surrogate pair.
-inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first,
- wchar_t second) {
- const auto first_u = static_cast<UInt32>(first);
- const auto second_u = static_cast<UInt32>(second);
- const UInt32 mask = (1 << 10) - 1;
- return (sizeof(wchar_t) == 2)
- ? (((first_u & mask) << 10) | (second_u & mask)) + 0x10000
- :
- // This function should not be called when the condition is
- // false, but we provide a sensible default in case it is.
- first_u;
-}
-
-// Converts a wide string to a narrow string in UTF-8 encoding.
-// The wide string is assumed to have the following encoding:
-// UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin)
-// UTF-32 if sizeof(wchar_t) == 4 (on Linux)
-// Parameter str points to a null-terminated wide string.
-// Parameter num_chars may additionally limit the number
-// of wchar_t characters processed. -1 is used when the entire string
-// should be processed.
-// If the string contains code points that are not valid Unicode code points
-// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output
-// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding
-// and contains invalid UTF-16 surrogate pairs, values in those pairs
-// will be encoded as individual Unicode characters from Basic Normal Plane.
-std::string WideStringToUtf8(const wchar_t* str, int num_chars) {
- if (num_chars == -1)
- num_chars = static_cast<int>(wcslen(str));
-
- ::std::stringstream stream;
- for (int i = 0; i < num_chars; ++i) {
- UInt32 unicode_code_point;
-
- if (str[i] == L'\0') {
- break;
- } else if (i + 1 < num_chars && IsUtf16SurrogatePair(str[i], str[i + 1])) {
- unicode_code_point = CreateCodePointFromUtf16SurrogatePair(str[i],
- str[i + 1]);
- i++;
- } else {
- unicode_code_point = static_cast<UInt32>(str[i]);
- }
-
- stream << CodePointToUtf8(unicode_code_point);
- }
- return StringStreamToString(&stream);
-}
-
-// Converts a wide C string to an std::string using the UTF-8 encoding.
-// NULL will be converted to "(null)".
-std::string String::ShowWideCString(const wchar_t * wide_c_str) {
- if (wide_c_str == nullptr) return "(null)";
-
- return internal::WideStringToUtf8(wide_c_str, -1);
-}
-
-// Compares two wide C strings. Returns true if and only if they have the
-// same content.
-//
-// Unlike wcscmp(), this function can handle NULL argument(s). A NULL
-// C string is considered different to any non-NULL C string,
-// including the empty string.
-bool String::WideCStringEquals(const wchar_t * lhs, const wchar_t * rhs) {
- if (lhs == nullptr) return rhs == nullptr;
-
- if (rhs == nullptr) return false;
-
- return wcscmp(lhs, rhs) == 0;
-}
-
-// Helper function for *_STREQ on wide strings.
-AssertionResult CmpHelperSTREQ(const char* lhs_expression,
- const char* rhs_expression,
- const wchar_t* lhs,
- const wchar_t* rhs) {
- if (String::WideCStringEquals(lhs, rhs)) {
- return AssertionSuccess();
- }
-
- return EqFailure(lhs_expression,
- rhs_expression,
- PrintToString(lhs),
- PrintToString(rhs),
- false);
-}
-
-// Helper function for *_STRNE on wide strings.
-AssertionResult CmpHelperSTRNE(const char* s1_expression,
- const char* s2_expression,
- const wchar_t* s1,
- const wchar_t* s2) {
- if (!String::WideCStringEquals(s1, s2)) {
- return AssertionSuccess();
- }
-
- return AssertionFailure() << "Expected: (" << s1_expression << ") != ("
- << s2_expression << "), actual: "
- << PrintToString(s1)
- << " vs " << PrintToString(s2);
-}
-
-// Compares two C strings, ignoring case. Returns true if and only if they have
-// the same content.
-//
-// Unlike strcasecmp(), this function can handle NULL argument(s). A
-// NULL C string is considered different to any non-NULL C string,
-// including the empty string.
-bool String::CaseInsensitiveCStringEquals(const char * lhs, const char * rhs) {
- if (lhs == nullptr) return rhs == nullptr;
- if (rhs == nullptr) return false;
- return posix::StrCaseCmp(lhs, rhs) == 0;
-}
-
-// Compares two wide C strings, ignoring case. Returns true if and only if they
-// have the same content.
-//
-// Unlike wcscasecmp(), this function can handle NULL argument(s).
-// A NULL C string is considered different to any non-NULL wide C string,
-// including the empty string.
-// NB: The implementations on different platforms slightly differ.
-// On windows, this method uses _wcsicmp which compares according to LC_CTYPE
-// environment variable. On GNU platform this method uses wcscasecmp
-// which compares according to LC_CTYPE category of the current locale.
-// On MacOS X, it uses towlower, which also uses LC_CTYPE category of the
-// current locale.
-bool String::CaseInsensitiveWideCStringEquals(const wchar_t* lhs,
- const wchar_t* rhs) {
- if (lhs == nullptr) return rhs == nullptr;
-
- if (rhs == nullptr) return false;
-
-#if GTEST_OS_WINDOWS
- return _wcsicmp(lhs, rhs) == 0;
-#elif GTEST_OS_LINUX && !GTEST_OS_LINUX_ANDROID
- return wcscasecmp(lhs, rhs) == 0;
-#else
- // Android, Mac OS X and Cygwin don't define wcscasecmp.
- // Other unknown OSes may not define it either.
- wint_t left, right;
- do {
- left = towlower(static_cast<wint_t>(*lhs++));
- right = towlower(static_cast<wint_t>(*rhs++));
- } while (left && left == right);
- return left == right;
-#endif // OS selector
-}
-
-// Returns true if and only if str ends with the given suffix, ignoring case.
-// Any string is considered to end with an empty suffix.
-bool String::EndsWithCaseInsensitive(
- const std::string& str, const std::string& suffix) {
- const size_t str_len = str.length();
- const size_t suffix_len = suffix.length();
- return (str_len >= suffix_len) &&
- CaseInsensitiveCStringEquals(str.c_str() + str_len - suffix_len,
- suffix.c_str());
-}
-
-// Formats an int value as "%02d".
-std::string String::FormatIntWidth2(int value) {
- std::stringstream ss;
- ss << std::setfill('0') << std::setw(2) << value;
- return ss.str();
-}
-
-// Formats an int value as "%X".
-std::string String::FormatHexUInt32(UInt32 value) {
- std::stringstream ss;
- ss << std::hex << std::uppercase << value;
- return ss.str();
-}
-
-// Formats an int value as "%X".
-std::string String::FormatHexInt(int value) {
- return FormatHexUInt32(static_cast<UInt32>(value));
-}
-
-// Formats a byte as "%02X".
-std::string String::FormatByte(unsigned char value) {
- std::stringstream ss;
- ss << std::setfill('0') << std::setw(2) << std::hex << std::uppercase
- << static_cast<unsigned int>(value);
- return ss.str();
-}
-
-// Converts the buffer in a stringstream to an std::string, converting NUL
-// bytes to "\\0" along the way.
-std::string StringStreamToString(::std::stringstream* ss) {
- const ::std::string& str = ss->str();
- const char* const start = str.c_str();
- const char* const end = start + str.length();
-
- std::string result;
- result.reserve(static_cast<size_t>(2 * (end - start)));
- for (const char* ch = start; ch != end; ++ch) {
- if (*ch == '\0') {
- result += "\\0"; // Replaces NUL with "\\0";
- } else {
- result += *ch;
- }
- }
-
- return result;
-}
-
-// Appends the user-supplied message to the Google-Test-generated message.
-std::string AppendUserMessage(const std::string& gtest_msg,
- const Message& user_msg) {
- // Appends the user message if it's non-empty.
- const std::string user_msg_string = user_msg.GetString();
- if (user_msg_string.empty()) {
- return gtest_msg;
- }
-
- return gtest_msg + "\n" + user_msg_string;
-}
-
-} // namespace internal
-
-// class TestResult
-
-// Creates an empty TestResult.
-TestResult::TestResult()
- : death_test_count_(0), start_timestamp_(0), elapsed_time_(0) {}
-
-// D'tor.
-TestResult::~TestResult() {
-}
-
-// Returns the i-th test part result among all the results. i can
-// range from 0 to total_part_count() - 1. If i is not in that range,
-// aborts the program.
-const TestPartResult& TestResult::GetTestPartResult(int i) const {
- if (i < 0 || i >= total_part_count())
- internal::posix::Abort();
- return test_part_results_.at(static_cast<size_t>(i));
-}
-
-// Returns the i-th test property. i can range from 0 to
-// test_property_count() - 1. If i is not in that range, aborts the
-// program.
-const TestProperty& TestResult::GetTestProperty(int i) const {
- if (i < 0 || i >= test_property_count())
- internal::posix::Abort();
- return test_properties_.at(static_cast<size_t>(i));
-}
-
-// Clears the test part results.
-void TestResult::ClearTestPartResults() {
- test_part_results_.clear();
-}
-
-// Adds a test part result to the list.
-void TestResult::AddTestPartResult(const TestPartResult& test_part_result) {
- test_part_results_.push_back(test_part_result);
-}
-
-// Adds a test property to the list. If a property with the same key as the
-// supplied property is already represented, the value of this test_property
-// replaces the old value for that key.
-void TestResult::RecordProperty(const std::string& xml_element,
- const TestProperty& test_property) {
- if (!ValidateTestProperty(xml_element, test_property)) {
- return;
- }
- internal::MutexLock lock(&test_properites_mutex_);
- const std::vector<TestProperty>::iterator property_with_matching_key =
- std::find_if(test_properties_.begin(), test_properties_.end(),
- internal::TestPropertyKeyIs(test_property.key()));
- if (property_with_matching_key == test_properties_.end()) {
- test_properties_.push_back(test_property);
- return;
- }
- property_with_matching_key->SetValue(test_property.value());
-}
-
-// The list of reserved attributes used in the <testsuites> element of XML
-// output.
-static const char* const kReservedTestSuitesAttributes[] = {
- "disabled",
- "errors",
- "failures",
- "name",
- "random_seed",
- "tests",
- "time",
- "timestamp"
-};
-
-// The list of reserved attributes used in the <testsuite> element of XML
-// output.
-static const char* const kReservedTestSuiteAttributes[] = {
- "disabled", "errors", "failures", "name", "tests", "time", "timestamp"};
-
-// The list of reserved attributes used in the <testcase> element of XML output.
-static const char* const kReservedTestCaseAttributes[] = {
- "classname", "name", "status", "time", "type_param",
- "value_param", "file", "line"};
-
-// Use a slightly different set for allowed output to ensure existing tests can
-// still RecordProperty("result") or "RecordProperty(timestamp")
-static const char* const kReservedOutputTestCaseAttributes[] = {
- "classname", "name", "status", "time", "type_param",
- "value_param", "file", "line", "result", "timestamp"};
-
-template <int kSize>
-std::vector<std::string> ArrayAsVector(const char* const (&array)[kSize]) {
- return std::vector<std::string>(array, array + kSize);
-}
-
-static std::vector<std::string> GetReservedAttributesForElement(
- const std::string& xml_element) {
- if (xml_element == "testsuites") {
- return ArrayAsVector(kReservedTestSuitesAttributes);
- } else if (xml_element == "testsuite") {
- return ArrayAsVector(kReservedTestSuiteAttributes);
- } else if (xml_element == "testcase") {
- return ArrayAsVector(kReservedTestCaseAttributes);
- } else {
- GTEST_CHECK_(false) << "Unrecognized xml_element provided: " << xml_element;
- }
- // This code is unreachable but some compilers may not realizes that.
- return std::vector<std::string>();
-}
-
-// TODO(jdesprez): Merge the two getReserved attributes once skip is improved
-static std::vector<std::string> GetReservedOutputAttributesForElement(
- const std::string& xml_element) {
- if (xml_element == "testsuites") {
- return ArrayAsVector(kReservedTestSuitesAttributes);
- } else if (xml_element == "testsuite") {
- return ArrayAsVector(kReservedTestSuiteAttributes);
- } else if (xml_element == "testcase") {
- return ArrayAsVector(kReservedOutputTestCaseAttributes);
- } else {
- GTEST_CHECK_(false) << "Unrecognized xml_element provided: " << xml_element;
- }
- // This code is unreachable but some compilers may not realizes that.
- return std::vector<std::string>();
-}
-
-static std::string FormatWordList(const std::vector<std::string>& words) {
- Message word_list;
- for (size_t i = 0; i < words.size(); ++i) {
- if (i > 0 && words.size() > 2) {
- word_list << ", ";
- }
- if (i == words.size() - 1) {
- word_list << "and ";
- }
- word_list << "'" << words[i] << "'";
- }
- return word_list.GetString();
-}
-
-static bool ValidateTestPropertyName(
- const std::string& property_name,
- const std::vector<std::string>& reserved_names) {
- if (std::find(reserved_names.begin(), reserved_names.end(), property_name) !=
- reserved_names.end()) {
- ADD_FAILURE() << "Reserved key used in RecordProperty(): " << property_name
- << " (" << FormatWordList(reserved_names)
- << " are reserved by " << GTEST_NAME_ << ")";
- return false;
- }
- return true;
-}
-
-// Adds a failure if the key is a reserved attribute of the element named
-// xml_element. Returns true if the property is valid.
-bool TestResult::ValidateTestProperty(const std::string& xml_element,
- const TestProperty& test_property) {
- return ValidateTestPropertyName(test_property.key(),
- GetReservedAttributesForElement(xml_element));
-}
-
-// Clears the object.
-void TestResult::Clear() {
- test_part_results_.clear();
- test_properties_.clear();
- death_test_count_ = 0;
- elapsed_time_ = 0;
-}
-
-// Returns true off the test part was skipped.
-static bool TestPartSkipped(const TestPartResult& result) {
- return result.skipped();
-}
-
-// Returns true if and only if the test was skipped.
-bool TestResult::Skipped() const {
- return !Failed() && CountIf(test_part_results_, TestPartSkipped) > 0;
-}
-
-// Returns true if and only if the test failed.
-bool TestResult::Failed() const {
- for (int i = 0; i < total_part_count(); ++i) {
- if (GetTestPartResult(i).failed())
- return true;
- }
- return false;
-}
-
-// Returns true if and only if the test part fatally failed.
-static bool TestPartFatallyFailed(const TestPartResult& result) {
- return result.fatally_failed();
-}
-
-// Returns true if and only if the test fatally failed.
-bool TestResult::HasFatalFailure() const {
- return CountIf(test_part_results_, TestPartFatallyFailed) > 0;
-}
-
-// Returns true if and only if the test part non-fatally failed.
-static bool TestPartNonfatallyFailed(const TestPartResult& result) {
- return result.nonfatally_failed();
-}
-
-// Returns true if and only if the test has a non-fatal failure.
-bool TestResult::HasNonfatalFailure() const {
- return CountIf(test_part_results_, TestPartNonfatallyFailed) > 0;
-}
-
-// Gets the number of all test parts. This is the sum of the number
-// of successful test parts and the number of failed test parts.
-int TestResult::total_part_count() const {
- return static_cast<int>(test_part_results_.size());
-}
-
-// Returns the number of the test properties.
-int TestResult::test_property_count() const {
- return static_cast<int>(test_properties_.size());
-}
-
-// class Test
-
-// Creates a Test object.
-
-// The c'tor saves the states of all flags.
-Test::Test()
- : gtest_flag_saver_(new GTEST_FLAG_SAVER_) {
-}
-
-// The d'tor restores the states of all flags. The actual work is
-// done by the d'tor of the gtest_flag_saver_ field, and thus not
-// visible here.
-Test::~Test() {
-}
-
-// Sets up the test fixture.
-//
-// A sub-class may override this.
-void Test::SetUp() {
-}
-
-// Tears down the test fixture.
-//
-// A sub-class may override this.
-void Test::TearDown() {
-}
-
-// Allows user supplied key value pairs to be recorded for later output.
-void Test::RecordProperty(const std::string& key, const std::string& value) {
- UnitTest::GetInstance()->RecordProperty(key, value);
-}
-
-// Allows user supplied key value pairs to be recorded for later output.
-void Test::RecordProperty(const std::string& key, int value) {
- Message value_message;
- value_message << value;
- RecordProperty(key, value_message.GetString().c_str());
-}
-
-namespace internal {
-
-void ReportFailureInUnknownLocation(TestPartResult::Type result_type,
- const std::string& message) {
- // This function is a friend of UnitTest and as such has access to
- // AddTestPartResult.
- UnitTest::GetInstance()->AddTestPartResult(
- result_type,
- nullptr, // No info about the source file where the exception occurred.
- -1, // We have no info on which line caused the exception.
- message,
- ""); // No stack trace, either.
-}
-
-} // namespace internal
-
-// Google Test requires all tests in the same test suite to use the same test
-// fixture class. This function checks if the current test has the
-// same fixture class as the first test in the current test suite. If
-// yes, it returns true; otherwise it generates a Google Test failure and
-// returns false.
-bool Test::HasSameFixtureClass() {
- internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
- const TestSuite* const test_suite = impl->current_test_suite();
-
- // Info about the first test in the current test suite.
- const TestInfo* const first_test_info = test_suite->test_info_list()[0];
- const internal::TypeId first_fixture_id = first_test_info->fixture_class_id_;
- const char* const first_test_name = first_test_info->name();
-
- // Info about the current test.
- const TestInfo* const this_test_info = impl->current_test_info();
- const internal::TypeId this_fixture_id = this_test_info->fixture_class_id_;
- const char* const this_test_name = this_test_info->name();
-
- if (this_fixture_id != first_fixture_id) {
- // Is the first test defined using TEST?
- const bool first_is_TEST = first_fixture_id == internal::GetTestTypeId();
- // Is this test defined using TEST?
- const bool this_is_TEST = this_fixture_id == internal::GetTestTypeId();
-
- if (first_is_TEST || this_is_TEST) {
- // Both TEST and TEST_F appear in same test suite, which is incorrect.
- // Tell the user how to fix this.
-
- // Gets the name of the TEST and the name of the TEST_F. Note
- // that first_is_TEST and this_is_TEST cannot both be true, as
- // the fixture IDs are different for the two tests.
- const char* const TEST_name =
- first_is_TEST ? first_test_name : this_test_name;
- const char* const TEST_F_name =
- first_is_TEST ? this_test_name : first_test_name;
-
- ADD_FAILURE()
- << "All tests in the same test suite must use the same test fixture\n"
- << "class, so mixing TEST_F and TEST in the same test suite is\n"
- << "illegal. In test suite " << this_test_info->test_suite_name()
- << ",\n"
- << "test " << TEST_F_name << " is defined using TEST_F but\n"
- << "test " << TEST_name << " is defined using TEST. You probably\n"
- << "want to change the TEST to TEST_F or move it to another test\n"
- << "case.";
- } else {
- // Two fixture classes with the same name appear in two different
- // namespaces, which is not allowed. Tell the user how to fix this.
- ADD_FAILURE()
- << "All tests in the same test suite must use the same test fixture\n"
- << "class. However, in test suite "
- << this_test_info->test_suite_name() << ",\n"
- << "you defined test " << first_test_name << " and test "
- << this_test_name << "\n"
- << "using two different test fixture classes. This can happen if\n"
- << "the two classes are from different namespaces or translation\n"
- << "units and have the same name. You should probably rename one\n"
- << "of the classes to put the tests into different test suites.";
- }
- return false;
- }
-
- return true;
-}
-
-#if GTEST_HAS_SEH
-
-// Adds an "exception thrown" fatal failure to the current test. This
-// function returns its result via an output parameter pointer because VC++
-// prohibits creation of objects with destructors on stack in functions
-// using __try (see error C2712).
-static std::string* FormatSehExceptionMessage(DWORD exception_code,
- const char* location) {
- Message message;
- message << "SEH exception with code 0x" << std::setbase(16) <<
- exception_code << std::setbase(10) << " thrown in " << location << ".";
-
- return new std::string(message.GetString());
-}
-
-#endif // GTEST_HAS_SEH
-
-namespace internal {
-
-#if GTEST_HAS_EXCEPTIONS
-
-// Adds an "exception thrown" fatal failure to the current test.
-static std::string FormatCxxExceptionMessage(const char* description,
- const char* location) {
- Message message;
- if (description != nullptr) {
- message << "C++ exception with description \"" << description << "\"";
- } else {
- message << "Unknown C++ exception";
- }
- message << " thrown in " << location << ".";
-
- return message.GetString();
-}
-
-static std::string PrintTestPartResultToString(
- const TestPartResult& test_part_result);
-
-GoogleTestFailureException::GoogleTestFailureException(
- const TestPartResult& failure)
- : ::std::runtime_error(PrintTestPartResultToString(failure).c_str()) {}
-
-#endif // GTEST_HAS_EXCEPTIONS
-
-// We put these helper functions in the internal namespace as IBM's xlC
-// compiler rejects the code if they were declared static.
-
-// Runs the given method and handles SEH exceptions it throws, when
-// SEH is supported; returns the 0-value for type Result in case of an
-// SEH exception. (Microsoft compilers cannot handle SEH and C++
-// exceptions in the same function. Therefore, we provide a separate
-// wrapper function for handling SEH exceptions.)
-template <class T, typename Result>
-Result HandleSehExceptionsInMethodIfSupported(
- T* object, Result (T::*method)(), const char* location) {
-#if GTEST_HAS_SEH
- __try {
- return (object->*method)();
- } __except (internal::UnitTestOptions::GTestShouldProcessSEH( // NOLINT
- GetExceptionCode())) {
- // We create the exception message on the heap because VC++ prohibits
- // creation of objects with destructors on stack in functions using __try
- // (see error C2712).
- std::string* exception_message = FormatSehExceptionMessage(
- GetExceptionCode(), location);
- internal::ReportFailureInUnknownLocation(TestPartResult::kFatalFailure,
- *exception_message);
- delete exception_message;
- return static_cast<Result>(0);
- }
-#else
- (void)location;
- return (object->*method)();
-#endif // GTEST_HAS_SEH
-}
-
-// Runs the given method and catches and reports C++ and/or SEH-style
-// exceptions, if they are supported; returns the 0-value for type
-// Result in case of an SEH exception.
-template <class T, typename Result>
-Result HandleExceptionsInMethodIfSupported(
- T* object, Result (T::*method)(), const char* location) {
- // NOTE: The user code can affect the way in which Google Test handles
- // exceptions by setting GTEST_FLAG(catch_exceptions), but only before
- // RUN_ALL_TESTS() starts. It is technically possible to check the flag
- // after the exception is caught and either report or re-throw the
- // exception based on the flag's value:
- //
- // try {
- // // Perform the test method.
- // } catch (...) {
- // if (GTEST_FLAG(catch_exceptions))
- // // Report the exception as failure.
- // else
- // throw; // Re-throws the original exception.
- // }
- //
- // However, the purpose of this flag is to allow the program to drop into
- // the debugger when the exception is thrown. On most platforms, once the
- // control enters the catch block, the exception origin information is
- // lost and the debugger will stop the program at the point of the
- // re-throw in this function -- instead of at the point of the original
- // throw statement in the code under test. For this reason, we perform
- // the check early, sacrificing the ability to affect Google Test's
- // exception handling in the method where the exception is thrown.
- if (internal::GetUnitTestImpl()->catch_exceptions()) {
-#if GTEST_HAS_EXCEPTIONS
- try {
- return HandleSehExceptionsInMethodIfSupported(object, method, location);
- } catch (const AssertionException&) { // NOLINT
- // This failure was reported already.
- } catch (const internal::GoogleTestFailureException&) { // NOLINT
- // This exception type can only be thrown by a failed Google
- // Test assertion with the intention of letting another testing
- // framework catch it. Therefore we just re-throw it.
- throw;
- } catch (const std::exception& e) { // NOLINT
- internal::ReportFailureInUnknownLocation(
- TestPartResult::kFatalFailure,
- FormatCxxExceptionMessage(e.what(), location));
- } catch (...) { // NOLINT
- internal::ReportFailureInUnknownLocation(
- TestPartResult::kFatalFailure,
- FormatCxxExceptionMessage(nullptr, location));
- }
- return static_cast<Result>(0);
-#else
- return HandleSehExceptionsInMethodIfSupported(object, method, location);
-#endif // GTEST_HAS_EXCEPTIONS
- } else {
- return (object->*method)();
- }
-}
-
-} // namespace internal
-
-// Runs the test and updates the test result.
-void Test::Run() {
- if (!HasSameFixtureClass()) return;
-
- internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
- impl->os_stack_trace_getter()->UponLeavingGTest();
- internal::HandleExceptionsInMethodIfSupported(this, &Test::SetUp, "SetUp()");
- // We will run the test only if SetUp() was successful and didn't call
- // GTEST_SKIP().
- if (!HasFatalFailure() && !IsSkipped()) {
- impl->os_stack_trace_getter()->UponLeavingGTest();
- internal::HandleExceptionsInMethodIfSupported(
- this, &Test::TestBody, "the test body");
- }
-
- // However, we want to clean up as much as possible. Hence we will
- // always call TearDown(), even if SetUp() or the test body has
- // failed.
- impl->os_stack_trace_getter()->UponLeavingGTest();
- internal::HandleExceptionsInMethodIfSupported(
- this, &Test::TearDown, "TearDown()");
-}
-
-// Returns true if and only if the current test has a fatal failure.
-bool Test::HasFatalFailure() {
- return internal::GetUnitTestImpl()->current_test_result()->HasFatalFailure();
-}
-
-// Returns true if and only if the current test has a non-fatal failure.
-bool Test::HasNonfatalFailure() {
- return internal::GetUnitTestImpl()->current_test_result()->
- HasNonfatalFailure();
-}
-
-// Returns true if and only if the current test was skipped.
-bool Test::IsSkipped() {
- return internal::GetUnitTestImpl()->current_test_result()->Skipped();
-}
-
-// class TestInfo
-
-// Constructs a TestInfo object. It assumes ownership of the test factory
-// object.
-TestInfo::TestInfo(const std::string& a_test_suite_name,
- const std::string& a_name, const char* a_type_param,
- const char* a_value_param,
- internal::CodeLocation a_code_location,
- internal::TypeId fixture_class_id,
- internal::TestFactoryBase* factory)
- : test_suite_name_(a_test_suite_name),
- name_(a_name),
- type_param_(a_type_param ? new std::string(a_type_param) : nullptr),
- value_param_(a_value_param ? new std::string(a_value_param) : nullptr),
- location_(a_code_location),
- fixture_class_id_(fixture_class_id),
- should_run_(false),
- is_disabled_(false),
- matches_filter_(false),
- factory_(factory),
- result_() {}
-
-// Destructs a TestInfo object.
-TestInfo::~TestInfo() { delete factory_; }
-
-namespace internal {
-
-// Creates a new TestInfo object and registers it with Google Test;
-// returns the created object.
-//
-// Arguments:
-//
-// test_suite_name: name of the test suite
-// name: name of the test
-// type_param: the name of the test's type parameter, or NULL if
-// this is not a typed or a type-parameterized test.
-// value_param: text representation of the test's value parameter,
-// or NULL if this is not a value-parameterized test.
-// code_location: code location where the test is defined
-// fixture_class_id: ID of the test fixture class
-// set_up_tc: pointer to the function that sets up the test suite
-// tear_down_tc: pointer to the function that tears down the test suite
-// factory: pointer to the factory that creates a test object.
-// The newly created TestInfo instance will assume
-// ownership of the factory object.
-TestInfo* MakeAndRegisterTestInfo(
- const char* test_suite_name, const char* name, const char* type_param,
- const char* value_param, CodeLocation code_location,
- TypeId fixture_class_id, SetUpTestSuiteFunc set_up_tc,
- TearDownTestSuiteFunc tear_down_tc, TestFactoryBase* factory) {
- TestInfo* const test_info =
- new TestInfo(test_suite_name, name, type_param, value_param,
- code_location, fixture_class_id, factory);
- GetUnitTestImpl()->AddTestInfo(set_up_tc, tear_down_tc, test_info);
- return test_info;
-}
-
-void ReportInvalidTestSuiteType(const char* test_suite_name,
- CodeLocation code_location) {
- Message errors;
- errors
- << "Attempted redefinition of test suite " << test_suite_name << ".\n"
- << "All tests in the same test suite must use the same test fixture\n"
- << "class. However, in test suite " << test_suite_name << ", you tried\n"
- << "to define a test using a fixture class different from the one\n"
- << "used earlier. This can happen if the two fixture classes are\n"
- << "from different namespaces and have the same name. You should\n"
- << "probably rename one of the classes to put the tests into different\n"
- << "test suites.";
-
- GTEST_LOG_(ERROR) << FormatFileLocation(code_location.file.c_str(),
- code_location.line)
- << " " << errors.GetString();
-}
-} // namespace internal
-
-namespace {
-
-// A predicate that checks the test name of a TestInfo against a known
-// value.
-//
-// This is used for implementation of the TestSuite class only. We put
-// it in the anonymous namespace to prevent polluting the outer
-// namespace.
-//
-// TestNameIs is copyable.
-class TestNameIs {
- public:
- // Constructor.
- //
- // TestNameIs has NO default constructor.
- explicit TestNameIs(const char* name)
- : name_(name) {}
-
- // Returns true if and only if the test name of test_info matches name_.
- bool operator()(const TestInfo * test_info) const {
- return test_info && test_info->name() == name_;
- }
-
- private:
- std::string name_;
-};
-
-} // namespace
-
-namespace internal {
-
-// This method expands all parameterized tests registered with macros TEST_P
-// and INSTANTIATE_TEST_SUITE_P into regular tests and registers those.
-// This will be done just once during the program runtime.
-void UnitTestImpl::RegisterParameterizedTests() {
- if (!parameterized_tests_registered_) {
- parameterized_test_registry_.RegisterTests();
- parameterized_tests_registered_ = true;
- }
-}
-
-} // namespace internal
-
-// Creates the test object, runs it, records its result, and then
-// deletes it.
-void TestInfo::Run() {
- if (!should_run_) return;
-
- // Tells UnitTest where to store test result.
- internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
- impl->set_current_test_info(this);
-
- TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater();
-
- // Notifies the unit test event listeners that a test is about to start.
- repeater->OnTestStart(*this);
-
- const TimeInMillis start = internal::GetTimeInMillis();
-
- impl->os_stack_trace_getter()->UponLeavingGTest();
-
- // Creates the test object.
- Test* const test = internal::HandleExceptionsInMethodIfSupported(
- factory_, &internal::TestFactoryBase::CreateTest,
- "the test fixture's constructor");
-
- // Runs the test if the constructor didn't generate a fatal failure or invoke
- // GTEST_SKIP().
- // Note that the object will not be null
- if (!Test::HasFatalFailure() && !Test::IsSkipped()) {
- // This doesn't throw as all user code that can throw are wrapped into
- // exception handling code.
- test->Run();
- }
-
- if (test != nullptr) {
- // Deletes the test object.
- impl->os_stack_trace_getter()->UponLeavingGTest();
- internal::HandleExceptionsInMethodIfSupported(
- test, &Test::DeleteSelf_, "the test fixture's destructor");
- }
-
- result_.set_start_timestamp(start);
- result_.set_elapsed_time(internal::GetTimeInMillis() - start);
-
- // Notifies the unit test event listener that a test has just finished.
- repeater->OnTestEnd(*this);
-
- // Tells UnitTest to stop associating assertion results to this
- // test.
- impl->set_current_test_info(nullptr);
-}
-
-// class TestSuite
-
-// Gets the number of successful tests in this test suite.
-int TestSuite::successful_test_count() const {
- return CountIf(test_info_list_, TestPassed);
-}
-
-// Gets the number of successful tests in this test suite.
-int TestSuite::skipped_test_count() const {
- return CountIf(test_info_list_, TestSkipped);
-}
-
-// Gets the number of failed tests in this test suite.
-int TestSuite::failed_test_count() const {
- return CountIf(test_info_list_, TestFailed);
-}
-
-// Gets the number of disabled tests that will be reported in the XML report.
-int TestSuite::reportable_disabled_test_count() const {
- return CountIf(test_info_list_, TestReportableDisabled);
-}
-
-// Gets the number of disabled tests in this test suite.
-int TestSuite::disabled_test_count() const {
- return CountIf(test_info_list_, TestDisabled);
-}
-
-// Gets the number of tests to be printed in the XML report.
-int TestSuite::reportable_test_count() const {
- return CountIf(test_info_list_, TestReportable);
-}
-
-// Get the number of tests in this test suite that should run.
-int TestSuite::test_to_run_count() const {
- return CountIf(test_info_list_, ShouldRunTest);
-}
-
-// Gets the number of all tests.
-int TestSuite::total_test_count() const {
- return static_cast<int>(test_info_list_.size());
-}
-
-// Creates a TestSuite with the given name.
-//
-// Arguments:
-//
-// name: name of the test suite
-// a_type_param: the name of the test suite's type parameter, or NULL if
-// this is not a typed or a type-parameterized test suite.
-// set_up_tc: pointer to the function that sets up the test suite
-// tear_down_tc: pointer to the function that tears down the test suite
-TestSuite::TestSuite(const char* a_name, const char* a_type_param,
- internal::SetUpTestSuiteFunc set_up_tc,
- internal::TearDownTestSuiteFunc tear_down_tc)
- : name_(a_name),
- type_param_(a_type_param ? new std::string(a_type_param) : nullptr),
- set_up_tc_(set_up_tc),
- tear_down_tc_(tear_down_tc),
- should_run_(false),
- start_timestamp_(0),
- elapsed_time_(0) {}
-
-// Destructor of TestSuite.
-TestSuite::~TestSuite() {
- // Deletes every Test in the collection.
- ForEach(test_info_list_, internal::Delete<TestInfo>);
-}
-
-// Returns the i-th test among all the tests. i can range from 0 to
-// total_test_count() - 1. If i is not in that range, returns NULL.
-const TestInfo* TestSuite::GetTestInfo(int i) const {
- const int index = GetElementOr(test_indices_, i, -1);
- return index < 0 ? nullptr : test_info_list_[static_cast<size_t>(index)];
-}
-
-// Returns the i-th test among all the tests. i can range from 0 to
-// total_test_count() - 1. If i is not in that range, returns NULL.
-TestInfo* TestSuite::GetMutableTestInfo(int i) {
- const int index = GetElementOr(test_indices_, i, -1);
- return index < 0 ? nullptr : test_info_list_[static_cast<size_t>(index)];
-}
-
-// Adds a test to this test suite. Will delete the test upon
-// destruction of the TestSuite object.
-void TestSuite::AddTestInfo(TestInfo* test_info) {
- test_info_list_.push_back(test_info);
- test_indices_.push_back(static_cast<int>(test_indices_.size()));
-}
-
-// Runs every test in this TestSuite.
-void TestSuite::Run() {
- if (!should_run_) return;
-
- internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
- impl->set_current_test_suite(this);
-
- TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater();
-
- // Call both legacy and the new API
- repeater->OnTestSuiteStart(*this);
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI
- repeater->OnTestCaseStart(*this);
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI
-
- impl->os_stack_trace_getter()->UponLeavingGTest();
- internal::HandleExceptionsInMethodIfSupported(
- this, &TestSuite::RunSetUpTestSuite, "SetUpTestSuite()");
-
- start_timestamp_ = internal::GetTimeInMillis();
- for (int i = 0; i < total_test_count(); i++) {
- GetMutableTestInfo(i)->Run();
- }
- elapsed_time_ = internal::GetTimeInMillis() - start_timestamp_;
-
- impl->os_stack_trace_getter()->UponLeavingGTest();
- internal::HandleExceptionsInMethodIfSupported(
- this, &TestSuite::RunTearDownTestSuite, "TearDownTestSuite()");
-
- // Call both legacy and the new API
- repeater->OnTestSuiteEnd(*this);
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI
- repeater->OnTestCaseEnd(*this);
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI
-
- impl->set_current_test_suite(nullptr);
-}
-
-// Clears the results of all tests in this test suite.
-void TestSuite::ClearResult() {
- ad_hoc_test_result_.Clear();
- ForEach(test_info_list_, TestInfo::ClearTestResult);
-}
-
-// Shuffles the tests in this test suite.
-void TestSuite::ShuffleTests(internal::Random* random) {
- Shuffle(random, &test_indices_);
-}
-
-// Restores the test order to before the first shuffle.
-void TestSuite::UnshuffleTests() {
- for (size_t i = 0; i < test_indices_.size(); i++) {
- test_indices_[i] = static_cast<int>(i);
- }
-}
-
-// Formats a countable noun. Depending on its quantity, either the
-// singular form or the plural form is used. e.g.
-//
-// FormatCountableNoun(1, "formula", "formuli") returns "1 formula".
-// FormatCountableNoun(5, "book", "books") returns "5 books".
-static std::string FormatCountableNoun(int count,
- const char * singular_form,
- const char * plural_form) {
- return internal::StreamableToString(count) + " " +
- (count == 1 ? singular_form : plural_form);
-}
-
-// Formats the count of tests.
-static std::string FormatTestCount(int test_count) {
- return FormatCountableNoun(test_count, "test", "tests");
-}
-
-// Formats the count of test suites.
-static std::string FormatTestSuiteCount(int test_suite_count) {
- return FormatCountableNoun(test_suite_count, "test suite", "test suites");
-}
-
-// Converts a TestPartResult::Type enum to human-friendly string
-// representation. Both kNonFatalFailure and kFatalFailure are translated
-// to "Failure", as the user usually doesn't care about the difference
-// between the two when viewing the test result.
-static const char * TestPartResultTypeToString(TestPartResult::Type type) {
- switch (type) {
- case TestPartResult::kSkip:
- return "Skipped";
- case TestPartResult::kSuccess:
- return "Success";
-
- case TestPartResult::kNonFatalFailure:
- case TestPartResult::kFatalFailure:
-#ifdef _MSC_VER
- return "error: ";
-#else
- return "Failure\n";
-#endif
- default:
- return "Unknown result type";
- }
-}
-
-namespace internal {
-
-// Prints a TestPartResult to an std::string.
-static std::string PrintTestPartResultToString(
- const TestPartResult& test_part_result) {
- return (Message()
- << internal::FormatFileLocation(test_part_result.file_name(),
- test_part_result.line_number())
- << " " << TestPartResultTypeToString(test_part_result.type())
- << test_part_result.message()).GetString();
-}
-
-// Prints a TestPartResult.
-static void PrintTestPartResult(const TestPartResult& test_part_result) {
- const std::string& result =
- PrintTestPartResultToString(test_part_result);
- printf("%s\n", result.c_str());
- fflush(stdout);
- // If the test program runs in Visual Studio or a debugger, the
- // following statements add the test part result message to the Output
- // window such that the user can double-click on it to jump to the
- // corresponding source code location; otherwise they do nothing.
-#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
- // We don't call OutputDebugString*() on Windows Mobile, as printing
- // to stdout is done by OutputDebugString() there already - we don't
- // want the same message printed twice.
- ::OutputDebugStringA(result.c_str());
- ::OutputDebugStringA("\n");
-#endif
-}
-
-// class PrettyUnitTestResultPrinter
-#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE && \
- !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT && !GTEST_OS_WINDOWS_MINGW
-
-// Returns the character attribute for the given color.
-static WORD GetColorAttribute(GTestColor color) {
- switch (color) {
- case COLOR_RED: return FOREGROUND_RED;
- case COLOR_GREEN: return FOREGROUND_GREEN;
- case COLOR_YELLOW: return FOREGROUND_RED | FOREGROUND_GREEN;
- default: return 0;
- }
-}
-
-static int GetBitOffset(WORD color_mask) {
- if (color_mask == 0) return 0;
-
- int bitOffset = 0;
- while ((color_mask & 1) == 0) {
- color_mask >>= 1;
- ++bitOffset;
- }
- return bitOffset;
-}
-
-static WORD GetNewColor(GTestColor color, WORD old_color_attrs) {
- // Let's reuse the BG
- static const WORD background_mask = BACKGROUND_BLUE | BACKGROUND_GREEN |
- BACKGROUND_RED | BACKGROUND_INTENSITY;
- static const WORD foreground_mask = FOREGROUND_BLUE | FOREGROUND_GREEN |
- FOREGROUND_RED | FOREGROUND_INTENSITY;
- const WORD existing_bg = old_color_attrs & background_mask;
-
- WORD new_color =
- GetColorAttribute(color) | existing_bg | FOREGROUND_INTENSITY;
- static const int bg_bitOffset = GetBitOffset(background_mask);
- static const int fg_bitOffset = GetBitOffset(foreground_mask);
-
- if (((new_color & background_mask) >> bg_bitOffset) ==
- ((new_color & foreground_mask) >> fg_bitOffset)) {
- new_color ^= FOREGROUND_INTENSITY; // invert intensity
- }
- return new_color;
-}
-
-#else
-
-// Returns the ANSI color code for the given color. COLOR_DEFAULT is
-// an invalid input.
-static const char* GetAnsiColorCode(GTestColor color) {
- switch (color) {
- case COLOR_RED: return "1";
- case COLOR_GREEN: return "2";
- case COLOR_YELLOW: return "3";
- default:
- return nullptr;
- }
-}
-
-#endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
-
-// Returns true if and only if Google Test should use colors in the output.
-bool ShouldUseColor(bool stdout_is_tty) {
- const char* const gtest_color = GTEST_FLAG(color).c_str();
-
- if (String::CaseInsensitiveCStringEquals(gtest_color, "auto")) {
-#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MINGW
- // On Windows the TERM variable is usually not set, but the
- // console there does support colors.
- return stdout_is_tty;
-#else
- // On non-Windows platforms, we rely on the TERM variable.
- const char* const term = posix::GetEnv("TERM");
- const bool term_supports_color =
- String::CStringEquals(term, "xterm") ||
- String::CStringEquals(term, "xterm-color") ||
- String::CStringEquals(term, "xterm-256color") ||
- String::CStringEquals(term, "screen") ||
- String::CStringEquals(term, "screen-256color") ||
- String::CStringEquals(term, "tmux") ||
- String::CStringEquals(term, "tmux-256color") ||
- String::CStringEquals(term, "rxvt-unicode") ||
- String::CStringEquals(term, "rxvt-unicode-256color") ||
- String::CStringEquals(term, "linux") ||
- String::CStringEquals(term, "cygwin");
- return stdout_is_tty && term_supports_color;
-#endif // GTEST_OS_WINDOWS
- }
-
- return String::CaseInsensitiveCStringEquals(gtest_color, "yes") ||
- String::CaseInsensitiveCStringEquals(gtest_color, "true") ||
- String::CaseInsensitiveCStringEquals(gtest_color, "t") ||
- String::CStringEquals(gtest_color, "1");
- // We take "yes", "true", "t", and "1" as meaning "yes". If the
- // value is neither one of these nor "auto", we treat it as "no" to
- // be conservative.
-}
-
-// Helpers for printing colored strings to stdout. Note that on Windows, we
-// cannot simply emit special characters and have the terminal change colors.
-// This routine must actually emit the characters rather than return a string
-// that would be colored when printed, as can be done on Linux.
-void ColoredPrintf(GTestColor color, const char* fmt, ...) {
- va_list args;
- va_start(args, fmt);
-
-#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_ZOS || GTEST_OS_IOS || \
- GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT || defined(ESP_PLATFORM)
- const bool use_color = AlwaysFalse();
-#else
- static const bool in_color_mode =
- ShouldUseColor(posix::IsATTY(posix::FileNo(stdout)) != 0);
- const bool use_color = in_color_mode && (color != COLOR_DEFAULT);
-#endif // GTEST_OS_WINDOWS_MOBILE || GTEST_OS_ZOS
-
- if (!use_color) {
- vprintf(fmt, args);
- va_end(args);
- return;
- }
-
-#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE && \
- !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT && !GTEST_OS_WINDOWS_MINGW
- const HANDLE stdout_handle = GetStdHandle(STD_OUTPUT_HANDLE);
-
- // Gets the current text color.
- CONSOLE_SCREEN_BUFFER_INFO buffer_info;
- GetConsoleScreenBufferInfo(stdout_handle, &buffer_info);
- const WORD old_color_attrs = buffer_info.wAttributes;
- const WORD new_color = GetNewColor(color, old_color_attrs);
-
- // We need to flush the stream buffers into the console before each
- // SetConsoleTextAttribute call lest it affect the text that is already
- // printed but has not yet reached the console.
- fflush(stdout);
- SetConsoleTextAttribute(stdout_handle, new_color);
-
- vprintf(fmt, args);
-
- fflush(stdout);
- // Restores the text color.
- SetConsoleTextAttribute(stdout_handle, old_color_attrs);
-#else
- printf("\033[0;3%sm", GetAnsiColorCode(color));
- vprintf(fmt, args);
- printf("\033[m"); // Resets the terminal to default.
-#endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
- va_end(args);
-}
-
-// Text printed in Google Test's text output and --gtest_list_tests
-// output to label the type parameter and value parameter for a test.
-static const char kTypeParamLabel[] = "TypeParam";
-static const char kValueParamLabel[] = "GetParam()";
-
-static void PrintFullTestCommentIfPresent(const TestInfo& test_info) {
- const char* const type_param = test_info.type_param();
- const char* const value_param = test_info.value_param();
-
- if (type_param != nullptr || value_param != nullptr) {
- printf(", where ");
- if (type_param != nullptr) {
- printf("%s = %s", kTypeParamLabel, type_param);
- if (value_param != nullptr) printf(" and ");
- }
- if (value_param != nullptr) {
- printf("%s = %s", kValueParamLabel, value_param);
- }
- }
-}
-
-// This class implements the TestEventListener interface.
-//
-// Class PrettyUnitTestResultPrinter is copyable.
-class PrettyUnitTestResultPrinter : public TestEventListener {
- public:
- PrettyUnitTestResultPrinter() {}
- static void PrintTestName(const char* test_suite, const char* test) {
- printf("%s.%s", test_suite, test);
- }
-
- // The following methods override what's in the TestEventListener class.
- void OnTestProgramStart(const UnitTest& /*unit_test*/) override {}
- void OnTestIterationStart(const UnitTest& unit_test, int iteration) override;
- void OnEnvironmentsSetUpStart(const UnitTest& unit_test) override;
- void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) override {}
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- void OnTestCaseStart(const TestCase& test_case) override;
-#else
- void OnTestSuiteStart(const TestSuite& test_suite) override;
-#endif // OnTestCaseStart
-
- void OnTestStart(const TestInfo& test_info) override;
-
- void OnTestPartResult(const TestPartResult& result) override;
- void OnTestEnd(const TestInfo& test_info) override;
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- void OnTestCaseEnd(const TestCase& test_case) override;
-#else
- void OnTestSuiteEnd(const TestSuite& test_suite) override;
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
- void OnEnvironmentsTearDownStart(const UnitTest& unit_test) override;
- void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) override {}
- void OnTestIterationEnd(const UnitTest& unit_test, int iteration) override;
- void OnTestProgramEnd(const UnitTest& /*unit_test*/) override {}
-
- private:
- static void PrintFailedTests(const UnitTest& unit_test);
- static void PrintSkippedTests(const UnitTest& unit_test);
-};
-
- // Fired before each iteration of tests starts.
-void PrettyUnitTestResultPrinter::OnTestIterationStart(
- const UnitTest& unit_test, int iteration) {
- if (GTEST_FLAG(repeat) != 1)
- printf("\nRepeating all tests (iteration %d) . . .\n\n", iteration + 1);
-
- const char* const filter = GTEST_FLAG(filter).c_str();
-
- // Prints the filter if it's not *. This reminds the user that some
- // tests may be skipped.
- if (!String::CStringEquals(filter, kUniversalFilter)) {
- ColoredPrintf(COLOR_YELLOW,
- "Note: %s filter = %s\n", GTEST_NAME_, filter);
- }
-
- if (internal::ShouldShard(kTestTotalShards, kTestShardIndex, false)) {
- const Int32 shard_index = Int32FromEnvOrDie(kTestShardIndex, -1);
- ColoredPrintf(COLOR_YELLOW,
- "Note: This is test shard %d of %s.\n",
- static_cast<int>(shard_index) + 1,
- internal::posix::GetEnv(kTestTotalShards));
- }
-
- if (GTEST_FLAG(shuffle)) {
- ColoredPrintf(COLOR_YELLOW,
- "Note: Randomizing tests' orders with a seed of %d .\n",
- unit_test.random_seed());
- }
-
- ColoredPrintf(COLOR_GREEN, "[==========] ");
- printf("Running %s from %s.\n",
- FormatTestCount(unit_test.test_to_run_count()).c_str(),
- FormatTestSuiteCount(unit_test.test_suite_to_run_count()).c_str());
- fflush(stdout);
-}
-
-void PrettyUnitTestResultPrinter::OnEnvironmentsSetUpStart(
- const UnitTest& /*unit_test*/) {
- ColoredPrintf(COLOR_GREEN, "[----------] ");
- printf("Global test environment set-up.\n");
- fflush(stdout);
-}
-
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-void PrettyUnitTestResultPrinter::OnTestCaseStart(const TestCase& test_case) {
- const std::string counts =
- FormatCountableNoun(test_case.test_to_run_count(), "test", "tests");
- ColoredPrintf(COLOR_GREEN, "[----------] ");
- printf("%s from %s", counts.c_str(), test_case.name());
- if (test_case.type_param() == nullptr) {
- printf("\n");
- } else {
- printf(", where %s = %s\n", kTypeParamLabel, test_case.type_param());
- }
- fflush(stdout);
-}
-#else
-void PrettyUnitTestResultPrinter::OnTestSuiteStart(
- const TestSuite& test_suite) {
- const std::string counts =
- FormatCountableNoun(test_suite.test_to_run_count(), "test", "tests");
- ColoredPrintf(COLOR_GREEN, "[----------] ");
- printf("%s from %s", counts.c_str(), test_suite.name());
- if (test_suite.type_param() == nullptr) {
- printf("\n");
- } else {
- printf(", where %s = %s\n", kTypeParamLabel, test_suite.type_param());
- }
- fflush(stdout);
-}
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-void PrettyUnitTestResultPrinter::OnTestStart(const TestInfo& test_info) {
- ColoredPrintf(COLOR_GREEN, "[ RUN ] ");
- PrintTestName(test_info.test_suite_name(), test_info.name());
- printf("\n");
- fflush(stdout);
-}
-
-// Called after an assertion failure.
-void PrettyUnitTestResultPrinter::OnTestPartResult(
- const TestPartResult& result) {
- switch (result.type()) {
- // If the test part succeeded, or was skipped,
- // we don't need to do anything.
- case TestPartResult::kSkip:
- case TestPartResult::kSuccess:
- return;
- default:
- // Print failure message from the assertion
- // (e.g. expected this and got that).
- PrintTestPartResult(result);
- fflush(stdout);
- }
-}
-
-void PrettyUnitTestResultPrinter::OnTestEnd(const TestInfo& test_info) {
- if (test_info.result()->Passed()) {
- ColoredPrintf(COLOR_GREEN, "[ OK ] ");
- } else if (test_info.result()->Skipped()) {
- ColoredPrintf(COLOR_GREEN, "[ SKIPPED ] ");
- } else {
- ColoredPrintf(COLOR_RED, "[ FAILED ] ");
- }
- PrintTestName(test_info.test_suite_name(), test_info.name());
- if (test_info.result()->Failed())
- PrintFullTestCommentIfPresent(test_info);
-
- if (GTEST_FLAG(print_time)) {
- printf(" (%s ms)\n", internal::StreamableToString(
- test_info.result()->elapsed_time()).c_str());
- } else {
- printf("\n");
- }
- fflush(stdout);
-}
-
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-void PrettyUnitTestResultPrinter::OnTestCaseEnd(const TestCase& test_case) {
- if (!GTEST_FLAG(print_time)) return;
-
- const std::string counts =
- FormatCountableNoun(test_case.test_to_run_count(), "test", "tests");
- ColoredPrintf(COLOR_GREEN, "[----------] ");
- printf("%s from %s (%s ms total)\n\n", counts.c_str(), test_case.name(),
- internal::StreamableToString(test_case.elapsed_time()).c_str());
- fflush(stdout);
-}
-#else
-void PrettyUnitTestResultPrinter::OnTestSuiteEnd(const TestSuite& test_suite) {
- if (!GTEST_FLAG(print_time)) return;
-
- const std::string counts =
- FormatCountableNoun(test_suite.test_to_run_count(), "test", "tests");
- ColoredPrintf(COLOR_GREEN, "[----------] ");
- printf("%s from %s (%s ms total)\n\n", counts.c_str(), test_suite.name(),
- internal::StreamableToString(test_suite.elapsed_time()).c_str());
- fflush(stdout);
-}
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-void PrettyUnitTestResultPrinter::OnEnvironmentsTearDownStart(
- const UnitTest& /*unit_test*/) {
- ColoredPrintf(COLOR_GREEN, "[----------] ");
- printf("Global test environment tear-down\n");
- fflush(stdout);
-}
-
-// Internal helper for printing the list of failed tests.
-void PrettyUnitTestResultPrinter::PrintFailedTests(const UnitTest& unit_test) {
- const int failed_test_count = unit_test.failed_test_count();
- if (failed_test_count == 0) {
- return;
- }
-
- for (int i = 0; i < unit_test.total_test_suite_count(); ++i) {
- const TestSuite& test_suite = *unit_test.GetTestSuite(i);
- if (!test_suite.should_run() || (test_suite.failed_test_count() == 0)) {
- continue;
- }
- for (int j = 0; j < test_suite.total_test_count(); ++j) {
- const TestInfo& test_info = *test_suite.GetTestInfo(j);
- if (!test_info.should_run() || !test_info.result()->Failed()) {
- continue;
- }
- ColoredPrintf(COLOR_RED, "[ FAILED ] ");
- printf("%s.%s", test_suite.name(), test_info.name());
- PrintFullTestCommentIfPresent(test_info);
- printf("\n");
- }
- }
-}
-
-// Internal helper for printing the list of skipped tests.
-void PrettyUnitTestResultPrinter::PrintSkippedTests(const UnitTest& unit_test) {
- const int skipped_test_count = unit_test.skipped_test_count();
- if (skipped_test_count == 0) {
- return;
- }
-
- for (int i = 0; i < unit_test.total_test_suite_count(); ++i) {
- const TestSuite& test_suite = *unit_test.GetTestSuite(i);
- if (!test_suite.should_run() || (test_suite.skipped_test_count() == 0)) {
- continue;
- }
- for (int j = 0; j < test_suite.total_test_count(); ++j) {
- const TestInfo& test_info = *test_suite.GetTestInfo(j);
- if (!test_info.should_run() || !test_info.result()->Skipped()) {
- continue;
- }
- ColoredPrintf(COLOR_GREEN, "[ SKIPPED ] ");
- printf("%s.%s", test_suite.name(), test_info.name());
- printf("\n");
- }
- }
-}
-
-void PrettyUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
- int /*iteration*/) {
- ColoredPrintf(COLOR_GREEN, "[==========] ");
- printf("%s from %s ran.",
- FormatTestCount(unit_test.test_to_run_count()).c_str(),
- FormatTestSuiteCount(unit_test.test_suite_to_run_count()).c_str());
- if (GTEST_FLAG(print_time)) {
- printf(" (%s ms total)",
- internal::StreamableToString(unit_test.elapsed_time()).c_str());
- }
- printf("\n");
- ColoredPrintf(COLOR_GREEN, "[ PASSED ] ");
- printf("%s.\n", FormatTestCount(unit_test.successful_test_count()).c_str());
-
- const int skipped_test_count = unit_test.skipped_test_count();
- if (skipped_test_count > 0) {
- ColoredPrintf(COLOR_GREEN, "[ SKIPPED ] ");
- printf("%s, listed below:\n", FormatTestCount(skipped_test_count).c_str());
- PrintSkippedTests(unit_test);
- }
-
- int num_failures = unit_test.failed_test_count();
- if (!unit_test.Passed()) {
- const int failed_test_count = unit_test.failed_test_count();
- ColoredPrintf(COLOR_RED, "[ FAILED ] ");
- printf("%s, listed below:\n", FormatTestCount(failed_test_count).c_str());
- PrintFailedTests(unit_test);
- printf("\n%2d FAILED %s\n", num_failures,
- num_failures == 1 ? "TEST" : "TESTS");
- }
-
- int num_disabled = unit_test.reportable_disabled_test_count();
- if (num_disabled && !GTEST_FLAG(also_run_disabled_tests)) {
- if (!num_failures) {
- printf("\n"); // Add a spacer if no FAILURE banner is displayed.
- }
- ColoredPrintf(COLOR_YELLOW,
- " YOU HAVE %d DISABLED %s\n\n",
- num_disabled,
- num_disabled == 1 ? "TEST" : "TESTS");
- }
- // Ensure that Google Test output is printed before, e.g., heapchecker output.
- fflush(stdout);
-}
-
-// End PrettyUnitTestResultPrinter
-
-// class TestEventRepeater
-//
-// This class forwards events to other event listeners.
-class TestEventRepeater : public TestEventListener {
- public:
- TestEventRepeater() : forwarding_enabled_(true) {}
- ~TestEventRepeater() override;
- void Append(TestEventListener *listener);
- TestEventListener* Release(TestEventListener* listener);
-
- // Controls whether events will be forwarded to listeners_. Set to false
- // in death test child processes.
- bool forwarding_enabled() const { return forwarding_enabled_; }
- void set_forwarding_enabled(bool enable) { forwarding_enabled_ = enable; }
-
- void OnTestProgramStart(const UnitTest& unit_test) override;
- void OnTestIterationStart(const UnitTest& unit_test, int iteration) override;
- void OnEnvironmentsSetUpStart(const UnitTest& unit_test) override;
- void OnEnvironmentsSetUpEnd(const UnitTest& unit_test) override;
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- void OnTestCaseStart(const TestSuite& parameter) override;
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- void OnTestSuiteStart(const TestSuite& parameter) override;
- void OnTestStart(const TestInfo& test_info) override;
- void OnTestPartResult(const TestPartResult& result) override;
- void OnTestEnd(const TestInfo& test_info) override;
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- void OnTestCaseEnd(const TestCase& parameter) override;
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
- void OnTestSuiteEnd(const TestSuite& parameter) override;
- void OnEnvironmentsTearDownStart(const UnitTest& unit_test) override;
- void OnEnvironmentsTearDownEnd(const UnitTest& unit_test) override;
- void OnTestIterationEnd(const UnitTest& unit_test, int iteration) override;
- void OnTestProgramEnd(const UnitTest& unit_test) override;
-
- private:
- // Controls whether events will be forwarded to listeners_. Set to false
- // in death test child processes.
- bool forwarding_enabled_;
- // The list of listeners that receive events.
- std::vector<TestEventListener*> listeners_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventRepeater);
-};
-
-TestEventRepeater::~TestEventRepeater() {
- ForEach(listeners_, Delete<TestEventListener>);
-}
-
-void TestEventRepeater::Append(TestEventListener *listener) {
- listeners_.push_back(listener);
-}
-
-TestEventListener* TestEventRepeater::Release(TestEventListener *listener) {
- for (size_t i = 0; i < listeners_.size(); ++i) {
- if (listeners_[i] == listener) {
- listeners_.erase(listeners_.begin() + static_cast<int>(i));
- return listener;
- }
- }
-
- return nullptr;
-}
-
-// Since most methods are very similar, use macros to reduce boilerplate.
-// This defines a member that forwards the call to all listeners.
-#define GTEST_REPEATER_METHOD_(Name, Type) \
-void TestEventRepeater::Name(const Type& parameter) { \
- if (forwarding_enabled_) { \
- for (size_t i = 0; i < listeners_.size(); i++) { \
- listeners_[i]->Name(parameter); \
- } \
- } \
-}
-// This defines a member that forwards the call to all listeners in reverse
-// order.
-#define GTEST_REVERSE_REPEATER_METHOD_(Name, Type) \
- void TestEventRepeater::Name(const Type& parameter) { \
- if (forwarding_enabled_) { \
- for (size_t i = listeners_.size(); i != 0; i--) { \
- listeners_[i - 1]->Name(parameter); \
- } \
- } \
- }
-
-GTEST_REPEATER_METHOD_(OnTestProgramStart, UnitTest)
-GTEST_REPEATER_METHOD_(OnEnvironmentsSetUpStart, UnitTest)
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-GTEST_REPEATER_METHOD_(OnTestCaseStart, TestSuite)
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-GTEST_REPEATER_METHOD_(OnTestSuiteStart, TestSuite)
-GTEST_REPEATER_METHOD_(OnTestStart, TestInfo)
-GTEST_REPEATER_METHOD_(OnTestPartResult, TestPartResult)
-GTEST_REPEATER_METHOD_(OnEnvironmentsTearDownStart, UnitTest)
-GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsSetUpEnd, UnitTest)
-GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsTearDownEnd, UnitTest)
-GTEST_REVERSE_REPEATER_METHOD_(OnTestEnd, TestInfo)
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-GTEST_REVERSE_REPEATER_METHOD_(OnTestCaseEnd, TestSuite)
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-GTEST_REVERSE_REPEATER_METHOD_(OnTestSuiteEnd, TestSuite)
-GTEST_REVERSE_REPEATER_METHOD_(OnTestProgramEnd, UnitTest)
-
-#undef GTEST_REPEATER_METHOD_
-#undef GTEST_REVERSE_REPEATER_METHOD_
-
-void TestEventRepeater::OnTestIterationStart(const UnitTest& unit_test,
- int iteration) {
- if (forwarding_enabled_) {
- for (size_t i = 0; i < listeners_.size(); i++) {
- listeners_[i]->OnTestIterationStart(unit_test, iteration);
- }
- }
-}
-
-void TestEventRepeater::OnTestIterationEnd(const UnitTest& unit_test,
- int iteration) {
- if (forwarding_enabled_) {
- for (size_t i = listeners_.size(); i > 0; i--) {
- listeners_[i - 1]->OnTestIterationEnd(unit_test, iteration);
- }
- }
-}
-
-// End TestEventRepeater
-
-// This class generates an XML output file.
-class XmlUnitTestResultPrinter : public EmptyTestEventListener {
- public:
- explicit XmlUnitTestResultPrinter(const char* output_file);
-
- void OnTestIterationEnd(const UnitTest& unit_test, int iteration) override;
- void ListTestsMatchingFilter(const std::vector<TestSuite*>& test_suites);
-
- // Prints an XML summary of all unit tests.
- static void PrintXmlTestsList(std::ostream* stream,
- const std::vector<TestSuite*>& test_suites);
-
- private:
- // Is c a whitespace character that is normalized to a space character
- // when it appears in an XML attribute value?
- static bool IsNormalizableWhitespace(char c) {
- return c == 0x9 || c == 0xA || c == 0xD;
- }
-
- // May c appear in a well-formed XML document?
- static bool IsValidXmlCharacter(char c) {
- return IsNormalizableWhitespace(c) || c >= 0x20;
- }
-
- // Returns an XML-escaped copy of the input string str. If
- // is_attribute is true, the text is meant to appear as an attribute
- // value, and normalizable whitespace is preserved by replacing it
- // with character references.
- static std::string EscapeXml(const std::string& str, bool is_attribute);
-
- // Returns the given string with all characters invalid in XML removed.
- static std::string RemoveInvalidXmlCharacters(const std::string& str);
-
- // Convenience wrapper around EscapeXml when str is an attribute value.
- static std::string EscapeXmlAttribute(const std::string& str) {
- return EscapeXml(str, true);
- }
-
- // Convenience wrapper around EscapeXml when str is not an attribute value.
- static std::string EscapeXmlText(const char* str) {
- return EscapeXml(str, false);
- }
-
- // Verifies that the given attribute belongs to the given element and
- // streams the attribute as XML.
- static void OutputXmlAttribute(std::ostream* stream,
- const std::string& element_name,
- const std::string& name,
- const std::string& value);
-
- // Streams an XML CDATA section, escaping invalid CDATA sequences as needed.
- static void OutputXmlCDataSection(::std::ostream* stream, const char* data);
-
- // Streams an XML representation of a TestInfo object.
- static void OutputXmlTestInfo(::std::ostream* stream,
- const char* test_suite_name,
- const TestInfo& test_info);
-
- // Prints an XML representation of a TestSuite object
- static void PrintXmlTestSuite(::std::ostream* stream,
- const TestSuite& test_suite);
-
- // Prints an XML summary of unit_test to output stream out.
- static void PrintXmlUnitTest(::std::ostream* stream,
- const UnitTest& unit_test);
-
- // Produces a string representing the test properties in a result as space
- // delimited XML attributes based on the property key="value" pairs.
- // When the std::string is not empty, it includes a space at the beginning,
- // to delimit this attribute from prior attributes.
- static std::string TestPropertiesAsXmlAttributes(const TestResult& result);
-
- // Streams an XML representation of the test properties of a TestResult
- // object.
- static void OutputXmlTestProperties(std::ostream* stream,
- const TestResult& result);
-
- // The output file.
- const std::string output_file_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(XmlUnitTestResultPrinter);
-};
-
-// Creates a new XmlUnitTestResultPrinter.
-XmlUnitTestResultPrinter::XmlUnitTestResultPrinter(const char* output_file)
- : output_file_(output_file) {
- if (output_file_.empty()) {
- GTEST_LOG_(FATAL) << "XML output file may not be null";
- }
-}
-
-// Called after the unit test ends.
-void XmlUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
- int /*iteration*/) {
- FILE* xmlout = OpenFileForWriting(output_file_);
- std::stringstream stream;
- PrintXmlUnitTest(&stream, unit_test);
- fprintf(xmlout, "%s", StringStreamToString(&stream).c_str());
- fclose(xmlout);
-}
-
-void XmlUnitTestResultPrinter::ListTestsMatchingFilter(
- const std::vector<TestSuite*>& test_suites) {
- FILE* xmlout = OpenFileForWriting(output_file_);
- std::stringstream stream;
- PrintXmlTestsList(&stream, test_suites);
- fprintf(xmlout, "%s", StringStreamToString(&stream).c_str());
- fclose(xmlout);
-}
-
-// Returns an XML-escaped copy of the input string str. If is_attribute
-// is true, the text is meant to appear as an attribute value, and
-// normalizable whitespace is preserved by replacing it with character
-// references.
-//
-// Invalid XML characters in str, if any, are stripped from the output.
-// It is expected that most, if not all, of the text processed by this
-// module will consist of ordinary English text.
-// If this module is ever modified to produce version 1.1 XML output,
-// most invalid characters can be retained using character references.
-std::string XmlUnitTestResultPrinter::EscapeXml(
- const std::string& str, bool is_attribute) {
- Message m;
-
- for (size_t i = 0; i < str.size(); ++i) {
- const char ch = str[i];
- switch (ch) {
- case '<':
- m << "&lt;";
- break;
- case '>':
- m << "&gt;";
- break;
- case '&':
- m << "&amp;";
- break;
- case '\'':
- if (is_attribute)
- m << "&apos;";
- else
- m << '\'';
- break;
- case '"':
- if (is_attribute)
- m << "&quot;";
- else
- m << '"';
- break;
- default:
- if (IsValidXmlCharacter(ch)) {
- if (is_attribute && IsNormalizableWhitespace(ch))
- m << "&#x" << String::FormatByte(static_cast<unsigned char>(ch))
- << ";";
- else
- m << ch;
- }
- break;
- }
- }
-
- return m.GetString();
-}
-
-// Returns the given string with all characters invalid in XML removed.
-// Currently invalid characters are dropped from the string. An
-// alternative is to replace them with certain characters such as . or ?.
-std::string XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters(
- const std::string& str) {
- std::string output;
- output.reserve(str.size());
- for (std::string::const_iterator it = str.begin(); it != str.end(); ++it)
- if (IsValidXmlCharacter(*it))
- output.push_back(*it);
-
- return output;
-}
-
-// The following routines generate an XML representation of a UnitTest
-// object.
-// GOOGLETEST_CM0009 DO NOT DELETE
-//
-// This is how Google Test concepts map to the DTD:
-//
-// <testsuites name="AllTests"> <-- corresponds to a UnitTest object
-// <testsuite name="testcase-name"> <-- corresponds to a TestSuite object
-// <testcase name="test-name"> <-- corresponds to a TestInfo object
-// <failure message="...">...</failure>
-// <failure message="...">...</failure>
-// <failure message="...">...</failure>
-// <-- individual assertion failures
-// </testcase>
-// </testsuite>
-// </testsuites>
-
-// Formats the given time in milliseconds as seconds.
-std::string FormatTimeInMillisAsSeconds(TimeInMillis ms) {
- ::std::stringstream ss;
- ss << (static_cast<double>(ms) * 1e-3);
- return ss.str();
-}
-
-static bool PortableLocaltime(time_t seconds, struct tm* out) {
-#if defined(_MSC_VER)
- return localtime_s(out, &seconds) == 0;
-#elif defined(__MINGW32__) || defined(__MINGW64__)
- // MINGW <time.h> provides neither localtime_r nor localtime_s, but uses
- // Windows' localtime(), which has a thread-local tm buffer.
- struct tm* tm_ptr = localtime(&seconds); // NOLINT
- if (tm_ptr == nullptr) return false;
- *out = *tm_ptr;
- return true;
-#else
- return localtime_r(&seconds, out) != nullptr;
-#endif
-}
-
-// Converts the given epoch time in milliseconds to a date string in the ISO
-// 8601 format, without the timezone information.
-std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms) {
- struct tm time_struct;
- if (!PortableLocaltime(static_cast<time_t>(ms / 1000), &time_struct))
- return "";
- // YYYY-MM-DDThh:mm:ss
- return StreamableToString(time_struct.tm_year + 1900) + "-" +
- String::FormatIntWidth2(time_struct.tm_mon + 1) + "-" +
- String::FormatIntWidth2(time_struct.tm_mday) + "T" +
- String::FormatIntWidth2(time_struct.tm_hour) + ":" +
- String::FormatIntWidth2(time_struct.tm_min) + ":" +
- String::FormatIntWidth2(time_struct.tm_sec);
-}
-
-// Streams an XML CDATA section, escaping invalid CDATA sequences as needed.
-void XmlUnitTestResultPrinter::OutputXmlCDataSection(::std::ostream* stream,
- const char* data) {
- const char* segment = data;
- *stream << "<![CDATA[";
- for (;;) {
- const char* const next_segment = strstr(segment, "]]>");
- if (next_segment != nullptr) {
- stream->write(
- segment, static_cast<std::streamsize>(next_segment - segment));
- *stream << "]]>]]&gt;<![CDATA[";
- segment = next_segment + strlen("]]>");
- } else {
- *stream << segment;
- break;
- }
- }
- *stream << "]]>";
-}
-
-void XmlUnitTestResultPrinter::OutputXmlAttribute(
- std::ostream* stream,
- const std::string& element_name,
- const std::string& name,
- const std::string& value) {
- const std::vector<std::string>& allowed_names =
- GetReservedOutputAttributesForElement(element_name);
-
- GTEST_CHECK_(std::find(allowed_names.begin(), allowed_names.end(), name) !=
- allowed_names.end())
- << "Attribute " << name << " is not allowed for element <" << element_name
- << ">.";
-
- *stream << " " << name << "=\"" << EscapeXmlAttribute(value) << "\"";
-}
-
-// Prints an XML representation of a TestInfo object.
-void XmlUnitTestResultPrinter::OutputXmlTestInfo(::std::ostream* stream,
- const char* test_suite_name,
- const TestInfo& test_info) {
- const TestResult& result = *test_info.result();
- const std::string kTestsuite = "testcase";
-
- if (test_info.is_in_another_shard()) {
- return;
- }
-
- *stream << " <testcase";
- OutputXmlAttribute(stream, kTestsuite, "name", test_info.name());
-
- if (test_info.value_param() != nullptr) {
- OutputXmlAttribute(stream, kTestsuite, "value_param",
- test_info.value_param());
- }
- if (test_info.type_param() != nullptr) {
- OutputXmlAttribute(stream, kTestsuite, "type_param",
- test_info.type_param());
- }
- if (GTEST_FLAG(list_tests)) {
- OutputXmlAttribute(stream, kTestsuite, "file", test_info.file());
- OutputXmlAttribute(stream, kTestsuite, "line",
- StreamableToString(test_info.line()));
- *stream << " />\n";
- return;
- }
-
- OutputXmlAttribute(stream, kTestsuite, "status",
- test_info.should_run() ? "run" : "notrun");
- OutputXmlAttribute(stream, kTestsuite, "result",
- test_info.should_run()
- ? (result.Skipped() ? "skipped" : "completed")
- : "suppressed");
- OutputXmlAttribute(stream, kTestsuite, "time",
- FormatTimeInMillisAsSeconds(result.elapsed_time()));
- OutputXmlAttribute(
- stream, kTestsuite, "timestamp",
- FormatEpochTimeInMillisAsIso8601(result.start_timestamp()));
- OutputXmlAttribute(stream, kTestsuite, "classname", test_suite_name);
-
- int failures = 0;
- for (int i = 0; i < result.total_part_count(); ++i) {
- const TestPartResult& part = result.GetTestPartResult(i);
- if (part.failed()) {
- if (++failures == 1) {
- *stream << ">\n";
- }
- const std::string location =
- internal::FormatCompilerIndependentFileLocation(part.file_name(),
- part.line_number());
- const std::string summary = location + "\n" + part.summary();
- *stream << " <failure message=\""
- << EscapeXmlAttribute(summary.c_str())
- << "\" type=\"\">";
- const std::string detail = location + "\n" + part.message();
- OutputXmlCDataSection(stream, RemoveInvalidXmlCharacters(detail).c_str());
- *stream << "</failure>\n";
- }
- }
-
- if (failures == 0 && result.test_property_count() == 0) {
- *stream << " />\n";
- } else {
- if (failures == 0) {
- *stream << ">\n";
- }
- OutputXmlTestProperties(stream, result);
- *stream << " </testcase>\n";
- }
-}
-
-// Prints an XML representation of a TestSuite object
-void XmlUnitTestResultPrinter::PrintXmlTestSuite(std::ostream* stream,
- const TestSuite& test_suite) {
- const std::string kTestsuite = "testsuite";
- *stream << " <" << kTestsuite;
- OutputXmlAttribute(stream, kTestsuite, "name", test_suite.name());
- OutputXmlAttribute(stream, kTestsuite, "tests",
- StreamableToString(test_suite.reportable_test_count()));
- if (!GTEST_FLAG(list_tests)) {
- OutputXmlAttribute(stream, kTestsuite, "failures",
- StreamableToString(test_suite.failed_test_count()));
- OutputXmlAttribute(
- stream, kTestsuite, "disabled",
- StreamableToString(test_suite.reportable_disabled_test_count()));
- OutputXmlAttribute(stream, kTestsuite, "errors", "0");
- OutputXmlAttribute(stream, kTestsuite, "time",
- FormatTimeInMillisAsSeconds(test_suite.elapsed_time()));
- OutputXmlAttribute(
- stream, kTestsuite, "timestamp",
- FormatEpochTimeInMillisAsIso8601(test_suite.start_timestamp()));
- *stream << TestPropertiesAsXmlAttributes(test_suite.ad_hoc_test_result());
- }
- *stream << ">\n";
- for (int i = 0; i < test_suite.total_test_count(); ++i) {
- if (test_suite.GetTestInfo(i)->is_reportable())
- OutputXmlTestInfo(stream, test_suite.name(), *test_suite.GetTestInfo(i));
- }
- *stream << " </" << kTestsuite << ">\n";
-}
-
-// Prints an XML summary of unit_test to output stream out.
-void XmlUnitTestResultPrinter::PrintXmlUnitTest(std::ostream* stream,
- const UnitTest& unit_test) {
- const std::string kTestsuites = "testsuites";
-
- *stream << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
- *stream << "<" << kTestsuites;
-
- OutputXmlAttribute(stream, kTestsuites, "tests",
- StreamableToString(unit_test.reportable_test_count()));
- OutputXmlAttribute(stream, kTestsuites, "failures",
- StreamableToString(unit_test.failed_test_count()));
- OutputXmlAttribute(
- stream, kTestsuites, "disabled",
- StreamableToString(unit_test.reportable_disabled_test_count()));
- OutputXmlAttribute(stream, kTestsuites, "errors", "0");
- OutputXmlAttribute(stream, kTestsuites, "time",
- FormatTimeInMillisAsSeconds(unit_test.elapsed_time()));
- OutputXmlAttribute(
- stream, kTestsuites, "timestamp",
- FormatEpochTimeInMillisAsIso8601(unit_test.start_timestamp()));
-
- if (GTEST_FLAG(shuffle)) {
- OutputXmlAttribute(stream, kTestsuites, "random_seed",
- StreamableToString(unit_test.random_seed()));
- }
- *stream << TestPropertiesAsXmlAttributes(unit_test.ad_hoc_test_result());
-
- OutputXmlAttribute(stream, kTestsuites, "name", "AllTests");
- *stream << ">\n";
-
- for (int i = 0; i < unit_test.total_test_suite_count(); ++i) {
- if (unit_test.GetTestSuite(i)->reportable_test_count() > 0)
- PrintXmlTestSuite(stream, *unit_test.GetTestSuite(i));
- }
- *stream << "</" << kTestsuites << ">\n";
-}
-
-void XmlUnitTestResultPrinter::PrintXmlTestsList(
- std::ostream* stream, const std::vector<TestSuite*>& test_suites) {
- const std::string kTestsuites = "testsuites";
-
- *stream << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
- *stream << "<" << kTestsuites;
-
- int total_tests = 0;
- for (auto test_suite : test_suites) {
- total_tests += test_suite->total_test_count();
- }
- OutputXmlAttribute(stream, kTestsuites, "tests",
- StreamableToString(total_tests));
- OutputXmlAttribute(stream, kTestsuites, "name", "AllTests");
- *stream << ">\n";
-
- for (auto test_suite : test_suites) {
- PrintXmlTestSuite(stream, *test_suite);
- }
- *stream << "</" << kTestsuites << ">\n";
-}
-
-// Produces a string representing the test properties in a result as space
-// delimited XML attributes based on the property key="value" pairs.
-std::string XmlUnitTestResultPrinter::TestPropertiesAsXmlAttributes(
- const TestResult& result) {
- Message attributes;
- for (int i = 0; i < result.test_property_count(); ++i) {
- const TestProperty& property = result.GetTestProperty(i);
- attributes << " " << property.key() << "="
- << "\"" << EscapeXmlAttribute(property.value()) << "\"";
- }
- return attributes.GetString();
-}
-
-void XmlUnitTestResultPrinter::OutputXmlTestProperties(
- std::ostream* stream, const TestResult& result) {
- const std::string kProperties = "properties";
- const std::string kProperty = "property";
-
- if (result.test_property_count() <= 0) {
- return;
- }
-
- *stream << "<" << kProperties << ">\n";
- for (int i = 0; i < result.test_property_count(); ++i) {
- const TestProperty& property = result.GetTestProperty(i);
- *stream << "<" << kProperty;
- *stream << " name=\"" << EscapeXmlAttribute(property.key()) << "\"";
- *stream << " value=\"" << EscapeXmlAttribute(property.value()) << "\"";
- *stream << "/>\n";
- }
- *stream << "</" << kProperties << ">\n";
-}
-
-// End XmlUnitTestResultPrinter
-
-// This class generates an JSON output file.
-class JsonUnitTestResultPrinter : public EmptyTestEventListener {
- public:
- explicit JsonUnitTestResultPrinter(const char* output_file);
-
- void OnTestIterationEnd(const UnitTest& unit_test, int iteration) override;
-
- // Prints an JSON summary of all unit tests.
- static void PrintJsonTestList(::std::ostream* stream,
- const std::vector<TestSuite*>& test_suites);
-
- private:
- // Returns an JSON-escaped copy of the input string str.
- static std::string EscapeJson(const std::string& str);
-
- //// Verifies that the given attribute belongs to the given element and
- //// streams the attribute as JSON.
- static void OutputJsonKey(std::ostream* stream,
- const std::string& element_name,
- const std::string& name,
- const std::string& value,
- const std::string& indent,
- bool comma = true);
- static void OutputJsonKey(std::ostream* stream,
- const std::string& element_name,
- const std::string& name,
- int value,
- const std::string& indent,
- bool comma = true);
-
- // Streams a JSON representation of a TestInfo object.
- static void OutputJsonTestInfo(::std::ostream* stream,
- const char* test_suite_name,
- const TestInfo& test_info);
-
- // Prints a JSON representation of a TestSuite object
- static void PrintJsonTestSuite(::std::ostream* stream,
- const TestSuite& test_suite);
-
- // Prints a JSON summary of unit_test to output stream out.
- static void PrintJsonUnitTest(::std::ostream* stream,
- const UnitTest& unit_test);
-
- // Produces a string representing the test properties in a result as
- // a JSON dictionary.
- static std::string TestPropertiesAsJson(const TestResult& result,
- const std::string& indent);
-
- // The output file.
- const std::string output_file_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(JsonUnitTestResultPrinter);
-};
-
-// Creates a new JsonUnitTestResultPrinter.
-JsonUnitTestResultPrinter::JsonUnitTestResultPrinter(const char* output_file)
- : output_file_(output_file) {
- if (output_file_.empty()) {
- GTEST_LOG_(FATAL) << "JSON output file may not be null";
- }
-}
-
-void JsonUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
- int /*iteration*/) {
- FILE* jsonout = OpenFileForWriting(output_file_);
- std::stringstream stream;
- PrintJsonUnitTest(&stream, unit_test);
- fprintf(jsonout, "%s", StringStreamToString(&stream).c_str());
- fclose(jsonout);
-}
-
-// Returns an JSON-escaped copy of the input string str.
-std::string JsonUnitTestResultPrinter::EscapeJson(const std::string& str) {
- Message m;
-
- for (size_t i = 0; i < str.size(); ++i) {
- const char ch = str[i];
- switch (ch) {
- case '\\':
- case '"':
- case '/':
- m << '\\' << ch;
- break;
- case '\b':
- m << "\\b";
- break;
- case '\t':
- m << "\\t";
- break;
- case '\n':
- m << "\\n";
- break;
- case '\f':
- m << "\\f";
- break;
- case '\r':
- m << "\\r";
- break;
- default:
- if (ch < ' ') {
- m << "\\u00" << String::FormatByte(static_cast<unsigned char>(ch));
- } else {
- m << ch;
- }
- break;
- }
- }
-
- return m.GetString();
-}
-
-// The following routines generate an JSON representation of a UnitTest
-// object.
-
-// Formats the given time in milliseconds as seconds.
-static std::string FormatTimeInMillisAsDuration(TimeInMillis ms) {
- ::std::stringstream ss;
- ss << (static_cast<double>(ms) * 1e-3) << "s";
- return ss.str();
-}
-
-// Converts the given epoch time in milliseconds to a date string in the
-// RFC3339 format, without the timezone information.
-static std::string FormatEpochTimeInMillisAsRFC3339(TimeInMillis ms) {
- struct tm time_struct;
- if (!PortableLocaltime(static_cast<time_t>(ms / 1000), &time_struct))
- return "";
- // YYYY-MM-DDThh:mm:ss
- return StreamableToString(time_struct.tm_year + 1900) + "-" +
- String::FormatIntWidth2(time_struct.tm_mon + 1) + "-" +
- String::FormatIntWidth2(time_struct.tm_mday) + "T" +
- String::FormatIntWidth2(time_struct.tm_hour) + ":" +
- String::FormatIntWidth2(time_struct.tm_min) + ":" +
- String::FormatIntWidth2(time_struct.tm_sec) + "Z";
-}
-
-static inline std::string Indent(size_t width) {
- return std::string(width, ' ');
-}
-
-void JsonUnitTestResultPrinter::OutputJsonKey(
- std::ostream* stream,
- const std::string& element_name,
- const std::string& name,
- const std::string& value,
- const std::string& indent,
- bool comma) {
- const std::vector<std::string>& allowed_names =
- GetReservedOutputAttributesForElement(element_name);
-
- GTEST_CHECK_(std::find(allowed_names.begin(), allowed_names.end(), name) !=
- allowed_names.end())
- << "Key \"" << name << "\" is not allowed for value \"" << element_name
- << "\".";
-
- *stream << indent << "\"" << name << "\": \"" << EscapeJson(value) << "\"";
- if (comma)
- *stream << ",\n";
-}
-
-void JsonUnitTestResultPrinter::OutputJsonKey(
- std::ostream* stream,
- const std::string& element_name,
- const std::string& name,
- int value,
- const std::string& indent,
- bool comma) {
- const std::vector<std::string>& allowed_names =
- GetReservedOutputAttributesForElement(element_name);
-
- GTEST_CHECK_(std::find(allowed_names.begin(), allowed_names.end(), name) !=
- allowed_names.end())
- << "Key \"" << name << "\" is not allowed for value \"" << element_name
- << "\".";
-
- *stream << indent << "\"" << name << "\": " << StreamableToString(value);
- if (comma)
- *stream << ",\n";
-}
-
-// Prints a JSON representation of a TestInfo object.
-void JsonUnitTestResultPrinter::OutputJsonTestInfo(::std::ostream* stream,
- const char* test_suite_name,
- const TestInfo& test_info) {
- const TestResult& result = *test_info.result();
- const std::string kTestsuite = "testcase";
- const std::string kIndent = Indent(10);
-
- *stream << Indent(8) << "{\n";
- OutputJsonKey(stream, kTestsuite, "name", test_info.name(), kIndent);
-
- if (test_info.value_param() != nullptr) {
- OutputJsonKey(stream, kTestsuite, "value_param", test_info.value_param(),
- kIndent);
- }
- if (test_info.type_param() != nullptr) {
- OutputJsonKey(stream, kTestsuite, "type_param", test_info.type_param(),
- kIndent);
- }
- if (GTEST_FLAG(list_tests)) {
- OutputJsonKey(stream, kTestsuite, "file", test_info.file(), kIndent);
- OutputJsonKey(stream, kTestsuite, "line", test_info.line(), kIndent, false);
- *stream << "\n" << Indent(8) << "}";
- return;
- }
-
- OutputJsonKey(stream, kTestsuite, "status",
- test_info.should_run() ? "RUN" : "NOTRUN", kIndent);
- OutputJsonKey(stream, kTestsuite, "result",
- test_info.should_run()
- ? (result.Skipped() ? "SKIPPED" : "COMPLETED")
- : "SUPPRESSED",
- kIndent);
- OutputJsonKey(stream, kTestsuite, "timestamp",
- FormatEpochTimeInMillisAsRFC3339(result.start_timestamp()),
- kIndent);
- OutputJsonKey(stream, kTestsuite, "time",
- FormatTimeInMillisAsDuration(result.elapsed_time()), kIndent);
- OutputJsonKey(stream, kTestsuite, "classname", test_suite_name, kIndent,
- false);
- *stream << TestPropertiesAsJson(result, kIndent);
-
- int failures = 0;
- for (int i = 0; i < result.total_part_count(); ++i) {
- const TestPartResult& part = result.GetTestPartResult(i);
- if (part.failed()) {
- *stream << ",\n";
- if (++failures == 1) {
- *stream << kIndent << "\"" << "failures" << "\": [\n";
- }
- const std::string location =
- internal::FormatCompilerIndependentFileLocation(part.file_name(),
- part.line_number());
- const std::string message = EscapeJson(location + "\n" + part.message());
- *stream << kIndent << " {\n"
- << kIndent << " \"failure\": \"" << message << "\",\n"
- << kIndent << " \"type\": \"\"\n"
- << kIndent << " }";
- }
- }
-
- if (failures > 0)
- *stream << "\n" << kIndent << "]";
- *stream << "\n" << Indent(8) << "}";
-}
-
-// Prints an JSON representation of a TestSuite object
-void JsonUnitTestResultPrinter::PrintJsonTestSuite(
- std::ostream* stream, const TestSuite& test_suite) {
- const std::string kTestsuite = "testsuite";
- const std::string kIndent = Indent(6);
-
- *stream << Indent(4) << "{\n";
- OutputJsonKey(stream, kTestsuite, "name", test_suite.name(), kIndent);
- OutputJsonKey(stream, kTestsuite, "tests", test_suite.reportable_test_count(),
- kIndent);
- if (!GTEST_FLAG(list_tests)) {
- OutputJsonKey(stream, kTestsuite, "failures",
- test_suite.failed_test_count(), kIndent);
- OutputJsonKey(stream, kTestsuite, "disabled",
- test_suite.reportable_disabled_test_count(), kIndent);
- OutputJsonKey(stream, kTestsuite, "errors", 0, kIndent);
- OutputJsonKey(
- stream, kTestsuite, "timestamp",
- FormatEpochTimeInMillisAsRFC3339(test_suite.start_timestamp()),
- kIndent);
- OutputJsonKey(stream, kTestsuite, "time",
- FormatTimeInMillisAsDuration(test_suite.elapsed_time()),
- kIndent, false);
- *stream << TestPropertiesAsJson(test_suite.ad_hoc_test_result(), kIndent)
- << ",\n";
- }
-
- *stream << kIndent << "\"" << kTestsuite << "\": [\n";
-
- bool comma = false;
- for (int i = 0; i < test_suite.total_test_count(); ++i) {
- if (test_suite.GetTestInfo(i)->is_reportable()) {
- if (comma) {
- *stream << ",\n";
- } else {
- comma = true;
- }
- OutputJsonTestInfo(stream, test_suite.name(), *test_suite.GetTestInfo(i));
- }
- }
- *stream << "\n" << kIndent << "]\n" << Indent(4) << "}";
-}
-
-// Prints a JSON summary of unit_test to output stream out.
-void JsonUnitTestResultPrinter::PrintJsonUnitTest(std::ostream* stream,
- const UnitTest& unit_test) {
- const std::string kTestsuites = "testsuites";
- const std::string kIndent = Indent(2);
- *stream << "{\n";
-
- OutputJsonKey(stream, kTestsuites, "tests", unit_test.reportable_test_count(),
- kIndent);
- OutputJsonKey(stream, kTestsuites, "failures", unit_test.failed_test_count(),
- kIndent);
- OutputJsonKey(stream, kTestsuites, "disabled",
- unit_test.reportable_disabled_test_count(), kIndent);
- OutputJsonKey(stream, kTestsuites, "errors", 0, kIndent);
- if (GTEST_FLAG(shuffle)) {
- OutputJsonKey(stream, kTestsuites, "random_seed", unit_test.random_seed(),
- kIndent);
- }
- OutputJsonKey(stream, kTestsuites, "timestamp",
- FormatEpochTimeInMillisAsRFC3339(unit_test.start_timestamp()),
- kIndent);
- OutputJsonKey(stream, kTestsuites, "time",
- FormatTimeInMillisAsDuration(unit_test.elapsed_time()), kIndent,
- false);
-
- *stream << TestPropertiesAsJson(unit_test.ad_hoc_test_result(), kIndent)
- << ",\n";
-
- OutputJsonKey(stream, kTestsuites, "name", "AllTests", kIndent);
- *stream << kIndent << "\"" << kTestsuites << "\": [\n";
-
- bool comma = false;
- for (int i = 0; i < unit_test.total_test_suite_count(); ++i) {
- if (unit_test.GetTestSuite(i)->reportable_test_count() > 0) {
- if (comma) {
- *stream << ",\n";
- } else {
- comma = true;
- }
- PrintJsonTestSuite(stream, *unit_test.GetTestSuite(i));
- }
- }
-
- *stream << "\n" << kIndent << "]\n" << "}\n";
-}
-
-void JsonUnitTestResultPrinter::PrintJsonTestList(
- std::ostream* stream, const std::vector<TestSuite*>& test_suites) {
- const std::string kTestsuites = "testsuites";
- const std::string kIndent = Indent(2);
- *stream << "{\n";
- int total_tests = 0;
- for (auto test_suite : test_suites) {
- total_tests += test_suite->total_test_count();
- }
- OutputJsonKey(stream, kTestsuites, "tests", total_tests, kIndent);
-
- OutputJsonKey(stream, kTestsuites, "name", "AllTests", kIndent);
- *stream << kIndent << "\"" << kTestsuites << "\": [\n";
-
- for (size_t i = 0; i < test_suites.size(); ++i) {
- if (i != 0) {
- *stream << ",\n";
- }
- PrintJsonTestSuite(stream, *test_suites[i]);
- }
-
- *stream << "\n"
- << kIndent << "]\n"
- << "}\n";
-}
-// Produces a string representing the test properties in a result as
-// a JSON dictionary.
-std::string JsonUnitTestResultPrinter::TestPropertiesAsJson(
- const TestResult& result, const std::string& indent) {
- Message attributes;
- for (int i = 0; i < result.test_property_count(); ++i) {
- const TestProperty& property = result.GetTestProperty(i);
- attributes << ",\n" << indent << "\"" << property.key() << "\": "
- << "\"" << EscapeJson(property.value()) << "\"";
- }
- return attributes.GetString();
-}
-
-// End JsonUnitTestResultPrinter
-
-#if GTEST_CAN_STREAM_RESULTS_
-
-// Checks if str contains '=', '&', '%' or '\n' characters. If yes,
-// replaces them by "%xx" where xx is their hexadecimal value. For
-// example, replaces "=" with "%3D". This algorithm is O(strlen(str))
-// in both time and space -- important as the input str may contain an
-// arbitrarily long test failure message and stack trace.
-std::string StreamingListener::UrlEncode(const char* str) {
- std::string result;
- result.reserve(strlen(str) + 1);
- for (char ch = *str; ch != '\0'; ch = *++str) {
- switch (ch) {
- case '%':
- case '=':
- case '&':
- case '\n':
- result.append("%" + String::FormatByte(static_cast<unsigned char>(ch)));
- break;
- default:
- result.push_back(ch);
- break;
- }
- }
- return result;
-}
-
-void StreamingListener::SocketWriter::MakeConnection() {
- GTEST_CHECK_(sockfd_ == -1)
- << "MakeConnection() can't be called when there is already a connection.";
-
- addrinfo hints;
- memset(&hints, 0, sizeof(hints));
- hints.ai_family = AF_UNSPEC; // To allow both IPv4 and IPv6 addresses.
- hints.ai_socktype = SOCK_STREAM;
- addrinfo* servinfo = nullptr;
-
- // Use the getaddrinfo() to get a linked list of IP addresses for
- // the given host name.
- const int error_num = getaddrinfo(
- host_name_.c_str(), port_num_.c_str(), &hints, &servinfo);
- if (error_num != 0) {
- GTEST_LOG_(WARNING) << "stream_result_to: getaddrinfo() failed: "
- << gai_strerror(error_num);
- }
-
- // Loop through all the results and connect to the first we can.
- for (addrinfo* cur_addr = servinfo; sockfd_ == -1 && cur_addr != nullptr;
- cur_addr = cur_addr->ai_next) {
- sockfd_ = socket(
- cur_addr->ai_family, cur_addr->ai_socktype, cur_addr->ai_protocol);
- if (sockfd_ != -1) {
- // Connect the client socket to the server socket.
- if (connect(sockfd_, cur_addr->ai_addr, cur_addr->ai_addrlen) == -1) {
- close(sockfd_);
- sockfd_ = -1;
- }
- }
- }
-
- freeaddrinfo(servinfo); // all done with this structure
-
- if (sockfd_ == -1) {
- GTEST_LOG_(WARNING) << "stream_result_to: failed to connect to "
- << host_name_ << ":" << port_num_;
- }
-}
-
-// End of class Streaming Listener
-#endif // GTEST_CAN_STREAM_RESULTS__
-
-// class OsStackTraceGetter
-
-const char* const OsStackTraceGetterInterface::kElidedFramesMarker =
- "... " GTEST_NAME_ " internal frames ...";
-
-std::string OsStackTraceGetter::CurrentStackTrace(int max_depth, int skip_count)
- GTEST_LOCK_EXCLUDED_(mutex_) {
-#if GTEST_HAS_ABSL
- std::string result;
-
- if (max_depth <= 0) {
- return result;
- }
-
- max_depth = std::min(max_depth, kMaxStackTraceDepth);
-
- std::vector<void*> raw_stack(max_depth);
- // Skips the frames requested by the caller, plus this function.
- const int raw_stack_size =
- absl::GetStackTrace(&raw_stack[0], max_depth, skip_count + 1);
-
- void* caller_frame = nullptr;
- {
- MutexLock lock(&mutex_);
- caller_frame = caller_frame_;
- }
-
- for (int i = 0; i < raw_stack_size; ++i) {
- if (raw_stack[i] == caller_frame &&
- !GTEST_FLAG(show_internal_stack_frames)) {
- // Add a marker to the trace and stop adding frames.
- absl::StrAppend(&result, kElidedFramesMarker, "\n");
- break;
- }
-
- char tmp[1024];
- const char* symbol = "(unknown)";
- if (absl::Symbolize(raw_stack[i], tmp, sizeof(tmp))) {
- symbol = tmp;
- }
-
- char line[1024];
- snprintf(line, sizeof(line), " %p: %s\n", raw_stack[i], symbol);
- result += line;
- }
-
- return result;
-
-#else // !GTEST_HAS_ABSL
- static_cast<void>(max_depth);
- static_cast<void>(skip_count);
- return "";
-#endif // GTEST_HAS_ABSL
-}
-
-void OsStackTraceGetter::UponLeavingGTest() GTEST_LOCK_EXCLUDED_(mutex_) {
-#if GTEST_HAS_ABSL
- void* caller_frame = nullptr;
- if (absl::GetStackTrace(&caller_frame, 1, 3) <= 0) {
- caller_frame = nullptr;
- }
-
- MutexLock lock(&mutex_);
- caller_frame_ = caller_frame;
-#endif // GTEST_HAS_ABSL
-}
-
-// A helper class that creates the premature-exit file in its
-// constructor and deletes the file in its destructor.
-class ScopedPrematureExitFile {
- public:
- explicit ScopedPrematureExitFile(const char* premature_exit_filepath)
- : premature_exit_filepath_(premature_exit_filepath ?
- premature_exit_filepath : "") {
- // If a path to the premature-exit file is specified...
- if (!premature_exit_filepath_.empty()) {
- // create the file with a single "0" character in it. I/O
- // errors are ignored as there's nothing better we can do and we
- // don't want to fail the test because of this.
- FILE* pfile = posix::FOpen(premature_exit_filepath, "w");
- fwrite("0", 1, 1, pfile);
- fclose(pfile);
- }
- }
-
- ~ScopedPrematureExitFile() {
- if (!premature_exit_filepath_.empty()) {
- int retval = remove(premature_exit_filepath_.c_str());
- if (retval) {
- GTEST_LOG_(ERROR) << "Failed to remove premature exit filepath \""
- << premature_exit_filepath_ << "\" with error "
- << retval;
- }
- }
- }
-
- private:
- const std::string premature_exit_filepath_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedPrematureExitFile);
-};
-
-} // namespace internal
-
-// class TestEventListeners
-
-TestEventListeners::TestEventListeners()
- : repeater_(new internal::TestEventRepeater()),
- default_result_printer_(nullptr),
- default_xml_generator_(nullptr) {}
-
-TestEventListeners::~TestEventListeners() { delete repeater_; }
-
-// Returns the standard listener responsible for the default console
-// output. Can be removed from the listeners list to shut down default
-// console output. Note that removing this object from the listener list
-// with Release transfers its ownership to the user.
-void TestEventListeners::Append(TestEventListener* listener) {
- repeater_->Append(listener);
-}
-
-// Removes the given event listener from the list and returns it. It then
-// becomes the caller's responsibility to delete the listener. Returns
-// NULL if the listener is not found in the list.
-TestEventListener* TestEventListeners::Release(TestEventListener* listener) {
- if (listener == default_result_printer_)
- default_result_printer_ = nullptr;
- else if (listener == default_xml_generator_)
- default_xml_generator_ = nullptr;
- return repeater_->Release(listener);
-}
-
-// Returns repeater that broadcasts the TestEventListener events to all
-// subscribers.
-TestEventListener* TestEventListeners::repeater() { return repeater_; }
-
-// Sets the default_result_printer attribute to the provided listener.
-// The listener is also added to the listener list and previous
-// default_result_printer is removed from it and deleted. The listener can
-// also be NULL in which case it will not be added to the list. Does
-// nothing if the previous and the current listener objects are the same.
-void TestEventListeners::SetDefaultResultPrinter(TestEventListener* listener) {
- if (default_result_printer_ != listener) {
- // It is an error to pass this method a listener that is already in the
- // list.
- delete Release(default_result_printer_);
- default_result_printer_ = listener;
- if (listener != nullptr) Append(listener);
- }
-}
-
-// Sets the default_xml_generator attribute to the provided listener. The
-// listener is also added to the listener list and previous
-// default_xml_generator is removed from it and deleted. The listener can
-// also be NULL in which case it will not be added to the list. Does
-// nothing if the previous and the current listener objects are the same.
-void TestEventListeners::SetDefaultXmlGenerator(TestEventListener* listener) {
- if (default_xml_generator_ != listener) {
- // It is an error to pass this method a listener that is already in the
- // list.
- delete Release(default_xml_generator_);
- default_xml_generator_ = listener;
- if (listener != nullptr) Append(listener);
- }
-}
-
-// Controls whether events will be forwarded by the repeater to the
-// listeners in the list.
-bool TestEventListeners::EventForwardingEnabled() const {
- return repeater_->forwarding_enabled();
-}
-
-void TestEventListeners::SuppressEventForwarding() {
- repeater_->set_forwarding_enabled(false);
-}
-
-// class UnitTest
-
-// Gets the singleton UnitTest object. The first time this method is
-// called, a UnitTest object is constructed and returned. Consecutive
-// calls will return the same object.
-//
-// We don't protect this under mutex_ as a user is not supposed to
-// call this before main() starts, from which point on the return
-// value will never change.
-UnitTest* UnitTest::GetInstance() {
- // CodeGear C++Builder insists on a public destructor for the
- // default implementation. Use this implementation to keep good OO
- // design with private destructor.
-
-#if defined(__BORLANDC__)
- static UnitTest* const instance = new UnitTest;
- return instance;
-#else
- static UnitTest instance;
- return &instance;
-#endif // defined(__BORLANDC__)
-}
-
-// Gets the number of successful test suites.
-int UnitTest::successful_test_suite_count() const {
- return impl()->successful_test_suite_count();
-}
-
-// Gets the number of failed test suites.
-int UnitTest::failed_test_suite_count() const {
- return impl()->failed_test_suite_count();
-}
-
-// Gets the number of all test suites.
-int UnitTest::total_test_suite_count() const {
- return impl()->total_test_suite_count();
-}
-
-// Gets the number of all test suites that contain at least one test
-// that should run.
-int UnitTest::test_suite_to_run_count() const {
- return impl()->test_suite_to_run_count();
-}
-
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-int UnitTest::successful_test_case_count() const {
- return impl()->successful_test_suite_count();
-}
-int UnitTest::failed_test_case_count() const {
- return impl()->failed_test_suite_count();
-}
-int UnitTest::total_test_case_count() const {
- return impl()->total_test_suite_count();
-}
-int UnitTest::test_case_to_run_count() const {
- return impl()->test_suite_to_run_count();
-}
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-// Gets the number of successful tests.
-int UnitTest::successful_test_count() const {
- return impl()->successful_test_count();
-}
-
-// Gets the number of skipped tests.
-int UnitTest::skipped_test_count() const {
- return impl()->skipped_test_count();
-}
-
-// Gets the number of failed tests.
-int UnitTest::failed_test_count() const { return impl()->failed_test_count(); }
-
-// Gets the number of disabled tests that will be reported in the XML report.
-int UnitTest::reportable_disabled_test_count() const {
- return impl()->reportable_disabled_test_count();
-}
-
-// Gets the number of disabled tests.
-int UnitTest::disabled_test_count() const {
- return impl()->disabled_test_count();
-}
-
-// Gets the number of tests to be printed in the XML report.
-int UnitTest::reportable_test_count() const {
- return impl()->reportable_test_count();
-}
-
-// Gets the number of all tests.
-int UnitTest::total_test_count() const { return impl()->total_test_count(); }
-
-// Gets the number of tests that should run.
-int UnitTest::test_to_run_count() const { return impl()->test_to_run_count(); }
-
-// Gets the time of the test program start, in ms from the start of the
-// UNIX epoch.
-internal::TimeInMillis UnitTest::start_timestamp() const {
- return impl()->start_timestamp();
-}
-
-// Gets the elapsed time, in milliseconds.
-internal::TimeInMillis UnitTest::elapsed_time() const {
- return impl()->elapsed_time();
-}
-
-// Returns true if and only if the unit test passed (i.e. all test suites
-// passed).
-bool UnitTest::Passed() const { return impl()->Passed(); }
-
-// Returns true if and only if the unit test failed (i.e. some test suite
-// failed or something outside of all tests failed).
-bool UnitTest::Failed() const { return impl()->Failed(); }
-
-// Gets the i-th test suite among all the test suites. i can range from 0 to
-// total_test_suite_count() - 1. If i is not in that range, returns NULL.
-const TestSuite* UnitTest::GetTestSuite(int i) const {
- return impl()->GetTestSuite(i);
-}
-
-// Legacy API is deprecated but still available
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-const TestCase* UnitTest::GetTestCase(int i) const {
- return impl()->GetTestCase(i);
-}
-#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-
-// Returns the TestResult containing information on test failures and
-// properties logged outside of individual test suites.
-const TestResult& UnitTest::ad_hoc_test_result() const {
- return *impl()->ad_hoc_test_result();
-}
-
-// Gets the i-th test suite among all the test suites. i can range from 0 to
-// total_test_suite_count() - 1. If i is not in that range, returns NULL.
-TestSuite* UnitTest::GetMutableTestSuite(int i) {
- return impl()->GetMutableSuiteCase(i);
-}
-
-// Returns the list of event listeners that can be used to track events
-// inside Google Test.
-TestEventListeners& UnitTest::listeners() {
- return *impl()->listeners();
-}
-
-// Registers and returns a global test environment. When a test
-// program is run, all global test environments will be set-up in the
-// order they were registered. After all tests in the program have
-// finished, all global test environments will be torn-down in the
-// *reverse* order they were registered.
-//
-// The UnitTest object takes ownership of the given environment.
-//
-// We don't protect this under mutex_, as we only support calling it
-// from the main thread.
-Environment* UnitTest::AddEnvironment(Environment* env) {
- if (env == nullptr) {
- return nullptr;
- }
-
- impl_->environments().push_back(env);
- return env;
-}
-
-// Adds a TestPartResult to the current TestResult object. All Google Test
-// assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call
-// this to report their results. The user code should use the
-// assertion macros instead of calling this directly.
-void UnitTest::AddTestPartResult(
- TestPartResult::Type result_type,
- const char* file_name,
- int line_number,
- const std::string& message,
- const std::string& os_stack_trace) GTEST_LOCK_EXCLUDED_(mutex_) {
- Message msg;
- msg << message;
-
- internal::MutexLock lock(&mutex_);
- if (impl_->gtest_trace_stack().size() > 0) {
- msg << "\n" << GTEST_NAME_ << " trace:";
-
- for (size_t i = impl_->gtest_trace_stack().size(); i > 0; --i) {
- const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1];
- msg << "\n" << internal::FormatFileLocation(trace.file, trace.line)
- << " " << trace.message;
- }
- }
-
- if (os_stack_trace.c_str() != nullptr && !os_stack_trace.empty()) {
- msg << internal::kStackTraceMarker << os_stack_trace;
- }
-
- const TestPartResult result = TestPartResult(
- result_type, file_name, line_number, msg.GetString().c_str());
- impl_->GetTestPartResultReporterForCurrentThread()->
- ReportTestPartResult(result);
-
- if (result_type != TestPartResult::kSuccess &&
- result_type != TestPartResult::kSkip) {
- // gtest_break_on_failure takes precedence over
- // gtest_throw_on_failure. This allows a user to set the latter
- // in the code (perhaps in order to use Google Test assertions
- // with another testing framework) and specify the former on the
- // command line for debugging.
- if (GTEST_FLAG(break_on_failure)) {
-#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
- // Using DebugBreak on Windows allows gtest to still break into a debugger
- // when a failure happens and both the --gtest_break_on_failure and
- // the --gtest_catch_exceptions flags are specified.
- DebugBreak();
-#elif (!defined(__native_client__)) && \
- ((defined(__clang__) || defined(__GNUC__)) && \
- (defined(__x86_64__) || defined(__i386__)))
- // with clang/gcc we can achieve the same effect on x86 by invoking int3
- asm("int3");
-#else
- // Dereference nullptr through a volatile pointer to prevent the compiler
- // from removing. We use this rather than abort() or __builtin_trap() for
- // portability: some debuggers don't correctly trap abort().
- *static_cast<volatile int*>(nullptr) = 1;
-#endif // GTEST_OS_WINDOWS
- } else if (GTEST_FLAG(throw_on_failure)) {
-#if GTEST_HAS_EXCEPTIONS
- throw internal::GoogleTestFailureException(result);
-#else
- // We cannot call abort() as it generates a pop-up in debug mode
- // that cannot be suppressed in VC 7.1 or below.
- exit(1);
-#endif
- }
- }
-}
-
-// Adds a TestProperty to the current TestResult object when invoked from
-// inside a test, to current TestSuite's ad_hoc_test_result_ when invoked
-// from SetUpTestSuite or TearDownTestSuite, or to the global property set
-// when invoked elsewhere. If the result already contains a property with
-// the same key, the value will be updated.
-void UnitTest::RecordProperty(const std::string& key,
- const std::string& value) {
- impl_->RecordProperty(TestProperty(key, value));
-}
-
-// Runs all tests in this UnitTest object and prints the result.
-// Returns 0 if successful, or 1 otherwise.
-//
-// We don't protect this under mutex_, as we only support calling it
-// from the main thread.
-int UnitTest::Run() {
- const bool in_death_test_child_process =
- internal::GTEST_FLAG(internal_run_death_test).length() > 0;
-
- // Google Test implements this protocol for catching that a test
- // program exits before returning control to Google Test:
- //
- // 1. Upon start, Google Test creates a file whose absolute path
- // is specified by the environment variable
- // TEST_PREMATURE_EXIT_FILE.
- // 2. When Google Test has finished its work, it deletes the file.
- //
- // This allows a test runner to set TEST_PREMATURE_EXIT_FILE before
- // running a Google-Test-based test program and check the existence
- // of the file at the end of the test execution to see if it has
- // exited prematurely.
-
- // If we are in the child process of a death test, don't
- // create/delete the premature exit file, as doing so is unnecessary
- // and will confuse the parent process. Otherwise, create/delete
- // the file upon entering/leaving this function. If the program
- // somehow exits before this function has a chance to return, the
- // premature-exit file will be left undeleted, causing a test runner
- // that understands the premature-exit-file protocol to report the
- // test as having failed.
- const internal::ScopedPrematureExitFile premature_exit_file(
- in_death_test_child_process
- ? nullptr
- : internal::posix::GetEnv("TEST_PREMATURE_EXIT_FILE"));
-
- // Captures the value of GTEST_FLAG(catch_exceptions). This value will be
- // used for the duration of the program.
- impl()->set_catch_exceptions(GTEST_FLAG(catch_exceptions));
-
-#if GTEST_OS_WINDOWS
- // Either the user wants Google Test to catch exceptions thrown by the
- // tests or this is executing in the context of death test child
- // process. In either case the user does not want to see pop-up dialogs
- // about crashes - they are expected.
- if (impl()->catch_exceptions() || in_death_test_child_process) {
-# if !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
- // SetErrorMode doesn't exist on CE.
- SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOALIGNMENTFAULTEXCEPT |
- SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX);
-# endif // !GTEST_OS_WINDOWS_MOBILE
-
-# if (defined(_MSC_VER) || GTEST_OS_WINDOWS_MINGW) && !GTEST_OS_WINDOWS_MOBILE
- // Death test children can be terminated with _abort(). On Windows,
- // _abort() can show a dialog with a warning message. This forces the
- // abort message to go to stderr instead.
- _set_error_mode(_OUT_TO_STDERR);
-# endif
-
-# if defined(_MSC_VER) && !GTEST_OS_WINDOWS_MOBILE
- // In the debug version, Visual Studio pops up a separate dialog
- // offering a choice to debug the aborted program. We need to suppress
- // this dialog or it will pop up for every EXPECT/ASSERT_DEATH statement
- // executed. Google Test will notify the user of any unexpected
- // failure via stderr.
- if (!GTEST_FLAG(break_on_failure))
- _set_abort_behavior(
- 0x0, // Clear the following flags:
- _WRITE_ABORT_MSG | _CALL_REPORTFAULT); // pop-up window, core dump.
-# endif
-
- // In debug mode, the Windows CRT can crash with an assertion over invalid
- // input (e.g. passing an invalid file descriptor). The default handling
- // for these assertions is to pop up a dialog and wait for user input.
- // Instead ask the CRT to dump such assertions to stderr non-interactively.
- if (!IsDebuggerPresent()) {
- (void)_CrtSetReportMode(_CRT_ASSERT,
- _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG);
- (void)_CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);
- }
- }
-#endif // GTEST_OS_WINDOWS
-
- return internal::HandleExceptionsInMethodIfSupported(
- impl(),
- &internal::UnitTestImpl::RunAllTests,
- "auxiliary test code (environments or event listeners)") ? 0 : 1;
-}
-
-// Returns the working directory when the first TEST() or TEST_F() was
-// executed.
-const char* UnitTest::original_working_dir() const {
- return impl_->original_working_dir_.c_str();
-}
-
-// Returns the TestSuite object for the test that's currently running,
-// or NULL if no test is running.
-const TestSuite* UnitTest::current_test_suite() const
- GTEST_LOCK_EXCLUDED_(mutex_) {
- internal::MutexLock lock(&mutex_);
- return impl_->current_test_suite();
-}
-
-// Legacy API is still available but deprecated
-#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
-const TestCase* UnitTest::current_test_case() const
- GTEST_LOCK_EXCLUDED_(mutex_) {
- internal::MutexLock lock(&mutex_);
- return impl_->current_test_suite();
-}
-#endif
-
-// Returns the TestInfo object for the test that's currently running,
-// or NULL if no test is running.
-const TestInfo* UnitTest::current_test_info() const
- GTEST_LOCK_EXCLUDED_(mutex_) {
- internal::MutexLock lock(&mutex_);
- return impl_->current_test_info();
-}
-
-// Returns the random seed used at the start of the current test run.
-int UnitTest::random_seed() const { return impl_->random_seed(); }
-
-// Returns ParameterizedTestSuiteRegistry object used to keep track of
-// value-parameterized tests and instantiate and register them.
-internal::ParameterizedTestSuiteRegistry&
-UnitTest::parameterized_test_registry() GTEST_LOCK_EXCLUDED_(mutex_) {
- return impl_->parameterized_test_registry();
-}
-
-// Creates an empty UnitTest.
-UnitTest::UnitTest() {
- impl_ = new internal::UnitTestImpl(this);
-}
-
-// Destructor of UnitTest.
-UnitTest::~UnitTest() {
- delete impl_;
-}
-
-// Pushes a trace defined by SCOPED_TRACE() on to the per-thread
-// Google Test trace stack.
-void UnitTest::PushGTestTrace(const internal::TraceInfo& trace)
- GTEST_LOCK_EXCLUDED_(mutex_) {
- internal::MutexLock lock(&mutex_);
- impl_->gtest_trace_stack().push_back(trace);
-}
-
-// Pops a trace from the per-thread Google Test trace stack.
-void UnitTest::PopGTestTrace()
- GTEST_LOCK_EXCLUDED_(mutex_) {
- internal::MutexLock lock(&mutex_);
- impl_->gtest_trace_stack().pop_back();
-}
-
-namespace internal {
-
-UnitTestImpl::UnitTestImpl(UnitTest* parent)
- : parent_(parent),
- GTEST_DISABLE_MSC_WARNINGS_PUSH_(4355 /* using this in initializer */)
- default_global_test_part_result_reporter_(this),
- default_per_thread_test_part_result_reporter_(this),
- GTEST_DISABLE_MSC_WARNINGS_POP_() global_test_part_result_repoter_(
- &default_global_test_part_result_reporter_),
- per_thread_test_part_result_reporter_(
- &default_per_thread_test_part_result_reporter_),
- parameterized_test_registry_(),
- parameterized_tests_registered_(false),
- last_death_test_suite_(-1),
- current_test_suite_(nullptr),
- current_test_info_(nullptr),
- ad_hoc_test_result_(),
- os_stack_trace_getter_(nullptr),
- post_flag_parse_init_performed_(false),
- random_seed_(0), // Will be overridden by the flag before first use.
- random_(0), // Will be reseeded before first use.
- start_timestamp_(0),
- elapsed_time_(0),
-#if GTEST_HAS_DEATH_TEST
- death_test_factory_(new DefaultDeathTestFactory),
-#endif
- // Will be overridden by the flag before first use.
- catch_exceptions_(false) {
- listeners()->SetDefaultResultPrinter(new PrettyUnitTestResultPrinter);
-}
-
-UnitTestImpl::~UnitTestImpl() {
- // Deletes every TestSuite.
- ForEach(test_suites_, internal::Delete<TestSuite>);
-
- // Deletes every Environment.
- ForEach(environments_, internal::Delete<Environment>);
-
- delete os_stack_trace_getter_;
-}
-
-// Adds a TestProperty to the current TestResult object when invoked in a
-// context of a test, to current test suite's ad_hoc_test_result when invoke
-// from SetUpTestSuite/TearDownTestSuite, or to the global property set
-// otherwise. If the result already contains a property with the same key,
-// the value will be updated.
-void UnitTestImpl::RecordProperty(const TestProperty& test_property) {
- std::string xml_element;
- TestResult* test_result; // TestResult appropriate for property recording.
-
- if (current_test_info_ != nullptr) {
- xml_element = "testcase";
- test_result = &(current_test_info_->result_);
- } else if (current_test_suite_ != nullptr) {
- xml_element = "testsuite";
- test_result = &(current_test_suite_->ad_hoc_test_result_);
- } else {
- xml_element = "testsuites";
- test_result = &ad_hoc_test_result_;
- }
- test_result->RecordProperty(xml_element, test_property);
-}
-
-#if GTEST_HAS_DEATH_TEST
-// Disables event forwarding if the control is currently in a death test
-// subprocess. Must not be called before InitGoogleTest.
-void UnitTestImpl::SuppressTestEventsIfInSubprocess() {
- if (internal_run_death_test_flag_.get() != nullptr)
- listeners()->SuppressEventForwarding();
-}
-#endif // GTEST_HAS_DEATH_TEST
-
-// Initializes event listeners performing XML output as specified by
-// UnitTestOptions. Must not be called before InitGoogleTest.
-void UnitTestImpl::ConfigureXmlOutput() {
- const std::string& output_format = UnitTestOptions::GetOutputFormat();
- if (output_format == "xml") {
- listeners()->SetDefaultXmlGenerator(new XmlUnitTestResultPrinter(
- UnitTestOptions::GetAbsolutePathToOutputFile().c_str()));
- } else if (output_format == "json") {
- listeners()->SetDefaultXmlGenerator(new JsonUnitTestResultPrinter(
- UnitTestOptions::GetAbsolutePathToOutputFile().c_str()));
- } else if (output_format != "") {
- GTEST_LOG_(WARNING) << "WARNING: unrecognized output format \""
- << output_format << "\" ignored.";
- }
-}
-
-#if GTEST_CAN_STREAM_RESULTS_
-// Initializes event listeners for streaming test results in string form.
-// Must not be called before InitGoogleTest.
-void UnitTestImpl::ConfigureStreamingOutput() {
- const std::string& target = GTEST_FLAG(stream_result_to);
- if (!target.empty()) {
- const size_t pos = target.find(':');
- if (pos != std::string::npos) {
- listeners()->Append(new StreamingListener(target.substr(0, pos),
- target.substr(pos+1)));
- } else {
- GTEST_LOG_(WARNING) << "unrecognized streaming target \"" << target
- << "\" ignored.";
- }
- }
-}
-#endif // GTEST_CAN_STREAM_RESULTS_
-
-// Performs initialization dependent upon flag values obtained in
-// ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to
-// ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest
-// this function is also called from RunAllTests. Since this function can be
-// called more than once, it has to be idempotent.
-void UnitTestImpl::PostFlagParsingInit() {
- // Ensures that this function does not execute more than once.
- if (!post_flag_parse_init_performed_) {
- post_flag_parse_init_performed_ = true;
-
-#if defined(GTEST_CUSTOM_TEST_EVENT_LISTENER_)
- // Register to send notifications about key process state changes.
- listeners()->Append(new GTEST_CUSTOM_TEST_EVENT_LISTENER_());
-#endif // defined(GTEST_CUSTOM_TEST_EVENT_LISTENER_)
-
-#if GTEST_HAS_DEATH_TEST
- InitDeathTestSubprocessControlInfo();
- SuppressTestEventsIfInSubprocess();
-#endif // GTEST_HAS_DEATH_TEST
-
- // Registers parameterized tests. This makes parameterized tests
- // available to the UnitTest reflection API without running
- // RUN_ALL_TESTS.
- RegisterParameterizedTests();
-
- // Configures listeners for XML output. This makes it possible for users
- // to shut down the default XML output before invoking RUN_ALL_TESTS.
- ConfigureXmlOutput();
-
-#if GTEST_CAN_STREAM_RESULTS_
- // Configures listeners for streaming test results to the specified server.
- ConfigureStreamingOutput();
-#endif // GTEST_CAN_STREAM_RESULTS_
-
-#if GTEST_HAS_ABSL
- if (GTEST_FLAG(install_failure_signal_handler)) {
- absl::FailureSignalHandlerOptions options;
- absl::InstallFailureSignalHandler(options);
- }
-#endif // GTEST_HAS_ABSL
- }
-}
-
-// A predicate that checks the name of a TestSuite against a known
-// value.
-//
-// This is used for implementation of the UnitTest class only. We put
-// it in the anonymous namespace to prevent polluting the outer
-// namespace.
-//
-// TestSuiteNameIs is copyable.
-class TestSuiteNameIs {
- public:
- // Constructor.
- explicit TestSuiteNameIs(const std::string& name) : name_(name) {}
-
- // Returns true if and only if the name of test_suite matches name_.
- bool operator()(const TestSuite* test_suite) const {
- return test_suite != nullptr &&
- strcmp(test_suite->name(), name_.c_str()) == 0;
- }
-
- private:
- std::string name_;
-};
-
-// Finds and returns a TestSuite with the given name. If one doesn't
-// exist, creates one and returns it. It's the CALLER'S
-// RESPONSIBILITY to ensure that this function is only called WHEN THE
-// TESTS ARE NOT SHUFFLED.
-//
-// Arguments:
-//
-// test_suite_name: name of the test suite
-// type_param: the name of the test suite's type parameter, or NULL if
-// this is not a typed or a type-parameterized test suite.
-// set_up_tc: pointer to the function that sets up the test suite
-// tear_down_tc: pointer to the function that tears down the test suite
-TestSuite* UnitTestImpl::GetTestSuite(
- const char* test_suite_name, const char* type_param,
- internal::SetUpTestSuiteFunc set_up_tc,
- internal::TearDownTestSuiteFunc tear_down_tc) {
- // Can we find a TestSuite with the given name?
- const auto test_suite =
- std::find_if(test_suites_.rbegin(), test_suites_.rend(),
- TestSuiteNameIs(test_suite_name));
-
- if (test_suite != test_suites_.rend()) return *test_suite;
-
- // No. Let's create one.
- auto* const new_test_suite =
- new TestSuite(test_suite_name, type_param, set_up_tc, tear_down_tc);
-
- // Is this a death test suite?
- if (internal::UnitTestOptions::MatchesFilter(test_suite_name,
- kDeathTestSuiteFilter)) {
- // Yes. Inserts the test suite after the last death test suite
- // defined so far. This only works when the test suites haven't
- // been shuffled. Otherwise we may end up running a death test
- // after a non-death test.
- ++last_death_test_suite_;
- test_suites_.insert(test_suites_.begin() + last_death_test_suite_,
- new_test_suite);
- } else {
- // No. Appends to the end of the list.
- test_suites_.push_back(new_test_suite);
- }
-
- test_suite_indices_.push_back(static_cast<int>(test_suite_indices_.size()));
- return new_test_suite;
-}
-
-// Helpers for setting up / tearing down the given environment. They
-// are for use in the ForEach() function.
-static void SetUpEnvironment(Environment* env) { env->SetUp(); }
-static void TearDownEnvironment(Environment* env) { env->TearDown(); }
-
-// Runs all tests in this UnitTest object, prints the result, and
-// returns true if all tests are successful. If any exception is
-// thrown during a test, the test is considered to be failed, but the
-// rest of the tests will still be run.
-//
-// When parameterized tests are enabled, it expands and registers
-// parameterized tests first in RegisterParameterizedTests().
-// All other functions called from RunAllTests() may safely assume that
-// parameterized tests are ready to be counted and run.
-bool UnitTestImpl::RunAllTests() {
- // True if and only if Google Test is initialized before RUN_ALL_TESTS() is
- // called.
- const bool gtest_is_initialized_before_run_all_tests = GTestIsInitialized();
-
- // Do not run any test if the --help flag was specified.
- if (g_help_flag)
- return true;
-
- // Repeats the call to the post-flag parsing initialization in case the
- // user didn't call InitGoogleTest.
- PostFlagParsingInit();
-
- // Even if sharding is not on, test runners may want to use the
- // GTEST_SHARD_STATUS_FILE to query whether the test supports the sharding
- // protocol.
- internal::WriteToShardStatusFileIfNeeded();
-
- // True if and only if we are in a subprocess for running a thread-safe-style
- // death test.
- bool in_subprocess_for_death_test = false;
-
-#if GTEST_HAS_DEATH_TEST
- in_subprocess_for_death_test =
- (internal_run_death_test_flag_.get() != nullptr);
-# if defined(GTEST_EXTRA_DEATH_TEST_CHILD_SETUP_)
- if (in_subprocess_for_death_test) {
- GTEST_EXTRA_DEATH_TEST_CHILD_SETUP_();
- }
-# endif // defined(GTEST_EXTRA_DEATH_TEST_CHILD_SETUP_)
-#endif // GTEST_HAS_DEATH_TEST
-
- const bool should_shard = ShouldShard(kTestTotalShards, kTestShardIndex,
- in_subprocess_for_death_test);
-
- // Compares the full test names with the filter to decide which
- // tests to run.
- const bool has_tests_to_run = FilterTests(should_shard
- ? HONOR_SHARDING_PROTOCOL
- : IGNORE_SHARDING_PROTOCOL) > 0;
-
- // Lists the tests and exits if the --gtest_list_tests flag was specified.
- if (GTEST_FLAG(list_tests)) {
- // This must be called *after* FilterTests() has been called.
- ListTestsMatchingFilter();
- return true;
- }
-
- random_seed_ = GTEST_FLAG(shuffle) ?
- GetRandomSeedFromFlag(GTEST_FLAG(random_seed)) : 0;
-
- // True if and only if at least one test has failed.
- bool failed = false;
-
- TestEventListener* repeater = listeners()->repeater();
-
- start_timestamp_ = GetTimeInMillis();
- repeater->OnTestProgramStart(*parent_);
-
- // How many times to repeat the tests? We don't want to repeat them
- // when we are inside the subprocess of a death test.
- const int repeat = in_subprocess_for_death_test ? 1 : GTEST_FLAG(repeat);
- // Repeats forever if the repeat count is negative.
- const bool gtest_repeat_forever = repeat < 0;
- for (int i = 0; gtest_repeat_forever || i != repeat; i++) {
- // We want to preserve failures generated by ad-hoc test
- // assertions executed before RUN_ALL_TESTS().
- ClearNonAdHocTestResult();
-
- const TimeInMillis start = GetTimeInMillis();
-
- // Shuffles test suites and tests if requested.
- if (has_tests_to_run && GTEST_FLAG(shuffle)) {
- random()->Reseed(static_cast<UInt32>(random_seed_));
- // This should be done before calling OnTestIterationStart(),
- // such that a test event listener can see the actual test order
- // in the event.
- ShuffleTests();
- }
-
- // Tells the unit test event listeners that the tests are about to start.
- repeater->OnTestIterationStart(*parent_, i);
-
- // Runs each test suite if there is at least one test to run.
- if (has_tests_to_run) {
- // Sets up all environments beforehand.
- repeater->OnEnvironmentsSetUpStart(*parent_);
- ForEach(environments_, SetUpEnvironment);
- repeater->OnEnvironmentsSetUpEnd(*parent_);
-
- // Runs the tests only if there was no fatal failure or skip triggered
- // during global set-up.
- if (Test::IsSkipped()) {
- // Emit diagnostics when global set-up calls skip, as it will not be
- // emitted by default.
- TestResult& test_result =
- *internal::GetUnitTestImpl()->current_test_result();
- for (int j = 0; j < test_result.total_part_count(); ++j) {
- const TestPartResult& test_part_result =
- test_result.GetTestPartResult(j);
- if (test_part_result.type() == TestPartResult::kSkip) {
- const std::string& result = test_part_result.message();
- printf("%s\n", result.c_str());
- }
- }
- fflush(stdout);
- } else if (!Test::HasFatalFailure()) {
- for (int test_index = 0; test_index < total_test_suite_count();
- test_index++) {
- GetMutableSuiteCase(test_index)->Run();
- }
- }
-
- // Tears down all environments in reverse order afterwards.
- repeater->OnEnvironmentsTearDownStart(*parent_);
- std::for_each(environments_.rbegin(), environments_.rend(),
- TearDownEnvironment);
- repeater->OnEnvironmentsTearDownEnd(*parent_);
- }
-
- elapsed_time_ = GetTimeInMillis() - start;
-
- // Tells the unit test event listener that the tests have just finished.
- repeater->OnTestIterationEnd(*parent_, i);
-
- // Gets the result and clears it.
- if (!Passed()) {
- failed = true;
- }
-
- // Restores the original test order after the iteration. This
- // allows the user to quickly repro a failure that happens in the
- // N-th iteration without repeating the first (N - 1) iterations.
- // This is not enclosed in "if (GTEST_FLAG(shuffle)) { ... }", in
- // case the user somehow changes the value of the flag somewhere
- // (it's always safe to unshuffle the tests).
- UnshuffleTests();
-
- if (GTEST_FLAG(shuffle)) {
- // Picks a new random seed for each iteration.
- random_seed_ = GetNextRandomSeed(random_seed_);
- }
- }
-
- repeater->OnTestProgramEnd(*parent_);
-
- if (!gtest_is_initialized_before_run_all_tests) {
- ColoredPrintf(
- COLOR_RED,
- "\nIMPORTANT NOTICE - DO NOT IGNORE:\n"
- "This test program did NOT call " GTEST_INIT_GOOGLE_TEST_NAME_
- "() before calling RUN_ALL_TESTS(). This is INVALID. Soon " GTEST_NAME_
- " will start to enforce the valid usage. "
- "Please fix it ASAP, or IT WILL START TO FAIL.\n"); // NOLINT
-#if GTEST_FOR_GOOGLE_
- ColoredPrintf(COLOR_RED,
- "For more details, see http://wiki/Main/ValidGUnitMain.\n");
-#endif // GTEST_FOR_GOOGLE_
- }
-
- return !failed;
-}
-
-// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file
-// if the variable is present. If a file already exists at this location, this
-// function will write over it. If the variable is present, but the file cannot
-// be created, prints an error and exits.
-void WriteToShardStatusFileIfNeeded() {
- const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile);
- if (test_shard_file != nullptr) {
- FILE* const file = posix::FOpen(test_shard_file, "w");
- if (file == nullptr) {
- ColoredPrintf(COLOR_RED,
- "Could not write to the test shard status file \"%s\" "
- "specified by the %s environment variable.\n",
- test_shard_file, kTestShardStatusFile);
- fflush(stdout);
- exit(EXIT_FAILURE);
- }
- fclose(file);
- }
-}
-
-// Checks whether sharding is enabled by examining the relevant
-// environment variable values. If the variables are present,
-// but inconsistent (i.e., shard_index >= total_shards), prints
-// an error and exits. If in_subprocess_for_death_test, sharding is
-// disabled because it must only be applied to the original test
-// process. Otherwise, we could filter out death tests we intended to execute.
-bool ShouldShard(const char* total_shards_env,
- const char* shard_index_env,
- bool in_subprocess_for_death_test) {
- if (in_subprocess_for_death_test) {
- return false;
- }
-
- const Int32 total_shards = Int32FromEnvOrDie(total_shards_env, -1);
- const Int32 shard_index = Int32FromEnvOrDie(shard_index_env, -1);
-
- if (total_shards == -1 && shard_index == -1) {
- return false;
- } else if (total_shards == -1 && shard_index != -1) {
- const Message msg = Message()
- << "Invalid environment variables: you have "
- << kTestShardIndex << " = " << shard_index
- << ", but have left " << kTestTotalShards << " unset.\n";
- ColoredPrintf(COLOR_RED, "%s", msg.GetString().c_str());
- fflush(stdout);
- exit(EXIT_FAILURE);
- } else if (total_shards != -1 && shard_index == -1) {
- const Message msg = Message()
- << "Invalid environment variables: you have "
- << kTestTotalShards << " = " << total_shards
- << ", but have left " << kTestShardIndex << " unset.\n";
- ColoredPrintf(COLOR_RED, "%s", msg.GetString().c_str());
- fflush(stdout);
- exit(EXIT_FAILURE);
- } else if (shard_index < 0 || shard_index >= total_shards) {
- const Message msg = Message()
- << "Invalid environment variables: we require 0 <= "
- << kTestShardIndex << " < " << kTestTotalShards
- << ", but you have " << kTestShardIndex << "=" << shard_index
- << ", " << kTestTotalShards << "=" << total_shards << ".\n";
- ColoredPrintf(COLOR_RED, "%s", msg.GetString().c_str());
- fflush(stdout);
- exit(EXIT_FAILURE);
- }
-
- return total_shards > 1;
-}
-
-// Parses the environment variable var as an Int32. If it is unset,
-// returns default_val. If it is not an Int32, prints an error
-// and aborts.
-Int32 Int32FromEnvOrDie(const char* var, Int32 default_val) {
- const char* str_val = posix::GetEnv(var);
- if (str_val == nullptr) {
- return default_val;
- }
-
- Int32 result;
- if (!ParseInt32(Message() << "The value of environment variable " << var,
- str_val, &result)) {
- exit(EXIT_FAILURE);
- }
- return result;
-}
-
-// Given the total number of shards, the shard index, and the test id,
-// returns true if and only if the test should be run on this shard. The test id
-// is some arbitrary but unique non-negative integer assigned to each test
-// method. Assumes that 0 <= shard_index < total_shards.
-bool ShouldRunTestOnShard(int total_shards, int shard_index, int test_id) {
- return (test_id % total_shards) == shard_index;
-}
-
-// Compares the name of each test with the user-specified filter to
-// decide whether the test should be run, then records the result in
-// each TestSuite and TestInfo object.
-// If shard_tests == true, further filters tests based on sharding
-// variables in the environment - see
-// https://github.com/google/googletest/blob/master/googletest/docs/advanced.md
-// . Returns the number of tests that should run.
-int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
- const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ?
- Int32FromEnvOrDie(kTestTotalShards, -1) : -1;
- const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ?
- Int32FromEnvOrDie(kTestShardIndex, -1) : -1;
-
- // num_runnable_tests are the number of tests that will
- // run across all shards (i.e., match filter and are not disabled).
- // num_selected_tests are the number of tests to be run on
- // this shard.
- int num_runnable_tests = 0;
- int num_selected_tests = 0;
- for (auto* test_suite : test_suites_) {
- const std::string& test_suite_name = test_suite->name();
- test_suite->set_should_run(false);
-
- for (size_t j = 0; j < test_suite->test_info_list().size(); j++) {
- TestInfo* const test_info = test_suite->test_info_list()[j];
- const std::string test_name(test_info->name());
- // A test is disabled if test suite name or test name matches
- // kDisableTestFilter.
- const bool is_disabled = internal::UnitTestOptions::MatchesFilter(
- test_suite_name, kDisableTestFilter) ||
- internal::UnitTestOptions::MatchesFilter(
- test_name, kDisableTestFilter);
- test_info->is_disabled_ = is_disabled;
-
- const bool matches_filter = internal::UnitTestOptions::FilterMatchesTest(
- test_suite_name, test_name);
- test_info->matches_filter_ = matches_filter;
-
- const bool is_runnable =
- (GTEST_FLAG(also_run_disabled_tests) || !is_disabled) &&
- matches_filter;
-
- const bool is_in_another_shard =
- shard_tests != IGNORE_SHARDING_PROTOCOL &&
- !ShouldRunTestOnShard(total_shards, shard_index, num_runnable_tests);
- test_info->is_in_another_shard_ = is_in_another_shard;
- const bool is_selected = is_runnable && !is_in_another_shard;
-
- num_runnable_tests += is_runnable;
- num_selected_tests += is_selected;
-
- test_info->should_run_ = is_selected;
- test_suite->set_should_run(test_suite->should_run() || is_selected);
- }
- }
- return num_selected_tests;
-}
-
-// Prints the given C-string on a single line by replacing all '\n'
-// characters with string "\\n". If the output takes more than
-// max_length characters, only prints the first max_length characters
-// and "...".
-static void PrintOnOneLine(const char* str, int max_length) {
- if (str != nullptr) {
- for (int i = 0; *str != '\0'; ++str) {
- if (i >= max_length) {
- printf("...");
- break;
- }
- if (*str == '\n') {
- printf("\\n");
- i += 2;
- } else {
- printf("%c", *str);
- ++i;
- }
- }
- }
-}
-
-// Prints the names of the tests matching the user-specified filter flag.
-void UnitTestImpl::ListTestsMatchingFilter() {
- // Print at most this many characters for each type/value parameter.
- const int kMaxParamLength = 250;
-
- for (auto* test_suite : test_suites_) {
- bool printed_test_suite_name = false;
-
- for (size_t j = 0; j < test_suite->test_info_list().size(); j++) {
- const TestInfo* const test_info = test_suite->test_info_list()[j];
- if (test_info->matches_filter_) {
- if (!printed_test_suite_name) {
- printed_test_suite_name = true;
- printf("%s.", test_suite->name());
- if (test_suite->type_param() != nullptr) {
- printf(" # %s = ", kTypeParamLabel);
- // We print the type parameter on a single line to make
- // the output easy to parse by a program.
- PrintOnOneLine(test_suite->type_param(), kMaxParamLength);
- }
- printf("\n");
- }
- printf(" %s", test_info->name());
- if (test_info->value_param() != nullptr) {
- printf(" # %s = ", kValueParamLabel);
- // We print the value parameter on a single line to make the
- // output easy to parse by a program.
- PrintOnOneLine(test_info->value_param(), kMaxParamLength);
- }
- printf("\n");
- }
- }
- }
- fflush(stdout);
- const std::string& output_format = UnitTestOptions::GetOutputFormat();
- if (output_format == "xml" || output_format == "json") {
- FILE* fileout = OpenFileForWriting(
- UnitTestOptions::GetAbsolutePathToOutputFile().c_str());
- std::stringstream stream;
- if (output_format == "xml") {
- XmlUnitTestResultPrinter(
- UnitTestOptions::GetAbsolutePathToOutputFile().c_str())
- .PrintXmlTestsList(&stream, test_suites_);
- } else if (output_format == "json") {
- JsonUnitTestResultPrinter(
- UnitTestOptions::GetAbsolutePathToOutputFile().c_str())
- .PrintJsonTestList(&stream, test_suites_);
- }
- fprintf(fileout, "%s", StringStreamToString(&stream).c_str());
- fclose(fileout);
- }
-}
-
-// Sets the OS stack trace getter.
-//
-// Does nothing if the input and the current OS stack trace getter are
-// the same; otherwise, deletes the old getter and makes the input the
-// current getter.
-void UnitTestImpl::set_os_stack_trace_getter(
- OsStackTraceGetterInterface* getter) {
- if (os_stack_trace_getter_ != getter) {
- delete os_stack_trace_getter_;
- os_stack_trace_getter_ = getter;
- }
-}
-
-// Returns the current OS stack trace getter if it is not NULL;
-// otherwise, creates an OsStackTraceGetter, makes it the current
-// getter, and returns it.
-OsStackTraceGetterInterface* UnitTestImpl::os_stack_trace_getter() {
- if (os_stack_trace_getter_ == nullptr) {
-#ifdef GTEST_OS_STACK_TRACE_GETTER_
- os_stack_trace_getter_ = new GTEST_OS_STACK_TRACE_GETTER_;
-#else
- os_stack_trace_getter_ = new OsStackTraceGetter;
-#endif // GTEST_OS_STACK_TRACE_GETTER_
- }
-
- return os_stack_trace_getter_;
-}
-
-// Returns the most specific TestResult currently running.
-TestResult* UnitTestImpl::current_test_result() {
- if (current_test_info_ != nullptr) {
- return &current_test_info_->result_;
- }
- if (current_test_suite_ != nullptr) {
- return &current_test_suite_->ad_hoc_test_result_;
- }
- return &ad_hoc_test_result_;
-}
-
-// Shuffles all test suites, and the tests within each test suite,
-// making sure that death tests are still run first.
-void UnitTestImpl::ShuffleTests() {
- // Shuffles the death test suites.
- ShuffleRange(random(), 0, last_death_test_suite_ + 1, &test_suite_indices_);
-
- // Shuffles the non-death test suites.
- ShuffleRange(random(), last_death_test_suite_ + 1,
- static_cast<int>(test_suites_.size()), &test_suite_indices_);
-
- // Shuffles the tests inside each test suite.
- for (auto& test_suite : test_suites_) {
- test_suite->ShuffleTests(random());
- }
-}
-
-// Restores the test suites and tests to their order before the first shuffle.
-void UnitTestImpl::UnshuffleTests() {
- for (size_t i = 0; i < test_suites_.size(); i++) {
- // Unshuffles the tests in each test suite.
- test_suites_[i]->UnshuffleTests();
- // Resets the index of each test suite.
- test_suite_indices_[i] = static_cast<int>(i);
- }
-}
-
-// Returns the current OS stack trace as an std::string.
-//
-// The maximum number of stack frames to be included is specified by
-// the gtest_stack_trace_depth flag. The skip_count parameter
-// specifies the number of top frames to be skipped, which doesn't
-// count against the number of frames to be included.
-//
-// For example, if Foo() calls Bar(), which in turn calls
-// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in
-// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't.
-std::string GetCurrentOsStackTraceExceptTop(UnitTest* /*unit_test*/,
- int skip_count) {
- // We pass skip_count + 1 to skip this wrapper function in addition
- // to what the user really wants to skip.
- return GetUnitTestImpl()->CurrentOsStackTraceExceptTop(skip_count + 1);
-}
-
-// Used by the GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_ macro to
-// suppress unreachable code warnings.
-namespace {
-class ClassUniqueToAlwaysTrue {};
-}
-
-bool IsTrue(bool condition) { return condition; }
-
-bool AlwaysTrue() {
-#if GTEST_HAS_EXCEPTIONS
- // This condition is always false so AlwaysTrue() never actually throws,
- // but it makes the compiler think that it may throw.
- if (IsTrue(false))
- throw ClassUniqueToAlwaysTrue();
-#endif // GTEST_HAS_EXCEPTIONS
- return true;
-}
-
-// If *pstr starts with the given prefix, modifies *pstr to be right
-// past the prefix and returns true; otherwise leaves *pstr unchanged
-// and returns false. None of pstr, *pstr, and prefix can be NULL.
-bool SkipPrefix(const char* prefix, const char** pstr) {
- const size_t prefix_len = strlen(prefix);
- if (strncmp(*pstr, prefix, prefix_len) == 0) {
- *pstr += prefix_len;
- return true;
- }
- return false;
-}
-
-// Parses a string as a command line flag. The string should have
-// the format "--flag=value". When def_optional is true, the "=value"
-// part can be omitted.
-//
-// Returns the value of the flag, or NULL if the parsing failed.
-static const char* ParseFlagValue(const char* str, const char* flag,
- bool def_optional) {
- // str and flag must not be NULL.
- if (str == nullptr || flag == nullptr) return nullptr;
-
- // The flag must start with "--" followed by GTEST_FLAG_PREFIX_.
- const std::string flag_str = std::string("--") + GTEST_FLAG_PREFIX_ + flag;
- const size_t flag_len = flag_str.length();
- if (strncmp(str, flag_str.c_str(), flag_len) != 0) return nullptr;
-
- // Skips the flag name.
- const char* flag_end = str + flag_len;
-
- // When def_optional is true, it's OK to not have a "=value" part.
- if (def_optional && (flag_end[0] == '\0')) {
- return flag_end;
- }
-
- // If def_optional is true and there are more characters after the
- // flag name, or if def_optional is false, there must be a '=' after
- // the flag name.
- if (flag_end[0] != '=') return nullptr;
-
- // Returns the string after "=".
- return flag_end + 1;
-}
-
-// Parses a string for a bool flag, in the form of either
-// "--flag=value" or "--flag".
-//
-// In the former case, the value is taken as true as long as it does
-// not start with '0', 'f', or 'F'.
-//
-// In the latter case, the value is taken as true.
-//
-// On success, stores the value of the flag in *value, and returns
-// true. On failure, returns false without changing *value.
-static bool ParseBoolFlag(const char* str, const char* flag, bool* value) {
- // Gets the value of the flag as a string.
- const char* const value_str = ParseFlagValue(str, flag, true);
-
- // Aborts if the parsing failed.
- if (value_str == nullptr) return false;
-
- // Converts the string value to a bool.
- *value = !(*value_str == '0' || *value_str == 'f' || *value_str == 'F');
- return true;
-}
-
-// Parses a string for an Int32 flag, in the form of
-// "--flag=value".
-//
-// On success, stores the value of the flag in *value, and returns
-// true. On failure, returns false without changing *value.
-bool ParseInt32Flag(const char* str, const char* flag, Int32* value) {
- // Gets the value of the flag as a string.
- const char* const value_str = ParseFlagValue(str, flag, false);
-
- // Aborts if the parsing failed.
- if (value_str == nullptr) return false;
-
- // Sets *value to the value of the flag.
- return ParseInt32(Message() << "The value of flag --" << flag,
- value_str, value);
-}
-
-// Parses a string for a string flag, in the form of
-// "--flag=value".
-//
-// On success, stores the value of the flag in *value, and returns
-// true. On failure, returns false without changing *value.
-template <typename String>
-static bool ParseStringFlag(const char* str, const char* flag, String* value) {
- // Gets the value of the flag as a string.
- const char* const value_str = ParseFlagValue(str, flag, false);
-
- // Aborts if the parsing failed.
- if (value_str == nullptr) return false;
-
- // Sets *value to the value of the flag.
- *value = value_str;
- return true;
-}
-
-// Determines whether a string has a prefix that Google Test uses for its
-// flags, i.e., starts with GTEST_FLAG_PREFIX_ or GTEST_FLAG_PREFIX_DASH_.
-// If Google Test detects that a command line flag has its prefix but is not
-// recognized, it will print its help message. Flags starting with
-// GTEST_INTERNAL_PREFIX_ followed by "internal_" are considered Google Test
-// internal flags and do not trigger the help message.
-static bool HasGoogleTestFlagPrefix(const char* str) {
- return (SkipPrefix("--", &str) ||
- SkipPrefix("-", &str) ||
- SkipPrefix("/", &str)) &&
- !SkipPrefix(GTEST_FLAG_PREFIX_ "internal_", &str) &&
- (SkipPrefix(GTEST_FLAG_PREFIX_, &str) ||
- SkipPrefix(GTEST_FLAG_PREFIX_DASH_, &str));
-}
-
-// Prints a string containing code-encoded text. The following escape
-// sequences can be used in the string to control the text color:
-//
-// @@ prints a single '@' character.
-// @R changes the color to red.
-// @G changes the color to green.
-// @Y changes the color to yellow.
-// @D changes to the default terminal text color.
-//
-static void PrintColorEncoded(const char* str) {
- GTestColor color = COLOR_DEFAULT; // The current color.
-
- // Conceptually, we split the string into segments divided by escape
- // sequences. Then we print one segment at a time. At the end of
- // each iteration, the str pointer advances to the beginning of the
- // next segment.
- for (;;) {
- const char* p = strchr(str, '@');
- if (p == nullptr) {
- ColoredPrintf(color, "%s", str);
- return;
- }
-
- ColoredPrintf(color, "%s", std::string(str, p).c_str());
-
- const char ch = p[1];
- str = p + 2;
- if (ch == '@') {
- ColoredPrintf(color, "@");
- } else if (ch == 'D') {
- color = COLOR_DEFAULT;
- } else if (ch == 'R') {
- color = COLOR_RED;
- } else if (ch == 'G') {
- color = COLOR_GREEN;
- } else if (ch == 'Y') {
- color = COLOR_YELLOW;
- } else {
- --str;
- }
- }
-}
-
-static const char kColorEncodedHelpMessage[] =
-"This program contains tests written using " GTEST_NAME_ ". You can use the\n"
-"following command line flags to control its behavior:\n"
-"\n"
-"Test Selection:\n"
-" @G--" GTEST_FLAG_PREFIX_ "list_tests@D\n"
-" List the names of all tests instead of running them. The name of\n"
-" TEST(Foo, Bar) is \"Foo.Bar\".\n"
-" @G--" GTEST_FLAG_PREFIX_ "filter=@YPOSTIVE_PATTERNS"
- "[@G-@YNEGATIVE_PATTERNS]@D\n"
-" Run only the tests whose name matches one of the positive patterns but\n"
-" none of the negative patterns. '?' matches any single character; '*'\n"
-" matches any substring; ':' separates two patterns.\n"
-" @G--" GTEST_FLAG_PREFIX_ "also_run_disabled_tests@D\n"
-" Run all disabled tests too.\n"
-"\n"
-"Test Execution:\n"
-" @G--" GTEST_FLAG_PREFIX_ "repeat=@Y[COUNT]@D\n"
-" Run the tests repeatedly; use a negative count to repeat forever.\n"
-" @G--" GTEST_FLAG_PREFIX_ "shuffle@D\n"
-" Randomize tests' orders on every iteration.\n"
-" @G--" GTEST_FLAG_PREFIX_ "random_seed=@Y[NUMBER]@D\n"
-" Random number seed to use for shuffling test orders (between 1 and\n"
-" 99999, or 0 to use a seed based on the current time).\n"
-"\n"
-"Test Output:\n"
-" @G--" GTEST_FLAG_PREFIX_ "color=@Y(@Gyes@Y|@Gno@Y|@Gauto@Y)@D\n"
-" Enable/disable colored output. The default is @Gauto@D.\n"
-" -@G-" GTEST_FLAG_PREFIX_ "print_time=0@D\n"
-" Don't print the elapsed time of each test.\n"
-" @G--" GTEST_FLAG_PREFIX_ "output=@Y(@Gjson@Y|@Gxml@Y)[@G:@YDIRECTORY_PATH@G"
- GTEST_PATH_SEP_ "@Y|@G:@YFILE_PATH]@D\n"
-" Generate a JSON or XML report in the given directory or with the given\n"
-" file name. @YFILE_PATH@D defaults to @Gtest_detail.xml@D.\n"
-# if GTEST_CAN_STREAM_RESULTS_
-" @G--" GTEST_FLAG_PREFIX_ "stream_result_to=@YHOST@G:@YPORT@D\n"
-" Stream test results to the given server.\n"
-# endif // GTEST_CAN_STREAM_RESULTS_
-"\n"
-"Assertion Behavior:\n"
-# if GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS
-" @G--" GTEST_FLAG_PREFIX_ "death_test_style=@Y(@Gfast@Y|@Gthreadsafe@Y)@D\n"
-" Set the default death test style.\n"
-# endif // GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS
-" @G--" GTEST_FLAG_PREFIX_ "break_on_failure@D\n"
-" Turn assertion failures into debugger break-points.\n"
-" @G--" GTEST_FLAG_PREFIX_ "throw_on_failure@D\n"
-" Turn assertion failures into C++ exceptions for use by an external\n"
-" test framework.\n"
-" @G--" GTEST_FLAG_PREFIX_ "catch_exceptions=0@D\n"
-" Do not report exceptions as test failures. Instead, allow them\n"
-" to crash the program or throw a pop-up (on Windows).\n"
-"\n"
-"Except for @G--" GTEST_FLAG_PREFIX_ "list_tests@D, you can alternatively set "
- "the corresponding\n"
-"environment variable of a flag (all letters in upper-case). For example, to\n"
-"disable colored text output, you can either specify @G--" GTEST_FLAG_PREFIX_
- "color=no@D or set\n"
-"the @G" GTEST_FLAG_PREFIX_UPPER_ "COLOR@D environment variable to @Gno@D.\n"
-"\n"
-"For more information, please read the " GTEST_NAME_ " documentation at\n"
-"@G" GTEST_PROJECT_URL_ "@D. If you find a bug in " GTEST_NAME_ "\n"
-"(not one in your own code or tests), please report it to\n"
-"@G<" GTEST_DEV_EMAIL_ ">@D.\n";
-
-static bool ParseGoogleTestFlag(const char* const arg) {
- return ParseBoolFlag(arg, kAlsoRunDisabledTestsFlag,
- &GTEST_FLAG(also_run_disabled_tests)) ||
- ParseBoolFlag(arg, kBreakOnFailureFlag,
- &GTEST_FLAG(break_on_failure)) ||
- ParseBoolFlag(arg, kCatchExceptionsFlag,
- &GTEST_FLAG(catch_exceptions)) ||
- ParseStringFlag(arg, kColorFlag, &GTEST_FLAG(color)) ||
- ParseStringFlag(arg, kDeathTestStyleFlag,
- &GTEST_FLAG(death_test_style)) ||
- ParseBoolFlag(arg, kDeathTestUseFork,
- &GTEST_FLAG(death_test_use_fork)) ||
- ParseStringFlag(arg, kFilterFlag, &GTEST_FLAG(filter)) ||
- ParseStringFlag(arg, kInternalRunDeathTestFlag,
- &GTEST_FLAG(internal_run_death_test)) ||
- ParseBoolFlag(arg, kListTestsFlag, &GTEST_FLAG(list_tests)) ||
- ParseStringFlag(arg, kOutputFlag, &GTEST_FLAG(output)) ||
- ParseBoolFlag(arg, kPrintTimeFlag, &GTEST_FLAG(print_time)) ||
- ParseBoolFlag(arg, kPrintUTF8Flag, &GTEST_FLAG(print_utf8)) ||
- ParseInt32Flag(arg, kRandomSeedFlag, &GTEST_FLAG(random_seed)) ||
- ParseInt32Flag(arg, kRepeatFlag, &GTEST_FLAG(repeat)) ||
- ParseBoolFlag(arg, kShuffleFlag, &GTEST_FLAG(shuffle)) ||
- ParseInt32Flag(arg, kStackTraceDepthFlag,
- &GTEST_FLAG(stack_trace_depth)) ||
- ParseStringFlag(arg, kStreamResultToFlag,
- &GTEST_FLAG(stream_result_to)) ||
- ParseBoolFlag(arg, kThrowOnFailureFlag,
- &GTEST_FLAG(throw_on_failure));
-}
-
-#if GTEST_USE_OWN_FLAGFILE_FLAG_
-static void LoadFlagsFromFile(const std::string& path) {
- FILE* flagfile = posix::FOpen(path.c_str(), "r");
- if (!flagfile) {
- GTEST_LOG_(FATAL) << "Unable to open file \"" << GTEST_FLAG(flagfile)
- << "\"";
- }
- std::string contents(ReadEntireFile(flagfile));
- posix::FClose(flagfile);
- std::vector<std::string> lines;
- SplitString(contents, '\n', &lines);
- for (size_t i = 0; i < lines.size(); ++i) {
- if (lines[i].empty())
- continue;
- if (!ParseGoogleTestFlag(lines[i].c_str()))
- g_help_flag = true;
- }
-}
-#endif // GTEST_USE_OWN_FLAGFILE_FLAG_
-
-// Parses the command line for Google Test flags, without initializing
-// other parts of Google Test. The type parameter CharType can be
-// instantiated to either char or wchar_t.
-template <typename CharType>
-void ParseGoogleTestFlagsOnlyImpl(int* argc, CharType** argv) {
- for (int i = 1; i < *argc; i++) {
- const std::string arg_string = StreamableToString(argv[i]);
- const char* const arg = arg_string.c_str();
-
- using internal::ParseBoolFlag;
- using internal::ParseInt32Flag;
- using internal::ParseStringFlag;
-
- bool remove_flag = false;
- if (ParseGoogleTestFlag(arg)) {
- remove_flag = true;
-#if GTEST_USE_OWN_FLAGFILE_FLAG_
- } else if (ParseStringFlag(arg, kFlagfileFlag, &GTEST_FLAG(flagfile))) {
- LoadFlagsFromFile(GTEST_FLAG(flagfile));
- remove_flag = true;
-#endif // GTEST_USE_OWN_FLAGFILE_FLAG_
- } else if (arg_string == "--help" || arg_string == "-h" ||
- arg_string == "-?" || arg_string == "/?" ||
- HasGoogleTestFlagPrefix(arg)) {
- // Both help flag and unrecognized Google Test flags (excluding
- // internal ones) trigger help display.
- g_help_flag = true;
- }
-
- if (remove_flag) {
- // Shift the remainder of the argv list left by one. Note
- // that argv has (*argc + 1) elements, the last one always being
- // NULL. The following loop moves the trailing NULL element as
- // well.
- for (int j = i; j != *argc; j++) {
- argv[j] = argv[j + 1];
- }
-
- // Decrements the argument count.
- (*argc)--;
-
- // We also need to decrement the iterator as we just removed
- // an element.
- i--;
- }
- }
-
- if (g_help_flag) {
- // We print the help here instead of in RUN_ALL_TESTS(), as the
- // latter may not be called at all if the user is using Google
- // Test with another testing framework.
- PrintColorEncoded(kColorEncodedHelpMessage);
- }
-}
-
-// Parses the command line for Google Test flags, without initializing
-// other parts of Google Test.
-void ParseGoogleTestFlagsOnly(int* argc, char** argv) {
- ParseGoogleTestFlagsOnlyImpl(argc, argv);
-
- // Fix the value of *_NSGetArgc() on macOS, but if and only if
- // *_NSGetArgv() == argv
- // Only applicable to char** version of argv
-#if GTEST_OS_MAC
-#ifndef GTEST_OS_IOS
- if (*_NSGetArgv() == argv) {
- *_NSGetArgc() = *argc;
- }
-#endif
-#endif
-}
-void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv) {
- ParseGoogleTestFlagsOnlyImpl(argc, argv);
-}
-
-// The internal implementation of InitGoogleTest().
-//
-// The type parameter CharType can be instantiated to either char or
-// wchar_t.
-template <typename CharType>
-void InitGoogleTestImpl(int* argc, CharType** argv) {
- // We don't want to run the initialization code twice.
- if (GTestIsInitialized()) return;
-
- if (*argc <= 0) return;
-
- g_argvs.clear();
- for (int i = 0; i != *argc; i++) {
- g_argvs.push_back(StreamableToString(argv[i]));
- }
-
-#if GTEST_HAS_ABSL
- absl::InitializeSymbolizer(g_argvs[0].c_str());
-#endif // GTEST_HAS_ABSL
-
- ParseGoogleTestFlagsOnly(argc, argv);
- GetUnitTestImpl()->PostFlagParsingInit();
-}
-
-} // namespace internal
-
-// Initializes Google Test. This must be called before calling
-// RUN_ALL_TESTS(). In particular, it parses a command line for the
-// flags that Google Test recognizes. Whenever a Google Test flag is
-// seen, it is removed from argv, and *argc is decremented.
-//
-// No value is returned. Instead, the Google Test flag variables are
-// updated.
-//
-// Calling the function for the second time has no user-visible effect.
-void InitGoogleTest(int* argc, char** argv) {
-#if defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
- GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_(argc, argv);
-#else // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
- internal::InitGoogleTestImpl(argc, argv);
-#endif // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
-}
-
-// This overloaded version can be used in Windows programs compiled in
-// UNICODE mode.
-void InitGoogleTest(int* argc, wchar_t** argv) {
-#if defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
- GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_(argc, argv);
-#else // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
- internal::InitGoogleTestImpl(argc, argv);
-#endif // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
-}
-
-// This overloaded version can be used on Arduino/embedded platforms where
-// there is no argc/argv.
-void InitGoogleTest() {
- // Since Arduino doesn't have a command line, fake out the argc/argv arguments
- int argc = 1;
- const auto arg0 = "dummy";
- char* argv0 = const_cast<char*>(arg0);
- char** argv = &argv0;
-
-#if defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
- GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_(&argc, argv);
-#else // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
- internal::InitGoogleTestImpl(&argc, argv);
-#endif // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
-}
-
-std::string TempDir() {
-#if defined(GTEST_CUSTOM_TEMPDIR_FUNCTION_)
- return GTEST_CUSTOM_TEMPDIR_FUNCTION_();
-#endif
-
-#if GTEST_OS_WINDOWS_MOBILE
- return "\\temp\\";
-#elif GTEST_OS_WINDOWS
- const char* temp_dir = internal::posix::GetEnv("TEMP");
- if (temp_dir == nullptr || temp_dir[0] == '\0')
- return "\\temp\\";
- else if (temp_dir[strlen(temp_dir) - 1] == '\\')
- return temp_dir;
- else
- return std::string(temp_dir) + "\\";
-#elif GTEST_OS_LINUX_ANDROID
- return "/sdcard/";
-#else
- return "/tmp/";
-#endif // GTEST_OS_WINDOWS_MOBILE
-}
-
-// Class ScopedTrace
-
-// Pushes the given source file location and message onto a per-thread
-// trace stack maintained by Google Test.
-void ScopedTrace::PushTrace(const char* file, int line, std::string message) {
- internal::TraceInfo trace;
- trace.file = file;
- trace.line = line;
- trace.message.swap(message);
-
- UnitTest::GetInstance()->PushGTestTrace(trace);
-}
-
-// Pops the info pushed by the c'tor.
-ScopedTrace::~ScopedTrace()
- GTEST_LOCK_EXCLUDED_(&UnitTest::mutex_) {
- UnitTest::GetInstance()->PopGTestTrace();
-}
-
-} // namespace testing
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest_main.cc b/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest_main.cc
deleted file mode 100644
index f6e1dd96fb3..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/gtest/src/gtest_main.cc
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2006, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#include <cstdio>
-#include "gtest/gtest.h"
-
-#ifdef ARDUINO
-void setup() {
- testing::InitGoogleTest();
-}
-
-void loop() { RUN_ALL_TESTS(); }
-
-#else
-
-GTEST_API_ int main(int argc, char **argv) {
- printf("Running main() from %s\n", __FILE__);
- testing::InitGoogleTest(&argc, argv);
- return RUN_ALL_TESTS();
-}
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/normalize.xsl b/Build/source/texk/dvisvgm/dvisvgm-src/tests/normalize.xsl
deleted file mode 100644
index d2315118359..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/normalize.xsl
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version="1.0"?>
-<!-- *********************************************************************
-** Stylesheet to rearrange font-/path-elements in an SVG file. **
-** It's part of the dvisvgm package. **
-** Copyright (C) 2009-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-** **
-** The code generated by this script is also licensed under the terms **
-** of the GNU general public license version 3 or later. **
-***********************************************************************-->
-<xsl:stylesheet version="1.0"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:exsl="http://exslt.org/common"
- xmlns:str="http://exslt.org/strings"
- xmlns:mg="my-namespace"
- extension-element-prefixes="exsl str"
- exclude-result-prefixes="svg xlink exsl str mg">
-
- <xsl:key name="path-by-id" match="/svg:defs/svg:path" use="@id"/>
-
-
- <xsl:variable name="styles-rtf">
- <xsl:for-each select="str:tokenize(/*/svg:style[@type='text/css'], '&#10;')">
- <xsl:sort select="substring-after(., ' ')"/>
- <mg:style new-id="f{position()}" id="{substring-before(substring-after(., '.'), ' ')}">
- <xsl:value-of select="substring-after(., ' ')"/>
- </mg:style>
- </xsl:for-each>
- </xsl:variable>
-
- <xsl:variable name="styles" select="exsl:node-set($styles-rtf)/mg:style"/>
-
- <xsl:variable name="num-paths" select="count(/*/svg:defs/svg:path)"/>
-
- <xsl:variable name="defs-rtf">
- <xsl:for-each select="/*/svg:defs/svg:path">
- <xsl:sort select="@d"/>
- <mg:path id="{@id}" new-id="g{position()}"/>
- </xsl:for-each>
- <xsl:for-each select="/*/svg:defs/svg:use">
- <xsl:sort select="concat(key('path-by-id', substring(@xlink:href, 2))/@d, @transform)"/>
- <mg:use id="{@id}" new-id="g{position()+$num-paths}"/>
- </xsl:for-each>
- </xsl:variable>
-
- <xsl:variable name="defs" select="exsl:node-set($defs-rtf)"/>
-
-
- <xsl:template match="*|@*">
- <xsl:copy>
- <xsl:apply-templates select="@*|node()"/>
- </xsl:copy>
- </xsl:template>
-
-
- <xsl:template match="svg:defs[svg:path]">
- <xsl:copy>
- <xsl:apply-templates select="svg:path">
- <xsl:sort select="@d"/>
- </xsl:apply-templates>
- <xsl:apply-templates select="svg:use">
- <xsl:sort select="$defs/mg:use[@id=current()/@id]/@new-id"/>
- </xsl:apply-templates>
- </xsl:copy>
- </xsl:template>
-
-
- <xsl:template match="svg:defs[svg:font]">
- <xsl:copy>
- <xsl:apply-templates>
- <xsl:sort select="@id"/>
- </xsl:apply-templates>
- </xsl:copy>
- </xsl:template>
-
-
- <xsl:template match="svg:defs/svg:path">
- <path id="{$defs/mg:path[@id=current()/@id]/@new-id}" d="{@d}"/>
- </xsl:template>
-
-
- <xsl:template match="svg:defs/text()"/>
-
-
- <xsl:template match="svg:use">
- <xsl:variable name="href" select="substring(@xlink:href, 2)"/>
- <xsl:copy>
- <xsl:apply-templates select="@*"/>
- <xsl:if test="ancestor::svg:defs">
- <xsl:attribute name="id">
- <xsl:value-of select="$defs/mg:use[@id=current()/@id]/@new-id"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:attribute name="xlink:href">
- <xsl:value-of select="concat('#', $defs/*[@id=$href]/@new-id)"/>
- </xsl:attribute>
- </xsl:copy>
- </xsl:template>
-
-
- <xsl:template match="svg:style[@type='text/css']">
- <style type="text/css">
- <xsl:for-each select="$styles">
- <xsl:value-of select="concat('text.f', position(), ' ', ., '&#10;')"/>
- </xsl:for-each>
- </style>
- </xsl:template>
-
-
- <xsl:template match="svg:text">
- <xsl:copy>
- <xsl:copy-of select="@*"/>
- <xsl:attribute name="class">
- <xsl:value-of select="$styles[@id=current()/@class]/@new-id"/>
- </xsl:attribute>
- <xsl:apply-templates/>
- </xsl:copy>
- </xsl:template>
-</xsl:stylesheet>
-
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/testmain.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/testmain.cpp
deleted file mode 100644
index 323b6c39159..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/testmain.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-/*************************************************************************
-** testmain.cpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#include <string>
-#include <gtest/gtest.h>
-#include "FileFinder.hpp"
-
-#ifndef SRCDIR
-#define SRCDIR "."
-#endif
-
-std::string TEST_ARGV0;
-
-struct TestEnvironment : public testing::Environment {
- void SetUp () override {
- FileFinder::init(TEST_ARGV0, "dvisvgm-test", false);
- FileFinder::instance().addLookupDir(SRCDIR);
- FileFinder::instance().addLookupDir(SRCDIR"/data");
- }
-};
-
-GTEST_API_ int main (int argc, char **argv) {
- TEST_ARGV0 = argv[0];
- testing::InitGoogleTest(&argc, argv);
- testing::AddGlobalTestEnvironment(new TestEnvironment);
- return RUN_ALL_TESTS();
-}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/testutil.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/tests/testutil.hpp
deleted file mode 100644
index b28542587ce..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/testutil.hpp
+++ /dev/null
@@ -1,7 +0,0 @@
-#pragma once
-
-#define WARNING(...) \
- ColoredPrintf(testing::internal::COLOR_YELLOW, "[ WARNING ] "), \
- ColoredPrintf(testing::internal::COLOR_YELLOW, __VA_ARGS__), \
- printf("\n")
-