<?php

declare(strict_types=1);

namespace Brick\Geo\Tests\IO;

use Brick\Geo\Tests\AbstractTestCase;

/**
 * Base class for WKB reader/writer tests.
 */
abstract class WkbAbstractTestCase extends AbstractTestCase
{
    final public static function providerBigEndianWkb(): array
    {
        return [
            // Point
            ['POINT (1 2)', '00000000013ff00000000000004000000000000000', false, false],
            ['POINT Z (2 3 4)', '00000003e9400000000000000040080000000000004010000000000000', true, false],
            ['POINT M (3 4 5)', '00000007d1400800000000000040100000000000004014000000000000', false, true],
            ['POINT ZM (4 5 6 7)', '0000000bb9401000000000000040140000000000004018000000000000401c000000000000', true, true],

            // LineString
            ['LINESTRING (0 0, 1 2, 3 4)', '000000000200000003000000000000000000000000000000003ff0000000000000400000000000000040080000000000004010000000000000', false, false],
            ['LINESTRING Z (0 1 2, 1 2 3, 2 3 4)', '00000003ea0000000300000000000000003ff000000000000040000000000000003ff000000000000040000000000000004008000000000000400000000000000040080000000000004010000000000000', true, false],
            ['LINESTRING M (1 2 3, 2 3 4, 3 4 5)', '00000007d2000000033ff000000000000040000000000000004008000000000000400000000000000040080000000000004010000000000000400800000000000040100000000000004014000000000000', false, true],
            ['LINESTRING ZM (2 3 4 5, 3 4 5 6, 4 5 6 7)', '0000000bba0000000340000000000000004008000000000000401000000000000040140000000000004008000000000000401000000000000040140000000000004018000000000000401000000000000040140000000000004018000000000000401c000000000000', true, true],

            // LineString EMPTY
            ['LINESTRING EMPTY', '000000000200000000', false, false],
            ['LINESTRING Z EMPTY', '00000003ea00000000', true, false],
            ['LINESTRING M EMPTY', '00000007d200000000', false, true],
            ['LINESTRING ZM EMPTY', '0000000bba00000000', true, true],

            // CircularString
            ['CIRCULARSTRING (0 0, 1 2, 3 4)', '000000000800000003000000000000000000000000000000003ff0000000000000400000000000000040080000000000004010000000000000', false, false],
            ['CIRCULARSTRING Z (0 1 2, 1 2 3, 2 3 4)', '00000003f00000000300000000000000003ff000000000000040000000000000003ff000000000000040000000000000004008000000000000400000000000000040080000000000004010000000000000', true, false],
            ['CIRCULARSTRING M (1 2 3, 2 3 4, 3 4 5)', '00000007d8000000033ff000000000000040000000000000004008000000000000400000000000000040080000000000004010000000000000400800000000000040100000000000004014000000000000', false, true],
            ['CIRCULARSTRING ZM (2 3 4 5, 3 4 5 6, 4 5 6 7)', '0000000bc00000000340000000000000004008000000000000401000000000000040140000000000004008000000000000401000000000000040140000000000004018000000000000401000000000000040140000000000004018000000000000401c000000000000', true, true],

            // CircularString EMPTY
            ['CIRCULARSTRING EMPTY', '000000000800000000', false, false],
            ['CIRCULARSTRING Z EMPTY', '00000003f000000000', true, false],
            ['CIRCULARSTRING M EMPTY', '00000007d800000000', false, true],
            ['CIRCULARSTRING ZM EMPTY', '0000000bc000000000', true, true],

            // CompoundCurve
            ['COMPOUNDCURVE ((1 2, 3 4), CIRCULARSTRING (3 4, 5 6, 7 8))', '0000000009000000020000000002000000023ff00000000000004000000000000000400800000000000040100000000000000000000008000000034008000000000000401000000000000040140000000000004018000000000000401c0000000000004020000000000000', false, false],
            ['COMPOUNDCURVE Z ((1 2 3, 4 5 6), CIRCULARSTRING Z (4 5 6, 5 6 7, 6 7 8))', '00000003f10000000200000003ea000000023ff00000000000004000000000000000400800000000000040100000000000004014000000000000401800000000000000000003f00000000340100000000000004014000000000000401800000000000040140000000000004018000000000000401c0000000000004018000000000000401c0000000000004020000000000000', true, false],
            ['COMPOUNDCURVE M ((1 2 3, 2 3 4), CIRCULARSTRING M (2 3 4, 5 6 7, 8 9 0))', '00000007d90000000200000007d2000000023ff00000000000004000000000000000400800000000000040000000000000004008000000000000401000000000000000000007d80000000340000000000000004008000000000000401000000000000040140000000000004018000000000000401c000000000000402000000000000040220000000000000000000000000000', false, true],
            ['COMPOUNDCURVE ZM (CIRCULARSTRING ZM (1 2 3 4, 2 3 4 5, 3 4 5 6), (3 4 5 6, 7 8 9 0))', '0000000bc1000000020000000bc0000000033ff0000000000000400000000000000040080000000000004010000000000000400000000000000040080000000000004010000000000000401400000000000040080000000000004010000000000000401400000000000040180000000000000000000bba000000024008000000000000401000000000000040140000000000004018000000000000401c000000000000402000000000000040220000000000000000000000000000', true, true],

            // CompoundCurve EMPTY
            ['COMPOUNDCURVE EMPTY', '000000000900000000', false, false],
            ['COMPOUNDCURVE Z EMPTY', '00000003f100000000', true, false],
            ['COMPOUNDCURVE M EMPTY', '00000007d900000000', false, true],
            ['COMPOUNDCURVE ZM EMPTY', '0000000bc100000000', true, true],

            // Polygon
            ['POLYGON ((0 0, 1 2, 3 4, 0 0))', '00000000030000000100000004000000000000000000000000000000003ff000000000000040000000000000004008000000000000401000000000000000000000000000000000000000000000', false, false],
            ['POLYGON Z ((0 1 2, 1 2 3, 2 3 4, 0 1 2))', '00000003eb000000010000000400000000000000003ff000000000000040000000000000003ff00000000000004000000000000000400800000000000040000000000000004008000000000000401000000000000000000000000000003ff00000000000004000000000000000', true, false],
            ['POLYGON M ((1 2 3, 2 3 4, 3 4 5, 1 2 3))', '00000007d300000001000000043ff0000000000000400000000000000040080000000000004000000000000000400800000000000040100000000000004008000000000000401000000000000040140000000000003ff000000000000040000000000000004008000000000000', false, true],
            ['POLYGON ZM ((2 3 4 5, 3 4 5 6, 4 5 6 7, 2 3 4 5))', '0000000bbb000000010000000440000000000000004008000000000000401000000000000040140000000000004008000000000000401000000000000040140000000000004018000000000000401000000000000040140000000000004018000000000000401c0000000000004000000000000000400800000000000040100000000000004014000000000000', true, true],
            ['POLYGON ((0 0, 2 0, 0 2, 0 0), (0 0, 1 0, 0 1, 0 0))', '000000000300000002000000040000000000000000000000000000000040000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000004000000000000000000000000000000003ff0000000000000000000000000000000000000000000003ff000000000000000000000000000000000000000000000', false, false],
            ['POLYGON Z ((0 0 1, 2 0 1, 0 2 1, 0 0 1), (0 0 2, 1 0 2, 0 1 2, 0 0 2))', '00000003eb0000000200000004000000000000000000000000000000003ff0000000000000400000000000000000000000000000003ff0000000000000000000000000000040000000000000003ff0000000000000000000000000000000000000000000003ff0000000000000000000040000000000000000000000000000000040000000000000003ff00000000000000000000000000000400000000000000000000000000000003ff00000000000004000000000000000000000000000000000000000000000004000000000000000', true, false],
            ['POLYGON M ((0 0 1, 2 0 1, 0 2 1, 0 0 1), (0 0 2, 1 0 2, 0 1 2, 0 0 2))', '00000007d30000000200000004000000000000000000000000000000003ff0000000000000400000000000000000000000000000003ff0000000000000000000000000000040000000000000003ff0000000000000000000000000000000000000000000003ff0000000000000000000040000000000000000000000000000000040000000000000003ff00000000000000000000000000000400000000000000000000000000000003ff00000000000004000000000000000000000000000000000000000000000004000000000000000', false, true],
            ['POLYGON ZM ((0 0 1 2, 2 0 1 2, 0 2 1 2, 0 0 1 2), (0 0 1 2, 1 0 1 2, 0 1 1 2, 0 0 1 2))', '0000000bbb0000000200000004000000000000000000000000000000003ff00000000000004000000000000000400000000000000000000000000000003ff00000000000004000000000000000000000000000000040000000000000003ff00000000000004000000000000000000000000000000000000000000000003ff0000000000000400000000000000000000004000000000000000000000000000000003ff000000000000040000000000000003ff000000000000000000000000000003ff0000000000000400000000000000000000000000000003ff00000000000003ff00000000000004000000000000000000000000000000000000000000000003ff00000000000004000000000000000', true, true],

            // Polygon EMPTY
            ['POLYGON EMPTY', '000000000300000000', false, false],
            ['POLYGON Z EMPTY', '00000003eb00000000', true, false],
            ['POLYGON M EMPTY', '00000007d300000000', false, true],
            ['POLYGON ZM EMPTY', '0000000bbb00000000', true, true],

            // CurvePolygon
            ['CURVEPOLYGON ((0 0, 0 9, 9 9, 0 0), COMPOUNDCURVE ((1 2, 3 4), CIRCULARSTRING (3 4, 5 6, 7 8, 9 0, 1 2)))', '000000000a00000002000000000200000004000000000000000000000000000000000000000000000000402200000000000040220000000000004022000000000000000000000000000000000000000000000000000009000000020000000002000000023ff00000000000004000000000000000400800000000000040100000000000000000000008000000054008000000000000401000000000000040140000000000004018000000000000401c0000000000004020000000000000402200000000000000000000000000003ff00000000000004000000000000000', false, false],
            ['CURVEPOLYGON Z ((0 0 1, 0 9 1, 9 9 1, 0 0 1), CIRCULARSTRING Z (1 1 1, 4 7 1, 6 5 1, 2 3 1, 1 1 1))', '00000003f20000000200000003ea00000004000000000000000000000000000000003ff0000000000000000000000000000040220000000000003ff0000000000000402200000000000040220000000000003ff0000000000000000000000000000000000000000000003ff000000000000000000003f0000000053ff00000000000003ff00000000000003ff00000000000004010000000000000401c0000000000003ff0000000000000401800000000000040140000000000003ff0000000000000400000000000000040080000000000003ff00000000000003ff00000000000003ff00000000000003ff0000000000000', true, false],
            ['CURVEPOLYGON M (COMPOUNDCURVE M (CIRCULARSTRING M (0 0 1, 0 9 1, 9 9 1), (9 9 1, 0 0 1)), (1 1 1, 4 7 1, 6 5 1, 1 1 1))', '00000007da0000000200000007d90000000200000007d800000003000000000000000000000000000000003ff0000000000000000000000000000040220000000000003ff0000000000000402200000000000040220000000000003ff000000000000000000007d200000002402200000000000040220000000000003ff0000000000000000000000000000000000000000000003ff000000000000000000007d2000000043ff00000000000003ff00000000000003ff00000000000004010000000000000401c0000000000003ff0000000000000401800000000000040140000000000003ff00000000000003ff00000000000003ff00000000000003ff0000000000000', false, true],
            ['CURVEPOLYGON ZM (CIRCULARSTRING ZM (1 2 3 4, 2 3 4 5, 3 4 5 6, 4 5 6 7, 1 2 3 4), (3 4 5 6, 4 5 6 7, 9 8 7 6, 3 4 5 6))', '0000000bc2000000020000000bc0000000053ff000000000000040000000000000004008000000000000401000000000000040000000000000004008000000000000401000000000000040140000000000004008000000000000401000000000000040140000000000004018000000000000401000000000000040140000000000004018000000000000401c0000000000003ff00000000000004000000000000000400800000000000040100000000000000000000bba000000044008000000000000401000000000000040140000000000004018000000000000401000000000000040140000000000004018000000000000401c00000000000040220000000000004020000000000000401c00000000000040180000000000004008000000000000401000000000000040140000000000004018000000000000', true, true],

            // CurvePolygon EMPTY
            ['CURVEPOLYGON EMPTY', '000000000a00000000', false, false],
            ['CURVEPOLYGON Z EMPTY', '00000003f200000000', true, false],
            ['CURVEPOLYGON M EMPTY', '00000007da00000000', false, true],
            ['CURVEPOLYGON ZM EMPTY', '0000000bc200000000', true, true],

            // Triangle
            ['TRIANGLE ((0 0, 1 2, 3 4, 0 0))', '00000000110000000100000004000000000000000000000000000000003ff000000000000040000000000000004008000000000000401000000000000000000000000000000000000000000000', false, false],
            ['TRIANGLE Z ((0 1 2, 1 2 3, 2 3 4, 0 1 2))', '00000003f9000000010000000400000000000000003ff000000000000040000000000000003ff00000000000004000000000000000400800000000000040000000000000004008000000000000401000000000000000000000000000003ff00000000000004000000000000000', true, false],
            ['TRIANGLE M ((1 2 3, 2 3 4, 3 4 5, 1 2 3))', '00000007e100000001000000043ff0000000000000400000000000000040080000000000004000000000000000400800000000000040100000000000004008000000000000401000000000000040140000000000003ff000000000000040000000000000004008000000000000', false, true],
            ['TRIANGLE ZM ((2 3 4 5, 3 4 5 6, 4 5 6 7, 2 3 4 5))', '0000000bc9000000010000000440000000000000004008000000000000401000000000000040140000000000004008000000000000401000000000000040140000000000004018000000000000401000000000000040140000000000004018000000000000401c0000000000004000000000000000400800000000000040100000000000004014000000000000', true, true],

            // Triangle EMPTY
            ['TRIANGLE EMPTY', '000000001100000000', false, false],
            ['TRIANGLE Z EMPTY', '00000003f900000000', true, false],
            ['TRIANGLE M EMPTY', '00000007e100000000', false, true],
            ['TRIANGLE ZM EMPTY', '0000000bc900000000', true, true],

            // MultiPoint
            ['MULTIPOINT (0 0, 1 2, 3 4)', '00000000040000000300000000010000000000000000000000000000000000000000013ff00000000000004000000000000000000000000140080000000000004010000000000000', false, false],
            ['MULTIPOINT Z (0 1 2, 1 2 3, 2 3 4)', '00000003ec0000000300000003e900000000000000003ff0000000000000400000000000000000000003e93ff00000000000004000000000000000400800000000000000000003e9400000000000000040080000000000004010000000000000', true, false],
            ['MULTIPOINT M (1 2 3, 2 3 4, 3 4 5)', '00000007d40000000300000007d13ff00000000000004000000000000000400800000000000000000007d140000000000000004008000000000000401000000000000000000007d1400800000000000040100000000000004014000000000000', false, true],
            ['MULTIPOINT ZM (2 3 4 5, 3 4 5 6, 4 5 6 7)', '0000000bbc000000030000000bb940000000000000004008000000000000401000000000000040140000000000000000000bb940080000000000004010000000000000401400000000000040180000000000000000000bb9401000000000000040140000000000004018000000000000401c000000000000', true, true],

            // MultiPoint EMPTY
            ['MULTIPOINT EMPTY', '000000000400000000', false, false],
            ['MULTIPOINT Z EMPTY', '00000003ec00000000', true, false],
            ['MULTIPOINT M EMPTY', '00000007d400000000', false, true],
            ['MULTIPOINT ZM EMPTY', '0000000bbc00000000', true, true],

            // MultiLineString
            ['MULTILINESTRING ((0 0, 1 2, 3 4, 0 0))', '000000000500000001000000000200000004000000000000000000000000000000003ff000000000000040000000000000004008000000000000401000000000000000000000000000000000000000000000', false, false],
            ['MULTILINESTRING Z ((0 1 2, 1 2 3, 2 3 4, 0 1 2))', '00000003ed0000000100000003ea0000000400000000000000003ff000000000000040000000000000003ff00000000000004000000000000000400800000000000040000000000000004008000000000000401000000000000000000000000000003ff00000000000004000000000000000', true, false],
            ['MULTILINESTRING M ((1 2 3, 2 3 4, 3 4 5, 1 2 3))', '00000007d50000000100000007d2000000043ff0000000000000400000000000000040080000000000004000000000000000400800000000000040100000000000004008000000000000401000000000000040140000000000003ff000000000000040000000000000004008000000000000', false, true],
            ['MULTILINESTRING ZM ((2 3 4 5, 3 4 5 6, 4 5 6 7, 2 3 4 5))', '0000000bbd000000010000000bba0000000440000000000000004008000000000000401000000000000040140000000000004008000000000000401000000000000040140000000000004018000000000000401000000000000040140000000000004018000000000000401c0000000000004000000000000000400800000000000040100000000000004014000000000000', true, true],
            ['MULTILINESTRING ((0 0, 2 0, 0 2, 0 0), (0 0, 1 0, 0 1, 0 0))', '00000000050000000200000000020000000400000000000000000000000000000000400000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000200000004000000000000000000000000000000003ff0000000000000000000000000000000000000000000003ff000000000000000000000000000000000000000000000', false, false],
            ['MULTILINESTRING Z ((0 0 1, 2 0 1, 0 2 1, 0 0 1), (0 0 2, 1 0 2, 0 1 2, 0 0 2))', '00000003ed0000000200000003ea00000004000000000000000000000000000000003ff0000000000000400000000000000000000000000000003ff0000000000000000000000000000040000000000000003ff0000000000000000000000000000000000000000000003ff000000000000000000003ea000000040000000000000000000000000000000040000000000000003ff00000000000000000000000000000400000000000000000000000000000003ff00000000000004000000000000000000000000000000000000000000000004000000000000000', true, false],
            ['MULTILINESTRING M ((0 0 1, 2 0 1, 0 2 1, 0 0 1), (0 0 2, 1 0 2, 0 1 2, 0 0 2))', '00000007d50000000200000007d200000004000000000000000000000000000000003ff0000000000000400000000000000000000000000000003ff0000000000000000000000000000040000000000000003ff0000000000000000000000000000000000000000000003ff000000000000000000007d2000000040000000000000000000000000000000040000000000000003ff00000000000000000000000000000400000000000000000000000000000003ff00000000000004000000000000000000000000000000000000000000000004000000000000000', false, true],
            ['MULTILINESTRING ZM ((0 0 1 2, 2 0 1 2, 0 2 1 2, 0 0 1 2), (0 0 1 2, 1 0 1 2, 0 1 1 2, 0 0 1 2))', '0000000bbd000000020000000bba00000004000000000000000000000000000000003ff00000000000004000000000000000400000000000000000000000000000003ff00000000000004000000000000000000000000000000040000000000000003ff00000000000004000000000000000000000000000000000000000000000003ff000000000000040000000000000000000000bba00000004000000000000000000000000000000003ff000000000000040000000000000003ff000000000000000000000000000003ff0000000000000400000000000000000000000000000003ff00000000000003ff00000000000004000000000000000000000000000000000000000000000003ff00000000000004000000000000000', true, true],

            // MultiLineString EMPTY
            ['MULTILINESTRING EMPTY', '000000000500000000', false, false],
            ['MULTILINESTRING Z EMPTY', '00000003ed00000000', true, false],
            ['MULTILINESTRING M EMPTY', '00000007d500000000', false, true],
            ['MULTILINESTRING ZM EMPTY', '0000000bbd00000000', true, true],

            // MultiPolygon
            ['MULTIPOLYGON (((0 0, 1 2, 3 4, 0 0)))', '00000000060000000100000000030000000100000004000000000000000000000000000000003ff000000000000040000000000000004008000000000000401000000000000000000000000000000000000000000000', false, false],
            ['MULTIPOLYGON Z (((0 1 2, 1 2 3, 2 3 4, 0 1 2)))', '00000003ee0000000100000003eb000000010000000400000000000000003ff000000000000040000000000000003ff00000000000004000000000000000400800000000000040000000000000004008000000000000401000000000000000000000000000003ff00000000000004000000000000000', true, false],
            ['MULTIPOLYGON M (((1 2 3, 2 3 4, 3 4 5, 1 2 3)))', '00000007d60000000100000007d300000001000000043ff0000000000000400000000000000040080000000000004000000000000000400800000000000040100000000000004008000000000000401000000000000040140000000000003ff000000000000040000000000000004008000000000000', false, true],
            ['MULTIPOLYGON ZM (((2 3 4 5, 3 4 5 6, 4 5 6 7, 2 3 4 5)))', '0000000bbe000000010000000bbb000000010000000440000000000000004008000000000000401000000000000040140000000000004008000000000000401000000000000040140000000000004018000000000000401000000000000040140000000000004018000000000000401c0000000000004000000000000000400800000000000040100000000000004014000000000000', true, true],
            ['MULTIPOLYGON (((0 0, 2 0, 0 2, 0 0)), ((0 0, 1 0, 0 1, 0 0)))', '000000000600000002000000000300000001000000040000000000000000000000000000000040000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000030000000100000004000000000000000000000000000000003ff0000000000000000000000000000000000000000000003ff000000000000000000000000000000000000000000000', false, false],
            ['MULTIPOLYGON Z (((0 0 1, 2 0 1, 0 2 1, 0 0 1)), ((0 0 2, 1 0 2, 0 1 2, 0 0 2)))', '00000003ee0000000200000003eb0000000100000004000000000000000000000000000000003ff0000000000000400000000000000000000000000000003ff0000000000000000000000000000040000000000000003ff0000000000000000000000000000000000000000000003ff000000000000000000003eb00000001000000040000000000000000000000000000000040000000000000003ff00000000000000000000000000000400000000000000000000000000000003ff00000000000004000000000000000000000000000000000000000000000004000000000000000', true, false],
            ['MULTIPOLYGON M (((0 0 1, 2 0 1, 0 2 1, 0 0 1)), ((0 0 2, 1 0 2, 0 1 2, 0 0 2)))', '00000007d60000000200000007d30000000100000004000000000000000000000000000000003ff0000000000000400000000000000000000000000000003ff0000000000000000000000000000040000000000000003ff0000000000000000000000000000000000000000000003ff000000000000000000007d300000001000000040000000000000000000000000000000040000000000000003ff00000000000000000000000000000400000000000000000000000000000003ff00000000000004000000000000000000000000000000000000000000000004000000000000000', false, true],
            ['MULTIPOLYGON ZM (((0 0 1 2, 2 0 1 2, 0 2 1 2, 0 0 1 2)), ((0 0 1 2, 1 0 1 2, 0 1 1 2, 0 0 1 2)))', '0000000bbe000000020000000bbb0000000100000004000000000000000000000000000000003ff00000000000004000000000000000400000000000000000000000000000003ff00000000000004000000000000000000000000000000040000000000000003ff00000000000004000000000000000000000000000000000000000000000003ff000000000000040000000000000000000000bbb0000000100000004000000000000000000000000000000003ff000000000000040000000000000003ff000000000000000000000000000003ff0000000000000400000000000000000000000000000003ff00000000000003ff00000000000004000000000000000000000000000000000000000000000003ff00000000000004000000000000000', true, true],

            // MultiPolygon EMPTY
            ['MULTIPOLYGON EMPTY', '000000000600000000', false, false],
            ['MULTIPOLYGON Z EMPTY', '00000003ee00000000', true, false],
            ['MULTIPOLYGON M EMPTY', '00000007d600000000', false, true],
            ['MULTIPOLYGON ZM EMPTY', '0000000bbe00000000', true, true],

            // GeometryCollection
            ['GEOMETRYCOLLECTION (POINT (1 2), LINESTRING (2 3, 3 4))', '00000000070000000200000000013ff000000000000040000000000000000000000002000000024000000000000000400800000000000040080000000000004010000000000000', false, false],
            ['GEOMETRYCOLLECTION Z (POINT Z (1 2 3), LINESTRING Z (2 3 4, 3 4 5))', '00000003ef0000000200000003e93ff00000000000004000000000000000400800000000000000000003ea00000002400000000000000040080000000000004010000000000000400800000000000040100000000000004014000000000000', true, false],
            ['GEOMETRYCOLLECTION M (POINT M (1 2 4), LINESTRING M (2 3 5, 3 4 6))', '00000007d70000000200000007d13ff00000000000004000000000000000401000000000000000000007d200000002400000000000000040080000000000004014000000000000400800000000000040100000000000004018000000000000', false, true],
            ['GEOMETRYCOLLECTION ZM (POINT ZM (1 2 3 4), LINESTRING ZM (2 3 4 5, 3 4 5 6))', '0000000bbf000000020000000bb93ff00000000000004000000000000000400800000000000040100000000000000000000bba0000000240000000000000004008000000000000401000000000000040140000000000004008000000000000401000000000000040140000000000004018000000000000', true, true],

            // GeometryCollection EMPTY
            ['GEOMETRYCOLLECTION EMPTY', '000000000700000000', false, false],
            ['GEOMETRYCOLLECTION Z EMPTY', '00000003ef00000000', true, false],
            ['GEOMETRYCOLLECTION M EMPTY', '00000007d700000000', false, true],
            ['GEOMETRYCOLLECTION ZM EMPTY', '0000000bbf00000000', true, true],

            // PolyhedralSurface
            ['POLYHEDRALSURFACE (((0 0, 0 1, 1 1, 1 0, 0 0)), ((0 1, 1 1, 2 1, 2 2, 0 1)))', '000000000f00000002000000000300000001000000050000000000000000000000000000000000000000000000003ff00000000000003ff00000000000003ff00000000000003ff00000000000000000000000000000000000000000000000000000000000000000000003000000010000000500000000000000003ff00000000000003ff00000000000003ff000000000000040000000000000003ff00000000000004000000000000000400000000000000000000000000000003ff0000000000000', false, false],
            ['POLYHEDRALSURFACE Z (((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)), ((0 0 0, 0 1 0, 0 1 1, 0 0 1, 0 0 0)))', '00000003f70000000200000003eb000000010000000500000000000000000000000000000000000000000000000000000000000000003ff000000000000000000000000000003ff00000000000003ff000000000000000000000000000003ff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003eb000000010000000500000000000000000000000000000000000000000000000000000000000000003ff0000000000000000000000000000000000000000000003ff00000000000003ff0000000000000000000000000000000000000000000003ff0000000000000000000000000000000000000000000000000000000000000', true, false],
            ['POLYHEDRALSURFACE M (((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)), ((0 0 0, 0 1 0, 0 1 1, 0 0 1, 0 0 0)))', '00000007df0000000200000007d3000000010000000500000000000000000000000000000000000000000000000000000000000000003ff000000000000000000000000000003ff00000000000003ff000000000000000000000000000003ff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007d3000000010000000500000000000000000000000000000000000000000000000000000000000000003ff0000000000000000000000000000000000000000000003ff00000000000003ff0000000000000000000000000000000000000000000003ff0000000000000000000000000000000000000000000000000000000000000', false, true],
            ['POLYHEDRALSURFACE ZM (((0 0 0 2, 0 1 0 2, 1 1 0 2, 1 0 0 2, 0 0 0 2)), ((0 0 0 3, 0 1 0 3, 0 1 1 3, 0 0 1 3, 0 0 0 3)))', '0000000bc7000000020000000bbb0000000100000005000000000000000000000000000000000000000000000000400000000000000000000000000000003ff0000000000000000000000000000040000000000000003ff00000000000003ff0000000000000000000000000000040000000000000003ff000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000bbb0000000100000005000000000000000000000000000000000000000000000000400800000000000000000000000000003ff00000000000000000000000000000400800000000000000000000000000003ff00000000000003ff00000000000004008000000000000000000000000000000000000000000003ff000000000000040080000000000000000000000000000000000000000000000000000000000004008000000000000', true, true],

            // PolyhedralSurface EMPTY
            ['POLYHEDRALSURFACE EMPTY', '000000000f00000000', false, false],
            ['POLYHEDRALSURFACE Z EMPTY', '00000003f700000000', false, false],
            ['POLYHEDRALSURFACE M EMPTY', '00000007df00000000', false, false],
            ['POLYHEDRALSURFACE ZM EMPTY', '0000000bc700000000', false, false],

            // TIN
            ['TIN (((0 0, 0 1, 1 0, 0 0)), ((0 1, 1 1, 1 0, 0 1)))', '000000001000000002000000001100000001000000040000000000000000000000000000000000000000000000003ff00000000000003ff00000000000000000000000000000000000000000000000000000000000000000000011000000010000000400000000000000003ff00000000000003ff00000000000003ff00000000000003ff0000000000000000000000000000000000000000000003ff0000000000000', false, false],
            ['TIN Z (((0 0 0, 0 0 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 0 0 0)))', '00000003f80000000200000003f90000000100000004000000000000000000000000000000000000000000000000000000000000000000000000000000003ff000000000000000000000000000003ff0000000000000000000000000000000000000000000000000000000000000000000000000000000000003f9000000010000000400000000000000000000000000000000000000000000000000000000000000003ff000000000000000000000000000003ff00000000000003ff00000000000000000000000000000000000000000000000000000000000000000000000000000', true, false],
            ['TIN M (((0 0 0, 0 0 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 0 0 0)))', '00000007e00000000200000007e10000000100000004000000000000000000000000000000000000000000000000000000000000000000000000000000003ff000000000000000000000000000003ff0000000000000000000000000000000000000000000000000000000000000000000000000000000000007e1000000010000000400000000000000000000000000000000000000000000000000000000000000003ff000000000000000000000000000003ff00000000000003ff00000000000000000000000000000000000000000000000000000000000000000000000000000', false, true],
            ['TIN ZM (((0 0 0 2, 0 0 1 2, 0 1 0 2, 0 0 0 2)), ((0 0 0 3, 0 1 0 3, 1 1 0 3, 0 0 0 3)))', '0000000bc8000000020000000bc900000001000000040000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000003ff0000000000000400000000000000000000000000000003ff00000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000bc90000000100000004000000000000000000000000000000000000000000000000400800000000000000000000000000003ff0000000000000000000000000000040080000000000003ff00000000000003ff0000000000000000000000000000040080000000000000000000000000000000000000000000000000000000000004008000000000000', true, true],

            // TIN EMPTY
            ['TIN EMPTY', '000000001000000000', false, false],
            ['TIN Z EMPTY', '00000003f800000000', true, false],
            ['TIN M EMPTY', '00000007e000000000', false, true],
            ['TIN ZM EMPTY', '0000000bc800000000', true, true],
        ];
    }

    final public static function providerLittleEndianWkb(): array
    {
        return [
            // Point
            ['POINT (1 2)', '0101000000000000000000f03f0000000000000040', false, false],
            ['POINT Z (2 3 4)', '01e9030000000000000000004000000000000008400000000000001040', true, false],
            ['POINT M (3 4 5)', '01d1070000000000000000084000000000000010400000000000001440', false, true],
            ['POINT ZM (4 5 6 7)', '01b90b00000000000000001040000000000000144000000000000018400000000000001c40', true, true],

            // LineString
            ['LINESTRING (0 0, 1 2, 3 4)', '01020000000300000000000000000000000000000000000000000000000000f03f000000000000004000000000000008400000000000001040', false, false],
            ['LINESTRING Z (0 1 2, 1 2 3, 2 3 4)', '01ea030000030000000000000000000000000000000000f03f0000000000000040000000000000f03f00000000000000400000000000000840000000000000004000000000000008400000000000001040', true, false],
            ['LINESTRING M (1 2 3, 2 3 4, 3 4 5)', '01d207000003000000000000000000f03f00000000000000400000000000000840000000000000004000000000000008400000000000001040000000000000084000000000000010400000000000001440', false, true],
            ['LINESTRING ZM (2 3 4 5, 3 4 5 6, 4 5 6 7)', '01ba0b000003000000000000000000004000000000000008400000000000001040000000000000144000000000000008400000000000001040000000000000144000000000000018400000000000001040000000000000144000000000000018400000000000001c40', true, true],

            // LineString EMPTY
            ['LINESTRING EMPTY', '010200000000000000', false, false],
            ['LINESTRING Z EMPTY', '01ea03000000000000', true, false],
            ['LINESTRING M EMPTY', '01d207000000000000', false, true],
            ['LINESTRING ZM EMPTY', '01ba0b000000000000', true, true],

            // CircularString
            ['CIRCULARSTRING (0 0, 1 2, 3 4)', '01080000000300000000000000000000000000000000000000000000000000f03f000000000000004000000000000008400000000000001040', false, false],
            ['CIRCULARSTRING Z (0 1 2, 1 2 3, 2 3 4)', '01f0030000030000000000000000000000000000000000f03f0000000000000040000000000000f03f00000000000000400000000000000840000000000000004000000000000008400000000000001040', true, false],
            ['CIRCULARSTRING M (1 2 3, 2 3 4, 3 4 5)', '01d807000003000000000000000000f03f00000000000000400000000000000840000000000000004000000000000008400000000000001040000000000000084000000000000010400000000000001440', false, true],
            ['CIRCULARSTRING ZM (2 3 4 5, 3 4 5 6, 4 5 6 7)', '01c00b000003000000000000000000004000000000000008400000000000001040000000000000144000000000000008400000000000001040000000000000144000000000000018400000000000001040000000000000144000000000000018400000000000001c40', true, true],

            // CircularString EMPTY
            ['CIRCULARSTRING EMPTY', '010800000000000000', false, false],
            ['CIRCULARSTRING Z EMPTY', '01f003000000000000', true, false],
            ['CIRCULARSTRING M EMPTY', '01d807000000000000', false, true],
            ['CIRCULARSTRING ZM EMPTY', '01c00b000000000000', true, true],

            // CompoundCurve
            ['COMPOUNDCURVE ((1 2, 3 4), CIRCULARSTRING (3 4, 5 6, 7 8))', '010900000002000000010200000002000000000000000000f03f00000000000000400000000000000840000000000000104001080000000300000000000000000008400000000000001040000000000000144000000000000018400000000000001c400000000000002040', false, false],
            ['COMPOUNDCURVE Z ((1 2 3, 4 5 6), CIRCULARSTRING Z (4 5 6, 5 6 7, 6 7 8))', '01f10300000200000001ea03000002000000000000000000f03f0000000000000040000000000000084000000000000010400000000000001440000000000000184001f003000003000000000000000000104000000000000014400000000000001840000000000000144000000000000018400000000000001c4000000000000018400000000000001c400000000000002040', true, false],
            ['COMPOUNDCURVE M ((1 2 3, 2 3 4), CIRCULARSTRING M (2 3 4, 5 6 7, 8 9 0))', '01d90700000200000001d207000002000000000000000000f03f0000000000000040000000000000084000000000000000400000000000000840000000000000104001d807000003000000000000000000004000000000000008400000000000001040000000000000144000000000000018400000000000001c40000000000000204000000000000022400000000000000000', false, true],
            ['COMPOUNDCURVE ZM (CIRCULARSTRING ZM (1 2 3 4, 2 3 4 5, 3 4 5 6), (3 4 5 6, 7 8 9 0))', '01c10b00000200000001c00b000003000000000000000000f03f0000000000000040000000000000084000000000000010400000000000000040000000000000084000000000000010400000000000001440000000000000084000000000000010400000000000001440000000000000184001ba0b00000200000000000000000008400000000000001040000000000000144000000000000018400000000000001c40000000000000204000000000000022400000000000000000', true, true],

            // CompoundCurve EMPTY
            ['COMPOUNDCURVE EMPTY', '010900000000000000', false, false],
            ['COMPOUNDCURVE Z EMPTY', '01f103000000000000', true, false],
            ['COMPOUNDCURVE M EMPTY', '01d907000000000000', false, true],
            ['COMPOUNDCURVE ZM EMPTY', '01c10b000000000000', true, true],

            // Polygon
            ['POLYGON ((0 0, 1 2, 3 4, 0 0))', '0103000000010000000400000000000000000000000000000000000000000000000000f03f00000000000000400000000000000840000000000000104000000000000000000000000000000000', false, false],
            ['POLYGON Z ((0 1 2, 1 2 3, 2 3 4, 0 1 2))', '01eb03000001000000040000000000000000000000000000000000f03f0000000000000040000000000000f03f000000000000004000000000000008400000000000000040000000000000084000000000000010400000000000000000000000000000f03f0000000000000040', true, false],
            ['POLYGON M ((1 2 3, 2 3 4, 3 4 5, 1 2 3))', '01d30700000100000004000000000000000000f03f00000000000000400000000000000840000000000000004000000000000008400000000000001040000000000000084000000000000010400000000000001440000000000000f03f00000000000000400000000000000840', false, true],
            ['POLYGON ZM ((2 3 4 5, 3 4 5 6, 4 5 6 7, 2 3 4 5))', '01bb0b00000100000004000000000000000000004000000000000008400000000000001040000000000000144000000000000008400000000000001040000000000000144000000000000018400000000000001040000000000000144000000000000018400000000000001c400000000000000040000000000000084000000000000010400000000000001440', true, true],
            ['POLYGON ((0 0, 2 0, 0 2, 0 0), (0 0, 1 0, 0 1, 0 0))', '01030000000200000004000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000040000000000000000000000000000000000400000000000000000000000000000000000000000000000000f03f00000000000000000000000000000000000000000000f03f00000000000000000000000000000000', false, false],
            ['POLYGON Z ((0 0 1, 2 0 1, 0 2 1, 0 0 1), (0 0 2, 1 0 2, 0 1 2, 0 0 2))', '01eb030000020000000400000000000000000000000000000000000000000000000000f03f00000000000000400000000000000000000000000000f03f00000000000000000000000000000040000000000000f03f00000000000000000000000000000000000000000000f03f04000000000000000000000000000000000000000000000000000040000000000000f03f000000000000000000000000000000400000000000000000000000000000f03f0000000000000040000000000000000000000000000000000000000000000040', true, false],
            ['POLYGON M ((0 0 1, 2 0 1, 0 2 1, 0 0 1), (0 0 2, 1 0 2, 0 1 2, 0 0 2))', '01d3070000020000000400000000000000000000000000000000000000000000000000f03f00000000000000400000000000000000000000000000f03f00000000000000000000000000000040000000000000f03f00000000000000000000000000000000000000000000f03f04000000000000000000000000000000000000000000000000000040000000000000f03f000000000000000000000000000000400000000000000000000000000000f03f0000000000000040000000000000000000000000000000000000000000000040', false, true],
            ['POLYGON ZM ((0 0 1 2, 2 0 1 2, 0 2 1 2, 0 0 1 2), (0 0 1 2, 1 0 1 2, 0 1 1 2, 0 0 1 2))', '01bb0b0000020000000400000000000000000000000000000000000000000000000000f03f000000000000004000000000000000400000000000000000000000000000f03f000000000000004000000000000000000000000000000040000000000000f03f000000000000004000000000000000000000000000000000000000000000f03f00000000000000400400000000000000000000000000000000000000000000000000f03f0000000000000040000000000000f03f0000000000000000000000000000f03f00000000000000400000000000000000000000000000f03f000000000000f03f000000000000004000000000000000000000000000000000000000000000f03f0000000000000040', true, true],

            // Polygon EMPTY
            ['POLYGON EMPTY', '010300000000000000', false, false],
            ['POLYGON Z EMPTY', '01eb03000000000000', true, false],
            ['POLYGON M EMPTY', '01d307000000000000', false, true],
            ['POLYGON ZM EMPTY', '01bb0b000000000000', true, true],

            // CurvePolygon
            ['CURVEPOLYGON ((0 0, 0 9, 9 9, 0 0), COMPOUNDCURVE ((1 2, 3 4), CIRCULARSTRING (3 4, 5 6, 7 8, 9 0, 1 2)))', '010a0000000200000001020000000400000000000000000000000000000000000000000000000000000000000000000022400000000000002240000000000000224000000000000000000000000000000000010900000002000000010200000002000000000000000000f03f00000000000000400000000000000840000000000000104001080000000500000000000000000008400000000000001040000000000000144000000000000018400000000000001c40000000000000204000000000000022400000000000000000000000000000f03f0000000000000040', false, false],
            ['CURVEPOLYGON Z ((0 0 1, 0 9 1, 9 9 1, 0 0 1), CIRCULARSTRING Z (1 1 1, 4 7 1, 6 5 1, 2 3 1, 1 1 1))', '01f20300000200000001ea0300000400000000000000000000000000000000000000000000000000f03f00000000000000000000000000002240000000000000f03f00000000000022400000000000002240000000000000f03f00000000000000000000000000000000000000000000f03f01f003000005000000000000000000f03f000000000000f03f000000000000f03f00000000000010400000000000001c40000000000000f03f00000000000018400000000000001440000000000000f03f00000000000000400000000000000840000000000000f03f000000000000f03f000000000000f03f000000000000f03f', true, false],
            ['CURVEPOLYGON M (COMPOUNDCURVE M (CIRCULARSTRING M (0 0 1, 0 9 1, 9 9 1), (9 9 1, 0 0 1)), (1 1 1, 4 7 1, 6 5 1, 1 1 1))', '01da0700000200000001d90700000200000001d80700000300000000000000000000000000000000000000000000000000f03f00000000000000000000000000002240000000000000f03f00000000000022400000000000002240000000000000f03f01d20700000200000000000000000022400000000000002240000000000000f03f00000000000000000000000000000000000000000000f03f01d207000004000000000000000000f03f000000000000f03f000000000000f03f00000000000010400000000000001c40000000000000f03f00000000000018400000000000001440000000000000f03f000000000000f03f000000000000f03f000000000000f03f', false, true],
            ['CURVEPOLYGON ZM (CIRCULARSTRING ZM (1 2 3 4, 2 3 4 5, 3 4 5 6, 4 5 6 7, 1 2 3 4), (3 4 5 6, 4 5 6 7, 9 8 7 6, 3 4 5 6))', '01c20b00000200000001c00b000005000000000000000000f03f000000000000004000000000000008400000000000001040000000000000004000000000000008400000000000001040000000000000144000000000000008400000000000001040000000000000144000000000000018400000000000001040000000000000144000000000000018400000000000001c40000000000000f03f00000000000000400000000000000840000000000000104001ba0b00000400000000000000000008400000000000001040000000000000144000000000000018400000000000001040000000000000144000000000000018400000000000001c40000000000000224000000000000020400000000000001c4000000000000018400000000000000840000000000000104000000000000014400000000000001840', true, true],

            // CurvePolygon EMPTY
            ['CURVEPOLYGON EMPTY', '010a00000000000000', false, false],
            ['CURVEPOLYGON Z EMPTY', '01f203000000000000', true, false],
            ['CURVEPOLYGON M EMPTY', '01da07000000000000', false, true],
            ['CURVEPOLYGON ZM EMPTY', '01c20b000000000000', true, true],

            // Triangle
            ['TRIANGLE ((0 0, 1 2, 3 4, 0 0))', '0111000000010000000400000000000000000000000000000000000000000000000000f03f00000000000000400000000000000840000000000000104000000000000000000000000000000000', false, false],
            ['TRIANGLE Z ((0 1 2, 1 2 3, 2 3 4, 0 1 2))', '01f903000001000000040000000000000000000000000000000000f03f0000000000000040000000000000f03f000000000000004000000000000008400000000000000040000000000000084000000000000010400000000000000000000000000000f03f0000000000000040', true, false],
            ['TRIANGLE M ((1 2 3, 2 3 4, 3 4 5, 1 2 3))', '01e10700000100000004000000000000000000f03f00000000000000400000000000000840000000000000004000000000000008400000000000001040000000000000084000000000000010400000000000001440000000000000f03f00000000000000400000000000000840', false, true],
            ['TRIANGLE ZM ((2 3 4 5, 3 4 5 6, 4 5 6 7, 2 3 4 5))', '01c90b00000100000004000000000000000000004000000000000008400000000000001040000000000000144000000000000008400000000000001040000000000000144000000000000018400000000000001040000000000000144000000000000018400000000000001c400000000000000040000000000000084000000000000010400000000000001440', true, true],

            // Triangle EMPTY
            ['TRIANGLE EMPTY', '011100000000000000', false, false],
            ['TRIANGLE Z EMPTY', '01f903000000000000', true, false],
            ['TRIANGLE M EMPTY', '01e107000000000000', false, true],
            ['TRIANGLE ZM EMPTY', '01c90b000000000000', true, true],

            // MultiPoint
            ['MULTIPOINT (0 0, 1 2, 3 4)', '0104000000030000000101000000000000000000000000000000000000000101000000000000000000f03f0000000000000040010100000000000000000008400000000000001040', false, false],
            ['MULTIPOINT Z (0 1 2, 1 2 3, 2 3 4)', '01ec0300000300000001e90300000000000000000000000000000000f03f000000000000004001e9030000000000000000f03f0000000000000040000000000000084001e9030000000000000000004000000000000008400000000000001040', true, false],
            ['MULTIPOINT M (1 2 3, 2 3 4, 3 4 5)', '01d40700000300000001d1070000000000000000f03f0000000000000040000000000000084001d107000000000000000000400000000000000840000000000000104001d1070000000000000000084000000000000010400000000000001440', false, true],
            ['MULTIPOINT ZM (2 3 4 5, 3 4 5 6, 4 5 6 7)', '01bc0b00000300000001b90b0000000000000000004000000000000008400000000000001040000000000000144001b90b0000000000000000084000000000000010400000000000001440000000000000184001b90b00000000000000001040000000000000144000000000000018400000000000001c40', true, true],

            // MultiPoint EMPTY
            ['MULTIPOINT EMPTY', '010400000000000000', false, false],
            ['MULTIPOINT Z EMPTY', '01ec03000000000000', true, false],
            ['MULTIPOINT M EMPTY', '01d407000000000000', false, true],
            ['MULTIPOINT ZM EMPTY', '01bc0b000000000000', true, true],

            // MultiLineString
            ['MULTILINESTRING ((0 0, 1 2, 3 4, 0 0))', '01050000000100000001020000000400000000000000000000000000000000000000000000000000f03f00000000000000400000000000000840000000000000104000000000000000000000000000000000', false, false],
            ['MULTILINESTRING Z ((0 1 2, 1 2 3, 2 3 4, 0 1 2))', '01ed0300000100000001ea030000040000000000000000000000000000000000f03f0000000000000040000000000000f03f000000000000004000000000000008400000000000000040000000000000084000000000000010400000000000000000000000000000f03f0000000000000040', true, false],
            ['MULTILINESTRING M ((1 2 3, 2 3 4, 3 4 5, 1 2 3))', '01d50700000100000001d207000004000000000000000000f03f00000000000000400000000000000840000000000000004000000000000008400000000000001040000000000000084000000000000010400000000000001440000000000000f03f00000000000000400000000000000840', false, true],
            ['MULTILINESTRING ZM ((2 3 4 5, 3 4 5 6, 4 5 6 7, 2 3 4 5))', '01bd0b00000100000001ba0b000004000000000000000000004000000000000008400000000000001040000000000000144000000000000008400000000000001040000000000000144000000000000018400000000000001040000000000000144000000000000018400000000000001c400000000000000040000000000000084000000000000010400000000000001440', true, true],
            ['MULTILINESTRING ((0 0, 2 0, 0 2, 0 0), (0 0, 1 0, 0 1, 0 0))', '0105000000020000000102000000040000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000400000000000000000000000000000000001020000000400000000000000000000000000000000000000000000000000f03f00000000000000000000000000000000000000000000f03f00000000000000000000000000000000', false, false],
            ['MULTILINESTRING Z ((0 0 1, 2 0 1, 0 2 1, 0 0 1), (0 0 2, 1 0 2, 0 1 2, 0 0 2))', '01ed0300000200000001ea0300000400000000000000000000000000000000000000000000000000f03f00000000000000400000000000000000000000000000f03f00000000000000000000000000000040000000000000f03f00000000000000000000000000000000000000000000f03f01ea03000004000000000000000000000000000000000000000000000000000040000000000000f03f000000000000000000000000000000400000000000000000000000000000f03f0000000000000040000000000000000000000000000000000000000000000040', true, false],
            ['MULTILINESTRING M ((0 0 1, 2 0 1, 0 2 1, 0 0 1), (0 0 2, 1 0 2, 0 1 2, 0 0 2))', '01d50700000200000001d20700000400000000000000000000000000000000000000000000000000f03f00000000000000400000000000000000000000000000f03f00000000000000000000000000000040000000000000f03f00000000000000000000000000000000000000000000f03f01d207000004000000000000000000000000000000000000000000000000000040000000000000f03f000000000000000000000000000000400000000000000000000000000000f03f0000000000000040000000000000000000000000000000000000000000000040', false, true],
            ['MULTILINESTRING ZM ((0 0 1 2, 2 0 1 2, 0 2 1 2, 0 0 1 2), (0 0 1 2, 1 0 1 2, 0 1 1 2, 0 0 1 2))', '01bd0b00000200000001ba0b00000400000000000000000000000000000000000000000000000000f03f000000000000004000000000000000400000000000000000000000000000f03f000000000000004000000000000000000000000000000040000000000000f03f000000000000004000000000000000000000000000000000000000000000f03f000000000000004001ba0b00000400000000000000000000000000000000000000000000000000f03f0000000000000040000000000000f03f0000000000000000000000000000f03f00000000000000400000000000000000000000000000f03f000000000000f03f000000000000004000000000000000000000000000000000000000000000f03f0000000000000040', true, true],

            // MultiLineString EMPTY
            ['MULTILINESTRING EMPTY', '010500000000000000', false, false],
            ['MULTILINESTRING Z EMPTY', '01ed03000000000000', true, false],
            ['MULTILINESTRING M EMPTY', '01d507000000000000', false, true],
            ['MULTILINESTRING ZM EMPTY', '01bd0b000000000000', true, true],

            // MultiPolygon
            ['MULTIPOLYGON (((0 0, 1 2, 3 4, 0 0)))', '0106000000010000000103000000010000000400000000000000000000000000000000000000000000000000f03f00000000000000400000000000000840000000000000104000000000000000000000000000000000', false, false],
            ['MULTIPOLYGON Z (((0 1 2, 1 2 3, 2 3 4, 0 1 2)))', '01ee0300000100000001eb03000001000000040000000000000000000000000000000000f03f0000000000000040000000000000f03f000000000000004000000000000008400000000000000040000000000000084000000000000010400000000000000000000000000000f03f0000000000000040', true, false],
            ['MULTIPOLYGON M (((1 2 3, 2 3 4, 3 4 5, 1 2 3)))', '01d60700000100000001d30700000100000004000000000000000000f03f00000000000000400000000000000840000000000000004000000000000008400000000000001040000000000000084000000000000010400000000000001440000000000000f03f00000000000000400000000000000840', false, true],
            ['MULTIPOLYGON ZM (((2 3 4 5, 3 4 5 6, 4 5 6 7, 2 3 4 5)))', '01be0b00000100000001bb0b00000100000004000000000000000000004000000000000008400000000000001040000000000000144000000000000008400000000000001040000000000000144000000000000018400000000000001040000000000000144000000000000018400000000000001c400000000000000040000000000000084000000000000010400000000000001440', true, true],
            ['MULTIPOLYGON (((0 0, 2 0, 0 2, 0 0)), ((0 0, 1 0, 0 1, 0 0)))', '01060000000200000001030000000100000004000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000040000000000000000000000000000000000103000000010000000400000000000000000000000000000000000000000000000000f03f00000000000000000000000000000000000000000000f03f00000000000000000000000000000000', false, false],
            ['MULTIPOLYGON Z (((0 0 1, 2 0 1, 0 2 1, 0 0 1)), ((0 0 2, 1 0 2, 0 1 2, 0 0 2)))', '01ee0300000200000001eb030000010000000400000000000000000000000000000000000000000000000000f03f00000000000000400000000000000000000000000000f03f00000000000000000000000000000040000000000000f03f00000000000000000000000000000000000000000000f03f01eb0300000100000004000000000000000000000000000000000000000000000000000040000000000000f03f000000000000000000000000000000400000000000000000000000000000f03f0000000000000040000000000000000000000000000000000000000000000040', true, false],
            ['MULTIPOLYGON M (((0 0 1, 2 0 1, 0 2 1, 0 0 1)), ((0 0 2, 1 0 2, 0 1 2, 0 0 2)))', '01d60700000200000001d3070000010000000400000000000000000000000000000000000000000000000000f03f00000000000000400000000000000000000000000000f03f00000000000000000000000000000040000000000000f03f00000000000000000000000000000000000000000000f03f01d30700000100000004000000000000000000000000000000000000000000000000000040000000000000f03f000000000000000000000000000000400000000000000000000000000000f03f0000000000000040000000000000000000000000000000000000000000000040', false, true],
            ['MULTIPOLYGON ZM (((0 0 1 2, 2 0 1 2, 0 2 1 2, 0 0 1 2)), ((0 0 1 2, 1 0 1 2, 0 1 1 2, 0 0 1 2)))', '01be0b00000200000001bb0b0000010000000400000000000000000000000000000000000000000000000000f03f000000000000004000000000000000400000000000000000000000000000f03f000000000000004000000000000000000000000000000040000000000000f03f000000000000004000000000000000000000000000000000000000000000f03f000000000000004001bb0b0000010000000400000000000000000000000000000000000000000000000000f03f0000000000000040000000000000f03f0000000000000000000000000000f03f00000000000000400000000000000000000000000000f03f000000000000f03f000000000000004000000000000000000000000000000000000000000000f03f0000000000000040', true, true],

            // MultiPolygon EMPTY
            ['MULTIPOLYGON EMPTY', '010600000000000000', false, false],
            ['MULTIPOLYGON Z EMPTY', '01ee03000000000000', true, false],
            ['MULTIPOLYGON M EMPTY', '01d607000000000000', false, true],
            ['MULTIPOLYGON ZM EMPTY', '01be0b000000000000', true, true],

            // GeometryCollection
            ['GEOMETRYCOLLECTION (POINT (1 2), LINESTRING (2 3, 3 4))', '0107000000020000000101000000000000000000f03f00000000000000400102000000020000000000000000000040000000000000084000000000000008400000000000001040', false, false],
            ['GEOMETRYCOLLECTION Z (POINT Z (1 2 3), LINESTRING Z (2 3 4, 3 4 5))', '01ef0300000200000001e9030000000000000000f03f0000000000000040000000000000084001ea03000002000000000000000000004000000000000008400000000000001040000000000000084000000000000010400000000000001440', true, false],
            ['GEOMETRYCOLLECTION M (POINT M (1 2 4), LINESTRING M (2 3 5, 3 4 6))', '01d70700000200000001d1070000000000000000f03f0000000000000040000000000000104001d207000002000000000000000000004000000000000008400000000000001440000000000000084000000000000010400000000000001840', false, true],
            ['GEOMETRYCOLLECTION ZM (POINT ZM (1 2 3 4), LINESTRING ZM (2 3 4 5, 3 4 5 6))', '01bf0b00000200000001b90b0000000000000000f03f00000000000000400000000000000840000000000000104001ba0b00000200000000000000000000400000000000000840000000000000104000000000000014400000000000000840000000000000104000000000000014400000000000001840', true, true],

            // GeometryCollection EMPTY
            ['GEOMETRYCOLLECTION EMPTY', '010700000000000000', false, false],
            ['GEOMETRYCOLLECTION Z EMPTY', '01ef03000000000000', true, false],
            ['GEOMETRYCOLLECTION M EMPTY', '01d707000000000000', false, true],
            ['GEOMETRYCOLLECTION ZM EMPTY', '01bf0b000000000000', true, true],

            // PolyhedralSurface
            ['POLYHEDRALSURFACE (((0 0, 0 1, 1 1, 1 0, 0 0)), ((0 1, 1 1, 2 1, 2 2, 0 1)))', '010f0000000200000001030000000100000005000000000000000000000000000000000000000000000000000000000000000000f03f000000000000f03f000000000000f03f000000000000f03f000000000000000000000000000000000000000000000000010300000001000000050000000000000000000000000000000000f03f000000000000f03f000000000000f03f0000000000000040000000000000f03f000000000000004000000000000000400000000000000000000000000000f03f', false, false],
            ['POLYHEDRALSURFACE Z (((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)), ((0 0 0, 0 1 0, 0 1 1, 0 0 1, 0 0 0)))', '01f70300000200000001eb03000001000000050000000000000000000000000000000000000000000000000000000000000000000000000000000000f03f0000000000000000000000000000f03f000000000000f03f0000000000000000000000000000f03f0000000000000000000000000000000000000000000000000000000000000000000000000000000001eb03000001000000050000000000000000000000000000000000000000000000000000000000000000000000000000000000f03f00000000000000000000000000000000000000000000f03f000000000000f03f00000000000000000000000000000000000000000000f03f000000000000000000000000000000000000000000000000', true, false],
            ['POLYHEDRALSURFACE M (((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)), ((0 0 0, 0 1 0, 0 1 1, 0 0 1, 0 0 0)))', '01df0700000200000001d307000001000000050000000000000000000000000000000000000000000000000000000000000000000000000000000000f03f0000000000000000000000000000f03f000000000000f03f0000000000000000000000000000f03f0000000000000000000000000000000000000000000000000000000000000000000000000000000001d307000001000000050000000000000000000000000000000000000000000000000000000000000000000000000000000000f03f00000000000000000000000000000000000000000000f03f000000000000f03f00000000000000000000000000000000000000000000f03f000000000000000000000000000000000000000000000000', false, true],
            ['POLYHEDRALSURFACE ZM (((0 0 0 2, 0 1 0 2, 1 1 0 2, 1 0 0 2, 0 0 0 2)), ((0 0 0 3, 0 1 0 3, 0 1 1 3, 0 0 1 3, 0 0 0 3)))', '01c70b00000200000001bb0b0000010000000500000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000f03f00000000000000000000000000000040000000000000f03f000000000000f03f00000000000000000000000000000040000000000000f03f000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004001bb0b0000010000000500000000000000000000000000000000000000000000000000000000000000000008400000000000000000000000000000f03f000000000000000000000000000008400000000000000000000000000000f03f000000000000f03f000000000000084000000000000000000000000000000000000000000000f03f00000000000008400000000000000000000000000000000000000000000000000000000000000840', true, true],

            // PolyhedralSurface EMPTY
            ['POLYHEDRALSURFACE EMPTY', '010f00000000000000', false, false],
            ['POLYHEDRALSURFACE Z EMPTY', '01f703000000000000', false, false],
            ['POLYHEDRALSURFACE M EMPTY', '01df07000000000000', false, false],
            ['POLYHEDRALSURFACE ZM EMPTY', '01c70b000000000000', false, false],

            // TIN
            ['TIN (((0 0, 0 1, 1 0, 0 0)), ((0 1, 1 1, 1 0, 0 1)))', '01100000000200000001110000000100000004000000000000000000000000000000000000000000000000000000000000000000f03f000000000000f03f000000000000000000000000000000000000000000000000011100000001000000040000000000000000000000000000000000f03f000000000000f03f000000000000f03f000000000000f03f00000000000000000000000000000000000000000000f03f', false, false],
            ['TIN Z (((0 0 0, 0 0 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 0 0 0)))', '01f80300000200000001f9030000010000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f03f0000000000000000000000000000f03f000000000000000000000000000000000000000000000000000000000000000001f903000001000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000f03f0000000000000000000000000000f03f000000000000f03f0000000000000000000000000000000000000000000000000000000000000000', true, false],
            ['TIN M (((0 0 0, 0 0 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 0 0 0)))', '01e00700000200000001e1070000010000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f03f0000000000000000000000000000f03f000000000000000000000000000000000000000000000000000000000000000001e107000001000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000f03f0000000000000000000000000000f03f000000000000f03f0000000000000000000000000000000000000000000000000000000000000000', false, true],
            ['TIN ZM (((0 0 0 2, 0 0 1 2, 0 1 0 2, 0 0 0 2)), ((0 0 0 3, 0 1 0 3, 1 1 0 3, 0 0 0 3)))', '01c80b00000200000001c90b00000100000004000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000f03f00000000000000400000000000000000000000000000f03f00000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004001c90b0000010000000400000000000000000000000000000000000000000000000000000000000000000008400000000000000000000000000000f03f00000000000000000000000000000840000000000000f03f000000000000f03f000000000000000000000000000008400000000000000000000000000000000000000000000000000000000000000840', true, true],

            // TIN EMPTY
            ['TIN EMPTY', '011000000000000000', false, false],
            ['TIN Z EMPTY', '01f803000000000000', true, false],
            ['TIN M EMPTY', '01e007000000000000', false, true],
            ['TIN ZM EMPTY', '01c80b000000000000', true, true],
        ];
    }
}
